From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v4 25/34] build_id: Provide ld-embedded build-ids Date: Tue, 15 Mar 2016 13:56:47 -0400 Message-ID: <1458064616-23101-26-git-send-email-konrad.wilk@oracle.com> References: <1458064616-23101-1-git-send-email-konrad.wilk@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aftGk-0001It-9p for xen-devel@lists.xenproject.org; Tue, 15 Mar 2016 18:00:34 +0000 In-Reply-To: <1458064616-23101-1-git-send-email-konrad.wilk@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, ross.lagerwall@citrix.com, konrad@kernel.org, andrew.cooper3@citrix.com, mpohlack@amazon.de, sasha.levin@oracle.com Cc: Keir Fraser , Julien Grall , Stefano Stabellini , Jan Beulich , Konrad Rzeszutek Wilk List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBlbmFibGVzIHRoZSBFbGYgdG8gYmUgYnVpbHQgd2l0aCB0aGUgYnVpbGQtaWQK YW5kIHByb3ZpZGUgaW4gdGhlIFhlbiBoeXBlcnZpc29yIHRoZSBjb2RlIHRvIGV4dHJhY3QgaXQu CgpPbmUgY2FuIGFsc28gcmV0cmlldmUgdGhlIHZhbHVlIG9mIHRoZSBidWlsZC1pZCBieSBkb2lu ZwoncmVhZGVsZiAtbiB4ZW4tc3ltcycuCgpGb3IgRUZJIGJ1aWxkcyB3ZSByZS11c2UgdGhlIHNh bWUgYnVpbGQtaWQgdGhhdCB0aGUgeGVuLXN5bXMKd2FzIGJ1aWx0IHdpdGguCgpUaGUgdmVyc2lv biBvZiBsZCB0aGF0IGZpcnN0IGltcGxlbWVudGVkIC0tYnVpbGQtaWQgaXMgdjIuMTguCkhlbmNl IHdlIGNoZWNrIGZvciB0aGF0IG9yIGxhdGVyIHZlcnNpb24gLSBpZiBvbGRlciB2ZXJzaW9uCmZv dW5kIHdlIGRvIG5vdCBidWlsZCB0aGUgaHlwZXJ2aXNvciB3aXRoIHRoZSBidWlsZC1pZAooYW5k IHRoZSByZXR1cm4gY29kZSBpcyAtRU5PREFUQSBmb3IgeGVuX2J1aWxkX2lkKCkgY2FsbCkuCgpG b3IgeDg2IHdlIGhhdmUgdHdvIGJpbmFyaWVzIC0gdGhlIHhlbi1zeW1zIGFuZCB0aGUgeGVuIC0g YW4Kc21hbGxlciB2ZXJzaW9uIHdpdGggbG90cyBvZiBzZWN0aW9ucyByZW1vdmVkLiBUbyBtYWtl IGl0IHBvc3NpYmxlCmZvciByZWFkZWxmIC1uIHhlbiB3ZSBhbHNvIG1vZGlmeSBta2VsZjMyIGFu ZCB4ZW4ubGRzLlMgdG8gaW5jbHVkZQp0aGUgUFRfTk9URSBFTEYgc2VjdGlvbi4KClRoZSBFRkkg YmluYXJ5IGlzIG1vcmUgY29tcGxpY2F0ZWQuIEhhdmluZyBhbnkgbm9uLXJlY29nbml6YWJsZQpz ZWN0aW9ucyAoLm5vdGUsIC5kYXRhLm5vdGUsIGV0YykgY2F1c2VzIHRoZSBib290IHRvIGhhbmcu Ck1vdmluZyB0aGUgLm5vdGUgaW4gdGhlIC5kYXRhIHNlY3Rpb24gbWFrZXMgaXQgd29yay4gSXQg aXMgYWxzbwp3b3J0aCBub3RpbmcgdGhhdCB0aGUgUEUvQ09GRiBkb2VzIG5vdCBoYXZlIGFueSAi Y29tbWVudCIKc2VjdGlvbnMgdG8gdGhlIGF1dGhvci4KCkxhc3RseSwgd2UgTVVTVCBjYWxsIC0t YmluYXJ5LWlkPXNoYTEgb24gYWxsIGxpbmtlciBpbnZvY2F0aW9uIHNvIHRoYXQKc3ltYm9sIG9m ZnNldHMgZG9uJ3QgY2hhbmdlcyAod2hpY2ggbWVhbnMgd2UgaGF2ZSBtdWx0aXBsZSBiaW5hcnkK aWRzIC0gZXhjZXB0IHRoYXQgdGhlIGxhc3Qgb25lIGlzIHRoZSBmaW5hbCBvbmUpLiBXaXRob3V0 IHRoaXMgY2hhbmdlLAp0aGUgc3ltYm9sIHRhYmxlIGVtYmVkZGVkIGluIFhlbiBhcmUgaW5jb3Jy ZWN0IC0gc29tZSBvZiB0aGUgdmFsdWVzIGl0CmNvbnRhaW5zIGFyZSBvZmZzZXQgYnkgdGhlIHNp emUgb2YgdGhlIGluY2x1ZGVkIGJ1aWxkIGlkLgpUaGlzIG9idmlvdXNseSBjYXVzZXMgcHJvYmxl bXMgd2hlbiByZXNvbHZpbmcgc3ltYm9scy4KClN1Z2dlc3RlZC1ieTogQW5kcmV3IENvb3BlciA8 YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KU2lnbmVkLW9mZi1ieTogTWFydGluIFBvaGxhY2sg PG1wb2hsYWNrQGFtYXpvbi5kZT4KU2lnbmVkLW9mZi1ieTogS29ucmFkIFJ6ZXN6dXRlayBXaWxr IDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgoKLS0tCkNjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHN0 ZWZhbm8uc3RhYmVsbGluaUBjaXRyaXguY29tPgpDYzogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3Jh bGxAYXJtLmNvbT4KQ2M6IEtlaXIgRnJhc2VyIDxrZWlyQHhlbi5vcmc+CkNjOiBKYW4gQmV1bGlj aCA8amJldWxpY2hAc3VzZS5jb20+CkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0Bj aXRyaXguY29tPgoKdjE6IFJlYmFzZSBpdCBvbiBNYXJ0aW4ncyBpbml0aWFsIHBhdGNoCnYyOiBN b3ZlIGl0IHRvIFhFTlZFUiBoeXBlcmNhbGwKdjM6IEZpeCBFRkkgYnVpbGRpbmcgKFJvc3MncyBm aXgpCnY0OiBEb24ndCB1c2UgdGhlIHRoaXJkIGFyZ3VtZW50IGZvciBsZW5ndGguCnY1OiBVc2Ug bmV3IHN0cnVjdHVyZSBmb3IgWEVOVkVSX2J1aWxkX2lkIHdpdGggdmFyaWFibGUgYnVmLgp2Njog SW5jbHVkZSBSb3NzJ3MgZml4Lgp2NzogSW5jbHVkZSBkZXRlY3Rpb24gb2YgYmluLXV0aWxzIGZv ciBidWlsZC1pZCBzdXBwb3J0LCBhZGQKICAgIHByb2JpbmcgZm9yIHNpemUsIGFuZCByZXR1cm4g LUVQRVJNIGZvciBYU00gZGVuaWVkIGNhbGxzLgp2ODogQnVpbGQgeGVuX2J1aWxkX2lkIHVuZGVy IEFSTSwgcmVxdWlyZWQgYWRkaW5nIEVMRlNJWkUgaW4gcHJvcGVyIGZpbGUuCnY5OiBSZWJhc2Ug b24gdG9wIFhTTSB2ZXJzaW9uIGNsYXNzLgp2MTA6IEluY2x1ZGUgdGhlIGJ1aWxkLWlkIC5ub3Rl IGluIHRoZSB4ZW4gRUxGIGJpbmFyeS4KICAgICBzL2J1aWxkX2lkL2J1aWxkX2lkX2xpbmtlci8K ICAgIEZvciBFRkkgYnVpbGQsIG1vdmVkIHRoZSAtLWJ1aWxkLWlkIHZhbHVlcyBpbiAuZGF0YSBz ZWN0aW9uCnYxMTogUmViYXNlIG9uIHN0YWdpbmcuCnYxMjogU3BsaXQgcGF0Y2ggaW4gdHdvLiBB bHdheXMgZG8gLS1idWlsZC1pZCBjYWxsLiBJbmNsdWRlIHRoZSAubm90ZSBpbgogICAgLnJvZGF0 YS4gVVNlIGNvbnN0IHZvaWQgKiBhbmQgc3NpemVfdAp2MTM6IFVzZSAtUyB0byBtYWtlIGJ1aWxk X2lkLm8gYW5kIG9iamNvcHkgZGlmZmVyZW50bHkgKEFuZHJldyBzdWdnZXN0ZWQpCi0tLQogQ29u ZmlnLm1rICAgICAgICAgICAgICAgICAgIHwgIDExICsrKysKIHhlbi9hcmNoL2FybS9NYWtlZmls ZSAgICAgICB8ICAgMiArLQogeGVuL2FyY2gvYXJtL3hlbi5sZHMuUyAgICAgIHwgIDIwICsrKysr LS0KIHhlbi9hcmNoL3g4Ni9NYWtlZmlsZSAgICAgICB8ICAzMCArKysrKysrKy0tCiB4ZW4vYXJj aC94ODYvYm9vdC9ta2VsZjMyLmMgfCAxMzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0KIHhlbi9hcmNoL3g4Ni94ZW4ubGRzLlMgICAgICB8ICAyMyArKysrKysr KwogeGVuL2NvbW1vbi92ZXJzaW9uLmMgICAgICAgIHwgIDUxICsrKysrKysrKysrKysrKysrCiB4 ZW4vaW5jbHVkZS94ZW4vdmVyc2lvbi5oICAgfCAgIDMgKwogOCBmaWxlcyBjaGFuZ2VkLCAyNDkg aW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvQ29uZmlnLm1rIGIv Q29uZmlnLm1rCmluZGV4IDc5ZWIyYmQuLmM4ZTg5ZmUgMTAwNjQ0Ci0tLSBhL0NvbmZpZy5tawor KysgYi9Db25maWcubWsKQEAgLTEyNiw2ICsxMjYsMTcgQEAgZW5kZWYKIGNoZWNrLSQoZ2NjKSA9 ICQoY2FsbCBjYy12ZXItY2hlY2ssQ0MsMHgwNDAxMDAsIlhlbiByZXF1aXJlcyBhdCBsZWFzdCBn Y2MtNC4xIikKICQoZXZhbCAkKGNoZWNrLXkpKQogCitsZC12ZXItYnVpbGQtaWQgPSAkKHNoZWxs ICQoMSkgLS1idWlsZC1pZCAyPiYxIHwgXAorCQkJCQlncmVwIC1xIHVucmVjb2duaXplZCAmJiBl Y2hvIG4gfHwgZWNobyB5KQorCisjIGJpbnV0aWxzIDIuMTggaW1wbGVtZW50IGJ1aWxkLWlkLgor aWZlcSAoJChjYWxsIGxkLXZlci1idWlsZC1pZCwkKExEKSksbikKK2J1aWxkX2lkX2xpbmtlciA6 PQorZWxzZQorQ0ZMQUdTICs9IC1EQlVJTERfSUQKK2J1aWxkX2lkX2xpbmtlciA6PSAtLWJ1aWxk LWlkPXNoYTEKK2VuZGlmCisKICMgYXMtaW5zbjogQ2hlY2sgd2hldGhlciBhc3NlbWJsZXIgc3Vw cG9ydHMgYW4gaW5zdHJ1Y3Rpb24uCiAjIFVzYWdlOiBjZmxhZ3MteSArPSAkKGNhbGwgYXMtaW5z biAiaW5zbiIsb3B0aW9uLXllcyxvcHRpb24tbm8pCiBhcy1pbnNuID0gJChpZiAkKHNoZWxsIGVj aG8gJ3ZvaWQgXyh2b2lkKSB7IGFzbSB2b2xhdGlsZSAoICQoMikgKTsgfScgXApkaWZmIC0tZ2l0 IGEveGVuL2FyY2gvYXJtL01ha2VmaWxlIGIveGVuL2FyY2gvYXJtL01ha2VmaWxlCmluZGV4IDE3 ZTllM2EuLmEzMzE5YWIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9NYWtlZmlsZQorKysgYi94 ZW4vYXJjaC9hcm0vTWFrZWZpbGUKQEAgLTk0LDcgKzk0LDcgQEAgJChUQVJHRVQpLXN5bXM6IHBy ZWxpbmsubyB4ZW4ubGRzICQoQkFTRURJUikvY29tbW9uL3N5bWJvbHMtZHVtbXkubwogCSQoTk0p IC1wYSAtLWZvcm1hdD1zeXN2ICQoQEQpLy4kKEBGKS4xIFwKIAkJfCAkKEJBU0VESVIpL3Rvb2xz L3N5bWJvbHMgLS1zeXN2IC0tc29ydCA+JChARCkvLiQoQEYpLjEuUwogCSQoTUFLRSkgLWYgJChC QVNFRElSKS9SdWxlcy5tayAkKEBEKS8uJChARikuMS5vCi0JJChMRCkgJChMREZMQUdTKSAtVCB4 ZW4ubGRzIC1OIHByZWxpbmsubyBcCisJJChMRCkgJChMREZMQUdTKSAtVCB4ZW4ubGRzIC1OIHBy ZWxpbmsubyAkKGJ1aWxkX2lkX2xpbmtlcikgXAogCSAgICAkKEBEKS8uJChARikuMS5vIC1vICRA CiAJcm0gLWYgJChARCkvLiQoQEYpLlswLTldKgogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0v eGVuLmxkcy5TIGIveGVuL2FyY2gvYXJtL3hlbi5sZHMuUwppbmRleCA5OTA5NTk1Li4xODdlZjcz IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0veGVuLmxkcy5TCisrKyBiL3hlbi9hcmNoL2FybS94 ZW4ubGRzLlMKQEAgLTIyLDYgKzIyLDkgQEAgT1VUUFVUX0FSQ0goRk9STUFUKQogUEhEUlMKIHsK ICAgdGV4dCBQVF9MT0FEIC8qIFhYWCBzaG91bGQgYmUgQVQgKCBYRU5fUEhZU19TVEFSVCApICov IDsKKyNpZiBkZWZpbmVkKEJVSUxEX0lEKQorICBub3RlIFBUX05PVEUgOworI2VuZGlmCiB9CiBT RUNUSU9OUwogewpAQCAtNTAsMTYgKzUzLDIxIEBAIFNFQ1RJT05TCiAgICAgICAgX19zdG9wX2J1 Z19mcmFtZXNfMiA9IC47CiAgICAgICAgKigucm9kYXRhKQogICAgICAgICooLnJvZGF0YS4qKQot Ci0jaWZkZWYgTE9DS19QUk9GSUxFCi0gICAgICAgLiA9IEFMSUdOKFBPSU5URVJfQUxJR04pOwot ICAgICAgIF9fbG9ja19wcm9maWxlX3N0YXJ0ID0gLjsKLSAgICAgICAqKC5sb2NrcHJvZmlsZS5k YXRhKQotICAgICAgIF9fbG9ja19wcm9maWxlX2VuZCA9IC47CisjaWYgIWRlZmluZWQoQlVJTERf SUQpCisgICAgICAgIF9lcm9kYXRhID0gLjsgICAgICAgICAgLyogRW5kIG9mIHJlYWQtb25seSBk YXRhICovCiAjZW5kaWYKKyAgfSA6dGV4dAogCisjaWYgZGVmaW5lZChCVUlMRF9JRCkKKyAgLm5v dGUgOiB7CisgICAgICAgX19ub3RlX2dudV9idWlsZF9pZF9zdGFydCA9IC47CisgICAgICAgKigu bm90ZS5nbnUuYnVpbGQtaWQpCisgICAgICAgX19ub3RlX2dudV9idWlsZF9pZF9lbmQgPSAuOwor ICAgICAgICooLm5vdGUpCisgICAgICAgKigubm90ZS4qKQogICAgICAgICBfZXJvZGF0YSA9IC47 ICAgICAgICAgIC8qIEVuZCBvZiByZWFkLW9ubHkgZGF0YSAqLwogICB9IDp0ZXh0CisjZW5kaWYK IAogICAuZGF0YSA6IHsgICAgICAgICAgICAgICAgICAgIC8qIERhdGEgKi8KICAgICAgICAuID0g QUxJR04oUEFHRV9TSVpFKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9NYWtlZmlsZSBiL3hl bi9hcmNoL3g4Ni9NYWtlZmlsZQppbmRleCA4YTEwMGJlLi43ZGIyZTUzIDEwMDY0NAotLS0gYS94 ZW4vYXJjaC94ODYvTWFrZWZpbGUKKysrIGIveGVuL2FyY2gveDg2L01ha2VmaWxlCkBAIC03MSw5 ICs3MSwxNiBAQCBlZmkteSA6PSAkKHNoZWxsIGlmIFsgISAtciAkKEJBU0VESVIpL2luY2x1ZGUv eGVuL2NvbXBpbGUuaCAtbyBcCiAgICAgICAgICAgICAgICAgICAgICAgLU8gJChCQVNFRElSKS9p bmNsdWRlL3hlbi9jb21waWxlLmggXTsgdGhlbiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAg ZWNobyAnJChUQVJHRVQpLmVmaSc7IGZpKQogCitpZmRlZiBidWlsZF9pZF9saW5rZXIKK251bV9w aGRycyA9IDIKK2Vsc2UKK251bV9waGRycyA9IDEKK2VuZGlmCisKICQoVEFSR0VUKTogJChUQVJH RVQpLXN5bXMgJChlZmkteSkgYm9vdC9ta2VsZjMyCiAJLi9ib290L21rZWxmMzIgJChUQVJHRVQp LXN5bXMgJChUQVJHRVQpIDB4MTAwMDAwIFwKLQlgJChOTSkgLW5yICQoVEFSR0VUKS1zeW1zIHwg aGVhZCAtbiAxIHwgc2VkIC1lICdzL15cKFteIF0qXCkuKi8weFwxLydgCisJYCQoTk0pIC1uciAk KFRBUkdFVCktc3ltcyB8IGhlYWQgLW4gMSB8IHNlZCAtZSAncy9eXChbXiBdKlwpLiovMHhcMS8n YCBcCisJJChudW1fcGhkcnMpCiAJJChNQUtFKSAtZiAkKEJBU0VESVIpL1J1bGVzLm1rIC1DIHRl c3QKIAogaW5zdGFsbDoKQEAgLTEwOSwyMiArMTE2LDI4IEBAICQoQkFTRURJUikvY29tbW9uL3N5 bWJvbHMtZHVtbXkubzoKIAkkKE1BS0UpIC1mICQoQkFTRURJUikvUnVsZXMubWsgLUMgJChCQVNF RElSKS9jb21tb24gc3ltYm9scy1kdW1teS5vCiAKICQoVEFSR0VUKS1zeW1zOiBwcmVsaW5rLm8g eGVuLmxkcyAkKEJBU0VESVIpL2NvbW1vbi9zeW1ib2xzLWR1bW15Lm8KLQkkKExEKSAkKExERkxB R1MpIC1UIHhlbi5sZHMgLU4gcHJlbGluay5vIFwKKwkkKExEKSAkKExERkxBR1MpIC1UIHhlbi5s ZHMgLU4gcHJlbGluay5vICQoYnVpbGRfaWRfbGlua2VyKSBcCiAJICAgICQoQkFTRURJUikvY29t bW9uL3N5bWJvbHMtZHVtbXkubyAtbyAkKEBEKS8uJChARikuMAogCSQoTk0pIC1wYSAtLWZvcm1h dD1zeXN2ICQoQEQpLy4kKEBGKS4wIFwKIAkJfCAkKEJBU0VESVIpL3Rvb2xzL3N5bWJvbHMgLS1h bGwtc3ltYm9scyAtLXN5c3YgLS1zb3J0IFwKIAkJPiQoQEQpLy4kKEBGKS4wLlMKIAkkKE1BS0Up IC1mICQoQkFTRURJUikvUnVsZXMubWsgJChARCkvLiQoQEYpLjAubwotCSQoTEQpICQoTERGTEFH UykgLVQgeGVuLmxkcyAtTiBwcmVsaW5rLm8gXAorCSQoTEQpICQoTERGTEFHUykgLVQgeGVuLmxk cyAtTiBwcmVsaW5rLm8gJChidWlsZF9pZF9saW5rZXIpIFwKIAkgICAgJChARCkvLiQoQEYpLjAu byAtbyAkKEBEKS8uJChARikuMQogCSQoTk0pIC1wYSAtLWZvcm1hdD1zeXN2ICQoQEQpLy4kKEBG KS4xIFwKIAkJfCAkKEJBU0VESVIpL3Rvb2xzL3N5bWJvbHMgLS1hbGwtc3ltYm9scyAtLXN5c3Yg LS1zb3J0IC0td2Fybi1kdXAgXAogCQk+JChARCkvLiQoQEYpLjEuUwogCSQoTUFLRSkgLWYgJChC QVNFRElSKS9SdWxlcy5tayAkKEBEKS8uJChARikuMS5vCi0JJChMRCkgJChMREZMQUdTKSAtVCB4 ZW4ubGRzIC1OIHByZWxpbmsubyBcCisJJChMRCkgJChMREZMQUdTKSAtVCB4ZW4ubGRzIC1OIHBy ZWxpbmsubyAkKGJ1aWxkX2lkX2xpbmtlcikgXAogCSAgICAkKEBEKS8uJChARikuMS5vIC1vICRA CiAJcm0gLWYgJChARCkvLiQoQEYpLlswLTldKgogCitidWlsZF9pZC5vOiAkKFRBUkdFVCktc3lt cworCSQoT0JKQ09QWSkgLU8gYmluYXJ5IC0tb25seS1zZWN0aW9uPS5ub3RlICQoQkFTRURJUikv eGVuLXN5bXMgJEAuYmluCisJJChPQkpDT1BZKSAtSSBiaW5hcnkgLU8gZWxmNjQteDg2LTY0IC1C IGkzODY6eDg2LTY0IFwKKwkJLS1yZW5hbWUtc2VjdGlvbj0uZGF0YT0ubm90ZS5nbnUuYnVpbGQt aWQgLVMgJEAuYmluICRACisJcm0gLWYgJEAuYmluCisKIEVGSV9MREZMQUdTID0gJChwYXRzdWJz dCAtbSUsLW1pMzg2cGVwLCQoTERGTEFHUykpIC0tc3Vic3lzdGVtPTEwCiBFRklfTERGTEFHUyAr PSAtLWltYWdlLWJhc2U9JCgxKSAtLXN0YWNrPTAsMCAtLWhlYXA9MCwwIC0tc3RyaXAtZGVidWcK IEVGSV9MREZMQUdTICs9IC0tc2VjdGlvbi1hbGlnbm1lbnQ9MHgyMDAwMDAgLS1maWxlLWFsaWdu bWVudD0weDIwCkBAIC0xMzcsNiArMTUwLDEzIEBAICQoVEFSR0VUKS5lZmk6IFZJUlRfQkFTRSA9 IDB4JChzaGVsbCAkKE5NKSBlZmkvcmVsb2NzLWR1bW15Lm8gfCBzZWQgLW4gJ3MsIEEgVklSCiAk KFRBUkdFVCkuZWZpOiBBTFRfQkFTRSA9IDB4JChzaGVsbCAkKE5NKSBlZmkvcmVsb2NzLWR1bW15 Lm8gfCBzZWQgLW4gJ3MsIEEgQUxUX1NUQVJUJCQsLHAnKQogIyBEb24ndCB1c2UgJCh3aWxkY2Fy ZCAuLi4pIGhlcmUgLSBhdCBsZWFzdCBtYWtlIDMuODAgZXhwYW5kcyB0aGlzIHRvbyBlYXJseSEK ICQoVEFSR0VUKS5lZmk6IGd1YXJkID0gJChpZiAkKHNoZWxsIGVjaG8gZWZpL2RpcyogfCBncmVw IGRpc2FibGVkKSw6KQoraWZkZWYgYnVpbGRfaWRfbGlua2VyCiskKFRBUkdFVCkuZWZpOiBidWls ZF9pZC5vCitidWlsZF9pZF9maWxlIDo9IGJ1aWxkX2lkLm8KK2Vsc2UKK2J1aWxkX2lkX2ZpbGUg Oj0KK2VuZGlmCisKICQoVEFSR0VUKS5lZmk6IHByZWxpbmstZWZpLm8gZWZpLmxkcyBlZmkvcmVs b2NzLWR1bW15Lm8gJChCQVNFRElSKS9jb21tb24vc3ltYm9scy1kdW1teS5vIGVmaS9ta3JlbG9j CiAJJChmb3JlYWNoIGJhc2UsICQoVklSVF9CQVNFKSAkKEFMVF9CQVNFKSwgXAogCSAgICAgICAg ICAkKGd1YXJkKSAkKExEKSAkKGNhbGwgRUZJX0xERkxBR1MsJChiYXNlKSkgLVQgZWZpLmxkcyAt TiAkPCBlZmkvcmVsb2NzLWR1bW15Lm8gXApAQCAtMTUzLDcgKzE3Myw3IEBAICQoVEFSR0VUKS5l Zmk6IHByZWxpbmstZWZpLm8gZWZpLmxkcyBlZmkvcmVsb2NzLWR1bW15Lm8gJChCQVNFRElSKS9j b21tb24vc3ltYm9sCiAJCXwgJChndWFyZCkgJChCQVNFRElSKS90b29scy9zeW1ib2xzIC0tc3lz diAtLXNvcnQgPiQoQEQpLy4kKEBGKS4xcy5TCiAJJChndWFyZCkgJChNQUtFKSAtZiAkKEJBU0VE SVIpL1J1bGVzLm1rICQoQEQpLy4kKEBGKS4xci5vICQoQEQpLy4kKEBGKS4xcy5vCiAJJChndWFy ZCkgJChMRCkgJChjYWxsIEVGSV9MREZMQUdTLCQoVklSVF9CQVNFKSkgLVQgZWZpLmxkcyAtTiAk PCBcCi0JICAgICAgICAgICAgICAgICQoQEQpLy4kKEBGKS4xci5vICQoQEQpLy4kKEBGKS4xcy5v IC1vICRACisJICAgICAgICAgICAgICAgICQoQEQpLy4kKEBGKS4xci5vICQoQEQpLy4kKEBGKS4x cy5vICQoYnVpbGRfaWRfZmlsZSkgLW8gJEAKIAlpZiAkKGd1YXJkKSBmYWxzZTsgdGhlbiBybSAt ZiAkQDsgZWNobyAnRUZJIHN1cHBvcnQgZGlzYWJsZWQnOyBmaQogCXJtIC1mICQoQEQpLy4kKEBG KS5bMC05XSoKIApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Jvb3QvbWtlbGYzMi5jIGIveGVu L2FyY2gveDg2L2Jvb3QvbWtlbGYzMi5jCmluZGV4IDk5M2E3ZWUuLmQyMzBlNGMgMTAwNjQ0Ci0t LSBhL3hlbi9hcmNoL3g4Ni9ib290L21rZWxmMzIuYworKysgYi94ZW4vYXJjaC94ODYvYm9vdC9t a2VsZjMyLmMKQEAgLTQ1LDkgKzQ1LDkgQEAgc3RhdGljIEVsZjMyX0VoZHIgb3V0X2VoZHIgPSB7 CiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlX2ZsYWdz ICovCiAgICAgc2l6ZW9mKEVsZjMyX0VoZHIpLCAgICAgICAgICAgICAgICAgICAgICAvKiBlX2Vo c2l6ZSAqLwogICAgIHNpemVvZihFbGYzMl9QaGRyKSwgICAgICAgICAgICAgICAgICAgICAgLyog ZV9waGVudHNpemUgKi8KLSAgICAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8qIGVfcGhudW0gKi8KKyAgICAxLCAgLyogbW9kaWZ5IGJhc2VkIG9uIG51bV9waGRycyAq LyAgICAgIC8qIGVfcGhudW0gKi8KICAgICBzaXplb2YoRWxmMzJfU2hkciksICAgICAgICAgICAg ICAgICAgICAgIC8qIGVfc2hlbnRzaXplICovCi0gICAgMywgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAvKiBlX3NobnVtICovCisgICAgMywgIC8qIG1vZGlmeSBiYXNlZCBv biBudW1fcGhkcnMgKi8gICAgICAvKiBlX3NobnVtICovCiAgICAgMiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvKiBlX3Noc3RybmR4ICovCiB9OwogCkBAIC02MSw4ICs2 MSwyMCBAQCBzdGF0aWMgRWxmMzJfUGhkciBvdXRfcGhkciA9IHsKICAgICBQRl9SfFBGX1d8UEZf WCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBfZmxhZ3MgKi8KICAgICA2NCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBfYWxpZ24gKi8KIH07CitzdGF0aWMg RWxmMzJfUGhkciBub3RlX3BoZHIgPSB7CisgICAgUFRfTk9URSwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvKiBwX3R5cGUgKi8KKyAgICBEWU5BTUlDQUxMWV9GSUxMRUQsICAgICAg ICAgICAgICAgICAgICAgIC8qIHBfb2Zmc2V0ICovCisgICAgRFlOQU1JQ0FMTFlfRklMTEVELCAg ICAgICAgICAgICAgICAgICAgICAvKiBwX3ZhZGRyICovCisgICAgRFlOQU1JQ0FMTFlfRklMTEVE LCAgICAgICAgICAgICAgICAgICAgICAvKiBwX3BhZGRyICovCisgICAgRFlOQU1JQ0FMTFlfRklM TEVELCAgICAgICAgICAgICAgICAgICAgICAvKiBwX2ZpbGVzeiAqLworICAgIERZTkFNSUNBTExZ X0ZJTExFRCwgICAgICAgICAgICAgICAgICAgICAgLyogcF9tZW1zeiAqLworICAgIFBGX1IsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcF9mbGFncyAqLworICAgIDQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcF9hbGlnbiAqLworfTsKIAog c3RhdGljIHU4IG91dF9zaHN0cnRhYltdID0gIlwwLnRleHRcMC5zaHN0cnRhYiI7CisvKiBJZiBu dW1fcGhkcnMgPj0gMiwgd2UgbmVlZCB0byB0YWNrIHRoZSAubm90ZS4gKi8KK3N0YXRpYyB1OCBv dXRfc2hzdHJ0YWJfZXh0cmFbXSA9ICIubm90ZVwwIjsKIAogc3RhdGljIEVsZjMyX1NoZHIgb3V0 X3NoZHJbXSA9IHsKICAgICB7IDAgfSwKQEAgLTkwLDYgKzEwMiwyMyBAQCBzdGF0aWMgRWxmMzJf U2hkciBvdXRfc2hkcltdID0gewogICAgIH0KIH07CiAKKy8qCisgKiBUaGUgMTcgcG9pbnRzIHRv IHRoZSAnLm5vdGUnIGluIHRoZSBvdXRfc2hzdHJ0YWIgYW5kIG91dF9zaHN0cnRhYl9leHRyYQor ICogbGFpZCBvdXQgaW4gdGhlIGZpbGUuCisgKi8KK3N0YXRpYyBFbGYzMl9TaGRyIG91dF9zaGRy X2V4dHJhID0geworICAgICAgMTcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Lyogc2hfbmFtZSAqLworICAgICAgU0hUX05PVEUsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLyogc2hfdHlwZSAqLworICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLyogc2hfZmxhZ3MgKi8KKyAgICAgIERZTkFNSUNBTExZX0ZJTExFRCwgICAgICAgICAg ICAgICAgICAgIC8qIHNoX2FkZHIgKi8KKyAgICAgIERZTkFNSUNBTExZX0ZJTExFRCwgICAgICAg ICAgICAgICAgICAgIC8qIHNoX29mZnNldCAqLworICAgICAgRFlOQU1JQ0FMTFlfRklMTEVELCAg ICAgICAgICAgICAgICAgICAgLyogc2hfc2l6ZSAqLworICAgICAgMCwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLyogc2hfbGluayAqLworICAgICAgMCwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLyogc2hfaW5mbyAqLworICAgICAgNCwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2hfYWRkcmFsaWduICovCisgICAgICAwICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzaF9lbnRzaXplICovCit9Owor CiAvKiBTb21lIHN5c3RlbSBoZWFkZXIgZmlsZXMgZGVmaW5lIHRoZXNlIG1hY3JvcyBhbmQgcG9s bHV0ZSBvdXIgbmFtZXNwYWNlLiAqLwogI3VuZGVmIHN3YXAxNgogI3VuZGVmIHN3YXAzMgpAQCAt MjI4LDIxICsyNTcsMjIgQEAgc3RhdGljIHZvaWQgZG9fcmVhZChpbnQgZmQsIHZvaWQgKmRhdGEs IGludCBsZW4pCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CiAgICAgdTY0ICAg ICAgICBmaW5hbF9leGVjX2FkZHI7Ci0gICAgdTMyICAgICAgICBsb2FkYmFzZSwgZGF0X3Npeiwg bWVtX3NpejsKKyAgICB1MzIgICAgICAgIGxvYWRiYXNlLCBkYXRfc2l6LCBtZW1fc2l6LCBub3Rl X2Jhc2UsIG5vdGVfc3osIG9mZnNldDsKICAgICBjaGFyICAgICAgKmluaW1hZ2UsICpvdXRpbWFn ZTsKICAgICBpbnQgICAgICAgIGluZmQsIG91dGZkOwogICAgIGNoYXIgICAgICAgYnVmZmVyWzEw MjRdOwogICAgIGludCAgICAgICAgYnl0ZXMsIHRvZG8sIGk7CisgICAgaW50ICAgICAgICBudW1f cGhkcnM7CiAKICAgICBFbGYzMl9FaGRyIGluMzJfZWhkcjsKIAogICAgIEVsZjY0X0VoZHIgaW42 NF9laGRyOwogICAgIEVsZjY0X1BoZHIgaW42NF9waGRyOwogCi0gICAgaWYgKCBhcmdjICE9IDUg KQorICAgIGlmICggYXJnYyAhPSA2ICkKICAgICB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAi VXNhZ2U6IG1rZWxmMzIgPGluLWltYWdlPiA8b3V0LWltYWdlPiAiCi0gICAgICAgICAgICAgICAg Ijxsb2FkLWJhc2U+IDxmaW5hbC1leGVjLWFkZHI+XG4iKTsKKyAgICAgICAgICAgICAgICAiPGxv YWQtYmFzZT4gPGZpbmFsLWV4ZWMtYWRkcj4gPG51bWJlciBvZiBwcm9ncmFtIGhlYWRlcnM+XG4i KTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogCkBAIC0yNTAsNyArMjgwLDEzIEBAIGludCBt YWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICBvdXRpbWFnZSA9IGFyZ3ZbMl07CiAgICAg bG9hZGJhc2UgPSBzdHJ0b3VsKGFyZ3ZbM10sIE5VTEwsIDE2KTsKICAgICBmaW5hbF9leGVjX2Fk ZHIgPSBzdHJ0b3VsbChhcmd2WzRdLCBOVUxMLCAxNik7Ci0KKyAgICBudW1fcGhkcnMgPSBhdG9p KGFyZ3ZbNV0pOworICAgIGlmICggbnVtX3BoZHJzID4gMiB8fCBudW1fcGhkcnMgPCAxICkKKyAg ICB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiTnVtYmVyIG9mIHByb2dyYW0gaGVhZGVycyBN VVNUIGJlIDEgb3IgMiwgZ290ICVkIVxuIiwKKyAgICAgICAgICAgICAgICBudW1fcGhkcnMpOwor ICAgICAgICByZXR1cm4gMTsKKyAgICB9CiAgICAgaW5mZCA9IG9wZW4oaW5pbWFnZSwgT19SRE9O TFkpOwogICAgIGlmICggaW5mZCA9PSAtMSApCiAgICAgewpAQCAtMjg1LDExICszMjEsMTAgQEAg aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgICAgICAgICAgICAgIChpbnQpaW42 NF9laGRyLmVfcGhlbnRzaXplLCAoaW50KXNpemVvZihpbjY0X3BoZHIpKTsKICAgICAgICAgcmV0 dXJuIDE7CiAgICAgfQotCi0gICAgaWYgKCBpbjY0X2VoZHIuZV9waG51bSAhPSAxICkKKyAgICBp ZiAoIGluNjRfZWhkci5lX3BobnVtICE9IG51bV9waGRycyApCiAgICAgewotICAgICAgICBmcHJp bnRmKHN0ZGVyciwgIkV4cGVjdCBwcmVjaXNseSAxIHByb2dyYW0gaGVhZGVyOyBmb3VuZCAlZC5c biIsCi0gICAgICAgICAgICAgICAgKGludClpbjY0X2VoZHIuZV9waG51bSk7CisgICAgICAgIGZw cmludGYoc3RkZXJyLCAiRXhwZWN0IHByZWNpc2x5ICVkIHByb2dyYW0gaGVhZGVyOyBmb3VuZCAl ZC5cbiIsCisgICAgICAgICAgICAgICAgbnVtX3BoZHJzLCAoaW50KWluNjRfZWhkci5lX3BobnVt KTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogCkBAIC0yOTksMTEgKzMzNCwzNiBAQCBpbnQg bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKICAgICAodm9pZClsc2VlayhpbmZkLCBpbjY0 X3BoZHIucF9vZmZzZXQsIFNFRUtfU0VUKTsKICAgICBkYXRfc2l6ID0gKHUzMilpbjY0X3BoZHIu cF9maWxlc3o7Ci0KICAgICAvKiBEbyBub3QgdXNlIHBfbWVtc3o6IGl0IGRvZXMgbm90IGluY2x1 ZGUgQlNTIGFsaWdubWVudCBwYWRkaW5nLiAqLwogICAgIC8qbWVtX3NpeiA9ICh1MzIpaW42NF9w aGRyLnBfbWVtc3o7Ki8KICAgICBtZW1fc2l6ID0gKHUzMikoZmluYWxfZXhlY19hZGRyIC0gaW42 NF9waGRyLnBfdmFkZHIpOwogCisgICAgbm90ZV9zeiA9IG5vdGVfYmFzZSA9IG9mZnNldCA9IDA7 CisgICAgaWYgKCBudW1fcGhkcnMgPiAxICkKKyAgICB7CisgICAgICAgIG9mZnNldCA9IGluNjRf cGhkci5wX29mZnNldDsKKyAgICAgICAgbm90ZV9iYXNlID0gaW42NF9waGRyLnBfdmFkZHI7CisK KyAgICAgICAgKHZvaWQpbHNlZWsoaW5mZCwgaW42NF9laGRyLmVfcGhvZmYrc2l6ZW9mKGluNjRf cGhkciksIFNFRUtfU0VUKTsKKyAgICAgICAgZG9fcmVhZChpbmZkLCAmaW42NF9waGRyLCBzaXpl b2YoaW42NF9waGRyKSk7CisgICAgICAgIGVuZGlhbmFkanVzdF9waGRyNjQoJmluNjRfcGhkcik7 CisKKyAgICAgICAgKHZvaWQpbHNlZWsoaW5mZCwgb2Zmc2V0LCBTRUVLX1NFVCk7CisKKyAgICAg ICAgbm90ZV9zeiA9IGluNjRfcGhkci5wX21lbXN6OworICAgICAgICBub3RlX2Jhc2UgPSBpbjY0 X3BoZHIucF92YWRkciAtIG5vdGVfYmFzZTsKKworICAgICAgICBpZiAoIGluNjRfcGhkci5wX29m ZnNldCA+IGRhdF9zaXogfHwgb2Zmc2V0ID4gaW42NF9waGRyLnBfb2Zmc2V0ICkKKyAgICAgICAg eworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJFeHBlY3RlZCAubm90ZSBzZWN0aW9uIHdp dGhpbiAudGV4dCBzZWN0aW9uIVxuIiBcCisgICAgICAgICAgICAgICAgICAgICJPZmZzZXQgJWxk IG5vdCB3aXRoaW4gJWQhXG4iLAorICAgICAgICAgICAgICAgICAgICBpbjY0X3BoZHIucF9vZmZz ZXQsIGRhdF9zaXopOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAg LyogR2V0cyB1cyB0aGUgYWJzb2x1dGUgb2Zmc2V0IHdpdGhpbiB0aGUgLnRleHQgc2VjdGlvbi4g Ki8KKyAgICAgICAgb2Zmc2V0ID0gaW42NF9waGRyLnBfb2Zmc2V0IC0gb2Zmc2V0OworICAgIH0K KwogICAgIC8qCiAgICAgICogRW5kIHRoZSBpbWFnZSBvbiBhIHBhZ2UgYm91bmRhcnkuIFRoaXMg Z2V0cyByb3VuZCBhbGlnbm1lbnQgYnVncwogICAgICAqIGluIHRoZSBib290LSBvciBjaGFpbi1s b2FkZXIgKGUuZy4sIGtleGVjIG9uIHRoZSBYZW5vQm9vdCBDRCkuCkBAIC0zMjIsNiArMzgyLDMx IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICBvdXRfc2hkclsxXS5zaF9z aXplICAgPSBkYXRfc2l6OwogICAgIG91dF9zaGRyWzJdLnNoX29mZnNldCA9IFJBV19PRkZTRVQg KyBkYXRfc2l6ICsgc2l6ZW9mKG91dF9zaGRyKTsKIAorICAgIGlmICggbnVtX3BoZHJzID4gMSAp CisgICAgeworICAgICAgICAvKiBXZSBoYXZlIHR3byBvZiB0aGVtISAqLworICAgICAgICBvdXRf ZWhkci5lX3BobnVtID0gbnVtX3BoZHJzOworICAgICAgICAvKiBFeHRyYSAubm90ZSBzZWN0aW9u LiAqLworICAgICAgICBvdXRfZWhkci5lX3NobnVtKys7CisKKyAgICAgICAgLyogRmlsbCBvdXQg dGhlIFBUX05PVEUgcHJvZ3JhbSBoZWFkZXIuICovCisgICAgICAgIG5vdGVfcGhkci5wX3ZhZGRy ICAgPSBub3RlX2Jhc2U7CisgICAgICAgIG5vdGVfcGhkci5wX3BhZGRyICAgPSBub3RlX2Jhc2U7 CisgICAgICAgIG5vdGVfcGhkci5wX2ZpbGVzeiAgPSBub3RlX3N6OworICAgICAgICBub3RlX3Bo ZHIucF9tZW1zeiAgID0gbm90ZV9zejsKKyAgICAgICAgbm90ZV9waGRyLnBfb2Zmc2V0ICA9IG9m ZnNldDsKKworICAgICAgICAvKiBUYWNrIG9uIHRoZSAubm90ZVwwICovCisgICAgICAgIG91dF9z aGRyWzJdLnNoX3NpemUgKz0gc2l6ZW9mKG91dF9zaHN0cnRhYl9leHRyYSk7CisgICAgICAgIC8q IEFuZCBtb3ZlIGl0IHBhc3QgdGhlIC5ub3RlIHNlY3Rpb24uICovCisgICAgICAgIG91dF9zaGRy WzJdLnNoX29mZnNldCArPSBzaXplb2Yob3V0X3NoZHJfZXh0cmEpOworCisgICAgICAgIC8qIEZp bGwgb3V0IHRoZSAubm90ZSBzZWN0aW9uLiAqLworICAgICAgICBvdXRfc2hkcl9leHRyYS5zaF9z aXplID0gbm90ZV9zejsKKyAgICAgICAgb3V0X3NoZHJfZXh0cmEuc2hfYWRkciA9IG5vdGVfYmFz ZTsKKyAgICAgICAgb3V0X3NoZHJfZXh0cmEuc2hfb2Zmc2V0ID0gUkFXX09GRlNFVCArIG9mZnNl dDsKKyAgICB9CisKICAgICBvdXRmZCA9IG9wZW4ob3V0aW1hZ2UsIE9fV1JPTkxZfE9fQ1JFQVR8 T19UUlVOQywgMDc3NSk7CiAgICAgaWYgKCBvdXRmZCA9PSAtMSApCiAgICAgewpAQCAtMzM1LDgg KzQyMCwxNSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKICAgICBlbmRpYW5h ZGp1c3RfcGhkcjMyKCZvdXRfcGhkcik7CiAgICAgZG9fd3JpdGUob3V0ZmQsICZvdXRfcGhkciwg c2l6ZW9mKG91dF9waGRyKSk7Ci0gICAgCi0gICAgaWYgKCAoYnl0ZXMgPSBSQVdfT0ZGU0VUIC0g c2l6ZW9mKG91dF9laGRyKSAtIHNpemVvZihvdXRfcGhkcikpIDwgMCApCisKKyAgICBpZiAoIG51 bV9waGRycyA+IDEgKQorICAgIHsKKyAgICAgICAgZW5kaWFuYWRqdXN0X3BoZHIzMigmbm90ZV9w aGRyKTsKKyAgICAgICAgZG9fd3JpdGUob3V0ZmQsICZub3RlX3BoZHIsIHNpemVvZihub3RlX3Bo ZHIpKTsKKyAgICB9CisKKyAgICBpZiAoIChieXRlcyA9IFJBV19PRkZTRVQgLSBzaXplb2Yob3V0 X2VoZHIpIC0gc2l6ZW9mKG91dF9waGRyKSAtCisgICAgICAgICAgKCBudW1fcGhkcnMgPiAxID8g c2l6ZW9mKG5vdGVfcGhkcikgOiAwICkgKSA8IDAgKQogICAgIHsKICAgICAgICAgZnByaW50Zihz dGRlcnIsICJIZWFkZXIgb3ZlcmZsb3cuXG4iKTsKICAgICAgICAgcmV0dXJuIDE7CkBAIC0zNTUs OSArNDQ3LDIyIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICAgICAgZW5k aWFuYWRqdXN0X3NoZHIzMigmb3V0X3NoZHJbaV0pOwogICAgIGRvX3dyaXRlKG91dGZkLCAmb3V0 X3NoZHJbMF0sIHNpemVvZihvdXRfc2hkcikpOwogCi0gICAgZG9fd3JpdGUob3V0ZmQsIG91dF9z aHN0cnRhYiwgc2l6ZW9mKG91dF9zaHN0cnRhYikpOwotICAgIGRvX3dyaXRlKG91dGZkLCBidWZm ZXIsIDQtKChzaXplb2Yob3V0X3Noc3RydGFiKStkYXRfc2l6KSYzKSk7Ci0KKyAgICBpZiAoIG51 bV9waGRycyA+IDEgKQorICAgIHsKKyAgICAgICAgZW5kaWFuYWRqdXN0X3NoZHIzMigmb3V0X3No ZHJfZXh0cmEpOworICAgICAgICAvKiBBcHBlbmQgdGhlIC5ub3RlIHNlY3Rpb24uICovCisgICAg ICAgIGRvX3dyaXRlKG91dGZkLCAmb3V0X3NoZHJfZXh0cmEsIHNpemVvZihvdXRfc2hkcl9leHRy YSkpOworICAgICAgICAvKiBUaGUgbm9ybWFsIHN0cmluZ3MgLSAudGV4dFwwLi4gKi8KKyAgICAg ICAgZG9fd3JpdGUob3V0ZmQsIG91dF9zaHN0cnRhYiwgc2l6ZW9mKG91dF9zaHN0cnRhYikpOwor ICAgICAgICAvKiBPdXIgLm5vdGUgKi8KKyAgICAgICAgZG9fd3JpdGUob3V0ZmQsIG91dF9zaHN0 cnRhYl9leHRyYSwgc2l6ZW9mKG91dF9zaHN0cnRhYl9leHRyYSkpOworICAgICAgICBkb193cml0 ZShvdXRmZCwgYnVmZmVyLCA0LSgoc2l6ZW9mKG91dF9zaHN0cnRhYikrc2l6ZW9mKG91dF9zaHN0 cnRhYl9leHRyYSkrZGF0X3NpeikmMykpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAg ICBkb193cml0ZShvdXRmZCwgb3V0X3Noc3RydGFiLCBzaXplb2Yob3V0X3Noc3RydGFiKSk7Cisg ICAgICAgIGRvX3dyaXRlKG91dGZkLCBidWZmZXIsIDQtKChzaXplb2Yob3V0X3Noc3RydGFiKStk YXRfc2l6KSYzKSk7CisgICAgfQogICAgIGNsb3NlKGluZmQpOwogICAgIGNsb3NlKG91dGZkKTsK IApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3hlbi5sZHMuUyBiL3hlbi9hcmNoL3g4Ni94ZW4u bGRzLlMKaW5kZXggOTYxZjQ4Zi4uNzA1ZmE5OCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3hl bi5sZHMuUworKysgYi94ZW4vYXJjaC94ODYveGVuLmxkcy5TCkBAIC0zMSw2ICszMSw5IEBAIE9V VFBVVF9BUkNIKGkzODY6eDg2LTY0KQogUEhEUlMKIHsKICAgdGV4dCBQVF9MT0FEIDsKKyNpZiBk ZWZpbmVkKEJVSUxEX0lEKSAmJiAhZGVmaW5lZChFRkkpCisgIG5vdGUgUFRfTk9URSA7CisjZW5k aWYKIH0KIFNFQ1RJT05TCiB7CkBAIC03NSw2ICs3OCwxMSBAQCBTRUNUSU9OUwogCiAgICAgICAg Kigucm9kYXRhKQogICAgICAgICooLnJvZGF0YS4qKQorI2lmIGRlZmluZWQoQlVJTERfSUQpICYm IGRlZmluZWQoRUZJKQorICAgICAgIF9fbm90ZV9nbnVfYnVpbGRfaWRfc3RhcnQgPSAuOworICAg ICAgICooLm5vdGUuZ251LmJ1aWxkLWlkKQorICAgICAgIF9fbm90ZV9nbnVfYnVpbGRfaWRfZW5k ID0gLjsKKyNlbmRpZgogCiAgICAgICAgLiA9IEFMSUdOKDgpOwogICAgICAgIC8qIEV4Y2VwdGlv biB0YWJsZSAqLwpAQCAtOTYsNiArMTA0LDIxIEBAIFNFQ1RJT05TCiAgICAgICAgX2Vyb2RhdGEg PSAuOwogICB9IDp0ZXh0CiAKKyNpZiBkZWZpbmVkKEJVSUxEX0lEKSAmJiAhZGVmaW5lZChFRkkp CisvKgorICogTm8gbWVjaGFuaXNtIHRvIHB1dCBhbiBQVF9OT1RFIGluIHRoZSBFRkkgZmlsZSAt IHNvIHB1dAorICogaXQgaW4gLmRhdGEgc2VjdGlvbi4KKyAqLworICAuID0gQUxJR04oNCk7Cisg IC5ub3RlIDogeworICAgICAgIF9fbm90ZV9nbnVfYnVpbGRfaWRfc3RhcnQgPSAuOworICAgICAg ICooLm5vdGUuZ251LmJ1aWxkLWlkKQorICAgICAgIF9fbm90ZV9nbnVfYnVpbGRfaWRfZW5kID0g LjsKKyAgICAgICAqKC5ub3RlKQorICAgICAgICooLm5vdGUuKikKKyAgfSA6bm90ZSA6dGV4dAor I2VuZGlmCisKICNpZmRlZiBFRkkKICAgLiA9IEFMSUdOKE1CKDIpKTsKICNlbmRpZgpkaWZmIC0t Z2l0IGEveGVuL2NvbW1vbi92ZXJzaW9uLmMgYi94ZW4vY29tbW9uL3ZlcnNpb24uYwppbmRleCBm YzliZjQyLi5hZjg3MzcxIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3ZlcnNpb24uYworKysgYi94 ZW4vY29tbW9uL3ZlcnNpb24uYwpAQCAtMSw1ICsxLDkgQEAKICNpbmNsdWRlIDx4ZW4vY29tcGls ZS5oPgorI2luY2x1ZGUgPHhlbi9lcnJuby5oPgorI2luY2x1ZGUgPHhlbi9zdHJpbmcuaD4KKyNp bmNsdWRlIDx4ZW4vdHlwZXMuaD4KICNpbmNsdWRlIDx4ZW4vdmVyc2lvbi5oPgorI2luY2x1ZGUg PHhlbi9lbGYuaD4KIAogY29uc3QgY2hhciAqeGVuX2NvbXBpbGVfZGF0ZSh2b2lkKQogewpAQCAt NjEsNiArNjUsNTMgQEAgY29uc3QgY2hhciAqeGVuX2Rlbnkodm9pZCkKICAgICByZXR1cm4gIjxk ZW5pZWQ+IjsKIH0KIAorI2lmZGVmIEJVSUxEX0lECisjZGVmaW5lIE5UX0dOVV9CVUlMRF9JRCAz CisvKiBEZWZpbmVkIGluIGxpbmtlciBzY3JpcHQuICovCitleHRlcm4gY29uc3QgRWxmX05vdGUg X19ub3RlX2dudV9idWlsZF9pZF9zdGFydFtdLCBfX25vdGVfZ251X2J1aWxkX2lkX2VuZFtdOwor CitpbnQgeGVuX2J1aWxkX2lkKGNvbnN0IHZvaWQgKipwLCBzc2l6ZV90ICpsZW4pCit7CisgICAg Y29uc3QgRWxmX05vdGUgKm4gPSBfX25vdGVfZ251X2J1aWxkX2lkX3N0YXJ0OworICAgIHN0YXRp YyBib29sX3QgY2hlY2tlZCA9IDA7CisKKyAgICBpZiAoIGNoZWNrZWQgKQorICAgIHsKKyAgICAg ICAgKmxlbiA9IG4tPmRlc2NzejsKKyAgICAgICAgKnAgPSBFTEZOT1RFX0RFU0Mobik7CisgICAg ICAgIHJldHVybiAwOworICAgIH0KKyAgICAvKiAtLWJ1aWxkLWlkIGludm9rZWQgd2l0aCB3cm9u ZyBwYXJhbWV0ZXJzLiAqLworICAgIGlmICggX19ub3RlX2dudV9idWlsZF9pZF9lbmQgPD0gX19u b3RlX2dudV9idWlsZF9pZF9zdGFydCApCisgICAgICAgIHJldHVybiAtRU5PREFUQTsKKworICAg IC8qIENoZWNrIGZvciBmdWxsIE5vdGUgaGVhZGVyLiAqLworICAgIGlmICggJm5bMV0gPiBfX25v dGVfZ251X2J1aWxkX2lkX2VuZCApCisgICAgICAgIHJldHVybiAtRU5PREFUQTsKKworICAgIC8q IENoZWNrIGlmIHdlIHJlYWxseSBoYXZlIGEgYnVpbGQtaWQuICovCisgICAgaWYgKCBOVF9HTlVf QlVJTERfSUQgIT0gbi0+dHlwZSApCisgICAgICAgIHJldHVybiAtRU5PREFUQTsKKworICAgIC8q IFNhbml0eSBjaGVjaywgbmFtZSBzaG91bGQgYmUgIkdOVSIgZm9yIGxkLWdlbmVyYXRlZCBidWls ZC1pZC4gKi8KKyAgICBpZiAoIHN0cm5jbXAoRUxGTk9URV9OQU1FKG4pLCAiR05VIiwgbi0+bmFt ZXN6KSAhPSAwICkKKyAgICAgICAgcmV0dXJuIC1FTk9EQVRBOworCisgICAgKmxlbiA9IG4tPmRl c2NzejsKKyAgICAqcCA9IEVMRk5PVEVfREVTQyhuKTsKKworICAgIGNoZWNrZWQgPSAxOworICAg IHJldHVybiAwOworfQorCisjZWxzZQorCitpbnQgeGVuX2J1aWxkX2lkKGNvbnN0IHZvaWQgKipw LCBzc2l6ZV90ICpsZW4pCit7CisgICAgcmV0dXJuIC1FTk9EQVRBOworfQorI2VuZGlmCisKIC8q CiAgKiBMb2NhbCB2YXJpYWJsZXM6CiAgKiBtb2RlOiBDCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVk ZS94ZW4vdmVyc2lvbi5oIGIveGVuL2luY2x1ZGUveGVuL3ZlcnNpb24uaAppbmRleCAwMTZhNTZj Li5hNDYxYzg1IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vdmVyc2lvbi5oCisrKyBiL3hl bi9pbmNsdWRlL3hlbi92ZXJzaW9uLmgKQEAgLTEzLDQgKzEzLDcgQEAgY29uc3QgY2hhciAqeGVu X2V4dHJhX3ZlcnNpb24odm9pZCk7CiBjb25zdCBjaGFyICp4ZW5fY2hhbmdlc2V0KHZvaWQpOwog Y29uc3QgY2hhciAqeGVuX2Jhbm5lcih2b2lkKTsKIGNvbnN0IGNoYXIgKnhlbl9kZW55KHZvaWQp OworI2luY2x1ZGUgPHhlbi90eXBlcy5oPgoraW50IHhlbl9idWlsZF9pZChjb25zdCB2b2lkICoq cCwgc3NpemVfdCAqbGVuKTsKKwogI2VuZGlmIC8qIF9fWEVOX1ZFUlNJT05fSF9fICovCi0tIAoy LjUuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl bi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3Rz Lnhlbi5vcmcveGVuLWRldmVsCg==