From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Kiper Subject: [PATCH v7 03/14] x86: add multiboot2 protocol support Date: Fri, 23 Sep 2016 23:47:28 +0200 Message-ID: <1474667259-27290-4-git-send-email-daniel.kiper@oracle.com> References: <1474667259-27290-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.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bnYKf-0003o1-3b for xen-devel@lists.xenproject.org; Fri, 23 Sep 2016 21:48:33 +0000 In-Reply-To: <1474667259-27290-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, david.vrabel@citrix.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+Ci0tLQp2NyAtIHN1Z2dlc3Rpb25zL2Zp eGVzOgogICAtIHJlbmFtZSBtYmlfbWJpL21iaTJfbWJpIHRvIG1iaV9yZWxvYy9tYmkyX3JlbG9j IHJlc3BlY3RpdmVseQogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIGluaXRp YWxpemUgbWJpX291dC0+ZmxhZ3MgdXNpbmcgInw9IiBpbnN0ZWFkIG9mICI9IgogICAgIChzdWdn ZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIHVzZSBzaXplb2YoKm1tYXBfZHN0KSBpbnN0ZWFk IG9mIHNpemVvZihtZW1vcnlfbWFwX3QpCiAgICAgaWYgaXQgbWFrZXMgc2Vuc2UKICAgICAoc3Vn Z2VzdGVkIGJ5IEphbiBCZXVsaWNoKS4KCnY2IC0gc3VnZ2VzdGlvbnMvZml4ZXM6CiAgIC0gcHJv cGVybHkgaW5kZXggbXVsdGlib290Ml90YWdfbW1hcF90LmVudHJpZXNbXQogICAgIChzdWdnZXN0 ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIGRvIG5vdCBpbmRleCBtYmlfb3V0X21vZHNbXSBiZXlv bmQgaXRzIGVuZAogICAgIChzdWdnZXN0ZWQgYnkgQW5kcmV3IENvb3BlciksCiAgIC0gcmVkdWNl IG51bWJlciBvZiBjYXN0cwogICAgIChzdWdnZXN0ZWQgYnkgQW5kcmV3IENvb3BlciBhbmQgSmFu IEJldWxpY2gpLAogICAtIGFkZCBicmFjZXMgdG8gaW5jcmVhc2UgY29kZSByZWFkYWJpbGl0eQog ICAgIChzdWdnZXN0ZWQgYnkgQW5kcmV3IENvb3BlcikuCgp2NSAtIHN1Z2dlc3Rpb25zL2ZpeGVz OgogICAtIGNoZWNrIG11bHRpYm9vdDJfdGFnX21tYXBfdC5lbnRyeV9zaXplIGJlZm9yZQogICAg IG11bHRpYm9vdDJfdGFnX21tYXBfdC5lbnRyaWVzW10gdXNlCiAgICAgKHN1Z2dlc3RlZCBieSBK YW4gQmV1bGljaCksCiAgIC0gcHJvcGVybHkgaW5kZXggbXVsdGlib290Ml90YWdfbW1hcF90LmVu dHJpZXNbXQogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIHVzZSAidHlwZSBu YW1lW10iIGluc3RhZCBvZiAidHlwZSBuYW1lWzBdIgogICAgIGluIHhlbi9pbmNsdWRlL3hlbi9t dWx0aWJvb3QyLmgKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSByZW1vdmUg dW5uZWVkZWQgY29tbWVudAogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLgoKdjQgLSBz dWdnZXN0aW9ucy9maXhlczoKICAgLSBhdm9pZCBhc3NlbWJseSB1c2FnZSBpbiB4ZW4vYXJjaC94 ODYvYm9vdC9yZWxvYy5jLAogICAtIGZpeCBib3VuZGFyeSBjaGVjayBpc3N1ZSBhbmQgb3B0aW1p emUKICAgICBmb3IoKSBsb29wcyBpbiBtYmkyX21iaSgpLAogICAtIG1vdmUgdG8gc3RkY2FsbCBj YWxsaW5nIGNvbnZlbnRpb24sCiAgIC0gcmVtb3ZlIHVubmVlZGVkIHR5cGVvZigpIGZyb20gQUxJ R05fVVAoKSBtYWNybwogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIGFkZCBh bmQgdXNlIE5VTEwgZGVmaW5pdGlvbiBpbiB4ZW4vYXJjaC94ODYvYm9vdC9yZWxvYy5jCiAgICAg KHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gZG8gbm90IHJlYWQgZGF0YSBiZXlvbmQg dGhlIGVuZCBvZiBtdWx0aWJvb3QyCiAgICAgaW5mb3JtYXRpb24gaW4geGVuL2FyY2gveDg2L2Jv b3QvaGVhZC5TCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gYWRkIDpyZXEg dG8gc29tZSAubWFjcm8gYXJndW1lbnRzCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCks CiAgIC0gdXNlIGNtb3ZjYyBpZiBwb3NzaWJsZSwKICAgLSBhZGQgLkwgdG8gbXVsdGlib290Ml9o ZWFkZXJfZW5kIGxhYmVsCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gYWRk IC5MIHRvIG11bHRpYm9vdDJfcHJvdG8gbGFiZWwKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVs aWNoKSwKICAgLSBpbXByb3ZlIGxhYmVsIG5hbWVzCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1 bGljaCkuCgp2MyAtIHN1Z2dlc3Rpb25zL2ZpeGVzOgogICAtIHJlb3JkZXIgcmVsb2MoKSBhcmd1 bWVudHMKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSByZW1vdmUgLkwgZnJv bSBtdWx0aWJvb3QyIGhlYWRlciBsYWJlbHMKICAgICAoc3VnZ2VzdGVkIGJ5IEFuZHJldyBDb29w ZXIsIEphbiBCZXVsaWNoIGFuZCBLb25yYWQgUnplc3p1dGVrIFdpbGspLAogICAtIHRha2UgaW50 byBhY2NvdW50IGFsaWdubWVudCB3aGVuIHNraXBwaW5nIG11bHRpYm9vdDIgZml4ZWQgcGFydAog ICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKSwKICAgLSBjcmVhdGUgbW9k dWxlcyBkYXRhIGlmIG1vZHVsZXMgY291bnQgIT0gMAogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJl dWxpY2gpLAogICAtIGltcHJvdmUgbWFjcm9zCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGlj aCksCiAgIC0gcmVkdWNlIG51bWJlciBvZiBjYXN0cwogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJl dWxpY2gpLAogICAtIHVzZSBjb25zdCBpZiBwb3NzaWJsZQogICAgIChzdWdnZXN0ZWQgYnkgSmFu IEJldWxpY2gpLAogICAtIGRyb3Agc3RhdGljIGFuZCBfX3VzZWRfXyBhdHRyaWJ1dGUgZnJvbSBy ZWxvYygpCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gcmVtb3ZlIGlzb2xh dGVkL3N0cmF5IF9fcGFja2VkIGF0dHJpYnV0ZSBmcm9tCiAgICAgbXVsdGlib290Ml9tZW1vcnlf bWFwX3QgdHlwZSBkZWZpbml0aW9uCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAg IC0gcmVmb3JtYXQgeGVuL2luY2x1ZGUveGVuL211bHRpYm9vdDIuaAogICAgIChzdWdnZXN0ZWQg YnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKSwKICAgLSBpbXByb3ZlIGNvbW1lbnRzCiAgICAgKHN1 Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspLAogICAtIHJlbW92ZSBoYXJkIHRhYnMK ICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoIGFuZCBLb25yYWQgUnplc3p1dGVrIFdpbGsp LgoKdjIgLSBzdWdnZXN0aW9ucy9maXhlczoKICAgLSBnZW5lcmF0ZSBtdWx0aWJvb3QyIGhlYWRl ciB1c2luZyBtYWNyb3MKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSBpbXBy b3ZlIGNvbW1lbnRzCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gc2ltcGxp ZnkgYXNzZW1ibHkgaW4geGVuL2FyY2gveDg2L2Jvb3QvaGVhZC5TCiAgICAgKHN1Z2dlc3RlZCBi eSBKYW4gQmV1bGljaCksCiAgIC0gZG8gbm90IGluY2x1ZGUgaW5jbHVkZS94ZW4vY29tcGlsZXIu aAogICAgIGluIHhlbi9hcmNoL3g4Ni9ib290L3JlbG9jLmMKICAgICAoc3VnZ2VzdGVkIGJ5IEph biBCZXVsaWNoKSwKICAgLSBkbyBub3QgcmVhZCBkYXRhIGJleW9uZCB0aGUgZW5kIG9mIG11bHRp Ym9vdDIgaW5mb3JtYXRpb24KICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKS4KCnYyIC0g bm90IGZpeGVkIHlldDoKICAgLSBkeW5hbWljIGRlcGVuZGVuY3kgZ2VuZXJhdGlvbiBmb3IgeGVu L2FyY2gveDg2L2Jvb3QvcmVsb2MuUzsKICAgICB0aGlzIHJlcXVpcmVzIG1vcmUgd29yazsgSSBh bSBub3Qgc3VyZSB0aGF0IGl0IHBheXMgYmVjYXVzZQogICAgIHBvdGVudGlhbCBwYXRjaCByZXF1 aXJlcyBtb3JlIGNoYW5nZXMgdGhhbiBhZGRpdGlvbiBvZiBqdXN0CiAgICAgbXVsdGlib290Mi5o IHRvIE1ha2VmaWxlCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gaXNvbGF0 ZWQvc3RyYXkgX19wYWNrZWQgYXR0cmlidXRlIHVzYWdlIGZvciBtdWx0aWJvb3QyX21lbW9yeV9t YXBfdAogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLgotLS0KIHhlbi9hcmNoL3g4Ni9i b290L01ha2VmaWxlICAgICAgICB8ICAgIDMgKy0KIHhlbi9hcmNoL3g4Ni9ib290L2hlYWQuUyAg ICAgICAgICB8ICAxMDcgKysrKysrKysrKysrKysrKysrKysrKy0KIHhlbi9hcmNoL3g4Ni9ib290 L3JlbG9jLmMgICAgICAgICB8ICAxNDggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0K IHhlbi9hcmNoL3g4Ni94ODZfNjQvYXNtLW9mZnNldHMuYyB8ICAgIDkgKysKIHhlbi9pbmNsdWRl L3hlbi9tdWx0aWJvb3QyLmggICAgICB8ICAxNjkgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCA0MjYgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRp b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2luY2x1ZGUveGVuL211bHRpYm9vdDIuaAoK ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9ib290L01ha2VmaWxlIGIveGVuL2FyY2gveDg2L2Jv b3QvTWFrZWZpbGUKaW5kZXggNWZkYjVhZS4uMDY4OTNkOCAxMDA2NDQKLS0tIGEveGVuL2FyY2gv eDg2L2Jvb3QvTWFrZWZpbGUKKysrIGIveGVuL2FyY2gveDg2L2Jvb3QvTWFrZWZpbGUKQEAgLTEs NiArMSw3IEBACiBvYmotYmluLXkgKz0gaGVhZC5vCiAKLVJFTE9DX0RFUFMgPSAkKEJBU0VESVIp L2luY2x1ZGUvYXNtLXg4Ni9jb25maWcuaCAkKEJBU0VESVIpL2luY2x1ZGUveGVuL211bHRpYm9v dC5oCitSRUxPQ19ERVBTID0gJChCQVNFRElSKS9pbmNsdWRlL2FzbS14ODYvY29uZmlnLmggJChC QVNFRElSKS9pbmNsdWRlL3hlbi9tdWx0aWJvb3QuaCBcCisJICAgICAkKEJBU0VESVIpL2luY2x1 ZGUveGVuL211bHRpYm9vdDIuaAogCiBoZWFkLm86IHJlbG9jLlMKIApkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L2Jvb3QvaGVhZC5TIGIveGVuL2FyY2gveDg2L2Jvb3QvaGVhZC5TCmluZGV4IDZm MmM2NjguLjM4M2ZmNzkgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9ib290L2hlYWQuUworKysg Yi94ZW4vYXJjaC94ODYvYm9vdC9oZWFkLlMKQEAgLTEsNSArMSw2IEBACiAjaW5jbHVkZSA8eGVu L2NvbmZpZy5oPgogI2luY2x1ZGUgPHhlbi9tdWx0aWJvb3QuaD4KKyNpbmNsdWRlIDx4ZW4vbXVs dGlib290Mi5oPgogI2luY2x1ZGUgPHB1YmxpYy94ZW4uaD4KICNpbmNsdWRlIDxhc20vYXNtX2Rl Zm5zLmg+CiAjaW5jbHVkZSA8YXNtL2Rlc2MuaD4KQEAgLTE5LDYgKzIwLDI4IEBACiAjZGVmaW5l IEJPT1RfUFNFVURPUk1fQ1MgMHgwMDIwCiAjZGVmaW5lIEJPT1RfUFNFVURPUk1fRFMgMHgwMDI4 CiAKKyNkZWZpbmUgTUIyX0hUKG5hbWUpICAgICAgKE1VTFRJQk9PVDJfSEVBREVSX1RBR18jI25h bWUpCisjZGVmaW5lIE1CMl9UVChuYW1lKSAgICAgIChNVUxUSUJPT1QyX1RBR19UWVBFXyMjbmFt ZSkKKworICAgICAgICAubWFjcm8gbWIyaHRfYXJncyBhcmc6cmVxLCBhcmdzOnZhcmFyZworICAg ICAgICAubG9uZyBcYXJnCisgICAgICAgIC5pZm5iIFxhcmdzCisgICAgICAgIG1iMmh0X2FyZ3Mg XGFyZ3MKKyAgICAgICAgLmVuZGlmCisgICAgICAgIC5lbmRtCisKKyAgICAgICAgLm1hY3JvIG1i Mmh0X2luaXQgdHlwZTpyZXEsIHJlcTpyZXEsIGFyZ3M6dmFyYXJnCisgICAgICAgIC5hbGlnbiBN VUxUSUJPT1QyX1RBR19BTElHTgorLkxtYjJodF9pbml0X3N0YXJ0XEA6CisgICAgICAgIC5zaG9y dCBcdHlwZQorICAgICAgICAuc2hvcnQgXHJlcQorICAgICAgICAubG9uZyAuTG1iMmh0X2luaXRf ZW5kXEAgLSAuTG1iMmh0X2luaXRfc3RhcnRcQAorICAgICAgICAuaWZuYiBcYXJncworICAgICAg ICBtYjJodF9hcmdzIFxhcmdzCisgICAgICAgIC5lbmRpZgorLkxtYjJodF9pbml0X2VuZFxAOgor ICAgICAgICAuZW5kbQorCiBFTlRSWShzdGFydCkKICAgICAgICAgam1wICAgICBfX3N0YXJ0CiAK QEAgLTM0LDYgKzU3LDQyIEBAIG11bHRpYm9vdDFfaGVhZGVyX3N0YXJ0OiAgICAgICAvKioqIE1V TFRJQk9PVDEgSEVBREVSICoqKiovCiAgICAgICAgIC5sb25nICAgLShNVUxUSUJPT1RfSEVBREVS X01BR0lDICsgTVVMVElCT09UX0hFQURFUl9GTEFHUykKIG11bHRpYm9vdDFfaGVhZGVyX2VuZDoK IAorLyoqKiBNVUxUSUJPT1QyIEhFQURFUiAqKioqLworLyogU29tZSBpZGVhcyBhcmUgdGFrZW4g ZnJvbSBncnViLTIuMDAvZ3J1Yi1jb3JlL3Rlc3RzL2Jvb3Qva2VybmVsLWkzODYuUyBmaWxlLiAq LworICAgICAgICAuYWxpZ24gIE1VTFRJQk9PVDJfSEVBREVSX0FMSUdOCisKK211bHRpYm9vdDJf aGVhZGVyX3N0YXJ0OgorICAgICAgICAvKiBNYWdpYyBudW1iZXIgaW5kaWNhdGluZyBhIE11bHRp Ym9vdDIgaGVhZGVyLiAqLworICAgICAgICAubG9uZyAgIE1VTFRJQk9PVDJfSEVBREVSX01BR0lD CisgICAgICAgIC8qIEFyY2hpdGVjdHVyZTogaTM4Ni4gKi8KKyAgICAgICAgLmxvbmcgICBNVUxU SUJPT1QyX0FSQ0hJVEVDVFVSRV9JMzg2CisgICAgICAgIC8qIE11bHRpYm9vdDIgaGVhZGVyIGxl bmd0aC4gKi8KKyAgICAgICAgLmxvbmcgICAuTG11bHRpYm9vdDJfaGVhZGVyX2VuZCAtIG11bHRp Ym9vdDJfaGVhZGVyX3N0YXJ0CisgICAgICAgIC8qIE11bHRpYm9vdDIgaGVhZGVyIGNoZWNrc3Vt LiAqLworICAgICAgICAubG9uZyAgIC0oTVVMVElCT09UMl9IRUFERVJfTUFHSUMgKyBNVUxUSUJP T1QyX0FSQ0hJVEVDVFVSRV9JMzg2ICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgKC5MbXVs dGlib290Ml9oZWFkZXJfZW5kIC0gbXVsdGlib290Ml9oZWFkZXJfc3RhcnQpKQorCisgICAgICAg IC8qIE11bHRpYm9vdDIgaW5mb3JtYXRpb24gcmVxdWVzdCB0YWcuICovCisgICAgICAgIG1iMmh0 X2luaXQgTUIyX0hUKElORk9STUFUSU9OX1JFUVVFU1QpLCBNQjJfSFQoUkVRVUlSRUQpLCBcCisg ICAgICAgICAgICAgICAgICAgTUIyX1RUKEJBU0lDX01FTUlORk8pLCBNQjJfVFQoTU1BUCkKKwor ICAgICAgICAvKiBBbGlnbiBtb2R1bGVzIGF0IHBhZ2UgYm91bmRyeS4gKi8KKyAgICAgICAgbWIy aHRfaW5pdCBNQjJfSFQoTU9EVUxFX0FMSUdOKSwgTUIyX0hUKFJFUVVJUkVEKQorCisgICAgICAg IC8qIENvbnNvbGUgZmxhZ3MgdGFnLiAqLworICAgICAgICBtYjJodF9pbml0IE1CMl9IVChDT05T T0xFX0ZMQUdTKSwgTUIyX0hUKE9QVElPTkFMKSwgXAorICAgICAgICAgICAgICAgICAgIE1VTFRJ Qk9PVDJfQ09OU09MRV9GTEFHU19FR0FfVEVYVF9TVVBQT1JURUQKKworICAgICAgICAvKiBGcmFt ZWJ1ZmZlciB0YWcuICovCisgICAgICAgIG1iMmh0X2luaXQgTUIyX0hUKEZSQU1FQlVGRkVSKSwg TUIyX0hUKE9QVElPTkFMKSwgXAorICAgICAgICAgICAgICAgICAgIDAsIC8qIE51bWJlciBvZiB0 aGUgY29sdW1ucyAtIG5vIHByZWZlcmVuY2UuICovIFwKKyAgICAgICAgICAgICAgICAgICAwLCAv KiBOdW1iZXIgb2YgdGhlIGxpbmVzIC0gbm8gcHJlZmVyZW5jZS4gKi8gXAorICAgICAgICAgICAg ICAgICAgIDAgIC8qIE51bWJlciBvZiBiaXRzIHBlciBwaXhlbCAtIG5vIHByZWZlcmVuY2UuICov CisKKyAgICAgICAgLyogTXVsdGlib290MiBoZWFkZXIgZW5kIHRhZy4gKi8KKyAgICAgICAgbWIy aHRfaW5pdCBNQjJfSFQoRU5EKSwgTUIyX0hUKFJFUVVJUkVEKQorLkxtdWx0aWJvb3QyX2hlYWRl cl9lbmQ6CisKICAgICAgICAgLnNlY3Rpb24gLmluaXQucm9kYXRhLCAiYSIsIEBwcm9nYml0cwog ICAgICAgICAuYWxpZ24gNAogCkBAIC04MiwxMCArMTQxLDUyIEBAIF9fc3RhcnQ6CiAgICAgICAg IG1vdiAgICAgJWVjeCwlZXMKICAgICAgICAgbW92ICAgICAlZWN4LCVzcwogCi0gICAgICAgIC8q IENoZWNrIGZvciBNdWx0aWJvb3QgYm9vdGxvYWRlciAqLworICAgICAgICAvKiBCb290bG9hZGVy cyBtYXkgc2V0IG11bHRpYm9vdHsxLDJ9Lm1lbV9sb3dlciB0byBhIG5vbnplcm8gdmFsdWUuICov CisgICAgICAgIHhvciAgICAgJWVkeCwlZWR4CisKKyAgICAgICAgLyogQ2hlY2sgZm9yIE11bHRp Ym9vdDIgYm9vdGxvYWRlci4gKi8KKyAgICAgICAgY21wICAgICAkTVVMVElCT09UMl9CT09UTE9B REVSX01BR0lDLCVlYXgKKyAgICAgICAgamUgICAgICAuTG11bHRpYm9vdDJfcHJvdG8KKworICAg ICAgICAvKiBDaGVjayBmb3IgTXVsdGlib290IGJvb3Rsb2FkZXIuICovCiAgICAgICAgIGNtcCAg ICAgJE1VTFRJQk9PVF9CT09UTE9BREVSX01BR0lDLCVlYXgKICAgICAgICAgam5lICAgICBub3Rf bXVsdGlib290CiAKKyAgICAgICAgLyogR2V0IG1lbV9sb3dlciBmcm9tIE11bHRpYm9vdCBpbmZv cm1hdGlvbi4gKi8KKyAgICAgICAgdGVzdGIgICAkTUJJX01FTUxJTUlUUyxNQl9mbGFncyglZWJ4 KQorCisgICAgICAgIC8qIE5vdCBhdmFpbGFibGU/IEJEQSB2YWx1ZSB3aWxsIGJlIGZpbmUuICov CisgICAgICAgIGNtb3ZueiAgTUJfbWVtX2xvd2VyKCVlYngpLCVlZHgKKyAgICAgICAgam1wICAg ICB0cmFtcG9saW5lX3NldHVwCisKKy5MbXVsdGlib290Ml9wcm90bzoKKyAgICAgICAgLyogU2tp cCBNdWx0aWJvb3QyIGluZm9ybWF0aW9uIGZpeGVkIHBhcnQuICovCisgICAgICAgIGxlYSAgICAg KE1CMl9maXhlZF9zaXplb2YrTVVMVElCT09UMl9UQUdfQUxJR04tMSkoJWVieCksJWVjeAorICAg ICAgICBhbmQgICAgICR+KE1VTFRJQk9PVDJfVEFHX0FMSUdOLTEpLCVlY3gKKworMDoKKyAgICAg ICAgLyogQ2hlY2sgTXVsdGlib290MiBpbmZvcm1hdGlvbiB0b3RhbCBzaXplLiAqLworICAgICAg ICBtb3YgICAgICVlY3gsJWVkaQorICAgICAgICBzdWIgICAgICVlYngsJWVkaQorICAgICAgICBj bXAgICAgICVlZGksTUIyX2ZpeGVkX3RvdGFsX3NpemUoJWVieCkKKyAgICAgICAgamJlICAgICB0 cmFtcG9saW5lX3NldHVwCisKKyAgICAgICAgLyogR2V0IG1lbV9sb3dlciBmcm9tIE11bHRpYm9v dDIgaW5mb3JtYXRpb24uICovCisgICAgICAgIGNtcGwgICAgJE1VTFRJQk9PVDJfVEFHX1RZUEVf QkFTSUNfTUVNSU5GTyxNQjJfdGFnX3R5cGUoJWVjeCkKKyAgICAgICAgY21vdmUgICBNQjJfbWVt X2xvd2VyKCVlY3gpLCVlZHgKKyAgICAgICAgamUgICAgICB0cmFtcG9saW5lX3NldHVwCisKKyAg ICAgICAgLyogSXMgaXQgdGhlIGVuZCBvZiBNdWx0aWJvb3QyIGluZm9ybWF0aW9uPyAqLworICAg ICAgICBjbXBsICAgICRNVUxUSUJPT1QyX1RBR19UWVBFX0VORCxNQjJfdGFnX3R5cGUoJWVjeCkK KyAgICAgICAgamUgICAgICB0cmFtcG9saW5lX3NldHVwCisKKyAgICAgICAgLyogR28gdG8gbmV4 dCBNdWx0aWJvb3QyIGluZm9ybWF0aW9uIHRhZy4gKi8KKyAgICAgICAgYWRkICAgICBNQjJfdGFn X3NpemUoJWVjeCksJWVjeAorICAgICAgICBhZGQgICAgICQoTVVMVElCT09UMl9UQUdfQUxJR04t MSksJWVjeAorICAgICAgICBhbmQgICAgICR+KE1VTFRJQk9PVDJfVEFHX0FMSUdOLTEpLCVlY3gK KyAgICAgICAgam1wICAgICAwYgorCit0cmFtcG9saW5lX3NldHVwOgogICAgICAgICAvKiBTZXQg dXAgdHJhbXBvbGluZSBzZWdtZW50IDY0ayBiZWxvdyBFQkRBICovCiAgICAgICAgIG1vdnp3bCAg MHg0MGUsJWVjeCAgICAgICAgICAvKiBFQkRBIHNlZ21lbnQgKi8KICAgICAgICAgY21wICAgICAk MHhhMDAwLCVlY3ggICAgICAgIC8qIHNhbml0eSBjaGVjayAoaGlnaCkgKi8KQEAgLTEwMCw5ICsy MDEsNiBAQCBfX3N0YXJ0OgogICAgICAgICAgKiBDb21wYXJlIHRoZSB2YWx1ZSBpbiB0aGUgQkRB IHdpdGggdGhlIGluZm9ybWF0aW9uIGZyb20gdGhlCiAgICAgICAgICAqIG11bHRpYm9vdCBzdHJ1 Y3R1cmUgKGlmIGF2YWlsYWJsZSkgYW5kIHVzZSB0aGUgc21hbGxlc3QuCiAgICAgICAgICAqLwot ICAgICAgICB0ZXN0YiAgICRNQklfTUVNTElNSVRTLCglZWJ4KQotICAgICAgICBqeiAgICAgIDJm ICAgICAgICAgICAgICAgICAgLyogbm90IGF2YWlsYWJsZT8gQkRBIHZhbHVlIHdpbGwgYmUgZmlu ZSAqLwotICAgICAgICBtb3YgICAgIE1CX21lbV9sb3dlciglZWJ4KSwlZWR4CiAgICAgICAgIGNt cCAgICAgJDB4MTAwLCVlZHggICAgICAgICAvKiBpcyB0aGUgbXVsdGlib290IHZhbHVlIHRvbyBz bWFsbD8gKi8KICAgICAgICAgamIgICAgICAyZiAgICAgICAgICAgICAgICAgIC8qIGlmIHNvLCBk byBub3QgdXNlIGl0ICovCiAgICAgICAgIHNobCAgICAgJDEwLTQsJWVkeApAQCAtMTIxLDYgKzIx OSw3IEBAIF9fc3RhcnQ6CiAgICAgICAgIG1vdiAgICAgJHN5bV9waHlzKGNwdTBfc3RhY2spKzEw MjQsJWVzcAogICAgICAgICBwdXNoICAgICVlY3ggICAgICAgICAgICAgICAgLyogQm9vdCB0cmFt cG9saW5lIGFkZHJlc3MuICovCiAgICAgICAgIHB1c2ggICAgJWVieCAgICAgICAgICAgICAgICAv KiBNdWx0aWJvb3QgaW5mb3JtYXRpb24gYWRkcmVzcy4gKi8KKyAgICAgICAgcHVzaCAgICAlZWF4 ICAgICAgICAgICAgICAgIC8qIE11bHRpYm9vdCBtYWdpYy4gKi8KICAgICAgICAgY2FsbCAgICBy ZWxvYwogICAgICAgICBtb3YgICAgICVlYXgsc3ltX3BoeXMobXVsdGlib290X3B0cikKIApkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L2Jvb3QvcmVsb2MuYyBiL3hlbi9hcmNoL3g4Ni9ib290L3Jl bG9jLmMKaW5kZXggZWE4Y2IzNy4uOTRjZWFkNyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2Jv b3QvcmVsb2MuYworKysgYi94ZW4vYXJjaC94ODYvYm9vdC9yZWxvYy5jCkBAIC01LDE1ICs1LDE4 IEBACiAgKiBhbmQgbW9kdWxlcy4gVGhpcyBpcyBtb3N0IGVhc2lseSBkb25lIGVhcmx5IHdpdGgg cGFnaW5nIGRpc2FibGVkLgogICoKICAqIENvcHlyaWdodCAoYykgMjAwOSwgQ2l0cml4IFN5c3Rl bXMsIEluYy4KKyAqIENvcHlyaWdodCAoYykgMjAxMy0yMDE2IE9yYWNsZSBhbmQvb3IgaXRzIGFm ZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogQXV0aG9yczoKICAqICAgIEtl aXIgRnJhc2VyIDxrZWlyQHhlbi5vcmc+CisgKiAgICBEYW5pZWwgS2lwZXIgPGRhbmllbC5raXBl ckBvcmFjbGUuY29tPgogICovCiAKIC8qCiAgKiBUaGlzIGVudHJ5IHBvaW50IGlzIGVudGVyZWQg ZnJvbSB4ZW4vYXJjaC94ODYvYm9vdC9oZWFkLlMgd2l0aDoKLSAqICAgLSAweDQoJWVzcCkgPSBN VUxUSUJPT1RfSU5GT1JNQVRJT05fQUREUkVTUywKLSAqICAgLSAweDgoJWVzcCkgPSBCT09UX1RS QU1QT0xJTkVfQUREUkVTUy4KKyAqICAgLSAweDQoJWVzcCkgPSBNVUxUSUJPT1RfTUFHSUMsCisg KiAgIC0gMHg4KCVlc3ApID0gTVVMVElCT09UX0lORk9STUFUSU9OX0FERFJFU1MsCisgKiAgIC0g MHhjKCVlc3ApID0gQk9PVF9UUkFNUE9MSU5FX0FERFJFU1MuCiAgKi8KIGFzbSAoCiAgICAgIiAg ICAudGV4dCAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKQEAgLTIzLDcgKzI2LDEyIEBAIGFz bSAoCiAgICAgKTsKIAogdHlwZWRlZiB1bnNpZ25lZCBpbnQgdTMyOwordHlwZWRlZiB1bnNpZ25l ZCBsb25nIGxvbmcgdTY0OworCiAjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS94ZW4vbXVsdGli b290LmgiCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS94ZW4vbXVsdGlib290Mi5oIgorCisj ZGVmaW5lIE5VTEwJCSgodm9pZCAqKTApCiAKICNkZWZpbmUgX19zdGRjYWxsCV9fYXR0cmlidXRl X18oKF9fc3RkY2FsbF9fKSkKIApAQCAtMzIsNiArNDAsOSBAQCB0eXBlZGVmIHVuc2lnbmVkIGlu dCB1MzI7CiAKICNkZWZpbmUgX3AodmFsKQkJKCh2b2lkICopKHVuc2lnbmVkIGxvbmcpKHZhbCkp CiAKKyNkZWZpbmUgZ2V0X21iMl9kYXRhKHRhZywgdHlwZSwgbWVtYmVyKSAgICgoKG11bHRpYm9v dDJfdGFnXyMjdHlwZSMjX3QgKikodGFnKSktPm1lbWJlcikKKyNkZWZpbmUgZ2V0X21iMl9zdHJp bmcodGFnLCB0eXBlLCBtZW1iZXIpICgodTMyKWdldF9tYjJfZGF0YSh0YWcsIHR5cGUsIG1lbWJl cikpCisKIHN0YXRpYyB1MzIgYWxsb2M7CiAKIHN0YXRpYyB1MzIgYWxsb2NfbWVtKHUzMiBieXRl cykKQEAgLTM5LDYgKzUwLDEyIEBAIHN0YXRpYyB1MzIgYWxsb2NfbWVtKHUzMiBieXRlcykKICAg ICByZXR1cm4gYWxsb2MgLT0gQUxJR05fVVAoYnl0ZXMsIDE2KTsKIH0KIAorc3RhdGljIHZvaWQg emVyb19tZW0odTMyIHMsIHUzMiBieXRlcykKK3sKKyAgICB3aGlsZSAoIGJ5dGVzLS0gKQorICAg ICAgICAqKGNoYXIgKilzKysgPSAwOworfQorCiBzdGF0aWMgdTMyIGNvcHlfbWVtKHUzMiBzcmMs IHUzMiBieXRlcykKIHsKICAgICB1MzIgZHN0LCBkc3RfcmV0OwpAQCAtNjUsMTMgKzgyLDExIEBA IHN0YXRpYyB1MzIgY29weV9zdHJpbmcodTMyIHNyYykKICAgICByZXR1cm4gY29weV9tZW0oc3Jj LCBwIC0gc3JjICsgMSk7CiB9CiAKLW11bHRpYm9vdF9pbmZvX3QgX19zdGRjYWxsICpyZWxvYyh1 MzIgbWJpX2luLCB1MzIgdHJhbXBvbGluZSkKK3N0YXRpYyBtdWx0aWJvb3RfaW5mb190ICptYmlf cmVsb2ModTMyIG1iaV9pbikKIHsKICAgICBpbnQgaTsKICAgICBtdWx0aWJvb3RfaW5mb190ICpt Ymlfb3V0OwogCi0gICAgYWxsb2MgPSB0cmFtcG9saW5lOwotCiAgICAgbWJpX291dCA9IF9wKGNv cHlfbWVtKG1iaV9pbiwgc2l6ZW9mKCptYmlfb3V0KSkpOwogCiAgICAgaWYgKCBtYmlfb3V0LT5m bGFncyAmIE1CSV9DTURMSU5FICkKQEAgLTEwOCwzICsxMjMsMTI2IEBAIG11bHRpYm9vdF9pbmZv X3QgX19zdGRjYWxsICpyZWxvYyh1MzIgbWJpX2luLCB1MzIgdHJhbXBvbGluZSkKIAogICAgIHJl dHVybiBtYmlfb3V0OwogfQorCitzdGF0aWMgbXVsdGlib290X2luZm9fdCAqbWJpMl9yZWxvYyh1 MzIgbWJpX2luKQoreworICAgIGNvbnN0IG11bHRpYm9vdDJfZml4ZWRfdCAqbWJpX2ZpeCA9IF9w KG1iaV9pbik7CisgICAgY29uc3QgbXVsdGlib290Ml9tZW1vcnlfbWFwX3QgKm1tYXBfc3JjOwor ICAgIGNvbnN0IG11bHRpYm9vdDJfdGFnX3QgKnRhZzsKKyAgICBtb2R1bGVfdCAqbWJpX291dF9t b2RzID0gTlVMTDsKKyAgICBtZW1vcnlfbWFwX3QgKm1tYXBfZHN0OworICAgIG11bHRpYm9vdF9p bmZvX3QgKm1iaV9vdXQ7CisgICAgdTMyIHB0cjsKKyAgICB1bnNpZ25lZCBpbnQgaSwgbW9kX2lk eCA9IDA7CisKKyAgICBwdHIgPSBhbGxvY19tZW0oc2l6ZW9mKCptYmlfb3V0KSk7CisgICAgbWJp X291dCA9IF9wKHB0cik7CisgICAgemVyb19tZW0ocHRyLCBzaXplb2YoKm1iaV9vdXQpKTsKKwor ICAgIC8qIFNraXAgTXVsdGlib290MiBpbmZvcm1hdGlvbiBmaXhlZCBwYXJ0LiAqLworICAgIHB0 ciA9IEFMSUdOX1VQKG1iaV9pbiArIHNpemVvZihtdWx0aWJvb3QyX2ZpeGVkX3QpLCBNVUxUSUJP T1QyX1RBR19BTElHTik7CisKKyAgICAvKiBHZXQgdGhlIG51bWJlciBvZiBtb2R1bGVzLiAqLwor ICAgIGZvciAoIHRhZyA9IF9wKHB0cik7ICh1MzIpdGFnIC0gbWJpX2luIDwgbWJpX2ZpeC0+dG90 YWxfc2l6ZTsKKyAgICAgICAgICB0YWcgPSBfcChBTElHTl9VUCgodTMyKXRhZyArIHRhZy0+c2l6 ZSwgTVVMVElCT09UMl9UQUdfQUxJR04pKSApCisgICAgeworICAgICAgICBpZiAoIHRhZy0+dHlw ZSA9PSBNVUxUSUJPT1QyX1RBR19UWVBFX01PRFVMRSApCisgICAgICAgICAgICArK21iaV9vdXQt Pm1vZHNfY291bnQ7CisgICAgICAgIGVsc2UgaWYgKCB0YWctPnR5cGUgPT0gTVVMVElCT09UMl9U QUdfVFlQRV9FTkQgKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKCBtYmlf b3V0LT5tb2RzX2NvdW50ICkKKyAgICB7CisgICAgICAgIG1iaV9vdXQtPmZsYWdzIHw9IE1CSV9N T0RVTEVTOworICAgICAgICBtYmlfb3V0LT5tb2RzX2FkZHIgPSBhbGxvY19tZW0obWJpX291dC0+ bW9kc19jb3VudCAqIHNpemVvZihtb2R1bGVfdCkpOworICAgICAgICBtYmlfb3V0X21vZHMgPSBf cChtYmlfb3V0LT5tb2RzX2FkZHIpOworICAgIH0KKworICAgIC8qIFNraXAgTXVsdGlib290MiBp bmZvcm1hdGlvbiBmaXhlZCBwYXJ0LiAqLworICAgIHB0ciA9IEFMSUdOX1VQKG1iaV9pbiArIHNp emVvZihtdWx0aWJvb3QyX2ZpeGVkX3QpLCBNVUxUSUJPT1QyX1RBR19BTElHTik7CisKKyAgICAv KiBQdXQgYWxsIG5lZWRlZCBkYXRhIGludG8gbWJpX291dC4gKi8KKyAgICBmb3IgKCB0YWcgPSBf cChwdHIpOyAodTMyKXRhZyAtIG1iaV9pbiA8IG1iaV9maXgtPnRvdGFsX3NpemU7CisgICAgICAg ICAgdGFnID0gX3AoQUxJR05fVVAoKHUzMil0YWcgKyB0YWctPnNpemUsIE1VTFRJQk9PVDJfVEFH X0FMSUdOKSkgKQorICAgICAgICBzd2l0Y2ggKCB0YWctPnR5cGUgKQorICAgICAgICB7CisgICAg ICAgIGNhc2UgTVVMVElCT09UMl9UQUdfVFlQRV9CT09UX0xPQURFUl9OQU1FOgorICAgICAgICAg ICAgbWJpX291dC0+ZmxhZ3MgfD0gTUJJX0xPQURFUk5BTUU7CisgICAgICAgICAgICBwdHIgPSBn ZXRfbWIyX3N0cmluZyh0YWcsIHN0cmluZywgc3RyaW5nKTsKKyAgICAgICAgICAgIG1iaV9vdXQt PmJvb3RfbG9hZGVyX25hbWUgPSBjb3B5X3N0cmluZyhwdHIpOworICAgICAgICAgICAgYnJlYWs7 CisKKyAgICAgICAgY2FzZSBNVUxUSUJPT1QyX1RBR19UWVBFX0NNRExJTkU6CisgICAgICAgICAg ICBtYmlfb3V0LT5mbGFncyB8PSBNQklfQ01ETElORTsKKyAgICAgICAgICAgIHB0ciA9IGdldF9t YjJfc3RyaW5nKHRhZywgc3RyaW5nLCBzdHJpbmcpOworICAgICAgICAgICAgbWJpX291dC0+Y21k bGluZSA9IGNvcHlfc3RyaW5nKHB0cik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBj YXNlIE1VTFRJQk9PVDJfVEFHX1RZUEVfQkFTSUNfTUVNSU5GTzoKKyAgICAgICAgICAgIG1iaV9v dXQtPmZsYWdzIHw9IE1CSV9NRU1MSU1JVFM7CisgICAgICAgICAgICBtYmlfb3V0LT5tZW1fbG93 ZXIgPSBnZXRfbWIyX2RhdGEodGFnLCBiYXNpY19tZW1pbmZvLCBtZW1fbG93ZXIpOworICAgICAg ICAgICAgbWJpX291dC0+bWVtX3VwcGVyID0gZ2V0X21iMl9kYXRhKHRhZywgYmFzaWNfbWVtaW5m bywgbWVtX3VwcGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgTVVMVElC T09UMl9UQUdfVFlQRV9NTUFQOgorICAgICAgICAgICAgaWYgKCBnZXRfbWIyX2RhdGEodGFnLCBt bWFwLCBlbnRyeV9zaXplKSA8IHNpemVvZigqbW1hcF9zcmMpICkKKyAgICAgICAgICAgICAgICBi cmVhazsKKworICAgICAgICAgICAgbWJpX291dC0+ZmxhZ3MgfD0gTUJJX01FTU1BUDsKKyAgICAg ICAgICAgIG1iaV9vdXQtPm1tYXBfbGVuZ3RoID0gZ2V0X21iMl9kYXRhKHRhZywgbW1hcCwgc2l6 ZSk7CisgICAgICAgICAgICBtYmlfb3V0LT5tbWFwX2xlbmd0aCAtPSBzaXplb2YobXVsdGlib290 Ml90YWdfbW1hcF90KTsKKyAgICAgICAgICAgIG1iaV9vdXQtPm1tYXBfbGVuZ3RoIC89IGdldF9t YjJfZGF0YSh0YWcsIG1tYXAsIGVudHJ5X3NpemUpOworICAgICAgICAgICAgbWJpX291dC0+bW1h cF9sZW5ndGggKj0gc2l6ZW9mKG1lbW9yeV9tYXBfdCk7CisKKyAgICAgICAgICAgIG1iaV9vdXQt Pm1tYXBfYWRkciA9IGFsbG9jX21lbShtYmlfb3V0LT5tbWFwX2xlbmd0aCk7CisKKyAgICAgICAg ICAgIG1tYXBfc3JjID0gZ2V0X21iMl9kYXRhKHRhZywgbW1hcCwgZW50cmllcyk7CisgICAgICAg ICAgICBtbWFwX2RzdCA9IF9wKG1iaV9vdXQtPm1tYXBfYWRkcik7CisKKyAgICAgICAgICAgIGZv ciAoIGkgPSAwOyBpIDwgbWJpX291dC0+bW1hcF9sZW5ndGggLyBzaXplb2YoKm1tYXBfZHN0KTsg aSsrICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvKiBJbml0IHNpemUgbWVtYmVy IHByb3Blcmx5LiAqLworICAgICAgICAgICAgICAgIG1tYXBfZHN0W2ldLnNpemUgPSBzaXplb2Yo Km1tYXBfZHN0KTsKKyAgICAgICAgICAgICAgICBtbWFwX2RzdFtpXS5zaXplIC09IHNpemVvZigo KG1lbW9yeV9tYXBfdCl7MH0pLnNpemUpOworICAgICAgICAgICAgICAgIC8qIE5vdyBjb3B5IGEg Z2l2ZW4gcmVnaW9uIGRhdGEuICovCisgICAgICAgICAgICAgICAgbW1hcF9kc3RbaV0uYmFzZV9h ZGRyX2xvdyA9ICh1MzIpbW1hcF9zcmMtPmFkZHI7CisgICAgICAgICAgICAgICAgbW1hcF9kc3Rb aV0uYmFzZV9hZGRyX2hpZ2ggPSAodTMyKShtbWFwX3NyYy0+YWRkciA+PiAzMik7CisgICAgICAg ICAgICAgICAgbW1hcF9kc3RbaV0ubGVuZ3RoX2xvdyA9ICh1MzIpbW1hcF9zcmMtPmxlbjsKKyAg ICAgICAgICAgICAgICBtbWFwX2RzdFtpXS5sZW5ndGhfaGlnaCA9ICh1MzIpKG1tYXBfc3JjLT5s ZW4gPj4gMzIpOworICAgICAgICAgICAgICAgIG1tYXBfZHN0W2ldLnR5cGUgPSBtbWFwX3NyYy0+ dHlwZTsKKyAgICAgICAgICAgICAgICBtbWFwX3NyYyA9IF9wKG1tYXBfc3JjKSArIGdldF9tYjJf ZGF0YSh0YWcsIG1tYXAsIGVudHJ5X3NpemUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg YnJlYWs7CisKKyAgICAgICAgY2FzZSBNVUxUSUJPT1QyX1RBR19UWVBFX01PRFVMRToKKyAgICAg ICAgICAgIGlmICggbW9kX2lkeCA+PSBtYmlfb3V0LT5tb2RzX2NvdW50ICkKKyAgICAgICAgICAg ICAgICBicmVhazsKKworICAgICAgICAgICAgbWJpX291dF9tb2RzW21vZF9pZHhdLm1vZF9zdGFy dCA9IGdldF9tYjJfZGF0YSh0YWcsIG1vZHVsZSwgbW9kX3N0YXJ0KTsKKyAgICAgICAgICAgIG1i aV9vdXRfbW9kc1ttb2RfaWR4XS5tb2RfZW5kID0gZ2V0X21iMl9kYXRhKHRhZywgbW9kdWxlLCBt b2RfZW5kKTsKKyAgICAgICAgICAgIHB0ciA9IGdldF9tYjJfc3RyaW5nKHRhZywgbW9kdWxlLCBj bWRsaW5lKTsKKyAgICAgICAgICAgIG1iaV9vdXRfbW9kc1ttb2RfaWR4XS5zdHJpbmcgPSBjb3B5 X3N0cmluZyhwdHIpOworICAgICAgICAgICAgbWJpX291dF9tb2RzW21vZF9pZHhdLnJlc2VydmVk ID0gMDsKKyAgICAgICAgICAgICsrbW9kX2lkeDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg ICAgIGNhc2UgTVVMVElCT09UMl9UQUdfVFlQRV9FTkQ6CisgICAgICAgICAgICByZXR1cm4gbWJp X291dDsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K KworICAgIHJldHVybiBtYmlfb3V0OworfQorCittdWx0aWJvb3RfaW5mb190IF9fc3RkY2FsbCAq cmVsb2ModTMyIG1iX21hZ2ljLCB1MzIgbWJpX2luLCB1MzIgdHJhbXBvbGluZSkKK3sKKyAgICBh bGxvYyA9IHRyYW1wb2xpbmU7CisKKyAgICBpZiAoIG1iX21hZ2ljID09IE1VTFRJQk9PVDJfQk9P VExPQURFUl9NQUdJQyApCisgICAgICAgIHJldHVybiBtYmkyX3JlbG9jKG1iaV9pbik7CisgICAg ZWxzZQorICAgICAgICByZXR1cm4gbWJpX3JlbG9jKG1iaV9pbik7Cit9CmRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYveDg2XzY0L2FzbS1vZmZzZXRzLmMgYi94ZW4vYXJjaC94ODYveDg2XzY0L2Fz bS1vZmZzZXRzLmMKaW5kZXggNjQ5MDVjNi4uYjQzN2E4ZiAxMDA2NDQKLS0tIGEveGVuL2FyY2gv eDg2L3g4Nl82NC9hc20tb2Zmc2V0cy5jCisrKyBiL3hlbi9hcmNoL3g4Ni94ODZfNjQvYXNtLW9m ZnNldHMuYwpAQCAtMTMsNiArMTMsNyBAQAogI2luY2x1ZGUgPGFzbS9maXhtYXAuaD4KICNpbmNs dWRlIDxhc20vaGFyZGlycS5oPgogI2luY2x1ZGUgPHhlbi9tdWx0aWJvb3QuaD4KKyNpbmNsdWRl IDx4ZW4vbXVsdGlib290Mi5oPgogCiAjZGVmaW5lIERFRklORShfc3ltLCBfdmFsKSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgYXNtIHZvbGF0 aWxlICgiXG4uYXNjaWlcIj09PiNkZWZpbmUgIiAjX3N5bSAiICUwIC8qICIgI192YWwgIiAqLzw9 PVwiIiBcCkBAIC0xNjcsNiArMTY4LDE0IEBAIHZvaWQgX19kdW1teV9fKHZvaWQpCiAgICAgT0ZG U0VUKE1CX2ZsYWdzLCBtdWx0aWJvb3RfaW5mb190LCBmbGFncyk7CiAgICAgT0ZGU0VUKE1CX2Nt ZGxpbmUsIG11bHRpYm9vdF9pbmZvX3QsIGNtZGxpbmUpOwogICAgIE9GRlNFVChNQl9tZW1fbG93 ZXIsIG11bHRpYm9vdF9pbmZvX3QsIG1lbV9sb3dlcik7CisgICAgQkxBTksoKTsKKworICAgIERF RklORShNQjJfZml4ZWRfc2l6ZW9mLCBzaXplb2YobXVsdGlib290Ml9maXhlZF90KSk7CisgICAg T0ZGU0VUKE1CMl9maXhlZF90b3RhbF9zaXplLCBtdWx0aWJvb3QyX2ZpeGVkX3QsIHRvdGFsX3Np emUpOworICAgIE9GRlNFVChNQjJfdGFnX3R5cGUsIG11bHRpYm9vdDJfdGFnX3QsIHR5cGUpOwor ICAgIE9GRlNFVChNQjJfdGFnX3NpemUsIG11bHRpYm9vdDJfdGFnX3QsIHNpemUpOworICAgIE9G RlNFVChNQjJfbWVtX2xvd2VyLCBtdWx0aWJvb3QyX3RhZ19iYXNpY19tZW1pbmZvX3QsIG1lbV9s b3dlcik7CisgICAgQkxBTksoKTsKIAogICAgIE9GRlNFVChET01BSU5fdm1fYXNzaXN0LCBzdHJ1 Y3QgZG9tYWluLCB2bV9hc3Npc3QpOwogfQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL211 bHRpYm9vdDIuaCBiL3hlbi9pbmNsdWRlL3hlbi9tdWx0aWJvb3QyLmgKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uOGRkNTgwMAotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9pbmNs dWRlL3hlbi9tdWx0aWJvb3QyLmgKQEAgLTAsMCArMSwxNjkgQEAKKy8qCisgKiAgQ29weXJpZ2h0 IChDKSAxOTk5LDIwMDMsMjAwNywyMDA4LDIwMDksMjAxMCAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCisgKgorICogIG11bHRpYm9vdDIuaCAtIE11bHRpYm9vdCAyIGhlYWRlciBmaWxl LgorICoKKyAqICBCYXNlZCBvbiBncnViLTIuMDAvaW5jbHVkZS9tdWx0aWJvb3QyLmggZmlsZS4K KyAqCisgKiAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRv IGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICogIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFz c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bworICogIGRl YWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0 IGxpbWl0YXRpb24gdGhlCisgKiAgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg cHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCisgKiAgc2VsbCBjb3BpZXMg b2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdh cmUgaXMKKyAqICBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBj b25kaXRpb25zOgorICoKKyAqICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw ZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogIGFsbCBjb3BpZXMgb3Ig c3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqICBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ UkVTUyBPUgorICogIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdB UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBBTlkKKyAq ICBERVZFTE9QRVIgT1IgRElTVFJJQlVUT1IgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFH RVMgT1IgT1RIRVIgTElBQklMSVRZLAorICogIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRS QUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IKKyAqICBJTiBD T05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1Mg SU4gVEhFIFNPRlRXQVJFLgorICovCisKKyNpZm5kZWYgX19NVUxUSUJPT1QyX0hfXworI2RlZmlu ZSBfX01VTFRJQk9PVDJfSF9fCisKKy8qIFRoZSBtYWdpYyBmaWVsZCBzaG91bGQgY29udGFpbiB0 aGlzLiAgKi8KKyNkZWZpbmUgTVVMVElCT09UMl9IRUFERVJfTUFHSUMJCQkJMHhlODUyNTBkNgor CisvKiBUaGlzIHNob3VsZCBiZSBpbiAlZWF4IG9uIHg4NiBhcmNoaXRlY3R1cmUuICAqLworI2Rl ZmluZSBNVUxUSUJPT1QyX0JPT1RMT0FERVJfTUFHSUMJCQkweDM2ZDc2Mjg5CisKKy8qIEhvdyBt YW55IGJ5dGVzIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlIHdlIHNlYXJjaCBmb3IgdGhlIGhl YWRlci4gICovCisjZGVmaW5lIE1VTFRJQk9PVDJfU0VBUkNICQkJCTMyNzY4CisKKy8qIE11bHRp Ym9vdCAyIGhlYWRlciBhbGlnbm1lbnQuICovCisjZGVmaW5lIE1VTFRJQk9PVDJfSEVBREVSX0FM SUdOCQkJCTgKKworLyogQWxpZ25tZW50IG9mIG11bHRpYm9vdCAyIG1vZHVsZXMuICAqLworI2Rl ZmluZSBNVUxUSUJPT1QyX01PRF9BTElHTgkJCQkweDAwMDAxMDAwCisKKy8qIEFsaWdubWVudCBv ZiB0aGUgbXVsdGlib290IDIgaW5mbyBzdHJ1Y3R1cmUuICAqLworI2RlZmluZSBNVUxUSUJPT1Qy X0lORk9fQUxJR04JCQkJMHgwMDAwMDAwOAorCisvKiBNdWx0aWJvb3QgMiBhcmNoaXRlY3R1cmVz LiAqLworI2RlZmluZSBNVUxUSUJPT1QyX0FSQ0hJVEVDVFVSRV9JMzg2CQkJMAorI2RlZmluZSBN VUxUSUJPT1QyX0FSQ0hJVEVDVFVSRV9NSVBTMzIJCQk0CisKKy8qIEhlYWRlciB0YWcgdHlwZXMu ICovCisjZGVmaW5lIE1VTFRJQk9PVDJfSEVBREVSX1RBR19FTkQJCQkwCisjZGVmaW5lIE1VTFRJ Qk9PVDJfSEVBREVSX1RBR19JTkZPUk1BVElPTl9SRVFVRVNUCTEKKyNkZWZpbmUgTVVMVElCT09U Ml9IRUFERVJfVEFHX0FERFJFU1MJCQkyCisjZGVmaW5lIE1VTFRJQk9PVDJfSEVBREVSX1RBR19F TlRSWV9BRERSRVNTCQkzCisjZGVmaW5lIE1VTFRJQk9PVDJfSEVBREVSX1RBR19DT05TT0xFX0ZM QUdTCQk0CisjZGVmaW5lIE1VTFRJQk9PVDJfSEVBREVSX1RBR19GUkFNRUJVRkZFUgkJNQorI2Rl ZmluZSBNVUxUSUJPT1QyX0hFQURFUl9UQUdfTU9EVUxFX0FMSUdOCQk2CisjZGVmaW5lIE1VTFRJ Qk9PVDJfSEVBREVSX1RBR19FRklfQlMJCQk3CisjZGVmaW5lIE1VTFRJQk9PVDJfSEVBREVSX1RB R19FTlRSWV9BRERSRVNTX0VGSTMyCTgKKyNkZWZpbmUgTVVMVElCT09UMl9IRUFERVJfVEFHX0VO VFJZX0FERFJFU1NfRUZJNjQJOQorCisvKiBIZWFkZXIgdGFnIGZsYWdzLiAqLworI2RlZmluZSBN VUxUSUJPT1QyX0hFQURFUl9UQUdfUkVRVUlSRUQJCQkwCisjZGVmaW5lIE1VTFRJQk9PVDJfSEVB REVSX1RBR19PUFRJT05BTAkJCTEKKworLyogSGVhZGVyIGNvbnNvbGUgdGFnIGNvbnNvbGVfZmxh Z3MuICovCisjZGVmaW5lIE1VTFRJQk9PVDJfQ09OU09MRV9GTEFHU19DT05TT0xFX1JFUVVJUkVE CTEKKyNkZWZpbmUgTVVMVElCT09UMl9DT05TT0xFX0ZMQUdTX0VHQV9URVhUX1NVUFBPUlRFRAky CisKKy8qIEZsYWdzIHNldCBpbiB0aGUgJ2ZsYWdzJyBtZW1iZXIgb2YgdGhlIG11bHRpYm9vdCBo ZWFkZXIuICAqLworI2RlZmluZSBNVUxUSUJPT1QyX1RBR19UWVBFX0VORAkJCQkwCisjZGVmaW5l IE1VTFRJQk9PVDJfVEFHX1RZUEVfQ01ETElORQkJCTEKKyNkZWZpbmUgTVVMVElCT09UMl9UQUdf VFlQRV9CT09UX0xPQURFUl9OQU1FCQkyCisjZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfTU9E VUxFCQkJMworI2RlZmluZSBNVUxUSUJPT1QyX1RBR19UWVBFX0JBU0lDX01FTUlORk8JCTQKKyNk ZWZpbmUgTVVMVElCT09UMl9UQUdfVFlQRV9CT09UREVWCQkJNQorI2RlZmluZSBNVUxUSUJPT1Qy X1RBR19UWVBFX01NQVAJCQk2CisjZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfVkJFCQkJCTcK KyNkZWZpbmUgTVVMVElCT09UMl9UQUdfVFlQRV9GUkFNRUJVRkZFUgkJCTgKKyNkZWZpbmUgTVVM VElCT09UMl9UQUdfVFlQRV9FTEZfU0VDVElPTlMJCTkKKyNkZWZpbmUgTVVMVElCT09UMl9UQUdf VFlQRV9BUE0JCQkJMTAKKyNkZWZpbmUgTVVMVElCT09UMl9UQUdfVFlQRV9FRkkzMgkJCTExCisj ZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfRUZJNjQJCQkxMgorI2RlZmluZSBNVUxUSUJPT1Qy X1RBR19UWVBFX1NNQklPUwkJCTEzCisjZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfQUNQSV9P TEQJCQkxNAorI2RlZmluZSBNVUxUSUJPT1QyX1RBR19UWVBFX0FDUElfTkVXCQkJMTUKKyNkZWZp bmUgTVVMVElCT09UMl9UQUdfVFlQRV9ORVRXT1JLCQkJMTYKKyNkZWZpbmUgTVVMVElCT09UMl9U QUdfVFlQRV9FRklfTU1BUAkJCTE3CisjZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfRUZJX0JT CQkJMTgKKyNkZWZpbmUgTVVMVElCT09UMl9UQUdfVFlQRV9FRkkzMl9JSAkJCTE5CisjZGVmaW5l IE1VTFRJQk9PVDJfVEFHX1RZUEVfRUZJNjRfSUgJCQkyMAorCisvKiBNdWx0aWJvb3QgMiB0YWcg YWxpZ25tZW50LiAqLworI2RlZmluZSBNVUxUSUJPT1QyX1RBR19BTElHTgkJCQk4CisKKy8qIE1l bW9yeSB0eXBlcy4gKi8KKyNkZWZpbmUgTVVMVElCT09UMl9NRU1PUllfQVZBSUxBQkxFCQkJMQor I2RlZmluZSBNVUxUSUJPT1QyX01FTU9SWV9SRVNFUlZFRAkJCTIKKyNkZWZpbmUgTVVMVElCT09U Ml9NRU1PUllfQUNQSV9SRUNMQUlNQUJMRQkJMworI2RlZmluZSBNVUxUSUJPT1QyX01FTU9SWV9O VlMJCQkJNAorI2RlZmluZSBNVUxUSUJPT1QyX01FTU9SWV9CQURSQU0JCQk1CisKKy8qIEZyYW1l YnVmZmVyIHR5cGVzLiAqLworI2RlZmluZSBNVUxUSUJPT1QyX0ZSQU1FQlVGRkVSX1RZUEVfSU5E RVhFRAkJMAorI2RlZmluZSBNVUxUSUJPT1QyX0ZSQU1FQlVGRkVSX1RZUEVfUkdCCQkJMQorI2Rl ZmluZSBNVUxUSUJPT1QyX0ZSQU1FQlVGRkVSX1RZUEVfRUdBX1RFWFQJCTIKKworI2lmbmRlZiBf X0FTU0VNQkxZX18KK3R5cGVkZWYgc3RydWN0IHsKKyAgICB1MzIgdG90YWxfc2l6ZTsKKyAgICB1 MzIgcmVzZXJ2ZWQ7Cit9IG11bHRpYm9vdDJfZml4ZWRfdDsKKwordHlwZWRlZiBzdHJ1Y3Qgewor ICAgIHUzMiB0eXBlOworICAgIHUzMiBzaXplOworfSBtdWx0aWJvb3QyX3RhZ190OworCit0eXBl ZGVmIHN0cnVjdCB7CisgICAgdTMyIHR5cGU7CisgICAgdTMyIHNpemU7CisgICAgY2hhciBzdHJp bmdbXTsKK30gbXVsdGlib290Ml90YWdfc3RyaW5nX3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAg ICB1MzIgdHlwZTsKKyAgICB1MzIgc2l6ZTsKKyAgICB1MzIgbWVtX2xvd2VyOworICAgIHUzMiBt ZW1fdXBwZXI7Cit9IG11bHRpYm9vdDJfdGFnX2Jhc2ljX21lbWluZm9fdDsKKwordHlwZWRlZiBz dHJ1Y3QgeworICAgIHU2NCBhZGRyOworICAgIHU2NCBsZW47CisgICAgdTMyIHR5cGU7CisgICAg dTMyIHplcm87Cit9IG11bHRpYm9vdDJfbWVtb3J5X21hcF90OworCit0eXBlZGVmIHN0cnVjdCB7 CisgICAgdTMyIHR5cGU7CisgICAgdTMyIHNpemU7CisgICAgdTMyIGVudHJ5X3NpemU7CisgICAg dTMyIGVudHJ5X3ZlcnNpb247CisgICAgbXVsdGlib290Ml9tZW1vcnlfbWFwX3QgZW50cmllc1td OworfSBtdWx0aWJvb3QyX3RhZ19tbWFwX3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICB1MzIg dHlwZTsKKyAgICB1MzIgc2l6ZTsKKyAgICB1NjQgcG9pbnRlcjsKK30gbXVsdGlib290Ml90YWdf ZWZpNjRfdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIHUzMiB0eXBlOworICAgIHUzMiBzaXpl OworICAgIHU2NCBwb2ludGVyOworfSBtdWx0aWJvb3QyX3RhZ19lZmk2NF9paF90OworCit0eXBl ZGVmIHN0cnVjdCB7CisgICAgdTMyIHR5cGU7CisgICAgdTMyIHNpemU7CisgICAgdTMyIG1vZF9z dGFydDsKKyAgICB1MzIgbW9kX2VuZDsKKyAgICBjaGFyIGNtZGxpbmVbXTsKK30gbXVsdGlib290 Ml90YWdfbW9kdWxlX3Q7CisjZW5kaWYgLyogX19BU1NFTUJMWV9fICovCisKKyNlbmRpZiAvKiBf X01VTFRJQk9PVDJfSF9fICovCi0tIAoxLjcuMTAuNAoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=