From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Dmitry Belyavskiy To: git-commits@fedoraproject.org Subject: [rpms/openssh] rawhide: Rebase to OpenSSH 10.4p1 Date: Thu, 09 Jul 2026 09:41:04 GMT Message-ID: <178359006448.1.16876012394490289070.rpms-openssh-c8d70d4d0462@fedoraproject.org> List-ID: X-Git-Repo: rpms/openssh X-Git-Branch: rawhide X-Git-Rev: c8d70d4d0462692a24ba1f5600aa66fdf2021ef4 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvb3BlbnNzaApCcmFu Y2ggOiByYXdoaWRlCkNvbW1pdCA6IGM4ZDcwZDRkMDQ2MjY5MmEyNGJhMWY1NjAwYWE2NmZkZjIw MjFlZjQKQXV0aG9yIDogRG1pdHJ5IEJlbHlhdnNraXkgPGRiZWx5YXZzQHJlZGhhdC5jb20+CkRh dGUgICA6IDIwMjYtMDctMDlUMTE6NDA6NDIrMDI6MDAKU3RhdHMgIDogKzkxOTgvLTkzNDQgaW4g NzQgZmlsZShzKQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL29w ZW5zc2gvYy9jOGQ3MGQ0ZDA0NjI2OTJhMjRiYTFmNTYwMGFhNjZmZGYyMDIxZWY0P2JyYW5jaD1y YXdoaWRlCgpMb2c6ClJlYmFzZSB0byBPcGVuU1NIIDEwLjRwMQoKLS0tCmRpZmYgLS1naXQgYS8u Z2l0aWdub3JlIGIvLmdpdGlnbm9yZQppbmRleCAyYTJhMjA3Li4zNmQ3YWRjIDEwMDY0NAotLS0g YS8uZ2l0aWdub3JlCisrKyBiLy5naXRpZ25vcmUKQEAgLTcwLDMgKzcwLDUgQEAgcGFtX3NzaF9h Z2VudF9hdXRoLTAuOS4yLnRhci5iejIKIC9vcGVuc3NoLTEwLjJwMS50YXIuZ3ouYXNjCiAvb3Bl bnNzaC0xMC4zcDEudGFyLmd6CiAvb3BlbnNzaC0xMC4zcDEudGFyLmd6LmFzYworL29wZW5zc2gt MTAuNHAxLnRhci5negorL29wZW5zc2gtMTAuNHAxLnRhci5nei5hc2MKCmRpZmYgLS1naXQgYS8w MDAxLUFkZC1TRUxpbnV4LXJvbGUtYW5kLU1MUy1NdWx0aS1MZXZlbC1TZWN1cml0eS1zdXBwb3Iu cGF0Y2ggYi8wMDAxLUFkZC1TRUxpbnV4LXJvbGUtYW5kLU1MUy1NdWx0aS1MZXZlbC1TZWN1cml0 eS1zdXBwb3IucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiNjRlZGIuLjAw MDAwMDAKLS0tIGEvMDAwMS1BZGQtU0VMaW51eC1yb2xlLWFuZC1NTFMtTXVsdGktTGV2ZWwtU2Vj dXJpdHktc3VwcG9yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDE2ICswLDAgQEAKLUZyb20g Y2RiMjFlNTQ1ZmZkZTliMjM3ZmE5YWI3YmU4ZTMyYjc4ZmZjMDBiYiBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKLUZyb206IERtaXRyeSBCZWx5YXZza2l5IDxiZWxkbWl0QGdtYWlsLmNvbT4KLURh dGU6IE1vbiwgMTMgQXByIDIwMjYgMTQ6MDY6MzIgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAwMS81 NF0gQWRkIFNFTGludXggcm9sZSBhbmQgTUxTIChNdWx0aS1MZXZlbCBTZWN1cml0eSkgc3VwcG9y dAotCi1vcGVuc3NoLTcuOHAxLXJvbGUtbWxzCi0KLUFkZCBzdXBwb3J0IGZvciBTRUxpbnV4IHJv bGUtYmFzZWQgYWNjZXNzIGNvbnRyb2wgYW5kIE11bHRpLUxldmVsCi1TZWN1cml0eSAoTUxTKSBi eSBhbGxvd2luZyB1c2VycyB0byBzcGVjaWZ5IHRoZWlyIHJvbGUgYXMgcGFydCBvZiB0aGUKLXVz ZXJuYW1lIGluIHRoZSBmb3JtYXQgdXNlci9yb2xlLgotCi1DaGFuZ2VzOgotLSBhdXRoLmg6IEFk ZCByb2xlIGZpZWxkIHRvIEF1dGhjdHh0IHN0cnVjdHVyZQotLSBhdXRoMi5jOiBQYXJzZSByb2xl IGZyb20gdXNlcm5hbWUgYW5kIGluZm9ybSBtb25pdG9yIHByb2Nlc3MKLS0gYXV0aDItZ3NzLmM6 IEluY2x1ZGUgcm9sZSBpbiBHU1NBUEkgTUlDIGF1dGhlbnRpY2F0aW9uCi0tIGF1dGgyLWhvc3Ri YXNlZC5jOiBJbmNsdWRlIHJvbGUgaW4gaG9zdGJhc2VkIGF1dGhlbnRpY2F0aW9uIHNpZ25hdHVy ZQotLSBhdXRoMi1wdWJrZXkuYzogSW5jbHVkZSByb2xlIGluIHB1YmtleSBhdXRoZW50aWNhdGlv biB1c2Vyc3R5bGUKLS0gbW9uaXRvci5jOiBBZGQgbW1fYW5zd2VyX2F1dGhyb2xlKCkgYW5kIGhh bmRsZSByb2xlIGluIGF1dGhlbnRpY2F0aW9uCi0gIGJsb2IgdmFsaWRhdGlvbgotLSBtb25pdG9y X3dyYXAuYzogQWRkIG1tX2luZm9ybV9hdXRocm9sZSgpIGZvciBwcml2aWxlZ2Ugc2VwYXJhdGlv bgotLSBtaXNjLmM6IFVwZGF0ZSBjb2xvbigpIHRvIGhhbmRsZSAvcm9sZSBzeW50YXggaW4gZmls ZSBwYXRocwotCi1Dby1BdXRob3JlZC1CeTogQ2xhdWRlIFNvbm5ldCA0LjUgPG5vcmVwbHlAYW50 aHJvcGljLmNvbT4KLS0tLQotIGF1dGguaCAgICAgICAgICAgIHwgIDMgKysrCi0gYXV0aDItZ3Nz LmMgICAgICAgfCAxMSArKysrKysrKysrLQotIGF1dGgyLWhvc3RiYXNlZC5jIHwgIDkgKysrKysr KysrCi0gYXV0aDItcHVia2V5LmMgICAgfCAxOSArKysrKysrKysrKysrKystLS0tCi0gYXV0aDIu YyAgICAgICAgICAgfCAxNCArKysrKysrKysrKysrKwotIG1pc2MuYyAgICAgICAgICAgIHwgMTgg KysrKysrKysrKysrKysrKystCi0gbW9uaXRvci5jICAgICAgICAgfCAzNyArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tCi0gbW9uaXRvci5oICAgICAgICAgfCAgNCArKysrCi0g bW9uaXRvcl93cmFwLmMgICAgfCAyMSArKysrKysrKysrKysrKysrKysrKysKLSBtb25pdG9yX3dy YXAuaCAgICB8ICAzICsrKwotIDEwIGZpbGVzIGNoYW5nZWQsIDEzMSBpbnNlcnRpb25zKCspLCA4 IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYXV0aC5oIGIvYXV0aC5oCi1pbmRleCA2MzRh ODRhYTguLjMyZWUzY2JmNCAxMDA2NDQKLS0tLSBhL2F1dGguaAotKysrIGIvYXV0aC5oCi1AQCAt NjUsNiArNjUsOSBAQCBzdHJ1Y3QgQXV0aGN0eHQgewotIAljaGFyCQkqc2VydmljZTsKLSAJc3Ry dWN0IHBhc3N3ZAkqcHc7CQkvKiBzZXQgaWYgJ3ZhbGlkJyAqLwotIAljaGFyCQkqc3R5bGU7Ci0r I2lmZGVmIFdJVEhfU0VMSU5VWAotKwljaGFyCQkqcm9sZTsKLSsjZW5kaWYKLSAKLSAJLyogTWV0 aG9kIGxpc3RzIGZvciBtdWx0aXBsZSBhdXRoZW50aWNhdGlvbiAqLwotIAljaGFyCQkqKmF1dGhf bWV0aG9kczsJLyogbW9kaWZpZWQgZnJvbSBzZXJ2ZXIgY29uZmlnICovCi1kaWZmIC0tZ2l0IGEv YXV0aDItZ3NzLmMgYi9hdXRoMi1nc3MuYwotaW5kZXggMDUzNTQ4NTI3Li5iMzgwZGMxMTcgMTAw NjQ0Ci0tLS0gYS9hdXRoMi1nc3MuYwotKysrIGIvYXV0aDItZ3NzLmMKLUBAIC0yODQsNiArMjg0 LDcgQEAgaW5wdXRfZ3NzYXBpX21pYyhpbnQgdHlwZSwgdWludDMyX3QgcGxlbiwgc3RydWN0IHNz aCAqc3NoKQotIAlBdXRoY3R4dCAqYXV0aGN0eHQgPSBzc2gtPmF1dGhjdHh0OwotIAlHc3NjdHh0 ICpnc3NjdHh0OwotIAlpbnQgciwgYXV0aGVudGljYXRlZCA9IDA7Ci0rCWNoYXIgKm1pY3VzZXI7 Ci0gCXN0cnVjdCBzc2hidWYgKmI7Ci0gCWdzc19idWZmZXJfZGVzYyBtaWMsIGdzc2J1ZjsKLSAJ dV9jaGFyICpwOwotQEAgLTMwMCw3ICszMDEsMTMgQEAgaW5wdXRfZ3NzYXBpX21pYyhpbnQgdHlw ZSwgdWludDMyX3QgcGxlbiwgc3RydWN0IHNzaCAqc3NoKQotIAkJZmF0YWxfZigic3NoYnVmX25l dyBmYWlsZWQiKTsKLSAJbWljLnZhbHVlID0gcDsKLSAJbWljLmxlbmd0aCA9IGxlbjsKLS0Jc3No X2dzc2FwaV9idWlsZG1pYyhiLCBhdXRoY3R4dC0+dXNlciwgYXV0aGN0eHQtPnNlcnZpY2UsCi0r I2lmZGVmIFdJVEhfU0VMSU5VWAotKwlpZiAoYXV0aGN0eHQtPnJvbGUgJiYgYXV0aGN0eHQtPnJv bGVbMF0gIT0gMCkKLSsJCXhhc3ByaW50ZigmbWljdXNlciwgIiVzLyVzIiwgYXV0aGN0eHQtPnVz ZXIsIGF1dGhjdHh0LT5yb2xlKTsKLSsJZWxzZQotKyNlbmRpZgotKwkJbWljdXNlciA9IGF1dGhj dHh0LT51c2VyOwotKwlzc2hfZ3NzYXBpX2J1aWxkbWljKGIsIG1pY3VzZXIsIGF1dGhjdHh0LT5z ZXJ2aWNlLAotIAkgICAgImdzc2FwaS13aXRoLW1pYyIsIHNzaC0+a2V4LT5zZXNzaW9uX2lkKTsK LSAKLSAJaWYgKChnc3NidWYudmFsdWUgPSBzc2hidWZfbXV0YWJsZV9wdHIoYikpID09IE5VTEwp Ci1AQCAtMzEzLDYgKzMyMCw4IEBAIGlucHV0X2dzc2FwaV9taWMoaW50IHR5cGUsIHVpbnQzMl90 IHBsZW4sIHN0cnVjdCBzc2ggKnNzaCkKLSAJCWxvZ2l0KCJHU1NBUEkgTUlDIGNoZWNrIGZhaWxl ZCIpOwotIAotIAlzc2hidWZfZnJlZShiKTsKLSsJaWYgKG1pY3VzZXIgIT0gYXV0aGN0eHQtPnVz ZXIpCi0rCQlmcmVlKG1pY3VzZXIpOwotIAlmcmVlKG1pYy52YWx1ZSk7Ci0gCi0gCWF1dGhjdHh0 LT5wb3N0cG9uZWQgPSAwOwotZGlmZiAtLWdpdCBhL2F1dGgyLWhvc3RiYXNlZC5jIGIvYXV0aDIt aG9zdGJhc2VkLmMKLWluZGV4IDhhMWFjZGVjMy4uYTI4NzA5MWVjIDEwMDY0NAotLS0tIGEvYXV0 aDItaG9zdGJhc2VkLmMKLSsrKyBiL2F1dGgyLWhvc3RiYXNlZC5jCi1AQCAtMTMwLDcgKzEzMCwx NiBAQCB1c2VyYXV0aF9ob3N0YmFzZWQoc3RydWN0IHNzaCAqc3NoLCBjb25zdCBjaGFyICptZXRo b2QpCi0gCS8qIHJlY29uc3RydWN0IHBhY2tldCAqLwotIAlpZiAoKHIgPSBzc2hidWZfcHV0X3N0 cmluZ2IoYiwgc3NoLT5rZXgtPnNlc3Npb25faWQpKSAhPSAwIHx8Ci0gCSAgICAociA9IHNzaGJ1 Zl9wdXRfdTgoYiwgU1NIMl9NU0dfVVNFUkFVVEhfUkVRVUVTVCkpICE9IDAgfHwKLSsjaWZkZWYg V0lUSF9TRUxJTlVYCi0rCSAgICAoYXV0aGN0eHQtPnJvbGUKLSsJICAgID8gKCAociA9IHNzaGJ1 Zl9wdXRfdTMyKGIsIHN0cmxlbihhdXRoY3R4dC0+dXNlcikrc3RybGVuKGF1dGhjdHh0LT5yb2xl KSsxKSkgIT0gMCB8fAotKwkgICAgICAgIChyID0gc3NoYnVmX3B1dChiLCBhdXRoY3R4dC0+dXNl ciwgc3RybGVuKGF1dGhjdHh0LT51c2VyKSkpICE9IDAgfHwKLSsJICAgICAgICAociA9IHNzaGJ1 Zl9wdXRfdTgoYiwgJy8nKSAhPSAwKSB8fAotKwkgICAgICAgIChyID0gc3NoYnVmX3B1dChiLCBh dXRoY3R4dC0+cm9sZSwgc3RybGVuKGF1dGhjdHh0LT5yb2xlKSkpICE9IDApCi0rCSAgICA6IChy ID0gc3NoYnVmX3B1dF9jc3RyaW5nKGIsIGF1dGhjdHh0LT51c2VyKSkgIT0gMCkgfHwKLSsjZWxz ZQotIAkgICAgKHIgPSBzc2hidWZfcHV0X2NzdHJpbmcoYiwgYXV0aGN0eHQtPnVzZXIpKSAhPSAw IHx8Ci0rI2VuZGlmCi0gCSAgICAociA9IHNzaGJ1Zl9wdXRfY3N0cmluZyhiLCBhdXRoY3R4dC0+ c2VydmljZSkpICE9IDAgfHwKLSAJICAgIChyID0gc3NoYnVmX3B1dF9jc3RyaW5nKGIsIG1ldGhv ZCkpICE9IDAgfHwKLSAJICAgIChyID0gc3NoYnVmX3B1dF9zdHJpbmcoYiwgcGthbGcsIGFsZW4p KSAhPSAwIHx8Ci1kaWZmIC0tZ2l0IGEvYXV0aDItcHVia2V5LmMgYi9hdXRoMi1wdWJrZXkuYwot aW5kZXggZTQ0NmVmNDEyLi4zMTllNDJiMmIgMTAwNjQ0Ci0tLS0gYS9hdXRoMi1wdWJrZXkuYwot KysrIGIvYXV0aDItcHVia2V5LmMKLUBAIC03MSw2ICs3MSw4IEBACi0gCi0gLyogaW1wb3J0ICov Ci0gZXh0ZXJuIFNlcnZlck9wdGlvbnMgb3B0aW9uczsKLStleHRlcm4gaW50IGluZXRkX2ZsYWc7 Ci0rZXh0ZXJuIEF1dGhjdHh0ICp0aGVfYXV0aGN0eHQ7Ci0gZXh0ZXJuIHN0cnVjdCBhdXRobWV0 aG9kX2NmZyBtZXRob2RjZmdfcHVia2V5OwotIAotIHN0YXRpYyBjaGFyICoKLUBAIC0yMDEsOSAr MjAzLDE2IEBAIHVzZXJhdXRoX3B1YmtleShzdHJ1Y3Qgc3NoICpzc2gsIGNvbnN0IGNoYXIgKm1l dGhvZCkKLSAJCQlnb3RvIGRvbmU7Ci0gCQl9Ci0gCQkvKiByZWNvbnN0cnVjdCBwYWNrZXQgKi8K LS0JCXhhc3ByaW50ZigmdXNlcnN0eWxlLCAiJXMlcyVzIiwgYXV0aGN0eHQtPnVzZXIsCi0rCQl4 YXNwcmludGYoJnVzZXJzdHlsZSwgIiVzJXMlcyVzJXMiLCBhdXRoY3R4dC0+dXNlciwKLSAJCSAg ICBhdXRoY3R4dC0+c3R5bGUgPyAiOiIgOiAiIiwKLS0JCSAgICBhdXRoY3R4dC0+c3R5bGUgPyBh dXRoY3R4dC0+c3R5bGUgOiAiIik7Ci0rCQkgICAgYXV0aGN0eHQtPnN0eWxlID8gYXV0aGN0eHQt PnN0eWxlIDogIiIsCi0rI2lmZGVmIFdJVEhfU0VMSU5VWAotKwkJICAgIGF1dGhjdHh0LT5yb2xl ID8gIi8iIDogIiIsCi0rCQkgICAgYXV0aGN0eHQtPnJvbGUgPyBhdXRoY3R4dC0+cm9sZSA6ICIi Ci0rI2Vsc2UKLSsJCSAgICAiIiwgIiIKLSsjZW5kaWYKLSsJCSAgICApOwotIAkJaWYgKChyID0g c3NoYnVmX3B1dF91OChiLCBTU0gyX01TR19VU0VSQVVUSF9SRVFVRVNUKSkgIT0gMCB8fAotIAkJ ICAgIChyID0gc3NoYnVmX3B1dF9jc3RyaW5nKGIsIHVzZXJzdHlsZSkpICE9IDAgfHwKLSAJCSAg ICAociA9IHNzaGJ1Zl9wdXRfY3N0cmluZyhiLCBhdXRoY3R4dC0+c2VydmljZSkpICE9IDAgfHwK LUBAIC00NzMsNyArNDgyLDggQEAgbWF0Y2hfcHJpbmNpcGFsc19jb21tYW5kKHN0cnVjdCBwYXNz d2QgKnVzZXJfcHcsIGNvbnN0IHN0cnVjdCBzc2hrZXkgKmtleSwKLSAJaWYgKChwaWQgPSBzdWJw cm9jZXNzKCJBdXRob3JpemVkUHJpbmNpcGFsc0NvbW1hbmQiLCBjb21tYW5kLAotIAkgICAgYWMs IGF2LCAmZiwKLSAJICAgIFNTSF9TVUJQUk9DRVNTX1NURE9VVF9DQVBUVVJFfFNTSF9TVUJQUk9D RVNTX1NUREVSUl9ESVNDQVJELAotLQkgICAgcnVuYXNfcHcsIHRlbXBvcmFyaWx5X3VzZV91aWQs IHJlc3RvcmVfdWlkKSkgPT0gMCkKLSsJICAgIHJ1bmFzX3B3LCB0ZW1wb3JhcmlseV91c2VfdWlk LCByZXN0b3JlX3VpZCwKLSsJICAgIGluZXRkX2ZsYWcsIHRoZV9hdXRoY3R4dCkpID09IDApCi0g CQlnb3RvIG91dDsKLSAKLSAJdWlkX3N3YXBwZWQgPSAxOwotQEAgLTc0OSw3ICs3NTksOCBAQCB1 c2VyX2tleV9jb21tYW5kX2FsbG93ZWQyKHN0cnVjdCBwYXNzd2QgKnVzZXJfcHcsIHN0cnVjdCBz c2hrZXkgKmtleSwKLSAJaWYgKChwaWQgPSBzdWJwcm9jZXNzKCJBdXRob3JpemVkS2V5c0NvbW1h bmQiLCBjb21tYW5kLAotIAkgICAgYWMsIGF2LCAmZiwKLSAJICAgIFNTSF9TVUJQUk9DRVNTX1NU RE9VVF9DQVBUVVJFfFNTSF9TVUJQUk9DRVNTX1NUREVSUl9ESVNDQVJELAotLQkgICAgcnVuYXNf cHcsIHRlbXBvcmFyaWx5X3VzZV91aWQsIHJlc3RvcmVfdWlkKSkgPT0gMCkKLSsJICAgIHJ1bmFz X3B3LCB0ZW1wb3JhcmlseV91c2VfdWlkLCByZXN0b3JlX3VpZCwKLSsJICAgIGluZXRkX2ZsYWcs IHRoZV9hdXRoY3R4dCkpID09IDApCi0gCQlnb3RvIG91dDsKLSAKLSAJdWlkX3N3YXBwZWQgPSAx OwotZGlmZiAtLWdpdCBhL2F1dGgyLmMgYi9hdXRoMi5jCi1pbmRleCAzYTE2ODI3NDYuLmJmZDQy NWVhYiAxMDA2NDQKLS0tLSBhL2F1dGgyLmMKLSsrKyBiL2F1dGgyLmMKLUBAIC0yNzEsNiArMjcx LDkgQEAgaW5wdXRfdXNlcmF1dGhfcmVxdWVzdChpbnQgdHlwZSwgdWludDMyX3Qgc2VxLCBzdHJ1 Y3Qgc3NoICpzc2gpCi0gCUF1dGhjdHh0ICphdXRoY3R4dCA9IHNzaC0+YXV0aGN0eHQ7Ci0gCUF1 dGhtZXRob2QgKm0gPSBOVUxMOwotIAljaGFyICp1c2VyID0gTlVMTCwgKnNlcnZpY2UgPSBOVUxM LCAqbWV0aG9kID0gTlVMTCwgKnN0eWxlID0gTlVMTDsKLSsjaWZkZWYgV0lUSF9TRUxJTlVYCi0r CWNoYXIgKnJvbGUgPSBOVUxMOwotKyNlbmRpZgotIAlpbnQgciwgYXV0aGVudGljYXRlZCA9IDA7 Ci0gCWRvdWJsZSB0c3RhcnQgPSBtb25vdGltZV9kb3VibGUoKTsKLSAKLUBAIC0yODQsNiArMjg3 LDExIEBAIGlucHV0X3VzZXJhdXRoX3JlcXVlc3QoaW50IHR5cGUsIHVpbnQzMl90IHNlcSwgc3Ry dWN0IHNzaCAqc3NoKQotIAlkZWJ1ZygidXNlcmF1dGgtcmVxdWVzdCBmb3IgdXNlciAlcyBzZXJ2 aWNlICVzIG1ldGhvZCAlcyIsIHVzZXIsIHNlcnZpY2UsIG1ldGhvZCk7Ci0gCWRlYnVnKCJhdHRl bXB0ICVkIGZhaWx1cmVzICVkIiwgYXV0aGN0eHQtPmF0dGVtcHQsIGF1dGhjdHh0LT5mYWlsdXJl cyk7Ci0gCi0rI2lmZGVmIFdJVEhfU0VMSU5VWAotKwlpZiAoKHJvbGUgPSBzdHJjaHIodXNlciwg Jy8nKSkgIT0gTlVMTCkKLSsJCSpyb2xlKysgPSAwOwotKyNlbmRpZgotKwotIAlpZiAoKHN0eWxl ID0gc3RyY2hyKHVzZXIsICc6JykpICE9IE5VTEwpCi0gCQkqc3R5bGUrKyA9IDA7Ci0gCi1AQCAt Mjk1LDYgKzMwMyw5IEBAIGlucHV0X3VzZXJhdXRoX3JlcXVlc3QoaW50IHR5cGUsIHVpbnQzMl90 IHNlcSwgc3RydWN0IHNzaCAqc3NoKQotIAkJYXV0aGN0eHQtPnVzZXIgPSB4c3RyZHVwKHVzZXIp OwotIAkJYXV0aGN0eHQtPnNlcnZpY2UgPSB4c3RyZHVwKHNlcnZpY2UpOwotIAkJYXV0aGN0eHQt PnN0eWxlID0gc3R5bGUgPyB4c3RyZHVwKHN0eWxlKSA6IE5VTEw7Ci0rI2lmZGVmIFdJVEhfU0VM SU5VWAotKwkJYXV0aGN0eHQtPnJvbGUgPSByb2xlID8geHN0cmR1cChyb2xlKSA6IE5VTEw7Ci0r I2VuZGlmCi0gCQlpZiAoYXV0aGN0eHQtPnB3ICYmIHN0cmNtcChzZXJ2aWNlLCAic3NoLWNvbm5l Y3Rpb24iKT09MCkgewotIAkJCWF1dGhjdHh0LT52YWxpZCA9IDE7Ci0gCQkJZGVidWcyX2YoInNl dHRpbmcgdXAgYXV0aGN0eHQgZm9yICVzIiwgdXNlcik7Ci1AQCAtMzE0LDYgKzMyNSw5IEBAIGlu cHV0X3VzZXJhdXRoX3JlcXVlc3QoaW50IHR5cGUsIHVpbnQzMl90IHNlcSwgc3RydWN0IHNzaCAq c3NoKQotIAkJICAgIGF1dGhjdHh0LT52YWxpZCA/ICJhdXRoZW50aWNhdGluZyAiIDogImludmFs aWQgIiwgdXNlcik7Ci0gCQlzZXRwcm9jdGl0bGUoIiVzIFtuZXRdIiwgYXV0aGN0eHQtPnZhbGlk ID8gdXNlciA6ICJ1bmtub3duIik7Ci0gCQltbV9pbmZvcm1fYXV0aHNlcnYoc2VydmljZSwgc3R5 bGUpOwotKyNpZmRlZiBXSVRIX1NFTElOVVgKLSsgICAgICAgICAJbW1faW5mb3JtX2F1dGhyb2xl KHJvbGUpOwotKyNlbmRpZgotIAkJdXNlcmF1dGhfYmFubmVyKHNzaCk7Ci0gCQlpZiAoKHIgPSBr ZXhfc2VydmVyX3VwZGF0ZV9leHRfaW5mbyhzc2gpKSAhPSAwKQotIAkJCWZhdGFsX2ZyKHIsICJr ZXhfc2VydmVyX3VwZGF0ZV9leHRfaW5mbyBmYWlsZWQiKTsKLWRpZmYgLS1naXQgYS9taXNjLmMg Yi9taXNjLmMKLWluZGV4IGVkM2U5ZDMxNC4uZTk2ZmE4ZDYxIDEwMDY0NAotLS0tIGEvbWlzYy5j Ci0rKysgYi9taXNjLmMKLUBAIC04NjksNiArODY5LDcgQEAgY2hhciAqCi0gY29sb24oY2hhciAq Y3ApCi0gewotIAlpbnQgZmxhZyA9IDA7Ci0rCWludCBzdGFydCA9IDE7Ci0gCi0gCWlmICgqY3Ag PT0gJzonKQkJLyogTGVhZGluZyBjb2xvbiBpcyBwYXJ0IG9mIGZpbGUgbmFtZS4gKi8KLSAJCXJl dHVybiBOVUxMOwotQEAgLTg4NCw2ICs4ODUsMTMgQEAgY29sb24oY2hhciAqY3ApCi0gCQkJcmV0 dXJuIChjcCk7Ci0gCQlpZiAoKmNwID09ICcvJykKLSAJCQlyZXR1cm4gTlVMTDsKLSsJCWlmIChz dGFydCkgewotKwkJLyogU2xhc2ggb24gYmVnaW5uaW5nIG9yIGFmdGVyIGRvdHMgb25seSBkZW5v dGVzIGZpbGUgbmFtZS4gKi8KLSsJCQlpZiAoKmNwID09ICcvJykKLSsJCQkJcmV0dXJuICgwKTsK LSsJCQlpZiAoKmNwICE9ICcuJykKLSsJCQkJc3RhcnQgPSAwOwotKwkJfQotIAl9Ci0gCXJldHVy biBOVUxMOwotIH0KLUBAIC0yODI4LDcgKzI4MzYsOCBAQCBzdGRmZF9kZXZudWxsKGludCBkb19z dGRpbiwgaW50IGRvX3N0ZG91dCwgaW50IGRvX3N0ZGVycikKLSBwaWRfdAotIHN1YnByb2Nlc3Mo Y29uc3QgY2hhciAqdGFnLCBjb25zdCBjaGFyICpjb21tYW5kLAotICAgICBpbnQgYWMsIGNoYXIg KiphdiwgRklMRSAqKmNoaWxkLCB1X2ludCBmbGFncywKLS0gICAgc3RydWN0IHBhc3N3ZCAqcHcs IHByaXZkcm9wX2ZuICpkcm9wX3ByaXZzLCBwcml2cmVzdG9yZV9mbiAqcmVzdG9yZV9wcml2cykK LSsgICAgc3RydWN0IHBhc3N3ZCAqcHcsIHByaXZkcm9wX2ZuICpkcm9wX3ByaXZzLAotKyAgICBw cml2cmVzdG9yZV9mbiAqcmVzdG9yZV9wcml2cywgaW50IGluZXRkLCB2b2lkICp0aGVfYXV0aGN0 eHQpCi0gewotIAlGSUxFICpmID0gTlVMTDsKLSAJc3RydWN0IHN0YXQgc3Q7Ci1AQCAtMjk2MSw2 ICsyOTcwLDEzIEBAIHN1YnByb2Nlc3MoY29uc3QgY2hhciAqdGFnLCBjb25zdCBjaGFyICpjb21t YW5kLAotIAkJCWVycm9yKCIlczogZHVwMjogJXMiLCB0YWcsIHN0cmVycm9yKGVycm5vKSk7Ci0g CQkJX2V4aXQoMSk7Ci0gCQl9Ci0rI2lmZGVmIFdJVEhfU0VMSU5VWAotKwkJaWYgKHNzaGRfc2Vs aW51eF9zZXR1cF9lbnZfdmFyaWFibGVzKGluZXRkLCB0aGVfYXV0aGN0eHQpIDwgMCkgewotKwkJ CWVycm9yICgiZmFpbGVkIHRvIGNvcHkgZW52aXJvbm1lbnQ6ICAlcyIsCi0rCQkJICAgIHN0cmVy cm9yKGVycm5vKSk7Ci0rCQkJX2V4aXQoMTI3KTsKLSsJCX0KLSsjZW5kaWYKLSAJCWlmIChlbnYg IT0gTlVMTCkKLSAJCQlleGVjdmUoYXZbMF0sIGF2LCBlbnYpOwotIAkJZWxzZQotZGlmZiAtLWdp dCBhL21vbml0b3IuYyBiL21vbml0b3IuYwotaW5kZXggOWQ2NjcyYmI2Li4xZTQxZGZhNTMgMTAw NjQ0Ci0tLS0gYS9tb25pdG9yLmMKLSsrKyBiL21vbml0b3IuYwotQEAgLTExMSw2ICsxMTEsOSBA QCBpbnQgbW1fYW5zd2VyX3NpZ24oc3RydWN0IHNzaCAqLCBpbnQsIHN0cnVjdCBzc2hidWYgKik7 Ci0gaW50IG1tX2Fuc3dlcl9wd25hbWFsbG93KHN0cnVjdCBzc2ggKiwgaW50LCBzdHJ1Y3Qgc3No YnVmICopOwotIGludCBtbV9hbnN3ZXJfYXV0aDJfcmVhZF9iYW5uZXIoc3RydWN0IHNzaCAqLCBp bnQsIHN0cnVjdCBzc2hidWYgKik7Ci0gaW50IG1tX2Fuc3dlcl9hdXRoc2VydihzdHJ1Y3Qgc3No ICosIGludCwgc3RydWN0IHNzaGJ1ZiAqKTsKLSsjaWZkZWYgV0lUSF9TRUxJTlVYCi0raW50IG1t X2Fuc3dlcl9hdXRocm9sZShzdHJ1Y3Qgc3NoICosIGludCwgc3RydWN0IHNzaGJ1ZiAqKTsKLSsj ZW5kaWYKLSBpbnQgbW1fYW5zd2VyX2F1dGhwYXNzd29yZChzdHJ1Y3Qgc3NoICosIGludCwgc3Ry dWN0IHNzaGJ1ZiAqKTsKLSBpbnQgbW1fYW5zd2VyX2JzZGF1dGhxdWVyeShzdHJ1Y3Qgc3NoICos IGludCwgc3RydWN0IHNzaGJ1ZiAqKTsKLSBpbnQgbW1fYW5zd2VyX2JzZGF1dGhyZXNwb25kKHN0 cnVjdCBzc2ggKiwgaW50LCBzdHJ1Y3Qgc3NoYnVmICopOwotQEAgLTE4OCw2ICsxOTEsOSBAQCBz dHJ1Y3QgbW9uX3RhYmxlIG1vbl9kaXNwYXRjaF9wcm90bzIwW10gPSB7Ci0gICAgIHtNT05JVE9S X1JFUV9TSUdOLCBNT05fT05DRSwgbW1fYW5zd2VyX3NpZ259LAotICAgICB7TU9OSVRPUl9SRVFf UFdOQU0sIE1PTl9PTkNFLCBtbV9hbnN3ZXJfcHduYW1hbGxvd30sCi0gICAgIHtNT05JVE9SX1JF UV9BVVRIU0VSViwgTU9OX09OQ0UsIG1tX2Fuc3dlcl9hdXRoc2Vydn0sCi0rI2lmZGVmIFdJVEhf U0VMSU5VWAotKyAgICB7TU9OSVRPUl9SRVFfQVVUSFJPTEUsIE1PTl9PTkNFLCBtbV9hbnN3ZXJf YXV0aHJvbGV9LAotKyNlbmRpZgotICAgICB7TU9OSVRPUl9SRVFfQVVUSDJfUkVBRF9CQU5ORVIs IE1PTl9PTkNFLCBtbV9hbnN3ZXJfYXV0aDJfcmVhZF9iYW5uZXJ9LAotICAgICB7TU9OSVRPUl9S RVFfQVVUSFBBU1NXT1JELCBNT05fQVVUSCwgbW1fYW5zd2VyX2F1dGhwYXNzd29yZH0sCi0gI2lm ZGVmIFVTRV9QQU0KLUBAIC05NDYsNiArOTUyLDkgQEAgbW1fYW5zd2VyX3B3bmFtYWxsb3coc3Ry dWN0IHNzaCAqc3NoLCBpbnQgc29jaywgc3RydWN0IHNzaGJ1ZiAqbSkKLSAKLSAJLyogQWxsb3cg c2VydmljZS9zdHlsZSBpbmZvcm1hdGlvbiBvbiB0aGUgYXV0aCBjb250ZXh0ICovCi0gCW1vbml0 b3JfcGVybWl0KG1vbl9kaXNwYXRjaCwgTU9OSVRPUl9SRVFfQVVUSFNFUlYsIDEpOwotKyNpZmRl ZiBXSVRIX1NFTElOVVgKLSsJbW9uaXRvcl9wZXJtaXQobW9uX2Rpc3BhdGNoLCBNT05JVE9SX1JF UV9BVVRIUk9MRSwgMSk7Ci0rI2VuZGlmCi0gCW1vbml0b3JfcGVybWl0KG1vbl9kaXNwYXRjaCwg TU9OSVRPUl9SRVFfQVVUSDJfUkVBRF9CQU5ORVIsIDEpOwotIAotICNpZmRlZiBVU0VfUEFNCi1A QCAtMTAyMCw2ICsxMDI5LDI2IEBAIGtleV9iYXNlX3R5cGVfbWF0Y2goY29uc3QgY2hhciAqbWV0 aG9kLCBjb25zdCBzdHJ1Y3Qgc3Noa2V5ICprZXksCi0gCXJldHVybiBmb3VuZDsKLSB9Ci0gCi0r I2lmZGVmIFdJVEhfU0VMSU5VWAotK2ludAotK21tX2Fuc3dlcl9hdXRocm9sZShzdHJ1Y3Qgc3No ICpzc2gsIGludCBzb2NrLCBzdHJ1Y3Qgc3NoYnVmICptKQotK3sKLSsJaW50IHI7Ci0rCW1vbml0 b3JfcGVybWl0X2F1dGhlbnRpY2F0aW9ucygxKTsKLSsKLSsJaWYgKChyID0gc3NoYnVmX2dldF9j c3RyaW5nKG0sICZhdXRoY3R4dC0+cm9sZSwgTlVMTCkpICE9IDApCi0rCQlmYXRhbF9mKCJidWZm ZXIgZXJyb3I6ICVzIiwgc3NoX2VycihyKSk7Ci0rCWRlYnVnM19mKCJyb2xlPSVzIiwgYXV0aGN0 eHQtPnJvbGUpOwotKwotKwlpZiAoc3RybGVuKGF1dGhjdHh0LT5yb2xlKSA9PSAwKSB7Ci0rCQlm cmVlKGF1dGhjdHh0LT5yb2xlKTsKLSsJCWF1dGhjdHh0LT5yb2xlID0gTlVMTDsKLSsJfQotKwot KwlyZXR1cm4gKDApOwotK30KLSsjZW5kaWYKLSsKLSBpbnQKLSBtbV9hbnN3ZXJfYXV0aHBhc3N3 b3JkKHN0cnVjdCBzc2ggKnNzaCwgaW50IHNvY2ssIHN0cnVjdCBzc2hidWYgKm0pCi0gewotQEAg LTEzOTIsNyArMTQyMSw3IEBAIG1vbml0b3JfdmFsaWRfdXNlcmJsb2Ioc3RydWN0IHNzaCAqc3No LCBjb25zdCB1X2NoYXIgKmRhdGEsIHVfaW50IGRhdGFsZW4pCi0gCXN0cnVjdCBzc2hidWYgKmI7 Ci0gCXN0cnVjdCBzc2hrZXkgKmhvc3RrZXkgPSBOVUxMOwotIAljb25zdCB1X2NoYXIgKnA7Ci0t CWNoYXIgKnVzZXJzdHlsZSwgKmNwOwotKwljaGFyICp1c2Vyc3R5bGUsICpzLCAqY3A7Ci0gCXNp emVfdCBsZW47Ci0gCXVfY2hhciB0eXBlOwotIAlpbnQgaG9zdGJvdW5kID0gMCwgciwgZmFpbCA9 IDA7Ci1AQCAtMTQyMyw2ICsxNDUyLDggQEAgbW9uaXRvcl92YWxpZF91c2VyYmxvYihzdHJ1Y3Qg c3NoICpzc2gsIGNvbnN0IHVfY2hhciAqZGF0YSwgdV9pbnQgZGF0YWxlbikKLSAJCWZhaWwrKzsK LSAJaWYgKChyID0gc3NoYnVmX2dldF9jc3RyaW5nKGIsICZjcCwgTlVMTCkpICE9IDApCi0gCQlm YXRhbF9mcihyLCAicGFyc2UgdXNlcnN0eWxlIik7Ci0rCWlmICgocyA9IHN0cmNocihjcCwgJy8n KSkgIT0gTlVMTCkKLSsJCSpzID0gJ1wwJzsKLSAJeGFzcHJpbnRmKCZ1c2Vyc3R5bGUsICIlcyVz JXMiLCBhdXRoY3R4dC0+dXNlciwKLSAJICAgIGF1dGhjdHh0LT5zdHlsZSA/ICI6IiA6ICIiLAot IAkgICAgYXV0aGN0eHQtPnN0eWxlID8gYXV0aGN0eHQtPnN0eWxlIDogIiIpOwotQEAgLTE0NzMs NyArMTUwNCw3IEBAIG1vbml0b3JfdmFsaWRfaG9zdGJhc2VkYmxvYihjb25zdCB1X2NoYXIgKmRh dGEsIHVfaW50IGRhdGFsZW4sCi0gewotIAlzdHJ1Y3Qgc3NoYnVmICpiOwotIAljb25zdCB1X2No YXIgKnA7Ci0tCWNoYXIgKmNwLCAqdXNlcnN0eWxlOwotKwljaGFyICpjcCwgKnMsICp1c2Vyc3R5 bGU7Ci0gCXNpemVfdCBsZW47Ci0gCWludCByLCBmYWlsID0gMDsKLSAJdV9jaGFyIHR5cGU7Ci1A QCAtMTQ5NCw2ICsxNTI1LDggQEAgbW9uaXRvcl92YWxpZF9ob3N0YmFzZWRibG9iKGNvbnN0IHVf Y2hhciAqZGF0YSwgdV9pbnQgZGF0YWxlbiwKLSAJCWZhaWwrKzsKLSAJaWYgKChyID0gc3NoYnVm X2dldF9jc3RyaW5nKGIsICZjcCwgTlVMTCkpICE9IDApCi0gCQlmYXRhbF9mcihyLCAicGFyc2Ug dXNlcnN0eWxlIik7Ci0rCWlmICgocyA9IHN0cmNocihjcCwgJy8nKSkgIT0gTlVMTCkKLSsJCSpz ID0gJ1wwJzsKLSAJeGFzcHJpbnRmKCZ1c2Vyc3R5bGUsICIlcyVzJXMiLCBhdXRoY3R4dC0+dXNl ciwKLSAJICAgIGF1dGhjdHh0LT5zdHlsZSA/ICI6IiA6ICIiLAotIAkgICAgYXV0aGN0eHQtPnN0 eWxlID8gYXV0aGN0eHQtPnN0eWxlIDogIiIpOwotZGlmZiAtLWdpdCBhL21vbml0b3IuaCBiL21v bml0b3IuaAotaW5kZXggZmUwYjAwYjJlLi4xYjQ2ZTc5NGUgMTAwNjQ0Ci0tLS0gYS9tb25pdG9y LmgKLSsrKyBiL21vbml0b3IuaAotQEAgLTU3LDYgKzU3LDEwIEBAIGVudW0gbW9uaXRvcl9yZXF0 eXBlIHsKLSAJTU9OSVRPUl9SRVFfVEVSTSA9IDUwLAotIAlNT05JVE9SX1JFUV9TVEFURSA9IDUx LCBNT05JVE9SX0FOU19TVEFURSA9IDUyLAotIAotKyNpZmRlZiBXSVRIX1NFTElOVVgKLSsJTU9O SVRPUl9SRVFfQVVUSFJPTEUgPSA4MCwKLSsjZW5kaWYKLSsKLSAJTU9OSVRPUl9SRVFfUEFNX1NU QVJUID0gMTAwLAotIAlNT05JVE9SX1JFUV9QQU1fQUNDT1VOVCA9IDEwMiwgTU9OSVRPUl9BTlNf UEFNX0FDQ09VTlQgPSAxMDMsCi0gCU1PTklUT1JfUkVRX1BBTV9JTklUX0NUWCA9IDEwNCwgTU9O SVRPUl9BTlNfUEFNX0lOSVRfQ1RYID0gMTA1LAotZGlmZiAtLWdpdCBhL21vbml0b3Jfd3JhcC5j IGIvbW9uaXRvcl93cmFwLmMKLWluZGV4IDgxNTk2YTRjYy4uZjNjMzQxYmM3IDEwMDY0NAotLS0t IGEvbW9uaXRvcl93cmFwLmMKLSsrKyBiL21vbml0b3Jfd3JhcC5jCi1AQCAtNDczLDYgKzQ3Mywy NyBAQCBtbV9pbmZvcm1fYXV0aHNlcnYoY2hhciAqc2VydmljZSwgY2hhciAqc3R5bGUpCi0gCXNz aGJ1Zl9mcmVlKG0pOwotIH0KLSAKLSsvKiBJbmZvcm0gdGhlIHByaXZpbGVnZWQgcHJvY2VzcyBh Ym91dCByb2xlICovCi0rCi0rI2lmZGVmIFdJVEhfU0VMSU5VWAotK3ZvaWQKLSttbV9pbmZvcm1f YXV0aHJvbGUoY2hhciAqcm9sZSkKLSt7Ci0rCWludCByOwotKwlzdHJ1Y3Qgc3NoYnVmICptOwot KwotKwlkZWJ1ZzNfZigiZW50ZXJpbmciKTsKLSsKLSsJaWYgKChtID0gc3NoYnVmX25ldygpKSA9 PSBOVUxMKQotKwkJZmF0YWxfZigic3NoYnVmX25ldyBmYWlsZWQiKTsKLSsJaWYgKChyID0gc3No YnVmX3B1dF9jc3RyaW5nKG0sIHJvbGUgPyByb2xlIDogIiIpKSAhPSAwKQotKwkJZmF0YWxfZigi YnVmZmVyIGVycm9yOiAlcyIsIHNzaF9lcnIocikpOwotKwltbV9yZXF1ZXN0X3NlbmQocG1vbml0 b3ItPm1fcmVjdmZkLCBNT05JVE9SX1JFUV9BVVRIUk9MRSwgbSk7Ci0rCi0rCXNzaGJ1Zl9mcmVl KG0pOwotK30KLSsjZW5kaWYKLSsKLSAvKiBEbyB0aGUgcGFzc3dvcmQgYXV0aGVudGljYXRpb24g Ki8KLSBpbnQKLSBtbV9hdXRoX3Bhc3N3b3JkKHN0cnVjdCBzc2ggKnNzaCwgY2hhciAqcGFzc3dv cmQpCi1kaWZmIC0tZ2l0IGEvbW9uaXRvcl93cmFwLmggYi9tb25pdG9yX3dyYXAuaAotaW5kZXgg YzJmN2Y5N2Q5Li4zZTA4ZGRkNzggMTAwNjQ0Ci0tLS0gYS9tb25pdG9yX3dyYXAuaAotKysrIGIv bW9uaXRvcl93cmFwLmgKLUBAIC01MSw2ICs1MSw5IEBAIGludCBtbV9zc2hrZXlfc2lnbihzdHJ1 Y3Qgc3NoICosIHN0cnVjdCBzc2hrZXkgKiwgdV9jaGFyICoqLCBzaXplX3QgKiwKLSAgICAgY29u c3QgdV9jaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosCi0gICAgIGNv bnN0IGNoYXIgKiwgdV9pbnQgY29tcGF0KTsKLSB2b2lkIG1tX2luZm9ybV9hdXRoc2VydihjaGFy ICosIGNoYXIgKik7Ci0rI2lmZGVmIFdJVEhfU0VMSU5VWAotK3ZvaWQgbW1faW5mb3JtX2F1dGhy b2xlKGNoYXIgKik7Ci0rI2VuZGlmCi0gc3RydWN0IHBhc3N3ZCAqbW1fZ2V0cHduYW1hbGxvdyhz dHJ1Y3Qgc3NoICosIGNvbnN0IGNoYXIgKik7Ci0gY2hhciAqbW1fYXV0aDJfcmVhZF9iYW5uZXIo dm9pZCk7Ci0gaW50IG1tX2F1dGhfcGFzc3dvcmQoc3RydWN0IHNzaCAqLCBjaGFyICopOwotLS0g Ci0yLjUzLjAKLQoKZGlmZiAtLWdpdCBhLzAwMDEtdXBzdHJlYW0tZml4LUdTU0FQSS1vcHRpb24t bmFtZXMtdGhhdC1JLXNvbWVob3ctc2NyZS5wYXRjaCBiLzAwMDEtdXBzdHJlYW0tZml4LUdTU0FQ SS1vcHRpb24tbmFtZXMtdGhhdC1JLXNvbWVob3ctc2NyZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi4yMWUyOTQwCi0tLSAvZGV2L251bGwKKysrIGIvMDAwMS11cHN0 cmVhbS1maXgtR1NTQVBJLW9wdGlvbi1uYW1lcy10aGF0LUktc29tZWhvdy1zY3JlLnBhdGNoCkBA IC0wLDAgKzEsMTAxIEBACitGcm9tIDgyM2FkMDBkMTQwNjVhYjkzMjc5NGJlOGQwYTc1YTg2YjYy Nzc4NDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiZGptQG9wZW5ic2Qub3JnIiA8 ZGptQG9wZW5ic2Qub3JnPgorRGF0ZTogVHVlLCA3IEp1bCAyMDI2IDAxOjAwOjIyICswMDAwCitT dWJqZWN0OiBbUEFUQ0ggMDEvNTRdIHVwc3RyZWFtOiBmaXggR1NTQVBJIG9wdGlvbiBuYW1lcywg dGhhdCBJIHNvbWVob3cKKyBzY3Jld2VkIHVwIHdoaWxlCisKK3JlZmFjdG9yaW5nIHNlcnZjb25m LmMgYnozOTc0IHBhdGNoIGZyb20gQ29saW4gV2F0c29uCisKK09wZW5CU0QtQ29tbWl0LUlEOiBi ZTM5YWQzZGJlMzZkOWVjZGI4NmYzODExZGE1ZGZiZGM5YmNiMWU2CistLS0KKyBzZXJ2Y29uZi5j IHwgMTggKysrKysrKysrLS0tLS0tLS0tCisgc2VydmNvbmYuaCB8IDE4ICsrKysrKysrKy0tLS0t LS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0p CisKK2RpZmYgLS1naXQgYS9zZXJ2Y29uZi5jIGIvc2VydmNvbmYuYworaW5kZXggY2UzODhmMWRk Li45YjQ0M2JlYTAgMTAwNjQ0CistLS0gYS9zZXJ2Y29uZi5jCisrKysgYi9zZXJ2Y29uZi5jCitA QCAtMSw0ICsxLDQgQEAKKy0vKiAkT3BlbkJTRDogc2VydmNvbmYuYyx2IDEuNDUwIDIwMjYvMDYv MjkgMDg6NTk6MzEgZGptIEV4cCAkICovCisrLyogJE9wZW5CU0Q6IHNlcnZjb25mLmMsdiAxLjQ1 MSAyMDI2LzA3LzA3IDAxOjAwOjIyIGRqbSBFeHAgJCAqLworIC8qCisgICogQ29weXJpZ2h0IChj KSAxOTk1IFRhdHUgWWxvbmVuIDx5bG9AY3MuaHV0LmZpPiwgRXNwb28sIEZpbmxhbmQKKyAgKiAg ICAgICAgICAgICAgICAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZAorQEAgLTE0MzMsMTkgKzE0MzMs MTkgQEAgcHJvY2Vzc19zZXJ2ZXJfY29uZmlnX2xpbmVfZGVwdGgoU2VydmVyT3B0aW9ucyAqb3B0 aW9ucywgY2hhciAqbGluZSwKKyAjZW5kaWYgLyogS1JCNSAqLworIAorICNpZmRlZiBHU1NBUEkK Ky0JY2FzZSBzR3NzQXV0aGVudGljYXRpb246CisrCWNhc2Ugc0dTU0FQSUF1dGhlbnRpY2F0aW9u OgorIAkJaW50cHRyID0gJm9wdGlvbnMtPmdzc19hdXRoZW50aWNhdGlvbjsKKyAJCWdvdG8gcGFy c2VfZmxhZzsKKyAKKy0JY2FzZSBzR3NzQ2xlYW51cENyZWRzOgorKwljYXNlIHNHU1NBUElDbGVh bnVwQ3JlZGVudGlhbHM6CisgCQlpbnRwdHIgPSAmb3B0aW9ucy0+Z3NzX2NsZWFudXBfY3JlZHM7 CisgCQlnb3RvIHBhcnNlX2ZsYWc7CisgCistCWNhc2Ugc0dzc0RlbGVnYXRlQ3JlZHM6CisrCWNh c2Ugc0dTU0FQSURlbGVnYXRlQ3JlZGVudGlhbHM6CisgCQlpbnRwdHIgPSAmb3B0aW9ucy0+Z3Nz X2RlbGVnX2NyZWRzOworIAkJZ290byBwYXJzZV9mbGFnOworIAorLQljYXNlIHNHc3NTdHJpY3RB Y2NlcHRvcjoKKysJY2FzZSBzR1NTQVBJU3RyaWN0QWNjZXB0b3JDaGVjazoKKyAJCWludHB0ciA9 ICZvcHRpb25zLT5nc3Nfc3RyaWN0X2FjY2VwdG9yOworIAkJZ290byBwYXJzZV9mbGFnOworICNl bmRpZiAvKiBHU1NBUEkgKi8KK0BAIC00MjE1LDEwICs0MjE1LDEwIEBAIGR1bXBfY29uZmlnKFNl cnZlck9wdGlvbnMgKm8pCisgIyBlbmRpZgorICNlbmRpZgorICNpZmRlZiBHU1NBUEkKKy0JZHVt cF9jZmdfZm10aW50KHNHc3NBdXRoZW50aWNhdGlvbiwgby0+Z3NzX2F1dGhlbnRpY2F0aW9uKTsK Ky0JZHVtcF9jZmdfZm10aW50KHNHc3NDbGVhbnVwQ3JlZHMsIG8tPmdzc19jbGVhbnVwX2NyZWRz KTsKKy0JZHVtcF9jZmdfZm10aW50KHNHc3NEZWxlZ2F0ZUNyZWRzLCBvLT5nc3NfZGVsZWdfY3Jl ZHMpOworLQlkdW1wX2NmZ19mbXRpbnQoc0dzc1N0cmljdEFjY2VwdG9yLCBvLT5nc3Nfc3RyaWN0 X2FjY2VwdG9yKTsKKysJZHVtcF9jZmdfZm10aW50KHNHU1NBUElBdXRoZW50aWNhdGlvbiwgby0+ Z3NzX2F1dGhlbnRpY2F0aW9uKTsKKysJZHVtcF9jZmdfZm10aW50KHNHU1NBUElDbGVhbnVwQ3Jl ZGVudGlhbHMsIG8tPmdzc19jbGVhbnVwX2NyZWRzKTsKKysJZHVtcF9jZmdfZm10aW50KHNHU1NB UElEZWxlZ2F0ZUNyZWRlbnRpYWxzLCBvLT5nc3NfZGVsZWdfY3JlZHMpOworKwlkdW1wX2NmZ19m bXRpbnQoc0dTU0FQSVN0cmljdEFjY2VwdG9yQ2hlY2ssIG8tPmdzc19zdHJpY3RfYWNjZXB0b3Ip OworICNlbmRpZgorIAlkdW1wX2NmZ19mbXRpbnQoc1Bhc3N3b3JkQXV0aGVudGljYXRpb24sIG8t PnBhc3N3b3JkX2F1dGhlbnRpY2F0aW9uKTsKKyAJZHVtcF9jZmdfZm10aW50KHNLYmRJbnRlcmFj dGl2ZUF1dGhlbnRpY2F0aW9uLAorZGlmZiAtLWdpdCBhL3NlcnZjb25mLmggYi9zZXJ2Y29uZi5o CitpbmRleCA5ZTY0ZTQ2NzMuLmEyMzQ1ZTg4YSAxMDA2NDQKKy0tLSBhL3NlcnZjb25mLmgKKysr KyBiL3NlcnZjb25mLmgKK0BAIC0xLDQgKzEsNCBAQAorLS8qICRPcGVuQlNEOiBzZXJ2Y29uZi5o LHYgMS4xNzcgMjAyNi8wNS8zMSAxMTozMDo1MCBkam0gRXhwICQgKi8KKysvKiAkT3BlbkJTRDog c2VydmNvbmYuaCx2IDEuMTc5IDIwMjYvMDcvMDcgMDE6MDA6MjIgZGptIEV4cCAkICovCisgCisg LyoKKyAgKiBBdXRob3I6IFRhdHUgWWxvbmVuIDx5bG9AY3MuaHV0LmZpPgorQEAgLTMxNCwxNiAr MzE0LDE2IEBAIFNTSENPTkZfVU5TVVBQT1JURURfSU5UKGtlcmJlcm9zX2dldF9hZnNfdG9rZW4s IEtlcmJlcm9zR2V0QUZTVG9rZW4sIFNTSENGR19HTE9CCisgCisgI2lmZGVmIEdTU0FQSQorICNk ZWZpbmUgU1NIRF9DT05GSUdfRU5UUklFU19HU1MgXAorLVNTSENPTkZfSU5URkxBRyhnc3NfYXV0 aGVudGljYXRpb24sIEdzc0F1dGhlbnRpY2F0aW9uLCBTU0hDRkdfQUxMLCAwLCBTU0hDRkdfQ09Q WV9NQVRDSCkgXAorLVNTSENPTkZfSU5URkxBRyhnc3NfY2xlYW51cF9jcmVkcywgR3NzQ2xlYW51 cENyZWRzLCBTU0hDRkdfR0xPQkFMLCAxLCBTU0hDRkdfQ09QWV9OT05FKSBcCistU1NIQ09ORl9J TlRGTEFHKGdzc19kZWxlZ19jcmVkcywgR3NzRGVsZWdhdGVDcmVkcywgU1NIQ0ZHX0dMT0JBTCwg MSwgU1NIQ0ZHX0NPUFlfTk9ORSkgXAorLVNTSENPTkZfSU5URkxBRyhnc3Nfc3RyaWN0X2FjY2Vw dG9yLCBHc3NTdHJpY3RBY2NlcHRvciwgU1NIQ0ZHX0dMT0JBTCwgMSwgU1NIQ0ZHX0NPUFlfTk9O RSkKKytTU0hDT05GX0lOVEZMQUcoZ3NzX2F1dGhlbnRpY2F0aW9uLCBHU1NBUElBdXRoZW50aWNh dGlvbiwgU1NIQ0ZHX0FMTCwgMCwgU1NIQ0ZHX0NPUFlfTUFUQ0gpIFwKKytTU0hDT05GX0lOVEZM QUcoZ3NzX2NsZWFudXBfY3JlZHMsIEdTU0FQSUNsZWFudXBDcmVkZW50aWFscywgU1NIQ0ZHX0dM T0JBTCwgMSwgU1NIQ0ZHX0NPUFlfTk9ORSkgXAorK1NTSENPTkZfSU5URkxBRyhnc3NfZGVsZWdf Y3JlZHMsIEdTU0FQSURlbGVnYXRlQ3JlZGVudGlhbHMsIFNTSENGR19HTE9CQUwsIDEsIFNTSENG R19DT1BZX05PTkUpIFwKKytTU0hDT05GX0lOVEZMQUcoZ3NzX3N0cmljdF9hY2NlcHRvciwgR1NT QVBJU3RyaWN0QWNjZXB0b3JDaGVjaywgU1NIQ0ZHX0dMT0JBTCwgMSwgU1NIQ0ZHX0NPUFlfTk9O RSkKKyAjZWxzZSAvKiBHU1NBUEkgKi8KKyAjZGVmaW5lIFNTSERfQ09ORklHX0VOVFJJRVNfR1NT IFwKKy1TU0hDT05GX1VOU1VQUE9SVEVEX0lOVChnc3NfYXV0aGVudGljYXRpb24sIEdzc0F1dGhl bnRpY2F0aW9uLCBTU0hDRkdfQUxMKSBcCistU1NIQ09ORl9VTlNVUFBPUlRFRF9JTlQoZ3NzX2Ns ZWFudXBfY3JlZHMsIEdzc0NsZWFudXBDcmVkcywgU1NIQ0ZHX0dMT0JBTCkgXAorLVNTSENPTkZf VU5TVVBQT1JURURfSU5UKGdzc19kZWxlZ19jcmVkcywgR3NzRGVsZWdhdGVDcmVkcywgU1NIQ0ZH X0dMT0JBTCkgXAorLVNTSENPTkZfVU5TVVBQT1JURURfSU5UKGdzc19zdHJpY3RfYWNjZXB0b3Is IEdzc1N0cmljdEFjY2VwdG9yLCBTU0hDRkdfR0xPQkFMKQorK1NTSENPTkZfVU5TVVBQT1JURURf SU5UKGdzc19hdXRoZW50aWNhdGlvbiwgR1NTQVBJQXV0aGVudGljYXRpb24sIFNTSENGR19BTEwp IFwKKytTU0hDT05GX1VOU1VQUE9SVEVEX0lOVChnc3NfY2xlYW51cF9jcmVkcywgR1NTQVBJQ2xl YW51cENyZWRlbnRpYWxzLCBTU0hDRkdfR0xPQkFMKSBcCisrU1NIQ09ORl9VTlNVUFBPUlRFRF9J TlQoZ3NzX2RlbGVnX2NyZWRzLCBHU1NBUElEZWxlZ2F0ZUNyZWRlbnRpYWxzLCBTU0hDRkdfR0xP QkFMKSBcCisrU1NIQ09ORl9VTlNVUFBPUlRFRF9JTlQoZ3NzX3N0cmljdF9hY2NlcHRvciwgR1NT QVBJU3RyaWN0QWNjZXB0b3JDaGVjaywgU1NIQ0ZHX0dMT0JBTCkKKyAjZW5kaWYgLyogR1NTQVBJ ICovCisgCisgI2RlZmluZSBTU0hEX0NPTkZJR19FTlRSSUVTIFwKKy0tIAorMi41NS4wCisKCmRp ZmYgLS1naXQgYS8wMDAyLUFkZC1TRUxpbnV4LXJvbGUtYW5kLU1MUy1NdWx0aS1MZXZlbC1TZWN1 cml0eS1zdXBwb3IucGF0Y2ggYi8wMDAyLUFkZC1TRUxpbnV4LXJvbGUtYW5kLU1MUy1NdWx0aS1M ZXZlbC1TZWN1cml0eS1zdXBwb3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uZDY4NjIwYQotLS0gL2Rldi9udWxsCisrKyBiLzAwMDItQWRkLVNFTGludXgtcm9sZS1h bmQtTUxTLU11bHRpLUxldmVsLVNlY3VyaXR5LXN1cHBvci5wYXRjaApAQCAtMCwwICsxLDQxNiBA QAorRnJvbSAwZmYxMTNkNTVkZmZlZTYyM2E2MjJlMDgxYjQyNmU1YjdlNTdjNTcxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRG1pdHJ5IEJlbHlhdnNraXkgPGJlbGRtaXRAZ21haWwu Y29tPgorRGF0ZTogTW9uLCAxMyBBcHIgMjAyNiAxNDowNjozMiArMDIwMAorU3ViamVjdDogW1BB VENIIDAyLzU0XSBBZGQgU0VMaW51eCByb2xlIGFuZCBNTFMgKE11bHRpLUxldmVsIFNlY3VyaXR5 KSBzdXBwb3J0CisKK29wZW5zc2gtNy44cDEtcm9sZS1tbHMKKworQWRkIHN1cHBvcnQgZm9yIFNF TGludXggcm9sZS1iYXNlZCBhY2Nlc3MgY29udHJvbCBhbmQgTXVsdGktTGV2ZWwKK1NlY3VyaXR5 IChNTFMpIGJ5IGFsbG93aW5nIHVzZXJzIHRvIHNwZWNpZnkgdGhlaXIgcm9sZSBhcyBwYXJ0IG9m IHRoZQordXNlcm5hbWUgaW4gdGhlIGZvcm1hdCB1c2VyL3JvbGUuCisKK0NoYW5nZXM6CistIGF1 dGguaDogQWRkIHJvbGUgZmllbGQgdG8gQXV0aGN0eHQgc3RydWN0dXJlCistIGF1dGgyLmM6IFBh cnNlIHJvbGUgZnJvbSB1c2VybmFtZSBhbmQgaW5mb3JtIG1vbml0b3IgcHJvY2VzcworLSBhdXRo Mi1nc3MuYzogSW5jbHVkZSByb2xlIGluIEdTU0FQSSBNSUMgYXV0aGVudGljYXRpb24KKy0gYXV0 aDItaG9zdGJhc2VkLmM6IEluY2x1ZGUgcm9sZSBpbiBob3N0YmFzZWQgYXV0aGVudGljYXRpb24g c2lnbmF0dXJlCistIGF1dGgyLXB1YmtleS5jOiBJbmNsdWRlIHJvbGUgaW4gcHVia2V5IGF1dGhl bnRpY2F0aW9uIHVzZXJzdHlsZQorLSBtb25pdG9yLmM6IEFkZCBtbV9hbnN3ZXJfYXV0aHJvbGUo KSBhbmQgaGFuZGxlIHJvbGUgaW4gYXV0aGVudGljYXRpb24KKyAgYmxvYiB2YWxpZGF0aW9uCist IG1vbml0b3Jfd3JhcC5jOiBBZGQgbW1faW5mb3JtX2F1dGhyb2xlKCkgZm9yIHByaXZpbGVnZSBz ZXBhcmF0aW9uCistIG1pc2MuYzogVXBkYXRlIGNvbG9uKCkgdG8gaGFuZGxlIC9yb2xlIHN5bnRh eCBpbiBmaWxlIHBhdGhzCisKK0NvLUF1dGhvcmVkLUJ5OiBDbGF1ZGUgU29ubmV0IDQuNSA8bm9y ZXBseUBhbnRocm9waWMuY29tPgorLS0tCisgYXV0aC5oICAgICAgICAgICAgfCAgMyArKysKKyBh dXRoMi1nc3MuYyAgICAgICB8IDExICsrKysrKysrKystCisgYXV0aDItaG9zdGJhc2VkLmMgfCAg OSArKysrKysrKysKKyBhdXRoMi1wdWJrZXkuYyAgICB8IDE5ICsrKysrKysrKysrKysrKy0tLS0K KyBhdXRoMi5jICAgICAgICAgICB8IDE0ICsrKysrKysrKysrKysrCisgbWlzYy5jICAgICAgICAg ICAgfCAxOCArKysrKysrKysrKysrKysrKy0KKyBtb25pdG9yLmMgICAgICAgICB8IDM3ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KKyBtb25pdG9yLmggICAgICAgICB8ICA0 ICsrKysKKyBtb25pdG9yX3dyYXAuYyAgICB8IDIxICsrKysrKysrKysrKysrKysrKysrKworIG1v bml0b3Jfd3JhcC5oICAgIHwgIDMgKysrCisgMTAgZmlsZXMgY2hhbmdlZCwgMTMxIGluc2VydGlv bnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9hdXRoLmggYi9hdXRoLmgKK2lu ZGV4IDBmMTE0NThjYS4uZWZlODE5MzIzIDEwMDY0NAorLS0tIGEvYXV0aC5oCisrKysgYi9hdXRo LmgKK0BAIC02NSw2ICs2NSw5IEBAIHN0cnVjdCBBdXRoY3R4dCB7CisgCWNoYXIJCSpzZXJ2aWNl OworIAlzdHJ1Y3QgcGFzc3dkCSpwdzsJCS8qIHNldCBpZiAndmFsaWQnICovCisgCWNoYXIJCSpz dHlsZTsKKysjaWZkZWYgV0lUSF9TRUxJTlVYCisrCWNoYXIJCSpyb2xlOworKyNlbmRpZgorIAor IAkvKiBNZXRob2QgbGlzdHMgZm9yIG11bHRpcGxlIGF1dGhlbnRpY2F0aW9uICovCisgCWNoYXIJ CSoqYXV0aF9tZXRob2RzOwkvKiBtb2RpZmllZCBmcm9tIHNlcnZlciBjb25maWcgKi8KK2RpZmYg LS1naXQgYS9hdXRoMi1nc3MuYyBiL2F1dGgyLWdzcy5jCitpbmRleCA4NTI1MWI3ZDAuLmRmZWU1 NjEzZSAxMDA2NDQKKy0tLSBhL2F1dGgyLWdzcy5jCisrKysgYi9hdXRoMi1nc3MuYworQEAgLTI4 Miw2ICsyODIsNyBAQCBpbnB1dF9nc3NhcGlfbWljKGludCB0eXBlLCB1aW50MzJfdCBwbGVuLCBz dHJ1Y3Qgc3NoICpzc2gpCisgCUF1dGhjdHh0ICphdXRoY3R4dCA9IHNzaC0+YXV0aGN0eHQ7Cisg CUdzc2N0eHQgKmdzc2N0eHQ7CisgCWludCByLCBhdXRoZW50aWNhdGVkID0gMDsKKysJY2hhciAq bWljdXNlcjsKKyAJc3RydWN0IHNzaGJ1ZiAqYjsKKyAJZ3NzX2J1ZmZlcl9kZXNjIG1pYywgZ3Nz YnVmOworIAl1X2NoYXIgKnA7CitAQCAtMjk5LDcgKzMwMCwxMyBAQCBpbnB1dF9nc3NhcGlfbWlj KGludCB0eXBlLCB1aW50MzJfdCBwbGVuLCBzdHJ1Y3Qgc3NoICpzc2gpCisgCQlmYXRhbF9mKCJz c2hidWZfbmV3IGZhaWxlZCIpOworIAltaWMudmFsdWUgPSBwOworIAltaWMubGVuZ3RoID0gbGVu OworLQlzc2hfZ3NzYXBpX2J1aWxkbWljKGIsIGF1dGhjdHh0LT51c2VyLCBhdXRoY3R4dC0+c2Vy dmljZSwKKysjaWZkZWYgV0lUSF9TRUxJTlVYCisrCWlmIChhdXRoY3R4dC0+cm9sZSAmJiBhdXRo Y3R4dC0+cm9sZVswXSAhPSAwKQorKwkJeGFzcHJpbnRmKCZtaWN1c2VyLCAiJXMvJXMiLCBhdXRo Y3R4dC0+dXNlciwgYXV0aGN0eHQtPnJvbGUpOworKwllbHNlCisrI2VuZGlmCisrCQltaWN1c2Vy ID0gYXV0aGN0eHQtPnVzZXI7CisrCXNzaF9nc3NhcGlfYnVpbGRtaWMoYiwgbWljdXNlciwgYXV0 aGN0eHQtPnNlcnZpY2UsCisgCSAgICAiZ3NzYXBpLXdpdGgtbWljIiwgc3NoLT5rZXgtPnNlc3Np b25faWQpOworIAorIAlpZiAoKGdzc2J1Zi52YWx1ZSA9IHNzaGJ1Zl9tdXRhYmxlX3B0cihiKSkg PT0gTlVMTCkKK0BAIC0zMTIsNiArMzE5LDggQEAgaW5wdXRfZ3NzYXBpX21pYyhpbnQgdHlwZSwg dWludDMyX3QgcGxlbiwgc3RydWN0IHNzaCAqc3NoKQorIAkJbG9naXQoIkdTU0FQSSBNSUMgY2hl Y2sgZmFpbGVkIik7CisgCisgCXNzaGJ1Zl9mcmVlKGIpOworKwlpZiAobWljdXNlciAhPSBhdXRo Y3R4dC0+dXNlcikKKysJCWZyZWUobWljdXNlcik7CisgCWZyZWUobWljLnZhbHVlKTsKKyAKKyAJ aWYgKCFhdXRoZW50aWNhdGVkKQorZGlmZiAtLWdpdCBhL2F1dGgyLWhvc3RiYXNlZC5jIGIvYXV0 aDItaG9zdGJhc2VkLmMKK2luZGV4IDhhMWFjZGVjMy4uYTI4NzA5MWVjIDEwMDY0NAorLS0tIGEv YXV0aDItaG9zdGJhc2VkLmMKKysrKyBiL2F1dGgyLWhvc3RiYXNlZC5jCitAQCAtMTMwLDcgKzEz MCwxNiBAQCB1c2VyYXV0aF9ob3N0YmFzZWQoc3RydWN0IHNzaCAqc3NoLCBjb25zdCBjaGFyICpt ZXRob2QpCisgCS8qIHJlY29uc3RydWN0IHBhY2tldCAqLworIAlpZiAoKHIgPSBzc2hidWZfcHV0 X3N0cmluZ2IoYiwgc3NoLT5rZXgtPnNlc3Npb25faWQpKSAhPSAwIHx8CisgCSAgICAociA9IHNz aGJ1Zl9wdXRfdTgoYiwgU1NIMl9NU0dfVVNFUkFVVEhfUkVRVUVTVCkpICE9IDAgfHwKKysjaWZk ZWYgV0lUSF9TRUxJTlVYCisrCSAgICAoYXV0aGN0eHQtPnJvbGUKKysJICAgID8gKCAociA9IHNz aGJ1Zl9wdXRfdTMyKGIsIHN0cmxlbihhdXRoY3R4dC0+dXNlcikrc3RybGVuKGF1dGhjdHh0LT5y b2xlKSsxKSkgIT0gMCB8fAorKwkgICAgICAgIChyID0gc3NoYnVmX3B1dChiLCBhdXRoY3R4dC0+ dXNlciwgc3RybGVuKGF1dGhjdHh0LT51c2VyKSkpICE9IDAgfHwKKysJICAgICAgICAociA9IHNz aGJ1Zl9wdXRfdTgoYiwgJy8nKSAhPSAwKSB8fAorKwkgICAgICAgIChyID0gc3NoYnVmX3B1dChi LCBhdXRoY3R4dC0+cm9sZSwgc3RybGVuKGF1dGhjdHh0LT5yb2xlKSkpICE9IDApCisrCSAgICA6 IChyID0gc3NoYnVmX3B1dF9jc3RyaW5nKGIsIGF1dGhjdHh0LT51c2VyKSkgIT0gMCkgfHwKKysj ZWxzZQorIAkgICAgKHIgPSBzc2hidWZfcHV0X2NzdHJpbmcoYiwgYXV0aGN0eHQtPnVzZXIpKSAh PSAwIHx8CisrI2VuZGlmCisgCSAgICAociA9IHNzaGJ1Zl9wdXRfY3N0cmluZyhiLCBhdXRoY3R4 dC0+c2VydmljZSkpICE9IDAgfHwKKyAJICAgIChyID0gc3NoYnVmX3B1dF9jc3RyaW5nKGIsIG1l dGhvZCkpICE9IDAgfHwKKyAJICAgIChyID0gc3NoYnVmX3B1dF9zdHJpbmcoYiwgcGthbGcsIGFs ZW4pKSAhPSAwIHx8CitkaWZmIC0tZ2l0IGEvYXV0aDItcHVia2V5LmMgYi9hdXRoMi1wdWJrZXku YworaW5kZXggZTQ0NmVmNDEyLi4zMTllNDJiMmIgMTAwNjQ0CistLS0gYS9hdXRoMi1wdWJrZXku YworKysrIGIvYXV0aDItcHVia2V5LmMKK0BAIC03MSw2ICs3MSw4IEBACisgCisgLyogaW1wb3J0 ICovCisgZXh0ZXJuIFNlcnZlck9wdGlvbnMgb3B0aW9uczsKKytleHRlcm4gaW50IGluZXRkX2Zs YWc7CisrZXh0ZXJuIEF1dGhjdHh0ICp0aGVfYXV0aGN0eHQ7CisgZXh0ZXJuIHN0cnVjdCBhdXRo bWV0aG9kX2NmZyBtZXRob2RjZmdfcHVia2V5OworIAorIHN0YXRpYyBjaGFyICoKK0BAIC0yMDEs OSArMjAzLDE2IEBAIHVzZXJhdXRoX3B1YmtleShzdHJ1Y3Qgc3NoICpzc2gsIGNvbnN0IGNoYXIg Km1ldGhvZCkKKyAJCQlnb3RvIGRvbmU7CisgCQl9CisgCQkvKiByZWNvbnN0cnVjdCBwYWNrZXQg Ki8KKy0JCXhhc3ByaW50ZigmdXNlcnN0eWxlLCAiJXMlcyVzIiwgYXV0aGN0eHQtPnVzZXIsCisr CQl4YXNwcmludGYoJnVzZXJzdHlsZSwgIiVzJXMlcyVzJXMiLCBhdXRoY3R4dC0+dXNlciwKKyAJ CSAgICBhdXRoY3R4dC0+c3R5bGUgPyAiOiIgOiAiIiwKKy0JCSAgICBhdXRoY3R4dC0+c3R5bGUg PyBhdXRoY3R4dC0+c3R5bGUgOiAiIik7CisrCQkgICAgYXV0aGN0eHQtPnN0eWxlID8gYXV0aGN0 eHQtPnN0eWxlIDogIiIsCisrI2lmZGVmIFdJVEhfU0VMSU5VWAorKwkJICAgIGF1dGhjdHh0LT5y b2xlID8gIi8iIDogIiIsCisrCQkgICAgYXV0aGN0eHQtPnJvbGUgPyBhdXRoY3R4dC0+cm9sZSA6 ICIiCisrI2Vsc2UKKysJCSAgICAiIiwgIiIKKysjZW5kaWYKKysJCSAgICApOworIAkJaWYgKChy ID0gc3NoYnVmX3B1dF91OChiLCBTU0gyX01TR19VU0VSQVVUSF9SRVFVRVNUKSkgIT0gMCB8fAor IAkJICAgIChyID0gc3NoYnVmX3B1dF9jc3RyaW5nKGIsIHVzZXJzdHlsZSkpICE9IDAgfHwKKyAJ CSAgICAociA9IHNzaGJ1Zl9wdXRfY3N0cmluZyhiLCBhdXRoY3R4dC0+c2VydmljZSkpICE9IDAg fHwKK0BAIC00NzMsNyArNDgyLDggQEAgbWF0Y2hfcHJpbmNpcGFsc19jb21tYW5kKHN0cnVjdCBw YXNzd2QgKnVzZXJfcHcsIGNvbnN0IHN0cnVjdCBzc2hrZXkgKmtleSwKKyAJaWYgKChwaWQgPSBz dWJwcm9jZXNzKCJBdXRob3JpemVkUHJpbmNpcGFsc0NvbW1hbmQiLCBjb21tYW5kLAorIAkgICAg YWMsIGF2LCAmZiwKKyAJICAgIFNTSF9TVUJQUk9DRVNTX1NURE9VVF9DQVBUVVJFfFNTSF9TVUJQ Uk9DRVNTX1NUREVSUl9ESVNDQVJELAorLQkgICAgcnVuYXNfcHcsIHRlbXBvcmFyaWx5X3VzZV91 aWQsIHJlc3RvcmVfdWlkKSkgPT0gMCkKKysJICAgIHJ1bmFzX3B3LCB0ZW1wb3JhcmlseV91c2Vf dWlkLCByZXN0b3JlX3VpZCwKKysJICAgIGluZXRkX2ZsYWcsIHRoZV9hdXRoY3R4dCkpID09IDAp CisgCQlnb3RvIG91dDsKKyAKKyAJdWlkX3N3YXBwZWQgPSAxOworQEAgLTc0OSw3ICs3NTksOCBA QCB1c2VyX2tleV9jb21tYW5kX2FsbG93ZWQyKHN0cnVjdCBwYXNzd2QgKnVzZXJfcHcsIHN0cnVj dCBzc2hrZXkgKmtleSwKKyAJaWYgKChwaWQgPSBzdWJwcm9jZXNzKCJBdXRob3JpemVkS2V5c0Nv bW1hbmQiLCBjb21tYW5kLAorIAkgICAgYWMsIGF2LCAmZiwKKyAJICAgIFNTSF9TVUJQUk9DRVNT X1NURE9VVF9DQVBUVVJFfFNTSF9TVUJQUk9DRVNTX1NUREVSUl9ESVNDQVJELAorLQkgICAgcnVu YXNfcHcsIHRlbXBvcmFyaWx5X3VzZV91aWQsIHJlc3RvcmVfdWlkKSkgPT0gMCkKKysJICAgIHJ1 bmFzX3B3LCB0ZW1wb3JhcmlseV91c2VfdWlkLCByZXN0b3JlX3VpZCwKKysJICAgIGluZXRkX2Zs YWcsIHRoZV9hdXRoY3R4dCkpID09IDApCisgCQlnb3RvIG91dDsKKyAKKyAJdWlkX3N3YXBwZWQg PSAxOworZGlmZiAtLWdpdCBhL2F1dGgyLmMgYi9hdXRoMi5jCitpbmRleCAzZjM1M2E3MTkuLjQ5 N2ZhOGVkMiAxMDA2NDQKKy0tLSBhL2F1dGgyLmMKKysrKyBiL2F1dGgyLmMKK0BAIC0yNzcsNiAr Mjc3LDkgQEAgaW5wdXRfdXNlcmF1dGhfcmVxdWVzdChpbnQgdHlwZSwgdWludDMyX3Qgc2VxLCBz dHJ1Y3Qgc3NoICpzc2gpCisgCUF1dGhjdHh0ICphdXRoY3R4dCA9IHNzaC0+YXV0aGN0eHQ7Cisg CUF1dGhtZXRob2QgKm0gPSBOVUxMOworIAljaGFyICp1c2VyID0gTlVMTCwgKnNlcnZpY2UgPSBO VUxMLCAqbWV0aG9kID0gTlVMTCwgKnN0eWxlID0gTlVMTDsKKysjaWZkZWYgV0lUSF9TRUxJTlVY CisrCWNoYXIgKnJvbGUgPSBOVUxMOworKyNlbmRpZgorIAlpbnQgciwgYXV0aGVudGljYXRlZCA9 IDA7CisgCWRvdWJsZSB0c3RhcnQgPSBtb25vdGltZV9kb3VibGUoKTsKKyAKK0BAIC0yOTAsNiAr MjkzLDExIEBAIGlucHV0X3VzZXJhdXRoX3JlcXVlc3QoaW50IHR5cGUsIHVpbnQzMl90IHNlcSwg c3RydWN0IHNzaCAqc3NoKQorIAlkZWJ1ZygidXNlcmF1dGgtcmVxdWVzdCBmb3IgdXNlciAlcyBz ZXJ2aWNlICVzIG1ldGhvZCAlcyIsIHVzZXIsIHNlcnZpY2UsIG1ldGhvZCk7CisgCWRlYnVnKCJh dHRlbXB0ICVkIGZhaWx1cmVzICVkIiwgYXV0aGN0eHQtPmF0dGVtcHQsIGF1dGhjdHh0LT5mYWls dXJlcyk7CisgCisrI2lmZGVmIFdJVEhfU0VMSU5VWAorKwlpZiAoKHJvbGUgPSBzdHJjaHIodXNl ciwgJy8nKSkgIT0gTlVMTCkKKysJCSpyb2xlKysgPSAwOworKyNlbmRpZgorKworIAlpZiAoKHN0 eWxlID0gc3RyY2hyKHVzZXIsICc6JykpICE9IE5VTEwpCisgCQkqc3R5bGUrKyA9IDA7CisgCitA QCAtMzAxLDYgKzMwOSw5IEBAIGlucHV0X3VzZXJhdXRoX3JlcXVlc3QoaW50IHR5cGUsIHVpbnQz Ml90IHNlcSwgc3RydWN0IHNzaCAqc3NoKQorIAkJYXV0aGN0eHQtPnVzZXIgPSB4c3RyZHVwKHVz ZXIpOworIAkJYXV0aGN0eHQtPnNlcnZpY2UgPSB4c3RyZHVwKHNlcnZpY2UpOworIAkJYXV0aGN0 eHQtPnN0eWxlID0gc3R5bGUgPyB4c3RyZHVwKHN0eWxlKSA6IE5VTEw7CisrI2lmZGVmIFdJVEhf U0VMSU5VWAorKwkJYXV0aGN0eHQtPnJvbGUgPSByb2xlID8geHN0cmR1cChyb2xlKSA6IE5VTEw7 CisrI2VuZGlmCisgCQlpZiAoYXV0aGN0eHQtPnB3ICYmIHN0cmNtcChzZXJ2aWNlLCAic3NoLWNv bm5lY3Rpb24iKT09MCkgeworIAkJCWF1dGhjdHh0LT52YWxpZCA9IDE7CisgCQkJZGVidWcyX2Yo InNldHRpbmcgdXAgYXV0aGN0eHQgZm9yICVzIiwgdXNlcik7CitAQCAtMzIwLDYgKzMzMSw5IEBA IGlucHV0X3VzZXJhdXRoX3JlcXVlc3QoaW50IHR5cGUsIHVpbnQzMl90IHNlcSwgc3RydWN0IHNz aCAqc3NoKQorIAkJICAgIGF1dGhjdHh0LT52YWxpZCA/ICJhdXRoZW50aWNhdGluZyAiIDogImlu dmFsaWQgIiwgdXNlcik7CisgCQlzZXRwcm9jdGl0bGUoIiVzIFtuZXRdIiwgYXV0aGN0eHQtPnZh bGlkID8gdXNlciA6ICJ1bmtub3duIik7CisgCQltbV9pbmZvcm1fYXV0aHNlcnYoc2VydmljZSwg c3R5bGUpOworKyNpZmRlZiBXSVRIX1NFTElOVVgKKysgICAgICAgICAJbW1faW5mb3JtX2F1dGhy b2xlKHJvbGUpOworKyNlbmRpZgorIAkJdXNlcmF1dGhfYmFubmVyKHNzaCk7CisgCQlpZiAoKHIg PSBrZXhfc2VydmVyX3VwZGF0ZV9leHRfaW5mbyhzc2gpKSAhPSAwKQorIAkJCWZhdGFsX2ZyKHIs ICJrZXhfc2VydmVyX3VwZGF0ZV9leHRfaW5mbyBmYWlsZWQiKTsKK2RpZmYgLS1naXQgYS9taXNj LmMgYi9taXNjLmMKK2luZGV4IDUxN2ZhN2E5Ny4uYzBlMTY0MzdhIDEwMDY0NAorLS0tIGEvbWlz Yy5jCisrKysgYi9taXNjLmMKK0BAIC04NjksNiArODY5LDcgQEAgY2hhciAqCisgY29sb24oY2hh ciAqY3ApCisgeworIAlpbnQgZmxhZyA9IDA7CisrCWludCBzdGFydCA9IDE7CisgCisgCWlmICgq Y3AgPT0gJzonKQkJLyogTGVhZGluZyBjb2xvbiBpcyBwYXJ0IG9mIGZpbGUgbmFtZS4gKi8KKyAJ CXJldHVybiBOVUxMOworQEAgLTg4NCw2ICs4ODUsMTMgQEAgY29sb24oY2hhciAqY3ApCisgCQkJ cmV0dXJuIChjcCk7CisgCQlpZiAoKmNwID09ICcvJykKKyAJCQlyZXR1cm4gTlVMTDsKKysJCWlm IChzdGFydCkgeworKwkJLyogU2xhc2ggb24gYmVnaW5uaW5nIG9yIGFmdGVyIGRvdHMgb25seSBk ZW5vdGVzIGZpbGUgbmFtZS4gKi8KKysJCQlpZiAoKmNwID09ICcvJykKKysJCQkJcmV0dXJuICgw KTsKKysJCQlpZiAoKmNwICE9ICcuJykKKysJCQkJc3RhcnQgPSAwOworKwkJfQorIAl9CisgCXJl dHVybiBOVUxMOworIH0KK0BAIC0yODMwLDcgKzI4MzgsOCBAQCBzdGRmZF9kZXZudWxsKGludCBk b19zdGRpbiwgaW50IGRvX3N0ZG91dCwgaW50IGRvX3N0ZGVycikKKyBwaWRfdAorIHN1YnByb2Nl c3MoY29uc3QgY2hhciAqdGFnLCBjb25zdCBjaGFyICpjb21tYW5kLAorICAgICBpbnQgYWMsIGNo YXIgKiphdiwgRklMRSAqKmNoaWxkLCB1X2ludCBmbGFncywKKy0gICAgc3RydWN0IHBhc3N3ZCAq cHcsIHByaXZkcm9wX2ZuICpkcm9wX3ByaXZzLCBwcml2cmVzdG9yZV9mbiAqcmVzdG9yZV9wcml2 cykKKysgICAgc3RydWN0IHBhc3N3ZCAqcHcsIHByaXZkcm9wX2ZuICpkcm9wX3ByaXZzLAorKyAg ICBwcml2cmVzdG9yZV9mbiAqcmVzdG9yZV9wcml2cywgaW50IGluZXRkLCB2b2lkICp0aGVfYXV0 aGN0eHQpCisgeworIAlGSUxFICpmID0gTlVMTDsKKyAJc3RydWN0IHN0YXQgc3Q7CitAQCAtMjk2 Myw2ICsyOTcyLDEzIEBAIHN1YnByb2Nlc3MoY29uc3QgY2hhciAqdGFnLCBjb25zdCBjaGFyICpj b21tYW5kLAorIAkJCWVycm9yKCIlczogZHVwMjogJXMiLCB0YWcsIHN0cmVycm9yKGVycm5vKSk7 CisgCQkJX2V4aXQoMSk7CisgCQl9CisrI2lmZGVmIFdJVEhfU0VMSU5VWAorKwkJaWYgKHNzaGRf c2VsaW51eF9zZXR1cF9lbnZfdmFyaWFibGVzKGluZXRkLCB0aGVfYXV0aGN0eHQpIDwgMCkgewor KwkJCWVycm9yICgiZmFpbGVkIHRvIGNvcHkgZW52aXJvbm1lbnQ6ICAlcyIsCisrCQkJICAgIHN0 cmVycm9yKGVycm5vKSk7CisrCQkJX2V4aXQoMTI3KTsKKysJCX0KKysjZW5kaWYKKyAJCWlmIChl bnYgIT0gTlVMTCkKKyAJCQlleGVjdmUoYXZbMF0sIGF2LCBlbnYpOworIAkJZWxzZQorZGlmZiAt LWdpdCBhL21vbml0b3IuYyBiL21vbml0b3IuYworaW5kZXggNzNhODU0MDhlLi42ZmU5ZjQ2ZmMg MTAwNjQ0CistLS0gYS9tb25pdG9yLmMKKysrKyBiL21vbml0b3IuYworQEAgLTExMSw2ICsxMTEs OSBAQCBpbnQgbW1fYW5zd2VyX3NpZ24oc3RydWN0IHNzaCAqLCBpbnQsIHN0cnVjdCBzc2hidWYg Kik7CisgaW50IG1tX2Fuc3dlcl9wd25hbWFsbG93KHN0cnVjdCBzc2ggKiwgaW50LCBzdHJ1Y3Qg c3NoYnVmICopOworIGludCBtbV9hbnN3ZXJfYXV0aDJfcmVhZF9iYW5uZXIoc3RydWN0IHNzaCAq LCBpbnQsIHN0cnVjdCBzc2hidWYgKik7CisgaW50IG1tX2Fuc3dlcl9hdXRoc2VydihzdHJ1Y3Qg c3NoICosIGludCwgc3RydWN0IHNzaGJ1ZiAqKTsKKysjaWZkZWYgV0lUSF9TRUxJTlVYCisraW50 IG1tX2Fuc3dlcl9hdXRocm9sZShzdHJ1Y3Qgc3NoICosIGludCwgc3RydWN0IHNzaGJ1ZiAqKTsK KysjZW5kaWYKKyBpbnQgbW1fYW5zd2VyX2F1dGhwYXNzd29yZChzdHJ1Y3Qgc3NoICosIGludCwg c3RydWN0IHNzaGJ1ZiAqKTsKKyBpbnQgbW1fYW5zd2VyX2JzZGF1dGhxdWVyeShzdHJ1Y3Qgc3No ICosIGludCwgc3RydWN0IHNzaGJ1ZiAqKTsKKyBpbnQgbW1fYW5zd2VyX2JzZGF1dGhyZXNwb25k KHN0cnVjdCBzc2ggKiwgaW50LCBzdHJ1Y3Qgc3NoYnVmICopOworQEAgLTE4OCw2ICsxOTEsOSBA QCBzdHJ1Y3QgbW9uX3RhYmxlIG1vbl9kaXNwYXRjaF9wcm90bzIwW10gPSB7CisgICAgIHtNT05J VE9SX1JFUV9TSUdOLCBNT05fT05DRSwgbW1fYW5zd2VyX3NpZ259LAorICAgICB7TU9OSVRPUl9S RVFfUFdOQU0sIE1PTl9PTkNFLCBtbV9hbnN3ZXJfcHduYW1hbGxvd30sCisgICAgIHtNT05JVE9S X1JFUV9BVVRIU0VSViwgTU9OX09OQ0UsIG1tX2Fuc3dlcl9hdXRoc2Vydn0sCisrI2lmZGVmIFdJ VEhfU0VMSU5VWAorKyAgICB7TU9OSVRPUl9SRVFfQVVUSFJPTEUsIE1PTl9PTkNFLCBtbV9hbnN3 ZXJfYXV0aHJvbGV9LAorKyNlbmRpZgorICAgICB7TU9OSVRPUl9SRVFfQVVUSDJfUkVBRF9CQU5O RVIsIE1PTl9PTkNFLCBtbV9hbnN3ZXJfYXV0aDJfcmVhZF9iYW5uZXJ9LAorICAgICB7TU9OSVRP Ul9SRVFfQVVUSFBBU1NXT1JELCBNT05fQVVUSCwgbW1fYW5zd2VyX2F1dGhwYXNzd29yZH0sCisg I2lmZGVmIFVTRV9QQU0KK0BAIC05MjAsNiArOTI2LDkgQEAgbW1fYW5zd2VyX3B3bmFtYWxsb3co c3RydWN0IHNzaCAqc3NoLCBpbnQgc29jaywgc3RydWN0IHNzaGJ1ZiAqbSkKKyAKKyAJLyogQWxs b3cgc2VydmljZS9zdHlsZSBpbmZvcm1hdGlvbiBvbiB0aGUgYXV0aCBjb250ZXh0ICovCisgCW1v bml0b3JfcGVybWl0KG1vbl9kaXNwYXRjaCwgTU9OSVRPUl9SRVFfQVVUSFNFUlYsIDEpOworKyNp ZmRlZiBXSVRIX1NFTElOVVgKKysJbW9uaXRvcl9wZXJtaXQobW9uX2Rpc3BhdGNoLCBNT05JVE9S X1JFUV9BVVRIUk9MRSwgMSk7CisrI2VuZGlmCisgCW1vbml0b3JfcGVybWl0KG1vbl9kaXNwYXRj aCwgTU9OSVRPUl9SRVFfQVVUSDJfUkVBRF9CQU5ORVIsIDEpOworIAorICNpZmRlZiBVU0VfUEFN CitAQCAtOTk0LDYgKzEwMDMsMjYgQEAga2V5X2Jhc2VfdHlwZV9tYXRjaChjb25zdCBjaGFyICpt ZXRob2QsIGNvbnN0IHN0cnVjdCBzc2hrZXkgKmtleSwKKyAJcmV0dXJuIGZvdW5kOworIH0KKyAK KysjaWZkZWYgV0lUSF9TRUxJTlVYCisraW50CisrbW1fYW5zd2VyX2F1dGhyb2xlKHN0cnVjdCBz c2ggKnNzaCwgaW50IHNvY2ssIHN0cnVjdCBzc2hidWYgKm0pCisreworKwlpbnQgcjsKKysJbW9u aXRvcl9wZXJtaXRfYXV0aGVudGljYXRpb25zKDEpOworKworKwlpZiAoKHIgPSBzc2hidWZfZ2V0 X2NzdHJpbmcobSwgJmF1dGhjdHh0LT5yb2xlLCBOVUxMKSkgIT0gMCkKKysJCWZhdGFsX2YoImJ1 ZmZlciBlcnJvcjogJXMiLCBzc2hfZXJyKHIpKTsKKysJZGVidWczX2YoInJvbGU9JXMiLCBhdXRo Y3R4dC0+cm9sZSk7CisrCisrCWlmIChzdHJsZW4oYXV0aGN0eHQtPnJvbGUpID09IDApIHsKKysJ CWZyZWUoYXV0aGN0eHQtPnJvbGUpOworKwkJYXV0aGN0eHQtPnJvbGUgPSBOVUxMOworKwl9Cisr CisrCXJldHVybiAoMCk7CisrfQorKyNlbmRpZgorKworIGludAorIG1tX2Fuc3dlcl9hdXRocGFz c3dvcmQoc3RydWN0IHNzaCAqc3NoLCBpbnQgc29jaywgc3RydWN0IHNzaGJ1ZiAqbSkKKyB7CitA QCAtMTM2Niw3ICsxMzk1LDcgQEAgbW9uaXRvcl92YWxpZF91c2VyYmxvYihzdHJ1Y3Qgc3NoICpz c2gsIGNvbnN0IHVfY2hhciAqZGF0YSwgdV9pbnQgZGF0YWxlbikKKyAJc3RydWN0IHNzaGJ1ZiAq YjsKKyAJc3RydWN0IHNzaGtleSAqaG9zdGtleSA9IE5VTEw7CisgCWNvbnN0IHVfY2hhciAqcDsK Ky0JY2hhciAqdXNlcnN0eWxlLCAqY3A7CisrCWNoYXIgKnVzZXJzdHlsZSwgKnMsICpjcDsKKyAJ c2l6ZV90IGxlbjsKKyAJdV9jaGFyIHR5cGU7CisgCWludCBob3N0Ym91bmQgPSAwLCByLCBmYWls ID0gMDsKK0BAIC0xMzk3LDYgKzE0MjYsOCBAQCBtb25pdG9yX3ZhbGlkX3VzZXJibG9iKHN0cnVj dCBzc2ggKnNzaCwgY29uc3QgdV9jaGFyICpkYXRhLCB1X2ludCBkYXRhbGVuKQorIAkJZmFpbCsr OworIAlpZiAoKHIgPSBzc2hidWZfZ2V0X2NzdHJpbmcoYiwgJmNwLCBOVUxMKSkgIT0gMCkKKyAJ CWZhdGFsX2ZyKHIsICJwYXJzZSB1c2Vyc3R5bGUiKTsKKysJaWYgKChzID0gc3RyY2hyKGNwLCAn LycpKSAhPSBOVUxMKQorKwkJKnMgPSAnXDAnOworIAl4YXNwcmludGYoJnVzZXJzdHlsZSwgIiVz JXMlcyIsIGF1dGhjdHh0LT51c2VyLAorIAkgICAgYXV0aGN0eHQtPnN0eWxlID8gIjoiIDogIiIs CisgCSAgICBhdXRoY3R4dC0+c3R5bGUgPyBhdXRoY3R4dC0+c3R5bGUgOiAiIik7CitAQCAtMTQ0 Nyw3ICsxNDc4LDcgQEAgbW9uaXRvcl92YWxpZF9ob3N0YmFzZWRibG9iKGNvbnN0IHVfY2hhciAq ZGF0YSwgdV9pbnQgZGF0YWxlbiwKKyB7CisgCXN0cnVjdCBzc2hidWYgKmI7CisgCWNvbnN0IHVf Y2hhciAqcDsKKy0JY2hhciAqY3AsICp1c2Vyc3R5bGU7CisrCWNoYXIgKmNwLCAqcywgKnVzZXJz dHlsZTsKKyAJc2l6ZV90IGxlbjsKKyAJaW50IHIsIGZhaWwgPSAwOworIAl1X2NoYXIgdHlwZTsK K0BAIC0xNDY4LDYgKzE0OTksOCBAQCBtb25pdG9yX3ZhbGlkX2hvc3RiYXNlZGJsb2IoY29uc3Qg dV9jaGFyICpkYXRhLCB1X2ludCBkYXRhbGVuLAorIAkJZmFpbCsrOworIAlpZiAoKHIgPSBzc2hi dWZfZ2V0X2NzdHJpbmcoYiwgJmNwLCBOVUxMKSkgIT0gMCkKKyAJCWZhdGFsX2ZyKHIsICJwYXJz ZSB1c2Vyc3R5bGUiKTsKKysJaWYgKChzID0gc3RyY2hyKGNwLCAnLycpKSAhPSBOVUxMKQorKwkJ KnMgPSAnXDAnOworIAl4YXNwcmludGYoJnVzZXJzdHlsZSwgIiVzJXMlcyIsIGF1dGhjdHh0LT51 c2VyLAorIAkgICAgYXV0aGN0eHQtPnN0eWxlID8gIjoiIDogIiIsCisgCSAgICBhdXRoY3R4dC0+ c3R5bGUgPyBhdXRoY3R4dC0+c3R5bGUgOiAiIik7CitkaWZmIC0tZ2l0IGEvbW9uaXRvci5oIGIv bW9uaXRvci5oCitpbmRleCBmZTBiMDBiMmUuLjFiNDZlNzk0ZSAxMDA2NDQKKy0tLSBhL21vbml0 b3IuaAorKysrIGIvbW9uaXRvci5oCitAQCAtNTcsNiArNTcsMTAgQEAgZW51bSBtb25pdG9yX3Jl cXR5cGUgeworIAlNT05JVE9SX1JFUV9URVJNID0gNTAsCisgCU1PTklUT1JfUkVRX1NUQVRFID0g NTEsIE1PTklUT1JfQU5TX1NUQVRFID0gNTIsCisgCisrI2lmZGVmIFdJVEhfU0VMSU5VWAorKwlN T05JVE9SX1JFUV9BVVRIUk9MRSA9IDgwLAorKyNlbmRpZgorKworIAlNT05JVE9SX1JFUV9QQU1f U1RBUlQgPSAxMDAsCisgCU1PTklUT1JfUkVRX1BBTV9BQ0NPVU5UID0gMTAyLCBNT05JVE9SX0FO U19QQU1fQUNDT1VOVCA9IDEwMywKKyAJTU9OSVRPUl9SRVFfUEFNX0lOSVRfQ1RYID0gMTA0LCBN T05JVE9SX0FOU19QQU1fSU5JVF9DVFggPSAxMDUsCitkaWZmIC0tZ2l0IGEvbW9uaXRvcl93cmFw LmMgYi9tb25pdG9yX3dyYXAuYworaW5kZXggZTJiOWEyODAyLi5iNWFlYjhiMmMgMTAwNjQ0Cist LS0gYS9tb25pdG9yX3dyYXAuYworKysrIGIvbW9uaXRvcl93cmFwLmMKK0BAIC00MzgsNiArNDM4 LDI3IEBAIG1tX2luZm9ybV9hdXRoc2VydihjaGFyICpzZXJ2aWNlLCBjaGFyICpzdHlsZSkKKyAJ c3NoYnVmX2ZyZWUobSk7CisgfQorIAorKy8qIEluZm9ybSB0aGUgcHJpdmlsZWdlZCBwcm9jZXNz IGFib3V0IHJvbGUgKi8KKysKKysjaWZkZWYgV0lUSF9TRUxJTlVYCisrdm9pZAorK21tX2luZm9y bV9hdXRocm9sZShjaGFyICpyb2xlKQorK3sKKysJaW50IHI7CisrCXN0cnVjdCBzc2hidWYgKm07 CisrCisrCWRlYnVnM19mKCJlbnRlcmluZyIpOworKworKwlpZiAoKG0gPSBzc2hidWZfbmV3KCkp ID09IE5VTEwpCisrCQlmYXRhbF9mKCJzc2hidWZfbmV3IGZhaWxlZCIpOworKwlpZiAoKHIgPSBz c2hidWZfcHV0X2NzdHJpbmcobSwgcm9sZSA/IHJvbGUgOiAiIikpICE9IDApCisrCQlmYXRhbF9m KCJidWZmZXIgZXJyb3I6ICVzIiwgc3NoX2VycihyKSk7CisrCW1tX3JlcXVlc3Rfc2VuZChwbW9u aXRvci0+bV9yZWN2ZmQsIE1PTklUT1JfUkVRX0FVVEhST0xFLCBtKTsKKysKKysJc3NoYnVmX2Zy ZWUobSk7CisrfQorKyNlbmRpZgorKworIC8qIERvIHRoZSBwYXNzd29yZCBhdXRoZW50aWNhdGlv biAqLworIGludAorIG1tX2F1dGhfcGFzc3dvcmQoc3RydWN0IHNzaCAqc3NoLCBjaGFyICpwYXNz d29yZCkKK2RpZmYgLS1naXQgYS9tb25pdG9yX3dyYXAuaCBiL21vbml0b3Jfd3JhcC5oCitpbmRl eCBmNDM3NTliMjEuLjMwNTg1MTg3YyAxMDA2NDQKKy0tLSBhL21vbml0b3Jfd3JhcC5oCisrKysg Yi9tb25pdG9yX3dyYXAuaAorQEAgLTUxLDYgKzUxLDkgQEAgaW50IG1tX3NzaGtleV9zaWduKHN0 cnVjdCBzc2ggKiwgc3RydWN0IHNzaGtleSAqLCB1X2NoYXIgKiosIHNpemVfdCAqLAorICAgICBj b25zdCB1X2NoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwKKyAgICAg Y29uc3QgY2hhciAqLCB1X2ludCBjb21wYXQpOworIHZvaWQgbW1faW5mb3JtX2F1dGhzZXJ2KGNo YXIgKiwgY2hhciAqKTsKKysjaWZkZWYgV0lUSF9TRUxJTlVYCisrdm9pZCBtbV9pbmZvcm1fYXV0 aHJvbGUoY2hhciAqKTsKKysjZW5kaWYKKyBzdHJ1Y3QgcGFzc3dkICptbV9nZXRwd25hbWFsbG93 KHN0cnVjdCBzc2ggKiwgY29uc3QgY2hhciAqKTsKKyBjaGFyICptbV9hdXRoMl9yZWFkX2Jhbm5l cih2b2lkKTsKKyBpbnQgbW1fYXV0aF9wYXNzd29yZChzdHJ1Y3Qgc3NoICosIGNoYXIgKik7Cist LSAKKzIuNTUuMAorCgpkaWZmIC0tZ2l0IGEvMDAwMi1JbXBsZW1lbnQtU0VMaW51eC1lbnZpcm9u bWVudC12YXJpYWJsZS1zZXR1cC1mb3Itc3ViLnBhdGNoIGIvMDAwMi1JbXBsZW1lbnQtU0VMaW51 eC1lbnZpcm9ubWVudC12YXJpYWJsZS1zZXR1cC1mb3Itc3ViLnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCBlNTRmZjAzLi4wMDAwMDAwCi0tLSBhLzAwMDItSW1wbGVtZW50LVNF TGludXgtZW52aXJvbm1lbnQtdmFyaWFibGUtc2V0dXAtZm9yLXN1Yi5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDY3NyArMCwwIEBACi1Gcm9tIDhiMjU2MTQxMzJjNzgxMTY0OThhMmI5NDYzNGIy YjhiYWNmODJmNWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEbWl0cnkgQmVseWF2 c2tpeSA8YmVsZG1pdEBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDEzIEFwciAyMDI2IDE0OjA2OjQ3 ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMDIvNTRdIEltcGxlbWVudCBTRUxpbnV4IGVudmlyb25t ZW50IHZhcmlhYmxlIHNldHVwIGZvcgotIHN1YnByb2Nlc3MgZXhlY3V0aW9uCi0KLW9wZW5zc2gt Ni42cDEtc2VsaW51eC1lbnYtc2V0dXAKLQotSW1wbGVtZW50IGNvbXByZWhlbnNpdmUgU0VMaW51 eCBjb250ZXh0IG1hbmFnZW1lbnQgZm9yIHNzaGQsIGluY2x1ZGluZwotcm9sZSBzZWxlY3Rpb24s IE1MUyBsZXZlbCB2YWxpZGF0aW9uLCBhbmQgZW52aXJvbm1lbnQgdmFyaWFibGUgc2V0dXAgZm9y Ci1wYW1fc2VsaW51eCBpbnRlZ3JhdGlvbi4KLQotQ2hhbmdlczoKLS0gb3BlbmJzZC1jb21wYXQv cG9ydC1saW51eC1zc2hkLmM6IE5ldyBmaWxlIHdpdGggU0VMaW51eCBjb250ZXh0Ci0gIG1hbmFn ZW1lbnQgZnVuY3Rpb25zIGluY2x1ZGluZyBzc2hkX3NlbGludXhfZ2V0Y3R4YnluYW1lKCksCi0g IHNzaGRfc2VsaW51eF9zZXR1cF9leGVjX2NvbnRleHQoKSwgYW5kIGVudmlyb25tZW50IHZhcmlh YmxlIHNldHVwCi0tIG9wZW5ic2QtY29tcGF0L01ha2VmaWxlLmluOiBBZGQgcG9ydC1saW51eC1z c2hkLm8gdG8gYnVpbGQKLS0gb3BlbmJzZC1jb21wYXQvcG9ydC1saW51eC5jOiBSZW1vdmUgb2xk IHNzaF9zZWxpbnV4X3NldHVwX2V4ZWNfY29udGV4dCgpLAotICB1cGRhdGUgc3NoX3NlbGludXhf c2V0dXBfcHR5KCkgdG8gdXNlIGdldGV4ZWNjb24oKQotLSBvcGVuYnNkLWNvbXBhdC9wb3J0LWxp bnV4Lmg6IFVwZGF0ZSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgZm9yCi0gIHNzaGQtc3BlY2lmaWMg U0VMaW51eCBmdW5jdGlvbnMKLS0gcGxhdGZvcm0uYzogUmVwbGFjZSBzc2hfc2VsaW51eF9zZXR1 cF9leGVjX2NvbnRleHQoKSB3aXRoCi0gIHNzaGRfc2VsaW51eF9zZXR1cF9leGVjX2NvbnRleHQo KSBhbmQgcGFzcyBhZGRpdGlvbmFsIHBhcmFtZXRlcnMKLSAgKGluZXRkX2ZsYWcsIGRvX3BhbV9w dXRlbnYsIHRoZV9hdXRoY3R4dCwgb3B0aW9ucy51c2VfcGFtKQotLSBzc2hkLXNlc3Npb24uYzog QWRkIFNFTGludXggZXhlY3V0aW9uIGNvbnRleHQgc2V0dXAgY2FsbCBpbiBtYWluKCkKLS0gYXV0 aC1wYW0uYzogQ2hhbmdlIGRvX3BhbV9wdXRlbnYoKSB2YWx1ZSBwYXJhbWV0ZXIgdG8gY29uc3Qg Y2hhciAqCi0tIGF1dGgtcGFtLmg6IFVwZGF0ZSBkb19wYW1fcHV0ZW52KCkgc2lnbmF0dXJlIGFu ZCBhZGQgZG9fcGFtX2NoYXV0aHRvaygpCi0gIGRlY2xhcmF0aW9uCi0KLUNvLUF1dGhvcmVkLUJ5 OiBDbGF1ZGUgU29ubmV0IDQuNSA8bm9yZXBseUBhbnRocm9waWMuY29tPgotLS0tCi0gYXV0aC1w YW0uYyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KLSBhdXRoLXBhbS5oICAgICAgICAg ICAgICAgICAgICAgICB8ICAgMyArLQotIG9wZW5ic2QtY29tcGF0L01ha2VmaWxlLmluICAgICAg IHwgICAzICstCi0gb3BlbmJzZC1jb21wYXQvcG9ydC1saW51eC1zc2hkLmMgfCA0NTQgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwotIG9wZW5ic2QtY29tcGF0L3BvcnQtbGludXguYyAg ICAgIHwgIDM3ICstLQotIG9wZW5ic2QtY29tcGF0L3BvcnQtbGludXguaCAgICAgIHwgICA1ICst Ci0gcGxhdGZvcm0uYyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDggKy0KLSBzc2hkLXNlc3Np b24uYyAgICAgICAgICAgICAgICAgICB8ICAgNyArLQotIDggZmlsZXMgY2hhbmdlZCwgNDgwIGlu c2VydGlvbnMoKyksIDM5IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBvcGVuYnNk LWNvbXBhdC9wb3J0LWxpbnV4LXNzaGQuYwotCi1kaWZmIC0tZ2l0IGEvYXV0aC1wYW0uYyBiL2F1 dGgtcGFtLmMKLWluZGV4IDI5NjA3ZTA0MS4uM2YzNDJmOWUxIDEwMDY0NAotLS0tIGEvYXV0aC1w YW0uYwotKysrIGIvYXV0aC1wYW0uYwotQEAgLTExNDUsNyArMTE0NSw3IEBAIGlzX3BhbV9zZXNz aW9uX29wZW4odm9pZCkKLSAgKiBkdXJpbmcgdGhlIHNzaCBhdXRoZW50aWNhdGlvbiBwcm9jZXNz LgotICAqLwotIGludAotLWRvX3BhbV9wdXRlbnYoY2hhciAqbmFtZSwgY2hhciAqdmFsdWUpCi0r ZG9fcGFtX3B1dGVudihjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKLSB7Ci0gCWludCBy ZXQgPSAxOwotIAljaGFyICpjb21wb3VuZDsKLWRpZmYgLS1naXQgYS9hdXRoLXBhbS5oIGIvYXV0 aC1wYW0uaAotaW5kZXggNDkxMzM2NzAxLi5mOTE2N2NmYzggMTAwNjQ0Ci0tLS0gYS9hdXRoLXBh bS5oCi0rKysgYi9hdXRoLXBhbS5oCi1AQCAtMzIsNyArMzIsOCBAQCB2b2lkIGZpbmlzaF9wYW0o dm9pZCk7Ci0gdV9pbnQgZG9fcGFtX2FjY291bnQodm9pZCk7Ci0gdm9pZCBkb19wYW1fc2Vzc2lv bihzdHJ1Y3Qgc3NoICopOwotIHZvaWQgZG9fcGFtX3NldGNyZWQodm9pZCk7Ci0taW50IGRvX3Bh bV9wdXRlbnYoY2hhciAqLCBjaGFyICopOwotK3ZvaWQgZG9fcGFtX2NoYXV0aHRvayh2b2lkKTsK LStpbnQgZG9fcGFtX3B1dGVudihjaGFyICosIGNvbnN0IGNoYXIgKik7Ci0gY2hhciAqKiBmZXRj aF9wYW1fZW52aXJvbm1lbnQodm9pZCk7Ci0gY2hhciAqKiBmZXRjaF9wYW1fY2hpbGRfZW52aXJv bm1lbnQodm9pZCk7Ci0gdm9pZCBmcmVlX3BhbV9lbnZpcm9ubWVudChjaGFyICoqKTsKLWRpZmYg LS1naXQgYS9vcGVuYnNkLWNvbXBhdC9NYWtlZmlsZS5pbiBiL29wZW5ic2QtY29tcGF0L01ha2Vm aWxlLmluCi1pbmRleCA1M2M4N2RiNmQuLjM5NTMxYWU3NyAxMDA2NDQKLS0tLSBhL29wZW5ic2Qt Y29tcGF0L01ha2VmaWxlLmluCi0rKysgYi9vcGVuYnNkLWNvbXBhdC9NYWtlZmlsZS5pbgotQEAg LTEwMiw3ICsxMDIsOCBAQCBQT1JUUz0JcG9ydC1haXgubyBcCi0gCXBvcnQtcHJuZ2QubyBcCi0g CXBvcnQtc29sYXJpcy5vIFwKLSAJcG9ydC1uZXQubyBcCi0tCXBvcnQtdXcubwotKwlwb3J0LXV3 Lm8gXAotKwlwb3J0LWxpbnV4LXNzaGQubwotIAotIC5jLm86Ci0gCSQoQ0MpICQoQ0ZMQUdTX05P UElFKSAkKFBJQ0ZMQUcpICQoQ1BQRkxBR1MpIC1jICQ8Ci1kaWZmIC0tZ2l0IGEvb3BlbmJzZC1j b21wYXQvcG9ydC1saW51eC1zc2hkLmMgYi9vcGVuYnNkLWNvbXBhdC9wb3J0LWxpbnV4LXNzaGQu YwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMC4uYWIwODNhNjM3Ci0tLS0g L2Rldi9udWxsCi0rKysgYi9vcGVuYnNkLWNvbXBhdC9wb3J0LWxpbnV4LXNzaGQuYwotQEAgLTAs MCArMSw0NTQgQEAKLSsvKgotKyAqIENvcHlyaWdodCAoYykgMjAwNSBEYW5pZWwgV2Fsc2ggPGR3 YWxzaEByZWRoYXQuY29tPgotKyAqIENvcHlyaWdodCAoYykgMjAxNCBQZXRyIExhdXRyYmFjaCA8 cGxhdXRyYmFAcmVkaGF0LmNvbT4KLSsgKgotKyAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBt b2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQotKyAqIHB1cnBvc2Ug d2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUg YWJvdmUKLSsgKiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFw cGVhciBpbiBhbGwgY29waWVzLgotKyAqCi0rICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB UyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTCi0rICogV0lUSCBS RUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBP RgotKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF IEFVVEhPUiBCRSBMSUFCTEUgRk9SCi0rICogQU5ZIFNQRUNJQUwsIERJUkVDVCwgSU5ESVJFQ1Qs IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUwotKyAqIFdIQVRTT0VWRVIg UkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBB TgotKyAqIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBB Q1RJT04sIEFSSVNJTkcgT1VUIE9GCi0rICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0Ug T1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KLSsgKi8KLSsKLSsvKgotKyAqIExpbnV4 LXNwZWNpZmljIHBvcnRhYmlsaXR5IGNvZGUgLSBqdXN0IFNFTGludXggc3VwcG9ydCBmb3Igc3No ZCBhdCBwcmVzZW50Ci0rICovCi0rCi0rI2luY2x1ZGUgImluY2x1ZGVzLmgiCi0rCi0rI2lmIGRl ZmluZWQoV0lUSF9TRUxJTlVYKSB8fCBkZWZpbmVkKExJTlVYX09PTV9BREpVU1QpCi0rI2luY2x1 ZGUgPGVycm5vLmg+Ci0rI2luY2x1ZGUgPHN0ZGFyZy5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4K LSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rCi0rI2luY2x1ZGUg ImxvZy5oIgotKyNpbmNsdWRlICJ4bWFsbG9jLmgiCi0rI2luY2x1ZGUgIm1pc2MuaCIgICAgICAv KiBzZXJ2Y29uZi5oIG5lZWRzIG1pc2MuaCBmb3Igc3RydWN0IEZvcndhcmRPcHRpb25zICovCi0r I2luY2x1ZGUgInNlcnZjb25mLmgiCi0rI2luY2x1ZGUgInBvcnQtbGludXguaCIKLSsjaW5jbHVk ZSAic3Noa2V5LmgiCi0rI2luY2x1ZGUgImhvc3RmaWxlLmgiCi0rI2luY2x1ZGUgImF1dGguaCIK LSsKLSsjaWZkZWYgV0lUSF9TRUxJTlVYCi0rI2luY2x1ZGUgPHNlbGludXgvc2VsaW51eC5oPgot KyNpbmNsdWRlIDxzZWxpbnV4L2NvbnRleHQuaD4KLSsjaW5jbHVkZSA8c2VsaW51eC9nZXRfY29u dGV4dF9saXN0Lmg+Ci0rI2luY2x1ZGUgPHNlbGludXgvZ2V0X2RlZmF1bHRfdHlwZS5oPgotKwot KyNpZmRlZiBIQVZFX0xJTlVYX0FVRElUCi0rI2luY2x1ZGUgPGxpYmF1ZGl0Lmg+Ci0rI2luY2x1 ZGUgPHVuaXN0ZC5oPgotKyNlbmRpZgotKwotKy8qIFdyYXBwZXIgYXJvdW5kIGlzX3NlbGludXhf ZW5hYmxlZCgpIHRvIGxvZyBpdHMgcmV0dXJuIHZhbHVlIG9uY2Ugb25seSAqLwotK2ludAotK3Nz aGRfc2VsaW51eF9lbmFibGVkKHZvaWQpCi0rewotKwlzdGF0aWMgaW50IGVuYWJsZWQgPSAtMTsK LSsKLSsJaWYgKGVuYWJsZWQgPT0gLTEpIHsKLSsJCWVuYWJsZWQgPSAoaXNfc2VsaW51eF9lbmFi bGVkKCkgPT0gMSk7Ci0rCQlkZWJ1ZygiU0VMaW51eCBzdXBwb3J0ICVzIiwgZW5hYmxlZCA/ICJl bmFibGVkIiA6ICJkaXNhYmxlZCIpOwotKwl9Ci0rCi0rCXJldHVybiAoZW5hYmxlZCk7Ci0rfQot KwotKy8qIFNlbmQgYXVkaXQgbWVzc2FnZSAqLwotK3N0YXRpYyBpbnQKLStzc2hkX3NlbGludXhf c2VuZF9hdWRpdF9tZXNzYWdlKGludCBzdWNjZXNzLCBzZWN1cml0eV9jb250ZXh0X3QgZGVmYXVs dF9jb250ZXh0LAotKwkJICAgICAgIHNlY3VyaXR5X2NvbnRleHRfdCBzZWxlY3RlZF9jb250ZXh0 KQotK3sKLSsJaW50IHJjPTA7Ci0rI2lmZGVmIEhBVkVfTElOVVhfQVVESVQKLSsJY2hhciAqbXNn ID0gTlVMTDsKLSsJaW50IGF1ZGl0X2ZkID0gYXVkaXRfb3BlbigpOwotKwlzZWN1cml0eV9jb250 ZXh0X3QgZGVmYXVsdF9yYXc9TlVMTDsKLSsJc2VjdXJpdHlfY29udGV4dF90IHNlbGVjdGVkX3Jh dz1OVUxMOwotKwlyYyA9IC0xOwotKwlpZiAoYXVkaXRfZmQgPCAwKSB7Ci0rCQlpZiAoZXJybm8g PT0gRUlOVkFMIHx8IGVycm5vID09IEVQUk9UT05PU1VQUE9SVCB8fAotKwkJCQkJZXJybm8gPT0g RUFGTk9TVVBQT1JUKQotKwkJCQlyZXR1cm4gMDsgLyogTm8gYXVkaXQgc3VwcG9ydCBpbiBrZXJu ZWwgKi8KLSsJCWVycm9yKCJFcnJvciBjb25uZWN0aW5nIHRvIGF1ZGl0IHN5c3RlbS4iKTsKLSsJ CXJldHVybiByYzsKLSsJfQotKwlpZiAoc2VsaW51eF90cmFuc190b19yYXdfY29udGV4dChkZWZh dWx0X2NvbnRleHQsICZkZWZhdWx0X3JhdykgPCAwKSB7Ci0rCQllcnJvcigiRXJyb3IgdHJhbnNs YXRpbmcgZGVmYXVsdCBjb250ZXh0LiIpOwotKwkJZGVmYXVsdF9yYXcgPSBOVUxMOwotKwl9Ci0r CWlmIChzZWxpbnV4X3RyYW5zX3RvX3Jhd19jb250ZXh0KHNlbGVjdGVkX2NvbnRleHQsICZzZWxl Y3RlZF9yYXcpIDwgMCkgewotKwkJZXJyb3IoIkVycm9yIHRyYW5zbGF0aW5nIHNlbGVjdGVkIGNv bnRleHQuIik7Ci0rCQlzZWxlY3RlZF9yYXcgPSBOVUxMOwotKwl9Ci0rCWlmIChhc3ByaW50Zigm bXNnLCAic3NoZDogZGVmYXVsdC1jb250ZXh0PSVzIHNlbGVjdGVkLWNvbnRleHQ9JXMiLAotKwkJ ICAgICBkZWZhdWx0X3JhdyA/IGRlZmF1bHRfcmF3IDogKGRlZmF1bHRfY29udGV4dCA/IGRlZmF1 bHRfY29udGV4dDogIj8iKSwKLSsJCSAgICAgc2VsZWN0ZWRfY29udGV4dCA/IHNlbGVjdGVkX3Jh dyA6IChzZWxlY3RlZF9jb250ZXh0ID8gc2VsZWN0ZWRfY29udGV4dCA6Ij8iKSkgPCAwKSB7Ci0r CQllcnJvcigiRXJyb3IgYWxsb2NhdGluZyBtZW1vcnkuIik7Ci0rCQlnb3RvIG91dDsKLSsJfQot KwlpZiAoYXVkaXRfbG9nX3VzZXJfbWVzc2FnZShhdWRpdF9mZCwgQVVESVRfVVNFUl9ST0xFX0NI QU5HRSwKLSsJCQkJICAgbXNnLCBOVUxMLCBOVUxMLCBOVUxMLCBzdWNjZXNzKSA8PSAwKSB7Ci0r CQllcnJvcigiRXJyb3Igc2VuZGluZyBhdWRpdCBtZXNzYWdlLiIpOwotKwkJZ290byBvdXQ7Ci0r CX0KLSsJcmMgPSAwOwotKyAgICAgIG91dDoKLSsJZnJlZShtc2cpOwotKwlmcmVlY29uKGRlZmF1 bHRfcmF3KTsKLSsJZnJlZWNvbihzZWxlY3RlZF9yYXcpOwotKwljbG9zZShhdWRpdF9mZCk7Ci0r I2VuZGlmCi0rCXJldHVybiByYzsKLSt9Ci0rCi0rc3RhdGljIGludAotK21sc19yYW5nZV9hbGxv d2VkKHNlY3VyaXR5X2NvbnRleHRfdCBzcmMsIHNlY3VyaXR5X2NvbnRleHRfdCBkc3QpCi0rewot KwlzdHJ1Y3QgYXZfZGVjaXNpb24gYXZkOwotKwlpbnQgcmV0dmFsOwotKwlhY2Nlc3NfdmVjdG9y X3QgYml0OwotKwlzZWN1cml0eV9jbGFzc190IGNsYXNzOwotKwotKwlkZWJ1Z19mKCJzcmM6JXMg ZHN0OiVzIiwgc3JjLCBkc3QpOwotKwljbGFzcyA9IHN0cmluZ190b19zZWN1cml0eV9jbGFzcygi Y29udGV4dCIpOwotKwlpZiAoIWNsYXNzKSB7Ci0rCQllcnJvcigic3RyaW5nX3RvX3NlY3VyaXR5 X2NsYXNzIGZhaWxlZCB0byB0cmFuc2xhdGUgc2VjdXJpdHkgY2xhc3MgY29udGV4dCIpOwotKwkJ cmV0dXJuIDE7Ci0rCX0KLSsJYml0ID0gc3RyaW5nX3RvX2F2X3Blcm0oY2xhc3MsICJjb250YWlu cyIpOwotKwlpZiAoIWJpdCkgewotKwkJZXJyb3IoInN0cmluZ190b19hdl9wZXJtIGZhaWxlZCB0 byB0cmFuc2xhdGUgYXYgcGVybSBjb250YWlucyIpOwotKwkJcmV0dXJuIDE7Ci0rCX0KLSsJcmV0 dmFsID0gc2VjdXJpdHlfY29tcHV0ZV9hdihzcmMsIGRzdCwgY2xhc3MsIGJpdCwgJmF2ZCk7Ci0r CWlmIChyZXR2YWwgfHwgKChiaXQgJiBhdmQuYWxsb3dlZCkgIT0gYml0KSkKLSsJCXJldHVybiAw OwotKwotKwlyZXR1cm4gMTsKLSt9Ci0rCi0rc3RhdGljIGludAotK2dldF91c2VyX2NvbnRleHQo Y29uc3QgY2hhciAqc2VuYW1lLCBjb25zdCBjaGFyICpyb2xlLCBjb25zdCBjaGFyICpsdmwsCi0r CXNlY3VyaXR5X2NvbnRleHRfdCAqc2MpIHsKLSsjaWZkZWYgSEFWRV9HRVRfREVGQVVMVF9DT05U RVhUX1dJVEhfTEVWRUwKLSsJaWYgKGx2bCA9PSBOVUxMIHx8IGx2bFswXSA9PSAnXDAnIHx8IGdl dF9kZWZhdWx0X2NvbnRleHRfd2l0aF9sZXZlbChzZW5hbWUsIGx2bCwgTlVMTCwgc2MpICE9IDAp IHsKLSsJICAgICAgICAvKiBVc2VyIG1heSBoYXZlIHJlcXVlc3RlZCBhIGxldmVsIGNvbXBsZXRl bHkgb3V0c2lkZSBvZiBoaXMgCi0rCSAgICAgICAgICAgYWxsb3dlZCByYW5nZS4gV2UgZ2V0IGEg Y29udGV4dCBqdXN0IGZvciBhdWRpdGluZyBhcyB0aGUKLSsJICAgICAgICAgICByYW5nZSBjaGVj ayBiZWxvdyB3aWxsIGNlcnRhaW5seSBmYWlsIGZvciBkZWZhdWx0IGNvbnRleHQuICovCi0rI2Vu ZGlmCi0rCQlpZiAoZ2V0X2RlZmF1bHRfY29udGV4dChzZW5hbWUsIE5VTEwsIHNjKSAhPSAwKSB7 Ci0rCQkJKnNjID0gTlVMTDsKLSsJCQlyZXR1cm4gLTE7Ci0rCQl9Ci0rI2lmZGVmIEhBVkVfR0VU X0RFRkFVTFRfQ09OVEVYVF9XSVRIX0xFVkVMCi0rCX0KLSsjZW5kaWYKLSsJaWYgKHJvbGUgIT0g TlVMTCAmJiByb2xlWzBdKSB7Ci0rCQljb250ZXh0X3QgY29uOwotKwkJY2hhciAqdHlwZT1OVUxM OwotKwkJaWYgKGdldF9kZWZhdWx0X3R5cGUocm9sZSwgJnR5cGUpICE9IDApIHsKLSsJCQllcnJv cigiZ2V0X2RlZmF1bHRfdHlwZTogZmFpbGVkIHRvIGdldCBkZWZhdWx0IHR5cGUgZm9yICclcyci LAotKwkJCQlyb2xlKTsKLSsJCQlnb3RvIG91dDsKLSsJCX0KLSsJCWNvbiA9IGNvbnRleHRfbmV3 KCpzYyk7Ci0rCQlpZiAoIWNvbikgewotKwkJCWdvdG8gb3V0OwotKwkJfQotKwkJY29udGV4dF9y b2xlX3NldChjb24sIHJvbGUpOwotKwkJY29udGV4dF90eXBlX3NldChjb24sIHR5cGUpOwotKwkJ ZnJlZWNvbigqc2MpOwotKwkJKnNjID0gc3RyZHVwKGNvbnRleHRfc3RyKGNvbikpOwotKwkJY29u dGV4dF9mcmVlKGNvbik7Ci0rCQlpZiAoISpzYykKLSsJCQlyZXR1cm4gLTE7Ci0rCX0KLSsjaWZk ZWYgSEFWRV9HRVRfREVGQVVMVF9DT05URVhUX1dJVEhfTEVWRUwKLSsJaWYgKGx2bCAhPSBOVUxM ICYmIGx2bFswXSkgewotKwkJLyogdmVyaWZ5IHRoYXQgdGhlIHJlcXVlc3RlZCByYW5nZSBpcyBv YnRhaW5lZCAqLwotKwkJY29udGV4dF90IGNvbjsKLSsJCXNlY3VyaXR5X2NvbnRleHRfdCBvYnRh aW5lZF9yYXc7Ci0rCQlzZWN1cml0eV9jb250ZXh0X3QgcmVxdWVzdGVkX3JhdzsKLSsJCWNvbiA9 IGNvbnRleHRfbmV3KCpzYyk7Ci0rCQlpZiAoIWNvbikgewotKwkJCWdvdG8gb3V0OwotKwkJfQot KwkJY29udGV4dF9yYW5nZV9zZXQoY29uLCBsdmwpOwotKwkJaWYgKHNlbGludXhfdHJhbnNfdG9f cmF3X2NvbnRleHQoKnNjLCAmb2J0YWluZWRfcmF3KSA8IDApIHsKLSsJCQljb250ZXh0X2ZyZWUo Y29uKTsKLSsJCQlnb3RvIG91dDsKLSsJCX0KLSsJCWlmIChzZWxpbnV4X3RyYW5zX3RvX3Jhd19j b250ZXh0KGNvbnRleHRfc3RyKGNvbiksICZyZXF1ZXN0ZWRfcmF3KSA8IDApIHsKLSsJCQlmcmVl Y29uKG9idGFpbmVkX3Jhdyk7Ci0rCQkJY29udGV4dF9mcmVlKGNvbik7Ci0rCQkJZ290byBvdXQ7 Ci0rCQl9Ci0rCi0rCQlkZWJ1ZygiZ2V0X3VzZXJfY29udGV4dDogb2J0YWluZWQgY29udGV4dCAn JXMnIHJlcXVlc3RlZCBjb250ZXh0ICclcyciLAotKwkJCW9idGFpbmVkX3JhdywgcmVxdWVzdGVk X3Jhdyk7Ci0rCQlpZiAoc3RyY21wKG9idGFpbmVkX3JhdywgcmVxdWVzdGVkX3JhdykpIHsKLSsJ CQkvKiBzZXQgdGhlIGNvbnRleHQgdG8gdGhlIHJlYWwgcmVxdWVzdGVkIG9uZSBidXQgZmFpbCAq LwotKwkJCWZyZWVjb24ocmVxdWVzdGVkX3Jhdyk7Ci0rCQkJZnJlZWNvbihvYnRhaW5lZF9yYXcp OwotKwkJCWZyZWVjb24oKnNjKTsKLSsJCQkqc2MgPSBzdHJkdXAoY29udGV4dF9zdHIoY29uKSk7 Ci0rCQkJY29udGV4dF9mcmVlKGNvbik7Ci0rCQkJcmV0dXJuIC0xOwotKwkJfQotKwkJZnJlZWNv bihyZXF1ZXN0ZWRfcmF3KTsKLSsJCWZyZWVjb24ob2J0YWluZWRfcmF3KTsKLSsJCWNvbnRleHRf ZnJlZShjb24pOwotKwl9Ci0rI2VuZGlmCi0rCXJldHVybiAwOwotKyAgICAgIG91dDoKLSsJZnJl ZWNvbigqc2MpOwotKwkqc2MgPSBOVUxMOwotKwlyZXR1cm4gLTE7Ci0rfQotKwotK3N0YXRpYyB2 b2lkCi0rc3NoX3NlbGludXhfZ2V0X3JvbGVfbGV2ZWwoY2hhciAqKnJvbGUsIGNvbnN0IGNoYXIg KipsZXZlbCwKLSsgICAgQXV0aGN0eHQgKnRoZV9hdXRoY3R4dCkKLSt7Ci0rCSpyb2xlID0gTlVM TDsKLSsJKmxldmVsID0gTlVMTDsKLSsJaWYgKHRoZV9hdXRoY3R4dCkgewotKwkJaWYgKHRoZV9h dXRoY3R4dC0+cm9sZSAhPSBOVUxMKSB7Ci0rCQkJY2hhciAqc2xhc2g7Ci0rCQkJKnJvbGUgPSB4 c3RyZHVwKHRoZV9hdXRoY3R4dC0+cm9sZSk7Ci0rCQkJaWYgKChzbGFzaCA9IHN0cmNocigqcm9s ZSwgJy8nKSkgIT0gTlVMTCkgewotKwkJCQkqc2xhc2ggPSAnXDAnOwotKwkJCQkqbGV2ZWwgPSBz bGFzaCArIDE7Ci0rCQkJfQotKwkJfQotKwl9Ci0rfQotKwotKy8qIFJldHVybiB0aGUgZGVmYXVs dCBzZWN1cml0eSBjb250ZXh0IGZvciB0aGUgZ2l2ZW4gdXNlcm5hbWUgKi8KLStzdGF0aWMgaW50 Ci0rc3NoZF9zZWxpbnV4X2dldGN0eGJ5bmFtZShjaGFyICpwd25hbWUsIHNlY3VyaXR5X2NvbnRl eHRfdCAqZGVmYXVsdF9zYywKLSsgICAgc2VjdXJpdHlfY29udGV4dF90ICp1c2VyX3NjLCBpbnQg aW5ldGQsIEF1dGhjdHh0ICp0aGVfYXV0aGN0eHQpCi0rewotKwljaGFyICpzZW5hbWUsICpsdmw7 Ci0rCWNoYXIgKnJvbGU7Ci0rCWNvbnN0IGNoYXIgKnJlcWx2bDsKLSsJaW50IHIgPSAwOwotKwlj b250ZXh0X3QgY29uID0gTlVMTDsKLSsKLSsJc3NoX3NlbGludXhfZ2V0X3JvbGVfbGV2ZWwoJnJv bGUsICZyZXFsdmwsIHRoZV9hdXRoY3R4dCk7Ci0rCi0rI2lmZGVmIEhBVkVfR0VUU0VVU0VSQllO QU1FCi0rCWlmICgocj1nZXRzZXVzZXJieW5hbWUocHduYW1lLCAmc2VuYW1lLCAmbHZsKSkgIT0g MCkgewotKwkJc2VuYW1lID0gTlVMTDsKLSsJCWx2bCA9IE5VTEw7Ci0rCX0KLSsjZWxzZQotKwlz ZW5hbWUgPSBwd25hbWU7Ci0rCWx2bCA9ICIiOwotKyNlbmRpZgotKwotKwlpZiAociA9PSAwKSB7 Ci0rI2lmZGVmIEhBVkVfR0VUX0RFRkFVTFRfQ09OVEVYVF9XSVRIX0xFVkVMCi0rCQlyID0gZ2V0 X2RlZmF1bHRfY29udGV4dF93aXRoX2xldmVsKHNlbmFtZSwgbHZsLCBOVUxMLCBkZWZhdWx0X3Nj KTsKLSsjZWxzZQotKwkJciA9IGdldF9kZWZhdWx0X2NvbnRleHQoc2VuYW1lLCBOVUxMLCBkZWZh dWx0X3NjKTsKLSsjZW5kaWYKLSsJfQotKwotKwlpZiAociA9PSAwKSB7Ci0rCQkvKiBJZiBsYXVu Y2hlZCBmcm9tIHhpbmV0ZCwgd2UgbXVzdCB1c2UgY3VycmVudCBsZXZlbCAqLwotKwkJaWYgKGlu ZXRkKSB7Ci0rCQkJc2VjdXJpdHlfY29udGV4dF90IHNzaGRzYz1OVUxMOwotKwotKwkJCWlmIChn ZXRjb25fcmF3KCZzc2hkc2MpIDwgMCkKLSsJCQkJZmF0YWwoImZhaWxlZCB0byBhbGxvY2F0ZSBz ZWN1cml0eSBjb250ZXh0Iik7Ci0rCi0rCQkJaWYgKChjb249Y29udGV4dF9uZXcoc3NoZHNjKSkg PT0gTlVMTCkKLSsJCQkJZmF0YWwoImZhaWxlZCB0byBhbGxvY2F0ZSBzZWxpbnV4IGNvbnRleHQi KTsKLSsJCQlyZXFsdmwgPSBjb250ZXh0X3JhbmdlX2dldChjb24pOwotKwkJCWZyZWVjb24oc3No ZHNjKTsKLSsJCQlpZiAocmVxbHZsICE9TlVMTCAmJiBsdmwgIT0gTlVMTCAmJiBzdHJjbXAocmVx bHZsLCBsdmwpID09IDApCi0rCQkJICAgIC8qIHdlIGFjdHVhbGx5IGRvbid0IGNoYW5nZSBsZXZl bCAqLwotKwkJCSAgICByZXFsdmwgPSAiIjsKLSsKLSsJCQlkZWJ1Z19mKCJjdXJyZW50IGNvbm5l Y3Rpb24gbGV2ZWwgJyVzJyIsIHJlcWx2bCk7Ci0rCi0rCQl9Ci0rCi0rCQlpZiAoKHJlcWx2bCAh PSBOVUxMICYmIHJlcWx2bFswXSkgfHwgKHJvbGUgIT0gTlVMTCAmJiByb2xlWzBdKSkgewotKwkJ CXIgPSBnZXRfdXNlcl9jb250ZXh0KHNlbmFtZSwgcm9sZSwgcmVxbHZsLCB1c2VyX3NjKTsKLSsK LSsJCQlpZiAociA9PSAwICYmIHJlcWx2bCAhPSBOVUxMICYmIHJlcWx2bFswXSkgewotKwkJCQlz ZWN1cml0eV9jb250ZXh0X3QgZGVmYXVsdF9sZXZlbF9zYyA9ICpkZWZhdWx0X3NjOwotKwkJCQlp ZiAocm9sZSAhPSBOVUxMICYmIHJvbGVbMF0pIHsKLSsJCQkJCWlmIChnZXRfdXNlcl9jb250ZXh0 KHNlbmFtZSwgcm9sZSwgbHZsLCAmZGVmYXVsdF9sZXZlbF9zYykgPCAwKQotKwkJCQkJCWRlZmF1 bHRfbGV2ZWxfc2MgPSAqZGVmYXVsdF9zYzsKLSsJCQkJfQotKwkJCQkvKiB2ZXJpZnkgdGhhdCB0 aGUgcmVxdWVzdGVkIHJhbmdlIGlzIGNvbnRhaW5lZCBpbiB0aGUgdXNlciByYW5nZSAqLwotKwkJ CQlpZiAobWxzX3JhbmdlX2FsbG93ZWQoZGVmYXVsdF9sZXZlbF9zYywgKnVzZXJfc2MpKSB7Ci0r CQkJCQlsb2dpdCgicGVybWl0IE1MUyBsZXZlbCAlcyAodXNlciByYW5nZSAlcykiLCByZXFsdmws IGx2bCk7Ci0rCQkJCX0gZWxzZSB7Ci0rCQkJCQlyID0gLTE7Ci0rCQkJCQllcnJvcigiZGVueSBN TFMgbGV2ZWwgJXMgKHVzZXIgcmFuZ2UgJXMpIiwgcmVxbHZsLCBsdmwpOwotKwkJCQl9Ci0rCQkJ CWlmIChkZWZhdWx0X2xldmVsX3NjICE9ICpkZWZhdWx0X3NjKQotKwkJCQkJZnJlZWNvbihkZWZh dWx0X2xldmVsX3NjKTsKLSsJCQl9Ci0rCQl9IGVsc2UgewotKwkJCSp1c2VyX3NjID0gKmRlZmF1 bHRfc2M7Ci0rCQl9Ci0rCX0KLSsJaWYgKHIgIT0gMCkgewotKwkJZXJyb3JfZigiRmFpbGVkIHRv IGdldCBkZWZhdWx0IFNFTGludXggc2VjdXJpdHkgIgotKwkJICAgICJjb250ZXh0IGZvciAlcyIs IHB3bmFtZSk7Ci0rCX0KLSsKLSsjaWZkZWYgSEFWRV9HRVRTRVVTRVJCWU5BTUUKLSsJZnJlZShz ZW5hbWUpOwotKwlmcmVlKGx2bCk7Ci0rI2VuZGlmCi0rCi0rCWlmIChyb2xlICE9IE5VTEwpCi0r CQlmcmVlKHJvbGUpOwotKwlpZiAoY29uKQotKwkJY29udGV4dF9mcmVlKGNvbik7Ci0rCi0rCXJl dHVybiAocik7Ci0rfQotKwotKy8qIFNldHVwIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgcGFt X3NlbGludXggKi8KLStzdGF0aWMgaW50Ci0rc3NoZF9zZWxpbnV4X3NldHVwX3ZhcmlhYmxlcyhp bnQoKnNldF9pdCkoY2hhciAqLCBjb25zdCBjaGFyICopLCBpbnQgaW5ldGQsCi0rICAgIEF1dGhj dHh0ICp0aGVfYXV0aGN0eHQpCi0rewotKwljb25zdCBjaGFyICpyZXFsdmw7Ci0rCWNoYXIgKnJv bGU7Ci0rCWNoYXIgKnVzZV9jdXJyZW50OwotKwlpbnQgcnY7Ci0rCi0rCWRlYnVnM19mKCJzZXR0 aW5nIGV4ZWN1dGlvbiBjb250ZXh0Iik7Ci0rCi0rCXNzaF9zZWxpbnV4X2dldF9yb2xlX2xldmVs KCZyb2xlLCAmcmVxbHZsLCB0aGVfYXV0aGN0eHQpOwotKwotKwlydiA9IHNldF9pdCgiU0VMSU5V WF9ST0xFX1JFUVVFU1RFRCIsIHJvbGUgPyByb2xlIDogIiIpOwotKwotKwlpZiAoaW5ldGQpIHsK LSsJCXVzZV9jdXJyZW50ID0gIjEiOwotKwl9IGVsc2UgewotKwkJdXNlX2N1cnJlbnQgPSAiIjsK LSsJCXJ2ID0gcnYgfHwgc2V0X2l0KCJTRUxJTlVYX0xFVkVMX1JFUVVFU1RFRCIsIHJlcWx2bCA/ IHJlcWx2bDogIiIpOwotKwl9Ci0rCi0rCXJ2ID0gcnYgfHwgc2V0X2l0KCJTRUxJTlVYX1VTRV9D VVJSRU5UX1JBTkdFIiwgdXNlX2N1cnJlbnQpOwotKwotKwlpZiAocm9sZSAhPSBOVUxMKQotKwkJ ZnJlZShyb2xlKTsKLSsKLSsJcmV0dXJuIHJ2OwotK30KLSsKLStzdGF0aWMgaW50Ci0rc3NoZF9z ZWxpbnV4X3NldHVwX3BhbV92YXJpYWJsZXMoaW50IGluZXRkLAotKyAgICBpbnQocGFtX3NldGVu dikoY2hhciAqLCBjb25zdCBjaGFyICopLCBBdXRoY3R4dCAqdGhlX2F1dGhjdHh0KQotK3sKLSsJ cmV0dXJuIHNzaGRfc2VsaW51eF9zZXR1cF92YXJpYWJsZXMocGFtX3NldGVudiwgaW5ldGQsIHRo ZV9hdXRoY3R4dCk7Ci0rfQotKwotK3N0YXRpYyBpbnQKLStkb19zZXRlbnYoY2hhciAqbmFtZSwg Y29uc3QgY2hhciAqdmFsdWUpCi0rewotKwlyZXR1cm4gc2V0ZW52KG5hbWUsIHZhbHVlLCAxKTsK LSt9Ci0rCi0raW50Ci0rc3NoZF9zZWxpbnV4X3NldHVwX2Vudl92YXJpYWJsZXMoaW50IGluZXRk LCB2b2lkICp0aGVfYXV0aGN0eHQpCi0rewotKwlBdXRoY3R4dCAqYXV0aGN0eHQgPSAoQXV0aGN0 eHQgKikgdGhlX2F1dGhjdHh0OwotKwlyZXR1cm4gc3NoZF9zZWxpbnV4X3NldHVwX3ZhcmlhYmxl cyhkb19zZXRlbnYsIGluZXRkLCBhdXRoY3R4dCk7Ci0rfQotKwotKy8qIFNldCB0aGUgZXhlY3V0 aW9uIGNvbnRleHQgdG8gdGhlIGRlZmF1bHQgZm9yIHRoZSBzcGVjaWZpZWQgdXNlciAqLwotK3Zv aWQKLStzc2hkX3NlbGludXhfc2V0dXBfZXhlY19jb250ZXh0KGNoYXIgKnB3bmFtZSwgaW50IGlu ZXRkLAotKyAgICBpbnQocGFtX3NldGVudikoY2hhciAqLCBjb25zdCBjaGFyICopLCB2b2lkICp0 aGVfYXV0aGN0eHQsIGludCB1c2VfcGFtKQotK3sKLSsJc2VjdXJpdHlfY29udGV4dF90IHVzZXJf Y3R4ID0gTlVMTDsKLSsJaW50IHIgPSAwOwotKwlzZWN1cml0eV9jb250ZXh0X3QgZGVmYXVsdF9j dHggPSBOVUxMOwotKwlBdXRoY3R4dCAqYXV0aGN0eHQgPSAoQXV0aGN0eHQgKikgdGhlX2F1dGhj dHh0OwotKwotKwlpZiAoIXNzaGRfc2VsaW51eF9lbmFibGVkKCkpCi0rCQlyZXR1cm47Ci0rCi0r CWlmICh1c2VfcGFtKSB7Ci0rCQkvKiBkbyBub3QgY29tcHV0ZSBjb250ZXh0LCBqdXN0IHNldHVw IGVudmlyb25tZW50IGZvciBwYW1fc2VsaW51eCAqLwotKwkJaWYgKHNzaGRfc2VsaW51eF9zZXR1 cF9wYW1fdmFyaWFibGVzKGluZXRkLCBwYW1fc2V0ZW52LCBhdXRoY3R4dCkpIHsKLSsJCQlzd2l0 Y2ggKHNlY3VyaXR5X2dldGVuZm9yY2UoKSkgewotKwkJCWNhc2UgLTE6Ci0rCQkJCWZhdGFsX2Yo InNlY3VyaXR5X2dldGVuZm9yY2UoKSBmYWlsZWQiKTsKLSsJCQljYXNlIDA6Ci0rCQkJCWVycm9y X2YoIlNFTGludXggUEFNIHZhcmlhYmxlIHNldHVwIGZhaWx1cmUuIENvbnRpbnVpbmcgaW4gcGVy bWlzc2l2ZSBtb2RlLiIpOwotKwkJCWJyZWFrOwotKwkJCWRlZmF1bHQ6Ci0rCQkJCWZhdGFsX2Yo IlNFTGludXggUEFNIHZhcmlhYmxlIHNldHVwIGZhaWx1cmUuIEFib3J0aW5nIGNvbm5lY3Rpb24u Iik7Ci0rCQkJfQotKwkJfQotKwkJcmV0dXJuOwotKwl9Ci0rCi0rCWRlYnVnM19mKCJzZXR0aW5n IGV4ZWN1dGlvbiBjb250ZXh0Iik7Ci0rCi0rCXIgPSBzc2hkX3NlbGludXhfZ2V0Y3R4YnluYW1l KHB3bmFtZSwgJmRlZmF1bHRfY3R4LCAmdXNlcl9jdHgsIGluZXRkLCBhdXRoY3R4dCk7Ci0rCWlm IChyID49IDApIHsKLSsJCXIgPSBzZXRleGVjY29uKHVzZXJfY3R4KTsKLSsJCWlmIChyIDwgMCkg ewotKwkJCWVycm9yX2YoIkZhaWxlZCB0byBzZXQgU0VMaW51eCBleGVjdXRpb24gY29udGV4dCAl cyBmb3IgJXMiLAotKwkJCSAgICB1c2VyX2N0eCwgcHduYW1lKTsKLSsJCX0KLSsjaWZkZWYgSEFW RV9TRVRLRVlDUkVBVEVDT04KLSsJCWVsc2UgaWYgKHNldGtleWNyZWF0ZWNvbih1c2VyX2N0eCkg PCAwKSB7Ci0rCQkJZXJyb3JfZigiRmFpbGVkIHRvIHNldCBTRUxpbnV4IGtleXJpbmcgY3JlYXRp b24gY29udGV4dCAlcyBmb3IgJXMiLAotKwkJCSAgICB1c2VyX2N0eCwgcHduYW1lKTsKLSsJCX0K LSsjZW5kaWYKLSsJfQotKwlpZiAodXNlcl9jdHggPT0gTlVMTCkgewotKwkJdXNlcl9jdHggPSBk ZWZhdWx0X2N0eDsKLSsJfQotKwlpZiAociA8IDAgfHwgdXNlcl9jdHggIT0gZGVmYXVsdF9jdHgp IHsKLSsJCS8qIGF1ZGl0IGp1c3QgdGhlIGNhc2Ugd2hlbiB1c2VyIGNoYW5nZWQgYSByb2xlIG9y IHRoZXJlIHdhcwotKwkJICAgYSBmYWlsdXJlICovCi0rCQlzc2hkX3NlbGludXhfc2VuZF9hdWRp dF9tZXNzYWdlKHIgPj0gMCwgZGVmYXVsdF9jdHgsIHVzZXJfY3R4KTsKLSsJfQotKwlpZiAociA8 IDApIHsKLSsJCXN3aXRjaCAoc2VjdXJpdHlfZ2V0ZW5mb3JjZSgpKSB7Ci0rCQljYXNlIC0xOgot KwkJCWZhdGFsX2YoInNlY3VyaXR5X2dldGVuZm9yY2UoKSBmYWlsZWQiKTsKLSsJCWNhc2UgMDoK LSsJCQllcnJvcl9mKCJFTGludXggZmFpbHVyZS4gQ29udGludWluZyBpbiBwZXJtaXNzaXZlIG1v ZGUuIik7Ci0rCQkJYnJlYWs7Ci0rCQlkZWZhdWx0OgotKwkJCWZhdGFsX2YoIlNFTGludXggZmFp bHVyZS4gQWJvcnRpbmcgY29ubmVjdGlvbi4iKTsKLSsJCX0KLSsJfQotKwlpZiAodXNlcl9jdHgg IT0gTlVMTCAmJiB1c2VyX2N0eCAhPSBkZWZhdWx0X2N0eCkKLSsJCWZyZWVjb24odXNlcl9jdHgp OwotKwlpZiAoZGVmYXVsdF9jdHggIT0gTlVMTCkKLSsJCWZyZWVjb24oZGVmYXVsdF9jdHgpOwot KwotKwlkZWJ1ZzNfZigiZG9uZSIpOwotK30KLSsKLSsjZW5kaWYKLSsjZW5kaWYKLSsKLWRpZmYg LS1naXQgYS9vcGVuYnNkLWNvbXBhdC9wb3J0LWxpbnV4LmMgYi9vcGVuYnNkLWNvbXBhdC9wb3J0 LWxpbnV4LmMKLWluZGV4IGMxZDU0ZjM4ZC4uNzQyNmY2Zjc5IDEwMDY0NAotLS0tIGEvb3BlbmJz ZC1jb21wYXQvcG9ydC1saW51eC5jCi0rKysgYi9vcGVuYnNkLWNvbXBhdC9wb3J0LWxpbnV4LmMK LUBAIC0xMDksMzcgKzEwOSw2IEBAIHNzaF9zZWxpbnV4X2dldGN0eGJ5bmFtZShjaGFyICpwd25h bWUpCi0gCXJldHVybiBzYzsKLSB9Ci0gCi0tLyogU2V0IHRoZSBleGVjdXRpb24gY29udGV4dCB0 byB0aGUgZGVmYXVsdCBmb3IgdGhlIHNwZWNpZmllZCB1c2VyICovCi0tdm9pZAotLXNzaF9zZWxp bnV4X3NldHVwX2V4ZWNfY29udGV4dChjaGFyICpwd25hbWUpCi0tewotLQljaGFyICp1c2VyX2N0 eCA9IE5VTEw7Ci0tCi0tCWlmICghc3NoX3NlbGludXhfZW5hYmxlZCgpKQotLQkJcmV0dXJuOwot LQotLQlkZWJ1ZzMoIiVzOiBzZXR0aW5nIGV4ZWN1dGlvbiBjb250ZXh0IiwgX19mdW5jX18pOwot LQotLQl1c2VyX2N0eCA9IHNzaF9zZWxpbnV4X2dldGN0eGJ5bmFtZShwd25hbWUpOwotLQlpZiAo c2V0ZXhlY2Nvbih1c2VyX2N0eCkgIT0gMCkgewotLQkJc3dpdGNoIChzZWN1cml0eV9nZXRlbmZv cmNlKCkpIHsKLS0JCWNhc2UgLTE6Ci0tCQkJZmF0YWwoIiVzOiBzZWN1cml0eV9nZXRlbmZvcmNl KCkgZmFpbGVkIiwgX19mdW5jX18pOwotLQkJY2FzZSAwOgotLQkJCWVycm9yKCIlczogRmFpbGVk IHRvIHNldCBTRUxpbnV4IGV4ZWN1dGlvbiAiCi0tCQkJICAgICJjb250ZXh0IGZvciAlcyIsIF9f ZnVuY19fLCBwd25hbWUpOwotLQkJCWJyZWFrOwotLQkJZGVmYXVsdDoKLS0JCQlmYXRhbCgiJXM6 IEZhaWxlZCB0byBzZXQgU0VMaW51eCBleGVjdXRpb24gY29udGV4dCAiCi0tCQkJICAgICJmb3Ig JXMgKGluIGVuZm9yY2luZyBtb2RlKSIsIF9fZnVuY19fLCBwd25hbWUpOwotLQkJfQotLQl9Ci0t CWlmICh1c2VyX2N0eCAhPSBOVUxMKQotLQkJZnJlZWNvbih1c2VyX2N0eCk7Ci0tCi0tCWRlYnVn MygiJXM6IGRvbmUiLCBfX2Z1bmNfXyk7Ci0tfQotLQotIC8qIFNldCB0aGUgVFRZIGNvbnRleHQg Zm9yIHRoZSBzcGVjaWZpZWQgdXNlciAqLwotIHZvaWQKLSBzc2hfc2VsaW51eF9zZXR1cF9wdHko Y2hhciAqcHduYW1lLCBjb25zdCBjaGFyICp0dHkpCi1AQCAtMTUyLDcgKzEyMSwxMSBAQCBzc2hf c2VsaW51eF9zZXR1cF9wdHkoY2hhciAqcHduYW1lLCBjb25zdCBjaGFyICp0dHkpCi0gCi0gCWRl YnVnMygiJXM6IHNldHRpbmcgVFRZIGNvbnRleHQgb24gJXMiLCBfX2Z1bmNfXywgdHR5KTsKLSAK LS0JdXNlcl9jdHggPSBzc2hfc2VsaW51eF9nZXRjdHhieW5hbWUocHduYW1lKTsKLSsJaWYgKGdl dGV4ZWNjb24oJnVzZXJfY3R4KSAhPSAwKSB7Ci0rCQllcnJvcl9mKCJnZXRleGVjY29uOiAlcyIs IHN0cmVycm9yKGVycm5vKSk7Ci0rCQlnb3RvIG91dDsKLSsJfQotKwotIAotIAkvKiBYWFg6IHNo b3VsZCB0aGVzZSBjYWxscyBmYXRhbCgpIHVwb24gZmFpbHVyZSBpbiBlbmZvcmNpbmcgbW9kZT8g Ki8KLSAKLWRpZmYgLS1naXQgYS9vcGVuYnNkLWNvbXBhdC9wb3J0LWxpbnV4LmggYi9vcGVuYnNk LWNvbXBhdC9wb3J0LWxpbnV4LmgKLWluZGV4IDk1OTQzMGRlMS4uMjZjNWY3NzNiIDEwMDY0NAot LS0tIGEvb3BlbmJzZC1jb21wYXQvcG9ydC1saW51eC5oCi0rKysgYi9vcGVuYnNkLWNvbXBhdC9w b3J0LWxpbnV4LmgKLUBAIC0yMCw5ICsyMCwxMiBAQAotICNpZmRlZiBXSVRIX1NFTElOVVgKLSBp bnQgc3NoX3NlbGludXhfZW5hYmxlZCh2b2lkKTsKLSB2b2lkIHNzaF9zZWxpbnV4X3NldHVwX3B0 eShjaGFyICosIGNvbnN0IGNoYXIgKik7Ci0tdm9pZCBzc2hfc2VsaW51eF9zZXR1cF9leGVjX2Nv bnRleHQoY2hhciAqKTsKLSB2b2lkIHNzaF9zZWxpbnV4X2NoYW5nZV9jb250ZXh0KGNvbnN0IGNo YXIgKik7Ci0gdm9pZCBzc2hfc2VsaW51eF9zZXRmc2NyZWF0ZWNvbihjb25zdCBjaGFyICopOwot KwotK2ludCBzc2hkX3NlbGludXhfZW5hYmxlZCh2b2lkKTsKLSt2b2lkIHNzaGRfc2VsaW51eF9z ZXR1cF9leGVjX2NvbnRleHQoY2hhciAqLCBpbnQsIGludChjaGFyICosIGNvbnN0IGNoYXIgKiks IHZvaWQgKiwgaW50KTsKLStpbnQgc3NoZF9zZWxpbnV4X3NldHVwX2Vudl92YXJpYWJsZXMoaW50 IGluZXRkLCB2b2lkICopOwotICNlbmRpZgotIAotICNpZmRlZiBMSU5VWF9PT01fQURKVVNUCi1k aWZmIC0tZ2l0IGEvcGxhdGZvcm0uYyBiL3BsYXRmb3JtLmMKLWluZGV4IGZkMWE3YTdjMi4uNjZk MGMyYTZiIDEwMDY0NAotLS0tIGEvcGxhdGZvcm0uYwotKysrIGIvcGxhdGZvcm0uYwotQEAgLTMz LDYgKzMzLDggQEAKLSAjaW5jbHVkZSAib3BlbmJzZC1jb21wYXQvb3BlbmJzZC1jb21wYXQuaCIK LSAKLSBleHRlcm4gU2VydmVyT3B0aW9ucyBvcHRpb25zOwotK2V4dGVybiBpbnQgaW5ldGRfZmxh ZzsKLStleHRlcm4gQXV0aGN0eHQgKnRoZV9hdXRoY3R4dDsKLSAKLSAvKiByZXR1cm4gMSBpZiB3 ZSBhcmUgcnVubmluZyB3aXRoIHByaXZpbGVnZSB0byBzd2FwIFVJRHMsIDAgb3RoZXJ3aXNlICov Ci0gaW50Ci1AQCAtNTUsNyArNTcsNyBAQCBwbGF0Zm9ybV9zZXR1c2VyY29udGV4dChzdHJ1Y3Qg cGFzc3dkICpwdykKLSB7Ci0gI2lmZGVmIFdJVEhfU0VMSU5VWAotIAkvKiBDYWNoZSBzZWxpbnV4 IHN0YXR1cyBmb3IgbGF0ZXIgdXNlICovCi0tCSh2b2lkKXNzaF9zZWxpbnV4X2VuYWJsZWQoKTsK LSsJKHZvaWQpc3NoZF9zZWxpbnV4X2VuYWJsZWQoKTsKLSAjZW5kaWYKLSAKLSAjaWZkZWYgVVNF X1NPTEFSSVNfUFJPSkVDVFMKLUBAIC0xNDAsNyArMTQyLDkgQEAgcGxhdGZvcm1fc2V0dXNlcmNv bnRleHRfcG9zdF9ncm91cHMoc3RydWN0IHBhc3N3ZCAqcHcpCi0gCX0KLSAjZW5kaWYgLyogSEFW RV9TRVRQQ1JFRCAqLwotICNpZmRlZiBXSVRIX1NFTElOVVgKLS0Jc3NoX3NlbGludXhfc2V0dXBf ZXhlY19jb250ZXh0KHB3LT5wd19uYW1lKTsKLSsJc3NoZF9zZWxpbnV4X3NldHVwX2V4ZWNfY29u dGV4dChwdy0+cHdfbmFtZSwKLSsJICAgIGluZXRkX2ZsYWcsIGRvX3BhbV9wdXRlbnYsIHRoZV9h dXRoY3R4dCwKLSsJICAgIG9wdGlvbnMudXNlX3BhbSk7Ci0gI2VuZGlmCi0gfQotIAotZGlmZiAt LWdpdCBhL3NzaGQtc2Vzc2lvbi5jIGIvc3NoZC1zZXNzaW9uLmMKLWluZGV4IGU5YTQ4OGQwOC4u OTY3NzM3YzViIDEwMDY0NAotLS0tIGEvc3NoZC1zZXNzaW9uLmMKLSsrKyBiL3NzaGQtc2Vzc2lv bi5jCi1AQCAtMTIzLDcgKzEyMyw3IEBAIGNoYXIgKmNvbmZpZ19maWxlX25hbWUgPSBfUEFUSF9T RVJWRVJfQ09ORklHX0ZJTEU7Ci0gaW50IGRlYnVnX2ZsYWcgPSAwOwotIAotIC8qIEZsYWcgaW5k aWNhdGluZyB0aGF0IHRoZSBkYWVtb24gaXMgYmVpbmcgc3RhcnRlZCBmcm9tIGluZXRkLiAqLwot LXN0YXRpYyBpbnQgaW5ldGRfZmxhZyA9IDA7Ci0raW50IGluZXRkX2ZsYWcgPSAwOwotIAotIC8q IGRlYnVnIGdvZXMgdG8gc3RkZXJyIHVubGVzcyBpbmV0ZF9mbGFnIGlzIHNldCAqLwotIHN0YXRp YyBpbnQgbG9nX3N0ZGVyciA9IDA7Ci1AQCAtMTI3NCw2ICsxMjc0LDExIEBAIG1haW4oaW50IGFj LCBjaGFyICoqYXYpCi0gCQlyZXN0b3JlX3VpZCgpOwotIAl9Ci0gI2VuZGlmCi0rI2lmZGVmIFdJ VEhfU0VMSU5VWAotKwlzc2hkX3NlbGludXhfc2V0dXBfZXhlY19jb250ZXh0KGF1dGhjdHh0LT5w dy0+cHdfbmFtZSwKLSsJICAgIGluZXRkX2ZsYWcsIGRvX3BhbV9wdXRlbnYsIHRoZV9hdXRoY3R4 dCwKLSsJICAgIG9wdGlvbnMudXNlX3BhbSk7Ci0rI2VuZGlmCi0gI2lmZGVmIFVTRV9QQU0KLSAJ aWYgKG9wdGlvbnMudXNlX3BhbSkgewotIAkJZG9fcGFtX3NldGNyZWQoKTsKLS0tIAotMi41My4w Ci0KCmRpZmYgLS1naXQgYS8wMDAzLUltcGxlbWVudC1TRUxpbnV4LWVudmlyb25tZW50LXZhcmlh YmxlLXNldHVwLWZvci1zdWIucGF0Y2ggYi8wMDAzLUltcGxlbWVudC1TRUxpbnV4LWVudmlyb25t ZW50LXZhcmlhYmxlLXNldHVwLWZvci1zdWIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uMTdhYmQ2OAotLS0gL2Rldi9udWxsCisrKyBiLzAwMDMtSW1wbGVtZW50LVNF TGludXgtZW52aXJvbm1lbnQtdmFyaWFibGUtc2V0dXAtZm9yLXN1Yi5wYXRjaApAQCAtMCwwICsx LDY3NyBAQAorRnJvbSBmODdhN2NmMDEwNTdiY2Y0OTU5NzQ1MDJkZTNlNmY0YmZjNDcyYTVkIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRG1pdHJ5IEJlbHlhdnNraXkgPGJlbGRtaXRA Z21haWwuY29tPgorRGF0ZTogTW9uLCAxMyBBcHIgMjAyNiAxNDowNjo0NyArMDIwMAorU3ViamVj dDogW1BBVENIIDAzLzU0XSBJbXBsZW1lbnQgU0VMaW51eCBlbnZpcm9ubWVudCB2YXJpYWJsZSBz ZXR1cCBmb3IKKyBzdWJwcm9jZXNzIGV4ZWN1dGlvbgorCitvcGVuc3NoLTYuNnAxLXNlbGludXgt ZW52LXNldHVwCisKK0ltcGxlbWVudCBjb21wcmVoZW5zaXZlIFNFTGludXggY29udGV4dCBtYW5h Z2VtZW50IGZvciBzc2hkLCBpbmNsdWRpbmcKK3JvbGUgc2VsZWN0aW9uLCBNTFMgbGV2ZWwgdmFs aWRhdGlvbiwgYW5kIGVudmlyb25tZW50IHZhcmlhYmxlIHNldHVwIGZvcgorcGFtX3NlbGludXgg aW50ZWdyYXRpb24uCisKK0NoYW5nZXM6CistIG9wZW5ic2QtY29tcGF0L3BvcnQtbGludXgtc3No ZC5jOiBOZXcgZmlsZSB3aXRoIFNFTGludXggY29udGV4dAorICBtYW5hZ2VtZW50IGZ1bmN0aW9u cyBpbmNsdWRpbmcgc3NoZF9zZWxpbnV4X2dldGN0eGJ5bmFtZSgpLAorICBzc2hkX3NlbGludXhf c2V0dXBfZXhlY19jb250ZXh0KCksIGFuZCBlbnZpcm9ubWVudCB2YXJpYWJsZSBzZXR1cAorLSBv cGVuYnNkLWNvbXBhdC9NYWtlZmlsZS5pbjogQWRkIHBvcnQtbGludXgtc3NoZC5vIHRvIGJ1aWxk CistIG9wZW5ic2QtY29tcGF0L3BvcnQtbGludXguYzogUmVtb3ZlIG9sZCBzc2hfc2VsaW51eF9z ZXR1cF9leGVjX2NvbnRleHQoKSwKKyAgdXBkYXRlIHNzaF9zZWxpbnV4X3NldHVwX3B0eSgpIHRv IHVzZSBnZXRleGVjY29uKCkKKy0gb3BlbmJzZC1jb21wYXQvcG9ydC1saW51eC5oOiBVcGRhdGUg ZnVuY3Rpb24gZGVjbGFyYXRpb25zIGZvcgorICBzc2hkLXNwZWNpZmljIFNFTGludXggZnVuY3Rp b25zCistIHBsYXRmb3JtLmM6IFJlcGxhY2Ugc3NoX3NlbGludXhfc2V0dXBfZXhlY19jb250ZXh0 KCkgd2l0aAorICBzc2hkX3NlbGludXhfc2V0dXBfZXhlY19jb250ZXh0KCkgYW5kIHBhc3MgYWRk aXRpb25hbCBwYXJhbWV0ZXJzCisgIChpbmV0ZF9mbGFnLCBkb19wYW1fcHV0ZW52LCB0aGVfYXV0 aGN0eHQsIG9wdGlvbnMudXNlX3BhbSkKKy0gc3NoZC1zZXNzaW9uLmM6IEFkZCBTRUxpbnV4IGV4 ZWN1dGlvbiBjb250ZXh0IHNldHVwIGNhbGwgaW4gbWFpbigpCistIGF1dGgtcGFtLmM6IENoYW5n ZSBkb19wYW1fcHV0ZW52KCkgdmFsdWUgcGFyYW1ldGVyIHRvIGNvbnN0IGNoYXIgKgorLSBhdXRo LXBhbS5oOiBVcGRhdGUgZG9fcGFtX3B1dGVudigpIHNpZ25hdHVyZSBhbmQgYWRkIGRvX3BhbV9j aGF1dGh0b2soKQorICBkZWNsYXJhdGlvbgorCitDby1BdXRob3JlZC1CeTogQ2xhdWRlIFNvbm5l dCA0LjUgPG5vcmVwbHlAYW50aHJvcGljLmNvbT4KKy0tLQorIGF1dGgtcGFtLmMgICAgICAgICAg ICAgICAgICAgICAgIHwgICAyICstCisgYXV0aC1wYW0uaCAgICAgICAgICAgICAgICAgICAgICAg fCAgIDMgKy0KKyBvcGVuYnNkLWNvbXBhdC9NYWtlZmlsZS5pbiAgICAgICB8ICAgMyArLQorIG9w ZW5ic2QtY29tcGF0L3BvcnQtbGludXgtc3NoZC5jIHwgNDU0ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKKyBvcGVuYnNkLWNvbXBhdC9wb3J0LWxpbnV4LmMgICAgICB8ICAzNyArLS0K KyBvcGVuYnNkLWNvbXBhdC9wb3J0LWxpbnV4LmggICAgICB8ICAgNSArLQorIHBsYXRmb3JtLmMg ICAgICAgICAgICAgICAgICAgICAgIHwgICA4ICstCisgc3NoZC1zZXNzaW9uLmMgICAgICAgICAg ICAgICAgICAgfCAgIDcgKy0KKyA4IGZpbGVzIGNoYW5nZWQsIDQ4MCBpbnNlcnRpb25zKCspLCAz OSBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgb3BlbmJzZC1jb21wYXQvcG9ydC1s aW51eC1zc2hkLmMKKworZGlmZiAtLWdpdCBhL2F1dGgtcGFtLmMgYi9hdXRoLXBhbS5jCitpbmRl eCAyOTYwN2UwNDEuLjNmMzQyZjllMSAxMDA2NDQKKy0tLSBhL2F1dGgtcGFtLmMKKysrKyBiL2F1 dGgtcGFtLmMKK0BAIC0xMTQ1LDcgKzExNDUsNyBAQCBpc19wYW1fc2Vzc2lvbl9vcGVuKHZvaWQp CisgICogZHVyaW5nIHRoZSBzc2ggYXV0aGVudGljYXRpb24gcHJvY2Vzcy4KKyAgKi8KKyBpbnQK Ky1kb19wYW1fcHV0ZW52KGNoYXIgKm5hbWUsIGNoYXIgKnZhbHVlKQorK2RvX3BhbV9wdXRlbnYo Y2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCisgeworIAlpbnQgcmV0ID0gMTsKKyAJY2hh ciAqY29tcG91bmQ7CitkaWZmIC0tZ2l0IGEvYXV0aC1wYW0uaCBiL2F1dGgtcGFtLmgKK2luZGV4 IDQ5MTMzNjcwMS4uZjkxNjdjZmM4IDEwMDY0NAorLS0tIGEvYXV0aC1wYW0uaAorKysrIGIvYXV0 aC1wYW0uaAorQEAgLTMyLDcgKzMyLDggQEAgdm9pZCBmaW5pc2hfcGFtKHZvaWQpOworIHVfaW50 IGRvX3BhbV9hY2NvdW50KHZvaWQpOworIHZvaWQgZG9fcGFtX3Nlc3Npb24oc3RydWN0IHNzaCAq KTsKKyB2b2lkIGRvX3BhbV9zZXRjcmVkKHZvaWQpOworLWludCBkb19wYW1fcHV0ZW52KGNoYXIg KiwgY2hhciAqKTsKKyt2b2lkIGRvX3BhbV9jaGF1dGh0b2sodm9pZCk7CisraW50IGRvX3BhbV9w dXRlbnYoY2hhciAqLCBjb25zdCBjaGFyICopOworIGNoYXIgKiogZmV0Y2hfcGFtX2Vudmlyb25t ZW50KHZvaWQpOworIGNoYXIgKiogZmV0Y2hfcGFtX2NoaWxkX2Vudmlyb25tZW50KHZvaWQpOwor IHZvaWQgZnJlZV9wYW1fZW52aXJvbm1lbnQoY2hhciAqKik7CitkaWZmIC0tZ2l0IGEvb3BlbmJz ZC1jb21wYXQvTWFrZWZpbGUuaW4gYi9vcGVuYnNkLWNvbXBhdC9NYWtlZmlsZS5pbgoraW5kZXgg NTNjODdkYjZkLi4zOTUzMWFlNzcgMTAwNjQ0CistLS0gYS9vcGVuYnNkLWNvbXBhdC9NYWtlZmls ZS5pbgorKysrIGIvb3BlbmJzZC1jb21wYXQvTWFrZWZpbGUuaW4KK0BAIC0xMDIsNyArMTAyLDgg QEAgUE9SVFM9CXBvcnQtYWl4Lm8gXAorIAlwb3J0LXBybmdkLm8gXAorIAlwb3J0LXNvbGFyaXMu byBcCisgCXBvcnQtbmV0Lm8gXAorLQlwb3J0LXV3Lm8KKysJcG9ydC11dy5vIFwKKysJcG9ydC1s aW51eC1zc2hkLm8KKyAKKyAuYy5vOgorIAkkKENDKSAkKENGTEFHU19OT1BJRSkgJChQSUNGTEFH KSAkKENQUEZMQUdTKSAtYyAkPAorZGlmZiAtLWdpdCBhL29wZW5ic2QtY29tcGF0L3BvcnQtbGlu dXgtc3NoZC5jIGIvb3BlbmJzZC1jb21wYXQvcG9ydC1saW51eC1zc2hkLmMKK25ldyBmaWxlIG1v ZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAuLmFiMDgzYTYzNworLS0tIC9kZXYvbnVsbAorKysr IGIvb3BlbmJzZC1jb21wYXQvcG9ydC1saW51eC1zc2hkLmMKK0BAIC0wLDAgKzEsNDU0IEBACisr LyoKKysgKiBDb3B5cmlnaHQgKGMpIDIwMDUgRGFuaWVsIFdhbHNoIDxkd2Fsc2hAcmVkaGF0LmNv bT4KKysgKiBDb3B5cmlnaHQgKGMpIDIwMTQgUGV0ciBMYXV0cmJhY2ggPHBsYXV0cmJhQHJlZGhh dC5jb20+CisrICoKKysgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlz dHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKKysgKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91 dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlCisrICogY29w eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNv cGllcy4KKysgKgorKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBUSEUg QVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUworKyAqIFdJVEggUkVHQVJEIFRPIFRISVMg U09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKysgKiBNRVJDSEFO VEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElB QkxFIEZPUgorKyAqIEFOWSBTUEVDSUFMLCBESVJFQ1QsIElORElSRUNULCBPUiBDT05TRVFVRU5U SUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMKKysgKiBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9N IExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4KKysgKiBBQ1RJT04g T0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5H IE9VVCBPRgorKyAqIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNF IE9GIFRISVMgU09GVFdBUkUuCisrICovCisrCisrLyoKKysgKiBMaW51eC1zcGVjaWZpYyBwb3J0 YWJpbGl0eSBjb2RlIC0ganVzdCBTRUxpbnV4IHN1cHBvcnQgZm9yIHNzaGQgYXQgcHJlc2VudAor KyAqLworKworKyNpbmNsdWRlICJpbmNsdWRlcy5oIgorKworKyNpZiBkZWZpbmVkKFdJVEhfU0VM SU5VWCkgfHwgZGVmaW5lZChMSU5VWF9PT01fQURKVVNUKQorKyNpbmNsdWRlIDxlcnJuby5oPgor KyNpbmNsdWRlIDxzdGRhcmcuaD4KKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPHN0 ZGlvLmg+CisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKworKyNpbmNsdWRlICJsb2cuaCIKKysjaW5j bHVkZSAieG1hbGxvYy5oIgorKyNpbmNsdWRlICJtaXNjLmgiICAgICAgLyogc2VydmNvbmYuaCBu ZWVkcyBtaXNjLmggZm9yIHN0cnVjdCBGb3J3YXJkT3B0aW9ucyAqLworKyNpbmNsdWRlICJzZXJ2 Y29uZi5oIgorKyNpbmNsdWRlICJwb3J0LWxpbnV4LmgiCisrI2luY2x1ZGUgInNzaGtleS5oIgor KyNpbmNsdWRlICJob3N0ZmlsZS5oIgorKyNpbmNsdWRlICJhdXRoLmgiCisrCisrI2lmZGVmIFdJ VEhfU0VMSU5VWAorKyNpbmNsdWRlIDxzZWxpbnV4L3NlbGludXguaD4KKysjaW5jbHVkZSA8c2Vs aW51eC9jb250ZXh0Lmg+CisrI2luY2x1ZGUgPHNlbGludXgvZ2V0X2NvbnRleHRfbGlzdC5oPgor KyNpbmNsdWRlIDxzZWxpbnV4L2dldF9kZWZhdWx0X3R5cGUuaD4KKysKKysjaWZkZWYgSEFWRV9M SU5VWF9BVURJVAorKyNpbmNsdWRlIDxsaWJhdWRpdC5oPgorKyNpbmNsdWRlIDx1bmlzdGQuaD4K KysjZW5kaWYKKysKKysvKiBXcmFwcGVyIGFyb3VuZCBpc19zZWxpbnV4X2VuYWJsZWQoKSB0byBs b2cgaXRzIHJldHVybiB2YWx1ZSBvbmNlIG9ubHkgKi8KKytpbnQKKytzc2hkX3NlbGludXhfZW5h YmxlZCh2b2lkKQorK3sKKysJc3RhdGljIGludCBlbmFibGVkID0gLTE7CisrCisrCWlmIChlbmFi bGVkID09IC0xKSB7CisrCQllbmFibGVkID0gKGlzX3NlbGludXhfZW5hYmxlZCgpID09IDEpOwor KwkJZGVidWcoIlNFTGludXggc3VwcG9ydCAlcyIsIGVuYWJsZWQgPyAiZW5hYmxlZCIgOiAiZGlz YWJsZWQiKTsKKysJfQorKworKwlyZXR1cm4gKGVuYWJsZWQpOworK30KKysKKysvKiBTZW5kIGF1 ZGl0IG1lc3NhZ2UgKi8KKytzdGF0aWMgaW50Cisrc3NoZF9zZWxpbnV4X3NlbmRfYXVkaXRfbWVz c2FnZShpbnQgc3VjY2Vzcywgc2VjdXJpdHlfY29udGV4dF90IGRlZmF1bHRfY29udGV4dCwKKysJ CSAgICAgICBzZWN1cml0eV9jb250ZXh0X3Qgc2VsZWN0ZWRfY29udGV4dCkKKyt7CisrCWludCBy Yz0wOworKyNpZmRlZiBIQVZFX0xJTlVYX0FVRElUCisrCWNoYXIgKm1zZyA9IE5VTEw7CisrCWlu dCBhdWRpdF9mZCA9IGF1ZGl0X29wZW4oKTsKKysJc2VjdXJpdHlfY29udGV4dF90IGRlZmF1bHRf cmF3PU5VTEw7CisrCXNlY3VyaXR5X2NvbnRleHRfdCBzZWxlY3RlZF9yYXc9TlVMTDsKKysJcmMg PSAtMTsKKysJaWYgKGF1ZGl0X2ZkIDwgMCkgeworKwkJaWYgKGVycm5vID09IEVJTlZBTCB8fCBl cnJubyA9PSBFUFJPVE9OT1NVUFBPUlQgfHwKKysJCQkJCWVycm5vID09IEVBRk5PU1VQUE9SVCkK KysJCQkJcmV0dXJuIDA7IC8qIE5vIGF1ZGl0IHN1cHBvcnQgaW4ga2VybmVsICovCisrCQllcnJv cigiRXJyb3IgY29ubmVjdGluZyB0byBhdWRpdCBzeXN0ZW0uIik7CisrCQlyZXR1cm4gcmM7Cisr CX0KKysJaWYgKHNlbGludXhfdHJhbnNfdG9fcmF3X2NvbnRleHQoZGVmYXVsdF9jb250ZXh0LCAm ZGVmYXVsdF9yYXcpIDwgMCkgeworKwkJZXJyb3IoIkVycm9yIHRyYW5zbGF0aW5nIGRlZmF1bHQg Y29udGV4dC4iKTsKKysJCWRlZmF1bHRfcmF3ID0gTlVMTDsKKysJfQorKwlpZiAoc2VsaW51eF90 cmFuc190b19yYXdfY29udGV4dChzZWxlY3RlZF9jb250ZXh0LCAmc2VsZWN0ZWRfcmF3KSA8IDAp IHsKKysJCWVycm9yKCJFcnJvciB0cmFuc2xhdGluZyBzZWxlY3RlZCBjb250ZXh0LiIpOworKwkJ c2VsZWN0ZWRfcmF3ID0gTlVMTDsKKysJfQorKwlpZiAoYXNwcmludGYoJm1zZywgInNzaGQ6IGRl ZmF1bHQtY29udGV4dD0lcyBzZWxlY3RlZC1jb250ZXh0PSVzIiwKKysJCSAgICAgZGVmYXVsdF9y YXcgPyBkZWZhdWx0X3JhdyA6IChkZWZhdWx0X2NvbnRleHQgPyBkZWZhdWx0X2NvbnRleHQ6ICI/ IiksCisrCQkgICAgIHNlbGVjdGVkX2NvbnRleHQgPyBzZWxlY3RlZF9yYXcgOiAoc2VsZWN0ZWRf Y29udGV4dCA/IHNlbGVjdGVkX2NvbnRleHQgOiI/IikpIDwgMCkgeworKwkJZXJyb3IoIkVycm9y IGFsbG9jYXRpbmcgbWVtb3J5LiIpOworKwkJZ290byBvdXQ7CisrCX0KKysJaWYgKGF1ZGl0X2xv Z191c2VyX21lc3NhZ2UoYXVkaXRfZmQsIEFVRElUX1VTRVJfUk9MRV9DSEFOR0UsCisrCQkJCSAg IG1zZywgTlVMTCwgTlVMTCwgTlVMTCwgc3VjY2VzcykgPD0gMCkgeworKwkJZXJyb3IoIkVycm9y IHNlbmRpbmcgYXVkaXQgbWVzc2FnZS4iKTsKKysJCWdvdG8gb3V0OworKwl9CisrCXJjID0gMDsK KysgICAgICBvdXQ6CisrCWZyZWUobXNnKTsKKysJZnJlZWNvbihkZWZhdWx0X3Jhdyk7CisrCWZy ZWVjb24oc2VsZWN0ZWRfcmF3KTsKKysJY2xvc2UoYXVkaXRfZmQpOworKyNlbmRpZgorKwlyZXR1 cm4gcmM7CisrfQorKworK3N0YXRpYyBpbnQKKyttbHNfcmFuZ2VfYWxsb3dlZChzZWN1cml0eV9j b250ZXh0X3Qgc3JjLCBzZWN1cml0eV9jb250ZXh0X3QgZHN0KQorK3sKKysJc3RydWN0IGF2X2Rl Y2lzaW9uIGF2ZDsKKysJaW50IHJldHZhbDsKKysJYWNjZXNzX3ZlY3Rvcl90IGJpdDsKKysJc2Vj dXJpdHlfY2xhc3NfdCBjbGFzczsKKysKKysJZGVidWdfZigic3JjOiVzIGRzdDolcyIsIHNyYywg ZHN0KTsKKysJY2xhc3MgPSBzdHJpbmdfdG9fc2VjdXJpdHlfY2xhc3MoImNvbnRleHQiKTsKKysJ aWYgKCFjbGFzcykgeworKwkJZXJyb3IoInN0cmluZ190b19zZWN1cml0eV9jbGFzcyBmYWlsZWQg dG8gdHJhbnNsYXRlIHNlY3VyaXR5IGNsYXNzIGNvbnRleHQiKTsKKysJCXJldHVybiAxOworKwl9 CisrCWJpdCA9IHN0cmluZ190b19hdl9wZXJtKGNsYXNzLCAiY29udGFpbnMiKTsKKysJaWYgKCFi aXQpIHsKKysJCWVycm9yKCJzdHJpbmdfdG9fYXZfcGVybSBmYWlsZWQgdG8gdHJhbnNsYXRlIGF2 IHBlcm0gY29udGFpbnMiKTsKKysJCXJldHVybiAxOworKwl9CisrCXJldHZhbCA9IHNlY3VyaXR5 X2NvbXB1dGVfYXYoc3JjLCBkc3QsIGNsYXNzLCBiaXQsICZhdmQpOworKwlpZiAocmV0dmFsIHx8 ICgoYml0ICYgYXZkLmFsbG93ZWQpICE9IGJpdCkpCisrCQlyZXR1cm4gMDsKKysKKysJcmV0dXJu IDE7CisrfQorKworK3N0YXRpYyBpbnQKKytnZXRfdXNlcl9jb250ZXh0KGNvbnN0IGNoYXIgKnNl bmFtZSwgY29uc3QgY2hhciAqcm9sZSwgY29uc3QgY2hhciAqbHZsLAorKwlzZWN1cml0eV9jb250 ZXh0X3QgKnNjKSB7CisrI2lmZGVmIEhBVkVfR0VUX0RFRkFVTFRfQ09OVEVYVF9XSVRIX0xFVkVM CisrCWlmIChsdmwgPT0gTlVMTCB8fCBsdmxbMF0gPT0gJ1wwJyB8fCBnZXRfZGVmYXVsdF9jb250 ZXh0X3dpdGhfbGV2ZWwoc2VuYW1lLCBsdmwsIE5VTEwsIHNjKSAhPSAwKSB7CisrCSAgICAgICAg LyogVXNlciBtYXkgaGF2ZSByZXF1ZXN0ZWQgYSBsZXZlbCBjb21wbGV0ZWx5IG91dHNpZGUgb2Yg aGlzIAorKwkgICAgICAgICAgIGFsbG93ZWQgcmFuZ2UuIFdlIGdldCBhIGNvbnRleHQganVzdCBm b3IgYXVkaXRpbmcgYXMgdGhlCisrCSAgICAgICAgICAgcmFuZ2UgY2hlY2sgYmVsb3cgd2lsbCBj ZXJ0YWlubHkgZmFpbCBmb3IgZGVmYXVsdCBjb250ZXh0LiAqLworKyNlbmRpZgorKwkJaWYgKGdl dF9kZWZhdWx0X2NvbnRleHQoc2VuYW1lLCBOVUxMLCBzYykgIT0gMCkgeworKwkJCSpzYyA9IE5V TEw7CisrCQkJcmV0dXJuIC0xOworKwkJfQorKyNpZmRlZiBIQVZFX0dFVF9ERUZBVUxUX0NPTlRF WFRfV0lUSF9MRVZFTAorKwl9CisrI2VuZGlmCisrCWlmIChyb2xlICE9IE5VTEwgJiYgcm9sZVsw XSkgeworKwkJY29udGV4dF90IGNvbjsKKysJCWNoYXIgKnR5cGU9TlVMTDsKKysJCWlmIChnZXRf ZGVmYXVsdF90eXBlKHJvbGUsICZ0eXBlKSAhPSAwKSB7CisrCQkJZXJyb3IoImdldF9kZWZhdWx0 X3R5cGU6IGZhaWxlZCB0byBnZXQgZGVmYXVsdCB0eXBlIGZvciAnJXMnIiwKKysJCQkJcm9sZSk7 CisrCQkJZ290byBvdXQ7CisrCQl9CisrCQljb24gPSBjb250ZXh0X25ldygqc2MpOworKwkJaWYg KCFjb24pIHsKKysJCQlnb3RvIG91dDsKKysJCX0KKysJCWNvbnRleHRfcm9sZV9zZXQoY29uLCBy b2xlKTsKKysJCWNvbnRleHRfdHlwZV9zZXQoY29uLCB0eXBlKTsKKysJCWZyZWVjb24oKnNjKTsK KysJCSpzYyA9IHN0cmR1cChjb250ZXh0X3N0cihjb24pKTsKKysJCWNvbnRleHRfZnJlZShjb24p OworKwkJaWYgKCEqc2MpCisrCQkJcmV0dXJuIC0xOworKwl9CisrI2lmZGVmIEhBVkVfR0VUX0RF RkFVTFRfQ09OVEVYVF9XSVRIX0xFVkVMCisrCWlmIChsdmwgIT0gTlVMTCAmJiBsdmxbMF0pIHsK KysJCS8qIHZlcmlmeSB0aGF0IHRoZSByZXF1ZXN0ZWQgcmFuZ2UgaXMgb2J0YWluZWQgKi8KKysJ CWNvbnRleHRfdCBjb247CisrCQlzZWN1cml0eV9jb250ZXh0X3Qgb2J0YWluZWRfcmF3OworKwkJ c2VjdXJpdHlfY29udGV4dF90IHJlcXVlc3RlZF9yYXc7CisrCQljb24gPSBjb250ZXh0X25ldygq c2MpOworKwkJaWYgKCFjb24pIHsKKysJCQlnb3RvIG91dDsKKysJCX0KKysJCWNvbnRleHRfcmFu Z2Vfc2V0KGNvbiwgbHZsKTsKKysJCWlmIChzZWxpbnV4X3RyYW5zX3RvX3Jhd19jb250ZXh0KCpz YywgJm9idGFpbmVkX3JhdykgPCAwKSB7CisrCQkJY29udGV4dF9mcmVlKGNvbik7CisrCQkJZ290 byBvdXQ7CisrCQl9CisrCQlpZiAoc2VsaW51eF90cmFuc190b19yYXdfY29udGV4dChjb250ZXh0 X3N0cihjb24pLCAmcmVxdWVzdGVkX3JhdykgPCAwKSB7CisrCQkJZnJlZWNvbihvYnRhaW5lZF9y YXcpOworKwkJCWNvbnRleHRfZnJlZShjb24pOworKwkJCWdvdG8gb3V0OworKwkJfQorKworKwkJ ZGVidWcoImdldF91c2VyX2NvbnRleHQ6IG9idGFpbmVkIGNvbnRleHQgJyVzJyByZXF1ZXN0ZWQg Y29udGV4dCAnJXMnIiwKKysJCQlvYnRhaW5lZF9yYXcsIHJlcXVlc3RlZF9yYXcpOworKwkJaWYg KHN0cmNtcChvYnRhaW5lZF9yYXcsIHJlcXVlc3RlZF9yYXcpKSB7CisrCQkJLyogc2V0IHRoZSBj b250ZXh0IHRvIHRoZSByZWFsIHJlcXVlc3RlZCBvbmUgYnV0IGZhaWwgKi8KKysJCQlmcmVlY29u KHJlcXVlc3RlZF9yYXcpOworKwkJCWZyZWVjb24ob2J0YWluZWRfcmF3KTsKKysJCQlmcmVlY29u KCpzYyk7CisrCQkJKnNjID0gc3RyZHVwKGNvbnRleHRfc3RyKGNvbikpOworKwkJCWNvbnRleHRf ZnJlZShjb24pOworKwkJCXJldHVybiAtMTsKKysJCX0KKysJCWZyZWVjb24ocmVxdWVzdGVkX3Jh dyk7CisrCQlmcmVlY29uKG9idGFpbmVkX3Jhdyk7CisrCQljb250ZXh0X2ZyZWUoY29uKTsKKysJ fQorKyNlbmRpZgorKwlyZXR1cm4gMDsKKysgICAgICBvdXQ6CisrCWZyZWVjb24oKnNjKTsKKysJ KnNjID0gTlVMTDsKKysJcmV0dXJuIC0xOworK30KKysKKytzdGF0aWMgdm9pZAorK3NzaF9zZWxp bnV4X2dldF9yb2xlX2xldmVsKGNoYXIgKipyb2xlLCBjb25zdCBjaGFyICoqbGV2ZWwsCisrICAg IEF1dGhjdHh0ICp0aGVfYXV0aGN0eHQpCisreworKwkqcm9sZSA9IE5VTEw7CisrCSpsZXZlbCA9 IE5VTEw7CisrCWlmICh0aGVfYXV0aGN0eHQpIHsKKysJCWlmICh0aGVfYXV0aGN0eHQtPnJvbGUg IT0gTlVMTCkgeworKwkJCWNoYXIgKnNsYXNoOworKwkJCSpyb2xlID0geHN0cmR1cCh0aGVfYXV0 aGN0eHQtPnJvbGUpOworKwkJCWlmICgoc2xhc2ggPSBzdHJjaHIoKnJvbGUsICcvJykpICE9IE5V TEwpIHsKKysJCQkJKnNsYXNoID0gJ1wwJzsKKysJCQkJKmxldmVsID0gc2xhc2ggKyAxOworKwkJ CX0KKysJCX0KKysJfQorK30KKysKKysvKiBSZXR1cm4gdGhlIGRlZmF1bHQgc2VjdXJpdHkgY29u dGV4dCBmb3IgdGhlIGdpdmVuIHVzZXJuYW1lICovCisrc3RhdGljIGludAorK3NzaGRfc2VsaW51 eF9nZXRjdHhieW5hbWUoY2hhciAqcHduYW1lLCBzZWN1cml0eV9jb250ZXh0X3QgKmRlZmF1bHRf c2MsCisrICAgIHNlY3VyaXR5X2NvbnRleHRfdCAqdXNlcl9zYywgaW50IGluZXRkLCBBdXRoY3R4 dCAqdGhlX2F1dGhjdHh0KQorK3sKKysJY2hhciAqc2VuYW1lLCAqbHZsOworKwljaGFyICpyb2xl OworKwljb25zdCBjaGFyICpyZXFsdmw7CisrCWludCByID0gMDsKKysJY29udGV4dF90IGNvbiA9 IE5VTEw7CisrCisrCXNzaF9zZWxpbnV4X2dldF9yb2xlX2xldmVsKCZyb2xlLCAmcmVxbHZsLCB0 aGVfYXV0aGN0eHQpOworKworKyNpZmRlZiBIQVZFX0dFVFNFVVNFUkJZTkFNRQorKwlpZiAoKHI9 Z2V0c2V1c2VyYnluYW1lKHB3bmFtZSwgJnNlbmFtZSwgJmx2bCkpICE9IDApIHsKKysJCXNlbmFt ZSA9IE5VTEw7CisrCQlsdmwgPSBOVUxMOworKwl9CisrI2Vsc2UKKysJc2VuYW1lID0gcHduYW1l OworKwlsdmwgPSAiIjsKKysjZW5kaWYKKysKKysJaWYgKHIgPT0gMCkgeworKyNpZmRlZiBIQVZF X0dFVF9ERUZBVUxUX0NPTlRFWFRfV0lUSF9MRVZFTAorKwkJciA9IGdldF9kZWZhdWx0X2NvbnRl eHRfd2l0aF9sZXZlbChzZW5hbWUsIGx2bCwgTlVMTCwgZGVmYXVsdF9zYyk7CisrI2Vsc2UKKysJ CXIgPSBnZXRfZGVmYXVsdF9jb250ZXh0KHNlbmFtZSwgTlVMTCwgZGVmYXVsdF9zYyk7CisrI2Vu ZGlmCisrCX0KKysKKysJaWYgKHIgPT0gMCkgeworKwkJLyogSWYgbGF1bmNoZWQgZnJvbSB4aW5l dGQsIHdlIG11c3QgdXNlIGN1cnJlbnQgbGV2ZWwgKi8KKysJCWlmIChpbmV0ZCkgeworKwkJCXNl Y3VyaXR5X2NvbnRleHRfdCBzc2hkc2M9TlVMTDsKKysKKysJCQlpZiAoZ2V0Y29uX3Jhdygmc3No ZHNjKSA8IDApCisrCQkJCWZhdGFsKCJmYWlsZWQgdG8gYWxsb2NhdGUgc2VjdXJpdHkgY29udGV4 dCIpOworKworKwkJCWlmICgoY29uPWNvbnRleHRfbmV3KHNzaGRzYykpID09IE5VTEwpCisrCQkJ CWZhdGFsKCJmYWlsZWQgdG8gYWxsb2NhdGUgc2VsaW51eCBjb250ZXh0Iik7CisrCQkJcmVxbHZs ID0gY29udGV4dF9yYW5nZV9nZXQoY29uKTsKKysJCQlmcmVlY29uKHNzaGRzYyk7CisrCQkJaWYg KHJlcWx2bCAhPU5VTEwgJiYgbHZsICE9IE5VTEwgJiYgc3RyY21wKHJlcWx2bCwgbHZsKSA9PSAw KQorKwkJCSAgICAvKiB3ZSBhY3R1YWxseSBkb24ndCBjaGFuZ2UgbGV2ZWwgKi8KKysJCQkgICAg cmVxbHZsID0gIiI7CisrCisrCQkJZGVidWdfZigiY3VycmVudCBjb25uZWN0aW9uIGxldmVsICcl cyciLCByZXFsdmwpOworKworKwkJfQorKworKwkJaWYgKChyZXFsdmwgIT0gTlVMTCAmJiByZXFs dmxbMF0pIHx8IChyb2xlICE9IE5VTEwgJiYgcm9sZVswXSkpIHsKKysJCQlyID0gZ2V0X3VzZXJf Y29udGV4dChzZW5hbWUsIHJvbGUsIHJlcWx2bCwgdXNlcl9zYyk7CisrCisrCQkJaWYgKHIgPT0g MCAmJiByZXFsdmwgIT0gTlVMTCAmJiByZXFsdmxbMF0pIHsKKysJCQkJc2VjdXJpdHlfY29udGV4 dF90IGRlZmF1bHRfbGV2ZWxfc2MgPSAqZGVmYXVsdF9zYzsKKysJCQkJaWYgKHJvbGUgIT0gTlVM TCAmJiByb2xlWzBdKSB7CisrCQkJCQlpZiAoZ2V0X3VzZXJfY29udGV4dChzZW5hbWUsIHJvbGUs IGx2bCwgJmRlZmF1bHRfbGV2ZWxfc2MpIDwgMCkKKysJCQkJCQlkZWZhdWx0X2xldmVsX3NjID0g KmRlZmF1bHRfc2M7CisrCQkJCX0KKysJCQkJLyogdmVyaWZ5IHRoYXQgdGhlIHJlcXVlc3RlZCBy YW5nZSBpcyBjb250YWluZWQgaW4gdGhlIHVzZXIgcmFuZ2UgKi8KKysJCQkJaWYgKG1sc19yYW5n ZV9hbGxvd2VkKGRlZmF1bHRfbGV2ZWxfc2MsICp1c2VyX3NjKSkgeworKwkJCQkJbG9naXQoInBl cm1pdCBNTFMgbGV2ZWwgJXMgKHVzZXIgcmFuZ2UgJXMpIiwgcmVxbHZsLCBsdmwpOworKwkJCQl9 IGVsc2UgeworKwkJCQkJciA9IC0xOworKwkJCQkJZXJyb3IoImRlbnkgTUxTIGxldmVsICVzICh1 c2VyIHJhbmdlICVzKSIsIHJlcWx2bCwgbHZsKTsKKysJCQkJfQorKwkJCQlpZiAoZGVmYXVsdF9s ZXZlbF9zYyAhPSAqZGVmYXVsdF9zYykKKysJCQkJCWZyZWVjb24oZGVmYXVsdF9sZXZlbF9zYyk7 CisrCQkJfQorKwkJfSBlbHNlIHsKKysJCQkqdXNlcl9zYyA9ICpkZWZhdWx0X3NjOworKwkJfQor Kwl9CisrCWlmIChyICE9IDApIHsKKysJCWVycm9yX2YoIkZhaWxlZCB0byBnZXQgZGVmYXVsdCBT RUxpbnV4IHNlY3VyaXR5ICIKKysJCSAgICAiY29udGV4dCBmb3IgJXMiLCBwd25hbWUpOworKwl9 CisrCisrI2lmZGVmIEhBVkVfR0VUU0VVU0VSQllOQU1FCisrCWZyZWUoc2VuYW1lKTsKKysJZnJl ZShsdmwpOworKyNlbmRpZgorKworKwlpZiAocm9sZSAhPSBOVUxMKQorKwkJZnJlZShyb2xlKTsK KysJaWYgKGNvbikKKysJCWNvbnRleHRfZnJlZShjb24pOworKworKwlyZXR1cm4gKHIpOworK30K KysKKysvKiBTZXR1cCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHBhbV9zZWxpbnV4ICovCisr c3RhdGljIGludAorK3NzaGRfc2VsaW51eF9zZXR1cF92YXJpYWJsZXMoaW50KCpzZXRfaXQpKGNo YXIgKiwgY29uc3QgY2hhciAqKSwgaW50IGluZXRkLAorKyAgICBBdXRoY3R4dCAqdGhlX2F1dGhj dHh0KQorK3sKKysJY29uc3QgY2hhciAqcmVxbHZsOworKwljaGFyICpyb2xlOworKwljaGFyICp1 c2VfY3VycmVudDsKKysJaW50IHJ2OworKworKwlkZWJ1ZzNfZigic2V0dGluZyBleGVjdXRpb24g Y29udGV4dCIpOworKworKwlzc2hfc2VsaW51eF9nZXRfcm9sZV9sZXZlbCgmcm9sZSwgJnJlcWx2 bCwgdGhlX2F1dGhjdHh0KTsKKysKKysJcnYgPSBzZXRfaXQoIlNFTElOVVhfUk9MRV9SRVFVRVNU RUQiLCByb2xlID8gcm9sZSA6ICIiKTsKKysKKysJaWYgKGluZXRkKSB7CisrCQl1c2VfY3VycmVu dCA9ICIxIjsKKysJfSBlbHNlIHsKKysJCXVzZV9jdXJyZW50ID0gIiI7CisrCQlydiA9IHJ2IHx8 IHNldF9pdCgiU0VMSU5VWF9MRVZFTF9SRVFVRVNURUQiLCByZXFsdmwgPyByZXFsdmw6ICIiKTsK KysJfQorKworKwlydiA9IHJ2IHx8IHNldF9pdCgiU0VMSU5VWF9VU0VfQ1VSUkVOVF9SQU5HRSIs IHVzZV9jdXJyZW50KTsKKysKKysJaWYgKHJvbGUgIT0gTlVMTCkKKysJCWZyZWUocm9sZSk7Cisr CisrCXJldHVybiBydjsKKyt9CisrCisrc3RhdGljIGludAorK3NzaGRfc2VsaW51eF9zZXR1cF9w YW1fdmFyaWFibGVzKGludCBpbmV0ZCwKKysgICAgaW50KHBhbV9zZXRlbnYpKGNoYXIgKiwgY29u c3QgY2hhciAqKSwgQXV0aGN0eHQgKnRoZV9hdXRoY3R4dCkKKyt7CisrCXJldHVybiBzc2hkX3Nl bGludXhfc2V0dXBfdmFyaWFibGVzKHBhbV9zZXRlbnYsIGluZXRkLCB0aGVfYXV0aGN0eHQpOwor K30KKysKKytzdGF0aWMgaW50CisrZG9fc2V0ZW52KGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZh bHVlKQorK3sKKysJcmV0dXJuIHNldGVudihuYW1lLCB2YWx1ZSwgMSk7CisrfQorKworK2ludAor K3NzaGRfc2VsaW51eF9zZXR1cF9lbnZfdmFyaWFibGVzKGludCBpbmV0ZCwgdm9pZCAqdGhlX2F1 dGhjdHh0KQorK3sKKysJQXV0aGN0eHQgKmF1dGhjdHh0ID0gKEF1dGhjdHh0ICopIHRoZV9hdXRo Y3R4dDsKKysJcmV0dXJuIHNzaGRfc2VsaW51eF9zZXR1cF92YXJpYWJsZXMoZG9fc2V0ZW52LCBp bmV0ZCwgYXV0aGN0eHQpOworK30KKysKKysvKiBTZXQgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRv IHRoZSBkZWZhdWx0IGZvciB0aGUgc3BlY2lmaWVkIHVzZXIgKi8KKyt2b2lkCisrc3NoZF9zZWxp bnV4X3NldHVwX2V4ZWNfY29udGV4dChjaGFyICpwd25hbWUsIGludCBpbmV0ZCwKKysgICAgaW50 KHBhbV9zZXRlbnYpKGNoYXIgKiwgY29uc3QgY2hhciAqKSwgdm9pZCAqdGhlX2F1dGhjdHh0LCBp bnQgdXNlX3BhbSkKKyt7CisrCXNlY3VyaXR5X2NvbnRleHRfdCB1c2VyX2N0eCA9IE5VTEw7Cisr CWludCByID0gMDsKKysJc2VjdXJpdHlfY29udGV4dF90IGRlZmF1bHRfY3R4ID0gTlVMTDsKKysJ QXV0aGN0eHQgKmF1dGhjdHh0ID0gKEF1dGhjdHh0ICopIHRoZV9hdXRoY3R4dDsKKysKKysJaWYg KCFzc2hkX3NlbGludXhfZW5hYmxlZCgpKQorKwkJcmV0dXJuOworKworKwlpZiAodXNlX3BhbSkg eworKwkJLyogZG8gbm90IGNvbXB1dGUgY29udGV4dCwganVzdCBzZXR1cCBlbnZpcm9ubWVudCBm b3IgcGFtX3NlbGludXggKi8KKysJCWlmIChzc2hkX3NlbGludXhfc2V0dXBfcGFtX3ZhcmlhYmxl cyhpbmV0ZCwgcGFtX3NldGVudiwgYXV0aGN0eHQpKSB7CisrCQkJc3dpdGNoIChzZWN1cml0eV9n ZXRlbmZvcmNlKCkpIHsKKysJCQljYXNlIC0xOgorKwkJCQlmYXRhbF9mKCJzZWN1cml0eV9nZXRl bmZvcmNlKCkgZmFpbGVkIik7CisrCQkJY2FzZSAwOgorKwkJCQllcnJvcl9mKCJTRUxpbnV4IFBB TSB2YXJpYWJsZSBzZXR1cCBmYWlsdXJlLiBDb250aW51aW5nIGluIHBlcm1pc3NpdmUgbW9kZS4i KTsKKysJCQlicmVhazsKKysJCQlkZWZhdWx0OgorKwkJCQlmYXRhbF9mKCJTRUxpbnV4IFBBTSB2 YXJpYWJsZSBzZXR1cCBmYWlsdXJlLiBBYm9ydGluZyBjb25uZWN0aW9uLiIpOworKwkJCX0KKysJ CX0KKysJCXJldHVybjsKKysJfQorKworKwlkZWJ1ZzNfZigic2V0dGluZyBleGVjdXRpb24gY29u dGV4dCIpOworKworKwlyID0gc3NoZF9zZWxpbnV4X2dldGN0eGJ5bmFtZShwd25hbWUsICZkZWZh dWx0X2N0eCwgJnVzZXJfY3R4LCBpbmV0ZCwgYXV0aGN0eHQpOworKwlpZiAociA+PSAwKSB7Cisr CQlyID0gc2V0ZXhlY2Nvbih1c2VyX2N0eCk7CisrCQlpZiAociA8IDApIHsKKysJCQllcnJvcl9m KCJGYWlsZWQgdG8gc2V0IFNFTGludXggZXhlY3V0aW9uIGNvbnRleHQgJXMgZm9yICVzIiwKKysJ CQkgICAgdXNlcl9jdHgsIHB3bmFtZSk7CisrCQl9CisrI2lmZGVmIEhBVkVfU0VUS0VZQ1JFQVRF Q09OCisrCQllbHNlIGlmIChzZXRrZXljcmVhdGVjb24odXNlcl9jdHgpIDwgMCkgeworKwkJCWVy cm9yX2YoIkZhaWxlZCB0byBzZXQgU0VMaW51eCBrZXlyaW5nIGNyZWF0aW9uIGNvbnRleHQgJXMg Zm9yICVzIiwKKysJCQkgICAgdXNlcl9jdHgsIHB3bmFtZSk7CisrCQl9CisrI2VuZGlmCisrCX0K KysJaWYgKHVzZXJfY3R4ID09IE5VTEwpIHsKKysJCXVzZXJfY3R4ID0gZGVmYXVsdF9jdHg7Cisr CX0KKysJaWYgKHIgPCAwIHx8IHVzZXJfY3R4ICE9IGRlZmF1bHRfY3R4KSB7CisrCQkvKiBhdWRp dCBqdXN0IHRoZSBjYXNlIHdoZW4gdXNlciBjaGFuZ2VkIGEgcm9sZSBvciB0aGVyZSB3YXMKKysJ CSAgIGEgZmFpbHVyZSAqLworKwkJc3NoZF9zZWxpbnV4X3NlbmRfYXVkaXRfbWVzc2FnZShyID49 IDAsIGRlZmF1bHRfY3R4LCB1c2VyX2N0eCk7CisrCX0KKysJaWYgKHIgPCAwKSB7CisrCQlzd2l0 Y2ggKHNlY3VyaXR5X2dldGVuZm9yY2UoKSkgeworKwkJY2FzZSAtMToKKysJCQlmYXRhbF9mKCJz ZWN1cml0eV9nZXRlbmZvcmNlKCkgZmFpbGVkIik7CisrCQljYXNlIDA6CisrCQkJZXJyb3JfZigi RUxpbnV4IGZhaWx1cmUuIENvbnRpbnVpbmcgaW4gcGVybWlzc2l2ZSBtb2RlLiIpOworKwkJCWJy ZWFrOworKwkJZGVmYXVsdDoKKysJCQlmYXRhbF9mKCJTRUxpbnV4IGZhaWx1cmUuIEFib3J0aW5n IGNvbm5lY3Rpb24uIik7CisrCQl9CisrCX0KKysJaWYgKHVzZXJfY3R4ICE9IE5VTEwgJiYgdXNl cl9jdHggIT0gZGVmYXVsdF9jdHgpCisrCQlmcmVlY29uKHVzZXJfY3R4KTsKKysJaWYgKGRlZmF1 bHRfY3R4ICE9IE5VTEwpCisrCQlmcmVlY29uKGRlZmF1bHRfY3R4KTsKKysKKysJZGVidWczX2Yo ImRvbmUiKTsKKyt9CisrCisrI2VuZGlmCisrI2VuZGlmCisrCitkaWZmIC0tZ2l0IGEvb3BlbmJz ZC1jb21wYXQvcG9ydC1saW51eC5jIGIvb3BlbmJzZC1jb21wYXQvcG9ydC1saW51eC5jCitpbmRl eCBjMWQ1NGYzOGQuLjc0MjZmNmY3OSAxMDA2NDQKKy0tLSBhL29wZW5ic2QtY29tcGF0L3BvcnQt bGludXguYworKysrIGIvb3BlbmJzZC1jb21wYXQvcG9ydC1saW51eC5jCitAQCAtMTA5LDM3ICsx MDksNiBAQCBzc2hfc2VsaW51eF9nZXRjdHhieW5hbWUoY2hhciAqcHduYW1lKQorIAlyZXR1cm4g c2M7CisgfQorIAorLS8qIFNldCB0aGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdGhlIGRlZmF1bHQg Zm9yIHRoZSBzcGVjaWZpZWQgdXNlciAqLworLXZvaWQKKy1zc2hfc2VsaW51eF9zZXR1cF9leGVj X2NvbnRleHQoY2hhciAqcHduYW1lKQorLXsKKy0JY2hhciAqdXNlcl9jdHggPSBOVUxMOworLQor LQlpZiAoIXNzaF9zZWxpbnV4X2VuYWJsZWQoKSkKKy0JCXJldHVybjsKKy0KKy0JZGVidWczKCIl czogc2V0dGluZyBleGVjdXRpb24gY29udGV4dCIsIF9fZnVuY19fKTsKKy0KKy0JdXNlcl9jdHgg PSBzc2hfc2VsaW51eF9nZXRjdHhieW5hbWUocHduYW1lKTsKKy0JaWYgKHNldGV4ZWNjb24odXNl cl9jdHgpICE9IDApIHsKKy0JCXN3aXRjaCAoc2VjdXJpdHlfZ2V0ZW5mb3JjZSgpKSB7CistCQlj YXNlIC0xOgorLQkJCWZhdGFsKCIlczogc2VjdXJpdHlfZ2V0ZW5mb3JjZSgpIGZhaWxlZCIsIF9f ZnVuY19fKTsKKy0JCWNhc2UgMDoKKy0JCQllcnJvcigiJXM6IEZhaWxlZCB0byBzZXQgU0VMaW51 eCBleGVjdXRpb24gIgorLQkJCSAgICAiY29udGV4dCBmb3IgJXMiLCBfX2Z1bmNfXywgcHduYW1l KTsKKy0JCQlicmVhazsKKy0JCWRlZmF1bHQ6CistCQkJZmF0YWwoIiVzOiBGYWlsZWQgdG8gc2V0 IFNFTGludXggZXhlY3V0aW9uIGNvbnRleHQgIgorLQkJCSAgICAiZm9yICVzIChpbiBlbmZvcmNp bmcgbW9kZSkiLCBfX2Z1bmNfXywgcHduYW1lKTsKKy0JCX0KKy0JfQorLQlpZiAodXNlcl9jdHgg IT0gTlVMTCkKKy0JCWZyZWVjb24odXNlcl9jdHgpOworLQorLQlkZWJ1ZzMoIiVzOiBkb25lIiwg X19mdW5jX18pOworLX0KKy0KKyAvKiBTZXQgdGhlIFRUWSBjb250ZXh0IGZvciB0aGUgc3BlY2lm aWVkIHVzZXIgKi8KKyB2b2lkCisgc3NoX3NlbGludXhfc2V0dXBfcHR5KGNoYXIgKnB3bmFtZSwg Y29uc3QgY2hhciAqdHR5KQorQEAgLTE1Miw3ICsxMjEsMTEgQEAgc3NoX3NlbGludXhfc2V0dXBf cHR5KGNoYXIgKnB3bmFtZSwgY29uc3QgY2hhciAqdHR5KQorIAorIAlkZWJ1ZzMoIiVzOiBzZXR0 aW5nIFRUWSBjb250ZXh0IG9uICVzIiwgX19mdW5jX18sIHR0eSk7CisgCistCXVzZXJfY3R4ID0g c3NoX3NlbGludXhfZ2V0Y3R4YnluYW1lKHB3bmFtZSk7CisrCWlmIChnZXRleGVjY29uKCZ1c2Vy X2N0eCkgIT0gMCkgeworKwkJZXJyb3JfZigiZ2V0ZXhlY2NvbjogJXMiLCBzdHJlcnJvcihlcnJu bykpOworKwkJZ290byBvdXQ7CisrCX0KKysKKyAKKyAJLyogWFhYOiBzaG91bGQgdGhlc2UgY2Fs bHMgZmF0YWwoKSB1cG9uIGZhaWx1cmUgaW4gZW5mb3JjaW5nIG1vZGU/ICovCisgCitkaWZmIC0t Z2l0IGEvb3BlbmJzZC1jb21wYXQvcG9ydC1saW51eC5oIGIvb3BlbmJzZC1jb21wYXQvcG9ydC1s aW51eC5oCitpbmRleCA5NTk0MzBkZTEuLjI2YzVmNzczYiAxMDA2NDQKKy0tLSBhL29wZW5ic2Qt Y29tcGF0L3BvcnQtbGludXguaAorKysrIGIvb3BlbmJzZC1jb21wYXQvcG9ydC1saW51eC5oCitA QCAtMjAsOSArMjAsMTIgQEAKKyAjaWZkZWYgV0lUSF9TRUxJTlVYCisgaW50IHNzaF9zZWxpbnV4 X2VuYWJsZWQodm9pZCk7Cisgdm9pZCBzc2hfc2VsaW51eF9zZXR1cF9wdHkoY2hhciAqLCBjb25z dCBjaGFyICopOworLXZvaWQgc3NoX3NlbGludXhfc2V0dXBfZXhlY19jb250ZXh0KGNoYXIgKik7 Cisgdm9pZCBzc2hfc2VsaW51eF9jaGFuZ2VfY29udGV4dChjb25zdCBjaGFyICopOworIHZvaWQg c3NoX3NlbGludXhfc2V0ZnNjcmVhdGVjb24oY29uc3QgY2hhciAqKTsKKysKKytpbnQgc3NoZF9z ZWxpbnV4X2VuYWJsZWQodm9pZCk7Cisrdm9pZCBzc2hkX3NlbGludXhfc2V0dXBfZXhlY19jb250 ZXh0KGNoYXIgKiwgaW50LCBpbnQoY2hhciAqLCBjb25zdCBjaGFyICopLCB2b2lkICosIGludCk7 CisraW50IHNzaGRfc2VsaW51eF9zZXR1cF9lbnZfdmFyaWFibGVzKGludCBpbmV0ZCwgdm9pZCAq KTsKKyAjZW5kaWYKKyAKKyAjaWZkZWYgTElOVVhfT09NX0FESlVTVAorZGlmZiAtLWdpdCBhL3Bs YXRmb3JtLmMgYi9wbGF0Zm9ybS5jCitpbmRleCBmZDFhN2E3YzIuLjY2ZDBjMmE2YiAxMDA2NDQK Ky0tLSBhL3BsYXRmb3JtLmMKKysrKyBiL3BsYXRmb3JtLmMKK0BAIC0zMyw2ICszMyw4IEBACisg I2luY2x1ZGUgIm9wZW5ic2QtY29tcGF0L29wZW5ic2QtY29tcGF0LmgiCisgCisgZXh0ZXJuIFNl cnZlck9wdGlvbnMgb3B0aW9uczsKKytleHRlcm4gaW50IGluZXRkX2ZsYWc7CisrZXh0ZXJuIEF1 dGhjdHh0ICp0aGVfYXV0aGN0eHQ7CisgCisgLyogcmV0dXJuIDEgaWYgd2UgYXJlIHJ1bm5pbmcg d2l0aCBwcml2aWxlZ2UgdG8gc3dhcCBVSURzLCAwIG90aGVyd2lzZSAqLworIGludAorQEAgLTU1 LDcgKzU3LDcgQEAgcGxhdGZvcm1fc2V0dXNlcmNvbnRleHQoc3RydWN0IHBhc3N3ZCAqcHcpCisg eworICNpZmRlZiBXSVRIX1NFTElOVVgKKyAJLyogQ2FjaGUgc2VsaW51eCBzdGF0dXMgZm9yIGxh dGVyIHVzZSAqLworLQkodm9pZClzc2hfc2VsaW51eF9lbmFibGVkKCk7CisrCSh2b2lkKXNzaGRf c2VsaW51eF9lbmFibGVkKCk7CisgI2VuZGlmCisgCisgI2lmZGVmIFVTRV9TT0xBUklTX1BST0pF Q1RTCitAQCAtMTQwLDcgKzE0Miw5IEBAIHBsYXRmb3JtX3NldHVzZXJjb250ZXh0X3Bvc3RfZ3Jv dXBzKHN0cnVjdCBwYXNzd2QgKnB3KQorIAl9CisgI2VuZGlmIC8qIEhBVkVfU0VUUENSRUQgKi8K KyAjaWZkZWYgV0lUSF9TRUxJTlVYCistCXNzaF9zZWxpbnV4X3NldHVwX2V4ZWNfY29udGV4dChw dy0+cHdfbmFtZSk7CisrCXNzaGRfc2VsaW51eF9zZXR1cF9leGVjX2NvbnRleHQocHctPnB3X25h bWUsCisrCSAgICBpbmV0ZF9mbGFnLCBkb19wYW1fcHV0ZW52LCB0aGVfYXV0aGN0eHQsCisrCSAg ICBvcHRpb25zLnVzZV9wYW0pOworICNlbmRpZgorIH0KKyAKK2RpZmYgLS1naXQgYS9zc2hkLXNl c3Npb24uYyBiL3NzaGQtc2Vzc2lvbi5jCitpbmRleCBiZTMwYzhkNzAuLmQ3ZDRmMzJjNSAxMDA2 NDQKKy0tLSBhL3NzaGQtc2Vzc2lvbi5jCisrKysgYi9zc2hkLXNlc3Npb24uYworQEAgLTEyMyw3 ICsxMjMsNyBAQCBjaGFyICpjb25maWdfZmlsZV9uYW1lID0gX1BBVEhfU0VSVkVSX0NPTkZJR19G SUxFOworIGludCBkZWJ1Z19mbGFnID0gMDsKKyAKKyAvKiBGbGFnIGluZGljYXRpbmcgdGhhdCB0 aGUgZGFlbW9uIGlzIGJlaW5nIHN0YXJ0ZWQgZnJvbSBpbmV0ZC4gKi8KKy1zdGF0aWMgaW50IGlu ZXRkX2ZsYWcgPSAwOworK2ludCBpbmV0ZF9mbGFnID0gMDsKKyAKKyAvKiBkZWJ1ZyBnb2VzIHRv IHN0ZGVyciB1bmxlc3MgaW5ldGRfZmxhZyBpcyBzZXQgKi8KKyBzdGF0aWMgaW50IGxvZ19zdGRl cnIgPSAwOworQEAgLTEyNzUsNiArMTI3NSwxMSBAQCBtYWluKGludCBhYywgY2hhciAqKmF2KQor IAkJcmVzdG9yZV91aWQoKTsKKyAJfQorICNlbmRpZgorKyNpZmRlZiBXSVRIX1NFTElOVVgKKysJ c3NoZF9zZWxpbnV4X3NldHVwX2V4ZWNfY29udGV4dChhdXRoY3R4dC0+cHctPnB3X25hbWUsCisr CSAgICBpbmV0ZF9mbGFnLCBkb19wYW1fcHV0ZW52LCB0aGVfYXV0aGN0eHQsCisrCSAgICBvcHRp b25zLnVzZV9wYW0pOworKyNlbmRpZgorICNpZmRlZiBVU0VfUEFNCisgCWlmIChvcHRpb25zLnVz ZV9wYW0pIHsKKyAJCWRvX3BhbV9zZXRjcmVkKCk7CistLSAKKzIuNTUuMAorCgpkaWZmIC0tZ2l0 IGEvMDAwMy1QYXNzLWluZXRkLWZsYWdzLWFuZC1hdXRoLWNvbnRleHQtdG8tc3VicHJvY2Vzcy1j YWxsLnBhdGNoIGIvMDAwMy1QYXNzLWluZXRkLWZsYWdzLWFuZC1hdXRoLWNvbnRleHQtdG8tc3Vi cHJvY2Vzcy1jYWxsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzlhNmVm Li4wMDAwMDAwCi0tLSBhLzAwMDMtUGFzcy1pbmV0ZC1mbGFncy1hbmQtYXV0aC1jb250ZXh0LXRv LXN1YnByb2Nlc3MtY2FsbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLUZy b20gODQyM2U4OTJkNzUzMjU4OWMyZGYwNTk4NDcwZTAxZWFhMzgzZmI2YiBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKLUZyb206IERtaXRyeSBCZWx5YXZza2l5IDxiZWxkbWl0QGdtYWlsLmNvbT4K LURhdGU6IE1vbiwgMTMgQXByIDIwMjYgMTQ6MDc6MDIgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAw My81NF0gUGFzcyBpbmV0ZCBmbGFncyBhbmQgYXV0aCBjb250ZXh0IHRvIHN1YnByb2Nlc3MgY2Fs bHMKLSBmb3IgU0VMaW51eAotCi1vcGVuc3NoLTcuNnAxLXN1YnByb2Nlc3Mtc2VsaW51eAotCi1Q YXNzIGluZXRkIGZsYWdzIGFuZCBhdXRoZW50aWNhdGlvbiBjb250ZXh0IGRvd24gdG8gc3VicHJv Y2VzcyBjYWxscwotZm9yIFNFTGludXggZW52aXJvbm1lbnQgc2V0dXAuIFRoaXMgZW5zdXJlcyB0 aGF0IEF1dGhvcml6ZWRLZXlzQ29tbWFuZAotYW5kIEF1dGhvcml6ZWRQcmluY2lwYWxzQ29tbWFu ZCBzdWJwcm9jZXNzZXMgcnVuIHdpdGggdGhlIGNvcnJlY3QKLVNFTGludXggY29udGV4dCBiYXNl ZCBvbiB0aGUgYXV0aGVudGljYXRlZCB1c2VyJ3Mgcm9sZSBhbmQgbGV2ZWwuCi0KLUNoYW5nZXM6 Ci0tIG1pc2MuYzogVXBkYXRlIHN1YnByb2Nlc3MoKSBmdW5jdGlvbiBzaWduYXR1cmUgdG8gYWNj ZXB0IGluZXRkIGFuZAotICB0aGVfYXV0aGN0eHQgcGFyYW1ldGVyczsgYWRkIHNzaGRfc2VsaW51 eF9zZXR1cF9lbnZfdmFyaWFibGVzKCkgY2FsbAotICBpbiBjaGlsZCBwcm9jZXNzIGJlZm9yZSBl eGVjdmUKLS0gbWlzYy5oOiBVcGRhdGUgc3VicHJvY2VzcygpIGZ1bmN0aW9uIGRlY2xhcmF0aW9u Ci0tIGF1dGgyLXB1YmtleS5jOiBBZGQgZXh0ZXJuIGRlY2xhcmF0aW9ucyBmb3IgaW5ldGRfZmxh ZyBhbmQKLSAgdGhlX2F1dGhjdHh0OyBwYXNzIHRoZW0gdG8gc3VicHJvY2VzcygpIGNhbGxzIGZv cgotICBBdXRob3JpemVkS2V5c0NvbW1hbmQgYW5kIEF1dGhvcml6ZWRQcmluY2lwYWxzQ29tbWFu ZAotLSBzc2hjb25uZWN0LmM6IFVwZGF0ZSBzdWJwcm9jZXNzKCkgY2FsbCB3aXRoIG5ldyBwYXJh bWV0ZXJzICgwLCBOVUxMKQotLSBzc2hkLWF1dGguYzogTWFrZSBpbmV0ZF9mbGFnIG5vbi1zdGF0 aWMgKGV4dGVybikKLS0gc3NoZC1zZXNzaW9uLmM6IE1ha2UgaW5ldGRfZmxhZyBub24tc3RhdGlj IChleHRlcm4pCi0KLUNvLUF1dGhvcmVkLUJ5OiBDbGF1ZGUgU29ubmV0IDQuNSA8bm9yZXBseUBh bnRocm9waWMuY29tPgotLS0tCi0gbWlzYy5oICAgICAgIHwgMiArLQotIHNzaGNvbm5lY3QuYyB8 IDIgKy0KLSBzc2hkLWF1dGguYyAgfCAyICstCi0gMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlv bnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9taXNjLmggYi9taXNjLmgKLWlu ZGV4IDc5MTg3NmMxZS4uZmUxMWY5ZDhhIDEwMDY0NAotLS0tIGEvbWlzYy5oCi0rKysgYi9taXNj LmgKLUBAIC0xMjksNyArMTI5LDcgQEAgdHlwZWRlZiB2b2lkIHByaXZyZXN0b3JlX2ZuKHZvaWQp OwotICNkZWZpbmUJU1NIX1NVQlBST0NFU1NfVU5TQUZFX1BBVEgJKDE8PDMpCS8qIERvbid0IGNo ZWNrIGZvciBzYWZlIGNtZCAqLwotICNkZWZpbmUJU1NIX1NVQlBST0NFU1NfUFJFU0VSVkVfRU5W CSgxPDw0KQkvKiBLZWVwIHBhcmVudCBlbnZpcm9ubWVudCAqLwotIHBpZF90IHN1YnByb2Nlc3Mo Y29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCwgY2hhciAqKiwgRklMRSAqKiwgdV9pbnQs Ci0tICAgIHN0cnVjdCBwYXNzd2QgKiwgcHJpdmRyb3BfZm4gKiwgcHJpdnJlc3RvcmVfZm4gKik7 Ci0rICAgIHN0cnVjdCBwYXNzd2QgKiwgcHJpdmRyb3BfZm4gKiwgcHJpdnJlc3RvcmVfZm4gKiwg aW50LCB2b2lkICopOwotIAotIHR5cGVkZWYgc3RydWN0IGFyZ2xpc3QgYXJnbGlzdDsKLSBzdHJ1 Y3QgYXJnbGlzdCB7Ci1kaWZmIC0tZ2l0IGEvc3NoY29ubmVjdC5jIGIvc3NoY29ubmVjdC5jCi1p bmRleCA0Mzg0Mjc3YTYuLjVlNzYxNTYxZCAxMDA2NDQKLS0tLSBhL3NzaGNvbm5lY3QuYwotKysr IGIvc3NoY29ubmVjdC5jCi1AQCAtOTExLDcgKzkxMSw3IEBAIGxvYWRfaG9zdGtleXNfY29tbWFu ZChzdHJ1Y3QgaG9zdGtleXMgKmhvc3RrZXlzLCBjb25zdCBjaGFyICpjb21tYW5kX3RlbXBsYXRl LAotIAotIAlpZiAoKHBpZCA9IHN1YnByb2Nlc3ModGFnLCBjb21tYW5kLCBhYywgYXYsICZmLAot IAkgICAgU1NIX1NVQlBST0NFU1NfU1RET1VUX0NBUFRVUkV8U1NIX1NVQlBST0NFU1NfVU5TQUZF X1BBVEh8Ci0tCSAgICBTU0hfU1VCUFJPQ0VTU19QUkVTRVJWRV9FTlYsIE5VTEwsIE5VTEwsIE5V TEwpKSA9PSAwKQotKwkgICAgU1NIX1NVQlBST0NFU1NfUFJFU0VSVkVfRU5WLCBOVUxMLCBOVUxM LCBOVUxMLCAwLCBOVUxMKSkgPT0gMCkKLSAJCWdvdG8gb3V0OwotIAotIAlsb2FkX2hvc3RrZXlz X2ZpbGUoaG9zdGtleXMsIGhvc3RmaWxlX2hvc3RuYW1lLCB0YWcsIGYsIDEpOwotZGlmZiAtLWdp dCBhL3NzaGQtYXV0aC5jIGIvc3NoZC1hdXRoLmMKLWluZGV4IDc2MzUwYTJhMy4uNzNhY2IwZGJl IDEwMDY0NAotLS0tIGEvc3NoZC1hdXRoLmMKLSsrKyBiL3NzaGQtYXV0aC5jCi1AQCAtMTE5LDcg KzExOSw3IEBAIGNoYXIgKmNvbmZpZ19maWxlX25hbWUgPSBfUEFUSF9TRVJWRVJfQ09ORklHX0ZJ TEU7Ci0gaW50IGRlYnVnX2ZsYWcgPSAwOwotIAotIC8qIEZsYWcgaW5kaWNhdGluZyB0aGF0IHRo ZSBkYWVtb24gaXMgYmVpbmcgc3RhcnRlZCBmcm9tIGluZXRkLiAqLwotLXN0YXRpYyBpbnQgaW5l dGRfZmxhZyA9IDA7Ci0raW50IGluZXRkX2ZsYWcgPSAwOwotIAotIC8qIFNhdmVkIGFyZ3VtZW50 cyB0byBtYWluKCkuICovCi0gc3RhdGljIGNoYXIgKipzYXZlZF9hcmd2OwotLS0gCi0yLjUzLjAK LQoKZGlmZiAtLWdpdCBhLzAwMDQtUGFzcy1pbmV0ZC1mbGFncy1hbmQtYXV0aC1jb250ZXh0LXRv LXN1YnByb2Nlc3MtY2FsbC5wYXRjaCBiLzAwMDQtUGFzcy1pbmV0ZC1mbGFncy1hbmQtYXV0aC1j b250ZXh0LXRvLXN1YnByb2Nlc3MtY2FsbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi44YTY1NTVkCi0tLSAvZGV2L251bGwKKysrIGIvMDAwNC1QYXNzLWluZXRkLWZs YWdzLWFuZC1hdXRoLWNvbnRleHQtdG8tc3VicHJvY2Vzcy1jYWxsLnBhdGNoCkBAIC0wLDAgKzEs NzQgQEAKK0Zyb20gZGY2NzY4NWMwMjlhMDAxY2U0ZWVkNThhZWJkNTIyYzFkYmY1NGNkNSBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERtaXRyeSBCZWx5YXZza2l5IDxiZWxkbWl0QGdt YWlsLmNvbT4KK0RhdGU6IE1vbiwgMTMgQXByIDIwMjYgMTQ6MDc6MDIgKzAyMDAKK1N1YmplY3Q6 IFtQQVRDSCAwNC81NF0gUGFzcyBpbmV0ZCBmbGFncyBhbmQgYXV0aCBjb250ZXh0IHRvIHN1YnBy b2Nlc3MgY2FsbHMKKyBmb3IgU0VMaW51eAorCitvcGVuc3NoLTcuNnAxLXN1YnByb2Nlc3Mtc2Vs aW51eAorCitQYXNzIGluZXRkIGZsYWdzIGFuZCBhdXRoZW50aWNhdGlvbiBjb250ZXh0IGRvd24g dG8gc3VicHJvY2VzcyBjYWxscworZm9yIFNFTGludXggZW52aXJvbm1lbnQgc2V0dXAuIFRoaXMg ZW5zdXJlcyB0aGF0IEF1dGhvcml6ZWRLZXlzQ29tbWFuZAorYW5kIEF1dGhvcml6ZWRQcmluY2lw YWxzQ29tbWFuZCBzdWJwcm9jZXNzZXMgcnVuIHdpdGggdGhlIGNvcnJlY3QKK1NFTGludXggY29u dGV4dCBiYXNlZCBvbiB0aGUgYXV0aGVudGljYXRlZCB1c2VyJ3Mgcm9sZSBhbmQgbGV2ZWwuCisK K0NoYW5nZXM6CistIG1pc2MuYzogVXBkYXRlIHN1YnByb2Nlc3MoKSBmdW5jdGlvbiBzaWduYXR1 cmUgdG8gYWNjZXB0IGluZXRkIGFuZAorICB0aGVfYXV0aGN0eHQgcGFyYW1ldGVyczsgYWRkIHNz aGRfc2VsaW51eF9zZXR1cF9lbnZfdmFyaWFibGVzKCkgY2FsbAorICBpbiBjaGlsZCBwcm9jZXNz IGJlZm9yZSBleGVjdmUKKy0gbWlzYy5oOiBVcGRhdGUgc3VicHJvY2VzcygpIGZ1bmN0aW9uIGRl Y2xhcmF0aW9uCistIGF1dGgyLXB1YmtleS5jOiBBZGQgZXh0ZXJuIGRlY2xhcmF0aW9ucyBmb3Ig aW5ldGRfZmxhZyBhbmQKKyAgdGhlX2F1dGhjdHh0OyBwYXNzIHRoZW0gdG8gc3VicHJvY2Vzcygp IGNhbGxzIGZvcgorICBBdXRob3JpemVkS2V5c0NvbW1hbmQgYW5kIEF1dGhvcml6ZWRQcmluY2lw YWxzQ29tbWFuZAorLSBzc2hjb25uZWN0LmM6IFVwZGF0ZSBzdWJwcm9jZXNzKCkgY2FsbCB3aXRo IG5ldyBwYXJhbWV0ZXJzICgwLCBOVUxMKQorLSBzc2hkLWF1dGguYzogTWFrZSBpbmV0ZF9mbGFn IG5vbi1zdGF0aWMgKGV4dGVybikKKy0gc3NoZC1zZXNzaW9uLmM6IE1ha2UgaW5ldGRfZmxhZyBu b24tc3RhdGljIChleHRlcm4pCisKK0NvLUF1dGhvcmVkLUJ5OiBDbGF1ZGUgU29ubmV0IDQuNSA8 bm9yZXBseUBhbnRocm9waWMuY29tPgorLS0tCisgbWlzYy5oICAgICAgIHwgMiArLQorIHNzaGNv bm5lY3QuYyB8IDIgKy0KKyBzc2hkLWF1dGguYyAgfCAyICstCisgMyBmaWxlcyBjaGFuZ2VkLCAz IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9taXNjLmggYi9t aXNjLmgKK2luZGV4IDc5MTg3NmMxZS4uZmUxMWY5ZDhhIDEwMDY0NAorLS0tIGEvbWlzYy5oCisr KysgYi9taXNjLmgKK0BAIC0xMjksNyArMTI5LDcgQEAgdHlwZWRlZiB2b2lkIHByaXZyZXN0b3Jl X2ZuKHZvaWQpOworICNkZWZpbmUJU1NIX1NVQlBST0NFU1NfVU5TQUZFX1BBVEgJKDE8PDMpCS8q IERvbid0IGNoZWNrIGZvciBzYWZlIGNtZCAqLworICNkZWZpbmUJU1NIX1NVQlBST0NFU1NfUFJF U0VSVkVfRU5WCSgxPDw0KQkvKiBLZWVwIHBhcmVudCBlbnZpcm9ubWVudCAqLworIHBpZF90IHN1 YnByb2Nlc3MoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCwgY2hhciAqKiwgRklMRSAq KiwgdV9pbnQsCistICAgIHN0cnVjdCBwYXNzd2QgKiwgcHJpdmRyb3BfZm4gKiwgcHJpdnJlc3Rv cmVfZm4gKik7CisrICAgIHN0cnVjdCBwYXNzd2QgKiwgcHJpdmRyb3BfZm4gKiwgcHJpdnJlc3Rv cmVfZm4gKiwgaW50LCB2b2lkICopOworIAorIHR5cGVkZWYgc3RydWN0IGFyZ2xpc3QgYXJnbGlz dDsKKyBzdHJ1Y3QgYXJnbGlzdCB7CitkaWZmIC0tZ2l0IGEvc3NoY29ubmVjdC5jIGIvc3NoY29u bmVjdC5jCitpbmRleCAwZGRmYzc2YjMuLmJkYWFkZTY4MiAxMDA2NDQKKy0tLSBhL3NzaGNvbm5l Y3QuYworKysrIGIvc3NoY29ubmVjdC5jCitAQCAtOTU0LDcgKzk1NCw3IEBAIGxvYWRfaG9zdGtl eXNfY29tbWFuZChzdHJ1Y3QgaG9zdGtleXMgKmhvc3RrZXlzLCBjb25zdCBjaGFyICpjb21tYW5k X3RlbXBsYXRlLAorIAorIAlpZiAoKHBpZCA9IHN1YnByb2Nlc3ModGFnLCBjb21tYW5kLCBhYywg YXYsICZmLAorIAkgICAgU1NIX1NVQlBST0NFU1NfU1RET1VUX0NBUFRVUkV8U1NIX1NVQlBST0NF U1NfVU5TQUZFX1BBVEh8CistCSAgICBTU0hfU1VCUFJPQ0VTU19QUkVTRVJWRV9FTlYsIE5VTEws IE5VTEwsIE5VTEwpKSA9PSAwKQorKwkgICAgU1NIX1NVQlBST0NFU1NfUFJFU0VSVkVfRU5WLCBO VUxMLCBOVUxMLCBOVUxMLCAwLCBOVUxMKSkgPT0gMCkKKyAJCWdvdG8gb3V0OworIAorIAlsb2Fk X2hvc3RrZXlzX2ZpbGUoaG9zdGtleXMsIGhvc3RmaWxlX2hvc3RuYW1lLCB0YWcsIGYsIDEpOwor ZGlmZiAtLWdpdCBhL3NzaGQtYXV0aC5jIGIvc3NoZC1hdXRoLmMKK2luZGV4IGZiMWJhYjY2Zi4u OTkzNTljNzE4IDEwMDY0NAorLS0tIGEvc3NoZC1hdXRoLmMKKysrKyBiL3NzaGQtYXV0aC5jCitA QCAtMTE5LDcgKzExOSw3IEBAIGNoYXIgKmNvbmZpZ19maWxlX25hbWUgPSBfUEFUSF9TRVJWRVJf Q09ORklHX0ZJTEU7CisgaW50IGRlYnVnX2ZsYWcgPSAwOworIAorIC8qIEZsYWcgaW5kaWNhdGlu ZyB0aGF0IHRoZSBkYWVtb24gaXMgYmVpbmcgc3RhcnRlZCBmcm9tIGluZXRkLiAqLworLXN0YXRp YyBpbnQgaW5ldGRfZmxhZyA9IDA7CisraW50IGluZXRkX2ZsYWcgPSAwOworIAorIC8qIFNhdmVk IGFyZ3VtZW50cyB0byBtYWluKCkuICovCisgc3RhdGljIGNoYXIgKipzYXZlZF9hcmd2OworLS0g CisyLjU1LjAKKwoKZGlmZiAtLWdpdCBhLzAwMDQtb3BlbnNzaC02LjZwMS1rZXljYXQucGF0Y2gg Yi8wMDA0LW9wZW5zc2gtNi42cDEta2V5Y2F0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAzMjkwODVjLi4wMDAwMDAwCi0tLSBhLzAwMDQtb3BlbnNzaC02LjZwMS1rZXljYXQu cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzODAgKzAsMCBAQAotRnJvbSA1Y2MxYjEwYzhjZDVk ZTkxZWM4MTlhOTM5N2FiZDI0YWVmOWYwOTlkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJv bTogRG1pdHJ5IEJlbHlhdnNraXkgPGJlbGRtaXRAZ21haWwuY29tPgotRGF0ZTogVGh1LCAxNSBN YXkgMjAyNSAxMzo0MzoyOCArMDIwMAotU3ViamVjdDogW1BBVENIIDA0LzU0XSBvcGVuc3NoLTYu NnAxLWtleWNhdAotCi0tLS0KLSAuZ2l0aWdub3JlICAgICAgIHwgICAxICsKLSBIT1dUTy5zc2gt a2V5Y2F0IHwgIDEyICsrKwotIE1ha2VmaWxlLmluICAgICAgfCAgIDggKy0KLSBjb25maWd1cmUu YWMgICAgIHwgICA2ICsrCi0gc3NoLWtleWNhdC5jICAgICB8IDI0MSArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDUgZmlsZXMgY2hhbmdlZCwgMjY3IGlu c2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgSE9XVE8uc3No LWtleWNhdAotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzc2gta2V5Y2F0LmMKLQotZGlmZiAtLWdpdCBh Ly5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCi1pbmRleCA5MDc1MzMwNjcuLjdiNDY2OGQ3MSAxMDA2 NDQKLS0tLSBhLy5naXRpZ25vcmUKLSsrKyBiLy5naXRpZ25vcmUKLUBAIC0yOCw2ICsyOCw3IEBA IHNzaC1hZ2VudAotIHNzaC1rZXlnZW4KLSBzc2gta2V5c2NhbgotIHNzaC1rZXlzaWduCi0rc3No LWtleWNhdAotIHNzaC1wa2NzMTEtaGVscGVyCi0gc3NoLXNrLWhlbHBlcgotIHNzaGQKLWRpZmYg LS1naXQgYS9IT1dUTy5zc2gta2V5Y2F0IGIvSE9XVE8uc3NoLWtleWNhdAotbmV3IGZpbGUgbW9k ZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMC4uNjMwZWM2MjhjCi0tLS0gL2Rldi9udWxsCi0rKysg Yi9IT1dUTy5zc2gta2V5Y2F0Ci1AQCAtMCwwICsxLDEyIEBACi0rVGhlIHNzaC1rZXljYXQgcmV0 cmlldmVzIHRoZSBjb250ZW50IG9mIHRoZSB+Ly5zc2gvYXV0aG9yaXplZF9rZXlzCi0rb2YgYW4g dXNlciBpbiBhbnkgZW52aXJvbm1lbnQuIFRoaXMgaW5jbHVkZXMgZW52aXJvbm1lbnRzIHdpdGgK LStwb2x5aW5zdGFudGlhdGlvbiBvZiBob21lIGRpcmVjdG9yaWVzIGFuZCBTRUxpbnV4IE1MUyBw b2xpY3kgZW5hYmxlZC4KLSsKLStUbyB1c2Ugc3NoLWtleWNhdCwgc2V0IHRoZXNlIG9wdGlvbnMg aW4gL2V0Yy9zc2gvc3NoZF9jb25maWcgZmlsZToKLSsgICAgICAgIEF1dGhvcml6ZWRLZXlzQ29t bWFuZCAvdXNyL2xpYmV4ZWMvb3BlbnNzaC9zc2gta2V5Y2F0Ci0rICAgICAgICBBdXRob3JpemVk S2V5c0NvbW1hbmRVc2VyIHJvb3QKLSsKLStEbyBub3QgZm9yZ2V0IHRvIGVuYWJsZSBwdWJsaWMg a2V5IGF1dGhlbnRpY2F0aW9uOgotKyAgICAgICAgUHVia2V5QXV0aGVudGljYXRpb24geWVzCi0r Ci0rCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgotaW5kZXggMmFhYzg3 OWMxLi40MmI0NWQzM2QgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5pbgotKysrIGIvTWFrZWZpbGUu aW4KLUBAIC0yMyw2ICsyMyw3IEBAIFNTSF9QUk9HUkFNPUBiaW5kaXJAL3NzaAotIEFTS1BBU1Nf UFJPR1JBTT0kKGxpYmV4ZWNkaXIpL3NzaC1hc2twYXNzCi0gU0ZUUF9TRVJWRVI9JChsaWJleGVj ZGlyKS9zZnRwLXNlcnZlcgotIFNTSF9LRVlTSUdOPSQobGliZXhlY2Rpcikvc3NoLWtleXNpZ24K LStTU0hfS0VZQ0FUPSQobGliZXhlY2Rpcikvc3NoLWtleWNhdAotIFNTSERfU0VTU0lPTj0kKGxp YmV4ZWNkaXIpL3NzaGQtc2Vzc2lvbgotIFNTSERfQVVUSD0kKGxpYmV4ZWNkaXIpL3NzaGQtYXV0 aAotIFNTSF9QS0NTMTFfSEVMUEVSPSQobGliZXhlY2Rpcikvc3NoLXBrY3MxMS1oZWxwZXIKLUBA IC01OCw2ICs1OSw3IEBAIENIQU5ORUxMSUJTPUBDSEFOTkVMTElCU0AKLSBLNUxJQlM9QEs1TElC U0AKLSBHU1NMSUJTPUBHU1NMSUJTQAotIFNTSERMSUJTPUBTU0hETElCU0AKLStLRVlDQVRMSUJT PUBLRVlDQVRMSUJTQAotIExJQkVESVQ9QExJQkVESVRACi0gTElCRklETzI9QExJQkZJRE8yQAot IExJQldUTVBEQj1ATElCV1RNUERCQAotQEAgLTc1LDcgKzc3LDcgQEAgTUtESVJfUD1ATUtESVJf UEAKLSAKLSAuU1VGRklYRVM6IC5sbwotIAotLVRBUkdFVFM9c3NoJChFWEVFWFQpIHNzaGQkKEVY RUVYVCkgc3NoZC1zZXNzaW9uJChFWEVFWFQpIHNzaGQtYXV0aCQoRVhFRVhUKSBzc2gtYWRkJChF WEVFWFQpIHNzaC1rZXlnZW4kKEVYRUVYVCkgc3NoLWtleXNjYW4ke0VYRUVYVH0gc3NoLWtleXNp Z24ke0VYRUVYVH0gc3NoLXBrY3MxMS1oZWxwZXIkKEVYRUVYVCkgc3NoLWFnZW50JChFWEVFWFQp IHNjcCQoRVhFRVhUKSBzZnRwLXNlcnZlciQoRVhFRVhUKSBzZnRwJChFWEVFWFQpIHNzaC1zay1o ZWxwZXIkKEVYRUVYVCkgJChTS19TVEFOREFMT05FKQotK1RBUkdFVFM9c3NoJChFWEVFWFQpIHNz aGQkKEVYRUVYVCkgc3NoZC1zZXNzaW9uJChFWEVFWFQpIHNzaGQtYXV0aCQoRVhFRVhUKSBzc2gt YWRkJChFWEVFWFQpIHNzaC1rZXlnZW4kKEVYRUVYVCkgc3NoLWtleXNjYW4ke0VYRUVYVH0gc3No LWtleXNpZ24ke0VYRUVYVH0gc3NoLXBrY3MxMS1oZWxwZXIkKEVYRUVYVCkgc3NoLWFnZW50JChF WEVFWFQpIHNjcCQoRVhFRVhUKSBzZnRwLXNlcnZlciQoRVhFRVhUKSBzZnRwJChFWEVFWFQpIHNz aC1zay1oZWxwZXIkKEVYRUVYVCkgc3NoLWtleWNhdCQoRVhFRVhUKSAkKFNLX1NUQU5EQUxPTkUp Ci0gCi0gTElCT1BFTlNTSF9PQkpTPVwKLSAJc3NoX2FwaS5vIFwKLUBAIC0yNTIsNiArMjU0LDkg QEAgc3NoLXBrY3MxMS1oZWxwZXIkKEVYRUVYVCk6ICQoTElCQ09NUEFUKSBsaWJzc2guYSAkKFAx MUhFTFBFUl9PQkpTKQotIHNzaC1zay1oZWxwZXIkKEVYRUVYVCk6ICQoTElCQ09NUEFUKSBsaWJz c2guYSAkKFNLSEVMUEVSX09CSlMpCi0gCSQoTEQpIC1vICRAICQoU0tIRUxQRVJfT0JKUykgJChM REZMQUdTKSAtbHNzaCAtbG9wZW5ic2QtY29tcGF0IC1sc3NoIC1sb3BlbmJzZC1jb21wYXQgJChM SUJTKSAkKExJQkZJRE8yKSAkKENIQU5ORUxMSUJTKQotIAotK3NzaC1rZXljYXQkKEVYRUVYVCk6 ICQoTElCQ09NUEFUKSAkKFNTSERPQkpTKSBsaWJzc2guYSBzc2gta2V5Y2F0Lm8gdWlkc3dhcC5v Ci0rCSQoTEQpIC1vICRAIHNzaC1rZXljYXQubyB1aWRzd2FwLm8gJChMREZMQUdTKSAtbHNzaCAt bG9wZW5ic2QtY29tcGF0ICQoS0VZQ0FUTElCUykgJChDSEFOTkVMTElCUykgJChMSUJTKQotKwot IHNzaC1rZXlzY2FuJChFWEVFWFQpOiAkKExJQkNPTVBBVCkgbGlic3NoLmEgJChTU0hLRVlTQ0FO X09CSlMpCi0gCSQoTEQpIC1vICRAICQoU1NIS0VZU0NBTl9PQkpTKSAkKExERkxBR1MpIC1sc3No IC1sb3BlbmJzZC1jb21wYXQgLWxzc2ggJChMSUJTKSAkKENIQU5ORUxMSUJTKQotIAotQEAgLTQ0 MCw2ICs0NDUsNyBAQCBpbnN0YWxsLWZpbGVzOgotIAkkKElOU1RBTEwpIC1tIDQ3MTEgJChTVFJJ UF9PUFQpIHNzaC1rZXlzaWduJChFWEVFWFQpICQoREVTVERJUikkKFNTSF9LRVlTSUdOKSQoRVhF RVhUKQotIAkkKElOU1RBTEwpIC1tIDA3NTUgJChTVFJJUF9PUFQpIHNzaC1wa2NzMTEtaGVscGVy JChFWEVFWFQpICQoREVTVERJUikkKFNTSF9QS0NTMTFfSEVMUEVSKSQoRVhFRVhUKQotIAkkKElO U1RBTEwpIC1tIDA3NTUgJChTVFJJUF9PUFQpIHNzaC1zay1oZWxwZXIkKEVYRUVYVCkgJChERVNU RElSKSQoU1NIX1NLX0hFTFBFUikkKEVYRUVYVCkKLSsJJChJTlNUQUxMKSAtbSAwNzU1ICQoU1RS SVBfT1BUKSBzc2gta2V5Y2F0JChFWEVFWFQpICQoREVTVERJUikkKGxpYmV4ZWNkaXIpL3NzaC1r ZXljYXQkKEVYRUVYVCkKLSAJJChJTlNUQUxMKSAtbSAwNzU1ICQoU1RSSVBfT1BUKSBzZnRwJChF WEVFWFQpICQoREVTVERJUikkKGJpbmRpcikvc2Z0cCQoRVhFRVhUKQotIAkkKElOU1RBTEwpIC1t IDA3NTUgJChTVFJJUF9PUFQpIHNmdHAtc2VydmVyJChFWEVFWFQpICQoREVTVERJUikkKFNGVFBf U0VSVkVSKSQoRVhFRVhUKQotIAkkKElOU1RBTEwpIC1tIDY0NCBzc2guMS5vdXQgJChERVNURElS KSQobWFuZGlyKS8kKG1hbnN1YmRpcikxL3NzaC4xCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFj IGIvY29uZmlndXJlLmFjCi1pbmRleCBhOGU5ZGY2NmIuLjhmODI3NmM3OCAxMDA2NDQKLS0tLSBh L2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzcwOSw2ICszNzA5LDcgQEAg QUNfQVJHX1dJVEgoW3BhbV0sCi0gCQkJUEFNX01TRz0ieWVzIgotIAotIAkJCVNTSERMSUJTPSIk U1NIRExJQlMgLWxwYW0iCi0rCQkJS0VZQ0FUTElCUz0iJEtFWUNBVExJQlMgLWxwYW0iCi0gCQkJ QUNfREVGSU5FKFtVU0VfUEFNXSwgWzFdLAotIAkJCQlbRGVmaW5lIGlmIHlvdSB3YW50IHRvIGVu YWJsZSBQQU0gc3VwcG9ydF0pCi0gCi1AQCAtMzcxOSw2ICszNzIwLDcgQEAgQUNfQVJHX1dJVEgo W3BhbV0sCi0gCQkJCQk7OwotIAkJCQkqKQotIAkJCQkJU1NIRExJQlM9IiRTU0hETElCUyAtbGRs IgotKwkJCQkJS0VZQ0FUTElCUz0iJEtFWUNBVExJQlMgLWxkbCIKLSAJCQkJCTs7Ci0gCQkJCWVz YWMKLSAJCQlmaQotQEAgLTQ5NjIsNiArNDk2NCw3IEBAIEFDX0FSR19XSVRIKFtzZWxpbnV4XSwK LSAJZmkgXQotICkKLSBBQ19TVUJTVChbU1NIRExJQlNdKQotK0FDX1NVQlNUKFtLRVlDQVRMSUJT XSkKLSAKLSAjIENoZWNrIHdoZXRoZXIgdXNlciB3YW50cyBLZXJiZXJvcyA1IHN1cHBvcnQKLSBL UkI1X01TRz0ibm8iCi1AQCAtNTk3NSw2ICs1OTc4LDkgQEAgZmkKLSBpZiB0ZXN0ICEgLXogIiR7 U1NIRExJQlN9IjsgdGhlbgotIGVjaG8gIiAgICAgICAgICtmb3Igc3NoZDogJHtTU0hETElCU30i Ci0gZmkKLStpZiB0ZXN0ICEgLXogIiR7S0VZQ0FUTElCU30iOyB0aGVuCi0rZWNobyAiICAgK2Zv ciBzc2gta2V5Y2F0OiAke0tFWUNBVExJQlN9IgotK2ZpCi0gCi0gZWNobyAiIgotIAotZGlmZiAt LWdpdCBhL3NzaC1rZXljYXQuYyBiL3NzaC1rZXljYXQuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQK LWluZGV4IDAwMDAwMDAwMC4uOGJiMTdjNzNlCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zc2gta2V5 Y2F0LmMKLUBAIC0wLDAgKzEsMjQxIEBACi0rLyoKLSsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSsgKiBtb2RpZmlj YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv bnMKLSsgKiBhcmUgbWV0OgotKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCBhbmQgdGhlIGVu dGlyZSBwZXJtaXNzaW9uIG5vdGljZSBpbiBpdHMgZW50aXJldHksCi0rICogICAgaW5jbHVkaW5n IHRoZSBkaXNjbGFpbWVyIG9mIHdhcnJhbnRpZXMuCi0rICogMi4gUmVkaXN0cmlidXRpb25zIGlu IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBu b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt ZXIgaW4gdGhlCi0rICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSsgKiAzLiBUaGUgbmFtZSBvZiB0aGUgYXV0 aG9yIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUKLSsgKiAgICBwcm9kdWN0 cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yCi0rICog ICAgd3JpdHRlbiBwZXJtaXNzaW9uLgotKyAqCi0rICogQUxURVJOQVRJVkVMWSwgdGhpcyBwcm9k dWN0IG1heSBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YKLSsgKiB0aGUgR05VIFB1 YmxpYyBMaWNlbnNlLCBpbiB3aGljaCBjYXNlIHRoZSBwcm92aXNpb25zIG9mIHRoZSBHUEwgYXJl Ci0rICogcmVxdWlyZWQgSU5TVEVBRCBPRiB0aGUgYWJvdmUgcmVzdHJpY3Rpb25zLiAgKFRoaXMg Y2xhdXNlIGlzCi0rICogbmVjZXNzYXJ5IGR1ZSB0byBhIHBvdGVudGlhbCBiYWQgaW50ZXJhY3Rp b24gYmV0d2VlbiB0aGUgR1BMIGFuZAotKyAqIHRoZSByZXN0cmljdGlvbnMgY29udGFpbmVkIGlu IGEgQlNELXN0eWxlIGNvcHlyaWdodC4pCi0rICoKLSsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ REVEIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAotKyAqIFdBUlJBTlRJRVMs IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTCi0r ICogT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RSBBUkUKLSsgKiBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBM SUFCTEUgRk9SIEFOWSBESVJFQ1QsCi0rICogSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0rICogKElOQ0xVRElORywgQlVU IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0rICog U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF UlJVUFRJT04pCi0rICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAotKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSsgKiBBUklTSU5HIElOIEFOWSBX QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECi0rICog T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKyAqLwotKwotKy8qCi0rICogQ29w eXJpZ2h0IChjKSAyMDExIFJlZCBIYXQsIEluYy4KLSsgKiBXcml0dGVuIGJ5IFRvbWFzIE1yYXog PHRtcmF6QHJlZGhhdC5jb20+Ci0rKi8KLSsKLSsjZGVmaW5lIF9HTlVfU09VUkNFCi0rCi0rI2lu Y2x1ZGUgImNvbmZpZy5oIgotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxzdGRsaWIu aD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKyNpbmNs dWRlIDxzeXMvc3RhdC5oPgotKyNpbmNsdWRlIDxwd2QuaD4KLSsjaW5jbHVkZSA8ZmNudGwuaD4K LSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2lmZGVmIEhBVkVfU1RESU5UX0gKLSsjaW5jbHVkZSA8 c3RkaW50Lmg+Ci0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPHNlY3VyaXR5L3BhbV9hcHBsLmg+Ci0r Ci0rI2luY2x1ZGUgInVpZHN3YXAuaCIKLSsjaW5jbHVkZSAibWlzYy5oIgotKwotKyNkZWZpbmUg RVJSX1VTQUdFIDEKLSsjZGVmaW5lIEVSUl9QQU1fU1RBUlQgMgotKyNkZWZpbmUgRVJSX09QRU5f U0VTU0lPTiAzCi0rI2RlZmluZSBFUlJfQ0xPU0VfU0VTU0lPTiA0Ci0rI2RlZmluZSBFUlJfUEFN X0VORCA1Ci0rI2RlZmluZSBFUlJfR0VUUFdOQU0gNgotKyNkZWZpbmUgRVJSX01FTU9SWSA3Ci0r I2RlZmluZSBFUlJfT1BFTiA4Ci0rI2RlZmluZSBFUlJfRklMRV9NT0RFIDkKLSsjZGVmaW5lIEVS Ul9GRE9QRU4gMTAKLSsjZGVmaW5lIEVSUl9TVEFUIDExCi0rI2RlZmluZSBFUlJfV1JJVEUgMTIK LSsjZGVmaW5lIEVSUl9QQU1fUFVURU5WIDEzCi0rI2RlZmluZSBCVUZMRU4gNDA5NgotKwotKy8q IEp1c3QgaWdub3JlIHRoZSBtZXNzYWdlcyBpbiB0aGUgY29udmVyc2F0aW9uIGZ1bmN0aW9uICov Ci0rc3RhdGljIGludAotK2R1bW15X2NvbnYoaW50IG51bV9tc2csIGNvbnN0IHN0cnVjdCBwYW1f bWVzc2FnZSAqKm1zZ20sCi0rCSAgIHN0cnVjdCBwYW1fcmVzcG9uc2UgKipyZXNwb25zZSwgdm9p ZCAqYXBwZGF0YV9wdHIpCi0rewotKwlzdHJ1Y3QgcGFtX3Jlc3BvbnNlICpyc3A7Ci0rCi0rCSh2 b2lkKW1zZ207Ci0rCSh2b2lkKWFwcGRhdGFfcHRyOwotKwotKwlpZiAobnVtX21zZyA8PSAwKQot KwkJcmV0dXJuIFBBTV9DT05WX0VSUjsKLSsKLSsJLyogSnVzdCBhbGxvY2F0ZSB0aGUgYXJyYXkg YXMgZW1wdHkgcmVzcG9uc2VzICovCi0rCXJzcCA9IGNhbGxvYyAobnVtX21zZywgc2l6ZW9mIChz dHJ1Y3QgcGFtX3Jlc3BvbnNlKSk7Ci0rCWlmIChyc3AgPT0gTlVMTCkKLSsJCXJldHVybiBQQU1f Q09OVl9FUlI7Ci0rCi0rCSpyZXNwb25zZSA9IHJzcDsKLSsJcmV0dXJuIFBBTV9TVUNDRVNTOwot K30KLSsKLStzdGF0aWMgc3RydWN0IHBhbV9jb252IGNvbnYgPSB7Ci0rCWR1bW15X2NvbnYsCi0r CU5VTEwKLSt9OwotKwotK2NoYXIgKgotK21ha2VfYXV0aF9rZXlzX25hbWUoY29uc3Qgc3RydWN0 IHBhc3N3ZCAqcHdkKQotK3sKLSsJY2hhciAqZm5hbWU7Ci0rCi0rCWlmIChhc3ByaW50ZigmZm5h bWUsICIlcy8uc3NoL2F1dGhvcml6ZWRfa2V5cyIsIHB3ZC0+cHdfZGlyKSA8IDApCi0rCQlyZXR1 cm4gTlVMTDsKLSsKLSsJcmV0dXJuIGZuYW1lOwotK30KLSsKLStpbnQKLStkdW1wX2tleXMoY29u c3QgY2hhciAqdXNlcikKLSt7Ci0rCXN0cnVjdCBwYXNzd2QgKnB3ZDsKLSsJaW50IGZkID0gLTE7 Ci0rCUZJTEUgKmYgPSBOVUxMOwotKwljaGFyICpmbmFtZSA9IE5VTEw7Ci0rCWludCBydiA9IDA7 Ci0rCWNoYXIgYnVmW0JVRkxFTl07Ci0rCXNpemVfdCBsZW47Ci0rCXN0cnVjdCBzdGF0IHN0Owot KwotKwlpZiAoKHB3ZCA9IGdldHB3bmFtKHVzZXIpKSA9PSBOVUxMKSB7Ci0rCQlyZXR1cm4gRVJS X0dFVFBXTkFNOwotKwl9Ci0rCi0rCWlmICgoZm5hbWUgPSBtYWtlX2F1dGhfa2V5c19uYW1lKHB3 ZCkpID09IE5VTEwpIHsKLSsJCXJldHVybiBFUlJfTUVNT1JZOwotKwl9Ci0rCi0rCXRlbXBvcmFy aWx5X3VzZV91aWQocHdkKTsKLSsKLSsJaWYgKChmZCA9IG9wZW4oZm5hbWUsIE9fUkRPTkxZfE9f Tk9OQkxPQ0t8T19OT0ZPTExPVywgMCkpIDwgMCkgewotKwkJcnYgPSBFUlJfT1BFTjsKLSsJCWdv dG8gZmFpbDsKLSsJfQotKwotKwlpZiAoZnN0YXQoZmQsICZzdCkgPCAwKSB7Ci0rCQlydiA9IEVS Ul9TVEFUOwotKwkJZ290byBmYWlsOwotKwl9Ci0rCi0rCWlmICghU19JU1JFRyhzdC5zdF9tb2Rl KSB8fAotKwkJKHN0LnN0X3VpZCAhPSBwd2QtPnB3X3VpZCAmJiBzdC5zdF91aWQgIT0gMCkpIHsK LSsJCXJ2ID0gRVJSX0ZJTEVfTU9ERTsKLSsJCWdvdG8gZmFpbDsKLSsJfQotKwotKwl1bnNldF9u b25ibG9jayhmZCk7Ci0rCi0rCWlmICgoZiA9IGZkb3BlbihmZCwgInIiKSkgPT0gTlVMTCkgewot KwkJcnYgPSBFUlJfRkRPUEVOOwotKwkJZ290byBmYWlsOwotKwl9Ci0rCi0rCWZkID0gLTE7Ci0r Ci0rCXdoaWxlICgobGVuID0gZnJlYWQoYnVmLCAxLCBzaXplb2YoYnVmKSwgZikpID4gMCkgewot KwkJcnYgPSBmd3JpdGUoYnVmLCAxLCBsZW4sIHN0ZG91dCkgIT0gbGVuID8gRVJSX1dSSVRFIDog MDsKLSsJfQotKwotK2ZhaWw6Ci0rCWlmIChmZCAhPSAtMSkKLSsJCWNsb3NlKGZkKTsKLSsJaWYg KGYgIT0gTlVMTCkKLSsJCWZjbG9zZShmKTsKLSsJZnJlZShmbmFtZSk7Ci0rCXJlc3RvcmVfdWlk KCk7Ci0rCXJldHVybiBydjsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IGNoYXIgKmVudl9uYW1lc1td ID0geyAiU0VMSU5VWF9ST0xFX1JFUVVFU1RFRCIsCi0rCSJTRUxJTlVYX0xFVkVMX1JFUVVFU1RF RCIsCi0rCSJTRUxJTlVYX1VTRV9DVVJSRU5UX1JBTkdFIgotK307Ci0rCi0rZXh0ZXJuIGNoYXIg KiplbnZpcm9uOwotKwotK2ludAotK3NldF9wYW1fZW52aXJvbm1lbnQocGFtX2hhbmRsZV90ICpw YW1oKQotK3sKLSsJaW50IGk7Ci0rCXNpemVfdCBqOwotKwotKwlmb3IgKGogPSAwOyBqIDwgc2l6 ZW9mKGVudl9uYW1lcykvc2l6ZW9mKGVudl9uYW1lc1swXSk7ICsraikgewotKwkJaW50IGxlbiA9 IHN0cmxlbihlbnZfbmFtZXNbal0pOwotKwotKwkJZm9yIChpID0gMDsgZW52aXJvbltpXSAhPSBO VUxMOyArK2kpIHsKLSsJCQlpZiAoc3RybmNtcChlbnZfbmFtZXNbal0sIGVudmlyb25baV0sIGxl bikgPT0gMCAmJgotKwkJCSAgICBlbnZpcm9uW2ldW2xlbl0gPT0gJz0nKSB7Ci0rCQkJCWlmIChw YW1fcHV0ZW52KHBhbWgsIGVudmlyb25baV0pICE9IFBBTV9TVUNDRVNTKQotKwkJCQkJcmV0dXJu IEVSUl9QQU1fUFVURU5WOwotKwkJCX0KLSsJCX0KLSsJfQotKwotKwlyZXR1cm4gMDsKLSt9Ci0r Ci0raW50Ci0rbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotK3sKLSsJcGFtX2hhbmRsZV90 ICpwYW1oID0gTlVMTDsKLSsJaW50IHJldHZhbDsKLSsJaW50IGV2ID0gMDsKLSsKLSsJaWYgKGFy Z2MgIT0gMikgewotKwkJZnByaW50ZihzdGRlcnIsICJVc2FnZTogJXMgPHVzZXItbmFtZT5cbiIs IGFyZ3ZbMF0pOwotKwkJcmV0dXJuIEVSUl9VU0FHRTsKLSsJfQotKwotKwlyZXR2YWwgPSBwYW1f c3RhcnQoInNzaC1rZXljYXQiLCBhcmd2WzFdLCAmY29udiwgJnBhbWgpOwotKwlpZiAocmV0dmFs ICE9IFBBTV9TVUNDRVNTKSB7Ci0rCQlyZXR1cm4gRVJSX1BBTV9TVEFSVDsKLSsJfQotKwotKwll diA9IHNldF9wYW1fZW52aXJvbm1lbnQocGFtaCk7Ci0rCWlmIChldiAhPSAwKQotKwkJZ290byBm aW5pc2g7Ci0rCi0rCXJldHZhbCA9IHBhbV9vcGVuX3Nlc3Npb24ocGFtaCwgUEFNX1NJTEVOVCk7 Ci0rCWlmIChyZXR2YWwgIT0gUEFNX1NVQ0NFU1MpIHsKLSsJCWV2ID0gRVJSX09QRU5fU0VTU0lP TjsKLSsJCWdvdG8gZmluaXNoOwotKwl9Ci0rCi0rCWV2ID0gZHVtcF9rZXlzKGFyZ3ZbMV0pOwot KwotKwlyZXR2YWwgPSBwYW1fY2xvc2Vfc2Vzc2lvbihwYW1oLCBQQU1fU0lMRU5UKTsKLSsJaWYg KHJldHZhbCAhPSBQQU1fU1VDQ0VTUykgewotKwkJZXYgPSBFUlJfQ0xPU0VfU0VTU0lPTjsKLSsJ fQotKwotK2ZpbmlzaDoKLSsJcmV0dmFsID0gcGFtX2VuZCAocGFtaCxyZXR2YWwpOwotKwlpZiAo cmV0dmFsICE9IFBBTV9TVUNDRVNTKSB7Ci0rCQlldiA9IEVSUl9QQU1fRU5EOwotKwl9Ci0rCXJl dHVybiBldjsKLSt9Ci0tLSAKLTIuNTMuMAotCgpkaWZmIC0tZ2l0IGEvMDAwNS1vcGVuc3NoLTYu NnAxLWFsbG93LWlwLW9wdHMucGF0Y2ggYi8wMDA1LW9wZW5zc2gtNi42cDEtYWxsb3ctaXAtb3B0 cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDI0M2U4MS4uMDAwMDAwMAot LS0gYS8wMDA1LW9wZW5zc2gtNi42cDEtYWxsb3ctaXAtb3B0cy5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDU2ICswLDAgQEAKLUZyb20gMTM1YmI2OTAzYjcxNTAxMmE4YWUzMDIwMjJiYjdhMzFk MTg3OWM2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERtaXRyeSBCZWx5YXZza2l5 IDxiZWxkbWl0QGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMTUgTWF5IDIwMjUgMTM6NDM6MjggKzAy MDAKLVN1YmplY3Q6IFtQQVRDSCAwNS81NF0gb3BlbnNzaC02LjZwMS1hbGxvdy1pcC1vcHRzCi0K LSNodHRwczovL2J1Z3ppbGxhLm1pbmRyb3Qub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ0Ci0tLS0K LSBzc2hkLXNlc3Npb24uYyB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCi0g MSBmaWxlIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYg LS1naXQgYS9zc2hkLXNlc3Npb24uYyBiL3NzaGQtc2Vzc2lvbi5jCi1pbmRleCA5Njc3MzdjNWIu LjAwZDAwZTI5MyAxMDA2NDQKLS0tLSBhL3NzaGQtc2Vzc2lvbi5jCi0rKysgYi9zc2hkLXNlc3Np b24uYwotQEAgLTcyNiwxMiArNzI2LDMyIEBAIGNoZWNrX2lwX29wdGlvbnMoc3RydWN0IHNzaCAq c3NoKQotIAotIAlpZiAoZ2V0c29ja29wdChzb2NrX2luLCBJUFBST1RPX0lQLCBJUF9PUFRJT05T LCBvcHRzLAotIAkgICAgJm9wdGlvbl9zaXplKSA+PSAwICYmIG9wdGlvbl9zaXplICE9IDApIHsK LS0JCXRleHRbMF0gPSAnXDAnOwotLQkJZm9yIChpID0gMDsgaSA8IG9wdGlvbl9zaXplOyBpKysp Ci0tCQkJc25wcmludGYodGV4dCArIGkqMywgc2l6ZW9mKHRleHQpIC0gaSozLAotLQkJCSAgICAi ICUyLjJ4Iiwgb3B0c1tpXSk7Ci0tCQlmYXRhbCgiQ29ubmVjdGlvbiBmcm9tICUuMTAwcyBwb3J0 ICVkIHdpdGggSVAgb3B0czogJS44MDBzIiwKLS0JCSAgICBzc2hfcmVtb3RlX2lwYWRkcihzc2gp LCBzc2hfcmVtb3RlX3BvcnQoc3NoKSwgdGV4dCk7Ci0rCQlpID0gMDsKLSsJCWRvIHsKLSsJCQlz d2l0Y2ggKG9wdHNbaV0pIHsKLSsJCQkJY2FzZSAwOgotKwkJCQljYXNlIDE6Ci0rCQkJCQkrK2k7 Ci0rCQkJCQlicmVhazsKLSsJCQkJY2FzZSAxMzA6Ci0rCQkJCWNhc2UgMTMzOgotKwkJCQljYXNl IDEzNDoKLSsJCQkJCWlmIChpICsgMSA8IG9wdGlvbl9zaXplICYmIG9wdHNbaSArIDFdID49IDIp IHsKLSsJCQkJCQlpICs9IG9wdHNbaSArIDFdOwotKwkJCQkJCWJyZWFrOwotKwkJCQkJfQotKwkJ CQkJLyogRkFMTFRIUk9VR0ggKi8KLSsJCQkJZGVmYXVsdDoKLSsJCQkJLyogRmFpbCwgZmF0YWxs eSwgaWYgd2UgZGV0ZWN0IGVpdGhlciBsb29zZSBvciBzdHJpY3QKLSsJCQkgCSAqIG9yIGluY29y cmVjdCBzb3VyY2Ugcm91dGluZyBvcHRpb25zLiAqLwotKwkJCQkJdGV4dFswXSA9ICdcMCc7Ci0r CQkJCQlmb3IgKGkgPSAwOyBpIDwgb3B0aW9uX3NpemU7IGkrKykKLSsJCQkJCQlzbnByaW50Zih0 ZXh0ICsgaSozLCBzaXplb2YodGV4dCkgLSBpKjMsCi0rCQkJCQkJCSIgJTIuMngiLCBvcHRzW2ld KTsKLSsJCQkJCWZhdGFsKCJDb25uZWN0aW9uIGZyb20gJS4xMDBzIHBvcnQgJWQgd2l0aCBJUCBv cHRpb25zOiUuODAwcyIsCi0rCQkJCQkJc3NoX3JlbW90ZV9pcGFkZHIoc3NoKSwgc3NoX3JlbW90 ZV9wb3J0KHNzaCksIHRleHQpOwotKwkJCX0KLSsJCX0gd2hpbGUgKGkgPCBvcHRpb25fc2l6ZSk7 Ci0gCX0KLSAjZW5kaWYgLyogSVBfT1BUSU9OUyAqLwotIH0KLS0tIAotMi41My4wCi0KCmRpZmYg LS1naXQgYS8wMDA1LW9wZW5zc2gtNi42cDEta2V5Y2F0LnBhdGNoIGIvMDAwNS1vcGVuc3NoLTYu NnAxLWtleWNhdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWNi M2M2Ci0tLSAvZGV2L251bGwKKysrIGIvMDAwNS1vcGVuc3NoLTYuNnAxLWtleWNhdC5wYXRjaApA QCAtMCwwICsxLDM5MyBAQAorRnJvbSA5Zjg1ZTFkZmYzNTM5YzU3OTE2MzRhMzYxZjNjNjk2ZDg3 ZWY5YmViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRG1pdHJ5IEJlbHlhdnNraXkg PGJlbGRtaXRAZ21haWwuY29tPgorRGF0ZTogVGh1LCAxNSBNYXkgMjAyNSAxMzo0MzoyOCArMDIw MAorU3ViamVjdDogW1BBVENIIDA1LzU0XSBvcGVuc3NoLTYuNnAxLWtleWNhdAorCistLS0KKyAu ZGVwZW5kICAgICAgICAgIHwgICAxICsKKyAuZ2l0aWdub3JlICAgICAgIHwgICAxICsKKyBIT1dU Ty5zc2gta2V5Y2F0IHwgIDEyICsrKworIE1ha2VmaWxlLmluICAgICAgfCAgIDggKy0KKyBjb25m aWd1cmUuYWMgICAgIHwgICA2ICsrCisgc3NoLWtleWNhdC5jICAgICB8IDI0MSArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIDYgZmlsZXMgY2hhbmdlZCwg MjY4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgSE9X VE8uc3NoLWtleWNhdAorIGNyZWF0ZSBtb2RlIDEwMDY0NCBzc2gta2V5Y2F0LmMKKworZGlmZiAt LWdpdCBhLy5kZXBlbmQgYi8uZGVwZW5kCitpbmRleCAwM2U4YzQyM2QuLmI2YjFhZDI0MiAxMDA2 NDQKKy0tLSBhLy5kZXBlbmQKKysrKyBiLy5kZXBlbmQKK0BAIC0xMzQsNiArMTM0LDcgQEAgc3No LWVkMjU1MTktc2subzogaW5jbHVkZXMuaCBjb25maWcuaCBkZWZpbmVzLmggcGxhdGZvcm0uaCBv cGVuYnNkLWNvbXBhdC9vcGVuYnMKKyBzc2gtZWQyNTUxOS5vOiBpbmNsdWRlcy5oIGNvbmZpZy5o IGRlZmluZXMuaCBwbGF0Zm9ybS5oIG9wZW5ic2QtY29tcGF0L29wZW5ic2QtY29tcGF0Lmggb3Bl bmJzZC1jb21wYXQvYmFzZTY0Lmggb3BlbmJzZC1jb21wYXQvc2lnYWN0Lmggb3BlbmJzZC1jb21w YXQvcmVhZHBhc3NwaHJhc2UuaCBvcGVuYnNkLWNvbXBhdC92aXMuaCBvcGVuYnNkLWNvbXBhdC9n ZXRycnNldGJ5bmFtZS5oIG9wZW5ic2QtY29tcGF0L3NoYTEuaCBvcGVuYnNkLWNvbXBhdC9ic2Qt c2hhMi5oIG9wZW5ic2QtY29tcGF0L21kNS5oIG9wZW5ic2QtY29tcGF0L2JsZi5oIG9wZW5ic2Qt Y29tcGF0L2ZubWF0Y2guaCBvcGVuYnNkLWNvbXBhdC9nZXRvcHQuaCBvcGVuYnNkLWNvbXBhdC9i c2Qtc2lnbmFsLmggb3BlbmJzZC1jb21wYXQvYnNkLW1pc2MuaCBvcGVuYnNkLWNvbXBhdC9ic2Qt c2V0cmVzX2lkLmggb3BlbmJzZC1jb21wYXQvYnNkLXN0YXR2ZnMuaCBvcGVuYnNkLWNvbXBhdC9i c2Qtd2FpdHBpZC5oIG9wZW5ic2QtY29tcGF0L2JzZC1wb2xsLmggb3BlbmJzZC1jb21wYXQvZmFr ZS1yZmMyNTUzLmggb3BlbmJzZC1jb21wYXQvYnNkLWN5Z3dpbl91dGlsLmggb3BlbmJzZC1jb21w YXQvcG9ydC1haXguaCBvcGVuYnNkLWNvbXBhdC9wb3J0LWlyaXguaCBvcGVuYnNkLWNvbXBhdC9w b3J0LWxpbnV4Lmggb3BlbmJzZC1jb21wYXQvcG9ydC1zb2xhcmlzLmggb3BlbmJzZC1jb21wYXQv cG9ydC1uZXQuaCBvcGVuYnNkLWNvbXBhdC9wb3J0LXV3Lmggb3BlbmJzZC1jb21wYXQvYnNkLW5l eHRzdGVwLmggZW50cm9weS5oIGNyeXB0b19hcGkuaCBsb2cuaCBzc2hlcnIuaCBzc2hidWYuaCBz c2hrZXkuaAorIHNzaC1rZXlnZW4ubzogY2lwaGVyLWNoYWNoYXBvbHkuaCBjaGFjaGEuaCBwb2x5 MTMwNS5oIGNpcGhlci1hZXNjdHIuaCByaWpuZGFlbC5oCisgc3NoLWtleWdlbi5vOiBpbmNsdWRl cy5oIGNvbmZpZy5oIGRlZmluZXMuaCBwbGF0Zm9ybS5oIG9wZW5ic2QtY29tcGF0L29wZW5ic2Qt Y29tcGF0Lmggb3BlbmJzZC1jb21wYXQvYmFzZTY0Lmggb3BlbmJzZC1jb21wYXQvc2lnYWN0Lmgg b3BlbmJzZC1jb21wYXQvcmVhZHBhc3NwaHJhc2UuaCBvcGVuYnNkLWNvbXBhdC92aXMuaCBvcGVu YnNkLWNvbXBhdC9nZXRycnNldGJ5bmFtZS5oIG9wZW5ic2QtY29tcGF0L3NoYTEuaCBvcGVuYnNk LWNvbXBhdC9ic2Qtc2hhMi5oIG9wZW5ic2QtY29tcGF0L21kNS5oIG9wZW5ic2QtY29tcGF0L2Js Zi5oIG9wZW5ic2QtY29tcGF0L2ZubWF0Y2guaCBvcGVuYnNkLWNvbXBhdC9nZXRvcHQuaCBvcGVu YnNkLWNvbXBhdC9ic2Qtc2lnbmFsLmggb3BlbmJzZC1jb21wYXQvYnNkLW1pc2MuaCBvcGVuYnNk LWNvbXBhdC9ic2Qtc2V0cmVzX2lkLmggb3BlbmJzZC1jb21wYXQvYnNkLXN0YXR2ZnMuaCBvcGVu YnNkLWNvbXBhdC9ic2Qtd2FpdHBpZC5oIG9wZW5ic2QtY29tcGF0L2JzZC1wb2xsLmggb3BlbmJz ZC1jb21wYXQvZmFrZS1yZmMyNTUzLmggb3BlbmJzZC1jb21wYXQvYnNkLWN5Z3dpbl91dGlsLmgg b3BlbmJzZC1jb21wYXQvcG9ydC1haXguaCBvcGVuYnNkLWNvbXBhdC9wb3J0LWlyaXguaCBvcGVu YnNkLWNvbXBhdC9wb3J0LWxpbnV4Lmggb3BlbmJzZC1jb21wYXQvcG9ydC1zb2xhcmlzLmggb3Bl bmJzZC1jb21wYXQvcG9ydC1uZXQuaCBvcGVuYnNkLWNvbXBhdC9wb3J0LXV3Lmggb3BlbmJzZC1j b21wYXQvYnNkLW5leHRzdGVwLmggZW50cm9weS5oIHhtYWxsb2MuaCBzc2hrZXkuaCBhdXRoZmls ZS5oIHNzaGJ1Zi5oIHBhdGhuYW1lcy5oIGxvZy5oIHNzaGVyci5oIG1pc2MuaCBtYXRjaC5oIGhv c3RmaWxlLmggZG5zLmggc3NoLmggc3NoMi5oIGF0b21pY2lvLmgga3JsLmggZGlnZXN0LmggdXRm OC5oIGF1dGhmZC5oIHNzaHNpZy5oIHNzaC1zay5oIHNrLWFwaS5oIGNpcGhlci5oCisrc3NoLWtl eWNhdC5vOiBjb25maWcuaCB1aWRzd2FwLmggbWlzYy5oCisgc3NoLWtleXNjYW4ubzogYXRvbWlj aW8uaCBtaXNjLmggaG9zdGZpbGUuaCBzc2hfYXBpLmggc3NoMi5oIGRucy5oIGFkZHIuaAorIHNz aC1rZXlzY2FuLm86IGluY2x1ZGVzLmggY29uZmlnLmggZGVmaW5lcy5oIHBsYXRmb3JtLmggb3Bl bmJzZC1jb21wYXQvb3BlbmJzZC1jb21wYXQuaCBvcGVuYnNkLWNvbXBhdC9iYXNlNjQuaCBvcGVu YnNkLWNvbXBhdC9zaWdhY3QuaCBvcGVuYnNkLWNvbXBhdC9yZWFkcGFzc3BocmFzZS5oIG9wZW5i c2QtY29tcGF0L3Zpcy5oIG9wZW5ic2QtY29tcGF0L2dldHJyc2V0YnluYW1lLmggb3BlbmJzZC1j b21wYXQvc2hhMS5oIG9wZW5ic2QtY29tcGF0L2JzZC1zaGEyLmggb3BlbmJzZC1jb21wYXQvbWQ1 Lmggb3BlbmJzZC1jb21wYXQvYmxmLmggb3BlbmJzZC1jb21wYXQvZm5tYXRjaC5oIG9wZW5ic2Qt Y29tcGF0L2dldG9wdC5oIG9wZW5ic2QtY29tcGF0L2JzZC1zaWduYWwuaCBvcGVuYnNkLWNvbXBh dC9ic2QtbWlzYy5oIG9wZW5ic2QtY29tcGF0L2JzZC1zZXRyZXNfaWQuaCBvcGVuYnNkLWNvbXBh dC9ic2Qtc3RhdHZmcy5oIG9wZW5ic2QtY29tcGF0L2JzZC13YWl0cGlkLmggb3BlbmJzZC1jb21w YXQvYnNkLXBvbGwuaCBvcGVuYnNkLWNvbXBhdC9mYWtlLXJmYzI1NTMuaCBvcGVuYnNkLWNvbXBh dC9ic2QtY3lnd2luX3V0aWwuaCBvcGVuYnNkLWNvbXBhdC9wb3J0LWFpeC5oIG9wZW5ic2QtY29t cGF0L3BvcnQtaXJpeC5oIG9wZW5ic2QtY29tcGF0L3BvcnQtbGludXguaCBvcGVuYnNkLWNvbXBh dC9wb3J0LXNvbGFyaXMuaCBvcGVuYnNkLWNvbXBhdC9wb3J0LW5ldC5oIG9wZW5ic2QtY29tcGF0 L3BvcnQtdXcuaCBvcGVuYnNkLWNvbXBhdC9ic2QtbmV4dHN0ZXAuaCBlbnRyb3B5LmggeG1hbGxv Yy5oIHNzaC5oIHNzaGJ1Zi5oIHNzaGtleS5oIGNpcGhlci5oIGNpcGhlci1jaGFjaGFwb2x5Lmgg Y2hhY2hhLmggcG9seTEzMDUuaCBjaXBoZXItYWVzY3RyLmggcmlqbmRhZWwuaCBkaWdlc3QuaCBr ZXguaCBtYWMuaCBjcnlwdG9fYXBpLmggY29tcGF0LmggbXlwcm9wb3NhbC5oIHBhY2tldC5oIGRp c3BhdGNoLmggbG9nLmggc3NoZXJyLmgKKyBzc2gta2V5c2lnbi5vOiBpbmNsdWRlcy5oIGNvbmZp Zy5oIGRlZmluZXMuaCBwbGF0Zm9ybS5oIG9wZW5ic2QtY29tcGF0L29wZW5ic2QtY29tcGF0Lmgg b3BlbmJzZC1jb21wYXQvYmFzZTY0Lmggb3BlbmJzZC1jb21wYXQvc2lnYWN0Lmggb3BlbmJzZC1j b21wYXQvcmVhZHBhc3NwaHJhc2UuaCBvcGVuYnNkLWNvbXBhdC92aXMuaCBvcGVuYnNkLWNvbXBh dC9nZXRycnNldGJ5bmFtZS5oIG9wZW5ic2QtY29tcGF0L3NoYTEuaCBvcGVuYnNkLWNvbXBhdC9i c2Qtc2hhMi5oIG9wZW5ic2QtY29tcGF0L21kNS5oIG9wZW5ic2QtY29tcGF0L2JsZi5oIG9wZW5i c2QtY29tcGF0L2ZubWF0Y2guaCBvcGVuYnNkLWNvbXBhdC9nZXRvcHQuaCBvcGVuYnNkLWNvbXBh dC9ic2Qtc2lnbmFsLmggb3BlbmJzZC1jb21wYXQvYnNkLW1pc2MuaCBvcGVuYnNkLWNvbXBhdC9i c2Qtc2V0cmVzX2lkLmggb3BlbmJzZC1jb21wYXQvYnNkLXN0YXR2ZnMuaCBvcGVuYnNkLWNvbXBh dC9ic2Qtd2FpdHBpZC5oIG9wZW5ic2QtY29tcGF0L2JzZC1wb2xsLmggb3BlbmJzZC1jb21wYXQv ZmFrZS1yZmMyNTUzLmggb3BlbmJzZC1jb21wYXQvYnNkLWN5Z3dpbl91dGlsLmggb3BlbmJzZC1j b21wYXQvcG9ydC1haXguaCBvcGVuYnNkLWNvbXBhdC9wb3J0LWlyaXguaCBvcGVuYnNkLWNvbXBh dC9wb3J0LWxpbnV4Lmggb3BlbmJzZC1jb21wYXQvcG9ydC1zb2xhcmlzLmggb3BlbmJzZC1jb21w YXQvcG9ydC1uZXQuaCBvcGVuYnNkLWNvbXBhdC9wb3J0LXV3Lmggb3BlbmJzZC1jb21wYXQvYnNk LW5leHRzdGVwLmggZW50cm9weS5oIHhtYWxsb2MuaCBsb2cuaCBzc2hlcnIuaCBzc2hrZXkuaCBz c2guaCBzc2gyLmggbWlzYy5oIHNzaGJ1Zi5oIGF1dGhmaWxlLmggbXNnLmggY2Fub2hvc3QuaCBw YXRobmFtZXMuaCByZWFkY29uZi5oIHVpZHN3YXAuaAorZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUg Yi8uZ2l0aWdub3JlCitpbmRleCA5MDc1MzMwNjcuLjdiNDY2OGQ3MSAxMDA2NDQKKy0tLSBhLy5n aXRpZ25vcmUKKysrKyBiLy5naXRpZ25vcmUKK0BAIC0yOCw2ICsyOCw3IEBAIHNzaC1hZ2VudAor IHNzaC1rZXlnZW4KKyBzc2gta2V5c2NhbgorIHNzaC1rZXlzaWduCisrc3NoLWtleWNhdAorIHNz aC1wa2NzMTEtaGVscGVyCisgc3NoLXNrLWhlbHBlcgorIHNzaGQKK2RpZmYgLS1naXQgYS9IT1dU Ty5zc2gta2V5Y2F0IGIvSE9XVE8uc3NoLWtleWNhdAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2lu ZGV4IDAwMDAwMDAwMC4uNjMwZWM2MjhjCistLS0gL2Rldi9udWxsCisrKysgYi9IT1dUTy5zc2gt a2V5Y2F0CitAQCAtMCwwICsxLDEyIEBACisrVGhlIHNzaC1rZXljYXQgcmV0cmlldmVzIHRoZSBj b250ZW50IG9mIHRoZSB+Ly5zc2gvYXV0aG9yaXplZF9rZXlzCisrb2YgYW4gdXNlciBpbiBhbnkg ZW52aXJvbm1lbnQuIFRoaXMgaW5jbHVkZXMgZW52aXJvbm1lbnRzIHdpdGgKKytwb2x5aW5zdGFu dGlhdGlvbiBvZiBob21lIGRpcmVjdG9yaWVzIGFuZCBTRUxpbnV4IE1MUyBwb2xpY3kgZW5hYmxl ZC4KKysKKytUbyB1c2Ugc3NoLWtleWNhdCwgc2V0IHRoZXNlIG9wdGlvbnMgaW4gL2V0Yy9zc2gv c3NoZF9jb25maWcgZmlsZToKKysgICAgICAgIEF1dGhvcml6ZWRLZXlzQ29tbWFuZCAvdXNyL2xp YmV4ZWMvb3BlbnNzaC9zc2gta2V5Y2F0CisrICAgICAgICBBdXRob3JpemVkS2V5c0NvbW1hbmRV c2VyIHJvb3QKKysKKytEbyBub3QgZm9yZ2V0IHRvIGVuYWJsZSBwdWJsaWMga2V5IGF1dGhlbnRp Y2F0aW9uOgorKyAgICAgICAgUHVia2V5QXV0aGVudGljYXRpb24geWVzCisrCisrCitkaWZmIC0t Z2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgoraW5kZXggZGE1OWJjYzEwLi5jOTMyMzcz ZmMgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC0yMyw2 ICsyMyw3IEBAIFNTSF9QUk9HUkFNPUBiaW5kaXJAL3NzaAorIEFTS1BBU1NfUFJPR1JBTT0kKGxp YmV4ZWNkaXIpL3NzaC1hc2twYXNzCisgU0ZUUF9TRVJWRVI9JChsaWJleGVjZGlyKS9zZnRwLXNl cnZlcgorIFNTSF9LRVlTSUdOPSQobGliZXhlY2Rpcikvc3NoLWtleXNpZ24KKytTU0hfS0VZQ0FU PSQobGliZXhlY2Rpcikvc3NoLWtleWNhdAorIFNTSERfU0VTU0lPTj0kKGxpYmV4ZWNkaXIpL3Nz aGQtc2Vzc2lvbgorIFNTSERfQVVUSD0kKGxpYmV4ZWNkaXIpL3NzaGQtYXV0aAorIFNTSF9QS0NT MTFfSEVMUEVSPSQobGliZXhlY2Rpcikvc3NoLXBrY3MxMS1oZWxwZXIKK0BAIC01OCw2ICs1OSw3 IEBAIENIQU5ORUxMSUJTPUBDSEFOTkVMTElCU0AKKyBLNUxJQlM9QEs1TElCU0AKKyBHU1NMSUJT PUBHU1NMSUJTQAorIFNTSERMSUJTPUBTU0hETElCU0AKKytLRVlDQVRMSUJTPUBLRVlDQVRMSUJT QAorIExJQkVESVQ9QExJQkVESVRACisgTElCRklETzI9QExJQkZJRE8yQAorIExJQldUTVBEQj1A TElCV1RNUERCQAorQEAgLTc1LDcgKzc3LDcgQEAgTUtESVJfUD1ATUtESVJfUEAKKyAKKyAuU1VG RklYRVM6IC5sbworIAorLVRBUkdFVFM9c3NoJChFWEVFWFQpIHNzaGQkKEVYRUVYVCkgc3NoZC1z ZXNzaW9uJChFWEVFWFQpIHNzaGQtYXV0aCQoRVhFRVhUKSBzc2gtYWRkJChFWEVFWFQpIHNzaC1r ZXlnZW4kKEVYRUVYVCkgc3NoLWtleXNjYW4ke0VYRUVYVH0gc3NoLWtleXNpZ24ke0VYRUVYVH0g c3NoLXBrY3MxMS1oZWxwZXIkKEVYRUVYVCkgc3NoLWFnZW50JChFWEVFWFQpIHNjcCQoRVhFRVhU KSBzZnRwLXNlcnZlciQoRVhFRVhUKSBzZnRwJChFWEVFWFQpIHNzaC1zay1oZWxwZXIkKEVYRUVY VCkgJChTS19TVEFOREFMT05FKQorK1RBUkdFVFM9c3NoJChFWEVFWFQpIHNzaGQkKEVYRUVYVCkg c3NoZC1zZXNzaW9uJChFWEVFWFQpIHNzaGQtYXV0aCQoRVhFRVhUKSBzc2gtYWRkJChFWEVFWFQp IHNzaC1rZXlnZW4kKEVYRUVYVCkgc3NoLWtleXNjYW4ke0VYRUVYVH0gc3NoLWtleXNpZ24ke0VY RUVYVH0gc3NoLXBrY3MxMS1oZWxwZXIkKEVYRUVYVCkgc3NoLWFnZW50JChFWEVFWFQpIHNjcCQo RVhFRVhUKSBzZnRwLXNlcnZlciQoRVhFRVhUKSBzZnRwJChFWEVFWFQpIHNzaC1zay1oZWxwZXIk KEVYRUVYVCkgc3NoLWtleWNhdCQoRVhFRVhUKSAkKFNLX1NUQU5EQUxPTkUpCisgCisgTElCT1BF TlNTSF9PQkpTPVwKKyAJc3NoX2FwaS5vIFwKK0BAIC0yNTMsNiArMjU1LDkgQEAgc3NoLXBrY3Mx MS1oZWxwZXIkKEVYRUVYVCk6ICQoTElCQ09NUEFUKSBsaWJzc2guYSAkKFAxMUhFTFBFUl9PQkpT KQorIHNzaC1zay1oZWxwZXIkKEVYRUVYVCk6ICQoTElCQ09NUEFUKSBsaWJzc2guYSAkKFNLSEVM UEVSX09CSlMpCisgCSQoTEQpIC1vICRAICQoU0tIRUxQRVJfT0JKUykgJChMREZMQUdTKSAtbHNz aCAtbG9wZW5ic2QtY29tcGF0IC1sc3NoIC1sb3BlbmJzZC1jb21wYXQgJChMSUJTKSAkKExJQkZJ RE8yKSAkKENIQU5ORUxMSUJTKQorIAorK3NzaC1rZXljYXQkKEVYRUVYVCk6ICQoTElCQ09NUEFU KSAkKFNTSERPQkpTKSBsaWJzc2guYSBzc2gta2V5Y2F0Lm8gdWlkc3dhcC5vCisrCSQoTEQpIC1v ICRAIHNzaC1rZXljYXQubyB1aWRzd2FwLm8gJChMREZMQUdTKSAtbHNzaCAtbG9wZW5ic2QtY29t cGF0ICQoS0VZQ0FUTElCUykgJChDSEFOTkVMTElCUykgJChMSUJTKQorKworIHNzaC1rZXlzY2Fu JChFWEVFWFQpOiAkKExJQkNPTVBBVCkgbGlic3NoLmEgJChTU0hLRVlTQ0FOX09CSlMpCisgCSQo TEQpIC1vICRAICQoU1NIS0VZU0NBTl9PQkpTKSAkKExERkxBR1MpIC1sc3NoIC1sb3BlbmJzZC1j b21wYXQgLWxzc2ggJChMSUJTKSAkKENIQU5ORUxMSUJTKQorIAorQEAgLTQ0OSw2ICs0NTQsNyBA QCBpbnN0YWxsLWZpbGVzOgorIAkkKElOU1RBTEwpIC1tIDQ3MTEgJChTVFJJUF9PUFQpIHNzaC1r ZXlzaWduJChFWEVFWFQpICQoREVTVERJUikkKFNTSF9LRVlTSUdOKSQoRVhFRVhUKQorIAkkKElO U1RBTEwpIC1tIDA3NTUgJChTVFJJUF9PUFQpIHNzaC1wa2NzMTEtaGVscGVyJChFWEVFWFQpICQo REVTVERJUikkKFNTSF9QS0NTMTFfSEVMUEVSKSQoRVhFRVhUKQorIAkkKElOU1RBTEwpIC1tIDA3 NTUgJChTVFJJUF9PUFQpIHNzaC1zay1oZWxwZXIkKEVYRUVYVCkgJChERVNURElSKSQoU1NIX1NL X0hFTFBFUikkKEVYRUVYVCkKKysJJChJTlNUQUxMKSAtbSAwNzU1ICQoU1RSSVBfT1BUKSBzc2gt a2V5Y2F0JChFWEVFWFQpICQoREVTVERJUikkKGxpYmV4ZWNkaXIpL3NzaC1rZXljYXQkKEVYRUVY VCkKKyAJJChJTlNUQUxMKSAtbSAwNzU1ICQoU1RSSVBfT1BUKSBzZnRwJChFWEVFWFQpICQoREVT VERJUikkKGJpbmRpcikvc2Z0cCQoRVhFRVhUKQorIAkkKElOU1RBTEwpIC1tIDA3NTUgJChTVFJJ UF9PUFQpIHNmdHAtc2VydmVyJChFWEVFWFQpICQoREVTVERJUikkKFNGVFBfU0VSVkVSKSQoRVhF RVhUKQorIAkkKElOU1RBTEwpIC1tIDY0NCBzc2guMS5vdXQgJChERVNURElSKSQobWFuZGlyKS8k KG1hbnN1YmRpcikxL3NzaC4xCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJl LmFjCitpbmRleCBhNGQ1NDRjYzUuLmQ3ZTkxMWU4MSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5h YworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMzcwMCw2ICszNzAwLDcgQEAgQUNfQVJHX1dJVEgo W3BhbV0sCisgCQkJUEFNX01TRz0ieWVzIgorIAorIAkJCVNTSERMSUJTPSIkU1NIRExJQlMgLWxw YW0iCisrCQkJS0VZQ0FUTElCUz0iJEtFWUNBVExJQlMgLWxwYW0iCisgCQkJQUNfREVGSU5FKFtV U0VfUEFNXSwgWzFdLAorIAkJCQlbRGVmaW5lIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBQQU0gc3Vw cG9ydF0pCisgCitAQCAtMzcxMCw2ICszNzExLDcgQEAgQUNfQVJHX1dJVEgoW3BhbV0sCisgCQkJ CQk7OworIAkJCQkqKQorIAkJCQkJU1NIRExJQlM9IiRTU0hETElCUyAtbGRsIgorKwkJCQkJS0VZ Q0FUTElCUz0iJEtFWUNBVExJQlMgLWxkbCIKKyAJCQkJCTs7CisgCQkJCWVzYWMKKyAJCQlmaQor QEAgLTQ5NTMsNiArNDk1NSw3IEBAIEFDX0FSR19XSVRIKFtzZWxpbnV4XSwKKyAJZmkgXQorICkK KyBBQ19TVUJTVChbU1NIRExJQlNdKQorK0FDX1NVQlNUKFtLRVlDQVRMSUJTXSkKKyAKKyAjIENo ZWNrIHdoZXRoZXIgdXNlciB3YW50cyBLZXJiZXJvcyA1IHN1cHBvcnQKKyBLUkI1X01TRz0ibm8i CitAQCAtNTk2Niw2ICs1OTY5LDkgQEAgZmkKKyBpZiB0ZXN0ICEgLXogIiR7U1NIRExJQlN9Ijsg dGhlbgorIGVjaG8gIiAgICAgICAgICtmb3Igc3NoZDogJHtTU0hETElCU30iCisgZmkKKytpZiB0 ZXN0ICEgLXogIiR7S0VZQ0FUTElCU30iOyB0aGVuCisrZWNobyAiICAgK2ZvciBzc2gta2V5Y2F0 OiAke0tFWUNBVExJQlN9IgorK2ZpCisgCisgZWNobyAiIgorIAorZGlmZiAtLWdpdCBhL3NzaC1r ZXljYXQuYyBiL3NzaC1rZXljYXQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAw MDAwMC4uOGJiMTdjNzNlCistLS0gL2Rldi9udWxsCisrKysgYi9zc2gta2V5Y2F0LmMKK0BAIC0w LDAgKzEsMjQxIEBACisrLyoKKysgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKysgKiBtb2RpZmljYXRpb24sIGFyZSBw ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKysgKiBhcmUg bWV0OgorKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0 aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCBhbmQgdGhlIGVudGlyZSBwZXJtaXNz aW9uIG5vdGljZSBpbiBpdHMgZW50aXJldHksCisrICogICAgaW5jbHVkaW5nIHRoZSBkaXNjbGFp bWVyIG9mIHdhcnJhbnRpZXMuCisrICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMg bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisr ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg dGhlIGRpc3RyaWJ1dGlvbi4KKysgKiAzLiBUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBub3Qg YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUKKysgKiAgICBwcm9kdWN0cyBkZXJpdmVkIGZy b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yCisrICogICAgd3JpdHRlbiBw ZXJtaXNzaW9uLgorKyAqCisrICogQUxURVJOQVRJVkVMWSwgdGhpcyBwcm9kdWN0IG1heSBiZSBk aXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YKKysgKiB0aGUgR05VIFB1YmxpYyBMaWNlbnNl LCBpbiB3aGljaCBjYXNlIHRoZSBwcm92aXNpb25zIG9mIHRoZSBHUEwgYXJlCisrICogcmVxdWly ZWQgSU5TVEVBRCBPRiB0aGUgYWJvdmUgcmVzdHJpY3Rpb25zLiAgKFRoaXMgY2xhdXNlIGlzCisr ICogbmVjZXNzYXJ5IGR1ZSB0byBhIHBvdGVudGlhbCBiYWQgaW50ZXJhY3Rpb24gYmV0d2VlbiB0 aGUgR1BMIGFuZAorKyAqIHRoZSByZXN0cmljdGlvbnMgY29udGFpbmVkIGluIGEgQlNELXN0eWxl IGNvcHlyaWdodC4pCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMn JyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAorKyAqIFdBUlJBTlRJRVMsIElOQ0xVRElORywg QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTCisrICogT0YgTUVSQ0hB TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKysgKiBE SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFO WSBESVJFQ1QsCisrICogSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisrICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisrICogU0VSVklDRVM7IExP U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisr ICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS IElOIENPTlRSQUNULAorKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKysgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisrICogT0YgVEhFIFBPU1NJ QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKyAqLworKworKy8qCisrICogQ29weXJpZ2h0IChjKSAy MDExIFJlZCBIYXQsIEluYy4KKysgKiBXcml0dGVuIGJ5IFRvbWFzIE1yYXogPHRtcmF6QHJlZGhh dC5jb20+CisrKi8KKysKKysjZGVmaW5lIF9HTlVfU09VUkNFCisrCisrI2luY2x1ZGUgImNvbmZp Zy5oIgorKyNpbmNsdWRlIDxzdGRpby5oPgorKyNpbmNsdWRlIDxzdGRsaWIuaD4KKysjaW5jbHVk ZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorKyNpbmNsdWRlIDxzeXMvc3Rh dC5oPgorKyNpbmNsdWRlIDxwd2QuaD4KKysjaW5jbHVkZSA8ZmNudGwuaD4KKysjaW5jbHVkZSA8 dW5pc3RkLmg+CisrI2lmZGVmIEhBVkVfU1RESU5UX0gKKysjaW5jbHVkZSA8c3RkaW50Lmg+Cisr I2VuZGlmCisrCisrI2luY2x1ZGUgPHNlY3VyaXR5L3BhbV9hcHBsLmg+CisrCisrI2luY2x1ZGUg InVpZHN3YXAuaCIKKysjaW5jbHVkZSAibWlzYy5oIgorKworKyNkZWZpbmUgRVJSX1VTQUdFIDEK KysjZGVmaW5lIEVSUl9QQU1fU1RBUlQgMgorKyNkZWZpbmUgRVJSX09QRU5fU0VTU0lPTiAzCisr I2RlZmluZSBFUlJfQ0xPU0VfU0VTU0lPTiA0CisrI2RlZmluZSBFUlJfUEFNX0VORCA1CisrI2Rl ZmluZSBFUlJfR0VUUFdOQU0gNgorKyNkZWZpbmUgRVJSX01FTU9SWSA3CisrI2RlZmluZSBFUlJf T1BFTiA4CisrI2RlZmluZSBFUlJfRklMRV9NT0RFIDkKKysjZGVmaW5lIEVSUl9GRE9QRU4gMTAK KysjZGVmaW5lIEVSUl9TVEFUIDExCisrI2RlZmluZSBFUlJfV1JJVEUgMTIKKysjZGVmaW5lIEVS Ul9QQU1fUFVURU5WIDEzCisrI2RlZmluZSBCVUZMRU4gNDA5NgorKworKy8qIEp1c3QgaWdub3Jl IHRoZSBtZXNzYWdlcyBpbiB0aGUgY29udmVyc2F0aW9uIGZ1bmN0aW9uICovCisrc3RhdGljIGlu dAorK2R1bW15X2NvbnYoaW50IG51bV9tc2csIGNvbnN0IHN0cnVjdCBwYW1fbWVzc2FnZSAqKm1z Z20sCisrCSAgIHN0cnVjdCBwYW1fcmVzcG9uc2UgKipyZXNwb25zZSwgdm9pZCAqYXBwZGF0YV9w dHIpCisreworKwlzdHJ1Y3QgcGFtX3Jlc3BvbnNlICpyc3A7CisrCisrCSh2b2lkKW1zZ207Cisr CSh2b2lkKWFwcGRhdGFfcHRyOworKworKwlpZiAobnVtX21zZyA8PSAwKQorKwkJcmV0dXJuIFBB TV9DT05WX0VSUjsKKysKKysJLyogSnVzdCBhbGxvY2F0ZSB0aGUgYXJyYXkgYXMgZW1wdHkgcmVz cG9uc2VzICovCisrCXJzcCA9IGNhbGxvYyAobnVtX21zZywgc2l6ZW9mIChzdHJ1Y3QgcGFtX3Jl c3BvbnNlKSk7CisrCWlmIChyc3AgPT0gTlVMTCkKKysJCXJldHVybiBQQU1fQ09OVl9FUlI7Cisr CisrCSpyZXNwb25zZSA9IHJzcDsKKysJcmV0dXJuIFBBTV9TVUNDRVNTOworK30KKysKKytzdGF0 aWMgc3RydWN0IHBhbV9jb252IGNvbnYgPSB7CisrCWR1bW15X2NvbnYsCisrCU5VTEwKKyt9Owor KworK2NoYXIgKgorK21ha2VfYXV0aF9rZXlzX25hbWUoY29uc3Qgc3RydWN0IHBhc3N3ZCAqcHdk KQorK3sKKysJY2hhciAqZm5hbWU7CisrCisrCWlmIChhc3ByaW50ZigmZm5hbWUsICIlcy8uc3No L2F1dGhvcml6ZWRfa2V5cyIsIHB3ZC0+cHdfZGlyKSA8IDApCisrCQlyZXR1cm4gTlVMTDsKKysK KysJcmV0dXJuIGZuYW1lOworK30KKysKKytpbnQKKytkdW1wX2tleXMoY29uc3QgY2hhciAqdXNl cikKKyt7CisrCXN0cnVjdCBwYXNzd2QgKnB3ZDsKKysJaW50IGZkID0gLTE7CisrCUZJTEUgKmYg PSBOVUxMOworKwljaGFyICpmbmFtZSA9IE5VTEw7CisrCWludCBydiA9IDA7CisrCWNoYXIgYnVm W0JVRkxFTl07CisrCXNpemVfdCBsZW47CisrCXN0cnVjdCBzdGF0IHN0OworKworKwlpZiAoKHB3 ZCA9IGdldHB3bmFtKHVzZXIpKSA9PSBOVUxMKSB7CisrCQlyZXR1cm4gRVJSX0dFVFBXTkFNOwor Kwl9CisrCisrCWlmICgoZm5hbWUgPSBtYWtlX2F1dGhfa2V5c19uYW1lKHB3ZCkpID09IE5VTEwp IHsKKysJCXJldHVybiBFUlJfTUVNT1JZOworKwl9CisrCisrCXRlbXBvcmFyaWx5X3VzZV91aWQo cHdkKTsKKysKKysJaWYgKChmZCA9IG9wZW4oZm5hbWUsIE9fUkRPTkxZfE9fTk9OQkxPQ0t8T19O T0ZPTExPVywgMCkpIDwgMCkgeworKwkJcnYgPSBFUlJfT1BFTjsKKysJCWdvdG8gZmFpbDsKKysJ fQorKworKwlpZiAoZnN0YXQoZmQsICZzdCkgPCAwKSB7CisrCQlydiA9IEVSUl9TVEFUOworKwkJ Z290byBmYWlsOworKwl9CisrCisrCWlmICghU19JU1JFRyhzdC5zdF9tb2RlKSB8fAorKwkJKHN0 LnN0X3VpZCAhPSBwd2QtPnB3X3VpZCAmJiBzdC5zdF91aWQgIT0gMCkpIHsKKysJCXJ2ID0gRVJS X0ZJTEVfTU9ERTsKKysJCWdvdG8gZmFpbDsKKysJfQorKworKwl1bnNldF9ub25ibG9jayhmZCk7 CisrCisrCWlmICgoZiA9IGZkb3BlbihmZCwgInIiKSkgPT0gTlVMTCkgeworKwkJcnYgPSBFUlJf RkRPUEVOOworKwkJZ290byBmYWlsOworKwl9CisrCisrCWZkID0gLTE7CisrCisrCXdoaWxlICgo bGVuID0gZnJlYWQoYnVmLCAxLCBzaXplb2YoYnVmKSwgZikpID4gMCkgeworKwkJcnYgPSBmd3Jp dGUoYnVmLCAxLCBsZW4sIHN0ZG91dCkgIT0gbGVuID8gRVJSX1dSSVRFIDogMDsKKysJfQorKwor K2ZhaWw6CisrCWlmIChmZCAhPSAtMSkKKysJCWNsb3NlKGZkKTsKKysJaWYgKGYgIT0gTlVMTCkK KysJCWZjbG9zZShmKTsKKysJZnJlZShmbmFtZSk7CisrCXJlc3RvcmVfdWlkKCk7CisrCXJldHVy biBydjsKKyt9CisrCisrc3RhdGljIGNvbnN0IGNoYXIgKmVudl9uYW1lc1tdID0geyAiU0VMSU5V WF9ST0xFX1JFUVVFU1RFRCIsCisrCSJTRUxJTlVYX0xFVkVMX1JFUVVFU1RFRCIsCisrCSJTRUxJ TlVYX1VTRV9DVVJSRU5UX1JBTkdFIgorK307CisrCisrZXh0ZXJuIGNoYXIgKiplbnZpcm9uOwor KworK2ludAorK3NldF9wYW1fZW52aXJvbm1lbnQocGFtX2hhbmRsZV90ICpwYW1oKQorK3sKKysJ aW50IGk7CisrCXNpemVfdCBqOworKworKwlmb3IgKGogPSAwOyBqIDwgc2l6ZW9mKGVudl9uYW1l cykvc2l6ZW9mKGVudl9uYW1lc1swXSk7ICsraikgeworKwkJaW50IGxlbiA9IHN0cmxlbihlbnZf bmFtZXNbal0pOworKworKwkJZm9yIChpID0gMDsgZW52aXJvbltpXSAhPSBOVUxMOyArK2kpIHsK KysJCQlpZiAoc3RybmNtcChlbnZfbmFtZXNbal0sIGVudmlyb25baV0sIGxlbikgPT0gMCAmJgor KwkJCSAgICBlbnZpcm9uW2ldW2xlbl0gPT0gJz0nKSB7CisrCQkJCWlmIChwYW1fcHV0ZW52KHBh bWgsIGVudmlyb25baV0pICE9IFBBTV9TVUNDRVNTKQorKwkJCQkJcmV0dXJuIEVSUl9QQU1fUFVU RU5WOworKwkJCX0KKysJCX0KKysJfQorKworKwlyZXR1cm4gMDsKKyt9CisrCisraW50CisrbWFp bihpbnQgYXJnYywgY2hhciAqYXJndltdKQorK3sKKysJcGFtX2hhbmRsZV90ICpwYW1oID0gTlVM TDsKKysJaW50IHJldHZhbDsKKysJaW50IGV2ID0gMDsKKysKKysJaWYgKGFyZ2MgIT0gMikgewor KwkJZnByaW50ZihzdGRlcnIsICJVc2FnZTogJXMgPHVzZXItbmFtZT5cbiIsIGFyZ3ZbMF0pOwor KwkJcmV0dXJuIEVSUl9VU0FHRTsKKysJfQorKworKwlyZXR2YWwgPSBwYW1fc3RhcnQoInNzaC1r ZXljYXQiLCBhcmd2WzFdLCAmY29udiwgJnBhbWgpOworKwlpZiAocmV0dmFsICE9IFBBTV9TVUND RVNTKSB7CisrCQlyZXR1cm4gRVJSX1BBTV9TVEFSVDsKKysJfQorKworKwlldiA9IHNldF9wYW1f ZW52aXJvbm1lbnQocGFtaCk7CisrCWlmIChldiAhPSAwKQorKwkJZ290byBmaW5pc2g7CisrCisr CXJldHZhbCA9IHBhbV9vcGVuX3Nlc3Npb24ocGFtaCwgUEFNX1NJTEVOVCk7CisrCWlmIChyZXR2 YWwgIT0gUEFNX1NVQ0NFU1MpIHsKKysJCWV2ID0gRVJSX09QRU5fU0VTU0lPTjsKKysJCWdvdG8g ZmluaXNoOworKwl9CisrCisrCWV2ID0gZHVtcF9rZXlzKGFyZ3ZbMV0pOworKworKwlyZXR2YWwg PSBwYW1fY2xvc2Vfc2Vzc2lvbihwYW1oLCBQQU1fU0lMRU5UKTsKKysJaWYgKHJldHZhbCAhPSBQ QU1fU1VDQ0VTUykgeworKwkJZXYgPSBFUlJfQ0xPU0VfU0VTU0lPTjsKKysJfQorKworK2Zpbmlz aDoKKysJcmV0dmFsID0gcGFtX2VuZCAocGFtaCxyZXR2YWwpOworKwlpZiAocmV0dmFsICE9IFBB TV9TVUNDRVNTKSB7CisrCQlldiA9IEVSUl9QQU1fRU5EOworKwl9CisrCXJldHVybiBldjsKKyt9 CistLSAKKzIuNTUuMAorCgpkaWZmIC0tZ2l0IGEvMDAwNi1vcGVuc3NoLTUuOXAxLWlwdjZtYW4u cGF0Y2ggYi8wMDA2LW9wZW5zc2gtNS45cDEtaXB2Nm1hbi5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMmJiN2FlOC4uMDAwMDAwMAotLS0gYS8wMDA2LW9wZW5zc2gtNS45cDEt aXB2Nm1hbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gYmEyMGMy MzgwYjMxMDhiMWY4ZTJjMDA2ODlhOGVmYzY2MjNjZDQ4MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKLUZyb206IERtaXRyeSBCZWx5YXZza2l5IDxiZWxkbWl0QGdtYWlsLmNvbT4KLURhdGU6IFRo dSwgMTUgTWF5IDIwMjUgMTM6NDM6MjggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAwNi81NF0gb3Bl bnNzaC01LjlwMS1pcHY2bWFuCi0KLSMoZHJvcD8pIGh0dHBzOi8vYnVnemlsbGEubWluZHJvdC5v cmcvc2hvd19idWcuY2dpP2lkPTE5MjUKLS0tLQotIHNzaC4xICB8IDIgKysKLSBzc2hkLjggfCAy ICsrCi0gMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3Nz aC4xIGIvc3NoLjEKLWluZGV4IDgyYWU1NDgwYy4uYzJjOGY1MGYxIDEwMDY0NAotLS0tIGEvc3No LjEKLSsrKyBiL3NzaC4xCi1AQCAtMTY2OSw2ICsxNjY5LDggQEAgbWFudWFsIHBhZ2UgZm9yIG1v cmUgaW5mb3JtYXRpb24uCi0gLk5tCi0gZXhpdHMgd2l0aCB0aGUgZXhpdCBzdGF0dXMgb2YgdGhl IHJlbW90ZSBjb21tYW5kIG9yIHdpdGggMjU1Ci0gaWYgYW4gZXJyb3Igb2NjdXJyZWQuCi0rLlNo IElQVjYKLStJUHY2IGFkZHJlc3MgY2FuIGJlIHVzZWQgZXZlcnl3aGVyZSB3aGVyZSBJUHY0IGFk ZHJlc3MuIEluIGFsbCBlbnRyaWVzIG11c3QgYmUgdGhlIElQdjYgYWRkcmVzcyBlbmNsb3NlZCBp biBzcXVhcmUgYnJhY2tldHMuIE5vdGU6IFRoZSBzcXVhcmUgYnJhY2tldHMgYXJlIG1ldGFjaGFy YWN0ZXJzIGZvciB0aGUgc2hlbGwgYW5kIG11c3QgYmUgZXNjYXBlZCBpbiBzaGVsbC4KLSAuU2gg U0VFIEFMU08KLSAuWHIgc2NwIDEgLAotIC5YciBzZnRwIDEgLAotZGlmZiAtLWdpdCBhL3NzaGQu OCBiL3NzaGQuOAotaW5kZXggN2ZiY2E3NzZhLi4wMjI2YTgzMDMgMTAwNjQ0Ci0tLS0gYS9zc2hk LjgKLSsrKyBiL3NzaGQuOAotQEAgLTEwMTgsNiArMTAxOCw4IEBAIGNvbmN1cnJlbnRseSBmb3Ig ZGlmZmVyZW50IHBvcnRzLCB0aGlzIGNvbnRhaW5zIHRoZSBwcm9jZXNzIElEIG9mIHRoZSBvbmUK LSBzdGFydGVkIGxhc3QpLgotIFRoZSBjb250ZW50IG9mIHRoaXMgZmlsZSBpcyBub3Qgc2Vuc2l0 aXZlOyBpdCBjYW4gYmUgd29ybGQtcmVhZGFibGUuCi0gLkVsCi0rLlNoIElQVjYKLStJUHY2IGFk ZHJlc3MgY2FuIGJlIHVzZWQgZXZlcnl3aGVyZSB3aGVyZSBJUHY0IGFkZHJlc3MuIEluIGFsbCBl bnRyaWVzIG11c3QgYmUgdGhlIElQdjYgYWRkcmVzcyBlbmNsb3NlZCBpbiBzcXVhcmUgYnJhY2tl dHMuIE5vdGU6IFRoZSBzcXVhcmUgYnJhY2tldHMgYXJlIG1ldGFjaGFyYWN0ZXJzIGZvciB0aGUg c2hlbGwgYW5kIG11c3QgYmUgZXNjYXBlZCBpbiBzaGVsbC4KLSAuU2ggU0VFIEFMU08KLSAuWHIg c2NwIDEgLAotIC5YciBzZnRwIDEgLAotLS0gCi0yLjUzLjAKLQoKZGlmZiAtLWdpdCBhLzAwMDYt b3BlbnNzaC02LjZwMS1hbGxvdy1pcC1vcHRzLnBhdGNoIGIvMDAwNi1vcGVuc3NoLTYuNnAxLWFs bG93LWlwLW9wdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzky YmVjMgotLS0gL2Rldi9udWxsCisrKyBiLzAwMDYtb3BlbnNzaC02LjZwMS1hbGxvdy1pcC1vcHRz LnBhdGNoCkBAIC0wLDAgKzEsNTYgQEAKK0Zyb20gODdmNmQ1YjAzNDhiMTA5MDc0Zjc3YzhmNmY5 ZDJhZTQ5ZDQ4MWY2OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERtaXRyeSBCZWx5 YXZza2l5IDxiZWxkbWl0QGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTUgTWF5IDIwMjUgMTM6NDM6 MjggKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAwNi81NF0gb3BlbnNzaC02LjZwMS1hbGxvdy1pcC1v cHRzCisKKyNodHRwczovL2J1Z3ppbGxhLm1pbmRyb3Qub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ0 CistLS0KKyBzc2hkLXNlc3Npb24uYyB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0tCisgMSBmaWxlIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisK K2RpZmYgLS1naXQgYS9zc2hkLXNlc3Npb24uYyBiL3NzaGQtc2Vzc2lvbi5jCitpbmRleCBkN2Q0 ZjMyYzUuLmZlYTk0ZGM2YyAxMDA2NDQKKy0tLSBhL3NzaGQtc2Vzc2lvbi5jCisrKysgYi9zc2hk LXNlc3Npb24uYworQEAgLTcyNywxMiArNzI3LDMyIEBAIGNoZWNrX2lwX29wdGlvbnMoc3RydWN0 IHNzaCAqc3NoKQorIAorIAlpZiAoZ2V0c29ja29wdChzb2NrX2luLCBJUFBST1RPX0lQLCBJUF9P UFRJT05TLCBvcHRzLAorIAkgICAgJm9wdGlvbl9zaXplKSA+PSAwICYmIG9wdGlvbl9zaXplICE9 IDApIHsKKy0JCXRleHRbMF0gPSAnXDAnOworLQkJZm9yIChpID0gMDsgaSA8IG9wdGlvbl9zaXpl OyBpKyspCistCQkJc25wcmludGYodGV4dCArIGkqMywgc2l6ZW9mKHRleHQpIC0gaSozLAorLQkJ CSAgICAiICUyLjJ4Iiwgb3B0c1tpXSk7CistCQlmYXRhbCgiQ29ubmVjdGlvbiBmcm9tICUuMTAw cyBwb3J0ICVkIHdpdGggSVAgb3B0czogJS44MDBzIiwKKy0JCSAgICBzc2hfcmVtb3RlX2lwYWRk cihzc2gpLCBzc2hfcmVtb3RlX3BvcnQoc3NoKSwgdGV4dCk7CisrCQlpID0gMDsKKysJCWRvIHsK KysJCQlzd2l0Y2ggKG9wdHNbaV0pIHsKKysJCQkJY2FzZSAwOgorKwkJCQljYXNlIDE6CisrCQkJ CQkrK2k7CisrCQkJCQlicmVhazsKKysJCQkJY2FzZSAxMzA6CisrCQkJCWNhc2UgMTMzOgorKwkJ CQljYXNlIDEzNDoKKysJCQkJCWlmIChpICsgMSA8IG9wdGlvbl9zaXplICYmIG9wdHNbaSArIDFd ID49IDIpIHsKKysJCQkJCQlpICs9IG9wdHNbaSArIDFdOworKwkJCQkJCWJyZWFrOworKwkJCQkJ fQorKwkJCQkJLyogRkFMTFRIUk9VR0ggKi8KKysJCQkJZGVmYXVsdDoKKysJCQkJLyogRmFpbCwg ZmF0YWxseSwgaWYgd2UgZGV0ZWN0IGVpdGhlciBsb29zZSBvciBzdHJpY3QKKysJCQkgCSAqIG9y IGluY29ycmVjdCBzb3VyY2Ugcm91dGluZyBvcHRpb25zLiAqLworKwkJCQkJdGV4dFswXSA9ICdc MCc7CisrCQkJCQlmb3IgKGkgPSAwOyBpIDwgb3B0aW9uX3NpemU7IGkrKykKKysJCQkJCQlzbnBy aW50Zih0ZXh0ICsgaSozLCBzaXplb2YodGV4dCkgLSBpKjMsCisrCQkJCQkJCSIgJTIuMngiLCBv cHRzW2ldKTsKKysJCQkJCWZhdGFsKCJDb25uZWN0aW9uIGZyb20gJS4xMDBzIHBvcnQgJWQgd2l0 aCBJUCBvcHRpb25zOiUuODAwcyIsCisrCQkJCQkJc3NoX3JlbW90ZV9pcGFkZHIoc3NoKSwgc3No X3JlbW90ZV9wb3J0KHNzaCksIHRleHQpOworKwkJCX0KKysJCX0gd2hpbGUgKGkgPCBvcHRpb25f c2l6ZSk7CisgCX0KKyAjZW5kaWYgLyogSVBfT1BUSU9OUyAqLworIH0KKy0tIAorMi41NS4wCisK CmRpZmYgLS1naXQgYS8wMDA3LW9wZW5zc2gtNS44cDItc2lncGlwZS5wYXRjaCBiLzAwMDctb3Bl bnNzaC01LjhwMi1zaWdwaXBlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAx ZGIyZDg2Li4wMDAwMDAwCi0tLSBhLzAwMDctb3BlbnNzaC01LjhwMi1zaWdwaXBlLnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotRnJvbSBlMTVjYzczYzFhMjZkY2ZhYjNmZDAw NzdlZTA1NjE3MjRhZDRmOGI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRG1pdHJ5 IEJlbHlhdnNraXkgPGJlbGRtaXRAZ21haWwuY29tPgotRGF0ZTogVGh1LCAxNSBNYXkgMjAyNSAx Mzo0MzoyOCArMDIwMAotU3ViamVjdDogW1BBVENIIDA3LzU0XSBvcGVuc3NoLTUuOHAyLXNpZ3Bp cGUKLQotLS0tCi0gc3NoLWtleXNjYW4uYyB8IDMgKysrCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5z ZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3NoLWtleXNjYW4uYyBiL3NzaC1rZXlzY2FuLmMK LWluZGV4IDliZDNlNzhlYi4uYmIzZWU0NjJkIDEwMDY0NAotLS0tIGEvc3NoLWtleXNjYW4uYwot KysrIGIvc3NoLWtleXNjYW4uYwotQEAgLTc3Nyw2ICs3NzcsOSBAQCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikKLSAJaWYgKG1heGZkID4gZmRsaW1fZ2V0KDApKQotIAkJZmRsaW1fc2V0KG1h eGZkKTsKLSAJZmRjb24gPSB4Y2FsbG9jKG1heGZkLCBzaXplb2YoY29uKSk7Ci0rIAotKwlzaWdu YWwoU0lHUElQRSwgU0lHX0lHTik7Ci0rCi0gCXJlYWRfd2FpdCA9IHhjYWxsb2MobWF4ZmQsIHNp emVvZihzdHJ1Y3QgcG9sbGZkKSk7Ci0gCWZvciAoaiA9IDA7IGogPCBtYXhmZDsgaisrKQotIAkJ cmVhZF93YWl0W2pdLmZkID0gLTE7Ci0tLSAKLTIuNTMuMAotCgpkaWZmIC0tZ2l0IGEvMDAwNy1v cGVuc3NoLTUuOXAxLWlwdjZtYW4ucGF0Y2ggYi8wMDA3LW9wZW5zc2gtNS45cDEtaXB2Nm1hbi5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2E1ODY0Ci0tLSAvZGV2 L251bGwKKysrIGIvMDAwNy1vcGVuc3NoLTUuOXAxLWlwdjZtYW4ucGF0Y2gKQEAgLTAsMCArMSw0 MCBAQAorRnJvbSBmMGQwNzYzMWEwYjYzMTJiZjM1YWNlZDJjOTYyOWI3NGQ3MGQ4MWUxIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRG1pdHJ5IEJlbHlhdnNraXkgPGJlbGRtaXRAZ21h aWwuY29tPgorRGF0ZTogVGh1LCAxNSBNYXkgMjAyNSAxMzo0MzoyOCArMDIwMAorU3ViamVjdDog W1BBVENIIDA3LzU0XSBvcGVuc3NoLTUuOXAxLWlwdjZtYW4KKworIyhkcm9wPykgaHR0cHM6Ly9i dWd6aWxsYS5taW5kcm90Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNQorLS0tCisgc3NoLjEgIHwg MiArKworIHNzaGQuOCB8IDIgKysKKyAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQor CitkaWZmIC0tZ2l0IGEvc3NoLjEgYi9zc2guMQoraW5kZXggMjJmMzg1ZjA2Li4yOGVhZWFjMmYg MTAwNjQ0CistLS0gYS9zc2guMQorKysrIGIvc3NoLjEKK0BAIC0xNjcwLDYgKzE2NzAsOCBAQCBt YW51YWwgcGFnZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAuTm0KKyBleGl0cyB3aXRoIHRoZSBl eGl0IHN0YXR1cyBvZiB0aGUgcmVtb3RlIGNvbW1hbmQgb3Igd2l0aCAyNTUKKyBpZiBhbiBlcnJv ciBvY2N1cnJlZC4KKysuU2ggSVBWNgorK0lQdjYgYWRkcmVzcyBjYW4gYmUgdXNlZCBldmVyeXdo ZXJlIHdoZXJlIElQdjQgYWRkcmVzcy4gSW4gYWxsIGVudHJpZXMgbXVzdCBiZSB0aGUgSVB2NiBh ZGRyZXNzIGVuY2xvc2VkIGluIHNxdWFyZSBicmFja2V0cy4gTm90ZTogVGhlIHNxdWFyZSBicmFj a2V0cyBhcmUgbWV0YWNoYXJhY3RlcnMgZm9yIHRoZSBzaGVsbCBhbmQgbXVzdCBiZSBlc2NhcGVk IGluIHNoZWxsLgorIC5TaCBTRUUgQUxTTworIC5YciBzY3AgMSAsCisgLlhyIHNmdHAgMSAsCitk aWZmIC0tZ2l0IGEvc3NoZC44IGIvc3NoZC44CitpbmRleCA3ZmJjYTc3NmEuLjAyMjZhODMwMyAx MDA2NDQKKy0tLSBhL3NzaGQuOAorKysrIGIvc3NoZC44CitAQCAtMTAxOCw2ICsxMDE4LDggQEAg Y29uY3VycmVudGx5IGZvciBkaWZmZXJlbnQgcG9ydHMsIHRoaXMgY29udGFpbnMgdGhlIHByb2Nl c3MgSUQgb2YgdGhlIG9uZQorIHN0YXJ0ZWQgbGFzdCkuCisgVGhlIGNvbnRlbnQgb2YgdGhpcyBm aWxlIGlzIG5vdCBzZW5zaXRpdmU7IGl0IGNhbiBiZSB3b3JsZC1yZWFkYWJsZS4KKyAuRWwKKysu U2ggSVBWNgorK0lQdjYgYWRkcmVzcyBjYW4gYmUgdXNlZCBldmVyeXdoZXJlIHdoZXJlIElQdjQg YWRkcmVzcy4gSW4gYWxsIGVudHJpZXMgbXVzdCBiZSB0aGUgSVB2NiBhZGRyZXNzIGVuY2xvc2Vk IGluIHNxdWFyZSBicmFja2V0cy4gTm90ZTogVGhlIHNxdWFyZSBicmFja2V0cyBhcmUgbWV0YWNo YXJhY3RlcnMgZm9yIHRoZSBzaGVsbCBhbmQgbXVzdCBiZSBlc2NhcGVkIGluIHNoZWxsLgorIC5T aCBTRUUgQUxTTworIC5YciBzY3AgMSAsCisgLlhyIHNmdHAgMSAsCistLSAKKzIuNTUuMAorCgpk aWZmIC0tZ2l0IGEvMDAwOC1vcGVuc3NoLTUuOHAyLXNpZ3BpcGUucGF0Y2ggYi8wMDA4LW9wZW5z c2gtNS44cDItc2lncGlwZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li43Y2NmZDhkCi0tLSAvZGV2L251bGwKKysrIGIvMDAwOC1vcGVuc3NoLTUuOHAyLXNpZ3BpcGUu cGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJvbSA0YTY4ZjY0MWU3MTE1M2M4MjVmNWNkYzM0ZDBi M2EwNzAyMmRmNjM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRG1pdHJ5IEJlbHlh dnNraXkgPGJlbGRtaXRAZ21haWwuY29tPgorRGF0ZTogVGh1LCAxNSBNYXkgMjAyNSAxMzo0Mzoy OCArMDIwMAorU3ViamVjdDogW1BBVENIIDA4LzU0XSBvcGVuc3NoLTUuOHAyLXNpZ3BpcGUKKwor LS0tCisgc3NoLWtleXNjYW4uYyB8IDMgKysrCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9u cygrKQorCitkaWZmIC0tZ2l0IGEvc3NoLWtleXNjYW4uYyBiL3NzaC1rZXlzY2FuLmMKK2luZGV4 IGRkYWY4ZGZiMS4uYzQ1NWVmNTMyIDEwMDY0NAorLS0tIGEvc3NoLWtleXNjYW4uYworKysrIGIv c3NoLWtleXNjYW4uYworQEAgLTc4Niw2ICs3ODYsOSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoq YXJndikKKyAJaWYgKG1heGZkID4gZmRsaW1fZ2V0KDApKQorIAkJZmRsaW1fc2V0KG1heGZkKTsK KyAJZmRjb24gPSB4Y2FsbG9jKG1heGZkLCBzaXplb2YoY29uKSk7CisrIAorKwlzaWduYWwoU0lH UElQRSwgU0lHX0lHTik7CisrCisgCXJlYWRfd2FpdCA9IHhjYWxsb2MobWF4ZmQsIHNpemVvZihz dHJ1Y3QgcG9sbGZkKSk7CisgCWZvciAoaiA9IDA7IGogPCBtYXhmZDsgaisrKQorIAkJcmVhZF93 YWl0W2pdLmZkID0gLTE7CistLSAKKzIuNTUuMAorCgpkaWZmIC0tZ2l0IGEvMDAwOS1vcGVuc3No LTUuMXAxLWFza3Bhc3MtcHJvZ3Jlc3MucGF0Y2ggYi8wMDA5LW9wZW5zc2gtNS4xcDEtYXNrcGFz cy1wcm9ncmVzcy5wYXRjaAppbmRleCA3YjM2NzRiLi5jOTZhN2Q0IDEwMDY0NAotLS0gYS8wMDA5 LW9wZW5zc2gtNS4xcDEtYXNrcGFzcy1wcm9ncmVzcy5wYXRjaAorKysgYi8wMDA5LW9wZW5zc2gt NS4xcDEtYXNrcGFzcy1wcm9ncmVzcy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNDMxNGQy ODhkYjJhODE0YWQ1OGU5MWRhMjFkMmE2OWU0OTgzZDNjMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKK0Zyb20gZmQ4YWQ3YTNhMmI1ZDQ3YWE5ODljNjE5Y2IxMmM3ZjY4MTg1M2Y5YiBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IERtaXRyeSBCZWx5YXZza2l5IDxiZWxkbWl0QGdtYWls LmNvbT4KIERhdGU6IFRodSwgMTUgTWF5IDIwMjUgMTM6NDM6MjggKzAyMDAKIFN1YmplY3Q6IFtQ QVRDSCAwOS81NF0gb3BlbnNzaC01LjFwMS1hc2twYXNzLXByb2dyZXNzCkBAIC05Miw1ICs5Miw1 IEBAIGluZGV4IGE2MmY5ODE1Mi4uY2I3MTUyZGM4IDEwMDY0NAogIAogIAkvKiBHcmFiIGZvY3Vz ICovCiAtLSAKLTIuNTMuMAorMi41NS4wCiAKCmRpZmYgLS1naXQgYS8wMDEwLW9wZW5zc2gtNC4z cDItYXNrcGFzcy1ncmFiLWluZm8ucGF0Y2ggYi8wMDEwLW9wZW5zc2gtNC4zcDItYXNrcGFzcy1n cmFiLWluZm8ucGF0Y2gKaW5kZXggNjEyMjNhZS4uOTY3Y2YzYyAxMDA2NDQKLS0tIGEvMDAxMC1v cGVuc3NoLTQuM3AyLWFza3Bhc3MtZ3JhYi1pbmZvLnBhdGNoCisrKyBiLzAwMTAtb3BlbnNzaC00 LjNwMi1hc2twYXNzLWdyYWItaW5mby5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZGI0Y2Ez MzZlNGJkZGZjNGM1Y2U2NTFmYmRmMWY0MDM0OGQ5M2I4ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKK0Zyb20gY2ZkYjA0NTZmZTgzYzBkZjJkYWNlZmE4Y2JlMzFjZGU5NmVjYTBjZiBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IERtaXRyeSBCZWx5YXZza2l5IDxiZWxkbWl0QGdtYWls LmNvbT4KIERhdGU6IFRodSwgMTUgTWF5IDIwMjUgMTM6NDM6MjggKzAyMDAKIFN1YmplY3Q6IFtQ QVRDSCAxMC81NF0gb3BlbnNzaC00LjNwMi1hc2twYXNzLWdyYWItaW5mbwpAQCAtMjgsNSArMjgs NSBAQCBpbmRleCBjYjcxNTJkYzguLmJiZTkzZDgzOCAxMDA2NDQKICAKICAJZ3RrX2RpYWxvZ19y dW4oR1RLX0RJQUxPRyhlcnIpKTsKIC0tIAotMi41My4wCisyLjU1LjAKIAoKZGlmZiAtLWdpdCBh LzAwMTEtb3BlbnNzaC04LjdwMS1yZWRoYXQucGF0Y2ggYi8wMDExLW9wZW5zc2gtOC43cDEtcmVk aGF0LnBhdGNoCmluZGV4IDVhYjI0ODUuLjM0NTE2MGYgMTAwNjQ0Ci0tLSBhLzAwMTEtb3BlbnNz aC04LjdwMS1yZWRoYXQucGF0Y2gKKysrIGIvMDAxMS1vcGVuc3NoLTguN3AxLXJlZGhhdC5wYXRj aApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZWM2Mzg1NmYyYzQyNzZkYTNhYTIyYzc4ZmVhY2ZlYmZi ZmI1OTRkYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNjJjZWYzN2ViZjExMmY0Mzg5 YTUyMGU3Mjc3ZmQ3Y2MzMGE3MDE5YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IERt aXRyeSBCZWx5YXZza2l5IDxiZWxkbWl0QGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMTUgTWF5IDIw MjUgMTM6NDM6MjggKzAyMDAKIFN1YmplY3Q6IFtQQVRDSCAxMS81NF0gb3BlbnNzaC04LjdwMS1y ZWRoYXQKQEAgLTc2LDEwICs3NiwxMCBAQCBpbmRleCAwZjRhM2E3MjQuLjYwODIwM2U0YiAxMDA2 NDQKICAjQWRkcmVzc0ZhbWlseSBhbnkKICAjTGlzdGVuQWRkcmVzcyAwLjAuMC4wCiBkaWZmIC0t Z2l0IGEvc3NoZF9jb25maWcuMCBiL3NzaGRfY29uZmlnLjAKLWluZGV4IDc3MGVjNzQyZS4uMWY3 MWMzN2MzIDEwMDY0NAoraW5kZXggOWJhZmQyNDNlLi5kYzY4NTU2OGEgMTAwNjQ0CiAtLS0gYS9z c2hkX2NvbmZpZy4wCiArKysgYi9zc2hkX2NvbmZpZy4wCi1AQCAtMTI0Nyw5ICsxMjQ3LDkgQEAg REVTQ1JJUFRJT04KK0BAIC0xMjU1LDkgKzEyNTUsOSBAQCBERVNDUklQVElPTgogIAogICAgICAg U3lzbG9nRmFjaWxpdHkKICAgICAgICAgICAgICAgR2l2ZXMgdGhlIGZhY2lsaXR5IGNvZGUgdGhh dCBpcyB1c2VkIHdoZW4gbG9nZ2luZyBtZXNzYWdlcyBmcm9tCkBAIC05MywxMCArOTMsMTAgQEAg aW5kZXggNzcwZWM3NDJlLi4xZjcxYzM3YzMgMTAwNjQ0CiAgICAgICBUQ1BLZWVwQWxpdmUKICAg ICAgICAgICAgICAgU3BlY2lmaWVzIHdoZXRoZXIgdGhlIHN5c3RlbSBzaG91bGQgc2VuZCBUQ1Ag a2VlcGFsaXZlIG1lc3NhZ2VzCiBkaWZmIC0tZ2l0IGEvc3NoZF9jb25maWcuNSBiL3NzaGRfY29u ZmlnLjUKLWluZGV4IDNmNWUyOTgxMi4uY2E0MjVhOGRhIDEwMDY0NAoraW5kZXggMzlhODY0ZGVl Li4zODk2ZDIxYjAgMTAwNjQ0CiAtLS0gYS9zc2hkX2NvbmZpZy41CiArKysgYi9zc2hkX2NvbmZp Zy41Ci1AQCAtMTk3MSw3ICsxOTcxLDcgQEAgQnkgZGVmYXVsdCBubyBzdWJzeXN0ZW1zIGFyZSBk ZWZpbmVkLgorQEAgLTE5NzksNyArMTk3OSw3IEBAIEJ5IGRlZmF1bHQgbm8gc3Vic3lzdGVtcyBh cmUgZGVmaW5lZC4KICAuSXQgQ20gU3lzbG9nRmFjaWxpdHkKICBHaXZlcyB0aGUgZmFjaWxpdHkg Y29kZSB0aGF0IGlzIHVzZWQgd2hlbiBsb2dnaW5nIG1lc3NhZ2VzIGZyb20KICAuWHIgc3NoZCA4 IC4KQEAgLTE0Myw1ICsxNDMsNSBAQCBpbmRleCAwMDAwMDAwMDAuLjFkNTkyZDEzZgogK0luY2x1 ZGUgL2V0Yy9jcnlwdG8tcG9saWNpZXMvYmFjay1lbmRzL29wZW5zc2hzZXJ2ZXIuY29uZmlnCiAr CiAtLSAKLTIuNTMuMAorMi41NS4wCiAKCmRpZmYgLS1naXQgYS8wMDEyLW9wZW5zc2gtNy44cDEt VXNlUEFNLXdhcm5pbmcucGF0Y2ggYi8wMDEyLW9wZW5zc2gtNy44cDEtVXNlUEFNLXdhcm5pbmcu cGF0Y2gKaW5kZXggODMxNTM1YS4uYThlMDcwNCAxMDA2NDQKLS0tIGEvMDAxMi1vcGVuc3NoLTcu OHAxLVVzZVBBTS13YXJuaW5nLnBhdGNoCisrKyBiLzAwMTItb3BlbnNzaC03LjhwMS1Vc2VQQU0t d2FybmluZy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gOTgwOTJjMWZhNWM1NGIzMmVkY2I3 Y2VmMThhNGZhYjYwNzhlZmJjMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZTBiNDNj NmJlOWE5NDQzN2MzMzIzOTQ1NTgxNWE3MGMyODdjYTVmNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKIEZyb206IERtaXRyeSBCZWx5YXZza2l5IDxiZWxkbWl0QGdtYWlsLmNvbT4KIERhdGU6IFRo dSwgMTUgTWF5IDIwMjUgMTM6NDM6MjggKzAyMDAKIFN1YmplY3Q6IFtQQVRDSCAxMi81NF0gb3Bl bnNzaC03LjhwMS1Vc2VQQU0td2FybmluZwpAQCAtMTAsMTAgKzEwLDEwIEBAIFN1YmplY3Q6IFtQ QVRDSCAxMi81NF0gb3BlbnNzaC03LjhwMS1Vc2VQQU0td2FybmluZwogIDIgZmlsZXMgY2hhbmdl ZCwgNiBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9zc2hkLXNlc3Npb24uYyBiL3NzaGQt c2Vzc2lvbi5jCi1pbmRleCAwMGQwMGUyOTMuLjY5NzZkNjg3MiAxMDA2NDQKK2luZGV4IGZlYTk0 ZGM2Yy4uOGM2NjUyMTUyIDEwMDY0NAogLS0tIGEvc3NoZC1zZXNzaW9uLmMKICsrKyBiL3NzaGQt c2Vzc2lvbi5jCi1AQCAtMTA3NSw2ICsxMDc1LDEwIEBAIG1haW4oaW50IGFjLCBjaGFyICoqYXYp CitAQCAtMTA3Niw2ICsxMDc2LDEwIEBAIG1haW4oaW50IGFjLCBjaGFyICoqYXYpCiAgCQkJICAg ICJlbmFibGVkIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMiKTsKICAJfQogIApAQCAtMzgsNSArMzgs NSBAQCBpbmRleCA2MDgyMDNlNGIuLjQ4YWY2MzIxYiAxMDA2NDQKICAKICAjQWxsb3dBZ2VudEZv cndhcmRpbmcgeWVzCiAtLSAKLTIuNTMuMAorMi41NS4wCiAKCmRpZmYgLS1naXQgYS8wMDEzLW9w ZW5zc2gtOS42cDEtZ3NzYXBpLWtleWV4LnBhdGNoIGIvMDAxMy1vcGVuc3NoLTkuNnAxLWdzc2Fw aS1rZXlleC5wYXRjaAppbmRleCBmMjEwNmE0Li40NTdmY2UzIDEwMDY0NAotLS0gYS8wMDEzLW9w ZW5zc2gtOS42cDEtZ3NzYXBpLWtleWV4LnBhdGNoCisrKyBiLzAwMTMtb3BlbnNzaC05LjZwMS1n c3NhcGkta2V5ZXgucGF0Y2gKQEAgLTEsOSArMSwxMCBAQAotRnJvbSAyMDgwODBlYzJjZWRkYjll NGM5MTdkNGU1N2I5YmM0NDUyZGIzMDQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBj NGQ3ZGExNzNhYzhiODRkZmVmOWQyMzEwZDYxNWMwMjQ5YmNkMzdhIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQogRnJvbTogRG1pdHJ5IEJlbHlhdnNraXkgPGJlbGRtaXRAZ21haWwuY29tPgogRGF0 ZTogVGh1LCAxNSBNYXkgMjAyNSAxMzo0MzoyOCArMDIwMAogU3ViamVjdDogW1BBVENIIDEzLzU0 XSBvcGVuc3NoLTkuNnAxLWdzc2FwaS1rZXlleAogCiAtLS0KKyAuZGVwZW5kICAgICAgICAgfCAg IDIgKwogIE1ha2VmaWxlLmluICAgICB8ICAgNyArLQogIGF1dGguYyAgICAgICAgICB8ICAgMyAr LQogIGF1dGgyLWdzcy5jICAgICB8ICA1MiArKystCkBAIC0xNiw3ICsxNyw3IEBAIFN1YmplY3Q6 IFtQQVRDSCAxMy81NF0gb3BlbnNzaC05LjZwMS1nc3NhcGkta2V5ZXgKICBnc3MtZ2Vuci5jICAg ICAgfCAzMTIgKysrKysrKysrKysrKysrKysrKystCiAgZ3NzLXNlcnYta3JiNS5jIHwgIDk3ICsr KysrKy0KICBnc3Mtc2Vydi5jICAgICAgfCAyMDAgKysrKysrKysrKysrLS0KLSBrZXgtbmFtZXMu YyAgICAgfCAgNjEgKysrKy0KKyBrZXgtbmFtZXMuYyAgICAgfCAgNjcgKysrKy0KICBrZXguYyAg ICAgICAgICAgfCAgMzUgKystCiAga2V4LmggICAgICAgICAgIHwgIDM0ICsrKwogIGtleGRoLmMg ICAgICAgICB8ICAxMCArCkBAIC0yOSwzMSArMzAsNDQgQEAgU3ViamVjdDogW1BBVENIIDEzLzU0 XSBvcGVuc3NoLTkuNnAxLWdzc2FwaS1rZXlleAogIG1vbml0b3Jfd3JhcC5oICB8ICAgNCArLQog IHJlYWRjb25mLmMgICAgICB8ICA3MCArKysrKwogIHJlYWRjb25mLmggICAgICB8ICAgNiArCi0g c2VydmNvbmYuYyAgICAgIHwgIDQ2ICsrKysKLSBzZXJ2Y29uZi5oICAgICAgfCAgIDMgKworIHNl cnZjb25mLmMgICAgICB8ICAyOCArKworIHNlcnZjb25mLmggICAgICB8ICAxMSArLQogIHNlc3Np b24uYyAgICAgICB8ICAxMCArLQogIHNzaC1nc3MuaCAgICAgICB8ICA2NCArKysrLQogIHNzaC4x ICAgICAgICAgICB8ICAgOCArCi0gc3NoLmMgICAgICAgICAgIHwgICA2ICstCisgc3NoLmMgICAg ICAgICAgIHwgICA3ICstCiAgc3NoX2NvbmZpZyAgICAgIHwgICAyICsKLSBzc2hfY29uZmlnLjUg ICAgfCAgNTggKysrKworIHNzaF9jb25maWcuNSAgICB8ICA2MSArKysrKwogIHNzaGNvbm5lY3Qy LmMgICB8IDE1NCArKysrKysrKysrLQogIHNzaGQtYXV0aC5jICAgICB8ICA1NSArKystCiAgc3No ZC1zZXNzaW9uLmMgIHwgICA5ICstCiAgc3NoZC5jICAgICAgICAgIHwgICAzICstCiAgc3NoZF9j b25maWcgICAgIHwgICAyICsKLSBzc2hkX2NvbmZpZy41ICAgfCAgNDAgKystCisgc3NoZF9jb25m aWcuNSAgIHwgIDQzICsrLQogIHNzaGtleS5jICAgICAgICB8ICA3MiArKysrLQogIHNzaGtleS5o ICAgICAgICB8ICAgMSArCi0gNDEgZmlsZXMgY2hhbmdlZCwgMzAwNCBpbnNlcnRpb25zKCspLCA3 OCBkZWxldGlvbnMoLSkKKyA0MiBmaWxlcyBjaGFuZ2VkLCAzMDA3IGluc2VydGlvbnMoKyksIDgw IGRlbGV0aW9ucygtKQogIGNyZWF0ZSBtb2RlIDEwMDY0NCBrZXhnc3NjLmMKICBjcmVhdGUgbW9k ZSAxMDA2NDQga2V4Z3Nzcy5jCiAKK2RpZmYgLS1naXQgYS8uZGVwZW5kIGIvLmRlcGVuZAoraW5k ZXggYjZiMWFkMjQyLi43ZTVmM2RjZDMgMTAwNjQ0CistLS0gYS8uZGVwZW5kCisrKysgYi8uZGVw ZW5kCitAQCAtNjcsNiArNjcsOCBAQCBrZXhjMjU1MTkubzogaW5jbHVkZXMuaCBjb25maWcuaCBk ZWZpbmVzLmggcGxhdGZvcm0uaCBvcGVuYnNkLWNvbXBhdC9vcGVuYnNkLWNvbQorIGtleGRoLm86 IGluY2x1ZGVzLmggY29uZmlnLmggZGVmaW5lcy5oIHBsYXRmb3JtLmggb3BlbmJzZC1jb21wYXQv b3BlbmJzZC1jb21wYXQuaCBvcGVuYnNkLWNvbXBhdC9iYXNlNjQuaCBvcGVuYnNkLWNvbXBhdC9z aWdhY3QuaCBvcGVuYnNkLWNvbXBhdC9yZWFkcGFzc3BocmFzZS5oIG9wZW5ic2QtY29tcGF0L3Zp cy5oIG9wZW5ic2QtY29tcGF0L2dldHJyc2V0YnluYW1lLmggb3BlbmJzZC1jb21wYXQvc2hhMS5o IG9wZW5ic2QtY29tcGF0L2JzZC1zaGEyLmggb3BlbmJzZC1jb21wYXQvbWQ1Lmggb3BlbmJzZC1j b21wYXQvYmxmLmggb3BlbmJzZC1jb21wYXQvZm5tYXRjaC5oIG9wZW5ic2QtY29tcGF0L2dldG9w dC5oIG9wZW5ic2QtY29tcGF0L2JzZC1zaWduYWwuaCBvcGVuYnNkLWNvbXBhdC9ic2QtbWlzYy5o IG9wZW5ic2QtY29tcGF0L2JzZC1zZXRyZXNfaWQuaCBvcGVuYnNkLWNvbXBhdC9ic2Qtc3RhdHZm cy5oIG9wZW5ic2QtY29tcGF0L2JzZC13YWl0cGlkLmggb3BlbmJzZC1jb21wYXQvYnNkLXBvbGwu aCBvcGVuYnNkLWNvbXBhdC9mYWtlLXJmYzI1NTMuaCBvcGVuYnNkLWNvbXBhdC9ic2QtY3lnd2lu X3V0aWwuaCBvcGVuYnNkLWNvbXBhdC9wb3J0LWFpeC5oIG9wZW5ic2QtY29tcGF0L3BvcnQtaXJp eC5oIG9wZW5ic2QtY29tcGF0L3BvcnQtbGludXguaCBvcGVuYnNkLWNvbXBhdC9wb3J0LXNvbGFy aXMuaCBvcGVuYnNkLWNvbXBhdC9wb3J0LW5ldC5oIG9wZW5ic2QtY29tcGF0L3BvcnQtdXcuaCBv cGVuYnNkLWNvbXBhdC9ic2QtbmV4dHN0ZXAuaCBlbnRyb3B5LmgKKyBrZXhlY2RoLm86IGluY2x1 ZGVzLmggY29uZmlnLmggZGVmaW5lcy5oIHBsYXRmb3JtLmggb3BlbmJzZC1jb21wYXQvb3BlbmJz ZC1jb21wYXQuaCBvcGVuYnNkLWNvbXBhdC9iYXNlNjQuaCBvcGVuYnNkLWNvbXBhdC9zaWdhY3Qu aCBvcGVuYnNkLWNvbXBhdC9yZWFkcGFzc3BocmFzZS5oIG9wZW5ic2QtY29tcGF0L3Zpcy5oIG9w ZW5ic2QtY29tcGF0L2dldHJyc2V0YnluYW1lLmggb3BlbmJzZC1jb21wYXQvc2hhMS5oIG9wZW5i c2QtY29tcGF0L2JzZC1zaGEyLmggb3BlbmJzZC1jb21wYXQvbWQ1Lmggb3BlbmJzZC1jb21wYXQv YmxmLmggb3BlbmJzZC1jb21wYXQvZm5tYXRjaC5oIG9wZW5ic2QtY29tcGF0L2dldG9wdC5oIG9w ZW5ic2QtY29tcGF0L2JzZC1zaWduYWwuaCBvcGVuYnNkLWNvbXBhdC9ic2QtbWlzYy5oIG9wZW5i c2QtY29tcGF0L2JzZC1zZXRyZXNfaWQuaCBvcGVuYnNkLWNvbXBhdC9ic2Qtc3RhdHZmcy5oIG9w ZW5ic2QtY29tcGF0L2JzZC13YWl0cGlkLmggb3BlbmJzZC1jb21wYXQvYnNkLXBvbGwuaCBvcGVu YnNkLWNvbXBhdC9mYWtlLXJmYzI1NTMuaCBvcGVuYnNkLWNvbXBhdC9ic2QtY3lnd2luX3V0aWwu aCBvcGVuYnNkLWNvbXBhdC9wb3J0LWFpeC5oIG9wZW5ic2QtY29tcGF0L3BvcnQtaXJpeC5oIG9w ZW5ic2QtY29tcGF0L3BvcnQtbGludXguaCBvcGVuYnNkLWNvbXBhdC9wb3J0LXNvbGFyaXMuaCBv cGVuYnNkLWNvbXBhdC9wb3J0LW5ldC5oIG9wZW5ic2QtY29tcGF0L3BvcnQtdXcuaCBvcGVuYnNk LWNvbXBhdC9ic2QtbmV4dHN0ZXAuaCBlbnRyb3B5Lmggc3NoZXJyLmgKKyBrZXhnZW4ubzogaW5j bHVkZXMuaCBjb25maWcuaCBkZWZpbmVzLmggcGxhdGZvcm0uaCBvcGVuYnNkLWNvbXBhdC9vcGVu YnNkLWNvbXBhdC5oIG9wZW5ic2QtY29tcGF0L2Jhc2U2NC5oIG9wZW5ic2QtY29tcGF0L3NpZ2Fj dC5oIG9wZW5ic2QtY29tcGF0L3JlYWRwYXNzcGhyYXNlLmggb3BlbmJzZC1jb21wYXQvdmlzLmgg b3BlbmJzZC1jb21wYXQvZ2V0cnJzZXRieW5hbWUuaCBvcGVuYnNkLWNvbXBhdC9zaGExLmggb3Bl bmJzZC1jb21wYXQvYnNkLXNoYTIuaCBvcGVuYnNkLWNvbXBhdC9tZDUuaCBvcGVuYnNkLWNvbXBh dC9ibGYuaCBvcGVuYnNkLWNvbXBhdC9mbm1hdGNoLmggb3BlbmJzZC1jb21wYXQvZ2V0b3B0Lmgg b3BlbmJzZC1jb21wYXQvYnNkLXNpZ25hbC5oIG9wZW5ic2QtY29tcGF0L2JzZC1taXNjLmggb3Bl bmJzZC1jb21wYXQvYnNkLXNldHJlc19pZC5oIG9wZW5ic2QtY29tcGF0L2JzZC1zdGF0dmZzLmgg b3BlbmJzZC1jb21wYXQvYnNkLXdhaXRwaWQuaCBvcGVuYnNkLWNvbXBhdC9ic2QtcG9sbC5oIG9w ZW5ic2QtY29tcGF0L2Zha2UtcmZjMjU1My5oIG9wZW5ic2QtY29tcGF0L2JzZC1jeWd3aW5fdXRp bC5oIG9wZW5ic2QtY29tcGF0L3BvcnQtYWl4Lmggb3BlbmJzZC1jb21wYXQvcG9ydC1pcml4Lmgg b3BlbmJzZC1jb21wYXQvcG9ydC1saW51eC5oIG9wZW5ic2QtY29tcGF0L3BvcnQtc29sYXJpcy5o IG9wZW5ic2QtY29tcGF0L3BvcnQtbmV0Lmggb3BlbmJzZC1jb21wYXQvcG9ydC11dy5oIG9wZW5i c2QtY29tcGF0L2JzZC1uZXh0c3RlcC5oIGVudHJvcHkuaCBzc2hrZXkuaCBrZXguaCBtYWMuaCBj cnlwdG9fYXBpLmggbG9nLmggc3NoZXJyLmggcGFja2V0LmggZGlzcGF0Y2guaCBzc2gyLmggc3No YnVmLmggZGlnZXN0LmgKKytrZXhnc3NjLm86IGluY2x1ZGVzLmggY29uZmlnLmggZGVmaW5lcy5o IHBsYXRmb3JtLmggb3BlbmJzZC1jb21wYXQvb3BlbmJzZC1jb21wYXQuaCBvcGVuYnNkLWNvbXBh dC9iYXNlNjQuaCBvcGVuYnNkLWNvbXBhdC9zaWdhY3QuaCBvcGVuYnNkLWNvbXBhdC9yZWFkcGFz c3BocmFzZS5oIG9wZW5ic2QtY29tcGF0L3Zpcy5oIG9wZW5ic2QtY29tcGF0L2dldHJyc2V0Ynlu YW1lLmggb3BlbmJzZC1jb21wYXQvc2hhMS5oIG9wZW5ic2QtY29tcGF0L2JzZC1zaGEyLmggb3Bl bmJzZC1jb21wYXQvbWQ1Lmggb3BlbmJzZC1jb21wYXQvYmxmLmggb3BlbmJzZC1jb21wYXQvZm5t YXRjaC5oIG9wZW5ic2QtY29tcGF0L2dldG9wdC5oIG9wZW5ic2QtY29tcGF0L2JzZC1zaWduYWwu aCBvcGVuYnNkLWNvbXBhdC9ic2QtbWlzYy5oIG9wZW5ic2QtY29tcGF0L2JzZC1zZXRyZXNfaWQu aCBvcGVuYnNkLWNvbXBhdC9ic2Qtc3RhdHZmcy5oIG9wZW5ic2QtY29tcGF0L2JzZC13YWl0cGlk Lmggb3BlbmJzZC1jb21wYXQvYnNkLXBvbGwuaCBvcGVuYnNkLWNvbXBhdC9mYWtlLXJmYzI1NTMu aCBvcGVuYnNkLWNvbXBhdC9ic2QtY3lnd2luX3V0aWwuaCBvcGVuYnNkLWNvbXBhdC9wb3J0LWFp eC5oIG9wZW5ic2QtY29tcGF0L3BvcnQtaXJpeC5oIG9wZW5ic2QtY29tcGF0L3BvcnQtbGludXgu aCBvcGVuYnNkLWNvbXBhdC9wb3J0LXNvbGFyaXMuaCBvcGVuYnNkLWNvbXBhdC9wb3J0LW5ldC5o IG9wZW5ic2QtY29tcGF0L3BvcnQtdXcuaCBvcGVuYnNkLWNvbXBhdC9ic2QtbmV4dHN0ZXAuaCBl bnRyb3B5LmgKKytrZXhnc3NzLm86IGluY2x1ZGVzLmggY29uZmlnLmggZGVmaW5lcy5oIHBsYXRm b3JtLmggb3BlbmJzZC1jb21wYXQvb3BlbmJzZC1jb21wYXQuaCBvcGVuYnNkLWNvbXBhdC9iYXNl NjQuaCBvcGVuYnNkLWNvbXBhdC9zaWdhY3QuaCBvcGVuYnNkLWNvbXBhdC9yZWFkcGFzc3BocmFz ZS5oIG9wZW5ic2QtY29tcGF0L3Zpcy5oIG9wZW5ic2QtY29tcGF0L2dldHJyc2V0YnluYW1lLmgg b3BlbmJzZC1jb21wYXQvc2hhMS5oIG9wZW5ic2QtY29tcGF0L2JzZC1zaGEyLmggb3BlbmJzZC1j b21wYXQvbWQ1Lmggb3BlbmJzZC1jb21wYXQvYmxmLmggb3BlbmJzZC1jb21wYXQvZm5tYXRjaC5o IG9wZW5ic2QtY29tcGF0L2dldG9wdC5oIG9wZW5ic2QtY29tcGF0L2JzZC1zaWduYWwuaCBvcGVu YnNkLWNvbXBhdC9ic2QtbWlzYy5oIG9wZW5ic2QtY29tcGF0L2JzZC1zZXRyZXNfaWQuaCBvcGVu YnNkLWNvbXBhdC9ic2Qtc3RhdHZmcy5oIG9wZW5ic2QtY29tcGF0L2JzZC13YWl0cGlkLmggb3Bl bmJzZC1jb21wYXQvYnNkLXBvbGwuaCBvcGVuYnNkLWNvbXBhdC9mYWtlLXJmYzI1NTMuaCBvcGVu YnNkLWNvbXBhdC9ic2QtY3lnd2luX3V0aWwuaCBvcGVuYnNkLWNvbXBhdC9wb3J0LWFpeC5oIG9w ZW5ic2QtY29tcGF0L3BvcnQtaXJpeC5oIG9wZW5ic2QtY29tcGF0L3BvcnQtbGludXguaCBvcGVu YnNkLWNvbXBhdC9wb3J0LXNvbGFyaXMuaCBvcGVuYnNkLWNvbXBhdC9wb3J0LW5ldC5oIG9wZW5i c2QtY29tcGF0L3BvcnQtdXcuaCBvcGVuYnNkLWNvbXBhdC9ic2QtbmV4dHN0ZXAuaCBlbnRyb3B5 LmgKKyBrZXhnZXgubzogaW5jbHVkZXMuaCBjb25maWcuaCBkZWZpbmVzLmggcGxhdGZvcm0uaCBv cGVuYnNkLWNvbXBhdC9vcGVuYnNkLWNvbXBhdC5oIG9wZW5ic2QtY29tcGF0L2Jhc2U2NC5oIG9w ZW5ic2QtY29tcGF0L3NpZ2FjdC5oIG9wZW5ic2QtY29tcGF0L3JlYWRwYXNzcGhyYXNlLmggb3Bl bmJzZC1jb21wYXQvdmlzLmggb3BlbmJzZC1jb21wYXQvZ2V0cnJzZXRieW5hbWUuaCBvcGVuYnNk LWNvbXBhdC9zaGExLmggb3BlbmJzZC1jb21wYXQvYnNkLXNoYTIuaCBvcGVuYnNkLWNvbXBhdC9t ZDUuaCBvcGVuYnNkLWNvbXBhdC9ibGYuaCBvcGVuYnNkLWNvbXBhdC9mbm1hdGNoLmggb3BlbmJz ZC1jb21wYXQvZ2V0b3B0Lmggb3BlbmJzZC1jb21wYXQvYnNkLXNpZ25hbC5oIG9wZW5ic2QtY29t cGF0L2JzZC1taXNjLmggb3BlbmJzZC1jb21wYXQvYnNkLXNldHJlc19pZC5oIG9wZW5ic2QtY29t cGF0L2JzZC1zdGF0dmZzLmggb3BlbmJzZC1jb21wYXQvYnNkLXdhaXRwaWQuaCBvcGVuYnNkLWNv bXBhdC9ic2QtcG9sbC5oIG9wZW5ic2QtY29tcGF0L2Zha2UtcmZjMjU1My5oIG9wZW5ic2QtY29t cGF0L2JzZC1jeWd3aW5fdXRpbC5oIG9wZW5ic2QtY29tcGF0L3BvcnQtYWl4Lmggb3BlbmJzZC1j b21wYXQvcG9ydC1pcml4Lmggb3BlbmJzZC1jb21wYXQvcG9ydC1saW51eC5oIG9wZW5ic2QtY29t cGF0L3BvcnQtc29sYXJpcy5oIG9wZW5ic2QtY29tcGF0L3BvcnQtbmV0Lmggb3BlbmJzZC1jb21w YXQvcG9ydC11dy5oIG9wZW5ic2QtY29tcGF0L2JzZC1uZXh0c3RlcC5oIGVudHJvcHkuaAorIGtl eGdleGMubzogaW5jbHVkZXMuaCBjb25maWcuaCBkZWZpbmVzLmggcGxhdGZvcm0uaCBvcGVuYnNk LWNvbXBhdC9vcGVuYnNkLWNvbXBhdC5oIG9wZW5ic2QtY29tcGF0L2Jhc2U2NC5oIG9wZW5ic2Qt Y29tcGF0L3NpZ2FjdC5oIG9wZW5ic2QtY29tcGF0L3JlYWRwYXNzcGhyYXNlLmggb3BlbmJzZC1j b21wYXQvdmlzLmggb3BlbmJzZC1jb21wYXQvZ2V0cnJzZXRieW5hbWUuaCBvcGVuYnNkLWNvbXBh dC9zaGExLmggb3BlbmJzZC1jb21wYXQvYnNkLXNoYTIuaCBvcGVuYnNkLWNvbXBhdC9tZDUuaCBv cGVuYnNkLWNvbXBhdC9ibGYuaCBvcGVuYnNkLWNvbXBhdC9mbm1hdGNoLmggb3BlbmJzZC1jb21w YXQvZ2V0b3B0Lmggb3BlbmJzZC1jb21wYXQvYnNkLXNpZ25hbC5oIG9wZW5ic2QtY29tcGF0L2Jz ZC1taXNjLmggb3BlbmJzZC1jb21wYXQvYnNkLXNldHJlc19pZC5oIG9wZW5ic2QtY29tcGF0L2Jz ZC1zdGF0dmZzLmggb3BlbmJzZC1jb21wYXQvYnNkLXdhaXRwaWQuaCBvcGVuYnNkLWNvbXBhdC9i c2QtcG9sbC5oIG9wZW5ic2QtY29tcGF0L2Zha2UtcmZjMjU1My5oIG9wZW5ic2QtY29tcGF0L2Jz ZC1jeWd3aW5fdXRpbC5oIG9wZW5ic2QtY29tcGF0L3BvcnQtYWl4Lmggb3BlbmJzZC1jb21wYXQv cG9ydC1pcml4Lmggb3BlbmJzZC1jb21wYXQvcG9ydC1saW51eC5oIG9wZW5ic2QtY29tcGF0L3Bv cnQtc29sYXJpcy5oIG9wZW5ic2QtY29tcGF0L3BvcnQtbmV0Lmggb3BlbmJzZC1jb21wYXQvcG9y dC11dy5oIG9wZW5ic2QtY29tcGF0L2JzZC1uZXh0c3RlcC5oIGVudHJvcHkuaAorIGtleGdleHMu bzogaW5jbHVkZXMuaCBjb25maWcuaCBkZWZpbmVzLmggcGxhdGZvcm0uaCBvcGVuYnNkLWNvbXBh dC9vcGVuYnNkLWNvbXBhdC5oIG9wZW5ic2QtY29tcGF0L2Jhc2U2NC5oIG9wZW5ic2QtY29tcGF0 L3NpZ2FjdC5oIG9wZW5ic2QtY29tcGF0L3JlYWRwYXNzcGhyYXNlLmggb3BlbmJzZC1jb21wYXQv dmlzLmggb3BlbmJzZC1jb21wYXQvZ2V0cnJzZXRieW5hbWUuaCBvcGVuYnNkLWNvbXBhdC9zaGEx Lmggb3BlbmJzZC1jb21wYXQvYnNkLXNoYTIuaCBvcGVuYnNkLWNvbXBhdC9tZDUuaCBvcGVuYnNk LWNvbXBhdC9ibGYuaCBvcGVuYnNkLWNvbXBhdC9mbm1hdGNoLmggb3BlbmJzZC1jb21wYXQvZ2V0 b3B0Lmggb3BlbmJzZC1jb21wYXQvYnNkLXNpZ25hbC5oIG9wZW5ic2QtY29tcGF0L2JzZC1taXNj Lmggb3BlbmJzZC1jb21wYXQvYnNkLXNldHJlc19pZC5oIG9wZW5ic2QtY29tcGF0L2JzZC1zdGF0 dmZzLmggb3BlbmJzZC1jb21wYXQvYnNkLXdhaXRwaWQuaCBvcGVuYnNkLWNvbXBhdC9ic2QtcG9s bC5oIG9wZW5ic2QtY29tcGF0L2Zha2UtcmZjMjU1My5oIG9wZW5ic2QtY29tcGF0L2JzZC1jeWd3 aW5fdXRpbC5oIG9wZW5ic2QtY29tcGF0L3BvcnQtYWl4Lmggb3BlbmJzZC1jb21wYXQvcG9ydC1p cml4Lmggb3BlbmJzZC1jb21wYXQvcG9ydC1saW51eC5oIG9wZW5ic2QtY29tcGF0L3BvcnQtc29s YXJpcy5oIG9wZW5ic2QtY29tcGF0L3BvcnQtbmV0Lmggb3BlbmJzZC1jb21wYXQvcG9ydC11dy5o IG9wZW5ic2QtY29tcGF0L2JzZC1uZXh0c3RlcC5oIGVudHJvcHkuaAogZGlmZiAtLWdpdCBhL01h a2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IDQyYjQ1ZDMzZC4uYTEyZjZhZDFkIDEwMDY0 NAoraW5kZXggYzkzMjM3M2ZjLi4xMDYzMDYwMjQgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZS5pbgog KysrIGIvTWFrZWZpbGUuaW4KLUBAIC0xMDgsNiArMTA4LDcgQEAgTElCU1NIX09CSlM9JHtMSUJP UEVOU1NIX09CSlN9IFwKK0BAIC0xMDksNiArMTA5LDcgQEAgTElCU1NIX09CSlM9JHtMSUJPUEVO U1NIX09CSlN9IFwKICAJa2V4Lm8ga2V4LW5hbWVzLm8ga2V4ZGgubyBrZXhnZXgubyBrZXhlY2Ro Lm8ga2V4YzI1NTE5Lm8gXAogIAlrZXhnZXhjLm8ga2V4Z2V4cy5vIFwKICAJa2V4c250cnVwNzYx eDI1NTE5Lm8ga2V4bWxrZW03Njh4MjU1MTkubyBzbnRydXA3NjEubyBrZXhnZW4ubyBcCkBAIC02 MSw3ICs3NSw3IEBAIGluZGV4IDQyYjQ1ZDMzZC4uYTEyZjZhZDFkIDEwMDY0NAogIAlzZnRwLXJl YWxwYXRoLm8gcGxhdGZvcm0tcGxlZGdlLm8gcGxhdGZvcm0tdHJhY2luZy5vIHBsYXRmb3JtLW1p c2MubyBcCiAgCXNzaGJ1Zi1pby5vIG1pc2MtYWdlbnQubyBzc2hlcnItbGliY3J5cHRvLm8KICAK LUBAIC0xMzEsNyArMTMyLDcgQEAgU1NIRF9TRVNTSU9OX09CSlM9c3NoZC1zZXNzaW9uLm8gYXV0 aC1yaG9zdHMubyBhdXRoLXBhc3N3ZC5vIFwKK0BAIC0xMzIsNyArMTMzLDcgQEAgU1NIRF9TRVNT SU9OX09CSlM9c3NoZC1zZXNzaW9uLm8gYXV0aC1yaG9zdHMubyBhdXRoLXBhc3N3ZC5vIFwKICAJ YXV0aDItY2hhbGwubyBncm91cGFjY2Vzcy5vIFwKICAJYXV0aC1ic2RhdXRoLm8gYXV0aDItaG9z dGJhc2VkLm8gYXV0aDIta2JkaW50Lm8gXAogIAlhdXRoMi1ub25lLm8gYXV0aDItcGFzc3dkLm8g YXV0aDItcHVia2V5Lm8gYXV0aDItcHVia2V5ZmlsZS5vIFwKQEAgLTcwLDcgKzg0LDcgQEAgaW5k ZXggNDJiNDVkMzNkLi5hMTJmNmFkMWQgMTAwNjQ0CiAgCWF1dGgyLWdzcy5vIGdzcy1zZXJ2Lm8g Z3NzLXNlcnYta3JiNS5vIFwKICAJbG9naW5yZWMubyBhdXRoLXBhbS5vIGF1dGgtc2hhZG93Lm8g YXV0aC1zaWEubyBcCiAgCXNmdHAtc2VydmVyLm8gc2Z0cC1jb21tb24ubyBcCi1AQCAtMTQzLDcg KzE0NCw3IEBAIFNTSERfQVVUSF9PQkpTPXNzaGQtYXV0aC5vIFwKK0BAIC0xNDQsNyArMTQ1LDcg QEAgU1NIRF9BVVRIX09CSlM9c3NoZC1hdXRoLm8gXAogIAlzZXJ2ZXJsb29wLm8gYXV0aC5vIGF1 dGgyLm8gYXV0aC1vcHRpb25zLm8gc2Vzc2lvbi5vIGF1dGgyLWNoYWxsLm8gXAogIAlncm91cGFj Y2Vzcy5vIGF1dGgtYnNkYXV0aC5vIGF1dGgyLWhvc3RiYXNlZC5vIGF1dGgyLWtiZGludC5vIFwK ICAJYXV0aDItbm9uZS5vIGF1dGgyLXBhc3N3ZC5vIGF1dGgyLXB1YmtleS5vIGF1dGgyLXB1Ymtl eWZpbGUubyBcCkBAIC03OSw3ICs5Myw3IEBAIGluZGV4IDQyYjQ1ZDMzZC4uYTEyZjZhZDFkIDEw MDY0NAogIAltb25pdG9yX3dyYXAubyBhdXRoLWtyYjUubyBcCiAgCWF1ZGl0Lm8gYXVkaXQtYnNt Lm8gYXVkaXQtbGludXgubyBwbGF0Zm9ybS5vIFwKICAJbG9naW5yZWMubyBhdXRoLXBhbS5vIGF1 dGgtc2hhZG93Lm8gYXV0aC1zaWEubyBcCi1AQCAtNTU1LDcgKzU1Niw3IEBAIHJlZ3Jlc3MtcHJl cDoKK0BAIC01NjYsNyArNTY3LDcgQEAgcmVncmVzcy1wcmVwOgogIAkgICAgbG4gLXMgYGNkICQo c3JjZGlyKSAmJiBwd2RgL3JlZ3Jlc3MvTWFrZWZpbGUgYHB3ZGAvcmVncmVzcy9NYWtlZmlsZQog IAogIFJFR1JFU1NMSUJTPWxpYnNzaC5hICQoTElCQ09NUEFUKQpAQCAtMTAzLDcgKzExNyw3IEBA IGluZGV4IGEwMjE3YTgxMS4uMTQyYWM1YWZkIDEwMDY0NAogIAkJYnJlYWs7CiAgCWNhc2UgUEVS TUlUX0ZPUkNFRF9PTkxZOgogZGlmZiAtLWdpdCBhL2F1dGgyLWdzcy5jIGIvYXV0aDItZ3NzLmMK LWluZGV4IGIzODBkYzExNy4uOTBmMDk5ZTg1IDEwMDY0NAoraW5kZXggZGZlZTU2MTNlLi5iYjlj ODBiZDQgMTAwNjQ0CiAtLS0gYS9hdXRoMi1nc3MuYwogKysrIGIvYXV0aDItZ3NzLmMKIEBAIC01 MSw2ICs1MSw3IEBACkBAIC0xNjMsMTYgKzE3NywxNiBAQCBpbmRleCBiMzgwZGMxMTcuLjkwZjA5 OWU4NSAxMDA2NDQKICAvKgogICAqIFdlIG9ubHkgc3VwcG9ydCB0aG9zZSBtZWNoYW5pc21zIHRo YXQgd2Uga25vdyBhYm91dCAoaWUgb25lcyB0aGF0IHdlIGtub3cKICAgKiBob3cgdG8gY2hlY2sg bG9jYWwgdXNlciBrdXNlcm9rIGFuZCB0aGUgbGlrZSkKLUBAIC0yNjcsNyArMzEwLDcgQEAgaW5w dXRfZ3NzYXBpX2V4Y2hhbmdlX2NvbXBsZXRlKGludCB0eXBlLCB1aW50MzJfdCBwbGVuLCBzdHJ1 Y3Qgc3NoICpzc2gpCitAQCAtMjYzLDcgKzMwNiw3IEBAIGlucHV0X2dzc2FwaV9leGNoYW5nZV9j b21wbGV0ZShpbnQgdHlwZSwgdWludDMyX3QgcGxlbiwgc3RydWN0IHNzaCAqc3NoKQogIAlpZiAo KHIgPSBzc2hwa3RfZ2V0X2VuZChzc2gpKSAhPSAwKQogIAkJZmF0YWxfZnIociwgInBhcnNlIHBh Y2tldCIpOwogIAogLQlhdXRoZW50aWNhdGVkID0gbW1fc3NoX2dzc2FwaV91c2Vyb2soYXV0aGN0 eHQtPnVzZXIpOwogKyAJYXV0aGVudGljYXRlZCA9IG1tX3NzaF9nc3NhcGlfdXNlcm9rKGF1dGhj dHh0LT51c2VyLCBhdXRoY3R4dC0+cHcsIDEpOworIAlpZiAoIWF1dGhlbnRpY2F0ZWQpCisgCQlh dXRoX2ZhaWx1cmVfZGVsYXkoYXV0aGN0eHQsIHRzdGFydCk7CiAgCi0gCWF1dGhjdHh0LT5wb3N0 cG9uZWQgPSAwOwotIAlzc2hfZGlzcGF0Y2hfc2V0KHNzaCwgU1NIMl9NU0dfVVNFUkFVVEhfR1NT QVBJX1RPS0VOLCBOVUxMKTsKLUBAIC0zMTUsNyArMzU4LDcgQEAgaW5wdXRfZ3NzYXBpX21pYyhp bnQgdHlwZSwgdWludDMyX3QgcGxlbiwgc3RydWN0IHNzaCAqc3NoKQorQEAgLTMxNCw3ICszNTcs NyBAQCBpbnB1dF9nc3NhcGlfbWljKGludCB0eXBlLCB1aW50MzJfdCBwbGVuLCBzdHJ1Y3Qgc3No ICpzc2gpCiAgCWdzc2J1Zi5sZW5ndGggPSBzc2hidWZfbGVuKGIpOwogIAogIAlpZiAoIUdTU19F UlJPUihtbV9zc2hfZ3NzYXBpX2NoZWNrbWljKGdzc2N0eHQsICZnc3NidWYsICZtaWMpKSkKQEAg LTE4MSw3ICsxOTUsNyBAQCBpbmRleCBiMzgwZGMxMTcuLjkwZjA5OWU4NSAxMDA2NDQKICAJZWxz ZQogIAkJbG9naXQoIkdTU0FQSSBNSUMgY2hlY2sgZmFpbGVkIik7CiAgCi1AQCAtMzMzLDYgKzM3 NiwxMSBAQCBpbnB1dF9nc3NhcGlfbWljKGludCB0eXBlLCB1aW50MzJfdCBwbGVuLCBzdHJ1Y3Qg c3NoICpzc2gpCitAQCAtMzM1LDYgKzM3OCwxMSBAQCBpbnB1dF9nc3NhcGlfbWljKGludCB0eXBl LCB1aW50MzJfdCBwbGVuLCBzdHJ1Y3Qgc3NoICpzc2gpCiAgCXJldHVybiAwOwogIH0KICAKQEAg LTIxOCw3ICsyMzIsNyBAQCBpbmRleCA5OTYzN2E4OWIuLmEwNTkwOGNmMyAxMDA2NDQKICAjZW5k aWYKICAJJm1ldGhvZGNmZ19wYXNzd2QsCiBkaWZmIC0tZ2l0IGEvYXV0aDIuYyBiL2F1dGgyLmMK LWluZGV4IGJmZDQyNWVhYi4uM2MzYmRiNzc2IDEwMDY0NAoraW5kZXggNDk3ZmE4ZWQyLi5mMGYz OTcwN2YgMTAwNjQ0CiAtLS0gYS9hdXRoMi5jCiArKysgYi9hdXRoMi5jCiBAQCAtNzEsNiArNzEs NyBAQCBleHRlcm4gQXV0aG1ldGhvZCBtZXRob2RfcGFzc3dkOwpAQCAtMzU3LDcgKzM3MSw3IEBA IGluZGV4IDI2ZDYyODU1YS4uMGNhZGM5ZjE4IDEwMDY0NAogIGludAkJIGdldF9wZWVyX3BvcnQo aW50KTsKICBjaGFyCQkqZ2V0X2xvY2FsX2lwYWRkcihpbnQpOwogZGlmZiAtLWdpdCBhL2NsaWVu dGxvb3AuYyBiL2NsaWVudGxvb3AuYwotaW5kZXggNmEwZTdiNmI4Li5hYjVjNGQ0YWQgMTAwNjQ0 CitpbmRleCA0OTk1MGNlY2MuLmYwNzZkMWQ1NiAxMDA2NDQKIC0tLSBhL2NsaWVudGxvb3AuYwog KysrIGIvY2xpZW50bG9vcC5jCiBAQCAtMTAxLDYgKzEwMSwxMCBAQApAQCAtMzcxLDcgKzM4NSw3 IEBAIGluZGV4IDZhMGU3YjZiOC4uYWI1YzRkNGFkIDEwMDY0NAogIC8qIFBlcm1pdHRlZCBSU0Eg c2lnbmF0dXJlIGFsZ29yaXRobXMgZm9yIFVwZGF0ZUhvc3RrZXlzIHByb29mcyAqLwogICNkZWZp bmUgSE9TVEtFWV9QUk9PRl9SU0FfQUxHUwkicnNhLXNoYTItNTEyLHJzYS1zaGEyLTI1NiIKICAK LUBAIC0xNjExLDYgKzE2MTUsMTQgQEAgY2xpZW50X2xvb3Aoc3RydWN0IHNzaCAqc3NoLCBpbnQg aGF2ZV9wdHksIGludCBlc2NhcGVfY2hhcl9hcmcsCitAQCAtMTYxNyw2ICsxNjIxLDE0IEBAIGNs aWVudF9sb29wKHN0cnVjdCBzc2ggKnNzaCwgaW50IGhhdmVfcHR5LCBpbnQgZXNjYXBlX2NoYXJf YXJnLAogIAkJLyogRG8gY2hhbm5lbCBvcGVyYXRpb25zLiAqLwogIAkJY2hhbm5lbF9hZnRlcl9w b2xsKHNzaCwgcGZkLCBucGZkX2FjdGl2ZSk7CiAgCkBAIC0zODcsNyArNDAxLDcgQEAgaW5kZXgg NmEwZTdiNmI4Li5hYjVjNGQ0YWQgMTAwNjQ0CiAgCQlpZiAoY29ubl9pbl9yZWFkeSkKICAJCQlj bGllbnRfcHJvY2Vzc19uZXRfaW5wdXQoc3NoKTsKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMg Yi9jb25maWd1cmUuYWMKLWluZGV4IDhmODI3NmM3OC4uNzU1NzZiNDVkIDEwMDY0NAoraW5kZXgg ZDdlOTExZTgxLi4zMjFhZGJhYjEgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2Nv bmZpZ3VyZS5hYwogQEAgLTg0NCw2ICs4NDQsMzAgQEAgaW50IG1haW4odm9pZCkgeyBpZiAoTlNW ZXJzaW9uT2ZSdW5UaW1lTGlicmFyeSgiU3lzdGVtIikgPj0gKDYwIDw8IDE2KSkKQEAgLTEyNTYs NyArMTI3MCw3IEBAIGluZGV4IGY5YWUzMDNiNS4uOGI0ZmE5Y2ZlIDEwMDY0NAogIAogIC8qIFBy aXZpbGVnZWQgKi8KIGRpZmYgLS1naXQgYS9rZXgtbmFtZXMuYyBiL2tleC1uYW1lcy5jCi1pbmRl eCA3NTFmMDZjZWEuLjc2OWEzNjgxMCAxMDA2NDQKK2luZGV4IDc1MWYwNmNlYS4uM2JjMzgxMzBi IDEwMDY0NAogLS0tIGEva2V4LW5hbWVzLmMKICsrKyBiL2tleC1uYW1lcy5jCiBAQCAtMzYsNiAr MzYsNyBAQApAQCAtMTM0Niw3ICsxMzYwLDcgQEAgaW5kZXggNzUxZjA2Y2VhLi43NjlhMzY4MTAg MTAwNjQ0CiAgCQlpZiAoa2V4X2FsZ19ieV9uYW1lKHApID09IE5VTEwpIHsKICAJCQllcnJvcigi VW5zdXBwb3J0ZWQgS0VYIGFsZ29yaXRobSBcIiUuMTAwc1wiIiwgcCk7CiAgCQkJZnJlZShzKTsK LUBAIC0zMzQsMyArMzY4LDI2IEBAIGtleF9hc3NlbWJsZV9uYW1lcyhjaGFyICoqbGlzdHAsIGNv bnN0IGNoYXIgKmRlZiwgY29uc3QgY2hhciAqYWxsKQorQEAgLTMzNCwzICszNzQsMjYgQEAga2V4 X2Fzc2VtYmxlX25hbWVzKGNoYXIgKipsaXN0cCwgY29uc3QgY2hhciAqZGVmLCBjb25zdCBjaGFy ICphbGwpCiAgCWZyZWUocmV0KTsKICAJcmV0dXJuIHI7CiAgfQpAQCAtMTM3NCw3ICsxMzg4LDcg QEAgaW5kZXggNzUxZjA2Y2VhLi43NjlhMzY4MTAgMTAwNjQ0CiArCXJldHVybiAxOwogK30KIGRp ZmYgLS1naXQgYS9rZXguYyBiL2tleC5jCi1pbmRleCA4NWIxMTJjNzUuLjM2MDhhNTUwNCAxMDA2 NDQKK2luZGV4IDExYjI3MWQ0Ny4uMzcwMWE0MGMwIDEwMDY0NAogLS0tIGEva2V4LmMKICsrKyBi L2tleC5jCiBAQCAtMjkzLDE3ICsyOTMsMzcgQEAgc3RhdGljIGludApAQCAtMTQyMSw3ICsxNDM1 LDcgQEAgaW5kZXggODViMTEyYzc1Li4zNjA4YTU1MDQgMTAwNjQ0CiAgCSAgICAociA9IHNzaGJ1 Zl9wdXRfY3N0cmluZyhtLCAiMCIpKSAhPSAwIHx8CiAgCSAgICAociA9IHNzaGJ1Zl9wdXRfY3N0 cmluZyhtLCAiYWdlbnQtZm9yd2FyZCIpKSAhPSAwIHx8CiAgCSAgICAociA9IHNzaGJ1Zl9wdXRf Y3N0cmluZyhtLCAiMCIpKSAhPSAwKSB7Ci1AQCAtNzQxLDYgKzc2MSw5IEBAIGtleF9mcmVlKHN0 cnVjdCBrZXggKmtleCkKK0BAIC03NDYsNiArNzY2LDkgQEAga2V4X2ZyZWUoc3RydWN0IGtleCAq a2V4KQogIAlzc2hidWZfZnJlZShrZXgtPnNlcnZlcl92ZXJzaW9uKTsKICAJc3NoYnVmX2ZyZWUo a2V4LT5jbGllbnRfcHViKTsKICAJc3NoYnVmX2ZyZWUoa2V4LT5zZXNzaW9uX2lkKTsKQEAgLTE0 MzIsNyArMTQ0Niw3IEBAIGluZGV4IDg1YjExMmM3NS4uMzYwOGE1NTA0IDEwMDY0NAogIAlzc2hr ZXlfZnJlZShrZXgtPmluaXRpYWxfaG9zdGtleSk7CiAgCWZyZWUoa2V4LT5mYWlsZWRfY2hvaWNl KTsKIGRpZmYgLS1naXQgYS9rZXguaCBiL2tleC5oCi1pbmRleCA0ZjZkOTIxNjQuLjJjODZiMjVm OSAxMDA2NDQKK2luZGV4IGE0ZDUwZjFhMy4uZDIyOWRmN2U2IDEwMDY0NAogLS0tIGEva2V4LmgK ICsrKyBiL2tleC5oCiBAQCAtMjksNiArMjksMTAgQEAKQEAgLTE0NjIsNyArMTQ3Niw3IEBAIGlu ZGV4IDRmNmQ5MjE2NC4uMmM4NmIyNWY5IDEwMDY0NAogIAlLRVhfTUFYCiAgfTsKICAKLUBAIC0x NzAsNiArMTgzLDEzIEBAIHN0cnVjdCBrZXggeworQEAgLTE3MSw2ICsxODQsMTMgQEAgc3RydWN0 IGtleCB7CiAgCXVfaW50CWZsYWdzOwogIAlpbnQJaGFzaF9hbGc7CiAgCWludAllY19uaWQ7CkBA IC0xNDc2LDcgKzE0OTAsNyBAQCBpbmRleCA0ZjZkOTIxNjQuLjJjODZiMjVmOSAxMDA2NDQKICAJ Y2hhcgkqZmFpbGVkX2Nob2ljZTsKICAJaW50CSgqdmVyaWZ5X2hvc3Rfa2V5KShzdHJ1Y3Qgc3No a2V5ICosIHN0cnVjdCBzc2ggKik7CiAgCXN0cnVjdCBzc2hrZXkgKigqbG9hZF9ob3N0X3B1Ymxp Y19rZXkpKGludCwgaW50LCBzdHJ1Y3Qgc3NoICopOwotQEAgLTE5Nyw4ICsyMTcsMTAgQEAgaW50 CSBrZXhfbmlkX2Zyb21fbmFtZShjb25zdCBjaGFyICopOworQEAgLTE5OCw4ICsyMTgsMTAgQEAg aW50CSBrZXhfbmlkX2Zyb21fbmFtZShjb25zdCBjaGFyICopOwogIGludAkga2V4X2lzX3BxX2Zy b21fbmFtZShjb25zdCBjaGFyICopOwogIGludAkga2V4X25hbWVzX3ZhbGlkKGNvbnN0IGNoYXIg Kik7CiAgY2hhcgkqa2V4X2FsZ19saXN0KGNoYXIpOwpAQCAtMTQ4Nyw3ICsxNTAxLDcgQEAgaW5k ZXggNGY2ZDkyMTY0Li4yYzg2YjI1ZjkgMTAwNjQ0CiAgaW50CSBrZXhfYXNzZW1ibGVfbmFtZXMo Y2hhciAqKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwogIHZvaWQJIGtleF9wcm9wb3Nh bF9wb3B1bGF0ZV9lbnRyaWVzKHN0cnVjdCBzc2ggKiwgY2hhciAqcHJvcFtQUk9QT1NBTF9NQVhd LAogICAgICBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBj aGFyICosIGNvbnN0IGNoYXIgKik7Ci1AQCAtMjMyLDYgKzI1NCwxMiBAQCBpbnQJIGtleGdleF9j bGllbnQoc3RydWN0IHNzaCAqKTsKK0BAIC0yMzMsNiArMjU1LDEyIEBAIGludAkga2V4Z2V4X2Ns aWVudChzdHJ1Y3Qgc3NoICopOwogIGludAkga2V4Z2V4X3NlcnZlcihzdHJ1Y3Qgc3NoICopOwog IGludAkga2V4X2dlbl9jbGllbnQoc3RydWN0IHNzaCAqKTsKICBpbnQJIGtleF9nZW5fc2VydmVy KHN0cnVjdCBzc2ggKik7CkBAIC0xNTAwLDcgKzE1MTQsNyBAQCBpbmRleCA0ZjZkOTIxNjQuLjJj ODZiMjVmOSAxMDA2NDQKICAKICBpbnQJIGtleF9kaF9rZXlwYWlyKHN0cnVjdCBrZXggKik7CiAg aW50CSBrZXhfZGhfZW5jKHN0cnVjdCBrZXggKiwgY29uc3Qgc3RydWN0IHNzaGJ1ZiAqLCBzdHJ1 Y3Qgc3NoYnVmICoqLAotQEAgLTI3MCw2ICsyOTgsMTIgQEAgaW50CSBrZXhnZXhfaGFzaChpbnQs IGNvbnN0IHN0cnVjdCBzc2hidWYgKiwgY29uc3Qgc3RydWN0IHNzaGJ1ZiAqLAorQEAgLTI3MSw2 ICsyOTksMTIgQEAgaW50CSBrZXhnZXhfaGFzaChpbnQsIGNvbnN0IHN0cnVjdCBzc2hidWYgKiwg Y29uc3Qgc3RydWN0IHNzaGJ1ZiAqLAogICAgICBjb25zdCBCSUdOVU0gKiwgY29uc3QgdV9jaGFy ICosIHNpemVfdCwKICAgICAgdV9jaGFyICosIHNpemVfdCAqKTsKICAKQEAgLTI4NzYsNyArMjg5 MCw3IEBAIGluZGV4IDAwMDAwMDAwMC4uOThlOTQwNGRmCiArCiArI2VuZGlmIC8qIGRlZmluZWQo R1NTQVBJKSAmJiBkZWZpbmVkKFdJVEhfT1BFTlNTTCkgKi8KIGRpZmYgLS1naXQgYS9tb25pdG9y LmMgYi9tb25pdG9yLmMKLWluZGV4IDFlNDFkZmE1My4uMDI1YzZhYmJlIDEwMDY0NAoraW5kZXgg NmZlOWY0NmZjLi5jZGRiYzBhMjIgMTAwNjQ0CiAtLS0gYS9tb25pdG9yLmMKICsrKyBiL21vbml0 b3IuYwogQEAgLTEzOCw2ICsxMzgsOCBAQCBpbnQgbW1fYW5zd2VyX2dzc19zZXR1cF9jdHgoc3Ry dWN0IHNzaCAqLCBpbnQsIHN0cnVjdCBzc2hidWYgKik7CkBAIC0yOTQ2LDcgKzI5NjAsNyBAQCBp bmRleCAxZTQxZGZhNTMuLjAyNWM2YWJiZSAxMDA2NDQKICAKICAJaWYgKGF1dGhfb3B0cy0+cGVy bWl0X3B0eV9mbGFnKSB7CiAgCQltb25pdG9yX3Blcm1pdChtb25fZGlzcGF0Y2gsIE1PTklUT1Jf UkVRX1BUWSwgMSk7Ci1AQCAtMTkyNCw2ICsxOTQ4LDE3IEBAIG1vbml0b3JfYXBwbHlfa2V5c3Rh dGUoc3RydWN0IHNzaCAqc3NoLCBzdHJ1Y3QgbW9uaXRvciAqcG1vbml0b3IpCitAQCAtMTg5OCw2 ICsxOTIyLDE3IEBAIG1vbml0b3JfYXBwbHlfa2V5c3RhdGUoc3RydWN0IHNzaCAqc3NoLCBzdHJ1 Y3QgbW9uaXRvciAqcG1vbml0b3IpCiAgIyBpZmRlZiBPUEVOU1NMX0hBU19FQ0MKICAJa2V4LT5r ZXhbS0VYX0VDREhfU0hBMl0gPSBrZXhfZ2VuX3NlcnZlcjsKICAjIGVuZGlmCkBAIC0yOTY0LDcg KzI5NzgsNyBAQCBpbmRleCAxZTQxZGZhNTMuLjAyNWM2YWJiZSAxMDA2NDQKICAjZW5kaWYgLyog V0lUSF9PUEVOU1NMICovCiAgCWtleC0+a2V4W0tFWF9DMjU1MTlfU0hBMjU2XSA9IGtleF9nZW5f c2VydmVyOwogIAlrZXgtPmtleFtLRVhfS0VNX1NOVFJVUDc2MVgyNTUxOV9TSEE1MTJdID0ga2V4 X2dlbl9zZXJ2ZXI7Ci1AQCAtMjAyMiw4ICsyMDU3LDggQEAgbW1fYW5zd2VyX2dzc19zZXR1cF9j dHgoc3RydWN0IHNzaCAqc3NoLCBpbnQgc29jaywgc3RydWN0IHNzaGJ1ZiAqbSkKK0BAIC0xOTk2 LDggKzIwMzEsOCBAQCBtbV9hbnN3ZXJfZ3NzX3NldHVwX2N0eChzdHJ1Y3Qgc3NoICpzc2gsIGlu dCBzb2NrLCBzdHJ1Y3Qgc3NoYnVmICptKQogIAl1X2NoYXIgKnA7CiAgCWludCByOwogIApAQCAt Mjk3NSw3ICsyOTg5LDcgQEAgaW5kZXggMWU0MWRmYTUzLi4wMjVjNmFiYmUgMTAwNjQ0CiAgCiAg CWlmICgociA9IHNzaGJ1Zl9nZXRfc3RyaW5nKG0sICZwLCAmbGVuKSkgIT0gMCkKICAJCWZhdGFs X2ZyKHIsICJwYXJzZSIpOwotQEAgLTIwNTUsOCArMjA5MCw4IEBAIG1tX2Fuc3dlcl9nc3NfYWNj ZXB0X2N0eChzdHJ1Y3Qgc3NoICpzc2gsIGludCBzb2NrLCBzdHJ1Y3Qgc3NoYnVmICptKQorQEAg LTIwMjksOCArMjA2NCw4IEBAIG1tX2Fuc3dlcl9nc3NfYWNjZXB0X2N0eChzdHJ1Y3Qgc3NoICpz c2gsIGludCBzb2NrLCBzdHJ1Y3Qgc3NoYnVmICptKQogIAlPTV91aW50MzIgZmxhZ3MgPSAwOyAv KiBHU0kgbmVlZHMgdGhpcyAqLwogIAlpbnQgcjsKICAKQEAgLTI5ODYsNyArMzAwMCw3IEBAIGlu ZGV4IDFlNDFkZmE1My4uMDI1YzZhYmJlIDEwMDY0NAogIAogIAlpZiAoKHIgPSBzc2hfZ3NzYXBp X2dldF9idWZmZXJfZGVzYyhtLCAmaW4pKSAhPSAwKQogIAkJZmF0YWxfZnIociwgInNzaF9nc3Nh cGlfZ2V0X2J1ZmZlcl9kZXNjIik7Ci1AQCAtMjA3Niw2ICsyMTExLDcgQEAgbW1fYW5zd2VyX2dz c19hY2NlcHRfY3R4KHN0cnVjdCBzc2ggKnNzaCwgaW50IHNvY2ssIHN0cnVjdCBzc2hidWYgKm0p CitAQCAtMjA1MCw2ICsyMDg1LDcgQEAgbW1fYW5zd2VyX2dzc19hY2NlcHRfY3R4KHN0cnVjdCBz c2ggKnNzaCwgaW50IHNvY2ssIHN0cnVjdCBzc2hidWYgKm0pCiAgCQltb25pdG9yX3Blcm1pdCht b25fZGlzcGF0Y2gsIE1PTklUT1JfUkVRX0dTU1NURVAsIDApOwogIAkJbW9uaXRvcl9wZXJtaXQo bW9uX2Rpc3BhdGNoLCBNT05JVE9SX1JFUV9HU1NVU0VST0ssIDEpOwogIAkJbW9uaXRvcl9wZXJt aXQobW9uX2Rpc3BhdGNoLCBNT05JVE9SX1JFUV9HU1NDSEVDS01JQywgMSk7CkBAIC0yOTk0LDcg KzMwMDgsNyBAQCBpbmRleCAxZTQxZGZhNTMuLjAyNWM2YWJiZSAxMDA2NDQKICAJfQogIAlyZXR1 cm4gKDApOwogIH0KLUBAIC0yMDg3LDggKzIxMjMsOCBAQCBtbV9hbnN3ZXJfZ3NzX2NoZWNrbWlj KHN0cnVjdCBzc2ggKnNzaCwgaW50IHNvY2ssIHN0cnVjdCBzc2hidWYgKm0pCitAQCAtMjA2MSw4 ICsyMDk3LDggQEAgbW1fYW5zd2VyX2dzc19jaGVja21pYyhzdHJ1Y3Qgc3NoICpzc2gsIGludCBz b2NrLCBzdHJ1Y3Qgc3NoYnVmICptKQogIAlPTV91aW50MzIgcmV0OwogIAlpbnQgcjsKICAKQEAg LTMwMDUsNyArMzAxOSw3IEBAIGluZGV4IDFlNDFkZmE1My4uMDI1YzZhYmJlIDEwMDY0NAogIAog IAlpZiAoKHIgPSBzc2hfZ3NzYXBpX2dldF9idWZmZXJfZGVzYyhtLCAmZ3NzYnVmKSkgIT0gMCB8 fAogIAkgICAgKHIgPSBzc2hfZ3NzYXBpX2dldF9idWZmZXJfZGVzYyhtLCAmbWljKSkgIT0gMCkK LUBAIC0yMTE0LDEzICsyMTUwLDE3IEBAIG1tX2Fuc3dlcl9nc3NfY2hlY2ttaWMoc3RydWN0IHNz aCAqc3NoLCBpbnQgc29jaywgc3RydWN0IHNzaGJ1ZiAqbSkKK0BAIC0yMDg4LDEzICsyMTI0LDE3 IEBAIG1tX2Fuc3dlcl9nc3NfY2hlY2ttaWMoc3RydWN0IHNzaCAqc3NoLCBpbnQgc29jaywgc3Ry dWN0IHNzaGJ1ZiAqbSkKICBpbnQKICBtbV9hbnN3ZXJfZ3NzX3VzZXJvayhzdHJ1Y3Qgc3NoICpz c2gsIGludCBzb2NrLCBzdHJ1Y3Qgc3NoYnVmICptKQogIHsKQEAgLTMwMjcsNyArMzA0MSw3IEBA IGluZGV4IDFlNDFkZmE1My4uMDI1YzZhYmJlIDEwMDY0NAogIAogIAlzc2hidWZfcmVzZXQobSk7 CiAgCWlmICgociA9IHNzaGJ1Zl9wdXRfdTMyKG0sIGF1dGhlbnRpY2F0ZWQpKSAhPSAwKQotQEAg LTIxMjksNyArMjE2OSwxMSBAQCBtbV9hbnN3ZXJfZ3NzX3VzZXJvayhzdHJ1Y3Qgc3NoICpzc2gs IGludCBzb2NrLCBzdHJ1Y3Qgc3NoYnVmICptKQorQEAgLTIxMDMsNyArMjE0MywxMSBAQCBtbV9h bnN3ZXJfZ3NzX3VzZXJvayhzdHJ1Y3Qgc3NoICpzc2gsIGludCBzb2NrLCBzdHJ1Y3Qgc3NoYnVm ICptKQogIAlkZWJ1ZzNfZigic2VuZGluZyByZXN1bHQgJWQiLCBhdXRoZW50aWNhdGVkKTsKICAJ bW1fcmVxdWVzdF9zZW5kKHNvY2ssIE1PTklUT1JfQU5TX0dTU1VTRVJPSywgbSk7CiAgCkBAIC0z MDQwLDcgKzMwNTQsNyBAQCBpbmRleCAxZTQxZGZhNTMuLjAyNWM2YWJiZSAxMDA2NDQKICAKICAJ aWYgKChkaXNwbGF5bmFtZSA9IHNzaF9nc3NhcGlfZGlzcGxheW5hbWUoKSkgIT0gTlVMTCkKICAJ CWF1dGgyX3JlY29yZF9pbmZvKGF1dGhjdHh0LCAiJXMiLCBkaXNwbGF5bmFtZSk7Ci1AQCAtMjEz Nyw1ICsyMTgxLDg0IEBAIG1tX2Fuc3dlcl9nc3NfdXNlcm9rKHN0cnVjdCBzc2ggKnNzaCwgaW50 IHNvY2ssIHN0cnVjdCBzc2hidWYgKm0pCitAQCAtMjExMSw1ICsyMTU1LDg0IEBAIG1tX2Fuc3dl cl9nc3NfdXNlcm9rKHN0cnVjdCBzc2ggKnNzaCwgaW50IHNvY2ssIHN0cnVjdCBzc2hidWYgKm0p CiAgCS8qIE1vbml0b3IgbG9vcCB3aWxsIHRlcm1pbmF0ZSBpZiBhdXRoZW50aWNhdGVkICovCiAg CXJldHVybiAoYXV0aGVudGljYXRlZCk7CiAgfQpAQCAtMzEzOSwxMCArMzE1MywxMCBAQCBpbmRl eCAxYjQ2ZTc5NGUuLjc1YTBkNjE4MSAxMDA2NDQKICAKICBzdHJ1Y3Qgc3NoOwogZGlmZiAtLWdp dCBhL21vbml0b3Jfd3JhcC5jIGIvbW9uaXRvcl93cmFwLmMKLWluZGV4IGYzYzM0MWJjNy4uNDk2 ZGU0MzZlIDEwMDY0NAoraW5kZXggYjVhZWI4YjJjLi4yZDkwNWMxNmEgMTAwNjQ0CiAtLS0gYS9t b25pdG9yX3dyYXAuYwogKysrIGIvbW9uaXRvcl93cmFwLmMKLUBAIC0xMTYyLDEzICsxMTYyLDE1 IEBAIG1tX3NzaF9nc3NhcGlfY2hlY2ttaWMoR3NzY3R4dCAqY3R4LCBnc3NfYnVmZmVyX3QgZ3Nz YnVmLCBnc3NfYnVmZmVyX3QgZ3NzbWljKQorQEAgLTExMTAsMTMgKzExMTAsMTUgQEAgbW1fc3No X2dzc2FwaV9jaGVja21pYyhHc3NjdHh0ICpjdHgsIGdzc19idWZmZXJfdCBnc3NidWYsIGdzc19i dWZmZXJfdCBnc3NtaWMpCiAgfQogIAogIGludApAQCAtMzE1OSw3ICszMTczLDcgQEAgaW5kZXgg ZjNjMzQxYmM3Li40OTZkZTQzNmUgMTAwNjQ0CiAgCiAgCW1tX3JlcXVlc3Rfc2VuZChwbW9uaXRv ci0+bV9yZWN2ZmQsIE1PTklUT1JfUkVRX0dTU1VTRVJPSywgbSk7CiAgCW1tX3JlcXVlc3RfcmVj ZWl2ZV9leHBlY3QocG1vbml0b3ItPm1fcmVjdmZkLAotQEAgLTExODEsNiArMTE4Myw1OSBAQCBt bV9zc2hfZ3NzYXBpX3VzZXJvayhjaGFyICp1c2VyKQorQEAgLTExMjksNiArMTEzMSw1OSBAQCBt bV9zc2hfZ3NzYXBpX3VzZXJvayhjaGFyICp1c2VyKQogIAlkZWJ1ZzNfZigidXNlciAlc2F1dGhl bnRpY2F0ZWQiLCBhdXRoZW50aWNhdGVkID8gIiIgOiAibm90ICIpOwogIAlyZXR1cm4gKGF1dGhl bnRpY2F0ZWQpOwogIH0KQEAgLTMyMjAsNyArMzIzNCw3IEBAIGluZGV4IGYzYzM0MWJjNy4uNDk2 ZGU0MzZlIDEwMDY0NAogIAogIC8qCiBkaWZmIC0tZ2l0IGEvbW9uaXRvcl93cmFwLmggYi9tb25p dG9yX3dyYXAuaAotaW5kZXggM2UwOGRkZDc4Li5hNzA4YmY0ZDggMTAwNjQ0CitpbmRleCAzMDU4 NTE4N2MuLjA3YjIwN2QxZCAxMDA2NDQKIC0tLSBhL21vbml0b3Jfd3JhcC5oCiArKysgYi9tb25p dG9yX3dyYXAuaAogQEAgLTcyLDggKzcyLDEwIEBAIHZvaWQgbW1fZGVjb2RlX2FjdGl2YXRlX3Nl cnZlcl9vcHRpb25zKHN0cnVjdCBzc2ggKnNzaCwgc3RydWN0IHNzaGJ1ZiAqbSk7CkBAIC0zMjM2 LDcgKzMyNTAsNyBAQCBpbmRleCAzZTA4ZGRkNzguLmE3MDhiZjRkOCAxMDA2NDQKICAKICAjaWZk ZWYgVVNFX1BBTQogZGlmZiAtLWdpdCBhL3JlYWRjb25mLmMgYi9yZWFkY29uZi5jCi1pbmRleCAx MGNiZDA0YmEuLjkwMDQwNzZlNCAxMDA2NDQKK2luZGV4IDAyMThlZDEyOC4uMWI3ZDRhZTRlIDEw MDY0NAogLS0tIGEvcmVhZGNvbmYuYwogKysrIGIvcmVhZGNvbmYuYwogQEAgLTU3LDYgKzU3LDcg QEAKQEAgLTMzODksNyArMzQwMyw3IEBAIGluZGV4IGRiY2I0MTcyNS4uOGIwYzk4YWNmIDEwMDY0 NAogIAkJCQkJCSAqIGF1dGhlbnRpY2F0aW9uLiAqLwogIAlpbnQgICAgIGtiZF9pbnRlcmFjdGl2 ZV9hdXRoZW50aWNhdGlvbjsgLyogVHJ5IGtleWJvYXJkLWludGVyYWN0aXZlIGF1dGguICovCiBk aWZmIC0tZ2l0IGEvc2VydmNvbmYuYyBiL3NlcnZjb25mLmMKLWluZGV4IDY2ODI1OWEyMC4uZGUz ZmE5NDgxIDEwMDY0NAoraW5kZXggOWI0NDNiZWEwLi42NzAwZjVkNTEgMTAwNjQ0CiAtLS0gYS9z ZXJ2Y29uZi5jCiArKysgYi9zZXJ2Y29uZi5jCiBAQCAtNjIsNiArNjIsNyBAQApAQCAtMzM5OCw5 NSArMzQxMiw0MCBAQCBpbmRleCA2NjgyNTlhMjAuLmRlM2ZhOTQ4MSAxMDA2NDQKICAjaW5jbHVk ZSAidmVyc2lvbi5oIgogKyNpbmNsdWRlICJzc2gtZ3NzLmgiCiAgCi0gI2lmICFkZWZpbmVkKFNT SERfUEFNX1NFUlZJQ0UpCi0gIyBkZWZpbmUgU1NIRF9QQU1fU0VSVklDRQkJInNzaGQiCi1AQCAt MTMxLDkgKzEzMiwxMiBAQCBpbml0aWFsaXplX3NlcnZlcl9vcHRpb25zKFNlcnZlck9wdGlvbnMg Km9wdGlvbnMpCi0gCW9wdGlvbnMtPmtlcmJlcm9zX3RpY2tldF9jbGVhbnVwID0gLTE7Ci0gCW9w dGlvbnMtPmtlcmJlcm9zX2dldF9hZnNfdG9rZW4gPSAtMTsKLSAJb3B0aW9ucy0+Z3NzX2F1dGhl bnRpY2F0aW9uPS0xOwotKwlvcHRpb25zLT5nc3Nfa2V5ZXggPSAtMTsKLSAJb3B0aW9ucy0+Z3Nz X2NsZWFudXBfY3JlZHMgPSAtMTsKLSAJb3B0aW9ucy0+Z3NzX2RlbGVnX2NyZWRzID0gLTE7Ci0g CW9wdGlvbnMtPmdzc19zdHJpY3RfYWNjZXB0b3IgPSAtMTsKLSsJb3B0aW9ucy0+Z3NzX3N0b3Jl X3Jla2V5ID0gLTE7Ci0rCW9wdGlvbnMtPmdzc19rZXhfYWxnb3JpdGhtcyA9IE5VTEw7Ci0gCW9w dGlvbnMtPnBhc3N3b3JkX2F1dGhlbnRpY2F0aW9uID0gLTE7Ci0gCW9wdGlvbnMtPmtiZF9pbnRl cmFjdGl2ZV9hdXRoZW50aWNhdGlvbiA9IC0xOwotIAlvcHRpb25zLT5wZXJtaXRfZW1wdHlfcGFz c3dkID0gLTE7Ci1AQCAtMzcyLDEyICszNzYsMjAgQEAgZmlsbF9kZWZhdWx0X3NlcnZlcl9vcHRp b25zKFNlcnZlck9wdGlvbnMgKm9wdGlvbnMpCi0gCQlvcHRpb25zLT5rZXJiZXJvc19nZXRfYWZz X3Rva2VuID0gMDsKLSAJaWYgKG9wdGlvbnMtPmdzc19hdXRoZW50aWNhdGlvbiA9PSAtMSkKLSAJ CW9wdGlvbnMtPmdzc19hdXRoZW50aWNhdGlvbiA9IDA7Ci0rCWlmIChvcHRpb25zLT5nc3Nfa2V5 ZXggPT0gLTEpCi0rCQlvcHRpb25zLT5nc3Nfa2V5ZXggPSAwOwotIAlpZiAob3B0aW9ucy0+Z3Nz X2NsZWFudXBfY3JlZHMgPT0gLTEpCi0gCQlvcHRpb25zLT5nc3NfY2xlYW51cF9jcmVkcyA9IDE7 Ci0gCWlmIChvcHRpb25zLT5nc3NfZGVsZWdfY3JlZHMgPT0gLTEpCi0gCQlvcHRpb25zLT5nc3Nf ZGVsZWdfY3JlZHMgPSAxOwotIAlpZiAob3B0aW9ucy0+Z3NzX3N0cmljdF9hY2NlcHRvciA9PSAt MSkKLSAJCW9wdGlvbnMtPmdzc19zdHJpY3RfYWNjZXB0b3IgPSAxOwotKwlpZiAob3B0aW9ucy0+ Z3NzX3N0b3JlX3Jla2V5ID09IC0xKQotKwkJb3B0aW9ucy0+Z3NzX3N0b3JlX3Jla2V5ID0gMDsK KyAjZGVmaW5lIFNTSERfQ09ORklHX0JMT0JfVkVSU0lPTgkxCisgCitAQCAtMzM3LDYgKzMzOCwx MCBAQCBmaWxsX2RlZmF1bHRfc2VydmVyX29wdGlvbnMoU2VydmVyT3B0aW9ucyAqb3B0aW9ucykK KyAJCW9wdGlvbnMtPmxvZ19mYWNpbGl0eSA9IFNZU0xPR19GQUNJTElUWV9BVVRIOworIAlpZiAo b3B0aW9ucy0+bG9nX2xldmVsID09IFNZU0xPR19MRVZFTF9OT1RfU0VUKQorIAkJb3B0aW9ucy0+ bG9nX2xldmVsID0gU1lTTE9HX0xFVkVMX0lORk87CiArI2lmZGVmIEdTU0FQSQogKwlpZiAob3B0 aW9ucy0+Z3NzX2tleF9hbGdvcml0aG1zID09IE5VTEwpCiArCQlvcHRpb25zLT5nc3Nfa2V4X2Fs Z29yaXRobXMgPSBzdHJkdXAoR1NTX0tFWF9ERUZBVUxUX0tFWCk7CiArI2VuZGlmCi0gCWlmIChv cHRpb25zLT5wYXNzd29yZF9hdXRoZW50aWNhdGlvbiA9PSAtMSkKLSAJCW9wdGlvbnMtPnBhc3N3 b3JkX2F1dGhlbnRpY2F0aW9uID0gMTsKLSAJaWYgKG9wdGlvbnMtPmtiZF9pbnRlcmFjdGl2ZV9h dXRoZW50aWNhdGlvbiA9PSAtMSkKLUBAIC01NjUsNiArNTc3LDcgQEAgdHlwZWRlZiBlbnVtIHsK LSAJc1BlclNvdXJjZVBlbmFsdGllcywgc1BlclNvdXJjZVBlbmFsdHlFeGVtcHRMaXN0LAotIAlz Q2xpZW50QWxpdmVJbnRlcnZhbCwgc0NsaWVudEFsaXZlQ291bnRNYXgsIHNBdXRob3JpemVkS2V5 c0ZpbGUsCi0gCXNHc3NBdXRoZW50aWNhdGlvbiwgc0dzc0NsZWFudXBDcmVkcywgc0dzc0RlbGVn YXRlQ3JlZHMsIHNHc3NTdHJpY3RBY2NlcHRvciwKLSsJc0dzc0tleUV4LCBzR3NzS2V4QWxnb3Jp dGhtcywgc0dzc1N0b3JlUmVrZXksCi0gCXNBY2NlcHRFbnYsIHNTZXRFbnYsIHNQZXJtaXRUdW5u ZWwsCi0gCXNNYXRjaCwgc1Blcm1pdE9wZW4sIHNQZXJtaXRMaXN0ZW4sIHNGb3JjZUNvbW1hbmQs IHNDaHJvb3REaXJlY3RvcnksCi0gCXNVc2VQcml2aWxlZ2VTZXBhcmF0aW9uLCBzQWxsb3dBZ2Vu dEZvcndhcmRpbmcsCi1AQCAtNjUwLDE0ICs2NjMsMjQgQEAgc3RhdGljIHN0cnVjdCB7Ci0gI2lm ZGVmIEdTU0FQSQotIAl7ICJnc3NhcGlhdXRoZW50aWNhdGlvbiIsIHNHc3NBdXRoZW50aWNhdGlv biwgU1NIQ0ZHX0FMTCB9LAotIAl7ICJnc3NhcGljbGVhbnVwY3JlZGVudGlhbHMiLCBzR3NzQ2xl YW51cENyZWRzLCBTU0hDRkdfR0xPQkFMIH0sCi0rCXsgImdzc2FwaWNsZWFudXBjcmVkcyIsIHNH c3NDbGVhbnVwQ3JlZHMsIFNTSENGR19HTE9CQUwgfSwKLSAJeyAiZ3NzYXBpZGVsZWdhdGVjcmVk ZW50aWFscyIsIHNHc3NEZWxlZ2F0ZUNyZWRzLCBTU0hDRkdfR0xPQkFMIH0sCi0gCXsgImdzc2Fw aXN0cmljdGFjY2VwdG9yY2hlY2siLCBzR3NzU3RyaWN0QWNjZXB0b3IsIFNTSENGR19HTE9CQUwg fSwKLSsJeyAiZ3NzYXBpa2V5ZXhjaGFuZ2UiLCBzR3NzS2V5RXgsIFNTSENGR19HTE9CQUwgfSwK LSsJeyAiZ3NzYXBpc3RvcmVjcmVkZW50aWFsc29ucmVrZXkiLCBzR3NzU3RvcmVSZWtleSwgU1NI Q0ZHX0dMT0JBTCB9LAotKwl7ICJnc3NhcGlrZXhhbGdvcml0aG1zIiwgc0dzc0tleEFsZ29yaXRo bXMsIFNTSENGR19HTE9CQUwgfSwKLSAjZWxzZQotIAl7ICJnc3NhcGlhdXRoZW50aWNhdGlvbiIs IHNVbnN1cHBvcnRlZCwgU1NIQ0ZHX0FMTCB9LAotIAl7ICJnc3NhcGljbGVhbnVwY3JlZGVudGlh bHMiLCBzVW5zdXBwb3J0ZWQsIFNTSENGR19HTE9CQUwgfSwKLSsJeyAiZ3NzYXBpY2xlYW51cGNy ZWRzIiwgc1Vuc3VwcG9ydGVkLCBTU0hDRkdfR0xPQkFMIH0sCi0gCXsgImdzc2FwaWRlbGVnYXRl Y3JlZGVudGlhbHMiLCBzVW5zdXBwb3J0ZWQsIFNTSENGR19HTE9CQUwgfSwKLSAJeyAiZ3NzYXBp c3RyaWN0YWNjZXB0b3JjaGVjayIsIHNVbnN1cHBvcnRlZCwgU1NIQ0ZHX0dMT0JBTCB9LAotKwl7 ICJnc3NhcGlrZXlleGNoYW5nZSIsIHNVbnN1cHBvcnRlZCwgU1NIQ0ZHX0dMT0JBTCB9LAotKwl7 ICJnc3NhcGlzdG9yZWNyZWRlbnRpYWxzb25yZWtleSIsIHNVbnN1cHBvcnRlZCwgU1NIQ0ZHX0dM T0JBTCB9LAotKwl7ICJnc3NhcGlrZXhhbGdvcml0aG1zIiwgc1Vuc3VwcG9ydGVkLCBTU0hDRkdf R0xPQkFMIH0sCi0gI2VuZGlmCi0rCXsgImdzc3VzZXNlc3Npb25jY2FjaGUiLCBzVW5zdXBwb3J0 ZWQsIFNTSENGR19HTE9CQUwgfSwKLSsJeyAiZ3NzYXBpdXNlc2Vzc2lvbmNyZWRjYWNoZSIsIHNV bnN1cHBvcnRlZCwgU1NIQ0ZHX0dMT0JBTCB9LAotIAl7ICJwYXNzd29yZGF1dGhlbnRpY2F0aW9u Iiwgc1Bhc3N3b3JkQXV0aGVudGljYXRpb24sIFNTSENGR19BTEwgfSwKLSAJeyAia2JkaW50ZXJh Y3RpdmVhdXRoZW50aWNhdGlvbiIsIHNLYmRJbnRlcmFjdGl2ZUF1dGhlbnRpY2F0aW9uLCBTU0hD RkdfQUxMIH0sCi0gCXsgImNoYWxsZW5nZXJlc3BvbnNlYXV0aGVudGljYXRpb24iLCBzS2JkSW50 ZXJhY3RpdmVBdXRoZW50aWNhdGlvbiwgU1NIQ0ZHX0FMTCB9LCAvKiBhbGlhcyAqLwotQEAgLTE2 NTAsNiArMTY3MywxMCBAQCBwcm9jZXNzX3NlcnZlcl9jb25maWdfbGluZV9kZXB0aChTZXJ2ZXJP cHRpb25zICpvcHRpb25zLCBjaGFyICpsaW5lLAorIAlpZiAob3B0aW9ucy0+cGVybWl0X3VzZXJf ZW52ID09IC0xKSB7CisgCQlvcHRpb25zLT5wZXJtaXRfdXNlcl9lbnYgPSAwOworIAkJb3B0aW9u cy0+cGVybWl0X3VzZXJfZW52X2FsbG93bGlzdCA9IE5VTEw7CitAQCAtMTQzNyw2ICsxNDQyLDEw IEBAIHByb2Nlc3Nfc2VydmVyX2NvbmZpZ19saW5lX2RlcHRoKFNlcnZlck9wdGlvbnMgKm9wdGlv bnMsIGNoYXIgKmxpbmUsCiAgCQlpbnRwdHIgPSAmb3B0aW9ucy0+Z3NzX2F1dGhlbnRpY2F0aW9u OwogIAkJZ290byBwYXJzZV9mbGFnOwogIAotKwljYXNlIHNHc3NLZXlFeDoKKysJY2FzZSBzR1NT QVBJS2V5RXhjaGFuZ2U6CiArCQlpbnRwdHIgPSAmb3B0aW9ucy0+Z3NzX2tleWV4OwogKwkJZ290 byBwYXJzZV9mbGFnOwogKwotIAljYXNlIHNHc3NDbGVhbnVwQ3JlZHM6CisgCWNhc2Ugc0dTU0FQ SUNsZWFudXBDcmVkZW50aWFsczoKICAJCWludHB0ciA9ICZvcHRpb25zLT5nc3NfY2xlYW51cF9j cmVkczsKICAJCWdvdG8gcGFyc2VfZmxhZzsKLUBAIC0xNjYyLDYgKzE2ODksMjIgQEAgcHJvY2Vz c19zZXJ2ZXJfY29uZmlnX2xpbmVfZGVwdGgoU2VydmVyT3B0aW9ucyAqb3B0aW9ucywgY2hhciAq bGluZSwKK0BAIC0xNDQ4LDYgKzE0NTcsMjIgQEAgcHJvY2Vzc19zZXJ2ZXJfY29uZmlnX2xpbmVf ZGVwdGgoU2VydmVyT3B0aW9ucyAqb3B0aW9ucywgY2hhciAqbGluZSwKKyAJY2FzZSBzR1NTQVBJ U3RyaWN0QWNjZXB0b3JDaGVjazoKICAJCWludHB0ciA9ICZvcHRpb25zLT5nc3Nfc3RyaWN0X2Fj Y2VwdG9yOwogIAkJZ290byBwYXJzZV9mbGFnOwotIAotKwljYXNlIHNHc3NTdG9yZVJla2V5Ogor KworKwljYXNlIHNHU1NBUElTdG9yZUNyZWRlbnRpYWxzT25SZWtleToKICsJCWludHB0ciA9ICZv cHRpb25zLT5nc3Nfc3RvcmVfcmVrZXk7CiArCQlnb3RvIHBhcnNlX2ZsYWc7CiArCi0rCWNhc2Ug c0dzc0tleEFsZ29yaXRobXM6CisrCWNhc2Ugc0dTU0FQSUtleEFsZ29yaXRobXM6CiArCQlhcmcg PSBhcmd2X25leHQoJmFjLCAmYXYpOwogKwkJaWYgKCFhcmcgfHwgKmFyZyA9PSAnXDAnKQogKwkJ CWZhdGFsKCIlLjIwMHMgbGluZSAlZDogTWlzc2luZyBhcmd1bWVudC4iLApAQCAtMzQ5Nyw0MyAr MzQ1Niw1MyBAQCBpbmRleCA2NjgyNTlhMjAuLmRlM2ZhOTQ4MSAxMDA2NDQKICsJCWlmICgqYWN0 aXZlcCAmJiBvcHRpb25zLT5nc3Nfa2V4X2FsZ29yaXRobXMgPT0gTlVMTCkKICsJCQlvcHRpb25z LT5nc3Nfa2V4X2FsZ29yaXRobXMgPSB4c3RyZHVwKGFyZyk7CiArCQlicmVhazsKLSsKKyAjZW5k aWYgLyogR1NTQVBJICovCisgCiAgCWNhc2Ugc1Bhc3N3b3JkQXV0aGVudGljYXRpb246Ci0gCQlp bnRwdHIgPSAmb3B0aW9ucy0+cGFzc3dvcmRfYXV0aGVudGljYXRpb247Ci0gCQlnb3RvIHBhcnNl X2ZsYWc7Ci1AQCAtMzI5MSw3ICszMzM0LDEwIEBAIGR1bXBfY29uZmlnKFNlcnZlck9wdGlvbnMg Km8pCi0gCWR1bXBfY2ZnX2ZtdGludChzR3NzQXV0aGVudGljYXRpb24sIG8tPmdzc19hdXRoZW50 aWNhdGlvbik7Ci0gCWR1bXBfY2ZnX2ZtdGludChzR3NzQ2xlYW51cENyZWRzLCBvLT5nc3NfY2xl YW51cF9jcmVkcyk7Ci0gCWR1bXBfY2ZnX2ZtdGludChzR3NzRGVsZWdhdGVDcmVkcywgby0+Z3Nz X2RlbGVnX2NyZWRzKTsKLSsJZHVtcF9jZmdfZm10aW50KHNHc3NLZXlFeCwgby0+Z3NzX2tleWV4 KTsKLSAJZHVtcF9jZmdfZm10aW50KHNHc3NTdHJpY3RBY2NlcHRvciwgby0+Z3NzX3N0cmljdF9h Y2NlcHRvcik7Ci0rCWR1bXBfY2ZnX2ZtdGludChzR3NzU3RvcmVSZWtleSwgby0+Z3NzX3N0b3Jl X3Jla2V5KTsKLSsJZHVtcF9jZmdfc3RyaW5nKHNHc3NLZXhBbGdvcml0aG1zLCBvLT5nc3Nfa2V4 X2FsZ29yaXRobXMpOworQEAgLTQyMTgsNyArNDI0MywxMCBAQCBkdW1wX2NvbmZpZyhTZXJ2ZXJP cHRpb25zICpvKQorIAlkdW1wX2NmZ19mbXRpbnQoc0dTU0FQSUF1dGhlbnRpY2F0aW9uLCBvLT5n c3NfYXV0aGVudGljYXRpb24pOworIAlkdW1wX2NmZ19mbXRpbnQoc0dTU0FQSUNsZWFudXBDcmVk ZW50aWFscywgby0+Z3NzX2NsZWFudXBfY3JlZHMpOworIAlkdW1wX2NmZ19mbXRpbnQoc0dTU0FQ SURlbGVnYXRlQ3JlZGVudGlhbHMsIG8tPmdzc19kZWxlZ19jcmVkcyk7CisrCWR1bXBfY2ZnX2Zt dGludChzR1NTQVBJS2V5RXhjaGFuZ2UsIG8tPmdzc19rZXlleCk7CisgCWR1bXBfY2ZnX2ZtdGlu dChzR1NTQVBJU3RyaWN0QWNjZXB0b3JDaGVjaywgby0+Z3NzX3N0cmljdF9hY2NlcHRvcik7Cisr CWR1bXBfY2ZnX2ZtdGludChzR1NTQVBJU3RvcmVDcmVkZW50aWFsc09uUmVrZXksIG8tPmdzc19z dG9yZV9yZWtleSk7CisrCWR1bXBfY2ZnX3N0cmluZyhzR1NTQVBJS2V4QWxnb3JpdGhtcywgby0+ Z3NzX2tleF9hbGdvcml0aG1zKTsKICAjZW5kaWYKICAJZHVtcF9jZmdfZm10aW50KHNQYXNzd29y ZEF1dGhlbnRpY2F0aW9uLCBvLT5wYXNzd29yZF9hdXRoZW50aWNhdGlvbik7CiAgCWR1bXBfY2Zn X2ZtdGludChzS2JkSW50ZXJhY3RpdmVBdXRoZW50aWNhdGlvbiwKIGRpZmYgLS1naXQgYS9zZXJ2 Y29uZi5oIGIvc2VydmNvbmYuaAotaW5kZXggYjA2ZGIwOWUxLi43NjY0MWQ1ODAgMTAwNjQ0Citp bmRleCBhMjM0NWU4OGEuLmRkYjBmMTMwYSAxMDA2NDQKIC0tLSBhL3NlcnZjb25mLmgKICsrKyBi L3NlcnZjb25mLmgKLUBAIC0xNTEsOSArMTUxLDEyIEBAIHR5cGVkZWYgc3RydWN0IHsKLSAJaW50 ICAgICBrZXJiZXJvc19nZXRfYWZzX3Rva2VuOwkJLyogSWYgdHJ1ZSwgdHJ5IHRvIGdldCBBRlMg dG9rZW4gaWYKLSAJCQkJCQkgKiBhdXRoZW50aWNhdGVkIHdpdGggS2VyYmVyb3MuICovCi0gCWlu dCAgICAgZ3NzX2F1dGhlbnRpY2F0aW9uOwkvKiBJZiB0cnVlLCBwZXJtaXQgR1NTQVBJIGF1dGhl bnRpY2F0aW9uICovCi0rCWludCAgICAgZ3NzX2tleWV4OwkJLyogSWYgdHJ1ZSwgcGVybWl0IEdT U0FQSSBrZXkgZXhjaGFuZ2UgKi8KLSAJaW50ICAgICBnc3NfY2xlYW51cF9jcmVkczsJLyogSWYg dHJ1ZSwgZGVzdHJveSBjcmVkIGNhY2hlIG9uIGxvZ291dCAqLwotIAlpbnQgICAgIGdzc19kZWxl Z19jcmVkczsJLyogSWYgdHJ1ZSwgYWNjZXB0IGRlbGVnYXRlZCBHU1MgY3JlZGVudGlhbHMgKi8K LSAJaW50ICAgICBnc3Nfc3RyaWN0X2FjY2VwdG9yOwkvKiBJZiB0cnVlLCByZXN0cmljdCB0aGUg R1NTQVBJIGFjY2VwdG9yIG5hbWUgKi8KLSsJaW50IAlnc3Nfc3RvcmVfcmVrZXk7Ci0rCWNoYXIg ICAqZ3NzX2tleF9hbGdvcml0aG1zOwkvKiBHU1NBUEkga2V4IG1ldGhvZHMgdG8gYmUgb2ZmZXJl ZCBieSBjbGllbnQuICovCi0gCWludCAgICAgcGFzc3dvcmRfYXV0aGVudGljYXRpb247CS8qIElm IHRydWUsIHBlcm1pdCBwYXNzd29yZAotIAkJCQkJCSAqIGF1dGhlbnRpY2F0aW9uLiAqLwotIAlp bnQgICAgIGtiZF9pbnRlcmFjdGl2ZV9hdXRoZW50aWNhdGlvbjsJLyogSWYgdHJ1ZSwgcGVybWl0 ICovCitAQCAtMzE2LDE0ICszMTYsMjEgQEAgU1NIQ09ORl9VTlNVUFBPUlRFRF9JTlQoa2VyYmVy b3NfZ2V0X2Fmc190b2tlbiwgS2VyYmVyb3NHZXRBRlNUb2tlbiwgU1NIQ0ZHX0dMT0IKKyAjZGVm aW5lIFNTSERfQ09ORklHX0VOVFJJRVNfR1NTIFwKKyBTU0hDT05GX0lOVEZMQUcoZ3NzX2F1dGhl bnRpY2F0aW9uLCBHU1NBUElBdXRoZW50aWNhdGlvbiwgU1NIQ0ZHX0FMTCwgMCwgU1NIQ0ZHX0NP UFlfTUFUQ0gpIFwKKyBTU0hDT05GX0lOVEZMQUcoZ3NzX2NsZWFudXBfY3JlZHMsIEdTU0FQSUNs ZWFudXBDcmVkZW50aWFscywgU1NIQ0ZHX0dMT0JBTCwgMSwgU1NIQ0ZHX0NPUFlfTk9ORSkgXAor K1NTSENPTkZfQUxJQVMoR1NTQVBJQ2xlYW51cENyZWRzLCBHU1NBUElDbGVhbnVwQ3JlZGVudGlh bHMsIFNTSENGR19HTE9CQUwpIFwKKyBTU0hDT05GX0lOVEZMQUcoZ3NzX2RlbGVnX2NyZWRzLCBH U1NBUElEZWxlZ2F0ZUNyZWRlbnRpYWxzLCBTU0hDRkdfR0xPQkFMLCAxLCBTU0hDRkdfQ09QWV9O T05FKSBcCistU1NIQ09ORl9JTlRGTEFHKGdzc19zdHJpY3RfYWNjZXB0b3IsIEdTU0FQSVN0cmlj dEFjY2VwdG9yQ2hlY2ssIFNTSENGR19HTE9CQUwsIDEsIFNTSENGR19DT1BZX05PTkUpCisrU1NI Q09ORl9JTlRGTEFHKGdzc19zdHJpY3RfYWNjZXB0b3IsIEdTU0FQSVN0cmljdEFjY2VwdG9yQ2hl Y2ssIFNTSENGR19HTE9CQUwsIDEsIFNTSENGR19DT1BZX05PTkUpIFwKKytTU0hDT05GX0lOVEZM QUcoZ3NzX2tleWV4LCBHU1NBUElLZXlFeGNoYW5nZSwgU1NIQ0ZHX0dMT0JBTCwgMCwgU1NIQ0ZH X0NPUFlfTk9ORSkgXAorK1NTSENPTkZfSU5URkxBRyhnc3Nfc3RvcmVfcmVrZXksIEdTU0FQSVN0 b3JlQ3JlZGVudGlhbHNPblJla2V5LCBTU0hDRkdfR0xPQkFMLCAwLCBTU0hDRkdfQ09QWV9OT05F KSBcCisrU1NIQ09ORl9TVFJJTkcoZ3NzX2tleF9hbGdvcml0aG1zLCBHU1NBUElLZXhBbGdvcml0 aG1zLCBTU0hDRkdfR0xPQkFMLCBTU0hDRkdfQ09QWV9OT05FKQorICNlbHNlIC8qIEdTU0FQSSAq LworICNkZWZpbmUgU1NIRF9DT05GSUdfRU5UUklFU19HU1MgXAorIFNTSENPTkZfVU5TVVBQT1JU RURfSU5UKGdzc19hdXRoZW50aWNhdGlvbiwgR1NTQVBJQXV0aGVudGljYXRpb24sIFNTSENGR19B TEwpIFwKKyBTU0hDT05GX1VOU1VQUE9SVEVEX0lOVChnc3NfY2xlYW51cF9jcmVkcywgR1NTQVBJ Q2xlYW51cENyZWRlbnRpYWxzLCBTU0hDRkdfR0xPQkFMKSBcCisgU1NIQ09ORl9VTlNVUFBPUlRF RF9JTlQoZ3NzX2RlbGVnX2NyZWRzLCBHU1NBUElEZWxlZ2F0ZUNyZWRlbnRpYWxzLCBTU0hDRkdf R0xPQkFMKSBcCistU1NIQ09ORl9VTlNVUFBPUlRFRF9JTlQoZ3NzX3N0cmljdF9hY2NlcHRvciwg R1NTQVBJU3RyaWN0QWNjZXB0b3JDaGVjaywgU1NIQ0ZHX0dMT0JBTCkKKytTU0hDT05GX1VOU1VQ UE9SVEVEX0lOVChnc3Nfc3RyaWN0X2FjY2VwdG9yLCBHU1NBUElTdHJpY3RBY2NlcHRvckNoZWNr LCBTU0hDRkdfR0xPQkFMKSBcCisrU1NIQ09ORl9VTlNVUFBPUlRFRF9JTlQoZ3NzX2tleWV4LCBH U1NBUElLZXlFeGNoYW5nZSwgU1NIQ0ZHX0dMT0JBTCkgXAorK1NTSENPTkZfVU5TVVBQT1JURURf SU5UKGdzc19zdG9yZV9yZWtleSwgR1NTQVBJU3RvcmVDcmVkZW50aWFsc09uUmVrZXksIFNTSENG R19HTE9CQUwpIFwKKytTU0hDT05GX1VOU1VQUE9SVEVEX1NUUklORyhnc3Nfa2V4X2FsZ29yaXRo bXMsIEdTU0FQSUtleEFsZ29yaXRobXMsIFNTSENGR19HTE9CQUwpCisgI2VuZGlmIC8qIEdTU0FQ SSAqLworIAorICNkZWZpbmUgU1NIRF9DT05GSUdfRU5UUklFUyBcCiBkaWZmIC0tZ2l0IGEvc2Vz c2lvbi5jIGIvc2Vzc2lvbi5jCi1pbmRleCA5M2RlMzVkN2MuLmYxNGQ1ZmFiOCAxMDA2NDQKK2lu ZGV4IGZjOWM5ZDZmOC4uN2I3NmYxZjcxIDEwMDY0NAogLS0tIGEvc2Vzc2lvbi5jCiArKysgYi9z ZXNzaW9uLmMKLUBAIC0yNjM4LDEzICsyNjM4LDE5IEBAIGRvX2NsZWFudXAoc3RydWN0IHNzaCAq c3NoLCBBdXRoY3R4dCAqYXV0aGN0eHQpCitAQCAtMjY0MiwxMyArMjY0MiwxOSBAQCBkb19jbGVh bnVwKHN0cnVjdCBzc2ggKnNzaCwgQXV0aGN0eHQgKmF1dGhjdHh0KQogIAogICNpZmRlZiBLUkI1 CiAgCWlmIChvcHRpb25zLmtlcmJlcm9zX3RpY2tldF9jbGVhbnVwICYmCkBAIC0zNjg0LDcgKzM2 NTMsNyBAQCBpbmRleCA3YjE0ZTc0YTguLjhlYzQ1MTkyNiAxMDA2NDQKICAKICAjZW5kaWYgLyog X1NTSF9HU1NfSCAqLwogZGlmZiAtLWdpdCBhL3NzaC4xIGIvc3NoLjEKLWluZGV4IGMyYzhmNTBm MS4uYjVkMGExZDA5IDEwMDY0NAoraW5kZXggMjhlYWVhYzJmLi4zYWFmM2ZiMTYgMTAwNjQ0CiAt LS0gYS9zc2guMQogKysrIGIvc3NoLjEKIEBAIC01NDMsOSArNTQzLDE1IEBAIEZvciBmdWxsIGRl dGFpbHMgb2YgdGhlIG9wdGlvbnMgbGlzdGVkIGJlbG93LCBhbmQgdGhlaXIgcG9zc2libGUgdmFs dWVzLCBzZWUKQEAgLTM3MDEsOSArMzY3MCw5IEBAIGluZGV4IGMyYzhmNTBmMS4uYjVkMGExZDA5 IDEwMDY0NAogKy5JdCBHU1NBUElTZXJ2ZXJJZGVudGl0eQogKy5JdCBHU1NBUElUcnVzdERucwog IC5JdCBIYXNoS25vd25Ib3N0cwotIC5JdCBIb3N0CiAgLkl0IEhvc3RLZXlBbGdvcml0aG1zCi1A QCAtNjQwLDYgKzY0Niw4IEBAIGZsYWcpLAorIC5JdCBIb3N0S2V5QWxpYXMKK0BAIC02NDEsNiAr NjQ3LDggQEAgZmxhZyksCiAgKHN1cHBvcnRlZCBtZXNzYWdlIGludGVncml0eSBjb2RlcyksCiAg LkFyIGtleAogIChrZXkgZXhjaGFuZ2UgYWxnb3JpdGhtcyksCkBAIC0zNzEzLDEwICszNjgyLDEw IEBAIGluZGV4IGMyYzhmNTBmMS4uYjVkMGExZDA5IDEwMDY0NAogIChrZXkgdHlwZXMpLAogIC5B ciBrZXktY2Etc2lnbgogZGlmZiAtLWdpdCBhL3NzaC5jIGIvc3NoLmMKLWluZGV4IDUzMWYyOGVi Mi4uYmMzYmU4ZjhlIDEwMDY0NAoraW5kZXggN2M2NDRjMjNjLi4wN2JiMWUzOGYgMTAwNjQ0CiAt LS0gYS9zc2guYwogKysrIGIvc3NoLmMKLUBAIC04MDUsNiArODA1LDkgQEAgbWFpbihpbnQgYWMs IGNoYXIgKiphdikKK0BAIC03ODYsNiArNzg2LDkgQEAgbWFpbihpbnQgYWMsIGNoYXIgKiphdikK ICAJCQllbHNlIGlmIChzdHJjbXAob3B0YXJnLCAia2V4IikgPT0gMCB8fAogIAkJCSAgICBzdHJj YXNlY21wKG9wdGFyZywgIktleEFsZ29yaXRobXMiKSA9PSAwKQogIAkJCQljcCA9IGtleF9hbGdf bGlzdCgnXG4nKTsKQEAgLTM3MjYsNyArMzY5NSw3IEBAIGluZGV4IDUzMWYyOGViMi4uYmMzYmU4 ZjhlIDEwMDY0NAogIAkJCWVsc2UgaWYgKHN0cmNtcChvcHRhcmcsICJrZXkiKSA9PSAwKQogIAkJ CQljcCA9IHNzaGtleV9hbGdfbGlzdCgwLCAwLCAwLCAnXG4nKTsKICAJCQllbHNlIGlmIChzdHJj bXAob3B0YXJnLCAia2V5LWNlcnQiKSA9PSAwKQotQEAgLTgzNSw4ICs4MzcsOCBAQCBtYWluKGlu dCBhYywgY2hhciAqKmF2KQorQEAgLTgxNiw4ICs4MTksOCBAQCBtYWluKGludCBhYywgY2hhciAq KmF2KQogIAkJCX0gZWxzZSBpZiAoc3RyY21wKG9wdGFyZywgImhlbHAiKSA9PSAwKSB7CiAgCQkJ CWNwID0geHN0cmR1cCgKICAJCQkJICAgICJjaXBoZXJcbmNpcGhlci1hdXRoXG5jb21wcmVzc2lv blxua2V4XG4iCkBAIC0zNzUxLDEwICszNzIwLDEwIEBAIGluZGV4IGQ5MzI0Yzk1Ny4uY2E3YzU4 NTNiIDEwMDY0NAogICMgICBDaGVja0hvc3RJUCBubwogICMgICBBZGRyZXNzRmFtaWx5IGFueQog ZGlmZiAtLWdpdCBhL3NzaF9jb25maWcuNSBiL3NzaF9jb25maWcuNQotaW5kZXggYjQ1OWIwNDQ5 Li45ZTUxNjM3NzQgMTAwNjQ0CitpbmRleCA0YWMwZDNkNDUuLjBiNWI4YmVhYiAxMDA2NDQKIC0t LSBhL3NzaF9jb25maWcuNQogKysrIGIvc3NoX2NvbmZpZy41Ci1AQCAtOTc2LDEwICs5NzYsNzEg QEAgVGhlIGRlZmF1bHQgaXMKK0BAIC0xMDEzLDEwICsxMDEzLDcxIEBAIFRoZSBkZWZhdWx0IGlz CiAgU3BlY2lmaWVzIHdoZXRoZXIgdXNlciBhdXRoZW50aWNhdGlvbiBiYXNlZCBvbiBHU1NBUEkg aXMgYWxsb3dlZC4KICBUaGUgZGVmYXVsdCBpcwogIC5DbSBubyAuCkBAIC0zODI3LDEwICszNzk2 LDEwIEBAIGluZGV4IGI0NTliMDQ0OS4uOWU1MTYzNzc0IDEwMDY0NAogIEluZGljYXRlcyB0aGF0 CiAgLlhyIHNzaCAxCiBkaWZmIC0tZ2l0IGEvc3NoY29ubmVjdDIuYyBiL3NzaGNvbm5lY3QyLmMK LWluZGV4IDQ3OGE5YTUyZi4uMzFiYmMwZWQ4IDEwMDY0NAoraW5kZXggZDE1NTVlZTk3Li5lMWQ0 Mzg4YWQgMTAwNjQ0CiAtLS0gYS9zc2hjb25uZWN0Mi5jCiArKysgYi9zc2hjb25uZWN0Mi5jCi1A QCAtMjIzLDYgKzIyMywxMSBAQCBzc2hfa2V4MihzdHJ1Y3Qgc3NoICpzc2gsIGNoYXIgKmhvc3Qs IHN0cnVjdCBzb2NrYWRkciAqaG9zdGFkZHIsIHVfc2hvcnQgcG9ydCwKK0BAIC0yMjMsNiArMjIz LDExIEBAIHNzaF9rZXgyKHN0cnVjdCBzc2ggKnNzaCwgY2hhciAqaG9zdCwgc3RydWN0IHNvY2th ZGRyX3N0b3JhZ2UgKmhvc3RhZGRyLAogIAljaGFyICphbGxfa2V5LCAqaGthbGdzID0gTlVMTDsK ICAJaW50IHIsIHVzZV9rbm93bl9ob3N0c19vcmRlciA9IDA7CiAgCkBAIC0zODM5LDEwICszODA4 LDEwIEBAIGluZGV4IDQ3OGE5YTUyZi4uMzFiYmMwZWQ4IDEwMDY0NAogKwljaGFyICpnc3NfaG9z dCA9IE5VTEw7CiArI2VuZGlmCiArCi0gCXh4eF9ob3N0ID0gaG9zdDsKLSAJeHh4X2hvc3RhZGRy ID0gaG9zdGFkZHI7Ci0gCXh4eF9jb25uX2luZm8gPSBjaW5mbzsKLUBAIC0yNTYsNiArMjYxLDQy IEBAIHNzaF9rZXgyKHN0cnVjdCBzc2ggKnNzaCwgY2hhciAqaG9zdCwgc3RydWN0IHNvY2thZGRy ICpob3N0YWRkciwgdV9zaG9ydCBwb3J0LAorIAl4eHhfaG9zdCA9IHhzdHJkdXAoaG9zdCk7Cisg CXh4eF9ob3N0YWRkciA9ICpob3N0YWRkcjsKKyAJeHh4X2Nvbm5faW5mbyA9IHNzaF9jb25uX2lu Zm9fZHVwKGNpbmZvKTsKK0BAIC0yNTgsNiArMjYzLDQyIEBAIHNzaF9rZXgyKHN0cnVjdCBzc2gg KnNzaCwgY2hhciAqaG9zdCwgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKmhvc3RhZGRyLAogIAkg ICAgY29tcHJlc3Npb25fYWxnX2xpc3Qob3B0aW9ucy5jb21wcmVzc2lvbiksCiAgCSAgICBoa2Fs Z3MgPyBoa2FsZ3MgOiBvcHRpb25zLmhvc3RrZXlhbGdvcml0aG1zKTsKICAKQEAgLTM4ODUsNyAr Mzg1NCw3IEBAIGluZGV4IDQ3OGE5YTUyZi4uMzFiYmMwZWQ4IDEwMDY0NAogIAlmcmVlKGhrYWxn cyk7CiAgCiAgCS8qIHN0YXJ0IGtleSBleGNoYW5nZSAqLwotQEAgLTI3MiwxNSArMzEzLDQ1IEBA IHNzaF9rZXgyKHN0cnVjdCBzc2ggKnNzaCwgY2hhciAqaG9zdCwgc3RydWN0IHNvY2thZGRyICpo b3N0YWRkciwgdV9zaG9ydCBwb3J0LAorQEAgLTI3NCwxNSArMzE1LDQ1IEBAIHNzaF9rZXgyKHN0 cnVjdCBzc2ggKnNzaCwgY2hhciAqaG9zdCwgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKmhvc3Rh ZGRyLAogICMgaWZkZWYgT1BFTlNTTF9IQVNfRUNDCiAgCXNzaC0+a2V4LT5rZXhbS0VYX0VDREhf U0hBMl0gPSBrZXhfZ2VuX2NsaWVudDsKICAjIGVuZGlmCkBAIC0zOTMyLDcgKzM5MDEsNyBAQCBp bmRleCA0NzhhOWE1MmYuLjMxYmJjMGVkOCAxMDA2NDQKICAjaWZkZWYgREVCVUdfS0VYREgKICAJ Lyogc2VuZCAxc3QgZW5jcnlwdGVkL21hY2VkL2NvbXByZXNzZWQgbWVzc2FnZSAqLwogIAlpZiAo KHIgPSBzc2hwa3Rfc3RhcnQoc3NoLCBTU0gyX01TR19JR05PUkUpKSAhPSAwIHx8Ci1AQCAtMzcw LDYgKzQ0MSw3IEBAIHN0YXRpYyBpbnQgaW5wdXRfZ3NzYXBpX3Jlc3BvbnNlKGludCB0eXBlLCB1 aW50MzJfdCwgc3RydWN0IHNzaCAqKTsKK0BAIC0zNzIsNiArNDQzLDcgQEAgc3RhdGljIGludCBp bnB1dF9nc3NhcGlfcmVzcG9uc2UoaW50IHR5cGUsIHVpbnQzMl90LCBzdHJ1Y3Qgc3NoICopOwog IHN0YXRpYyBpbnQgaW5wdXRfZ3NzYXBpX3Rva2VuKGludCB0eXBlLCB1aW50MzJfdCwgc3RydWN0 IHNzaCAqKTsKICBzdGF0aWMgaW50IGlucHV0X2dzc2FwaV9lcnJvcihpbnQsIHVpbnQzMl90LCBz dHJ1Y3Qgc3NoICopOwogIHN0YXRpYyBpbnQgaW5wdXRfZ3NzYXBpX2VycnRvayhpbnQsIHVpbnQz Ml90LCBzdHJ1Y3Qgc3NoICopOwpAQCAtMzk0MCw3ICszOTA5LDcgQEAgaW5kZXggNDc4YTlhNTJm Li4zMWJiYzBlZDggMTAwNjQ0CiAgI2VuZGlmCiAgCiAgdm9pZAl1c2VyYXV0aChzdHJ1Y3Qgc3No ICosIGNoYXIgKik7Ci1AQCAtMzg2LDYgKzQ1OCwxMSBAQCBzdGF0aWMgY2hhciAqYXV0aG1ldGhv ZHNfZ2V0KHZvaWQpOworQEAgLTM4OCw2ICs0NjAsMTEgQEAgc3RhdGljIGNoYXIgKmF1dGhtZXRo b2RzX2dldCh2b2lkKTsKICAKICBBdXRobWV0aG9kIGF1dGhtZXRob2RzW10gPSB7CiAgI2lmZGVm IEdTU0FQSQpAQCAtMzk1Miw3ICszOTIxLDcgQEAgaW5kZXggNDc4YTlhNTJmLi4zMWJiYzBlZDgg MTAwNjQ0CiAgCXsiZ3NzYXBpLXdpdGgtbWljIiwKICAJCXVzZXJhdXRoX2dzc2FwaSwKICAJCXVz ZXJhdXRoX2dzc2FwaV9jbGVhbnVwLAotQEAgLTc2MCwxMiArODM3LDMyIEBAIHVzZXJhdXRoX2dz c2FwaShzdHJ1Y3Qgc3NoICpzc2gpCitAQCAtNzYyLDEyICs4MzksMzIgQEAgdXNlcmF1dGhfZ3Nz YXBpKHN0cnVjdCBzc2ggKnNzaCkKICAJT01fdWludDMyIG1pbjsKICAJaW50IHIsIG9rID0gMDsK ICAJZ3NzX09JRCBtZWNoID0gTlVMTDsKQEAgLTM5ODYsNyArMzk1NSw3IEBAIGluZGV4IDQ3OGE5 YTUyZi4uMzFiYmMwZWQ4IDEwMDY0NAogIAogIAkvKiBDaGVjayB0byBzZWUgd2hldGhlciB0aGUg bWVjaGFuaXNtIGlzIHVzYWJsZSBiZWZvcmUgd2Ugb2ZmZXIgaXQgKi8KICAJd2hpbGUgKGF1dGhj dHh0LT5tZWNoX3RyaWVkIDwgYXV0aGN0eHQtPmdzc19zdXBwb3J0ZWRfbWVjaHMtPmNvdW50ICYm Ci1AQCAtNzc0LDEzICs4NzEsMTUgQEAgdXNlcmF1dGhfZ3NzYXBpKHN0cnVjdCBzc2ggKnNzaCkK K0BAIC03NzYsMTMgKzg3MywxNSBAQCB1c2VyYXV0aF9nc3NhcGkoc3RydWN0IHNzaCAqc3NoKQog IAkJICAgIGVsZW1lbnRzW2F1dGhjdHh0LT5tZWNoX3RyaWVkXTsKICAJCS8qIE15IERFUiBlbmNv ZGluZyByZXF1aXJlcyBsZW5ndGg8MTI4ICovCiAgCQlpZiAobWVjaC0+bGVuZ3RoIDwgMTI4ICYm IHNzaF9nc3NhcGlfY2hlY2tfbWVjaGFuaXNtKCZnc3NjdHh0LApAQCAtNDAwMyw3ICszOTcyLDcg QEAgaW5kZXggNDc4YTlhNTJmLi4zMWJiYzBlZDggMTAwNjQ0CiAgCWlmICghb2sgfHwgbWVjaCA9 PSBOVUxMKQogIAkJcmV0dXJuIDA7CiAgCi1AQCAtMTAxNCw2ICsxMTEzLDU1IEBAIGlucHV0X2dz c2FwaV9lcnJvcihpbnQgdHlwZSwgdWludDMyX3QgcGxlbiwgc3RydWN0IHNzaCAqc3NoKQorQEAg LTEwMTYsNiArMTExNSw1NSBAQCBpbnB1dF9nc3NhcGlfZXJyb3IoaW50IHR5cGUsIHVpbnQzMl90 IHBsZW4sIHN0cnVjdCBzc2ggKnNzaCkKICAJZnJlZShsYW5nKTsKICAJcmV0dXJuIHI7CiAgfQpA QCAtNDA2MCwxMCArNDAyOSwxMCBAQCBpbmRleCA0NzhhOWE1MmYuLjMxYmJjMGVkOCAxMDA2NDQK ICAKICBzdGF0aWMgaW50CiBkaWZmIC0tZ2l0IGEvc3NoZC1hdXRoLmMgYi9zc2hkLWF1dGguYwot aW5kZXggNzNhY2IwZGJlLi44ODVjZDgyODEgMTAwNjQ0CitpbmRleCA5OTM1OWM3MTguLjZhNWNk MGM1MiAxMDA2NDQKIC0tLSBhL3NzaGQtYXV0aC5jCiArKysgYi9zc2hkLWF1dGguYwotQEAgLTY5 MSw3ICs2OTEsNyBAQCBtYWluKGludCBhYywgY2hhciAqKmF2KQorQEAgLTY2NSw3ICs2NjUsNyBA QCBtYWluKGludCBhYywgY2hhciAqKmF2KQogIAkJCWJyZWFrOwogIAkJfQogIAl9CkBAIC00MDcy LDcgKzQwNDEsNyBAQCBpbmRleCA3M2FjYjBkYmUuLjg4NWNkODI4MSAxMDA2NDQKICAJCWZhdGFs KCJpbnRlcm5hbCBlcnJvcjogcmVjZWl2ZWQgbm8gaG9zdGtleXMiKTsKICAKICAJLyogRW5zdXJl IHRoYXQgdW1hc2sgZGlzYWxsb3dzIGF0IGxlYXN0IGdyb3VwIGFuZCB3b3JsZCB3cml0ZSAqLwot QEAgLTgxMSw2ICs4MTEsNDggQEAgZG9fc3NoMl9rZXgoc3RydWN0IHNzaCAqc3NoKQorQEAgLTc4 NSw2ICs3ODUsNDggQEAgZG9fc3NoMl9rZXgoc3RydWN0IHNzaCAqc3NoKQogIAogIAlmcmVlKGhr YWxncyk7CiAgCkBAIC00MTIxLDcgKzQwOTAsNyBAQCBpbmRleCA3M2FjYjBkYmUuLjg4NWNkODI4 MSAxMDA2NDQKICAJaWYgKChyID0ga2V4X2V4Y2hhbmdlX2lkZW50aWZpY2F0aW9uKHNzaCwgLTEs CiAgCSAgICBvcHRpb25zLnZlcnNpb25fYWRkZW5kdW0pKSAhPSAwKQogIAkJc3NocGt0X2ZhdGFs KHNzaCwgciwgImJhbm5lciBleGNoYW5nZSIpOwotQEAgLTgzNiw2ICs4NzgsMTcgQEAgZG9fc3No Ml9rZXgoc3RydWN0IHNzaCAqc3NoKQorQEAgLTgxMCw2ICs4NTIsMTcgQEAgZG9fc3NoMl9rZXgo c3RydWN0IHNzaCAqc3NoKQogICMgaWZkZWYgT1BFTlNTTF9IQVNfRUNDCiAgCWtleC0+a2V4W0tF WF9FQ0RIX1NIQTJdID0ga2V4X2dlbl9zZXJ2ZXI7CiAgIyBlbmRpZiAvKiBPUEVOU1NMX0hBU19F Q0MgKi8KQEAgLTQxNDAsMTAgKzQxMDksMTAgQEAgaW5kZXggNzNhY2IwZGJlLi44ODVjZDgyODEg MTAwNjQ0CiAgCWtleC0+a2V4W0tFWF9DMjU1MTlfU0hBMjU2XSA9IGtleF9nZW5fc2VydmVyOwog IAlrZXgtPmtleFtLRVhfS0VNX1NOVFJVUDc2MVgyNTUxOV9TSEE1MTJdID0ga2V4X2dlbl9zZXJ2 ZXI7CiBkaWZmIC0tZ2l0IGEvc3NoZC1zZXNzaW9uLmMgYi9zc2hkLXNlc3Npb24uYwotaW5kZXgg Njk3NmQ2ODcyLi5mODQ3ZmMwYTkgMTAwNjQ0CitpbmRleCA4YzY2NTIxNTIuLjM1MjIzNzQ3NCAx MDA2NDQKIC0tLSBhL3NzaGQtc2Vzc2lvbi5jCiArKysgYi9zc2hkLXNlc3Npb24uYwotQEAgLTU2 NCw4ICs1NjQsOCBAQCBub3RpZnlfaG9zdGtleXMoc3RydWN0IHNzaCAqc3NoKQorQEAgLTU2NSw4 ICs1NjUsOCBAQCBub3RpZnlfaG9zdGtleXMoc3RydWN0IHNzaCAqc3NoKQogIAl9CiAgCWRlYnVn M19mKCJzZW50ICV1IGhvc3RrZXlzIiwgbmtleXMpOwogIAlpZiAobmtleXMgPT0gMCkKQEAgLTQx NTQsNyArNDEyMyw3IEBAIGluZGV4IDY5NzZkNjg3Mi4uZjg0N2ZjMGE5IDEwMDY0NAogIAkJc3No cGt0X2ZhdGFsKHNzaCwgciwgIiVzOiBzZW5kIiwgX19mdW5jX18pOwogIAlzc2hidWZfZnJlZShi dWYpOwogIH0KLUBAIC0xMTA3LDggKzExMDcsOSBAQCBtYWluKGludCBhYywgY2hhciAqKmF2KQor QEAgLTExMDgsOCArMTEwOCw5IEBAIG1haW4oaW50IGFjLCBjaGFyICoqYXYpCiAgCQkJYnJlYWs7 CiAgCQl9CiAgCX0KQEAgLTQxNjcsMTAgKzQxMzYsMTAgQEAgaW5kZXggNjk3NmQ2ODcyLi5mODQ3 ZmMwYTkgMTAwNjQ0CiAgCS8qIEVuc3VyZSB0aGF0IHVtYXNrIGRpc2FsbG93cyBhdCBsZWFzdCBn cm91cCBhbmQgd29ybGQgd3JpdGUgKi8KICAJbmV3X3VtYXNrID0gdW1hc2soMDA3NykgfCAwMDIy OwogZGlmZiAtLWdpdCBhL3NzaGQuYyBiL3NzaGQuYwotaW5kZXggNzRkMjVmYzczLi41NTI0MzU4 MTcgMTAwNjQ0CitpbmRleCA3ZDE0NjZkOTcuLmY2NmUxZjg2ZiAxMDA2NDQKIC0tLSBhL3NzaGQu YwogKysrIGIvc3NoZC5jCi1AQCAtMTY2Nyw3ICsxNjY3LDggQEAgbWFpbihpbnQgYWMsIGNoYXIg KiphdikKK0BAIC0xNjY5LDcgKzE2NjksOCBAQCBtYWluKGludCBhYywgY2hhciAqKmF2KQogIAkJ ZnJlZShmcCk7CiAgCX0KICAJYWNjdW11bGF0ZV9ob3N0X3RpbWluZ19zZWNyZXQoY2ZnLCBOVUxM KTsKQEAgLTQxOTQsMTAgKzQxNjMsMTAgQEAgaW5kZXggNDhhZjYzMjFiLi44ZGI5ZjBmYjEgMTAw NjQ0CiAgIyBTZXQgdGhpcyB0byAneWVzJyB0byBlbmFibGUgUEFNIGF1dGhlbnRpY2F0aW9uLCBh Y2NvdW50IHByb2Nlc3NpbmcsCiAgIyBhbmQgc2Vzc2lvbiBwcm9jZXNzaW5nLiBJZiB0aGlzIGlz IGVuYWJsZWQsIFBBTSBhdXRoZW50aWNhdGlvbiB3aWxsCiBkaWZmIC0tZ2l0IGEvc3NoZF9jb25m aWcuNSBiL3NzaGRfY29uZmlnLjUKLWluZGV4IGNhNDI1YThkYS4uNTkyOGI2Y2QyIDEwMDY0NAor aW5kZXggMzg5NmQyMWIwLi5iNzE5ZmM5MTUgMTAwNjQ0CiAtLS0gYS9zc2hkX2NvbmZpZy41CiAr KysgYi9zc2hkX2NvbmZpZy41Ci1AQCAtNzUyLDkgKzc1MiwxOSBAQCBvbiBsb2dvdXQuCitAQCAt NzU5LDkgKzc1OSwxOSBAQCBvbiBsb2dvdXQuCiAgVGhlIGRlZmF1bHQgaXMKICAuQ20geWVzIC4K ICAuSXQgQ20gR1NTQVBJRGVsZWdhdGVDcmVkZW50aWFscwpAQCAtNDIxOSwxMCArNDE4OCwxMCBA QCBpbmRleCBjYTQyNWE4ZGEuLjU5MjhiNmNkMiAxMDA2NDQKICAuSXQgQ20gR1NTQVBJU3RyaWN0 QWNjZXB0b3JDaGVjawogIERldGVybWluZXMgd2hldGhlciB0byBiZSBzdHJpY3QgYWJvdXQgdGhl IGlkZW50aXR5IG9mIHRoZSBHU1NBUEkgYWNjZXB0b3IKICBhIGNsaWVudCBhdXRoZW50aWNhdGVz IGFnYWluc3QuCi1AQCAtNzY5LDYgKzc3OSwzNSBAQCBtYWNoaW5lJ3MgZGVmYXVsdCBzdG9yZS4K LSBUaGlzIGZhY2lsaXR5IGlzIHByb3ZpZGVkIHRvIGFzc2lzdCB3aXRoIG9wZXJhdGlvbiBvbiBt dWx0aSBob21lZCBtYWNoaW5lcy4KK0BAIC03NzcsNiArNzg3LDM1IEBAIFRoaXMgZmFjaWxpdHkg aXMgcHJvdmlkZWQgdG8gYXNzaXN0IHdpdGggb3BlcmF0aW9uIG9uIG11bHRpIGhvbWVkIG1hY2hp bmVzLgogIFRoZSBkZWZhdWx0IGlzCiAgLkNtIHllcyAuCisgVGhpcyBvcHRpb24gbWF5IG5vdCBi ZSBlZmZlY3RpdmUgaW4gV2luZG93cyBBY3RpdmUgRGlyZWN0b3J5IGVudmlyb25tZW50cy4KICsu SXQgQ20gR1NTQVBJU3RvcmVDcmVkZW50aWFsc09uUmVrZXkKICtDb250cm9scyB3aGV0aGVyIHRo ZSB1c2VyJ3MgR1NTQVBJIGNyZWRlbnRpYWxzIHNob3VsZCBiZSB1cGRhdGVkIGZvbGxvd2luZyBh CiArc3VjY2Vzc2Z1bCBjb25uZWN0aW9uIHJla2V5aW5nLiBUaGlzIG9wdGlvbiBjYW4gYmUgdXNl ZCB0byBhY2NlcHRlZCByZW5ld2VkCkBAIC00MjU2LDEwICs0MjI1LDEwIEBAIGluZGV4IGNhNDI1 YThkYS4uNTkyOGI2Y2QyIDEwMDY0NAogIFNwZWNpZmllcyB0aGUgc2lnbmF0dXJlIGFsZ29yaXRo bXMgdGhhdCB3aWxsIGJlIGFjY2VwdGVkIGZvciBob3N0YmFzZWQKICBhdXRoZW50aWNhdGlvbiBh cyBhIGxpc3Qgb2YgY29tbWEtc2VwYXJhdGVkIHBhdHRlcm5zLgogZGlmZiAtLWdpdCBhL3NzaGtl eS5jIGIvc3Noa2V5LmMKLWluZGV4IDU5ZDE0NTMxYy4uY2NjMzVkYmY1IDEwMDY0NAoraW5kZXgg N2YzODlkYWE5Li42YmI4ZmVhYTkgMTAwNjQ0CiAtLS0gYS9zc2hrZXkuYwogKysrIGIvc3Noa2V5 LmMKLUBAIC0xMTUsNiArMTE1LDc1IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3Noa2V5X2ltcGwg c3Noa2V5X3JzYV9zaGE1MTJfaW1wbDsKK0BAIC0xMTksNiArMTE5LDc1IEBAIGV4dGVybiBjb25z dCBzdHJ1Y3Qgc3Noa2V5X2ltcGwgc3Noa2V5X3JzYV9zaGE1MTJfaW1wbDsKICBleHRlcm4gY29u c3Qgc3RydWN0IHNzaGtleV9pbXBsIHNzaGtleV9yc2Ffc2hhNTEyX2NlcnRfaW1wbDsKICAjZW5k aWYgLyogV0lUSF9PUEVOU1NMICovCiAgCkBAIC00MzM1LDcgKzQzMDQsNyBAQCBpbmRleCA1OWQx NDUzMWMuLmNjYzM1ZGJmNSAxMDA2NDQKICBjb25zdCBzdHJ1Y3Qgc3Noa2V5X2ltcGwgKiBjb25z dCBrZXlpbXBsc1tdID0gewogIAkmc3Noa2V5X2VkMjU1MTlfaW1wbCwKICAJJnNzaGtleV9lZDI1 NTE5X2NlcnRfaW1wbCwKLUBAIC0xNDYsNiArMjE1LDcgQEAgY29uc3Qgc3RydWN0IHNzaGtleV9p bXBsICogY29uc3Qga2V5aW1wbHNbXSA9IHsKK0BAIC0xNTQsNiArMjIzLDcgQEAgY29uc3Qgc3Ry dWN0IHNzaGtleV9pbXBsICogY29uc3Qga2V5aW1wbHNbXSA9IHsKICAJJnNzaGtleV9yc2Ffc2hh NTEyX2ltcGwsCiAgCSZzc2hrZXlfcnNhX3NoYTUxMl9jZXJ0X2ltcGwsCiAgI2VuZGlmIC8qIFdJ VEhfT1BFTlNTTCAqLwpAQCAtNDM0Myw3ICs0MzEyLDcgQEAgaW5kZXggNTlkMTQ1MzFjLi5jY2Mz NWRiZjUgMTAwNjQ0CiAgCU5VTEwKICB9OwogIAotQEAgLTMyNyw3ICszOTcsNyBAQCBzc2hrZXlf YWxnX2xpc3QoaW50IGNlcnRzX29ubHksIGludCBwbGFpbl9vbmx5LCBpbnQgaW5jbHVkZV9zaWdv bmx5LCBjaGFyIHNlcCkKK0BAIC0zMzUsNyArNDA1LDcgQEAgc3Noa2V5X2FsZ19saXN0KGludCBj ZXJ0c19vbmx5LCBpbnQgcGxhaW5fb25seSwgaW50IGluY2x1ZGVfc2lnb25seSwgY2hhciBzZXAp CiAgCiAgCWZvciAoaSA9IDA7IGtleWltcGxzW2ldICE9IE5VTEw7IGkrKykgewogIAkJaW1wbCA9 IGtleWltcGxzW2ldOwpAQCAtNDM1MywxNyArNDMyMiwxNyBAQCBpbmRleCA1OWQxNDUzMWMuLmNj YzM1ZGJmNSAxMDA2NDQKICAJCWlmICghaW5jbHVkZV9zaWdvbmx5ICYmIGltcGwtPnNpZ29ubHkp CiAgCQkJY29udGludWU7CiBkaWZmIC0tZ2l0IGEvc3Noa2V5LmggYi9zc2hrZXkuaAotaW5kZXgg YTljZGZjZDE5Li45ZWNlZDVkOGEgMTAwNjQ0CitpbmRleCA5YWQ1NTgzYTIuLjU4Y2I1ODk4MSAx MDA2NDQKIC0tLSBhL3NzaGtleS5oCiArKysgYi9zc2hrZXkuaAotQEAgLTY3LDYgKzY3LDcgQEAg ZW51bSBzc2hrZXlfdHlwZXMgewotIAlLRVlfRUNEU0FfU0tfQ0VSVCwKLSAJS0VZX0VEMjU1MTlf U0ssCitAQCAtNjksNiArNjksNyBAQCBlbnVtIHNzaGtleV90eXBlcyB7CiAgCUtFWV9FRDI1NTE5 X1NLX0NFUlQsCisgCUtFWV9NTERTQTQ0X0VEMjU1MTksCisgCUtFWV9NTERTQTQ0X0VEMjU1MTlf Q0VSVCwKICsJS0VZX05VTEwsCiAgCUtFWV9VTlNQRUMKICB9OwogIAogLS0gCi0yLjUzLjAKKzIu NTUuMAogCgpkaWZmIC0tZ2l0IGEvMDAxNC1vcGVuc3NoLTYuNnAxLWZvcmNlX2tyYi5wYXRjaCBi LzAwMTQtb3BlbnNzaC02LjZwMS1mb3JjZV9rcmIucGF0Y2gKaW5kZXggMzZiOWY2Yy4uZDA2NjFk ZiAxMDA2NDQKLS0tIGEvMDAxNC1vcGVuc3NoLTYuNnAxLWZvcmNlX2tyYi5wYXRjaAorKysgYi8w MDE0LW9wZW5zc2gtNi42cDEtZm9yY2Vfa3JiLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBh MDMzOTQ1M2I5YjBhYzUxNTc1MmQwYzYwZmZkOWJjYjQ2NTYzZTcxIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQorRnJvbSAxZGVhMzBkNmZkMzg4MzNlMmE2Yjk5ZDA0ZWU1NTE5NDkwODIxNTZiIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogRG1pdHJ5IEJlbHlhdnNraXkgPGJlbGRtaXRA Z21haWwuY29tPgogRGF0ZTogVGh1LCAxNSBNYXkgMjAyNSAxMzo0MzoyOCArMDIwMAogU3ViamVj dDogW1BBVENIIDE0LzU0XSBvcGVuc3NoLTYuNnAxLWZvcmNlX2tyYgpAQCAtMjE4LDcgKzIxOCw3 IEBAIGluZGV4IGJlNDAxZmUwZS4uYzI2MTc0OTI4IDEwMDY0NAogIC8qIFRoaXMgd3JpdGVzIG91 dCBhbnkgZm9yd2FyZGVkIGNyZWRlbnRpYWxzIGZyb20gdGhlIHN0cnVjdHVyZSBwb3B1bGF0ZWQK ICAgKiBkdXJpbmcgdXNlcmF1dGguIENhbGxlZCBhZnRlciB3ZSBoYXZlIHNldHVpZCB0byB0aGUg dXNlciAqLwogZGlmZiAtLWdpdCBhL3Nlc3Npb24uYyBiL3Nlc3Npb24uYwotaW5kZXggZjE0ZDVm YWI4Li42MTBhMmNjNmYgMTAwNjQ0CitpbmRleCA3Yjc2ZjFmNzEuLmI0ZGI2NGVhNCAxMDA2NDQK IC0tLSBhL3Nlc3Npb24uYwogKysrIGIvc2Vzc2lvbi5jCiBAQCAtNjQzLDYgKzY0MywyOSBAQCBk b19leGVjKHN0cnVjdCBzc2ggKnNzaCwgU2Vzc2lvbiAqcywgY29uc3QgY2hhciAqY29tbWFuZCkK QEAgLTI5Miw1ICsyOTIsNSBAQCBpbmRleCAwMjI2YTgzMDMuLmUyZDhmZjAwMyAxMDA2NDQKICBU aGlzIGRpcmVjdG9yeSBpcyB0aGUgZGVmYXVsdCBsb2NhdGlvbiBmb3IgYWxsIHVzZXItc3BlY2lm aWMgY29uZmlndXJhdGlvbgogIGFuZCBhdXRoZW50aWNhdGlvbiBpbmZvcm1hdGlvbi4KIC0tIAot Mi41My4wCisyLjU1LjAKIAoKZGlmZiAtLWdpdCBhLzAwMTUtb3BlbnNzaC03LjdwMS1nc3NhcGkt bmV3LXVuaXF1ZS5wYXRjaCBiLzAwMTUtb3BlbnNzaC03LjdwMS1nc3NhcGktbmV3LXVuaXF1ZS5w YXRjaAppbmRleCBmNjk3YjdiLi4xMThmYWFjIDEwMDY0NAotLS0gYS8wMDE1LW9wZW5zc2gtNy43 cDEtZ3NzYXBpLW5ldy11bmlxdWUucGF0Y2gKKysrIGIvMDAxNS1vcGVuc3NoLTcuN3AxLWdzc2Fw aS1uZXctdW5pcXVlLnBhdGNoCkBAIC0xLDIyICsxLDIwIEBACi1Gcm9tIGVhMzBlMTU4ZGNlY2Uz OTUyNWJlYjBiYzE2ZWI0YTI2ZDhlYjgwMWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9t IGUwYjJiMzFiMzhlNmUzZDFhZDgxMDc4MmQzNzc3ZGVmODFhODdhODYgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCiBGcm9tOiBEbWl0cnkgQmVseWF2c2tpeSA8YmVsZG1pdEBnbWFpbC5jb20+CiBE YXRlOiBUaHUsIDE1IE1heSAyMDI1IDEzOjQzOjI4ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0ggMTUv NTRdIG9wZW5zc2gtNy43cDEtZ3NzYXBpLW5ldy11bmlxdWUKIAotIyBJbXByb3ZlIGNjYWNoZSBo YW5kbGluZyBpbiBvcGVuc3NoICgjOTkxMTg2LCAjMTE5OTM2MywgIzE1NjY0OTQpCi0jIGh0dHBz Oi8vYnVnemlsbGEubWluZHJvdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NzUKIC0tLQogIGF1dGgt a3JiNS5jICAgICB8IDI2MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystLS0tLS0KICBhdXRoLmggICAgICAgICAgfCAgIDMgKy0KICBnc3Mtc2Vydi1rcmI1LmMgfCAg NDIgKysrLS0tLS0KICBnc3Mtc2Vydi5jICAgICAgfCAgMTIgKy0tCi0gc2VydmNvbmYuYyAgICAg IHwgIDEyICsrLQorIHNlcnZjb25mLmMgICAgICB8ICAgNSArCiAgc2VydmNvbmYuaCAgICAgIHwg ICAyICsKICBzZXNzaW9uLmMgICAgICAgfCAgIDUgKy0KICBzc2gtZ3NzLmggICAgICAgfCAgIDQg Ky0KICBzc2hkLXNlc3Npb24uYyAgfCAgIDIgKy0KICBzc2hkX2NvbmZpZy41ICAgfCAgIDggKysK LSAxMCBmaWxlcyBjaGFuZ2VkLCAyODAgaW5zZXJ0aW9ucygrKSwgNzIgZGVsZXRpb25zKC0pCisg MTAgZmlsZXMgY2hhbmdlZCwgMjc0IGluc2VydGlvbnMoKyksIDcxIGRlbGV0aW9ucygtKQogCiBk aWZmIC0tZ2l0IGEvYXV0aC1rcmI1LmMgYi9hdXRoLWtyYjUuYwogaW5kZXggM2M2ZGMwNjIyLi4w ZGUxYWFmOGQgMTAwNjQ0CkBAIC0zNDEsNyArMzM5LDcgQEAgaW5kZXggM2M2ZGMwNjIyLi4wZGUx YWFmOGQgMTAwNjQ0CiAgI2VuZGlmIC8qICFIRUlNREFMICovCiAgI2VuZGlmIC8qIEtSQjUgKi8K IGRpZmYgLS1naXQgYS9hdXRoLmggYi9hdXRoLmgKLWluZGV4IDMyZWUzY2JmNC4uOWU1NWZmOGFk IDEwMDY0NAoraW5kZXggZWZlODE5MzIzLi4yYTE5ZTJiMzQgMTAwNjQ0CiAtLS0gYS9hdXRoLmgK ICsrKyBiL2F1dGguaAogQEAgLTg1LDYgKzg1LDcgQEAgc3RydWN0IEF1dGhjdHh0IHsKQEAgLTM1 Miw3ICszNTAsNyBAQCBpbmRleCAzMmVlM2NiZjQuLjllNTVmZjhhZCAxMDA2NDQKICAjZW5kaWYK ICAJc3RydWN0IHNzaGJ1ZgkqbG9naW5tc2c7CiAgCi1AQCAtMjQzLDcgKzI0NCw3IEBAIEZJTEUJ KmF1dGhfb3BlbnByaW5jaXBhbHMoY29uc3QgY2hhciAqLCBzdHJ1Y3QgcGFzc3dkICosIGludCk7 CitAQCAtMjQ0LDcgKzI0NSw3IEBAIEZJTEUJKmF1dGhfb3BlbnByaW5jaXBhbHMoY29uc3QgY2hh ciAqLCBzdHJ1Y3QgcGFzc3dkICosIGludCk7CiAgaW50CSBzeXNfYXV0aF9wYXNzd2Qoc3RydWN0 IHNzaCAqLCBjb25zdCBjaGFyICopOwogIAogICNpZiBkZWZpbmVkKEtSQjUpICYmICFkZWZpbmVk KEhFSU1EQUwpCkBAIC01MTYsODMgKzUxNCw0OSBAQCBpbmRleCA4YjRmYTljZmUuLjZlYjdkMjE2 MyAxMDA2NDQKICAKICAJb2sgPSBtbV9zc2hfZ3NzYXBpX3VwZGF0ZV9jcmVkcygmZ3NzYXBpX2Ns aWVudC5zdG9yZSk7CiBkaWZmIC0tZ2l0IGEvc2VydmNvbmYuYyBiL3NlcnZjb25mLmMKLWluZGV4 IGRlM2ZhOTQ4MS4uMTBiNDNkNTZhIDEwMDY0NAoraW5kZXggNjcwMGY1ZDUxLi4yZDExZTFkMDAg MTAwNjQ0CiAtLS0gYS9zZXJ2Y29uZi5jCiArKysgYi9zZXJ2Y29uZi5jCi1AQCAtMTMxLDYgKzEz MSw3IEBAIGluaXRpYWxpemVfc2VydmVyX29wdGlvbnMoU2VydmVyT3B0aW9ucyAqb3B0aW9ucykK LSAJb3B0aW9ucy0+a2VyYmVyb3Nfb3JfbG9jYWxfcGFzc3dkID0gLTE7Ci0gCW9wdGlvbnMtPmtl cmJlcm9zX3RpY2tldF9jbGVhbnVwID0gLTE7Ci0gCW9wdGlvbnMtPmtlcmJlcm9zX2dldF9hZnNf dG9rZW4gPSAtMTsKLSsJb3B0aW9ucy0+a2VyYmVyb3NfdW5pcXVlX2NjYWNoZSA9IC0xOwotIAlv cHRpb25zLT5nc3NfYXV0aGVudGljYXRpb249LTE7Ci0gCW9wdGlvbnMtPmdzc19rZXlleCA9IC0x OwotIAlvcHRpb25zLT5nc3NfY2xlYW51cF9jcmVkcyA9IC0xOwotQEAgLTM3NCw2ICszNzUsOCBA QCBmaWxsX2RlZmF1bHRfc2VydmVyX29wdGlvbnMoU2VydmVyT3B0aW9ucyAqb3B0aW9ucykKLSAJ CW9wdGlvbnMtPmtlcmJlcm9zX3RpY2tldF9jbGVhbnVwID0gMTsKLSAJaWYgKG9wdGlvbnMtPmtl cmJlcm9zX2dldF9hZnNfdG9rZW4gPT0gLTEpCi0gCQlvcHRpb25zLT5rZXJiZXJvc19nZXRfYWZz X3Rva2VuID0gMDsKLSsJaWYgKG9wdGlvbnMtPmtlcmJlcm9zX3VuaXF1ZV9jY2FjaGUgPT0gLTEp Ci0rCQlvcHRpb25zLT5rZXJiZXJvc191bmlxdWVfY2NhY2hlID0gMDsKLSAJaWYgKG9wdGlvbnMt Pmdzc19hdXRoZW50aWNhdGlvbiA9PSAtMSkKLSAJCW9wdGlvbnMtPmdzc19hdXRoZW50aWNhdGlv biA9IDA7Ci0gCWlmIChvcHRpb25zLT5nc3Nfa2V5ZXggPT0gLTEpCi1AQCAtNTYxLDcgKzU2NCw3 IEBAIHR5cGVkZWYgZW51bSB7Ci0gCXNQb3J0LCBzSG9zdEtleUZpbGUsIHNMb2dpbkdyYWNlVGlt ZSwKLSAJc1Blcm1pdFJvb3RMb2dpbiwgc0xvZ0ZhY2lsaXR5LCBzTG9nTGV2ZWwsIHNMb2dWZXJi b3NlLAotIAlzS2VyYmVyb3NBdXRoZW50aWNhdGlvbiwgc0tlcmJlcm9zT3JMb2NhbFBhc3N3ZCwg c0tlcmJlcm9zVGlja2V0Q2xlYW51cCwKLS0Jc0tlcmJlcm9zR2V0QUZTVG9rZW4sIHNQYXNzd29y ZEF1dGhlbnRpY2F0aW9uLAotKwlzS2VyYmVyb3NHZXRBRlNUb2tlbiwgc0tlcmJlcm9zVW5pcXVl Q0NhY2hlLCBzUGFzc3dvcmRBdXRoZW50aWNhdGlvbiwKLSAJc0tiZEludGVyYWN0aXZlQXV0aGVu dGljYXRpb24sIHNMaXN0ZW5BZGRyZXNzLCBzQWRkcmVzc0ZhbWlseSwKLSAJc1ByaW50TW90ZCwg c1ByaW50TGFzdExvZywgc0lnbm9yZVJob3N0cywKLSAJc1gxMUZvcndhcmRpbmcsIHNYMTFEaXNw bGF5T2Zmc2V0LCBzWDExVXNlTG9jYWxob3N0LAotQEAgLTY1MiwxMSArNjU1LDEzIEBAIHN0YXRp YyBzdHJ1Y3QgewotICNlbHNlCi0gCXsgImtlcmJlcm9zZ2V0YWZzdG9rZW4iLCBzVW5zdXBwb3J0 ZWQsIFNTSENGR19HTE9CQUwgfSwKLSAjZW5kaWYKLSsJeyAia2VyYmVyb3N1bmlxdWVjY2FjaGUi LCBzS2VyYmVyb3NVbmlxdWVDQ2FjaGUsIFNTSENGR19HTE9CQUwgfSwKLSAjZWxzZQotIAl7ICJr ZXJiZXJvc2F1dGhlbnRpY2F0aW9uIiwgc1Vuc3VwcG9ydGVkLCBTU0hDRkdfQUxMIH0sCi0gCXsg ImtlcmJlcm9zb3Jsb2NhbHBhc3N3ZCIsIHNVbnN1cHBvcnRlZCwgU1NIQ0ZHX0dMT0JBTCB9LAot IAl7ICJrZXJiZXJvc3RpY2tldGNsZWFudXAiLCBzVW5zdXBwb3J0ZWQsIFNTSENGR19HTE9CQUwg fSwKLSAJeyAia2VyYmVyb3NnZXRhZnN0b2tlbiIsIHNVbnN1cHBvcnRlZCwgU1NIQ0ZHX0dMT0JB TCB9LAotKwl7ICJrZXJiZXJvc3VuaXF1ZWNjYWNoZSIsIHNVbnN1cHBvcnRlZCwgU1NIQ0ZHX0dM T0JBTCB9LAotICNlbmRpZgotIAl7ICJrZXJiZXJvc3RndHBhc3NpbmciLCBzVW5zdXBwb3J0ZWQs IFNTSENGR19HTE9CQUwgfSwKLSAJeyAiYWZzdG9rZW5wYXNzaW5nIiwgc1Vuc3VwcG9ydGVkLCBT U0hDRkdfR0xPQkFMIH0sCi1AQCAtMTY2OSw2ICsxNjc0LDEwIEBAIHByb2Nlc3Nfc2VydmVyX2Nv bmZpZ19saW5lX2RlcHRoKFNlcnZlck9wdGlvbnMgKm9wdGlvbnMsIGNoYXIgKmxpbmUsCi0gCQlp bnRwdHIgPSAmb3B0aW9ucy0+a2VyYmVyb3NfZ2V0X2Fmc190b2tlbjsKLSAJCWdvdG8gcGFyc2Vf ZmxhZzsKK0BAIC0xNDM3LDYgKzE0MzcsMTAgQEAgcHJvY2Vzc19zZXJ2ZXJfY29uZmlnX2xpbmVf ZGVwdGgoU2VydmVyT3B0aW9ucyAqb3B0aW9ucywgY2hhciAqbGluZSwKKyAjZW5kaWYgLyogVVNF X0FGUyAqLworICNlbmRpZiAvKiBLUkI1ICovCiAgCiArCWNhc2Ugc0tlcmJlcm9zVW5pcXVlQ0Nh Y2hlOgogKwkJaW50cHRyID0gJm9wdGlvbnMtPmtlcmJlcm9zX3VuaXF1ZV9jY2FjaGU7CiArCQln b3RvIHBhcnNlX2ZsYWc7CiArCi0gCWNhc2Ugc0dzc0F1dGhlbnRpY2F0aW9uOgorICNpZmRlZiBH U1NBUEkKKyAJY2FzZSBzR1NTQVBJQXV0aGVudGljYXRpb246CiAgCQlpbnRwdHIgPSAmb3B0aW9u cy0+Z3NzX2F1dGhlbnRpY2F0aW9uOwotIAkJZ290byBwYXJzZV9mbGFnOwotQEAgLTMzMjksNiAr MzMzOCw3IEBAIGR1bXBfY29uZmlnKFNlcnZlck9wdGlvbnMgKm8pCitAQCAtNDIzOCw2ICs0MjQy LDcgQEAgZHVtcF9jb25maWcoU2VydmVyT3B0aW9ucyAqbykKICAjIGlmZGVmIFVTRV9BRlMKICAJ ZHVtcF9jZmdfZm10aW50KHNLZXJiZXJvc0dldEFGU1Rva2VuLCBvLT5rZXJiZXJvc19nZXRfYWZz X3Rva2VuKTsKICAjIGVuZGlmCiArCWR1bXBfY2ZnX2ZtdGludChzS2VyYmVyb3NVbmlxdWVDQ2Fj aGUsIG8tPmtlcmJlcm9zX3VuaXF1ZV9jY2FjaGUpOwogICNlbmRpZgogICNpZmRlZiBHU1NBUEkK LSAJZHVtcF9jZmdfZm10aW50KHNHc3NBdXRoZW50aWNhdGlvbiwgby0+Z3NzX2F1dGhlbnRpY2F0 aW9uKTsKKyAJZHVtcF9jZmdfZm10aW50KHNHU1NBUElBdXRoZW50aWNhdGlvbiwgby0+Z3NzX2F1 dGhlbnRpY2F0aW9uKTsKIGRpZmYgLS1naXQgYS9zZXJ2Y29uZi5oIGIvc2VydmNvbmYuaAotaW5k ZXggNzY2NDFkNTgwLi5iZjU4OTkxMWEgMTAwNjQ0CitpbmRleCBkZGIwZjEzMGEuLjZjYTg5YjI0 ZSAxMDA2NDQKIC0tLSBhL3NlcnZjb25mLmgKICsrKyBiL3NlcnZjb25mLmgKLUBAIC0xNTAsNiAr MTUwLDggQEAgdHlwZWRlZiBzdHJ1Y3QgewotIAkJCQkJCSAqIGZpbGUgb24gbG9nb3V0LiAqLwot IAlpbnQgICAgIGtlcmJlcm9zX2dldF9hZnNfdG9rZW47CQkvKiBJZiB0cnVlLCB0cnkgdG8gZ2V0 IEFGUyB0b2tlbiBpZgotIAkJCQkJCSAqIGF1dGhlbnRpY2F0ZWQgd2l0aCBLZXJiZXJvcy4gKi8K LSsJaW50ICAgICBrZXJiZXJvc191bmlxdWVfY2NhY2hlOwkJLyogSWYgdHJ1ZSwgdGhlIGFjcXVp cmVkIHRpY2tldCB3aWxsCi0rCQkJCQkJICogYmUgc3RvcmVkIGluIHBlci1zZXNzaW9uIGNjYWNo ZSAqLwotIAlpbnQgICAgIGdzc19hdXRoZW50aWNhdGlvbjsJLyogSWYgdHJ1ZSwgcGVybWl0IEdT U0FQSSBhdXRoZW50aWNhdGlvbiAqLwotIAlpbnQgICAgIGdzc19rZXlleDsJCS8qIElmIHRydWUs IHBlcm1pdCBHU1NBUEkga2V5IGV4Y2hhbmdlICovCi0gCWludCAgICAgZ3NzX2NsZWFudXBfY3Jl ZHM7CS8qIElmIHRydWUsIGRlc3Ryb3kgY3JlZCBjYWNoZSBvbiBsb2dvdXQgKi8KK0BAIC0zMDMs MTIgKzMwMywxNCBAQCBTU0hDT05GX1VOU1VQUE9SVEVEX0lOVChrZXJiZXJvc19nZXRfYWZzX3Rv a2VuLCBLZXJiZXJvc0dldEFGU1Rva2VuLCBTU0hDRkdfR0xPQgorIFNTSENPTkZfSU5URkxBRyhr ZXJiZXJvc19hdXRoZW50aWNhdGlvbiwgS2VyYmVyb3NBdXRoZW50aWNhdGlvbiwgU1NIQ0ZHX0FM TCwgMCwgU1NIQ0ZHX0NPUFlfTUFUQ0gpIFwKKyBTU0hDT05GX0lOVEZMQUcoa2VyYmVyb3Nfb3Jf bG9jYWxfcGFzc3dkLCBLZXJiZXJvc09yTG9jYWxQYXNzd2QsIFNTSENGR19HTE9CQUwsIDEsIFNT SENGR19DT1BZX05PTkUpIFwKKyBTU0hDT05GX0lOVEZMQUcoa2VyYmVyb3NfdGlja2V0X2NsZWFu dXAsIEtlcmJlcm9zVGlja2V0Q2xlYW51cCwgU1NIQ0ZHX0dMT0JBTCwgMSwgU1NIQ0ZHX0NPUFlf Tk9ORSkgXAorK1NTSENPTkZfSU5URkxBRyhrZXJiZXJvc191bmlxdWVfY2NhY2hlLCBLZXJiZXJv c1VuaXF1ZUNDYWNoZSwgU1NIQ0ZHX0dMT0JBTCwgMCwgU1NIQ0ZHX0NPUFlfTk9ORSkgXAorIFNT SERfQ09ORklHX0tSQjVfQUZTCisgI2Vsc2UgLyogS1JCNSAqLworICNkZWZpbmUgU1NIRF9DT05G SUdfRU5UUklFU19LUkI1IFwKKyBTU0hDT05GX1VOU1VQUE9SVEVEX0lOVChrZXJiZXJvc19hdXRo ZW50aWNhdGlvbiwgS2VyYmVyb3NBdXRoZW50aWNhdGlvbiwgU1NIQ0ZHX0FMTCkgXAorIFNTSENP TkZfVU5TVVBQT1JURURfSU5UKGtlcmJlcm9zX29yX2xvY2FsX3Bhc3N3ZCwgS2VyYmVyb3NPckxv Y2FsUGFzc3dkLCBTU0hDRkdfR0xPQkFMKSBcCisgU1NIQ09ORl9VTlNVUFBPUlRFRF9JTlQoa2Vy YmVyb3NfdGlja2V0X2NsZWFudXAsIEtlcmJlcm9zVGlja2V0Q2xlYW51cCwgU1NIQ0ZHX0dMT0JB TCkgXAorK1NTSENPTkZfVU5TVVBQT1JURURfSU5UKGtlcmJlcm9zX3VuaXF1ZV9jY2FjaGUsIEtl cmJlcm9zVW5pcXVlQ0NhY2hlLCBTU0hDRkdfR0xPQkFMKSBcCisgU1NIQ09ORl9VTlNVUFBPUlRF RF9JTlQoa2VyYmVyb3NfZ2V0X2Fmc190b2tlbiwgS2VyYmVyb3NHZXRBRlNUb2tlbiwgU1NIQ0ZH X0dMT0JBTCkKKyAjZW5kaWYgLyogS1JCNSAqLworIAogZGlmZiAtLWdpdCBhL3Nlc3Npb24uYyBi L3Nlc3Npb24uYwotaW5kZXggNjEwYTJjYzZmLi41MTdjYWI2YjYgMTAwNjQ0CitpbmRleCBiNGRi NjRlYTQuLmMyY2RkNmM0ZiAxMDA2NDQKIC0tLSBhL3Nlc3Npb24uYwogKysrIGIvc2Vzc2lvbi5j CiBAQCAtOTg4LDcgKzk4OCw4IEBAIGRvX3NldHVwX2VudihzdHJ1Y3Qgc3NoICpzc2gsIFNlc3Np b24gKnMsIGNvbnN0IGNoYXIgKnNoZWxsKQpAQCAtNjM3LDEwICs2MDEsMTAgQEAgaW5kZXggZGIz NGQ3N2Y0Li5hODk0ZTIzYzkgMTAwNjQ0CiAgCiAgY2hhciAqc3NoX2dzc2FwaV9zZXJ2ZXJfbWVj aGFuaXNtcyh2b2lkKTsKIGRpZmYgLS1naXQgYS9zc2hkLXNlc3Npb24uYyBiL3NzaGQtc2Vzc2lv bi5jCi1pbmRleCBmODQ3ZmMwYTkuLjlkNzVhNDU1NSAxMDA2NDQKK2luZGV4IDM1MjIzNzQ3NC4u M2QyNjcyY2ZkIDEwMDY0NAogLS0tIGEvc3NoZC1zZXNzaW9uLmMKICsrKyBiL3NzaGQtc2Vzc2lv bi5jCi1AQCAtMTI5NSw3ICsxMjk1LDcgQEAgbWFpbihpbnQgYWMsIGNoYXIgKiphdikKK0BAIC0x Mjk2LDcgKzEyOTYsNyBAQCBtYWluKGludCBhYywgY2hhciAqKmF2KQogICNpZmRlZiBHU1NBUEkK ICAJaWYgKG9wdGlvbnMuZ3NzX2F1dGhlbnRpY2F0aW9uKSB7CiAgCQl0ZW1wb3JhcmlseV91c2Vf dWlkKGF1dGhjdHh0LT5wdyk7CkBAIC02NTAsMTAgKzYxNCwxMCBAQCBpbmRleCBmODQ3ZmMwYTku LjlkNzVhNDU1NSAxMDA2NDQKICAJfQogICNlbmRpZgogZGlmZiAtLWdpdCBhL3NzaGRfY29uZmln LjUgYi9zc2hkX2NvbmZpZy41Ci1pbmRleCA1OTI4YjZjZDIuLmQwYjBkZmUzNiAxMDA2NDQKK2lu ZGV4IGI3MTlmYzkxNS4uMzcyYWYyNDFiIDEwMDY0NAogLS0tIGEvc3NoZF9jb25maWcuNQogKysr IGIvc3NoZF9jb25maWcuNQotQEAgLTEwNTcsNiArMTA1NywxNCBAQCBTcGVjaWZpZXMgd2hldGhl ciB0byBhdXRvbWF0aWNhbGx5IGRlc3Ryb3kgdGhlIHVzZXIncyB0aWNrZXQgY2FjaGUKK0BAIC0x MDY4LDYgKzEwNjgsMTQgQEAgU3BlY2lmaWVzIHdoZXRoZXIgdG8gYXV0b21hdGljYWxseSBkZXN0 cm95IHRoZSB1c2VyJ3MgdGlja2V0IGNhY2hlCiAgZmlsZSBvbiBsb2dvdXQuCiAgVGhlIGRlZmF1 bHQgaXMKICAuQ20geWVzIC4KQEAgLTY2OSw1ICs2MzMsNSBAQCBpbmRleCA1OTI4YjZjZDIuLmQw YjBkZmUzNiAxMDA2NDQKICBTcGVjaWZpZXMgdGhlIHBlcm1pdHRlZCBLRVggKEtleSBFeGNoYW5n ZSkgYWxnb3JpdGhtcyB0aGF0IHRoZSBzZXJ2ZXIgd2lsbAogIG9mZmVyIHRvIGNsaWVudHMuCiAt LSAKLTIuNTMuMAorMi41NS4wCiAKCmRpZmYgLS1naXQgYS8wMDE2LW9wZW5zc2gtNy4ycDItazVs b2dpbl9kaXJlY3RvcnkucGF0Y2ggYi8wMDE2LW9wZW5zc2gtNy4ycDItazVsb2dpbl9kaXJlY3Rv cnkucGF0Y2gKaW5kZXggY2FhNWI5ZC4uZTkxMjZmZSAxMDA2NDQKLS0tIGEvMDAxNi1vcGVuc3No LTcuMnAyLWs1bG9naW5fZGlyZWN0b3J5LnBhdGNoCisrKyBiLzAwMTYtb3BlbnNzaC03LjJwMi1r NWxvZ2luX2RpcmVjdG9yeS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZjA1ZDBhZGM4ZjE1 ZTAxYTM0NzlkNDk2NDVkZjI2MTcwYmU5ZDc3NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zy b20gZjRlMmY4M2JhMzE2ZmE2N2FiODA1MjQ4OWY0MjhjMWNiZThjZjNmNCBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKIEZyb206IERtaXRyeSBCZWx5YXZza2l5IDxiZWxkbWl0QGdtYWlsLmNvbT4K IERhdGU6IFRodSwgMTUgTWF5IDIwMjUgMTM6NDM6MjggKzAyMDAKIFN1YmplY3Q6IFtQQVRDSCAx Ni81NF0gb3BlbnNzaC03LjJwMi1rNWxvZ2luX2RpcmVjdG9yeQpAQCAtMzgsMTAgKzM4LDEwIEBA IGluZGV4IDBkZTFhYWY4ZC4uMTQ4MjQyY2JmIDEwMDY0NAogICNlbmRpZiAvKiAhSEVJTURBTCAq LwogICNlbmRpZiAvKiBLUkI1ICovCiBkaWZmIC0tZ2l0IGEvYXV0aC5oIGIvYXV0aC5oCi1pbmRl eCA5ZTU1ZmY4YWQuLjgxNWY4MjFmOSAxMDA2NDQKK2luZGV4IDJhMTllMmIzNC4uOWRkMjVmNDk0 IDEwMDY0NAogLS0tIGEvYXV0aC5oCiArKysgYi9hdXRoLmgKLUBAIC0yNDUsNiArMjQ1LDggQEAg aW50CSBzeXNfYXV0aF9wYXNzd2Qoc3RydWN0IHNzaCAqLCBjb25zdCBjaGFyICopOworQEAgLTI0 Niw2ICsyNDYsOCBAQCBpbnQJIHN5c19hdXRoX3Bhc3N3ZChzdHJ1Y3Qgc3NoICosIGNvbnN0IGNo YXIgKik7CiAgCiAgI2lmIGRlZmluZWQoS1JCNSkgJiYgIWRlZmluZWQoSEVJTURBTCkKICBrcmI1 X2Vycm9yX2NvZGUgc3NoX2tyYjVfY2NfbmV3X3VuaXF1ZShrcmI1X2NvbnRleHQsIGtyYjVfY2Nh Y2hlICosIGludCAqKTsKQEAgLTk5LDUgKzk5LDUgQEAgaW5kZXggZTJkOGZmMDAzLi5mYTMzZjUy MzIgMTAwNjQ0CiAgLkl0IFBhIH4vLnNzaC8KICBUaGlzIGRpcmVjdG9yeSBpcyB0aGUgZGVmYXVs dCBsb2NhdGlvbiBmb3IgYWxsIHVzZXItc3BlY2lmaWMgY29uZmlndXJhdGlvbgogLS0gCi0yLjUz LjAKKzIuNTUuMAogCgpkaWZmIC0tZ2l0IGEvMDAxNy1vcGVuc3NoLTYuNnAxLWt1c2Vyb2sucGF0 Y2ggYi8wMDE3LW9wZW5zc2gtNi42cDEta3VzZXJvay5wYXRjaAppbmRleCA3ZTBhZTUyLi4zNDRl YzhhIDEwMDY0NAotLS0gYS8wMDE3LW9wZW5zc2gtNi42cDEta3VzZXJvay5wYXRjaAorKysgYi8w MDE3LW9wZW5zc2gtNi42cDEta3VzZXJvay5wYXRjaApAQCAtMSwxNyArMSwxNiBAQAotRnJvbSBi ZGIyYjU4ZTFhN2Y0ZDRhNDJhMGFjYTFmOGYzMDE1YjVlZGM4NmExIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQorRnJvbSA5M2I5NDVkNGFmMDBlMzIwMTJkM2I0MDE3NjdlMDhiZjJlNTAxOWEwIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogRG1pdHJ5IEJlbHlhdnNraXkgPGJlbGRtaXRA Z21haWwuY29tPgogRGF0ZTogVGh1LCAxNSBNYXkgMjAyNSAxMzo0MzoyOCArMDIwMAogU3ViamVj dDogW1BBVENIIDE3LzU0XSBvcGVuc3NoLTYuNnAxLWt1c2Vyb2sKIAotI2h0dHBzOi8vYnVnemls bGEubWluZHJvdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODAKIC0tLQogIGF1dGgta3JiNS5jICAg ICB8ICAyMCArKysrKysrKy0KICBnc3Mtc2Vydi1rcmI1LmMgfCAxMDYgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCi0gc2VydmNvbmYuYyAgICAgIHwgIDEz ICsrKysrLQotIHNlcnZjb25mLmggICAgICB8ICAgMSArCisgc2VydmNvbmYuYyAgICAgIHwgICA1 ICsrKworIHNlcnZjb25mLmggICAgICB8ICAgMiArCiAgc3NoZF9jb25maWcgICAgIHwgICAxICsK ICBzc2hkX2NvbmZpZy41ICAgfCAgIDUgKysrCi0gNiBmaWxlcyBjaGFuZ2VkLCAxMzkgaW5zZXJ0 aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKyA2IGZpbGVzIGNoYW5nZWQsIDEzMyBpbnNlcnRpb25z KCspLCA2IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvYXV0aC1rcmI1LmMgYi9hdXRoLWty YjUuYwogaW5kZXggMTQ4MjQyY2JmLi4yODdiZGQzNWEgMTAwNjQ0CkBAIC0xOTAsNTEgKzE4OSwx MCBAQCBpbmRleCA3ZGYzMWM2YWYuLjZmNTgyNmNlOCAxMDA2NDQKICAJaWYgKChmcCA9IGZvcGVu KGZpbGUsICJyIikpID09IE5VTEwpIHsKICAJCWludCBzYXZlZF9lcnJubyA9IGVycm5vOwogZGlm ZiAtLWdpdCBhL3NlcnZjb25mLmMgYi9zZXJ2Y29uZi5jCi1pbmRleCAxMGI0M2Q1NmEuLjc1MTM4 OGJjMCAxMDA2NDQKK2luZGV4IDJkMTFlMWQwMC4uZmFiM2I0MjM1IDEwMDY0NAogLS0tIGEvc2Vy dmNvbmYuYwogKysrIGIvc2VydmNvbmYuYwotQEAgLTEzOSw2ICsxMzksNyBAQCBpbml0aWFsaXpl X3NlcnZlcl9vcHRpb25zKFNlcnZlck9wdGlvbnMgKm9wdGlvbnMpCi0gCW9wdGlvbnMtPmdzc19z dHJpY3RfYWNjZXB0b3IgPSAtMTsKLSAJb3B0aW9ucy0+Z3NzX3N0b3JlX3Jla2V5ID0gLTE7Ci0g CW9wdGlvbnMtPmdzc19rZXhfYWxnb3JpdGhtcyA9IE5VTEw7Ci0rCW9wdGlvbnMtPnVzZV9rdXNl cm9rID0gLTE7Ci0gCW9wdGlvbnMtPnBhc3N3b3JkX2F1dGhlbnRpY2F0aW9uID0gLTE7Ci0gCW9w dGlvbnMtPmtiZF9pbnRlcmFjdGl2ZV9hdXRoZW50aWNhdGlvbiA9IC0xOwotIAlvcHRpb25zLT5w ZXJtaXRfZW1wdHlfcGFzc3dkID0gLTE7Ci1AQCAtMzkzLDYgKzM5NCw4IEBAIGZpbGxfZGVmYXVs dF9zZXJ2ZXJfb3B0aW9ucyhTZXJ2ZXJPcHRpb25zICpvcHRpb25zKQotIAlpZiAob3B0aW9ucy0+ Z3NzX2tleF9hbGdvcml0aG1zID09IE5VTEwpCi0gCQlvcHRpb25zLT5nc3Nfa2V4X2FsZ29yaXRo bXMgPSBzdHJkdXAoR1NTX0tFWF9ERUZBVUxUX0tFWCk7Ci0gI2VuZGlmCi0rCWlmIChvcHRpb25z LT51c2Vfa3VzZXJvayA9PSAtMSkKLSsJCW9wdGlvbnMtPnVzZV9rdXNlcm9rID0gMTsKLSAJaWYg KG9wdGlvbnMtPnBhc3N3b3JkX2F1dGhlbnRpY2F0aW9uID09IC0xKQotIAkJb3B0aW9ucy0+cGFz c3dvcmRfYXV0aGVudGljYXRpb24gPSAxOwotIAlpZiAob3B0aW9ucy0+a2JkX2ludGVyYWN0aXZl X2F1dGhlbnRpY2F0aW9uID09IC0xKQotQEAgLTU2NCw3ICs1NjcsNyBAQCB0eXBlZGVmIGVudW0g ewotIAlzUG9ydCwgc0hvc3RLZXlGaWxlLCBzTG9naW5HcmFjZVRpbWUsCi0gCXNQZXJtaXRSb290 TG9naW4sIHNMb2dGYWNpbGl0eSwgc0xvZ0xldmVsLCBzTG9nVmVyYm9zZSwKLSAJc0tlcmJlcm9z QXV0aGVudGljYXRpb24sIHNLZXJiZXJvc09yTG9jYWxQYXNzd2QsIHNLZXJiZXJvc1RpY2tldENs ZWFudXAsCi0tCXNLZXJiZXJvc0dldEFGU1Rva2VuLCBzS2VyYmVyb3NVbmlxdWVDQ2FjaGUsIHNQ YXNzd29yZEF1dGhlbnRpY2F0aW9uLAotKwlzS2VyYmVyb3NHZXRBRlNUb2tlbiwgc0tlcmJlcm9z VW5pcXVlQ0NhY2hlLCBzS2VyYmVyb3NVc2VLdXNlcm9rLCBzUGFzc3dvcmRBdXRoZW50aWNhdGlv biwKLSAJc0tiZEludGVyYWN0aXZlQXV0aGVudGljYXRpb24sIHNMaXN0ZW5BZGRyZXNzLCBzQWRk cmVzc0ZhbWlseSwKLSAJc1ByaW50TW90ZCwgc1ByaW50TGFzdExvZywgc0lnbm9yZVJob3N0cywK LSAJc1gxMUZvcndhcmRpbmcsIHNYMTFEaXNwbGF5T2Zmc2V0LCBzWDExVXNlTG9jYWxob3N0LAot QEAgLTY1NiwxMiArNjU5LDE0IEBAIHN0YXRpYyBzdHJ1Y3QgewotIAl7ICJrZXJiZXJvc2dldGFm c3Rva2VuIiwgc1Vuc3VwcG9ydGVkLCBTU0hDRkdfR0xPQkFMIH0sCi0gI2VuZGlmCi0gCXsgImtl cmJlcm9zdW5pcXVlY2NhY2hlIiwgc0tlcmJlcm9zVW5pcXVlQ0NhY2hlLCBTU0hDRkdfR0xPQkFM IH0sCi0rCXsgImtlcmJlcm9zdXNla3VzZXJvayIsIHNLZXJiZXJvc1VzZUt1c2Vyb2ssIFNTSENG R19BTEwgfSwKLSAjZWxzZQotIAl7ICJrZXJiZXJvc2F1dGhlbnRpY2F0aW9uIiwgc1Vuc3VwcG9y dGVkLCBTU0hDRkdfQUxMIH0sCi0gCXsgImtlcmJlcm9zb3Jsb2NhbHBhc3N3ZCIsIHNVbnN1cHBv cnRlZCwgU1NIQ0ZHX0dMT0JBTCB9LAotIAl7ICJrZXJiZXJvc3RpY2tldGNsZWFudXAiLCBzVW5z dXBwb3J0ZWQsIFNTSENGR19HTE9CQUwgfSwKLSAJeyAia2VyYmVyb3NnZXRhZnN0b2tlbiIsIHNV bnN1cHBvcnRlZCwgU1NIQ0ZHX0dMT0JBTCB9LAotIAl7ICJrZXJiZXJvc3VuaXF1ZWNjYWNoZSIs IHNVbnN1cHBvcnRlZCwgU1NIQ0ZHX0dMT0JBTCB9LAotKwl7ICJrZXJiZXJvc3VzZWt1c2Vyb2si LCBzVW5zdXBwb3J0ZWQsIFNTSENGR19BTEwgfSwKLSAjZW5kaWYKLSAJeyAia2VyYmVyb3N0Z3Rw YXNzaW5nIiwgc1Vuc3VwcG9ydGVkLCBTU0hDRkdfR0xPQkFMIH0sCi0gCXsgImFmc3Rva2VucGFz c2luZyIsIHNVbnN1cHBvcnRlZCwgU1NIQ0ZHX0dMT0JBTCB9LAotQEAgLTI0NjMsNiArMjQ2OCwx MCBAQCBwcm9jZXNzX3NlcnZlcl9jb25maWdfbGluZV9kZXB0aChTZXJ2ZXJPcHRpb25zICpvcHRp b25zLCBjaGFyICpsaW5lLAorQEAgLTIyMzAsNiArMjIzMCwxMCBAQCBwcm9jZXNzX3NlcnZlcl9j b25maWdfbGluZV9kZXB0aChTZXJ2ZXJPcHRpb25zICpvcHRpb25zLCBjaGFyICpsaW5lLAogIAkJ fQogIAkJYnJlYWs7CiAgCkBAIC0yNDUsMzQgKzIwMywzNCBAQCBpbmRleCAxMGI0M2Q1NmEuLjc1 MTM4OGJjMCAxMDA2NDQKICAJY2FzZSBzTWF0Y2g6CiAgCQlpZiAoY21kbGluZSkKICAJCQlmYXRh bCgiTWF0Y2ggZGlyZWN0aXZlIG5vdCBzdXBwb3J0ZWQgYXMgYSBjb21tYW5kLWxpbmUgIgotQEAg LTMwMzAsNiArMzAzOSw3IEBAIGNvcHlfc2V0X3NlcnZlcl9vcHRpb25zKFNlcnZlck9wdGlvbnMg KmRzdCwgU2VydmVyT3B0aW9ucyAqc3JjLCBpbnQgcHJlYXV0aCkKLSAJTV9DUF9JTlRPUFQoY2xp ZW50X2FsaXZlX2ludGVydmFsKTsKLSAJTV9DUF9JTlRPUFQoaXBfcW9zX2ludGVyYWN0aXZlKTsK LSAJTV9DUF9JTlRPUFQoaXBfcW9zX2J1bGspOwotKwlNX0NQX0lOVE9QVCh1c2Vfa3VzZXJvayk7 Ci0gCU1fQ1BfSU5UT1BUKHJla2V5X2xpbWl0KTsKLSAJTV9DUF9JTlRPUFQocmVrZXlfaW50ZXJ2 YWwpOwotIAlNX0NQX0lOVE9QVChsb2dfbGV2ZWwpOwotQEAgLTMzMzksNiArMzM0OSw3IEBAIGR1 bXBfY29uZmlnKFNlcnZlck9wdGlvbnMgKm8pCitAQCAtNDI0Myw2ICs0MjQ3LDcgQEAgZHVtcF9j b25maWcoU2VydmVyT3B0aW9ucyAqbykKICAJZHVtcF9jZmdfZm10aW50KHNLZXJiZXJvc0dldEFG U1Rva2VuLCBvLT5rZXJiZXJvc19nZXRfYWZzX3Rva2VuKTsKICAjIGVuZGlmCiAgCWR1bXBfY2Zn X2ZtdGludChzS2VyYmVyb3NVbmlxdWVDQ2FjaGUsIG8tPmtlcmJlcm9zX3VuaXF1ZV9jY2FjaGUp OwogKwlkdW1wX2NmZ19mbXRpbnQoc0tlcmJlcm9zVXNlS3VzZXJvaywgby0+dXNlX2t1c2Vyb2sp OwogICNlbmRpZgogICNpZmRlZiBHU1NBUEkKLSAJZHVtcF9jZmdfZm10aW50KHNHc3NBdXRoZW50 aWNhdGlvbiwgby0+Z3NzX2F1dGhlbnRpY2F0aW9uKTsKKyAJZHVtcF9jZmdfZm10aW50KHNHU1NB UElBdXRoZW50aWNhdGlvbiwgby0+Z3NzX2F1dGhlbnRpY2F0aW9uKTsKIGRpZmYgLS1naXQgYS9z ZXJ2Y29uZi5oIGIvc2VydmNvbmYuaAotaW5kZXggYmY1ODk5MTFhLi45ODQzZjk2YzUgMTAwNjQ0 CitpbmRleCA2Y2E4OWIyNGUuLjU5ZTk4NjA0YSAxMDA2NDQKIC0tLSBhL3NlcnZjb25mLmgKICsr KyBiL3NlcnZjb25mLmgKLUBAIC0xNTIsNiArMTUyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgewotIAkJ CQkJCSAqIGF1dGhlbnRpY2F0ZWQgd2l0aCBLZXJiZXJvcy4gKi8KLSAJaW50ICAgICBrZXJiZXJv c191bmlxdWVfY2NhY2hlOwkJLyogSWYgdHJ1ZSwgdGhlIGFjcXVpcmVkIHRpY2tldCB3aWxsCi0g CQkJCQkJICogYmUgc3RvcmVkIGluIHBlci1zZXNzaW9uIGNjYWNoZSAqLwotKwlpbnQJdXNlX2t1 c2Vyb2s7Ci0gCWludCAgICAgZ3NzX2F1dGhlbnRpY2F0aW9uOwkvKiBJZiB0cnVlLCBwZXJtaXQg R1NTQVBJIGF1dGhlbnRpY2F0aW9uICovCi0gCWludCAgICAgZ3NzX2tleWV4OwkJLyogSWYgdHJ1 ZSwgcGVybWl0IEdTU0FQSSBrZXkgZXhjaGFuZ2UgKi8KLSAJaW50ICAgICBnc3NfY2xlYW51cF9j cmVkczsJLyogSWYgdHJ1ZSwgZGVzdHJveSBjcmVkIGNhY2hlIG9uIGxvZ291dCAqLworQEAgLTMw NCw2ICszMDQsNyBAQCBTU0hDT05GX0lOVEZMQUcoa2VyYmVyb3NfYXV0aGVudGljYXRpb24sIEtl cmJlcm9zQXV0aGVudGljYXRpb24sIFNTSENGR19BTEwsIDAsCisgU1NIQ09ORl9JTlRGTEFHKGtl cmJlcm9zX29yX2xvY2FsX3Bhc3N3ZCwgS2VyYmVyb3NPckxvY2FsUGFzc3dkLCBTU0hDRkdfR0xP QkFMLCAxLCBTU0hDRkdfQ09QWV9OT05FKSBcCisgU1NIQ09ORl9JTlRGTEFHKGtlcmJlcm9zX3Rp Y2tldF9jbGVhbnVwLCBLZXJiZXJvc1RpY2tldENsZWFudXAsIFNTSENGR19HTE9CQUwsIDEsIFNT SENGR19DT1BZX05PTkUpIFwKKyBTU0hDT05GX0lOVEZMQUcoa2VyYmVyb3NfdW5pcXVlX2NjYWNo ZSwgS2VyYmVyb3NVbmlxdWVDQ2FjaGUsIFNTSENGR19HTE9CQUwsIDAsIFNTSENGR19DT1BZX05P TkUpIFwKKytTU0hDT05GX0lOVEZMQUcodXNlX2t1c2Vyb2ssIEtlcmJlcm9zVXNlS3VzZXJvaywg U1NIQ0ZHX0FMTCwgMSwgU1NIQ0ZHX0NPUFlfTUFUQ0gpIFwKKyBTU0hEX0NPTkZJR19LUkI1X0FG UworICNlbHNlIC8qIEtSQjUgKi8KKyAjZGVmaW5lIFNTSERfQ09ORklHX0VOVFJJRVNfS1JCNSBc CitAQCAtMzExLDYgKzMxMiw3IEBAIFNTSENPTkZfVU5TVVBQT1JURURfSU5UKGtlcmJlcm9zX2F1 dGhlbnRpY2F0aW9uLCBLZXJiZXJvc0F1dGhlbnRpY2F0aW9uLCBTU0hDRkdfCisgU1NIQ09ORl9V TlNVUFBPUlRFRF9JTlQoa2VyYmVyb3Nfb3JfbG9jYWxfcGFzc3dkLCBLZXJiZXJvc09yTG9jYWxQ YXNzd2QsIFNTSENGR19HTE9CQUwpIFwKKyBTU0hDT05GX1VOU1VQUE9SVEVEX0lOVChrZXJiZXJv c190aWNrZXRfY2xlYW51cCwgS2VyYmVyb3NUaWNrZXRDbGVhbnVwLCBTU0hDRkdfR0xPQkFMKSBc CisgU1NIQ09ORl9VTlNVUFBPUlRFRF9JTlQoa2VyYmVyb3NfdW5pcXVlX2NjYWNoZSwgS2VyYmVy b3NVbmlxdWVDQ2FjaGUsIFNTSENGR19HTE9CQUwpIFwKKytTU0hDT05GX1VOU1VQUE9SVEVEX0lO VCh1c2Vfa3VzZXJvaywgS2VyYmVyb3NVc2VLdXNlcm9rLCBTU0hDRkdfQUxMKSBcCisgU1NIQ09O Rl9VTlNVUFBPUlRFRF9JTlQoa2VyYmVyb3NfZ2V0X2Fmc190b2tlbiwgS2VyYmVyb3NHZXRBRlNU b2tlbiwgU1NIQ0ZHX0dMT0JBTCkKKyAjZW5kaWYgLyogS1JCNSAqLworIAogZGlmZiAtLWdpdCBh L3NzaGRfY29uZmlnIGIvc3NoZF9jb25maWcKIGluZGV4IDhkYjlmMGZiMS4uZWE1YTg3OGU2IDEw MDY0NAogLS0tIGEvc3NoZF9jb25maWcKQEAgLTI4NiwxMCArMjQ0LDEwIEBAIGluZGV4IDhkYjlm MGZiMS4uZWE1YTg3OGU2IDEwMDY0NAogICMgR1NTQVBJIG9wdGlvbnMKICAjR1NTQVBJQXV0aGVu dGljYXRpb24gbm8KIGRpZmYgLS1naXQgYS9zc2hkX2NvbmZpZy41IGIvc3NoZF9jb25maWcuNQot aW5kZXggZDBiMGRmZTM2Li4xNzYyODc0YzQgMTAwNjQ0CitpbmRleCAzNzJhZjI0MWIuLmMzYTQ4 MDZlMCAxMDA2NDQKIC0tLSBhL3NzaGRfY29uZmlnLjUKICsrKyBiL3NzaGRfY29uZmlnLjUKLUBA IC0xMDY1LDYgKzEwNjUsMTAgQEAgVGhlIGRlZmF1bHQgdmFsdWUKK0BAIC0xMDc2LDYgKzEwNzYs MTAgQEAgVGhlIGRlZmF1bHQgdmFsdWUKICAuQ20gbm8KICBjYW4gbGVhZCB0byBvdmVyd3JpdGlu ZyBwcmV2aW91cyB0aWNrZXRzIGJ5IHN1YnNlcWVudCBjb25uZWN0aW9ucyB0byB0aGUgc2FtZQog IHVzZXIgYWNjb3VudC4KQEAgLTMwMCw3ICsyNTgsNyBAQCBpbmRleCBkMGIwZGZlMzYuLjE3NjI4 NzRjNCAxMDA2NDQKICAuSXQgQ20gS2V4QWxnb3JpdGhtcwogIFNwZWNpZmllcyB0aGUgcGVybWl0 dGVkIEtFWCAoS2V5IEV4Y2hhbmdlKSBhbGdvcml0aG1zIHRoYXQgdGhlIHNlcnZlciB3aWxsCiAg b2ZmZXIgdG8gY2xpZW50cy4KLUBAIC0xMzc5LDYgKzEzODMsNyBAQCBBdmFpbGFibGUga2V5d29y ZHMgYXJlCitAQCAtMTM5MCw2ICsxMzk0LDcgQEAgQXZhaWxhYmxlIGtleXdvcmRzIGFyZQogIC5D bSBJUFFvUyAsCiAgLkNtIEtiZEludGVyYWN0aXZlQXV0aGVudGljYXRpb24gLAogIC5DbSBLZXJi ZXJvc0F1dGhlbnRpY2F0aW9uICwKQEAgLTMwOSw1ICsyNjcsNSBAQCBpbmRleCBkMGIwZGZlMzYu LjE3NjI4NzRjNCAxMDA2NDQKICAuQ20gTWF4QXV0aFRyaWVzICwKICAuQ20gTWF4U2Vzc2lvbnMg LAogLS0gCi0yLjUzLjAKKzIuNTUuMAogCgpkaWZmIC0tZ2l0IGEvMDAxOC1vcGVuc3NoLTYuNHAx LWZyb210by1yZW1vdGUucGF0Y2ggYi8wMDE4LW9wZW5zc2gtNi40cDEtZnJvbXRvLXJlbW90ZS5w YXRjaAppbmRleCAzYmVlNmEzLi45MGYwNDMxIDEwMDY0NAotLS0gYS8wMDE4LW9wZW5zc2gtNi40 cDEtZnJvbXRvLXJlbW90ZS5wYXRjaAorKysgYi8wMDE4LW9wZW5zc2gtNi40cDEtZnJvbXRvLXJl bW90ZS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gYzA5NWUyZjQ4ZTI3OWFmNjVhOTQxOWY1 ODBhYzljYWUxNDQ1M2E5MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYTE5ZGViZjg1 NWQ0MTdkYzhjMzA5ZmY5M2VkNmE5OGM2MTQxOGI2NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK IEZyb206IERtaXRyeSBCZWx5YXZza2l5IDxiZWxkbWl0QGdtYWlsLmNvbT4KIERhdGU6IFRodSwg MTUgTWF5IDIwMjUgMTM6NDM6MjggKzAyMDAKIFN1YmplY3Q6IFtQQVRDSCAxOC81NF0gb3BlbnNz aC02LjRwMS1mcm9tdG8tcmVtb3RlCkBAIC05LDcgKzksNyBAQCBTdWJqZWN0OiBbUEFUQ0ggMTgv NTRdIG9wZW5zc2gtNi40cDEtZnJvbXRvLXJlbW90ZQogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2Vy dGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3NjcC5jIGIvc2NwLmMKLWlu ZGV4IDFmYWE5YTU1NS4uZDg3ZDkzOWExIDEwMDY0NAoraW5kZXggMjhhYzdhMjlkLi40ODIxNTE0 YmEgMTAwNjQ0CiAtLS0gYS9zY3AuYwogKysrIGIvc2NwLmMKIEBAIC0xMTQzLDcgKzExNDMsMTAg QEAgdG9yZW1vdGUoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCBlbnVtIHNjcF9tb2RlX2UgbW9kZSwg Y2hhciAqc2Z0cF9kaXJlY3QpCkBAIC0yNSw1ICsyNSw1IEBAIGluZGV4IDFmYWE5YTU1NS4uZDg3 ZDkzOWExIDEwMDY0NAogIAkJCQlhZGRhcmdzKCZhbGlzdCwgIiVzIiwKICAJCQkJICAgIHJlbW90 ZV9yZW1vdGVfYXJncy5saXN0W2pdKTsKIC0tIAotMi41My4wCisyLjU1LjAKIAoKZGlmZiAtLWdp dCBhLzAwMTktb3BlbnNzaC02LjYuMXAxLWxvZy1pbi1jaHJvb3QucGF0Y2ggYi8wMDE5LW9wZW5z c2gtNi42LjFwMS1sb2ctaW4tY2hyb290LnBhdGNoCmluZGV4IGI0YTQ2YWIuLjg2NGQ5MjAgMTAw NjQ0Ci0tLSBhLzAwMTktb3BlbnNzaC02LjYuMXAxLWxvZy1pbi1jaHJvb3QucGF0Y2gKKysrIGIv MDAxOS1vcGVuc3NoLTYuNi4xcDEtbG9nLWluLWNocm9vdC5wYXRjaApAQCAtMSw5ICsxLDggQEAK LUZyb20gZjE4NzIxMGMxOGY5MzNhM2IyMzljNDliZDA5ZWZlYWJiYTRlNDcxMiBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKK0Zyb20gMWJlZmE4ODY5MjBhZTEyOWMxZmRhZTRiZDBkY2ZhOTYwYzYx OTZjNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IERtaXRyeSBCZWx5YXZza2l5IDxi ZWxkbWl0QGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMTUgTWF5IDIwMjUgMTM6NDM6MjggKzAyMDAK IFN1YmplY3Q6IFtQQVRDSCAxOS81NF0gb3BlbnNzaC02LjYuMXAxLWxvZy1pbi1jaHJvb3QKIAot IyBsb2cgdmlhIG1vbml0b3IgaW4gY2hyb290cyB3aXRob3V0IC9kZXYvbG9nICgjMjY4MSkKIC0t LQogIGxvZy5jICAgICAgICAgICAgICB8IDExICsrKysrKysrKy0tCiAgbG9nLmggICAgICAgICAg ICAgIHwgIDEgKwpAQCAtNTgsMTAgKzU3LDEwIEBAIGluZGV4IDhlOGRmYzIzZi4uNzAwNDhhOGFm IDEwMDY0NAogIGludCAgICAgIGxvZ19jaGFuZ2VfbGV2ZWwoTG9nTGV2ZWwpOwogIGludCAgICAg IGxvZ19pc19vbl9zdGRlcnIodm9pZCk7CiBkaWZmIC0tZ2l0IGEvbW9uaXRvci5jIGIvbW9uaXRv ci5jCi1pbmRleCAwMjVjNmFiYmUuLjUyNTUwODNhYiAxMDA2NDQKK2luZGV4IGNkZGJjMGEyMi4u N2UxYzkwNjFjIDEwMDY0NAogLS0tIGEvbW9uaXRvci5jCiArKysgYi9tb25pdG9yLmMKLUBAIC0y MDMwLDkgKzIwMzAsMjIgQEAgbW9uaXRvcl9pbml0KHZvaWQpCitAQCAtMjAwNCw5ICsyMDA0LDIy IEBAIG1vbml0b3JfaW5pdCh2b2lkKQogIH0KICAKICB2b2lkCkBAIC0xMDAsNyArOTksNyBAQCBp bmRleCA3NWEwZDYxODEuLmY0NzIxYzQ3MiAxMDA2NDQKICBzdHJ1Y3QgQXV0aGN0eHQ7CiAgdm9p ZCBtb25pdG9yX2NoaWxkX3ByZWF1dGgoc3RydWN0IHNzaCAqLCBzdHJ1Y3QgbW9uaXRvciAqKTsK IGRpZmYgLS1naXQgYS9zZXNzaW9uLmMgYi9zZXNzaW9uLmMKLWluZGV4IDUxN2NhYjZiNi4uMGMy NjQ0OGQ5IDEwMDY0NAoraW5kZXggYzJjZGQ2YzRmLi41NzI0ODdiNGEgMTAwNjQ0CiAtLS0gYS9z ZXNzaW9uLmMKICsrKyBiL3Nlc3Npb24uYwogQEAgLTE2Miw2ICsxNjIsNyBAQCBsb2dpbl9jYXBf dCAqbGM7CkBAIC0xNTQsMTIgKzE1MywxMiBAQCBpbmRleCA1MTdjYWI2YjYuLjBjMjY0NDhkOSAx MDA2NDQKICAJZG9fcmNfZmlsZXMoc3NoLCBzLCBzaGVsbCk7CiAgCiAgCS8qIHJlc3RvcmUgU0lH UElQRSBmb3IgY2hpbGQgKi8KLUBAIC0xNjQ1LDkgKzE2NDEsMTcgQEAgZG9fY2hpbGQoc3RydWN0 IHNzaCAqc3NoLCBTZXNzaW9uICpzLCBjb25zdCBjaGFyICpjb21tYW5kKQorQEAgLTE2NDYsOSAr MTY0MiwxNyBAQCBkb19jaGlsZChzdHJ1Y3Qgc3NoICpzc2gsIFNlc3Npb24gKnMsIGNvbnN0IGNo YXIgKmNvbW1hbmQpCiAgI2lmZGVmIFdJVEhfU0VMSU5VWAogIAkJc3NoX3NlbGludXhfY2hhbmdl X2NvbnRleHQoInNmdHBkX3QiKTsKICAjZW5kaWYKLS0JCWV4aXQoc2Z0cF9zZXJ2ZXJfbWFpbihp LCBhcmd2LCBzLT5wdykpOwotKwkJZXhpdChzZnRwX3NlcnZlcl9tYWluKGksIGFyZ3YsIHMtPnB3 LCBoYXZlX2Rldl9sb2cpKTsKKy0JCWV4aXQoc2Z0cF9zZXJ2ZXJfbWFpbihzZnRwX2FyZ2MsIHNm dHBfYXJndiwgcy0+cHcpKTsKKysJCWV4aXQoc2Z0cF9zZXJ2ZXJfbWFpbihzZnRwX2FyZ2MsIHNm dHBfYXJndiwgcy0+cHcsIGhhdmVfZGV2X2xvZykpOwogIAl9CiAgCiArCS8qCkBAIC0xODUsMTAg KzE4NCwxMCBAQCBpbmRleCAyYzcwZjg5YmMuLmJiYjc5ZjI3OCAxMDA2NDQKICsJcmV0dXJuIChz ZnRwX3NlcnZlcl9tYWluKGFyZ2MsIGFyZ3YsIHVzZXJfcHcsIDApKTsKICB9CiBkaWZmIC0tZ2l0 IGEvc2Z0cC1zZXJ2ZXIuYyBiL3NmdHAtc2VydmVyLmMKLWluZGV4IGViZGIzMWQzMi4uN2E2ZTRm YTg4IDEwMDY0NAoraW5kZXggZjg3ZmM1ODI1Li5lZWY5YTk2ZjggMTAwNjQ0CiAtLS0gYS9zZnRw LXNlcnZlci5jCiArKysgYi9zZnRwLXNlcnZlci5jCi1AQCAtMTg5Myw3ICsxODkzLDcgQEAgc2Z0 cF9zZXJ2ZXJfdXNhZ2Uodm9pZCkKK0BAIC0xOTE4LDcgKzE5MTgsNyBAQCBzZnRwX3NlcnZlcl91 c2FnZSh2b2lkKQogIH0KICAKICBpbnQKQEAgLTE5Nyw3ICsxOTYsNyBAQCBpbmRleCBlYmRiMzFk MzIuLjdhNmU0ZmE4OCAxMDA2NDQKICB7CiAgCWludCBpLCByLCBpbiwgb3V0LCBjaCwgc2tpcGFy Z3MgPSAwLCBsb2dfc3RkZXJyID0gMDsKICAJc3NpemVfdCBsZW4sIG9sZW47Ci1AQCAtMTkwNSw3 ICsxOTA1LDcgQEAgc2Z0cF9zZXJ2ZXJfbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YsIHN0cnVj dCBwYXNzd2QgKnVzZXJfcHcpCitAQCAtMTkzMCw3ICsxOTMwLDcgQEAgc2Z0cF9zZXJ2ZXJfbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YsIHN0cnVjdCBwYXNzd2QgKnVzZXJfcHcpCiAgCWV4dGVy biBjaGFyICpfX3Byb2duYW1lOwogIAogIAlfX3Byb2duYW1lID0gc3NoX2dldF9wcm9nbmFtZShh cmd2WzBdKTsKQEAgLTIwNiw3ICsyMDUsNyBAQCBpbmRleCBlYmRiMzFkMzIuLjdhNmU0ZmE4OCAx MDA2NDQKICAKICAJcHcgPSBwd2NvcHkodXNlcl9wdyk7CiAgCi1AQCAtMTk3OCw3ICsxOTc4LDcg QEAgc2Z0cF9zZXJ2ZXJfbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YsIHN0cnVjdCBwYXNzd2Qg KnVzZXJfcHcpCitAQCAtMjAwMyw3ICsyMDAzLDcgQEAgc2Z0cF9zZXJ2ZXJfbWFpbihpbnQgYXJn YywgY2hhciAqKmFyZ3YsIHN0cnVjdCBwYXNzd2QgKnVzZXJfcHcpCiAgCQl9CiAgCX0KICAKQEAg LTIyNyw3ICsyMjYsNyBAQCBpbmRleCAyYmRlOGJiN2YuLmRkZjFhMzk2OCAxMDA2NDQKICtpbnQJ c2Z0cF9zZXJ2ZXJfbWFpbihpbnQsIGNoYXIgKiosIHN0cnVjdCBwYXNzd2QgKiwgaW50KTsKICB2 b2lkCXNmdHBfc2VydmVyX2NsZWFudXBfZXhpdChpbnQpIF9fYXR0cmlidXRlX18oKG5vcmV0dXJu KSk7CiBkaWZmIC0tZ2l0IGEvc3NoZC1zZXNzaW9uLmMgYi9zc2hkLXNlc3Npb24uYwotaW5kZXgg OWQ3NWE0NTU1Li4yM2I4MGViMDEgMTAwNjQ0CitpbmRleCAzZDI2NzJjZmQuLjZmMDdjODQzYSAx MDA2NDQKIC0tLSBhL3NzaGQtc2Vzc2lvbi5jCiArKysgYi9zc2hkLXNlc3Npb24uYwogQEAgLTM4 Nyw3ICszODcsNyBAQCBwcml2c2VwX3Bvc3RhdXRoKHN0cnVjdCBzc2ggKnNzaCwgQXV0aGN0eHQg KmF1dGhjdHh0KQpAQCAtMjUyLDUgKzI1MSw1IEBAIGluZGV4IDlkNzVhNDU1NS4uMjNiODBlYjAx IDEwMDY0NAogIAkvKiBEZW1vdGUgdGhlIHByaXZhdGUga2V5cyB0byBwdWJsaWMga2V5cy4gKi8K ICAJZGVtb3RlX3NlbnNpdGl2ZV9kYXRhKCk7CiAtLSAKLTIuNTMuMAorMi41NS4wCiAKCmRpZmYg LS1naXQgYS8wMDIwLW9wZW5zc2gtNi42LjFwMS1zY3Atbm9uLWV4aXN0aW5nLWRpcmVjdG9yeS5w YXRjaCBiLzAwMjAtb3BlbnNzaC02LjYuMXAxLXNjcC1ub24tZXhpc3RpbmctZGlyZWN0b3J5LnBh dGNoCmluZGV4IDZlMjY2ZjIuLjJhZjRkZDcgMTAwNjQ0Ci0tLSBhLzAwMjAtb3BlbnNzaC02LjYu MXAxLXNjcC1ub24tZXhpc3RpbmctZGlyZWN0b3J5LnBhdGNoCisrKyBiLzAwMjAtb3BlbnNzaC02 LjYuMXAxLXNjcC1ub24tZXhpc3RpbmctZGlyZWN0b3J5LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAot RnJvbSAyNzY3MjlkYzM3ZDIwNGUzZGE4MDQ1NTc4OGRlZWFjODU0YzcyYjQ2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQorRnJvbSAyZTdhNjM4YjFiYmU3OTU5ZjZlNWIyNTVjMjcwZmE1MGQyMjYy YWRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogRG1pdHJ5IEJlbHlhdnNraXkgPGJl bGRtaXRAZ21haWwuY29tPgogRGF0ZTogVGh1LCAxNSBNYXkgMjAyNSAxMzo0MzoyOCArMDIwMAog U3ViamVjdDogW1BBVENIIDIwLzU0XSBvcGVuc3NoLTYuNi4xcDEtc2NwLW5vbi1leGlzdGluZy1k aXJlY3RvcnkKQEAgLTksNyArOSw3IEBAIFN1YmplY3Q6IFtQQVRDSCAyMC81NF0gb3BlbnNzaC02 LjYuMXAxLXNjcC1ub24tZXhpc3RpbmctZGlyZWN0b3J5CiAgMSBmaWxlIGNoYW5nZWQsIDQgaW5z ZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvc2NwLmMgYi9zY3AuYwotaW5kZXggZDg3ZDkzOWEx Li5iNWFkNDVjMTIgMTAwNjQ0CitpbmRleCA0ODIxNTE0YmEuLmZjYTQzOTNmMyAxMDA2NDQKIC0t LSBhL3NjcC5jCiArKysgYi9zY3AuYwogQEAgLTE4NzEsNiArMTg3MSwxMCBAQCBzaW5rKGludCBh cmdjLCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqc3JjKQpAQCAtMjQsNSArMjQsNSBAQCBpbmRl eCBkODdkOTM5YTEuLmI1YWQ0NWMxMiAxMDA2NDQKICAJCW1vZGUgfD0gU19JV1VTUjsKICAJCWlm ICgob2ZkID0gb3BlbihucCwgT19XUk9OTFl8T19DUkVBVCwgbW9kZSkpID09IC0xKSB7CiAtLSAK LTIuNTMuMAorMi41NS4wCiAKCmRpZmYgLS1naXQgYS8wMDIxLW9wZW5zc2gtNi42cDEtR1NTQVBJ RW5hYmxlazV1c2Vycy5wYXRjaCBiLzAwMjEtb3BlbnNzaC02LjZwMS1HU1NBUElFbmFibGVrNXVz ZXJzLnBhdGNoCmluZGV4IGQ2Mjc3OGIuLmFjNjEzNWEgMTAwNjQ0Ci0tLSBhLzAwMjEtb3BlbnNz aC02LjZwMS1HU1NBUElFbmFibGVrNXVzZXJzLnBhdGNoCisrKyBiLzAwMjEtb3BlbnNzaC02LjZw MS1HU1NBUElFbmFibGVrNXVzZXJzLnBhdGNoCkBAIC0xLDE0ICsxLDE0IEBACi1Gcm9tIGNmNmY4 MzkzNzBiMWY4YTIwN2RlMDhiNGIwMGMyOGNlNjY4NGQxODIgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCitGcm9tIDU3ODQzODFkNmQ4NDJlODhhNWEwZWE4OTZhOWM3MjMyMjc3NTdlZTMgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBEbWl0cnkgQmVseWF2c2tpeSA8YmVsZG1pdEBnbWFp bC5jb20+CiBEYXRlOiBUaHUsIDE1IE1heSAyMDI1IDEzOjQzOjI4ICswMjAwCiBTdWJqZWN0OiBb UEFUQ0ggMjEvNTRdIG9wZW5zc2gtNi42cDEtR1NTQVBJRW5hYmxlazV1c2VycwogCiAtLS0KLSBn c3Mtc2Vydi1rcmI1LmMgfCAgMyArLS0KLSBzZXJ2Y29uZi5jICAgICAgfCAxMyArKysrKysrKysr KystCi0gc2VydmNvbmYuaCAgICAgIHwgIDEgKwotIHNzaGRfY29uZmlnICAgICB8ICAxICsKLSA0 IGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisgZ3NzLXNl cnYta3JiNS5jIHwgMyArLS0KKyBzZXJ2Y29uZi5jICAgICAgfCA1ICsrKysrCisgc2VydmNvbmYu aCAgICAgIHwgNiArKysrLS0KKyBzc2hkX2NvbmZpZyAgICAgfCAxICsKKyA0IGZpbGVzIGNoYW5n ZWQsIDExIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9nc3Mt c2Vydi1rcmI1LmMgYi9nc3Mtc2Vydi1rcmI1LmMKIGluZGV4IDZmNTgyNmNlOC4uNzIzNTA5NDA5 IDEwMDY0NApAQCAtMzIsOTAgKzMyLDUyIEBAIGluZGV4IDZmNTgyNmNlOC4uNzIzNTA5NDA5IDEw MDY0NAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrNWxvZ2luX2V4 aXN0cyk7CiAgCX0KIGRpZmYgLS1naXQgYS9zZXJ2Y29uZi5jIGIvc2VydmNvbmYuYwotaW5kZXgg NzUxMzg4YmMwLi44ZGU4MWZkYzggMTAwNjQ0CitpbmRleCBmYWIzYjQyMzUuLjFiZmU2YTAxNiAx MDA2NDQKIC0tLSBhL3NlcnZjb25mLmMKICsrKyBiL3NlcnZjb25mLmMKLUBAIC0xNDAsNiArMTQw LDcgQEAgaW5pdGlhbGl6ZV9zZXJ2ZXJfb3B0aW9ucyhTZXJ2ZXJPcHRpb25zICpvcHRpb25zKQot IAlvcHRpb25zLT5nc3Nfc3RvcmVfcmVrZXkgPSAtMTsKLSAJb3B0aW9ucy0+Z3NzX2tleF9hbGdv cml0aG1zID0gTlVMTDsKLSAJb3B0aW9ucy0+dXNlX2t1c2Vyb2sgPSAtMTsKLSsJb3B0aW9ucy0+ ZW5hYmxlX2s1dXNlcnMgPSAtMTsKLSAJb3B0aW9ucy0+cGFzc3dvcmRfYXV0aGVudGljYXRpb24g PSAtMTsKLSAJb3B0aW9ucy0+a2JkX2ludGVyYWN0aXZlX2F1dGhlbnRpY2F0aW9uID0gLTE7Ci0g CW9wdGlvbnMtPnBlcm1pdF9lbXB0eV9wYXNzd2QgPSAtMTsKLUBAIC0zOTYsNiArMzk3LDggQEAg ZmlsbF9kZWZhdWx0X3NlcnZlcl9vcHRpb25zKFNlcnZlck9wdGlvbnMgKm9wdGlvbnMpCi0gI2Vu ZGlmCi0gCWlmIChvcHRpb25zLT51c2Vfa3VzZXJvayA9PSAtMSkKLSAJCW9wdGlvbnMtPnVzZV9r dXNlcm9rID0gMTsKLSsJaWYgKG9wdGlvbnMtPmVuYWJsZV9rNXVzZXJzID09IC0xKQotKwkJb3B0 aW9ucy0+ZW5hYmxlX2s1dXNlcnMgPSAwOwotIAlpZiAob3B0aW9ucy0+cGFzc3dvcmRfYXV0aGVu dGljYXRpb24gPT0gLTEpCi0gCQlvcHRpb25zLT5wYXNzd29yZF9hdXRoZW50aWNhdGlvbiA9IDE7 Ci0gCWlmIChvcHRpb25zLT5rYmRfaW50ZXJhY3RpdmVfYXV0aGVudGljYXRpb24gPT0gLTEpCi1A QCAtNTgyLDcgKzU4NSw3IEBAIHR5cGVkZWYgZW51bSB7Ci0gCXNIb3N0S2V5QWxnb3JpdGhtcywg c1BlclNvdXJjZU1heFN0YXJ0dXBzLCBzUGVyU291cmNlTmV0QmxvY2tTaXplLAotIAlzUGVyU291 cmNlUGVuYWx0aWVzLCBzUGVyU291cmNlUGVuYWx0eUV4ZW1wdExpc3QsCi0gCXNDbGllbnRBbGl2 ZUludGVydmFsLCBzQ2xpZW50QWxpdmVDb3VudE1heCwgc0F1dGhvcml6ZWRLZXlzRmlsZSwKLS0J c0dzc0F1dGhlbnRpY2F0aW9uLCBzR3NzQ2xlYW51cENyZWRzLCBzR3NzRGVsZWdhdGVDcmVkcywg c0dzc1N0cmljdEFjY2VwdG9yLAotKwlzR3NzQXV0aGVudGljYXRpb24sIHNHc3NDbGVhbnVwQ3Jl ZHMsIHNHc3NEZWxlZ2F0ZUNyZWRzLCBzR3NzRW5hYmxlazV1c2Vycywgc0dzc1N0cmljdEFjY2Vw dG9yLAotIAlzR3NzS2V5RXgsIHNHc3NLZXhBbGdvcml0aG1zLCBzR3NzU3RvcmVSZWtleSwKLSAJ c0FjY2VwdEVudiwgc1NldEVudiwgc1Blcm1pdFR1bm5lbCwKLSAJc01hdGNoLCBzUGVybWl0T3Bl biwgc1Blcm1pdExpc3Rlbiwgc0ZvcmNlQ29tbWFuZCwgc0Nocm9vdERpcmVjdG9yeSwKLUBAIC02 NzksNiArNjgyLDcgQEAgc3RhdGljIHN0cnVjdCB7Ci0gCXsgImdzc2FwaWtleWV4Y2hhbmdlIiwg c0dzc0tleUV4LCBTU0hDRkdfR0xPQkFMIH0sCi0gCXsgImdzc2FwaXN0b3JlY3JlZGVudGlhbHNv bnJla2V5Iiwgc0dzc1N0b3JlUmVrZXksIFNTSENGR19HTE9CQUwgfSwKLSAJeyAiZ3NzYXBpa2V4 YWxnb3JpdGhtcyIsIHNHc3NLZXhBbGdvcml0aG1zLCBTU0hDRkdfR0xPQkFMIH0sCi0rCXsgImdz c2FwaWVuYWJsZWs1dXNlcnMiLCBzR3NzRW5hYmxlazV1c2VycywgU1NIQ0ZHX0FMTCB9LAotICNl bHNlCi0gCXsgImdzc2FwaWF1dGhlbnRpY2F0aW9uIiwgc1Vuc3VwcG9ydGVkLCBTU0hDRkdfQUxM IH0sCi0gCXsgImdzc2FwaWNsZWFudXBjcmVkZW50aWFscyIsIHNVbnN1cHBvcnRlZCwgU1NIQ0ZH X0dMT0JBTCB9LAotQEAgLTY4OCw2ICs2OTIsNyBAQCBzdGF0aWMgc3RydWN0IHsKLSAJeyAiZ3Nz YXBpa2V5ZXhjaGFuZ2UiLCBzVW5zdXBwb3J0ZWQsIFNTSENGR19HTE9CQUwgfSwKLSAJeyAiZ3Nz YXBpc3RvcmVjcmVkZW50aWFsc29ucmVrZXkiLCBzVW5zdXBwb3J0ZWQsIFNTSENGR19HTE9CQUwg fSwKLSAJeyAiZ3NzYXBpa2V4YWxnb3JpdGhtcyIsIHNVbnN1cHBvcnRlZCwgU1NIQ0ZHX0dMT0JB TCB9LAotKwl7ICJnc3NhcGllbmFibGVrNXVzZXJzIiwgc1Vuc3VwcG9ydGVkLCBTU0hDRkdfQUxM IH0sCi0gI2VuZGlmCi0gCXsgImdzc3VzZXNlc3Npb25jY2FjaGUiLCBzVW5zdXBwb3J0ZWQsIFNT SENGR19HTE9CQUwgfSwKLSAJeyAiZ3NzYXBpdXNlc2Vzc2lvbmNyZWRjYWNoZSIsIHNVbnN1cHBv cnRlZCwgU1NIQ0ZHX0dMT0JBTCB9LAotQEAgLTI0NzIsNiArMjQ3NywxMCBAQCBwcm9jZXNzX3Nl cnZlcl9jb25maWdfbGluZV9kZXB0aChTZXJ2ZXJPcHRpb25zICpvcHRpb25zLCBjaGFyICpsaW5l LAorQEAgLTIyMzQsNiArMjIzNCwxMCBAQCBwcm9jZXNzX3NlcnZlcl9jb25maWdfbGluZV9kZXB0 aChTZXJ2ZXJPcHRpb25zICpvcHRpb25zLCBjaGFyICpsaW5lLAogIAkJaW50cHRyID0gJm9wdGlv bnMtPnVzZV9rdXNlcm9rOwogIAkJZ290byBwYXJzZV9mbGFnOwogIAotKwljYXNlIHNHc3NFbmFi bGVrNXVzZXJzOgorKwljYXNlIHNHU1NBUElFbmFibGVrNXVzZXJzOgogKwkJaW50cHRyID0gJm9w dGlvbnMtPmVuYWJsZV9rNXVzZXJzOwogKwkJZ290byBwYXJzZV9mbGFnOwogKwogIAljYXNlIHNN YXRjaDoKICAJCWlmIChjbWRsaW5lKQogIAkJCWZhdGFsKCJNYXRjaCBkaXJlY3RpdmUgbm90IHN1 cHBvcnRlZCBhcyBhIGNvbW1hbmQtbGluZSAiCi1AQCAtMzA0MCw2ICszMDQ5LDcgQEAgY29weV9z ZXRfc2VydmVyX29wdGlvbnMoU2VydmVyT3B0aW9ucyAqZHN0LCBTZXJ2ZXJPcHRpb25zICpzcmMs IGludCBwcmVhdXRoKQotIAlNX0NQX0lOVE9QVChpcF9xb3NfaW50ZXJhY3RpdmUpOwotIAlNX0NQ X0lOVE9QVChpcF9xb3NfYnVsayk7Ci0gCU1fQ1BfSU5UT1BUKHVzZV9rdXNlcm9rKTsKLSsJTV9D UF9JTlRPUFQoZW5hYmxlX2s1dXNlcnMpOwotIAlNX0NQX0lOVE9QVChyZWtleV9saW1pdCk7Ci0g CU1fQ1BfSU5UT1BUKHJla2V5X2ludGVydmFsKTsKLSAJTV9DUF9JTlRPUFQobG9nX2xldmVsKTsK LUBAIC0zMzUwLDYgKzMzNjAsNyBAQCBkdW1wX2NvbmZpZyhTZXJ2ZXJPcHRpb25zICpvKQorQEAg LTQyNDgsNiArNDI1Miw3IEBAIGR1bXBfY29uZmlnKFNlcnZlck9wdGlvbnMgKm8pCiAgIyBlbmRp ZgogIAlkdW1wX2NmZ19mbXRpbnQoc0tlcmJlcm9zVW5pcXVlQ0NhY2hlLCBvLT5rZXJiZXJvc191 bmlxdWVfY2NhY2hlKTsKICAJZHVtcF9jZmdfZm10aW50KHNLZXJiZXJvc1VzZUt1c2Vyb2ssIG8t PnVzZV9rdXNlcm9rKTsKLSsJZHVtcF9jZmdfZm10aW50KHNHc3NFbmFibGVrNXVzZXJzLCBvLT5l bmFibGVfazV1c2Vycyk7CisrCWR1bXBfY2ZnX2ZtdGludChzR1NTQVBJRW5hYmxlazV1c2Vycywg by0+ZW5hYmxlX2s1dXNlcnMpOwogICNlbmRpZgogICNpZmRlZiBHU1NBUEkKLSAJZHVtcF9jZmdf Zm10aW50KHNHc3NBdXRoZW50aWNhdGlvbiwgby0+Z3NzX2F1dGhlbnRpY2F0aW9uKTsKKyAJZHVt cF9jZmdfZm10aW50KHNHU1NBUElBdXRoZW50aWNhdGlvbiwgby0+Z3NzX2F1dGhlbnRpY2F0aW9u KTsKIGRpZmYgLS1naXQgYS9zZXJ2Y29uZi5oIGIvc2VydmNvbmYuaAotaW5kZXggOTg0M2Y5NmM1 Li41NjkxMDBlNDcgMTAwNjQ0CitpbmRleCA1OWU5ODYwNGEuLjdlODA5Y2ZmZiAxMDA2NDQKIC0t LSBhL3NlcnZjb25mLmgKICsrKyBiL3NlcnZjb25mLmgKLUBAIC0xNTMsNiArMTUzLDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgewotIAlpbnQgICAgIGtlcmJlcm9zX3VuaXF1ZV9jY2FjaGU7CQkvKiBJZiB0 cnVlLCB0aGUgYWNxdWlyZWQgdGlja2V0IHdpbGwKLSAJCQkJCQkgKiBiZSBzdG9yZWQgaW4gcGVy LXNlc3Npb24gY2NhY2hlICovCi0gCWludAl1c2Vfa3VzZXJvazsKLSsJaW50CQllbmFibGVfazV1 c2VyczsKLSAJaW50ICAgICBnc3NfYXV0aGVudGljYXRpb247CS8qIElmIHRydWUsIHBlcm1pdCBH U1NBUEkgYXV0aGVudGljYXRpb24gKi8KLSAJaW50ICAgICBnc3Nfa2V5ZXg7CQkvKiBJZiB0cnVl LCBwZXJtaXQgR1NTQVBJIGtleSBleGNoYW5nZSAqLwotIAlpbnQgICAgIGdzc19jbGVhbnVwX2Ny ZWRzOwkvKiBJZiB0cnVlLCBkZXN0cm95IGNyZWQgY2FjaGUgb24gbG9nb3V0ICovCitAQCAtMzI1 LDcgKzMyNSw4IEBAIFNTSENPTkZfSU5URkxBRyhnc3NfZGVsZWdfY3JlZHMsIEdTU0FQSURlbGVn YXRlQ3JlZGVudGlhbHMsIFNTSENGR19HTE9CQUwsIDEsIFNTCisgU1NIQ09ORl9JTlRGTEFHKGdz c19zdHJpY3RfYWNjZXB0b3IsIEdTU0FQSVN0cmljdEFjY2VwdG9yQ2hlY2ssIFNTSENGR19HTE9C QUwsIDEsIFNTSENGR19DT1BZX05PTkUpIFwKKyBTU0hDT05GX0lOVEZMQUcoZ3NzX2tleWV4LCBH U1NBUElLZXlFeGNoYW5nZSwgU1NIQ0ZHX0dMT0JBTCwgMCwgU1NIQ0ZHX0NPUFlfTk9ORSkgXAor IFNTSENPTkZfSU5URkxBRyhnc3Nfc3RvcmVfcmVrZXksIEdTU0FQSVN0b3JlQ3JlZGVudGlhbHNP blJla2V5LCBTU0hDRkdfR0xPQkFMLCAwLCBTU0hDRkdfQ09QWV9OT05FKSBcCistU1NIQ09ORl9T VFJJTkcoZ3NzX2tleF9hbGdvcml0aG1zLCBHU1NBUElLZXhBbGdvcml0aG1zLCBTU0hDRkdfR0xP QkFMLCBTU0hDRkdfQ09QWV9OT05FKQorK1NTSENPTkZfU1RSSU5HKGdzc19rZXhfYWxnb3JpdGht cywgR1NTQVBJS2V4QWxnb3JpdGhtcywgU1NIQ0ZHX0dMT0JBTCwgU1NIQ0ZHX0NPUFlfTk9ORSkg XAorK1NTSENPTkZfSU5URkxBRyhlbmFibGVfazV1c2VycywgR1NTQVBJRW5hYmxlazV1c2Vycywg U1NIQ0ZHX0FMTCwgMCwgU1NIQ0ZHX0NPUFlfTUFUQ0gpCisgI2Vsc2UgLyogR1NTQVBJICovCisg I2RlZmluZSBTU0hEX0NPTkZJR19FTlRSSUVTX0dTUyBcCisgU1NIQ09ORl9VTlNVUFBPUlRFRF9J TlQoZ3NzX2F1dGhlbnRpY2F0aW9uLCBHU1NBUElBdXRoZW50aWNhdGlvbiwgU1NIQ0ZHX0FMTCkg XAorQEAgLTMzNCw3ICszMzUsOCBAQCBTU0hDT05GX1VOU1VQUE9SVEVEX0lOVChnc3NfZGVsZWdf Y3JlZHMsIEdTU0FQSURlbGVnYXRlQ3JlZGVudGlhbHMsIFNTSENGR19HTE9CQQorIFNTSENPTkZf VU5TVVBQT1JURURfSU5UKGdzc19zdHJpY3RfYWNjZXB0b3IsIEdTU0FQSVN0cmljdEFjY2VwdG9y Q2hlY2ssIFNTSENGR19HTE9CQUwpIFwKKyBTU0hDT05GX1VOU1VQUE9SVEVEX0lOVChnc3Nfa2V5 ZXgsIEdTU0FQSUtleUV4Y2hhbmdlLCBTU0hDRkdfR0xPQkFMKSBcCisgU1NIQ09ORl9VTlNVUFBP UlRFRF9JTlQoZ3NzX3N0b3JlX3Jla2V5LCBHU1NBUElTdG9yZUNyZWRlbnRpYWxzT25SZWtleSwg U1NIQ0ZHX0dMT0JBTCkgXAorLVNTSENPTkZfVU5TVVBQT1JURURfU1RSSU5HKGdzc19rZXhfYWxn b3JpdGhtcywgR1NTQVBJS2V4QWxnb3JpdGhtcywgU1NIQ0ZHX0dMT0JBTCkKKytTU0hDT05GX1VO U1VQUE9SVEVEX1NUUklORyhnc3Nfa2V4X2FsZ29yaXRobXMsIEdTU0FQSUtleEFsZ29yaXRobXMs IFNTSENGR19HTE9CQUwpIFwKKytTU0hDT05GX1VOU1VQUE9SVEVEX0lOVChlbmFibGVfazV1c2Vy cywgR1NTQVBJRW5hYmxlazV1c2VycywgU1NIQ0ZHX0FMTCkKKyAjZW5kaWYgLyogR1NTQVBJICov CisgCisgI2RlZmluZSBTU0hEX0NPTkZJR19FTlRSSUVTIFwKIGRpZmYgLS1naXQgYS9zc2hkX2Nv bmZpZyBiL3NzaGRfY29uZmlnCiBpbmRleCBlYTVhODc4ZTYuLjMzNzEzYzg4NiAxMDA2NDQKIC0t LSBhL3NzaGRfY29uZmlnCkBAIC0xMjksNSArOTEsNSBAQCBpbmRleCBlYTVhODc4ZTYuLjMzNzEz Yzg4NiAxMDA2NDQKICAjIFNldCB0aGlzIHRvICd5ZXMnIHRvIGVuYWJsZSBQQU0gYXV0aGVudGlj YXRpb24sIGFjY291bnQgcHJvY2Vzc2luZywKICAjIGFuZCBzZXNzaW9uIHByb2Nlc3NpbmcuIElm IHRoaXMgaXMgZW5hYmxlZCwgUEFNIGF1dGhlbnRpY2F0aW9uIHdpbGwKIC0tIAotMi41My4wCisy LjU1LjAKIAoKZGlmZiAtLWdpdCBhLzAwMjItb3BlbnNzaC02LjhwMS1zc2hkVC1vdXRwdXQucGF0 Y2ggYi8wMDIyLW9wZW5zc2gtNi44cDEtc3NoZFQtb3V0cHV0LnBhdGNoCmluZGV4IGJlYmFkZjMu LjEwODc5MWEgMTAwNjQ0Ci0tLSBhLzAwMjItb3BlbnNzaC02LjhwMS1zc2hkVC1vdXRwdXQucGF0 Y2gKKysrIGIvMDAyMi1vcGVuc3NoLTYuOHAxLXNzaGRULW91dHB1dC5wYXRjaApAQCAtMSw0ICsx LDQgQEAKLUZyb20gNDliZDhhYTE2MWU1MDVlOWM1OWU5NzI0NmU4OTgxYmUzZmQ5MmY2MyBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYTQ3Mjc4MWRhN2M4ZGMyZWY2OTlkODdjMDA4MTg3 MDk2MGM3YmIwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IERtaXRyeSBCZWx5YXZz a2l5IDxiZWxkbWl0QGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMTUgTWF5IDIwMjUgMTM6NDM6Mjgg KzAyMDAKIFN1YmplY3Q6IFtQQVRDSCAyMi81NF0gb3BlbnNzaC02LjhwMS1zc2hkVC1vdXRwdXQK QEAgLTksMTAgKzksMTAgQEAgU3ViamVjdDogW1BBVENIIDIyLzU0XSBvcGVuc3NoLTYuOHAxLXNz aGRULW91dHB1dAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQogCiBkaWZmIC0tZ2l0IGEvc2VydmNvbmYuYyBiL3NlcnZjb25mLmMKLWluZGV4IDhkZTgxZmRj OC4uODA0NTc1NmZiIDEwMDY0NAoraW5kZXggMWJmZTZhMDE2Li44YzFlOWMyNTMgMTAwNjQ0CiAt LS0gYS9zZXJ2Y29uZi5jCiArKysgYi9zZXJ2Y29uZi5jCi1AQCAtMzQwMyw3ICszNDAzLDcgQEAg ZHVtcF9jb25maWcoU2VydmVyT3B0aW9ucyAqbykKK0BAIC00Mjk1LDcgKzQyOTUsNyBAQCBkdW1w X2NvbmZpZyhTZXJ2ZXJPcHRpb25zICpvKQogIAlkdW1wX2NmZ19zdHJpbmcoc1hBdXRoTG9jYXRp b24sIG8tPnhhdXRoX2xvY2F0aW9uKTsKICAJZHVtcF9jZmdfc3RyaW5nKHNDaXBoZXJzLCBvLT5j aXBoZXJzKTsKICAJZHVtcF9jZmdfc3RyaW5nKHNNYWNzLCBvLT5tYWNzKTsKQEAgLTIyLDUgKzIy LDUgQEAgaW5kZXggOGRlODFmZGM4Li44MDQ1NzU2ZmIgMTAwNjQ0CiAgCWR1bXBfY2ZnX3N0cmlu ZyhzQ2hyb290RGlyZWN0b3J5LCBvLT5jaHJvb3RfZGlyZWN0b3J5KTsKICAJZHVtcF9jZmdfc3Ry aW5nKHNUcnVzdGVkVXNlckNBS2V5cywgby0+dHJ1c3RlZF91c2VyX2NhX2tleXMpOwogLS0gCi0y LjUzLjAKKzIuNTUuMAogCgpkaWZmIC0tZ2l0IGEvMDAyMy1vcGVuc3NoLTYuN3AxLXNmdHAtZm9y Y2UtcGVybWlzc2lvbi5wYXRjaCBiLzAwMjMtb3BlbnNzaC02LjdwMS1zZnRwLWZvcmNlLXBlcm1p c3Npb24ucGF0Y2gKaW5kZXggM2Q3ZjVkMC4uM2E3ZDNjYiAxMDA2NDQKLS0tIGEvMDAyMy1vcGVu c3NoLTYuN3AxLXNmdHAtZm9yY2UtcGVybWlzc2lvbi5wYXRjaAorKysgYi8wMDIzLW9wZW5zc2gt Ni43cDEtc2Z0cC1mb3JjZS1wZXJtaXNzaW9uLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAz ZWE0MWVmOWJmMmRhODgxNGExZjU3OTg5OGE4MzliNTE1MGQ3YjZiIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQorRnJvbSBlMDQ1NWNiMWY5ODkxNDMyMmFmZTAwYzYwMWU3Yjg2NzcyNTMzOTljIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogRG1pdHJ5IEJlbHlhdnNraXkgPGJlbGRtaXRA Z21haWwuY29tPgogRGF0ZTogVGh1LCAxNSBNYXkgMjAyNSAxMzo0MzoyOCArMDIwMAogU3ViamVj dDogW1BBVENIIDIzLzU0XSBvcGVuc3NoLTYuN3AxLXNmdHAtZm9yY2UtcGVybWlzc2lvbgpAQCAt MTAsNyArMTAsNyBAQCBTdWJqZWN0OiBbUEFUQ0ggMjMvNTRdIG9wZW5zc2gtNi43cDEtc2Z0cC1m b3JjZS1wZXJtaXNzaW9uCiAgMiBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAyIGRl bGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc2Z0cC1zZXJ2ZXIuOCBiL3NmdHAtc2VydmVyLjgK LWluZGV4IDUzMTFiZjkyOS4uNWU2ZTNhYTQ0IDEwMDY0NAoraW5kZXggZDkwNjBhYjlhLi5jZDVi MDM1ZDYgMTAwNjQ0CiAtLS0gYS9zZnRwLXNlcnZlci44CiArKysgYi9zZnRwLXNlcnZlci44CiBA QCAtMzgsNiArMzgsNyBAQApAQCAtMjEsNyArMjEsNyBAQCBpbmRleCA1MzExYmY5MjkuLjVlNmUz YWE0NCAxMDA2NDQKICAuRWsKICAuTm0KICAuRmwgUSBBciBwcm90b2NvbF9mZWF0dXJlCi1AQCAt MTM4LDYgKzEzOSwxMiBAQCBTZXRzIGFuIGV4cGxpY2l0CitAQCAtMTQ5LDYgKzE1MCwxMiBAQCBT ZXRzIGFuIGV4cGxpY2l0CiAgLlhyIHVtYXNrIDIKICB0byBiZSBhcHBsaWVkIHRvIG5ld2x5LWNy ZWF0ZWQgZmlsZXMgYW5kIGRpcmVjdG9yaWVzLCBpbnN0ZWFkIG9mIHRoZQogIHVzZXIncyBkZWZh dWx0IG1hc2suCkBAIC0zNSw3ICszNSw3IEBAIGluZGV4IDUzMTFiZjkyOS4uNWU2ZTNhYTQ0IDEw MDY0NAogIC5QcAogIE9uIHNvbWUgc3lzdGVtcywKIGRpZmYgLS1naXQgYS9zZnRwLXNlcnZlci5j IGIvc2Z0cC1zZXJ2ZXIuYwotaW5kZXggN2E2ZTRmYTg4Li5kMThjNGFjYjkgMTAwNjQ0CitpbmRl eCBlZWY5YTk2ZjguLjU2N2NmNmU5YSAxMDA2NDQKIC0tLSBhL3NmdHAtc2VydmVyLmMKICsrKyBi L3NmdHAtc2VydmVyLmMKIEBAIC02OCw2ICs2OCwxMCBAQCBzdHJ1Y3Qgc3NoYnVmICpvcXVldWU7 CkBAIC03Nyw3ICs3Nyw3IEBAIGluZGV4IDdhNmU0ZmE4OC4uZDE4YzRhY2I5IDEwMDY0NAogIAlp ZiAoc3RhdHVzICE9IFNTSDJfRlhfT0spCiAgCQlzZW5kX3N0YXR1cyhpZCwgc3RhdHVzKTsKICAJ ZnJlZShuYW1lKTsKLUBAIC0xODg2LDcgKzE4OTcsNyBAQCBzZnRwX3NlcnZlcl91c2FnZSh2b2lk KQorQEAgLTE5MTEsNyArMTkyMiw3IEBAIHNmdHBfc2VydmVyX3VzYWdlKHZvaWQpCiAgCWZwcmlu dGYoc3RkZXJyLAogIAkgICAgInVzYWdlOiAlcyBbLWVoUl0gWy1kIHN0YXJ0X2RpcmVjdG9yeV0g Wy1mIGxvZ19mYWNpbGl0eV0gIgogIAkgICAgIlstbCBsb2dfbGV2ZWxdXG5cdFstUCBkZW5pZWRf cmVxdWVzdHNdICIKQEAgLTg2LDcgKzg2LDcgQEAgaW5kZXggN2E2ZTRmYTg4Li5kMThjNGFjYjkg MTAwNjQ0CiAgCSAgICAiICAgICAgICVzIC1RIHByb3RvY29sX2ZlYXR1cmVcbiIsCiAgCSAgICBf X3Byb2duYW1lLCBfX3Byb2duYW1lKTsKICAJZXhpdCgxKTsKLUBAIC0xOTEwLDcgKzE5MjEsNyBA QCBzZnRwX3NlcnZlcl9tYWluKGludCBhcmdjLCBjaGFyICoqYXJndiwgc3RydWN0IHBhc3N3ZCAq dXNlcl9wdywgaW50IHJlc2V0X2hhbmRsZQorQEAgLTE5MzUsNyArMTk0Niw3IEBAIHNmdHBfc2Vy dmVyX21haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2LCBzdHJ1Y3QgcGFzc3dkICp1c2VyX3B3LCBp bnQgcmVzZXRfaGFuZGxlCiAgCXB3ID0gcHdjb3B5KHVzZXJfcHcpOwogIAogIAl3aGlsZSAoIXNr aXBhcmdzICYmIChjaCA9IGdldG9wdChhcmdjLCBhcmd2LApAQCAtOTUsNyArOTUsNyBAQCBpbmRl eCA3YTZlNGZhODguLmQxOGM0YWNiOSAxMDA2NDQKICAJCXN3aXRjaCAoY2gpIHsKICAJCWNhc2Ug J1EnOgogIAkJCWlmIChzdHJjYXNlY21wKG9wdGFyZywgInJlcXVlc3RzIikgIT0gMCkgewotQEAg LTE5NzIsNiArMTk4MywxNSBAQCBzZnRwX3NlcnZlcl9tYWluKGludCBhcmdjLCBjaGFyICoqYXJn diwgc3RydWN0IHBhc3N3ZCAqdXNlcl9wdywgaW50IHJlc2V0X2hhbmRsZQorQEAgLTE5OTcsNiAr MjAwOCwxNSBAQCBzZnRwX3NlcnZlcl9tYWluKGludCBhcmdjLCBjaGFyICoqYXJndiwgc3RydWN0 IHBhc3N3ZCAqdXNlcl9wdywgaW50IHJlc2V0X2hhbmRsZQogIAkJCQlmYXRhbCgiSW52YWxpZCB1 bWFzayBcIiVzXCIiLCBvcHRhcmcpOwogIAkJCSh2b2lkKXVtYXNrKChtb2RlX3QpbWFzayk7CiAg CQkJYnJlYWs7CkBAIC0xMTIsNSArMTEyLDUgQEAgaW5kZXggN2E2ZTRmYTg4Li5kMThjNGFjYjkg MTAwNjQ0CiAgCQlkZWZhdWx0OgogIAkJCXNmdHBfc2VydmVyX3VzYWdlKCk7CiAtLSAKLTIuNTMu MAorMi41NS4wCiAKCmRpZmYgLS1naXQgYS8wMDI0LW9wZW5zc2gtNy4ycDItczM5MC1jbG9zZWZy b20ucGF0Y2ggYi8wMDI0LW9wZW5zc2gtNy4ycDItczM5MC1jbG9zZWZyb20ucGF0Y2gKaW5kZXgg YmQzZjRmMy4uZTYwY2Y2MCAxMDA2NDQKLS0tIGEvMDAyNC1vcGVuc3NoLTcuMnAyLXMzOTAtY2xv c2Vmcm9tLnBhdGNoCisrKyBiLzAwMjQtb3BlbnNzaC03LjJwMi1zMzkwLWNsb3NlZnJvbS5wYXRj aApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNmY5MDU5ODc2ZDQzMjNkZTMzY2E3MDZkYTBlODgzZDE0 Mjc1N2Y0NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZDRmN2MzMzM5YWQwM2E3NGU3 MzljOWQ1ZTYxMjlhNjE2MWM1YTA3MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IERt aXRyeSBCZWx5YXZza2l5IDxiZWxkbWl0QGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMTUgTWF5IDIw MjUgMTM6NDM6MjggKzAyMDAKIFN1YmplY3Q6IFtQQVRDSCAyNC81NF0gb3BlbnNzaC03LjJwMi1z MzkwLWNsb3NlZnJvbQpAQCAtNDcsNSArNDcsNSBAQCBpbmRleCA0OWE0ZjM1ZmYuLmY2MTEyNDU4 NSAxMDA2NDQKICAJKHZvaWQpIGNsb3NlZGlyKGRpcnApOwogIAlyZXR1cm47CiAtLSAKLTIuNTMu MAorMi41NS4wCiAKCmRpZmYgLS1naXQgYS8wMDI1LW9wZW5zc2gtNy41cDEtc2FuZGJveC5wYXRj aCBiLzAwMjUtb3BlbnNzaC03LjVwMS1zYW5kYm94LnBhdGNoCmluZGV4IGI1YTI0YTQuLjFkNWJl N2EgMTAwNjQ0Ci0tLSBhLzAwMjUtb3BlbnNzaC03LjVwMS1zYW5kYm94LnBhdGNoCisrKyBiLzAw MjUtb3BlbnNzaC03LjVwMS1zYW5kYm94LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAxNjRh MTU5OWVhN2YxNDc5MTlmNmM5MjVlZTE3YzIxODIwYjllN2VlIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQorRnJvbSA3YzgxNDQzNWQxYzQzOWJjYmZiOTE2YzRlOTk2MmJlNTk2NDFkNjYzIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogRG1pdHJ5IEJlbHlhdnNraXkgPGJlbGRtaXRAZ21h aWwuY29tPgogRGF0ZTogVGh1LCAxNSBNYXkgMjAyNSAxMzo0MzoyOCArMDIwMAogU3ViamVjdDog W1BBVENIIDI1LzU0XSBvcGVuc3NoLTcuNXAxLXNhbmRib3gKQEAgLTksNyArOSw3IEBAIFN1Ympl Y3Q6IFtQQVRDSCAyNS81NF0gb3BlbnNzaC03LjVwMS1zYW5kYm94CiAgMSBmaWxlIGNoYW5nZWQs IDIxIGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3NhbmRib3gtc2VjY29tcC1maWx0ZXIu YyBiL3NhbmRib3gtc2VjY29tcC1maWx0ZXIuYwotaW5kZXggN2IyNDQ0OTMwLi5lMjEwNDhmM2Eg MTAwNjQ0CitpbmRleCBiZjc1M2VlZjIuLmI2NTQxM2M5NSAxMDA2NDQKIC0tLSBhL3NhbmRib3gt c2VjY29tcC1maWx0ZXIuYwogKysrIGIvc2FuZGJveC1zZWNjb21wLWZpbHRlci5jCiBAQCAtMzA1 LDYgKzMwNSw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc29ja19maWx0ZXIgcHJlYXV0aF9pbnNu c1tdID0gewpAQCAtNTUsNSArNTUsNSBAQCBpbmRleCA3YjI0NDQ5MzAuLmUyMTA0OGYzYSAxMDA2 NDQKICAJU0NfQUxMT1coX19OUl9nZXR1aWQpLAogICNlbmRpZgogLS0gCi0yLjUzLjAKKzIuNTUu MAogCgpkaWZmIC0tZ2l0IGEvMDAyNi1vcGVuc3NoLTcuOHAxLXNjcC1pcHY2LnBhdGNoIGIvMDAy Ni1vcGVuc3NoLTcuOHAxLXNjcC1pcHY2LnBhdGNoCmluZGV4IDcxYzczODYuLmQ5NmRiMDUgMTAw NjQ0Ci0tLSBhLzAwMjYtb3BlbnNzaC03LjhwMS1zY3AtaXB2Ni5wYXRjaAorKysgYi8wMDI2LW9w ZW5zc2gtNy44cDEtc2NwLWlwdjYucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDNlODZmZWI4 MjRmMmYxYTdlZmU0YjZiN2IzNWMxNDViZWYxZDBkZDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CitGcm9tIGRmZmM4MmZjZjdjMzE5MjRmYzc5ZWVhMjA1NjFjOGM0Y2M2NzA0NTIgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCiBGcm9tOiBEbWl0cnkgQmVseWF2c2tpeSA8YmVsZG1pdEBnbWFpbC5j b20+CiBEYXRlOiBUaHUsIDE1IE1heSAyMDI1IDEzOjQzOjI4ICswMjAwCiBTdWJqZWN0OiBbUEFU Q0ggMjYvNTRdIG9wZW5zc2gtNy44cDEtc2NwLWlwdjYKQEAgLTksNyArOSw3IEBAIFN1YmplY3Q6 IFtQQVRDSCAyNi81NF0gb3BlbnNzaC03LjhwMS1zY3AtaXB2NgogIDEgZmlsZSBjaGFuZ2VkLCAz IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3NjcC5jIGIvc2Nw LmMKLWluZGV4IGI1YWQ0NWMxMi4uNTYxOGUyOGU3IDEwMDY0NAoraW5kZXggZmNhNDM5M2YzLi5h YzQzZWM1ZjQgMTAwNjQ0CiAtLS0gYS9zY3AuYwogKysrIGIvc2NwLmMKIEBAIC0xMTY0LDcgKzEx NjQsOSBAQCB0b3JlbW90ZShpbnQgYXJnYywgY2hhciAqKmFyZ3YsIGVudW0gc2NwX21vZGVfZSBt b2RlLCBjaGFyICpzZnRwX2RpcmVjdCkKQEAgLTI0LDUgKzI0LDUgQEAgaW5kZXggYjVhZDQ1YzEy Li41NjE4ZTI4ZTcgMTAwNjQ0CiAgCQkJICAgIHRob3N0LCB0YXJnKTsKICAJCQlpZiAoZG9fbG9j YWxfY21kKCZhbGlzdCkgIT0gMCkKIC0tIAotMi41My4wCisyLjU1LjAKIAoKZGlmZiAtLWdpdCBh LzAwMjctb3BlbnNzaC04LjBwMS1jcnlwdG8tcG9saWNpZXMucGF0Y2ggYi8wMDI3LW9wZW5zc2gt OC4wcDEtY3J5cHRvLXBvbGljaWVzLnBhdGNoCmluZGV4IDhhMWI3ZDQuLjYzYzIzYjkgMTAwNjQ0 Ci0tLSBhLzAwMjctb3BlbnNzaC04LjBwMS1jcnlwdG8tcG9saWNpZXMucGF0Y2gKKysrIGIvMDAy Ny1vcGVuc3NoLTguMHAxLWNyeXB0by1wb2xpY2llcy5wYXRjaApAQCAtMSwxOCArMSwxOCBAQAot RnJvbSAwOTE0NzY2YWVkOTAxNzgwZmI3NDRiNGJhMDZlNTAwYWQwM2NmNDI4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQorRnJvbSA3YTRmYjEyNTllNTE2MjE0NDBmZTBkMGEyNzczOWVjZjgyNmIz N2JmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogRG1pdHJ5IEJlbHlhdnNraXkgPGJl bGRtaXRAZ21haWwuY29tPgogRGF0ZTogVGh1LCAxNSBNYXkgMjAyNSAxMzo0MzoyOCArMDIwMAog U3ViamVjdDogW1BBVENIIDI3LzU0XSBvcGVuc3NoLTguMHAxLWNyeXB0by1wb2xpY2llcwogCiAt LS0KLSBzc2hfY29uZmlnLjUgIHwgMTY4ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHNzaF9jb25maWcuNSAgfCAxNjcgKysrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBzc2hkX2NvbmZpZy41IHwgMTg2ICsrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2Vk LCAxNDAgaW5zZXJ0aW9ucygrKSwgMjE0IGRlbGV0aW9ucygtKQorIDIgZmlsZXMgY2hhbmdlZCwg MTM5IGluc2VydGlvbnMoKyksIDIxNCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3NzaF9j b25maWcuNSBiL3NzaF9jb25maWcuNQotaW5kZXggOWU1MTYzNzc0Li4zMDZmYTFkOGEgMTAwNjQ0 CitpbmRleCAwYjViOGJlYWIuLjA0NDdjOGM3ZSAxMDA2NDQKIC0tLSBhL3NzaF9jb25maWcuNQog KysrIGIvc3NoX2NvbmZpZy41Ci1AQCAtNDM4LDE3ICs0MzgsMTMgQEAgQSBzaW5nbGUgYXJndW1l bnQgb2YKK0BAIC00NjgsMTcgKzQ2OCwxMyBAQCBBIHNpbmdsZSBhcmd1bWVudCBvZgogIGNhdXNl cyBubyBDTkFNRXMgdG8gYmUgY29uc2lkZXJlZCBmb3IgY2Fub25pY2FsaXphdGlvbi4KICBUaGlz IGlzIHRoZSBkZWZhdWx0IGJlaGF2aW91ci4KICAuSXQgQ20gQ0FTaWduYXR1cmVBbGdvcml0aG1z CkBAIC0zNSw3ICszNSw3IEBAIGluZGV4IDllNTE2Mzc3NC4uMzA2ZmExZDhhIDEwMDY0NAogIElm IHRoZSBzcGVjaWZpZWQgbGlzdCBiZWdpbnMgd2l0aCBhCiAgLlNxICsKICBjaGFyYWN0ZXIsIHRo ZW4gdGhlIHNwZWNpZmllZCBhbGdvcml0aG1zIHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIGRlZmF1 bHQgc2V0Ci1AQCAtNTg3LDIwICs1ODMsMjUgQEAgSWYgdGhlIG9wdGlvbiBpcyBzZXQgdG8KK0BA IC02MTcsMjAgKzYxMywyNSBAQCBJZiB0aGUgb3B0aW9uIGlzIHNldCB0bwogICh0aGUgZGVmYXVs dCksCiAgdGhlIGNoZWNrIHdpbGwgbm90IGJlIGV4ZWN1dGVkLgogIC5JdCBDbSBDaXBoZXJzCkBA IC02NSw3ICs2NSw3IEBAIGluZGV4IDllNTE2Mzc3NC4uMzA2ZmExZDhhIDEwMDY0NAogIC5QcAog IFRoZSBzdXBwb3J0ZWQgY2lwaGVycyBhcmU6CiAgLkJkIC1saXRlcmFsIC1vZmZzZXQgaW5kZW50 Ci1AQCAtNjE2LDEzICs2MTcsNiBAQCBhZXMyNTYtZ2NtQG9wZW5zc2guY29tCitAQCAtNjQ2LDEz ICs2NDcsNiBAQCBhZXMyNTYtZ2NtQG9wZW5zc2guY29tCiAgY2hhY2hhMjAtcG9seTEzMDVAb3Bl bnNzaC5jb20KICAuRWQKICAuUHAKQEAgLTc5LDcgKzc5LDcgQEAgaW5kZXggOWU1MTYzNzc0Li4z MDZmYTFkOGEgMTAwNjQ0CiAgVGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGNpcGhlcnMgbWF5IGFsc28g YmUgb2J0YWluZWQgdXNpbmcKICAuUXEgc3NoIC1RIGNpcGhlciAuCiAgLkl0IENtIENsZWFyQWxs Rm9yd2FyZGluZ3MKLUBAIC0xMDIyLDYgKzEwMTYsMTEgQEAgY29tbWFuZCBsaW5lIHdpbGwgYmUg cGFzc2VkIHVudG91Y2hlZCB0byB0aGUgR1NTQVBJIGxpYnJhcnkuCitAQCAtMTA1OSw2ICsxMDUz LDExIEBAIGNvbW1hbmQgbGluZSB3aWxsIGJlIHBhc3NlZCB1bnRvdWNoZWQgdG8gdGhlIEdTU0FQ SSBsaWJyYXJ5LgogIFRoZSBkZWZhdWx0IGlzCiAgLkRxIG5vIC4KICAuSXQgQ20gR1NTQVBJS2V4 QWxnb3JpdGhtcwpAQCAtOTEsNyArOTEsNyBAQCBpbmRleCA5ZTUxNjM3NzQuLjMwNmZhMWQ4YSAx MDA2NDQKICBUaGUgbGlzdCBvZiBrZXkgZXhjaGFuZ2UgYWxnb3JpdGhtcyB0aGF0IGFyZSBvZmZl cmVkIGZvciBHU1NBUEkKICBrZXkgZXhjaGFuZ2UuIFBvc3NpYmxlIHZhbHVlcyBhcmUKICAuQmQg LWxpdGVyYWwgLW9mZnNldCAzbgotQEAgLTEwMzQsOSArMTAzMyw2IEBAIGdzcy1uaXN0cDI1Ni1z aGEyNTYtLAorQEAgLTEwNzEsOSArMTA3MCw2IEBAIGdzcy1uaXN0cDI1Ni1zaGEyNTYtLAogIGdz cy1jdXJ2ZTI1NTE5LXNoYTI1Ni0KICAuRWQKICAuUHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBpbmRl eCA5ZTUxNjM3NzQuLjMwNmZhMWQ4YSAxMDA2NDQKICBUaGlzIG9wdGlvbiBvbmx5IGFwcGxpZXMg dG8gY29ubmVjdGlvbnMgdXNpbmcgR1NTQVBJLgogIC5QcAogIFRoZSBsaXN0IG9mIHN1cHBvcnRl ZCBrZXkgZXhjaGFuZ2UgYWxnb3JpdGhtcyBtYXkgYWxzbyBiZSBvYnRhaW5lZCB1c2luZwotQEAg LTEwNTYsMzggKzEwNTMsMjUgQEAgd2lsbCBub3QgYmUgY29udmVydGVkIGF1dG9tYXRpY2FsbHks CitAQCAtMTA5NiwzOCArMTA5MiwyNSBAQCB3aWxsIG5vdCBiZSBjb252ZXJ0ZWQgYXV0b21hdGlj YWxseSwKICBidXQgbWF5IGJlIG1hbnVhbGx5IGhhc2hlZCB1c2luZwogIC5YciBzc2gta2V5Z2Vu IDEgLgogIC5JdCBDbSBIb3N0YmFzZWRBY2NlcHRlZEFsZ29yaXRobXMKQEAgLTE0OCw3ICsxNDgs NyBAQCBpbmRleCA5ZTUxNjM3NzQuLjMwNmZhMWQ4YSAxMDA2NDQKICAuUHAKICBUaGUKICAuRmwg UQotQEAgLTExNDIsNiArMTEyNiwxNyBAQCB0byBwcmVmZXIgdGhlaXIgYWxnb3JpdGhtcy4KK0BA IC0xMTgyLDYgKzExNjUsMTcgQEAgdG8gcHJlZmVyIHRoZWlyIGFsZ29yaXRobXMuCiAgLlBwCiAg VGhlIGxpc3Qgb2YgYXZhaWxhYmxlIHNpZ25hdHVyZSBhbGdvcml0aG1zIG1heSBhbHNvIGJlIG9i dGFpbmVkIHVzaW5nCiAgLlFxIHNzaCAtUSBIb3N0S2V5QWxnb3JpdGhtcyAuCkBAIC0xNjYsNyAr MTY2LDcgQEAgaW5kZXggOWU1MTYzNzc0Li4zMDZmYTFkOGEgMTAwNjQ0CiAgLkl0IENtIEhvc3RL ZXlBbGlhcwogIFNwZWNpZmllcyBhbiBhbGlhcyB0aGF0IHNob3VsZCBiZSB1c2VkIGluc3RlYWQg b2YgdGhlCiAgcmVhbCBob3N0IG5hbWUgd2hlbiBsb29raW5nIHVwIG9yIHNhdmluZyB0aGUgaG9z dCBrZXkKLUBAIC0xMzY0LDYgKzEzNTksMTEgQEAgaXQgbWF5IGJlIHplcm8gb3IgbW9yZSBvZjoK K0BAIC0xMzc5LDYgKzEzNzMsMTEgQEAgaXQgbWF5IGJlIHplcm8gb3IgbW9yZSBvZjoKICBhbmQK ICAuQ20gcGFtIC4KICAuSXQgQ20gS2V4QWxnb3JpdGhtcwpAQCAtMTc4LDcgKzE3OCw3IEBAIGlu ZGV4IDllNTE2Mzc3NC4uMzA2ZmExZDhhIDEwMDY0NAogIFNwZWNpZmllcyB0aGUgcGVybWl0dGVk IEtFWCAoS2V5IEV4Y2hhbmdlKSBhbGdvcml0aG1zIHRoYXQgd2lsbCBiZSB1c2VkIGFuZAogIHRo ZWlyIHByZWZlcmVuY2Ugb3JkZXIuCiAgVGhlIHNlbGVjdGVkIGFsZ29yaXRobSB3aWxsIGJlIHRo ZSBmaXJzdCBhbGdvcml0aG0gaW4gdGhpcyBsaXN0IHRoYXQKLUBAIC0xMzc1LDI4ICsxMzc0LDE2 IEBAIE11bHRpcGxlIGFsZ29yaXRobXMgbXVzdCBiZSBjb21tYS1zZXBhcmF0ZWQuCitAQCAtMTM4 NywyOCArMTM4NiwxNiBAQCBNdWx0aXBsZSBhbGdvcml0aG1zIG11c3QgYmUgY29tbWEtc2VwYXJh dGVkLgogIC5QcAogIElmIHRoZSBzcGVjaWZpZWQgbGlzdCBiZWdpbnMgd2l0aCBhCiAgLlNxICsK QEAgLTIxMSw3ICsyMTEsNyBAQCBpbmRleCA5ZTUxNjM3NzQuLjMwNmZhMWQ4YSAxMDA2NDQKICAu UHAKICBUaGUgbGlzdCBvZiBzdXBwb3J0ZWQga2V5IGV4Y2hhbmdlIGFsZ29yaXRobXMgbWF5IGFs c28gYmUgb2J0YWluZWQgdXNpbmcKICAuUXEgc3NoIC1RIGtleCAuCi1AQCAtMTUxMCwzNyArMTQ5 OCwzMyBAQCBmdW5jdGlvbiwgYW5kIGFsbCBjb2RlIGluIHRoZQorQEAgLTE1MjUsMzcgKzE1MTIs MzMgQEAgZnVuY3Rpb24sIGFuZCBhbGwgY29kZSBpbiB0aGUKICBmaWxlLgogIFRoaXMgb3B0aW9u IGlzIGludGVuZGVkIGZvciBkZWJ1Z2dpbmcgYW5kIG5vIG92ZXJyaWRlcyBhcmUgZW5hYmxlZCBi eSBkZWZhdWx0LgogIC5JdCBDbSBNQUNzCkBAIC0yNTgsNyArMjU4LDcgQEAgaW5kZXggOWU1MTYz Nzc0Li4zMDZmYTFkOGEgMTAwNjQ0CiAgVGhlIGxpc3Qgb2YgYXZhaWxhYmxlIE1BQyBhbGdvcml0 aG1zIG1heSBhbHNvIGJlIG9idGFpbmVkIHVzaW5nCiAgLlFxIHNzaCAtUSBtYWMgLgogIC5JdCBD bSBOb0hvc3RBdXRoZW50aWNhdGlvbkZvckxvY2FsaG9zdAotQEAgLTE3MjksNDEgKzE3MTMsMzEg QEAgaW5zdGVhZCBvZiBjb250aW51aW5nIHRvIGV4ZWN1dGUgYW5kIHBhc3MgZGF0YS4KK0BAIC0x NzQ0LDQxICsxNzI3LDMxIEBAIGluc3RlYWQgb2YgY29udGludWluZyB0byBleGVjdXRlIGFuZCBw YXNzIGRhdGEuCiAgVGhlIGRlZmF1bHQgaXMKICAuQ20gbm8gLgogIC5JdCBDbSBQdWJrZXlBY2Nl cHRlZEFsZ29yaXRobXMKQEAgLTMxMiw3ICszMTIsNyBAQCBpbmRleCA5ZTUxNjM3NzQuLjMwNmZh MWQ4YSAxMDA2NDQKICAuSXQgQ20gUHVia2V5QXV0aGVudGljYXRpb24KICBTcGVjaWZpZXMgd2hl dGhlciB0byB0cnkgcHVibGljIGtleSBhdXRoZW50aWNhdGlvbi4KICBUaGUgYXJndW1lbnQgdG8g dGhpcyBrZXl3b3JkIG11c3QgYmUKLUBAIC0yNTE3LDcgKzI0OTEsOSBAQCBmb3IgdGhvc2UgdXNl cnMgd2hvIGRvIG5vdCBoYXZlIGEgY29uZmlndXJhdGlvbiBmaWxlLgorQEAgLTI1MzIsNyArMjUw NSw5IEBAIGZvciB0aG9zZSB1c2VycyB3aG8gZG8gbm90IGhhdmUgYSBjb25maWd1cmF0aW9uIGZp bGUuCiAgVGhpcyBmaWxlIG11c3QgYmUgd29ybGQtcmVhZGFibGUuCiAgLkVsCiAgLlNoIFNFRSBB TFNPCkBAIC0zMjQsNyArMzI0LDcgQEAgaW5kZXggOWU1MTYzNzc0Li4zMDZmYTFkOGEgMTAwNjQ0 CiAgLkFuIC1ub3NwbGl0CiAgT3BlblNTSCBpcyBhIGRlcml2YXRpdmUgb2YgdGhlIG9yaWdpbmFs IGFuZCBmcmVlCiBkaWZmIC0tZ2l0IGEvc3NoZF9jb25maWcuNSBiL3NzaGRfY29uZmlnLjUKLWlu ZGV4IDE3NjI4NzRjNC4uMWQxNmRhYmFmIDEwMDY0NAoraW5kZXggYzNhNDgwNmUwLi41OTk4Mjc1 ZDIgMTAwNjQ0CiAtLS0gYS9zc2hkX2NvbmZpZy41CiArKysgYi9zc2hkX2NvbmZpZy41CiBAQCAt MzgzLDE3ICszODMsMTMgQEAgSWYgdGhlIGFyZ3VtZW50IGlzCkBAIC0zOTQsNyArMzk0LDcgQEAg aW5kZXggMTc2Mjg3NGM0Li4xZDE2ZGFiYWYgMTAwNjQ0CiAgVGhlIGxpc3Qgb2YgYXZhaWxhYmxl IGNpcGhlcnMgbWF5IGFsc28gYmUgb2J0YWluZWQgdXNpbmcKICAuUXEgc3NoIC1RIGNpcGhlciAu CiAgLkl0IENtIENsaWVudEFsaXZlQ291bnRNYXgKLUBAIC03ODksNTggKzc4Myw0NiBAQCBGb3Ig dGhpcyB0byB3b3JrCitAQCAtNzk3LDU4ICs3OTEsNDYgQEAgRm9yIHRoaXMgdG8gd29yawogIC5D bSBHU1NBUElLZXlFeGNoYW5nZQogIG5lZWRzIHRvIGJlIGVuYWJsZWQgaW4gdGhlIHNlcnZlciBh bmQgYWxzbyB1c2VkIGJ5IHRoZSBjbGllbnQuCiAgLkl0IENtIEdTU0FQSUtleEFsZ29yaXRobXMK QEAgLTQ3Miw3ICs0NzIsNyBAQCBpbmRleCAxNzYyODc0YzQuLjFkMTZkYWJhZiAxMDA2NDQKICAu UHAKICBUaGUgbGlzdCBvZiBhdmFpbGFibGUgc2lnbmF0dXJlIGFsZ29yaXRobXMgbWF5IGFsc28g YmUgb2J0YWluZWQgdXNpbmcKICAuUXEgc3NoIC1RIEhvc3RiYXNlZEFjY2VwdGVkQWxnb3JpdGht cyAuCi1AQCAtOTA0LDI3ICs4ODYsMTMgQEAgaXMgc3BlY2lmaWVkLCB0aGUgbG9jYXRpb24gb2Yg dGhlIHNvY2tldCB3aWxsIGJlIHJlYWQgZnJvbSB0aGUKK0BAIC05MTUsMjcgKzg5NywxMyBAQCBp cyBzcGVjaWZpZWQsIHRoZSBsb2NhdGlvbiBvZiB0aGUgc29ja2V0IHdpbGwgYmUgcmVhZCBmcm9t IHRoZQogIC5FdiBTU0hfQVVUSF9TT0NLCiAgZW52aXJvbm1lbnQgdmFyaWFibGUuCiAgLkl0IENt IEhvc3RLZXlBbGdvcml0aG1zCkBAIC01MDUsNyArNTA1LDcgQEAgaW5kZXggMTc2Mjg3NGM0Li4x ZDE2ZGFiYWYgMTAwNjQ0CiAgVGhlIGxpc3Qgb2YgYXZhaWxhYmxlIHNpZ25hdHVyZSBhbGdvcml0 aG1zIG1heSBhbHNvIGJlIG9idGFpbmVkIHVzaW5nCiAgLlFxIHNzaCAtUSBIb3N0S2V5QWxnb3Jp dGhtcyAuCiAgLkl0IENtIElnbm9yZVJob3N0cwotQEAgLTEwNzAsNiArMTAzOCwxMSBAQCBTcGVj aWZpZXMgd2hldGhlciB0byBsb29rIGF0IC5rNWxvZ2luIGZpbGUgZm9yIHVzZXIncyBhbGlhc2Vz LgorQEAgLTEwODEsNiArMTA0OSwxMSBAQCBTcGVjaWZpZXMgd2hldGhlciB0byBsb29rIGF0IC5r NWxvZ2luIGZpbGUgZm9yIHVzZXIncyBhbGlhc2VzLgogIFRoZSBkZWZhdWx0IGlzCiAgLkNtIHll cyAuCiAgLkl0IENtIEtleEFsZ29yaXRobXMKQEAgLTUxNyw3ICs1MTcsNyBAQCBpbmRleCAxNzYy ODc0YzQuLjFkMTZkYWJhZiAxMDA2NDQKICBTcGVjaWZpZXMgdGhlIHBlcm1pdHRlZCBLRVggKEtl eSBFeGNoYW5nZSkgYWxnb3JpdGhtcyB0aGF0IHRoZSBzZXJ2ZXIgd2lsbAogIG9mZmVyIHRvIGNs aWVudHMuCiAgVGhlIG9yZGVyaW5nIG9mIHRoaXMgbGlzdCBpcyBub3QgaW1wb3J0YW50LCBhcyB0 aGUgY2xpZW50IHNwZWNpZmllcyB0aGUKLUBAIC0xMDc4LDE2ICsxMDUxLDE2IEBAIE11bHRpcGxl IGFsZ29yaXRobXMgbXVzdCBiZSBjb21tYS1zZXBhcmF0ZWQuCitAQCAtMTA4OSwxNiArMTA2Miwx NiBAQCBNdWx0aXBsZSBhbGdvcml0aG1zIG11c3QgYmUgY29tbWEtc2VwYXJhdGVkLgogIC5QcAog IElmIHRoZSBzcGVjaWZpZWQgbGlzdCBiZWdpbnMgd2l0aCBhCiAgLlNxICsKQEAgLTUzOCw3ICs1 MzgsNyBAQCBpbmRleCAxNzYyODc0YzQuLjFkMTZkYWJhZiAxMDA2NDQKICAuUHAKICBUaGUgc3Vw cG9ydGVkIGFsZ29yaXRobXMgYXJlOgogIC5QcAotQEAgLTExMjQsMTQgKzEwOTcsNiBAQCBzbnRy dXA3NjF4MjU1MTktc2hhNTEyCitAQCAtMTEzNSwxNCArMTEwOCw2IEBAIHNudHJ1cDc2MXgyNTUx OS1zaGE1MTIKICBzbnRydXA3NjF4MjU1MTktc2hhNTEyQG9wZW5zc2guY29tCiAgLkVsCiAgLlBw CkBAIC01NTMsNyArNTUzLDcgQEAgaW5kZXggMTc2Mjg3NGM0Li4xZDE2ZGFiYWYgMTAwNjQ0CiAg VGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGtleSBleGNoYW5nZSBhbGdvcml0aG1zIG1heSBhbHNvIGJl IG9idGFpbmVkIHVzaW5nCiAgLlFxIHNzaCAtUSBLZXhBbGdvcml0aG1zIC4KICAuSXQgQ20gTGlz dGVuQWRkcmVzcwotQEAgLTEyMTgsMjEgKzExODMsMjYgQEAgZnVuY3Rpb24sIGFuZCBhbGwgY29k ZSBpbiB0aGUKK0BAIC0xMjI5LDIxICsxMTk0LDI2IEBAIGZ1bmN0aW9uLCBhbmQgYWxsIGNvZGUg aW4gdGhlCiAgZmlsZS4KICBUaGlzIG9wdGlvbiBpcyBpbnRlbmRlZCBmb3IgZGVidWdnaW5nIGFu ZCBubyBvdmVycmlkZXMgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdC4KICAuSXQgQ20gTUFDcwpAQCAt NTg0LDcgKzU4NCw3IEBAIGluZGV4IDE3NjI4NzRjNC4uMWQxNmRhYmFmIDEwMDY0NAogIC5QcAog IFRoZSBhbGdvcml0aG1zIHRoYXQgY29udGFpbgogIC5RcSAtZXRtCi1AQCAtMTI3NSwxNSArMTI0 NSw2IEBAIHVtYWMtNjQtZXRtQG9wZW5zc2guY29tCitAQCAtMTI4NiwxNSArMTI1Niw2IEBAIHVt YWMtNjQtZXRtQG9wZW5zc2guY29tCiAgdW1hYy0xMjgtZXRtQG9wZW5zc2guY29tCiAgLkVsCiAg LlBwCkBAIC02MDAsNyArNjAwLDcgQEAgaW5kZXggMTc2Mjg3NGM0Li4xZDE2ZGFiYWYgMTAwNjQ0 CiAgVGhlIGxpc3Qgb2YgYXZhaWxhYmxlIE1BQyBhbGdvcml0aG1zIG1heSBhbHNvIGJlIG9idGFp bmVkIHVzaW5nCiAgLlFxIHNzaCAtUSBtYWMgLgogIC5JdCBDbSBNYXRjaAotQEAgLTE3NzMsMzgg KzE3MzQsMjUgQEAgb3IgZXF1aXZhbGVudC4pCitAQCAtMTc4NCwzOCArMTc0NSwyNSBAQCBvciBl cXVpdmFsZW50LikKICBUaGUgZGVmYXVsdCBpcwogIC5DbSB5ZXMgLgogIC5JdCBDbSBQdWJrZXlB Y2NlcHRlZEFsZ29yaXRobXMKQEAgLTY0OCw3ICs2NDgsNyBAQCBpbmRleCAxNzYyODc0YzQuLjFk MTZkYWJhZiAxMDA2NDQKICAuUHAKICBUaGUgbGlzdCBvZiBhdmFpbGFibGUgc2lnbmF0dXJlIGFs Z29yaXRobXMgbWF5IGFsc28gYmUgb2J0YWluZWQgdXNpbmcKICAuUXEgc3NoIC1RIFB1YmtleUFj Y2VwdGVkQWxnb3JpdGhtcyAuCi1AQCAtMjMxNyw3ICsyMjY1LDkgQEAgVGhpcyBmaWxlIHNob3Vs ZCBiZSB3cml0YWJsZSBieSByb290IG9ubHksIGJ1dCBpdCBpcyByZWNvbW1lbmRlZAorQEAgLTIz MjgsNyArMjI3Niw5IEBAIFRoaXMgZmlsZSBzaG91bGQgYmUgd3JpdGFibGUgYnkgcm9vdCBvbmx5 LCBidXQgaXQgaXMgcmVjb21tZW5kZWQKICAuRWwKICAuU2ggU0VFIEFMU08KICAuWHIgc2Z0cC1z ZXJ2ZXIgOCAsCkBAIC02NjAsNSArNjYwLDUgQEAgaW5kZXggMTc2Mjg3NGM0Li4xZDE2ZGFiYWYg MTAwNjQ0CiAgLkFuIC1ub3NwbGl0CiAgT3BlblNTSCBpcyBhIGRlcml2YXRpdmUgb2YgdGhlIG9y aWdpbmFsIGFuZCBmcmVlCiAtLSAKLTIuNTMuMAorMi41NS4wCiAKCmRpZmYgLS1naXQgYS8wMDI4 LW9wZW5zc2gtOC4wcDEtb3BlbnNzbC1rZGYucGF0Y2ggYi8wMDI4LW9wZW5zc2gtOC4wcDEtb3Bl bnNzbC1rZGYucGF0Y2gKaW5kZXggMDUzZGFhZC4uZmFlYjkzYSAxMDA2NDQKLS0tIGEvMDAyOC1v cGVuc3NoLTguMHAxLW9wZW5zc2wta2RmLnBhdGNoCisrKyBiLzAwMjgtb3BlbnNzaC04LjBwMS1v cGVuc3NsLWtkZi5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMWEyZTQwNjhmOTk3YzFhOWVk NDE3OTY3MTE2MjIwMWY3NjZmMjBiOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMjky NzMyNGI5ODFmZDkzMmI0NmZjYjUzZTAzOTlmNzAxYzUyOGRjOSBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKIEZyb206IERtaXRyeSBCZWx5YXZza2l5IDxiZWxkbWl0QGdtYWlsLmNvbT4KIERhdGU6 IFRodSwgMTUgTWF5IDIwMjUgMTM6NDM6MjggKzAyMDAKIFN1YmplY3Q6IFtQQVRDSCAyOC81NF0g b3BlbnNzaC04LjBwMS1vcGVuc3NsLWtkZgpAQCAtMTAsNyArMTAsNyBAQCBTdWJqZWN0OiBbUEFU Q0ggMjgvNTRdIG9wZW5zc2gtOC4wcDEtb3BlbnNzbC1rZGYKICAyIGZpbGVzIGNoYW5nZWQsIDEw OCBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUu YWMKLWluZGV4IDc1NTc2YjQ1ZC4uODZmMGU5ZTA5IDEwMDY0NAoraW5kZXggMzIxYWRiYWIxLi5j YWE3NWY3MDggMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwog QEAgLTMyNDgsNiArMzI0OCw3IEBAIGlmIHRlc3QgIngkb3BlbnNzbCIgPSAieHllcyIgOyB0aGVu CkBAIC0yMiw3ICsyMiw3IEBAIGluZGV4IDc1NTc2YjQ1ZC4uODZmMGU5ZTA5IDEwMDY0NAogIAog IAkjIExpYnJlU1NML09wZW5TU0wgQVBJIGRpZmZlcmVuY2VzCiBkaWZmIC0tZ2l0IGEva2V4LmMg Yi9rZXguYwotaW5kZXggMzYwOGE1NTA0Li41NGU3MTE4MTAgMTAwNjQ0CitpbmRleCAzNzAxYTQw YzAuLjViNjA2NjE2OSAxMDA2NDQKIC0tLSBhL2tleC5jCiArKysgYi9rZXguYwogQEAgLTM3LDYg KzM3LDExIEBACkBAIC0zNyw3ICszNyw3IEBAIGluZGV4IDM2MDhhNTUwNC4uNTRlNzExODEwIDEw MDY0NAogICNlbmRpZgogIAogICNpbmNsdWRlICJzc2guaCIKLUBAIC0xMDgzLDYgKzEwODgsMTA3 IEBAIGtleF9jaG9vc2VfY29uZihzdHJ1Y3Qgc3NoICpzc2gsIHVpbnQzMl90IHNlcSkKK0BAIC0x MDg4LDYgKzEwOTMsMTA3IEBAIGtleF9jaG9vc2VfY29uZihzdHJ1Y3Qgc3NoICpzc2gsIHVpbnQz Ml90IHNlcSkKICAJcmV0dXJuIHI7CiAgfQogIApAQCAtMTQ1LDcgKzE0NSw3IEBAIGluZGV4IDM2 MDhhNTUwNC4uNTRlNzExODEwIDEwMDY0NAogIHN0YXRpYyBpbnQKICBkZXJpdmVfa2V5KHN0cnVj dCBzc2ggKnNzaCwgaW50IGlkLCB1X2ludCBuZWVkLCB1X2NoYXIgKmhhc2gsIHVfaW50IGhhc2hs ZW4sCiAgICAgIGNvbnN0IHN0cnVjdCBzc2hidWYgKnNoYXJlZF9zZWNyZXQsIHVfY2hhciAqKmtl eXApCi1AQCAtMTE0Niw2ICsxMjUyLDcgQEAgZGVyaXZlX2tleShzdHJ1Y3Qgc3NoICpzc2gsIGlu dCBpZCwgdV9pbnQgbmVlZCwgdV9jaGFyICpoYXNoLCB1X2ludCBoYXNobGVuLAorQEAgLTExNTEs NiArMTI1Nyw3IEBAIGRlcml2ZV9rZXkoc3RydWN0IHNzaCAqc3NoLCBpbnQgaWQsIHVfaW50IG5l ZWQsIHVfY2hhciAqaGFzaCwgdV9pbnQgaGFzaGxlbiwKICAJc3NoX2RpZ2VzdF9mcmVlKGhhc2hj dHgpOwogIAlyZXR1cm4gcjsKICB9CkBAIC0xNTQsNSArMTU0LDUgQEAgaW5kZXggMzYwOGE1NTA0 Li41NGU3MTE4MTAgMTAwNjQ0CiAgI2RlZmluZSBOS0VZUwk2CiAgaW50CiAtLSAKLTIuNTMuMAor Mi41NS4wCiAKCmRpZmYgLS1naXQgYS8wMDI5LW9wZW5zc2gtOC4ycDEtdmlzaWJpbGl0eS5wYXRj aCBiLzAwMjktb3BlbnNzaC04LjJwMS12aXNpYmlsaXR5LnBhdGNoCmluZGV4IDM0NjFlZmEuLmI3 NjI1NzUgMTAwNjQ0Ci0tLSBhLzAwMjktb3BlbnNzaC04LjJwMS12aXNpYmlsaXR5LnBhdGNoCisr KyBiLzAwMjktb3BlbnNzaC04LjJwMS12aXNpYmlsaXR5LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAot RnJvbSAwM2Y5NjQ5OGMzYjFjNWEwMTAxNGE0N2E4MDBmOTQ0MzBjN2M5MmNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQorRnJvbSA4ZWM2ZTIzZTlmNjA4MjI2ZDJhMjhjOTI3ZGViODcwN2MyYzA1 ZDE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogRG1pdHJ5IEJlbHlhdnNraXkgPGJl bGRtaXRAZ21haWwuY29tPgogRGF0ZTogVGh1LCAxNSBNYXkgMjAyNSAxMzo0MzoyOCArMDIwMAog U3ViamVjdDogW1BBVENIIDI5LzU0XSBvcGVuc3NoLTguMnAxLXZpc2liaWxpdHkKQEAgLTQ5LDUg KzQ5LDUgQEAgaW5kZXggNGM5NmU4ODI3Li40YWY1MjA5ZGIgMTAwNjQ0CiAgICAgIHN0cnVjdCBz a19yZXNpZGVudF9rZXkgKioqcmtzLCBzaXplX3QgKm5ya3MpCiAgewogLS0gCi0yLjUzLjAKKzIu NTUuMAogCgpkaWZmIC0tZ2l0IGEvMDAzMC1vcGVuc3NoLTguMnAxLXgxMS13aXRob3V0LWlwdjYu cGF0Y2ggYi8wMDMwLW9wZW5zc2gtOC4ycDEteDExLXdpdGhvdXQtaXB2Ni5wYXRjaAppbmRleCA4 NzYwMTMyLi4yNDk4N2JlIDEwMDY0NAotLS0gYS8wMDMwLW9wZW5zc2gtOC4ycDEteDExLXdpdGhv dXQtaXB2Ni5wYXRjaAorKysgYi8wMDMwLW9wZW5zc2gtOC4ycDEteDExLXdpdGhvdXQtaXB2Ni5w YXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZWZjYTFmNTRkOGFmYzg2N2YzOTg5YjVlZDc5MDA1 NGRlOTQyY2IwYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNGZlMWIwZTk2NjA4OWIw ZjA3M2YxMTEzNGI0NzQ1Y2NjZTQ2MzU0NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206 IERtaXRyeSBCZWx5YXZza2l5IDxiZWxkbWl0QGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMTUgTWF5 IDIwMjUgMTM6NDM6MjggKzAyMDAKIFN1YmplY3Q6IFtQQVRDSCAzMC81NF0gb3BlbnNzaC04LjJw MS14MTEtd2l0aG91dC1pcHY2CkBAIC05LDEwICs5LDEwIEBAIFN1YmplY3Q6IFtQQVRDSCAzMC81 NF0gb3BlbnNzaC04LjJwMS14MTEtd2l0aG91dC1pcHY2CiAgMSBmaWxlIGNoYW5nZWQsIDEwIGlu c2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL2NoYW5uZWxzLmMgYi9jaGFubmVscy5jCi1pbmRl eCA3MWNjNjdkMTcuLjE0ZDUzNmQ2NCAxMDA2NDQKK2luZGV4IGZjZDgwMjg4Zi4uYmFlODRlNWY5 IDEwMDY0NAogLS0tIGEvY2hhbm5lbHMuYwogKysrIGIvY2hhbm5lbHMuYwotQEAgLTUxMzIsNiAr NTEzMiwxNiBAQCB4MTFfY3JlYXRlX2Rpc3BsYXlfaW5ldChzdHJ1Y3Qgc3NoICpzc2gsIGludCB4 MTFfZGlzcGxheV9vZmZzZXQsCitAQCAtNTE0MSw2ICs1MTQxLDE2IEBAIHgxMV9jcmVhdGVfZGlz cGxheV9pbmV0KHN0cnVjdCBzc2ggKnNzaCwgaW50IHgxMV9kaXNwbGF5X29mZnNldCwKICAJCQkJ ZGVidWcyX2YoImJpbmQgcG9ydCAlZDogJS4xMDBzIiwgcG9ydCwKICAJCQkJICAgIHN0cmVycm9y KGVycm5vKSk7CiAgCQkJCWNsb3NlKHNvY2spOwpAQCAtMzAsNSArMzAsNSBAQCBpbmRleCA3MWNj NjdkMTcuLjE0ZDUzNmQ2NCAxMDA2NDQKICAJCQkJCWNsb3NlKHNvY2tzW25dKTsKICAJCQkJbnVt X3NvY2tzID0gMDsKIC0tIAotMi41My4wCisyLjU1LjAKIAoKZGlmZiAtLWdpdCBhLzAwMzEtb3Bl bnNzaC04LjBwMS1wcmVzZXJ2ZS1wYW0tZXJyb3JzLnBhdGNoIGIvMDAzMS1vcGVuc3NoLTguMHAx LXByZXNlcnZlLXBhbS1lcnJvcnMucGF0Y2gKaW5kZXggMjg5NGViYy4uODQ2Y2Q3YiAxMDA2NDQK LS0tIGEvMDAzMS1vcGVuc3NoLTguMHAxLXByZXNlcnZlLXBhbS1lcnJvcnMucGF0Y2gKKysrIGIv MDAzMS1vcGVuc3NoLTguMHAxLXByZXNlcnZlLXBhbS1lcnJvcnMucGF0Y2gKQEAgLTEsNCArMSw0 IEBACi1Gcm9tIDgyMDM4MDNhOTNhZDZiODA3YTk0MzI0MTU2ZWY4NjZiNDVjYzhlYWUgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGQwMmQyMDExYzlmYjVmMDc4Zjg1NGU1OWZmNGNmYWU4 NTFkZGM4YTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBEbWl0cnkgQmVseWF2c2tp eSA8YmVsZG1pdEBnbWFpbC5jb20+CiBEYXRlOiBUaHUsIDE1IE1heSAyMDI1IDEzOjQzOjI5ICsw MjAwCiBTdWJqZWN0OiBbUEFUQ0ggMzEvNTRdIG9wZW5zc2gtOC4wcDEtcHJlc2VydmUtcGFtLWVy cm9ycwpAQCAtNTMsNSArNTMsNSBAQCBpbmRleCAzZjM0MmY5ZTEuLmQzZGNkMDM3YiAxMDA2NDQK ICAJCQkJc3NocGFtX3NldF9tYXh0cmllc19yZWFjaGVkKDEpOwogIAkJCS8qIEZBTExUSFJPVUdI ICovCiAtLSAKLTIuNTMuMAorMi41NS4wCiAKCmRpZmYgLS1naXQgYS8wMDMyLW9wZW5zc2gtOC43 cDEtc2NwLWtpbGwtc3dpdGNoLnBhdGNoIGIvMDAzMi1vcGVuc3NoLTguN3AxLXNjcC1raWxsLXN3 aXRjaC5wYXRjaAppbmRleCA5NDdhNmI5Li5jZWZmN2RiIDEwMDY0NAotLS0gYS8wMDMyLW9wZW5z c2gtOC43cDEtc2NwLWtpbGwtc3dpdGNoLnBhdGNoCisrKyBiLzAwMzItb3BlbnNzaC04LjdwMS1z Y3Ata2lsbC1zd2l0Y2gucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDYxYWNjNWU5NGVhMDg3 ZGIyMDUwNDc3N2U3NGJkYjU1OTE3NjIwNTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9t IDQwZTM2ZDcyOTk1YjRmMDEzZDY1ZTQ2ODhiYjZhYTYxMWUwOGIxNzggTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCiBGcm9tOiBEbWl0cnkgQmVseWF2c2tpeSA8YmVsZG1pdEBnbWFpbC5jb20+CiBE YXRlOiBUaHUsIDE1IE1heSAyMDI1IDEzOjQzOjI5ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0ggMzIv NTRdIG9wZW5zc2gtOC43cDEtc2NwLWtpbGwtc3dpdGNoCkBAIC0xMSwxMiArMTEsMTIgQEAgU3Vi amVjdDogW1BBVENIIDMyLzU0XSBvcGVuc3NoLTguN3AxLXNjcC1raWxsLXN3aXRjaAogIDMgZmls ZXMgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvcGF0aG5hbWVzLmgg Yi9wYXRobmFtZXMuaAotaW5kZXggYWUwMWM2OWUyLi44MGRiNzZlMDAgMTAwNjQ0CitpbmRleCAy ZjBiOWY0ZjYuLmNlNWRkYzE0ZiAxMDA2NDQKIC0tLSBhL3BhdGhuYW1lcy5oCiArKysgYi9wYXRo bmFtZXMuaAotQEAgLTQwLDYgKzQwLDcgQEAKLSAjZGVmaW5lIF9QQVRIX0hPU1RfUlNBX0tFWV9G SUxFCQlTU0hESVIgIi9zc2hfaG9zdF9yc2Ffa2V5IgorQEAgLTQxLDYgKzQxLDcgQEAKICAjZGVm aW5lIF9QQVRIX0hPU1RfRUQyNTUxOV9LRVlfRklMRQlTU0hESVIgIi9zc2hfaG9zdF9lZDI1NTE5 X2tleSIKKyAjZGVmaW5lIF9QQVRIX0hPU1RfTUxEU0E0NF9FRDI1NTE5X0tFWV9GSUxFIFNTSERJ UiAiL3NzaF9ob3N0X21sZHNhNDRfZWQyNTUxOV9rZXkiCiAgI2RlZmluZSBfUEFUSF9ESF9NT0RV TEkJCQlTU0hESVIgIi9tb2R1bGkiCiArI2RlZmluZSBfUEFUSF9TQ1BfS0lMTF9TV0lUQ0gJCVNT SERJUiAiL2Rpc2FibGVfc2NwIgogIApAQCAtNDEsNyArNDEsNyBAQCBpbmRleCA3YmNlMGZlNmYu LjJiYjgzOGM3ZCAxMDA2NDQKICAuRXggLXN0ZCBzY3AKICAuU2ggU0VFIEFMU08KIGRpZmYgLS1n aXQgYS9zY3AuYyBiL3NjcC5jCi1pbmRleCA1NjE4ZTI4ZTcuLjc2ZGNiNjA0MCAxMDA2NDQKK2lu ZGV4IGFjNDNlYzVmNC4uNTc3NWJlNDU3IDEwMDY0NAogLS0tIGEvc2NwLmMKICsrKyBiL3NjcC5j CiBAQCAtNjI4LDYgKzYyOCwxNCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKQEAgLTYw LDUgKzYwLDUgQEAgaW5kZXggNTYxOGUyOGU3Li43NmRjYjYwNDAgMTAwNjQ0CiAgCQlmYXRhbCgi dW5rbm93biB1c2VyICV1IiwgKHVfaW50KSB1c2VyaWQpOwogIAogLS0gCi0yLjUzLjAKKzIuNTUu MAogCgpkaWZmIC0tZ2l0IGEvMDAzMy1vcGVuc3NoLTguN3AxLXJlY3Vyc2l2ZS1zY3AucGF0Y2gg Yi8wMDMzLW9wZW5zc2gtOC43cDEtcmVjdXJzaXZlLXNjcC5wYXRjaAppbmRleCAzM2YxMDY3Li5m NjQ2MmM2IDEwMDY0NAotLS0gYS8wMDMzLW9wZW5zc2gtOC43cDEtcmVjdXJzaXZlLXNjcC5wYXRj aAorKysgYi8wMDMzLW9wZW5zc2gtOC43cDEtcmVjdXJzaXZlLXNjcC5wYXRjaApAQCAtMSw0ICsx LDQgQEAKLUZyb20gNzIyMjNmNTE5Mjk0YzIzNGU3MzEzZGMwZWZiODZjMTE2NGE2N2I0NyBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMWU2NzEyYTMzMzY1NWRhNmRkMDFmMmI5ZDhiMGIy Njg4Zjk5MDgyYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IERtaXRyeSBCZWx5YXZz a2l5IDxiZWxkbWl0QGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMTUgTWF5IDIwMjUgMTM6NDM6Mjkg KzAyMDAKIFN1YmplY3Q6IFtQQVRDSCAzMy81NF0gb3BlbnNzaC04LjdwMS1yZWN1cnNpdmUtc2Nw CkBAIC0xNSw3ICsxNSw3IEBAIFN1YmplY3Q6IFtQQVRDSCAzMy81NF0gb3BlbnNzaC04LjdwMS1y ZWN1cnNpdmUtc2NwCiAgNCBmaWxlcyBjaGFuZ2VkLCA1MiBpbnNlcnRpb25zKCspLCAyMCBkZWxl dGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3NjcC5jIGIvc2NwLmMKLWluZGV4IDc2ZGNiNjA0MC4u OTczODQ4ZTA0IDEwMDY0NAoraW5kZXggNTc3NWJlNDU3Li42NDZjZjI0NzggMTAwNjQ0CiAtLS0g YS9zY3AuYwogKysrIGIvc2NwLmMKIEBAIC0xMzc3LDcgKzEzNzcsNyBAQCBzb3VyY2Vfc2Z0cChp bnQgYXJnYywgY2hhciAqc3JjLCBjaGFyICp0YXJnLCBzdHJ1Y3Qgc2Z0cF9jb25uICpjb25uKQpA QCAtMjgsNyArMjgsNyBAQCBpbmRleCA3NmRjYjYwNDAuLjk3Mzg0OGUwNCAxMDA2NDQKICAJCQll cnJzID0gMTsKICAJCX0KIGRpZmYgLS1naXQgYS9zZnRwLWNsaWVudC5jIGIvc2Z0cC1jbGllbnQu YwotaW5kZXggNjllZjI4Y2RjLi4zMDEyZWFjMTIgMTAwNjQ0CitpbmRleCAxZjAzMTEyOGUuLmFh ZDg2NDM1NyAxMDA2NDQKIC0tLSBhL3NmdHAtY2xpZW50LmMKICsrKyBiL3NmdHAtY2xpZW50LmMK IEBAIC05ODgsNyArOTg4LDcgQEAgc2Z0cF9mc2V0c3RhdChzdHJ1Y3Qgc2Z0cF9jb25uICpjb25u LCBjb25zdCB1X2NoYXIgKmhhbmRsZSwgdV9pbnQgaGFuZGxlX2xlbiwKQEAgLTExMyw3ICsxMTMs NyBAQCBpbmRleCA2OWVmMjhjZGMuLjMwMTJlYWMxMiAxMDA2NDQKICB9CiAgCiAgaW50Ci1AQCAt MjAwMSw3ICsyMDMzLDcgQEAgc2Z0cF9kb3dubG9hZF9kaXIoc3RydWN0IHNmdHBfY29ubiAqY29u biwgY29uc3QgY2hhciAqc3JjLCBjb25zdCBjaGFyICpkc3QsCitAQCAtMjAwNiw3ICsyMDM4LDcg QEAgc2Z0cF9kb3dubG9hZF9kaXIoc3RydWN0IHNmdHBfY29ubiAqY29ubiwgY29uc3QgY2hhciAq c3JjLCBjb25zdCBjaGFyICpkc3QsCiAgCWNoYXIgKnNyY19jYW5vbjsKICAJaW50IHJldDsKICAK QEAgLTEyMiw3ICsxMjIsNyBAQCBpbmRleCA2OWVmMjhjZGMuLjMwMTJlYWMxMiAxMDA2NDQKICAJ CWVycm9yKCJkb3dubG9hZCBcIiVzXCI6IHBhdGggY2Fub25pY2FsaXphdGlvbiBmYWlsZWQiLCBz cmMpOwogIAkJcmV0dXJuIC0xOwogIAl9Ci1AQCAtMjM1NiwxMiArMjM4OCwxMiBAQCB1cGxvYWRf ZGlyX2ludGVybmFsKHN0cnVjdCBzZnRwX2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnNyYywgY29u c3QgY2hhciAqZHN0LAorQEAgLTIzNjEsMTIgKzIzOTMsMTIgQEAgdXBsb2FkX2Rpcl9pbnRlcm5h bChzdHJ1Y3Qgc2Z0cF9jb25uICpjb25uLCBjb25zdCBjaGFyICpzcmMsIGNvbnN0IGNoYXIgKmRz dCwKICBpbnQKICBzZnRwX3VwbG9hZF9kaXIoc3RydWN0IHNmdHBfY29ubiAqY29ubiwgY29uc3Qg Y2hhciAqc3JjLCBjb25zdCBjaGFyICpkc3QsCiAgICAgIGludCBwcmVzZXJ2ZV9mbGFnLCBpbnQg cHJpbnRfZmxhZywgaW50IHJlc3VtZSwgaW50IGZzeW5jX2ZsYWcsCkBAIC0xMzcsNyArMTM3LDcg QEAgaW5kZXggNjllZjI4Y2RjLi4zMDEyZWFjMTIgMTAwNjQ0CiAgCQllcnJvcigidXBsb2FkIFwi JXNcIjogcGF0aCBjYW5vbmljYWxpemF0aW9uIGZhaWxlZCIsIGRzdCk7CiAgCQlyZXR1cm4gLTE7 CiAgCX0KLUBAIC0yODE5LDcgKzI4NTEsNyBAQCBzZnRwX2Nyb3NzbG9hZF9kaXIoc3RydWN0IHNm dHBfY29ubiAqZnJvbSwgc3RydWN0IHNmdHBfY29ubiAqdG8sCitAQCAtMjgyOSw3ICsyODYxLDcg QEAgc2Z0cF9jcm9zc2xvYWRfZGlyKHN0cnVjdCBzZnRwX2Nvbm4gKmZyb20sIHN0cnVjdCBzZnRw X2Nvbm4gKnRvLAogIAljaGFyICpmcm9tX3BhdGhfY2Fub247CiAgCWludCByZXQ7CiAgCkBAIC0x NjksMTAgKzE2OSwxMCBAQCBpbmRleCBjYzhlMjAyOTguLjM2YjY4ZDRjYyAxMDA2NDQKICAvKgog ICAqIERvd25sb2FkIGEgJ2Zyb21fcGF0aCcgZnJvbSB0aGUgJ2Zyb20nIGNvbm5lY3Rpb24gYW5k IHVwbG9hZCBpdCB0bwogZGlmZiAtLWdpdCBhL3NmdHAuYyBiL3NmdHAuYwotaW5kZXggZWViYjE2 NmU4Li40YTcxZGQwNWQgMTAwNjQ0CitpbmRleCAzMWQ4ZmE0OTQuLmQzYmU3MmZmZSAxMDA2NDQK IC0tLSBhL3NmdHAuYwogKysrIGIvc2Z0cC5jCi1AQCAtODA1LDcgKzgwNSw3IEBAIHByb2Nlc3Nf cHV0KHN0cnVjdCBzZnRwX2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnNyYywgY29uc3QgY2hhciAq ZHN0LAorQEAgLTgwNCw3ICs4MDQsNyBAQCBwcm9jZXNzX3B1dChzdHJ1Y3Qgc2Z0cF9jb25uICpj b25uLCBjb25zdCBjaGFyICpzcmMsIGNvbnN0IGNoYXIgKmRzdCwKICAJCSAgICAocmZsYWcgfHwg Z2xvYmFsX3JmbGFnKSkgewogIAkJCWlmIChzZnRwX3VwbG9hZF9kaXIoY29ubiwgZy5nbF9wYXRo dltpXSwgYWJzX2RzdCwKICAJCQkgICAgcGZsYWcgfHwgZ2xvYmFsX3BmbGFnLCAxLCByZXN1bWUs CkBAIC0xODEsNyArMTgxLDcgQEAgaW5kZXggZWViYjE2NmU4Li40YTcxZGQwNWQgMTAwNjQ0CiAg CQkJCWVyciA9IC0xOwogIAkJfSBlbHNlIHsKICAJCQlpZiAoc2Z0cF91cGxvYWQoY29ubiwgZy5n bF9wYXRodltpXSwgYWJzX2RzdCwKLUBAIC0xNjQwLDcgKzE2NDAsNyBAQCBwYXJzZV9kaXNwYXRj aF9jb21tYW5kKHN0cnVjdCBzZnRwX2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKmNtZCwgY2hhciAq KnB3ZCwKK0BAIC0xNjQ5LDcgKzE2NDksNyBAQCBwYXJzZV9kaXNwYXRjaF9jb21tYW5kKHN0cnVj dCBzZnRwX2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKmNtZCwgY2hhciAqKnB3ZCwKICAJCWlmIChw YXRoMSA9PSBOVUxMIHx8ICpwYXRoMSA9PSAnXDAnKQogIAkJCXBhdGgxID0geHN0cmR1cChzdGFy dGRpcik7CiAgCQlwYXRoMSA9IHNmdHBfbWFrZV9hYnNvbHV0ZShwYXRoMSwgKnB3ZCk7CkBAIC0x OTAsNyArMTkwLDcgQEAgaW5kZXggZWViYjE2NmU4Li40YTcxZGQwNWQgMTAwNjQ0CiAgCQkJZXJy ID0gMTsKICAJCQlicmVhazsKICAJCX0KLUBAIC0yMjY2LDcgKzIyNjYsNyBAQCBpbnRlcmFjdGl2 ZV9sb29wKHN0cnVjdCBzZnRwX2Nvbm4gKmNvbm4sIGNoYXIgKmZpbGUxLCBjaGFyICpmaWxlMikK K0BAIC0yMjc1LDcgKzIyNzUsNyBAQCBpbnRlcmFjdGl2ZV9sb29wKHN0cnVjdCBzZnRwX2Nvbm4g KmNvbm4sIGNoYXIgKmZpbGUxLCBjaGFyICpmaWxlMikKICAJfQogICNlbmRpZiAvKiBVU0VfTElC RURJVCAqLwogIApAQCAtMjAwLDUgKzIwMCw1IEBAIGluZGV4IGVlYmIxNjZlOC4uNGE3MWRkMDVk IDEwMDY0NAogIAlzdGFydGRpciA9IHhzdHJkdXAocmVtb3RlX3BhdGgpOwogIAogLS0gCi0yLjUz LjAKKzIuNTUuMAogCgpkaWZmIC0tZ2l0IGEvMDAzNC1vcGVuc3NoLTguN3AxLWlibWNhLnBhdGNo IGIvMDAzNC1vcGVuc3NoLTguN3AxLWlibWNhLnBhdGNoCmluZGV4IDU1MzI5N2EuLjU4YWU4NjUg MTAwNjQ0Ci0tLSBhLzAwMzQtb3BlbnNzaC04LjdwMS1pYm1jYS5wYXRjaAorKysgYi8wMDM0LW9w ZW5zc2gtOC43cDEtaWJtY2EucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDI3ZTczYzlkNmM0 YTQ0YmRmYjk4ODUyZGRlYjMwZTkwMmZmODY1OGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitG cm9tIDE2ZDdhZTQ3ZWRkYzg1YTAzNjBiNTNjMmUzMDYzMzk1MzQ4Y2NmM2QgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCiBGcm9tOiBEbWl0cnkgQmVseWF2c2tpeSA8YmVsZG1pdEBnbWFpbC5jb20+ CiBEYXRlOiBUaHUsIDE1IE1heSAyMDI1IDEzOjQzOjI5ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0gg MzQvNTRdIG9wZW5zc2gtOC43cDEtaWJtY2EKQEAgLTIzLDUgKzIzLDUgQEAgaW5kZXggZjYxMTI0 NTg1Li40MTdjMjA0ODQgMTAwNjQ0CiAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogICNpbmNsdWRl IDx1bmlzdGQuaD4KIC0tIAotMi41My4wCisyLjU1LjAKIAoKZGlmZiAtLWdpdCBhLzAwMzUtb3Bl bnNzaC03LjZwMS1hdWRpdC5wYXRjaCBiLzAwMzUtb3BlbnNzaC03LjZwMS1hdWRpdC5wYXRjaApp bmRleCA0MGRmMDZjLi40NGRkOTg2IDEwMDY0NAotLS0gYS8wMDM1LW9wZW5zc2gtNy42cDEtYXVk aXQucGF0Y2gKKysrIGIvMDAzNS1vcGVuc3NoLTcuNnAxLWF1ZGl0LnBhdGNoCkBAIC0xLDQgKzEs NCBAQAotRnJvbSAwMGVmNTY1MzM2YzkzM2Y5NDY0YjA5YzU1MTM0ZmEzYjNjNzZhZDQwIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxMzQ1MTE5MDdhYzk5NTY0YTQxN2E1YjQ1ZTNlYTEz ZDRhZmJmOGFlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogRG1pdHJ5IEJlbHlhdnNr aXkgPGJlbGRtaXRAZ21haWwuY29tPgogRGF0ZTogVGh1LCAxNSBNYXkgMjAyNSAxMzo0MzoyOSAr MDIwMAogU3ViamVjdDogW1BBVENIIDM1LzU0XSBvcGVuc3NoLTcuNnAxLWF1ZGl0CkBAIC0zNSwx MCArMzUsMTAgQEAgU3ViamVjdDogW1BBVENIIDM1LzU0XSBvcGVuc3NoLTcuNnAxLWF1ZGl0CiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IGF1ZGl0c3R1Yi5jCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZS5p biBiL01ha2VmaWxlLmluCi1pbmRleCBhMTJmNmFkMWQuLmY4MGM5NTg0NiAxMDA2NDQKK2luZGV4 IDEwNjMwNjAyNC4uNTZjNGM4OGNmIDEwMDY0NAogLS0tIGEvTWFrZWZpbGUuaW4KICsrKyBiL01h a2VmaWxlLmluCi1AQCAtMTEwLDcgKzExMCw3IEBAIExJQlNTSF9PQkpTPSR7TElCT1BFTlNTSF9P QkpTfSBcCitAQCAtMTExLDcgKzExMSw3IEBAIExJQlNTSF9PQkpTPSR7TElCT1BFTlNTSF9PQkpT fSBcCiAgCWtleHNudHJ1cDc2MXgyNTUxOS5vIGtleG1sa2VtNzY4eDI1NTE5Lm8gc250cnVwNzYx Lm8ga2V4Z2VuLm8gXAogIAlrZXhnc3NjLm8gXAogIAlzZnRwLXJlYWxwYXRoLm8gcGxhdGZvcm0t cGxlZGdlLm8gcGxhdGZvcm0tdHJhY2luZy5vIHBsYXRmb3JtLW1pc2MubyBcCkBAIC03OTYsMTAg Kzc5NiwxMCBAQCBpbmRleCAxNDJhYzVhZmQuLjE4NThiZGRhYiAxMDA2NDQKICAJfQogIAlpZiAo IWFsbG93ZWRfdXNlcihzc2gsIHB3KSkKIGRpZmYgLS1naXQgYS9hdXRoLmggYi9hdXRoLmgKLWlu ZGV4IDgxNWY4MjFmOS4uYjcyYjc2MTYzIDEwMDY0NAoraW5kZXggOWRkMjVmNDk0Li4wNjZmNWVm ZmEgMTAwNjQ0CiAtLS0gYS9hdXRoLmgKICsrKyBiL2F1dGguaAotQEAgLTIxMyw2ICsyMTMsOCBA QCBzdHJ1Y3Qgc3Noa2V5CSpnZXRfaG9zdGtleV9wcml2YXRlX2J5X3R5cGUoaW50LCBpbnQsIHN0 cnVjdCBzc2ggKik7CitAQCAtMjE0LDYgKzIxNCw4IEBAIHN0cnVjdCBzc2hrZXkJKmdldF9ob3N0 a2V5X3ByaXZhdGVfYnlfdHlwZShpbnQsIGludCwgc3RydWN0IHNzaCAqKTsKICBpbnQJIGdldF9o b3N0a2V5X2luZGV4KHN0cnVjdCBzc2hrZXkgKiwgaW50LCBzdHJ1Y3Qgc3NoICopOwogIGludAkg c3NoZF9ob3N0a2V5X3NpZ24oc3RydWN0IHNzaCAqLCBzdHJ1Y3Qgc3Noa2V5ICosIHN0cnVjdCBz c2hrZXkgKiwKICAgICAgdV9jaGFyICoqLCBzaXplX3QgKiwgY29uc3QgdV9jaGFyICosIHNpemVf dCwgY29uc3QgY2hhciAqKTsKQEAgLTgwOCw3ICs4MDgsNyBAQCBpbmRleCA4MTVmODIxZjkuLmI3 MmI3NjE2MyAxMDA2NDQKICAKICAvKiBLZXkgLyBjZXJ0IG9wdGlvbnMgbGlua2FnZSB0byBhdXRo IGxheWVyICovCiAgaW50CSBhdXRoX2FjdGl2YXRlX29wdGlvbnMoc3RydWN0IHNzaCAqLCBzdHJ1 Y3Qgc3NoYXV0aG9wdCAqKTsKLUBAIC0yMzgsNiArMjQwLDggQEAgaW50CSBhdXRoX2NoZWNrX2F1 dGhrZXlfbGluZShzdHJ1Y3QgcGFzc3dkICosIHN0cnVjdCBzc2hrZXkgKiwKK0BAIC0yMzksNiAr MjQxLDggQEAgaW50CSBhdXRoX2NoZWNrX2F1dGhrZXlfbGluZShzdHJ1Y3QgcGFzc3dkICosIHN0 cnVjdCBzc2hrZXkgKiwKICAgICAgY2hhciAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwg Y29uc3QgY2hhciAqLCBzdHJ1Y3Qgc3NoYXV0aG9wdCAqKik7CiAgaW50CSBhdXRoX2NoZWNrX2F1 dGhrZXlzX2ZpbGUoc3RydWN0IHBhc3N3ZCAqLCBGSUxFICosIGNoYXIgKiwKICAgICAgc3RydWN0 IHNzaGtleSAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgc3RydWN0IHNzaGF1dGhvcHQg KiopOwpAQCAtODg2LDEwICs4ODYsMTAgQEAgaW5kZXggMzE5ZTQyYjJiLi45NzM4MTBkYzkgMTAw NjQ0CiAgbWF0Y2hfcHJpbmNpcGFsc19maWxlKHN0cnVjdCBwYXNzd2QgKnB3LCBjaGFyICpmaWxl LAogICAgICBzdHJ1Y3Qgc3Noa2V5X2NlcnQgKmNlcnQsIHN0cnVjdCBzc2hhdXRob3B0ICoqYXV0 aG9wdHNwKQogZGlmZiAtLWdpdCBhL2F1dGgyLmMgYi9hdXRoMi5jCi1pbmRleCAzYzNiZGI3NzYu Ljc5MGJiMzQ1NCAxMDA2NDQKK2luZGV4IGYwZjM5NzA3Zi4uNzE0NjBkNzhmIDEwMDY0NAogLS0t IGEvYXV0aDIuYwogKysrIGIvYXV0aDIuYwotQEAgLTMxNSw5ICszMTUsNiBAQCBpbnB1dF91c2Vy YXV0aF9yZXF1ZXN0KGludCB0eXBlLCB1aW50MzJfdCBzZXEsIHN0cnVjdCBzc2ggKnNzaCkKK0BA IC0zMjEsOSArMzIxLDYgQEAgaW5wdXRfdXNlcmF1dGhfcmVxdWVzdChpbnQgdHlwZSwgdWludDMy X3Qgc2VxLCBzdHJ1Y3Qgc3NoICpzc2gpCiAgCQkJYXV0aGN0eHQtPnZhbGlkID0gMDsKICAJCQkv KiBJbnZhbGlkIHVzZXIsIGZha2UgcGFzc3dvcmQgaW5mb3JtYXRpb24gKi8KICAJCQlhdXRoY3R4 dC0+cHcgPSBmYWtlcHcoKTsKQEAgLTkwMCw3ICs5MDAsNyBAQCBpbmRleCAzYzNiZGI3NzYuLjc5 MGJiMzQ1NCAxMDA2NDQKICAjaWZkZWYgVVNFX1BBTQogIAkJaWYgKG9wdGlvbnMudXNlX3BhbSkK IGRpZmYgLS1naXQgYS9jaXBoZXIuYyBiL2NpcGhlci5jCi1pbmRleCBmNzcwZTY2NmMuLmIwNTc1 NWQ3MyAxMDA2NDQKK2luZGV4IDA2OTdlNTU5Yi4uODIwNzZkNGJkIDEwMDY0NAogLS0tIGEvY2lw aGVyLmMKICsrKyBiL2NpcGhlci5jCiBAQCAtNjMsMjUgKzYzLDYgQEAgc3RydWN0IHNzaGNpcGhl cl9jdHggewpAQCAtOTI5LDcgKzkyOSw3IEBAIGluZGV4IGY3NzBlNjY2Yy4uYjA1NzU1ZDczIDEw MDY0NAogIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3NoY2lwaGVyIGNpcGhlcnNbXSA9IHsKICAjaWZk ZWYgV0lUSF9PUEVOU1NMCiAgI2lmbmRlZiBPUEVOU1NMX05PX0RFUwotQEAgLTQxMCw3ICszOTEs NyBAQCBjaXBoZXJfZ2V0X2xlbmd0aChzdHJ1Y3Qgc3NoY2lwaGVyX2N0eCAqY2MsIHVfaW50ICpw bGVucCwgdV9pbnQgc2VxbnIsCitAQCAtNDE4LDcgKzM5OSw3IEBAIGNpcGhlcl9nZXRfbGVuZ3Ro KHN0cnVjdCBzc2hjaXBoZXJfY3R4ICpjYywgdV9pbnQgKnBsZW5wLCB1X2ludCBzZXFuciwKICB2 b2lkCiAgY2lwaGVyX2ZyZWUoc3RydWN0IHNzaGNpcGhlcl9jdHggKmNjKQogIHsKQEAgLTkzOSw3 ICs5MzksNyBAQCBpbmRleCBmNzcwZTY2NmMuLmIwNTc1NWQ3MyAxMDA2NDQKICAJaWYgKChjYy0+ Y2lwaGVyLT5mbGFncyAmIENGTEFHX0NIQUNIQVBPTFkpICE9IDApIHsKICAJCWNoYWNoYXBvbHlf ZnJlZShjYy0+Y3BfY3R4KTsKIGRpZmYgLS1naXQgYS9jaXBoZXIuaCBiL2NpcGhlci5oCi1pbmRl eCA2NTMzZmYyYmIuLjJlMDVhMDIxMCAxMDA2NDQKK2luZGV4IDMyYWJkZGUyMi4uZTk1M2RmYzNj IDEwMDY0NAogLS0tIGEvY2lwaGVyLmgKICsrKyBiL2NpcGhlci5oCiBAQCAtNDcsNyArNDcsMjUg QEAKQEAgLTk3MCw3ICs5NzAsNyBAQCBpbmRleCA2NTMzZmYyYmIuLjJlMDVhMDIxMCAxMDA2NDQK ICAKICBjb25zdCBzdHJ1Y3Qgc3NoY2lwaGVyICpjaXBoZXJfYnlfbmFtZShjb25zdCBjaGFyICop OwogZGlmZiAtLWdpdCBhL2tleC5jIGIva2V4LmMKLWluZGV4IDU0ZTcxMTgxMC4uNzBiZWJjZTZh IDEwMDY0NAoraW5kZXggNWI2MDY2MTY5Li4zZmJmMWRkNDMgMTAwNjQ0CiAtLS0gYS9rZXguYwog KysrIGIva2V4LmMKIEBAIC02NCw2ICs2NCw3IEBACkBAIC05ODEsNyArOTgxLDcgQEAgaW5kZXgg NTRlNzExODEwLi43MGJlYmNlNmEgMTAwNjQ0CiAgCiAgLyogcHJvdG90eXBlICovCiAgc3RhdGlj IGludCBrZXhfY2hvb3NlX2NvbmYoc3RydWN0IHNzaCAqLCB1aW50MzJfdCBzZXEpOwotQEAgLTgy NiwxMiArODI3LDE2IEBAIGtleF9zdGFydF9yZWtleChzdHJ1Y3Qgc3NoICpzc2gpCitAQCAtODMx LDEyICs4MzIsMTYgQEAga2V4X3N0YXJ0X3Jla2V4KHN0cnVjdCBzc2ggKnNzaCkKICB9CiAgCiAg c3RhdGljIGludApAQCAtMTAwMCw3ICsxMDAwLDcgQEAgaW5kZXggNTRlNzExODEwLi43MGJlYmNl NmEgMTAwNjQ0CiAgCWlmICgoZW5jLT5jaXBoZXIgPSBjaXBoZXJfYnlfbmFtZShuYW1lKSkgPT0g TlVMTCkgewogIAkJZXJyb3JfZigidW5zdXBwb3J0ZWQgY2lwaGVyICVzIiwgbmFtZSk7CiAgCQlm cmVlKG5hbWUpOwotQEAgLTg1Miw4ICs4NTcsMTIgQEAgY2hvb3NlX21hYyhzdHJ1Y3Qgc3NoICpz c2gsIHN0cnVjdCBzc2htYWMgKm1hYywgY2hhciAqY2xpZW50LCBjaGFyICpzZXJ2ZXIpCitAQCAt ODU3LDggKzg2MiwxMiBAQCBjaG9vc2VfbWFjKHN0cnVjdCBzc2ggKnNzaCwgc3RydWN0IHNzaG1h YyAqbWFjLCBjaGFyICpjbGllbnQsIGNoYXIgKnNlcnZlcikKICB7CiAgCWNoYXIgKm5hbWUgPSBt YXRjaF9saXN0KGNsaWVudCwgc2VydmVyLCBOVUxMKTsKICAKQEAgLTEwMTQsNyArMTAxNCw3IEBA IGluZGV4IDU0ZTcxMTgxMC4uNzBiZWJjZTZhIDEwMDY0NAogIAlpZiAobWFjX3NldHVwKG1hYywg bmFtZSkgPCAwKSB7CiAgCQllcnJvcl9mKCJ1bnN1cHBvcnRlZCBNQUMgJXMiLCBuYW1lKTsKICAJ CWZyZWUobmFtZSk7Ci1AQCAtODY2LDEyICs4NzUsMTYgQEAgY2hvb3NlX21hYyhzdHJ1Y3Qgc3No ICpzc2gsIHN0cnVjdCBzc2htYWMgKm1hYywgY2hhciAqY2xpZW50LCBjaGFyICpzZXJ2ZXIpCitA QCAtODcxLDEyICs4ODAsMTYgQEAgY2hvb3NlX21hYyhzdHJ1Y3Qgc3NoICpzc2gsIHN0cnVjdCBz c2htYWMgKm1hYywgY2hhciAqY2xpZW50LCBjaGFyICpzZXJ2ZXIpCiAgfQogIAogIHN0YXRpYyBp bnQKQEAgLTEwMzMsNyArMTAzMyw3IEBAIGluZGV4IDU0ZTcxMTgxMC4uNzBiZWJjZTZhIDEwMDY0 NAogICNpZmRlZiBXSVRIX1pMSUIKICAJaWYgKHN0cmNtcChuYW1lLCAiemxpYkBvcGVuc3NoLmNv bSIpID09IDApIHsKICAJCWNvbXAtPnR5cGUgPSBDT01QX0RFTEFZRUQ7Ci1AQCAtMTAzNSw3ICsx MDQ4LDcgQEAga2V4X2Nob29zZV9jb25mKHN0cnVjdCBzc2ggKnNzaCwgdWludDMyX3Qgc2VxKQor QEAgLTEwNDAsNyArMTA1Myw3IEBAIGtleF9jaG9vc2VfY29uZihzdHJ1Y3Qgc3NoICpzc2gsIHVp bnQzMl90IHNlcSkKICAJCW5lbmMgID0gY3RvcyA/IFBST1BPU0FMX0VOQ19BTEdTX0NUT1MgIDog UFJPUE9TQUxfRU5DX0FMR1NfU1RPQzsKICAJCW5tYWMgID0gY3RvcyA/IFBST1BPU0FMX01BQ19B TEdTX0NUT1MgIDogUFJPUE9TQUxfTUFDX0FMR1NfU1RPQzsKICAJCW5jb21wID0gY3RvcyA/IFBS T1BPU0FMX0NPTVBfQUxHU19DVE9TIDogUFJPUE9TQUxfQ09NUF9BTEdTX1NUT0M7CkBAIC0xMDQy LDcgKzEwNDIsNyBAQCBpbmRleCA1NGU3MTE4MTAuLjcwYmViY2U2YSAxMDA2NDQKICAJCSAgICBz cHJvcFtuZW5jXSkpICE9IDApIHsKICAJCQlrZXgtPmZhaWxlZF9jaG9pY2UgPSBwZWVyW25lbmNd OwogIAkJCXBlZXJbbmVuY10gPSBOVUxMOwotQEAgLTEwNTAsNyArMTA2Myw3IEBAIGtleF9jaG9v c2VfY29uZihzdHJ1Y3Qgc3NoICpzc2gsIHVpbnQzMl90IHNlcSkKK0BAIC0xMDU1LDcgKzEwNjgs NyBAQCBrZXhfY2hvb3NlX2NvbmYoc3RydWN0IHNzaCAqc3NoLCB1aW50MzJfdCBzZXEpCiAgCQkJ cGVlcltubWFjXSA9IE5VTEw7CiAgCQkJZ290byBvdXQ7CiAgCQl9CkBAIC0xMDUxLDcgKzEwNTEs NyBAQCBpbmRleCA1NGU3MTE4MTAuLjcwYmViY2U2YSAxMDA2NDQKICAJCSAgICBzcHJvcFtuY29t cF0pKSAhPSAwKSB7CiAgCQkJa2V4LT5mYWlsZWRfY2hvaWNlID0gcGVlcltuY29tcF07CiAgCQkJ cGVlcltuY29tcF0gPSBOVUxMOwotQEAgLTEwNzMsNiArMTA4NiwxMCBAQCBrZXhfY2hvb3NlX2Nv bmYoc3RydWN0IHNzaCAqc3NoLCB1aW50MzJfdCBzZXEpCitAQCAtMTA3OCw2ICsxMDkxLDEwIEBA IGtleF9jaG9vc2VfY29uZihzdHJ1Y3Qgc3NoICpzc2gsIHVpbnQzMl90IHNlcSkKICAJCWRoX25l ZWQgPSBNQVhJTVVNKGRoX25lZWQsIG5ld2tleXMtPmVuYy5ibG9ja19zaXplKTsKICAJCWRoX25l ZWQgPSBNQVhJTVVNKGRoX25lZWQsIG5ld2tleXMtPmVuYy5pdl9sZW4pOwogIAkJZGhfbmVlZCA9 IE1BWElNVU0oZGhfbmVlZCwgbmV3a2V5cy0+bWFjLmtleV9sZW4pOwpAQCAtMTA2Miw3ICsxMDYy LDcgQEAgaW5kZXggNTRlNzExODEwLi43MGJlYmNlNmEgMTAwNjQ0CiAgCX0KICAJLyogWFhYIG5l ZWQgcnVuZGVuPyAqLwogIAlrZXgtPndlX25lZWQgPSBuZWVkOwotQEAgLTEzNDIsNiArMTM1OSwz NiBAQCBkdW1wX2RpZ2VzdChjb25zdCBjaGFyICptc2csIGNvbnN0IHVfY2hhciAqZGlnZXN0LCBp bnQgbGVuKQorQEAgLTEzNDcsNiArMTM2NCwzNiBAQCBkdW1wX2RpZ2VzdChjb25zdCBjaGFyICpt c2csIGNvbnN0IHVfY2hhciAqZGlnZXN0LCBpbnQgbGVuKQogIH0KICAjZW5kaWYKICAKQEAgLTEx MDAsMTAgKzExMDAsMTAgQEAgaW5kZXggNTRlNzExODEwLi43MGJlYmNlNmEgMTAwNjQ0CiAgICog U2VuZCBhIHBsYWludGV4dCBlcnJvciBtZXNzYWdlIHRvIHRoZSBwZWVyLCBzdWZmaXhlZCBieSBc clxuLgogICAqIE9ubHkgdXNlZCBkdXJpbmcgYmFubmVyIGV4Y2hhbmdlLCBhbmQgdGhlcmUgb25s eSBmb3IgdGhlIHNlcnZlci4KIGRpZmYgLS1naXQgYS9rZXguaCBiL2tleC5oCi1pbmRleCAyYzg2 YjI1ZjkuLjBhMGNiMTU2MiAxMDA2NDQKK2luZGV4IGQyMjlkZjdlNi4uNjkyZTI4MzYzIDEwMDY0 NAogLS0tIGEva2V4LmgKICsrKyBiL2tleC5oCi1AQCAtMjYxLDYgKzI2MSw4IEBAIGludAkga2V4 Z3NzX2NsaWVudChzdHJ1Y3Qgc3NoICopOworQEAgLTI2Miw2ICsyNjIsOCBAQCBpbnQJIGtleGdz c19jbGllbnQoc3RydWN0IHNzaCAqKTsKICBpbnQJIGtleGdzc19zZXJ2ZXIoc3RydWN0IHNzaCAq KTsKICAjZW5kaWYKICAKQEAgLTExMTMsNyArMTExMyw3IEBAIGluZGV4IDJjODZiMjVmOS4uMGEw Y2IxNTYyIDEwMDY0NAogIGludAkga2V4X2RoX2VuYyhzdHJ1Y3Qga2V4ICosIGNvbnN0IHN0cnVj dCBzc2hidWYgKiwgc3RydWN0IHNzaGJ1ZiAqKiwKICAgICAgc3RydWN0IHNzaGJ1ZiAqKik7CiBk aWZmIC0tZ2l0IGEvbWFjLmMgYi9tYWMuYwotaW5kZXggMTc2MDc4MzBjLi4yOTEzYjhhOGMgMTAw NjQ0CitpbmRleCAzMDQ5NmI0MDIuLmQ0N2RmMGNkZiAxMDA2NDQKIC0tLSBhL21hYy5jCiArKysg Yi9tYWMuYwogQEAgLTIzMCw2ICsyMzAsMjAgQEAgbWFjX2NsZWFyKHN0cnVjdCBzc2htYWMgKm1h YykKQEAgLTExNDksNyArMTE0OSw3IEBAIGluZGV4IDA0MDg5ZjQxYi4uNmI1ZWJjNDRiIDEwMDY0 NAogIAogICNlbmRpZiAvKiBTU0hNQUNfSCAqLwogZGlmZiAtLWdpdCBhL21vbml0b3IuYyBiL21v bml0b3IuYwotaW5kZXggNTI1NTA4M2FiLi4zMDU4ODMyNzggMTAwNjQ0CitpbmRleCA3ZTFjOTA2 MWMuLjdkZmM3OTc2YiAxMDA2NDQKIC0tLSBhL21vbml0b3IuYwogKysrIGIvbW9uaXRvci5jCiBA QCAtODMsNiArODMsNyBAQApAQCAtMTIwNCw3ICsxMjA0LDcgQEAgaW5kZXggNTI1NTA4M2FiLi4z MDU4ODMyNzggMTAwNjQ0CiAgI2VuZGlmCiAgICAgIHswLCAwLCBOVUxMfQogIH07Ci1AQCAtMTYw Myw4ICsxNjIwLDEwIEBAIG1tX2Fuc3dlcl9rZXl2ZXJpZnkoc3RydWN0IHNzaCAqc3NoLCBpbnQg c29jaywgc3RydWN0IHNzaGJ1ZiAqbSkKK0BAIC0xNTc3LDggKzE1OTQsMTAgQEAgbW1fYW5zd2Vy X2tleXZlcmlmeShzdHJ1Y3Qgc3NoICpzc2gsIGludCBzb2NrLCBzdHJ1Y3Qgc3NoYnVmICptKQog IAlpbnQgciwgcmV0LCByZXFfcHJlc2VuY2UgPSAwLCByZXFfdmVyaWZ5ID0gMCwgdmFsaWRfZGF0 YSA9IDA7CiAgCWludCBlbmNvZGVkX3JldDsKICAJc3RydWN0IHNzaGtleV9zaWdfZGV0YWlscyAq c2lnX2RldGFpbHMgPSBOVUxMOwpAQCAtMTIxNiw3ICsxMjE2LDcgQEAgaW5kZXggNTI1NTA4M2Fi Li4zMDU4ODMyNzggMTAwNjQ0CiAgCSAgICAociA9IHNzaGJ1Zl9nZXRfc3RyaW5nX2RpcmVjdCht LCAmc2lnbmF0dXJlLCAmc2lnbmF0dXJlbGVuKSkgIT0gMCB8fAogIAkgICAgKHIgPSBzc2hidWZf Z2V0X3N0cmluZ19kaXJlY3QobSwgJmRhdGEsICZkYXRhbGVuKSkgIT0gMCB8fAogIAkgICAgKHIg PSBzc2hidWZfZ2V0X2NzdHJpbmcobSwgJnNpZ2FsZywgTlVMTCkpICE9IDApCi1AQCAtMTYxMyw2 ICsxNjMyLDggQEAgbW1fYW5zd2VyX2tleXZlcmlmeShzdHJ1Y3Qgc3NoICpzc2gsIGludCBzb2Nr LCBzdHJ1Y3Qgc3NoYnVmICptKQorQEAgLTE1ODcsNiArMTYwNiw4IEBAIG1tX2Fuc3dlcl9rZXl2 ZXJpZnkoc3RydWN0IHNzaCAqc3NoLCBpbnQgc29jaywgc3RydWN0IHNzaGJ1ZiAqbSkKICAJaWYg KGhvc3RiYXNlZF9jdXNlciA9PSBOVUxMIHx8IGhvc3RiYXNlZF9jaG9zdCA9PSBOVUxMIHx8CiAg CSAgIW1vbml0b3JfYWxsb3dlZF9rZXkoYmxvYiwgYmxvYmxlbikpCiAgCQlmYXRhbF9mKCJiYWQg a2V5LCBub3QgcHJldmlvdXNseSBhbGxvd2VkIik7CkBAIC0xMjI1LDcgKzEyMjUsNyBAQCBpbmRl eCA1MjU1MDgzYWIuLjMwNTg4MzI3OCAxMDA2NDQKICAKICAJLyogRW1wdHkgc2lnbmF0dXJlIGFs Z29yaXRobSBtZWFucyBOVUxMLiAqLwogIAlpZiAoKnNpZ2FsZyA9PSAnXDAnKSB7Ci1AQCAtMTYy OCwxNCArMTY0OSwxOSBAQCBtbV9hbnN3ZXJfa2V5dmVyaWZ5KHN0cnVjdCBzc2ggKnNzaCwgaW50 IHNvY2ssIHN0cnVjdCBzc2hidWYgKm0pCitAQCAtMTYwMiwxNCArMTYyMywxOSBAQCBtbV9hbnN3 ZXJfa2V5dmVyaWZ5KHN0cnVjdCBzc2ggKnNzaCwgaW50IHNvY2ssIHN0cnVjdCBzc2hidWYgKm0p CiAgCWNhc2UgTU1fVVNFUktFWToKICAJCXZhbGlkX2RhdGEgPSBtb25pdG9yX3ZhbGlkX3VzZXJi bG9iKHNzaCwgZGF0YSwgZGF0YWxlbik7CiAgCQlhdXRoX21ldGhvZCA9ICJwdWJsaWNrZXkiOwpA QCAtMTI0NSw3ICsxMjQ1LDcgQEAgaW5kZXggNTI1NTA4M2FiLi4zMDU4ODMyNzggMTAwNjQ0CiAg CQlicmVhazsKICAJfQogIAlpZiAoIXZhbGlkX2RhdGEpCi1AQCAtMTY0Nyw4ICsxNjczLDYgQEAg bW1fYW5zd2VyX2tleXZlcmlmeShzdHJ1Y3Qgc3NoICpzc2gsIGludCBzb2NrLCBzdHJ1Y3Qgc3No YnVmICptKQorQEAgLTE2MjEsOCArMTY0Nyw2IEBAIG1tX2Fuc3dlcl9rZXl2ZXJpZnkoc3RydWN0 IHNzaCAqc3NoLCBpbnQgc29jaywgc3RydWN0IHNzaGJ1ZiAqbSkKICAJICAgIFNTSF9GUF9ERUZB VUxUKSkgPT0gTlVMTCkKICAJCWZhdGFsX2YoInNzaGtleV9maW5nZXJwcmludCBmYWlsZWQiKTsK ICAKQEAgLTEyNTQsNyArMTI1NCw3IEBAIGluZGV4IDUyNTUwODNhYi4uMzA1ODgzMjc4IDEwMDY0 NAogIAlkZWJ1ZzNfZigiJXMgJXMgc2lnbmF0dXJlIHVzaW5nICVzICVzJXMlcyIsIGF1dGhfbWV0 aG9kLAogIAkgICAgc3Noa2V5X3R5cGUoa2V5KSwgc2lnYWxnID09IE5VTEwgPyAiZGVmYXVsdCIg OiBzaWdhbGcsCiAgCSAgICAocmV0ID09IDApID8gInZlcmlmaWVkIiA6ICJ1bnZlcmlmaWVkIiwK LUBAIC0xNzM2LDEzICsxNzYwLDE5IEBAIG1tX3JlY29yZF9sb2dpbihzdHJ1Y3Qgc3NoICpzc2gs IFNlc3Npb24gKnMsIHN0cnVjdCBwYXNzd2QgKnB3KQorQEAgLTE3MTAsMTMgKzE3MzQsMTkgQEAg bW1fcmVjb3JkX2xvZ2luKHN0cnVjdCBzc2ggKnNzaCwgU2Vzc2lvbiAqcywgc3RydWN0IHBhc3N3 ZCAqcHcpCiAgfQogIAogIHN0YXRpYyB2b2lkCkBAIC0xMjc1LDcgKzEyNzUsNyBAQCBpbmRleCA1 MjU1MDgzYWIuLjMwNTg4MzI3OCAxMDA2NDQKICAJc2Vzc2lvbl91bnVzZWQocy0+c2VsZik7CiAg fQogIAotQEAgLTE4MDksNyArMTgzOSw3IEBAIG1tX2Fuc3dlcl9wdHkoc3RydWN0IHNzaCAqc3No LCBpbnQgc29jaywgc3RydWN0IHNzaGJ1ZiAqbSkKK0BAIC0xNzgzLDcgKzE4MTMsNyBAQCBtbV9h bnN3ZXJfcHR5KHN0cnVjdCBzc2ggKnNzaCwgaW50IHNvY2ssIHN0cnVjdCBzc2hidWYgKm0pCiAg CiAgIGVycm9yOgogIAlpZiAocyAhPSBOVUxMKQpAQCAtMTI4NCw3ICsxMjg0LDcgQEAgaW5kZXgg NTI1NTA4M2FiLi4zMDU4ODMyNzggMTAwNjQ0CiAgCWlmICgociA9IHNzaGJ1Zl9wdXRfdTMyKG0s IDApKSAhPSAwKQogIAkJZmF0YWxfZnIociwgImFzc2VtYmxlIDAiKTsKICAJbW1fcmVxdWVzdF9z ZW5kKHNvY2ssIE1PTklUT1JfQU5TX1BUWSwgbSk7Ci1AQCAtMTgyOCw3ICsxODU4LDcgQEAgbW1f YW5zd2VyX3B0eV9jbGVhbnVwKHN0cnVjdCBzc2ggKnNzaCwgaW50IHNvY2ssIHN0cnVjdCBzc2hi dWYgKm0pCitAQCAtMTgwMiw3ICsxODMyLDcgQEAgbW1fYW5zd2VyX3B0eV9jbGVhbnVwKHN0cnVj dCBzc2ggKnNzaCwgaW50IHNvY2ssIHN0cnVjdCBzc2hidWYgKm0pCiAgCWlmICgociA9IHNzaGJ1 Zl9nZXRfY3N0cmluZyhtLCAmdHR5LCBOVUxMKSkgIT0gMCkKICAJCWZhdGFsX2ZyKHIsICJwYXJz ZSB0dHkiKTsKICAJaWYgKChzID0gc2Vzc2lvbl9ieV90dHkodHR5KSkgIT0gTlVMTCkKQEAgLTEy OTMsNyArMTI5Myw3IEBAIGluZGV4IDUyNTUwODNhYi4uMzA1ODgzMjc4IDEwMDY0NAogIAlzc2hi dWZfcmVzZXQobSk7CiAgCWZyZWUodHR5KTsKICAJcmV0dXJuICgwKTsKLUBAIC0xODUwLDYgKzE4 ODAsOCBAQCBtbV9hbnN3ZXJfdGVybShzdHJ1Y3Qgc3NoICpzc2gsIGludCBzb2NrLCBzdHJ1Y3Qg c3NoYnVmICpyZXEpCitAQCAtMTgyNCw2ICsxODU0LDggQEAgbW1fYW5zd2VyX3Rlcm0oc3RydWN0 IHNzaCAqc3NoLCBpbnQgc29jaywgc3RydWN0IHNzaGJ1ZiAqcmVxKQogIAkJc3NocGFtX2NsZWFu dXAoKTsKICAjZW5kaWYKICAKQEAgLTEzMDIsNyArMTMwMiw3IEBAIGluZGV4IDUyNTUwODNhYi4u MzA1ODgzMjc4IDEwMDY0NAogIAl3aGlsZSAod2FpdHBpZChwbW9uaXRvci0+bV9waWQsICZzdGF0 dXMsIDApID09IC0xKQogIAkJaWYgKGVycm5vICE9IEVJTlRSKQogIAkJCWV4aXQoMSk7Ci1AQCAt MTg5NiwxMiArMTkyOCw0NiBAQCBtbV9hbnN3ZXJfYXVkaXRfY29tbWFuZChzdHJ1Y3Qgc3NoICpz c2gsIGludCBzb2NrZXQsIHN0cnVjdCBzc2hidWYgKm0pCitAQCAtMTg3MCwxMiArMTkwMiw0NiBA QCBtbV9hbnN3ZXJfYXVkaXRfY29tbWFuZChzdHJ1Y3Qgc3NoICpzc2gsIGludCBzb2NrZXQsIHN0 cnVjdCBzc2hidWYgKm0pCiAgewogIAljaGFyICpjbWQ7CiAgCWludCByOwpAQCAtMTM1MCw3ICsx MzUwLDcgQEAgaW5kZXggNTI1NTA4M2FiLi4zMDU4ODMyNzggMTAwNjQ0CiAgCWZyZWUoY21kKTsK ICAJcmV0dXJuICgwKTsKICB9Ci1AQCAtMTk3NCw2ICsyMDQwLDcgQEAgbW9uaXRvcl9hcHBseV9r ZXlzdGF0ZShzdHJ1Y3Qgc3NoICpzc2gsIHN0cnVjdCBtb25pdG9yICpwbW9uaXRvcikKK0BAIC0x OTQ4LDYgKzIwMTQsNyBAQCBtb25pdG9yX2FwcGx5X2tleXN0YXRlKHN0cnVjdCBzc2ggKnNzaCwg c3RydWN0IG1vbml0b3IgKnBtb25pdG9yKQogIHZvaWQKICBtbV9nZXRfa2V5c3RhdGUoc3RydWN0 IHNzaCAqc3NoLCBzdHJ1Y3QgbW9uaXRvciAqcG1vbml0b3IpCiAgewpAQCAtMTM1OCw3ICsxMzU4 LDcgQEAgaW5kZXggNTI1NTA4M2FiLi4zMDU4ODMyNzggMTAwNjQ0CiAgCWRlYnVnM19mKCJXYWl0 aW5nIGZvciBuZXcga2V5cyIpOwogIAogIAlpZiAoKGNoaWxkX3N0YXRlID0gc3NoYnVmX25ldygp KSA9PSBOVUxMKQotQEAgLTE5ODEsNiArMjA0OCwxOSBAQCBtbV9nZXRfa2V5c3RhdGUoc3RydWN0 IHNzaCAqc3NoLCBzdHJ1Y3QgbW9uaXRvciAqcG1vbml0b3IpCitAQCAtMTk1NSw2ICsyMDIyLDE5 IEBAIG1tX2dldF9rZXlzdGF0ZShzdHJ1Y3Qgc3NoICpzc2gsIHN0cnVjdCBtb25pdG9yICpwbW9u aXRvcikKICAJbW1fcmVxdWVzdF9yZWNlaXZlX2V4cGVjdChwbW9uaXRvci0+bV9zZW5kZmQsIE1P TklUT1JfUkVRX0tFWUVYUE9SVCwKICAJICAgIGNoaWxkX3N0YXRlKTsKICAJZGVidWczX2YoIkdP VCBuZXcga2V5cyIpOwpAQCAtMTM3OCw3ICsxMzc4LDcgQEAgaW5kZXggNTI1NTA4M2FiLi4zMDU4 ODMyNzggMTAwNjQ0CiAgfQogIAogIAotQEAgLTIyNzUsMyArMjM1NSwxMDIgQEAgbW1fYW5zd2Vy X2dzc191cGRhdGVjcmVkcyhzdHJ1Y3Qgc3NoICpzc2gsIGludCBzb2NrZXQsIHN0cnVjdCBzc2hi dWYgKm0pIHsKK0BAIC0yMjQ5LDMgKzIzMjksMTAyIEBAIG1tX2Fuc3dlcl9nc3NfdXBkYXRlY3Jl ZHMoc3RydWN0IHNzaCAqc3NoLCBpbnQgc29ja2V0LCBzdHJ1Y3Qgc3NoYnVmICptKSB7CiAgCiAg I2VuZGlmIC8qIEdTU0FQSSAqLwogIApAQCAtMTUwMSwxMCArMTUwMSwxMCBAQCBpbmRleCBmNDcy MWM0NzIuLjA4N2FkZGZmNSAxMDA2NDQKICAJTU9OSVRPUl9SRVFfR1NTU0lHTiA9IDE1MCwgTU9O SVRPUl9BTlNfR1NTU0lHTiA9IDE1MSwKICAJTU9OSVRPUl9SRVFfR1NTVVBDUkVEUyA9IDE1Miwg TU9OSVRPUl9BTlNfR1NTVVBDUkVEUyA9IDE1MywKIGRpZmYgLS1naXQgYS9tb25pdG9yX3dyYXAu YyBiL21vbml0b3Jfd3JhcC5jCi1pbmRleCA0OTZkZTQzNmUuLmVmNDE5Yjc0MyAxMDA2NDQKK2lu ZGV4IDJkOTA1YzE2YS4uN2NjZjg3MjljIDEwMDY0NAogLS0tIGEvbW9uaXRvcl93cmFwLmMKICsr KyBiL21vbml0b3Jfd3JhcC5jCi1AQCAtNTk4LDcgKzU5OCw3IEBAIG1tX2tleV9hbGxvd2VkKGVu dW0gbW1fa2V5dHlwZSB0eXBlLCBjb25zdCBjaGFyICp1c2VyLCBjb25zdCBjaGFyICpob3N0LAor QEAgLTU2Myw3ICs1NjMsNyBAQCBtbV9rZXlfYWxsb3dlZChlbnVtIG1tX2tleXR5cGUgdHlwZSwg Y29uc3QgY2hhciAqdXNlciwgY29uc3QgY2hhciAqaG9zdCwKICAgKi8KICAKICBpbnQKQEAgLTE1 MTMsNyArMTUxMyw3IEBAIGluZGV4IDQ5NmRlNDM2ZS4uZWY0MTliNzQzIDEwMDY0NAogICAgICBj b25zdCB1X2NoYXIgKmRhdGEsIHNpemVfdCBkYXRhbGVuLCBjb25zdCBjaGFyICpzaWdhbGcsIHVf aW50IGNvbXBhdCwKICAgICAgc3RydWN0IHNzaGtleV9zaWdfZGV0YWlscyAqKnNpZ19kZXRhaWxz cCkKICB7Ci1AQCAtNjE0LDcgKzYxNCw4IEBAIG1tX3NzaGtleV92ZXJpZnkoY29uc3Qgc3RydWN0 IHNzaGtleSAqa2V5LCBjb25zdCB1X2NoYXIgKnNpZywgc2l6ZV90IHNpZ2xlbiwKK0BAIC01Nzks NyArNTc5LDggQEAgbW1fc3Noa2V5X3ZlcmlmeShjb25zdCBzdHJ1Y3Qgc3Noa2V5ICprZXksIGNv bnN0IHVfY2hhciAqc2lnLCBzaXplX3Qgc2lnbGVuLAogIAkJKnNpZ19kZXRhaWxzcCA9IE5VTEw7 CiAgCWlmICgobSA9IHNzaGJ1Zl9uZXcoKSkgPT0gTlVMTCkKICAJCWZhdGFsX2YoInNzaGJ1Zl9u ZXcgZmFpbGVkIik7CkBAIC0xNTIzLDcgKzE1MjMsNyBAQCBpbmRleCA0OTZkZTQzNmUuLmVmNDE5 Yjc0MyAxMDA2NDQKICAJICAgIChyID0gc3NoYnVmX3B1dF9zdHJpbmcobSwgc2lnLCBzaWdsZW4p KSAhPSAwIHx8CiAgCSAgICAociA9IHNzaGJ1Zl9wdXRfc3RyaW5nKG0sIGRhdGEsIGRhdGFsZW4p KSAhPSAwIHx8CiAgCSAgICAociA9IHNzaGJ1Zl9wdXRfY3N0cmluZyhtLCBzaWdhbGcgPT0gTlVM TCA/ICIiIDogc2lnYWxnKSkgIT0gMCkKLUBAIC02NDcsNiArNjQ4LDIyIEBAIG1tX3NzaGtleV92 ZXJpZnkoY29uc3Qgc3RydWN0IHNzaGtleSAqa2V5LCBjb25zdCB1X2NoYXIgKnNpZywgc2l6ZV90 IHNpZ2xlbiwKK0BAIC02MTIsNiArNjEzLDIyIEBAIG1tX3NzaGtleV92ZXJpZnkoY29uc3Qgc3Ry dWN0IHNzaGtleSAqa2V5LCBjb25zdCB1X2NoYXIgKnNpZywgc2l6ZV90IHNpZ2xlbiwKICAJcmV0 dXJuIDA7CiAgfQogIApAQCAtMTU0Niw3ICsxNTQ2LDcgQEAgaW5kZXggNDk2ZGU0MzZlLi5lZjQx OWI3NDMgMTAwNjQ0CiAgdm9pZAogIG1tX3NlbmRfa2V5c3RhdGUoc3RydWN0IHNzaCAqc3NoLCBz dHJ1Y3QgbW9uaXRvciAqbW9uaXRvcikKICB7Ci1AQCAtMTA2MywxMSArMTA4MCwxMiBAQCBtbV9h dWRpdF9ldmVudChzdHJ1Y3Qgc3NoICpzc2gsIHNzaF9hdWRpdF9ldmVudF90IGV2ZW50KQorQEAg LTEwMTEsMTEgKzEwMjgsMTIgQEAgbW1fYXVkaXRfZXZlbnQoc3RydWN0IHNzaCAqc3NoLCBzc2hf YXVkaXRfZXZlbnRfdCBldmVudCkKICAJc3NoYnVmX2ZyZWUobSk7CiAgfQogIApAQCAtMTU2MSw3 ICsxNTYxLDcgQEAgaW5kZXggNDk2ZGU0MzZlLi5lZjQxOWI3NDMgMTAwNjQ0CiAgCiAgCWRlYnVn M19mKCJlbnRlcmluZyBjb21tYW5kICVzIiwgY29tbWFuZCk7CiAgCi1AQCAtMTA3Nyw2ICsxMDk1 LDMwIEBAIG1tX2F1ZGl0X3J1bl9jb21tYW5kKGNvbnN0IGNoYXIgKmNvbW1hbmQpCitAQCAtMTAy NSw2ICsxMDQzLDMwIEBAIG1tX2F1ZGl0X3J1bl9jb21tYW5kKGNvbnN0IGNoYXIgKmNvbW1hbmQp CiAgCQlmYXRhbF9mcihyLCAiYnVmZmVyIGVycm9yIik7CiAgCiAgCW1tX3JlcXVlc3Rfc2VuZChw bW9uaXRvci0+bV9yZWN2ZmQsIE1PTklUT1JfUkVRX0FVRElUX0NPTU1BTkQsIG0pOwpAQCAtMTU5 Miw3ICsxNTkyLDcgQEAgaW5kZXggNDk2ZGU0MzZlLi5lZjQxOWI3NDMgMTAwNjQ0CiAgCXNzaGJ1 Zl9mcmVlKG0pOwogIH0KICAjZW5kaWYgLyogU1NIX0FVRElUX0VWRU5UUyAqLwotQEAgLTEzMjUs MyArMTM2Nyw4MyBAQCBzZXJ2ZXJfZ2V0X2Nvbm5lY3Rpb25faW5mbyhzdHJ1Y3Qgc3NoICpzc2gs IGludCBwb3B1bGF0ZSwgaW50IHVzZV9kbnMpCitAQCAtMTI3MywzICsxMzE1LDgzIEBAIHNlcnZl cl9nZXRfY29ubmVjdGlvbl9pbmZvKHN0cnVjdCBzc2ggKnNzaCwgaW50IHBvcHVsYXRlLCBpbnQg dXNlX2RucykKICAJcmV0dXJuICZjaTsKICB9CiAgCkBAIC0xNjc3LDcgKzE2NzcsNyBAQCBpbmRl eCA0OTZkZTQzNmUuLmVmNDE5Yjc0MyAxMDA2NDQKICt9CiArI2VuZGlmIC8qIFNTSF9BVURJVF9F VkVOVFMgKi8KIGRpZmYgLS1naXQgYS9tb25pdG9yX3dyYXAuaCBiL21vbml0b3Jfd3JhcC5oCi1p bmRleCBhNzA4YmY0ZDguLjk4NTY5NjhmOSAxMDA2NDQKK2luZGV4IDA3YjIwN2QxZC4uN2Y4NDZm MDg1IDEwMDY0NAogLS0tIGEvbW9uaXRvcl93cmFwLmgKICsrKyBiL21vbml0b3Jfd3JhcC5oCiBA QCAtNjMsNyArNjMsOSBAQCBpbnQgbW1fdXNlcl9rZXlfYWxsb3dlZChzdHJ1Y3Qgc3NoICpzc2gs IHN0cnVjdCBwYXNzd2QgKiwgc3RydWN0IHNzaGtleSAqLCBpbnQsCkBAIC0xNzA2LDcgKzE3MDYs NyBAQCBpbmRleCBhNzA4YmY0ZDguLjk4NTY5NjhmOSAxMDA2NDQKICAKICBzdHJ1Y3QgU2Vzc2lv bjsKIGRpZmYgLS1naXQgYS9wYWNrZXQuYyBiL3BhY2tldC5jCi1pbmRleCAxOTBhNTc5ZDEuLmZh NmY0Yzg0MyAxMDA2NDQKK2luZGV4IDRjODllNjBjNS4uNWNmNjgyYjBlIDEwMDY0NAogLS0tIGEv cGFja2V0LmMKICsrKyBiL3BhY2tldC5jCiBAQCAtNzcsNiArNzcsNyBAQApAQCAtMTcxNyw3ICsx NzE3LDcgQEAgaW5kZXggMTkwYTU3OWQxLi5mYTZmNGM4NDMgMTAwNjQ0CiAgI2luY2x1ZGUgImNv bXBhdC5oIgogICNpbmNsdWRlICJzc2gyLmgiCiAgI2luY2x1ZGUgImNpcGhlci5oIgotQEAgLTUx MSw2ICs1MTIsMTMgQEAgc3NoX3BhY2tldF9nZXRfY29ubmVjdGlvbl9vdXQoc3RydWN0IHNzaCAq c3NoKQorQEAgLTUxNiw2ICs1MTcsMTMgQEAgc3NoX3BhY2tldF9nZXRfY29ubmVjdGlvbl9vdXQo c3RydWN0IHNzaCAqc3NoKQogIAlyZXR1cm4gc3NoLT5zdGF0ZS0+Y29ubmVjdGlvbl9vdXQ7CiAg fQogIApAQCAtMTczMSw3ICsxNzMxLDcgQEAgaW5kZXggMTkwYTU3OWQxLi5mYTZmNGM4NDMgMTAw NjQ0CiAgLyoKICAgKiBSZXR1cm5zIHRoZSBJUC1hZGRyZXNzIG9mIHRoZSByZW1vdGUgaG9zdCBh cyBhIHN0cmluZy4gIFRoZSByZXR1cm5lZAogICAqIHN0cmluZyBtdXN0IG5vdCBiZSBmcmVlZC4K LUBAIC02ODEsMjIgKzY4OSwxOSBAQCBzc2hfcGFja2V0X2Nsb3NlX2ludGVybmFsKHN0cnVjdCBz c2ggKnNzaCwgaW50IGRvX2Nsb3NlKQorQEAgLTY4NiwyMiArNjk0LDE5IEBAIHNzaF9wYWNrZXRf Y2xvc2VfaW50ZXJuYWwoc3RydWN0IHNzaCAqc3NoLCBpbnQgZG9fY2xvc2UpCiAgCXN0cnVjdCBz ZXNzaW9uX3N0YXRlICpzdGF0ZSA9IHNzaC0+c3RhdGU7CiAgCXVfaW50IG1vZGU7CiAgCXN0cnVj dCBwYWNrZXQgKnA7CkBAIC0xNzU5LDcgKzE3NTksNyBAQCBpbmRleCAxOTBhNTc5ZDEuLmZhNmY0 Yzg0MyAxMDA2NDQKICAJd2hpbGUgKChwID0gVEFJTFFfRklSU1QoJnN0YXRlLT5vdXRnb2luZykp KSB7CiAgCQlzc2hidWZfZnJlZShwLT5wYXlsb2FkKTsKICAJCVRBSUxRX1JFTU9WRSgmc3RhdGUt Pm91dGdvaW5nLCBwLCBuZXh0KTsKLUBAIC03MzcsOCArNzQyLDE4IEBAIHNzaF9wYWNrZXRfY2xv c2VfaW50ZXJuYWwoc3RydWN0IHNzaCAqc3NoLCBpbnQgZG9fY2xvc2UpCitAQCAtNzQyLDggKzc0 NywxOCBAQCBzc2hfcGFja2V0X2Nsb3NlX2ludGVybmFsKHN0cnVjdCBzc2ggKnNzaCwgaW50IGRv X2Nsb3NlKQogICNlbmRpZgkvKiBXSVRIX1pMSUIgKi8KICAJY2lwaGVyX2ZyZWUoc3RhdGUtPnNl bmRfY29udGV4dCk7CiAgCWNpcGhlcl9mcmVlKHN0YXRlLT5yZWNlaXZlX2NvbnRleHQpOwpAQCAt MTc3OCw3ICsxNzc4LDcgQEAgaW5kZXggMTkwYTU3OWQxLi5mYTZmNGM4NDMgMTAwNjQ0CiAgCQlm cmVlKHNzaC0+bG9jYWxfaXBhZGRyKTsKICAJCXNzaC0+bG9jYWxfaXBhZGRyID0gTlVMTDsKICAJ CWZyZWUoc3NoLT5yZW1vdGVfaXBhZGRyKTsKLUBAIC0xMDA0LDYgKzEwMTksNyBAQCBzc2hfc2V0 X25ld2tleXMoc3RydWN0IHNzaCAqc3NoLCBpbnQgbW9kZSkKK0BAIC0xMDA5LDYgKzEwMjQsNyBA QCBzc2hfc2V0X25ld2tleXMoc3RydWN0IHNzaCAqc3NoLCBpbnQgbW9kZSkKICAJCSAgICAodW5z aWduZWQgbG9uZyBsb25nKXN0YXRlLT5wX3NlbmQuYnl0ZXMsCiAgCQkgICAgKHVuc2lnbmVkIGxv bmcgbG9uZylzdGF0ZS0+cF9zZW5kLmJsb2Nrcyk7CiAgCQlrZXhfZnJlZV9uZXdrZXlzKHN0YXRl LT5uZXdrZXlzW21vZGVdKTsKQEAgLTE3ODYsNyArMTc4Niw3IEBAIGluZGV4IDE5MGE1NzlkMS4u ZmE2ZjRjODQzIDEwMDY0NAogIAkJc3RhdGUtPm5ld2tleXNbbW9kZV0gPSBOVUxMOwogIAl9CiAg CS8qIG5vdGUgdGhhdCBib3RoIGJ5dGVzIGFuZCB0aGUgc2VxbnIgYXJlIG5vdCByZXNldCAqLwot QEAgLTIzODUsNiArMjQwMSw3MiBAQCBzc2hfcGFja2V0X2dldF9vdXRwdXQoc3RydWN0IHNzaCAq c3NoKQorQEAgLTIzOTcsNiArMjQxMyw3MiBAQCBzc2hfcGFja2V0X2dldF9vdXRwdXQoc3RydWN0 IHNzaCAqc3NoKQogIAlyZXR1cm4gKHZvaWQgKilzc2gtPnN0YXRlLT5vdXRwdXQ7CiAgfQogIApA QCAtMTg3MCw3ICsxODcwLDcgQEAgaW5kZXggM2U4YWNiMmNkLi5lOWFlZmRhYWQgMTAwNjQ0CiAr dm9pZAkgcGFja2V0X2Rlc3Ryb3lfYWxsKHN0cnVjdCBzc2ggKiwgaW50LCBpbnQpOwogICNlbmRp ZgkJCQkvKiBQQUNLRVRfSCAqLwogZGlmZiAtLWdpdCBhL3Nlc3Npb24uYyBiL3Nlc3Npb24uYwot aW5kZXggMGMyNjQ0OGQ5Li43NWZmMTA4MGUgMTAwNjQ0CitpbmRleCA1NzI0ODdiNGEuLmQzNmMx YjcwMiAxMDA2NDQKIC0tLSBhL3Nlc3Npb24uYwogKysrIGIvc2Vzc2lvbi5jCiBAQCAtMTM5LDYg KzEzOSw3IEBAIHN0YXRpYyBpbnQgc2Vzc2lvbl9wdHlfcmVxKHN0cnVjdCBzc2ggKiwgU2Vzc2lv biAqKTsKQEAgLTE5MzAsNyArMTkzMCw3IEBAIGluZGV4IDBjMjY0NDhkOS4uNzVmZjEwODBlIDEw MDY0NAogIAogIAkvKiBGb3JjZSBhIHBhc3N3b3JkIGNoYW5nZSAqLwogIAlpZiAocy0+YXV0aGN0 eHQtPmZvcmNlX3B3Y2hhbmdlKSB7Ci1AQCAtMTcxNyw2ICsxNzM0LDkgQEAgc2Vzc2lvbl91bnVz ZWQoaW50IGlkKQorQEAgLTE3MTgsNiArMTczNSw5IEBAIHNlc3Npb25fdW51c2VkKGludCBpZCkK ICAJc2Vzc2lvbnNbaWRdLnR0eWZkID0gLTE7CiAgCXNlc3Npb25zW2lkXS5wdHltYXN0ZXIgPSAt MTsKICAJc2Vzc2lvbnNbaWRdLngxMV9jaGFuaWRzID0gTlVMTDsKQEAgLTE5NDAsNyArMTk0MCw3 IEBAIGluZGV4IDBjMjY0NDhkOS4uNzVmZjEwODBlIDEwMDY0NAogIAlzZXNzaW9uc1tpZF0ubmV4 dF91bnVzZWQgPSBzZXNzaW9uc19maXJzdF91bnVzZWQ7CiAgCXNlc3Npb25zX2ZpcnN0X3VudXNl ZCA9IGlkOwogIH0KLUBAIC0xNzk1LDYgKzE4MTUsMTkgQEAgc2Vzc2lvbl9vcGVuKEF1dGhjdHh0 ICphdXRoY3R4dCwgaW50IGNoYW5pZCkKK0BAIC0xNzk2LDYgKzE4MTYsMTkgQEAgc2Vzc2lvbl9v cGVuKEF1dGhjdHh0ICphdXRoY3R4dCwgaW50IGNoYW5pZCkKICAJcmV0dXJuIDE7CiAgfQogIApA QCAtMTk2MCw3ICsxOTYwLDcgQEAgaW5kZXggMGMyNjQ0OGQ5Li43NWZmMTA4MGUgMTAwNjQ0CiAg U2Vzc2lvbiAqCiAgc2Vzc2lvbl9ieV90dHkoY2hhciAqdHR5KQogIHsKLUBAIC0yNDEzLDYgKzI0 NDYsMzIgQEAgc2Vzc2lvbl9leGl0X21lc3NhZ2Uoc3RydWN0IHNzaCAqc3NoLCBTZXNzaW9uICpz LCBpbnQgc3RhdHVzKQorQEAgLTI0MTcsNiArMjQ1MCwzMiBAQCBzZXNzaW9uX2V4aXRfbWVzc2Fn ZShzdHJ1Y3Qgc3NoICpzc2gsIFNlc3Npb24gKnMsIGludCBzdGF0dXMpCiAgCQljaGFuX3dyaXRl X2ZhaWxlZChzc2gsIGMpOwogIH0KICAKQEAgLTE5OTMsNyArMTk5Myw3IEBAIGluZGV4IDBjMjY0 NDhkOS4uNzVmZjEwODBlIDEwMDY0NAogIHZvaWQKICBzZXNzaW9uX2Nsb3NlKHN0cnVjdCBzc2gg KnNzaCwgU2Vzc2lvbiAqcykKICB7Ci1AQCAtMjQyNiw2ICsyNDg1LDEwIEBAIHNlc3Npb25fY2xv c2Uoc3RydWN0IHNzaCAqc3NoLCBTZXNzaW9uICpzKQorQEAgLTI0MzAsNiArMjQ4OSwxMCBAQCBz ZXNzaW9uX2Nsb3NlKHN0cnVjdCBzc2ggKnNzaCwgU2Vzc2lvbiAqcykKICAKICAJaWYgKHMtPnR0 eWZkICE9IC0xKQogIAkJc2Vzc2lvbl9wdHlfY2xlYW51cChzKTsKQEAgLTIwMDQsNyArMjAwNCw3 IEBAIGluZGV4IDBjMjY0NDhkOS4uNzVmZjEwODBlIDEwMDY0NAogIAlmcmVlKHMtPnRlcm0pOwog IAlmcmVlKHMtPmRpc3BsYXkpOwogIAlmcmVlKHMtPngxMV9jaGFuaWRzKTsKLUBAIC0yNTAyLDE0 ICsyNTY1LDE0IEBAIHNlc3Npb25fY2xvc2VfYnlfY2hhbm5lbChzdHJ1Y3Qgc3NoICpzc2gsIGlu dCBpZCwgaW50IGZvcmNlLCB2b2lkICphcmcpCitAQCAtMjUwNiwxNCArMjU2OSwxNCBAQCBzZXNz aW9uX2Nsb3NlX2J5X2NoYW5uZWwoc3RydWN0IHNzaCAqc3NoLCBpbnQgaWQsIGludCBmb3JjZSwg dm9pZCAqYXJnKQogIH0KICAKICB2b2lkCkBAIC0yMDIxLDcgKzIwMjEsNyBAQCBpbmRleCAwYzI2 NDQ4ZDkuLjc1ZmYxMDgwZSAxMDA2NDQKICAJCQllbHNlCiAgCQkJCXNlc3Npb25fY2xvc2Uoc3No LCBzKTsKICAJCX0KLUBAIC0yNjM1LDYgKzI2OTgsMTUgQEAgZG9fYXV0aGVudGljYXRlZDIoc3Ry dWN0IHNzaCAqc3NoLCBBdXRoY3R4dCAqYXV0aGN0eHQpCitAQCAtMjYzOSw2ICsyNzAyLDE1IEBA IGRvX2F1dGhlbnRpY2F0ZWQyKHN0cnVjdCBzc2ggKnNzaCwgQXV0aGN0eHQgKmF1dGhjdHh0KQog IAlzZXJ2ZXJfbG9vcDIoc3NoLCBhdXRoY3R4dCk7CiAgfQogIApAQCAtMjAzNyw3ICsyMDM3LDcg QEAgaW5kZXggMGMyNjQ0OGQ5Li43NWZmMTA4MGUgMTAwNjQ0CiAgdm9pZAogIGRvX2NsZWFudXAo c3RydWN0IHNzaCAqc3NoLCBBdXRoY3R4dCAqYXV0aGN0eHQpCiAgewotQEAgLTI2OTgsNyArMjc3 MCw3IEBAIGRvX2NsZWFudXAoc3RydWN0IHNzaCAqc3NoLCBBdXRoY3R4dCAqYXV0aGN0eHQpCitA QCAtMjcwMiw3ICsyNzc0LDcgQEAgZG9fY2xlYW51cChzdHJ1Y3Qgc3NoICpzc2gsIEF1dGhjdHh0 ICphdXRoY3R4dCkKICAJICogb3IgaWYgcnVubmluZyBpbiBtb25pdG9yLgogIAkgKi8KICAJaWYg KG1tX2lzX21vbml0b3IoKSkKQEAgLTIwNzgsNyArMjA3OCw3IEBAIGluZGV4IDM0NGExZGRmOS4u YTQxYzZlZmNkIDEwMDY0NAogIHZvaWQJIHNlc3Npb25fY2xvc2Uoc3RydWN0IHNzaCAqLCBTZXNz aW9uICopOwogIHZvaWQJIGRvX3NldHVzZXJjb250ZXh0KHN0cnVjdCBwYXNzd2QgKik7CiBkaWZm IC0tZ2l0IGEvc3NoZC1zZXNzaW9uLmMgYi9zc2hkLXNlc3Npb24uYwotaW5kZXggMjNiODBlYjAx Li5kODk3MmZiZDUgMTAwNjQ0CitpbmRleCA2ZjA3Yzg0M2EuLmZhMTE5MmMwOSAxMDA2NDQKIC0t LSBhL3NzaGQtc2Vzc2lvbi5jCiArKysgYi9zc2hkLXNlc3Npb24uYwogQEAgLTE4MSw4ICsxODEs OCBAQCBzdHJ1Y3QgaW5jbHVkZV9saXN0IGluY2x1ZGVzID0gVEFJTFFfSEVBRF9JTklUSUFMSVpF UihpbmNsdWRlcyk7CkBAIC0yMjIxLDcgKzIyMjEsNyBAQCBpbmRleCAyM2I4MGViMDEuLmQ4OTcy ZmJkNSAxMDA2NDQKICAKICAJcmVzZWVkX3BybmdzKCk7CiAgCi1AQCAtMTMzMyw2ICsxNDAyLDkg QEAgbWFpbihpbnQgYWMsIGNoYXIgKiphdikKK0BAIC0xMzM0LDYgKzE0MDMsOSBAQCBtYWluKGlu dCBhYywgY2hhciAqKmF2KQogIAlkb19hdXRoZW50aWNhdGVkKHNzaCwgYXV0aGN0eHQpOwogIAog IAkvKiBUaGUgY29ubmVjdGlvbiBoYXMgYmVlbiB0ZXJtaW5hdGVkLiAqLwpAQCAtMjIzMSw3ICsy MjMxLDcgQEAgaW5kZXggMjNiODBlYjAxLi5kODk3MmZiZDUgMTAwNjQ0CiAgCXNzaF9wYWNrZXRf Z2V0X2J5dGVzKHNzaCwgJmlieXRlcywgJm9ieXRlcyk7CiAgCXZlcmJvc2UoIlRyYW5zZmVycmVk OiBzZW50ICVsbHUsIHJlY2VpdmVkICVsbHUgYnl0ZXMiLAogIAkgICAgKHVuc2lnbmVkIGxvbmcg bG9uZylvYnl0ZXMsICh1bnNpZ25lZCBsb25nIGxvbmcpaWJ5dGVzKTsKLUBAIC0xMzc4LDYgKzE0 NTAsMTYgQEAgc3NoZF9ob3N0a2V5X3NpZ24oc3RydWN0IHNzaCAqc3NoLCBzdHJ1Y3Qgc3Noa2V5 ICpwcml2a2V5LAorQEAgLTEzNzksNiArMTQ1MSwxNiBAQCBzc2hkX2hvc3RrZXlfc2lnbihzdHJ1 Y3Qgc3NoICpzc2gsIHN0cnVjdCBzc2hrZXkgKnByaXZrZXksCiAgdm9pZAogIGNsZWFudXBfZXhp dChpbnQgaSkKICB7CkBAIC0yMjQ4LDcgKzIyNDgsNyBAQCBpbmRleCAyM2I4MGViMDEuLmQ4OTcy ZmJkNSAxMDA2NDQKICAJaWYgKHRoZV9hY3RpdmVfc3RhdGUgIT0gTlVMTCAmJiB0aGVfYXV0aGN0 eHQgIT0gTlVMTCkgewogIAkJZG9fY2xlYW51cCh0aGVfYWN0aXZlX3N0YXRlLCB0aGVfYXV0aGN0 eHQpOwogIAkJaWYgKHByaXZzZXBfaXNfcHJlYXV0aCAmJgotQEAgLTEzOTIsNyArMTQ3NCw5IEBA IGNsZWFudXBfZXhpdChpbnQgaSkKK0BAIC0xMzkzLDcgKzE0NzUsOSBAQCBjbGVhbnVwX2V4aXQo aW50IGkpCiAgCX0KICAjaWZkZWYgU1NIX0FVRElUX0VWRU5UUwogIAkvKiBkb25lIGFmdGVyIGRv X2NsZWFudXAgc28gaXQgY2FuIGNhbmNlbCB0aGUgUEFNIGF1dGggJ3RocmVhZCcgKi8KQEAgLTIy NjAsNyArMjI2MCw3IEBAIGluZGV4IDIzYjgwZWIwMS4uZDg5NzJmYmQ1IDEwMDY0NAogICNlbmRp ZgogIAkvKiBPdmVycmlkZSBkZWZhdWx0IGZhdGFsIGV4aXQgdmFsdWUgd2hlbiBhdXRoIHdhcyBh dHRlbXB0ZWQgKi8KIGRpZmYgLS1naXQgYS9zc2hkLmMgYi9zc2hkLmMKLWluZGV4IDU1MjQzNTgx Ny4uMjJhZDRkZmYwIDEwMDY0NAoraW5kZXggZjY2ZTFmODZmLi42Yjk4NDdmNjcgMTAwNjQ0CiAt LS0gYS9zc2hkLmMKICsrKyBiL3NzaGQuYwogQEAgLTIwNiw2ICsyMDYsMTUgQEAgY2xvc2VfbGlz dGVuX3NvY2tzKHZvaWQpCkBAIC0yMjg4LDUgKzIyODgsNSBAQCBpbmRleCA1NTI0MzU4MTcuLjIy YWQ0ZGZmMCAxMDA2NDQKICAJCQlpZiAob3B0aW9ucy5waWRfZmlsZSAhPSBOVUxMKQogIAkJCQl1 bmxpbmsob3B0aW9ucy5waWRfZmlsZSk7CiAtLSAKLTIuNTMuMAorMi41NS4wCiAKCmRpZmYgLS1n aXQgYS8wMDM2LW9wZW5zc2gtNy4xcDItYXVkaXQtcmFjZS1jb25kaXRpb24ucGF0Y2ggYi8wMDM2 LW9wZW5zc2gtNy4xcDItYXVkaXQtcmFjZS1jb25kaXRpb24ucGF0Y2gKaW5kZXggM2JkNjU5NC4u YTJiZWM2MSAxMDA2NDQKLS0tIGEvMDAzNi1vcGVuc3NoLTcuMXAyLWF1ZGl0LXJhY2UtY29uZGl0 aW9uLnBhdGNoCisrKyBiLzAwMzYtb3BlbnNzaC03LjFwMi1hdWRpdC1yYWNlLWNvbmRpdGlvbi5w YXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZDE4YzBlOGMxMjExMGQ3YTQ2YmNiZmI2N2NiNmUy OGU3ZWJjZWNmMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gODllYWNiYmRkZjNmMDQz NDliMzdmOWNmYzc1ZjAwODBmOWQ4MmI1ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206 IERtaXRyeSBCZWx5YXZza2l5IDxiZWxkbWl0QGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMTUgTWF5 IDIwMjUgMTM6NDM6MjkgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSCAzNi81NF0gb3BlbnNzaC03LjFw Mi1hdWRpdC1yYWNlLWNvbmRpdGlvbgpAQCAtMTEsMTAgKzExLDEwIEBAIFN1YmplY3Q6IFtQQVRD SCAzNi81NF0gb3BlbnNzaC03LjFwMi1hdWRpdC1yYWNlLWNvbmRpdGlvbgogIDMgZmlsZXMgY2hh bmdlZCwgMTAyIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9t b25pdG9yX3dyYXAuYyBiL21vbml0b3Jfd3JhcC5jCi1pbmRleCBlZjQxOWI3NDMuLmZhMzcxODky NCAxMDA2NDQKK2luZGV4IDdjY2Y4NzI5Yy4uY2Q3MGE0ZTEyIDEwMDY0NAogLS0tIGEvbW9uaXRv cl93cmFwLmMKICsrKyBiL21vbml0b3Jfd3JhcC5jCi1AQCAtMTQ0Niw0ICsxNDQ2LDUwIEBAIG1t X2F1ZGl0X2Rlc3Ryb3lfc2Vuc2l0aXZlX2RhdGEoc3RydWN0IHNzaCAqc3NoLCBjb25zdCBjaGFy ICpmcCwgcGlkX3QgcGlkLCB1aWRfCitAQCAtMTM5NCw0ICsxMzk0LDUwIEBAIG1tX2F1ZGl0X2Rl c3Ryb3lfc2Vuc2l0aXZlX2RhdGEoc3RydWN0IHNzaCAqc3NoLCBjb25zdCBjaGFyICpmcCwgcGlk X3QgcGlkLCB1aWRfCiAgCW1tX3JlcXVlc3Rfc2VuZChwbW9uaXRvci0+bV9yZWN2ZmQsIE1PTklU T1JfUkVRX0FVRElUX1NFUlZFUl9LRVlfRlJFRSwgbSk7CiAgCXNzaGJ1Zl9mcmVlKG0pOwogIH0K QEAgLTY2LDcgKzY2LDcgQEAgaW5kZXggZWY0MTliNzQzLi5mYTM3MTg5MjQgMTAwNjQ0CiArfQog ICNlbmRpZiAvKiBTU0hfQVVESVRfRVZFTlRTICovCiBkaWZmIC0tZ2l0IGEvbW9uaXRvcl93cmFw LmggYi9tb25pdG9yX3dyYXAuaAotaW5kZXggOTg1Njk2OGY5Li4wODY1ZjU5Y2IgMTAwNjQ0Citp bmRleCA3Zjg0NmYwODUuLjQxZTRiNzlmZSAxMDA2NDQKIC0tLSBhL21vbml0b3Jfd3JhcC5oCiAr KysgYi9tb25pdG9yX3dyYXAuaAogQEAgLTk4LDYgKzk4LDggQEAgdm9pZCBtbV9hdWRpdF91bnN1 cHBvcnRlZF9ib2R5KHN0cnVjdCBzc2ggKiwgaW50KTsKQEAgLTc5LDcgKzc5LDcgQEAgaW5kZXgg OTg1Njk2OGY5Li4wODY1ZjU5Y2IgMTAwNjQ0CiAgCiAgc3RydWN0IFNlc3Npb247CiBkaWZmIC0t Z2l0IGEvc2Vzc2lvbi5jIGIvc2Vzc2lvbi5jCi1pbmRleCA3NWZmMTA4MGUuLjFhN2Y1Y2E3YSAx MDA2NDQKK2luZGV4IGQzNmMxYjcwMi4uYmQ4ZGM4MDhjIDEwMDY0NAogLS0tIGEvc2Vzc2lvbi5j CiArKysgYi9zZXNzaW9uLmMKIEBAIC0xNjEsNiArMTYxLDEwIEBAIHN0YXRpYyBTZXNzaW9uICpz ZXNzaW9ucyA9IE5VTEw7CkBAIC0yMDAsNSArMjAwLDUgQEAgaW5kZXggNzVmZjEwODBlLi4xYTdm NWNhN2EgMTAwNjQ0CiAgCWlmIChzLT5hdXRoY3R4dC0+Zm9yY2VfcHdjaGFuZ2UpIHsKICAJCWRv X3NldHVzZXJjb250ZXh0KHB3KTsKIC0tIAotMi41My4wCisyLjU1LjAKIAoKZGlmZiAtLWdpdCBh LzAwMzctb3BlbnNzaC05LjBwMS1hdWRpdC1sb2cucGF0Y2ggYi8wMDM3LW9wZW5zc2gtOS4wcDEt YXVkaXQtbG9nLnBhdGNoCmluZGV4IDRlOGYyN2UuLjE5ZjE4MTggMTAwNjQ0Ci0tLSBhLzAwMzct b3BlbnNzaC05LjBwMS1hdWRpdC1sb2cucGF0Y2gKKysrIGIvMDAzNy1vcGVuc3NoLTkuMHAxLWF1 ZGl0LWxvZy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gOGE0ODQzZjg3MjYwMjhjYTZiMTAy ODU2OThkY2NlYTg1MjYzMjU5MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYTVkYzE5 NmI0YzZkMjQ2MmU4N2Y1Y2I4MjVlMWI2MzBiMTIxN2QwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKIEZyb206IERtaXRyeSBCZWx5YXZza2l5IDxiZWxkbWl0QGdtYWlsLmNvbT4KIERhdGU6IFRo dSwgMTUgTWF5IDIwMjUgMTM6NDM6MjkgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSCAzNy81NF0gb3Bl bnNzaC05LjBwMS1hdWRpdC1sb2cKQEAgLTI2Miw1ICsyNjIsNSBAQCBpbmRleCA0NWQ2NmNjZmYu LjA1YWMxMzJjZiAxMDA2NDQKICB2b2lkCWF1ZGl0X3Vuc3VwcG9ydGVkKHN0cnVjdCBzc2ggKiwg aW50KTsKICB2b2lkCWF1ZGl0X2tleChzdHJ1Y3Qgc3NoICosIGludCwgY2hhciAqLCBjaGFyICos IGNoYXIgKiwgY2hhciAqKTsKIC0tIAotMi41My4wCisyLjU1LjAKIAoKZGlmZiAtLWdpdCBhLzAw Mzgtb3BlbnNzaC03LjdwMS1maXBzLnBhdGNoIGIvMDAzOC1vcGVuc3NoLTcuN3AxLWZpcHMucGF0 Y2gKaW5kZXggMTljMWIyMS4uNGViOGUyYiAxMDA2NDQKLS0tIGEvMDAzOC1vcGVuc3NoLTcuN3Ax LWZpcHMucGF0Y2gKKysrIGIvMDAzOC1vcGVuc3NoLTcuN3AxLWZpcHMucGF0Y2gKQEAgLTEsNCAr MSw0IEBACi1Gcm9tIDU1YzBkNTRiOTFjYzM5ZWQ2ZjEwNTQyZjg4M2RiYWFkNmEzMjEzY2EgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGViNmJlNzQzNTA5NDA3ZGU5NTllZjNhNWU5NWNk NzY4MTViNDhkY2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBEbWl0cnkgQmVseWF2 c2tpeSA8YmVsZG1pdEBnbWFpbC5jb20+CiBEYXRlOiBUaHUsIDI4IEF1ZyAyMDI1IDE0OjAxOjM4 ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0ggMzgvNTRdIG9wZW5zc2gtNy43cDEtZmlwcwpAQCAtOSw3 ICs5LDcgQEAgU3ViamVjdDogW1BBVENIIDM4LzU0XSBvcGVuc3NoLTcuN3AxLWZpcHMKICBrZXgt bmFtZXMuYyAgICAgICAgICAgICAgfCAgNiArKystCiAga2V4LmMgICAgICAgICAgICAgICAgICAg IHwgIDMgKy0KICBrZXhnZW4uYyAgICAgICAgICAgICAgICAgfCA3NCArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLS0tCi0ga2V4Z2V4Yy5jICAgICAgICAgICAgICAgIHwgIDUg KysrCisga2V4Z2V4Yy5jICAgICAgICAgICAgICAgIHwgIDYgKysrKwogIG15cHJvcG9zYWwuaCAg ICAgICAgICAgICB8IDMzICsrKysrKysrKysrKysrKysrKwogIHJlYWRjb25mLmMgICAgICAgICAg ICAgICB8IDIxICsrKysrKysrKy0tLQogIHNhbmRib3gtc2VjY29tcC1maWx0ZXIuYyB8ICAzICsr CkBAIC0yMyw3ICsyMyw3IEBAIFN1YmplY3Q6IFtQQVRDSCAzOC81NF0gb3BlbnNzaC03LjdwMS1m aXBzCiAgc3NoY29ubmVjdDIuYyAgICAgICAgICAgIHwgMTEgKysrKystCiAgc3NoZC5jICAgICAg ICAgICAgICAgICAgIHwgMTkgKysrKysrKysrKysKICBzc2hrZXkuYyAgICAgICAgICAgICAgICAg fCAzNyArKysrKysrKysrKysrKysrKysrKwotIDE5IGZpbGVzIGNoYW5nZWQsIDMwMCBpbnNlcnRp b25zKCspLCAzMCBkZWxldGlvbnMoLSkKKyAxOSBmaWxlcyBjaGFuZ2VkLCAzMDEgaW5zZXJ0aW9u cygrKSwgMzAgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9kaC5jIGIvZGguYwogaW5kZXgg YjI5MTc1MGQ4Li4zZWZlMGE2OWYgMTAwNjQ0CkBAIC0xMDIsNyArMTAyLDcgQEAgaW5kZXggYzYz MjZhMzlkLi5lNTFlMjkyYjggMTAwNjQ0CiAgdV9pbnQJIGRoX2VzdGltYXRlKGludCk7CiAgdm9p ZAkgZGhfc2V0X21vZHVsaV9maWxlKGNvbnN0IGNoYXIgKik7CiBkaWZmIC0tZ2l0IGEva2V4LW5h bWVzLmMgYi9rZXgtbmFtZXMuYwotaW5kZXggNzY5YTM2ODEwLi5jMDc2MWFlOGYgMTAwNjQ0Citp bmRleCAzYmMzODEzMGIuLmRjYjZlZmMxMyAxMDA2NDQKIC0tLSBhL2tleC1uYW1lcy5jCiArKysg Yi9rZXgtbmFtZXMuYwogQEAgLTMyLDYgKzMyLDcgQEAKQEAgLTExMyw3ICsxMTMsNyBAQCBpbmRl eCA3NjlhMzY4MTAuLmMwNzYxYWU4ZiAxMDA2NDQKICAjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4K ICAjZW5kaWYKICAKLUBAIC0yMDcsNyArMjA4LDEwIEBAIGtleF9uYW1lc192YWxpZChjb25zdCBj aGFyICpuYW1lcykKK0BAIC0yMTMsNyArMjE0LDEwIEBAIGtleF9uYW1lc192YWxpZChjb25zdCBj aGFyICpuYW1lcykKICAJCQlyZXR1cm4gMDsKICAJCX0KICAJCWlmIChrZXhfYWxnX2J5X25hbWUo cCkgPT0gTlVMTCkgewpAQCAtMTI2LDcgKzEyNiw3IEBAIGluZGV4IDc2OWEzNjgxMC4uYzA3NjFh ZThmIDEwMDY0NAogIAkJCXJldHVybiAwOwogIAkJfQogZGlmZiAtLWdpdCBhL2tleC5jIGIva2V4 LmMKLWluZGV4IDcwYmViY2U2YS4uZTEwNTlkZWM0IDEwMDY0NAoraW5kZXggM2ZiZjFkZDQzLi5h YmQxM2EwZTIgMTAwNjQ0CiAtLS0gYS9rZXguYwogKysrIGIva2V4LmMKIEBAIC0zNyw2ICszNyw3 IEBACkBAIC0yNjUsNyArMjY1LDcgQEAgaW5kZXggYTJiZWIzZjEwLi4yZjgyNTI0ODggMTAwNjQ0 CiAgCWRlZmF1bHQ6CiAgCQlyID0gU1NIX0VSUl9JTlZBTElEX0FSR1VNRU5UOwogZGlmZiAtLWdp dCBhL2tleGdleGMuYyBiL2tleGdleGMuYwotaW5kZXggMWMyMTk0YThmLi5mOWE1OGI5NTUgMTAw NjQ0CitpbmRleCAxYzIxOTRhOGYuLjI3NjNlODYyYSAxMDA2NDQKIC0tLSBhL2tleGdleGMuYwog KysrIGIva2V4Z2V4Yy5jCiBAQCAtMjksNiArMjksNyBAQApAQCAtMjc2LDcgKzI3Niw3IEBAIGlu ZGV4IDFjMjE5NGE4Zi4uZjlhNThiOTU1IDEwMDY0NAogICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4K ICAKICAjaW5jbHVkZSA8b3BlbnNzbC9ibi5oPgotQEAgLTExNyw2ICsxMTgsMTEgQEAgaW5wdXRf a2V4X2RoX2dleF9ncm91cChpbnQgdHlwZSwgdV9pbnQzMgorQEAgLTExNiw2ICsxMTcsMTEgQEAg aW5wdXRfa2V4X2RoX2dleF9ncm91cChpbnQgdHlwZSwgdWludDMyX3Qgc2VxLCBzdHJ1Y3Qgc3No ICpzc2gpCiAgCX0KICAJcCA9IGcgPSBOVUxMOyAvKiBiZWxvbmcgdG8ga2V4LT5kaCBub3cgKi8K ICAKQEAgLTM0MCw3ICszNDAsNyBAQCBpbmRleCBkOTkyZDhiMTIuLjY0MzNlMDgyMCAxMDA2NDQK ICAjZGVmaW5lCVNTSF9BTExPV0VEX0NBX1NJR0FMR1MJXAogIAkic3NoLWVkMjU1MTksIiBcCiBk aWZmIC0tZ2l0IGEvcmVhZGNvbmYuYyBiL3JlYWRjb25mLmMKLWluZGV4IDkwMDQwNzZlNC4uMDU4 ZTUzY2YxIDEwMDY0NAoraW5kZXggMWI3ZDRhZTRlLi5lOTcxY2E1YzQgMTAwNjQ0CiAtLS0gYS9y ZWFkY29uZi5jCiArKysgYi9yZWFkY29uZi5jCiBAQCAtMzgsNiArMzgsMTIgQEAKQEAgLTM3OSw3 ICszNzksNyBAQCBpbmRleCA5MDA0MDc2ZTQuLjA1OGU1M2NmMSAxMDA2NDQKICAJZG8geyBcCiAg CQlpZiAoKHIgPSBrZXhfYXNzZW1ibGVfbmFtZXMoJm9wdGlvbnMtPndoYXQsIFwKIGRpZmYgLS1n aXQgYS9zYW5kYm94LXNlY2NvbXAtZmlsdGVyLmMgYi9zYW5kYm94LXNlY2NvbXAtZmlsdGVyLmMK LWluZGV4IGUyMTA0OGYzYS4uMjVjOWRmNDJhIDEwMDY0NAoraW5kZXggYjY1NDEzYzk1Li4xN2Ux Y2VhNzIgMTAwNjQ0CiAtLS0gYS9zYW5kYm94LXNlY2NvbXAtZmlsdGVyLmMKICsrKyBiL3NhbmRi b3gtc2VjY29tcC1maWx0ZXIuYwogQEAgLTI1OCw2ICsyNTgsOSBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IHNvY2tfZmlsdGVyIHByZWF1dGhfaW5zbnNbXSA9IHsKQEAgLTM5Myw3ICszOTMsNyBAQCBp bmRleCBlMjEwNDhmM2EuLjI1YzlkZjQyYSAxMDA2NDQKICAJU0NfREVOWShfX05SX29wZW5hdCwg RUFDQ0VTKSwKICAjZW5kaWYKIGRpZmYgLS1naXQgYS9zZXJ2Y29uZi5jIGIvc2VydmNvbmYuYwot aW5kZXggODA0NTc1NmZiLi42YzFiYTc3ZjYgMTAwNjQ0CitpbmRleCA4YzFlOWMyNTMuLmJlZTc1 ZDQ4NiAxMDA2NDQKIC0tLSBhL3NlcnZjb25mLmMKICsrKyBiL3NlcnZjb25mLmMKIEBAIC0zOCw3 ICszOCwxNSBAQApAQCAtNDEyLDcgKzQxMiw3IEBAIGluZGV4IDgwNDU3NTZmYi4uNmMxYmE3N2Y2 IDEwMDY0NAogIAogICNpbmNsdWRlICJ4bWFsbG9jLmgiCiAgI2luY2x1ZGUgInNzaC5oIgotQEAg LTI0MiwxMSArMjUwLDE2IEBAIGFzc2VtYmxlX2FsZ29yaXRobXMoU2VydmVyT3B0aW9ucyAqbykK K0BAIC0yMTMsMTEgKzIyMSwxNiBAQCBhc3NlbWJsZV9hbGdvcml0aG1zKFNlcnZlck9wdGlvbnMg Km8pCiAgCWFsbF9rZXkgPSBzc2hrZXlfYWxnX2xpc3QoMCwgMCwgMSwgJywnKTsKICAJYWxsX3Np ZyA9IHNzaGtleV9hbGdfbGlzdCgwLCAxLCAxLCAnLCcpOwogIAkvKiByZW1vdmUgdW5zdXBwb3J0 ZWQgYWxnb3MgZnJvbSBkZWZhdWx0IGxpc3RzICovCkBAIC00ODUsNyArNDg1LDcgQEAgaW5kZXgg YTg5NGUyM2M5Li4zMjlkYzlkYTAgMTAwNjQ0CiAgCiAgdHlwZWRlZiBzdHJ1Y3QgewogZGlmZiAt LWdpdCBhL3NzaC1rZXlnZW4uYyBiL3NzaC1rZXlnZW4uYwotaW5kZXggNTg0ZDVhODk5Li4xMjQz MGU2YTQgMTAwNjQ0CitpbmRleCBhNjJlNWRjNGEuLmViODgwZGJjMCAxMDA2NDQKIC0tLSBhL3Nz aC1rZXlnZW4uYwogKysrIGIvc3NoLWtleWdlbi5jCiBAQCAtMjIsNiArMjIsNyBAQApAQCAtNTI0 LDcgKzUyNCw3IEBAIGluZGV4IDU4NGQ1YTg5OS4uMTI0MzBlNmE0IDEwMDY0NAogIAllbHNlIHsK ICAJCXN3aXRjaCAoc3Noa2V5X3R5cGVfZnJvbV9zaG9ydG5hbWUoa2V5X3R5cGVfbmFtZSkpIHsK ICAjaWZkZWYgT1BFTlNTTF9IQVNfRUNDCi1AQCAtMTA1Nyw5ICsxMDYzLDE3IEBAIGRvX2dlbl9h bGxfaG9zdGtleXMoc3RydWN0IHBhc3N3ZCAqcHcpCitAQCAtMTA2NSw5ICsxMDcxLDE3IEBAIGRv X2dlbl9hbGxfaG9zdGtleXMoc3RydWN0IHBhc3N3ZCAqcHcpCiAgCQkJZmlyc3QgPSAxOwogIAkJ CXByaW50ZigiJXM6IGdlbmVyYXRpbmcgbmV3IGhvc3Qga2V5czogIiwgX19wcm9nbmFtZSk7CiAg CQl9CkBAIC01NDMsNyArNTQzLDcgQEAgaW5kZXggNTg0ZDVhODk5Li4xMjQzMGU2YTQgMTAwNjQ0 CiAgCQlpZiAoKGZkID0gbWtzdGVtcChwcnZfdG1wKSkgPT0gLTEpIHsKICAJCQllcnJvcigiQ291 bGQgbm90IHNhdmUgeW91ciBwcml2YXRlIGtleSBpbiAlczogJXMiLAogIAkJCSAgICBwcnZfdG1w LCBzdHJlcnJvcihlcnJubykpOwotQEAgLTM3NjgsNyArMzc4Miw3IEBAIG1haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQorQEAgLTM3NzYsNyArMzc5MCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQogIAl9CiAgCiAgCWlmIChrZXlfdHlwZV9uYW1lID09IE5VTEwpCkBAIC01NTMsNyAr NTUzLDcgQEAgaW5kZXggNTg0ZDVhODk5Li4xMjQzMGU2YTQgMTAwNjQ0CiAgCXR5cGUgPSBzc2hr ZXlfdHlwZV9mcm9tX3Nob3J0bmFtZShrZXlfdHlwZV9uYW1lKTsKICAJdHlwZV9iaXRzX3ZhbGlk KHR5cGUsIGtleV90eXBlX25hbWUsICZiaXRzKTsKIGRpZmYgLS1naXQgYS9zc2gta2V5c2Nhbi5j IGIvc3NoLWtleXNjYW4uYwotaW5kZXggYmIzZWU0NjJkLi4zY2VhMWRhYWMgMTAwNjQ0CitpbmRl eCBjNDU1ZWY1MzIuLjFmMTVmMzA3NyAxMDA2NDQKIC0tLSBhL3NzaC1rZXlzY2FuLmMKICsrKyBi L3NzaC1rZXlzY2FuLmMKIEBAIC0yMSw2ICsyMSw3IEBACkBAIC01NjQsNyArNTY0LDcgQEAgaW5k ZXggYmIzZWU0NjJkLi4zY2VhMWRhYWMgMTAwNjQ0CiAgCiAgI2luY2x1ZGUgPGVycm5vLmg+CiAg I2luY2x1ZGUgPGxpbWl0cy5oPgotQEAgLTIzNCw2ICsyMzUsMTQgQEAga2V5Z3JhYl9zc2gyKGNv biAqYykKK0BAIC0yMzUsNiArMjM2LDE0IEBAIGtleWdyYWJfc3NoMihjb24gKmMpCiAgCWNoYXIg Km15cHJvcG9zYWxbUFJPUE9TQUxfTUFYXSA9IHsgS0VYX0NMSUVOVCB9OwogIAlpbnQgcjsKICAK QEAgLTYwOSw3ICs2MDksNyBAQCBpbmRleCBjY2FkYjE0Y2EuLjVhZjM5YmIzOSAxMDA2NDQKICAJ CWdvdG8gb3V0OwogIAl9CiBkaWZmIC0tZ2l0IGEvc3NoLmMgYi9zc2guYwotaW5kZXggYmMzYmU4 ZjhlLi5lN2JkYmEzMjcgMTAwNjQ0CitpbmRleCAwN2JiMWUzOGYuLjRkZWU3ODQ5ZiAxMDA2NDQK IC0tLSBhL3NzaC5jCiArKysgYi9zc2guYwogQEAgLTcxLDYgKzcxLDcgQEAKQEAgLTYyMCw3ICs2 MjAsNyBAQCBpbmRleCBiYzNiZThmOGUuLmU3YmRiYTMyNyAxMDA2NDQKICAjaW5jbHVkZSAib3Bl bmJzZC1jb21wYXQvb3BlbnNzbC1jb21wYXQuaCIKICAKICAjaW5jbHVkZSAieG1hbGxvYy5oIgot QEAgLTE2MzEsNiArMTYzMiwxMCBAQCBtYWluKGludCBhYywgY2hhciAqKmF2KQorQEAgLTE2MTMs NiArMTYxNCwxMCBAQCBtYWluKGludCBhYywgY2hhciAqKmF2KQogIAkJZXhpdCgwKTsKICAJfQog IApAQCAtNjMyLDcgKzYzMiw3IEBAIGluZGV4IGJjM2JlOGY4ZS4uZTdiZGJhMzI3IDEwMDY0NAog IAlpZiAob3B0aW9ucy5za19wcm92aWRlciAhPSBOVUxMICYmICpvcHRpb25zLnNrX3Byb3ZpZGVy ID09ICckJyAmJgogIAkgICAgc3RybGVuKG9wdGlvbnMuc2tfcHJvdmlkZXIpID4gMSkgewogZGlm ZiAtLWdpdCBhL3NzaGNvbm5lY3QyLmMgYi9zc2hjb25uZWN0Mi5jCi1pbmRleCAzMWJiYzBlZDgu LjJkZGQ4OWQ1YyAxMDA2NDQKK2luZGV4IGUxZDQzODhhZC4uY2E5ZGMwZThhIDEwMDY0NAogLS0t IGEvc3NoY29ubmVjdDIuYwogKysrIGIvc3NoY29ubmVjdDIuYwogQEAgLTQ1LDYgKzQ1LDEwIEBA CkBAIC02NDYsNyArNjQ2LDcgQEAgaW5kZXggMzFiYmMwZWQ4Li4yZGRkODlkNWMgMTAwNjQ0CiAg I2luY2x1ZGUgInhtYWxsb2MuaCIKICAjaW5jbHVkZSAic3NoLmgiCiAgI2luY2x1ZGUgInNzaDIu aCIKLUBAIC0yNjMsNiArMjY3LDkgQEAgc3NoX2tleDIoc3RydWN0IHNzaCAqc3NoLCBjaGFyICpo b3N0LCBzdHJ1Y3Qgc29ja2FkZHIgKmhvc3RhZGRyLCB1X3Nob3J0IHBvcnQsCitAQCAtMjY1LDYg KzI2OSw5IEBAIHNzaF9rZXgyKHN0cnVjdCBzc2ggKnNzaCwgY2hhciAqaG9zdCwgc3RydWN0IHNv Y2thZGRyX3N0b3JhZ2UgKmhvc3RhZGRyLAogIAogICNpZiBkZWZpbmVkKEdTU0FQSSkgJiYgZGVm aW5lZChXSVRIX09QRU5TU0wpCiAgCWlmIChvcHRpb25zLmdzc19rZXlleCkgewpAQCAtNjU2LDcg KzY1Niw3IEBAIGluZGV4IDMxYmJjMGVkOC4uMmRkZDg5ZDVjIDEwMDY0NAogIAkJLyogQWRkIHRo ZSBHU1NBUEkgbWVjaGFuaXNtcyBjdXJyZW50bHkgc3VwcG9ydGVkIG9uIHRoaXMKICAJCSAqIGNs aWVudCB0byB0aGUga2V5IGV4Y2hhbmdlIGFsZ29yaXRobSBwcm9wb3NhbCAqLwogIAkJb3JpZyA9 IG15cHJvcG9zYWxbUFJPUE9TQUxfS0VYX0FMR1NdOwotQEAgLTI4Miw3ICsyODksOSBAQCBzc2hf a2V4MihzdHJ1Y3Qgc3NoICpzc2gsIGNoYXIgKmhvc3QsIHN0cnVjdCBzb2NrYWRkciAqaG9zdGFk ZHIsIHVfc2hvcnQgcG9ydCwKK0BAIC0yODQsNyArMjkxLDkgQEAgc3NoX2tleDIoc3RydWN0IHNz aCAqc3NoLCBjaGFyICpob3N0LCBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqaG9zdGFkZHIsCiAg CQl9CiAgCiAgCQlnc3MgPSBzc2hfZ3NzYXBpX2NsaWVudF9tZWNoYW5pc21zKGdzc19ob3N0LApA QCAtNjY4LDcgKzY2OCw3IEBAIGluZGV4IDMxYmJjMGVkOC4uMmRkZDg5ZDVjIDEwMDY0NAogIAkJ CWRlYnVnKCJPZmZlcmluZyBHU1NBUEkgcHJvcG9zYWw6ICVzIiwgZ3NzKTsKICAJCQl4YXNwcmlu dGYoJm15cHJvcG9zYWxbUFJPUE9TQUxfS0VYX0FMR1NdLAogZGlmZiAtLWdpdCBhL3NzaGQuYyBi L3NzaGQuYwotaW5kZXggMjJhZDRkZmYwLi4yODY1NjE5YzcgMTAwNjQ0CitpbmRleCA2Yjk4NDdm NjcuLmFlMjZiMTBiMyAxMDA2NDQKIC0tLSBhL3NzaGQuYwogKysrIGIvc3NoZC5jCiBAQCAtNDMs NiArNDMsNyBAQApAQCAtNjkzLDggKzY5Myw4IEBAIGluZGV4IDIyYWQ0ZGZmMC4uMjg2NTYxOWM3 IDEwMDY0NAogICNpZmRlZiBIQVZFX1NFQ1VSRVdBUkUKICAjaW5jbHVkZSA8c3lzL3NlY3VyaXR5 Lmg+CiAgI2luY2x1ZGUgPHByb3QuaD4KLUBAIC0xNjA0LDYgKzE2MTIsMTMgQEAgbWFpbihpbnQg YWMsIGNoYXIgKiphdikKLSAJCSAgICAma2V5LCBOVUxMKSkgIT0gMCAmJiByICE9IFNTSF9FUlJf U1lTVEVNX0VSUk9SKQorQEAgLTE2MDUsNiArMTYxMywxMyBAQCBtYWluKGludCBhYywgY2hhciAq KmF2KQorIAkJICAgIHIgIT0gU1NIX0VSUl9TWVNURU1fRVJST1IgJiYgIWhhdmVfYWdlbnQpCiAg CQkJZG9fbG9nMl9yKHIsIGxsLCAiVW5hYmxlIHRvIGxvYWQgaG9zdCBrZXkgXCIlc1wiIiwKICAJ CQkgICAgb3B0aW9ucy5ob3N0X2tleV9maWxlc1tpXSk7CiArCQlpZiAoRklQU19tb2RlKCkgJiYg a2V5ICE9IE5VTEwgJiYgKHNzaGtleV90eXBlX3BsYWluKGtleS0+dHlwZSkgPT0gS0VZX0VEMjU1 MTlfU0sKQEAgLTcwNyw3ICs3MDcsNyBAQCBpbmRleCAyMmFkNGRmZjAuLjI4NjU2MTljNyAxMDA2 NDQKICAJCWlmIChzc2hrZXlfaXNfc2soa2V5KSAmJgogIAkJICAgIGtleS0+c2tfZmxhZ3MgJiBT U0hfU0tfVVNFUl9QUkVTRU5DRV9SRVFEKSB7CiAgCQkJZGVidWcoImhvc3Qga2V5ICVzIHJlcXVp cmVzIHVzZXIgcHJlc2VuY2UsIGlnbm9yaW5nIiwKLUBAIC0xODI3LDYgKzE4NDIsMTAgQEAgbWFp bihpbnQgYWMsIGNoYXIgKiphdikKK0BAIC0xODI5LDYgKzE4NDQsMTAgQEAgbWFpbihpbnQgYWMs IGNoYXIgKiphdikKICAJLyogUmVpbml0aWFsaXplIHRoZSBsb2cgKGJlY2F1c2Ugb2YgdGhlIGZv cmsgYWJvdmUpLiAqLwogIAlsb2dfaW5pdChfX3Byb2duYW1lLCBvcHRpb25zLmxvZ19sZXZlbCwg b3B0aW9ucy5sb2dfZmFjaWxpdHksIGxvZ19zdGRlcnIpOwogIApAQCAtNzE5LDcgKzcxOSw3IEBA IGluZGV4IDIyYWQ0ZGZmMC4uMjg2NTYxOWM3IDEwMDY0NAogIAkgKiBDaGRpciB0byB0aGUgcm9v dCBkaXJlY3Rvcnkgc28gdGhhdCB0aGUgY3VycmVudCBkaXNrIGNhbiBiZQogIAkgKiB1bm1vdW50 ZWQgaWYgZGVzaXJlZC4KIGRpZmYgLS1naXQgYS9zc2hrZXkuYyBiL3NzaGtleS5jCi1pbmRleCBj Y2MzNWRiZjUuLjgyZTU1NTA5ZCAxMDA2NDQKK2luZGV4IDZiYjhmZWFhOS4uZTNmYjI5ZTcwIDEw MDY0NAogLS0tIGEvc3Noa2V5LmMKICsrKyBiL3NzaGtleS5jCiBAQCAtMzYsNiArMzYsNyBAQApA QCAtNzM4LDcgKzczOCw3IEBAIGluZGV4IGNjYzM1ZGJmNS4uODJlNTU1MDlkIDEwMDY0NAogICNp bmNsdWRlICJzc2gtc2suaCIKICAjaW5jbHVkZSAic3NoLXBrY3MxMS5oIgogIAotQEAgLTM5OSw2 ICs0MDEsMTggQEAgc3Noa2V5X2FsZ19saXN0KGludCBjZXJ0c19vbmx5LCBpbnQgcGxhaW5fb25s eSwgaW50IGluY2x1ZGVfc2lnb25seSwgY2hhciBzZXApCitAQCAtNDA3LDYgKzQwOSwxOCBAQCBz c2hrZXlfYWxnX2xpc3QoaW50IGNlcnRzX29ubHksIGludCBwbGFpbl9vbmx5LCBpbnQgaW5jbHVk ZV9zaWdvbmx5LCBjaGFyIHNlcCkKICAJCWltcGwgPSBrZXlpbXBsc1tpXTsKICAJCWlmIChpbXBs LT5uYW1lID09IE5VTEwgfHwgaW1wbC0+dHlwZSA9PSBLRVlfTlVMTCkKICAJCQljb250aW51ZTsK QEAgLTc1Nyw3ICs3NTcsNyBAQCBpbmRleCBjY2MzNWRiZjUuLjgyZTU1NTA5ZCAxMDA2NDQKICAJ CWlmICghaW5jbHVkZV9zaWdvbmx5ICYmIGltcGwtPnNpZ29ubHkpCiAgCQkJY29udGludWU7CiAg CQlpZiAoKGNlcnRzX29ubHkgJiYgIWltcGwtPmNlcnQpIHx8IChwbGFpbl9vbmx5ICYmIGltcGwt PmNlcnQpKQotQEAgLTE0MzEsNiArMTQ0NSwyMCBAQCBzc2hrZXlfcmVhZChzdHJ1Y3Qgc3Noa2V5 ICpyZXQsIGNoYXIgKipjcHApCitAQCAtMTQ0Myw2ICsxNDU3LDIwIEBAIHNzaGtleV9yZWFkKHN0 cnVjdCBzc2hrZXkgKnJldCwgY2hhciAqKmNwcCkKICAJCXJldHVybiBTU0hfRVJSX0VDX0NVUlZF X01JU01BVENIOwogIAl9CiAgCkBAIC03NzgsNyArNzc4LDcgQEAgaW5kZXggY2NjMzVkYmY1Li44 MmU1NTUwOWQgMTAwNjQ0CiAgCS8qIEZpbGwgaW4gcmV0IGZyb20gcGFyc2VkIGtleSAqLwogIAlz c2hrZXlfZnJlZV9jb250ZW50cyhyZXQpOwogIAkqcmV0ID0gKms7Ci1AQCAtMjI2NCw2ICsyMjky LDExIEBAIHNzaGtleV9zaWduKHN0cnVjdCBzc2hrZXkgKmtleSwKK0BAIC0yMjc2LDYgKzIzMDQs MTEgQEAgc3Noa2V5X3NpZ24oc3RydWN0IHNzaGtleSAqa2V5LAogIAkJKmxlbnAgPSAwOwogIAlp ZiAoZGF0YWxlbiA+IFNTSF9LRVlfTUFYX1NJR05fREFUQV9TSVpFKQogIAkJcmV0dXJuIFNTSF9F UlJfSU5WQUxJRF9BUkdVTUVOVDsKQEAgLTc5MCw3ICs3OTAsNyBAQCBpbmRleCBjY2MzNWRiZjUu LjgyZTU1NTA5ZCAxMDA2NDQKICAJaWYgKChpbXBsID0gc3Noa2V5X2ltcGxfZnJvbV9rZXkoa2V5 KSkgPT0gTlVMTCkKICAJCXJldHVybiBTU0hfRVJSX0tFWV9UWVBFX1VOS05PV047CiAgCWlmICgo ciA9IHNzaGtleV91bnNoaWVsZF9wcml2YXRlKGtleSkpICE9IDApCi1AQCAtMjMwMyw2ICsyMzM2 LDEwIEBAIHNzaGtleV92ZXJpZnkoY29uc3Qgc3RydWN0IHNzaGtleSAqa2V5LAorQEAgLTIzMTUs NiArMjM0OCwxMCBAQCBzc2hrZXlfdmVyaWZ5KGNvbnN0IHN0cnVjdCBzc2hrZXkgKmtleSwKICAJ CSpkZXRhaWxzcCA9IE5VTEw7CiAgCWlmIChzaWdsZW4gPT0gMCB8fCBkbGVuID4gU1NIX0tFWV9N QVhfU0lHTl9EQVRBX1NJWkUpCiAgCQlyZXR1cm4gU1NIX0VSUl9JTlZBTElEX0FSR1VNRU5UOwpA QCAtODAyLDUgKzgwMiw1IEBAIGluZGV4IGNjYzM1ZGJmNS4uODJlNTU1MDlkIDEwMDY0NAogIAkJ cmV0dXJuIFNTSF9FUlJfS0VZX1RZUEVfVU5LTk9XTjsKICAJcmV0dXJuIGltcGwtPmZ1bmNzLT52 ZXJpZnkoa2V5LCBzaWcsIHNpZ2xlbiwgZGF0YSwgZGxlbiwKIC0tIAotMi41My4wCisyLjU1LjAK IAoKZGlmZiAtLWdpdCBhLzAwMzktb3BlbnNzaC04LjdwMS1uZWdvdGlhdGUtc3VwcG9ydGVkLWFs Z3MucGF0Y2ggYi8wMDM5LW9wZW5zc2gtOC43cDEtbmVnb3RpYXRlLXN1cHBvcnRlZC1hbGdzLnBh dGNoCmluZGV4IGQwMGJlZDQuLjNiNjVjMjUgMTAwNjQ0Ci0tLSBhLzAwMzktb3BlbnNzaC04Ljdw MS1uZWdvdGlhdGUtc3VwcG9ydGVkLWFsZ3MucGF0Y2gKKysrIGIvMDAzOS1vcGVuc3NoLTguN3Ax LW5lZ290aWF0ZS1zdXBwb3J0ZWQtYWxncy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gYmZi ZGFmMGIxMzU1ZTA2YmU1YzQwZGFlMzk4NmQ0ZGRkZTUwYWMwOCBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKK0Zyb20gY2FhYjExZTc4NDBjZTIyYjIxZTg4ZmRkNmZhYzY5M2NiODk3YzBhOCBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IERtaXRyeSBCZWx5YXZza2l5IDxiZWxkbWl0QGdt YWlsLmNvbT4KIERhdGU6IFRodSwgMTUgTWF5IDIwMjUgMTM6NDM6MjkgKzAyMDAKIFN1YmplY3Q6 IFtQQVRDSCAzOS81NF0gb3BlbnNzaC04LjdwMS1uZWdvdGlhdGUtc3VwcG9ydGVkLWFsZ3MKQEAg LTcsMTIgKzcsMTMgQEAgU3ViamVjdDogW1BBVENIIDM5LzU0XSBvcGVuc3NoLTguN3AxLW5lZ290 aWF0ZS1zdXBwb3J0ZWQtYWxncwogIyB1cHN0cmVhbSBNUjoKICMgaHR0cHM6Ly9naXRodWIuY29t L29wZW5zc2gvb3BlbnNzaC1wb3J0YWJsZS9wdWxsLzMyMwogLS0tCi0gcmVncmVzcy9ob3N0a2V5 LWFnZW50LnNoIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KLSBzc2hjb25u ZWN0Mi5jICAgICAgICAgICAgfCAxNyArKysrKysrKysrKysrKystLQotIDIgZmlsZXMgY2hhbmdl ZCwgNDAgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKKyByZWdyZXNzL2hvc3RrZXktYWdl bnQuc2ggICAgICB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tCisgcmVncmVz cy9rbm93bmhvc3RzLWNvbW1hbmQuc2ggfCAgOCArKysrKystLQorIHNzaGNvbm5lY3QyLmMgICAg ICAgICAgICAgICAgIHwgMTcgKysrKysrKysrKysrKysrLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDQ2 IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvcmVncmVzcy9o b3N0a2V5LWFnZW50LnNoIGIvcmVncmVzcy9ob3N0a2V5LWFnZW50LnNoCi1pbmRleCAyOGRjZmUx NzAuLmI5ZTcxNmRjZCAxMDA2NDQKK2luZGV4IDBlNzk2MmUzYy4uMjUxZDUyNThlIDEwMDY0NAog LS0tIGEvcmVncmVzcy9ob3N0a2V5LWFnZW50LnNoCiArKysgYi9yZWdyZXNzL2hvc3RrZXktYWdl bnQuc2gKIEBAIC0xNyw4ICsxNywyMSBAQCB0cmFjZSAibWFrZSBDQSBrZXkiCkBAIC04NiwxMiAr ODcsMzcgQEAgaW5kZXggMjhkY2ZlMTcwLi5iOWU3MTZkY2QgMTAwNjQ0CiAgCXZlcmJvc2UgImNl cnQgdHlwZSAkayIKICAJb3B0cz0iLW9Ib3N0S2V5QWxnb3JpdGhtcz0kayAtRiAkT0JKL3NzaF9w cm94eSIKICAJU1NIX0NPTk5FQ1RJT049YCR7U1NIfSAkb3B0cyBob3N0ICdlY2hvICRTU0hfQ09O TkVDVElPTidgCitkaWZmIC0tZ2l0IGEvcmVncmVzcy9rbm93bmhvc3RzLWNvbW1hbmQuc2ggYi9y ZWdyZXNzL2tub3duaG9zdHMtY29tbWFuZC5zaAoraW5kZXggNTgwMDRiODBlLi4wMzZhN2MyYjkg MTAwNjQ0CistLS0gYS9yZWdyZXNzL2tub3duaG9zdHMtY29tbWFuZC5zaAorKysrIGIvcmVncmVz cy9rbm93bmhvc3RzLWNvbW1hbmQuc2gKK0BAIC0zOCw4ICszOCwxMiBAQCBfRU9GCisgY2htb2Qg YSt4ICRPQkova25vd25ob3N0c19jb21tYW5kCisgJHtTU0h9IC1GICRPQkovc3NoX3Byb3h5IHgg dHJ1ZSAmJiBmYWlsICJzc2ggY29ubmVjdCBzdWNjZWVkZWQgd2l0aCBiYWQgZXhpdCIKKyAKKytQ VUJLRVlfQUNDRVBURURfQUxHT1M9YCRTU0ggLUcgImV4YW1wbGUuY29tIiB8IFwKKysgICAgZ3Jl cCAtaSAiUHVia2V5QWNjZXB0ZWRBbGdvcml0aG1zIiB8IGN1dCAtZCAnICcgLWYyLSB8IHRyICIs IiAifCJgCisrU1NIX0FDQ0VQVEVEX0hPU1RLRVlfVFlQRVM9YGVjaG8gIiRTU0hfSE9TVEtFWV9U WVBFUyIgfCB0ciAnICcgJ1xuJyB8IGVncmVwICIkUFVCS0VZX0FDQ0VQVEVEX0FMR09TImAKKysK KyBjcCAkT0JKL3NzaGRfcHJveHkgJE9CSi9zc2hkX3Byb3h5LmJhaworLWZvciBrZXl0eXBlIGlu ICR7U1NIX0hPU1RLRVlfVFlQRVN9IDsgZG8KKytmb3Iga2V5dHlwZSBpbiAke1NTSF9BQ0NFUFRF RF9IT1NUS0VZX1RZUEVTfSA7IGRvCisgCWdyZXAgLXZpIEhvc3RLZXlBbGdvcml0aG1zICRPQkov c3NoZF9wcm94eS5iYWsgPiAkT0JKL3NzaGRfcHJveHkKKyAJZWNobyAiSG9zdEtleUFsZ29yaXRo bXM9KyRrZXl0eXBlIiA+PiAkT0JKL3NzaGRfcHJveHkKKyAJYWxncz0ka2V5dHlwZQorQEAgLTUz LDUgKzU3LDUgQEAgdGVzdCAieFwkMyIgPSAieCRMT0dOQU1FIiB8fCBkaWUgIndyb25nIHVzZXJu YW1lIFwkMyAoZXhwZWN0ZWQgJExPR05BTUUpIgorIGdyZXAgLS0gIlwkMS4qXCQyIiAkT0JKL2tu b3duX2hvc3RzCisgX0VPRgorIAkke1NTSH0gLUYgJE9CSi9zc2hfcHJveHkgLW9Ib3N0S2V5QWxn b3JpdGhtcz0kYWxncyB4IHRydWUgfHwKKy0JICAgIGZhaWwgInNzaCBjb25uZWN0IGZhaWxlZCBm b3Iga2V5dHlwZSAkeCIKKysJICAgIGZhaWwgInNzaCBjb25uZWN0IGZhaWxlZCBmb3Iga2V5dHlw ZSAka2V5dHlwZSIKKyBkb25lCiBkaWZmIC0tZ2l0IGEvc3NoY29ubmVjdDIuYyBiL3NzaGNvbm5l Y3QyLmMKLWluZGV4IDJkZGQ4OWQ1Yy4uMzFmNTFiZTYyIDEwMDY0NAoraW5kZXggY2E5ZGMwZThh Li4yZGMwOGI4YTEgMTAwNjQ0CiAtLS0gYS9zc2hjb25uZWN0Mi5jCiArKysgYi9zc2hjb25uZWN0 Mi5jCi1AQCAtMjI0LDcgKzIyNCw3IEBAIHNzaF9rZXgyKHN0cnVjdCBzc2ggKnNzaCwgY2hhciAq aG9zdCwgc3RydWN0IHNvY2thZGRyICpob3N0YWRkciwgdV9zaG9ydCBwb3J0LAotICAgICBjb25z dCBzdHJ1Y3Qgc3NoX2Nvbm5faW5mbyAqY2luZm8pCitAQCAtMjI0LDcgKzIyNCw3IEBAIHNzaF9r ZXgyKHN0cnVjdCBzc2ggKnNzaCwgY2hhciAqaG9zdCwgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2Ug Kmhvc3RhZGRyLAorICAgICB1X3Nob3J0IHBvcnQsIGNvbnN0IHN0cnVjdCBzc2hfY29ubl9pbmZv ICpjaW5mbykKICB7CiAgCWNoYXIgKm15cHJvcG9zYWxbUFJPUE9TQUxfTUFYXTsKIC0JY2hhciAq YWxsX2tleSwgKmhrYWxncyA9IE5VTEw7CkBAIC05OSw5ICsxMjUsOSBAQCBpbmRleCAyZGRkODlk NWMuLjMxZjUxYmU2MiAxMDA2NDQKICAJaW50IHIsIHVzZV9rbm93bl9ob3N0c19vcmRlciA9IDA7 CiAgCiAgI2lmIGRlZmluZWQoR1NTQVBJKSAmJiBkZWZpbmVkKFdJVEhfT1BFTlNTTCkKLUBAIC0y NjAsMTAgKzI2MCwyMiBAQCBzc2hfa2V4MihzdHJ1Y3Qgc3NoICpzc2gsIGNoYXIgKmhvc3QsIHN0 cnVjdCBzb2NrYWRkciAqaG9zdGFkZHIsIHVfc2hvcnQgcG9ydCwKLSAJaWYgKHVzZV9rbm93bl9o b3N0c19vcmRlcikKLSAJCWhrYWxncyA9IG9yZGVyX2hvc3RrZXlhbGdzKGhvc3QsIGhvc3RhZGRy LCBwb3J0LCBjaW5mbyk7CitAQCAtMjYyLDEwICsyNjIsMjIgQEAgc3NoX2tleDIoc3RydWN0IHNz aCAqc3NoLCBjaGFyICpob3N0LCBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqaG9zdGFkZHIsCisg CQkgICAgcG9ydCwgY2luZm8pOworIAl9CiAgCiArCWZpbHRlcmVkX2FsZ3MgPSBoa2FsZ3MgPyBt YXRjaF9maWx0ZXJfYWxsb3dsaXN0KGhrYWxncywgb3B0aW9ucy5wdWJrZXlfYWNjZXB0ZWRfYWxn b3MpCiArCQkgICAgICAgICAgICAgICA6IG1hdGNoX2ZpbHRlcl9hbGxvd2xpc3Qob3B0aW9ucy5o b3N0a2V5YWxnb3JpdGhtcywKQEAgLTEyMyw3ICsxNDksNyBAQCBpbmRleCAyZGRkODlkNWMuLjMx ZjUxYmU2MiAxMDA2NDQKICAKICAjaWYgZGVmaW5lZChHU1NBUEkpICYmIGRlZmluZWQoV0lUSF9P UEVOU1NMKQogIAlpZiAob3B0aW9ucy5nc3Nfa2V5ZXgpIHsKLUBAIC0zMDcsNiArMzE5LDcgQEAg c3NoX2tleDIoc3RydWN0IHNzaCAqc3NoLCBjaGFyICpob3N0LCBzdHJ1Y3Qgc29ja2FkZHIgKmhv c3RhZGRyLCB1X3Nob3J0IHBvcnQsCitAQCAtMzA5LDYgKzMyMSw3IEBAIHNzaF9rZXgyKHN0cnVj dCBzc2ggKnNzaCwgY2hhciAqaG9zdCwgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKmhvc3RhZGRy LAogICNlbmRpZgogIAogIAlmcmVlKGhrYWxncyk7CkBAIC0xMzIsNSArMTU4LDUgQEAgaW5kZXgg MmRkZDg5ZDVjLi4zMWY1MWJlNjIgMTAwNjQ0CiAgCS8qIHN0YXJ0IGtleSBleGNoYW5nZSAqLwog IAlpZiAoKHIgPSBrZXhfc2V0dXAoc3NoLCBteXByb3Bvc2FsKSkgIT0gMCkKIC0tIAotMi41My4w CisyLjU1LjAKIAoKZGlmZiAtLWdpdCBhLzAwNDAtb3BlbnNzaC05LjBwMS1ldnAtZmlwcy1rZXgu cGF0Y2ggYi8wMDQwLW9wZW5zc2gtOS4wcDEtZXZwLWZpcHMta2V4LnBhdGNoCmluZGV4IDY2ZmQ0 ZTYuLmU1YWUxNmQgMTAwNjQ0Ci0tLSBhLzAwNDAtb3BlbnNzaC05LjBwMS1ldnAtZmlwcy1rZXgu cGF0Y2gKKysrIGIvMDA0MC1vcGVuc3NoLTkuMHAxLWV2cC1maXBzLWtleC5wYXRjaApAQCAtMSw0 ICsxLDQgQEAKLUZyb20gZmMxNjY2MDQ3OTA0MDllZWZkNWY1NTBjNzFjMjMyYmUzYzE4ZDk0ZCBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMTY4Nzg3ODMxMTNmN2M0OWVhZWMxZGI2MGQy NjY3ZjJjZDM2MjIzZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IERtaXRyeSBCZWx5 YXZza2l5IDxiZWxkbWl0QGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMTUgTWF5IDIwMjUgMTM6NDM6 MjkgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSCA0MC81NF0gb3BlbnNzaC05LjBwMS1ldnAtZmlwcy1r ZXgKQEAgLTE0MCwxMCArMTQwLDEwIEBAIGluZGV4IDNlZmUwYTY5Zi4uYmYzMjQzMDljIDEwMDY0 NAogIAogIERIICoKIGRpZmYgLS1naXQgYS9rZXguYyBiL2tleC5jCi1pbmRleCBlMTA1OWRlYzQu LjFlYjNjYTlkMyAxMDA2NDQKK2luZGV4IGFiZDEzYTBlMi4uYTUxZTI2Mzk4IDEwMDY0NAogLS0t IGEva2V4LmMKICsrKyBiL2tleC5jCi1AQCAtMTYxOSwzICsxNjE5LDE0MiBAQCBrZXhfZXhjaGFu Z2VfaWRlbnRpZmljYXRpb24oc3RydWN0IHNzaCAqc3NoLCBpbnQgdGltZW91dF9tcywKK0BAIC0x NjI0LDMgKzE2MjQsMTQyIEBAIGtleF9leGNoYW5nZV9pZGVudGlmaWNhdGlvbihzdHJ1Y3Qgc3No ICpzc2gsIGludCB0aW1lb3V0X21zLAogIAlyZXR1cm4gcjsKICB9CiAgCkBAIC0yODcsNyArMjg3 LDcgQEAgaW5kZXggZTEwNTlkZWM0Li4xZWIzY2E5ZDMgMTAwNjQ0CiArfQogKyNlbmRpZiAvKiBX SVRIX09QRU5TU0wgKi8KIGRpZmYgLS1naXQgYS9rZXguaCBiL2tleC5oCi1pbmRleCAwYTBjYjE1 NjIuLmZmNDEzMjRlOSAxMDA2NDQKK2luZGV4IDY5MmUyODM2My4uZDIyZjZkZWIzIDEwMDY0NAog LS0tIGEva2V4LmgKICsrKyBiL2tleC5oCiBAQCAtMzcsNiArMzcsOSBAQApAQCAtMzAwLDcgKzMw MCw3IEBAIGluZGV4IDBhMGNiMTU2Mi4uZmY0MTMyNGU5IDEwMDY0NAogICMgaWZkZWYgT1BFTlNT TF9IQVNfRUNDCiAgIyAgaW5jbHVkZSA8b3BlbnNzbC9lYy5oPgogICMgZWxzZSAvKiBPUEVOU1NM X0hBU19FQ0MgKi8KLUBAIC0zMTcsNiArMzIwLDkgQEAgaW50CWtleGMyNTUxOV9zaGFyZWRfa2V5 X2V4dChjb25zdCB1X2NoYXIga2V5W0NVUlZFMjU1MTlfU0laRV0sCitAQCAtMzE4LDYgKzMyMSw5 IEBAIGludAlrZXhjMjU1MTlfc2hhcmVkX2tleV9leHQoY29uc3QgdV9jaGFyIGtleVtDVVJWRTI1 NTE5X1NJWkVdLAogICAgICBjb25zdCB1X2NoYXIgcHViW0NVUlZFMjU1MTlfU0laRV0sIHN0cnVj dCBzc2hidWYgKm91dCwgaW50KQogIAlfX2F0dHJpYnV0ZV9fKChfX2JvdW5kZWRfXyhfX21pbmJ5 dGVzX18sIDEsIENVUlZFMjU1MTlfU0laRSkpKQogIAlfX2F0dHJpYnV0ZV9fKChfX2JvdW5kZWRf XyhfX21pbmJ5dGVzX18sIDIsIENVUlZFMjU1MTlfU0laRSkpKTsKQEAgLTYxMSw1ICs2MTEsNSBA QCBpbmRleCA2YTkwNThjZGMuLmI2NjFlMDcwNSAxMDA2NDQKICAJcmV0dXJuIHI7CiAgfQogLS0g Ci0yLjUzLjAKKzIuNTUuMAogCgpkaWZmIC0tZ2l0IGEvMDA0MS1vcGVuc3NoLTguN3AxLW5vaG9z dHNoYTFwcm9vZi5wYXRjaCBiLzAwNDEtb3BlbnNzaC04LjdwMS1ub2hvc3RzaGExcHJvb2YucGF0 Y2gKaW5kZXggMGI2MmNjNC4uYTVhNmI0ZCAxMDA2NDQKLS0tIGEvMDA0MS1vcGVuc3NoLTguN3Ax LW5vaG9zdHNoYTFwcm9vZi5wYXRjaAorKysgYi8wMDQxLW9wZW5zc2gtOC43cDEtbm9ob3N0c2hh MXByb29mLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA4MTZkOTMxMzU2YjNiNzJmNjE5Mjlj OGQ2Njc0NmI1NWQ5Njg4MmJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1NGZhNTEy NzUzYmFjOGRiMTNlZWQyMzNmNWI0MjFlMmY3MzMyOTRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQogRnJvbTogRG1pdHJ5IEJlbHlhdnNraXkgPGJlbGRtaXRAZ21haWwuY29tPgogRGF0ZTogVGh1 LCAxNSBNYXkgMjAyNSAxMzo0MzoyOSArMDIwMAogU3ViamVjdDogW1BBVENIIDQxLzU0XSBvcGVu c3NoLTguN3AxLW5vaG9zdHNoYTFwcm9vZgpAQCAtNjUsMTAgKzY1LDEwIEBAIGluZGV4IDFhMTkw NjBmYy4uMmU2ZGI1YmY5IDEwMDY0NAogIC8qICNkZWZpbmUgdW51c2VkCQkweDAwMDAwMDIwICov CiAgI2RlZmluZSBTU0hfQlVHX0RFQlVHCQkweDAwMDAwMDQwCiBkaWZmIC0tZ2l0IGEvbW9uaXRv ci5jIGIvbW9uaXRvci5jCi1pbmRleCAzMDU4ODMyNzguLmJmNWE1MTA1YiAxMDA2NDQKK2luZGV4 IDdkZmM3OTc2Yi4uMDM5M2M3MWFhIDEwMDY0NAogLS0tIGEvbW9uaXRvci5jCiArKysgYi9tb25p dG9yLmMKLUBAIC03NTUsMTEgKzc1NSwxOCBAQCBpbnQKK0BAIC03NDEsMTEgKzc0MSwxOCBAQCBp bnQKICBtbV9hbnN3ZXJfc2V0Y29tcGF0KHN0cnVjdCBzc2ggKnNzaCwgaW50IHNvY2ssIHN0cnVj dCBzc2hidWYgKm0pCiAgewogIAlpbnQgcjsKQEAgLTg4LDcgKzg4LDcgQEAgaW5kZXggMzA1ODgz Mjc4Li5iZjVhNTEwNWIgMTAwNjQ0CiAgCWNvbXBhdF9zZXQgPSAxOwogIAogIAlyZXR1cm4gKDAp OwotQEAgLTc3MywxMCArNzgwLDEyIEBAIG1tX2Fuc3dlcl9zaWduKHN0cnVjdCBzc2ggKnNzaCwg aW50IHNvY2ssIHN0cnVjdCBzc2hidWYgKm0pCitAQCAtNzU5LDEwICs3NjYsMTIgQEAgbW1fYW5z d2VyX3NpZ24oc3RydWN0IHNzaCAqc3NoLCBpbnQgc29jaywgc3RydWN0IHNzaGJ1ZiAqbSkKICAJ c3RydWN0IHNzaGJ1ZiAqc2lnYnVmID0gTlVMTDsKICAJdV9jaGFyICpwID0gTlVMTCwgKnNpZ25h dHVyZSA9IE5VTEw7CiAgCWNoYXIgKmFsZyA9IE5VTEw7CkBAIC0xMDMsNyArMTAzLDcgQEAgaW5k ZXggMzA1ODgzMjc4Li5iZjVhNTEwNWIgMTAwNjQ0CiAgCiAgCWRlYnVnM19mKCJlbnRlcmluZyIp OwogIAotQEAgLTgzOCwxOCArODQ3LDMwIEBAIG1tX2Fuc3dlcl9zaWduKHN0cnVjdCBzc2ggKnNz aCwgaW50IHNvY2ssIHN0cnVjdCBzc2hidWYgKm0pCitAQCAtODI0LDE4ICs4MzMsMzAgQEAgbW1f YW5zd2VyX3NpZ24oc3RydWN0IHNzaCAqc3NoLCBpbnQgc29jaywgc3RydWN0IHNzaGJ1ZiAqbSkK ICAJfQogIAogIAlpZiAoKGtleSA9IGdldF9ob3N0a2V5X2J5X2luZGV4KGtleWlkKSkgIT0gTlVM TCkgewpAQCAtMTUyLDcgKzE1Miw3IEBAIGluZGV4IDE2YzJmMmRmZi4uZjQ3MDBkZWViIDEwMDY0 NAogIAlrZXhfcGFyYW1zLnByb3Bvc2FsW1BST1BPU0FMX1NFUlZFUl9IT1NUX0tFWV9BTEdTXSA9 IGtleW5hbWU7CiAgCUFTU0VSVF9JTlRfRVEoc3NoX2luaXQoJmNsaWVudCwgMCwgJmtleF9wYXJh bXMpLCAwKTsKIGRpZmYgLS1naXQgYS9yZWdyZXNzL3VuaXR0ZXN0cy9zc2hrZXkvdGVzdF9maWxl LmMgYi9yZWdyZXNzL3VuaXR0ZXN0cy9zc2hrZXkvdGVzdF9maWxlLmMKLWluZGV4IGU0MTJiNzVk OC4uNWIwNmJjOTA1IDEwMDY0NAoraW5kZXggMjk2ZTkwZTc4Li4xZDMwY2YyMmYgMTAwNjQ0CiAt LS0gYS9yZWdyZXNzL3VuaXR0ZXN0cy9zc2hrZXkvdGVzdF9maWxlLmMKICsrKyBiL3JlZ3Jlc3Mv dW5pdHRlc3RzL3NzaGtleS90ZXN0X2ZpbGUuYwogQEAgLTEwNiw2ICsxMDYsNyBAQCBzc2hrZXlf ZmlsZV90ZXN0cyh2b2lkKQpAQCAtMTczLDEwICsxNzMsMTAgQEAgaW5kZXggZTQxMmI3NWQ4Li41 YjA2YmM5MDUgMTAwNjQ0CiAgCVRFU1RfU1RBUlQoImxvYWQgUlNBIGNlcnQgd2l0aCBTSEE1MTIg c2lnbmF0dXJlIik7CiAgCUFTU0VSVF9JTlRfRVEoc3Noa2V5X2xvYWRfY2VydCh0ZXN0X2RhdGFf ZmlsZSgicnNhXzFfc2hhNTEyIiksICZrMiksIDApOwogZGlmZiAtLWdpdCBhL3JlZ3Jlc3MvdW5p dHRlc3RzL3NzaGtleS90ZXN0X2Z1enouYyBiL3JlZ3Jlc3MvdW5pdHRlc3RzL3NzaGtleS90ZXN0 X2Z1enouYwotaW5kZXggZDBmNDdkN2NmLi5iYTRkNTA2ZDUgMTAwNjQ0CitpbmRleCBmYjE3OGMx ZTQuLjZlY2I1ODcyZCAxMDA2NDQKIC0tLSBhL3JlZ3Jlc3MvdW5pdHRlc3RzL3NzaGtleS90ZXN0 X2Z1enouYwogKysrIGIvcmVncmVzcy91bml0dGVzdHMvc3Noa2V5L3Rlc3RfZnV6ei5jCi1AQCAt MjczLDEzICsyNzMsMTQgQEAgc3Noa2V5X2Z1enpfdGVzdHModm9pZCkKK0BAIC0zMTcsMTMgKzMx NywxNCBAQCBzc2hrZXlfZnV6el90ZXN0cyh2b2lkKQogIAlURVNUX0RPTkUoKTsKICAKICAjaWZk ZWYgV0lUSF9PUEVOU1NMCkBAIC0xOTMsNyArMTkzLDcgQEAgaW5kZXggZDBmNDdkN2NmLi5iYTRk NTA2ZDUgMTAwNjQ0CiAgCVRFU1RfU1RBUlQoImZ1enogUlNBIFNIQTI1NiBzaWciKTsKICAJYnVm ID0gbG9hZF9maWxlKCJyc2FfMSIpOwogZGlmZiAtLWdpdCBhL3JlZ3Jlc3MvdW5pdHRlc3RzL3Nz aGtleS90ZXN0X3NzaGtleS5jIGIvcmVncmVzcy91bml0dGVzdHMvc3Noa2V5L3Rlc3Rfc3Noa2V5 LmMKLWluZGV4IDE3MDFjODdjNS4uMzZmNmZkMzM1IDEwMDY0NAoraW5kZXggZWMwY2U0NTJjLi5k YjNlMjIyNzcgMTAwNjQ0CiAtLS0gYS9yZWdyZXNzL3VuaXR0ZXN0cy9zc2hrZXkvdGVzdF9zc2hr ZXkuYwogKysrIGIvcmVncmVzcy91bml0dGVzdHMvc3Noa2V5L3Rlc3Rfc3Noa2V5LmMKIEBAIC01 OSw2ICs1OSw5IEBAIGJ1aWxkX2NlcnQoc3RydWN0IHNzaGJ1ZiAqYiwgc3RydWN0IHNzaGtleSAq aywgY29uc3QgY2hhciAqdHlwZSwKQEAgLTI0Nyw3ICsyNDcsNyBAQCBpbmRleCAxNzAxYzg3YzUu LjM2ZjZmZDMzNSAxMDA2NDQKICAJZnJlZShzaWcpOwogIH0KICAKLUBAIC01NTIsNyArNTYwLDcg QEAgc3Noa2V5X3Rlc3RzKHZvaWQpCitAQCAtNjUwLDcgKzY1OCw3IEBAIHNzaGtleV90ZXN0cyh2 b2lkKQogIAlBU1NFUlRfSU5UX0VRKHNzaGtleV9sb2FkX3B1YmxpYyh0ZXN0X2RhdGFfZmlsZSgi cnNhXzEucHViIiksICZrMiwKICAJICAgIE5VTEwpLCAwKTsKICAJazMgPSBnZXRfcHJpdmF0ZSgi cnNhXzEiKTsKQEAgLTI1Nyw3ICsyNTcsNyBAQCBpbmRleCAxNzAxYzg3YzUuLjM2ZjZmZDMzNSAx MDA2NDQKICAJICAgIFNTSF9FUlJfS0VZX0NFUlRfSU5WQUxJRF9TSUdOX0tFWSk7CiAgCUFTU0VS VF9QVFJfRVEoazQsIE5VTEwpOwogZGlmZiAtLWdpdCBhL3NlcnZlcmxvb3AuYyBiL3NlcnZlcmxv b3AuYwotaW5kZXggOGU2MzQ4MGVjLi4xMDg3YTZjN2QgMTAwNjQ0CitpbmRleCA4YTZlM2RiODAu LmU1MDk4NWU5MCAxMDA2NDQKIC0tLSBhL3NlcnZlcmxvb3AuYwogKysrIGIvc2VydmVybG9vcC5j CiBAQCAtNzYsNiArNzYsNyBAQApAQCAtMjk1LDEwICsyOTUsMTAgQEAgaW5kZXggNWFmMzliYjM5 Li44ODIzMmM2ZWQgMTAwNjQ0CiAgCQkJZ290byBvdXQ7CiAgCQl9CiBkaWZmIC0tZ2l0IGEvc3No Y29ubmVjdDIuYyBiL3NzaGNvbm5lY3QyLmMKLWluZGV4IDMxZjUxYmU2Mi4uZWVlMWY5Nzk0IDEw MDY0NAoraW5kZXggMmRjMDhiOGExLi4wYzgyYzc3ODIgMTAwNjQ0CiAtLS0gYS9zc2hjb25uZWN0 Mi5jCiArKysgYi9zc2hjb25uZWN0Mi5jCi1AQCAtMTQ0MCw2ICsxNDQwLDE0IEBAIGlkZW50aXR5 X3NpZ24oc3RydWN0IGlkZW50aXR5ICppZCwgdV9jaGFyICoqc2lncCwgc2l6ZV90ICpsZW5wLAor QEAgLTE0NDIsNiArMTQ0MiwxNCBAQCBpZGVudGl0eV9zaWduKHN0cnVjdCBpZGVudGl0eSAqaWQs IHVfY2hhciAqKnNpZ3AsIHNpemVfdCAqbGVucCwKICAJCQlyZXRyaWVkID0gMTsKICAJCQlnb3Rv IHJldHJ5X3BpbjsKICAJCX0KQEAgLTMxNCwxMCArMzE0LDEwIEBAIGluZGV4IDMxZjUxYmU2Mi4u ZWVlMWY5Nzk0IDEwMDY0NAogIAl9CiAgCiBkaWZmIC0tZ2l0IGEvc3NoZC1zZXNzaW9uLmMgYi9z c2hkLXNlc3Npb24uYwotaW5kZXggZDg5NzJmYmQ1Li43MDY0YWZkN2MgMTAwNjQ0CitpbmRleCBm YTExOTJjMDkuLjAyODRjOGU0MiAxMDA2NDQKIC0tLSBhL3NzaGQtc2Vzc2lvbi5jCiArKysgYi9z c2hkLXNlc3Npb24uYwotQEAgLTEyNjAsNiArMTI2MCwyNyBAQCBtYWluKGludCBhYywgY2hhciAq KmF2KQorQEAgLTEyNjEsNiArMTI2MSwyNyBAQCBtYWluKGludCBhYywgY2hhciAqKmF2KQogIAog IAljaGVja19pcF9vcHRpb25zKHNzaCk7CiAgCkBAIC0zNDYsNSArMzQ2LDUgQEAgaW5kZXggZDg5 NzJmYmQ1Li43MDY0YWZkN2MgMTAwNjQ0CiAgCWNoYW5uZWxfaW5pdF9jaGFubmVscyhzc2gpOwog IAljaGFubmVsX3NldF9hZihzc2gsIG9wdGlvbnMuYWRkcmVzc19mYW1pbHkpOwogLS0gCi0yLjUz LjAKKzIuNTUuMAogCgpkaWZmIC0tZ2l0IGEvMDA0Mi1vcGVuc3NoLTkuOXAxLXNlcGFyYXRlLWtl eXNpZ24ucGF0Y2ggYi8wMDQyLW9wZW5zc2gtOS45cDEtc2VwYXJhdGUta2V5c2lnbi5wYXRjaApp bmRleCAxNTM1ZTIzLi40ZDZlMjYyIDEwMDY0NAotLS0gYS8wMDQyLW9wZW5zc2gtOS45cDEtc2Vw YXJhdGUta2V5c2lnbi5wYXRjaAorKysgYi8wMDQyLW9wZW5zc2gtOS45cDEtc2VwYXJhdGUta2V5 c2lnbi5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZjNkZTMyODA5MzMzNGE5MDNlZTU0NTkz NDA3NjViN2Y1NDQxMjE2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gY2RlYTg2NjE4 YjEyYThmYmU5YTZlNTdjOGI1NmMxNTczMmEwOGFiMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK IEZyb206IERtaXRyeSBCZWx5YXZza2l5IDxiZWxkbWl0QGdtYWlsLmNvbT4KIERhdGU6IFRodSwg MTUgTWF5IDIwMjUgMTM6NDM6MjkgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSCA0Mi81NF0gb3BlbnNz aC05LjlwMS1zZXBhcmF0ZS1rZXlzaWduCkBAIC04LDEwICs4LDEwIEBAIFN1YmplY3Q6IFtQQVRD SCA0Mi81NF0gb3BlbnNzaC05LjlwMS1zZXBhcmF0ZS1rZXlzaWduCiAgMSBmaWxlIGNoYW5nZWQs IDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9zc2hfY29uZmln LjUgYi9zc2hfY29uZmlnLjUKLWluZGV4IDMwNmZhMWQ4YS4uYWI5OGMxNzJmIDEwMDY0NAoraW5k ZXggMDQ0N2M4YzdlLi42N2Q1MmQ4NzQgMTAwNjQ0CiAtLS0gYS9zc2hfY29uZmlnLjUKICsrKyBi L3NzaF9jb25maWcuNQotQEAgLTc5Nyw3ICs3OTcsNyBAQCBvcgorQEAgLTgzNCw3ICs4MzQsNyBA QCBvcgogIFRoaXMgb3B0aW9uIHNob3VsZCBiZSBwbGFjZWQgaW4gdGhlIG5vbi1ob3N0c3BlY2lm aWMgc2VjdGlvbi4KICBTZWUKICAuWHIgc3NoLWtleXNpZ24gOApAQCAtMjEsNSArMjEsNSBAQCBp bmRleCAzMDZmYTFkOGEuLmFiOThjMTcyZiAxMDA2NDQKICBTZXRzIHRoZSBlc2NhcGUgY2hhcmFj dGVyIChkZWZhdWx0OgogIC5RbCB+ICkgLgogLS0gCi0yLjUzLjAKKzIuNTUuMAogCgpkaWZmIC0t Z2l0IGEvMDA0My1vcGVuc3NoLTkuOXAxLW9wZW5zc2wtbWxrZW0ucGF0Y2ggYi8wMDQzLW9wZW5z c2gtOS45cDEtb3BlbnNzbC1tbGtlbS5wYXRjaAppbmRleCA2MDJkN2JlLi45OTdhM2ZhIDEwMDY0 NAotLS0gYS8wMDQzLW9wZW5zc2gtOS45cDEtb3BlbnNzbC1tbGtlbS5wYXRjaAorKysgYi8wMDQz LW9wZW5zc2gtOS45cDEtb3BlbnNzbC1tbGtlbS5wYXRjaApAQCAtMSwxNSArMSwxNSBAQAotRnJv bSAxZDUzZDM0MjkwZGVmYmJiM2I2ZGFhOTY3Yzc0YjhmMDAyODJkYzdlIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQorRnJvbSBlODJkOTgxY2IyZDI5N2JmYjIwOTdlZTRjNTRiNGI3OWFmODA1NjFk IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogRG1pdHJ5IEJlbHlhdnNraXkgPGJlbGRt aXRAZ21haWwuY29tPgogRGF0ZTogVGh1LCAxNSBNYXkgMjAyNSAxMzo0MzoyOSArMDIwMAogU3Vi amVjdDogW1BBVENIIDQzLzU0XSBvcGVuc3NoLTkuOXAxLW9wZW5zc2wtbWxrZW0KIAogLS0tCiAg a2V4LW5hbWVzLmMgICAgICAgICB8ICAyMyArKystCi0ga2V4bWxrZW03Njh4MjU1MTkuYyB8IDI5 MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDIgZmlsZXMg Y2hhbmdlZCwgMzEzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKyBrZXhtbGtlbTc2OHgy NTUxOS5jIHwgMjkyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr CisgMiBmaWxlcyBjaGFuZ2VkLCAzMTQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBk aWZmIC0tZ2l0IGEva2V4LW5hbWVzLmMgYi9rZXgtbmFtZXMuYwotaW5kZXggYzA3NjFhZThmLi44 ODJmMjkwNWIgMTAwNjQ0CitpbmRleCBkY2I2ZWZjMTMuLjZjYzhhYjQ3YyAxMDA2NDQKIC0tLSBh L2tleC1uYW1lcy5jCiArKysgYi9rZXgtbmFtZXMuYwogQEAgLTEwOCw2ICsxMDgsMTkgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBrZXhhbGcgZ3NzX2tleGFsZ3NbXSA9IHsKQEAgLTU4LDEzICs1OCwx MyBAQCBpbmRleCBjMDc2MWFlOGYuLjg4MmYyOTA1YiAxMDA2NDQKICAJCWlmIChzdHJjbXAoay0+ bmFtZSwgbmFtZSkgPT0gMCkKICAJCQlyZXR1cm4gazsKIGRpZmYgLS1naXQgYS9rZXhtbGtlbTc2 OHgyNTUxOS5jIGIva2V4bWxrZW03Njh4MjU1MTkuYwotaW5kZXggMjU4NWQxZGIzLi5hYjYxNjcy MjEgMTAwNjQ0CitpbmRleCBlMmMyYzBhODYuLjM2NjU4MTIwZiAxMDA2NDQKIC0tLSBhL2tleG1s a2VtNzY4eDI1NTE5LmMKICsrKyBiL2tleG1sa2VtNzY4eDI1NTE5LmMKLUBAIC00NCwxMCArNDQs MTI3IEBACitAQCAtNDUsOSArNDUsMTI3IEBACisgCiAgI2lmZGVmIFVTRV9NTEtFTTc2OFgyNTUx OQogIAotICNpbmNsdWRlICJsaWJjcnV4X21sa2VtNzY4X3NoYTMuaCIKICsjaW5jbHVkZSA8b3Bl bnNzbC9lcnIuaD4KICsjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KICsjaW5jbHVkZSA8c3RkaW8u aD4KQEAgLTE4MSwxNiArMTgxLDE2IEBAIGluZGV4IDI1ODVkMWRiMy4uYWI2MTY3MjIxIDEwMDY0 NAogKwogKyAgICByZXR1cm4gcjsKICt9Ci0gCisrCiAgaW50CiAga2V4X2tlbV9tbGtlbTc2OHgy NTUxOV9rZXlwYWlyKHN0cnVjdCBrZXggKmtleCkKICB7CiArI2lmIDAKICAJc3RydWN0IHNzaGJ1 ZiAqYnVmID0gTlVMTDsKLSAJdV9jaGFyIHJuZFtMSUJDUlVYX01MX0tFTV9LRVlfUEFJUl9QUk5H X0xFTl0sICpjcCA9IE5VTEw7CisgCXVfY2hhciAqY3AgPSBOVUxMOwogIAlzaXplX3QgbmVlZDsK LUBAIC04Miw2ICsxOTksMzYgQEAga2V4X2tlbV9tbGtlbTc2OHgyNTUxOV9rZXlwYWlyKHN0cnVj dCBrZXggKmtleCkKLSAJZXhwbGljaXRfYnplcm8ocm5kLCBzaXplb2Yocm5kKSk7CitAQCAtNzgs NiArMTk2LDM2IEBAIGtleF9rZW1fbWxrZW03Njh4MjU1MTlfa2V5cGFpcihzdHJ1Y3Qga2V4ICpr ZXgpCisgIG91dDoKICAJc3NoYnVmX2ZyZWUoYnVmKTsKICAJcmV0dXJuIHI7CiArI2Vsc2UKQEAg LTIyNiw3ICsyMjYsNyBAQCBpbmRleCAyNTg1ZDFkYjMuLmFiNjE2NzIyMSAxMDA2NDQKICB9CiAg CiAgaW50Ci1AQCAtODksNiArMjM2LDcgQEAga2V4X2tlbV9tbGtlbTc2OHgyNTUxOV9lbmMoc3Ry dWN0IGtleCAqa2V4LAorQEAgLTg1LDYgKzIzMyw3IEBAIGtleF9rZW1fbWxrZW03Njh4MjU1MTlf ZW5jKHN0cnVjdCBrZXggKmtleCwKICAgICBjb25zdCBzdHJ1Y3Qgc3NoYnVmICpjbGllbnRfYmxv Yiwgc3RydWN0IHNzaGJ1ZiAqKnNlcnZlcl9ibG9icCwKICAgICBzdHJ1Y3Qgc3NoYnVmICoqc2hh cmVkX3NlY3JldHApCiAgewpAQCAtMjM0LDcgKzIzNCw3IEBAIGluZGV4IDI1ODVkMWRiMy4uYWI2 MTY3MjIxIDEwMDY0NAogIAlzdHJ1Y3Qgc3NoYnVmICpzZXJ2ZXJfYmxvYiA9IE5VTEw7CiAgCXN0 cnVjdCBzc2hidWYgKmJ1ZiA9IE5VTEw7CiAgCWNvbnN0IHVfY2hhciAqY2xpZW50X3B1YjsKLUBA IC0xODEsMTIgKzMyOSw5NyBAQCBrZXhfa2VtX21sa2VtNzY4eDI1NTE5X2VuYyhzdHJ1Y3Qga2V4 ICprZXgsCitAQCAtMTcwLDEyICszMTksOTcgQEAga2V4X2tlbV9tbGtlbTc2OHgyNTUxOV9lbmMo c3RydWN0IGtleCAqa2V4LAogIAlzc2hidWZfZnJlZShzZXJ2ZXJfYmxvYik7CiAgCXNzaGJ1Zl9m cmVlKGJ1Zik7CiAgCXJldHVybiByOwpAQCAtMjc3LDEzICsyNzcsMTMgQEAgaW5kZXggMjU4NWQx ZGIzLi5hYjYxNjcyMjEgMTAwNjQ0CiArCQlyID0gU1NIX0VSUl9BTExPQ19GQUlMOwogKwkJZ290 byBvdXQ7CiArCX0KLSsJaWYgKG1sa2VtNzY4X2VuY2FwX3NlY3JldChjbGllbnRfcHViLCBlbmMu c25kLCBlbmMuZnN0LnZhbHVlKSAhPSAwKQorKwlpZiAobWxrZW03NjhfZW5jYXBfc2VjcmV0KGNs aWVudF9wdWIsIGVuYy5zbmQuZGF0YSwgZW5jLmZzdC5kYXRhKSAhPSAwKQogKwkJZ290byBvdXQ7 CiArCiArCS8qIGdlbmVyYXRlIEVDREgga2V5IHBhaXIsIHN0b3JlIHNlcnZlciBwdWJrZXkgYWZ0 ZXIgY2lwaGVydGV4dCAqLwogKwlrZXhjMjU1MTlfa2V5Z2VuKHNlcnZlcl9rZXksIHNlcnZlcl9w dWIpOwotKwlpZiAoKHIgPSBzc2hidWZfcHV0KGJ1ZiwgZW5jLnNuZCwgc2l6ZW9mKGVuYy5zbmQp KSkgIT0gMCB8fAotKwkgICAgKHIgPSBzc2hidWZfcHV0KHNlcnZlcl9ibG9iLCBlbmMuZnN0LnZh bHVlLCBzaXplb2YoZW5jLmZzdC52YWx1ZSkpKSAhPSAwIHx8CisrCWlmICgociA9IHNzaGJ1Zl9w dXQoYnVmLCBlbmMuc25kLmRhdGEsIHNpemVvZihlbmMuc25kLmRhdGEpKSkgIT0gMCB8fAorKwkg ICAgKHIgPSBzc2hidWZfcHV0KHNlcnZlcl9ibG9iLCBlbmMuZnN0LmRhdGEsIHNpemVvZihlbmMu ZnN0LmRhdGEpKSkgIT0gMCB8fAogKwkgICAgKHIgPSBzc2hidWZfcHV0KHNlcnZlcl9ibG9iLCBz ZXJ2ZXJfcHViLCBzaXplb2Yoc2VydmVyX3B1YikpKSAhPSAwKQogKwkJZ290byBvdXQ7CiArCS8q IGFwcGVuZCBFQ0RIIHNoYXJlZCBrZXkgKi8KQEAgLTI5NSw4ICsyOTUsOCBAQCBpbmRleCAyNTg1 ZDFkYjMuLmFiNjE2NzIyMSAxMDA2NDQKICsjaWZkZWYgREVCVUdfS0VYRUNESAogKwlkdW1wX2Rp Z2VzdCgic2VydmVyIHB1YmxpYyBrZXkgMjU1MTk6Iiwgc2VydmVyX3B1YiwgQ1VSVkUyNTUxOV9T SVpFKTsKICsJZHVtcF9kaWdlc3QoInNlcnZlciBjaXBoZXIgdGV4dDoiLAotKwkgICAgZW5jLmZz dC52YWx1ZSwgc2l6ZW9mKGVuYy5mc3QudmFsdWUpKTsKLSsJZHVtcF9kaWdlc3QoInNlcnZlciBr ZW0ga2V5OiIsIGVuYy5zbmQsIHNpemVvZihlbmMuc25kKSk7CisrCSAgICBlbmMuZnN0LmRhdGEs IHNpemVvZihlbmMuZnN0LmRhdGEpKTsKKysJZHVtcF9kaWdlc3QoInNlcnZlciBrZW0ga2V5OiIs IGVuYy5zbmQuZGF0YSwgc2l6ZW9mKGVuYy5zbmQuZGF0YSkpOwogKwlkdW1wX2RpZ2VzdCgiY29u Y2F0ZW5hdGlvbiBvZiBLRU0ga2V5IGFuZCBFQ0RIIHNoYXJlZCBrZXk6IiwKICsJICAgIHNzaGJ1 Zl9wdHIoYnVmKSwgc3NoYnVmX2xlbihidWYpKTsKICsjZW5kaWYKQEAgLTMzMCwxMCArMzMwLDEw IEBAIGluZGV4IDI1ODVkMWRiMy4uYWI2MTY3MjIxIDEwMDY0NAogIHsKICsjaWYgMAogIAlzdHJ1 Y3Qgc3NoYnVmICpidWYgPSBOVUxMOwotIAl1X2NoYXIgbWxrZW1fa2V5W2NyeXB0b19rZW1fbWxr ZW03NjhfQllURVNdOworIAl1X2NoYXIgc2hhcmVkX3NlY3JldFtNTEtFTTc2OF9CWVRFU107CiAg CWNvbnN0IHVfY2hhciAqY2lwaGVydGV4dCwgKnNlcnZlcl9wdWI7Ci1AQCAtMjU0LDYgKzQ4Nyw2 NCBAQCBrZXhfa2VtX21sa2VtNzY4eDI1NTE5X2RlYyhzdHJ1Y3Qga2V4ICprZXgsCi0gCWV4cGxp Y2l0X2J6ZXJvKG1sa2VtX2tleSwgc2l6ZW9mKG1sa2VtX2tleSkpOworQEAgLTIzNiw2ICs0NzAs NjQgQEAga2V4X2tlbV9tbGtlbTc2OHgyNTUxOV9kZWMoc3RydWN0IGtleCAqa2V4LAorIAlleHBs aWNpdF9iemVybyhzaGFyZWRfc2VjcmV0LCBzaXplb2Yoc2hhcmVkX3NlY3JldCkpOwogIAlzc2hi dWZfZnJlZShidWYpOwogIAlyZXR1cm4gcjsKICsjZWxzZQpAQCAtMzk4LDUgKzM5OCw1IEBAIGlu ZGV4IDI1ODVkMWRiMy4uYWI2MTY3MjIxIDEwMDY0NAogICNlbHNlIC8qIFVTRV9NTEtFTTc2OFgy NTUxOSAqLwogIGludAogLS0gCi0yLjUzLjAKKzIuNTUuMAogCgpkaWZmIC0tZ2l0IGEvMDA0NC1v cGVuc3NoLTkuOXAyLWVycm9yX3Byb2Nlc3NpbmcucGF0Y2ggYi8wMDQ0LW9wZW5zc2gtOS45cDIt ZXJyb3JfcHJvY2Vzc2luZy5wYXRjaAppbmRleCAzNWRmMzRiLi5kNWM1MTEwIDEwMDY0NAotLS0g YS8wMDQ0LW9wZW5zc2gtOS45cDItZXJyb3JfcHJvY2Vzc2luZy5wYXRjaAorKysgYi8wMDQ0LW9w ZW5zc2gtOS45cDItZXJyb3JfcHJvY2Vzc2luZy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20g MDRlYzBlMzRhNGQ0Zjg2N2NhZDMyZWQ4NTQzYjMyZTRkZTQ1OGY4ZiBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKK0Zyb20gNDIyM2JkMWU5YmQxMDMxNTliM2U5MzRkNjA2MDk1OGMxZDI4NTQ4YiBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IERtaXRyeSBCZWx5YXZza2l5IDxiZWxkbWl0 QGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMTYgTWF5IDIwMjUgMTQ6NTM6NTQgKzAyMDAKIFN1Ympl Y3Q6IFtQQVRDSCA0NC81NF0gb3BlbnNzaC05LjlwMi1lcnJvcl9wcm9jZXNzaW5nCkBAIC05LDEw ICs5LDEwIEBAIFN1YmplY3Q6IFtQQVRDSCA0NC81NF0gb3BlbnNzaC05LjlwMi1lcnJvcl9wcm9j ZXNzaW5nCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEv c3NoLWFnZW50LmMgYi9zc2gtYWdlbnQuYwotaW5kZXggYzczYWJkMWQwLi43NzczYTRiMDcgMTAw NjQ0CitpbmRleCA1ZmM3M2Q2OTcuLjE3YjJhOTZjMCAxMDA2NDQKIC0tLSBhL3NzaC1hZ2VudC5j CiArKysgYi9zc2gtYWdlbnQuYwotQEAgLTEzNTIsNiArMTM1Miw4IEBAIHByb2Nlc3NfYWRkX2lk ZW50aXR5KFNvY2tldEVudHJ5ICplKQorQEAgLTEzNTksNiArMTM1OSw4IEBAIHByb2Nlc3NfYWRk X2lkZW50aXR5KFNvY2tldEVudHJ5ICplKQogIAlpZiAoKHIgPSBzc2hrZXlfcHJpdmF0ZV9kZXNl cmlhbGl6ZShlLT5yZXF1ZXN0LCAmaykpICE9IDAgfHwKICAJICAgIGsgPT0gTlVMTCB8fAogIAkg ICAgKHIgPSBzc2hidWZfZ2V0X2NzdHJpbmcoZS0+cmVxdWVzdCwgJmNvbW1lbnQsIE5VTEwpKSAh PSAwKSB7CkBAIC0yMiw1ICsyMiw1IEBAIGluZGV4IGM3M2FiZDFkMC4uNzc3M2E0YjA3IDEwMDY0 NAogIAkJZ290byBvdXQ7CiAgCX0KIC0tIAotMi41My4wCisyLjU1LjAKIAoKZGlmZiAtLWdpdCBh LzAwNDUtSWdub3JlLWJhZC1ob3N0a2V5cy1pbi1rbm93bl9ob3N0cy1maWxlLnBhdGNoIGIvMDA0 NS1JZ25vcmUtYmFkLWhvc3RrZXlzLWluLWtub3duX2hvc3RzLWZpbGUucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjFiZTA1MwotLS0gL2Rldi9udWxsCisrKyBiLzAw NDUtSWdub3JlLWJhZC1ob3N0a2V5cy1pbi1rbm93bl9ob3N0cy1maWxlLnBhdGNoCkBAIC0wLDAg KzEsODggQEAKK0Zyb20gMGFlNDVjNmY1MGNkOWVlZmRlZmE3MjUxYTYxZmRkZTMwNDY0YTlhNyBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFpvbHRhbiBGcmlkcmljaCA8emZyaWRyaWNA cmVkaGF0LmNvbT4KK0RhdGU6IE1vbiwgNSBNYXkgMjAyNSAxMTo1MjoyNSArMDIwMAorU3ViamVj dDogW1BBVENIIDQ1LzU0XSBJZ25vcmUgYmFkIGhvc3RrZXlzIGluIGtub3duX2hvc3RzIGZpbGUK KworU2lnbmVkLW9mZi1ieTogWm9sdGFuIEZyaWRyaWNoIDx6ZnJpZHJpY0ByZWRoYXQuY29tPgor CisjIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuc3NoL29wZW5zc2gtcG9ydGFibGUvcHVsbC81NjcK Ky0tLQorIGhvc3RmaWxlLmMgfCAxNSArKysrKysrKysrKysrKysKKyBob3N0ZmlsZS5oIHwgIDEg KworIHNzaC5jICAgICAgfCAgMiArKworIDMgZmlsZXMgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygr KQorCitkaWZmIC0tZ2l0IGEvaG9zdGZpbGUuYyBiL2hvc3RmaWxlLmMKK2luZGV4IDAzM2IyOTEw NC4uNDUxN2FhMDgwIDEwMDY0NAorLS0tIGEvaG9zdGZpbGUuYworKysrIGIvaG9zdGZpbGUuYwor QEAgLTYzLDYgKzYzLDE0IEBACisgI2luY2x1ZGUgImhtYWMuaCIKKyAjaW5jbHVkZSAic3NoYnVm LmgiCisgCisrc3RhdGljIGludCByZXF1aXJlZF9yc2Ffc2l6ZSA9IFNTSF9SU0FfTUlOSU1VTV9N T0RVTFVTX1NJWkU7CisrCisrdm9pZAorK2hvc3RmaWxlX3NldF9taW5pbXVtX3JzYV9zaXplKGlu dCBzaXplKQorK3sKKysJcmVxdWlyZWRfcnNhX3NpemUgPSBzaXplOworK30KKysKKyAvKiBYWFgg aG1hYyBpcyB0b28gZWFzeSB0byBkaWN0aW9uYXJ5IGF0dGFjazsgdXNlIGJjcnlwdD8gKi8KKyAK KyBzdGF0aWMgaW50CitAQCAtMjMzLDYgKzI0MSw3IEBAIHJlY29yZF9ob3N0a2V5KHN0cnVjdCBo b3N0a2V5X2ZvcmVhY2hfbGluZSAqbCwgdm9pZCAqX2N0eCkKKyAJc3RydWN0IGxvYWRfY2FsbGJh Y2tfY3R4ICpjdHggPSAoc3RydWN0IGxvYWRfY2FsbGJhY2tfY3R4ICopX2N0eDsKKyAJc3RydWN0 IGhvc3RrZXlzICpob3N0a2V5cyA9IGN0eC0+aG9zdGtleXM7CisgCXN0cnVjdCBob3N0a2V5X2Vu dHJ5ICp0bXA7CisrCWludCByID0gMDsKKyAKKyAJaWYgKGwtPnN0YXR1cyA9PSBIS0ZfU1RBVFVT X0lOVkFMSUQpIHsKKyAJCS8qIFhYWCBtYWtlIHRoaXMgdmVyYm9zZSgpIGluIHRoZSBmdXR1cmUg Ki8KK0BAIC0yNDEsNiArMjUwLDEyIEBAIHJlY29yZF9ob3N0a2V5KHN0cnVjdCBob3N0a2V5X2Zv cmVhY2hfbGluZSAqbCwgdm9pZCAqX2N0eCkKKyAJCXJldHVybiAwOworIAl9CisgCisrCWlmICgo ciA9IHNzaGtleV9jaGVja19yc2FfbGVuZ3RoKGwtPmtleSwgcmVxdWlyZWRfcnNhX3NpemUpKSAh PSAwKSB7CisrCQlkZWJ1ZzJfZigiJXM6JWxkOiBpZ25vcmluZyBob3N0a2V5OiAlcyIsCisrCQkg ICAgbC0+cGF0aCwgbC0+bGluZW51bSwgc3NoX2VycihyKSk7CisrCQlyZXR1cm4gMDsKKysJfQor KworIAlkZWJ1ZzNfZigiZm91bmQgJXNrZXkgdHlwZSAlcyBpbiBmaWxlICVzOiVsdSIsCisgCSAg ICBsLT5tYXJrZXIgPT0gTVJLX05PTkUgPyAiIiA6CisgCSAgICAobC0+bWFya2VyID09IE1SS19D QSA/ICJjYSAiIDogInJldm9rZWQgIiksCitkaWZmIC0tZ2l0IGEvaG9zdGZpbGUuaCBiL2hvc3Rm aWxlLmgKK2luZGV4IGEyNGE0ZTMyOS4uMGU5YjFhMTlhIDEwMDY0NAorLS0tIGEvaG9zdGZpbGUu aAorKysrIGIvaG9zdGZpbGUuaAorQEAgLTExOSw1ICsxMTksNiBAQCBpbnQgaG9zdGtleXNfZm9y ZWFjaF9maWxlKGNvbnN0IGNoYXIgKnBhdGgsIEZJTEUgKmYsCisgICAgIGNvbnN0IGNoYXIgKmhv c3QsIGNvbnN0IGNoYXIgKmlwLCB1X2ludCBvcHRpb25zLCB1X2ludCBub3RlKTsKKyAKKyB2b2lk IGhvc3RmaWxlX2NyZWF0ZV91c2VyX3NzaF9kaXIoY29uc3QgY2hhciAqLCBpbnQpOworK3ZvaWQg aG9zdGZpbGVfc2V0X21pbmltdW1fcnNhX3NpemUoaW50KTsKKyAKKyAjZW5kaWYKK2RpZmYgLS1n aXQgYS9zc2guYyBiL3NzaC5jCitpbmRleCA0ZGVlNzg0OWYuLmMzMTlkMDhhZiAxMDA2NDQKKy0t LSBhL3NzaC5jCisrKysgYi9zc2guYworQEAgLTk3LDYgKzk3LDcgQEAKKyAjaW5jbHVkZSAidmVy c2lvbi5oIgorICNpbmNsdWRlICJzc2hlcnIuaCIKKyAjaW5jbHVkZSAidXRmOC5oIgorKyNpbmNs dWRlICJob3N0ZmlsZS5oIgorIAorICNpZmRlZiBFTkFCTEVfUEtDUzExCisgI2luY2x1ZGUgInNz aC1wa2NzMTEuaCIKK0BAIC0xMzU3LDYgKzEzNTgsNyBAQCBtYWluKGludCBhYywgY2hhciAqKmF2 KQorIAkJCW9wdGlvbnMudXBkYXRlX2hvc3RrZXlzID0gMDsKKyAJCX0KKyAJfQorKwlob3N0Zmls ZV9zZXRfbWluaW11bV9yc2Ffc2l6ZShvcHRpb25zLnJlcXVpcmVkX3JzYV9zaXplKTsKKyAJaWYg KG9wdGlvbnMuY29ubmVjdGlvbl9hdHRlbXB0cyA8PSAwKQorIAkJZmF0YWwoIkludmFsaWQgbnVt YmVyIG9mIENvbm5lY3Rpb25BdHRlbXB0cyIpOworIAorLS0gCisyLjU1LjAKKwoKZGlmZiAtLWdp dCBhLzAwNDUtUHJvdmlkZS1iZXR0ZXItZXJyb3ItZm9yLW5vbi1zdXBwb3J0ZWQtcHJpdmF0ZS1r ZXlzLnBhdGNoIGIvMDA0NS1Qcm92aWRlLWJldHRlci1lcnJvci1mb3Itbm9uLXN1cHBvcnRlZC1w cml2YXRlLWtleXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyMGM3MWUu LjAwMDAwMDAKLS0tIGEvMDA0NS1Qcm92aWRlLWJldHRlci1lcnJvci1mb3Itbm9uLXN1cHBvcnRl ZC1wcml2YXRlLWtleXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9t IDFkNTliYjFmNjU4YmFiOGRlOTMxZDExNTk1OWZjYjBmZTkzZDI3ZmEgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCi1Gcm9tOiBab2x0YW4gRnJpZHJpY2ggPHpmcmlkcmljQHJlZGhhdC5jb20+Ci1E YXRlOiBXZWQsIDE2IEFwciAyMDI1IDE1OjExOjU5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggNDUv NTRdIFByb3ZpZGUgYmV0dGVyIGVycm9yIGZvciBub24tc3VwcG9ydGVkIHByaXZhdGUga2V5cwot Ci1TaWduZWQtb2ZmLWJ5OiBab2x0YW4gRnJpZHJpY2ggPHpmcmlkcmljQHJlZGhhdC5jb20+Ci0K LSMgaHR0cHM6Ly9naXRodWIuY29tL29wZW5zc2gvb3BlbnNzaC1wb3J0YWJsZS9wdWxsLzU2NAot LS0tCi0gc3Noa2V5LmMgfCAzICsrKwotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykK LQotZGlmZiAtLWdpdCBhL3NzaGtleS5jIGIvc3Noa2V5LmMKLWluZGV4IDgyZTU1NTA5ZC4uNTIy NWVhYmYyIDEwMDY0NAotLS0tIGEvc3Noa2V5LmMKLSsrKyBiL3NzaGtleS5jCi1AQCAtMzU1NCw2 ICszNTU0LDkgQEAgdHJhbnNsYXRlX2xpYmNyeXB0b19lcnJvcih1bnNpZ25lZCBsb25nIHBlbV9l cnIpCi0gCQkJcmV0dXJuIFNTSF9FUlJfTElCQ1JZUFRPX0VSUk9SOwotIAkJfQotIAljYXNlIEVS Ul9MSUJfQVNOMToKLSsjaWZkZWYgRVJSX0xJQl9PU1NMX0RFQ09ERVIKLSsJY2FzZSBFUlJfTElC X09TU0xfREVDT0RFUjoKLSsjZW5kaWYKLSAJCXJldHVybiBTU0hfRVJSX0lOVkFMSURfRk9STUFU OwotIAl9Ci0gCXJldHVybiBTU0hfRVJSX0xJQkNSWVBUT19FUlJPUjsKLS0tIAotMi41My4wCi0K CmRpZmYgLS1naXQgYS8wMDQ2LUlnbm9yZS1iYWQtaG9zdGtleXMtaW4ta25vd25faG9zdHMtZmls ZS5wYXRjaCBiLzAwNDYtSWdub3JlLWJhZC1ob3N0a2V5cy1pbi1rbm93bl9ob3N0cy1maWxlLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNDg1ZTk1Li4wMDAwMDAwCi0tLSBh LzAwNDYtSWdub3JlLWJhZC1ob3N0a2V5cy1pbi1rbm93bl9ob3N0cy1maWxlLnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotRnJvbSBkZWY0NDIxNDZiYmZlMTExNmNhNTFjMGI4 MWEyZWViYzEzYTg2ZWViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogWm9sdGFuIEZy aWRyaWNoIDx6ZnJpZHJpY0ByZWRoYXQuY29tPgotRGF0ZTogTW9uLCA1IE1heSAyMDI1IDExOjUy OjI1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggNDYvNTRdIElnbm9yZSBiYWQgaG9zdGtleXMgaW4g a25vd25faG9zdHMgZmlsZQotCi1TaWduZWQtb2ZmLWJ5OiBab2x0YW4gRnJpZHJpY2ggPHpmcmlk cmljQHJlZGhhdC5jb20+Ci0KLSMgaHR0cHM6Ly9naXRodWIuY29tL29wZW5zc2gvb3BlbnNzaC1w b3J0YWJsZS9wdWxsLzU2NwotLS0tCi0gaG9zdGZpbGUuYyB8IDE1ICsrKysrKysrKysrKysrKwot IGhvc3RmaWxlLmggfCAgMSArCi0gc3NoLmMgICAgICB8ICAyICsrCi0gMyBmaWxlcyBjaGFuZ2Vk LCAxOCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9ob3N0ZmlsZS5jIGIvaG9zdGZpbGUu YwotaW5kZXggMDMzYjI5MTA0Li40NTE3YWEwODAgMTAwNjQ0Ci0tLS0gYS9ob3N0ZmlsZS5jCi0r KysgYi9ob3N0ZmlsZS5jCi1AQCAtNjMsNiArNjMsMTQgQEAKLSAjaW5jbHVkZSAiaG1hYy5oIgot ICNpbmNsdWRlICJzc2hidWYuaCIKLSAKLStzdGF0aWMgaW50IHJlcXVpcmVkX3JzYV9zaXplID0g U1NIX1JTQV9NSU5JTVVNX01PRFVMVVNfU0laRTsKLSsKLSt2b2lkCi0raG9zdGZpbGVfc2V0X21p bmltdW1fcnNhX3NpemUoaW50IHNpemUpCi0rewotKwlyZXF1aXJlZF9yc2Ffc2l6ZSA9IHNpemU7 Ci0rfQotKwotIC8qIFhYWCBobWFjIGlzIHRvbyBlYXN5IHRvIGRpY3Rpb25hcnkgYXR0YWNrOyB1 c2UgYmNyeXB0PyAqLwotIAotIHN0YXRpYyBpbnQKLUBAIC0yMzMsNiArMjQxLDcgQEAgcmVjb3Jk X2hvc3RrZXkoc3RydWN0IGhvc3RrZXlfZm9yZWFjaF9saW5lICpsLCB2b2lkICpfY3R4KQotIAlz dHJ1Y3QgbG9hZF9jYWxsYmFja19jdHggKmN0eCA9IChzdHJ1Y3QgbG9hZF9jYWxsYmFja19jdHgg KilfY3R4OwotIAlzdHJ1Y3QgaG9zdGtleXMgKmhvc3RrZXlzID0gY3R4LT5ob3N0a2V5czsKLSAJ c3RydWN0IGhvc3RrZXlfZW50cnkgKnRtcDsKLSsJaW50IHIgPSAwOwotIAotIAlpZiAobC0+c3Rh dHVzID09IEhLRl9TVEFUVVNfSU5WQUxJRCkgewotIAkJLyogWFhYIG1ha2UgdGhpcyB2ZXJib3Nl KCkgaW4gdGhlIGZ1dHVyZSAqLwotQEAgLTI0MSw2ICsyNTAsMTIgQEAgcmVjb3JkX2hvc3RrZXko c3RydWN0IGhvc3RrZXlfZm9yZWFjaF9saW5lICpsLCB2b2lkICpfY3R4KQotIAkJcmV0dXJuIDA7 Ci0gCX0KLSAKLSsJaWYgKChyID0gc3Noa2V5X2NoZWNrX3JzYV9sZW5ndGgobC0+a2V5LCByZXF1 aXJlZF9yc2Ffc2l6ZSkpICE9IDApIHsKLSsJCWRlYnVnMl9mKCIlczolbGQ6IGlnbm9yaW5nIGhv c3RrZXk6ICVzIiwKLSsJCSAgICBsLT5wYXRoLCBsLT5saW5lbnVtLCBzc2hfZXJyKHIpKTsKLSsJ CXJldHVybiAwOwotKwl9Ci0rCi0gCWRlYnVnM19mKCJmb3VuZCAlc2tleSB0eXBlICVzIGluIGZp bGUgJXM6JWx1IiwKLSAJICAgIGwtPm1hcmtlciA9PSBNUktfTk9ORSA/ICIiIDoKLSAJICAgIChs LT5tYXJrZXIgPT0gTVJLX0NBID8gImNhICIgOiAicmV2b2tlZCAiKSwKLWRpZmYgLS1naXQgYS9o b3N0ZmlsZS5oIGIvaG9zdGZpbGUuaAotaW5kZXggYTI0YTRlMzI5Li4wZTliMWExOWEgMTAwNjQ0 Ci0tLS0gYS9ob3N0ZmlsZS5oCi0rKysgYi9ob3N0ZmlsZS5oCi1AQCAtMTE5LDUgKzExOSw2IEBA IGludCBob3N0a2V5c19mb3JlYWNoX2ZpbGUoY29uc3QgY2hhciAqcGF0aCwgRklMRSAqZiwKLSAg ICAgY29uc3QgY2hhciAqaG9zdCwgY29uc3QgY2hhciAqaXAsIHVfaW50IG9wdGlvbnMsIHVfaW50 IG5vdGUpOwotIAotIHZvaWQgaG9zdGZpbGVfY3JlYXRlX3VzZXJfc3NoX2Rpcihjb25zdCBjaGFy ICosIGludCk7Ci0rdm9pZCBob3N0ZmlsZV9zZXRfbWluaW11bV9yc2Ffc2l6ZShpbnQpOwotIAot ICNlbmRpZgotZGlmZiAtLWdpdCBhL3NzaC5jIGIvc3NoLmMKLWluZGV4IGU3YmRiYTMyNy4uNGEx N2MwYTdkIDEwMDY0NAotLS0tIGEvc3NoLmMKLSsrKyBiL3NzaC5jCi1AQCAtOTcsNiArOTcsNyBA QAotICNpbmNsdWRlICJ2ZXJzaW9uLmgiCi0gI2luY2x1ZGUgInNzaGVyci5oIgotICNpbmNsdWRl ICJ1dGY4LmgiCi0rI2luY2x1ZGUgImhvc3RmaWxlLmgiCi0gCi0gI2lmZGVmIEVOQUJMRV9QS0NT MTEKLSAjaW5jbHVkZSAic3NoLXBrY3MxMS5oIgotQEAgLTEzNzUsNiArMTM3Niw3IEBAIG1haW4o aW50IGFjLCBjaGFyICoqYXYpCi0gCQkJb3B0aW9ucy51cGRhdGVfaG9zdGtleXMgPSAwOwotIAkJ fQotIAl9Ci0rCWhvc3RmaWxlX3NldF9taW5pbXVtX3JzYV9zaXplKG9wdGlvbnMucmVxdWlyZWRf cnNhX3NpemUpOwotIAlpZiAob3B0aW9ucy5jb25uZWN0aW9uX2F0dGVtcHRzIDw9IDApCi0gCQlm YXRhbCgiSW52YWxpZCBudW1iZXIgb2YgQ29ubmVjdGlvbkF0dGVtcHRzIik7Ci0gCi0tLSAKLTIu NTMuMAotCgpkaWZmIC0tZ2l0IGEvMDA0Ni1zdXBwb3J0LWF1dGhlbnRpY2F0aW9uLWluZGljYXRv cnMtaW4tR1NTQVBJLnBhdGNoIGIvMDA0Ni1zdXBwb3J0LWF1dGhlbnRpY2F0aW9uLWluZGljYXRv cnMtaW4tR1NTQVBJLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1 MWYwOGEKLS0tIC9kZXYvbnVsbAorKysgYi8wMDQ2LXN1cHBvcnQtYXV0aGVudGljYXRpb24taW5k aWNhdG9ycy1pbi1HU1NBUEkucGF0Y2gKQEAgLTAsMCArMSw0NTggQEAKK0Zyb20gMjAyZmM4ODUy MTc5OGI2NDk0OTc1MTljZDAzN2VlNDAzZDA0N2ZjOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK K0Zyb206IERtaXRyeSBCZWx5YXZza2l5IDxiZWxkbWl0QGdtYWlsLmNvbT4KK0RhdGU6IFN1biwg MTIgQXByIDIwMjYgMTI6MjM6NTEgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCA0Ni81NF0gc3VwcG9y dCBhdXRoZW50aWNhdGlvbiBpbmRpY2F0b3JzIGluIEdTU0FQSQorCitodHRwczovL2dpdGh1Yi5j b20vb3BlbnNzaC9vcGVuc3NoLXBvcnRhYmxlL3B1bGwvNTAwCisKK0NvLUF1dGhvcmVkLUJ5OiBD bGF1ZGUgU29ubmV0IDQuNSA8bm9yZXBseUBhbnRocm9waWMuY29tPgorLS0tCisgY29uZmlndXJl LmFjICAgIHwgICAxICsKKyBnc3Mtc2Vydi1rcmI1LmMgfCAgODkgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0KKyBnc3Mtc2Vydi5jICAgICAgfCAxMTIgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCisgc2VydmNvbmYuYyAgICAgIHwg IDExICsrKysrCisgc2VydmNvbmYuaCAgICAgIHwgICA2ICsrLQorIHNzaC1nc3MuaCAgICAgICB8 ICAgNyArKysKKyBzc2hkX2NvbmZpZy41ICAgfCAgNDYgKysrKysrKysrKysrKysrKysrKysKKyA3 IGZpbGVzIGNoYW5nZWQsIDI1OCBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKKworZGlm ZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggY2FhNzVmNzA4Li40 ZGYxYTMyMDQgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYwor QEAgLTUxMjAsNiArNTEyMCw3IEBAIEFDX0FSR19XSVRIKFtrZXJiZXJvczVdLAorIAkJQUNfQ0hF Q0tfSEVBREVSUyhbZ3NzYXBpLmggZ3NzYXBpL2dzc2FwaS5oXSkKKyAJCUFDX0NIRUNLX0hFQURF UlMoW2dzc2FwaV9rcmI1LmggZ3NzYXBpL2dzc2FwaV9rcmI1LmhdKQorIAkJQUNfQ0hFQ0tfSEVB REVSUyhbZ3NzYXBpX2dlbmVyaWMuaCBnc3NhcGkvZ3NzYXBpX2dlbmVyaWMuaF0pCisrCQlBQ19D SEVDS19IRUFERVJTKFtnc3NhcGlfZXh0LmggZ3NzYXBpL2dzc2FwaV9leHQuaF0pCisgCisgCQlB Q19TRUFSQ0hfTElCUyhba19oYXNhZnNdLCBba2Fmc10sIFtBQ19ERUZJTkUoW1VTRV9BRlNdLCBb MV0sCisgCQkJW0RlZmluZSB0aGlzIGlmIHlvdSB3YW50IHRvIHVzZSBsaWJrYWZzJyBBRlMgc3Vw cG9ydF0pXSkKK2RpZmYgLS1naXQgYS9nc3Mtc2Vydi1rcmI1LmMgYi9nc3Mtc2Vydi1rcmI1LmMK K2luZGV4IDcyMzUwOTQwOS4uZmM3Y2FiYzA5IDEwMDY0NAorLS0tIGEvZ3NzLXNlcnYta3JiNS5j CisrKysgYi9nc3Mtc2Vydi1rcmI1LmMKK0BAIC00Myw2ICs0Myw3IEBACisgI2luY2x1ZGUgImxv Zy5oIgorICNpbmNsdWRlICJtaXNjLmgiCisgI2luY2x1ZGUgInNlcnZjb25mLmgiCisrI2luY2x1 ZGUgIm1hdGNoLmgiCisgCisgI2luY2x1ZGUgInNzaC1nc3MuaCIKKyAKK0BAIC04Nyw2ICs4OCwz MyBAQCBzc2hfZ3NzYXBpX2tyYjVfaW5pdCh2b2lkKQorIAlyZXR1cm4gMTsKKyB9CisgCisrLyog Q2hlY2sgaWYgYW55IG9mIHRoZSBpbmRpY2F0b3JzIGluIHRoZSBLZXJiZXJvcyB0aWNrZXQgbWF0 Y2gKKysgKiBvbmUgb2YgaW5kaWNhdG9ycyBpbiB0aGUgbGlzdCBvZiBhbGxvd2VkL2RlbmllZCBy dWxlcy4KKysgKiBJbiBjYXNlIG9mIHRoZSBtYXRjaCwgYXBwbHkgdGhlIGRlY2lzaW9uIGZyb20g dGhlIHJ1bGUuCisrICogSW4gY2FzZSBvZiBubyBpbmRpY2F0b3IgZnJvbSB0aGUgdGlja2V0IG1h dGNoaW5nIHRoZSBydWxlLCBkZW55CisrICovCisrCisrc3RhdGljIGludAorK3NzaF9nc3NhcGlf Y2hlY2tfaW5kaWNhdG9ycyhzc2hfZ3NzYXBpX2NsaWVudCAqY2xpZW50LCBpbnQgKm1hdGNoZWQp CisreworKwlpbnQgcmV0OworKwl1X2ludCBpOworKwkqbWF0Y2hlZCA9IC0xOworKworKwkvKiBD aGVjayBpbmRpY2F0b3JzICovCisrCWZvciAoaSA9IDA7IGNsaWVudC0+aW5kaWNhdG9yc1tpXSAh PSBOVUxMOyBpKyspIHsKKysJCXJldCA9IG1hdGNoX3BhdHRlcm5fbGlzdChjbGllbnQtPmluZGlj YXRvcnNbaV0sCisrCQkJCQkgb3B0aW9ucy5nc3NfaW5kaWNhdG9ycywgMSk7CisrCQkvKiBuZWdh dGl2ZSBvciBwb3NpdGl2ZSBtYXRjaCAqLworKwkJaWYgKHJldCAhPSAwKSB7CisrCQkJKm1hdGNo ZWQgPSBpOworKwkJCXJldHVybiByZXQ7CisrCQl9CisrCX0KKysJLyogTm8gcnVsZSBtYXRjaGVk ICovCisrCXJldHVybiAwOworK30KKysKKyAvKiBDaGVjayBpZiB0aGlzIHVzZXIgaXMgT0sgdG8g bG9naW4uIFRoaXMgb25seSB3b3JrcyB3aXRoIGtyYjUgLSBvdGhlcgorICAqIEdTU0FQSSBtZWNo YW5pc21zIHdpbGwgbmVlZCB0aGVpciBvd24uCisgICogUmV0dXJucyB0cnVlIGlmIHRoZSB1c2Vy IGlzIE9LIHRvIGxvZyBpbiwgb3RoZXJ3aXNlIHJldHVybnMgMAorQEAgLTE5MywxNSArMjIxLDE1 IEBAIHN0YXRpYyBpbnQKKyBzc2hfZ3NzYXBpX2tyYjVfdXNlcm9rKHNzaF9nc3NhcGlfY2xpZW50 ICpjbGllbnQsIGNoYXIgKm5hbWUpCisgeworIAlrcmI1X3ByaW5jaXBhbCBwcmluYzsKKy0JaW50 IHJldHZhbDsKKysJaW50IHJldHZhbCwgbWF0Y2hlZCwgc3VjY2VzczsKKyAJY29uc3QgY2hhciAq ZXJybXNnOworIAlpbnQgazVsb2dpbl9leGlzdHM7CisgCisgCWlmIChzc2hfZ3NzYXBpX2tyYjVf aW5pdCgpID09IDApCisgCQlyZXR1cm4gMDsKKyAKKy0JaWYgKChyZXR2YWwgPSBrcmI1X3BhcnNl X25hbWUoa3JiX2NvbnRleHQsIGNsaWVudC0+ZXhwb3J0ZWRuYW1lLnZhbHVlLAorLQkgICAgJnBy aW5jKSkpIHsKKysJcmV0dmFsID0ga3JiNV9wYXJzZV9uYW1lKGtyYl9jb250ZXh0LCBjbGllbnQt PmV4cG9ydGVkbmFtZS52YWx1ZSwgJnByaW5jKTsKKysJaWYgKHJldHZhbCkgeworIAkJZXJybXNn ID0ga3JiNV9nZXRfZXJyb3JfbWVzc2FnZShrcmJfY29udGV4dCwgcmV0dmFsKTsKKyAJCWxvZ2l0 KCJrcmI1X3BhcnNlX25hbWUoKTogJS4xMDBzIiwgZXJybXNnKTsKKyAJCWtyYjVfZnJlZV9lcnJv cl9tZXNzYWdlKGtyYl9jb250ZXh0LCBlcnJtc2cpOworQEAgLTIxNiwxNyArMjQ0LDYwIEBAIHNz aF9nc3NhcGlfa3JiNV91c2Vyb2soc3NoX2dzc2FwaV9jbGllbnQgKmNsaWVudCwgY2hhciAqbmFt ZSkKKyAJaWYgKGs1bG9naW5fZXhpc3RzICYmCisgCSAgICBzc2hfa3JiNV9rdXNlcm9rKGtyYl9j b250ZXh0LCBwcmluYywgbmFtZSwgazVsb2dpbl9leGlzdHMpKSB7CisgCQlyZXR2YWwgPSAxOwor LQkJbG9naXQoIkF1dGhvcml6ZWQgdG8gJXMsIGtyYjUgcHJpbmNpcGFsICVzIChrcmI1X2t1c2Vy b2spIiwKKy0JCSAgICBuYW1lLCAoY2hhciAqKWNsaWVudC0+ZGlzcGxheW5hbWUudmFsdWUpOwor KwkJZXJybXNnID0gImtyYjVfa3VzZXJvayI7CisgCX0gZWxzZSBpZiAoc3NoX2dzc2FwaV9rcmI1 X2NtZG9rKHByaW5jLCBjbGllbnQtPmV4cG9ydGVkbmFtZS52YWx1ZSwKKyAJCW5hbWUsIGs1bG9n aW5fZXhpc3RzKSkgeworIAkJcmV0dmFsID0gMTsKKy0JCWxvZ2l0KCJBdXRob3JpemVkIHRvICVz LCBrcmI1IHByaW5jaXBhbCAlcyAiCistCQkgICAgIihzc2hfZ3NzYXBpX2tyYjVfY21kb2spIiwK Ky0JCSAgICBuYW1lLCAoY2hhciAqKWNsaWVudC0+ZGlzcGxheW5hbWUudmFsdWUpOworLQl9IGVs c2UKKysJCWVycm1zZyA9ICJzc2hfZ3NzYXBpX2tyYjVfY21kb2siOworKwl9IGVsc2UgeworIAkJ cmV0dmFsID0gMDsKKysJCWdvdG8gb3V0OworKwl9CisgCisrCS8qIEF0IHRoaXMgcG9pbnQgd2Ug YXJlIGdvb2QgaWYgbm8gaW5kaWNhdG9ycyB3ZXJlIGRlZmluZWQgKi8KKysJaWYgKG9wdGlvbnMu Z3NzX2luZGljYXRvcnMgPT0gTlVMTCkgeworKwkJcmV0dmFsID0gMTsKKysJCWdvdG8gb3V0Owor Kwl9CisrCisrCS8qIEF0IHRoaXMgcG9pbnQgd2UgaGF2ZSBpbmRpY2F0b3JzIGRlZmluZWQgaW4g dGhlIGNvbmZpZ3VyYXRpb24sCisrCSAqIGlmIGNsaWVudHQgZGlkIG5vdCBwcm92aWRlIGFueSBp bmRpY2F0b3JzLCB3ZSByZWplY3QgKi8KKysJaWYgKCFjbGllbnQtPmluZGljYXRvcnMpIHsKKysJ CXJldHZhbCA9IDA7CisrCQlsb2dpdCgiR1NTQVBJIGF1dGhlbnRpY2F0aW9uIGluZGljYXRvcnMg ZW5mb3JjZWQgIgorKwkJICAgICAgImJ1dCBpbmRpY2F0b3JzIG5vdCBwcm92aWRlZCBieSB0aGUg Y2xpZW50LiAiCisrCQkgICAgICAia3JiNSBwcmluY2lwYWwgJXMgZGVuaWVkIiwKKysJCSAgICAg IChjaGFyICopY2xpZW50LT5kaXNwbGF5bmFtZS52YWx1ZSk7CisrCQlnb3RvIG91dDsKKysJfQor KworKwkvKiBBdCB0aGlzIHBvaW50IHRoZSBjb25maWd1cmF0aW9uIGVuZm9yY2VzIHByZXNlbmNl IG9mIGluZGljYXRvcnMKKysJICogY2hlY2sgdGhlIG1hdGNoICovCisrCW1hdGNoZWQgPSAtMTsK KysJc3VjY2VzcyA9IHNzaF9nc3NhcGlfY2hlY2tfaW5kaWNhdG9ycyhjbGllbnQsICZtYXRjaGVk KTsKKysKKysJc3dpdGNoIChzdWNjZXNzKSB7CisrCWNhc2UgMToKKysJCWxvZ2l0KCJQcm92aWRl ZCBpbmRpY2F0b3IgJXMgYWxsb3dlZCBieSB0aGUgY29uZmlndXJhdGlvbiIsCisrCQkgICAgICBj bGllbnQtPmluZGljYXRvcnNbbWF0Y2hlZF0pOworKwkJcmV0dmFsID0gMTsKKysJCWJyZWFrOwor KwljYXNlIC0xOgorKwkJbG9naXQoIlByb3ZpZGVkIGluZGljYXRvciAlcyByZWplY3RlZCBieSB0 aGUgY29uZmlndXJhdGlvbiIsCisrCQkgICAgICBjbGllbnQtPmluZGljYXRvcnNbbWF0Y2hlZF0p OworKwkJcmV0dmFsID0gMDsKKysJCWJyZWFrOworKwlkZWZhdWx0OgorKwkJbG9naXQoIlByb3Zp ZGVkIGluZGljYXRvcnMgZG8gbm90IG1hdGNoIHRoZSBjb25maWd1cmF0aW9uIik7CisrCQlyZXR2 YWwgPSAwOworKwkJYnJlYWs7CisrCX0KKysKKytvdXQ6CisrCWlmIChyZXR2YWwgPT0gMSkgewor KwkJbG9naXQoIkF1dGhvcml6ZWQgdG8gJXMsIGtyYjUgcHJpbmNpcGFsICVzICglcykiLAorKwkJ ICAgICAgbmFtZSwgKGNoYXIgKiljbGllbnQtPmRpc3BsYXluYW1lLnZhbHVlLCBlcnJtc2cpOwor Kwl9CisgCWtyYjVfZnJlZV9wcmluY2lwYWwoa3JiX2NvbnRleHQsIHByaW5jKTsKKyAJcmV0dXJu IHJldHZhbDsKKyB9CitkaWZmIC0tZ2l0IGEvZ3NzLXNlcnYuYyBiL2dzcy1zZXJ2LmMKK2luZGV4 IDZlYjdkMjE2My4uMjM3YTNjNDBhIDEwMDY0NAorLS0tIGEvZ3NzLXNlcnYuYworKysrIGIvZ3Nz LXNlcnYuYworQEAgLTU1LDcgKzU1LDcgQEAgZXh0ZXJuIFNlcnZlck9wdGlvbnMgb3B0aW9uczsK KyAKKyBzdGF0aWMgc3NoX2dzc2FwaV9jbGllbnQgZ3NzYXBpX2NsaWVudCA9CisgICAgIHsgR1NT X0NfRU1QVFlfQlVGRkVSLCBHU1NfQ19FTVBUWV9CVUZGRVIsIEdTU19DX05PX0NSRURFTlRJQUws CistICAgIEdTU19DX05PX05BTUUsIE5VTEwsIHtOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwgMCwgMH07CisrICAgIEdTU19DX05PX05BTUUsIE5VTEwsIHtOVUxMLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwgMCwgMCwgTlVMTH07CisgCisgc3NoX2dzc2FwaV9tZWNoIGdzc2FwaV9udWxs X21lY2ggPQorICAgICB7IE5VTEwsIE5VTEwsIHswLCBOVUxMfSwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH07CitAQCAtMjk3LDYgKzI5Nyw5OSBAQCBzc2hfZ3NzYXBpX3BhcnNlX2VuYW1l KEdzc2N0eHQgKmN0eCwgZ3NzX2J1ZmZlcl90IGVuYW1lLCBnc3NfYnVmZmVyX3QgbmFtZSkKKyAJ cmV0dXJuIEdTU19TX0NPTVBMRVRFOworIH0KKyAKKysKKysvKiBFeHRyYWN0IGF1dGhlbnRpY2F0 aW9uIGluZGljYXRvcnMgZnJvbSB0aGUgS2VyYmVyb3MgdGlja2V0LiBBdXRoZW50aWNhdGlvbgor KyAqIGluZGljYXRvcnMgYXJlIEdTU0FQSSBuYW1lIGF0dHJpYnV0ZXMgZm9yIHRoZSBuYW1lICJh dXRoLWluZGljYXRvcnMiLgorKyAqIE11bHRpcGxlIGluZGljYXRvcnMgbWlnaHQgYmUgcHJlc2Vu dCBpbiB0aGUgdGlja2V0LgorKyAqIEVhY2ggaW5kaWNhdG9yIGlzIGFuIHV0Zjggc3RyaW5nLiAq LworKworKyNkZWZpbmUgQVVUSF9JTkRJQ0FUT1JTX1RBRyAiYXV0aC1pbmRpY2F0b3JzIgorKyNk ZWZpbmUgU1NIX0dTU0FQSV9NQVhfSU5ESUNBVE9SUyA2NAorKworKy8qIFByaXZpbGVnZWQgKGNh bGxlZCBmcm9tIGFjY2VwdF9zZWN1cmVfY3R4KSAqLworK3N0YXRpYyBPTV91aW50MzIKKytzc2hf Z3NzYXBpX2dldGluZGljYXRvcnMoR3NzY3R4dCAqY3R4LCBnc3NfbmFtZV90IGdzc19uYW1lLCBz c2hfZ3NzYXBpX2NsaWVudCAqY2xpZW50KQorK3sKKysJZ3NzX2J1ZmZlcl9zZXRfdCBhdHRycyA9 IEdTU19DX05PX0JVRkZFUl9TRVQ7CisrCWdzc19idWZmZXJfZGVzYyB2YWx1ZSA9IEdTU19DX0VN UFRZX0JVRkZFUjsKKysJZ3NzX2J1ZmZlcl9kZXNjIGRpc3BsYXlfdmFsdWUgPSBHU1NfQ19FTVBU WV9CVUZGRVI7CisrCWludCBpc19tZWNobmFtZSwgYXV0aGVudGljYXRlZCwgY29tcGxldGUsIG1v cmU7CisrCXNpemVfdCBjb3VudCwgaTsKKysKKysJLyogYWx3YXlzIGluaXRpYWxpemUgY2xpZW50 LT5pbmRpY2F0b3JzICovCisrCWNsaWVudC0+aW5kaWNhdG9ycyA9IE5VTEw7CisrCisrCWN0eC0+ bWFqb3IgPSBnc3NfaW5xdWlyZV9uYW1lKCZjdHgtPm1pbm9yLCBnc3NfbmFtZSwKKysJCQkJICAg ICAgJmlzX21lY2huYW1lLCBOVUxMLCAmYXR0cnMpOworKwlpZiAoY3R4LT5tYWpvciAhPSBHU1Nf U19DT01QTEVURSkKKysJCXJldHVybiBjdHgtPm1ham9yOworKworKwlpZiAoYXR0cnMgPT0gR1NT X0NfTk9fQlVGRkVSX1NFVCkgeworKwkJLyogbm8gaW5kaWNhdG9ycyBpbiB0aGUgdGlja2V0ICov CisrCQlyZXR1cm4gR1NTX1NfQ09NUExFVEU7CisrCX0KKysKKysJLyogY2xpZW50LT5pbmRpY2F0 b3JzIGlzIE5VTEwgdGVybWluYXRlZCAqLworKwljb3VudCA9IDA7CisrCWNsaWVudC0+aW5kaWNh dG9ycyA9IHhjYWxsb2MoY291bnQgKyAxLCBzaXplb2YoY2hhciAqKSk7CisrCisrCWZvciAoaSA9 IDA7IGkgPCBhdHRycy0+Y291bnQ7IGkrKykgeworKwkJYXV0aGVudGljYXRlZCA9IDA7CisrCQlj b21wbGV0ZSA9IDA7CisrCQltb3JlID0gLTE7CisrCisrCQkvKiBza2lwIGFueXRoaW5nIGJ1dCBh dXRoLWluZGljYXRvcnMgKi8KKysJCWlmICgoKHNpemVvZihBVVRIX0lORElDQVRPUlNfVEFHKSAt IDEpICE9IGF0dHJzLT5lbGVtZW50c1tpXS5sZW5ndGgpIHx8CisrCQkgICAgbWVtY21wKEFVVEhf SU5ESUNBVE9SU19UQUcsIGF0dHJzLT5lbGVtZW50c1tpXS52YWx1ZSwKKysJCQkgICBzaXplb2Yo QVVUSF9JTkRJQ0FUT1JTX1RBRykgLSAxKSAhPSAwKQorKwkJCWNvbnRpbnVlOworKworKwkJLyog cmV0cmlldmUgYWxsIGluZGljYXRvcnMgKi8KKysJCXdoaWxlIChtb3JlICE9IDApIHsKKysJCQl2 YWx1ZS52YWx1ZSA9IE5VTEw7CisrCQkJZGlzcGxheV92YWx1ZS52YWx1ZSA9IE5VTEw7CisrCisr CQkJY3R4LT5tYWpvciA9IGdzc19nZXRfbmFtZV9hdHRyaWJ1dGUoJmN0eC0+bWlub3IsIGdzc19u YW1lLAorKwkJCQkJCQkgICAgJmF0dHJzLT5lbGVtZW50c1tpXSwKKysJCQkJCQkJICAgICZhdXRo ZW50aWNhdGVkLCAmY29tcGxldGUsCisrCQkJCQkJCSAgICAmdmFsdWUsICZkaXNwbGF5X3ZhbHVl LCAmbW9yZSk7CisrCQkJaWYgKGN0eC0+bWFqb3IgIT0gR1NTX1NfQ09NUExFVEUpCisrCQkJCWdv dG8gb3V0OworKworKwkJCWlmICh2YWx1ZS52YWx1ZSA9PSBOVUxMIHx8ICFhdXRoZW50aWNhdGVk KQorKwkJCQljb250aW51ZTsKKysKKysJCQlpZiAoY291bnQgPj0gU1NIX0dTU0FQSV9NQVhfSU5E SUNBVE9SUykgeworKwkJCQlsb2dpdCgic3NoX2dzc2FwaV9nZXRpbmRpY2F0b3JzOiIKKysJCQkJ ICAgICAgIiB0b28gbWFueSBpbmRpY2F0b3JzLCB0cnVuY2F0aW5nIGF0ICVkIiwKKysJCQkJICAg ICAgU1NIX0dTU0FQSV9NQVhfSU5ESUNBVE9SUyk7CisrCQkJCWdvdG8gb3V0OworKwkJCX0KKysK KysJCQljbGllbnQtPmluZGljYXRvcnNbY291bnRdID0geG1hbGxvYyh2YWx1ZS5sZW5ndGggKyAx KTsKKysJCQltZW1jcHkoY2xpZW50LT5pbmRpY2F0b3JzW2NvdW50XSwgdmFsdWUudmFsdWUsIHZh bHVlLmxlbmd0aCk7CisrCQkJY2xpZW50LT5pbmRpY2F0b3JzW2NvdW50XVt2YWx1ZS5sZW5ndGhd ID0gJ1wwJzsKKysJCQljb3VudCsrOworKworKwkJCS8qIGFkZCBOVUxMIHRlcm1pbmF0b3IgKi8K KysJCQljbGllbnQtPmluZGljYXRvcnMgPSB4cmVjYWxsb2NhcnJheShjbGllbnQtPmluZGljYXRv cnMsIGNvdW50LAorKwkJCQkJCQkgICAgY291bnQgKyAxLCBzaXplb2YoY2hhciAqKSk7CisrCQl9 CisrCX0KKysKKytvdXQ6CisrCWlmIChjdHgtPm1ham9yICE9IEdTU19TX0NPTVBMRVRFICYmIGNs aWVudC0+aW5kaWNhdG9ycyAhPSBOVUxMKSB7CisrCQlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkr KykKKysJCQlmcmVlKGNsaWVudC0+aW5kaWNhdG9yc1tpXSk7CisrCQlmcmVlKGNsaWVudC0+aW5k aWNhdG9ycyk7CisrCQljbGllbnQtPmluZGljYXRvcnMgPSBOVUxMOworKwl9CisrCWdzc19yZWxl YXNlX2J1ZmZlcigmY3R4LT5taW5vciwgJnZhbHVlKTsKKysJZ3NzX3JlbGVhc2VfYnVmZmVyKCZj dHgtPm1pbm9yLCAmZGlzcGxheV92YWx1ZSk7CisrCWdzc19yZWxlYXNlX2J1ZmZlcl9zZXQoJmN0 eC0+bWlub3IsICZhdHRycyk7CisrCXJldHVybiBjdHgtPm1ham9yOworK30KKysKKyAvKiBFeHRy YWN0IHRoZSBjbGllbnQgZGV0YWlscyBmcm9tIGEgZ2l2ZW4gY29udGV4dC4gVGhpcyBjYW4gb25s eSByZWxpYWJseQorICAqIGJlIGNhbGxlZCBvbmNlIGZvciBhIGNvbnRleHQgKi8KKyAKK0BAIC0z ODYsNiArNDc5LDEyIEBAIHNzaF9nc3NhcGlfZ2V0Y2xpZW50KEdzc2N0eHQgKmN0eCwgc3NoX2dz c2FwaV9jbGllbnQgKmNsaWVudCkKKyAJfQorIAorIAlnc3NfcmVsZWFzZV9idWZmZXIoJmN0eC0+ bWlub3IsICZlbmFtZSk7CisrCS8qIFJldHJpZXZlIGF1dGhlbnRpY2F0aW9uIGluZGljYXRvcnMs IGlmIHRoZXkgZXhpc3QgKi8KKysJaWYgKChjdHgtPm1ham9yID0gc3NoX2dzc2FwaV9nZXRpbmRp Y2F0b3JzKGN0eCwKKysJICAgIGN0eC0+Y2xpZW50LCBjbGllbnQpKSkgeworKwkJc3NoX2dzc2Fw aV9lcnJvcihjdHgpOworKwkJcmV0dXJuIChjdHgtPm1ham9yKTsKKysJfQorIAorIAkvKiBXZSBj YW4ndCBjb3B5IHRoaXMgc3RydWN0dXJlLCBzbyB3ZSBqdXN0IG1vdmUgdGhlIHBvaW50ZXIgdG8g aXQgKi8KKyAJY2xpZW50LT5jcmVkcyA9IGN0eC0+Y2xpZW50X2NyZWRzOworQEAgLTQ1Myw2ICs1 NTIsNyBAQCBpbnQKKyBzc2hfZ3NzYXBpX3VzZXJvayhjaGFyICp1c2VyLCBzdHJ1Y3QgcGFzc3dk ICpwdywgaW50IGtleCkKKyB7CisgCU9NX3VpbnQzMiBsbWluOworKwlzaXplX3QgaTsKKyAKKyAJ KHZvaWQpIGtleDsgLyogdXNlZCBpbiBwcml2aWxlZ2Ugc2VwYXJhdGlvbiAqLworIAorQEAgLTQ3 MSw4ICs1NzEsMTQgQEAgc3NoX2dzc2FwaV91c2Vyb2soY2hhciAqdXNlciwgc3RydWN0IHBhc3N3 ZCAqcHcsIGludCBrZXgpCisgCQkJZ3NzX3JlbGVhc2VfYnVmZmVyKCZsbWluLCAmZ3NzYXBpX2Ns aWVudC5kaXNwbGF5bmFtZSk7CisgCQkJZ3NzX3JlbGVhc2VfYnVmZmVyKCZsbWluLCAmZ3NzYXBp X2NsaWVudC5leHBvcnRlZG5hbWUpOworIAkJCWdzc19yZWxlYXNlX2NyZWQoJmxtaW4sICZnc3Nh cGlfY2xpZW50LmNyZWRzKTsKKy0JCQlleHBsaWNpdF9iemVybygmZ3NzYXBpX2NsaWVudCwKKy0J CQkgICAgc2l6ZW9mKHNzaF9nc3NhcGlfY2xpZW50KSk7CisrCisrCQkJaWYgKGdzc2FwaV9jbGll bnQuaW5kaWNhdG9ycyAhPSBOVUxMKSB7CisrCQkJCWZvciAoaSA9IDA7IGdzc2FwaV9jbGllbnQu aW5kaWNhdG9yc1tpXSAhPSBOVUxMOyBpKyspCisrCQkJCQlmcmVlKGdzc2FwaV9jbGllbnQuaW5k aWNhdG9yc1tpXSk7CisrCQkJCWZyZWUoZ3NzYXBpX2NsaWVudC5pbmRpY2F0b3JzKTsKKysJCQl9 CisrCisrCQkJZXhwbGljaXRfYnplcm8oJmdzc2FwaV9jbGllbnQsIHNpemVvZihzc2hfZ3NzYXBp X2NsaWVudCkpOworIAkJCXJldHVybiAwOworIAkJfQorIAllbHNlCitkaWZmIC0tZ2l0IGEvc2Vy dmNvbmYuYyBiL3NlcnZjb25mLmMKK2luZGV4IGJlZTc1ZDQ4Ni4uOTBjNTgzOWEyIDEwMDY0NAor LS0tIGEvc2VydmNvbmYuYworKysrIGIvc2VydmNvbmYuYworQEAgLTQ1OCw2ICs0NTgsNyBAQCBm aWxsX2RlZmF1bHRfc2VydmVyX29wdGlvbnMoU2VydmVyT3B0aW9ucyAqb3B0aW9ucykKKyAJQ0xF QVJfT05fTk9ORShvcHRpb25zLT5yb3V0aW5nX2RvbWFpbik7CisgCUNMRUFSX09OX05PTkUob3B0 aW9ucy0+aG9zdF9rZXlfYWdlbnQpOworIAlDTEVBUl9PTl9OT05FKG9wdGlvbnMtPnBlcl9zb3Vy Y2VfcGVuYWx0eV9leGVtcHQpOworKwlDTEVBUl9PTl9OT05FKG9wdGlvbnMtPmdzc19pbmRpY2F0 b3JzKTsKKyAKKyAJZm9yIChpID0gMDsgaSA8IG9wdGlvbnMtPm51bV9ob3N0X2tleV9maWxlczsg aSsrKQorIAkJQ0xFQVJfT05fTk9ORShvcHRpb25zLT5ob3N0X2tleV9maWxlc1tpXSk7CitAQCAt MTQ5MCw2ICsxNDkxLDE1IEBAIHByb2Nlc3Nfc2VydmVyX2NvbmZpZ19saW5lX2RlcHRoKFNlcnZl ck9wdGlvbnMgKm9wdGlvbnMsIGNoYXIgKmxpbmUsCisgCQlpZiAoKmFjdGl2ZXAgJiYgb3B0aW9u cy0+Z3NzX2tleF9hbGdvcml0aG1zID09IE5VTEwpCisgCQkJb3B0aW9ucy0+Z3NzX2tleF9hbGdv cml0aG1zID0geHN0cmR1cChhcmcpOworIAkJYnJlYWs7CisrCisrCWNhc2Ugc0dTU0FQSUluZGlj YXRvcnM6CisrCQlhcmcgPSBhcmd2X25leHQoJmFjLCAmYXYpOworKwkJaWYgKCFhcmcgfHwgKmFy ZyA9PSAnXDAnKQorKwkJCWZhdGFsKCIlcyBsaW5lICVkOiAlcyBtaXNzaW5nIGFyZ3VtZW50LiIs CisrCQkJICAgIGZpbGVuYW1lLCBsaW5lbnVtLCBrZXl3b3JkKTsKKysJCWlmIChvcHRpb25zLT5n c3NfaW5kaWNhdG9ycyA9PSBOVUxMKQorKwkJCW9wdGlvbnMtPmdzc19pbmRpY2F0b3JzID0geHN0 cmR1cChhcmcpOworKwkJYnJlYWs7CisgI2VuZGlmIC8qIEdTU0FQSSAqLworIAorIAljYXNlIHNQ YXNzd29yZEF1dGhlbnRpY2F0aW9uOgorQEAgLTQyNzUsNiArNDI4NSw3IEBAIGR1bXBfY29uZmln KFNlcnZlck9wdGlvbnMgKm8pCisgCWR1bXBfY2ZnX2ZtdGludChzR1NTQVBJU3RyaWN0QWNjZXB0 b3JDaGVjaywgby0+Z3NzX3N0cmljdF9hY2NlcHRvcik7CisgCWR1bXBfY2ZnX2ZtdGludChzR1NT QVBJU3RvcmVDcmVkZW50aWFsc09uUmVrZXksIG8tPmdzc19zdG9yZV9yZWtleSk7CisgCWR1bXBf Y2ZnX3N0cmluZyhzR1NTQVBJS2V4QWxnb3JpdGhtcywgby0+Z3NzX2tleF9hbGdvcml0aG1zKTsK KysJZHVtcF9jZmdfc3RyaW5nKHNHU1NBUElJbmRpY2F0b3JzLCBvLT5nc3NfaW5kaWNhdG9ycyk7 CisgI2VuZGlmCisgCWR1bXBfY2ZnX2ZtdGludChzUGFzc3dvcmRBdXRoZW50aWNhdGlvbiwgby0+ cGFzc3dvcmRfYXV0aGVudGljYXRpb24pOworIAlkdW1wX2NmZ19mbXRpbnQoc0tiZEludGVyYWN0 aXZlQXV0aGVudGljYXRpb24sCitkaWZmIC0tZ2l0IGEvc2VydmNvbmYuaCBiL3NlcnZjb25mLmgK K2luZGV4IDdlODA5Y2ZmZi4uYThlOTBlNWE5IDEwMDY0NAorLS0tIGEvc2VydmNvbmYuaAorKysr IGIvc2VydmNvbmYuaAorQEAgLTMyNiw3ICszMjYsOCBAQCBTU0hDT05GX0lOVEZMQUcoZ3NzX3N0 cmljdF9hY2NlcHRvciwgR1NTQVBJU3RyaWN0QWNjZXB0b3JDaGVjaywgU1NIQ0ZHX0dMT0JBTCwg MQorIFNTSENPTkZfSU5URkxBRyhnc3Nfa2V5ZXgsIEdTU0FQSUtleUV4Y2hhbmdlLCBTU0hDRkdf R0xPQkFMLCAwLCBTU0hDRkdfQ09QWV9OT05FKSBcCisgU1NIQ09ORl9JTlRGTEFHKGdzc19zdG9y ZV9yZWtleSwgR1NTQVBJU3RvcmVDcmVkZW50aWFsc09uUmVrZXksIFNTSENGR19HTE9CQUwsIDAs IFNTSENGR19DT1BZX05PTkUpIFwKKyBTU0hDT05GX1NUUklORyhnc3Nfa2V4X2FsZ29yaXRobXMs IEdTU0FQSUtleEFsZ29yaXRobXMsIFNTSENGR19HTE9CQUwsIFNTSENGR19DT1BZX05PTkUpIFwK Ky1TU0hDT05GX0lOVEZMQUcoZW5hYmxlX2s1dXNlcnMsIEdTU0FQSUVuYWJsZWs1dXNlcnMsIFNT SENGR19BTEwsIDAsIFNTSENGR19DT1BZX01BVENIKQorK1NTSENPTkZfSU5URkxBRyhlbmFibGVf azV1c2VycywgR1NTQVBJRW5hYmxlazV1c2VycywgU1NIQ0ZHX0FMTCwgMCwgU1NIQ0ZHX0NPUFlf TUFUQ0gpIFwKKytTU0hDT05GX1NUUklORyhnc3NfaW5kaWNhdG9ycywgR1NTQVBJSW5kaWNhdG9y cywgU1NIQ0ZHX0FMTCwgU1NIQ0ZHX0NPUFlfTUFUQ0gpCisgI2Vsc2UgLyogR1NTQVBJICovCisg I2RlZmluZSBTU0hEX0NPTkZJR19FTlRSSUVTX0dTUyBcCisgU1NIQ09ORl9VTlNVUFBPUlRFRF9J TlQoZ3NzX2F1dGhlbnRpY2F0aW9uLCBHU1NBUElBdXRoZW50aWNhdGlvbiwgU1NIQ0ZHX0FMTCkg XAorQEAgLTMzNiw3ICszMzcsOCBAQCBTU0hDT05GX1VOU1VQUE9SVEVEX0lOVChnc3Nfc3RyaWN0 X2FjY2VwdG9yLCBHU1NBUElTdHJpY3RBY2NlcHRvckNoZWNrLCBTU0hDRkdfRworIFNTSENPTkZf VU5TVVBQT1JURURfSU5UKGdzc19rZXlleCwgR1NTQVBJS2V5RXhjaGFuZ2UsIFNTSENGR19HTE9C QUwpIFwKKyBTU0hDT05GX1VOU1VQUE9SVEVEX0lOVChnc3Nfc3RvcmVfcmVrZXksIEdTU0FQSVN0 b3JlQ3JlZGVudGlhbHNPblJla2V5LCBTU0hDRkdfR0xPQkFMKSBcCisgU1NIQ09ORl9VTlNVUFBP UlRFRF9TVFJJTkcoZ3NzX2tleF9hbGdvcml0aG1zLCBHU1NBUElLZXhBbGdvcml0aG1zLCBTU0hD RkdfR0xPQkFMKSBcCistU1NIQ09ORl9VTlNVUFBPUlRFRF9JTlQoZW5hYmxlX2s1dXNlcnMsIEdT U0FQSUVuYWJsZWs1dXNlcnMsIFNTSENGR19BTEwpCisrU1NIQ09ORl9VTlNVUFBPUlRFRF9JTlQo ZW5hYmxlX2s1dXNlcnMsIEdTU0FQSUVuYWJsZWs1dXNlcnMsIFNTSENGR19BTEwpIFwKKytTU0hD T05GX1VOU1VQUE9SVEVEX1NUUklORyhnc3NfaW5kaWNhdG9ycywgR1NTQVBJSW5kaWNhdG9ycywg U1NIQ0ZHX0FMTCkKKyAjZW5kaWYgLyogR1NTQVBJICovCisgCisgI2RlZmluZSBTU0hEX0NPTkZJ R19FTlRSSUVTIFwKK2RpZmYgLS1naXQgYS9zc2gtZ3NzLmggYi9zc2gtZ3NzLmgKK2luZGV4IDMy OWRjOWRhMC4uMTUwNjcxOWE5IDEwMDY0NAorLS0tIGEvc3NoLWdzcy5oCisrKysgYi9zc2gtZ3Nz LmgKK0BAIC0zNCw2ICszNCwxMiBAQAorICNpbmNsdWRlIDxnc3NhcGkvZ3NzYXBpLmg+CisgI2Vu ZGlmCisgCisrI2lmZGVmIEhBVkVfR1NTQVBJX0VYVF9ICisrI2luY2x1ZGUgPGdzc2FwaV9leHQu aD4KKysjZWxpZiBkZWZpbmVkKEhBVkVfR1NTQVBJX0dTU0FQSV9FWFRfSCkKKysjaW5jbHVkZSA8 Z3NzYXBpL2dzc2FwaV9leHQuaD4KKysjZW5kaWYKKysKKyAjaWZkZWYgS1JCNQorICMgaWZuZGVm IEhFSU1EQUwKKyAjICBpZmRlZiBIQVZFX0dTU0FQSV9HRU5FUklDX0gKK0BAIC0xMTIsNiArMTE4 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeworIAlzc2hfZ3NzYXBpX2NjYWNoZSBzdG9yZTsKKyAJaW50 IHVzZWQ7CisgCWludCB1cGRhdGVkOworKwljaGFyICoqaW5kaWNhdG9yczsgLyogYXV0aCBpbmRp Y2F0b3JzICovCisgfSBzc2hfZ3NzYXBpX2NsaWVudDsKKyAKKyB0eXBlZGVmIHN0cnVjdCBzc2hf Z3NzYXBpX21lY2hfc3RydWN0IHsKK2RpZmYgLS1naXQgYS9zc2hkX2NvbmZpZy41IGIvc3NoZF9j b25maWcuNQoraW5kZXggNTk5ODI3NWQyLi44ZmVkNThkNWMgMTAwNjQ0CistLS0gYS9zc2hkX2Nv bmZpZy41CisrKysgYi9zc2hkX2NvbmZpZy41CitAQCAtODExLDYgKzgxMSw1MiBAQCBUaGlzIG9w dGlvbiBvbmx5IGFwcGxpZXMgdG8gY29ubmVjdGlvbnMgdXNpbmcgR1NTQVBJLgorIC5QcAorIFRo ZSBsaXN0IG9mIHN1cHBvcnRlZCBrZXkgZXhjaGFuZ2UgYWxnb3JpdGhtcyBtYXkgYWxzbyBiZSBv YnRhaW5lZCB1c2luZworIC5RcSBzc2ggLVEgR1NTQVBJS2V4QWxnb3JpdGhtcyAuCisrLkl0IENt IEdTU0FQSUluZGljYXRvcnMKKytTcGVjaWZpZXMgd2hldGhlciB0byBhY2NlcHQgb3IgZGVueSBH U1NBUEkgYXV0aGVudGljYXRlZCBhY2Nlc3MgaWYgS2VyYmVyb3MKKyttZWNoYW5pc20gaXMgdXNl ZCBhbmQgS2VyYmVyb3MgdGlja2V0IGNvbnRhaW5zIGEgcGFydGljdWxhciBzZXQgb2YKKythdXRo ZW50aWNhdGlvbiBpbmRpY2F0b3JzLiBUaGUgdmFsdWVzIGNhbiBiZSBzcGVjaWZpZWQgYXMgYSBj b21tYS1zZXBhcmF0ZWQgbGlzdAorKy5DbSBbIV1uYW1lMSxbIV1uYW1lMiwuLi4gLgorK1doZW4g aW5kaWNhdG9yJ3MgbmFtZSBpcyBwcmVmaXhlZCB3aXRoICEsIHRoZSBhdXRoZW50aWNhdGlvbiBp bmRpY2F0b3IgJ25hbWUnCisrd2lsbCBkZW55IGFjY2VzcyB0byB0aGUgc3lzdGVtLiBPdGhlcndp c2UsIG9uZSBvZiBub24tbmVnYXRlZCBhdXRoZW50aWNhdGlvbgorK2luZGljYXRvcnMgbXVzdCBi ZSBwcmVzZW50IGluIHRoZSBLZXJiZXJvcyB0aWNrZXQgdG8gYWxsb3cgYWNjZXNzLiBJZgorKy5D bSBHU1NBUElJbmRpY2F0b3JzCisraXMgZGVmaW5lZCwgYSBLZXJiZXJvcyB0aWNrZXQgdGhhdCBo YXMgaW5kaWNhdG9ycyBidXQgZG9lcyBub3QgbWF0Y2ggdGhlCisrcG9saWN5IHdpbGwgZ2V0IGRl bmlhbC4gSWYgYXQgbGVhc3Qgb25lIGluZGljYXRvciBpcyBjb25maWd1cmVkLCB3aGV0aGVyIGZv cgorK2FjY2VzcyBvciBkZW5pYWwsIHRpY2tldHMgd2l0aG91dCBhdXRoZW50aWNhdGlvbiBpbmRp Y2F0b3JzIHdpbGwgYmUgZXhwbGljaXRseQorK3JlamVjdGVkLgorKy5QcAorK0J5IGRlZmF1bHQg c3lzdGVtcyB1c2luZyBNSVQgS2VyYmVyb3MgMS4xNyBvciBsYXRlciB3aWxsIG5vdCBhc3NpZ24g YW55CisraW5kaWNhdG9ycy4gU1BBS0UgYW5kIFBLSU5JVCBtZXRob2RzIGFkZCBhdXRoZW50aWNh dGlvbiBpbmRpY2F0b3JzCisrdG8gYWxsIHN1Y2Nlc3NmdWwgYXV0aGVudGljYXRpb25zLiBUaGUg U1BBS0UgcHJlLWF1dGhlbnRpY2F0aW9uIG1ldGhvZCBpcworK3ByZWZlcnJlZCBvdmVyIGFuIGVu Y3J5cHRlZCB0aW1lc3RhbXAgcHJlLWF1dGhlbnRpY2F0aW9uIHdoZW4gcGFzc3dvcmRzIHVzZWQg dG8KKythdXRoZW50aWNhdGUgdXNlciBwcmluY2lwYWxzLiBLZXJiZXJvcyBLRENzIGJ1aWx0IHdp dGggSGVpbWRhbCBLZXJiZXJvcworKyhpbmNsdWRpbmcgU2FtYmEgQUQgREMgYnVpbHQgd2l0aCBI ZWltZGFsKSBkbyBub3QgYWRkIGF1dGhlbnRpY2F0aW9uCisraW5kaWNhdG9ycy4gSG93ZXZlciwg T3BlblNTSCBidWlsdCBhZ2FpbnN0IEhlaW1kYWwgS2VyYmVyb3MgbGlicmFyeSBpcyBhYmxlIHRv CisraW5xdWlyZSBhdXRoZW50aWNhdGlvbiBpbmRpY2F0b3JzIGFuZCB0aHVzIGNhbiBiZSB1c2Vk IHRvIGNoZWNrIGZvciB0aGVpciBwcmVzZW5jZS4KKysuUHAKKytJbmRpY2F0b3IgbmFtZSBpcyBj YXNlLXNlbnNpdGl2ZSBhbmQgZGVwZW5kcyBvbiB0aGUgY29uZmlndXJhdGlvbiBvZiBhCisrcGFy dGljdWxhciBLZXJiZXJvcyBkZXBsb3ltZW50LiBJbmRpY2F0b3JzIGF2YWlsYWJsZSBpbiBNSVQg S2VyYmVyb3MgYW5kCisrRnJlZUlQQSBlbnZpcm9ubWVudHM6CisrLlBwCisrLkJsIC10YWcgLXdp ZHRoIFhYWFggLW9mZnNldCBpbmRlbnQgLWNvbXBhY3QKKysuSXQgQ20gaGFyZGVuZWQKKytTUEFL RSBvciBlbmNyeXB0ZWQgdGltZXN0YW1wIHByZS1hdXRoZW50aWNhdGlvbiBtZWNoYW5pc21zIGlu IE1JVCBLZXJiZXJvcyBhbmQgRnJlZUlQQQorKy5JdCBDbSBwa2luaXQKKytzbWFydGNhcmQgb3Ig UEtDUzExIHRva2VuLWJhc2VkIHByZS1hdXRoZW50aWNhdGlvbiBpbiBNSVQgS2VyYmVyb3MgYW5k IEZyZWVJUEEKKysuSXQgQ20gcmFkaXVzCisrcHJlLWF1dGhlbnRpY2F0aW9uIGJhc2VkIG9uIGEg UkFESVVTIHNlcnZlciBpbiBNSVQgS2VyYmVyb3MgYW5kIEZyZWVJUEEKKysuSXQgQ20gb3RwCisr VE9UUC9IT1RQLWJhc2VkIHR3by1mYWN0b3IgcHJlLWF1dGhlbnRpY2F0aW9uIGluIEZyZWVJUEEK KysuSXQgQ20gaWRwCisrT0F1dGgyLWJhc2VkIHByZS1hdXRoZW50aWNhdGlvbiBpbiBGcmVlSVBB IHVzaW5nIGFuIGV4dGVybmFsIGlkZW50aXR5IHByb3ZpZGVyCisrYW5kIGRldmljZSBhdXRob3Jp emF0aW9uIGdyYW50IGZsb3cKKysuSXQgQ20gcGFzc2tleQorK0ZJRE8yLWJhc2VkIHByZS1hdXRo ZW50aWNhdGlvbiBpbiBGcmVlSVBBLCB1c2luZyBGSURPMiBVU0IgYW5kIE5GQyB0b2tlbnMKKysu RWwKKysuUHAKKytUaGUgZGVmYXVsdAorKy5EcSBub25lCisraXMgdG8gbm90IHVzZSBHU1NBUEkg YXV0aGVudGljYXRpb24gaW5kaWNhdG9ycyBmb3IgYWNjZXNzIGRlY2lzaW9ucy4KKyAuSXQgQ20g SG9zdGJhc2VkQWNjZXB0ZWRBbGdvcml0aG1zCisgVGhlIGRlZmF1bHQgaXMgaGFuZGxlZCBzeXN0 ZW0td2lkZSBieQorIC5YciBjcnlwdG8tcG9saWNpZXMgNyAuCistLSAKKzIuNTUuMAorCgpkaWZm IC0tZ2l0IGEvMDA0Ny1OSVNULWN1cnZlcy1oeWJyaWQtS0VYLWltcGxlbWVudGF0aW9uLnBhdGNo IGIvMDA0Ny1OSVNULWN1cnZlcy1oeWJyaWQtS0VYLWltcGxlbWVudGF0aW9uLnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3ODNjMzUKLS0tIC9kZXYvbnVsbAorKysg Yi8wMDQ3LU5JU1QtY3VydmVzLWh5YnJpZC1LRVgtaW1wbGVtZW50YXRpb24ucGF0Y2gKQEAgLTAs MCArMSwxMzA3IEBACitGcm9tIDhiMmU3NDFhZGE2MTgzMzZmMDFjNThmNjE1MjRmOGQ0YjI4Y2Fj M2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEbWl0cnkgQmVseWF2c2tpeSA8YmVs ZG1pdEBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIwIE9jdCAyMDI1IDE2OjA3OjMxICswMjAwCitT dWJqZWN0OiBbUEFUQ0ggNDcvNTRdIE5JU1QgY3VydmVzIGh5YnJpZCBLRVggaW1wbGVtZW50YXRp b24KKworLS0tCisgY29tcGF0LmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjMgKy0KKyBj b21wYXQuaCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCisgY3J5cHRvX2FwaS5oICAg ICAgICAgICAgICAgICAgICAgfCAgIDUgKworIGtleC1uYW1lcy5jICAgICAgICAgICAgICAgICAg ICAgIHwgIDg5ICsrKy0KKyBrZXguYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSAr Cisga2V4LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTkgKworIGtleGdlbi5jICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDU2ICsrLQorIGtleG1sa2VtNzY4eDI1NTE5LmMgICAg ICAgICAgICAgIHwgNjgwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KKyBtb25pdG9y LmMgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCisgbXlwcm9wb3NhbC5oICAgICAgICAg ICAgICAgICAgICAgfCAgIDQgKworIHJlZ3Jlc3MvdW5pdHRlc3RzL2tleC90ZXN0X2tleC5jIHwg ICA0ICsKKyBzc2gta2V5c2Nhbi5jICAgICAgICAgICAgICAgICAgICB8ICAgMiArCisgc3NoX2Fw aS5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKworIHNzaGNvbm5lY3QyLmMgICAgICAg ICAgICAgICAgICAgIHwgICAyICsKKyBzc2hkLWF1dGguYyAgICAgICAgICAgICAgICAgICAgICB8 ICAgMiArCisgMTUgZmlsZXMgY2hhbmdlZCwgODUzIGluc2VydGlvbnMoKyksIDQxIGRlbGV0aW9u cygtKQorCitkaWZmIC0tZ2l0IGEvY29tcGF0LmMgYi9jb21wYXQuYworaW5kZXggNDMxMjUxMGU1 Li5lNmM3OTM1ZDQgMTAwNjQ0CistLS0gYS9jb21wYXQuYworKysrIGIvY29tcGF0LmMKK0BAIC0z Niw2ICszNiw3IEBACisgI2luY2x1ZGUgImNvbXBhdC5oIgorICNpbmNsdWRlICJsb2cuaCIKKyAj aW5jbHVkZSAibWF0Y2guaCIKKysjaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisgCisgLyogZGV0 ZXJtaW5lIGJ1ZyBmbGFncyBmcm9tIFNTSCBwcm90b2NvbCBiYW5uZXIgKi8KKyB2b2lkCitAQCAt MTQ4LDggKzE0OSw5IEBAIGNoYXIgKgorIGNvbXBhdF9rZXhfcHJvcG9zYWwoc3RydWN0IHNzaCAq c3NoLCBjb25zdCBjaGFyICpwKQorIHsKKyAJY2hhciAqY3AgPSBOVUxMLCAqY3AyID0gTlVMTDsK KysJaW50IG1sa2VtX2F2YWlsYWJsZSA9IGlzX21sa2VtNzY4X2F2YWlsYWJsZSgpOworIAorLQlp ZiAoKHNzaC0+Y29tcGF0ICYgKFNTSF9CVUdfQ1VSVkUyNTUxOVBBRHxTU0hfT0xEX0RIR0VYKSkg PT0gMCkKKysJaWYgKChzc2gtPmNvbXBhdCAmIChTU0hfQlVHX0NVUlZFMjU1MTlQQUR8U1NIX09M RF9ESEdFWCkpID09IDAgJiYgbWxrZW1fYXZhaWxhYmxlID09IDIpCisgCQlyZXR1cm4geHN0cmR1 cChwKTsKKyAJZGVidWcyX2YoIm9yaWdpbmFsIEtFWCBwcm9wb3NhbDogJXMiLCBwKTsKKyAJaWYg KChzc2gtPmNvbXBhdCAmIFNTSF9CVUdfQ1VSVkUyNTUxOVBBRCkgIT0gMCkKK0BAIC0xNjQsNiAr MTY2LDI1IEBAIGNvbXBhdF9rZXhfcHJvcG9zYWwoc3RydWN0IHNzaCAqc3NoLCBjb25zdCBjaGFy ICpwKQorIAkJZnJlZShjcCk7CisgCQljcCA9IGNwMjsKKyAJfQorKwlpZiAobWxrZW1fYXZhaWxh YmxlID09IDIpCisrCQlyZXR1cm4gY3AgPyBjcCA6IHhzdHJkdXAocCk7CisrCWlmIChtbGtlbV9h dmFpbGFibGUgPT0gMSAmJiBGSVBTX21vZGUoKSkgeworKwkJaWYgKChjcDIgPSBtYXRjaF9maWx0 ZXJfZGVueWxpc3QoY3AgPyBjcCA6IHAsCisrCQkgICAgIm1sa2VtNzY4eDI1NTE5LXNoYTI1NiIp KSA9PSBOVUxMKQorKwkJCWZhdGFsKCJtYXRjaF9maWx0ZXJfZGVueWxpc3QgZmFpbGVkIik7Cisr CQlmcmVlKGNwKTsKKysJCWNwID0gY3AyOworKwl9CisrCWlmIChtbGtlbV9hdmFpbGFibGUgPT0g MCkgeworKwkJaWYgKChjcDIgPSBtYXRjaF9maWx0ZXJfZGVueWxpc3QoY3AgPyBjcCA6IHAsCisr CQkgICAgIm1sa2VtNzY4eDI1NTE5LXNoYTI1NiwiCisrCQkgICAgIm1sa2VtNzY4bmlzdHAyNTYt c2hhMjU2LCIKKysJCSAgICAibWxrZW0xMDI0bmlzdHAzODQtc2hhMzg0IikpID09IE5VTEwpCisr CQkJZmF0YWwoIm1hdGNoX2ZpbHRlcl9kZW55bGlzdCBmYWlsZWQiKTsKKysJCWZyZWUoY3ApOwor KwkJY3AgPSBjcDI7CisrCX0KKysKKyAJaWYgKGNwID09IE5VTEwgfHwgKmNwID09ICdcMCcpCisg CQlmYXRhbCgiTm8gc3VwcG9ydGVkIGtleSBleGNoYW5nZSBhbGdvcml0aG1zIGZvdW5kIik7Cisg CWRlYnVnMl9mKCJjb21wYXQgS0VYIHByb3Bvc2FsOiAlcyIsIGNwKTsKK2RpZmYgLS1naXQgYS9j b21wYXQuaCBiL2NvbXBhdC5oCitpbmRleCAyZTZkYjViZjkuLmI3OGU1NWI2OSAxMDA2NDQKKy0t LSBhL2NvbXBhdC5oCisrKysgYi9jb21wYXQuaAorQEAgLTYyLDQgKzYyLDUgQEAgc3RydWN0IHNz aDsKKyAKKyB2b2lkICAgIGNvbXBhdF9iYW5uZXIoc3RydWN0IHNzaCAqLCBjb25zdCBjaGFyICop OworIGNoYXIJKmNvbXBhdF9rZXhfcHJvcG9zYWwoc3RydWN0IHNzaCAqLCBjb25zdCBjaGFyICop OworK2ludCBpc19tbGtlbTc2OF9hdmFpbGFibGUodm9pZCk7CisgI2VuZGlmCitkaWZmIC0tZ2l0 IGEvY3J5cHRvX2FwaS5oIGIvY3J5cHRvX2FwaS5oCitpbmRleCA5MDk1ZDgyOTIuLmY5MTU1NmIy ZCAxMDA2NDQKKy0tLSBhL2NyeXB0b19hcGkuaAorKysrIGIvY3J5cHRvX2FwaS5oCitAQCAtMjAz LDYgKzIwMywxMSBAQCBpbnQgY3J5cHRvX3NpZ25fbWxkc2E0NF9lZDI1NTE5X3ZlcmlmeShjb25z dCB1aW50OF90IHNpZ1tNTERTQTQ0X0VEMjU1MTlfU0lHX1NaXQorICAgICBjb25zdCB1aW50OF90 ICpjdHgsIHNpemVfdCBjdHhsZW4sCisgICAgIGNvbnN0IHVpbnQ4X3QgcGtbTUxEU0E0NF9FRDI1 NTE5X1BLX1NaXSk7CisgCisrLyogTUwtS0VNLTEwMjQgKi8KKysjZGVmaW5lIGNyeXB0b19rZW1f bWxrZW0xMDI0X1BVQkxJQ0tFWUJZVEVTIDE1NjgKKysjZGVmaW5lIGNyeXB0b19rZW1fbWxrZW0x MDI0X1NFQ1JFVEtFWUJZVEVTIDMxNjgKKysjZGVmaW5lIGNyeXB0b19rZW1fbWxrZW0xMDI0X0NJ UEhFUlRFWFRCWVRFUyAxNTY4CisrCisgLyogVXRpbGl0eSAqLworIHZvaWQgc2hhM18yNTYodWlu dDhfdCBkaWdlc3RbMzJdLCBjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3QgbGVuKTsKKyB2b2lk IHNoYTNfNTEyKHVpbnQ4X3QgZGlnZXN0WzY0XSwgY29uc3QgdWludDhfdCAqZGF0YSwgc2l6ZV90 IGxlbik7CitkaWZmIC0tZ2l0IGEva2V4LW5hbWVzLmMgYi9rZXgtbmFtZXMuYworaW5kZXggNmNj OGFiNDdjLi5hYTRhNWVhYWIgMTAwNjQ0CistLS0gYS9rZXgtbmFtZXMuYworKysrIGIva2V4LW5h bWVzLmMKK0BAIC0zNCw2ICszNCw3IEBACisgI2luY2x1ZGUgPG9wZW5zc2wvY3J5cHRvLmg+Cisg I2luY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgorICNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgorKyNp bmNsdWRlIDxvcGVuc3NsL2Vyci5oPgorICNlbmRpZgorIAorICNpbmNsdWRlICJrZXguaCIKK0BA IC05MCw2ICs5MSwxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGtleGFsZyBrZXhhbGdzW10gPSB7 CisgI2lmZGVmIFVTRV9NTEtFTTc2OFgyNTUxOQorIAl7IEtFWF9NTEtFTTc2OFgyNTUxOV9TSEEy NTYsIEtFWF9LRU1fTUxLRU03NjhYMjU1MTlfU0hBMjU2LCAwLAorIAkgICAgU1NIX0RJR0VTVF9T SEEyNTYsIEtFWF9JU19QUSB9LAorKwl7IEtFWF9NTEtFTTc2OE5JU1RQMjU2X1NIQTI1NiwgS0VY X0tFTV9NTEtFTTc2OE5JU1RQMjU2X1NIQTI1NiwgMCwKKysJICAgIFNTSF9ESUdFU1RfU0hBMjU2 LCBLRVhfSVNfUFEgfSwKKysJeyBLRVhfTUxLRU0xMDI0TklTVFAzODRfU0hBMzg0LCBLRVhfS0VN X01MS0VNMTAyNE5JU1RQMzg0X1NIQTM4NCwgMCwKKysJICAgIFNTSF9ESUdFU1RfU0hBMzg0LCBL RVhfSVNfUFEgfSwKKyAjZW5kaWYKKyAjZW5kaWYgLyogSEFWRV9FVlBfU0hBMjU2IHx8ICFXSVRI X09QRU5TU0wgKi8KKyAJeyBOVUxMLCAwLCAtMSwgLTEsIDAgfSwKK0BAIC0xMDgsMTQgKzExMywy NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGtleGFsZyBnc3Nfa2V4YWxnc1tdID0geworIAl7IE5V TEwsIDAsIC0xLCAtMSwgMH0sCisgfTsKKyAKKy1zdGF0aWMgaW50IGlzX21sa2VtNzY4X2F2YWls YWJsZSgpCisrLyoKKysgKiAwIC0gdW5hdmFpbGFibGUKKysgKiAxIC0gYXZhaWxhYmxlIGluIG5v bi1GSVBTIG1vZGUKKysgKiAyIC0gYXZhaWxhYmxlIGFsd2F5cworKyAqLworK2ludCBpc19tbGtl bTc2OF9hdmFpbGFibGUoKQorIHsKKyAJc3RhdGljIGludCBpc19mZXRjaGVkID0gLTE7CisgCisg CWlmIChpc19mZXRjaGVkID09IC0xKSB7CistCQlFVlBfS0VNICptbGtlbTc2OCA9IEVWUF9LRU1f ZmV0Y2goTlVMTCwgIm1sa2VtNzY4IiwgTlVMTCk7CistCQlpc19mZXRjaGVkID0gbWxrZW03Njgg IT0gTlVMTCA/IDEgOiAwOworKwkJRVZQX0tFTSAqbWxrZW03NjggPSBOVUxMOworKworKwkJRVJS X3NldF9tYXJrKCk7CisrCQltbGtlbTc2OCA9IEVWUF9LRU1fZmV0Y2goTlVMTCwgIm1sa2VtNzY4 IiwgTlVMTCk7CisrCQlpc19mZXRjaGVkID0gKG1sa2VtNzY4ID09IE5VTEwpID8gMCA6IDI7Cisr CQlpZiAoaXNfZmV0Y2hlZCA9PSAwICYmIEZJUFNfbW9kZSgpID09IDEpIHsKKysJCSAgICBtbGtl bTc2OCA9IEVWUF9LRU1fZmV0Y2goTlVMTCwgIm1sa2VtNzY4IiwgInByb3ZpZGVyPWRlZmF1bHQs LWZpcHMiKTsKKysJCSAgICBpc19mZXRjaGVkID0gKG1sa2VtNzY4ID09IE5VTEwpID8gMCA6IDE7 CisrCQl9CisgCQlFVlBfS0VNX2ZyZWUobWxrZW03NjgpOworKwkJRVJSX3BvcF90b19tYXJrKCk7 CisgCX0KKyAKKyAJcmV0dXJuIGlzX2ZldGNoZWQ7CitAQCAtMTI3LDExICsxNDUsMzIgQEAga2V4 X2FsZ19saXN0X2ludGVybmFsKGNoYXIgc2VwLCBjb25zdCBzdHJ1Y3Qga2V4YWxnICphbGdzKQor IAljaGFyICpyZXQgPSBOVUxMOworIAljb25zdCBzdHJ1Y3Qga2V4YWxnICprOworIAljaGFyIHNl cF9zdHJbMl0gPSB7c2VwLCAnXDAnfTsKKysJaW50IHgyNTUxOW1sa2VtX2F2YWlsYWJsZSA9IDAs IG5pc3RtbGtlbV9hdmFpbGFibGUgPSAwOworIAorLQlmb3IgKGsgPSBrZXhhbGdzOyBrLT5uYW1l ICE9IE5VTEw7IGsrKykgeworLQkJaWYgKHN0cmNtcChrLT5uYW1lLCBLRVhfTUxLRU03NjhYMjU1 MTlfU0hBMjU2KSA9PSAwCistCQkJJiYgIWlzX21sa2VtNzY4X2F2YWlsYWJsZSgpKQorKwkvKgor KwkgKiBGSVBTIHByb3ZpZGVyIGNhbiBwcm92aWRlIE1MLUtFTXMgYW5kIHRoZW4gYWxsIGh5YnJp ZHMgYXJlIGF2YWlsYWJsZQorKwkgKiBPdGhlcndpc2Ugb25seSBOSVNUIGh5YnJpZHMgYXJlIGF2 YWlsYWJsZQorKwkgKiAqLworKwlpZiAoRklQU19tb2RlKCkpIHsKKysJICAgIGlmIChpc19tbGtl bTc2OF9hdmFpbGFibGUoKSA9PSAyKSB7CisrCSAgICAgICAgeDI1NTE5bWxrZW1fYXZhaWxhYmxl ID0gMTsKKysJICAgICAgICBuaXN0bWxrZW1fYXZhaWxhYmxlID0gMTsKKysJICAgIH0gZWxzZSBp ZiAoaXNfbWxrZW03NjhfYXZhaWxhYmxlKCkgPT0gMSkgeworKwkgICAgICAgIG5pc3RtbGtlbV9h dmFpbGFibGUgPSAxOworKwkgICAgfQorKwl9IGVsc2UgeworKwkgICAgaWYgKGlzX21sa2VtNzY4 X2F2YWlsYWJsZSgpID4gMCkgeworKwkgICAgICAgIHgyNTUxOW1sa2VtX2F2YWlsYWJsZSA9IDE7 CisrCSAgICAgICAgbmlzdG1sa2VtX2F2YWlsYWJsZSA9IDE7CisrCSAgICB9CisrCX0KKysKKysJ Zm9yIChrID0gYWxnczsgay0+bmFtZSAhPSBOVUxMOyBrKyspIHsKKysJCWlmICggIChzdHJjbXAo ay0+bmFtZSwgS0VYX01MS0VNNzY4WDI1NTE5X1NIQTI1NikgPT0gMCAgICAmJiB4MjU1MTltbGtl bV9hdmFpbGFibGUgPT0gMCkKKysJCSAgIHx8IChzdHJjbXAoay0+bmFtZSwgS0VYX01MS0VNNzY4 TklTVFAyNTZfU0hBMjU2KSA9PSAwICAmJiBuaXN0bWxrZW1fYXZhaWxhYmxlID09IDApCisrCQkg ICB8fCAoc3RyY21wKGstPm5hbWUsIEtFWF9NTEtFTTEwMjROSVNUUDM4NF9TSEEzODQpID09IDAg JiYgbmlzdG1sa2VtX2F2YWlsYWJsZSA9PSAwKSkKKyAJCQljb250aW51ZTsKKysKKyAJCXhleHRl bmRmKCZyZXQsIHNlcF9zdHIsICIlcyIsIGstPm5hbWUpOworIAl9CisgCitAQCAtMTU0LDEwICsx OTMsMzAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBrZXhhbGcgKgorIGtleF9hbGdfYnlfbmFtZShj b25zdCBjaGFyICpuYW1lKQorIHsKKyAJY29uc3Qgc3RydWN0IGtleGFsZyAqazsKKysJaW50IHgy NTUxOW1sa2VtX2F2YWlsYWJsZSA9IDAsIG5pc3RtbGtlbV9hdmFpbGFibGUgPSAwOworIAorLQlp ZiAoc3RyY21wKG5hbWUsIEtFWF9NTEtFTTc2OFgyNTUxOV9TSEEyNTYpID09IDAKKy0JCSYmICFp c19tbGtlbTc2OF9hdmFpbGFibGUoKSkKKy0JcmV0dXJuIE5VTEw7CisrCS8qCisrCSAqIEZJUFMg cHJvdmlkZXIgY2FuIHByb3ZpZGUgTUwtS0VNcyBhbmQgdGhlbiBhbGwgaHlicmlkcyBhcmUgYXZh aWxhYmxlCisrCSAqIE90aGVyd2lzZSBvbmx5IE5JU1QgaHlicmlkcyBhcmUgYXZhaWxhYmxlCisr CSAqICovCisrCWlmIChGSVBTX21vZGUoKSkgeworKwkgICAgaWYgKGlzX21sa2VtNzY4X2F2YWls YWJsZSgpID09IDIpIHsKKysJICAgICAgICB4MjU1MTltbGtlbV9hdmFpbGFibGUgPSAxOworKwkg ICAgICAgIG5pc3RtbGtlbV9hdmFpbGFibGUgPSAxOworKwkgICAgfSBlbHNlIGlmIChpc19tbGtl bTc2OF9hdmFpbGFibGUoKSA9PSAxKSB7CisrCSAgICAgICAgbmlzdG1sa2VtX2F2YWlsYWJsZSA9 IDE7CisrCSAgICB9CisrCX0gZWxzZSB7CisrCSAgICBpZiAoaXNfbWxrZW03NjhfYXZhaWxhYmxl KCkgPiAwKSB7CisrCSAgICAgICAgeDI1NTE5bWxrZW1fYXZhaWxhYmxlID0gMTsKKysJICAgICAg ICBuaXN0bWxrZW1fYXZhaWxhYmxlID0gMTsKKysJICAgIH0KKysJfQorKworKwlpZiAoICAoc3Ry Y21wKG5hbWUsIEtFWF9NTEtFTTc2OFgyNTUxOV9TSEEyNTYpID09IDAgICAgJiYgeDI1NTE5bWxr ZW1fYXZhaWxhYmxlID09IDApCisrCSAgIHx8IChzdHJjbXAobmFtZSwgS0VYX01MS0VNNzY4TklT VFAyNTZfU0hBMjU2KSA9PSAwICAmJiBuaXN0bWxrZW1fYXZhaWxhYmxlID09IDApCisrCSAgIHx8 IChzdHJjbXAobmFtZSwgS0VYX01MS0VNMTAyNE5JU1RQMzg0X1NIQTM4NCkgPT0gMCAmJiBuaXN0 bWxrZW1fYXZhaWxhYmxlID09IDApKQorKwkgICByZXR1cm4gTlVMTDsKKyAKKyAJZm9yIChrID0g a2V4YWxnczsgay0+bmFtZSAhPSBOVUxMOyBrKyspIHsKKyAJCWlmIChzdHJjbXAoay0+bmFtZSwg bmFtZSkgPT0gMCkKK0BAIC0yMzUsOCArMjk0LDE2IEBAIGtleF9uYW1lc192YWxpZChjb25zdCBj aGFyICpuYW1lcykKKyAJCQlyZXR1cm4gMDsKKyAJCX0KKyAJCWlmIChrZXhfYWxnX2J5X25hbWUo cCkgPT0gTlVMTCkgeworLQkJCWlmIChGSVBTX21vZGUoKSkKKy0JCQkJZXJyb3IoIlwiJS4xMDBz XCIgaXMgbm90IGFsbG93ZWQgaW4gRklQUyBtb2RlIiwgcCk7CisrCQkJaWYgKEZJUFNfbW9kZSgp KSB7CisrCQkJCWlmICgoc3RyY21wKHAsIEtFWF9NTEtFTTc2OFgyNTUxOV9TSEEyNTYpID09IDAp CisrCQkJCSAgICB8fCAoc3RyY21wKHAsIEtFWF9NTEtFTTc2OE5JU1RQMjU2X1NIQTI1NikgPT0g MCkKKysJCQkJICAgIHx8IChzdHJjbXAocCwgS0VYX01MS0VNMTAyNE5JU1RQMzg0X1NIQTM4NCkg PT0gMCkpIHsKKysJCQkJCWRlYnVnKCJcIiUuMTAwc1wiIGlzIG5vdCBhbGxvd2VkIGluIEZJUFMg bW9kZSIsIHApOworKwkJCQkJY29udGludWU7CisrCQkJCX0KKysJCQkJZWxzZQorKwkJCQkJZXJy b3IoIlwiJS4xMDBzXCIgaXMgbm90IGFsbG93ZWQgaW4gRklQUyBtb2RlIiwgcCk7CisrCQkJfQor IAkJCWVsc2UKKyAJCQkJZXJyb3IoIlVuc3VwcG9ydGVkIEtFWCBhbGdvcml0aG0gXCIlLjEwMHNc IiIsIHApOworIAkJCWZyZWUocyk7CitkaWZmIC0tZ2l0IGEva2V4LmMgYi9rZXguYworaW5kZXgg YTUxZTI2Mzk4Li4xMzZiYTMxOGUgMTAwNjQ0CistLS0gYS9rZXguYworKysrIGIva2V4LmMKK0BA IC03NjIsNiArNzYyLDcgQEAga2V4X2ZyZWUoc3RydWN0IGtleCAqa2V4KQorICNpZmRlZiBPUEVO U1NMX0hBU19FQ0MKKyAJRUNfS0VZX2ZyZWUoa2V4LT5lY19jbGllbnRfa2V5KTsKKyAjZW5kaWYg LyogT1BFTlNTTF9IQVNfRUNDICovCisrCUVWUF9QS0VZX2ZyZWUoa2V4LT5lY19oeWJyaWRfY2xp ZW50X2tleSk7CisgI2VuZGlmIC8qIFdJVEhfT1BFTlNTTCAqLworIAlmb3IgKG1vZGUgPSAwOyBt b2RlIDwgTU9ERV9NQVg7IG1vZGUrKykgeworIAkJa2V4X2ZyZWVfbmV3a2V5cyhrZXgtPm5ld2tl eXNbbW9kZV0pOworZGlmZiAtLWdpdCBhL2tleC5oIGIva2V4LmgKK2luZGV4IGQyMmY2ZGViMy4u OWI1ZmUwNWM0IDEwMDY0NAorLS0tIGEva2V4LmgKKysrKyBiL2tleC5oCitAQCAtNzIsNiArNzIs OCBAQAorICNkZWZpbmUJS0VYX1NOVFJVUDc2MVgyNTUxOV9TSEE1MTIJInNudHJ1cDc2MXgyNTUx OS1zaGE1MTIiCisgI2RlZmluZQlLRVhfU05UUlVQNzYxWDI1NTE5X1NIQTUxMl9PTEQJInNudHJ1 cDc2MXgyNTUxOS1zaGE1MTJAb3BlbnNzaC5jb20iCisgI2RlZmluZQlLRVhfTUxLRU03NjhYMjU1 MTlfU0hBMjU2CSJtbGtlbTc2OHgyNTUxOS1zaGEyNTYiCisrI2RlZmluZQlLRVhfTUxLRU03NjhO SVNUUDI1Nl9TSEEyNTYgICAgICJtbGtlbTc2OG5pc3RwMjU2LXNoYTI1NiIKKysjZGVmaW5lCUtF WF9NTEtFTTEwMjROSVNUUDM4NF9TSEEzODQgICAgIm1sa2VtMTAyNG5pc3RwMzg0LXNoYTM4NCIK KyAKKyAjZGVmaW5lIENPTVBfTk9ORQkwCisgI2RlZmluZSBDT01QX0RFTEFZRUQJMgorQEAgLTEx MCw2ICsxMTIsOCBAQCBlbnVtIGtleF9leGNoYW5nZSB7CisgCUtFWF9DMjU1MTlfU0hBMjU2LAor IAlLRVhfS0VNX1NOVFJVUDc2MVgyNTUxOV9TSEE1MTIsCisgCUtFWF9LRU1fTUxLRU03NjhYMjU1 MTlfU0hBMjU2LAorKwlLRVhfS0VNX01MS0VNNzY4TklTVFAyNTZfU0hBMjU2LAorKwlLRVhfS0VN X01MS0VNMTAyNE5JU1RQMzg0X1NIQTM4NCwKKyAjaWZkZWYgR1NTQVBJCisgCUtFWF9HU1NfR1JQ MV9TSEExLAorIAlLRVhfR1NTX0dSUDE0X1NIQTEsCitAQCAtMjEyLDYgKzIxNiw5IEBAIHN0cnVj dCBrZXggeworIAl1X2NoYXIgc250cnVwNzYxX2NsaWVudF9rZXlbY3J5cHRvX2tlbV9zbnRydXA3 NjFfU0VDUkVUS0VZQllURVNdOyAvKiBLRU0gKi8KKyAJdV9jaGFyIG1sa2VtNzY4X2NsaWVudF9r ZXlbY3J5cHRvX2tlbV9tbGtlbTc2OF9TRUNSRVRLRVlCWVRFU107IC8qIEtFTSAqLworIAlzdHJ1 Y3Qgc3NoYnVmICpjbGllbnRfcHViOworKwkvKiBGSVhNRSAqLworKwlFVlBfUEtFWSAqZWNfaHli cmlkX2NsaWVudF9rZXk7IC8qIE5JU1QgaHlicmlkcyAqLworKwl1X2NoYXIgbWxrZW0xMDI0X2Ns aWVudF9rZXlbY3J5cHRvX2tlbV9tbGtlbTEwMjRfU0VDUkVUS0VZQllURVNdOyAvKiBNTC1LRU0g MTAyNCArIE5JU1QgKi8KKyB9OworIAorIGludAkga2V4X25hbWVfdmFsaWQoY29uc3QgY2hhciAq KTsKK0BAIC0yOTQsNiArMzAxLDE4IEBAIGludAkga2V4X2tlbV9tbGtlbTc2OHgyNTUxOV9lbmMo c3RydWN0IGtleCAqLCBjb25zdCBzdHJ1Y3Qgc3NoYnVmICosCisgaW50CSBrZXhfa2VtX21sa2Vt NzY4eDI1NTE5X2RlYyhzdHJ1Y3Qga2V4ICosIGNvbnN0IHN0cnVjdCBzc2hidWYgKiwKKyAgICAg c3RydWN0IHNzaGJ1ZiAqKik7CisgCisraW50CSBrZXhfa2VtX21sa2VtNzY4bmlzdHAyNTZfa2V5 cGFpcihzdHJ1Y3Qga2V4ICopOworK2ludAkga2V4X2tlbV9tbGtlbTc2OG5pc3RwMjU2X2VuYyhz dHJ1Y3Qga2V4ICosIGNvbnN0IHN0cnVjdCBzc2hidWYgKiwKKysgICAgc3RydWN0IHNzaGJ1ZiAq Kiwgc3RydWN0IHNzaGJ1ZiAqKik7CisraW50CSBrZXhfa2VtX21sa2VtNzY4bmlzdHAyNTZfZGVj KHN0cnVjdCBrZXggKiwgY29uc3Qgc3RydWN0IHNzaGJ1ZiAqLAorKyAgICBzdHJ1Y3Qgc3NoYnVm ICoqKTsKKysKKytpbnQJIGtleF9rZW1fbWxrZW0xMDI0bmlzdHAzODRfa2V5cGFpcihzdHJ1Y3Qg a2V4ICopOworK2ludAkga2V4X2tlbV9tbGtlbTEwMjRuaXN0cDM4NF9lbmMoc3RydWN0IGtleCAq LCBjb25zdCBzdHJ1Y3Qgc3NoYnVmICosCisrICAgIHN0cnVjdCBzc2hidWYgKiosIHN0cnVjdCBz c2hidWYgKiopOworK2ludAkga2V4X2tlbV9tbGtlbTEwMjRuaXN0cDM4NF9kZWMoc3RydWN0IGtl eCAqLCBjb25zdCBzdHJ1Y3Qgc3NoYnVmICosCisrICAgIHN0cnVjdCBzc2hidWYgKiopOworKwor IGludAkga2V4X2RoX2tleWdlbihzdHJ1Y3Qga2V4ICopOworIGludAkga2V4X2RoX2NvbXB1dGVf a2V5KHN0cnVjdCBrZXggKiwgQklHTlVNICosIHN0cnVjdCBzc2hidWYgKik7CisgCitkaWZmIC0t Z2l0IGEva2V4Z2VuLmMgYi9rZXhnZW4uYworaW5kZXggMmY4MjUyNDg4Li45YTM1NmUyOTggMTAw NjQ0CistLS0gYS9rZXhnZW4uYworKysrIGIva2V4Z2VuLmMKK0BAIC0xMzMsMTIgKzEzMywyNCBA QCBrZXhfZ2VuX2NsaWVudChzdHJ1Y3Qgc3NoICpzc2gpCisgCQlicmVhazsKKyAJY2FzZSBLRVhf S0VNX01MS0VNNzY4WDI1NTE5X1NIQTI1NjoKKyAJCWlmIChGSVBTX21vZGUoKSkgeworLQkJICAg IGxvZ2l0X2YoIktleSBleGNoYW5nZSB0eXBlIG1sa2VtNzY4eDI1NTE5IGlzIG5vdCBhbGxvd2Vk IGluIEZJUFMgbW9kZSIpOworLQkJICAgIHIgPSBTU0hfRVJSX0lOVkFMSURfQVJHVU1FTlQ7Cisr CQkgICAgRVZQX0tFTSAqbWxrZW0gPSBFVlBfS0VNX2ZldGNoKE5VTEwsICJtbGtlbTc2OCIsIE5V TEwpOworKwkJICAgIGlmIChtbGtlbSA9PSBOVUxMKSB7CisrCQkgICAgICAgIGxvZ2l0X2YoIktl eSBleGNoYW5nZSB0eXBlIG1sa2VtNzY4eDI1NTE5IGlzIG5vdCBhbGxvd2VkIGluIEZJUFMgbW9k ZSIpOworKwkJICAgICAgICByID0gU1NIX0VSUl9JTlZBTElEX0FSR1VNRU5UOworKwkJICAgIH0g ZWxzZSB7CisrCQkJRVZQX0tFTV9mcmVlKG1sa2VtKTsKKysJCSAgICAgICAgciA9IGtleF9rZW1f bWxrZW03Njh4MjU1MTlfa2V5cGFpcihrZXgpOworKwkJICAgIH0KKyAJCX0gZWxzZSB7CisgCQkg ICAgciA9IGtleF9rZW1fbWxrZW03Njh4MjU1MTlfa2V5cGFpcihrZXgpOworIAkJfQorIAkJYnJl YWs7CisrCWNhc2UgS0VYX0tFTV9NTEtFTTc2OE5JU1RQMjU2X1NIQTI1NjoKKysJCSAgICByID0g a2V4X2tlbV9tbGtlbTc2OG5pc3RwMjU2X2tleXBhaXIoa2V4KTsKKysJCWJyZWFrOworKwljYXNl IEtFWF9LRU1fTUxLRU0xMDI0TklTVFAzODRfU0hBMzg0OgorKwkJICAgIHIgPSBrZXhfa2VtX21s a2VtMTAyNG5pc3RwMzg0X2tleXBhaXIoa2V4KTsKKysJCWJyZWFrOworIAlkZWZhdWx0OgorIAkJ ciA9IFNTSF9FUlJfSU5WQUxJRF9BUkdVTUVOVDsKKyAJCWJyZWFrOworQEAgLTIyMywxMyArMjM1 LDI4IEBAIGlucHV0X2tleF9nZW5fcmVwbHkoaW50IHR5cGUsIHVpbnQzMl90IHNlcSwgc3RydWN0 IHNzaCAqc3NoKQorIAkJYnJlYWs7CisgCWNhc2UgS0VYX0tFTV9NTEtFTTc2OFgyNTUxOV9TSEEy NTY6CisgCQlpZiAoRklQU19tb2RlKCkpIHsKKy0JCSAgICBsb2dpdF9mKCJLZXkgZXhjaGFuZ2Ug dHlwZSBtbGtlbTc2OHgyNTUxOSBpcyBub3QgYWxsb3dlZCBpbiBGSVBTIG1vZGUiKTsKKy0JCSAg ICByID0gU1NIX0VSUl9JTlZBTElEX0FSR1VNRU5UOworKwkJICAgIEVWUF9LRU0gKm1sa2VtID0g RVZQX0tFTV9mZXRjaChOVUxMLCAibWxrZW03NjgiLCBOVUxMKTsKKysJCSAgICBpZiAobWxrZW0g PT0gTlVMTCkgeworKwkJICAgICAgICBsb2dpdF9mKCJLZXkgZXhjaGFuZ2UgdHlwZSBtbGtlbTc2 OHgyNTUxOSBpcyBub3QgYWxsb3dlZCBpbiBGSVBTIG1vZGUiKTsKKysJCSAgICAgICAgciA9IFNT SF9FUlJfSU5WQUxJRF9BUkdVTUVOVDsKKysJCSAgICB9IGVsc2UgeworKwkJCUVWUF9LRU1fZnJl ZShtbGtlbSk7CisrCQkgICAgICAgIHIgPSBrZXhfa2VtX21sa2VtNzY4eDI1NTE5X2RlYyhrZXgs IHNlcnZlcl9ibG9iLAorKwkJICAgICAgICAgICAgJnNoYXJlZF9zZWNyZXQpOworKwkJICAgIH0K KyAJCX0gZWxzZSB7CisgCQkgICAgciA9IGtleF9rZW1fbWxrZW03Njh4MjU1MTlfZGVjKGtleCwg c2VydmVyX2Jsb2IsCisgCQkgICAgICAgICZzaGFyZWRfc2VjcmV0KTsKKyAJCX0KKyAJCWJyZWFr OworKwljYXNlIEtFWF9LRU1fTUxLRU03NjhOSVNUUDI1Nl9TSEEyNTY6CisrCQkgICAgciA9IGtl eF9rZW1fbWxrZW03NjhuaXN0cDI1Nl9kZWMoa2V4LCBzZXJ2ZXJfYmxvYiwKKysJCSAgICAgICAg JnNoYXJlZF9zZWNyZXQpOworKwkJYnJlYWs7CisrCWNhc2UgS0VYX0tFTV9NTEtFTTEwMjROSVNU UDM4NF9TSEEzODQ6CisrCQkgICAgciA9IGtleF9rZW1fbWxrZW0xMDI0bmlzdHAzODRfZGVjKGtl eCwgc2VydmVyX2Jsb2IsCisrCQkgICAgICAgICZzaGFyZWRfc2VjcmV0KTsKKysJCWJyZWFrOwor IAlkZWZhdWx0OgorIAkJciA9IFNTSF9FUlJfSU5WQUxJRF9BUkdVTUVOVDsKKyAJCWJyZWFrOwor QEAgLTI4Myw2ICszMTAsOCBAQCBvdXQ6CisgCSAgICBzaXplb2Yoa2V4LT5zbnRydXA3NjFfY2xp ZW50X2tleSkpOworIAlleHBsaWNpdF9iemVybyhrZXgtPm1sa2VtNzY4X2NsaWVudF9rZXksCisg CSAgICBzaXplb2Yoa2V4LT5tbGtlbTc2OF9jbGllbnRfa2V5KSk7CisrCWV4cGxpY2l0X2J6ZXJv KGtleC0+bWxrZW0xMDI0X2NsaWVudF9rZXksCisrCSAgICBzaXplb2Yoa2V4LT5tbGtlbTEwMjRf Y2xpZW50X2tleSkpOworIAlzc2hidWZfZnJlZShzZXJ2ZXJfaG9zdF9rZXlfYmxvYik7CisgCWZy ZWUoc2lnbmF0dXJlKTsKKyAJc3NoYnVmX2ZyZWUodG1wKTsKK0BAIC0zNjIsMTMgKzM5MSwyOCBA QCBpbnB1dF9rZXhfZ2VuX2luaXQoaW50IHR5cGUsIHVpbnQzMl90IHNlcSwgc3RydWN0IHNzaCAq c3NoKQorIAkJYnJlYWs7CisgCWNhc2UgS0VYX0tFTV9NTEtFTTc2OFgyNTUxOV9TSEEyNTY6Cisg CQlpZiAoRklQU19tb2RlKCkpIHsKKy0JCSAgICBsb2dpdF9mKCJLZXkgZXhjaGFuZ2UgdHlwZSBt bGtlbTc2OHgyNTUxOSBpcyBub3QgYWxsb3dlZCBpbiBGSVBTIG1vZGUiKTsKKy0JCSAgICByID0g U1NIX0VSUl9JTlZBTElEX0FSR1VNRU5UOworKwkJICAgIEVWUF9LRU0gKm1sa2VtID0gRVZQX0tF TV9mZXRjaChOVUxMLCAibWxrZW03NjgiLCBOVUxMKTsKKysJCSAgICBpZiAobWxrZW0gPT0gTlVM TCkgeworKwkJICAgICAgICBsb2dpdF9mKCJLZXkgZXhjaGFuZ2UgdHlwZSBtbGtlbTc2OHgyNTUx OSBpcyBub3QgYWxsb3dlZCBpbiBGSVBTIG1vZGUiKTsKKysJCSAgICAgICAgciA9IFNTSF9FUlJf SU5WQUxJRF9BUkdVTUVOVDsKKysJCSAgICB9IGVsc2UgeworKwkJCUVWUF9LRU1fZnJlZShtbGtl bSk7CisrCQkgICAgICAgIHIgPSBrZXhfa2VtX21sa2VtNzY4eDI1NTE5X2VuYyhrZXgsIGNsaWVu dF9wdWJrZXksCisrCQkgICAgICAgICAgICAmc2VydmVyX3B1YmtleSwgJnNoYXJlZF9zZWNyZXQp OworKwkJICAgIH0KKyAJCX0gZWxzZSB7CisgCQkgICAgciA9IGtleF9rZW1fbWxrZW03Njh4MjU1 MTlfZW5jKGtleCwgY2xpZW50X3B1YmtleSwKKyAJCSAgICAgICAgJnNlcnZlcl9wdWJrZXksICZz aGFyZWRfc2VjcmV0KTsKKyAJCX0KKyAJCWJyZWFrOworKwljYXNlIEtFWF9LRU1fTUxLRU03NjhO SVNUUDI1Nl9TSEEyNTY6CisrCQkgICAgciA9IGtleF9rZW1fbWxrZW03NjhuaXN0cDI1Nl9lbmMo a2V4LCBjbGllbnRfcHVia2V5LAorKwkJICAgICAgICAmc2VydmVyX3B1YmtleSwgJnNoYXJlZF9z ZWNyZXQpOworKwkJYnJlYWs7CisrCWNhc2UgS0VYX0tFTV9NTEtFTTEwMjROSVNUUDM4NF9TSEEz ODQ6CisrCQkgICAgciA9IGtleF9rZW1fbWxrZW0xMDI0bmlzdHAzODRfZW5jKGtleCwgY2xpZW50 X3B1YmtleSwKKysJCSAgICAgICAgJnNlcnZlcl9wdWJrZXksICZzaGFyZWRfc2VjcmV0KTsKKysJ CWJyZWFrOworIAlkZWZhdWx0OgorIAkJciA9IFNTSF9FUlJfSU5WQUxJRF9BUkdVTUVOVDsKKyAJ CWJyZWFrOworZGlmZiAtLWdpdCBhL2tleG1sa2VtNzY4eDI1NTE5LmMgYi9rZXhtbGtlbTc2OHgy NTUxOS5jCitpbmRleCAzNjY1ODEyMGYuLjAzZWZiNzg4ZiAxMDA2NDQKKy0tLSBhL2tleG1sa2Vt NzY4eDI1NTE5LmMKKysrKyBiL2tleG1sa2VtNzY4eDI1NTE5LmMKK0BAIC00NSwxOSArNDUsMzQg QEAKKyAKKyAjaWZkZWYgVVNFX01MS0VNNzY4WDI1NTE5CisgCisrI2luY2x1ZGUgImxpYmNydXhf aW50ZXJuYWwuaCIKKysjaW5jbHVkZSA8b3BlbnNzbC9ibi5oPgorKyNpbmNsdWRlIDxvcGVuc3Ns L2VjLmg+CisgI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+CisgI2luY2x1ZGUgPG9wZW5zc2wvZXZw Lmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorIAor KyNkZWZpbmUgRklQU19GQUxMQkFDS19QUk9QUSAicHJvdmlkZXI9ZGVmYXVsdCwtZmlwcyIKKysK KyBzdGF0aWMgaW50CistbWxrZW03Njhfa2V5cGFpcl9nZW4odW5zaWduZWQgY2hhciAqcHVia2V5 YnVmLCB1bnNpZ25lZCBjaGFyICpwcml2a2V5YnVmKQorK21sa2VtX2tleXBhaXJfZ2VuKGNvbnN0 IGNoYXIgKmFsZ25hbWUsIHVuc2lnbmVkIGNoYXIgKnB1YmtleWJ1Ziwgc2l6ZV90IHB1YmtleV9z aXplLAorKwkgICAgICAgICAgdW5zaWduZWQgY2hhciAqcHJpdmtleWJ1Ziwgc2l6ZV90IHByaXZr ZXlfc2l6ZSkKKyB7CisgICAgIEVWUF9QS0VZX0NUWCAqY3R4ID0gTlVMTDsKKyAgICAgRVZQX1BL RVkgKnBrZXkgPSBOVUxMOworICAgICBpbnQgcmV0ID0gU1NIX0VSUl9JTlRFUk5BTF9FUlJPUjsK Ky0gICAgc2l6ZV90IHB1YmtleV9zaXplID0gY3J5cHRvX2tlbV9tbGtlbTc2OF9QVUJMSUNLRVlC WVRFUywgcHJpdmtleV9zaXplID0gY3J5cHRvX2tlbV9tbGtlbTc2OF9TRUNSRVRLRVlCWVRFUzsK KysgICAgc2l6ZV90IGdvdF9wdWJfc2l6ZSA9IHB1YmtleV9zaXplLCBnb3RfcHJpdl9zaXplID0g cHJpdmtleV9zaXplOworKworKyAgICBjdHggPSBFVlBfUEtFWV9DVFhfbmV3X2Zyb21fbmFtZShO VUxMLCBhbGduYW1lLCBOVUxMKTsKKysKKysgICAgaWYgKGN0eCA9PSBOVUxMICYmIEZJUFNfbW9k ZSgpKSB7CisrCS8qIFdlIGhhdmUgZmlsdGVyZWQgeDI1NTE5ICsgTUwtS0VNIGluIEZJUFMgbW9k ZSBlYXJsaWVyCisrCSAqIHNvIGlmIHdlIGFyZSBpbiBGSVBTIG1vZGUgYW5kIE1MLUtFTSBpcyBu b3QgYXZhaWxhYmxlIHdpdGggZGVmYXVsdCBwcm9wcSwKKysJICogd2UgY2FuIGZldGNoIGl0IGZy b20gdGhlIGRlZmF1bHQgcHJvdmlkZXIgKi8KKysgICAgICAgIGN0eCA9IEVWUF9QS0VZX0NUWF9u ZXdfZnJvbV9uYW1lKE5VTEwsIGFsZ25hbWUsIEZJUFNfRkFMTEJBQ0tfUFJPUFEpOworKyAgICB9 CisgCistICAgIGN0eCA9IEVWUF9QS0VZX0NUWF9uZXdfZnJvbV9uYW1lKE5VTEwsICJtbGtlbTc2 OCIsIE5VTEwpOworICAgICBpZiAoY3R4ID09IE5VTEwpIHsKKyAJcmV0ID0gU1NIX0VSUl9MSUJD UllQVE9fRVJST1I7CisgCWdvdG8gZXJyOworQEAgLTY5LDE3ICs4NCwyMyBAQCBtbGtlbTc2OF9r ZXlwYWlyX2dlbih1bnNpZ25lZCBjaGFyICpwdWJrZXlidWYsIHVuc2lnbmVkIGNoYXIgKnByaXZr ZXlidWYpCisgICAgICAgICBnb3RvIGVycjsKKyAgICAgfQorIAorLSAgICBpZiAoRVZQX1BLRVlf Z2V0X3Jhd19wdWJsaWNfa2V5KHBrZXksIHB1YmtleWJ1ZiwgJnB1YmtleV9zaXplKSA8PSAwCist CXx8IEVWUF9QS0VZX2dldF9yYXdfcHJpdmF0ZV9rZXkocGtleSwgcHJpdmtleWJ1ZiwgJnByaXZr ZXlfc2l6ZSkgPD0gMCkgeworKyAgICBpZiAoRVZQX1BLRVlfZ2V0X3Jhd19wdWJsaWNfa2V5KHBr ZXksIE5VTEwsICZnb3RfcHViX3NpemUpIDw9IDAKKysJfHwgRVZQX1BLRVlfZ2V0X3Jhd19wcml2 YXRlX2tleShwa2V5LCBOVUxMLCAmZ290X3ByaXZfc2l6ZSkgPD0gMCkgeworIAlyZXQgPSBTU0hf RVJSX0xJQkNSWVBUT19FUlJPUjsKKyAgICAgICAgIGdvdG8gZXJyOworICAgICB9CisgCistICAg IGlmIChwcml2a2V5X3NpemUgIT0gY3J5cHRvX2tlbV9tbGtlbTc2OF9TRUNSRVRLRVlCWVRFUwor LQkgICAgfHwgcHVia2V5X3NpemUgIT0gY3J5cHRvX2tlbV9tbGtlbTc2OF9QVUJMSUNLRVlCWVRF UykgeworKyAgICBpZiAocHJpdmtleV9zaXplICE9IGdvdF9wcml2X3NpemUgfHwgcHVia2V5X3Np emUgIT0gZ290X3B1Yl9zaXplKSB7CisgCXJldCA9IFNTSF9FUlJfTElCQ1JZUFRPX0VSUk9SOwor ICAgICAgICAgZ290byBlcnI7CisgICAgIH0KKysKKysgICAgaWYgKEVWUF9QS0VZX2dldF9yYXdf cHVibGljX2tleShwa2V5LCBwdWJrZXlidWYsICZnb3RfcHViX3NpemUpIDw9IDAKKysJfHwgRVZQ X1BLRVlfZ2V0X3Jhd19wcml2YXRlX2tleShwa2V5LCBwcml2a2V5YnVmLCAmZ290X3ByaXZfc2l6 ZSkgPD0gMCkgeworKwlyZXQgPSBTU0hfRVJSX0xJQkNSWVBUT19FUlJPUjsKKysgICAgICAgIGdv dG8gZXJyOworKyAgICB9CisrCisgICAgIHJldCA9IDA7CisgCisgIGVycjoKK0BAIC05MSwyNyAr MTEyLDU3IEBAIG1sa2VtNzY4X2tleXBhaXJfZ2VuKHVuc2lnbmVkIGNoYXIgKnB1YmtleWJ1Ziwg dW5zaWduZWQgY2hhciAqcHJpdmtleWJ1ZikKKyB9CisgCisgc3RhdGljIGludAorLW1sa2VtNzY4 X2VuY2FwX3NlY3JldChjb25zdCB1X2NoYXIgKnB1YmtleWJ1ZiwgdV9jaGFyICpzZWNyZXQsIHVf Y2hhciAqb3V0KQorK21sa2VtNzY4X2tleXBhaXJfZ2VuKHVuc2lnbmVkIGNoYXIgKnB1YmtleWJ1 ZiwgdW5zaWduZWQgY2hhciAqcHJpdmtleWJ1ZikKKyt7CisrCXJldHVybiBtbGtlbV9rZXlwYWly X2dlbigibWxrZW03NjgiLCBwdWJrZXlidWYsIGNyeXB0b19rZW1fbWxrZW03NjhfUFVCTElDS0VZ QllURVMsCisrCQkJcHJpdmtleWJ1ZiwgY3J5cHRvX2tlbV9tbGtlbTc2OF9TRUNSRVRLRVlCWVRF Uyk7CisrfQorKworK3N0YXRpYyBpbnQKKyttbGtlbTEwMjRfa2V5cGFpcl9nZW4odW5zaWduZWQg Y2hhciAqcHVia2V5YnVmLCB1bnNpZ25lZCBjaGFyICpwcml2a2V5YnVmKQorK3sKKysJcmV0dXJu IG1sa2VtX2tleXBhaXJfZ2VuKCJtbGtlbTEwMjQiLCBwdWJrZXlidWYsIGNyeXB0b19rZW1fbWxr ZW0xMDI0X1BVQkxJQ0tFWUJZVEVTLAorKwkJCXByaXZrZXlidWYsIGNyeXB0b19rZW1fbWxrZW0x MDI0X1NFQ1JFVEtFWUJZVEVTKTsKKyt9CisrCisrc3RhdGljIGludAorK21sa2VtX2VuY2FwX3Nl Y3JldChjb25zdCBjaGFyICptbGtlbV9hbGcsIGNvbnN0IHVfY2hhciAqcHVia2V5YnVmLCB1X2No YXIgKnNlY3JldCwgdV9jaGFyICpvdXQpCisgeworICAgICBFVlBfUEtFWSAqcGtleSA9IE5VTEw7 CisgICAgIEVWUF9QS0VZX0NUWCAqY3R4ID0gTlVMTDsKKyAgICAgaW50IHIgPSBTU0hfRVJSX0lO VEVSTkFMX0VSUk9SOworLSAgICBzaXplX3Qgb3V0bGVuID0gY3J5cHRvX2tlbV9tbGtlbTc2OF9D SVBIRVJURVhUQllURVMsCistCSAgIHNlY3JldGxlbiA9IGNyeXB0b19rZW1fbWxrZW03NjhfQllU RVM7CisrICAgIHNpemVfdCBvdXRsZW4sIGV4cGVjdGVkX291dGxlbiwgcHVibGVuLCBzZWNyZXRs ZW4gPSBjcnlwdG9fa2VtX21sa2VtNzY4X0JZVEVTOworKyAgICBpbnQgZmlwc19mYWxsYmFjayA9 IDA7CisrCisrICAgIGlmIChzdHJjbXAobWxrZW1fYWxnLCAibWxrZW03NjgiKSA9PSAwKSB7Cisr CSAgICBvdXRsZW4gPSBjcnlwdG9fa2VtX21sa2VtNzY4X0NJUEhFUlRFWFRCWVRFUzsKKysJICAg IHB1YmxlbiA9IGNyeXB0b19rZW1fbWxrZW03NjhfUFVCTElDS0VZQllURVM7CisrICAgIH0gZWxz ZSBpZiAoc3RyY21wKG1sa2VtX2FsZywgIm1sa2VtMTAyNCIpID09IDApIHsKKysJICAgIG91dGxl biA9IGNyeXB0b19rZW1fbWxrZW0xMDI0X0NJUEhFUlRFWFRCWVRFUzsKKysJICAgIHB1YmxlbiA9 IGNyeXB0b19rZW1fbWxrZW0xMDI0X1BVQkxJQ0tFWUJZVEVTOworKyAgICB9IGVsc2UKKysJICAg IHJldHVybiByOworIAorLSAgICBwa2V5ID0gRVZQX1BLRVlfbmV3X3Jhd19wdWJsaWNfa2V5X2V4 KE5VTEwsICJtbGtlbTc2OCIsIE5VTEwsCistCQkgICAgcHVia2V5YnVmLCBjcnlwdG9fa2VtX21s a2VtNzY4X1BVQkxJQ0tFWUJZVEVTKTsKKysgICAgZXhwZWN0ZWRfb3V0bGVuID0gb3V0bGVuOwor KworKyAgICBwa2V5ID0gRVZQX1BLRVlfbmV3X3Jhd19wdWJsaWNfa2V5X2V4KE5VTEwsIG1sa2Vt X2FsZywgTlVMTCwKKysJCSAgICBwdWJrZXlidWYsIHB1Ymxlbik7CisrICAgIGlmIChwa2V5ID09 IE5VTEwgJiYgRklQU19tb2RlKCkpIHsKKysgICAgICAgIHBrZXkgPSBFVlBfUEtFWV9uZXdfcmF3 X3B1YmxpY19rZXlfZXgoTlVMTCwgbWxrZW1fYWxnLCBGSVBTX0ZBTExCQUNLX1BST1BRLAorKwkJ ICAgIHB1YmtleWJ1ZiwgcHVibGVuKTsKKysJZmlwc19mYWxsYmFjayA9IDE7CisrICAgIH0KKyAg ICAgaWYgKHBrZXkgPT0gTlVMTCkgeworIAlyID0gU1NIX0VSUl9MSUJDUllQVE9fRVJST1I7Cisg CWdvdG8gZXJyOworICAgICB9CisgCistICAgIGN0eCA9IEVWUF9QS0VZX0NUWF9uZXdfZnJvbV9w a2V5KE5VTEwsIHBrZXksIE5VTEwpOworKyAgICBjdHggPSBFVlBfUEtFWV9DVFhfbmV3X2Zyb21f cGtleShOVUxMLCBwa2V5LCBmaXBzX2ZhbGxiYWNrID8gRklQU19GQUxMQkFDS19QUk9QUSA6IE5V TEwpOworICAgICBpZiAoY3R4ID09IE5VTEwKKyAJfHwgRVZQX1BLRVlfZW5jYXBzdWxhdGVfaW5p dChjdHgsIE5VTEwpIDw9IDAKKy0gICAgICAgIHx8IEVWUF9QS0VZX2VuY2Fwc3VsYXRlKGN0eCwg b3V0LCAmb3V0bGVuLCBzZWNyZXQsICZzZWNyZXRsZW4pIDw9IDAKKysgICAgICAgIHx8IEVWUF9Q S0VZX2VuY2Fwc3VsYXRlKGN0eCwgb3V0LCAmZXhwZWN0ZWRfb3V0bGVuLCBzZWNyZXQsICZzZWNy ZXRsZW4pIDw9IDAKKyAJfHwgc2VjcmV0bGVuICE9IGNyeXB0b19rZW1fbWxrZW03NjhfQllURVMK Ky0JfHwgb3V0bGVuICE9IGNyeXB0b19rZW1fbWxrZW03NjhfQ0lQSEVSVEVYVEJZVEVTKSB7Cisr CXx8IG91dGxlbiAhPSBleHBlY3RlZF9vdXRsZW4pIHsKKyAJciA9IFNTSF9FUlJfTElCQ1JZUFRP X0VSUk9SOworIAlnb3RvIGVycjsKKyAgICAgfQorQEAgLTEyNywyNSArMTc4LDQ1IEBAIG1sa2Vt NzY4X2VuY2FwX3NlY3JldChjb25zdCB1X2NoYXIgKnB1YmtleWJ1ZiwgdV9jaGFyICpzZWNyZXQs IHVfY2hhciAqb3V0KQorIH0KKyAKKyBzdGF0aWMgaW50CistbWxrZW03NjhfZGVjYXBfc2VjcmV0 KGNvbnN0IHVfY2hhciAqcHJpdmtleWJ1ZiwgY29uc3QgdV9jaGFyICp3cmFwcGVkLCB1X2NoYXIg KnNlY3JldCkKKyttbGtlbTc2OF9lbmNhcF9zZWNyZXQoY29uc3QgdV9jaGFyICpwdWJrZXlidWYs IHVfY2hhciAqc2VjcmV0LCB1X2NoYXIgKm91dCkKKyt7CisrCXJldHVybiBtbGtlbV9lbmNhcF9z ZWNyZXQoIm1sa2VtNzY4IiwgcHVia2V5YnVmLCBzZWNyZXQsIG91dCk7CisrfQorKworK3N0YXRp YyBpbnQKKyttbGtlbTEwMjRfZW5jYXBfc2VjcmV0KGNvbnN0IHVfY2hhciAqcHVia2V5YnVmLCB1 X2NoYXIgKnNlY3JldCwgdV9jaGFyICpvdXQpCisreworKwlyZXR1cm4gbWxrZW1fZW5jYXBfc2Vj cmV0KCJtbGtlbTEwMjQiLCBwdWJrZXlidWYsIHNlY3JldCwgb3V0KTsKKyt9CisrCisrc3RhdGlj IGludAorK21sa2VtX2RlY2FwX3NlY3JldChjb25zdCBjaGFyICphbGduYW1lLAorKyAgICBjb25z dCB1X2NoYXIgKnByaXZrZXlidWYsIHNpemVfdCBwcml2a2V5X2xlbiwKKysgICAgY29uc3QgdV9j aGFyICp3cmFwcGVkLCBzaXplX3Qgd3JhcHBlZF9sZW4sCisrICAgIHVfY2hhciAqc2VjcmV0KQor IHsKKyAgICAgRVZQX1BLRVkgKnBrZXkgPSBOVUxMOworICAgICBFVlBfUEtFWV9DVFggKmN0eCA9 IE5VTEw7CisgICAgIGludCByID0gU1NIX0VSUl9JTlRFUk5BTF9FUlJPUjsKKy0gICAgc2l6ZV90 IHdyYXBwZWRsZW4gPSBjcnlwdG9fa2VtX21sa2VtNzY4X0NJUEhFUlRFWFRCWVRFUywKKy0JICAg c2VjcmV0bGVuID0gY3J5cHRvX2tlbV9tbGtlbTc2OF9CWVRFUzsKKysgICAgc2l6ZV90IHNlY3Jl dGxlbiA9IGNyeXB0b19rZW1fbWxrZW03NjhfQllURVM7CisrICAgIGludCBmaXBzX2ZhbGxiYWNr ID0gMDsKKyAKKy0gICAgcGtleSA9IEVWUF9QS0VZX25ld19yYXdfcHJpdmF0ZV9rZXlfZXgoTlVM TCwgIm1sa2VtNzY4IiwgTlVMTCwKKy0JCSAgICBwcml2a2V5YnVmLCBjcnlwdG9fa2VtX21sa2Vt NzY4X1NFQ1JFVEtFWUJZVEVTKTsKKysgICAgcGtleSA9IEVWUF9QS0VZX25ld19yYXdfcHJpdmF0 ZV9rZXlfZXgoTlVMTCwgYWxnbmFtZSwKKysJCSAgICBOVUxMLCBwcml2a2V5YnVmLCBwcml2a2V5 X2xlbik7CisrICAgIGlmIChwa2V5ID09IE5VTEwgJiYgRklQU19tb2RlKCkpIHsKKysgICAgICAg IHBrZXkgPSBFVlBfUEtFWV9uZXdfcmF3X3ByaXZhdGVfa2V5X2V4KE5VTEwsIGFsZ25hbWUsCisr CQkgICAgRklQU19GQUxMQkFDS19QUk9QUSwgcHJpdmtleWJ1ZiwgcHJpdmtleV9sZW4pOworKwlm aXBzX2ZhbGxiYWNrID0gMTsKKysgICAgfQorICAgICBpZiAocGtleSA9PSBOVUxMKSB7CisgCXIg PSBTU0hfRVJSX0xJQkNSWVBUT19FUlJPUjsKKyAJZ290byBlcnI7CisgICAgIH0KKyAKKy0gICAg Y3R4ID0gRVZQX1BLRVlfQ1RYX25ld19mcm9tX3BrZXkoTlVMTCwgcGtleSwgTlVMTCk7CisrICAg IGN0eCA9IEVWUF9QS0VZX0NUWF9uZXdfZnJvbV9wa2V5KE5VTEwsIHBrZXksIGZpcHNfZmFsbGJh Y2sgPyBGSVBTX0ZBTExCQUNLX1BST1BRIDogTlVMTCk7CisgICAgIGlmIChjdHggPT0gTlVMTAor IAl8fCBFVlBfUEtFWV9kZWNhcHN1bGF0ZV9pbml0KGN0eCwgTlVMTCkgPD0gMAorLSAgICAgICAg fHwgRVZQX1BLRVlfZGVjYXBzdWxhdGUoY3R4LCBzZWNyZXQsICZzZWNyZXRsZW4sIHdyYXBwZWQs IHdyYXBwZWRsZW4pIDw9IDAKKysgICAgICAgIHx8IEVWUF9QS0VZX2RlY2Fwc3VsYXRlKGN0eCwg c2VjcmV0LCAmc2VjcmV0bGVuLCB3cmFwcGVkLCB3cmFwcGVkX2xlbikgPD0gMAorIAl8fCBzZWNy ZXRsZW4gIT0gY3J5cHRvX2tlbV9tbGtlbTc2OF9CWVRFUykgeworIAlyID0gU1NIX0VSUl9MSUJD UllQVE9fRVJST1I7CisgCWdvdG8gZXJyOworQEAgLTE2Miw2ICsyMzMsMjAgQEAgbWxrZW03Njhf ZGVjYXBfc2VjcmV0KGNvbnN0IHVfY2hhciAqcHJpdmtleWJ1ZiwgY29uc3QgdV9jaGFyICp3cmFw cGVkLCB1X2NoYXIgKnMKKyAgICAgcmV0dXJuIHI7CisgfQorIAorK3N0YXRpYyBpbnQKKyttbGtl bTc2OF9kZWNhcF9zZWNyZXQoY29uc3QgdV9jaGFyICpwcml2a2V5YnVmLCBjb25zdCB1X2NoYXIg KndyYXBwZWQsIHVfY2hhciAqc2VjcmV0KQorK3sKKysJcmV0dXJuIG1sa2VtX2RlY2FwX3NlY3Jl dCgibWxrZW03NjgiLCBwcml2a2V5YnVmLCBjcnlwdG9fa2VtX21sa2VtNzY4X1NFQ1JFVEtFWUJZ VEVTLAorKwkJd3JhcHBlZCwgY3J5cHRvX2tlbV9tbGtlbTc2OF9DSVBIRVJURVhUQllURVMsIHNl Y3JldCk7CisrfQorKworK3N0YXRpYyBpbnQKKyttbGtlbTEwMjRfZGVjYXBfc2VjcmV0KGNvbnN0 IHVfY2hhciAqcHJpdmtleWJ1ZiwgY29uc3QgdV9jaGFyICp3cmFwcGVkLCB1X2NoYXIgKnNlY3Jl dCkKKyt7CisrCXJldHVybiBtbGtlbV9kZWNhcF9zZWNyZXQoIm1sa2VtMTAyNCIsIHByaXZrZXli dWYsIGNyeXB0b19rZW1fbWxrZW0xMDI0X1NFQ1JFVEtFWUJZVEVTLAorKwkJd3JhcHBlZCwgY3J5 cHRvX2tlbV9tbGtlbTEwMjRfQ0lQSEVSVEVYVEJZVEVTLCBzZWNyZXQpOworK30KKysKKyBpbnQK KyBrZXhfa2VtX21sa2VtNzY4eDI1NTE5X2tleXBhaXIoc3RydWN0IGtleCAqa2V4KQorIHsKK0BA IC0zMjcsNyArNDEyLDcgQEAga2V4X2tlbV9tbGtlbTc2OHgyNTUxOV9lbmMoc3RydWN0IGtleCAq a2V4LAorIAl1X2NoYXIgaGFzaFtTU0hfRElHRVNUX01BWF9MRU5HVEhdOworIAlzaXplX3QgbmVl ZDsKKyAJaW50IHIgPSBTU0hfRVJSX0lOVEVSTkFMX0VSUk9SOworLQlzdHJ1Y3QgbGliY3J1eF9t bGtlbTc2OF9lbmNfcmVzdWx0IGVuYzsgLyogRklYTUUgKi8KKysJbGliY3J1eF9tbGtlbTc2OF9l bmNfcmVzdWx0IGVuYzsKKyAKKyAJKnNlcnZlcl9ibG9icCA9IE5VTEw7CisgCSpzaGFyZWRfc2Vj cmV0cCA9IE5VTEw7CitAQCAtNTI5LDYgKzYxNCw1MjAgQEAga2V4X2tlbV9tbGtlbTc2OHgyNTUx OV9kZWMoc3RydWN0IGtleCAqa2V4LAorIAlyZXR1cm4gcjsKKyAjZW5kaWYKKyB9CisrCisrI2Rl ZmluZSBOSVNUX1AyNTZfQ09NUFJFU1NFRF9MRU4gICAzMworKyNkZWZpbmUgTklTVF9QMjU2X1VO Q09NUFJFU1NFRF9MRU4gNjUKKysjZGVmaW5lIE5JU1RfUDM4NF9DT01QUkVTU0VEX0xFTiAgIDQ5 CisrI2RlZmluZSBOSVNUX1AzODRfVU5DT01QUkVTU0VEX0xFTiA5NworKyNkZWZpbmUgTklTVF9C VUZfTUFYX1NJWkUgTklTVF9QMzg0X1VOQ09NUFJFU1NFRF9MRU4KKysKKytzdGF0aWMgY29uc3Qg Y2hhciBlYzI1NltdID0gIlAtMjU2IjsKKytzdGF0aWMgY29uc3QgY2hhciBlYzM4NFtdID0gIlAt Mzg0IjsKKytzdGF0aWMgY29uc3QgY2hhciAqbGVuMmN1cnZlX25hbWUoc2l6ZV90IGxlbikKKyt7 CisrCXN3aXRjaCAobGVuKSB7CisrCQljYXNlIE5JU1RfUDI1Nl9DT01QUkVTU0VEX0xFTjoKKysJ CWNhc2UgTklTVF9QMjU2X1VOQ09NUFJFU1NFRF9MRU46CisrCQkJcmV0dXJuIGVjMjU2OworKwkJ CWJyZWFrOworKwkJY2FzZSBOSVNUX1AzODRfQ09NUFJFU1NFRF9MRU46CisrCQljYXNlIE5JU1Rf UDM4NF9VTkNPTVBSRVNTRURfTEVOOgorKwkJCXJldHVybiBlYzM4NDsKKysJCQlicmVhazsKKysJ fQorKwlyZXR1cm4gTlVMTDsKKyt9CisrCisrc3RhdGljIEVWUF9QS0VZICoKKytidWYybmlzdF9r ZXkoY29uc3QgdW5zaWduZWQgY2hhciAqcHViX2tleV9idWYsIHNpemVfdCBwdWJfa2V5X2xlbikK Kyt7CisrCUVWUF9QS0VZICpwa2V5ID0gTlVMTDsKKysJRVZQX1BLRVlfQ1RYICpjdHggPSBOVUxM OworKwlPU1NMX1BBUkFNIHBhcmFtc1szXTsKKysJY29uc3QgY2hhciAqY3VydmVfbmFtZSA9IGxl bjJjdXJ2ZV9uYW1lKHB1Yl9rZXlfbGVuKTsKKysKKysJaWYgKGN1cnZlX25hbWUgPT0gTlVMTCkK KysJCXJldHVybiBOVUxMOworKworKwljdHggPSBFVlBfUEtFWV9DVFhfbmV3X2Zyb21fbmFtZShO VUxMLCAiRUMiLCBOVUxMKTsKKysJaWYgKCFjdHgpCisrCQlnb3RvIGVycjsKKysKKysJaWYgKEVW UF9QS0VZX2Zyb21kYXRhX2luaXQoY3R4KSA8PSAwKQorKwkJZ290byBlcnI7CisrCisrCXBhcmFt c1swXSA9IE9TU0xfUEFSQU1fY29uc3RydWN0X3V0Zjhfc3RyaW5nKE9TU0xfUEtFWV9QQVJBTV9H Uk9VUF9OQU1FLCBjdXJ2ZV9uYW1lLCAwKTsKKysJcGFyYW1zWzFdID0gT1NTTF9QQVJBTV9jb25z dHJ1Y3Rfb2N0ZXRfc3RyaW5nKAorKwkJCU9TU0xfUEtFWV9QQVJBTV9QVUJfS0VZLCAodm9pZCAq KXB1Yl9rZXlfYnVmLCBwdWJfa2V5X2xlbik7CisrCXBhcmFtc1syXSA9IE9TU0xfUEFSQU1fY29u c3RydWN0X2VuZCgpOworKworKwlpZiAoRVZQX1BLRVlfZnJvbWRhdGEoY3R4LCAmcGtleSwgRVZQ X1BLRVlfUFVCTElDX0tFWSwgcGFyYW1zKSA8PSAwKQorKwkJZ290byBlcnI7CisrCisrCUVWUF9Q S0VZX0NUWF9mcmVlKGN0eCk7CisrCXJldHVybiBwa2V5OworKworK2VycjoKKysJRVZQX1BLRVlf Q1RYX2ZyZWUoY3R4KTsKKysJRVZQX1BLRVlfZnJlZShwa2V5KTsKKysJcmV0dXJuIE5VTEw7Cisr fQorKworK3N0YXRpYyBpbnQKKytrZXhfbmlzdF9zaGFyZWRfa2V5X2V4dChFVlBfUEtFWSAqcHJp dl9rZXksCisrICAgIGNvbnN0IHVfY2hhciAqcHViX2tleV9idWYsIHNpemVfdCBwdWJfa2V5X2xl biwgc3RydWN0IHNzaGJ1ZiAqb3V0KQorK3sKKysJRVZQX1BLRVlfQ1RYICpjdHggPSBOVUxMOwor Kwl1bnNpZ25lZCBjaGFyICpzaGFyZWRfc2VjcmV0ID0gTlVMTDsKKysJc2l6ZV90IHNoYXJlZF9z ZWNyZXRfbGVuID0gMDsKKysJRVZQX1BLRVkgKnBlZXJfa2V5ID0gYnVmMm5pc3Rfa2V5KHB1Yl9r ZXlfYnVmLCBwdWJfa2V5X2xlbik7CisrCWludCByID0gU1NIX0VSUl9JTlRFUk5BTF9FUlJPUjsK KysKKysJaWYgKHBlZXJfa2V5ID09IE5VTEwpCisrCQlyZXR1cm4gU1NIX0VSUl9LRVlfTEVOR1RI OworKworKwljdHggPSBFVlBfUEtFWV9DVFhfbmV3X2Zyb21fcGtleShOVUxMLCBwcml2X2tleSwg TlVMTCk7CisrCWlmICghY3R4KQorKwkJZ290byBlbmQ7CisrCisrCWlmICgoRVZQX1BLRVlfZGVy aXZlX2luaXQoY3R4KSA8PSAwKQorKwkJfHwgRVZQX1BLRVlfZGVyaXZlX3NldF9wZWVyKGN0eCwg cGVlcl9rZXkpIDw9IDAKKysJCXx8IEVWUF9QS0VZX2Rlcml2ZShjdHgsIE5VTEwsICZzaGFyZWRf c2VjcmV0X2xlbikgPD0gMCkKKysJCWdvdG8gZW5kOworKworKwlzaGFyZWRfc2VjcmV0ID0gT1BF TlNTTF9tYWxsb2Moc2hhcmVkX3NlY3JldF9sZW4pOworKwlpZiAoc2hhcmVkX3NlY3JldCA9PSBO VUxMKQorKwkJZ290byBlbmQ7CisrCisrCWlmIChFVlBfUEtFWV9kZXJpdmUoY3R4LCBzaGFyZWRf c2VjcmV0LCAmc2hhcmVkX3NlY3JldF9sZW4pIDw9IDApCisrCQlnb3RvIGVuZDsKKysKKysJaWYg KChyID0gc3NoYnVmX3B1dChvdXQsIHNoYXJlZF9zZWNyZXQsIHNoYXJlZF9zZWNyZXRfbGVuKSkg IT0gMCkKKysJCWdvdG8gZW5kOworKworKwlyID0gMDsKKysKKytlbmQ6CisrCUVWUF9QS0VZX2Zy ZWUocGVlcl9rZXkpOworKwlpZiAoc2hhcmVkX3NlY3JldCkKKysJCU9QRU5TU0xfY2xlYXJfZnJl ZShzaGFyZWRfc2VjcmV0LCBzaGFyZWRfc2VjcmV0X2xlbik7CisrCUVWUF9QS0VZX0NUWF9mcmVl KGN0eCk7CisrCisrCXJldHVybiByOworK30KKysKKytzdGF0aWMgRVZQX1BLRVkgKgorK25pc3Rf cGtleV9rZXlnZW4oc2l6ZV90IHB1Yl9rZXlfbGVuKQorK3sKKysJY29uc3QgY2hhciAqY3VydmVf bmFtZSA9IGxlbjJjdXJ2ZV9uYW1lKHB1Yl9rZXlfbGVuKTsKKysJRVZQX1BLRVlfQ1RYICpwY3R4 ID0gTlVMTDsKKysJRVZQX1BLRVkgKnBrZXkgPSBOVUxMOworKwlPU1NMX1BBUkFNIHBhcmFtc1sy XTsKKysKKysJaWYgKGN1cnZlX25hbWUgPT0gTlVMTCkKKysJCXJldHVybiBOVUxMOworKworKwlw Y3R4ID0gRVZQX1BLRVlfQ1RYX25ld19mcm9tX25hbWUoTlVMTCwgIkVDIiwgTlVMTCk7CisrCWlm ICghcGN0eCkKKysJCXJldHVybiBOVUxMOworKworKwlpZiAoRVZQX1BLRVlfa2V5Z2VuX2luaXQo cGN0eCkgPD0gMCkgeworKwkJRVZQX1BLRVlfQ1RYX2ZyZWUocGN0eCk7CisrCQlyZXR1cm4gTlVM TDsKKysJfQorKworKwlwYXJhbXNbMF0gPSBPU1NMX1BBUkFNX2NvbnN0cnVjdF91dGY4X3N0cmlu ZyhPU1NMX1BLRVlfUEFSQU1fR1JPVVBfTkFNRSwgY3VydmVfbmFtZSwgMCk7CisrCXBhcmFtc1sx XSA9IE9TU0xfUEFSQU1fY29uc3RydWN0X2VuZCgpOworKworKwlpZiAoRVZQX1BLRVlfQ1RYX3Nl dF9wYXJhbXMocGN0eCwgcGFyYW1zKSA8PSAwCisrCSAgICB8fCBFVlBfUEtFWV9rZXlnZW4ocGN0 eCwgJnBrZXkpIDw9IDApIHsKKysJCUVWUF9QS0VZX0NUWF9mcmVlKHBjdHgpOworKwkJcmV0dXJu IE5VTEw7CisrCX0KKysKKysJRVZQX1BLRVlfQ1RYX2ZyZWUocGN0eCk7CisrCXJldHVybiBwa2V5 OworK30KKysKKytzdGF0aWMgc2l6ZV90IGRlY29tcHJlc3NfcHViX2tleSh2b2lkICpwdWIsIHNp emVfdCBjb21wcmVzc2VkX2xlbiwgc2l6ZV90IGRlY29tcHJlc3NlZF9sZW4pCisreworKyAgICBF Q19HUk9VUCAqZ3JvdXAgPSBOVUxMOworKyAgICBFQ19QT0lOVCAqcG9pbnQgPSBOVUxMOworKyAg ICBCTl9DVFggKmN0eCA9IE5VTEw7CisrICAgIHNpemVfdCBsZW4gPSAwOworKyAgICBpbnQgZ3Jv dXBfbmlkID0gTklEX3VuZGVmOworKworKyAgICBzd2l0Y2ggKGNvbXByZXNzZWRfbGVuKSB7Cisr ICAgIGNhc2UgTklTVF9QMjU2X0NPTVBSRVNTRURfTEVOOgorKyAgICAgICAgIGdyb3VwX25pZCA9 IE5JRF9YOV82Ml9wcmltZTI1NnYxOworKyAgICAgICBicmVhazsKKysgICAgY2FzZSBOSVNUX1Az ODRfQ09NUFJFU1NFRF9MRU46CisrICAgICAgICAgZ3JvdXBfbmlkID0gTklEX3NlY3AzODRyMTsK KysgICAgICAgYnJlYWs7CisrICAgIGRlZmF1bHQ6CisrICAgICAgIHJldHVybiAwOworKyAgICAg ICBicmVhazsKKysgICAgfQorKworKyAgICBjdHggPSBCTl9DVFhfbmV3KCk7CisrICAgIGdyb3Vw ID0gRUNfR1JPVVBfbmV3X2J5X2N1cnZlX25hbWUoZ3JvdXBfbmlkKTsKKysgICAgaWYgKGN0eCA9 PSBOVUxMIHx8IGdyb3VwID09IE5VTEwpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgcG9p bnQgPSBFQ19QT0lOVF9uZXcoZ3JvdXApOworKyAgICBpZiAocG9pbnQgPT0gTlVMTCkKKysgICAg ICAgIGdvdG8gZXJyOworKworKyAgICBpZiAoIUVDX1BPSU5UX29jdDJwb2ludChncm91cCwgcG9p bnQsIHB1YiwgY29tcHJlc3NlZF9sZW4sIGN0eCkpCisrICAgICAgICBnb3RvIGVycjsKKysKKysg ICAgbGVuID0gRUNfUE9JTlRfcG9pbnQyb2N0KGdyb3VwLCBwb2ludCwgUE9JTlRfQ09OVkVSU0lP Tl9VTkNPTVBSRVNTRUQsIHB1YiwgZGVjb21wcmVzc2VkX2xlbiwgY3R4KTsKKysKKytlcnI6Cisr ICAgIEVDX1BPSU5UX2ZyZWUocG9pbnQpOworKyAgICBFQ19HUk9VUF9mcmVlKGdyb3VwKTsKKysg ICAgQk5fQ1RYX2ZyZWUoY3R4KTsKKysKKysgICAgcmV0dXJuIGxlbjsKKyt9CisrCisrc3RhdGlj IGludAorK2dldF91bmNvbXByZXNzZWRfZWNfcHVia2V5KEVWUF9QS0VZICpwa2V5LCB1bnNpZ25l ZCBjaGFyICpidWYsIHNpemVfdCBidWZfbGVuKQorK3sKKysgICAgT1NTTF9QQVJBTSBwYXJhbXNb Ml07CisrICAgIHNpemVfdCByZXF1aXJlZF9sZW4gPSAwLCBvdXRfbGVuID0gMDsKKysKKysgICAg cGFyYW1zWzBdID0gT1NTTF9QQVJBTV9jb25zdHJ1Y3RfdXRmOF9zdHJpbmcoCisrICAgICAgICBP U1NMX1BLRVlfUEFSQU1fRUNfUE9JTlRfQ09OVkVSU0lPTl9GT1JNQVQsCisrICAgICAgICAidW5j b21wcmVzc2VkIiwgMCk7CisrICAgIHBhcmFtc1sxXSA9IE9TU0xfUEFSQU1fY29uc3RydWN0X2Vu ZCgpOworKworKyAgICBpZiAoRVZQX1BLRVlfc2V0X3BhcmFtcyhwa2V5LCBwYXJhbXMpIDw9IDAK KysJICAgIHx8IEVWUF9QS0VZX2dldF9vY3RldF9zdHJpbmdfcGFyYW0ocGtleSwgT1NTTF9QS0VZ X1BBUkFNX1BVQl9LRVksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYnVmLCBidWZfbGVuLCAmcmVxdWlyZWRfbGVuKSA8PSAwKSB7CisrICAgICAgICByZXR1cm4g U1NIX0VSUl9MSUJDUllQVE9fRVJST1I7CisrICAgIH0KKysKKysgICAgaWYgKHJlcXVpcmVkX2xl biAhPSBidWZfbGVuKSB7CisrICAgICAgICAvKiBSZWQgSGF0IGNlcnRpZmllZCBGSVBTIHByb3Zp ZGVyIGlnbm9yZXMgT1NTTF9QS0VZX1BBUkFNX0VDX1BPSU5UX0NPTlZFUlNJT05fRk9STUFUCisr CSAqIFdlIG1heSBoYXZlIHRvIHBlcmZvcm0gdGhlIGNvbnZlcnNpb24gbWFudWFsbHkgKi8KKysg ICAgICAgIGlmIChsZW4yY3VydmVfbmFtZShyZXF1aXJlZF9sZW4pID09IGxlbjJjdXJ2ZV9uYW1l KGJ1Zl9sZW4pKSB7CisrCSAgICBvdXRfbGVuID0gZGVjb21wcmVzc19wdWJfa2V5KGJ1ZiwgcmVx dWlyZWRfbGVuLCBidWZfbGVuKTsKKysJICAgIGlmIChvdXRfbGVuICE9IGJ1Zl9sZW4pIHsKKysJ ICAgICAgICBkZWJ1Z19mKCJFcnJvciBkZWNvbXByZXNzaW5nIHRoZSBjb21wcmVzc2VkIHB1Ymxp YyBrZXkiKTsKKysJICAgICAgICByZXR1cm4gU1NIX0VSUl9MSUJDUllQVE9fRVJST1I7CisrCSAg ICB9IGVsc2UgeworKwkJcmV0dXJuIDA7CisrCSAgICB9CisrCX0gZWxzZSB7CisrCSAgICBkZWJ1 Z19mKCJVbmV4cGVjdGVkIGxlbmd0aCBvZiB1bmNvbXByZXNzZWQgcHVibGljIGtleTogZXhwZWN0 ZWQgJWQsIGdvdCAlZCIsIGJ1Zl9sZW4sIHJlcXVpcmVkX2xlbik7CisrCSAgICByZXR1cm4gU1NI X0VSUl9MSUJDUllQVE9fRVJST1I7CisrCX0KKysgICAgfQorKworKyAgICByZXR1cm4gMDsKKyt9 CisrLyogbmlzdF9ieXRlc19sZW4gc2hvdWxkIGFsd2F5cyBiZSB1bmNvbXByZXNzZWQgKi8KKytz dGF0aWMgaW50Cisra2V4X2tlbV9tbGtlbV9uaXN0X2tleXBhaXIoc3RydWN0IGtleCAqa2V4LCBz aXplX3QgbWxrZW1fYnl0ZXNfbGVuLCBzaXplX3QgbmlzdF9ieXRlc19sZW4pCisreworKwlzdHJ1 Y3Qgc3NoYnVmICpidWYgPSBOVUxMOworKwl1X2NoYXIgKmNwID0gTlVMTDsKKysJc2l6ZV90IG5l ZWQ7CisrCWludCByID0gU1NIX0VSUl9JTlRFUk5BTF9FUlJPUjsKKysJdV9jaGFyICpjbGllbnRf a2V5ID0gTlVMTDsKKysKKysJaWYgKChidWYgPSBzc2hidWZfbmV3KCkpID09IE5VTEwpCisrCQly ZXR1cm4gU1NIX0VSUl9BTExPQ19GQUlMOworKwluZWVkID0gbWxrZW1fYnl0ZXNfbGVuICsgbmlz dF9ieXRlc19sZW47CisrCWlmICgociA9IHNzaGJ1Zl9yZXNlcnZlKGJ1ZiwgbmVlZCwgJmNwKSkg IT0gMCkKKysJCWdvdG8gb3V0OworKworKwlpZiAobWxrZW1fYnl0ZXNfbGVuID09IGNyeXB0b19r ZW1fbWxrZW03NjhfUFVCTElDS0VZQllURVMpIHsKKysJCWNsaWVudF9rZXkgPSBrZXgtPm1sa2Vt NzY4X2NsaWVudF9rZXk7CisrCQlyID0gbWxrZW03Njhfa2V5cGFpcl9nZW4oY3AsIGNsaWVudF9r ZXkpOworKwl9CisrCisrCWlmIChtbGtlbV9ieXRlc19sZW4gPT0gY3J5cHRvX2tlbV9tbGtlbTEw MjRfUFVCTElDS0VZQllURVMpIHsKKysJCWNsaWVudF9rZXkgPSBrZXgtPm1sa2VtMTAyNF9jbGll bnRfa2V5OworKwkJciA9IG1sa2VtMTAyNF9rZXlwYWlyX2dlbihjcCwgY2xpZW50X2tleSk7Cisr CX0KKysKKysJaWYgKGNsaWVudF9rZXkgPT0gTlVMTCkKKysJCWdvdG8gb3V0OworKworKwlpZiAo ciAhPSAwKQorKwkJZ290byBvdXQ7CisrI2lmZGVmIERFQlVHX0tFWEVDREgKKysJZHVtcF9kaWdl c3QoImNsaWVudCBwdWJsaWMga2V5IG1sa2VtWFhYOiIsIGNwLCBtbGtlbV9ieXRlc19sZW4pOwor KyNlbmRpZgorKwljcCArPSBtbGtlbV9ieXRlc19sZW47CisrCWlmICgoa2V4LT5lY19oeWJyaWRf Y2xpZW50X2tleSA9IG5pc3RfcGtleV9rZXlnZW4obmlzdF9ieXRlc19sZW4pKSA9PSBOVUxMKQor KwkJZ290byBvdXQ7CisrCisrCWlmICgociA9IGdldF91bmNvbXByZXNzZWRfZWNfcHVia2V5KGtl eC0+ZWNfaHlicmlkX2NsaWVudF9rZXksIGNwLCBuaXN0X2J5dGVzX2xlbikpICE9IDApCisrCQln b3RvIG91dDsKKysKKysjaWZkZWYgREVCVUdfS0VYRUNESAorKwlkdW1wX2RpZ2VzdCgiY2xpZW50 IHB1YmxpYyBrZXkgTklTVDoiLCBjcCwgbmlzdF9ieXRlc19sZW4pOworKyNlbmRpZgorKwkvKiBz dWNjZXNzICovCisrCXIgPSAwOworKwlrZXgtPmNsaWVudF9wdWIgPSBidWY7CisrCWJ1ZiA9IE5V TEw7CisrIG91dDoKKysJc3NoYnVmX2ZyZWUoYnVmKTsKKysgICAgICAgIGlmIChyID09IFNTSF9F UlJfTElCQ1JZUFRPX0VSUk9SKQorKwkgICBFUlJfcHJpbnRfZXJyb3JzX2ZwKHN0ZGVycik7Cisr CisrCXJldHVybiByOworK30KKysKKytzdGF0aWMgaW50Cisra2V4X2tlbV9tbGtlbV9uaXN0X2Vu YyhzdHJ1Y3Qga2V4ICprZXgsIGNvbnN0IGNoYXIgKm5pc3RfY3VydmUsCisrICAgY29uc3Qgc3Ry dWN0IHNzaGJ1ZiAqY2xpZW50X2Jsb2IsIHN0cnVjdCBzc2hidWYgKipzZXJ2ZXJfYmxvYnAsCisr ICAgc3RydWN0IHNzaGJ1ZiAqKnNoYXJlZF9zZWNyZXRwKQorK3sKKysJc3RydWN0IHNzaGJ1ZiAq c2VydmVyX2Jsb2IgPSBOVUxMOworKwlzdHJ1Y3Qgc3NoYnVmICpidWYgPSBOVUxMOworKwljb25z dCB1X2NoYXIgKmNsaWVudF9wdWI7CisrCXVfY2hhciBzZXJ2ZXJfcHViW05JU1RfQlVGX01BWF9T SVpFXTsKKysJdV9jaGFyIGVuY19vdXRbY3J5cHRvX2tlbV9tbGtlbTEwMjRfQ0lQSEVSVEVYVEJZ VEVTXTsKKysJdV9jaGFyIHNlY3JldFtjcnlwdG9fa2VtX21sa2VtNzY4X0JZVEVTXTsKKysJRVZQ X1BLRVkgKnNlcnZlcl9rZXkgPSBOVUxMOworKwl1X2NoYXIgaGFzaFtTU0hfRElHRVNUX01BWF9M RU5HVEhdOworKwlzaXplX3QgY2xpZW50X2J1Zl9sZW4sIG1sa2VtX2J1Zl9sZW4sIGVjZGhfYnVm X2xlbiwgc2VydmVyX2tleV9sZW4sIGVuY19vdXRfbGVuOworKwlpbnQgciA9IFNTSF9FUlJfSU5U RVJOQUxfRVJST1I7CisrCisrCSpzZXJ2ZXJfYmxvYnAgPSBOVUxMOworKwkqc2hhcmVkX3NlY3Jl dHAgPSBOVUxMOworKworKwljbGllbnRfYnVmX2xlbiA9IHNzaGJ1Zl9sZW4oY2xpZW50X2Jsb2Ip OworKwkvKiBjbGllbnRfYmxvYiBjb250YWlucyBib3RoIEtFTSBhbmQgRUNESCBjbGllbnQgcHVi a2V5cyAqLworKwlpZiAoc3RyY21wKG5pc3RfY3VydmUsICJQLTI1NiIpID09IDApIHsKKysJCWlm IChjcnlwdG9fa2VtX21sa2VtNzY4X1BVQkxJQ0tFWUJZVEVTID4gY2xpZW50X2J1Zl9sZW4pCisr CQkJcmV0dXJuIHI7CisrCisrCQllY2RoX2J1Zl9sZW4gPSBjbGllbnRfYnVmX2xlbiAtIGNyeXB0 b19rZW1fbWxrZW03NjhfUFVCTElDS0VZQllURVM7CisrCQlpZiAoZWNkaF9idWZfbGVuICE9IE5J U1RfUDI1Nl9DT01QUkVTU0VEX0xFTiAmJgorKwkJCWVjZGhfYnVmX2xlbiAhPSBOSVNUX1AyNTZf VU5DT01QUkVTU0VEX0xFTikKKysJCQlyZXR1cm4gcjsKKysJCW1sa2VtX2J1Zl9sZW4gPSBjcnlw dG9fa2VtX21sa2VtNzY4X1BVQkxJQ0tFWUJZVEVTOworKwkJZW5jX291dF9sZW4gPSBjcnlwdG9f a2VtX21sa2VtNzY4X0NJUEhFUlRFWFRCWVRFUzsKKysJCXNlcnZlcl9rZXlfbGVuID0gTklTVF9Q MjU2X1VOQ09NUFJFU1NFRF9MRU47CisrCX0gZWxzZSBpZiAoc3RyY21wKG5pc3RfY3VydmUsICJQ LTM4NCIpID09IDApIHsKKysJCWlmIChjcnlwdG9fa2VtX21sa2VtMTAyNF9QVUJMSUNLRVlCWVRF UyA+IGNsaWVudF9idWZfbGVuKQorKwkJCXJldHVybiByOworKworKwkJZWNkaF9idWZfbGVuID0g Y2xpZW50X2J1Zl9sZW4gLSBjcnlwdG9fa2VtX21sa2VtMTAyNF9QVUJMSUNLRVlCWVRFUzsKKysJ CWlmIChlY2RoX2J1Zl9sZW4gIT0gTklTVF9QMzg0X0NPTVBSRVNTRURfTEVOICYmCisrCQkJZWNk aF9idWZfbGVuICE9IE5JU1RfUDM4NF9VTkNPTVBSRVNTRURfTEVOKQorKwkJCXJldHVybiByOwor KwkJbWxrZW1fYnVmX2xlbiA9IGNyeXB0b19rZW1fbWxrZW0xMDI0X1BVQkxJQ0tFWUJZVEVTOwor KwkJZW5jX291dF9sZW4gPSBjcnlwdG9fa2VtX21sa2VtMTAyNF9DSVBIRVJURVhUQllURVM7Cisr CQlzZXJ2ZXJfa2V5X2xlbiA9IE5JU1RfUDM4NF9VTkNPTVBSRVNTRURfTEVOOworKwl9IGVsc2UK KysJCXJldHVybiByOworKworKwljbGllbnRfcHViID0gc3NoYnVmX3B0cihjbGllbnRfYmxvYik7 CisrI2lmZGVmIERFQlVHX0tFWEVDREgKKysJZHVtcF9kaWdlc3QoImNsaWVudCBwdWJsaWMga2V5 IG1sa2VtOiIsIGNsaWVudF9wdWIsIG1sa2VtX2J1Zl9sZW4pOworKwlkdW1wX2RpZ2VzdCgiY2xp ZW50IHB1YmxpYyBrZXkgTklTVDoiLCBjbGllbnRfcHViICsgbWxrZW1fYnVmX2xlbiwgZWNkaF9i dWZfbGVuKTsKKysjZW5kaWYKKysKKysJLyogYWxsb2NhdGUgYnVmZmVyIGZvciBjb25jYXRlbmF0 aW9uIG9mIEtFTSBrZXkgYW5kIEVDREggc2hhcmVkIGtleSAqLworKwkvKiB0aGUgYnVmZmVyIHdp bGwgYmUgaGFzaGVkIGFuZCB0aGUgcmVzdWx0IGlzIHRoZSBzaGFyZWQgc2VjcmV0ICovCisrCWlm ICgoYnVmID0gc3NoYnVmX25ldygpKSA9PSBOVUxMKSB7CisrCQlyID0gU1NIX0VSUl9BTExPQ19G QUlMOworKwkJZ290byBvdXQ7CisrCX0KKysJLyogYWxsb2NhdGUgc3BhY2UgZm9yIGVuY3J5cHRl ZCBLRU0ga2V5IGFuZCBFQ0RIIHB1YiBrZXkgKi8KKysJaWYgKChzZXJ2ZXJfYmxvYiA9IHNzaGJ1 Zl9uZXcoKSkgPT0gTlVMTCkgeworKwkJciA9IFNTSF9FUlJfQUxMT0NfRkFJTDsKKysJCWdvdG8g b3V0OworKwl9CisrCXIgPSAobWxrZW1fYnVmX2xlbiA9PSBjcnlwdG9fa2VtX21sa2VtNzY4X1BV QkxJQ0tFWUJZVEVTKSA/CisrCQltbGtlbTc2OF9lbmNhcF9zZWNyZXQoY2xpZW50X3B1Yiwgc2Vj cmV0LCBlbmNfb3V0KSA6CisrCQltbGtlbTEwMjRfZW5jYXBfc2VjcmV0KGNsaWVudF9wdWIsIHNl Y3JldCwgZW5jX291dCk7CisrCisrCWlmIChyICE9IDApCisrCQlnb3RvIG91dDsKKysKKysJLyog Z2VuZXJhdGUgRUNESCBrZXkgcGFpciwgc3RvcmUgc2VydmVyIHB1YmtleSBhZnRlciBjaXBoZXJ0 ZXh0ICovCisrCXNlcnZlcl9rZXkgPSBuaXN0X3BrZXlfa2V5Z2VuKHNlcnZlcl9rZXlfbGVuKTsK KysKKysJaWYgKChzZXJ2ZXJfa2V5ID09IE5VTEwpIHx8CisrCSAgICAociA9IGdldF91bmNvbXBy ZXNzZWRfZWNfcHVia2V5KHNlcnZlcl9rZXksIHNlcnZlcl9wdWIsIHNlcnZlcl9rZXlfbGVuKSAh PSAwKSB8fAorKwkgICAgKHIgPSBzc2hidWZfcHV0KGJ1Ziwgc2VjcmV0LCBzaXplb2Yoc2VjcmV0 KSkpICE9IDAgfHwKKysJICAgIChyID0gc3NoYnVmX3B1dChzZXJ2ZXJfYmxvYiwgZW5jX291dCwg ZW5jX291dF9sZW4pICE9IDApfHwKKysJICAgIChyID0gc3NoYnVmX3B1dChzZXJ2ZXJfYmxvYiwg c2VydmVyX3B1Yiwgc2VydmVyX2tleV9sZW4pKSAhPSAwKQorKwkJZ290byBvdXQ7CisrCisrCS8q IGFwcGVuZCBFQ0RIIHNoYXJlZCBrZXkgKi8KKysJY2xpZW50X3B1YiArPSBtbGtlbV9idWZfbGVu OworKwlpZiAoKHIgPSBrZXhfbmlzdF9zaGFyZWRfa2V5X2V4dChzZXJ2ZXJfa2V5LCBjbGllbnRf cHViLCBlY2RoX2J1Zl9sZW4sIGJ1ZikpIDwgMCkKKysJCWdvdG8gb3V0OworKwlpZiAoKHIgPSBz c2hfZGlnZXN0X2J1ZmZlcihrZXgtPmhhc2hfYWxnLCBidWYsIGhhc2gsIHNpemVvZihoYXNoKSkp ICE9IDApCisrCQlnb3RvIG91dDsKKysjaWZkZWYgREVCVUdfS0VYRUNESAorKwlkdW1wX2RpZ2Vz dCgic2VydmVyIHB1YmxpYyBOSVNUOiIsIHNlcnZlcl9wdWIsIHNlcnZlcl9rZXlfbGVuKTsKKysJ ZHVtcF9kaWdlc3QoInNlcnZlciBjaXBoZXIgdGV4dDoiLCBlbmNfb3V0LCBlbmNfb3V0X2xlbik7 CisrCWR1bXBfZGlnZXN0KCJzZXJ2ZXIga2VtIGtleToiLCBzZWNyZXQsIHNpemVvZihzZWNyZXQp KTsKKysJZHVtcF9kaWdlc3QoImNvbmNhdGVuYXRpb24gb2YgS0VNIGtleSBhbmQgRUNESCBzaGFy ZWQga2V5OiIsCisrCSAgICBzc2hidWZfcHRyKGJ1ZiksIHNzaGJ1Zl9sZW4oYnVmKSk7CisrI2Vu ZGlmCisrCS8qIHN0cmluZy1lbmNvZGVkIGhhc2ggaXMgcmVzdWx0aW5nIHNoYXJlZCBzZWNyZXQg Ki8KKysJc3NoYnVmX3Jlc2V0KGJ1Zik7CisrCWlmICgociA9IHNzaGJ1Zl9wdXRfc3RyaW5nKGJ1 ZiwgaGFzaCwKKysJICAgIHNzaF9kaWdlc3RfYnl0ZXMoa2V4LT5oYXNoX2FsZykpKSAhPSAwKQor KwkJZ290byBvdXQ7CisrI2lmZGVmIERFQlVHX0tFWEVDREgKKysJZHVtcF9kaWdlc3QoImVuY29k ZWQgc2hhcmVkIHNlY3JldDoiLCBzc2hidWZfcHRyKGJ1ZiksIHNzaGJ1Zl9sZW4oYnVmKSk7Cisr I2VuZGlmCisrCS8qIHN1Y2Nlc3MgKi8KKysJciA9IDA7CisrCSpzZXJ2ZXJfYmxvYnAgPSBzZXJ2 ZXJfYmxvYjsKKysJKnNoYXJlZF9zZWNyZXRwID0gYnVmOworKwlzZXJ2ZXJfYmxvYiA9IE5VTEw7 CisrCWJ1ZiA9IE5VTEw7CisrIG91dDoKKysJZXhwbGljaXRfYnplcm8oaGFzaCwgc2l6ZW9mKGhh c2gpKTsKKysJRVZQX1BLRVlfZnJlZShzZXJ2ZXJfa2V5KTsKKysJZXhwbGljaXRfYnplcm8oZW5j X291dCwgc2l6ZW9mKGVuY19vdXQpKTsKKysJZXhwbGljaXRfYnplcm8oc2VjcmV0LCBzaXplb2Yo c2VjcmV0KSk7CisrCXNzaGJ1Zl9mcmVlKHNlcnZlcl9ibG9iKTsKKysJc3NoYnVmX2ZyZWUoYnVm KTsKKysJcmV0dXJuIHI7CisrfQorKworK3N0YXRpYyBpbnQKKytrZXhfa2VtX21sa2VtX25pc3Rf ZGVjKHN0cnVjdCBrZXggKmtleCwKKysgICAgY29uc3Qgc3RydWN0IHNzaGJ1ZiAqc2VydmVyX2Js b2IsIHN0cnVjdCBzc2hidWYgKipzaGFyZWRfc2VjcmV0cCwKKysgICAgc2l6ZV90IG1sa2VtX2xl bikKKyt7CisrCXN0cnVjdCBzc2hidWYgKmJ1ZiA9IE5VTEw7CisrCWNvbnN0IHVfY2hhciAqY2lw aGVydGV4dCwgKnNlcnZlcl9wdWI7CisrCXVfY2hhciBoYXNoW1NTSF9ESUdFU1RfTUFYX0xFTkdU SF07CisrCXVfY2hhciBkZWNhcFtjcnlwdG9fa2VtX21sa2VtNzY4X0JZVEVTXTsKKysJaW50IHI7 CisrCXNpemVfdCBuaXN0X2xlbjsKKysKKysJKnNoYXJlZF9zZWNyZXRwID0gTlVMTDsKKysKKysJ aWYgKHNzaGJ1Zl9sZW4oc2VydmVyX2Jsb2IpIDwgbWxrZW1fbGVuKSB7CisrCQlyID0gU1NIX0VS Ul9TSUdOQVRVUkVfSU5WQUxJRDsKKysJCWdvdG8gb3V0OworKwl9CisrCisrCW5pc3RfbGVuID0g c3NoYnVmX2xlbihzZXJ2ZXJfYmxvYikgLSBtbGtlbV9sZW47CisrCisrCXN3aXRjaCAobWxrZW1f bGVuKSB7CisrCQljYXNlIGNyeXB0b19rZW1fbWxrZW03NjhfQ0lQSEVSVEVYVEJZVEVTOgorKwkJ CWlmIChuaXN0X2xlbiAhPSBOSVNUX1AyNTZfQ09NUFJFU1NFRF9MRU4KKysJCQkJJiYgbmlzdF9s ZW4gIT0gTklTVF9QMjU2X1VOQ09NUFJFU1NFRF9MRU4pIHsKKysJCQkJciA9IFNTSF9FUlJfU0lH TkFUVVJFX0lOVkFMSUQ7CisrCQkJCWdvdG8gb3V0OworKwkJCX0KKysJCWJyZWFrOworKwkJY2Fz ZSBjcnlwdG9fa2VtX21sa2VtMTAyNF9DSVBIRVJURVhUQllURVM6CisrCQkJaWYgKG5pc3RfbGVu ICE9IE5JU1RfUDM4NF9DT01QUkVTU0VEX0xFTgorKwkJCQkmJiBuaXN0X2xlbiAhPSBOSVNUX1Az ODRfVU5DT01QUkVTU0VEX0xFTikgeworKwkJCQlyID0gU1NIX0VSUl9TSUdOQVRVUkVfSU5WQUxJ RDsKKysJCQkJZ290byBvdXQ7CisrCQkJfQorKwkJYnJlYWs7CisrCX0KKysKKysJY2lwaGVydGV4 dCA9IHNzaGJ1Zl9wdHIoc2VydmVyX2Jsb2IpOworKwlzZXJ2ZXJfcHViID0gY2lwaGVydGV4dCAr IG1sa2VtX2xlbjsKKysJLyogaGFzaCBjb25jYXRlbmF0aW9uIG9mIEtFTSBrZXkgYW5kIEVDREgg c2hhcmVkIGtleSAqLworKwlpZiAoKGJ1ZiA9IHNzaGJ1Zl9uZXcoKSkgPT0gTlVMTCkgeworKwkJ ciA9IFNTSF9FUlJfQUxMT0NfRkFJTDsKKysJCWdvdG8gb3V0OworKwl9CisrI2lmZGVmIERFQlVH X0tFWEVDREgKKysJZHVtcF9kaWdlc3QoInNlcnZlciBjaXBoZXIgdGV4dDoiLCBjaXBoZXJ0ZXh0 LCBtbGtlbV9sZW4pOworKwlkdW1wX2RpZ2VzdCgic2VydmVyIHB1YmxpYyBrZXkgTklTVDoiLCBz ZXJ2ZXJfcHViLCBuaXN0X2xlbik7CisrI2VuZGlmCisrCXIgPSAobWxrZW1fbGVuID09IGNyeXB0 b19rZW1fbWxrZW03NjhfQ0lQSEVSVEVYVEJZVEVTKSA/CisrCQltbGtlbTc2OF9kZWNhcF9zZWNy ZXQoa2V4LT5tbGtlbTc2OF9jbGllbnRfa2V5LCBjaXBoZXJ0ZXh0LCBkZWNhcCkgOgorKwkJbWxr ZW0xMDI0X2RlY2FwX3NlY3JldChrZXgtPm1sa2VtMTAyNF9jbGllbnRfa2V5LCBjaXBoZXJ0ZXh0 LCBkZWNhcCk7CisrCisrCWlmIChyICE9IDApCisrCQlnb3RvIG91dDsKKysJaWYgKChyID0gc3No YnVmX3B1dChidWYsIGRlY2FwLCBzaXplb2YoZGVjYXApKSkgIT0gMCkKKysJCWdvdG8gb3V0Owor KwlpZiAoKHIgPSBrZXhfbmlzdF9zaGFyZWRfa2V5X2V4dChrZXgtPmVjX2h5YnJpZF9jbGllbnRf a2V5LCBzZXJ2ZXJfcHViLAorKwkJbmlzdF9sZW4sIGJ1ZikpIDwgMCkKKysJCWdvdG8gb3V0Owor KwlpZiAoKHIgPSBzc2hfZGlnZXN0X2J1ZmZlcihrZXgtPmhhc2hfYWxnLCBidWYsCisrCSAgICBo YXNoLCBzaXplb2YoaGFzaCkpKSAhPSAwKQorKwkJZ290byBvdXQ7CisrI2lmZGVmIERFQlVHX0tF WEVDREgKKysJZHVtcF9kaWdlc3QoImNsaWVudCBrZW0ga2V5OiIsIGRlY2FwLCBzaXplb2YoZGVj YXApKTsKKysJZHVtcF9kaWdlc3QoImNvbmNhdGVuYXRpb24gb2YgS0VNIGtleSBhbmQgRUNESCBz aGFyZWQga2V5OiIsCisrCSAgICBzc2hidWZfcHRyKGJ1ZiksIHNzaGJ1Zl9sZW4oYnVmKSk7Cisr I2VuZGlmCisrCXNzaGJ1Zl9yZXNldChidWYpOworKwlpZiAoKHIgPSBzc2hidWZfcHV0X3N0cmlu ZyhidWYsIGhhc2gsCisrCSAgICBzc2hfZGlnZXN0X2J5dGVzKGtleC0+aGFzaF9hbGcpKSkgIT0g MCkKKysJCWdvdG8gb3V0OworKyNpZmRlZiBERUJVR19LRVhFQ0RICisrCWR1bXBfZGlnZXN0KCJl bmNvZGVkIHNoYXJlZCBzZWNyZXQ6Iiwgc3NoYnVmX3B0cihidWYpLCBzc2hidWZfbGVuKGJ1Zikp OworKyNlbmRpZgorKwkvKiBzdWNjZXNzICovCisrCXIgPSAwOworKwkqc2hhcmVkX3NlY3JldHAg PSBidWY7CisrCWJ1ZiA9IE5VTEw7CisrIG91dDoKKysJZXhwbGljaXRfYnplcm8oaGFzaCwgc2l6 ZW9mKGhhc2gpKTsKKysJZXhwbGljaXRfYnplcm8oZGVjYXAsIHNpemVvZihkZWNhcCkpOworKwlz c2hidWZfZnJlZShidWYpOworKwlyZXR1cm4gcjsKKyt9CisrCisraW50Cisra2V4X2tlbV9tbGtl bTc2OG5pc3RwMjU2X2tleXBhaXIoc3RydWN0IGtleCAqa2V4KQorK3sKKysJcmV0dXJuIGtleF9r ZW1fbWxrZW1fbmlzdF9rZXlwYWlyKGtleCwgY3J5cHRvX2tlbV9tbGtlbTc2OF9QVUJMSUNLRVlC WVRFUywgTklTVF9QMjU2X1VOQ09NUFJFU1NFRF9MRU4pOworK30KKysKKytpbnQKKytrZXhfa2Vt X21sa2VtNzY4bmlzdHAyNTZfZW5jKHN0cnVjdCBrZXggKmtleCwgY29uc3Qgc3RydWN0IHNzaGJ1 ZiAqY2xpZW50X2Jsb2IsCisrICAgIHN0cnVjdCBzc2hidWYgKipzZXJ2ZXJfYmxvYnAsIHN0cnVj dCBzc2hidWYgKipzaGFyZWRfc2VjcmV0cCkKKyt7CisrCXJldHVybiBrZXhfa2VtX21sa2VtX25p c3RfZW5jKGtleCwgIlAtMjU2IiwgY2xpZW50X2Jsb2IsIHNlcnZlcl9ibG9icCwgc2hhcmVkX3Nl Y3JldHApOworK30KKysKKytpbnQKKytrZXhfa2VtX21sa2VtNzY4bmlzdHAyNTZfZGVjKHN0cnVj dCBrZXggKmtleCwgY29uc3Qgc3RydWN0IHNzaGJ1ZiAqc2VydmVyX2Jsb2IsCisrICAgIHN0cnVj dCBzc2hidWYgKipzaGFyZWRfc2VjcmV0cCkKKyt7CisrCXJldHVybiBrZXhfa2VtX21sa2VtX25p c3RfZGVjKGtleCwgc2VydmVyX2Jsb2IsIHNoYXJlZF9zZWNyZXRwLAorKwkJY3J5cHRvX2tlbV9t bGtlbTc2OF9DSVBIRVJURVhUQllURVMpOworK30KKysKKytpbnQKKytrZXhfa2VtX21sa2VtMTAy NG5pc3RwMzg0X2tleXBhaXIoc3RydWN0IGtleCAqa2V4KQorK3sKKysJcmV0dXJuIGtleF9rZW1f bWxrZW1fbmlzdF9rZXlwYWlyKGtleCwgY3J5cHRvX2tlbV9tbGtlbTEwMjRfUFVCTElDS0VZQllU RVMsIE5JU1RfUDM4NF9VTkNPTVBSRVNTRURfTEVOKTsKKyt9CisrCisraW50Cisra2V4X2tlbV9t bGtlbTEwMjRuaXN0cDM4NF9lbmMoc3RydWN0IGtleCAqa2V4LCBjb25zdCBzdHJ1Y3Qgc3NoYnVm ICpjbGllbnRfYmxvYiwKKysgICAgc3RydWN0IHNzaGJ1ZiAqKnNlcnZlcl9ibG9icCwgc3RydWN0 IHNzaGJ1ZiAqKnNoYXJlZF9zZWNyZXRwKQorK3sKKysJcmV0dXJuIGtleF9rZW1fbWxrZW1fbmlz dF9lbmMoa2V4LCAiUC0zODQiLCBjbGllbnRfYmxvYiwgc2VydmVyX2Jsb2JwLCBzaGFyZWRfc2Vj cmV0cCk7CisrfQorKworK2ludAorK2tleF9rZW1fbWxrZW0xMDI0bmlzdHAzODRfZGVjKHN0cnVj dCBrZXggKmtleCwgY29uc3Qgc3RydWN0IHNzaGJ1ZiAqc2VydmVyX2Jsb2IsCisrICAgIHN0cnVj dCBzc2hidWYgKipzaGFyZWRfc2VjcmV0cCkKKyt7CisrCXJldHVybiBrZXhfa2VtX21sa2VtX25p c3RfZGVjKGtleCwgc2VydmVyX2Jsb2IsIHNoYXJlZF9zZWNyZXRwLAorKwkJY3J5cHRvX2tlbV9t bGtlbTEwMjRfQ0lQSEVSVEVYVEJZVEVTKTsKKyt9CisrCisgI2Vsc2UgLyogVVNFX01MS0VNNzY4 WDI1NTE5ICovCisgaW50Cisga2V4X2tlbV9tbGtlbTc2OHgyNTUxOV9rZXlwYWlyKHN0cnVjdCBr ZXggKmtleCkKK0BAIC01NTAsNCArMTE0OSwzOSBAQCBrZXhfa2VtX21sa2VtNzY4eDI1NTE5X2Rl YyhzdHJ1Y3Qga2V4ICprZXgsCisgeworIAlyZXR1cm4gU1NIX0VSUl9TSUdOX0FMR19VTlNVUFBP UlRFRDsKKyB9CisrCisraW50CSBrZXhfa2VtX21sa2VtNzY4bmlzdHAyNTZfa2V5cGFpcihzdHJ1 Y3Qga2V4ICopCisreworKwlyZXR1cm4gU1NIX0VSUl9TSUdOX0FMR19VTlNVUFBPUlRFRDsKKyt9 CisrCisraW50CSBrZXhfa2VtX21sa2VtNzY4bmlzdHAyNTZfZW5jKHN0cnVjdCBrZXggKiwgY29u c3Qgc3RydWN0IHNzaGJ1ZiAqLAorKyAgICBzdHJ1Y3Qgc3NoYnVmICoqLCBzdHJ1Y3Qgc3NoYnVm ICoqKQorK3sKKysJcmV0dXJuIFNTSF9FUlJfU0lHTl9BTEdfVU5TVVBQT1JURUQ7CisrfQorKwor K2ludAkga2V4X2tlbV9tbGtlbTc2OG5pc3RwMjU2X2RlYyhzdHJ1Y3Qga2V4ICosIGNvbnN0IHN0 cnVjdCBzc2hidWYgKiwKKysgICAgc3RydWN0IHNzaGJ1ZiAqKikKKyt7CisrCXJldHVybiBTU0hf RVJSX1NJR05fQUxHX1VOU1VQUE9SVEVEOworK30KKysKKytpbnQJIGtleF9rZW1fbWxrZW0xMDI0 bmlzdHAzODRfa2V5cGFpcihzdHJ1Y3Qga2V4ICopCisreworKwlyZXR1cm4gU1NIX0VSUl9TSUdO X0FMR19VTlNVUFBPUlRFRDsKKyt9CisrCisraW50CSBrZXhfa2VtX21sa2VtMTAyNG5pc3RwMzg0 X2VuYyhzdHJ1Y3Qga2V4ICosIGNvbnN0IHN0cnVjdCBzc2hidWYgKiwKKysgICAgc3RydWN0IHNz aGJ1ZiAqKiwgc3RydWN0IHNzaGJ1ZiAqKikKKyt7CisrCXJldHVybiBTU0hfRVJSX1NJR05fQUxH X1VOU1VQUE9SVEVEOworK30KKysKKytpbnQJIGtleF9rZW1fbWxrZW0xMDI0bmlzdHAzODRfZGVj KHN0cnVjdCBrZXggKiwgY29uc3Qgc3RydWN0IHNzaGJ1ZiAqLAorKyAgICBzdHJ1Y3Qgc3NoYnVm ICoqKQorK3sKKysJcmV0dXJuIFNTSF9FUlJfU0lHTl9BTEdfVU5TVVBQT1JURUQ7CisrfQorKwor ICNlbmRpZiAvKiBVU0VfTUxLRU03NjhYMjU1MTkgKi8KK2RpZmYgLS1naXQgYS9tb25pdG9yLmMg Yi9tb25pdG9yLmMKK2luZGV4IDAzOTNjNzFhYS4uNjMxODBlMmE5IDEwMDY0NAorLS0tIGEvbW9u aXRvci5jCisrKysgYi9tb25pdG9yLmMKK0BAIC0yMDI0LDYgKzIwMjQsOCBAQCBtb25pdG9yX2Fw cGx5X2tleXN0YXRlKHN0cnVjdCBzc2ggKnNzaCwgc3RydWN0IG1vbml0b3IgKnBtb25pdG9yKQor IAlrZXgtPmtleFtLRVhfQzI1NTE5X1NIQTI1Nl0gPSBrZXhfZ2VuX3NlcnZlcjsKKyAJa2V4LT5r ZXhbS0VYX0tFTV9TTlRSVVA3NjFYMjU1MTlfU0hBNTEyXSA9IGtleF9nZW5fc2VydmVyOworIAlr ZXgtPmtleFtLRVhfS0VNX01MS0VNNzY4WDI1NTE5X1NIQTI1Nl0gPSBrZXhfZ2VuX3NlcnZlcjsK KysJa2V4LT5rZXhbS0VYX0tFTV9NTEtFTTc2OE5JU1RQMjU2X1NIQTI1Nl0gPSBrZXhfZ2VuX3Nl cnZlcjsKKysJa2V4LT5rZXhbS0VYX0tFTV9NTEtFTTEwMjROSVNUUDM4NF9TSEEzODRdID0ga2V4 X2dlbl9zZXJ2ZXI7CisgCWtleC0+bG9hZF9ob3N0X3B1YmxpY19rZXk9JmdldF9ob3N0a2V5X3B1 YmxpY19ieV90eXBlOworIAlrZXgtPmxvYWRfaG9zdF9wcml2YXRlX2tleT0mZ2V0X2hvc3RrZXlf cHJpdmF0ZV9ieV90eXBlOworIAlrZXgtPmhvc3Rfa2V5X2luZGV4PSZnZXRfaG9zdGtleV9pbmRl eDsKK2RpZmYgLS1naXQgYS9teXByb3Bvc2FsLmggYi9teXByb3Bvc2FsLmgKK2luZGV4IDY0MzNl MDgyMC4uNTFlM2VmNWM4IDEwMDY0NAorLS0tIGEvbXlwcm9wb3NhbC5oCisrKysgYi9teXByb3Bv c2FsLmgKK0BAIC0yNiw2ICsyNiw4IEBACisgCisgI2RlZmluZSBLRVhfU0VSVkVSX0tFWAlcCisg CSJtbGtlbTc2OHgyNTUxOS1zaGEyNTYsIiBcCisrCSJtbGtlbTc2OG5pc3RwMjU2LXNoYTI1Niwi IFwKKysJIm1sa2VtMTAyNG5pc3RwMzg0LXNoYTM4NCwiIFwKKyAJInNudHJ1cDc2MXgyNTUxOS1z aGE1MTIsIiBcCisgCSJzbnRydXA3NjF4MjU1MTktc2hhNTEyQG9wZW5zc2guY29tLCIgXAorIAki Y3VydmUyNTUxOS1zaGEyNTYsIiBcCitAQCAtOTksNiArMTAxLDggQEAKKyAJImFlczE5Mi1jYmMs YWVzMjU2LWNiYyxyaWpuZGFlbC1jYmNAbHlzYXRvci5saXUuc2UsIiBcCisgCSJhZXMxMjgtZ2Nt QG9wZW5zc2guY29tLGFlczI1Ni1nY21Ab3BlbnNzaC5jb20iCisgI2RlZmluZSBLRVhfREVGQVVM VF9LRVhfRklQUwkJXAorKwkibWxrZW03NjhuaXN0cDI1Ni1zaGEyNTYsIiBcCisrCSJtbGtlbTEw MjRuaXN0cDM4NC1zaGEzODQsIiBcCisgCSJlY2RoLXNoYTItbmlzdHAyNTYsIiBcCisgCSJlY2Ro LXNoYTItbmlzdHAzODQsIiBcCisgCSJlY2RoLXNoYTItbmlzdHA1MjEsIiBcCitkaWZmIC0tZ2l0 IGEvcmVncmVzcy91bml0dGVzdHMva2V4L3Rlc3Rfa2V4LmMgYi9yZWdyZXNzL3VuaXR0ZXN0cy9r ZXgvdGVzdF9rZXguYworaW5kZXggZjQ3MDBkZWViLi45OWE4ZTNiNDYgMTAwNjQ0CistLS0gYS9y ZWdyZXNzL3VuaXR0ZXN0cy9rZXgvdGVzdF9rZXguYworKysrIGIvcmVncmVzcy91bml0dGVzdHMv a2V4L3Rlc3Rfa2V4LmMKK0BAIC0xNzEsNiArMTcxLDggQEAgZG9fa2V4X3dpdGhfa2V5KGNoYXIg KmtleCwgY2hhciAqY2lwaGVyLCBjaGFyICptYWMsCisgCXNlcnZlcjItPmtleC0+a2V4W0tFWF9D MjU1MTlfU0hBMjU2XSA9IGtleF9nZW5fc2VydmVyOworIAlzZXJ2ZXIyLT5rZXgtPmtleFtLRVhf S0VNX1NOVFJVUDc2MVgyNTUxOV9TSEE1MTJdID0ga2V4X2dlbl9zZXJ2ZXI7CisgCXNlcnZlcjIt PmtleC0+a2V4W0tFWF9LRU1fTUxLRU03NjhYMjU1MTlfU0hBMjU2XSA9IGtleF9nZW5fc2VydmVy OworKwlzZXJ2ZXIyLT5rZXgtPmtleFtLRVhfS0VNX01MS0VNNzY4TklTVFAyNTZfU0hBMjU2XSA9 IGtleF9nZW5fc2VydmVyOworKwlzZXJ2ZXIyLT5rZXgtPmtleFtLRVhfS0VNX01MS0VNMTAyNE5J U1RQMzg0X1NIQTM4NF0gPSBrZXhfZ2VuX3NlcnZlcjsKKyAJc2VydmVyMi0+a2V4LT5sb2FkX2hv c3RfcHVibGljX2tleSA9IHNlcnZlci0+a2V4LT5sb2FkX2hvc3RfcHVibGljX2tleTsKKyAJc2Vy dmVyMi0+a2V4LT5sb2FkX2hvc3RfcHJpdmF0ZV9rZXkgPSBzZXJ2ZXItPmtleC0+bG9hZF9ob3N0 X3ByaXZhdGVfa2V5OworIAlzZXJ2ZXIyLT5rZXgtPnNpZ24gPSBzZXJ2ZXItPmtleC0+c2lnbjsK K0BAIC0yNDgsNiArMjUwLDggQEAga2V4X3Rlc3RzKHZvaWQpCisgCX0KKyAjIGlmZGVmIFVTRV9N TEtFTTc2OFgyNTUxOQorIAlkb19rZXgoIm1sa2VtNzY4eDI1NTE5LXNoYTI1NiIpOworKwlkb19r ZXgoIm1sa2VtNzY4bmlzdHAyNTYtc2hhMjU2Iik7CisrCWRvX2tleCgibWxrZW0xMDI0bmlzdHAz ODQtc2hhMzg0Iik7CisgIyBlbmRpZiAvKiBVU0VfTUxLRU03NjhYMjU1MTkgKi8KKyAjIGlmZGVm IFVTRV9TTlRSVVA3NjFYMjU1MTkKKyAJZG9fa2V4KCJzbnRydXA3NjF4MjU1MTktc2hhNTEyIik7 CitkaWZmIC0tZ2l0IGEvc3NoLWtleXNjYW4uYyBiL3NzaC1rZXlzY2FuLmMKK2luZGV4IDFmMTVm MzA3Ny4uZWNlODVjNjJmIDEwMDY0NAorLS0tIGEvc3NoLWtleXNjYW4uYworKysrIGIvc3NoLWtl eXNjYW4uYworQEAgLTMwNiw2ICszMDYsOCBAQCBrZXlncmFiX3NzaDIoY29uICpjKQorIAljLT5j X3NzaC0+a2V4LT5rZXhbS0VYX0MyNTUxOV9TSEEyNTZdID0ga2V4X2dlbl9jbGllbnQ7CisgCWMt PmNfc3NoLT5rZXgtPmtleFtLRVhfS0VNX1NOVFJVUDc2MVgyNTUxOV9TSEE1MTJdID0ga2V4X2dl bl9jbGllbnQ7CisgCWMtPmNfc3NoLT5rZXgtPmtleFtLRVhfS0VNX01MS0VNNzY4WDI1NTE5X1NI QTI1Nl0gPSBrZXhfZ2VuX2NsaWVudDsKKysJYy0+Y19zc2gtPmtleC0+a2V4W0tFWF9LRU1fTUxL RU03NjhOSVNUUDI1Nl9TSEEyNTZdID0ga2V4X2dlbl9jbGllbnQ7CisrCWMtPmNfc3NoLT5rZXgt PmtleFtLRVhfS0VNX01MS0VNMTAyNE5JU1RQMzg0X1NIQTM4NF0gPSBrZXhfZ2VuX2NsaWVudDsK KyAJc3NoX3NldF92ZXJpZnlfaG9zdF9rZXlfY2FsbGJhY2soYy0+Y19zc2gsIGtleV9wcmludF93 cmFwcGVyKTsKKyAJLyoKKyAJICogZG8gdGhlIGtleS1leGNoYW5nZSB1bnRpbCBhbiBlcnJvciBv Y2N1cnMgb3IgdW50aWwKK2RpZmYgLS1naXQgYS9zc2hfYXBpLmMgYi9zc2hfYXBpLmMKK2luZGV4 IDM4YWMxN2RhMS4uYjE3ODU4MmIzIDEwMDY0NAorLS0tIGEvc3NoX2FwaS5jCisrKysgYi9zc2hf YXBpLmMKK0BAIC0xMzUsNiArMTM1LDggQEAgc3NoX2luaXQoc3RydWN0IHNzaCAqKnNzaHAsIGlu dCBpc19zZXJ2ZXIsIHN0cnVjdCBrZXhfcGFyYW1zICprZXhfcGFyYW1zKQorIAkJc3NoLT5rZXgt PmtleFtLRVhfQzI1NTE5X1NIQTI1Nl0gPSBrZXhfZ2VuX3NlcnZlcjsKKyAJCXNzaC0+a2V4LT5r ZXhbS0VYX0tFTV9TTlRSVVA3NjFYMjU1MTlfU0hBNTEyXSA9IGtleF9nZW5fc2VydmVyOworIAkJ c3NoLT5rZXgtPmtleFtLRVhfS0VNX01MS0VNNzY4WDI1NTE5X1NIQTI1Nl0gPSBrZXhfZ2VuX3Nl cnZlcjsKKysJCXNzaC0+a2V4LT5rZXhbS0VYX0tFTV9NTEtFTTc2OE5JU1RQMjU2X1NIQTI1Nl0g PSBrZXhfZ2VuX3NlcnZlcjsKKysJCXNzaC0+a2V4LT5rZXhbS0VYX0tFTV9NTEtFTTEwMjROSVNU UDM4NF9TSEEzODRdID0ga2V4X2dlbl9zZXJ2ZXI7CisgCQlzc2gtPmtleC0+bG9hZF9ob3N0X3B1 YmxpY19rZXk9Jl9zc2hfaG9zdF9wdWJsaWNfa2V5OworIAkJc3NoLT5rZXgtPmxvYWRfaG9zdF9w cml2YXRlX2tleT0mX3NzaF9ob3N0X3ByaXZhdGVfa2V5OworIAkJc3NoLT5rZXgtPnNpZ249Jl9z c2hfaG9zdF9rZXlfc2lnbjsKK0BAIC0xNTQsNiArMTU2LDggQEAgc3NoX2luaXQoc3RydWN0IHNz aCAqKnNzaHAsIGludCBpc19zZXJ2ZXIsIHN0cnVjdCBrZXhfcGFyYW1zICprZXhfcGFyYW1zKQor IAkJc3NoLT5rZXgtPmtleFtLRVhfQzI1NTE5X1NIQTI1Nl0gPSBrZXhfZ2VuX2NsaWVudDsKKyAJ CXNzaC0+a2V4LT5rZXhbS0VYX0tFTV9TTlRSVVA3NjFYMjU1MTlfU0hBNTEyXSA9IGtleF9nZW5f Y2xpZW50OworIAkJc3NoLT5rZXgtPmtleFtLRVhfS0VNX01MS0VNNzY4WDI1NTE5X1NIQTI1Nl0g PSBrZXhfZ2VuX2NsaWVudDsKKysJCXNzaC0+a2V4LT5rZXhbS0VYX0tFTV9NTEtFTTc2OE5JU1RQ MjU2X1NIQTI1Nl0gPSBrZXhfZ2VuX2NsaWVudDsKKysJCXNzaC0+a2V4LT5rZXhbS0VYX0tFTV9N TEtFTTEwMjROSVNUUDM4NF9TSEEzODRdID0ga2V4X2dlbl9jbGllbnQ7CisgCQlzc2gtPmtleC0+ dmVyaWZ5X2hvc3Rfa2V5ID0mX3NzaF92ZXJpZnlfaG9zdF9rZXk7CisgCX0KKyAJKnNzaHAgPSBz c2g7CitkaWZmIC0tZ2l0IGEvc3NoY29ubmVjdDIuYyBiL3NzaGNvbm5lY3QyLmMKK2luZGV4IDBj ODJjNzc4Mi4uNzVkMTNmNTRlIDEwMDY0NAorLS0tIGEvc3NoY29ubmVjdDIuYworKysrIGIvc3No Y29ubmVjdDIuYworQEAgLTM1Miw2ICszNTIsOCBAQCBzc2hfa2V4MihzdHJ1Y3Qgc3NoICpzc2gs IGNoYXIgKmhvc3QsIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlICpob3N0YWRkciwKKyAJc3NoLT5r ZXgtPmtleFtLRVhfQzI1NTE5X1NIQTI1Nl0gPSBrZXhfZ2VuX2NsaWVudDsKKyAJc3NoLT5rZXgt PmtleFtLRVhfS0VNX1NOVFJVUDc2MVgyNTUxOV9TSEE1MTJdID0ga2V4X2dlbl9jbGllbnQ7Cisg CXNzaC0+a2V4LT5rZXhbS0VYX0tFTV9NTEtFTTc2OFgyNTUxOV9TSEEyNTZdID0ga2V4X2dlbl9j bGllbnQ7CisrCXNzaC0+a2V4LT5rZXhbS0VYX0tFTV9NTEtFTTc2OE5JU1RQMjU2X1NIQTI1Nl0g PSBrZXhfZ2VuX2NsaWVudDsKKysJc3NoLT5rZXgtPmtleFtLRVhfS0VNX01MS0VNMTAyNE5JU1RQ Mzg0X1NIQTM4NF0gPSBrZXhfZ2VuX2NsaWVudDsKKyAJc3NoLT5rZXgtPnZlcmlmeV9ob3N0X2tl eT0mdmVyaWZ5X2hvc3Rfa2V5X2NhbGxiYWNrOworIAorICNpZiBkZWZpbmVkKEdTU0FQSSkgJiYg ZGVmaW5lZChXSVRIX09QRU5TU0wpCitkaWZmIC0tZ2l0IGEvc3NoZC1hdXRoLmMgYi9zc2hkLWF1 dGguYworaW5kZXggNmE1Y2QwYzUyLi5jNGRmMzE0ZWYgMTAwNjQ0CistLS0gYS9zc2hkLWF1dGgu YworKysrIGIvc3NoZC1hdXRoLmMKK0BAIC04NjcsNiArODY3LDggQEAgZG9fc3NoMl9rZXgoc3Ry dWN0IHNzaCAqc3NoKQorIAlrZXgtPmtleFtLRVhfQzI1NTE5X1NIQTI1Nl0gPSBrZXhfZ2VuX3Nl cnZlcjsKKyAJa2V4LT5rZXhbS0VYX0tFTV9TTlRSVVA3NjFYMjU1MTlfU0hBNTEyXSA9IGtleF9n ZW5fc2VydmVyOworIAlrZXgtPmtleFtLRVhfS0VNX01MS0VNNzY4WDI1NTE5X1NIQTI1Nl0gPSBr ZXhfZ2VuX3NlcnZlcjsKKysJa2V4LT5rZXhbS0VYX0tFTV9NTEtFTTc2OE5JU1RQMjU2X1NIQTI1 Nl0gPSBrZXhfZ2VuX3NlcnZlcjsKKysJa2V4LT5rZXhbS0VYX0tFTV9NTEtFTTEwMjROSVNUUDM4 NF9TSEEzODRdID0ga2V4X2dlbl9zZXJ2ZXI7CisgCWtleC0+bG9hZF9ob3N0X3B1YmxpY19rZXk9 JmdldF9ob3N0a2V5X3B1YmxpY19ieV90eXBlOworIAlrZXgtPmxvYWRfaG9zdF9wcml2YXRlX2tl eT0mZ2V0X2hvc3RrZXlfcHJpdmF0ZV9ieV90eXBlOworIAlrZXgtPmhvc3Rfa2V5X2luZGV4PSZn ZXRfaG9zdGtleV9pbmRleDsKKy0tIAorMi41NS4wCisKCmRpZmYgLS1naXQgYS8wMDQ3LXN1cHBv cnQtYXV0aGVudGljYXRpb24taW5kaWNhdG9ycy1pbi1HU1NBUEkucGF0Y2ggYi8wMDQ3LXN1cHBv cnQtYXV0aGVudGljYXRpb24taW5kaWNhdG9ycy1pbi1HU1NBUEkucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IGZkMDZiZGYuLjAwMDAwMDAKLS0tIGEvMDA0Ny1zdXBwb3J0LWF1 dGhlbnRpY2F0aW9uLWluZGljYXRvcnMtaW4tR1NTQVBJLnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsNDg3ICswLDAgQEAKLUZyb20gNDc3ZTBkZmU0NGQ1ZTMwOWE5MzU3Mzc1NTgyODg0MjIwZmRl NGFjZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERtaXRyeSBCZWx5YXZza2l5IDxi ZWxkbWl0QGdtYWlsLmNvbT4KLURhdGU6IFN1biwgMTIgQXByIDIwMjYgMTI6MjM6NTEgKzAyMDAK LVN1YmplY3Q6IFtQQVRDSCA0Ny81NF0gc3VwcG9ydCBhdXRoZW50aWNhdGlvbiBpbmRpY2F0b3Jz IGluIEdTU0FQSQotCi1odHRwczovL2dpdGh1Yi5jb20vb3BlbnNzaC9vcGVuc3NoLXBvcnRhYmxl L3B1bGwvNTAwCi0KLUNvLUF1dGhvcmVkLUJ5OiBDbGF1ZGUgU29ubmV0IDQuNSA8bm9yZXBseUBh bnRocm9waWMuY29tPgotLS0tCi0gY29uZmlndXJlLmFjICAgIHwgICAxICsKLSBnc3Mtc2Vydi1r cmI1LmMgfCAgODkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCi0gZ3Nz LXNlcnYuYyAgICAgIHwgMTA4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLQotIHNlcnZjb25mLmMgICAgICB8ICAxNiArKysrKystCi0gc2VydmNvbmYuaCAg ICAgIHwgICAyICsKLSBzc2gtZ3NzLmggICAgICAgfCAgIDcgKysrKwotIHNzaGRfY29uZmlnLjUg ICB8ICA0NiArKysrKysrKysrKysrKysrKysrKysKLSA3IGZpbGVzIGNoYW5nZWQsIDI1NiBpbnNl cnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBi L2NvbmZpZ3VyZS5hYwotaW5kZXggODZmMGU5ZTA5Li4xMzg4ZTVlNzIgMTAwNjQ0Ci0tLS0gYS9j b25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTUxMjksNiArNTEyOSw3IEBAIEFD X0FSR19XSVRIKFtrZXJiZXJvczVdLAotIAkJQUNfQ0hFQ0tfSEVBREVSUyhbZ3NzYXBpLmggZ3Nz YXBpL2dzc2FwaS5oXSkKLSAJCUFDX0NIRUNLX0hFQURFUlMoW2dzc2FwaV9rcmI1LmggZ3NzYXBp L2dzc2FwaV9rcmI1LmhdKQotIAkJQUNfQ0hFQ0tfSEVBREVSUyhbZ3NzYXBpX2dlbmVyaWMuaCBn c3NhcGkvZ3NzYXBpX2dlbmVyaWMuaF0pCi0rCQlBQ19DSEVDS19IRUFERVJTKFtnc3NhcGlfZXh0 LmggZ3NzYXBpL2dzc2FwaV9leHQuaF0pCi0gCi0gCQlBQ19TRUFSQ0hfTElCUyhba19oYXNhZnNd LCBba2Fmc10sIFtBQ19ERUZJTkUoW1VTRV9BRlNdLCBbMV0sCi0gCQkJW0RlZmluZSB0aGlzIGlm IHlvdSB3YW50IHRvIHVzZSBsaWJrYWZzJyBBRlMgc3VwcG9ydF0pXSkKLWRpZmYgLS1naXQgYS9n c3Mtc2Vydi1rcmI1LmMgYi9nc3Mtc2Vydi1rcmI1LmMKLWluZGV4IDcyMzUwOTQwOS4uZmM3Y2Fi YzA5IDEwMDY0NAotLS0tIGEvZ3NzLXNlcnYta3JiNS5jCi0rKysgYi9nc3Mtc2Vydi1rcmI1LmMK LUBAIC00Myw2ICs0Myw3IEBACi0gI2luY2x1ZGUgImxvZy5oIgotICNpbmNsdWRlICJtaXNjLmgi Ci0gI2luY2x1ZGUgInNlcnZjb25mLmgiCi0rI2luY2x1ZGUgIm1hdGNoLmgiCi0gCi0gI2luY2x1 ZGUgInNzaC1nc3MuaCIKLSAKLUBAIC04Nyw2ICs4OCwzMyBAQCBzc2hfZ3NzYXBpX2tyYjVfaW5p dCh2b2lkKQotIAlyZXR1cm4gMTsKLSB9Ci0gCi0rLyogQ2hlY2sgaWYgYW55IG9mIHRoZSBpbmRp Y2F0b3JzIGluIHRoZSBLZXJiZXJvcyB0aWNrZXQgbWF0Y2gKLSsgKiBvbmUgb2YgaW5kaWNhdG9y cyBpbiB0aGUgbGlzdCBvZiBhbGxvd2VkL2RlbmllZCBydWxlcy4KLSsgKiBJbiBjYXNlIG9mIHRo ZSBtYXRjaCwgYXBwbHkgdGhlIGRlY2lzaW9uIGZyb20gdGhlIHJ1bGUuCi0rICogSW4gY2FzZSBv ZiBubyBpbmRpY2F0b3IgZnJvbSB0aGUgdGlja2V0IG1hdGNoaW5nIHRoZSBydWxlLCBkZW55Ci0r ICovCi0rCi0rc3RhdGljIGludAotK3NzaF9nc3NhcGlfY2hlY2tfaW5kaWNhdG9ycyhzc2hfZ3Nz YXBpX2NsaWVudCAqY2xpZW50LCBpbnQgKm1hdGNoZWQpCi0rewotKwlpbnQgcmV0OwotKwl1X2lu dCBpOwotKwkqbWF0Y2hlZCA9IC0xOwotKwotKwkvKiBDaGVjayBpbmRpY2F0b3JzICovCi0rCWZv ciAoaSA9IDA7IGNsaWVudC0+aW5kaWNhdG9yc1tpXSAhPSBOVUxMOyBpKyspIHsKLSsJCXJldCA9 IG1hdGNoX3BhdHRlcm5fbGlzdChjbGllbnQtPmluZGljYXRvcnNbaV0sCi0rCQkJCQkgb3B0aW9u cy5nc3NfaW5kaWNhdG9ycywgMSk7Ci0rCQkvKiBuZWdhdGl2ZSBvciBwb3NpdGl2ZSBtYXRjaCAq LwotKwkJaWYgKHJldCAhPSAwKSB7Ci0rCQkJKm1hdGNoZWQgPSBpOwotKwkJCXJldHVybiByZXQ7 Ci0rCQl9Ci0rCX0KLSsJLyogTm8gcnVsZSBtYXRjaGVkICovCi0rCXJldHVybiAwOwotK30KLSsK LSAvKiBDaGVjayBpZiB0aGlzIHVzZXIgaXMgT0sgdG8gbG9naW4uIFRoaXMgb25seSB3b3JrcyB3 aXRoIGtyYjUgLSBvdGhlcgotICAqIEdTU0FQSSBtZWNoYW5pc21zIHdpbGwgbmVlZCB0aGVpciBv d24uCi0gICogUmV0dXJucyB0cnVlIGlmIHRoZSB1c2VyIGlzIE9LIHRvIGxvZyBpbiwgb3RoZXJ3 aXNlIHJldHVybnMgMAotQEAgLTE5MywxNSArMjIxLDE1IEBAIHN0YXRpYyBpbnQKLSBzc2hfZ3Nz YXBpX2tyYjVfdXNlcm9rKHNzaF9nc3NhcGlfY2xpZW50ICpjbGllbnQsIGNoYXIgKm5hbWUpCi0g ewotIAlrcmI1X3ByaW5jaXBhbCBwcmluYzsKLS0JaW50IHJldHZhbDsKLSsJaW50IHJldHZhbCwg bWF0Y2hlZCwgc3VjY2VzczsKLSAJY29uc3QgY2hhciAqZXJybXNnOwotIAlpbnQgazVsb2dpbl9l eGlzdHM7Ci0gCi0gCWlmIChzc2hfZ3NzYXBpX2tyYjVfaW5pdCgpID09IDApCi0gCQlyZXR1cm4g MDsKLSAKLS0JaWYgKChyZXR2YWwgPSBrcmI1X3BhcnNlX25hbWUoa3JiX2NvbnRleHQsIGNsaWVu dC0+ZXhwb3J0ZWRuYW1lLnZhbHVlLAotLQkgICAgJnByaW5jKSkpIHsKLSsJcmV0dmFsID0ga3Ji NV9wYXJzZV9uYW1lKGtyYl9jb250ZXh0LCBjbGllbnQtPmV4cG9ydGVkbmFtZS52YWx1ZSwgJnBy aW5jKTsKLSsJaWYgKHJldHZhbCkgewotIAkJZXJybXNnID0ga3JiNV9nZXRfZXJyb3JfbWVzc2Fn ZShrcmJfY29udGV4dCwgcmV0dmFsKTsKLSAJCWxvZ2l0KCJrcmI1X3BhcnNlX25hbWUoKTogJS4x MDBzIiwgZXJybXNnKTsKLSAJCWtyYjVfZnJlZV9lcnJvcl9tZXNzYWdlKGtyYl9jb250ZXh0LCBl cnJtc2cpOwotQEAgLTIxNiwxNyArMjQ0LDYwIEBAIHNzaF9nc3NhcGlfa3JiNV91c2Vyb2soc3No X2dzc2FwaV9jbGllbnQgKmNsaWVudCwgY2hhciAqbmFtZSkKLSAJaWYgKGs1bG9naW5fZXhpc3Rz ICYmCi0gCSAgICBzc2hfa3JiNV9rdXNlcm9rKGtyYl9jb250ZXh0LCBwcmluYywgbmFtZSwgazVs b2dpbl9leGlzdHMpKSB7Ci0gCQlyZXR2YWwgPSAxOwotLQkJbG9naXQoIkF1dGhvcml6ZWQgdG8g JXMsIGtyYjUgcHJpbmNpcGFsICVzIChrcmI1X2t1c2Vyb2spIiwKLS0JCSAgICBuYW1lLCAoY2hh ciAqKWNsaWVudC0+ZGlzcGxheW5hbWUudmFsdWUpOwotKwkJZXJybXNnID0gImtyYjVfa3VzZXJv ayI7Ci0gCX0gZWxzZSBpZiAoc3NoX2dzc2FwaV9rcmI1X2NtZG9rKHByaW5jLCBjbGllbnQtPmV4 cG9ydGVkbmFtZS52YWx1ZSwKLSAJCW5hbWUsIGs1bG9naW5fZXhpc3RzKSkgewotIAkJcmV0dmFs ID0gMTsKLS0JCWxvZ2l0KCJBdXRob3JpemVkIHRvICVzLCBrcmI1IHByaW5jaXBhbCAlcyAiCi0t CQkgICAgIihzc2hfZ3NzYXBpX2tyYjVfY21kb2spIiwKLS0JCSAgICBuYW1lLCAoY2hhciAqKWNs aWVudC0+ZGlzcGxheW5hbWUudmFsdWUpOwotLQl9IGVsc2UKLSsJCWVycm1zZyA9ICJzc2hfZ3Nz YXBpX2tyYjVfY21kb2siOwotKwl9IGVsc2UgewotIAkJcmV0dmFsID0gMDsKLSsJCWdvdG8gb3V0 OwotKwl9Ci0gCi0rCS8qIEF0IHRoaXMgcG9pbnQgd2UgYXJlIGdvb2QgaWYgbm8gaW5kaWNhdG9y cyB3ZXJlIGRlZmluZWQgKi8KLSsJaWYgKG9wdGlvbnMuZ3NzX2luZGljYXRvcnMgPT0gTlVMTCkg ewotKwkJcmV0dmFsID0gMTsKLSsJCWdvdG8gb3V0OwotKwl9Ci0rCi0rCS8qIEF0IHRoaXMgcG9p bnQgd2UgaGF2ZSBpbmRpY2F0b3JzIGRlZmluZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24sCi0rCSAq IGlmIGNsaWVudHQgZGlkIG5vdCBwcm92aWRlIGFueSBpbmRpY2F0b3JzLCB3ZSByZWplY3QgKi8K LSsJaWYgKCFjbGllbnQtPmluZGljYXRvcnMpIHsKLSsJCXJldHZhbCA9IDA7Ci0rCQlsb2dpdCgi R1NTQVBJIGF1dGhlbnRpY2F0aW9uIGluZGljYXRvcnMgZW5mb3JjZWQgIgotKwkJICAgICAgImJ1 dCBpbmRpY2F0b3JzIG5vdCBwcm92aWRlZCBieSB0aGUgY2xpZW50LiAiCi0rCQkgICAgICAia3Ji NSBwcmluY2lwYWwgJXMgZGVuaWVkIiwKLSsJCSAgICAgIChjaGFyICopY2xpZW50LT5kaXNwbGF5 bmFtZS52YWx1ZSk7Ci0rCQlnb3RvIG91dDsKLSsJfQotKwotKwkvKiBBdCB0aGlzIHBvaW50IHRo ZSBjb25maWd1cmF0aW9uIGVuZm9yY2VzIHByZXNlbmNlIG9mIGluZGljYXRvcnMKLSsJICogY2hl Y2sgdGhlIG1hdGNoICovCi0rCW1hdGNoZWQgPSAtMTsKLSsJc3VjY2VzcyA9IHNzaF9nc3NhcGlf Y2hlY2tfaW5kaWNhdG9ycyhjbGllbnQsICZtYXRjaGVkKTsKLSsKLSsJc3dpdGNoIChzdWNjZXNz KSB7Ci0rCWNhc2UgMToKLSsJCWxvZ2l0KCJQcm92aWRlZCBpbmRpY2F0b3IgJXMgYWxsb3dlZCBi eSB0aGUgY29uZmlndXJhdGlvbiIsCi0rCQkgICAgICBjbGllbnQtPmluZGljYXRvcnNbbWF0Y2hl ZF0pOwotKwkJcmV0dmFsID0gMTsKLSsJCWJyZWFrOwotKwljYXNlIC0xOgotKwkJbG9naXQoIlBy b3ZpZGVkIGluZGljYXRvciAlcyByZWplY3RlZCBieSB0aGUgY29uZmlndXJhdGlvbiIsCi0rCQkg ICAgICBjbGllbnQtPmluZGljYXRvcnNbbWF0Y2hlZF0pOwotKwkJcmV0dmFsID0gMDsKLSsJCWJy ZWFrOwotKwlkZWZhdWx0OgotKwkJbG9naXQoIlByb3ZpZGVkIGluZGljYXRvcnMgZG8gbm90IG1h dGNoIHRoZSBjb25maWd1cmF0aW9uIik7Ci0rCQlyZXR2YWwgPSAwOwotKwkJYnJlYWs7Ci0rCX0K LSsKLStvdXQ6Ci0rCWlmIChyZXR2YWwgPT0gMSkgewotKwkJbG9naXQoIkF1dGhvcml6ZWQgdG8g JXMsIGtyYjUgcHJpbmNpcGFsICVzICglcykiLAotKwkJICAgICAgbmFtZSwgKGNoYXIgKiljbGll bnQtPmRpc3BsYXluYW1lLnZhbHVlLCBlcnJtc2cpOwotKwl9Ci0gCWtyYjVfZnJlZV9wcmluY2lw YWwoa3JiX2NvbnRleHQsIHByaW5jKTsKLSAJcmV0dXJuIHJldHZhbDsKLSB9Ci1kaWZmIC0tZ2l0 IGEvZ3NzLXNlcnYuYyBiL2dzcy1zZXJ2LmMKLWluZGV4IDZlYjdkMjE2My4uNjg2YWM0ZWIzIDEw MDY0NAotLS0tIGEvZ3NzLXNlcnYuYwotKysrIGIvZ3NzLXNlcnYuYwotQEAgLTU1LDcgKzU1LDcg QEAgZXh0ZXJuIFNlcnZlck9wdGlvbnMgb3B0aW9uczsKLSAKLSBzdGF0aWMgc3NoX2dzc2FwaV9j bGllbnQgZ3NzYXBpX2NsaWVudCA9Ci0gICAgIHsgR1NTX0NfRU1QVFlfQlVGRkVSLCBHU1NfQ19F TVBUWV9CVUZGRVIsIEdTU19DX05PX0NSRURFTlRJQUwsCi0tICAgIEdTU19DX05PX05BTUUsIE5V TEwsIHtOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwgMCwgMH07Ci0rICAgIEdTU19DX05P X05BTUUsIE5VTEwsIHtOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwgMCwgMCwgTlVMTH07 Ci0gCi0gc3NoX2dzc2FwaV9tZWNoIGdzc2FwaV9udWxsX21lY2ggPQotICAgICB7IE5VTEwsIE5V TEwsIHswLCBOVUxMfSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH07Ci1AQCAtMjk1LDYg KzI5NSw5OSBAQCBzc2hfZ3NzYXBpX3BhcnNlX2VuYW1lKEdzc2N0eHQgKmN0eCwgZ3NzCi0gCXJl dHVybiBHU1NfU19DT01QTEVURTsKLSB9Ci0gCi0rCi0rLyogRXh0cmFjdCBhdXRoZW50aWNhdGlv biBpbmRpY2F0b3JzIGZyb20gdGhlIEtlcmJlcm9zIHRpY2tldC4gQXV0aGVudGljYXRpb24KLSsg KiBpbmRpY2F0b3JzIGFyZSBHU1NBUEkgbmFtZSBhdHRyaWJ1dGVzIGZvciB0aGUgbmFtZSAiYXV0 aC1pbmRpY2F0b3JzIi4KLSsgKiBNdWx0aXBsZSBpbmRpY2F0b3JzIG1pZ2h0IGJlIHByZXNlbnQg aW4gdGhlIHRpY2tldC4KLSsgKiBFYWNoIGluZGljYXRvciBpcyBhbiB1dGY4IHN0cmluZy4gKi8K LSsKLSsjZGVmaW5lIEFVVEhfSU5ESUNBVE9SU19UQUcgImF1dGgtaW5kaWNhdG9ycyIKLSsjZGVm aW5lIFNTSF9HU1NBUElfTUFYX0lORElDQVRPUlMgNjQKLSsKLSsvKiBQcml2aWxlZ2VkIChjYWxs ZWQgZnJvbSBhY2NlcHRfc2VjdXJlX2N0eCkgKi8KLStzdGF0aWMgT01fdWludDMyCi0rc3NoX2dz c2FwaV9nZXRpbmRpY2F0b3JzKEdzc2N0eHQgKmN0eCwgZ3NzX25hbWVfdCBnc3NfbmFtZSwgc3No X2dzc2FwaV9jbGllbnQgKmNsaWVudCkKLSt7Ci0rCWdzc19idWZmZXJfc2V0X3QgYXR0cnMgPSBH U1NfQ19OT19CVUZGRVJfU0VUOwotKwlnc3NfYnVmZmVyX2Rlc2MgdmFsdWUgPSBHU1NfQ19FTVBU WV9CVUZGRVI7Ci0rCWdzc19idWZmZXJfZGVzYyBkaXNwbGF5X3ZhbHVlID0gR1NTX0NfRU1QVFlf QlVGRkVSOwotKwlpbnQgaXNfbWVjaG5hbWUsIGF1dGhlbnRpY2F0ZWQsIGNvbXBsZXRlLCBtb3Jl OwotKwlzaXplX3QgY291bnQsIGk7Ci0rCi0rCS8qIGFsd2F5cyBpbml0aWFsaXplIGNsaWVudC0+ aW5kaWNhdG9ycyAqLwotKwljbGllbnQtPmluZGljYXRvcnMgPSBOVUxMOwotKwotKwljdHgtPm1h am9yID0gZ3NzX2lucXVpcmVfbmFtZSgmY3R4LT5taW5vciwgZ3NzX25hbWUsCi0rCQkJCSAgICAg ICZpc19tZWNobmFtZSwgTlVMTCwgJmF0dHJzKTsKLSsJaWYgKGN0eC0+bWFqb3IgIT0gR1NTX1Nf Q09NUExFVEUpCi0rCQlyZXR1cm4gY3R4LT5tYWpvcjsKLSsKLSsJaWYgKGF0dHJzID09IEdTU19D X05PX0JVRkZFUl9TRVQpIHsKLSsJCS8qIG5vIGluZGljYXRvcnMgaW4gdGhlIHRpY2tldCAqLwot KwkJcmV0dXJuIEdTU19TX0NPTVBMRVRFOwotKwl9Ci0rCi0rCS8qIGNsaWVudC0+aW5kaWNhdG9y cyBpcyBOVUxMIHRlcm1pbmF0ZWQgKi8KLSsJY291bnQgPSAwOwotKwljbGllbnQtPmluZGljYXRv cnMgPSB4Y2FsbG9jKGNvdW50ICsgMSwgc2l6ZW9mKGNoYXIgKikpOwotKwotKwlmb3IgKGkgPSAw OyBpIDwgYXR0cnMtPmNvdW50OyBpKyspIHsKLSsJCWF1dGhlbnRpY2F0ZWQgPSAwOwotKwkJY29t cGxldGUgPSAwOwotKwkJbW9yZSA9IC0xOwotKwotKwkJLyogc2tpcCBhbnl0aGluZyBidXQgYXV0 aC1pbmRpY2F0b3JzICovCi0rCQlpZiAoKChzaXplb2YoQVVUSF9JTkRJQ0FUT1JTX1RBRykgLSAx KSAhPSBhdHRycy0+ZWxlbWVudHNbaV0ubGVuZ3RoKSB8fAotKwkJICAgIG1lbWNtcChBVVRIX0lO RElDQVRPUlNfVEFHLCBhdHRycy0+ZWxlbWVudHNbaV0udmFsdWUsCi0rCQkJICAgc2l6ZW9mKEFV VEhfSU5ESUNBVE9SU19UQUcpIC0gMSkgIT0gMCkKLSsJCQljb250aW51ZTsKLSsKLSsJCS8qIHJl dHJpZXZlIGFsbCBpbmRpY2F0b3JzICovCi0rCQl3aGlsZSAobW9yZSAhPSAwKSB7Ci0rCQkJdmFs dWUudmFsdWUgPSBOVUxMOwotKwkJCWRpc3BsYXlfdmFsdWUudmFsdWUgPSBOVUxMOwotKwotKwkJ CWN0eC0+bWFqb3IgPSBnc3NfZ2V0X25hbWVfYXR0cmlidXRlKCZjdHgtPm1pbm9yLCBnc3NfbmFt ZSwKLSsJCQkJCQkJICAgICZhdHRycy0+ZWxlbWVudHNbaV0sCi0rCQkJCQkJCSAgICAmYXV0aGVu dGljYXRlZCwgJmNvbXBsZXRlLAotKwkJCQkJCQkgICAgJnZhbHVlLCAmZGlzcGxheV92YWx1ZSwg Jm1vcmUpOwotKwkJCWlmIChjdHgtPm1ham9yICE9IEdTU19TX0NPTVBMRVRFKQotKwkJCQlnb3Rv IG91dDsKLSsKLSsJCQlpZiAodmFsdWUudmFsdWUgPT0gTlVMTCB8fCAhYXV0aGVudGljYXRlZCkK LSsJCQkJY29udGludWU7Ci0rCi0rCQkJaWYgKGNvdW50ID49IFNTSF9HU1NBUElfTUFYX0lORElD QVRPUlMpIHsKLSsJCQkJbG9naXQoInNzaF9nc3NhcGlfZ2V0aW5kaWNhdG9yczoiCi0rCQkJCSAg ICAgICIgdG9vIG1hbnkgaW5kaWNhdG9ycywgdHJ1bmNhdGluZyBhdCAlZCIsCi0rCQkJCSAgICAg IFNTSF9HU1NBUElfTUFYX0lORElDQVRPUlMpOwotKwkJCQlnb3RvIG91dDsKLSsJCQl9Ci0rCi0r CQkJY2xpZW50LT5pbmRpY2F0b3JzW2NvdW50XSA9IHhtYWxsb2ModmFsdWUubGVuZ3RoICsgMSk7 Ci0rCQkJbWVtY3B5KGNsaWVudC0+aW5kaWNhdG9yc1tjb3VudF0sIHZhbHVlLnZhbHVlLCB2YWx1 ZS5sZW5ndGgpOwotKwkJCWNsaWVudC0+aW5kaWNhdG9yc1tjb3VudF1bdmFsdWUubGVuZ3RoXSA9 ICdcMCc7Ci0rCQkJY291bnQrKzsKLSsKLSsJCQkvKiBhZGQgTlVMTCB0ZXJtaW5hdG9yICovCi0r CQkJY2xpZW50LT5pbmRpY2F0b3JzID0geHJlY2FsbG9jYXJyYXkoY2xpZW50LT5pbmRpY2F0b3Jz LCBjb3VudCwKLSsJCQkJCQkJICAgIGNvdW50ICsgMSwgc2l6ZW9mKGNoYXIgKikpOwotKwkJfQot Kwl9Ci0rCi0rb3V0OgotKwlpZiAoY3R4LT5tYWpvciAhPSBHU1NfU19DT01QTEVURSAmJiBjbGll bnQtPmluZGljYXRvcnMgIT0gTlVMTCkgewotKwkJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKysp Ci0rCQkJZnJlZShjbGllbnQtPmluZGljYXRvcnNbaV0pOwotKwkJZnJlZShjbGllbnQtPmluZGlj YXRvcnMpOwotKwkJY2xpZW50LT5pbmRpY2F0b3JzID0gTlVMTDsKLSsJfQotKwlnc3NfcmVsZWFz ZV9idWZmZXIoJmN0eC0+bWlub3IsICZ2YWx1ZSk7Ci0rCWdzc19yZWxlYXNlX2J1ZmZlcigmY3R4 LT5taW5vciwgJmRpc3BsYXlfdmFsdWUpOwotKwlnc3NfcmVsZWFzZV9idWZmZXJfc2V0KCZjdHgt Pm1pbm9yLCAmYXR0cnMpOwotKwlyZXR1cm4gY3R4LT5tYWpvcjsKLSt9Ci0rCi0gLyogRXh0cmFj dCB0aGUgY2xpZW50IGRldGFpbHMgZnJvbSBhIGdpdmVuIGNvbnRleHQuIFRoaXMgY2FuIG9ubHkg cmVsaWFibHkKLSAgKiBiZSBjYWxsZWQgb25jZSBmb3IgYSBjb250ZXh0ICovCi0gCi1AQCAtMzg2 LDYgKzQ3NSwxMiBAQCBzc2hfZ3NzYXBpX2dldGNsaWVudChHc3NjdHh0ICpjdHgsIHNzaF9nc3Nh cGlfY2xpZW50ICpjbGllbnQpCi0gCX0KLSAKLSAJZ3NzX3JlbGVhc2VfYnVmZmVyKCZjdHgtPm1p bm9yLCAmZW5hbWUpOwotKwkvKiBSZXRyaWV2ZSBhdXRoZW50aWNhdGlvbiBpbmRpY2F0b3JzLCBp ZiB0aGV5IGV4aXN0ICovCi0rCWlmICgoY3R4LT5tYWpvciA9IHNzaF9nc3NhcGlfZ2V0aW5kaWNh dG9ycyhjdHgsCi0rCSAgICBjdHgtPmNsaWVudCwgY2xpZW50KSkpIHsKLSsJCXNzaF9nc3NhcGlf ZXJyb3IoY3R4KTsKLSsJCXJldHVybiAoY3R4LT5tYWpvcik7Ci0rCX0KLSAKLSAJLyogV2UgY2Fu J3QgY29weSB0aGlzIHN0cnVjdHVyZSwgc28gd2UganVzdCBtb3ZlIHRoZSBwb2ludGVyIHRvIGl0 ICovCi0gCWNsaWVudC0+Y3JlZHMgPSBjdHgtPmNsaWVudF9jcmVkczsKLUBAIC00NTMsNiArNTQ4 LDcgQEAgaW50Ci0gc3NoX2dzc2FwaV91c2Vyb2soY2hhciAqdXNlciwgc3RydWN0IHBhc3N3ZCAq cHcsIGludCBrZXgpCi0gewotIAlPTV91aW50MzIgbG1pbjsKLSsJc2l6ZV90IGk7Ci0gCi0gCSh2 b2lkKSBrZXg7IC8qIHVzZWQgaW4gcHJpdmlsZWdlIHNlcGFyYXRpb24gKi8KLSAKLUBAIC00NzEs OCArNTY3LDE0IEBAIHNzaF9nc3NhcGlfdXNlcm9rKGNoYXIgKnVzZXIsIHN0cnVjdCBwYXNzd2Qg KnB3LCBpbnQga2V4KQotIAkJCWdzc19yZWxlYXNlX2J1ZmZlcigmbG1pbiwgJmdzc2FwaV9jbGll bnQuZGlzcGxheW5hbWUpOwotIAkJCWdzc19yZWxlYXNlX2J1ZmZlcigmbG1pbiwgJmdzc2FwaV9j bGllbnQuZXhwb3J0ZWRuYW1lKTsKLSAJCQlnc3NfcmVsZWFzZV9jcmVkKCZsbWluLCAmZ3NzYXBp X2NsaWVudC5jcmVkcyk7Ci0tCQkJZXhwbGljaXRfYnplcm8oJmdzc2FwaV9jbGllbnQsCi0tCQkJ ICAgIHNpemVvZihzc2hfZ3NzYXBpX2NsaWVudCkpOwotKwotKwkJCWlmIChnc3NhcGlfY2xpZW50 LmluZGljYXRvcnMgIT0gTlVMTCkgewotKwkJCQlmb3IgKGkgPSAwOyBnc3NhcGlfY2xpZW50Lmlu ZGljYXRvcnNbaV0gIT0gTlVMTDsgaSsrKQotKwkJCQkJZnJlZShnc3NhcGlfY2xpZW50LmluZGlj YXRvcnNbaV0pOwotKwkJCQlmcmVlKGdzc2FwaV9jbGllbnQuaW5kaWNhdG9ycyk7Ci0rCQkJfQot KwotKwkJCWV4cGxpY2l0X2J6ZXJvKCZnc3NhcGlfY2xpZW50LCBzaXplb2Yoc3NoX2dzc2FwaV9j bGllbnQpKTsKLSAJCQlyZXR1cm4gMDsKLSAJCX0KLSAJZWxzZQotZGlmZiAtLWdpdCBhL3NlcnZj b25mLmMgYi9zZXJ2Y29uZi5jCi1pbmRleCA2YzFiYTc3ZjYuLjI2OGMwOWQxYyAxMDA2NDQKLS0t LSBhL3NlcnZjb25mLmMKLSsrKyBiL3NlcnZjb25mLmMKLUBAIC0xNDUsNiArMTQ1LDcgQEAgaW5p dGlhbGl6ZV9zZXJ2ZXJfb3B0aW9ucyhTZXJ2ZXJPcHRpb25zICpvcHRpb25zKQotIAlvcHRpb25z LT5nc3NfY2xlYW51cF9jcmVkcyA9IC0xOwotIAlvcHRpb25zLT5nc3NfZGVsZWdfY3JlZHMgPSAt MTsKLSAJb3B0aW9ucy0+Z3NzX3N0cmljdF9hY2NlcHRvciA9IC0xOwotKwlvcHRpb25zLT5nc3Nf aW5kaWNhdG9ycyA9IE5VTEw7Ci0gCW9wdGlvbnMtPmdzc19zdG9yZV9yZWtleSA9IC0xOwotIAlv cHRpb25zLT5nc3Nfa2V4X2FsZ29yaXRobXMgPSBOVUxMOwotIAlvcHRpb25zLT51c2Vfa3VzZXJv ayA9IC0xOwotQEAgLTU2MCw2ICs1NjEsNyBAQCBmaWxsX2RlZmF1bHRfc2VydmVyX29wdGlvbnMo U2VydmVyT3B0aW9ucyAqb3B0aW9ucykKLSAJQ0xFQVJfT05fTk9ORShvcHRpb25zLT5yb3V0aW5n X2RvbWFpbik7Ci0gCUNMRUFSX09OX05PTkUob3B0aW9ucy0+aG9zdF9rZXlfYWdlbnQpOwotIAlD TEVBUl9PTl9OT05FKG9wdGlvbnMtPnBlcl9zb3VyY2VfcGVuYWx0eV9leGVtcHQpOwotKwlDTEVB Ul9PTl9OT05FKG9wdGlvbnMtPmdzc19pbmRpY2F0b3JzKTsKLSAKLSAJZm9yIChpID0gMDsgaSA8 IG9wdGlvbnMtPm51bV9ob3N0X2tleV9maWxlczsgaSsrKQotIAkJQ0xFQVJfT05fTk9ORShvcHRp b25zLT5ob3N0X2tleV9maWxlc1tpXSk7Ci1AQCAtNTk5LDcgKzYwMSw3IEBAIHR5cGVkZWYgZW51 bSB7Ci0gCXNQZXJTb3VyY2VQZW5hbHRpZXMsIHNQZXJTb3VyY2VQZW5hbHR5RXhlbXB0TGlzdCwK LSAJc0NsaWVudEFsaXZlSW50ZXJ2YWwsIHNDbGllbnRBbGl2ZUNvdW50TWF4LCBzQXV0aG9yaXpl ZEtleXNGaWxlLAotIAlzR3NzQXV0aGVudGljYXRpb24sIHNHc3NDbGVhbnVwQ3JlZHMsIHNHc3NE ZWxlZ2F0ZUNyZWRzLCBzR3NzRW5hYmxlazV1c2Vycywgc0dzc1N0cmljdEFjY2VwdG9yLAotLQlz R3NzS2V5RXgsIHNHc3NLZXhBbGdvcml0aG1zLCBzR3NzU3RvcmVSZWtleSwKLSsJc0dzc0luZGlj YXRvcnMsIHNHc3NLZXlFeCwgc0dzc0tleEFsZ29yaXRobXMsIHNHc3NTdG9yZVJla2V5LAotIAlz QWNjZXB0RW52LCBzU2V0RW52LCBzUGVybWl0VHVubmVsLAotIAlzTWF0Y2gsIHNQZXJtaXRPcGVu LCBzUGVybWl0TGlzdGVuLCBzRm9yY2VDb21tYW5kLCBzQ2hyb290RGlyZWN0b3J5LAotIAlzVXNl UHJpdmlsZWdlU2VwYXJhdGlvbiwgc0FsbG93QWdlbnRGb3J3YXJkaW5nLAotQEAgLTY5Niw2ICs2 OTgsNyBAQCBzdGF0aWMgc3RydWN0IHsKLSAJeyAiZ3NzYXBpc3RvcmVjcmVkZW50aWFsc29ucmVr ZXkiLCBzR3NzU3RvcmVSZWtleSwgU1NIQ0ZHX0dMT0JBTCB9LAotIAl7ICJnc3NhcGlrZXhhbGdv cml0aG1zIiwgc0dzc0tleEFsZ29yaXRobXMsIFNTSENGR19HTE9CQUwgfSwKLSAJeyAiZ3NzYXBp ZW5hYmxlazV1c2VycyIsIHNHc3NFbmFibGVrNXVzZXJzLCBTU0hDRkdfQUxMIH0sCi0rCXsgImdz c2FwaWluZGljYXRvcnMiLCBzR3NzSW5kaWNhdG9ycywgU1NIQ0ZHX0FMTCB9LAotICNlbHNlCi0g CXsgImdzc2FwaWF1dGhlbnRpY2F0aW9uIiwgc1Vuc3VwcG9ydGVkLCBTU0hDRkdfQUxMIH0sCi0g CXsgImdzc2FwaWNsZWFudXBjcmVkZW50aWFscyIsIHNVbnN1cHBvcnRlZCwgU1NIQ0ZHX0dMT0JB TCB9LAotQEAgLTcwNiw2ICs3MDksNyBAQCBzdGF0aWMgc3RydWN0IHsKLSAJeyAiZ3NzYXBpc3Rv cmVjcmVkZW50aWFsc29ucmVrZXkiLCBzVW5zdXBwb3J0ZWQsIFNTSENGR19HTE9CQUwgfSwKLSAJ eyAiZ3NzYXBpa2V4YWxnb3JpdGhtcyIsIHNVbnN1cHBvcnRlZCwgU1NIQ0ZHX0dMT0JBTCB9LAot IAl7ICJnc3NhcGllbmFibGVrNXVzZXJzIiwgc1Vuc3VwcG9ydGVkLCBTU0hDRkdfQUxMIH0sCi0r CXsgImdzc2FwaWluZGljYXRvcnMiLCBzVW5zdXBwb3J0ZWQsIFNTSENGR19BTEwgfSwKLSAjZW5k aWYKLSAJeyAiZ3NzdXNlc2Vzc2lvbmNjYWNoZSIsIHNVbnN1cHBvcnRlZCwgU1NIQ0ZHX0dMT0JB TCB9LAotIAl7ICJnc3NhcGl1c2VzZXNzaW9uY3JlZGNhY2hlIiwgc1Vuc3VwcG9ydGVkLCBTU0hD RkdfR0xPQkFMIH0sCi1AQCAtMTczNyw2ICsxNzQxLDE1IEBAIHByb2Nlc3Nfc2VydmVyX2NvbmZp Z19saW5lX2RlcHRoKFNlcnZlck9wdGlvbnMgKm9wdGlvbnMsIGNoYXIgKmxpbmUsCi0gCQkJb3B0 aW9ucy0+Z3NzX2tleF9hbGdvcml0aG1zID0geHN0cmR1cChhcmcpOwotIAkJYnJlYWs7Ci0gCi0r CWNhc2Ugc0dzc0luZGljYXRvcnM6Ci0rCQlhcmcgPSBhcmd2X25leHQoJmFjLCAmYXYpOwotKwkJ aWYgKCFhcmcgfHwgKmFyZyA9PSAnXDAnKQotKwkJCWZhdGFsKCIlcyBsaW5lICVkOiAlcyBtaXNz aW5nIGFyZ3VtZW50LiIsCi0rCQkJICAgIGZpbGVuYW1lLCBsaW5lbnVtLCBrZXl3b3JkKTsKLSsJ CWlmIChvcHRpb25zLT5nc3NfaW5kaWNhdG9ycyA9PSBOVUxMKQotKwkJCW9wdGlvbnMtPmdzc19p bmRpY2F0b3JzID0geHN0cmR1cChhcmcpOwotKwkJYnJlYWs7Ci0rCi0gCWNhc2Ugc1Bhc3N3b3Jk QXV0aGVudGljYXRpb246Ci0gCQlpbnRwdHIgPSAmb3B0aW9ucy0+cGFzc3dvcmRfYXV0aGVudGlj YXRpb247Ci0gCQlnb3RvIHBhcnNlX2ZsYWc7Ci1AQCAtMzM4Myw2ICszMzk2LDcgQEAgZHVtcF9j b25maWcoU2VydmVyT3B0aW9ucyAqbykKLSAJZHVtcF9jZmdfZm10aW50KHNHc3NTdHJpY3RBY2Nl cHRvciwgby0+Z3NzX3N0cmljdF9hY2NlcHRvcik7Ci0gCWR1bXBfY2ZnX2ZtdGludChzR3NzU3Rv cmVSZWtleSwgby0+Z3NzX3N0b3JlX3Jla2V5KTsKLSAJZHVtcF9jZmdfc3RyaW5nKHNHc3NLZXhB bGdvcml0aG1zLCBvLT5nc3Nfa2V4X2FsZ29yaXRobXMpOwotKwlkdW1wX2NmZ19zdHJpbmcoc0dz c0luZGljYXRvcnMsIG8tPmdzc19pbmRpY2F0b3JzKTsKLSAjZW5kaWYKLSAJZHVtcF9jZmdfZm10 aW50KHNQYXNzd29yZEF1dGhlbnRpY2F0aW9uLCBvLT5wYXNzd29yZF9hdXRoZW50aWNhdGlvbik7 Ci0gCWR1bXBfY2ZnX2ZtdGludChzS2JkSW50ZXJhY3RpdmVBdXRoZW50aWNhdGlvbiwKLWRpZmYg LS1naXQgYS9zZXJ2Y29uZi5oIGIvc2VydmNvbmYuaAotaW5kZXggNTY5MTAwZTQ3Li43ODFmMjBj NjEgMTAwNjQ0Ci0tLS0gYS9zZXJ2Y29uZi5oCi0rKysgYi9zZXJ2Y29uZi5oCi1AQCAtMTgxLDYg KzE4MSw3IEBAIHR5cGVkZWYgc3RydWN0IHsKLSAJY2hhciAgICoqYWxsb3dfZ3JvdXBzOwotIAl1 X2ludCBudW1fZGVueV9ncm91cHM7Ci0gCWNoYXIgICAqKmRlbnlfZ3JvdXBzOwotKwljaGFyICAg Kmdzc19pbmRpY2F0b3JzOwotIAotIAl1X2ludCBudW1fc3Vic3lzdGVtczsKLSAJY2hhciAgICoq c3Vic3lzdGVtX25hbWU7Ci1AQCAtMzEwLDYgKzMxMSw3IEBAIFRBSUxRX0hFQUQoaW5jbHVkZV9s aXN0LCBpbmNsdWRlX2l0ZW0pOwotIAkJTV9DUF9TVFJPUFQocm91dGluZ19kb21haW4pOyBcCi0g CQlNX0NQX1NUUk9QVChwZXJtaXRfdXNlcl9lbnZfYWxsb3dsaXN0KTsgXAotIAkJTV9DUF9TVFJP UFQocGFtX3NlcnZpY2VfbmFtZSk7IFwKLSsJCU1fQ1BfU1RST1BUKGdzc19pbmRpY2F0b3JzKTsg XAotIAkJTV9DUF9TVFJBUlJBWU9QVChhdXRob3JpemVkX2tleXNfZmlsZXMsIG51bV9hdXRoa2V5 c19maWxlcywgMSk7XAotIAkJTV9DUF9TVFJBUlJBWU9QVChyZXZva2VkX2tleXNfZmlsZXMsIFwK LSAJCSAgICBudW1fcmV2b2tlZF9rZXlzX2ZpbGVzLCAxKTsgXAotZGlmZiAtLWdpdCBhL3NzaC1n c3MuaCBiL3NzaC1nc3MuaAotaW5kZXggMzI5ZGM5ZGEwLi4xNTA2NzE5YTkgMTAwNjQ0Ci0tLS0g YS9zc2gtZ3NzLmgKLSsrKyBiL3NzaC1nc3MuaAotQEAgLTM0LDYgKzM0LDEyIEBACi0gI2luY2x1 ZGUgPGdzc2FwaS9nc3NhcGkuaD4KLSAjZW5kaWYKLSAKLSsjaWZkZWYgSEFWRV9HU1NBUElfRVhU X0gKLSsjaW5jbHVkZSA8Z3NzYXBpX2V4dC5oPgotKyNlbGlmIGRlZmluZWQoSEFWRV9HU1NBUElf R1NTQVBJX0VYVF9IKQotKyNpbmNsdWRlIDxnc3NhcGkvZ3NzYXBpX2V4dC5oPgotKyNlbmRpZgot KwotICNpZmRlZiBLUkI1Ci0gIyBpZm5kZWYgSEVJTURBTAotICMgIGlmZGVmIEhBVkVfR1NTQVBJ X0dFTkVSSUNfSAotQEAgLTExMiw2ICsxMTgsNyBAQCB0eXBlZGVmIHN0cnVjdCB7Ci0gCXNzaF9n c3NhcGlfY2NhY2hlIHN0b3JlOwotIAlpbnQgdXNlZDsKLSAJaW50IHVwZGF0ZWQ7Ci0rCWNoYXIg KippbmRpY2F0b3JzOyAvKiBhdXRoIGluZGljYXRvcnMgKi8KLSB9IHNzaF9nc3NhcGlfY2xpZW50 OwotIAotIHR5cGVkZWYgc3RydWN0IHNzaF9nc3NhcGlfbWVjaF9zdHJ1Y3QgewotZGlmZiAtLWdp dCBhL3NzaGRfY29uZmlnLjUgYi9zc2hkX2NvbmZpZy41Ci1pbmRleCAxZDE2ZGFiYWYuLjRjYTgw MDE2YyAxMDA2NDQKLS0tLSBhL3NzaGRfY29uZmlnLjUKLSsrKyBiL3NzaGRfY29uZmlnLjUKLUBA IC04MDMsNiArODAzLDUyIEBAIFRoaXMgb3B0aW9uIG9ubHkgYXBwbGllcyB0byBjb25uZWN0aW9u cyB1c2luZyBHU1NBUEkuCi0gLlBwCi0gVGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGtleSBleGNoYW5n ZSBhbGdvcml0aG1zIG1heSBhbHNvIGJlIG9idGFpbmVkIHVzaW5nCi0gLlFxIHNzaCAtUSBHU1NB UElLZXhBbGdvcml0aG1zIC4KLSsuSXQgQ20gR1NTQVBJSW5kaWNhdG9ycwotK1NwZWNpZmllcyB3 aGV0aGVyIHRvIGFjY2VwdCBvciBkZW55IEdTU0FQSSBhdXRoZW50aWNhdGVkIGFjY2VzcyBpZiBL ZXJiZXJvcwotK21lY2hhbmlzbSBpcyB1c2VkIGFuZCBLZXJiZXJvcyB0aWNrZXQgY29udGFpbnMg YSBwYXJ0aWN1bGFyIHNldCBvZgotK2F1dGhlbnRpY2F0aW9uIGluZGljYXRvcnMuIFRoZSB2YWx1 ZXMgY2FuIGJlIHNwZWNpZmllZCBhcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0Ci0rLkNtIFshXW5h bWUxLFshXW5hbWUyLC4uLiAuCi0rV2hlbiBpbmRpY2F0b3IncyBuYW1lIGlzIHByZWZpeGVkIHdp dGggISwgdGhlIGF1dGhlbnRpY2F0aW9uIGluZGljYXRvciAnbmFtZScKLSt3aWxsIGRlbnkgYWNj ZXNzIHRvIHRoZSBzeXN0ZW0uIE90aGVyd2lzZSwgb25lIG9mIG5vbi1uZWdhdGVkIGF1dGhlbnRp Y2F0aW9uCi0raW5kaWNhdG9ycyBtdXN0IGJlIHByZXNlbnQgaW4gdGhlIEtlcmJlcm9zIHRpY2tl dCB0byBhbGxvdyBhY2Nlc3MuIElmCi0rLkNtIEdTU0FQSUluZGljYXRvcnMKLStpcyBkZWZpbmVk LCBhIEtlcmJlcm9zIHRpY2tldCB0aGF0IGhhcyBpbmRpY2F0b3JzIGJ1dCBkb2VzIG5vdCBtYXRj aCB0aGUKLStwb2xpY3kgd2lsbCBnZXQgZGVuaWFsLiBJZiBhdCBsZWFzdCBvbmUgaW5kaWNhdG9y IGlzIGNvbmZpZ3VyZWQsIHdoZXRoZXIgZm9yCi0rYWNjZXNzIG9yIGRlbmlhbCwgdGlja2V0cyB3 aXRob3V0IGF1dGhlbnRpY2F0aW9uIGluZGljYXRvcnMgd2lsbCBiZSBleHBsaWNpdGx5Ci0rcmVq ZWN0ZWQuCi0rLlBwCi0rQnkgZGVmYXVsdCBzeXN0ZW1zIHVzaW5nIE1JVCBLZXJiZXJvcyAxLjE3 IG9yIGxhdGVyIHdpbGwgbm90IGFzc2lnbiBhbnkKLStpbmRpY2F0b3JzLiBTUEFLRSBhbmQgUEtJ TklUIG1ldGhvZHMgYWRkIGF1dGhlbnRpY2F0aW9uIGluZGljYXRvcnMKLSt0byBhbGwgc3VjY2Vz c2Z1bCBhdXRoZW50aWNhdGlvbnMuIFRoZSBTUEFLRSBwcmUtYXV0aGVudGljYXRpb24gbWV0aG9k IGlzCi0rcHJlZmVycmVkIG92ZXIgYW4gZW5jcnlwdGVkIHRpbWVzdGFtcCBwcmUtYXV0aGVudGlj YXRpb24gd2hlbiBwYXNzd29yZHMgdXNlZCB0bwotK2F1dGhlbnRpY2F0ZSB1c2VyIHByaW5jaXBh bHMuIEtlcmJlcm9zIEtEQ3MgYnVpbHQgd2l0aCBIZWltZGFsIEtlcmJlcm9zCi0rKGluY2x1ZGlu ZyBTYW1iYSBBRCBEQyBidWlsdCB3aXRoIEhlaW1kYWwpIGRvIG5vdCBhZGQgYXV0aGVudGljYXRp b24KLStpbmRpY2F0b3JzLiBIb3dldmVyLCBPcGVuU1NIIGJ1aWx0IGFnYWluc3QgSGVpbWRhbCBL ZXJiZXJvcyBsaWJyYXJ5IGlzIGFibGUgdG8KLStpbnF1aXJlIGF1dGhlbnRpY2F0aW9uIGluZGlj YXRvcnMgYW5kIHRodXMgY2FuIGJlIHVzZWQgdG8gY2hlY2sgZm9yIHRoZWlyIHByZXNlbmNlLgot Ky5QcAotK0luZGljYXRvciBuYW1lIGlzIGNhc2Utc2Vuc2l0aXZlIGFuZCBkZXBlbmRzIG9uIHRo ZSBjb25maWd1cmF0aW9uIG9mIGEKLStwYXJ0aWN1bGFyIEtlcmJlcm9zIGRlcGxveW1lbnQuIElu ZGljYXRvcnMgYXZhaWxhYmxlIGluIE1JVCBLZXJiZXJvcyBhbmQKLStGcmVlSVBBIGVudmlyb25t ZW50czoKLSsuUHAKLSsuQmwgLXRhZyAtd2lkdGggWFhYWCAtb2Zmc2V0IGluZGVudCAtY29tcGFj dAotKy5JdCBDbSBoYXJkZW5lZAotK1NQQUtFIG9yIGVuY3J5cHRlZCB0aW1lc3RhbXAgcHJlLWF1 dGhlbnRpY2F0aW9uIG1lY2hhbmlzbXMgaW4gTUlUIEtlcmJlcm9zIGFuZCBGcmVlSVBBCi0rLkl0 IENtIHBraW5pdAotK3NtYXJ0Y2FyZCBvciBQS0NTMTEgdG9rZW4tYmFzZWQgcHJlLWF1dGhlbnRp Y2F0aW9uIGluIE1JVCBLZXJiZXJvcyBhbmQgRnJlZUlQQQotKy5JdCBDbSByYWRpdXMKLStwcmUt YXV0aGVudGljYXRpb24gYmFzZWQgb24gYSBSQURJVVMgc2VydmVyIGluIE1JVCBLZXJiZXJvcyBh bmQgRnJlZUlQQQotKy5JdCBDbSBvdHAKLStUT1RQL0hPVFAtYmFzZWQgdHdvLWZhY3RvciBwcmUt YXV0aGVudGljYXRpb24gaW4gRnJlZUlQQQotKy5JdCBDbSBpZHAKLStPQXV0aDItYmFzZWQgcHJl LWF1dGhlbnRpY2F0aW9uIGluIEZyZWVJUEEgdXNpbmcgYW4gZXh0ZXJuYWwgaWRlbnRpdHkgcHJv dmlkZXIKLSthbmQgZGV2aWNlIGF1dGhvcml6YXRpb24gZ3JhbnQgZmxvdwotKy5JdCBDbSBwYXNz a2V5Ci0rRklETzItYmFzZWQgcHJlLWF1dGhlbnRpY2F0aW9uIGluIEZyZWVJUEEsIHVzaW5nIEZJ RE8yIFVTQiBhbmQgTkZDIHRva2VucwotKy5FbAotKy5QcAotK1RoZSBkZWZhdWx0Ci0rLkRxIG5v bmUKLStpcyB0byBub3QgdXNlIEdTU0FQSSBhdXRoZW50aWNhdGlvbiBpbmRpY2F0b3JzIGZvciBh Y2Nlc3MgZGVjaXNpb25zLgotIC5JdCBDbSBIb3N0YmFzZWRBY2NlcHRlZEFsZ29yaXRobXMKLSBU aGUgZGVmYXVsdCBpcyBoYW5kbGVkIHN5c3RlbS13aWRlIGJ5Ci0gLlhyIGNyeXB0by1wb2xpY2ll cyA3IC4KLS0tIAotMi41My4wCi0KCmRpZmYgLS1naXQgYS8wMDQ4LU5JU1QtY3VydmVzLWh5YnJp ZC1LRVgtaW1wbGVtZW50YXRpb24ucGF0Y2ggYi8wMDQ4LU5JU1QtY3VydmVzLWh5YnJpZC1LRVgt aW1wbGVtZW50YXRpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3YWI3 MTEuLjAwMDAwMDAKLS0tIGEvMDA0OC1OSVNULWN1cnZlcy1oeWJyaWQtS0VYLWltcGxlbWVudGF0 aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMwMyArMCwwIEBACi1Gcm9tIDM4MDJhNTFi NjkwNDRmNDE5YmI1M2RlYWZmNzA2MWQ2MmQ5NTk2ZmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx Ci1Gcm9tOiBEbWl0cnkgQmVseWF2c2tpeSA8YmVsZG1pdEBnbWFpbC5jb20+Ci1EYXRlOiBNb24s IDIwIE9jdCAyMDI1IDE2OjA3OjMxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggNDgvNTRdIE5JU1Qg Y3VydmVzIGh5YnJpZCBLRVggaW1wbGVtZW50YXRpb24KLQotLS0tCi0gY29tcGF0LmMgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgMjMgKy0KLSBjb21wYXQuaCAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgMSArCi0gY3J5cHRvX2FwaS5oICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKwot IGtleC1uYW1lcy5jICAgICAgICAgICAgICAgICAgICAgIHwgIDg5ICsrKy0KLSBrZXguYyAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCi0ga2V4LmggICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgMTkgKwotIGtleGdlbi5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDU2 ICsrLQotIGtleG1sa2VtNzY4eDI1NTE5LmMgICAgICAgICAgICAgIHwgNjc5ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0KLSBtb25pdG9yLmMgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgMiArCi0gbXlwcm9wb3NhbC5oICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKwotIHJlZ3Jl c3MvdW5pdHRlc3RzL2tleC90ZXN0X2tleC5jIHwgICA0ICsKLSBzc2gta2V5c2Nhbi5jICAgICAg ICAgICAgICAgICAgICB8ICAgMiArCi0gc3NoX2FwaS5jICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDQgKwotIHNzaGNvbm5lY3QyLmMgICAgICAgICAgICAgICAgICAgIHwgICAyICsKLSBzc2hk LWF1dGguYyAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCi0gMTUgZmlsZXMgY2hhbmdlZCwg ODUxIGluc2VydGlvbnMoKyksIDQxIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29tcGF0 LmMgYi9jb21wYXQuYwotaW5kZXggNDMxMjUxMGU1Li5lNmM3OTM1ZDQgMTAwNjQ0Ci0tLS0gYS9j b21wYXQuYwotKysrIGIvY29tcGF0LmMKLUBAIC0zNiw2ICszNiw3IEBACi0gI2luY2x1ZGUgImNv bXBhdC5oIgotICNpbmNsdWRlICJsb2cuaCIKLSAjaW5jbHVkZSAibWF0Y2guaCIKLSsjaW5jbHVk ZSA8b3BlbnNzbC9maXBzLmg+Ci0gCi0gLyogZGV0ZXJtaW5lIGJ1ZyBmbGFncyBmcm9tIFNTSCBw cm90b2NvbCBiYW5uZXIgKi8KLSB2b2lkCi1AQCAtMTQ4LDggKzE0OSw5IEBAIGNoYXIgKgotIGNv bXBhdF9rZXhfcHJvcG9zYWwoc3RydWN0IHNzaCAqc3NoLCBjb25zdCBjaGFyICpwKQotIHsKLSAJ Y2hhciAqY3AgPSBOVUxMLCAqY3AyID0gTlVMTDsKLSsJaW50IG1sa2VtX2F2YWlsYWJsZSA9IGlz X21sa2VtNzY4X2F2YWlsYWJsZSgpOwotIAotLQlpZiAoKHNzaC0+Y29tcGF0ICYgKFNTSF9CVUdf Q1VSVkUyNTUxOVBBRHxTU0hfT0xEX0RIR0VYKSkgPT0gMCkKLSsJaWYgKChzc2gtPmNvbXBhdCAm IChTU0hfQlVHX0NVUlZFMjU1MTlQQUR8U1NIX09MRF9ESEdFWCkpID09IDAgJiYgbWxrZW1fYXZh aWxhYmxlID09IDIpCi0gCQlyZXR1cm4geHN0cmR1cChwKTsKLSAJZGVidWcyX2YoIm9yaWdpbmFs IEtFWCBwcm9wb3NhbDogJXMiLCBwKTsKLSAJaWYgKChzc2gtPmNvbXBhdCAmIFNTSF9CVUdfQ1VS VkUyNTUxOVBBRCkgIT0gMCkKLUBAIC0xNjQsNiArMTY2LDI1IEBAIGNvbXBhdF9rZXhfcHJvcG9z YWwoc3RydWN0IHNzaCAqc3NoLCBjb25zdCBjaGFyICpwKQotIAkJZnJlZShjcCk7Ci0gCQljcCA9 IGNwMjsKLSAJfQotKwlpZiAobWxrZW1fYXZhaWxhYmxlID09IDIpCi0rCQlyZXR1cm4gY3AgPyBj cCA6IHhzdHJkdXAocCk7Ci0rCWlmIChtbGtlbV9hdmFpbGFibGUgPT0gMSAmJiBGSVBTX21vZGUo KSkgewotKwkJaWYgKChjcDIgPSBtYXRjaF9maWx0ZXJfZGVueWxpc3QoY3AgPyBjcCA6IHAsCi0r CQkgICAgIm1sa2VtNzY4eDI1NTE5LXNoYTI1NiIpKSA9PSBOVUxMKQotKwkJCWZhdGFsKCJtYXRj aF9maWx0ZXJfZGVueWxpc3QgZmFpbGVkIik7Ci0rCQlmcmVlKGNwKTsKLSsJCWNwID0gY3AyOwot Kwl9Ci0rCWlmIChtbGtlbV9hdmFpbGFibGUgPT0gMCkgewotKwkJaWYgKChjcDIgPSBtYXRjaF9m aWx0ZXJfZGVueWxpc3QoY3AgPyBjcCA6IHAsCi0rCQkgICAgIm1sa2VtNzY4eDI1NTE5LXNoYTI1 NiwiCi0rCQkgICAgIm1sa2VtNzY4bmlzdHAyNTYtc2hhMjU2LCIKLSsJCSAgICAibWxrZW0xMDI0 bmlzdHAzODQtc2hhMzg0IikpID09IE5VTEwpCi0rCQkJZmF0YWwoIm1hdGNoX2ZpbHRlcl9kZW55 bGlzdCBmYWlsZWQiKTsKLSsJCWZyZWUoY3ApOwotKwkJY3AgPSBjcDI7Ci0rCX0KLSsKLSAJaWYg KGNwID09IE5VTEwgfHwgKmNwID09ICdcMCcpCi0gCQlmYXRhbCgiTm8gc3VwcG9ydGVkIGtleSBl eGNoYW5nZSBhbGdvcml0aG1zIGZvdW5kIik7Ci0gCWRlYnVnMl9mKCJjb21wYXQgS0VYIHByb3Bv c2FsOiAlcyIsIGNwKTsKLWRpZmYgLS1naXQgYS9jb21wYXQuaCBiL2NvbXBhdC5oCi1pbmRleCAy ZTZkYjViZjkuLmI3OGU1NWI2OSAxMDA2NDQKLS0tLSBhL2NvbXBhdC5oCi0rKysgYi9jb21wYXQu aAotQEAgLTYyLDQgKzYyLDUgQEAgc3RydWN0IHNzaDsKLSAKLSB2b2lkICAgIGNvbXBhdF9iYW5u ZXIoc3RydWN0IHNzaCAqLCBjb25zdCBjaGFyICopOwotIGNoYXIJKmNvbXBhdF9rZXhfcHJvcG9z YWwoc3RydWN0IHNzaCAqLCBjb25zdCBjaGFyICopOwotK2ludCBpc19tbGtlbTc2OF9hdmFpbGFi bGUodm9pZCk7Ci0gI2VuZGlmCi1kaWZmIC0tZ2l0IGEvY3J5cHRvX2FwaS5oIGIvY3J5cHRvX2Fw aS5oCi1pbmRleCBmNWUzOGI1NDcuLjZhOGVkZTA2NyAxMDA2NDQKLS0tLSBhL2NyeXB0b19hcGku aAotKysrIGIvY3J5cHRvX2FwaS5oCi1AQCAtODIsNCArODIsOCBAQCBpbnQJY3J5cHRvX2tlbV9z bnRydXA3NjFfa2V5cGFpcih1bnNpZ25lZCBjaGFyICpwaywgdW5zaWduZWQgY2hhciAqc2spOwot ICNkZWZpbmUgY3J5cHRvX2tlbV9tbGtlbTc2OF9DSVBIRVJURVhUQllURVMgMTA4OAotICNkZWZp bmUgY3J5cHRvX2tlbV9tbGtlbTc2OF9CWVRFUyAzMgotIAotKyNkZWZpbmUgY3J5cHRvX2tlbV9t bGtlbTEwMjRfUFVCTElDS0VZQllURVMgMTU2OAotKyNkZWZpbmUgY3J5cHRvX2tlbV9tbGtlbTEw MjRfU0VDUkVUS0VZQllURVMgMzE2OAotKyNkZWZpbmUgY3J5cHRvX2tlbV9tbGtlbTEwMjRfQ0lQ SEVSVEVYVEJZVEVTIDE1NjgKLSsKLSAjZW5kaWYgLyogY3J5cHRvX2FwaV9oICovCi1kaWZmIC0t Z2l0IGEva2V4LW5hbWVzLmMgYi9rZXgtbmFtZXMuYwotaW5kZXggODgyZjI5MDViLi42MGZjNDg3 YjAgMTAwNjQ0Ci0tLS0gYS9rZXgtbmFtZXMuYwotKysrIGIva2V4LW5hbWVzLmMKLUBAIC0zNCw2 ICszNCw3IEBACi0gI2luY2x1ZGUgPG9wZW5zc2wvY3J5cHRvLmg+Ci0gI2luY2x1ZGUgPG9wZW5z c2wvZmlwcy5oPgotICNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgotKyNpbmNsdWRlIDxvcGVuc3Ns L2Vyci5oPgotICNlbmRpZgotIAotICNpbmNsdWRlICJrZXguaCIKLUBAIC05MCw2ICs5MSwxMCBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGtleGFsZyBrZXhhbGdzW10gPSB7Ci0gI2lmZGVmIFVTRV9N TEtFTTc2OFgyNTUxOQotIAl7IEtFWF9NTEtFTTc2OFgyNTUxOV9TSEEyNTYsIEtFWF9LRU1fTUxL RU03NjhYMjU1MTlfU0hBMjU2LCAwLAotIAkgICAgU1NIX0RJR0VTVF9TSEEyNTYsIEtFWF9JU19Q USB9LAotKwl7IEtFWF9NTEtFTTc2OE5JU1RQMjU2X1NIQTI1NiwgS0VYX0tFTV9NTEtFTTc2OE5J U1RQMjU2X1NIQTI1NiwgMCwKLSsJICAgIFNTSF9ESUdFU1RfU0hBMjU2LCBLRVhfSVNfUFEgfSwK LSsJeyBLRVhfTUxLRU0xMDI0TklTVFAzODRfU0hBMzg0LCBLRVhfS0VNX01MS0VNMTAyNE5JU1RQ Mzg0X1NIQTM4NCwgMCwKLSsJICAgIFNTSF9ESUdFU1RfU0hBMzg0LCBLRVhfSVNfUFEgfSwKLSAj ZW5kaWYKLSAjZW5kaWYgLyogSEFWRV9FVlBfU0hBMjU2IHx8ICFXSVRIX09QRU5TU0wgKi8KLSAJ eyBOVUxMLCAwLCAtMSwgLTEsIDAgfSwKLUBAIC0xMDgsMTQgKzExMywyNyBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IGtleGFsZyBnc3Nfa2V4YWxnc1tdID0gewotIAl7IE5VTEwsIDAsIC0xLCAtMSwg MH0sCi0gfTsKLSAKLS1zdGF0aWMgaW50IGlzX21sa2VtNzY4X2F2YWlsYWJsZSgpCi0rLyoKLSsg KiAwIC0gdW5hdmFpbGFibGUKLSsgKiAxIC0gYXZhaWxhYmxlIGluIG5vbi1GSVBTIG1vZGUKLSsg KiAyIC0gYXZhaWxhYmxlIGFsd2F5cwotKyAqLwotK2ludCBpc19tbGtlbTc2OF9hdmFpbGFibGUo KQotIHsKLSAJc3RhdGljIGludCBpc19mZXRjaGVkID0gLTE7Ci0gCi0gCWlmIChpc19mZXRjaGVk ID09IC0xKSB7Ci0tCQlFVlBfS0VNICptbGtlbTc2OCA9IEVWUF9LRU1fZmV0Y2goTlVMTCwgIm1s a2VtNzY4IiwgTlVMTCk7Ci0tCQlpc19mZXRjaGVkID0gbWxrZW03NjggIT0gTlVMTCA/IDEgOiAw OwotKwkJRVZQX0tFTSAqbWxrZW03NjggPSBOVUxMOwotKwotKwkJRVJSX3NldF9tYXJrKCk7Ci0r CQltbGtlbTc2OCA9IEVWUF9LRU1fZmV0Y2goTlVMTCwgIm1sa2VtNzY4IiwgTlVMTCk7Ci0rCQlp c19mZXRjaGVkID0gKG1sa2VtNzY4ID09IE5VTEwpID8gMCA6IDI7Ci0rCQlpZiAoaXNfZmV0Y2hl ZCA9PSAwICYmIEZJUFNfbW9kZSgpID09IDEpIHsKLSsJCSAgICBtbGtlbTc2OCA9IEVWUF9LRU1f ZmV0Y2goTlVMTCwgIm1sa2VtNzY4IiwgInByb3ZpZGVyPWRlZmF1bHQsLWZpcHMiKTsKLSsJCSAg ICBpc19mZXRjaGVkID0gKG1sa2VtNzY4ID09IE5VTEwpID8gMCA6IDE7Ci0rCQl9Ci0gCQlFVlBf S0VNX2ZyZWUobWxrZW03NjgpOwotKwkJRVJSX3BvcF90b19tYXJrKCk7Ci0gCX0KLSAKLSAJcmV0 dXJuIGlzX2ZldGNoZWQ7Ci1AQCAtMTI3LDExICsxNDUsMzIgQEAga2V4X2FsZ19saXN0X2ludGVy bmFsKGNoYXIgc2VwLCBjb25zdCBzdHJ1Y3Qga2V4YWxnICphbGdzKQotIAljaGFyICpyZXQgPSBO VUxMOwotIAljb25zdCBzdHJ1Y3Qga2V4YWxnICprOwotIAljaGFyIHNlcF9zdHJbMl0gPSB7c2Vw LCAnXDAnfTsKLSsJaW50IHgyNTUxOW1sa2VtX2F2YWlsYWJsZSA9IDAsIG5pc3RtbGtlbV9hdmFp bGFibGUgPSAwOwotIAotLQlmb3IgKGsgPSBrZXhhbGdzOyBrLT5uYW1lICE9IE5VTEw7IGsrKykg ewotLQkJaWYgKHN0cmNtcChrLT5uYW1lLCBLRVhfTUxLRU03NjhYMjU1MTlfU0hBMjU2KSA9PSAw Ci0tCQkJJiYgIWlzX21sa2VtNzY4X2F2YWlsYWJsZSgpKQotKwkvKgotKwkgKiBGSVBTIHByb3Zp ZGVyIGNhbiBwcm92aWRlIE1MLUtFTXMgYW5kIHRoZW4gYWxsIGh5YnJpZHMgYXJlIGF2YWlsYWJs ZQotKwkgKiBPdGhlcndpc2Ugb25seSBOSVNUIGh5YnJpZHMgYXJlIGF2YWlsYWJsZQotKwkgKiAq LwotKwlpZiAoRklQU19tb2RlKCkpIHsKLSsJICAgIGlmIChpc19tbGtlbTc2OF9hdmFpbGFibGUo KSA9PSAyKSB7Ci0rCSAgICAgICAgeDI1NTE5bWxrZW1fYXZhaWxhYmxlID0gMTsKLSsJICAgICAg ICBuaXN0bWxrZW1fYXZhaWxhYmxlID0gMTsKLSsJICAgIH0gZWxzZSBpZiAoaXNfbWxrZW03Njhf YXZhaWxhYmxlKCkgPT0gMSkgewotKwkgICAgICAgIG5pc3RtbGtlbV9hdmFpbGFibGUgPSAxOwot KwkgICAgfQotKwl9IGVsc2UgewotKwkgICAgaWYgKGlzX21sa2VtNzY4X2F2YWlsYWJsZSgpID4g MCkgewotKwkgICAgICAgIHgyNTUxOW1sa2VtX2F2YWlsYWJsZSA9IDE7Ci0rCSAgICAgICAgbmlz dG1sa2VtX2F2YWlsYWJsZSA9IDE7Ci0rCSAgICB9Ci0rCX0KLSsKLSsJZm9yIChrID0gYWxnczsg ay0+bmFtZSAhPSBOVUxMOyBrKyspIHsKLSsJCWlmICggIChzdHJjbXAoay0+bmFtZSwgS0VYX01M S0VNNzY4WDI1NTE5X1NIQTI1NikgPT0gMCAgICAmJiB4MjU1MTltbGtlbV9hdmFpbGFibGUgPT0g MCkKLSsJCSAgIHx8IChzdHJjbXAoay0+bmFtZSwgS0VYX01MS0VNNzY4TklTVFAyNTZfU0hBMjU2 KSA9PSAwICAmJiBuaXN0bWxrZW1fYXZhaWxhYmxlID09IDApCi0rCQkgICB8fCAoc3RyY21wKGst Pm5hbWUsIEtFWF9NTEtFTTEwMjROSVNUUDM4NF9TSEEzODQpID09IDAgJiYgbmlzdG1sa2VtX2F2 YWlsYWJsZSA9PSAwKSkKLSAJCQljb250aW51ZTsKLSsKLSAJCXhleHRlbmRmKCZyZXQsIHNlcF9z dHIsICIlcyIsIGstPm5hbWUpOwotIAl9Ci0gCi1AQCAtMTU0LDEwICsxOTMsMzAgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBrZXhhbGcgKgotIGtleF9hbGdfYnlfbmFtZShjb25zdCBjaGFyICpuYW1l KQotIHsKLSAJY29uc3Qgc3RydWN0IGtleGFsZyAqazsKLSsJaW50IHgyNTUxOW1sa2VtX2F2YWls YWJsZSA9IDAsIG5pc3RtbGtlbV9hdmFpbGFibGUgPSAwOwotIAotLQlpZiAoc3RyY21wKG5hbWUs IEtFWF9NTEtFTTc2OFgyNTUxOV9TSEEyNTYpID09IDAKLS0JCSYmICFpc19tbGtlbTc2OF9hdmFp bGFibGUoKSkKLS0JcmV0dXJuIE5VTEw7Ci0rCS8qCi0rCSAqIEZJUFMgcHJvdmlkZXIgY2FuIHBy b3ZpZGUgTUwtS0VNcyBhbmQgdGhlbiBhbGwgaHlicmlkcyBhcmUgYXZhaWxhYmxlCi0rCSAqIE90 aGVyd2lzZSBvbmx5IE5JU1QgaHlicmlkcyBhcmUgYXZhaWxhYmxlCi0rCSAqICovCi0rCWlmIChG SVBTX21vZGUoKSkgewotKwkgICAgaWYgKGlzX21sa2VtNzY4X2F2YWlsYWJsZSgpID09IDIpIHsK LSsJICAgICAgICB4MjU1MTltbGtlbV9hdmFpbGFibGUgPSAxOwotKwkgICAgICAgIG5pc3RtbGtl bV9hdmFpbGFibGUgPSAxOwotKwkgICAgfSBlbHNlIGlmIChpc19tbGtlbTc2OF9hdmFpbGFibGUo KSA9PSAxKSB7Ci0rCSAgICAgICAgbmlzdG1sa2VtX2F2YWlsYWJsZSA9IDE7Ci0rCSAgICB9Ci0r CX0gZWxzZSB7Ci0rCSAgICBpZiAoaXNfbWxrZW03NjhfYXZhaWxhYmxlKCkgPiAwKSB7Ci0rCSAg ICAgICAgeDI1NTE5bWxrZW1fYXZhaWxhYmxlID0gMTsKLSsJICAgICAgICBuaXN0bWxrZW1fYXZh aWxhYmxlID0gMTsKLSsJICAgIH0KLSsJfQotKwotKwlpZiAoICAoc3RyY21wKG5hbWUsIEtFWF9N TEtFTTc2OFgyNTUxOV9TSEEyNTYpID09IDAgICAgJiYgeDI1NTE5bWxrZW1fYXZhaWxhYmxlID09 IDApCi0rCSAgIHx8IChzdHJjbXAobmFtZSwgS0VYX01MS0VNNzY4TklTVFAyNTZfU0hBMjU2KSA9 PSAwICAmJiBuaXN0bWxrZW1fYXZhaWxhYmxlID09IDApCi0rCSAgIHx8IChzdHJjbXAobmFtZSwg S0VYX01MS0VNMTAyNE5JU1RQMzg0X1NIQTM4NCkgPT0gMCAmJiBuaXN0bWxrZW1fYXZhaWxhYmxl ID09IDApKQotKwkgICByZXR1cm4gTlVMTDsKLSAKLSAJZm9yIChrID0ga2V4YWxnczsgay0+bmFt ZSAhPSBOVUxMOyBrKyspIHsKLSAJCWlmIChzdHJjbXAoay0+bmFtZSwgbmFtZSkgPT0gMCkKLUBA IC0yMjksOCArMjg4LDE2IEBAIGtleF9uYW1lc192YWxpZChjb25zdCBjaGFyICpuYW1lcykKLSAJ CQlyZXR1cm4gMDsKLSAJCX0KLSAJCWlmIChrZXhfYWxnX2J5X25hbWUocCkgPT0gTlVMTCkgewot LQkJCWlmIChGSVBTX21vZGUoKSkKLS0JCQkJZXJyb3IoIlwiJS4xMDBzXCIgaXMgbm90IGFsbG93 ZWQgaW4gRklQUyBtb2RlIiwgcCk7Ci0rCQkJaWYgKEZJUFNfbW9kZSgpKSB7Ci0rCQkJCWlmICgo c3RyY21wKHAsIEtFWF9NTEtFTTc2OFgyNTUxOV9TSEEyNTYpID09IDApCi0rCQkJCSAgICB8fCAo c3RyY21wKHAsIEtFWF9NTEtFTTc2OE5JU1RQMjU2X1NIQTI1NikgPT0gMCkKLSsJCQkJICAgIHx8 IChzdHJjbXAocCwgS0VYX01MS0VNMTAyNE5JU1RQMzg0X1NIQTM4NCkgPT0gMCkpIHsKLSsJCQkJ CWRlYnVnKCJcIiUuMTAwc1wiIGlzIG5vdCBhbGxvd2VkIGluIEZJUFMgbW9kZSIsIHApOwotKwkJ CQkJY29udGludWU7Ci0rCQkJCX0KLSsJCQkJZWxzZQotKwkJCQkJZXJyb3IoIlwiJS4xMDBzXCIg aXMgbm90IGFsbG93ZWQgaW4gRklQUyBtb2RlIiwgcCk7Ci0rCQkJfQotIAkJCWVsc2UKLSAJCQkJ ZXJyb3IoIlVuc3VwcG9ydGVkIEtFWCBhbGdvcml0aG0gXCIlLjEwMHNcIiIsIHApOwotIAkJCWZy ZWUocyk7Ci1kaWZmIC0tZ2l0IGEva2V4LmMgYi9rZXguYwotaW5kZXggMWViM2NhOWQzLi44Y2Zk NDQ2YzAgMTAwNjQ0Ci0tLS0gYS9rZXguYwotKysrIGIva2V4LmMKLUBAIC03NTcsNiArNzU3LDcg QEAga2V4X2ZyZWUoc3RydWN0IGtleCAqa2V4KQotICNpZmRlZiBPUEVOU1NMX0hBU19FQ0MKLSAJ RUNfS0VZX2ZyZWUoa2V4LT5lY19jbGllbnRfa2V5KTsKLSAjZW5kaWYgLyogT1BFTlNTTF9IQVNf RUNDICovCi0rCUVWUF9QS0VZX2ZyZWUoa2V4LT5lY19oeWJyaWRfY2xpZW50X2tleSk7Ci0gI2Vu ZGlmIC8qIFdJVEhfT1BFTlNTTCAqLwotIAlmb3IgKG1vZGUgPSAwOyBtb2RlIDwgTU9ERV9NQVg7 IG1vZGUrKykgewotIAkJa2V4X2ZyZWVfbmV3a2V5cyhrZXgtPm5ld2tleXNbbW9kZV0pOwotZGlm ZiAtLWdpdCBhL2tleC5oIGIva2V4LmgKLWluZGV4IGZmNDEzMjRlOS4uZDExMGFkMjlhIDEwMDY0 NAotLS0tIGEva2V4LmgKLSsrKyBiL2tleC5oCi1AQCAtNzIsNiArNzIsOCBAQAotICNkZWZpbmUJ S0VYX1NOVFJVUDc2MVgyNTUxOV9TSEE1MTIJInNudHJ1cDc2MXgyNTUxOS1zaGE1MTIiCi0gI2Rl ZmluZQlLRVhfU05UUlVQNzYxWDI1NTE5X1NIQTUxMl9PTEQJInNudHJ1cDc2MXgyNTUxOS1zaGE1 MTJAb3BlbnNzaC5jb20iCi0gI2RlZmluZQlLRVhfTUxLRU03NjhYMjU1MTlfU0hBMjU2CSJtbGtl bTc2OHgyNTUxOS1zaGEyNTYiCi0rI2RlZmluZQlLRVhfTUxLRU03NjhOSVNUUDI1Nl9TSEEyNTYg ICAgICJtbGtlbTc2OG5pc3RwMjU2LXNoYTI1NiIKLSsjZGVmaW5lCUtFWF9NTEtFTTEwMjROSVNU UDM4NF9TSEEzODQgICAgIm1sa2VtMTAyNG5pc3RwMzg0LXNoYTM4NCIKLSAKLSAjZGVmaW5lIENP TVBfTk9ORQkwCi0gI2RlZmluZSBDT01QX0RFTEFZRUQJMgotQEAgLTExMCw2ICsxMTIsOCBAQCBl bnVtIGtleF9leGNoYW5nZSB7Ci0gCUtFWF9DMjU1MTlfU0hBMjU2LAotIAlLRVhfS0VNX1NOVFJV UDc2MVgyNTUxOV9TSEE1MTIsCi0gCUtFWF9LRU1fTUxLRU03NjhYMjU1MTlfU0hBMjU2LAotKwlL RVhfS0VNX01MS0VNNzY4TklTVFAyNTZfU0hBMjU2LAotKwlLRVhfS0VNX01MS0VNMTAyNE5JU1RQ Mzg0X1NIQTM4NCwKLSAjaWZkZWYgR1NTQVBJCi0gCUtFWF9HU1NfR1JQMV9TSEExLAotIAlLRVhf R1NTX0dSUDE0X1NIQTEsCi1AQCAtMjExLDYgKzIxNSw5IEBAIHN0cnVjdCBrZXggewotIAl1X2No YXIgc250cnVwNzYxX2NsaWVudF9rZXlbY3J5cHRvX2tlbV9zbnRydXA3NjFfU0VDUkVUS0VZQllU RVNdOyAvKiBLRU0gKi8KLSAJdV9jaGFyIG1sa2VtNzY4X2NsaWVudF9rZXlbY3J5cHRvX2tlbV9t bGtlbTc2OF9TRUNSRVRLRVlCWVRFU107IC8qIEtFTSAqLwotIAlzdHJ1Y3Qgc3NoYnVmICpjbGll bnRfcHViOwotKwkvKiBGSVhNRSAqLwotKwlFVlBfUEtFWSAqZWNfaHlicmlkX2NsaWVudF9rZXk7 IC8qIE5JU1QgaHlicmlkcyAqLwotKwl1X2NoYXIgbWxrZW0xMDI0X2NsaWVudF9rZXlbY3J5cHRv X2tlbV9tbGtlbTEwMjRfU0VDUkVUS0VZQllURVNdOyAvKiBNTC1LRU0gMTAyNCArIE5JU1QgKi8K LSB9OwotIAotIGludAkga2V4X25hbWVfdmFsaWQoY29uc3QgY2hhciAqKTsKLUBAIC0yOTMsNiAr MzAwLDE4IEBAIGludAkga2V4X2tlbV9tbGtlbTc2OHgyNTUxOV9lbmMoc3RydWN0IGtleCAqLCBj b25zdCBzdHJ1Y3Qgc3NoYnVmICosCi0gaW50CSBrZXhfa2VtX21sa2VtNzY4eDI1NTE5X2RlYyhz dHJ1Y3Qga2V4ICosIGNvbnN0IHN0cnVjdCBzc2hidWYgKiwKLSAgICAgc3RydWN0IHNzaGJ1ZiAq Kik7Ci0gCi0raW50CSBrZXhfa2VtX21sa2VtNzY4bmlzdHAyNTZfa2V5cGFpcihzdHJ1Y3Qga2V4 ICopOwotK2ludAkga2V4X2tlbV9tbGtlbTc2OG5pc3RwMjU2X2VuYyhzdHJ1Y3Qga2V4ICosIGNv bnN0IHN0cnVjdCBzc2hidWYgKiwKLSsgICAgc3RydWN0IHNzaGJ1ZiAqKiwgc3RydWN0IHNzaGJ1 ZiAqKik7Ci0raW50CSBrZXhfa2VtX21sa2VtNzY4bmlzdHAyNTZfZGVjKHN0cnVjdCBrZXggKiwg Y29uc3Qgc3RydWN0IHNzaGJ1ZiAqLAotKyAgICBzdHJ1Y3Qgc3NoYnVmICoqKTsKLSsKLStpbnQJ IGtleF9rZW1fbWxrZW0xMDI0bmlzdHAzODRfa2V5cGFpcihzdHJ1Y3Qga2V4ICopOwotK2ludAkg a2V4X2tlbV9tbGtlbTEwMjRuaXN0cDM4NF9lbmMoc3RydWN0IGtleCAqLCBjb25zdCBzdHJ1Y3Qg c3NoYnVmICosCi0rICAgIHN0cnVjdCBzc2hidWYgKiosIHN0cnVjdCBzc2hidWYgKiopOwotK2lu dAkga2V4X2tlbV9tbGtlbTEwMjRuaXN0cDM4NF9kZWMoc3RydWN0IGtleCAqLCBjb25zdCBzdHJ1 Y3Qgc3NoYnVmICosCi0rICAgIHN0cnVjdCBzc2hidWYgKiopOwotKwotIGludAkga2V4X2RoX2tl eWdlbihzdHJ1Y3Qga2V4ICopOwotIGludAkga2V4X2RoX2NvbXB1dGVfa2V5KHN0cnVjdCBrZXgg KiwgQklHTlVNICosIHN0cnVjdCBzc2hidWYgKik7Ci0gCi1kaWZmIC0tZ2l0IGEva2V4Z2VuLmMg Yi9rZXhnZW4uYwotaW5kZXggMmY4MjUyNDg4Li45YTM1NmUyOTggMTAwNjQ0Ci0tLS0gYS9rZXhn ZW4uYwotKysrIGIva2V4Z2VuLmMKLUBAIC0xMzMsMTIgKzEzMywyNCBAQCBrZXhfZ2VuX2NsaWVu dChzdHJ1Y3Qgc3NoICpzc2gpCi0gCQlicmVhazsKLSAJY2FzZSBLRVhfS0VNX01MS0VNNzY4WDI1 NTE5X1NIQTI1NjoKLSAJCWlmIChGSVBTX21vZGUoKSkgewotLQkJICAgIGxvZ2l0X2YoIktleSBl eGNoYW5nZSB0eXBlIG1sa2VtNzY4eDI1NTE5IGlzIG5vdCBhbGxvd2VkIGluIEZJUFMgbW9kZSIp OwotLQkJICAgIHIgPSBTU0hfRVJSX0lOVkFMSURfQVJHVU1FTlQ7Ci0rCQkgICAgRVZQX0tFTSAq bWxrZW0gPSBFVlBfS0VNX2ZldGNoKE5VTEwsICJtbGtlbTc2OCIsIE5VTEwpOwotKwkJICAgIGlm IChtbGtlbSA9PSBOVUxMKSB7Ci0rCQkgICAgICAgIGxvZ2l0X2YoIktleSBleGNoYW5nZSB0eXBl IG1sa2VtNzY4eDI1NTE5IGlzIG5vdCBhbGxvd2VkIGluIEZJUFMgbW9kZSIpOwotKwkJICAgICAg ICByID0gU1NIX0VSUl9JTlZBTElEX0FSR1VNRU5UOwotKwkJICAgIH0gZWxzZSB7Ci0rCQkJRVZQ X0tFTV9mcmVlKG1sa2VtKTsKLSsJCSAgICAgICAgciA9IGtleF9rZW1fbWxrZW03Njh4MjU1MTlf a2V5cGFpcihrZXgpOwotKwkJICAgIH0KLSAJCX0gZWxzZSB7Ci0gCQkgICAgciA9IGtleF9rZW1f bWxrZW03Njh4MjU1MTlfa2V5cGFpcihrZXgpOwotIAkJfQotIAkJYnJlYWs7Ci0rCWNhc2UgS0VY X0tFTV9NTEtFTTc2OE5JU1RQMjU2X1NIQTI1NjoKLSsJCSAgICByID0ga2V4X2tlbV9tbGtlbTc2 OG5pc3RwMjU2X2tleXBhaXIoa2V4KTsKLSsJCWJyZWFrOwotKwljYXNlIEtFWF9LRU1fTUxLRU0x MDI0TklTVFAzODRfU0hBMzg0OgotKwkJICAgIHIgPSBrZXhfa2VtX21sa2VtMTAyNG5pc3RwMzg0 X2tleXBhaXIoa2V4KTsKLSsJCWJyZWFrOwotIAlkZWZhdWx0OgotIAkJciA9IFNTSF9FUlJfSU5W QUxJRF9BUkdVTUVOVDsKLSAJCWJyZWFrOwotQEAgLTIyMywxMyArMjM1LDI4IEBAIGlucHV0X2tl eF9nZW5fcmVwbHkoaW50IHR5cGUsIHVpbnQzMl90IHNlcSwgc3RydWN0IHNzaCAqc3NoKQotIAkJ YnJlYWs7Ci0gCWNhc2UgS0VYX0tFTV9NTEtFTTc2OFgyNTUxOV9TSEEyNTY6Ci0gCQlpZiAoRklQ U19tb2RlKCkpIHsKLS0JCSAgICBsb2dpdF9mKCJLZXkgZXhjaGFuZ2UgdHlwZSBtbGtlbTc2OHgy NTUxOSBpcyBub3QgYWxsb3dlZCBpbiBGSVBTIG1vZGUiKTsKLS0JCSAgICByID0gU1NIX0VSUl9J TlZBTElEX0FSR1VNRU5UOwotKwkJICAgIEVWUF9LRU0gKm1sa2VtID0gRVZQX0tFTV9mZXRjaChO VUxMLCAibWxrZW03NjgiLCBOVUxMKTsKLSsJCSAgICBpZiAobWxrZW0gPT0gTlVMTCkgewotKwkJ ICAgICAgICBsb2dpdF9mKCJLZXkgZXhjaGFuZ2UgdHlwZSBtbGtlbTc2OHgyNTUxOSBpcyBub3Qg YWxsb3dlZCBpbiBGSVBTIG1vZGUiKTsKLSsJCSAgICAgICAgciA9IFNTSF9FUlJfSU5WQUxJRF9B UkdVTUVOVDsKLSsJCSAgICB9IGVsc2UgewotKwkJCUVWUF9LRU1fZnJlZShtbGtlbSk7Ci0rCQkg ICAgICAgIHIgPSBrZXhfa2VtX21sa2VtNzY4eDI1NTE5X2RlYyhrZXgsIHNlcnZlcl9ibG9iLAot KwkJICAgICAgICAgICAgJnNoYXJlZF9zZWNyZXQpOwotKwkJICAgIH0KLSAJCX0gZWxzZSB7Ci0g CQkgICAgciA9IGtleF9rZW1fbWxrZW03Njh4MjU1MTlfZGVjKGtleCwgc2VydmVyX2Jsb2IsCi0g CQkgICAgICAgICZzaGFyZWRfc2VjcmV0KTsKLSAJCX0KLSAJCWJyZWFrOwotKwljYXNlIEtFWF9L RU1fTUxLRU03NjhOSVNUUDI1Nl9TSEEyNTY6Ci0rCQkgICAgciA9IGtleF9rZW1fbWxrZW03Njhu aXN0cDI1Nl9kZWMoa2V4LCBzZXJ2ZXJfYmxvYiwKLSsJCSAgICAgICAgJnNoYXJlZF9zZWNyZXQp OwotKwkJYnJlYWs7Ci0rCWNhc2UgS0VYX0tFTV9NTEtFTTEwMjROSVNUUDM4NF9TSEEzODQ6Ci0r CQkgICAgciA9IGtleF9rZW1fbWxrZW0xMDI0bmlzdHAzODRfZGVjKGtleCwgc2VydmVyX2Jsb2Is Ci0rCQkgICAgICAgICZzaGFyZWRfc2VjcmV0KTsKLSsJCWJyZWFrOwotIAlkZWZhdWx0OgotIAkJ ciA9IFNTSF9FUlJfSU5WQUxJRF9BUkdVTUVOVDsKLSAJCWJyZWFrOwotQEAgLTI4Myw2ICszMTAs OCBAQCBvdXQ6Ci0gCSAgICBzaXplb2Yoa2V4LT5zbnRydXA3NjFfY2xpZW50X2tleSkpOwotIAll eHBsaWNpdF9iemVybyhrZXgtPm1sa2VtNzY4X2NsaWVudF9rZXksCi0gCSAgICBzaXplb2Yoa2V4 LT5tbGtlbTc2OF9jbGllbnRfa2V5KSk7Ci0rCWV4cGxpY2l0X2J6ZXJvKGtleC0+bWxrZW0xMDI0 X2NsaWVudF9rZXksCi0rCSAgICBzaXplb2Yoa2V4LT5tbGtlbTEwMjRfY2xpZW50X2tleSkpOwot IAlzc2hidWZfZnJlZShzZXJ2ZXJfaG9zdF9rZXlfYmxvYik7Ci0gCWZyZWUoc2lnbmF0dXJlKTsK LSAJc3NoYnVmX2ZyZWUodG1wKTsKLUBAIC0zNjIsMTMgKzM5MSwyOCBAQCBpbnB1dF9rZXhfZ2Vu X2luaXQoaW50IHR5cGUsIHVpbnQzMl90IHNlcSwgc3RydWN0IHNzaCAqc3NoKQotIAkJYnJlYWs7 Ci0gCWNhc2UgS0VYX0tFTV9NTEtFTTc2OFgyNTUxOV9TSEEyNTY6Ci0gCQlpZiAoRklQU19tb2Rl KCkpIHsKLS0JCSAgICBsb2dpdF9mKCJLZXkgZXhjaGFuZ2UgdHlwZSBtbGtlbTc2OHgyNTUxOSBp cyBub3QgYWxsb3dlZCBpbiBGSVBTIG1vZGUiKTsKLS0JCSAgICByID0gU1NIX0VSUl9JTlZBTElE X0FSR1VNRU5UOwotKwkJICAgIEVWUF9LRU0gKm1sa2VtID0gRVZQX0tFTV9mZXRjaChOVUxMLCAi bWxrZW03NjgiLCBOVUxMKTsKLSsJCSAgICBpZiAobWxrZW0gPT0gTlVMTCkgewotKwkJICAgICAg ICBsb2dpdF9mKCJLZXkgZXhjaGFuZ2UgdHlwZSBtbGtlbTc2OHgyNTUxOSBpcyBub3QgYWxsb3dl ZCBpbiBGSVBTIG1vZGUiKTsKLSsJCSAgICAgICAgciA9IFNTSF9FUlJfSU5WQUxJRF9BUkdVTUVO VDsKLSsJCSAgICB9IGVsc2UgewotKwkJCUVWUF9LRU1fZnJlZShtbGtlbSk7Ci0rCQkgICAgICAg IHIgPSBrZXhfa2VtX21sa2VtNzY4eDI1NTE5X2VuYyhrZXgsIGNsaWVudF9wdWJrZXksCi0rCQkg ICAgICAgICAgICAmc2VydmVyX3B1YmtleSwgJnNoYXJlZF9zZWNyZXQpOwotKwkJICAgIH0KLSAJ CX0gZWxzZSB7Ci0gCQkgICAgciA9IGtleF9rZW1fbWxrZW03Njh4MjU1MTlfZW5jKGtleCwgY2xp ZW50X3B1YmtleSwKLSAJCSAgICAgICAgJnNlcnZlcl9wdWJrZXksICZzaGFyZWRfc2VjcmV0KTsK LSAJCX0KLSAJCWJyZWFrOwotKwljYXNlIEtFWF9LRU1fTUxLRU03NjhOSVNUUDI1Nl9TSEEyNTY6 Ci0rCQkgICAgciA9IGtleF9rZW1fbWxrZW03NjhuaXN0cDI1Nl9lbmMoa2V4LCBjbGllbnRfcHVi a2V5LAotKwkJICAgICAgICAmc2VydmVyX3B1YmtleSwgJnNoYXJlZF9zZWNyZXQpOwotKwkJYnJl YWs7Ci0rCWNhc2UgS0VYX0tFTV9NTEtFTTEwMjROSVNUUDM4NF9TSEEzODQ6Ci0rCQkgICAgciA9 IGtleF9rZW1fbWxrZW0xMDI0bmlzdHAzODRfZW5jKGtleCwgY2xpZW50X3B1YmtleSwKLSsJCSAg ICAgICAgJnNlcnZlcl9wdWJrZXksICZzaGFyZWRfc2VjcmV0KTsKLSsJCWJyZWFrOwotIAlkZWZh dWx0OgotIAkJciA9IFNTSF9FUlJfSU5WQUxJRF9BUkdVTUVOVDsKLSAJCWJyZWFrOwotZGlmZiAt LWdpdCBhL2tleG1sa2VtNzY4eDI1NTE5LmMgYi9rZXhtbGtlbTc2OHgyNTUxOS5jCi1pbmRleCBh YjYxNjcyMjEuLjdjMDYzZjIxYyAxMDA2NDQKLS0tLSBhL2tleG1sa2VtNzY4eDI1NTE5LmMKLSsr KyBiL2tleG1sa2VtNzY4eDI1NTE5LmMKLUBAIC00NCwxOSArNDQsMzMgQEAKLSAjaWZkZWYgVVNF X01MS0VNNzY4WDI1NTE5Ci0gCi0gI2luY2x1ZGUgImxpYmNydXhfbWxrZW03Njhfc2hhMy5oIgot KyNpbmNsdWRlIDxvcGVuc3NsL2JuLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZWMuaD4KLSAjaW5j bHVkZSA8b3BlbnNzbC9lcnIuaD4KLSAjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KLSsjaW5jbHVk ZSA8b3BlbnNzbC9maXBzLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gCi0rI2RlZmluZSBGSVBT X0ZBTExCQUNLX1BST1BRICJwcm92aWRlcj1kZWZhdWx0LC1maXBzIgotKwotIHN0YXRpYyBpbnQK LS1tbGtlbTc2OF9rZXlwYWlyX2dlbih1bnNpZ25lZCBjaGFyICpwdWJrZXlidWYsIHVuc2lnbmVk IGNoYXIgKnByaXZrZXlidWYpCi0rbWxrZW1fa2V5cGFpcl9nZW4oY29uc3QgY2hhciAqYWxnbmFt ZSwgdW5zaWduZWQgY2hhciAqcHVia2V5YnVmLCBzaXplX3QgcHVia2V5X3NpemUsCi0rCSAgICAg ICAgICB1bnNpZ25lZCBjaGFyICpwcml2a2V5YnVmLCBzaXplX3QgcHJpdmtleV9zaXplKQotIHsK LSAgICAgRVZQX1BLRVlfQ1RYICpjdHggPSBOVUxMOwotICAgICBFVlBfUEtFWSAqcGtleSA9IE5V TEw7Ci0gICAgIGludCByZXQgPSBTU0hfRVJSX0lOVEVSTkFMX0VSUk9SOwotLSAgICBzaXplX3Qg cHVia2V5X3NpemUgPSBjcnlwdG9fa2VtX21sa2VtNzY4X1BVQkxJQ0tFWUJZVEVTLCBwcml2a2V5 X3NpemUgPSBjcnlwdG9fa2VtX21sa2VtNzY4X1NFQ1JFVEtFWUJZVEVTOwotKyAgICBzaXplX3Qg Z290X3B1Yl9zaXplID0gcHVia2V5X3NpemUsIGdvdF9wcml2X3NpemUgPSBwcml2a2V5X3NpemU7 Ci0rCi0rICAgIGN0eCA9IEVWUF9QS0VZX0NUWF9uZXdfZnJvbV9uYW1lKE5VTEwsIGFsZ25hbWUs IE5VTEwpOwotKwotKyAgICBpZiAoY3R4ID09IE5VTEwgJiYgRklQU19tb2RlKCkpIHsKLSsJLyog V2UgaGF2ZSBmaWx0ZXJlZCB4MjU1MTkgKyBNTC1LRU0gaW4gRklQUyBtb2RlIGVhcmxpZXIKLSsJ ICogc28gaWYgd2UgYXJlIGluIEZJUFMgbW9kZSBhbmQgTUwtS0VNIGlzIG5vdCBhdmFpbGFibGUg d2l0aCBkZWZhdWx0IHByb3BxLAotKwkgKiB3ZSBjYW4gZmV0Y2ggaXQgZnJvbSB0aGUgZGVmYXVs dCBwcm92aWRlciAqLwotKyAgICAgICAgY3R4ID0gRVZQX1BLRVlfQ1RYX25ld19mcm9tX25hbWUo TlVMTCwgYWxnbmFtZSwgRklQU19GQUxMQkFDS19QUk9QUSk7Ci0rICAgIH0KLSAKLS0gICAgY3R4 ID0gRVZQX1BLRVlfQ1RYX25ld19mcm9tX25hbWUoTlVMTCwgIm1sa2VtNzY4IiwgTlVMTCk7Ci0g ICAgIGlmIChjdHggPT0gTlVMTCkgewotIAlyZXQgPSBTU0hfRVJSX0xJQkNSWVBUT19FUlJPUjsK LSAJZ290byBlcnI7Ci1AQCAtNjgsMTcgKzgyLDIzIEBAIG1sa2VtNzY4X2tleXBhaXJfZ2VuKHVu c2lnbmVkIGNoYXIgKnB1YmtleWJ1ZiwgdW5zaWduZWQgY2hhciAqcHJpdmtleWJ1ZikKLSAgICAg ICAgIGdvdG8gZXJyOwotICAgICB9Ci0gCi0tICAgIGlmIChFVlBfUEtFWV9nZXRfcmF3X3B1Ymxp Y19rZXkocGtleSwgcHVia2V5YnVmLCAmcHVia2V5X3NpemUpIDw9IDAKLS0JfHwgRVZQX1BLRVlf Z2V0X3Jhd19wcml2YXRlX2tleShwa2V5LCBwcml2a2V5YnVmLCAmcHJpdmtleV9zaXplKSA8PSAw KSB7Ci0rICAgIGlmIChFVlBfUEtFWV9nZXRfcmF3X3B1YmxpY19rZXkocGtleSwgTlVMTCwgJmdv dF9wdWJfc2l6ZSkgPD0gMAotKwl8fCBFVlBfUEtFWV9nZXRfcmF3X3ByaXZhdGVfa2V5KHBrZXks IE5VTEwsICZnb3RfcHJpdl9zaXplKSA8PSAwKSB7Ci0gCXJldCA9IFNTSF9FUlJfTElCQ1JZUFRP X0VSUk9SOwotICAgICAgICAgZ290byBlcnI7Ci0gICAgIH0KLSAKLS0gICAgaWYgKHByaXZrZXlf c2l6ZSAhPSBjcnlwdG9fa2VtX21sa2VtNzY4X1NFQ1JFVEtFWUJZVEVTCi0tCSAgICB8fCBwdWJr ZXlfc2l6ZSAhPSBjcnlwdG9fa2VtX21sa2VtNzY4X1BVQkxJQ0tFWUJZVEVTKSB7Ci0rICAgIGlm IChwcml2a2V5X3NpemUgIT0gZ290X3ByaXZfc2l6ZSB8fCBwdWJrZXlfc2l6ZSAhPSBnb3RfcHVi X3NpemUpIHsKLSAJcmV0ID0gU1NIX0VSUl9MSUJDUllQVE9fRVJST1I7Ci0gICAgICAgICBnb3Rv IGVycjsKLSAgICAgfQotKwotKyAgICBpZiAoRVZQX1BLRVlfZ2V0X3Jhd19wdWJsaWNfa2V5KHBr ZXksIHB1YmtleWJ1ZiwgJmdvdF9wdWJfc2l6ZSkgPD0gMAotKwl8fCBFVlBfUEtFWV9nZXRfcmF3 X3ByaXZhdGVfa2V5KHBrZXksIHByaXZrZXlidWYsICZnb3RfcHJpdl9zaXplKSA8PSAwKSB7Ci0r CXJldCA9IFNTSF9FUlJfTElCQ1JZUFRPX0VSUk9SOwotKyAgICAgICAgZ290byBlcnI7Ci0rICAg IH0KLSsKLSAgICAgcmV0ID0gMDsKLSAKLSAgZXJyOgotQEAgLTkwLDI3ICsxMTAsNTcgQEAgbWxr ZW03Njhfa2V5cGFpcl9nZW4odW5zaWduZWQgY2hhciAqcHVia2V5YnVmLCB1bnNpZ25lZCBjaGFy ICpwcml2a2V5YnVmKQotIH0KLSAKLSBzdGF0aWMgaW50Ci0tbWxrZW03NjhfZW5jYXBfc2VjcmV0 KGNvbnN0IHVfY2hhciAqcHVia2V5YnVmLCB1X2NoYXIgKnNlY3JldCwgdV9jaGFyICpvdXQpCi0r bWxrZW03Njhfa2V5cGFpcl9nZW4odW5zaWduZWQgY2hhciAqcHVia2V5YnVmLCB1bnNpZ25lZCBj aGFyICpwcml2a2V5YnVmKQotK3sKLSsJcmV0dXJuIG1sa2VtX2tleXBhaXJfZ2VuKCJtbGtlbTc2 OCIsIHB1YmtleWJ1ZiwgY3J5cHRvX2tlbV9tbGtlbTc2OF9QVUJMSUNLRVlCWVRFUywKLSsJCQlw cml2a2V5YnVmLCBjcnlwdG9fa2VtX21sa2VtNzY4X1NFQ1JFVEtFWUJZVEVTKTsKLSt9Ci0rCi0r c3RhdGljIGludAotK21sa2VtMTAyNF9rZXlwYWlyX2dlbih1bnNpZ25lZCBjaGFyICpwdWJrZXli dWYsIHVuc2lnbmVkIGNoYXIgKnByaXZrZXlidWYpCi0rewotKwlyZXR1cm4gbWxrZW1fa2V5cGFp cl9nZW4oIm1sa2VtMTAyNCIsIHB1YmtleWJ1ZiwgY3J5cHRvX2tlbV9tbGtlbTEwMjRfUFVCTElD S0VZQllURVMsCi0rCQkJcHJpdmtleWJ1ZiwgY3J5cHRvX2tlbV9tbGtlbTEwMjRfU0VDUkVUS0VZ QllURVMpOwotK30KLSsKLStzdGF0aWMgaW50Ci0rbWxrZW1fZW5jYXBfc2VjcmV0KGNvbnN0IGNo YXIgKm1sa2VtX2FsZywgY29uc3QgdV9jaGFyICpwdWJrZXlidWYsIHVfY2hhciAqc2VjcmV0LCB1 X2NoYXIgKm91dCkKLSB7Ci0gICAgIEVWUF9QS0VZICpwa2V5ID0gTlVMTDsKLSAgICAgRVZQX1BL RVlfQ1RYICpjdHggPSBOVUxMOwotICAgICBpbnQgciA9IFNTSF9FUlJfSU5URVJOQUxfRVJST1I7 Ci0tICAgIHNpemVfdCBvdXRsZW4gPSBjcnlwdG9fa2VtX21sa2VtNzY4X0NJUEhFUlRFWFRCWVRF UywKLS0JICAgc2VjcmV0bGVuID0gY3J5cHRvX2tlbV9tbGtlbTc2OF9CWVRFUzsKLSsgICAgc2l6 ZV90IG91dGxlbiwgZXhwZWN0ZWRfb3V0bGVuLCBwdWJsZW4sIHNlY3JldGxlbiA9IGNyeXB0b19r ZW1fbWxrZW03NjhfQllURVM7Ci0rICAgIGludCBmaXBzX2ZhbGxiYWNrID0gMDsKLSsKLSsgICAg aWYgKHN0cmNtcChtbGtlbV9hbGcsICJtbGtlbTc2OCIpID09IDApIHsKLSsJICAgIG91dGxlbiA9 IGNyeXB0b19rZW1fbWxrZW03NjhfQ0lQSEVSVEVYVEJZVEVTOwotKwkgICAgcHVibGVuID0gY3J5 cHRvX2tlbV9tbGtlbTc2OF9QVUJMSUNLRVlCWVRFUzsKLSsgICAgfSBlbHNlIGlmIChzdHJjbXAo bWxrZW1fYWxnLCAibWxrZW0xMDI0IikgPT0gMCkgewotKwkgICAgb3V0bGVuID0gY3J5cHRvX2tl bV9tbGtlbTEwMjRfQ0lQSEVSVEVYVEJZVEVTOwotKwkgICAgcHVibGVuID0gY3J5cHRvX2tlbV9t bGtlbTEwMjRfUFVCTElDS0VZQllURVM7Ci0rICAgIH0gZWxzZQotKwkgICAgcmV0dXJuIHI7Ci0g Ci0tICAgIHBrZXkgPSBFVlBfUEtFWV9uZXdfcmF3X3B1YmxpY19rZXlfZXgoTlVMTCwgIm1sa2Vt NzY4IiwgTlVMTCwKLS0JCSAgICBwdWJrZXlidWYsIGNyeXB0b19rZW1fbWxrZW03NjhfUFVCTElD S0VZQllURVMpOwotKyAgICBleHBlY3RlZF9vdXRsZW4gPSBvdXRsZW47Ci0rCi0rICAgIHBrZXkg PSBFVlBfUEtFWV9uZXdfcmF3X3B1YmxpY19rZXlfZXgoTlVMTCwgbWxrZW1fYWxnLCBOVUxMLAot KwkJICAgIHB1YmtleWJ1ZiwgcHVibGVuKTsKLSsgICAgaWYgKHBrZXkgPT0gTlVMTCAmJiBGSVBT X21vZGUoKSkgewotKyAgICAgICAgcGtleSA9IEVWUF9QS0VZX25ld19yYXdfcHVibGljX2tleV9l eChOVUxMLCBtbGtlbV9hbGcsIEZJUFNfRkFMTEJBQ0tfUFJPUFEsCi0rCQkgICAgcHVia2V5YnVm LCBwdWJsZW4pOwotKwlmaXBzX2ZhbGxiYWNrID0gMTsKLSsgICAgfQotICAgICBpZiAocGtleSA9 PSBOVUxMKSB7Ci0gCXIgPSBTU0hfRVJSX0xJQkNSWVBUT19FUlJPUjsKLSAJZ290byBlcnI7Ci0g ICAgIH0KLSAKLS0gICAgY3R4ID0gRVZQX1BLRVlfQ1RYX25ld19mcm9tX3BrZXkoTlVMTCwgcGtl eSwgTlVMTCk7Ci0rICAgIGN0eCA9IEVWUF9QS0VZX0NUWF9uZXdfZnJvbV9wa2V5KE5VTEwsIHBr ZXksIGZpcHNfZmFsbGJhY2sgPyBGSVBTX0ZBTExCQUNLX1BST1BRIDogTlVMTCk7Ci0gICAgIGlm IChjdHggPT0gTlVMTAotIAl8fCBFVlBfUEtFWV9lbmNhcHN1bGF0ZV9pbml0KGN0eCwgTlVMTCkg PD0gMAotLSAgICAgICAgfHwgRVZQX1BLRVlfZW5jYXBzdWxhdGUoY3R4LCBvdXQsICZvdXRsZW4s IHNlY3JldCwgJnNlY3JldGxlbikgPD0gMAotKyAgICAgICAgfHwgRVZQX1BLRVlfZW5jYXBzdWxh dGUoY3R4LCBvdXQsICZleHBlY3RlZF9vdXRsZW4sIHNlY3JldCwgJnNlY3JldGxlbikgPD0gMAot IAl8fCBzZWNyZXRsZW4gIT0gY3J5cHRvX2tlbV9tbGtlbTc2OF9CWVRFUwotLQl8fCBvdXRsZW4g IT0gY3J5cHRvX2tlbV9tbGtlbTc2OF9DSVBIRVJURVhUQllURVMpIHsKLSsJfHwgb3V0bGVuICE9 IGV4cGVjdGVkX291dGxlbikgewotIAlyID0gU1NIX0VSUl9MSUJDUllQVE9fRVJST1I7Ci0gCWdv dG8gZXJyOwotICAgICB9Ci1AQCAtMTI2LDI1ICsxNzYsNDUgQEAgbWxrZW03NjhfZW5jYXBfc2Vj cmV0KGNvbnN0IHVfY2hhciAqcHVia2V5YnVmLCB1X2NoYXIgKnNlY3JldCwgdV9jaGFyICpvdXQp Ci0gfQotIAotIHN0YXRpYyBpbnQKLS1tbGtlbTc2OF9kZWNhcF9zZWNyZXQoY29uc3QgdV9jaGFy ICpwcml2a2V5YnVmLCBjb25zdCB1X2NoYXIgKndyYXBwZWQsIHVfY2hhciAqc2VjcmV0KQotK21s a2VtNzY4X2VuY2FwX3NlY3JldChjb25zdCB1X2NoYXIgKnB1YmtleWJ1ZiwgdV9jaGFyICpzZWNy ZXQsIHVfY2hhciAqb3V0KQotK3sKLSsJcmV0dXJuIG1sa2VtX2VuY2FwX3NlY3JldCgibWxrZW03 NjgiLCBwdWJrZXlidWYsIHNlY3JldCwgb3V0KTsKLSt9Ci0rCi0rc3RhdGljIGludAotK21sa2Vt MTAyNF9lbmNhcF9zZWNyZXQoY29uc3QgdV9jaGFyICpwdWJrZXlidWYsIHVfY2hhciAqc2VjcmV0 LCB1X2NoYXIgKm91dCkKLSt7Ci0rCXJldHVybiBtbGtlbV9lbmNhcF9zZWNyZXQoIm1sa2VtMTAy NCIsIHB1YmtleWJ1Ziwgc2VjcmV0LCBvdXQpOwotK30KLSsKLStzdGF0aWMgaW50Ci0rbWxrZW1f ZGVjYXBfc2VjcmV0KGNvbnN0IGNoYXIgKmFsZ25hbWUsCi0rICAgIGNvbnN0IHVfY2hhciAqcHJp dmtleWJ1Ziwgc2l6ZV90IHByaXZrZXlfbGVuLAotKyAgICBjb25zdCB1X2NoYXIgKndyYXBwZWQs IHNpemVfdCB3cmFwcGVkX2xlbiwKLSsgICAgdV9jaGFyICpzZWNyZXQpCi0gewotICAgICBFVlBf UEtFWSAqcGtleSA9IE5VTEw7Ci0gICAgIEVWUF9QS0VZX0NUWCAqY3R4ID0gTlVMTDsKLSAgICAg aW50IHIgPSBTU0hfRVJSX0lOVEVSTkFMX0VSUk9SOwotLSAgICBzaXplX3Qgd3JhcHBlZGxlbiA9 IGNyeXB0b19rZW1fbWxrZW03NjhfQ0lQSEVSVEVYVEJZVEVTLAotLQkgICBzZWNyZXRsZW4gPSBj cnlwdG9fa2VtX21sa2VtNzY4X0JZVEVTOwotKyAgICBzaXplX3Qgc2VjcmV0bGVuID0gY3J5cHRv X2tlbV9tbGtlbTc2OF9CWVRFUzsKLSsgICAgaW50IGZpcHNfZmFsbGJhY2sgPSAwOwotIAotLSAg ICBwa2V5ID0gRVZQX1BLRVlfbmV3X3Jhd19wcml2YXRlX2tleV9leChOVUxMLCAibWxrZW03Njgi LCBOVUxMLAotLQkJICAgIHByaXZrZXlidWYsIGNyeXB0b19rZW1fbWxrZW03NjhfU0VDUkVUS0VZ QllURVMpOwotKyAgICBwa2V5ID0gRVZQX1BLRVlfbmV3X3Jhd19wcml2YXRlX2tleV9leChOVUxM LCBhbGduYW1lLAotKwkJICAgIE5VTEwsIHByaXZrZXlidWYsIHByaXZrZXlfbGVuKTsKLSsgICAg aWYgKHBrZXkgPT0gTlVMTCAmJiBGSVBTX21vZGUoKSkgewotKyAgICAgICAgcGtleSA9IEVWUF9Q S0VZX25ld19yYXdfcHJpdmF0ZV9rZXlfZXgoTlVMTCwgYWxnbmFtZSwKLSsJCSAgICBGSVBTX0ZB TExCQUNLX1BST1BRLCBwcml2a2V5YnVmLCBwcml2a2V5X2xlbik7Ci0rCWZpcHNfZmFsbGJhY2sg PSAxOwotKyAgICB9Ci0gICAgIGlmIChwa2V5ID09IE5VTEwpIHsKLSAJciA9IFNTSF9FUlJfTElC Q1JZUFRPX0VSUk9SOwotIAlnb3RvIGVycjsKLSAgICAgfQotIAotLSAgICBjdHggPSBFVlBfUEtF WV9DVFhfbmV3X2Zyb21fcGtleShOVUxMLCBwa2V5LCBOVUxMKTsKLSsgICAgY3R4ID0gRVZQX1BL RVlfQ1RYX25ld19mcm9tX3BrZXkoTlVMTCwgcGtleSwgZmlwc19mYWxsYmFjayA/IEZJUFNfRkFM TEJBQ0tfUFJPUFEgOiBOVUxMKTsKLSAgICAgaWYgKGN0eCA9PSBOVUxMCi0gCXx8IEVWUF9QS0VZ X2RlY2Fwc3VsYXRlX2luaXQoY3R4LCBOVUxMKSA8PSAwCi0tICAgICAgICB8fCBFVlBfUEtFWV9k ZWNhcHN1bGF0ZShjdHgsIHNlY3JldCwgJnNlY3JldGxlbiwgd3JhcHBlZCwgd3JhcHBlZGxlbikg PD0gMAotKyAgICAgICAgfHwgRVZQX1BLRVlfZGVjYXBzdWxhdGUoY3R4LCBzZWNyZXQsICZzZWNy ZXRsZW4sIHdyYXBwZWQsIHdyYXBwZWRfbGVuKSA8PSAwCi0gCXx8IHNlY3JldGxlbiAhPSBjcnlw dG9fa2VtX21sa2VtNzY4X0JZVEVTKSB7Ci0gCXIgPSBTU0hfRVJSX0xJQkNSWVBUT19FUlJPUjsK LSAJZ290byBlcnI7Ci1AQCAtMTYxLDYgKzIzMSwyMCBAQCBtbGtlbTc2OF9kZWNhcF9zZWNyZXQo Y29uc3QgdV9jaGFyICpwcml2a2V5YnVmLCBjb25zdCB1X2NoYXIgKndyYXBwZWQsIHVfY2hhciAq cwotICAgICByZXR1cm4gcjsKLSB9Ci0gCi0rc3RhdGljIGludAotK21sa2VtNzY4X2RlY2FwX3Nl Y3JldChjb25zdCB1X2NoYXIgKnByaXZrZXlidWYsIGNvbnN0IHVfY2hhciAqd3JhcHBlZCwgdV9j aGFyICpzZWNyZXQpCi0rewotKwlyZXR1cm4gbWxrZW1fZGVjYXBfc2VjcmV0KCJtbGtlbTc2OCIs IHByaXZrZXlidWYsIGNyeXB0b19rZW1fbWxrZW03NjhfU0VDUkVUS0VZQllURVMsCi0rCQl3cmFw cGVkLCBjcnlwdG9fa2VtX21sa2VtNzY4X0NJUEhFUlRFWFRCWVRFUywgc2VjcmV0KTsKLSt9Ci0r Ci0rc3RhdGljIGludAotK21sa2VtMTAyNF9kZWNhcF9zZWNyZXQoY29uc3QgdV9jaGFyICpwcml2 a2V5YnVmLCBjb25zdCB1X2NoYXIgKndyYXBwZWQsIHVfY2hhciAqc2VjcmV0KQotK3sKLSsJcmV0 dXJuIG1sa2VtX2RlY2FwX3NlY3JldCgibWxrZW0xMDI0IiwgcHJpdmtleWJ1ZiwgY3J5cHRvX2tl bV9tbGtlbTEwMjRfU0VDUkVUS0VZQllURVMsCi0rCQl3cmFwcGVkLCBjcnlwdG9fa2VtX21sa2Vt MTAyNF9DSVBIRVJURVhUQllURVMsIHNlY3JldCk7Ci0rfQotKwotIGludAotIGtleF9rZW1fbWxr ZW03Njh4MjU1MTlfa2V5cGFpcihzdHJ1Y3Qga2V4ICprZXgpCi0gewotQEAgLTMzNyw3ICs0MjEs NyBAQCBrZXhfa2VtX21sa2VtNzY4eDI1NTE5X2VuYyhzdHJ1Y3Qga2V4ICprZXgsCi0gCXVfY2hh ciBoYXNoW1NTSF9ESUdFU1RfTUFYX0xFTkdUSF07Ci0gCXNpemVfdCBuZWVkOwotIAlpbnQgciA9 IFNTSF9FUlJfSU5URVJOQUxfRVJST1I7Ci0tCXN0cnVjdCBsaWJjcnV4X21sa2VtNzY4X2VuY19y ZXN1bHQgZW5jOyAvKiBGSVhNRSAqLwotKwlzdHJ1Y3QgbGliY3J1eF9tbGtlbTc2OF9lbmNfcmVz dWx0IGVuYzsKLSAKLSAJKnNlcnZlcl9ibG9icCA9IE5VTEw7Ci0gCSpzaGFyZWRfc2VjcmV0cCA9 IE5VTEw7Ci1AQCAtNTQ2LDYgKzYzMCw1MjAgQEAga2V4X2tlbV9tbGtlbTc2OHgyNTUxOV9kZWMo c3RydWN0IGtleCAqa2V4LAotIAlyZXR1cm4gcjsKLSAjZW5kaWYKLSB9Ci0rCi0rI2RlZmluZSBO SVNUX1AyNTZfQ09NUFJFU1NFRF9MRU4gICAzMwotKyNkZWZpbmUgTklTVF9QMjU2X1VOQ09NUFJF U1NFRF9MRU4gNjUKLSsjZGVmaW5lIE5JU1RfUDM4NF9DT01QUkVTU0VEX0xFTiAgIDQ5Ci0rI2Rl ZmluZSBOSVNUX1AzODRfVU5DT01QUkVTU0VEX0xFTiA5NwotKyNkZWZpbmUgTklTVF9CVUZfTUFY X1NJWkUgTklTVF9QMzg0X1VOQ09NUFJFU1NFRF9MRU4KLSsKLStzdGF0aWMgY29uc3QgY2hhciBl YzI1NltdID0gIlAtMjU2IjsKLStzdGF0aWMgY29uc3QgY2hhciBlYzM4NFtdID0gIlAtMzg0IjsK LStzdGF0aWMgY29uc3QgY2hhciAqbGVuMmN1cnZlX25hbWUoc2l6ZV90IGxlbikKLSt7Ci0rCXN3 aXRjaCAobGVuKSB7Ci0rCQljYXNlIE5JU1RfUDI1Nl9DT01QUkVTU0VEX0xFTjoKLSsJCWNhc2Ug TklTVF9QMjU2X1VOQ09NUFJFU1NFRF9MRU46Ci0rCQkJcmV0dXJuIGVjMjU2OwotKwkJCWJyZWFr OwotKwkJY2FzZSBOSVNUX1AzODRfQ09NUFJFU1NFRF9MRU46Ci0rCQljYXNlIE5JU1RfUDM4NF9V TkNPTVBSRVNTRURfTEVOOgotKwkJCXJldHVybiBlYzM4NDsKLSsJCQlicmVhazsKLSsJfQotKwly ZXR1cm4gTlVMTDsKLSt9Ci0rCi0rc3RhdGljIEVWUF9QS0VZICoKLStidWYybmlzdF9rZXkoY29u c3QgdW5zaWduZWQgY2hhciAqcHViX2tleV9idWYsIHNpemVfdCBwdWJfa2V5X2xlbikKLSt7Ci0r CUVWUF9QS0VZICpwa2V5ID0gTlVMTDsKLSsJRVZQX1BLRVlfQ1RYICpjdHggPSBOVUxMOwotKwlP U1NMX1BBUkFNIHBhcmFtc1szXTsKLSsJY29uc3QgY2hhciAqY3VydmVfbmFtZSA9IGxlbjJjdXJ2 ZV9uYW1lKHB1Yl9rZXlfbGVuKTsKLSsKLSsJaWYgKGN1cnZlX25hbWUgPT0gTlVMTCkKLSsJCXJl dHVybiBOVUxMOwotKwotKwljdHggPSBFVlBfUEtFWV9DVFhfbmV3X2Zyb21fbmFtZShOVUxMLCAi RUMiLCBOVUxMKTsKLSsJaWYgKCFjdHgpCi0rCQlnb3RvIGVycjsKLSsKLSsJaWYgKEVWUF9QS0VZ X2Zyb21kYXRhX2luaXQoY3R4KSA8PSAwKQotKwkJZ290byBlcnI7Ci0rCi0rCXBhcmFtc1swXSA9 IE9TU0xfUEFSQU1fY29uc3RydWN0X3V0Zjhfc3RyaW5nKE9TU0xfUEtFWV9QQVJBTV9HUk9VUF9O QU1FLCBjdXJ2ZV9uYW1lLCAwKTsKLSsJcGFyYW1zWzFdID0gT1NTTF9QQVJBTV9jb25zdHJ1Y3Rf b2N0ZXRfc3RyaW5nKAotKwkJCU9TU0xfUEtFWV9QQVJBTV9QVUJfS0VZLCAodm9pZCAqKXB1Yl9r ZXlfYnVmLCBwdWJfa2V5X2xlbik7Ci0rCXBhcmFtc1syXSA9IE9TU0xfUEFSQU1fY29uc3RydWN0 X2VuZCgpOwotKwotKwlpZiAoRVZQX1BLRVlfZnJvbWRhdGEoY3R4LCAmcGtleSwgRVZQX1BLRVlf UFVCTElDX0tFWSwgcGFyYW1zKSA8PSAwKQotKwkJZ290byBlcnI7Ci0rCi0rCUVWUF9QS0VZX0NU WF9mcmVlKGN0eCk7Ci0rCXJldHVybiBwa2V5OwotKwotK2VycjoKLSsJRVZQX1BLRVlfQ1RYX2Zy ZWUoY3R4KTsKLSsJRVZQX1BLRVlfZnJlZShwa2V5KTsKLSsJcmV0dXJuIE5VTEw7Ci0rfQotKwot K3N0YXRpYyBpbnQKLStrZXhfbmlzdF9zaGFyZWRfa2V5X2V4dChFVlBfUEtFWSAqcHJpdl9rZXks Ci0rICAgIGNvbnN0IHVfY2hhciAqcHViX2tleV9idWYsIHNpemVfdCBwdWJfa2V5X2xlbiwgc3Ry dWN0IHNzaGJ1ZiAqb3V0KQotK3sKLSsJRVZQX1BLRVlfQ1RYICpjdHggPSBOVUxMOwotKwl1bnNp Z25lZCBjaGFyICpzaGFyZWRfc2VjcmV0ID0gTlVMTDsKLSsJc2l6ZV90IHNoYXJlZF9zZWNyZXRf bGVuID0gMDsKLSsJRVZQX1BLRVkgKnBlZXJfa2V5ID0gYnVmMm5pc3Rfa2V5KHB1Yl9rZXlfYnVm LCBwdWJfa2V5X2xlbik7Ci0rCWludCByID0gU1NIX0VSUl9JTlRFUk5BTF9FUlJPUjsKLSsKLSsJ aWYgKHBlZXJfa2V5ID09IE5VTEwpCi0rCQlyZXR1cm4gU1NIX0VSUl9LRVlfTEVOR1RIOwotKwot KwljdHggPSBFVlBfUEtFWV9DVFhfbmV3X2Zyb21fcGtleShOVUxMLCBwcml2X2tleSwgTlVMTCk7 Ci0rCWlmICghY3R4KQotKwkJZ290byBlbmQ7Ci0rCi0rCWlmICgoRVZQX1BLRVlfZGVyaXZlX2lu aXQoY3R4KSA8PSAwKQotKwkJfHwgRVZQX1BLRVlfZGVyaXZlX3NldF9wZWVyKGN0eCwgcGVlcl9r ZXkpIDw9IDAKLSsJCXx8IEVWUF9QS0VZX2Rlcml2ZShjdHgsIE5VTEwsICZzaGFyZWRfc2VjcmV0 X2xlbikgPD0gMCkKLSsJCWdvdG8gZW5kOwotKwotKwlzaGFyZWRfc2VjcmV0ID0gT1BFTlNTTF9t YWxsb2Moc2hhcmVkX3NlY3JldF9sZW4pOwotKwlpZiAoc2hhcmVkX3NlY3JldCA9PSBOVUxMKQot KwkJZ290byBlbmQ7Ci0rCi0rCWlmIChFVlBfUEtFWV9kZXJpdmUoY3R4LCBzaGFyZWRfc2VjcmV0 LCAmc2hhcmVkX3NlY3JldF9sZW4pIDw9IDApCi0rCQlnb3RvIGVuZDsKLSsKLSsJaWYgKChyID0g c3NoYnVmX3B1dChvdXQsIHNoYXJlZF9zZWNyZXQsIHNoYXJlZF9zZWNyZXRfbGVuKSkgIT0gMCkK LSsJCWdvdG8gZW5kOwotKwotKwlyID0gMDsKLSsKLStlbmQ6Ci0rCUVWUF9QS0VZX2ZyZWUocGVl cl9rZXkpOwotKwlpZiAoc2hhcmVkX3NlY3JldCkKLSsJCU9QRU5TU0xfY2xlYXJfZnJlZShzaGFy ZWRfc2VjcmV0LCBzaGFyZWRfc2VjcmV0X2xlbik7Ci0rCUVWUF9QS0VZX0NUWF9mcmVlKGN0eCk7 Ci0rCi0rCXJldHVybiByOwotK30KLSsKLStzdGF0aWMgRVZQX1BLRVkgKgotK25pc3RfcGtleV9r ZXlnZW4oc2l6ZV90IHB1Yl9rZXlfbGVuKQotK3sKLSsJY29uc3QgY2hhciAqY3VydmVfbmFtZSA9 IGxlbjJjdXJ2ZV9uYW1lKHB1Yl9rZXlfbGVuKTsKLSsJRVZQX1BLRVlfQ1RYICpwY3R4ID0gTlVM TDsKLSsJRVZQX1BLRVkgKnBrZXkgPSBOVUxMOwotKwlPU1NMX1BBUkFNIHBhcmFtc1syXTsKLSsK LSsJaWYgKGN1cnZlX25hbWUgPT0gTlVMTCkKLSsJCXJldHVybiBOVUxMOwotKwotKwlwY3R4ID0g RVZQX1BLRVlfQ1RYX25ld19mcm9tX25hbWUoTlVMTCwgIkVDIiwgTlVMTCk7Ci0rCWlmICghcGN0 eCkKLSsJCXJldHVybiBOVUxMOwotKwotKwlpZiAoRVZQX1BLRVlfa2V5Z2VuX2luaXQocGN0eCkg PD0gMCkgewotKwkJRVZQX1BLRVlfQ1RYX2ZyZWUocGN0eCk7Ci0rCQlyZXR1cm4gTlVMTDsKLSsJ fQotKwotKwlwYXJhbXNbMF0gPSBPU1NMX1BBUkFNX2NvbnN0cnVjdF91dGY4X3N0cmluZyhPU1NM X1BLRVlfUEFSQU1fR1JPVVBfTkFNRSwgY3VydmVfbmFtZSwgMCk7Ci0rCXBhcmFtc1sxXSA9IE9T U0xfUEFSQU1fY29uc3RydWN0X2VuZCgpOwotKwotKwlpZiAoRVZQX1BLRVlfQ1RYX3NldF9wYXJh bXMocGN0eCwgcGFyYW1zKSA8PSAwCi0rCSAgICB8fCBFVlBfUEtFWV9rZXlnZW4ocGN0eCwgJnBr ZXkpIDw9IDApIHsKLSsJCUVWUF9QS0VZX0NUWF9mcmVlKHBjdHgpOwotKwkJcmV0dXJuIE5VTEw7 Ci0rCX0KLSsKLSsJRVZQX1BLRVlfQ1RYX2ZyZWUocGN0eCk7Ci0rCXJldHVybiBwa2V5OwotK30K LSsKLStzdGF0aWMgc2l6ZV90IGRlY29tcHJlc3NfcHViX2tleSh2b2lkICpwdWIsIHNpemVfdCBj b21wcmVzc2VkX2xlbiwgc2l6ZV90IGRlY29tcHJlc3NlZF9sZW4pCi0rewotKyAgICBFQ19HUk9V UCAqZ3JvdXAgPSBOVUxMOwotKyAgICBFQ19QT0lOVCAqcG9pbnQgPSBOVUxMOwotKyAgICBCTl9D VFggKmN0eCA9IE5VTEw7Ci0rICAgIHNpemVfdCBsZW4gPSAwOwotKyAgICBpbnQgZ3JvdXBfbmlk ID0gTklEX3VuZGVmOwotKwotKyAgICBzd2l0Y2ggKGNvbXByZXNzZWRfbGVuKSB7Ci0rICAgIGNh c2UgTklTVF9QMjU2X0NPTVBSRVNTRURfTEVOOgotKyAgICAgICAgIGdyb3VwX25pZCA9IE5JRF9Y OV82Ml9wcmltZTI1NnYxOwotKyAgICAgICBicmVhazsKLSsgICAgY2FzZSBOSVNUX1AzODRfQ09N UFJFU1NFRF9MRU46Ci0rICAgICAgICAgZ3JvdXBfbmlkID0gTklEX3NlY3AzODRyMTsKLSsgICAg ICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgIHJldHVybiAwOwotKyAgICAgICBicmVh azsKLSsgICAgfQotKwotKyAgICBjdHggPSBCTl9DVFhfbmV3KCk7Ci0rICAgIGdyb3VwID0gRUNf R1JPVVBfbmV3X2J5X2N1cnZlX25hbWUoZ3JvdXBfbmlkKTsKLSsgICAgaWYgKGN0eCA9PSBOVUxM IHx8IGdyb3VwID09IE5VTEwpCi0rICAgICAgICBnb3RvIGVycjsKLSsKLSsgICAgcG9pbnQgPSBF Q19QT0lOVF9uZXcoZ3JvdXApOwotKyAgICBpZiAocG9pbnQgPT0gTlVMTCkKLSsgICAgICAgIGdv dG8gZXJyOwotKwotKyAgICBpZiAoIUVDX1BPSU5UX29jdDJwb2ludChncm91cCwgcG9pbnQsIHB1 YiwgY29tcHJlc3NlZF9sZW4sIGN0eCkpCi0rICAgICAgICBnb3RvIGVycjsKLSsKLSsgICAgbGVu ID0gRUNfUE9JTlRfcG9pbnQyb2N0KGdyb3VwLCBwb2ludCwgUE9JTlRfQ09OVkVSU0lPTl9VTkNP TVBSRVNTRUQsIHB1YiwgZGVjb21wcmVzc2VkX2xlbiwgY3R4KTsKLSsKLStlcnI6Ci0rICAgIEVD X1BPSU5UX2ZyZWUocG9pbnQpOwotKyAgICBFQ19HUk9VUF9mcmVlKGdyb3VwKTsKLSsgICAgQk5f Q1RYX2ZyZWUoY3R4KTsKLSsKLSsgICAgcmV0dXJuIGxlbjsKLSt9Ci0rCi0rc3RhdGljIGludAot K2dldF91bmNvbXByZXNzZWRfZWNfcHVia2V5KEVWUF9QS0VZICpwa2V5LCB1bnNpZ25lZCBjaGFy ICpidWYsIHNpemVfdCBidWZfbGVuKQotK3sKLSsgICAgT1NTTF9QQVJBTSBwYXJhbXNbMl07Ci0r ICAgIHNpemVfdCByZXF1aXJlZF9sZW4gPSAwLCBvdXRfbGVuID0gMDsKLSsKLSsgICAgcGFyYW1z WzBdID0gT1NTTF9QQVJBTV9jb25zdHJ1Y3RfdXRmOF9zdHJpbmcoCi0rICAgICAgICBPU1NMX1BL RVlfUEFSQU1fRUNfUE9JTlRfQ09OVkVSU0lPTl9GT1JNQVQsCi0rICAgICAgICAidW5jb21wcmVz c2VkIiwgMCk7Ci0rICAgIHBhcmFtc1sxXSA9IE9TU0xfUEFSQU1fY29uc3RydWN0X2VuZCgpOwot KwotKyAgICBpZiAoRVZQX1BLRVlfc2V0X3BhcmFtcyhwa2V5LCBwYXJhbXMpIDw9IDAKLSsJICAg IHx8IEVWUF9QS0VZX2dldF9vY3RldF9zdHJpbmdfcGFyYW0ocGtleSwgT1NTTF9QS0VZX1BBUkFN X1BVQl9LRVksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVm LCBidWZfbGVuLCAmcmVxdWlyZWRfbGVuKSA8PSAwKSB7Ci0rICAgICAgICByZXR1cm4gU1NIX0VS Ul9MSUJDUllQVE9fRVJST1I7Ci0rICAgIH0KLSsKLSsgICAgaWYgKHJlcXVpcmVkX2xlbiAhPSBi dWZfbGVuKSB7Ci0rICAgICAgICAvKiBSZWQgSGF0IGNlcnRpZmllZCBGSVBTIHByb3ZpZGVyIGln bm9yZXMgT1NTTF9QS0VZX1BBUkFNX0VDX1BPSU5UX0NPTlZFUlNJT05fRk9STUFUCi0rCSAqIFdl IG1heSBoYXZlIHRvIHBlcmZvcm0gdGhlIGNvbnZlcnNpb24gbWFudWFsbHkgKi8KLSsgICAgICAg IGlmIChsZW4yY3VydmVfbmFtZShyZXF1aXJlZF9sZW4pID09IGxlbjJjdXJ2ZV9uYW1lKGJ1Zl9s ZW4pKSB7Ci0rCSAgICBvdXRfbGVuID0gZGVjb21wcmVzc19wdWJfa2V5KGJ1ZiwgcmVxdWlyZWRf bGVuLCBidWZfbGVuKTsKLSsJICAgIGlmIChvdXRfbGVuICE9IGJ1Zl9sZW4pIHsKLSsJICAgICAg ICBkZWJ1Z19mKCJFcnJvciBkZWNvbXByZXNzaW5nIHRoZSBjb21wcmVzc2VkIHB1YmxpYyBrZXki KTsKLSsJICAgICAgICByZXR1cm4gU1NIX0VSUl9MSUJDUllQVE9fRVJST1I7Ci0rCSAgICB9IGVs c2UgewotKwkJcmV0dXJuIDA7Ci0rCSAgICB9Ci0rCX0gZWxzZSB7Ci0rCSAgICBkZWJ1Z19mKCJV bmV4cGVjdGVkIGxlbmd0aCBvZiB1bmNvbXByZXNzZWQgcHVibGljIGtleTogZXhwZWN0ZWQgJWQs IGdvdCAlZCIsIGJ1Zl9sZW4sIHJlcXVpcmVkX2xlbik7Ci0rCSAgICByZXR1cm4gU1NIX0VSUl9M SUJDUllQVE9fRVJST1I7Ci0rCX0KLSsgICAgfQotKwotKyAgICByZXR1cm4gMDsKLSt9Ci0rLyog bmlzdF9ieXRlc19sZW4gc2hvdWxkIGFsd2F5cyBiZSB1bmNvbXByZXNzZWQgKi8KLStzdGF0aWMg aW50Ci0ra2V4X2tlbV9tbGtlbV9uaXN0X2tleXBhaXIoc3RydWN0IGtleCAqa2V4LCBzaXplX3Qg bWxrZW1fYnl0ZXNfbGVuLCBzaXplX3QgbmlzdF9ieXRlc19sZW4pCi0rewotKwlzdHJ1Y3Qgc3No YnVmICpidWYgPSBOVUxMOwotKwl1X2NoYXIgKmNwID0gTlVMTDsKLSsJc2l6ZV90IG5lZWQ7Ci0r CWludCByID0gU1NIX0VSUl9JTlRFUk5BTF9FUlJPUjsKLSsJdV9jaGFyICpjbGllbnRfa2V5ID0g TlVMTDsKLSsKLSsJaWYgKChidWYgPSBzc2hidWZfbmV3KCkpID09IE5VTEwpCi0rCQlyZXR1cm4g U1NIX0VSUl9BTExPQ19GQUlMOwotKwluZWVkID0gbWxrZW1fYnl0ZXNfbGVuICsgbmlzdF9ieXRl c19sZW47Ci0rCWlmICgociA9IHNzaGJ1Zl9yZXNlcnZlKGJ1ZiwgbmVlZCwgJmNwKSkgIT0gMCkK LSsJCWdvdG8gb3V0OwotKwotKwlpZiAobWxrZW1fYnl0ZXNfbGVuID09IGNyeXB0b19rZW1fbWxr ZW03NjhfUFVCTElDS0VZQllURVMpIHsKLSsJCWNsaWVudF9rZXkgPSBrZXgtPm1sa2VtNzY4X2Ns aWVudF9rZXk7Ci0rCQlyID0gbWxrZW03Njhfa2V5cGFpcl9nZW4oY3AsIGNsaWVudF9rZXkpOwot Kwl9Ci0rCi0rCWlmIChtbGtlbV9ieXRlc19sZW4gPT0gY3J5cHRvX2tlbV9tbGtlbTEwMjRfUFVC TElDS0VZQllURVMpIHsKLSsJCWNsaWVudF9rZXkgPSBrZXgtPm1sa2VtMTAyNF9jbGllbnRfa2V5 OwotKwkJciA9IG1sa2VtMTAyNF9rZXlwYWlyX2dlbihjcCwgY2xpZW50X2tleSk7Ci0rCX0KLSsK LSsJaWYgKGNsaWVudF9rZXkgPT0gTlVMTCkKLSsJCWdvdG8gb3V0OwotKwotKwlpZiAociAhPSAw KQotKwkJZ290byBvdXQ7Ci0rI2lmZGVmIERFQlVHX0tFWEVDREgKLSsJZHVtcF9kaWdlc3QoImNs aWVudCBwdWJsaWMga2V5IG1sa2VtWFhYOiIsIGNwLCBtbGtlbV9ieXRlc19sZW4pOwotKyNlbmRp ZgotKwljcCArPSBtbGtlbV9ieXRlc19sZW47Ci0rCWlmICgoa2V4LT5lY19oeWJyaWRfY2xpZW50 X2tleSA9IG5pc3RfcGtleV9rZXlnZW4obmlzdF9ieXRlc19sZW4pKSA9PSBOVUxMKQotKwkJZ290 byBvdXQ7Ci0rCi0rCWlmICgociA9IGdldF91bmNvbXByZXNzZWRfZWNfcHVia2V5KGtleC0+ZWNf aHlicmlkX2NsaWVudF9rZXksIGNwLCBuaXN0X2J5dGVzX2xlbikpICE9IDApCi0rCQlnb3RvIG91 dDsKLSsKLSsjaWZkZWYgREVCVUdfS0VYRUNESAotKwlkdW1wX2RpZ2VzdCgiY2xpZW50IHB1Ymxp YyBrZXkgTklTVDoiLCBjcCwgbmlzdF9ieXRlc19sZW4pOwotKyNlbmRpZgotKwkvKiBzdWNjZXNz ICovCi0rCXIgPSAwOwotKwlrZXgtPmNsaWVudF9wdWIgPSBidWY7Ci0rCWJ1ZiA9IE5VTEw7Ci0r IG91dDoKLSsJc3NoYnVmX2ZyZWUoYnVmKTsKLSsgICAgICAgIGlmIChyID09IFNTSF9FUlJfTElC Q1JZUFRPX0VSUk9SKQotKwkgICBFUlJfcHJpbnRfZXJyb3JzX2ZwKHN0ZGVycik7Ci0rCi0rCXJl dHVybiByOwotK30KLSsKLStzdGF0aWMgaW50Ci0ra2V4X2tlbV9tbGtlbV9uaXN0X2VuYyhzdHJ1 Y3Qga2V4ICprZXgsIGNvbnN0IGNoYXIgKm5pc3RfY3VydmUsCi0rICAgY29uc3Qgc3RydWN0IHNz aGJ1ZiAqY2xpZW50X2Jsb2IsIHN0cnVjdCBzc2hidWYgKipzZXJ2ZXJfYmxvYnAsCi0rICAgc3Ry dWN0IHNzaGJ1ZiAqKnNoYXJlZF9zZWNyZXRwKQotK3sKLSsJc3RydWN0IHNzaGJ1ZiAqc2VydmVy X2Jsb2IgPSBOVUxMOwotKwlzdHJ1Y3Qgc3NoYnVmICpidWYgPSBOVUxMOwotKwljb25zdCB1X2No YXIgKmNsaWVudF9wdWI7Ci0rCXVfY2hhciBzZXJ2ZXJfcHViW05JU1RfQlVGX01BWF9TSVpFXTsK LSsJdV9jaGFyIGVuY19vdXRbY3J5cHRvX2tlbV9tbGtlbTEwMjRfQ0lQSEVSVEVYVEJZVEVTXTsK LSsJdV9jaGFyIHNlY3JldFtjcnlwdG9fa2VtX21sa2VtNzY4X0JZVEVTXTsKLSsJRVZQX1BLRVkg KnNlcnZlcl9rZXkgPSBOVUxMOwotKwl1X2NoYXIgaGFzaFtTU0hfRElHRVNUX01BWF9MRU5HVEhd OwotKwlzaXplX3QgY2xpZW50X2J1Zl9sZW4sIG1sa2VtX2J1Zl9sZW4sIGVjZGhfYnVmX2xlbiwg c2VydmVyX2tleV9sZW4sIGVuY19vdXRfbGVuOwotKwlpbnQgciA9IFNTSF9FUlJfSU5URVJOQUxf RVJST1I7Ci0rCi0rCSpzZXJ2ZXJfYmxvYnAgPSBOVUxMOwotKwkqc2hhcmVkX3NlY3JldHAgPSBO VUxMOwotKwotKwljbGllbnRfYnVmX2xlbiA9IHNzaGJ1Zl9sZW4oY2xpZW50X2Jsb2IpOwotKwkv KiBjbGllbnRfYmxvYiBjb250YWlucyBib3RoIEtFTSBhbmQgRUNESCBjbGllbnQgcHVia2V5cyAq LwotKwlpZiAoc3RyY21wKG5pc3RfY3VydmUsICJQLTI1NiIpID09IDApIHsKLSsJCWlmIChjcnlw dG9fa2VtX21sa2VtNzY4X1BVQkxJQ0tFWUJZVEVTID4gY2xpZW50X2J1Zl9sZW4pCi0rCQkJcmV0 dXJuIHI7Ci0rCi0rCQllY2RoX2J1Zl9sZW4gPSBjbGllbnRfYnVmX2xlbiAtIGNyeXB0b19rZW1f bWxrZW03NjhfUFVCTElDS0VZQllURVM7Ci0rCQlpZiAoZWNkaF9idWZfbGVuICE9IE5JU1RfUDI1 Nl9DT01QUkVTU0VEX0xFTiAmJgotKwkJCWVjZGhfYnVmX2xlbiAhPSBOSVNUX1AyNTZfVU5DT01Q UkVTU0VEX0xFTikKLSsJCQlyZXR1cm4gcjsKLSsJCW1sa2VtX2J1Zl9sZW4gPSBjcnlwdG9fa2Vt X21sa2VtNzY4X1BVQkxJQ0tFWUJZVEVTOwotKwkJZW5jX291dF9sZW4gPSBjcnlwdG9fa2VtX21s a2VtNzY4X0NJUEhFUlRFWFRCWVRFUzsKLSsJCXNlcnZlcl9rZXlfbGVuID0gTklTVF9QMjU2X1VO Q09NUFJFU1NFRF9MRU47Ci0rCX0gZWxzZSBpZiAoc3RyY21wKG5pc3RfY3VydmUsICJQLTM4NCIp ID09IDApIHsKLSsJCWlmIChjcnlwdG9fa2VtX21sa2VtMTAyNF9QVUJMSUNLRVlCWVRFUyA+IGNs aWVudF9idWZfbGVuKQotKwkJCXJldHVybiByOwotKwotKwkJZWNkaF9idWZfbGVuID0gY2xpZW50 X2J1Zl9sZW4gLSBjcnlwdG9fa2VtX21sa2VtMTAyNF9QVUJMSUNLRVlCWVRFUzsKLSsJCWlmIChl Y2RoX2J1Zl9sZW4gIT0gTklTVF9QMzg0X0NPTVBSRVNTRURfTEVOICYmCi0rCQkJZWNkaF9idWZf bGVuICE9IE5JU1RfUDM4NF9VTkNPTVBSRVNTRURfTEVOKQotKwkJCXJldHVybiByOwotKwkJbWxr ZW1fYnVmX2xlbiA9IGNyeXB0b19rZW1fbWxrZW0xMDI0X1BVQkxJQ0tFWUJZVEVTOwotKwkJZW5j X291dF9sZW4gPSBjcnlwdG9fa2VtX21sa2VtMTAyNF9DSVBIRVJURVhUQllURVM7Ci0rCQlzZXJ2 ZXJfa2V5X2xlbiA9IE5JU1RfUDM4NF9VTkNPTVBSRVNTRURfTEVOOwotKwl9IGVsc2UKLSsJCXJl dHVybiByOwotKwotKwljbGllbnRfcHViID0gc3NoYnVmX3B0cihjbGllbnRfYmxvYik7Ci0rI2lm ZGVmIERFQlVHX0tFWEVDREgKLSsJZHVtcF9kaWdlc3QoImNsaWVudCBwdWJsaWMga2V5IG1sa2Vt OiIsIGNsaWVudF9wdWIsIG1sa2VtX2J1Zl9sZW4pOwotKwlkdW1wX2RpZ2VzdCgiY2xpZW50IHB1 YmxpYyBrZXkgTklTVDoiLCBjbGllbnRfcHViICsgbWxrZW1fYnVmX2xlbiwgZWNkaF9idWZfbGVu KTsKLSsjZW5kaWYKLSsKLSsJLyogYWxsb2NhdGUgYnVmZmVyIGZvciBjb25jYXRlbmF0aW9uIG9m IEtFTSBrZXkgYW5kIEVDREggc2hhcmVkIGtleSAqLwotKwkvKiB0aGUgYnVmZmVyIHdpbGwgYmUg aGFzaGVkIGFuZCB0aGUgcmVzdWx0IGlzIHRoZSBzaGFyZWQgc2VjcmV0ICovCi0rCWlmICgoYnVm ID0gc3NoYnVmX25ldygpKSA9PSBOVUxMKSB7Ci0rCQlyID0gU1NIX0VSUl9BTExPQ19GQUlMOwot KwkJZ290byBvdXQ7Ci0rCX0KLSsJLyogYWxsb2NhdGUgc3BhY2UgZm9yIGVuY3J5cHRlZCBLRU0g a2V5IGFuZCBFQ0RIIHB1YiBrZXkgKi8KLSsJaWYgKChzZXJ2ZXJfYmxvYiA9IHNzaGJ1Zl9uZXco KSkgPT0gTlVMTCkgewotKwkJciA9IFNTSF9FUlJfQUxMT0NfRkFJTDsKLSsJCWdvdG8gb3V0Owot Kwl9Ci0rCXIgPSAobWxrZW1fYnVmX2xlbiA9PSBjcnlwdG9fa2VtX21sa2VtNzY4X1BVQkxJQ0tF WUJZVEVTKSA/Ci0rCQltbGtlbTc2OF9lbmNhcF9zZWNyZXQoY2xpZW50X3B1Yiwgc2VjcmV0LCBl bmNfb3V0KSA6Ci0rCQltbGtlbTEwMjRfZW5jYXBfc2VjcmV0KGNsaWVudF9wdWIsIHNlY3JldCwg ZW5jX291dCk7Ci0rCi0rCWlmIChyICE9IDApCi0rCQlnb3RvIG91dDsKLSsKLSsJLyogZ2VuZXJh dGUgRUNESCBrZXkgcGFpciwgc3RvcmUgc2VydmVyIHB1YmtleSBhZnRlciBjaXBoZXJ0ZXh0ICov Ci0rCXNlcnZlcl9rZXkgPSBuaXN0X3BrZXlfa2V5Z2VuKHNlcnZlcl9rZXlfbGVuKTsKLSsKLSsJ aWYgKChzZXJ2ZXJfa2V5ID09IE5VTEwpIHx8Ci0rCSAgICAociA9IGdldF91bmNvbXByZXNzZWRf ZWNfcHVia2V5KHNlcnZlcl9rZXksIHNlcnZlcl9wdWIsIHNlcnZlcl9rZXlfbGVuKSAhPSAwKSB8 fAotKwkgICAgKHIgPSBzc2hidWZfcHV0KGJ1Ziwgc2VjcmV0LCBzaXplb2Yoc2VjcmV0KSkpICE9 IDAgfHwKLSsJICAgIChyID0gc3NoYnVmX3B1dChzZXJ2ZXJfYmxvYiwgZW5jX291dCwgZW5jX291 dF9sZW4pICE9IDApfHwKLSsJICAgIChyID0gc3NoYnVmX3B1dChzZXJ2ZXJfYmxvYiwgc2VydmVy X3B1Yiwgc2VydmVyX2tleV9sZW4pKSAhPSAwKQotKwkJZ290byBvdXQ7Ci0rCi0rCS8qIGFwcGVu ZCBFQ0RIIHNoYXJlZCBrZXkgKi8KLSsJY2xpZW50X3B1YiArPSBtbGtlbV9idWZfbGVuOwotKwlp ZiAoKHIgPSBrZXhfbmlzdF9zaGFyZWRfa2V5X2V4dChzZXJ2ZXJfa2V5LCBjbGllbnRfcHViLCBl Y2RoX2J1Zl9sZW4sIGJ1ZikpIDwgMCkKLSsJCWdvdG8gb3V0OwotKwlpZiAoKHIgPSBzc2hfZGln ZXN0X2J1ZmZlcihrZXgtPmhhc2hfYWxnLCBidWYsIGhhc2gsIHNpemVvZihoYXNoKSkpICE9IDAp Ci0rCQlnb3RvIG91dDsKLSsjaWZkZWYgREVCVUdfS0VYRUNESAotKwlkdW1wX2RpZ2VzdCgic2Vy dmVyIHB1YmxpYyBOSVNUOiIsIHNlcnZlcl9wdWIsIHNlcnZlcl9rZXlfbGVuKTsKLSsJZHVtcF9k aWdlc3QoInNlcnZlciBjaXBoZXIgdGV4dDoiLCBlbmNfb3V0LCBlbmNfb3V0X2xlbik7Ci0rCWR1 bXBfZGlnZXN0KCJzZXJ2ZXIga2VtIGtleToiLCBzZWNyZXQsIHNpemVvZihzZWNyZXQpKTsKLSsJ ZHVtcF9kaWdlc3QoImNvbmNhdGVuYXRpb24gb2YgS0VNIGtleSBhbmQgRUNESCBzaGFyZWQga2V5 OiIsCi0rCSAgICBzc2hidWZfcHRyKGJ1ZiksIHNzaGJ1Zl9sZW4oYnVmKSk7Ci0rI2VuZGlmCi0r CS8qIHN0cmluZy1lbmNvZGVkIGhhc2ggaXMgcmVzdWx0aW5nIHNoYXJlZCBzZWNyZXQgKi8KLSsJ c3NoYnVmX3Jlc2V0KGJ1Zik7Ci0rCWlmICgociA9IHNzaGJ1Zl9wdXRfc3RyaW5nKGJ1ZiwgaGFz aCwKLSsJICAgIHNzaF9kaWdlc3RfYnl0ZXMoa2V4LT5oYXNoX2FsZykpKSAhPSAwKQotKwkJZ290 byBvdXQ7Ci0rI2lmZGVmIERFQlVHX0tFWEVDREgKLSsJZHVtcF9kaWdlc3QoImVuY29kZWQgc2hh cmVkIHNlY3JldDoiLCBzc2hidWZfcHRyKGJ1ZiksIHNzaGJ1Zl9sZW4oYnVmKSk7Ci0rI2VuZGlm Ci0rCS8qIHN1Y2Nlc3MgKi8KLSsJciA9IDA7Ci0rCSpzZXJ2ZXJfYmxvYnAgPSBzZXJ2ZXJfYmxv YjsKLSsJKnNoYXJlZF9zZWNyZXRwID0gYnVmOwotKwlzZXJ2ZXJfYmxvYiA9IE5VTEw7Ci0rCWJ1 ZiA9IE5VTEw7Ci0rIG91dDoKLSsJZXhwbGljaXRfYnplcm8oaGFzaCwgc2l6ZW9mKGhhc2gpKTsK LSsJRVZQX1BLRVlfZnJlZShzZXJ2ZXJfa2V5KTsKLSsJZXhwbGljaXRfYnplcm8oZW5jX291dCwg c2l6ZW9mKGVuY19vdXQpKTsKLSsJZXhwbGljaXRfYnplcm8oc2VjcmV0LCBzaXplb2Yoc2VjcmV0 KSk7Ci0rCXNzaGJ1Zl9mcmVlKHNlcnZlcl9ibG9iKTsKLSsJc3NoYnVmX2ZyZWUoYnVmKTsKLSsJ cmV0dXJuIHI7Ci0rfQotKwotK3N0YXRpYyBpbnQKLStrZXhfa2VtX21sa2VtX25pc3RfZGVjKHN0 cnVjdCBrZXggKmtleCwKLSsgICAgY29uc3Qgc3RydWN0IHNzaGJ1ZiAqc2VydmVyX2Jsb2IsIHN0 cnVjdCBzc2hidWYgKipzaGFyZWRfc2VjcmV0cCwKLSsgICAgc2l6ZV90IG1sa2VtX2xlbikKLSt7 Ci0rCXN0cnVjdCBzc2hidWYgKmJ1ZiA9IE5VTEw7Ci0rCWNvbnN0IHVfY2hhciAqY2lwaGVydGV4 dCwgKnNlcnZlcl9wdWI7Ci0rCXVfY2hhciBoYXNoW1NTSF9ESUdFU1RfTUFYX0xFTkdUSF07Ci0r CXVfY2hhciBkZWNhcFtjcnlwdG9fa2VtX21sa2VtNzY4X0JZVEVTXTsKLSsJaW50IHI7Ci0rCXNp emVfdCBuaXN0X2xlbjsKLSsKLSsJKnNoYXJlZF9zZWNyZXRwID0gTlVMTDsKLSsKLSsJaWYgKHNz aGJ1Zl9sZW4oc2VydmVyX2Jsb2IpIDwgbWxrZW1fbGVuKSB7Ci0rCQlyID0gU1NIX0VSUl9TSUdO QVRVUkVfSU5WQUxJRDsKLSsJCWdvdG8gb3V0OwotKwl9Ci0rCi0rCW5pc3RfbGVuID0gc3NoYnVm X2xlbihzZXJ2ZXJfYmxvYikgLSBtbGtlbV9sZW47Ci0rCi0rCXN3aXRjaCAobWxrZW1fbGVuKSB7 Ci0rCQljYXNlIGNyeXB0b19rZW1fbWxrZW03NjhfQ0lQSEVSVEVYVEJZVEVTOgotKwkJCWlmIChu aXN0X2xlbiAhPSBOSVNUX1AyNTZfQ09NUFJFU1NFRF9MRU4KLSsJCQkJJiYgbmlzdF9sZW4gIT0g TklTVF9QMjU2X1VOQ09NUFJFU1NFRF9MRU4pIHsKLSsJCQkJciA9IFNTSF9FUlJfU0lHTkFUVVJF X0lOVkFMSUQ7Ci0rCQkJCWdvdG8gb3V0OwotKwkJCX0KLSsJCWJyZWFrOwotKwkJY2FzZSBjcnlw dG9fa2VtX21sa2VtMTAyNF9DSVBIRVJURVhUQllURVM6Ci0rCQkJaWYgKG5pc3RfbGVuICE9IE5J U1RfUDM4NF9DT01QUkVTU0VEX0xFTgotKwkJCQkmJiBuaXN0X2xlbiAhPSBOSVNUX1AzODRfVU5D T01QUkVTU0VEX0xFTikgewotKwkJCQlyID0gU1NIX0VSUl9TSUdOQVRVUkVfSU5WQUxJRDsKLSsJ CQkJZ290byBvdXQ7Ci0rCQkJfQotKwkJYnJlYWs7Ci0rCX0KLSsKLSsJY2lwaGVydGV4dCA9IHNz aGJ1Zl9wdHIoc2VydmVyX2Jsb2IpOwotKwlzZXJ2ZXJfcHViID0gY2lwaGVydGV4dCArIG1sa2Vt X2xlbjsKLSsJLyogaGFzaCBjb25jYXRlbmF0aW9uIG9mIEtFTSBrZXkgYW5kIEVDREggc2hhcmVk IGtleSAqLwotKwlpZiAoKGJ1ZiA9IHNzaGJ1Zl9uZXcoKSkgPT0gTlVMTCkgewotKwkJciA9IFNT SF9FUlJfQUxMT0NfRkFJTDsKLSsJCWdvdG8gb3V0OwotKwl9Ci0rI2lmZGVmIERFQlVHX0tFWEVD REgKLSsJZHVtcF9kaWdlc3QoInNlcnZlciBjaXBoZXIgdGV4dDoiLCBjaXBoZXJ0ZXh0LCBtbGtl bV9sZW4pOwotKwlkdW1wX2RpZ2VzdCgic2VydmVyIHB1YmxpYyBrZXkgTklTVDoiLCBzZXJ2ZXJf cHViLCBuaXN0X2xlbik7Ci0rI2VuZGlmCi0rCXIgPSAobWxrZW1fbGVuID09IGNyeXB0b19rZW1f bWxrZW03NjhfQ0lQSEVSVEVYVEJZVEVTKSA/Ci0rCQltbGtlbTc2OF9kZWNhcF9zZWNyZXQoa2V4 LT5tbGtlbTc2OF9jbGllbnRfa2V5LCBjaXBoZXJ0ZXh0LCBkZWNhcCkgOgotKwkJbWxrZW0xMDI0 X2RlY2FwX3NlY3JldChrZXgtPm1sa2VtMTAyNF9jbGllbnRfa2V5LCBjaXBoZXJ0ZXh0LCBkZWNh cCk7Ci0rCi0rCWlmIChyICE9IDApCi0rCQlnb3RvIG91dDsKLSsJaWYgKChyID0gc3NoYnVmX3B1 dChidWYsIGRlY2FwLCBzaXplb2YoZGVjYXApKSkgIT0gMCkKLSsJCWdvdG8gb3V0OwotKwlpZiAo KHIgPSBrZXhfbmlzdF9zaGFyZWRfa2V5X2V4dChrZXgtPmVjX2h5YnJpZF9jbGllbnRfa2V5LCBz ZXJ2ZXJfcHViLAotKwkJbmlzdF9sZW4sIGJ1ZikpIDwgMCkKLSsJCWdvdG8gb3V0OwotKwlpZiAo KHIgPSBzc2hfZGlnZXN0X2J1ZmZlcihrZXgtPmhhc2hfYWxnLCBidWYsCi0rCSAgICBoYXNoLCBz aXplb2YoaGFzaCkpKSAhPSAwKQotKwkJZ290byBvdXQ7Ci0rI2lmZGVmIERFQlVHX0tFWEVDREgK LSsJZHVtcF9kaWdlc3QoImNsaWVudCBrZW0ga2V5OiIsIGRlY2FwLCBzaXplb2YoZGVjYXApKTsK LSsJZHVtcF9kaWdlc3QoImNvbmNhdGVuYXRpb24gb2YgS0VNIGtleSBhbmQgRUNESCBzaGFyZWQg a2V5OiIsCi0rCSAgICBzc2hidWZfcHRyKGJ1ZiksIHNzaGJ1Zl9sZW4oYnVmKSk7Ci0rI2VuZGlm Ci0rCXNzaGJ1Zl9yZXNldChidWYpOwotKwlpZiAoKHIgPSBzc2hidWZfcHV0X3N0cmluZyhidWYs IGhhc2gsCi0rCSAgICBzc2hfZGlnZXN0X2J5dGVzKGtleC0+aGFzaF9hbGcpKSkgIT0gMCkKLSsJ CWdvdG8gb3V0OwotKyNpZmRlZiBERUJVR19LRVhFQ0RICi0rCWR1bXBfZGlnZXN0KCJlbmNvZGVk IHNoYXJlZCBzZWNyZXQ6Iiwgc3NoYnVmX3B0cihidWYpLCBzc2hidWZfbGVuKGJ1ZikpOwotKyNl bmRpZgotKwkvKiBzdWNjZXNzICovCi0rCXIgPSAwOwotKwkqc2hhcmVkX3NlY3JldHAgPSBidWY7 Ci0rCWJ1ZiA9IE5VTEw7Ci0rIG91dDoKLSsJZXhwbGljaXRfYnplcm8oaGFzaCwgc2l6ZW9mKGhh c2gpKTsKLSsJZXhwbGljaXRfYnplcm8oZGVjYXAsIHNpemVvZihkZWNhcCkpOwotKwlzc2hidWZf ZnJlZShidWYpOwotKwlyZXR1cm4gcjsKLSt9Ci0rCi0raW50Ci0ra2V4X2tlbV9tbGtlbTc2OG5p c3RwMjU2X2tleXBhaXIoc3RydWN0IGtleCAqa2V4KQotK3sKLSsJcmV0dXJuIGtleF9rZW1fbWxr ZW1fbmlzdF9rZXlwYWlyKGtleCwgY3J5cHRvX2tlbV9tbGtlbTc2OF9QVUJMSUNLRVlCWVRFUywg TklTVF9QMjU2X1VOQ09NUFJFU1NFRF9MRU4pOwotK30KLSsKLStpbnQKLStrZXhfa2VtX21sa2Vt NzY4bmlzdHAyNTZfZW5jKHN0cnVjdCBrZXggKmtleCwgY29uc3Qgc3RydWN0IHNzaGJ1ZiAqY2xp ZW50X2Jsb2IsCi0rICAgIHN0cnVjdCBzc2hidWYgKipzZXJ2ZXJfYmxvYnAsIHN0cnVjdCBzc2hi dWYgKipzaGFyZWRfc2VjcmV0cCkKLSt7Ci0rCXJldHVybiBrZXhfa2VtX21sa2VtX25pc3RfZW5j KGtleCwgIlAtMjU2IiwgY2xpZW50X2Jsb2IsIHNlcnZlcl9ibG9icCwgc2hhcmVkX3NlY3JldHAp OwotK30KLSsKLStpbnQKLStrZXhfa2VtX21sa2VtNzY4bmlzdHAyNTZfZGVjKHN0cnVjdCBrZXgg KmtleCwgY29uc3Qgc3RydWN0IHNzaGJ1ZiAqc2VydmVyX2Jsb2IsCi0rICAgIHN0cnVjdCBzc2hi dWYgKipzaGFyZWRfc2VjcmV0cCkKLSt7Ci0rCXJldHVybiBrZXhfa2VtX21sa2VtX25pc3RfZGVj KGtleCwgc2VydmVyX2Jsb2IsIHNoYXJlZF9zZWNyZXRwLAotKwkJY3J5cHRvX2tlbV9tbGtlbTc2 OF9DSVBIRVJURVhUQllURVMpOwotK30KLSsKLStpbnQKLStrZXhfa2VtX21sa2VtMTAyNG5pc3Rw Mzg0X2tleXBhaXIoc3RydWN0IGtleCAqa2V4KQotK3sKLSsJcmV0dXJuIGtleF9rZW1fbWxrZW1f bmlzdF9rZXlwYWlyKGtleCwgY3J5cHRvX2tlbV9tbGtlbTEwMjRfUFVCTElDS0VZQllURVMsIE5J U1RfUDM4NF9VTkNPTVBSRVNTRURfTEVOKTsKLSt9Ci0rCi0raW50Ci0ra2V4X2tlbV9tbGtlbTEw MjRuaXN0cDM4NF9lbmMoc3RydWN0IGtleCAqa2V4LCBjb25zdCBzdHJ1Y3Qgc3NoYnVmICpjbGll bnRfYmxvYiwKLSsgICAgc3RydWN0IHNzaGJ1ZiAqKnNlcnZlcl9ibG9icCwgc3RydWN0IHNzaGJ1 ZiAqKnNoYXJlZF9zZWNyZXRwKQotK3sKLSsJcmV0dXJuIGtleF9rZW1fbWxrZW1fbmlzdF9lbmMo a2V4LCAiUC0zODQiLCBjbGllbnRfYmxvYiwgc2VydmVyX2Jsb2JwLCBzaGFyZWRfc2VjcmV0cCk7 Ci0rfQotKwotK2ludAotK2tleF9rZW1fbWxrZW0xMDI0bmlzdHAzODRfZGVjKHN0cnVjdCBrZXgg KmtleCwgY29uc3Qgc3RydWN0IHNzaGJ1ZiAqc2VydmVyX2Jsb2IsCi0rICAgIHN0cnVjdCBzc2hi dWYgKipzaGFyZWRfc2VjcmV0cCkKLSt7Ci0rCXJldHVybiBrZXhfa2VtX21sa2VtX25pc3RfZGVj KGtleCwgc2VydmVyX2Jsb2IsIHNoYXJlZF9zZWNyZXRwLAotKwkJY3J5cHRvX2tlbV9tbGtlbTEw MjRfQ0lQSEVSVEVYVEJZVEVTKTsKLSt9Ci0rCi0gI2Vsc2UgLyogVVNFX01MS0VNNzY4WDI1NTE5 ICovCi0gaW50Ci0ga2V4X2tlbV9tbGtlbTc2OHgyNTUxOV9rZXlwYWlyKHN0cnVjdCBrZXggKmtl eCkKLUBAIC01NjcsNCArMTE2NSwzOSBAQCBrZXhfa2VtX21sa2VtNzY4eDI1NTE5X2RlYyhzdHJ1 Y3Qga2V4ICprZXgsCi0gewotIAlyZXR1cm4gU1NIX0VSUl9TSUdOX0FMR19VTlNVUFBPUlRFRDsK LSB9Ci0rCi0raW50CSBrZXhfa2VtX21sa2VtNzY4bmlzdHAyNTZfa2V5cGFpcihzdHJ1Y3Qga2V4 ICopCi0rewotKwlyZXR1cm4gU1NIX0VSUl9TSUdOX0FMR19VTlNVUFBPUlRFRDsKLSt9Ci0rCi0r aW50CSBrZXhfa2VtX21sa2VtNzY4bmlzdHAyNTZfZW5jKHN0cnVjdCBrZXggKiwgY29uc3Qgc3Ry dWN0IHNzaGJ1ZiAqLAotKyAgICBzdHJ1Y3Qgc3NoYnVmICoqLCBzdHJ1Y3Qgc3NoYnVmICoqKQot K3sKLSsJcmV0dXJuIFNTSF9FUlJfU0lHTl9BTEdfVU5TVVBQT1JURUQ7Ci0rfQotKwotK2ludAkg a2V4X2tlbV9tbGtlbTc2OG5pc3RwMjU2X2RlYyhzdHJ1Y3Qga2V4ICosIGNvbnN0IHN0cnVjdCBz c2hidWYgKiwKLSsgICAgc3RydWN0IHNzaGJ1ZiAqKikKLSt7Ci0rCXJldHVybiBTU0hfRVJSX1NJ R05fQUxHX1VOU1VQUE9SVEVEOwotK30KLSsKLStpbnQJIGtleF9rZW1fbWxrZW0xMDI0bmlzdHAz ODRfa2V5cGFpcihzdHJ1Y3Qga2V4ICopCi0rewotKwlyZXR1cm4gU1NIX0VSUl9TSUdOX0FMR19V TlNVUFBPUlRFRDsKLSt9Ci0rCi0raW50CSBrZXhfa2VtX21sa2VtMTAyNG5pc3RwMzg0X2VuYyhz dHJ1Y3Qga2V4ICosIGNvbnN0IHN0cnVjdCBzc2hidWYgKiwKLSsgICAgc3RydWN0IHNzaGJ1ZiAq Kiwgc3RydWN0IHNzaGJ1ZiAqKikKLSt7Ci0rCXJldHVybiBTU0hfRVJSX1NJR05fQUxHX1VOU1VQ UE9SVEVEOwotK30KLSsKLStpbnQJIGtleF9rZW1fbWxrZW0xMDI0bmlzdHAzODRfZGVjKHN0cnVj dCBrZXggKiwgY29uc3Qgc3RydWN0IHNzaGJ1ZiAqLAotKyAgICBzdHJ1Y3Qgc3NoYnVmICoqKQot K3sKLSsJcmV0dXJuIFNTSF9FUlJfU0lHTl9BTEdfVU5TVVBQT1JURUQ7Ci0rfQotKwotICNlbmRp ZiAvKiBVU0VfTUxLRU03NjhYMjU1MTkgKi8KLWRpZmYgLS1naXQgYS9tb25pdG9yLmMgYi9tb25p dG9yLmMKLWluZGV4IGJmNWE1MTA1Yi4uMzZkYjFhZmVlIDEwMDY0NAotLS0tIGEvbW9uaXRvci5j Ci0rKysgYi9tb25pdG9yLmMKLUBAIC0yMDUwLDYgKzIwNTAsOCBAQCBtb25pdG9yX2FwcGx5X2tl eXN0YXRlKHN0cnVjdCBzc2ggKnNzaCwgc3RydWN0IG1vbml0b3IgKnBtb25pdG9yKQotIAlrZXgt PmtleFtLRVhfQzI1NTE5X1NIQTI1Nl0gPSBrZXhfZ2VuX3NlcnZlcjsKLSAJa2V4LT5rZXhbS0VY X0tFTV9TTlRSVVA3NjFYMjU1MTlfU0hBNTEyXSA9IGtleF9nZW5fc2VydmVyOwotIAlrZXgtPmtl eFtLRVhfS0VNX01MS0VNNzY4WDI1NTE5X1NIQTI1Nl0gPSBrZXhfZ2VuX3NlcnZlcjsKLSsJa2V4 LT5rZXhbS0VYX0tFTV9NTEtFTTc2OE5JU1RQMjU2X1NIQTI1Nl0gPSBrZXhfZ2VuX3NlcnZlcjsK LSsJa2V4LT5rZXhbS0VYX0tFTV9NTEtFTTEwMjROSVNUUDM4NF9TSEEzODRdID0ga2V4X2dlbl9z ZXJ2ZXI7Ci0gCWtleC0+bG9hZF9ob3N0X3B1YmxpY19rZXk9JmdldF9ob3N0a2V5X3B1YmxpY19i eV90eXBlOwotIAlrZXgtPmxvYWRfaG9zdF9wcml2YXRlX2tleT0mZ2V0X2hvc3RrZXlfcHJpdmF0 ZV9ieV90eXBlOwotIAlrZXgtPmhvc3Rfa2V5X2luZGV4PSZnZXRfaG9zdGtleV9pbmRleDsKLWRp ZmYgLS1naXQgYS9teXByb3Bvc2FsLmggYi9teXByb3Bvc2FsLmgKLWluZGV4IDY0MzNlMDgyMC4u NTFlM2VmNWM4IDEwMDY0NAotLS0tIGEvbXlwcm9wb3NhbC5oCi0rKysgYi9teXByb3Bvc2FsLmgK LUBAIC0yNiw2ICsyNiw4IEBACi0gCi0gI2RlZmluZSBLRVhfU0VSVkVSX0tFWAlcCi0gCSJtbGtl bTc2OHgyNTUxOS1zaGEyNTYsIiBcCi0rCSJtbGtlbTc2OG5pc3RwMjU2LXNoYTI1NiwiIFwKLSsJ Im1sa2VtMTAyNG5pc3RwMzg0LXNoYTM4NCwiIFwKLSAJInNudHJ1cDc2MXgyNTUxOS1zaGE1MTIs IiBcCi0gCSJzbnRydXA3NjF4MjU1MTktc2hhNTEyQG9wZW5zc2guY29tLCIgXAotIAkiY3VydmUy NTUxOS1zaGEyNTYsIiBcCi1AQCAtOTksNiArMTAxLDggQEAKLSAJImFlczE5Mi1jYmMsYWVzMjU2 LWNiYyxyaWpuZGFlbC1jYmNAbHlzYXRvci5saXUuc2UsIiBcCi0gCSJhZXMxMjgtZ2NtQG9wZW5z c2guY29tLGFlczI1Ni1nY21Ab3BlbnNzaC5jb20iCi0gI2RlZmluZSBLRVhfREVGQVVMVF9LRVhf RklQUwkJXAotKwkibWxrZW03NjhuaXN0cDI1Ni1zaGEyNTYsIiBcCi0rCSJtbGtlbTEwMjRuaXN0 cDM4NC1zaGEzODQsIiBcCi0gCSJlY2RoLXNoYTItbmlzdHAyNTYsIiBcCi0gCSJlY2RoLXNoYTIt bmlzdHAzODQsIiBcCi0gCSJlY2RoLXNoYTItbmlzdHA1MjEsIiBcCi1kaWZmIC0tZ2l0IGEvcmVn cmVzcy91bml0dGVzdHMva2V4L3Rlc3Rfa2V4LmMgYi9yZWdyZXNzL3VuaXR0ZXN0cy9rZXgvdGVz dF9rZXguYwotaW5kZXggZjQ3MDBkZWViLi45OWE4ZTNiNDYgMTAwNjQ0Ci0tLS0gYS9yZWdyZXNz L3VuaXR0ZXN0cy9rZXgvdGVzdF9rZXguYwotKysrIGIvcmVncmVzcy91bml0dGVzdHMva2V4L3Rl c3Rfa2V4LmMKLUBAIC0xNzEsNiArMTcxLDggQEAgZG9fa2V4X3dpdGhfa2V5KGNoYXIgKmtleCwg Y2hhciAqY2lwaGVyLCBjaGFyICptYWMsCi0gCXNlcnZlcjItPmtleC0+a2V4W0tFWF9DMjU1MTlf U0hBMjU2XSA9IGtleF9nZW5fc2VydmVyOwotIAlzZXJ2ZXIyLT5rZXgtPmtleFtLRVhfS0VNX1NO VFJVUDc2MVgyNTUxOV9TSEE1MTJdID0ga2V4X2dlbl9zZXJ2ZXI7Ci0gCXNlcnZlcjItPmtleC0+ a2V4W0tFWF9LRU1fTUxLRU03NjhYMjU1MTlfU0hBMjU2XSA9IGtleF9nZW5fc2VydmVyOwotKwlz ZXJ2ZXIyLT5rZXgtPmtleFtLRVhfS0VNX01MS0VNNzY4TklTVFAyNTZfU0hBMjU2XSA9IGtleF9n ZW5fc2VydmVyOwotKwlzZXJ2ZXIyLT5rZXgtPmtleFtLRVhfS0VNX01MS0VNMTAyNE5JU1RQMzg0 X1NIQTM4NF0gPSBrZXhfZ2VuX3NlcnZlcjsKLSAJc2VydmVyMi0+a2V4LT5sb2FkX2hvc3RfcHVi bGljX2tleSA9IHNlcnZlci0+a2V4LT5sb2FkX2hvc3RfcHVibGljX2tleTsKLSAJc2VydmVyMi0+ a2V4LT5sb2FkX2hvc3RfcHJpdmF0ZV9rZXkgPSBzZXJ2ZXItPmtleC0+bG9hZF9ob3N0X3ByaXZh dGVfa2V5OwotIAlzZXJ2ZXIyLT5rZXgtPnNpZ24gPSBzZXJ2ZXItPmtleC0+c2lnbjsKLUBAIC0y NDgsNiArMjUwLDggQEAga2V4X3Rlc3RzKHZvaWQpCi0gCX0KLSAjIGlmZGVmIFVTRV9NTEtFTTc2 OFgyNTUxOQotIAlkb19rZXgoIm1sa2VtNzY4eDI1NTE5LXNoYTI1NiIpOwotKwlkb19rZXgoIm1s a2VtNzY4bmlzdHAyNTYtc2hhMjU2Iik7Ci0rCWRvX2tleCgibWxrZW0xMDI0bmlzdHAzODQtc2hh Mzg0Iik7Ci0gIyBlbmRpZiAvKiBVU0VfTUxLRU03NjhYMjU1MTkgKi8KLSAjIGlmZGVmIFVTRV9T TlRSVVA3NjFYMjU1MTkKLSAJZG9fa2V4KCJzbnRydXA3NjF4MjU1MTktc2hhNTEyIik7Ci1kaWZm IC0tZ2l0IGEvc3NoLWtleXNjYW4uYyBiL3NzaC1rZXlzY2FuLmMKLWluZGV4IDNjZWExZGFhYy4u ZjVjZTkwNDM0IDEwMDY0NAotLS0tIGEvc3NoLWtleXNjYW4uYwotKysrIGIvc3NoLWtleXNjYW4u YwotQEAgLTMwMCw2ICszMDAsOCBAQCBrZXlncmFiX3NzaDIoY29uICpjKQotIAljLT5jX3NzaC0+ a2V4LT5rZXhbS0VYX0MyNTUxOV9TSEEyNTZdID0ga2V4X2dlbl9jbGllbnQ7Ci0gCWMtPmNfc3No LT5rZXgtPmtleFtLRVhfS0VNX1NOVFJVUDc2MVgyNTUxOV9TSEE1MTJdID0ga2V4X2dlbl9jbGll bnQ7Ci0gCWMtPmNfc3NoLT5rZXgtPmtleFtLRVhfS0VNX01MS0VNNzY4WDI1NTE5X1NIQTI1Nl0g PSBrZXhfZ2VuX2NsaWVudDsKLSsJYy0+Y19zc2gtPmtleC0+a2V4W0tFWF9LRU1fTUxLRU03NjhO SVNUUDI1Nl9TSEEyNTZdID0ga2V4X2dlbl9jbGllbnQ7Ci0rCWMtPmNfc3NoLT5rZXgtPmtleFtL RVhfS0VNX01MS0VNMTAyNE5JU1RQMzg0X1NIQTM4NF0gPSBrZXhfZ2VuX2NsaWVudDsKLSAJc3No X3NldF92ZXJpZnlfaG9zdF9rZXlfY2FsbGJhY2soYy0+Y19zc2gsIGtleV9wcmludF93cmFwcGVy KTsKLSAJLyoKLSAJICogZG8gdGhlIGtleS1leGNoYW5nZSB1bnRpbCBhbiBlcnJvciBvY2N1cnMg b3IgdW50aWwKLWRpZmYgLS1naXQgYS9zc2hfYXBpLmMgYi9zc2hfYXBpLmMKLWluZGV4IDM4YWMx N2RhMS4uYjE3ODU4MmIzIDEwMDY0NAotLS0tIGEvc3NoX2FwaS5jCi0rKysgYi9zc2hfYXBpLmMK LUBAIC0xMzUsNiArMTM1LDggQEAgc3NoX2luaXQoc3RydWN0IHNzaCAqKnNzaHAsIGludCBpc19z ZXJ2ZXIsIHN0cnVjdCBrZXhfcGFyYW1zICprZXhfcGFyYW1zKQotIAkJc3NoLT5rZXgtPmtleFtL RVhfQzI1NTE5X1NIQTI1Nl0gPSBrZXhfZ2VuX3NlcnZlcjsKLSAJCXNzaC0+a2V4LT5rZXhbS0VY X0tFTV9TTlRSVVA3NjFYMjU1MTlfU0hBNTEyXSA9IGtleF9nZW5fc2VydmVyOwotIAkJc3NoLT5r ZXgtPmtleFtLRVhfS0VNX01MS0VNNzY4WDI1NTE5X1NIQTI1Nl0gPSBrZXhfZ2VuX3NlcnZlcjsK LSsJCXNzaC0+a2V4LT5rZXhbS0VYX0tFTV9NTEtFTTc2OE5JU1RQMjU2X1NIQTI1Nl0gPSBrZXhf Z2VuX3NlcnZlcjsKLSsJCXNzaC0+a2V4LT5rZXhbS0VYX0tFTV9NTEtFTTEwMjROSVNUUDM4NF9T SEEzODRdID0ga2V4X2dlbl9zZXJ2ZXI7Ci0gCQlzc2gtPmtleC0+bG9hZF9ob3N0X3B1YmxpY19r ZXk9Jl9zc2hfaG9zdF9wdWJsaWNfa2V5OwotIAkJc3NoLT5rZXgtPmxvYWRfaG9zdF9wcml2YXRl X2tleT0mX3NzaF9ob3N0X3ByaXZhdGVfa2V5OwotIAkJc3NoLT5rZXgtPnNpZ249Jl9zc2hfaG9z dF9rZXlfc2lnbjsKLUBAIC0xNTQsNiArMTU2LDggQEAgc3NoX2luaXQoc3RydWN0IHNzaCAqKnNz aHAsIGludCBpc19zZXJ2ZXIsIHN0cnVjdCBrZXhfcGFyYW1zICprZXhfcGFyYW1zKQotIAkJc3No LT5rZXgtPmtleFtLRVhfQzI1NTE5X1NIQTI1Nl0gPSBrZXhfZ2VuX2NsaWVudDsKLSAJCXNzaC0+ a2V4LT5rZXhbS0VYX0tFTV9TTlRSVVA3NjFYMjU1MTlfU0hBNTEyXSA9IGtleF9nZW5fY2xpZW50 OwotIAkJc3NoLT5rZXgtPmtleFtLRVhfS0VNX01MS0VNNzY4WDI1NTE5X1NIQTI1Nl0gPSBrZXhf Z2VuX2NsaWVudDsKLSsJCXNzaC0+a2V4LT5rZXhbS0VYX0tFTV9NTEtFTTc2OE5JU1RQMjU2X1NI QTI1Nl0gPSBrZXhfZ2VuX2NsaWVudDsKLSsJCXNzaC0+a2V4LT5rZXhbS0VYX0tFTV9NTEtFTTEw MjROSVNUUDM4NF9TSEEzODRdID0ga2V4X2dlbl9jbGllbnQ7Ci0gCQlzc2gtPmtleC0+dmVyaWZ5 X2hvc3Rfa2V5ID0mX3NzaF92ZXJpZnlfaG9zdF9rZXk7Ci0gCX0KLSAJKnNzaHAgPSBzc2g7Ci1k aWZmIC0tZ2l0IGEvc3NoY29ubmVjdDIuYyBiL3NzaGNvbm5lY3QyLmMKLWluZGV4IGVlZTFmOTc5 NC4uNTBjMjI4ODAyIDEwMDY0NAotLS0tIGEvc3NoY29ubmVjdDIuYwotKysrIGIvc3NoY29ubmVj dDIuYwotQEAgLTM1MCw2ICszNTAsOCBAQCBzc2hfa2V4MihzdHJ1Y3Qgc3NoICpzc2gsIGNoYXIg Kmhvc3QsIHN0cnVjdCBzb2NrYWRkciAqaG9zdGFkZHIsIHVfc2hvcnQgcG9ydCwKLSAJc3NoLT5r ZXgtPmtleFtLRVhfQzI1NTE5X1NIQTI1Nl0gPSBrZXhfZ2VuX2NsaWVudDsKLSAJc3NoLT5rZXgt PmtleFtLRVhfS0VNX1NOVFJVUDc2MVgyNTUxOV9TSEE1MTJdID0ga2V4X2dlbl9jbGllbnQ7Ci0g CXNzaC0+a2V4LT5rZXhbS0VYX0tFTV9NTEtFTTc2OFgyNTUxOV9TSEEyNTZdID0ga2V4X2dlbl9j bGllbnQ7Ci0rCXNzaC0+a2V4LT5rZXhbS0VYX0tFTV9NTEtFTTc2OE5JU1RQMjU2X1NIQTI1Nl0g PSBrZXhfZ2VuX2NsaWVudDsKLSsJc3NoLT5rZXgtPmtleFtLRVhfS0VNX01MS0VNMTAyNE5JU1RQ Mzg0X1NIQTM4NF0gPSBrZXhfZ2VuX2NsaWVudDsKLSAJc3NoLT5rZXgtPnZlcmlmeV9ob3N0X2tl eT0mdmVyaWZ5X2hvc3Rfa2V5X2NhbGxiYWNrOwotIAotICNpZiBkZWZpbmVkKEdTU0FQSSkgJiYg ZGVmaW5lZChXSVRIX09QRU5TU0wpCi1kaWZmIC0tZ2l0IGEvc3NoZC1hdXRoLmMgYi9zc2hkLWF1 dGguYwotaW5kZXggODg1Y2Q4MjgxLi5hNWQyYTFhNmUgMTAwNjQ0Ci0tLS0gYS9zc2hkLWF1dGgu YwotKysrIGIvc3NoZC1hdXRoLmMKLUBAIC04OTMsNiArODkzLDggQEAgZG9fc3NoMl9rZXgoc3Ry dWN0IHNzaCAqc3NoKQotIAlrZXgtPmtleFtLRVhfQzI1NTE5X1NIQTI1Nl0gPSBrZXhfZ2VuX3Nl cnZlcjsKLSAJa2V4LT5rZXhbS0VYX0tFTV9TTlRSVVA3NjFYMjU1MTlfU0hBNTEyXSA9IGtleF9n ZW5fc2VydmVyOwotIAlrZXgtPmtleFtLRVhfS0VNX01MS0VNNzY4WDI1NTE5X1NIQTI1Nl0gPSBr ZXhfZ2VuX3NlcnZlcjsKLSsJa2V4LT5rZXhbS0VYX0tFTV9NTEtFTTc2OE5JU1RQMjU2X1NIQTI1 Nl0gPSBrZXhfZ2VuX3NlcnZlcjsKLSsJa2V4LT5rZXhbS0VYX0tFTV9NTEtFTTEwMjROSVNUUDM4 NF9TSEEzODRdID0ga2V4X2dlbl9zZXJ2ZXI7Ci0gCWtleC0+bG9hZF9ob3N0X3B1YmxpY19rZXk9 JmdldF9ob3N0a2V5X3B1YmxpY19ieV90eXBlOwotIAlrZXgtPmxvYWRfaG9zdF9wcml2YXRlX2tl eT0mZ2V0X2hvc3RrZXlfcHJpdmF0ZV9ieV90eXBlOwotIAlrZXgtPmhvc3Rfa2V5X2luZGV4PSZn ZXRfaG9zdGtleV9pbmRleDsKLS0tIAotMi41My4wCi0KCmRpZmYgLS1naXQgYS8wMDQ4LW9wZW5z c2gtNy4zcDEteDExLW1heC1kaXNwbGF5cy5wYXRjaCBiLzAwNDgtb3BlbnNzaC03LjNwMS14MTEt bWF4LWRpc3BsYXlzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5 NGEyMjYKLS0tIC9kZXYvbnVsbAorKysgYi8wMDQ4LW9wZW5zc2gtNy4zcDEteDExLW1heC1kaXNw bGF5cy5wYXRjaApAQCAtMCwwICsxLDE1MCBAQAorRnJvbSA3NjRmYTdlYmQwZjZkNWY3N2NhNTAx ZDBiZDFmZWVjNzFmODExOTExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRG1pdHJ5 IEJlbHlhdnNraXkgPGJlbGRtaXRAZ21haWwuY29tPgorRGF0ZTogRnJpLCAxMiBEZWMgMjAyNSAx NTozNToxNCArMDEwMAorU3ViamVjdDogW1BBVENIIDQ4LzU0XSBvcGVuc3NoLTcuM3AxLXgxMS1t YXgtZGlzcGxheXMKKworTW92ZSBNQVhfRElTUExBWVMgdG8gYSBjb25maWd1cmF0aW9uIG9wdGlv biAoIzEzNDEzMDIpCistLS0KKyBjaGFubmVscy5jICAgIHwgOSArKysrKystLS0KKyBjaGFubmVs cy5oICAgIHwgMiArLQorIHNlcnZjb25mLmMgICAgfCA1ICsrKysrCisgc2VydmNvbmYuaCAgICB8 IDIgKysKKyBzZXNzaW9uLmMgICAgIHwgNSArKystLQorIHNzaGRfY29uZmlnLjUgfCA3ICsrKysr KysKKyA2IGZpbGVzIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisK K2RpZmYgLS1naXQgYS9jaGFubmVscy5jIGIvY2hhbm5lbHMuYworaW5kZXggYmFlODRlNWY5Li40 OGVjMGFiODMgMTAwNjQ0CistLS0gYS9jaGFubmVscy5jCisrKysgYi9jaGFubmVscy5jCitAQCAt NTA4NSw3ICs1MDg1LDcgQEAgcmR5bmFtaWNfY29ubmVjdF9maW5pc2goc3RydWN0IHNzaCAqc3No LCBDaGFubmVsICpjKQorICAqLworIGludAorIHgxMV9jcmVhdGVfZGlzcGxheV9pbmV0KHN0cnVj dCBzc2ggKnNzaCwgaW50IHgxMV9kaXNwbGF5X29mZnNldCwKKy0gICAgaW50IHgxMV91c2VfbG9j YWxob3N0LCBpbnQgc2luZ2xlX2Nvbm5lY3Rpb24sCisrICAgIGludCB4MTFfdXNlX2xvY2FsaG9z dCwgaW50IHgxMV9tYXhfZGlzcGxheXMsIGludCBzaW5nbGVfY29ubmVjdGlvbiwKKyAgICAgdV9p bnQgKmRpc3BsYXlfbnVtYmVycCwgaW50ICoqY2hhbmlkcykKKyB7CisgCUNoYW5uZWwgKm5jID0g TlVMTDsKK0BAIC01MDk4LDggKzUwOTgsMTEgQEAgeDExX2NyZWF0ZV9kaXNwbGF5X2luZXQoc3Ry dWN0IHNzaCAqc3NoLCBpbnQgeDExX2Rpc3BsYXlfb2Zmc2V0LAorIAkgICAgeDExX2Rpc3BsYXlf b2Zmc2V0ID4gVUlOVDE2X01BWCAtIFgxMV9CQVNFX1BPUlQgLSBNQVhfRElTUExBWVMpCisgCQly ZXR1cm4gLTE7CisgCisrCS8qIFRyeSB0byBiaW5kIHBvcnRzIHN0YXJ0aW5nIGF0IDYwMDArWDEx RGlzcGxheU9mZnNldCAqLworKwl4MTFfbWF4X2Rpc3BsYXlzID0geDExX21heF9kaXNwbGF5cyAr IHgxMV9kaXNwbGF5X29mZnNldDsKKysKKyAJZm9yIChkaXNwbGF5X251bWJlciA9IHgxMV9kaXNw bGF5X29mZnNldDsKKy0JICAgIGRpc3BsYXlfbnVtYmVyIDwgeDExX2Rpc3BsYXlfb2Zmc2V0ICsg TUFYX0RJU1BMQVlTOworKwkgICAgZGlzcGxheV9udW1iZXIgPCB4MTFfbWF4X2Rpc3BsYXlzOwor IAkgICAgZGlzcGxheV9udW1iZXIrKykgeworIAkJcG9ydCA9IFgxMV9CQVNFX1BPUlQgKyBkaXNw bGF5X251bWJlcjsKKyAJCW1lbXNldCgmaGludHMsIDAsIHNpemVvZihoaW50cykpOworQEAgLTUx NjQsNyArNTE2Nyw3IEBAIHgxMV9jcmVhdGVfZGlzcGxheV9pbmV0KHN0cnVjdCBzc2ggKnNzaCwg aW50IHgxMV9kaXNwbGF5X29mZnNldCwKKyAJCWlmIChudW1fc29ja3MgPiAwKQorIAkJCWJyZWFr OworIAl9CistCWlmIChkaXNwbGF5X251bWJlciA+PSB4MTFfZGlzcGxheV9vZmZzZXQgKyBNQVhf RElTUExBWVMpIHsKKysJaWYgKGRpc3BsYXlfbnVtYmVyID49IHgxMV9tYXhfZGlzcGxheXMgfHwg cG9ydCA8IFgxMV9CQVNFX1BPUlQgKSB7CisgCQllcnJvcigiRmFpbGVkIHRvIGFsbG9jYXRlIGlu dGVybmV0LWRvbWFpbiBYMTEgZGlzcGxheSBzb2NrZXQuIik7CisgCQlyZXR1cm4gLTE7CisgCX0K K2RpZmYgLS1naXQgYS9jaGFubmVscy5oIGIvY2hhbm5lbHMuaAoraW5kZXggZjY5MDk2NDk4Li5i YzNiNTJhYTIgMTAwNjQ0CistLS0gYS9jaGFubmVscy5oCisrKysgYi9jaGFubmVscy5oCitAQCAt MzkxLDcgKzM5MSw3IEBAIGludAkgcGVybWl0b3Blbl9wb3J0KGNvbnN0IGNoYXIgKik7CisgCisg dm9pZAkgY2hhbm5lbF9zZXRfeDExX3JlZnVzZV90aW1lKHN0cnVjdCBzc2ggKiwgdGltZV90KTsK KyBpbnQJIHgxMV9jb25uZWN0X2Rpc3BsYXkoc3RydWN0IHNzaCAqKTsKKy1pbnQJIHgxMV9jcmVh dGVfZGlzcGxheV9pbmV0KHN0cnVjdCBzc2ggKiwgaW50LCBpbnQsIGludCwgdV9pbnQgKiwgaW50 ICoqKTsKKytpbnQJIHgxMV9jcmVhdGVfZGlzcGxheV9pbmV0KHN0cnVjdCBzc2ggKiwgaW50LCBp bnQsIGludCwgaW50LCB1X2ludCAqLCBpbnQgKiopOworIHZvaWQJIHgxMV9yZXF1ZXN0X2Zvcndh cmRpbmdfd2l0aF9zcG9vZmluZyhzdHJ1Y3Qgc3NoICosIGludCwKKyAJICAgIGNvbnN0IGNoYXIg KiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCk7CisgaW50ICAgICAgeDExX2NoYW5u ZWxfdXNlZF9yZWNlbnRseShzdHJ1Y3Qgc3NoICpzc2gpOworZGlmZiAtLWdpdCBhL3NlcnZjb25m LmMgYi9zZXJ2Y29uZi5jCitpbmRleCA5MGM1ODM5YTIuLjAzYjg0ZWNiOCAxMDA2NDQKKy0tLSBh L3NlcnZjb25mLmMKKysrKyBiL3NlcnZjb25mLmMKK0BAIC0xNTM1LDYgKzE1MzUsMTAgQEAgcHJv Y2Vzc19zZXJ2ZXJfY29uZmlnX2xpbmVfZGVwdGgoU2VydmVyT3B0aW9ucyAqb3B0aW9ucywgY2hh ciAqbGluZSwKKyAJCQkqaW50cHRyID0gdmFsdWU7CisgCQlicmVhazsKKyAKKysJY2FzZSBzWDEx TWF4RGlzcGxheXM6CisrCQlpbnRwdHIgPSAmb3B0aW9ucy0+eDExX21heF9kaXNwbGF5czsKKysJ CWdvdG8gcGFyc2VfaW50OworKworIAljYXNlIHNYMTFVc2VMb2NhbGhvc3Q6CisgCQlpbnRwdHIg PSAmb3B0aW9ucy0+eDExX3VzZV9sb2NhbGhvc3Q7CisgCQlnb3RvIHBhcnNlX2ZsYWc7CitAQCAt NDI1MCw2ICs0MjU0LDcgQEAgZHVtcF9jb25maWcoU2VydmVyT3B0aW9ucyAqbykKKyAjZW5kaWYK KyAJZHVtcF9jZmdfaW50KHNMb2dpbkdyYWNlVGltZSwgby0+bG9naW5fZ3JhY2VfdGltZSk7Cisg CWR1bXBfY2ZnX2ludChzWDExRGlzcGxheU9mZnNldCwgby0+eDExX2Rpc3BsYXlfb2Zmc2V0KTsK KysJZHVtcF9jZmdfaW50KHNYMTFNYXhEaXNwbGF5cywgby0+eDExX21heF9kaXNwbGF5cyk7Cisg CWR1bXBfY2ZnX2ludChzTWF4QXV0aFRyaWVzLCBvLT5tYXhfYXV0aHRyaWVzKTsKKyAJZHVtcF9j ZmdfaW50KHNNYXhTZXNzaW9ucywgby0+bWF4X3Nlc3Npb25zKTsKKyAJZHVtcF9jZmdfaW50KHND bGllbnRBbGl2ZUludGVydmFsLCBvLT5jbGllbnRfYWxpdmVfaW50ZXJ2YWwpOworZGlmZiAtLWdp dCBhL3NlcnZjb25mLmggYi9zZXJ2Y29uZi5oCitpbmRleCBhOGU5MGU1YTkuLmMxYmJkODJiOCAx MDA2NDQKKy0tLSBhL3NlcnZjb25mLmgKKysrKyBiL3NlcnZjb25mLmgKK0BAIC00MCw2ICs0MCw3 IEBAIHN0cnVjdCBzc2hidWY7CisgCisgI2RlZmluZSBERUZBVUxUX0FVVEhfRkFJTF9NQVgJNgkv KiBEZWZhdWx0IGZvciBNYXhBdXRoVHJpZXMgKi8KKyAjZGVmaW5lIERFRkFVTFRfU0VTU0lPTlNf TUFYCTEwCS8qIERlZmF1bHQgZm9yIE1heFNlc3Npb25zICovCisrI2RlZmluZSBERUZBVUxUX01B WF9ESVNQTEFZUwkxMDAwIC8qIE1heGltdW0gbnVtYmVyIG9mIGZha2UgWDExIGRpc3BsYXlzIHRv IHRyeS4gKi8KKyAKKyAvKiBNYWdpYyBuYW1lIGZvciBpbnRlcm5hbCBzZnRwLXNlcnZlciAqLwor ICNkZWZpbmUgSU5URVJOQUxfU0ZUUF9OQU1FCSJpbnRlcm5hbC1zZnRwIgorQEAgLTE3Miw2ICsx NzMsNyBAQCBTU0hDT05GX0lOVEZMQUcoaWdub3JlX3VzZXJfa25vd25faG9zdHMsIElnbm9yZVVz ZXJLbm93bkhvc3RzLCBTU0hDRkdfR0xPQkFMLCAwLAorIFNTSENPTkZfSU5URkxBRyhwcmludF9t b3RkLCBQcmludE1vdGQsIFNTSENGR19HTE9CQUwsIDEsIFNTSENGR19DT1BZX05PTkUpIFwKKyBT U0hDT05GX0lOVEZMQUcoeDExX2ZvcndhcmRpbmcsIFgxMUZvcndhcmRpbmcsIFNTSENGR19BTEws IDAsIFNTSENGR19DT1BZX01BVENIKSBcCisgU1NIQ09ORl9JTlQoeDExX2Rpc3BsYXlfb2Zmc2V0 LCBYMTFEaXNwbGF5T2Zmc2V0LCBTU0hDRkdfQUxMLCBOVUxMLCBTU0hEX0RFRkFVTFRfWDExX0RJ U1BMQVlfT0ZGU0VULCBTU0hDRkdfQ09QWV9NQVRDSCkgXAorK1NTSENPTkZfSU5UKHgxMV9tYXhf ZGlzcGxheXMsIFgxMU1heERpc3BsYXlzLCBTU0hDRkdfQUxMLCBOVUxMLCBERUZBVUxUX01BWF9E SVNQTEFZUywgU1NIQ0ZHX0NPUFlfTUFUQ0gpIFwKKyBTU0hDT05GX0lOVEZMQUcoeDExX3VzZV9s b2NhbGhvc3QsIFgxMVVzZUxvY2FsaG9zdCwgU1NIQ0ZHX0FMTCwgMSwgU1NIQ0ZHX0NPUFlfTUFU Q0gpIFwKKyBTU0hDT05GX1NUUklORyh4YXV0aF9sb2NhdGlvbiwgWEF1dGhMb2NhdGlvbiwgU1NI Q0ZHX0dMT0JBTCwgU1NIQ0ZHX0NPUFlfTk9ORSkgXAorIFNTSENPTkZfSU5URkxBRyhwZXJtaXRf dHR5LCBQZXJtaXRUVFksIFNTSENGR19BTEwsIDEsIFNTSENGR19DT1BZX01BVENIKSBcCitkaWZm IC0tZ2l0IGEvc2Vzc2lvbi5jIGIvc2Vzc2lvbi5jCitpbmRleCBiZDhkYzgwOGMuLmUyY2YxM2Jk YyAxMDA2NDQKKy0tLSBhL3Nlc3Npb24uYworKysrIGIvc2Vzc2lvbi5jCitAQCAtMjY5Myw4ICsy NjkzLDkgQEAgc2Vzc2lvbl9zZXR1cF94MTFmd2Qoc3RydWN0IHNzaCAqc3NoLCBTZXNzaW9uICpz KQorIAkJcmV0dXJuIDA7CisgCX0KKyAJaWYgKHgxMV9jcmVhdGVfZGlzcGxheV9pbmV0KHNzaCwg b3B0aW9ucy54MTFfZGlzcGxheV9vZmZzZXQsCistCSAgICBvcHRpb25zLngxMV91c2VfbG9jYWxo b3N0LCBzLT5zaW5nbGVfY29ubmVjdGlvbiwKKy0JICAgICZzLT5kaXNwbGF5X251bWJlciwgJnMt PngxMV9jaGFuaWRzKSA9PSAtMSkgeworKwkgICAgb3B0aW9ucy54MTFfdXNlX2xvY2FsaG9zdCwg b3B0aW9ucy54MTFfbWF4X2Rpc3BsYXlzLAorKwkgICAgcy0+c2luZ2xlX2Nvbm5lY3Rpb24sICZz LT5kaXNwbGF5X251bWJlciwKKysJICAgICZzLT54MTFfY2hhbmlkcykgPT0gLTEpIHsKKyAJCWRl YnVnKCJ4MTFfY3JlYXRlX2Rpc3BsYXlfaW5ldCBmYWlsZWQuIik7CisgCQlyZXR1cm4gMDsKKyAJ fQorZGlmZiAtLWdpdCBhL3NzaGRfY29uZmlnLjUgYi9zc2hkX2NvbmZpZy41CitpbmRleCA4ZmVk NThkNWMuLjhjYmU1ZWNiYSAxMDA2NDQKKy0tLSBhL3NzaGRfY29uZmlnLjUKKysrKyBiL3NzaGRf Y29uZmlnLjUKK0BAIC0xNDI3LDYgKzE0MjcsNyBAQCBBdmFpbGFibGUga2V5d29yZHMgYXJlCisg LkNtIFRydXN0ZWRVc2VyQ0FLZXlzICwKKyAuQ20gVW51c2VkQ29ubmVjdGlvblRpbWVvdXQgLAor IC5DbSBYMTFEaXNwbGF5T2Zmc2V0ICwKKysuQ20gWDExTWF4RGlzcGxheXMgLAorIC5DbSBYMTFG b3J3YXJkaW5nCisgYW5kCisgLkNtIFgxMVVzZUxvY2FsaG9zdCAuCitAQCAtMjE0NCw2ICsyMTQ1 LDEyIEBAIFNwZWNpZmllcyB0aGUgZmlyc3QgZGlzcGxheSBudW1iZXIgYXZhaWxhYmxlIGZvcgor IFgxMSBmb3J3YXJkaW5nLgorIFRoaXMgcHJldmVudHMgc3NoZCBmcm9tIGludGVyZmVyaW5nIHdp dGggcmVhbCBYMTEgc2VydmVycy4KKyBUaGUgZGVmYXVsdCBpcyAxMC4KKysuSXQgQ20gWDExTWF4 RGlzcGxheXMKKytTcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGRpc3BsYXlzIGF2YWls YWJsZSBmb3IKKysuWHIgc3NoZCA4IE5zICdzCisrWDExIGZvcndhcmRpbmcuCisrVGhpcyBwcmV2 ZW50cyBzc2hkIGZyb20gZXhoYXVzdGluZyBsb2NhbCBwb3J0cy4KKytUaGUgZGVmYXVsdCBpcyAx MDAwLgorIC5JdCBDbSBYMTFGb3J3YXJkaW5nCisgU3BlY2lmaWVzIHdoZXRoZXIgWDExIGZvcndh cmRpbmcgaXMgcGVybWl0dGVkLgorIFRoZSBhcmd1bWVudCBtdXN0IGJlCistLSAKKzIuNTUuMAor CgpkaWZmIC0tZ2l0IGEvMDA0OS1GaXgtc3NoLXBrY3MxMS1jbGllbnQtaGVscGVyLXRlcm1pbmF0 aW9uLnBhdGNoIGIvMDA0OS1GaXgtc3NoLXBrY3MxMS1jbGllbnQtaGVscGVyLXRlcm1pbmF0aW9u LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiYmZmMTYKLS0tIC9k ZXYvbnVsbAorKysgYi8wMDQ5LUZpeC1zc2gtcGtjczExLWNsaWVudC1oZWxwZXItdGVybWluYXRp b24ucGF0Y2gKQEAgLTAsMCArMSw0OCBAQAorRnJvbSBlZWRjZTg2NWEzMTRjYWNhNjM4MzgzMTNj NWRlMWYyNThiYmZjN2QwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRG1pdHJ5IEJl bHlhdnNraXkgPGJlbGRtaXRAZ21haWwuY29tPgorRGF0ZTogTW9uLCAxMyBBcHIgMjAyNiAxNDo1 OToyNiArMDIwMAorU3ViamVjdDogW1BBVENIIDQ5LzU0XSBGaXggc3NoLXBrY3MxMS1jbGllbnQg aGVscGVyIHRlcm1pbmF0aW9uCisKK0Rvbid0IHRlcm1pbmF0ZSB0aGUgUEtDUyMxMSBoZWxwZXIg d2hlbiBTU0gyX0FHRU5UX0ZBSUxVUkUgaXMgcmV0dXJuZWQuCitUaGlzIGlzIGEgbGVnaXRpbWF0 ZSByZXNwb25zZSB3aGVuIGEgdG9rZW4gcmVxdWlyZXMgUElOIGF1dGhlbnRpY2F0aW9uLgorVGhl IGhlbHBlciBtdXN0IHJlbWFpbiBhY3RpdmUgc28gaXQgY2FuIHByb21wdCBmb3IgUElOIGR1cmlu ZyBhY3R1YWwga2V5IHVzZS4KKworT25seSB0ZXJtaW5hdGUgdGhlIGhlbHBlciBvbiB1bmV4cGVj dGVkIHJlc3BvbnNlcyBvciBjb21tdW5pY2F0aW9uIGZhaWx1cmVzLgorCitDby1BdXRob3JlZC1C eTogQ2xhdWRlIFNvbm5ldCA0LjUgPG5vcmVwbHlAYW50aHJvcGljLmNvbT4KKy0tLQorIHNzaC1w a2NzMTEtY2xpZW50LmMgfCAxOCArKysrKysrKysrKystLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwg MTIgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NzaC1wa2Nz MTEtY2xpZW50LmMgYi9zc2gtcGtjczExLWNsaWVudC5jCitpbmRleCA2ZDc0ZDcyODAuLjMwYTRj ZjVkYyAxMDA2NDQKKy0tLSBhL3NzaC1wa2NzMTEtY2xpZW50LmMKKysrKyBiL3NzaC1wa2NzMTEt Y2xpZW50LmMKK0BAIC00MjksMTIgKzQyOSwxOCBAQCBwa2NzMTFfYWRkX3Byb3ZpZGVyKGNoYXIg Km5hbWUsIGNoYXIgKnBpbiwgc3RydWN0IHNzaGtleSAqKiprZXlzcCwKKyAJCX0KKyAJCS8qIHN1 Y2Nlc3MgKi8KKyAJCXJldCA9IDA7CistCX0gZWxzZSBpZiAodHlwZSA9PSBTU0gyX0FHRU5UX0ZB SUxVUkUpIHsKKy0JCWlmICgociA9IHNzaGJ1Zl9nZXRfdTMyKG1zZywgJm5rZXlzKSkgIT0gMCkK Ky0JCQllcnJvcl9mcihyLCAiZmFpbGVkIHRvIHBhcnNlIGZhaWx1cmUgcmVzcG9uc2UiKTsKKy0J fQorLQlpZiAocmV0ICE9IDApIHsKKy0JCWRlYnVnX2YoIm5vIGtleXM7IHRlcm1pbmF0ZSBoZWxw ZXIiKTsKKysJfSBlbHNlIGlmICh0eXBlID09IFNTSF9BR0VOVF9GQUlMVVJFIHx8IHR5cGUgPT0g U1NIMl9BR0VOVF9GQUlMVVJFKSB7CisrCQlpZiAodHlwZSA9PSBTU0gyX0FHRU5UX0ZBSUxVUkUp IHsKKysJCQlpZiAoKHIgPSBzc2hidWZfZ2V0X3UzMihtc2csICZua2V5cykpICE9IDApCisrCQkJ CWVycm9yX2ZyKHIsICJmYWlsZWQgdG8gcGFyc2UgZmFpbHVyZSByZXNwb25zZSIpOworKwkJfQor KwkJLyogUHJvdmlkZXIgcmVnaXN0ZXJlZCBidXQgcmV0dXJuZWQgbm8ga2V5cyAobWF5IG5lZWQg UElOKSAqLworKwkJLyogRG9uJ3QgdGVybWluYXRlIGhlbHBlciAtIGtlZXAgaXQgZm9yIGxhdGVy IHVzZSAqLworKwkJcmV0ID0gMDsKKysJCW5rZXlzID0gMDsKKysJfSBlbHNlIHsKKysJCS8qIFVu ZXhwZWN0ZWQgcmVzcG9uc2UgLSB0ZXJtaW5hdGUgaGVscGVyICovCisrCQlkZWJ1Z19mKCJ1bmV4 cGVjdGVkIHJlc3BvbnNlICVkOyB0ZXJtaW5hdGUgaGVscGVyIiwgdHlwZSk7CisgCQloZWxwZXJf dGVybWluYXRlKGhlbHBlcik7CisgCX0KKyAJc3NoYnVmX2ZyZWUobXNnKTsKKy0tIAorMi41NS4w CisKCmRpZmYgLS1naXQgYS8wMDQ5LW9wZW5zc2gtNy4zcDEteDExLW1heC1kaXNwbGF5cy5wYXRj aCBiLzAwNDktb3BlbnNzaC03LjNwMS14MTEtbWF4LWRpc3BsYXlzLnBhdGNoCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAzZTk1OTJjLi4wMDAwMDAwCi0tLSBhLzAwNDktb3BlbnNzaC03 LjNwMS14MTEtbWF4LWRpc3BsYXlzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTkyICswLDAg QEAKLUZyb20gZjhhMjQ0NTM2YTc5MjVkNjMwNDcyNDVhMzRlOGYwNjIyMjdhYzU2ZiBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERtaXRyeSBCZWx5YXZza2l5IDxiZWxkbWl0QGdtYWls LmNvbT4KLURhdGU6IEZyaSwgMTIgRGVjIDIwMjUgMTU6MzU6MTQgKzAxMDAKLVN1YmplY3Q6IFtQ QVRDSCA0OS81NF0gb3BlbnNzaC03LjNwMS14MTEtbWF4LWRpc3BsYXlzCi0KLU1vdmUgTUFYX0RJ U1BMQVlTIHRvIGEgY29uZmlndXJhdGlvbiBvcHRpb24gKCMxMzQxMzAyKQotLS0tCi0gY2hhbm5l bHMuYyAgICB8ICA5ICsrKysrKy0tLQotIGNoYW5uZWxzLmggICAgfCAgMiArLQotIHNlcnZjb25m LmMgICAgfCAxMiArKysrKysrKysrKy0KLSBzZXJ2Y29uZi5oICAgIHwgIDIgKysKLSBzZXNzaW9u LmMgICAgIHwgIDUgKysrLS0KLSBzc2hkX2NvbmZpZy41IHwgIDcgKysrKysrKwotIDYgZmlsZXMg Y2hhbmdlZCwgMzAgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBh L2NoYW5uZWxzLmMgYi9jaGFubmVscy5jCi1pbmRleCAxNGQ1MzZkNjQuLjczZWFjYzVmNiAxMDA2 NDQKLS0tLSBhL2NoYW5uZWxzLmMKLSsrKyBiL2NoYW5uZWxzLmMKLUBAIC01MDc2LDcgKzUwNzYs NyBAQCByZHluYW1pY19jb25uZWN0X2ZpbmlzaChzdHJ1Y3Qgc3NoICpzc2gsIENoYW5uZWwgKmMp Ci0gICovCi0gaW50Ci0geDExX2NyZWF0ZV9kaXNwbGF5X2luZXQoc3RydWN0IHNzaCAqc3NoLCBp bnQgeDExX2Rpc3BsYXlfb2Zmc2V0LAotLSAgICBpbnQgeDExX3VzZV9sb2NhbGhvc3QsIGludCBz aW5nbGVfY29ubmVjdGlvbiwKLSsgICAgaW50IHgxMV91c2VfbG9jYWxob3N0LCBpbnQgeDExX21h eF9kaXNwbGF5cywgaW50IHNpbmdsZV9jb25uZWN0aW9uLAotICAgICB1X2ludCAqZGlzcGxheV9u dW1iZXJwLCBpbnQgKipjaGFuaWRzKQotIHsKLSAJQ2hhbm5lbCAqbmMgPSBOVUxMOwotQEAgLTUw ODksOCArNTA4OSwxMSBAQCB4MTFfY3JlYXRlX2Rpc3BsYXlfaW5ldChzdHJ1Y3Qgc3NoICpzc2gs IGludCB4MTFfZGlzcGxheV9vZmZzZXQsCi0gCSAgICB4MTFfZGlzcGxheV9vZmZzZXQgPiBVSU5U MTZfTUFYIC0gWDExX0JBU0VfUE9SVCAtIE1BWF9ESVNQTEFZUykKLSAJCXJldHVybiAtMTsKLSAK LSsJLyogVHJ5IHRvIGJpbmQgcG9ydHMgc3RhcnRpbmcgYXQgNjAwMCtYMTFEaXNwbGF5T2Zmc2V0 ICovCi0rCXgxMV9tYXhfZGlzcGxheXMgPSB4MTFfbWF4X2Rpc3BsYXlzICsgeDExX2Rpc3BsYXlf b2Zmc2V0OwotKwotIAlmb3IgKGRpc3BsYXlfbnVtYmVyID0geDExX2Rpc3BsYXlfb2Zmc2V0Owot LQkgICAgZGlzcGxheV9udW1iZXIgPCB4MTFfZGlzcGxheV9vZmZzZXQgKyBNQVhfRElTUExBWVM7 Ci0rCSAgICBkaXNwbGF5X251bWJlciA8IHgxMV9tYXhfZGlzcGxheXM7Ci0gCSAgICBkaXNwbGF5 X251bWJlcisrKSB7Ci0gCQlwb3J0ID0gWDExX0JBU0VfUE9SVCArIGRpc3BsYXlfbnVtYmVyOwot IAkJbWVtc2V0KCZoaW50cywgMCwgc2l6ZW9mKGhpbnRzKSk7Ci1AQCAtNTE1NSw3ICs1MTU4LDcg QEAgeDExX2NyZWF0ZV9kaXNwbGF5X2luZXQoc3RydWN0IHNzaCAqc3NoLCBpbnQgeDExX2Rpc3Bs YXlfb2Zmc2V0LAotIAkJaWYgKG51bV9zb2NrcyA+IDApCi0gCQkJYnJlYWs7Ci0gCX0KLS0JaWYg KGRpc3BsYXlfbnVtYmVyID49IHgxMV9kaXNwbGF5X29mZnNldCArIE1BWF9ESVNQTEFZUykgewot KwlpZiAoZGlzcGxheV9udW1iZXIgPj0geDExX21heF9kaXNwbGF5cyB8fCBwb3J0IDwgWDExX0JB U0VfUE9SVCApIHsKLSAJCWVycm9yKCJGYWlsZWQgdG8gYWxsb2NhdGUgaW50ZXJuZXQtZG9tYWlu IFgxMSBkaXNwbGF5IHNvY2tldC4iKTsKLSAJCXJldHVybiAtMTsKLSAJfQotZGlmZiAtLWdpdCBh L2NoYW5uZWxzLmggYi9jaGFubmVscy5oCi1pbmRleCAyZmNmOWY4Y2IuLjdiZjM3YjA1MyAxMDA2 NDQKLS0tLSBhL2NoYW5uZWxzLmgKLSsrKyBiL2NoYW5uZWxzLmgKLUBAIC0zOTAsNyArMzkwLDcg QEAgaW50CSBwZXJtaXRvcGVuX3BvcnQoY29uc3QgY2hhciAqKTsKLSAKLSB2b2lkCSBjaGFubmVs X3NldF94MTFfcmVmdXNlX3RpbWUoc3RydWN0IHNzaCAqLCB0aW1lX3QpOwotIGludAkgeDExX2Nv bm5lY3RfZGlzcGxheShzdHJ1Y3Qgc3NoICopOwotLWludAkgeDExX2NyZWF0ZV9kaXNwbGF5X2lu ZXQoc3RydWN0IHNzaCAqLCBpbnQsIGludCwgaW50LCB1X2ludCAqLCBpbnQgKiopOwotK2ludAkg eDExX2NyZWF0ZV9kaXNwbGF5X2luZXQoc3RydWN0IHNzaCAqLCBpbnQsIGludCwgaW50LCBpbnQs IHVfaW50ICosIGludCAqKik7Ci0gdm9pZAkgeDExX3JlcXVlc3RfZm9yd2FyZGluZ193aXRoX3Nw b29maW5nKHN0cnVjdCBzc2ggKiwgaW50LAotIAkgICAgY29uc3QgY2hhciAqLCBjb25zdCBjaGFy ICosIGNvbnN0IGNoYXIgKiwgaW50KTsKLSBpbnQgICAgICB4MTFfY2hhbm5lbF91c2VkX3JlY2Vu dGx5KHN0cnVjdCBzc2ggKnNzaCk7Ci1kaWZmIC0tZ2l0IGEvc2VydmNvbmYuYyBiL3NlcnZjb25m LmMKLWluZGV4IDI2OGMwOWQxYy4uZjRkNmIxOWRkIDEwMDY0NAotLS0tIGEvc2VydmNvbmYuYwot KysrIGIvc2VydmNvbmYuYwotQEAgLTExOCw2ICsxMTgsNyBAQCBpbml0aWFsaXplX3NlcnZlcl9v cHRpb25zKFNlcnZlck9wdGlvbnMgKm9wdGlvbnMpCi0gCW9wdGlvbnMtPnByaW50X2xhc3Rsb2cg PSAtMTsKLSAJb3B0aW9ucy0+eDExX2ZvcndhcmRpbmcgPSAtMTsKLSAJb3B0aW9ucy0+eDExX2Rp c3BsYXlfb2Zmc2V0ID0gLTE7Ci0rCW9wdGlvbnMtPngxMV9tYXhfZGlzcGxheXMgPSAtMTsKLSAJ b3B0aW9ucy0+eDExX3VzZV9sb2NhbGhvc3QgPSAtMTsKLSAJb3B0aW9ucy0+cGVybWl0X3R0eSA9 IC0xOwotIAlvcHRpb25zLT5wZXJtaXRfdXNlcl9yYyA9IC0xOwotQEAgLTM1OSw2ICszNjAsOCBA QCBmaWxsX2RlZmF1bHRfc2VydmVyX29wdGlvbnMoU2VydmVyT3B0aW9ucyAqb3B0aW9ucykKLSAJ CW9wdGlvbnMtPngxMV9mb3J3YXJkaW5nID0gMDsKLSAJaWYgKG9wdGlvbnMtPngxMV9kaXNwbGF5 X29mZnNldCA9PSAtMSkKLSAJCW9wdGlvbnMtPngxMV9kaXNwbGF5X29mZnNldCA9IDEwOwotKwlp ZiAob3B0aW9ucy0+eDExX21heF9kaXNwbGF5cyA9PSAtMSkKLSsJCW9wdGlvbnMtPngxMV9tYXhf ZGlzcGxheXMgPSBERUZBVUxUX01BWF9ESVNQTEFZUzsKLSAJaWYgKG9wdGlvbnMtPngxMV91c2Vf bG9jYWxob3N0ID09IC0xKQotIAkJb3B0aW9ucy0+eDExX3VzZV9sb2NhbGhvc3QgPSAxOwotIAlp ZiAob3B0aW9ucy0+eGF1dGhfbG9jYXRpb24gPT0gTlVMTCkKLUBAIC01ODgsNyArNTkxLDcgQEAg dHlwZWRlZiBlbnVtIHsKLSAJc0tlcmJlcm9zR2V0QUZTVG9rZW4sIHNLZXJiZXJvc1VuaXF1ZUND YWNoZSwgc0tlcmJlcm9zVXNlS3VzZXJvaywgc1Bhc3N3b3JkQXV0aGVudGljYXRpb24sCi0gCXNL YmRJbnRlcmFjdGl2ZUF1dGhlbnRpY2F0aW9uLCBzTGlzdGVuQWRkcmVzcywgc0FkZHJlc3NGYW1p bHksCi0gCXNQcmludE1vdGQsIHNQcmludExhc3RMb2csIHNJZ25vcmVSaG9zdHMsCi0tCXNYMTFG b3J3YXJkaW5nLCBzWDExRGlzcGxheU9mZnNldCwgc1gxMVVzZUxvY2FsaG9zdCwKLSsJc1gxMUZv cndhcmRpbmcsIHNYMTFEaXNwbGF5T2Zmc2V0LCBzWDExTWF4RGlzcGxheXMsIHNYMTFVc2VMb2Nh bGhvc3QsCi0gCXNQZXJtaXRUVFksIHNTdHJpY3RNb2Rlcywgc0VtcHR5UGFzc3dkLCBzVENQS2Vl cEFsaXZlLAotIAlzUGVybWl0VXNlckVudmlyb25tZW50LCBzQWxsb3dUY3BGb3J3YXJkaW5nLCBz Q29tcHJlc3Npb24sCi0gCXNSZWtleUxpbWl0LCBzQWxsb3dVc2Vycywgc0RlbnlVc2Vycywgc0Fs bG93R3JvdXBzLCBzRGVueUdyb3VwcywKLUBAIC03MzAsNiArNzMzLDcgQEAgc3RhdGljIHN0cnVj dCB7Ci0gCXsgImlnbm9yZXVzZXJrbm93bmhvc3RzIiwgc0lnbm9yZVVzZXJLbm93bkhvc3RzLCBT U0hDRkdfR0xPQkFMIH0sCi0gCXsgIngxMWZvcndhcmRpbmciLCBzWDExRm9yd2FyZGluZywgU1NI Q0ZHX0FMTCB9LAotIAl7ICJ4MTFkaXNwbGF5b2Zmc2V0Iiwgc1gxMURpc3BsYXlPZmZzZXQsIFNT SENGR19BTEwgfSwKLSsJeyAieDExbWF4ZGlzcGxheXMiLCBzWDExTWF4RGlzcGxheXMsIFNTSENG R19BTEwgfSwKLSAJeyAieDExdXNlbG9jYWxob3N0Iiwgc1gxMVVzZUxvY2FsaG9zdCwgU1NIQ0ZH X0FMTCB9LAotIAl7ICJ4YXV0aGxvY2F0aW9uIiwgc1hBdXRoTG9jYXRpb24sIFNTSENGR19HTE9C QUwgfSwKLSAJeyAic3RyaWN0bW9kZXMiLCBzU3RyaWN0TW9kZXMsIFNTSENGR19HTE9CQUwgfSwK LUBAIC0xNzgxLDYgKzE3ODUsMTAgQEAgcHJvY2Vzc19zZXJ2ZXJfY29uZmlnX2xpbmVfZGVwdGgo U2VydmVyT3B0aW9ucyAqb3B0aW9ucywgY2hhciAqbGluZSwKLSAJCQkqaW50cHRyID0gdmFsdWU7 Ci0gCQlicmVhazsKLSAKLSsJY2FzZSBzWDExTWF4RGlzcGxheXM6Ci0rCQlpbnRwdHIgPSAmb3B0 aW9ucy0+eDExX21heF9kaXNwbGF5czsKLSsJCWdvdG8gcGFyc2VfaW50OwotKwotIAljYXNlIHNY MTFVc2VMb2NhbGhvc3Q6Ci0gCQlpbnRwdHIgPSAmb3B0aW9ucy0+eDExX3VzZV9sb2NhbGhvc3Q7 Ci0gCQlnb3RvIHBhcnNlX2ZsYWc7Ci1AQCAtMzA2NSw2ICszMDczLDcgQEAgY29weV9zZXRfc2Vy dmVyX29wdGlvbnMoU2VydmVyT3B0aW9ucyAqZHN0LCBTZXJ2ZXJPcHRpb25zICpzcmMsIGludCBw cmVhdXRoKQotIAlNX0NQX0lOVE9QVChmd2Rfb3B0cy5zdHJlYW1sb2NhbF9iaW5kX3VubGluayk7 Ci0gCU1fQ1BfSU5UT1BUKHgxMV9kaXNwbGF5X29mZnNldCk7Ci0gCU1fQ1BfSU5UT1BUKHgxMV9m b3J3YXJkaW5nKTsKLSsJTV9DUF9JTlRPUFQoeDExX21heF9kaXNwbGF5cyk7Ci0gCU1fQ1BfSU5U T1BUKHgxMV91c2VfbG9jYWxob3N0KTsKLSAJTV9DUF9JTlRPUFQocGVybWl0X3R0eSk7Ci0gCU1f Q1BfSU5UT1BUKHBlcm1pdF91c2VyX3JjKTsKLUBAIC0zMzYxLDYgKzMzNzAsNyBAQCBkdW1wX2Nv bmZpZyhTZXJ2ZXJPcHRpb25zICpvKQotICNlbmRpZgotIAlkdW1wX2NmZ19pbnQoc0xvZ2luR3Jh Y2VUaW1lLCBvLT5sb2dpbl9ncmFjZV90aW1lKTsKLSAJZHVtcF9jZmdfaW50KHNYMTFEaXNwbGF5 T2Zmc2V0LCBvLT54MTFfZGlzcGxheV9vZmZzZXQpOwotKwlkdW1wX2NmZ19pbnQoc1gxMU1heERp c3BsYXlzLCBvLT54MTFfbWF4X2Rpc3BsYXlzKTsKLSAJZHVtcF9jZmdfaW50KHNNYXhBdXRoVHJp ZXMsIG8tPm1heF9hdXRodHJpZXMpOwotIAlkdW1wX2NmZ19pbnQoc01heFNlc3Npb25zLCBvLT5t YXhfc2Vzc2lvbnMpOwotIAlkdW1wX2NmZ19pbnQoc0NsaWVudEFsaXZlSW50ZXJ2YWwsIG8tPmNs aWVudF9hbGl2ZV9pbnRlcnZhbCk7Ci1kaWZmIC0tZ2l0IGEvc2VydmNvbmYuaCBiL3NlcnZjb25m LmgKLWluZGV4IDc4MWYyMGM2MS4uZmVhMjU5NDdlIDEwMDY0NAotLS0tIGEvc2VydmNvbmYuaAot KysrIGIvc2VydmNvbmYuaAotQEAgLTM4LDYgKzM4LDcgQEAKLSAKLSAjZGVmaW5lIERFRkFVTFRf QVVUSF9GQUlMX01BWAk2CS8qIERlZmF1bHQgZm9yIE1heEF1dGhUcmllcyAqLwotICNkZWZpbmUg REVGQVVMVF9TRVNTSU9OU19NQVgJMTAJLyogRGVmYXVsdCBmb3IgTWF4U2Vzc2lvbnMgKi8KLSsj ZGVmaW5lIERFRkFVTFRfTUFYX0RJU1BMQVlTCTEwMDAgLyogTWF4aW11bSBudW1iZXIgb2YgZmFr ZSBYMTEgZGlzcGxheXMgdG8gdHJ5LiAqLwotIAotIC8qIE1hZ2ljIG5hbWUgZm9yIGludGVybmFs IHNmdHAtc2VydmVyICovCi0gI2RlZmluZSBJTlRFUk5BTF9TRlRQX05BTUUJImludGVybmFsLXNm dHAiCi1AQCAtMTE1LDYgKzExNiw3IEBAIHR5cGVkZWYgc3RydWN0IHsKLSAJaW50ICAgICB4MTFf Zm9yd2FyZGluZzsJLyogSWYgdHJ1ZSwgcGVybWl0IGluZXQgKHNwb29maW5nKSBYMTEgZndkLiAq LwotIAlpbnQgICAgIHgxMV9kaXNwbGF5X29mZnNldDsJLyogV2hhdCBESVNQTEFZIG51bWJlciB0 byBzdGFydAotIAkJCQkJICogc2VhcmNoaW5nIGF0ICovCi0rCWludCAJeDExX21heF9kaXNwbGF5 czsgLyogTnVtYmVyIG9mIGRpc3BsYXlzIHRvIHNlYXJjaCAqLwotIAlpbnQgICAgIHgxMV91c2Vf bG9jYWxob3N0OwkvKiBJZiB0cnVlLCB1c2UgbG9jYWxob3N0IGZvciBmYWtlIFgxMSBzZXJ2ZXIu ICovCi0gCWNoYXIgICAqeGF1dGhfbG9jYXRpb247CS8qIExvY2F0aW9uIG9mIHhhdXRoIHByb2dy YW0gKi8KLSAJaW50CXBlcm1pdF90dHk7CS8qIElmIGZhbHNlLCBkZW55IHB0eSBhbGxvY2F0aW9u ICovCi1kaWZmIC0tZ2l0IGEvc2Vzc2lvbi5jIGIvc2Vzc2lvbi5jCi1pbmRleCAxYTdmNWNhN2Eu LjUyZjg2ZmQ0NiAxMDA2NDQKLS0tLSBhL3Nlc3Npb24uYwotKysrIGIvc2Vzc2lvbi5jCi1AQCAt MjY4OSw4ICsyNjg5LDkgQEAgc2Vzc2lvbl9zZXR1cF94MTFmd2Qoc3RydWN0IHNzaCAqc3NoLCBT ZXNzaW9uICpzKQotIAkJcmV0dXJuIDA7Ci0gCX0KLSAJaWYgKHgxMV9jcmVhdGVfZGlzcGxheV9p bmV0KHNzaCwgb3B0aW9ucy54MTFfZGlzcGxheV9vZmZzZXQsCi0tCSAgICBvcHRpb25zLngxMV91 c2VfbG9jYWxob3N0LCBzLT5zaW5nbGVfY29ubmVjdGlvbiwKLS0JICAgICZzLT5kaXNwbGF5X251 bWJlciwgJnMtPngxMV9jaGFuaWRzKSA9PSAtMSkgewotKwkgICAgb3B0aW9ucy54MTFfdXNlX2xv Y2FsaG9zdCwgb3B0aW9ucy54MTFfbWF4X2Rpc3BsYXlzLAotKwkgICAgcy0+c2luZ2xlX2Nvbm5l Y3Rpb24sICZzLT5kaXNwbGF5X251bWJlciwKLSsJICAgICZzLT54MTFfY2hhbmlkcykgPT0gLTEp IHsKLSAJCWRlYnVnKCJ4MTFfY3JlYXRlX2Rpc3BsYXlfaW5ldCBmYWlsZWQuIik7Ci0gCQlyZXR1 cm4gMDsKLSAJfQotZGlmZiAtLWdpdCBhL3NzaGRfY29uZmlnLjUgYi9zc2hkX2NvbmZpZy41Ci1p bmRleCA0Y2E4MDAxNmMuLmMyODIyMDA3NyAxMDA2NDQKLS0tLSBhL3NzaGRfY29uZmlnLjUKLSsr KyBiL3NzaGRfY29uZmlnLjUKLUBAIC0xNDE2LDYgKzE0MTYsNyBAQCBBdmFpbGFibGUga2V5d29y ZHMgYXJlCi0gLkNtIFRydXN0ZWRVc2VyQ0FLZXlzICwKLSAuQ20gVW51c2VkQ29ubmVjdGlvblRp bWVvdXQgLAotIC5DbSBYMTFEaXNwbGF5T2Zmc2V0ICwKLSsuQ20gWDExTWF4RGlzcGxheXMgLAot IC5DbSBYMTFGb3J3YXJkaW5nCi0gYW5kCi0gLkNtIFgxMVVzZUxvY2FsaG9zdCAuCi1AQCAtMjEz Myw2ICsyMTM0LDEyIEBAIFNwZWNpZmllcyB0aGUgZmlyc3QgZGlzcGxheSBudW1iZXIgYXZhaWxh YmxlIGZvcgotIFgxMSBmb3J3YXJkaW5nLgotIFRoaXMgcHJldmVudHMgc3NoZCBmcm9tIGludGVy ZmVyaW5nIHdpdGggcmVhbCBYMTEgc2VydmVycy4KLSBUaGUgZGVmYXVsdCBpcyAxMC4KLSsuSXQg Q20gWDExTWF4RGlzcGxheXMKLStTcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGRpc3Bs YXlzIGF2YWlsYWJsZSBmb3IKLSsuWHIgc3NoZCA4IE5zICdzCi0rWDExIGZvcndhcmRpbmcuCi0r VGhpcyBwcmV2ZW50cyBzc2hkIGZyb20gZXhoYXVzdGluZyBsb2NhbCBwb3J0cy4KLStUaGUgZGVm YXVsdCBpcyAxMDAwLgotIC5JdCBDbSBYMTFGb3J3YXJkaW5nCi0gU3BlY2lmaWVzIHdoZXRoZXIg WDExIGZvcndhcmRpbmcgaXMgcGVybWl0dGVkLgotIFRoZSBhcmd1bWVudCBtdXN0IGJlCi0tLSAK LTIuNTMuMAotCgpkaWZmIC0tZ2l0IGEvMDA1MC1GaXgtc3NoLXBrY3MxMS1jbGllbnQtaGVscGVy LXRlcm1pbmF0aW9uLnBhdGNoIGIvMDA1MC1GaXgtc3NoLXBrY3MxMS1jbGllbnQtaGVscGVyLXRl cm1pbmF0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjg1NjIwLi4w MDAwMDAwCi0tLSBhLzAwNTAtRml4LXNzaC1wa2NzMTEtY2xpZW50LWhlbHBlci10ZXJtaW5hdGlv bi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZyb20gZjlmNjhlM2Q1ZTFk NGJmMmU5NDVhMTg5YzY2ODhiMjdhYmY5ODEwYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZy b206IERtaXRyeSBCZWx5YXZza2l5IDxiZWxkbWl0QGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTMg QXByIDIwMjYgMTQ6NTk6MjYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCA1MC81NF0gRml4IHNzaC1w a2NzMTEtY2xpZW50IGhlbHBlciB0ZXJtaW5hdGlvbgotCi1Eb24ndCB0ZXJtaW5hdGUgdGhlIFBL Q1MjMTEgaGVscGVyIHdoZW4gU1NIMl9BR0VOVF9GQUlMVVJFIGlzIHJldHVybmVkLgotVGhpcyBp cyBhIGxlZ2l0aW1hdGUgcmVzcG9uc2Ugd2hlbiBhIHRva2VuIHJlcXVpcmVzIFBJTiBhdXRoZW50 aWNhdGlvbi4KLVRoZSBoZWxwZXIgbXVzdCByZW1haW4gYWN0aXZlIHNvIGl0IGNhbiBwcm9tcHQg Zm9yIFBJTiBkdXJpbmcgYWN0dWFsIGtleSB1c2UuCi0KLU9ubHkgdGVybWluYXRlIHRoZSBoZWxw ZXIgb24gdW5leHBlY3RlZCByZXNwb25zZXMgb3IgY29tbXVuaWNhdGlvbiBmYWlsdXJlcy4KLQot Q28tQXV0aG9yZWQtQnk6IENsYXVkZSBTb25uZXQgNC41IDxub3JlcGx5QGFudGhyb3BpYy5jb20+ Ci0tLS0KLSBzc2gtcGtjczExLWNsaWVudC5jIHwgMTggKysrKysrKysrKysrLS0tLS0tCi0gMSBm aWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1n aXQgYS9zc2gtcGtjczExLWNsaWVudC5jIGIvc3NoLXBrY3MxMS1jbGllbnQuYwotaW5kZXggNmQ3 NGQ3MjgwLi4zMGE0Y2Y1ZGMgMTAwNjQ0Ci0tLS0gYS9zc2gtcGtjczExLWNsaWVudC5jCi0rKysg Yi9zc2gtcGtjczExLWNsaWVudC5jCi1AQCAtNDI5LDEyICs0MjksMTggQEAgcGtjczExX2FkZF9w cm92aWRlcihjaGFyICpuYW1lLCBjaGFyICpwaW4sIHN0cnVjdCBzc2hrZXkgKioqa2V5c3AsCi0g CQl9Ci0gCQkvKiBzdWNjZXNzICovCi0gCQlyZXQgPSAwOwotLQl9IGVsc2UgaWYgKHR5cGUgPT0g U1NIMl9BR0VOVF9GQUlMVVJFKSB7Ci0tCQlpZiAoKHIgPSBzc2hidWZfZ2V0X3UzMihtc2csICZu a2V5cykpICE9IDApCi0tCQkJZXJyb3JfZnIociwgImZhaWxlZCB0byBwYXJzZSBmYWlsdXJlIHJl c3BvbnNlIik7Ci0tCX0KLS0JaWYgKHJldCAhPSAwKSB7Ci0tCQlkZWJ1Z19mKCJubyBrZXlzOyB0 ZXJtaW5hdGUgaGVscGVyIik7Ci0rCX0gZWxzZSBpZiAodHlwZSA9PSBTU0hfQUdFTlRfRkFJTFVS RSB8fCB0eXBlID09IFNTSDJfQUdFTlRfRkFJTFVSRSkgewotKwkJaWYgKHR5cGUgPT0gU1NIMl9B R0VOVF9GQUlMVVJFKSB7Ci0rCQkJaWYgKChyID0gc3NoYnVmX2dldF91MzIobXNnLCAmbmtleXMp KSAhPSAwKQotKwkJCQllcnJvcl9mcihyLCAiZmFpbGVkIHRvIHBhcnNlIGZhaWx1cmUgcmVzcG9u c2UiKTsKLSsJCX0KLSsJCS8qIFByb3ZpZGVyIHJlZ2lzdGVyZWQgYnV0IHJldHVybmVkIG5vIGtl eXMgKG1heSBuZWVkIFBJTikgKi8KLSsJCS8qIERvbid0IHRlcm1pbmF0ZSBoZWxwZXIgLSBrZWVw IGl0IGZvciBsYXRlciB1c2UgKi8KLSsJCXJldCA9IDA7Ci0rCQlua2V5cyA9IDA7Ci0rCX0gZWxz ZSB7Ci0rCQkvKiBVbmV4cGVjdGVkIHJlc3BvbnNlIC0gdGVybWluYXRlIGhlbHBlciAqLwotKwkJ ZGVidWdfZigidW5leHBlY3RlZCByZXNwb25zZSAlZDsgdGVybWluYXRlIGhlbHBlciIsIHR5cGUp OwotIAkJaGVscGVyX3Rlcm1pbmF0ZShoZWxwZXIpOwotIAl9Ci0gCXNzaGJ1Zl9mcmVlKG1zZyk7 Ci0tLSAKLTIuNTMuMAotCgpkaWZmIC0tZ2l0IGEvMDA1MC1vcGVuc3NoLTEwLjJwMS1wYW0tYXV0 aC5wYXRjaCBiLzAwNTAtb3BlbnNzaC0xMC4ycDEtcGFtLWF1dGgucGF0Y2gKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWY2OTU2YQotLS0gL2Rldi9udWxsCisrKyBiLzAwNTAt b3BlbnNzaC0xMC4ycDEtcGFtLWF1dGgucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSBlMDAy ZGE1YWZjMjQ1ZTNlZDY3ZjgzMTliZDFjNmRlZDgzZTk1OWE0IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQorRnJvbTogRG1pdHJ5IEJlbHlhdnNraXkgPGJlbGRtaXRAZ21haWwuY29tPgorRGF0ZTog U3VuLCAxMiBBcHIgMjAyNiAxMjoyNTowNCArMDIwMAorU3ViamVjdDogW1BBVENIIDUwLzU0XSBv cGVuc3NoLTEwLjJwMS1wYW0tYXV0aAorCitodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hv d19idWcuY2dpP2lkPTI0MjM5MDAKKworQ28tQXV0aG9yZWQtQnk6IENsYXVkZSBTb25uZXQgNC41 IDxub3JlcGx5QGFudGhyb3BpYy5jb20+CistLS0KKyBhdXRoLXBhbS5jIHwgMTAgKysrKystLS0t LQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2Rp ZmYgLS1naXQgYS9hdXRoLXBhbS5jIGIvYXV0aC1wYW0uYworaW5kZXggZDNkY2QwMzdiLi5hYWFk MTY3NjUgMTAwNjQ0CistLS0gYS9hdXRoLXBhbS5jCisrKysgYi9hdXRoLXBhbS5jCitAQCAtNDU1 LDYgKzQ1NSw3IEBAIHN0YXRpYyBpbnQKKyBjaGVja19wYW1fdXNlcihBdXRoY3R4dCAqYXV0aGN0 eHQpCisgeworIAljb25zdCBjaGFyICpwYW1fdXNlcjsKKysJY29uc3Qgc3RydWN0IHBhc3N3ZCAq cGFtX3B3OworIAorIAlpZiAoYXV0aGN0eHQgPT0gTlVMTCB8fCBhdXRoY3R4dC0+cHcgPT0gTlVM TCB8fAorIAkgICAgYXV0aGN0eHQtPnB3LT5wd19uYW1lID09IE5VTEwpCitAQCAtNDY5LDExICs0 NzAsMTAgQEAgY2hlY2tfcGFtX3VzZXIoQXV0aGN0eHQgKmF1dGhjdHh0KQorIAkJcmV0dXJuIFBB TV9VU0VSX1VOS05PV047CisgCX0KKyAKKy0JaWYgKHNzaHBhbV9pbml0aWFsX3VzZXIgPT0gTlVM TCkKKy0JCWZhdGFsX2YoImludGVybmFsIGVycm9yOiBzc2hwYW1faW5pdGlhbF91c2VyIE5VTEwi KTsKKy0JaWYgKHN0cmNtcChzc2hwYW1faW5pdGlhbF91c2VyLCBwYW1fdXNlcikgIT0gMCkgewor LQkJZXJyb3JfZigiUEFNIHVzZXIgXCIlc1wiIGRvZXMgbm90IG1hdGNoIHByZXZpb3VzIFwiJXNc IiIsCistCQkgICAgICBwYW1fdXNlciwgc3NocGFtX2luaXRpYWxfdXNlcik7CisrCXBhbV9wdyA9 IGdldHB3bmFtKHBhbV91c2VyKTsKKysJaWYgKHBhbV9wdyA9PSBOVUxMIHx8IHBhbV9wdy0+cHdf dWlkICE9IGF1dGhjdHh0LT5wdy0+cHdfdWlkKSB7CisrCQlkZWJ1ZygiUEFNIHVzZXIgXCIlc1wi IGRvZXMgbm90IG1hdGNoIGV4cGVjdGVkIFwiJXNcIiIsCisrCQkgICAgICBwYW1fdXNlciwgYXV0 aGN0eHQtPnB3LT5wd19uYW1lKTsKKyAJCXJldHVybiBQQU1fVVNFUl9VTktOT1dOOworIAl9Cisg CXJldHVybiBQQU1fU1VDQ0VTUzsKKy0tIAorMi41NS4wCisKCmRpZmYgLS1naXQgYS8wMDUxLWdz c2FwaS1zNHUucGF0Y2ggYi8wMDUxLWdzc2FwaS1zNHUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uNDE2ZTYwOQotLS0gL2Rldi9udWxsCisrKyBiLzAwNTEtZ3NzYXBp LXM0dS5wYXRjaApAQCAtMCwwICsxLDEwMjcgQEAKK0Zyb20gYTk1MmM0Y2ZhNTc5NTUxZmFkYWU5 MWRkMjI0ZjQzZjc2ODk0MzE2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERtaXRy eSBCZWx5YXZza2l5IDxiZWxkbWl0QGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMTIgQXByIDIwMjYg MTI6MjU6MjEgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCA1MS81NF0gZ3NzYXBpLXM0dQorCitDby1B dXRob3JlZC1CeTogQ2xhdWRlIFNvbm5ldCA0LjUgPG5vcmVwbHlAYW50aHJvcGljLmNvbT4KKy0t LQorIGF1dGgta3JiNS5jICAgICB8ICAxMyArKworIGNvbmZpZ3VyZS5hYyAgICB8ICAxMCArLQor IGdzcy1zZXJ2LWtyYjUuYyB8IDIyNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgZ3Nz LXNlcnYuYyAgICAgIHwgMzg4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLQorIHNlcnZjb25mLmMgICAgICB8ICA0NiArKysrKysKKyBzZXJ2Y29uZi5oICAg ICAgfCAgIDggKy0KKyBzc2gtZ3NzLmggICAgICAgfCAgMTMgKysKKyBzc2hkLXNlc3Npb24uYyAg fCAgOTggKysrKysrKysrKysrCisgc3NoZF9jb25maWcuNSAgIHwgIDcwICsrKysrKysrKworIDkg ZmlsZXMgY2hhbmdlZCwgODUxIGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQorCitkaWZm IC0tZ2l0IGEvYXV0aC1rcmI1LmMgYi9hdXRoLWtyYjUuYworaW5kZXggMjg3YmRkMzVhLi43ZDRm YmNjM2QgMTAwNjQ0CistLS0gYS9hdXRoLWtyYjUuYworKysrIGIvYXV0aC1rcmI1LmMKK0BAIC00 NjMsNiArNDYzLDE5IEBAIHNzaF9rcmI1X2NjX25ld191bmlxdWUoa3JiNV9jb250ZXh0IGN0eCwg a3JiNV9jY2FjaGUgKmNjYWNoZSwgaW50ICpuZWVkX2Vudmlyb25tCisgCSAqIGEgcHJpbWFyeSBj YWNoZSBmb3IgdGhpcyBjb2xsZWN0aW9uLCBpZiBpdCBzdXBwb3J0cyB0aGF0IChub24tRklMRSkK KyAJICovCisgCWlmIChrcmI1X2NjX3N1cHBvcnRfc3dpdGNoKGN0eCwgdHlwZSkpIHsKKysJCS8q CisrCQkgKiBGb3IgY29sbGVjdGlvbi10eXBlIGNhY2hlcyAoS0NNLCBLRVlSSU5HLCDigKYpIHJl dXNlIHRoZQorKwkJICogZXhpc3RpbmcgcHJpbWFyeSBjY2FjaGUgd2hlbiBvbmUgaXMgYWxyZWFk eSBwcmVzZW50LiAgVGhlCisrCQkgKiBjYWxsZXIgd2lsbCByZWluaXRpYWxpc2UgaXQgd2l0aCBr cmI1X2NjX2luaXRpYWxpemUoKSwgc28KKysJCSAqIGl0cyBvbGQgY29udGVudHMgYXJlIHJlcGxh Y2VkIHJhdGhlciB0aGFuIG9ycGhhbmVkLiAgT25seQorKwkJICogY3JlYXRlIGEgZnJlc2ggdW5p cXVlIGNjYWNoZSB3aGVuIG5vIHByaW1hcnkgZXhpc3RzIHlldC4KKysJCSAqLworKwkJaWYgKGty YjVfY2NfZGVmYXVsdChjdHgsIGNjYWNoZSkgPT0gMCkgeworKwkJCWRlYnVnM19mKCJyZXVzaW5n IGV4aXN0aW5nIGRlZmF1bHQgY2NhY2hlIG9mIHR5cGUgJXMiLAorKwkJCSAgICB0eXBlKTsKKysJ CQlmcmVlKHR5cGUpOworKwkJCXJldHVybiAwOworKwkJfQorIAkJZGVidWczX2YoImNhbGxpbmcg Y2NfbmV3X3VuaXF1ZSglcykiLCBjY25hbWUpOworIAkJcmV0ID0ga3JiNV9jY19uZXdfdW5pcXVl KGN0eCwgdHlwZSwgTlVMTCwgY2NhY2hlKTsKKyAJCWZyZWUodHlwZSk7CitkaWZmIC0tZ2l0IGEv Y29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA0ZGYxYTMyMDQuLjkxOGNjZDVkZiAx MDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNTEzNiwx MSArNTEzNiwxNyBAQCBBQ19BUkdfV0lUSChba2VyYmVyb3M1XSwKKyAjIGluY2x1ZGUgPGdzc2Fw aV9nZW5lcmljLmg+CisgI2VsaWYgZGVmaW5lZChIQVZFX0dTU0FQSV9HU1NBUElfR0VORVJJQ19I KQorICMgaW5jbHVkZSA8Z3NzYXBpL2dzc2FwaV9nZW5lcmljLmg+CisrI2VuZGlmCisrI2lmZGVm IEhBVkVfR1NTQVBJX0VYVF9ICisrIyBpbmNsdWRlIDxnc3NhcGkvZ3NzYXBpX2V4dC5oPgorKyNl bmRpZgorKyNpZmRlZiBIQVZFX0dTU0FQSV9LUkI1X0gKKysjIGluY2x1ZGUgPGdzc2FwaS9nc3Nh cGlfa3JiNS5oPgorICNlbmRpZgorIAkJXV0pCisgCQlzYXZlZF9MSUJTPSIkTElCUyIKKy0JCUxJ QlM9IiRMSUJTICRLNUxJQlMiCistCQlBQ19DSEVDS19GVU5DUyhba3JiNV9jY19uZXdfdW5pcXVl IGtyYjVfZ2V0X2Vycm9yX21lc3NhZ2Uga3JiNV9mcmVlX2Vycm9yX21lc3NhZ2VdKQorKwkJTElC Uz0iJExJQlMgJEdTU0xJQlMgJEs1TElCUyAiCisrCQlBQ19DSEVDS19GVU5DUyhba3JiNV9jY19u ZXdfdW5pcXVlIGtyYjVfZ2V0X2Vycm9yX21lc3NhZ2Uga3JiNV9mcmVlX2Vycm9yX21lc3NhZ2Ug Z3NzX2FjcXVpcmVfY3JlZF9mcm9tXSkKKyAJCUxJQlM9IiRzYXZlZF9MSUJTIgorIAorIAlmaQor ZGlmZiAtLWdpdCBhL2dzcy1zZXJ2LWtyYjUuYyBiL2dzcy1zZXJ2LWtyYjUuYworaW5kZXggZmM3 Y2FiYzA5Li4wNmQ0NTBkNGQgMTAwNjQ0CistLS0gYS9nc3Mtc2Vydi1rcmI1LmMKKysrKyBiL2dz cy1zZXJ2LWtyYjUuYworQEAgLTYwOSw2ICs2MDksMjMxIEBAIHNzaF9nc3NhcGlfa3JiNV91cGRh dGVjcmVkcyhzc2hfZ3NzYXBpX2NjYWNoZSAqc3RvcmUsCisgCXJldHVybiAxOworIH0KKyAKKysv KgorKyAqIENoZWNrIHdoZXRoZXIgdGhlIHVzZXIncyBkZWZhdWx0IGNjYWNoZSBhbHJlYWR5IGNv bnRhaW5zIHZhbGlkIHNlcnZpY2UKKysgKiB0aWNrZXRzIGZvciBhbGwgcHJpbmNpcGFscyBsaXN0 ZWQgaW4gc2VydmljZXNbXS4gIFJldHVybnMgMSBpZiBldmVyeQorKyAqIGxpc3RlZCBzZXJ2aWNl IGhhcyBhIHRpY2tldCB3aXRoIGF0IGxlYXN0IG1pbl9saWZldGltZSBzZWNvbmRzIHJlbWFpbmlu ZworKyAqIChwYXNzIEdTU19DX0lOREVGSU5JVEUgdG8gYWNjZXB0IGFueSBwb3NpdGl2ZSByZW1h aW5pbmcgbGlmZXRpbWUpLCAwIGlmCisrICogYW55IHRpY2tldCBpcyBtaXNzaW5nIG9yIHRvbyBj bG9zZSB0byBleHBpcnkuICBSdW5zIGFzIHRoZSB1c2VyLgorKyAqCisrICogVW5saWtlIHNzaF9n c3NhcGlfdXNlcl9oYXNfdmFsaWRfdGd0KCksIHRoaXMgY2Fubm90IHVzZSBnc3NfYWNxdWlyZV9j cmVkKCkKKysgKiBiZWNhdXNlIHNlcnZpY2UgdGlja2V0cyBhcmUgbm90IGluaXRpYXRvciBjcmVk ZW50aWFscyDigJQgR1NTQVBJIG9ubHkKKysgKiBzdXJmYWNlcyBUR1RzIHZpYSB0aGF0IEFQSS4g IFdlIGl0ZXJhdGUgdGhlIGNjYWNoZSB3aXRoIHRoZSBrcmI1IEFQSQorKyAqIGRpcmVjdGx5IGlu c3RlYWQuCisrICovCisraW50Cisrc3NoX2dzc2FwaV91c2VyX2hhc192YWxpZF9wcm94eV90aWNr ZXRzKGNoYXIgKipzZXJ2aWNlcywgdV9pbnQgbnNlcnZpY2VzLAorKyAgICB1X2ludCBtaW5fbGlm ZXRpbWUpCisreworKwlrcmI1X2NvbnRleHQgY3R4ID0gTlVMTDsKKysJa3JiNV9jY2FjaGUgY2Mg PSBOVUxMOworKwlrcmI1X2NjX2N1cnNvciBjdXJzb3I7CisrCWtyYjVfY3JlZHMgY3JlZDsKKysJ a3JiNV9wcmluY2lwYWwgc3ZjX3ByaW5jOworKwlpbnQgKmZvdW5kID0gTlVMTDsKKysJdV9pbnQg aTsKKysJaW50IGFsbF9mb3VuZCA9IDA7CisrCXRpbWVfdCBub3c7CisrCisrCWlmIChuc2Vydmlj ZXMgPT0gMCkKKysJCXJldHVybiAwOworKworKwlpZiAoa3JiNV9pbml0X2NvbnRleHQoJmN0eCkg IT0gMCkKKysJCXJldHVybiAwOworKworKwlmb3VuZCA9IHhjYWxsb2MobnNlcnZpY2VzLCBzaXpl b2YoKmZvdW5kKSk7CisrCW5vdyA9IHRpbWUoTlVMTCk7CisrCisrCWlmIChrcmI1X2NjX2RlZmF1 bHQoY3R4LCAmY2MpICE9IDApCisrCQlnb3RvIG91dDsKKysKKysJaWYgKGtyYjVfY2Nfc3RhcnRf c2VxX2dldChjdHgsIGNjLCAmY3Vyc29yKSAhPSAwKSB7CisrCQlrcmI1X2NjX2Nsb3NlKGN0eCwg Y2MpOworKwkJY2MgPSBOVUxMOworKwkJZ290byBvdXQ7CisrCX0KKysKKysJd2hpbGUgKGtyYjVf Y2NfbmV4dF9jcmVkKGN0eCwgY2MsICZjdXJzb3IsICZjcmVkKSA9PSAwKSB7CisrCQkvKgorKwkJ ICogVXNlIGtyYjVfcHJpbmNpcGFsX2NvbXBhcmUoKSBzbyB0aGF0IHNlcnZpY2UgbmFtZXMKKysJ CSAqIGNvbmZpZ3VyZWQgd2l0aG91dCBhbiBleHBsaWNpdCByZWFsbSAoa3JiNV9wYXJzZV9uYW1l CisrCQkgKiBhcHBlbmRzIHRoZSBkZWZhdWx0IHJlYWxtKSBzdGlsbCBtYXRjaCB0aGUgZnVsbHkt CisrCQkgKiBxdWFsaWZpZWQgcHJpbmNpcGFsIHN0b3JlZCBpbiB0aGUgY2NhY2hlLgorKwkJICov CisrCQlmb3IgKGkgPSAwOyBpIDwgbnNlcnZpY2VzOyBpKyspIHsKKysJCQlpZiAoZm91bmRbaV0p CisrCQkJCWNvbnRpbnVlOworKwkJCWlmIChrcmI1X3BhcnNlX25hbWUoY3R4LCBzZXJ2aWNlc1tp XSwKKysJCQkgICAgJnN2Y19wcmluYykgIT0gMCkKKysJCQkJY29udGludWU7CisrCQkJaWYgKGty YjVfcHJpbmNpcGFsX2NvbXBhcmUoY3R4LAorKwkJCSAgICBjcmVkLnNlcnZlciwgc3ZjX3ByaW5j KSkgeworKwkJCQlrcmI1X2RlbHRhdCByZW1haW5pbmcgPQorKwkJCQkgICAgY3JlZC50aW1lcy5l bmR0aW1lIC0gbm93OworKwkJCQlpZiAocmVtYWluaW5nID4gMCAmJgorKwkJCQkgICAgKG1pbl9s aWZldGltZSA9PSBHU1NfQ19JTkRFRklOSVRFIHx8CisrCQkJCSAgICAgKGtyYjVfZGVsdGF0KW1p bl9saWZldGltZSA8PSByZW1haW5pbmcpKQorKwkJCQkJZm91bmRbaV0gPSAxOworKwkJCX0KKysJ CQlrcmI1X2ZyZWVfcHJpbmNpcGFsKGN0eCwgc3ZjX3ByaW5jKTsKKysJCX0KKysJCWtyYjVfZnJl ZV9jcmVkX2NvbnRlbnRzKGN0eCwgJmNyZWQpOworKwl9CisrCWtyYjVfY2NfZW5kX3NlcV9nZXQo Y3R4LCBjYywgJmN1cnNvcik7CisrCWtyYjVfY2NfY2xvc2UoY3R4LCBjYyk7CisrCWNjID0gTlVM TDsKKysKKysJYWxsX2ZvdW5kID0gMTsKKysJZm9yIChpID0gMDsgaSA8IG5zZXJ2aWNlczsgaSsr KSB7CisrCQlpZiAoIWZvdW5kW2ldKSB7CisrCQkJYWxsX2ZvdW5kID0gMDsKKysJCQlicmVhazsK KysJCX0KKysJfQorK291dDoKKysJZnJlZShmb3VuZCk7CisrCWlmIChjdHggIT0gTlVMTCkKKysJ CWtyYjVfZnJlZV9jb250ZXh0KGN0eCk7CisrCXJldHVybiBhbGxfZm91bmQ7CisrfQorKworKy8q IEFzIHVzZXIgLSBjYWxsZWQgb24gZmF0YWwvZXhpdCAqLworK3ZvaWQKKytzc2hfZ3NzYXBpX2Ns ZWFudXBfY3JlZHModm9pZCkKKyt7CisrCXNzaF9nc3NhcGlfY2NhY2hlICpzdG9yZSA9IHNzaF9n c3NhcGlfZ2V0X2NjYWNoZSgpOworKwlrcmI1X2NjYWNoZSBjY2FjaGUgPSBOVUxMOworKwlrcmI1 X2Vycm9yX2NvZGUgcHJvYmxlbTsKKysKKysJaWYgKHN0b3JlLT5kYXRhICE9IE5VTEwpIHsKKysJ CWlmICgocHJvYmxlbSA9IGtyYjVfY2NfcmVzb2x2ZShzdG9yZS0+ZGF0YSwKKysJCSAgICBzdG9y ZS0+ZW52dmFsLCAmY2NhY2hlKSkpIHsKKysJCQlkZWJ1Z19mKCJrcmI1X2NjX3Jlc29sdmUoKTog JS4xMDBzIiwKKysJCQkgICAga3JiNV9nZXRfZXJyX3RleHQoc3RvcmUtPmRhdGEsIHByb2JsZW0p KTsKKysJCX0gZWxzZSBpZiAoKHByb2JsZW0gPSBrcmI1X2NjX2Rlc3Ryb3koc3RvcmUtPmRhdGEs IGNjYWNoZSkpKSB7CisrCQkJZGVidWdfZigia3JiNV9jY19kZXN0cm95KCk6ICUuMTAwcyIsCisr CQkJICAgIGtyYjVfZ2V0X2Vycl90ZXh0KHN0b3JlLT5kYXRhLCBwcm9ibGVtKSk7CisrCQl9IGVs c2UgeworKwkJCWtyYjVfZnJlZV9jb250ZXh0KHN0b3JlLT5kYXRhKTsKKysJCQlzdG9yZS0+ZGF0 YSA9IE5VTEw7CisrCQl9CisrCX0KKyt9CisrCisrLyoKKysgKiBGaWx0ZXIgdGhlIHVzZXIncyBj Y2FjaGUgYnkgcmVtb3ZpbmcgdGhlIHRpY2tldCBjbGFzc2VzIGluZGljYXRlZCBieQorKyAqIGRy b3BfZmxhZ3MgKFNTSF9HU1NBUElfQ0NGSUxURVJfKiBiaXRtYXNrKS4gIEVhY2ggY3JlZGVudGlh bCBpcworKyAqIGNhdGVnb3Jpc2VkIGFzIG9uZSBvZjoKKysgKiAgIFRHVCAgIC0gc2VydmVyIHBy aW5jaXBhbCBtYXRjaGVzICJrcmJ0Z3QvIiBwcmVmaXgKKysgKiAgIFBST1hZIC0gc2VydmVyIHBy aW5jaXBhbCBtYXRjaGVzIG9uZSBvZiBwcm94eV9zZXJ2aWNlc1tdCisrICogICBTRUxGICAtIGV2 ZXJ5dGhpbmcgZWxzZSAodGhlIFM0VTJTZWxmIGV2aWRlbmNlIHRpY2tldCkKKysgKiBDcmVkZW50 aWFscyBpbiBhIGZsYWdnZWQgY2F0ZWdvcnkgYXJlIGRpc2NhcmRlZDsgdGhlIHJlc3QgYXJlIHdy aXR0ZW4KKysgKiBiYWNrIGFmdGVyIHJlaW5pdGlhbGlzaW5nIHRoZSBjY2FjaGUuICBSdW5zIGFz IHVzZXIuCisrICovCisrdm9pZAorK3NzaF9nc3NhcGlfa3JiNV9maWx0ZXJfY2NhY2hlKHVfaW50 IGRyb3BfZmxhZ3MsCisrICAgIGNoYXIgKipwcm94eV9zZXJ2aWNlcywgdV9pbnQgbnByb3h5X3Nl cnZpY2VzKQorK3sKKysJc3NoX2dzc2FwaV9jY2FjaGUgKnN0b3JlID0gc3NoX2dzc2FwaV9nZXRf Y2NhY2hlKCk7CisrCWtyYjVfY29udGV4dCBjdHggPSAoa3JiNV9jb250ZXh0KXN0b3JlLT5kYXRh OworKwlrcmI1X2NjYWNoZSBjYyA9IE5VTEw7CisrCWtyYjVfY2NfY3Vyc29yIGN1cnNvcjsKKysJ a3JiNV9jcmVkcyAqa2VlcCA9IE5VTEw7CisrCWtyYjVfcHJpbmNpcGFsIHByaW5jID0gTlVMTDsK KysJa3JiNV9lcnJvcl9jb2RlIHByb2JsZW07CisrCWNoYXIgKnNydm5hbWU7CisrCXVfaW50IGks IG5rZWVwID0gMCwgY2FwID0gMDsKKysJaW50IGlzX3RndCwgaXNfcHJveHksIGRyb3A7CisrCisr CWlmIChjdHggPT0gTlVMTCB8fCBzdG9yZS0+ZW52dmFsID09IE5VTEwpCisrCQlyZXR1cm47Cisr CisrCWlmICgocHJvYmxlbSA9IGtyYjVfY2NfcmVzb2x2ZShjdHgsIHN0b3JlLT5lbnZ2YWwsICZj YykpICE9IDApIHsKKysJCWRlYnVnX2YoImtyYjVfY2NfcmVzb2x2ZTogJS4xMDBzIiwKKysJCSAg ICBrcmI1X2dldF9lcnJfdGV4dChjdHgsIHByb2JsZW0pKTsKKysJCXJldHVybjsKKysJfQorKwlp ZiAoKHByb2JsZW0gPSBrcmI1X2NjX2dldF9wcmluY2lwYWwoY3R4LCBjYywgJnByaW5jKSkgIT0g MCkgeworKwkJZGVidWdfZigia3JiNV9jY19nZXRfcHJpbmNpcGFsOiAlLjEwMHMiLAorKwkJICAg IGtyYjVfZ2V0X2Vycl90ZXh0KGN0eCwgcHJvYmxlbSkpOworKwkJa3JiNV9jY19jbG9zZShjdHgs IGNjKTsKKysJCXJldHVybjsKKysJfQorKwlpZiAoKHByb2JsZW0gPSBrcmI1X2NjX3N0YXJ0X3Nl cV9nZXQoY3R4LCBjYywgJmN1cnNvcikpICE9IDApIHsKKysJCWRlYnVnX2YoImtyYjVfY2Nfc3Rh cnRfc2VxX2dldDogJS4xMDBzIiwKKysJCSAgICBrcmI1X2dldF9lcnJfdGV4dChjdHgsIHByb2Js ZW0pKTsKKysJCWtyYjVfZnJlZV9wcmluY2lwYWwoY3R4LCBwcmluYyk7CisrCQlrcmI1X2NjX2Ns b3NlKGN0eCwgY2MpOworKwkJcmV0dXJuOworKwl9CisrCisrCXsKKysJCWtyYjVfY3JlZHMgY3Jl ZDsKKysJCWtyYjVfcHJpbmNpcGFsIHN2Y19wcmluYzsKKysJCXdoaWxlIChrcmI1X2NjX25leHRf Y3JlZChjdHgsIGNjLCAmY3Vyc29yLCAmY3JlZCkgPT0gMCkgeworKwkJCWlzX3RndCA9IGlzX3By b3h5ID0gMDsKKysJCQlpZiAoa3JiNV91bnBhcnNlX25hbWUoY3R4LCBjcmVkLnNlcnZlciwKKysJ CQkgICAgJnNydm5hbWUpID09IDApIHsKKysJCQkJaXNfdGd0ID0gc3RybmNtcChzcnZuYW1lLCAi a3JidGd0LyIsIDcpID09IDA7CisrCQkJCWtyYjVfZnJlZV91bnBhcnNlZF9uYW1lKGN0eCwgc3J2 bmFtZSk7CisrCQkJfQorKwkJCWlmICghaXNfdGd0KSB7CisrCQkJCS8qCisrCQkJCSAqIFVzZSBr cmI1X3ByaW5jaXBhbF9jb21wYXJlKCkgcmF0aGVyIHRoYW4KKysJCQkJICogc3RyY21wKCkgc28g dGhhdCBhIHNlcnZpY2UgbmFtZSBjb25maWd1cmVkCisrCQkJCSAqIHdpdGhvdXQgYW4gZXhwbGlj aXQgcmVhbG0gKGtyYjVfcGFyc2VfbmFtZQorKwkJCQkgKiBhcHBlbmRzIHRoZSBkZWZhdWx0IHJl YWxtKSBzdGlsbCBtYXRjaGVzCisrCQkJCSAqIHRoZSBmdWxseS1xdWFsaWZpZWQgbmFtZSBpbiB0 aGUgY2NhY2hlLgorKwkJCQkgKi8KKysJCQkJZm9yIChpID0gMDsgaSA8IG5wcm94eV9zZXJ2aWNl czsgaSsrKSB7CisrCQkJCQlpZiAoa3JiNV9wYXJzZV9uYW1lKGN0eCwKKysJCQkJCSAgICBwcm94 eV9zZXJ2aWNlc1tpXSwgJnN2Y19wcmluYykgIT0gMCkKKysJCQkJCQljb250aW51ZTsKKysJCQkJ CWlmIChrcmI1X3ByaW5jaXBhbF9jb21wYXJlKGN0eCwKKysJCQkJCSAgICBjcmVkLnNlcnZlciwg c3ZjX3ByaW5jKSkKKysJCQkJCQlpc19wcm94eSA9IDE7CisrCQkJCQlrcmI1X2ZyZWVfcHJpbmNp cGFsKGN0eCwgc3ZjX3ByaW5jKTsKKysJCQkJCWlmIChpc19wcm94eSkKKysJCQkJCQlicmVhazsK KysJCQkJfQorKwkJCX0KKysJCQlpZiAoaXNfdGd0KQorKwkJCQlkcm9wID0gZHJvcF9mbGFncyAm IFNTSF9HU1NBUElfQ0NGSUxURVJfVEdUOworKwkJCWVsc2UgaWYgKGlzX3Byb3h5KQorKwkJCQlk cm9wID0gZHJvcF9mbGFncyAmIFNTSF9HU1NBUElfQ0NGSUxURVJfUFJPWFk7CisrCQkJZWxzZQor KwkJCQlkcm9wID0gZHJvcF9mbGFncyAmIFNTSF9HU1NBUElfQ0NGSUxURVJfU0VMRjsKKysKKysJ CQlpZiAoIWRyb3ApIHsKKysJCQkJaWYgKG5rZWVwID49IGNhcCkgeworKwkJCQkJY2FwID0gY2Fw ID8gY2FwICogMiA6IDQ7CisrCQkJCQlrZWVwID0geHJlYWxsb2NhcnJheShrZWVwLCBjYXAsCisr CQkJCQkgICAgc2l6ZW9mKCprZWVwKSk7CisrCQkJCX0KKysJCQkJa2VlcFtua2VlcCsrXSA9IGNy ZWQ7CisrCQkJfSBlbHNlCisrCQkJCWtyYjVfZnJlZV9jcmVkX2NvbnRlbnRzKGN0eCwgJmNyZWQp OworKwkJfQorKwl9CisrCWtyYjVfY2NfZW5kX3NlcV9nZXQoY3R4LCBjYywgJmN1cnNvcik7Cisr CisrCWlmICgocHJvYmxlbSA9IGtyYjVfY2NfaW5pdGlhbGl6ZShjdHgsIGNjLCBwcmluYykpICE9 IDApIHsKKysJCWxvZ2l0X2YoImtyYjVfY2NfaW5pdGlhbGl6ZTogJS4xMDBzIiwKKysJCSAgICBr cmI1X2dldF9lcnJfdGV4dChjdHgsIHByb2JsZW0pKTsKKysJfSBlbHNlIHsKKysJCWZvciAoaSA9 IDA7IGkgPCBua2VlcDsgaSsrKQorKwkJCWtyYjVfY2Nfc3RvcmVfY3JlZChjdHgsIGNjLCAma2Vl cFtpXSk7CisrCQlkZWJ1Z19mKCJjY2FjaGUgZmlsdGVyIDB4JXg6IHJldGFpbmVkICV1IHRpY2tl dChzKSIsCisrCQkgICAgZHJvcF9mbGFncywgbmtlZXApOworKwl9CisrCisrCWZvciAoaSA9IDA7 IGkgPCBua2VlcDsgaSsrKQorKwkJa3JiNV9mcmVlX2NyZWRfY29udGVudHMoY3R4LCAma2VlcFtp XSk7CisrCWZyZWUoa2VlcCk7CisrCWtyYjVfZnJlZV9wcmluY2lwYWwoY3R4LCBwcmluYyk7Cisr CWtyYjVfY2NfY2xvc2UoY3R4LCBjYyk7CisrfQorKworIHNzaF9nc3NhcGlfbWVjaCBnc3NhcGlf a2VyYmVyb3NfbWVjaCA9IHsKKyAJInRvV001U2x3NUV3OE1xa2F5K2FsMmc9PSIsCisgCSJLZXJi ZXJvcyIsCitkaWZmIC0tZ2l0IGEvZ3NzLXNlcnYuYyBiL2dzcy1zZXJ2LmMKK2luZGV4IDIzN2Ez YzQwYS4uZDcyMDY0OTlkIDEwMDY0NAorLS0tIGEvZ3NzLXNlcnYuYworKysrIGIvZ3NzLXNlcnYu YworQEAgLTU1LDcgKzU1LDcgQEAgZXh0ZXJuIFNlcnZlck9wdGlvbnMgb3B0aW9uczsKKyAKKyBz dGF0aWMgc3NoX2dzc2FwaV9jbGllbnQgZ3NzYXBpX2NsaWVudCA9CisgICAgIHsgR1NTX0NfRU1Q VFlfQlVGRkVSLCBHU1NfQ19FTVBUWV9CVUZGRVIsIEdTU19DX05PX0NSRURFTlRJQUwsCistICAg IEdTU19DX05PX05BTUUsIE5VTEwsIHtOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwgMCwg MCwgTlVMTH07CisrICAgIEdTU19DX05PX05BTUUsIE5VTEwsIHtOVUxMLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwgMCwgMCwgTlVMTCwgMH07CisgCisgc3NoX2dzc2FwaV9tZWNoIGdzc2FwaV9u dWxsX21lY2ggPQorICAgICB7IE5VTEwsIE5VTEwsIHswLCBOVUxMfSwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH07CitAQCAtNDkyLDI2ICs0OTIsMzgyIEBAIHNzaF9nc3NhcGlfZ2V0Y2xp ZW50KEdzc2N0eHQgKmN0eCwgc3NoX2dzc2FwaV9jbGllbnQgKmNsaWVudCkKKyAJcmV0dXJuIChj dHgtPm1ham9yKTsKKyB9CisgCistLyogQXMgdXNlciAtIGNhbGxlZCBvbiBmYXRhbC9leGl0ICov CisrLyogUmV0dXJucyBub24temVybyBpZiBLZXJiZXJvcyBjcmVkZW50aWFscyBoYXZlIGFscmVh ZHkgYmVlbiBzdG9yZWQuICovCisraW50Cisrc3NoX2dzc2FwaV9jcmVkZW50aWFsc19zdG9yZWQo dm9pZCkKKyt7CisrCXJldHVybiBnc3NhcGlfY2xpZW50LnN0b3JlLmVudnZhbCAhPSBOVUxMOwor K30KKysKKysvKiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgY3JlZGVudGlhbC1jYWNoZSBkZXNj cmlwdG9yIGZvciB0aGlzIHNlc3Npb24uICovCisrc3NoX2dzc2FwaV9jY2FjaGUgKgorK3NzaF9n c3NhcGlfZ2V0X2NjYWNoZSh2b2lkKQorK3sKKysJcmV0dXJuICZnc3NhcGlfY2xpZW50LnN0b3Jl OworK30KKysKKysvKiBMb2cgaHVtYW4tcmVhZGFibGUgR1NTQVBJIG1ham9yIGFuZCBtaW5vciBz dGF0dXMgc3RyaW5ncy4gKi8KKytzdGF0aWMgdm9pZAorK2xvZ19nc3NfZXJyb3IoT01fdWludDMy IG1ham9yLCBPTV91aW50MzIgbWlub3IsIGNvbnN0IGNoYXIgKmxhYmVsKQorK3sKKysJT01fdWlu dDMyIGxtaW4sIG1jdHg7CisrCWdzc19idWZmZXJfZGVzYyBlbXNnID0gR1NTX0NfRU1QVFlfQlVG RkVSOworKworKwltY3R4ID0gMDsKKysJZG8geworKwkJZ3NzX2Rpc3BsYXlfc3RhdHVzKCZsbWlu LCBtYWpvciwgR1NTX0NfR1NTX0NPREUsCisrCQkgICAgR1NTX0NfTk9fT0lELCAmbWN0eCwgJmVt c2cpOworKwkJbG9naXQoIiVzOiAlLipzIiwgbGFiZWwsIChpbnQpZW1zZy5sZW5ndGgsIChjaGFy ICopZW1zZy52YWx1ZSk7CisrCQlnc3NfcmVsZWFzZV9idWZmZXIoJmxtaW4sICZlbXNnKTsKKysJ fSB3aGlsZSAobWN0eCAhPSAwKTsKKysKKysJbWN0eCA9IDA7CisrCWRvIHsKKysJCWdzc19kaXNw bGF5X3N0YXR1cygmbG1pbiwgbWlub3IsIEdTU19DX01FQ0hfQ09ERSwKKysJCSAgICAmZ3NzYXBp X2tlcmJlcm9zX21lY2gub2lkLCAmbWN0eCwgJmVtc2cpOworKwkJaWYgKGVtc2cubGVuZ3RoID4g MCkKKysJCQlsb2dpdCgiJXM6ICUuKnMiLCBsYWJlbCwKKysJCQkgICAgKGludCllbXNnLmxlbmd0 aCwgKGNoYXIgKillbXNnLnZhbHVlKTsKKysJCWdzc19yZWxlYXNlX2J1ZmZlcigmbG1pbiwgJmVt c2cpOworKwl9IHdoaWxlIChtY3R4ICE9IDApOworK30KKysKKysvKiBMb2cgdGhlIGNhbm9uaWNh bCBzdHJpbmcgZm9ybSBvZiBhIEdTU0FQSSBuYW1lIGFzIGEgZGVidWcgbWVzc2FnZS4gKi8KKytz dGF0aWMgdm9pZAorK2RlYnVnX2dzc19uYW1lKGNvbnN0IGNoYXIgKmxhYmVsLCBnc3NfbmFtZV90 IG5hbWUpCisreworKwlPTV91aW50MzIgbG1pbjsKKysJZ3NzX2J1ZmZlcl9kZXNjIGJ1ZiA9IEdT U19DX0VNUFRZX0JVRkZFUjsKKysKKysJaWYgKGdzc19kaXNwbGF5X25hbWUoJmxtaW4sIG5hbWUs ICZidWYsIE5VTEwpID09IEdTU19TX0NPTVBMRVRFKSB7CisrCQlkZWJ1Z19mKCIlczogJS4qcyIs IGxhYmVsLCAoaW50KWJ1Zi5sZW5ndGgsIChjaGFyICopYnVmLnZhbHVlKTsKKysJCWdzc19yZWxl YXNlX2J1ZmZlcigmbG1pbiwgJmJ1Zik7CisrCX0KKyt9CisrCisrLyoKKysgKiBDaGVjayB3aGV0 aGVyIHRoZSB1c2VyIGFscmVhZHkgaGFzIHZhbGlkIEdTU0FQSSBpbml0aWF0b3IgY3JlZGVudGlh bHMKKysgKiAoZS5nLiBhIEtlcmJlcm9zIFRHVCkgaW4gdGhlaXIgZGVmYXVsdCBjcmVkZW50aWFs IHN0b3JlIHdpdGggYXQgbGVhc3QKKysgKiBtaW5fbGlmZXRpbWUgc2Vjb25kcyByZW1haW5pbmcu ICBQYXNzIEdTU19DX0lOREVGSU5JVEUgdG8gYWNjZXB0IGFueQorKyAqIHBvc2l0aXZlIHJlbWFp bmluZyBsaWZldGltZS4gIFJ1bnMgYXMgdGhlIHVzZXIuCisrICogUmV0dXJucyAxIGlmIHN1ZmZp Y2llbnQgY3JlZGVudGlhbHMgZXhpc3QsIDAgb3RoZXJ3aXNlLgorKyAqLworK2ludAorK3NzaF9n c3NhcGlfdXNlcl9oYXNfdmFsaWRfdGd0KHVfaW50IG1pbl9saWZldGltZSkKKyt7CisrCU9NX3Vp bnQzMiBtYWpvciwgbWlub3IsIGxpZmV0aW1lID0gMDsKKysJZ3NzX2NyZWRfaWRfdCBjcmVkID0g R1NTX0NfTk9fQ1JFREVOVElBTDsKKysJaW50IGZvdW5kID0gMDsKKysKKysJbWFqb3IgPSBnc3Nf YWNxdWlyZV9jcmVkKCZtaW5vciwgR1NTX0NfTk9fTkFNRSwgR1NTX0NfSU5ERUZJTklURSwKKysJ ICAgIEdTU19DX05PX09JRF9TRVQsIEdTU19DX0lOSVRJQVRFLCAmY3JlZCwgTlVMTCwgJmxpZmV0 aW1lKTsKKysJaWYgKCFHU1NfRVJST1IobWFqb3IpICYmIGxpZmV0aW1lID4gMCAmJgorKwkgICAg KG1pbl9saWZldGltZSA9PSBHU1NfQ19JTkRFRklOSVRFIHx8IGxpZmV0aW1lID49IG1pbl9saWZl dGltZSkpCisrCQlmb3VuZCA9IDE7CisrCWlmIChjcmVkICE9IEdTU19DX05PX0NSRURFTlRJQUwp CisrCQlnc3NfcmVsZWFzZV9jcmVkKCZtaW5vciwgJmNyZWQpOworKwlyZXR1cm4gZm91bmQ7Cisr fQorKworKworKy8qCisrICogUGVyZm9ybSBTNFUyU2VsZiAocHJvdG9jb2wgdHJhbnNpdGlvbik6 IGFjcXVpcmUgYSBLZXJiZXJvcyBzZXJ2aWNlIHRpY2tldAorKyAqIGZvciB0aGUgU1NIIHVzZXIg b24gYmVoYWxmIG9mIHRoZSBob3N0IHByaW5jaXBhbC4gIFJ1bnMgcHJpdmlsZWdlZC4KKysgKiBQ b3B1bGF0ZXMgZ3NzYXBpX2NsaWVudC57Y3JlZHMsbWVjaCxkaXNwbGF5bmFtZSxleHBvcnRlZG5h bWV9IG9uIHN1Y2Nlc3MuCisrICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGZhaWx1cmUu CisrICovCisrLyogUHJpdmlsZWdlZCAqLworK2ludAorK3NzaF9nc3NhcGlfczR1MnNlbGYoY29u c3QgY2hhciAqdXNlciwgdV9pbnQgbGlmZXRpbWUpCisreworKwlPTV91aW50MzIgbWFqb3IsIG1p bm9yLCBzdGF0dXM7CisrCWdzc19PSURfc2V0IG9pZHNldCA9IEdTU19DX05PX09JRF9TRVQ7Cisr CWdzc19uYW1lX3QgaG9zdF9uYW1lID0gR1NTX0NfTk9fTkFNRTsKKysJZ3NzX25hbWVfdCB1c2Vy X25hbWUgPSBHU1NfQ19OT19OQU1FOworKwlnc3NfY3JlZF9pZF90IGhvc3RfY3JlZHMgPSBHU1Nf Q19OT19DUkVERU5USUFMOworKwlnc3NfY3JlZF9pZF90IGltcGVyc29uYXRlZF9jcmVkcyA9IEdT U19DX05PX0NSRURFTlRJQUw7CisrCWdzc19idWZmZXJfZGVzYyBnc3NidWYsIGRpc3BsYXluYW1l ID0gR1NTX0NfRU1QVFlfQlVGRkVSOworKwljaGFyIGxuYW1lW05JX01BWEhPU1RdOworKwljaGFy ICp2YWw7CisrCisrCWlmIChnZXRob3N0bmFtZShsbmFtZSwgc2l6ZW9mKGxuYW1lKSkgIT0gMCkg eworKwkJbG9naXRfZigiZ2V0aG9zdG5hbWU6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKKysJCXJl dHVybiAtMTsKKysJfQorKworKwkvKiBBY3F1aXJlIGFjY2VwdG9yIGNyZWRlbnRpYWwgZm9yIGhv c3QvIGZyb20gdGhlIGtleXRhYiAqLworKwlnc3NfY3JlYXRlX2VtcHR5X29pZF9zZXQoJnN0YXR1 cywgJm9pZHNldCk7CisrCWdzc19hZGRfb2lkX3NldF9tZW1iZXIoJnN0YXR1cywgJmdzc2FwaV9r ZXJiZXJvc19tZWNoLm9pZCwgJm9pZHNldCk7CisrCisrCXhhc3ByaW50ZigmdmFsLCAiaG9zdEAl cyIsIGxuYW1lKTsKKysJZ3NzYnVmLnZhbHVlID0gdmFsOworKwlnc3NidWYubGVuZ3RoID0gc3Ry bGVuKHZhbCk7CisrCW1ham9yID0gZ3NzX2ltcG9ydF9uYW1lKCZtaW5vciwgJmdzc2J1ZiwKKysJ ICAgIEdTU19DX05UX0hPU1RCQVNFRF9TRVJWSUNFLCAmaG9zdF9uYW1lKTsKKysJZnJlZSh2YWwp OworKwlpZiAoR1NTX0VSUk9SKG1ham9yKSkgeworKwkJbG9naXRfZigiZ3NzX2ltcG9ydF9uYW1l IChob3N0KSBmYWlsZWQiKTsKKysJCWdzc19yZWxlYXNlX29pZF9zZXQoJnN0YXR1cywgJm9pZHNl dCk7CisrCQlyZXR1cm4gLTE7CisrCX0KKysJZGVidWdfZ3NzX25hbWUoImhvc3QgbmFtZSBwYXJz ZWQgYXMiLCBob3N0X25hbWUpOworKworKwlkZWJ1Z19mKCJhY3F1aXJpbmcgaG9zdCBjcmVkZW50 aWFscyBhcyB1aWQ9JXUgZXVpZD0ldSwgcHJpbmNpcGFsPWhvc3RAJXMiLAorKwkgICAgKHVuc2ln bmVkKWdldHVpZCgpLCAodW5zaWduZWQpZ2V0ZXVpZCgpLCBsbmFtZSk7CisrCSNpZmRlZiBIQVZF X0dTU19BQ1FVSVJFX0NSRURfRlJPTQorKwl7CisrIyBpZiBkZWZpbmVkKEtSQjUpCisrCQkvKgor KwkJICogUmVzb2x2ZSB0aGUga2V5dGFiIHBhdGg6IGtyYjVfa3RfZGVmYXVsdF9uYW1lIHJlc3Bl Y3RzCisrCQkgKiBLUkI1X0tUTkFNRSBhbmQga3JiNS5jb25mIGRlZmF1bHRfa2V5dGFiX25hbWUu CisrCQkgKi8KKysJCWNoYXIga2V5dGFiX25hbWVbTUFYUEFUSExFTl07CisrCQlrcmI1X2NvbnRl eHQgdG1wX2N0eDsKKysKKysKKysJCWtleXRhYl9uYW1lWzBdID0gJ1wwJzsKKysJCWlmIChrcmI1 X2luaXRfY29udGV4dCgmdG1wX2N0eCkgPT0gMCkgeworKwkJCSh2b2lkKWtyYjVfa3RfZGVmYXVs dF9uYW1lKHRtcF9jdHgsIGtleXRhYl9uYW1lLAorKwkJCSAgICBzaXplb2Yoa2V5dGFiX25hbWUp KTsKKysJCQlrcmI1X2ZyZWVfY29udGV4dCh0bXBfY3R4KTsKKysJCX0KKysJCWlmIChrZXl0YWJf bmFtZVswXSA9PSAnXDAnKQorKwkJCXN0cmxjcHkoa2V5dGFiX25hbWUsICJGSUxFOi9ldGMva3Ji NS5rZXl0YWIiLAorKwkJCSAgICBzaXplb2Yoa2V5dGFiX25hbWUpKTsKKysJCS8qCisrCQkgKiBj bGllbnRfa2V5dGFiIGxldHMgR1NTQVBJIGRvIEFTLVJFUSB0byBvYnRhaW4gYSBUR1QgZm9yIHRo ZQorKwkJICogaG9zdCBwcmluY2lwYWwgKGluaXRpYXRvciByb2xlIG5lZWRlZCBmb3IgUzRVMlNl bGYpLgorKwkJICoga2V5dGFiIGNvdmVycyB0aGUgYWNjZXB0b3Igcm9sZS4KKysJCSAqIGNjYWNo ZTogTUVNT1JZOiBrZWVwcyB0aGUgcmVzdWx0aW5nIFRHVCB2b2xhdGlsZS4KKysJCSAqLworKwkJ Z3NzX2tleV92YWx1ZV9lbGVtZW50X2Rlc2Mgc3RvcmVfZWxlbWVudHNbXSA9IHsKKysJCQl7ICJj bGllbnRfa2V5dGFiIiwga2V5dGFiX25hbWUgfSwKKysJCQl7ICJrZXl0YWIiLCBrZXl0YWJfbmFt ZSB9LAorKwkJCXsgImNjYWNoZSIsICJNRU1PUlk6IiB9LAorKwkJfTsKKysJCWNvbnN0IGdzc19r ZXlfdmFsdWVfc2V0X2Rlc2MgY3JlZF9zdG9yZSA9IHsgMywgc3RvcmVfZWxlbWVudHMgfTsKKysj IGVsc2UKKysJCWdzc19rZXlfdmFsdWVfZWxlbWVudF9kZXNjIHN0b3JlX2VsZW1lbnRzW10gPSB7 CisrCQkJeyAiY2NhY2hlIiwgIk1FTU9SWToiIH0sCisrCQl9OworKwkJY29uc3QgZ3NzX2tleV92 YWx1ZV9zZXRfZGVzYyBjcmVkX3N0b3JlID0geyAxLCBzdG9yZV9lbGVtZW50cyB9OworKyMgZW5k aWYKKysKKysKKysJCW1ham9yID0gZ3NzX2FjcXVpcmVfY3JlZF9mcm9tKCZtaW5vciwgaG9zdF9u YW1lLCBsaWZldGltZSwKKysJCSAgICBvaWRzZXQsIEdTU19DX0JPVEgsICZjcmVkX3N0b3JlLCAm aG9zdF9jcmVkcywgTlVMTCwgTlVMTCk7CisrCX0KKysjZWxzZQorKwltYWpvciA9IGdzc19hY3F1 aXJlX2NyZWQoJm1pbm9yLCBob3N0X25hbWUsIGxpZmV0aW1lLAorKwkgICAgb2lkc2V0LCBHU1Nf Q19CT1RILCAmaG9zdF9jcmVkcywgTlVMTCwgTlVMTCk7CisrI2VuZGlmCisrCWdzc19yZWxlYXNl X25hbWUoJm1pbm9yLCAmaG9zdF9uYW1lKTsKKysJaWYgKEdTU19FUlJPUihtYWpvcikpIHsKKysJ CWxvZ2l0X2YoImdzc19hY3F1aXJlX2NyZWQoaG9zdEAlcykgZmFpbGVkIGFzIHVpZD0ldSBldWlk PSV1IiwKKysJCSAgICBsbmFtZSwgKHVuc2lnbmVkKWdldHVpZCgpLCAodW5zaWduZWQpZ2V0ZXVp ZCgpKTsKKysJCWxvZ19nc3NfZXJyb3IobWFqb3IsIG1pbm9yLCAiUzRVMlNlbGY6IGdzc19hY3F1 aXJlX2NyZWQiKTsKKysJCWdzc19yZWxlYXNlX29pZF9zZXQoJnN0YXR1cywgJm9pZHNldCk7Cisr CQlyZXR1cm4gLTE7CisrCX0KKysKKysJLyogSW1wb3J0IHRoZSBTU0ggdXNlcm5hbWUgYXMgYSBH U1NBUEkvS2VyYmVyb3MgbmFtZSAqLworKwlnc3NidWYudmFsdWUgPSAodm9pZCAqKXVzZXI7Cisr CWdzc2J1Zi5sZW5ndGggPSBzdHJsZW4odXNlcik7CisrCW1ham9yID0gZ3NzX2ltcG9ydF9uYW1l KCZtaW5vciwgJmdzc2J1ZiwKKysJICAgIEdTU19DX05UX1VTRVJfTkFNRSwgJnVzZXJfbmFtZSk7 CisrCWlmIChHU1NfRVJST1IobWFqb3IpKSB7CisrCQlsb2dpdF9mKCJnc3NfaW1wb3J0X25hbWUg KHVzZXIpIGZhaWxlZCIpOworKwkJZ3NzX3JlbGVhc2VfY3JlZCgmbWlub3IsICZob3N0X2NyZWRz KTsKKysJCWdzc19yZWxlYXNlX29pZF9zZXQoJnN0YXR1cywgJm9pZHNldCk7CisrCQlyZXR1cm4g LTE7CisrCX0KKysJZGVidWdfZ3NzX25hbWUoInVzZXIgbmFtZSBwYXJzZWQgYXMiLCB1c2VyX25h bWUpOworKworKwkvKiBTNFUyU2VsZjogb2J0YWluIGEgc2VydmljZSB0aWNrZXQgZm9yIHRoZSB1 c2VyIHdpdGhvdXQgdGhlaXIgY3JlZHMgKi8KKysJZGVidWdfZigiY2FsbGluZyBnc3NfYWNxdWly ZV9jcmVkX2ltcGVyc29uYXRlX25hbWUgZm9yIHVzZXIgJS4xMDBzIiwgdXNlcik7CisrCW1ham9y ID0gZ3NzX2FjcXVpcmVfY3JlZF9pbXBlcnNvbmF0ZV9uYW1lKCZtaW5vciwKKysJICAgIGhvc3Rf Y3JlZHMsIHVzZXJfbmFtZSwgbGlmZXRpbWUsCisrCSAgICBvaWRzZXQsIEdTU19DX0lOSVRJQVRF LAorKwkgICAgJmltcGVyc29uYXRlZF9jcmVkcywgTlVMTCwgTlVMTCk7CisrCisrCWdzc19yZWxl YXNlX2NyZWQoJm1pbm9yLCAmaG9zdF9jcmVkcyk7CisrCWdzc19yZWxlYXNlX29pZF9zZXQoJnN0 YXR1cywgJm9pZHNldCk7CisrCWlmIChHU1NfRVJST1IobWFqb3IpKSB7CisrCQlsb2dpdF9mKCJn c3NfYWNxdWlyZV9jcmVkX2ltcGVyc29uYXRlX25hbWUgZmFpbGVkIGZvciAlLjEwMHMiLAorKwkJ ICAgIHVzZXIpOworKwkJbG9nX2dzc19lcnJvcihtYWpvciwgbWlub3IsCisrCQkgICAgIlM0VTJT ZWxmOiBnc3NfYWNxdWlyZV9jcmVkX2ltcGVyc29uYXRlX25hbWUiKTsKKysJCWdzc19yZWxlYXNl X25hbWUoJm1pbm9yLCAmdXNlcl9uYW1lKTsKKysJCXJldHVybiAtMTsKKysJfQorKworKwkvKiBH ZXQgdGhlIGRpc3BsYXkgbmFtZSAoS2VyYmVyb3MgcHJpbmNpcGFsIHN0cmluZykgZm9yIHN0b3Jl Y3JlZHMgKi8KKysJbWFqb3IgPSBnc3NfZGlzcGxheV9uYW1lKCZtaW5vciwgdXNlcl9uYW1lLCAm ZGlzcGxheW5hbWUsIE5VTEwpOworKwlnc3NfcmVsZWFzZV9uYW1lKCZtaW5vciwgJnVzZXJfbmFt ZSk7CisrCWlmIChHU1NfRVJST1IobWFqb3IpKSB7CisrCQlsb2dpdF9mKCJnc3NfZGlzcGxheV9u YW1lIGZhaWxlZCIpOworKwkJZ3NzX3JlbGVhc2VfY3JlZCgmbWlub3IsICZpbXBlcnNvbmF0ZWRf Y3JlZHMpOworKwkJcmV0dXJuIC0xOworKwl9CisrCisrCS8qIFBvcHVsYXRlIGdzc2FwaV9jbGll bnQgZm9yIHN0b3JlY3JlZHNfczR1MnNlbGYgYW5kIHM0dTJwcm94eSAqLworKwlnc3NhcGlfY2xp ZW50Lm1lY2ggPSAmZ3NzYXBpX2tlcmJlcm9zX21lY2g7CisrCWdzc2FwaV9jbGllbnQuY3JlZHMg PSBpbXBlcnNvbmF0ZWRfY3JlZHM7CisrCWdzc2FwaV9jbGllbnQuZGlzcGxheW5hbWUudmFsdWUg PSB4bWFsbG9jKGRpc3BsYXluYW1lLmxlbmd0aCArIDEpOworKwltZW1jcHkoZ3NzYXBpX2NsaWVu dC5kaXNwbGF5bmFtZS52YWx1ZSwKKysJICAgIGRpc3BsYXluYW1lLnZhbHVlLCBkaXNwbGF5bmFt ZS5sZW5ndGgpOworKwkoKGNoYXIgKilnc3NhcGlfY2xpZW50LmRpc3BsYXluYW1lLnZhbHVlKVtk aXNwbGF5bmFtZS5sZW5ndGhdID0gJ1wwJzsKKysJZ3NzYXBpX2NsaWVudC5kaXNwbGF5bmFtZS5s ZW5ndGggPSBkaXNwbGF5bmFtZS5sZW5ndGg7CisrCS8qCisrCSAqIGV4cG9ydGVkbmFtZSBpcyB1 c2VkIGJ5IHNzaF9nc3NhcGlfa3JiNV9zdG9yZWNyZWRzIOKGkiBrcmI1X3BhcnNlX25hbWUuCisr CSAqIGdzc19kaXNwbGF5X25hbWUgZm9yIGEgdXNlci1uYW1lIHJldHVybnMgdGhlIGNhbm9uaWNh bCBwcmluY2lwYWwKKysJICogc3RyaW5nIChlLmcuIHVzZXJAUkVBTE0pIHdoaWNoIGtyYjVfcGFy c2VfbmFtZSBjYW4gY29uc3VtZSBkaXJlY3RseS4KKysJICovCisrCWdzc2FwaV9jbGllbnQuZXhw b3J0ZWRuYW1lLnZhbHVlID0geG1hbGxvYyhkaXNwbGF5bmFtZS5sZW5ndGggKyAxKTsKKysJbWVt Y3B5KGdzc2FwaV9jbGllbnQuZXhwb3J0ZWRuYW1lLnZhbHVlLAorKwkgICAgZGlzcGxheW5hbWUu dmFsdWUsIGRpc3BsYXluYW1lLmxlbmd0aCk7CisrCSgoY2hhciAqKWdzc2FwaV9jbGllbnQuZXhw b3J0ZWRuYW1lLnZhbHVlKVtkaXNwbGF5bmFtZS5sZW5ndGhdID0gJ1wwJzsKKysJZ3NzYXBpX2Ns aWVudC5leHBvcnRlZG5hbWUubGVuZ3RoID0gZGlzcGxheW5hbWUubGVuZ3RoOworKworKwlnc3Nf cmVsZWFzZV9idWZmZXIoJm1pbm9yLCAmZGlzcGxheW5hbWUpOworKwlkZWJ1Z19mKCJTNFUyU2Vs ZiBzdWNjZWVkZWQgZm9yICUuMTAwcyIsIHVzZXIpOworKwlyZXR1cm4gMDsKKyt9CisrCisrLyog QXMgdXNlciDigJQgd3JpdGUgdGhlIFM0VTJTZWxmIHRpY2tldCBpbnRvIGEgbmV3IGNjYWNoZSB2 aWEgbWVjaC0+c3RvcmVjcmVkcyAqLworIHZvaWQKKy1zc2hfZ3NzYXBpX2NsZWFudXBfY3JlZHMo dm9pZCkKKytzc2hfZ3NzYXBpX3N0b3JlY3JlZHNfczR1MnNlbGYodm9pZCkKKyB7CistCWtyYjVf Y2NhY2hlIGNjYWNoZSA9IE5VTEw7CistCWtyYjVfZXJyb3JfY29kZSBwcm9ibGVtOworLQorLQlp ZiAoZ3NzYXBpX2NsaWVudC5zdG9yZS5kYXRhICE9IE5VTEwpIHsKKy0JCWlmICgocHJvYmxlbSA9 IGtyYjVfY2NfcmVzb2x2ZShnc3NhcGlfY2xpZW50LnN0b3JlLmRhdGEsIGdzc2FwaV9jbGllbnQu c3RvcmUuZW52dmFsLCAmY2NhY2hlKSkpIHsKKy0JCQlkZWJ1Z19mKCJrcmI1X2NjX3Jlc29sdmUo KTogJS4xMDBzIiwKKy0JCQkJa3JiNV9nZXRfZXJyX3RleHQoZ3NzYXBpX2NsaWVudC5zdG9yZS5k YXRhLCBwcm9ibGVtKSk7CistCQl9IGVsc2UgaWYgKChwcm9ibGVtID0ga3JiNV9jY19kZXN0cm95 KGdzc2FwaV9jbGllbnQuc3RvcmUuZGF0YSwgY2NhY2hlKSkpIHsKKy0JCQlkZWJ1Z19mKCJrcmI1 X2NjX2Rlc3Ryb3koKTogJS4xMDBzIiwKKy0JCQkJa3JiNV9nZXRfZXJyX3RleHQoZ3NzYXBpX2Ns aWVudC5zdG9yZS5kYXRhLCBwcm9ibGVtKSk7CistCQl9IGVsc2UgeworLQkJCWtyYjVfZnJlZV9j b250ZXh0KGdzc2FwaV9jbGllbnQuc3RvcmUuZGF0YSk7CistCQkJZ3NzYXBpX2NsaWVudC5zdG9y ZS5kYXRhID0gTlVMTDsKKysJaWYgKGdzc2FwaV9jbGllbnQubWVjaCA9PSBOVUxMIHx8IGdzc2Fw aV9jbGllbnQubWVjaC0+c3RvcmVjcmVkcyA9PSBOVUxMKSB7CisrCQlkZWJ1Z19mKCJubyBHU1NB UEkgbWVjaGFuaXNtIGZvciBzdG9yaW5nIFM0VTJTZWxmIGNyZWRlbnRpYWxzIik7CisrCQlyZXR1 cm47CisrCX0KKysJKCpnc3NhcGlfY2xpZW50Lm1lY2gtPnN0b3JlY3JlZHMpKCZnc3NhcGlfY2xp ZW50KTsKKyt9CisrCisrLyoKKysgKiBQZXJmb3JtIFM0VTJQcm94eSBmb3IgZWFjaCBjb25maWd1 cmVkIHNlcnZpY2UgcHJpbmNpcGFsLCB0aGVuIGZsdXNoIGFsbAorKyAqIHJlc3VsdGluZyB0aWNr ZXRzIGludG8gdGhlIHVzZXIncyBjY2FjaGUuICBSdW5zIGFzIHVzZXIsIGFmdGVyCisrICogc3No X2dzc2FwaV9zdG9yZWNyZWRzX3M0dTJzZWxmKCkgaGFzIGNyZWF0ZWQgdGhlIGNjYWNoZS4KKysg KgorKyAqIGdzc2FwaV9jbGllbnQuY3JlZHMgKHRoZSBTNFUyU2VsZiBwcm94eSBjcmVkZW50aWFs KSBpcyBwYXNzZWQgYXMgdGhlCisrICogaW5pdGlhdG9yIHRvIGdzc19pbml0X3NlY19jb250ZXh0 KCk7IHRoZSBHU1NBUEkgbGlicmFyeSBwcmVzZW50cyB0aGUgVEdUCisrICogYW5kIGV2aWRlbmNl IHRpY2tldCB0byB0aGUgS0RDIHZpYSBTNFUyUHJveHkgVEdTLVJFUS4gIFRoZSBvdXRwdXQgdG9r ZW4KKysgKiAoQVAtUkVRKSBpcyBkaXNjYXJkZWQg4oCUIHdlIGRvIG5vdCBjb25uZWN0IHRvIHRo ZSB0YXJnZXQgc2VydmljZS4KKysgKgorKyAqIEFmdGVyIGl0ZXJhdGluZyBhbGwgc2VydmljZXMs IGdzc19zdG9yZV9jcmVkKCkgZmx1c2hlcyB0aGUgYWNjdW11bGF0ZWQKKysgKiBwcm94eSBzZXJ2 aWNlIHRpY2tldHMgZnJvbSB0aGUgY3JlZGVudGlhbCdzIGludGVybmFsIGNjYWNoZSBpbnRvIHRo ZQorKyAqIEtSQjVDQ05BTUUgY2NhY2hlIHRoYXQgc3RvcmVjcmVkc19zNHUyc2VsZigpIGFscmVh ZHkgY3JlYXRlZC4KKysgKi8KKysvKiBBcyB1c2VyICovCisrdm9pZAorK3NzaF9nc3NhcGlfczR1 MnByb3h5KGNoYXIgKipzZXJ2aWNlcywgdV9pbnQgbnNlcnZpY2VzLCB1X2ludCBsaWZldGltZSkK Kyt7CisrCU9NX3VpbnQzMiBtYWpvciwgbWlub3I7CisrCWdzc19idWZmZXJfZGVzYyBzZXJ2aWNl X2J1Ziwgb3V0cHV0X3Rva2VuID0gR1NTX0NfRU1QVFlfQlVGRkVSOworKwlnc3NfbmFtZV90IHRh cmdldF9uYW1lOworKwlnc3NfY3R4X2lkX3QgY3R4OworKwl1X2ludCBpOworKworKwlpZiAoZ3Nz YXBpX2NsaWVudC5jcmVkcyA9PSBHU1NfQ19OT19DUkVERU5USUFMKSB7CisrCQlkZWJ1Z19mKCJu byBwcm94eSBjcmVkZW50aWFsIGF2YWlsYWJsZSIpOworKwkJcmV0dXJuOworKwl9CisrCWlmIChn c3NhcGlfY2xpZW50LnN0b3JlLmVudnZhbCA9PSBOVUxMKSB7CisrCQlkZWJ1Z19mKCJubyBjY2Fj aGUgcGF0aCBzZXQ7IGNhbm5vdCBzdG9yZSBwcm94eSB0aWNrZXRzIik7CisrCQlyZXR1cm47Cisr CX0KKysKKysJZGVidWdfZigic3RhcnRpbmcgUzRVMlByb3h5IGFzIHVpZD0ldSBldWlkPSV1LCAl dSBzZXJ2aWNlKHMpLCBjY2FjaGU9JXMiLAorKwkgICAgKHVuc2lnbmVkKWdldHVpZCgpLCAodW5z aWduZWQpZ2V0ZXVpZCgpLCBuc2VydmljZXMsCisrCSAgICBnc3NhcGlfY2xpZW50LnN0b3JlLmVu dnZhbCk7CisrCisrCS8qIFBvaW50IHRoZSBHU1NBUEkgbGlicmFyeSBhdCB0aGUgdXNlcidzIGNj YWNoZSBmb3IgdGlja2V0IHN0b3JhZ2UgKi8KKysJc2V0ZW52KCJLUkI1Q0NOQU1FIiwgZ3NzYXBp X2NsaWVudC5zdG9yZS5lbnZ2YWwsIDEpOworKworKwlmb3IgKGkgPSAwOyBpIDwgbnNlcnZpY2Vz OyBpKyspIHsKKysJCWN0eCA9IEdTU19DX05PX0NPTlRFWFQ7CisrCQl0YXJnZXRfbmFtZSA9IEdT U19DX05PX05BTUU7CisrCisrCQlzZXJ2aWNlX2J1Zi52YWx1ZSA9IHNlcnZpY2VzW2ldOworKwkJ c2VydmljZV9idWYubGVuZ3RoID0gc3RybGVuKHNlcnZpY2VzW2ldKTsKKysKKysJCS8qCisrCQkg KiBHU1NfQ19OT19PSUQ6IGxldCB0aGUgbGlicmFyeSBkZXRlcm1pbmUgdGhlIG5hbWUgdHlwZS4K KysJCSAqIFdpdGggS2VyYmVyb3MgYXMgdGhlIGFjdGl2ZSBtZWNoYW5pc20sIGEgZnVsbHktcXVh bGlmaWVkCisrCQkgKiBwcmluY2lwYWwgbGlrZSAic3ZjL2hvc3RAUkVBTE0iIGlzIHBhcnNlZCBj b3JyZWN0bHkuCisrCQkgKi8KKysJCW1ham9yID0gZ3NzX2ltcG9ydF9uYW1lKCZtaW5vciwgJnNl cnZpY2VfYnVmLAorKwkJICAgIEdTU19DX05PX09JRCwgJnRhcmdldF9uYW1lKTsKKysJCWlmIChH U1NfRVJST1IobWFqb3IpKSB7CisrCQkJbG9naXRfZigiZ3NzX2ltcG9ydF9uYW1lIGZhaWxlZCBm b3IgJS4yMDBzIiwKKysJCQkgICAgc2VydmljZXNbaV0pOworKwkJCWxvZ19nc3NfZXJyb3IobWFq b3IsIG1pbm9yLCAiUzRVMlByb3h5OiBnc3NfaW1wb3J0X25hbWUiKTsKKysJCQljb250aW51ZTsK KyAJCX0KKysJCWRlYnVnX2dzc19uYW1lKCJ0YXJnZXQgc2VydmljZSBuYW1lIHBhcnNlZCBhcyIs IHRhcmdldF9uYW1lKTsKKysKKysJCWRlYnVnX2YoImNhbGxpbmcgZ3NzX2luaXRfc2VjX2NvbnRl eHQgZm9yICUuMjAwcyIsIHNlcnZpY2VzW2ldKTsKKysJCW1ham9yID0gZ3NzX2luaXRfc2VjX2Nv bnRleHQoJm1pbm9yLAorKwkJICAgIGdzc2FwaV9jbGllbnQuY3JlZHMsCQkvKiBwcm94eSBjcmVk ZW50aWFsICovCisrCQkgICAgJmN0eCwgdGFyZ2V0X25hbWUsCisrCQkgICAgR1NTX0NfTk9fT0lE LAkJCS8qIGRlZmF1bHQgbWVjaCAoS2VyYmVyb3MpICovCisrCQkgICAgMCwJCQkJCS8qIG5vIGZs YWdzLCBubyBtdXR1YWwgYXV0aCAqLworKwkJICAgIGxpZmV0aW1lLAorKwkJICAgIEdTU19DX05P X0NIQU5ORUxfQklORElOR1MsCisrCQkgICAgR1NTX0NfTk9fQlVGRkVSLAkJCS8qIG5vIGlucHV0 IHRva2VuICovCisrCQkgICAgTlVMTCwJCQkJLyogYWN0dWFsX21lY2hfdHlwZSAqLworKwkJICAg ICZvdXRwdXRfdG9rZW4sCisrCQkgICAgTlVMTCwJCQkJLyogcmV0X2ZsYWdzICovCisrCQkgICAg TlVMTCk7CQkJCS8qIHRpbWVfcmVjICovCisrCisrCQlnc3NfcmVsZWFzZV9idWZmZXIoJm1pbm9y LCAmb3V0cHV0X3Rva2VuKTsKKysJCWdzc19yZWxlYXNlX25hbWUoJm1pbm9yLCAmdGFyZ2V0X25h bWUpOworKwkJaWYgKGN0eCAhPSBHU1NfQ19OT19DT05URVhUKQorKwkJCWdzc19kZWxldGVfc2Vj X2NvbnRleHQoJm1pbm9yLCAmY3R4LCBHU1NfQ19OT19CVUZGRVIpOworKworKwkJaWYgKEdTU19F UlJPUihtYWpvcikpIHsKKysJCQlsb2dpdF9mKCJTNFUyUHJveHkgZm9yICUuMjAwcyBvbiBiZWhh bGYgb2YgJS4yMDBzIGZhaWxlZCIsCisrCQkJICAgIHNlcnZpY2VzW2ldLAorKwkJCSAgICAoY2hh ciAqKWdzc2FwaV9jbGllbnQuZGlzcGxheW5hbWUudmFsdWUpOworKwkJCWxvZ19nc3NfZXJyb3Io bWFqb3IsIG1pbm9yLAorKwkJCSAgICAiUzRVMlByb3h5OiBnc3NfaW5pdF9zZWNfY29udGV4dCIp OworKwkJfSBlbHNlCisrCQkJZGVidWdfZigiUzRVMlByb3h5IHRpY2tldCBvYnRhaW5lZCBmb3Ig JS4yMDBzIiwKKysJCQkgICAgc2VydmljZXNbaV0pOworIAl9CisrCisrCS8qCisrCSAqIEZsdXNo IGFsbCBwcm94eSBzZXJ2aWNlIHRpY2tldHMgZnJvbSB0aGUgY3JlZGVudGlhbCdzIGludGVybmFs CisrCSAqIGNjYWNoZSBpbnRvIHRoZSBLUkI1Q0NOQU1FIGNjYWNoZSB2aWEgZ3NzX3N0b3JlX2Ny ZWQoKS4KKysJICovCisrCW1ham9yID0gZ3NzX3N0b3JlX2NyZWQoJm1pbm9yLCBnc3NhcGlfY2xp ZW50LmNyZWRzLCBHU1NfQ19JTklUSUFURSwKKysJICAgIEdTU19DX05PX09JRCwgMSAvKiBvdmVy d3JpdGVfY3JlZCAqLywgMSAvKiBkZWZhdWx0X2NyZWQgKi8sCisrCSAgICBOVUxMLCBOVUxMKTsK KysJaWYgKEdTU19FUlJPUihtYWpvcikpIHsKKysJCWxvZ2l0X2YoImdzc19zdG9yZV9jcmVkIGZh aWxlZDsgcHJveHkgdGlja2V0cyBtYXkgYmUgbWlzc2luZyIpOworKwkJbG9nX2dzc19lcnJvciht YWpvciwgbWlub3IsICJTNFUyUHJveHk6IGdzc19zdG9yZV9jcmVkIik7CisrCX0KKysKKysJdW5z ZXRlbnYoIktSQjVDQ05BTUUiKTsKKyt9CisrCisrI2lmbmRlZiBLUkI1CisrLyogQXMgdXNlciAt IGNhbGxlZCBvbiBmYXRhbC9leGl0OyBmdWxsIGltcGxlbWVudGF0aW9uIGluIGdzcy1zZXJ2LWty YjUuYyAqLworK3ZvaWQKKytzc2hfZ3NzYXBpX2NsZWFudXBfY3JlZHModm9pZCkKKyt7CisrfQor KworKy8qCisrICogRmlsdGVyIHRoZSB1c2VyJ3MgY2NhY2hlOyBmdWxsIGltcGxlbWVudGF0aW9u IGluIGdzcy1zZXJ2LWtyYjUuYy4KKysgKi8KKyt2b2lkCisrc3NoX2dzc2FwaV9rcmI1X2ZpbHRl cl9jY2FjaGUodV9pbnQgZHJvcF9mbGFncywKKysgICAgY2hhciAqKnByb3h5X3NlcnZpY2VzLCB1 X2ludCBucHJveHlfc2VydmljZXMpCisreworIH0KKysjZW5kaWYgLyogIUtSQjUgKi8KKyAKKyAv KiBBcyB1c2VyICovCisgaW50CitkaWZmIC0tZ2l0IGEvc2VydmNvbmYuYyBiL3NlcnZjb25mLmMK K2luZGV4IDAzYjg0ZWNiOC4uYWI3MzI3YTJhIDEwMDY0NAorLS0tIGEvc2VydmNvbmYuYworKysr IGIvc2VydmNvbmYuYworQEAgLTE1MDAsNiArMTUwMCw0MyBAQCBwcm9jZXNzX3NlcnZlcl9jb25m aWdfbGluZV9kZXB0aChTZXJ2ZXJPcHRpb25zICpvcHRpb25zLCBjaGFyICpsaW5lLAorIAkJaWYg KG9wdGlvbnMtPmdzc19pbmRpY2F0b3JzID09IE5VTEwpCisgCQkJb3B0aW9ucy0+Z3NzX2luZGlj YXRvcnMgPSB4c3RyZHVwKGFyZyk7CisgCQlicmVhazsKKysKKysJY2FzZSBzR1NTQVBJQWxsb3dT NFUyU2VsZjoKKysJCWFyZyA9IGFyZ3ZfbmV4dCgmYWMsICZhdik7CisrCQlpZiAoIWFyZyB8fCAq YXJnID09ICdcMCcpCisrCQkJZmF0YWwoIiVzIGxpbmUgJWQ6ICVzIG1pc3NpbmcgYXJndW1lbnQu IiwKKysJCQkgICAgZmlsZW5hbWUsIGxpbmVudW0sIGtleXdvcmQpOworKwkJaWYgKHN0cmNhc2Vj bXAoYXJnLCAibm8iKSA9PSAwKQorKwkJCXZhbHVlID0gMDsKKysJCWVsc2UgaWYgKHN0cmNhc2Vj bXAoYXJnLCAieWVzIikgPT0gMCkKKysJCQl2YWx1ZSA9IElOVF9NQVg7CisrCQllbHNlIGlmICgo dmFsdWUgPSBjb252dGltZShhcmcpKSA8PSAwKQorKwkJCWZhdGFsKCIlcyBsaW5lICVkOiBpbnZh bGlkICVzIHZhbHVlIFwiJXNcIi4iLAorKwkJCSAgICBmaWxlbmFtZSwgbGluZW51bSwga2V5d29y ZCwgYXJnKTsKKysJCWlmICgqYWN0aXZlcCAmJiBvcHRpb25zLT5nc3NfYWxsb3dfczR1MnNlbGYg PT0gLTEpCisrCQkJb3B0aW9ucy0+Z3NzX2FsbG93X3M0dTJzZWxmID0gdmFsdWU7CisrCQlicmVh azsKKysKKysJY2FzZSBzR1NTQVBJUHJveHlTNFUyU2VydmljZXM6CisrCQl3aGlsZSAoKGFyZyA9 IGFyZ3ZfbmV4dCgmYWMsICZhdikpICE9IE5VTEwpIHsKKysJCQlpZiAoKmFyZyA9PSAnXDAnKQor KwkJCQlmYXRhbCgiJXMgbGluZSAlZDogJXMgbWlzc2luZyBhcmd1bWVudC4iLAorKwkJCQkgICAg ZmlsZW5hbWUsIGxpbmVudW0sIGtleXdvcmQpOworKwkJCWlmIChzdHJjYXNlY21wKGFyZywgIm5v bmUiKSA9PSAwKSB7CisrCQkJCWZvciAoaSA9IDA7IGkgPCBvcHRpb25zLT5udW1fZ3NzX3Byb3h5 X3NlcnZpY2VzOyBpKyspCisrCQkJCQlmcmVlKG9wdGlvbnMtPmdzc19wcm94eV9zZXJ2aWNlc1tp XSk7CisrCQkJCWZyZWUob3B0aW9ucy0+Z3NzX3Byb3h5X3NlcnZpY2VzKTsKKysJCQkJb3B0aW9u cy0+Z3NzX3Byb3h5X3NlcnZpY2VzID0gTlVMTDsKKysJCQkJb3B0aW9ucy0+bnVtX2dzc19wcm94 eV9zZXJ2aWNlcyA9IDA7CisrCQkJCWJyZWFrOworKwkJCX0KKysJCQlpZiAoISphY3RpdmVwKQor KwkJCQljb250aW51ZTsKKysJCQlvcHRfYXJyYXlfYXBwZW5kKGZpbGVuYW1lLCBsaW5lbnVtLCBr ZXl3b3JkLAorKwkJCSAgICAmb3B0aW9ucy0+Z3NzX3Byb3h5X3NlcnZpY2VzLAorKwkJCSAgICAm b3B0aW9ucy0+bnVtX2dzc19wcm94eV9zZXJ2aWNlcywgYXJnKTsKKysJCX0KKysJCWJyZWFrOwor ICNlbmRpZiAvKiBHU1NBUEkgKi8KKyAKKyAJY2FzZSBzUGFzc3dvcmRBdXRoZW50aWNhdGlvbjoK K0BAIC00MjkxLDYgKzQzMjgsMTUgQEAgZHVtcF9jb25maWcoU2VydmVyT3B0aW9ucyAqbykKKyAJ ZHVtcF9jZmdfZm10aW50KHNHU1NBUElTdG9yZUNyZWRlbnRpYWxzT25SZWtleSwgby0+Z3NzX3N0 b3JlX3Jla2V5KTsKKyAJZHVtcF9jZmdfc3RyaW5nKHNHU1NBUElLZXhBbGdvcml0aG1zLCBvLT5n c3Nfa2V4X2FsZ29yaXRobXMpOworIAlkdW1wX2NmZ19zdHJpbmcoc0dTU0FQSUluZGljYXRvcnMs IG8tPmdzc19pbmRpY2F0b3JzKTsKKysJaWYgKG8tPmdzc19hbGxvd19zNHUyc2VsZiA9PSAwKQor KwkJcHJpbnRmKCIlcyBub1xuIiwgbG9va3VwX29wY29kZV9uYW1lKHNHU1NBUElBbGxvd1M0VTJT ZWxmKSk7CisrCWVsc2UgaWYgKG8tPmdzc19hbGxvd19zNHUyc2VsZiA9PSBJTlRfTUFYKQorKwkJ cHJpbnRmKCIlcyB5ZXNcbiIsIGxvb2t1cF9vcGNvZGVfbmFtZShzR1NTQVBJQWxsb3dTNFUyU2Vs ZikpOworKwllbHNlCisrCQlwcmludGYoIiVzICVkXG4iLCBsb29rdXBfb3Bjb2RlX25hbWUoc0dT U0FQSUFsbG93UzRVMlNlbGYpLAorKwkJICAgIG8tPmdzc19hbGxvd19zNHUyc2VsZik7CisrCWR1 bXBfY2ZnX3N0cmFycmF5X29uZWxpbmUoc0dTU0FQSVByb3h5UzRVMlNlcnZpY2VzLAorKwkgICAg by0+bnVtX2dzc19wcm94eV9zZXJ2aWNlcywgby0+Z3NzX3Byb3h5X3NlcnZpY2VzKTsKKyAjZW5k aWYKKyAJZHVtcF9jZmdfZm10aW50KHNQYXNzd29yZEF1dGhlbnRpY2F0aW9uLCBvLT5wYXNzd29y ZF9hdXRoZW50aWNhdGlvbik7CisgCWR1bXBfY2ZnX2ZtdGludChzS2JkSW50ZXJhY3RpdmVBdXRo ZW50aWNhdGlvbiwKK2RpZmYgLS1naXQgYS9zZXJ2Y29uZi5oIGIvc2VydmNvbmYuaAoraW5kZXgg YzFiYmQ4MmI4Li42MTU2NWYwYWUgMTAwNjQ0CistLS0gYS9zZXJ2Y29uZi5oCisrKysgYi9zZXJ2 Y29uZi5oCitAQCAtMzI5LDcgKzMyOSw5IEBAIFNTSENPTkZfSU5URkxBRyhnc3Nfa2V5ZXgsIEdT U0FQSUtleUV4Y2hhbmdlLCBTU0hDRkdfR0xPQkFMLCAwLCBTU0hDRkdfQ09QWV9OT05FCisgU1NI Q09ORl9JTlRGTEFHKGdzc19zdG9yZV9yZWtleSwgR1NTQVBJU3RvcmVDcmVkZW50aWFsc09uUmVr ZXksIFNTSENGR19HTE9CQUwsIDAsIFNTSENGR19DT1BZX05PTkUpIFwKKyBTU0hDT05GX1NUUklO Ryhnc3Nfa2V4X2FsZ29yaXRobXMsIEdTU0FQSUtleEFsZ29yaXRobXMsIFNTSENGR19HTE9CQUws IFNTSENGR19DT1BZX05PTkUpIFwKKyBTU0hDT05GX0lOVEZMQUcoZW5hYmxlX2s1dXNlcnMsIEdT U0FQSUVuYWJsZWs1dXNlcnMsIFNTSENGR19BTEwsIDAsIFNTSENGR19DT1BZX01BVENIKSBcCist U1NIQ09ORl9TVFJJTkcoZ3NzX2luZGljYXRvcnMsIEdTU0FQSUluZGljYXRvcnMsIFNTSENGR19B TEwsIFNTSENGR19DT1BZX01BVENIKQorK1NTSENPTkZfU1RSSU5HKGdzc19pbmRpY2F0b3JzLCBH U1NBUElJbmRpY2F0b3JzLCBTU0hDRkdfQUxMLCBTU0hDRkdfQ09QWV9NQVRDSCkgXAorK1NTSENP TkZfSU5URkxBRyhnc3NfYWxsb3dfczR1MnNlbGYsIEdTU0FQSUFsbG93UzRVMlNlbGYsIFNTSENG R19BTEwsIDAsIFNTSENGR19DT1BZX01BVENIKSBcCisrU1NIQ09ORl9TVFJBUlJBWShnc3NfcHJv eHlfc2VydmljZXMsIG51bV9nc3NfcHJveHlfc2VydmljZXMsIEdTU0FQSVByb3h5UzRVMlNlcnZp Y2VzLCBTU0hDRkdfQUxMLCBTU0hDRkdfQ09QWV9NQVRDSCkKKyAjZWxzZSAvKiBHU1NBUEkgKi8K KyAjZGVmaW5lIFNTSERfQ09ORklHX0VOVFJJRVNfR1NTIFwKKyBTU0hDT05GX1VOU1VQUE9SVEVE X0lOVChnc3NfYXV0aGVudGljYXRpb24sIEdTU0FQSUF1dGhlbnRpY2F0aW9uLCBTU0hDRkdfQUxM KSBcCitAQCAtMzQwLDcgKzM0Miw5IEBAIFNTSENPTkZfVU5TVVBQT1JURURfSU5UKGdzc19rZXll eCwgR1NTQVBJS2V5RXhjaGFuZ2UsIFNTSENGR19HTE9CQUwpIFwKKyBTU0hDT05GX1VOU1VQUE9S VEVEX0lOVChnc3Nfc3RvcmVfcmVrZXksIEdTU0FQSVN0b3JlQ3JlZGVudGlhbHNPblJla2V5LCBT U0hDRkdfR0xPQkFMKSBcCisgU1NIQ09ORl9VTlNVUFBPUlRFRF9TVFJJTkcoZ3NzX2tleF9hbGdv cml0aG1zLCBHU1NBUElLZXhBbGdvcml0aG1zLCBTU0hDRkdfR0xPQkFMKSBcCisgU1NIQ09ORl9V TlNVUFBPUlRFRF9JTlQoZW5hYmxlX2s1dXNlcnMsIEdTU0FQSUVuYWJsZWs1dXNlcnMsIFNTSENG R19BTEwpIFwKKy1TU0hDT05GX1VOU1VQUE9SVEVEX1NUUklORyhnc3NfaW5kaWNhdG9ycywgR1NT QVBJSW5kaWNhdG9ycywgU1NIQ0ZHX0FMTCkKKytTU0hDT05GX1VOU1VQUE9SVEVEX1NUUklORyhn c3NfaW5kaWNhdG9ycywgR1NTQVBJSW5kaWNhdG9ycywgU1NIQ0ZHX0FMTCkgXAorK1NTSENPTkZf VU5TVVBQT1JURURfSU5UKGdzc19hbGxvd19zNHUyc2VsZiwgR1NTQVBJQWxsb3dTNFUyU2VsZiwg U1NIQ0ZHX0FMTCkgXAorK1NTSENPTkZfVU5TVVBQT1JURURfU1RSSU5HKGdzc19wcm94eV9zZXJ2 aWNlcywgR1NTQVBJUHJveHlTNFUyU2VydmljZXMsIFNTSENGR19BTEwpCisgI2VuZGlmIC8qIEdT U0FQSSAqLworIAorICNkZWZpbmUgU1NIRF9DT05GSUdfRU5UUklFUyBcCitkaWZmIC0tZ2l0IGEv c3NoLWdzcy5oIGIvc3NoLWdzcy5oCitpbmRleCAxNTA2NzE5YTkuLmEwZDUxYzliZSAxMDA2NDQK Ky0tLSBhL3NzaC1nc3MuaAorKysrIGIvc3NoLWdzcy5oCitAQCAtMTE5LDYgKzExOSw3IEBAIHR5 cGVkZWYgc3RydWN0IHsKKyAJaW50IHVzZWQ7CisgCWludCB1cGRhdGVkOworIAljaGFyICoqaW5k aWNhdG9yczsgLyogYXV0aCBpbmRpY2F0b3JzICovCisrCWludCBhbGxvd19zZWxmOyAvKiBhbGxv dyBwcm90b2NvbCB0cmFuc2l0aW9uICovCisgfSBzc2hfZ3NzYXBpX2NsaWVudDsKKyAKKyB0eXBl ZGVmIHN0cnVjdCBzc2hfZ3NzYXBpX21lY2hfc3RydWN0IHsKK0BAIC0xOTksNiArMjAwLDE4IEBA IE9NX3VpbnQzMiBzc2hfZ3NzYXBpX2NoZWNrbWljKEdzc2N0eHQgKiwgZ3NzX2J1ZmZlcl90LCBn c3NfYnVmZmVyX3QpOworIHZvaWQgc3NoX2dzc2FwaV9kb19jaGlsZChjaGFyICoqKiwgdV9pbnQg Kik7Cisgdm9pZCBzc2hfZ3NzYXBpX2NsZWFudXBfY3JlZHModm9pZCk7CisgaW50IHNzaF9nc3Nh cGlfc3RvcmVjcmVkcyh2b2lkKTsKKytpbnQgIHNzaF9nc3NhcGlfY3JlZGVudGlhbHNfc3RvcmVk KHZvaWQpOworK3NzaF9nc3NhcGlfY2NhY2hlICpzc2hfZ3NzYXBpX2dldF9jY2FjaGUodm9pZCk7 CisraW50ICBzc2hfZ3NzYXBpX3VzZXJfaGFzX3ZhbGlkX3RndCh1X2ludCk7CisraW50ICBzc2hf Z3NzYXBpX3VzZXJfaGFzX3ZhbGlkX3Byb3h5X3RpY2tldHMoY2hhciAqKiwgdV9pbnQsIHVfaW50 KTsKKytpbnQgIHNzaF9nc3NhcGlfczR1MnNlbGYoY29uc3QgY2hhciAqLCB1X2ludCk7Cisrdm9p ZCBzc2hfZ3NzYXBpX3N0b3JlY3JlZHNfczR1MnNlbGYodm9pZCk7Cisrdm9pZCBzc2hfZ3NzYXBp X3M0dTJwcm94eShjaGFyICoqLCB1X2ludCwgdV9pbnQpOworKy8qIEZsYWdzIGZvciBzc2hfZ3Nz YXBpX2tyYjVfZmlsdGVyX2NjYWNoZSgpOiB3aGljaCB0aWNrZXQgY2xhc3NlcyB0byByZW1vdmUg Ki8KKysjZGVmaW5lIFNTSF9HU1NBUElfQ0NGSUxURVJfVEdUICAgICgxdSA8PCAwKSAvKiBrcmJ0 Z3QvLi4uIGVudHJpZXMgKi8KKysjZGVmaW5lIFNTSF9HU1NBUElfQ0NGSUxURVJfU0VMRiAgICgx dSA8PCAxKSAvKiBTNFUyU2VsZiBldmlkZW5jZSB0aWNrZXQgKi8KKysjZGVmaW5lIFNTSF9HU1NB UElfQ0NGSUxURVJfUFJPWFkgICgxdSA8PCAyKSAvKiBTNFUyUHJveHkgc2VydmljZSB0aWNrZXRz ICovCisrdm9pZCBzc2hfZ3NzYXBpX2tyYjVfZmlsdGVyX2NjYWNoZSh1X2ludCwgY2hhciAqKiwg dV9pbnQpOworIGNvbnN0IGNoYXIgKnNzaF9nc3NhcGlfZGlzcGxheW5hbWUodm9pZCk7CisgCisg Y2hhciAqc3NoX2dzc2FwaV9zZXJ2ZXJfbWVjaGFuaXNtcyh2b2lkKTsKK2RpZmYgLS1naXQgYS9z c2hkLXNlc3Npb24uYyBiL3NzaGQtc2Vzc2lvbi5jCitpbmRleCAwMjg0YzhlNDIuLjI5OTcxZGM3 MCAxMDA2NDQKKy0tLSBhL3NzaGQtc2Vzc2lvbi5jCisrKysgYi9zc2hkLXNlc3Npb24uYworQEAg LTEzOTQsNiArMTM5NCwxMDQgQEAgbWFpbihpbnQgYWMsIGNoYXIgKiphdikKKyAJCWF1dGhjdHh0 LT5rcmI1X3NldF9lbnYgPSBzc2hfZ3NzYXBpX3N0b3JlY3JlZHMoKTsKKyAJCXJlc3RvcmVfdWlk KCk7CisgCX0KKysJLyoKKysJICogR1NTQVBJQWxsb3dTNFUyU2VsZiAvIEdTU0FQSVByb3h5UzRV MlNlcnZpY2VzOiBpZiBubyBjcmVkZW50aWFscyB3ZXJlIHN0b3JlZAorKwkgKiBhYm92ZSAoaS5l LiBubyBHU1NBUEkgYXV0aCB3aXRoIGRlbGVnYXRpb24gb2NjdXJyZWQpLCB1c2UgUzRVMlNlbGYK KysJICogdG8gb2J0YWluIGFuIGltcGVyc29uYXRlZCBjcmVkZW50aWFsIGZvciB0aGUgdXNlciwg dGhlbiBvcHRpb25hbGx5CisrCSAqIGZvbGxvdyB3aXRoIFM0VTJQcm94eSBmb3IgY29uZmlndXJl ZCB0YXJnZXQgc2VydmljZXMuCisrCSAqCisrCSAqIEdTU0FQSUFsbG93UzRVMlNlbGYgYWxvbmU6 ICAgIHN0b3JlIFM0VTJTZWxmIGV2aWRlbmNlIHRpY2tldCBvbmx5OworKwkgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0aGUgaG9zdCBUR1QgaXMgcmVtb3ZlZC4KKysJICogR1NTQVBJUHJv eHlTNFUyU2VydmljZXMgYWxvbmU6IHN0b3JlIGhvc3QgVEdUIGFuZCBTNFUyUHJveHkgc2Vydmlj ZQorKwkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXRzOyB0aGUgUzRVMlNlbGYg ZXZpZGVuY2UgdGlja2V0CisrCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHJlbW92 ZWQuCisrCSAqIEJvdGg6ICAgICAgICAgICAgICAgICAgICAgc3RvcmUgaG9zdCBUR1QsIFM0VTJT ZWxmIGV2aWRlbmNlIHRpY2tldCwKKysJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5k IGFsbCBTNFUyUHJveHkgc2VydmljZSB0aWNrZXRzLgorKwkgKgorKwkgKiBXaGVuIFM0VTJQcm94 eSB0aWNrZXRzIGFyZSBwcmVzZW50IHRoZSBob3N0IFRHVCBtdXN0IHJlbWFpbiBpbiB0aGUKKysJ ICogY2NhY2hlOyBhcHBsaWNhdGlvbnMgY2hlY2sgZm9yIFRHVCBwcmVzZW5jZSB0byBkZXRlcm1p bmUgd2hldGhlcgorKwkgKiBLZXJiZXJvcyBjcmVkZW50aWFscyBhcmUgYXZhaWxhYmxlLiAgT25s eSBpbiBHU1NBUElBbGxvd1M0VTJTZWxmLWFsb25lCisrCSAqIG1vZGUgKG5vIHByb3h5IHRpY2tl dHMpIGlzIHRoZSBob3N0IFRHVCByZW1vdmVkLgorKwkgKgorKwkgKiBTa2lwIFM0VTJTZWxmIHdo ZW4gdGhlIHVzZXIgYWxyZWFkeSBoYXMgY3JlZGVudGlhbHMgY292ZXJpbmcgdGhlCisrCSAqIHJl cXVlc3RlZCBsaWZldGltZTogY2hlY2sgZm9yIGEgdmFsaWQgVEdUIGluIHRoZSBHU1NBUElBbGxv d1M0VTJTZWxmLQorKwkgKiBhbG9uZSBjYXNlLCBvciBmb3IgdmFsaWQgcHJveHkgdGlja2V0cyBm b3IgZXZlcnkgY29uZmlndXJlZCBzZXJ2aWNlCisrCSAqIG90aGVyd2lzZS4KKysJICovCisrCWlm ICgob3B0aW9ucy5nc3NfYWxsb3dfczR1MnNlbGYgfHwgb3B0aW9ucy5udW1fZ3NzX3Byb3h5X3Nl cnZpY2VzID4gMCkgJiYKKysJICAgICFzc2hfZ3NzYXBpX2NyZWRlbnRpYWxzX3N0b3JlZCgpKSB7 CisrCQl1X2ludCBsaWZldGltZSA9ICghb3B0aW9ucy5nc3NfYWxsb3dfczR1MnNlbGYgfHwKKysJ CSAgICBvcHRpb25zLmdzc19hbGxvd19zNHUyc2VsZiA9PSBJTlRfTUFYKSA/CisrCQkgICAgR1NT X0NfSU5ERUZJTklURSA6ICh1X2ludClvcHRpb25zLmdzc19hbGxvd19zNHUyc2VsZjsKKysJCWlu dCBza2lwID0gMDsKKysKKysJCXRlbXBvcmFyaWx5X3VzZV91aWQoYXV0aGN0eHQtPnB3KTsKKysJ CWlmIChvcHRpb25zLmdzc19hbGxvd19zNHUyc2VsZiAmJgorKwkJICAgIG9wdGlvbnMubnVtX2dz c19wcm94eV9zZXJ2aWNlcyA9PSAwKSB7CisrCQkJLyogUzRVMlNlbGYtYWxvbmU6IHNraXAgaWYg dXNlciBhbHJlYWR5IGhhcyBhIHZhbGlkIFRHVCAqLworKwkJCXNraXAgPSBzc2hfZ3NzYXBpX3Vz ZXJfaGFzX3ZhbGlkX3RndChsaWZldGltZSk7CisrCQl9IGVsc2UgaWYgKG9wdGlvbnMubnVtX2dz c19wcm94eV9zZXJ2aWNlcyA+IDApIHsKKysJCQkvKgorKwkJCSAqIFByb3h5LW9ubHkgb3IgYm90 aDogc2tpcCBpZiBldmVyeSBjb25maWd1cmVkIHNlcnZpY2UKKysJCQkgKiBhbHJlYWR5IGhhcyBh IHZhbGlkIHRpY2tldCBpbiB0aGUgdXNlcidzIGNjYWNoZS4KKysJCQkgKiBTZXJ2aWNlIHRpY2tl dHMgYXJlIG5vdCBHU1NBUEkgaW5pdGlhdG9yIGNyZWRlbnRpYWxzLAorKwkJCSAqIHNvIGdzc19h Y3F1aXJlX2NyZWQoKSBjYW5ub3QgYmUgdXNlZDsgaXRlcmF0ZSB0aGUKKysJCQkgKiBjY2FjaGUg d2l0aCB0aGUga3JiNSBBUEkgaW5zdGVhZC4KKysJCQkgKi8KKysJCQlza2lwID0gc3NoX2dzc2Fw aV91c2VyX2hhc192YWxpZF9wcm94eV90aWNrZXRzKAorKwkJCSAgICBvcHRpb25zLmdzc19wcm94 eV9zZXJ2aWNlcywKKysJCQkgICAgb3B0aW9ucy5udW1fZ3NzX3Byb3h5X3NlcnZpY2VzLAorKwkJ CSAgICBsaWZldGltZSk7CisrCQl9CisrCQlyZXN0b3JlX3VpZCgpOworKworKwkJaWYgKHNraXAp IHsKKysJCQlkZWJ1Z19mKCJ1c2VyICUuMTAwcyBhbHJlYWR5IGhhcyB2YWxpZCBLZXJiZXJvcyAi CisrCQkJICAgICJjcmVkZW50aWFscywgc2tpcHBpbmcgUzRVMlNlbGYiLAorKwkJCSAgICBhdXRo Y3R4dC0+dXNlcik7CisrCQl9IGVsc2UgaWYgKHNzaF9nc3NhcGlfczR1MnNlbGYoYXV0aGN0eHQt PnVzZXIsIGxpZmV0aW1lKSA9PSAwKSB7CisrCQkJdV9pbnQgZmlsdGVyOworKworKwkJCXRlbXBv cmFyaWx5X3VzZV91aWQoYXV0aGN0eHQtPnB3KTsKKysJCQkvKgorKwkJCSAqIEFsd2F5cyBjcmVh dGUgdGhlIGNjYWNoZSB2aWEgc3RvcmVjcmVkc19zNHUyc2VsZiBzbworKwkJCSAqIHRoYXQgczR1 MnByb3h5IGhhcyBhIGNjYWNoZSB0byBzdG9yZSB0aWNrZXRzIGludG8uCisrCQkJICogZ3NzX2ty YjVfY29weV9jY2FjaGUoKSBjb3BpZXMgdGhlIGhvc3Qgc2VydmljZSdzIG93bgorKwkJCSAqIFRH VCBhbG9uZyB3aXRoIHRoZSBldmlkZW5jZSB0aWNrZXQ7IGZpbHRlcl9jY2FjaGUKKysJCQkgKiBy ZW1vdmVzIHRoZSB0aWNrZXQgY2xhc3NlcyB0aGF0IHNob3VsZCBub3QgYmUga2VwdC4KKysJCQkg Ki8KKysJCQlzc2hfZ3NzYXBpX3N0b3JlY3JlZHNfczR1MnNlbGYoKTsKKysJCQlpZiAob3B0aW9u cy5udW1fZ3NzX3Byb3h5X3NlcnZpY2VzID4gMCkKKysJCQkJc3NoX2dzc2FwaV9zNHUycHJveHko CisrCQkJCSAgICBvcHRpb25zLmdzc19wcm94eV9zZXJ2aWNlcywKKysJCQkJICAgIG9wdGlvbnMu bnVtX2dzc19wcm94eV9zZXJ2aWNlcywKKysJCQkJICAgIGxpZmV0aW1lKTsKKysKKysJCQkvKgor KwkJCSAqIFJlbW92ZSB0aGUgaG9zdCBUR1Qgb25seSBpbiBHU1NBUElBbGxvd1M0VTJTZWxmLWFs b25lCisrCQkJICogbW9kZTsgd2hlbiBwcm94eSB0aWNrZXRzIGFyZSBwcmVzZW50IHRoZSBUR1Qg bXVzdAorKwkJCSAqIHN0YXkgc28gdGhhdCBhcHBsaWNhdGlvbnMgcmVjb2duaXNlIHRoZSBjY2Fj aGUgYXMKKysJCQkgKiBob2xkaW5nIGxpdmUgS2VyYmVyb3MgY3JlZGVudGlhbHMuCisrCQkJICog UmVtb3ZlIHRoZSBTNFUyU2VsZiBldmlkZW5jZSB0aWNrZXQgaW4gcHJveHktb25seQorKwkJCSAq IG1vZGUgKEdTU0FQSVByb3h5UzRVMlNlcnZpY2VzIHdpdGhvdXQgR1NTQVBJQWxsb3dTNFUyU2Vs ZikuCisrCQkJICovCisrCQkJZmlsdGVyID0gMDsKKysJCQlpZiAob3B0aW9ucy5nc3NfYWxsb3df czR1MnNlbGYgJiYKKysJCQkgICAgb3B0aW9ucy5udW1fZ3NzX3Byb3h5X3NlcnZpY2VzID09IDAp CisrCQkJCWZpbHRlciA9IFNTSF9HU1NBUElfQ0NGSUxURVJfVEdUIHwKKysJCQkJICAgIFNTSF9H U1NBUElfQ0NGSUxURVJfUFJPWFk7CisrCQkJZWxzZSBpZiAoIW9wdGlvbnMuZ3NzX2FsbG93X3M0 dTJzZWxmKQorKwkJCQlmaWx0ZXIgPSBTU0hfR1NTQVBJX0NDRklMVEVSX1NFTEY7CisrCQkJaWYg KGZpbHRlciAhPSAwKQorKwkJCQlzc2hfZ3NzYXBpX2tyYjVfZmlsdGVyX2NjYWNoZShmaWx0ZXIs CisrCQkJCSAgICBvcHRpb25zLmdzc19wcm94eV9zZXJ2aWNlcywKKysJCQkJICAgIG9wdGlvbnMu bnVtX2dzc19wcm94eV9zZXJ2aWNlcyk7CisrCQkJcmVzdG9yZV91aWQoKTsKKysJCX0gZWxzZSB7 CisrCQkJbG9naXQoIlM0VTJTZWxmIGZhaWxlZCBmb3IgdXNlciAlLjEwMHMsIGNvbnRpbnVpbmci LAorKwkJCSAgICBhdXRoY3R4dC0+dXNlcik7CisrCQl9CisrCX0KKyAjZW5kaWYKKyAjaWZkZWYg V0lUSF9TRUxJTlVYCisgCXNzaGRfc2VsaW51eF9zZXR1cF9leGVjX2NvbnRleHQoYXV0aGN0eHQt PnB3LT5wd19uYW1lLAorZGlmZiAtLWdpdCBhL3NzaGRfY29uZmlnLjUgYi9zc2hkX2NvbmZpZy41 CitpbmRleCA4Y2JlNWVjYmEuLmMxNmQ3ZjViMCAxMDA2NDQKKy0tLSBhL3NzaGRfY29uZmlnLjUK KysrKyBiL3NzaGRfY29uZmlnLjUKK0BAIC04NTcsNiArODU3LDc2IEBAIEZJRE8yLWJhc2VkIHBy ZS1hdXRoZW50aWNhdGlvbiBpbiBGcmVlSVBBLCB1c2luZyBGSURPMiBVU0IgYW5kIE5GQyB0b2tl bnMKKyBUaGUgZGVmYXVsdAorIC5EcSBub25lCisgaXMgdG8gbm90IHVzZSBHU1NBUEkgYXV0aGVu dGljYXRpb24gaW5kaWNhdG9ycyBmb3IgYWNjZXNzIGRlY2lzaW9ucy4KKysuSXQgQ20gR1NTQVBJ QWxsb3dTNFUyU2VsZgorK0NvbnRyb2xzIHdoZXRoZXIgdGhlIFNTSCBzZXJ2ZXIgcGVyZm9ybXMg YSBLZXJiZXJvcyBwcm90b2NvbCB0cmFuc2l0aW9uCisrKFM0VTJTZWxmKSBhZnRlciBhIHN1Y2Nl c3NmdWwgYXV0aGVudGljYXRpb24gdXNpbmcgYW55IG90aGVyIG1ldGhvZC4KKytBY2NlcHRlZCB2 YWx1ZXMgYXJlCisrLkNtIG5vICwKKysuQ20geWVzICwKKytvciBhIHRpbWUgaW50ZXJ2YWwgKHNl ZQorKy5TeCBUSU1FIEZPUk1BVFMKKytiZWxvdykuCisrLkNtIG5vCisrZGlzYWJsZXMgUzRVMlNl bGYgZW50aXJlbHkuCisrLkNtIHllcworK2VuYWJsZXMgUzRVMlNlbGYgYW5kIHJlcXVlc3RzIGEg dGlja2V0IHdpdGggdGhlIG1heGltdW0gbGlmZXRpbWUKKytwZXJtaXR0ZWQgYnkgdGhlIEtEQy4K KytBIHRpbWUgaW50ZXJ2YWwgKGUuZy5cJgorKy5DbSA4aCAsCisrLkNtIDFkICkKKytlbmFibGVz IFM0VTJTZWxmIGFuZCByZXF1ZXN0cyBhIHRpY2tldCB2YWxpZCBmb3IgYXQgbW9zdCB0aGF0IGR1 cmF0aW9uLgorK1RoZSBvcHRpb24gaXMgYSBuby1vcCB3aGVuIGRlbGVnYXRlZCBHU1NBUEkgY3Jl ZGVudGlhbHMgYXJlIGFscmVhZHkgYXZhaWxhYmxlLgorK1RoZSBvYnRhaW5lZCBzZXJ2aWNlIHRp Y2tldCBpcyBzdG9yZWQgaW4gdGhlIGRlZmF1bHQgY3JlZGVudGlhbHMgY2FjaGUgYW5kIGlzCisr YWNjZXNzaWJsZSB0byBhbnkgYXBwbGljYXRpb24gdGhhdCBoYXMgYWNjZXNzIHRvIHRoZSBLZXJi ZXJvcyBob3N0IHByaW5jaXBhbAorKy5QcSBob3N0L21hY2hpbmUuZnFkbkBSRUFMTQorK2NyZWRl bnRpYWxzIG9uIHRoZSBzYW1lIGhvc3QuCisrLlBwCisrVGhlIGRlZmF1bHQgaXMKKysuQ20gbm8g LgorKy5JdCBDbSBHU1NBUElQcm94eVM0VTJTZXJ2aWNlcworK1NwZWNpZmllcyBhIGxpc3Qgb2Yg S2VyYmVyb3Mgc2VydmljZSBwcmluY2lwYWxzIGZvciB3aGljaCBjb25zdHJhaW5lZAorK2RlbGVn YXRpb24gKFM0VTJQcm94eSkgdGlja2V0cyBzaG91bGQgYmUgb2J0YWluZWQgYWZ0ZXIgYSBzdWNj ZXNzZnVsCisrUzRVMlNlbGYgcHJvdG9jb2wgdHJhbnNpdGlvbi4KKytFYWNoIGVudHJ5IG11c3Qg YmUgYSBmdWxseS1xdWFsaWZpZWQgS2VyYmVyb3MgcHJpbmNpcGFsIG5hbWUgb2YgdGhlIGZvcm0K KysuQXIgc2VydmljZS9ob3N0QFJFQUxNIC4KKytNdWx0aXBsZSBwcmluY2lwYWxzIG1heSBiZSBs aXN0ZWQsIHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNlLgorK1RoZSBrZXl3b3JkCisrLkNtIG5vbmUK KytjbGVhcnMgYW55IHByZXZpb3VzbHkgc2V0IGxpc3QuCisrLlBwCisrVGhpcyBvcHRpb24gbWF5 IGJlIHVzZWQgaW5kZXBlbmRlbnRseSBvZgorKy5DbSBHU1NBUElBbGxvd1M0VTJTZWxmIC4KKytX aGVuIFM0VTJTZWxmIHN1Y2NlZWRzLCB0aGUgc2VydmVyIGl0ZXJhdGVzIHRoZSBsaXN0IGFuZCBj YWxscworKy5YciBnc3NfaW5pdF9zZWNfY29udGV4dCAzCisrZm9yIGVhY2ggcHJpbmNpcGFsIHdp dGggdGhlIHByb3h5IGNyZWRlbnRpYWwgb2J0YWluZWQgYnkgUzRVMlNlbGYgYXMKKyt0aGUgaW5p dGlhdG9yLgorK1RoZSBHU1NBUEkgbGlicmFyeSBwcmVzZW50cyB0aGUgZXZpZGVuY2UgdGlja2V0 IHRvIHRoZSBLREMgdmlhIGFuCisrUzRVMlByb3h5IFRHUy1SRVE7IGlmIHRoZSBob3N0IHNlcnZp Y2UgaG9sZHMgdGhlIG5lY2Vzc2FyeSBjb25zdHJhaW5lZC0KKytkZWxlZ2F0aW9uIHBlcm1pc3Np b24gaW4gdGhlIEtEQywgYSBzZXJ2aWNlIHRpY2tldCBmcm9tIHRoZSB1c2VyIHRvCisrdGhlIHRh cmdldCBzZXJ2aWNlIGlzIGlzc3VlZC4KKytUaGVzZSB0aWNrZXRzIGFyZSBhY2N1bXVsYXRlZCBh bmQgdGhlbiBmbHVzaGVkIGludG8gdGhlIHVzZXIncyBjY2FjaGUKKyt2aWEKKysuWHIgZ3NzX3N0 b3JlX2NyZWQgMyAsCisrc28gdGhhdCBhbnkgYXBwbGljYXRpb24gcnVubmluZyBpbiB0aGUgdXNl cidzIHNlc3Npb24gY2FuIHVzZSB0aGVtCisrd2l0aG91dCBmdXJ0aGVyIGludGVyYWN0aW9uLgor K1RoZSBBUC1SRVEgb3V0cHV0IHRva2VuIG9mIGVhY2gKKysuWHIgZ3NzX2luaXRfc2VjX2NvbnRl eHQgMworK2NhbGwgaXMgZGlzY2FyZGVkOyBubyBuZXR3b3JrIGNvbm5lY3Rpb24gdG8gdGhlIHRh cmdldCBzZXJ2aWNlIGlzIG1hZGUuCisrLlBwCisrV2hlbiB1c2VkIHRvZ2V0aGVyIHdpdGgKKysu Q20gR1NTQVBJQWxsb3dTNFUyU2VsZiAsCisrdGhlIFRHVCBhbmQgUzRVMlNlbGYgdGlja2V0IGFy ZSBhbHNvIHN0b3JlZCBpbiB0aGUgdXNlcidzIGNjYWNoZSBpbgorK2FkZGl0aW9uIHRvIHRoZSBT NFUyUHJveHkgc2VydmljZSB0aWNrZXRzLgorK1doZW4gdXNlZCBhbG9uZSAod2l0aG91dAorKy5D bSBHU1NBUElBbGxvd1M0VTJTZWxmICkgLAorK29ubHkgdGhlIFM0VTJQcm94eSBzZXJ2aWNlIHRp Y2tldHMgYXJlIHN0b3JlZDsgdGhlIGludGVybWVkaWF0ZSBTNFUyU2VsZgorK2NyZWRlbnRpYWwg aXMgbm90IHBsYWNlZCBpbiB0aGUgdXNlcidzIGNjYWNoZS4KKysuUHAKKytUaGlzIG9wdGlvbiBz dXBwb3J0cworKy5DbSBNYXRjaAorK2Jsb2NrcywgYWxsb3dpbmcgcGVyLXVzZXIgb3IgcGVyLWhv c3QgbGlzdHMgb2YgZGVsZWdhdGlvbiB0YXJnZXRzLgorKy5QcAorK1RoZSBkZWZhdWx0IGlzIGVt cHR5IChubyBTNFUyUHJveHkgZGVsZWdhdGlvbiBpcyBwZXJmb3JtZWQpLgorIC5JdCBDbSBIb3N0 YmFzZWRBY2NlcHRlZEFsZ29yaXRobXMKKyBUaGUgZGVmYXVsdCBpcyBoYW5kbGVkIHN5c3RlbS13 aWRlIGJ5CisgLlhyIGNyeXB0by1wb2xpY2llcyA3IC4KKy0tIAorMi41NS4wCisKCmRpZmYgLS1n aXQgYS8wMDUxLW9wZW5zc2gtMTAuMnAxLXBhbS1hdXRoLnBhdGNoIGIvMDA1MS1vcGVuc3NoLTEw LjJwMS1wYW0tYXV0aC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTEyOGFm My4uMDAwMDAwMAotLS0gYS8wMDUxLW9wZW5zc2gtMTAuMnAxLXBhbS1hdXRoLnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotRnJvbSAwNGMxMzM5MjI4MGQxODM5YjE5Y2ZlNmU0 ZGJhNDhkYjNhOGE4ZTc3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRG1pdHJ5IEJl bHlhdnNraXkgPGJlbGRtaXRAZ21haWwuY29tPgotRGF0ZTogU3VuLCAxMiBBcHIgMjAyNiAxMjoy NTowNCArMDIwMAotU3ViamVjdDogW1BBVENIIDUxLzU0XSBvcGVuc3NoLTEwLjJwMS1wYW0tYXV0 aAotCi1odHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTI0MjM5MDAK LQotQ28tQXV0aG9yZWQtQnk6IENsYXVkZSBTb25uZXQgNC41IDxub3JlcGx5QGFudGhyb3BpYy5j b20+Ci0tLS0KLSBhdXRoLXBhbS5jIHwgMTAgKysrKystLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1 IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9hdXRoLXBhbS5j IGIvYXV0aC1wYW0uYwotaW5kZXggZDNkY2QwMzdiLi5hYWFkMTY3NjUgMTAwNjQ0Ci0tLS0gYS9h dXRoLXBhbS5jCi0rKysgYi9hdXRoLXBhbS5jCi1AQCAtNDU1LDYgKzQ1NSw3IEBAIHN0YXRpYyBp bnQKLSBjaGVja19wYW1fdXNlcihBdXRoY3R4dCAqYXV0aGN0eHQpCi0gewotIAljb25zdCBjaGFy ICpwYW1fdXNlcjsKLSsJY29uc3Qgc3RydWN0IHBhc3N3ZCAqcGFtX3B3OwotIAotIAlpZiAoYXV0 aGN0eHQgPT0gTlVMTCB8fCBhdXRoY3R4dC0+cHcgPT0gTlVMTCB8fAotIAkgICAgYXV0aGN0eHQt PnB3LT5wd19uYW1lID09IE5VTEwpCi1AQCAtNDY5LDExICs0NzAsMTAgQEAgY2hlY2tfcGFtX3Vz ZXIoQXV0aGN0eHQgKmF1dGhjdHh0KQotIAkJcmV0dXJuIFBBTV9VU0VSX1VOS05PV047Ci0gCX0K LSAKLS0JaWYgKHNzaHBhbV9pbml0aWFsX3VzZXIgPT0gTlVMTCkKLS0JCWZhdGFsX2YoImludGVy bmFsIGVycm9yOiBzc2hwYW1faW5pdGlhbF91c2VyIE5VTEwiKTsKLS0JaWYgKHN0cmNtcChzc2hw YW1faW5pdGlhbF91c2VyLCBwYW1fdXNlcikgIT0gMCkgewotLQkJZXJyb3JfZigiUEFNIHVzZXIg XCIlc1wiIGRvZXMgbm90IG1hdGNoIHByZXZpb3VzIFwiJXNcIiIsCi0tCQkgICAgICBwYW1fdXNl ciwgc3NocGFtX2luaXRpYWxfdXNlcik7Ci0rCXBhbV9wdyA9IGdldHB3bmFtKHBhbV91c2VyKTsK LSsJaWYgKHBhbV9wdyA9PSBOVUxMIHx8IHBhbV9wdy0+cHdfdWlkICE9IGF1dGhjdHh0LT5wdy0+ cHdfdWlkKSB7Ci0rCQlkZWJ1ZygiUEFNIHVzZXIgXCIlc1wiIGRvZXMgbm90IG1hdGNoIGV4cGVj dGVkIFwiJXNcIiIsCi0rCQkgICAgICBwYW1fdXNlciwgYXV0aGN0eHQtPnB3LT5wd19uYW1lKTsK LSAJCXJldHVybiBQQU1fVVNFUl9VTktOT1dOOwotIAl9Ci0gCXJldHVybiBQQU1fU1VDQ0VTUzsK LS0tIAotMi41My4wCi0KCmRpZmYgLS1naXQgYS8wMDUyLWdzc2FwaS1zNHUucGF0Y2ggYi8wMDUy LWdzc2FwaS1zNHUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiM2IyYzIu LjAwMDAwMDAKLS0tIGEvMDA1Mi1nc3NhcGktczR1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs MTA3NyArMCwwIEBACi1Gcm9tIGY2MjliZWIwZmIwOTRmZmVhODMyNzY5OWE5NDJiYTNjMTgwZjVl MDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEbWl0cnkgQmVseWF2c2tpeSA8YmVs ZG1pdEBnbWFpbC5jb20+Ci1EYXRlOiBTdW4sIDEyIEFwciAyMDI2IDEyOjI1OjIxICswMjAwCi1T dWJqZWN0OiBbUEFUQ0ggNTIvNTRdIGdzc2FwaS1zNHUKLQotQ28tQXV0aG9yZWQtQnk6IENsYXVk ZSBTb25uZXQgNC41IDxub3JlcGx5QGFudGhyb3BpYy5jb20+Ci0tLS0KLSBhdXRoLWtyYjUuYyAg ICAgfCAgMTMgKysKLSBjb25maWd1cmUuYWMgICAgfCAgMTAgKy0KLSBnc3Mtc2Vydi1rcmI1LmMg fCAyMjUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGdzcy1zZXJ2LmMgICAgICB8IDM4 OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KLSBzZXJ2 Y29uZi5jICAgICAgfCAgNTggKysrKysrKysKLSBzZXJ2Y29uZi5oICAgICAgfCAgIDQgKwotIHNz aC1nc3MuaCAgICAgICB8ICAxMyArKwotIHNzaGQtc2Vzc2lvbi5jICB8ICA5OCArKysrKysrKysr KysKLSBzc2hkX2NvbmZpZy41ICAgfCAgNzAgKysrKysrKysrCi0gOSBmaWxlcyBjaGFuZ2VkLCA4 NjEgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9hdXRoLWty YjUuYyBiL2F1dGgta3JiNS5jCi1pbmRleCAyODdiZGQzNWEuLjdkNGZiY2MzZCAxMDA2NDQKLS0t LSBhL2F1dGgta3JiNS5jCi0rKysgYi9hdXRoLWtyYjUuYwotQEAgLTQ2Myw2ICs0NjMsMTkgQEAg c3NoX2tyYjVfY2NfbmV3X3VuaXF1ZShrcmI1X2NvbnRleHQgY3R4LCBrcmI1X2NjYWNoZSAqY2Nh Y2hlLCBpbnQgKm5lZWRfZW52aXJvbm0KLSAJICogYSBwcmltYXJ5IGNhY2hlIGZvciB0aGlzIGNv bGxlY3Rpb24sIGlmIGl0IHN1cHBvcnRzIHRoYXQgKG5vbi1GSUxFKQotIAkgKi8KLSAJaWYgKGty YjVfY2Nfc3VwcG9ydF9zd2l0Y2goY3R4LCB0eXBlKSkgewotKwkJLyoKLSsJCSAqIEZvciBjb2xs ZWN0aW9uLXR5cGUgY2FjaGVzIChLQ00sIEtFWVJJTkcsIOKApikgcmV1c2UgdGhlCi0rCQkgKiBl eGlzdGluZyBwcmltYXJ5IGNjYWNoZSB3aGVuIG9uZSBpcyBhbHJlYWR5IHByZXNlbnQuICBUaGUK LSsJCSAqIGNhbGxlciB3aWxsIHJlaW5pdGlhbGlzZSBpdCB3aXRoIGtyYjVfY2NfaW5pdGlhbGl6 ZSgpLCBzbwotKwkJICogaXRzIG9sZCBjb250ZW50cyBhcmUgcmVwbGFjZWQgcmF0aGVyIHRoYW4g b3JwaGFuZWQuICBPbmx5Ci0rCQkgKiBjcmVhdGUgYSBmcmVzaCB1bmlxdWUgY2NhY2hlIHdoZW4g bm8gcHJpbWFyeSBleGlzdHMgeWV0LgotKwkJICovCi0rCQlpZiAoa3JiNV9jY19kZWZhdWx0KGN0 eCwgY2NhY2hlKSA9PSAwKSB7Ci0rCQkJZGVidWczX2YoInJldXNpbmcgZXhpc3RpbmcgZGVmYXVs dCBjY2FjaGUgb2YgdHlwZSAlcyIsCi0rCQkJICAgIHR5cGUpOwotKwkJCWZyZWUodHlwZSk7Ci0r CQkJcmV0dXJuIDA7Ci0rCQl9Ci0gCQlkZWJ1ZzNfZigiY2FsbGluZyBjY19uZXdfdW5pcXVlKCVz KSIsIGNjbmFtZSk7Ci0gCQlyZXQgPSBrcmI1X2NjX25ld191bmlxdWUoY3R4LCB0eXBlLCBOVUxM LCBjY2FjaGUpOwotIAkJZnJlZSh0eXBlKTsKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9j b25maWd1cmUuYWMKLWluZGV4IDEzODhlNWU3Mi4uNjJiMmJmOWU3IDEwMDY0NAotLS0tIGEvY29u ZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC01MTQ1LDExICs1MTQ1LDE3IEBAIEFD X0FSR19XSVRIKFtrZXJiZXJvczVdLAotICMgaW5jbHVkZSA8Z3NzYXBpX2dlbmVyaWMuaD4KLSAj ZWxpZiBkZWZpbmVkKEhBVkVfR1NTQVBJX0dTU0FQSV9HRU5FUklDX0gpCi0gIyBpbmNsdWRlIDxn c3NhcGkvZ3NzYXBpX2dlbmVyaWMuaD4KLSsjZW5kaWYKLSsjaWZkZWYgSEFWRV9HU1NBUElfRVhU X0gKLSsjIGluY2x1ZGUgPGdzc2FwaS9nc3NhcGlfZXh0Lmg+Ci0rI2VuZGlmCi0rI2lmZGVmIEhB VkVfR1NTQVBJX0tSQjVfSAotKyMgaW5jbHVkZSA8Z3NzYXBpL2dzc2FwaV9rcmI1Lmg+Ci0gI2Vu ZGlmCi0gCQldXSkKLSAJCXNhdmVkX0xJQlM9IiRMSUJTIgotLQkJTElCUz0iJExJQlMgJEs1TElC UyIKLS0JCUFDX0NIRUNLX0ZVTkNTKFtrcmI1X2NjX25ld191bmlxdWUga3JiNV9nZXRfZXJyb3Jf bWVzc2FnZSBrcmI1X2ZyZWVfZXJyb3JfbWVzc2FnZV0pCi0rCQlMSUJTPSIkTElCUyAkR1NTTElC UyAkSzVMSUJTICIKLSsJCUFDX0NIRUNLX0ZVTkNTKFtrcmI1X2NjX25ld191bmlxdWUga3JiNV9n ZXRfZXJyb3JfbWVzc2FnZSBrcmI1X2ZyZWVfZXJyb3JfbWVzc2FnZSBnc3NfYWNxdWlyZV9jcmVk X2Zyb21dKQotIAkJTElCUz0iJHNhdmVkX0xJQlMiCi0gCi0gCWZpCi1kaWZmIC0tZ2l0IGEvZ3Nz LXNlcnYta3JiNS5jIGIvZ3NzLXNlcnYta3JiNS5jCi1pbmRleCBmYzdjYWJjMDkuLjA2ZDQ1MGQ0 ZCAxMDA2NDQKLS0tLSBhL2dzcy1zZXJ2LWtyYjUuYwotKysrIGIvZ3NzLXNlcnYta3JiNS5jCi1A QCAtNjA5LDYgKzYwOSwyMzEgQEAgc3NoX2dzc2FwaV9rcmI1X3VwZGF0ZWNyZWRzKHNzaF9nc3Nh cGlfY2NhY2hlICpzdG9yZSwKLSAJcmV0dXJuIDE7Ci0gfQotIAotKy8qCi0rICogQ2hlY2sgd2hl dGhlciB0aGUgdXNlcidzIGRlZmF1bHQgY2NhY2hlIGFscmVhZHkgY29udGFpbnMgdmFsaWQgc2Vy dmljZQotKyAqIHRpY2tldHMgZm9yIGFsbCBwcmluY2lwYWxzIGxpc3RlZCBpbiBzZXJ2aWNlc1td LiAgUmV0dXJucyAxIGlmIGV2ZXJ5Ci0rICogbGlzdGVkIHNlcnZpY2UgaGFzIGEgdGlja2V0IHdp dGggYXQgbGVhc3QgbWluX2xpZmV0aW1lIHNlY29uZHMgcmVtYWluaW5nCi0rICogKHBhc3MgR1NT X0NfSU5ERUZJTklURSB0byBhY2NlcHQgYW55IHBvc2l0aXZlIHJlbWFpbmluZyBsaWZldGltZSks IDAgaWYKLSsgKiBhbnkgdGlja2V0IGlzIG1pc3Npbmcgb3IgdG9vIGNsb3NlIHRvIGV4cGlyeS4g IFJ1bnMgYXMgdGhlIHVzZXIuCi0rICoKLSsgKiBVbmxpa2Ugc3NoX2dzc2FwaV91c2VyX2hhc192 YWxpZF90Z3QoKSwgdGhpcyBjYW5ub3QgdXNlIGdzc19hY3F1aXJlX2NyZWQoKQotKyAqIGJlY2F1 c2Ugc2VydmljZSB0aWNrZXRzIGFyZSBub3QgaW5pdGlhdG9yIGNyZWRlbnRpYWxzIOKAlCBHU1NB UEkgb25seQotKyAqIHN1cmZhY2VzIFRHVHMgdmlhIHRoYXQgQVBJLiAgV2UgaXRlcmF0ZSB0aGUg Y2NhY2hlIHdpdGggdGhlIGtyYjUgQVBJCi0rICogZGlyZWN0bHkgaW5zdGVhZC4KLSsgKi8KLStp bnQKLStzc2hfZ3NzYXBpX3VzZXJfaGFzX3ZhbGlkX3Byb3h5X3RpY2tldHMoY2hhciAqKnNlcnZp Y2VzLCB1X2ludCBuc2VydmljZXMsCi0rICAgIHVfaW50IG1pbl9saWZldGltZSkKLSt7Ci0rCWty YjVfY29udGV4dCBjdHggPSBOVUxMOwotKwlrcmI1X2NjYWNoZSBjYyA9IE5VTEw7Ci0rCWtyYjVf Y2NfY3Vyc29yIGN1cnNvcjsKLSsJa3JiNV9jcmVkcyBjcmVkOwotKwlrcmI1X3ByaW5jaXBhbCBz dmNfcHJpbmM7Ci0rCWludCAqZm91bmQgPSBOVUxMOwotKwl1X2ludCBpOwotKwlpbnQgYWxsX2Zv dW5kID0gMDsKLSsJdGltZV90IG5vdzsKLSsKLSsJaWYgKG5zZXJ2aWNlcyA9PSAwKQotKwkJcmV0 dXJuIDA7Ci0rCi0rCWlmIChrcmI1X2luaXRfY29udGV4dCgmY3R4KSAhPSAwKQotKwkJcmV0dXJu IDA7Ci0rCi0rCWZvdW5kID0geGNhbGxvYyhuc2VydmljZXMsIHNpemVvZigqZm91bmQpKTsKLSsJ bm93ID0gdGltZShOVUxMKTsKLSsKLSsJaWYgKGtyYjVfY2NfZGVmYXVsdChjdHgsICZjYykgIT0g MCkKLSsJCWdvdG8gb3V0OwotKwotKwlpZiAoa3JiNV9jY19zdGFydF9zZXFfZ2V0KGN0eCwgY2Ms ICZjdXJzb3IpICE9IDApIHsKLSsJCWtyYjVfY2NfY2xvc2UoY3R4LCBjYyk7Ci0rCQljYyA9IE5V TEw7Ci0rCQlnb3RvIG91dDsKLSsJfQotKwotKwl3aGlsZSAoa3JiNV9jY19uZXh0X2NyZWQoY3R4 LCBjYywgJmN1cnNvciwgJmNyZWQpID09IDApIHsKLSsJCS8qCi0rCQkgKiBVc2Uga3JiNV9wcmlu Y2lwYWxfY29tcGFyZSgpIHNvIHRoYXQgc2VydmljZSBuYW1lcwotKwkJICogY29uZmlndXJlZCB3 aXRob3V0IGFuIGV4cGxpY2l0IHJlYWxtIChrcmI1X3BhcnNlX25hbWUKLSsJCSAqIGFwcGVuZHMg dGhlIGRlZmF1bHQgcmVhbG0pIHN0aWxsIG1hdGNoIHRoZSBmdWxseS0KLSsJCSAqIHF1YWxpZmll ZCBwcmluY2lwYWwgc3RvcmVkIGluIHRoZSBjY2FjaGUuCi0rCQkgKi8KLSsJCWZvciAoaSA9IDA7 IGkgPCBuc2VydmljZXM7IGkrKykgewotKwkJCWlmIChmb3VuZFtpXSkKLSsJCQkJY29udGludWU7 Ci0rCQkJaWYgKGtyYjVfcGFyc2VfbmFtZShjdHgsIHNlcnZpY2VzW2ldLAotKwkJCSAgICAmc3Zj X3ByaW5jKSAhPSAwKQotKwkJCQljb250aW51ZTsKLSsJCQlpZiAoa3JiNV9wcmluY2lwYWxfY29t cGFyZShjdHgsCi0rCQkJICAgIGNyZWQuc2VydmVyLCBzdmNfcHJpbmMpKSB7Ci0rCQkJCWtyYjVf ZGVsdGF0IHJlbWFpbmluZyA9Ci0rCQkJCSAgICBjcmVkLnRpbWVzLmVuZHRpbWUgLSBub3c7Ci0r CQkJCWlmIChyZW1haW5pbmcgPiAwICYmCi0rCQkJCSAgICAobWluX2xpZmV0aW1lID09IEdTU19D X0lOREVGSU5JVEUgfHwKLSsJCQkJICAgICAoa3JiNV9kZWx0YXQpbWluX2xpZmV0aW1lIDw9IHJl bWFpbmluZykpCi0rCQkJCQlmb3VuZFtpXSA9IDE7Ci0rCQkJfQotKwkJCWtyYjVfZnJlZV9wcmlu Y2lwYWwoY3R4LCBzdmNfcHJpbmMpOwotKwkJfQotKwkJa3JiNV9mcmVlX2NyZWRfY29udGVudHMo Y3R4LCAmY3JlZCk7Ci0rCX0KLSsJa3JiNV9jY19lbmRfc2VxX2dldChjdHgsIGNjLCAmY3Vyc29y KTsKLSsJa3JiNV9jY19jbG9zZShjdHgsIGNjKTsKLSsJY2MgPSBOVUxMOwotKwotKwlhbGxfZm91 bmQgPSAxOwotKwlmb3IgKGkgPSAwOyBpIDwgbnNlcnZpY2VzOyBpKyspIHsKLSsJCWlmICghZm91 bmRbaV0pIHsKLSsJCQlhbGxfZm91bmQgPSAwOwotKwkJCWJyZWFrOwotKwkJfQotKwl9Ci0rb3V0 OgotKwlmcmVlKGZvdW5kKTsKLSsJaWYgKGN0eCAhPSBOVUxMKQotKwkJa3JiNV9mcmVlX2NvbnRl eHQoY3R4KTsKLSsJcmV0dXJuIGFsbF9mb3VuZDsKLSt9Ci0rCi0rLyogQXMgdXNlciAtIGNhbGxl ZCBvbiBmYXRhbC9leGl0ICovCi0rdm9pZAotK3NzaF9nc3NhcGlfY2xlYW51cF9jcmVkcyh2b2lk KQotK3sKLSsJc3NoX2dzc2FwaV9jY2FjaGUgKnN0b3JlID0gc3NoX2dzc2FwaV9nZXRfY2NhY2hl KCk7Ci0rCWtyYjVfY2NhY2hlIGNjYWNoZSA9IE5VTEw7Ci0rCWtyYjVfZXJyb3JfY29kZSBwcm9i bGVtOwotKwotKwlpZiAoc3RvcmUtPmRhdGEgIT0gTlVMTCkgewotKwkJaWYgKChwcm9ibGVtID0g a3JiNV9jY19yZXNvbHZlKHN0b3JlLT5kYXRhLAotKwkJICAgIHN0b3JlLT5lbnZ2YWwsICZjY2Fj aGUpKSkgewotKwkJCWRlYnVnX2YoImtyYjVfY2NfcmVzb2x2ZSgpOiAlLjEwMHMiLAotKwkJCSAg ICBrcmI1X2dldF9lcnJfdGV4dChzdG9yZS0+ZGF0YSwgcHJvYmxlbSkpOwotKwkJfSBlbHNlIGlm ICgocHJvYmxlbSA9IGtyYjVfY2NfZGVzdHJveShzdG9yZS0+ZGF0YSwgY2NhY2hlKSkpIHsKLSsJ CQlkZWJ1Z19mKCJrcmI1X2NjX2Rlc3Ryb3koKTogJS4xMDBzIiwKLSsJCQkgICAga3JiNV9nZXRf ZXJyX3RleHQoc3RvcmUtPmRhdGEsIHByb2JsZW0pKTsKLSsJCX0gZWxzZSB7Ci0rCQkJa3JiNV9m cmVlX2NvbnRleHQoc3RvcmUtPmRhdGEpOwotKwkJCXN0b3JlLT5kYXRhID0gTlVMTDsKLSsJCX0K LSsJfQotK30KLSsKLSsvKgotKyAqIEZpbHRlciB0aGUgdXNlcidzIGNjYWNoZSBieSByZW1vdmlu ZyB0aGUgdGlja2V0IGNsYXNzZXMgaW5kaWNhdGVkIGJ5Ci0rICogZHJvcF9mbGFncyAoU1NIX0dT U0FQSV9DQ0ZJTFRFUl8qIGJpdG1hc2spLiAgRWFjaCBjcmVkZW50aWFsIGlzCi0rICogY2F0ZWdv cmlzZWQgYXMgb25lIG9mOgotKyAqICAgVEdUICAgLSBzZXJ2ZXIgcHJpbmNpcGFsIG1hdGNoZXMg ImtyYnRndC8iIHByZWZpeAotKyAqICAgUFJPWFkgLSBzZXJ2ZXIgcHJpbmNpcGFsIG1hdGNoZXMg b25lIG9mIHByb3h5X3NlcnZpY2VzW10KLSsgKiAgIFNFTEYgIC0gZXZlcnl0aGluZyBlbHNlICh0 aGUgUzRVMlNlbGYgZXZpZGVuY2UgdGlja2V0KQotKyAqIENyZWRlbnRpYWxzIGluIGEgZmxhZ2dl ZCBjYXRlZ29yeSBhcmUgZGlzY2FyZGVkOyB0aGUgcmVzdCBhcmUgd3JpdHRlbgotKyAqIGJhY2sg YWZ0ZXIgcmVpbml0aWFsaXNpbmcgdGhlIGNjYWNoZS4gIFJ1bnMgYXMgdXNlci4KLSsgKi8KLSt2 b2lkCi0rc3NoX2dzc2FwaV9rcmI1X2ZpbHRlcl9jY2FjaGUodV9pbnQgZHJvcF9mbGFncywKLSsg ICAgY2hhciAqKnByb3h5X3NlcnZpY2VzLCB1X2ludCBucHJveHlfc2VydmljZXMpCi0rewotKwlz c2hfZ3NzYXBpX2NjYWNoZSAqc3RvcmUgPSBzc2hfZ3NzYXBpX2dldF9jY2FjaGUoKTsKLSsJa3Ji NV9jb250ZXh0IGN0eCA9IChrcmI1X2NvbnRleHQpc3RvcmUtPmRhdGE7Ci0rCWtyYjVfY2NhY2hl IGNjID0gTlVMTDsKLSsJa3JiNV9jY19jdXJzb3IgY3Vyc29yOwotKwlrcmI1X2NyZWRzICprZWVw ID0gTlVMTDsKLSsJa3JiNV9wcmluY2lwYWwgcHJpbmMgPSBOVUxMOwotKwlrcmI1X2Vycm9yX2Nv ZGUgcHJvYmxlbTsKLSsJY2hhciAqc3J2bmFtZTsKLSsJdV9pbnQgaSwgbmtlZXAgPSAwLCBjYXAg PSAwOwotKwlpbnQgaXNfdGd0LCBpc19wcm94eSwgZHJvcDsKLSsKLSsJaWYgKGN0eCA9PSBOVUxM IHx8IHN0b3JlLT5lbnZ2YWwgPT0gTlVMTCkKLSsJCXJldHVybjsKLSsKLSsJaWYgKChwcm9ibGVt ID0ga3JiNV9jY19yZXNvbHZlKGN0eCwgc3RvcmUtPmVudnZhbCwgJmNjKSkgIT0gMCkgewotKwkJ ZGVidWdfZigia3JiNV9jY19yZXNvbHZlOiAlLjEwMHMiLAotKwkJICAgIGtyYjVfZ2V0X2Vycl90 ZXh0KGN0eCwgcHJvYmxlbSkpOwotKwkJcmV0dXJuOwotKwl9Ci0rCWlmICgocHJvYmxlbSA9IGty YjVfY2NfZ2V0X3ByaW5jaXBhbChjdHgsIGNjLCAmcHJpbmMpKSAhPSAwKSB7Ci0rCQlkZWJ1Z19m KCJrcmI1X2NjX2dldF9wcmluY2lwYWw6ICUuMTAwcyIsCi0rCQkgICAga3JiNV9nZXRfZXJyX3Rl eHQoY3R4LCBwcm9ibGVtKSk7Ci0rCQlrcmI1X2NjX2Nsb3NlKGN0eCwgY2MpOwotKwkJcmV0dXJu OwotKwl9Ci0rCWlmICgocHJvYmxlbSA9IGtyYjVfY2Nfc3RhcnRfc2VxX2dldChjdHgsIGNjLCAm Y3Vyc29yKSkgIT0gMCkgewotKwkJZGVidWdfZigia3JiNV9jY19zdGFydF9zZXFfZ2V0OiAlLjEw MHMiLAotKwkJICAgIGtyYjVfZ2V0X2Vycl90ZXh0KGN0eCwgcHJvYmxlbSkpOwotKwkJa3JiNV9m cmVlX3ByaW5jaXBhbChjdHgsIHByaW5jKTsKLSsJCWtyYjVfY2NfY2xvc2UoY3R4LCBjYyk7Ci0r CQlyZXR1cm47Ci0rCX0KLSsKLSsJewotKwkJa3JiNV9jcmVkcyBjcmVkOwotKwkJa3JiNV9wcmlu Y2lwYWwgc3ZjX3ByaW5jOwotKwkJd2hpbGUgKGtyYjVfY2NfbmV4dF9jcmVkKGN0eCwgY2MsICZj dXJzb3IsICZjcmVkKSA9PSAwKSB7Ci0rCQkJaXNfdGd0ID0gaXNfcHJveHkgPSAwOwotKwkJCWlm IChrcmI1X3VucGFyc2VfbmFtZShjdHgsIGNyZWQuc2VydmVyLAotKwkJCSAgICAmc3J2bmFtZSkg PT0gMCkgewotKwkJCQlpc190Z3QgPSBzdHJuY21wKHNydm5hbWUsICJrcmJ0Z3QvIiwgNykgPT0g MDsKLSsJCQkJa3JiNV9mcmVlX3VucGFyc2VkX25hbWUoY3R4LCBzcnZuYW1lKTsKLSsJCQl9Ci0r CQkJaWYgKCFpc190Z3QpIHsKLSsJCQkJLyoKLSsJCQkJICogVXNlIGtyYjVfcHJpbmNpcGFsX2Nv bXBhcmUoKSByYXRoZXIgdGhhbgotKwkJCQkgKiBzdHJjbXAoKSBzbyB0aGF0IGEgc2VydmljZSBu YW1lIGNvbmZpZ3VyZWQKLSsJCQkJICogd2l0aG91dCBhbiBleHBsaWNpdCByZWFsbSAoa3JiNV9w YXJzZV9uYW1lCi0rCQkJCSAqIGFwcGVuZHMgdGhlIGRlZmF1bHQgcmVhbG0pIHN0aWxsIG1hdGNo ZXMKLSsJCQkJICogdGhlIGZ1bGx5LXF1YWxpZmllZCBuYW1lIGluIHRoZSBjY2FjaGUuCi0rCQkJ CSAqLwotKwkJCQlmb3IgKGkgPSAwOyBpIDwgbnByb3h5X3NlcnZpY2VzOyBpKyspIHsKLSsJCQkJ CWlmIChrcmI1X3BhcnNlX25hbWUoY3R4LAotKwkJCQkJICAgIHByb3h5X3NlcnZpY2VzW2ldLCAm c3ZjX3ByaW5jKSAhPSAwKQotKwkJCQkJCWNvbnRpbnVlOwotKwkJCQkJaWYgKGtyYjVfcHJpbmNp cGFsX2NvbXBhcmUoY3R4LAotKwkJCQkJICAgIGNyZWQuc2VydmVyLCBzdmNfcHJpbmMpKQotKwkJ CQkJCWlzX3Byb3h5ID0gMTsKLSsJCQkJCWtyYjVfZnJlZV9wcmluY2lwYWwoY3R4LCBzdmNfcHJp bmMpOwotKwkJCQkJaWYgKGlzX3Byb3h5KQotKwkJCQkJCWJyZWFrOwotKwkJCQl9Ci0rCQkJfQot KwkJCWlmIChpc190Z3QpCi0rCQkJCWRyb3AgPSBkcm9wX2ZsYWdzICYgU1NIX0dTU0FQSV9DQ0ZJ TFRFUl9UR1Q7Ci0rCQkJZWxzZSBpZiAoaXNfcHJveHkpCi0rCQkJCWRyb3AgPSBkcm9wX2ZsYWdz ICYgU1NIX0dTU0FQSV9DQ0ZJTFRFUl9QUk9YWTsKLSsJCQllbHNlCi0rCQkJCWRyb3AgPSBkcm9w X2ZsYWdzICYgU1NIX0dTU0FQSV9DQ0ZJTFRFUl9TRUxGOwotKwotKwkJCWlmICghZHJvcCkgewot KwkJCQlpZiAobmtlZXAgPj0gY2FwKSB7Ci0rCQkJCQljYXAgPSBjYXAgPyBjYXAgKiAyIDogNDsK LSsJCQkJCWtlZXAgPSB4cmVhbGxvY2FycmF5KGtlZXAsIGNhcCwKLSsJCQkJCSAgICBzaXplb2Yo KmtlZXApKTsKLSsJCQkJfQotKwkJCQlrZWVwW25rZWVwKytdID0gY3JlZDsKLSsJCQl9IGVsc2UK LSsJCQkJa3JiNV9mcmVlX2NyZWRfY29udGVudHMoY3R4LCAmY3JlZCk7Ci0rCQl9Ci0rCX0KLSsJ a3JiNV9jY19lbmRfc2VxX2dldChjdHgsIGNjLCAmY3Vyc29yKTsKLSsKLSsJaWYgKChwcm9ibGVt ID0ga3JiNV9jY19pbml0aWFsaXplKGN0eCwgY2MsIHByaW5jKSkgIT0gMCkgewotKwkJbG9naXRf Zigia3JiNV9jY19pbml0aWFsaXplOiAlLjEwMHMiLAotKwkJICAgIGtyYjVfZ2V0X2Vycl90ZXh0 KGN0eCwgcHJvYmxlbSkpOwotKwl9IGVsc2UgewotKwkJZm9yIChpID0gMDsgaSA8IG5rZWVwOyBp KyspCi0rCQkJa3JiNV9jY19zdG9yZV9jcmVkKGN0eCwgY2MsICZrZWVwW2ldKTsKLSsJCWRlYnVn X2YoImNjYWNoZSBmaWx0ZXIgMHgleDogcmV0YWluZWQgJXUgdGlja2V0KHMpIiwKLSsJCSAgICBk cm9wX2ZsYWdzLCBua2VlcCk7Ci0rCX0KLSsKLSsJZm9yIChpID0gMDsgaSA8IG5rZWVwOyBpKysp Ci0rCQlrcmI1X2ZyZWVfY3JlZF9jb250ZW50cyhjdHgsICZrZWVwW2ldKTsKLSsJZnJlZShrZWVw KTsKLSsJa3JiNV9mcmVlX3ByaW5jaXBhbChjdHgsIHByaW5jKTsKLSsJa3JiNV9jY19jbG9zZShj dHgsIGNjKTsKLSt9Ci0rCi0gc3NoX2dzc2FwaV9tZWNoIGdzc2FwaV9rZXJiZXJvc19tZWNoID0g ewotIAkidG9XTTVTbHc1RXc4TXFrYXkrYWwyZz09IiwKLSAJIktlcmJlcm9zIiwKLWRpZmYgLS1n aXQgYS9nc3Mtc2Vydi5jIGIvZ3NzLXNlcnYuYwotaW5kZXggNjg2YWM0ZWIzLi4yNmQwYTEzYTYg MTAwNjQ0Ci0tLS0gYS9nc3Mtc2Vydi5jCi0rKysgYi9nc3Mtc2Vydi5jCi1AQCAtNTUsNyArNTUs NyBAQCBleHRlcm4gU2VydmVyT3B0aW9ucyBvcHRpb25zOwotIAotIHN0YXRpYyBzc2hfZ3NzYXBp X2NsaWVudCBnc3NhcGlfY2xpZW50ID0KLSAgICAgeyBHU1NfQ19FTVBUWV9CVUZGRVIsIEdTU19D X0VNUFRZX0JVRkZFUiwgR1NTX0NfTk9fQ1JFREVOVElBTCwKLS0gICAgR1NTX0NfTk9fTkFNRSwg TlVMTCwge05VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LCAwLCAwLCBOVUxMfTsKLSsgICAg R1NTX0NfTk9fTkFNRSwgTlVMTCwge05VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LCAwLCAw LCBOVUxMLCAwfTsKLSAKLSBzc2hfZ3NzYXBpX21lY2ggZ3NzYXBpX251bGxfbWVjaCA9Ci0gICAg IHsgTlVMTCwgTlVMTCwgezAsIE5VTEx9LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfTsK LUBAIC00ODgsMjYgKzQ4OCwzODIgQEAgc3NoX2dzc2FwaV9nZXRjbGllbnQoR3NzY3R4dCAqY3R4 LCBzc2hfZ3NzYXBpX2NsaWVudCAqY2xpZW50KQotIAlyZXR1cm4gKGN0eC0+bWFqb3IpOwotIH0K LSAKLS0vKiBBcyB1c2VyIC0gY2FsbGVkIG9uIGZhdGFsL2V4aXQgKi8KLSsvKiBSZXR1cm5zIG5v bi16ZXJvIGlmIEtlcmJlcm9zIGNyZWRlbnRpYWxzIGhhdmUgYWxyZWFkeSBiZWVuIHN0b3JlZC4g Ki8KLStpbnQKLStzc2hfZ3NzYXBpX2NyZWRlbnRpYWxzX3N0b3JlZCh2b2lkKQotK3sKLSsJcmV0 dXJuIGdzc2FwaV9jbGllbnQuc3RvcmUuZW52dmFsICE9IE5VTEw7Ci0rfQotKwotKy8qIFJldHVy bnMgYSBwb2ludGVyIHRvIHRoZSBjcmVkZW50aWFsLWNhY2hlIGRlc2NyaXB0b3IgZm9yIHRoaXMg c2Vzc2lvbi4gKi8KLStzc2hfZ3NzYXBpX2NjYWNoZSAqCi0rc3NoX2dzc2FwaV9nZXRfY2NhY2hl KHZvaWQpCi0rewotKwlyZXR1cm4gJmdzc2FwaV9jbGllbnQuc3RvcmU7Ci0rfQotKwotKy8qIExv ZyBodW1hbi1yZWFkYWJsZSBHU1NBUEkgbWFqb3IgYW5kIG1pbm9yIHN0YXR1cyBzdHJpbmdzLiAq LwotK3N0YXRpYyB2b2lkCi0rbG9nX2dzc19lcnJvcihPTV91aW50MzIgbWFqb3IsIE9NX3VpbnQz MiBtaW5vciwgY29uc3QgY2hhciAqbGFiZWwpCi0rewotKwlPTV91aW50MzIgbG1pbiwgbWN0eDsK LSsJZ3NzX2J1ZmZlcl9kZXNjIGVtc2cgPSBHU1NfQ19FTVBUWV9CVUZGRVI7Ci0rCi0rCW1jdHgg PSAwOwotKwlkbyB7Ci0rCQlnc3NfZGlzcGxheV9zdGF0dXMoJmxtaW4sIG1ham9yLCBHU1NfQ19H U1NfQ09ERSwKLSsJCSAgICBHU1NfQ19OT19PSUQsICZtY3R4LCAmZW1zZyk7Ci0rCQlsb2dpdCgi JXM6ICUuKnMiLCBsYWJlbCwgKGludCllbXNnLmxlbmd0aCwgKGNoYXIgKillbXNnLnZhbHVlKTsK LSsJCWdzc19yZWxlYXNlX2J1ZmZlcigmbG1pbiwgJmVtc2cpOwotKwl9IHdoaWxlIChtY3R4ICE9 IDApOwotKwotKwltY3R4ID0gMDsKLSsJZG8gewotKwkJZ3NzX2Rpc3BsYXlfc3RhdHVzKCZsbWlu LCBtaW5vciwgR1NTX0NfTUVDSF9DT0RFLAotKwkJICAgICZnc3NhcGlfa2VyYmVyb3NfbWVjaC5v aWQsICZtY3R4LCAmZW1zZyk7Ci0rCQlpZiAoZW1zZy5sZW5ndGggPiAwKQotKwkJCWxvZ2l0KCIl czogJS4qcyIsIGxhYmVsLAotKwkJCSAgICAoaW50KWVtc2cubGVuZ3RoLCAoY2hhciAqKWVtc2cu dmFsdWUpOwotKwkJZ3NzX3JlbGVhc2VfYnVmZmVyKCZsbWluLCAmZW1zZyk7Ci0rCX0gd2hpbGUg KG1jdHggIT0gMCk7Ci0rfQotKwotKy8qIExvZyB0aGUgY2Fub25pY2FsIHN0cmluZyBmb3JtIG9m IGEgR1NTQVBJIG5hbWUgYXMgYSBkZWJ1ZyBtZXNzYWdlLiAqLwotK3N0YXRpYyB2b2lkCi0rZGVi dWdfZ3NzX25hbWUoY29uc3QgY2hhciAqbGFiZWwsIGdzc19uYW1lX3QgbmFtZSkKLSt7Ci0rCU9N X3VpbnQzMiBsbWluOwotKwlnc3NfYnVmZmVyX2Rlc2MgYnVmID0gR1NTX0NfRU1QVFlfQlVGRkVS OwotKwotKwlpZiAoZ3NzX2Rpc3BsYXlfbmFtZSgmbG1pbiwgbmFtZSwgJmJ1ZiwgTlVMTCkgPT0g R1NTX1NfQ09NUExFVEUpIHsKLSsJCWRlYnVnX2YoIiVzOiAlLipzIiwgbGFiZWwsIChpbnQpYnVm Lmxlbmd0aCwgKGNoYXIgKilidWYudmFsdWUpOwotKwkJZ3NzX3JlbGVhc2VfYnVmZmVyKCZsbWlu LCAmYnVmKTsKLSsJfQotK30KLSsKLSsvKgotKyAqIENoZWNrIHdoZXRoZXIgdGhlIHVzZXIgYWxy ZWFkeSBoYXMgdmFsaWQgR1NTQVBJIGluaXRpYXRvciBjcmVkZW50aWFscwotKyAqIChlLmcuIGEg S2VyYmVyb3MgVEdUKSBpbiB0aGVpciBkZWZhdWx0IGNyZWRlbnRpYWwgc3RvcmUgd2l0aCBhdCBs ZWFzdAotKyAqIG1pbl9saWZldGltZSBzZWNvbmRzIHJlbWFpbmluZy4gIFBhc3MgR1NTX0NfSU5E RUZJTklURSB0byBhY2NlcHQgYW55Ci0rICogcG9zaXRpdmUgcmVtYWluaW5nIGxpZmV0aW1lLiAg UnVucyBhcyB0aGUgdXNlci4KLSsgKiBSZXR1cm5zIDEgaWYgc3VmZmljaWVudCBjcmVkZW50aWFs cyBleGlzdCwgMCBvdGhlcndpc2UuCi0rICovCi0raW50Ci0rc3NoX2dzc2FwaV91c2VyX2hhc192 YWxpZF90Z3QodV9pbnQgbWluX2xpZmV0aW1lKQotK3sKLSsJT01fdWludDMyIG1ham9yLCBtaW5v ciwgbGlmZXRpbWUgPSAwOwotKwlnc3NfY3JlZF9pZF90IGNyZWQgPSBHU1NfQ19OT19DUkVERU5U SUFMOwotKwlpbnQgZm91bmQgPSAwOwotKwotKwltYWpvciA9IGdzc19hY3F1aXJlX2NyZWQoJm1p bm9yLCBHU1NfQ19OT19OQU1FLCBHU1NfQ19JTkRFRklOSVRFLAotKwkgICAgR1NTX0NfTk9fT0lE X1NFVCwgR1NTX0NfSU5JVElBVEUsICZjcmVkLCBOVUxMLCAmbGlmZXRpbWUpOwotKwlpZiAoIUdT U19FUlJPUihtYWpvcikgJiYgbGlmZXRpbWUgPiAwICYmCi0rCSAgICAobWluX2xpZmV0aW1lID09 IEdTU19DX0lOREVGSU5JVEUgfHwgbGlmZXRpbWUgPj0gbWluX2xpZmV0aW1lKSkKLSsJCWZvdW5k ID0gMTsKLSsJaWYgKGNyZWQgIT0gR1NTX0NfTk9fQ1JFREVOVElBTCkKLSsJCWdzc19yZWxlYXNl X2NyZWQoJm1pbm9yLCAmY3JlZCk7Ci0rCXJldHVybiBmb3VuZDsKLSt9Ci0rCi0rCi0rLyoKLSsg KiBQZXJmb3JtIFM0VTJTZWxmIChwcm90b2NvbCB0cmFuc2l0aW9uKTogYWNxdWlyZSBhIEtlcmJl cm9zIHNlcnZpY2UgdGlja2V0Ci0rICogZm9yIHRoZSBTU0ggdXNlciBvbiBiZWhhbGYgb2YgdGhl IGhvc3QgcHJpbmNpcGFsLiAgUnVucyBwcml2aWxlZ2VkLgotKyAqIFBvcHVsYXRlcyBnc3NhcGlf Y2xpZW50LntjcmVkcyxtZWNoLGRpc3BsYXluYW1lLGV4cG9ydGVkbmFtZX0gb24gc3VjY2Vzcy4K LSsgKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgLTEgb24gZmFpbHVyZS4KLSsgKi8KLSsvKiBQcml2 aWxlZ2VkICovCi0raW50Ci0rc3NoX2dzc2FwaV9zNHUyc2VsZihjb25zdCBjaGFyICp1c2VyLCB1 X2ludCBsaWZldGltZSkKLSt7Ci0rCU9NX3VpbnQzMiBtYWpvciwgbWlub3IsIHN0YXR1czsKLSsJ Z3NzX09JRF9zZXQgb2lkc2V0ID0gR1NTX0NfTk9fT0lEX1NFVDsKLSsJZ3NzX25hbWVfdCBob3N0 X25hbWUgPSBHU1NfQ19OT19OQU1FOwotKwlnc3NfbmFtZV90IHVzZXJfbmFtZSA9IEdTU19DX05P X05BTUU7Ci0rCWdzc19jcmVkX2lkX3QgaG9zdF9jcmVkcyA9IEdTU19DX05PX0NSRURFTlRJQUw7 Ci0rCWdzc19jcmVkX2lkX3QgaW1wZXJzb25hdGVkX2NyZWRzID0gR1NTX0NfTk9fQ1JFREVOVElB TDsKLSsJZ3NzX2J1ZmZlcl9kZXNjIGdzc2J1ZiwgZGlzcGxheW5hbWUgPSBHU1NfQ19FTVBUWV9C VUZGRVI7Ci0rCWNoYXIgbG5hbWVbTklfTUFYSE9TVF07Ci0rCWNoYXIgKnZhbDsKLSsKLSsJaWYg KGdldGhvc3RuYW1lKGxuYW1lLCBzaXplb2YobG5hbWUpKSAhPSAwKSB7Ci0rCQlsb2dpdF9mKCJn ZXRob3N0bmFtZTogJXMiLCBzdHJlcnJvcihlcnJubykpOwotKwkJcmV0dXJuIC0xOwotKwl9Ci0r Ci0rCS8qIEFjcXVpcmUgYWNjZXB0b3IgY3JlZGVudGlhbCBmb3IgaG9zdC8gZnJvbSB0aGUga2V5 dGFiICovCi0rCWdzc19jcmVhdGVfZW1wdHlfb2lkX3NldCgmc3RhdHVzLCAmb2lkc2V0KTsKLSsJ Z3NzX2FkZF9vaWRfc2V0X21lbWJlcigmc3RhdHVzLCAmZ3NzYXBpX2tlcmJlcm9zX21lY2gub2lk LCAmb2lkc2V0KTsKLSsKLSsJeGFzcHJpbnRmKCZ2YWwsICJob3N0QCVzIiwgbG5hbWUpOwotKwln c3NidWYudmFsdWUgPSB2YWw7Ci0rCWdzc2J1Zi5sZW5ndGggPSBzdHJsZW4odmFsKTsKLSsJbWFq b3IgPSBnc3NfaW1wb3J0X25hbWUoJm1pbm9yLCAmZ3NzYnVmLAotKwkgICAgR1NTX0NfTlRfSE9T VEJBU0VEX1NFUlZJQ0UsICZob3N0X25hbWUpOwotKwlmcmVlKHZhbCk7Ci0rCWlmIChHU1NfRVJS T1IobWFqb3IpKSB7Ci0rCQlsb2dpdF9mKCJnc3NfaW1wb3J0X25hbWUgKGhvc3QpIGZhaWxlZCIp OwotKwkJZ3NzX3JlbGVhc2Vfb2lkX3NldCgmc3RhdHVzLCAmb2lkc2V0KTsKLSsJCXJldHVybiAt MTsKLSsJfQotKwlkZWJ1Z19nc3NfbmFtZSgiaG9zdCBuYW1lIHBhcnNlZCBhcyIsIGhvc3RfbmFt ZSk7Ci0rCi0rCWRlYnVnX2YoImFjcXVpcmluZyBob3N0IGNyZWRlbnRpYWxzIGFzIHVpZD0ldSBl dWlkPSV1LCBwcmluY2lwYWw9aG9zdEAlcyIsCi0rCSAgICAodW5zaWduZWQpZ2V0dWlkKCksICh1 bnNpZ25lZClnZXRldWlkKCksIGxuYW1lKTsKLSsJI2lmZGVmIEhBVkVfR1NTX0FDUVVJUkVfQ1JF RF9GUk9NCi0rCXsKLSsjIGlmIGRlZmluZWQoS1JCNSkKLSsJCS8qCi0rCQkgKiBSZXNvbHZlIHRo ZSBrZXl0YWIgcGF0aDoga3JiNV9rdF9kZWZhdWx0X25hbWUgcmVzcGVjdHMKLSsJCSAqIEtSQjVf S1ROQU1FIGFuZCBrcmI1LmNvbmYgZGVmYXVsdF9rZXl0YWJfbmFtZS4KLSsJCSAqLwotKwkJY2hh ciBrZXl0YWJfbmFtZVtNQVhQQVRITEVOXTsKLSsJCWtyYjVfY29udGV4dCB0bXBfY3R4OwotKwot KwotKwkJa2V5dGFiX25hbWVbMF0gPSAnXDAnOwotKwkJaWYgKGtyYjVfaW5pdF9jb250ZXh0KCZ0 bXBfY3R4KSA9PSAwKSB7Ci0rCQkJKHZvaWQpa3JiNV9rdF9kZWZhdWx0X25hbWUodG1wX2N0eCwg a2V5dGFiX25hbWUsCi0rCQkJICAgIHNpemVvZihrZXl0YWJfbmFtZSkpOwotKwkJCWtyYjVfZnJl ZV9jb250ZXh0KHRtcF9jdHgpOwotKwkJfQotKwkJaWYgKGtleXRhYl9uYW1lWzBdID09ICdcMCcp Ci0rCQkJc3RybGNweShrZXl0YWJfbmFtZSwgIkZJTEU6L2V0Yy9rcmI1LmtleXRhYiIsCi0rCQkJ ICAgIHNpemVvZihrZXl0YWJfbmFtZSkpOwotKwkJLyoKLSsJCSAqIGNsaWVudF9rZXl0YWIgbGV0 cyBHU1NBUEkgZG8gQVMtUkVRIHRvIG9idGFpbiBhIFRHVCBmb3IgdGhlCi0rCQkgKiBob3N0IHBy aW5jaXBhbCAoaW5pdGlhdG9yIHJvbGUgbmVlZGVkIGZvciBTNFUyU2VsZikuCi0rCQkgKiBrZXl0 YWIgY292ZXJzIHRoZSBhY2NlcHRvciByb2xlLgotKwkJICogY2NhY2hlOiBNRU1PUlk6IGtlZXBz IHRoZSByZXN1bHRpbmcgVEdUIHZvbGF0aWxlLgotKwkJICovCi0rCQlnc3Nfa2V5X3ZhbHVlX2Vs ZW1lbnRfZGVzYyBzdG9yZV9lbGVtZW50c1tdID0gewotKwkJCXsgImNsaWVudF9rZXl0YWIiLCBr ZXl0YWJfbmFtZSB9LAotKwkJCXsgImtleXRhYiIsIGtleXRhYl9uYW1lIH0sCi0rCQkJeyAiY2Nh Y2hlIiwgIk1FTU9SWToiIH0sCi0rCQl9OwotKwkJY29uc3QgZ3NzX2tleV92YWx1ZV9zZXRfZGVz YyBjcmVkX3N0b3JlID0geyAzLCBzdG9yZV9lbGVtZW50cyB9OwotKyMgZWxzZQotKwkJZ3NzX2tl eV92YWx1ZV9lbGVtZW50X2Rlc2Mgc3RvcmVfZWxlbWVudHNbXSA9IHsKLSsJCQl7ICJjY2FjaGUi LCAiTUVNT1JZOiIgfSwKLSsJCX07Ci0rCQljb25zdCBnc3Nfa2V5X3ZhbHVlX3NldF9kZXNjIGNy ZWRfc3RvcmUgPSB7IDEsIHN0b3JlX2VsZW1lbnRzIH07Ci0rIyBlbmRpZgotKwotKwotKwkJbWFq b3IgPSBnc3NfYWNxdWlyZV9jcmVkX2Zyb20oJm1pbm9yLCBob3N0X25hbWUsIGxpZmV0aW1lLAot KwkJICAgIG9pZHNldCwgR1NTX0NfQk9USCwgJmNyZWRfc3RvcmUsICZob3N0X2NyZWRzLCBOVUxM LCBOVUxMKTsKLSsJfQotKyNlbHNlCi0rCW1ham9yID0gZ3NzX2FjcXVpcmVfY3JlZCgmbWlub3Is IGhvc3RfbmFtZSwgbGlmZXRpbWUsCi0rCSAgICBvaWRzZXQsIEdTU19DX0JPVEgsICZob3N0X2Ny ZWRzLCBOVUxMLCBOVUxMKTsKLSsjZW5kaWYKLSsJZ3NzX3JlbGVhc2VfbmFtZSgmbWlub3IsICZo b3N0X25hbWUpOwotKwlpZiAoR1NTX0VSUk9SKG1ham9yKSkgewotKwkJbG9naXRfZigiZ3NzX2Fj cXVpcmVfY3JlZChob3N0QCVzKSBmYWlsZWQgYXMgdWlkPSV1IGV1aWQ9JXUiLAotKwkJICAgIGxu YW1lLCAodW5zaWduZWQpZ2V0dWlkKCksICh1bnNpZ25lZClnZXRldWlkKCkpOwotKwkJbG9nX2dz c19lcnJvcihtYWpvciwgbWlub3IsICJTNFUyU2VsZjogZ3NzX2FjcXVpcmVfY3JlZCIpOwotKwkJ Z3NzX3JlbGVhc2Vfb2lkX3NldCgmc3RhdHVzLCAmb2lkc2V0KTsKLSsJCXJldHVybiAtMTsKLSsJ fQotKwotKwkvKiBJbXBvcnQgdGhlIFNTSCB1c2VybmFtZSBhcyBhIEdTU0FQSS9LZXJiZXJvcyBu YW1lICovCi0rCWdzc2J1Zi52YWx1ZSA9ICh2b2lkICopdXNlcjsKLSsJZ3NzYnVmLmxlbmd0aCA9 IHN0cmxlbih1c2VyKTsKLSsJbWFqb3IgPSBnc3NfaW1wb3J0X25hbWUoJm1pbm9yLCAmZ3NzYnVm LAotKwkgICAgR1NTX0NfTlRfVVNFUl9OQU1FLCAmdXNlcl9uYW1lKTsKLSsJaWYgKEdTU19FUlJP UihtYWpvcikpIHsKLSsJCWxvZ2l0X2YoImdzc19pbXBvcnRfbmFtZSAodXNlcikgZmFpbGVkIik7 Ci0rCQlnc3NfcmVsZWFzZV9jcmVkKCZtaW5vciwgJmhvc3RfY3JlZHMpOwotKwkJZ3NzX3JlbGVh c2Vfb2lkX3NldCgmc3RhdHVzLCAmb2lkc2V0KTsKLSsJCXJldHVybiAtMTsKLSsJfQotKwlkZWJ1 Z19nc3NfbmFtZSgidXNlciBuYW1lIHBhcnNlZCBhcyIsIHVzZXJfbmFtZSk7Ci0rCi0rCS8qIFM0 VTJTZWxmOiBvYnRhaW4gYSBzZXJ2aWNlIHRpY2tldCBmb3IgdGhlIHVzZXIgd2l0aG91dCB0aGVp ciBjcmVkcyAqLwotKwlkZWJ1Z19mKCJjYWxsaW5nIGdzc19hY3F1aXJlX2NyZWRfaW1wZXJzb25h dGVfbmFtZSBmb3IgdXNlciAlLjEwMHMiLCB1c2VyKTsKLSsJbWFqb3IgPSBnc3NfYWNxdWlyZV9j cmVkX2ltcGVyc29uYXRlX25hbWUoJm1pbm9yLAotKwkgICAgaG9zdF9jcmVkcywgdXNlcl9uYW1l LCBsaWZldGltZSwKLSsJICAgIG9pZHNldCwgR1NTX0NfSU5JVElBVEUsCi0rCSAgICAmaW1wZXJz b25hdGVkX2NyZWRzLCBOVUxMLCBOVUxMKTsKLSsKLSsJZ3NzX3JlbGVhc2VfY3JlZCgmbWlub3Is ICZob3N0X2NyZWRzKTsKLSsJZ3NzX3JlbGVhc2Vfb2lkX3NldCgmc3RhdHVzLCAmb2lkc2V0KTsK LSsJaWYgKEdTU19FUlJPUihtYWpvcikpIHsKLSsJCWxvZ2l0X2YoImdzc19hY3F1aXJlX2NyZWRf aW1wZXJzb25hdGVfbmFtZSBmYWlsZWQgZm9yICUuMTAwcyIsCi0rCQkgICAgdXNlcik7Ci0rCQls b2dfZ3NzX2Vycm9yKG1ham9yLCBtaW5vciwKLSsJCSAgICAiUzRVMlNlbGY6IGdzc19hY3F1aXJl X2NyZWRfaW1wZXJzb25hdGVfbmFtZSIpOwotKwkJZ3NzX3JlbGVhc2VfbmFtZSgmbWlub3IsICZ1 c2VyX25hbWUpOwotKwkJcmV0dXJuIC0xOwotKwl9Ci0rCi0rCS8qIEdldCB0aGUgZGlzcGxheSBu YW1lIChLZXJiZXJvcyBwcmluY2lwYWwgc3RyaW5nKSBmb3Igc3RvcmVjcmVkcyAqLwotKwltYWpv ciA9IGdzc19kaXNwbGF5X25hbWUoJm1pbm9yLCB1c2VyX25hbWUsICZkaXNwbGF5bmFtZSwgTlVM TCk7Ci0rCWdzc19yZWxlYXNlX25hbWUoJm1pbm9yLCAmdXNlcl9uYW1lKTsKLSsJaWYgKEdTU19F UlJPUihtYWpvcikpIHsKLSsJCWxvZ2l0X2YoImdzc19kaXNwbGF5X25hbWUgZmFpbGVkIik7Ci0r CQlnc3NfcmVsZWFzZV9jcmVkKCZtaW5vciwgJmltcGVyc29uYXRlZF9jcmVkcyk7Ci0rCQlyZXR1 cm4gLTE7Ci0rCX0KLSsKLSsJLyogUG9wdWxhdGUgZ3NzYXBpX2NsaWVudCBmb3Igc3RvcmVjcmVk c19zNHUyc2VsZiBhbmQgczR1MnByb3h5ICovCi0rCWdzc2FwaV9jbGllbnQubWVjaCA9ICZnc3Nh cGlfa2VyYmVyb3NfbWVjaDsKLSsJZ3NzYXBpX2NsaWVudC5jcmVkcyA9IGltcGVyc29uYXRlZF9j cmVkczsKLSsJZ3NzYXBpX2NsaWVudC5kaXNwbGF5bmFtZS52YWx1ZSA9IHhtYWxsb2MoZGlzcGxh eW5hbWUubGVuZ3RoICsgMSk7Ci0rCW1lbWNweShnc3NhcGlfY2xpZW50LmRpc3BsYXluYW1lLnZh bHVlLAotKwkgICAgZGlzcGxheW5hbWUudmFsdWUsIGRpc3BsYXluYW1lLmxlbmd0aCk7Ci0rCSgo Y2hhciAqKWdzc2FwaV9jbGllbnQuZGlzcGxheW5hbWUudmFsdWUpW2Rpc3BsYXluYW1lLmxlbmd0 aF0gPSAnXDAnOwotKwlnc3NhcGlfY2xpZW50LmRpc3BsYXluYW1lLmxlbmd0aCA9IGRpc3BsYXlu YW1lLmxlbmd0aDsKLSsJLyoKLSsJICogZXhwb3J0ZWRuYW1lIGlzIHVzZWQgYnkgc3NoX2dzc2Fw aV9rcmI1X3N0b3JlY3JlZHMg4oaSIGtyYjVfcGFyc2VfbmFtZS4KLSsJICogZ3NzX2Rpc3BsYXlf bmFtZSBmb3IgYSB1c2VyLW5hbWUgcmV0dXJucyB0aGUgY2Fub25pY2FsIHByaW5jaXBhbAotKwkg KiBzdHJpbmcgKGUuZy4gdXNlckBSRUFMTSkgd2hpY2gga3JiNV9wYXJzZV9uYW1lIGNhbiBjb25z dW1lIGRpcmVjdGx5LgotKwkgKi8KLSsJZ3NzYXBpX2NsaWVudC5leHBvcnRlZG5hbWUudmFsdWUg PSB4bWFsbG9jKGRpc3BsYXluYW1lLmxlbmd0aCArIDEpOwotKwltZW1jcHkoZ3NzYXBpX2NsaWVu dC5leHBvcnRlZG5hbWUudmFsdWUsCi0rCSAgICBkaXNwbGF5bmFtZS52YWx1ZSwgZGlzcGxheW5h bWUubGVuZ3RoKTsKLSsJKChjaGFyICopZ3NzYXBpX2NsaWVudC5leHBvcnRlZG5hbWUudmFsdWUp W2Rpc3BsYXluYW1lLmxlbmd0aF0gPSAnXDAnOwotKwlnc3NhcGlfY2xpZW50LmV4cG9ydGVkbmFt ZS5sZW5ndGggPSBkaXNwbGF5bmFtZS5sZW5ndGg7Ci0rCi0rCWdzc19yZWxlYXNlX2J1ZmZlcigm bWlub3IsICZkaXNwbGF5bmFtZSk7Ci0rCWRlYnVnX2YoIlM0VTJTZWxmIHN1Y2NlZWRlZCBmb3Ig JS4xMDBzIiwgdXNlcik7Ci0rCXJldHVybiAwOwotK30KLSsKLSsvKiBBcyB1c2VyIOKAlCB3cml0 ZSB0aGUgUzRVMlNlbGYgdGlja2V0IGludG8gYSBuZXcgY2NhY2hlIHZpYSBtZWNoLT5zdG9yZWNy ZWRzICovCi0gdm9pZAotLXNzaF9nc3NhcGlfY2xlYW51cF9jcmVkcyh2b2lkKQotK3NzaF9nc3Nh cGlfc3RvcmVjcmVkc19zNHUyc2VsZih2b2lkKQotIHsKLS0Ja3JiNV9jY2FjaGUgY2NhY2hlID0g TlVMTDsKLS0Ja3JiNV9lcnJvcl9jb2RlIHByb2JsZW07Ci0tCi0tCWlmIChnc3NhcGlfY2xpZW50 LnN0b3JlLmRhdGEgIT0gTlVMTCkgewotLQkJaWYgKChwcm9ibGVtID0ga3JiNV9jY19yZXNvbHZl KGdzc2FwaV9jbGllbnQuc3RvcmUuZGF0YSwgZ3NzYXBpX2NsaWVudC5zdG9yZS5lbnZ2YWwsICZj Y2FjaGUpKSkgewotLQkJCWRlYnVnX2YoImtyYjVfY2NfcmVzb2x2ZSgpOiAlLjEwMHMiLAotLQkJ CQlrcmI1X2dldF9lcnJfdGV4dChnc3NhcGlfY2xpZW50LnN0b3JlLmRhdGEsIHByb2JsZW0pKTsK LS0JCX0gZWxzZSBpZiAoKHByb2JsZW0gPSBrcmI1X2NjX2Rlc3Ryb3koZ3NzYXBpX2NsaWVudC5z dG9yZS5kYXRhLCBjY2FjaGUpKSkgewotLQkJCWRlYnVnX2YoImtyYjVfY2NfZGVzdHJveSgpOiAl LjEwMHMiLAotLQkJCQlrcmI1X2dldF9lcnJfdGV4dChnc3NhcGlfY2xpZW50LnN0b3JlLmRhdGEs IHByb2JsZW0pKTsKLS0JCX0gZWxzZSB7Ci0tCQkJa3JiNV9mcmVlX2NvbnRleHQoZ3NzYXBpX2Ns aWVudC5zdG9yZS5kYXRhKTsKLS0JCQlnc3NhcGlfY2xpZW50LnN0b3JlLmRhdGEgPSBOVUxMOwot KwlpZiAoZ3NzYXBpX2NsaWVudC5tZWNoID09IE5VTEwgfHwgZ3NzYXBpX2NsaWVudC5tZWNoLT5z dG9yZWNyZWRzID09IE5VTEwpIHsKLSsJCWRlYnVnX2YoIm5vIEdTU0FQSSBtZWNoYW5pc20gZm9y IHN0b3JpbmcgUzRVMlNlbGYgY3JlZGVudGlhbHMiKTsKLSsJCXJldHVybjsKLSsJfQotKwkoKmdz c2FwaV9jbGllbnQubWVjaC0+c3RvcmVjcmVkcykoJmdzc2FwaV9jbGllbnQpOwotK30KLSsKLSsv KgotKyAqIFBlcmZvcm0gUzRVMlByb3h5IGZvciBlYWNoIGNvbmZpZ3VyZWQgc2VydmljZSBwcmlu Y2lwYWwsIHRoZW4gZmx1c2ggYWxsCi0rICogcmVzdWx0aW5nIHRpY2tldHMgaW50byB0aGUgdXNl cidzIGNjYWNoZS4gIFJ1bnMgYXMgdXNlciwgYWZ0ZXIKLSsgKiBzc2hfZ3NzYXBpX3N0b3JlY3Jl ZHNfczR1MnNlbGYoKSBoYXMgY3JlYXRlZCB0aGUgY2NhY2hlLgotKyAqCi0rICogZ3NzYXBpX2Ns aWVudC5jcmVkcyAodGhlIFM0VTJTZWxmIHByb3h5IGNyZWRlbnRpYWwpIGlzIHBhc3NlZCBhcyB0 aGUKLSsgKiBpbml0aWF0b3IgdG8gZ3NzX2luaXRfc2VjX2NvbnRleHQoKTsgdGhlIEdTU0FQSSBs aWJyYXJ5IHByZXNlbnRzIHRoZSBUR1QKLSsgKiBhbmQgZXZpZGVuY2UgdGlja2V0IHRvIHRoZSBL REMgdmlhIFM0VTJQcm94eSBUR1MtUkVRLiAgVGhlIG91dHB1dCB0b2tlbgotKyAqIChBUC1SRVEp IGlzIGRpc2NhcmRlZCDigJQgd2UgZG8gbm90IGNvbm5lY3QgdG8gdGhlIHRhcmdldCBzZXJ2aWNl LgotKyAqCi0rICogQWZ0ZXIgaXRlcmF0aW5nIGFsbCBzZXJ2aWNlcywgZ3NzX3N0b3JlX2NyZWQo KSBmbHVzaGVzIHRoZSBhY2N1bXVsYXRlZAotKyAqIHByb3h5IHNlcnZpY2UgdGlja2V0cyBmcm9t IHRoZSBjcmVkZW50aWFsJ3MgaW50ZXJuYWwgY2NhY2hlIGludG8gdGhlCi0rICogS1JCNUNDTkFN RSBjY2FjaGUgdGhhdCBzdG9yZWNyZWRzX3M0dTJzZWxmKCkgYWxyZWFkeSBjcmVhdGVkLgotKyAq LwotKy8qIEFzIHVzZXIgKi8KLSt2b2lkCi0rc3NoX2dzc2FwaV9zNHUycHJveHkoY2hhciAqKnNl cnZpY2VzLCB1X2ludCBuc2VydmljZXMsIHVfaW50IGxpZmV0aW1lKQotK3sKLSsJT01fdWludDMy IG1ham9yLCBtaW5vcjsKLSsJZ3NzX2J1ZmZlcl9kZXNjIHNlcnZpY2VfYnVmLCBvdXRwdXRfdG9r ZW4gPSBHU1NfQ19FTVBUWV9CVUZGRVI7Ci0rCWdzc19uYW1lX3QgdGFyZ2V0X25hbWU7Ci0rCWdz c19jdHhfaWRfdCBjdHg7Ci0rCXVfaW50IGk7Ci0rCi0rCWlmIChnc3NhcGlfY2xpZW50LmNyZWRz ID09IEdTU19DX05PX0NSRURFTlRJQUwpIHsKLSsJCWRlYnVnX2YoIm5vIHByb3h5IGNyZWRlbnRp YWwgYXZhaWxhYmxlIik7Ci0rCQlyZXR1cm47Ci0rCX0KLSsJaWYgKGdzc2FwaV9jbGllbnQuc3Rv cmUuZW52dmFsID09IE5VTEwpIHsKLSsJCWRlYnVnX2YoIm5vIGNjYWNoZSBwYXRoIHNldDsgY2Fu bm90IHN0b3JlIHByb3h5IHRpY2tldHMiKTsKLSsJCXJldHVybjsKLSsJfQotKwotKwlkZWJ1Z19m KCJzdGFydGluZyBTNFUyUHJveHkgYXMgdWlkPSV1IGV1aWQ9JXUsICV1IHNlcnZpY2UocyksIGNj YWNoZT0lcyIsCi0rCSAgICAodW5zaWduZWQpZ2V0dWlkKCksICh1bnNpZ25lZClnZXRldWlkKCks IG5zZXJ2aWNlcywKLSsJICAgIGdzc2FwaV9jbGllbnQuc3RvcmUuZW52dmFsKTsKLSsKLSsJLyog UG9pbnQgdGhlIEdTU0FQSSBsaWJyYXJ5IGF0IHRoZSB1c2VyJ3MgY2NhY2hlIGZvciB0aWNrZXQg c3RvcmFnZSAqLwotKwlzZXRlbnYoIktSQjVDQ05BTUUiLCBnc3NhcGlfY2xpZW50LnN0b3JlLmVu dnZhbCwgMSk7Ci0rCi0rCWZvciAoaSA9IDA7IGkgPCBuc2VydmljZXM7IGkrKykgewotKwkJY3R4 ID0gR1NTX0NfTk9fQ09OVEVYVDsKLSsJCXRhcmdldF9uYW1lID0gR1NTX0NfTk9fTkFNRTsKLSsK LSsJCXNlcnZpY2VfYnVmLnZhbHVlID0gc2VydmljZXNbaV07Ci0rCQlzZXJ2aWNlX2J1Zi5sZW5n dGggPSBzdHJsZW4oc2VydmljZXNbaV0pOwotKwotKwkJLyoKLSsJCSAqIEdTU19DX05PX09JRDog bGV0IHRoZSBsaWJyYXJ5IGRldGVybWluZSB0aGUgbmFtZSB0eXBlLgotKwkJICogV2l0aCBLZXJi ZXJvcyBhcyB0aGUgYWN0aXZlIG1lY2hhbmlzbSwgYSBmdWxseS1xdWFsaWZpZWQKLSsJCSAqIHBy aW5jaXBhbCBsaWtlICJzdmMvaG9zdEBSRUFMTSIgaXMgcGFyc2VkIGNvcnJlY3RseS4KLSsJCSAq LwotKwkJbWFqb3IgPSBnc3NfaW1wb3J0X25hbWUoJm1pbm9yLCAmc2VydmljZV9idWYsCi0rCQkg ICAgR1NTX0NfTk9fT0lELCAmdGFyZ2V0X25hbWUpOwotKwkJaWYgKEdTU19FUlJPUihtYWpvcikp IHsKLSsJCQlsb2dpdF9mKCJnc3NfaW1wb3J0X25hbWUgZmFpbGVkIGZvciAlLjIwMHMiLAotKwkJ CSAgICBzZXJ2aWNlc1tpXSk7Ci0rCQkJbG9nX2dzc19lcnJvcihtYWpvciwgbWlub3IsICJTNFUy UHJveHk6IGdzc19pbXBvcnRfbmFtZSIpOwotKwkJCWNvbnRpbnVlOwotIAkJfQotKwkJZGVidWdf Z3NzX25hbWUoInRhcmdldCBzZXJ2aWNlIG5hbWUgcGFyc2VkIGFzIiwgdGFyZ2V0X25hbWUpOwot KwotKwkJZGVidWdfZigiY2FsbGluZyBnc3NfaW5pdF9zZWNfY29udGV4dCBmb3IgJS4yMDBzIiwg c2VydmljZXNbaV0pOwotKwkJbWFqb3IgPSBnc3NfaW5pdF9zZWNfY29udGV4dCgmbWlub3IsCi0r CQkgICAgZ3NzYXBpX2NsaWVudC5jcmVkcywJCS8qIHByb3h5IGNyZWRlbnRpYWwgKi8KLSsJCSAg ICAmY3R4LCB0YXJnZXRfbmFtZSwKLSsJCSAgICBHU1NfQ19OT19PSUQsCQkJLyogZGVmYXVsdCBt ZWNoIChLZXJiZXJvcykgKi8KLSsJCSAgICAwLAkJCQkJLyogbm8gZmxhZ3MsIG5vIG11dHVhbCBh dXRoICovCi0rCQkgICAgbGlmZXRpbWUsCi0rCQkgICAgR1NTX0NfTk9fQ0hBTk5FTF9CSU5ESU5H UywKLSsJCSAgICBHU1NfQ19OT19CVUZGRVIsCQkJLyogbm8gaW5wdXQgdG9rZW4gKi8KLSsJCSAg ICBOVUxMLAkJCQkvKiBhY3R1YWxfbWVjaF90eXBlICovCi0rCQkgICAgJm91dHB1dF90b2tlbiwK LSsJCSAgICBOVUxMLAkJCQkvKiByZXRfZmxhZ3MgKi8KLSsJCSAgICBOVUxMKTsJCQkJLyogdGlt ZV9yZWMgKi8KLSsKLSsJCWdzc19yZWxlYXNlX2J1ZmZlcigmbWlub3IsICZvdXRwdXRfdG9rZW4p OwotKwkJZ3NzX3JlbGVhc2VfbmFtZSgmbWlub3IsICZ0YXJnZXRfbmFtZSk7Ci0rCQlpZiAoY3R4 ICE9IEdTU19DX05PX0NPTlRFWFQpCi0rCQkJZ3NzX2RlbGV0ZV9zZWNfY29udGV4dCgmbWlub3Is ICZjdHgsIEdTU19DX05PX0JVRkZFUik7Ci0rCi0rCQlpZiAoR1NTX0VSUk9SKG1ham9yKSkgewot KwkJCWxvZ2l0X2YoIlM0VTJQcm94eSBmb3IgJS4yMDBzIG9uIGJlaGFsZiBvZiAlLjIwMHMgZmFp bGVkIiwKLSsJCQkgICAgc2VydmljZXNbaV0sCi0rCQkJICAgIChjaGFyICopZ3NzYXBpX2NsaWVu dC5kaXNwbGF5bmFtZS52YWx1ZSk7Ci0rCQkJbG9nX2dzc19lcnJvcihtYWpvciwgbWlub3IsCi0r CQkJICAgICJTNFUyUHJveHk6IGdzc19pbml0X3NlY19jb250ZXh0Iik7Ci0rCQl9IGVsc2UKLSsJ CQlkZWJ1Z19mKCJTNFUyUHJveHkgdGlja2V0IG9idGFpbmVkIGZvciAlLjIwMHMiLAotKwkJCSAg ICBzZXJ2aWNlc1tpXSk7Ci0gCX0KLSsKLSsJLyoKLSsJICogRmx1c2ggYWxsIHByb3h5IHNlcnZp Y2UgdGlja2V0cyBmcm9tIHRoZSBjcmVkZW50aWFsJ3MgaW50ZXJuYWwKLSsJICogY2NhY2hlIGlu dG8gdGhlIEtSQjVDQ05BTUUgY2NhY2hlIHZpYSBnc3Nfc3RvcmVfY3JlZCgpLgotKwkgKi8KLSsJ bWFqb3IgPSBnc3Nfc3RvcmVfY3JlZCgmbWlub3IsIGdzc2FwaV9jbGllbnQuY3JlZHMsIEdTU19D X0lOSVRJQVRFLAotKwkgICAgR1NTX0NfTk9fT0lELCAxIC8qIG92ZXJ3cml0ZV9jcmVkICovLCAx IC8qIGRlZmF1bHRfY3JlZCAqLywKLSsJICAgIE5VTEwsIE5VTEwpOwotKwlpZiAoR1NTX0VSUk9S KG1ham9yKSkgewotKwkJbG9naXRfZigiZ3NzX3N0b3JlX2NyZWQgZmFpbGVkOyBwcm94eSB0aWNr ZXRzIG1heSBiZSBtaXNzaW5nIik7Ci0rCQlsb2dfZ3NzX2Vycm9yKG1ham9yLCBtaW5vciwgIlM0 VTJQcm94eTogZ3NzX3N0b3JlX2NyZWQiKTsKLSsJfQotKwotKwl1bnNldGVudigiS1JCNUNDTkFN RSIpOwotK30KLSsKLSsjaWZuZGVmIEtSQjUKLSsvKiBBcyB1c2VyIC0gY2FsbGVkIG9uIGZhdGFs L2V4aXQ7IGZ1bGwgaW1wbGVtZW50YXRpb24gaW4gZ3NzLXNlcnYta3JiNS5jICovCi0rdm9pZAot K3NzaF9nc3NhcGlfY2xlYW51cF9jcmVkcyh2b2lkKQotK3sKLSt9Ci0rCi0rLyoKLSsgKiBGaWx0 ZXIgdGhlIHVzZXIncyBjY2FjaGU7IGZ1bGwgaW1wbGVtZW50YXRpb24gaW4gZ3NzLXNlcnYta3Ji NS5jLgotKyAqLwotK3ZvaWQKLStzc2hfZ3NzYXBpX2tyYjVfZmlsdGVyX2NjYWNoZSh1X2ludCBk cm9wX2ZsYWdzLAotKyAgICBjaGFyICoqcHJveHlfc2VydmljZXMsIHVfaW50IG5wcm94eV9zZXJ2 aWNlcykKLSt7Ci0gfQotKyNlbmRpZiAvKiAhS1JCNSAqLwotIAotIC8qIEFzIHVzZXIgKi8KLSBp bnQKLWRpZmYgLS1naXQgYS9zZXJ2Y29uZi5jIGIvc2VydmNvbmYuYwotaW5kZXggZjRkNmIxOWRk Li5lMDVhMzE1ODQgMTAwNjQ0Ci0tLS0gYS9zZXJ2Y29uZi5jCi0rKysgYi9zZXJ2Y29uZi5jCi1A QCAtMTQ5LDYgKzE0OSw5IEBAIGluaXRpYWxpemVfc2VydmVyX29wdGlvbnMoU2VydmVyT3B0aW9u cyAqb3B0aW9ucykKLSAJb3B0aW9ucy0+Z3NzX2luZGljYXRvcnMgPSBOVUxMOwotIAlvcHRpb25z LT5nc3Nfc3RvcmVfcmVrZXkgPSAtMTsKLSAJb3B0aW9ucy0+Z3NzX2tleF9hbGdvcml0aG1zID0g TlVMTDsKLSsJb3B0aW9ucy0+Z3NzX2FsbG93X3M0dTJzZWxmID0gLTE7Ci0rCW9wdGlvbnMtPmdz c19wcm94eV9zZXJ2aWNlcyA9IE5VTEw7Ci0rCW9wdGlvbnMtPm51bV9nc3NfcHJveHlfc2Vydmlj ZXMgPSAwOwotIAlvcHRpb25zLT51c2Vfa3VzZXJvayA9IC0xOwotIAlvcHRpb25zLT5lbmFibGVf azV1c2VycyA9IC0xOwotIAlvcHRpb25zLT5wYXNzd29yZF9hdXRoZW50aWNhdGlvbiA9IC0xOwot QEAgLTQwNiw2ICs0MDksOCBAQCBmaWxsX2RlZmF1bHRfc2VydmVyX29wdGlvbnMoU2VydmVyT3B0 aW9ucyAqb3B0aW9ucykKLSAJCW9wdGlvbnMtPmdzc19kZWxlZ19jcmVkcyA9IDE7Ci0gCWlmIChv cHRpb25zLT5nc3Nfc3RyaWN0X2FjY2VwdG9yID09IC0xKQotIAkJb3B0aW9ucy0+Z3NzX3N0cmlj dF9hY2NlcHRvciA9IDE7Ci0rCWlmIChvcHRpb25zLT5nc3NfYWxsb3dfczR1MnNlbGYgPT0gLTEp Ci0rCQlvcHRpb25zLT5nc3NfYWxsb3dfczR1MnNlbGYgPSAwOwotIAlpZiAob3B0aW9ucy0+Z3Nz X3N0b3JlX3Jla2V5ID09IC0xKQotIAkJb3B0aW9ucy0+Z3NzX3N0b3JlX3Jla2V5ID0gMDsKLSAj aWZkZWYgR1NTQVBJCi1AQCAtNjAzLDYgKzYwOCw3IEBAIHR5cGVkZWYgZW51bSB7Ci0gCXNIb3N0 S2V5QWxnb3JpdGhtcywgc1BlclNvdXJjZU1heFN0YXJ0dXBzLCBzUGVyU291cmNlTmV0QmxvY2tT aXplLAotIAlzUGVyU291cmNlUGVuYWx0aWVzLCBzUGVyU291cmNlUGVuYWx0eUV4ZW1wdExpc3Qs Ci0gCXNDbGllbnRBbGl2ZUludGVydmFsLCBzQ2xpZW50QWxpdmVDb3VudE1heCwgc0F1dGhvcml6 ZWRLZXlzRmlsZSwKLSsJc0dzc0FsbG93UzRVMlNlbGYsIHNHc3NQcm94eVM0VTJTZXJ2aWNlcywK LSAJc0dzc0F1dGhlbnRpY2F0aW9uLCBzR3NzQ2xlYW51cENyZWRzLCBzR3NzRGVsZWdhdGVDcmVk cywgc0dzc0VuYWJsZWs1dXNlcnMsIHNHc3NTdHJpY3RBY2NlcHRvciwKLSAJc0dzc0luZGljYXRv cnMsIHNHc3NLZXlFeCwgc0dzc0tleEFsZ29yaXRobXMsIHNHc3NTdG9yZVJla2V5LAotIAlzQWNj ZXB0RW52LCBzU2V0RW52LCBzUGVybWl0VHVubmVsLAotQEAgLTcwMiw2ICs3MDgsOCBAQCBzdGF0 aWMgc3RydWN0IHsKLSAJeyAiZ3NzYXBpa2V4YWxnb3JpdGhtcyIsIHNHc3NLZXhBbGdvcml0aG1z LCBTU0hDRkdfR0xPQkFMIH0sCi0gCXsgImdzc2FwaWVuYWJsZWs1dXNlcnMiLCBzR3NzRW5hYmxl azV1c2VycywgU1NIQ0ZHX0FMTCB9LAotIAl7ICJnc3NhcGlpbmRpY2F0b3JzIiwgc0dzc0luZGlj YXRvcnMsIFNTSENGR19BTEwgfSwKLSsJeyAiZ3NzYXBpYWxsb3dzNHUyc2VsZiIsIHNHc3NBbGxv d1M0VTJTZWxmLCBTU0hDRkdfQUxMIH0sCi0rCXsgImdzc2FwaXByb3h5czR1MnNlcnZpY2VzIiwg c0dzc1Byb3h5UzRVMlNlcnZpY2VzLCBTU0hDRkdfQUxMIH0sCi0gI2Vsc2UKLSAJeyAiZ3NzYXBp YXV0aGVudGljYXRpb24iLCBzVW5zdXBwb3J0ZWQsIFNTSENGR19BTEwgfSwKLSAJeyAiZ3NzYXBp Y2xlYW51cGNyZWRlbnRpYWxzIiwgc1Vuc3VwcG9ydGVkLCBTU0hDRkdfR0xPQkFMIH0sCi1AQCAt NzEzLDYgKzcyMSw4IEBAIHN0YXRpYyBzdHJ1Y3QgewotIAl7ICJnc3NhcGlrZXhhbGdvcml0aG1z Iiwgc1Vuc3VwcG9ydGVkLCBTU0hDRkdfR0xPQkFMIH0sCi0gCXsgImdzc2FwaWVuYWJsZWs1dXNl cnMiLCBzVW5zdXBwb3J0ZWQsIFNTSENGR19BTEwgfSwKLSAJeyAiZ3NzYXBpaW5kaWNhdG9ycyIs IHNVbnN1cHBvcnRlZCwgU1NIQ0ZHX0FMTCB9LAotKwl7ICJnc3NhcGlhbGxvd3M0dTJzZWxmIiwg c1Vuc3VwcG9ydGVkLCBTU0hDRkdfQUxMIH0sCi0rCXsgImdzc2FwaXByb3h5czR1MnNlcnZpY2Vz Iiwgc1Vuc3VwcG9ydGVkLCBTU0hDRkdfQUxMIH0sCi0gI2VuZGlmCi0gCXsgImdzc3VzZXNlc3Np b25jY2FjaGUiLCBzVW5zdXBwb3J0ZWQsIFNTSENGR19HTE9CQUwgfSwKLSAJeyAiZ3NzYXBpdXNl c2Vzc2lvbmNyZWRjYWNoZSIsIHNVbnN1cHBvcnRlZCwgU1NIQ0ZHX0dMT0JBTCB9LAotQEAgLTE3 NTQsNiArMTc2NCw0NCBAQCBwcm9jZXNzX3NlcnZlcl9jb25maWdfbGluZV9kZXB0aChTZXJ2ZXJP cHRpb25zICpvcHRpb25zLCBjaGFyICpsaW5lLAotIAkJCW9wdGlvbnMtPmdzc19pbmRpY2F0b3Jz ID0geHN0cmR1cChhcmcpOwotIAkJYnJlYWs7Ci0gCi0rCWNhc2Ugc0dzc0FsbG93UzRVMlNlbGY6 Ci0rCQlhcmcgPSBhcmd2X25leHQoJmFjLCAmYXYpOwotKwkJaWYgKCFhcmcgfHwgKmFyZyA9PSAn XDAnKQotKwkJCWZhdGFsKCIlcyBsaW5lICVkOiAlcyBtaXNzaW5nIGFyZ3VtZW50LiIsCi0rCQkJ ICAgIGZpbGVuYW1lLCBsaW5lbnVtLCBrZXl3b3JkKTsKLSsJCWlmIChzdHJjYXNlY21wKGFyZywg Im5vIikgPT0gMCkKLSsJCQl2YWx1ZSA9IDA7Ci0rCQllbHNlIGlmIChzdHJjYXNlY21wKGFyZywg InllcyIpID09IDApCi0rCQkJdmFsdWUgPSBJTlRfTUFYOwotKwkJZWxzZSBpZiAoKHZhbHVlID0g Y29udnRpbWUoYXJnKSkgPD0gMCkKLSsJCQlmYXRhbCgiJXMgbGluZSAlZDogaW52YWxpZCAlcyB2 YWx1ZSBcIiVzXCIuIiwKLSsJCQkgICAgZmlsZW5hbWUsIGxpbmVudW0sIGtleXdvcmQsIGFyZyk7 Ci0rCQlpZiAoKmFjdGl2ZXAgJiYgb3B0aW9ucy0+Z3NzX2FsbG93X3M0dTJzZWxmID09IC0xKQot KwkJCW9wdGlvbnMtPmdzc19hbGxvd19zNHUyc2VsZiA9IHZhbHVlOwotKwkJYnJlYWs7Ci0rCi0r CWNhc2Ugc0dzc1Byb3h5UzRVMlNlcnZpY2VzOgotKwkJd2hpbGUgKChhcmcgPSBhcmd2X25leHQo JmFjLCAmYXYpKSAhPSBOVUxMKSB7Ci0rCQkJaWYgKCphcmcgPT0gJ1wwJykKLSsJCQkJZmF0YWwo IiVzIGxpbmUgJWQ6ICVzIG1pc3NpbmcgYXJndW1lbnQuIiwKLSsJCQkJICAgIGZpbGVuYW1lLCBs aW5lbnVtLCBrZXl3b3JkKTsKLSsJCQlpZiAoc3RyY2FzZWNtcChhcmcsICJub25lIikgPT0gMCkg ewotKwkJCQkvKiAibm9uZSIgY2xlYXJzIGFueSBwcmV2aW91cyBsaXN0ICovCi0rCQkJCWZvciAo aSA9IDA7IGkgPCBvcHRpb25zLT5udW1fZ3NzX3Byb3h5X3NlcnZpY2VzOyBpKyspCi0rCQkJCQlm cmVlKG9wdGlvbnMtPmdzc19wcm94eV9zZXJ2aWNlc1tpXSk7Ci0rCQkJCWZyZWUob3B0aW9ucy0+ Z3NzX3Byb3h5X3NlcnZpY2VzKTsKLSsJCQkJb3B0aW9ucy0+Z3NzX3Byb3h5X3NlcnZpY2VzID0g TlVMTDsKLSsJCQkJb3B0aW9ucy0+bnVtX2dzc19wcm94eV9zZXJ2aWNlcyA9IDA7Ci0rCQkJCWJy ZWFrOwotKwkJCX0KLSsJCQlpZiAoISphY3RpdmVwKQotKwkJCQljb250aW51ZTsKLSsJCQlvcHRf YXJyYXlfYXBwZW5kKGZpbGVuYW1lLCBsaW5lbnVtLCBrZXl3b3JkLAotKwkJCSAgICAmb3B0aW9u cy0+Z3NzX3Byb3h5X3NlcnZpY2VzLAotKwkJCSAgICAmb3B0aW9ucy0+bnVtX2dzc19wcm94eV9z ZXJ2aWNlcywgYXJnKTsKLSsJCX0KLSsJCWJyZWFrOwotKwotIAljYXNlIHNQYXNzd29yZEF1dGhl bnRpY2F0aW9uOgotIAkJaW50cHRyID0gJm9wdGlvbnMtPnBhc3N3b3JkX2F1dGhlbnRpY2F0aW9u OwotIAkJZ290byBwYXJzZV9mbGFnOwotQEAgLTMwNTMsNiArMzEwMSw3IEBAIGNvcHlfc2V0X3Nl cnZlcl9vcHRpb25zKFNlcnZlck9wdGlvbnMgKmRzdCwgU2VydmVyT3B0aW9ucyAqc3JjLCBpbnQg cHJlYXV0aCkKLSAKLSAJTV9DUF9JTlRPUFQocGFzc3dvcmRfYXV0aGVudGljYXRpb24pOwotIAlN X0NQX0lOVE9QVChnc3NfYXV0aGVudGljYXRpb24pOwotKwlNX0NQX0lOVE9QVChnc3NfYWxsb3df czR1MnNlbGYpOwotIAlNX0NQX0lOVE9QVChwdWJrZXlfYXV0aGVudGljYXRpb24pOwotIAlNX0NQ X0lOVE9QVChwdWJrZXlfYXV0aF9vcHRpb25zKTsKLSAJTV9DUF9JTlRPUFQoa2VyYmVyb3NfYXV0 aGVudGljYXRpb24pOwotQEAgLTM0MDcsNiArMzQ1NiwxNSBAQCBkdW1wX2NvbmZpZyhTZXJ2ZXJP cHRpb25zICpvKQotIAlkdW1wX2NmZ19mbXRpbnQoc0dzc1N0b3JlUmVrZXksIG8tPmdzc19zdG9y ZV9yZWtleSk7Ci0gCWR1bXBfY2ZnX3N0cmluZyhzR3NzS2V4QWxnb3JpdGhtcywgby0+Z3NzX2tl eF9hbGdvcml0aG1zKTsKLSAJZHVtcF9jZmdfc3RyaW5nKHNHc3NJbmRpY2F0b3JzLCBvLT5nc3Nf aW5kaWNhdG9ycyk7Ci0rCWlmIChvLT5nc3NfYWxsb3dfczR1MnNlbGYgPT0gMCkKLSsJCXByaW50 ZigiJXMgbm9cbiIsIGxvb2t1cF9vcGNvZGVfbmFtZShzR3NzQWxsb3dTNFUyU2VsZikpOwotKwll bHNlIGlmIChvLT5nc3NfYWxsb3dfczR1MnNlbGYgPT0gSU5UX01BWCkKLSsJCXByaW50ZigiJXMg eWVzXG4iLCBsb29rdXBfb3Bjb2RlX25hbWUoc0dzc0FsbG93UzRVMlNlbGYpKTsKLSsJZWxzZQot KwkJcHJpbnRmKCIlcyAlZFxuIiwgbG9va3VwX29wY29kZV9uYW1lKHNHc3NBbGxvd1M0VTJTZWxm KSwKLSsJCSAgICBvLT5nc3NfYWxsb3dfczR1MnNlbGYpOwotKwlkdW1wX2NmZ19zdHJhcnJheV9v bmVsaW5lKHNHc3NQcm94eVM0VTJTZXJ2aWNlcywgby0+bnVtX2dzc19wcm94eV9zZXJ2aWNlcywK LSsJICAgIG8tPmdzc19wcm94eV9zZXJ2aWNlcyk7Ci0gI2VuZGlmCi0gCWR1bXBfY2ZnX2ZtdGlu dChzUGFzc3dvcmRBdXRoZW50aWNhdGlvbiwgby0+cGFzc3dvcmRfYXV0aGVudGljYXRpb24pOwot IAlkdW1wX2NmZ19mbXRpbnQoc0tiZEludGVyYWN0aXZlQXV0aGVudGljYXRpb24sCi1kaWZmIC0t Z2l0IGEvc2VydmNvbmYuaCBiL3NlcnZjb25mLmgKLWluZGV4IGZlYTI1OTQ3ZS4uOWFjZWEzMmNm IDEwMDY0NAotLS0tIGEvc2VydmNvbmYuaAotKysrIGIvc2VydmNvbmYuaAotQEAgLTE2MSw2ICsx NjEsOSBAQCB0eXBlZGVmIHN0cnVjdCB7Ci0gCWludCAgICAgZ3NzX2NsZWFudXBfY3JlZHM7CS8q IElmIHRydWUsIGRlc3Ryb3kgY3JlZCBjYWNoZSBvbiBsb2dvdXQgKi8KLSAJaW50ICAgICBnc3Nf ZGVsZWdfY3JlZHM7CS8qIElmIHRydWUsIGFjY2VwdCBkZWxlZ2F0ZWQgR1NTIGNyZWRlbnRpYWxz ICovCi0gCWludCAgICAgZ3NzX3N0cmljdF9hY2NlcHRvcjsJLyogSWYgdHJ1ZSwgcmVzdHJpY3Qg dGhlIEdTU0FQSSBhY2NlcHRvciBuYW1lICovCi0rCWludCAgICAgZ3NzX2FsbG93X3M0dTJzZWxm OyAvKiAwPW5vLCBJTlRfTUFYPXllcyAoR1NTX0NfSU5ERUZJTklURSksID4wPXRpY2tldCBsaWZl dGltZSBzICovCi0rCWNoYXIgICoqZ3NzX3Byb3h5X3NlcnZpY2VzOyAvKiBTNFUyUHJveHkgdGFy Z2V0IHNlcnZpY2UgcHJpbmNpcGFscyAqLwotKwl1X2ludCAgIG51bV9nc3NfcHJveHlfc2Vydmlj ZXM7Ci0gCWludCAJZ3NzX3N0b3JlX3Jla2V5OwotIAljaGFyICAgKmdzc19rZXhfYWxnb3JpdGht czsJLyogR1NTQVBJIGtleCBtZXRob2RzIHRvIGJlIG9mZmVyZWQgYnkgY2xpZW50LiAqLwotIAlp bnQgICAgIHBhc3N3b3JkX2F1dGhlbnRpY2F0aW9uOwkvKiBJZiB0cnVlLCBwZXJtaXQgcGFzc3dv cmQKLUBAIC0zMTQsNiArMzE3LDcgQEAgVEFJTFFfSEVBRChpbmNsdWRlX2xpc3QsIGluY2x1ZGVf aXRlbSk7Ci0gCQlNX0NQX1NUUk9QVChwZXJtaXRfdXNlcl9lbnZfYWxsb3dsaXN0KTsgXAotIAkJ TV9DUF9TVFJPUFQocGFtX3NlcnZpY2VfbmFtZSk7IFwKLSAJCU1fQ1BfU1RST1BUKGdzc19pbmRp Y2F0b3JzKTsgXAotKwkJTV9DUF9TVFJBUlJBWU9QVChnc3NfcHJveHlfc2VydmljZXMsIG51bV9n c3NfcHJveHlfc2VydmljZXMsIDEpOyBcCi0gCQlNX0NQX1NUUkFSUkFZT1BUKGF1dGhvcml6ZWRf a2V5c19maWxlcywgbnVtX2F1dGhrZXlzX2ZpbGVzLCAxKTtcCi0gCQlNX0NQX1NUUkFSUkFZT1BU KHJldm9rZWRfa2V5c19maWxlcywgXAotIAkJICAgIG51bV9yZXZva2VkX2tleXNfZmlsZXMsIDEp OyBcCi1kaWZmIC0tZ2l0IGEvc3NoLWdzcy5oIGIvc3NoLWdzcy5oCi1pbmRleCAxNTA2NzE5YTku LmEwZDUxYzliZSAxMDA2NDQKLS0tLSBhL3NzaC1nc3MuaAotKysrIGIvc3NoLWdzcy5oCi1AQCAt MTE5LDYgKzExOSw3IEBAIHR5cGVkZWYgc3RydWN0IHsKLSAJaW50IHVzZWQ7Ci0gCWludCB1cGRh dGVkOwotIAljaGFyICoqaW5kaWNhdG9yczsgLyogYXV0aCBpbmRpY2F0b3JzICovCi0rCWludCBh bGxvd19zZWxmOyAvKiBhbGxvdyBwcm90b2NvbCB0cmFuc2l0aW9uICovCi0gfSBzc2hfZ3NzYXBp X2NsaWVudDsKLSAKLSB0eXBlZGVmIHN0cnVjdCBzc2hfZ3NzYXBpX21lY2hfc3RydWN0IHsKLUBA IC0xOTksNiArMjAwLDE4IEBAIE9NX3VpbnQzMiBzc2hfZ3NzYXBpX2NoZWNrbWljKEdzc2N0eHQg KiwgZ3NzX2J1ZmZlcl90LCBnc3NfYnVmZmVyX3QpOwotIHZvaWQgc3NoX2dzc2FwaV9kb19jaGls ZChjaGFyICoqKiwgdV9pbnQgKik7Ci0gdm9pZCBzc2hfZ3NzYXBpX2NsZWFudXBfY3JlZHModm9p ZCk7Ci0gaW50IHNzaF9nc3NhcGlfc3RvcmVjcmVkcyh2b2lkKTsKLStpbnQgIHNzaF9nc3NhcGlf Y3JlZGVudGlhbHNfc3RvcmVkKHZvaWQpOwotK3NzaF9nc3NhcGlfY2NhY2hlICpzc2hfZ3NzYXBp X2dldF9jY2FjaGUodm9pZCk7Ci0raW50ICBzc2hfZ3NzYXBpX3VzZXJfaGFzX3ZhbGlkX3RndCh1 X2ludCk7Ci0raW50ICBzc2hfZ3NzYXBpX3VzZXJfaGFzX3ZhbGlkX3Byb3h5X3RpY2tldHMoY2hh ciAqKiwgdV9pbnQsIHVfaW50KTsKLStpbnQgIHNzaF9nc3NhcGlfczR1MnNlbGYoY29uc3QgY2hh ciAqLCB1X2ludCk7Ci0rdm9pZCBzc2hfZ3NzYXBpX3N0b3JlY3JlZHNfczR1MnNlbGYodm9pZCk7 Ci0rdm9pZCBzc2hfZ3NzYXBpX3M0dTJwcm94eShjaGFyICoqLCB1X2ludCwgdV9pbnQpOwotKy8q IEZsYWdzIGZvciBzc2hfZ3NzYXBpX2tyYjVfZmlsdGVyX2NjYWNoZSgpOiB3aGljaCB0aWNrZXQg Y2xhc3NlcyB0byByZW1vdmUgKi8KLSsjZGVmaW5lIFNTSF9HU1NBUElfQ0NGSUxURVJfVEdUICAg ICgxdSA8PCAwKSAvKiBrcmJ0Z3QvLi4uIGVudHJpZXMgKi8KLSsjZGVmaW5lIFNTSF9HU1NBUElf Q0NGSUxURVJfU0VMRiAgICgxdSA8PCAxKSAvKiBTNFUyU2VsZiBldmlkZW5jZSB0aWNrZXQgKi8K LSsjZGVmaW5lIFNTSF9HU1NBUElfQ0NGSUxURVJfUFJPWFkgICgxdSA8PCAyKSAvKiBTNFUyUHJv eHkgc2VydmljZSB0aWNrZXRzICovCi0rdm9pZCBzc2hfZ3NzYXBpX2tyYjVfZmlsdGVyX2NjYWNo ZSh1X2ludCwgY2hhciAqKiwgdV9pbnQpOwotIGNvbnN0IGNoYXIgKnNzaF9nc3NhcGlfZGlzcGxh eW5hbWUodm9pZCk7Ci0gCi0gY2hhciAqc3NoX2dzc2FwaV9zZXJ2ZXJfbWVjaGFuaXNtcyh2b2lk KTsKLWRpZmYgLS1naXQgYS9zc2hkLXNlc3Npb24uYyBiL3NzaGQtc2Vzc2lvbi5jCi1pbmRleCA3 MDY0YWZkN2MuLmQxZDEzZDg2MyAxMDA2NDQKLS0tLSBhL3NzaGQtc2Vzc2lvbi5jCi0rKysgYi9z c2hkLXNlc3Npb24uYwotQEAgLTEzOTMsNiArMTM5MywxMDQgQEAgbWFpbihpbnQgYWMsIGNoYXIg KiphdikKLSAJCWF1dGhjdHh0LT5rcmI1X3NldF9lbnYgPSBzc2hfZ3NzYXBpX3N0b3JlY3JlZHMo KTsKLSAJCXJlc3RvcmVfdWlkKCk7Ci0gCX0KLSsJLyoKLSsJICogR1NTQVBJQWxsb3dTNFUyU2Vs ZiAvIEdTU0FQSVByb3h5UzRVMlNlcnZpY2VzOiBpZiBubyBjcmVkZW50aWFscyB3ZXJlIHN0b3Jl ZAotKwkgKiBhYm92ZSAoaS5lLiBubyBHU1NBUEkgYXV0aCB3aXRoIGRlbGVnYXRpb24gb2NjdXJy ZWQpLCB1c2UgUzRVMlNlbGYKLSsJICogdG8gb2J0YWluIGFuIGltcGVyc29uYXRlZCBjcmVkZW50 aWFsIGZvciB0aGUgdXNlciwgdGhlbiBvcHRpb25hbGx5Ci0rCSAqIGZvbGxvdyB3aXRoIFM0VTJQ cm94eSBmb3IgY29uZmlndXJlZCB0YXJnZXQgc2VydmljZXMuCi0rCSAqCi0rCSAqIEdTU0FQSUFs bG93UzRVMlNlbGYgYWxvbmU6ICAgIHN0b3JlIFM0VTJTZWxmIGV2aWRlbmNlIHRpY2tldCBvbmx5 OwotKwkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgaG9zdCBUR1QgaXMgcmVtb3Zl ZC4KLSsJICogR1NTQVBJUHJveHlTNFUyU2VydmljZXMgYWxvbmU6IHN0b3JlIGhvc3QgVEdUIGFu ZCBTNFUyUHJveHkgc2VydmljZQotKwkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNr ZXRzOyB0aGUgUzRVMlNlbGYgZXZpZGVuY2UgdGlja2V0Ci0rCSAqICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlzIHJlbW92ZWQuCi0rCSAqIEJvdGg6ICAgICAgICAgICAgICAgICAgICAgc3Rv cmUgaG9zdCBUR1QsIFM0VTJTZWxmIGV2aWRlbmNlIHRpY2tldCwKLSsJICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgYW5kIGFsbCBTNFUyUHJveHkgc2VydmljZSB0aWNrZXRzLgotKwkgKgot KwkgKiBXaGVuIFM0VTJQcm94eSB0aWNrZXRzIGFyZSBwcmVzZW50IHRoZSBob3N0IFRHVCBtdXN0 IHJlbWFpbiBpbiB0aGUKLSsJICogY2NhY2hlOyBhcHBsaWNhdGlvbnMgY2hlY2sgZm9yIFRHVCBw cmVzZW5jZSB0byBkZXRlcm1pbmUgd2hldGhlcgotKwkgKiBLZXJiZXJvcyBjcmVkZW50aWFscyBh cmUgYXZhaWxhYmxlLiAgT25seSBpbiBHU1NBUElBbGxvd1M0VTJTZWxmLWFsb25lCi0rCSAqIG1v ZGUgKG5vIHByb3h5IHRpY2tldHMpIGlzIHRoZSBob3N0IFRHVCByZW1vdmVkLgotKwkgKgotKwkg KiBTa2lwIFM0VTJTZWxmIHdoZW4gdGhlIHVzZXIgYWxyZWFkeSBoYXMgY3JlZGVudGlhbHMgY292 ZXJpbmcgdGhlCi0rCSAqIHJlcXVlc3RlZCBsaWZldGltZTogY2hlY2sgZm9yIGEgdmFsaWQgVEdU IGluIHRoZSBHU1NBUElBbGxvd1M0VTJTZWxmLQotKwkgKiBhbG9uZSBjYXNlLCBvciBmb3IgdmFs aWQgcHJveHkgdGlja2V0cyBmb3IgZXZlcnkgY29uZmlndXJlZCBzZXJ2aWNlCi0rCSAqIG90aGVy d2lzZS4KLSsJICovCi0rCWlmICgob3B0aW9ucy5nc3NfYWxsb3dfczR1MnNlbGYgfHwgb3B0aW9u cy5udW1fZ3NzX3Byb3h5X3NlcnZpY2VzID4gMCkgJiYKLSsJICAgICFzc2hfZ3NzYXBpX2NyZWRl bnRpYWxzX3N0b3JlZCgpKSB7Ci0rCQl1X2ludCBsaWZldGltZSA9ICghb3B0aW9ucy5nc3NfYWxs b3dfczR1MnNlbGYgfHwKLSsJCSAgICBvcHRpb25zLmdzc19hbGxvd19zNHUyc2VsZiA9PSBJTlRf TUFYKSA/Ci0rCQkgICAgR1NTX0NfSU5ERUZJTklURSA6ICh1X2ludClvcHRpb25zLmdzc19hbGxv d19zNHUyc2VsZjsKLSsJCWludCBza2lwID0gMDsKLSsKLSsJCXRlbXBvcmFyaWx5X3VzZV91aWQo YXV0aGN0eHQtPnB3KTsKLSsJCWlmIChvcHRpb25zLmdzc19hbGxvd19zNHUyc2VsZiAmJgotKwkJ ICAgIG9wdGlvbnMubnVtX2dzc19wcm94eV9zZXJ2aWNlcyA9PSAwKSB7Ci0rCQkJLyogUzRVMlNl bGYtYWxvbmU6IHNraXAgaWYgdXNlciBhbHJlYWR5IGhhcyBhIHZhbGlkIFRHVCAqLwotKwkJCXNr aXAgPSBzc2hfZ3NzYXBpX3VzZXJfaGFzX3ZhbGlkX3RndChsaWZldGltZSk7Ci0rCQl9IGVsc2Ug aWYgKG9wdGlvbnMubnVtX2dzc19wcm94eV9zZXJ2aWNlcyA+IDApIHsKLSsJCQkvKgotKwkJCSAq IFByb3h5LW9ubHkgb3IgYm90aDogc2tpcCBpZiBldmVyeSBjb25maWd1cmVkIHNlcnZpY2UKLSsJ CQkgKiBhbHJlYWR5IGhhcyBhIHZhbGlkIHRpY2tldCBpbiB0aGUgdXNlcidzIGNjYWNoZS4KLSsJ CQkgKiBTZXJ2aWNlIHRpY2tldHMgYXJlIG5vdCBHU1NBUEkgaW5pdGlhdG9yIGNyZWRlbnRpYWxz LAotKwkJCSAqIHNvIGdzc19hY3F1aXJlX2NyZWQoKSBjYW5ub3QgYmUgdXNlZDsgaXRlcmF0ZSB0 aGUKLSsJCQkgKiBjY2FjaGUgd2l0aCB0aGUga3JiNSBBUEkgaW5zdGVhZC4KLSsJCQkgKi8KLSsJ CQlza2lwID0gc3NoX2dzc2FwaV91c2VyX2hhc192YWxpZF9wcm94eV90aWNrZXRzKAotKwkJCSAg ICBvcHRpb25zLmdzc19wcm94eV9zZXJ2aWNlcywKLSsJCQkgICAgb3B0aW9ucy5udW1fZ3NzX3By b3h5X3NlcnZpY2VzLAotKwkJCSAgICBsaWZldGltZSk7Ci0rCQl9Ci0rCQlyZXN0b3JlX3VpZCgp OwotKwotKwkJaWYgKHNraXApIHsKLSsJCQlkZWJ1Z19mKCJ1c2VyICUuMTAwcyBhbHJlYWR5IGhh cyB2YWxpZCBLZXJiZXJvcyAiCi0rCQkJICAgICJjcmVkZW50aWFscywgc2tpcHBpbmcgUzRVMlNl bGYiLAotKwkJCSAgICBhdXRoY3R4dC0+dXNlcik7Ci0rCQl9IGVsc2UgaWYgKHNzaF9nc3NhcGlf czR1MnNlbGYoYXV0aGN0eHQtPnVzZXIsIGxpZmV0aW1lKSA9PSAwKSB7Ci0rCQkJdV9pbnQgZmls dGVyOwotKwotKwkJCXRlbXBvcmFyaWx5X3VzZV91aWQoYXV0aGN0eHQtPnB3KTsKLSsJCQkvKgot KwkJCSAqIEFsd2F5cyBjcmVhdGUgdGhlIGNjYWNoZSB2aWEgc3RvcmVjcmVkc19zNHUyc2VsZiBz bwotKwkJCSAqIHRoYXQgczR1MnByb3h5IGhhcyBhIGNjYWNoZSB0byBzdG9yZSB0aWNrZXRzIGlu dG8uCi0rCQkJICogZ3NzX2tyYjVfY29weV9jY2FjaGUoKSBjb3BpZXMgdGhlIGhvc3Qgc2Vydmlj ZSdzIG93bgotKwkJCSAqIFRHVCBhbG9uZyB3aXRoIHRoZSBldmlkZW5jZSB0aWNrZXQ7IGZpbHRl cl9jY2FjaGUKLSsJCQkgKiByZW1vdmVzIHRoZSB0aWNrZXQgY2xhc3NlcyB0aGF0IHNob3VsZCBu b3QgYmUga2VwdC4KLSsJCQkgKi8KLSsJCQlzc2hfZ3NzYXBpX3N0b3JlY3JlZHNfczR1MnNlbGYo KTsKLSsJCQlpZiAob3B0aW9ucy5udW1fZ3NzX3Byb3h5X3NlcnZpY2VzID4gMCkKLSsJCQkJc3No X2dzc2FwaV9zNHUycHJveHkoCi0rCQkJCSAgICBvcHRpb25zLmdzc19wcm94eV9zZXJ2aWNlcywK LSsJCQkJICAgIG9wdGlvbnMubnVtX2dzc19wcm94eV9zZXJ2aWNlcywKLSsJCQkJICAgIGxpZmV0 aW1lKTsKLSsKLSsJCQkvKgotKwkJCSAqIFJlbW92ZSB0aGUgaG9zdCBUR1Qgb25seSBpbiBHU1NB UElBbGxvd1M0VTJTZWxmLWFsb25lCi0rCQkJICogbW9kZTsgd2hlbiBwcm94eSB0aWNrZXRzIGFy ZSBwcmVzZW50IHRoZSBUR1QgbXVzdAotKwkJCSAqIHN0YXkgc28gdGhhdCBhcHBsaWNhdGlvbnMg cmVjb2duaXNlIHRoZSBjY2FjaGUgYXMKLSsJCQkgKiBob2xkaW5nIGxpdmUgS2VyYmVyb3MgY3Jl ZGVudGlhbHMuCi0rCQkJICogUmVtb3ZlIHRoZSBTNFUyU2VsZiBldmlkZW5jZSB0aWNrZXQgaW4g cHJveHktb25seQotKwkJCSAqIG1vZGUgKEdTU0FQSVByb3h5UzRVMlNlcnZpY2VzIHdpdGhvdXQg R1NTQVBJQWxsb3dTNFUyU2VsZikuCi0rCQkJICovCi0rCQkJZmlsdGVyID0gMDsKLSsJCQlpZiAo b3B0aW9ucy5nc3NfYWxsb3dfczR1MnNlbGYgJiYKLSsJCQkgICAgb3B0aW9ucy5udW1fZ3NzX3By b3h5X3NlcnZpY2VzID09IDApCi0rCQkJCWZpbHRlciA9IFNTSF9HU1NBUElfQ0NGSUxURVJfVEdU IHwKLSsJCQkJICAgIFNTSF9HU1NBUElfQ0NGSUxURVJfUFJPWFk7Ci0rCQkJZWxzZSBpZiAoIW9w dGlvbnMuZ3NzX2FsbG93X3M0dTJzZWxmKQotKwkJCQlmaWx0ZXIgPSBTU0hfR1NTQVBJX0NDRklM VEVSX1NFTEY7Ci0rCQkJaWYgKGZpbHRlciAhPSAwKQotKwkJCQlzc2hfZ3NzYXBpX2tyYjVfZmls dGVyX2NjYWNoZShmaWx0ZXIsCi0rCQkJCSAgICBvcHRpb25zLmdzc19wcm94eV9zZXJ2aWNlcywK LSsJCQkJICAgIG9wdGlvbnMubnVtX2dzc19wcm94eV9zZXJ2aWNlcyk7Ci0rCQkJcmVzdG9yZV91 aWQoKTsKLSsJCX0gZWxzZSB7Ci0rCQkJbG9naXQoIlM0VTJTZWxmIGZhaWxlZCBmb3IgdXNlciAl LjEwMHMsIGNvbnRpbnVpbmciLAotKwkJCSAgICBhdXRoY3R4dC0+dXNlcik7Ci0rCQl9Ci0rCX0K LSAjZW5kaWYKLSAjaWZkZWYgV0lUSF9TRUxJTlVYCi0gCXNzaGRfc2VsaW51eF9zZXR1cF9leGVj X2NvbnRleHQoYXV0aGN0eHQtPnB3LT5wd19uYW1lLAotZGlmZiAtLWdpdCBhL3NzaGRfY29uZmln LjUgYi9zc2hkX2NvbmZpZy41Ci1pbmRleCBjMjgyMjAwNzcuLjMwZDFkNTlkYSAxMDA2NDQKLS0t LSBhL3NzaGRfY29uZmlnLjUKLSsrKyBiL3NzaGRfY29uZmlnLjUKLUBAIC04NDYsNiArODQ2LDc2 IEBAIEZJRE8yLWJhc2VkIHByZS1hdXRoZW50aWNhdGlvbiBpbiBGcmVlSVBBLCB1c2luZyBGSURP MiBVU0IgYW5kIE5GQyB0b2tlbnMKLSBUaGUgZGVmYXVsdAotIC5EcSBub25lCi0gaXMgdG8gbm90 IHVzZSBHU1NBUEkgYXV0aGVudGljYXRpb24gaW5kaWNhdG9ycyBmb3IgYWNjZXNzIGRlY2lzaW9u cy4KLSsuSXQgQ20gR1NTQVBJQWxsb3dTNFUyU2VsZgotK0NvbnRyb2xzIHdoZXRoZXIgdGhlIFNT SCBzZXJ2ZXIgcGVyZm9ybXMgYSBLZXJiZXJvcyBwcm90b2NvbCB0cmFuc2l0aW9uCi0rKFM0VTJT ZWxmKSBhZnRlciBhIHN1Y2Nlc3NmdWwgYXV0aGVudGljYXRpb24gdXNpbmcgYW55IG90aGVyIG1l dGhvZC4KLStBY2NlcHRlZCB2YWx1ZXMgYXJlCi0rLkNtIG5vICwKLSsuQ20geWVzICwKLStvciBh IHRpbWUgaW50ZXJ2YWwgKHNlZQotKy5TeCBUSU1FIEZPUk1BVFMKLStiZWxvdykuCi0rLkNtIG5v Ci0rZGlzYWJsZXMgUzRVMlNlbGYgZW50aXJlbHkuCi0rLkNtIHllcwotK2VuYWJsZXMgUzRVMlNl bGYgYW5kIHJlcXVlc3RzIGEgdGlja2V0IHdpdGggdGhlIG1heGltdW0gbGlmZXRpbWUKLStwZXJt aXR0ZWQgYnkgdGhlIEtEQy4KLStBIHRpbWUgaW50ZXJ2YWwgKGUuZy5cJgotKy5DbSA4aCAsCi0r LkNtIDFkICkKLStlbmFibGVzIFM0VTJTZWxmIGFuZCByZXF1ZXN0cyBhIHRpY2tldCB2YWxpZCBm b3IgYXQgbW9zdCB0aGF0IGR1cmF0aW9uLgotK1RoZSBvcHRpb24gaXMgYSBuby1vcCB3aGVuIGRl bGVnYXRlZCBHU1NBUEkgY3JlZGVudGlhbHMgYXJlIGFscmVhZHkgYXZhaWxhYmxlLgotK1RoZSBv YnRhaW5lZCBzZXJ2aWNlIHRpY2tldCBpcyBzdG9yZWQgaW4gdGhlIGRlZmF1bHQgY3JlZGVudGlh bHMgY2FjaGUgYW5kIGlzCi0rYWNjZXNzaWJsZSB0byBhbnkgYXBwbGljYXRpb24gdGhhdCBoYXMg YWNjZXNzIHRvIHRoZSBLZXJiZXJvcyBob3N0IHByaW5jaXBhbAotKy5QcSBob3N0L21hY2hpbmUu ZnFkbkBSRUFMTQotK2NyZWRlbnRpYWxzIG9uIHRoZSBzYW1lIGhvc3QuCi0rLlBwCi0rVGhlIGRl ZmF1bHQgaXMKLSsuQ20gbm8gLgotKy5JdCBDbSBHU1NBUElQcm94eVM0VTJTZXJ2aWNlcwotK1Nw ZWNpZmllcyBhIGxpc3Qgb2YgS2VyYmVyb3Mgc2VydmljZSBwcmluY2lwYWxzIGZvciB3aGljaCBj b25zdHJhaW5lZAotK2RlbGVnYXRpb24gKFM0VTJQcm94eSkgdGlja2V0cyBzaG91bGQgYmUgb2J0 YWluZWQgYWZ0ZXIgYSBzdWNjZXNzZnVsCi0rUzRVMlNlbGYgcHJvdG9jb2wgdHJhbnNpdGlvbi4K LStFYWNoIGVudHJ5IG11c3QgYmUgYSBmdWxseS1xdWFsaWZpZWQgS2VyYmVyb3MgcHJpbmNpcGFs IG5hbWUgb2YgdGhlIGZvcm0KLSsuQXIgc2VydmljZS9ob3N0QFJFQUxNIC4KLStNdWx0aXBsZSBw cmluY2lwYWxzIG1heSBiZSBsaXN0ZWQsIHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNlLgotK1RoZSBr ZXl3b3JkCi0rLkNtIG5vbmUKLStjbGVhcnMgYW55IHByZXZpb3VzbHkgc2V0IGxpc3QuCi0rLlBw Ci0rVGhpcyBvcHRpb24gbWF5IGJlIHVzZWQgaW5kZXBlbmRlbnRseSBvZgotKy5DbSBHU1NBUElB bGxvd1M0VTJTZWxmIC4KLStXaGVuIFM0VTJTZWxmIHN1Y2NlZWRzLCB0aGUgc2VydmVyIGl0ZXJh dGVzIHRoZSBsaXN0IGFuZCBjYWxscwotKy5YciBnc3NfaW5pdF9zZWNfY29udGV4dCAzCi0rZm9y IGVhY2ggcHJpbmNpcGFsIHdpdGggdGhlIHByb3h5IGNyZWRlbnRpYWwgb2J0YWluZWQgYnkgUzRV MlNlbGYgYXMKLSt0aGUgaW5pdGlhdG9yLgotK1RoZSBHU1NBUEkgbGlicmFyeSBwcmVzZW50cyB0 aGUgZXZpZGVuY2UgdGlja2V0IHRvIHRoZSBLREMgdmlhIGFuCi0rUzRVMlByb3h5IFRHUy1SRVE7 IGlmIHRoZSBob3N0IHNlcnZpY2UgaG9sZHMgdGhlIG5lY2Vzc2FyeSBjb25zdHJhaW5lZC0KLStk ZWxlZ2F0aW9uIHBlcm1pc3Npb24gaW4gdGhlIEtEQywgYSBzZXJ2aWNlIHRpY2tldCBmcm9tIHRo ZSB1c2VyIHRvCi0rdGhlIHRhcmdldCBzZXJ2aWNlIGlzIGlzc3VlZC4KLStUaGVzZSB0aWNrZXRz IGFyZSBhY2N1bXVsYXRlZCBhbmQgdGhlbiBmbHVzaGVkIGludG8gdGhlIHVzZXIncyBjY2FjaGUK LSt2aWEKLSsuWHIgZ3NzX3N0b3JlX2NyZWQgMyAsCi0rc28gdGhhdCBhbnkgYXBwbGljYXRpb24g cnVubmluZyBpbiB0aGUgdXNlcidzIHNlc3Npb24gY2FuIHVzZSB0aGVtCi0rd2l0aG91dCBmdXJ0 aGVyIGludGVyYWN0aW9uLgotK1RoZSBBUC1SRVEgb3V0cHV0IHRva2VuIG9mIGVhY2gKLSsuWHIg Z3NzX2luaXRfc2VjX2NvbnRleHQgMwotK2NhbGwgaXMgZGlzY2FyZGVkOyBubyBuZXR3b3JrIGNv bm5lY3Rpb24gdG8gdGhlIHRhcmdldCBzZXJ2aWNlIGlzIG1hZGUuCi0rLlBwCi0rV2hlbiB1c2Vk IHRvZ2V0aGVyIHdpdGgKLSsuQ20gR1NTQVBJQWxsb3dTNFUyU2VsZiAsCi0rdGhlIFRHVCBhbmQg UzRVMlNlbGYgdGlja2V0IGFyZSBhbHNvIHN0b3JlZCBpbiB0aGUgdXNlcidzIGNjYWNoZSBpbgot K2FkZGl0aW9uIHRvIHRoZSBTNFUyUHJveHkgc2VydmljZSB0aWNrZXRzLgotK1doZW4gdXNlZCBh bG9uZSAod2l0aG91dAotKy5DbSBHU1NBUElBbGxvd1M0VTJTZWxmICkgLAotK29ubHkgdGhlIFM0 VTJQcm94eSBzZXJ2aWNlIHRpY2tldHMgYXJlIHN0b3JlZDsgdGhlIGludGVybWVkaWF0ZSBTNFUy U2VsZgotK2NyZWRlbnRpYWwgaXMgbm90IHBsYWNlZCBpbiB0aGUgdXNlcidzIGNjYWNoZS4KLSsu UHAKLStUaGlzIG9wdGlvbiBzdXBwb3J0cwotKy5DbSBNYXRjaAotK2Jsb2NrcywgYWxsb3dpbmcg cGVyLXVzZXIgb3IgcGVyLWhvc3QgbGlzdHMgb2YgZGVsZWdhdGlvbiB0YXJnZXRzLgotKy5QcAot K1RoZSBkZWZhdWx0IGlzIGVtcHR5IChubyBTNFUyUHJveHkgZGVsZWdhdGlvbiBpcyBwZXJmb3Jt ZWQpLgotIC5JdCBDbSBIb3N0YmFzZWRBY2NlcHRlZEFsZ29yaXRobXMKLSBUaGUgZGVmYXVsdCBp cyBoYW5kbGVkIHN5c3RlbS13aWRlIGJ5Ci0gLlhyIGNyeXB0by1wb2xpY2llcyA3IC4KLS0tIAot Mi41My4wCi0KCmRpZmYgLS1naXQgYS8wMDUyLW9wZW5zc2gtMTAuMnAxLXBrY3MxMS11cmkucGF0 Y2ggYi8wMDUyLW9wZW5zc2gtMTAuMnAxLXBrY3MxMS11cmkucGF0Y2gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uNDQwOGZlOQotLS0gL2Rldi9udWxsCisrKyBiLzAwNTItb3Bl bnNzaC0xMC4ycDEtcGtjczExLXVyaS5wYXRjaApAQCAtMCwwICsxLDM0MjMgQEAKK0Zyb20gYmI5 ZmRjZmViZGQ2NTJlYTgxOWI1ZmJmMzMxNjc5NGU5YTdlZTllMiBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKK0Zyb206IERtaXRyeSBCZWx5YXZza2l5IDxiZWxkbWl0QGdtYWlsLmNvbT4KK0RhdGU6 IE1vbiwgMTUgRGVjIDIwMjUgMTQ6MjQ6MDcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCA1Mi81NF0g b3BlbnNzaC0xMC4ycDEtcGtjczExLXVyaQorCistLS0KKyAuZGVwZW5kICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMSArCisgTWFrZWZpbGUuaW4gICAgICAgICAgICAgICAgICAgICAgfCAg MjYgKy0KKyBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICB8ICAzNyArKworIHJlZ3Jl c3MvTWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgICA1ICstCisgcmVncmVzcy9wa2NzMTEtdXJp LnNoICAgICAgICAgICAgfCA0MTAgKysrKysrKysrKysrKysrKworIHJlZ3Jlc3MvdW5pdHRlc3Rz L01ha2VmaWxlICAgICAgIHwgICAyICstCisgcmVncmVzcy91bml0dGVzdHMvcGtjczExL3Rlc3Rz LmMgfCAzNTMgKysrKysrKysrKysrKysKKyBzc2gtYWRkLmMgICAgICAgICAgICAgICAgICAgICAg ICB8ICA0OCArLQorIHNzaC1hZ2VudC5jICAgICAgICAgICAgICAgICAgICAgIHwgMTE3ICsrKyst Cisgc3NoLWtleWdlbi5jICAgICAgICAgICAgICAgICAgICAgfCAgIDcgKy0KKyBzc2gtcGtjczEx LWNsaWVudC5jICAgICAgICAgICAgICB8ICAxOSArCisgc3NoLXBrY3MxMS11cmkuYyAgICAgICAg ICAgICAgICAgfCA0MzggKysrKysrKysrKysrKysrKysrCisgc3NoLXBrY3MxMS11cmkuaCAgICAg ICAgICAgICAgICAgfCAgNDYgKysKKyBzc2gtcGtjczExLmMgICAgICAgICAgICAgICAgICAgICB8 IDc3MSArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCisgc3NoLXBrY3MxMS5oICAgICAg ICAgICAgICAgICAgICAgfCAgIDQgKworIHNzaC5jICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgMTA0ICsrKystCisgc3NoX2NvbmZpZy41ICAgICAgICAgICAgICAgICAgICAgfCAgMTUgKwor IHNzaGtleS5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICsKKyAxOCBmaWxlcyBjaGFu Z2VkLCAyMTM0IGluc2VydGlvbnMoKyksIDI3MyBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAx MDA2NDQgcmVncmVzcy9wa2NzMTEtdXJpLnNoCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHJlZ3Jlc3Mv dW5pdHRlc3RzL3BrY3MxMS90ZXN0cy5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHNzaC1wa2NzMTEt dXJpLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3NoLXBrY3MxMS11cmkuaAorCitkaWZmIC0tZ2l0 IGEvLmRlcGVuZCBiLy5kZXBlbmQKK2luZGV4IDdlNWYzZGNkMy4uOTAzN2M2ZWY2IDEwMDY0NAor LS0tIGEvLmRlcGVuZAorKysrIGIvLmRlcGVuZAorQEAgLTE0NCw2ICsxNDQsNyBAQCBzc2gtbWxk c2EtZWRkc2EubzogaW5jbHVkZXMuaCBjb25maWcuaCBkZWZpbmVzLmggcGxhdGZvcm0uaCBvcGVu YnNkLWNvbXBhdC9vcGVuYgorIHNzaC1wa2NzMTEtY2xpZW50Lm86IGluY2x1ZGVzLmggY29uZmln LmggZGVmaW5lcy5oIHBsYXRmb3JtLmggb3BlbmJzZC1jb21wYXQvb3BlbmJzZC1jb21wYXQuaCBv cGVuYnNkLWNvbXBhdC9iYXNlNjQuaCBvcGVuYnNkLWNvbXBhdC9zaWdhY3QuaCBvcGVuYnNkLWNv bXBhdC9yZWFkcGFzc3BocmFzZS5oIG9wZW5ic2QtY29tcGF0L3Zpcy5oIG9wZW5ic2QtY29tcGF0 L2dldHJyc2V0YnluYW1lLmggb3BlbmJzZC1jb21wYXQvc2hhMS5oIG9wZW5ic2QtY29tcGF0L2Jz ZC1zaGEyLmggb3BlbmJzZC1jb21wYXQvbWQ1Lmggb3BlbmJzZC1jb21wYXQvYmxmLmggb3BlbmJz ZC1jb21wYXQvZm5tYXRjaC5oIG9wZW5ic2QtY29tcGF0L2dldG9wdC5oIG9wZW5ic2QtY29tcGF0 L2JzZC1zaWduYWwuaCBvcGVuYnNkLWNvbXBhdC9ic2QtbWlzYy5oIG9wZW5ic2QtY29tcGF0L2Jz ZC1zZXRyZXNfaWQuaCBvcGVuYnNkLWNvbXBhdC9ic2Qtc3RhdHZmcy5oIG9wZW5ic2QtY29tcGF0 L2JzZC13YWl0cGlkLmggb3BlbmJzZC1jb21wYXQvYnNkLXBvbGwuaCBvcGVuYnNkLWNvbXBhdC9m YWtlLXJmYzI1NTMuaCBvcGVuYnNkLWNvbXBhdC9ic2QtY3lnd2luX3V0aWwuaCBvcGVuYnNkLWNv bXBhdC9wb3J0LWFpeC5oIG9wZW5ic2QtY29tcGF0L3BvcnQtaXJpeC5oIG9wZW5ic2QtY29tcGF0 L3BvcnQtbGludXguaCBvcGVuYnNkLWNvbXBhdC9wb3J0LXNvbGFyaXMuaCBvcGVuYnNkLWNvbXBh dC9wb3J0LW5ldC5oIG9wZW5ic2QtY29tcGF0L3BvcnQtdXcuaCBvcGVuYnNkLWNvbXBhdC9ic2Qt bmV4dHN0ZXAuaCBlbnRyb3B5LmggcGF0aG5hbWVzLmggeG1hbGxvYy5oIHNzaGJ1Zi5oIGxvZy5o IHNzaGVyci5oIG1pc2MuaCBzc2hrZXkuaCBhdXRoZmQuaCBhdG9taWNpby5oIHNzaC1wa2NzMTEu aAorIHNzaC1wa2NzMTEtaGVscGVyLm86IGluY2x1ZGVzLmggY29uZmlnLmggZGVmaW5lcy5oIHBs YXRmb3JtLmggb3BlbmJzZC1jb21wYXQvb3BlbmJzZC1jb21wYXQuaCBvcGVuYnNkLWNvbXBhdC9i YXNlNjQuaCBvcGVuYnNkLWNvbXBhdC9zaWdhY3QuaCBvcGVuYnNkLWNvbXBhdC9yZWFkcGFzc3Bo cmFzZS5oIG9wZW5ic2QtY29tcGF0L3Zpcy5oIG9wZW5ic2QtY29tcGF0L2dldHJyc2V0YnluYW1l Lmggb3BlbmJzZC1jb21wYXQvc2hhMS5oIG9wZW5ic2QtY29tcGF0L2JzZC1zaGEyLmggb3BlbmJz ZC1jb21wYXQvbWQ1Lmggb3BlbmJzZC1jb21wYXQvYmxmLmggb3BlbmJzZC1jb21wYXQvZm5tYXRj aC5oIG9wZW5ic2QtY29tcGF0L2dldG9wdC5oIG9wZW5ic2QtY29tcGF0L2JzZC1zaWduYWwuaCBv cGVuYnNkLWNvbXBhdC9ic2QtbWlzYy5oIG9wZW5ic2QtY29tcGF0L2JzZC1zZXRyZXNfaWQuaCBv cGVuYnNkLWNvbXBhdC9ic2Qtc3RhdHZmcy5oIG9wZW5ic2QtY29tcGF0L2JzZC13YWl0cGlkLmgg b3BlbmJzZC1jb21wYXQvYnNkLXBvbGwuaCBvcGVuYnNkLWNvbXBhdC9mYWtlLXJmYzI1NTMuaCBv cGVuYnNkLWNvbXBhdC9ic2QtY3lnd2luX3V0aWwuaCBvcGVuYnNkLWNvbXBhdC9wb3J0LWFpeC5o IG9wZW5ic2QtY29tcGF0L3BvcnQtaXJpeC5oIG9wZW5ic2QtY29tcGF0L3BvcnQtbGludXguaCBv cGVuYnNkLWNvbXBhdC9wb3J0LXNvbGFyaXMuaCBvcGVuYnNkLWNvbXBhdC9wb3J0LW5ldC5oIG9w ZW5ic2QtY29tcGF0L3BvcnQtdXcuaCBvcGVuYnNkLWNvbXBhdC9ic2QtbmV4dHN0ZXAuaCBlbnRy b3B5LmggeG1hbGxvYy5oIHNzaGJ1Zi5oIGxvZy5oIHNzaGVyci5oIG1pc2MuaCBzc2hrZXkuaCBh dXRoZmQuaCBzc2gtcGtjczExLmgKKyBzc2gtcGtjczExLm86IGluY2x1ZGVzLmggY29uZmlnLmgg ZGVmaW5lcy5oIHBsYXRmb3JtLmggb3BlbmJzZC1jb21wYXQvb3BlbmJzZC1jb21wYXQuaCBvcGVu YnNkLWNvbXBhdC9iYXNlNjQuaCBvcGVuYnNkLWNvbXBhdC9zaWdhY3QuaCBvcGVuYnNkLWNvbXBh dC9yZWFkcGFzc3BocmFzZS5oIG9wZW5ic2QtY29tcGF0L3Zpcy5oIG9wZW5ic2QtY29tcGF0L2dl dHJyc2V0YnluYW1lLmggb3BlbmJzZC1jb21wYXQvc2hhMS5oIG9wZW5ic2QtY29tcGF0L2JzZC1z aGEyLmggb3BlbmJzZC1jb21wYXQvbWQ1Lmggb3BlbmJzZC1jb21wYXQvYmxmLmggb3BlbmJzZC1j b21wYXQvZm5tYXRjaC5oIG9wZW5ic2QtY29tcGF0L2dldG9wdC5oIG9wZW5ic2QtY29tcGF0L2Jz ZC1zaWduYWwuaCBvcGVuYnNkLWNvbXBhdC9ic2QtbWlzYy5oIG9wZW5ic2QtY29tcGF0L2JzZC1z ZXRyZXNfaWQuaCBvcGVuYnNkLWNvbXBhdC9ic2Qtc3RhdHZmcy5oIG9wZW5ic2QtY29tcGF0L2Jz ZC13YWl0cGlkLmggb3BlbmJzZC1jb21wYXQvYnNkLXBvbGwuaCBvcGVuYnNkLWNvbXBhdC9mYWtl LXJmYzI1NTMuaCBvcGVuYnNkLWNvbXBhdC9ic2QtY3lnd2luX3V0aWwuaCBvcGVuYnNkLWNvbXBh dC9wb3J0LWFpeC5oIG9wZW5ic2QtY29tcGF0L3BvcnQtaXJpeC5oIG9wZW5ic2QtY29tcGF0L3Bv cnQtbGludXguaCBvcGVuYnNkLWNvbXBhdC9wb3J0LXNvbGFyaXMuaCBvcGVuYnNkLWNvbXBhdC9w b3J0LW5ldC5oIG9wZW5ic2QtY29tcGF0L3BvcnQtdXcuaCBvcGVuYnNkLWNvbXBhdC9ic2QtbmV4 dHN0ZXAuaCBlbnRyb3B5LmggbG9nLmggc3NoZXJyLmggc3Noa2V5Lmggc3NoLXBrY3MxMS5oCisr c3NoLXBrY3MxMS11cmkubzogaW5jbHVkZXMuaCBjb25maWcuaCBkZWZpbmVzLmggcGxhdGZvcm0u aCBvcGVuYnNkLWNvbXBhdC9vcGVuYnNkLWNvbXBhdC5oIG9wZW5ic2QtY29tcGF0L2Jhc2U2NC5o IG9wZW5ic2QtY29tcGF0L3NpZ2FjdC5oIG9wZW5ic2QtY29tcGF0L3JlYWRwYXNzcGhyYXNlLmgg b3BlbmJzZC1jb21wYXQvdmlzLmggb3BlbmJzZC1jb21wYXQvZ2V0cnJzZXRieW5hbWUuaCBvcGVu YnNkLWNvbXBhdC9zaGExLmggb3BlbmJzZC1jb21wYXQvYnNkLXNoYTIuaCBvcGVuYnNkLWNvbXBh dC9tZDUuaCBvcGVuYnNkLWNvbXBhdC9ibGYuaCBvcGVuYnNkLWNvbXBhdC9mbm1hdGNoLmggb3Bl bmJzZC1jb21wYXQvZ2V0b3B0Lmggb3BlbmJzZC1jb21wYXQvYnNkLXNpZ25hbC5oIG9wZW5ic2Qt Y29tcGF0L2JzZC1taXNjLmggb3BlbmJzZC1jb21wYXQvYnNkLXNldHJlc19pZC5oIG9wZW5ic2Qt Y29tcGF0L2JzZC1zdGF0dmZzLmggb3BlbmJzZC1jb21wYXQvYnNkLXdhaXRwaWQuaCBvcGVuYnNk LWNvbXBhdC9ic2QtcG9sbC5oIG9wZW5ic2QtY29tcGF0L2Zha2UtcmZjMjU1My5oIG9wZW5ic2Qt Y29tcGF0L2JzZC1jeWd3aW5fdXRpbC5oIG9wZW5ic2QtY29tcGF0L3BvcnQtYWl4Lmggb3BlbmJz ZC1jb21wYXQvcG9ydC1pcml4Lmggb3BlbmJzZC1jb21wYXQvcG9ydC1saW51eC5oIG9wZW5ic2Qt Y29tcGF0L3BvcnQtc29sYXJpcy5oIG9wZW5ic2QtY29tcGF0L3BvcnQtbmV0Lmggb3BlbmJzZC1j b21wYXQvcG9ydC11dy5oIG9wZW5ic2QtY29tcGF0L2JzZC1uZXh0c3RlcC5oIGVudHJvcHkuaAor IHNzaC1yc2EubzogaW5jbHVkZXMuaCBjb25maWcuaCBkZWZpbmVzLmggcGxhdGZvcm0uaCBvcGVu YnNkLWNvbXBhdC9vcGVuYnNkLWNvbXBhdC5oIG9wZW5ic2QtY29tcGF0L2Jhc2U2NC5oIG9wZW5i c2QtY29tcGF0L3NpZ2FjdC5oIG9wZW5ic2QtY29tcGF0L3JlYWRwYXNzcGhyYXNlLmggb3BlbmJz ZC1jb21wYXQvdmlzLmggb3BlbmJzZC1jb21wYXQvZ2V0cnJzZXRieW5hbWUuaCBvcGVuYnNkLWNv bXBhdC9zaGExLmggb3BlbmJzZC1jb21wYXQvYnNkLXNoYTIuaCBvcGVuYnNkLWNvbXBhdC9tZDUu aCBvcGVuYnNkLWNvbXBhdC9ibGYuaCBvcGVuYnNkLWNvbXBhdC9mbm1hdGNoLmggb3BlbmJzZC1j b21wYXQvZ2V0b3B0Lmggb3BlbmJzZC1jb21wYXQvYnNkLXNpZ25hbC5oIG9wZW5ic2QtY29tcGF0 L2JzZC1taXNjLmggb3BlbmJzZC1jb21wYXQvYnNkLXNldHJlc19pZC5oIG9wZW5ic2QtY29tcGF0 L2JzZC1zdGF0dmZzLmggb3BlbmJzZC1jb21wYXQvYnNkLXdhaXRwaWQuaCBvcGVuYnNkLWNvbXBh dC9ic2QtcG9sbC5oIG9wZW5ic2QtY29tcGF0L2Zha2UtcmZjMjU1My5oIG9wZW5ic2QtY29tcGF0 L2JzZC1jeWd3aW5fdXRpbC5oIG9wZW5ic2QtY29tcGF0L3BvcnQtYWl4Lmggb3BlbmJzZC1jb21w YXQvcG9ydC1pcml4Lmggb3BlbmJzZC1jb21wYXQvcG9ydC1saW51eC5oIG9wZW5ic2QtY29tcGF0 L3BvcnQtc29sYXJpcy5oIG9wZW5ic2QtY29tcGF0L3BvcnQtbmV0Lmggb3BlbmJzZC1jb21wYXQv cG9ydC11dy5oIG9wZW5ic2QtY29tcGF0L2JzZC1uZXh0c3RlcC5oIGVudHJvcHkuaAorIHNzaC1z ay1jbGllbnQubzogaW5jbHVkZXMuaCBjb25maWcuaCBkZWZpbmVzLmggcGxhdGZvcm0uaCBvcGVu YnNkLWNvbXBhdC9vcGVuYnNkLWNvbXBhdC5oIG9wZW5ic2QtY29tcGF0L2Jhc2U2NC5oIG9wZW5i c2QtY29tcGF0L3NpZ2FjdC5oIG9wZW5ic2QtY29tcGF0L3JlYWRwYXNzcGhyYXNlLmggb3BlbmJz ZC1jb21wYXQvdmlzLmggb3BlbmJzZC1jb21wYXQvZ2V0cnJzZXRieW5hbWUuaCBvcGVuYnNkLWNv bXBhdC9zaGExLmggb3BlbmJzZC1jb21wYXQvYnNkLXNoYTIuaCBvcGVuYnNkLWNvbXBhdC9tZDUu aCBvcGVuYnNkLWNvbXBhdC9ibGYuaCBvcGVuYnNkLWNvbXBhdC9mbm1hdGNoLmggb3BlbmJzZC1j b21wYXQvZ2V0b3B0Lmggb3BlbmJzZC1jb21wYXQvYnNkLXNpZ25hbC5oIG9wZW5ic2QtY29tcGF0 L2JzZC1taXNjLmggb3BlbmJzZC1jb21wYXQvYnNkLXNldHJlc19pZC5oIG9wZW5ic2QtY29tcGF0 L2JzZC1zdGF0dmZzLmggb3BlbmJzZC1jb21wYXQvYnNkLXdhaXRwaWQuaCBvcGVuYnNkLWNvbXBh dC9ic2QtcG9sbC5oIG9wZW5ic2QtY29tcGF0L2Zha2UtcmZjMjU1My5oIG9wZW5ic2QtY29tcGF0 L2JzZC1jeWd3aW5fdXRpbC5oIG9wZW5ic2QtY29tcGF0L3BvcnQtYWl4Lmggb3BlbmJzZC1jb21w YXQvcG9ydC1pcml4Lmggb3BlbmJzZC1jb21wYXQvcG9ydC1saW51eC5oIG9wZW5ic2QtY29tcGF0 L3BvcnQtc29sYXJpcy5oIG9wZW5ic2QtY29tcGF0L3BvcnQtbmV0Lmggb3BlbmJzZC1jb21wYXQv cG9ydC11dy5oIG9wZW5ic2QtY29tcGF0L2JzZC1uZXh0c3RlcC5oIGVudHJvcHkuaCBsb2cuaCBz c2hlcnIuaCBzc2hidWYuaCBzc2hrZXkuaCBtc2cuaCBwYXRobmFtZXMuaCBzc2gtc2suaCBtaXNj LmgKKyBzc2gtc2staGVscGVyLm86IGluY2x1ZGVzLmggY29uZmlnLmggZGVmaW5lcy5oIHBsYXRm b3JtLmggb3BlbmJzZC1jb21wYXQvb3BlbmJzZC1jb21wYXQuaCBvcGVuYnNkLWNvbXBhdC9iYXNl NjQuaCBvcGVuYnNkLWNvbXBhdC9zaWdhY3QuaCBvcGVuYnNkLWNvbXBhdC9yZWFkcGFzc3BocmFz ZS5oIG9wZW5ic2QtY29tcGF0L3Zpcy5oIG9wZW5ic2QtY29tcGF0L2dldHJyc2V0YnluYW1lLmgg b3BlbmJzZC1jb21wYXQvc2hhMS5oIG9wZW5ic2QtY29tcGF0L2JzZC1zaGEyLmggb3BlbmJzZC1j b21wYXQvbWQ1Lmggb3BlbmJzZC1jb21wYXQvYmxmLmggb3BlbmJzZC1jb21wYXQvZm5tYXRjaC5o IG9wZW5ic2QtY29tcGF0L2dldG9wdC5oIG9wZW5ic2QtY29tcGF0L2JzZC1zaWduYWwuaCBvcGVu YnNkLWNvbXBhdC9ic2QtbWlzYy5oIG9wZW5ic2QtY29tcGF0L2JzZC1zZXRyZXNfaWQuaCBvcGVu YnNkLWNvbXBhdC9ic2Qtc3RhdHZmcy5oIG9wZW5ic2QtY29tcGF0L2JzZC13YWl0cGlkLmggb3Bl bmJzZC1jb21wYXQvYnNkLXBvbGwuaCBvcGVuYnNkLWNvbXBhdC9mYWtlLXJmYzI1NTMuaCBvcGVu YnNkLWNvbXBhdC9ic2QtY3lnd2luX3V0aWwuaCBvcGVuYnNkLWNvbXBhdC9wb3J0LWFpeC5oIG9w ZW5ic2QtY29tcGF0L3BvcnQtaXJpeC5oIG9wZW5ic2QtY29tcGF0L3BvcnQtbGludXguaCBvcGVu YnNkLWNvbXBhdC9wb3J0LXNvbGFyaXMuaCBvcGVuYnNkLWNvbXBhdC9wb3J0LW5ldC5oIG9wZW5i c2QtY29tcGF0L3BvcnQtdXcuaCBvcGVuYnNkLWNvbXBhdC9ic2QtbmV4dHN0ZXAuaCBlbnRyb3B5 LmggeG1hbGxvYy5oIGxvZy5oIHNzaGVyci5oIHNzaGtleS5oIGF1dGhmZC5oIG1pc2MuaCBzc2hi dWYuaCBtc2cuaCB1aWRzd2FwLmggc3NoLXNrLmggc3NoLXBrY3MxMS5oCitkaWZmIC0tZ2l0IGEv TWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgoraW5kZXggNTZjNGM4OGNmLi4yM2NmMDg1YTUgMTAw NjQ0CistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC0xMTMsMTIgKzEx MywxMiBAQCBMSUJTU0hfT0JKUz0ke0xJQk9QRU5TU0hfT0JKU30gXAorIAlzZnRwLXJlYWxwYXRo Lm8gcGxhdGZvcm0tcGxlZGdlLm8gcGxhdGZvcm0tdHJhY2luZy5vIHBsYXRmb3JtLW1pc2MubyBc CisgCXNzaGJ1Zi1pby5vIG1pc2MtYWdlbnQubyBzc2hlcnItbGliY3J5cHRvLm8gYXVkaXRzdHVi Lm8KKyAKKy1QMTFPQkpTPSBzc2gtcGtjczExLWNsaWVudC5vCisrUDExT0JKUz0gc3NoLXBrY3Mx MS1jbGllbnQubyBzc2gtcGtjczExLXVyaS5vCisgCisgU0tPQkpTPQlzc2gtc2stY2xpZW50Lm8K KyAKKyBTU0hPQkpTPSBzc2gubyByZWFkY29uZi5vIGNsaWVudGxvb3AubyBzc2h0dHkubyBcCist CXNzaGNvbm5lY3QubyBzc2hjb25uZWN0Mi5vIG11eC5vIHNzaC1wa2NzMTEubyAkKFNLT0JKUykK KysJc3NoY29ubmVjdC5vIHNzaGNvbm5lY3QyLm8gbXV4Lm8gc3NoLXBrY3MxMS5vIHNzaC1wa2Nz MTEtdXJpLm8gJChTS09CSlMpCisgCisgU1NIRE9CSlM9c3NoZC5vIFwKKyAJcGxhdGZvcm0tbGlz dGVuLm8gXAorQEAgLTE2MiwxMSArMTYyLDExIEBAIFNTSEFERF9PQkpTPQlzc2gtYWRkLm8gJChQ MTFPQkpTKSAkKFNLT0JKUykKKyAKKyBTU0hBR0VOVF9PQkpTPQlzc2gtYWdlbnQubyAkKFAxMU9C SlMpICQoU0tPQkpTKQorIAorLVNTSEtFWUdFTl9PQkpTPQlzc2gta2V5Z2VuLm8gc3Noc2lnLm8g c3NoLXBrY3MxMS5vICQoU0tPQkpTKQorK1NTSEtFWUdFTl9PQkpTPQlzc2gta2V5Z2VuLm8gc3No c2lnLm8gc3NoLXBrY3MxMS5vIHNzaC1wa2NzMTEtdXJpLm8gJChTS09CSlMpCisgCisgU1NIS0VZ U0lHTl9PQkpTPXNzaC1rZXlzaWduLm8gcmVhZGNvbmYubyB1aWRzd2FwLm8gJChQMTFPQkpTKSAk KFNLT0JKUykKKyAKKy1QMTFIRUxQRVJfT0JKUz0Jc3NoLXBrY3MxMS1oZWxwZXIubyBzc2gtcGtj czExLm8gJChTS09CSlMpCisrUDExSEVMUEVSX09CSlM9CXNzaC1wa2NzMTEtaGVscGVyLm8gc3No LXBrY3MxMS5vIHNzaC1wa2NzMTEtdXJpLm8gJChTS09CSlMpCisgCisgU0tIRUxQRVJfT0JKUz0J c3NoLXNrLWhlbHBlci5vIHNzaC1zay5vIHNrLXVzYmhpZC5vIHNzaGVyci1ub2xpYmNyeXB0by5v CisgCitAQCAtMzM2LDYgKzMzNiw4IEBAIGNsZWFuOglyZWdyZXNzY2xlYW4KKyAJcm0gLWYgcmVn cmVzcy91bml0dGVzdHMvc3Noc2lnL3Rlc3Rfc3Noc2lnJChFWEVFWFQpCisgCXJtIC1mIHJlZ3Jl c3MvdW5pdHRlc3RzL3V0ZjgvKi5vCisgCXJtIC1mIHJlZ3Jlc3MvdW5pdHRlc3RzL3V0ZjgvdGVz dF91dGY4JChFWEVFWFQpCisrCXJtIC1mIHJlZ3Jlc3MvdW5pdHRlc3RzL3BrY3MxMS8qLm8KKysJ cm0gLWYgcmVncmVzcy91bml0dGVzdHMvcGtjczExL3Rlc3RfcGtjczExJChFWEVFWFQpCisgCXJt IC1mIHJlZ3Jlc3MvbWlzYy9zay1kdW1teS8qLm8KKyAJcm0gLWYgcmVncmVzcy9taXNjL3NrLWR1 bW15LyoubG8KKyAJcm0gLWYgcmVncmVzcy9taXNjL3NzaC12ZXJpZnktYXR0ZXN0YXRpb24vc3No LXZlcmlmeS1hdHRlc3RhdGlvbiQoRVhFRVhUKQorQEAgLTM3OSw2ICszODEsOCBAQCBkaXN0Y2xl YW46CXJlZ3Jlc3NjbGVhbgorIAlybSAtZiByZWdyZXNzL3VuaXR0ZXN0cy9zc2hzaWcvdGVzdF9z c2hzaWcKKyAJcm0gLWYgcmVncmVzcy91bml0dGVzdHMvdXRmOC8qLm8KKyAJcm0gLWYgcmVncmVz cy91bml0dGVzdHMvdXRmOC90ZXN0X3V0ZjgKKysJcm0gLWYgcmVncmVzcy91bml0dGVzdHMvcGtj czExLyoubworKwlybSAtZiByZWdyZXNzL3VuaXR0ZXN0cy9wa2NzMTEvdGVzdF9wa2NzMTEKKyAJ cm0gLWYgcmVncmVzcy9taXNjL3NrLWR1bW15LyoubworIAlybSAtZiByZWdyZXNzL21pc2Mvc2st ZHVtbXkvKi5sbworIAlybSAtZiByZWdyZXNzL21pc2Mvc2stZHVtbXkvc2stZHVtbXkuc28KK0BA IC01NjEsNiArNTY1LDcgQEAgcmVncmVzcy1wcmVwOgorIAkkKE1LRElSX1ApIGBwd2RgL3JlZ3Jl c3MvdW5pdHRlc3RzL3NzaGtleQorIAkkKE1LRElSX1ApIGBwd2RgL3JlZ3Jlc3MvdW5pdHRlc3Rz L3NzaHNpZworIAkkKE1LRElSX1ApIGBwd2RgL3JlZ3Jlc3MvdW5pdHRlc3RzL3V0ZjgKKysJJChN S0RJUl9QKSBgcHdkYC9yZWdyZXNzL3VuaXR0ZXN0cy9wa2NzMTEKKyAJJChNS0RJUl9QKSBgcHdk YC9yZWdyZXNzL21pc2Mvc2stZHVtbXkKKyAJJChNS0RJUl9QKSBgcHdkYC9yZWdyZXNzL21pc2Mv c3NoLXZlcmlmeS1hdHRlc3RhdGlvbgorIAlbIC1mIGBwd2RgL3JlZ3Jlc3MvTWFrZWZpbGUgXSB8 fCBcCitAQCAtNzY0LDYgKzc2OSwxNiBAQCByZWdyZXNzL3VuaXR0ZXN0cy91dGY4L3Rlc3RfdXRm OCQoRVhFRVhUKTogXAorIAkgICAgcmVncmVzcy91bml0dGVzdHMvdGVzdF9oZWxwZXIvbGlidGVz dF9oZWxwZXIuYSBcCisgCSAgICAtbHNzaCAtbG9wZW5ic2QtY29tcGF0IC1sc3NoIC1sb3BlbmJz ZC1jb21wYXQgJChURVNUTElCUykKKyAKKytVTklUVEVTVFNfVEVTVF9QS0NTMTFfT0JKUz1cCisr CXJlZ3Jlc3MvdW5pdHRlc3RzL3BrY3MxMS90ZXN0cy5vCisrCisrcmVncmVzcy91bml0dGVzdHMv cGtjczExL3Rlc3RfcGtjczExJChFWEVFWFQpOiBcCisrICAgICR7VU5JVFRFU1RTX1RFU1RfUEtD UzExX09CSlN9IHNzaC1wa2NzMTEtdXJpLm8gXAorKyAgICByZWdyZXNzL3VuaXR0ZXN0cy90ZXN0 X2hlbHBlci9saWJ0ZXN0X2hlbHBlci5hIGxpYnNzaC5hCisrCSQoTEQpIC1vICRAICQoTERGTEFH UykgJChVTklUVEVTVFNfVEVTVF9QS0NTMTFfT0JKUykgXAorKwkgICAgcmVncmVzcy91bml0dGVz dHMvdGVzdF9oZWxwZXIvbGlidGVzdF9oZWxwZXIuYSBcCisrCSAgICBzc2gtcGtjczExLXVyaS5v IC1sc3NoIC1sb3BlbmJzZC1jb21wYXQgLWxjcnlwdG8gJChMSUJTKSAtbG0KKysKKyAjIFRoZXNl IGFsbCBuZWVkIHRvIGJlIGNvbXBpbGVkIC1mUElDLCBzbyB0aGV5IGFyZSB0cmVhdGVkIGRpZmZl cmVudGx5LgorIFNLX0RVTU1ZX09CSlM9XAorIAlyZWdyZXNzL21pc2Mvc2stZHVtbXkvc2stZHVt bXkubG8gXAorQEAgLTgxMSw3ICs4MjYsOCBAQCByZWdyZXNzLXVuaXQtYmluYXJpZXM6IHJlZ3Jl c3MtcHJlcCAkKFJFR1JFU1NMSUJTKSBcCisgCXJlZ3Jlc3MvdW5pdHRlc3RzL3NzaGJ1Zi90ZXN0 X3NzaGJ1ZiQoRVhFRVhUKSBcCisgCXJlZ3Jlc3MvdW5pdHRlc3RzL3NzaGtleS90ZXN0X3NzaGtl eSQoRVhFRVhUKSBcCisgCXJlZ3Jlc3MvdW5pdHRlc3RzL3NzaHNpZy90ZXN0X3NzaHNpZyQoRVhF RVhUKSBcCistCXJlZ3Jlc3MvdW5pdHRlc3RzL3V0ZjgvdGVzdF91dGY4JChFWEVFWFQpCisrCXJl Z3Jlc3MvdW5pdHRlc3RzL3V0ZjgvdGVzdF91dGY4JChFWEVFWFQpIFwKKysJcmVncmVzcy91bml0 dGVzdHMvcGtjczExL3Rlc3RfcGtjczExJChFWEVFWFQpIFwKKyAKKyB0ZXN0czoJZmlsZS10ZXN0 cyB0LWV4ZWMgaW50ZXJvcC10ZXN0cyBleHRyYS10ZXN0cyB1bml0CisgCWVjaG8gYWxsIHRlc3Rz IHBhc3NlZAorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXgg OTE4Y2NkNWRmLi44ZTY3OWY3NzAgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2Nv bmZpZ3VyZS5hYworQEAgLTIzMDUsMTIgKzIzMDUsMTQgQEAgQUNfTElOS19JRkVMU0UoCisgCVtB Q19ERUZJTkUoW0hBVkVfSVNCTEFOS10sIFsxXSwgW0RlZmluZSBpZiB5b3UgaGF2ZSBpc2JsYW5r KDNDKS5dKQorIF0pCisgCisrU0NBUkRfTVNHPSJ5ZXMiCisgZGlzYWJsZV9wa2NzMTE9CisgQUNf QVJHX0VOQUJMRShbcGtjczExXSwKKyAJWyAgLS1kaXNhYmxlLXBrY3MxMSAgICAgICAgZGlzYWJs ZSBQS0NTIzExIHN1cHBvcnQgY29kZSBbbm9dXSwKKyAJWworIAkJaWYgdGVzdCAieCRlbmFibGV2 YWwiID0gInhubyIgOyB0aGVuCisgCQkJZGlzYWJsZV9wa2NzMTE9MQorKwkJCVNDQVJEX01TRz0i bm8iCisgCQlmaQorIAldCisgKQorQEAgLTIzNDAsNiArMjM0Miw0MCBAQCBBQ19TRUFSQ0hfTElC UyhbZGxvcGVuXSwgW2RsXSkKKyBBQ19DSEVDS19GVU5DUyhbZGxvcGVuXSkKKyBBQ19DSEVDS19E RUNMKFtSVExEX05PV10sIFtdLCBbXSwgWyNpbmNsdWRlIDxkbGZjbi5oPl0pCisgCisrIyBDaGVj ayB3aGV0aGVyIHdlIGhhdmUgYSBwMTEta2l0LCB3ZSBnb3QgZGVmYXVsdCBwcm92aWRlciBvbiBj b21tYW5kIGxpbmUKKytERUZBVUxUX1BLQ1MxMV9QUk9WSURFUl9NU0c9Im5vIgorK0FDX0FSR19X SVRIKFtkZWZhdWx0LXBrY3MxMS1wcm92aWRlcl0sCisrCVsgIC0td2l0aC1kZWZhdWx0LXBrY3Mx MS1wcm92aWRlcltbPVBBVEhdXSAgIFVzZSBkZWZhdWx0IHBrY3MxMSBwcm92aWRlciAocDExLWtp dCBkZXRlY3RlZCBieSBkZWZhdWx0KV0sCisrCVsgaWYgdGVzdCAieCR3aXRodmFsIiAhPSAieG5v IiAmJiB0ZXN0ICJ4JGRpc2FibGVfcGtjczExIiA9ICJ4IjsgdGhlbgorKwkJaWYgdGVzdCAieCR3 aXRodmFsIiA9ICJ4eWVzIiA7IHRoZW4KKysJCQlBQ19QQVRIX1RPT0woW1BLR0NPTkZJR10sIFtw a2ctY29uZmlnXSwgW25vXSkKKysJCQlpZiB0ZXN0ICJ4JFBLR0NPTkZJRyIgIT0gInhubyI7IHRo ZW4KKysJCQkJQUNfTVNHX0NIRUNLSU5HKFtpZiAkUEtHQ09ORklHIGtub3dzIGFib3V0IHAxMS1r aXRdKQorKwkJCQlpZiAiJFBLR0NPTkZJRyIgInAxMS1raXQtMSI7IHRoZW4KKysJCQkJCUFDX01T R19SRVNVTFQoW3llc10pCisrCQkJCQl1c2VfcGtnY29uZmlnX2Zvcl9wMTFraXQ9eWVzCisrCQkJ CWVsc2UKKysJCQkJCUFDX01TR19SRVNVTFQoW25vXSkKKysJCQkJZmkKKysJCQlmaQorKwkJZWxz ZQorKwkJCVBLQ1MxMV9QQVRIPSIke3dpdGh2YWx9IgorKwkJZmkKKysJCWlmIHRlc3QgIngkdXNl X3BrZ2NvbmZpZ19mb3JfcDExa2l0IiA9ICJ4eWVzIjsgdGhlbgorKwkJCVBLQ1MxMV9QQVRIPWAk UEtHQ09ORklHIC0tdmFyaWFibGU9cHJveHlfbW9kdWxlIHAxMS1raXQtMWAKKysJCWZpCisrCQlB Q19DSEVDS19GSUxFKCIkUEtDUzExX1BBVEgiLAorKwkJCVsgQUNfREVGSU5FX1VOUVVPVEVEKFtQ S0NTMTFfREVGQVVMVF9QUk9WSURFUl0sIFsiJFBLQ1MxMV9QQVRIIl0sIFtQYXRoIHRvIGRlZmF1 bHQgUEtDUyMxMSBwcm92aWRlciAocDExLWtpdCBwcm94eSldKQorKwkJCSAgREVGQVVMVF9QS0NT MTFfUFJPVklERVJfTVNHPSIkUEtDUzExX1BBVEgiCisrCQkJXSwKKysJCQlbIEFDX01TR19FUlJP UihbUmVxdWVzdGVkIFBLQ1MxMSBwcm92aWRlZCBub3QgZm91bmRdKSBdCisrCQkpCisrCWVsc2UK KysJCUFDX01TR19XQVJOKFtOZWVkcyBQS0NTMTEgc3VwcG9ydCB0byBlbmFibGUgZGVmYXVsdCBw a2NzMTEgcHJvdmlkZXJdKQorKwlmaSBdCisrKQorKworKworICMgSVJJWCBoYXMgYSBjb25zdCBj aGFyIHJldHVybiB2YWx1ZSBmb3IgZ2FpX3N0cmVycm9yKCkKKyBBQ19DSEVDS19GVU5DUyhbZ2Fp X3N0cmVycm9yXSwgWworIAlBQ19ERUZJTkUoW0hBVkVfR0FJX1NUUkVSUk9SXSkKK0BAIC01OTgy LDYgKzYwMTgsNyBAQCBlY2hvICIgICAgICAgICAgICAgICAgICBCU0QgQXV0aCBzdXBwb3J0OiAk QlNEX0FVVEhfTVNHIgorIGVjaG8gIiAgICAgICAgICAgICAgUmFuZG9tIG51bWJlciBzb3VyY2U6 ICRSQU5EX01TRyIKKyBlY2hvICIgICAgICAgICAgICAgUHJpdnNlcCBzYW5kYm94IHN0eWxlOiAk U0FOREJPWF9TVFlMRSIKKyBlY2hvICIgICAgICAgICAgICAgICAgICAgUEtDUyMxMSBzdXBwb3J0 OiAkZW5hYmxlX3BrY3MxMSIKKytlY2hvICIgICAgICAgICAgRGVmYXVsdCBQS0NTIzExIHByb3Zp ZGVyOiAkREVGQVVMVF9QS0NTMTFfUFJPVklERVJfTVNHIgorIGVjaG8gIiAgICAgICAgICAgICAg ICAgIFUyRi9GSURPIHN1cHBvcnQ6ICRlbmFibGVfc2siCisgCisgZWNobyAiIgorZGlmZiAtLWdp dCBhL3JlZ3Jlc3MvTWFrZWZpbGUgYi9yZWdyZXNzL01ha2VmaWxlCitpbmRleCBhNmY4MWJlZjQu Ljk4YTY1MzI1NiAxMDA2NDQKKy0tLSBhL3JlZ3Jlc3MvTWFrZWZpbGUKKysrKyBiL3JlZ3Jlc3Mv TWFrZWZpbGUKK0BAIC0xMTgsNiArMTE4LDcgQEAgTFRFU1RTPSAJY29ubmVjdCBcCisgCQlwZW5h bHR5LWV4cGlyZSBcCisgCQljb25uZWN0LWJpZ2NvbmYgXAorIAkJc3NoLXBrY3MxMSBcCisrCQlw a2NzMTEtdXJpIFwKKyAJCXNzaC10dHkgXAorIAkJcHJveHlqdW1wCisgCitAQCAtMTQ0LDcgKzE0 NSw4IEBAIENMRUFORklMRVM9CSouY29yZSBhY3R1YWwgYWdlbnQta2V5LiogYXV0aG9yaXplZF9r ZXlzXyR7VVNFUk5BTUV9IFwKKyAJCWtub3duX2hvc3RzIGtub3duX2hvc3RzLWNlcnQga25vd25f aG9zdHMuKiBrcmwtKiBscy5jb3B5IFwKKyAJCW1vZHBpcGUgbmV0Y2F0IG5vX2lkZW50aXR5X2Nv bmZpZyBcCisgCQlwaWRmaWxlIHB1dHR5LnJzYTIgcmVhZHkgcmVncmVzcy5sb2cgcmVtb3RlX3Bp ZCBcCistCQlyZXZva2VkLSogcnNhIHJzYS1hZ2VudCByc2EtYWdlbnQucHViIHJzYS5wdWIgcnNh X3NzaDJfY3IucHJ2IFwKKysJCXJldm9rZWQtKiByc2EgcnNhLWFnZW50IHJzYS1hZ2VudC5wdWIg cnNhLWFnZW50LWNlcnQucHViIFwKKysJCXJzYS5wdWIgcnNhX3NzaDJfY3IucHJ2IHBrY3MxMSou Y3J0IHBrY3MxMSoua2V5IHBrY3MxMS5pbmZvIFwKKyAJCXJzYV9zc2gyX2NybmwucHJ2IHNjcC1z c2gtd3JhcHBlci5leGUgXAorIAkJc2NwLXNzaC13cmFwcGVyLnNjcCBzZXR1aWQtYWxsb3dlZCBz ZnRwLXNlcnZlci5sb2cgXAorIAkJc2Z0cC1zZXJ2ZXIuc2ggc2Z0cC5sb2cgc3NoLWxvZy13cmFw cGVyLnNoIHNzaC5sb2cgXAorQEAgLTI5NCw2ICsyOTYsNyBAQCB1bml0IHVuaXQtYmVuY2g6Cisg CQl0ZXN0ICJ4JHtVTklUVEVTVF9WRVJCT1NFfSIgPSAieCIgfHwgQVJHUz0iJCRBUkdTIC12Ijsg XAorIAkJdGVzdCAieCR7VU5JVFRFU1RfQkVOQ0hfREVUQUlMfSIgPSAieCIgfHwgQVJHUz0iJCRB UkdTIC1CIjsgXAorIAkJdGVzdCAieCR7VU5JVFRFU1RfQkVOQ0hfT05MWX0iID0gIngiIHx8IEFS R1M9IiQkQVJHUyAtTyAke1VOSVRURVNUX0JFTkNIX09OTFl9IjsgXAorKwkJICQkViAkey5PQkpE SVJ9L3VuaXR0ZXN0cy9wa2NzMTEvdGVzdF9wa2NzMTEgOyBcCisgCQkgJCRWICR7Lk9CSkRJUn0v dW5pdHRlc3RzL3NzaGJ1Zi90ZXN0X3NzaGJ1ZiAkJHtBUkdTfTsgXAorIAkJICQkViAkey5PQkpE SVJ9L3VuaXR0ZXN0cy9zc2hrZXkvdGVzdF9zc2hrZXkgXAorIAkJCS1kICR7LkNVUkRJUn0vdW5p dHRlc3RzL3NzaGtleS90ZXN0ZGF0YSAkJHtBUkdTfTsgXAorZGlmZiAtLWdpdCBhL3JlZ3Jlc3Mv cGtjczExLXVyaS5zaCBiL3JlZ3Jlc3MvcGtjczExLXVyaS5zaAorbmV3IGZpbGUgbW9kZSAxMDA2 NDQKK2luZGV4IDAwMDAwMDAwMC4uNzJkNjliZGEwCistLS0gL2Rldi9udWxsCisrKysgYi9yZWdy ZXNzL3BrY3MxMS11cmkuc2gKK0BAIC0wLDAgKzEsNDEwIEBACisrIworKyMgIENvcHlyaWdodCAo YykgMjAxNyBSZWQgSGF0CisrIworKyMgIEF1dGhvcnM6IEpha3ViIEplbGVuIDxqamVsZW5AcmVk aGF0LmNvbT4KKysjCisrIyAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRp c3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CisrIyAgcHVycG9zZSB3aXRoIG9yIHdpdGhv dXQgZmVlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZQorKyMgIGNv cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIGFsbCBj b3BpZXMuCisrIworKyMgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBUSEUg QVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUworKyMgIFdJVEggUkVHQVJEIFRPIFRISVMg U09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKysjICBNRVJDSEFO VEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElB QkxFIEZPUgorKyMgIEFOWSBTUEVDSUFMLCBESVJFQ1QsIElORElSRUNULCBPUiBDT05TRVFVRU5U SUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMKKysjICBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9N IExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4KKysjICBBQ1RJT04g T0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5H IE9VVCBPRgorKyMgIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNF IE9GIFRISVMgU09GVFdBUkUuCisrCisrdGlkPSJwa2NzMTEgdGVzdHMgd2l0aCBzb2Z0IHRva2Vu IgorKworK3RyeV90b2tlbl9saWJzKCkgeworKwlmb3IgX2xpYiBpbiAiJEAiIDsgZG8KKysJCWlm IHRlc3QgLWYgIiRfbGliIiA7IHRoZW4KKysJCQl2ZXJib3NlICJVc2luZyB0b2tlbiBsaWJyYXJ5 ICRfbGliIgorKwkJCVRFU1RfU1NIX1BLQ1MxMT0iJF9saWIiCisrCQkJcmV0dXJuCisrCQlmaQor Kwlkb25lCisrCWVjaG8gInNraXBwZWQ6IFVuYWJsZSB0byBmaW5kIFBLQ1MjMTEgdG9rZW4gbGli cmFyeSIKKysJZXhpdCAwCisrfQorKworK3RyeV90b2tlbl9saWJzIFwKKysJL3Vzci9sb2NhbC9s aWIvc29mdGhzbS9saWJzb2Z0aHNtMi5zbyBcCisrCS91c3IvbGliNjQvcGtjczExL2xpYnNvZnRo c20yLnNvIFwKKysJL3Vzci9saWIveDg2XzY0LWxpbnV4LWdudS9zb2Z0aHNtL2xpYnNvZnRoc20y LnNvCisrCisrVEVTVF9TU0hfUElOPTEyMzQKKytURVNUX1NTSF9TT1BJTj0xMjM0NTY3OAorK2lm IFsgIngkVEVTVF9TU0hfU1NIUEtDUzExSEVMUEVSIiAhPSAieCIgXTsgdGhlbgorKwlTU0hfUEtD UzExX0hFTFBFUj0iJHtURVNUX1NTSF9TU0hQS0NTMTFIRUxQRVJ9IgorKwlleHBvcnQgU1NIX1BL Q1MxMV9IRUxQRVIKKytmaQorKworK3Rlc3QgLWYgIiRURVNUX1NTSF9QS0NTMTEiIHx8IGZhdGFs ICIkVEVTVF9TU0hfUEtDUzExIGRvZXMgbm90IGV4aXN0IgorKworKyMgc2V0dXAgZW52aXJvbm1l bnQgZm9yIHNvZnRoc20gdG9rZW4KKytESVI9JE9CSi9TT0ZUSFNNCisrcm0gLXJmICRESVIKKytU T0tFTj0kRElSL3Rva2VuZGlyCisrbWtkaXIgLXAgJFRPS0VOCisrU09GVEhTTTJfQ09ORj0kRElS L3NvZnRoc20yLmNvbmYKKytleHBvcnQgU09GVEhTTTJfQ09ORgorK2NhdCA+ICRTT0ZUSFNNMl9D T05GIDw8IEVPRgorKyMgU29mdEhTTSB2MiBjb25maWd1cmF0aW9uIGZpbGUKKytkaXJlY3Rvcmll cy50b2tlbmRpciA9ICR7VE9LRU59Cisrb2JqZWN0c3RvcmUuYmFja2VuZCA9IGZpbGUKKysjIEVS Uk9SLCBXQVJOSU5HLCBJTkZPLCBERUJVRworK2xvZy5sZXZlbCA9IERFQlVHCisrIyBJZiBDS0Zf UkVNT1ZBQkxFX0RFVklDRSBmbGFnIHNob3VsZCBiZSBzZXQKKytzbG90cy5yZW1vdmFibGUgPSBm YWxzZQorK0VPRgorK291dD0kKHNvZnRoc20yLXV0aWwgLS1pbml0LXRva2VuIC0tZnJlZSAtLWxh YmVsIHRva2VuLXNsb3QtMCAtLXBpbiAiJFRFU1RfU1NIX1BJTiIgLS1zby1waW4gIiRURVNUX1NT SF9TT1BJTiIpCisrc2xvdD0kKGVjaG8gLS0gJG91dCB8IHNlZCAncy8uKiAvLycpCisrCisrIyBw cmV2ZW50IHNzaC1hZ2VudCBmcm9tIGNhbGxpbmcgc3NoLWFza3Bhc3MKKytTU0hfQVNLUEFTUz0v dXNyL2Jpbi90cnVlCisrZXhwb3J0IFNTSF9BU0tQQVNTCisrdW5zZXQgRElTUExBWQorKyMgV2Ug bmVlZCBpbnRlcmFjdGl2ZSBhY2Nlc3MgdG8gdGVzdCBQS0NTIyBzaW5jZSBpdCBwcm9tcHRzIGZv ciBQSU4KKysjIEJhY2t1cCBzc2hfcHJveHkgYmVmb3JlIG1vZGlmaWNhdGlvbnMKKytjcCAkT0JK L3NzaF9wcm94eSAkT0JKL3NzaF9wcm94eV9iYWsKKytzZWQgLWkgJ3MvLipCYXRjaE1vZGUuKi8v ZycgJE9CSi9zc2hfcHJveHkKKysjIFJlbW92ZSBJZGVudGl0eUZpbGUgZW50cmllcyB0byBwcmV2 ZW50IGV4Y2VlZGluZyBNYXhBdXRoVHJpZXMgd2hlbiB1c2luZworKyMgUEtDUzExUHJvdmlkZXIg KC1JKSBvciBQS0NTMTEgVVJJcy4gVGhlIGRlZmF1bHQgc3NoX2NvbmZpZyBpbmNsdWRlcyBtdWx0 aXBsZQorKyMgaWRlbnRpdHkgZmlsZXMgdGhhdCB3b3VsZCBiZSB0cmllZCBiZWZvcmUgUEtDUzEx IGtleXMsIGNhdXNpbmcgYXV0aGVudGljYXRpb24KKysjIHRvIGZhaWwgd2l0aCAiVG9vIG1hbnkg YXV0aGVudGljYXRpb24gZmFpbHVyZXMiIGJlZm9yZSBQS0NTMTEga2V5cyBhcmUgcmVhY2hlZC4K KytncmVwIC1pdiBJZGVudGl0eUZpbGUgJE9CSi9zc2hfcHJveHkgPiAkT0JKL3NzaF9wcm94eS50 bXAKKyttdiAkT0JKL3NzaF9wcm94eS50bXAgJE9CSi9zc2hfcHJveHkKKysKKysjIHN0YXJ0IGNv bW1hbmQgdy9vIHR0eSwgc28gc3NoIGFjY2VwdHMgcGluIGZyb20gc3RkaW4gKGZyb20gYWdlbnQt cGtjczExLnNoKQorK25vdHR5KCkgeworKwlwZXJsIC1lICd1c2UgUE9TSVg7IFBPU0lYOjpzZXRz aWQoKTsKKysJICAgIGlmIChmb3JrKSB7IHdhaXQ7IGV4aXQoJD8gPj4gOCk7IH0gZWxzZSB7IGV4 ZWMoQEFSR1YpIH0nICIkQCIKKyt9CisrCisrdHJhY2UgImdlbmVyYXRpbmcga2V5cyIKKytJRDE9 IjAyIgorK0lEMj0iMDQiCisrSUQzPSIwNiIKKytSU0E9JHtESVJ9L1JTQQorK0VDPSR7RElSfS9F QworK0VEMjU1MTk9JHtESVJ9L0VEMjU1MTkKKytvcGVuc3NsIGdlbnBrZXkgLWFsZ29yaXRobSBy c2EgPiAkUlNBCisrb3BlbnNzbCBwa2NzOCAtbm9jcnlwdCAtaW4gJFJTQSB8XAorKyAgICBzb2Z0 aHNtMi11dGlsIC0tc2xvdCAiJHNsb3QiIC0tbGFiZWwgIlNTSCBSU0EgS2V5ICRJRDEiIC0taWQg JElEMSBcCisrCS0tcGluICIkVEVTVF9TU0hfUElOIiAtLWltcG9ydCAvZGV2L3N0ZGluCisrb3Bl bnNzbCBnZW5wa2V5IFwKKysgICAgLWdlbnBhcmFtIFwKKysgICAgLWFsZ29yaXRobSBlYyBcCisr ICAgIC1wa2V5b3B0IGVjX3BhcmFtZ2VuX2N1cnZlOnByaW1lMjU2djEgfFwKKysgICAgb3BlbnNz bCBnZW5wa2V5IFwKKysgICAgLXBhcmFtZmlsZSAvZGV2L3N0ZGluID4gJEVDCisrb3BlbnNzbCBw a2NzOCAtbm9jcnlwdCAtaW4gJEVDIHxcCisrICAgIHNvZnRoc20yLXV0aWwgLS1zbG90ICIkc2xv dCIgLS1sYWJlbCAiU1NIIEVDRFNBIEtleSAkSUQyIiAtLWlkICRJRDIgXAorKwktLXBpbiAiJFRF U1RfU1NIX1BJTiIgLS1pbXBvcnQgL2Rldi9zdGRpbgorK29wZW5zc2wgZ2VucGtleSAtYWxnb3Jp dGhtIGVkMjU1MTkgPiAkRUQyNTUxOQorK29wZW5zc2wgcGtjczggLW5vY3J5cHQgLWluICRFRDI1 NTE5IHxcCisrICAgIHNvZnRoc20yLXV0aWwgLS1zbG90ICIkc2xvdCIgLS1sYWJlbCAiU1NIIEVE MjU1MTkgS2V5ICRJRDMiIC0taWQgJElEMyBcCisrCS0tcGluICIkVEVTVF9TU0hfUElOIiAtLWlt cG9ydCAvZGV2L3N0ZGluCisrCisrdHJhY2UgIkxpc3QgdGhlIGtleXMgaW4gdGhlIHNzaC1rZXln ZW4gd2l0aCBQS0NTIzExIFVSSXMiCisrJHtTU0hLRVlHRU59IC1EICR7VEVTVF9TU0hfUEtDUzEx fSA+ICRPQkovdG9rZW5fa2V5cworK2lmIFsgJD8gLW5lIDAgXTsgdGhlbgorKwlmYWlsICJGQUlM OiBrZXlnZW4gZmFpbHMgdG8gZW51bWVyYXRlIGtleXMgb24gUEtDUyMxMSB0b2tlbiIKKytmaQor K2dyZXAgInBrY3MxMToiICRPQkovdG9rZW5fa2V5cyA+IC9kZXYvbnVsbAorK2lmIFsgJD8gLW5l IDAgXTsgdGhlbgorKwlmYWlsICJGQUlMOiBUaGUga2V5cyBmcm9tIHNzaC1rZXlnZW4gZG8gbm90 IGNvbnRhaW4gUEtDUyMxMSBVUkkgYXMgYSBjb21tZW50IgorK2ZpCisrCisrIyBTZXQgdGhlIEVD RFNBIGtleSB0byBhdXRob3JpemVkIGtleXMKKytncmVwICJFQ0RTQSIgJE9CSi90b2tlbl9rZXlz ID4gJE9CSi9hdXRob3JpemVkX2tleXNfJFVTRVIKKysKKyt0cmFjZSAiU2ltcGxlIGNvbm5lY3Qg d2l0aCBzc2ggKHdpdGhvdXQgUEtDUyMxMSBVUkkpIgorK2VjaG8gJHtURVNUX1NTSF9QSU59IHwg bm90dHkgJHtTU0h9IC1JICR7VEVTVF9TU0hfUEtDUzExfSBcCisrICAgIC1GICRPQkovc3NoX3By b3h5IHNvbWVob3N0IGV4aXQgNQorK3I9JD8KKytpZiBbICRyIC1uZSA1IF07IHRoZW4KKysJZmFp bCAiRkFJTDogc3NoIGNvbm5lY3Qgd2l0aCBwa2NzMTEgZmFpbGVkIChleGl0IGNvZGUgJHIpIgor K2ZpCisrCisrdHJhY2UgIkNvbm5lY3Qgd2l0aCBQS0NTIzExIFVSSSIKKyt0cmFjZSAiICAoRUNE U0Ega2V5IHNob3VsZCBzdWNjZWVkKSIKKytlY2hvICR7VEVTVF9TU0hfUElOfSB8IG5vdHR5ICR7 U1NIfSAtRiAkT0JKL3NzaF9wcm94eSBcCisrICAgIC1pICJwa2NzMTE6aWQ9JSR7SUQyfT9tb2R1 bGUtcGF0aD0ke1RFU1RfU1NIX1BLQ1MxMX0iIHNvbWVob3N0IGV4aXQgNQorK3I9JD8KKytpZiBb ICRyIC1uZSA1IF07IHRoZW4KKysJZmFpbCAiRkFJTDogc3NoIGNvbm5lY3Qgd2l0aCBQS0NTIzEx IFVSSSBmYWlsZWQgKGV4aXQgY29kZSAkcikiCisrZmkKKysKKyt0cmFjZSAiICAoUlNBIGtleSBz aG91bGQgZmFpbCkiCisrZWNobyAke1RFU1RfU1NIX1BJTn0gfCBub3R0eSAke1NTSH0gLUYgJE9C Si9zc2hfcHJveHkgXAorKyAgICAgLWkgInBrY3MxMTppZD0lJHtJRDF9P21vZHVsZS1wYXRoPSR7 VEVTVF9TU0hfUEtDUzExfSIgc29tZWhvc3QgZXhpdCA1Cisrcj0kPworK2lmIFsgJHIgLWVxIDUg XTsgdGhlbgorKwlmYWlsICJGQUlMOiBzc2ggY29ubmVjdCB3aXRoIFBLQ1MjMTEgVVJJIHN1Y2Nl ZWRlZCAoc2hvdWxkIGZhaWwpIgorK2ZpCisrCisrIyBTZXQgdGhlIEVEMjU1MTkga2V5IGFzIGF1 dGhvcml6ZWQKKytncmVwICJFRDI1NTE5IiAkT0JKL3Rva2VuX2tleXMgPiAkT0JKL2F1dGhvcml6 ZWRfa2V5c18kVVNFUgorKworK3RyYWNlICIgIChFRDI1NTE5IGtleSBzaG91bGQgc3VjY2VlZCki CisrZWNobyAke1RFU1RfU1NIX1BJTn0gfCBub3R0eSAke1NTSH0gLUYgJE9CSi9zc2hfcHJveHkg XAorKyAgICAgLWkgInBrY3MxMTppZD0lJHtJRDN9P21vZHVsZS1wYXRoPSR7VEVTVF9TU0hfUEtD UzExfSIgc29tZWhvc3QgZXhpdCA1Cisrcj0kPworK2lmIFsgJHIgLW5lIDUgXTsgdGhlbgorKwlm YWlsICJGQUlMOiBzc2ggY29ubmVjdCB3aXRoIFBLQ1MjMTEgVVJJIChFZDI1NTE5KSBmYWlsZWQg KGV4aXQgY29kZSAkcikiCisrZmkKKysKKysjIFNldCB0aGUgRUNEU0Ega2V5IGJhY2sgYXMgYXV0 aG9yaXplZAorK2dyZXAgIkVDRFNBIiAkT0JKL3Rva2VuX2tleXMgPiAkT0JKL2F1dGhvcml6ZWRf a2V5c18kVVNFUgorKworK3RyYWNlICJDb25uZWN0IHdpdGggUEtDUyMxMSBVUkkgaW5jbHVkaW5n IFBJTiBzaG91bGQgbm90IHByb21wdCIKKyt0cmFjZSAiICAoRUNEU0Ega2V5IHNob3VsZCBzdWNj ZWVkKSIKKyske1NTSH0gLUYgJE9CSi9zc2hfcHJveHkgLWkgXAorKyAgICAicGtjczExOmlkPSUk e0lEMn0/bW9kdWxlLXBhdGg9JHtURVNUX1NTSF9QS0NTMTF9JnBpbi12YWx1ZT0ke1RFU1RfU1NI X1BJTn0iIHNvbWVob3N0IGV4aXQgNQorK3I9JD8KKytpZiBbICRyIC1uZSA1IF07IHRoZW4KKysJ ZmFpbCAiRkFJTDogc3NoIGNvbm5lY3Qgd2l0aCBQS0NTIzExIFVSSSBmYWlsZWQgKGV4aXQgY29k ZSAkcikiCisrZmkKKysKKyt0cmFjZSAiICAoUlNBIGtleSBzaG91bGQgZmFpbCkiCisrJHtTU0h9 IC1GICRPQkovc3NoX3Byb3h5IC1pIFwKKysgICAgInBrY3MxMTppZD0lJHtJRDF9P21vZHVsZS1w YXRoPSR7VEVTVF9TU0hfUEtDUzExfSZwaW4tdmFsdWU9JHtURVNUX1NTSF9QSU59IiBzb21laG9z dCBleGl0IDUKKytyPSQ/CisraWYgWyAkciAtZXEgNSBdOyB0aGVuCisrCWZhaWwgIkZBSUw6IHNz aCBjb25uZWN0IHdpdGggUEtDUyMxMSBVUkkgc3VjY2VlZGVkIChzaG91bGQgZmFpbCkiCisrZmkK KysKKysjIFNldCB0aGUgRUQyNTUxOSBrZXkgYXMgYXV0aG9yaXplZAorK2dyZXAgIkVEMjU1MTki ICRPQkovdG9rZW5fa2V5cyA+ICRPQkovYXV0aG9yaXplZF9rZXlzXyRVU0VSCisrCisrdHJhY2Ug IiAgKEVEMjU1MTkga2V5IHNob3VsZCBzdWNjZWVkKSIKKyske1NTSH0gLUYgJE9CSi9zc2hfcHJv eHkgLWkgXAorKyAgICAicGtjczExOmlkPSUke0lEM30/bW9kdWxlLXBhdGg9JHtURVNUX1NTSF9Q S0NTMTF9JnBpbi12YWx1ZT0ke1RFU1RfU1NIX1BJTn0iIHNvbWVob3N0IGV4aXQgNQorK3I9JD8K KytpZiBbICRyIC1uZSA1IF07IHRoZW4KKysJZmFpbCAiRkFJTDogc3NoIGNvbm5lY3Qgd2l0aCBQ S0NTIzExIFVSSSAoRWQyNTUxOSkgZmFpbGVkIChleGl0IGNvZGUgJHIpIgorK2ZpCisrCisrIyBT ZXQgdGhlIEVDRFNBIGtleSBiYWNrIGFzIGF1dGhvcml6ZWQKKytncmVwICJFQ0RTQSIgJE9CSi90 b2tlbl9rZXlzID4gJE9CSi9hdXRob3JpemVkX2tleXNfJFVTRVIKKysKKyt0cmFjZSAiQ29ubmVj dCB3aXRoIHZhcmlvdXMgZmlsdGVyaW5nIG9wdGlvbnMgaW4gUEtDUyMxMSBVUkkiCisrdHJhY2Ug IiAgKGJ5IG9iamVjdCBsYWJlbCwgRUNEU0Egc2hvdWxkIHN1Y2NlZWQpIgorK2VjaG8gJHtURVNU X1NTSF9QSU59IHwgbm90dHkgJHtTU0h9IC1GICRPQkovc3NoX3Byb3h5IFwKKysgICAgLWkgInBr Y3MxMTpvYmplY3Q9U1NIJTIwRUNEU0ElMjBLZXklMjAwND9tb2R1bGUtcGF0aD0ke1RFU1RfU1NI X1BLQ1MxMX0iIHNvbWVob3N0IGV4aXQgNQorK3I9JD8KKytpZiBbICRyIC1uZSA1IF07IHRoZW4K KysJZmFpbCAiRkFJTDogc3NoIGNvbm5lY3Qgd2l0aCBQS0NTIzExIFVSSSBmYWlsZWQgKGV4aXQg Y29kZSAkcikiCisrZmkKKysKKyt0cmFjZSAiICAoYnkgb2JqZWN0IGxhYmVsLCBSU0Ega2V5IHNo b3VsZCBmYWlsKSIKKytlY2hvICR7VEVTVF9TU0hfUElOfSB8IG5vdHR5ICR7U1NIfSAtRiAkT0JK L3NzaF9wcm94eSBcCisrICAgICAtaSAicGtjczExOm9iamVjdD1TU0glMjBSU0ElMjBLZXklMjAw Mj9tb2R1bGUtcGF0aD0ke1RFU1RfU1NIX1BLQ1MxMX0iIHNvbWVob3N0IGV4aXQgNQorK3I9JD8K KytpZiBbICRyIC1lcSA1IF07IHRoZW4KKysJZmFpbCAiRkFJTDogc3NoIGNvbm5lY3Qgd2l0aCBQ S0NTIzExIFVSSSBzdWNjZWVkZWQgKHNob3VsZCBmYWlsKSIKKytmaQorKworKyMgU2V0IHRoZSBF RDI1NTE5IGtleSBhcyBhdXRob3JpemVkCisrZ3JlcCAiRUQyNTUxOSIgJE9CSi90b2tlbl9rZXlz ID4gJE9CSi9hdXRob3JpemVkX2tleXNfJFVTRVIKKysKKyt0cmFjZSAiICAoYnkgb2JqZWN0IGxh YmVsLCBFRDI1NTE5IGtleSBzaG91bGQgc3VjY2VlZCkiCisrZWNobyAke1RFU1RfU1NIX1BJTn0g fCBub3R0eSAke1NTSH0gLUYgJE9CSi9zc2hfcHJveHkgXAorKyAgICAgLWkgInBrY3MxMTpvYmpl Y3Q9U1NIJTIwRUQyNTUxOSUyMEtleSUyMDA2P21vZHVsZS1wYXRoPSR7VEVTVF9TU0hfUEtDUzEx fSIgc29tZWhvc3QgZXhpdCA1Cisrcj0kPworK2lmIFsgJHIgLW5lIDUgXTsgdGhlbgorKwlmYWls ICJGQUlMOiBzc2ggY29ubmVjdCB3aXRoIFBLQ1MjMTEgVVJJIChFZDI1NTE5KSBmYWlsZWQgKGV4 aXQgY29kZSAkcikiCisrZmkKKysKKysjIFNldCB0aGUgRUNEU0Ega2V5IGJhY2sgYXMgYXV0aG9y aXplZAorK2dyZXAgIkVDRFNBIiAkT0JKL3Rva2VuX2tleXMgPiAkT0JKL2F1dGhvcml6ZWRfa2V5 c18kVVNFUgorKworK3RyYWNlICIgIChieSB0b2tlbiBsYWJlbCwgRUNEU0Ega2V5IHNob3VsZCBz dWNjZWVkKSIKKytlY2hvICR7VEVTVF9TU0hfUElOfSB8IG5vdHR5ICR7U1NIfSAtRiAkT0JKL3Nz aF9wcm94eSBcCisrICAgIC1pICJwa2NzMTE6aWQ9JSR7SUQyfTt0b2tlbj10b2tlbi1zbG90LTA/ bW9kdWxlLXBhdGg9JHtURVNUX1NTSF9QS0NTMTF9IiBzb21laG9zdCBleGl0IDUKKytyPSQ/Cisr aWYgWyAkciAtbmUgNSBdOyB0aGVuCisrCWZhaWwgIkZBSUw6IHNzaCBjb25uZWN0IHdpdGggUEtD UyMxMSBVUkkgZmFpbGVkIChleGl0IGNvZGUgJHIpIgorK2ZpCisrCisrIyBTZXQgdGhlIEVEMjU1 MTkga2V5IGFzIGF1dGhvcml6ZWQKKytncmVwICJFRDI1NTE5IiAkT0JKL3Rva2VuX2tleXMgPiAk T0JKL2F1dGhvcml6ZWRfa2V5c18kVVNFUgorKworK3RyYWNlICIgIChieSB0b2tlbiBsYWJlbCwg RUQyNTUxOSBrZXkgc2hvdWxkIHN1Y2NlZWQpIgorK2VjaG8gJHtURVNUX1NTSF9QSU59IHwgbm90 dHkgJHtTU0h9IC1GICRPQkovc3NoX3Byb3h5IFwKKysgICAgLWkgInBrY3MxMTppZD0lJHtJRDN9 O3Rva2VuPXRva2VuLXNsb3QtMD9tb2R1bGUtcGF0aD0ke1RFU1RfU1NIX1BLQ1MxMX0iIHNvbWVo b3N0IGV4aXQgNQorK3I9JD8KKytpZiBbICRyIC1uZSA1IF07IHRoZW4KKysJZmFpbCAiRkFJTDog c3NoIGNvbm5lY3Qgd2l0aCBQS0NTIzExIFVSSSAoRWQyNTUxOSkgZmFpbGVkIChleGl0IGNvZGUg JHIpIgorK2ZpCisrCisrIyBTZXQgdGhlIEVDRFNBIGtleSBiYWNrIGFzIGF1dGhvcml6ZWQKKytn cmVwICJFQ0RTQSIgJE9CSi90b2tlbl9rZXlzID4gJE9CSi9hdXRob3JpemVkX2tleXNfJFVTRVIK KysKKyt0cmFjZSAiICAoYnkgd3JvbmcgdG9rZW4gbGFiZWwsIHNob3VsZCBmYWlsKSIKKytlY2hv ICR7VEVTVF9TU0hfUElOfSB8IG5vdHR5ICR7U1NIfSAtRiAkT0JKL3NzaF9wcm94eSBcCisrICAg ICAtaSAicGtjczExOnRva2VuPXRva2VuLXNsb3QtOTk/bW9kdWxlLXBhdGg9JHtURVNUX1NTSF9Q S0NTMTF9IiBzb21laG9zdCBleGl0IDUKKytyPSQ/CisraWYgWyAkciAtZXEgNSBdOyB0aGVuCisr CWZhaWwgIkZBSUw6IHNzaCBjb25uZWN0IHdpdGggUEtDUyMxMSBVUkkgc3VjY2VlZGVkIChzaG91 bGQgZmFpbCkiCisrZmkKKysKKysKKysKKysKKyt0cmFjZSAiVGVzdCBQS0NTIzExIFVSSSBzcGVj aWZpY2F0aW9uIGluIGNvbmZpZ3VyYXRpb24gZmlsZXMiCisrZWNobyAiSWRlbnRpdHlGaWxlIFwi cGtjczExOmlkPSUke0lEMn0/bW9kdWxlLXBhdGg9JHtURVNUX1NTSF9QS0NTMTF9XCIiIFwKKysg ICAgPj4gJE9CSi9zc2hfcHJveHkKKyt0cmFjZSAiICAoRUNEU0Ega2V5IHNob3VsZCBzdWNjZWVk KSIKKytlY2hvICR7VEVTVF9TU0hfUElOfSB8IG5vdHR5ICR7U1NIfSAtRiAkT0JKL3NzaF9wcm94 eSBzb21laG9zdCBleGl0IDUKKytyPSQ/CisraWYgWyAkciAtbmUgNSBdOyB0aGVuCisrCWZhaWwg IkZBSUw6IHNzaCBjb25uZWN0IHdpdGggUEtDUyMxMSBVUkkgaW4gY29uZmlnIGZhaWxlZCAoZXhp dCBjb2RlICRyKSIKKytmaQorKworKyMgU2V0IHRoZSBSU0Ega2V5IGFzIGF1dGhvcml6ZWQKKytn cmVwICJSU0EiICRPQkovdG9rZW5fa2V5cyA+ICRPQkovYXV0aG9yaXplZF9rZXlzXyRVU0VSCisr CisrdHJhY2UgIiAgKFJTQSBrZXkgc2hvdWxkIGZhaWwpIgorK2VjaG8gJHtURVNUX1NTSF9QSU59 IHwgbm90dHkgJHtTU0h9IC1GICRPQkovc3NoX3Byb3h5IHNvbWVob3N0IGV4aXQgNQorK3I9JD8K KytpZiBbICRyIC1lcSA1IF07IHRoZW4KKysJZmFpbCAiRkFJTDogc3NoIGNvbm5lY3Qgd2l0aCBQ S0NTIzExIFVSSSBpbiBjb25maWcgc3VjY2VlZGVkIChzaG91bGQgZmFpbCkiCisrZmkKKytzZWQg LWkgLWUgIi9JZGVudGl0eUZpbGUvZCIgJE9CSi9zc2hfcHJveHkKKysKKyt0cmFjZSAiQ29tYmlu YXRpb24gb2YgUEtDUzExUHJvdmlkZXIgYW5kIFBLQ1MxMVVSSSBvbiBjb21tYW5kbGluZSIKKyt0 cmFjZSAiICAoUlNBIGtleSBzaG91bGQgc3VjY2VlZCkiCisrZWNobyAke1RFU1RfU1NIX1BJTn0g fCBub3R0eSAke1NTSH0gLUYgJE9CSi9zc2hfcHJveHkgXAorKyAgICAtaSAicGtjczExOmlkPSUk e0lEMX0iIC1JICR7VEVTVF9TU0hfUEtDUzExfSBzb21laG9zdCBleGl0IDUKKytyPSQ/CisraWYg WyAkciAtbmUgNSBdOyB0aGVuCisrCWZhaWwgIkZBSUw6IHNzaCBjb25uZWN0IHdpdGggUEtDUyMx MSBVUkkgYW5kIHByb3ZpZGVyIGNvbWJpbmF0aW9uIiBcCisrCSAgICAiZmFpbGVkIChleGl0IGNv ZGUgJHIpIgorK2ZpCisrCisrdHJhY2UgIlJlZ3Jlc3M6IE1pc3NpbmcgcHJvdmlkZXIgaW4gUEtD UzExVVJJIG9wdGlvbiIKKyske1NTSH0gLUYgJE9CSi9zc2hfcHJveHkgXAorKyAgICAtbyBJZGVu dGl0eUZpbGU9XCJwa2NzMTE6dG9rZW49c2VnZmF1bHRcIiBzb21laG9zdCBleGl0IDUKKytyPSQ/ CisraWYgWyAkciAtZXEgMTM5IF07IHRoZW4KKysJZmFpbCAiRkFJTDogc3NoIGNvbm5lY3Qgd2l0 aCBtaXNzaW5nIHByb3ZpZGVyX2lkIGZyb20gY29uZmlndXJhdGlvbiBvcHRpb24iIFwKKysJICAg ICJjcmFzaGVkIChleGl0IGNvZGUgJHIpIgorK2ZpCisrCisrCisrdHJhY2UgIlNTSCBBZ2VudCBj YW4gd29yayB3aXRoIFBLQ1MjMTEgVVJJIgorK3RyYWNlICJzdGFydCB0aGUgYWdlbnQiCisrZXZh bCBgJHtTU0hBR0VOVH0gLXNgID4gIC9kZXYvbnVsbAorKworK3I9JD8KKytpZiBbICRyIC1uZSAw IF07IHRoZW4KKysJZmFpbCAiY291bGQgbm90IHN0YXJ0IHNzaC1hZ2VudDogZXhpdCBjb2RlICRy IgorK2Vsc2UKKysJdHJhY2UgImFkZCB3aG9sZSBwcm92aWRlciB0byBhZ2VudCIKKysJZWNobyAk e1RFU1RfU1NIX1BJTn0gfCBub3R0eSAke1NTSEFERH0gXAorKwkgICAgInBrY3MxMTo/bW9kdWxl LXBhdGg9JHtURVNUX1NTSF9QS0NTMTF9IiAjPiAvZGV2L251bGwgMj4mMQorKwlyPSQ/CisrCWlm IFsgJHIgLW5lIDAgXTsgdGhlbgorKwkJZmFpbCAiRkFJTDogc3NoLWFkZCBmYWlsZWQgd2l0aCB3 aG9sZSBwcm92aWRlcjogZXhpdCBjb2RlICRyIgorKwlmaQorKworKwl0cmFjZSAiIHBrY3MxMSBs aXN0IHZpYSBhZ2VudCAoYWxsIGtleXMpIgorKwkke1NTSEFERH0gLWwgPiAvZGV2L251bGwgMj4m MQorKwlyPSQ/CisrCWlmIFsgJHIgLW5lIDAgXTsgdGhlbgorKwkJZmFpbCAiRkFJTDogc3NoLWFk ZCAtbCBmYWlsZWQgd2l0aCB3aG9sZSBwcm92aWRlcjogZXhpdCBjb2RlICRyIgorKwlmaQorKwor Kwl0cmFjZSAiIHBrY3MxMSBjb25uZWN0IHZpYSBhZ2VudCAoYWxsIGtleXMpIgorKwkke1NTSH0g LUYgJE9CSi9zc2hfcHJveHkgc29tZWhvc3QgZXhpdCA1CisrCXI9JD8KKysJaWYgWyAkciAtbmUg NSBdOyB0aGVuCisrCQlmYWlsICJGQUlMOiBzc2ggY29ubmVjdCBmYWlsZWQgd2l0aCB3aG9sZSBw cm92aWRlciAoZXhpdCBjb2RlICRyKSIKKysJZmkKKysKKysJdHJhY2UgIiByZW1vdmUgcGtjczEx IGtleXMgKGFsbCBrZXlzKSIKKysJJHtTU0hBRER9IC1kICJwa2NzMTE6P21vZHVsZS1wYXRoPSR7 VEVTVF9TU0hfUEtDUzExfSIgPiAvZGV2L251bGwgMj4mMQorKwlyPSQ/CisrCWlmIFsgJHIgLW5l IDAgXTsgdGhlbgorKwkJZmFpbCAiRkFJTDogc3NoLWFkZCAtZCBmYWlsZWQgd2l0aCB3aG9sZSBw cm92aWRlcjogZXhpdCBjb2RlICRyIgorKwlmaQorKworKwl0cmFjZSAiYWRkIG9ubHkgUlNBIGtl eSB0byB0aGUgYWdlbnQiCisrCWVjaG8gJHtURVNUX1NTSF9QSU59IHwgbm90dHkgJHtTU0hBRER9 IFwKKysJICAgICJwa2NzMTE6aWQ9JSR7SUQxfT9tb2R1bGUtcGF0aD0ke1RFU1RfU1NIX1BLQ1Mx MX0iID4gL2Rldi9udWxsIDI+JjEKKysJcj0kPworKwlpZiBbICRyIC1uZSAwIF07IHRoZW4KKysJ CWZhaWwgIkZBSUwgc3NoLWFkZCBmYWlsZWQgd2l0aCBSU0Ega2V5OiBleGl0IGNvZGUgJHIiCisr CWZpCisrCisrCXRyYWNlICIgcGtjczExIGNvbm5lY3QgdmlhIGFnZW50IChSU0Ega2V5KSIKKysJ JHtTU0h9IC1GICRPQkovc3NoX3Byb3h5IHNvbWVob3N0IGV4aXQgNQorKwlyPSQ/CisrCWlmIFsg JHIgLW5lIDUgXTsgdGhlbgorKwkJZmFpbCAiRkFJTDogc3NoIGNvbm5lY3QgZmFpbGVkIHdpdGgg UlNBIGtleSAoZXhpdCBjb2RlICRyKSIKKysJZmkKKysKKysJdHJhY2UgIiByZW1vdmUgUlNBIHBr Y3MxMSBrZXkiCisrCSR7U1NIQUREfSAtZCAicGtjczExOmlkPSUke0lEMX0/bW9kdWxlLXBhdGg9 JHtURVNUX1NTSF9QS0NTMTF9IiBcCisrCSAgICA+IC9kZXYvbnVsbCAyPiYxCisrCXI9JD8KKysJ aWYgWyAkciAtbmUgMCBdOyB0aGVuCisrCQlmYWlsICJGQUlMOiBzc2gtYWRkIC1kIGZhaWxlZCB3 aXRoIFJTQSBrZXk6IGV4aXQgY29kZSAkciIKKysJZmkKKysKKysJdHJhY2UgImFkZCBvbmx5IEVD RFNBIGtleSB0byB0aGUgYWdlbnQiCisrCWVjaG8gJHtURVNUX1NTSF9QSU59IHwgbm90dHkgJHtT U0hBRER9IFwKKysJICAgICJwa2NzMTE6aWQ9JSR7SUQyfT9tb2R1bGUtcGF0aD0ke1RFU1RfU1NI X1BLQ1MxMX0iID4gL2Rldi9udWxsIDI+JjEKKysJcj0kPworKwlpZiBbICRyIC1uZSAwIF07IHRo ZW4KKysJCWZhaWwgIkZBSUw6IHNzaC1hZGQgZmFpbGVkIHdpdGggc2Vjb25kIGtleTogZXhpdCBj b2RlICRyIgorKwlmaQorKworKwl0cmFjZSAiIHBrY3MxMSBjb25uZWN0IHZpYSBhZ2VudCAoRUNE U0Ega2V5IHNob3VsZCBmYWlsKSIKKysJJHtTU0h9IC1GICRPQkovc3NoX3Byb3h5IHNvbWVob3N0 IGV4aXQgNQorKwlyPSQ/CisrCWlmIFsgJHIgLWVxIDUgXTsgdGhlbgorKwkJZmFpbCAiRkFJTDog c3NoIGNvbm5lY3QgcGFzc2VkIHdpdGggRUNEU0Ega2V5IChzaG91bGQgZmFpbCkiCisrCWZpCisr CisrCXRyYWNlICJhZGQgYWxzbyB0aGUgUlNBIGtleSB0byB0aGUgYWdlbnQiCisrCWVjaG8gJHtU RVNUX1NTSF9QSU59IHwgbm90dHkgJHtTU0hBRER9IFwKKysJICAgICJwa2NzMTE6aWQ9JSR7SUQx fT9tb2R1bGUtcGF0aD0ke1RFU1RfU1NIX1BLQ1MxMX0iID4gL2Rldi9udWxsIDI+JjEKKysJcj0k PworKwlpZiBbICRyIC1uZSAwIF07IHRoZW4KKysJCWZhaWwgIkZBSUw6IHNzaC1hZGQgZmFpbGVk IHdpdGggZmlyc3Qga2V5OiBleGl0IGNvZGUgJHIiCisrCWZpCisrCisrCXRyYWNlICIgcmVtb3Zl IEVDRFNBIHBrY3MxMSBrZXkiCisrCSR7U1NIQUREfSAtZCAicGtjczExOmlkPSUke0lEMn0/bW9k dWxlLXBhdGg9JHtURVNUX1NTSF9QS0NTMTF9IiBcCisrCSAgICA+IC9kZXYvbnVsbCAyPiYxCisr CXI9JD8KKysJaWYgWyAkciAtbmUgMCBdOyB0aGVuCisrCQlmYWlsICJzc2gtYWRkIC1kIGZhaWxl ZCB3aXRoIEVDRFNBIGtleTogZXhpdCBjb2RlICRyIgorKwlmaQorKworKwl0cmFjZSAiIHJlbW92 ZSBhbHJlYWR5LXJlbW92ZWQgcGtjczExIGtleSBzaG91bGQgZmFpbCIKKysJJHtTU0hBRER9IC1k ICJwa2NzMTE6aWQ9JSR7SUQyfT9tb2R1bGUtcGF0aD0ke1RFU1RfU1NIX1BLQ1MxMX0iIFwKKysJ ICAgID4gL2Rldi9udWxsIDI+JjEKKysJcj0kPworKwlpZiBbICRyIC1lcSAwIF07IHRoZW4KKysJ CWZhaWwgIkZBSUw6IHNzaC1hZGQgLWQgcGFzc2VkIHdpdGggbm9uLWV4aXN0aW5nIGtleSAoc2hv dWxkIGZhaWwpIgorKwlmaQorKworKwl0cmFjZSAiIHBrY3MxMSBjb25uZWN0IHZpYSBhZ2VudCAo dGhlIFJTQSBrZXkgc2hvdWxkIGJlIHN0aWxsIHVzYWJsZSkiCisrCSR7U1NIfSAtRiAkT0JKL3Nz aF9wcm94eSBzb21laG9zdCBleGl0IDUKKysJcj0kPworKwlpZiBbICRyIC1uZSA1IF07IHRoZW4K KysJCWZhaWwgInNzaCBjb25uZWN0IGZhaWxlZCB3aXRoIFJTQSBrZXkgKGFmdGVyIHJlbW92aW5n IEVDRFNBKTogZXhpdCBjb2RlICRyIgorKwlmaQorKworKwl0cmFjZSAia2lsbCBhZ2VudCIKKysJ JHtTU0hBR0VOVH0gLWsgPiAvZGV2L251bGwKKytmaQorKworKyMgUmVzdG9yZSBvcmlnaW5hbCBz c2hfcHJveHkKKyttdiAkT0JKL3NzaF9wcm94eV9iYWsgJE9CSi9zc2hfcHJveHkKK2RpZmYgLS1n aXQgYS9yZWdyZXNzL3VuaXR0ZXN0cy9NYWtlZmlsZSBiL3JlZ3Jlc3MvdW5pdHRlc3RzL01ha2Vm aWxlCitpbmRleCA1ZDQ4MmVhYjQuLjUxYmVkNWJhZiAxMDA2NDQKKy0tLSBhL3JlZ3Jlc3MvdW5p dHRlc3RzL01ha2VmaWxlCisrKysgYi9yZWdyZXNzL3VuaXR0ZXN0cy9NYWtlZmlsZQorQEAgLTEs NiArMSw2IEBACisgIwkkT3BlbkJTRDogTWFrZWZpbGUsdiAxLjE1IDIwMjYvMDYvMTQgMDQ6MDg6 MDUgZGptIEV4cCAkCisgCisgU1VCRElSPQl0ZXN0X2hlbHBlciBzc2hidWYgc3Noa2V5IGJpdG1h cCBrZXggaG9zdGtleXMgdXRmOCBtYXRjaCBjb252ZXJzaW9uCistU1VCRElSKz1hdXRob3B0IG1p c2Mgc3Noc2lnIHNlcnZjb25mIGNyeXB0bworK1NVQkRJUis9YXV0aG9wdCBtaXNjIHNzaHNpZyBz ZXJ2Y29uZiBjcnlwdG8gcGtjczExCisgCisgLmluY2x1ZGUgPGJzZC5zdWJkaXIubWs+CitkaWZm IC0tZ2l0IGEvcmVncmVzcy91bml0dGVzdHMvcGtjczExL3Rlc3RzLmMgYi9yZWdyZXNzL3VuaXR0 ZXN0cy9wa2NzMTEvdGVzdHMuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAw MC4uODliYTQ1YzRlCistLS0gL2Rldi9udWxsCisrKysgYi9yZWdyZXNzL3VuaXR0ZXN0cy9wa2Nz MTEvdGVzdHMuYworQEAgLTAsMCArMSwzNTMgQEAKKysvKgorKyAqIENvcHlyaWdodCAoYykgMjAx NyBSZWQgSGF0CisrICoKKysgKiBBdXRob3JzOiBKYWt1YiBKZWxlbiA8amplbGVuQHJlZGhhdC5j b20+CisrICoKKysgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJp YnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKKysgKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBm ZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlCisrICogY29weXJp Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGll cy4KKysgKgorKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBUSEUgQVVU SE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUworKyAqIFdJVEggUkVHQVJEIFRPIFRISVMgU09G VFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKysgKiBNRVJDSEFOVEFC SUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxF IEZPUgorKyAqIEFOWSBTUEVDSUFMLCBESVJFQ1QsIElORElSRUNULCBPUiBDT05TRVFVRU5USUFM IERBTUFHRVMgT1IgQU5ZIERBTUFHRVMKKysgKiBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExP U1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4KKysgKiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9V VCBPRgorKyAqIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9G IFRISVMgU09GVFdBUkUuCisrICovCisrCisrI2luY2x1ZGUgImluY2x1ZGVzLmgiCisrCisrI2lu Y2x1ZGUgPGxvY2FsZS5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysKKysjaW5jbHVkZSAiLi4v dGVzdF9oZWxwZXIvdGVzdF9oZWxwZXIuaCIKKysKKysjaW5jbHVkZSAic3NoYnVmLmgiCisrI2lu Y2x1ZGUgInNzaC1wa2NzMTEtdXJpLmgiCisrCisrI2RlZmluZSBFTVBUWV9VUkkgY29tcG9zZV91 cmkoTlVMTCwgMCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCkKKysK KysvKiBwcm90b3R5cGVzIGFyZSBub3QgcHVibGljIC0tIHNwZWNpZnkgdGhlbSBoZXJlIGludGVy bmFsbHkgZm9yIHRlc3RzICovCisrc3RydWN0IHNzaGJ1ZiAqcGVyY2VudF9lbmNvZGUoY29uc3Qg Y2hhciAqLCBzaXplX3QsIGNoYXIgKik7CisraW50IHBlcmNlbnRfZGVjb2RlKGNoYXIgKiwgY2hh ciAqKik7CisrCisrdm9pZAorK2NvbXBhcmVfdXJpKHN0cnVjdCBwa2NzMTFfdXJpICphLCBzdHJ1 Y3QgcGtjczExX3VyaSAqYikKKyt7CisrCUFTU0VSVF9QVFJfTkUoYSwgTlVMTCk7CisrCUFTU0VS VF9QVFJfTkUoYiwgTlVMTCk7CisrCUFTU0VSVF9TSVpFX1RfRVEoYS0+aWRfbGVuLCBiLT5pZF9s ZW4pOworKwlBU1NFUlRfTUVNX0VRKGEtPmlkLCBiLT5pZCwgYS0+aWRfbGVuKTsKKysJaWYgKGIt Pm9iamVjdCAhPSBOVUxMKQorKwkJQVNTRVJUX1NUUklOR19FUShhLT5vYmplY3QsIGItPm9iamVj dCk7CisrCWVsc2UgLyogYm90aCBzaG91bGQgYmUgbnVsbCAqLworKwkJQVNTRVJUX1BUUl9FUShh LT5vYmplY3QsIGItPm9iamVjdCk7CisrCWlmIChiLT5tb2R1bGVfcGF0aCAhPSBOVUxMKQorKwkJ QVNTRVJUX1NUUklOR19FUShhLT5tb2R1bGVfcGF0aCwgYi0+bW9kdWxlX3BhdGgpOworKwllbHNl IC8qIGJvdGggc2hvdWxkIGJlIG51bGwgKi8KKysJCUFTU0VSVF9QVFJfRVEoYS0+bW9kdWxlX3Bh dGgsIGItPm1vZHVsZV9wYXRoKTsKKysJaWYgKGItPnRva2VuICE9IE5VTEwpCisrCQlBU1NFUlRf U1RSSU5HX0VRKGEtPnRva2VuLCBiLT50b2tlbik7CisrCWVsc2UgLyogYm90aCBzaG91bGQgYmUg bnVsbCAqLworKwkJQVNTRVJUX1BUUl9FUShhLT50b2tlbiwgYi0+dG9rZW4pOworKwlpZiAoYi0+ bWFudWYgIT0gTlVMTCkKKysJCUFTU0VSVF9TVFJJTkdfRVEoYS0+bWFudWYsIGItPm1hbnVmKTsK KysJZWxzZSAvKiBib3RoIHNob3VsZCBiZSBudWxsICovCisrCQlBU1NFUlRfUFRSX0VRKGEtPm1h bnVmLCBiLT5tYW51Zik7CisrCWlmIChiLT5saWJfbWFudWYgIT0gTlVMTCkKKysJCUFTU0VSVF9T VFJJTkdfRVEoYS0+bGliX21hbnVmLCBiLT5saWJfbWFudWYpOworKwllbHNlIC8qIGJvdGggc2hv dWxkIGJlIG51bGwgKi8KKysJCUFTU0VSVF9QVFJfRVEoYS0+bGliX21hbnVmLCBiLT5saWJfbWFu dWYpOworKwlpZiAoYi0+c2VyaWFsICE9IE5VTEwpCisrCQlBU1NFUlRfU1RSSU5HX0VRKGEtPnNl cmlhbCwgYi0+c2VyaWFsKTsKKysJZWxzZSAvKiBib3RoIHNob3VsZCBiZSBudWxsICovCisrCQlB U1NFUlRfUFRSX0VRKGEtPnNlcmlhbCwgYi0+c2VyaWFsKTsKKyt9CisrCisrdm9pZAorK2NoZWNr X3BhcnNlX3J2KGNoYXIgKnVyaSwgc3RydWN0IHBrY3MxMV91cmkgKmV4cGVjdCwgaW50IGV4cGVj dF9ydikKKyt7CisrCWNoYXIgKmJ1ZiA9IE5VTEwsICpzdHI7CisrCXN0cnVjdCBwa2NzMTFfdXJp ICpwa2NzMTF1cmkgPSBOVUxMOworKwlpbnQgcnY7CisrCisrCWlmIChleHBlY3RfcnYgPT0gMCkK KysJCXN0ciA9ICJWYWxpZCI7CisrCWVsc2UKKysJCXN0ciA9ICJJbnZhbGlkIjsKKysJYXNwcmlu dGYoJmJ1ZiwgIiVzIFBLQ1MjMTEgVVJJIHBhcnNpbmc6ICVzIiwgc3RyLCB1cmkpOworKwlURVNU X1NUQVJUKGJ1Zik7CisrCWZyZWUoYnVmKTsKKysJcGtjczExdXJpID0gcGtjczExX3VyaV9pbml0 KCk7CisrCXJ2ID0gcGtjczExX3VyaV9wYXJzZSh1cmksIHBrY3MxMXVyaSk7CisrCUFTU0VSVF9J TlRfRVEocnYsIGV4cGVjdF9ydik7CisrCWlmIChydiA9PSAwKSAvKiBpbiBjYXNlIG9mIGZhaWx1 cmUgcmVzdWx0IGlzIHVuZGVmaW5lZCAqLworKwkJY29tcGFyZV91cmkocGtjczExdXJpLCBleHBl Y3QpOworKwlwa2NzMTFfdXJpX2NsZWFudXAocGtjczExdXJpKTsKKysJZnJlZShleHBlY3QpOwor KwlURVNUX0RPTkUoKTsKKyt9CisrCisrdm9pZAorK2NoZWNrX3BhcnNlKGNoYXIgKnVyaSwgc3Ry dWN0IHBrY3MxMV91cmkgKmV4cGVjdCkKKyt7CisrCWNoZWNrX3BhcnNlX3J2KHVyaSwgZXhwZWN0 LCAwKTsKKyt9CisrCisrc3RydWN0IHBrY3MxMV91cmkgKgorK2NvbXBvc2VfdXJpKHVuc2lnbmVk IGNoYXIgKmlkLCBzaXplX3QgaWRfbGVuLCBjaGFyICp0b2tlbiwgY2hhciAqbGliX21hbnVmLAor KyAgICBjaGFyICptYW51ZiwgY2hhciAqc2VyaWFsLCBjaGFyICptb2R1bGVfcGF0aCwgY2hhciAq b2JqZWN0LCBjaGFyICpwaW4pCisreworKwlzdHJ1Y3QgcGtjczExX3VyaSAqdXJpID0gcGtjczEx X3VyaV9pbml0KCk7CisrCWlmIChpZF9sZW4gPiAwKSB7CisrCQl1cmktPmlkX2xlbiA9IGlkX2xl bjsKKysJCXVyaS0+aWQgPSBpZDsKKysJfQorKwl1cmktPm1vZHVsZV9wYXRoID0gbW9kdWxlX3Bh dGg7CisrCXVyaS0+dG9rZW4gPSB0b2tlbjsKKysJdXJpLT5saWJfbWFudWYgPSBsaWJfbWFudWY7 CisrCXVyaS0+bWFudWYgPSBtYW51ZjsKKysJdXJpLT5zZXJpYWwgPSBzZXJpYWw7CisrCXVyaS0+ b2JqZWN0ID0gb2JqZWN0OworKwl1cmktPnBpbiA9IHBpbjsKKysJcmV0dXJuIHVyaTsKKyt9Cisr Cisrc3RhdGljIHZvaWQKKyt0ZXN0X3BhcnNlX3ZhbGlkKHZvaWQpCisreworKwkvKiBwYXRoIGFy Z3VtZW50cyAqLworKwljaGVja19wYXJzZSgicGtjczExOmlkPSUwMSIsCisrCSAgICBjb21wb3Nl X3VyaSgiXHgwMSIsIDEsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwp KTsKKysJY2hlY2tfcGFyc2UoInBrY3MxMTppZD0lMDAlMDEiLAorKwkgICAgY29tcG9zZV91cmko Ilx4MDBceDAxIiwgMiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCkp OworKwljaGVja19wYXJzZSgicGtjczExOnRva2VuPVNTSCUyMEtleXMiLAorKwkgICAgY29tcG9z ZV91cmkoTlVMTCwgMCwgIlNTSCBLZXlzIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTCkpOworKwljaGVja19wYXJzZSgicGtjczExOmxpYnJhcnktbWFudWZhY3R1cmVyPU9wZW5T QyIsCisrCSAgICBjb21wb3NlX3VyaShOVUxMLCAwLCBOVUxMLCAiT3BlblNDIiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTCkpOworKwljaGVja19wYXJzZSgicGtjczExOm1hbnVmYWN0dXJl cj1waXZfSUkiLAorKwkgICAgY29tcG9zZV91cmkoTlVMTCwgMCwgTlVMTCwgTlVMTCwgInBpdl9J SSIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpKTsKKysJY2hlY2tfcGFyc2UoInBrY3MxMTpzZXJp YWw9SWFtU2VyaWFsIiwKKysJICAgIGNvbXBvc2VfdXJpKE5VTEwsIDAsIE5VTEwsIE5VTEwsIE5V TEwsICJJYW1TZXJpYWwiLCBOVUxMLCBOVUxMLCBOVUxMKSk7CisrCWNoZWNrX3BhcnNlKCJwa2Nz MTE6b2JqZWN0PVNJR04lMjBLZXkiLAorKwkgICAgY29tcG9zZV91cmkoTlVMTCwgMCwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgIlNJR04gS2V5IiwgTlVMTCkpOworKwkvKiBxdWVyeSBh cmd1bWVudHMgKi8KKysJY2hlY2tfcGFyc2UoInBrY3MxMTo/bW9kdWxlLXBhdGg9L3Vzci9saWI2 NC9wMTEta2l0LXByb3h5LnNvIiwKKysJICAgIGNvbXBvc2VfdXJpKE5VTEwsIDAsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEwsICIvdXNyL2xpYjY0L3AxMS1raXQtcHJveHkuc28iLCBOVUxMLCBOVUxM KSk7CisrCWNoZWNrX3BhcnNlKCJwa2NzMTE6P3Bpbi12YWx1ZT0xMjM0NTYiLAorKwkgICAgY29t cG9zZV91cmkoTlVMTCwgMCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgIjEy MzQ1NiIpKTsKKysKKysJLyogY29tYmluYXRpb25zICovCisrCS8qIElEIFNIT1VMRCBiZSBwZXJj ZW50IGVuY29kZWQgKi8KKysJY2hlY2tfcGFyc2UoInBrY3MxMTp0b2tlbj1TU0glMjBLZXk7aWQ9 MCIsCisrCSAgICBjb21wb3NlX3VyaSgiMCIsIDEsICJTU0ggS2V5IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTCkpOworKwljaGVja19wYXJzZSgKKysJICAgICJwa2NzMTE6bWFu dWZhY3R1cmVyPUNBQz9tb2R1bGUtcGF0aD0vdXNyL2xpYjY0L3AxMS1raXQtcHJveHkuc28iLAor KwkgICAgY29tcG9zZV91cmkoTlVMTCwgMCwgTlVMTCwgTlVMTCwgIkNBQyIsIE5VTEwsCisrCSAg ICAiL3Vzci9saWI2NC9wMTEta2l0LXByb3h5LnNvIiwgTlVMTCwgTlVMTCkpOworKwljaGVja19w YXJzZSgKKysJICAgICJwa2NzMTE6b2JqZWN0PVJTQSUyMEtleT9tb2R1bGUtcGF0aD0vdXNyL2xp YjY0L3BrY3MxMS9vcGVuY3J5cHRva2kuc28iLAorKwkgICAgY29tcG9zZV91cmkoTlVMTCwgMCwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwKKysJICAgICIvdXNyL2xpYjY0L3BrY3MxMS9vcGVuY3J5 cHRva2kuc28iLCAiUlNBIEtleSIsIE5VTEwpKTsKKysJY2hlY2tfcGFyc2UoInBrY3MxMTo/bW9k dWxlLXBhdGg9L3Vzci9saWI2NC9wMTEta2l0LXByb3h5LnNvJnBpbi12YWx1ZT0xMjM0NTYiLAor KwkgICAgY29tcG9zZV91cmkoTlVMTCwgMCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgIi91c3Iv bGliNjQvcDExLWtpdC1wcm94eS5zbyIsIE5VTEwsICIxMjM0NTYiKSk7CisrCisrCS8qIGVtcHR5 IHBhdGggY29tcG9uZW50IG1hdGNoZXMgZXZlcnl0aGluZyAqLworKwljaGVja19wYXJzZSgicGtj czExOiIsIEVNUFRZX1VSSSk7CisrCisrCS8qIGVtcHR5IHN0cmluZyBpcyBhIHZhbGlkIHRvIG1h dGNoIGFnYWluc3QgKGFuZCBkaWZmZXJlbnQgZnJvbSBOVUxMKSAqLworKwljaGVja19wYXJzZSgi cGtjczExOnRva2VuPSIsCisrCSAgICBjb21wb3NlX3VyaShOVUxMLCAwLCAiIiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCkpOworKwkvKiBQZXJjZW50IGNoYXJhY3RlciBuZWVk cyB0byBiZSBwZXJjZW50LWVuY29kZWQgKi8KKysJY2hlY2tfcGFyc2UoInBrY3MxMTp0b2tlbj0l MjUiLAorKwkgICAgIGNvbXBvc2VfdXJpKE5VTEwsIDAsICIlIiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTCkpOworK30KKysKKytzdGF0aWMgdm9pZAorK3Rlc3RfcGFyc2VfaW52 YWxpZCh2b2lkKQorK3sKKysJLyogSW52YWxpZCBwZXJjZW50IGVuY29kaW5nICovCisrCWNoZWNr X3BhcnNlX3J2KCJwa2NzMTE6aWQ9JTAiLCBFTVBUWV9VUkksIC0xKTsKKysJLyogSW52YWxpZCBw ZXJjZW50IGVuY29kaW5nICovCisrCWNoZWNrX3BhcnNlX3J2KCJwa2NzMTE6aWQ9JVpaIiwgRU1Q VFlfVVJJLCAtMSk7CisrCS8qIFNwYWNlIE1VU1QgYmUgcGVyY2VudCBlbmNvZGVkIC0tIFhYWCBu b3QgZW5mb3JjZWQgeWV0ICovCisrCWNoZWNrX3BhcnNlKCJwa2NzMTE6dG9rZW49U1NIIEtleXMi LAorKwkgICAgY29tcG9zZV91cmkoTlVMTCwgMCwgIlNTSCBLZXlzIiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTCkpOworKwkvKiBNVVNUIE5PVCBjb250YWluIGR1cGxpY2F0ZSBh dHRyaWJ1dGVzIG9mIHRoZSBzYW1lIG5hbWUgKi8KKysJY2hlY2tfcGFyc2VfcnYoInBrY3MxMTpp ZD0lMDE7aWQ9JTAyIiwgRU1QVFlfVVJJLCAtMSk7CisrCS8qIE1VU1QgTk9UIGNvbnRhaW4gZHVw bGljYXRlIGF0dHJpYnV0ZXMgb2YgdGhlIHNhbWUgbmFtZSAqLworKwljaGVja19wYXJzZV9ydigi cGtjczExOj9waW4tdmFsdWU9MTExMTExJnBpbi12YWx1ZT0xMjM0NTYiLCBFTVBUWV9VUkksIC0x KTsKKysJLyogVW5yZWNvZ25pemVkIGF0dHJpYnV0ZSBpbiBwYXRoIGFyZSBpZ25vcmVkIHdpdGgg bG9nIG1lc3NhZ2UgKi8KKysJY2hlY2tfcGFyc2UoInBrY3MxMTprZXlfbmFtZT1TU0giLCBFTVBU WV9VUkkpOworKwkvKiBVbnJlY29nbml6ZWQgYXR0cmlidXRlIGluIHF1ZXJ5IFNIT1VMRCBiZSBp Z25vcmVkICovCisrCWNoZWNrX3BhcnNlKCJwa2NzMTE6P2tleV9uYW1lPVNTSCIsIEVNUFRZX1VS SSk7CisrfQorKworK3ZvaWQKKytjaGVja19nZW4oY2hhciAqZXhwZWN0LCBzdHJ1Y3QgcGtjczEx X3VyaSAqdXJpKQorK3sKKysJY2hhciAqYnVmID0gTlVMTCwgKnVyaV9zdHI7CisrCisrCWFzcHJp bnRmKCZidWYsICJWYWxpZCBQS0NTIzExIFVSSSBnZW5lcmF0aW9uOiAlcyIsIGV4cGVjdCk7Cisr CVRFU1RfU1RBUlQoYnVmKTsKKysJZnJlZShidWYpOworKwl1cmlfc3RyID0gcGtjczExX3VyaV9n ZXQodXJpKTsKKysJQVNTRVJUX1BUUl9ORSh1cmlfc3RyLCBOVUxMKTsKKysJQVNTRVJUX1NUUklO R19FUSh1cmlfc3RyLCBleHBlY3QpOworKwlmcmVlKHVyaV9zdHIpOworKwlURVNUX0RPTkUoKTsK Kyt9CisrCisrc3RhdGljIHZvaWQKKyt0ZXN0X2dlbmVyYXRlX3ZhbGlkKHZvaWQpCisreworKwkv KiBwYXRoIGFyZ3VtZW50cyAqLworKwljaGVja19nZW4oInBrY3MxMTppZD0lMDEiLAorKwkgICAg Y29tcG9zZV91cmkoIlx4MDEiLCAxLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMKSk7CisrCWNoZWNrX2dlbigicGtjczExOmlkPSUwMCUwMSIsCisrCSAgICBjb21wb3Nl X3VyaSgiXHgwMFx4MDEiLCAyLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMKSk7CisrCWNoZWNrX2dlbigicGtjczExOnRva2VuPVNTSCUyMEtleXMiLCAvKiBzcGFjZSBt dXN0IGJlIHBlcmNlbnQgZW5jb2RlZCAqLworKwkgICAgY29tcG9zZV91cmkoTlVMTCwgMCwgIlNT SCBLZXlzIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCkpOworKwkvKiBsaWJy YXJ5LW1hbnVmYWN0dXJlciBpcyBub3QgaW1wbG1lbnRlZCBub3cgKi8KKysJLypjaGVja19nZW4o InBrY3MxMTpsaWJyYXJ5LW1hbnVmYWN0dXJlcj1PcGVuU0MiLAorKwkgICAgY29tcG9zZV91cmko TlVMTCwgMCwgTlVMTCwgIk9wZW5TQyIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpKTsq LworKwljaGVja19nZW4oInBrY3MxMTptYW51ZmFjdHVyZXI9cGl2X0lJIiwKKysJICAgIGNvbXBv c2VfdXJpKE5VTEwsIDAsIE5VTEwsIE5VTEwsICJwaXZfSUkiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMKSk7CisrCWNoZWNrX2dlbigicGtjczExOnNlcmlhbD1JYW1TZXJpYWwiLAorKwkgICAgY29t cG9zZV91cmkoTlVMTCwgMCwgTlVMTCwgTlVMTCwgTlVMTCwgIklhbVNlcmlhbCIsIE5VTEwsIE5V TEwsIE5VTEwpKTsKKysJY2hlY2tfZ2VuKCJwa2NzMTE6b2JqZWN0PVJTQSUyMEtleSIsCisrCSAg ICBjb21wb3NlX3VyaShOVUxMLCAwLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCAiUlNB IEtleSIsIE5VTEwpKTsKKysJLyogcXVlcnkgYXJndW1lbnRzICovCisrCWNoZWNrX2dlbigicGtj czExOj9tb2R1bGUtcGF0aD0vdXNyL2xpYjY0L3AxMS1raXQtcHJveHkuc28iLAorKwkgICAgY29t cG9zZV91cmkoTlVMTCwgMCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgIi91c3IvbGliNjQvcDEx LWtpdC1wcm94eS5zbyIsIE5VTEwsIE5VTEwpKTsKKysKKysJLyogY29tYmluYXRpb25zICovCisr CWNoZWNrX2dlbigicGtjczExOmlkPSUwMjt0b2tlbj1TU0glMjBLZXlzIiwKKysJICAgIGNvbXBv c2VfdXJpKCJceDAyIiwgMSwgIlNTSCBLZXlzIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTCkpOworKwljaGVja19nZW4oInBrY3MxMTppZD0lRUUlMDI/bW9kdWxlLXBhdGg9L3Vz ci9saWI2NC9wMTEta2l0LXByb3h5LnNvIiwKKysJICAgIGNvbXBvc2VfdXJpKCJceEVFXHgwMiIs IDIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsICIvdXNyL2xpYjY0L3AxMS1raXQtcHJveHkuc28i LCBOVUxMLCBOVUxMKSk7CisrCWNoZWNrX2dlbigicGtjczExOm9iamVjdD1FbmNyeXB0aW9uJTIw S2V5O21hbnVmYWN0dXJlcj1waXZfSUkiLAorKwkgICAgY29tcG9zZV91cmkoTlVMTCwgMCwgTlVM TCwgTlVMTCwgInBpdl9JSSIsIE5VTEwsIE5VTEwsICJFbmNyeXB0aW9uIEtleSIsIE5VTEwpKTsK KysKKysJLyogZW1wdHkgcGF0aCBjb21wb25lbnQgbWF0Y2hlcyBldmVyeXRoaW5nICovCisrCWNo ZWNrX2dlbigicGtjczExOiIsIEVNUFRZX1VSSSk7CisrCisrfQorKworK3ZvaWQKKytjaGVja19l bmNvZGUoY2hhciAqc291cmNlLCBzaXplX3QgbGVuLCBjaGFyICphbGxvd19saXN0LCBjaGFyICpl eHBlY3QpCisreworKwljaGFyICpidWYgPSBOVUxMOworKwlzdHJ1Y3Qgc3NoYnVmICpiOworKwor Kwlhc3ByaW50ZigmYnVmLCAicGVyY2VudF9lbmNvZGU6IGV4cGVjdGVkICVzIiwgZXhwZWN0KTsK KysJVEVTVF9TVEFSVChidWYpOworKwlmcmVlKGJ1Zik7CisrCisrCWIgPSBwZXJjZW50X2VuY29k ZShzb3VyY2UsIGxlbiwgYWxsb3dfbGlzdCk7CisrCUFTU0VSVF9TVFJJTkdfRVEoc3NoYnVmX3B0 cihiKSwgZXhwZWN0KTsKKysJc3NoYnVmX2ZyZWUoYik7CisrCVRFU1RfRE9ORSgpOworK30KKysK KytzdGF0aWMgdm9pZAorK3Rlc3RfcGVyY2VudF9lbmNvZGVfbXVsdGlieXRlKHZvaWQpCisrewor KwkvKiBTSE9VTEQgYmUgZW5jb2RlZCBhcyBvY3RldHMgYWNjb3JkaW5nIHRvIHRoZSBVVEYtOCBj aGFyYWN0ZXIgZW5jb2RpbmcgKi8KKysKKysJLyogbXVsdGktYnl0ZSBjaGFyYWN0ZXJzIGFyZSAi Zm9yIGZyZWUiICovCisrCWNoZWNrX2VuY29kZSgiJCIsIDEsICIiLCAiJTI0Iik7CisrCWNoZWNr X2VuY29kZSgiwqIiLCAyLCAiIiwgIiVDMiVBMiIpOworKwljaGVja19lbmNvZGUoIuKCrCIsIDMs ICIiLCAiJUUyJTgyJUFDIik7CisrCWNoZWNrX2VuY29kZSgi8JCNiCIsIDQsICIiLCAiJUYwJTkw JThEJTg4Iik7CisrCisrCS8qIENLX1VURjhDSEFSIGlzIHVuc2lnbmVkIGNoYXIgKDEgYnl0ZSkg Ki8KKysJLyogbGFiZWxzIFNIT1VMRCBiZSBub3JtYWxpemVkIHRvIE5GQyBbVUFYMTVdICovCisr CisrfQorKworK3N0YXRpYyB2b2lkCisrdGVzdF9wZXJjZW50X2VuY29kZSh2b2lkKQorK3sKKysJ LyogV2l0aG91dCBhbGxvdyBsaXN0IGVuY29kZXMgZXZlcnl0aGluZyAoZm9yIENLQV9JRCkgKi8K KysJY2hlY2tfZW5jb2RlKCJBKiIsIDIsICIiLCAiJTQxJTJBIik7CisrCWNoZWNrX2VuY29kZSgi XHgwMCIsIDEsICIiLCAiJTAwIik7CisrCWNoZWNrX2VuY29kZSgiXHg3RiIsIDEsICIiLCAiJTdG Iik7CisrCWNoZWNrX2VuY29kZSgiXHg4MCIsIDEsICIiLCAiJTgwIik7CisrCWNoZWNrX2VuY29k ZSgiXHhmZiIsIDEsICIiLCAiJUZGIik7CisrCisrCS8qIERlZmF1bHQgYWxsb3cgbGlzdCBlbmNv ZGVzIGFueXRoaW5nIGJ1dCBzYWZlIGxldHRlcnMgKi8KKysJY2hlY2tfZW5jb2RlKCJ0ZXN0IiAi XHgwMCIgIjBhbHBoYSIsIDExLCBQS0NTMTFfVVJJX1dISVRFTElTVCwKKysJICAgICJ0ZXN0JTAw MGFscGhhIik7CisrCWNoZWNrX2VuY29kZSgiICIsIDEsIFBLQ1MxMV9VUklfV0hJVEVMSVNULAor KwkgICAgIiUyMCIpOyAvKiBTcGFjZSBNVVNUIGJlIHBlcmNlbnQgZW5jb2RlZCAqLworKwljaGVj a19lbmNvZGUoIi8iLCAxLCBQS0NTMTFfVVJJX1dISVRFTElTVCwKKysJICAgICIlMkYiKTsgLyog Jy8nIGRlbGltaXRlciBNVVNUIGJlIHBlcmNlbnQgZW5jb2RlZCAoaW4gdGhlIHBhdGgpICovCisr CWNoZWNrX2VuY29kZSgiPyIsIDEsIFBLQ1MxMV9VUklfV0hJVEVMSVNULAorKwkgICAgIiUzRiIp OyAvKiBkZWxpbWl0ZXIgJz8nIE1VU1QgYmUgcGVyY2VudCBlbmNvZGVkIChpbiB0aGUgcGF0aCkg Ki8KKysJY2hlY2tfZW5jb2RlKCIjIiwgMSwgUEtDUzExX1VSSV9XSElURUxJU1QsCisrCSAgICAi JTIzIik7IC8qICcjJyBNVVNUIGJlIGFsd2F5cyBwZXJjZW50IGVuY29kZWQgKi8KKysJY2hlY2tf ZW5jb2RlKCJrZXk9dmFsdWU7c2VwYXJhdG9yP3F1ZXJ5JmFtcDsjYW5jaCIsIDM1LCBQS0NTMTFf VVJJX1dISVRFTElTVCwKKysJICAgICJrZXklM0R2YWx1ZSUzQnNlcGFyYXRvciUzRnF1ZXJ5JTI2 YW1wJTNCJTIzYW5jaCIpOworKworKwkvKiBDb21wb25lbnRzIGluIHF1ZXJ5IGNhbiBoYXZlICcv JyB1bmVuY29kZWQgKHVzZWZ1bCBmb3IgcGF0aHMpICovCisrCWNoZWNrX2VuY29kZSgiL3BhdGgv dG8uZmlsZSIsIDEzLCBQS0NTMTFfVVJJX1dISVRFTElTVCAiLyIsCisrCSAgICAiL3BhdGgvdG8u ZmlsZSIpOworK30KKysKKyt2b2lkCisrY2hlY2tfZGVjb2RlKGNoYXIgKnNvdXJjZSwgY2hhciAq ZXhwZWN0LCBpbnQgZXhwZWN0X2xlbikKKyt7CisrCWNoYXIgKmJ1ZiA9IE5VTEwsICpvdXQgPSBO VUxMOworKwlpbnQgcnY7CisrCisrCWFzcHJpbnRmKCZidWYsICJwZXJjZW50X2RlY29kZTogJXMi LCBzb3VyY2UpOworKwlURVNUX1NUQVJUKGJ1Zik7CisrCWZyZWUoYnVmKTsKKysKKysJcnYgPSBw ZXJjZW50X2RlY29kZShzb3VyY2UsICZvdXQpOworKwlBU1NFUlRfSU5UX0VRKHJ2LCBleHBlY3Rf bGVuKTsKKysJaWYgKHJ2ID49IDApCisrCQlBU1NFUlRfTUVNX0VRKG91dCwgZXhwZWN0LCBleHBl Y3RfbGVuKTsKKysJZnJlZShvdXQpOworKwlURVNUX0RPTkUoKTsKKyt9CisrCisrc3RhdGljIHZv aWQKKyt0ZXN0X3BlcmNlbnRfZGVjb2RlKHZvaWQpCisreworKwkvKiBzaW1wbGUgdmFsaWQgY2Fz ZXMgKi8KKysJY2hlY2tfZGVjb2RlKCIlMDAiLCAiXHgwMCIsIDEpOworKwljaGVja19kZWNvZGUo IiVGRiIsICJceEZGIiwgMSk7CisrCisrCS8qIG5vcm1hbCBzdHJpbmdzIHNob2xkIGJlIGtlcHQg aW50YWN0ICovCisrCWNoZWNrX2RlY29kZSgic3RyaW5ncyBhcmUgbGVmdCIsICJzdHJpbmdzIGFy ZSBsZWZ0IiwgMTYpOworKwljaGVja19kZWNvZGUoIjEwJTI1IG9mIHRyZWVzIiwgIjEwJSBvZiB0 cmVlcyIsIDEyKTsKKysKKysJLyogbWFrZSBzdXJlIG5vIG1vcmUgdGhhbiAyIGJ5dGVzIGFyZSBw YXJzZWQgKi8KKysJY2hlY2tfZGVjb2RlKCIlMjIyIiwgIlx4MjIiICIyIiwgMik7CisrCisrCS8q IGludmFsaWQgZXhwZWN0cyBmYWlsdXJlICovCisrCWNoZWNrX2RlY29kZSgiJTAiLCAiIiwgLTEp OworKwljaGVja19kZWNvZGUoIiVaIiwgIiIsIC0xKTsKKysJY2hlY2tfZGVjb2RlKCIlRkciLCAi IiwgLTEpOworK30KKysKKyt2b2lkCisrdGVzdHModm9pZCkKKyt7CisrCXRlc3RfcGVyY2VudF9l bmNvZGUoKTsKKysJdGVzdF9wZXJjZW50X2VuY29kZV9tdWx0aWJ5dGUoKTsKKysJdGVzdF9wZXJj ZW50X2RlY29kZSgpOworKwl0ZXN0X3BhcnNlX3ZhbGlkKCk7CisrCXRlc3RfcGFyc2VfaW52YWxp ZCgpOworKwl0ZXN0X2dlbmVyYXRlX3ZhbGlkKCk7CisrfQorKworK3ZvaWQKKytiZW5jaG1hcmtz KHZvaWQpCisreworKwlwcmludGYoIm5vIGJlbmNobWFya3NcbiIpOworK30KKysKK2RpZmYgLS1n aXQgYS9zc2gtYWRkLmMgYi9zc2gtYWRkLmMKK2luZGV4IDdjZTQ1MTAzNi4uNWViNTY0YTdlIDEw MDY0NAorLS0tIGEvc3NoLWFkZC5jCisrKysgYi9zc2gtYWRkLmMKK0BAIC03MCw2ICs3MCw3IEBA CisgI2luY2x1ZGUgInNzaC1zay5oIgorICNpbmNsdWRlICJzay1hcGkuaCIKKyAjaW5jbHVkZSAi aG9zdGZpbGUuaCIKKysjaW5jbHVkZSAic3NoLXBrY3MxMS11cmkuaCIKKyAKKyAjZGVmaW5lIENF UlRfRVhQSVJZX0dSQUNFCSg1KjYwKQorIAorQEAgLTI3Miw2ICsyNzMsMzggQEAgY2hlY2tfY2Vy dF9saWZldGltZShjb25zdCBzdHJ1Y3Qgc3Noa2V5ICpjZXJ0LCBpbnQgY2VydF9saWZldGltZSkK KyAJcmV0dXJuIE1JTklNVU0oY2VydF9saWZldGltZSwgKGludCluKTsKKyB9CisgCisrI2lmZGVm IEVOQUJMRV9QS0NTMTEKKytzdGF0aWMgaW50CisrdXBkYXRlX2NhcmQoaW50IGFnZW50X2ZkLCBp bnQgYWRkLCBjb25zdCBjaGFyICppZCwgaW50IHFmbGFnLAorKyAgICBpbnQga2V5X29ubHksIGlu dCBjZXJ0X29ubHksCisrICAgIHN0cnVjdCBkZXN0X2NvbnN0cmFpbnQgKipkZXN0X2NvbnN0cmFp bnRzLCBzaXplX3QgbmRlc3RfY29uc3RyYWludHMsCisrICAgIHN0cnVjdCBzc2hrZXkgKipjZXJ0 cywgc2l6ZV90IG5jZXJ0cywgY2hhciAqcGluKTsKKysKKytpbnQKKyt1cGRhdGVfcGtjczExX3Vy aShpbnQgYWdlbnRfZmQsIGludCBhZGRpbmcsIGNvbnN0IGNoYXIgKnBrY3MxMV91cmksIGludCBx ZmxhZywKKysgICAgc3RydWN0IGRlc3RfY29uc3RyYWludCAqKmRlc3RfY29uc3RyYWludHMsIHNp emVfdCBuZGVzdF9jb25zdHJhaW50cykKKyt7CisrCWNoYXIgKnBpbiA9IE5VTEw7CisrCXN0cnVj dCBwa2NzMTFfdXJpICp1cmk7CisrCisrCS8qIGRyeS1ydW4gcGFyc2UgdG8gbWFrZSBzdXJlIHRo ZSBVUkkgaXMgdmFsaWQgYW5kIHRvIHJlcG9ydCBlcnJvcnMgKi8KKysJdXJpID0gcGtjczExX3Vy aV9pbml0KCk7CisrCWlmIChwa2NzMTFfdXJpX3BhcnNlKChjaGFyICopIHBrY3MxMV91cmksIHVy aSkgIT0gMCkKKysJCWZhdGFsKCJGYWlsZWQgdG8gcGFyc2UgUEtDUyMxMSBVUkkiKTsKKysJaWYg KHVyaS0+cGluICE9IE5VTEwpIHsKKysJCXBpbiA9IHN0cmR1cCh1cmktPnBpbik7CisrCQlpZiAo cGluID09IE5VTEwpIHsKKysJCQlmYXRhbCgiRmFpbGVkIHRvIGR1cHBsaWNhdGUgc3RyaW5nIik7 CisrCQl9CisrCQkvKiBwaW4gaXMgZnJlZWQgaW4gdGhlIHVwZGF0ZV9jYXJkKCkgKi8KKysJfQor Kwlwa2NzMTFfdXJpX2NsZWFudXAodXJpKTsKKysKKysJcmV0dXJuIHVwZGF0ZV9jYXJkKGFnZW50 X2ZkLCBhZGRpbmcsIHBrY3MxMV91cmksIHFmbGFnLCAxLCAwLAorKwkgICAgICAgICAgIGRlc3Rf Y29uc3RyYWludHMsIG5kZXN0X2NvbnN0cmFpbnRzLCBOVUxMLCAwLCBwaW4pOworK30KKysjZW5k aWYKKysKKyBzdGF0aWMgaW50CisgYWRkX2ZpbGUoaW50IGFnZW50X2ZkLCBjb25zdCBjaGFyICpm aWxlbmFtZSwgaW50IGtleV9vbmx5LCBpbnQgY2VydF9vbmx5LAorICAgICBpbnQgcWZsYWcsIGlu dCBOZmxhZywgY29uc3QgY2hhciAqc2twcm92aWRlciwKK0BAIC00NjIsMTUgKzQ5NSwxNCBAQCBz dGF0aWMgaW50CisgdXBkYXRlX2NhcmQoaW50IGFnZW50X2ZkLCBpbnQgYWRkLCBjb25zdCBjaGFy ICppZCwgaW50IHFmbGFnLAorICAgICBpbnQga2V5X29ubHksIGludCBjZXJ0X29ubHksCisgICAg IHN0cnVjdCBkZXN0X2NvbnN0cmFpbnQgKipkZXN0X2NvbnN0cmFpbnRzLCBzaXplX3QgbmRlc3Rf Y29uc3RyYWludHMsCistICAgIHN0cnVjdCBzc2hrZXkgKipjZXJ0cywgc2l6ZV90IG5jZXJ0cykK KysgICAgc3RydWN0IHNzaGtleSAqKmNlcnRzLCBzaXplX3QgbmNlcnRzLCBjaGFyICpwaW4pCisg eworLQljaGFyICpwaW4gPSBOVUxMOworIAlpbnQgciwgcmV0ID0gLTE7CisgCisgCWlmIChrZXlf b25seSkKKyAJCW5jZXJ0cyA9IDA7CisgCistCWlmIChhZGQpIHsKKysJaWYgKGFkZCAmJiBwaW4g PT0gTlVMTCkgeworIAkJaWYgKChwaW4gPSByZWFkX3Bhc3NwaHJhc2UoIkVudGVyIHBhc3NwaHJh c2UgZm9yIFBLQ1MjMTE6ICIsCisgCQkgICAgUlBfQUxMT1dfU1RESU4pKSA9PSBOVUxMKQorIAkJ CXJldHVybiAtMTsKK0BAIC02NTIsNiArNjg0LDE0IEBAIGRvX2ZpbGUoaW50IGFnZW50X2ZkLCBp bnQgZGVsZXRpbmcsIGludCBrZXlfb25seSwgaW50IGNlcnRfb25seSwKKyAgICAgY2hhciAqZmls ZSwgaW50IHFmbGFnLCBpbnQgTmZsYWcsIGNvbnN0IGNoYXIgKnNrcHJvdmlkZXIsCisgICAgIHN0 cnVjdCBkZXN0X2NvbnN0cmFpbnQgKipkZXN0X2NvbnN0cmFpbnRzLCBzaXplX3QgbmRlc3RfY29u c3RyYWludHMpCisgeworKyNpZmRlZiBFTkFCTEVfUEtDUzExCisrCWlmIChzdHJsZW4oZmlsZSkg Pj0gc3RybGVuKFBLQ1MxMV9VUklfU0NIRU1FKSAmJgorKwkgICAgc3RybmNtcChmaWxlLCBQS0NT MTFfVVJJX1NDSEVNRSwKKysJICAgIHN0cmxlbihQS0NTMTFfVVJJX1NDSEVNRSkpID09IDApIHsK KysJCXJldHVybiB1cGRhdGVfcGtjczExX3VyaShhZ2VudF9mZCwgIWRlbGV0aW5nLCBmaWxlLCBx ZmxhZywKKysgICAgICAgICAgICAgICAgICAgZGVzdF9jb25zdHJhaW50cywgbmRlc3RfY29uc3Ry YWludHMpOworKwl9CisrI2VuZGlmCisgCWlmIChkZWxldGluZykgeworIAkJaWYgKGRlbGV0ZV9m aWxlKGFnZW50X2ZkLCBmaWxlLCBrZXlfb25seSwKKyAJCSAgICBjZXJ0X29ubHksIHFmbGFnKSA9 PSAtMSkKK0BAIC0xMDA0LDcgKzEwNDQsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikK KyAJCWlmICh1cGRhdGVfY2FyZChhZ2VudF9mZCwgIWRlbGV0aW5nLCBwa2NzMTFwcm92aWRlciwK KyAJCSAgICBxZmxhZywga2V5X29ubHksIGNlcnRfb25seSwKKyAJCSAgICBkZXN0X2NvbnN0cmFp bnRzLCBuZGVzdF9jb25zdHJhaW50cywKKy0JCSAgICBjZXJ0cywgbmNlcnRzKSA9PSAtMSkKKysJ CSAgICBjZXJ0cywgbmNlcnRzLCBOVUxMKSA9PSAtMSkKKyAJCQlyZXQgPSAxOworIAkJZm9yIChu ID0gMDsgbiA8IG5jZXJ0czsgbisrKQorIAkJCXNzaGtleV9mcmVlKGNlcnRzW25dKTsKK2RpZmYg LS1naXQgYS9zc2gtYWdlbnQuYyBiL3NzaC1hZ2VudC5jCitpbmRleCAxN2IyYTk2YzAuLjFmMWZj MDI0ZCAxMDA2NDQKKy0tLSBhL3NzaC1hZ2VudC5jCisrKysgYi9zc2gtYWdlbnQuYworQEAgLTE1 NTMsMTAgKzE1NTMsNzUgQEAgYWRkX3AxMV9pZGVudGl0eShzdHJ1Y3Qgc3Noa2V5ICprZXksIGNo YXIgKmNvbW1lbnQsIGNvbnN0IGNoYXIgKnByb3ZpZGVyLAorIAlpZHRhYi0+bmVudHJpZXMrKzsK KyB9CisgCisrc3RhdGljIGNoYXIgKgorK3Nhbml0aXplX3BrY3MxMV9wcm92aWRlcihjb25zdCBj aGFyICpwcm92aWRlcikKKyt7CisrCXN0cnVjdCBwa2NzMTFfdXJpICp1cmkgPSBOVUxMOworKwlj aGFyICpzYW5lX3VyaSwgKm1vZHVsZV9wYXRoID0gTlVMTDsgLyogZGVmYXVsdCBwYXRoICovCisr CWNoYXIgY2Fub25pY2FsX3Byb3ZpZGVyW1BBVEhfTUFYXTsKKysKKysJaWYgKHByb3ZpZGVyID09 IE5VTEwpCisrCQlyZXR1cm4gTlVMTDsKKysKKysJbWVtc2V0KGNhbm9uaWNhbF9wcm92aWRlciwg MCwgc2l6ZW9mKGNhbm9uaWNhbF9wcm92aWRlcikpOworKworKwlpZiAoc3RybGVuKHByb3ZpZGVy KSA+PSBzdHJsZW4oUEtDUzExX1VSSV9TQ0hFTUUpICYmCisrCSAgICBzdHJuY21wKHByb3ZpZGVy LCBQS0NTMTFfVVJJX1NDSEVNRSwKKysJICAgIHN0cmxlbihQS0NTMTFfVVJJX1NDSEVNRSkpID09 IDApIHsKKysJCS8qIFBLQ1MjMTEgVVJJICovCisrCQl1cmkgPSBwa2NzMTFfdXJpX2luaXQoKTsK KysJCWlmICh1cmkgPT0gTlVMTCkgeworKwkJCWVycm9yKCJGYWlsZWQgdG8gaW5pdCBQS0NTIzEx IFVSSSIpOworKwkJCXJldHVybiBOVUxMOworKwkJfQorKworKwkJaWYgKHBrY3MxMV91cmlfcGFy c2UocHJvdmlkZXIsIHVyaSkgIT0gMCkgeworKwkJCWVycm9yKCJGYWlsZWQgdG8gcGFyc2UgUEtD UyMxMSBVUkkiKTsKKysJCQlwa2NzMTFfdXJpX2NsZWFudXAodXJpKTsKKysJCQlyZXR1cm4gTlVM TDsKKysJCX0KKysJCS8qIHZhbGlkYXRlIGFsc28gcHJvdmlkZXIgZnJvbSBVUkkgKi8KKysJCWlm ICh1cmktPm1vZHVsZV9wYXRoKQorKwkJCW1vZHVsZV9wYXRoID0gc3RyZHVwKHVyaS0+bW9kdWxl X3BhdGgpOworKwl9IGVsc2UKKysJCW1vZHVsZV9wYXRoID0gc3RyZHVwKHByb3ZpZGVyKTsgLyog c2ltcGxlIHBhdGggKi8KKysKKysJaWYgKG1vZHVsZV9wYXRoICE9IE5VTEwpIHsgLyogZG8gbm90 IHZhbGlkYXRlIGRlZmF1bHQgTlVMTCBwYXRoIGluIFVSSSAqLworKwkJaWYgKHJlYWxwYXRoKG1v ZHVsZV9wYXRoLCBjYW5vbmljYWxfcHJvdmlkZXIpID09IE5VTEwpIHsKKysJCQl2ZXJib3NlKCJm YWlsZWQgUEtDUyMxMSBwcm92aWRlciBcIiUuMTAwc1wiOiByZWFscGF0aDogJXMiLAorKwkJCSAg ICBtb2R1bGVfcGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKysJCQlmcmVlKG1vZHVsZV9wYXRoKTsK KysJCQlwa2NzMTFfdXJpX2NsZWFudXAodXJpKTsKKysJCQlyZXR1cm4gTlVMTDsKKysJCX0KKysJ CWZyZWUobW9kdWxlX3BhdGgpOworKwkJaWYgKG1hdGNoX3BhdHRlcm5fbGlzdChjYW5vbmljYWxf cHJvdmlkZXIsIGFsbG93ZWRfcHJvdmlkZXJzLCAwKSAhPSAxKSB7CisrCQkJdmVyYm9zZSgicmVm dXNpbmcgUEtDUyMxMSBwcm92aWRlciBcIiUuMTAwc1wiOiAiCisrCQkJICAgICJub3QgYWxsb3dl ZCIsIGNhbm9uaWNhbF9wcm92aWRlcik7CisrCQkJcGtjczExX3VyaV9jbGVhbnVwKHVyaSk7Cisr CQkJcmV0dXJuIE5VTEw7CisrCQl9CisrCisrCQkvKiBjb3B5IHZlcmlmaWVkIGFuZCBzYW5pdGl6 ZWQgcHJvdmlkZXIgcGF0aCBiYWNrIHRvIHRoZSB1cmkgKi8KKysJCWlmICh1cmkpIHsKKysJCQlm cmVlKHVyaS0+bW9kdWxlX3BhdGgpOworKwkJCXVyaS0+bW9kdWxlX3BhdGggPSB4c3RyZHVwKGNh bm9uaWNhbF9wcm92aWRlcik7CisrCQl9CisrCX0KKysKKysJaWYgKHVyaSkgeworKwkJc2FuZV91 cmkgPSBwa2NzMTFfdXJpX2dldCh1cmkpOworKwkJcGtjczExX3VyaV9jbGVhbnVwKHVyaSk7Cisr CQlyZXR1cm4gc2FuZV91cmk7CisrCX0gZWxzZSB7CisrCQlyZXR1cm4geHN0cmR1cChjYW5vbmlj YWxfcHJvdmlkZXIpOyAvKiBzaW1wbGUgcGF0aCAqLworKwl9CisrfQorKworIHN0YXRpYyB2b2lk CisgcHJvY2Vzc19hZGRfc21hcnRjYXJkX2tleShTb2NrZXRFbnRyeSAqZSkKKyB7CistCWNoYXIg KnByb3ZpZGVyID0gTlVMTCwgKnBpbiA9IE5VTEwsIGNhbm9uaWNhbF9wcm92aWRlcltQQVRIX01B WF07CisrCWNoYXIgKnByb3ZpZGVyID0gTlVMTCwgKnBpbiA9IE5VTEwsICpzYW5lX3VyaSA9IE5V TEw7CisgCWNoYXIgKipjb21tZW50cyA9IE5VTEw7CisgCWludCByLCBpLCBjb3VudCA9IDAsIHN1 Y2Nlc3MgPSAwLCBjb25maXJtID0gMDsKKyAJdV9pbnQgc2Vjb25kcyA9IDA7CitAQCAtMTU4NSwy NSArMTY1MCwxOCBAQCBwcm9jZXNzX2FkZF9zbWFydGNhcmRfa2V5KFNvY2tldEVudHJ5ICplKQor IAkJICAgICJwcm92aWRlcnMgaXMgZGlzYWJsZWQiLCBwcm92aWRlcik7CisgCQlnb3RvIHNlbmQ7 CisgCX0KKy0JaWYgKHJlYWxwYXRoKHByb3ZpZGVyLCBjYW5vbmljYWxfcHJvdmlkZXIpID09IE5V TEwpIHsKKy0JCXZlcmJvc2UoImZhaWxlZCBQS0NTIzExIGFkZCBvZiBcIiUuMTAwc1wiOiByZWFs cGF0aDogJXMiLAorLQkJICAgIHByb3ZpZGVyLCBzdHJlcnJvcihlcnJubykpOworLQkJZ290byBz ZW5kOworLQl9CistCWlmIChtYXRjaF9wYXR0ZXJuX2xpc3QoY2Fub25pY2FsX3Byb3ZpZGVyLCBh bGxvd2VkX3Byb3ZpZGVycywgMCkgIT0gMSkgeworLQkJdmVyYm9zZSgicmVmdXNpbmcgUEtDUyMx MSBhZGQgb2YgXCIlLjEwMHNcIjogIgorLQkJICAgICJwcm92aWRlciBub3QgYWxsb3dlZCIsIGNh bm9uaWNhbF9wcm92aWRlcik7CisrCXNhbmVfdXJpID0gc2FuaXRpemVfcGtjczExX3Byb3ZpZGVy KHByb3ZpZGVyKTsKKysJaWYgKHNhbmVfdXJpID09IE5VTEwpCisgCQlnb3RvIHNlbmQ7CistCX0K Ky0JZGVidWdfZigiYWRkICUuMTAwcyIsIGNhbm9uaWNhbF9wcm92aWRlcik7CisgCWlmIChsaWZl dGltZSAmJiAhZGVhdGgpCisgCQlkZWF0aCA9IG1vbm90aW1lKCkgKyBsaWZldGltZTsKKyAKKy0J Y291bnQgPSBwa2NzMTFfYWRkX3Byb3ZpZGVyKGNhbm9uaWNhbF9wcm92aWRlciwgcGluLCAma2V5 cywgJmNvbW1lbnRzKTsKKysJZGVidWdfZigiYWRkICUuMTAwcyIsIHNhbmVfdXJpKTsKKysJY291 bnQgPSBwa2NzMTFfYWRkX3Byb3ZpZGVyKHNhbmVfdXJpLCBwaW4sICZrZXlzLCAmY29tbWVudHMp OworIAlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworIAkJaWYgKGNvbW1lbnRzW2ldID09 IE5VTEwgfHwgY29tbWVudHNbaV1bMF0gPT0gJ1wwJykgeworIAkJCWZyZWUoY29tbWVudHNbaV0p OworLQkJCWNvbW1lbnRzW2ldID0geHN0cmR1cChjYW5vbmljYWxfcHJvdmlkZXIpOworKwkJCWNv bW1lbnRzW2ldID0geHN0cmR1cChzYW5lX3VyaSk7CisgCQl9CisgCQlmb3IgKGogPSAwOyBqIDwg bmNlcnRzOyBqKyspIHsKKyAJCQlpZiAoIXNzaGtleV9pc19jZXJ0KGNlcnRzW2pdKSkKK0BAIC0x NjEzLDEzICsxNjcxLDEzIEBAIHByb2Nlc3NfYWRkX3NtYXJ0Y2FyZF9rZXkoU29ja2V0RW50cnkg KmUpCisgCQkJaWYgKHBrY3MxMV9tYWtlX2NlcnQoa2V5c1tpXSwgY2VydHNbal0sICZrKSAhPSAw KQorIAkJCQljb250aW51ZTsKKyAJCQlhZGRfcDExX2lkZW50aXR5KGssIHhzdHJkdXAoY29tbWVu dHNbaV0pLAorLQkJCSAgICBjYW5vbmljYWxfcHJvdmlkZXIsIGRlYXRoLCBjb25maXJtLAorKwkJ CSAgICBzYW5lX3VyaSwgZGVhdGgsIGNvbmZpcm0sCisgCQkJICAgIGRlc3RfY29uc3RyYWludHMs IG5kZXN0X2NvbnN0cmFpbnRzKTsKKyAJCQlzdWNjZXNzID0gMTsKKyAJCX0KKyAJCWlmICghY2Vy dF9vbmx5ICYmIGxvb2t1cF9pZGVudGl0eShrZXlzW2ldKSA9PSBOVUxMKSB7CisgCQkJYWRkX3Ax MV9pZGVudGl0eShrZXlzW2ldLCBjb21tZW50c1tpXSwKKy0JCQkgICAgY2Fub25pY2FsX3Byb3Zp ZGVyLCBkZWF0aCwgY29uZmlybSwKKysJCQkgICAgc2FuZV91cmksIGRlYXRoLCBjb25maXJtLAor IAkJCSAgICBkZXN0X2NvbnN0cmFpbnRzLCBuZGVzdF9jb25zdHJhaW50cyk7CisgCQkJa2V5c1tp XSA9IE5VTEw7CQkvKiB0cmFuc2ZlcnJlZCAqLworIAkJCWNvbW1lbnRzW2ldID0gTlVMTDsJLyog dHJhbnNmZXJyZWQgKi8KK0BAIC0xNjMyLDYgKzE2OTAsNyBAQCBwcm9jZXNzX2FkZF9zbWFydGNh cmRfa2V5KFNvY2tldEVudHJ5ICplKQorIHNlbmQ6CisgCWZyZWUocGluKTsKKyAJZnJlZShwcm92 aWRlcik7CisrCWZyZWUoc2FuZV91cmkpOworIAlmcmVlKGtleXMpOworIAlmcmVlKGNvbW1lbnRz KTsKKyAJZnJlZV9kZXN0X2NvbnN0cmFpbnRzKGRlc3RfY29uc3RyYWludHMsIG5kZXN0X2NvbnN0 cmFpbnRzKTsKK0BAIC0xNjQ0LDggKzE3MDMsOCBAQCBzZW5kOgorIHN0YXRpYyB2b2lkCisgcHJv Y2Vzc19yZW1vdmVfc21hcnRjYXJkX2tleShTb2NrZXRFbnRyeSAqZSkKKyB7CistCWNoYXIgKnBy b3ZpZGVyID0gTlVMTCwgKnBpbiA9IE5VTEwsIGNhbm9uaWNhbF9wcm92aWRlcltQQVRIX01BWF07 CistCWludCByLCBzdWNjZXNzID0gMDsKKysJY2hhciAqcHJvdmlkZXIgPSBOVUxMLCAqcGluID0g TlVMTCwgKnNhbmVfdXJpID0gTlVMTDsKKysJaW50IHIsIHN1Y2Nlc3MgPSAwLCByZW1vdmVkX2Nv dW50ID0gMDsKKyAJSWRlbnRpdHkgKmlkLCAqbnh0OworIAorIAlkZWJ1ZzJfZigiZW50ZXJpbmci KTsKK0BAIC0xNjU2LDMwICsxNzE1LDM4IEBAIHByb2Nlc3NfcmVtb3ZlX3NtYXJ0Y2FyZF9rZXko U29ja2V0RW50cnkgKmUpCisgCX0KKyAJZnJlZShwaW4pOworIAorLQlpZiAocmVhbHBhdGgocHJv dmlkZXIsIGNhbm9uaWNhbF9wcm92aWRlcikgPT0gTlVMTCkgeworLQkJdmVyYm9zZSgiZmFpbGVk IFBLQ1MjMTEgYWRkIG9mIFwiJS4xMDBzXCI6IHJlYWxwYXRoOiAlcyIsCistCQkgICAgcHJvdmlk ZXIsIHN0cmVycm9yKGVycm5vKSk7CisrCXNhbmVfdXJpID0gc2FuaXRpemVfcGtjczExX3Byb3Zp ZGVyKHByb3ZpZGVyKTsKKysJaWYgKHNhbmVfdXJpID09IE5VTEwpCisgCQlnb3RvIHNlbmQ7Cist CX0KKyAKKy0JZGVidWdfZigicmVtb3ZlICUuMTAwcyIsIGNhbm9uaWNhbF9wcm92aWRlcik7Cisr CWRlYnVnX2YoInJlbW92ZSAlLjEwMHMiLCBzYW5lX3VyaSk7CisgCWZvciAoaWQgPSBUQUlMUV9G SVJTVCgmaWR0YWItPmlkbGlzdCk7IGlkOyBpZCA9IG54dCkgeworIAkJbnh0ID0gVEFJTFFfTkVY VChpZCwgbmV4dCk7CisgCQkvKiBTa2lwIGZpbGUtLWJhc2VkIGtleXMgKi8KKyAJCWlmIChpZC0+ cHJvdmlkZXIgPT0gTlVMTCkKKyAJCQljb250aW51ZTsKKy0JCWlmICghc3RyY21wKGNhbm9uaWNh bF9wcm92aWRlciwgaWQtPnByb3ZpZGVyKSkgeworKwkJaWYgKCFzdHJjbXAoc2FuZV91cmksIGlk LT5wcm92aWRlcikpIHsKKyAJCQlUQUlMUV9SRU1PVkUoJmlkdGFiLT5pZGxpc3QsIGlkLCBuZXh0 KTsKKyAJCQlmcmVlX2lkZW50aXR5KGlkKTsKKyAJCQlpZHRhYi0+bmVudHJpZXMtLTsKKysJCQly ZW1vdmVkX2NvdW50Kys7CisgCQl9CisgCX0KKy0JaWYgKHBrY3MxMV9kZWxfcHJvdmlkZXIoY2Fu b25pY2FsX3Byb3ZpZGVyKSA9PSAwKQorKwkvKiBPbmx5IHN1Y2NlZWQgaWYgd2UgYWN0dWFsbHkg cmVtb3ZlZCBrZXlzIGFuZCB1bmxvYWRlZCBwcm92aWRlciAqLworKwlpZiAocmVtb3ZlZF9jb3Vu dCA+IDAgJiYgcGtjczExX2RlbF9wcm92aWRlcihzYW5lX3VyaSkgPT0gMCkgeworIAkJc3VjY2Vz cyA9IDE7CistCWVsc2UKKysJCWRlYnVnX2YoInJlbW92ZWQgJWQga2V5KHMpIGZyb20gcHJvdmlk ZXIgJXMiLAorKwkJICAgIHJlbW92ZWRfY291bnQsIHNhbmVfdXJpKTsKKysJfSBlbHNlIGlmIChy ZW1vdmVkX2NvdW50ID09IDApIHsKKysJCWVycm9yX2YoIm5vIG1hdGNoaW5nIGtleXMgZm91bmQg Zm9yIHByb3ZpZGVyICVzIiwgc2FuZV91cmkpOworKwkJLyogU3RpbGwgdHJ5IHRvIGNsZWFuIHVw IHByb3ZpZGVyIGlmIGl0IGV4aXN0cyAqLworKwkJcGtjczExX2RlbF9wcm92aWRlcihzYW5lX3Vy aSk7CisrCX0gZWxzZSB7CisgCQllcnJvcl9mKCJwa2NzMTFfZGVsX3Byb3ZpZGVyIGZhaWxlZCIp OworKwl9Cisgc2VuZDoKKyAJZnJlZShwcm92aWRlcik7CisrCWZyZWUoc2FuZV91cmkpOworIAlz ZW5kX3N0YXR1cyhlLCBzdWNjZXNzKTsKKyB9CisgI2VuZGlmIC8qIEVOQUJMRV9QS0NTMTEgKi8K K2RpZmYgLS1naXQgYS9zc2gta2V5Z2VuLmMgYi9zc2gta2V5Z2VuLmMKK2luZGV4IGViODgwZGJj MC4uMjU5MDZmM2MxIDEwMDY0NAorLS0tIGEvc3NoLWtleWdlbi5jCisrKysgYi9zc2gta2V5Z2Vu LmMKK0BAIC04MzUsOCArODM1LDExIEBAIGRvX2Rvd25sb2FkKHN0cnVjdCBwYXNzd2QgKnB3KQor IAkJCWZyZWUoZnApOworIAkJfSBlbHNlIHsKKyAJCQkodm9pZCkgc3Noa2V5X3dyaXRlKGtleXNb aV0sIHN0ZG91dCk7IC8qIFhYWCBjaGVjayAqLworLQkJCWZwcmludGYoc3Rkb3V0LCAiJXMlc1xu IiwKKy0JCQkgICAgKihjb21tZW50c1tpXSkgPT0gJ1wwJyA/ICIiIDogIiAiLCBjb21tZW50c1tp XSk7CisrCQkJaWYgKCooY29tbWVudHNbaV0pICE9ICdcMCcpIHsKKysJCQkJZnByaW50ZihzdGRv dXQsICIgJXMiLCBjb21tZW50c1tpXSk7CisrCQkJfQorKwkJCSh2b2lkKSBwa2NzMTFfdXJpX3dy aXRlKGtleXNbaV0sIHN0ZG91dCk7CisrCQkJZnByaW50ZihzdGRvdXQsICJcbiIpOworIAkJfQor IAkJZnJlZShjb21tZW50c1tpXSk7CisgCQlzc2hrZXlfZnJlZShrZXlzW2ldKTsKK2RpZmYgLS1n aXQgYS9zc2gtcGtjczExLWNsaWVudC5jIGIvc3NoLXBrY3MxMS1jbGllbnQuYworaW5kZXggMzBh NGNmNWRjLi4zZmQwNThhMGMgMTAwNjQ0CistLS0gYS9zc2gtcGtjczExLWNsaWVudC5jCisrKysg Yi9zc2gtcGtjczExLWNsaWVudC5jCitAQCAtMTgsNiArMTgsNyBAQAorIAorICNpbmNsdWRlICJp bmNsdWRlcy5oIgorIAorKyNpZmRlZiBFTkFCTEVfUEtDUzExCisgI2luY2x1ZGUgPHN5cy90eXBl cy5oPgorICNpbmNsdWRlIDxzeXMvdGltZS5oPgorICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CitA QCAtMzgsNiArMzksNyBAQAorICNpbmNsdWRlICJhdXRoZmQuaCIKKyAjaW5jbHVkZSAiYXRvbWlj aW8uaCIKKyAjaW5jbHVkZSAic3NoLXBrY3MxMS5oIgorKyNpbmNsdWRlICJzc2gtcGtjczExLXVy aS5oIgorICNpbmNsdWRlICJzc2hlcnIuaCIKKyAKKyAvKiBib3Jyb3dzIGNvZGUgZnJvbSBzZnRw LXNlcnZlciBhbmQgc3NoLWFnZW50ICovCitAQCAtMzc5LDYgKzM4MSwxOSBAQCBwa2NzMTFfc3Rh cnRfaGVscGVyKGNvbnN0IGNoYXIgKnBhdGgpCisgCXJldHVybiBoZWxwZXI7CisgfQorIAorK2lu dAorK3BrY3MxMV9hZGRfcHJvdmlkZXJfYnlfdXJpKHN0cnVjdCBwa2NzMTFfdXJpICp1cmksIGNo YXIgKnBpbiwgc3RydWN0IHNzaGtleSAqKiprZXlwLCBjaGFyICoqKmxhYmVsc3ApCisreworKwlp bnQgbmtleXMgPSAwOworKwljaGFyICpwcm92aWRlcl91cmkgPSBwa2NzMTFfdXJpX2dldCh1cmkp OworKworKwlkZWJ1Z19mKCJjYWxsZWQsIHByb3ZpZGVyX3VyaSA9ICVzIiwgcHJvdmlkZXJfdXJp KTsKKysKKysJbmtleXMgPSBwa2NzMTFfYWRkX3Byb3ZpZGVyKHByb3ZpZGVyX3VyaSwgcGluLCBr ZXlwLCBsYWJlbHNwKTsKKysKKysJcmV0dXJuIG5rZXlzOworK30KKysKKyBpbnQKKyBwa2NzMTFf YWRkX3Byb3ZpZGVyKGNoYXIgKm5hbWUsIGNoYXIgKnBpbiwgc3RydWN0IHNzaGtleSAqKiprZXlz cCwKKyAgICAgY2hhciAqKipsYWJlbHNwKQorQEAgLTM5MCw2ICs0MDUsOCBAQCBwa2NzMTFfYWRk X3Byb3ZpZGVyKGNoYXIgKm5hbWUsIGNoYXIgKnBpbiwgc3RydWN0IHNzaGtleSAqKiprZXlzcCwK KyAJc3RydWN0IHNzaGJ1ZiAqbXNnOworIAlzdHJ1Y3QgaGVscGVyICpoZWxwZXI7CisgCisrCWRl YnVnX2YoImNhbGxlZCwgbmFtZSA9ICVzIiwgbmFtZSk7CisrCisgCWlmICgoaGVscGVyID0gaGVs cGVyX2J5X3Byb3ZpZGVyKG5hbWUpKSA9PSBOVUxMICYmCisgCSAgICAoaGVscGVyID0gcGtjczEx X3N0YXJ0X2hlbHBlcihuYW1lKSkgPT0gTlVMTCkKKyAJCXJldHVybiAtMTsKK0BAIC00MTQsNiAr NDMxLDcgQEAgcGtjczExX2FkZF9wcm92aWRlcihjaGFyICpuYW1lLCBjaGFyICpwaW4sIHN0cnVj dCBzc2hrZXkgKioqa2V5c3AsCisgCQkqa2V5c3AgPSB4Y2FsbG9jKG5rZXlzLCBzaXplb2Yoc3Ry dWN0IHNzaGtleSAqKSk7CisgCQlpZiAobGFiZWxzcCkKKyAJCQkqbGFiZWxzcCA9IHhjYWxsb2Mo bmtleXMsIHNpemVvZihjaGFyICopKTsKKysJCWRlYnVnX2YoIm5rZXlzID0gJXUiLCBua2V5cyk7 CisgCQlmb3IgKGkgPSAwOyBpIDwgbmtleXM7IGkrKykgeworIAkJCS8qIFhYWCBjbGVhbiB1cCBw cm9wZXJseSBpbnN0ZWFkIG9mIGZhdGFsKCkgKi8KKyAJCQlpZiAoKHIgPSBzc2hrZXlfZnJvbXMo bXNnLCAmaykpICE9IDAgfHwKK0BAIC00OTcsMyArNTE1LDQgQEAgcGtjczExX2tleV9mcmVlKHN0 cnVjdCBzc2hrZXkgKmtleSkKKyAJaWYgKGhlbHBlci0+bmtleWJsb2JzID09IDApCisgCQloZWxw ZXJfdGVybWluYXRlKGhlbHBlcik7CisgfQorKyNlbmRpZgorZGlmZiAtLWdpdCBhL3NzaC1wa2Nz MTEtdXJpLmMgYi9zc2gtcGtjczExLXVyaS5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXgg MDAwMDAwMDAwLi5kNWIwNzQ1OTIKKy0tLSAvZGV2L251bGwKKysrKyBiL3NzaC1wa2NzMTEtdXJp LmMKK0BAIC0wLDAgKzEsNDM4IEBACisrLyoKKysgKiBDb3B5cmlnaHQgKGMpIDIwMTcgUmVkIEhh dAorKyAqCisrICogQXV0aG9yczogSmFrdWIgSmVsZW4gPGpqZWxlbkByZWRoYXQuY29tPgorKyAq CisrICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhp cyBzb2Z0d2FyZSBmb3IgYW55CisrICogcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhl cmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZQorKyAqIGNvcHlyaWdodCBub3Rp Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMuCisrICoK KysgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFIEFVVEhPUiBESVND TEFJTVMgQUxMIFdBUlJBTlRJRVMKKysgKiBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElO Q0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GCisrICogTUVSQ0hBTlRBQklMSVRZIEFO RCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IKKysg KiBBTlkgU1BFQ0lBTCwgRElSRUNULCBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT IE9SIEFOWSBEQU1BR0VTCisrICogV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVT RSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOCisrICogQUNUSU9OIE9GIENPTlRSQUNU LCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YKKysg KiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNP RlRXQVJFLgorKyAqLworKworKyNpbmNsdWRlICJpbmNsdWRlcy5oIgorKworKyNpZmRlZiBFTkFC TEVfUEtDUzExCisrCisrI2luY2x1ZGUgPHN0ZGlvLmg+CisrI2luY2x1ZGUgPHN0cmluZy5oPgor KyNpbmNsdWRlIDxzdGRsaWIuaD4KKysKKysjaW5jbHVkZSAic3Noa2V5LmgiCisrI2luY2x1ZGUg InNzaGJ1Zi5oIgorKyNpbmNsdWRlICJsb2cuaCIKKysKKysjZGVmaW5lIENSWVBUT0tJX0NPTVBB VAorKyNpbmNsdWRlICJwa2NzMTEuaCIKKysKKysjaW5jbHVkZSAic3NoLXBrY3MxMS11cmkuaCIK KysKKysjZGVmaW5lIFBLQ1MxMV9VUklfUEFUSF9TRVBBUkFUT1IgIjsiCisrI2RlZmluZSBQS0NT MTFfVVJJX1FVRVJZX1NFUEFSQVRPUiAiJiIKKysjZGVmaW5lIFBLQ1MxMV9VUklfVkFMVUVfU0VQ QVJBVE9SICI9IgorKyNkZWZpbmUgUEtDUzExX1VSSV9JRCAiaWQiCisrI2RlZmluZSBQS0NTMTFf VVJJX1RPS0VOICJ0b2tlbiIKKysjZGVmaW5lIFBLQ1MxMV9VUklfT0JKRUNUICJvYmplY3QiCisr I2RlZmluZSBQS0NTMTFfVVJJX0xJQl9NQU5VRiAibGlicmFyeS1tYW51ZmFjdHVyZXIiCisrI2Rl ZmluZSBQS0NTMTFfVVJJX01BTlVGICJtYW51ZmFjdHVyZXIiCisrI2RlZmluZSBQS0NTMTFfVVJJ X1NFUklBTCAic2VyaWFsIgorKyNkZWZpbmUgUEtDUzExX1VSSV9NT0RVTEVfUEFUSCAibW9kdWxl LXBhdGgiCisrI2RlZmluZSBQS0NTMTFfVVJJX1BJTl9WQUxVRSAicGluLXZhbHVlIgorKworKy8q IEtleXdvcmQgdG9rZW5zLiAqLworK3R5cGVkZWYgZW51bSB7CisrCXBJZCwgcFRva2VuLCBwT2Jq ZWN0LCBwTGlicmFyeU1hbnVmYWN0dXJlciwgcE1hbnVmYWN0dXJlciwgcFNlcmlhbCwKKysJcE1v ZHVsZVBhdGgsIHBQaW5WYWx1ZSwgcEJhZE9wdGlvbgorK30gcGtjczExdXJpT3BDb2RlczsKKysK KysvKiBUZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0b2tlbnMuICovCisrc3RhdGljIHN0 cnVjdCB7CisrCWNvbnN0IGNoYXIgKm5hbWU7CisrCXBrY3MxMXVyaU9wQ29kZXMgb3Bjb2RlOwor K30ga2V5d29yZHNbXSA9IHsKKysJeyBQS0NTMTFfVVJJX0lELCBwSWQgfSwKKysJeyBQS0NTMTFf VVJJX1RPS0VOLCBwVG9rZW4gfSwKKysJeyBQS0NTMTFfVVJJX09CSkVDVCwgcE9iamVjdCB9LAor Kwl7IFBLQ1MxMV9VUklfTElCX01BTlVGLCBwTGlicmFyeU1hbnVmYWN0dXJlciB9LAorKwl7IFBL Q1MxMV9VUklfTUFOVUYsIHBNYW51ZmFjdHVyZXIgfSwKKysJeyBQS0NTMTFfVVJJX1NFUklBTCwg cFNlcmlhbCB9LAorKwl7IFBLQ1MxMV9VUklfTU9EVUxFX1BBVEgsIHBNb2R1bGVQYXRoIH0sCisr CXsgUEtDUzExX1VSSV9QSU5fVkFMVUUsIHBQaW5WYWx1ZSB9LAorKwl7IE5VTEwsIHBCYWRPcHRp b24gfQorK307CisrCisrc3RhdGljIHBrY3MxMXVyaU9wQ29kZXMKKytwYXJzZV90b2tlbihjb25z dCBjaGFyICpjcCkKKyt7CisrCXVfaW50IGk7CisrCisrCWZvciAoaSA9IDA7IGtleXdvcmRzW2ld Lm5hbWU7IGkrKykKKysJCWlmIChzdHJuY2FzZWNtcChjcCwga2V5d29yZHNbaV0ubmFtZSwKKysJ CSAgICBzdHJsZW4oa2V5d29yZHNbaV0ubmFtZSkpID09IDApCisrCQkJcmV0dXJuIGtleXdvcmRz W2ldLm9wY29kZTsKKysKKysJcmV0dXJuIHBCYWRPcHRpb247CisrfQorKworK2ludAorK3BlcmNl bnRfZGVjb2RlKGNoYXIgKmRhdGEsIGNoYXIgKipvdXRwKQorK3sKKysJY2hhciB0bXBbM107Cisr CWNoYXIgKm91dCwgKnRtcF9lbmQ7CisrCWNoYXIgKnAgPSBkYXRhOworKwlsb25nIHZhbHVlOwor KwlzaXplX3Qgb3V0bGVuID0gMDsKKysKKysJb3V0ID0gbWFsbG9jKHN0cmxlbihkYXRhKSsxKTsg LyogdXBwZXIgYm91bmQgKi8KKysJaWYgKG91dCA9PSBOVUxMKQorKwkJcmV0dXJuIC0xOworKwl3 aGlsZSAoKnAgIT0gJ1wwJykgeworKwkJc3dpdGNoICgqcCkgeworKwkJY2FzZSAnJSc6CisrCQkJ cCsrOworKwkJCWlmICgqcCA9PSAnXDAnKQorKwkJCQlnb3RvIGZhaWw7CisrCQkJdG1wWzBdID0g KnArKzsKKysJCQlpZiAoKnAgPT0gJ1wwJykKKysJCQkJZ290byBmYWlsOworKwkJCXRtcFsxXSA9 ICpwKys7CisrCQkJdG1wWzJdID0gJ1wwJzsKKysJCQl0bXBfZW5kID0gTlVMTDsKKysJCQl2YWx1 ZSA9IHN0cnRvbCh0bXAsICZ0bXBfZW5kLCAxNik7CisrCQkJaWYgKHRtcF9lbmQgIT0gdG1wKzIp CisrCQkJCWdvdG8gZmFpbDsKKysJCQllbHNlCisrCQkJCW91dFtvdXRsZW4rK10gPSAoY2hhcikg dmFsdWU7CisrCQkJYnJlYWs7CisrCQlkZWZhdWx0OgorKwkJCW91dFtvdXRsZW4rK10gPSAqcCsr OworKwkJCWJyZWFrOworKwkJfQorKwl9CisrCisrCS8qIHplcm8gdGVybWluYXRlICovCisrCW91 dFtvdXRsZW5dID0gJ1wwJzsKKysJKm91dHAgPSBvdXQ7CisrCXJldHVybiBvdXRsZW47CisrZmFp bDoKKysJZnJlZShvdXQpOworKwlyZXR1cm4gLTE7CisrfQorKworK3N0cnVjdCBzc2hidWYgKgor K3BlcmNlbnRfZW5jb2RlKGNvbnN0IGNoYXIgKmRhdGEsIHNpemVfdCBsZW5ndGgsIGNvbnN0IGNo YXIgKmFsbG93X2xpc3QpCisreworKwlzdHJ1Y3Qgc3NoYnVmICpiID0gTlVMTDsKKysJY2hhciB0 bXBbNF0sICpjcDsKKysJc2l6ZV90IGk7CisrCisrCWlmICgoYiA9IHNzaGJ1Zl9uZXcoKSkgPT0g TlVMTCkKKysJCXJldHVybiBOVUxMOworKwlmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsK KysJCWNwID0gc3RyY2hyKGFsbG93X2xpc3QsIGRhdGFbaV0pOworKwkJLyogaWYgYyBpcyBzcGVj aWZpZWQgYXMgJ1wwJyBwb2ludGVyIHRvIHRlcm1pbmF0b3IgaXMgcmV0dXJuZWQgISEgKi8KKysJ CWlmIChjcCAhPSBOVUxMICYmICpjcCAhPSAnXDAnKSB7CisrCQkJaWYgKHNzaGJ1Zl9wdXQoYiwg JmRhdGFbaV0sIDEpICE9IDApCisrCQkJCWdvdG8gZXJyOworKwkJfSBlbHNlCisrCQkJaWYgKHNu cHJpbnRmKHRtcCwgNCwgIiUlJTAyWCIsICh1bnNpZ25lZCBjaGFyKSBkYXRhW2ldKSA8IDMKKysJ CQkgICAgfHwgc3NoYnVmX3B1dChiLCB0bXAsIDMpICE9IDApCisrCQkJCWdvdG8gZXJyOworKwl9 CisrCWlmIChzc2hidWZfcHV0KGIsICJcMCIsIDEpID09IDApCisrCQlyZXR1cm4gYjsKKytlcnI6 CisrCXNzaGJ1Zl9mcmVlKGIpOworKwlyZXR1cm4gTlVMTDsKKyt9CisrCisrY2hhciAqCisrcGtj czExX3VyaV9hcHBlbmQoY2hhciAqcGFydCwgY29uc3QgY2hhciAqc2VwYXJhdG9yLCBjb25zdCBj aGFyICprZXksCisrICAgIHN0cnVjdCBzc2hidWYgKnZhbHVlKQorK3sKKysJY2hhciAqbmV3X3Bh cnQ7CisrCXNpemVfdCBzaXplID0gMDsKKysKKysJaWYgKHZhbHVlID09IE5VTEwpCisrCQlyZXR1 cm4gTlVMTDsKKysKKysJc2l6ZSA9IGFzcHJpbnRmKCZuZXdfcGFydCwKKysJICAgICIlcyVzJXMi ICBQS0NTMTFfVVJJX1ZBTFVFX1NFUEFSQVRPUiAiJXMiLAorKwkgICAgKHBhcnQgIT0gTlVMTCA/ IHBhcnQgOiAiIiksCisrCSAgICAocGFydCAhPSBOVUxMID8gc2VwYXJhdG9yIDogIiIpLAorKwkg ICAga2V5LCBzc2hidWZfcHRyKHZhbHVlKSk7CisrCXNzaGJ1Zl9mcmVlKHZhbHVlKTsKKysJZnJl ZShwYXJ0KTsKKysKKysJaWYgKHNpemUgPD0gMCkKKysJCXJldHVybiBOVUxMOworKwlyZXR1cm4g bmV3X3BhcnQ7CisrfQorKworK2NoYXIgKgorK3BrY3MxMV91cmlfZ2V0KHN0cnVjdCBwa2NzMTFf dXJpICp1cmkpCisreworKwlzaXplX3Qgc2l6ZSA9IDA7CisrCWNoYXIgKnAgPSBOVUxMLCAqcGF0 aCA9IE5VTEwsICpxdWVyeSA9IE5VTEw7CisrCisrCS8qIGNvbXBvc2UgYSBwZXJjZW50LWVuY29k ZWQgSUQgKi8KKysJaWYgKHVyaS0+aWRfbGVuID4gMCkgeworKwkJc3RydWN0IHNzaGJ1ZiAqa2V5 X2lkID0gcGVyY2VudF9lbmNvZGUodXJpLT5pZCwgdXJpLT5pZF9sZW4sICIiKTsKKysJCXBhdGgg PSBwa2NzMTFfdXJpX2FwcGVuZChwYXRoLCBQS0NTMTFfVVJJX1BBVEhfU0VQQVJBVE9SLAorKwkJ ICAgIFBLQ1MxMV9VUklfSUQsIGtleV9pZCk7CisrCQlpZiAocGF0aCA9PSBOVUxMKQorKwkJCWdv dG8gZXJyOworKwl9CisrCisrCS8qIFdyaXRlIG9iamVjdCBsYWJlbCAqLworKwlpZiAodXJpLT5v YmplY3QpIHsKKysJCXN0cnVjdCBzc2hidWYgKmxhYmVsID0gcGVyY2VudF9lbmNvZGUodXJpLT5v YmplY3QsIHN0cmxlbih1cmktPm9iamVjdCksCisrCQkgICAgUEtDUzExX1VSSV9XSElURUxJU1Qp OworKwkJcGF0aCA9IHBrY3MxMV91cmlfYXBwZW5kKHBhdGgsIFBLQ1MxMV9VUklfUEFUSF9TRVBB UkFUT1IsCisrCQkgICAgUEtDUzExX1VSSV9PQkpFQ1QsIGxhYmVsKTsKKysJCWlmIChwYXRoID09 IE5VTEwpCisrCQkJZ290byBlcnI7CisrCX0KKysKKysJLyogV3JpdGUgdG9rZW4gbGFiZWwgKi8K KysJaWYgKHVyaS0+dG9rZW4pIHsKKysJCXN0cnVjdCBzc2hidWYgKmxhYmVsID0gcGVyY2VudF9l bmNvZGUodXJpLT50b2tlbiwgc3RybGVuKHVyaS0+dG9rZW4pLAorKwkJICAgIFBLQ1MxMV9VUklf V0hJVEVMSVNUKTsKKysJCXBhdGggPSBwa2NzMTFfdXJpX2FwcGVuZChwYXRoLCBQS0NTMTFfVVJJ X1BBVEhfU0VQQVJBVE9SLAorKwkJICAgIFBLQ1MxMV9VUklfVE9LRU4sIGxhYmVsKTsKKysJCWlm IChwYXRoID09IE5VTEwpCisrCQkJZ290byBlcnI7CisrCX0KKysKKysJLyogV3JpdGUgbWFudWZh Y3R1cmVyICovCisrCWlmICh1cmktPm1hbnVmKSB7CisrCQlzdHJ1Y3Qgc3NoYnVmICptYW51ZiA9 IHBlcmNlbnRfZW5jb2RlKHVyaS0+bWFudWYsCisrCQkgICAgc3RybGVuKHVyaS0+bWFudWYpLCBQ S0NTMTFfVVJJX1dISVRFTElTVCk7CisrCQlwYXRoID0gcGtjczExX3VyaV9hcHBlbmQocGF0aCwg UEtDUzExX1VSSV9QQVRIX1NFUEFSQVRPUiwKKysJCSAgICBQS0NTMTFfVVJJX01BTlVGLCBtYW51 Zik7CisrCQlpZiAocGF0aCA9PSBOVUxMKQorKwkJCWdvdG8gZXJyOworKwl9CisrCisrCS8qIFdy aXRlIHNlcmlhbCAqLworKwlpZiAodXJpLT5zZXJpYWwpIHsKKysJCXN0cnVjdCBzc2hidWYgKnNl cmlhbCA9IHBlcmNlbnRfZW5jb2RlKHVyaS0+c2VyaWFsLAorKwkJICAgIHN0cmxlbih1cmktPnNl cmlhbCksIFBLQ1MxMV9VUklfV0hJVEVMSVNUKTsKKysJCXBhdGggPSBwa2NzMTFfdXJpX2FwcGVu ZChwYXRoLCBQS0NTMTFfVVJJX1BBVEhfU0VQQVJBVE9SLAorKwkJICAgIFBLQ1MxMV9VUklfU0VS SUFMLCBzZXJpYWwpOworKwkJaWYgKHBhdGggPT0gTlVMTCkKKysJCQlnb3RvIGVycjsKKysJfQor KworKwkvKiBXcml0ZSBtb2R1bGVfcGF0aCAqLworKwlpZiAodXJpLT5tb2R1bGVfcGF0aCkgewor KwkJc3RydWN0IHNzaGJ1ZiAqbW9kdWxlID0gcGVyY2VudF9lbmNvZGUodXJpLT5tb2R1bGVfcGF0 aCwKKysJCSAgICBzdHJsZW4odXJpLT5tb2R1bGVfcGF0aCksIFBLQ1MxMV9VUklfV0hJVEVMSVNU ICIvIik7CisrCQlxdWVyeSA9IHBrY3MxMV91cmlfYXBwZW5kKHF1ZXJ5LCBQS0NTMTFfVVJJX1FV RVJZX1NFUEFSQVRPUiwKKysJCSAgICBQS0NTMTFfVVJJX01PRFVMRV9QQVRILCBtb2R1bGUpOwor KwkJaWYgKHF1ZXJ5ID09IE5VTEwpCisrCQkJZ290byBlcnI7CisrCX0KKysKKysJc2l6ZSA9IGFz cHJpbnRmKCZwLCBQS0NTMTFfVVJJX1NDSEVNRSAiJXMlcyVzIiwKKysJICAgIHBhdGggIT0gTlVM TCA/IHBhdGggOiAiIiwKKysJICAgIHF1ZXJ5ICE9IE5VTEwgPyAiPyIgOiAiIiwKKysJICAgIHF1 ZXJ5ICE9IE5VTEwgPyBxdWVyeSA6ICIiKTsKKytlcnI6CisrCWZyZWUocXVlcnkpOworKwlmcmVl KHBhdGgpOworKwlpZiAoc2l6ZSA8PSAwKQorKwkJcmV0dXJuIE5VTEw7CisrCXJldHVybiBwOwor K30KKysKKytzdHJ1Y3QgcGtjczExX3VyaSAqCisrcGtjczExX3VyaV9pbml0KCkKKyt7CisrCXN0 cnVjdCBwa2NzMTFfdXJpICpkID0gY2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgcGtjczExX3VyaSkp OworKwlyZXR1cm4gZDsKKyt9CisrCisrdm9pZAorK3BrY3MxMV91cmlfY2xlYW51cChzdHJ1Y3Qg cGtjczExX3VyaSAqcGtjczExKQorK3sKKysJaWYgKHBrY3MxMSA9PSBOVUxMKSB7CisrCQlyZXR1 cm47CisrCX0KKysKKysJZnJlZShwa2NzMTEtPmlkKTsKKysJZnJlZShwa2NzMTEtPm1vZHVsZV9w YXRoKTsKKysJZnJlZShwa2NzMTEtPnRva2VuKTsKKysJZnJlZShwa2NzMTEtPm9iamVjdCk7Cisr CWZyZWUocGtjczExLT5saWJfbWFudWYpOworKwlmcmVlKHBrY3MxMS0+bWFudWYpOworKwlmcmVl KHBrY3MxMS0+c2VyaWFsKTsKKysJaWYgKHBrY3MxMS0+cGluKQorKwkJZnJlZXplcm8ocGtjczEx LT5waW4sIHN0cmxlbihwa2NzMTEtPnBpbikpOworKwlmcmVlKHBrY3MxMSk7CisrfQorKworK2lu dAorK3BrY3MxMV91cmlfcGFyc2UoY29uc3QgY2hhciAqdXJpLCBzdHJ1Y3QgcGtjczExX3VyaSAq cGtjczExKQorK3sKKysJY2hhciAqc2F2ZXB0cjEsICpzYXZlcHRyMiwgKnN0cjEsICpzdHIyLCAq dG9rOworKwlpbnQgcnYgPSAwLCBsZW47CisrCWNoYXIgKnAgPSBOVUxMOworKworKwlzaXplX3Qg c2NoZW1lX2xlbiA9IHN0cmxlbihQS0NTMTFfVVJJX1NDSEVNRSk7CisrCWlmIChzdHJsZW4odXJp KSA8IHNjaGVtZV9sZW4gfHwgLyogZW1wdHkgVVJJIG1hdGNoZXMgZXZlcnl0aGluZyAqLworKwkg ICAgc3RybmNtcCh1cmksIFBLQ1MxMV9VUklfU0NIRU1FLCBzY2hlbWVfbGVuKSAhPSAwKSB7Cisr CQllcnJvcl9mKCJUaGUgJyVzJyBkb2VzIG5vdCBsb29rIGxpa2UgUEtDUyMxMSBVUkkiLCB1cmkp OworKwkJcmV0dXJuIC0xOworKwl9CisrCisrCWlmIChwa2NzMTEgPT0gTlVMTCkgeworKwkJZXJy b3JfZigiQmFkIGFyZ3VtZW50cy4gVGhlIHBrY3MxMSBjYW4ndCBiZSBudWxsIik7CisrCQlyZXR1 cm4gLTE7CisrCX0KKysKKysJLyogc2tpcCBVUkkgc2NoZW1hIG5hbWUgKi8KKysJcCA9IHN0cmR1 cCh1cmkpOworKwlzdHIxID0gcDsKKysKKysJLyogZXZlcnl0aGluZyBiZWZvcmUgPyAqLworKwl0 b2sgPSBzdHJ0b2tfcihzdHIxLCAiPyIsICZzYXZlcHRyMSk7CisrCWlmICh0b2sgPT0gTlVMTCkg eworKwkJZXJyb3JfZigicGsxMS1wYXRoIGV4cGVjdGVkLCBnb3QgRU9GIik7CisrCQlydiA9IC0x OworKwkJZ290byBvdXQ7CisrCX0KKysKKysJLyogc2tpcCBVUkkgc2NoZW1hIG5hbWU6CisrCSAq IHRoZSBzY2hlbWUgZW5zdXJlcyB0aGF0IHRoZXJlIGlzIGF0IGxlYXN0IHNvbWV0aGluZyBiZWZv cmUgIj8iCisrCSAqIGFsbG93aW5nIGVtcHR5IHBrMTEtcGF0aC4gUmVzdWx0aW5nIHRva2VuIGF0 IHdvcnN0IHBvaW50aW5nIHRvCisrCSAqIFwwIGJ5dGUgKi8KKysJdG9rID0gdG9rICsgc2NoZW1l X2xlbjsKKysKKysJLyogcGFyc2UgcGsxMS1wYXRoICovCisrCWZvciAoc3RyMiA9IHRvazsgOyBz dHIyID0gTlVMTCkgeworKwkJY2hhciAqKmNoYXJwdHIsICphcmcgPSBOVUxMOworKwkJcGtjczEx dXJpT3BDb2RlcyBvcGNvZGU7CisrCQl0b2sgPSBzdHJ0b2tfcihzdHIyLCBQS0NTMTFfVVJJX1BB VEhfU0VQQVJBVE9SLCAmc2F2ZXB0cjIpOworKwkJaWYgKHRvayA9PSBOVUxMKQorKwkJCWJyZWFr OworKwkJb3Bjb2RlID0gcGFyc2VfdG9rZW4odG9rKTsKKysJCWlmIChvcGNvZGUgIT0gcEJhZE9w dGlvbikKKysJCQlhcmcgPSB0b2sgKyBzdHJsZW4oa2V5d29yZHNbb3Bjb2RlXS5uYW1lKSArIDE7 IC8qIHNlcGFyYXRvciAiPSIgKi8KKysKKysJCXN3aXRjaCAob3Bjb2RlKSB7CisrCQljYXNlIHBJ ZDoKKysJCQkvKiBDS0FfSUQgKi8KKysJCQlpZiAocGtjczExLT5pZCAhPSBOVUxMKSB7CisrCQkJ CXZlcmJvc2VfZigiVGhlIGlkIGFscmVhZHkgc2V0IGluIHRoZSBQS0NTIzExIFVSSSIpOworKwkJ CQlydiA9IC0xOworKwkJCQlnb3RvIG91dDsKKysJCQl9CisrCQkJbGVuID0gcGVyY2VudF9kZWNv ZGUoYXJnLCAmcGtjczExLT5pZCk7CisrCQkJaWYgKGxlbiA8PSAwKSB7CisrCQkJCXZlcmJvc2Vf ZigiRmFpbGVkIHRvIHBlcmNlbnQtZGVjb2RlIENLQV9JRDogJXMiLCBhcmcpOworKwkJCQlydiA9 IC0xOworKwkJCQlnb3RvIG91dDsKKysJCQl9IGVsc2UKKysJCQkJcGtjczExLT5pZF9sZW4gPSBs ZW47CisrCQkJZGVidWczX2YoIlNldHRpbmcgQ0tBX0lEID0gJXMgZnJvbSBQS0NTIzExIFVSSSIs IGFyZyk7CisrCQkJYnJlYWs7CisrCQljYXNlIHBUb2tlbjoKKysJCQkvKiBDS19UT0tFTl9JTkZP IC0+IGxhYmVsICovCisrCQkJY2hhcnB0ciA9ICZwa2NzMTEtPnRva2VuOworKyBwYXJzZV9zdHJp bmc6CisrCQkJaWYgKCpjaGFycHRyICE9IE5VTEwpIHsKKysJCQkJdmVyYm9zZV9mKCJUaGUgJXMg YWxyZWFkeSBzZXQgaW4gdGhlIFBLQ1MjMTEgVVJJIiwKKysJCQkJICAgIGtleXdvcmRzW29wY29k ZV0ubmFtZSk7CisrCQkJCXJ2ID0gLTE7CisrCQkJCWdvdG8gb3V0OworKwkJCX0KKysJCQlwZXJj ZW50X2RlY29kZShhcmcsIGNoYXJwdHIpOworKwkJCWRlYnVnM19mKCJTZXR0aW5nICVzID0gJXMg ZnJvbSBQS0NTIzExIFVSSSIsCisrCQkJICAgIGtleXdvcmRzW29wY29kZV0ubmFtZSwgKmNoYXJw dHIpOworKwkJCWJyZWFrOworKworKwkJY2FzZSBwT2JqZWN0OgorKwkJCS8qIENLX1RPS0VOX0lO Rk8gLT4gbWFudWZhY3R1cmVySUQgKi8KKysJCQljaGFycHRyID0gJnBrY3MxMS0+b2JqZWN0Owor KwkJCWdvdG8gcGFyc2Vfc3RyaW5nOworKworKwkJY2FzZSBwTWFudWZhY3R1cmVyOgorKwkJCS8q IENLX1RPS0VOX0lORk8gLT4gbWFudWZhY3R1cmVySUQgKi8KKysJCQljaGFycHRyID0gJnBrY3Mx MS0+bWFudWY7CisrCQkJZ290byBwYXJzZV9zdHJpbmc7CisrCisrCQljYXNlIHBTZXJpYWw6Cisr CQkJLyogQ0tfVE9LRU5fSU5GTyAtPiBzZXJpYWxOdW1iZXIgKi8KKysJCQljaGFycHRyID0gJnBr Y3MxMS0+c2VyaWFsOworKwkJCWdvdG8gcGFyc2Vfc3RyaW5nOworKworKwkJY2FzZSBwTGlicmFy eU1hbnVmYWN0dXJlcjoKKysJCQkvKiBDS19JTkZPIC0+IG1hbnVmYWN0dXJlcklEICovCisrCQkJ Y2hhcnB0ciA9ICZwa2NzMTEtPmxpYl9tYW51ZjsKKysJCQlnb3RvIHBhcnNlX3N0cmluZzsKKysK KysJCWRlZmF1bHQ6CisrCQkJLyogVW5yZWNvZ25pemVkIGF0dHJpYnV0ZSBpbiB0aGUgVVJJIHBh dGggU0hPVUxEIGJlIGVycm9yICovCisrCQkJdmVyYm9zZV9mKCJVbmtub3duIHBhcnQgb2YgcGF0 aCBpbiBQS0NTIzExIFVSSTogJXMiLCB0b2spOworKwkJfQorKwl9CisrCisrCXRvayA9IHN0cnRv a19yKE5VTEwsICI/IiwgJnNhdmVwdHIxKTsKKysJaWYgKHRvayA9PSBOVUxMKSB7CisrCQlnb3Rv IG91dDsKKysJfQorKwkvKiBwYXJzZSBwazExLXF1ZXJ5IChvcHRpb25hbCkgKi8KKysJZm9yIChz dHIyID0gdG9rOyA7IHN0cjIgPSBOVUxMKSB7CisrCQljaGFyICphcmc7CisrCQlwa2NzMTF1cmlP cENvZGVzIG9wY29kZTsKKysJCXRvayA9IHN0cnRva19yKHN0cjIsIFBLQ1MxMV9VUklfUVVFUllf U0VQQVJBVE9SLCAmc2F2ZXB0cjIpOworKwkJaWYgKHRvayA9PSBOVUxMKQorKwkJCWJyZWFrOwor KwkJb3Bjb2RlID0gcGFyc2VfdG9rZW4odG9rKTsKKysJCWlmIChvcGNvZGUgIT0gcEJhZE9wdGlv bikKKysJCQlhcmcgPSB0b2sgKyBzdHJsZW4oa2V5d29yZHNbb3Bjb2RlXS5uYW1lKSArIDE7IC8q IHNlcGFyYXRvciAiPSIgKi8KKysKKysJCXN3aXRjaCAob3Bjb2RlKSB7CisrCQljYXNlIHBNb2R1 bGVQYXRoOgorKwkJCS8qIG1vZHVsZS1wYXRoIGlzIFBLQ1MxMVByb3ZpZGVyICovCisrCQkJaWYg KHBrY3MxMS0+bW9kdWxlX3BhdGggIT0gTlVMTCkgeworKwkJCQl2ZXJib3NlX2YoIk11bHRpcGxl IG1vZHVsZS1wYXRoIGF0dHJpYnV0ZXMgYXJlIgorKwkJCQkgICAgIm5vdCBzdXBwb3J0ZWQgdGhl IFBLQ1MjMTEgVVJJIik7CisrCQkJCXJ2ID0gLTE7CisrCQkJCWdvdG8gb3V0OworKwkJCX0KKysJ CQlwZXJjZW50X2RlY29kZShhcmcsICZwa2NzMTEtPm1vZHVsZV9wYXRoKTsKKysJCQlkZWJ1ZzNf ZigiU2V0dGluZyBQS0NTMTFQcm92aWRlciA9ICVzIGZyb20gUEtDUyMxMSBVUkkiLAorKwkJCSAg ICBwa2NzMTEtPm1vZHVsZV9wYXRoKTsKKysJCQlicmVhazsKKysKKysJCWNhc2UgcFBpblZhbHVl OgorKwkJCS8qIHBpbi12YWx1ZSAqLworKwkJCWlmIChwa2NzMTEtPnBpbiAhPSBOVUxMKSB7Cisr CQkJCXZlcmJvc2VfZigiTXVsdGlwbGUgcGluLXZhbHVlIGF0dHJpYnV0ZXMgYXJlIgorKwkJCQkg ICAgIm5vdCBzdXBwb3J0ZWQgdGhlIFBLQ1MjMTEgVVJJIik7CisrCQkJCXJ2ID0gLTE7CisrCQkJ CWdvdG8gb3V0OworKwkJCX0KKysJCQlwZXJjZW50X2RlY29kZShhcmcsICZwa2NzMTEtPnBpbik7 CisrCQkJZGVidWczX2YoIlNldHRpbmcgUElOIGZyb20gUEtDUyMxMSBVUkkiKTsKKysJCQlicmVh azsKKysKKysJCWRlZmF1bHQ6CisrCQkJLyogVW5yZWNvZ25pemVkIGF0dHJpYnV0ZSBpbiB0aGUg VVJJIHF1ZXJ5IFNIT1VMRCBiZSBpZ25vcmVkICovCisrCQkJdmVyYm9zZV9mKCJVbmtub3duIHBh cnQgb2YgcXVlcnkgaW4gUEtDUyMxMSBVUkk6ICVzIiwgdG9rKTsKKysJCX0KKysJfQorK291dDoK KysJZnJlZShwKTsKKysJcmV0dXJuIHJ2OworK30KKysKKysjZW5kaWYgLyogRU5BQkxFX1BLQ1Mx MSAqLworZGlmZiAtLWdpdCBhL3NzaC1wa2NzMTEtdXJpLmggYi9zc2gtcGtjczExLXVyaS5oCitu ZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwLi5iYzc1OGU3NjAKKy0tLSAvZGV2 L251bGwKKysrKyBiL3NzaC1wa2NzMTEtdXJpLmgKK0BAIC0wLDAgKzEsNDYgQEAKKysvKgorKyAq IENvcHlyaWdodCAoYykgMjAxNyBSZWQgSGF0CisrICoKKysgKiBBdXRob3JzOiBKYWt1YiBKZWxl biA8amplbGVuQHJlZGhhdC5jb20+CisrICoKKysgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwg bW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKKysgKiBwdXJwb3Nl IHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhl IGFib3ZlCisrICogY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBh cHBlYXIgaW4gYWxsIGNvcGllcy4KKysgKgorKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi QVMgSVMiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUworKyAqIFdJVEgg UkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMg T0YKKysgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRI RSBBVVRIT1IgQkUgTElBQkxFIEZPUgorKyAqIEFOWSBTUEVDSUFMLCBESVJFQ1QsIElORElSRUNU LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMKKysgKiBXSEFUU09FVkVS IFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4g QU4KKysgKiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMg QUNUSU9OLCBBUklTSU5HIE9VVCBPRgorKyAqIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNF IE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCisrICovCisrCisrI2lmbmRlZiBfU1NI X1BLQ1MxMV9VUklfSAorKyNkZWZpbmUgX1NTSF9QS0NTMTFfVVJJX0gKKysKKysjZGVmaW5lIFBL Q1MxMV9VUklfU0NIRU1FICJwa2NzMTE6IgorKyNkZWZpbmUgUEtDUzExX1VSSV9XSElURUxJU1QJ ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IiBcCisrCQkJCSJBQkNERUZHSElKS0xNTk9QUVJT VFVWV1hZWiIgXAorKwkJCQkiMDEyMzQ1Njc4OV8tLigpIgorKworK3N0cnVjdCBwa2NzMTFfdXJp IHsKKysJLyogcGF0aCAqLworKwljaGFyICppZDsKKysJc2l6ZV90IGlkX2xlbjsKKysJY2hhciAq dG9rZW47CisrCWNoYXIgKm9iamVjdDsKKysJY2hhciAqbGliX21hbnVmOworKwljaGFyICptYW51 ZjsKKysJY2hhciAqc2VyaWFsOworKwkvKiBxdWVyeSAqLworKwljaGFyICptb2R1bGVfcGF0aDsK KysJY2hhciAqcGluOyAvKiBPbmx5IHBhcnNlZCwgYnV0IG5vdCBwcmludGVkICovCisrfTsKKysK KytzdHJ1Y3QJIHBrY3MxMV91cmkgKnBrY3MxMV91cmlfaW5pdCgpOworK3ZvaWQJIHBrY3MxMV91 cmlfY2xlYW51cChzdHJ1Y3QgcGtjczExX3VyaSAqKTsKKytpbnQJIHBrY3MxMV91cmlfcGFyc2Uo Y29uc3QgY2hhciAqLCBzdHJ1Y3QgcGtjczExX3VyaSAqKTsKKytzdHJ1Y3QJIHBrY3MxMV91cmkg KnBrY3MxMV91cmlfaW5pdCgpOworK2NoYXIJKnBrY3MxMV91cmlfZ2V0KHN0cnVjdCBwa2NzMTFf dXJpICp1cmkpOworKyNlbmRpZiAvKiBfU1NIX1BLQ1MxMV9VUklfSCAqLworZGlmZiAtLWdpdCBh L3NzaC1wa2NzMTEuYyBiL3NzaC1wa2NzMTEuYworaW5kZXggN2E3ZDNiOGVhLi42ZjIzZmMzOGIg MTAwNjQ0CistLS0gYS9zc2gtcGtjczExLmMKKysrKyBiL3NzaC1wa2NzMTEuYworQEAgLTM2LDYg KzM2LDcgQEAKKyAjaW5jbHVkZSA8b3BlbnNzbC9lY2RzYS5oPgorICNpbmNsdWRlIDxvcGVuc3Ns L3g1MDkuaD4KKyAjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9l dnAuaD4KKyAjZW5kaWYKKyAKKyAjZGVmaW5lIENSWVBUT0tJX0NPTVBBVAorQEAgLTQ4LDYgKzQ5 LDcgQEAKKyAjaW5jbHVkZSAibWlzYy5oIgorICNpbmNsdWRlICJzc2hidWYuaCIKKyAjaW5jbHVk ZSAic3NoLXBrY3MxMS5oIgorKyNpbmNsdWRlICJzc2gtcGtjczExLXVyaS5oIgorICNpbmNsdWRl ICJkaWdlc3QuaCIKKyAjaW5jbHVkZSAieG1hbGxvYy5oIgorICNpbmNsdWRlICJjcnlwdG9fYXBp LmgiCitAQCAtNTgsOCArNjAsOCBAQCBzdHJ1Y3QgcGtjczExX3Nsb3RpbmZvIHsKKyAJaW50CQkJ bG9nZ2VkX2luOworIH07CisgCistc3RydWN0IHBrY3MxMV9wcm92aWRlciB7CistCWNoYXIJCQkq bmFtZTsKKytzdHJ1Y3QgcGtjczExX21vZHVsZSB7CisrCWNoYXIJCQkqbW9kdWxlX3BhdGg7Cisg CXZvaWQJCQkqaGFuZGxlOworIAlDS19GVU5DVElPTl9MSVNUCSpmdW5jdGlvbl9saXN0OworIAlD S19JTkZPCQkJaW5mbzsKK0BAIC02OCw2ICs3MCwxMyBAQCBzdHJ1Y3QgcGtjczExX3Byb3ZpZGVy IHsKKyAJc3RydWN0IHBrY3MxMV9zbG90aW5mbwkqc2xvdGluZm87CisgCWludAkJCXZhbGlkOwor IAlpbnQJCQlyZWZjb3VudDsKKyt9OworKworK3N0cnVjdCBwa2NzMTFfcHJvdmlkZXIgeworKwlj aGFyCQkJKm5hbWU7CisrCXN0cnVjdCBwa2NzMTFfbW9kdWxlCSptb2R1bGU7IC8qIGNhbiBiZSBz aGFyZWQgYmV0d2VlbiB2YXJpb3VzIHByb3ZpZGVycyAqLworKwlpbnQJCQlyZWZjb3VudDsKKysJ aW50CQkJdmFsaWQ7CisgCVRBSUxRX0VOVFJZKHBrY3MxMV9wcm92aWRlcikgbmV4dDsKKyB9Owor IAorQEAgLTc5LDYgKzg4LDcgQEAgc3RydWN0IHBrY3MxMV9rZXkgeworIAlDS19VTE9ORwkJc2xv dGlkeDsKKyAJY2hhcgkJCSprZXlpZDsKKyAJaW50CQkJa2V5aWRfbGVuOworKwljaGFyCQkJKmxh YmVsOworIAlUQUlMUV9FTlRSWShwa2NzMTFfa2V5KQluZXh0OworIH07CisgCitAQCAtMTA1LDI2 ICsxMTUsNjEgQEAgb3NzbF9lcnJvcihjb25zdCBjaGFyICptc2cpCisgICogdGhpcyBpcyBjYWxs ZWQgd2hlbiBhIHByb3ZpZGVyIGdldHMgdW5yZWdpc3RlcmVkLgorICAqLworIHN0YXRpYyB2b2lk CistcGtjczExX3Byb3ZpZGVyX2ZpbmFsaXplKHN0cnVjdCBwa2NzMTFfcHJvdmlkZXIgKnApCisr cGtjczExX21vZHVsZV9maW5hbGl6ZShzdHJ1Y3QgcGtjczExX21vZHVsZSAqbSkKKyB7CisgCUNL X1JWIHJ2OworIAlDS19VTE9ORyBpOworIAorLQlkZWJ1Z19mKCJwcm92aWRlciBcIiVzXCIgcmVm Y291bnQgJWQgdmFsaWQgJWQiLAorLQkgICAgcC0+bmFtZSwgcC0+cmVmY291bnQsIHAtPnZhbGlk KTsKKy0JaWYgKCFwLT52YWxpZCkKKysJZGVidWdfZigiJXAgcmVmY291bnQgJWQgdmFsaWQgJWQi LCBtLCBtLT5yZWZjb3VudCwgbS0+dmFsaWQpOworKwlpZiAoIW0tPnZhbGlkKQorIAkJcmV0dXJu OworLQlmb3IgKGkgPSAwOyBpIDwgcC0+bnNsb3RzOyBpKyspIHsKKy0JCWlmIChwLT5zbG90aW5m b1tpXS5zZXNzaW9uICYmCistCQkgICAgKHJ2ID0gcC0+ZnVuY3Rpb25fbGlzdC0+Q19DbG9zZVNl c3Npb24oCistCQkgICAgcC0+c2xvdGluZm9baV0uc2Vzc2lvbikpICE9IENLUl9PSykKKysJZm9y IChpID0gMDsgaSA8IG0tPm5zbG90czsgaSsrKSB7CisrCQlpZiAobS0+c2xvdGluZm9baV0uc2Vz c2lvbiAmJgorKwkJICAgIChydiA9IG0tPmZ1bmN0aW9uX2xpc3QtPkNfQ2xvc2VTZXNzaW9uKAor KwkJICAgIG0tPnNsb3RpbmZvW2ldLnNlc3Npb24pKSAhPSBDS1JfT0spCisgCQkJZXJyb3IoIkNf Q2xvc2VTZXNzaW9uIGZhaWxlZDogJWx1IiwgcnYpOworIAl9CistCWlmICgocnYgPSBwLT5mdW5j dGlvbl9saXN0LT5DX0ZpbmFsaXplKE5VTEwpKSAhPSBDS1JfT0spCisrCWlmICgocnYgPSBtLT5m dW5jdGlvbl9saXN0LT5DX0ZpbmFsaXplKE5VTEwpKSAhPSBDS1JfT0spCisgCQllcnJvcigiQ19G aW5hbGl6ZSBmYWlsZWQ6ICVsdSIsIHJ2KTsKKysJbS0+dmFsaWQgPSAwOworKwltLT5mdW5jdGlv bl9saXN0ID0gTlVMTDsKKysJZGxjbG9zZShtLT5oYW5kbGUpOworK30KKysKKysvKgorKyAqIHJl bW92ZSBhIHJlZmVyZW5jZSB0byB0aGUgcGtjczExIG1vZHVsZS4KKysgKiBjYWxsZWQgd2hlbiBh IHByb3ZpZGVyIGlzIHVucmVnaXN0ZXJlZC4KKysgKi8KKytzdGF0aWMgdm9pZAorK3BrY3MxMV9t b2R1bGVfdW5yZWYoc3RydWN0IHBrY3MxMV9tb2R1bGUgKm0pCisreworKwlkZWJ1Z19mKCIlcCBy ZWZjb3VudCAlZCIsIG0sIG0tPnJlZmNvdW50KTsKKysJaWYgKC0tbS0+cmVmY291bnQgPD0gMCkg eworKwkJcGtjczExX21vZHVsZV9maW5hbGl6ZShtKTsKKysJCWlmIChtLT52YWxpZCkKKysJCQll cnJvcl9mKCIlcCBzdGlsbCB2YWxpZCIsIG0pOworKwkJZnJlZShtLT5zbG90bGlzdCk7CisrCQlm cmVlKG0tPnNsb3RpbmZvKTsKKysJCWZyZWUobS0+bW9kdWxlX3BhdGgpOworKwkJZnJlZShtKTsK KysJfQorK30KKysKKysvKgorKyAqIGZpbmFsaXplIGEgcHJvdmlkZXIgc2hhcmVkIGxpYnJhcnks IGl0J3Mgbm8gbG9uZ2VyIHVzYWJsZS4KKysgKiBob3dldmVyLCB0aGVyZSBtaWdodCBzdGlsbCBi ZSBrZXlzIHJlZmVyZW5jaW5nIHRoaXMgcHJvdmlkZXIsCisrICogc28gdGhlIGFjdHVhbCBmcmVl aW5nIG9mIG1lbW9yeSBpcyBoYW5kbGVkIGJ5IHBrY3MxMV9wcm92aWRlcl91bnJlZigpLgorKyAq IHRoaXMgaXMgY2FsbGVkIHdoZW4gYSBwcm92aWRlciBnZXRzIHVucmVnaXN0ZXJlZC4KKysgKi8K KytzdGF0aWMgdm9pZAorK3BrY3MxMV9wcm92aWRlcl9maW5hbGl6ZShzdHJ1Y3QgcGtjczExX3By b3ZpZGVyICpwKQorK3sKKysJZGVidWdfZigiJXAgcmVmY291bnQgJWQgdmFsaWQgJWQiLCBwLCBw LT5yZWZjb3VudCwgcC0+dmFsaWQpOworKwlpZiAoIXAtPnZhbGlkKQorKwkJcmV0dXJuOworKwlw a2NzMTFfbW9kdWxlX3VucmVmKHAtPm1vZHVsZSk7CisrCXAtPm1vZHVsZSA9IE5VTEw7CisgCXAt PnZhbGlkID0gMDsKKy0JcC0+ZnVuY3Rpb25fbGlzdCA9IE5VTEw7CistCWRsY2xvc2UocC0+aGFu ZGxlKTsKKyB9CisgCisgLyoKK0BAIC0xMzYsMTUgKzE4MSwyNyBAQCBwa2NzMTFfcHJvdmlkZXJf dW5yZWYoc3RydWN0IHBrY3MxMV9wcm92aWRlciAqcCkKKyB7CisgCWRlYnVnX2YoInByb3ZpZGVy IFwiJXNcIiByZWZjb3VudCAlZCIsIHAtPm5hbWUsIHAtPnJlZmNvdW50KTsKKyAJaWYgKC0tcC0+ cmVmY291bnQgPD0gMCkgeworLQkJaWYgKHAtPnZhbGlkKQorLQkJCWVycm9yX2YoInByb3ZpZGVy IFwiJXNcIiBzdGlsbCB2YWxpZCIsIHAtPm5hbWUpOworIAkJZnJlZShwLT5uYW1lKTsKKy0JCWZy ZWUocC0+c2xvdGxpc3QpOworLQkJZnJlZShwLT5zbG90aW5mbyk7CisrCQlpZiAocC0+bW9kdWxl KQorKwkJCXBrY3MxMV9tb2R1bGVfdW5yZWYocC0+bW9kdWxlKTsKKyAJCWZyZWUocCk7CisgCX0K KyB9CisgCisrLyogbG9va3VwIHByb3ZpZGVyIGJ5IG1vZHVsZSBwYXRoICovCisrc3RhdGljIHN0 cnVjdCBwa2NzMTFfbW9kdWxlICoKKytwa2NzMTFfcHJvdmlkZXJfbG9va3VwX21vZHVsZShjaGFy ICptb2R1bGVfcGF0aCkKKyt7CisrCXN0cnVjdCBwa2NzMTFfcHJvdmlkZXIgKnA7CisrCisrCVRB SUxRX0ZPUkVBQ0gocCwgJnBrY3MxMV9wcm92aWRlcnMsIG5leHQpIHsKKysJCWRlYnVnKCJjaGVj ayAlcCAlcyAoJXMpIiwgcCwgcC0+bmFtZSwgcC0+bW9kdWxlLT5tb2R1bGVfcGF0aCk7CisrCQlp ZiAoIXN0cmNtcChtb2R1bGVfcGF0aCwgcC0+bW9kdWxlLT5tb2R1bGVfcGF0aCkpCisrCQkJcmV0 dXJuIChwLT5tb2R1bGUpOworKwl9CisrCXJldHVybiAoTlVMTCk7CisrfQorKworIC8qIGxvb2t1 cCBwcm92aWRlciBieSBuYW1lICovCisgc3RhdGljIHN0cnVjdCBwa2NzMTFfcHJvdmlkZXIgKgor IHBrY3MxMV9wcm92aWRlcl9sb29rdXAoY2hhciAqcHJvdmlkZXJfaWQpCitAQCAtMTU5LDE5ICsy MTYsNTUgQEAgcGtjczExX3Byb3ZpZGVyX2xvb2t1cChjaGFyICpwcm92aWRlcl9pZCkKKyAJcmV0 dXJuIChOVUxMKTsKKyB9CisgCisraW50IHBrY3MxMV9kZWxfcHJvdmlkZXJfYnlfdXJpKHN0cnVj dCBwa2NzMTFfdXJpICopOworKworIC8qIHVucmVnaXN0ZXIgcHJvdmlkZXIgYnkgbmFtZSAqLwor IGludAorIHBrY3MxMV9kZWxfcHJvdmlkZXIoY2hhciAqcHJvdmlkZXJfaWQpCisreworKwlpbnQg cnY7CisrCXN0cnVjdCBwa2NzMTFfdXJpICp1cmk7CisrCisrCWRlYnVnX2YoImNhbGxlZCwgcHJv dmlkZXJfaWQgPSAlcyIsIHByb3ZpZGVyX2lkKTsKKysKKysgICAgICBpZiAocHJvdmlkZXJfaWQg PT0gTlVMTCkKKysgICAgICAgICAgcmV0dXJuIDA7CisrCisrCXVyaSA9IHBrY3MxMV91cmlfaW5p dCgpOworKwlpZiAodXJpID09IE5VTEwpCisrCQlmYXRhbCgiRmFpbGVkIHRvIGluaXQgUEtDUyMx MSBVUkkiKTsKKysKKysJaWYgKHN0cmxlbihwcm92aWRlcl9pZCkgPj0gc3RybGVuKFBLQ1MxMV9V UklfU0NIRU1FKSAmJgorKwkgICAgc3RybmNtcChwcm92aWRlcl9pZCwgUEtDUzExX1VSSV9TQ0hF TUUsIHN0cmxlbihQS0NTMTFfVVJJX1NDSEVNRSkpID09IDApIHsKKysJCWlmIChwa2NzMTFfdXJp X3BhcnNlKHByb3ZpZGVyX2lkLCB1cmkpICE9IDApCisrCQkJZmF0YWwoIkZhaWxlZCB0byBwYXJz ZSBQS0NTIzExIFVSSSIpOworKwl9IGVsc2UgeworKwkJdXJpLT5tb2R1bGVfcGF0aCA9IHN0cmR1 cChwcm92aWRlcl9pZCk7CisrCX0KKysKKysJcnYgPSBwa2NzMTFfZGVsX3Byb3ZpZGVyX2J5X3Vy aSh1cmkpOworKwlwa2NzMTFfdXJpX2NsZWFudXAodXJpKTsKKysJcmV0dXJuIHJ2OworK30KKysK KysvKiB1bnJlZ2lzdGVyIHByb3ZpZGVyIGJ5IFBLQ1MjMTEgVVJJICovCisraW50CisrcGtjczEx X2RlbF9wcm92aWRlcl9ieV91cmkoc3RydWN0IHBrY3MxMV91cmkgKnVyaSkKKyB7CisgCXN0cnVj dCBwa2NzMTFfcHJvdmlkZXIgKnA7CisrCWludCBydiA9IC0xOworKwljaGFyICpwcm92aWRlcl91 cmkgPSBwa2NzMTFfdXJpX2dldCh1cmkpOworIAorLQlpZiAoKHAgPSBwa2NzMTFfcHJvdmlkZXJf bG9va3VwKHByb3ZpZGVyX2lkKSkgIT0gTlVMTCkgeworKwlkZWJ1ZzNfZigiY2FsbGVkIHdpdGgg cHJvdmlkZXIgJXMiLCBwcm92aWRlcl91cmkpOworKworKwlpZiAoKHAgPSBwa2NzMTFfcHJvdmlk ZXJfbG9va3VwKHByb3ZpZGVyX3VyaSkpICE9IE5VTEwpIHsKKyAJCVRBSUxRX1JFTU9WRSgmcGtj czExX3Byb3ZpZGVycywgcCwgbmV4dCk7CisgCQlwa2NzMTFfcHJvdmlkZXJfZmluYWxpemUocCk7 CisgCQlwa2NzMTFfcHJvdmlkZXJfdW5yZWYocCk7CistCQlyZXR1cm4gKDApOworKwkJcnYgPSAw OworIAl9CistCXJldHVybiAoLTEpOworKwlmcmVlKHByb3ZpZGVyX3VyaSk7CisrCXJldHVybiBy djsKKyB9CisgCisgLyogcmVsZWFzZSBhIHdyYXBwZWQgb2JqZWN0ICovCitAQCAtMTgzLDYgKzI3 Niw3IEBAIHBrY3MxMV9rMTFfZnJlZShzdHJ1Y3QgcGtjczExX2tleSAqazExKQorIAlpZiAoazEx LT5wcm92aWRlcikKKyAJCXBrY3MxMV9wcm92aWRlcl91bnJlZihrMTEtPnByb3ZpZGVyKTsKKyAJ ZnJlZShrMTEtPmtleWlkKTsKKysJZnJlZShrMTEtPmxhYmVsKTsKKyAJc3NoYnVmX2ZyZWUoazEx LT5rZXlibG9iKTsKKyAJZnJlZShrMTEpOworIH0KK0BAIC0xOTgsOCArMjkyLDggQEAgcGtjczEx X2ZpbmQoc3RydWN0IHBrY3MxMV9wcm92aWRlciAqcCwgQ0tfVUxPTkcgc2xvdGlkeCwgQ0tfQVRU UklCVVRFICphdHRyLAorIAlDS19SVgkJCXJ2OworIAlpbnQJCQlyZXQgPSAtMTsKKyAKKy0JZiA9 IHAtPmZ1bmN0aW9uX2xpc3Q7CistCXNlc3Npb24gPSBwLT5zbG90aW5mb1tzbG90aWR4XS5zZXNz aW9uOworKwlmID0gcC0+bW9kdWxlLT5mdW5jdGlvbl9saXN0OworKwlzZXNzaW9uID0gcC0+bW9k dWxlLT5zbG90aW5mb1tzbG90aWR4XS5zZXNzaW9uOworIAlpZiAoKHJ2ID0gZi0+Q19GaW5kT2Jq ZWN0c0luaXQoc2Vzc2lvbiwgYXR0ciwgbmF0dHIpKSAhPSBDS1JfT0spIHsKKyAJCWVycm9yKCJD X0ZpbmRPYmplY3RzSW5pdCBmYWlsZWQgKG5hdHRyICVsdSk6ICVsdSIsIG5hdHRyLCBydik7Cisg CQlyZXR1cm4gKC0xKTsKK0BAIC0yMzYsMTQgKzMzMCwxNCBAQCBwa2NzMTFfbG9naW5fc2xvdChz dHJ1Y3QgcGtjczExX3Byb3ZpZGVyICpwcm92aWRlciwgc3RydWN0IHBrY3MxMV9zbG90aW5mbyAq c2ksCisgCWlmIChzaS0+dG9rZW4uZmxhZ3MgJiBDS0ZfUFJPVEVDVEVEX0FVVEhFTlRJQ0FUSU9O X1BBVEgpCisgCQl2ZXJib3NlKCJEZWZlcnJpbmcgUElOIGVudHJ5IHRvIHJlYWRlciBrZXlwYWQu Iik7CisgCWVsc2UgeworLQkJc25wcmludGYocHJvbXB0LCBzaXplb2YocHJvbXB0KSwgIkVudGVy IFBJTiBmb3IgJyVzJzogIiwKKysJCXNucHJpbnRmKHByb21wdCwgc2l6ZW9mKHByb21wdCksICJF bnRlciBQSU4gZm9yICclLjMycyc6ICIsCisgCQkgICAgc2ktPnRva2VuLmxhYmVsKTsKKy0JCWlm ICgocGluID0gcmVhZF9wYXNzcGhyYXNlKHByb21wdCwgUlBfQUxMT1dfRU9GKSkgPT0gTlVMTCkg eworKwkJaWYgKChwaW4gPSByZWFkX3Bhc3NwaHJhc2UocHJvbXB0LCBSUF9BTExPV19FT0Z8UlBf QUxMT1dfU1RESU4pKSA9PSBOVUxMKSB7CisgCQkJZGVidWdfZigibm8gcGluIHNwZWNpZmllZCIp OworIAkJCXJldHVybiAoLTEpOwkvKiBiYWlsIG91dCAqLworIAkJfQorIAl9CistCXJ2ID0gcHJv dmlkZXItPmZ1bmN0aW9uX2xpc3QtPkNfTG9naW4oc2ktPnNlc3Npb24sIHR5cGUsICh1X2NoYXIg KilwaW4sCisrCXJ2ID0gcHJvdmlkZXItPm1vZHVsZS0+ZnVuY3Rpb25fbGlzdC0+Q19Mb2dpbihz aS0+c2Vzc2lvbiwgdHlwZSwgKHVfY2hhciAqKXBpbiwKKyAJICAgIChwaW4gIT0gTlVMTCkgPyBz dHJsZW4ocGluKSA6IDApOworIAlpZiAocGluICE9IE5VTEwpCisgCQlmcmVlemVybyhwaW4sIHN0 cmxlbihwaW4pKTsKK0BAIC0yNzMsMTMgKzM2NywxNCBAQCBwa2NzMTFfbG9naW5fc2xvdChzdHJ1 Y3QgcGtjczExX3Byb3ZpZGVyICpwcm92aWRlciwgc3RydWN0IHBrY3MxMV9zbG90aW5mbyAqc2ks Cisgc3RhdGljIGludAorIHBrY3MxMV9sb2dpbihzdHJ1Y3QgcGtjczExX2tleSAqazExLCBDS19V U0VSX1RZUEUgdHlwZSkKKyB7CistCWlmIChrMTEgPT0gTlVMTCB8fCBrMTEtPnByb3ZpZGVyID09 IE5VTEwgfHwgIWsxMS0+cHJvdmlkZXItPnZhbGlkKSB7CisrCWlmIChrMTEgPT0gTlVMTCB8fCBr MTEtPnByb3ZpZGVyID09IE5VTEwgfHwgIWsxMS0+cHJvdmlkZXItPnZhbGlkIHx8CisrCSAgICBr MTEtPnByb3ZpZGVyLT5tb2R1bGUgPT0gTlVMTCB8fCAhazExLT5wcm92aWRlci0+bW9kdWxlLT52 YWxpZCkgeworIAkJZXJyb3IoIm5vIHBrY3MxMSAodmFsaWQpIHByb3ZpZGVyIGZvdW5kIik7Cisg CQlyZXR1cm4gKC0xKTsKKyAJfQorIAorIAlyZXR1cm4gcGtjczExX2xvZ2luX3Nsb3QoazExLT5w cm92aWRlciwKKy0JICAgICZrMTEtPnByb3ZpZGVyLT5zbG90aW5mb1trMTEtPnNsb3RpZHhdLCB0 eXBlKTsKKysJICAgICZrMTEtPnByb3ZpZGVyLT5tb2R1bGUtPnNsb3RpbmZvW2sxMS0+c2xvdGlk eF0sIHR5cGUpOworIH0KKyAKKyAKK0BAIC0yOTUsMTMgKzM5MCwxNCBAQCBwa2NzMTFfY2hlY2tf b2JqX2Jvb2xfYXR0cmliKHN0cnVjdCBwa2NzMTFfa2V5ICprMTEsIENLX09CSkVDVF9IQU5ETEUg b2JqLAorIAorIAkqdmFsID0gMDsKKyAKKy0JaWYgKCFrMTEtPnByb3ZpZGVyIHx8ICFrMTEtPnBy b3ZpZGVyLT52YWxpZCkgeworKwlpZiAoIWsxMS0+cHJvdmlkZXIgfHwgIWsxMS0+cHJvdmlkZXIt PnZhbGlkIHx8CisrCSAgICAhazExLT5wcm92aWRlci0+bW9kdWxlIHx8ICFrMTEtPnByb3ZpZGVy LT5tb2R1bGUtPnZhbGlkKSB7CisgCQllcnJvcigibm8gcGtjczExICh2YWxpZCkgcHJvdmlkZXIg Zm91bmQiKTsKKyAJCXJldHVybiAoLTEpOworIAl9CisgCistCWYgPSBrMTEtPnByb3ZpZGVyLT5m dW5jdGlvbl9saXN0OworLQlzaSA9ICZrMTEtPnByb3ZpZGVyLT5zbG90aW5mb1trMTEtPnNsb3Rp ZHhdOworKwlmID0gazExLT5wcm92aWRlci0+bW9kdWxlLT5mdW5jdGlvbl9saXN0OworKwlzaSA9 ICZrMTEtPnByb3ZpZGVyLT5tb2R1bGUtPnNsb3RpbmZvW2sxMS0+c2xvdGlkeF07CisgCisgCWF0 dHIudHlwZSA9IHR5cGU7CisgCWF0dHIucFZhbHVlID0gJmZsYWc7CitAQCAtMzMyLDEzICs0Mjgs MTQgQEAgcGtjczExX2dldF9rZXkoc3RydWN0IHBrY3MxMV9rZXkgKmsxMSwgQ0tfTUVDSEFOSVNN X1RZUEUgbWVjaF90eXBlKQorIAlpbnQJCQkgYWx3YXlzX2F1dGggPSAwOworIAlpbnQJCQkgZGlk X2xvZ2luID0gMDsKKyAKKy0JaWYgKCFrMTEtPnByb3ZpZGVyIHx8ICFrMTEtPnByb3ZpZGVyLT52 YWxpZCkgeworKwlpZiAoIWsxMS0+cHJvdmlkZXIgfHwgIWsxMS0+cHJvdmlkZXItPnZhbGlkIHx8 CisrCSAgICAhazExLT5wcm92aWRlci0+bW9kdWxlIHx8ICFrMTEtPnByb3ZpZGVyLT5tb2R1bGUt PnZhbGlkKSB7CisgCQllcnJvcigibm8gcGtjczExICh2YWxpZCkgcHJvdmlkZXIgZm91bmQiKTsK KyAJCXJldHVybiAoLTEpOworIAl9CisgCistCWYgPSBrMTEtPnByb3ZpZGVyLT5mdW5jdGlvbl9s aXN0OworLQlzaSA9ICZrMTEtPnByb3ZpZGVyLT5zbG90aW5mb1trMTEtPnNsb3RpZHhdOworKwlm ID0gazExLT5wcm92aWRlci0+bW9kdWxlLT5mdW5jdGlvbl9saXN0OworKwlzaSA9ICZrMTEtPnBy b3ZpZGVyLT5tb2R1bGUtPnNsb3RpbmZvW2sxMS0+c2xvdGlkeF07CisgCisgCWlmICgoc2ktPnRv a2VuLmZsYWdzICYgQ0tGX0xPR0lOX1JFUVVJUkVEKSAmJiAhc2ktPmxvZ2dlZF9pbikgeworIAkJ aWYgKHBrY3MxMV9sb2dpbihrMTEsIENLVV9VU0VSKSA8IDApIHsKK0BAIC00MzcsNiArNTM0LDEy IEBAIHBrY3MxMV9yZWNvcmRfa2V5KHN0cnVjdCBwa2NzMTFfcHJvdmlkZXIgKnByb3ZpZGVyLCBD S19VTE9ORyBzbG90aWR4LAorIAkJazExLT5rZXlpZCA9IHhtYWxsb2MoazExLT5rZXlpZF9sZW4p OworIAkJbWVtY3B5KGsxMS0+a2V5aWQsIGtleWlkX2F0dHJpYi0+cFZhbHVlLCBrMTEtPmtleWlk X2xlbik7CisgCX0KKysJaWYgKGtleWlkX2F0dHJpYi0+dWxWYWx1ZUxlbiA+IDAgKSB7CisrCQlr MTEtPmxhYmVsID0geG1hbGxvYyhrZXlpZF9hdHRyaWItPnVsVmFsdWVMZW4rMSk7CisrCQltZW1j cHkoazExLT5sYWJlbCwga2V5aWRfYXR0cmliLT5wVmFsdWUsIGtleWlkX2F0dHJpYi0+dWxWYWx1 ZUxlbik7CisrCQlrMTEtPmxhYmVsW2tleWlkX2F0dHJpYi0+dWxWYWx1ZUxlbl0gPSAwOworKwl9 CisrCisgCVRBSUxRX0lOU0VSVF9UQUlMKCZwa2NzMTFfa2V5cywgazExLCBuZXh0KTsKKyAKKyAJ cmV0dXJuIDA7CitAQCAtNDY0LDYgKzU2Nyw0MiBAQCBwa2NzMTFfbG9va3VwX2tleShzdHJ1Y3Qg c3Noa2V5ICprZXkpCisgCXJldHVybiBmb3VuZDsKKyB9CisgCisrLyoKKysgKiBUaGlzIGNhbid0 IGJlIGluIHRoZSBzc2gtcGtjczExLXVyaSwgYmVjYXNlIHdlIGNhbiBub3QgZGVwZW5kIG9uCisr ICogUEtDUyMxMSBzdHJ1Y3R1cmVzIGluIHNzaC1hZ2VudCAodXNpbmcgY2xpZW50LWhlbHBlciBj b21tdW5pY2F0aW9uKQorKyAqLworK2ludAorK3BrY3MxMV91cmlfd3JpdGUoY29uc3Qgc3RydWN0 IHNzaGtleSAqa2V5LCBGSUxFICpmKQorK3sKKysJY2hhciAqcCA9IE5VTEw7CisrCXN0cnVjdCBw a2NzMTFfdXJpIHVyaTsKKysJc3RydWN0IHBrY3MxMV9rZXkgKmsxMSA9IHBrY3MxMV9sb29rdXBf a2V5KGtleSk7CisrCisrCWlmIChrMTEgPT0gTlVMTCkgeworKwkJZXJyb3IoIkZhaWxlZCB0byBn ZXQgZXhfZGF0YSBmb3Iga2V5IHR5cGUgJWQiLCBrZXktPnR5cGUpOworKwkJcmV0dXJuICgtMSk7 CisrCX0KKysKKysJLyogb21pdCB0eXBlIC0tIHdlIGFyZSBsb29raW5nIGZvciBwcml2YXRlLXB1 YmxpYyBvciBwcml2YXRlLWNlcnRpZmljYXRlIHBhaXJzICovCisrCXVyaS5pZCA9IGsxMS0+a2V5 aWQ7CisrCXVyaS5pZF9sZW4gPSBrMTEtPmtleWlkX2xlbjsKKysJdXJpLnRva2VuID0gazExLT5w cm92aWRlci0+bW9kdWxlLT5zbG90aW5mb1trMTEtPnNsb3RpZHhdLnRva2VuLmxhYmVsOworKwl1 cmkub2JqZWN0ID0gazExLT5sYWJlbDsKKysJdXJpLm1vZHVsZV9wYXRoID0gazExLT5wcm92aWRl ci0+bW9kdWxlLT5tb2R1bGVfcGF0aDsKKysJdXJpLmxpYl9tYW51ZiA9IGsxMS0+cHJvdmlkZXIt Pm1vZHVsZS0+aW5mby5tYW51ZmFjdHVyZXJJRDsKKysJdXJpLm1hbnVmID0gazExLT5wcm92aWRl ci0+bW9kdWxlLT5zbG90aW5mb1trMTEtPnNsb3RpZHhdLnRva2VuLm1hbnVmYWN0dXJlcklEOwor Kwl1cmkuc2VyaWFsID0gazExLT5wcm92aWRlci0+bW9kdWxlLT5zbG90aW5mb1trMTEtPnNsb3Rp ZHhdLnRva2VuLnNlcmlhbE51bWJlcjsKKysKKysJcCA9IHBrY3MxMV91cmlfZ2V0KCZ1cmkpOwor KwkvKiBkbyBub3QgY2xlYW51cCAtLSB3ZSBkbyBub3QgYWxsb2NhdGUgaGVyZSwgb25seSByZWZl cmVuY2UgKi8KKysJaWYgKHAgPT0gTlVMTCkKKysJCXJldHVybiAtMTsKKysKKysJZnByaW50Zihm LCAiICVzIiwgcCk7CisrCWZyZWUocCk7CisrCXJldHVybiAwOworK30KKysKKyAjaWZkZWYgV0lU SF9PUEVOU1NMCisgLyoKKyAgKiBTZWU6CitAQCAtNTY4LDggKzcwNyw4IEBAIHBrY3MxMV9zaWdu X3JzYShzdHJ1Y3Qgc3Noa2V5ICprZXksCisgCQlyZXR1cm4gU1NIX0VSUl9BR0VOVF9GQUlMVVJF OworIAl9CisgCistCWYgPSBrMTEtPnByb3ZpZGVyLT5mdW5jdGlvbl9saXN0OworLQlzaSA9ICZr MTEtPnByb3ZpZGVyLT5zbG90aW5mb1trMTEtPnNsb3RpZHhdOworKwlmID0gazExLT5wcm92aWRl ci0+bW9kdWxlLT5mdW5jdGlvbl9saXN0OworKwlzaSA9ICZrMTEtPnByb3ZpZGVyLT5tb2R1bGUt PnNsb3RpbmZvW2sxMS0+c2xvdGlkeF07CisgCisgCWlmICgoc2lnbGVuID0gRVZQX1BLRVlfc2l6 ZShrZXktPnBrZXkpKSA8PSAwKQorIAkJcmV0dXJuIFNTSF9FUlJfSU5WQUxJRF9BUkdVTUVOVDsK K0BAIC02NTgsOCArNzk3LDggQEAgcGtjczExX3NpZ25fZWNkc2Eoc3RydWN0IHNzaGtleSAqa2V5 LAorIAlkZWJ1ZzNfZigic2lnbiB1c2luZyBwcm92aWRlciAlcyBzbG90aWR4ICVsdSIsCisgCSAg ICBrMTEtPnByb3ZpZGVyLT5uYW1lLCAodV9sb25nKWsxMS0+c2xvdGlkeCk7CisgCistCWYgPSBr MTEtPnByb3ZpZGVyLT5mdW5jdGlvbl9saXN0OworLQlzaSA9ICZrMTEtPnByb3ZpZGVyLT5zbG90 aW5mb1trMTEtPnNsb3RpZHhdOworKwlmID0gazExLT5wcm92aWRlci0+bW9kdWxlLT5mdW5jdGlv bl9saXN0OworKwlzaSA9ICZrMTEtPnByb3ZpZGVyLT5tb2R1bGUtPnNsb3RpbmZvW2sxMS0+c2xv dGlkeF07CisgCisgCS8qIFByZXBhcmUgZGlnZXN0IHRvIGJlIHNpZ25lZCAqLworIAlpZiAoKGhh c2hhbGcgPSBzc2hrZXlfZWNfbmlkX3RvX2hhc2hfYWxnKGtleS0+ZWNkc2FfbmlkKSkgPT0gLTEp CitAQCAtNzQzLDggKzg4Miw4IEBAIHBrY3MxMV9zaWduX2VkMjU1MTkoc3RydWN0IHNzaGtleSAq a2V5LAorIAlkZWJ1ZzNfZigic2lnbiB1c2luZyBwcm92aWRlciAlcyBzbG90aWR4ICVsdSIsCisg CSAgICBrMTEtPnByb3ZpZGVyLT5uYW1lLCAodV9sb25nKWsxMS0+c2xvdGlkeCk7CisgCistCWYg PSBrMTEtPnByb3ZpZGVyLT5mdW5jdGlvbl9saXN0OworLQlzaSA9ICZrMTEtPnByb3ZpZGVyLT5z bG90aW5mb1trMTEtPnNsb3RpZHhdOworKwlmID0gazExLT5wcm92aWRlci0+bW9kdWxlLT5mdW5j dGlvbl9saXN0OworKwlzaSA9ICZrMTEtPnByb3ZpZGVyLT5tb2R1bGUtPnNsb3RpbmZvW2sxMS0+ c2xvdGlkeF07CisgCisgCXhkYXRhID0geG1hbGxvYyhkYXRhbGVuKTsKKyAJbWVtY3B5KHhkYXRh LCBkYXRhLCBkYXRhbGVuKTsKK0BAIC03NzIsNyArOTExLDggQEAgcGtjczExX3NpZ25fZWQyNTUx OShzdHJ1Y3Qgc3Noa2V5ICprZXksCisgCXJldHVybiByZXQ7CisgfQorIAorLS8qIHJlbW92ZSB0 cmFpbGluZyBzcGFjZXMgKi8KKysvKiByZW1vdmUgdHJhaWxpbmcgc3BhY2VzLiBOb3RlLCB0aGF0 IHRoaXMgZG9lcyBOT1QgZ3VhcmFudGVlIHRoZSBidWZmZXIKKysgKiB3aWxsIGJlIG51bGwgdGVy bWluYXRlZCBpZiB0aGVyZSBhcmUgbm8gdHJhaWxpbmcgc3BhY2VzISAqLworIHN0YXRpYyBjaGFy ICoKKyBybXNwYWNlKHVfY2hhciAqYnVmLCBzaXplX3QgbGVuKQorIHsKK0BAIC04MDQsOCArOTQ0 LDggQEAgcGtjczExX29wZW5fc2Vzc2lvbihzdHJ1Y3QgcGtjczExX3Byb3ZpZGVyICpwLCBDS19V TE9ORyBzbG90aWR4LCBjaGFyICpwaW4sCisgCUNLX1NFU1NJT05fSEFORExFCXNlc3Npb247Cisg CWludAkJCWxvZ2luX3JlcXVpcmVkLCByZXQ7CisgCistCWYgPSBwLT5mdW5jdGlvbl9saXN0Owor LQlzaSA9ICZwLT5zbG90aW5mb1tzbG90aWR4XTsKKysJZiA9IHAtPm1vZHVsZS0+ZnVuY3Rpb25f bGlzdDsKKysJc2kgPSAmcC0+bW9kdWxlLT5zbG90aW5mb1tzbG90aWR4XTsKKyAKKyAJbG9naW5f cmVxdWlyZWQgPSBzaS0+dG9rZW4uZmxhZ3MgJiBDS0ZfTE9HSU5fUkVRVUlSRUQ7CisgCitAQCAt ODE1LDkgKzk1NSw5IEBAIHBrY3MxMV9vcGVuX3Nlc3Npb24oc3RydWN0IHBrY3MxMV9wcm92aWRl ciAqcCwgQ0tfVUxPTkcgc2xvdGlkeCwgY2hhciAqcGluLAorIAkJZXJyb3IoInBpbiByZXF1aXJl ZCIpOworIAkJcmV0dXJuICgtU1NIX1BLQ1MxMV9FUlJfUElOX1JFUVVJUkVEKTsKKyAJfQorLQlp ZiAoKHJ2ID0gZi0+Q19PcGVuU2Vzc2lvbihwLT5zbG90bGlzdFtzbG90aWR4XSwgQ0tGX1JXX1NF U1NJT058CisrCWlmICgocnYgPSBmLT5DX09wZW5TZXNzaW9uKHAtPm1vZHVsZS0+c2xvdGxpc3Rb c2xvdGlkeF0sIENLRl9SV19TRVNTSU9OfAorIAkgICAgQ0tGX1NFUklBTF9TRVNTSU9OLCBOVUxM LCBOVUxMLCAmc2Vzc2lvbikpICE9IENLUl9PSykgeworLQkJZXJyb3IoIkNfT3BlblNlc3Npb24g ZmFpbGVkOiAlbHUiLCBydik7CisrCQllcnJvcigiQ19PcGVuU2Vzc2lvbiBmYWlsZWQgZm9yIHNs b3QgJWx1OiAlbHUiLCBzbG90aWR4LCBydik7CisgCQlyZXR1cm4gKC0xKTsKKyAJfQorIAlpZiAo bG9naW5fcmVxdWlyZWQgJiYgcGluICE9IE5VTEwgJiYgc3RybGVuKHBpbikgIT0gMCkgeworQEAg LTg1NCw3ICs5OTQsOCBAQCBzdGF0aWMgc3RydWN0IHNzaGtleSAqCisgcGtjczExX2ZldGNoX2Vj ZHNhX3B1YmtleShzdHJ1Y3QgcGtjczExX3Byb3ZpZGVyICpwLCBDS19VTE9ORyBzbG90aWR4LAor ICAgICBDS19PQkpFQ1RfSEFORExFICpvYmopCisgeworLQlDS19BVFRSSUJVVEUJCSBrZXlfYXR0 clszXTsKKysJQ0tfQVRUUklCVVRFCQkga2V5X2F0dHJbNF07CisrCWludAkJCSBuYXR0ciA9IDQ7 CisgCUNLX1NFU1NJT05fSEFORExFCSBzZXNzaW9uOworIAlDS19GVU5DVElPTl9MSVNUCSpmID0g TlVMTDsKKyAJQ0tfUlYJCQkgcnY7CitAQCAtODY3LDE0ICsxMDA4LDE1IEBAIHBrY3MxMV9mZXRj aF9lY2RzYV9wdWJrZXkoc3RydWN0IHBrY3MxMV9wcm92aWRlciAqcCwgQ0tfVUxPTkcgc2xvdGlk eCwKKyAKKyAJbWVtc2V0KCZrZXlfYXR0ciwgMCwgc2l6ZW9mKGtleV9hdHRyKSk7CisgCWtleV9h dHRyWzBdLnR5cGUgPSBDS0FfSUQ7CistCWtleV9hdHRyWzFdLnR5cGUgPSBDS0FfRUNfUE9JTlQ7 CistCWtleV9hdHRyWzJdLnR5cGUgPSBDS0FfRUNfUEFSQU1TOworKwlrZXlfYXR0clsxXS50eXBl ID0gQ0tBX0xBQkVMOworKwlrZXlfYXR0clsyXS50eXBlID0gQ0tBX0VDX1BPSU5UOworKwlrZXlf YXR0clszXS50eXBlID0gQ0tBX0VDX1BBUkFNUzsKKyAKKy0Jc2Vzc2lvbiA9IHAtPnNsb3RpbmZv W3Nsb3RpZHhdLnNlc3Npb247CistCWYgPSBwLT5mdW5jdGlvbl9saXN0OworKwlzZXNzaW9uID0g cC0+bW9kdWxlLT5zbG90aW5mb1tzbG90aWR4XS5zZXNzaW9uOworKwlmID0gcC0+bW9kdWxlLT5m dW5jdGlvbl9saXN0OworIAorIAkvKiBmaWd1cmUgb3V0IHNpemUgb2YgdGhlIGF0dHJpYnV0ZXMg Ki8KKy0JcnYgPSBmLT5DX0dldEF0dHJpYnV0ZVZhbHVlKHNlc3Npb24sICpvYmosIGtleV9hdHRy LCAzKTsKKysJcnYgPSBmLT5DX0dldEF0dHJpYnV0ZVZhbHVlKHNlc3Npb24sICpvYmosIGtleV9h dHRyLCBuYXR0cik7CisgCWlmIChydiAhPSBDS1JfT0spIHsKKyAJCWVycm9yKCJDX0dldEF0dHJp YnV0ZVZhbHVlIGZhaWxlZDogJWx1IiwgcnYpOworIAkJcmV0dXJuIChOVUxMKTsKK0BAIC04ODUs MTkgKzEwMjcsMTkgQEAgcGtjczExX2ZldGNoX2VjZHNhX3B1YmtleShzdHJ1Y3QgcGtjczExX3By b3ZpZGVyICpwLCBDS19VTE9ORyBzbG90aWR4LAorIAkgKiBlbnN1cmUgdGhhdCBub25lIG9mIHRo ZSBvdGhlcnMgYXJlIHplcm8gbGVuZ3RoLgorIAkgKiBYWFggYXNzdW1lcyBDS0FfSUQgaXMgYWx3 YXlzIGZpcnN0LgorIAkgKi8KKy0JaWYgKGtleV9hdHRyWzFdLnVsVmFsdWVMZW4gPT0gMCB8fAor LQkgICAga2V5X2F0dHJbMl0udWxWYWx1ZUxlbiA9PSAwKSB7CisrCWlmIChrZXlfYXR0clsyXS51 bFZhbHVlTGVuID09IDAgfHwKKysJICAgIGtleV9hdHRyWzNdLnVsVmFsdWVMZW4gPT0gMCkgewor IAkJZXJyb3IoImludmFsaWQgYXR0cmlidXRlIGxlbmd0aCIpOworIAkJcmV0dXJuIChOVUxMKTsK KyAJfQorIAorIAkvKiBhbGxvY2F0ZSBidWZmZXJzIGZvciBhdHRyaWJ1dGVzICovCistCWZvciAo aSA9IDA7IGkgPCAzOyBpKyspCisrCWZvciAoaSA9IDA7IGkgPCBuYXR0cjsgaSsrKQorIAkJaWYg KGtleV9hdHRyW2ldLnVsVmFsdWVMZW4gPiAwKQorIAkJCWtleV9hdHRyW2ldLnBWYWx1ZSA9IHhj YWxsb2MoMSwga2V5X2F0dHJbaV0udWxWYWx1ZUxlbik7CisgCisgCS8qIHJldHJpZXZlIElELCBw dWJsaWMgcG9pbnQgYW5kIGN1cnZlIHBhcmFtZXRlcnMgb2YgRUMga2V5ICovCistCXJ2ID0gZi0+ Q19HZXRBdHRyaWJ1dGVWYWx1ZShzZXNzaW9uLCAqb2JqLCBrZXlfYXR0ciwgMyk7CisrCXJ2ID0g Zi0+Q19HZXRBdHRyaWJ1dGVWYWx1ZShzZXNzaW9uLCAqb2JqLCBrZXlfYXR0ciwgbmF0dHIpOwor IAlpZiAocnYgIT0gQ0tSX09LKSB7CisgCQllcnJvcigiQ19HZXRBdHRyaWJ1dGVWYWx1ZSBmYWls ZWQ6ICVsdSIsIHJ2KTsKKyAJCWdvdG8gZmFpbDsKK0BAIC05MDksOCArMTA1MSw4IEBAIHBrY3Mx MV9mZXRjaF9lY2RzYV9wdWJrZXkoc3RydWN0IHBrY3MxMV9wcm92aWRlciAqcCwgQ0tfVUxPTkcg c2xvdGlkeCwKKyAJCWdvdG8gZmFpbDsKKyAJfQorIAorLQlhdHRycCA9IGtleV9hdHRyWzJdLnBW YWx1ZTsKKy0JZ3JvdXAgPSBkMmlfRUNQS1BhcmFtZXRlcnMoTlVMTCwgJmF0dHJwLCBrZXlfYXR0 clsyXS51bFZhbHVlTGVuKTsKKysJYXR0cnAgPSBrZXlfYXR0clszXS5wVmFsdWU7CisrCWdyb3Vw ID0gZDJpX0VDUEtQYXJhbWV0ZXJzKE5VTEwsICZhdHRycCwga2V5X2F0dHJbM10udWxWYWx1ZUxl bik7CisgCWlmIChncm91cCA9PSBOVUxMKSB7CisgCQlvc3NsX2Vycm9yKCJkMmlfRUNQS1BhcmFt ZXRlcnMgZmFpbGVkIik7CisgCQlnb3RvIGZhaWw7CitAQCAtOTIxLDEzICsxMDYzLDEzIEBAIHBr Y3MxMV9mZXRjaF9lY2RzYV9wdWJrZXkoc3RydWN0IHBrY3MxMV9wcm92aWRlciAqcCwgQ0tfVUxP Tkcgc2xvdGlkeCwKKyAJCWdvdG8gZmFpbDsKKyAJfQorIAorLQlpZiAoa2V5X2F0dHJbMV0udWxW YWx1ZUxlbiA8PSAyKSB7CisrCWlmIChrZXlfYXR0clsyXS51bFZhbHVlTGVuIDw9IDIpIHsKKyAJ CWVycm9yKCJDS0FfRUNfUE9JTlQgdG9vIHNtYWxsIik7CisgCQlnb3RvIGZhaWw7CisgCX0KKyAK Ky0JYXR0cnAgPSBrZXlfYXR0clsxXS5wVmFsdWU7CistCW9jdGV0ID0gZDJpX0FTTjFfT0NURVRf U1RSSU5HKE5VTEwsICZhdHRycCwga2V5X2F0dHJbMV0udWxWYWx1ZUxlbik7CisrCWF0dHJwID0g a2V5X2F0dHJbMl0ucFZhbHVlOworKwlvY3RldCA9IGQyaV9BU04xX09DVEVUX1NUUklORyhOVUxM LCAmYXR0cnAsIGtleV9hdHRyWzJdLnVsVmFsdWVMZW4pOworIAlpZiAob2N0ZXQgPT0gTlVMTCkg eworIAkJb3NzbF9lcnJvcigiZDJpX0FTTjFfT0NURVRfU1RSSU5HIGZhaWxlZCIpOworIAkJZ290 byBmYWlsOworQEAgLTk4OSw3ICsxMTMxLDggQEAgc3RhdGljIHN0cnVjdCBzc2hrZXkgKgorIHBr Y3MxMV9mZXRjaF9yc2FfcHVia2V5KHN0cnVjdCBwa2NzMTFfcHJvdmlkZXIgKnAsIENLX1VMT05H IHNsb3RpZHgsCisgICAgIENLX09CSkVDVF9IQU5ETEUgKm9iaikKKyB7CistCUNLX0FUVFJJQlVU RQkJIGtleV9hdHRyWzNdOworKwlDS19BVFRSSUJVVEUJCSBrZXlfYXR0cls0XTsKKysJaW50CQkJ IG5hdHRyID0gNDsKKyAJQ0tfU0VTU0lPTl9IQU5ETEUJIHNlc3Npb247CisgCUNLX0ZVTkNUSU9O X0xJU1QJKmYgPSBOVUxMOworIAlDS19SVgkJCSBydjsKK0BAIC0xMDAwLDE0ICsxMTQzLDE1IEBA IHBrY3MxMV9mZXRjaF9yc2FfcHVia2V5KHN0cnVjdCBwa2NzMTFfcHJvdmlkZXIgKnAsIENLX1VM T05HIHNsb3RpZHgsCisgCisgCW1lbXNldCgma2V5X2F0dHIsIDAsIHNpemVvZihrZXlfYXR0cikp OworIAlrZXlfYXR0clswXS50eXBlID0gQ0tBX0lEOworLQlrZXlfYXR0clsxXS50eXBlID0gQ0tB X01PRFVMVVM7CistCWtleV9hdHRyWzJdLnR5cGUgPSBDS0FfUFVCTElDX0VYUE9ORU5UOworKwlr ZXlfYXR0clsxXS50eXBlID0gQ0tBX0xBQkVMOworKwlrZXlfYXR0clsyXS50eXBlID0gQ0tBX01P RFVMVVM7CisrCWtleV9hdHRyWzNdLnR5cGUgPSBDS0FfUFVCTElDX0VYUE9ORU5UOworIAorLQlz ZXNzaW9uID0gcC0+c2xvdGluZm9bc2xvdGlkeF0uc2Vzc2lvbjsKKy0JZiA9IHAtPmZ1bmN0aW9u X2xpc3Q7CisrCXNlc3Npb24gPSBwLT5tb2R1bGUtPnNsb3RpbmZvW3Nsb3RpZHhdLnNlc3Npb247 CisrCWYgPSBwLT5tb2R1bGUtPmZ1bmN0aW9uX2xpc3Q7CisgCisgCS8qIGZpZ3VyZSBvdXQgc2l6 ZSBvZiB0aGUgYXR0cmlidXRlcyAqLworLQlydiA9IGYtPkNfR2V0QXR0cmlidXRlVmFsdWUoc2Vz c2lvbiwgKm9iaiwga2V5X2F0dHIsIDMpOworKwlydiA9IGYtPkNfR2V0QXR0cmlidXRlVmFsdWUo c2Vzc2lvbiwgKm9iaiwga2V5X2F0dHIsIG5hdHRyKTsKKyAJaWYgKHJ2ICE9IENLUl9PSykgewor IAkJZXJyb3IoIkNfR2V0QXR0cmlidXRlVmFsdWUgZmFpbGVkOiAlbHUiLCBydik7CisgCQlyZXR1 cm4gKE5VTEwpOworQEAgLTEwMTgsMTkgKzExNjIsMTkgQEAgcGtjczExX2ZldGNoX3JzYV9wdWJr ZXkoc3RydWN0IHBrY3MxMV9wcm92aWRlciAqcCwgQ0tfVUxPTkcgc2xvdGlkeCwKKyAJICogZW5z dXJlIHRoYXQgbm9uZSBvZiB0aGUgb3RoZXJzIGFyZSB6ZXJvIGxlbmd0aC4KKyAJICogWFhYIGFz c3VtZXMgQ0tBX0lEIGlzIGFsd2F5cyBmaXJzdC4KKyAJICovCistCWlmIChrZXlfYXR0clsxXS51 bFZhbHVlTGVuID09IDAgfHwKKy0JICAgIGtleV9hdHRyWzJdLnVsVmFsdWVMZW4gPT0gMCkgewor KwlpZiAoa2V5X2F0dHJbMl0udWxWYWx1ZUxlbiA9PSAwIHx8CisrCSAgICBrZXlfYXR0clszXS51 bFZhbHVlTGVuID09IDApIHsKKyAJCWVycm9yKCJpbnZhbGlkIGF0dHJpYnV0ZSBsZW5ndGgiKTsK KyAJCXJldHVybiAoTlVMTCk7CisgCX0KKyAKKyAJLyogYWxsb2NhdGUgYnVmZmVycyBmb3IgYXR0 cmlidXRlcyAqLworLQlmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKQorKwlmb3IgKGkgPSAwOyBpIDwg bmF0dHI7IGkrKykKKyAJCWlmIChrZXlfYXR0cltpXS51bFZhbHVlTGVuID4gMCkKKyAJCQlrZXlf YXR0cltpXS5wVmFsdWUgPSB4Y2FsbG9jKDEsIGtleV9hdHRyW2ldLnVsVmFsdWVMZW4pOworIAor IAkvKiByZXRyaWV2ZSBJRCwgbW9kdWx1cyBhbmQgcHVibGljIGV4cG9uZW50IG9mIFJTQSBrZXkg Ki8KKy0JcnYgPSBmLT5DX0dldEF0dHJpYnV0ZVZhbHVlKHNlc3Npb24sICpvYmosIGtleV9hdHRy LCAzKTsKKysJcnYgPSBmLT5DX0dldEF0dHJpYnV0ZVZhbHVlKHNlc3Npb24sICpvYmosIGtleV9h dHRyLCBuYXR0cik7CisgCWlmIChydiAhPSBDS1JfT0spIHsKKyAJCWVycm9yKCJDX0dldEF0dHJp YnV0ZVZhbHVlIGZhaWxlZDogJWx1IiwgcnYpOworIAkJZ290byBmYWlsOworQEAgLTEwNDIsOCAr MTE4Niw4IEBAIHBrY3MxMV9mZXRjaF9yc2FfcHVia2V5KHN0cnVjdCBwa2NzMTFfcHJvdmlkZXIg KnAsIENLX1VMT05HIHNsb3RpZHgsCisgCQlnb3RvIGZhaWw7CisgCX0KKyAKKy0JcnNhX24gPSBC Tl9iaW4yYm4oa2V5X2F0dHJbMV0ucFZhbHVlLCBrZXlfYXR0clsxXS51bFZhbHVlTGVuLCBOVUxM KTsKKy0JcnNhX2UgPSBCTl9iaW4yYm4oa2V5X2F0dHJbMl0ucFZhbHVlLCBrZXlfYXR0clsyXS51 bFZhbHVlTGVuLCBOVUxMKTsKKysJcnNhX24gPSBCTl9iaW4yYm4oa2V5X2F0dHJbMl0ucFZhbHVl LCBrZXlfYXR0clsyXS51bFZhbHVlTGVuLCBOVUxMKTsKKysJcnNhX2UgPSBCTl9iaW4yYm4oa2V5 X2F0dHJbM10ucFZhbHVlLCBrZXlfYXR0clszXS51bFZhbHVlTGVuLCBOVUxMKTsKKyAJaWYgKHJz YV9uID09IE5VTEwgfHwgcnNhX2UgPT0gTlVMTCkgeworIAkJZXJyb3IoIkJOX2JpbjJibiBmYWls ZWQiKTsKKyAJCWdvdG8gZmFpbDsKK0BAIC0xMDc1LDcgKzEyMTksNyBAQCBwa2NzMTFfZmV0Y2hf cnNhX3B1YmtleShzdHJ1Y3QgcGtjczExX3Byb3ZpZGVyICpwLCBDS19VTE9ORyBzbG90aWR4LAor IAkvKiBzdWNjZXNzICovCisgCXN1Y2Nlc3MgPSAwOworIGZhaWw6CistCWZvciAoaSA9IDA7IGkg PCAzOyBpKyspCisrCWZvciAoaSA9IDA7IGkgPCBuYXR0cjsgaSsrKQorIAkJZnJlZShrZXlfYXR0 cltpXS5wVmFsdWUpOworIAlSU0FfZnJlZShyc2EpOworIAlpZiAoc3VjY2VzcyAhPSAwKSB7CitA QCAtMTA5MCw3ICsxMjM0LDggQEAgc3RhdGljIHN0cnVjdCBzc2hrZXkgKgorIHBrY3MxMV9mZXRj aF9lZDI1NTE5X3B1YmtleShzdHJ1Y3QgcGtjczExX3Byb3ZpZGVyICpwLCBDS19VTE9ORyBzbG90 aWR4LAorICAgICBDS19PQkpFQ1RfSEFORExFICpvYmopCisgeworLQlDS19BVFRSSUJVVEUJCSBr ZXlfYXR0clszXTsKKysJQ0tfQVRUUklCVVRFCQkga2V5X2F0dHJbNF07CisrCWludAkJCSBuYXR0 ciA9IDQ7CisgCUNLX1NFU1NJT05fSEFORExFCSBzZXNzaW9uOworIAlDS19GVU5DVElPTl9MSVNU CSpmID0gTlVMTDsKKyAJQ0tfUlYJCQkgcnY7CitAQCAtMTExMCwxNCArMTI1NSwxNSBAQCBwa2Nz MTFfZmV0Y2hfZWQyNTUxOV9wdWJrZXkoc3RydWN0IHBrY3MxMV9wcm92aWRlciAqcCwgQ0tfVUxP Tkcgc2xvdGlkeCwKKyAKKyAJbWVtc2V0KCZrZXlfYXR0ciwgMCwgc2l6ZW9mKGtleV9hdHRyKSk7 CisgCWtleV9hdHRyWzBdLnR5cGUgPSBDS0FfSUQ7CistCWtleV9hdHRyWzFdLnR5cGUgPSBDS0Ff RUNfUE9JTlQ7IC8qIFhYWCBvciBDS0FfVkFMVUUgPyAqLworLQlrZXlfYXR0clsyXS50eXBlID0g Q0tBX0VDX1BBUkFNUzsKKysJa2V5X2F0dHJbMV0udHlwZSA9IENLQV9MQUJFTDsKKysJa2V5X2F0 dHJbMl0udHlwZSA9IENLQV9FQ19QT0lOVDsgLyogWFhYIG9yIENLQV9WQUxVRSA/ICovCisrCWtl eV9hdHRyWzNdLnR5cGUgPSBDS0FfRUNfUEFSQU1TOworIAorLQlzZXNzaW9uID0gcC0+c2xvdGlu Zm9bc2xvdGlkeF0uc2Vzc2lvbjsKKy0JZiA9IHAtPmZ1bmN0aW9uX2xpc3Q7CisrCXNlc3Npb24g PSBwLT5tb2R1bGUtPnNsb3RpbmZvW3Nsb3RpZHhdLnNlc3Npb247CisrCWYgPSBwLT5tb2R1bGUt PmZ1bmN0aW9uX2xpc3Q7CisgCisgCS8qIGZpZ3VyZSBvdXQgc2l6ZSBvZiB0aGUgYXR0cmlidXRl cyAqLworLQlydiA9IGYtPkNfR2V0QXR0cmlidXRlVmFsdWUoc2Vzc2lvbiwgKm9iaiwga2V5X2F0 dHIsIDMpOworKwlydiA9IGYtPkNfR2V0QXR0cmlidXRlVmFsdWUoc2Vzc2lvbiwgKm9iaiwga2V5 X2F0dHIsIG5hdHRyKTsKKyAJaWYgKHJ2ICE9IENLUl9PSykgeworIAkJZXJyb3IoIkNfR2V0QXR0 cmlidXRlVmFsdWUgZmFpbGVkOiAlbHUiLCBydik7CisgCQlyZXR1cm4gKE5VTEwpOworQEAgLTEx MjgsMjggKzEyNzQsMjggQEAgcGtjczExX2ZldGNoX2VkMjU1MTlfcHVia2V5KHN0cnVjdCBwa2Nz MTFfcHJvdmlkZXIgKnAsIENLX1VMT05HIHNsb3RpZHgsCisgCSAqIGVuc3VyZSB0aGF0IG5vbmUg b2YgdGhlIG90aGVycyBhcmUgemVybyBsZW5ndGguCisgCSAqIFhYWCBhc3N1bWVzIENLQV9JRCBp cyBhbHdheXMgZmlyc3QuCisgCSAqLworLQlpZiAoa2V5X2F0dHJbMV0udWxWYWx1ZUxlbiA9PSAw IHx8CistCSAgICBrZXlfYXR0clsyXS51bFZhbHVlTGVuID09IDApIHsKKysJaWYgKGtleV9hdHRy WzJdLnVsVmFsdWVMZW4gPT0gMCB8fAorKwkgICAga2V5X2F0dHJbM10udWxWYWx1ZUxlbiA9PSAw KSB7CisgCQllcnJvcigiaW52YWxpZCBhdHRyaWJ1dGUgbGVuZ3RoIik7CisgCQlyZXR1cm4gKE5V TEwpOworIAl9CisgCisgCS8qIGFsbG9jYXRlIGJ1ZmZlcnMgZm9yIGF0dHJpYnV0ZXMgKi8KKy0J Zm9yIChpID0gMDsgaSA8IDM7IGkrKykgeworKwlmb3IgKGkgPSAwOyBpIDwgbmF0dHI7IGkrKykg eworIAkJaWYgKGtleV9hdHRyW2ldLnVsVmFsdWVMZW4gPiAwKQorIAkJCWtleV9hdHRyW2ldLnBW YWx1ZSA9IHhjYWxsb2MoMSwga2V5X2F0dHJbaV0udWxWYWx1ZUxlbik7CisgCX0KKyAKKyAJLyog cmV0cmlldmUgSUQsIHB1YmxpYyBwb2ludCBhbmQgY3VydmUgcGFyYW1ldGVycyBvZiBFQyBrZXkg Ki8KKy0JcnYgPSBmLT5DX0dldEF0dHJpYnV0ZVZhbHVlKHNlc3Npb24sICpvYmosIGtleV9hdHRy LCAzKTsKKysJcnYgPSBmLT5DX0dldEF0dHJpYnV0ZVZhbHVlKHNlc3Npb24sICpvYmosIGtleV9h dHRyLCBuYXR0cik7CisgCWlmIChydiAhPSBDS1JfT0spIHsKKyAJCWVycm9yKCJDX0dldEF0dHJp YnV0ZVZhbHVlIGZhaWxlZDogJWx1IiwgcnYpOworIAkJZ290byBmYWlsOworIAl9CisgCisgCS8q IEV4cGVjdCBvbmUgb2YgdGhlIHN1cHBvcnRlZCBpZGVudGlmaWVycyBpbiBDS0FfRUNfUEFSQU1T ICovCistCWQgPSAodV9jaGFyICopa2V5X2F0dHJbMl0ucFZhbHVlOworLQlsZW4gPSBrZXlfYXR0 clsyXS51bFZhbHVlTGVuOworKwlkID0gKHVfY2hhciAqKWtleV9hdHRyWzNdLnBWYWx1ZTsKKysJ bGVuID0ga2V5X2F0dHJbM10udWxWYWx1ZUxlbjsKKyAJaWYgKChsZW4gIT0gc2l6ZW9mKGlkMSkg fHwgbWVtY21wKGQsIGlkMSwgc2l6ZW9mKGlkMSkpICE9IDApICYmCisgCSAgICAobGVuICE9IHNp emVvZihpZDIpIHx8IG1lbWNtcChkLCBpZDIsIHNpemVvZihpZDIpKSAhPSAwKSkgeworIAkJaGV4 ID0gdG9oZXgoZCwgbGVuKTsKK0BAIC0xMTYxLDE2ICsxMzA3LDE2IEBAIHBrY3MxMV9mZXRjaF9l ZDI1NTE5X3B1YmtleShzdHJ1Y3QgcGtjczExX3Byb3ZpZGVyICpwLCBDS19VTE9ORyBzbG90aWR4 LAorIAkgKiBFeHBlY3QgZWl0aGVyIGEgcmF3IDMyIGJ5dGUgcHVia2V5IG9yIGFuIE9DVEVUIFNU UklORyB3aXRoCisgCSAqIGEgMzIgYnl0ZSBwdWJrZXkgaW4gQ0tBX1ZBTFVFCisgCSAqLworLQlk ID0gKHVfY2hhciAqKWtleV9hdHRyWzFdLnBWYWx1ZTsKKy0JbGVuID0ga2V5X2F0dHJbMV0udWxW YWx1ZUxlbjsKKysJZCA9ICh1X2NoYXIgKilrZXlfYXR0clsyXS5wVmFsdWU7CisrCWxlbiA9IGtl eV9hdHRyWzJdLnVsVmFsdWVMZW47CisgCWlmIChsZW4gPT0gRUQyNTUxOV9QS19TWiArIDIgJiYg ZFswXSA9PSAweDA0ICYmIGRbMV0gPT0gRUQyNTUxOV9QS19TWikgeworIAkJZCArPSAyOworIAkJ bGVuIC09IDI7CisgCX0KKyAJaWYgKGxlbiAhPSBFRDI1NTE5X1BLX1NaKSB7CistCQloZXggPSB0 b2hleChrZXlfYXR0clsxXS5wVmFsdWUsIGtleV9hdHRyWzFdLnVsVmFsdWVMZW4pOworKwkJaGV4 ID0gdG9oZXgoa2V5X2F0dHJbMl0ucFZhbHVlLCBrZXlfYXR0clsyXS51bFZhbHVlTGVuKTsKKyAJ CWxvZ2l0X2YoIkNLQV9FQ19QT0lOVCBpbnZhbGlkIG9jdGV0IHN0cjogJXMgKGxlbiAlbHUpIiwK Ky0JCSAgICBoZXgsICh1X2xvbmcpa2V5X2F0dHJbMV0udWxWYWx1ZUxlbik7CisrCQkgICAgaGV4 LCAodV9sb25nKWtleV9hdHRyWzJdLnVsVmFsdWVMZW4pOworIAkJZ290byBmYWlsOworIAl9Cisg CitAQCAtMTE5MCw3ICsxMzM2LDcgQEAgcGtjczExX2ZldGNoX2VkMjU1MTlfcHVia2V5KHN0cnVj dCBwa2NzMTFfcHJvdmlkZXIgKnAsIENLX1VMT05HIHNsb3RpZHgsCisgCQlrZXkgPSBOVUxMOwor IAl9CisgCWZyZWUoaGV4KTsKKy0JZm9yIChpID0gMDsgaSA8IDM7IGkrKykKKysJZm9yIChpID0g MDsgaSA8IG5hdHRyOyBpKyspCisgCQlmcmVlKGtleV9hdHRyW2ldLnBWYWx1ZSk7CisgCXJldHVy biBrZXk7CisgfQorQEAgLTEyMDAsNyArMTM0Niw4IEBAIHN0YXRpYyBpbnQKKyBwa2NzMTFfZmV0 Y2hfeDUwOV9wdWJrZXkoc3RydWN0IHBrY3MxMV9wcm92aWRlciAqcCwgQ0tfVUxPTkcgc2xvdGlk eCwKKyAgICAgQ0tfT0JKRUNUX0hBTkRMRSAqb2JqLCBzdHJ1Y3Qgc3Noa2V5ICoqa2V5cCwgY2hh ciAqKmxhYmVscCkKKyB7CistCUNLX0FUVFJJQlVURQkJIGNlcnRfYXR0clszXTsKKysJQ0tfQVRU UklCVVRFCQkgY2VydF9hdHRyWzRdOworKwlpbnQJCQkgbmF0dHIgPSA0OworIAlDS19TRVNTSU9O X0hBTkRMRQkgc2Vzc2lvbjsKKyAJQ0tfRlVOQ1RJT05fTElTVAkqZiA9IE5VTEw7CisgCUNLX1JW CQkJIHJ2OworQEAgLTEyMjYsMTQgKzEzNzMsMTUgQEAgcGtjczExX2ZldGNoX3g1MDlfcHVia2V5 KHN0cnVjdCBwa2NzMTFfcHJvdmlkZXIgKnAsIENLX1VMT05HIHNsb3RpZHgsCisgCisgCW1lbXNl dCgmY2VydF9hdHRyLCAwLCBzaXplb2YoY2VydF9hdHRyKSk7CisgCWNlcnRfYXR0clswXS50eXBl ID0gQ0tBX0lEOworLQljZXJ0X2F0dHJbMV0udHlwZSA9IENLQV9TVUJKRUNUOworLQljZXJ0X2F0 dHJbMl0udHlwZSA9IENLQV9WQUxVRTsKKysJY2VydF9hdHRyWzFdLnR5cGUgPSBDS0FfTEFCRUw7 CisrCWNlcnRfYXR0clsyXS50eXBlID0gQ0tBX1NVQkpFQ1Q7CisrCWNlcnRfYXR0clszXS50eXBl ID0gQ0tBX1ZBTFVFOworIAorLQlzZXNzaW9uID0gcC0+c2xvdGluZm9bc2xvdGlkeF0uc2Vzc2lv bjsKKy0JZiA9IHAtPmZ1bmN0aW9uX2xpc3Q7CisrCXNlc3Npb24gPSBwLT5tb2R1bGUtPnNsb3Rp bmZvW3Nsb3RpZHhdLnNlc3Npb247CisrCWYgPSBwLT5tb2R1bGUtPmZ1bmN0aW9uX2xpc3Q7Cisg CisgCS8qIGZpZ3VyZSBvdXQgc2l6ZSBvZiB0aGUgYXR0cmlidXRlcyAqLworLQlydiA9IGYtPkNf R2V0QXR0cmlidXRlVmFsdWUoc2Vzc2lvbiwgKm9iaiwgY2VydF9hdHRyLCAzKTsKKysJcnYgPSBm LT5DX0dldEF0dHJpYnV0ZVZhbHVlKHNlc3Npb24sICpvYmosIGNlcnRfYXR0ciwgbmF0dHIpOwor IAlpZiAocnYgIT0gQ0tSX09LKSB7CisgCQllcnJvcigiQ19HZXRBdHRyaWJ1dGVWYWx1ZSBmYWls ZWQ6ICVsdSIsIHJ2KTsKKyAJCXJldHVybiAtMTsKK0BAIC0xMjQ1LDE4ICsxMzkzLDE5IEBAIHBr Y3MxMV9mZXRjaF94NTA5X3B1YmtleShzdHJ1Y3QgcGtjczExX3Byb3ZpZGVyICpwLCBDS19VTE9O RyBzbG90aWR4LAorIAkgKiBYWFggYXNzdW1lcyBDS0FfSUQgaXMgYWx3YXlzIGZpcnN0LgorIAkg Ki8KKyAJaWYgKGNlcnRfYXR0clsxXS51bFZhbHVlTGVuID09IDAgfHwKKy0JICAgIGNlcnRfYXR0 clsyXS51bFZhbHVlTGVuID09IDApIHsKKysJICAgIGNlcnRfYXR0clsyXS51bFZhbHVlTGVuID09 IDAgfHwKKysJICAgIGNlcnRfYXR0clszXS51bFZhbHVlTGVuID09IDApIHsKKyAJCWVycm9yKCJp bnZhbGlkIGF0dHJpYnV0ZSBsZW5ndGgiKTsKKyAJCXJldHVybiAtMTsKKyAJfQorIAorIAkvKiBh bGxvY2F0ZSBidWZmZXJzIGZvciBhdHRyaWJ1dGVzICovCistCWZvciAoaSA9IDA7IGkgPCAzOyBp KyspCisrCWZvciAoaSA9IDA7IGkgPCBuYXR0cjsgaSsrKQorIAkJaWYgKGNlcnRfYXR0cltpXS51 bFZhbHVlTGVuID4gMCkKKyAJCQljZXJ0X2F0dHJbaV0ucFZhbHVlID0geGNhbGxvYygxLCBjZXJ0 X2F0dHJbaV0udWxWYWx1ZUxlbik7CisgCisgCS8qIHJldHJpZXZlIElELCBzdWJqZWN0IGFuZCB2 YWx1ZSBvZiBjZXJ0aWZpY2F0ZSAqLworLQlydiA9IGYtPkNfR2V0QXR0cmlidXRlVmFsdWUoc2Vz c2lvbiwgKm9iaiwgY2VydF9hdHRyLCAzKTsKKysJcnYgPSBmLT5DX0dldEF0dHJpYnV0ZVZhbHVl KHNlc3Npb24sICpvYmosIGNlcnRfYXR0ciwgbmF0dHIpOworIAlpZiAocnYgIT0gQ0tSX09LKSB7 CisgCQllcnJvcigiQ19HZXRBdHRyaWJ1dGVWYWx1ZSBmYWlsZWQ6ICVsdSIsIHJ2KTsKKyAJCWdv dG8gb3V0OworQEAgLTEyNzAsOCArMTQxOSw4IEBAIHBrY3MxMV9mZXRjaF94NTA5X3B1YmtleShz dHJ1Y3QgcGtjczExX3Byb3ZpZGVyICpwLCBDS19VTE9ORyBzbG90aWR4LAorIAkJc3ViamVjdCA9 IHhzdHJkdXAoImludmFsaWQgc3ViamVjdCIpOworIAlYNTA5X05BTUVfZnJlZSh4NTA5X25hbWUp OworIAorLQljcCA9IGNlcnRfYXR0clsyXS5wVmFsdWU7CistCWlmICgoeDUwOSA9IGQyaV9YNTA5 KE5VTEwsICZjcCwgY2VydF9hdHRyWzJdLnVsVmFsdWVMZW4pKSA9PSBOVUxMKSB7CisrCWNwID0g Y2VydF9hdHRyWzNdLnBWYWx1ZTsKKysJaWYgKCh4NTA5ID0gZDJpX1g1MDkoTlVMTCwgJmNwLCBj ZXJ0X2F0dHJbM10udWxWYWx1ZUxlbikpID09IE5VTEwpIHsKKyAJCWVycm9yKCJkMmlfeDUwOSBm YWlsZWQiKTsKKyAJCWdvdG8gb3V0OworIAl9CitAQCAtMTM4MSw3ICsxNTMwLDcgQEAgcGtjczEx X2ZldGNoX3g1MDlfcHVia2V5KHN0cnVjdCBwa2NzMTFfcHJvdmlkZXIgKnAsIENLX1VMT05HIHNs b3RpZHgsCisgCQlnb3RvIG91dDsKKyAJfQorICBvdXQ6CistCWZvciAoaSA9IDA7IGkgPCAzOyBp KyspCisrCWZvciAoaSA9IDA7IGkgPCBuYXR0cjsgaSsrKQorIAkJZnJlZShjZXJ0X2F0dHJbaV0u cFZhbHVlKTsKKyAJWDUwOV9mcmVlKHg1MDkpOworIAlSU0FfZnJlZShyc2EpOworQEAgLTE0MjQs MTEgKzE1NzMsMTIgQEAgbm90ZV9rZXkoc3RydWN0IHBrY3MxMV9wcm92aWRlciAqcCwgQ0tfVUxP Tkcgc2xvdGlkeCwgY29uc3QgY2hhciAqY29udGV4dCwKKyAgKi8KKyBzdGF0aWMgaW50CisgcGtj czExX2ZldGNoX2NlcnRzKHN0cnVjdCBwa2NzMTFfcHJvdmlkZXIgKnAsIENLX1VMT05HIHNsb3Rp ZHgsCistICAgIHN0cnVjdCBzc2hrZXkgKioqa2V5c3AsIGNoYXIgKioqbGFiZWxzcCwgaW50ICpu a2V5cykKKysgICAgc3RydWN0IHNzaGtleSAqKiprZXlzcCwgY2hhciAqKipsYWJlbHNwLCBpbnQg Km5rZXlzLCBzdHJ1Y3QgcGtjczExX3VyaSAqdXJpKQorIHsKKyAJc3RydWN0IHNzaGtleQkJKmtl eSA9IE5VTEw7CisgCUNLX09CSkVDVF9DTEFTUwkJIGtleV9jbGFzczsKKy0JQ0tfQVRUUklCVVRF CQkga2V5X2F0dHJbMV07CisrCUNLX0FUVFJJQlVURQkJIGtleV9hdHRyWzNdOworKwlpbnQJCQkg bmF0dHIgPSAxOworIAlDS19TRVNTSU9OX0hBTkRMRQkgc2Vzc2lvbjsKKyAJQ0tfRlVOQ1RJT05f TElTVAkqZiA9IE5VTEw7CisgCUNLX1JWCQkJIHJ2OworQEAgLTE0NDUsMTAgKzE1OTUsMjMgQEAg cGtjczExX2ZldGNoX2NlcnRzKHN0cnVjdCBwa2NzMTFfcHJvdmlkZXIgKnAsIENLX1VMT05HIHNs b3RpZHgsCisgCWtleV9hdHRyWzBdLnBWYWx1ZSA9ICZrZXlfY2xhc3M7CisgCWtleV9hdHRyWzBd LnVsVmFsdWVMZW4gPSBzaXplb2Yoa2V5X2NsYXNzKTsKKyAKKy0Jc2Vzc2lvbiA9IHAtPnNsb3Rp bmZvW3Nsb3RpZHhdLnNlc3Npb247CistCWYgPSBwLT5mdW5jdGlvbl9saXN0OworKwlpZiAodXJp LT5pZCAhPSBOVUxMKSB7CisrCQlrZXlfYXR0cltuYXR0cl0udHlwZSA9IENLQV9JRDsKKysJCWtl eV9hdHRyW25hdHRyXS5wVmFsdWUgPSB1cmktPmlkOworKwkJa2V5X2F0dHJbbmF0dHJdLnVsVmFs dWVMZW4gPSB1cmktPmlkX2xlbjsKKysJCW5hdHRyKys7CisrCX0KKysJaWYgKHVyaS0+b2JqZWN0 ICE9IE5VTEwpIHsKKysJCWtleV9hdHRyW25hdHRyXS50eXBlID0gQ0tBX0xBQkVMOworKwkJa2V5 X2F0dHJbbmF0dHJdLnBWYWx1ZSA9IHVyaS0+b2JqZWN0OworKwkJa2V5X2F0dHJbbmF0dHJdLnVs VmFsdWVMZW4gPSBzdHJsZW4odXJpLT5vYmplY3QpOworKwkJbmF0dHIrKzsKKysJfQorKworKwlz ZXNzaW9uID0gcC0+bW9kdWxlLT5zbG90aW5mb1tzbG90aWR4XS5zZXNzaW9uOworKwlmID0gcC0+ bW9kdWxlLT5mdW5jdGlvbl9saXN0OworIAorLQlydiA9IGYtPkNfRmluZE9iamVjdHNJbml0KHNl c3Npb24sIGtleV9hdHRyLCAxKTsKKysJcnYgPSBmLT5DX0ZpbmRPYmplY3RzSW5pdChzZXNzaW9u LCBrZXlfYXR0ciwgbmF0dHIpOworIAlpZiAocnYgIT0gQ0tSX09LKSB7CisgCQllcnJvcigiQ19G aW5kT2JqZWN0c0luaXQgZmFpbGVkOiAlbHUiLCBydik7CisgCQlnb3RvIGZhaWw7CitAQCAtMTUy MSw2ICsxNjg0LDEzIEBAIGZhaWw6CisgCisgCXJldHVybiAocmV0KTsKKyB9CisrI2Vsc2UKKytz dGF0aWMgaW50CisrcGtjczExX2ZldGNoX2NlcnRzKHN0cnVjdCBwa2NzMTFfcHJvdmlkZXIgKnAs IENLX1VMT05HIHNsb3RpZHgsCisrICAgIHN0cnVjdCBzc2hrZXkgKioqa2V5c3AsIGNoYXIgKioq bGFiZWxzcCwgaW50ICpua2V5cywgc3RydWN0IHBrY3MxMV91cmkgKnVyaSkKKyt7CisrCXJldHVy biAwOworK30KKyAjZW5kaWYgLyogV0lUSF9PUEVOU1NMICovCisgCisgLyoKK0BAIC0xNTMwLDEx ICsxNzAwLDEyIEBAIGZhaWw6CisgICovCisgc3RhdGljIGludAorIHBrY3MxMV9mZXRjaF9rZXlz KHN0cnVjdCBwa2NzMTFfcHJvdmlkZXIgKnAsIENLX1VMT05HIHNsb3RpZHgsCistICAgIHN0cnVj dCBzc2hrZXkgKioqa2V5c3AsIGNoYXIgKioqbGFiZWxzcCwgaW50ICpua2V5cykKKysgICAgc3Ry dWN0IHNzaGtleSAqKiprZXlzcCwgY2hhciAqKipsYWJlbHNwLCBpbnQgKm5rZXlzLCBzdHJ1Y3Qg cGtjczExX3VyaSAqdXJpKQorIHsKKyAJc3RydWN0IHNzaGtleQkJKmtleSA9IE5VTEw7CisgCUNL X09CSkVDVF9DTEFTUwkJIGtleV9jbGFzczsKKy0JQ0tfQVRUUklCVVRFCQkga2V5X2F0dHJbMl07 CisrCUNLX0FUVFJJQlVURQkJIGtleV9hdHRyWzNdOworKwlpbnQJCQkgbmF0dHIgPSAxOworIAlD S19TRVNTSU9OX0hBTkRMRQkgc2Vzc2lvbjsKKyAJQ0tfRlVOQ1RJT05fTElTVAkqZiA9IE5VTEw7 CisgCUNLX1JWCQkJIHJ2OworQEAgLTE1NTAsMTAgKzE3MjEsMjMgQEAgcGtjczExX2ZldGNoX2tl eXMoc3RydWN0IHBrY3MxMV9wcm92aWRlciAqcCwgQ0tfVUxPTkcgc2xvdGlkeCwKKyAJa2V5X2F0 dHJbMF0ucFZhbHVlID0gJmtleV9jbGFzczsKKyAJa2V5X2F0dHJbMF0udWxWYWx1ZUxlbiA9IHNp emVvZihrZXlfY2xhc3MpOworIAorLQlzZXNzaW9uID0gcC0+c2xvdGluZm9bc2xvdGlkeF0uc2Vz c2lvbjsKKy0JZiA9IHAtPmZ1bmN0aW9uX2xpc3Q7CisrCWlmICh1cmktPmlkICE9IE5VTEwpIHsK KysJCWtleV9hdHRyW25hdHRyXS50eXBlID0gQ0tBX0lEOworKwkJa2V5X2F0dHJbbmF0dHJdLnBW YWx1ZSA9IHVyaS0+aWQ7CisrCQlrZXlfYXR0cltuYXR0cl0udWxWYWx1ZUxlbiA9IHVyaS0+aWRf bGVuOworKwkJbmF0dHIrKzsKKysJfQorKwlpZiAodXJpLT5vYmplY3QgIT0gTlVMTCkgeworKwkJ a2V5X2F0dHJbbmF0dHJdLnR5cGUgPSBDS0FfTEFCRUw7CisrCQlrZXlfYXR0cltuYXR0cl0ucFZh bHVlID0gdXJpLT5vYmplY3Q7CisrCQlrZXlfYXR0cltuYXR0cl0udWxWYWx1ZUxlbiA9IHN0cmxl bih1cmktPm9iamVjdCk7CisrCQluYXR0cisrOworKwl9CisrCisrCXNlc3Npb24gPSBwLT5tb2R1 bGUtPnNsb3RpbmZvW3Nsb3RpZHhdLnNlc3Npb247CisrCWYgPSBwLT5tb2R1bGUtPmZ1bmN0aW9u X2xpc3Q7CisgCistCXJ2ID0gZi0+Q19GaW5kT2JqZWN0c0luaXQoc2Vzc2lvbiwga2V5X2F0dHIs IDEpOworKwlydiA9IGYtPkNfRmluZE9iamVjdHNJbml0KHNlc3Npb24sIGtleV9hdHRyLCBuYXR0 cik7CisgCWlmIChydiAhPSBDS1JfT0spIHsKKyAJCWVycm9yKCJDX0ZpbmRPYmplY3RzSW5pdCBm YWlsZWQ6ICVsdSIsIHJ2KTsKKyAJCWdvdG8gZmFpbDsKK0BAIC0xODQxLDE2ICsyMDI1LDEwIEBA IHBrY3MxMV9lY2RzYV9nZW5lcmF0ZV9wcml2YXRlX2tleShzdHJ1Y3QgcGtjczExX3Byb3ZpZGVy ICpwLCBDS19VTE9ORyBzbG90aWR4LAorIH0KKyAjZW5kaWYgLyogV0lUSF9QS0NTMTFfS0VZR0VO ICovCisgCistLyoKKy0gKiByZWdpc3RlciBhIG5ldyBwcm92aWRlciwgZmFpbHMgaWYgcHJvdmlk ZXIgYWxyZWFkeSBleGlzdHMuIGlmCistICoga2V5cCBpcyBwcm92aWRlZCwgZmV0Y2gga2V5cy4K Ky0gKi8KKyBzdGF0aWMgaW50CistcGtjczExX3JlZ2lzdGVyX3Byb3ZpZGVyKGNoYXIgKnByb3Zp ZGVyX2lkLCBjaGFyICpwaW4sCistICAgIHN0cnVjdCBzc2hrZXkgKioqa2V5cCwgY2hhciAqKips YWJlbHNwLAorLSAgICBzdHJ1Y3QgcGtjczExX3Byb3ZpZGVyICoqcHJvdmlkZXJwLCBDS19VTE9O RyB1c2VyKQorK3BrY3MxMV9pbml0aWFsaXplX3Byb3ZpZGVyKHN0cnVjdCBwa2NzMTFfdXJpICp1 cmksIHN0cnVjdCBwa2NzMTFfcHJvdmlkZXIgKipwcm92aWRlcnApCisgeworLQlpbnQgbmtleXMs IG5lZWRfZmluYWxpemUgPSAwOworKwlpbnQgbmVlZF9maW5hbGl6ZSA9IDA7CisgCWludCByZXQg PSAtMTsKKyAJc3RydWN0IHBrY3MxMV9wcm92aWRlciAqcCA9IE5VTEw7CisgCXZvaWQgKmhhbmRs ZSA9IE5VTEw7CitAQCAtMTg1OSwxMjggKzIwMzcsMTI2IEBAIHBrY3MxMV9yZWdpc3Rlcl9wcm92 aWRlcihjaGFyICpwcm92aWRlcl9pZCwgY2hhciAqcGluLAorIAlDS19GVU5DVElPTl9MSVNUICpm ID0gTlVMTDsKKyAJQ0tfVE9LRU5fSU5GTyAqdG9rZW47CisgCUNLX1VMT05HIGk7CisrCWNoYXIg KnByb3ZpZGVyX21vZHVsZSA9IE5VTEw7CisrCXN0cnVjdCBwa2NzMTFfbW9kdWxlICptID0gTlVM TDsKKysKKysJLyogaWYgbm8gcHJvdmlkZXIgc3BlY2lmaWVkLCBmYWxsYmFjayB0byBwMTEta2l0 ICovCisrCWlmICh1cmktPm1vZHVsZV9wYXRoID09IE5VTEwpIHsKKysjaWZkZWYgUEtDUzExX0RF RkFVTFRfUFJPVklERVIKKysJCXByb3ZpZGVyX21vZHVsZSA9IHN0cmR1cChQS0NTMTFfREVGQVVM VF9QUk9WSURFUik7CisrI2Vsc2UKKysJCWVycm9yX2YoIk5vIG1vZHVsZSBwYXRoIHByb3ZpZGVk Iik7CisrIAkJZ290byBmYWlsOworKyNlbmRpZgorKwl9IGVsc2UgeworKwkJcHJvdmlkZXJfbW9k dWxlID0gc3RyZHVwKHVyaS0+bW9kdWxlX3BhdGgpOworKwl9CisrCXAgPSB4Y2FsbG9jKDEsIHNp emVvZigqcCkpOworKwlwLT5uYW1lID0gcGtjczExX3VyaV9nZXQodXJpKTsKKyAKKy0JaWYgKHBy b3ZpZGVycCA9PSBOVUxMKQorLQkJZ290byBmYWlsOworLQkqcHJvdmlkZXJwID0gTlVMTDsKKy0K Ky0JaWYgKGtleXAgIT0gTlVMTCkKKy0JCSprZXlwID0gTlVMTDsKKy0JaWYgKGxhYmVsc3AgIT0g TlVMTCkKKy0JCSpsYWJlbHNwID0gTlVMTDsKKy0KKy0JaWYgKHBrY3MxMV9wcm92aWRlcl9sb29r dXAocHJvdmlkZXJfaWQpICE9IE5VTEwpIHsKKy0JCWRlYnVnX2YoInByb3ZpZGVyIGFscmVhZHkg cmVnaXN0ZXJlZDogJXMiLCBwcm92aWRlcl9pZCk7CisrCWlmIChsaWJfY29udGFpbnNfc3ltYm9s KHByb3ZpZGVyX21vZHVsZSwgIkNfR2V0RnVuY3Rpb25MaXN0IikgIT0gMCkgeworKwkJZXJyb3Io InByb3ZpZGVyICVzIGlzIG5vdCBhIFBLQ1MxMSBsaWJyYXJ5IiwgcHJvdmlkZXJfbW9kdWxlKTsK KyAJCWdvdG8gZmFpbDsKKyAJfQorLQlpZiAobGliX2NvbnRhaW5zX3N5bWJvbChwcm92aWRlcl9p ZCwgIkNfR2V0RnVuY3Rpb25MaXN0IikgIT0gMCkgeworLQkJZXJyb3IoInByb3ZpZGVyICVzIGlz IG5vdCBhIFBLQ1MxMSBsaWJyYXJ5IiwgcHJvdmlkZXJfaWQpOworLQkJZ290byBmYWlsOworKwlp ZiAoKG0gPSBwa2NzMTFfcHJvdmlkZXJfbG9va3VwX21vZHVsZShwcm92aWRlcl9tb2R1bGUpKSAh PSBOVUxMCisrCSAgICYmIG0tPnZhbGlkKSB7CisrCQlkZWJ1Z19mKCJwcm92aWRlciBtb2R1bGUg YWxyZWFkeSBpbml0aWFsaXplZDogJXMiLCBwcm92aWRlcl9tb2R1bGUpOworKwkJZnJlZShwcm92 aWRlcl9tb2R1bGUpOworKwkJLyogU2tpcCB0aGUgaW5pdGlhbGl6YXRpb24gb2YgUEtDUyMxMSBt b2R1bGUgKi8KKysJCW0tPnJlZmNvdW50Kys7CisrCQlwLT5tb2R1bGUgPSBtOworKwkJcC0+dmFs aWQgPSAxOworKwkJVEFJTFFfSU5TRVJUX1RBSUwoJnBrY3MxMV9wcm92aWRlcnMsIHAsIG5leHQp OworKwkJcC0+cmVmY291bnQrKzsJLyogYWRkIHRvIHByb3ZpZGVyIGxpc3QgKi8KKysJCSpwcm92 aWRlcnAgPSBwOworKwkJcmV0dXJuIDA7CisrCX0gZWxzZSB7CisrCQltID0geGNhbGxvYygxLCBz aXplb2YoKm0pKTsKKysJCXAtPm1vZHVsZSA9IG07CisrCQltLT5yZWZjb3VudCsrOworIAl9Cisr CisgCS8qIG9wZW4gc2hhcmVkIHBrY3MxMS1saWJyYXJ5ICovCistCWlmICgoaGFuZGxlID0gZGxv cGVuKHByb3ZpZGVyX2lkLCBSVExEX05PVykpID09IE5VTEwpIHsKKy0JCWVycm9yKCJkbG9wZW4g JXMgZmFpbGVkOiAlcyIsIHByb3ZpZGVyX2lkLCBkbGVycm9yKCkpOworKwlpZiAoKGhhbmRsZSA9 IGRsb3Blbihwcm92aWRlcl9tb2R1bGUsIFJUTERfTk9XKSkgPT0gTlVMTCkgeworKwkJZXJyb3Io ImRsb3BlbiAlcyBmYWlsZWQ6ICVzIiwgcHJvdmlkZXJfbW9kdWxlLCBkbGVycm9yKCkpOworIAkJ Z290byBmYWlsOworIAl9CisgCWlmICgoZ2V0ZnVuY3Rpb25saXN0ID0gZGxzeW0oaGFuZGxlLCAi Q19HZXRGdW5jdGlvbkxpc3QiKSkgPT0gTlVMTCkKKyAJCWZhdGFsKCJkbHN5bShDX0dldEZ1bmN0 aW9uTGlzdCkgZmFpbGVkOiAlcyIsIGRsZXJyb3IoKSk7CistCXAgPSB4Y2FsbG9jKDEsIHNpemVv ZigqcCkpOworLQlwLT5uYW1lID0geHN0cmR1cChwcm92aWRlcl9pZCk7CistCXAtPmhhbmRsZSA9 IGhhbmRsZTsKKy0JLyogc2V0IHVwIHRoZSBwa2NzMTEgY2FsbGJhY2tzICovCisrCXAtPm1vZHVs ZS0+aGFuZGxlID0gaGFuZGxlOworKwkvKiBzZXR1cCB0aGUgcGtjczExIGNhbGxiYWNrcyAqLwor IAlpZiAoKHJ2ID0gKCpnZXRmdW5jdGlvbmxpc3QpKCZmKSkgIT0gQ0tSX09LKSB7CisgCQllcnJv cigiQ19HZXRGdW5jdGlvbkxpc3QgZm9yIHByb3ZpZGVyICVzIGZhaWxlZDogJWx1IiwKKy0JCSAg ICBwcm92aWRlcl9pZCwgcnYpOworKwkJICAgIHByb3ZpZGVyX21vZHVsZSwgcnYpOworIAkJZ290 byBmYWlsOworIAl9CistCXAtPmZ1bmN0aW9uX2xpc3QgPSBmOworKwltLT5mdW5jdGlvbl9saXN0 ID0gZjsKKyAJaWYgKChydiA9IGYtPkNfSW5pdGlhbGl6ZShOVUxMKSkgIT0gQ0tSX09LKSB7Cisg CQllcnJvcigiQ19Jbml0aWFsaXplIGZvciBwcm92aWRlciAlcyBmYWlsZWQ6ICVsdSIsCistCQkg ICAgcHJvdmlkZXJfaWQsIHJ2KTsKKysJCSAgICBwcm92aWRlcl9tb2R1bGUsIHJ2KTsKKyAJCWdv dG8gZmFpbDsKKyAJfQorIAluZWVkX2ZpbmFsaXplID0gMTsKKy0JaWYgKChydiA9IGYtPkNfR2V0 SW5mbygmcC0+aW5mbykpICE9IENLUl9PSykgeworKwlpZiAoKHJ2ID0gZi0+Q19HZXRJbmZvKCZt LT5pbmZvKSkgIT0gQ0tSX09LKSB7CisgCQllcnJvcigiQ19HZXRJbmZvIGZvciBwcm92aWRlciAl cyBmYWlsZWQ6ICVsdSIsCistCQkgICAgcHJvdmlkZXJfaWQsIHJ2KTsKKysJCSAgICBwcm92aWRl cl9tb2R1bGUsIHJ2KTsKKyAJCWdvdG8gZmFpbDsKKyAJfQorLQlkZWJ1ZygicHJvdmlkZXIgJXM6 IG1hbnVmYWN0dXJlcklEIDwlLipzPiBjcnlwdG9raVZlcnNpb24gJWQuJWQiCistCSAgICAiIGxp YnJhcnlEZXNjcmlwdGlvbiA8JS4qcz4gbGlicmFyeVZlcnNpb24gJWQuJWQiLAorLQkgICAgcHJv dmlkZXJfaWQsCistCSAgICBSTVNQQUNFKHAtPmluZm8ubWFudWZhY3R1cmVySUQpLAorLQkgICAg cC0+aW5mby5jcnlwdG9raVZlcnNpb24ubWFqb3IsCistCSAgICBwLT5pbmZvLmNyeXB0b2tpVmVy c2lvbi5taW5vciwKKy0JICAgIFJNU1BBQ0UocC0+aW5mby5saWJyYXJ5RGVzY3JpcHRpb24pLAor LQkgICAgcC0+aW5mby5saWJyYXJ5VmVyc2lvbi5tYWpvciwKKy0JICAgIHAtPmluZm8ubGlicmFy eVZlcnNpb24ubWlub3IpOworLQlpZiAoKHJ2ID0gZi0+Q19HZXRTbG90TGlzdChDS19UUlVFLCBO VUxMLCAmcC0+bnNsb3RzKSkgIT0gQ0tSX09LKSB7CisrCXJtc3BhY2UobS0+aW5mby5tYW51ZmFj dHVyZXJJRCwgc2l6ZW9mKG0tPmluZm8ubWFudWZhY3R1cmVySUQpKTsKKysJaWYgKHVyaS0+bGli X21hbnVmICE9IE5VTEwgJiYKKysJICAgIHN0cm5jbXAodXJpLT5saWJfbWFudWYsIG0tPmluZm8u bWFudWZhY3R1cmVySUQsIDMyKSkgeworKwkJZGVidWdfZigiU2tpcHBpbmcgcHJvdmlkZXIgJXMg bm90IG1hdGNoaW5nIGxpYnJhcnlfbWFudWZhY3R1cmVyIiwKKysJCSAgICBtLT5pbmZvLm1hbnVm YWN0dXJlcklEKTsKKysgCQlnb3RvIGZhaWw7CisrIAl9CisrCXJtc3BhY2UobS0+aW5mby5saWJy YXJ5RGVzY3JpcHRpb24sIHNpemVvZihtLT5pbmZvLmxpYnJhcnlEZXNjcmlwdGlvbikpOworKwlk ZWJ1ZygicHJvdmlkZXIgJXM6IG1hbnVmYWN0dXJlcklEIDwlLjMycz4gY3J5cHRva2lWZXJzaW9u ICVkLiVkIgorKwkgICAgIiBsaWJyYXJ5RGVzY3JpcHRpb24gPCUuMzJzPiBsaWJyYXJ5VmVyc2lv biAlZC4lZCIsCisrCSAgICBwcm92aWRlcl9tb2R1bGUsCisrCSAgICBtLT5pbmZvLm1hbnVmYWN0 dXJlcklELAorKwkgICAgbS0+aW5mby5jcnlwdG9raVZlcnNpb24ubWFqb3IsCisrCSAgICBtLT5p bmZvLmNyeXB0b2tpVmVyc2lvbi5taW5vciwKKysJICAgIG0tPmluZm8ubGlicmFyeURlc2NyaXB0 aW9uLAorKwkgICAgbS0+aW5mby5saWJyYXJ5VmVyc2lvbi5tYWpvciwKKysJICAgIG0tPmluZm8u bGlicmFyeVZlcnNpb24ubWlub3IpOworKworKwlpZiAoKHJ2ID0gZi0+Q19HZXRTbG90TGlzdChD S19UUlVFLCBOVUxMLCAmbS0+bnNsb3RzKSkgIT0gQ0tSX09LKSB7CisgCQllcnJvcigiQ19HZXRT bG90TGlzdCBmYWlsZWQ6ICVsdSIsIHJ2KTsKKyAJCWdvdG8gZmFpbDsKKyAJfQorLQlpZiAocC0+ bnNsb3RzID09IDApIHsKKy0JCWRlYnVnX2YoInByb3ZpZGVyICVzIHJldHVybmVkIG5vIHNsb3Rz IiwgcHJvdmlkZXJfaWQpOworKwlpZiAobS0+bnNsb3RzID09IDApIHsKKysJCWRlYnVnX2YoInBy b3ZpZGVyICVzIHJldHVybmVkIG5vIHNsb3RzIiwgcHJvdmlkZXJfbW9kdWxlKTsKKyAJCXJldCA9 IC1TU0hfUEtDUzExX0VSUl9OT19TTE9UUzsKKyAJCWdvdG8gZmFpbDsKKyAJfQorLQlwLT5zbG90 bGlzdCA9IHhjYWxsb2MocC0+bnNsb3RzLCBzaXplb2YoQ0tfU0xPVF9JRCkpOworLQlpZiAoKHJ2 ID0gZi0+Q19HZXRTbG90TGlzdChDS19UUlVFLCBwLT5zbG90bGlzdCwgJnAtPm5zbG90cykpCisr CW0tPnNsb3RsaXN0ID0geGNhbGxvYyhtLT5uc2xvdHMsIHNpemVvZihDS19TTE9UX0lEKSk7Cisr CWlmICgocnYgPSBmLT5DX0dldFNsb3RMaXN0KENLX1RSVUUsIG0tPnNsb3RsaXN0LCAmbS0+bnNs b3RzKSkKKyAJICAgICE9IENLUl9PSykgeworIAkJZXJyb3IoIkNfR2V0U2xvdExpc3QgZm9yIHBy b3ZpZGVyICVzIGZhaWxlZDogJWx1IiwKKy0JCSAgICBwcm92aWRlcl9pZCwgcnYpOworKwkJICAg IHByb3ZpZGVyX21vZHVsZSwgcnYpOworIAkJZ290byBmYWlsOworIAl9CistCXAtPnNsb3RpbmZv ID0geGNhbGxvYyhwLT5uc2xvdHMsIHNpemVvZihzdHJ1Y3QgcGtjczExX3Nsb3RpbmZvKSk7Cisr CW0tPnNsb3RpbmZvID0geGNhbGxvYyhtLT5uc2xvdHMsIHNpemVvZihzdHJ1Y3QgcGtjczExX3Ns b3RpbmZvKSk7CisgCXAtPnZhbGlkID0gMTsKKy0JbmtleXMgPSAwOworLQlmb3IgKGkgPSAwOyBp IDwgcC0+bnNsb3RzOyBpKyspIHsKKy0JCXRva2VuID0gJnAtPnNsb3RpbmZvW2ldLnRva2VuOwor LQkJaWYgKChydiA9IGYtPkNfR2V0VG9rZW5JbmZvKHAtPnNsb3RsaXN0W2ldLCB0b2tlbikpCisr CW0tPnZhbGlkID0gMTsKKysJZm9yIChpID0gMDsgaSA8IG0tPm5zbG90czsgaSsrKSB7CisrCQl0 b2tlbiA9ICZtLT5zbG90aW5mb1tpXS50b2tlbjsKKysJCWlmICgocnYgPSBmLT5DX0dldFRva2Vu SW5mbyhtLT5zbG90bGlzdFtpXSwgdG9rZW4pKQorIAkJICAgICE9IENLUl9PSykgeworIAkJCWVy cm9yKCJDX0dldFRva2VuSW5mbyBmb3IgcHJvdmlkZXIgJXMgc2xvdCAlbHUgIgorLQkJCSAgICAi ZmFpbGVkOiAlbHUiLCBwcm92aWRlcl9pZCwgKHVfbG9uZylpLCBydik7CistCQkJY29udGludWU7 CistCQl9CistCQlpZiAoKHRva2VuLT5mbGFncyAmIENLRl9UT0tFTl9JTklUSUFMSVpFRCkgPT0g MCkgeworLQkJCWRlYnVnMl9mKCJpZ25vcmluZyB1bmluaXRpYWxpc2VkIHRva2VuIGluICIKKy0J CQkgICAgInByb3ZpZGVyICVzIHNsb3QgJWx1IiwgcHJvdmlkZXJfaWQsICh1X2xvbmcpaSk7Cisr CQkJICAgICJmYWlsZWQ6ICVsdSIsIHByb3ZpZGVyX21vZHVsZSwgKHVfbG9uZylpLCBydik7Cisg CQkJY29udGludWU7CisgCQl9CisgCQlkZWJ1ZygicHJvdmlkZXIgJXMgc2xvdCAlbHU6IGxhYmVs IDwlLipzPiAiCisgCQkgICAgIm1hbnVmYWN0dXJlcklEIDwlLipzPiBtb2RlbCA8JS4qcz4gc2Vy aWFsIDwlLipzPiAiCisgCQkgICAgImZsYWdzIDB4JWx4IiwKKy0JCSAgICBwcm92aWRlcl9pZCwg KHVuc2lnbmVkIGxvbmcpaSwKKysJCSAgICBwcm92aWRlcl9tb2R1bGUsICh1bnNpZ25lZCBsb25n KWksCisgCQkgICAgUk1TUEFDRSh0b2tlbi0+bGFiZWwpLCBSTVNQQUNFKHRva2VuLT5tYW51ZmFj dHVyZXJJRCksCisgCQkgICAgUk1TUEFDRSh0b2tlbi0+bW9kZWwpLCBSTVNQQUNFKHRva2VuLT5z ZXJpYWxOdW1iZXIpLAorIAkJICAgIHRva2VuLT5mbGFncyk7CistCQkvKgorLQkJICogb3BlbiBz ZXNzaW9uLCBsb2dpbiB3aXRoIHBpbiBhbmQgcmV0cmlldmUgcHVibGljCistCQkgKiBrZXlzIChp ZiBrZXlwIGlzIHByb3ZpZGVkKQorLQkJICovCistCQlpZiAoKHJldCA9IHBrY3MxMV9vcGVuX3Nl c3Npb24ocCwgaSwgcGluLCB1c2VyKSkgIT0gMCB8fAorLQkJICAgIGtleXAgPT0gTlVMTCkKKy0J CQljb250aW51ZTsKKy0JCXBrY3MxMV9mZXRjaF9rZXlzKHAsIGksIGtleXAsIGxhYmVsc3AsICZu a2V5cyk7CistI2lmZGVmIFdJVEhfT1BFTlNTTAorLQkJcGtjczExX2ZldGNoX2NlcnRzKHAsIGks IGtleXAsIGxhYmVsc3AsICZua2V5cyk7CistI2VuZGlmCistCQlpZiAobmtleXMgPT0gMCAmJiAh cC0+c2xvdGluZm9baV0ubG9nZ2VkX2luICYmCistCQkgICAgcGtjczExX2ludGVyYWN0aXZlKSB7 CistCQkJLyoKKy0JCQkgKiBTb21lIHRva2VucyByZXF1aXJlIGxvZ2luIGJlZm9yZSB0aGV5IHdp bGwKKy0JCQkgKiBleHBvc2Uga2V5cy4KKy0JCQkgKi8KKy0JCQlpZiAocGtjczExX2xvZ2luX3Ns b3QocCwgJnAtPnNsb3RpbmZvW2ldLAorLQkJCSAgICBDS1VfVVNFUikgPCAwKSB7CistCQkJCWVy cm9yKCJsb2dpbiBmYWlsZWQiKTsKKy0JCQkJY29udGludWU7CistCQkJfQorLQkJCXBrY3MxMV9m ZXRjaF9rZXlzKHAsIGksIGtleXAsIGxhYmVsc3AsICZua2V5cyk7CistI2lmZGVmIFdJVEhfT1BF TlNTTAorLQkJCXBrY3MxMV9mZXRjaF9jZXJ0cyhwLCBpLCBrZXlwLCBsYWJlbHNwLCAmbmtleXMp OworLSNlbmRpZgorLQkJfQorIAl9CisrCW0tPm1vZHVsZV9wYXRoID0gcHJvdmlkZXJfbW9kdWxl OworKwlwcm92aWRlcl9tb2R1bGUgPSBOVUxMOworIAorIAkvKiBub3cgb3duZWQgYnkgY2FsbGVy ICovCisgCSpwcm92aWRlcnAgPSBwOworQEAgLTE5ODgsMjEgKzIxNjQsMjIgQEAgcGtjczExX3Jl Z2lzdGVyX3Byb3ZpZGVyKGNoYXIgKnByb3ZpZGVyX2lkLCBjaGFyICpwaW4sCisgCVRBSUxRX0lO U0VSVF9UQUlMKCZwa2NzMTFfcHJvdmlkZXJzLCBwLCBuZXh0KTsKKyAJcC0+cmVmY291bnQrKzsJ LyogYWRkIHRvIHByb3ZpZGVyIGxpc3QgKi8KKyAKKy0JcmV0dXJuIChua2V5cyk7CisrCXJldHVy biAwOworIGZhaWw6CisgCWlmIChuZWVkX2ZpbmFsaXplICYmIChydiA9IGYtPkNfRmluYWxpemUo TlVMTCkpICE9IENLUl9PSykKKyAJCWVycm9yKCJDX0ZpbmFsaXplIGZvciBwcm92aWRlciAlcyBm YWlsZWQ6ICVsdSIsCistCQkgICAgcHJvdmlkZXJfaWQsIHJ2KTsKKysJCSAgICBwcm92aWRlcl9t b2R1bGUsIHJ2KTsKKysJZnJlZShwcm92aWRlcl9tb2R1bGUpOworKwlpZiAobSkgeworKwkJZnJl ZShtLT5zbG90bGlzdCk7CisrCQlmcmVlKG0pOworKwl9CisgCWlmIChwKSB7CisgCQlmcmVlKHAt Pm5hbWUpOworLQkJZnJlZShwLT5zbG90bGlzdCk7CistCQlmcmVlKHAtPnNsb3RpbmZvKTsKKyAJ CWZyZWUocCk7CisgCX0KKyAJaWYgKGhhbmRsZSkKKyAJCWRsY2xvc2UoaGFuZGxlKTsKKy0JaWYg KHJldCA+IDApCistCQlyZXQgPSAtMTsKKyAJcmV0dXJuIChyZXQpOworIH0KKyAKK0BAIC0yMDM4 LDE4ICsyMjE1LDE2MyBAQCBwa2NzMTFfdGVybWluYXRlKHZvaWQpCisgfQorIAorIC8qCistICog cmVnaXN0ZXIgYSBuZXcgcHJvdmlkZXIgYW5kIGdldCBudW1iZXIgb2Yga2V5cyBob2xkIGJ5IHRo ZSB0b2tlbiwKKy0gKiBmYWlscyBpZiBwcm92aWRlciBhbHJlYWR5IGV4aXN0cworKyAqIHJlZ2lz dGVyIGEgbmV3IHByb3ZpZGVyLCBmYWlscyBpZiBwcm92aWRlciBhbHJlYWR5IGV4aXN0cy4gaWYK KysgKiBrZXlwIGlzIHByb3ZpZGVkLCBmZXRjaCBrZXlzLgorICAqLworK3N0YXRpYyBpbnQKKytw a2NzMTFfcmVnaXN0ZXJfcHJvdmlkZXJfYnlfdXJpKHN0cnVjdCBwa2NzMTFfdXJpICp1cmksIGNo YXIgKnBpbiwKKysgICAgc3RydWN0IHNzaGtleSAqKiprZXlwLCBjaGFyICoqKmxhYmVsc3AsIHN0 cnVjdCBwa2NzMTFfcHJvdmlkZXIgKipwcm92aWRlcnAsCisrICAgIENLX1VMT05HIHVzZXIpCisr eworKwlpbnQgbmtleXM7CisrCWludCByZXQgPSAtMTsKKysJc3RydWN0IHBrY3MxMV9wcm92aWRl ciAqcCA9IE5VTEw7CisrCUNLX1VMT05HIGk7CisrCUNLX1RPS0VOX0lORk8gKnRva2VuOworKwlj aGFyICpwcm92aWRlcl91cmkgPSBOVUxMOworKworKwlpZiAocHJvdmlkZXJwID09IE5VTEwpCisr CQlnb3RvIGZhaWw7CisrCSpwcm92aWRlcnAgPSBOVUxMOworKworKwlpZiAoa2V5cCAhPSBOVUxM KQorKwkJKmtleXAgPSBOVUxMOworKworKwlpZiAoKHJldCA9IHBrY3MxMV9pbml0aWFsaXplX3By b3ZpZGVyKHVyaSwgJnApKSAhPSAwKSB7CisrCQlnb3RvIGZhaWw7CisrCX0KKysKKysJcHJvdmlk ZXJfdXJpID0gcGtjczExX3VyaV9nZXQodXJpKTsKKysJaWYgKHBpbiA9PSBOVUxMICYmIHVyaS0+ cGluICE9IE5VTEwpIHsKKysJCXBpbiA9IHVyaS0+cGluOworKwl9CisrCW5rZXlzID0gMDsKKysJ Zm9yIChpID0gMDsgaSA8IHAtPm1vZHVsZS0+bnNsb3RzOyBpKyspIHsKKysJCXRva2VuID0gJnAt Pm1vZHVsZS0+c2xvdGluZm9baV0udG9rZW47CisrCQlpZiAoKHRva2VuLT5mbGFncyAmIENLRl9U T0tFTl9JTklUSUFMSVpFRCkgPT0gMCkgeworKwkJCWRlYnVnMl9mKCJpZ25vcmluZyB1bmluaXRp YWxpc2VkIHRva2VuIGluICIKKysJCQkgICAgInByb3ZpZGVyICVzIHNsb3QgJWx1IiwgcHJvdmlk ZXJfdXJpLCAodV9sb25nKWkpOworKwkJCWNvbnRpbnVlOworKwkJfQorKwkJaWYgKHVyaS0+dG9r ZW4gIT0gTlVMTCAmJgorKwkJICAgIHN0cm5jbXAodG9rZW4tPmxhYmVsLCB1cmktPnRva2VuLCAz MikgIT0gMCkgeworKwkJCWRlYnVnMl9mKCJpZ25vcmluZyB0b2tlbiBub3QgbWF0Y2hpbmcgbGFi ZWwgKCUuMzJzKSAiCisrCQkJICAgICJzcGVjaWZpZWQgYnkgUEtDUyMxMSBVUkkgaW4gc2xvdCAl bHUiLAorKwkJCSAgICB0b2tlbi0+bGFiZWwsICh1bnNpZ25lZCBsb25nKWkpOworKwkJCWNvbnRp bnVlOworKwkJfQorKwkJaWYgKHVyaS0+bWFudWYgIT0gTlVMTCAmJgorKwkJICAgIHN0cm5jbXAo dG9rZW4tPm1hbnVmYWN0dXJlcklELCB1cmktPm1hbnVmLCAzMikgIT0gMCkgeworKwkJCWRlYnVn Ml9mKCJpZ25vcmluZyB0b2tlbiBub3QgbWF0Y2hpbmcgcmVxdXJlc3RlZCAiCisrCQkJICAgICJt YW51ZmFjdHVyZXJJRCAoJS4zMnMpIHNwZWNpZmllZCBieSBQS0NTIzExIFVSSSBpbiAiCisrCQkJ ICAgICJzbG90ICVsdSIsIHRva2VuLT5tYW51ZmFjdHVyZXJJRCwgKHVuc2lnbmVkIGxvbmcpaSk7 CisrCQkJY29udGludWU7CisrCQl9CisrCQlpZiAodXJpLT5zZXJpYWwgIT0gTlVMTCAmJgorKwkJ ICAgIHN0cm5jbXAodG9rZW4tPnNlcmlhbE51bWJlciwgdXJpLT5zZXJpYWwsIDE2KSAhPSAwKSB7 CisrCQkJZGVidWcyX2YoImlnbm9yaW5nIHRva2VuIG5vdCBtYXRjaGluZyByZXF1cmVzdGVkICIK KysJCQkgICAgInNlcmlhbE51bWJlciAoJXMpIHNwZWNpZmllZCBieSBQS0NTIzExIFVSSSBpbiAi CisrCQkJICAgICJzbG90ICVsdSIsIHRva2VuLT5zZXJpYWxOdW1iZXIsICh1bnNpZ25lZCBsb25n KWkpOworKwkJCWNvbnRpbnVlOworKwkJfQorKwkJZGVidWcoInByb3ZpZGVyICVzIHNsb3QgJWx1 OiBsYWJlbCA8JS4zMnM+IG1hbnVmYWN0dXJlcklEIDwlLjMycz4gIgorKwkJICAgICJtb2RlbCA8 JS4xNnM+IHNlcmlhbCA8JS4xNnM+IGZsYWdzIDB4JWx4IiwKKysJCSAgICBwcm92aWRlcl91cmks ICh1bnNpZ25lZCBsb25nKWksCisrCQkgICAgdG9rZW4tPmxhYmVsLCB0b2tlbi0+bWFudWZhY3R1 cmVySUQsIHRva2VuLT5tb2RlbCwKKysJCSAgICB0b2tlbi0+c2VyaWFsTnVtYmVyLCB0b2tlbi0+ ZmxhZ3MpOworKwkJLyoKKysJCSAqIG9wZW4gc2Vzc2lvbiBpZiBub3QgeWV0IG9wZW5lZCwgbG9n aW4gd2l0aCBwaW4gYW5kCisrCQkgKiByZXRyaWV2ZSBwdWJsaWMga2V5cyAoaWYga2V5cCBpcyBw cm92aWRlZCkKKysJCSAqLworKwkJaWYgKChwLT5tb2R1bGUtPnNsb3RpbmZvW2ldLnNlc3Npb24g IT0gMCB8fAorKwkJICAgIChyZXQgPSBwa2NzMTFfb3Blbl9zZXNzaW9uKHAsIGksIHBpbiwgdXNl cikpICE9IDApICYmIC8qID8/PyAqLworKwkJICAgIGtleXAgPT0gTlVMTCkKKysJCQljb250aW51 ZTsKKysJCXBrY3MxMV9mZXRjaF9rZXlzKHAsIGksIGtleXAsIGxhYmVsc3AsICZua2V5cywgdXJp KTsKKysJCXBrY3MxMV9mZXRjaF9jZXJ0cyhwLCBpLCBrZXlwLCBsYWJlbHNwLCAmbmtleXMsIHVy aSk7CisrCQlpZiAobmtleXMgPT0gMCAmJiAhcC0+bW9kdWxlLT5zbG90aW5mb1tpXS5sb2dnZWRf aW4gJiYKKysJCSAgICBwa2NzMTFfaW50ZXJhY3RpdmUpIHsKKysJCQkvKgorKwkJCSAqIFNvbWUg dG9rZW5zIHJlcXVpcmUgbG9naW4gYmVmb3JlIHRoZXkgd2lsbAorKwkJCSAqIGV4cG9zZSBrZXlz LgorKwkJCSAqLworKwkJCWRlYnVnM19mKCJUcnlpbmcgdG8gbG9naW4gYXMgdGhlcmUgd2VyZSBu byBrZXlzIGZvdW5kIik7CisrCQkJaWYgKHBrY3MxMV9sb2dpbl9zbG90KHAsICZwLT5tb2R1bGUt PnNsb3RpbmZvW2ldLAorKwkJCSAgICBDS1VfVVNFUikgPCAwKSB7CisrCQkJCWVycm9yKCJsb2dp biBmYWlsZWQiKTsKKysJCQkJY29udGludWU7CisrCQkJfQorKwkJCXBrY3MxMV9mZXRjaF9rZXlz KHAsIGksIGtleXAsIGxhYmVsc3AsICZua2V5cywgdXJpKTsKKysJCQlwa2NzMTFfZmV0Y2hfY2Vy dHMocCwgaSwga2V5cCwgbGFiZWxzcCwgJm5rZXlzLCB1cmkpOworKwkJfQorKwkJaWYgKG5rZXlz ID09IDAgJiYgdXJpLT5vYmplY3QgIT0gTlVMTCkgeworKwkJCWRlYnVnM19mKCJObyBrZXlzIGZv dW5kLiBSZXRyeWluZyB3aXRob3V0IGxhYmVsICglLjMycykgIiwKKysJCQkgICAgdXJpLT5vYmpl Y3QpOworKwkJCS8qIFRyeSBvbmNlIG1vcmUgd2l0aG91dCB0aGUgbGFiZWwgZmlsdGVyICovCisr CQkJY2hhciAqbGFiZWwgPSB1cmktPm9iamVjdDsKKysJCQl1cmktPm9iamVjdCA9IE5VTEw7IC8q IFhYWCBjbG9uZSB1cmk/ICovCisrCQkJcGtjczExX2ZldGNoX2tleXMocCwgaSwga2V5cCwgbGFi ZWxzcCwgJm5rZXlzLCB1cmkpOworKwkJCXBrY3MxMV9mZXRjaF9jZXJ0cyhwLCBpLCBrZXlwLCBs YWJlbHNwLCAmbmtleXMsIHVyaSk7CisrCQkJdXJpLT5vYmplY3QgPSBsYWJlbDsKKysJCX0KKysJ fQorKwlwaW4gPSBOVUxMOyAvKiBXaWxsIGJlIGNsZWFuZWQgdXAgd2l0aCBVUkkgKi8KKysKKysJ Lyogbm93IG93bmVkIGJ5IGNhbGxlciAqLworKwkqcHJvdmlkZXJwID0gcDsKKysKKysJZnJlZShw cm92aWRlcl91cmkpOworKwlyZXR1cm4gKG5rZXlzKTsKKysgZmFpbDoKKysJaWYgKHApIHsKKysJ CVRBSUxRX1JFTU9WRSgmcGtjczExX3Byb3ZpZGVycywgcCwgbmV4dCk7CisrCSAgICAgCXBrY3Mx MV9wcm92aWRlcl91bnJlZihwKTsKKysJfQorKwlpZiAocmV0ID4gMCkKKysJCXJldCA9IC0xOwor KwlyZXR1cm4gKHJldCk7CisrfQorKworKyNpZmRlZiBXSVRIX1BLQ1MxMV9LRVlHRU4KKytzdGF0 aWMgaW50CisrcGtjczExX3JlZ2lzdGVyX3Byb3ZpZGVyKGNoYXIgKnByb3ZpZGVyX2lkLCBjaGFy ICpwaW4sIHN0cnVjdCBzc2hrZXkgKioqa2V5cCwKKysgICAgY2hhciAqKipsYWJlbHNwLCBzdHJ1 Y3QgcGtjczExX3Byb3ZpZGVyICoqcHJvdmlkZXJwLCBDS19VTE9ORyB1c2VyKQorK3sKKysJc3Ry dWN0IHBrY3MxMV91cmkgKnVyaSA9IE5VTEw7CisrCWludCByOworKworKwlkZWJ1Z19mKCJjYWxs ZWQsIHByb3ZpZGVyX2lkID0gJXMiLCBwcm92aWRlcl9pZCk7CisrCisrCXVyaSA9IHBrY3MxMV91 cmlfaW5pdCgpOworKwlpZiAodXJpID09IE5VTEwpCisrCQlmYXRhbCgiZmFpbGVkIHRvIGluaXQg UEtDUyMxMSBVUkkiKTsKKysKKysJaWYgKHN0cmxlbihwcm92aWRlcl9pZCkgPj0gc3RybGVuKFBL Q1MxMV9VUklfU0NIRU1FKSAmJgorKwkgICAgc3RybmNtcChwcm92aWRlcl9pZCwgUEtDUzExX1VS SV9TQ0hFTUUsIHN0cmxlbihQS0NTMTFfVVJJX1NDSEVNRSkpID09IDApIHsKKysJCWlmIChwa2Nz MTFfdXJpX3BhcnNlKHByb3ZpZGVyX2lkLCB1cmkpICE9IDApCisrCQkJZmF0YWwoIkZhaWxlZCB0 byBwYXJzZSBQS0NTIzExIFVSSSIpOworKwl9IGVsc2UgeworKwkJdXJpLT5tb2R1bGVfcGF0aCA9 IHN0cmR1cChwcm92aWRlcl9pZCk7CisrCX0KKysKKysJciA9IHBrY3MxMV9yZWdpc3Rlcl9wcm92 aWRlcl9ieV91cmkodXJpLCBwaW4sIGtleXAsIGxhYmVsc3AsIHByb3ZpZGVycCwgdXNlcik7Cisr CXBrY3MxMV91cmlfY2xlYW51cCh1cmkpOworKworKwlyZXR1cm4gcjsKKyt9CisrI2VuZGlmCisr CisgaW50CistcGtjczExX2FkZF9wcm92aWRlcihjaGFyICpwcm92aWRlcl9pZCwgY2hhciAqcGlu LCBzdHJ1Y3Qgc3Noa2V5ICoqKmtleXAsCistICAgIGNoYXIgKioqbGFiZWxzcCkKKytwa2NzMTFf YWRkX3Byb3ZpZGVyX2J5X3VyaShzdHJ1Y3QgcGtjczExX3VyaSAqdXJpLCBjaGFyICpwaW4sCisr ICAgIHN0cnVjdCBzc2hrZXkgKioqa2V5cCwgY2hhciAqKipsYWJlbHNwKQorIHsKKyAJc3RydWN0 IHBrY3MxMV9wcm92aWRlciAqcCA9IE5VTEw7CisgCWludCBua2V5czsKKysJY2hhciAqcHJvdmlk ZXJfdXJpID0gcGtjczExX3VyaV9nZXQodXJpKTsKKyAKKy0JbmtleXMgPSBwa2NzMTFfcmVnaXN0 ZXJfcHJvdmlkZXIocHJvdmlkZXJfaWQsIHBpbiwga2V5cCwgbGFiZWxzcCwKKy0JICAgICZwLCBD S1VfVVNFUik7CisrCWRlYnVnX2YoImNhbGxlZCwgcHJvdmlkZXJfdXJpID0gJXMiLCBwcm92aWRl cl91cmkpOworKworKwlua2V5cyA9IHBrY3MxMV9yZWdpc3Rlcl9wcm92aWRlcl9ieV91cmkodXJp LCBwaW4sIGtleXAsIGxhYmVsc3AsICZwLCBDS1VfVVNFUik7CisgCisgCS8qIG5vIGtleXMgZm91 bmQgb3Igc29tZSBvdGhlciBlcnJvciwgZGUtcmVnaXN0ZXIgcHJvdmlkZXIgKi8KKyAJaWYgKG5r ZXlzIDw9IDAgJiYgcCAhPSBOVUxMKSB7CitAQCAtMjA1OCwxMSArMjM4MCwzOCBAQCBwa2NzMTFf YWRkX3Byb3ZpZGVyKGNoYXIgKnByb3ZpZGVyX2lkLCBjaGFyICpwaW4sIHN0cnVjdCBzc2hrZXkg Kioqa2V5cCwKKyAJCXBrY3MxMV9wcm92aWRlcl91bnJlZihwKTsKKyAJfQorIAlpZiAobmtleXMg PT0gMCkKKy0JCWRlYnVnX2YoInByb3ZpZGVyICVzIHJldHVybmVkIG5vIGtleXMiLCBwcm92aWRl cl9pZCk7CisrCQlkZWJ1Z19mKCJwcm92aWRlciAlcyByZXR1cm5lZCBubyBrZXlzIiwgcHJvdmlk ZXJfdXJpKTsKKyAKKysJZnJlZShwcm92aWRlcl91cmkpOworIAlyZXR1cm4gKG5rZXlzKTsKKyB9 CisgCisraW50CisrcGtjczExX2FkZF9wcm92aWRlcihjaGFyICpwcm92aWRlcl9pZCwgY2hhciAq cGluLAorKyAgICBzdHJ1Y3Qgc3Noa2V5ICoqKmtleXAsIGNoYXIgKioqbGFiZWxzcCkKKyt7Cisr CXN0cnVjdCBwa2NzMTFfdXJpICp1cmk7CisrCWludCBua2V5czsKKysKKysJdXJpID0gcGtjczEx X3VyaV9pbml0KCk7CisrCWlmICh1cmkgPT0gTlVMTCkKKysJCWZhdGFsKCJGYWlsZWQgdG8gaW5p dCBQS0NTIzExIFVSSSIpOworKworKwlpZiAoc3RybGVuKHByb3ZpZGVyX2lkKSA+PSBzdHJsZW4o UEtDUzExX1VSSV9TQ0hFTUUpICYmCisrCSAgICBzdHJuY21wKHByb3ZpZGVyX2lkLCBQS0NTMTFf VVJJX1NDSEVNRSwgc3RybGVuKFBLQ1MxMV9VUklfU0NIRU1FKSkgPT0gMCkgeworKwkJaWYgKHBr Y3MxMV91cmlfcGFyc2UocHJvdmlkZXJfaWQsIHVyaSkgIT0gMCkKKysJCQlmYXRhbCgiRmFpbGVk IHRvIHBhcnNlIFBLQ1MjMTEgVVJJIik7CisrCX0gZWxzZSB7CisrCQl1cmktPm1vZHVsZV9wYXRo ID0gc3RyZHVwKHByb3ZpZGVyX2lkKTsKKysJfQorKworKwlua2V5cyA9IHBrY3MxMV9hZGRfcHJv dmlkZXJfYnlfdXJpKHVyaSwgcGluLCBrZXlwLCBsYWJlbHNwKTsKKysJcGtjczExX3VyaV9jbGVh bnVwKHVyaSk7CisrCisrIAlyZXR1cm4gKG5rZXlzKTsKKyt9CisrCisrCisgaW50CisgcGtjczEx X3NpZ24oc3RydWN0IHNzaGtleSAqa2V5LAorICAgICB1X2NoYXIgKipzaWdwLCBzaXplX3QgKmxl bnAsCitkaWZmIC0tZ2l0IGEvc3NoLXBrY3MxMS5oIGIvc3NoLXBrY3MxMS5oCitpbmRleCAxZDAy NzdhNmQuLjEzNDU5NjQ0YyAxMDA2NDQKKy0tLSBhL3NzaC1wa2NzMTEuaAorKysrIGIvc3NoLXBr Y3MxMS5oCitAQCAtMjQsMTIgKzI0LDE2IEBACisgI2RlZmluZQlTU0hfUEtDUzExX0VSUl9QSU5f UkVRVUlSRUQJCTQKKyAjZGVmaW5lCVNTSF9QS0NTMTFfRVJSX1BJTl9MT0NLRUQJCTUKKyAKKysj aW5jbHVkZSAic3NoLXBrY3MxMS11cmkuaCIKKysKKyBzdHJ1Y3Qgc3Noa2V5OworIAorIGludAlw a2NzMTFfaW5pdChpbnQpOworIHZvaWQJcGtjczExX3Rlcm1pbmF0ZSh2b2lkKTsKKyBpbnQJcGtj czExX2FkZF9wcm92aWRlcihjaGFyICosIGNoYXIgKiwgc3RydWN0IHNzaGtleSAqKiosIGNoYXIg KioqKTsKKytpbnQJcGtjczExX2FkZF9wcm92aWRlcl9ieV91cmkoc3RydWN0IHBrY3MxMV91cmkg KiwgY2hhciAqLCBzdHJ1Y3Qgc3Noa2V5ICoqKiwgY2hhciAqKiopOworIGludAlwa2NzMTFfZGVs X3Byb3ZpZGVyKGNoYXIgKik7CisraW50CXBrY3MxMV91cmlfd3JpdGUoY29uc3Qgc3RydWN0IHNz aGtleSAqLCBGSUxFICopOworIGludAlwa2NzMTFfc2lnbihzdHJ1Y3Qgc3Noa2V5ICosIHVfY2hh ciAqKiwgc2l6ZV90ICosCisgCSAgICBjb25zdCB1X2NoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFy ICosIGNvbnN0IGNoYXIgKiwKKyAJICAgIGNvbnN0IGNoYXIgKiwgdV9pbnQpOworZGlmZiAtLWdp dCBhL3NzaC5jIGIvc3NoLmMKK2luZGV4IGMzMTlkMDhhZi4uYzc5ZDY5ZWYwIDEwMDY0NAorLS0t IGEvc3NoLmMKKysrKyBiL3NzaC5jCitAQCAtODQ0LDYgKzg0NCwxNCBAQCBtYWluKGludCBhYywg Y2hhciAqKmF2KQorIAkJCW9wdGlvbnMuZ3NzX2RlbGVnX2NyZWRzID0gMTsKKyAJCQlicmVhazsK KyAJCWNhc2UgJ2knOgorKyNpZmRlZiBFTkFCTEVfUEtDUzExCisrCQkJaWYgKHN0cmxlbihvcHRh cmcpID49IHN0cmxlbihQS0NTMTFfVVJJX1NDSEVNRSkgJiYKKysJCQkgICAgc3RybmNtcChvcHRh cmcsIFBLQ1MxMV9VUklfU0NIRU1FLAorKwkJCSAgICBzdHJsZW4oUEtDUzExX1VSSV9TQ0hFTUUp KSA9PSAwKSB7CisrCQkJCWFkZF9pZGVudGl0eV9maWxlKCZvcHRpb25zLCBOVUxMLCBvcHRhcmcs IDEpOworKwkJCQlicmVhazsKKysJCQl9CisrI2VuZGlmCisgCQkJcCA9IHRpbGRlX2V4cGFuZF9m aWxlbmFtZShvcHRhcmcsIGdldHVpZCgpKTsKKyAJCQlpZiAoc3RhdChwLCAmc3QpID09IC0xKQor IAkJCQlmcHJpbnRmKHN0ZGVyciwgIldhcm5pbmc6IElkZW50aXR5IGZpbGUgJXMgIgorQEAgLTE4 MjMsNiArMTgzMSw3IEBAIG1haW4oaW50IGFjLCBjaGFyICoqYXYpCisgCisgI2lmZGVmIEVOQUJM RV9QS0NTMTEKKyAJKHZvaWQpcGtjczExX2RlbF9wcm92aWRlcihvcHRpb25zLnBrY3MxMV9wcm92 aWRlcik7CisrCXBrY3MxMV90ZXJtaW5hdGUoKTsKKyAjZW5kaWYKKyAKKyAgc2tpcF9jb25uZWN0 OgorQEAgLTIzMzQsNiArMjM0Myw0NSBAQCBzc2hfc2Vzc2lvbjIoc3RydWN0IHNzaCAqc3NoLCBj b25zdCBzdHJ1Y3Qgc3NoX2Nvbm5faW5mbyAqY2luZm8pCisgCSAgICBvcHRpb25zLmVzY2FwZV9j aGFyIDogU1NIX0VTQ0FQRUNIQVJfTk9ORSwgaWQpOworIH0KKyAKKysjaWZkZWYgRU5BQkxFX1BL Q1MxMQorK3N0YXRpYyB2b2lkCisrbG9hZF9wa2NzMTFfaWRlbnRpdHkoY2hhciAqcGtjczExX3Vy aSwgY2hhciAqaWRlbnRpdHlfZmlsZXNbXSwKKysgICAgc3RydWN0IHNzaGtleSAqaWRlbnRpdHlf a2V5c1tdLCBpbnQgKm5faWRzKQorK3sKKysJaW50IG5rZXlzLCBpOworKwlzdHJ1Y3Qgc3Noa2V5 ICoqa2V5czsKKysJc3RydWN0IHBrY3MxMV91cmkgKnVyaTsKKysKKysJZGVidWcoImlkZW50aXR5 IGZpbGUgJyVzJyBmcm9tIHBrY3MjMTEiLCBwa2NzMTFfdXJpKTsKKysJdXJpID0gcGtjczExX3Vy aV9pbml0KCk7CisrCWlmICh1cmkgPT0gTlVMTCkKKysJCWZhdGFsKCJGYWlsZWQgdG8gaW5pdCBQ S0NTIzExIFVSSSIpOworKworKwlpZiAocGtjczExX3VyaV9wYXJzZShwa2NzMTFfdXJpLCB1cmkp ICE9IDApCisrCWZhdGFsKCJGYWlsZWQgdG8gcGFyc2UgUEtDUyMxMSBVUkkgJXMiLCBwa2NzMTFf dXJpKTsKKysKKysJLyogd2UgbmVlZCB0byBtZXJnZSBVUkkgYW5kIHByb3ZpZGVyIHRvZ2V0aGVy ICovCisrCWlmIChvcHRpb25zLnBrY3MxMV9wcm92aWRlciAhPSBOVUxMICYmIHVyaS0+bW9kdWxl X3BhdGggPT0gTlVMTCkKKysJCXVyaS0+bW9kdWxlX3BhdGggPSBzdHJkdXAob3B0aW9ucy5wa2Nz MTFfcHJvdmlkZXIpOworKworKwlpZiAob3B0aW9ucy5udW1faWRlbnRpdHlfZmlsZXMgPCBTU0hf TUFYX0lERU5USVRZX0ZJTEVTICYmCisrCSAgICAobmtleXMgPSBwa2NzMTFfYWRkX3Byb3ZpZGVy X2J5X3VyaSh1cmksIE5VTEwsICZrZXlzLCBOVUxMKSkgPiAwKSB7CisrCQlmb3IgKGkgPSAwOyBp IDwgbmtleXM7IGkrKykgeworKwkJCWlmICgqbl9pZHMgPj0gU1NIX01BWF9JREVOVElUWV9GSUxF UykgeworKwkJCQlzc2hrZXlfZnJlZShrZXlzW2ldKTsKKysJCQkJY29udGludWU7CisrCQkJfQor KwkJCWlkZW50aXR5X2tleXNbKm5faWRzXSA9IGtleXNbaV07CisrCQkJaWRlbnRpdHlfZmlsZXNb Km5faWRzXSA9IHBrY3MxMV91cmlfZ2V0KHVyaSk7CisrCQkJKCpuX2lkcykrKzsKKysJCX0KKysJ CWZyZWUoa2V5cyk7CisrCX0KKysKKysJcGtjczExX3VyaV9jbGVhbnVwKHVyaSk7CisrfQorKyNl bmRpZiAvKiBFTkFCTEVfUEtDUzExICovCisrCisgLyogTG9hZHMgYWxsIElkZW50aXR5RmlsZSBh bmQgQ2VydGlmaWNhdGVGaWxlIGtleXMgKi8KKyBzdGF0aWMgdm9pZAorIGxvYWRfcHVibGljX2lk ZW50aXR5X2ZpbGVzKGNvbnN0IHN0cnVjdCBzc2hfY29ubl9pbmZvICpjaW5mbykKK0BAIC0yMzQ4 LDExICsyMzk2LDYgQEAgbG9hZF9wdWJsaWNfaWRlbnRpdHlfZmlsZXMoY29uc3Qgc3RydWN0IHNz aF9jb25uX2luZm8gKmNpbmZvKQorIAljaGFyICpjZXJ0aWZpY2F0ZV9maWxlc1tTU0hfTUFYX0NF UlRJRklDQVRFX0ZJTEVTXTsKKyAJc3RydWN0IHNzaGtleSAqY2VydGlmaWNhdGVzW1NTSF9NQVhf Q0VSVElGSUNBVEVfRklMRVNdOworIAlpbnQgY2VydGlmaWNhdGVfZmlsZV91c2VycHJvdmlkZWRb U1NIX01BWF9DRVJUSUZJQ0FURV9GSUxFU107CistI2lmZGVmIEVOQUJMRV9QS0NTMTEKKy0Jc3Ry dWN0IHNzaGtleSAqKmtleXMgPSBOVUxMOworLQljaGFyICoqY29tbWVudHMgPSBOVUxMOworLQlp bnQgbmtleXM7CistI2VuZGlmIC8qIFBLQ1MxMSAqLworIAorIAluX2lkcyA9IG5fY2VydHMgPSAw OworIAltZW1zZXQoaWRlbnRpdHlfZmlsZXMsIDAsIHNpemVvZihpZGVudGl0eV9maWxlcykpOwor QEAgLTIzNjUsMzMgKzI0MDgsNDYgQEAgbG9hZF9wdWJsaWNfaWRlbnRpdHlfZmlsZXMoY29uc3Qg c3RydWN0IHNzaF9jb25uX2luZm8gKmNpbmZvKQorIAkgICAgc2l6ZW9mKGNlcnRpZmljYXRlX2Zp bGVfdXNlcnByb3ZpZGVkKSk7CisgCisgI2lmZGVmIEVOQUJMRV9QS0NTMTEKKy0JaWYgKG9wdGlv bnMucGtjczExX3Byb3ZpZGVyICE9IE5VTEwgJiYKKy0JICAgIG9wdGlvbnMubnVtX2lkZW50aXR5 X2ZpbGVzIDwgU1NIX01BWF9JREVOVElUWV9GSUxFUyAmJgorLQkgICAgKHBrY3MxMV9pbml0KCFv cHRpb25zLmJhdGNoX21vZGUpID09IDApICYmCistCSAgICAobmtleXMgPSBwa2NzMTFfYWRkX3By b3ZpZGVyKG9wdGlvbnMucGtjczExX3Byb3ZpZGVyLCBOVUxMLAorLQkgICAgJmtleXMsICZjb21t ZW50cykpID4gMCkgeworLQkJZm9yIChpID0gMDsgaSA8IG5rZXlzOyBpKyspIHsKKy0JCQlpZiAo bl9pZHMgPj0gU1NIX01BWF9JREVOVElUWV9GSUxFUykgeworLQkJCQlzc2hrZXlfZnJlZShrZXlz W2ldKTsKKy0JCQkJZnJlZShjb21tZW50c1tpXSk7CistCQkJCWNvbnRpbnVlOworLQkJCX0KKy0J CQlpZGVudGl0eV9rZXlzW25faWRzXSA9IGtleXNbaV07CistCQkJaWRlbnRpdHlfZmlsZXNbbl9p ZHNdID0gY29tbWVudHNbaV07IC8qIHRyYW5zZmVycmVkICovCistCQkJbl9pZHMrKzsKKy0JCX0K Ky0JCWZyZWUoa2V5cyk7CistCQlmcmVlKGNvbW1lbnRzKTsKKysJLyogaGFuZGxlIGZhbGxiYWNr IGZyb20gUEtDUzExUHJvdmlkZXIgb3B0aW9uICovCisrCXBrY3MxMV9pbml0KCFvcHRpb25zLmJh dGNoX21vZGUpOworKworKwlpZiAob3B0aW9ucy5wa2NzMTFfcHJvdmlkZXIgIT0gTlVMTCkgewor KwkJc3RydWN0IHBrY3MxMV91cmkgKnVyaTsKKysKKysJCXVyaSA9IHBrY3MxMV91cmlfaW5pdCgp OworKwkJaWYgKHVyaSA9PSBOVUxMKQorKwkJCWZhdGFsKCJGYWlsZWQgdG8gaW5pdCBQS0NTIzEx IFVSSSIpOworKworKwkJLyogQ29uc3RydWN0IHNpbXBsZSBQS0NTIzExIFVSSSB0byBzaW1wbGlm eSBhY2Nlc3MgKi8KKysJCXVyaS0+bW9kdWxlX3BhdGggPSBzdHJkdXAob3B0aW9ucy5wa2NzMTFf cHJvdmlkZXIpOworKworKwkJLyogQWRkIGl0IGFzIGFueSBvdGhlciBJZGVudGl0eUZpbGUgKi8K KysJCWNwID0gcGtjczExX3VyaV9nZXQodXJpKTsKKysJCWFkZF9pZGVudGl0eV9maWxlKCZvcHRp b25zLCBOVUxMLCBjcCwgMSk7CisrCQlmcmVlKGNwKTsKKysKKysJCXBrY3MxMV91cmlfY2xlYW51 cCh1cmkpOworIAl9CisgI2VuZGlmIC8qIEVOQUJMRV9QS0NTMTEgKi8KKyAJZm9yIChpID0gMDsg aSA8IG9wdGlvbnMubnVtX2lkZW50aXR5X2ZpbGVzOyBpKyspIHsKKysJCWNoYXIgKm5hbWUgPSBv cHRpb25zLmlkZW50aXR5X2ZpbGVzW2ldOworIAkJaWYgKG5faWRzID49IFNTSF9NQVhfSURFTlRJ VFlfRklMRVMgfHwKKy0JCSAgICBzdHJjYXNlY21wKG9wdGlvbnMuaWRlbnRpdHlfZmlsZXNbaV0s ICJub25lIikgPT0gMCkgeworKwkJICAgIHN0cmNhc2VjbXAobmFtZSwgIm5vbmUiKSA9PSAwKSB7 CisgCQkJZnJlZShvcHRpb25zLmlkZW50aXR5X2ZpbGVzW2ldKTsKKyAJCQlvcHRpb25zLmlkZW50 aXR5X2ZpbGVzW2ldID0gTlVMTDsKKyAJCQljb250aW51ZTsKKyAJCX0KKy0JCWNwID0gdGlsZGVf ZXhwYW5kX2ZpbGVuYW1lKG9wdGlvbnMuaWRlbnRpdHlfZmlsZXNbaV0sIGdldHVpZCgpKTsKKysj aWZkZWYgRU5BQkxFX1BLQ1MxMQorKwkJaWYgKHN0cmxlbihuYW1lKSA+PSBzdHJsZW4oUEtDUzEx X1VSSV9TQ0hFTUUpICYmCisrCQkgICAgc3RybmNtcChuYW1lLCBQS0NTMTFfVVJJX1NDSEVNRSwK KysJCSAgICBzdHJsZW4oUEtDUzExX1VSSV9TQ0hFTUUpKSA9PSAwKSB7CisrCQkJbG9hZF9wa2Nz MTFfaWRlbnRpdHkobmFtZSwgaWRlbnRpdHlfZmlsZXMsCisrCQkJICAgIGlkZW50aXR5X2tleXMs ICZuX2lkcyk7CisrCQkJZnJlZShvcHRpb25zLmlkZW50aXR5X2ZpbGVzW2ldKTsKKysJCQljb250 aW51ZTsKKysJCX0KKysjZW5kaWYgLyogRU5BQkxFX1BLQ1MxMSAqLworKwkJY3AgPSB0aWxkZV9l eHBhbmRfZmlsZW5hbWUobmFtZSwgZ2V0dWlkKCkpOworIAkJZmlsZW5hbWUgPSBkZWZhdWx0X2Ns aWVudF9wZXJjZW50X2RvbGxhcl9leHBhbmQoY3AsIGNpbmZvKTsKKyAJCWZyZWUoY3ApOworIAkJ Y2hlY2tfbG9hZChzc2hrZXlfbG9hZF9wdWJsaWMoZmlsZW5hbWUsICZwdWJsaWMsIE5VTEwpLAor ZGlmZiAtLWdpdCBhL3NzaF9jb25maWcuNSBiL3NzaF9jb25maWcuNQoraW5kZXggNjdkNTJkODc0 Li4xMmNkM2Y3ZTEgMTAwNjQ0CistLS0gYS9zc2hfY29uZmlnLjUKKysrKyBiL3NzaF9jb25maWcu NQorQEAgLTEzMDEsNiArMTMwMSwyMSBAQCBtYXkgYWxzbyBiZSB1c2VkIGluIGNvbmp1bmN0aW9u IHdpdGgKKyAuQ20gQ2VydGlmaWNhdGVGaWxlCisgaW4gb3JkZXIgdG8gcHJvdmlkZSBhbnkgY2Vy dGlmaWNhdGUgYWxzbyBuZWVkZWQgZm9yIGF1dGhlbnRpY2F0aW9uIHdpdGgKKyB0aGUgaWRlbnRp dHkuCisrLlBwCisrVGhlIGF1dGhlbnRpY2F0aW9uIGlkZW50aXR5IGNhbiBiZSBhbHNvIHNwZWNp ZmllZCBpbiBhIGZvcm0gb2YgUEtDUyMxMSBVUkkKKytzdGFydGluZyB3aXRoIGEgc3RyaW5nCisr LkNtIHBrY3MxMTogLgorK1RoZXJlIGlzIHN1cHBvcnRlZCBhIHN1YnNldCBvZiB0aGUgUEtDUyMx MSBVUkkgYXMgZGVmaW5lZAorK2luIFJGQyA3NTEyIChpbXBsZW1lbnRlZCBwYXRoIGFyZ3VtZW50 cworKy5DbSBpZCAsCisrLkNtIG1hbnVmYWN0dXJlciAsCisrLkNtIG9iamVjdCAsCisrLkNtIHRv a2VuCisrYW5kIHF1ZXJ5IGFyZ3VtZW50cworKy5DbSBtb2R1bGUtcGF0aAorK2FuZAorKy5DbSBw aW4tdmFsdWUKKyspLiBUaGUgVVJJIGNhbiBub3QgYmUgaW4gcXVvdGVzLgorIC5JdCBDbSBJZ25v cmVVbmtub3duCisgU3BlY2lmaWVzIGEgcGF0dGVybi1saXN0IG9mIHVua25vd24gb3B0aW9ucyB0 byBiZSBpZ25vcmVkIGlmIHRoZXkgYXJlCisgZW5jb3VudGVyZWQgaW4gY29uZmlndXJhdGlvbiBw YXJzaW5nLgorZGlmZiAtLWdpdCBhL3NzaGtleS5jIGIvc3Noa2V5LmMKK2luZGV4IGUzZmIyOWU3 MC4uODJlZjFjOGRhIDEwMDY0NAorLS0tIGEvc3Noa2V5LmMKKysrKyBiL3NzaGtleS5jCitAQCAt ODY4LDggKzg2OCwxMCBAQCBzc2hrZXlfZnJlZV9jb250ZW50cyhzdHJ1Y3Qgc3Noa2V5ICprKQor IAorIAlpZiAoayA9PSBOVUxMKQorIAkJcmV0dXJuOworKyNpZmRlZiBFTkFCTEVfUEtDUzExCisg CWlmICgoay0+ZmxhZ3MgJiBTU0hLRVlfRkxBR19FWFQpICE9IDApCisgCQlwa2NzMTFfa2V5X2Zy ZWUoayk7CisrI2VuZGlmCisgCWlmICgoaW1wbCA9IHNzaGtleV9pbXBsX2Zyb21fdHlwZShrLT50 eXBlKSkgIT0gTlVMTCAmJgorIAkgICAgaW1wbC0+ZnVuY3MtPmNsZWFudXAgIT0gTlVMTCkKKyAJ CWltcGwtPmZ1bmNzLT5jbGVhbnVwKGspOworQEAgLTIzMTYsOSArMjMxOCwxMSBAQCBzc2hrZXlf c2lnbihzdHJ1Y3Qgc3Noa2V5ICprZXksCisgCWlmIChzc2hrZXlfaXNfc2soa2V5KSkgeworIAkJ ciA9IHNzaHNrX3NpZ24oc2tfcHJvdmlkZXIsIGtleSwgc2lncCwgbGVucCwgZGF0YSwKKyAJCSAg ICBkYXRhbGVuLCBjb21wYXQsIHNrX3Bpbik7CisrI2lmZGVmIEVOQUJMRV9QS0NTMTEKKyAJfSBl bHNlIGlmICgoa2V5LT5mbGFncyAmIFNTSEtFWV9GTEFHX0VYVCkgIT0gMCkgeworIAkJciA9IHBr Y3MxMV9zaWduKGtleSwgc2lncCwgbGVucCwgZGF0YSwgZGF0YWxlbiwKKyAJCSAgICBhbGcsIHNr X3Byb3ZpZGVyLCBza19waW4sIGNvbXBhdCk7CisrI2VuZGlmCisgCX0gZWxzZSB7CisgCQlpZiAo aW1wbC0+ZnVuY3MtPnNpZ24gPT0gTlVMTCkKKyAJCQlyID0gU1NIX0VSUl9TSUdOX0FMR19VTlNV UFBPUlRFRDsKKy0tIAorMi41NS4wCisKCmRpZmYgLS1naXQgYS8wMDUzLWdzc2FwaS10ZXN0cy5w YXRjaCBiLzAwNTMtZ3NzYXBpLXRlc3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjJkNjExNDUKLS0tIC9kZXYvbnVsbAorKysgYi8wMDUzLWdzc2FwaS10ZXN0cy5w YXRjaApAQCAtMCwwICsxLDIzMCBAQAorRnJvbSAyMDRiY2ExMDkxOGQ0NGNjOGJiMWZkZDk5YjJi ZjY1MWI3ZTc3ZDRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRG1pdHJ5IEJlbHlh dnNraXkgPGJlbGRtaXRAZ21haWwuY29tPgorRGF0ZTogVGh1LCAxNSBNYXkgMjAyNSAxMzo0Mzoy OCArMDIwMAorU3ViamVjdDogW1BBVENIIDUzLzU0XSBnc3NhcGktdGVzdHMKKworLS0tCisgcmVn cmVzcy9NYWtlZmlsZSAgIHwgICAxICsKKyByZWdyZXNzL2dzcy1rZXguc2ggfCAxOTggKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2Vk LCAxOTkgaW5zZXJ0aW9ucygrKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCByZWdyZXNzL2dzcy1rZXgu c2gKKworZGlmZiAtLWdpdCBhL3JlZ3Jlc3MvTWFrZWZpbGUgYi9yZWdyZXNzL01ha2VmaWxlCitp bmRleCA5OGE2NTMyNTYuLjZkMDUwYTRkZSAxMDA2NDQKKy0tLSBhL3JlZ3Jlc3MvTWFrZWZpbGUK KysrKyBiL3JlZ3Jlc3MvTWFrZWZpbGUKK0BAIC0xMjcsNiArMTI3LDcgQEAgSU5URVJPUF9URVNU Uys9CWRyb3BiZWFyLWNpcGhlcnMgZHJvcGJlYXIta2V4IGRyb3BiZWFyLXNlcnZlcgorICNJTlRF Uk9QX1RFU1RTKz1zc2gtY29tIHNzaC1jb20tY2xpZW50IHNzaC1jb20ta2V5Z2VuIHNzaC1jb20t c2Z0cAorIAorIEVYVFJBX1RFU1RTPQlhZ2VudC1wa2NzMTEKKytFWFRSQV9URVNUUys9CWdzcy1h dXRoIGdzcy1rZXgKKyAjRVhUUkFfVEVTVFMrPSAJY2lwaGVyLXNwZWVkCisgCisgVVNFUk5BTUU9 CQkke0xPR05BTUV9CitkaWZmIC0tZ2l0IGEvcmVncmVzcy9nc3Mta2V4LnNoIGIvcmVncmVzcy9n c3Mta2V4LnNoCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwLi42M2IyZTE3 OGIKKy0tLSAvZGV2L251bGwKKysrKyBiL3JlZ3Jlc3MvZ3NzLWtleC5zaAorQEAgLTAsMCArMSwx OTggQEAKKyt0aWQ9IkdTUy1BUEkgS2V5IEV4Y2hhbmdlIgorKworKyMgU2tpcCB0aGUgdGVzdCBp ZiBHU1NBUEkgc3VwcG9ydCBpcyBub3QgY29uZmlndXJlZAorK2lmICEgZ3JlcCAtRSAnXiNkZWZp bmUgR1NTQVBJJyAiJEJVSUxERElSL2NvbmZpZy5oIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKysg ICAgc2tpcCAiR1NTQVBJIG5vdCBlbmFibGVkIgorK2ZpCisrCisrIyBXZSB0ZXN0IHdpdGggTUlU IEtlcmJlcm9zIEtEQywgc2tpcCBpZiBub3QgaW5zdGFsbGVkCisraWYgISB3aGljaCBrcmI1a2Rj ID4vZGV2L251bGwgMj4mMTsgdGhlbgorKyAgICBza2lwICJNSVQgS2VyYmVyb3MgS0RDIG5vdCBp bnN0YWxsZWQiCisrZmkKKysKKysjIFRoZSB0ZXN0IG5lZWRzIG5zc193cmFwcGVyIHRvIGVtdWxh dGUgZ2V0aG9zdG5hbWUoKSBhbmQgL2V0Yy9ob3N0cywKKysjIHdlIHNraXAgaWYgdGhlIHNoYXJl ZCBsaWJyYXJ5IGlzIG5vdCBpbnN0YWxsZWQKKytuc3Nfd3JhcHBlcj0ibGlibnNzX3dyYXBwZXIu c28iCisraWYgISBsZGNvbmZpZyAtcCB8IGdyZXAgIiRuc3Nfd3JhcHBlciIgPi9kZXYvbnVsbCAy PiYxOyB0aGVuCisrICAgIHNraXAgIiRuc3Nfd3JhcHBlciBub3QgaW5zdGFsbGVkIgorK2ZpCisr CisrIyBTZXQgdXAgdGhlIHVzZXJuYW1lIG9mIHRoZSBTU0ggY2xpZW50CisrY2xpZW50PSIkTE9H TkFNRSIKKytpZiBbICJ4JGNsaWVudCIgPSAieCIgXTsgdGhlbgorKwljbGllbnQ9IiQod2hvYW1p KSIKKytmaQorKworKyMgU2V0IHVwIFNTSEQgYW5kIEtEQyBob3N0bmFtZXMgYW5kIHJlc29sdmUg Ym90aCB0byBsb2NhbGhvc3QKKytzc2hkX2hvc3RuYW1lPSJzc2hkLmV4YW1wbGUub3JnIgorK2tk Y19ob3N0bmFtZT0ia2RjLmV4YW1wbGUub3JnIgorK2tkY19wb3J0PTIwODgKKytob3N0cz0iJE9C Si9ob3N0cyIKKytlY2hvICIxMjcuMC4wLjEgJHNzaGRfaG9zdG5hbWUgJGtkY19ob3N0bmFtZSIg PiAiJGhvc3RzIgorKworKyMgU2V0IHVwIGEgZGlyZWN0b3J5IHRvIHN0b3JlIEtlcmJlcm9zIGRh dGEKKytnc3NkaXI9IiRPQkovZ3NzIgorK21rZGlyIC1wICIkZ3NzZGlyIgorK2V4cG9ydCBLUkI1 Q0NOQU1FPSIkZ3NzZGlyL2NjIgorK2V4cG9ydCBLUkI1X0NPTkZJRz0iJGdzc2Rpci9rcmI1LmNv bmYiCisrZXhwb3J0IEtSQjVfS0RDX1BST0ZJTEU9IiRnc3NkaXIva2RjLmNvbmYiCisrZXhwb3J0 IEtSQjVfS1ROQU1FPSIkZ3NzZGlyL3NzaC5rZXl0YWIiCisrZXhwb3J0IEtSQjVSQ0FDSEVUWVBF PSJub25lIgorK2tkY19waWRmaWxlPSIkZ3NzZGlyL3BpZCIKKysKKysjIENvbmZpZ3VyZSBLZXJi ZXJvcworK2NhdDw8RU9GID4gIiRLUkI1X0tEQ19QUk9GSUxFIgorK1tyZWFsbXNdCisrICAgIEVY QU1QTEUuT1JHID0geworKyAgICAgICAgZGF0YWJhc2VfbmFtZSA9ICRnc3NkaXIvcHJpbmNpcGFs CisrICAgICAgICBrZXlfc3Rhc2hfZmlsZSA9ICRnc3NkaXIvc3Rhc2gKKysgICAgICAgIGtkY19s aXN0ZW4gPSAka2RjX2hvc3RuYW1lOiRrZGNfcG9ydAorKyAgICAgICAga2RjX3RjcF9saXN0ZW4g PSAka2RjX2hvc3RuYW1lOiRrZGNfcG9ydAorKyAgICB9CisrW2xvZ2dpbmddCisrICAgIGtkYyA9 IEZJTEU6JGdzc2Rpci9rZGMubG9nCisrICAgIGRlYnVnID0gdHJ1ZQorK0VPRgorKworK2NhdDw8 RU9GID4gIiRLUkI1X0NPTkZJRyIKKytbbGliZGVmYXVsdHNdCisrICAgIGRlZmF1bHRfcmVhbG0g PSBFWEFNUExFLk9SRworK1tyZWFsbXNdCisrICAgIEVYQU1QTEUuT1JHID0geworKyAgICAgICAg a2RjID0gJGtkY19ob3N0bmFtZToka2RjX3BvcnQKKysgICAgfQorK0VPRgorKworKyMgQmFjayB1 cCB0aGUgZGVmYXVsdCBzc2hkX2NvbmZpZworK2NwICIkT0JKL3NzaGRfY29uZmlnIiAiJE9CSi9z c2hkX2NvbmZpZy5vcmlnIgorKworK3NldHVwX3NzaGQoKSB7CisrICAgIGtleF9hbGc9IiQxIgor KworKyAgICBjcCAiJE9CSi9zc2hkX2NvbmZpZy5vcmlnIiAiJE9CSi9zc2hkX2NvbmZpZyIKKysK KysgICAgY2F0PDxFT0YgPj4gIiRPQkovc3NoZF9jb25maWciCisrUHVia2V5QXV0aGVudGljYXRp b24gbm8KKytQYXNzd29yZEF1dGhlbnRpY2F0aW9uIG5vCisrR1NTQVBJQXV0aGVudGljYXRpb24g eWVzCisrR1NTQVBJS2V5RXhjaGFuZ2UgeWVzCisrR1NTQVBJS2V4QWxnb3JpdGhtcyAka2V4X2Fs ZworK0dTU0FQSVN0cmljdEFjY2VwdG9yQ2hlY2sgbm8KKytFT0YKKysKKysgICAgdGVzdF9zc2hf c3NoZF9lbnZfYmFja3VwPSIkVEVTVF9TU0hfU1NIRF9FTlYiCisrICAgIFRFU1RfU1NIX1NTSERf RU5WPSIkVEVTVF9TU0hfU1NIRF9FTlYgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAg ICAgICAgICAgICBMRF9QUkVMT0FEPSRuc3Nfd3JhcHBlciAgICAgICAgICAgICBcCisrICAgICAg ICAgICAgICAgICAgICAgICBOU1NfV1JBUFBFUl9IT1NUUz0kaG9zdHMgICAgICAgICAgICBcCisr ICAgICAgICAgICAgICAgICAgICAgICBOU1NfV1JBUFBFUl9IT1NUTkFNRT0kc3NoZF9ob3N0bmFt ZSBcCisrICAgICAgICAgICAgICAgICAgICAgICBLUkI1X0NPTkZJRz0kS1JCNV9DT05GSUcgICAg ICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICAgICBLUkI1X0tEQ19QUk9GSUxFPSRLUkI1 X0tEQ19QUk9GSUxFICBcCisrICAgICAgICAgICAgICAgICAgICAgICBLUkI1Q0NOQU1FPSRLUkI1 Q0NOQU1FICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICAgICBLUkI1X0tUTkFN RT0kS1JCNV9LVE5BTUUgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICAgICBLUkI1 UkNBQ0hFVFlQRT0kS1JCNVJDQUNIRVRZUEUiCisrICAgIHN0YXJ0X3NzaGQKKyt9CisrCisrdGVh cmRvd25fc3NoZCgpIHsKKysgICAgVEVTVF9TU0hfU1NIRF9FTlY9IiR0ZXN0X3NzaF9zc2hkX2Vu dl9iYWNrdXAiCisrICAgIHN0b3Bfc3NoZAorK30KKysKKytzZXR1cF9rZGMoKSB7CisrICAgIGtk YjVfdXRpbCBjcmVhdGUgLVAgImZvbyIgLXMKKysgICAga3JiNWtkYyAtdyAxIC1QICIka2RjX3Bp ZGZpbGUiCisrICAgIGk9MDsKKysgICAgd2hpbGUgWyAhIC1mICIka2RjX3BpZGZpbGUiIC1hICRp IC1sdCAxMCBdOyBkbworKyAgICAgICAgaT0kKChpICsgMSkpCisrICAgICAgICBzbGVlcCAxCisr ICAgIGRvbmUKKysgICAgdGVzdCAtZiAiJGtkY19waWRmaWxlIiB8fCBmYXRhbCAiS0RDIGZhaWxl ZCB0byBzdGFydCIKKyt9CisrCisrdGVhcmRvd25fa2RjKCkgeworKyAgICBraWxsICIkKGNhdCAi JGtkY19waWRmaWxlIikiCisrICAgIGtkZXN0cm95CisrICAgIHJtIC1mICIkS1JCNV9LVE5BTUUi ICIka2RjX3BpZGZpbGUiCisrICAgIGtkYjVfdXRpbCBkZXN0cm95IC1mCisrfQorKworK3NldHVw X25zc19lbXVsYXRpb24oKSB7CisrICAgIGV4cG9ydCBMRF9QUkVMT0FEPSIkbnNzX3dyYXBwZXIi CisrICAgIGV4cG9ydCBOU1NfV1JBUFBFUl9IT1NUUz0iJGhvc3RzIgorK30KKysKKyt0ZWFyZG93 bl9uc3NfZW11bGF0aW9uKCkgeworKyAgICB1bnNldCBMRF9QUkVMT0FECisrICAgIHVuc2V0IE5T U19XUkFQUEVSX0hPU1RTCisrfQorKworK3Rlc3RfZ3NzX2tleCgpIHsKKysgICAga2V4X2ZhbWls eT0iJDEiCisrICAgIGF1dGhfc3NoZD0iJDIiCisrICAgIGV4cGVjdD0iJDMiCisrCisrICAgICMg Q2hlY2sgaWYgdGhlIGFsZ29yaXRobSBmYW1pbHkgaXMgcmVjb2duaXplZCBieSBzc2gKKysgICAg aWYgISAke1JFQUxfU1NIfSAtRyAtRiAiJE9CSi9zc2hfY29uZmlnIiBcCisrICAgICAgICAtbyAi R1NTQVBJS2V5RXhjaGFuZ2UgeWVzIiBcCisrICAgICAgICAtbyAiR1NTQVBJS2V4QWxnb3JpdGht cyAka2V4X2ZhbWlseSIgXAorKyAgICAgICAgIiRjbGllbnRAJHNzaGRfaG9zdG5hbWUiID4vZGV2 L251bGwgMj4mMTsgdGhlbgorKyAgICAgICAgdmVyYm9zZSAiZ3NzIGtleCAka2V4X2ZhbWlseSBu b3Qgc3VwcG9ydGVkLCBza2lwcGluZyIKKysgICAgICAgIHJldHVybiAwCisrICAgIGZpCisrCisr ICAgIHNldHVwX3NzaGQgIiRrZXhfZmFtaWx5IgorKyAgICBzZXR1cF9uc3NfZW11bGF0aW9uCisr ICAgIHNldHVwX2tkYworKworKyAgICBrYWRtaW4ubG9jYWwgYWRkX3ByaW5jaXBhbCAtcmFuZGtl eSAiaG9zdC8kc3NoZF9ob3N0bmFtZSIKKysgICAgaWYgJGF1dGhfc3NoZDsgdGhlbgorKyAgICAg ICAga2FkbWluLmxvY2FsIGt0YWRkICJob3N0LyRzc2hkX2hvc3RuYW1lIgorKyAgICBmaQorKyAg ICBrYWRtaW4ubG9jYWwgYWRkX3ByaW5jaXBhbCAtcHcgImZvbyIgIiRjbGllbnQiCisrICAgIGVj aG8gImZvbyIgfCBraW5pdCAiJGNsaWVudCIKKysKKysgICAgJHtTU0h9IC1GICIkT0JKL3NzaF9j b25maWciIFwKKysgICAgICAgIC1vICJHU1NBUElBdXRoZW50aWNhdGlvbiB5ZXMiIFwKKysgICAg ICAgIC1vICJHU1NBUElLZXlFeGNoYW5nZSB5ZXMiIFwKKysgICAgICAgIC1vICJHU1NBUElLZXhB bGdvcml0aG1zICRrZXhfZmFtaWx5IiBcCisrICAgICAgICAtbyAiR1NTQVBJRGVsZWdhdGVDcmVk ZW50aWFscyBubyIgXAorKyAgICAgICAgIiRjbGllbnRAJHNzaGRfaG9zdG5hbWUiIHRydWUKKysg ICAgc3RhdHVzPSQ/CisrCisrICAgIHRlYXJkb3duX2tkYworKyAgICB0ZWFyZG93bl9uc3NfZW11 bGF0aW9uCisrICAgIHRlYXJkb3duX3NzaGQKKysKKysgICAgWyAkc3RhdHVzIC1lcSAkZXhwZWN0 IF0KKyt9CisrCisrIyBHU1Mga2V4IGZhbWlseSBwcmVmaXhlcyB0byB0ZXN0LgorKyMgR1NTQVBJ S2V4QWxnb3JpdGhtcyBhY2NlcHRzIHRoZXNlIHByZWZpeGVzOyB0aGUgZnVsbCBhbGdvcml0aG0g bmFtZXMKKysjIChwcmVmaXggKyBCYXNlNjQoTUQ1KE9JRCkpKSBhcmUgY29uc3RydWN0ZWQgZHVy aW5nIG5lZ290aWF0aW9uLgorK2dzc19rZXhfZmFtaWxpZXM9IgorKyAgICBnc3MtZ3JvdXAxNC1z aGEyNTYtCisrICAgIGdzcy1ncm91cDE2LXNoYTUxMi0KKysgICAgZ3NzLW5pc3RwMjU2LXNoYTI1 Ni0KKysgICAgZ3NzLWN1cnZlMjU1MTktc2hhMjU2LQorKyAgICBnc3MtZ3JvdXAxNC1zaGExLQor KyAgICBnc3MtZ2V4LXNoYTEtCisrIgorKworKyMgUG9zaXRpdmUgdGVzdHM6IGVhY2ggR1NTIGtl eCBhbGdvcml0aG0gY29ubmVjdHMgc3VjY2Vzc2Z1bGx5CisrZm9yIGtleF9mYW1pbHkgaW4gJGdz c19rZXhfZmFtaWxpZXM7IGRvCisrICAgIHZlcmJvc2UgImdzcyBrZXggJGtleF9mYW1pbHkiCisr ICAgIHRlc3RfZ3NzX2tleCAiJGtleF9mYW1pbHkiIHRydWUgMCBcCisrICAgICAgICB8fCBmYWls ICJnc3Mga2V4ICRrZXhfZmFtaWx5IGZhaWxlZCIKKytkb25lCisrCisrIyBOZWdhdGl2ZSB0ZXN0 OiBjb25uZWN0aW9uIG11c3QgZmFpbCB3aGVuIGtleXRhYiBpcyBtaXNzaW5nCisrdmVyYm9zZSAi Z3NzIGtleCBuZWdhdGl2ZSB0ZXN0OiBubyBrZXl0YWIiCisrdGVzdF9nc3Nfa2V4ICJnc3MtZ3Jv dXAxNC1zaGEyNTYtIiBmYWxzZSAyNTUgXAorKyAgICB8fCBmYWlsICJnc3Mga2V4IHN1Y2NlZWRl ZCB3aXRob3V0IGtleXRhYiIKKysKKyt1bnNldCBLUkI1Q0NOQU1FCisrdW5zZXQgS1JCNV9DT05G SUcKKyt1bnNldCBLUkI1X0tEQ19QUk9GSUxFCisrdW5zZXQgS1JCNV9LVE5BTUUKKyt1bnNldCBL UkI1UkNBQ0hFVFlQRQorK3JtIC1yZiAiJGdzc2RpciIKKy0tIAorMi41NS4wCisKCmRpZmYgLS1n aXQgYS8wMDUzLW9wZW5zc2gtMTAuMnAxLXBrY3MxMS11cmkucGF0Y2ggYi8wMDUzLW9wZW5zc2gt MTAuMnAxLXBrY3MxMS11cmkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNi YWVhZjMuLjAwMDAwMDAKLS0tIGEvMDA1My1vcGVuc3NoLTEwLjJwMS1wa2NzMTEtdXJpLnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsMzQxMCArMCwwIEBACi1Gcm9tIDUwYTRhNGFkZGUwZmY5NjVh ZmUzNGRiYzA1OTk5NmQ4NmQ0ZmNmYzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBE bWl0cnkgQmVseWF2c2tpeSA8YmVsZG1pdEBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDE1IERlYyAy MDI1IDE0OjI0OjA3ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggNTMvNTRdIG9wZW5zc2gtMTAuMnAx LXBrY3MxMS11cmkKLQotLS0tCi0gTWFrZWZpbGUuaW4gICAgICAgICAgICAgICAgICAgICAgfCAg MjYgKy0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICB8ICAzNyArKwotIHJlZ3Jl c3MvTWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgICA1ICstCi0gcmVncmVzcy9wa2NzMTEtdXJp LnNoICAgICAgICAgICAgfCA0MTAgKysrKysrKysrKysrKysrKwotIHJlZ3Jlc3MvdW5pdHRlc3Rz L01ha2VmaWxlICAgICAgIHwgICAyICstCi0gcmVncmVzcy91bml0dGVzdHMvcGtjczExL3Rlc3Rz LmMgfCAzNTMgKysrKysrKysrKysrKysKLSBzc2gtYWRkLmMgICAgICAgICAgICAgICAgICAgICAg ICB8ICA0OCArLQotIHNzaC1hZ2VudC5jICAgICAgICAgICAgICAgICAgICAgIHwgMTE3ICsrKyst Ci0gc3NoLWtleWdlbi5jICAgICAgICAgICAgICAgICAgICAgfCAgIDcgKy0KLSBzc2gtcGtjczEx LWNsaWVudC5jICAgICAgICAgICAgICB8ICAxOSArCi0gc3NoLXBrY3MxMS11cmkuYyAgICAgICAg ICAgICAgICAgfCA0MzggKysrKysrKysrKysrKysrKysrCi0gc3NoLXBrY3MxMS11cmkuaCAgICAg ICAgICAgICAgICAgfCAgNDYgKysKLSBzc2gtcGtjczExLmMgICAgICAgICAgICAgICAgICAgICB8 IDc3MSArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCi0gc3NoLXBrY3MxMS5oICAgICAg ICAgICAgICAgICAgICAgfCAgIDQgKwotIHNzaC5jICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgMTA0ICsrKystCi0gc3NoX2NvbmZpZy41ICAgICAgICAgICAgICAgICAgICAgfCAgMTUgKwot IHNzaGtleS5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICsKLSAxNyBmaWxlcyBjaGFu Z2VkLCAyMTMzIGluc2VydGlvbnMoKyksIDI3MyBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAx MDA2NDQgcmVncmVzcy9wa2NzMTEtdXJpLnNoCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHJlZ3Jlc3Mv dW5pdHRlc3RzL3BrY3MxMS90ZXN0cy5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHNzaC1wa2NzMTEt dXJpLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3NoLXBrY3MxMS11cmkuaAotCi1kaWZmIC0tZ2l0 IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgotaW5kZXggZjgwYzk1ODQ2Li5jM2M4ZGE4NjMg MTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5pbgotKysrIGIvTWFrZWZpbGUuaW4KLUBAIC0xMTIsMTIg KzExMiwxMiBAQCBMSUJTU0hfT0JKUz0ke0xJQk9QRU5TU0hfT0JKU30gXAotIAlzZnRwLXJlYWxw YXRoLm8gcGxhdGZvcm0tcGxlZGdlLm8gcGxhdGZvcm0tdHJhY2luZy5vIHBsYXRmb3JtLW1pc2Mu byBcCi0gCXNzaGJ1Zi1pby5vIG1pc2MtYWdlbnQubyBzc2hlcnItbGliY3J5cHRvLm8gYXVkaXRz dHViLm8KLSAKLS1QMTFPQkpTPSBzc2gtcGtjczExLWNsaWVudC5vCi0rUDExT0JKUz0gc3NoLXBr Y3MxMS1jbGllbnQubyBzc2gtcGtjczExLXVyaS5vCi0gCi0gU0tPQkpTPQlzc2gtc2stY2xpZW50 Lm8KLSAKLSBTU0hPQkpTPSBzc2gubyByZWFkY29uZi5vIGNsaWVudGxvb3AubyBzc2h0dHkubyBc Ci0tCXNzaGNvbm5lY3QubyBzc2hjb25uZWN0Mi5vIG11eC5vIHNzaC1wa2NzMTEubyAkKFNLT0JK UykKLSsJc3NoY29ubmVjdC5vIHNzaGNvbm5lY3QyLm8gbXV4Lm8gc3NoLXBrY3MxMS5vIHNzaC1w a2NzMTEtdXJpLm8gJChTS09CSlMpCi0gCi0gU1NIRE9CSlM9c3NoZC5vIFwKLSAJcGxhdGZvcm0t bGlzdGVuLm8gXAotQEAgLTE2MSwxMSArMTYxLDExIEBAIFNTSEFERF9PQkpTPQlzc2gtYWRkLm8g JChQMTFPQkpTKSAkKFNLT0JKUykKLSAKLSBTU0hBR0VOVF9PQkpTPQlzc2gtYWdlbnQubyAkKFAx MU9CSlMpICQoU0tPQkpTKQotIAotLVNTSEtFWUdFTl9PQkpTPQlzc2gta2V5Z2VuLm8gc3Noc2ln Lm8gc3NoLXBrY3MxMS5vICQoU0tPQkpTKQotK1NTSEtFWUdFTl9PQkpTPQlzc2gta2V5Z2VuLm8g c3Noc2lnLm8gc3NoLXBrY3MxMS5vIHNzaC1wa2NzMTEtdXJpLm8gJChTS09CSlMpCi0gCi0gU1NI S0VZU0lHTl9PQkpTPXNzaC1rZXlzaWduLm8gcmVhZGNvbmYubyB1aWRzd2FwLm8gJChQMTFPQkpT KSAkKFNLT0JKUykKLSAKLS1QMTFIRUxQRVJfT0JKUz0Jc3NoLXBrY3MxMS1oZWxwZXIubyBzc2gt cGtjczExLm8gJChTS09CSlMpCi0rUDExSEVMUEVSX09CSlM9CXNzaC1wa2NzMTEtaGVscGVyLm8g c3NoLXBrY3MxMS5vIHNzaC1wa2NzMTEtdXJpLm8gJChTS09CSlMpCi0gCi0gU0tIRUxQRVJfT0JK Uz0Jc3NoLXNrLWhlbHBlci5vIHNzaC1zay5vIHNrLXVzYmhpZC5vIHNzaGVyci1ub2xpYmNyeXB0 by5vCi0gCi1AQCAtMzMxLDYgKzMzMSw4IEBAIGNsZWFuOglyZWdyZXNzY2xlYW4KLSAJcm0gLWYg cmVncmVzcy91bml0dGVzdHMvc3Noc2lnL3Rlc3Rfc3Noc2lnJChFWEVFWFQpCi0gCXJtIC1mIHJl Z3Jlc3MvdW5pdHRlc3RzL3V0ZjgvKi5vCi0gCXJtIC1mIHJlZ3Jlc3MvdW5pdHRlc3RzL3V0Zjgv dGVzdF91dGY4JChFWEVFWFQpCi0rCXJtIC1mIHJlZ3Jlc3MvdW5pdHRlc3RzL3BrY3MxMS8qLm8K LSsJcm0gLWYgcmVncmVzcy91bml0dGVzdHMvcGtjczExL3Rlc3RfcGtjczExJChFWEVFWFQpCi0g CXJtIC1mIHJlZ3Jlc3MvbWlzYy9zay1kdW1teS8qLm8KLSAJcm0gLWYgcmVncmVzcy9taXNjL3Nr LWR1bW15LyoubG8KLSAJcm0gLWYgcmVncmVzcy9taXNjL3NzaC12ZXJpZnktYXR0ZXN0YXRpb24v c3NoLXZlcmlmeS1hdHRlc3RhdGlvbiQoRVhFRVhUKQotQEAgLTM3MCw2ICszNzIsOCBAQCBkaXN0 Y2xlYW46CXJlZ3Jlc3NjbGVhbgotIAlybSAtZiByZWdyZXNzL3VuaXR0ZXN0cy9zc2hzaWcvdGVz dF9zc2hzaWcKLSAJcm0gLWYgcmVncmVzcy91bml0dGVzdHMvdXRmOC8qLm8KLSAJcm0gLWYgcmVn cmVzcy91bml0dGVzdHMvdXRmOC90ZXN0X3V0ZjgKLSsJcm0gLWYgcmVncmVzcy91bml0dGVzdHMv cGtjczExLyoubwotKwlybSAtZiByZWdyZXNzL3VuaXR0ZXN0cy9wa2NzMTEvdGVzdF9wa2NzMTEK LSAJcm0gLWYgcmVncmVzcy9taXNjL3NrLWR1bW15LyoubwotIAlybSAtZiByZWdyZXNzL21pc2Mv c2stZHVtbXkvKi5sbwotIAlybSAtZiByZWdyZXNzL21pc2Mvc2stZHVtbXkvc2stZHVtbXkuc28K LUBAIC01NTAsNiArNTU0LDcgQEAgcmVncmVzcy1wcmVwOgotIAkkKE1LRElSX1ApIGBwd2RgL3Jl Z3Jlc3MvdW5pdHRlc3RzL3NzaGtleQotIAkkKE1LRElSX1ApIGBwd2RgL3JlZ3Jlc3MvdW5pdHRl c3RzL3NzaHNpZwotIAkkKE1LRElSX1ApIGBwd2RgL3JlZ3Jlc3MvdW5pdHRlc3RzL3V0ZjgKLSsJ JChNS0RJUl9QKSBgcHdkYC9yZWdyZXNzL3VuaXR0ZXN0cy9wa2NzMTEKLSAJJChNS0RJUl9QKSBg cHdkYC9yZWdyZXNzL21pc2Mvc2stZHVtbXkKLSAJJChNS0RJUl9QKSBgcHdkYC9yZWdyZXNzL21p c2Mvc3NoLXZlcmlmeS1hdHRlc3RhdGlvbgotIAlbIC1mIGBwd2RgL3JlZ3Jlc3MvTWFrZWZpbGUg XSB8fCBcCi1AQCAtNzI1LDYgKzczMCwxNiBAQCByZWdyZXNzL3VuaXR0ZXN0cy91dGY4L3Rlc3Rf dXRmOCQoRVhFRVhUKTogXAotIAkgICAgcmVncmVzcy91bml0dGVzdHMvdGVzdF9oZWxwZXIvbGli dGVzdF9oZWxwZXIuYSBcCi0gCSAgICAtbHNzaCAtbG9wZW5ic2QtY29tcGF0IC1sc3NoIC1sb3Bl bmJzZC1jb21wYXQgJChURVNUTElCUykKLSAKLStVTklUVEVTVFNfVEVTVF9QS0NTMTFfT0JKUz1c Ci0rCXJlZ3Jlc3MvdW5pdHRlc3RzL3BrY3MxMS90ZXN0cy5vCi0rCi0rcmVncmVzcy91bml0dGVz dHMvcGtjczExL3Rlc3RfcGtjczExJChFWEVFWFQpOiBcCi0rICAgICR7VU5JVFRFU1RTX1RFU1Rf UEtDUzExX09CSlN9IHNzaC1wa2NzMTEtdXJpLm8gXAotKyAgICByZWdyZXNzL3VuaXR0ZXN0cy90 ZXN0X2hlbHBlci9saWJ0ZXN0X2hlbHBlci5hIGxpYnNzaC5hCi0rCSQoTEQpIC1vICRAICQoTERG TEFHUykgJChVTklUVEVTVFNfVEVTVF9QS0NTMTFfT0JKUykgXAotKwkgICAgcmVncmVzcy91bml0 dGVzdHMvdGVzdF9oZWxwZXIvbGlidGVzdF9oZWxwZXIuYSBcCi0rCSAgICBzc2gtcGtjczExLXVy aS5vIC1sc3NoIC1sb3BlbmJzZC1jb21wYXQgLWxjcnlwdG8gJChMSUJTKSAtbG0KLSsKLSAjIFRo ZXNlIGFsbCBuZWVkIHRvIGJlIGNvbXBpbGVkIC1mUElDLCBzbyB0aGV5IGFyZSB0cmVhdGVkIGRp ZmZlcmVudGx5LgotIFNLX0RVTU1ZX09CSlM9XAotIAlyZWdyZXNzL21pc2Mvc2stZHVtbXkvc2st ZHVtbXkubG8gXAotQEAgLTc3MCw3ICs3ODUsOCBAQCByZWdyZXNzLXVuaXQtYmluYXJpZXM6IHJl Z3Jlc3MtcHJlcCAkKFJFR1JFU1NMSUJTKSBcCi0gCXJlZ3Jlc3MvdW5pdHRlc3RzL3NzaGJ1Zi90 ZXN0X3NzaGJ1ZiQoRVhFRVhUKSBcCi0gCXJlZ3Jlc3MvdW5pdHRlc3RzL3NzaGtleS90ZXN0X3Nz aGtleSQoRVhFRVhUKSBcCi0gCXJlZ3Jlc3MvdW5pdHRlc3RzL3NzaHNpZy90ZXN0X3NzaHNpZyQo RVhFRVhUKSBcCi0tCXJlZ3Jlc3MvdW5pdHRlc3RzL3V0ZjgvdGVzdF91dGY4JChFWEVFWFQpCi0r CXJlZ3Jlc3MvdW5pdHRlc3RzL3V0ZjgvdGVzdF91dGY4JChFWEVFWFQpIFwKLSsJcmVncmVzcy91 bml0dGVzdHMvcGtjczExL3Rlc3RfcGtjczExJChFWEVFWFQpIFwKLSAKLSB0ZXN0czoJZmlsZS10 ZXN0cyB0LWV4ZWMgaW50ZXJvcC10ZXN0cyBleHRyYS10ZXN0cyB1bml0Ci0gCWVjaG8gYWxsIHRl c3RzIHBhc3NlZAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5k ZXggNjJiMmJmOWU3Li5mNTgxYTk4MDEgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBi L2NvbmZpZ3VyZS5hYwotQEAgLTIzMDUsMTIgKzIzMDUsMTQgQEAgQUNfTElOS19JRkVMU0UoCi0g CVtBQ19ERUZJTkUoW0hBVkVfSVNCTEFOS10sIFsxXSwgW0RlZmluZSBpZiB5b3UgaGF2ZSBpc2Js YW5rKDNDKS5dKQotIF0pCi0gCi0rU0NBUkRfTVNHPSJ5ZXMiCi0gZGlzYWJsZV9wa2NzMTE9Ci0g QUNfQVJHX0VOQUJMRShbcGtjczExXSwKLSAJWyAgLS1kaXNhYmxlLXBrY3MxMSAgICAgICAgZGlz YWJsZSBQS0NTIzExIHN1cHBvcnQgY29kZSBbbm9dXSwKLSAJWwotIAkJaWYgdGVzdCAieCRlbmFi bGV2YWwiID0gInhubyIgOyB0aGVuCi0gCQkJZGlzYWJsZV9wa2NzMTE9MQotKwkJCVNDQVJEX01T Rz0ibm8iCi0gCQlmaQotIAldCi0gKQotQEAgLTIzNDAsNiArMjM0Miw0MCBAQCBBQ19TRUFSQ0hf TElCUyhbZGxvcGVuXSwgW2RsXSkKLSBBQ19DSEVDS19GVU5DUyhbZGxvcGVuXSkKLSBBQ19DSEVD S19ERUNMKFtSVExEX05PV10sIFtdLCBbXSwgWyNpbmNsdWRlIDxkbGZjbi5oPl0pCi0gCi0rIyBD aGVjayB3aGV0aGVyIHdlIGhhdmUgYSBwMTEta2l0LCB3ZSBnb3QgZGVmYXVsdCBwcm92aWRlciBv biBjb21tYW5kIGxpbmUKLStERUZBVUxUX1BLQ1MxMV9QUk9WSURFUl9NU0c9Im5vIgotK0FDX0FS R19XSVRIKFtkZWZhdWx0LXBrY3MxMS1wcm92aWRlcl0sCi0rCVsgIC0td2l0aC1kZWZhdWx0LXBr Y3MxMS1wcm92aWRlcltbPVBBVEhdXSAgIFVzZSBkZWZhdWx0IHBrY3MxMSBwcm92aWRlciAocDEx LWtpdCBkZXRlY3RlZCBieSBkZWZhdWx0KV0sCi0rCVsgaWYgdGVzdCAieCR3aXRodmFsIiAhPSAi eG5vIiAmJiB0ZXN0ICJ4JGRpc2FibGVfcGtjczExIiA9ICJ4IjsgdGhlbgotKwkJaWYgdGVzdCAi eCR3aXRodmFsIiA9ICJ4eWVzIiA7IHRoZW4KLSsJCQlBQ19QQVRIX1RPT0woW1BLR0NPTkZJR10s IFtwa2ctY29uZmlnXSwgW25vXSkKLSsJCQlpZiB0ZXN0ICJ4JFBLR0NPTkZJRyIgIT0gInhubyI7 IHRoZW4KLSsJCQkJQUNfTVNHX0NIRUNLSU5HKFtpZiAkUEtHQ09ORklHIGtub3dzIGFib3V0IHAx MS1raXRdKQotKwkJCQlpZiAiJFBLR0NPTkZJRyIgInAxMS1raXQtMSI7IHRoZW4KLSsJCQkJCUFD X01TR19SRVNVTFQoW3llc10pCi0rCQkJCQl1c2VfcGtnY29uZmlnX2Zvcl9wMTFraXQ9eWVzCi0r CQkJCWVsc2UKLSsJCQkJCUFDX01TR19SRVNVTFQoW25vXSkKLSsJCQkJZmkKLSsJCQlmaQotKwkJ ZWxzZQotKwkJCVBLQ1MxMV9QQVRIPSIke3dpdGh2YWx9IgotKwkJZmkKLSsJCWlmIHRlc3QgIngk dXNlX3BrZ2NvbmZpZ19mb3JfcDExa2l0IiA9ICJ4eWVzIjsgdGhlbgotKwkJCVBLQ1MxMV9QQVRI PWAkUEtHQ09ORklHIC0tdmFyaWFibGU9cHJveHlfbW9kdWxlIHAxMS1raXQtMWAKLSsJCWZpCi0r CQlBQ19DSEVDS19GSUxFKCIkUEtDUzExX1BBVEgiLAotKwkJCVsgQUNfREVGSU5FX1VOUVVPVEVE KFtQS0NTMTFfREVGQVVMVF9QUk9WSURFUl0sIFsiJFBLQ1MxMV9QQVRIIl0sIFtQYXRoIHRvIGRl ZmF1bHQgUEtDUyMxMSBwcm92aWRlciAocDExLWtpdCBwcm94eSldKQotKwkJCSAgREVGQVVMVF9Q S0NTMTFfUFJPVklERVJfTVNHPSIkUEtDUzExX1BBVEgiCi0rCQkJXSwKLSsJCQlbIEFDX01TR19F UlJPUihbUmVxdWVzdGVkIFBLQ1MxMSBwcm92aWRlZCBub3QgZm91bmRdKSBdCi0rCQkpCi0rCWVs c2UKLSsJCUFDX01TR19XQVJOKFtOZWVkcyBQS0NTMTEgc3VwcG9ydCB0byBlbmFibGUgZGVmYXVs dCBwa2NzMTEgcHJvdmlkZXJdKQotKwlmaSBdCi0rKQotKwotKwotICMgSVJJWCBoYXMgYSBjb25z dCBjaGFyIHJldHVybiB2YWx1ZSBmb3IgZ2FpX3N0cmVycm9yKCkKLSBBQ19DSEVDS19GVU5DUyhb Z2FpX3N0cmVycm9yXSwgWwotIAlBQ19ERUZJTkUoW0hBVkVfR0FJX1NUUkVSUk9SXSkKLUBAIC01 OTkxLDYgKzYwMjcsNyBAQCBlY2hvICIgICAgICAgICAgICAgICAgICBCU0QgQXV0aCBzdXBwb3J0 OiAkQlNEX0FVVEhfTVNHIgotIGVjaG8gIiAgICAgICAgICAgICAgUmFuZG9tIG51bWJlciBzb3Vy Y2U6ICRSQU5EX01TRyIKLSBlY2hvICIgICAgICAgICAgICAgUHJpdnNlcCBzYW5kYm94IHN0eWxl OiAkU0FOREJPWF9TVFlMRSIKLSBlY2hvICIgICAgICAgICAgICAgICAgICAgUEtDUyMxMSBzdXBw b3J0OiAkZW5hYmxlX3BrY3MxMSIKLStlY2hvICIgICAgICAgICAgRGVmYXVsdCBQS0NTIzExIHBy b3ZpZGVyOiAkREVGQVVMVF9QS0NTMTFfUFJPVklERVJfTVNHIgotIGVjaG8gIiAgICAgICAgICAg ICAgICAgIFUyRi9GSURPIHN1cHBvcnQ6ICRlbmFibGVfc2siCi0gCi0gZWNobyAiIgotZGlmZiAt LWdpdCBhL3JlZ3Jlc3MvTWFrZWZpbGUgYi9yZWdyZXNzL01ha2VmaWxlCi1pbmRleCBhZTQ1YmQ0 NjMuLmNiZTdhOTYxMCAxMDA2NDQKLS0tLSBhL3JlZ3Jlc3MvTWFrZWZpbGUKLSsrKyBiL3JlZ3Jl c3MvTWFrZWZpbGUKLUBAIC0xMTgsNiArMTE4LDcgQEAgTFRFU1RTPSAJY29ubmVjdCBcCi0gCQlw ZW5hbHR5LWV4cGlyZSBcCi0gCQljb25uZWN0LWJpZ2NvbmYgXAotIAkJc3NoLXBrY3MxMSBcCi0r CQlwa2NzMTEtdXJpIFwKLSAJCXNzaC10dHkgXAotIAkJcHJveHlqdW1wCi0gCi1AQCAtMTQ0LDcg KzE0NSw4IEBAIENMRUFORklMRVM9CSouY29yZSBhY3R1YWwgYWdlbnQta2V5LiogYXV0aG9yaXpl ZF9rZXlzXyR7VVNFUk5BTUV9IFwKLSAJCWtub3duX2hvc3RzIGtub3duX2hvc3RzLWNlcnQga25v d25faG9zdHMuKiBrcmwtKiBscy5jb3B5IFwKLSAJCW1vZHBpcGUgbmV0Y2F0IG5vX2lkZW50aXR5 X2NvbmZpZyBcCi0gCQlwaWRmaWxlIHB1dHR5LnJzYTIgcmVhZHkgcmVncmVzcy5sb2cgcmVtb3Rl X3BpZCBcCi0tCQlyZXZva2VkLSogcnNhIHJzYS1hZ2VudCByc2EtYWdlbnQucHViIHJzYS5wdWIg cnNhX3NzaDJfY3IucHJ2IFwKLSsJCXJldm9rZWQtKiByc2EgcnNhLWFnZW50IHJzYS1hZ2VudC5w dWIgcnNhLWFnZW50LWNlcnQucHViIFwKLSsJCXJzYS5wdWIgcnNhX3NzaDJfY3IucHJ2IHBrY3Mx MSouY3J0IHBrY3MxMSoua2V5IHBrY3MxMS5pbmZvIFwKLSAJCXJzYV9zc2gyX2NybmwucHJ2IHNj cC1zc2gtd3JhcHBlci5leGUgXAotIAkJc2NwLXNzaC13cmFwcGVyLnNjcCBzZXR1aWQtYWxsb3dl ZCBzZnRwLXNlcnZlci5sb2cgXAotIAkJc2Z0cC1zZXJ2ZXIuc2ggc2Z0cC5sb2cgc3NoLWxvZy13 cmFwcGVyLnNoIHNzaC5sb2cgXAotQEAgLTI5NCw2ICsyOTYsNyBAQCB1bml0IHVuaXQtYmVuY2g6 Ci0gCQl0ZXN0ICJ4JHtVTklUVEVTVF9WRVJCT1NFfSIgPSAieCIgfHwgQVJHUz0iJCRBUkdTIC12 IjsgXAotIAkJdGVzdCAieCR7VU5JVFRFU1RfQkVOQ0hfREVUQUlMfSIgPSAieCIgfHwgQVJHUz0i JCRBUkdTIC1CIjsgXAotIAkJdGVzdCAieCR7VU5JVFRFU1RfQkVOQ0hfT05MWX0iID0gIngiIHx8 IEFSR1M9IiQkQVJHUyAtTyAke1VOSVRURVNUX0JFTkNIX09OTFl9IjsgXAotKwkJICQkViAkey5P QkpESVJ9L3VuaXR0ZXN0cy9wa2NzMTEvdGVzdF9wa2NzMTEgOyBcCi0gCQkgJCRWICR7Lk9CSkRJ Un0vdW5pdHRlc3RzL3NzaGJ1Zi90ZXN0X3NzaGJ1ZiAkJHtBUkdTfTsgXAotIAkJICQkViAkey5P QkpESVJ9L3VuaXR0ZXN0cy9zc2hrZXkvdGVzdF9zc2hrZXkgXAotIAkJCS1kICR7LkNVUkRJUn0v dW5pdHRlc3RzL3NzaGtleS90ZXN0ZGF0YSAkJHtBUkdTfTsgXAotZGlmZiAtLWdpdCBhL3JlZ3Jl c3MvcGtjczExLXVyaS5zaCBiL3JlZ3Jlc3MvcGtjczExLXVyaS5zaAotbmV3IGZpbGUgbW9kZSAx MDA2NDQKLWluZGV4IDAwMDAwMDAwMC4uNzJkNjliZGEwCi0tLS0gL2Rldi9udWxsCi0rKysgYi9y ZWdyZXNzL3BrY3MxMS11cmkuc2gKLUBAIC0wLDAgKzEsNDEwIEBACi0rIwotKyMgIENvcHlyaWdo dCAoYykgMjAxNyBSZWQgSGF0Ci0rIwotKyMgIEF1dGhvcnM6IEpha3ViIEplbGVuIDxqamVsZW5A cmVkaGF0LmNvbT4KLSsjCi0rIyAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5k IGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55Ci0rIyAgcHVycG9zZSB3aXRoIG9yIHdp dGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZQotKyMg IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIGFs bCBjb3BpZXMuCi0rIwotKyMgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBU SEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUwotKyMgIFdJVEggUkVHQVJEIFRPIFRI SVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKLSsjICBNRVJD SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUg TElBQkxFIEZPUgotKyMgIEFOWSBTUEVDSUFMLCBESVJFQ1QsIElORElSRUNULCBPUiBDT05TRVFV RU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMKLSsjICBXSEFUU09FVkVSIFJFU1VMVElORyBG Uk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4KLSsjICBBQ1RJ T04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklT SU5HIE9VVCBPRgotKyMgIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1B TkNFIE9GIFRISVMgU09GVFdBUkUuCi0rCi0rdGlkPSJwa2NzMTEgdGVzdHMgd2l0aCBzb2Z0IHRv a2VuIgotKwotK3RyeV90b2tlbl9saWJzKCkgewotKwlmb3IgX2xpYiBpbiAiJEAiIDsgZG8KLSsJ CWlmIHRlc3QgLWYgIiRfbGliIiA7IHRoZW4KLSsJCQl2ZXJib3NlICJVc2luZyB0b2tlbiBsaWJy YXJ5ICRfbGliIgotKwkJCVRFU1RfU1NIX1BLQ1MxMT0iJF9saWIiCi0rCQkJcmV0dXJuCi0rCQlm aQotKwlkb25lCi0rCWVjaG8gInNraXBwZWQ6IFVuYWJsZSB0byBmaW5kIFBLQ1MjMTEgdG9rZW4g bGlicmFyeSIKLSsJZXhpdCAwCi0rfQotKwotK3RyeV90b2tlbl9saWJzIFwKLSsJL3Vzci9sb2Nh bC9saWIvc29mdGhzbS9saWJzb2Z0aHNtMi5zbyBcCi0rCS91c3IvbGliNjQvcGtjczExL2xpYnNv ZnRoc20yLnNvIFwKLSsJL3Vzci9saWIveDg2XzY0LWxpbnV4LWdudS9zb2Z0aHNtL2xpYnNvZnRo c20yLnNvCi0rCi0rVEVTVF9TU0hfUElOPTEyMzQKLStURVNUX1NTSF9TT1BJTj0xMjM0NTY3OAot K2lmIFsgIngkVEVTVF9TU0hfU1NIUEtDUzExSEVMUEVSIiAhPSAieCIgXTsgdGhlbgotKwlTU0hf UEtDUzExX0hFTFBFUj0iJHtURVNUX1NTSF9TU0hQS0NTMTFIRUxQRVJ9IgotKwlleHBvcnQgU1NI X1BLQ1MxMV9IRUxQRVIKLStmaQotKwotK3Rlc3QgLWYgIiRURVNUX1NTSF9QS0NTMTEiIHx8IGZh dGFsICIkVEVTVF9TU0hfUEtDUzExIGRvZXMgbm90IGV4aXN0IgotKwotKyMgc2V0dXAgZW52aXJv bm1lbnQgZm9yIHNvZnRoc20gdG9rZW4KLStESVI9JE9CSi9TT0ZUSFNNCi0rcm0gLXJmICRESVIK LStUT0tFTj0kRElSL3Rva2VuZGlyCi0rbWtkaXIgLXAgJFRPS0VOCi0rU09GVEhTTTJfQ09ORj0k RElSL3NvZnRoc20yLmNvbmYKLStleHBvcnQgU09GVEhTTTJfQ09ORgotK2NhdCA+ICRTT0ZUSFNN Ml9DT05GIDw8IEVPRgotKyMgU29mdEhTTSB2MiBjb25maWd1cmF0aW9uIGZpbGUKLStkaXJlY3Rv cmllcy50b2tlbmRpciA9ICR7VE9LRU59Ci0rb2JqZWN0c3RvcmUuYmFja2VuZCA9IGZpbGUKLSsj IEVSUk9SLCBXQVJOSU5HLCBJTkZPLCBERUJVRwotK2xvZy5sZXZlbCA9IERFQlVHCi0rIyBJZiBD S0ZfUkVNT1ZBQkxFX0RFVklDRSBmbGFnIHNob3VsZCBiZSBzZXQKLStzbG90cy5yZW1vdmFibGUg PSBmYWxzZQotK0VPRgotK291dD0kKHNvZnRoc20yLXV0aWwgLS1pbml0LXRva2VuIC0tZnJlZSAt LWxhYmVsIHRva2VuLXNsb3QtMCAtLXBpbiAiJFRFU1RfU1NIX1BJTiIgLS1zby1waW4gIiRURVNU X1NTSF9TT1BJTiIpCi0rc2xvdD0kKGVjaG8gLS0gJG91dCB8IHNlZCAncy8uKiAvLycpCi0rCi0r IyBwcmV2ZW50IHNzaC1hZ2VudCBmcm9tIGNhbGxpbmcgc3NoLWFza3Bhc3MKLStTU0hfQVNLUEFT Uz0vdXNyL2Jpbi90cnVlCi0rZXhwb3J0IFNTSF9BU0tQQVNTCi0rdW5zZXQgRElTUExBWQotKyMg V2UgbmVlZCBpbnRlcmFjdGl2ZSBhY2Nlc3MgdG8gdGVzdCBQS0NTIyBzaW5jZSBpdCBwcm9tcHRz IGZvciBQSU4KLSsjIEJhY2t1cCBzc2hfcHJveHkgYmVmb3JlIG1vZGlmaWNhdGlvbnMKLStjcCAk T0JKL3NzaF9wcm94eSAkT0JKL3NzaF9wcm94eV9iYWsKLStzZWQgLWkgJ3MvLipCYXRjaE1vZGUu Ki8vZycgJE9CSi9zc2hfcHJveHkKLSsjIFJlbW92ZSBJZGVudGl0eUZpbGUgZW50cmllcyB0byBw cmV2ZW50IGV4Y2VlZGluZyBNYXhBdXRoVHJpZXMgd2hlbiB1c2luZwotKyMgUEtDUzExUHJvdmlk ZXIgKC1JKSBvciBQS0NTMTEgVVJJcy4gVGhlIGRlZmF1bHQgc3NoX2NvbmZpZyBpbmNsdWRlcyBt dWx0aXBsZQotKyMgaWRlbnRpdHkgZmlsZXMgdGhhdCB3b3VsZCBiZSB0cmllZCBiZWZvcmUgUEtD UzExIGtleXMsIGNhdXNpbmcgYXV0aGVudGljYXRpb24KLSsjIHRvIGZhaWwgd2l0aCAiVG9vIG1h bnkgYXV0aGVudGljYXRpb24gZmFpbHVyZXMiIGJlZm9yZSBQS0NTMTEga2V5cyBhcmUgcmVhY2hl ZC4KLStncmVwIC1pdiBJZGVudGl0eUZpbGUgJE9CSi9zc2hfcHJveHkgPiAkT0JKL3NzaF9wcm94 eS50bXAKLSttdiAkT0JKL3NzaF9wcm94eS50bXAgJE9CSi9zc2hfcHJveHkKLSsKLSsjIHN0YXJ0 IGNvbW1hbmQgdy9vIHR0eSwgc28gc3NoIGFjY2VwdHMgcGluIGZyb20gc3RkaW4gKGZyb20gYWdl bnQtcGtjczExLnNoKQotK25vdHR5KCkgewotKwlwZXJsIC1lICd1c2UgUE9TSVg7IFBPU0lYOjpz ZXRzaWQoKTsKLSsJICAgIGlmIChmb3JrKSB7IHdhaXQ7IGV4aXQoJD8gPj4gOCk7IH0gZWxzZSB7 IGV4ZWMoQEFSR1YpIH0nICIkQCIKLSt9Ci0rCi0rdHJhY2UgImdlbmVyYXRpbmcga2V5cyIKLStJ RDE9IjAyIgotK0lEMj0iMDQiCi0rSUQzPSIwNiIKLStSU0E9JHtESVJ9L1JTQQotK0VDPSR7RElS fS9FQwotK0VEMjU1MTk9JHtESVJ9L0VEMjU1MTkKLStvcGVuc3NsIGdlbnBrZXkgLWFsZ29yaXRo bSByc2EgPiAkUlNBCi0rb3BlbnNzbCBwa2NzOCAtbm9jcnlwdCAtaW4gJFJTQSB8XAotKyAgICBz b2Z0aHNtMi11dGlsIC0tc2xvdCAiJHNsb3QiIC0tbGFiZWwgIlNTSCBSU0EgS2V5ICRJRDEiIC0t aWQgJElEMSBcCi0rCS0tcGluICIkVEVTVF9TU0hfUElOIiAtLWltcG9ydCAvZGV2L3N0ZGluCi0r b3BlbnNzbCBnZW5wa2V5IFwKLSsgICAgLWdlbnBhcmFtIFwKLSsgICAgLWFsZ29yaXRobSBlYyBc Ci0rICAgIC1wa2V5b3B0IGVjX3BhcmFtZ2VuX2N1cnZlOnByaW1lMjU2djEgfFwKLSsgICAgb3Bl bnNzbCBnZW5wa2V5IFwKLSsgICAgLXBhcmFtZmlsZSAvZGV2L3N0ZGluID4gJEVDCi0rb3BlbnNz bCBwa2NzOCAtbm9jcnlwdCAtaW4gJEVDIHxcCi0rICAgIHNvZnRoc20yLXV0aWwgLS1zbG90ICIk c2xvdCIgLS1sYWJlbCAiU1NIIEVDRFNBIEtleSAkSUQyIiAtLWlkICRJRDIgXAotKwktLXBpbiAi JFRFU1RfU1NIX1BJTiIgLS1pbXBvcnQgL2Rldi9zdGRpbgotK29wZW5zc2wgZ2VucGtleSAtYWxn b3JpdGhtIGVkMjU1MTkgPiAkRUQyNTUxOQotK29wZW5zc2wgcGtjczggLW5vY3J5cHQgLWluICRF RDI1NTE5IHxcCi0rICAgIHNvZnRoc20yLXV0aWwgLS1zbG90ICIkc2xvdCIgLS1sYWJlbCAiU1NI IEVEMjU1MTkgS2V5ICRJRDMiIC0taWQgJElEMyBcCi0rCS0tcGluICIkVEVTVF9TU0hfUElOIiAt LWltcG9ydCAvZGV2L3N0ZGluCi0rCi0rdHJhY2UgIkxpc3QgdGhlIGtleXMgaW4gdGhlIHNzaC1r ZXlnZW4gd2l0aCBQS0NTIzExIFVSSXMiCi0rJHtTU0hLRVlHRU59IC1EICR7VEVTVF9TU0hfUEtD UzExfSA+ICRPQkovdG9rZW5fa2V5cwotK2lmIFsgJD8gLW5lIDAgXTsgdGhlbgotKwlmYWlsICJG QUlMOiBrZXlnZW4gZmFpbHMgdG8gZW51bWVyYXRlIGtleXMgb24gUEtDUyMxMSB0b2tlbiIKLStm aQotK2dyZXAgInBrY3MxMToiICRPQkovdG9rZW5fa2V5cyA+IC9kZXYvbnVsbAotK2lmIFsgJD8g LW5lIDAgXTsgdGhlbgotKwlmYWlsICJGQUlMOiBUaGUga2V5cyBmcm9tIHNzaC1rZXlnZW4gZG8g bm90IGNvbnRhaW4gUEtDUyMxMSBVUkkgYXMgYSBjb21tZW50IgotK2ZpCi0rCi0rIyBTZXQgdGhl IEVDRFNBIGtleSB0byBhdXRob3JpemVkIGtleXMKLStncmVwICJFQ0RTQSIgJE9CSi90b2tlbl9r ZXlzID4gJE9CSi9hdXRob3JpemVkX2tleXNfJFVTRVIKLSsKLSt0cmFjZSAiU2ltcGxlIGNvbm5l Y3Qgd2l0aCBzc2ggKHdpdGhvdXQgUEtDUyMxMSBVUkkpIgotK2VjaG8gJHtURVNUX1NTSF9QSU59 IHwgbm90dHkgJHtTU0h9IC1JICR7VEVTVF9TU0hfUEtDUzExfSBcCi0rICAgIC1GICRPQkovc3No X3Byb3h5IHNvbWVob3N0IGV4aXQgNQotK3I9JD8KLStpZiBbICRyIC1uZSA1IF07IHRoZW4KLSsJ ZmFpbCAiRkFJTDogc3NoIGNvbm5lY3Qgd2l0aCBwa2NzMTEgZmFpbGVkIChleGl0IGNvZGUgJHIp IgotK2ZpCi0rCi0rdHJhY2UgIkNvbm5lY3Qgd2l0aCBQS0NTIzExIFVSSSIKLSt0cmFjZSAiICAo RUNEU0Ega2V5IHNob3VsZCBzdWNjZWVkKSIKLStlY2hvICR7VEVTVF9TU0hfUElOfSB8IG5vdHR5 ICR7U1NIfSAtRiAkT0JKL3NzaF9wcm94eSBcCi0rICAgIC1pICJwa2NzMTE6aWQ9JSR7SUQyfT9t b2R1bGUtcGF0aD0ke1RFU1RfU1NIX1BLQ1MxMX0iIHNvbWVob3N0IGV4aXQgNQotK3I9JD8KLStp ZiBbICRyIC1uZSA1IF07IHRoZW4KLSsJZmFpbCAiRkFJTDogc3NoIGNvbm5lY3Qgd2l0aCBQS0NT IzExIFVSSSBmYWlsZWQgKGV4aXQgY29kZSAkcikiCi0rZmkKLSsKLSt0cmFjZSAiICAoUlNBIGtl eSBzaG91bGQgZmFpbCkiCi0rZWNobyAke1RFU1RfU1NIX1BJTn0gfCBub3R0eSAke1NTSH0gLUYg JE9CSi9zc2hfcHJveHkgXAotKyAgICAgLWkgInBrY3MxMTppZD0lJHtJRDF9P21vZHVsZS1wYXRo PSR7VEVTVF9TU0hfUEtDUzExfSIgc29tZWhvc3QgZXhpdCA1Ci0rcj0kPwotK2lmIFsgJHIgLWVx IDUgXTsgdGhlbgotKwlmYWlsICJGQUlMOiBzc2ggY29ubmVjdCB3aXRoIFBLQ1MjMTEgVVJJIHN1 Y2NlZWRlZCAoc2hvdWxkIGZhaWwpIgotK2ZpCi0rCi0rIyBTZXQgdGhlIEVEMjU1MTkga2V5IGFz IGF1dGhvcml6ZWQKLStncmVwICJFRDI1NTE5IiAkT0JKL3Rva2VuX2tleXMgPiAkT0JKL2F1dGhv cml6ZWRfa2V5c18kVVNFUgotKwotK3RyYWNlICIgIChFRDI1NTE5IGtleSBzaG91bGQgc3VjY2Vl ZCkiCi0rZWNobyAke1RFU1RfU1NIX1BJTn0gfCBub3R0eSAke1NTSH0gLUYgJE9CSi9zc2hfcHJv eHkgXAotKyAgICAgLWkgInBrY3MxMTppZD0lJHtJRDN9P21vZHVsZS1wYXRoPSR7VEVTVF9TU0hf UEtDUzExfSIgc29tZWhvc3QgZXhpdCA1Ci0rcj0kPwotK2lmIFsgJHIgLW5lIDUgXTsgdGhlbgot KwlmYWlsICJGQUlMOiBzc2ggY29ubmVjdCB3aXRoIFBLQ1MjMTEgVVJJIChFZDI1NTE5KSBmYWls ZWQgKGV4aXQgY29kZSAkcikiCi0rZmkKLSsKLSsjIFNldCB0aGUgRUNEU0Ega2V5IGJhY2sgYXMg YXV0aG9yaXplZAotK2dyZXAgIkVDRFNBIiAkT0JKL3Rva2VuX2tleXMgPiAkT0JKL2F1dGhvcml6 ZWRfa2V5c18kVVNFUgotKwotK3RyYWNlICJDb25uZWN0IHdpdGggUEtDUyMxMSBVUkkgaW5jbHVk aW5nIFBJTiBzaG91bGQgbm90IHByb21wdCIKLSt0cmFjZSAiICAoRUNEU0Ega2V5IHNob3VsZCBz dWNjZWVkKSIKLSske1NTSH0gLUYgJE9CSi9zc2hfcHJveHkgLWkgXAotKyAgICAicGtjczExOmlk PSUke0lEMn0/bW9kdWxlLXBhdGg9JHtURVNUX1NTSF9QS0NTMTF9JnBpbi12YWx1ZT0ke1RFU1Rf U1NIX1BJTn0iIHNvbWVob3N0IGV4aXQgNQotK3I9JD8KLStpZiBbICRyIC1uZSA1IF07IHRoZW4K LSsJZmFpbCAiRkFJTDogc3NoIGNvbm5lY3Qgd2l0aCBQS0NTIzExIFVSSSBmYWlsZWQgKGV4aXQg Y29kZSAkcikiCi0rZmkKLSsKLSt0cmFjZSAiICAoUlNBIGtleSBzaG91bGQgZmFpbCkiCi0rJHtT U0h9IC1GICRPQkovc3NoX3Byb3h5IC1pIFwKLSsgICAgInBrY3MxMTppZD0lJHtJRDF9P21vZHVs ZS1wYXRoPSR7VEVTVF9TU0hfUEtDUzExfSZwaW4tdmFsdWU9JHtURVNUX1NTSF9QSU59IiBzb21l aG9zdCBleGl0IDUKLStyPSQ/Ci0raWYgWyAkciAtZXEgNSBdOyB0aGVuCi0rCWZhaWwgIkZBSUw6 IHNzaCBjb25uZWN0IHdpdGggUEtDUyMxMSBVUkkgc3VjY2VlZGVkIChzaG91bGQgZmFpbCkiCi0r ZmkKLSsKLSsjIFNldCB0aGUgRUQyNTUxOSBrZXkgYXMgYXV0aG9yaXplZAotK2dyZXAgIkVEMjU1 MTkiICRPQkovdG9rZW5fa2V5cyA+ICRPQkovYXV0aG9yaXplZF9rZXlzXyRVU0VSCi0rCi0rdHJh Y2UgIiAgKEVEMjU1MTkga2V5IHNob3VsZCBzdWNjZWVkKSIKLSske1NTSH0gLUYgJE9CSi9zc2hf cHJveHkgLWkgXAotKyAgICAicGtjczExOmlkPSUke0lEM30/bW9kdWxlLXBhdGg9JHtURVNUX1NT SF9QS0NTMTF9JnBpbi12YWx1ZT0ke1RFU1RfU1NIX1BJTn0iIHNvbWVob3N0IGV4aXQgNQotK3I9 JD8KLStpZiBbICRyIC1uZSA1IF07IHRoZW4KLSsJZmFpbCAiRkFJTDogc3NoIGNvbm5lY3Qgd2l0 aCBQS0NTIzExIFVSSSAoRWQyNTUxOSkgZmFpbGVkIChleGl0IGNvZGUgJHIpIgotK2ZpCi0rCi0r IyBTZXQgdGhlIEVDRFNBIGtleSBiYWNrIGFzIGF1dGhvcml6ZWQKLStncmVwICJFQ0RTQSIgJE9C Si90b2tlbl9rZXlzID4gJE9CSi9hdXRob3JpemVkX2tleXNfJFVTRVIKLSsKLSt0cmFjZSAiQ29u bmVjdCB3aXRoIHZhcmlvdXMgZmlsdGVyaW5nIG9wdGlvbnMgaW4gUEtDUyMxMSBVUkkiCi0rdHJh Y2UgIiAgKGJ5IG9iamVjdCBsYWJlbCwgRUNEU0Egc2hvdWxkIHN1Y2NlZWQpIgotK2VjaG8gJHtU RVNUX1NTSF9QSU59IHwgbm90dHkgJHtTU0h9IC1GICRPQkovc3NoX3Byb3h5IFwKLSsgICAgLWkg InBrY3MxMTpvYmplY3Q9U1NIJTIwRUNEU0ElMjBLZXklMjAwND9tb2R1bGUtcGF0aD0ke1RFU1Rf U1NIX1BLQ1MxMX0iIHNvbWVob3N0IGV4aXQgNQotK3I9JD8KLStpZiBbICRyIC1uZSA1IF07IHRo ZW4KLSsJZmFpbCAiRkFJTDogc3NoIGNvbm5lY3Qgd2l0aCBQS0NTIzExIFVSSSBmYWlsZWQgKGV4 aXQgY29kZSAkcikiCi0rZmkKLSsKLSt0cmFjZSAiICAoYnkgb2JqZWN0IGxhYmVsLCBSU0Ega2V5 IHNob3VsZCBmYWlsKSIKLStlY2hvICR7VEVTVF9TU0hfUElOfSB8IG5vdHR5ICR7U1NIfSAtRiAk T0JKL3NzaF9wcm94eSBcCi0rICAgICAtaSAicGtjczExOm9iamVjdD1TU0glMjBSU0ElMjBLZXkl MjAwMj9tb2R1bGUtcGF0aD0ke1RFU1RfU1NIX1BLQ1MxMX0iIHNvbWVob3N0IGV4aXQgNQotK3I9 JD8KLStpZiBbICRyIC1lcSA1IF07IHRoZW4KLSsJZmFpbCAiRkFJTDogc3NoIGNvbm5lY3Qgd2l0 aCBQS0NTIzExIFVSSSBzdWNjZWVkZWQgKHNob3VsZCBmYWlsKSIKLStmaQotKwotKyMgU2V0IHRo ZSBFRDI1NTE5IGtleSBhcyBhdXRob3JpemVkCi0rZ3JlcCAiRUQyNTUxOSIgJE9CSi90b2tlbl9r ZXlzID4gJE9CSi9hdXRob3JpemVkX2tleXNfJFVTRVIKLSsKLSt0cmFjZSAiICAoYnkgb2JqZWN0 IGxhYmVsLCBFRDI1NTE5IGtleSBzaG91bGQgc3VjY2VlZCkiCi0rZWNobyAke1RFU1RfU1NIX1BJ Tn0gfCBub3R0eSAke1NTSH0gLUYgJE9CSi9zc2hfcHJveHkgXAotKyAgICAgLWkgInBrY3MxMTpv YmplY3Q9U1NIJTIwRUQyNTUxOSUyMEtleSUyMDA2P21vZHVsZS1wYXRoPSR7VEVTVF9TU0hfUEtD UzExfSIgc29tZWhvc3QgZXhpdCA1Ci0rcj0kPwotK2lmIFsgJHIgLW5lIDUgXTsgdGhlbgotKwlm YWlsICJGQUlMOiBzc2ggY29ubmVjdCB3aXRoIFBLQ1MjMTEgVVJJIChFZDI1NTE5KSBmYWlsZWQg KGV4aXQgY29kZSAkcikiCi0rZmkKLSsKLSsjIFNldCB0aGUgRUNEU0Ega2V5IGJhY2sgYXMgYXV0 aG9yaXplZAotK2dyZXAgIkVDRFNBIiAkT0JKL3Rva2VuX2tleXMgPiAkT0JKL2F1dGhvcml6ZWRf a2V5c18kVVNFUgotKwotK3RyYWNlICIgIChieSB0b2tlbiBsYWJlbCwgRUNEU0Ega2V5IHNob3Vs ZCBzdWNjZWVkKSIKLStlY2hvICR7VEVTVF9TU0hfUElOfSB8IG5vdHR5ICR7U1NIfSAtRiAkT0JK L3NzaF9wcm94eSBcCi0rICAgIC1pICJwa2NzMTE6aWQ9JSR7SUQyfTt0b2tlbj10b2tlbi1zbG90 LTA/bW9kdWxlLXBhdGg9JHtURVNUX1NTSF9QS0NTMTF9IiBzb21laG9zdCBleGl0IDUKLStyPSQ/ Ci0raWYgWyAkciAtbmUgNSBdOyB0aGVuCi0rCWZhaWwgIkZBSUw6IHNzaCBjb25uZWN0IHdpdGgg UEtDUyMxMSBVUkkgZmFpbGVkIChleGl0IGNvZGUgJHIpIgotK2ZpCi0rCi0rIyBTZXQgdGhlIEVE MjU1MTkga2V5IGFzIGF1dGhvcml6ZWQKLStncmVwICJFRDI1NTE5IiAkT0JKL3Rva2VuX2tleXMg PiAkT0JKL2F1dGhvcml6ZWRfa2V5c18kVVNFUgotKwotK3RyYWNlICIgIChieSB0b2tlbiBsYWJl bCwgRUQyNTUxOSBrZXkgc2hvdWxkIHN1Y2NlZWQpIgotK2VjaG8gJHtURVNUX1NTSF9QSU59IHwg bm90dHkgJHtTU0h9IC1GICRPQkovc3NoX3Byb3h5IFwKLSsgICAgLWkgInBrY3MxMTppZD0lJHtJ RDN9O3Rva2VuPXRva2VuLXNsb3QtMD9tb2R1bGUtcGF0aD0ke1RFU1RfU1NIX1BLQ1MxMX0iIHNv bWVob3N0IGV4aXQgNQotK3I9JD8KLStpZiBbICRyIC1uZSA1IF07IHRoZW4KLSsJZmFpbCAiRkFJ TDogc3NoIGNvbm5lY3Qgd2l0aCBQS0NTIzExIFVSSSAoRWQyNTUxOSkgZmFpbGVkIChleGl0IGNv ZGUgJHIpIgotK2ZpCi0rCi0rIyBTZXQgdGhlIEVDRFNBIGtleSBiYWNrIGFzIGF1dGhvcml6ZWQK LStncmVwICJFQ0RTQSIgJE9CSi90b2tlbl9rZXlzID4gJE9CSi9hdXRob3JpemVkX2tleXNfJFVT RVIKLSsKLSt0cmFjZSAiICAoYnkgd3JvbmcgdG9rZW4gbGFiZWwsIHNob3VsZCBmYWlsKSIKLStl Y2hvICR7VEVTVF9TU0hfUElOfSB8IG5vdHR5ICR7U1NIfSAtRiAkT0JKL3NzaF9wcm94eSBcCi0r ICAgICAtaSAicGtjczExOnRva2VuPXRva2VuLXNsb3QtOTk/bW9kdWxlLXBhdGg9JHtURVNUX1NT SF9QS0NTMTF9IiBzb21laG9zdCBleGl0IDUKLStyPSQ/Ci0raWYgWyAkciAtZXEgNSBdOyB0aGVu Ci0rCWZhaWwgIkZBSUw6IHNzaCBjb25uZWN0IHdpdGggUEtDUyMxMSBVUkkgc3VjY2VlZGVkIChz aG91bGQgZmFpbCkiCi0rZmkKLSsKLSsKLSsKLSsKLSt0cmFjZSAiVGVzdCBQS0NTIzExIFVSSSBz cGVjaWZpY2F0aW9uIGluIGNvbmZpZ3VyYXRpb24gZmlsZXMiCi0rZWNobyAiSWRlbnRpdHlGaWxl IFwicGtjczExOmlkPSUke0lEMn0/bW9kdWxlLXBhdGg9JHtURVNUX1NTSF9QS0NTMTF9XCIiIFwK LSsgICAgPj4gJE9CSi9zc2hfcHJveHkKLSt0cmFjZSAiICAoRUNEU0Ega2V5IHNob3VsZCBzdWNj ZWVkKSIKLStlY2hvICR7VEVTVF9TU0hfUElOfSB8IG5vdHR5ICR7U1NIfSAtRiAkT0JKL3NzaF9w cm94eSBzb21laG9zdCBleGl0IDUKLStyPSQ/Ci0raWYgWyAkciAtbmUgNSBdOyB0aGVuCi0rCWZh aWwgIkZBSUw6IHNzaCBjb25uZWN0IHdpdGggUEtDUyMxMSBVUkkgaW4gY29uZmlnIGZhaWxlZCAo ZXhpdCBjb2RlICRyKSIKLStmaQotKwotKyMgU2V0IHRoZSBSU0Ega2V5IGFzIGF1dGhvcml6ZWQK LStncmVwICJSU0EiICRPQkovdG9rZW5fa2V5cyA+ICRPQkovYXV0aG9yaXplZF9rZXlzXyRVU0VS Ci0rCi0rdHJhY2UgIiAgKFJTQSBrZXkgc2hvdWxkIGZhaWwpIgotK2VjaG8gJHtURVNUX1NTSF9Q SU59IHwgbm90dHkgJHtTU0h9IC1GICRPQkovc3NoX3Byb3h5IHNvbWVob3N0IGV4aXQgNQotK3I9 JD8KLStpZiBbICRyIC1lcSA1IF07IHRoZW4KLSsJZmFpbCAiRkFJTDogc3NoIGNvbm5lY3Qgd2l0 aCBQS0NTIzExIFVSSSBpbiBjb25maWcgc3VjY2VlZGVkIChzaG91bGQgZmFpbCkiCi0rZmkKLStz ZWQgLWkgLWUgIi9JZGVudGl0eUZpbGUvZCIgJE9CSi9zc2hfcHJveHkKLSsKLSt0cmFjZSAiQ29t YmluYXRpb24gb2YgUEtDUzExUHJvdmlkZXIgYW5kIFBLQ1MxMVVSSSBvbiBjb21tYW5kbGluZSIK LSt0cmFjZSAiICAoUlNBIGtleSBzaG91bGQgc3VjY2VlZCkiCi0rZWNobyAke1RFU1RfU1NIX1BJ Tn0gfCBub3R0eSAke1NTSH0gLUYgJE9CSi9zc2hfcHJveHkgXAotKyAgICAtaSAicGtjczExOmlk PSUke0lEMX0iIC1JICR7VEVTVF9TU0hfUEtDUzExfSBzb21laG9zdCBleGl0IDUKLStyPSQ/Ci0r aWYgWyAkciAtbmUgNSBdOyB0aGVuCi0rCWZhaWwgIkZBSUw6IHNzaCBjb25uZWN0IHdpdGggUEtD UyMxMSBVUkkgYW5kIHByb3ZpZGVyIGNvbWJpbmF0aW9uIiBcCi0rCSAgICAiZmFpbGVkIChleGl0 IGNvZGUgJHIpIgotK2ZpCi0rCi0rdHJhY2UgIlJlZ3Jlc3M6IE1pc3NpbmcgcHJvdmlkZXIgaW4g UEtDUzExVVJJIG9wdGlvbiIKLSske1NTSH0gLUYgJE9CSi9zc2hfcHJveHkgXAotKyAgICAtbyBJ ZGVudGl0eUZpbGU9XCJwa2NzMTE6dG9rZW49c2VnZmF1bHRcIiBzb21laG9zdCBleGl0IDUKLSty PSQ/Ci0raWYgWyAkciAtZXEgMTM5IF07IHRoZW4KLSsJZmFpbCAiRkFJTDogc3NoIGNvbm5lY3Qg d2l0aCBtaXNzaW5nIHByb3ZpZGVyX2lkIGZyb20gY29uZmlndXJhdGlvbiBvcHRpb24iIFwKLSsJ ICAgICJjcmFzaGVkIChleGl0IGNvZGUgJHIpIgotK2ZpCi0rCi0rCi0rdHJhY2UgIlNTSCBBZ2Vu dCBjYW4gd29yayB3aXRoIFBLQ1MjMTEgVVJJIgotK3RyYWNlICJzdGFydCB0aGUgYWdlbnQiCi0r ZXZhbCBgJHtTU0hBR0VOVH0gLXNgID4gIC9kZXYvbnVsbAotKwotK3I9JD8KLStpZiBbICRyIC1u ZSAwIF07IHRoZW4KLSsJZmFpbCAiY291bGQgbm90IHN0YXJ0IHNzaC1hZ2VudDogZXhpdCBjb2Rl ICRyIgotK2Vsc2UKLSsJdHJhY2UgImFkZCB3aG9sZSBwcm92aWRlciB0byBhZ2VudCIKLSsJZWNo byAke1RFU1RfU1NIX1BJTn0gfCBub3R0eSAke1NTSEFERH0gXAotKwkgICAgInBrY3MxMTo/bW9k dWxlLXBhdGg9JHtURVNUX1NTSF9QS0NTMTF9IiAjPiAvZGV2L251bGwgMj4mMQotKwlyPSQ/Ci0r CWlmIFsgJHIgLW5lIDAgXTsgdGhlbgotKwkJZmFpbCAiRkFJTDogc3NoLWFkZCBmYWlsZWQgd2l0 aCB3aG9sZSBwcm92aWRlcjogZXhpdCBjb2RlICRyIgotKwlmaQotKwotKwl0cmFjZSAiIHBrY3Mx MSBsaXN0IHZpYSBhZ2VudCAoYWxsIGtleXMpIgotKwkke1NTSEFERH0gLWwgPiAvZGV2L251bGwg Mj4mMQotKwlyPSQ/Ci0rCWlmIFsgJHIgLW5lIDAgXTsgdGhlbgotKwkJZmFpbCAiRkFJTDogc3No LWFkZCAtbCBmYWlsZWQgd2l0aCB3aG9sZSBwcm92aWRlcjogZXhpdCBjb2RlICRyIgotKwlmaQot KwotKwl0cmFjZSAiIHBrY3MxMSBjb25uZWN0IHZpYSBhZ2VudCAoYWxsIGtleXMpIgotKwkke1NT SH0gLUYgJE9CSi9zc2hfcHJveHkgc29tZWhvc3QgZXhpdCA1Ci0rCXI9JD8KLSsJaWYgWyAkciAt bmUgNSBdOyB0aGVuCi0rCQlmYWlsICJGQUlMOiBzc2ggY29ubmVjdCBmYWlsZWQgd2l0aCB3aG9s ZSBwcm92aWRlciAoZXhpdCBjb2RlICRyKSIKLSsJZmkKLSsKLSsJdHJhY2UgIiByZW1vdmUgcGtj czExIGtleXMgKGFsbCBrZXlzKSIKLSsJJHtTU0hBRER9IC1kICJwa2NzMTE6P21vZHVsZS1wYXRo PSR7VEVTVF9TU0hfUEtDUzExfSIgPiAvZGV2L251bGwgMj4mMQotKwlyPSQ/Ci0rCWlmIFsgJHIg LW5lIDAgXTsgdGhlbgotKwkJZmFpbCAiRkFJTDogc3NoLWFkZCAtZCBmYWlsZWQgd2l0aCB3aG9s ZSBwcm92aWRlcjogZXhpdCBjb2RlICRyIgotKwlmaQotKwotKwl0cmFjZSAiYWRkIG9ubHkgUlNB IGtleSB0byB0aGUgYWdlbnQiCi0rCWVjaG8gJHtURVNUX1NTSF9QSU59IHwgbm90dHkgJHtTU0hB RER9IFwKLSsJICAgICJwa2NzMTE6aWQ9JSR7SUQxfT9tb2R1bGUtcGF0aD0ke1RFU1RfU1NIX1BL Q1MxMX0iID4gL2Rldi9udWxsIDI+JjEKLSsJcj0kPwotKwlpZiBbICRyIC1uZSAwIF07IHRoZW4K LSsJCWZhaWwgIkZBSUwgc3NoLWFkZCBmYWlsZWQgd2l0aCBSU0Ega2V5OiBleGl0IGNvZGUgJHIi Ci0rCWZpCi0rCi0rCXRyYWNlICIgcGtjczExIGNvbm5lY3QgdmlhIGFnZW50IChSU0Ega2V5KSIK LSsJJHtTU0h9IC1GICRPQkovc3NoX3Byb3h5IHNvbWVob3N0IGV4aXQgNQotKwlyPSQ/Ci0rCWlm IFsgJHIgLW5lIDUgXTsgdGhlbgotKwkJZmFpbCAiRkFJTDogc3NoIGNvbm5lY3QgZmFpbGVkIHdp dGggUlNBIGtleSAoZXhpdCBjb2RlICRyKSIKLSsJZmkKLSsKLSsJdHJhY2UgIiByZW1vdmUgUlNB IHBrY3MxMSBrZXkiCi0rCSR7U1NIQUREfSAtZCAicGtjczExOmlkPSUke0lEMX0/bW9kdWxlLXBh dGg9JHtURVNUX1NTSF9QS0NTMTF9IiBcCi0rCSAgICA+IC9kZXYvbnVsbCAyPiYxCi0rCXI9JD8K LSsJaWYgWyAkciAtbmUgMCBdOyB0aGVuCi0rCQlmYWlsICJGQUlMOiBzc2gtYWRkIC1kIGZhaWxl ZCB3aXRoIFJTQSBrZXk6IGV4aXQgY29kZSAkciIKLSsJZmkKLSsKLSsJdHJhY2UgImFkZCBvbmx5 IEVDRFNBIGtleSB0byB0aGUgYWdlbnQiCi0rCWVjaG8gJHtURVNUX1NTSF9QSU59IHwgbm90dHkg JHtTU0hBRER9IFwKLSsJICAgICJwa2NzMTE6aWQ9JSR7SUQyfT9tb2R1bGUtcGF0aD0ke1RFU1Rf U1NIX1BLQ1MxMX0iID4gL2Rldi9udWxsIDI+JjEKLSsJcj0kPwotKwlpZiBbICRyIC1uZSAwIF07 IHRoZW4KLSsJCWZhaWwgIkZBSUw6IHNzaC1hZGQgZmFpbGVkIHdpdGggc2Vjb25kIGtleTogZXhp dCBjb2RlICRyIgotKwlmaQotKwotKwl0cmFjZSAiIHBrY3MxMSBjb25uZWN0IHZpYSBhZ2VudCAo RUNEU0Ega2V5IHNob3VsZCBmYWlsKSIKLSsJJHtTU0h9IC1GICRPQkovc3NoX3Byb3h5IHNvbWVo b3N0IGV4aXQgNQotKwlyPSQ/Ci0rCWlmIFsgJHIgLWVxIDUgXTsgdGhlbgotKwkJZmFpbCAiRkFJ TDogc3NoIGNvbm5lY3QgcGFzc2VkIHdpdGggRUNEU0Ega2V5IChzaG91bGQgZmFpbCkiCi0rCWZp Ci0rCi0rCXRyYWNlICJhZGQgYWxzbyB0aGUgUlNBIGtleSB0byB0aGUgYWdlbnQiCi0rCWVjaG8g JHtURVNUX1NTSF9QSU59IHwgbm90dHkgJHtTU0hBRER9IFwKLSsJICAgICJwa2NzMTE6aWQ9JSR7 SUQxfT9tb2R1bGUtcGF0aD0ke1RFU1RfU1NIX1BLQ1MxMX0iID4gL2Rldi9udWxsIDI+JjEKLSsJ cj0kPwotKwlpZiBbICRyIC1uZSAwIF07IHRoZW4KLSsJCWZhaWwgIkZBSUw6IHNzaC1hZGQgZmFp bGVkIHdpdGggZmlyc3Qga2V5OiBleGl0IGNvZGUgJHIiCi0rCWZpCi0rCi0rCXRyYWNlICIgcmVt b3ZlIEVDRFNBIHBrY3MxMSBrZXkiCi0rCSR7U1NIQUREfSAtZCAicGtjczExOmlkPSUke0lEMn0/ bW9kdWxlLXBhdGg9JHtURVNUX1NTSF9QS0NTMTF9IiBcCi0rCSAgICA+IC9kZXYvbnVsbCAyPiYx Ci0rCXI9JD8KLSsJaWYgWyAkciAtbmUgMCBdOyB0aGVuCi0rCQlmYWlsICJzc2gtYWRkIC1kIGZh aWxlZCB3aXRoIEVDRFNBIGtleTogZXhpdCBjb2RlICRyIgotKwlmaQotKwotKwl0cmFjZSAiIHJl bW92ZSBhbHJlYWR5LXJlbW92ZWQgcGtjczExIGtleSBzaG91bGQgZmFpbCIKLSsJJHtTU0hBRER9 IC1kICJwa2NzMTE6aWQ9JSR7SUQyfT9tb2R1bGUtcGF0aD0ke1RFU1RfU1NIX1BLQ1MxMX0iIFwK LSsJICAgID4gL2Rldi9udWxsIDI+JjEKLSsJcj0kPwotKwlpZiBbICRyIC1lcSAwIF07IHRoZW4K LSsJCWZhaWwgIkZBSUw6IHNzaC1hZGQgLWQgcGFzc2VkIHdpdGggbm9uLWV4aXN0aW5nIGtleSAo c2hvdWxkIGZhaWwpIgotKwlmaQotKwotKwl0cmFjZSAiIHBrY3MxMSBjb25uZWN0IHZpYSBhZ2Vu dCAodGhlIFJTQSBrZXkgc2hvdWxkIGJlIHN0aWxsIHVzYWJsZSkiCi0rCSR7U1NIfSAtRiAkT0JK L3NzaF9wcm94eSBzb21laG9zdCBleGl0IDUKLSsJcj0kPwotKwlpZiBbICRyIC1uZSA1IF07IHRo ZW4KLSsJCWZhaWwgInNzaCBjb25uZWN0IGZhaWxlZCB3aXRoIFJTQSBrZXkgKGFmdGVyIHJlbW92 aW5nIEVDRFNBKTogZXhpdCBjb2RlICRyIgotKwlmaQotKwotKwl0cmFjZSAia2lsbCBhZ2VudCIK LSsJJHtTU0hBR0VOVH0gLWsgPiAvZGV2L251bGwKLStmaQotKwotKyMgUmVzdG9yZSBvcmlnaW5h bCBzc2hfcHJveHkKLSttdiAkT0JKL3NzaF9wcm94eV9iYWsgJE9CSi9zc2hfcHJveHkKLWRpZmYg LS1naXQgYS9yZWdyZXNzL3VuaXR0ZXN0cy9NYWtlZmlsZSBiL3JlZ3Jlc3MvdW5pdHRlc3RzL01h a2VmaWxlCi1pbmRleCBlMzcwOTAwZTQuLmQ2Yzg5YzEyOSAxMDA2NDQKLS0tLSBhL3JlZ3Jlc3Mv dW5pdHRlc3RzL01ha2VmaWxlCi0rKysgYi9yZWdyZXNzL3VuaXR0ZXN0cy9NYWtlZmlsZQotQEAg LTEsNiArMSw2IEBACi0gIwkkT3BlbkJTRDogTWFrZWZpbGUsdiAxLjEzIDIwMjMvMDkvMjQgMDg6 MTQ6MTMgY2xhdWRpbyBFeHAgJAotIAotIFNVQkRJUj0JdGVzdF9oZWxwZXIgc3NoYnVmIHNzaGtl eSBiaXRtYXAga2V4IGhvc3RrZXlzIHV0ZjggbWF0Y2ggY29udmVyc2lvbgotLVNVQkRJUis9YXV0 aG9wdCBtaXNjIHNzaHNpZwotK1NVQkRJUis9YXV0aG9wdCBtaXNjIHNzaHNpZyBwa2NzMTEKLSAK LSAuaW5jbHVkZSA8YnNkLnN1YmRpci5taz4KLWRpZmYgLS1naXQgYS9yZWdyZXNzL3VuaXR0ZXN0 cy9wa2NzMTEvdGVzdHMuYyBiL3JlZ3Jlc3MvdW5pdHRlc3RzL3BrY3MxMS90ZXN0cy5jCi1uZXcg ZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwLi44OWJhNDVjNGUKLS0tLSAvZGV2L251 bGwKLSsrKyBiL3JlZ3Jlc3MvdW5pdHRlc3RzL3BrY3MxMS90ZXN0cy5jCi1AQCAtMCwwICsxLDM1 MyBAQAotKy8qCi0rICogQ29weXJpZ2h0IChjKSAyMDE3IFJlZCBIYXQKLSsgKgotKyAqIEF1dGhv cnM6IEpha3ViIEplbGVuIDxqamVsZW5AcmVkaGF0LmNvbT4KLSsgKgotKyAqIFBlcm1pc3Npb24g dG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFu eQotKyAqIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJv dmlkZWQgdGhhdCB0aGUgYWJvdmUKLSsgKiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p c3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLgotKyAqCi0rICogVEhFIFNPRlRXQVJF IElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5U SUVTCi0rICogV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJ RUQgV0FSUkFOVElFUyBPRgotKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4gSU4gTk8g RVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SCi0rICogQU5ZIFNQRUNJQUwsIERJ UkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUwot KyAqIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklU UywgV0hFVEhFUiBJTiBBTgotKyAqIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBP VEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GCi0rICogT1IgSU4gQ09OTkVDVElP TiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KLSsgKi8KLSsK LSsjaW5jbHVkZSAiaW5jbHVkZXMuaCIKLSsKLSsjaW5jbHVkZSA8bG9jYWxlLmg+Ci0rI2luY2x1 ZGUgPHN0cmluZy5oPgotKwotKyNpbmNsdWRlICIuLi90ZXN0X2hlbHBlci90ZXN0X2hlbHBlci5o IgotKwotKyNpbmNsdWRlICJzc2hidWYuaCIKLSsjaW5jbHVkZSAic3NoLXBrY3MxMS11cmkuaCIK LSsKLSsjZGVmaW5lIEVNUFRZX1VSSSBjb21wb3NlX3VyaShOVUxMLCAwLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKQotKwotKy8qIHByb3RvdHlwZXMgYXJlIG5vdCBw dWJsaWMgLS0gc3BlY2lmeSB0aGVtIGhlcmUgaW50ZXJuYWxseSBmb3IgdGVzdHMgKi8KLStzdHJ1 Y3Qgc3NoYnVmICpwZXJjZW50X2VuY29kZShjb25zdCBjaGFyICosIHNpemVfdCwgY2hhciAqKTsK LStpbnQgcGVyY2VudF9kZWNvZGUoY2hhciAqLCBjaGFyICoqKTsKLSsKLSt2b2lkCi0rY29tcGFy ZV91cmkoc3RydWN0IHBrY3MxMV91cmkgKmEsIHN0cnVjdCBwa2NzMTFfdXJpICpiKQotK3sKLSsJ QVNTRVJUX1BUUl9ORShhLCBOVUxMKTsKLSsJQVNTRVJUX1BUUl9ORShiLCBOVUxMKTsKLSsJQVNT RVJUX1NJWkVfVF9FUShhLT5pZF9sZW4sIGItPmlkX2xlbik7Ci0rCUFTU0VSVF9NRU1fRVEoYS0+ aWQsIGItPmlkLCBhLT5pZF9sZW4pOwotKwlpZiAoYi0+b2JqZWN0ICE9IE5VTEwpCi0rCQlBU1NF UlRfU1RSSU5HX0VRKGEtPm9iamVjdCwgYi0+b2JqZWN0KTsKLSsJZWxzZSAvKiBib3RoIHNob3Vs ZCBiZSBudWxsICovCi0rCQlBU1NFUlRfUFRSX0VRKGEtPm9iamVjdCwgYi0+b2JqZWN0KTsKLSsJ aWYgKGItPm1vZHVsZV9wYXRoICE9IE5VTEwpCi0rCQlBU1NFUlRfU1RSSU5HX0VRKGEtPm1vZHVs ZV9wYXRoLCBiLT5tb2R1bGVfcGF0aCk7Ci0rCWVsc2UgLyogYm90aCBzaG91bGQgYmUgbnVsbCAq LwotKwkJQVNTRVJUX1BUUl9FUShhLT5tb2R1bGVfcGF0aCwgYi0+bW9kdWxlX3BhdGgpOwotKwlp ZiAoYi0+dG9rZW4gIT0gTlVMTCkKLSsJCUFTU0VSVF9TVFJJTkdfRVEoYS0+dG9rZW4sIGItPnRv a2VuKTsKLSsJZWxzZSAvKiBib3RoIHNob3VsZCBiZSBudWxsICovCi0rCQlBU1NFUlRfUFRSX0VR KGEtPnRva2VuLCBiLT50b2tlbik7Ci0rCWlmIChiLT5tYW51ZiAhPSBOVUxMKQotKwkJQVNTRVJU X1NUUklOR19FUShhLT5tYW51ZiwgYi0+bWFudWYpOwotKwllbHNlIC8qIGJvdGggc2hvdWxkIGJl IG51bGwgKi8KLSsJCUFTU0VSVF9QVFJfRVEoYS0+bWFudWYsIGItPm1hbnVmKTsKLSsJaWYgKGIt PmxpYl9tYW51ZiAhPSBOVUxMKQotKwkJQVNTRVJUX1NUUklOR19FUShhLT5saWJfbWFudWYsIGIt PmxpYl9tYW51Zik7Ci0rCWVsc2UgLyogYm90aCBzaG91bGQgYmUgbnVsbCAqLwotKwkJQVNTRVJU X1BUUl9FUShhLT5saWJfbWFudWYsIGItPmxpYl9tYW51Zik7Ci0rCWlmIChiLT5zZXJpYWwgIT0g TlVMTCkKLSsJCUFTU0VSVF9TVFJJTkdfRVEoYS0+c2VyaWFsLCBiLT5zZXJpYWwpOwotKwllbHNl IC8qIGJvdGggc2hvdWxkIGJlIG51bGwgKi8KLSsJCUFTU0VSVF9QVFJfRVEoYS0+c2VyaWFsLCBi LT5zZXJpYWwpOwotK30KLSsKLSt2b2lkCi0rY2hlY2tfcGFyc2VfcnYoY2hhciAqdXJpLCBzdHJ1 Y3QgcGtjczExX3VyaSAqZXhwZWN0LCBpbnQgZXhwZWN0X3J2KQotK3sKLSsJY2hhciAqYnVmID0g TlVMTCwgKnN0cjsKLSsJc3RydWN0IHBrY3MxMV91cmkgKnBrY3MxMXVyaSA9IE5VTEw7Ci0rCWlu dCBydjsKLSsKLSsJaWYgKGV4cGVjdF9ydiA9PSAwKQotKwkJc3RyID0gIlZhbGlkIjsKLSsJZWxz ZQotKwkJc3RyID0gIkludmFsaWQiOwotKwlhc3ByaW50ZigmYnVmLCAiJXMgUEtDUyMxMSBVUkkg cGFyc2luZzogJXMiLCBzdHIsIHVyaSk7Ci0rCVRFU1RfU1RBUlQoYnVmKTsKLSsJZnJlZShidWYp OwotKwlwa2NzMTF1cmkgPSBwa2NzMTFfdXJpX2luaXQoKTsKLSsJcnYgPSBwa2NzMTFfdXJpX3Bh cnNlKHVyaSwgcGtjczExdXJpKTsKLSsJQVNTRVJUX0lOVF9FUShydiwgZXhwZWN0X3J2KTsKLSsJ aWYgKHJ2ID09IDApIC8qIGluIGNhc2Ugb2YgZmFpbHVyZSByZXN1bHQgaXMgdW5kZWZpbmVkICov Ci0rCQljb21wYXJlX3VyaShwa2NzMTF1cmksIGV4cGVjdCk7Ci0rCXBrY3MxMV91cmlfY2xlYW51 cChwa2NzMTF1cmkpOwotKwlmcmVlKGV4cGVjdCk7Ci0rCVRFU1RfRE9ORSgpOwotK30KLSsKLSt2 b2lkCi0rY2hlY2tfcGFyc2UoY2hhciAqdXJpLCBzdHJ1Y3QgcGtjczExX3VyaSAqZXhwZWN0KQot K3sKLSsJY2hlY2tfcGFyc2VfcnYodXJpLCBleHBlY3QsIDApOwotK30KLSsKLStzdHJ1Y3QgcGtj czExX3VyaSAqCi0rY29tcG9zZV91cmkodW5zaWduZWQgY2hhciAqaWQsIHNpemVfdCBpZF9sZW4s IGNoYXIgKnRva2VuLCBjaGFyICpsaWJfbWFudWYsCi0rICAgIGNoYXIgKm1hbnVmLCBjaGFyICpz ZXJpYWwsIGNoYXIgKm1vZHVsZV9wYXRoLCBjaGFyICpvYmplY3QsIGNoYXIgKnBpbikKLSt7Ci0r CXN0cnVjdCBwa2NzMTFfdXJpICp1cmkgPSBwa2NzMTFfdXJpX2luaXQoKTsKLSsJaWYgKGlkX2xl biA+IDApIHsKLSsJCXVyaS0+aWRfbGVuID0gaWRfbGVuOwotKwkJdXJpLT5pZCA9IGlkOwotKwl9 Ci0rCXVyaS0+bW9kdWxlX3BhdGggPSBtb2R1bGVfcGF0aDsKLSsJdXJpLT50b2tlbiA9IHRva2Vu OwotKwl1cmktPmxpYl9tYW51ZiA9IGxpYl9tYW51ZjsKLSsJdXJpLT5tYW51ZiA9IG1hbnVmOwot Kwl1cmktPnNlcmlhbCA9IHNlcmlhbDsKLSsJdXJpLT5vYmplY3QgPSBvYmplY3Q7Ci0rCXVyaS0+ cGluID0gcGluOwotKwlyZXR1cm4gdXJpOwotK30KLSsKLStzdGF0aWMgdm9pZAotK3Rlc3RfcGFy c2VfdmFsaWQodm9pZCkKLSt7Ci0rCS8qIHBhdGggYXJndW1lbnRzICovCi0rCWNoZWNrX3BhcnNl KCJwa2NzMTE6aWQ9JTAxIiwKLSsJICAgIGNvbXBvc2VfdXJpKCJceDAxIiwgMSwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCkpOwotKwljaGVja19wYXJzZSgicGtjczEx OmlkPSUwMCUwMSIsCi0rCSAgICBjb21wb3NlX3VyaSgiXHgwMFx4MDEiLCAyLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKSk7Ci0rCWNoZWNrX3BhcnNlKCJwa2NzMTE6 dG9rZW49U1NIJTIwS2V5cyIsCi0rCSAgICBjb21wb3NlX3VyaShOVUxMLCAwLCAiU1NIIEtleXMi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKSk7Ci0rCWNoZWNrX3BhcnNlKCJw a2NzMTE6bGlicmFyeS1tYW51ZmFjdHVyZXI9T3BlblNDIiwKLSsJICAgIGNvbXBvc2VfdXJpKE5V TEwsIDAsIE5VTEwsICJPcGVuU0MiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKSk7Ci0r CWNoZWNrX3BhcnNlKCJwa2NzMTE6bWFudWZhY3R1cmVyPXBpdl9JSSIsCi0rCSAgICBjb21wb3Nl X3VyaShOVUxMLCAwLCBOVUxMLCBOVUxMLCAicGl2X0lJIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TCkpOwotKwljaGVja19wYXJzZSgicGtjczExOnNlcmlhbD1JYW1TZXJpYWwiLAotKwkgICAgY29t cG9zZV91cmkoTlVMTCwgMCwgTlVMTCwgTlVMTCwgTlVMTCwgIklhbVNlcmlhbCIsIE5VTEwsIE5V TEwsIE5VTEwpKTsKLSsJY2hlY2tfcGFyc2UoInBrY3MxMTpvYmplY3Q9U0lHTiUyMEtleSIsCi0r CSAgICBjb21wb3NlX3VyaShOVUxMLCAwLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCAi U0lHTiBLZXkiLCBOVUxMKSk7Ci0rCS8qIHF1ZXJ5IGFyZ3VtZW50cyAqLwotKwljaGVja19wYXJz ZSgicGtjczExOj9tb2R1bGUtcGF0aD0vdXNyL2xpYjY0L3AxMS1raXQtcHJveHkuc28iLAotKwkg ICAgY29tcG9zZV91cmkoTlVMTCwgMCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgIi91c3IvbGli NjQvcDExLWtpdC1wcm94eS5zbyIsIE5VTEwsIE5VTEwpKTsKLSsJY2hlY2tfcGFyc2UoInBrY3Mx MTo/cGluLXZhbHVlPTEyMzQ1NiIsCi0rCSAgICBjb21wb3NlX3VyaShOVUxMLCAwLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCAiMTIzNDU2IikpOwotKwotKwkvKiBjb21iaW5h dGlvbnMgKi8KLSsJLyogSUQgU0hPVUxEIGJlIHBlcmNlbnQgZW5jb2RlZCAqLwotKwljaGVja19w YXJzZSgicGtjczExOnRva2VuPVNTSCUyMEtleTtpZD0wIiwKLSsJICAgIGNvbXBvc2VfdXJpKCIw IiwgMSwgIlNTSCBLZXkiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKSk7Ci0r CWNoZWNrX3BhcnNlKAotKwkgICAgInBrY3MxMTptYW51ZmFjdHVyZXI9Q0FDP21vZHVsZS1wYXRo PS91c3IvbGliNjQvcDExLWtpdC1wcm94eS5zbyIsCi0rCSAgICBjb21wb3NlX3VyaShOVUxMLCAw LCBOVUxMLCBOVUxMLCAiQ0FDIiwgTlVMTCwKLSsJICAgICIvdXNyL2xpYjY0L3AxMS1raXQtcHJv eHkuc28iLCBOVUxMLCBOVUxMKSk7Ci0rCWNoZWNrX3BhcnNlKAotKwkgICAgInBrY3MxMTpvYmpl Y3Q9UlNBJTIwS2V5P21vZHVsZS1wYXRoPS91c3IvbGliNjQvcGtjczExL29wZW5jcnlwdG9raS5z byIsCi0rCSAgICBjb21wb3NlX3VyaShOVUxMLCAwLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLAot KwkgICAgIi91c3IvbGliNjQvcGtjczExL29wZW5jcnlwdG9raS5zbyIsICJSU0EgS2V5IiwgTlVM TCkpOwotKwljaGVja19wYXJzZSgicGtjczExOj9tb2R1bGUtcGF0aD0vdXNyL2xpYjY0L3AxMS1r aXQtcHJveHkuc28mcGluLXZhbHVlPTEyMzQ1NiIsCi0rCSAgICBjb21wb3NlX3VyaShOVUxMLCAw LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCAiL3Vzci9saWI2NC9wMTEta2l0LXByb3h5LnNvIiwg TlVMTCwgIjEyMzQ1NiIpKTsKLSsKLSsJLyogZW1wdHkgcGF0aCBjb21wb25lbnQgbWF0Y2hlcyBl dmVyeXRoaW5nICovCi0rCWNoZWNrX3BhcnNlKCJwa2NzMTE6IiwgRU1QVFlfVVJJKTsKLSsKLSsJ LyogZW1wdHkgc3RyaW5nIGlzIGEgdmFsaWQgdG8gbWF0Y2ggYWdhaW5zdCAoYW5kIGRpZmZlcmVu dCBmcm9tIE5VTEwpICovCi0rCWNoZWNrX3BhcnNlKCJwa2NzMTE6dG9rZW49IiwKLSsJICAgIGNv bXBvc2VfdXJpKE5VTEwsIDAsICIiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM KSk7Ci0rCS8qIFBlcmNlbnQgY2hhcmFjdGVyIG5lZWRzIHRvIGJlIHBlcmNlbnQtZW5jb2RlZCAq LwotKwljaGVja19wYXJzZSgicGtjczExOnRva2VuPSUyNSIsCi0rCSAgICAgY29tcG9zZV91cmko TlVMTCwgMCwgIiUiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKSk7Ci0rfQot KwotK3N0YXRpYyB2b2lkCi0rdGVzdF9wYXJzZV9pbnZhbGlkKHZvaWQpCi0rewotKwkvKiBJbnZh bGlkIHBlcmNlbnQgZW5jb2RpbmcgKi8KLSsJY2hlY2tfcGFyc2VfcnYoInBrY3MxMTppZD0lMCIs IEVNUFRZX1VSSSwgLTEpOwotKwkvKiBJbnZhbGlkIHBlcmNlbnQgZW5jb2RpbmcgKi8KLSsJY2hl Y2tfcGFyc2VfcnYoInBrY3MxMTppZD0lWloiLCBFTVBUWV9VUkksIC0xKTsKLSsJLyogU3BhY2Ug TVVTVCBiZSBwZXJjZW50IGVuY29kZWQgLS0gWFhYIG5vdCBlbmZvcmNlZCB5ZXQgKi8KLSsJY2hl Y2tfcGFyc2UoInBrY3MxMTp0b2tlbj1TU0ggS2V5cyIsCi0rCSAgICBjb21wb3NlX3VyaShOVUxM LCAwLCAiU1NIIEtleXMiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKSk7Ci0r CS8qIE1VU1QgTk9UIGNvbnRhaW4gZHVwbGljYXRlIGF0dHJpYnV0ZXMgb2YgdGhlIHNhbWUgbmFt ZSAqLwotKwljaGVja19wYXJzZV9ydigicGtjczExOmlkPSUwMTtpZD0lMDIiLCBFTVBUWV9VUkks IC0xKTsKLSsJLyogTVVTVCBOT1QgY29udGFpbiBkdXBsaWNhdGUgYXR0cmlidXRlcyBvZiB0aGUg c2FtZSBuYW1lICovCi0rCWNoZWNrX3BhcnNlX3J2KCJwa2NzMTE6P3Bpbi12YWx1ZT0xMTExMTEm cGluLXZhbHVlPTEyMzQ1NiIsIEVNUFRZX1VSSSwgLTEpOwotKwkvKiBVbnJlY29nbml6ZWQgYXR0 cmlidXRlIGluIHBhdGggYXJlIGlnbm9yZWQgd2l0aCBsb2cgbWVzc2FnZSAqLwotKwljaGVja19w YXJzZSgicGtjczExOmtleV9uYW1lPVNTSCIsIEVNUFRZX1VSSSk7Ci0rCS8qIFVucmVjb2duaXpl ZCBhdHRyaWJ1dGUgaW4gcXVlcnkgU0hPVUxEIGJlIGlnbm9yZWQgKi8KLSsJY2hlY2tfcGFyc2Uo InBrY3MxMTo/a2V5X25hbWU9U1NIIiwgRU1QVFlfVVJJKTsKLSt9Ci0rCi0rdm9pZAotK2NoZWNr X2dlbihjaGFyICpleHBlY3QsIHN0cnVjdCBwa2NzMTFfdXJpICp1cmkpCi0rewotKwljaGFyICpi dWYgPSBOVUxMLCAqdXJpX3N0cjsKLSsKLSsJYXNwcmludGYoJmJ1ZiwgIlZhbGlkIFBLQ1MjMTEg VVJJIGdlbmVyYXRpb246ICVzIiwgZXhwZWN0KTsKLSsJVEVTVF9TVEFSVChidWYpOwotKwlmcmVl KGJ1Zik7Ci0rCXVyaV9zdHIgPSBwa2NzMTFfdXJpX2dldCh1cmkpOwotKwlBU1NFUlRfUFRSX05F KHVyaV9zdHIsIE5VTEwpOwotKwlBU1NFUlRfU1RSSU5HX0VRKHVyaV9zdHIsIGV4cGVjdCk7Ci0r CWZyZWUodXJpX3N0cik7Ci0rCVRFU1RfRE9ORSgpOwotK30KLSsKLStzdGF0aWMgdm9pZAotK3Rl c3RfZ2VuZXJhdGVfdmFsaWQodm9pZCkKLSt7Ci0rCS8qIHBhdGggYXJndW1lbnRzICovCi0rCWNo ZWNrX2dlbigicGtjczExOmlkPSUwMSIsCi0rCSAgICBjb21wb3NlX3VyaSgiXHgwMSIsIDEsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpKTsKLSsJY2hlY2tfZ2VuKCJw a2NzMTE6aWQ9JTAwJTAxIiwKLSsJICAgIGNvbXBvc2VfdXJpKCJceDAwXHgwMSIsIDIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpKTsKLSsJY2hlY2tfZ2VuKCJwa2Nz MTE6dG9rZW49U1NIJTIwS2V5cyIsIC8qIHNwYWNlIG11c3QgYmUgcGVyY2VudCBlbmNvZGVkICov Ci0rCSAgICBjb21wb3NlX3VyaShOVUxMLCAwLCAiU1NIIEtleXMiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMKSk7Ci0rCS8qIGxpYnJhcnktbWFudWZhY3R1cmVyIGlzIG5vdCBp bXBsbWVudGVkIG5vdyAqLwotKwkvKmNoZWNrX2dlbigicGtjczExOmxpYnJhcnktbWFudWZhY3R1 cmVyPU9wZW5TQyIsCi0rCSAgICBjb21wb3NlX3VyaShOVUxMLCAwLCBOVUxMLCAiT3BlblNDIiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCkpOyovCi0rCWNoZWNrX2dlbigicGtjczExOm1h bnVmYWN0dXJlcj1waXZfSUkiLAotKwkgICAgY29tcG9zZV91cmkoTlVMTCwgMCwgTlVMTCwgTlVM TCwgInBpdl9JSSIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpKTsKLSsJY2hlY2tfZ2VuKCJwa2Nz MTE6c2VyaWFsPUlhbVNlcmlhbCIsCi0rCSAgICBjb21wb3NlX3VyaShOVUxMLCAwLCBOVUxMLCBO VUxMLCBOVUxMLCAiSWFtU2VyaWFsIiwgTlVMTCwgTlVMTCwgTlVMTCkpOwotKwljaGVja19nZW4o InBrY3MxMTpvYmplY3Q9UlNBJTIwS2V5IiwKLSsJICAgIGNvbXBvc2VfdXJpKE5VTEwsIDAsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsICJSU0EgS2V5IiwgTlVMTCkpOwotKwkvKiBxdWVy eSBhcmd1bWVudHMgKi8KLSsJY2hlY2tfZ2VuKCJwa2NzMTE6P21vZHVsZS1wYXRoPS91c3IvbGli NjQvcDExLWtpdC1wcm94eS5zbyIsCi0rCSAgICBjb21wb3NlX3VyaShOVUxMLCAwLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMLCAiL3Vzci9saWI2NC9wMTEta2l0LXByb3h5LnNvIiwgTlVMTCwgTlVM TCkpOwotKwotKwkvKiBjb21iaW5hdGlvbnMgKi8KLSsJY2hlY2tfZ2VuKCJwa2NzMTE6aWQ9JTAy O3Rva2VuPVNTSCUyMEtleXMiLAotKwkgICAgY29tcG9zZV91cmkoIlx4MDIiLCAxLCAiU1NIIEtl eXMiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKSk7Ci0rCWNoZWNrX2dlbigi cGtjczExOmlkPSVFRSUwMj9tb2R1bGUtcGF0aD0vdXNyL2xpYjY0L3AxMS1raXQtcHJveHkuc28i LAotKwkgICAgY29tcG9zZV91cmkoIlx4RUVceDAyIiwgMiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TCwgIi91c3IvbGliNjQvcDExLWtpdC1wcm94eS5zbyIsIE5VTEwsIE5VTEwpKTsKLSsJY2hlY2tf Z2VuKCJwa2NzMTE6b2JqZWN0PUVuY3J5cHRpb24lMjBLZXk7bWFudWZhY3R1cmVyPXBpdl9JSSIs Ci0rCSAgICBjb21wb3NlX3VyaShOVUxMLCAwLCBOVUxMLCBOVUxMLCAicGl2X0lJIiwgTlVMTCwg TlVMTCwgIkVuY3J5cHRpb24gS2V5IiwgTlVMTCkpOwotKwotKwkvKiBlbXB0eSBwYXRoIGNvbXBv bmVudCBtYXRjaGVzIGV2ZXJ5dGhpbmcgKi8KLSsJY2hlY2tfZ2VuKCJwa2NzMTE6IiwgRU1QVFlf VVJJKTsKLSsKLSt9Ci0rCi0rdm9pZAotK2NoZWNrX2VuY29kZShjaGFyICpzb3VyY2UsIHNpemVf dCBsZW4sIGNoYXIgKmFsbG93X2xpc3QsIGNoYXIgKmV4cGVjdCkKLSt7Ci0rCWNoYXIgKmJ1ZiA9 IE5VTEw7Ci0rCXN0cnVjdCBzc2hidWYgKmI7Ci0rCi0rCWFzcHJpbnRmKCZidWYsICJwZXJjZW50 X2VuY29kZTogZXhwZWN0ZWQgJXMiLCBleHBlY3QpOwotKwlURVNUX1NUQVJUKGJ1Zik7Ci0rCWZy ZWUoYnVmKTsKLSsKLSsJYiA9IHBlcmNlbnRfZW5jb2RlKHNvdXJjZSwgbGVuLCBhbGxvd19saXN0 KTsKLSsJQVNTRVJUX1NUUklOR19FUShzc2hidWZfcHRyKGIpLCBleHBlY3QpOwotKwlzc2hidWZf ZnJlZShiKTsKLSsJVEVTVF9ET05FKCk7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rdGVzdF9wZXJj ZW50X2VuY29kZV9tdWx0aWJ5dGUodm9pZCkKLSt7Ci0rCS8qIFNIT1VMRCBiZSBlbmNvZGVkIGFz IG9jdGV0cyBhY2NvcmRpbmcgdG8gdGhlIFVURi04IGNoYXJhY3RlciBlbmNvZGluZyAqLwotKwot KwkvKiBtdWx0aS1ieXRlIGNoYXJhY3RlcnMgYXJlICJmb3IgZnJlZSIgKi8KLSsJY2hlY2tfZW5j b2RlKCIkIiwgMSwgIiIsICIlMjQiKTsKLSsJY2hlY2tfZW5jb2RlKCLCoiIsIDIsICIiLCAiJUMy JUEyIik7Ci0rCWNoZWNrX2VuY29kZSgi4oKsIiwgMywgIiIsICIlRTIlODIlQUMiKTsKLSsJY2hl Y2tfZW5jb2RlKCLwkI2IIiwgNCwgIiIsICIlRjAlOTAlOEQlODgiKTsKLSsKLSsJLyogQ0tfVVRG OENIQVIgaXMgdW5zaWduZWQgY2hhciAoMSBieXRlKSAqLwotKwkvKiBsYWJlbHMgU0hPVUxEIGJl IG5vcm1hbGl6ZWQgdG8gTkZDIFtVQVgxNV0gKi8KLSsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLSt0 ZXN0X3BlcmNlbnRfZW5jb2RlKHZvaWQpCi0rewotKwkvKiBXaXRob3V0IGFsbG93IGxpc3QgZW5j b2RlcyBldmVyeXRoaW5nIChmb3IgQ0tBX0lEKSAqLwotKwljaGVja19lbmNvZGUoIkEqIiwgMiwg IiIsICIlNDElMkEiKTsKLSsJY2hlY2tfZW5jb2RlKCJceDAwIiwgMSwgIiIsICIlMDAiKTsKLSsJ Y2hlY2tfZW5jb2RlKCJceDdGIiwgMSwgIiIsICIlN0YiKTsKLSsJY2hlY2tfZW5jb2RlKCJceDgw IiwgMSwgIiIsICIlODAiKTsKLSsJY2hlY2tfZW5jb2RlKCJceGZmIiwgMSwgIiIsICIlRkYiKTsK LSsKLSsJLyogRGVmYXVsdCBhbGxvdyBsaXN0IGVuY29kZXMgYW55dGhpbmcgYnV0IHNhZmUgbGV0 dGVycyAqLwotKwljaGVja19lbmNvZGUoInRlc3QiICJceDAwIiAiMGFscGhhIiwgMTEsIFBLQ1Mx MV9VUklfV0hJVEVMSVNULAotKwkgICAgInRlc3QlMDAwYWxwaGEiKTsKLSsJY2hlY2tfZW5jb2Rl KCIgIiwgMSwgUEtDUzExX1VSSV9XSElURUxJU1QsCi0rCSAgICAiJTIwIik7IC8qIFNwYWNlIE1V U1QgYmUgcGVyY2VudCBlbmNvZGVkICovCi0rCWNoZWNrX2VuY29kZSgiLyIsIDEsIFBLQ1MxMV9V UklfV0hJVEVMSVNULAotKwkgICAgIiUyRiIpOyAvKiAnLycgZGVsaW1pdGVyIE1VU1QgYmUgcGVy Y2VudCBlbmNvZGVkIChpbiB0aGUgcGF0aCkgKi8KLSsJY2hlY2tfZW5jb2RlKCI/IiwgMSwgUEtD UzExX1VSSV9XSElURUxJU1QsCi0rCSAgICAiJTNGIik7IC8qIGRlbGltaXRlciAnPycgTVVTVCBi ZSBwZXJjZW50IGVuY29kZWQgKGluIHRoZSBwYXRoKSAqLwotKwljaGVja19lbmNvZGUoIiMiLCAx LCBQS0NTMTFfVVJJX1dISVRFTElTVCwKLSsJICAgICIlMjMiKTsgLyogJyMnIE1VU1QgYmUgYWx3 YXlzIHBlcmNlbnQgZW5jb2RlZCAqLwotKwljaGVja19lbmNvZGUoImtleT12YWx1ZTtzZXBhcmF0 b3I/cXVlcnkmYW1wOyNhbmNoIiwgMzUsIFBLQ1MxMV9VUklfV0hJVEVMSVNULAotKwkgICAgImtl eSUzRHZhbHVlJTNCc2VwYXJhdG9yJTNGcXVlcnklMjZhbXAlM0IlMjNhbmNoIik7Ci0rCi0rCS8q IENvbXBvbmVudHMgaW4gcXVlcnkgY2FuIGhhdmUgJy8nIHVuZW5jb2RlZCAodXNlZnVsIGZvciBw YXRocykgKi8KLSsJY2hlY2tfZW5jb2RlKCIvcGF0aC90by5maWxlIiwgMTMsIFBLQ1MxMV9VUklf V0hJVEVMSVNUICIvIiwKLSsJICAgICIvcGF0aC90by5maWxlIik7Ci0rfQotKwotK3ZvaWQKLStj aGVja19kZWNvZGUoY2hhciAqc291cmNlLCBjaGFyICpleHBlY3QsIGludCBleHBlY3RfbGVuKQot K3sKLSsJY2hhciAqYnVmID0gTlVMTCwgKm91dCA9IE5VTEw7Ci0rCWludCBydjsKLSsKLSsJYXNw cmludGYoJmJ1ZiwgInBlcmNlbnRfZGVjb2RlOiAlcyIsIHNvdXJjZSk7Ci0rCVRFU1RfU1RBUlQo YnVmKTsKLSsJZnJlZShidWYpOwotKwotKwlydiA9IHBlcmNlbnRfZGVjb2RlKHNvdXJjZSwgJm91 dCk7Ci0rCUFTU0VSVF9JTlRfRVEocnYsIGV4cGVjdF9sZW4pOwotKwlpZiAocnYgPj0gMCkKLSsJ CUFTU0VSVF9NRU1fRVEob3V0LCBleHBlY3QsIGV4cGVjdF9sZW4pOwotKwlmcmVlKG91dCk7Ci0r CVRFU1RfRE9ORSgpOwotK30KLSsKLStzdGF0aWMgdm9pZAotK3Rlc3RfcGVyY2VudF9kZWNvZGUo dm9pZCkKLSt7Ci0rCS8qIHNpbXBsZSB2YWxpZCBjYXNlcyAqLwotKwljaGVja19kZWNvZGUoIiUw MCIsICJceDAwIiwgMSk7Ci0rCWNoZWNrX2RlY29kZSgiJUZGIiwgIlx4RkYiLCAxKTsKLSsKLSsJ Lyogbm9ybWFsIHN0cmluZ3Mgc2hvbGQgYmUga2VwdCBpbnRhY3QgKi8KLSsJY2hlY2tfZGVjb2Rl KCJzdHJpbmdzIGFyZSBsZWZ0IiwgInN0cmluZ3MgYXJlIGxlZnQiLCAxNik7Ci0rCWNoZWNrX2Rl Y29kZSgiMTAlMjUgb2YgdHJlZXMiLCAiMTAlIG9mIHRyZWVzIiwgMTIpOwotKwotKwkvKiBtYWtl IHN1cmUgbm8gbW9yZSB0aGFuIDIgYnl0ZXMgYXJlIHBhcnNlZCAqLwotKwljaGVja19kZWNvZGUo IiUyMjIiLCAiXHgyMiIgIjIiLCAyKTsKLSsKLSsJLyogaW52YWxpZCBleHBlY3RzIGZhaWx1cmUg Ki8KLSsJY2hlY2tfZGVjb2RlKCIlMCIsICIiLCAtMSk7Ci0rCWNoZWNrX2RlY29kZSgiJVoiLCAi IiwgLTEpOwotKwljaGVja19kZWNvZGUoIiVGRyIsICIiLCAtMSk7Ci0rfQotKwotK3ZvaWQKLSt0 ZXN0cyh2b2lkKQotK3sKLSsJdGVzdF9wZXJjZW50X2VuY29kZSgpOwotKwl0ZXN0X3BlcmNlbnRf ZW5jb2RlX211bHRpYnl0ZSgpOwotKwl0ZXN0X3BlcmNlbnRfZGVjb2RlKCk7Ci0rCXRlc3RfcGFy c2VfdmFsaWQoKTsKLSsJdGVzdF9wYXJzZV9pbnZhbGlkKCk7Ci0rCXRlc3RfZ2VuZXJhdGVfdmFs aWQoKTsKLSt9Ci0rCi0rdm9pZAotK2JlbmNobWFya3Modm9pZCkKLSt7Ci0rCXByaW50Zigibm8g YmVuY2htYXJrc1xuIik7Ci0rfQotKwotZGlmZiAtLWdpdCBhL3NzaC1hZGQuYyBiL3NzaC1hZGQu YwotaW5kZXggMWU5ZWRkZjkwLi5lNDc2ZmE2NjIgMTAwNjQ0Ci0tLS0gYS9zc2gtYWRkLmMKLSsr KyBiL3NzaC1hZGQuYwotQEAgLTcwLDYgKzcwLDcgQEAKLSAjaW5jbHVkZSAic3NoLXNrLmgiCi0g I2luY2x1ZGUgInNrLWFwaS5oIgotICNpbmNsdWRlICJob3N0ZmlsZS5oIgotKyNpbmNsdWRlICJz c2gtcGtjczExLXVyaS5oIgotIAotICNkZWZpbmUgQ0VSVF9FWFBJUllfR1JBQ0UJKDUqNjApCi0g Ci1AQCAtMjcyLDYgKzI3MywzOCBAQCBjaGVja19jZXJ0X2xpZmV0aW1lKGNvbnN0IHN0cnVjdCBz c2hrZXkgKmNlcnQsIGludCBjZXJ0X2xpZmV0aW1lKQotIAlyZXR1cm4gTUlOSU1VTShjZXJ0X2xp ZmV0aW1lLCAoaW50KW4pOwotIH0KLSAKLSsjaWZkZWYgRU5BQkxFX1BLQ1MxMQotK3N0YXRpYyBp bnQKLSt1cGRhdGVfY2FyZChpbnQgYWdlbnRfZmQsIGludCBhZGQsIGNvbnN0IGNoYXIgKmlkLCBp bnQgcWZsYWcsCi0rICAgIGludCBrZXlfb25seSwgaW50IGNlcnRfb25seSwKLSsgICAgc3RydWN0 IGRlc3RfY29uc3RyYWludCAqKmRlc3RfY29uc3RyYWludHMsIHNpemVfdCBuZGVzdF9jb25zdHJh aW50cywKLSsgICAgc3RydWN0IHNzaGtleSAqKmNlcnRzLCBzaXplX3QgbmNlcnRzLCBjaGFyICpw aW4pOwotKwotK2ludAotK3VwZGF0ZV9wa2NzMTFfdXJpKGludCBhZ2VudF9mZCwgaW50IGFkZGlu ZywgY29uc3QgY2hhciAqcGtjczExX3VyaSwgaW50IHFmbGFnLAotKyAgICBzdHJ1Y3QgZGVzdF9j b25zdHJhaW50ICoqZGVzdF9jb25zdHJhaW50cywgc2l6ZV90IG5kZXN0X2NvbnN0cmFpbnRzKQot K3sKLSsJY2hhciAqcGluID0gTlVMTDsKLSsJc3RydWN0IHBrY3MxMV91cmkgKnVyaTsKLSsKLSsJ LyogZHJ5LXJ1biBwYXJzZSB0byBtYWtlIHN1cmUgdGhlIFVSSSBpcyB2YWxpZCBhbmQgdG8gcmVw b3J0IGVycm9ycyAqLwotKwl1cmkgPSBwa2NzMTFfdXJpX2luaXQoKTsKLSsJaWYgKHBrY3MxMV91 cmlfcGFyc2UoKGNoYXIgKikgcGtjczExX3VyaSwgdXJpKSAhPSAwKQotKwkJZmF0YWwoIkZhaWxl ZCB0byBwYXJzZSBQS0NTIzExIFVSSSIpOwotKwlpZiAodXJpLT5waW4gIT0gTlVMTCkgewotKwkJ cGluID0gc3RyZHVwKHVyaS0+cGluKTsKLSsJCWlmIChwaW4gPT0gTlVMTCkgewotKwkJCWZhdGFs KCJGYWlsZWQgdG8gZHVwcGxpY2F0ZSBzdHJpbmciKTsKLSsJCX0KLSsJCS8qIHBpbiBpcyBmcmVl ZCBpbiB0aGUgdXBkYXRlX2NhcmQoKSAqLwotKwl9Ci0rCXBrY3MxMV91cmlfY2xlYW51cCh1cmkp OwotKwotKwlyZXR1cm4gdXBkYXRlX2NhcmQoYWdlbnRfZmQsIGFkZGluZywgcGtjczExX3VyaSwg cWZsYWcsIDEsIDAsCi0rCSAgICAgICAgICAgZGVzdF9jb25zdHJhaW50cywgbmRlc3RfY29uc3Ry YWludHMsIE5VTEwsIDAsIHBpbik7Ci0rfQotKyNlbmRpZgotKwotIHN0YXRpYyBpbnQKLSBhZGRf ZmlsZShpbnQgYWdlbnRfZmQsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQga2V5X29ubHksIGlu dCBjZXJ0X29ubHksCi0gICAgIGludCBxZmxhZywgaW50IE5mbGFnLCBjb25zdCBjaGFyICpza3By b3ZpZGVyLAotQEAgLTQ2MiwxNSArNDk1LDE0IEBAIHN0YXRpYyBpbnQKLSB1cGRhdGVfY2FyZChp bnQgYWdlbnRfZmQsIGludCBhZGQsIGNvbnN0IGNoYXIgKmlkLCBpbnQgcWZsYWcsCi0gICAgIGlu dCBrZXlfb25seSwgaW50IGNlcnRfb25seSwKLSAgICAgc3RydWN0IGRlc3RfY29uc3RyYWludCAq KmRlc3RfY29uc3RyYWludHMsIHNpemVfdCBuZGVzdF9jb25zdHJhaW50cywKLS0gICAgc3RydWN0 IHNzaGtleSAqKmNlcnRzLCBzaXplX3QgbmNlcnRzKQotKyAgICBzdHJ1Y3Qgc3Noa2V5ICoqY2Vy dHMsIHNpemVfdCBuY2VydHMsIGNoYXIgKnBpbikKLSB7Ci0tCWNoYXIgKnBpbiA9IE5VTEw7Ci0g CWludCByLCByZXQgPSAtMTsKLSAKLSAJaWYgKGtleV9vbmx5KQotIAkJbmNlcnRzID0gMDsKLSAK LS0JaWYgKGFkZCkgewotKwlpZiAoYWRkICYmIHBpbiA9PSBOVUxMKSB7Ci0gCQlpZiAoKHBpbiA9 IHJlYWRfcGFzc3BocmFzZSgiRW50ZXIgcGFzc3BocmFzZSBmb3IgUEtDUyMxMTogIiwKLSAJCSAg ICBSUF9BTExPV19TVERJTikpID09IE5VTEwpCi0gCQkJcmV0dXJuIC0xOwotQEAgLTY1Miw2ICs2 ODQsMTQgQEAgZG9fZmlsZShpbnQgYWdlbnRfZmQsIGludCBkZWxldGluZywgaW50IGtleV9vbmx5 LCBpbnQgY2VydF9vbmx5LAotICAgICBjaGFyICpmaWxlLCBpbnQgcWZsYWcsIGludCBOZmxhZywg Y29uc3QgY2hhciAqc2twcm92aWRlciwKLSAgICAgc3RydWN0IGRlc3RfY29uc3RyYWludCAqKmRl c3RfY29uc3RyYWludHMsIHNpemVfdCBuZGVzdF9jb25zdHJhaW50cykKLSB7Ci0rI2lmZGVmIEVO QUJMRV9QS0NTMTEKLSsJaWYgKHN0cmxlbihmaWxlKSA+PSBzdHJsZW4oUEtDUzExX1VSSV9TQ0hF TUUpICYmCi0rCSAgICBzdHJuY21wKGZpbGUsIFBLQ1MxMV9VUklfU0NIRU1FLAotKwkgICAgc3Ry bGVuKFBLQ1MxMV9VUklfU0NIRU1FKSkgPT0gMCkgewotKwkJcmV0dXJuIHVwZGF0ZV9wa2NzMTFf dXJpKGFnZW50X2ZkLCAhZGVsZXRpbmcsIGZpbGUsIHFmbGFnLAotKyAgICAgICAgICAgICAgICAg ICBkZXN0X2NvbnN0cmFpbnRzLCBuZGVzdF9jb25zdHJhaW50cyk7Ci0rCX0KLSsjZW5kaWYKLSAJ aWYgKGRlbGV0aW5nKSB7Ci0gCQlpZiAoZGVsZXRlX2ZpbGUoYWdlbnRfZmQsIGZpbGUsIGtleV9v bmx5LAotIAkJICAgIGNlcnRfb25seSwgcWZsYWcpID09IC0xKQotQEAgLTEwMDMsNyArMTA0Myw3 IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJaWYgKHVwZGF0ZV9jYXJkKGFnZW50 X2ZkLCAhZGVsZXRpbmcsIHBrY3MxMXByb3ZpZGVyLAotIAkJICAgIHFmbGFnLCBrZXlfb25seSwg Y2VydF9vbmx5LAotIAkJICAgIGRlc3RfY29uc3RyYWludHMsIG5kZXN0X2NvbnN0cmFpbnRzLAot LQkJICAgIGNlcnRzLCBuY2VydHMpID09IC0xKQotKwkJICAgIGNlcnRzLCBuY2VydHMsIE5VTEwp ID09IC0xKQotIAkJCXJldCA9IDE7Ci0gCQlmb3IgKG4gPSAwOyBuIDwgbmNlcnRzOyBuKyspCi0g CQkJc3Noa2V5X2ZyZWUoY2VydHNbbl0pOwotZGlmZiAtLWdpdCBhL3NzaC1hZ2VudC5jIGIvc3No LWFnZW50LmMKLWluZGV4IDc3NzNhNGIwNy4uMzQ1MWQ3YTE0IDEwMDY0NAotLS0tIGEvc3NoLWFn ZW50LmMKLSsrKyBiL3NzaC1hZ2VudC5jCi1AQCAtMTU0NiwxMCArMTU0Niw3NSBAQCBhZGRfcDEx X2lkZW50aXR5KHN0cnVjdCBzc2hrZXkgKmtleSwgY2hhciAqY29tbWVudCwgY29uc3QgY2hhciAq cHJvdmlkZXIsCi0gCWlkdGFiLT5uZW50cmllcysrOwotIH0KLSAKLStzdGF0aWMgY2hhciAqCi0r c2FuaXRpemVfcGtjczExX3Byb3ZpZGVyKGNvbnN0IGNoYXIgKnByb3ZpZGVyKQotK3sKLSsJc3Ry dWN0IHBrY3MxMV91cmkgKnVyaSA9IE5VTEw7Ci0rCWNoYXIgKnNhbmVfdXJpLCAqbW9kdWxlX3Bh dGggPSBOVUxMOyAvKiBkZWZhdWx0IHBhdGggKi8KLSsJY2hhciBjYW5vbmljYWxfcHJvdmlkZXJb UEFUSF9NQVhdOwotKwotKwlpZiAocHJvdmlkZXIgPT0gTlVMTCkKLSsJCXJldHVybiBOVUxMOwot KwotKwltZW1zZXQoY2Fub25pY2FsX3Byb3ZpZGVyLCAwLCBzaXplb2YoY2Fub25pY2FsX3Byb3Zp ZGVyKSk7Ci0rCi0rCWlmIChzdHJsZW4ocHJvdmlkZXIpID49IHN0cmxlbihQS0NTMTFfVVJJX1ND SEVNRSkgJiYKLSsJICAgIHN0cm5jbXAocHJvdmlkZXIsIFBLQ1MxMV9VUklfU0NIRU1FLAotKwkg ICAgc3RybGVuKFBLQ1MxMV9VUklfU0NIRU1FKSkgPT0gMCkgewotKwkJLyogUEtDUyMxMSBVUkkg Ki8KLSsJCXVyaSA9IHBrY3MxMV91cmlfaW5pdCgpOwotKwkJaWYgKHVyaSA9PSBOVUxMKSB7Ci0r CQkJZXJyb3IoIkZhaWxlZCB0byBpbml0IFBLQ1MjMTEgVVJJIik7Ci0rCQkJcmV0dXJuIE5VTEw7 Ci0rCQl9Ci0rCi0rCQlpZiAocGtjczExX3VyaV9wYXJzZShwcm92aWRlciwgdXJpKSAhPSAwKSB7 Ci0rCQkJZXJyb3IoIkZhaWxlZCB0byBwYXJzZSBQS0NTIzExIFVSSSIpOwotKwkJCXBrY3MxMV91 cmlfY2xlYW51cCh1cmkpOwotKwkJCXJldHVybiBOVUxMOwotKwkJfQotKwkJLyogdmFsaWRhdGUg YWxzbyBwcm92aWRlciBmcm9tIFVSSSAqLwotKwkJaWYgKHVyaS0+bW9kdWxlX3BhdGgpCi0rCQkJ bW9kdWxlX3BhdGggPSBzdHJkdXAodXJpLT5tb2R1bGVfcGF0aCk7Ci0rCX0gZWxzZQotKwkJbW9k dWxlX3BhdGggPSBzdHJkdXAocHJvdmlkZXIpOyAvKiBzaW1wbGUgcGF0aCAqLwotKwotKwlpZiAo bW9kdWxlX3BhdGggIT0gTlVMTCkgeyAvKiBkbyBub3QgdmFsaWRhdGUgZGVmYXVsdCBOVUxMIHBh dGggaW4gVVJJICovCi0rCQlpZiAocmVhbHBhdGgobW9kdWxlX3BhdGgsIGNhbm9uaWNhbF9wcm92 aWRlcikgPT0gTlVMTCkgewotKwkJCXZlcmJvc2UoImZhaWxlZCBQS0NTIzExIHByb3ZpZGVyIFwi JS4xMDBzXCI6IHJlYWxwYXRoOiAlcyIsCi0rCQkJICAgIG1vZHVsZV9wYXRoLCBzdHJlcnJvcihl cnJubykpOwotKwkJCWZyZWUobW9kdWxlX3BhdGgpOwotKwkJCXBrY3MxMV91cmlfY2xlYW51cCh1 cmkpOwotKwkJCXJldHVybiBOVUxMOwotKwkJfQotKwkJZnJlZShtb2R1bGVfcGF0aCk7Ci0rCQlp ZiAobWF0Y2hfcGF0dGVybl9saXN0KGNhbm9uaWNhbF9wcm92aWRlciwgYWxsb3dlZF9wcm92aWRl cnMsIDApICE9IDEpIHsKLSsJCQl2ZXJib3NlKCJyZWZ1c2luZyBQS0NTIzExIHByb3ZpZGVyIFwi JS4xMDBzXCI6ICIKLSsJCQkgICAgIm5vdCBhbGxvd2VkIiwgY2Fub25pY2FsX3Byb3ZpZGVyKTsK LSsJCQlwa2NzMTFfdXJpX2NsZWFudXAodXJpKTsKLSsJCQlyZXR1cm4gTlVMTDsKLSsJCX0KLSsK LSsJCS8qIGNvcHkgdmVyaWZpZWQgYW5kIHNhbml0aXplZCBwcm92aWRlciBwYXRoIGJhY2sgdG8g dGhlIHVyaSAqLwotKwkJaWYgKHVyaSkgewotKwkJCWZyZWUodXJpLT5tb2R1bGVfcGF0aCk7Ci0r CQkJdXJpLT5tb2R1bGVfcGF0aCA9IHhzdHJkdXAoY2Fub25pY2FsX3Byb3ZpZGVyKTsKLSsJCX0K LSsJfQotKwotKwlpZiAodXJpKSB7Ci0rCQlzYW5lX3VyaSA9IHBrY3MxMV91cmlfZ2V0KHVyaSk7 Ci0rCQlwa2NzMTFfdXJpX2NsZWFudXAodXJpKTsKLSsJCXJldHVybiBzYW5lX3VyaTsKLSsJfSBl bHNlIHsKLSsJCXJldHVybiB4c3RyZHVwKGNhbm9uaWNhbF9wcm92aWRlcik7IC8qIHNpbXBsZSBw YXRoICovCi0rCX0KLSt9Ci0rCi0gc3RhdGljIHZvaWQKLSBwcm9jZXNzX2FkZF9zbWFydGNhcmRf a2V5KFNvY2tldEVudHJ5ICplKQotIHsKLS0JY2hhciAqcHJvdmlkZXIgPSBOVUxMLCAqcGluID0g TlVMTCwgY2Fub25pY2FsX3Byb3ZpZGVyW1BBVEhfTUFYXTsKLSsJY2hhciAqcHJvdmlkZXIgPSBO VUxMLCAqcGluID0gTlVMTCwgKnNhbmVfdXJpID0gTlVMTDsKLSAJY2hhciAqKmNvbW1lbnRzID0g TlVMTDsKLSAJaW50IHIsIGksIGNvdW50ID0gMCwgc3VjY2VzcyA9IDAsIGNvbmZpcm0gPSAwOwot IAl1X2ludCBzZWNvbmRzID0gMDsKLUBAIC0xNTc4LDI1ICsxNjQzLDE4IEBAIHByb2Nlc3NfYWRk X3NtYXJ0Y2FyZF9rZXkoU29ja2V0RW50cnkgKmUpCi0gCQkgICAgInByb3ZpZGVycyBpcyBkaXNh YmxlZCIsIHByb3ZpZGVyKTsKLSAJCWdvdG8gc2VuZDsKLSAJfQotLQlpZiAocmVhbHBhdGgocHJv dmlkZXIsIGNhbm9uaWNhbF9wcm92aWRlcikgPT0gTlVMTCkgewotLQkJdmVyYm9zZSgiZmFpbGVk IFBLQ1MjMTEgYWRkIG9mIFwiJS4xMDBzXCI6IHJlYWxwYXRoOiAlcyIsCi0tCQkgICAgcHJvdmlk ZXIsIHN0cmVycm9yKGVycm5vKSk7Ci0tCQlnb3RvIHNlbmQ7Ci0tCX0KLS0JaWYgKG1hdGNoX3Bh dHRlcm5fbGlzdChjYW5vbmljYWxfcHJvdmlkZXIsIGFsbG93ZWRfcHJvdmlkZXJzLCAwKSAhPSAx KSB7Ci0tCQl2ZXJib3NlKCJyZWZ1c2luZyBQS0NTIzExIGFkZCBvZiBcIiUuMTAwc1wiOiAiCi0t CQkgICAgInByb3ZpZGVyIG5vdCBhbGxvd2VkIiwgY2Fub25pY2FsX3Byb3ZpZGVyKTsKLSsJc2Fu ZV91cmkgPSBzYW5pdGl6ZV9wa2NzMTFfcHJvdmlkZXIocHJvdmlkZXIpOwotKwlpZiAoc2FuZV91 cmkgPT0gTlVMTCkKLSAJCWdvdG8gc2VuZDsKLS0JfQotLQlkZWJ1Z19mKCJhZGQgJS4xMDBzIiwg Y2Fub25pY2FsX3Byb3ZpZGVyKTsKLSAJaWYgKGxpZmV0aW1lICYmICFkZWF0aCkKLSAJCWRlYXRo ID0gbW9ub3RpbWUoKSArIGxpZmV0aW1lOwotIAotLQljb3VudCA9IHBrY3MxMV9hZGRfcHJvdmlk ZXIoY2Fub25pY2FsX3Byb3ZpZGVyLCBwaW4sICZrZXlzLCAmY29tbWVudHMpOwotKwlkZWJ1Z19m KCJhZGQgJS4xMDBzIiwgc2FuZV91cmkpOwotKwljb3VudCA9IHBrY3MxMV9hZGRfcHJvdmlkZXIo c2FuZV91cmksIHBpbiwgJmtleXMsICZjb21tZW50cyk7Ci0gCWZvciAoaSA9IDA7IGkgPCBjb3Vu dDsgaSsrKSB7Ci0gCQlpZiAoY29tbWVudHNbaV0gPT0gTlVMTCB8fCBjb21tZW50c1tpXVswXSA9 PSAnXDAnKSB7Ci0gCQkJZnJlZShjb21tZW50c1tpXSk7Ci0tCQkJY29tbWVudHNbaV0gPSB4c3Ry ZHVwKGNhbm9uaWNhbF9wcm92aWRlcik7Ci0rCQkJY29tbWVudHNbaV0gPSB4c3RyZHVwKHNhbmVf dXJpKTsKLSAJCX0KLSAJCWZvciAoaiA9IDA7IGogPCBuY2VydHM7IGorKykgewotIAkJCWlmICgh c3Noa2V5X2lzX2NlcnQoY2VydHNbal0pKQotQEAgLTE2MDYsMTMgKzE2NjQsMTMgQEAgcHJvY2Vz c19hZGRfc21hcnRjYXJkX2tleShTb2NrZXRFbnRyeSAqZSkKLSAJCQlpZiAocGtjczExX21ha2Vf Y2VydChrZXlzW2ldLCBjZXJ0c1tqXSwgJmspICE9IDApCi0gCQkJCWNvbnRpbnVlOwotIAkJCWFk ZF9wMTFfaWRlbnRpdHkoaywgeHN0cmR1cChjb21tZW50c1tpXSksCi0tCQkJICAgIGNhbm9uaWNh bF9wcm92aWRlciwgZGVhdGgsIGNvbmZpcm0sCi0rCQkJICAgIHNhbmVfdXJpLCBkZWF0aCwgY29u ZmlybSwKLSAJCQkgICAgZGVzdF9jb25zdHJhaW50cywgbmRlc3RfY29uc3RyYWludHMpOwotIAkJ CXN1Y2Nlc3MgPSAxOwotIAkJfQotIAkJaWYgKCFjZXJ0X29ubHkgJiYgbG9va3VwX2lkZW50aXR5 KGtleXNbaV0pID09IE5VTEwpIHsKLSAJCQlhZGRfcDExX2lkZW50aXR5KGtleXNbaV0sIGNvbW1l bnRzW2ldLAotLQkJCSAgICBjYW5vbmljYWxfcHJvdmlkZXIsIGRlYXRoLCBjb25maXJtLAotKwkJ CSAgICBzYW5lX3VyaSwgZGVhdGgsIGNvbmZpcm0sCi0gCQkJICAgIGRlc3RfY29uc3RyYWludHMs IG5kZXN0X2NvbnN0cmFpbnRzKTsKLSAJCQlrZXlzW2ldID0gTlVMTDsJCS8qIHRyYW5zZmVycmVk ICovCi0gCQkJY29tbWVudHNbaV0gPSBOVUxMOwkvKiB0cmFuc2ZlcnJlZCAqLwotQEAgLTE2MjUs NiArMTY4Myw3IEBAIHByb2Nlc3NfYWRkX3NtYXJ0Y2FyZF9rZXkoU29ja2V0RW50cnkgKmUpCi0g c2VuZDoKLSAJZnJlZShwaW4pOwotIAlmcmVlKHByb3ZpZGVyKTsKLSsJZnJlZShzYW5lX3VyaSk7 Ci0gCWZyZWUoa2V5cyk7Ci0gCWZyZWUoY29tbWVudHMpOwotIAlmcmVlX2Rlc3RfY29uc3RyYWlu dHMoZGVzdF9jb25zdHJhaW50cywgbmRlc3RfY29uc3RyYWludHMpOwotQEAgLTE2MzcsOCArMTY5 Niw4IEBAIHNlbmQ6Ci0gc3RhdGljIHZvaWQKLSBwcm9jZXNzX3JlbW92ZV9zbWFydGNhcmRfa2V5 KFNvY2tldEVudHJ5ICplKQotIHsKLS0JY2hhciAqcHJvdmlkZXIgPSBOVUxMLCAqcGluID0gTlVM TCwgY2Fub25pY2FsX3Byb3ZpZGVyW1BBVEhfTUFYXTsKLS0JaW50IHIsIHN1Y2Nlc3MgPSAwOwot KwljaGFyICpwcm92aWRlciA9IE5VTEwsICpwaW4gPSBOVUxMLCAqc2FuZV91cmkgPSBOVUxMOwot KwlpbnQgciwgc3VjY2VzcyA9IDAsIHJlbW92ZWRfY291bnQgPSAwOwotIAlJZGVudGl0eSAqaWQs ICpueHQ7Ci0gCi0gCWRlYnVnMl9mKCJlbnRlcmluZyIpOwotQEAgLTE2NDksMzAgKzE3MDgsMzgg QEAgcHJvY2Vzc19yZW1vdmVfc21hcnRjYXJkX2tleShTb2NrZXRFbnRyeSAqZSkKLSAJfQotIAlm cmVlKHBpbik7Ci0gCi0tCWlmIChyZWFscGF0aChwcm92aWRlciwgY2Fub25pY2FsX3Byb3ZpZGVy KSA9PSBOVUxMKSB7Ci0tCQl2ZXJib3NlKCJmYWlsZWQgUEtDUyMxMSBhZGQgb2YgXCIlLjEwMHNc IjogcmVhbHBhdGg6ICVzIiwKLS0JCSAgICBwcm92aWRlciwgc3RyZXJyb3IoZXJybm8pKTsKLSsJ c2FuZV91cmkgPSBzYW5pdGl6ZV9wa2NzMTFfcHJvdmlkZXIocHJvdmlkZXIpOwotKwlpZiAoc2Fu ZV91cmkgPT0gTlVMTCkKLSAJCWdvdG8gc2VuZDsKLS0JfQotIAotLQlkZWJ1Z19mKCJyZW1vdmUg JS4xMDBzIiwgY2Fub25pY2FsX3Byb3ZpZGVyKTsKLSsJZGVidWdfZigicmVtb3ZlICUuMTAwcyIs IHNhbmVfdXJpKTsKLSAJZm9yIChpZCA9IFRBSUxRX0ZJUlNUKCZpZHRhYi0+aWRsaXN0KTsgaWQ7 IGlkID0gbnh0KSB7Ci0gCQlueHQgPSBUQUlMUV9ORVhUKGlkLCBuZXh0KTsKLSAJCS8qIFNraXAg ZmlsZS0tYmFzZWQga2V5cyAqLwotIAkJaWYgKGlkLT5wcm92aWRlciA9PSBOVUxMKQotIAkJCWNv bnRpbnVlOwotLQkJaWYgKCFzdHJjbXAoY2Fub25pY2FsX3Byb3ZpZGVyLCBpZC0+cHJvdmlkZXIp KSB7Ci0rCQlpZiAoIXN0cmNtcChzYW5lX3VyaSwgaWQtPnByb3ZpZGVyKSkgewotIAkJCVRBSUxR X1JFTU9WRSgmaWR0YWItPmlkbGlzdCwgaWQsIG5leHQpOwotIAkJCWZyZWVfaWRlbnRpdHkoaWQp OwotIAkJCWlkdGFiLT5uZW50cmllcy0tOwotKwkJCXJlbW92ZWRfY291bnQrKzsKLSAJCX0KLSAJ fQotLQlpZiAocGtjczExX2RlbF9wcm92aWRlcihjYW5vbmljYWxfcHJvdmlkZXIpID09IDApCi0r CS8qIE9ubHkgc3VjY2VlZCBpZiB3ZSBhY3R1YWxseSByZW1vdmVkIGtleXMgYW5kIHVubG9hZGVk IHByb3ZpZGVyICovCi0rCWlmIChyZW1vdmVkX2NvdW50ID4gMCAmJiBwa2NzMTFfZGVsX3Byb3Zp ZGVyKHNhbmVfdXJpKSA9PSAwKSB7Ci0gCQlzdWNjZXNzID0gMTsKLS0JZWxzZQotKwkJZGVidWdf ZigicmVtb3ZlZCAlZCBrZXkocykgZnJvbSBwcm92aWRlciAlcyIsCi0rCQkgICAgcmVtb3ZlZF9j b3VudCwgc2FuZV91cmkpOwotKwl9IGVsc2UgaWYgKHJlbW92ZWRfY291bnQgPT0gMCkgewotKwkJ ZXJyb3JfZigibm8gbWF0Y2hpbmcga2V5cyBmb3VuZCBmb3IgcHJvdmlkZXIgJXMiLCBzYW5lX3Vy aSk7Ci0rCQkvKiBTdGlsbCB0cnkgdG8gY2xlYW4gdXAgcHJvdmlkZXIgaWYgaXQgZXhpc3RzICov Ci0rCQlwa2NzMTFfZGVsX3Byb3ZpZGVyKHNhbmVfdXJpKTsKLSsJfSBlbHNlIHsKLSAJCWVycm9y X2YoInBrY3MxMV9kZWxfcHJvdmlkZXIgZmFpbGVkIik7Ci0rCX0KLSBzZW5kOgotIAlmcmVlKHBy b3ZpZGVyKTsKLSsJZnJlZShzYW5lX3VyaSk7Ci0gCXNlbmRfc3RhdHVzKGUsIHN1Y2Nlc3MpOwot IH0KLSAjZW5kaWYgLyogRU5BQkxFX1BLQ1MxMSAqLwotZGlmZiAtLWdpdCBhL3NzaC1rZXlnZW4u YyBiL3NzaC1rZXlnZW4uYwotaW5kZXggMTI0MzBlNmE0Li4yNjY0NjJmMDcgMTAwNjQ0Ci0tLS0g YS9zc2gta2V5Z2VuLmMKLSsrKyBiL3NzaC1rZXlnZW4uYwotQEAgLTgzMSw4ICs4MzEsMTEgQEAg ZG9fZG93bmxvYWQoc3RydWN0IHBhc3N3ZCAqcHcpCi0gCQkJZnJlZShmcCk7Ci0gCQl9IGVsc2Ug ewotIAkJCSh2b2lkKSBzc2hrZXlfd3JpdGUoa2V5c1tpXSwgc3Rkb3V0KTsgLyogWFhYIGNoZWNr ICovCi0tCQkJZnByaW50ZihzdGRvdXQsICIlcyVzXG4iLAotLQkJCSAgICAqKGNvbW1lbnRzW2ld KSA9PSAnXDAnID8gIiIgOiAiICIsIGNvbW1lbnRzW2ldKTsKLSsJCQlpZiAoKihjb21tZW50c1tp XSkgIT0gJ1wwJykgewotKwkJCQlmcHJpbnRmKHN0ZG91dCwgIiAlcyIsIGNvbW1lbnRzW2ldKTsK LSsJCQl9Ci0rCQkJKHZvaWQpIHBrY3MxMV91cmlfd3JpdGUoa2V5c1tpXSwgc3Rkb3V0KTsKLSsJ CQlmcHJpbnRmKHN0ZG91dCwgIlxuIik7Ci0gCQl9Ci0gCQlmcmVlKGNvbW1lbnRzW2ldKTsKLSAJ CXNzaGtleV9mcmVlKGtleXNbaV0pOwotZGlmZiAtLWdpdCBhL3NzaC1wa2NzMTEtY2xpZW50LmMg Yi9zc2gtcGtjczExLWNsaWVudC5jCi1pbmRleCAzMGE0Y2Y1ZGMuLjNmZDA1OGEwYyAxMDA2NDQK LS0tLSBhL3NzaC1wa2NzMTEtY2xpZW50LmMKLSsrKyBiL3NzaC1wa2NzMTEtY2xpZW50LmMKLUBA IC0xOCw2ICsxOCw3IEBACi0gCi0gI2luY2x1ZGUgImluY2x1ZGVzLmgiCi0gCi0rI2lmZGVmIEVO QUJMRV9QS0NTMTEKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy90aW1l Lmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLUBAIC0zOCw2ICszOSw3IEBACi0gI2luY2x1 ZGUgImF1dGhmZC5oIgotICNpbmNsdWRlICJhdG9taWNpby5oIgotICNpbmNsdWRlICJzc2gtcGtj czExLmgiCi0rI2luY2x1ZGUgInNzaC1wa2NzMTEtdXJpLmgiCi0gI2luY2x1ZGUgInNzaGVyci5o IgotIAotIC8qIGJvcnJvd3MgY29kZSBmcm9tIHNmdHAtc2VydmVyIGFuZCBzc2gtYWdlbnQgKi8K LUBAIC0zNzksNiArMzgxLDE5IEBAIHBrY3MxMV9zdGFydF9oZWxwZXIoY29uc3QgY2hhciAqcGF0 aCkKLSAJcmV0dXJuIGhlbHBlcjsKLSB9Ci0gCi0raW50Ci0rcGtjczExX2FkZF9wcm92aWRlcl9i eV91cmkoc3RydWN0IHBrY3MxMV91cmkgKnVyaSwgY2hhciAqcGluLCBzdHJ1Y3Qgc3Noa2V5ICoq KmtleXAsIGNoYXIgKioqbGFiZWxzcCkKLSt7Ci0rCWludCBua2V5cyA9IDA7Ci0rCWNoYXIgKnBy b3ZpZGVyX3VyaSA9IHBrY3MxMV91cmlfZ2V0KHVyaSk7Ci0rCi0rCWRlYnVnX2YoImNhbGxlZCwg cHJvdmlkZXJfdXJpID0gJXMiLCBwcm92aWRlcl91cmkpOwotKwotKwlua2V5cyA9IHBrY3MxMV9h ZGRfcHJvdmlkZXIocHJvdmlkZXJfdXJpLCBwaW4sIGtleXAsIGxhYmVsc3ApOwotKwotKwlyZXR1 cm4gbmtleXM7Ci0rfQotKwotIGludAotIHBrY3MxMV9hZGRfcHJvdmlkZXIoY2hhciAqbmFtZSwg Y2hhciAqcGluLCBzdHJ1Y3Qgc3Noa2V5ICoqKmtleXNwLAotICAgICBjaGFyICoqKmxhYmVsc3Ap Ci1AQCAtMzkwLDYgKzQwNSw4IEBAIHBrY3MxMV9hZGRfcHJvdmlkZXIoY2hhciAqbmFtZSwgY2hh ciAqcGluLCBzdHJ1Y3Qgc3Noa2V5ICoqKmtleXNwLAotIAlzdHJ1Y3Qgc3NoYnVmICptc2c7Ci0g CXN0cnVjdCBoZWxwZXIgKmhlbHBlcjsKLSAKLSsJZGVidWdfZigiY2FsbGVkLCBuYW1lID0gJXMi LCBuYW1lKTsKLSsKLSAJaWYgKChoZWxwZXIgPSBoZWxwZXJfYnlfcHJvdmlkZXIobmFtZSkpID09 IE5VTEwgJiYKLSAJICAgIChoZWxwZXIgPSBwa2NzMTFfc3RhcnRfaGVscGVyKG5hbWUpKSA9PSBO VUxMKQotIAkJcmV0dXJuIC0xOwotQEAgLTQxNCw2ICs0MzEsNyBAQCBwa2NzMTFfYWRkX3Byb3Zp ZGVyKGNoYXIgKm5hbWUsIGNoYXIgKnBpbiwgc3RydWN0IHNzaGtleSAqKiprZXlzcCwKLSAJCSpr ZXlzcCA9IHhjYWxsb2MobmtleXMsIHNpemVvZihzdHJ1Y3Qgc3Noa2V5ICopKTsKLSAJCWlmIChs YWJlbHNwKQotIAkJCSpsYWJlbHNwID0geGNhbGxvYyhua2V5cywgc2l6ZW9mKGNoYXIgKikpOwot KwkJZGVidWdfZigibmtleXMgPSAldSIsIG5rZXlzKTsKLSAJCWZvciAoaSA9IDA7IGkgPCBua2V5 czsgaSsrKSB7Ci0gCQkJLyogWFhYIGNsZWFuIHVwIHByb3Blcmx5IGluc3RlYWQgb2YgZmF0YWwo KSAqLwotIAkJCWlmICgociA9IHNzaGtleV9mcm9tcyhtc2csICZrKSkgIT0gMCB8fAotQEAgLTQ5 NywzICs1MTUsNCBAQCBwa2NzMTFfa2V5X2ZyZWUoc3RydWN0IHNzaGtleSAqa2V5KQotIAlpZiAo aGVscGVyLT5ua2V5YmxvYnMgPT0gMCkKLSAJCWhlbHBlcl90ZXJtaW5hdGUoaGVscGVyKTsKLSB9 Ci0rI2VuZGlmCi1kaWZmIC0tZ2l0IGEvc3NoLXBrY3MxMS11cmkuYyBiL3NzaC1wa2NzMTEtdXJp LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAuLmQ1YjA3NDU5MgotLS0t IC9kZXYvbnVsbAotKysrIGIvc3NoLXBrY3MxMS11cmkuYwotQEAgLTAsMCArMSw0MzggQEAKLSsv KgotKyAqIENvcHlyaWdodCAoYykgMjAxNyBSZWQgSGF0Ci0rICoKLSsgKiBBdXRob3JzOiBKYWt1 YiBKZWxlbiA8amplbGVuQHJlZGhhdC5jb20+Ci0rICoKLSsgKiBQZXJtaXNzaW9uIHRvIHVzZSwg Y29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKLSsgKiBw dXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRo YXQgdGhlIGFib3ZlCi0rICogY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5v dGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcy4KLSsgKgotKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W SURFRCAiQVMgSVMiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUwotKyAq IFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJB TlRJRVMgT0YKLSsgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNI QUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUgotKyAqIEFOWSBTUEVDSUFMLCBESVJFQ1QsIElO RElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMKLSsgKiBXSEFU U09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRI RVIgSU4gQU4KLSsgKiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9S VElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRgotKyAqIE9SIElOIENPTk5FQ1RJT04gV0lUSCBU SEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCi0rICovCi0rCi0rI2luY2x1 ZGUgImluY2x1ZGVzLmgiCi0rCi0rI2lmZGVmIEVOQUJMRV9QS0NTMTEKLSsKLSsjaW5jbHVkZSA8 c3RkaW8uaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKwot KyNpbmNsdWRlICJzc2hrZXkuaCIKLSsjaW5jbHVkZSAic3NoYnVmLmgiCi0rI2luY2x1ZGUgImxv Zy5oIgotKwotKyNkZWZpbmUgQ1JZUFRPS0lfQ09NUEFUCi0rI2luY2x1ZGUgInBrY3MxMS5oIgot KwotKyNpbmNsdWRlICJzc2gtcGtjczExLXVyaS5oIgotKwotKyNkZWZpbmUgUEtDUzExX1VSSV9Q QVRIX1NFUEFSQVRPUiAiOyIKLSsjZGVmaW5lIFBLQ1MxMV9VUklfUVVFUllfU0VQQVJBVE9SICIm IgotKyNkZWZpbmUgUEtDUzExX1VSSV9WQUxVRV9TRVBBUkFUT1IgIj0iCi0rI2RlZmluZSBQS0NT MTFfVVJJX0lEICJpZCIKLSsjZGVmaW5lIFBLQ1MxMV9VUklfVE9LRU4gInRva2VuIgotKyNkZWZp bmUgUEtDUzExX1VSSV9PQkpFQ1QgIm9iamVjdCIKLSsjZGVmaW5lIFBLQ1MxMV9VUklfTElCX01B TlVGICJsaWJyYXJ5LW1hbnVmYWN0dXJlciIKLSsjZGVmaW5lIFBLQ1MxMV9VUklfTUFOVUYgIm1h bnVmYWN0dXJlciIKLSsjZGVmaW5lIFBLQ1MxMV9VUklfU0VSSUFMICJzZXJpYWwiCi0rI2RlZmlu ZSBQS0NTMTFfVVJJX01PRFVMRV9QQVRIICJtb2R1bGUtcGF0aCIKLSsjZGVmaW5lIFBLQ1MxMV9V UklfUElOX1ZBTFVFICJwaW4tdmFsdWUiCi0rCi0rLyogS2V5d29yZCB0b2tlbnMuICovCi0rdHlw ZWRlZiBlbnVtIHsKLSsJcElkLCBwVG9rZW4sIHBPYmplY3QsIHBMaWJyYXJ5TWFudWZhY3R1cmVy LCBwTWFudWZhY3R1cmVyLCBwU2VyaWFsLAotKwlwTW9kdWxlUGF0aCwgcFBpblZhbHVlLCBwQmFk T3B0aW9uCi0rfSBwa2NzMTF1cmlPcENvZGVzOwotKwotKy8qIFRleHR1YWwgcmVwcmVzZW50YXRp b24gb2YgdGhlIHRva2Vucy4gKi8KLStzdGF0aWMgc3RydWN0IHsKLSsJY29uc3QgY2hhciAqbmFt ZTsKLSsJcGtjczExdXJpT3BDb2RlcyBvcGNvZGU7Ci0rfSBrZXl3b3Jkc1tdID0gewotKwl7IFBL Q1MxMV9VUklfSUQsIHBJZCB9LAotKwl7IFBLQ1MxMV9VUklfVE9LRU4sIHBUb2tlbiB9LAotKwl7 IFBLQ1MxMV9VUklfT0JKRUNULCBwT2JqZWN0IH0sCi0rCXsgUEtDUzExX1VSSV9MSUJfTUFOVUYs IHBMaWJyYXJ5TWFudWZhY3R1cmVyIH0sCi0rCXsgUEtDUzExX1VSSV9NQU5VRiwgcE1hbnVmYWN0 dXJlciB9LAotKwl7IFBLQ1MxMV9VUklfU0VSSUFMLCBwU2VyaWFsIH0sCi0rCXsgUEtDUzExX1VS SV9NT0RVTEVfUEFUSCwgcE1vZHVsZVBhdGggfSwKLSsJeyBQS0NTMTFfVVJJX1BJTl9WQUxVRSwg cFBpblZhbHVlIH0sCi0rCXsgTlVMTCwgcEJhZE9wdGlvbiB9Ci0rfTsKLSsKLStzdGF0aWMgcGtj czExdXJpT3BDb2RlcwotK3BhcnNlX3Rva2VuKGNvbnN0IGNoYXIgKmNwKQotK3sKLSsJdV9pbnQg aTsKLSsKLSsJZm9yIChpID0gMDsga2V5d29yZHNbaV0ubmFtZTsgaSsrKQotKwkJaWYgKHN0cm5j YXNlY21wKGNwLCBrZXl3b3Jkc1tpXS5uYW1lLAotKwkJICAgIHN0cmxlbihrZXl3b3Jkc1tpXS5u YW1lKSkgPT0gMCkKLSsJCQlyZXR1cm4ga2V5d29yZHNbaV0ub3Bjb2RlOwotKwotKwlyZXR1cm4g cEJhZE9wdGlvbjsKLSt9Ci0rCi0raW50Ci0rcGVyY2VudF9kZWNvZGUoY2hhciAqZGF0YSwgY2hh ciAqKm91dHApCi0rewotKwljaGFyIHRtcFszXTsKLSsJY2hhciAqb3V0LCAqdG1wX2VuZDsKLSsJ Y2hhciAqcCA9IGRhdGE7Ci0rCWxvbmcgdmFsdWU7Ci0rCXNpemVfdCBvdXRsZW4gPSAwOwotKwot KwlvdXQgPSBtYWxsb2Moc3RybGVuKGRhdGEpKzEpOyAvKiB1cHBlciBib3VuZCAqLwotKwlpZiAo b3V0ID09IE5VTEwpCi0rCQlyZXR1cm4gLTE7Ci0rCXdoaWxlICgqcCAhPSAnXDAnKSB7Ci0rCQlz d2l0Y2ggKCpwKSB7Ci0rCQljYXNlICclJzoKLSsJCQlwKys7Ci0rCQkJaWYgKCpwID09ICdcMCcp Ci0rCQkJCWdvdG8gZmFpbDsKLSsJCQl0bXBbMF0gPSAqcCsrOwotKwkJCWlmICgqcCA9PSAnXDAn KQotKwkJCQlnb3RvIGZhaWw7Ci0rCQkJdG1wWzFdID0gKnArKzsKLSsJCQl0bXBbMl0gPSAnXDAn OwotKwkJCXRtcF9lbmQgPSBOVUxMOwotKwkJCXZhbHVlID0gc3RydG9sKHRtcCwgJnRtcF9lbmQs IDE2KTsKLSsJCQlpZiAodG1wX2VuZCAhPSB0bXArMikKLSsJCQkJZ290byBmYWlsOwotKwkJCWVs c2UKLSsJCQkJb3V0W291dGxlbisrXSA9IChjaGFyKSB2YWx1ZTsKLSsJCQlicmVhazsKLSsJCWRl ZmF1bHQ6Ci0rCQkJb3V0W291dGxlbisrXSA9ICpwKys7Ci0rCQkJYnJlYWs7Ci0rCQl9Ci0rCX0K LSsKLSsJLyogemVybyB0ZXJtaW5hdGUgKi8KLSsJb3V0W291dGxlbl0gPSAnXDAnOwotKwkqb3V0 cCA9IG91dDsKLSsJcmV0dXJuIG91dGxlbjsKLStmYWlsOgotKwlmcmVlKG91dCk7Ci0rCXJldHVy biAtMTsKLSt9Ci0rCi0rc3RydWN0IHNzaGJ1ZiAqCi0rcGVyY2VudF9lbmNvZGUoY29uc3QgY2hh ciAqZGF0YSwgc2l6ZV90IGxlbmd0aCwgY29uc3QgY2hhciAqYWxsb3dfbGlzdCkKLSt7Ci0rCXN0 cnVjdCBzc2hidWYgKmIgPSBOVUxMOwotKwljaGFyIHRtcFs0XSwgKmNwOwotKwlzaXplX3QgaTsK LSsKLSsJaWYgKChiID0gc3NoYnVmX25ldygpKSA9PSBOVUxMKQotKwkJcmV0dXJuIE5VTEw7Ci0r CWZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotKwkJY3AgPSBzdHJjaHIoYWxsb3dfbGlz dCwgZGF0YVtpXSk7Ci0rCQkvKiBpZiBjIGlzIHNwZWNpZmllZCBhcyAnXDAnIHBvaW50ZXIgdG8g dGVybWluYXRvciBpcyByZXR1cm5lZCAhISAqLwotKwkJaWYgKGNwICE9IE5VTEwgJiYgKmNwICE9 ICdcMCcpIHsKLSsJCQlpZiAoc3NoYnVmX3B1dChiLCAmZGF0YVtpXSwgMSkgIT0gMCkKLSsJCQkJ Z290byBlcnI7Ci0rCQl9IGVsc2UKLSsJCQlpZiAoc25wcmludGYodG1wLCA0LCAiJSUlMDJYIiwg KHVuc2lnbmVkIGNoYXIpIGRhdGFbaV0pIDwgMwotKwkJCSAgICB8fCBzc2hidWZfcHV0KGIsIHRt cCwgMykgIT0gMCkKLSsJCQkJZ290byBlcnI7Ci0rCX0KLSsJaWYgKHNzaGJ1Zl9wdXQoYiwgIlww IiwgMSkgPT0gMCkKLSsJCXJldHVybiBiOwotK2VycjoKLSsJc3NoYnVmX2ZyZWUoYik7Ci0rCXJl dHVybiBOVUxMOwotK30KLSsKLStjaGFyICoKLStwa2NzMTFfdXJpX2FwcGVuZChjaGFyICpwYXJ0 LCBjb25zdCBjaGFyICpzZXBhcmF0b3IsIGNvbnN0IGNoYXIgKmtleSwKLSsgICAgc3RydWN0IHNz aGJ1ZiAqdmFsdWUpCi0rewotKwljaGFyICpuZXdfcGFydDsKLSsJc2l6ZV90IHNpemUgPSAwOwot KwotKwlpZiAodmFsdWUgPT0gTlVMTCkKLSsJCXJldHVybiBOVUxMOwotKwotKwlzaXplID0gYXNw cmludGYoJm5ld19wYXJ0LAotKwkgICAgIiVzJXMlcyIgIFBLQ1MxMV9VUklfVkFMVUVfU0VQQVJB VE9SICIlcyIsCi0rCSAgICAocGFydCAhPSBOVUxMID8gcGFydCA6ICIiKSwKLSsJICAgIChwYXJ0 ICE9IE5VTEwgPyBzZXBhcmF0b3IgOiAiIiksCi0rCSAgICBrZXksIHNzaGJ1Zl9wdHIodmFsdWUp KTsKLSsJc3NoYnVmX2ZyZWUodmFsdWUpOwotKwlmcmVlKHBhcnQpOwotKwotKwlpZiAoc2l6ZSA8 PSAwKQotKwkJcmV0dXJuIE5VTEw7Ci0rCXJldHVybiBuZXdfcGFydDsKLSt9Ci0rCi0rY2hhciAq Ci0rcGtjczExX3VyaV9nZXQoc3RydWN0IHBrY3MxMV91cmkgKnVyaSkKLSt7Ci0rCXNpemVfdCBz aXplID0gMDsKLSsJY2hhciAqcCA9IE5VTEwsICpwYXRoID0gTlVMTCwgKnF1ZXJ5ID0gTlVMTDsK LSsKLSsJLyogY29tcG9zZSBhIHBlcmNlbnQtZW5jb2RlZCBJRCAqLwotKwlpZiAodXJpLT5pZF9s ZW4gPiAwKSB7Ci0rCQlzdHJ1Y3Qgc3NoYnVmICprZXlfaWQgPSBwZXJjZW50X2VuY29kZSh1cmkt PmlkLCB1cmktPmlkX2xlbiwgIiIpOwotKwkJcGF0aCA9IHBrY3MxMV91cmlfYXBwZW5kKHBhdGgs IFBLQ1MxMV9VUklfUEFUSF9TRVBBUkFUT1IsCi0rCQkgICAgUEtDUzExX1VSSV9JRCwga2V5X2lk KTsKLSsJCWlmIChwYXRoID09IE5VTEwpCi0rCQkJZ290byBlcnI7Ci0rCX0KLSsKLSsJLyogV3Jp dGUgb2JqZWN0IGxhYmVsICovCi0rCWlmICh1cmktPm9iamVjdCkgewotKwkJc3RydWN0IHNzaGJ1 ZiAqbGFiZWwgPSBwZXJjZW50X2VuY29kZSh1cmktPm9iamVjdCwgc3RybGVuKHVyaS0+b2JqZWN0 KSwKLSsJCSAgICBQS0NTMTFfVVJJX1dISVRFTElTVCk7Ci0rCQlwYXRoID0gcGtjczExX3VyaV9h cHBlbmQocGF0aCwgUEtDUzExX1VSSV9QQVRIX1NFUEFSQVRPUiwKLSsJCSAgICBQS0NTMTFfVVJJ X09CSkVDVCwgbGFiZWwpOwotKwkJaWYgKHBhdGggPT0gTlVMTCkKLSsJCQlnb3RvIGVycjsKLSsJ fQotKwotKwkvKiBXcml0ZSB0b2tlbiBsYWJlbCAqLwotKwlpZiAodXJpLT50b2tlbikgewotKwkJ c3RydWN0IHNzaGJ1ZiAqbGFiZWwgPSBwZXJjZW50X2VuY29kZSh1cmktPnRva2VuLCBzdHJsZW4o dXJpLT50b2tlbiksCi0rCQkgICAgUEtDUzExX1VSSV9XSElURUxJU1QpOwotKwkJcGF0aCA9IHBr Y3MxMV91cmlfYXBwZW5kKHBhdGgsIFBLQ1MxMV9VUklfUEFUSF9TRVBBUkFUT1IsCi0rCQkgICAg UEtDUzExX1VSSV9UT0tFTiwgbGFiZWwpOwotKwkJaWYgKHBhdGggPT0gTlVMTCkKLSsJCQlnb3Rv IGVycjsKLSsJfQotKwotKwkvKiBXcml0ZSBtYW51ZmFjdHVyZXIgKi8KLSsJaWYgKHVyaS0+bWFu dWYpIHsKLSsJCXN0cnVjdCBzc2hidWYgKm1hbnVmID0gcGVyY2VudF9lbmNvZGUodXJpLT5tYW51 ZiwKLSsJCSAgICBzdHJsZW4odXJpLT5tYW51ZiksIFBLQ1MxMV9VUklfV0hJVEVMSVNUKTsKLSsJ CXBhdGggPSBwa2NzMTFfdXJpX2FwcGVuZChwYXRoLCBQS0NTMTFfVVJJX1BBVEhfU0VQQVJBVE9S LAotKwkJICAgIFBLQ1MxMV9VUklfTUFOVUYsIG1hbnVmKTsKLSsJCWlmIChwYXRoID09IE5VTEwp Ci0rCQkJZ290byBlcnI7Ci0rCX0KLSsKLSsJLyogV3JpdGUgc2VyaWFsICovCi0rCWlmICh1cmkt PnNlcmlhbCkgewotKwkJc3RydWN0IHNzaGJ1ZiAqc2VyaWFsID0gcGVyY2VudF9lbmNvZGUodXJp LT5zZXJpYWwsCi0rCQkgICAgc3RybGVuKHVyaS0+c2VyaWFsKSwgUEtDUzExX1VSSV9XSElURUxJ U1QpOwotKwkJcGF0aCA9IHBrY3MxMV91cmlfYXBwZW5kKHBhdGgsIFBLQ1MxMV9VUklfUEFUSF9T RVBBUkFUT1IsCi0rCQkgICAgUEtDUzExX1VSSV9TRVJJQUwsIHNlcmlhbCk7Ci0rCQlpZiAocGF0 aCA9PSBOVUxMKQotKwkJCWdvdG8gZXJyOwotKwl9Ci0rCi0rCS8qIFdyaXRlIG1vZHVsZV9wYXRo ICovCi0rCWlmICh1cmktPm1vZHVsZV9wYXRoKSB7Ci0rCQlzdHJ1Y3Qgc3NoYnVmICptb2R1bGUg PSBwZXJjZW50X2VuY29kZSh1cmktPm1vZHVsZV9wYXRoLAotKwkJICAgIHN0cmxlbih1cmktPm1v ZHVsZV9wYXRoKSwgUEtDUzExX1VSSV9XSElURUxJU1QgIi8iKTsKLSsJCXF1ZXJ5ID0gcGtjczEx X3VyaV9hcHBlbmQocXVlcnksIFBLQ1MxMV9VUklfUVVFUllfU0VQQVJBVE9SLAotKwkJICAgIFBL Q1MxMV9VUklfTU9EVUxFX1BBVEgsIG1vZHVsZSk7Ci0rCQlpZiAocXVlcnkgPT0gTlVMTCkKLSsJ CQlnb3RvIGVycjsKLSsJfQotKwotKwlzaXplID0gYXNwcmludGYoJnAsIFBLQ1MxMV9VUklfU0NI RU1FICIlcyVzJXMiLAotKwkgICAgcGF0aCAhPSBOVUxMID8gcGF0aCA6ICIiLAotKwkgICAgcXVl cnkgIT0gTlVMTCA/ICI/IiA6ICIiLAotKwkgICAgcXVlcnkgIT0gTlVMTCA/IHF1ZXJ5IDogIiIp OwotK2VycjoKLSsJZnJlZShxdWVyeSk7Ci0rCWZyZWUocGF0aCk7Ci0rCWlmIChzaXplIDw9IDAp Ci0rCQlyZXR1cm4gTlVMTDsKLSsJcmV0dXJuIHA7Ci0rfQotKwotK3N0cnVjdCBwa2NzMTFfdXJp ICoKLStwa2NzMTFfdXJpX2luaXQoKQotK3sKLSsJc3RydWN0IHBrY3MxMV91cmkgKmQgPSBjYWxs b2MoMSwgc2l6ZW9mKHN0cnVjdCBwa2NzMTFfdXJpKSk7Ci0rCXJldHVybiBkOwotK30KLSsKLSt2 b2lkCi0rcGtjczExX3VyaV9jbGVhbnVwKHN0cnVjdCBwa2NzMTFfdXJpICpwa2NzMTEpCi0rewot KwlpZiAocGtjczExID09IE5VTEwpIHsKLSsJCXJldHVybjsKLSsJfQotKwotKwlmcmVlKHBrY3Mx MS0+aWQpOwotKwlmcmVlKHBrY3MxMS0+bW9kdWxlX3BhdGgpOwotKwlmcmVlKHBrY3MxMS0+dG9r ZW4pOwotKwlmcmVlKHBrY3MxMS0+b2JqZWN0KTsKLSsJZnJlZShwa2NzMTEtPmxpYl9tYW51Zik7 Ci0rCWZyZWUocGtjczExLT5tYW51Zik7Ci0rCWZyZWUocGtjczExLT5zZXJpYWwpOwotKwlpZiAo cGtjczExLT5waW4pCi0rCQlmcmVlemVybyhwa2NzMTEtPnBpbiwgc3RybGVuKHBrY3MxMS0+cGlu KSk7Ci0rCWZyZWUocGtjczExKTsKLSt9Ci0rCi0raW50Ci0rcGtjczExX3VyaV9wYXJzZShjb25z dCBjaGFyICp1cmksIHN0cnVjdCBwa2NzMTFfdXJpICpwa2NzMTEpCi0rewotKwljaGFyICpzYXZl cHRyMSwgKnNhdmVwdHIyLCAqc3RyMSwgKnN0cjIsICp0b2s7Ci0rCWludCBydiA9IDAsIGxlbjsK LSsJY2hhciAqcCA9IE5VTEw7Ci0rCi0rCXNpemVfdCBzY2hlbWVfbGVuID0gc3RybGVuKFBLQ1Mx MV9VUklfU0NIRU1FKTsKLSsJaWYgKHN0cmxlbih1cmkpIDwgc2NoZW1lX2xlbiB8fCAvKiBlbXB0 eSBVUkkgbWF0Y2hlcyBldmVyeXRoaW5nICovCi0rCSAgICBzdHJuY21wKHVyaSwgUEtDUzExX1VS SV9TQ0hFTUUsIHNjaGVtZV9sZW4pICE9IDApIHsKLSsJCWVycm9yX2YoIlRoZSAnJXMnIGRvZXMg bm90IGxvb2sgbGlrZSBQS0NTIzExIFVSSSIsIHVyaSk7Ci0rCQlyZXR1cm4gLTE7Ci0rCX0KLSsK LSsJaWYgKHBrY3MxMSA9PSBOVUxMKSB7Ci0rCQllcnJvcl9mKCJCYWQgYXJndW1lbnRzLiBUaGUg cGtjczExIGNhbid0IGJlIG51bGwiKTsKLSsJCXJldHVybiAtMTsKLSsJfQotKwotKwkvKiBza2lw IFVSSSBzY2hlbWEgbmFtZSAqLwotKwlwID0gc3RyZHVwKHVyaSk7Ci0rCXN0cjEgPSBwOwotKwot KwkvKiBldmVyeXRoaW5nIGJlZm9yZSA/ICovCi0rCXRvayA9IHN0cnRva19yKHN0cjEsICI/Iiwg JnNhdmVwdHIxKTsKLSsJaWYgKHRvayA9PSBOVUxMKSB7Ci0rCQllcnJvcl9mKCJwazExLXBhdGgg ZXhwZWN0ZWQsIGdvdCBFT0YiKTsKLSsJCXJ2ID0gLTE7Ci0rCQlnb3RvIG91dDsKLSsJfQotKwot KwkvKiBza2lwIFVSSSBzY2hlbWEgbmFtZToKLSsJICogdGhlIHNjaGVtZSBlbnN1cmVzIHRoYXQg dGhlcmUgaXMgYXQgbGVhc3Qgc29tZXRoaW5nIGJlZm9yZSAiPyIKLSsJICogYWxsb3dpbmcgZW1w dHkgcGsxMS1wYXRoLiBSZXN1bHRpbmcgdG9rZW4gYXQgd29yc3QgcG9pbnRpbmcgdG8KLSsJICog XDAgYnl0ZSAqLwotKwl0b2sgPSB0b2sgKyBzY2hlbWVfbGVuOwotKwotKwkvKiBwYXJzZSBwazEx LXBhdGggKi8KLSsJZm9yIChzdHIyID0gdG9rOyA7IHN0cjIgPSBOVUxMKSB7Ci0rCQljaGFyICoq Y2hhcnB0ciwgKmFyZyA9IE5VTEw7Ci0rCQlwa2NzMTF1cmlPcENvZGVzIG9wY29kZTsKLSsJCXRv ayA9IHN0cnRva19yKHN0cjIsIFBLQ1MxMV9VUklfUEFUSF9TRVBBUkFUT1IsICZzYXZlcHRyMik7 Ci0rCQlpZiAodG9rID09IE5VTEwpCi0rCQkJYnJlYWs7Ci0rCQlvcGNvZGUgPSBwYXJzZV90b2tl bih0b2spOwotKwkJaWYgKG9wY29kZSAhPSBwQmFkT3B0aW9uKQotKwkJCWFyZyA9IHRvayArIHN0 cmxlbihrZXl3b3Jkc1tvcGNvZGVdLm5hbWUpICsgMTsgLyogc2VwYXJhdG9yICI9IiAqLwotKwot KwkJc3dpdGNoIChvcGNvZGUpIHsKLSsJCWNhc2UgcElkOgotKwkJCS8qIENLQV9JRCAqLwotKwkJ CWlmIChwa2NzMTEtPmlkICE9IE5VTEwpIHsKLSsJCQkJdmVyYm9zZV9mKCJUaGUgaWQgYWxyZWFk eSBzZXQgaW4gdGhlIFBLQ1MjMTEgVVJJIik7Ci0rCQkJCXJ2ID0gLTE7Ci0rCQkJCWdvdG8gb3V0 OwotKwkJCX0KLSsJCQlsZW4gPSBwZXJjZW50X2RlY29kZShhcmcsICZwa2NzMTEtPmlkKTsKLSsJ CQlpZiAobGVuIDw9IDApIHsKLSsJCQkJdmVyYm9zZV9mKCJGYWlsZWQgdG8gcGVyY2VudC1kZWNv ZGUgQ0tBX0lEOiAlcyIsIGFyZyk7Ci0rCQkJCXJ2ID0gLTE7Ci0rCQkJCWdvdG8gb3V0OwotKwkJ CX0gZWxzZQotKwkJCQlwa2NzMTEtPmlkX2xlbiA9IGxlbjsKLSsJCQlkZWJ1ZzNfZigiU2V0dGlu ZyBDS0FfSUQgPSAlcyBmcm9tIFBLQ1MjMTEgVVJJIiwgYXJnKTsKLSsJCQlicmVhazsKLSsJCWNh c2UgcFRva2VuOgotKwkJCS8qIENLX1RPS0VOX0lORk8gLT4gbGFiZWwgKi8KLSsJCQljaGFycHRy ID0gJnBrY3MxMS0+dG9rZW47Ci0rIHBhcnNlX3N0cmluZzoKLSsJCQlpZiAoKmNoYXJwdHIgIT0g TlVMTCkgewotKwkJCQl2ZXJib3NlX2YoIlRoZSAlcyBhbHJlYWR5IHNldCBpbiB0aGUgUEtDUyMx MSBVUkkiLAotKwkJCQkgICAga2V5d29yZHNbb3Bjb2RlXS5uYW1lKTsKLSsJCQkJcnYgPSAtMTsK LSsJCQkJZ290byBvdXQ7Ci0rCQkJfQotKwkJCXBlcmNlbnRfZGVjb2RlKGFyZywgY2hhcnB0cik7 Ci0rCQkJZGVidWczX2YoIlNldHRpbmcgJXMgPSAlcyBmcm9tIFBLQ1MjMTEgVVJJIiwKLSsJCQkg ICAga2V5d29yZHNbb3Bjb2RlXS5uYW1lLCAqY2hhcnB0cik7Ci0rCQkJYnJlYWs7Ci0rCi0rCQlj YXNlIHBPYmplY3Q6Ci0rCQkJLyogQ0tfVE9LRU5fSU5GTyAtPiBtYW51ZmFjdHVyZXJJRCAqLwot KwkJCWNoYXJwdHIgPSAmcGtjczExLT5vYmplY3Q7Ci0rCQkJZ290byBwYXJzZV9zdHJpbmc7Ci0r Ci0rCQljYXNlIHBNYW51ZmFjdHVyZXI6Ci0rCQkJLyogQ0tfVE9LRU5fSU5GTyAtPiBtYW51ZmFj dHVyZXJJRCAqLwotKwkJCWNoYXJwdHIgPSAmcGtjczExLT5tYW51ZjsKLSsJCQlnb3RvIHBhcnNl X3N0cmluZzsKLSsKLSsJCWNhc2UgcFNlcmlhbDoKLSsJCQkvKiBDS19UT0tFTl9JTkZPIC0+IHNl cmlhbE51bWJlciAqLwotKwkJCWNoYXJwdHIgPSAmcGtjczExLT5zZXJpYWw7Ci0rCQkJZ290byBw YXJzZV9zdHJpbmc7Ci0rCi0rCQljYXNlIHBMaWJyYXJ5TWFudWZhY3R1cmVyOgotKwkJCS8qIENL X0lORk8gLT4gbWFudWZhY3R1cmVySUQgKi8KLSsJCQljaGFycHRyID0gJnBrY3MxMS0+bGliX21h bnVmOwotKwkJCWdvdG8gcGFyc2Vfc3RyaW5nOwotKwotKwkJZGVmYXVsdDoKLSsJCQkvKiBVbnJl Y29nbml6ZWQgYXR0cmlidXRlIGluIHRoZSBVUkkgcGF0aCBTSE9VTEQgYmUgZXJyb3IgKi8KLSsJ CQl2ZXJib3NlX2YoIlVua25vd24gcGFydCBvZiBwYXRoIGluIFBLQ1MjMTEgVVJJOiAlcyIsIHRv ayk7Ci0rCQl9Ci0rCX0KLSsKLSsJdG9rID0gc3RydG9rX3IoTlVMTCwgIj8iLCAmc2F2ZXB0cjEp OwotKwlpZiAodG9rID09IE5VTEwpIHsKLSsJCWdvdG8gb3V0OwotKwl9Ci0rCS8qIHBhcnNlIHBr MTEtcXVlcnkgKG9wdGlvbmFsKSAqLwotKwlmb3IgKHN0cjIgPSB0b2s7IDsgc3RyMiA9IE5VTEwp IHsKLSsJCWNoYXIgKmFyZzsKLSsJCXBrY3MxMXVyaU9wQ29kZXMgb3Bjb2RlOwotKwkJdG9rID0g c3RydG9rX3Ioc3RyMiwgUEtDUzExX1VSSV9RVUVSWV9TRVBBUkFUT1IsICZzYXZlcHRyMik7Ci0r CQlpZiAodG9rID09IE5VTEwpCi0rCQkJYnJlYWs7Ci0rCQlvcGNvZGUgPSBwYXJzZV90b2tlbih0 b2spOwotKwkJaWYgKG9wY29kZSAhPSBwQmFkT3B0aW9uKQotKwkJCWFyZyA9IHRvayArIHN0cmxl bihrZXl3b3Jkc1tvcGNvZGVdLm5hbWUpICsgMTsgLyogc2VwYXJhdG9yICI9IiAqLwotKwotKwkJ c3dpdGNoIChvcGNvZGUpIHsKLSsJCWNhc2UgcE1vZHVsZVBhdGg6Ci0rCQkJLyogbW9kdWxlLXBh dGggaXMgUEtDUzExUHJvdmlkZXIgKi8KLSsJCQlpZiAocGtjczExLT5tb2R1bGVfcGF0aCAhPSBO VUxMKSB7Ci0rCQkJCXZlcmJvc2VfZigiTXVsdGlwbGUgbW9kdWxlLXBhdGggYXR0cmlidXRlcyBh cmUiCi0rCQkJCSAgICAibm90IHN1cHBvcnRlZCB0aGUgUEtDUyMxMSBVUkkiKTsKLSsJCQkJcnYg PSAtMTsKLSsJCQkJZ290byBvdXQ7Ci0rCQkJfQotKwkJCXBlcmNlbnRfZGVjb2RlKGFyZywgJnBr Y3MxMS0+bW9kdWxlX3BhdGgpOwotKwkJCWRlYnVnM19mKCJTZXR0aW5nIFBLQ1MxMVByb3ZpZGVy ID0gJXMgZnJvbSBQS0NTIzExIFVSSSIsCi0rCQkJICAgIHBrY3MxMS0+bW9kdWxlX3BhdGgpOwot KwkJCWJyZWFrOwotKwotKwkJY2FzZSBwUGluVmFsdWU6Ci0rCQkJLyogcGluLXZhbHVlICovCi0r CQkJaWYgKHBrY3MxMS0+cGluICE9IE5VTEwpIHsKLSsJCQkJdmVyYm9zZV9mKCJNdWx0aXBsZSBw aW4tdmFsdWUgYXR0cmlidXRlcyBhcmUiCi0rCQkJCSAgICAibm90IHN1cHBvcnRlZCB0aGUgUEtD UyMxMSBVUkkiKTsKLSsJCQkJcnYgPSAtMTsKLSsJCQkJZ290byBvdXQ7Ci0rCQkJfQotKwkJCXBl cmNlbnRfZGVjb2RlKGFyZywgJnBrY3MxMS0+cGluKTsKLSsJCQlkZWJ1ZzNfZigiU2V0dGluZyBQ SU4gZnJvbSBQS0NTIzExIFVSSSIpOwotKwkJCWJyZWFrOwotKwotKwkJZGVmYXVsdDoKLSsJCQkv KiBVbnJlY29nbml6ZWQgYXR0cmlidXRlIGluIHRoZSBVUkkgcXVlcnkgU0hPVUxEIGJlIGlnbm9y ZWQgKi8KLSsJCQl2ZXJib3NlX2YoIlVua25vd24gcGFydCBvZiBxdWVyeSBpbiBQS0NTIzExIFVS STogJXMiLCB0b2spOwotKwkJfQotKwl9Ci0rb3V0OgotKwlmcmVlKHApOwotKwlyZXR1cm4gcnY7 Ci0rfQotKwotKyNlbmRpZiAvKiBFTkFCTEVfUEtDUzExICovCi1kaWZmIC0tZ2l0IGEvc3NoLXBr Y3MxMS11cmkuaCBiL3NzaC1wa2NzMTEtdXJpLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRl eCAwMDAwMDAwMDAuLmJjNzU4ZTc2MAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3NoLXBrY3MxMS11 cmkuaAotQEAgLTAsMCArMSw0NiBAQAotKy8qCi0rICogQ29weXJpZ2h0IChjKSAyMDE3IFJlZCBI YXQKLSsgKgotKyAqIEF1dGhvcnM6IEpha3ViIEplbGVuIDxqamVsZW5AcmVkaGF0LmNvbT4KLSsg KgotKyAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRo aXMgc29mdHdhcmUgZm9yIGFueQotKyAqIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBo ZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUKLSsgKiBjb3B5cmlnaHQgbm90 aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLgotKyAq Ci0rICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElT Q0xBSU1TIEFMTCBXQVJSQU5USUVTCi0rICogV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJ TkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRgotKyAqIE1FUkNIQU5UQUJJTElUWSBB TkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SCi0r ICogQU5ZIFNQRUNJQUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF UyBPUiBBTlkgREFNQUdFUwotKyAqIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBV U0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTgotKyAqIEFDVElPTiBPRiBDT05UUkFD VCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GCi0r ICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBT T0ZUV0FSRS4KLSsgKi8KLSsKLSsjaWZuZGVmIF9TU0hfUEtDUzExX1VSSV9ICi0rI2RlZmluZSBf U1NIX1BLQ1MxMV9VUklfSAotKwotKyNkZWZpbmUgUEtDUzExX1VSSV9TQ0hFTUUgInBrY3MxMToi Ci0rI2RlZmluZSBQS0NTMTFfVVJJX1dISVRFTElTVAkiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4 eXoiIFwKLSsJCQkJIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIiBcCi0rCQkJCSIwMTIzNDU2 Nzg5Xy0uKCkiCi0rCi0rc3RydWN0IHBrY3MxMV91cmkgewotKwkvKiBwYXRoICovCi0rCWNoYXIg KmlkOwotKwlzaXplX3QgaWRfbGVuOwotKwljaGFyICp0b2tlbjsKLSsJY2hhciAqb2JqZWN0Owot KwljaGFyICpsaWJfbWFudWY7Ci0rCWNoYXIgKm1hbnVmOwotKwljaGFyICpzZXJpYWw7Ci0rCS8q IHF1ZXJ5ICovCi0rCWNoYXIgKm1vZHVsZV9wYXRoOwotKwljaGFyICpwaW47IC8qIE9ubHkgcGFy c2VkLCBidXQgbm90IHByaW50ZWQgKi8KLSt9OwotKwotK3N0cnVjdAkgcGtjczExX3VyaSAqcGtj czExX3VyaV9pbml0KCk7Ci0rdm9pZAkgcGtjczExX3VyaV9jbGVhbnVwKHN0cnVjdCBwa2NzMTFf dXJpICopOwotK2ludAkgcGtjczExX3VyaV9wYXJzZShjb25zdCBjaGFyICosIHN0cnVjdCBwa2Nz MTFfdXJpICopOwotK3N0cnVjdAkgcGtjczExX3VyaSAqcGtjczExX3VyaV9pbml0KCk7Ci0rY2hh cgkqcGtjczExX3VyaV9nZXQoc3RydWN0IHBrY3MxMV91cmkgKnVyaSk7Ci0rI2VuZGlmIC8qIF9T U0hfUEtDUzExX1VSSV9IICovCi1kaWZmIC0tZ2l0IGEvc3NoLXBrY3MxMS5jIGIvc3NoLXBrY3Mx MS5jCi1pbmRleCA3YTdkM2I4ZWEuLjZmMjNmYzM4YiAxMDA2NDQKLS0tLSBhL3NzaC1wa2NzMTEu YwotKysrIGIvc3NoLXBrY3MxMS5jCi1AQCAtMzYsNiArMzYsNyBAQAotICNpbmNsdWRlIDxvcGVu c3NsL2VjZHNhLmg+Ci0gI2luY2x1ZGUgPG9wZW5zc2wveDUwOS5oPgotICNpbmNsdWRlIDxvcGVu c3NsL2Vyci5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgotICNlbmRpZgotIAotICNkZWZp bmUgQ1JZUFRPS0lfQ09NUEFUCi1AQCAtNDgsNiArNDksNyBAQAotICNpbmNsdWRlICJtaXNjLmgi Ci0gI2luY2x1ZGUgInNzaGJ1Zi5oIgotICNpbmNsdWRlICJzc2gtcGtjczExLmgiCi0rI2luY2x1 ZGUgInNzaC1wa2NzMTEtdXJpLmgiCi0gI2luY2x1ZGUgImRpZ2VzdC5oIgotICNpbmNsdWRlICJ4 bWFsbG9jLmgiCi0gI2luY2x1ZGUgImNyeXB0b19hcGkuaCIKLUBAIC01OCw4ICs2MCw4IEBAIHN0 cnVjdCBwa2NzMTFfc2xvdGluZm8gewotIAlpbnQJCQlsb2dnZWRfaW47Ci0gfTsKLSAKLS1zdHJ1 Y3QgcGtjczExX3Byb3ZpZGVyIHsKLS0JY2hhcgkJCSpuYW1lOwotK3N0cnVjdCBwa2NzMTFfbW9k dWxlIHsKLSsJY2hhcgkJCSptb2R1bGVfcGF0aDsKLSAJdm9pZAkJCSpoYW5kbGU7Ci0gCUNLX0ZV TkNUSU9OX0xJU1QJKmZ1bmN0aW9uX2xpc3Q7Ci0gCUNLX0lORk8JCQlpbmZvOwotQEAgLTY4LDYg KzcwLDEzIEBAIHN0cnVjdCBwa2NzMTFfcHJvdmlkZXIgewotIAlzdHJ1Y3QgcGtjczExX3Nsb3Rp bmZvCSpzbG90aW5mbzsKLSAJaW50CQkJdmFsaWQ7Ci0gCWludAkJCXJlZmNvdW50OwotK307Ci0r Ci0rc3RydWN0IHBrY3MxMV9wcm92aWRlciB7Ci0rCWNoYXIJCQkqbmFtZTsKLSsJc3RydWN0IHBr Y3MxMV9tb2R1bGUJKm1vZHVsZTsgLyogY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIHZhcmlvdXMgcHJv dmlkZXJzICovCi0rCWludAkJCXJlZmNvdW50OwotKwlpbnQJCQl2YWxpZDsKLSAJVEFJTFFfRU5U UlkocGtjczExX3Byb3ZpZGVyKSBuZXh0OwotIH07Ci0gCi1AQCAtNzksNiArODgsNyBAQCBzdHJ1 Y3QgcGtjczExX2tleSB7Ci0gCUNLX1VMT05HCQlzbG90aWR4OwotIAljaGFyCQkJKmtleWlkOwot IAlpbnQJCQlrZXlpZF9sZW47Ci0rCWNoYXIJCQkqbGFiZWw7Ci0gCVRBSUxRX0VOVFJZKHBrY3Mx MV9rZXkpCW5leHQ7Ci0gfTsKLSAKLUBAIC0xMDUsMjYgKzExNSw2MSBAQCBvc3NsX2Vycm9yKGNv bnN0IGNoYXIgKm1zZykKLSAgKiB0aGlzIGlzIGNhbGxlZCB3aGVuIGEgcHJvdmlkZXIgZ2V0cyB1 bnJlZ2lzdGVyZWQuCi0gICovCi0gc3RhdGljIHZvaWQKLS1wa2NzMTFfcHJvdmlkZXJfZmluYWxp emUoc3RydWN0IHBrY3MxMV9wcm92aWRlciAqcCkKLStwa2NzMTFfbW9kdWxlX2ZpbmFsaXplKHN0 cnVjdCBwa2NzMTFfbW9kdWxlICptKQotIHsKLSAJQ0tfUlYgcnY7Ci0gCUNLX1VMT05HIGk7Ci0g Ci0tCWRlYnVnX2YoInByb3ZpZGVyIFwiJXNcIiByZWZjb3VudCAlZCB2YWxpZCAlZCIsCi0tCSAg ICBwLT5uYW1lLCBwLT5yZWZjb3VudCwgcC0+dmFsaWQpOwotLQlpZiAoIXAtPnZhbGlkKQotKwlk ZWJ1Z19mKCIlcCByZWZjb3VudCAlZCB2YWxpZCAlZCIsIG0sIG0tPnJlZmNvdW50LCBtLT52YWxp ZCk7Ci0rCWlmICghbS0+dmFsaWQpCi0gCQlyZXR1cm47Ci0tCWZvciAoaSA9IDA7IGkgPCBwLT5u c2xvdHM7IGkrKykgewotLQkJaWYgKHAtPnNsb3RpbmZvW2ldLnNlc3Npb24gJiYKLS0JCSAgICAo cnYgPSBwLT5mdW5jdGlvbl9saXN0LT5DX0Nsb3NlU2Vzc2lvbigKLS0JCSAgICBwLT5zbG90aW5m b1tpXS5zZXNzaW9uKSkgIT0gQ0tSX09LKQotKwlmb3IgKGkgPSAwOyBpIDwgbS0+bnNsb3RzOyBp KyspIHsKLSsJCWlmIChtLT5zbG90aW5mb1tpXS5zZXNzaW9uICYmCi0rCQkgICAgKHJ2ID0gbS0+ ZnVuY3Rpb25fbGlzdC0+Q19DbG9zZVNlc3Npb24oCi0rCQkgICAgbS0+c2xvdGluZm9baV0uc2Vz c2lvbikpICE9IENLUl9PSykKLSAJCQllcnJvcigiQ19DbG9zZVNlc3Npb24gZmFpbGVkOiAlbHUi LCBydik7Ci0gCX0KLS0JaWYgKChydiA9IHAtPmZ1bmN0aW9uX2xpc3QtPkNfRmluYWxpemUoTlVM TCkpICE9IENLUl9PSykKLSsJaWYgKChydiA9IG0tPmZ1bmN0aW9uX2xpc3QtPkNfRmluYWxpemUo TlVMTCkpICE9IENLUl9PSykKLSAJCWVycm9yKCJDX0ZpbmFsaXplIGZhaWxlZDogJWx1IiwgcnYp OwotKwltLT52YWxpZCA9IDA7Ci0rCW0tPmZ1bmN0aW9uX2xpc3QgPSBOVUxMOwotKwlkbGNsb3Nl KG0tPmhhbmRsZSk7Ci0rfQotKwotKy8qCi0rICogcmVtb3ZlIGEgcmVmZXJlbmNlIHRvIHRoZSBw a2NzMTEgbW9kdWxlLgotKyAqIGNhbGxlZCB3aGVuIGEgcHJvdmlkZXIgaXMgdW5yZWdpc3RlcmVk LgotKyAqLwotK3N0YXRpYyB2b2lkCi0rcGtjczExX21vZHVsZV91bnJlZihzdHJ1Y3QgcGtjczEx X21vZHVsZSAqbSkKLSt7Ci0rCWRlYnVnX2YoIiVwIHJlZmNvdW50ICVkIiwgbSwgbS0+cmVmY291 bnQpOwotKwlpZiAoLS1tLT5yZWZjb3VudCA8PSAwKSB7Ci0rCQlwa2NzMTFfbW9kdWxlX2ZpbmFs aXplKG0pOwotKwkJaWYgKG0tPnZhbGlkKQotKwkJCWVycm9yX2YoIiVwIHN0aWxsIHZhbGlkIiwg bSk7Ci0rCQlmcmVlKG0tPnNsb3RsaXN0KTsKLSsJCWZyZWUobS0+c2xvdGluZm8pOwotKwkJZnJl ZShtLT5tb2R1bGVfcGF0aCk7Ci0rCQlmcmVlKG0pOwotKwl9Ci0rfQotKwotKy8qCi0rICogZmlu YWxpemUgYSBwcm92aWRlciBzaGFyZWQgbGlicmFyeSwgaXQncyBubyBsb25nZXIgdXNhYmxlLgot KyAqIGhvd2V2ZXIsIHRoZXJlIG1pZ2h0IHN0aWxsIGJlIGtleXMgcmVmZXJlbmNpbmcgdGhpcyBw cm92aWRlciwKLSsgKiBzbyB0aGUgYWN0dWFsIGZyZWVpbmcgb2YgbWVtb3J5IGlzIGhhbmRsZWQg YnkgcGtjczExX3Byb3ZpZGVyX3VucmVmKCkuCi0rICogdGhpcyBpcyBjYWxsZWQgd2hlbiBhIHBy b3ZpZGVyIGdldHMgdW5yZWdpc3RlcmVkLgotKyAqLwotK3N0YXRpYyB2b2lkCi0rcGtjczExX3By b3ZpZGVyX2ZpbmFsaXplKHN0cnVjdCBwa2NzMTFfcHJvdmlkZXIgKnApCi0rewotKwlkZWJ1Z19m KCIlcCByZWZjb3VudCAlZCB2YWxpZCAlZCIsIHAsIHAtPnJlZmNvdW50LCBwLT52YWxpZCk7Ci0r CWlmICghcC0+dmFsaWQpCi0rCQlyZXR1cm47Ci0rCXBrY3MxMV9tb2R1bGVfdW5yZWYocC0+bW9k dWxlKTsKLSsJcC0+bW9kdWxlID0gTlVMTDsKLSAJcC0+dmFsaWQgPSAwOwotLQlwLT5mdW5jdGlv bl9saXN0ID0gTlVMTDsKLS0JZGxjbG9zZShwLT5oYW5kbGUpOwotIH0KLSAKLSAvKgotQEAgLTEz NiwxNSArMTgxLDI3IEBAIHBrY3MxMV9wcm92aWRlcl91bnJlZihzdHJ1Y3QgcGtjczExX3Byb3Zp ZGVyICpwKQotIHsKLSAJZGVidWdfZigicHJvdmlkZXIgXCIlc1wiIHJlZmNvdW50ICVkIiwgcC0+ bmFtZSwgcC0+cmVmY291bnQpOwotIAlpZiAoLS1wLT5yZWZjb3VudCA8PSAwKSB7Ci0tCQlpZiAo cC0+dmFsaWQpCi0tCQkJZXJyb3JfZigicHJvdmlkZXIgXCIlc1wiIHN0aWxsIHZhbGlkIiwgcC0+ bmFtZSk7Ci0gCQlmcmVlKHAtPm5hbWUpOwotLQkJZnJlZShwLT5zbG90bGlzdCk7Ci0tCQlmcmVl KHAtPnNsb3RpbmZvKTsKLSsJCWlmIChwLT5tb2R1bGUpCi0rCQkJcGtjczExX21vZHVsZV91bnJl ZihwLT5tb2R1bGUpOwotIAkJZnJlZShwKTsKLSAJfQotIH0KLSAKLSsvKiBsb29rdXAgcHJvdmlk ZXIgYnkgbW9kdWxlIHBhdGggKi8KLStzdGF0aWMgc3RydWN0IHBrY3MxMV9tb2R1bGUgKgotK3Br Y3MxMV9wcm92aWRlcl9sb29rdXBfbW9kdWxlKGNoYXIgKm1vZHVsZV9wYXRoKQotK3sKLSsJc3Ry dWN0IHBrY3MxMV9wcm92aWRlciAqcDsKLSsKLSsJVEFJTFFfRk9SRUFDSChwLCAmcGtjczExX3By b3ZpZGVycywgbmV4dCkgewotKwkJZGVidWcoImNoZWNrICVwICVzICglcykiLCBwLCBwLT5uYW1l LCBwLT5tb2R1bGUtPm1vZHVsZV9wYXRoKTsKLSsJCWlmICghc3RyY21wKG1vZHVsZV9wYXRoLCBw LT5tb2R1bGUtPm1vZHVsZV9wYXRoKSkKLSsJCQlyZXR1cm4gKHAtPm1vZHVsZSk7Ci0rCX0KLSsJ cmV0dXJuIChOVUxMKTsKLSt9Ci0rCi0gLyogbG9va3VwIHByb3ZpZGVyIGJ5IG5hbWUgKi8KLSBz dGF0aWMgc3RydWN0IHBrY3MxMV9wcm92aWRlciAqCi0gcGtjczExX3Byb3ZpZGVyX2xvb2t1cChj aGFyICpwcm92aWRlcl9pZCkKLUBAIC0xNTksMTkgKzIxNiw1NSBAQCBwa2NzMTFfcHJvdmlkZXJf bG9va3VwKGNoYXIgKnByb3ZpZGVyX2lkKQotIAlyZXR1cm4gKE5VTEwpOwotIH0KLSAKLStpbnQg cGtjczExX2RlbF9wcm92aWRlcl9ieV91cmkoc3RydWN0IHBrY3MxMV91cmkgKik7Ci0rCi0gLyog dW5yZWdpc3RlciBwcm92aWRlciBieSBuYW1lICovCi0gaW50Ci0gcGtjczExX2RlbF9wcm92aWRl cihjaGFyICpwcm92aWRlcl9pZCkKLSt7Ci0rCWludCBydjsKLSsJc3RydWN0IHBrY3MxMV91cmkg KnVyaTsKLSsKLSsJZGVidWdfZigiY2FsbGVkLCBwcm92aWRlcl9pZCA9ICVzIiwgcHJvdmlkZXJf aWQpOwotKwotKyAgICAgIGlmIChwcm92aWRlcl9pZCA9PSBOVUxMKQotKyAgICAgICAgICByZXR1 cm4gMDsKLSsKLSsJdXJpID0gcGtjczExX3VyaV9pbml0KCk7Ci0rCWlmICh1cmkgPT0gTlVMTCkK LSsJCWZhdGFsKCJGYWlsZWQgdG8gaW5pdCBQS0NTIzExIFVSSSIpOwotKwotKwlpZiAoc3RybGVu KHByb3ZpZGVyX2lkKSA+PSBzdHJsZW4oUEtDUzExX1VSSV9TQ0hFTUUpICYmCi0rCSAgICBzdHJu Y21wKHByb3ZpZGVyX2lkLCBQS0NTMTFfVVJJX1NDSEVNRSwgc3RybGVuKFBLQ1MxMV9VUklfU0NI RU1FKSkgPT0gMCkgewotKwkJaWYgKHBrY3MxMV91cmlfcGFyc2UocHJvdmlkZXJfaWQsIHVyaSkg IT0gMCkKLSsJCQlmYXRhbCgiRmFpbGVkIHRvIHBhcnNlIFBLQ1MjMTEgVVJJIik7Ci0rCX0gZWxz ZSB7Ci0rCQl1cmktPm1vZHVsZV9wYXRoID0gc3RyZHVwKHByb3ZpZGVyX2lkKTsKLSsJfQotKwot KwlydiA9IHBrY3MxMV9kZWxfcHJvdmlkZXJfYnlfdXJpKHVyaSk7Ci0rCXBrY3MxMV91cmlfY2xl YW51cCh1cmkpOwotKwlyZXR1cm4gcnY7Ci0rfQotKwotKy8qIHVucmVnaXN0ZXIgcHJvdmlkZXIg YnkgUEtDUyMxMSBVUkkgKi8KLStpbnQKLStwa2NzMTFfZGVsX3Byb3ZpZGVyX2J5X3VyaShzdHJ1 Y3QgcGtjczExX3VyaSAqdXJpKQotIHsKLSAJc3RydWN0IHBrY3MxMV9wcm92aWRlciAqcDsKLSsJ aW50IHJ2ID0gLTE7Ci0rCWNoYXIgKnByb3ZpZGVyX3VyaSA9IHBrY3MxMV91cmlfZ2V0KHVyaSk7 Ci0gCi0tCWlmICgocCA9IHBrY3MxMV9wcm92aWRlcl9sb29rdXAocHJvdmlkZXJfaWQpKSAhPSBO VUxMKSB7Ci0rCWRlYnVnM19mKCJjYWxsZWQgd2l0aCBwcm92aWRlciAlcyIsIHByb3ZpZGVyX3Vy aSk7Ci0rCi0rCWlmICgocCA9IHBrY3MxMV9wcm92aWRlcl9sb29rdXAocHJvdmlkZXJfdXJpKSkg IT0gTlVMTCkgewotIAkJVEFJTFFfUkVNT1ZFKCZwa2NzMTFfcHJvdmlkZXJzLCBwLCBuZXh0KTsK LSAJCXBrY3MxMV9wcm92aWRlcl9maW5hbGl6ZShwKTsKLSAJCXBrY3MxMV9wcm92aWRlcl91bnJl ZihwKTsKLS0JCXJldHVybiAoMCk7Ci0rCQlydiA9IDA7Ci0gCX0KLS0JcmV0dXJuICgtMSk7Ci0r CWZyZWUocHJvdmlkZXJfdXJpKTsKLSsJcmV0dXJuIHJ2OwotIH0KLSAKLSAvKiByZWxlYXNlIGEg d3JhcHBlZCBvYmplY3QgKi8KLUBAIC0xODMsNiArMjc2LDcgQEAgcGtjczExX2sxMV9mcmVlKHN0 cnVjdCBwa2NzMTFfa2V5ICprMTEpCi0gCWlmIChrMTEtPnByb3ZpZGVyKQotIAkJcGtjczExX3By b3ZpZGVyX3VucmVmKGsxMS0+cHJvdmlkZXIpOwotIAlmcmVlKGsxMS0+a2V5aWQpOwotKwlmcmVl KGsxMS0+bGFiZWwpOwotIAlzc2hidWZfZnJlZShrMTEtPmtleWJsb2IpOwotIAlmcmVlKGsxMSk7 Ci0gfQotQEAgLTE5OCw4ICsyOTIsOCBAQCBwa2NzMTFfZmluZChzdHJ1Y3QgcGtjczExX3Byb3Zp ZGVyICpwLCBDS19VTE9ORyBzbG90aWR4LCBDS19BVFRSSUJVVEUgKmF0dHIsCi0gCUNLX1JWCQkJ cnY7Ci0gCWludAkJCXJldCA9IC0xOwotIAotLQlmID0gcC0+ZnVuY3Rpb25fbGlzdDsKLS0Jc2Vz c2lvbiA9IHAtPnNsb3RpbmZvW3Nsb3RpZHhdLnNlc3Npb247Ci0rCWYgPSBwLT5tb2R1bGUtPmZ1 bmN0aW9uX2xpc3Q7Ci0rCXNlc3Npb24gPSBwLT5tb2R1bGUtPnNsb3RpbmZvW3Nsb3RpZHhdLnNl c3Npb247Ci0gCWlmICgocnYgPSBmLT5DX0ZpbmRPYmplY3RzSW5pdChzZXNzaW9uLCBhdHRyLCBu YXR0cikpICE9IENLUl9PSykgewotIAkJZXJyb3IoIkNfRmluZE9iamVjdHNJbml0IGZhaWxlZCAo bmF0dHIgJWx1KTogJWx1IiwgbmF0dHIsIHJ2KTsKLSAJCXJldHVybiAoLTEpOwotQEAgLTIzNiwx NCArMzMwLDE0IEBAIHBrY3MxMV9sb2dpbl9zbG90KHN0cnVjdCBwa2NzMTFfcHJvdmlkZXIgKnBy b3ZpZGVyLCBzdHJ1Y3QgcGtjczExX3Nsb3RpbmZvICpzaSwKLSAJaWYgKHNpLT50b2tlbi5mbGFn cyAmIENLRl9QUk9URUNURURfQVVUSEVOVElDQVRJT05fUEFUSCkKLSAJCXZlcmJvc2UoIkRlZmVy cmluZyBQSU4gZW50cnkgdG8gcmVhZGVyIGtleXBhZC4iKTsKLSAJZWxzZSB7Ci0tCQlzbnByaW50 Zihwcm9tcHQsIHNpemVvZihwcm9tcHQpLCAiRW50ZXIgUElOIGZvciAnJXMnOiAiLAotKwkJc25w cmludGYocHJvbXB0LCBzaXplb2YocHJvbXB0KSwgIkVudGVyIFBJTiBmb3IgJyUuMzJzJzogIiwK LSAJCSAgICBzaS0+dG9rZW4ubGFiZWwpOwotLQkJaWYgKChwaW4gPSByZWFkX3Bhc3NwaHJhc2Uo cHJvbXB0LCBSUF9BTExPV19FT0YpKSA9PSBOVUxMKSB7Ci0rCQlpZiAoKHBpbiA9IHJlYWRfcGFz c3BocmFzZShwcm9tcHQsIFJQX0FMTE9XX0VPRnxSUF9BTExPV19TVERJTikpID09IE5VTEwpIHsK LSAJCQlkZWJ1Z19mKCJubyBwaW4gc3BlY2lmaWVkIik7Ci0gCQkJcmV0dXJuICgtMSk7CS8qIGJh aWwgb3V0ICovCi0gCQl9Ci0gCX0KLS0JcnYgPSBwcm92aWRlci0+ZnVuY3Rpb25fbGlzdC0+Q19M b2dpbihzaS0+c2Vzc2lvbiwgdHlwZSwgKHVfY2hhciAqKXBpbiwKLSsJcnYgPSBwcm92aWRlci0+ bW9kdWxlLT5mdW5jdGlvbl9saXN0LT5DX0xvZ2luKHNpLT5zZXNzaW9uLCB0eXBlLCAodV9jaGFy ICopcGluLAotIAkgICAgKHBpbiAhPSBOVUxMKSA/IHN0cmxlbihwaW4pIDogMCk7Ci0gCWlmIChw aW4gIT0gTlVMTCkKLSAJCWZyZWV6ZXJvKHBpbiwgc3RybGVuKHBpbikpOwotQEAgLTI3MywxMyAr MzY3LDE0IEBAIHBrY3MxMV9sb2dpbl9zbG90KHN0cnVjdCBwa2NzMTFfcHJvdmlkZXIgKnByb3Zp ZGVyLCBzdHJ1Y3QgcGtjczExX3Nsb3RpbmZvICpzaSwKLSBzdGF0aWMgaW50Ci0gcGtjczExX2xv Z2luKHN0cnVjdCBwa2NzMTFfa2V5ICprMTEsIENLX1VTRVJfVFlQRSB0eXBlKQotIHsKLS0JaWYg KGsxMSA9PSBOVUxMIHx8IGsxMS0+cHJvdmlkZXIgPT0gTlVMTCB8fCAhazExLT5wcm92aWRlci0+ dmFsaWQpIHsKLSsJaWYgKGsxMSA9PSBOVUxMIHx8IGsxMS0+cHJvdmlkZXIgPT0gTlVMTCB8fCAh azExLT5wcm92aWRlci0+dmFsaWQgfHwKLSsJICAgIGsxMS0+cHJvdmlkZXItPm1vZHVsZSA9PSBO VUxMIHx8ICFrMTEtPnByb3ZpZGVyLT5tb2R1bGUtPnZhbGlkKSB7Ci0gCQllcnJvcigibm8gcGtj czExICh2YWxpZCkgcHJvdmlkZXIgZm91bmQiKTsKLSAJCXJldHVybiAoLTEpOwotIAl9Ci0gCi0g CXJldHVybiBwa2NzMTFfbG9naW5fc2xvdChrMTEtPnByb3ZpZGVyLAotLQkgICAgJmsxMS0+cHJv dmlkZXItPnNsb3RpbmZvW2sxMS0+c2xvdGlkeF0sIHR5cGUpOwotKwkgICAgJmsxMS0+cHJvdmlk ZXItPm1vZHVsZS0+c2xvdGluZm9bazExLT5zbG90aWR4XSwgdHlwZSk7Ci0gfQotIAotIAotQEAg LTI5NSwxMyArMzkwLDE0IEBAIHBrY3MxMV9jaGVja19vYmpfYm9vbF9hdHRyaWIoc3RydWN0IHBr Y3MxMV9rZXkgKmsxMSwgQ0tfT0JKRUNUX0hBTkRMRSBvYmosCi0gCi0gCSp2YWwgPSAwOwotIAot LQlpZiAoIWsxMS0+cHJvdmlkZXIgfHwgIWsxMS0+cHJvdmlkZXItPnZhbGlkKSB7Ci0rCWlmICgh azExLT5wcm92aWRlciB8fCAhazExLT5wcm92aWRlci0+dmFsaWQgfHwKLSsJICAgICFrMTEtPnBy b3ZpZGVyLT5tb2R1bGUgfHwgIWsxMS0+cHJvdmlkZXItPm1vZHVsZS0+dmFsaWQpIHsKLSAJCWVy cm9yKCJubyBwa2NzMTEgKHZhbGlkKSBwcm92aWRlciBmb3VuZCIpOwotIAkJcmV0dXJuICgtMSk7 Ci0gCX0KLSAKLS0JZiA9IGsxMS0+cHJvdmlkZXItPmZ1bmN0aW9uX2xpc3Q7Ci0tCXNpID0gJmsx MS0+cHJvdmlkZXItPnNsb3RpbmZvW2sxMS0+c2xvdGlkeF07Ci0rCWYgPSBrMTEtPnByb3ZpZGVy LT5tb2R1bGUtPmZ1bmN0aW9uX2xpc3Q7Ci0rCXNpID0gJmsxMS0+cHJvdmlkZXItPm1vZHVsZS0+ c2xvdGluZm9bazExLT5zbG90aWR4XTsKLSAKLSAJYXR0ci50eXBlID0gdHlwZTsKLSAJYXR0ci5w VmFsdWUgPSAmZmxhZzsKLUBAIC0zMzIsMTMgKzQyOCwxNCBAQCBwa2NzMTFfZ2V0X2tleShzdHJ1 Y3QgcGtjczExX2tleSAqazExLCBDS19NRUNIQU5JU01fVFlQRSBtZWNoX3R5cGUpCi0gCWludAkJ CSBhbHdheXNfYXV0aCA9IDA7Ci0gCWludAkJCSBkaWRfbG9naW4gPSAwOwotIAotLQlpZiAoIWsx MS0+cHJvdmlkZXIgfHwgIWsxMS0+cHJvdmlkZXItPnZhbGlkKSB7Ci0rCWlmICghazExLT5wcm92 aWRlciB8fCAhazExLT5wcm92aWRlci0+dmFsaWQgfHwKLSsJICAgICFrMTEtPnByb3ZpZGVyLT5t b2R1bGUgfHwgIWsxMS0+cHJvdmlkZXItPm1vZHVsZS0+dmFsaWQpIHsKLSAJCWVycm9yKCJubyBw a2NzMTEgKHZhbGlkKSBwcm92aWRlciBmb3VuZCIpOwotIAkJcmV0dXJuICgtMSk7Ci0gCX0KLSAK LS0JZiA9IGsxMS0+cHJvdmlkZXItPmZ1bmN0aW9uX2xpc3Q7Ci0tCXNpID0gJmsxMS0+cHJvdmlk ZXItPnNsb3RpbmZvW2sxMS0+c2xvdGlkeF07Ci0rCWYgPSBrMTEtPnByb3ZpZGVyLT5tb2R1bGUt PmZ1bmN0aW9uX2xpc3Q7Ci0rCXNpID0gJmsxMS0+cHJvdmlkZXItPm1vZHVsZS0+c2xvdGluZm9b azExLT5zbG90aWR4XTsKLSAKLSAJaWYgKChzaS0+dG9rZW4uZmxhZ3MgJiBDS0ZfTE9HSU5fUkVR VUlSRUQpICYmICFzaS0+bG9nZ2VkX2luKSB7Ci0gCQlpZiAocGtjczExX2xvZ2luKGsxMSwgQ0tV X1VTRVIpIDwgMCkgewotQEAgLTQzNyw2ICs1MzQsMTIgQEAgcGtjczExX3JlY29yZF9rZXkoc3Ry dWN0IHBrY3MxMV9wcm92aWRlciAqcHJvdmlkZXIsIENLX1VMT05HIHNsb3RpZHgsCi0gCQlrMTEt PmtleWlkID0geG1hbGxvYyhrMTEtPmtleWlkX2xlbik7Ci0gCQltZW1jcHkoazExLT5rZXlpZCwg a2V5aWRfYXR0cmliLT5wVmFsdWUsIGsxMS0+a2V5aWRfbGVuKTsKLSAJfQotKwlpZiAoa2V5aWRf YXR0cmliLT51bFZhbHVlTGVuID4gMCApIHsKLSsJCWsxMS0+bGFiZWwgPSB4bWFsbG9jKGtleWlk X2F0dHJpYi0+dWxWYWx1ZUxlbisxKTsKLSsJCW1lbWNweShrMTEtPmxhYmVsLCBrZXlpZF9hdHRy aWItPnBWYWx1ZSwga2V5aWRfYXR0cmliLT51bFZhbHVlTGVuKTsKLSsJCWsxMS0+bGFiZWxba2V5 aWRfYXR0cmliLT51bFZhbHVlTGVuXSA9IDA7Ci0rCX0KLSsKLSAJVEFJTFFfSU5TRVJUX1RBSUwo JnBrY3MxMV9rZXlzLCBrMTEsIG5leHQpOwotIAotIAlyZXR1cm4gMDsKLUBAIC00NjQsNiArNTY3 LDQyIEBAIHBrY3MxMV9sb29rdXBfa2V5KHN0cnVjdCBzc2hrZXkgKmtleSkKLSAJcmV0dXJuIGZv dW5kOwotIH0KLSAKLSsvKgotKyAqIFRoaXMgY2FuJ3QgYmUgaW4gdGhlIHNzaC1wa2NzMTEtdXJp LCBiZWNhc2Ugd2UgY2FuIG5vdCBkZXBlbmQgb24KLSsgKiBQS0NTIzExIHN0cnVjdHVyZXMgaW4g c3NoLWFnZW50ICh1c2luZyBjbGllbnQtaGVscGVyIGNvbW11bmljYXRpb24pCi0rICovCi0raW50 Ci0rcGtjczExX3VyaV93cml0ZShjb25zdCBzdHJ1Y3Qgc3Noa2V5ICprZXksIEZJTEUgKmYpCi0r ewotKwljaGFyICpwID0gTlVMTDsKLSsJc3RydWN0IHBrY3MxMV91cmkgdXJpOwotKwlzdHJ1Y3Qg cGtjczExX2tleSAqazExID0gcGtjczExX2xvb2t1cF9rZXkoa2V5KTsKLSsKLSsJaWYgKGsxMSA9 PSBOVUxMKSB7Ci0rCQllcnJvcigiRmFpbGVkIHRvIGdldCBleF9kYXRhIGZvciBrZXkgdHlwZSAl ZCIsIGtleS0+dHlwZSk7Ci0rCQlyZXR1cm4gKC0xKTsKLSsJfQotKwotKwkvKiBvbWl0IHR5cGUg LS0gd2UgYXJlIGxvb2tpbmcgZm9yIHByaXZhdGUtcHVibGljIG9yIHByaXZhdGUtY2VydGlmaWNh dGUgcGFpcnMgKi8KLSsJdXJpLmlkID0gazExLT5rZXlpZDsKLSsJdXJpLmlkX2xlbiA9IGsxMS0+ a2V5aWRfbGVuOwotKwl1cmkudG9rZW4gPSBrMTEtPnByb3ZpZGVyLT5tb2R1bGUtPnNsb3RpbmZv W2sxMS0+c2xvdGlkeF0udG9rZW4ubGFiZWw7Ci0rCXVyaS5vYmplY3QgPSBrMTEtPmxhYmVsOwot Kwl1cmkubW9kdWxlX3BhdGggPSBrMTEtPnByb3ZpZGVyLT5tb2R1bGUtPm1vZHVsZV9wYXRoOwot Kwl1cmkubGliX21hbnVmID0gazExLT5wcm92aWRlci0+bW9kdWxlLT5pbmZvLm1hbnVmYWN0dXJl cklEOwotKwl1cmkubWFudWYgPSBrMTEtPnByb3ZpZGVyLT5tb2R1bGUtPnNsb3RpbmZvW2sxMS0+ c2xvdGlkeF0udG9rZW4ubWFudWZhY3R1cmVySUQ7Ci0rCXVyaS5zZXJpYWwgPSBrMTEtPnByb3Zp ZGVyLT5tb2R1bGUtPnNsb3RpbmZvW2sxMS0+c2xvdGlkeF0udG9rZW4uc2VyaWFsTnVtYmVyOwot KwotKwlwID0gcGtjczExX3VyaV9nZXQoJnVyaSk7Ci0rCS8qIGRvIG5vdCBjbGVhbnVwIC0tIHdl IGRvIG5vdCBhbGxvY2F0ZSBoZXJlLCBvbmx5IHJlZmVyZW5jZSAqLwotKwlpZiAocCA9PSBOVUxM KQotKwkJcmV0dXJuIC0xOwotKwotKwlmcHJpbnRmKGYsICIgJXMiLCBwKTsKLSsJZnJlZShwKTsK LSsJcmV0dXJuIDA7Ci0rfQotKwotICNpZmRlZiBXSVRIX09QRU5TU0wKLSAvKgotICAqIFNlZToK LUBAIC01NjgsOCArNzA3LDggQEAgcGtjczExX3NpZ25fcnNhKHN0cnVjdCBzc2hrZXkgKmtleSwK LSAJCXJldHVybiBTU0hfRVJSX0FHRU5UX0ZBSUxVUkU7Ci0gCX0KLSAKLS0JZiA9IGsxMS0+cHJv dmlkZXItPmZ1bmN0aW9uX2xpc3Q7Ci0tCXNpID0gJmsxMS0+cHJvdmlkZXItPnNsb3RpbmZvW2sx MS0+c2xvdGlkeF07Ci0rCWYgPSBrMTEtPnByb3ZpZGVyLT5tb2R1bGUtPmZ1bmN0aW9uX2xpc3Q7 Ci0rCXNpID0gJmsxMS0+cHJvdmlkZXItPm1vZHVsZS0+c2xvdGluZm9bazExLT5zbG90aWR4XTsK LSAKLSAJaWYgKChzaWdsZW4gPSBFVlBfUEtFWV9zaXplKGtleS0+cGtleSkpIDw9IDApCi0gCQly ZXR1cm4gU1NIX0VSUl9JTlZBTElEX0FSR1VNRU5UOwotQEAgLTY1OCw4ICs3OTcsOCBAQCBwa2Nz MTFfc2lnbl9lY2RzYShzdHJ1Y3Qgc3Noa2V5ICprZXksCi0gCWRlYnVnM19mKCJzaWduIHVzaW5n IHByb3ZpZGVyICVzIHNsb3RpZHggJWx1IiwKLSAJICAgIGsxMS0+cHJvdmlkZXItPm5hbWUsICh1 X2xvbmcpazExLT5zbG90aWR4KTsKLSAKLS0JZiA9IGsxMS0+cHJvdmlkZXItPmZ1bmN0aW9uX2xp c3Q7Ci0tCXNpID0gJmsxMS0+cHJvdmlkZXItPnNsb3RpbmZvW2sxMS0+c2xvdGlkeF07Ci0rCWYg PSBrMTEtPnByb3ZpZGVyLT5tb2R1bGUtPmZ1bmN0aW9uX2xpc3Q7Ci0rCXNpID0gJmsxMS0+cHJv dmlkZXItPm1vZHVsZS0+c2xvdGluZm9bazExLT5zbG90aWR4XTsKLSAKLSAJLyogUHJlcGFyZSBk aWdlc3QgdG8gYmUgc2lnbmVkICovCi0gCWlmICgoaGFzaGFsZyA9IHNzaGtleV9lY19uaWRfdG9f aGFzaF9hbGcoa2V5LT5lY2RzYV9uaWQpKSA9PSAtMSkKLUBAIC03NDMsOCArODgyLDggQEAgcGtj czExX3NpZ25fZWQyNTUxOShzdHJ1Y3Qgc3Noa2V5ICprZXksCi0gCWRlYnVnM19mKCJzaWduIHVz aW5nIHByb3ZpZGVyICVzIHNsb3RpZHggJWx1IiwKLSAJICAgIGsxMS0+cHJvdmlkZXItPm5hbWUs ICh1X2xvbmcpazExLT5zbG90aWR4KTsKLSAKLS0JZiA9IGsxMS0+cHJvdmlkZXItPmZ1bmN0aW9u X2xpc3Q7Ci0tCXNpID0gJmsxMS0+cHJvdmlkZXItPnNsb3RpbmZvW2sxMS0+c2xvdGlkeF07Ci0r CWYgPSBrMTEtPnByb3ZpZGVyLT5tb2R1bGUtPmZ1bmN0aW9uX2xpc3Q7Ci0rCXNpID0gJmsxMS0+ cHJvdmlkZXItPm1vZHVsZS0+c2xvdGluZm9bazExLT5zbG90aWR4XTsKLSAKLSAJeGRhdGEgPSB4 bWFsbG9jKGRhdGFsZW4pOwotIAltZW1jcHkoeGRhdGEsIGRhdGEsIGRhdGFsZW4pOwotQEAgLTc3 Miw3ICs5MTEsOCBAQCBwa2NzMTFfc2lnbl9lZDI1NTE5KHN0cnVjdCBzc2hrZXkgKmtleSwKLSAJ cmV0dXJuIHJldDsKLSB9Ci0gCi0tLyogcmVtb3ZlIHRyYWlsaW5nIHNwYWNlcyAqLwotKy8qIHJl bW92ZSB0cmFpbGluZyBzcGFjZXMuIE5vdGUsIHRoYXQgdGhpcyBkb2VzIE5PVCBndWFyYW50ZWUg dGhlIGJ1ZmZlcgotKyAqIHdpbGwgYmUgbnVsbCB0ZXJtaW5hdGVkIGlmIHRoZXJlIGFyZSBubyB0 cmFpbGluZyBzcGFjZXMhICovCi0gc3RhdGljIGNoYXIgKgotIHJtc3BhY2UodV9jaGFyICpidWYs IHNpemVfdCBsZW4pCi0gewotQEAgLTgwNCw4ICs5NDQsOCBAQCBwa2NzMTFfb3Blbl9zZXNzaW9u KHN0cnVjdCBwa2NzMTFfcHJvdmlkZXIgKnAsIENLX1VMT05HIHNsb3RpZHgsIGNoYXIgKnBpbiwK LSAJQ0tfU0VTU0lPTl9IQU5ETEUJc2Vzc2lvbjsKLSAJaW50CQkJbG9naW5fcmVxdWlyZWQsIHJl dDsKLSAKLS0JZiA9IHAtPmZ1bmN0aW9uX2xpc3Q7Ci0tCXNpID0gJnAtPnNsb3RpbmZvW3Nsb3Rp ZHhdOwotKwlmID0gcC0+bW9kdWxlLT5mdW5jdGlvbl9saXN0OwotKwlzaSA9ICZwLT5tb2R1bGUt PnNsb3RpbmZvW3Nsb3RpZHhdOwotIAotIAlsb2dpbl9yZXF1aXJlZCA9IHNpLT50b2tlbi5mbGFn cyAmIENLRl9MT0dJTl9SRVFVSVJFRDsKLSAKLUBAIC04MTUsOSArOTU1LDkgQEAgcGtjczExX29w ZW5fc2Vzc2lvbihzdHJ1Y3QgcGtjczExX3Byb3ZpZGVyICpwLCBDS19VTE9ORyBzbG90aWR4LCBj aGFyICpwaW4sCi0gCQllcnJvcigicGluIHJlcXVpcmVkIik7Ci0gCQlyZXR1cm4gKC1TU0hfUEtD UzExX0VSUl9QSU5fUkVRVUlSRUQpOwotIAl9Ci0tCWlmICgocnYgPSBmLT5DX09wZW5TZXNzaW9u KHAtPnNsb3RsaXN0W3Nsb3RpZHhdLCBDS0ZfUldfU0VTU0lPTnwKLSsJaWYgKChydiA9IGYtPkNf T3BlblNlc3Npb24ocC0+bW9kdWxlLT5zbG90bGlzdFtzbG90aWR4XSwgQ0tGX1JXX1NFU1NJT058 Ci0gCSAgICBDS0ZfU0VSSUFMX1NFU1NJT04sIE5VTEwsIE5VTEwsICZzZXNzaW9uKSkgIT0gQ0tS X09LKSB7Ci0tCQllcnJvcigiQ19PcGVuU2Vzc2lvbiBmYWlsZWQ6ICVsdSIsIHJ2KTsKLSsJCWVy cm9yKCJDX09wZW5TZXNzaW9uIGZhaWxlZCBmb3Igc2xvdCAlbHU6ICVsdSIsIHNsb3RpZHgsIHJ2 KTsKLSAJCXJldHVybiAoLTEpOwotIAl9Ci0gCWlmIChsb2dpbl9yZXF1aXJlZCAmJiBwaW4gIT0g TlVMTCAmJiBzdHJsZW4ocGluKSAhPSAwKSB7Ci1AQCAtODU0LDcgKzk5NCw4IEBAIHN0YXRpYyBz dHJ1Y3Qgc3Noa2V5ICoKLSBwa2NzMTFfZmV0Y2hfZWNkc2FfcHVia2V5KHN0cnVjdCBwa2NzMTFf cHJvdmlkZXIgKnAsIENLX1VMT05HIHNsb3RpZHgsCi0gICAgIENLX09CSkVDVF9IQU5ETEUgKm9i aikKLSB7Ci0tCUNLX0FUVFJJQlVURQkJIGtleV9hdHRyWzNdOwotKwlDS19BVFRSSUJVVEUJCSBr ZXlfYXR0cls0XTsKLSsJaW50CQkJIG5hdHRyID0gNDsKLSAJQ0tfU0VTU0lPTl9IQU5ETEUJIHNl c3Npb247Ci0gCUNLX0ZVTkNUSU9OX0xJU1QJKmYgPSBOVUxMOwotIAlDS19SVgkJCSBydjsKLUBA IC04NjcsMTQgKzEwMDgsMTUgQEAgcGtjczExX2ZldGNoX2VjZHNhX3B1YmtleShzdHJ1Y3QgcGtj czExX3Byb3ZpZGVyICpwLCBDS19VTE9ORyBzbG90aWR4LAotIAotIAltZW1zZXQoJmtleV9hdHRy LCAwLCBzaXplb2Yoa2V5X2F0dHIpKTsKLSAJa2V5X2F0dHJbMF0udHlwZSA9IENLQV9JRDsKLS0J a2V5X2F0dHJbMV0udHlwZSA9IENLQV9FQ19QT0lOVDsKLS0Ja2V5X2F0dHJbMl0udHlwZSA9IENL QV9FQ19QQVJBTVM7Ci0rCWtleV9hdHRyWzFdLnR5cGUgPSBDS0FfTEFCRUw7Ci0rCWtleV9hdHRy WzJdLnR5cGUgPSBDS0FfRUNfUE9JTlQ7Ci0rCWtleV9hdHRyWzNdLnR5cGUgPSBDS0FfRUNfUEFS QU1TOwotIAotLQlzZXNzaW9uID0gcC0+c2xvdGluZm9bc2xvdGlkeF0uc2Vzc2lvbjsKLS0JZiA9 IHAtPmZ1bmN0aW9uX2xpc3Q7Ci0rCXNlc3Npb24gPSBwLT5tb2R1bGUtPnNsb3RpbmZvW3Nsb3Rp ZHhdLnNlc3Npb247Ci0rCWYgPSBwLT5tb2R1bGUtPmZ1bmN0aW9uX2xpc3Q7Ci0gCi0gCS8qIGZp Z3VyZSBvdXQgc2l6ZSBvZiB0aGUgYXR0cmlidXRlcyAqLwotLQlydiA9IGYtPkNfR2V0QXR0cmli dXRlVmFsdWUoc2Vzc2lvbiwgKm9iaiwga2V5X2F0dHIsIDMpOwotKwlydiA9IGYtPkNfR2V0QXR0 cmlidXRlVmFsdWUoc2Vzc2lvbiwgKm9iaiwga2V5X2F0dHIsIG5hdHRyKTsKLSAJaWYgKHJ2ICE9 IENLUl9PSykgewotIAkJZXJyb3IoIkNfR2V0QXR0cmlidXRlVmFsdWUgZmFpbGVkOiAlbHUiLCBy dik7Ci0gCQlyZXR1cm4gKE5VTEwpOwotQEAgLTg4NSwxOSArMTAyNywxOSBAQCBwa2NzMTFfZmV0 Y2hfZWNkc2FfcHVia2V5KHN0cnVjdCBwa2NzMTFfcHJvdmlkZXIgKnAsIENLX1VMT05HIHNsb3Rp ZHgsCi0gCSAqIGVuc3VyZSB0aGF0IG5vbmUgb2YgdGhlIG90aGVycyBhcmUgemVybyBsZW5ndGgu Ci0gCSAqIFhYWCBhc3N1bWVzIENLQV9JRCBpcyBhbHdheXMgZmlyc3QuCi0gCSAqLwotLQlpZiAo a2V5X2F0dHJbMV0udWxWYWx1ZUxlbiA9PSAwIHx8Ci0tCSAgICBrZXlfYXR0clsyXS51bFZhbHVl TGVuID09IDApIHsKLSsJaWYgKGtleV9hdHRyWzJdLnVsVmFsdWVMZW4gPT0gMCB8fAotKwkgICAg a2V5X2F0dHJbM10udWxWYWx1ZUxlbiA9PSAwKSB7Ci0gCQllcnJvcigiaW52YWxpZCBhdHRyaWJ1 dGUgbGVuZ3RoIik7Ci0gCQlyZXR1cm4gKE5VTEwpOwotIAl9Ci0gCi0gCS8qIGFsbG9jYXRlIGJ1 ZmZlcnMgZm9yIGF0dHJpYnV0ZXMgKi8KLS0JZm9yIChpID0gMDsgaSA8IDM7IGkrKykKLSsJZm9y IChpID0gMDsgaSA8IG5hdHRyOyBpKyspCi0gCQlpZiAoa2V5X2F0dHJbaV0udWxWYWx1ZUxlbiA+ IDApCi0gCQkJa2V5X2F0dHJbaV0ucFZhbHVlID0geGNhbGxvYygxLCBrZXlfYXR0cltpXS51bFZh bHVlTGVuKTsKLSAKLSAJLyogcmV0cmlldmUgSUQsIHB1YmxpYyBwb2ludCBhbmQgY3VydmUgcGFy YW1ldGVycyBvZiBFQyBrZXkgKi8KLS0JcnYgPSBmLT5DX0dldEF0dHJpYnV0ZVZhbHVlKHNlc3Np b24sICpvYmosIGtleV9hdHRyLCAzKTsKLSsJcnYgPSBmLT5DX0dldEF0dHJpYnV0ZVZhbHVlKHNl c3Npb24sICpvYmosIGtleV9hdHRyLCBuYXR0cik7Ci0gCWlmIChydiAhPSBDS1JfT0spIHsKLSAJ CWVycm9yKCJDX0dldEF0dHJpYnV0ZVZhbHVlIGZhaWxlZDogJWx1IiwgcnYpOwotIAkJZ290byBm YWlsOwotQEAgLTkwOSw4ICsxMDUxLDggQEAgcGtjczExX2ZldGNoX2VjZHNhX3B1YmtleShzdHJ1 Y3QgcGtjczExX3Byb3ZpZGVyICpwLCBDS19VTE9ORyBzbG90aWR4LAotIAkJZ290byBmYWlsOwot IAl9Ci0gCi0tCWF0dHJwID0ga2V5X2F0dHJbMl0ucFZhbHVlOwotLQlncm91cCA9IGQyaV9FQ1BL UGFyYW1ldGVycyhOVUxMLCAmYXR0cnAsIGtleV9hdHRyWzJdLnVsVmFsdWVMZW4pOwotKwlhdHRy cCA9IGtleV9hdHRyWzNdLnBWYWx1ZTsKLSsJZ3JvdXAgPSBkMmlfRUNQS1BhcmFtZXRlcnMoTlVM TCwgJmF0dHJwLCBrZXlfYXR0clszXS51bFZhbHVlTGVuKTsKLSAJaWYgKGdyb3VwID09IE5VTEwp IHsKLSAJCW9zc2xfZXJyb3IoImQyaV9FQ1BLUGFyYW1ldGVycyBmYWlsZWQiKTsKLSAJCWdvdG8g ZmFpbDsKLUBAIC05MjEsMTMgKzEwNjMsMTMgQEAgcGtjczExX2ZldGNoX2VjZHNhX3B1YmtleShz dHJ1Y3QgcGtjczExX3Byb3ZpZGVyICpwLCBDS19VTE9ORyBzbG90aWR4LAotIAkJZ290byBmYWls OwotIAl9Ci0gCi0tCWlmIChrZXlfYXR0clsxXS51bFZhbHVlTGVuIDw9IDIpIHsKLSsJaWYgKGtl eV9hdHRyWzJdLnVsVmFsdWVMZW4gPD0gMikgewotIAkJZXJyb3IoIkNLQV9FQ19QT0lOVCB0b28g c21hbGwiKTsKLSAJCWdvdG8gZmFpbDsKLSAJfQotIAotLQlhdHRycCA9IGtleV9hdHRyWzFdLnBW YWx1ZTsKLS0Jb2N0ZXQgPSBkMmlfQVNOMV9PQ1RFVF9TVFJJTkcoTlVMTCwgJmF0dHJwLCBrZXlf YXR0clsxXS51bFZhbHVlTGVuKTsKLSsJYXR0cnAgPSBrZXlfYXR0clsyXS5wVmFsdWU7Ci0rCW9j dGV0ID0gZDJpX0FTTjFfT0NURVRfU1RSSU5HKE5VTEwsICZhdHRycCwga2V5X2F0dHJbMl0udWxW YWx1ZUxlbik7Ci0gCWlmIChvY3RldCA9PSBOVUxMKSB7Ci0gCQlvc3NsX2Vycm9yKCJkMmlfQVNO MV9PQ1RFVF9TVFJJTkcgZmFpbGVkIik7Ci0gCQlnb3RvIGZhaWw7Ci1AQCAtOTg5LDcgKzExMzEs OCBAQCBzdGF0aWMgc3RydWN0IHNzaGtleSAqCi0gcGtjczExX2ZldGNoX3JzYV9wdWJrZXkoc3Ry dWN0IHBrY3MxMV9wcm92aWRlciAqcCwgQ0tfVUxPTkcgc2xvdGlkeCwKLSAgICAgQ0tfT0JKRUNU X0hBTkRMRSAqb2JqKQotIHsKLS0JQ0tfQVRUUklCVVRFCQkga2V5X2F0dHJbM107Ci0rCUNLX0FU VFJJQlVURQkJIGtleV9hdHRyWzRdOwotKwlpbnQJCQkgbmF0dHIgPSA0OwotIAlDS19TRVNTSU9O X0hBTkRMRQkgc2Vzc2lvbjsKLSAJQ0tfRlVOQ1RJT05fTElTVAkqZiA9IE5VTEw7Ci0gCUNLX1JW CQkJIHJ2OwotQEAgLTEwMDAsMTQgKzExNDMsMTUgQEAgcGtjczExX2ZldGNoX3JzYV9wdWJrZXko c3RydWN0IHBrY3MxMV9wcm92aWRlciAqcCwgQ0tfVUxPTkcgc2xvdGlkeCwKLSAKLSAJbWVtc2V0 KCZrZXlfYXR0ciwgMCwgc2l6ZW9mKGtleV9hdHRyKSk7Ci0gCWtleV9hdHRyWzBdLnR5cGUgPSBD S0FfSUQ7Ci0tCWtleV9hdHRyWzFdLnR5cGUgPSBDS0FfTU9EVUxVUzsKLS0Ja2V5X2F0dHJbMl0u dHlwZSA9IENLQV9QVUJMSUNfRVhQT05FTlQ7Ci0rCWtleV9hdHRyWzFdLnR5cGUgPSBDS0FfTEFC RUw7Ci0rCWtleV9hdHRyWzJdLnR5cGUgPSBDS0FfTU9EVUxVUzsKLSsJa2V5X2F0dHJbM10udHlw ZSA9IENLQV9QVUJMSUNfRVhQT05FTlQ7Ci0gCi0tCXNlc3Npb24gPSBwLT5zbG90aW5mb1tzbG90 aWR4XS5zZXNzaW9uOwotLQlmID0gcC0+ZnVuY3Rpb25fbGlzdDsKLSsJc2Vzc2lvbiA9IHAtPm1v ZHVsZS0+c2xvdGluZm9bc2xvdGlkeF0uc2Vzc2lvbjsKLSsJZiA9IHAtPm1vZHVsZS0+ZnVuY3Rp b25fbGlzdDsKLSAKLSAJLyogZmlndXJlIG91dCBzaXplIG9mIHRoZSBhdHRyaWJ1dGVzICovCi0t CXJ2ID0gZi0+Q19HZXRBdHRyaWJ1dGVWYWx1ZShzZXNzaW9uLCAqb2JqLCBrZXlfYXR0ciwgMyk7 Ci0rCXJ2ID0gZi0+Q19HZXRBdHRyaWJ1dGVWYWx1ZShzZXNzaW9uLCAqb2JqLCBrZXlfYXR0ciwg bmF0dHIpOwotIAlpZiAocnYgIT0gQ0tSX09LKSB7Ci0gCQllcnJvcigiQ19HZXRBdHRyaWJ1dGVW YWx1ZSBmYWlsZWQ6ICVsdSIsIHJ2KTsKLSAJCXJldHVybiAoTlVMTCk7Ci1AQCAtMTAxOCwxOSAr MTE2MiwxOSBAQCBwa2NzMTFfZmV0Y2hfcnNhX3B1YmtleShzdHJ1Y3QgcGtjczExX3Byb3ZpZGVy ICpwLCBDS19VTE9ORyBzbG90aWR4LAotIAkgKiBlbnN1cmUgdGhhdCBub25lIG9mIHRoZSBvdGhl cnMgYXJlIHplcm8gbGVuZ3RoLgotIAkgKiBYWFggYXNzdW1lcyBDS0FfSUQgaXMgYWx3YXlzIGZp cnN0LgotIAkgKi8KLS0JaWYgKGtleV9hdHRyWzFdLnVsVmFsdWVMZW4gPT0gMCB8fAotLQkgICAg a2V5X2F0dHJbMl0udWxWYWx1ZUxlbiA9PSAwKSB7Ci0rCWlmIChrZXlfYXR0clsyXS51bFZhbHVl TGVuID09IDAgfHwKLSsJICAgIGtleV9hdHRyWzNdLnVsVmFsdWVMZW4gPT0gMCkgewotIAkJZXJy b3IoImludmFsaWQgYXR0cmlidXRlIGxlbmd0aCIpOwotIAkJcmV0dXJuIChOVUxMKTsKLSAJfQot IAotIAkvKiBhbGxvY2F0ZSBidWZmZXJzIGZvciBhdHRyaWJ1dGVzICovCi0tCWZvciAoaSA9IDA7 IGkgPCAzOyBpKyspCi0rCWZvciAoaSA9IDA7IGkgPCBuYXR0cjsgaSsrKQotIAkJaWYgKGtleV9h dHRyW2ldLnVsVmFsdWVMZW4gPiAwKQotIAkJCWtleV9hdHRyW2ldLnBWYWx1ZSA9IHhjYWxsb2Mo MSwga2V5X2F0dHJbaV0udWxWYWx1ZUxlbik7Ci0gCi0gCS8qIHJldHJpZXZlIElELCBtb2R1bHVz IGFuZCBwdWJsaWMgZXhwb25lbnQgb2YgUlNBIGtleSAqLwotLQlydiA9IGYtPkNfR2V0QXR0cmli dXRlVmFsdWUoc2Vzc2lvbiwgKm9iaiwga2V5X2F0dHIsIDMpOwotKwlydiA9IGYtPkNfR2V0QXR0 cmlidXRlVmFsdWUoc2Vzc2lvbiwgKm9iaiwga2V5X2F0dHIsIG5hdHRyKTsKLSAJaWYgKHJ2ICE9 IENLUl9PSykgewotIAkJZXJyb3IoIkNfR2V0QXR0cmlidXRlVmFsdWUgZmFpbGVkOiAlbHUiLCBy dik7Ci0gCQlnb3RvIGZhaWw7Ci1AQCAtMTA0Miw4ICsxMTg2LDggQEAgcGtjczExX2ZldGNoX3Jz YV9wdWJrZXkoc3RydWN0IHBrY3MxMV9wcm92aWRlciAqcCwgQ0tfVUxPTkcgc2xvdGlkeCwKLSAJ CWdvdG8gZmFpbDsKLSAJfQotIAotLQlyc2FfbiA9IEJOX2JpbjJibihrZXlfYXR0clsxXS5wVmFs dWUsIGtleV9hdHRyWzFdLnVsVmFsdWVMZW4sIE5VTEwpOwotLQlyc2FfZSA9IEJOX2JpbjJibihr ZXlfYXR0clsyXS5wVmFsdWUsIGtleV9hdHRyWzJdLnVsVmFsdWVMZW4sIE5VTEwpOwotKwlyc2Ff biA9IEJOX2JpbjJibihrZXlfYXR0clsyXS5wVmFsdWUsIGtleV9hdHRyWzJdLnVsVmFsdWVMZW4s IE5VTEwpOwotKwlyc2FfZSA9IEJOX2JpbjJibihrZXlfYXR0clszXS5wVmFsdWUsIGtleV9hdHRy WzNdLnVsVmFsdWVMZW4sIE5VTEwpOwotIAlpZiAocnNhX24gPT0gTlVMTCB8fCByc2FfZSA9PSBO VUxMKSB7Ci0gCQllcnJvcigiQk5fYmluMmJuIGZhaWxlZCIpOwotIAkJZ290byBmYWlsOwotQEAg LTEwNzUsNyArMTIxOSw3IEBAIHBrY3MxMV9mZXRjaF9yc2FfcHVia2V5KHN0cnVjdCBwa2NzMTFf cHJvdmlkZXIgKnAsIENLX1VMT05HIHNsb3RpZHgsCi0gCS8qIHN1Y2Nlc3MgKi8KLSAJc3VjY2Vz cyA9IDA7Ci0gZmFpbDoKLS0JZm9yIChpID0gMDsgaSA8IDM7IGkrKykKLSsJZm9yIChpID0gMDsg aSA8IG5hdHRyOyBpKyspCi0gCQlmcmVlKGtleV9hdHRyW2ldLnBWYWx1ZSk7Ci0gCVJTQV9mcmVl KHJzYSk7Ci0gCWlmIChzdWNjZXNzICE9IDApIHsKLUBAIC0xMDkwLDcgKzEyMzQsOCBAQCBzdGF0 aWMgc3RydWN0IHNzaGtleSAqCi0gcGtjczExX2ZldGNoX2VkMjU1MTlfcHVia2V5KHN0cnVjdCBw a2NzMTFfcHJvdmlkZXIgKnAsIENLX1VMT05HIHNsb3RpZHgsCi0gICAgIENLX09CSkVDVF9IQU5E TEUgKm9iaikKLSB7Ci0tCUNLX0FUVFJJQlVURQkJIGtleV9hdHRyWzNdOwotKwlDS19BVFRSSUJV VEUJCSBrZXlfYXR0cls0XTsKLSsJaW50CQkJIG5hdHRyID0gNDsKLSAJQ0tfU0VTU0lPTl9IQU5E TEUJIHNlc3Npb247Ci0gCUNLX0ZVTkNUSU9OX0xJU1QJKmYgPSBOVUxMOwotIAlDS19SVgkJCSBy djsKLUBAIC0xMTEwLDE0ICsxMjU1LDE1IEBAIHBrY3MxMV9mZXRjaF9lZDI1NTE5X3B1YmtleShz dHJ1Y3QgcGtjczExX3Byb3ZpZGVyICpwLCBDS19VTE9ORyBzbG90aWR4LAotIAotIAltZW1zZXQo JmtleV9hdHRyLCAwLCBzaXplb2Yoa2V5X2F0dHIpKTsKLSAJa2V5X2F0dHJbMF0udHlwZSA9IENL QV9JRDsKLS0Ja2V5X2F0dHJbMV0udHlwZSA9IENLQV9FQ19QT0lOVDsgLyogWFhYIG9yIENLQV9W QUxVRSA/ICovCi0tCWtleV9hdHRyWzJdLnR5cGUgPSBDS0FfRUNfUEFSQU1TOwotKwlrZXlfYXR0 clsxXS50eXBlID0gQ0tBX0xBQkVMOwotKwlrZXlfYXR0clsyXS50eXBlID0gQ0tBX0VDX1BPSU5U OyAvKiBYWFggb3IgQ0tBX1ZBTFVFID8gKi8KLSsJa2V5X2F0dHJbM10udHlwZSA9IENLQV9FQ19Q QVJBTVM7Ci0gCi0tCXNlc3Npb24gPSBwLT5zbG90aW5mb1tzbG90aWR4XS5zZXNzaW9uOwotLQlm ID0gcC0+ZnVuY3Rpb25fbGlzdDsKLSsJc2Vzc2lvbiA9IHAtPm1vZHVsZS0+c2xvdGluZm9bc2xv dGlkeF0uc2Vzc2lvbjsKLSsJZiA9IHAtPm1vZHVsZS0+ZnVuY3Rpb25fbGlzdDsKLSAKLSAJLyog ZmlndXJlIG91dCBzaXplIG9mIHRoZSBhdHRyaWJ1dGVzICovCi0tCXJ2ID0gZi0+Q19HZXRBdHRy aWJ1dGVWYWx1ZShzZXNzaW9uLCAqb2JqLCBrZXlfYXR0ciwgMyk7Ci0rCXJ2ID0gZi0+Q19HZXRB dHRyaWJ1dGVWYWx1ZShzZXNzaW9uLCAqb2JqLCBrZXlfYXR0ciwgbmF0dHIpOwotIAlpZiAocnYg IT0gQ0tSX09LKSB7Ci0gCQllcnJvcigiQ19HZXRBdHRyaWJ1dGVWYWx1ZSBmYWlsZWQ6ICVsdSIs IHJ2KTsKLSAJCXJldHVybiAoTlVMTCk7Ci1AQCAtMTEyOCwyOCArMTI3NCwyOCBAQCBwa2NzMTFf ZmV0Y2hfZWQyNTUxOV9wdWJrZXkoc3RydWN0IHBrY3MxMV9wcm92aWRlciAqcCwgQ0tfVUxPTkcg c2xvdGlkeCwKLSAJICogZW5zdXJlIHRoYXQgbm9uZSBvZiB0aGUgb3RoZXJzIGFyZSB6ZXJvIGxl bmd0aC4KLSAJICogWFhYIGFzc3VtZXMgQ0tBX0lEIGlzIGFsd2F5cyBmaXJzdC4KLSAJICovCi0t CWlmIChrZXlfYXR0clsxXS51bFZhbHVlTGVuID09IDAgfHwKLS0JICAgIGtleV9hdHRyWzJdLnVs VmFsdWVMZW4gPT0gMCkgewotKwlpZiAoa2V5X2F0dHJbMl0udWxWYWx1ZUxlbiA9PSAwIHx8Ci0r CSAgICBrZXlfYXR0clszXS51bFZhbHVlTGVuID09IDApIHsKLSAJCWVycm9yKCJpbnZhbGlkIGF0 dHJpYnV0ZSBsZW5ndGgiKTsKLSAJCXJldHVybiAoTlVMTCk7Ci0gCX0KLSAKLSAJLyogYWxsb2Nh dGUgYnVmZmVycyBmb3IgYXR0cmlidXRlcyAqLwotLQlmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKSB7 Ci0rCWZvciAoaSA9IDA7IGkgPCBuYXR0cjsgaSsrKSB7Ci0gCQlpZiAoa2V5X2F0dHJbaV0udWxW YWx1ZUxlbiA+IDApCi0gCQkJa2V5X2F0dHJbaV0ucFZhbHVlID0geGNhbGxvYygxLCBrZXlfYXR0 cltpXS51bFZhbHVlTGVuKTsKLSAJfQotIAotIAkvKiByZXRyaWV2ZSBJRCwgcHVibGljIHBvaW50 IGFuZCBjdXJ2ZSBwYXJhbWV0ZXJzIG9mIEVDIGtleSAqLwotLQlydiA9IGYtPkNfR2V0QXR0cmli dXRlVmFsdWUoc2Vzc2lvbiwgKm9iaiwga2V5X2F0dHIsIDMpOwotKwlydiA9IGYtPkNfR2V0QXR0 cmlidXRlVmFsdWUoc2Vzc2lvbiwgKm9iaiwga2V5X2F0dHIsIG5hdHRyKTsKLSAJaWYgKHJ2ICE9 IENLUl9PSykgewotIAkJZXJyb3IoIkNfR2V0QXR0cmlidXRlVmFsdWUgZmFpbGVkOiAlbHUiLCBy dik7Ci0gCQlnb3RvIGZhaWw7Ci0gCX0KLSAKLSAJLyogRXhwZWN0IG9uZSBvZiB0aGUgc3VwcG9y dGVkIGlkZW50aWZpZXJzIGluIENLQV9FQ19QQVJBTVMgKi8KLS0JZCA9ICh1X2NoYXIgKilrZXlf YXR0clsyXS5wVmFsdWU7Ci0tCWxlbiA9IGtleV9hdHRyWzJdLnVsVmFsdWVMZW47Ci0rCWQgPSAo dV9jaGFyICopa2V5X2F0dHJbM10ucFZhbHVlOwotKwlsZW4gPSBrZXlfYXR0clszXS51bFZhbHVl TGVuOwotIAlpZiAoKGxlbiAhPSBzaXplb2YoaWQxKSB8fCBtZW1jbXAoZCwgaWQxLCBzaXplb2Yo aWQxKSkgIT0gMCkgJiYKLSAJICAgIChsZW4gIT0gc2l6ZW9mKGlkMikgfHwgbWVtY21wKGQsIGlk Miwgc2l6ZW9mKGlkMikpICE9IDApKSB7Ci0gCQloZXggPSB0b2hleChkLCBsZW4pOwotQEAgLTEx NjEsMTYgKzEzMDcsMTYgQEAgcGtjczExX2ZldGNoX2VkMjU1MTlfcHVia2V5KHN0cnVjdCBwa2Nz MTFfcHJvdmlkZXIgKnAsIENLX1VMT05HIHNsb3RpZHgsCi0gCSAqIEV4cGVjdCBlaXRoZXIgYSBy YXcgMzIgYnl0ZSBwdWJrZXkgb3IgYW4gT0NURVQgU1RSSU5HIHdpdGgKLSAJICogYSAzMiBieXRl IHB1YmtleSBpbiBDS0FfVkFMVUUKLSAJICovCi0tCWQgPSAodV9jaGFyICopa2V5X2F0dHJbMV0u cFZhbHVlOwotLQlsZW4gPSBrZXlfYXR0clsxXS51bFZhbHVlTGVuOwotKwlkID0gKHVfY2hhciAq KWtleV9hdHRyWzJdLnBWYWx1ZTsKLSsJbGVuID0ga2V5X2F0dHJbMl0udWxWYWx1ZUxlbjsKLSAJ aWYgKGxlbiA9PSBFRDI1NTE5X1BLX1NaICsgMiAmJiBkWzBdID09IDB4MDQgJiYgZFsxXSA9PSBF RDI1NTE5X1BLX1NaKSB7Ci0gCQlkICs9IDI7Ci0gCQlsZW4gLT0gMjsKLSAJfQotIAlpZiAobGVu ICE9IEVEMjU1MTlfUEtfU1opIHsKLS0JCWhleCA9IHRvaGV4KGtleV9hdHRyWzFdLnBWYWx1ZSwg a2V5X2F0dHJbMV0udWxWYWx1ZUxlbik7Ci0rCQloZXggPSB0b2hleChrZXlfYXR0clsyXS5wVmFs dWUsIGtleV9hdHRyWzJdLnVsVmFsdWVMZW4pOwotIAkJbG9naXRfZigiQ0tBX0VDX1BPSU5UIGlu dmFsaWQgb2N0ZXQgc3RyOiAlcyAobGVuICVsdSkiLAotLQkJICAgIGhleCwgKHVfbG9uZylrZXlf YXR0clsxXS51bFZhbHVlTGVuKTsKLSsJCSAgICBoZXgsICh1X2xvbmcpa2V5X2F0dHJbMl0udWxW YWx1ZUxlbik7Ci0gCQlnb3RvIGZhaWw7Ci0gCX0KLSAKLUBAIC0xMTkwLDcgKzEzMzYsNyBAQCBw a2NzMTFfZmV0Y2hfZWQyNTUxOV9wdWJrZXkoc3RydWN0IHBrY3MxMV9wcm92aWRlciAqcCwgQ0tf VUxPTkcgc2xvdGlkeCwKLSAJCWtleSA9IE5VTEw7Ci0gCX0KLSAJZnJlZShoZXgpOwotLQlmb3Ig KGkgPSAwOyBpIDwgMzsgaSsrKQotKwlmb3IgKGkgPSAwOyBpIDwgbmF0dHI7IGkrKykKLSAJCWZy ZWUoa2V5X2F0dHJbaV0ucFZhbHVlKTsKLSAJcmV0dXJuIGtleTsKLSB9Ci1AQCAtMTIwMCw3ICsx MzQ2LDggQEAgc3RhdGljIGludAotIHBrY3MxMV9mZXRjaF94NTA5X3B1YmtleShzdHJ1Y3QgcGtj czExX3Byb3ZpZGVyICpwLCBDS19VTE9ORyBzbG90aWR4LAotICAgICBDS19PQkpFQ1RfSEFORExF ICpvYmosIHN0cnVjdCBzc2hrZXkgKiprZXlwLCBjaGFyICoqbGFiZWxwKQotIHsKLS0JQ0tfQVRU UklCVVRFCQkgY2VydF9hdHRyWzNdOwotKwlDS19BVFRSSUJVVEUJCSBjZXJ0X2F0dHJbNF07Ci0r CWludAkJCSBuYXR0ciA9IDQ7Ci0gCUNLX1NFU1NJT05fSEFORExFCSBzZXNzaW9uOwotIAlDS19G VU5DVElPTl9MSVNUCSpmID0gTlVMTDsKLSAJQ0tfUlYJCQkgcnY7Ci1AQCAtMTIyNiwxNCArMTM3 MywxNSBAQCBwa2NzMTFfZmV0Y2hfeDUwOV9wdWJrZXkoc3RydWN0IHBrY3MxMV9wcm92aWRlciAq cCwgQ0tfVUxPTkcgc2xvdGlkeCwKLSAKLSAJbWVtc2V0KCZjZXJ0X2F0dHIsIDAsIHNpemVvZihj ZXJ0X2F0dHIpKTsKLSAJY2VydF9hdHRyWzBdLnR5cGUgPSBDS0FfSUQ7Ci0tCWNlcnRfYXR0clsx XS50eXBlID0gQ0tBX1NVQkpFQ1Q7Ci0tCWNlcnRfYXR0clsyXS50eXBlID0gQ0tBX1ZBTFVFOwot KwljZXJ0X2F0dHJbMV0udHlwZSA9IENLQV9MQUJFTDsKLSsJY2VydF9hdHRyWzJdLnR5cGUgPSBD S0FfU1VCSkVDVDsKLSsJY2VydF9hdHRyWzNdLnR5cGUgPSBDS0FfVkFMVUU7Ci0gCi0tCXNlc3Np b24gPSBwLT5zbG90aW5mb1tzbG90aWR4XS5zZXNzaW9uOwotLQlmID0gcC0+ZnVuY3Rpb25fbGlz dDsKLSsJc2Vzc2lvbiA9IHAtPm1vZHVsZS0+c2xvdGluZm9bc2xvdGlkeF0uc2Vzc2lvbjsKLSsJ ZiA9IHAtPm1vZHVsZS0+ZnVuY3Rpb25fbGlzdDsKLSAKLSAJLyogZmlndXJlIG91dCBzaXplIG9m IHRoZSBhdHRyaWJ1dGVzICovCi0tCXJ2ID0gZi0+Q19HZXRBdHRyaWJ1dGVWYWx1ZShzZXNzaW9u LCAqb2JqLCBjZXJ0X2F0dHIsIDMpOwotKwlydiA9IGYtPkNfR2V0QXR0cmlidXRlVmFsdWUoc2Vz c2lvbiwgKm9iaiwgY2VydF9hdHRyLCBuYXR0cik7Ci0gCWlmIChydiAhPSBDS1JfT0spIHsKLSAJ CWVycm9yKCJDX0dldEF0dHJpYnV0ZVZhbHVlIGZhaWxlZDogJWx1IiwgcnYpOwotIAkJcmV0dXJu IC0xOwotQEAgLTEyNDUsMTggKzEzOTMsMTkgQEAgcGtjczExX2ZldGNoX3g1MDlfcHVia2V5KHN0 cnVjdCBwa2NzMTFfcHJvdmlkZXIgKnAsIENLX1VMT05HIHNsb3RpZHgsCi0gCSAqIFhYWCBhc3N1 bWVzIENLQV9JRCBpcyBhbHdheXMgZmlyc3QuCi0gCSAqLwotIAlpZiAoY2VydF9hdHRyWzFdLnVs VmFsdWVMZW4gPT0gMCB8fAotLQkgICAgY2VydF9hdHRyWzJdLnVsVmFsdWVMZW4gPT0gMCkgewot KwkgICAgY2VydF9hdHRyWzJdLnVsVmFsdWVMZW4gPT0gMCB8fAotKwkgICAgY2VydF9hdHRyWzNd LnVsVmFsdWVMZW4gPT0gMCkgewotIAkJZXJyb3IoImludmFsaWQgYXR0cmlidXRlIGxlbmd0aCIp OwotIAkJcmV0dXJuIC0xOwotIAl9Ci0gCi0gCS8qIGFsbG9jYXRlIGJ1ZmZlcnMgZm9yIGF0dHJp YnV0ZXMgKi8KLS0JZm9yIChpID0gMDsgaSA8IDM7IGkrKykKLSsJZm9yIChpID0gMDsgaSA8IG5h dHRyOyBpKyspCi0gCQlpZiAoY2VydF9hdHRyW2ldLnVsVmFsdWVMZW4gPiAwKQotIAkJCWNlcnRf YXR0cltpXS5wVmFsdWUgPSB4Y2FsbG9jKDEsIGNlcnRfYXR0cltpXS51bFZhbHVlTGVuKTsKLSAK LSAJLyogcmV0cmlldmUgSUQsIHN1YmplY3QgYW5kIHZhbHVlIG9mIGNlcnRpZmljYXRlICovCi0t CXJ2ID0gZi0+Q19HZXRBdHRyaWJ1dGVWYWx1ZShzZXNzaW9uLCAqb2JqLCBjZXJ0X2F0dHIsIDMp OwotKwlydiA9IGYtPkNfR2V0QXR0cmlidXRlVmFsdWUoc2Vzc2lvbiwgKm9iaiwgY2VydF9hdHRy LCBuYXR0cik7Ci0gCWlmIChydiAhPSBDS1JfT0spIHsKLSAJCWVycm9yKCJDX0dldEF0dHJpYnV0 ZVZhbHVlIGZhaWxlZDogJWx1IiwgcnYpOwotIAkJZ290byBvdXQ7Ci1AQCAtMTI3MCw4ICsxNDE5 LDggQEAgcGtjczExX2ZldGNoX3g1MDlfcHVia2V5KHN0cnVjdCBwa2NzMTFfcHJvdmlkZXIgKnAs IENLX1VMT05HIHNsb3RpZHgsCi0gCQlzdWJqZWN0ID0geHN0cmR1cCgiaW52YWxpZCBzdWJqZWN0 Iik7Ci0gCVg1MDlfTkFNRV9mcmVlKHg1MDlfbmFtZSk7Ci0gCi0tCWNwID0gY2VydF9hdHRyWzJd LnBWYWx1ZTsKLS0JaWYgKCh4NTA5ID0gZDJpX1g1MDkoTlVMTCwgJmNwLCBjZXJ0X2F0dHJbMl0u dWxWYWx1ZUxlbikpID09IE5VTEwpIHsKLSsJY3AgPSBjZXJ0X2F0dHJbM10ucFZhbHVlOwotKwlp ZiAoKHg1MDkgPSBkMmlfWDUwOShOVUxMLCAmY3AsIGNlcnRfYXR0clszXS51bFZhbHVlTGVuKSkg PT0gTlVMTCkgewotIAkJZXJyb3IoImQyaV94NTA5IGZhaWxlZCIpOwotIAkJZ290byBvdXQ7Ci0g CX0KLUBAIC0xMzgxLDcgKzE1MzAsNyBAQCBwa2NzMTFfZmV0Y2hfeDUwOV9wdWJrZXkoc3RydWN0 IHBrY3MxMV9wcm92aWRlciAqcCwgQ0tfVUxPTkcgc2xvdGlkeCwKLSAJCWdvdG8gb3V0OwotIAl9 Ci0gIG91dDoKLS0JZm9yIChpID0gMDsgaSA8IDM7IGkrKykKLSsJZm9yIChpID0gMDsgaSA8IG5h dHRyOyBpKyspCi0gCQlmcmVlKGNlcnRfYXR0cltpXS5wVmFsdWUpOwotIAlYNTA5X2ZyZWUoeDUw OSk7Ci0gCVJTQV9mcmVlKHJzYSk7Ci1AQCAtMTQyNCwxMSArMTU3MywxMiBAQCBub3RlX2tleShz dHJ1Y3QgcGtjczExX3Byb3ZpZGVyICpwLCBDS19VTE9ORyBzbG90aWR4LCBjb25zdCBjaGFyICpj b250ZXh0LAotICAqLwotIHN0YXRpYyBpbnQKLSBwa2NzMTFfZmV0Y2hfY2VydHMoc3RydWN0IHBr Y3MxMV9wcm92aWRlciAqcCwgQ0tfVUxPTkcgc2xvdGlkeCwKLS0gICAgc3RydWN0IHNzaGtleSAq KiprZXlzcCwgY2hhciAqKipsYWJlbHNwLCBpbnQgKm5rZXlzKQotKyAgICBzdHJ1Y3Qgc3Noa2V5 ICoqKmtleXNwLCBjaGFyICoqKmxhYmVsc3AsIGludCAqbmtleXMsIHN0cnVjdCBwa2NzMTFfdXJp ICp1cmkpCi0gewotIAlzdHJ1Y3Qgc3Noa2V5CQkqa2V5ID0gTlVMTDsKLSAJQ0tfT0JKRUNUX0NM QVNTCQkga2V5X2NsYXNzOwotLQlDS19BVFRSSUJVVEUJCSBrZXlfYXR0clsxXTsKLSsJQ0tfQVRU UklCVVRFCQkga2V5X2F0dHJbM107Ci0rCWludAkJCSBuYXR0ciA9IDE7Ci0gCUNLX1NFU1NJT05f SEFORExFCSBzZXNzaW9uOwotIAlDS19GVU5DVElPTl9MSVNUCSpmID0gTlVMTDsKLSAJQ0tfUlYJ CQkgcnY7Ci1AQCAtMTQ0NSwxMCArMTU5NSwyMyBAQCBwa2NzMTFfZmV0Y2hfY2VydHMoc3RydWN0 IHBrY3MxMV9wcm92aWRlciAqcCwgQ0tfVUxPTkcgc2xvdGlkeCwKLSAJa2V5X2F0dHJbMF0ucFZh bHVlID0gJmtleV9jbGFzczsKLSAJa2V5X2F0dHJbMF0udWxWYWx1ZUxlbiA9IHNpemVvZihrZXlf Y2xhc3MpOwotIAotLQlzZXNzaW9uID0gcC0+c2xvdGluZm9bc2xvdGlkeF0uc2Vzc2lvbjsKLS0J ZiA9IHAtPmZ1bmN0aW9uX2xpc3Q7Ci0rCWlmICh1cmktPmlkICE9IE5VTEwpIHsKLSsJCWtleV9h dHRyW25hdHRyXS50eXBlID0gQ0tBX0lEOwotKwkJa2V5X2F0dHJbbmF0dHJdLnBWYWx1ZSA9IHVy aS0+aWQ7Ci0rCQlrZXlfYXR0cltuYXR0cl0udWxWYWx1ZUxlbiA9IHVyaS0+aWRfbGVuOwotKwkJ bmF0dHIrKzsKLSsJfQotKwlpZiAodXJpLT5vYmplY3QgIT0gTlVMTCkgewotKwkJa2V5X2F0dHJb bmF0dHJdLnR5cGUgPSBDS0FfTEFCRUw7Ci0rCQlrZXlfYXR0cltuYXR0cl0ucFZhbHVlID0gdXJp LT5vYmplY3Q7Ci0rCQlrZXlfYXR0cltuYXR0cl0udWxWYWx1ZUxlbiA9IHN0cmxlbih1cmktPm9i amVjdCk7Ci0rCQluYXR0cisrOwotKwl9Ci0rCi0rCXNlc3Npb24gPSBwLT5tb2R1bGUtPnNsb3Rp bmZvW3Nsb3RpZHhdLnNlc3Npb247Ci0rCWYgPSBwLT5tb2R1bGUtPmZ1bmN0aW9uX2xpc3Q7Ci0g Ci0tCXJ2ID0gZi0+Q19GaW5kT2JqZWN0c0luaXQoc2Vzc2lvbiwga2V5X2F0dHIsIDEpOwotKwly diA9IGYtPkNfRmluZE9iamVjdHNJbml0KHNlc3Npb24sIGtleV9hdHRyLCBuYXR0cik7Ci0gCWlm IChydiAhPSBDS1JfT0spIHsKLSAJCWVycm9yKCJDX0ZpbmRPYmplY3RzSW5pdCBmYWlsZWQ6ICVs dSIsIHJ2KTsKLSAJCWdvdG8gZmFpbDsKLUBAIC0xNTIxLDYgKzE2ODQsMTMgQEAgZmFpbDoKLSAK LSAJcmV0dXJuIChyZXQpOwotIH0KLSsjZWxzZQotK3N0YXRpYyBpbnQKLStwa2NzMTFfZmV0Y2hf Y2VydHMoc3RydWN0IHBrY3MxMV9wcm92aWRlciAqcCwgQ0tfVUxPTkcgc2xvdGlkeCwKLSsgICAg c3RydWN0IHNzaGtleSAqKiprZXlzcCwgY2hhciAqKipsYWJlbHNwLCBpbnQgKm5rZXlzLCBzdHJ1 Y3QgcGtjczExX3VyaSAqdXJpKQotK3sKLSsJcmV0dXJuIDA7Ci0rfQotICNlbmRpZiAvKiBXSVRI X09QRU5TU0wgKi8KLSAKLSAvKgotQEAgLTE1MzAsMTEgKzE3MDAsMTIgQEAgZmFpbDoKLSAgKi8K LSBzdGF0aWMgaW50Ci0gcGtjczExX2ZldGNoX2tleXMoc3RydWN0IHBrY3MxMV9wcm92aWRlciAq cCwgQ0tfVUxPTkcgc2xvdGlkeCwKLS0gICAgc3RydWN0IHNzaGtleSAqKiprZXlzcCwgY2hhciAq KipsYWJlbHNwLCBpbnQgKm5rZXlzKQotKyAgICBzdHJ1Y3Qgc3Noa2V5ICoqKmtleXNwLCBjaGFy ICoqKmxhYmVsc3AsIGludCAqbmtleXMsIHN0cnVjdCBwa2NzMTFfdXJpICp1cmkpCi0gewotIAlz dHJ1Y3Qgc3Noa2V5CQkqa2V5ID0gTlVMTDsKLSAJQ0tfT0JKRUNUX0NMQVNTCQkga2V5X2NsYXNz OwotLQlDS19BVFRSSUJVVEUJCSBrZXlfYXR0clsyXTsKLSsJQ0tfQVRUUklCVVRFCQkga2V5X2F0 dHJbM107Ci0rCWludAkJCSBuYXR0ciA9IDE7Ci0gCUNLX1NFU1NJT05fSEFORExFCSBzZXNzaW9u OwotIAlDS19GVU5DVElPTl9MSVNUCSpmID0gTlVMTDsKLSAJQ0tfUlYJCQkgcnY7Ci1AQCAtMTU1 MCwxMCArMTcyMSwyMyBAQCBwa2NzMTFfZmV0Y2hfa2V5cyhzdHJ1Y3QgcGtjczExX3Byb3ZpZGVy ICpwLCBDS19VTE9ORyBzbG90aWR4LAotIAlrZXlfYXR0clswXS5wVmFsdWUgPSAma2V5X2NsYXNz OwotIAlrZXlfYXR0clswXS51bFZhbHVlTGVuID0gc2l6ZW9mKGtleV9jbGFzcyk7Ci0gCi0tCXNl c3Npb24gPSBwLT5zbG90aW5mb1tzbG90aWR4XS5zZXNzaW9uOwotLQlmID0gcC0+ZnVuY3Rpb25f bGlzdDsKLSsJaWYgKHVyaS0+aWQgIT0gTlVMTCkgewotKwkJa2V5X2F0dHJbbmF0dHJdLnR5cGUg PSBDS0FfSUQ7Ci0rCQlrZXlfYXR0cltuYXR0cl0ucFZhbHVlID0gdXJpLT5pZDsKLSsJCWtleV9h dHRyW25hdHRyXS51bFZhbHVlTGVuID0gdXJpLT5pZF9sZW47Ci0rCQluYXR0cisrOwotKwl9Ci0r CWlmICh1cmktPm9iamVjdCAhPSBOVUxMKSB7Ci0rCQlrZXlfYXR0cltuYXR0cl0udHlwZSA9IENL QV9MQUJFTDsKLSsJCWtleV9hdHRyW25hdHRyXS5wVmFsdWUgPSB1cmktPm9iamVjdDsKLSsJCWtl eV9hdHRyW25hdHRyXS51bFZhbHVlTGVuID0gc3RybGVuKHVyaS0+b2JqZWN0KTsKLSsJCW5hdHRy Kys7Ci0rCX0KLSsKLSsJc2Vzc2lvbiA9IHAtPm1vZHVsZS0+c2xvdGluZm9bc2xvdGlkeF0uc2Vz c2lvbjsKLSsJZiA9IHAtPm1vZHVsZS0+ZnVuY3Rpb25fbGlzdDsKLSAKLS0JcnYgPSBmLT5DX0Zp bmRPYmplY3RzSW5pdChzZXNzaW9uLCBrZXlfYXR0ciwgMSk7Ci0rCXJ2ID0gZi0+Q19GaW5kT2Jq ZWN0c0luaXQoc2Vzc2lvbiwga2V5X2F0dHIsIG5hdHRyKTsKLSAJaWYgKHJ2ICE9IENLUl9PSykg ewotIAkJZXJyb3IoIkNfRmluZE9iamVjdHNJbml0IGZhaWxlZDogJWx1IiwgcnYpOwotIAkJZ290 byBmYWlsOwotQEAgLTE4NDEsMTYgKzIwMjUsMTAgQEAgcGtjczExX2VjZHNhX2dlbmVyYXRlX3By aXZhdGVfa2V5KHN0cnVjdCBwa2NzMTFfcHJvdmlkZXIgKnAsIENLX1VMT05HIHNsb3RpZHgsCi0g fQotICNlbmRpZiAvKiBXSVRIX1BLQ1MxMV9LRVlHRU4gKi8KLSAKLS0vKgotLSAqIHJlZ2lzdGVy IGEgbmV3IHByb3ZpZGVyLCBmYWlscyBpZiBwcm92aWRlciBhbHJlYWR5IGV4aXN0cy4gaWYKLS0g KiBrZXlwIGlzIHByb3ZpZGVkLCBmZXRjaCBrZXlzLgotLSAqLwotIHN0YXRpYyBpbnQKLS1wa2Nz MTFfcmVnaXN0ZXJfcHJvdmlkZXIoY2hhciAqcHJvdmlkZXJfaWQsIGNoYXIgKnBpbiwKLS0gICAg c3RydWN0IHNzaGtleSAqKiprZXlwLCBjaGFyICoqKmxhYmVsc3AsCi0tICAgIHN0cnVjdCBwa2Nz MTFfcHJvdmlkZXIgKipwcm92aWRlcnAsIENLX1VMT05HIHVzZXIpCi0rcGtjczExX2luaXRpYWxp emVfcHJvdmlkZXIoc3RydWN0IHBrY3MxMV91cmkgKnVyaSwgc3RydWN0IHBrY3MxMV9wcm92aWRl ciAqKnByb3ZpZGVycCkKLSB7Ci0tCWludCBua2V5cywgbmVlZF9maW5hbGl6ZSA9IDA7Ci0rCWlu dCBuZWVkX2ZpbmFsaXplID0gMDsKLSAJaW50IHJldCA9IC0xOwotIAlzdHJ1Y3QgcGtjczExX3By b3ZpZGVyICpwID0gTlVMTDsKLSAJdm9pZCAqaGFuZGxlID0gTlVMTDsKLUBAIC0xODU5LDEyOCAr MjAzNywxMjYgQEAgcGtjczExX3JlZ2lzdGVyX3Byb3ZpZGVyKGNoYXIgKnByb3ZpZGVyX2lkLCBj aGFyICpwaW4sCi0gCUNLX0ZVTkNUSU9OX0xJU1QgKmYgPSBOVUxMOwotIAlDS19UT0tFTl9JTkZP ICp0b2tlbjsKLSAJQ0tfVUxPTkcgaTsKLSsJY2hhciAqcHJvdmlkZXJfbW9kdWxlID0gTlVMTDsK LSsJc3RydWN0IHBrY3MxMV9tb2R1bGUgKm0gPSBOVUxMOwotKwotKwkvKiBpZiBubyBwcm92aWRl ciBzcGVjaWZpZWQsIGZhbGxiYWNrIHRvIHAxMS1raXQgKi8KLSsJaWYgKHVyaS0+bW9kdWxlX3Bh dGggPT0gTlVMTCkgewotKyNpZmRlZiBQS0NTMTFfREVGQVVMVF9QUk9WSURFUgotKwkJcHJvdmlk ZXJfbW9kdWxlID0gc3RyZHVwKFBLQ1MxMV9ERUZBVUxUX1BST1ZJREVSKTsKLSsjZWxzZQotKwkJ ZXJyb3JfZigiTm8gbW9kdWxlIHBhdGggcHJvdmlkZWQiKTsKLSsgCQlnb3RvIGZhaWw7Ci0rI2Vu ZGlmCi0rCX0gZWxzZSB7Ci0rCQlwcm92aWRlcl9tb2R1bGUgPSBzdHJkdXAodXJpLT5tb2R1bGVf cGF0aCk7Ci0rCX0KLSsJcCA9IHhjYWxsb2MoMSwgc2l6ZW9mKCpwKSk7Ci0rCXAtPm5hbWUgPSBw a2NzMTFfdXJpX2dldCh1cmkpOwotIAotLQlpZiAocHJvdmlkZXJwID09IE5VTEwpCi0tCQlnb3Rv IGZhaWw7Ci0tCSpwcm92aWRlcnAgPSBOVUxMOwotLQotLQlpZiAoa2V5cCAhPSBOVUxMKQotLQkJ KmtleXAgPSBOVUxMOwotLQlpZiAobGFiZWxzcCAhPSBOVUxMKQotLQkJKmxhYmVsc3AgPSBOVUxM OwotLQotLQlpZiAocGtjczExX3Byb3ZpZGVyX2xvb2t1cChwcm92aWRlcl9pZCkgIT0gTlVMTCkg ewotLQkJZGVidWdfZigicHJvdmlkZXIgYWxyZWFkeSByZWdpc3RlcmVkOiAlcyIsIHByb3ZpZGVy X2lkKTsKLSsJaWYgKGxpYl9jb250YWluc19zeW1ib2wocHJvdmlkZXJfbW9kdWxlLCAiQ19HZXRG dW5jdGlvbkxpc3QiKSAhPSAwKSB7Ci0rCQllcnJvcigicHJvdmlkZXIgJXMgaXMgbm90IGEgUEtD UzExIGxpYnJhcnkiLCBwcm92aWRlcl9tb2R1bGUpOwotIAkJZ290byBmYWlsOwotIAl9Ci0tCWlm IChsaWJfY29udGFpbnNfc3ltYm9sKHByb3ZpZGVyX2lkLCAiQ19HZXRGdW5jdGlvbkxpc3QiKSAh PSAwKSB7Ci0tCQllcnJvcigicHJvdmlkZXIgJXMgaXMgbm90IGEgUEtDUzExIGxpYnJhcnkiLCBw cm92aWRlcl9pZCk7Ci0tCQlnb3RvIGZhaWw7Ci0rCWlmICgobSA9IHBrY3MxMV9wcm92aWRlcl9s b29rdXBfbW9kdWxlKHByb3ZpZGVyX21vZHVsZSkpICE9IE5VTEwKLSsJICAgJiYgbS0+dmFsaWQp IHsKLSsJCWRlYnVnX2YoInByb3ZpZGVyIG1vZHVsZSBhbHJlYWR5IGluaXRpYWxpemVkOiAlcyIs IHByb3ZpZGVyX21vZHVsZSk7Ci0rCQlmcmVlKHByb3ZpZGVyX21vZHVsZSk7Ci0rCQkvKiBTa2lw IHRoZSBpbml0aWFsaXphdGlvbiBvZiBQS0NTIzExIG1vZHVsZSAqLwotKwkJbS0+cmVmY291bnQr KzsKLSsJCXAtPm1vZHVsZSA9IG07Ci0rCQlwLT52YWxpZCA9IDE7Ci0rCQlUQUlMUV9JTlNFUlRf VEFJTCgmcGtjczExX3Byb3ZpZGVycywgcCwgbmV4dCk7Ci0rCQlwLT5yZWZjb3VudCsrOwkvKiBh ZGQgdG8gcHJvdmlkZXIgbGlzdCAqLwotKwkJKnByb3ZpZGVycCA9IHA7Ci0rCQlyZXR1cm4gMDsK LSsJfSBlbHNlIHsKLSsJCW0gPSB4Y2FsbG9jKDEsIHNpemVvZigqbSkpOwotKwkJcC0+bW9kdWxl ID0gbTsKLSsJCW0tPnJlZmNvdW50Kys7Ci0gCX0KLSsKLSAJLyogb3BlbiBzaGFyZWQgcGtjczEx LWxpYnJhcnkgKi8KLS0JaWYgKChoYW5kbGUgPSBkbG9wZW4ocHJvdmlkZXJfaWQsIFJUTERfTk9X KSkgPT0gTlVMTCkgewotLQkJZXJyb3IoImRsb3BlbiAlcyBmYWlsZWQ6ICVzIiwgcHJvdmlkZXJf aWQsIGRsZXJyb3IoKSk7Ci0rCWlmICgoaGFuZGxlID0gZGxvcGVuKHByb3ZpZGVyX21vZHVsZSwg UlRMRF9OT1cpKSA9PSBOVUxMKSB7Ci0rCQllcnJvcigiZGxvcGVuICVzIGZhaWxlZDogJXMiLCBw cm92aWRlcl9tb2R1bGUsIGRsZXJyb3IoKSk7Ci0gCQlnb3RvIGZhaWw7Ci0gCX0KLSAJaWYgKChn ZXRmdW5jdGlvbmxpc3QgPSBkbHN5bShoYW5kbGUsICJDX0dldEZ1bmN0aW9uTGlzdCIpKSA9PSBO VUxMKQotIAkJZmF0YWwoImRsc3ltKENfR2V0RnVuY3Rpb25MaXN0KSBmYWlsZWQ6ICVzIiwgZGxl cnJvcigpKTsKLS0JcCA9IHhjYWxsb2MoMSwgc2l6ZW9mKCpwKSk7Ci0tCXAtPm5hbWUgPSB4c3Ry ZHVwKHByb3ZpZGVyX2lkKTsKLS0JcC0+aGFuZGxlID0gaGFuZGxlOwotLQkvKiBzZXQgdXAgdGhl IHBrY3MxMSBjYWxsYmFja3MgKi8KLSsJcC0+bW9kdWxlLT5oYW5kbGUgPSBoYW5kbGU7Ci0rCS8q IHNldHVwIHRoZSBwa2NzMTEgY2FsbGJhY2tzICovCi0gCWlmICgocnYgPSAoKmdldGZ1bmN0aW9u bGlzdCkoJmYpKSAhPSBDS1JfT0spIHsKLSAJCWVycm9yKCJDX0dldEZ1bmN0aW9uTGlzdCBmb3Ig cHJvdmlkZXIgJXMgZmFpbGVkOiAlbHUiLAotLQkJICAgIHByb3ZpZGVyX2lkLCBydik7Ci0rCQkg ICAgcHJvdmlkZXJfbW9kdWxlLCBydik7Ci0gCQlnb3RvIGZhaWw7Ci0gCX0KLS0JcC0+ZnVuY3Rp b25fbGlzdCA9IGY7Ci0rCW0tPmZ1bmN0aW9uX2xpc3QgPSBmOwotIAlpZiAoKHJ2ID0gZi0+Q19J bml0aWFsaXplKE5VTEwpKSAhPSBDS1JfT0spIHsKLSAJCWVycm9yKCJDX0luaXRpYWxpemUgZm9y IHByb3ZpZGVyICVzIGZhaWxlZDogJWx1IiwKLS0JCSAgICBwcm92aWRlcl9pZCwgcnYpOwotKwkJ ICAgIHByb3ZpZGVyX21vZHVsZSwgcnYpOwotIAkJZ290byBmYWlsOwotIAl9Ci0gCW5lZWRfZmlu YWxpemUgPSAxOwotLQlpZiAoKHJ2ID0gZi0+Q19HZXRJbmZvKCZwLT5pbmZvKSkgIT0gQ0tSX09L KSB7Ci0rCWlmICgocnYgPSBmLT5DX0dldEluZm8oJm0tPmluZm8pKSAhPSBDS1JfT0spIHsKLSAJ CWVycm9yKCJDX0dldEluZm8gZm9yIHByb3ZpZGVyICVzIGZhaWxlZDogJWx1IiwKLS0JCSAgICBw cm92aWRlcl9pZCwgcnYpOwotKwkJICAgIHByb3ZpZGVyX21vZHVsZSwgcnYpOwotIAkJZ290byBm YWlsOwotIAl9Ci0tCWRlYnVnKCJwcm92aWRlciAlczogbWFudWZhY3R1cmVySUQgPCUuKnM+IGNy eXB0b2tpVmVyc2lvbiAlZC4lZCIKLS0JICAgICIgbGlicmFyeURlc2NyaXB0aW9uIDwlLipzPiBs aWJyYXJ5VmVyc2lvbiAlZC4lZCIsCi0tCSAgICBwcm92aWRlcl9pZCwKLS0JICAgIFJNU1BBQ0Uo cC0+aW5mby5tYW51ZmFjdHVyZXJJRCksCi0tCSAgICBwLT5pbmZvLmNyeXB0b2tpVmVyc2lvbi5t YWpvciwKLS0JICAgIHAtPmluZm8uY3J5cHRva2lWZXJzaW9uLm1pbm9yLAotLQkgICAgUk1TUEFD RShwLT5pbmZvLmxpYnJhcnlEZXNjcmlwdGlvbiksCi0tCSAgICBwLT5pbmZvLmxpYnJhcnlWZXJz aW9uLm1ham9yLAotLQkgICAgcC0+aW5mby5saWJyYXJ5VmVyc2lvbi5taW5vcik7Ci0tCWlmICgo cnYgPSBmLT5DX0dldFNsb3RMaXN0KENLX1RSVUUsIE5VTEwsICZwLT5uc2xvdHMpKSAhPSBDS1Jf T0spIHsKLSsJcm1zcGFjZShtLT5pbmZvLm1hbnVmYWN0dXJlcklELCBzaXplb2YobS0+aW5mby5t YW51ZmFjdHVyZXJJRCkpOwotKwlpZiAodXJpLT5saWJfbWFudWYgIT0gTlVMTCAmJgotKwkgICAg c3RybmNtcCh1cmktPmxpYl9tYW51ZiwgbS0+aW5mby5tYW51ZmFjdHVyZXJJRCwgMzIpKSB7Ci0r CQlkZWJ1Z19mKCJTa2lwcGluZyBwcm92aWRlciAlcyBub3QgbWF0Y2hpbmcgbGlicmFyeV9tYW51 ZmFjdHVyZXIiLAotKwkJICAgIG0tPmluZm8ubWFudWZhY3R1cmVySUQpOwotKyAJCWdvdG8gZmFp bDsKLSsgCX0KLSsJcm1zcGFjZShtLT5pbmZvLmxpYnJhcnlEZXNjcmlwdGlvbiwgc2l6ZW9mKG0t PmluZm8ubGlicmFyeURlc2NyaXB0aW9uKSk7Ci0rCWRlYnVnKCJwcm92aWRlciAlczogbWFudWZh Y3R1cmVySUQgPCUuMzJzPiBjcnlwdG9raVZlcnNpb24gJWQuJWQiCi0rCSAgICAiIGxpYnJhcnlE ZXNjcmlwdGlvbiA8JS4zMnM+IGxpYnJhcnlWZXJzaW9uICVkLiVkIiwKLSsJICAgIHByb3ZpZGVy X21vZHVsZSwKLSsJICAgIG0tPmluZm8ubWFudWZhY3R1cmVySUQsCi0rCSAgICBtLT5pbmZvLmNy eXB0b2tpVmVyc2lvbi5tYWpvciwKLSsJICAgIG0tPmluZm8uY3J5cHRva2lWZXJzaW9uLm1pbm9y LAotKwkgICAgbS0+aW5mby5saWJyYXJ5RGVzY3JpcHRpb24sCi0rCSAgICBtLT5pbmZvLmxpYnJh cnlWZXJzaW9uLm1ham9yLAotKwkgICAgbS0+aW5mby5saWJyYXJ5VmVyc2lvbi5taW5vcik7Ci0r Ci0rCWlmICgocnYgPSBmLT5DX0dldFNsb3RMaXN0KENLX1RSVUUsIE5VTEwsICZtLT5uc2xvdHMp KSAhPSBDS1JfT0spIHsKLSAJCWVycm9yKCJDX0dldFNsb3RMaXN0IGZhaWxlZDogJWx1IiwgcnYp OwotIAkJZ290byBmYWlsOwotIAl9Ci0tCWlmIChwLT5uc2xvdHMgPT0gMCkgewotLQkJZGVidWdf ZigicHJvdmlkZXIgJXMgcmV0dXJuZWQgbm8gc2xvdHMiLCBwcm92aWRlcl9pZCk7Ci0rCWlmICht LT5uc2xvdHMgPT0gMCkgewotKwkJZGVidWdfZigicHJvdmlkZXIgJXMgcmV0dXJuZWQgbm8gc2xv dHMiLCBwcm92aWRlcl9tb2R1bGUpOwotIAkJcmV0ID0gLVNTSF9QS0NTMTFfRVJSX05PX1NMT1RT OwotIAkJZ290byBmYWlsOwotIAl9Ci0tCXAtPnNsb3RsaXN0ID0geGNhbGxvYyhwLT5uc2xvdHMs IHNpemVvZihDS19TTE9UX0lEKSk7Ci0tCWlmICgocnYgPSBmLT5DX0dldFNsb3RMaXN0KENLX1RS VUUsIHAtPnNsb3RsaXN0LCAmcC0+bnNsb3RzKSkKLSsJbS0+c2xvdGxpc3QgPSB4Y2FsbG9jKG0t Pm5zbG90cywgc2l6ZW9mKENLX1NMT1RfSUQpKTsKLSsJaWYgKChydiA9IGYtPkNfR2V0U2xvdExp c3QoQ0tfVFJVRSwgbS0+c2xvdGxpc3QsICZtLT5uc2xvdHMpKQotIAkgICAgIT0gQ0tSX09LKSB7 Ci0gCQllcnJvcigiQ19HZXRTbG90TGlzdCBmb3IgcHJvdmlkZXIgJXMgZmFpbGVkOiAlbHUiLAot LQkJICAgIHByb3ZpZGVyX2lkLCBydik7Ci0rCQkgICAgcHJvdmlkZXJfbW9kdWxlLCBydik7Ci0g CQlnb3RvIGZhaWw7Ci0gCX0KLS0JcC0+c2xvdGluZm8gPSB4Y2FsbG9jKHAtPm5zbG90cywgc2l6 ZW9mKHN0cnVjdCBwa2NzMTFfc2xvdGluZm8pKTsKLSsJbS0+c2xvdGluZm8gPSB4Y2FsbG9jKG0t Pm5zbG90cywgc2l6ZW9mKHN0cnVjdCBwa2NzMTFfc2xvdGluZm8pKTsKLSAJcC0+dmFsaWQgPSAx OwotLQlua2V5cyA9IDA7Ci0tCWZvciAoaSA9IDA7IGkgPCBwLT5uc2xvdHM7IGkrKykgewotLQkJ dG9rZW4gPSAmcC0+c2xvdGluZm9baV0udG9rZW47Ci0tCQlpZiAoKHJ2ID0gZi0+Q19HZXRUb2tl bkluZm8ocC0+c2xvdGxpc3RbaV0sIHRva2VuKSkKLSsJbS0+dmFsaWQgPSAxOwotKwlmb3IgKGkg PSAwOyBpIDwgbS0+bnNsb3RzOyBpKyspIHsKLSsJCXRva2VuID0gJm0tPnNsb3RpbmZvW2ldLnRv a2VuOwotKwkJaWYgKChydiA9IGYtPkNfR2V0VG9rZW5JbmZvKG0tPnNsb3RsaXN0W2ldLCB0b2tl bikpCi0gCQkgICAgIT0gQ0tSX09LKSB7Ci0gCQkJZXJyb3IoIkNfR2V0VG9rZW5JbmZvIGZvciBw cm92aWRlciAlcyBzbG90ICVsdSAiCi0tCQkJICAgICJmYWlsZWQ6ICVsdSIsIHByb3ZpZGVyX2lk LCAodV9sb25nKWksIHJ2KTsKLS0JCQljb250aW51ZTsKLS0JCX0KLS0JCWlmICgodG9rZW4tPmZs YWdzICYgQ0tGX1RPS0VOX0lOSVRJQUxJWkVEKSA9PSAwKSB7Ci0tCQkJZGVidWcyX2YoImlnbm9y aW5nIHVuaW5pdGlhbGlzZWQgdG9rZW4gaW4gIgotLQkJCSAgICAicHJvdmlkZXIgJXMgc2xvdCAl bHUiLCBwcm92aWRlcl9pZCwgKHVfbG9uZylpKTsKLSsJCQkgICAgImZhaWxlZDogJWx1IiwgcHJv dmlkZXJfbW9kdWxlLCAodV9sb25nKWksIHJ2KTsKLSAJCQljb250aW51ZTsKLSAJCX0KLSAJCWRl YnVnKCJwcm92aWRlciAlcyBzbG90ICVsdTogbGFiZWwgPCUuKnM+ICIKLSAJCSAgICAibWFudWZh Y3R1cmVySUQgPCUuKnM+IG1vZGVsIDwlLipzPiBzZXJpYWwgPCUuKnM+ICIKLSAJCSAgICAiZmxh Z3MgMHglbHgiLAotLQkJICAgIHByb3ZpZGVyX2lkLCAodW5zaWduZWQgbG9uZylpLAotKwkJICAg IHByb3ZpZGVyX21vZHVsZSwgKHVuc2lnbmVkIGxvbmcpaSwKLSAJCSAgICBSTVNQQUNFKHRva2Vu LT5sYWJlbCksIFJNU1BBQ0UodG9rZW4tPm1hbnVmYWN0dXJlcklEKSwKLSAJCSAgICBSTVNQQUNF KHRva2VuLT5tb2RlbCksIFJNU1BBQ0UodG9rZW4tPnNlcmlhbE51bWJlciksCi0gCQkgICAgdG9r ZW4tPmZsYWdzKTsKLS0JCS8qCi0tCQkgKiBvcGVuIHNlc3Npb24sIGxvZ2luIHdpdGggcGluIGFu ZCByZXRyaWV2ZSBwdWJsaWMKLS0JCSAqIGtleXMgKGlmIGtleXAgaXMgcHJvdmlkZWQpCi0tCQkg Ki8KLS0JCWlmICgocmV0ID0gcGtjczExX29wZW5fc2Vzc2lvbihwLCBpLCBwaW4sIHVzZXIpKSAh PSAwIHx8Ci0tCQkgICAga2V5cCA9PSBOVUxMKQotLQkJCWNvbnRpbnVlOwotLQkJcGtjczExX2Zl dGNoX2tleXMocCwgaSwga2V5cCwgbGFiZWxzcCwgJm5rZXlzKTsKLS0jaWZkZWYgV0lUSF9PUEVO U1NMCi0tCQlwa2NzMTFfZmV0Y2hfY2VydHMocCwgaSwga2V5cCwgbGFiZWxzcCwgJm5rZXlzKTsK LS0jZW5kaWYKLS0JCWlmIChua2V5cyA9PSAwICYmICFwLT5zbG90aW5mb1tpXS5sb2dnZWRfaW4g JiYKLS0JCSAgICBwa2NzMTFfaW50ZXJhY3RpdmUpIHsKLS0JCQkvKgotLQkJCSAqIFNvbWUgdG9r ZW5zIHJlcXVpcmUgbG9naW4gYmVmb3JlIHRoZXkgd2lsbAotLQkJCSAqIGV4cG9zZSBrZXlzLgot LQkJCSAqLwotLQkJCWlmIChwa2NzMTFfbG9naW5fc2xvdChwLCAmcC0+c2xvdGluZm9baV0sCi0t CQkJICAgIENLVV9VU0VSKSA8IDApIHsKLS0JCQkJZXJyb3IoImxvZ2luIGZhaWxlZCIpOwotLQkJ CQljb250aW51ZTsKLS0JCQl9Ci0tCQkJcGtjczExX2ZldGNoX2tleXMocCwgaSwga2V5cCwgbGFi ZWxzcCwgJm5rZXlzKTsKLS0jaWZkZWYgV0lUSF9PUEVOU1NMCi0tCQkJcGtjczExX2ZldGNoX2Nl cnRzKHAsIGksIGtleXAsIGxhYmVsc3AsICZua2V5cyk7Ci0tI2VuZGlmCi0tCQl9Ci0gCX0KLSsJ bS0+bW9kdWxlX3BhdGggPSBwcm92aWRlcl9tb2R1bGU7Ci0rCXByb3ZpZGVyX21vZHVsZSA9IE5V TEw7Ci0gCi0gCS8qIG5vdyBvd25lZCBieSBjYWxsZXIgKi8KLSAJKnByb3ZpZGVycCA9IHA7Ci1A QCAtMTk4OCwyMSArMjE2NCwyMiBAQCBwa2NzMTFfcmVnaXN0ZXJfcHJvdmlkZXIoY2hhciAqcHJv dmlkZXJfaWQsIGNoYXIgKnBpbiwKLSAJVEFJTFFfSU5TRVJUX1RBSUwoJnBrY3MxMV9wcm92aWRl cnMsIHAsIG5leHQpOwotIAlwLT5yZWZjb3VudCsrOwkvKiBhZGQgdG8gcHJvdmlkZXIgbGlzdCAq LwotIAotLQlyZXR1cm4gKG5rZXlzKTsKLSsJcmV0dXJuIDA7Ci0gZmFpbDoKLSAJaWYgKG5lZWRf ZmluYWxpemUgJiYgKHJ2ID0gZi0+Q19GaW5hbGl6ZShOVUxMKSkgIT0gQ0tSX09LKQotIAkJZXJy b3IoIkNfRmluYWxpemUgZm9yIHByb3ZpZGVyICVzIGZhaWxlZDogJWx1IiwKLS0JCSAgICBwcm92 aWRlcl9pZCwgcnYpOwotKwkJICAgIHByb3ZpZGVyX21vZHVsZSwgcnYpOwotKwlmcmVlKHByb3Zp ZGVyX21vZHVsZSk7Ci0rCWlmIChtKSB7Ci0rCQlmcmVlKG0tPnNsb3RsaXN0KTsKLSsJCWZyZWUo bSk7Ci0rCX0KLSAJaWYgKHApIHsKLSAJCWZyZWUocC0+bmFtZSk7Ci0tCQlmcmVlKHAtPnNsb3Rs aXN0KTsKLS0JCWZyZWUocC0+c2xvdGluZm8pOwotIAkJZnJlZShwKTsKLSAJfQotIAlpZiAoaGFu ZGxlKQotIAkJZGxjbG9zZShoYW5kbGUpOwotLQlpZiAocmV0ID4gMCkKLS0JCXJldCA9IC0xOwot IAlyZXR1cm4gKHJldCk7Ci0gfQotIAotQEAgLTIwMzgsMTggKzIyMTUsMTYzIEBAIHBrY3MxMV90 ZXJtaW5hdGUodm9pZCkKLSB9Ci0gCi0gLyoKLS0gKiByZWdpc3RlciBhIG5ldyBwcm92aWRlciBh bmQgZ2V0IG51bWJlciBvZiBrZXlzIGhvbGQgYnkgdGhlIHRva2VuLAotLSAqIGZhaWxzIGlmIHBy b3ZpZGVyIGFscmVhZHkgZXhpc3RzCi0rICogcmVnaXN0ZXIgYSBuZXcgcHJvdmlkZXIsIGZhaWxz IGlmIHByb3ZpZGVyIGFscmVhZHkgZXhpc3RzLiBpZgotKyAqIGtleXAgaXMgcHJvdmlkZWQsIGZl dGNoIGtleXMuCi0gICovCi0rc3RhdGljIGludAotK3BrY3MxMV9yZWdpc3Rlcl9wcm92aWRlcl9i eV91cmkoc3RydWN0IHBrY3MxMV91cmkgKnVyaSwgY2hhciAqcGluLAotKyAgICBzdHJ1Y3Qgc3No a2V5ICoqKmtleXAsIGNoYXIgKioqbGFiZWxzcCwgc3RydWN0IHBrY3MxMV9wcm92aWRlciAqKnBy b3ZpZGVycCwKLSsgICAgQ0tfVUxPTkcgdXNlcikKLSt7Ci0rCWludCBua2V5czsKLSsJaW50IHJl dCA9IC0xOwotKwlzdHJ1Y3QgcGtjczExX3Byb3ZpZGVyICpwID0gTlVMTDsKLSsJQ0tfVUxPTkcg aTsKLSsJQ0tfVE9LRU5fSU5GTyAqdG9rZW47Ci0rCWNoYXIgKnByb3ZpZGVyX3VyaSA9IE5VTEw7 Ci0rCi0rCWlmIChwcm92aWRlcnAgPT0gTlVMTCkKLSsJCWdvdG8gZmFpbDsKLSsJKnByb3ZpZGVy cCA9IE5VTEw7Ci0rCi0rCWlmIChrZXlwICE9IE5VTEwpCi0rCQkqa2V5cCA9IE5VTEw7Ci0rCi0r CWlmICgocmV0ID0gcGtjczExX2luaXRpYWxpemVfcHJvdmlkZXIodXJpLCAmcCkpICE9IDApIHsK LSsJCWdvdG8gZmFpbDsKLSsJfQotKwotKwlwcm92aWRlcl91cmkgPSBwa2NzMTFfdXJpX2dldCh1 cmkpOwotKwlpZiAocGluID09IE5VTEwgJiYgdXJpLT5waW4gIT0gTlVMTCkgewotKwkJcGluID0g dXJpLT5waW47Ci0rCX0KLSsJbmtleXMgPSAwOwotKwlmb3IgKGkgPSAwOyBpIDwgcC0+bW9kdWxl LT5uc2xvdHM7IGkrKykgewotKwkJdG9rZW4gPSAmcC0+bW9kdWxlLT5zbG90aW5mb1tpXS50b2tl bjsKLSsJCWlmICgodG9rZW4tPmZsYWdzICYgQ0tGX1RPS0VOX0lOSVRJQUxJWkVEKSA9PSAwKSB7 Ci0rCQkJZGVidWcyX2YoImlnbm9yaW5nIHVuaW5pdGlhbGlzZWQgdG9rZW4gaW4gIgotKwkJCSAg ICAicHJvdmlkZXIgJXMgc2xvdCAlbHUiLCBwcm92aWRlcl91cmksICh1X2xvbmcpaSk7Ci0rCQkJ Y29udGludWU7Ci0rCQl9Ci0rCQlpZiAodXJpLT50b2tlbiAhPSBOVUxMICYmCi0rCQkgICAgc3Ry bmNtcCh0b2tlbi0+bGFiZWwsIHVyaS0+dG9rZW4sIDMyKSAhPSAwKSB7Ci0rCQkJZGVidWcyX2Yo Imlnbm9yaW5nIHRva2VuIG5vdCBtYXRjaGluZyBsYWJlbCAoJS4zMnMpICIKLSsJCQkgICAgInNw ZWNpZmllZCBieSBQS0NTIzExIFVSSSBpbiBzbG90ICVsdSIsCi0rCQkJICAgIHRva2VuLT5sYWJl bCwgKHVuc2lnbmVkIGxvbmcpaSk7Ci0rCQkJY29udGludWU7Ci0rCQl9Ci0rCQlpZiAodXJpLT5t YW51ZiAhPSBOVUxMICYmCi0rCQkgICAgc3RybmNtcCh0b2tlbi0+bWFudWZhY3R1cmVySUQsIHVy aS0+bWFudWYsIDMyKSAhPSAwKSB7Ci0rCQkJZGVidWcyX2YoImlnbm9yaW5nIHRva2VuIG5vdCBt YXRjaGluZyByZXF1cmVzdGVkICIKLSsJCQkgICAgIm1hbnVmYWN0dXJlcklEICglLjMycykgc3Bl Y2lmaWVkIGJ5IFBLQ1MjMTEgVVJJIGluICIKLSsJCQkgICAgInNsb3QgJWx1IiwgdG9rZW4tPm1h bnVmYWN0dXJlcklELCAodW5zaWduZWQgbG9uZylpKTsKLSsJCQljb250aW51ZTsKLSsJCX0KLSsJ CWlmICh1cmktPnNlcmlhbCAhPSBOVUxMICYmCi0rCQkgICAgc3RybmNtcCh0b2tlbi0+c2VyaWFs TnVtYmVyLCB1cmktPnNlcmlhbCwgMTYpICE9IDApIHsKLSsJCQlkZWJ1ZzJfZigiaWdub3Jpbmcg dG9rZW4gbm90IG1hdGNoaW5nIHJlcXVyZXN0ZWQgIgotKwkJCSAgICAic2VyaWFsTnVtYmVyICgl cykgc3BlY2lmaWVkIGJ5IFBLQ1MjMTEgVVJJIGluICIKLSsJCQkgICAgInNsb3QgJWx1IiwgdG9r ZW4tPnNlcmlhbE51bWJlciwgKHVuc2lnbmVkIGxvbmcpaSk7Ci0rCQkJY29udGludWU7Ci0rCQl9 Ci0rCQlkZWJ1ZygicHJvdmlkZXIgJXMgc2xvdCAlbHU6IGxhYmVsIDwlLjMycz4gbWFudWZhY3R1 cmVySUQgPCUuMzJzPiAiCi0rCQkgICAgIm1vZGVsIDwlLjE2cz4gc2VyaWFsIDwlLjE2cz4gZmxh Z3MgMHglbHgiLAotKwkJICAgIHByb3ZpZGVyX3VyaSwgKHVuc2lnbmVkIGxvbmcpaSwKLSsJCSAg ICB0b2tlbi0+bGFiZWwsIHRva2VuLT5tYW51ZmFjdHVyZXJJRCwgdG9rZW4tPm1vZGVsLAotKwkJ ICAgIHRva2VuLT5zZXJpYWxOdW1iZXIsIHRva2VuLT5mbGFncyk7Ci0rCQkvKgotKwkJICogb3Bl biBzZXNzaW9uIGlmIG5vdCB5ZXQgb3BlbmVkLCBsb2dpbiB3aXRoIHBpbiBhbmQKLSsJCSAqIHJl dHJpZXZlIHB1YmxpYyBrZXlzIChpZiBrZXlwIGlzIHByb3ZpZGVkKQotKwkJICovCi0rCQlpZiAo KHAtPm1vZHVsZS0+c2xvdGluZm9baV0uc2Vzc2lvbiAhPSAwIHx8Ci0rCQkgICAgKHJldCA9IHBr Y3MxMV9vcGVuX3Nlc3Npb24ocCwgaSwgcGluLCB1c2VyKSkgIT0gMCkgJiYgLyogPz8/ICovCi0r CQkgICAga2V5cCA9PSBOVUxMKQotKwkJCWNvbnRpbnVlOwotKwkJcGtjczExX2ZldGNoX2tleXMo cCwgaSwga2V5cCwgbGFiZWxzcCwgJm5rZXlzLCB1cmkpOwotKwkJcGtjczExX2ZldGNoX2NlcnRz KHAsIGksIGtleXAsIGxhYmVsc3AsICZua2V5cywgdXJpKTsKLSsJCWlmIChua2V5cyA9PSAwICYm ICFwLT5tb2R1bGUtPnNsb3RpbmZvW2ldLmxvZ2dlZF9pbiAmJgotKwkJICAgIHBrY3MxMV9pbnRl cmFjdGl2ZSkgewotKwkJCS8qCi0rCQkJICogU29tZSB0b2tlbnMgcmVxdWlyZSBsb2dpbiBiZWZv cmUgdGhleSB3aWxsCi0rCQkJICogZXhwb3NlIGtleXMuCi0rCQkJICovCi0rCQkJZGVidWczX2Yo IlRyeWluZyB0byBsb2dpbiBhcyB0aGVyZSB3ZXJlIG5vIGtleXMgZm91bmQiKTsKLSsJCQlpZiAo cGtjczExX2xvZ2luX3Nsb3QocCwgJnAtPm1vZHVsZS0+c2xvdGluZm9baV0sCi0rCQkJICAgIENL VV9VU0VSKSA8IDApIHsKLSsJCQkJZXJyb3IoImxvZ2luIGZhaWxlZCIpOwotKwkJCQljb250aW51 ZTsKLSsJCQl9Ci0rCQkJcGtjczExX2ZldGNoX2tleXMocCwgaSwga2V5cCwgbGFiZWxzcCwgJm5r ZXlzLCB1cmkpOwotKwkJCXBrY3MxMV9mZXRjaF9jZXJ0cyhwLCBpLCBrZXlwLCBsYWJlbHNwLCAm bmtleXMsIHVyaSk7Ci0rCQl9Ci0rCQlpZiAobmtleXMgPT0gMCAmJiB1cmktPm9iamVjdCAhPSBO VUxMKSB7Ci0rCQkJZGVidWczX2YoIk5vIGtleXMgZm91bmQuIFJldHJ5aW5nIHdpdGhvdXQgbGFi ZWwgKCUuMzJzKSAiLAotKwkJCSAgICB1cmktPm9iamVjdCk7Ci0rCQkJLyogVHJ5IG9uY2UgbW9y ZSB3aXRob3V0IHRoZSBsYWJlbCBmaWx0ZXIgKi8KLSsJCQljaGFyICpsYWJlbCA9IHVyaS0+b2Jq ZWN0OwotKwkJCXVyaS0+b2JqZWN0ID0gTlVMTDsgLyogWFhYIGNsb25lIHVyaT8gKi8KLSsJCQlw a2NzMTFfZmV0Y2hfa2V5cyhwLCBpLCBrZXlwLCBsYWJlbHNwLCAmbmtleXMsIHVyaSk7Ci0rCQkJ cGtjczExX2ZldGNoX2NlcnRzKHAsIGksIGtleXAsIGxhYmVsc3AsICZua2V5cywgdXJpKTsKLSsJ CQl1cmktPm9iamVjdCA9IGxhYmVsOwotKwkJfQotKwl9Ci0rCXBpbiA9IE5VTEw7IC8qIFdpbGwg YmUgY2xlYW5lZCB1cCB3aXRoIFVSSSAqLwotKwotKwkvKiBub3cgb3duZWQgYnkgY2FsbGVyICov Ci0rCSpwcm92aWRlcnAgPSBwOwotKwotKwlmcmVlKHByb3ZpZGVyX3VyaSk7Ci0rCXJldHVybiAo bmtleXMpOwotKyBmYWlsOgotKwlpZiAocCkgewotKwkJVEFJTFFfUkVNT1ZFKCZwa2NzMTFfcHJv dmlkZXJzLCBwLCBuZXh0KTsKLSsJICAgICAJcGtjczExX3Byb3ZpZGVyX3VucmVmKHApOwotKwl9 Ci0rCWlmIChyZXQgPiAwKQotKwkJcmV0ID0gLTE7Ci0rCXJldHVybiAocmV0KTsKLSt9Ci0rCi0r I2lmZGVmIFdJVEhfUEtDUzExX0tFWUdFTgotK3N0YXRpYyBpbnQKLStwa2NzMTFfcmVnaXN0ZXJf cHJvdmlkZXIoY2hhciAqcHJvdmlkZXJfaWQsIGNoYXIgKnBpbiwgc3RydWN0IHNzaGtleSAqKipr ZXlwLAotKyAgICBjaGFyICoqKmxhYmVsc3AsIHN0cnVjdCBwa2NzMTFfcHJvdmlkZXIgKipwcm92 aWRlcnAsIENLX1VMT05HIHVzZXIpCi0rewotKwlzdHJ1Y3QgcGtjczExX3VyaSAqdXJpID0gTlVM TDsKLSsJaW50IHI7Ci0rCi0rCWRlYnVnX2YoImNhbGxlZCwgcHJvdmlkZXJfaWQgPSAlcyIsIHBy b3ZpZGVyX2lkKTsKLSsKLSsJdXJpID0gcGtjczExX3VyaV9pbml0KCk7Ci0rCWlmICh1cmkgPT0g TlVMTCkKLSsJCWZhdGFsKCJmYWlsZWQgdG8gaW5pdCBQS0NTIzExIFVSSSIpOwotKwotKwlpZiAo c3RybGVuKHByb3ZpZGVyX2lkKSA+PSBzdHJsZW4oUEtDUzExX1VSSV9TQ0hFTUUpICYmCi0rCSAg ICBzdHJuY21wKHByb3ZpZGVyX2lkLCBQS0NTMTFfVVJJX1NDSEVNRSwgc3RybGVuKFBLQ1MxMV9V UklfU0NIRU1FKSkgPT0gMCkgewotKwkJaWYgKHBrY3MxMV91cmlfcGFyc2UocHJvdmlkZXJfaWQs IHVyaSkgIT0gMCkKLSsJCQlmYXRhbCgiRmFpbGVkIHRvIHBhcnNlIFBLQ1MjMTEgVVJJIik7Ci0r CX0gZWxzZSB7Ci0rCQl1cmktPm1vZHVsZV9wYXRoID0gc3RyZHVwKHByb3ZpZGVyX2lkKTsKLSsJ fQotKwotKwlyID0gcGtjczExX3JlZ2lzdGVyX3Byb3ZpZGVyX2J5X3VyaSh1cmksIHBpbiwga2V5 cCwgbGFiZWxzcCwgcHJvdmlkZXJwLCB1c2VyKTsKLSsJcGtjczExX3VyaV9jbGVhbnVwKHVyaSk7 Ci0rCi0rCXJldHVybiByOwotK30KLSsjZW5kaWYKLSsKLSBpbnQKLS1wa2NzMTFfYWRkX3Byb3Zp ZGVyKGNoYXIgKnByb3ZpZGVyX2lkLCBjaGFyICpwaW4sIHN0cnVjdCBzc2hrZXkgKioqa2V5cCwK LS0gICAgY2hhciAqKipsYWJlbHNwKQotK3BrY3MxMV9hZGRfcHJvdmlkZXJfYnlfdXJpKHN0cnVj dCBwa2NzMTFfdXJpICp1cmksIGNoYXIgKnBpbiwKLSsgICAgc3RydWN0IHNzaGtleSAqKiprZXlw LCBjaGFyICoqKmxhYmVsc3ApCi0gewotIAlzdHJ1Y3QgcGtjczExX3Byb3ZpZGVyICpwID0gTlVM TDsKLSAJaW50IG5rZXlzOwotKwljaGFyICpwcm92aWRlcl91cmkgPSBwa2NzMTFfdXJpX2dldCh1 cmkpOwotIAotLQlua2V5cyA9IHBrY3MxMV9yZWdpc3Rlcl9wcm92aWRlcihwcm92aWRlcl9pZCwg cGluLCBrZXlwLCBsYWJlbHNwLAotLQkgICAgJnAsIENLVV9VU0VSKTsKLSsJZGVidWdfZigiY2Fs bGVkLCBwcm92aWRlcl91cmkgPSAlcyIsIHByb3ZpZGVyX3VyaSk7Ci0rCi0rCW5rZXlzID0gcGtj czExX3JlZ2lzdGVyX3Byb3ZpZGVyX2J5X3VyaSh1cmksIHBpbiwga2V5cCwgbGFiZWxzcCwgJnAs IENLVV9VU0VSKTsKLSAKLSAJLyogbm8ga2V5cyBmb3VuZCBvciBzb21lIG90aGVyIGVycm9yLCBk ZS1yZWdpc3RlciBwcm92aWRlciAqLwotIAlpZiAobmtleXMgPD0gMCAmJiBwICE9IE5VTEwpIHsK LUBAIC0yMDU4LDExICsyMzgwLDM4IEBAIHBrY3MxMV9hZGRfcHJvdmlkZXIoY2hhciAqcHJvdmlk ZXJfaWQsIGNoYXIgKnBpbiwgc3RydWN0IHNzaGtleSAqKiprZXlwLAotIAkJcGtjczExX3Byb3Zp ZGVyX3VucmVmKHApOwotIAl9Ci0gCWlmIChua2V5cyA9PSAwKQotLQkJZGVidWdfZigicHJvdmlk ZXIgJXMgcmV0dXJuZWQgbm8ga2V5cyIsIHByb3ZpZGVyX2lkKTsKLSsJCWRlYnVnX2YoInByb3Zp ZGVyICVzIHJldHVybmVkIG5vIGtleXMiLCBwcm92aWRlcl91cmkpOwotIAotKwlmcmVlKHByb3Zp ZGVyX3VyaSk7Ci0gCXJldHVybiAobmtleXMpOwotIH0KLSAKLStpbnQKLStwa2NzMTFfYWRkX3By b3ZpZGVyKGNoYXIgKnByb3ZpZGVyX2lkLCBjaGFyICpwaW4sCi0rICAgIHN0cnVjdCBzc2hrZXkg Kioqa2V5cCwgY2hhciAqKipsYWJlbHNwKQotK3sKLSsJc3RydWN0IHBrY3MxMV91cmkgKnVyaTsK LSsJaW50IG5rZXlzOwotKwotKwl1cmkgPSBwa2NzMTFfdXJpX2luaXQoKTsKLSsJaWYgKHVyaSA9 PSBOVUxMKQotKwkJZmF0YWwoIkZhaWxlZCB0byBpbml0IFBLQ1MjMTEgVVJJIik7Ci0rCi0rCWlm IChzdHJsZW4ocHJvdmlkZXJfaWQpID49IHN0cmxlbihQS0NTMTFfVVJJX1NDSEVNRSkgJiYKLSsJ ICAgIHN0cm5jbXAocHJvdmlkZXJfaWQsIFBLQ1MxMV9VUklfU0NIRU1FLCBzdHJsZW4oUEtDUzEx X1VSSV9TQ0hFTUUpKSA9PSAwKSB7Ci0rCQlpZiAocGtjczExX3VyaV9wYXJzZShwcm92aWRlcl9p ZCwgdXJpKSAhPSAwKQotKwkJCWZhdGFsKCJGYWlsZWQgdG8gcGFyc2UgUEtDUyMxMSBVUkkiKTsK LSsJfSBlbHNlIHsKLSsJCXVyaS0+bW9kdWxlX3BhdGggPSBzdHJkdXAocHJvdmlkZXJfaWQpOwot Kwl9Ci0rCi0rCW5rZXlzID0gcGtjczExX2FkZF9wcm92aWRlcl9ieV91cmkodXJpLCBwaW4sIGtl eXAsIGxhYmVsc3ApOwotKwlwa2NzMTFfdXJpX2NsZWFudXAodXJpKTsKLSsKLSsgCXJldHVybiAo bmtleXMpOwotK30KLSsKLSsKLSBpbnQKLSBwa2NzMTFfc2lnbihzdHJ1Y3Qgc3Noa2V5ICprZXks Ci0gICAgIHVfY2hhciAqKnNpZ3AsIHNpemVfdCAqbGVucCwKLWRpZmYgLS1naXQgYS9zc2gtcGtj czExLmggYi9zc2gtcGtjczExLmgKLWluZGV4IDFkMDI3N2E2ZC4uMTM0NTk2NDRjIDEwMDY0NAot LS0tIGEvc3NoLXBrY3MxMS5oCi0rKysgYi9zc2gtcGtjczExLmgKLUBAIC0yNCwxMiArMjQsMTYg QEAKLSAjZGVmaW5lCVNTSF9QS0NTMTFfRVJSX1BJTl9SRVFVSVJFRAkJNAotICNkZWZpbmUJU1NI X1BLQ1MxMV9FUlJfUElOX0xPQ0tFRAkJNQotIAotKyNpbmNsdWRlICJzc2gtcGtjczExLXVyaS5o IgotKwotIHN0cnVjdCBzc2hrZXk7Ci0gCi0gaW50CXBrY3MxMV9pbml0KGludCk7Ci0gdm9pZAlw a2NzMTFfdGVybWluYXRlKHZvaWQpOwotIGludAlwa2NzMTFfYWRkX3Byb3ZpZGVyKGNoYXIgKiwg Y2hhciAqLCBzdHJ1Y3Qgc3Noa2V5ICoqKiwgY2hhciAqKiopOwotK2ludAlwa2NzMTFfYWRkX3By b3ZpZGVyX2J5X3VyaShzdHJ1Y3QgcGtjczExX3VyaSAqLCBjaGFyICosIHN0cnVjdCBzc2hrZXkg KioqLCBjaGFyICoqKik7Ci0gaW50CXBrY3MxMV9kZWxfcHJvdmlkZXIoY2hhciAqKTsKLStpbnQJ cGtjczExX3VyaV93cml0ZShjb25zdCBzdHJ1Y3Qgc3Noa2V5ICosIEZJTEUgKik7Ci0gaW50CXBr Y3MxMV9zaWduKHN0cnVjdCBzc2hrZXkgKiwgdV9jaGFyICoqLCBzaXplX3QgKiwKLSAJICAgIGNv bnN0IHVfY2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLAotIAkgICAg Y29uc3QgY2hhciAqLCB1X2ludCk7Ci1kaWZmIC0tZ2l0IGEvc3NoLmMgYi9zc2guYwotaW5kZXgg NGExN2MwYTdkLi5iNDFhZTgyZDIgMTAwNjQ0Ci0tLS0gYS9zc2guYwotKysrIGIvc3NoLmMKLUBA IC04NjIsNiArODYyLDE0IEBAIG1haW4oaW50IGFjLCBjaGFyICoqYXYpCi0gCQkJb3B0aW9ucy5n c3NfZGVsZWdfY3JlZHMgPSAxOwotIAkJCWJyZWFrOwotIAkJY2FzZSAnaSc6Ci0rI2lmZGVmIEVO QUJMRV9QS0NTMTEKLSsJCQlpZiAoc3RybGVuKG9wdGFyZykgPj0gc3RybGVuKFBLQ1MxMV9VUklf U0NIRU1FKSAmJgotKwkJCSAgICBzdHJuY21wKG9wdGFyZywgUEtDUzExX1VSSV9TQ0hFTUUsCi0r CQkJICAgIHN0cmxlbihQS0NTMTFfVVJJX1NDSEVNRSkpID09IDApIHsKLSsJCQkJYWRkX2lkZW50 aXR5X2ZpbGUoJm9wdGlvbnMsIE5VTEwsIG9wdGFyZywgMSk7Ci0rCQkJCWJyZWFrOwotKwkJCX0K LSsjZW5kaWYKLSAJCQlwID0gdGlsZGVfZXhwYW5kX2ZpbGVuYW1lKG9wdGFyZywgZ2V0dWlkKCkp OwotIAkJCWlmIChzdGF0KHAsICZzdCkgPT0gLTEpCi0gCQkJCWZwcmludGYoc3RkZXJyLCAiV2Fy bmluZzogSWRlbnRpdHkgZmlsZSAlcyAiCi1AQCAtMTgzOCw2ICsxODQ2LDcgQEAgbWFpbihpbnQg YWMsIGNoYXIgKiphdikKLSAKLSAjaWZkZWYgRU5BQkxFX1BLQ1MxMQotIAkodm9pZClwa2NzMTFf ZGVsX3Byb3ZpZGVyKG9wdGlvbnMucGtjczExX3Byb3ZpZGVyKTsKLSsJcGtjczExX3Rlcm1pbmF0 ZSgpOwotICNlbmRpZgotIAotICBza2lwX2Nvbm5lY3Q6Ci1AQCAtMjM0OSw2ICsyMzU4LDQ1IEBA IHNzaF9zZXNzaW9uMihzdHJ1Y3Qgc3NoICpzc2gsIGNvbnN0IHN0cnVjdCBzc2hfY29ubl9pbmZv ICpjaW5mbykKLSAJICAgIG9wdGlvbnMuZXNjYXBlX2NoYXIgOiBTU0hfRVNDQVBFQ0hBUl9OT05F LCBpZCk7Ci0gfQotIAotKyNpZmRlZiBFTkFCTEVfUEtDUzExCi0rc3RhdGljIHZvaWQKLStsb2Fk X3BrY3MxMV9pZGVudGl0eShjaGFyICpwa2NzMTFfdXJpLCBjaGFyICppZGVudGl0eV9maWxlc1td LAotKyAgICBzdHJ1Y3Qgc3Noa2V5ICppZGVudGl0eV9rZXlzW10sIGludCAqbl9pZHMpCi0rewot KwlpbnQgbmtleXMsIGk7Ci0rCXN0cnVjdCBzc2hrZXkgKiprZXlzOwotKwlzdHJ1Y3QgcGtjczEx X3VyaSAqdXJpOwotKwotKwlkZWJ1ZygiaWRlbnRpdHkgZmlsZSAnJXMnIGZyb20gcGtjcyMxMSIs IHBrY3MxMV91cmkpOwotKwl1cmkgPSBwa2NzMTFfdXJpX2luaXQoKTsKLSsJaWYgKHVyaSA9PSBO VUxMKQotKwkJZmF0YWwoIkZhaWxlZCB0byBpbml0IFBLQ1MjMTEgVVJJIik7Ci0rCi0rCWlmIChw a2NzMTFfdXJpX3BhcnNlKHBrY3MxMV91cmksIHVyaSkgIT0gMCkKLSsJZmF0YWwoIkZhaWxlZCB0 byBwYXJzZSBQS0NTIzExIFVSSSAlcyIsIHBrY3MxMV91cmkpOwotKwotKwkvKiB3ZSBuZWVkIHRv IG1lcmdlIFVSSSBhbmQgcHJvdmlkZXIgdG9nZXRoZXIgKi8KLSsJaWYgKG9wdGlvbnMucGtjczEx X3Byb3ZpZGVyICE9IE5VTEwgJiYgdXJpLT5tb2R1bGVfcGF0aCA9PSBOVUxMKQotKwkJdXJpLT5t b2R1bGVfcGF0aCA9IHN0cmR1cChvcHRpb25zLnBrY3MxMV9wcm92aWRlcik7Ci0rCi0rCWlmIChv cHRpb25zLm51bV9pZGVudGl0eV9maWxlcyA8IFNTSF9NQVhfSURFTlRJVFlfRklMRVMgJiYKLSsJ ICAgIChua2V5cyA9IHBrY3MxMV9hZGRfcHJvdmlkZXJfYnlfdXJpKHVyaSwgTlVMTCwgJmtleXMs IE5VTEwpKSA+IDApIHsKLSsJCWZvciAoaSA9IDA7IGkgPCBua2V5czsgaSsrKSB7Ci0rCQkJaWYg KCpuX2lkcyA+PSBTU0hfTUFYX0lERU5USVRZX0ZJTEVTKSB7Ci0rCQkJCXNzaGtleV9mcmVlKGtl eXNbaV0pOwotKwkJCQljb250aW51ZTsKLSsJCQl9Ci0rCQkJaWRlbnRpdHlfa2V5c1sqbl9pZHNd ID0ga2V5c1tpXTsKLSsJCQlpZGVudGl0eV9maWxlc1sqbl9pZHNdID0gcGtjczExX3VyaV9nZXQo dXJpKTsKLSsJCQkoKm5faWRzKSsrOwotKwkJfQotKwkJZnJlZShrZXlzKTsKLSsJfQotKwotKwlw a2NzMTFfdXJpX2NsZWFudXAodXJpKTsKLSt9Ci0rI2VuZGlmIC8qIEVOQUJMRV9QS0NTMTEgKi8K LSsKLSAvKiBMb2FkcyBhbGwgSWRlbnRpdHlGaWxlIGFuZCBDZXJ0aWZpY2F0ZUZpbGUga2V5cyAq LwotIHN0YXRpYyB2b2lkCi0gbG9hZF9wdWJsaWNfaWRlbnRpdHlfZmlsZXMoY29uc3Qgc3RydWN0 IHNzaF9jb25uX2luZm8gKmNpbmZvKQotQEAgLTIzNjMsMTEgKzI0MTEsNiBAQCBsb2FkX3B1Ymxp Y19pZGVudGl0eV9maWxlcyhjb25zdCBzdHJ1Y3Qgc3NoX2Nvbm5faW5mbyAqY2luZm8pCi0gCWNo YXIgKmNlcnRpZmljYXRlX2ZpbGVzW1NTSF9NQVhfQ0VSVElGSUNBVEVfRklMRVNdOwotIAlzdHJ1 Y3Qgc3Noa2V5ICpjZXJ0aWZpY2F0ZXNbU1NIX01BWF9DRVJUSUZJQ0FURV9GSUxFU107Ci0gCWlu dCBjZXJ0aWZpY2F0ZV9maWxlX3VzZXJwcm92aWRlZFtTU0hfTUFYX0NFUlRJRklDQVRFX0ZJTEVT XTsKLS0jaWZkZWYgRU5BQkxFX1BLQ1MxMQotLQlzdHJ1Y3Qgc3Noa2V5ICoqa2V5cyA9IE5VTEw7 Ci0tCWNoYXIgKipjb21tZW50cyA9IE5VTEw7Ci0tCWludCBua2V5czsKLS0jZW5kaWYgLyogUEtD UzExICovCi0gCi0gCW5faWRzID0gbl9jZXJ0cyA9IDA7Ci0gCW1lbXNldChpZGVudGl0eV9maWxl cywgMCwgc2l6ZW9mKGlkZW50aXR5X2ZpbGVzKSk7Ci1AQCAtMjM4MCwzMyArMjQyMyw0NiBAQCBs b2FkX3B1YmxpY19pZGVudGl0eV9maWxlcyhjb25zdCBzdHJ1Y3Qgc3NoX2Nvbm5faW5mbyAqY2lu Zm8pCi0gCSAgICBzaXplb2YoY2VydGlmaWNhdGVfZmlsZV91c2VycHJvdmlkZWQpKTsKLSAKLSAj aWZkZWYgRU5BQkxFX1BLQ1MxMQotLQlpZiAob3B0aW9ucy5wa2NzMTFfcHJvdmlkZXIgIT0gTlVM TCAmJgotLQkgICAgb3B0aW9ucy5udW1faWRlbnRpdHlfZmlsZXMgPCBTU0hfTUFYX0lERU5USVRZ X0ZJTEVTICYmCi0tCSAgICAocGtjczExX2luaXQoIW9wdGlvbnMuYmF0Y2hfbW9kZSkgPT0gMCkg JiYKLS0JICAgIChua2V5cyA9IHBrY3MxMV9hZGRfcHJvdmlkZXIob3B0aW9ucy5wa2NzMTFfcHJv dmlkZXIsIE5VTEwsCi0tCSAgICAma2V5cywgJmNvbW1lbnRzKSkgPiAwKSB7Ci0tCQlmb3IgKGkg PSAwOyBpIDwgbmtleXM7IGkrKykgewotLQkJCWlmIChuX2lkcyA+PSBTU0hfTUFYX0lERU5USVRZ X0ZJTEVTKSB7Ci0tCQkJCXNzaGtleV9mcmVlKGtleXNbaV0pOwotLQkJCQlmcmVlKGNvbW1lbnRz W2ldKTsKLS0JCQkJY29udGludWU7Ci0tCQkJfQotLQkJCWlkZW50aXR5X2tleXNbbl9pZHNdID0g a2V5c1tpXTsKLS0JCQlpZGVudGl0eV9maWxlc1tuX2lkc10gPSBjb21tZW50c1tpXTsgLyogdHJh bnNmZXJyZWQgKi8KLS0JCQluX2lkcysrOwotLQkJfQotLQkJZnJlZShrZXlzKTsKLS0JCWZyZWUo Y29tbWVudHMpOwotKwkvKiBoYW5kbGUgZmFsbGJhY2sgZnJvbSBQS0NTMTFQcm92aWRlciBvcHRp b24gKi8KLSsJcGtjczExX2luaXQoIW9wdGlvbnMuYmF0Y2hfbW9kZSk7Ci0rCi0rCWlmIChvcHRp b25zLnBrY3MxMV9wcm92aWRlciAhPSBOVUxMKSB7Ci0rCQlzdHJ1Y3QgcGtjczExX3VyaSAqdXJp OwotKwotKwkJdXJpID0gcGtjczExX3VyaV9pbml0KCk7Ci0rCQlpZiAodXJpID09IE5VTEwpCi0r CQkJZmF0YWwoIkZhaWxlZCB0byBpbml0IFBLQ1MjMTEgVVJJIik7Ci0rCi0rCQkvKiBDb25zdHJ1 Y3Qgc2ltcGxlIFBLQ1MjMTEgVVJJIHRvIHNpbXBsaWZ5IGFjY2VzcyAqLwotKwkJdXJpLT5tb2R1 bGVfcGF0aCA9IHN0cmR1cChvcHRpb25zLnBrY3MxMV9wcm92aWRlcik7Ci0rCi0rCQkvKiBBZGQg aXQgYXMgYW55IG90aGVyIElkZW50aXR5RmlsZSAqLwotKwkJY3AgPSBwa2NzMTFfdXJpX2dldCh1 cmkpOwotKwkJYWRkX2lkZW50aXR5X2ZpbGUoJm9wdGlvbnMsIE5VTEwsIGNwLCAxKTsKLSsJCWZy ZWUoY3ApOwotKwotKwkJcGtjczExX3VyaV9jbGVhbnVwKHVyaSk7Ci0gCX0KLSAjZW5kaWYgLyog RU5BQkxFX1BLQ1MxMSAqLwotIAlmb3IgKGkgPSAwOyBpIDwgb3B0aW9ucy5udW1faWRlbnRpdHlf ZmlsZXM7IGkrKykgewotKwkJY2hhciAqbmFtZSA9IG9wdGlvbnMuaWRlbnRpdHlfZmlsZXNbaV07 Ci0gCQlpZiAobl9pZHMgPj0gU1NIX01BWF9JREVOVElUWV9GSUxFUyB8fAotLQkJICAgIHN0cmNh c2VjbXAob3B0aW9ucy5pZGVudGl0eV9maWxlc1tpXSwgIm5vbmUiKSA9PSAwKSB7Ci0rCQkgICAg c3RyY2FzZWNtcChuYW1lLCAibm9uZSIpID09IDApIHsKLSAJCQlmcmVlKG9wdGlvbnMuaWRlbnRp dHlfZmlsZXNbaV0pOwotIAkJCW9wdGlvbnMuaWRlbnRpdHlfZmlsZXNbaV0gPSBOVUxMOwotIAkJ CWNvbnRpbnVlOwotIAkJfQotLQkJY3AgPSB0aWxkZV9leHBhbmRfZmlsZW5hbWUob3B0aW9ucy5p ZGVudGl0eV9maWxlc1tpXSwgZ2V0dWlkKCkpOwotKyNpZmRlZiBFTkFCTEVfUEtDUzExCi0rCQlp ZiAoc3RybGVuKG5hbWUpID49IHN0cmxlbihQS0NTMTFfVVJJX1NDSEVNRSkgJiYKLSsJCSAgICBz dHJuY21wKG5hbWUsIFBLQ1MxMV9VUklfU0NIRU1FLAotKwkJICAgIHN0cmxlbihQS0NTMTFfVVJJ X1NDSEVNRSkpID09IDApIHsKLSsJCQlsb2FkX3BrY3MxMV9pZGVudGl0eShuYW1lLCBpZGVudGl0 eV9maWxlcywKLSsJCQkgICAgaWRlbnRpdHlfa2V5cywgJm5faWRzKTsKLSsJCQlmcmVlKG9wdGlv bnMuaWRlbnRpdHlfZmlsZXNbaV0pOwotKwkJCWNvbnRpbnVlOwotKwkJfQotKyNlbmRpZiAvKiBF TkFCTEVfUEtDUzExICovCi0rCQljcCA9IHRpbGRlX2V4cGFuZF9maWxlbmFtZShuYW1lLCBnZXR1 aWQoKSk7Ci0gCQlmaWxlbmFtZSA9IGRlZmF1bHRfY2xpZW50X3BlcmNlbnRfZG9sbGFyX2V4cGFu ZChjcCwgY2luZm8pOwotIAkJZnJlZShjcCk7Ci0gCQljaGVja19sb2FkKHNzaGtleV9sb2FkX3B1 YmxpYyhmaWxlbmFtZSwgJnB1YmxpYywgTlVMTCksCi1kaWZmIC0tZ2l0IGEvc3NoX2NvbmZpZy41 IGIvc3NoX2NvbmZpZy41Ci1pbmRleCBhYjk4YzE3MmYuLjY5OWIzZjY3ZCAxMDA2NDQKLS0tLSBh L3NzaF9jb25maWcuNQotKysrIGIvc3NoX2NvbmZpZy41Ci1AQCAtMTI2Miw2ICsxMjYyLDIxIEBA IG1heSBhbHNvIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aAotIC5DbSBDZXJ0aWZpY2F0ZUZp bGUKLSBpbiBvcmRlciB0byBwcm92aWRlIGFueSBjZXJ0aWZpY2F0ZSBhbHNvIG5lZWRlZCBmb3Ig YXV0aGVudGljYXRpb24gd2l0aAotIHRoZSBpZGVudGl0eS4KLSsuUHAKLStUaGUgYXV0aGVudGlj YXRpb24gaWRlbnRpdHkgY2FuIGJlIGFsc28gc3BlY2lmaWVkIGluIGEgZm9ybSBvZiBQS0NTIzEx IFVSSQotK3N0YXJ0aW5nIHdpdGggYSBzdHJpbmcKLSsuQ20gcGtjczExOiAuCi0rVGhlcmUgaXMg c3VwcG9ydGVkIGEgc3Vic2V0IG9mIHRoZSBQS0NTIzExIFVSSSBhcyBkZWZpbmVkCi0raW4gUkZD IDc1MTIgKGltcGxlbWVudGVkIHBhdGggYXJndW1lbnRzCi0rLkNtIGlkICwKLSsuQ20gbWFudWZh Y3R1cmVyICwKLSsuQ20gb2JqZWN0ICwKLSsuQ20gdG9rZW4KLSthbmQgcXVlcnkgYXJndW1lbnRz Ci0rLkNtIG1vZHVsZS1wYXRoCi0rYW5kCi0rLkNtIHBpbi12YWx1ZQotKykuIFRoZSBVUkkgY2Fu IG5vdCBiZSBpbiBxdW90ZXMuCi0gLkl0IENtIElnbm9yZVVua25vd24KLSBTcGVjaWZpZXMgYSBw YXR0ZXJuLWxpc3Qgb2YgdW5rbm93biBvcHRpb25zIHRvIGJlIGlnbm9yZWQgaWYgdGhleSBhcmUK LSBlbmNvdW50ZXJlZCBpbiBjb25maWd1cmF0aW9uIHBhcnNpbmcuCi1kaWZmIC0tZ2l0IGEvc3No a2V5LmMgYi9zc2hrZXkuYwotaW5kZXggNTIyNWVhYmYyLi41ODNmNjQyMWQgMTAwNjQ0Ci0tLS0g YS9zc2hrZXkuYwotKysrIGIvc3Noa2V5LmMKLUBAIC04NTYsOCArODU2LDEwIEBAIHNzaGtleV9m cmVlX2NvbnRlbnRzKHN0cnVjdCBzc2hrZXkgKmspCi0gCi0gCWlmIChrID09IE5VTEwpCi0gCQly ZXR1cm47Ci0rI2lmZGVmIEVOQUJMRV9QS0NTMTEKLSAJaWYgKChrLT5mbGFncyAmIFNTSEtFWV9G TEFHX0VYVCkgIT0gMCkKLSAJCXBrY3MxMV9rZXlfZnJlZShrKTsKLSsjZW5kaWYKLSAJaWYgKChp bXBsID0gc3Noa2V5X2ltcGxfZnJvbV90eXBlKGstPnR5cGUpKSAhPSBOVUxMICYmCi0gCSAgICBp bXBsLT5mdW5jcy0+Y2xlYW51cCAhPSBOVUxMKQotIAkJaW1wbC0+ZnVuY3MtPmNsZWFudXAoayk7 Ci1AQCAtMjMwNCw5ICsyMzA2LDExIEBAIHNzaGtleV9zaWduKHN0cnVjdCBzc2hrZXkgKmtleSwK LSAJaWYgKHNzaGtleV9pc19zayhrZXkpKSB7Ci0gCQlyID0gc3Noc2tfc2lnbihza19wcm92aWRl ciwga2V5LCBzaWdwLCBsZW5wLCBkYXRhLAotIAkJICAgIGRhdGFsZW4sIGNvbXBhdCwgc2tfcGlu KTsKLSsjaWZkZWYgRU5BQkxFX1BLQ1MxMQotIAl9IGVsc2UgaWYgKChrZXktPmZsYWdzICYgU1NI S0VZX0ZMQUdfRVhUKSAhPSAwKSB7Ci0gCQlyID0gcGtjczExX3NpZ24oa2V5LCBzaWdwLCBsZW5w LCBkYXRhLCBkYXRhbGVuLAotIAkJICAgIGFsZywgc2tfcHJvdmlkZXIsIHNrX3BpbiwgY29tcGF0 KTsKLSsjZW5kaWYKLSAJfSBlbHNlIHsKLSAJCWlmIChpbXBsLT5mdW5jcy0+c2lnbiA9PSBOVUxM KQotIAkJCXIgPSBTU0hfRVJSX1NJR05fQUxHX1VOU1VQUE9SVEVEOwotLS0gCi0yLjUzLjAKLQoK ZGlmZiAtLWdpdCBhLzAwNTQtZ3NzYXBpLXRlc3RzLnBhdGNoIGIvMDA1NC1nc3NhcGktdGVzdHMu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmMmI1NTQuLjAwMDAwMDAKLS0t IGEvMDA1NC1nc3NhcGktdGVzdHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNDAgKzAsMCBA QAotZGlmZiAtLWdpdCBhL3JlZ3Jlc3MvTWFrZWZpbGUgYi9yZWdyZXNzL01ha2VmaWxlCi1pbmRl eCBjYmU3YTk2MTAuLmViOWY3YWQwMCAxMDA2NDQKLS0tLSBhL3JlZ3Jlc3MvTWFrZWZpbGUKLSsr KyBiL3JlZ3Jlc3MvTWFrZWZpbGUKLUBAIC0xMjcsNiArMTI3LDcgQEAgSU5URVJPUF9URVNUUys9 CWRyb3BiZWFyLWNpcGhlcnMgZHJvcGJlYXIta2V4IGRyb3BiZWFyLXNlcnZlcgotICNJTlRFUk9Q X1RFU1RTKz1zc2gtY29tIHNzaC1jb20tY2xpZW50IHNzaC1jb20ta2V5Z2VuIHNzaC1jb20tc2Z0 cAotIAotIEVYVFJBX1RFU1RTPQlhZ2VudC1wa2NzMTEKLStFWFRSQV9URVNUUys9CWdzcy1hdXRo IGdzcy1rZXgKLSAjRVhUUkFfVEVTVFMrPSAJY2lwaGVyLXNwZWVkCi0gCi0gVVNFUk5BTUU9CQkk e0xPR05BTUV9Ci1kaWZmIC0tZ2l0IGEvcmVncmVzcy9nc3Mta2V4LnNoIGIvcmVncmVzcy9nc3Mt a2V4LnNoCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwLi4xN2EzYmY2ZjEK LS0tLSAvZGV2L251bGwKLSsrKyBiL3JlZ3Jlc3MvZ3NzLWtleC5zaAotQEAgLTAsMCArMSwyMjIg QEAKLSt0aWQ9IkdTUy1BUEkgS2V5IEV4Y2hhbmdlIgotKwotKyMgU2tpcCB0aGUgdGVzdCBpZiBH U1NBUEkgc3VwcG9ydCBpcyBub3QgY29uZmlndXJlZAotK2lmICEgZ3JlcCAtRSAnXiNkZWZpbmUg R1NTQVBJJyAiJEJVSUxERElSL2NvbmZpZy5oIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSsgICAg c2tpcCAiR1NTQVBJIG5vdCBlbmFibGVkIgotK2ZpCi0rCi0rIyBXZSB0ZXN0IHdpdGggTUlUIEtl cmJlcm9zIEtEQywgc2tpcCBpZiBub3QgaW5zdGFsbGVkCi0raWYgISB3aGljaCBrcmI1a2RjID4v ZGV2L251bGwgMj4mMTsgdGhlbgotKyAgICBza2lwICJNSVQgS2VyYmVyb3MgS0RDIG5vdCBpbnN0 YWxsZWQiCi0rZmkKLSsKLSsjIFRoZSB0ZXN0IG5lZWRzIG5zc193cmFwcGVyIHRvIGVtdWxhdGUg Z2V0aG9zdG5hbWUoKSBhbmQgL2V0Yy9ob3N0cywKLSsjIHdlIHNraXAgaWYgdGhlIHNoYXJlZCBs aWJyYXJ5IGlzIG5vdCBpbnN0YWxsZWQKLStuc3Nfd3JhcHBlcj0ibGlibnNzX3dyYXBwZXIuc28i Ci0raWYgISBsZGNvbmZpZyAtcCB8IGdyZXAgIiRuc3Nfd3JhcHBlciIgPi9kZXYvbnVsbCAyPiYx OyB0aGVuCi0rICAgIHNraXAgIiRuc3Nfd3JhcHBlciBub3QgaW5zdGFsbGVkIgotK2ZpCi0rCi0r IyBTZXQgdXAgdGhlIHVzZXJuYW1lIG9mIHRoZSBTU0ggY2xpZW50Ci0rY2xpZW50PSIkTE9HTkFN RSIKLStpZiBbICJ4JGNsaWVudCIgPSAieCIgXTsgdGhlbgotKwljbGllbnQ9IiQod2hvYW1pKSIK LStmaQotKwotKyMgU2V0IHVwIFNTSEQgYW5kIEtEQyBob3N0bmFtZXMgYW5kIHJlc29sdmUgYm90 aCB0byBsb2NhbGhvc3QKLStzc2hkX2hvc3RuYW1lPSJzc2hkLmV4YW1wbGUub3JnIgotK2tkY19o b3N0bmFtZT0ia2RjLmV4YW1wbGUub3JnIgotK2tkY19wb3J0PTIwODgKLStob3N0cz0iJE9CSi9o b3N0cyIKLStlY2hvICIxMjcuMC4wLjEgJHNzaGRfaG9zdG5hbWUgJGtkY19ob3N0bmFtZSIgPiAi JGhvc3RzIgotKwotKyMgU2V0IHVwIGEgZGlyZWN0b3J5IHRvIHN0b3JlIEtlcmJlcm9zIGRhdGEK LStnc3NkaXI9IiRPQkovZ3NzIgotK21rZGlyIC1wICIkZ3NzZGlyIgotK2V4cG9ydCBLUkI1Q0NO QU1FPSIkZ3NzZGlyL2NjIgotK2V4cG9ydCBLUkI1X0NPTkZJRz0iJGdzc2Rpci9rcmI1LmNvbmYi Ci0rZXhwb3J0IEtSQjVfS0RDX1BST0ZJTEU9IiRnc3NkaXIva2RjLmNvbmYiCi0rZXhwb3J0IEtS QjVfS1ROQU1FPSIkZ3NzZGlyL3NzaC5rZXl0YWIiCi0rZXhwb3J0IEtSQjVSQ0FDSEVUWVBFPSJu b25lIgotK2tkY19waWRmaWxlPSIkZ3NzZGlyL3BpZCIKLSsKLSsjIENvbmZpZ3VyZSBLZXJiZXJv cwotK2NhdDw8RU9GID4gIiRLUkI1X0tEQ19QUk9GSUxFIgotK1tyZWFsbXNdCi0rICAgIEVYQU1Q TEUuT1JHID0gewotKyAgICAgICAgZGF0YWJhc2VfbmFtZSA9ICRnc3NkaXIvcHJpbmNpcGFsCi0r ICAgICAgICBrZXlfc3Rhc2hfZmlsZSA9ICRnc3NkaXIvc3Rhc2gKLSsgICAgICAgIGtkY19saXN0 ZW4gPSAka2RjX2hvc3RuYW1lOiRrZGNfcG9ydAotKyAgICAgICAga2RjX3RjcF9saXN0ZW4gPSAk a2RjX2hvc3RuYW1lOiRrZGNfcG9ydAotKyAgICB9Ci0rW2xvZ2dpbmddCi0rICAgIGtkYyA9IEZJ TEU6JGdzc2Rpci9rZGMubG9nCi0rICAgIGRlYnVnID0gdHJ1ZQotK0VPRgotKwotK2NhdDw8RU9G ID4gIiRLUkI1X0NPTkZJRyIKLStbbGliZGVmYXVsdHNdCi0rICAgIGRlZmF1bHRfcmVhbG0gPSBF WEFNUExFLk9SRwotK1tyZWFsbXNdCi0rICAgIEVYQU1QTEUuT1JHID0gewotKyAgICAgICAga2Rj ID0gJGtkY19ob3N0bmFtZToka2RjX3BvcnQKLSsgICAgfQotK0VPRgotKwotKyMgQmFjayB1cCB0 aGUgZGVmYXVsdCBzc2hkX2NvbmZpZwotK2NwICIkT0JKL3NzaGRfY29uZmlnIiAiJE9CSi9zc2hk X2NvbmZpZy5vcmlnIgotKwotK3NldHVwX3NzaGQoKSB7Ci0rICAgIGtleF9hbGc9IiQxIgotKwot KyAgICBjcCAiJE9CSi9zc2hkX2NvbmZpZy5vcmlnIiAiJE9CSi9zc2hkX2NvbmZpZyIKLSsKLSsg ICAgY2F0PDxFT0YgPj4gIiRPQkovc3NoZF9jb25maWciCi0rUHVia2V5QXV0aGVudGljYXRpb24g bm8KLStQYXNzd29yZEF1dGhlbnRpY2F0aW9uIG5vCi0rR1NTQVBJQXV0aGVudGljYXRpb24geWVz Ci0rR1NTQVBJS2V5RXhjaGFuZ2UgeWVzCi0rR1NTQVBJS2V4QWxnb3JpdGhtcyAka2V4X2FsZwot K0dTU0FQSVN0cmljdEFjY2VwdG9yQ2hlY2sgbm8KLStFT0YKLSsKLSsgICAgdGVzdF9zc2hfc3No ZF9lbnZfYmFja3VwPSIkVEVTVF9TU0hfU1NIRF9FTlYiCi0rICAgIFRFU1RfU1NIX1NTSERfRU5W PSIkVEVTVF9TU0hfU1NIRF9FTlYgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAg ICAgICAgICBMRF9QUkVMT0FEPSRuc3Nfd3JhcHBlciAgICAgICAgICAgICBcCi0rICAgICAgICAg ICAgICAgICAgICAgICBOU1NfV1JBUFBFUl9IT1NUUz0kaG9zdHMgICAgICAgICAgICBcCi0rICAg ICAgICAgICAgICAgICAgICAgICBOU1NfV1JBUFBFUl9IT1NUTkFNRT0kc3NoZF9ob3N0bmFtZSBc Ci0rICAgICAgICAgICAgICAgICAgICAgICBLUkI1X0NPTkZJRz0kS1JCNV9DT05GSUcgICAgICAg ICAgICBcCi0rICAgICAgICAgICAgICAgICAgICAgICBLUkI1X0tEQ19QUk9GSUxFPSRLUkI1X0tE Q19QUk9GSUxFICBcCi0rICAgICAgICAgICAgICAgICAgICAgICBLUkI1Q0NOQU1FPSRLUkI1Q0NO QU1FICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgICAgICBLUkI1X0tUTkFNRT0k S1JCNV9LVE5BTUUgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgICAgICBLUkI1UkNB Q0hFVFlQRT0kS1JCNVJDQUNIRVRZUEUiCi0rICAgIHN0YXJ0X3NzaGQKLSt9Ci0rCi0rdGVhcmRv d25fc3NoZCgpIHsKLSsgICAgVEVTVF9TU0hfU1NIRF9FTlY9IiR0ZXN0X3NzaF9zc2hkX2Vudl9i YWNrdXAiCi0rICAgIHN0b3Bfc3NoZAotK30KLSsKLStzZXR1cF9rZGMoKSB7Ci0rICAgIGtkYjVf dXRpbCBjcmVhdGUgLVAgImZvbyIgLXMKLSsgICAga3JiNWtkYyAtdyAxIC1QICIka2RjX3BpZGZp bGUiCi0rICAgIGk9MDsKLSsgICAgd2hpbGUgWyAhIC1mICIka2RjX3BpZGZpbGUiIC1hICRpIC1s dCAxMCBdOyBkbwotKyAgICAgICAgaT0kKChpICsgMSkpCi0rICAgICAgICBzbGVlcCAxCi0rICAg IGRvbmUKLSsgICAgdGVzdCAtZiAiJGtkY19waWRmaWxlIiB8fCBmYXRhbCAiS0RDIGZhaWxlZCB0 byBzdGFydCIKLSt9Ci0rCi0rdGVhcmRvd25fa2RjKCkgewotKyAgICBraWxsICIkKGNhdCAiJGtk Y19waWRmaWxlIikiCi0rICAgIGtkZXN0cm95Ci0rICAgIHJtIC1mICIkS1JCNV9LVE5BTUUiICIk a2RjX3BpZGZpbGUiCi0rICAgIGtkYjVfdXRpbCBkZXN0cm95IC1mCi0rfQotKwotK3NldHVwX25z c19lbXVsYXRpb24oKSB7Ci0rICAgIGV4cG9ydCBMRF9QUkVMT0FEPSIkbnNzX3dyYXBwZXIiCi0r ICAgIGV4cG9ydCBOU1NfV1JBUFBFUl9IT1NUUz0iJGhvc3RzIgotK30KLSsKLSt0ZWFyZG93bl9u c3NfZW11bGF0aW9uKCkgewotKyAgICB1bnNldCBMRF9QUkVMT0FECi0rICAgIHVuc2V0IE5TU19X UkFQUEVSX0hPU1RTCi0rfQotKwotKyMgR1NTIGtleCBmYW1pbHkgcHJlZml4ZXMgdG8gdGVzdC4K LSsjIEdTU0FQSUtleEFsZ29yaXRobXMgYWNjZXB0cyB0aGVzZSBwcmVmaXhlczsgdGhlIGZ1bGwg YWxnb3JpdGhtIG5hbWVzCi0rIyAocHJlZml4ICsgQmFzZTY0KE1ENShPSUQpKSkgYXJlIGNvbnN0 cnVjdGVkIGR1cmluZyBuZWdvdGlhdGlvbi4KLStnc3Nfa2V4X2ZhbWlsaWVzPSIKLSsgICAgZ3Nz LWdyb3VwMTQtc2hhMjU2LQotKyAgICBnc3MtZ3JvdXAxNi1zaGE1MTItCi0rICAgIGdzcy1uaXN0 cDI1Ni1zaGEyNTYtCi0rICAgIGdzcy1jdXJ2ZTI1NTE5LXNoYTI1Ni0KLSsgICAgZ3NzLWdyb3Vw MTQtc2hhMS0KLSsgICAgZ3NzLWdleC1zaGExLQotKyIKLSsKLSsjIFBvc2l0aXZlIHRlc3RzOiBl YWNoIEdTUyBrZXggYWxnb3JpdGhtIGNvbm5lY3RzIHN1Y2Nlc3NmdWxseQotK2ZvciBrZXhfZmFt aWx5IGluICRnc3Nfa2V4X2ZhbWlsaWVzOyBkbwotKyAgICAjIENoZWNrIGlmIHRoZSBhbGdvcml0 aG0gZmFtaWx5IGlzIHJlY29nbml6ZWQgYnkgc3NoCi0rICAgIGlmICEgJHtTU0h9IC1HIC1GICIk T0JKL3NzaF9jb25maWciIFwKLSsgICAgICAgIC1vICJHU1NBUElLZXlFeGNoYW5nZSB5ZXMiIFwK LSsgICAgICAgIC1vICJHU1NBUElLZXhBbGdvcml0aG1zICRrZXhfZmFtaWx5IiBcCi0rICAgICAg ICAiJGNsaWVudEAkc3NoZF9ob3N0bmFtZSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0rICAgICAg ICB2ZXJib3NlICJnc3Mga2V4ICRrZXhfZmFtaWx5IG5vdCBzdXBwb3J0ZWQsIHNraXBwaW5nIgot KyAgICAgICAgY29udGludWUKLSsgICAgZmkKLSsKLSsgICAgdmVyYm9zZSAiZ3NzIGtleCAka2V4 X2ZhbWlseSIKLSsKLSsgICAgc2V0dXBfbnNzX2VtdWxhdGlvbgotKyAgICBzZXR1cF9rZGMKLSsK LSsgICAga2FkbWluLmxvY2FsIGFkZF9wcmluY2lwYWwgLXJhbmRrZXkgImhvc3QvJHNzaGRfaG9z dG5hbWUiCi0rICAgIGthZG1pbi5sb2NhbCBrdGFkZCAiaG9zdC8kc3NoZF9ob3N0bmFtZSIKLSsg ICAga2FkbWluLmxvY2FsIGFkZF9wcmluY2lwYWwgLXB3ICJmb28iICIkY2xpZW50IgotKyAgICBl Y2hvICJmb28iIHwga2luaXQgIiRjbGllbnQiCi0rCi0rICAgIHNldHVwX3NzaGQgIiRrZXhfZmFt aWx5IgotKwotKyAgICAke1NTSH0gLUYgIiRPQkovc3NoX2NvbmZpZyIgXAotKyAgICAgICAgLW8g IkdTU0FQSUF1dGhlbnRpY2F0aW9uIHllcyIgXAotKyAgICAgICAgLW8gIkdTU0FQSUtleUV4Y2hh bmdlIHllcyIgXAotKyAgICAgICAgLW8gIkdTU0FQSUtleEFsZ29yaXRobXMgJGtleF9mYW1pbHki IFwKLSsgICAgICAgIC1vICJHU1NBUElEZWxlZ2F0ZUNyZWRlbnRpYWxzIG5vIiBcCi0rICAgICAg ICAiJGNsaWVudEAkc3NoZF9ob3N0bmFtZSIgdHJ1ZQotKyAgICBzdGF0dXM9JD8KLSsKLSsgICAg dGVhcmRvd25fc3NoZAotKyAgICB0ZWFyZG93bl9rZGMKLSsgICAgdGVhcmRvd25fbnNzX2VtdWxh dGlvbgotKwotKyAgICBpZiBbICRzdGF0dXMgLW5lIDAgXTsgdGhlbgotKyAgICAgICAgZmFpbCAi Z3NzIGtleCAka2V4X2ZhbWlseSBmYWlsZWQiCi0rICAgIGZpCi0rZG9uZQotKwotKyMgTmVnYXRp dmUgdGVzdDogY29ubmVjdGlvbiBtdXN0IGZhaWwgd2hlbiBrZXl0YWIgaXMgbWlzc2luZwotK3Zl cmJvc2UgImdzcyBrZXggbmVnYXRpdmUgdGVzdDogbm8ga2V5dGFiIgotK2tleF9uZWc9Imdzcy1n cm91cDE0LXNoYTI1Ni0iCi0rCi0raWYgJHtTU0h9IC1HIC1GICIkT0JKL3NzaF9jb25maWciIFwK LSsgICAgLW8gIkdTU0FQSUtleUV4Y2hhbmdlIHllcyIgXAotKyAgICAtbyAiR1NTQVBJS2V4QWxn b3JpdGhtcyAka2V4X25lZyIgXAotKyAgICAiJGNsaWVudEAkc3NoZF9ob3N0bmFtZSIgPi9kZXYv bnVsbCAyPiYxOyB0aGVuCi0rCi0rICAgIHNldHVwX25zc19lbXVsYXRpb24KLSsgICAgc2V0dXBf a2RjCi0rCi0rICAgICMgQ3JlYXRlIGhvc3QgcHJpbmNpcGFsIGJ1dCBkbyBOT1QgZXhwb3J0IHRv IGtleXRhYgotKyAgICBrYWRtaW4ubG9jYWwgYWRkX3ByaW5jaXBhbCAtcmFuZGtleSAiaG9zdC8k c3NoZF9ob3N0bmFtZSIKLSsgICAga2FkbWluLmxvY2FsIGFkZF9wcmluY2lwYWwgLXB3ICJmb28i ICIkY2xpZW50IgotKyAgICBlY2hvICJmb28iIHwga2luaXQgIiRjbGllbnQiCi0rCi0rICAgIHNl dHVwX3NzaGQgIiRrZXhfbmVnIgotKwotKyAgICAke1NTSH0gLUYgIiRPQkovc3NoX2NvbmZpZyIg XAotKyAgICAgICAgLW8gIkdTU0FQSUF1dGhlbnRpY2F0aW9uIHllcyIgXAotKyAgICAgICAgLW8g IkdTU0FQSUtleUV4Y2hhbmdlIHllcyIgXAotKyAgICAgICAgLW8gIkdTU0FQSUtleEFsZ29yaXRo bXMgJGtleF9uZWciIFwKLSsgICAgICAgIC1vICJHU1NBUElEZWxlZ2F0ZUNyZWRlbnRpYWxzIG5v IiBcCi0rICAgICAgICAiJGNsaWVudEAkc3NoZF9ob3N0bmFtZSIgdHJ1ZQotKyAgICBzdGF0dXM9 JD8KLSsKLSsgICAgdGVhcmRvd25fc3NoZAotKyAgICB0ZWFyZG93bl9rZGMKLSsgICAgdGVhcmRv d25fbnNzX2VtdWxhdGlvbgotKwotKyAgICBpZiBbICRzdGF0dXMgLWVxIDAgXTsgdGhlbgotKyAg ICAgICAgZmFpbCAiZ3NzIGtleCBzdWNjZWVkZWQgd2l0aG91dCBrZXl0YWIiCi0rICAgIGZpCi0r ZmkKLSsKLSt1bnNldCBLUkI1Q0NOQU1FCi0rdW5zZXQgS1JCNV9DT05GSUcKLSt1bnNldCBLUkI1 X0tEQ19QUk9GSUxFCi0rdW5zZXQgS1JCNV9LVE5BTUUKLSt1bnNldCBLUkI1UkNBQ0hFVFlQRQot K3JtIC1yZiAiJGdzc2RpciIKCmRpZmYgLS1naXQgYS8xMDAwLW9wZW5zc2gtNi43cDEtY292ZXJp dHkucGF0Y2ggYi8xMDAwLW9wZW5zc2gtNi43cDEtY292ZXJpdHkucGF0Y2gKaW5kZXggYTg1NTU3 MS4uNjQ4YzQyYyAxMDA2NDQKLS0tIGEvMTAwMC1vcGVuc3NoLTYuN3AxLWNvdmVyaXR5LnBhdGNo CisrKyBiLzEwMDAtb3BlbnNzaC02LjdwMS1jb3Zlcml0eS5wYXRjaApAQCAtMSw0ICsxLDQgQEAK LUZyb20gZDAyMjViY2RiYzBkNzgzZGY4NzhjY2ZiNTEyOGJkY2I3ODdkODJlZCBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKK0Zyb20gMjAyNzFlZmRmMjgwMWYxZGRjYzMwOGE4MWRiMTMxNTQ4ODcy YjA1NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IERtaXRyeSBCZWx5YXZza2l5IDxi ZWxkbWl0QGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMTIgRGVjIDIwMjUgMTQ6MjU6NDEgKzAxMDAK IFN1YmplY3Q6IFtQQVRDSCA1NC81NF0gb3BlbnNzaC02LjdwMS1jb3Zlcml0eQpAQCAtOTgsNyAr OTgsNyBAQCBpbmRleCA3NDk5YWE5NzUuLjI4MDdjYWQ0YSAxMDA2NDQKICAJICAgIE1JTl9TSVpF T0YodXQtPnV0X2hvc3QsIGxpLT5ob3N0bmFtZSkpOwogICMgZW5kaWYKIGRpZmYgLS1naXQgYS9t aXNjLmMgYi9taXNjLmMKLWluZGV4IGU5NmZhOGQ2MS4uNTU2YzExMmMzIDEwMDY0NAoraW5kZXgg YzBlMTY0MzdhLi5mNTI3NWQxMDggMTAwNjQ0CiAtLS0gYS9taXNjLmMKICsrKyBiL21pc2MuYwog QEAgLTE2MjAsNiArMTYyMCw4IEBAIHNhbml0aXNlX3N0ZGZkKHZvaWQpCkBAIC0xMTAsNyArMTEw LDcgQEAgaW5kZXggZTk2ZmE4ZDYxLi41NTZjMTEyYzMgMTAwNjQ0CiAgfQogIAogIGNoYXIgKgot QEAgLTI4MjEsNiArMjgyMyw3IEBAIHN0ZGZkX2Rldm51bGwoaW50IGRvX3N0ZGluLCBpbnQgZG9f c3Rkb3V0LCBpbnQgZG9fc3RkZXJyKQorQEAgLTI4MjMsNiArMjgyNSw3IEBAIHN0ZGZkX2Rldm51 bGwoaW50IGRvX3N0ZGluLCBpbnQgZG9fc3Rkb3V0LCBpbnQgZG9fc3RkZXJyKQogIAl9CiAgCWlm IChkZXZudWxsID4gU1RERVJSX0ZJTEVOTykKICAJCWNsb3NlKGRldm51bGwpOwpAQCAtMTE5LDcg KzExOSw3IEBAIGluZGV4IGU5NmZhOGQ2MS4uNTU2YzExMmMzIDEwMDY0NAogIH0KICAKIGRpZmYg LS1naXQgYS9tb25pdG9yLmMgYi9tb25pdG9yLmMKLWluZGV4IDM2ZGIxYWZlZS4uM2I2MDA1OWE5 IDEwMDY0NAoraW5kZXggNjMxODBlMmE5Li5iZTU1YTMyZjMgMTAwNjQ0CiAtLS0gYS9tb25pdG9y LmMKICsrKyBiL21vbml0b3IuYwogQEAgLTQxMCw3ICs0MTAsNyBAQCBtb25pdG9yX2NoaWxkX3By ZWF1dGgoc3RydWN0IHNzaCAqc3NoLCBzdHJ1Y3QgbW9uaXRvciAqcG1vbml0b3IpCkBAIC0xMzEs NyArMTMxLDcgQEAgaW5kZXggMzZkYjFhZmVlLi4zYjYwMDU5YTkgMTAwNjQ0CiAgCQk7CiAgCiAg CS8qIFdhaXQgZm9yIHRoZSBjaGlsZCdzIGV4aXQgc3RhdHVzICovCi1AQCAtMTg1NSw3ICsxODU1 LDcgQEAgbW1fYW5zd2VyX3B0eShzdHJ1Y3Qgc3NoICpzc2gsIGludCBzb2NrLCBzdHJ1Y3Qgc3No YnVmICptKQorQEAgLTE4MjksNyArMTgyOSw3IEBAIG1tX2Fuc3dlcl9wdHkoc3RydWN0IHNzaCAq c3NoLCBpbnQgc29jaywgc3RydWN0IHNzaGJ1ZiAqbSkKICAJcy0+cHR5bWFzdGVyID0gcy0+cHR5 ZmQ7CiAgCiAgCWRlYnVnM19mKCJ0dHkgJXMgcHR5ZmQgJWQiLCBzLT50dHksIHMtPnR0eWZkKTsK QEAgLTE4NSw3ICsxODUsNyBAQCBpbmRleCAyNmJkYzNlMDguLjhlMjkzOWI5NSAxMDA2NDQKICAJ CUZEX0NMUihub3RpZnlfcGlwZVswXSwgcmVhZHNldCk7CiAgCX0KIGRpZmYgLS1naXQgYS9yZWFk Y29uZi5jIGIvcmVhZGNvbmYuYwotaW5kZXggMDU4ZTUzY2YxLi4xNGYxNDljYzEgMTAwNjQ0Citp bmRleCBlOTcxY2E1YzQuLjRiYWViMTA4ZCAxMDA2NDQKIC0tLSBhL3JlYWRjb25mLmMKICsrKyBi L3JlYWRjb25mLmMKIEBAIC0yMTY0LDYgKzIxNjQsNyBAQCBwYXJzZV9wdWJrZXlfYWxnb3M6CkBA IC0xOTcsMTAgKzE5NywxMCBAQCBpbmRleCAwNThlNTNjZjEuLjE0ZjE0OWNjMSAxMDA2NDQKICAJ CQl9CiAgCQkJZnJlZShhcmcyKTsKIGRpZmYgLS1naXQgYS9zZXJ2Y29uZi5jIGIvc2VydmNvbmYu YwotaW5kZXggZTA1YTMxNTg0Li4zZmZhNDljM2EgMTAwNjQ0CitpbmRleCBhYjczMjdhMmEuLjg0 ODBlOTMyMSAxMDA2NDQKIC0tLSBhL3NlcnZjb25mLmMKICsrKyBiL3NlcnZjb25mLmMKLUBAIC0y MzgyLDggKzIzODIsOSBAQCBwcm9jZXNzX3NlcnZlcl9jb25maWdfbGluZV9kZXB0aChTZXJ2ZXJP cHRpb25zICpvcHRpb25zLCBjaGFyICpsaW5lLAorQEAgLTIxMjEsOCArMjEyMSw5IEBAIHByb2Nl c3Nfc2VydmVyX2NvbmZpZ19saW5lX2RlcHRoKFNlcnZlck9wdGlvbnMgKm9wdGlvbnMsIGNoYXIg KmxpbmUsCiAgCQlpZiAoKmFjdGl2ZXAgJiYgKmNoYXJwdHIgPT0gTlVMTCkgewogIAkJCSpjaGFy cHRyID0gdGlsZGVfZXhwYW5kX2ZpbGVuYW1lKGFyZywgZ2V0dWlkKCkpOwogIAkJCS8qIGluY3Jl YXNlIG9wdGlvbmFsIGNvdW50ZXIgKi8KQEAgLTIxMyw3ICsyMTMsNyBAQCBpbmRleCBlMDVhMzE1 ODQuLjNmZmE0OWMzYSAxMDA2NDQKICAJCWJyZWFrOwogIAogZGlmZiAtLWdpdCBhL3NlcnZlcmxv b3AuYyBiL3NlcnZlcmxvb3AuYwotaW5kZXggMTA4N2E2YzdkLi5iNjVjOWRkNjYgMTAwNjQ0Citp bmRleCBlNTA5ODVlOTAuLmRlMmRmZWVmOSAxMDA2NDQKIC0tLSBhL3NlcnZlcmxvb3AuYwogKysr IGIvc2VydmVybG9vcC5jCiBAQCAtNTM2LDcgKzUzNiw3IEBAIHNlcnZlcl9yZXF1ZXN0X3R1bihz dHJ1Y3Qgc3NoICpzc2gpCkBAIC0yMjYsNSArMjI2LDUgQEAgaW5kZXggMTA4N2E2YzdkLi5iNjVj OWRkNjYgMTAwNjQ0CiAgCQkgICAgYXV0aF9vcHRzLT5mb3JjZV90dW5fZGV2aWNlICE9IChpbnQp dHVuKQogIAkJCWdvdG8gZG9uZTsKIC0tIAotMi41My4wCisyLjU1LjAKIAoKZGlmZiAtLWdpdCBh L29wZW5zc2guc3BlYyBiL29wZW5zc2guc3BlYwppbmRleCAxM2JhMzZkLi4wNTNkOTI0IDEwMDY0 NAotLS0gYS9vcGVuc3NoLnNwZWMKKysrIGIvb3BlbnNzaC5zcGVjCkBAIC0zNCwxMiArMzQsMTIg QEAKICMgcnBtIC1iYXwtLXJlYnVpbGQgLS1kZWZpbmUgJ25vX2d0azMgMScKICV7P25vX2d0azM6 JWdsb2JhbCBndGszIDB9CiAKLSVnbG9iYWwgb3BlbnNzaF92ZXIgMTAuM3AxCislZ2xvYmFsIG9w ZW5zc2hfdmVyIDEwLjRwMQogCiBTdW1tYXJ5OiBBbiBvcGVuIHNvdXJjZSBpbXBsZW1lbnRhdGlv biBvZiBTU0ggcHJvdG9jb2wgdmVyc2lvbiAyCiBOYW1lOiBvcGVuc3NoCiBWZXJzaW9uOiAle29w ZW5zc2hfdmVyfQotUmVsZWFzZTogOCV7P2Rpc3R9CitSZWxlYXNlOiAxJXs/ZGlzdH0KIFVSTDog aHR0cDovL3d3dy5vcGVuc3NoLmNvbS9wb3J0YWJsZS5odG1sCiBTb3VyY2UwOiBmdHA6Ly9mdHAu b3BlbmJzZC5vcmcvcHViL09wZW5CU0QvT3BlblNTSC9wb3J0YWJsZS9vcGVuc3NoLSV7dmVyc2lv bn0udGFyLmd6CiBTb3VyY2UxOiBmdHA6Ly9mdHAub3BlbmJzZC5vcmcvcHViL09wZW5CU0QvT3Bl blNTSC9wb3J0YWJsZS9vcGVuc3NoLSV7dmVyc2lvbn0udGFyLmd6LmFzYwpAQCAtNjEsNTkgKzYx LDU5IEBAIFNvdXJjZTIxOiBzc2gtaG9zdC1rZXlzLW1pZ3JhdGlvbi5zZXJ2aWNlCiBTb3VyY2Uy MjogcGFyYWxsZWxfdGVzdC5zaAogU291cmNlMjM6IHBhcmFsbGVsX3Rlc3QuTWFrZWZpbGUKIAot UGF0Y2gwMDAxOiAwMDAxLUFkZC1TRUxpbnV4LXJvbGUtYW5kLU1MUy1NdWx0aS1MZXZlbC1TZWN1 cml0eS1zdXBwb3IucGF0Y2gKLVBhdGNoMDAwMjogMDAwMi1JbXBsZW1lbnQtU0VMaW51eC1lbnZp cm9ubWVudC12YXJpYWJsZS1zZXR1cC1mb3Itc3ViLnBhdGNoCi1QYXRjaDAwMDM6IDAwMDMtUGFz cy1pbmV0ZC1mbGFncy1hbmQtYXV0aC1jb250ZXh0LXRvLXN1YnByb2Nlc3MtY2FsbC5wYXRjaAot UGF0Y2gwMDA0OiAwMDA0LW9wZW5zc2gtNi42cDEta2V5Y2F0LnBhdGNoCi1QYXRjaDAwMDU6IDAw MDUtb3BlbnNzaC02LjZwMS1hbGxvdy1pcC1vcHRzLnBhdGNoCi1QYXRjaDAwMDY6IDAwMDYtb3Bl bnNzaC01LjlwMS1pcHY2bWFuLnBhdGNoCi1QYXRjaDAwMDc6IDAwMDctb3BlbnNzaC01LjhwMi1z aWdwaXBlLnBhdGNoCi1QYXRjaDAwMDk6IDAwMDktb3BlbnNzaC01LjFwMS1hc2twYXNzLXByb2dy ZXNzLnBhdGNoCi1QYXRjaDAwMTA6IDAwMTAtb3BlbnNzaC00LjNwMi1hc2twYXNzLWdyYWItaW5m by5wYXRjaAotUGF0Y2gwMDExOiAwMDExLW9wZW5zc2gtOC43cDEtcmVkaGF0LnBhdGNoCi1QYXRj aDAwMTI6IDAwMTItb3BlbnNzaC03LjhwMS1Vc2VQQU0td2FybmluZy5wYXRjaAotUGF0Y2gwMDEz OiAwMDEzLW9wZW5zc2gtOS42cDEtZ3NzYXBpLWtleWV4LnBhdGNoCi1QYXRjaDAwMTQ6IDAwMTQt b3BlbnNzaC02LjZwMS1mb3JjZV9rcmIucGF0Y2gKLVBhdGNoMDAxNTogMDAxNS1vcGVuc3NoLTcu N3AxLWdzc2FwaS1uZXctdW5pcXVlLnBhdGNoCi1QYXRjaDAwMTY6IDAwMTYtb3BlbnNzaC03LjJw Mi1rNWxvZ2luX2RpcmVjdG9yeS5wYXRjaAotUGF0Y2gwMDE3OiAwMDE3LW9wZW5zc2gtNi42cDEt a3VzZXJvay5wYXRjaAotUGF0Y2gwMDE4OiAwMDE4LW9wZW5zc2gtNi40cDEtZnJvbXRvLXJlbW90 ZS5wYXRjaAotUGF0Y2gwMDE5OiAwMDE5LW9wZW5zc2gtNi42LjFwMS1sb2ctaW4tY2hyb290LnBh dGNoCi1QYXRjaDAwMjA6IDAwMjAtb3BlbnNzaC02LjYuMXAxLXNjcC1ub24tZXhpc3RpbmctZGly ZWN0b3J5LnBhdGNoCi1QYXRjaDAwMjE6IDAwMjEtb3BlbnNzaC02LjZwMS1HU1NBUElFbmFibGVr NXVzZXJzLnBhdGNoCi1QYXRjaDAwMjI6IDAwMjItb3BlbnNzaC02LjhwMS1zc2hkVC1vdXRwdXQu cGF0Y2gKLVBhdGNoMDAyMzogMDAyMy1vcGVuc3NoLTYuN3AxLXNmdHAtZm9yY2UtcGVybWlzc2lv bi5wYXRjaAotUGF0Y2gwMDI0OiAwMDI0LW9wZW5zc2gtNy4ycDItczM5MC1jbG9zZWZyb20ucGF0 Y2gKLVBhdGNoMDAyNTogMDAyNS1vcGVuc3NoLTcuNXAxLXNhbmRib3gucGF0Y2gKLVBhdGNoMDAy NjogMDAyNi1vcGVuc3NoLTcuOHAxLXNjcC1pcHY2LnBhdGNoCi1QYXRjaDAwMjc6IDAwMjctb3Bl bnNzaC04LjBwMS1jcnlwdG8tcG9saWNpZXMucGF0Y2gKLVBhdGNoMDAyODogMDAyOC1vcGVuc3No LTguMHAxLW9wZW5zc2wta2RmLnBhdGNoCi1QYXRjaDAwMjk6IDAwMjktb3BlbnNzaC04LjJwMS12 aXNpYmlsaXR5LnBhdGNoCi1QYXRjaDAwMzA6IDAwMzAtb3BlbnNzaC04LjJwMS14MTEtd2l0aG91 dC1pcHY2LnBhdGNoCi1QYXRjaDAwMzE6IDAwMzEtb3BlbnNzaC04LjBwMS1wcmVzZXJ2ZS1wYW0t ZXJyb3JzLnBhdGNoCi1QYXRjaDAwMzI6IDAwMzItb3BlbnNzaC04LjdwMS1zY3Ata2lsbC1zd2l0 Y2gucGF0Y2gKLVBhdGNoMDAzMzogMDAzMy1vcGVuc3NoLTguN3AxLXJlY3Vyc2l2ZS1zY3AucGF0 Y2gKLVBhdGNoMDAzNDogMDAzNC1vcGVuc3NoLTguN3AxLWlibWNhLnBhdGNoCi1QYXRjaDAwMzU6 IDAwMzUtb3BlbnNzaC03LjZwMS1hdWRpdC5wYXRjaAotUGF0Y2gwMDM2OiAwMDM2LW9wZW5zc2gt Ny4xcDItYXVkaXQtcmFjZS1jb25kaXRpb24ucGF0Y2gKLVBhdGNoMDAzNzogMDAzNy1vcGVuc3No LTkuMHAxLWF1ZGl0LWxvZy5wYXRjaAotUGF0Y2gwMDM4OiAwMDM4LW9wZW5zc2gtNy43cDEtZmlw cy5wYXRjaAotUGF0Y2gwMDM5OiAwMDM5LW9wZW5zc2gtOC43cDEtbmVnb3RpYXRlLXN1cHBvcnRl ZC1hbGdzLnBhdGNoCi1QYXRjaDAwNDA6IDAwNDAtb3BlbnNzaC05LjBwMS1ldnAtZmlwcy1rZXgu cGF0Y2gKLVBhdGNoMDA0MTogMDA0MS1vcGVuc3NoLTguN3AxLW5vaG9zdHNoYTFwcm9vZi5wYXRj aAotUGF0Y2gwMDQyOiAwMDQyLW9wZW5zc2gtOS45cDEtc2VwYXJhdGUta2V5c2lnbi5wYXRjaAot UGF0Y2gwMDQzOiAwMDQzLW9wZW5zc2gtOS45cDEtb3BlbnNzbC1tbGtlbS5wYXRjaAotUGF0Y2gw MDQ0OiAwMDQ0LW9wZW5zc2gtOS45cDItZXJyb3JfcHJvY2Vzc2luZy5wYXRjaAotUGF0Y2gwMDQ1 OiAwMDQ1LVByb3ZpZGUtYmV0dGVyLWVycm9yLWZvci1ub24tc3VwcG9ydGVkLXByaXZhdGUta2V5 cy5wYXRjaAotUGF0Y2gwMDQ2OiAwMDQ2LUlnbm9yZS1iYWQtaG9zdGtleXMtaW4ta25vd25faG9z dHMtZmlsZS5wYXRjaAotUGF0Y2gwMDQ3OiAwMDQ3LXN1cHBvcnQtYXV0aGVudGljYXRpb24taW5k aWNhdG9ycy1pbi1HU1NBUEkucGF0Y2gKLVBhdGNoMDA0ODogMDA0OC1OSVNULWN1cnZlcy1oeWJy aWQtS0VYLWltcGxlbWVudGF0aW9uLnBhdGNoCi1QYXRjaDAwNDk6IDAwNDktb3BlbnNzaC03LjNw MS14MTEtbWF4LWRpc3BsYXlzLnBhdGNoCi1QYXRjaDAwNTA6IDAwNTAtRml4LXNzaC1wa2NzMTEt Y2xpZW50LWhlbHBlci10ZXJtaW5hdGlvbi5wYXRjaAotUGF0Y2gwMDUxOiAwMDUxLW9wZW5zc2gt MTAuMnAxLXBhbS1hdXRoLnBhdGNoCi1QYXRjaDAwNTI6IDAwNTItZ3NzYXBpLXM0dS5wYXRjaAot UGF0Y2gwMDUzOiAwMDUzLW9wZW5zc2gtMTAuMnAxLXBrY3MxMS11cmkucGF0Y2gKLVBhdGNoMDA1 NDogMDA1NC1nc3NhcGktdGVzdHMucGF0Y2gKK1BhdGNoMDAwMTogMDAwMS11cHN0cmVhbS1maXgt R1NTQVBJLW9wdGlvbi1uYW1lcy10aGF0LUktc29tZWhvdy1zY3JlLnBhdGNoCitQYXRjaDAwMDI6 IDAwMDItQWRkLVNFTGludXgtcm9sZS1hbmQtTUxTLU11bHRpLUxldmVsLVNlY3VyaXR5LXN1cHBv ci5wYXRjaAorUGF0Y2gwMDAzOiAwMDAzLUltcGxlbWVudC1TRUxpbnV4LWVudmlyb25tZW50LXZh cmlhYmxlLXNldHVwLWZvci1zdWIucGF0Y2gKK1BhdGNoMDAwNDogMDAwNC1QYXNzLWluZXRkLWZs YWdzLWFuZC1hdXRoLWNvbnRleHQtdG8tc3VicHJvY2Vzcy1jYWxsLnBhdGNoCitQYXRjaDAwMDU6 IDAwMDUtb3BlbnNzaC02LjZwMS1rZXljYXQucGF0Y2gKK1BhdGNoMDAwNjogMDAwNi1vcGVuc3No LTYuNnAxLWFsbG93LWlwLW9wdHMucGF0Y2gKK1BhdGNoMDAwNzogMDAwNy1vcGVuc3NoLTUuOXAx LWlwdjZtYW4ucGF0Y2gKK1BhdGNoMDAwOTogMDAwOC1vcGVuc3NoLTUuOHAyLXNpZ3BpcGUucGF0 Y2gKK1BhdGNoMDAxMDogMDAwOS1vcGVuc3NoLTUuMXAxLWFza3Bhc3MtcHJvZ3Jlc3MucGF0Y2gK K1BhdGNoMDAxMTogMDAxMC1vcGVuc3NoLTQuM3AyLWFza3Bhc3MtZ3JhYi1pbmZvLnBhdGNoCitQ YXRjaDAwMTI6IDAwMTEtb3BlbnNzaC04LjdwMS1yZWRoYXQucGF0Y2gKK1BhdGNoMDAxMzogMDAx Mi1vcGVuc3NoLTcuOHAxLVVzZVBBTS13YXJuaW5nLnBhdGNoCitQYXRjaDAwMTQ6IDAwMTMtb3Bl bnNzaC05LjZwMS1nc3NhcGkta2V5ZXgucGF0Y2gKK1BhdGNoMDAxNTogMDAxNC1vcGVuc3NoLTYu NnAxLWZvcmNlX2tyYi5wYXRjaAorUGF0Y2gwMDE2OiAwMDE1LW9wZW5zc2gtNy43cDEtZ3NzYXBp LW5ldy11bmlxdWUucGF0Y2gKK1BhdGNoMDAxNzogMDAxNi1vcGVuc3NoLTcuMnAyLWs1bG9naW5f ZGlyZWN0b3J5LnBhdGNoCitQYXRjaDAwMTg6IDAwMTctb3BlbnNzaC02LjZwMS1rdXNlcm9rLnBh dGNoCitQYXRjaDAwMTk6IDAwMTgtb3BlbnNzaC02LjRwMS1mcm9tdG8tcmVtb3RlLnBhdGNoCitQ YXRjaDAwMjA6IDAwMTktb3BlbnNzaC02LjYuMXAxLWxvZy1pbi1jaHJvb3QucGF0Y2gKK1BhdGNo MDAyMTogMDAyMC1vcGVuc3NoLTYuNi4xcDEtc2NwLW5vbi1leGlzdGluZy1kaXJlY3RvcnkucGF0 Y2gKK1BhdGNoMDAyMjogMDAyMS1vcGVuc3NoLTYuNnAxLUdTU0FQSUVuYWJsZWs1dXNlcnMucGF0 Y2gKK1BhdGNoMDAyMzogMDAyMi1vcGVuc3NoLTYuOHAxLXNzaGRULW91dHB1dC5wYXRjaAorUGF0 Y2gwMDI0OiAwMDIzLW9wZW5zc2gtNi43cDEtc2Z0cC1mb3JjZS1wZXJtaXNzaW9uLnBhdGNoCitQ YXRjaDAwMjU6IDAwMjQtb3BlbnNzaC03LjJwMi1zMzkwLWNsb3NlZnJvbS5wYXRjaAorUGF0Y2gw MDI2OiAwMDI1LW9wZW5zc2gtNy41cDEtc2FuZGJveC5wYXRjaAorUGF0Y2gwMDI3OiAwMDI2LW9w ZW5zc2gtNy44cDEtc2NwLWlwdjYucGF0Y2gKK1BhdGNoMDAyODogMDAyNy1vcGVuc3NoLTguMHAx LWNyeXB0by1wb2xpY2llcy5wYXRjaAorUGF0Y2gwMDI5OiAwMDI4LW9wZW5zc2gtOC4wcDEtb3Bl bnNzbC1rZGYucGF0Y2gKK1BhdGNoMDAzMDogMDAyOS1vcGVuc3NoLTguMnAxLXZpc2liaWxpdHku cGF0Y2gKK1BhdGNoMDAzMTogMDAzMC1vcGVuc3NoLTguMnAxLXgxMS13aXRob3V0LWlwdjYucGF0 Y2gKK1BhdGNoMDAzMjogMDAzMS1vcGVuc3NoLTguMHAxLXByZXNlcnZlLXBhbS1lcnJvcnMucGF0 Y2gKK1BhdGNoMDAzMzogMDAzMi1vcGVuc3NoLTguN3AxLXNjcC1raWxsLXN3aXRjaC5wYXRjaAor UGF0Y2gwMDM0OiAwMDMzLW9wZW5zc2gtOC43cDEtcmVjdXJzaXZlLXNjcC5wYXRjaAorUGF0Y2gw MDM1OiAwMDM0LW9wZW5zc2gtOC43cDEtaWJtY2EucGF0Y2gKK1BhdGNoMDAzNjogMDAzNS1vcGVu c3NoLTcuNnAxLWF1ZGl0LnBhdGNoCitQYXRjaDAwMzc6IDAwMzYtb3BlbnNzaC03LjFwMi1hdWRp dC1yYWNlLWNvbmRpdGlvbi5wYXRjaAorUGF0Y2gwMDM4OiAwMDM3LW9wZW5zc2gtOS4wcDEtYXVk aXQtbG9nLnBhdGNoCitQYXRjaDAwMzk6IDAwMzgtb3BlbnNzaC03LjdwMS1maXBzLnBhdGNoCitQ YXRjaDAwNDA6IDAwMzktb3BlbnNzaC04LjdwMS1uZWdvdGlhdGUtc3VwcG9ydGVkLWFsZ3MucGF0 Y2gKK1BhdGNoMDA0MTogMDA0MC1vcGVuc3NoLTkuMHAxLWV2cC1maXBzLWtleC5wYXRjaAorUGF0 Y2gwMDQyOiAwMDQxLW9wZW5zc2gtOC43cDEtbm9ob3N0c2hhMXByb29mLnBhdGNoCitQYXRjaDAw NDM6IDAwNDItb3BlbnNzaC05LjlwMS1zZXBhcmF0ZS1rZXlzaWduLnBhdGNoCitQYXRjaDAwNDQ6 IDAwNDMtb3BlbnNzaC05LjlwMS1vcGVuc3NsLW1sa2VtLnBhdGNoCitQYXRjaDAwNDU6IDAwNDQt b3BlbnNzaC05LjlwMi1lcnJvcl9wcm9jZXNzaW5nLnBhdGNoCitQYXRjaDAwNDY6IDAwNDUtSWdu b3JlLWJhZC1ob3N0a2V5cy1pbi1rbm93bl9ob3N0cy1maWxlLnBhdGNoCitQYXRjaDAwNDc6IDAw NDYtc3VwcG9ydC1hdXRoZW50aWNhdGlvbi1pbmRpY2F0b3JzLWluLUdTU0FQSS5wYXRjaAorUGF0 Y2gwMDQ4OiAwMDQ3LU5JU1QtY3VydmVzLWh5YnJpZC1LRVgtaW1wbGVtZW50YXRpb24ucGF0Y2gK K1BhdGNoMDA0OTogMDA0OC1vcGVuc3NoLTcuM3AxLXgxMS1tYXgtZGlzcGxheXMucGF0Y2gKK1Bh dGNoMDA1MDogMDA0OS1GaXgtc3NoLXBrY3MxMS1jbGllbnQtaGVscGVyLXRlcm1pbmF0aW9uLnBh dGNoCitQYXRjaDAwNTE6IDAwNTAtb3BlbnNzaC0xMC4ycDEtcGFtLWF1dGgucGF0Y2gKK1BhdGNo MDA1MjogMDA1MS1nc3NhcGktczR1LnBhdGNoCitQYXRjaDAwNTM6IDAwNTItb3BlbnNzaC0xMC4y cDEtcGtjczExLXVyaS5wYXRjaAorUGF0Y2gwMDU0OiAwMDUzLWdzc2FwaS10ZXN0cy5wYXRjaAog UGF0Y2gxMDAwOiAxMDAwLW9wZW5zc2gtNi43cDEtY292ZXJpdHkucGF0Y2gKIAogTGljZW5zZTog QlNELTMtQ2xhdXNlIEFORCBCU0QtMi1DbGF1c2UgQU5EIElTQyBBTkQgU1NILU9wZW5TU0ggQU5E IHNzaC1rZXlzY2FuIEFORCBzbnByaW50ZiBBTkQgTGljZW5zZVJlZi1GZWRvcmEtUHVibGljLURv bWFpbiBBTkQgWDExLWRpc3RyaWJ1dGUtbW9kaWZpY2F0aW9ucy12YXJpYW50CkBAIC01MTMsNiAr NTEzLDkgQEAgdGVzdCAtZiAle3N5c2NvbmZpZ19hbmFjb25kYX0gJiYgXAogJWF0dHIoMDc1NSxy b290LHJvb3QpICV7X2xpYmRpcn0vc3NodGVzdC9zay1kdW1teS5zbwogCiAlY2hhbmdlbG9nCisq IFdlZCBKdWwgMDggMjAyNiBEbWl0cnkgQmVseWF2c2tpeSA8ZGJlbHlhdnNAcmVkaGF0LmNvbT4g LSAxMC40cDEtMQorLSBSZWJhc2luZyBPcGVuU1NIIHRvIDEwLjRwMQorCiAqIFdlZCBKdWwgMDgg MjAyNiBEbWl0cnkgQmVseWF2c2tpeSA8ZGJlbHlhdnNAcmVkaGF0LmNvbT4gLSAxMC4zcDEtOAog LSBGaXggYSB0eXBvIGluIGNyeXB0by1wb2xpY2llcyBkb2N1bWVudGF0aW9uIHBhdGNoCiAgIFJl c29sdmVzOiByaGJ6IzIyNDE1NjQKCmRpZmYgLS1naXQgYS9zb3VyY2VzIGIvc291cmNlcwppbmRl eCA1ZDg5MjI5Li4yNTZmZWM1IDEwMDY0NAotLS0gYS9zb3VyY2VzCisrKyBiL3NvdXJjZXMKQEAg LTEsMyArMSwzIEBACi1TSEE1MTIgKG9wZW5zc2gtMTAuM3AxLnRhci5neikgPSBjYjJiZDY3MDg2 NDkxYzI1ZTMwNTg3OWI5MjRjM2RmYTgyMzY1MDJhNjBjN2YyNTBiMmZkMTdkMmQ5YTc5ZWJmYzJl NDBiMmY0M2U0MmRjZjU5OGNjNTEwOTk2ZTAwY2MwM2RmOWI4ZTM4ZjM0YmMyZGM3MWEzZDRmZjM3 ODhmYQotU0hBNTEyIChvcGVuc3NoLTEwLjNwMS50YXIuZ3ouYXNjKSA9IDJjOGFmYmU1N2Y2NzEy ZjE1OWFhM2ExNjBiNmZmYzQzZjk0NWE5OGNjZDhlMTUxZmE2YTA0N2VhMzBiMzc2ZTVlMWNhYzg0 NGE2NzhhNzg5OWRhODA3MDRiM2QyM2ZlZGE2MTJmZmFkYTFlZTAwM2Y0YzdmYjgyOTFmNDg0NjAw CitTSEE1MTIgKG9wZW5zc2gtMTAuNHAxLnRhci5neikgPSBjNDk2MDAwMjJhM2EzZjBmMGJhNDI4 NDA3MmNjY2JlMTA4ODAzMGNkMTc1ZWExNjZlMDgyNTEyMjQ3MTI3MzFmOTdjYjFhM2YwMzlkMTlm NzE3MTRjNTM3YWI4OGIxNzc2MDJiZTA5MzJiYzM1YTI2ZjMyMjdkYzA5YzQzZjM3YworU0hBNTEy IChvcGVuc3NoLTEwLjRwMS50YXIuZ3ouYXNjKSA9IDYwNGI4MjAzMDg4ZDcxYmVlM2E5M2VhNjQ0 MjAxZjgyZWIxZjA0OWIwOGNmMGI1N2I5ZjVkYmNiOWE5YmFlMjA2MjgzYTMwYWYxNTE4MmU0MmU1 OWVhNjNiOGUxYzk5NDFjOGI5ODFhMWQwMjZiNmEwZjQ5YjExY2NkNzAwN2M0CiBTSEE1MTIgKGdw Z2tleS03MzYwNjBCQS5ncGcpID0gZGY0NGYzZmRiY2QxZDU5NjcwNTM0OGM3ZjVhZWQzZjczOGM1 ZjYyNmE1NTk1NWUwNjQyZjdjNmMwODI5OTVjZjM2YTFiMTg5MWJiNDFiODcxNWNiMmFmZjM0ZmVm MWM4NzdlMGVmZjBkMzUwN2RkMDBhMDU1YmE2OTU3NTdhMjEK