From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v5 08/28] libxc: introduce a xc_dom_arch for hvm-3.0-x86_32 guests Date: Fri, 21 Aug 2015 18:53:21 +0200 Message-ID: <1440176021-18910-9-git-send-email-roger.pau@citrix.com> References: <1440176021-18910-1-git-send-email-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1ZSpZg-0007gU-G2 for xen-devel@lists.xenproject.org; Fri, 21 Aug 2015 16:53:52 +0000 In-Reply-To: <1440176021-18910-1-git-send-email-roger.pau@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xenproject.org Cc: Wei Liu , Stefano Stabellini , Ian Jackson , Ian Campbell , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org VGhpcyB4Y19kb21fYXJjaCB3aWxsIGJlIHVzZWQgaW4gb3JkZXIgdG8gYnVpbGQgSFZNIGRvbWFp bnMuIFRoZSBjb2RlIGlzCmJhc2VkIG9uIHRoZSBleGlzdGluZyB4Y19odm1fcG9wdWxhdGVfbWVt b3J5IGFuZCB4Y19odm1fcG9wdWxhdGVfcGFyYW1zCmZ1bmN0aW9ucy4KClNpZ25lZC1vZmYtYnk6 IFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgpSZXZpZXdlZC1ieTogQW5k cmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ2M6IElhbiBKYWNrc29uIDxp YW4uamFja3NvbkBldS5jaXRyaXguY29tPgpDYzogU3RlZmFubyBTdGFiZWxsaW5pIDxzdGVmYW5v LnN0YWJlbGxpbmlAZXUuY2l0cml4LmNvbT4KQ2M6IElhbiBDYW1wYmVsbCA8aWFuLmNhbXBiZWxs QGNpdHJpeC5jb20+CkNjOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgotLS0KQ2hhbmdl cyBzaW5jZSB2NDoKIC0gUmVwbGFjZSBhIG1hbGxvYyttZW1zZXQgd2l0aCBhIGNhbGxvYy4KIC0g UmVtb3ZlIGEgIT0gTlVMTCBjaGVjay4KIC0gQWRkIEFuZHJldyBDb29wZXIgUmV2aWV3ZWQtYnku CgpDaGFuZ2VzIHNpbmNlIHYzOgogLSBNYWtlIHN1cmUgYy9zIGI5ZGJlMzMgaXMgbm90IHJldmVy dGVkIG9uIHRoaXMgcGF0Y2guCiAtIFNldCB0aGUgaW5pdGlhbCBCU1Agc3RhdGUgdXNpbmcge2dl dC9zZXR9aHZtY29udGV4dC4KLS0tCiB0b29scy9saWJ4Yy9pbmNsdWRlL3hjX2RvbS5oIHwgICA2 ICsKIHRvb2xzL2xpYnhjL3hjX2RvbV94ODYuYyAgICAgfCA2MTggKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLQogMiBmaWxlcyBjaGFuZ2VkLCA2MTMgaW5zZXJ0aW9u cygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMvaW5jbHVkZS94 Y19kb20uaCBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGNfZG9tLmgKaW5kZXggMDI0NWQyNC4uY2Rh NDBkOSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMvaW5jbHVkZS94Y19kb20uaAorKysgYi90b29s cy9saWJ4Yy9pbmNsdWRlL3hjX2RvbS5oCkBAIC0xODgsNiArMTg4LDEyIEBAIHN0cnVjdCB4Y19k b21faW1hZ2UgewogICAgIH0gY29udGFpbmVyX3R5cGU7CiAKICAgICAvKiBIVk0gc3BlY2lmaWMg ZmllbGRzLiAqLworICAgIHhlbl9wZm5fdCB0YXJnZXRfcGFnZXM7CisgICAgeGVuX3Bmbl90IG1t aW9fc3RhcnQ7CisgICAgeGVuX3Bmbl90IG1taW9fc2l6ZTsKKyAgICB4ZW5fcGZuX3QgbG93bWVt X2VuZDsKKyAgICB4ZW5fcGZuX3QgaGlnaG1lbV9lbmQ7CisKICAgICAvKiBFeHRyYSBBQ1BJIHRh YmxlcyBwYXNzZWQgdG8gSFZNTE9BREVSICovCiAgICAgc3RydWN0IHhjX2h2bV9maXJtd2FyZV9t b2R1bGUgYWNwaV9tb2R1bGU7CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX2RvbV94ODYu YyBiL3Rvb2xzL2xpYnhjL3hjX2RvbV94ODYuYwppbmRleCBhZTgxODdmLi4wYTRhYzU4IDEwMDY0 NAotLS0gYS90b29scy9saWJ4Yy94Y19kb21feDg2LmMKKysrIGIvdG9vbHMvbGlieGMveGNfZG9t X3g4Ni5jCkBAIC0zOSwxMCArMzksMzIgQEAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLSNk ZWZpbmUgU1VQRVJQQUdFX1BGTl9TSElGVCAgOQotI2RlZmluZSBTVVBFUlBBR0VfTlJfUEZOUyAg ICAoMVVMIDw8IFNVUEVSUEFHRV9QRk5fU0hJRlQpCiAjZGVmaW5lIFNVUEVSUEFHRV9CQVRDSF9T SVpFIDUxMgogCisjZGVmaW5lIFNVUEVSUEFHRV8yTUJfU0hJRlQgICA5CisjZGVmaW5lIFNVUEVS UEFHRV8yTUJfTlJfUEZOUyAoMVVMIDw8IFNVUEVSUEFHRV8yTUJfU0hJRlQpCisjZGVmaW5lIFNV UEVSUEFHRV8xR0JfU0hJRlQgICAxOAorI2RlZmluZSBTVVBFUlBBR0VfMUdCX05SX1BGTlMgKDFV TCA8PCBTVVBFUlBBR0VfMUdCX1NISUZUKQorCisjZGVmaW5lIFg4Nl9DUjBfUEUgMHgwMQorI2Rl ZmluZSBYODZfQ1IwX0VUIDB4MTAKKworI2RlZmluZSBWR0FfSE9MRV9TSVpFICgweDIwKQorCisj ZGVmaW5lIFNQRUNJQUxQQUdFX1BBR0lORyAgIDAKKyNkZWZpbmUgU1BFQ0lBTFBBR0VfQUNDRVNT ICAgMQorI2RlZmluZSBTUEVDSUFMUEFHRV9TSEFSSU5HICAyCisjZGVmaW5lIFNQRUNJQUxQQUdF X0JVRklPUkVRIDMKKyNkZWZpbmUgU1BFQ0lBTFBBR0VfWEVOU1RPUkUgNAorI2RlZmluZSBTUEVD SUFMUEFHRV9JT1JFUSAgICA1CisjZGVmaW5lIFNQRUNJQUxQQUdFX0lERU5UX1BUIDYKKyNkZWZp bmUgU1BFQ0lBTFBBR0VfQ09OU09MRSAgNworI2RlZmluZSBOUl9TUEVDSUFMX1BBR0VTICAgICA4 CisjZGVmaW5lIHNwZWNpYWxfcGZuKHgpICgweGZmMDAwdSAtIE5SX1NQRUNJQUxfUEFHRVMgKyAo eCkpCisKKyNkZWZpbmUgTlJfSU9SRVFfU0VSVkVSX1BBR0VTIDgKKyNkZWZpbmUgaW9yZXFfc2Vy dmVyX3Bmbih4KSAoc3BlY2lhbF9wZm4oMCkgLSBOUl9JT1JFUV9TRVJWRVJfUEFHRVMgKyAoeCkp CisKICNkZWZpbmUgYml0c190b19tYXNrKGJpdHMpICAgICAgICgoKHhlbl92YWRkcl90KTEgPDwg KGJpdHMpKS0xKQogI2RlZmluZSByb3VuZF9kb3duKGFkZHIsIG1hc2spICAgKChhZGRyKSAmIH4o bWFzaykpCiAjZGVmaW5lIHJvdW5kX3VwKGFkZHIsIG1hc2spICAgICAoKGFkZHIpIHwgKG1hc2sp KQpAQCAtNDYxLDYgKzQ4MywxMzUgQEAgc3RhdGljIGludCBhbGxvY19tYWdpY19wYWdlcyhzdHJ1 Y3QgeGNfZG9tX2ltYWdlICpkb20pCiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyB2b2lkIGJ1 aWxkX2h2bV9pbmZvKHZvaWQgKmh2bV9pbmZvX3BhZ2UsIHN0cnVjdCB4Y19kb21faW1hZ2UgKmRv bSkKK3sKKyAgICBzdHJ1Y3QgaHZtX2luZm9fdGFibGUgKmh2bV9pbmZvID0gKHN0cnVjdCBodm1f aW5mb190YWJsZSAqKQorICAgICAgICAoKCh1bnNpZ25lZCBjaGFyICopaHZtX2luZm9fcGFnZSkg KyBIVk1fSU5GT19PRkZTRVQpOworICAgIHVpbnQ4X3Qgc3VtOworICAgIGludCBpOworCisgICAg bWVtc2V0KGh2bV9pbmZvX3BhZ2UsIDAsIFBBR0VfU0laRSk7CisKKyAgICAvKiBGaWxsIGluIHRo ZSBoZWFkZXIuICovCisgICAgbWVtY3B5KGh2bV9pbmZvLT5zaWduYXR1cmUsICJIVk0gSU5GTyIs IHNpemVvZihodm1faW5mby0+c2lnbmF0dXJlKSk7CisgICAgaHZtX2luZm8tPmxlbmd0aCA9IHNp emVvZihzdHJ1Y3QgaHZtX2luZm9fdGFibGUpOworCisgICAgLyogU2Vuc2libGUgZGVmYXVsdHM6 IHRoZXNlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBjYWxsZXIuICovCisgICAgaHZtX2luZm8t PmFwaWNfbW9kZSA9IDE7CisgICAgaHZtX2luZm8tPm5yX3ZjcHVzID0gMTsKKyAgICBtZW1zZXQo aHZtX2luZm8tPnZjcHVfb25saW5lLCAweGZmLCBzaXplb2YoaHZtX2luZm8tPnZjcHVfb25saW5l KSk7CisKKyAgICAvKiBNZW1vcnkgcGFyYW1ldGVycy4gKi8KKyAgICBodm1faW5mby0+bG93X21l bV9wZ2VuZCA9IGRvbS0+bG93bWVtX2VuZCA+PiBQQUdFX1NISUZUOworICAgIGh2bV9pbmZvLT5o aWdoX21lbV9wZ2VuZCA9IGRvbS0+aGlnaG1lbV9lbmQgPj4gUEFHRV9TSElGVDsKKyAgICBodm1f aW5mby0+cmVzZXJ2ZWRfbWVtX3Bnc3RhcnQgPSBpb3JlcV9zZXJ2ZXJfcGZuKDApOworCisgICAg LyogRmluaXNoIHdpdGggdGhlIGNoZWNrc3VtLiAqLworICAgIGZvciAoIGkgPSAwLCBzdW0gPSAw OyBpIDwgaHZtX2luZm8tPmxlbmd0aDsgaSsrICkKKyAgICAgICAgc3VtICs9ICgodWludDhfdCAq KWh2bV9pbmZvKVtpXTsKKyAgICBodm1faW5mby0+Y2hlY2tzdW0gPSAtc3VtOworfQorCitzdGF0 aWMgaW50IGFsbG9jX21hZ2ljX3BhZ2VzX2h2bShzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCit7 CisgICAgdW5zaWduZWQgbG9uZyBpOworICAgIHZvaWQgKmh2bV9pbmZvX3BhZ2U7CisgICAgdWlu dDMyX3QgKmlkZW50X3B0LCBkb21pZCA9IGRvbS0+Z3Vlc3RfZG9taWQ7CisgICAgaW50IHJjOwor ICAgIHhlbl9wZm5fdCBzcGVjaWFsX2FycmF5W05SX1NQRUNJQUxfUEFHRVNdOworICAgIHhlbl9w Zm5fdCBpb3JlcV9zZXJ2ZXJfYXJyYXlbTlJfSU9SRVFfU0VSVkVSX1BBR0VTXTsKKyAgICB4Y19p bnRlcmZhY2UgKnhjaCA9IGRvbS0+eGNoOworCisgICAgaWYgKCAoaHZtX2luZm9fcGFnZSA9IHhj X21hcF9mb3JlaWduX3JhbmdlKAorICAgICAgICAgICAgICB4Y2gsIGRvbWlkLCBQQUdFX1NJWkUs IFBST1RfUkVBRCB8IFBST1RfV1JJVEUsCisgICAgICAgICAgICAgIEhWTV9JTkZPX1BGTikpID09 IE5VTEwgKQorICAgICAgICBnb3RvIGVycm9yX291dDsKKyAgICBidWlsZF9odm1faW5mbyhodm1f aW5mb19wYWdlLCBkb20pOworICAgIG11bm1hcChodm1faW5mb19wYWdlLCBQQUdFX1NJWkUpOwor CisgICAgLyogQWxsb2NhdGUgYW5kIGNsZWFyIHNwZWNpYWwgcGFnZXMuICovCisgICAgZm9yICgg aSA9IDA7IGkgPCBOUl9TUEVDSUFMX1BBR0VTOyBpKysgKQorICAgICAgICBzcGVjaWFsX2FycmF5 W2ldID0gc3BlY2lhbF9wZm4oaSk7CisKKyAgICByYyA9IHhjX2RvbWFpbl9wb3B1bGF0ZV9waHlz bWFwX2V4YWN0KHhjaCwgZG9taWQsIE5SX1NQRUNJQUxfUEFHRVMsIDAsIDAsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWFsX2FycmF5KTsKKyAgICBpZiAo IHJjICE9IDAgKQorICAgIHsKKyAgICAgICAgRE9NUFJJTlRGKCJDb3VsZCBub3QgYWxsb2NhdGUg c3BlY2lhbCBwYWdlcy4iKTsKKyAgICAgICAgZ290byBlcnJvcl9vdXQ7CisgICAgfQorCisgICAg aWYgKCB4Y19jbGVhcl9kb21haW5fcGFnZXMoeGNoLCBkb21pZCwgc3BlY2lhbF9wZm4oMCksIE5S X1NQRUNJQUxfUEFHRVMpICkKKyAgICAgICAgICAgIGdvdG8gZXJyb3Jfb3V0OworCisgICAgeGNf aHZtX3BhcmFtX3NldCh4Y2gsIGRvbWlkLCBIVk1fUEFSQU1fU1RPUkVfUEZOLAorICAgICAgICAg ICAgICAgICAgICAgc3BlY2lhbF9wZm4oU1BFQ0lBTFBBR0VfWEVOU1RPUkUpKTsKKyAgICB4Y19o dm1fcGFyYW1fc2V0KHhjaCwgZG9taWQsIEhWTV9QQVJBTV9CVUZJT1JFUV9QRk4sCisgICAgICAg ICAgICAgICAgICAgICBzcGVjaWFsX3BmbihTUEVDSUFMUEFHRV9CVUZJT1JFUSkpOworICAgIHhj X2h2bV9wYXJhbV9zZXQoeGNoLCBkb21pZCwgSFZNX1BBUkFNX0lPUkVRX1BGTiwKKyAgICAgICAg ICAgICAgICAgICAgIHNwZWNpYWxfcGZuKFNQRUNJQUxQQUdFX0lPUkVRKSk7CisgICAgeGNfaHZt X3BhcmFtX3NldCh4Y2gsIGRvbWlkLCBIVk1fUEFSQU1fQ09OU09MRV9QRk4sCisgICAgICAgICAg ICAgICAgICAgICBzcGVjaWFsX3BmbihTUEVDSUFMUEFHRV9DT05TT0xFKSk7CisgICAgeGNfaHZt X3BhcmFtX3NldCh4Y2gsIGRvbWlkLCBIVk1fUEFSQU1fUEFHSU5HX1JJTkdfUEZOLAorICAgICAg ICAgICAgICAgICAgICAgc3BlY2lhbF9wZm4oU1BFQ0lBTFBBR0VfUEFHSU5HKSk7CisgICAgeGNf aHZtX3BhcmFtX3NldCh4Y2gsIGRvbWlkLCBIVk1fUEFSQU1fTU9OSVRPUl9SSU5HX1BGTiwKKyAg ICAgICAgICAgICAgICAgICAgIHNwZWNpYWxfcGZuKFNQRUNJQUxQQUdFX0FDQ0VTUykpOworICAg IHhjX2h2bV9wYXJhbV9zZXQoeGNoLCBkb21pZCwgSFZNX1BBUkFNX1NIQVJJTkdfUklOR19QRk4s CisgICAgICAgICAgICAgICAgICAgICBzcGVjaWFsX3BmbihTUEVDSUFMUEFHRV9TSEFSSU5HKSk7 CisKKyAgICAvKgorICAgICAqIEFsbG9jYXRlIGFuZCBjbGVhciBhZGRpdGlvbmFsIGlvcmVxIHNl cnZlciBwYWdlcy4gVGhlIGRlZmF1bHQKKyAgICAgKiBzZXJ2ZXIgd2lsbCB1c2UgdGhlIElPUkVR IGFuZCBCVUZJT1JFUSBzcGVjaWFsIHBhZ2VzIGFib3ZlLgorICAgICAqLworICAgIGZvciAoIGkg PSAwOyBpIDwgTlJfSU9SRVFfU0VSVkVSX1BBR0VTOyBpKysgKQorICAgICAgICBpb3JlcV9zZXJ2 ZXJfYXJyYXlbaV0gPSBpb3JlcV9zZXJ2ZXJfcGZuKGkpOworCisgICAgcmMgPSB4Y19kb21haW5f cG9wdWxhdGVfcGh5c21hcF9leGFjdCh4Y2gsIGRvbWlkLCBOUl9JT1JFUV9TRVJWRVJfUEFHRVMs IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBpb3JlcV9z ZXJ2ZXJfYXJyYXkpOworICAgIGlmICggcmMgIT0gMCApCisgICAgeworICAgICAgICBET01QUklO VEYoIkNvdWxkIG5vdCBhbGxvY2F0ZSBpb3JlcSBzZXJ2ZXIgcGFnZXMuIik7CisgICAgICAgIGdv dG8gZXJyb3Jfb3V0OworICAgIH0KKworICAgIGlmICggeGNfY2xlYXJfZG9tYWluX3BhZ2VzKHhj aCwgZG9taWQsIGlvcmVxX3NlcnZlcl9wZm4oMCksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTlJfSU9SRVFfU0VSVkVSX1BBR0VTKSApCisgICAgICAgICAgICBnb3RvIGVycm9yX291 dDsKKworICAgIC8qIFRlbGwgdGhlIGRvbWFpbiB3aGVyZSB0aGUgcGFnZXMgYXJlIGFuZCBob3cg bWFueSB0aGVyZSBhcmUgKi8KKyAgICB4Y19odm1fcGFyYW1fc2V0KHhjaCwgZG9taWQsIEhWTV9Q QVJBTV9JT1JFUV9TRVJWRVJfUEZOLAorICAgICAgICAgICAgICAgICAgICAgaW9yZXFfc2VydmVy X3BmbigwKSk7CisgICAgeGNfaHZtX3BhcmFtX3NldCh4Y2gsIGRvbWlkLCBIVk1fUEFSQU1fTlJf SU9SRVFfU0VSVkVSX1BBR0VTLAorICAgICAgICAgICAgICAgICAgICAgTlJfSU9SRVFfU0VSVkVS X1BBR0VTKTsKKworICAgIC8qCisgICAgICogSWRlbnRpdHktbWFwIHBhZ2UgdGFibGUgaXMgcmVx dWlyZWQgZm9yIHJ1bm5pbmcgd2l0aCBDUjAuUEc9MCB3aGVuCisgICAgICogdXNpbmcgSW50ZWwg RVBULiBDcmVhdGUgYSAzMi1iaXQgbm9uLVBBRSBwYWdlIGRpcmVjdG9yeSBvZiBzdXBlcnBhZ2Vz LgorICAgICAqLworICAgIGlmICggKGlkZW50X3B0ID0geGNfbWFwX2ZvcmVpZ25fcmFuZ2UoCisg ICAgICAgICAgICAgIHhjaCwgZG9taWQsIFBBR0VfU0laRSwgUFJPVF9SRUFEIHwgUFJPVF9XUklU RSwKKyAgICAgICAgICAgICAgc3BlY2lhbF9wZm4oU1BFQ0lBTFBBR0VfSURFTlRfUFQpKSkgPT0g TlVMTCApCisgICAgICAgIGdvdG8gZXJyb3Jfb3V0OworICAgIGZvciAoIGkgPSAwOyBpIDwgUEFH RV9TSVpFIC8gc2l6ZW9mKCppZGVudF9wdCk7IGkrKyApCisgICAgICAgIGlkZW50X3B0W2ldID0g KChpIDw8IDIyKSB8IF9QQUdFX1BSRVNFTlQgfCBfUEFHRV9SVyB8IF9QQUdFX1VTRVIgfAorICAg ICAgICAgICAgICAgICAgICAgICBfUEFHRV9BQ0NFU1NFRCB8IF9QQUdFX0RJUlRZIHwgX1BBR0Vf UFNFKTsKKyAgICBtdW5tYXAoaWRlbnRfcHQsIFBBR0VfU0laRSk7CisgICAgeGNfaHZtX3BhcmFt X3NldCh4Y2gsIGRvbWlkLCBIVk1fUEFSQU1fSURFTlRfUFQsCisgICAgICAgICAgICAgICAgICAg ICBzcGVjaWFsX3BmbihTUEVDSUFMUEFHRV9JREVOVF9QVCkgPDwgUEFHRV9TSElGVCk7CisKKyAg ICBkb20tPmNvbnNvbGVfcGZuID0gc3BlY2lhbF9wZm4oU1BFQ0lBTFBBR0VfQ09OU09MRSk7Cisg ICAgZG9tLT54ZW5zdG9yZV9wZm4gPSBzcGVjaWFsX3BmbihTUEVDSUFMUEFHRV9YRU5TVE9SRSk7 CisgICAgZG9tLT5wYXJtcy52aXJ0X2h5cGVyY2FsbCA9IC0xOworCisgICAgcmMgPSAwOworICAg IGdvdG8gb3V0OworIGVycm9yX291dDoKKyAgICByYyA9IC0xOworIG91dDoKKworICAgIHJldHVy biByYzsKK30KKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIHN0YXRpYyBpbnQgc3RhcnRfaW5m b194ODZfMzIoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tKQpAQCAtNjgyLDYgKzgzMywxMDIgQEAg c3RhdGljIGludCB2Y3B1X3g4Nl82NChzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCiAgICAgcmV0 dXJuIHJjOwogfQogCitzdGF0aWMgaW50IHZjcHVfaHZtKHN0cnVjdCB4Y19kb21faW1hZ2UgKmRv bSkKK3sKKyAgICBzdHJ1Y3QgeworICAgICAgICBzdHJ1Y3QgaHZtX3NhdmVfZGVzY3JpcHRvciBo ZWFkZXJfZDsKKyAgICAgICAgSFZNX1NBVkVfVFlQRShIRUFERVIpIGhlYWRlcjsKKyAgICAgICAg c3RydWN0IGh2bV9zYXZlX2Rlc2NyaXB0b3IgY3B1X2Q7CisgICAgICAgIEhWTV9TQVZFX1RZUEUo Q1BVKSBjcHU7CisgICAgICAgIHN0cnVjdCBodm1fc2F2ZV9kZXNjcmlwdG9yIGVuZF9kOworICAg ICAgICBIVk1fU0FWRV9UWVBFKEVORCkgZW5kOworICAgIH0gYnNwX2N0eDsKKyAgICB1aW50OF90 ICpmdWxsX2N0eCA9IE5VTEw7CisgICAgaW50IHJjOworCisgICAgRE9NUFJJTlRGX0NBTExFRChk b20tPnhjaCk7CisKKyAgICAvKgorICAgICAqIEdldCB0aGUgZnVsbCBIVk0gY29udGV4dCBpbiBv cmRlciB0byBoYXZlIHRoZSBoZWFkZXIsIGl0IGlzIG5vdAorICAgICAqIHBvc3NpYmxlIHRvIGdl dCB0aGUgaGVhZGVyIHdpdGggZ2V0Y29udGV4dF9wYXJ0aWFsLCBhbmQgY3JhZnRpbmcgb25lCisg ICAgICogZnJvbSB1c2Vyc3BhY2UgaXMgYWxzbyBub3QgYW4gb3B0aW9uIHNpbmNlIGNwdWlkIGlz IHRyYXBwZWQgYW5kCisgICAgICogbW9kaWZpZWQgYnkgWGVuLgorICAgICAqLworCisgICAgcmMg PSB4Y19kb21haW5faHZtX2dldGNvbnRleHQoZG9tLT54Y2gsIGRvbS0+Z3Vlc3RfZG9taWQsIE5V TEwsIDApOworICAgIGlmICggcmMgPD0gMCApCisgICAgeworICAgICAgICB4Y19kb21fcGFuaWMo ZG9tLT54Y2gsIFhDX0lOVEVSTkFMX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgIiVzOiB1 bmFibGUgdG8gZmV0Y2ggSFZNIGNvbnRleHQgc2l6ZSAocmM9JWQpIiwKKyAgICAgICAgICAgICAg ICAgICAgIF9fZnVuY19fLCByYyk7CisgICAgICAgIHJldHVybiByYzsKKyAgICB9CisKKyAgICBm dWxsX2N0eCA9IGNhbGxvYygxLCByYyk7CisgICAgaWYgKCBmdWxsX2N0eCA9PSBOVUxMICkKKyAg ICB7CisgICAgICAgIHhjX2RvbV9wYW5pYyhkb20tPnhjaCwgWENfSU5URVJOQUxfRVJST1IsCisg ICAgICAgICAgICAgICAgICAgICAiJXM6IHVuYWJsZSB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIEhW TSBjb250ZXh0IChyYz0lZCkiLAorICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIHJjKTsK KyAgICAgICAgcmV0dXJuIC1FTk9NRU07CisgICAgfQorCisgICAgcmMgPSB4Y19kb21haW5faHZt X2dldGNvbnRleHQoZG9tLT54Y2gsIGRvbS0+Z3Vlc3RfZG9taWQsIGZ1bGxfY3R4LCByYyk7Cisg ICAgaWYgKCByYyA8PSAwICkKKyAgICB7CisgICAgICAgIHhjX2RvbV9wYW5pYyhkb20tPnhjaCwg WENfSU5URVJOQUxfRVJST1IsCisgICAgICAgICAgICAgICAgICAgICAiJXM6IHVuYWJsZSB0byBm ZXRjaCBIVk0gY29udGV4dCAocmM9JWQpIiwKKyAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19f LCByYyk7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIC8qIENvcHkgdGhlIGhlYWRl ciB0byBvdXIgcGFydGlhbCBjb250ZXh0LiAqLworICAgIG1lbXNldCgmYnNwX2N0eCwgMCwgc2l6 ZW9mKGJzcF9jdHgpKTsKKyAgICBtZW1jcHkoJmJzcF9jdHgsIGZ1bGxfY3R4LAorICAgICAgICAg ICBzaXplb2Yoc3RydWN0IGh2bV9zYXZlX2Rlc2NyaXB0b3IpICsgSFZNX1NBVkVfTEVOR1RIKEhF QURFUikpOworCisgICAgLyogU2V0IHRoZSBDUFUgZGVzY3JpcHRvci4gKi8KKyAgICBic3BfY3R4 LmNwdV9kLnR5cGVjb2RlID0gSFZNX1NBVkVfQ09ERShDUFUpOworICAgIGJzcF9jdHguY3B1X2Qu aW5zdGFuY2UgPSAwOworICAgIGJzcF9jdHguY3B1X2QubGVuZ3RoID0gSFZNX1NBVkVfTEVOR1RI KENQVSk7CisKKyAgICAvKiBTZXQgdGhlIGNhY2hlZCBwYXJ0IG9mIHRoZSByZWxldmFudCBzZWdt ZW50IHJlZ2lzdGVycy4gKi8KKyAgICBic3BfY3R4LmNwdS5jc19iYXNlID0gMDsKKyAgICBic3Bf Y3R4LmNwdS5kc19iYXNlID0gMDsKKyAgICBic3BfY3R4LmNwdS5zc19iYXNlID0gMDsKKyAgICBi c3BfY3R4LmNwdS50cl9iYXNlID0gMDsKKyAgICBic3BfY3R4LmNwdS5jc19saW1pdCA9IH4wdTsK KyAgICBic3BfY3R4LmNwdS5kc19saW1pdCA9IH4wdTsKKyAgICBic3BfY3R4LmNwdS5zc19saW1p dCA9IH4wdTsKKyAgICBic3BfY3R4LmNwdS50cl9saW1pdCA9IDB4ZmY7CisgICAgYnNwX2N0eC5j cHUuY3NfYXJieXRlcyA9IDB4YzliOworICAgIGJzcF9jdHguY3B1LmRzX2FyYnl0ZXMgPSAweGM5 MzsKKyAgICBic3BfY3R4LmNwdS5zc19hcmJ5dGVzID0gMHhjOTM7CisgICAgYnNwX2N0eC5jcHUu dHJfYXJieXRlcyA9IDB4OGI7CisKKyAgICAvKiBTZXQgdGhlIGNvbnRyb2wgcmVnaXN0ZXJzLiAq LworICAgIGJzcF9jdHguY3B1LmNyMCA9IFg4Nl9DUjBfUEUgfCBYODZfQ1IwX0VUOworCisgICAg LyogU2V0IHRoZSBJUC4gKi8KKyAgICBic3BfY3R4LmNwdS5yaXAgPSBkb20tPnBhcm1zLnBoeXNf ZW50cnk7CisKKyAgICAvKiBTZXQgdGhlIGVuZCBkZXNjcmlwdG9yLiAqLworICAgIGJzcF9jdHgu ZW5kX2QudHlwZWNvZGUgPSBIVk1fU0FWRV9DT0RFKEVORCk7CisgICAgYnNwX2N0eC5lbmRfZC5p bnN0YW5jZSA9IDA7CisgICAgYnNwX2N0eC5lbmRfZC5sZW5ndGggPSBIVk1fU0FWRV9MRU5HVEgo RU5EKTsKKworICAgIHJjID0geGNfZG9tYWluX2h2bV9zZXRjb250ZXh0KGRvbS0+eGNoLCBkb20t Pmd1ZXN0X2RvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50OF90 ICopJmJzcF9jdHgsIHNpemVvZihic3BfY3R4KSk7CisgICAgaWYgKCByYyAhPSAwICkKKyAgICAg ICAgeGNfZG9tX3BhbmljKGRvbS0+eGNoLCBYQ19JTlRFUk5BTF9FUlJPUiwKKyAgICAgICAgICAg ICAgICAgICAgICIlczogU0VUSFZNQ09OVEVYVCBmYWlsZWQgKHJjPSVkKSIsIF9fZnVuY19fLCBy Yyk7CisKKyBvdXQ6CisgICAgaWYgKCBmdWxsX2N0eCApCisgICAgICAgIGZyZWUoZnVsbF9jdHgp OworICAgIHJldHVybiByYzsKK30KKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIHN0YXRpYyBp bnQgeDg2X2NvbXBhdCh4Y19pbnRlcmZhY2UgKnhjaCwgZG9taWRfdCBkb21pZCwgY2hhciAqZ3Vl c3RfdHlwZSkKQEAgLTc2Miw3ICsxMDA5LDcgQEAgc3RhdGljIGludCBtZW1pbml0X3B2KHN0cnVj dCB4Y19kb21faW1hZ2UgKmRvbSkKIAogICAgIGlmICggZG9tLT5zdXBlcnBhZ2VzICkKICAgICB7 Ci0gICAgICAgIGludCBjb3VudCA9IGRvbS0+dG90YWxfcGFnZXMgPj4gU1VQRVJQQUdFX1BGTl9T SElGVDsKKyAgICAgICAgaW50IGNvdW50ID0gZG9tLT50b3RhbF9wYWdlcyA+PiBTVVBFUlBBR0Vf Mk1CX1NISUZUOwogICAgICAgICB4ZW5fcGZuX3QgZXh0ZW50c1tjb3VudF07CiAKICAgICAgICAg ZG9tLT5wMm1fc2l6ZSA9IGRvbS0+dG90YWxfcGFnZXM7CkBAIC03NzMsOSArMTAyMCw5IEBAIHN0 YXRpYyBpbnQgbWVtaW5pdF9wdihzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCiAKICAgICAgICAg RE9NUFJJTlRGKCJQb3B1bGF0aW5nIG1lbW9yeSB3aXRoICVkIHN1cGVycGFnZXMiLCBjb3VudCk7 CiAgICAgICAgIGZvciAoIHBmbiA9IDA7IHBmbiA8IGNvdW50OyBwZm4rKyApCi0gICAgICAgICAg ICBleHRlbnRzW3Bmbl0gPSBwZm4gPDwgU1VQRVJQQUdFX1BGTl9TSElGVDsKKyAgICAgICAgICAg IGV4dGVudHNbcGZuXSA9IHBmbiA8PCBTVVBFUlBBR0VfMk1CX1NISUZUOwogICAgICAgICByYyA9 IHhjX2RvbWFpbl9wb3B1bGF0ZV9waHlzbWFwX2V4YWN0KGRvbS0+eGNoLCBkb20tPmd1ZXN0X2Rv bWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3Vu dCwgU1VQRVJQQUdFX1BGTl9TSElGVCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY291bnQsIFNVUEVSUEFHRV8yTUJfU0hJRlQsIDAsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVudHMpOwogICAgICAg ICBpZiAoIHJjICkKICAgICAgICAgICAgIHJldHVybiByYzsKQEAgLTc4NSw3ICsxMDMyLDcgQEAg c3RhdGljIGludCBtZW1pbml0X3B2KHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSkKICAgICAgICAg Zm9yICggaSA9IDA7IGkgPCBjb3VudDsgaSsrICkKICAgICAgICAgewogICAgICAgICAgICAgbWZu ID0gZXh0ZW50c1tpXTsKLSAgICAgICAgICAgIGZvciAoIGogPSAwOyBqIDwgU1VQRVJQQUdFX05S X1BGTlM7IGorKywgcGZuKysgKQorICAgICAgICAgICAgZm9yICggaiA9IDA7IGogPCBTVVBFUlBB R0VfMk1CX05SX1BGTlM7IGorKywgcGZuKysgKQogICAgICAgICAgICAgICAgIGRvbS0+cDJtX2hv c3RbcGZuXSA9IG1mbiArIGo7CiAgICAgICAgIH0KICAgICB9CkBAIC04NzAsNyArMTExNyw3IEBA IHN0YXRpYyBpbnQgbWVtaW5pdF9wdihzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCiAKICAgICAg ICAgICAgIHBhZ2VzID0gKHZtZW1yYW5nZXNbaV0uZW5kIC0gdm1lbXJhbmdlc1tpXS5zdGFydCkK ICAgICAgICAgICAgICAgICA+PiBQQUdFX1NISUZUOwotICAgICAgICAgICAgc3VwZXJfcGFnZXMg PSBwYWdlcyA+PiBTVVBFUlBBR0VfUEZOX1NISUZUOworICAgICAgICAgICAgc3VwZXJfcGFnZXMg PSBwYWdlcyA+PiBTVVBFUlBBR0VfMk1CX1NISUZUOwogICAgICAgICAgICAgcGZuX2Jhc2UgPSB2 bWVtcmFuZ2VzW2ldLnN0YXJ0ID4+IFBBR0VfU0hJRlQ7CiAKICAgICAgICAgICAgIGZvciAoIHBm biA9IHBmbl9iYXNlOyBwZm4gPCBwZm5fYmFzZStwYWdlczsgcGZuKysgKQpAQCAtODgzLDExICsx MTMwLDExIEBAIHN0YXRpYyBpbnQgbWVtaW5pdF9wdihzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20p CiAgICAgICAgICAgICAgICAgc3VwZXJfcGFnZXMgLT0gY291bnQ7CiAKICAgICAgICAgICAgICAg ICBmb3IgKCBwZm4gPSBwZm5fYmFzZV9pZHgsIGogPSAwOwotICAgICAgICAgICAgICAgICAgICAg IHBmbiA8IHBmbl9iYXNlX2lkeCArIChjb3VudCA8PCBTVVBFUlBBR0VfUEZOX1NISUZUKTsKLSAg ICAgICAgICAgICAgICAgICAgICBwZm4gKz0gU1VQRVJQQUdFX05SX1BGTlMsIGorKyApCisgICAg ICAgICAgICAgICAgICAgICAgcGZuIDwgcGZuX2Jhc2VfaWR4ICsgKGNvdW50IDw8IFNVUEVSUEFH RV8yTUJfU0hJRlQpOworICAgICAgICAgICAgICAgICAgICAgIHBmbiArPSBTVVBFUlBBR0VfMk1C X05SX1BGTlMsIGorKyApCiAgICAgICAgICAgICAgICAgICAgIGV4dGVudHNbal0gPSBkb20tPnAy bV9ob3N0W3Bmbl07CiAgICAgICAgICAgICAgICAgcmMgPSB4Y19kb21haW5fcG9wdWxhdGVfcGh5 c21hcChkb20tPnhjaCwgZG9tLT5ndWVzdF9kb21pZCwgY291bnQsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVVBFUlBBR0VfUEZOX1NISUZULCBtZW1m bGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNV UEVSUEFHRV8yTUJfU0hJRlQsIG1lbWZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZXh0ZW50cyk7CiAgICAgICAgICAgICAgICAgaWYgKCByYyA8 IDAgKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmM7CkBAIC04OTcsNyArMTE0NCw3IEBA IHN0YXRpYyBpbnQgbWVtaW5pdF9wdihzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCiAgICAgICAg ICAgICAgICAgZm9yICggaiA9IDA7IGogPCByYzsgaisrICkKICAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgIG1mbiA9IGV4dGVudHNbal07Ci0gICAgICAgICAgICAgICAgICAg IGZvciAoIGsgPSAwOyBrIDwgU1VQRVJQQUdFX05SX1BGTlM7IGsrKywgcGZuKysgKQorICAgICAg ICAgICAgICAgICAgICBmb3IgKCBrID0gMDsgayA8IFNVUEVSUEFHRV8yTUJfTlJfUEZOUzsgaysr LCBwZm4rKyApCiAgICAgICAgICAgICAgICAgICAgICAgICBkb20tPnAybV9ob3N0W3Bmbl0gPSBt Zm4gKyBrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBwZm5fYmFzZV9pZHgg PSBwZm47CkBAIC05MzgsNiArMTE4NSwzMzIgQEAgc3RhdGljIGludCBtZW1pbml0X3B2KHN0cnVj dCB4Y19kb21faW1hZ2UgKmRvbSkKICAgICByZXR1cm4gcmM7CiB9CiAKKy8qCisgKiBDaGVjayB3 aGV0aGVyIHRoZXJlIGV4aXN0cyBtbWlvIGhvbGUgaW4gdGhlIHNwZWNpZmllZCBtZW1vcnkgcmFu Z2UuCisgKiBSZXR1cm5zIDEgaWYgZXhpc3RzLCBlbHNlIHJldHVybnMgMC4KKyAqLworc3RhdGlj IGludCBjaGVja19tbWlvX2hvbGUodWludDY0X3Qgc3RhcnQsIHVpbnQ2NF90IG1lbXNpemUsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBtbWlvX3N0YXJ0LCB1aW50NjRfdCBt bWlvX3NpemUpCit7CisgICAgaWYgKCBzdGFydCArIG1lbXNpemUgPD0gbW1pb19zdGFydCB8fCBz dGFydCA+PSBtbWlvX3N0YXJ0ICsgbW1pb19zaXplICkKKyAgICAgICAgcmV0dXJuIDA7CisgICAg ZWxzZQorICAgICAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludCBtZW1pbml0X2h2bShzdHJ1 Y3QgeGNfZG9tX2ltYWdlICpkb20pCit7CisgICAgdW5zaWduZWQgbG9uZyBpLCB2bWVtaWQsIG5y X3BhZ2VzID0gZG9tLT50b3RhbF9wYWdlczsKKyAgICB1bnNpZ25lZCBsb25nIHAybV9zaXplOwor ICAgIHVuc2lnbmVkIGxvbmcgdGFyZ2V0X3BhZ2VzID0gZG9tLT50YXJnZXRfcGFnZXM7CisgICAg dW5zaWduZWQgbG9uZyBjdXJfcGFnZXMsIGN1cl9wZm47CisgICAgaW50IHJjOworICAgIHhlbl9j YXBhYmlsaXRpZXNfaW5mb190IGNhcHM7CisgICAgdW5zaWduZWQgbG9uZyBzdGF0X25vcm1hbF9w YWdlcyA9IDAsIHN0YXRfMm1iX3BhZ2VzID0gMCwgCisgICAgICAgIHN0YXRfMWdiX3BhZ2VzID0g MDsKKyAgICB1bnNpZ25lZCBpbnQgbWVtZmxhZ3MgPSAwOworICAgIGludCBjbGFpbV9lbmFibGVk ID0gZG9tLT5jbGFpbV9lbmFibGVkOworICAgIHVpbnQ2NF90IHRvdGFsX3BhZ2VzOworICAgIHhl bl92bWVtcmFuZ2VfdCBkdW1teV92bWVtcmFuZ2VbMl07CisgICAgdW5zaWduZWQgaW50IGR1bW15 X3Zub2RlX3RvX3Bub2RlWzFdOworICAgIHhlbl92bWVtcmFuZ2VfdCAqdm1lbXJhbmdlczsKKyAg ICB1bnNpZ25lZCBpbnQgKnZub2RlX3RvX3Bub2RlOworICAgIHVuc2lnbmVkIGludCBucl92bWVt cmFuZ2VzLCBucl92bm9kZXM7CisgICAgeGNfaW50ZXJmYWNlICp4Y2ggPSBkb20tPnhjaDsKKyAg ICB1aW50MzJfdCBkb21pZCA9IGRvbS0+Z3Vlc3RfZG9taWQ7CisKKyAgICBpZiAoIG5yX3BhZ2Vz ID4gdGFyZ2V0X3BhZ2VzICkKKyAgICAgICAgbWVtZmxhZ3MgfD0gWEVOTUVNRl9wb3B1bGF0ZV9v bl9kZW1hbmQ7CisKKyAgICBpZiAoIGRvbS0+bnJfdm1lbXJhbmdlcyA9PSAwICkKKyAgICB7Cisg ICAgICAgIC8qIEJ1aWxkIGR1bW15IHZub2RlIGluZm9ybWF0aW9uCisgICAgICAgICAqCisgICAg ICAgICAqIEd1ZXN0IHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2UgbGF5b3V0OgorICAgICAgICAgKiBb MCwgaG9sZV9zdGFydCkgW2hvbGVfc3RhcnQsIDRHKSBbNEcsIGhpZ2htZW1fZW5kKQorICAgICAg ICAgKgorICAgICAgICAgKiBPZiBjb3Vyc2UgaWYgdGhlcmUgaXMgbm8gaGlnaCBtZW1vcnksIHRo ZSBzZWNvbmQgdm1lbXJhbmdlCisgICAgICAgICAqIGhhcyBubyBlZmZlY3Qgb24gdGhlIGFjdHVh bCByZXN1bHQuCisgICAgICAgICAqLworCisgICAgICAgIGR1bW15X3ZtZW1yYW5nZVswXS5zdGFy dCA9IDA7CisgICAgICAgIGR1bW15X3ZtZW1yYW5nZVswXS5lbmQgICA9IGRvbS0+bG93bWVtX2Vu ZDsKKyAgICAgICAgZHVtbXlfdm1lbXJhbmdlWzBdLmZsYWdzID0gMDsKKyAgICAgICAgZHVtbXlf dm1lbXJhbmdlWzBdLm5pZCAgID0gMDsKKyAgICAgICAgbnJfdm1lbXJhbmdlcyA9IDE7CisKKyAg ICAgICAgaWYgKCBkb20tPmhpZ2htZW1fZW5kID4gKDFVTEwgPDwgMzIpICkKKyAgICAgICAgewor ICAgICAgICAgICAgZHVtbXlfdm1lbXJhbmdlWzFdLnN0YXJ0ID0gMVVMTCA8PCAzMjsKKyAgICAg ICAgICAgIGR1bW15X3ZtZW1yYW5nZVsxXS5lbmQgICA9IGRvbS0+aGlnaG1lbV9lbmQ7CisgICAg ICAgICAgICBkdW1teV92bWVtcmFuZ2VbMV0uZmxhZ3MgPSAwOworICAgICAgICAgICAgZHVtbXlf dm1lbXJhbmdlWzFdLm5pZCAgID0gMDsKKworICAgICAgICAgICAgbnJfdm1lbXJhbmdlcysrOwor ICAgICAgICB9CisKKyAgICAgICAgZHVtbXlfdm5vZGVfdG9fcG5vZGVbMF0gPSBYQ19OVU1BX05P X05PREU7CisgICAgICAgIG5yX3Zub2RlcyA9IDE7CisgICAgICAgIHZtZW1yYW5nZXMgPSBkdW1t eV92bWVtcmFuZ2U7CisgICAgICAgIHZub2RlX3RvX3Bub2RlID0gZHVtbXlfdm5vZGVfdG9fcG5v ZGU7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGlmICggbnJfcGFnZXMgPiB0YXJn ZXRfcGFnZXMgKQorICAgICAgICB7CisgICAgICAgICAgICBET01QUklOVEYoIkNhbm5vdCBlbmFi bGUgdk5VTUEgYW5kIFBvRCBhdCB0aGUgc2FtZSB0aW1lIik7CisgICAgICAgICAgICBnb3RvIGVy cm9yX291dDsKKyAgICAgICAgfQorCisgICAgICAgIG5yX3ZtZW1yYW5nZXMgPSBkb20tPm5yX3Zt ZW1yYW5nZXM7CisgICAgICAgIG5yX3Zub2RlcyA9IGRvbS0+bnJfdm5vZGVzOworICAgICAgICB2 bWVtcmFuZ2VzID0gZG9tLT52bWVtcmFuZ2VzOworICAgICAgICB2bm9kZV90b19wbm9kZSA9IGRv bS0+dm5vZGVfdG9fcG5vZGU7CisgICAgfQorCisgICAgdG90YWxfcGFnZXMgPSAwOworICAgIHAy bV9zaXplID0gMDsKKyAgICBmb3IgKCBpID0gMDsgaSA8IG5yX3ZtZW1yYW5nZXM7IGkrKyApCisg ICAgeworICAgICAgICB0b3RhbF9wYWdlcyArPSAoKHZtZW1yYW5nZXNbaV0uZW5kIC0gdm1lbXJh bmdlc1tpXS5zdGFydCkKKyAgICAgICAgICAgICAgICAgICAgICAgID4+IFBBR0VfU0hJRlQpOwor ICAgICAgICBwMm1fc2l6ZSA9IHAybV9zaXplID4gKHZtZW1yYW5nZXNbaV0uZW5kID4+IFBBR0Vf U0hJRlQpID8KKyAgICAgICAgICAgIHAybV9zaXplIDogKHZtZW1yYW5nZXNbaV0uZW5kID4+IFBB R0VfU0hJRlQpOworICAgIH0KKworICAgIGlmICggdG90YWxfcGFnZXMgIT0gbnJfcGFnZXMgKQor ICAgIHsKKyAgICAgICAgRE9NUFJJTlRGKCJ2TlVNQSBtZW1vcnkgcGFnZXMgbWlzbWF0Y2ggKDB4 JSJQUkl4NjQiICE9IDB4JSJQUkl4NjQiKSIsCisgICAgICAgICAgICAgICB0b3RhbF9wYWdlcywg bnJfcGFnZXMpOworICAgICAgICBnb3RvIGVycm9yX291dDsKKyAgICB9CisKKyAgICBpZiAoIHhj X3ZlcnNpb24oeGNoLCBYRU5WRVJfY2FwYWJpbGl0aWVzLCAmY2FwcykgIT0gMCApCisgICAgewor ICAgICAgICBET01QUklOVEYoIkNvdWxkIG5vdCBnZXQgWGVuIGNhcGFiaWxpdGllcyIpOworICAg ICAgICBnb3RvIGVycm9yX291dDsKKyAgICB9CisKKyAgICBkb20tPnAybV9zaXplID0gcDJtX3Np emU7CisgICAgZG9tLT5wMm1faG9zdCA9IHhjX2RvbV9tYWxsb2MoZG9tLCBzaXplb2YoeGVuX3Bm bl90KSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbS0+cDJtX3Np emUpOworICAgIGlmICggZG9tLT5wMm1faG9zdCA9PSBOVUxMICkKKyAgICB7CisgICAgICAgIERP TVBSSU5URigiQ291bGQgbm90IGFsbG9jYXRlIHAybSIpOworICAgICAgICBnb3RvIGVycm9yX291 dDsKKyAgICB9CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IHAybV9zaXplOyBpKysgKQorICAgICAg ICBkb20tPnAybV9ob3N0W2ldID0gKCh4ZW5fcGZuX3QpLTEpOworICAgIGZvciAoIHZtZW1pZCA9 IDA7IHZtZW1pZCA8IG5yX3ZtZW1yYW5nZXM7IHZtZW1pZCsrICkKKyAgICB7CisgICAgICAgIHVp bnQ2NF90IHBmbjsKKworICAgICAgICBmb3IgKCBwZm4gPSB2bWVtcmFuZ2VzW3ZtZW1pZF0uc3Rh cnQgPj4gUEFHRV9TSElGVDsKKyAgICAgICAgICAgICAgcGZuIDwgdm1lbXJhbmdlc1t2bWVtaWRd LmVuZCA+PiBQQUdFX1NISUZUOworICAgICAgICAgICAgICBwZm4rKyApCisgICAgICAgICAgICBk b20tPnAybV9ob3N0W3Bmbl0gPSBwZm47CisgICAgfQorCisgICAgLyoKKyAgICAgKiBUcnkgdG8g Y2xhaW0gcGFnZXMgZm9yIGVhcmx5IHdhcm5pbmcgb2YgaW5zdWZmaWNpZW50IG1lbW9yeSBhdmFp bGFibGUuCisgICAgICogVGhpcyBzaG91bGQgZ28gYmVmb3JlIHhjX2RvbWFpbl9zZXRfcG9kX3Rh cmdldCwgYmVjdWFzZSB0aGF0IGZ1bmN0aW9uCisgICAgICogYWN0dWFsbHkgYWxsb2NhdGVzIG1l bW9yeSBmb3IgdGhlIGd1ZXN0LiBDbGFpbWluZyBhZnRlciBtZW1vcnkgaGFzIGJlZW4KKyAgICAg KiBhbGxvY2F0ZWQgaXMgcG9pbnRsZXNzLgorICAgICAqLworICAgIGlmICggY2xhaW1fZW5hYmxl ZCApIHsKKyAgICAgICAgcmMgPSB4Y19kb21haW5fY2xhaW1fcGFnZXMoeGNoLCBkb21pZCwgdGFy Z2V0X3BhZ2VzIC0gVkdBX0hPTEVfU0laRSk7CisgICAgICAgIGlmICggcmMgIT0gMCApCisgICAg ICAgIHsKKyAgICAgICAgICAgIERPTVBSSU5URigiQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBm b3IgSFZNIGd1ZXN0IGFzIHdlIGNhbm5vdCBjbGFpbSBtZW1vcnkhIik7CisgICAgICAgICAgICBn b3RvIGVycm9yX291dDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICggbWVtZmxhZ3MgJiBY RU5NRU1GX3BvcHVsYXRlX29uX2RlbWFuZCApCisgICAgeworICAgICAgICAvKgorICAgICAgICAg KiBTdWJ0cmFjdCBWR0FfSE9MRV9TSVpFIGZyb20gdGFyZ2V0X3BhZ2VzIGZvciB0aGUgVkdBCisg ICAgICAgICAqICJob2xlIi4gIFhlbiB3aWxsIGFkanVzdCB0aGUgUG9EIGNhY2hlIHNpemUgc28g dGhhdCBkb21haW4KKyAgICAgICAgICogdG90X3BhZ2VzIHdpbGwgYmUgdGFyZ2V0X3BhZ2VzIC0g VkdBX0hPTEVfU0laRSBhZnRlcgorICAgICAgICAgKiB0aGlzIGNhbGwuCisgICAgICAgICAqLwor ICAgICAgICByYyA9IHhjX2RvbWFpbl9zZXRfcG9kX3RhcmdldCh4Y2gsIGRvbWlkLCB0YXJnZXRf cGFnZXMgLSBWR0FfSE9MRV9TSVpFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBOVUxMLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgaWYgKCByYyAhPSAwICkKKyAgICAgICAg eworICAgICAgICAgICAgRE9NUFJJTlRGKCJDb3VsZCBub3Qgc2V0IFBvRCB0YXJnZXQgZm9yIEhW TSBndWVzdC5cbiIpOworICAgICAgICAgICAgZ290byBlcnJvcl9vdXQ7CisgICAgICAgIH0KKyAg ICB9CisKKyAgICAvKgorICAgICAqIEFsbG9jYXRlIG1lbW9yeSBmb3IgSFZNIGd1ZXN0LCBza2lw cGluZyBWR0EgaG9sZSAweEEwMDAwLTB4QzAwMDAuCisgICAgICoKKyAgICAgKiBXZSBhdHRlbXB0 IHRvIGFsbG9jYXRlIDFHQiBwYWdlcyBpZiBwb3NzaWJsZS4gSXQgZmFsbHMgYmFjayBvbiAyTUIK KyAgICAgKiBwYWdlcyBpZiAxR0IgYWxsb2NhdGlvbiBmYWlscy4gNEtCIHBhZ2VzIHdpbGwgYmUg dXNlZCBldmVudHVhbGx5IGlmCisgICAgICogYm90aCBmYWlsLgorICAgICAqIAorICAgICAqIFVu ZGVyIDJNQiBtb2RlLCB3ZSBhbGxvY2F0ZSBwYWdlcyBpbiBiYXRjaGVzIG9mIG5vIG1vcmUgdGhh biA4TUIgdG8gCisgICAgICogZW5zdXJlIHRoYXQgd2UgY2FuIGJlIHByZWVtcHRlZCBhbmQgaGVu Y2UgZG9tMCByZW1haW5zIHJlc3BvbnNpdmUuCisgICAgICovCisgICAgcmMgPSB4Y19kb21haW5f cG9wdWxhdGVfcGh5c21hcF9leGFjdCgKKyAgICAgICAgeGNoLCBkb21pZCwgMHhhMCwgMCwgbWVt ZmxhZ3MsICZkb20tPnAybV9ob3N0WzB4MDBdKTsKKworICAgIHN0YXRfbm9ybWFsX3BhZ2VzID0g MDsKKyAgICBmb3IgKCB2bWVtaWQgPSAwOyB2bWVtaWQgPCBucl92bWVtcmFuZ2VzOyB2bWVtaWQr KyApCisgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgbmV3X21lbWZsYWdzID0gbWVtZmxhZ3M7 CisgICAgICAgIHVpbnQ2NF90IGVuZF9wYWdlczsKKyAgICAgICAgdW5zaWduZWQgaW50IHZub2Rl ID0gdm1lbXJhbmdlc1t2bWVtaWRdLm5pZDsKKyAgICAgICAgdW5zaWduZWQgaW50IHBub2RlID0g dm5vZGVfdG9fcG5vZGVbdm5vZGVdOworCisgICAgICAgIGlmICggcG5vZGUgIT0gWENfTlVNQV9O T19OT0RFICkKKyAgICAgICAgICAgIG5ld19tZW1mbGFncyB8PSBYRU5NRU1GX2V4YWN0X25vZGUo cG5vZGUpOworCisgICAgICAgIGVuZF9wYWdlcyA9IHZtZW1yYW5nZXNbdm1lbWlkXS5lbmQgPj4g UEFHRV9TSElGVDsKKyAgICAgICAgLyoKKyAgICAgICAgICogQ29uc2lkZXIgdmdhIGhvbGUgYmVs b25ncyB0byB0aGUgdm1lbXJhbmdlIHRoYXQgY292ZXJzCisgICAgICAgICAqIDB4QTAwMDAtMHhD MDAwMC4gTm90ZSB0aGF0IDB4MDAwMDAtMHhBMDAwMCBpcyBwb3B1bGF0ZWQganVzdAorICAgICAg ICAgKiBiZWZvcmUgdGhpcyBsb29wLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKCB2bWVtcmFu Z2VzW3ZtZW1pZF0uc3RhcnQgPT0gMCApCisgICAgICAgIHsKKyAgICAgICAgICAgIGN1cl9wYWdl cyA9IDB4YzA7CisgICAgICAgICAgICBzdGF0X25vcm1hbF9wYWdlcyArPSAweGMwOworICAgICAg ICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGN1cl9wYWdlcyA9IHZtZW1yYW5nZXNbdm1l bWlkXS5zdGFydCA+PiBQQUdFX1NISUZUOworCisgICAgICAgIHdoaWxlICggKHJjID09IDApICYm IChlbmRfcGFnZXMgPiBjdXJfcGFnZXMpICkKKyAgICAgICAgeworICAgICAgICAgICAgLyogQ2xp cCBjb3VudCB0byBtYXhpbXVtIDFHQiBleHRlbnQuICovCisgICAgICAgICAgICB1bnNpZ25lZCBs b25nIGNvdW50ID0gZW5kX3BhZ2VzIC0gY3VyX3BhZ2VzOworICAgICAgICAgICAgdW5zaWduZWQg bG9uZyBtYXhfcGFnZXMgPSBTVVBFUlBBR0VfMUdCX05SX1BGTlM7CisKKyAgICAgICAgICAgIGlm ICggY291bnQgPiBtYXhfcGFnZXMgKQorICAgICAgICAgICAgICAgIGNvdW50ID0gbWF4X3BhZ2Vz OworCisgICAgICAgICAgICBjdXJfcGZuID0gZG9tLT5wMm1faG9zdFtjdXJfcGFnZXNdOworCisg ICAgICAgICAgICAvKiBUYWtlIGNhcmUgdGhlIGNvcm5lciBjYXNlcyBvZiBzdXBlciBwYWdlIHRh aWxzICovCisgICAgICAgICAgICBpZiAoICgoY3VyX3BmbiAmIChTVVBFUlBBR0VfMUdCX05SX1BG TlMtMSkpICE9IDApICYmCisgICAgICAgICAgICAgICAgIChjb3VudCA+ICgtY3VyX3BmbiAmIChT VVBFUlBBR0VfMUdCX05SX1BGTlMtMSkpKSApCisgICAgICAgICAgICAgICAgY291bnQgPSAtY3Vy X3BmbiAmIChTVVBFUlBBR0VfMUdCX05SX1BGTlMtMSk7CisgICAgICAgICAgICBlbHNlIGlmICgg KChjb3VudCAmIChTVVBFUlBBR0VfMUdCX05SX1BGTlMtMSkpICE9IDApICYmCisgICAgICAgICAg ICAgICAgICAgICAgKGNvdW50ID4gU1VQRVJQQUdFXzFHQl9OUl9QRk5TKSApCisgICAgICAgICAg ICAgICAgY291bnQgJj0gfihTVVBFUlBBR0VfMUdCX05SX1BGTlMgLSAxKTsKKworICAgICAgICAg ICAgLyogQXR0ZW1wIHRvIGFsbG9jYXRlIDFHQiBzdXBlciBwYWdlLiBCZWNhdXNlIGluIGVhY2gg cGFzcworICAgICAgICAgICAgICogd2Ugb25seSBhbGxvY2F0ZSBhdCBtb3N0IDFHQiwgd2UgZG9u J3QgaGF2ZSB0byBjbGlwCisgICAgICAgICAgICAgKiBzdXBlciBwYWdlIGJvdW5kYXJpZXMuCisg ICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmICggKChjb3VudCB8IGN1cl9wZm4pICYgKFNV UEVSUEFHRV8xR0JfTlJfUEZOUyAtIDEpKSA9PSAwICYmCisgICAgICAgICAgICAgICAgIC8qIENo ZWNrIGlmIHRoZXJlIGV4aXN0cyBNTUlPIGhvbGUgaW4gdGhlIDFHQiBtZW1vcnkKKyAgICAgICAg ICAgICAgICAgICogcmFuZ2UgKi8KKyAgICAgICAgICAgICAgICAgIWNoZWNrX21taW9faG9sZShj dXJfcGZuIDw8IFBBR0VfU0hJRlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg U1VQRVJQQUdFXzFHQl9OUl9QRk5TIDw8IFBBR0VfU0hJRlQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZG9tLT5tbWlvX3N0YXJ0LCBkb20tPm1taW9fc2l6ZSkgKQorICAgICAg ICAgICAgeworICAgICAgICAgICAgICAgIGxvbmcgZG9uZTsKKyAgICAgICAgICAgICAgICB1bnNp Z25lZCBsb25nIG5yX2V4dGVudHMgPSBjb3VudCA+PiBTVVBFUlBBR0VfMUdCX1NISUZUOworICAg ICAgICAgICAgICAgIHhlbl9wZm5fdCBzcF9leHRlbnRzW25yX2V4dGVudHNdOworCisgICAgICAg ICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBucl9leHRlbnRzOyBpKysgKQorICAgICAgICAgICAg ICAgICAgICBzcF9leHRlbnRzW2ldID0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbS0+cDJt X2hvc3RbY3VyX3BhZ2VzKyhpPDxTVVBFUlBBR0VfMUdCX1NISUZUKV07CisKKyAgICAgICAgICAg ICAgICBkb25lID0geGNfZG9tYWluX3BvcHVsYXRlX3BoeXNtYXAoeGNoLCBkb21pZCwgbnJfZXh0 ZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg U1VQRVJQQUdFXzFHQl9TSElGVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbmV3X21lbWZsYWdzLCBzcF9leHRlbnRzKTsKKworICAgICAgICAgICAg ICAgIGlmICggZG9uZSA+IDAgKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg ICAgc3RhdF8xZ2JfcGFnZXMgKz0gZG9uZTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZSA8PD0g U1VQRVJQQUdFXzFHQl9TSElGVDsKKyAgICAgICAgICAgICAgICAgICAgY3VyX3BhZ2VzICs9IGRv bmU7CisgICAgICAgICAgICAgICAgICAgIGNvdW50IC09IGRvbmU7CisgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIGNvdW50ICE9IDAgKQorICAgICAg ICAgICAgeworICAgICAgICAgICAgICAgIC8qIENsaXAgY291bnQgdG8gbWF4aW11bSA4TUIgZXh0 ZW50LiAqLworICAgICAgICAgICAgICAgIG1heF9wYWdlcyA9IFNVUEVSUEFHRV8yTUJfTlJfUEZO UyAqIDQ7CisgICAgICAgICAgICAgICAgaWYgKCBjb3VudCA+IG1heF9wYWdlcyApCisgICAgICAg ICAgICAgICAgICAgIGNvdW50ID0gbWF4X3BhZ2VzOworCisgICAgICAgICAgICAgICAgLyogQ2xp cCBwYXJ0aWFsIHN1cGVycGFnZSBleHRlbnRzIHRvIHN1cGVycGFnZQorICAgICAgICAgICAgICAg ICAqIGJvdW5kYXJpZXMuICovCisgICAgICAgICAgICAgICAgaWYgKCAoKGN1cl9wZm4gJiAoU1VQ RVJQQUdFXzJNQl9OUl9QRk5TLTEpKSAhPSAwKSAmJgorICAgICAgICAgICAgICAgICAgICAgKGNv dW50ID4gKC1jdXJfcGZuICYgKFNVUEVSUEFHRV8yTUJfTlJfUEZOUy0xKSkpICkKKyAgICAgICAg ICAgICAgICAgICAgY291bnQgPSAtY3VyX3BmbiAmIChTVVBFUlBBR0VfMk1CX05SX1BGTlMtMSk7 CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoICgoY291bnQgJiAoU1VQRVJQQUdFXzJNQl9OUl9Q Rk5TLTEpKSAhPSAwKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAoY291bnQgPiBTVVBF UlBBR0VfMk1CX05SX1BGTlMpICkKKyAgICAgICAgICAgICAgICAgICAgY291bnQgJj0gfihTVVBF UlBBR0VfMk1CX05SX1BGTlMgLSAxKTsgLyogY2xpcCBub24tcy5wLiB0YWlsICovCisKKyAgICAg ICAgICAgICAgICAvKiBBdHRlbXB0IHRvIGFsbG9jYXRlIHN1cGVycGFnZSBleHRlbnRzLiAqLwor ICAgICAgICAgICAgICAgIGlmICggKChjb3VudCB8IGN1cl9wZm4pICYgKFNVUEVSUEFHRV8yTUJf TlJfUEZOUyAtIDEpKSA9PSAwICkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg ICAgIGxvbmcgZG9uZTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBucl9leHRl bnRzID0gY291bnQgPj4gU1VQRVJQQUdFXzJNQl9TSElGVDsKKyAgICAgICAgICAgICAgICAgICAg eGVuX3Bmbl90IHNwX2V4dGVudHNbbnJfZXh0ZW50c107CisKKyAgICAgICAgICAgICAgICAgICAg Zm9yICggaSA9IDA7IGkgPCBucl9leHRlbnRzOyBpKysgKQorICAgICAgICAgICAgICAgICAgICAg ICAgc3BfZXh0ZW50c1tpXSA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tLT5wMm1f aG9zdFtjdXJfcGFnZXMrKGk8PFNVUEVSUEFHRV8yTUJfU0hJRlQpXTsKKworICAgICAgICAgICAg ICAgICAgICBkb25lID0geGNfZG9tYWluX3BvcHVsYXRlX3BoeXNtYXAoeGNoLCBkb21pZCwgbnJf ZXh0ZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFNVUEVSUEFHRV8yTUJfU0hJRlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfbWVtZmxhZ3MsIHNwX2V4dGVudHMpOworCisg ICAgICAgICAgICAgICAgICAgIGlmICggZG9uZSA+IDAgKQorICAgICAgICAgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0XzJtYl9wYWdlcyArPSBkb25lOworICAgICAg ICAgICAgICAgICAgICAgICAgZG9uZSA8PD0gU1VQRVJQQUdFXzJNQl9TSElGVDsKKyAgICAgICAg ICAgICAgICAgICAgICAgIGN1cl9wYWdlcyArPSBkb25lOworICAgICAgICAgICAgICAgICAgICAg ICAgY291bnQgLT0gZG9uZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogRmFsbCBiYWNrIHRvIDRrQiBleHRl bnRzLiAqLworICAgICAgICAgICAgaWYgKCBjb3VudCAhPSAwICkKKyAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgICByYyA9IHhjX2RvbWFpbl9wb3B1bGF0ZV9waHlzbWFwX2V4YWN0KAorICAg ICAgICAgICAgICAgICAgICB4Y2gsIGRvbWlkLCBjb3VudCwgMCwgbmV3X21lbWZsYWdzLCAmZG9t LT5wMm1faG9zdFtjdXJfcGFnZXNdKTsKKyAgICAgICAgICAgICAgICBjdXJfcGFnZXMgKz0gY291 bnQ7CisgICAgICAgICAgICAgICAgc3RhdF9ub3JtYWxfcGFnZXMgKz0gY291bnQ7CisgICAgICAg ICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoIHJjICE9IDAgKQorICAgICAgICAgICAg YnJlYWs7CisgICAgfQorCisgICAgaWYgKCByYyAhPSAwICkKKyAgICB7CisgICAgICAgIERPTVBS SU5URigiQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgSFZNIGd1ZXN0LiIpOworICAgICAg ICBnb3RvIGVycm9yX291dDsKKyAgICB9CisKKyAgICBEUFJJTlRGKCJQSFlTSUNBTCBNRU1PUlkg QUxMT0NBVElPTjpcbiIpOworICAgIERQUklOVEYoIiAgNEtCIFBBR0VTOiAweCUwMTZseFxuIiwg c3RhdF9ub3JtYWxfcGFnZXMpOworICAgIERQUklOVEYoIiAgMk1CIFBBR0VTOiAweCUwMTZseFxu Iiwgc3RhdF8ybWJfcGFnZXMpOworICAgIERQUklOVEYoIiAgMUdCIFBBR0VTOiAweCUwMTZseFxu Iiwgc3RhdF8xZ2JfcGFnZXMpOworCisgICAgcmMgPSAwOworICAgIGdvdG8gb3V0OworIGVycm9y X291dDoKKyAgICByYyA9IC0xOworIG91dDoKKworICAgIC8qIGVuc3VyZSBubyB1bmNsYWltZWQg cGFnZXMgYXJlIGxlZnQgdW51c2VkICovCisgICAgeGNfZG9tYWluX2NsYWltX3BhZ2VzKHhjaCwg ZG9taWQsIDAgLyogY2FuY2VscyB0aGUgY2xhaW0gKi8pOworCisgICAgcmV0dXJuIHJjOworfQor CiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogc3RhdGljIGludCBib290ZWFybHkoc3RydWN0IHhj X2RvbV9pbWFnZSAqZG9tKQpAQCAtMTA1Miw2ICsxNjI1LDEyIEBAIHN0YXRpYyBpbnQgYm9vdGxh dGVfcHYoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tKQogICAgIHJldHVybiAwOwogfQogCitzdGF0 aWMgaW50IGJvb3RsYXRlX2h2bShzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCit7CisgICAgRE9N UFJJTlRGKCIlczogZG9pbmcgbm90aGluZyIsIF9fZnVuY19fKTsKKyAgICByZXR1cm4gMDsKK30K KwogaW50IHhjX2RvbV9mZWF0dXJlX3RyYW5zbGF0ZWQoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9t KQogewogICAgIC8qIEd1ZXN0cyBydW5uaW5nIGluc2lkZSBIVk0gY29udGFpbmVycyBhcmUgYWx3 YXlzIGF1dG8tdHJhbnNsYXRlZC4gKi8KQEAgLTEwOTUsMTAgKzE2NzQsMjcgQEAgc3RhdGljIHN0 cnVjdCB4Y19kb21fYXJjaCB4Y19kb21fNjQgPSB7CiAgICAgLmJvb3RsYXRlID0gYm9vdGxhdGVf cHYsCiB9OwogCitzdGF0aWMgc3RydWN0IHhjX2RvbV9hcmNoIHhjX2h2bV8zMiA9IHsKKyAgICAu Z3Vlc3RfdHlwZSA9ICJodm0tMy4wLXg4Nl8zMiIsCisgICAgLm5hdGl2ZV9wcm90b2NvbCA9IFhF Tl9JT19QUk9UT19BQklfWDg2XzMyLAorICAgIC5wYWdlX3NoaWZ0ID0gUEFHRV9TSElGVF9YODYs CisgICAgLnNpemVvZl9wZm4gPSA0LAorICAgIC5hbGxvY19tYWdpY19wYWdlcyA9IGFsbG9jX21h Z2ljX3BhZ2VzX2h2bSwKKyAgICAuY291bnRfcGd0YWJsZXMgPSBOVUxMLAorICAgIC5zZXR1cF9w Z3RhYmxlcyA9IE5VTEwsCisgICAgLnN0YXJ0X2luZm8gPSBOVUxMLAorICAgIC5zaGFyZWRfaW5m byA9IE5VTEwsCisgICAgLnZjcHUgPSB2Y3B1X2h2bSwKKyAgICAubWVtaW5pdCA9IG1lbWluaXRf aHZtLAorICAgIC5ib290ZWFybHkgPSBib290ZWFybHksCisgICAgLmJvb3RsYXRlID0gYm9vdGxh dGVfaHZtLAorfTsKKwogc3RhdGljIHZvaWQgX19pbml0IHJlZ2lzdGVyX2FyY2hfaG9va3Modm9p ZCkKIHsKICAgICB4Y19kb21fcmVnaXN0ZXJfYXJjaF9ob29rcygmeGNfZG9tXzMyX3BhZSk7CiAg ICAgeGNfZG9tX3JlZ2lzdGVyX2FyY2hfaG9va3MoJnhjX2RvbV82NCk7CisgICAgeGNfZG9tX3Jl Z2lzdGVyX2FyY2hfaG9va3MoJnhjX2h2bV8zMik7CiB9CiAKIC8qCi0tIAoxLjkuNSAoQXBwbGUg R2l0LTUwLjMpCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8v bGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK