From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Kiper Subject: [PATCH v11 01/13] x86: add multiboot2 protocol support Date: Mon, 5 Dec 2016 23:25:06 +0100 Message-ID: <1480976718-12198-2-git-send-email-daniel.kiper@oracle.com> References: <1480976718-12198-1-git-send-email-daniel.kiper@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cE1hr-00031b-ED for xen-devel@lists.xenproject.org; Mon, 05 Dec 2016 22:25:55 +0000 In-Reply-To: <1480976718-12198-1-git-send-email-daniel.kiper@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 Cc: jgross@suse.com, sstabellini@kernel.org, andrew.cooper3@citrix.com, cardoe@cardoe.com, pgnet.dev@gmail.com, ning.sun@intel.com, julien.grall@arm.com, jbeulich@suse.com, qiaowei.ren@intel.com, gang.wei@intel.com, fu.wei@linaro.org List-Id: xen-devel@lists.xenproject.org QWRkIG11bHRpYm9vdDIgcHJvdG9jb2wgc3VwcG9ydC4gQWx0ZXIgbWluIG1lbW9yeSBsaW1pdCBo YW5kbGluZyBhcyB3ZQpub3cgbWF5IG5vdCBmaW5kIGl0IGZyb20gZWl0aGVyIG11bHRpYm9vdCAo djEpIG9yIG11bHRpYm9vdDIuCgpUaGlzIHdheSB3ZSBhcmUgbGF5aW5nIHRoZSBmb3VuZGF0aW9u IGZvciBFRkkgKyBHUlVCMiArIFhlbiBkZXZlbG9wbWVudC4KClNpZ25lZC1vZmYtYnk6IERhbmll bCBLaXBlciA8ZGFuaWVsLmtpcGVyQG9yYWNsZS5jb20+ClJldmlld2VkLWJ5OiBKYW4gQmV1bGlj aCA8amJldWxpY2hAc3VzZS5jb20+Ci0tLQp2OSAtIHN1Z2dlc3Rpb25zL2ZpeGVzOgogICAtIHVz ZSAuTCBsYWJlbCBpbnN0ZWFkIG9mIG51bWVyaWMgb25lIGluIG11bHRpYm9vdDIgZGF0YSBzY2Fu bmluZyBsb29wOwogICAgIEkgaG9wZSB0aGF0IHRoaXMgY2hhbmdlIGRvZXMgbm90IGludmFsaWRh dGUgSmFuJ3MgUmV2aWV3ZWQtYnkKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKS4KCnY4 IC0gc3VnZ2VzdGlvbnMvZml4ZXM6CiAgIC0gdXNlIHNpemVvZig8dmFyPi88ZXhwcj4pIGluc3Rl YWQgb2Ygc2l6ZW9mKDx0eXBlPikKICAgICBpZiBpdCBpcyBwb3NzaWJsZQogICAgIChzdWdnZXN0 ZWQgYnkgSmFuIEJldWxpY2gpLgoKdjcgLSBzdWdnZXN0aW9ucy9maXhlczoKICAgLSByZW5hbWUg bWJpX21iaS9tYmkyX21iaSB0byBtYmlfcmVsb2MvbWJpMl9yZWxvYyByZXNwZWN0aXZlbHkKICAg ICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSBpbml0aWFsaXplIG1iaV9vdXQtPmZs YWdzIHVzaW5nICJ8PSIgaW5zdGVhZCBvZiAiPSIKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVs aWNoKSwKICAgLSB1c2Ugc2l6ZW9mKCptbWFwX2RzdCkgaW5zdGVhZCBvZiBzaXplb2YobWVtb3J5 X21hcF90KQogICAgIGlmIGl0IG1ha2VzIHNlbnNlCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1 bGljaCkuCgp2NiAtIHN1Z2dlc3Rpb25zL2ZpeGVzOgogICAtIHByb3Blcmx5IGluZGV4IG11bHRp Ym9vdDJfdGFnX21tYXBfdC5lbnRyaWVzW10KICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNo KSwKICAgLSBkbyBub3QgaW5kZXggbWJpX291dF9tb2RzW10gYmV5b25kIGl0cyBlbmQKICAgICAo c3VnZ2VzdGVkIGJ5IEFuZHJldyBDb29wZXIpLAogICAtIHJlZHVjZSBudW1iZXIgb2YgY2FzdHMK ICAgICAoc3VnZ2VzdGVkIGJ5IEFuZHJldyBDb29wZXIgYW5kIEphbiBCZXVsaWNoKSwKICAgLSBh ZGQgYnJhY2VzIHRvIGluY3JlYXNlIGNvZGUgcmVhZGFiaWxpdHkKICAgICAoc3VnZ2VzdGVkIGJ5 IEFuZHJldyBDb29wZXIpLgoKdjUgLSBzdWdnZXN0aW9ucy9maXhlczoKICAgLSBjaGVjayBtdWx0 aWJvb3QyX3RhZ19tbWFwX3QuZW50cnlfc2l6ZSBiZWZvcmUKICAgICBtdWx0aWJvb3QyX3RhZ19t bWFwX3QuZW50cmllc1tdIHVzZQogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAt IHByb3Blcmx5IGluZGV4IG11bHRpYm9vdDJfdGFnX21tYXBfdC5lbnRyaWVzW10KICAgICAoc3Vn Z2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSB1c2UgInR5cGUgbmFtZVtdIiBpbnN0YWQgb2Yg InR5cGUgbmFtZVswXSIKICAgICBpbiB4ZW4vaW5jbHVkZS94ZW4vbXVsdGlib290Mi5oCiAgICAg KHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gcmVtb3ZlIHVubmVlZGVkIGNvbW1lbnQK ICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKS4KCnY0IC0gc3VnZ2VzdGlvbnMvZml4ZXM6 CiAgIC0gYXZvaWQgYXNzZW1ibHkgdXNhZ2UgaW4geGVuL2FyY2gveDg2L2Jvb3QvcmVsb2MuYywK ICAgLSBmaXggYm91bmRhcnkgY2hlY2sgaXNzdWUgYW5kIG9wdGltaXplCiAgICAgZm9yKCkgbG9v cHMgaW4gbWJpMl9tYmkoKSwKICAgLSBtb3ZlIHRvIHN0ZGNhbGwgY2FsbGluZyBjb252ZW50aW9u LAogICAtIHJlbW92ZSB1bm5lZWRlZCB0eXBlb2YoKSBmcm9tIEFMSUdOX1VQKCkgbWFjcm8KICAg ICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSBhZGQgYW5kIHVzZSBOVUxMIGRlZmlu aXRpb24gaW4geGVuL2FyY2gveDg2L2Jvb3QvcmVsb2MuYwogICAgIChzdWdnZXN0ZWQgYnkgSmFu IEJldWxpY2gpLAogICAtIGRvIG5vdCByZWFkIGRhdGEgYmV5b25kIHRoZSBlbmQgb2YgbXVsdGli b290MgogICAgIGluZm9ybWF0aW9uIGluIHhlbi9hcmNoL3g4Ni9ib290L2hlYWQuUwogICAgIChz dWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIGFkZCA6cmVxIHRvIHNvbWUgLm1hY3JvIGFy Z3VtZW50cwogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIHVzZSBjbW92Y2Mg aWYgcG9zc2libGUsCiAgIC0gYWRkIC5MIHRvIG11bHRpYm9vdDJfaGVhZGVyX2VuZCBsYWJlbAog ICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIGFkZCAuTCB0byBtdWx0aWJvb3Qy X3Byb3RvIGxhYmVsCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gaW1wcm92 ZSBsYWJlbCBuYW1lcwogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLgoKdjMgLSBzdWdn ZXN0aW9ucy9maXhlczoKICAgLSByZW9yZGVyIHJlbG9jKCkgYXJndW1lbnRzCiAgICAgKHN1Z2dl c3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gcmVtb3ZlIC5MIGZyb20gbXVsdGlib290MiBoZWFk ZXIgbGFiZWxzCiAgICAgKHN1Z2dlc3RlZCBieSBBbmRyZXcgQ29vcGVyLCBKYW4gQmV1bGljaCBh bmQgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKSwKICAgLSB0YWtlIGludG8gYWNjb3VudCBhbGlnbm1l bnQgd2hlbiBza2lwcGluZyBtdWx0aWJvb3QyIGZpeGVkIHBhcnQKICAgICAoc3VnZ2VzdGVkIGJ5 IEtvbnJhZCBSemVzenV0ZWsgV2lsayksCiAgIC0gY3JlYXRlIG1vZHVsZXMgZGF0YSBpZiBtb2R1 bGVzIGNvdW50ICE9IDAKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSBpbXBy b3ZlIG1hY3JvcwogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIHJlZHVjZSBu dW1iZXIgb2YgY2FzdHMKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSB1c2Ug Y29uc3QgaWYgcG9zc2libGUKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSBk cm9wIHN0YXRpYyBhbmQgX191c2VkX18gYXR0cmlidXRlIGZyb20gcmVsb2MoKQogICAgIChzdWdn ZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIHJlbW92ZSBpc29sYXRlZC9zdHJheSBfX3BhY2tl ZCBhdHRyaWJ1dGUgZnJvbQogICAgIG11bHRpYm9vdDJfbWVtb3J5X21hcF90IHR5cGUgZGVmaW5p dGlvbgogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIHJlZm9ybWF0IHhlbi9p bmNsdWRlL3hlbi9tdWx0aWJvb3QyLmgKICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0 ZWsgV2lsayksCiAgIC0gaW1wcm92ZSBjb21tZW50cwogICAgIChzdWdnZXN0ZWQgYnkgS29ucmFk IFJ6ZXN6dXRlayBXaWxrKSwKICAgLSByZW1vdmUgaGFyZCB0YWJzCiAgICAgKHN1Z2dlc3RlZCBi eSBKYW4gQmV1bGljaCBhbmQgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKS4KCnYyIC0gc3VnZ2VzdGlv bnMvZml4ZXM6CiAgIC0gZ2VuZXJhdGUgbXVsdGlib290MiBoZWFkZXIgdXNpbmcgbWFjcm9zCiAg ICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gaW1wcm92ZSBjb21tZW50cwogICAg IChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIHNpbXBsaWZ5IGFzc2VtYmx5IGluIHhl bi9hcmNoL3g4Ni9ib290L2hlYWQuUwogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAog ICAtIGRvIG5vdCBpbmNsdWRlIGluY2x1ZGUveGVuL2NvbXBpbGVyLmgKICAgICBpbiB4ZW4vYXJj aC94ODYvYm9vdC9yZWxvYy5jCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0g ZG8gbm90IHJlYWQgZGF0YSBiZXlvbmQgdGhlIGVuZCBvZiBtdWx0aWJvb3QyIGluZm9ybWF0aW9u CiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkuCgp2MiAtIG5vdCBmaXhlZCB5ZXQ6CiAg IC0gZHluYW1pYyBkZXBlbmRlbmN5IGdlbmVyYXRpb24gZm9yIHhlbi9hcmNoL3g4Ni9ib290L3Jl bG9jLlM7CiAgICAgdGhpcyByZXF1aXJlcyBtb3JlIHdvcms7IEkgYW0gbm90IHN1cmUgdGhhdCBp dCBwYXlzIGJlY2F1c2UKICAgICBwb3RlbnRpYWwgcGF0Y2ggcmVxdWlyZXMgbW9yZSBjaGFuZ2Vz IHRoYW4gYWRkaXRpb24gb2YganVzdAogICAgIG11bHRpYm9vdDIuaCB0byBNYWtlZmlsZQogICAg IChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIGlzb2xhdGVkL3N0cmF5IF9fcGFja2Vk IGF0dHJpYnV0ZSB1c2FnZSBmb3IgbXVsdGlib290Ml9tZW1vcnlfbWFwX3QKICAgICAoc3VnZ2Vz dGVkIGJ5IEphbiBCZXVsaWNoKS4KLS0tCiB4ZW4vYXJjaC94ODYvYm9vdC9NYWtlZmlsZSAgICAg ICAgfCAgICAzICstCiB4ZW4vYXJjaC94ODYvYm9vdC9oZWFkLlMgICAgICAgICAgfCAgMTA3ICsr KysrKysrKysrKysrKysrKysrKystCiB4ZW4vYXJjaC94ODYvYm9vdC9yZWxvYy5jICAgICAgICAg fCAgMTQ4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiB4ZW4vYXJjaC94ODYveDg2 XzY0L2FzbS1vZmZzZXRzLmMgfCAgICA5ICsrCiB4ZW4vaW5jbHVkZS94ZW4vbXVsdGlib290Mi5o ICAgICAgfCAgMTY5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDUgZmls ZXMgY2hhbmdlZCwgNDI2IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3hlbi9tdWx0aWJvb3QyLmgKCmRpZmYgLS1naXQgYS94ZW4v YXJjaC94ODYvYm9vdC9NYWtlZmlsZSBiL3hlbi9hcmNoL3g4Ni9ib290L01ha2VmaWxlCmluZGV4 IDVmZGI1YWUuLjA2ODkzZDggMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9ib290L01ha2VmaWxl CisrKyBiL3hlbi9hcmNoL3g4Ni9ib290L01ha2VmaWxlCkBAIC0xLDYgKzEsNyBAQAogb2JqLWJp bi15ICs9IGhlYWQubwogCi1SRUxPQ19ERVBTID0gJChCQVNFRElSKS9pbmNsdWRlL2FzbS14ODYv Y29uZmlnLmggJChCQVNFRElSKS9pbmNsdWRlL3hlbi9tdWx0aWJvb3QuaAorUkVMT0NfREVQUyA9 ICQoQkFTRURJUikvaW5jbHVkZS9hc20teDg2L2NvbmZpZy5oICQoQkFTRURJUikvaW5jbHVkZS94 ZW4vbXVsdGlib290LmggXAorCSAgICAgJChCQVNFRElSKS9pbmNsdWRlL3hlbi9tdWx0aWJvb3Qy LmgKIAogaGVhZC5vOiByZWxvYy5TCiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9ib290L2hl YWQuUyBiL3hlbi9hcmNoL3g4Ni9ib290L2hlYWQuUwppbmRleCA2ZjJjNjY4Li5kNDIzZmQ4IDEw MDY0NAotLS0gYS94ZW4vYXJjaC94ODYvYm9vdC9oZWFkLlMKKysrIGIveGVuL2FyY2gveDg2L2Jv b3QvaGVhZC5TCkBAIC0xLDUgKzEsNiBAQAogI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KICNpbmNs dWRlIDx4ZW4vbXVsdGlib290Lmg+CisjaW5jbHVkZSA8eGVuL211bHRpYm9vdDIuaD4KICNpbmNs dWRlIDxwdWJsaWMveGVuLmg+CiAjaW5jbHVkZSA8YXNtL2FzbV9kZWZucy5oPgogI2luY2x1ZGUg PGFzbS9kZXNjLmg+CkBAIC0xOSw2ICsyMCwyOCBAQAogI2RlZmluZSBCT09UX1BTRVVET1JNX0NT IDB4MDAyMAogI2RlZmluZSBCT09UX1BTRVVET1JNX0RTIDB4MDAyOAogCisjZGVmaW5lIE1CMl9I VChuYW1lKSAgICAgIChNVUxUSUJPT1QyX0hFQURFUl9UQUdfIyNuYW1lKQorI2RlZmluZSBNQjJf VFQobmFtZSkgICAgICAoTVVMVElCT09UMl9UQUdfVFlQRV8jI25hbWUpCisKKyAgICAgICAgLm1h Y3JvIG1iMmh0X2FyZ3MgYXJnOnJlcSwgYXJnczp2YXJhcmcKKyAgICAgICAgLmxvbmcgXGFyZwor ICAgICAgICAuaWZuYiBcYXJncworICAgICAgICBtYjJodF9hcmdzIFxhcmdzCisgICAgICAgIC5l bmRpZgorICAgICAgICAuZW5kbQorCisgICAgICAgIC5tYWNybyBtYjJodF9pbml0IHR5cGU6cmVx LCByZXE6cmVxLCBhcmdzOnZhcmFyZworICAgICAgICAuYWxpZ24gTVVMVElCT09UMl9UQUdfQUxJ R04KKy5MbWIyaHRfaW5pdF9zdGFydFxAOgorICAgICAgICAuc2hvcnQgXHR5cGUKKyAgICAgICAg LnNob3J0IFxyZXEKKyAgICAgICAgLmxvbmcgLkxtYjJodF9pbml0X2VuZFxAIC0gLkxtYjJodF9p bml0X3N0YXJ0XEAKKyAgICAgICAgLmlmbmIgXGFyZ3MKKyAgICAgICAgbWIyaHRfYXJncyBcYXJn cworICAgICAgICAuZW5kaWYKKy5MbWIyaHRfaW5pdF9lbmRcQDoKKyAgICAgICAgLmVuZG0KKwog RU5UUlkoc3RhcnQpCiAgICAgICAgIGptcCAgICAgX19zdGFydAogCkBAIC0zNCw2ICs1Nyw0MiBA QCBtdWx0aWJvb3QxX2hlYWRlcl9zdGFydDogICAgICAgLyoqKiBNVUxUSUJPT1QxIEhFQURFUiAq KioqLwogICAgICAgICAubG9uZyAgIC0oTVVMVElCT09UX0hFQURFUl9NQUdJQyArIE1VTFRJQk9P VF9IRUFERVJfRkxBR1MpCiBtdWx0aWJvb3QxX2hlYWRlcl9lbmQ6CiAKKy8qKiogTVVMVElCT09U MiBIRUFERVIgKioqKi8KKy8qIFNvbWUgaWRlYXMgYXJlIHRha2VuIGZyb20gZ3J1Yi0yLjAwL2dy dWItY29yZS90ZXN0cy9ib290L2tlcm5lbC1pMzg2LlMgZmlsZS4gKi8KKyAgICAgICAgLmFsaWdu ICBNVUxUSUJPT1QyX0hFQURFUl9BTElHTgorCittdWx0aWJvb3QyX2hlYWRlcl9zdGFydDoKKyAg ICAgICAgLyogTWFnaWMgbnVtYmVyIGluZGljYXRpbmcgYSBNdWx0aWJvb3QyIGhlYWRlci4gKi8K KyAgICAgICAgLmxvbmcgICBNVUxUSUJPT1QyX0hFQURFUl9NQUdJQworICAgICAgICAvKiBBcmNo aXRlY3R1cmU6IGkzODYuICovCisgICAgICAgIC5sb25nICAgTVVMVElCT09UMl9BUkNISVRFQ1RV UkVfSTM4NgorICAgICAgICAvKiBNdWx0aWJvb3QyIGhlYWRlciBsZW5ndGguICovCisgICAgICAg IC5sb25nICAgLkxtdWx0aWJvb3QyX2hlYWRlcl9lbmQgLSBtdWx0aWJvb3QyX2hlYWRlcl9zdGFy dAorICAgICAgICAvKiBNdWx0aWJvb3QyIGhlYWRlciBjaGVja3N1bS4gKi8KKyAgICAgICAgLmxv bmcgICAtKE1VTFRJQk9PVDJfSEVBREVSX01BR0lDICsgTVVMVElCT09UMl9BUkNISVRFQ1RVUkVf STM4NiArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICguTG11bHRpYm9vdDJfaGVhZGVyX2Vu ZCAtIG11bHRpYm9vdDJfaGVhZGVyX3N0YXJ0KSkKKworICAgICAgICAvKiBNdWx0aWJvb3QyIGlu Zm9ybWF0aW9uIHJlcXVlc3QgdGFnLiAqLworICAgICAgICBtYjJodF9pbml0IE1CMl9IVChJTkZP Uk1BVElPTl9SRVFVRVNUKSwgTUIyX0hUKFJFUVVJUkVEKSwgXAorICAgICAgICAgICAgICAgICAg IE1CMl9UVChCQVNJQ19NRU1JTkZPKSwgTUIyX1RUKE1NQVApCisKKyAgICAgICAgLyogQWxpZ24g bW9kdWxlcyBhdCBwYWdlIGJvdW5kcnkuICovCisgICAgICAgIG1iMmh0X2luaXQgTUIyX0hUKE1P RFVMRV9BTElHTiksIE1CMl9IVChSRVFVSVJFRCkKKworICAgICAgICAvKiBDb25zb2xlIGZsYWdz IHRhZy4gKi8KKyAgICAgICAgbWIyaHRfaW5pdCBNQjJfSFQoQ09OU09MRV9GTEFHUyksIE1CMl9I VChPUFRJT05BTCksIFwKKyAgICAgICAgICAgICAgICAgICBNVUxUSUJPT1QyX0NPTlNPTEVfRkxB R1NfRUdBX1RFWFRfU1VQUE9SVEVECisKKyAgICAgICAgLyogRnJhbWVidWZmZXIgdGFnLiAqLwor ICAgICAgICBtYjJodF9pbml0IE1CMl9IVChGUkFNRUJVRkZFUiksIE1CMl9IVChPUFRJT05BTCks IFwKKyAgICAgICAgICAgICAgICAgICAwLCAvKiBOdW1iZXIgb2YgdGhlIGNvbHVtbnMgLSBubyBw cmVmZXJlbmNlLiAqLyBcCisgICAgICAgICAgICAgICAgICAgMCwgLyogTnVtYmVyIG9mIHRoZSBs aW5lcyAtIG5vIHByZWZlcmVuY2UuICovIFwKKyAgICAgICAgICAgICAgICAgICAwICAvKiBOdW1i ZXIgb2YgYml0cyBwZXIgcGl4ZWwgLSBubyBwcmVmZXJlbmNlLiAqLworCisgICAgICAgIC8qIE11 bHRpYm9vdDIgaGVhZGVyIGVuZCB0YWcuICovCisgICAgICAgIG1iMmh0X2luaXQgTUIyX0hUKEVO RCksIE1CMl9IVChSRVFVSVJFRCkKKy5MbXVsdGlib290Ml9oZWFkZXJfZW5kOgorCiAgICAgICAg IC5zZWN0aW9uIC5pbml0LnJvZGF0YSwgImEiLCBAcHJvZ2JpdHMKICAgICAgICAgLmFsaWduIDQK IApAQCAtODIsMTAgKzE0MSw1MiBAQCBfX3N0YXJ0OgogICAgICAgICBtb3YgICAgICVlY3gsJWVz CiAgICAgICAgIG1vdiAgICAgJWVjeCwlc3MKIAotICAgICAgICAvKiBDaGVjayBmb3IgTXVsdGli b290IGJvb3Rsb2FkZXIgKi8KKyAgICAgICAgLyogQm9vdGxvYWRlcnMgbWF5IHNldCBtdWx0aWJv b3R7MSwyfS5tZW1fbG93ZXIgdG8gYSBub256ZXJvIHZhbHVlLiAqLworICAgICAgICB4b3IgICAg ICVlZHgsJWVkeAorCisgICAgICAgIC8qIENoZWNrIGZvciBNdWx0aWJvb3QyIGJvb3Rsb2FkZXIu ICovCisgICAgICAgIGNtcCAgICAgJE1VTFRJQk9PVDJfQk9PVExPQURFUl9NQUdJQywlZWF4Cisg ICAgICAgIGplICAgICAgLkxtdWx0aWJvb3QyX3Byb3RvCisKKyAgICAgICAgLyogQ2hlY2sgZm9y IE11bHRpYm9vdCBib290bG9hZGVyLiAqLwogICAgICAgICBjbXAgICAgICRNVUxUSUJPT1RfQk9P VExPQURFUl9NQUdJQywlZWF4CiAgICAgICAgIGpuZSAgICAgbm90X211bHRpYm9vdAogCisgICAg ICAgIC8qIEdldCBtZW1fbG93ZXIgZnJvbSBNdWx0aWJvb3QgaW5mb3JtYXRpb24uICovCisgICAg ICAgIHRlc3RiICAgJE1CSV9NRU1MSU1JVFMsTUJfZmxhZ3MoJWVieCkKKworICAgICAgICAvKiBO b3QgYXZhaWxhYmxlPyBCREEgdmFsdWUgd2lsbCBiZSBmaW5lLiAqLworICAgICAgICBjbW92bnog IE1CX21lbV9sb3dlciglZWJ4KSwlZWR4CisgICAgICAgIGptcCAgICAgdHJhbXBvbGluZV9zZXR1 cAorCisuTG11bHRpYm9vdDJfcHJvdG86CisgICAgICAgIC8qIFNraXAgTXVsdGlib290MiBpbmZv cm1hdGlvbiBmaXhlZCBwYXJ0LiAqLworICAgICAgICBsZWEgICAgIChNQjJfZml4ZWRfc2l6ZW9m K01VTFRJQk9PVDJfVEFHX0FMSUdOLTEpKCVlYngpLCVlY3gKKyAgICAgICAgYW5kICAgICAkfihN VUxUSUJPT1QyX1RBR19BTElHTi0xKSwlZWN4CisKKy5MbWIyX3RzaXplOgorICAgICAgICAvKiBD aGVjayBNdWx0aWJvb3QyIGluZm9ybWF0aW9uIHRvdGFsIHNpemUuICovCisgICAgICAgIG1vdiAg ICAgJWVjeCwlZWRpCisgICAgICAgIHN1YiAgICAgJWVieCwlZWRpCisgICAgICAgIGNtcCAgICAg JWVkaSxNQjJfZml4ZWRfdG90YWxfc2l6ZSglZWJ4KQorICAgICAgICBqYmUgICAgIHRyYW1wb2xp bmVfc2V0dXAKKworICAgICAgICAvKiBHZXQgbWVtX2xvd2VyIGZyb20gTXVsdGlib290MiBpbmZv cm1hdGlvbi4gKi8KKyAgICAgICAgY21wbCAgICAkTVVMVElCT09UMl9UQUdfVFlQRV9CQVNJQ19N RU1JTkZPLE1CMl90YWdfdHlwZSglZWN4KQorICAgICAgICBjbW92ZSAgIE1CMl9tZW1fbG93ZXIo JWVjeCksJWVkeAorICAgICAgICBqZSAgICAgIHRyYW1wb2xpbmVfc2V0dXAKKworICAgICAgICAv KiBJcyBpdCB0aGUgZW5kIG9mIE11bHRpYm9vdDIgaW5mb3JtYXRpb24/ICovCisgICAgICAgIGNt cGwgICAgJE1VTFRJQk9PVDJfVEFHX1RZUEVfRU5ELE1CMl90YWdfdHlwZSglZWN4KQorICAgICAg ICBqZSAgICAgIHRyYW1wb2xpbmVfc2V0dXAKKworICAgICAgICAvKiBHbyB0byBuZXh0IE11bHRp Ym9vdDIgaW5mb3JtYXRpb24gdGFnLiAqLworICAgICAgICBhZGQgICAgIE1CMl90YWdfc2l6ZSgl ZWN4KSwlZWN4CisgICAgICAgIGFkZCAgICAgJChNVUxUSUJPT1QyX1RBR19BTElHTi0xKSwlZWN4 CisgICAgICAgIGFuZCAgICAgJH4oTVVMVElCT09UMl9UQUdfQUxJR04tMSksJWVjeAorICAgICAg ICBqbXAgICAgIC5MbWIyX3RzaXplCisKK3RyYW1wb2xpbmVfc2V0dXA6CiAgICAgICAgIC8qIFNl dCB1cCB0cmFtcG9saW5lIHNlZ21lbnQgNjRrIGJlbG93IEVCREEgKi8KICAgICAgICAgbW92ends ICAweDQwZSwlZWN4ICAgICAgICAgIC8qIEVCREEgc2VnbWVudCAqLwogICAgICAgICBjbXAgICAg ICQweGEwMDAsJWVjeCAgICAgICAgLyogc2FuaXR5IGNoZWNrIChoaWdoKSAqLwpAQCAtMTAwLDkg KzIwMSw2IEBAIF9fc3RhcnQ6CiAgICAgICAgICAqIENvbXBhcmUgdGhlIHZhbHVlIGluIHRoZSBC REEgd2l0aCB0aGUgaW5mb3JtYXRpb24gZnJvbSB0aGUKICAgICAgICAgICogbXVsdGlib290IHN0 cnVjdHVyZSAoaWYgYXZhaWxhYmxlKSBhbmQgdXNlIHRoZSBzbWFsbGVzdC4KICAgICAgICAgICov Ci0gICAgICAgIHRlc3RiICAgJE1CSV9NRU1MSU1JVFMsKCVlYngpCi0gICAgICAgIGp6ICAgICAg MmYgICAgICAgICAgICAgICAgICAvKiBub3QgYXZhaWxhYmxlPyBCREEgdmFsdWUgd2lsbCBiZSBm aW5lICovCi0gICAgICAgIG1vdiAgICAgTUJfbWVtX2xvd2VyKCVlYngpLCVlZHgKICAgICAgICAg Y21wICAgICAkMHgxMDAsJWVkeCAgICAgICAgIC8qIGlzIHRoZSBtdWx0aWJvb3QgdmFsdWUgdG9v IHNtYWxsPyAqLwogICAgICAgICBqYiAgICAgIDJmICAgICAgICAgICAgICAgICAgLyogaWYgc28s IGRvIG5vdCB1c2UgaXQgKi8KICAgICAgICAgc2hsICAgICAkMTAtNCwlZWR4CkBAIC0xMjEsNiAr MjE5LDcgQEAgX19zdGFydDoKICAgICAgICAgbW92ICAgICAkc3ltX3BoeXMoY3B1MF9zdGFjaykr MTAyNCwlZXNwCiAgICAgICAgIHB1c2ggICAgJWVjeCAgICAgICAgICAgICAgICAvKiBCb290IHRy YW1wb2xpbmUgYWRkcmVzcy4gKi8KICAgICAgICAgcHVzaCAgICAlZWJ4ICAgICAgICAgICAgICAg IC8qIE11bHRpYm9vdCBpbmZvcm1hdGlvbiBhZGRyZXNzLiAqLworICAgICAgICBwdXNoICAgICVl YXggICAgICAgICAgICAgICAgLyogTXVsdGlib290IG1hZ2ljLiAqLwogICAgICAgICBjYWxsICAg IHJlbG9jCiAgICAgICAgIG1vdiAgICAgJWVheCxzeW1fcGh5cyhtdWx0aWJvb3RfcHRyKQogCmRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvYm9vdC9yZWxvYy5jIGIveGVuL2FyY2gveDg2L2Jvb3Qv cmVsb2MuYwppbmRleCBlYThjYjM3Li5iMjJiZjFlIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYv Ym9vdC9yZWxvYy5jCisrKyBiL3hlbi9hcmNoL3g4Ni9ib290L3JlbG9jLmMKQEAgLTUsMTUgKzUs MTggQEAKICAqIGFuZCBtb2R1bGVzLiBUaGlzIGlzIG1vc3QgZWFzaWx5IGRvbmUgZWFybHkgd2l0 aCBwYWdpbmcgZGlzYWJsZWQuCiAgKgogICogQ29weXJpZ2h0IChjKSAyMDA5LCBDaXRyaXggU3lz dGVtcywgSW5jLgorICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMTYgT3JhY2xlIGFuZC9vciBpdHMg YWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBBdXRob3JzOgogICogICAg S2VpciBGcmFzZXIgPGtlaXJAeGVuLm9yZz4KKyAqICAgIERhbmllbCBLaXBlciA8ZGFuaWVsLmtp cGVyQG9yYWNsZS5jb20+CiAgKi8KIAogLyoKICAqIFRoaXMgZW50cnkgcG9pbnQgaXMgZW50ZXJl ZCBmcm9tIHhlbi9hcmNoL3g4Ni9ib290L2hlYWQuUyB3aXRoOgotICogICAtIDB4NCglZXNwKSA9 IE1VTFRJQk9PVF9JTkZPUk1BVElPTl9BRERSRVNTLAotICogICAtIDB4OCglZXNwKSA9IEJPT1Rf VFJBTVBPTElORV9BRERSRVNTLgorICogICAtIDB4NCglZXNwKSA9IE1VTFRJQk9PVF9NQUdJQywK KyAqICAgLSAweDgoJWVzcCkgPSBNVUxUSUJPT1RfSU5GT1JNQVRJT05fQUREUkVTUywKKyAqICAg LSAweGMoJWVzcCkgPSBCT09UX1RSQU1QT0xJTkVfQUREUkVTUy4KICAqLwogYXNtICgKICAgICAi ICAgIC50ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgpAQCAtMjMsNyArMjYsMTIgQEAg YXNtICgKICAgICApOwogCiB0eXBlZGVmIHVuc2lnbmVkIGludCB1MzI7Cit0eXBlZGVmIHVuc2ln bmVkIGxvbmcgbG9uZyB1NjQ7CisKICNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL3hlbi9tdWx0 aWJvb3QuaCIKKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL3hlbi9tdWx0aWJvb3QyLmgiCisK KyNkZWZpbmUgTlVMTAkJKCh2b2lkICopMCkKIAogI2RlZmluZSBfX3N0ZGNhbGwJX19hdHRyaWJ1 dGVfXygoX19zdGRjYWxsX18pKQogCkBAIC0zMiw2ICs0MCw5IEBAIHR5cGVkZWYgdW5zaWduZWQg aW50IHUzMjsKIAogI2RlZmluZSBfcCh2YWwpCQkoKHZvaWQgKikodW5zaWduZWQgbG9uZykodmFs KSkKIAorI2RlZmluZSBnZXRfbWIyX2RhdGEodGFnLCB0eXBlLCBtZW1iZXIpICAgKCgobXVsdGli b290Ml90YWdfIyN0eXBlIyNfdCAqKSh0YWcpKS0+bWVtYmVyKQorI2RlZmluZSBnZXRfbWIyX3N0 cmluZyh0YWcsIHR5cGUsIG1lbWJlcikgKCh1MzIpZ2V0X21iMl9kYXRhKHRhZywgdHlwZSwgbWVt YmVyKSkKKwogc3RhdGljIHUzMiBhbGxvYzsKIAogc3RhdGljIHUzMiBhbGxvY19tZW0odTMyIGJ5 dGVzKQpAQCAtMzksNiArNTAsMTIgQEAgc3RhdGljIHUzMiBhbGxvY19tZW0odTMyIGJ5dGVzKQog ICAgIHJldHVybiBhbGxvYyAtPSBBTElHTl9VUChieXRlcywgMTYpOwogfQogCitzdGF0aWMgdm9p ZCB6ZXJvX21lbSh1MzIgcywgdTMyIGJ5dGVzKQoreworICAgIHdoaWxlICggYnl0ZXMtLSApCisg ICAgICAgICooY2hhciAqKXMrKyA9IDA7Cit9CisKIHN0YXRpYyB1MzIgY29weV9tZW0odTMyIHNy YywgdTMyIGJ5dGVzKQogewogICAgIHUzMiBkc3QsIGRzdF9yZXQ7CkBAIC02NSwxMyArODIsMTEg QEAgc3RhdGljIHUzMiBjb3B5X3N0cmluZyh1MzIgc3JjKQogICAgIHJldHVybiBjb3B5X21lbShz cmMsIHAgLSBzcmMgKyAxKTsKIH0KIAotbXVsdGlib290X2luZm9fdCBfX3N0ZGNhbGwgKnJlbG9j KHUzMiBtYmlfaW4sIHUzMiB0cmFtcG9saW5lKQorc3RhdGljIG11bHRpYm9vdF9pbmZvX3QgKm1i aV9yZWxvYyh1MzIgbWJpX2luKQogewogICAgIGludCBpOwogICAgIG11bHRpYm9vdF9pbmZvX3Qg Km1iaV9vdXQ7CiAKLSAgICBhbGxvYyA9IHRyYW1wb2xpbmU7Ci0KICAgICBtYmlfb3V0ID0gX3Ao Y29weV9tZW0obWJpX2luLCBzaXplb2YoKm1iaV9vdXQpKSk7CiAKICAgICBpZiAoIG1iaV9vdXQt PmZsYWdzICYgTUJJX0NNRExJTkUgKQpAQCAtMTA4LDMgKzEyMywxMjYgQEAgbXVsdGlib290X2lu Zm9fdCBfX3N0ZGNhbGwgKnJlbG9jKHUzMiBtYmlfaW4sIHUzMiB0cmFtcG9saW5lKQogCiAgICAg cmV0dXJuIG1iaV9vdXQ7CiB9CisKK3N0YXRpYyBtdWx0aWJvb3RfaW5mb190ICptYmkyX3JlbG9j KHUzMiBtYmlfaW4pCit7CisgICAgY29uc3QgbXVsdGlib290Ml9maXhlZF90ICptYmlfZml4ID0g X3AobWJpX2luKTsKKyAgICBjb25zdCBtdWx0aWJvb3QyX21lbW9yeV9tYXBfdCAqbW1hcF9zcmM7 CisgICAgY29uc3QgbXVsdGlib290Ml90YWdfdCAqdGFnOworICAgIG1vZHVsZV90ICptYmlfb3V0 X21vZHMgPSBOVUxMOworICAgIG1lbW9yeV9tYXBfdCAqbW1hcF9kc3Q7CisgICAgbXVsdGlib290 X2luZm9fdCAqbWJpX291dDsKKyAgICB1MzIgcHRyOworICAgIHVuc2lnbmVkIGludCBpLCBtb2Rf aWR4ID0gMDsKKworICAgIHB0ciA9IGFsbG9jX21lbShzaXplb2YoKm1iaV9vdXQpKTsKKyAgICBt Ymlfb3V0ID0gX3AocHRyKTsKKyAgICB6ZXJvX21lbShwdHIsIHNpemVvZigqbWJpX291dCkpOwor CisgICAgLyogU2tpcCBNdWx0aWJvb3QyIGluZm9ybWF0aW9uIGZpeGVkIHBhcnQuICovCisgICAg cHRyID0gQUxJR05fVVAobWJpX2luICsgc2l6ZW9mKCptYmlfZml4KSwgTVVMVElCT09UMl9UQUdf QUxJR04pOworCisgICAgLyogR2V0IHRoZSBudW1iZXIgb2YgbW9kdWxlcy4gKi8KKyAgICBmb3Ig KCB0YWcgPSBfcChwdHIpOyAodTMyKXRhZyAtIG1iaV9pbiA8IG1iaV9maXgtPnRvdGFsX3NpemU7 CisgICAgICAgICAgdGFnID0gX3AoQUxJR05fVVAoKHUzMil0YWcgKyB0YWctPnNpemUsIE1VTFRJ Qk9PVDJfVEFHX0FMSUdOKSkgKQorICAgIHsKKyAgICAgICAgaWYgKCB0YWctPnR5cGUgPT0gTVVM VElCT09UMl9UQUdfVFlQRV9NT0RVTEUgKQorICAgICAgICAgICAgKyttYmlfb3V0LT5tb2RzX2Nv dW50OworICAgICAgICBlbHNlIGlmICggdGFnLT50eXBlID09IE1VTFRJQk9PVDJfVEFHX1RZUEVf RU5EICkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmICggbWJpX291dC0+bW9k c19jb3VudCApCisgICAgeworICAgICAgICBtYmlfb3V0LT5mbGFncyB8PSBNQklfTU9EVUxFUzsK KyAgICAgICAgbWJpX291dC0+bW9kc19hZGRyID0gYWxsb2NfbWVtKG1iaV9vdXQtPm1vZHNfY291 bnQgKiBzaXplb2YoKm1iaV9vdXRfbW9kcykpOworICAgICAgICBtYmlfb3V0X21vZHMgPSBfcCht Ymlfb3V0LT5tb2RzX2FkZHIpOworICAgIH0KKworICAgIC8qIFNraXAgTXVsdGlib290MiBpbmZv cm1hdGlvbiBmaXhlZCBwYXJ0LiAqLworICAgIHB0ciA9IEFMSUdOX1VQKG1iaV9pbiArIHNpemVv ZigqbWJpX2ZpeCksIE1VTFRJQk9PVDJfVEFHX0FMSUdOKTsKKworICAgIC8qIFB1dCBhbGwgbmVl ZGVkIGRhdGEgaW50byBtYmlfb3V0LiAqLworICAgIGZvciAoIHRhZyA9IF9wKHB0cik7ICh1MzIp dGFnIC0gbWJpX2luIDwgbWJpX2ZpeC0+dG90YWxfc2l6ZTsKKyAgICAgICAgICB0YWcgPSBfcChB TElHTl9VUCgodTMyKXRhZyArIHRhZy0+c2l6ZSwgTVVMVElCT09UMl9UQUdfQUxJR04pKSApCisg ICAgICAgIHN3aXRjaCAoIHRhZy0+dHlwZSApCisgICAgICAgIHsKKyAgICAgICAgY2FzZSBNVUxU SUJPT1QyX1RBR19UWVBFX0JPT1RfTE9BREVSX05BTUU6CisgICAgICAgICAgICBtYmlfb3V0LT5m bGFncyB8PSBNQklfTE9BREVSTkFNRTsKKyAgICAgICAgICAgIHB0ciA9IGdldF9tYjJfc3RyaW5n KHRhZywgc3RyaW5nLCBzdHJpbmcpOworICAgICAgICAgICAgbWJpX291dC0+Ym9vdF9sb2FkZXJf bmFtZSA9IGNvcHlfc3RyaW5nKHB0cik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBj YXNlIE1VTFRJQk9PVDJfVEFHX1RZUEVfQ01ETElORToKKyAgICAgICAgICAgIG1iaV9vdXQtPmZs YWdzIHw9IE1CSV9DTURMSU5FOworICAgICAgICAgICAgcHRyID0gZ2V0X21iMl9zdHJpbmcodGFn LCBzdHJpbmcsIHN0cmluZyk7CisgICAgICAgICAgICBtYmlfb3V0LT5jbWRsaW5lID0gY29weV9z dHJpbmcocHRyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgTVVMVElCT09U Ml9UQUdfVFlQRV9CQVNJQ19NRU1JTkZPOgorICAgICAgICAgICAgbWJpX291dC0+ZmxhZ3MgfD0g TUJJX01FTUxJTUlUUzsKKyAgICAgICAgICAgIG1iaV9vdXQtPm1lbV9sb3dlciA9IGdldF9tYjJf ZGF0YSh0YWcsIGJhc2ljX21lbWluZm8sIG1lbV9sb3dlcik7CisgICAgICAgICAgICBtYmlfb3V0 LT5tZW1fdXBwZXIgPSBnZXRfbWIyX2RhdGEodGFnLCBiYXNpY19tZW1pbmZvLCBtZW1fdXBwZXIp OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBNVUxUSUJPT1QyX1RBR19UWVBF X01NQVA6CisgICAgICAgICAgICBpZiAoIGdldF9tYjJfZGF0YSh0YWcsIG1tYXAsIGVudHJ5X3Np emUpIDwgc2l6ZW9mKCptbWFwX3NyYykgKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg ICAgICAgICBtYmlfb3V0LT5mbGFncyB8PSBNQklfTUVNTUFQOworICAgICAgICAgICAgbWJpX291 dC0+bW1hcF9sZW5ndGggPSBnZXRfbWIyX2RhdGEodGFnLCBtbWFwLCBzaXplKTsKKyAgICAgICAg ICAgIG1iaV9vdXQtPm1tYXBfbGVuZ3RoIC09IHNpemVvZihtdWx0aWJvb3QyX3RhZ19tbWFwX3Qp OworICAgICAgICAgICAgbWJpX291dC0+bW1hcF9sZW5ndGggLz0gZ2V0X21iMl9kYXRhKHRhZywg bW1hcCwgZW50cnlfc2l6ZSk7CisgICAgICAgICAgICBtYmlfb3V0LT5tbWFwX2xlbmd0aCAqPSBz aXplb2YoKm1tYXBfZHN0KTsKKworICAgICAgICAgICAgbWJpX291dC0+bW1hcF9hZGRyID0gYWxs b2NfbWVtKG1iaV9vdXQtPm1tYXBfbGVuZ3RoKTsKKworICAgICAgICAgICAgbW1hcF9zcmMgPSBn ZXRfbWIyX2RhdGEodGFnLCBtbWFwLCBlbnRyaWVzKTsKKyAgICAgICAgICAgIG1tYXBfZHN0ID0g X3AobWJpX291dC0+bW1hcF9hZGRyKTsKKworICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBt Ymlfb3V0LT5tbWFwX2xlbmd0aCAvIHNpemVvZigqbW1hcF9kc3QpOyBpKysgKQorICAgICAgICAg ICAgeworICAgICAgICAgICAgICAgIC8qIEluaXQgc2l6ZSBtZW1iZXIgcHJvcGVybHkuICovCisg ICAgICAgICAgICAgICAgbW1hcF9kc3RbaV0uc2l6ZSA9IHNpemVvZigqbW1hcF9kc3QpOworICAg ICAgICAgICAgICAgIG1tYXBfZHN0W2ldLnNpemUgLT0gc2l6ZW9mKG1tYXBfZHN0W2ldLnNpemUp OworICAgICAgICAgICAgICAgIC8qIE5vdyBjb3B5IGEgZ2l2ZW4gcmVnaW9uIGRhdGEuICovCisg ICAgICAgICAgICAgICAgbW1hcF9kc3RbaV0uYmFzZV9hZGRyX2xvdyA9ICh1MzIpbW1hcF9zcmMt PmFkZHI7CisgICAgICAgICAgICAgICAgbW1hcF9kc3RbaV0uYmFzZV9hZGRyX2hpZ2ggPSAodTMy KShtbWFwX3NyYy0+YWRkciA+PiAzMik7CisgICAgICAgICAgICAgICAgbW1hcF9kc3RbaV0ubGVu Z3RoX2xvdyA9ICh1MzIpbW1hcF9zcmMtPmxlbjsKKyAgICAgICAgICAgICAgICBtbWFwX2RzdFtp XS5sZW5ndGhfaGlnaCA9ICh1MzIpKG1tYXBfc3JjLT5sZW4gPj4gMzIpOworICAgICAgICAgICAg ICAgIG1tYXBfZHN0W2ldLnR5cGUgPSBtbWFwX3NyYy0+dHlwZTsKKyAgICAgICAgICAgICAgICBt bWFwX3NyYyA9IF9wKG1tYXBfc3JjKSArIGdldF9tYjJfZGF0YSh0YWcsIG1tYXAsIGVudHJ5X3Np emUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBN VUxUSUJPT1QyX1RBR19UWVBFX01PRFVMRToKKyAgICAgICAgICAgIGlmICggbW9kX2lkeCA+PSBt Ymlfb3V0LT5tb2RzX2NvdW50ICkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg ICAgbWJpX291dF9tb2RzW21vZF9pZHhdLm1vZF9zdGFydCA9IGdldF9tYjJfZGF0YSh0YWcsIG1v ZHVsZSwgbW9kX3N0YXJ0KTsKKyAgICAgICAgICAgIG1iaV9vdXRfbW9kc1ttb2RfaWR4XS5tb2Rf ZW5kID0gZ2V0X21iMl9kYXRhKHRhZywgbW9kdWxlLCBtb2RfZW5kKTsKKyAgICAgICAgICAgIHB0 ciA9IGdldF9tYjJfc3RyaW5nKHRhZywgbW9kdWxlLCBjbWRsaW5lKTsKKyAgICAgICAgICAgIG1i aV9vdXRfbW9kc1ttb2RfaWR4XS5zdHJpbmcgPSBjb3B5X3N0cmluZyhwdHIpOworICAgICAgICAg ICAgbWJpX291dF9tb2RzW21vZF9pZHhdLnJlc2VydmVkID0gMDsKKyAgICAgICAgICAgICsrbW9k X2lkeDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgTVVMVElCT09UMl9UQUdf VFlQRV9FTkQ6CisgICAgICAgICAgICByZXR1cm4gbWJpX291dDsKKworICAgICAgICBkZWZhdWx0 OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgIHJldHVybiBtYmlfb3V0Owor fQorCittdWx0aWJvb3RfaW5mb190IF9fc3RkY2FsbCAqcmVsb2ModTMyIG1iX21hZ2ljLCB1MzIg bWJpX2luLCB1MzIgdHJhbXBvbGluZSkKK3sKKyAgICBhbGxvYyA9IHRyYW1wb2xpbmU7CisKKyAg ICBpZiAoIG1iX21hZ2ljID09IE1VTFRJQk9PVDJfQk9PVExPQURFUl9NQUdJQyApCisgICAgICAg IHJldHVybiBtYmkyX3JlbG9jKG1iaV9pbik7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gbWJp X3JlbG9jKG1iaV9pbik7Cit9CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveDg2XzY0L2FzbS1v ZmZzZXRzLmMgYi94ZW4vYXJjaC94ODYveDg2XzY0L2FzbS1vZmZzZXRzLmMKaW5kZXggNjQ5MDVj Ni4uYjQzN2E4ZiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl82NC9hc20tb2Zmc2V0cy5j CisrKyBiL3hlbi9hcmNoL3g4Ni94ODZfNjQvYXNtLW9mZnNldHMuYwpAQCAtMTMsNiArMTMsNyBA QAogI2luY2x1ZGUgPGFzbS9maXhtYXAuaD4KICNpbmNsdWRlIDxhc20vaGFyZGlycS5oPgogI2lu Y2x1ZGUgPHhlbi9tdWx0aWJvb3QuaD4KKyNpbmNsdWRlIDx4ZW4vbXVsdGlib290Mi5oPgogCiAj ZGVmaW5lIERFRklORShfc3ltLCBfdmFsKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCiAgICAgYXNtIHZvbGF0aWxlICgiXG4uYXNjaWlcIj09PiNkZWZp bmUgIiAjX3N5bSAiICUwIC8qICIgI192YWwgIiAqLzw9PVwiIiBcCkBAIC0xNjcsNiArMTY4LDE0 IEBAIHZvaWQgX19kdW1teV9fKHZvaWQpCiAgICAgT0ZGU0VUKE1CX2ZsYWdzLCBtdWx0aWJvb3Rf aW5mb190LCBmbGFncyk7CiAgICAgT0ZGU0VUKE1CX2NtZGxpbmUsIG11bHRpYm9vdF9pbmZvX3Qs IGNtZGxpbmUpOwogICAgIE9GRlNFVChNQl9tZW1fbG93ZXIsIG11bHRpYm9vdF9pbmZvX3QsIG1l bV9sb3dlcik7CisgICAgQkxBTksoKTsKKworICAgIERFRklORShNQjJfZml4ZWRfc2l6ZW9mLCBz aXplb2YobXVsdGlib290Ml9maXhlZF90KSk7CisgICAgT0ZGU0VUKE1CMl9maXhlZF90b3RhbF9z aXplLCBtdWx0aWJvb3QyX2ZpeGVkX3QsIHRvdGFsX3NpemUpOworICAgIE9GRlNFVChNQjJfdGFn X3R5cGUsIG11bHRpYm9vdDJfdGFnX3QsIHR5cGUpOworICAgIE9GRlNFVChNQjJfdGFnX3NpemUs IG11bHRpYm9vdDJfdGFnX3QsIHNpemUpOworICAgIE9GRlNFVChNQjJfbWVtX2xvd2VyLCBtdWx0 aWJvb3QyX3RhZ19iYXNpY19tZW1pbmZvX3QsIG1lbV9sb3dlcik7CisgICAgQkxBTksoKTsKIAog ICAgIE9GRlNFVChET01BSU5fdm1fYXNzaXN0LCBzdHJ1Y3QgZG9tYWluLCB2bV9hc3Npc3QpOwog fQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL211bHRpYm9vdDIuaCBiL3hlbi9pbmNsdWRl L3hlbi9tdWx0aWJvb3QyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRk NTgwMAotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9tdWx0aWJvb3QyLmgKQEAg LTAsMCArMSwxNjkgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAxOTk5LDIwMDMsMjAwNywyMDA4 LDIwMDksMjAxMCAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgKgorICogIG11bHRp Ym9vdDIuaCAtIE11bHRpYm9vdCAyIGhlYWRlciBmaWxlLgorICoKKyAqICBCYXNlZCBvbiBncnVi LTIuMDAvaW5jbHVkZS9tdWx0aWJvb3QyLmggZmlsZS4KKyAqCisgKiAgUGVybWlzc2lvbiBpcyBo ZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEg Y29weQorICogIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBm aWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bworICogIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhv dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCisgKiAgcmln aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi bGljZW5zZSwgYW5kL29yCisgKiAgc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g cGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqICBmdXJuaXNoZWQgdG8g ZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqICBUaGUg YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBi ZSBpbmNsdWRlZCBpbgorICogIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2Yg dGhlIFNvZnR3YXJlLgorICoKKyAqICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwg V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogIElNUExJRUQsIElO Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZLAorICogIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5H RU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBBTlkKKyAqICBERVZFTE9QRVIgT1IgRElTVFJJQlVU T1IgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLAor ICogIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwg QVJJU0lORyBGUk9NLCBPVVQgT0YgT1IKKyAqICBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICovCisK KyNpZm5kZWYgX19NVUxUSUJPT1QyX0hfXworI2RlZmluZSBfX01VTFRJQk9PVDJfSF9fCisKKy8q IFRoZSBtYWdpYyBmaWVsZCBzaG91bGQgY29udGFpbiB0aGlzLiAgKi8KKyNkZWZpbmUgTVVMVElC T09UMl9IRUFERVJfTUFHSUMJCQkJMHhlODUyNTBkNgorCisvKiBUaGlzIHNob3VsZCBiZSBpbiAl ZWF4IG9uIHg4NiBhcmNoaXRlY3R1cmUuICAqLworI2RlZmluZSBNVUxUSUJPT1QyX0JPT1RMT0FE RVJfTUFHSUMJCQkweDM2ZDc2Mjg5CisKKy8qIEhvdyBtYW55IGJ5dGVzIGZyb20gdGhlIHN0YXJ0 IG9mIHRoZSBmaWxlIHdlIHNlYXJjaCBmb3IgdGhlIGhlYWRlci4gICovCisjZGVmaW5lIE1VTFRJ Qk9PVDJfU0VBUkNICQkJCTMyNzY4CisKKy8qIE11bHRpYm9vdCAyIGhlYWRlciBhbGlnbm1lbnQu ICovCisjZGVmaW5lIE1VTFRJQk9PVDJfSEVBREVSX0FMSUdOCQkJCTgKKworLyogQWxpZ25tZW50 IG9mIG11bHRpYm9vdCAyIG1vZHVsZXMuICAqLworI2RlZmluZSBNVUxUSUJPT1QyX01PRF9BTElH TgkJCQkweDAwMDAxMDAwCisKKy8qIEFsaWdubWVudCBvZiB0aGUgbXVsdGlib290IDIgaW5mbyBz dHJ1Y3R1cmUuICAqLworI2RlZmluZSBNVUxUSUJPT1QyX0lORk9fQUxJR04JCQkJMHgwMDAwMDAw OAorCisvKiBNdWx0aWJvb3QgMiBhcmNoaXRlY3R1cmVzLiAqLworI2RlZmluZSBNVUxUSUJPT1Qy X0FSQ0hJVEVDVFVSRV9JMzg2CQkJMAorI2RlZmluZSBNVUxUSUJPT1QyX0FSQ0hJVEVDVFVSRV9N SVBTMzIJCQk0CisKKy8qIEhlYWRlciB0YWcgdHlwZXMuICovCisjZGVmaW5lIE1VTFRJQk9PVDJf SEVBREVSX1RBR19FTkQJCQkwCisjZGVmaW5lIE1VTFRJQk9PVDJfSEVBREVSX1RBR19JTkZPUk1B VElPTl9SRVFVRVNUCTEKKyNkZWZpbmUgTVVMVElCT09UMl9IRUFERVJfVEFHX0FERFJFU1MJCQky CisjZGVmaW5lIE1VTFRJQk9PVDJfSEVBREVSX1RBR19FTlRSWV9BRERSRVNTCQkzCisjZGVmaW5l IE1VTFRJQk9PVDJfSEVBREVSX1RBR19DT05TT0xFX0ZMQUdTCQk0CisjZGVmaW5lIE1VTFRJQk9P VDJfSEVBREVSX1RBR19GUkFNRUJVRkZFUgkJNQorI2RlZmluZSBNVUxUSUJPT1QyX0hFQURFUl9U QUdfTU9EVUxFX0FMSUdOCQk2CisjZGVmaW5lIE1VTFRJQk9PVDJfSEVBREVSX1RBR19FRklfQlMJ CQk3CisjZGVmaW5lIE1VTFRJQk9PVDJfSEVBREVSX1RBR19FTlRSWV9BRERSRVNTX0VGSTMyCTgK KyNkZWZpbmUgTVVMVElCT09UMl9IRUFERVJfVEFHX0VOVFJZX0FERFJFU1NfRUZJNjQJOQorCisv KiBIZWFkZXIgdGFnIGZsYWdzLiAqLworI2RlZmluZSBNVUxUSUJPT1QyX0hFQURFUl9UQUdfUkVR VUlSRUQJCQkwCisjZGVmaW5lIE1VTFRJQk9PVDJfSEVBREVSX1RBR19PUFRJT05BTAkJCTEKKwor LyogSGVhZGVyIGNvbnNvbGUgdGFnIGNvbnNvbGVfZmxhZ3MuICovCisjZGVmaW5lIE1VTFRJQk9P VDJfQ09OU09MRV9GTEFHU19DT05TT0xFX1JFUVVJUkVECTEKKyNkZWZpbmUgTVVMVElCT09UMl9D T05TT0xFX0ZMQUdTX0VHQV9URVhUX1NVUFBPUlRFRAkyCisKKy8qIEZsYWdzIHNldCBpbiB0aGUg J2ZsYWdzJyBtZW1iZXIgb2YgdGhlIG11bHRpYm9vdCBoZWFkZXIuICAqLworI2RlZmluZSBNVUxU SUJPT1QyX1RBR19UWVBFX0VORAkJCQkwCisjZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfQ01E TElORQkJCTEKKyNkZWZpbmUgTVVMVElCT09UMl9UQUdfVFlQRV9CT09UX0xPQURFUl9OQU1FCQky CisjZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfTU9EVUxFCQkJMworI2RlZmluZSBNVUxUSUJP T1QyX1RBR19UWVBFX0JBU0lDX01FTUlORk8JCTQKKyNkZWZpbmUgTVVMVElCT09UMl9UQUdfVFlQ RV9CT09UREVWCQkJNQorI2RlZmluZSBNVUxUSUJPT1QyX1RBR19UWVBFX01NQVAJCQk2CisjZGVm aW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfVkJFCQkJCTcKKyNkZWZpbmUgTVVMVElCT09UMl9UQUdf VFlQRV9GUkFNRUJVRkZFUgkJCTgKKyNkZWZpbmUgTVVMVElCT09UMl9UQUdfVFlQRV9FTEZfU0VD VElPTlMJCTkKKyNkZWZpbmUgTVVMVElCT09UMl9UQUdfVFlQRV9BUE0JCQkJMTAKKyNkZWZpbmUg TVVMVElCT09UMl9UQUdfVFlQRV9FRkkzMgkJCTExCisjZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZ UEVfRUZJNjQJCQkxMgorI2RlZmluZSBNVUxUSUJPT1QyX1RBR19UWVBFX1NNQklPUwkJCTEzCisj ZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfQUNQSV9PTEQJCQkxNAorI2RlZmluZSBNVUxUSUJP T1QyX1RBR19UWVBFX0FDUElfTkVXCQkJMTUKKyNkZWZpbmUgTVVMVElCT09UMl9UQUdfVFlQRV9O RVRXT1JLCQkJMTYKKyNkZWZpbmUgTVVMVElCT09UMl9UQUdfVFlQRV9FRklfTU1BUAkJCTE3Cisj ZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfRUZJX0JTCQkJMTgKKyNkZWZpbmUgTVVMVElCT09U Ml9UQUdfVFlQRV9FRkkzMl9JSAkJCTE5CisjZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfRUZJ NjRfSUgJCQkyMAorCisvKiBNdWx0aWJvb3QgMiB0YWcgYWxpZ25tZW50LiAqLworI2RlZmluZSBN VUxUSUJPT1QyX1RBR19BTElHTgkJCQk4CisKKy8qIE1lbW9yeSB0eXBlcy4gKi8KKyNkZWZpbmUg TVVMVElCT09UMl9NRU1PUllfQVZBSUxBQkxFCQkJMQorI2RlZmluZSBNVUxUSUJPT1QyX01FTU9S WV9SRVNFUlZFRAkJCTIKKyNkZWZpbmUgTVVMVElCT09UMl9NRU1PUllfQUNQSV9SRUNMQUlNQUJM RQkJMworI2RlZmluZSBNVUxUSUJPT1QyX01FTU9SWV9OVlMJCQkJNAorI2RlZmluZSBNVUxUSUJP T1QyX01FTU9SWV9CQURSQU0JCQk1CisKKy8qIEZyYW1lYnVmZmVyIHR5cGVzLiAqLworI2RlZmlu ZSBNVUxUSUJPT1QyX0ZSQU1FQlVGRkVSX1RZUEVfSU5ERVhFRAkJMAorI2RlZmluZSBNVUxUSUJP T1QyX0ZSQU1FQlVGRkVSX1RZUEVfUkdCCQkJMQorI2RlZmluZSBNVUxUSUJPT1QyX0ZSQU1FQlVG RkVSX1RZUEVfRUdBX1RFWFQJCTIKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KK3R5cGVkZWYgc3Ry dWN0IHsKKyAgICB1MzIgdG90YWxfc2l6ZTsKKyAgICB1MzIgcmVzZXJ2ZWQ7Cit9IG11bHRpYm9v dDJfZml4ZWRfdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIHUzMiB0eXBlOworICAgIHUzMiBz aXplOworfSBtdWx0aWJvb3QyX3RhZ190OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgdTMyIHR5 cGU7CisgICAgdTMyIHNpemU7CisgICAgY2hhciBzdHJpbmdbXTsKK30gbXVsdGlib290Ml90YWdf c3RyaW5nX3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICB1MzIgdHlwZTsKKyAgICB1MzIgc2l6 ZTsKKyAgICB1MzIgbWVtX2xvd2VyOworICAgIHUzMiBtZW1fdXBwZXI7Cit9IG11bHRpYm9vdDJf dGFnX2Jhc2ljX21lbWluZm9fdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIHU2NCBhZGRyOwor ICAgIHU2NCBsZW47CisgICAgdTMyIHR5cGU7CisgICAgdTMyIHplcm87Cit9IG11bHRpYm9vdDJf bWVtb3J5X21hcF90OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgdTMyIHR5cGU7CisgICAgdTMy IHNpemU7CisgICAgdTMyIGVudHJ5X3NpemU7CisgICAgdTMyIGVudHJ5X3ZlcnNpb247CisgICAg bXVsdGlib290Ml9tZW1vcnlfbWFwX3QgZW50cmllc1tdOworfSBtdWx0aWJvb3QyX3RhZ19tbWFw X3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICB1MzIgdHlwZTsKKyAgICB1MzIgc2l6ZTsKKyAg ICB1NjQgcG9pbnRlcjsKK30gbXVsdGlib290Ml90YWdfZWZpNjRfdDsKKwordHlwZWRlZiBzdHJ1 Y3QgeworICAgIHUzMiB0eXBlOworICAgIHUzMiBzaXplOworICAgIHU2NCBwb2ludGVyOworfSBt dWx0aWJvb3QyX3RhZ19lZmk2NF9paF90OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgdTMyIHR5 cGU7CisgICAgdTMyIHNpemU7CisgICAgdTMyIG1vZF9zdGFydDsKKyAgICB1MzIgbW9kX2VuZDsK KyAgICBjaGFyIGNtZGxpbmVbXTsKK30gbXVsdGlib290Ml90YWdfbW9kdWxlX3Q7CisjZW5kaWYg LyogX19BU1NFTUJMWV9fICovCisKKyNlbmRpZiAvKiBfX01VTFRJQk9PVDJfSF9fICovCi0tIAox LjcuMTAuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Clhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9s aXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=