From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from inx.pm.waw.pl ([195.116.170.130]) by merlin.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1ULtvu-0005Cs-Mk for barebox@lists.infradead.org; Sat, 30 Mar 2013 11:26:57 +0000 From: Krzysztof Halasa References: Date: Sat, 30 Mar 2013 12:26:47 +0100 In-Reply-To: (Krzysztof Halasa's message of "Sat, 30 Mar 2013 12:19:07 +0100") Message-ID: MIME-Version: 1.0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "barebox" Errors-To: barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org Subject: [PATCH] ARM: Add support for IXP4xx CPU and for Goramo Multilink router platform. To: barebox@lists.infradead.org U2lnbmVkLW9mZi1ieTogS3J6eXN6dG9mIEhhxYJhc2EgPGtoY0BwbS53YXcucGw+CgpkaWZmIC0t Z2l0IGEvRG9jdW1lbnRhdGlvbi9ib2FyZHMuZG94IGIvRG9jdW1lbnRhdGlvbi9ib2FyZHMuZG94 CmluZGV4IDQxZGU4MzYuLjJkMjQ4ZTYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vYm9hcmRz LmRveAorKysgYi9Eb2N1bWVudGF0aW9uL2JvYXJkcy5kb3gKQEAgLTIxLDYgKzIxLDcgQEAgQVJN IHR5cGU6CiBAbGkgQHN1YnBhZ2UgYm9hcmRfbG9jbwogQGxpIEBzdWJwYWdlIGNodW1ieW9uZQog QGxpIEBzdWJwYWdlIHNjYjkzMjgKK0BsaSBAc3VicGFnZSBtdWx0aWxpbmsKIEBsaSBAc3VicGFn ZSBuZXR4CiBAbGkgQHN1YnBhZ2UgZGV2X29tYXBfYXJjaAogQGxpIEBzdWJwYWdlIGE5bTI0NDAK ZGlmZiAtLWdpdCBhL2FyY2gvYXJtL0tjb25maWcgYi9hcmNoL2FybS9LY29uZmlnCmluZGV4IGJi OWI0N2IuLjJhNzc1ZDUgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL0tjb25maWcKKysrIGIvYXJjaC9h cm0vS2NvbmZpZwpAQCAtNzksNiArNzksMTIgQEAgY29uZmlnIEFSQ0hfSU1YCiAJc2VsZWN0IFdB VENIRE9HX0lNWF9SRVNFVF9TT1VSQ0UKIAlzZWxlY3QgSEFTX0RFQlVHX0xMCiAKK2NvbmZpZyBB UkNIX0lYUDRYWAorCWJvb2wgIkludGVsIElYUDR4eC1iYXNlZCIKKwlzZWxlY3QgQ1BVX1hTQ0FM RQorCXNlbGVjdCBBUkNIX1NVUFBPUlRTX0JJR19FTkRJQU4KKwlzZWxlY3QgQ1BVX0JJR19FTkRJ QU4KKwogY29uZmlnIEFSQ0hfTVhTCiAJYm9vbCAiRnJlZXNjYWxlIGkuTVgyMy8yOCAobXhzKSBi YXNlZCIKIAlzZWxlY3QgR0VORVJJQ19HUElPCkBAIC0xNTMsNiArMTU5LDcgQEAgc291cmNlIGFy Y2gvYXJtL21hY2gtY2xwczcxMXgvS2NvbmZpZwogc291cmNlIGFyY2gvYXJtL21hY2gtZXA5M3h4 L0tjb25maWcKIHNvdXJjZSBhcmNoL2FybS9tYWNoLWhpZ2hiYW5rL0tjb25maWcKIHNvdXJjZSBh cmNoL2FybS9tYWNoLWlteC9LY29uZmlnCitzb3VyY2UgYXJjaC9hcm0vbWFjaC1peHA0eHgvS2Nv bmZpZwogc291cmNlIGFyY2gvYXJtL21hY2gtbXhzL0tjb25maWcKIHNvdXJjZSBhcmNoL2FybS9t YWNoLW5ldHgvS2NvbmZpZwogc291cmNlIGFyY2gvYXJtL21hY2gtbm9tYWRpay9LY29uZmlnCmRp ZmYgLS1naXQgYS9hcmNoL2FybS9NYWtlZmlsZSBiL2FyY2gvYXJtL01ha2VmaWxlCmluZGV4IGQ1 MDZiMTIuLjU1NDA3MmUgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL01ha2VmaWxlCisrKyBiL2FyY2gv YXJtL01ha2VmaWxlCkBAIC01Nyw2ICs1Nyw3IEBAIG1hY2hpbmUtJChDT05GSUdfQVJDSF9DTFBT NzExWCkJCTo9IGNscHM3MTF4CiBtYWNoaW5lLSQoQ09ORklHX0FSQ0hfRVA5M1hYKQkJOj0gZXA5 M3h4CiBtYWNoaW5lLSQoQ09ORklHX0FSQ0hfSElHSEJBTkspCQk6PSBoaWdoYmFuawogbWFjaGlu ZS0kKENPTkZJR19BUkNIX0lNWCkJCTo9IGlteAorbWFjaGluZS0kKENPTkZJR19BUkNIX0lYUDRY WCkJCTo9IGl4cDR4eAogbWFjaGluZS0kKENPTkZJR19BUkNIX01YUykJCTo9IG14cwogbWFjaGlu ZS0kKENPTkZJR19BUkNIX05PTUFESUspCQk6PSBub21hZGlrCiBtYWNoaW5lLSQoQ09ORklHX0FS Q0hfTkVUWCkJCTo9IG5ldHgKQEAgLTEwMSw2ICsxMDIsNyBAQCBib2FyZC0kKENPTkZJR19NQUNI X0VVS1JFQV9DUFVJTVg1MVNEKQkJOj0gZXVrcmVhX2NwdWlteDUxCiBib2FyZC0kKENPTkZJR19N QUNIX0ZSRUVTQ0FMRV9NWDI1XzNTVEFDSykJOj0gZnJlZXNjYWxlLW14MjUtMy1zdGFjawogYm9h cmQtJChDT05GSUdfTUFDSF9GUkVFU0NBTEVfTVgzNV8zU1RBQ0spCTo9IGZyZWVzY2FsZS1teDM1 LTMtc3RhY2sKIGJvYXJkLSQoQ09ORklHX01BQ0hfR0U4NjMpCQkJOj0gdGVsaXQtZXZrLXBybzMK K2JvYXJkLSQoQ09ORklHX01BQ0hfR09SQU1PX01MUikJCQk6PSBtdWx0aWxpbmsKIGJvYXJkLSQo Q09ORklHX01BQ0hfSElHSEJBTkspCQkJOj0gaGlnaGJhbmsKIGJvYXJkLSQoQ09ORklHX01BQ0hf SU1YMjFBRFMpCQkJOj0gaW14MjFhZHMKIGJvYXJkLSQoQ09ORklHX01BQ0hfSU1YMjdBRFMpCQkJ Oj0gaW14MjdhZHMKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2JvYXJkcy9tdWx0aWxpbmsvTWFrZWZp bGUgYi9hcmNoL2FybS9ib2FyZHMvbXVsdGlsaW5rL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmQ1YThiYmMKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9i b2FyZHMvbXVsdGlsaW5rL01ha2VmaWxlCkBAIC0wLDAgKzEgQEAKK29iai15ICs9IGxvd2xldmVs X2luaXQubyBtdWx0aWxpbmsubwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vYm9hcmRzL211bHRpbGlu ay9jb25maWcuaCBiL2FyY2gvYXJtL2JvYXJkcy9tdWx0aWxpbmsvY29uZmlnLmgKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0v Ym9hcmRzL211bHRpbGluay9sb3dsZXZlbF9pbml0LlMgYi9hcmNoL2FybS9ib2FyZHMvbXVsdGls aW5rL2xvd2xldmVsX2luaXQuUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5h NDgzMThjCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vYm9hcmRzL211bHRpbGluay9sb3ds ZXZlbF9pbml0LlMKQEAgLTAsMCArMSw2NyBAQAorI2luY2x1ZGUgPG1hY2gvaXhwNHh4LXJlZ3Mu aD4KKyNpbmNsdWRlIDxtYWNoL2l4cDR4eC1oZWFkLmg+CisKKwkubWFjcm8gREVMQVlfRk9SIGN5 Y2xlcywgcmVnMAorCWxkciBccmVnMCwgPVxjeWNsZXMKKwlzdWJzIFxyZWcwLCBccmVnMCwgIzEK KwlzdWJuZSBwYywgcGMsICMweGMKKwkuZW5kbQorCisjZGVmaW5lIENGR19TRFJBTV9TSVpFICAg IDB4NTAgLyogdTMyICovCisjZGVmaW5lIENGR19TRFJBTV9DT05GICAgIDB4NTQgLyogdTMyICov CisjZGVmaW5lIENGR19TRFJBTV9NT0RFICAgIDB4NTggLyogdTMyICovCisjZGVmaW5lIENGR19T RFJBTV9SRUZSRVNIIDB4NUMgLyogdTMyICovCisKKwkuc2VjdGlvbiAiLnRleHRfYmFyZV9pbml0 IiwgImF4IgorCisJLmdsb2JsIGJhcmVib3hfYXJtX3Jlc2V0X3ZlY3RvcgorYmFyZWJveF9hcm1f cmVzZXRfdmVjdG9yOgorCWl4cDR4eF9jcHVfbG93bGV2ZWxfaW5pdAorCW1vdiByOCwgI0lYUDRY WF9FWFBfQkFTRSgwKQorCWxkciByMSwgW3I4LCAjQ0ZHX1NEUkFNX0NPTkZdCisJbGRyIHIyLCA9 SVhQNFhYX1NEUkFNX0NPTkZJRworCXN0ciByMSwgW3IyXQorCisJLyogZGlzYWJsZSByZWZyZXNo IGN5Y2xlcyAqLworCW1vdiByMSwgIzAKKwlhZGQgcjIsIHIyLCAjNCAvKiByMiA9IElYUDRYWF9T RFJBTV9SRUZSRVNIICovCisJc3RyIHIxLCBbcjJdCisKKwkvKiBzZW5kIE5PUCBjb21tYW5kICov CisJbW92IHIxLCAjMworCWFkZCByMywgcjIsICM0IC8qIHIzID0gSVhQNFhYX1NEUkFNX0lSICov CisJc3RyIHIxLCBbcjNdCisJREVMQVlfRk9SIDB4NDAwMCwgcjAKKworCS8qIHNldCBTRFJBTSBp bnRlcm5hbCByZWZyZXNoICovCisJbGRyIHIxLCBbcjgsICNDRkdfU0RSQU1fUkVGUkVTSF0KKwlz dHIgcjEsIFtyMl0KKwlERUxBWV9GT1IgMHg0MDAwLCByMAorCisJLyogc2VuZCBwcmVjaGFyZ2Ut YWxsIGNvbW1hbmQgdG8gY2xvc2UgYWxsIG9wZW4gYmFua3MgKi8KKwltb3YgcjEsICMyCisJc3Ry IHIxLCBbcjNdCisJREVMQVlfRk9SIDB4NDAwMCwgcjAKKworCS8qIHByb3ZpZGUgOCBhdXRvLXJl ZnJlc2ggY3ljbGVzICovCisJbW92IHIxLCAjNAorCW1vdiByNCwgIzgKKzE6CXN0ciByMSwgW3Iz XQorCURFTEFZX0ZPUiAweDEwMCwgcjAKKwlzdWJzIHI0LCByNCwgIzEKKwlibmUgMWIKKworCS8q IHNldCBtb2RlIHJlZ2lzdGVyIGluIFNEUkFNICovCisJbGRyIHIxLCBbcjgsICNDRkdfU0RSQU1f TU9ERV0KKwlzdHIgcjEsIFtyM10KKwlERUxBWV9GT1IgMHg0MDAwLCByMAorCisJLyogc2VuZCBu b3JtYWwgb3BlcmF0aW9uIGNvbW1hbmQgKi8KKwltb3YgcjEsICM2CisJc3RyIHIxLCBbcjNdCisJ REVMQVlfRk9SIDB4NDAwMCwgcjAKKworCW1vdiByMCwgIzAKKwlsZHIgcjEsIFtyOCwgI0NGR19T RFJBTV9TSVpFXQorCW1vdiByMiwgIzAKKwliIGJhcmVib3hfYXJtX2VudHJ5CmRpZmYgLS1naXQg YS9hcmNoL2FybS9ib2FyZHMvbXVsdGlsaW5rL211bHRpbGluay5jIGIvYXJjaC9hcm0vYm9hcmRz L211bHRpbGluay9tdWx0aWxpbmsuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li40M2E0YTA4Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vYm9hcmRzL211bHRpbGluay9t dWx0aWxpbmsuYwpAQCAtMCwwICsxLDEwOSBAQAorLy8jZGVmaW5lIERFQlVHCisjaW5jbHVkZSA8 Y29tbW9uLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxmcy5oPgorI2luY2x1ZGUg PGluaXQuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGFzbS9hcm1saW51 eC5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGdlbmVyYXRlZC9tYWNoLXR5cGVz Lmg+CisjaW5jbHVkZSA8bWFjaC9peHA0eHgtcmVncy5oPgorI2luY2x1ZGUgPG1hY2gvcGxhdGZv cm0uaD4KKworLyogb2Zmc2V0cyBmcm9tIHN0YXJ0IG9mIGZsYXNoIFJPTSA9IDB4NTAwMDAwMDAg Ki8KKyNkZWZpbmUgQ0ZHX0VUSDBfQUREUkVTUyAgICAgMHg0MCAvKiA2IGJ5dGVzICovCisjZGVm aW5lIENGR19FVEgxX0FERFJFU1MgICAgIDB4NDYgLyogNiBieXRlcyAqLworI2RlZmluZSBDRkdf UkVWICAgICAgICAgICAgICAweDRDIC8qIHUzMiAqLworI2RlZmluZSBDRkdfU0RSQU1fU0laRSAg ICAgICAweDUwIC8qIHUzMiAqLworI2RlZmluZSBDRkdfU0RSQU1fQ09ORiAgICAgICAweDU0IC8q IHUzMiAqLworI2RlZmluZSBDRkdfU0RSQU1fTU9ERSAgICAgICAweDU4IC8qIHUzMiAqLworI2Rl ZmluZSBDRkdfU0RSQU1fUkVGUkVTSCAgICAweDVDIC8qIHUzMiAqLworCisjZGVmaW5lIENGR19I V19CSVRTICAgICAgICAgIDB4NjAgLyogdTMyICovCisjZGVmaW5lICBDRkdfSFdfVVNCX1BPUlRT ICAgIDB4MDAwMDAwMDcgLyogMCA9IG5vIE5FQyBjaGlwLCAxLTUgPSBwb3J0cyAjICovCisjZGVm aW5lICBDRkdfSFdfSEFTX1BDSV9TTE9UIDB4MDAwMDAwMDgKKyNkZWZpbmUgIENGR19IV19IQVNf RVRIMCAgICAgMHgwMDAwMDAxMAorI2RlZmluZSAgQ0ZHX0hXX0hBU19FVEgxICAgICAweDAwMDAw MDIwCisjZGVmaW5lICBDRkdfSFdfSEFTX0hTUzAgICAgIDB4MDAwMDAwNDAKKyNkZWZpbmUgIENG R19IV19IQVNfSFNTMSAgICAgMHgwMDAwMDA4MAorI2RlZmluZSAgQ0ZHX0hXX0hBU19VQVJUMCAg ICAweDAwMDAwMTAwCisjZGVmaW5lICBDRkdfSFdfSEFTX1VBUlQxICAgIDB4MDAwMDAyMDAKKyNk ZWZpbmUgIENGR19IV19IQVNfRUVQUk9NICAgMHgwMDAwMDQwMAorCisjZGVmaW5lIEVUSF9BTEVO ICAgICAgICAgICAgIDYKKworI2RlZmluZSBCQVJFQk9YX1NUQVJUICAgICAgICAweDAwMDAwCisj ZGVmaW5lIEJBUkVCT1hfTEVOR1RIICAgICAgIDB4M0IwMDAKKyNkZWZpbmUgQ1JBTUZTX1NUQVJU ICAgICAgICAgKEJBUkVCT1hfU1RBUlQgKyBCQVJFQk9YX0xFTkdUSCkKKyNkZWZpbmUgQ1JBTUZT X0xFTkdUSCAgICAgICAgMHgwNTAwMAorI2RlZmluZSBFTlYwX1NUQVJUICAgICAgICAgICAoQ1JB TUZTX1NUQVJUICsgQ1JBTUZTX0xFTkdUSCkKKyNkZWZpbmUgRU5WMF9MRU5HVEggICAgICAgICAg MHgyMDAwMAorCitzdGF0aWMgc3RydWN0IGV0aF9wbGF0X2luZm8gZXRoX3BpbmZvWzJdID0gewor CXsKKwkJLnJlZ3MgICAgID0gSVhQNFhYX0V0aEJfQkFTRSwKKwkJLm5wZSAgICAgID0gMSwKKwkJ LnBoeSAgICAgID0gMCwKKwkJLnJ4cSAgICAgID0gMjAsCisJCS50eHJlYWR5cSA9IDI5LAorCX0s IHsKKwkJLnJlZ3MgICAgID0gSVhQNFhYX0V0aENfQkFTRSwKKwkJLm5wZSAgICAgID0gMiwKKwkJ LnBoeSAgICAgID0gMSwKKwkJLnJ4cSAgICAgID0gMjEsCisJCS50eHJlYWR5cSA9IDMwLAorCX0K K307CisKK3N0YXRpYyBpbmxpbmUgdTggX19pbml0IGZsYXNoX3JlYWRiKHUzMiBhZGRyKQorewor CXJldHVybiBfX3Jhd19yZWFkYihJWFA0WFhfRVhQX0JBU0UoMCkgKyBhZGRyKTsKK30KKworc3Rh dGljIGludCBfX2luaXQgZ21sX21lbV9pbml0KHZvaWQpCit7CisJYXJtX2FkZF9tZW1fZGV2aWNl KCJyYW0wIiwgMCwgX19yYXdfcmVhZGwoSVhQNFhYX0VYUF9CQVNFKDApICsgQ0ZHX1NEUkFNX1NJ WkUpKTsKKwlyZXR1cm4gMDsKK30KKworbWVtX2luaXRjYWxsKGdtbF9tZW1faW5pdCk7CisKK3N0 YXRpYyBpbnQgX19pbml0IGdtbF9kZXZpY2VzX2luaXQodm9pZCkKK3sKKwl1MzIgaHdfYml0czsK KwlpbnQgaTsKKworCUlYUDRYWF9FWFBfQ1MwID0gSVhQNFhYX0VYUF9FTiB8IElYUDRYWF9FWFBf SU5URUwgfAorCQlJWFA0WFhfRVhQX0JJVFMoMjQpIHwgSVhQNFhYX0VYUF9XUl9FTiB8IElYUDRY WF9FWFBfQllURV9SRDE2OworCWFkZF9jZmlfZmxhc2hfZGV2aWNlKDAsIElYUDRYWF9FWFBfQkFT RSgwKSwgMTYgKiAxMDI0ICogMTAyNCwgMCk7CisJZGV2ZnNfYWRkX3BhcnRpdGlvbigibm9yMCIs IEJBUkVCT1hfU1RBUlQsIEJBUkVCT1hfTEVOR1RILAorCQkJICAgIERFVkZTX1BBUlRJVElPTl9G SVhFRCB8IERFVkZTX1BBUlRJVElPTl9SRUFET05MWSwgImJhcmVib3giKTsKKwlkZXZmc19hZGRf cGFydGl0aW9uKCJub3IwIiwgQ1JBTUZTX1NUQVJULCBDUkFNRlNfTEVOR1RILAorCQkJICAgIERF VkZTX1BBUlRJVElPTl9GSVhFRCB8IERFVkZTX1BBUlRJVElPTl9SRUFET05MWSwgImNyYW1mcyIp OworCWRldmZzX2FkZF9wYXJ0aXRpb24oIm5vcjAiLCBFTlYwX1NUQVJULCBFTlYwX0xFTkdUSCwK KwkJCSAgICBERVZGU19QQVJUSVRJT05fRklYRUQsICJlbnYwIik7CisKKwlta2RpcigiL2Zpcm13 YXJlIiwgMDc1NSk7CisJbW91bnQoIi9kZXYvY3JhbWZzIiwgImNyYW1mcyIsICIvZmlybXdhcmUi KTsKKworCWh3X2JpdHMgPSBfX3Jhd19yZWFkbChJWFA0WFhfRVhQX0JBU0UoMCkgKyBDRkdfSFdf QklUUyk7CisKKwlpZiAoaHdfYml0cyAmIENGR19IV19IQVNfRVRIMCkgeworCQlmb3IgKGkgPSAw OyBpIDwgRVRIX0FMRU47IGkrKykKKwkJCWV0aF9waW5mb1swXS5od2FkZHJbaV0gPSBmbGFzaF9y ZWFkYihDRkdfRVRIMF9BRERSRVNTICsgaSk7CisJCWFkZF9nZW5lcmljX2RldmljZSgiaXhwNHh4 X2V0aCIsIERFVklDRV9JRF9EWU5BTUlDLCBOVUxMLCAwLCAwLAorCQkJCSAgIElPUkVTT1VSQ0Vf TUVNLCAmZXRoX3BpbmZvWzBdKTsKKwl9CisKKwlpZiAoaHdfYml0cyAmIENGR19IV19IQVNfRVRI MSkgeworCQlmb3IgKGkgPSAwOyBpIDwgRVRIX0FMRU47IGkrKykKKwkJCWV0aF9waW5mb1sxXS5o d2FkZHJbaV0gPSBmbGFzaF9yZWFkYihDRkdfRVRIMV9BRERSRVNTICsgaSk7CisJCWFkZF9nZW5l cmljX2RldmljZSgiaXhwNHh4X2V0aCIsIERFVklDRV9JRF9EWU5BTUlDLCBOVUxMLCAwLCAwLAor CQkJCSAgIElPUkVTT1VSQ0VfTUVNLCAmZXRoX3BpbmZvWzFdKTsKKwl9CisKKwlhcm1saW51eF9z ZXRfYm9vdHBhcmFtcygodm9pZCAqKSgweDAwMDAwMTAwKSk7CisJYXJtbGludXhfc2V0X2FyY2hp dGVjdHVyZShNQUNIX1RZUEVfR09SQU1PX01MUik7CisJcmV0dXJuIDA7Cit9CitkZXZpY2VfaW5p dGNhbGwoZ21sX2RldmljZXNfaW5pdCk7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9ib2FyZHMvbXVs dGlsaW5rL211bHRpbGluay5kb3ggYi9hcmNoL2FybS9ib2FyZHMvbXVsdGlsaW5rL211bHRpbGlu ay5kb3gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzIxY2JlYgotLS0gL2Rl di9udWxsCisrKyBiL2FyY2gvYXJtL2JvYXJkcy9tdWx0aWxpbmsvbXVsdGlsaW5rLmRveApAQCAt MCwwICsxLDM0IEBACisvKiogQHBhZ2UgbXVsdGlsaW5rIEdvcmFtbyBNdWx0aUxpbmsKKworVGhl c2UgYm9hcmRzIGFyZSBiYXNlZCBvbiBJbnRlbCBJWFA0MnggQ1BVLgorCitWYXJpYW50czoKKwor TWljcm9Sb3V0ZXIgbW9kdWxlOiBJWFA0MjEgb3IgSVhQNDI1IDI2NiBNSHogQ1BVLCAzMiBNaUIg U0RSQU0sCisgICAxIG9yIDIgRmFzdCBFdGhlcm5ldCBwb3J0cywgMiBzeW5jIHNlcmlhbCBwb3J0 cywgMSBSUy0yMzIgKGNvbnNvbGUpIHBvcnQuCisKK011bHRpTGluayB2LjE6IElYUDQyNSAyNjYg b3IgNTMzIE1IeiBDUFUsIDY0IC0gMjU2IE1pQiBTRFJBTSwKKyAgIDIgRmFzdCBFdGhlcm5ldCBw b3J0cywgMiBzeW5jIHNlcmlhbCBwb3J0cywgMSAtIDIgUlMtMjMyIHBvcnRzLAorICAgYSBtaW5p LVBDSSBzbG90LCAyIG9wdGlvbmFsIFVTQiBob3N0IGNvbm5lY3RvcnMuCisKK011bHRpTGluayB2 LjI6IElYUDQyNSAyNjYgb3IgNTMzIE1IeiBDUFUsIDY0IC0gMjU2IE1pQiBTRFJBTSwKKyAgIDIg RmFzdCBFdGhlcm5ldCBwb3J0cywgMiBzeW5jIHNlcmlhbCBwb3J0cywgMSAtIDIgUlMtMjMyIHBv cnRzLAorICAgMiBhZGRpdGlvbmFsIG9wdGlvbmFsIEZhc3Qgb3IgR2lnYWJpdCBFdGhlcm5ldCBw b3J0cywgYSBtaW5pLVBDSSBzbG90LAorICAgNCBvcHRpb25hbCBVU0IgaG9zdCBjb25uZWN0b3Jz LCBvcHRpb25hbCBSZWFsLVRpbWUgQ2xvY2ssCisgICBvcHRpb25hbCBJREUgY29ubmVjdG9yLgor CisxNiBNaUIgSW50ZWwgU3RyYXRhRmxhc2ggbWVtb3J5IGlzIHBhcnRpdGlvbmVkIGFzIGZvbGxv d3M6CisKKzB4MDAwMDAtMHgzQjAwMCA6IEJhcmVib3ggaW1hZ2UKKzB4M0IwMDAtMHg0MDAwMCA6 IGNvbXByZXNzZWQgUkFNIGZpbGVzeXN0ZW0gKGNyYW1mcykKKzB4NDAwMDAtMHg2MDAwMCA6IGVu djAKKworVGhlcmUgaXMgYSBmYWN0b3J5IGNvbmZpZ3VyYXRpb24gcmVnaW9uIHdpdGhpbiBCYXJl Ym94IGltYWdlIGF0IGxvY2F0aW9ucworMHg0MCAtIDB4N0YuIERldGFpbHMgYXJlIGluIGZpbGUg bXVsdGlsaW5rLmMKKworQmFyZWJveCBhbmQgY3JhbWZzIGltYWdlcyBhcmUgY29tYmluZWQgaW4g Zmlyc3QgdHdvIGJsb2NrcyBvZiBmbGFzaCBtZW1vcnkuCitOUEUtQSBtaWNyb2NvZGUgY29udGFp bmVkIGluIGNyYW1mcyBpcyBub3QgdXNlZCBieSBCYXJlYm94IChidXQgbWF5IGJlIHVzZWQKK2J5 IExpbnV4IEhTUyBkcml2ZXIpLiBOUEUtQiBtaWNyb2NvZGUgaXMgbmVlZGVkIGZvciBldGgwIGFu ZCBOUEUtQyBmb3IgZXRoMS4KK0JhcmVib3ggbmVlZHMgdmVyc2lvbiAyLjQgb2YgcmVndWxhciBu b24tVkxBTi1hd2FyZSBtaWNyb2NvZGUgZmlsZXMgKHdpdGgKK29yIHdpdGhvdXQgY3J5cHRvIHN1 cHBvcnQpLgorKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2xpYi9iYXJlYm94Lmxkcy5TIGIvYXJj aC9hcm0vbGliL2JhcmVib3gubGRzLlMKaW5kZXggMTBjNjNiZi4uYjQwYjI0YiAxMDA2NDQKLS0t IGEvYXJjaC9hcm0vbGliL2JhcmVib3gubGRzLlMKKysrIGIvYXJjaC9hcm0vbGliL2JhcmVib3gu bGRzLlMKQEAgLTQwLDYgKzQwLDkgQEAgU0VDVElPTlMKIAkJX3N0ZXh0ID0gLjsKIAkJX3RleHQg PSAuOwogCQkqKC50ZXh0X2VudHJ5KikKKyNpZmRlZiBDT05GSUdfTUFDSF9HT1JBTU9fTUxSCisJ CS4gPSAweDAwODA7IC8qIGNvbmZpZyBzcGFjZSBhdCAweDQwIC0gMHg3RiAqLworI2VuZGlmCiAJ CV9fYmFyZV9pbml0X3N0YXJ0ID0gLjsKIAkJKigudGV4dF9iYXJlX2luaXQqKQogCQlfX2JhcmVf aW5pdF9lbmQgPSAuOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1peHA0eHgvS2NvbmZpZyBi L2FyY2gvYXJtL21hY2gtaXhwNHh4L0tjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uZGIwYjc2OAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL21hY2gtaXhwNHh4 L0tjb25maWcKQEAgLTAsMCArMSwyNiBAQAoraWYgQVJDSF9JWFA0WFgKKworY2hvaWNlCisJcHJv bXB0ICJJWFA0eHggQm9hcmQgVHlwZSIKKworY29uZmlnIE1BQ0hfR09SQU1PX01MUgorCWJvb2wg IkdvcmFtbyBNdWx0aUxpbmsiCisJc2VsZWN0IEhBVkVfQ09ORklHVVJBQkxFX01FTU9SWV9MQVlP VVQKK2VuZGNob2ljZQorCitjb25maWcgQk9BUkRJTkZPCisJZGVmYXVsdCAiR29yYW1vIE11bHRp TGluayIgaWYgTUFDSF9HT1JBTU9fTUxSCisKK2NvbmZpZyBJWFA0WFhfUU1HUgorCXRyaXN0YXRl ICJJWFA0eHggUXVldWUgTWFuYWdlciBzdXBwb3J0IgorCWhlbHAKKwkgIFRoaXMgZHJpdmVyIHN1 cHBvcnRzIElYUDR4eCBidWlsdC1pbiBoYXJkd2FyZSBxdWV1ZSBtYW5hZ2VyCisJICBhbmQgaXMg cmVxdWlyZWQgYnkgdGhlIEV0aGVybmV0IGRyaXZlci4KKworY29uZmlnIElYUDRYWF9OUEUKKwl0 cmlzdGF0ZSAiSVhQNHh4IE5ldHdvcmsgUHJvY2Vzc29yIEVuZ2luZSBzdXBwb3J0IgorCWhlbHAK KwkgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIElYUDR4eCBidWlsdC1pbiBuZXR3b3JrIGNvcHJvY2Vz c29ycworCSAgYW5kIGlzIHJlcXVpcmVkIGJ5IHRoZSBFdGhlcm5ldCBkcml2ZXIuCisKK2VuZGlm CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWl4cDR4eC9NYWtlZmlsZSBiL2FyY2gvYXJtL21h Y2gtaXhwNHh4L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdj ZmM5MjQKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNoLWl4cDR4eC9NYWtlZmlsZQpA QCAtMCwwICsxLDMgQEAKK29iai15ICs9IGdlbmVyaWMubworb2JqLSQoQ09ORklHX0lYUDRYWF9R TUdSKSArPSBxbWdyLm8KK29iai0kKENPTkZJR19JWFA0WFhfTlBFKSArPSBucGUubwpkaWZmIC0t Z2l0IGEvYXJjaC9hcm0vbWFjaC1peHA0eHgvZ2VuZXJpYy5jIGIvYXJjaC9hcm0vbWFjaC1peHA0 eHgvZ2VuZXJpYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4MTk5NGIK LS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNoLWl4cDR4eC9nZW5lcmljLmMKQEAgLTAs MCArMSwxMTQgQEAKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxpbml0Lmg+CisjaW5j bHVkZSA8bnMxNjU1MC5oPgorI2luY2x1ZGUgPGFzbS9hcm1saW51eC5oPgorI2luY2x1ZGUgPGFz bS9pby5oPgorI2luY2x1ZGUgPG1hY2gvaXhwNHh4LXJlZ3MuaD4KKworI2RlZmluZSBPU1RTX0ZS RVFVRU5DWSA2NjY2NjAwMAorCit2b2lkIHJlc2V0X2NwdSh1bG9uZyBhZGRyKQoreworCS8qIFVz ZSBvbi1jaGlwIHJlc2V0IGNhcGFiaWxpdHkgKi8KKwkvKiBUaGlzIG1heSBub3Qgd29yayBvbiBJ WFA0MjUgcmV2LiBBMCAqLworCisJSVhQNFhYX09TV0sgPSBJWFA0WFhfV0RUX0tFWTsKKwlJWFA0 WFhfT1NXVCA9IDA7IC8qIHJlcXVlc3QgaW1tZWRpYXRlIHJlc2V0ICovCisJSVhQNFhYX09TV0Ug PSBJWFA0WFhfV0RUX1JFU0VUX0VOQUJMRSB8IElYUDRYWF9XRFRfQ09VTlRfRU5BQkxFOworCXdo aWxlICgxKQorCQk7Cit9CisKKyNpbmNsdWRlIDxjbG9jay5oPgorCisvKioKKyAqIEBicmllZiBQ cm92aWRlIGEgc2ltcGxlIGNsb2NrIHJlYWQKKyAqCisgKiBOb3RoaW5nIGlzIHNpbXBsZXIuLiBy ZWFkIGRpcmVjdCBmcm9tIGNsb2NrIGFuZCBwcm92aWRlIGl0CisgKiB0byB0aGUgY2FsbGVyLgor ICoKKyAqIEByZXR1cm4gY2xvY2sgY291bnRlcgorICovCitzdGF0aWMgdWludDY0X3QgaXhwNHh4 X2Nsb2Nrc291cmNlX3JlYWQodm9pZCkKK3sKKwlyZXR1cm4gSVhQNFhYX09TVFM7Cit9CisKK3N0 YXRpYyBzdHJ1Y3QgY2xvY2tzb3VyY2UgY3MgPSB7CisJLnJlYWQgPSBpeHA0eHhfY2xvY2tzb3Vy Y2VfcmVhZCwKKwkubWFzayA9IDB4ZmZmZmZmZmYsCisJLnNoaWZ0ID0gMTAsCit9OworCisvKioK KyAqIEBicmllZiBJbml0aWFsaXplIHRoZSBDbG9jaworICoKKyAqIFdlIHVzZSB0aGUgVGltZS1T dGFtcCBUaW1lcgorICoKKyAqIEByZXR1cm4gcmVzdWx0IG9mIEByZWYgaW5pdF9jbG9jaworICov CitzdGF0aWMgaW50IGl4cDR4eF9jbG9ja3NvdXJjZV9pbml0KHZvaWQpCit7CisJY3MubXVsdCA9 IGNsb2Nrc291cmNlX2h6Mm11bHQoT1NUU19GUkVRVUVOQ1ksIGNzLnNoaWZ0KTsKKworCXJldHVy biBpbml0X2Nsb2NrKCZjcyk7Cit9CisKKy8qIFJ1biBtZSBhdCBib290IHRpbWUgKi8KK2NvcmVf aW5pdGNhbGwoaXhwNHh4X2Nsb2Nrc291cmNlX2luaXQpOworCisKKyNpZmRlZiBDT05GSUdfRFJJ VkVSX1NFUklBTF9OUzE2NTUwCisKKy8qKgorICogQGJyaWVmIFVBUlQgcG9ydCByZWdpc3RlciBy ZWFkIGZ1bmN0aW9uIGZvciBJWFA0WFgKKyAqCisgKiBAcGFyYW0gYmFzZSBiYXNlIGFkZHJlc3Mg b2YgVUFSVAorICogQHBhcmFtIHJlZ19pZHggcmVnaXN0ZXIgaW5kZXgKKyAqCisgKiBAcmV0dXJu IGNoYXJhY3RlciByZWFkIGZyb20gcmVnaXN0ZXIKKyAqLwordW5zaWduZWQgaW50IGl4cDR4eF91 YXJ0X3JlYWQodW5zaWduZWQgbG9uZyBiYXNlLCB1bnNpZ25lZCBjaGFyIHJlZ19pZHgpCit7CisJ cmV0dXJuIHJlYWRiKDQgKiByZWdfaWR4ICsgMyAvKiBiaWctZW5kaWFuICovICsgKHVpbnQ4X3Qg KiliYXNlKTsKK30KK0VYUE9SVF9TWU1CT0woaXhwNHh4X3VhcnRfcmVhZCk7CisKKy8qKgorICog QGJyaWVmIFVBUlQgcG9ydCByZWdpc3RlciB3cml0ZSBmdW5jdGlvbiBmb3IgSVhQNFhYCisgKgor ICogQHBhcmFtIHZhbCB2YWx1ZSB0byB3cml0ZQorICogQHBhcmFtIGJhc2UgYmFzZSBhZGRyZXNz IG9mIFVBUlQKKyAqIEBwYXJhbSByZWdfaWR4IHJlZ2lzdGVyIGluZGV4CisgKgorICogQHJldHVy biB2b2lkCisgKi8KK3ZvaWQgaXhwNHh4X3VhcnRfd3JpdGUodW5zaWduZWQgaW50IHZhbCwgdW5z aWduZWQgbG9uZyBiYXNlLCB1bnNpZ25lZCBjaGFyIHJlZ19pZHgpCit7CisJd3JpdGViKHZhbCwg NCAqIHJlZ19pZHggKyAzIC8qIGJpZy1lbmRpYW4gKi8gKyAodWludDhfdCAqKWJhc2UpOworfQor RVhQT1JUX1NZTUJPTChpeHA0eHhfdWFydF93cml0ZSk7CisKKworc3RhdGljIHN0cnVjdCBOUzE2 NTUwX3BsYXQgc2VyaWFsX3BsYXQgPSB7CisJLmNsb2NrID0gMTQ3NDU2MDAsCisJLmZfY2FwcyA9 IENPTlNPTEVfU1RESU4gfCBDT05TT0xFX1NURE9VVCB8IENPTlNPTEVfU1RERVJSLAorCS5yZWdf cmVhZCA9IGl4cDR4eF91YXJ0X3JlYWQsCisJLnJlZ193cml0ZSA9IGl4cDR4eF91YXJ0X3dyaXRl LAorfTsKKworLyoqCisgKiBAYnJpZWYgVUFSVCBzZXJpYWwgcG9ydCBpbml0aWFsaXphdGlvbgor ICoKKyAqIEByZXR1cm4gcmVzdWx0IG9mIGRldmljZSByZWdpc3RyYXRpb24KKyAqLworc3RhdGlj IGludCBpeHA0eHhfY29uc29sZV9pbml0KHZvaWQpCit7CisJLyogUmVnaXN0ZXIgdGhlIHNlcmlh bCBwb3J0ICovCisJYWRkX25zMTY1NTBfZGV2aWNlKDAsICh1MzIpSVhQNFhYX1VBUlQxX0JBU0Us IDEwMjQsIElPUkVTT1VSQ0VfTUVNXzhCSVQsICZzZXJpYWxfcGxhdCk7CisJcmV0dXJuIDA7Cit9 CisKK2NvbnNvbGVfaW5pdGNhbGwoaXhwNHh4X2NvbnNvbGVfaW5pdCk7CisKKyNlbmRpZiAvKiBD T05GSUdfRFJJVkVSX1NFUklBTF9OUzE2NTUwICovCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNo LWl4cDR4eC9pbmNsdWRlL21hY2gvY3B1LmggYi9hcmNoL2FybS9tYWNoLWl4cDR4eC9pbmNsdWRl L21hY2gvY3B1LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RlMDIxZQot LS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL21hY2gtaXhwNHh4L2luY2x1ZGUvbWFjaC9jcHUu aApAQCAtMCwwICsxLDcwIEBACisvKgorICogYXJjaC9hcm0vbWFjaC1peHA0eHgvaW5jbHVkZS9t YWNoL2NwdS5oCisgKgorICogSVhQNFhYIGNwdSB0eXBlIGRldGVjdGlvbgorICoKKyAqIENvcHly aWdodCAoQykgMjAwNyBNb250YVZpc3RhIFNvZnR3YXJlLCBJbmMuCisgKgorICogVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbi4KKyAqCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX0NQVV9IX18KKyNkZWZpbmUgX19B U01fQVJDSF9DUFVfSF9fCisKKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorCisvKiBQcm9jZXNz b3IgaWQgdmFsdWUgaW4gQ1AxNSBSZWdpc3RlciAwICovCisjZGVmaW5lIElYUDQyWF9QUk9DRVNT T1JfSURfVkFMVUUgMHg2OTA1NDFjMCAvKiBpbmNsdWRpbmcgdW51c2VkIDB4NjkwNTQxRXggKi8K KyNkZWZpbmUgSVhQNDJYX1BST0NFU1NPUl9JRF9NQVNLICAweGZmZmZmZmMwCisKKyNkZWZpbmUg SVhQNDNYX1BST0NFU1NPUl9JRF9WQUxVRSAweDY5MDU0MDQwCisjZGVmaW5lIElYUDQzWF9QUk9D RVNTT1JfSURfTUFTSyAgMHhmZmZmZmZmMAorCisjZGVmaW5lIElYUDQ2WF9QUk9DRVNTT1JfSURf VkFMVUUgMHg2OTA1NDIwMCAvKiBpbmNsdWRpbmcgSVhQNDU1ICovCisjZGVmaW5lIElYUDQ2WF9Q Uk9DRVNTT1JfSURfTUFTSyAgMHhmZmZmZmZmMAorCisjZGVmaW5lIGNwdV9pc19peHA0MnhfcmV2 X2EwKCkgKChyZWFkX2NwdWlkX2lkKCkgJiAoSVhQNDJYX1BST0NFU1NPUl9JRF9NQVNLIHwgMHhG KSkgPT0gXAorCQkJCUlYUDQyWF9QUk9DRVNTT1JfSURfVkFMVUUpCisjZGVmaW5lIGNwdV9pc19p eHA0MngoKSAoKHJlYWRfY3B1aWRfaWQoKSAmIElYUDQyWF9QUk9DRVNTT1JfSURfTUFTSykgPT0g XAorCQkJIElYUDQyWF9QUk9DRVNTT1JfSURfVkFMVUUpCisjZGVmaW5lIGNwdV9pc19peHA0M3go KSAoKHJlYWRfY3B1aWRfaWQoKSAmIElYUDQzWF9QUk9DRVNTT1JfSURfTUFTSykgPT0gXAorCQkJ IElYUDQzWF9QUk9DRVNTT1JfSURfVkFMVUUpCisjZGVmaW5lIGNwdV9pc19peHA0NngoKSAoKHJl YWRfY3B1aWRfaWQoKSAmIElYUDQ2WF9QUk9DRVNTT1JfSURfTUFTSykgPT0gXAorCQkJIElYUDQ2 WF9QUk9DRVNTT1JfSURfVkFMVUUpCisKKy8qCisgKiBUaGUgQ1BVIElEIG5ldmVyIGNoYW5nZXMg YXQgcnVuIHRpbWUsIHNvIHdlIG1pZ2h0IGFzIHdlbGwgdGVsbCB0aGUKKyAqIGNvbXBpbGVyIHRo YXQgaXQncyBjb25zdGFudC4gIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIHJlYWQgdGhlIENQVSBJRAor ICogcmF0aGVyIHRoYW4gZGlyZWN0bHkgcmVhZGluZyBwcm9jZXNzb3JfaWQgb3IgcmVhZF9jcHVp ZCgpIGRpcmVjdGx5LgorICovCitzdGF0aWMgaW5saW5lIHUzMiBfX2F0dHJpYnV0ZV9jb25zdF9f IHJlYWRfY3B1aWRfaWQodm9pZCkKK3sKKwl1MzIgdmFsOworCWFzbSgibXJjIHAxNSwgMCwgJTAs IGMwLCBjMCwgMCIgOiAiPXIiICh2YWwpIDogOiAiY2MiKTsKKworCXJldHVybiB2YWw7Cit9CisK K3N0YXRpYyBpbmxpbmUgdTMyIGl4cDR4eF9yZWFkX2ZlYXR1cmVfYml0cyh2b2lkKQoreworCXUz MiB2YWwgPSB+SVhQNFhYX0VYUF9DRkcyOworCisJaWYgKGNwdV9pc19peHA0MnhfcmV2X2EwKCkp CisJCXJldHVybiBJWFA0MlhfRkVBVFVSRV9NQVNLICYgfihJWFA0WFhfRkVBVFVSRV9SQ09NUCB8 CisJCQkJCSAgICAgICBJWFA0WFhfRkVBVFVSRV9BRVMpOworCWlmIChjcHVfaXNfaXhwNDJ4KCkp CisJCXJldHVybiB2YWwgJiBJWFA0MlhfRkVBVFVSRV9NQVNLOworCWlmIChjcHVfaXNfaXhwNDN4 KCkpCisJCXJldHVybiB2YWwgJiBJWFA0M1hfRkVBVFVSRV9NQVNLOworCXJldHVybiB2YWwgJiBJ WFA0NlhfRkVBVFVSRV9NQVNLOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgaXhwNHh4X3dyaXRl X2ZlYXR1cmVfYml0cyh1MzIgdmFsdWUpCit7CisJSVhQNFhYX0VYUF9DRkcyID0gfnZhbHVlOwor fQorCisjZW5kaWYgIC8qIF9BU01fQVJDSF9DUFVfSCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0v bWFjaC1peHA0eHgvaW5jbHVkZS9tYWNoL2l4cDR4eC1oZWFkLmggYi9hcmNoL2FybS9tYWNoLWl4 cDR4eC9pbmNsdWRlL21hY2gvaXhwNHh4LWhlYWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi5iM2QzNTdmCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vbWFjaC1peHA0 eHgvaW5jbHVkZS9tYWNoL2l4cDR4eC1oZWFkLmgKQEAgLTAsMCArMSwxNiBAQAorI2luY2x1ZGUg PG1hY2gvaXhwNHh4LXJlZ3MuaD4KKyNpbmNsdWRlIDxhc20vYmFyZWJveC1hcm0taGVhZC5oPgor CisubWFjcm8JaXhwNHh4X2NwdV9sb3dsZXZlbF9pbml0CisKKwlhcm1fY3B1X2xvd2xldmVsX2lu aXQgcjAKKworCWFkZCBwYywgIygweDUwMDAwMDAwIC0gNCkgLyoganVtcCB0byBST00gYXJlYSAq LworCisJbW92IHIwLCAjKElYUDRYWF9FWFBfQ0ZHMCAmIDB4RkZGRjAwMDApCisJb3JyIHIwLCAj KElYUDRYWF9FWFBfQ0ZHMCAmIDB4MDAwMEZGRkYpCisJbGRyIHIxLCBbcjBdCisJYW5kIHIxLCBy MSwgI34weDgwMDAwMDAwIC8qIHVubWFwIEVYUCBidXMgZnJvbSAweDAgKi8KKwlzdHIgcjEsIFty MF0KKworLmVuZG0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtaXhwNHh4L2luY2x1ZGUvbWFj aC9peHA0eHgtcmVncy5oIGIvYXJjaC9hcm0vbWFjaC1peHA0eHgvaW5jbHVkZS9tYWNoL2l4cDR4 eC1yZWdzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGE0ZGM4YQotLS0g L2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL21hY2gtaXhwNHh4L2luY2x1ZGUvbWFjaC9peHA0eHgt cmVncy5oCkBAIC0wLDAgKzEsMzY1IEBACisvKgorICogUmVnaXN0ZXIgZGVmaW5pdGlvbnMgZm9y IElYUDR4eCBjaGlwc2V0LgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMiBJbnRlbCBDb3Jwb3Jh dGlvbi4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA0IE1vbnRhVmlzdGEgU29mdHdhcmUsIElu Yy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqLworCisjaWZuZGVmIF9BU01fQVJNX0lY UDRYWF9IXworI2RlZmluZSBfQVNNX0FSTV9JWFA0WFhfSF8KKworI2lmZGVmIF9fQVNTRU1CTEVS X18KKyNkZWZpbmUgSVhQNFhYX1JFRyhyZWcpICAocmVnKQorI2Vsc2UKKyNkZWZpbmUgSVhQNFhY X1JFRyhyZWcpICAoKih2b2xhdGlsZSB1MzIgKikocmVnKSkKKyNkZWZpbmUgSVhQNFhYX0JBU0Uo cmVnKSAoKHUzMiopKHJlZykpCisjZW5kaWYKKworLyogRXhwYW5zaW9uIEJ1cyByZWdpb24gKi8K KworLyogUXVldWUgTWFuYWdlciAqLworI2RlZmluZSBJWFA0WFhfUU1HUl9CQVNFICAgICAgICAg ICAgICAoMHg2MDAwMDAwMCkKKyNkZWZpbmUgSVhQNFhYX1FNR1JfUkVHSU9OX1NJWkUgICAgICAg KDB4MDAwMDQwMDApCisKKworLyogUENJIENvbmZpZyByZWdpc3RlcnMgKi8KKyNkZWZpbmUgSVhQ NFhYX1BDSV9DRkdfQkFTRSAgICAgICAgICAgKDB4QzAwMDAwMDApCisjZGVmaW5lIElYUDRYWF9Q Q0lfQ0ZHX1JFR0lPTl9TSVpFICAgICgweDAwMDAxMDAwKQorCisvKiBQZXJpcGhlcmFsIHNwYWNl ICovCisjZGVmaW5lIElYUDRYWF9QRVJJUEhFUkFMX0JBU0UgICAgICAgICgweEM4MDAwMDAwKQor I2RlZmluZSBJWFA0WFhfUEVSSVBIRVJBTF9SRUdJT05fU0laRSAoMHgwMDAxMzAwMCkKKworLyoK KyAqIERlYnVnIFVBUlQKKyAqCisgKiBUaGlzIGlzIGJhc2ljYWxseSBhIHJlbWFwIG9mIFVBUlQx IGludG8gYSByZWdpb24gdGhhdCBpcyBzZWN0aW9uCisgKiBhbGlnbmVkIHNvIHRoYXQgaXQgY2Fu IGJlIHVzZWQgd2l0aCB0aGUgbG93LWxldmVsIGRlYnVnIGNvZGUuCisgKi8KKyNkZWZpbmUgSVhQ NFhYX0RFQlVHX1VBUlRfQkFTRSAgICAgICAgKDB4QzgwMDAwMDApCisjZGVmaW5lIElYUDRYWF9E RUJVR19VQVJUX1JFR0lPTl9TSVpFICgweDAwMDAxMDAwKQorCisvKiBFeHBhbnNpb24gQnVzIENv bnRyb2xsZXIgcmVnaXN0ZXJzLiAqLworI2RlZmluZSBJWFA0WFhfRVhQX0NTMCAgICAgICBJWFA0 WFhfUkVHKDB4QzQwMDAwMDApCisjZGVmaW5lIElYUDRYWF9FWFBfQ1MxICAgICAgIElYUDRYWF9S RUcoMHhDNDAwMDAwNCkKKyNkZWZpbmUgSVhQNFhYX0VYUF9DUzIgICAgICAgSVhQNFhYX1JFRygw eEM0MDAwMDA4KQorI2RlZmluZSBJWFA0WFhfRVhQX0NTMyAgICAgICBJWFA0WFhfUkVHKDB4QzQw MDAwMEMpCisjZGVmaW5lIElYUDRYWF9FWFBfQ1M0ICAgICAgIElYUDRYWF9SRUcoMHhDNDAwMDAx MCkKKyNkZWZpbmUgSVhQNFhYX0VYUF9DUzUgICAgICAgSVhQNFhYX1JFRygweEM0MDAwMDE0KQor I2RlZmluZSBJWFA0WFhfRVhQX0NTNiAgICAgICBJWFA0WFhfUkVHKDB4QzQwMDAwMTgpCisjZGVm aW5lIElYUDRYWF9FWFBfQ1M3ICAgICAgIElYUDRYWF9SRUcoMHhDNDAwMDAxQykKKworI2RlZmlu ZSBJWFA0WFhfRVhQX0JBU0UobikgICgweDUwMDAwMDAwICsgKG4pICogMTAwMDAwMCkKKworI2Rl ZmluZSBJWFA0WFhfRVhQX0VOICAgICAgICAweDgwMDAwMDAwCisjZGVmaW5lIElYUDRYWF9FWFBf VDEobikgICAgKDB4MTAwMDAwMDAgKiAobikpIC8qIHZhbGlkOiAwIC0gMyAqLworI2RlZmluZSBJ WFA0WFhfRVhQX1QyKG4pICAgICgweDA0MDAwMDAwICogKG4pKSAvKiB2YWxpZDogMCAtIDMgKi8K KyNkZWZpbmUgSVhQNFhYX0VYUF9UMyhuKSAgICAoMHgwMDQwMDAwMCAqIChuKSkgLyogdmFsaWQ6 IDAgLSAxNSAqLworI2RlZmluZSBJWFA0WFhfRVhQX1Q0KG4pICAgICgweDAwMTAwMDAwICogKG4p KSAvKiB2YWxpZDogMCAtIDMgKi8KKyNkZWZpbmUgSVhQNFhYX0VYUF9UNShuKSAgICAoMHgwMDAx MDAwMCAqIChuKSkgLyogdmFsaWQ6IDAgLSAxNSAqLworI2RlZmluZSBJWFA0WFhfRVhQX0lOVEVM ICAgICAweDAwMDAwMDAwCisjZGVmaW5lIElYUDRYWF9FWFBfTU9UTyAgICAgIDB4MDAwMDQwMDAK KyNkZWZpbmUgSVhQNFhYX0VYUF9IUEkgICAgICAgMHgwMDAwODAwMAorI2RlZmluZSBJWFA0WFhf RVhQX0JJVFMobikgICgweDAwMDAwNDAwICogKChuKSAtIDkpKSAvKiB2YWxpZDogOSAtIDI0ICov CisjZGVmaW5lIElYUDRYWF9FWFBfQllURV9SRDE2IDB4MDAwMDAwNDAKKyNkZWZpbmUgSVhQNFhY X0VYUF9IUkRZX1BPTCAgMHgwMDAwMDAyMAorI2RlZmluZSBJWFA0WFhfRVhQX01VWF9FTiAgICAw eDAwMDAwMDEwCisjZGVmaW5lIElYUDRYWF9FWFBfU1BMVF9FTiAgIDB4MDAwMDAwMDgKKyNkZWZp bmUgSVhQNFhYX0VYUF9XUl9FTiAgICAgMHgwMDAwMDAwMgorI2RlZmluZSBJWFA0WFhfRVhQX0JZ VEVfRU4gICAweDAwMDAwMDAxCisKKyNkZWZpbmUgSVhQNFhYX0VYUF9DRkcwICAgICAgSVhQNFhY X1JFRygweEM0MDAwMDIwKQorI2RlZmluZSBJWFA0WFhfRVhQX0NGRzEgICAgICBJWFA0WFhfUkVH KDB4QzQwMDAwMjQpCisjZGVmaW5lIElYUDRYWF9FWFBfQ0ZHMiAgICAgIElYUDRYWF9SRUcoMHhD NDAwMDAyOCkKKyNkZWZpbmUgSVhQNFhYX0VYUF9DRkczICAgICAgSVhQNFhYX1JFRygweEM0MDAw MDJDKQorCisKKy8qIFBlcmlwaGVyYWwgU3BhY2UgUmVnaXN0ZXIgUmVnaW9uIEJhc2UgQWRkcmVz c2VzICovCisjZGVmaW5lIElYUDRYWF9VQVJUMV9CQVNFICAgIElYUDRYWF9CQVNFKElYUDRYWF9Q RVJJUEhFUkFMX0JBU0UgKyAweDAwMDApCisjZGVmaW5lIElYUDRYWF9VQVJUMl9CQVNFICAgIElY UDRYWF9CQVNFKElYUDRYWF9QRVJJUEhFUkFMX0JBU0UgKyAweDEwMDApCisjZGVmaW5lIElYUDRY WF9QTVVfQkFTRSAgICAgIElYUDRYWF9CQVNFKElYUDRYWF9QRVJJUEhFUkFMX0JBU0UgKyAweDIw MDApCisjZGVmaW5lIElYUDRYWF9JTlRDX0JBU0UgICAgIElYUDRYWF9CQVNFKElYUDRYWF9QRVJJ UEhFUkFMX0JBU0UgKyAweDMwMDApCisjZGVmaW5lIElYUDRYWF9HUElPX0JBU0UgICAgIElYUDRY WF9CQVNFKElYUDRYWF9QRVJJUEhFUkFMX0JBU0UgKyAweDQwMDApCisjZGVmaW5lIElYUDRYWF9O UEVBX0JBU0UgICAgIElYUDRYWF9CQVNFKElYUDRYWF9QRVJJUEhFUkFMX0JBU0UgKyAweDYwMDAp CisjZGVmaW5lIElYUDRYWF9OUEVCX0JBU0UgICAgIElYUDRYWF9CQVNFKElYUDRYWF9QRVJJUEhF UkFMX0JBU0UgKyAweDcwMDApCisjZGVmaW5lIElYUDRYWF9OUEVDX0JBU0UgICAgIElYUDRYWF9C QVNFKElYUDRYWF9QRVJJUEhFUkFMX0JBU0UgKyAweDgwMDApCisjZGVmaW5lIElYUDRYWF9FdGhC X0JBU0UgICAgIElYUDRYWF9CQVNFKElYUDRYWF9QRVJJUEhFUkFMX0JBU0UgKyAweDkwMDApCisj ZGVmaW5lIElYUDRYWF9FdGhDX0JBU0UgICAgIElYUDRYWF9CQVNFKElYUDRYWF9QRVJJUEhFUkFM X0JBU0UgKyAweEEwMDApCisjZGVmaW5lIElYUDRYWF9VU0JfQkFTRSAgICAgIElYUDRYWF9CQVNF KElYUDRYWF9QRVJJUEhFUkFMX0JBU0UgKyAweEIwMDApCisvKiBJWFA0Nnggb25seSAqLworI2Rl ZmluZSBJWFA0WFhfRXRoQV9CQVNFICAgICBJWFA0WFhfQkFTRShJWFA0WFhfUEVSSVBIRVJBTF9C QVNFICsgMHhDMDAwKQorI2RlZmluZSBJWFA0WFhfRXRoQjFfQkFTRSAgICBJWFA0WFhfQkFTRShJ WFA0WFhfUEVSSVBIRVJBTF9CQVNFICsgMHhEMDAwKQorI2RlZmluZSBJWFA0WFhfRXRoQjJfQkFT RSAgICBJWFA0WFhfQkFTRShJWFA0WFhfUEVSSVBIRVJBTF9CQVNFICsgMHhFMDAwKQorI2RlZmlu ZSBJWFA0WFhfRXRoQjNfQkFTRSAgICBJWFA0WFhfQkFTRShJWFA0WFhfUEVSSVBIRVJBTF9CQVNF ICsgMHhGMDAwKQorI2RlZmluZSBJWFA0WFhfVElNRVNZTkNfQkFTRSBJWFA0WFhfQkFTRShJWFA0 WFhfUEVSSVBIRVJBTF9CQVNFICsgMHgxMDAwMCkKKyNkZWZpbmUgSVhQNFhYX0kyQ19CQVNFICAg ICAgSVhQNFhYX0JBU0UoSVhQNFhYX1BFUklQSEVSQUxfQkFTRSArIDB4MTEwMDApCisjZGVmaW5l IElYUDRYWF9TU1BfQkFTRSAgICAgIElYUDRYWF9CQVNFKElYUDRYWF9QRVJJUEhFUkFMX0JBU0Ug KyAweDEyMDAwKQorCisvKgorICBDb25zdGFudHMgdG8gbWFrZSBpdCBlYXN5IHRvIGFjY2VzcyBJ bnRlcnJ1cHQgQ29udHJvbGxlciByZWdpc3RlcnMKKyAqLworI2RlZmluZSBJWFA0WFhfSUNQUl9P RkZTRVQgICAweDAwIC8qIEludGVycnVwdCBTdGF0dXMgKi8KKyNkZWZpbmUgSVhQNFhYX0lDTVJf T0ZGU0VUICAgMHgwNCAvKiBJbnRlcnJ1cHQgRW5hYmxlICovCisjZGVmaW5lIElYUDRYWF9JQ0xS X09GRlNFVCAgIDB4MDggLyogSW50ZXJydXB0IElSUS9GSVEgU2VsZWN0ICovCisjZGVmaW5lIElY UDRYWF9JQ0lQX09GRlNFVCAgIDB4MEMgLyogSVJRIFN0YXR1cyAqLworI2RlZmluZSBJWFA0WFhf SUNGUF9PRkZTRVQgICAweDEwIC8qIEZJUSBTdGF0dXMgKi8KKyNkZWZpbmUgSVhQNFhYX0lDSFJf T0ZGU0VUICAgMHgxNCAvKiBJbnRlcnJ1cHQgUHJpb3JpdHkgKi8KKyNkZWZpbmUgSVhQNFhYX0lD SUhfT0ZGU0VUICAgMHgxOCAvKiBJUlEgSGlnaGVzdCBQcmkgSW50ICovCisjZGVmaW5lIElYUDRY WF9JQ0ZIX09GRlNFVCAgIDB4MUMgLyogRklRIEhpZ2hlc3QgUHJpIEludCAqLworCisvKiBJWFA0 NjUtb25seSAqLworI2RlZmluZSBJWFA0WFhfSUNQUjJfT0ZGU0VUICAweDIwIC8qIEludGVycnVw dCBTdGF0dXMgMiAqLworI2RlZmluZSBJWFA0WFhfSUNNUjJfT0ZGU0VUICAweDI0IC8qIEludGVy cnVwdCBFbmFibGUgMiAqLworI2RlZmluZSBJWFA0WFhfSUNMUjJfT0ZGU0VUICAweDI4IC8qIElu dGVycnVwdCBJUlEvRklRIFNlbGVjdCAyICovCisjZGVmaW5lIElYUDRYWF9JQ0lQMl9PRkZTRVQg IDB4MkMgLyogSVJRIFN0YXR1cyAqLworI2RlZmluZSBJWFA0WFhfSUNGUDJfT0ZGU0VUICAweDMw IC8qIEZJUSBTdGF0dXMgKi8KKyNkZWZpbmUgSVhQNFhYX0lDRUVOX09GRlNFVCAgMHgzNCAvKiBF cnJvciBIaWdoIFByaSBFbmFibGUgKi8KKworCisvKiBJbnRlcnJ1cHQgQ29udHJvbGxlciBSZWdp c3RlciBEZWZpbml0aW9ucy4gKi8KKyNkZWZpbmUgSVhQNFhYX0lOVENfUkVHKHgpICAgKCh2b2xh dGlsZSB1MzIgKikoSVhQNFhYX0lOVENfQkFTRSArICh4KSkpCisKKyNkZWZpbmUgSVhQNFhYX0lD UFIgICAgICAgICAgSVhQNFhYX0lOVENfUkVHKElYUDRYWF9JQ1BSX09GRlNFVCkKKyNkZWZpbmUg SVhQNFhYX0lDTVIgICAgICAgICAgSVhQNFhYX0lOVENfUkVHKElYUDRYWF9JQ01SX09GRlNFVCkK KyNkZWZpbmUgSVhQNFhYX0lDTFIgICAgICAgICAgSVhQNFhYX0lOVENfUkVHKElYUDRYWF9JQ0xS X09GRlNFVCkKKyNkZWZpbmUgSVhQNFhYX0lDSVAgICAgICAgICAgSVhQNFhYX0lOVENfUkVHKElY UDRYWF9JQ0lQX09GRlNFVCkKKyNkZWZpbmUgSVhQNFhYX0lDRlAgICAgICAgICAgSVhQNFhYX0lO VENfUkVHKElYUDRYWF9JQ0ZQX09GRlNFVCkKKyNkZWZpbmUgSVhQNFhYX0lDSFIgICAgICAgICAg SVhQNFhYX0lOVENfUkVHKElYUDRYWF9JQ0hSX09GRlNFVCkKKyNkZWZpbmUgSVhQNFhYX0lDSUgg ICAgICAgICAgSVhQNFhYX0lOVENfUkVHKElYUDRYWF9JQ0lIX09GRlNFVCkKKyNkZWZpbmUgSVhQ NFhYX0lDRkggICAgICAgICAgSVhQNFhYX0lOVENfUkVHKElYUDRYWF9JQ0ZIX09GRlNFVCkKKyNk ZWZpbmUgSVhQNFhYX0lDUFIyICAgICAgICAgSVhQNFhYX0lOVENfUkVHKElYUDRYWF9JQ1BSMl9P RkZTRVQpCisjZGVmaW5lIElYUDRYWF9JQ01SMiAgICAgICAgIElYUDRYWF9JTlRDX1JFRyhJWFA0 WFhfSUNNUjJfT0ZGU0VUKQorI2RlZmluZSBJWFA0WFhfSUNMUjIgICAgICAgICBJWFA0WFhfSU5U Q19SRUcoSVhQNFhYX0lDTFIyX09GRlNFVCkKKyNkZWZpbmUgSVhQNFhYX0lDSVAyICAgICAgICAg SVhQNFhYX0lOVENfUkVHKElYUDRYWF9JQ0lQMl9PRkZTRVQpCisjZGVmaW5lIElYUDRYWF9JQ0ZQ MiAgICAgICAgIElYUDRYWF9JTlRDX1JFRyhJWFA0WFhfSUNGUDJfT0ZGU0VUKQorI2RlZmluZSBJ WFA0WFhfSUNFRU4gICAgICAgICBJWFA0WFhfSU5UQ19SRUcoSVhQNFhYX0lDRUVOX09GRlNFVCkK KworLyogQ29uc3RhbnRzIHRvIG1ha2UgaXQgZWFzeSB0byBhY2Nlc3MgR1BJTyByZWdpc3RlcnMg Ki8KKyNkZWZpbmUgSVhQNFhYX0dQSU9fR1BPVVRSX09GRlNFVCAgIDB4MDAKKyNkZWZpbmUgSVhQ NFhYX0dQSU9fR1BPRVJfT0ZGU0VUICAgIDB4MDQKKyNkZWZpbmUgSVhQNFhYX0dQSU9fR1BJTlJf T0ZGU0VUICAgIDB4MDgKKyNkZWZpbmUgSVhQNFhYX0dQSU9fR1BJU1JfT0ZGU0VUICAgIDB4MEMK KyNkZWZpbmUgSVhQNFhYX0dQSU9fR1BJVDFSX09GRlNFVCAgIDB4MTAKKyNkZWZpbmUgSVhQNFhY X0dQSU9fR1BJVDJSX09GRlNFVCAgIDB4MTQKKyNkZWZpbmUgSVhQNFhYX0dQSU9fR1BDTEtSX09G RlNFVCAgIDB4MTgKKyNkZWZpbmUgSVhQNFhYX0dQSU9fR1BEQlNFTFJfT0ZGU0VUIDB4MUMKKwor LyogR1BJTyBSZWdpc3RlciBEZWZpbml0aW9ucyAtIHBlcmZvcm0gb25seSAzMi1iaXQgcmVhZHMv d3JpdGVzICovCisjZGVmaW5lIElYUDRYWF9HUElPX1JFRyh4KSAgICgodm9sYXRpbGUgdTMyICop KElYUDRYWF9HUElPX0JBU0UgKyAoeCkpKQorCisjZGVmaW5lIElYUDRYWF9HUElPX0dQT1VUUiAg IElYUDRYWF9HUElPX1JFRyhJWFA0WFhfR1BJT19HUE9VVFJfT0ZGU0VUKQorI2RlZmluZSBJWFA0 WFhfR1BJT19HUE9FUiAgICBJWFA0WFhfR1BJT19SRUcoSVhQNFhYX0dQSU9fR1BPRVJfT0ZGU0VU KQorI2RlZmluZSBJWFA0WFhfR1BJT19HUElOUiAgICBJWFA0WFhfR1BJT19SRUcoSVhQNFhYX0dQ SU9fR1BJTlJfT0ZGU0VUKQorI2RlZmluZSBJWFA0WFhfR1BJT19HUElTUiAgICBJWFA0WFhfR1BJ T19SRUcoSVhQNFhYX0dQSU9fR1BJU1JfT0ZGU0VUKQorI2RlZmluZSBJWFA0WFhfR1BJT19HUElU MVIgICBJWFA0WFhfR1BJT19SRUcoSVhQNFhYX0dQSU9fR1BJVDFSX09GRlNFVCkKKyNkZWZpbmUg SVhQNFhYX0dQSU9fR1BJVDJSICAgSVhQNFhYX0dQSU9fUkVHKElYUDRYWF9HUElPX0dQSVQyUl9P RkZTRVQpCisjZGVmaW5lIElYUDRYWF9HUElPX0dQQ0xLUiAgIElYUDRYWF9HUElPX1JFRyhJWFA0 WFhfR1BJT19HUENMS1JfT0ZGU0VUKQorI2RlZmluZSBJWFA0WFhfR1BJT19HUERCU0VMUiBJWFA0 WFhfR1BJT19SRUcoSVhQNFhYX0dQSU9fR1BEQlNFTFJfT0ZGU0VUKQorCisvKiBHUElPIHJlZ2lz dGVyIGJpdCBkZWZpbml0aW9ucyAqLworCisvKiBJbnRlcnJ1cHQgc3R5bGVzICovCisjZGVmaW5l IElYUDRYWF9HUElPX1NUWUxFX0FDVElWRV9ISUdIICAweDAKKyNkZWZpbmUgSVhQNFhYX0dQSU9f U1RZTEVfQUNUSVZFX0xPVyAgIDB4MQorI2RlZmluZSBJWFA0WFhfR1BJT19TVFlMRV9SSVNJTkdf RURHRSAgMHgyCisjZGVmaW5lIElYUDRYWF9HUElPX1NUWUxFX0ZBTExJTkdfRURHRSAweDMKKyNk ZWZpbmUgSVhQNFhYX0dQSU9fU1RZTEVfVFJBTlNJVElPTkFMIDB4NAorCisvKiBNYXNrIHVzZWQg dG8gY2xlYXIgaW50ZXJydXB0IHN0eWxlcyAqLworI2RlZmluZSBJWFA0WFhfR1BJT19TVFlMRV9D TEVBUiAgICAgICAgMHg3CisjZGVmaW5lIElYUDRYWF9HUElPX1NUWUxFX1NJWkUgICAgICAgICAz CisKKy8qIE9wZXJhdGluZyBTeXN0ZW0gVGltZXIgUmVnaXN0ZXIgRGVmaW5pdGlvbnMuICovCisj ZGVmaW5lIElYUDRYWF9PU1RTICAgICAgICAgIElYUDRYWF9SRUcoMHhDODAwNTAwMCkgLyogQ29u dGluaW91cyBUaW1lU3RhbXAgKi8KKyNkZWZpbmUgSVhQNFhYX09TVDEgICAgICAgICAgSVhQNFhY X1JFRygweEM4MDA1MDA0KSAvKiBUaW1lciAxIFRpbWVzdGFtcCAqLworI2RlZmluZSBJWFA0WFhf T1NSVDEgICAgICAgICBJWFA0WFhfUkVHKDB4QzgwMDUwMDgpIC8qIFRpbWVyIDEgUmVsb2FkICov CisjZGVmaW5lIElYUDRYWF9PU1QyICAgICAgICAgIElYUDRYWF9SRUcoMHhDODAwNTAwQykgLyog VGltZXIgMiBUaW1lc3RhbXAgKi8KKyNkZWZpbmUgSVhQNFhYX09TUlQyICAgICAgICAgSVhQNFhY X1JFRygweEM4MDA1MDEwKSAvKiBUaW1lciAyIFJlbG9hZCAqLworI2RlZmluZSBJWFA0WFhfT1NX VCAgICAgICAgICBJWFA0WFhfUkVHKDB4QzgwMDUwMTQpIC8qIFdhdGNoZG9nIFRpbWVyICovCisj ZGVmaW5lIElYUDRYWF9PU1dFICAgICAgICAgIElYUDRYWF9SRUcoMHhDODAwNTAxOCkgLyogV2F0 Y2hkb2cgRW5hYmxlICovCisjZGVmaW5lIElYUDRYWF9PU1dLICAgICAgICAgIElYUDRYWF9SRUco MHhDODAwNTAxQykgLyogV2F0Y2hkb2cgS2V5ICovCisjZGVmaW5lIElYUDRYWF9PU1NUICAgICAg ICAgIElYUDRYWF9SRUcoMHhDODAwNTAyMCkgLyogVGltZXIgU3RhdHVzICovCisKKy8qIFRpbWVy IHJlZ2lzdGVyIHZhbHVlcyBhbmQgYml0IGRlZmluaXRpb25zICovCisjZGVmaW5lIElYUDRYWF9P U1RfRU5BQkxFICAgICAgICAgICAgMHgwMDAwMDAwMQorI2RlZmluZSBJWFA0WFhfT1NUX09ORV9T SE9UICAgICAgICAgIDB4MDAwMDAwMDIKKy8qIExvdyBvcmRlciBiaXRzIG9mIHJlbG9hZCB2YWx1 ZSBpZ25vcmVkICovCisjZGVmaW5lIElYUDRYWF9PU1RfUkVMT0FEX01BU0sgICAgICAgMHgwMDAw MDAwMworI2RlZmluZSBJWFA0WFhfT1NUX0RJU0FCTEVEICAgICAgICAgIDB4MDAwMDAwMDAKKyNk ZWZpbmUgSVhQNFhYX09TU1RfVElNRVJfMV9QRU5EICAgICAweDAwMDAwMDAxCisjZGVmaW5lIElY UDRYWF9PU1NUX1RJTUVSXzJfUEVORCAgICAgMHgwMDAwMDAwMgorI2RlZmluZSBJWFA0WFhfT1NT VF9USU1FUl9UU19QRU5EICAgIDB4MDAwMDAwMDQKKyNkZWZpbmUgSVhQNFhYX09TU1RfVElNRVJf V0RPR19QRU5EICAweDAwMDAwMDA4CisjZGVmaW5lIElYUDRYWF9PU1NUX1RJTUVSX1dBUk1fUkVT RVQgMHgwMDAwMDAxMAorCisjZGVmaW5lIElYUDRYWF9XRFRfS0VZICAgICAgICAgICAgICAgMHgw MDAwNDgyRQorCisjZGVmaW5lIElYUDRYWF9XRFRfUkVTRVRfRU5BQkxFICAgICAgMHgwMDAwMDAw MQorI2RlZmluZSBJWFA0WFhfV0RUX0lSUV9FTkFCTEUgICAgICAgIDB4MDAwMDAwMDIKKyNkZWZp bmUgSVhQNFhYX1dEVF9DT1VOVF9FTkFCTEUgICAgICAweDAwMDAwMDA0CisKKworLyogQ29uc3Rh bnRzIHRvIG1ha2UgaXQgZWFzeSB0byBhY2Nlc3MgUENJIENvbnRyb2wvU3RhdHVzIHJlZ2lzdGVy cyAqLworI2RlZmluZSBQQ0lfTlBfQURfT0ZGU0VUICAgICAgICAgICAweDAwCisjZGVmaW5lIFBD SV9OUF9DQkVfT0ZGU0VUICAgICAgICAgIDB4MDQKKyNkZWZpbmUgUENJX05QX1dEQVRBX09GRlNF VCAgICAgICAgMHgwOAorI2RlZmluZSBQQ0lfTlBfUkRBVEFfT0ZGU0VUICAgICAgICAweDBjCisj ZGVmaW5lIFBDSV9DUlBfQURfQ0JFX09GRlNFVCAgICAgIDB4MTAKKyNkZWZpbmUgUENJX0NSUF9X REFUQV9PRkZTRVQgICAgICAgMHgxNAorI2RlZmluZSBQQ0lfQ1JQX1JEQVRBX09GRlNFVCAgICAg ICAweDE4CisjZGVmaW5lIFBDSV9DU1JfT0ZGU0VUICAgICAgICAgICAgIDB4MWMKKyNkZWZpbmUg UENJX0lTUl9PRkZTRVQgICAgICAgICAgICAgMHgyMAorI2RlZmluZSBQQ0lfSU5URU5fT0ZGU0VU ICAgICAgICAgICAweDI0CisjZGVmaW5lIFBDSV9ETUFDVFJMX09GRlNFVCAgICAgICAgIDB4MjgK KyNkZWZpbmUgUENJX0FIQk1FTUJBU0VfT0ZGU0VUICAgICAgMHgyYworI2RlZmluZSBQQ0lfQUhC SU9CQVNFX09GRlNFVCAgICAgICAweDMwCisjZGVmaW5lIFBDSV9QQ0lNRU1CQVNFX09GRlNFVCAg ICAgIDB4MzQKKyNkZWZpbmUgUENJX0FIQkRPT1JCRUxMX09GRlNFVCAgICAgMHgzOAorI2RlZmlu ZSBQQ0lfUENJRE9PUkJFTExfT0ZGU0VUICAgICAweDNDCisjZGVmaW5lIFBDSV9BVFBETUEwX0FI QkFERFJfT0ZGU0VUIDB4NDAKKyNkZWZpbmUgUENJX0FUUERNQTBfUENJQUREUl9PRkZTRVQgMHg0 NAorI2RlZmluZSBQQ0lfQVRQRE1BMF9MRU5BRERSX09GRlNFVCAweDQ4CisjZGVmaW5lIFBDSV9B VFBETUExX0FIQkFERFJfT0ZGU0VUIDB4NEMKKyNkZWZpbmUgUENJX0FUUERNQTFfUENJQUREUl9P RkZTRVQgMHg1MAorI2RlZmluZSBQQ0lfQVRQRE1BMV9MRU5BRERSX09GRlNFVCAweDU0CisKKy8q IFBDSSBDb250cm9sL1N0YXR1cyBSZWdpc3RlcnMgKi8KKyNkZWZpbmUgSVhQNFhYX1BDSV9DU1Io eCkgKCh2b2xhdGlsZSB1MzIgKikoSVhQNFhYX1BDSV9DRkdfQkFTRSArICh4KSkpCisKKyNkZWZp bmUgUENJX05QX0FEICAgICAgICAgICAgSVhQNFhYX1BDSV9DU1IoUENJX05QX0FEX09GRlNFVCkK KyNkZWZpbmUgUENJX05QX0NCRSAgICAgICAgICAgSVhQNFhYX1BDSV9DU1IoUENJX05QX0NCRV9P RkZTRVQpCisjZGVmaW5lIFBDSV9OUF9XREFUQSAgICAgICAgIElYUDRYWF9QQ0lfQ1NSKFBDSV9O UF9XREFUQV9PRkZTRVQpCisjZGVmaW5lIFBDSV9OUF9SREFUQSAgICAgICAgIElYUDRYWF9QQ0lf Q1NSKFBDSV9OUF9SREFUQV9PRkZTRVQpCisjZGVmaW5lIFBDSV9DUlBfQURfQ0JFICAgICAgIElY UDRYWF9QQ0lfQ1NSKFBDSV9DUlBfQURfQ0JFX09GRlNFVCkKKyNkZWZpbmUgUENJX0NSUF9XREFU QSAgICAgICAgSVhQNFhYX1BDSV9DU1IoUENJX0NSUF9XREFUQV9PRkZTRVQpCisjZGVmaW5lIFBD SV9DUlBfUkRBVEEgICAgICAgIElYUDRYWF9QQ0lfQ1NSKFBDSV9DUlBfUkRBVEFfT0ZGU0VUKQor I2RlZmluZSBQQ0lfQ1NSICAgICAgICAgICAgICBJWFA0WFhfUENJX0NTUihQQ0lfQ1NSX09GRlNF VCkKKyNkZWZpbmUgUENJX0lTUiAgICAgICAgICAgICAgSVhQNFhYX1BDSV9DU1IoUENJX0lTUl9P RkZTRVQpCisjZGVmaW5lIFBDSV9JTlRFTiAgICAgICAgICAgIElYUDRYWF9QQ0lfQ1NSKFBDSV9J TlRFTl9PRkZTRVQpCisjZGVmaW5lIFBDSV9ETUFDVFJMICAgICAgICAgIElYUDRYWF9QQ0lfQ1NS KFBDSV9ETUFDVFJMX09GRlNFVCkKKyNkZWZpbmUgUENJX0FIQk1FTUJBU0UgICAgICAgSVhQNFhY X1BDSV9DU1IoUENJX0FIQk1FTUJBU0VfT0ZGU0VUKQorI2RlZmluZSBQQ0lfQUhCSU9CQVNFICAg ICAgICBJWFA0WFhfUENJX0NTUihQQ0lfQUhCSU9CQVNFX09GRlNFVCkKKyNkZWZpbmUgUENJX1BD SU1FTUJBU0UgICAgICAgSVhQNFhYX1BDSV9DU1IoUENJX1BDSU1FTUJBU0VfT0ZGU0VUKQorI2Rl ZmluZSBQQ0lfQUhCRE9PUkJFTEwgICAgICBJWFA0WFhfUENJX0NTUihQQ0lfQUhCRE9PUkJFTExf T0ZGU0VUKQorI2RlZmluZSBQQ0lfUENJRE9PUkJFTEwgICAgICBJWFA0WFhfUENJX0NTUihQQ0lf UENJRE9PUkJFTExfT0ZGU0VUKQorI2RlZmluZSBQQ0lfQVRQRE1BMF9BSEJBRERSICBJWFA0WFhf UENJX0NTUihQQ0lfQVRQRE1BMF9BSEJBRERSX09GRlNFVCkKKyNkZWZpbmUgUENJX0FUUERNQTBf UENJQUREUiAgSVhQNFhYX1BDSV9DU1IoUENJX0FUUERNQTBfUENJQUREUl9PRkZTRVQpCisjZGVm aW5lIFBDSV9BVFBETUEwX0xFTkFERFIgIElYUDRYWF9QQ0lfQ1NSKFBDSV9BVFBETUEwX0xFTkFE RFJfT0ZGU0VUKQorI2RlZmluZSBQQ0lfQVRQRE1BMV9BSEJBRERSICBJWFA0WFhfUENJX0NTUihQ Q0lfQVRQRE1BMV9BSEJBRERSX09GRlNFVCkKKyNkZWZpbmUgUENJX0FUUERNQTFfUENJQUREUiAg SVhQNFhYX1BDSV9DU1IoUENJX0FUUERNQTFfUENJQUREUl9PRkZTRVQpCisjZGVmaW5lIFBDSV9B VFBETUExX0xFTkFERFIgIElYUDRYWF9QQ0lfQ1NSKFBDSV9BVFBETUExX0xFTkFERFJfT0ZGU0VU KQorCisvKiBQQ0kgcmVnaXN0ZXIgdmFsdWVzIGFuZCBiaXQgZGVmaW5pdGlvbnMgKi8KKworLyog Q1NSIGJpdCBkZWZpbml0aW9ucyAqLworI2RlZmluZSBQQ0lfQ1NSX0hPU1QgICAgICAgICAweDAw MDAwMDAxCisjZGVmaW5lIFBDSV9DU1JfQVJCRU4gICAgICAgIDB4MDAwMDAwMDIKKyNkZWZpbmUg UENJX0NTUl9BRFMgICAgICAgICAgMHgwMDAwMDAwNAorI2RlZmluZSBQQ0lfQ1NSX1BEUyAgICAg ICAgICAweDAwMDAwMDA4CisjZGVmaW5lIFBDSV9DU1JfQUJFICAgICAgICAgIDB4MDAwMDAwMTAK KyNkZWZpbmUgUENJX0NTUl9EQlQgICAgICAgICAgMHgwMDAwMDAyMAorI2RlZmluZSBQQ0lfQ1NS X0FTRSAgICAgICAgICAweDAwMDAwMTAwCisjZGVmaW5lIFBDSV9DU1JfSUMgICAgICAgICAgIDB4 MDAwMDgwMDAKKworLyogSVNSIChJbnRlcnJ1cHQgc3RhdHVzKSBSZWdpc3RlciBiaXQgZGVmaW5p dGlvbnMgKi8KKyNkZWZpbmUgUENJX0lTUl9QU0UgICAgICAgICAgMHgwMDAwMDAwMQorI2RlZmlu ZSBQQ0lfSVNSX1BGRSAgICAgICAgICAweDAwMDAwMDAyCisjZGVmaW5lIFBDSV9JU1JfUFBFICAg ICAgICAgIDB4MDAwMDAwMDQKKyNkZWZpbmUgUENJX0lTUl9BSEJFICAgICAgICAgMHgwMDAwMDAw OAorI2RlZmluZSBQQ0lfSVNSX0FQREMgICAgICAgICAweDAwMDAwMDEwCisjZGVmaW5lIFBDSV9J U1JfUEFEQyAgICAgICAgIDB4MDAwMDAwMjAKKyNkZWZpbmUgUENJX0lTUl9BREIgICAgICAgICAg MHgwMDAwMDA0MAorI2RlZmluZSBQQ0lfSVNSX1BEQiAgICAgICAgICAweDAwMDAwMDgwCisKKy8q IElOVEVOIChJbnRlcnJ1cHQgRW5hYmxlKSBSZWdpc3RlciBiaXQgZGVmaW5pdGlvbnMgKi8KKyNk ZWZpbmUgUENJX0lOVEVOX1BTRSAgICAgICAgMHgwMDAwMDAwMQorI2RlZmluZSBQQ0lfSU5URU5f UEZFICAgICAgICAweDAwMDAwMDAyCisjZGVmaW5lIFBDSV9JTlRFTl9QUEUgICAgICAgIDB4MDAw MDAwMDQKKyNkZWZpbmUgUENJX0lOVEVOX0FIQkUgICAgICAgMHgwMDAwMDAwOAorI2RlZmluZSBQ Q0lfSU5URU5fQVBEQyAgICAgICAweDAwMDAwMDEwCisjZGVmaW5lIFBDSV9JTlRFTl9QQURDICAg ICAgIDB4MDAwMDAwMjAKKyNkZWZpbmUgUENJX0lOVEVOX0FEQiAgICAgICAgMHgwMDAwMDA0MAor I2RlZmluZSBQQ0lfSU5URU5fUERCICAgICAgICAweDAwMDAwMDgwCisKKy8qIFNoaWZ0IHZhbHVl IGZvciBieXRlIGVuYWJsZSBvbiBOUCBjbWQvYnl0ZSBlbmFibGUgcmVnaXN0ZXIgKi8KKyNkZWZp bmUgSVhQNFhYX1BDSV9OUF9DQkVfQkVTTCA0CisKKy8qIFBDSSBjb21tYW5kcyBzdXBwb3J0ZWQg YnkgTlAgYWNjZXNzIHVuaXQgKi8KKyNkZWZpbmUgTlBfQ01EX0lPUkVBRCAgICAgICAgMHgyCisj ZGVmaW5lIE5QX0NNRF9JT1dSSVRFICAgICAgIDB4MworI2RlZmluZSBOUF9DTURfQ09ORklHUkVB RCAgICAweEEKKyNkZWZpbmUgTlBfQ01EX0NPTkZJR1dSSVRFICAgMHhCCisjZGVmaW5lIE5QX0NN RF9NRU1SRUFEICAgICAgIDB4NgorI2RlZmluZSBOUF9DTURfTUVNV1JJVEUgICAgICAweDcKKwor LyogQ29uc3RhbnRzIGZvciBDUlAgYWNjZXNzIGludG8gbG9jYWwgY29uZmlnIHNwYWNlICovCisj ZGVmaW5lIENSUF9BRF9DQkVfQkVTTCAgICAgIDIwCisjZGVmaW5lIENSUF9BRF9DQkVfV1JJVEUg ICAgIDB4MDAwMTAwMDAKKworLyogVVNCIERldmljZSBDb250cm9sbGVyICovCisjIGRlZmluZSBJ WFA0WFhfVVNCX1JFRyh4KSAgICgqKCh2b2xhdGlsZSB1MzIgKikoeCkpKQorCisvKiBTRFJBTSBD b250cm9sbGVyIHJlZ2lzdGVycy4gKi8KKyNkZWZpbmUgSVhQNFhYX1NEUkFNX0NPTkZJRyAgSVhQ NFhYX1JFRygweENDMDAwMDAwKQorI2RlZmluZSBJWFA0WFhfU0RSQU1fUkVGUkVTSCBJWFA0WFhf UkVHKDB4Q0MwMDAwMDQpCisjZGVmaW5lIElYUDRYWF9TRFJBTV9JUiAgICAgIElYUDRYWF9SRUco MHhDQzAwMDAwOCkKKworLyogImZ1c2UiIGJpdHMgb2YgSVhQX0VYUF9DRkcyICovCisvKiBBbGwg SVhQNHh4IENQVXMgKi8KKyNkZWZpbmUgSVhQNFhYX0ZFQVRVUkVfUkNPTVAgICAgICAgICAgICAo MSA8PCAwKQorI2RlZmluZSBJWFA0WFhfRkVBVFVSRV9VU0JfREVWSUNFICAgICAgICgxIDw8IDEp CisjZGVmaW5lIElYUDRYWF9GRUFUVVJFX0hBU0ggICAgICAgICAgICAgKDEgPDwgMikKKyNkZWZp bmUgSVhQNFhYX0ZFQVRVUkVfQUVTICAgICAgICAgICAgICAoMSA8PCAzKQorI2RlZmluZSBJWFA0 WFhfRkVBVFVSRV9ERVMgICAgICAgICAgICAgICgxIDw8IDQpCisjZGVmaW5lIElYUDRYWF9GRUFU VVJFX0hETEMgICAgICAgICAgICAgKDEgPDwgNSkKKyNkZWZpbmUgSVhQNFhYX0ZFQVRVUkVfQUFM ICAgICAgICAgICAgICAoMSA8PCA2KQorI2RlZmluZSBJWFA0WFhfRkVBVFVSRV9IU1MgICAgICAg ICAgICAgICgxIDw8IDcpCisjZGVmaW5lIElYUDRYWF9GRUFUVVJFX1VUT1BJQSAgICAgICAgICAg KDEgPDwgOCkKKyNkZWZpbmUgSVhQNFhYX0ZFQVRVUkVfTlBFQl9FVEgwICAgICAgICAoMSA8PCA5 KQorI2RlZmluZSBJWFA0WFhfRkVBVFVSRV9OUEVDX0VUSCAgICAgICAgICgxIDw8IDEwKQorI2Rl ZmluZSBJWFA0WFhfRkVBVFVSRV9SRVNFVF9OUEVBICAgICAgICgxIDw8IDExKQorI2RlZmluZSBJ WFA0WFhfRkVBVFVSRV9SRVNFVF9OUEVCICAgICAgICgxIDw8IDEyKQorI2RlZmluZSBJWFA0WFhf RkVBVFVSRV9SRVNFVF9OUEVDICAgICAgICgxIDw8IDEzKQorI2RlZmluZSBJWFA0WFhfRkVBVFVS RV9QQ0kgICAgICAgICAgICAgICgxIDw8IDE0KQorI2RlZmluZSBJWFA0WFhfRkVBVFVSRV9VVE9Q SUFfUEhZX0xJTUlUICgzIDw8IDE2KQorI2RlZmluZSBJWFA0WFhfRkVBVFVSRV9YU0NBTEVfTUFY X0ZSRVEgICgzIDw8IDIyKQorI2RlZmluZSBJWFA0MlhfRkVBVFVSRV9NQVNLIChJWFA0WFhfRkVB VFVSRV9SQ09NUCAgICAgICAgICAgIHwgXAorCQkJICAgICBJWFA0WFhfRkVBVFVSRV9VU0JfREVW SUNFICAgICAgIHwgXAorCQkJICAgICBJWFA0WFhfRkVBVFVSRV9IQVNIICAgICAgICAgICAgIHwg XAorCQkJICAgICBJWFA0WFhfRkVBVFVSRV9BRVMgICAgICAgICAgICAgIHwgXAorCQkJICAgICBJ WFA0WFhfRkVBVFVSRV9ERVMgICAgICAgICAgICAgIHwgXAorCQkJICAgICBJWFA0WFhfRkVBVFVS RV9IRExDICAgICAgICAgICAgIHwgXAorCQkJICAgICBJWFA0WFhfRkVBVFVSRV9BQUwgICAgICAg ICAgICAgIHwgXAorCQkJICAgICBJWFA0WFhfRkVBVFVSRV9IU1MgICAgICAgICAgICAgIHwgXAor CQkJICAgICBJWFA0WFhfRkVBVFVSRV9VVE9QSUEgICAgICAgICAgIHwgXAorCQkJICAgICBJWFA0 WFhfRkVBVFVSRV9OUEVCX0VUSDAgICAgICAgIHwgXAorCQkJICAgICBJWFA0WFhfRkVBVFVSRV9O UEVDX0VUSCAgICAgICAgIHwgXAorCQkJICAgICBJWFA0WFhfRkVBVFVSRV9SRVNFVF9OUEVBICAg ICAgIHwgXAorCQkJICAgICBJWFA0WFhfRkVBVFVSRV9SRVNFVF9OUEVCICAgICAgIHwgXAorCQkJ ICAgICBJWFA0WFhfRkVBVFVSRV9SRVNFVF9OUEVDICAgICAgIHwgXAorCQkJICAgICBJWFA0WFhf RkVBVFVSRV9QQ0kgICAgICAgICAgICAgIHwgXAorCQkJICAgICBJWFA0WFhfRkVBVFVSRV9VVE9Q SUFfUEhZX0xJTUlUIHwgXAorCQkJICAgICBJWFA0WFhfRkVBVFVSRV9YU0NBTEVfTUFYX0ZSRVEp CisKKy8qIElYUDQzeC80NnggQ1BVcyAqLworI2RlZmluZSBJWFA0WFhfRkVBVFVSRV9FQ0NfVElN RVNZTkMgICAgICgxIDw8IDE1KQorI2RlZmluZSBJWFA0WFhfRkVBVFVSRV9VU0JfSE9TVCAgICAg ICAgICgxIDw8IDE4KQorI2RlZmluZSBJWFA0WFhfRkVBVFVSRV9OUEVBX0VUSCAgICAgICAgICgx IDw8IDE5KQorI2RlZmluZSBJWFA0M1hfRkVBVFVSRV9NQVNLIChJWFA0MlhfRkVBVFVSRV9NQVNL ICAgICAgICAgICAgIHwgXAorCQkJICAgICBJWFA0WFhfRkVBVFVSRV9FQ0NfVElNRVNZTkMgICAg IHwgXAorCQkJICAgICBJWFA0WFhfRkVBVFVSRV9VU0JfSE9TVCAgICAgICAgIHwgXAorCQkJICAg ICBJWFA0WFhfRkVBVFVSRV9OUEVBX0VUSCkKKworLyogSVhQNDZ4IENQVSAoaW5jbHVkaW5nIElY UDQ1NSkgb25seSAqLworI2RlZmluZSBJWFA0WFhfRkVBVFVSRV9OUEVCX0VUSF8xX1RPXzMgICgx IDw8IDIwKQorI2RlZmluZSBJWFA0WFhfRkVBVFVSRV9SU0EgICAgICAgICAgICAgICgxIDw8IDIx KQorI2RlZmluZSBJWFA0NlhfRkVBVFVSRV9NQVNLIChJWFA0M1hfRkVBVFVSRV9NQVNLICAgICAg ICAgICAgIHwgXAorCQkJICAgICBJWFA0WFhfRkVBVFVSRV9OUEVCX0VUSF8xX1RPXzMgIHwgXAor CQkJICAgICBJWFA0WFhfRkVBVFVSRV9SU0EpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9h cm0vbWFjaC1peHA0eHgvaW5jbHVkZS9tYWNoL25wZS5oIGIvYXJjaC9hcm0vbWFjaC1peHA0eHgv aW5jbHVkZS9tYWNoL25wZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4 YmQwMWIKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNoLWl4cDR4eC9pbmNsdWRlL21h Y2gvbnBlLmgKQEAgLTAsMCArMSwzMCBAQAorI2lmbmRlZiBfX0lYUDRYWF9OUEVfSAorI2RlZmlu ZSBfX0lYUDRYWF9OUEVfSAorCisjaW5jbHVkZSA8Y29tbW9uLmg+CisKKyNkZWZpbmUgTlBFX05B TUVfTEVOR1RIIDUKKworc3RydWN0IG5wZV9yZWdzIHsKKwl1MzIgZXhlY19hZGRyLCBleGVjX2Rh dGEsIGV4ZWNfc3RhdHVzX2NtZCwgZXhlY19jb3VudDsKKwl1MzIgYWN0aW9uX3BvaW50c1s0XTsK Kwl1MzIgd2F0Y2hwb2ludF9maWZvLCB3YXRjaF9jb3VudDsKKwl1MzIgcHJvZmlsZV9jb3VudDsK Kwl1MzIgbWVzc2FnaW5nX3N0YXR1cywgbWVzc2FnaW5nX2NvbnRyb2w7CisJdTMyIG1haWxib3hf c3RhdHVzLCAvKm1lc3NhZ2luZ18qLyBpbl9vdXRfZmlmbzsKK307CisKK3N0cnVjdCBucGUgewor CXN0cnVjdCBucGVfcmVncyAqcmVnczsKKwlpbnQgaWQsIHZhbGlkOworCWNvbnN0IGNoYXIgbmFt ZVtOUEVfTkFNRV9MRU5HVEggKyAxXTsKK307CisKK2ludCBucGVfcnVubmluZyhzdHJ1Y3QgbnBl ICpucGUpOworaW50IG5wZV9zZW5kX21lc3NhZ2Uoc3RydWN0IG5wZSAqbnBlLCBjb25zdCB2b2lk ICptc2csIGNvbnN0IGNoYXIgKndoYXQpOworaW50IG5wZV9yZWN2X21lc3NhZ2Uoc3RydWN0IG5w ZSAqbnBlLCB2b2lkICptc2csIGNvbnN0IGNoYXIgKndoYXQpOworaW50IG5wZV9zZW5kX3JlY3Zf bWVzc2FnZShzdHJ1Y3QgbnBlICpucGUsIHZvaWQgKm1zZywgY29uc3QgY2hhciAqd2hhdCk7Citp bnQgbnBlX2xvYWRfZmlybXdhcmUoc3RydWN0IG5wZSAqbnBlKTsKK3N0cnVjdCBucGUgKm5wZV9y ZXF1ZXN0KGludCBpZCk7CisKKyNlbmRpZiAvKiBfX0lYUDRYWF9OUEVfSCAqLwpkaWZmIC0tZ2l0 IGEvYXJjaC9hcm0vbWFjaC1peHA0eHgvaW5jbHVkZS9tYWNoL3BsYXRmb3JtLmggYi9hcmNoL2Fy bS9tYWNoLWl4cDR4eC9pbmNsdWRlL21hY2gvcGxhdGZvcm0uaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi4xZGY0YWE0Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vbWFj aC1peHA0eHgvaW5jbHVkZS9tYWNoL3BsYXRmb3JtLmgKQEAgLTAsMCArMSwxNSBAQAorI2luY2x1 ZGUgPGFzbS90eXBlcy5oPgorCisjZGVmaW5lIElYUDRYWF9FVEhfTlBFQSAweDAwCisjZGVmaW5l IElYUDRYWF9FVEhfTlBFQiAweDEwCisjZGVmaW5lIElYUDRYWF9FVEhfTlBFQyAweDIwCisKKy8q IEluZm9ybWF0aW9uIGFib3V0IGJ1aWx0LWluIEV0aGVybmV0IE1BQyBpbnRlcmZhY2VzICovCitz dHJ1Y3QgZXRoX3BsYXRfaW5mbyB7CisJdm9pZCAqcmVnczsKKwl1OCBucGU7CisJdTggcGh5OyAv KiBNSUkgUEhZIElELCAwIC0gMzEgKi8KKwl1OCByeHE7IC8qIGNvbmZpZ3VyYWJsZSwgY3VycmVu dGx5IDAgLSAzMSBvbmx5ICovCisJdTggdHhyZWFkeXE7CisJdTggaHdhZGRyWzZdOworfTsKZGlm ZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtaXhwNHh4L2luY2x1ZGUvbWFjaC9xbWdyLmggYi9hcmNo L2FybS9tYWNoLWl4cDR4eC9pbmNsdWRlL21hY2gvcW1nci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjRlOWI4ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNo LWl4cDR4eC9pbmNsdWRlL21hY2gvcW1nci5oCkBAIC0wLDAgKzEsMTY0IEBACisvKgorICogQ29w eXJpZ2h0IChDKSAyMDA3IEtyenlzenRvZiBIYWxhc2EgPGtoY0BwbS53YXcucGw+CisgKgorICog VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB2ZXJzaW9uIDIgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisjaWZuZGVmIElYUDRYWF9RTUdSX0gKKyNkZWZpbmUg SVhQNFhYX1FNR1JfSAorCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8bWFjaC9peHA0 eHgtcmVncy5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorCisjZGVmaW5lIERFQlVHX1FNR1IgICAg ICAgMAorCisjZGVmaW5lIEhBTEZfUVVFVUVTICAgICAzMgorI2RlZmluZSBRVUVVRVMgICAgICAg ICAgNjQKKyNkZWZpbmUgTUFYX1FVRVVFX0xFTkdUSCA0IC8qIGluIGR3b3JkcyAqLworCisjZGVm aW5lIFFVRVVFX1NUQVQxX0VNUFRZICAgICAgICAgICAgICAgMSAvKiBxdWV1ZSBzdGF0dXMgYml0 cyAqLworI2RlZmluZSBRVUVVRV9TVEFUMV9ORUFSTFlfRU1QVFkgICAgICAgIDIKKyNkZWZpbmUg UVVFVUVfU1RBVDFfTkVBUkxZX0ZVTEwgICAgICAgICA0CisjZGVmaW5lIFFVRVVFX1NUQVQxX0ZV TEwgICAgICAgICAgICAgICAgOAorI2RlZmluZSBRVUVVRV9TVEFUMl9VTkRFUkZMT1cgICAgICAg ICAgIDEKKyNkZWZpbmUgUVVFVUVfU1RBVDJfT1ZFUkZMT1cgICAgICAgICAgICAyCisKKyNkZWZp bmUgUVVFVUVfV0FURVJNQVJLXzBfRU5UUklFUyAgICAgICAwCisjZGVmaW5lIFFVRVVFX1dBVEVS TUFSS18xX0VOVFJZICAgICAgICAgMQorI2RlZmluZSBRVUVVRV9XQVRFUk1BUktfMl9FTlRSSUVT ICAgICAgIDIKKyNkZWZpbmUgUVVFVUVfV0FURVJNQVJLXzRfRU5UUklFUyAgICAgICAzCisjZGVm aW5lIFFVRVVFX1dBVEVSTUFSS184X0VOVFJJRVMgICAgICAgNAorI2RlZmluZSBRVUVVRV9XQVRF Uk1BUktfMTZfRU5UUklFUyAgICAgIDUKKyNkZWZpbmUgUVVFVUVfV0FURVJNQVJLXzMyX0VOVFJJ RVMgICAgICA2CisjZGVmaW5lIFFVRVVFX1dBVEVSTUFSS182NF9FTlRSSUVTICAgICAgNworCisv KiBxdWV1ZSBpbnRlcnJ1cHQgcmVxdWVzdCBjb25kaXRpb25zICovCisjZGVmaW5lIFFVRVVFX0lS UV9TUkNfRU1QVFkgICAgICAgICAgICAgMAorI2RlZmluZSBRVUVVRV9JUlFfU1JDX05FQVJMWV9F TVBUWSAgICAgIDEKKyNkZWZpbmUgUVVFVUVfSVJRX1NSQ19ORUFSTFlfRlVMTCAgICAgICAyCisj ZGVmaW5lIFFVRVVFX0lSUV9TUkNfRlVMTCAgICAgICAgICAgICAgMworI2RlZmluZSBRVUVVRV9J UlFfU1JDX05PVF9FTVBUWSAgICAgICAgIDQKKyNkZWZpbmUgUVVFVUVfSVJRX1NSQ19OT1RfTkVB UkxZX0VNUFRZICA1CisjZGVmaW5lIFFVRVVFX0lSUV9TUkNfTk9UX05FQVJMWV9GVUxMICAgNgor I2RlZmluZSBRVUVVRV9JUlFfU1JDX05PVF9GVUxMICAgICAgICAgIDcKKworc3RydWN0IHFtZ3Jf cmVncyB7CisJdTMyIGFjY1tRVUVVRVNdW01BWF9RVUVVRV9MRU5HVEhdOyAvKiAweDAwMCAtIDB4 M0ZGICovCisJdTMyIHN0YXQxWzRdOyAgICAgICAgIC8qIDB4NDAwIC0gMHg0MEYgKi8KKwl1MzIg c3RhdDJbMl07ICAgICAgICAgLyogMHg0MTAgLSAweDQxNyAqLworCXUzMiBzdGF0bmVfaDsgICAg ICAgICAvKiAweDQxOCAtIHF1ZXVlIG5lYXJseSBlbXB0eSAqLworCXUzMiBzdGF0Zl9oOyAgICAg ICAgICAvKiAweDQxQyAtIHF1ZXVlIGZ1bGwgKi8KKwl1MzIgaXJxc3JjWzRdOyAgICAgICAgLyog MHg0MjAgLSAweDQyRiBJUkMgc291cmNlICovCisJdTMyIGlycWVuWzJdOyAgICAgICAgIC8qIDB4 NDMwIC0gMHg0MzcgSVJRIGVuYWJsZWQgKi8KKwl1MzIgaXJxc3RhdFsyXTsgICAgICAgLyogMHg0 MzggLSAweDQzRiAtIElSUSBhY2Nlc3Mgb25seSAqLworCXUzMiByZXNlcnZlZFsxNzc2XTsKKwl1 MzIgc3JhbVsyMDQ4XTsgICAgICAgLyogMHgyMDAwIC0gMHgzRkZGIC0gY29uZmlnIGFuZCBidWZm ZXIgKi8KK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcW1ncl9yZWdzICpxbWdyX3JlZ3MgPSAo c3RydWN0IHFtZ3JfcmVncyAqKUlYUDRYWF9RTUdSX0JBU0U7CisKK3ZvaWQgcW1ncl9zZXRfaXJx KHVuc2lnbmVkIGludCBxdWV1ZSwgaW50IHNyYywKKwkJICB2b2lkICgqaGFuZGxlcikodm9pZCAq cGRldiksIHZvaWQgKnBkZXYpOwordm9pZCBxbWdyX2VuYWJsZV9pcnEodW5zaWduZWQgaW50IHF1 ZXVlKTsKK3ZvaWQgcW1ncl9kaXNhYmxlX2lycSh1bnNpZ25lZCBpbnQgcXVldWUpOworCisvKiBy ZXF1ZXN0XyBhbmQgcmVsZWFzZV9xdWV1ZSgpIG11c3QgYmUgY2FsbGVkIGZyb20gbm9uLUlSUSBj b250ZXh0ICovCisKKyNpZiBERUJVR19RTUdSCitleHRlcm4gY2hhciBxbWdyX3F1ZXVlX2Rlc2Nz W0hBTEZfUVVFVUVTXVszMl07CisKK3ZvaWQgcW1ncl9yZXF1ZXN0X3F1ZXVlKHVuc2lnbmVkIGlu dCBxdWV1ZSwgdW5zaWduZWQgaW50IGxlbiAvKiBkd29yZHMgKi8sCisJCQl1bnNpZ25lZCBpbnQg bmVhcmx5X2VtcHR5X3dhdGVybWFyaywKKwkJCXVuc2lnbmVkIGludCBuZWFybHlfZnVsbF93YXRl cm1hcmssCisJCQljb25zdCBjaGFyICpkZXNjX2Zvcm1hdCwgY29uc3QgY2hhciogbmFtZSk7Cisj ZWxzZQordm9pZCBfX3FtZ3JfcmVxdWVzdF9xdWV1ZSh1bnNpZ25lZCBpbnQgcXVldWUsIHVuc2ln bmVkIGludCBsZW4gLyogZHdvcmRzICovLAorCQkJICB1bnNpZ25lZCBpbnQgbmVhcmx5X2VtcHR5 X3dhdGVybWFyaywKKwkJCSAgdW5zaWduZWQgaW50IG5lYXJseV9mdWxsX3dhdGVybWFyayk7Cisj ZGVmaW5lIHFtZ3JfcmVxdWVzdF9xdWV1ZShxdWV1ZSwgbGVuLCBuZWFybHlfZW1wdHlfd2F0ZXJt YXJrLCAgICAgICBcCisJCQkgICBuZWFybHlfZnVsbF93YXRlcm1hcmssIGRlc2NfZm9ybWF0LCBu YW1lKSBcCisJX19xbWdyX3JlcXVlc3RfcXVldWUocXVldWUsIGxlbiwgbmVhcmx5X2VtcHR5X3dh dGVybWFyaywgICAgIFwKKwkJCSAgICAgbmVhcmx5X2Z1bGxfd2F0ZXJtYXJrKQorI2VuZGlmCisK K3ZvaWQgcW1ncl9yZWxlYXNlX3F1ZXVlKHVuc2lnbmVkIGludCBxdWV1ZSk7CisKKworc3RhdGlj IGlubGluZSB2b2lkIHFtZ3JfcHV0X2VudHJ5KHVuc2lnbmVkIGludCBxdWV1ZSwgdTMyIHZhbCkK K3sKKyNpZiBERUJVR19RTUdSCisJQlVHX09OKCFxbWdyX3F1ZXVlX2Rlc2NzW3F1ZXVlXSk7IC8q IG5vdCB5ZXQgcmVxdWVzdGVkICovCisKKwlmcHJpbnRmKHN0ZGVyciwgIlF1ZXVlICVzKCVpKSBw dXQgJVhcbiIsCisJCXFtZ3JfcXVldWVfZGVzY3NbcXVldWVdLCBxdWV1ZSwgdmFsKTsKKyNlbmRp ZgorCV9fcmF3X3dyaXRlbCh2YWwsICZxbWdyX3JlZ3MtPmFjY1txdWV1ZV1bMF0pOworfQorCitz dGF0aWMgaW5saW5lIHUzMiBxbWdyX2dldF9lbnRyeSh1bnNpZ25lZCBpbnQgcXVldWUpCit7CisJ dTMyIHZhbDsKKwl2YWwgPSBfX3Jhd19yZWFkbCgmcW1ncl9yZWdzLT5hY2NbcXVldWVdWzBdKTsK KyNpZiBERUJVR19RTUdSCisJQlVHX09OKCFxbWdyX3F1ZXVlX2Rlc2NzW3F1ZXVlXSk7IC8qIG5v dCB5ZXQgcmVxdWVzdGVkICovCisKKwlmcHJpbnRmKHN0ZGVyciwgIlF1ZXVlICVzKCVpKSBnZXQg JVhcbiIsCisJCXFtZ3JfcXVldWVfZGVzY3NbcXVldWVdLCBxdWV1ZSwgdmFsKTsKKyNlbmRpZgor CXJldHVybiB2YWw7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IF9fcW1ncl9nZXRfc3RhdDEodW5z aWduZWQgaW50IHF1ZXVlKQoreworCXJldHVybiAoX19yYXdfcmVhZGwoJnFtZ3JfcmVncy0+c3Rh dDFbcXVldWUgPj4gM10pCisJCT4+ICgocXVldWUgJiA3KSA8PCAyKSkgJiAweEY7Cit9CisKKy8q KgorICogcW1ncl9zdGF0X2VtcHR5KCkgLSBjaGVja3MgaWYgYSBoYXJkd2FyZSBxdWV1ZSBpcyBl bXB0eQorICogQHF1ZXVlOiBxdWV1ZSBudW1iZXIKKyAqCisgKiBSZXR1cm5zIG5vbi16ZXJvIHZh bHVlIGlmIHRoZSBxdWV1ZSBpcyBlbXB0eS4KKyAqLworc3RhdGljIGlubGluZSBpbnQgcW1ncl9z dGF0X2VtcHR5KHVuc2lnbmVkIGludCBxdWV1ZSkKK3sKKwlyZXR1cm4gX19xbWdyX2dldF9zdGF0 MShxdWV1ZSkgJiBRVUVVRV9TVEFUMV9FTVBUWTsKK30KKworLyoqCisgKiBxbWdyX3N0YXRfYmVs b3dfbG93X3dhdGVybWFyaygpIC0gY2hlY2tzIGlmIGEgcXVldWUgaXMgYmVsb3cgbG93IHdhdGVy bWFyaworICogQHF1ZXVlOiBxdWV1ZSBudW1iZXIKKyAqCisgKiBSZXR1cm5zIG5vbi16ZXJvIHZh bHVlIGlmIHRoZSBxdWV1ZSBpcyBiZWxvdyBsb3cgd2F0ZXJtYXJrLgorICovCitzdGF0aWMgaW5s aW5lIGludCBxbWdyX3N0YXRfYmVsb3dfbG93X3dhdGVybWFyayh1bnNpZ25lZCBpbnQgcXVldWUp Cit7CisJcmV0dXJuIF9fcW1ncl9nZXRfc3RhdDEocXVldWUpICYgUVVFVUVfU1RBVDFfTkVBUkxZ X0VNUFRZOworfQorCisvKioKKyAqIHFtZ3Jfc3RhdF9hYm92ZV9oaWdoX3dhdGVybWFyaygpIC0g Y2hlY2tzIGlmIGEgcXVldWUgaXMgYWJvdmUgaGlnaCB3YXRlcm1hcmsKKyAqIEBxdWV1ZTogcXVl dWUgbnVtYmVyCisgKgorICogUmV0dXJucyBub24temVybyB2YWx1ZSBpZiB0aGUgcXVldWUgaXMg YWJvdmUgaGlnaCB3YXRlcm1hcmsKKyAqLworc3RhdGljIGlubGluZSBpbnQgcW1ncl9zdGF0X2Fi b3ZlX2hpZ2hfd2F0ZXJtYXJrKHVuc2lnbmVkIGludCBxdWV1ZSkKK3sKKwlyZXR1cm4gX19xbWdy X2dldF9zdGF0MShxdWV1ZSkgJiBRVUVVRV9TVEFUMV9ORUFSTFlfRlVMTDsKK30KKworLyoqCisg KiBxbWdyX3N0YXRfZnVsbCgpIC0gY2hlY2tzIGlmIGEgaGFyZHdhcmUgcXVldWUgaXMgZnVsbAor ICogQHF1ZXVlOiBxdWV1ZSBudW1iZXIKKyAqCisgKiBSZXR1cm5zIG5vbi16ZXJvIHZhbHVlIGlm IHRoZSBxdWV1ZSBpcyBmdWxsLgorICovCitzdGF0aWMgaW5saW5lIGludCBxbWdyX3N0YXRfZnVs bCh1bnNpZ25lZCBpbnQgcXVldWUpCit7CisJcmV0dXJuIF9fcW1ncl9nZXRfc3RhdDEocXVldWUp ICYgUVVFVUVfU1RBVDFfRlVMTDsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2FybS9t YWNoLWl4cDR4eC9ucGUuYyBiL2FyY2gvYXJtL21hY2gtaXhwNHh4L25wZS5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MTFhMDMKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNo L2FybS9tYWNoLWl4cDR4eC9ucGUuYwpAQCAtMCwwICsxLDY2OCBAQAorLyoKKyAqIEludGVsIElY UDR4eCBOZXR3b3JrIFByb2Nlc3NvciBFbmdpbmUgZHJpdmVyIGZvciBMaW51eAorICoKKyAqIENv cHlyaWdodCAoQykgMjAwNyBLcnp5c3p0b2YgSGFsYXNhIDxraGNAcG0ud2F3LnBsPgorICoKKyAq IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgb2YgdmVyc2lvbiAyIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUg PGVycm5vLmg+CisjaW5jbHVkZSA8ZnMuaD4KKyNpbmNsdWRlIDxpbml0Lmg+CisjaW5jbHVkZSA8 bWFsbG9jLmg+CisjaW5jbHVkZSA8YXNtL2J5dGVvcmRlci5oPgorI2luY2x1ZGUgPGFzbS9pby5o PgorI2luY2x1ZGUgPG1hY2gvaXhwNHh4LXJlZ3MuaD4KKyNpbmNsdWRlIDxtYWNoL2NwdS5oPgor I2luY2x1ZGUgPG1hY2gvbnBlLmg+CisKKyNkZWZpbmUgREVCVUdfTVNHICAgICAgICAgICAgICAg ICAgICAgIDAKKyNkZWZpbmUgREVCVUdfRlcgICAgICAgICAgICAgICAgICAgICAgIDAKKworI2Rl ZmluZSBOUEVfQ09VTlQgICAgICAgICAgICAgICAgICAgICAgMworI2RlZmluZSBNQVhfUkVUUklF UyAgICAgICAgICAgICAgICAgICAgMTAwMCAgLyogbWljcm9zZWNvbmRzICovCisjZGVmaW5lIE5Q RV80MlhfREFUQV9TSVpFICAgICAgICAgICAgICAweDgwMCAvKiBpbiBkd29yZHMgKi8KKyNkZWZp bmUgTlBFXzQ2WF9EQVRBX1NJWkUgICAgICAgICAgICAgIDB4MTAwMAorI2RlZmluZSBOUEVfQV80 MlhfSU5TVFJfU0laRSAgICAgICAgICAgMHgxMDAwCisjZGVmaW5lIE5QRV9CX0FORF9DXzQyWF9J TlNUUl9TSVpFICAgICAweDgwMAorI2RlZmluZSBOUEVfNDZYX0lOU1RSX1NJWkUgICAgICAgICAg ICAgMHgxMDAwCisjZGVmaW5lIFJFR1NfU0laRSAgICAgICAgICAgICAgICAgICAgICAweDEwMDAK KworI2RlZmluZSBOUEVfUEhZU19SRUcgICAgICAgICAgICAgICAgICAgMzIKKworI2RlZmluZSBG V19NQUdJQyAgICAgICAgICAgICAgICAgICAgICAgMHhGRUVERjAwRAorI2RlZmluZSBGV19CTE9D S19UWVBFX0lOU1RSICAgICAgICAgICAgMHgwCisjZGVmaW5lIEZXX0JMT0NLX1RZUEVfREFUQSAg ICAgICAgICAgICAweDEKKyNkZWZpbmUgRldfQkxPQ0tfVFlQRV9FT0YgICAgICAgICAgICAgIDB4 RgorCisvKiBOUEUgZXhlYyBzdGF0dXMgKHJlYWQpIGFuZCBjb21tYW5kICh3cml0ZSkgKi8KKyNk ZWZpbmUgQ01EX05QRV9TVEVQICAgICAgICAgICAgICAgICAgIDB4MDEKKyNkZWZpbmUgQ01EX05Q RV9TVEFSVCAgICAgICAgICAgICAgICAgIDB4MDIKKyNkZWZpbmUgQ01EX05QRV9TVE9QICAgICAg ICAgICAgICAgICAgIDB4MDMKKyNkZWZpbmUgQ01EX05QRV9DTFJfUElQRSAgICAgICAgICAgICAg IDB4MDQKKyNkZWZpbmUgQ01EX0NMUl9QUk9GSUxFX0NOVCAgICAgICAgICAgIDB4MEMKKyNkZWZp bmUgQ01EX1JEX0lOU19NRU0gICAgICAgICAgICAgICAgIDB4MTAgLyogaW5zdHJ1Y3Rpb24gbWVt b3J5ICovCisjZGVmaW5lIENNRF9XUl9JTlNfTUVNICAgICAgICAgICAgICAgICAweDExCisjZGVm aW5lIENNRF9SRF9EQVRBX01FTSAgICAgICAgICAgICAgICAweDEyIC8qIGRhdGEgbWVtb3J5ICov CisjZGVmaW5lIENNRF9XUl9EQVRBX01FTSAgICAgICAgICAgICAgICAweDEzCisjZGVmaW5lIENN RF9SRF9FQ1NfUkVHICAgICAgICAgICAgICAgICAweDE0IC8qIGV4ZWMgYWNjZXNzIHJlZ2lzdGVy ICovCisjZGVmaW5lIENNRF9XUl9FQ1NfUkVHICAgICAgICAgICAgICAgICAweDE1CisKKyNkZWZp bmUgU1RBVF9SVU4gICAgICAgICAgICAgICAgICAgICAgIDB4ODAwMDAwMDAKKyNkZWZpbmUgU1RB VF9TVE9QICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwMDAKKyNkZWZpbmUgU1RBVF9DTEVB UiAgICAgICAgICAgICAgICAgICAgIDB4MjAwMDAwMDAKKyNkZWZpbmUgU1RBVF9FQ1NfSyAgICAg ICAgICAgICAgICAgICAgIDB4MDA4MDAwMDAgLyogcGlwZWxpbmUgY2xlYW4gKi8KKworI2RlZmlu ZSBOUEVfU1RFVlQgICAgICAgICAgICAgICAgICAgICAgMHgxQgorI2RlZmluZSBOUEVfU1RBUlRQ QyAgICAgICAgICAgICAgICAgICAgMHgxQworI2RlZmluZSBOUEVfUkVHTUFQICAgICAgICAgICAg ICAgICAgICAgMHgxRQorI2RlZmluZSBOUEVfQ0lOREVYICAgICAgICAgICAgICAgICAgICAgMHgx RgorCisjZGVmaW5lIElOU1RSX1dSX1JFR19TSE9SVCAgICAgICAgICAgICAweDAwMDBDMDAwCisj ZGVmaW5lIElOU1RSX1dSX1JFR19CWVRFICAgICAgICAgICAgICAweDAwMDA0MDAwCisjZGVmaW5l IElOU1RSX1JEX0ZJRk8gICAgICAgICAgICAgICAgICAweDBGODg4MjIwCisjZGVmaW5lIElOU1RS X1JFU0VUX01CT1ggICAgICAgICAgICAgICAweDBGQUM4MjEwCisKKyNkZWZpbmUgRUNTX0JHX0NU WFRfUkVHXzAgICAgICAgICAgICAgIDB4MDAgLyogQmFja2dyb3VuZCBFeGVjdXRpbmcgQ29udGV4 dCAqLworI2RlZmluZSBFQ1NfQkdfQ1RYVF9SRUdfMSAgICAgICAgICAgICAgMHgwMSAvKiBTdGFj ayBsZXZlbCAqLworI2RlZmluZSBFQ1NfQkdfQ1RYVF9SRUdfMiAgICAgICAgICAgICAgMHgwMgor I2RlZmluZSBFQ1NfUFJJXzFfQ1RYVF9SRUdfMCAgICAgICAgICAgMHgwNCAvKiBQcmlvcml0eSAx IEV4ZWN1dGluZyBDb250ZXh0ICovCisjZGVmaW5lIEVDU19QUklfMV9DVFhUX1JFR18xICAgICAg ICAgICAweDA1IC8qIFN0YWNrIGxldmVsICovCisjZGVmaW5lIEVDU19QUklfMV9DVFhUX1JFR18y ICAgICAgICAgICAweDA2CisjZGVmaW5lIEVDU19QUklfMl9DVFhUX1JFR18wICAgICAgICAgICAw eDA4IC8qIFByaW9yaXR5IDIgRXhlY3V0aW5nIENvbnRleHQgKi8KKyNkZWZpbmUgRUNTX1BSSV8y X0NUWFRfUkVHXzEgICAgICAgICAgIDB4MDkgLyogU3RhY2sgbGV2ZWwgKi8KKyNkZWZpbmUgRUNT X1BSSV8yX0NUWFRfUkVHXzIgICAgICAgICAgIDB4MEEKKyNkZWZpbmUgRUNTX0RCR19DVFhUX1JF R18wICAgICAgICAgICAgIDB4MEMgLyogRGVidWcgRXhlY3V0aW5nIENvbnRleHQgKi8KKyNkZWZp bmUgRUNTX0RCR19DVFhUX1JFR18xICAgICAgICAgICAgIDB4MEQgLyogU3RhY2sgbGV2ZWwgKi8K KyNkZWZpbmUgRUNTX0RCR19DVFhUX1JFR18yICAgICAgICAgICAgIDB4MEUKKyNkZWZpbmUgRUNT X0lOU1RSVUNUX1JFRyAgICAgICAgICAgICAgIDB4MTEgLyogTlBFIEluc3RydWN0aW9uIFJlZ2lz dGVyICovCisKKyNkZWZpbmUgRUNTX1JFR18wX0FDVElWRSAgICAgICAgICAgICAgIDB4ODAwMDAw MDAgLyogYWxsIGxldmVscyAqLworI2RlZmluZSBFQ1NfUkVHXzBfTkVYVFBDX01BU0sgICAgICAg ICAgMHgxRkZGMDAwMCAvKiBCRy9QUkkxL1BSSTIgbGV2ZWxzICovCisjZGVmaW5lIEVDU19SRUdf MF9MRFVSX0JJVFMgICAgICAgICAgICA4CisjZGVmaW5lIEVDU19SRUdfMF9MRFVSX01BU0sgICAg ICAgICAgICAweDAwMDAwNzAwIC8qIGFsbCBsZXZlbHMgKi8KKyNkZWZpbmUgRUNTX1JFR18xX0ND VFhUX0JJVFMgICAgICAgICAgIDE2CisjZGVmaW5lIEVDU19SRUdfMV9DQ1RYVF9NQVNLICAgICAg ICAgICAweDAwMEYwMDAwIC8qIGFsbCBsZXZlbHMgKi8KKyNkZWZpbmUgRUNTX1JFR18xX1NFTENU WFRfQklUUyAgICAgICAgIDAKKyNkZWZpbmUgRUNTX1JFR18xX1NFTENUWFRfTUFTSyAgICAgICAg IDB4MDAwMDAwMEYgLyogYWxsIGxldmVscyAqLworI2RlZmluZSBFQ1NfREJHX1JFR18yX0lGICAg ICAgICAgICAgICAgMHgwMDEwMDAwMCAvKiBkZWJ1ZyBsZXZlbCAqLworI2RlZmluZSBFQ1NfREJH X1JFR18yX0lFICAgICAgICAgICAgICAgMHgwMDA4MDAwMCAvKiBkZWJ1ZyBsZXZlbCAqLworCisv KiBOUEUgd2F0Y2hwb2ludF9maWZvIHJlZ2lzdGVyIGJpdCAqLworI2RlZmluZSBXRklGT19WQUxJ RCAgICAgICAgICAgICAgICAgICAgMHg4MDAwMDAwMAorCisvKiBOUEUgbWVzc2FnaW5nX3N0YXR1 cyByZWdpc3RlciBiaXQgZGVmaW5pdGlvbnMgKi8KKyNkZWZpbmUgTVNHU1RBVF9PRk5FICAweDAw MDEwMDAwIC8qIE91dEZpZm9Ob3RFbXB0eSAqLworI2RlZmluZSBNU0dTVEFUX0lGTkYgIDB4MDAw MjAwMDAgLyogSW5GaWZvTm90RnVsbCAqLworI2RlZmluZSBNU0dTVEFUX09GTkYgIDB4MDAwNDAw MDAgLyogT3V0Rmlmb05vdEZ1bGwgKi8KKyNkZWZpbmUgTVNHU1RBVF9JRk5FICAweDAwMDgwMDAw IC8qIEluRmlmb05vdEVtcHR5ICovCisjZGVmaW5lIE1TR1NUQVRfTUJJTlQgMHgwMDEwMDAwMCAv KiBNYWlsYm94IGludGVycnVwdCAqLworI2RlZmluZSBNU0dTVEFUX0lGSU5UIDB4MDAyMDAwMDAg LyogSW5GaWZvIGludGVycnVwdCAqLworI2RlZmluZSBNU0dTVEFUX09GSU5UIDB4MDA0MDAwMDAg LyogT3V0RmlmbyBpbnRlcnJ1cHQgKi8KKyNkZWZpbmUgTVNHU1RBVF9XRklOVCAweDAwODAwMDAw IC8qIFdhdGNoRmlmbyBpbnRlcnJ1cHQgKi8KKworLyogTlBFIG1lc3NhZ2luZ19jb250cm9sIHJl Z2lzdGVyIGJpdCBkZWZpbml0aW9ucyAqLworI2RlZmluZSBNU0dDVExfT1VUX0ZJRk8gICAgICAg MHgwMDAxMDAwMCAvKiBlbmFibGUgb3V0cHV0IEZJRk8gKi8KKyNkZWZpbmUgTVNHQ1RMX0lOX0ZJ Rk8gICAgICAgIDB4MDAwMjAwMDAgLyogZW5hYmxlIGlucHV0IEZJRk8gKi8KKyNkZWZpbmUgTVNH Q1RMX09VVF9GSUZPX1dSSVRFIDB4MDEwMDAwMDAgLyogZW5hYmxlIEZJRk8gKyBXUklURSAqLwor I2RlZmluZSBNU0dDVExfSU5fRklGT19XUklURSAgMHgwMjAwMDAwMAorCisvKiBOUEUgbWFpbGJv eF9zdGF0dXMgdmFsdWUgZm9yIHJlc2V0ICovCisjZGVmaW5lIFJFU0VUX01CT1hfU1RBVCAgICAg ICAgICAweDAwMDBGMEYwCisKKyNkZWZpbmUgcHJpbnRfbnBlKG5wZSwgZm10LCAuLi4pIGZwcmlu dGYoc3RkZXJyLCAiJXM6ICIgZm10LCBucGUtPm5hbWUsICMjIF9fVkFfQVJHU19fKQorCisjaWYg REVCVUdfTVNHCisjZGVmaW5lIGRlYnVnX21zZyhucGUsIGZtdCwgLi4uKSBwcmludF9ucGUobnBl LCBmbXQsICMjIF9fVkFfQVJHU19fKQorI2Vsc2UKKyNkZWZpbmUgZGVidWdfbXNnKG5wZSwgZm10 LCAuLi4pCisjZW5kaWYKKworc3RhdGljIHN0cnVjdCB7CisJdTMyIHJlZywgdmFsOworfSBlY3Nf cmVzZXRbXSA9IHsKKwl7RUNTX0JHX0NUWFRfUkVHXzAsICAgIDB4QTAwMDAwMDB9LAorCXtFQ1Nf QkdfQ1RYVF9SRUdfMSwgICAgMHgwMTAwMDAwMH0sCisJe0VDU19CR19DVFhUX1JFR18yLCAgICAw eDAwMDA4MDAwfSwKKwl7RUNTX1BSSV8xX0NUWFRfUkVHXzAsIDB4MjAwMDAwODB9LAorCXtFQ1Nf UFJJXzFfQ1RYVF9SRUdfMSwgMHgwMTAwMDAwMH0sCisJe0VDU19QUklfMV9DVFhUX1JFR18yLCAw eDAwMDA4MDAwfSwKKwl7RUNTX1BSSV8yX0NUWFRfUkVHXzAsIDB4MjAwMDAwODB9LAorCXtFQ1Nf UFJJXzJfQ1RYVF9SRUdfMSwgMHgwMTAwMDAwMH0sCisJe0VDU19QUklfMl9DVFhUX1JFR18yLCAw eDAwMDA4MDAwfSwKKwl7RUNTX0RCR19DVFhUX1JFR18wLCAgIDB4MjAwMDAwMDB9LAorCXtFQ1Nf REJHX0NUWFRfUkVHXzEsICAgMHgwMDAwMDAwMH0sCisJe0VDU19EQkdfQ1RYVF9SRUdfMiwgICAw eDAwMUUwMDAwfSwKKwl7RUNTX0lOU1RSVUNUX1JFRywgICAgIDB4MTAwM0MwMEZ9LAorfTsKKwor c3RhdGljIHN0cnVjdCBucGUgbnBlX3RhYltOUEVfQ09VTlRdID0geworCXsKKwkJLnJlZ3MgPSAo c3RydWN0IG5wZV9yZWdzICopSVhQNFhYX05QRUFfQkFTRSwKKwkJLmlkID0gMCwKKwkJLm5hbWUg PSAiTlBFLUEiLAorCX0sIHsKKwkJLnJlZ3MgPSAoc3RydWN0IG5wZV9yZWdzICopSVhQNFhYX05Q RUJfQkFTRSwKKwkJLmlkID0gMSwKKwkJLm5hbWUgPSAiTlBFLUIiLAorCX0sIHsKKwkJLnJlZ3Mg PSAoc3RydWN0IG5wZV9yZWdzICopSVhQNFhYX05QRUNfQkFTRSwKKwkJLmlkID0gMiwKKwkJLm5h bWUgPSAiTlBFLUMiLAorCX0KK307CisKK2ludCBucGVfcnVubmluZyhzdHJ1Y3QgbnBlICpucGUp Cit7CisJcmV0dXJuIChfX3Jhd19yZWFkbCgmbnBlLT5yZWdzLT5leGVjX3N0YXR1c19jbWQpICYg U1RBVF9SVU4pICE9IDA7Cit9CisKK3N0YXRpYyB2b2lkIG5wZV9jbWRfd3JpdGUoc3RydWN0IG5w ZSAqbnBlLCB1MzIgYWRkciwgaW50IGNtZCwgdTMyIGRhdGEpCit7CisJX19yYXdfd3JpdGVsKGRh dGEsICZucGUtPnJlZ3MtPmV4ZWNfZGF0YSk7CisJX19yYXdfd3JpdGVsKGFkZHIsICZucGUtPnJl Z3MtPmV4ZWNfYWRkcik7CisJX19yYXdfd3JpdGVsKGNtZCwgJm5wZS0+cmVncy0+ZXhlY19zdGF0 dXNfY21kKTsKK30KKworc3RhdGljIHUzMiBucGVfY21kX3JlYWQoc3RydWN0IG5wZSAqbnBlLCB1 MzIgYWRkciwgaW50IGNtZCkKK3sKKwlfX3Jhd193cml0ZWwoYWRkciwgJm5wZS0+cmVncy0+ZXhl Y19hZGRyKTsKKwlfX3Jhd193cml0ZWwoY21kLCAmbnBlLT5yZWdzLT5leGVjX3N0YXR1c19jbWQp OworCS8qIElpbnRyb2R1Y2UgZXh0cmEgcmVhZCBjeWNsZXMgYWZ0ZXIgaXNzdWluZyByZWFkIGNv bW1hbmQgdG8gTlBFCisJICAgc28gdGhhdCB3ZSByZWFkIHRoZSByZWdpc3RlciBhZnRlciB0aGUg TlBFIGhhcyB1cGRhdGVkIGl0LgorCSAgIFRoaXMgaXMgdG8gb3ZlcmNvbWUgcmFjZSBjb25kaXRp b24gYmV0d2VlbiBYU2NhbGUgYW5kIE5QRSAqLworCV9fcmF3X3JlYWRsKCZucGUtPnJlZ3MtPmV4 ZWNfZGF0YSk7CisJX19yYXdfcmVhZGwoJm5wZS0+cmVncy0+ZXhlY19kYXRhKTsKKwlyZXR1cm4g X19yYXdfcmVhZGwoJm5wZS0+cmVncy0+ZXhlY19kYXRhKTsKK30KKworc3RhdGljIHZvaWQgbnBl X2NsZWFyX2FjdGl2ZShzdHJ1Y3QgbnBlICpucGUsIHUzMiByZWcpCit7CisJdTMyIHZhbCA9IG5w ZV9jbWRfcmVhZChucGUsIHJlZywgQ01EX1JEX0VDU19SRUcpOworCW5wZV9jbWRfd3JpdGUobnBl LCByZWcsIENNRF9XUl9FQ1NfUkVHLCB2YWwgJiB+RUNTX1JFR18wX0FDVElWRSk7Cit9CisKK3N0 YXRpYyB2b2lkIG5wZV9zdGFydChzdHJ1Y3QgbnBlICpucGUpCit7CisJLyogZW5zdXJlIG9ubHkg QmFja2dyb3VuZCBDb250ZXh0IFN0YWNrIExldmVsIGlzIGFjdGl2ZSAqLworCW5wZV9jbGVhcl9h Y3RpdmUobnBlLCBFQ1NfUFJJXzFfQ1RYVF9SRUdfMCk7CisJbnBlX2NsZWFyX2FjdGl2ZShucGUs IEVDU19QUklfMl9DVFhUX1JFR18wKTsKKwlucGVfY2xlYXJfYWN0aXZlKG5wZSwgRUNTX0RCR19D VFhUX1JFR18wKTsKKworCV9fcmF3X3dyaXRlbChDTURfTlBFX0NMUl9QSVBFLCAmbnBlLT5yZWdz LT5leGVjX3N0YXR1c19jbWQpOworCV9fcmF3X3dyaXRlbChDTURfTlBFX1NUQVJULCAmbnBlLT5y ZWdzLT5leGVjX3N0YXR1c19jbWQpOworfQorCitzdGF0aWMgdm9pZCBucGVfc3RvcChzdHJ1Y3Qg bnBlICpucGUpCit7CisJX19yYXdfd3JpdGVsKENNRF9OUEVfU1RPUCwgJm5wZS0+cmVncy0+ZXhl Y19zdGF0dXNfY21kKTsKKwlfX3Jhd193cml0ZWwoQ01EX05QRV9DTFJfUElQRSwgJm5wZS0+cmVn cy0+ZXhlY19zdGF0dXNfY21kKTsgLypGSVhNRT8qLworfQorCitzdGF0aWMgaW50IG5wZV9kZWJ1 Z19pbnN0cihzdHJ1Y3QgbnBlICpucGUsIHUzMiBpbnN0ciwgdTMyIGN0eCwgdTMyIGxkdXIpCit7 CisJdTMyIHdjOworCWludCBpOworCisJLyogc2V0IHRoZSBBY3RpdmUgYml0LCBhbmQgdGhlIExE VVIsIGluIHRoZSBkZWJ1ZyBsZXZlbCAqLworCW5wZV9jbWRfd3JpdGUobnBlLCBFQ1NfREJHX0NU WFRfUkVHXzAsIENNRF9XUl9FQ1NfUkVHLAorCQkgICAgICBFQ1NfUkVHXzBfQUNUSVZFIHwgKGxk dXIgPDwgRUNTX1JFR18wX0xEVVJfQklUUykpOworCisJLyogc2V0IENDVFhUIGF0IEVDUyBERUJV RyBMMyB0byBzcGVjaWZ5IGluIHdoaWNoIGNvbnRleHQgdG8gZXhlY3V0ZQorCSAgIHRoZSBpbnN0 cnVjdGlvbiwgYW5kIHNldCBTRUxDVFhUIGF0IEVDUyBERUJVRyBMZXZlbCB0byBzcGVjaWZ5CisJ ICAgd2hpY2ggY29udGV4dCBzdG9yZSB0byBhY2Nlc3MuCisJICAgRGVidWcgRUNTIExldmVsIFJl ZyAxIGhhcyBmb3JtIDB4MDAwbjAwMG4sIHdoZXJlIG4gPSBjb250ZXh0IG51bWJlcgorCSovCisJ bnBlX2NtZF93cml0ZShucGUsIEVDU19EQkdfQ1RYVF9SRUdfMSwgQ01EX1dSX0VDU19SRUcsCisJ CSAgICAgIChjdHggPDwgRUNTX1JFR18xX0NDVFhUX0JJVFMpIHwKKwkJICAgICAgKGN0eCA8PCBF Q1NfUkVHXzFfU0VMQ1RYVF9CSVRTKSk7CisKKwkvKiBjbGVhciB0aGUgcGlwZWxpbmUgKi8KKwlf X3Jhd193cml0ZWwoQ01EX05QRV9DTFJfUElQRSwgJm5wZS0+cmVncy0+ZXhlY19zdGF0dXNfY21k KTsKKworCS8qIGxvYWQgTlBFIGluc3RydWN0aW9uIGludG8gdGhlIGluc3RydWN0aW9uIHJlZ2lz dGVyICovCisJbnBlX2NtZF93cml0ZShucGUsIEVDU19JTlNUUlVDVF9SRUcsIENNRF9XUl9FQ1Nf UkVHLCBpbnN0cik7CisKKwkvKiB3ZSBuZWVkIHRoaXMgdmFsdWUgbGF0ZXIgdG8gd2FpdCBmb3Ig Y29tcGxldGlvbiBvZiBOUEUgZXhlY3V0aW9uCisJICAgc3RlcCAqLworCXdjID0gX19yYXdfcmVh ZGwoJm5wZS0+cmVncy0+d2F0Y2hfY291bnQpOworCisJLyogaXNzdWUgYSBTdGVwIE9uZSBjb21t YW5kIHZpYSB0aGUgRXhlY3V0aW9uIENvbnRyb2wgcmVnaXN0ZXIgKi8KKwlfX3Jhd193cml0ZWwo Q01EX05QRV9TVEVQLCAmbnBlLT5yZWdzLT5leGVjX3N0YXR1c19jbWQpOworCisJLyogV2F0Y2gg Q291bnQgcmVnaXN0ZXIgaW5jcmVtZW50cyB3aGVuIE5QRSBjb21wbGV0ZXMgYW4gaW5zdHJ1Y3Rp b24gKi8KKwlmb3IgKGkgPSAwOyBpIDwgTUFYX1JFVFJJRVM7IGkrKykgeworCQlpZiAod2MgIT0g X19yYXdfcmVhZGwoJm5wZS0+cmVncy0+d2F0Y2hfY291bnQpKQorCQkJcmV0dXJuIDA7CisJCXVk ZWxheSgxKTsKKwl9CisKKwlwcmludF9ucGUobnBlLCAicmVzZXQ6IG5wZV9kZWJ1Z19pbnN0cigp OiB0aW1lb3V0XG4iKTsKKwlyZXR1cm4gLUVUSU1FRE9VVDsKK30KKworc3RhdGljIGludCBucGVf bG9naWNhbF9yZWdfd3JpdGU4KHN0cnVjdCBucGUgKm5wZSwgdTMyIGFkZHIsIHU4IHZhbCwgdTMy IGN0eCkKK3sKKwkvKiBoZXJlIHdlIGJ1aWxkIHRoZSBOUEUgYXNzZW1ibGVyIGluc3RydWN0aW9u OiBtb3Y4IGQwLCAjMCAqLworCXUzMiBpbnN0ciA9IElOU1RSX1dSX1JFR19CWVRFIHwgLyogT3BD b2RlICovCisJCWFkZHIgPDwgOSB8ICAgICAgICAgICAgIC8qIGJhc2UgT3BlcmFuZCAqLworCQko dmFsICYgMHgxRikgPDwgNCB8ICAgICAvKiBsb3dlciA1IGJpdHMgdG8gaW1tZWRpYXRlIGRhdGEg Ki8KKwkJKHZhbCAmIH4weDFGKSA8PCAoMTggLSA1KTsvKiBoaWdoZXIgMyBiaXRzIHRvIENvUHJv YyBpbnN0ci4gKi8KKwlyZXR1cm4gbnBlX2RlYnVnX2luc3RyKG5wZSwgaW5zdHIsIGN0eCwgMSk7 IC8qIGV4ZWN1dGUgaXQgKi8KK30KKworc3RhdGljIGludCBucGVfbG9naWNhbF9yZWdfd3JpdGUx NihzdHJ1Y3QgbnBlICpucGUsIHUzMiBhZGRyLCB1MTYgdmFsLCB1MzIgY3R4KQoreworCS8qIGhl cmUgd2UgYnVpbGQgdGhlIE5QRSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb246IG1vdjE2IGQwLCAjMCAq LworCXUzMiBpbnN0ciA9IElOU1RSX1dSX1JFR19TSE9SVCB8IC8qIE9wQ29kZSAqLworCQlhZGRy IDw8IDkgfCAgICAgICAgICAgICAvKiBiYXNlIE9wZXJhbmQgKi8KKwkJKHZhbCAmIDB4MUYpIDw8 IDQgfCAgICAgLyogbG93ZXIgNSBiaXRzIHRvIGltbWVkaWF0ZSBkYXRhICovCisJCSh2YWwgJiB+ MHgxRikgPDwgKDE4IC0gNSk7LyogaGlnaGVyIDExIGJpdHMgdG8gQ29Qcm9jIGluc3RyLiAqLwor CXJldHVybiBucGVfZGVidWdfaW5zdHIobnBlLCBpbnN0ciwgY3R4LCAxKTsgLyogZXhlY3V0ZSBp dCAqLworfQorCitzdGF0aWMgaW50IG5wZV9sb2dpY2FsX3JlZ193cml0ZTMyKHN0cnVjdCBucGUg Km5wZSwgdTMyIGFkZHIsIHUzMiB2YWwsIHUzMiBjdHgpCit7CisJLyogd3JpdGUgaW4gMTYgYml0 IHN0ZXBzIGZpcnN0IHRoZSBoaWdoIGFuZCB0aGVuIHRoZSBsb3cgdmFsdWUgKi8KKwlpZiAobnBl X2xvZ2ljYWxfcmVnX3dyaXRlMTYobnBlLCBhZGRyLCB2YWwgPj4gMTYsIGN0eCkpCisJCXJldHVy biAtRVRJTUVET1VUOworCXJldHVybiBucGVfbG9naWNhbF9yZWdfd3JpdGUxNihucGUsIGFkZHIg KyAyLCB2YWwgJiAweEZGRkYsIGN0eCk7Cit9CisKK3N0YXRpYyBpbnQgbnBlX3Jlc2V0KHN0cnVj dCBucGUgKm5wZSkKK3sKKwl1MzIgdmFsLCBjdGwsIGV4ZWNfY291bnQsIGN0eF9yZWcyOworCWlu dCBpOworCisJY3RsID0gKF9fcmF3X3JlYWRsKCZucGUtPnJlZ3MtPm1lc3NhZ2luZ19jb250cm9s KSB8IDB4M0YwMDAwMDApICYKKwkJMHgzRjNGRkZGRjsKKworCS8qIGRpc2FibGUgcGFyaXR5IGlu dGVycnVwdCAqLworCV9fcmF3X3dyaXRlbChjdGwgJiAweDNGMDBGRkZGLCAmbnBlLT5yZWdzLT5t ZXNzYWdpbmdfY29udHJvbCk7CisKKwkvKiBwcmUgZXhlYyAtIGRlYnVnIGluc3RydWN0aW9uICov CisJLyogdHVybiBvZmYgdGhlIGhhbHQgYml0IGJ5IGNsZWFyaW5nIEV4ZWN1dGlvbiBDb3VudCBy ZWdpc3Rlci4gKi8KKwlleGVjX2NvdW50ID0gX19yYXdfcmVhZGwoJm5wZS0+cmVncy0+ZXhlY19j b3VudCk7CisJX19yYXdfd3JpdGVsKDAsICZucGUtPnJlZ3MtPmV4ZWNfY291bnQpOworCS8qIGVu c3VyZSB0aGF0IElGIGFuZCBJRSBhcmUgb24gKHRlbXBvcmFyaWx5KSwgc28gdGhhdCB3ZSBkb24n dCBlbmQgdXAKKwkgICBzdGVwcGluZyBmb3JldmVyICovCisJY3R4X3JlZzIgPSBucGVfY21kX3Jl YWQobnBlLCBFQ1NfREJHX0NUWFRfUkVHXzIsIENNRF9SRF9FQ1NfUkVHKTsKKwlucGVfY21kX3dy aXRlKG5wZSwgRUNTX0RCR19DVFhUX1JFR18yLCBDTURfV1JfRUNTX1JFRywgY3R4X3JlZzIgfAor CQkgICAgICBFQ1NfREJHX1JFR18yX0lGIHwgRUNTX0RCR19SRUdfMl9JRSk7CisKKwkvKiBjbGVh ciB0aGUgRklGT3MgKi8KKwl3aGlsZSAoX19yYXdfcmVhZGwoJm5wZS0+cmVncy0+d2F0Y2hwb2lu dF9maWZvKSAmIFdGSUZPX1ZBTElEKQorCQk7CisJd2hpbGUgKF9fcmF3X3JlYWRsKCZucGUtPnJl Z3MtPm1lc3NhZ2luZ19zdGF0dXMpICYgTVNHU1RBVF9PRk5FKQorCQkvKiByZWFkIGZyb20gdGhl IG91dEZJRk8gdW50aWwgZW1wdHkgKi8KKwkJcHJpbnRfbnBlKG5wZSwgIm5wZV9yZXNldDogcmVh ZCBGSUZPID0gMHglWFxuIiwKKwkJCSAgX19yYXdfcmVhZGwoJm5wZS0+cmVncy0+aW5fb3V0X2Zp Zm8pKTsKKworCXdoaWxlIChfX3Jhd19yZWFkbCgmbnBlLT5yZWdzLT5tZXNzYWdpbmdfc3RhdHVz KSAmIE1TR1NUQVRfSUZORSkKKwkJLyogc3RlcCBleGVjdXRpb24gb2YgdGhlIE5QRSBpbnRydWN0 aW9uIHRvIHJlYWQgaW5GSUZPIHVzaW5nCisJCSAgIHRoZSBEZWJ1ZyBFeGVjdXRpbmcgQ29udGV4 dCBzdGFjayAqLworCQlpZiAobnBlX2RlYnVnX2luc3RyKG5wZSwgSU5TVFJfUkRfRklGTywgMCwg MCkpCisJCQlyZXR1cm4gLUVUSU1FRE9VVDsKKworCS8qIHJlc2V0IHRoZSBtYWlsYm94IHJlZyBm cm9tIHRoZSBYU2NhbGUgc2lkZSAqLworCV9fcmF3X3dyaXRlbChSRVNFVF9NQk9YX1NUQVQsICZu cGUtPnJlZ3MtPm1haWxib3hfc3RhdHVzKTsKKwkvKiBmcm9tIE5QRSBzaWRlICovCisJaWYgKG5w ZV9kZWJ1Z19pbnN0cihucGUsIElOU1RSX1JFU0VUX01CT1gsIDAsIDApKQorCQlyZXR1cm4gLUVU SU1FRE9VVDsKKworCS8qIFJlc2V0IHRoZSBwaHlzaWNhbCByZWdpc3RlcnMgaW4gdGhlIE5QRSBy ZWdpc3RlciBmaWxlICovCisJZm9yICh2YWwgPSAwOyB2YWwgPCBOUEVfUEhZU19SRUc7IHZhbCsr KSB7CisJCWlmIChucGVfbG9naWNhbF9yZWdfd3JpdGUxNihucGUsIE5QRV9SRUdNQVAsIHZhbCA+ PiAxLCAwKSkKKwkJCXJldHVybiAtRVRJTUVET1VUOworCQkvKiBhZGRyZXNzIGlzIGVpdGhlciAw IG9yIDQgKi8KKwkJaWYgKG5wZV9sb2dpY2FsX3JlZ193cml0ZTMyKG5wZSwgKHZhbCAmIDEpICog NCwgMCwgMCkpCisJCQlyZXR1cm4gLUVUSU1FRE9VVDsKKwl9CisKKwkvKiBSZXNldCB0aGUgY29u dGV4dCBzdG9yZSA9IGVhY2ggY29udGV4dCdzIENvbnRleHQgU3RvcmUgcmVnaXN0ZXJzICovCisK KwkvKiBDb250ZXh0IDAgaGFzIG5vIFNUQVJUUEMuIEluc3RlYWQsIHRoaXMgdmFsdWUgaXMgdXNl ZCB0byBzZXQgTmV4dFBDCisJICAgZm9yIEJhY2tncm91bmQgRUNTLCB0byBzZXQgd2hlcmUgTlBF IHN0YXJ0cyBleGVjdXRpbmcgY29kZSAqLworCXZhbCA9IG5wZV9jbWRfcmVhZChucGUsIEVDU19C R19DVFhUX1JFR18wLCBDTURfUkRfRUNTX1JFRyk7CisJdmFsICY9IH5FQ1NfUkVHXzBfTkVYVFBD X01BU0s7CisJdmFsIHw9ICgwIC8qIE5leHRQQyAqLyA8PCAxNikgJiBFQ1NfUkVHXzBfTkVYVFBD X01BU0s7CisJbnBlX2NtZF93cml0ZShucGUsIEVDU19CR19DVFhUX1JFR18wLCBDTURfV1JfRUNT X1JFRywgdmFsKTsKKworCWZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKSB7CisJCWlmIChpKSB7IC8q IENvbnRleHQgMCBoYXMgbm8gU1RFVlQgbm9yIFNUQVJUUEMgKi8KKwkJCS8qIFNURVZUID0gb2Zm LCAweDgwICovCisJCQlpZiAobnBlX2xvZ2ljYWxfcmVnX3dyaXRlOChucGUsIE5QRV9TVEVWVCwg MHg4MCwgaSkpCisJCQkJcmV0dXJuIC1FVElNRURPVVQ7CisJCQlpZiAobnBlX2xvZ2ljYWxfcmVn X3dyaXRlMTYobnBlLCBOUEVfU1RBUlRQQywgMCwgaSkpCisJCQkJcmV0dXJuIC1FVElNRURPVVQ7 CisJCX0KKwkJLyogUkVHTUFQID0gZDAtPnAwLCBkOC0+cDIsIGQxNi0+cDQgKi8KKwkJaWYgKG5w ZV9sb2dpY2FsX3JlZ193cml0ZTE2KG5wZSwgTlBFX1JFR01BUCwgMHg4MjAsIGkpKQorCQkJcmV0 dXJuIC1FVElNRURPVVQ7CisJCWlmIChucGVfbG9naWNhbF9yZWdfd3JpdGU4KG5wZSwgTlBFX0NJ TkRFWCwgMCwgaSkpCisJCQlyZXR1cm4gLUVUSU1FRE9VVDsKKwl9CisKKwkvKiBwb3N0IGV4ZWMg Ki8KKwkvKiBjbGVhciBhY3RpdmUgYml0IGluIGRlYnVnIGxldmVsICovCisJbnBlX2NtZF93cml0 ZShucGUsIEVDU19EQkdfQ1RYVF9SRUdfMCwgQ01EX1dSX0VDU19SRUcsIDApOworCS8qIGNsZWFy IHRoZSBwaXBlbGluZSAqLworCV9fcmF3X3dyaXRlbChDTURfTlBFX0NMUl9QSVBFLCAmbnBlLT5y ZWdzLT5leGVjX3N0YXR1c19jbWQpOworCS8qIHJlc3RvcmUgcHJldmlvdXMgdmFsdWVzICovCisJ X19yYXdfd3JpdGVsKGV4ZWNfY291bnQsICZucGUtPnJlZ3MtPmV4ZWNfY291bnQpOworCW5wZV9j bWRfd3JpdGUobnBlLCBFQ1NfREJHX0NUWFRfUkVHXzIsIENNRF9XUl9FQ1NfUkVHLCBjdHhfcmVn Mik7CisKKwkvKiB3cml0ZSByZXNldCB2YWx1ZXMgdG8gRXhlY3V0aW9uIENvbnRleHQgU3RhY2sg cmVnaXN0ZXJzICovCisJZm9yICh2YWwgPSAwOyB2YWwgPCBBUlJBWV9TSVpFKGVjc19yZXNldCk7 IHZhbCsrKQorCQlucGVfY21kX3dyaXRlKG5wZSwgZWNzX3Jlc2V0W3ZhbF0ucmVnLCBDTURfV1Jf RUNTX1JFRywKKwkJCSAgICAgIGVjc19yZXNldFt2YWxdLnZhbCk7CisKKwkvKiBjbGVhciB0aGUg cHJvZmlsZSBjb3VudGVyICovCisJX19yYXdfd3JpdGVsKENNRF9DTFJfUFJPRklMRV9DTlQsICZu cGUtPnJlZ3MtPmV4ZWNfc3RhdHVzX2NtZCk7CisKKwlfX3Jhd193cml0ZWwoMCwgJm5wZS0+cmVn cy0+ZXhlY19jb3VudCk7CisJX19yYXdfd3JpdGVsKDAsICZucGUtPnJlZ3MtPmFjdGlvbl9wb2lu dHNbMF0pOworCV9fcmF3X3dyaXRlbCgwLCAmbnBlLT5yZWdzLT5hY3Rpb25fcG9pbnRzWzFdKTsK KwlfX3Jhd193cml0ZWwoMCwgJm5wZS0+cmVncy0+YWN0aW9uX3BvaW50c1syXSk7CisJX19yYXdf d3JpdGVsKDAsICZucGUtPnJlZ3MtPmFjdGlvbl9wb2ludHNbM10pOworCV9fcmF3X3dyaXRlbCgw LCAmbnBlLT5yZWdzLT53YXRjaF9jb3VudCk7CisKKwl2YWwgPSBpeHA0eHhfcmVhZF9mZWF0dXJl X2JpdHMoKTsKKwkvKiByZXNldCB0aGUgTlBFICovCisJaXhwNHh4X3dyaXRlX2ZlYXR1cmVfYml0 cyh2YWwgJgorCQkJCSAgfihJWFA0WFhfRkVBVFVSRV9SRVNFVF9OUEVBIDw8IG5wZS0+aWQpKTsK KwkvKiBkZWFzc2VydCByZXNldCAqLworCWl4cDR4eF93cml0ZV9mZWF0dXJlX2JpdHModmFsIHwK KwkJCQkgIChJWFA0WFhfRkVBVFVSRV9SRVNFVF9OUEVBIDw8IG5wZS0+aWQpKTsKKwlmb3IgKGkg PSAwOyBpIDwgTUFYX1JFVFJJRVM7IGkrKykgeworCQlpZiAoaXhwNHh4X3JlYWRfZmVhdHVyZV9i aXRzKCkgJgorCQkgICAgKElYUDRYWF9GRUFUVVJFX1JFU0VUX05QRUEgPDwgbnBlLT5pZCkpCisJ CQlicmVhazsgLyogTlBFIGlzIGJhY2sgYWxpdmUgKi8KKwkJdWRlbGF5KDEpOworCX0KKwlpZiAo aSA9PSBNQVhfUkVUUklFUykKKwkJcmV0dXJuIC1FVElNRURPVVQ7CisKKwlucGVfc3RvcChucGUp OworCisJLyogcmVzdG9yZSBOUEUgY29uZmlndXJhdGlvbiBidXMgQ29udHJvbCBSZWdpc3RlciAt IHBhcml0eSBzZXR0aW5ncyAqLworCV9fcmF3X3dyaXRlbChjdGwsICZucGUtPnJlZ3MtPm1lc3Nh Z2luZ19jb250cm9sKTsKKwlyZXR1cm4gMDsKK30KKworCitpbnQgbnBlX3NlbmRfbWVzc2FnZShz dHJ1Y3QgbnBlICpucGUsIGNvbnN0IHZvaWQgKm1zZywgY29uc3QgY2hhciAqd2hhdCkKK3sKKwlj b25zdCB1MzIgKnNlbmQgPSBtc2c7CisJaW50IGN5Y2xlcyA9IDA7CisKKwlkZWJ1Z19tc2cobnBl LCAiVHJ5aW5nIHRvIHNlbmQgbWVzc2FnZSAlcyBbJTA4WDolMDhYXVxuIiwKKwkJICB3aGF0LCBz ZW5kWzBdLCBzZW5kWzFdKTsKKworCWlmIChfX3Jhd19yZWFkbCgmbnBlLT5yZWdzLT5tZXNzYWdp bmdfc3RhdHVzKSAmIE1TR1NUQVRfSUZORSkgeworCQlkZWJ1Z19tc2cobnBlLCAiTlBFIGlucHV0 IEZJRk8gbm90IGVtcHR5XG4iKTsKKwkJcmV0dXJuIC1FSU87CisJfQorCisJX19yYXdfd3JpdGVs KHNlbmRbMF0sICZucGUtPnJlZ3MtPmluX291dF9maWZvKTsKKworCWlmICghKF9fcmF3X3JlYWRs KCZucGUtPnJlZ3MtPm1lc3NhZ2luZ19zdGF0dXMpICYgTVNHU1RBVF9JRk5GKSkgeworCQlkZWJ1 Z19tc2cobnBlLCAiTlBFIGlucHV0IEZJRk8gZnVsbFxuIik7CisJCXJldHVybiAtRUlPOworCX0K KworCV9fcmF3X3dyaXRlbChzZW5kWzFdLCAmbnBlLT5yZWdzLT5pbl9vdXRfZmlmbyk7CisKKwl3 aGlsZSAoKGN5Y2xlcyA8IE1BWF9SRVRSSUVTKSAmJgorCSAgICAgICAoX19yYXdfcmVhZGwoJm5w ZS0+cmVncy0+bWVzc2FnaW5nX3N0YXR1cykgJiBNU0dTVEFUX0lGTkUpKSB7CisJCXVkZWxheSgx KTsKKwkJY3ljbGVzKys7CisJfQorCisJaWYgKGN5Y2xlcyA9PSBNQVhfUkVUUklFUykgeworCQlk ZWJ1Z19tc2cobnBlLCAiVGltZW91dCBzZW5kaW5nIG1lc3NhZ2VcbiIpOworCQlyZXR1cm4gLUVU SU1FRE9VVDsKKwl9CisKKyNpZiBERUJVR19NU0cgPiAxCisJZGVidWdfbXNnKG5wZSwgIlNlbmRp bmcgYSBtZXNzYWdlIHRvb2sgJWkgY3ljbGVzXG4iLCBjeWNsZXMpOworI2VuZGlmCisJcmV0dXJu IDA7Cit9CisKK2ludCBucGVfcmVjdl9tZXNzYWdlKHN0cnVjdCBucGUgKm5wZSwgdm9pZCAqbXNn LCBjb25zdCBjaGFyICp3aGF0KQoreworCXUzMiAqcmVjdiA9IG1zZzsKKwlpbnQgY3ljbGVzID0g MCwgY250ID0gMDsKKworCWRlYnVnX21zZyhucGUsICJUcnlpbmcgdG8gcmVjZWl2ZSBtZXNzYWdl ICVzXG4iLCB3aGF0KTsKKworCXdoaWxlIChjeWNsZXMgPCBNQVhfUkVUUklFUykgeworCQlpZiAo X19yYXdfcmVhZGwoJm5wZS0+cmVncy0+bWVzc2FnaW5nX3N0YXR1cykgJiBNU0dTVEFUX09GTkUp IHsKKwkJCXJlY3ZbY250KytdID0gX19yYXdfcmVhZGwoJm5wZS0+cmVncy0+aW5fb3V0X2ZpZm8p OworCQkJaWYgKGNudCA9PSAyKQorCQkJCWJyZWFrOworCQl9IGVsc2UgeworCQkJdWRlbGF5KDEp OworCQkJY3ljbGVzKys7CisJCX0KKwl9CisKKwlzd2l0Y2goY250KSB7CisJY2FzZSAxOgorCQlk ZWJ1Z19tc2cobnBlLCAiUmVjZWl2ZWQgWyUwOFhdXG4iLCByZWN2WzBdKTsKKwkJYnJlYWs7CisJ Y2FzZSAyOgorCQlkZWJ1Z19tc2cobnBlLCAiUmVjZWl2ZWQgWyUwOFg6JTA4WF1cbiIsIHJlY3Zb MF0sIHJlY3ZbMV0pOworCQlicmVhazsKKwl9CisKKwlpZiAoY3ljbGVzID09IE1BWF9SRVRSSUVT KSB7CisJCWRlYnVnX21zZyhucGUsICJUaW1lb3V0IHdhaXRpbmcgZm9yIG1lc3NhZ2VcbiIpOwor CQlyZXR1cm4gLUVUSU1FRE9VVDsKKwl9CisKKyNpZiBERUJVR19NU0cgPiAxCisJZGVidWdfbXNn KG5wZSwgIlJlY2VpdmluZyBhIG1lc3NhZ2UgdG9vayAlaSBjeWNsZXNcbiIsIGN5Y2xlcyk7Cisj ZW5kaWYKKwlyZXR1cm4gMDsKK30KKworaW50IG5wZV9zZW5kX3JlY3ZfbWVzc2FnZShzdHJ1Y3Qg bnBlICpucGUsIHZvaWQgKm1zZywgY29uc3QgY2hhciAqd2hhdCkKK3sKKwlpbnQgcmVzdWx0Owor CXUzMiAqc2VuZCA9IG1zZywgcmVjdlsyXTsKKworCWlmICgocmVzdWx0ID0gbnBlX3NlbmRfbWVz c2FnZShucGUsIG1zZywgd2hhdCkpICE9IDApCisJCXJldHVybiByZXN1bHQ7CisJaWYgKChyZXN1 bHQgPSBucGVfcmVjdl9tZXNzYWdlKG5wZSwgcmVjdiwgd2hhdCkpICE9IDApCisJCXJldHVybiBy ZXN1bHQ7CisKKwlpZiAoKHJlY3ZbMF0gIT0gc2VuZFswXSkgfHwgKHJlY3ZbMV0gIT0gc2VuZFsx XSkpIHsKKwkJZGVidWdfbXNnKG5wZSwgIk1lc3NhZ2UgJXM6IHVuZXhwZWN0ZWQgbWVzc2FnZSBy ZWNlaXZlZFxuIiwKKwkJCSAgd2hhdCk7CisJCXJldHVybiAtRUlPOworCX0KKwlyZXR1cm4gMDsK K30KKworCitpbnQgbnBlX2xvYWRfZmlybXdhcmUoc3RydWN0IG5wZSAqbnBlKQoreworCXN0cnVj dCBkbF9ibG9jayB7CisJCXUzMiB0eXBlOworCQl1MzIgb2Zmc2V0OworCX0gKmJsazsKKworCXN0 cnVjdCBkbF9pbWFnZSB7CisJCXUzMiBtYWdpYzsKKwkJdTMyIGlkOworCQl1MzIgc2l6ZTsKKwkJ dW5pb24geworCQkJdTMyIGRhdGFbMF07CisJCQlzdHJ1Y3QgZGxfYmxvY2sgYmxvY2tzWzBdOwor CQl9OworCX0gKmltYWdlOworCisJc3RydWN0IGRsX2NvZGVibG9jayB7CisJCXUzMiBucGVfYWRk cjsKKwkJdTMyIHNpemU7CisJCXUzMiBkYXRhWzBdOworCX0gKmNiOworCisJaW50IGksIGosIGVy ciwgZGF0YV9zaXplLCBpbnN0cl9zaXplLCBibG9ja3MsIHRhYmxlX2VuZDsKKwl1MzIgY21kOwor CWNoYXIgbmFtZVsxMCAvKiAiL2Zpcm13YXJlLyIgKi8gKyBOUEVfTkFNRV9MRU5HVEggKyAxIC8q IE5VTCAqL107CisJc2l6ZV90IGltYWdlX3NpemU7CisKKwlzcHJpbnRmKG5hbWUsICIvZmlybXdh cmUvJXMiLCBucGUtPm5hbWUpOworCWlmICghKGltYWdlID0gcmVhZF9maWxlKG5hbWUsICZpbWFn ZV9zaXplKSkpIHsKKwkJcHJpbnRfbnBlKG5wZSwgImJhZCBvciBtaXNzaW5nIG1pY3JvY29kZSBm aWxlICVzXG4iLCBuYW1lKTsKKwkJcmV0dXJuIC1FSU87CisJfQorCisJZXJyID0gLUVJTlZBTDsK KwlpZiAoaW1hZ2Vfc2l6ZSA8IHNpemVvZihzdHJ1Y3QgZGxfaW1hZ2UpKSB7CisJCXByaW50X25w ZShucGUsICJpbmNvbXBsZXRlIG1pY3JvY29kZSBmaWxlICVzXG4iLCBuYW1lKTsKKwkJZ290byBl cnI7CisJfQorCisjaWYgREVCVUdfRlcKKwlwcmludF9ucGUobnBlLCAibWljcm9jb2RlOiAlMDhY ICUwOFggJTA4WCAoMHglWCBieXRlcylcbiIsCisJCSAgaW1hZ2UtPm1hZ2ljLCBpbWFnZS0+aWQs IGltYWdlLT5zaXplLCBpbWFnZS0+c2l6ZSAqIDQpOworI2VuZGlmCisKKwlpZiAoaW1hZ2UtPm1h Z2ljID09IHN3YWIzMihGV19NQUdJQykpIHsgLyogc3dhcHBlZCBmaWxlICovCisJCWltYWdlLT5p ZCA9IHN3YWIzMihpbWFnZS0+aWQpOworCQlpbWFnZS0+c2l6ZSA9IHN3YWIzMihpbWFnZS0+c2l6 ZSk7CisJfSBlbHNlIGlmIChpbWFnZS0+bWFnaWMgIT0gRldfTUFHSUMpIHsKKwkJcHJpbnRfbnBl KG5wZSwgImJhZCBtaWNyb2NvZGUgZmlsZSAlcyBtYWdpYzogMHglWFxuIiwgbmFtZSwgaW1hZ2Ut Pm1hZ2ljKTsKKwkJZ290byBlcnI7CisJfQorCWlmICgoaW1hZ2UtPnNpemUgKiA0ICsgc2l6ZW9m KHN0cnVjdCBkbF9pbWFnZSkpID4gaW1hZ2Vfc2l6ZSkgeworCQlwcmludF9ucGUobnBlLCAiaW5j b21wbGV0ZSBtaWNyb2NvZGUgZmlsZSAlc1xuIiwgbmFtZSk7CisJCWdvdG8gZXJyOworCX0KKwlp ZiAoKChpbWFnZS0+aWQgPj4gMjQpICYgMHhGIC8qIE5QRSBJRCAqLykgIT0gbnBlLT5pZCkgewor CQlwcmludF9ucGUobnBlLCAiTlBFIElEIG1pc21hdGNoIGluIG1pY3JvY29kZSBmaWxlICVzXG4i LCBuYW1lKTsKKwkJZ290byBlcnI7CisJfQorCWlmIChpbWFnZS0+bWFnaWMgPT0gc3dhYjMyKEZX X01BR0lDKSkKKwkJZm9yIChpID0gMDsgaSA8IGltYWdlLT5zaXplOyBpKyspCisJCQlpbWFnZS0+ ZGF0YVtpXSA9IHN3YWIzMihpbWFnZS0+ZGF0YVtpXSk7CisKKwlpZiAoY3B1X2lzX2l4cDQyeCgp ICYmICgoaW1hZ2UtPmlkID4+IDI4KSAmIDB4RiAvKiBkZXZpY2UgSUQgKi8pKSB7CisJCXByaW50 X25wZShucGUsICJJWFA0M3gvSVhQNDZ4IG1pY3JvY29kZSBpZ25vcmVkIG9uIElYUDQyeFxuIik7 CisJCWdvdG8gZXJyOworCX0KKworCWlmIChucGVfcnVubmluZyhucGUpKSB7CisJCXByaW50X25w ZShucGUsICJ1bmFibGUgdG8gbG9hZCBtaWNyb2NvZGUgZmlsZSAlcywgTlBFIGlzIGFscmVhZHkg cnVubmluZ1xuIiwgbmFtZSk7CisJCWVyciA9IC1FQlVTWTsKKwkJZ290byBlcnI7CisJfQorCisJ aWYgKGNwdV9pc19peHA0MngoKSkgeworCQlpZiAoIW5wZS0+aWQpCisJCQlpbnN0cl9zaXplID0g TlBFX0FfNDJYX0lOU1RSX1NJWkU7CisJCWVsc2UKKwkJCWluc3RyX3NpemUgPSBOUEVfQl9BTkRf Q180MlhfSU5TVFJfU0laRTsKKwkJZGF0YV9zaXplID0gTlBFXzQyWF9EQVRBX1NJWkU7CisJfSBl bHNlIHsKKwkJaW5zdHJfc2l6ZSA9IE5QRV80NlhfSU5TVFJfU0laRTsKKwkJZGF0YV9zaXplID0g TlBFXzQ2WF9EQVRBX1NJWkU7CisJfQorCisJZm9yIChibG9ja3MgPSAwOyBibG9ja3MgKiBzaXpl b2Yoc3RydWN0IGRsX2Jsb2NrKSAvIDQgPCBpbWFnZS0+c2l6ZTsKKwkgICAgIGJsb2NrcysrKQor CQlpZiAoaW1hZ2UtPmJsb2Nrc1tibG9ja3NdLnR5cGUgPT0gRldfQkxPQ0tfVFlQRV9FT0YpCisJ CQlicmVhazsKKwlpZiAoYmxvY2tzICogc2l6ZW9mKHN0cnVjdCBkbF9ibG9jaykgLyA0ID49IGlt YWdlLT5zaXplKSB7CisJCXByaW50X25wZShucGUsICJtaWNyb2NvZGUgRU9GIGJsb2NrIG1hcmtl ciBub3QgZm91bmRcbiIpOworCQlnb3RvIGVycjsKKwl9CisKKyNpZiBERUJVR19GVworCXByaW50 X25wZShucGUsICIlaSBtaWNyb2NvZGUgYmxvY2tzIGZvdW5kXG4iLCBibG9ja3MpOworI2VuZGlm CisKKwl0YWJsZV9lbmQgPSBibG9ja3MgKiBzaXplb2Yoc3RydWN0IGRsX2Jsb2NrKSAvIDQgKyAx IC8qIEVPRiBtYXJrZXIgKi87CisJZm9yIChpID0gMCwgYmxrID0gaW1hZ2UtPmJsb2NrczsgaSA8 IGJsb2NrczsgaSsrLCBibGsrKykgeworCQlpZiAoYmxrLT5vZmZzZXQgPiBpbWFnZS0+c2l6ZSAt IHNpemVvZihzdHJ1Y3QgZGxfY29kZWJsb2NrKSAvIDQKKwkJICAgIHx8IGJsay0+b2Zmc2V0IDwg dGFibGVfZW5kKSB7CisJCQlwcmludF9ucGUobnBlLCAiaW52YWxpZCBvZmZzZXQgMHglWCBvZiAi CisJCQkJICAibWljcm9jb2RlIGJsb2NrICMlaVxuIiwgYmxrLT5vZmZzZXQsIGkpOworCQkJZ290 byBlcnI7CisJCX0KKworCQljYiA9IChzdHJ1Y3QgZGxfY29kZWJsb2NrKikmaW1hZ2UtPmRhdGFb YmxrLT5vZmZzZXRdOworCQlpZiAoYmxrLT50eXBlID09IEZXX0JMT0NLX1RZUEVfSU5TVFIpIHsK KwkJCWlmIChjYi0+bnBlX2FkZHIgKyBjYi0+c2l6ZSA+IGluc3RyX3NpemUpCisJCQkJZ290byB0 b29fYmlnOworCQkJY21kID0gQ01EX1dSX0lOU19NRU07CisJCX0gZWxzZSBpZiAoYmxrLT50eXBl ID09IEZXX0JMT0NLX1RZUEVfREFUQSkgeworCQkJaWYgKGNiLT5ucGVfYWRkciArIGNiLT5zaXpl ID4gZGF0YV9zaXplKQorCQkJCWdvdG8gdG9vX2JpZzsKKwkJCWNtZCA9IENNRF9XUl9EQVRBX01F TTsKKwkJfSBlbHNlIHsKKwkJCXByaW50X25wZShucGUsICJpbnZhbGlkIG1pY3JvY29kZSBibG9j ayAjJWkgdHlwZSAweCVYXG4iLAorCQkJCSAgaSwgYmxrLT50eXBlKTsKKwkJCWdvdG8gZXJyOwor CQl9CisJCWlmIChibGstPm9mZnNldCArIHNpemVvZigqY2IpIC8gNCArIGNiLT5zaXplID4gaW1h Z2UtPnNpemUpIHsKKwkJCXByaW50X25wZShucGUsICJtaWNyb2NvZGUgYmxvY2sgIyVpIGRvZXNu J3QgIgorCQkJCSAgImZpdCBpbiBtaWNyb2NvZGUgaW1hZ2U6IHR5cGUgJWMsIHN0YXJ0IDB4JVgs IgorCQkJCSAgIiBsZW5ndGggMHglWFxuIiwgaSwKKwkJCQkgIGJsay0+dHlwZSA9PSBGV19CTE9D S19UWVBFX0lOU1RSID8gJ0knIDogJ0QnLAorCQkJCSAgY2ItPm5wZV9hZGRyLCBjYi0+c2l6ZSk7 CisJCQlnb3RvIGVycjsKKwkJfQorCisJCWZvciAoaiA9IDA7IGogPCBjYi0+c2l6ZTsgaisrKQor CQkJbnBlX2NtZF93cml0ZShucGUsIGNiLT5ucGVfYWRkciArIGosIGNtZCwgY2ItPmRhdGFbal0p OworCX0KKworCW5wZV9zdGFydChucGUpOworCWlmICghbnBlX3J1bm5pbmcobnBlKSkKKwkJcHJp bnRfbnBlKG5wZSwgInVuYWJsZSB0byBzdGFydFxuIik7CisJZnJlZShpbWFnZSk7CisJcmV0dXJu IDA7CisKK3Rvb19iaWc6CisJcHJpbnRfbnBlKG5wZSwgIm1pY3JvY29kZSBibG9jayAjJWkgZG9l c24ndCBmaXQgaW4gTlBFICIKKwkJICAibWVtb3J5OiB0eXBlICVjLCBzdGFydCAweCVYLCBsZW5n dGggMHglWFxuIiwgaSwKKwkJICBibGstPnR5cGUgPT0gRldfQkxPQ0tfVFlQRV9JTlNUUiA/ICdJ JyA6ICdEJywKKwkJICBjYi0+bnBlX2FkZHIsIGNiLT5zaXplKTsKK2VycjoKKwlmcmVlKGltYWdl KTsKKwlyZXR1cm4gZXJyOworfQorCisKK3N0cnVjdCBucGUgKm5wZV9yZXF1ZXN0KGludCBpZCkK K3sKKwlpZiAoaWQgPCBOUEVfQ09VTlQpCisJCWlmIChucGVfdGFiW2lkXS52YWxpZCkKKwkJCXJl dHVybiAmbnBlX3RhYltpZF07CisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBpbnQgX19pbml0 IG5wZV9pbml0KHZvaWQpCit7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgTlBFX0NPVU5U OyBpKyspIHsKKwkJc3RydWN0IG5wZSAqbnBlID0gJm5wZV90YWJbaV07CisJCWlmICghKGl4cDR4 eF9yZWFkX2ZlYXR1cmVfYml0cygpICYgKElYUDRYWF9GRUFUVVJFX1JFU0VUX05QRUEgPDwgaSkp KQorCQkJY29udGludWU7IC8qIE5QRSBhbHJlYWR5IGRpc2FibGVkIG9yIG5vdCBwcmVzZW50ICov CisJCWlmIChucGVfcmVzZXQobnBlKSkKKwkJCWNvbnRpbnVlOworCQlucGUtPnZhbGlkID0gMTsK Kwl9CisJcmV0dXJuIDA7Cit9CisKK2NvcmVkZXZpY2VfaW5pdGNhbGwobnBlX2luaXQpOwpkaWZm IC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1peHA0eHgvcW1nci5jIGIvYXJjaC9hcm0vbWFjaC1peHA0 eHgvcW1nci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxYjY1MjIKLS0t IC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNoLWl4cDR4eC9xbWdyLmMKQEAgLTAsMCArMSwy NTkgQEAKKy8qCisgKiBJbnRlbCBJWFA0eHggUXVldWUgTWFuYWdlciBkcml2ZXIgZm9yIExpbnV4 CisgKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEtyenlzenRvZiBIYWxhc2EgPGtoY0BwbS53YXcu cGw+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB2ZXJzaW9u IDIgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisjaW5jbHVkZSA8aW5pdC5oPgor I2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8bWFjaC9xbWdyLmg+CisKK3N0YXRpYyB1MzIg dXNlZF9zcmFtX2JpdG1hcFs0XTsgLyogMTI4IDE2LWR3b3JkIHBhZ2VzICovCisKKyNpZiBERUJV R19RTUdSCitjaGFyIHFtZ3JfcXVldWVfZGVzY3NbSEFMRl9RVUVVRVNdWzMyXTsKKyNlbmRpZgor CisjaWZkZWYgQ09ORklHX1VTRV9JUlEKKworc3RhdGljIHZvaWQgKCppcnFfaGFuZGxlcnNbSEFM Rl9RVUVVRVNdKSh2b2lkICpwZGV2KTsKK3N0YXRpYyB2b2lkICppcnFfcGRldnNbSEFMRl9RVUVV RVNdOworCit2b2lkIHFtZ3Jfc2V0X2lycSh1bnNpZ25lZCBpbnQgcXVldWUsIGludCBzcmMsCisJ CSAgdm9pZCAoKmhhbmRsZXIpKHZvaWQgKnBkZXYpLCB2b2lkICpwZGV2KQoreworCWNvbnN0IHUz MiAqcmVnOworCWludCBiaXQ7CisJQlVHX09OKHNyYyA+IFFVRVVFX0lSUV9TUkNfTk9UX0ZVTEwp OworCXJlZyA9ICZxbWdyX3JlZ3MtPmlycXNyY1txdWV1ZSA+PiAzXTsgLyogOCBxdWV1ZXMgcGVy IHUzMiAqLworCWJpdCA9IChxdWV1ZSAlIDgpICogNDsgLyogMyBiaXRzICsgMSByZXNlcnZlZCBi aXQgcGVyIHF1ZXVlICovCisJX19yYXdfd3JpdGVsKChfX3Jhd19yZWFkbChyZWcpICYgfig3IDw8 IGJpdCkpIHwgKHNyYyA8PCBiaXQpLCByZWcpOworCisJaXJxX2hhbmRsZXJzW3F1ZXVlXSA9IGhh bmRsZXI7CisJaXJxX3BkZXZzW3F1ZXVlXSA9IHBkZXY7Cit9CisKKworc3RhdGljIHZvaWQgcW1n cl9pcnExX2EwKHZvaWQgKmRhdGEpCit7CisJaW50IGk7CisJdTMyIGVuX2JpdG1hcCwgc3JjLCBz dGF0OworCisJLyogQUNLIC0gaXQgbWF5IGNsZWFyIGFueSBiaXRzIHNvIGRvbid0IHJlbHkgb24g aXQgKi8KKwlfX3Jhd193cml0ZWwoMHhGRkZGRkZGRiwgJnFtZ3JfcmVncy0+aXJxc3RhdFswXSk7 CisKKwllbl9iaXRtYXAgPSBxbWdyX3JlZ3MtPmlycWVuWzBdOworCXdoaWxlIChlbl9iaXRtYXAp IHsKKwkJaSA9IGZscyhlbl9iaXRtYXApIC0gMTsgLyogbnVtYmVyIG9mIHRoZSBsYXN0ICJsb3ci IHF1ZXVlICovCisJCWVuX2JpdG1hcCAmPSB+QklUKGkpOworCQlzcmMgPSBxbWdyX3JlZ3MtPmly cXNyY1tpID4+IDNdOworCQlzdGF0ID0gcW1ncl9yZWdzLT5zdGF0MVtpID4+IDNdOworCQlpZiAo c3JjICYgNCkgLyogdGhlIElSUSBjb25kaXRpb24gaXMgaW52ZXJ0ZWQgKi8KKwkJCXN0YXQgPSB+ c3RhdDsKKwkJaWYgKHN0YXQgJiBCSVQoc3JjICYgMykpCisJCQlpcnFfaGFuZGxlcnNbaV0oaXJx X3BkZXZzW2ldKTsKKwl9Cit9CisKKworc3RhdGljIHZvaWQgcW1ncl9pcnExKHZvaWQgKmRhdGEp Cit7CisJaW50IGk7CisJdTMyIHJlcV9iaXRtYXAgPSBfX3Jhd19yZWFkbCgmcW1ncl9yZWdzLT5p cnFzdGF0WzBdKTsKKworCWlmICghcmVxX2JpdG1hcCkKKwkJcmV0dXJuOworCV9fcmF3X3dyaXRl bChyZXFfYml0bWFwLCAmcW1ncl9yZWdzLT5pcnFzdGF0WzBdKTsgLyogQUNLICovCisKKwl3aGls ZSAocmVxX2JpdG1hcCkgeworCQlpID0gZmxzKHJlcV9iaXRtYXApIC0gMTsgLyogbnVtYmVyIG9m IHRoZSBsYXN0IHF1ZXVlICovCisJCXJlcV9iaXRtYXAgJj0gfkJJVChpKTsKKwkJaXJxX2hhbmRs ZXJzW2ldKGlycV9wZGV2c1tpXSk7CisJfQorfQorCisKK3ZvaWQgcW1ncl9lbmFibGVfaXJxKHVu c2lnbmVkIGludCBxdWV1ZSkKK3sKKwl1MzIgbWFzayA9IDEgPDwgcXVldWU7CisKKwlfX3Jhd193 cml0ZWwoX19yYXdfcmVhZGwoJnFtZ3JfcmVncy0+aXJxZW5bMF0pIHwgbWFzaywKKwkJICAgICAm cW1ncl9yZWdzLT5pcnFlblswXSk7Cit9CisKK3ZvaWQgcW1ncl9kaXNhYmxlX2lycSh1bnNpZ25l ZCBpbnQgcXVldWUpCit7CisJdTMyIG1hc2sgPSAxIDw8IHF1ZXVlOworCisJX19yYXdfd3JpdGVs KF9fcmF3X3JlYWRsKCZxbWdyX3JlZ3MtPmlycWVuWzBdKSAmIH5tYXNrLAorCQkgICAgICZxbWdy X3JlZ3MtPmlycWVuWzBdKTsKKwlfX3Jhd193cml0ZWwobWFzaywgJnFtZ3JfcmVncy0+aXJxc3Rh dFswXSk7IC8qIGNsZWFyICovCit9CisKKyNlbmRpZiAvKiBDT05GSUdfVVNFX0lSUSAqLworCitz dGF0aWMgaW5saW5lIHZvaWQgc2hpZnRfbWFzayh1MzIgKm1hc2spCit7CisJbWFza1szXSA9IG1h c2tbM10gPDwgMSB8IG1hc2tbMl0gPj4gMzE7CisJbWFza1syXSA9IG1hc2tbMl0gPDwgMSB8IG1h c2tbMV0gPj4gMzE7CisJbWFza1sxXSA9IG1hc2tbMV0gPDwgMSB8IG1hc2tbMF0gPj4gMzE7CisJ bWFza1swXSA8PD0gMTsKK30KKworI2lmIERFQlVHX1FNR1IKK3ZvaWQgcW1ncl9yZXF1ZXN0X3F1 ZXVlKHVuc2lnbmVkIGludCBxdWV1ZSwgdW5zaWduZWQgaW50IGxlbiAvKiBkd29yZHMgKi8sCisJ CQl1bnNpZ25lZCBpbnQgbmVhcmx5X2VtcHR5X3dhdGVybWFyaywKKwkJCXVuc2lnbmVkIGludCBu ZWFybHlfZnVsbF93YXRlcm1hcmssCisJCQljb25zdCBjaGFyICpkZXNjX2Zvcm1hdCwgY29uc3Qg Y2hhciogbmFtZSkKKyNlbHNlCit2b2lkIF9fcW1ncl9yZXF1ZXN0X3F1ZXVlKHVuc2lnbmVkIGlu dCBxdWV1ZSwgdW5zaWduZWQgaW50IGxlbiAvKiBkd29yZHMgKi8sCisJCQkgIHVuc2lnbmVkIGlu dCBuZWFybHlfZW1wdHlfd2F0ZXJtYXJrLAorCQkJICB1bnNpZ25lZCBpbnQgbmVhcmx5X2Z1bGxf d2F0ZXJtYXJrKQorI2VuZGlmCit7CisJdTMyIGNmZywgYWRkciA9IDAsIG1hc2tbNF07IC8qIGlu IDE2LWR3b3JkcyAqLworCisJQlVHX09OKHF1ZXVlID49IEhBTEZfUVVFVUVTKTsKKwlCVUdfT04o KG5lYXJseV9lbXB0eV93YXRlcm1hcmsgfCBuZWFybHlfZnVsbF93YXRlcm1hcmspICYgfjcpOwor CisJc3dpdGNoIChsZW4pIHsKKwljYXNlICAxNjoKKwkJY2ZnID0gMCA8PCAyNDsKKwkJbWFza1sw XSA9IDB4MTsKKwkJYnJlYWs7CisJY2FzZSAgMzI6CisJCWNmZyA9IDEgPDwgMjQ7CisJCW1hc2tb MF0gPSAweDM7CisJCWJyZWFrOworCWNhc2UgIDY0OgorCQljZmcgPSAyIDw8IDI0OworCQltYXNr WzBdID0gMHhGOworCQlicmVhazsKKwljYXNlIDEyODoKKwkJY2ZnID0gMyA8PCAyNDsKKwkJbWFz a1swXSA9IDB4RkY7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCUJVRygpOworCX0KKworCWNmZyB8 PSBuZWFybHlfZW1wdHlfd2F0ZXJtYXJrIDw8IDI2OworCWNmZyB8PSBuZWFybHlfZnVsbF93YXRl cm1hcmsgPDwgMjk7CisJbGVuIC89IDE2OyAvKiBpbiAxNi1kd29yZHM6IDEsIDIsIDQgb3IgOCAq LworCW1hc2tbMV0gPSBtYXNrWzJdID0gbWFza1szXSA9IDA7CisKKwlCVUdfT04oX19yYXdfcmVh ZGwoJnFtZ3JfcmVncy0+c3JhbVtxdWV1ZV0pKTsKKworCXdoaWxlICgxKSB7CisJCWlmICghKHVz ZWRfc3JhbV9iaXRtYXBbMF0gJiBtYXNrWzBdKSAmJgorCQkgICAgISh1c2VkX3NyYW1fYml0bWFw WzFdICYgbWFza1sxXSkgJiYKKwkJICAgICEodXNlZF9zcmFtX2JpdG1hcFsyXSAmIG1hc2tbMl0p ICYmCisJCSAgICAhKHVzZWRfc3JhbV9iaXRtYXBbM10gJiBtYXNrWzNdKSkKKwkJCWJyZWFrOyAv KiBmb3VuZCBmcmVlIHNwYWNlICovCisKKwkJYWRkcisrOworCQlzaGlmdF9tYXNrKG1hc2spOwor CQlpZiAoYWRkciArIGxlbiA+IEFSUkFZX1NJWkUocW1ncl9yZWdzLT5zcmFtKSkgeworCQkJZnBy aW50ZihzdGRlcnIsICJxbWdyOiBubyBmcmVlIFNSQU0gc3BhY2UgZm9yIgorCQkJCSIgcXVldWUg JWlcbiIsIHF1ZXVlKTsKKwkJCUJVRygpOworCQl9CisJfQorCisJdXNlZF9zcmFtX2JpdG1hcFsw XSB8PSBtYXNrWzBdOworCXVzZWRfc3JhbV9iaXRtYXBbMV0gfD0gbWFza1sxXTsKKwl1c2VkX3Ny YW1fYml0bWFwWzJdIHw9IG1hc2tbMl07CisJdXNlZF9zcmFtX2JpdG1hcFszXSB8PSBtYXNrWzNd OworCV9fcmF3X3dyaXRlbChjZmcgfCAoYWRkciA8PCAxNCksICZxbWdyX3JlZ3MtPnNyYW1bcXVl dWVdKTsKKyNpZiBERUJVR19RTUdSCisJLyogbm8gc25wcmludGYoKSAqLworCXNwcmludGYocW1n cl9xdWV1ZV9kZXNjc1txdWV1ZV0sIGRlc2NfZm9ybWF0LCBuYW1lKTsKKwlmcHJpbnRmKHN0ZGVy ciwgInFtZ3I6IHJlcXVlc3RlZCBxdWV1ZSAlcyglaSkgYWRkciA9IDB4JTAyWFxuIiwKKwkJcW1n cl9xdWV1ZV9kZXNjc1txdWV1ZV0sIHF1ZXVlLCBhZGRyKTsKKyNlbmRpZgorfQorCit2b2lkIHFt Z3JfcmVsZWFzZV9xdWV1ZSh1bnNpZ25lZCBpbnQgcXVldWUpCit7CisJdTMyIGNmZywgYWRkciwg bWFza1s0XTsKKworCUJVR19PTihxdWV1ZSA+PSBIQUxGX1FVRVVFUyk7IC8qIG5vdCBpbiB2YWxp ZCByYW5nZSAqLworCisJY2ZnID0gX19yYXdfcmVhZGwoJnFtZ3JfcmVncy0+c3JhbVtxdWV1ZV0p OworCWFkZHIgPSAoY2ZnID4+IDE0KSAmIDB4RkY7CisKKwlCVUdfT04oIWFkZHIpOyAvKiBub3Qg cmVxdWVzdGVkICovCisKKwlzd2l0Y2ggKChjZmcgPj4gMjQpICYgMykgeworCWNhc2UgMDogbWFz a1swXSA9IDB4MTsgYnJlYWs7CisJY2FzZSAxOiBtYXNrWzBdID0gMHgzOyBicmVhazsKKwljYXNl IDI6IG1hc2tbMF0gPSAweEY7IGJyZWFrOworCWNhc2UgMzogbWFza1swXSA9IDB4RkY7IGJyZWFr OworCX0KKworCW1hc2tbMV0gPSBtYXNrWzJdID0gbWFza1szXSA9IDA7CisKKwl3aGlsZSAoYWRk ci0tKQorCQlzaGlmdF9tYXNrKG1hc2spOworCisjaWYgREVCVUdfUU1HUgorCWZwcmludGYoc3Rk ZXJyLCAicW1ncjogcmVsZWFzaW5nIHF1ZXVlICVzKCVpKVxuIiwKKwkJcW1ncl9xdWV1ZV9kZXNj c1txdWV1ZV0sIHF1ZXVlKTsKKwlxbWdyX3F1ZXVlX2Rlc2NzW3F1ZXVlXVswXSA9ICdceDAnOwor I2VuZGlmCisJX19yYXdfd3JpdGVsKDAsICZxbWdyX3JlZ3MtPnNyYW1bcXVldWVdKTsKKworCXVz ZWRfc3JhbV9iaXRtYXBbMF0gJj0gfm1hc2tbMF07CisJdXNlZF9zcmFtX2JpdG1hcFsxXSAmPSB+ bWFza1sxXTsKKwl1c2VkX3NyYW1fYml0bWFwWzJdICY9IH5tYXNrWzJdOworCXVzZWRfc3JhbV9i aXRtYXBbM10gJj0gfm1hc2tbM107CisjaWZkZWYgQ09ORklHX1VTRV9JUlEKKwlpcnFfaGFuZGxl cnNbcXVldWVdID0gTlVMTDsgLyogY2F0Y2ggSVJRIGJ1Z3MgKi8KKyNlbmRpZgorCisJd2hpbGUg KChhZGRyID0gcW1ncl9nZXRfZW50cnkocXVldWUpKSkKKwkJZnByaW50ZihzdGRlcnIsICJxbWdy OiByZWxlYXNlZCBxdWV1ZSAlaSBub3QgZW1wdHk6IDB4JTA4WFxuIiwKKwkJCXF1ZXVlLCBhZGRy KTsKK30KKworc3RhdGljIGludCBfX2luaXQgcW1ncl9pbml0KHZvaWQpCit7CisJaW50IGk7Cisj aWZkZWYgQ09ORklHX1VTRV9JUlEKKwlpbnRlcnJ1cHRfaGFuZGxlcl90ICpoYW5kbGVyOworI2Vu ZGlmCisKKwkvKiByZXNldCBxbWdyIHJlZ2lzdGVycyAqLworCWZvciAoaSA9IDA7IGkgPCA0OyBp KyspIHsKKwkJX19yYXdfd3JpdGVsKDB4MzMzMzMzMzMsICZxbWdyX3JlZ3MtPnN0YXQxW2ldKTsK KwkJX19yYXdfd3JpdGVsKDAsICZxbWdyX3JlZ3MtPmlycXNyY1tpXSk7CisJfQorCWZvciAoaSA9 IDA7IGkgPCAyOyBpKyspIHsKKwkJX19yYXdfd3JpdGVsKDAsICZxbWdyX3JlZ3MtPnN0YXQyW2ld KTsKKwkJX19yYXdfd3JpdGVsKDB4RkZGRkZGRkYsICZxbWdyX3JlZ3MtPmlycXN0YXRbaV0pOyAv KiBjbGVhciAqLworCQlfX3Jhd193cml0ZWwoMCwgJnFtZ3JfcmVncy0+aXJxZW5baV0pOworCX0K KworCV9fcmF3X3dyaXRlbCgweEZGRkZGRkZGLCAmcW1ncl9yZWdzLT5zdGF0bmVfaCk7CisJX19y YXdfd3JpdGVsKDAsICZxbWdyX3JlZ3MtPnN0YXRmX2gpOworCisJZm9yIChpID0gMDsgaSA8IFFV RVVFUzsgaSsrKQorCQlfX3Jhd193cml0ZWwoMCwgJnFtZ3JfcmVncy0+c3JhbVtpXSk7CisKKyNp ZmRlZiBDT05GSUdfVVNFX0lSUQorCWlmIChjcHVfaXNfaXhwNDJ4X3Jldl9hMCgpKQorCQloYW5k bGVyID0gcW1ncl9pcnExX2EwOworCWVsc2UKKwkJaGFuZGxlciA9IHFtZ3JfaXJxMTsKKworCWly cV9pbnN0YWxsX2hhbmRsZXIoSVhQNDI1X1FNMV9JUlEsIGhhbmRsZXIsIE5VTEwpOworI2VuZGlm CisJdXNlZF9zcmFtX2JpdG1hcFswXSA9IDB4RjsgLyogNCBmaXJzdCBwYWdlcyByZXNlcnZlZCBm b3IgY29uZmlnICovCisJcmV0dXJuIDA7Cit9CisKK2NvcmVkZXZpY2VfaW5pdGNhbGwocW1ncl9p bml0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L0tjb25maWcgYi9kcml2ZXJzL25ldC9LY29u ZmlnCmluZGV4IDI3MzYwOTQuLmQ2MTY0ZWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L0tjb25m aWcKKysrIGIvZHJpdmVycy9uZXQvS2NvbmZpZwpAQCAtOTMsNiArOTMsMTQgQEAgY29uZmlnIERS SVZFUl9ORVRfTUFDQgogCWRlcGVuZHMgb24gSEFTX01BQ0IKIAlzZWxlY3QgUEhZTElCCiAKK2Nv bmZpZyBEUklWRVJfTkVUX0lYUDRYWF9FVEgKKwl0cmlzdGF0ZSAiSW50ZWwgSVhQNHh4IEV0aGVy bmV0IHN1cHBvcnQiCisJZGVwZW5kcyBvbiBBUkNIX0lYUDRYWCAmJiBJWFA0WFhfTlBFICYmIElY UDRYWF9RTUdSCisJc2VsZWN0IFBIWUxJQgorCWhlbHAKKwkgIFNheSBZIGhlcmUgaWYgeW91IHdh bnQgdG8gdXNlIGJ1aWx0LWluIEV0aGVybmV0IHBvcnRzCisJICBvbiBJWFA0eHggcHJvY2Vzc29y LgorCiBjb25maWcgRFJJVkVSX05FVF9UQVAKIAlib29sICJ0YXAgRXRoZXJuZXQgZHJpdmVyIgog CWRlcGVuZHMgb24gTElOVVgKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L01ha2VmaWxlIGIvZHJp dmVycy9uZXQvTWFrZWZpbGUKaW5kZXggNDIxMzZmOC4uNGEyY2VkOSAxMDA2NDQKLS0tIGEvZHJp dmVycy9uZXQvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9uZXQvTWFrZWZpbGUKQEAgLTE0LDYgKzE0 LDcgQEAgb2JqLSQoQ09ORklHX0RSSVZFUl9ORVRfTUFDQikJCSs9IG1hY2Iubwogb2JqLSQoQ09O RklHX0RSSVZFUl9ORVRfVEFQKQkJKz0gdGFwLm8KIG9iai0kKENPTkZJR19QSFlMSUIpCQkJKz0g cGh5Lwogb2JqLSQoQ09ORklHX05FVF9VU0IpCQkJKz0gdXNiLworb2JqLSQoQ09ORklHX0RSSVZF Ul9ORVRfSVhQNFhYX0VUSCkJKz0gaXhwNHh4X2V0aC5vCiBvYmotJChDT05GSUdfRFJJVkVSX05F VF9UU0UpCQkrPSBhbHRlcmFfdHNlLm8KIG9iai0kKENPTkZJR19EUklWRVJfTkVUX0tTODg1MV9N TEwpCSs9IGtzODg1MV9tbGwubwogb2JqLSQoQ09ORklHX0RSSVZFUl9ORVRfREVTSUdOV0FSRSkJ Kz0gZGVzaWdud2FyZS5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9peHA0eHhfZXRoLmMgYi9k cml2ZXJzL25ldC9peHA0eHhfZXRoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uMWFlMzdmMQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvbmV0L2l4cDR4eF9ldGguYwpA QCAtMCwwICsxLDc0MSBAQAorLyoKKyAqIEludGVsIElYUDR4eCBFdGhlcm5ldCBkcml2ZXIgZm9y IExpbnV4CisgKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEtyenlzenRvZiBIYWxhc2EgPGtoY0Bw bS53YXcucGw+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB2 ZXJzaW9uIDIgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhcyBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBFdGhlcm5ldCBwb3J0 IGNvbmZpZyAoMHgwMCBpcyBub3QgcHJlc2VudCBvbiBJWFA0MlgpOgorICoKKyAqIGxvZ2ljYWwg cG9ydAkJMHgwMAkJMHgxMAkJMHgyMAorICogTlBFCQkJMCAoTlBFLUEpCTEgKE5QRS1CKQkyIChO UEUtQykKKyAqIHBoeXNpY2FsIHBvcnQJMgkJMAkJMQorICogUlggcXVldWUgKHZhcmlhYmxlKQky MAkJMjEJCTIyCisgKiBUWCBxdWV1ZQkJMjMJCTI0CQkyNQorICogUlgtZnJlZSBxdWV1ZQkyNgkJ MjcJCTI4CisgKiBUWC1kb25lIHF1ZXVlIGlzIGFsd2F5cyAzMSwgcGVyLXBvcnQgUlggcXVldWUg aXMgY29uZmlndXJhYmxlCisgKgorICoKKyAqIFF1ZXVlIGVudHJpZXM6CisgKiBiaXRzIDAgLT4g MSAgLSBOUEUgSUQgKFJYIGFuZCBUWC1kb25lKQorICogYml0cyAwIC0+IDIgIC0gcHJpb3JpdHkg KFRYLCBwZXIgODAyLjFEKQorICogYml0cyAzIC0+IDQgIC0gcG9ydCBJRCAodXNlci1zZXQ/KQor ICogYml0cyA1IC0+IDMxIC0gcGh5c2ljYWwgZGVzY3JpcHRvciBhZGRyZXNzCisgKi8KKworI2lu Y2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGluaXQuaD4KKyNpbmNsdWRlIDxtYWxsb2MuaD4K KyNpbmNsdWRlIDxuZXQuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGFzbS9tbXUu aD4KKyNpbmNsdWRlIDxsaW51eC9taWkuaD4KKyNpbmNsdWRlIDxtYWNoL2l4cDR4eC1yZWdzLmg+ CisjaW5jbHVkZSA8bWFjaC9wbGF0Zm9ybS5oPgorI2luY2x1ZGUgPG1hY2gvY3B1Lmg+CisjaW5j bHVkZSA8bWFjaC9ucGUuaD4KKyNpbmNsdWRlIDxtYWNoL3FtZ3IuaD4KKworI2RlZmluZSBERUJV R19ERVNDCQkwCisjZGVmaW5lIERFQlVHX1JYCQkwCisjZGVmaW5lIERFQlVHX1RYCQkwCisjZGVm aW5lIERFQlVHX1BLVF9CWVRFUwkJMAorI2RlZmluZSBERUJVR19NRElPCQkwCisjZGVmaW5lIERF QlVHX09QRU4JCTAKKyNkZWZpbmUgREVCVUdfQ0xPU0UJCTAKKworI2RlZmluZSBSWF9ERVNDUwkJ MTYgLyogYWxzbyBsZW5ndGggb2YgYWxsIFJYIHF1ZXVlcyAqLworI2RlZmluZSBUWF9ERVNDUwkJ MTYgLyogYWxzbyBsZW5ndGggb2YgYWxsIFRYIHF1ZXVlcyAqLworI2RlZmluZSBUWERPTkVfUVVF VUVfTEVOCTE2IC8qIGR3b3JkcyAqLworCisjZGVmaW5lIE1BWF9NUlUJCQkxNTM2IC8qIDB4NjAw ICovCisjZGVmaW5lIFJYX0JVRkZfU0laRQkJTUFYX01SVQorCisjZGVmaW5lIE1BWF9NRElPX1JF VFJJRVMJMTAwIC8qIG1pY3Jvc2Vjb25kcywgdHlwaWNhbGx5IDMwIGN5Y2xlcyAqLworI2RlZmlu ZSBNQVhfQ0xPU0VfV0FJVAkJMTAwMCAvKiBtaWNyb3NlY29uZHMsIHR5cGljYWxseSAyLTMgY3lj bGVzICovCisjZGVmaW5lIEVUSF9BTEVOCQk2CisKKyNkZWZpbmUgUEhZU0lDQUxfSUQocG9ydCkJ KCgocG9ydCktPm5wZS0+aWQgKyAyKSAlIDMpCisjZGVmaW5lIExPR0lDQUxfSUQocG9ydCkJKChw b3J0KS0+bnBlLT5pZCA8PCA0KQorI2RlZmluZSBSWF9RVUVVRShwb3J0KQkJKChwb3J0KS0+bnBl LT5pZCArIDIwKSAvKiBjYW4gYmUgY2hhbmdlZCAqLworI2RlZmluZSBUWF9RVUVVRShwb3J0KQkJ KChwb3J0KS0+bnBlLT5pZCArIDIzKQorI2RlZmluZSBSWEZSRUVfUVVFVUUocG9ydCkJKChwb3J0 KS0+bnBlLT5pZCArIDI2KQorI2RlZmluZSBUWERPTkVfUVVFVUUJCTMxCisKKy8qIFRYIENvbnRy b2wgUmVnaXN0ZXJzICovCisjZGVmaW5lIFRYX0NOVFJMMF9UWF9FTgkJMHgwMQorI2RlZmluZSBU WF9DTlRSTDBfSEFMRkRVUExFWAkweDAyCisjZGVmaW5lIFRYX0NOVFJMMF9SRVRSWQkJMHgwNAor I2RlZmluZSBUWF9DTlRSTDBfUEFEX0VOCTB4MDgKKyNkZWZpbmUgVFhfQ05UUkwwX0FQUEVORF9G Q1MJMHgxMAorI2RlZmluZSBUWF9DTlRSTDBfMkRFRkVSCTB4MjAKKyNkZWZpbmUgVFhfQ05UUkww X1JNSUkJCTB4NDAgLyogcmVkdWNlZCBNSUkgKi8KKyNkZWZpbmUgVFhfQ05UUkwxX1JFVFJJRVMJ MHgwRiAvKiA0IGJpdHMgKi8KKworLyogUlggQ29udHJvbCBSZWdpc3RlcnMgKi8KKyNkZWZpbmUg UlhfQ05UUkwwX1JYX0VOCQkweDAxCisjZGVmaW5lIFJYX0NOVFJMMF9QQURTVFJJUF9FTgkweDAy CisjZGVmaW5lIFJYX0NOVFJMMF9TRU5EX0ZDUwkweDA0CisjZGVmaW5lIFJYX0NOVFJMMF9QQVVT RV9FTgkweDA4CisjZGVmaW5lIFJYX0NOVFJMMF9MT09QX0VOCTB4MTAKKyNkZWZpbmUgUlhfQ05U UkwwX0FERFJfRkxUUl9FTgkweDIwCisjZGVmaW5lIFJYX0NOVFJMMF9SWF9SVU5UX0VOCTB4NDAK KyNkZWZpbmUgUlhfQ05UUkwwX0JDQVNUX0RJUwkweDgwCisjZGVmaW5lIFJYX0NOVFJMMV9ERUZF Ul9FTgkweDAxCisKKy8qIENvcmUgQ29udHJvbCBSZWdpc3RlciAqLworI2RlZmluZSBDT1JFX1JF U0VUCQkweDAxCisjZGVmaW5lIENPUkVfUlhfRklGT19GTFVTSAkweDAyCisjZGVmaW5lIENPUkVf VFhfRklGT19GTFVTSAkweDA0CisjZGVmaW5lIENPUkVfU0VORF9KQU0JCTB4MDgKKyNkZWZpbmUg Q09SRV9NRENfRU4JCTB4MTAgLyogTURJTyB1c2luZyBOUEUtQiBFVEgtMCBvbmx5ICovCisKKyNk ZWZpbmUgREVGQVVMVF9UWF9DTlRSTDAJKFRYX0NOVFJMMF9UWF9FTiB8IFRYX0NOVFJMMF9SRVRS WSB8ICAgICAgIFwKKwkJCQkgVFhfQ05UUkwwX1BBRF9FTiB8IFRYX0NOVFJMMF9BUFBFTkRfRkNT IHwgXAorCQkJCSBUWF9DTlRSTDBfMkRFRkVSKQorI2RlZmluZSBERUZBVUxUX1JYX0NOVFJMMAlS WF9DTlRSTDBfUlhfRU4KKyNkZWZpbmUgREVGQVVMVF9DT1JFX0NOVFJMCUNPUkVfTURDX0VOCisK KworLyogTlBFIG1lc3NhZ2UgY29kZXMgKi8KKyNkZWZpbmUgTlBFX0dFVFNUQVRVUwkJCSAweDAw CisjZGVmaW5lIE5QRV9FREJfU0VUUE9SVEFERFJFU1MJCSAweDAxCisjZGVmaW5lIE5QRV9FREJf R0VUTUFDQUREUkVTU0RBVEFCQVNFCSAweDAyCisjZGVmaW5lIE5QRV9FREJfU0VUTUFDQUREUkVT U1NEQVRBQkFTRQkgMHgwMworI2RlZmluZSBOUEVfR0VUU1RBVFMJCQkgMHgwNAorI2RlZmluZSBO UEVfUkVTRVRTVEFUUwkJCSAweDA1CisjZGVmaW5lIE5QRV9TRVRNQVhGUkFNRUxFTkdUSFMJCSAw eDA2CisjZGVmaW5lIE5QRV9WTEFOX1NFVFJYVEFHTU9ERQkJIDB4MDcKKyNkZWZpbmUgTlBFX1ZM QU5fU0VUREVGQVVMVFJYVklECSAweDA4CisjZGVmaW5lIE5QRV9WTEFOX1NFVFBPUlRWTEFOVEFC TEVFTlRSWQkgMHgwOQorI2RlZmluZSBOUEVfVkxBTl9TRVRQT1JUVkxBTlRBQkxFUkFOR0UJIDB4 MEEKKyNkZWZpbmUgTlBFX1ZMQU5fU0VUUlhRT1NFTlRSWQkJIDB4MEIKKyNkZWZpbmUgTlBFX1ZM QU5fU0VUUE9SVElERVhUUkFDVElPTk1PREUgMHgwQworI2RlZmluZSBOUEVfU1RQX1NFVEJMT0NL SU5HU1RBVEUJIDB4MEQKKyNkZWZpbmUgTlBFX0ZXX1NFVEZJUkVXQUxMTU9ERQkJIDB4MEUKKyNk ZWZpbmUgTlBFX1BDX1NFVEZSQU1FQ09OVFJPTERVUkFUSU9OSUQgMHgwRgorI2RlZmluZSBOUEVf UENfU0VUQVBNQUNUQUJMRQkJIDB4MTEKKyNkZWZpbmUgTlBFX1NFVExPT1BCQUNLX01PREUJCSAw eDEyCisjZGVmaW5lIE5QRV9QQ19TRVRCU1NJRFRBQkxFCQkgMHgxMworI2RlZmluZSBOUEVfQURE UkVTU19GSUxURVJfQ09ORklHCSAweDE0CisjZGVmaW5lIE5QRV9BUFBFTkRGQ1NDT05GSUcJCSAw eDE1CisjZGVmaW5lIE5QRV9OT1RJRllfTUFDX1JFQ09WRVJZX0RPTkUJIDB4MTYKKyNkZWZpbmUg TlBFX01BQ19SRUNPVkVSWV9TVEFSVAkJIDB4MTcKKworc3RydWN0IGV0aF9yZWdzIHsKKwl1MzIg dHhfY29udHJvbFsyXSwgX19yZXMxWzJdOwkJIC8qIDAwMCAqLworCXUzMiByeF9jb250cm9sWzJd LCBfX3JlczJbMl07CQkgLyogMDEwICovCisJdTMyIHJhbmRvbV9zZWVkLCBfX3JlczNbM107CQkg LyogMDIwICovCisJdTMyIHBhcnRpYWxfZW1wdHlfdGhyZXNob2xkLCBfX3JlczQ7CSAvKiAwMzAg Ki8KKwl1MzIgcGFydGlhbF9mdWxsX3RocmVzaG9sZCwgX19yZXM1OwkgLyogMDM4ICovCisJdTMy IHR4X3N0YXJ0X2J5dGVzLCBfX3JlczZbM107CQkgLyogMDQwICovCisJdTMyIHR4X2RlZmVycmFs LCByeF9kZWZlcnJhbCwgX19yZXM3WzJdOyAvKiAwNTAgKi8KKwl1MzIgdHhfMnBhcnRfZGVmZXJy YWxbMl0sIF9fcmVzOFsyXTsJIC8qIDA2MCAqLworCXUzMiBzbG90X3RpbWUsIF9fcmVzOVszXTsJ CSAvKiAwNzAgKi8KKwl1MzIgbWRpb19jb21tYW5kWzRdOwkJCSAvKiAwODAgKi8KKwl1MzIgbWRp b19zdGF0dXNbNF07CQkJIC8qIDA5MCAqLworCXUzMiBtY2FzdF9tYXNrWzZdLCBfX3JlczEwWzJd OwkJIC8qIDBBMCAqLworCXUzMiBtY2FzdF9hZGRyWzZdLCBfX3JlczExWzJdOwkJIC8qIDBDMCAq LworCXUzMiBpbnRfY2xvY2tfdGhyZXNob2xkLCBfX3JlczEyWzNdOwkgLyogMEUwICovCisJdTMy IGh3X2FkZHJbNl0sIF9fcmVzMTNbNjFdOwkJIC8qIDBGMCAqLworCXUzMiBjb3JlX2NvbnRyb2w7 CQkJIC8qIDFGQyAqLworfTsKKworLyogTlBFIG1lc3NhZ2Ugc3RydWN0dXJlICovCitzdHJ1Y3Qg bXNnIHsKKwl1OCBjbWQsIGV0aF9pZCwgcGFyYW1zWzZdOworfTsKKworLyogRXRoZXJuZXQgcGFj a2V0IGRlc2NyaXB0b3IsIDMyIGJ5dGVzICovCitzdHJ1Y3QgZGVzYyB7CisJdTggKm5leHQ7ICAg IC8qIHBvaW50ZXIgdG8gbmV4dCBidWZmZXIsIHVudXNlZCAqLworCisJdTE2IGJ1Zl9sZW47IC8q IGJ1ZmZlciBsZW5ndGggKi8KKwl1MTYgcGt0X2xlbjsgLyogcGFja2V0IGxlbmd0aCAqLworCXU4 ICpkYXRhOyAgICAvKiBwb2ludGVyIHRvIGRhdGEgYnVmZmVyIGluIFJBTSAqLworCXU4IGRlc3Rf aWQ7CisJdTggc3JjX2lkOworCXUxNiBmbGFnczsKKwl1OCBxb3M7CisJdTggcGFkbGVuOworCXUx NiB2bGFuX3RjaTsKKworCXU4IGRzdF9tYWNbRVRIX0FMRU5dLCBzcmNfbWFjW0VUSF9BTEVOXTsK K307CisKK3N0cnVjdCBpbyB7CisJc3RydWN0IGRlc2MgcnhfZGVzY190YWJbUlhfREVTQ1NdOyAv KiBhbGlnbm1lbnQ6IDB4MTAgKi8KKwlzdHJ1Y3QgZGVzYyB0eF9kZXNjX3RhYltUWF9ERVNDU107 CisJdTggcnhfYnVmZl90YWJbUlhfREVTQ1NdW01BWF9NUlVdOworCXU4IHR4X2J1ZmZfdGFiW1RY X0RFU0NTXVtNQVhfTVJVXTsKK307CisKK3N0cnVjdCBwb3J0IHsKKwlzdHJ1Y3QgaW8gKmlvOwor CXN0cnVjdCBldGhfcmVncyAqcmVnczsKKwlzdHJ1Y3QgbnBlICpucGU7CisJdTggZmlybXdhcmVb NF07CisJc3RydWN0IGV0aF9wbGF0X2luZm8gKnBpbmZvOworCXN0cnVjdCBtaWlfYnVzIG1paV9i dXM7CisJc3RydWN0IGV0aF9kZXZpY2UgZXRoOworfTsKKworc3RhdGljIHN0cnVjdCBldGhfcmVn cyAqbWRpb19yZWdzOyAvKiBtZGlvIGNvbW1hbmQgYW5kIHN0YXR1cyBvbmx5ICovCisKK3N0YXRp YyBpbnQgaXhwNHh4X21kaW9fY21kKGludCB3cml0ZSwgY29uc3Qgc3RydWN0IGRldmljZV9kICpk ZXYsIHVuc2lnbmVkIGNoYXIgcGh5X2lkLAorCQkJICAgdW5zaWduZWQgY2hhciBsb2NhdGlvbiwg dW5zaWduZWQgc2hvcnQgdmFsdWUpCit7CisJaW50IGN5Y2xlcyA9IDA7CisKKwlpZiAoX19yYXdf cmVhZGwoJm1kaW9fcmVncy0+bWRpb19jb21tYW5kWzNdKSAmIDB4ODApIHsKKwkJZnByaW50Zihz dGRlcnIsICIlcyVkOiBNSUkgbm90IHJlYWR5IHRvIHRyYW5zbWl0XG4iLCBkZXYtPm5hbWUsIGRl di0+aWQpOworCQlyZXR1cm4gLTE7CisJfQorCisJaWYgKHdyaXRlKSB7CisJCV9fcmF3X3dyaXRl bCh2YWx1ZSAmIDB4RkYsICZtZGlvX3JlZ3MtPm1kaW9fY29tbWFuZFswXSk7CisJCV9fcmF3X3dy aXRlbCh2YWx1ZSA+PiA4LCAmbWRpb19yZWdzLT5tZGlvX2NvbW1hbmRbMV0pOworCX0KKwlfX3Jh d193cml0ZWwoKChwaHlfaWQgPDwgNSkgfCBsb2NhdGlvbikgJiAweEZGLAorCQkgICAgICZtZGlv X3JlZ3MtPm1kaW9fY29tbWFuZFsyXSk7CisJX19yYXdfd3JpdGVsKChwaHlfaWQgPj4gMykgfCAo d3JpdGUgPDwgMikgfCAweDgwIC8qIEdPICovLAorCQkgICAgICZtZGlvX3JlZ3MtPm1kaW9fY29t bWFuZFszXSk7CisKKwl3aGlsZSAoKGN5Y2xlcyA8IE1BWF9NRElPX1JFVFJJRVMpICYmCisJICAg ICAgIChfX3Jhd19yZWFkbCgmbWRpb19yZWdzLT5tZGlvX2NvbW1hbmRbM10pICYgMHg4MCkpIHsK KwkJdWRlbGF5KDEpOworCQljeWNsZXMrKzsKKwl9CisKKwlpZiAoY3ljbGVzID09IE1BWF9NRElP X1JFVFJJRVMpIHsKKwkJZnByaW50ZihzdGRlcnIsICIlcyVkOiBNSUkgd3JpdGUgZmFpbGVkXG4i LCBkZXYtPm5hbWUsIGRldi0+aWQpOworCQlyZXR1cm4gLTE7CisJfQorCisjaWYgREVCVUdfTURJ TworCWZwcmludGYoc3RkZXJyLCAiJXMlZDogbWRpb18lcygpIHRvb2sgJWkgY3ljbGVzXG4iLCBk ZXYtPm5hbWUsIGRldi0+aWQsCisJCXdyaXRlID8gIndyaXRlIiA6ICJyZWFkIiwgY3ljbGVzKTsK KyNlbmRpZgorCisJaWYgKHdyaXRlKQorCQlyZXR1cm4gMDsKKworCWlmIChfX3Jhd19yZWFkbCgm bWRpb19yZWdzLT5tZGlvX3N0YXR1c1szXSkgJiAweDgwKSB7CisjaWYgREVCVUdfTURJTworCQlm cHJpbnRmKHN0ZGVyciwgIiVzJWQ6IE1JSSByZWFkIGZhaWxlZFxuIiwgZGV2LT5uYW1lLCBkZXYt PmlkKTsKKyNlbmRpZgorCQlyZXR1cm4gLTE7CisJfQorCisJdmFsdWUgPSAoX19yYXdfcmVhZGwo Jm1kaW9fcmVncy0+bWRpb19zdGF0dXNbMF0pICYgMHhGRikgfAorCQkoKF9fcmF3X3JlYWRsKCZt ZGlvX3JlZ3MtPm1kaW9fc3RhdHVzWzFdKSAmIDB4RkYpIDw8IDgpOworI2lmIERFQlVHX01ESU8K KwlmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6IE1JSSByZWFkIFslaV0gLT4gMHglWFxuIiwgZGV2LT5u YW1lLCBkZXYtPmlkLCBsb2NhdGlvbiwgdmFsdWUpOworI2VuZGlmCisKKwlyZXR1cm4gdmFsdWU7 Cit9CisKK3N0YXRpYyBpbnQgaXhwNHh4X21kaW9fcmVhZChzdHJ1Y3QgbWlpX2J1cyAqbWlpLCBp bnQgcGh5X2lkLCBpbnQgbG9jYXRpb24pCit7CisJaW50IHJldCA9IGl4cDR4eF9tZGlvX2NtZCgw LCAmbWlpLT5kZXYsIHBoeV9pZCwgbG9jYXRpb24sIDApOworCXJldHVybiByZXQ7Cit9CisKK3N0 YXRpYyBpbnQgaXhwNHh4X21kaW9fd3JpdGUoc3RydWN0IG1paV9idXMgKm1paSwgaW50IHBoeV9p ZCwgaW50IGxvY2F0aW9uLCB1MTYgdmFsdWUpCit7CisJaW50IHJldCA9IGl4cDR4eF9tZGlvX2Nt ZCgxLCAmbWlpLT5kZXYsIHBoeV9pZCwgbG9jYXRpb24sIHZhbHVlKTsKKyNpZiBERUJVR19NRElP CisJZnByaW50ZihzdGRlcnIsICIlcyVkOiBNSUkgd3JpdGUgWyVpXSA8LSAweCVYLCBlcnIgPSAl aVxuIiwKKwkJbWlpLT5kZXYubmFtZSwgbWlpLT5kZXYuaWQsIGxvY2F0aW9uLCB2YWx1ZSwgcmV0 KTsKKyNlbmRpZgorCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIGl4cDR4eF9hZGp1c3Rf bGluayhzdHJ1Y3QgZXRoX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBwb3J0ICpwb3J0ID0gZGV2 LT5wcml2OworCisJaWYgKGRldi0+cGh5ZGV2LT5kdXBsZXgpCisJCV9fcmF3X3dyaXRlbChERUZB VUxUX1RYX0NOVFJMMCAmIH5UWF9DTlRSTDBfSEFMRkRVUExFWCwKKwkJCSAgICAgJnBvcnQtPnJl Z3MtPnR4X2NvbnRyb2xbMF0pOworCWVsc2UKKwkJX19yYXdfd3JpdGVsKERFRkFVTFRfVFhfQ05U UkwwIHwgVFhfQ05UUkwwX0hBTEZEVVBMRVgsCisJCQkgICAgICZwb3J0LT5yZWdzLT50eF9jb250 cm9sWzBdKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGRlYnVnX3BrdChzdHJ1Y3QgZXRoX2Rl dmljZSAqZGV2LCBjb25zdCBjaGFyICpmdW5jLAorCQkJICAgICB1OCAqZGF0YSwgaW50IGxlbikK K3sKKyNpZiBERUJVR19QS1RfQllURVMKKwlpbnQgaTsKKworCWZwcmludGYoc3RkZXJyLCAiJXMl ZDogJXMoJTRpKSAiLCBkZXYtPmRldi5uYW1lLCBkZXYtPmRldi5pZCwgZnVuYywgbGVuKTsKKwlm b3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKwkJaWYgKGkgPj0gREVCVUdfUEtUX0JZVEVTKQor CQkJYnJlYWs7CisJCWZwcmludGYoc3RkZXJyLCAiJXMlMDJYIiwKKwkJCSgoaSA9PSA2KSB8fCAo aSA9PSAxMikgfHwgKGkgPj0gMTQpKSA/ICIgIiA6ICIiLAorCQkJZGF0YVtpXSk7CisJfQorCWZw cmludGYoc3RkZXJyLCAiXG4iKTsKKyNlbmRpZgorfQorCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBk ZWJ1Z19kZXNjKHN0cnVjdCBkZXNjICpkZXNjKQoreworI2lmIERFQlVHX0RFU0MKKwlmcHJpbnRm KHN0ZGVyciwgIiUwN1g6ICVYICUzWCAlM1ggJTA3WCAlMlggPCAlMlggJTRYICVYIgorCQkiICVY ICVYICUwMlglMDJYJTAyWCUwMlglMDJYJTAyWCA8ICUwMlglMDJYJTAyWCUwMlglMDJYJTAyWFxu IiwKKwkJKHUzMilkZXNjLCAodTMyKWRlc2MtPm5leHQsIGRlc2MtPmJ1Zl9sZW4sIGRlc2MtPnBr dF9sZW4sCisJCSh1MzIpZGVzYy0+ZGF0YSwgZGVzYy0+ZGVzdF9pZCwgZGVzYy0+c3JjX2lkLCBk ZXNjLT5mbGFncywKKwkJZGVzYy0+cW9zLCBkZXNjLT5wYWRsZW4sIGRlc2MtPnZsYW5fdGNpLAor CQlkZXNjLT5kc3RfbWFjWzBdLCBkZXNjLT5kc3RfbWFjWzFdLCBkZXNjLT5kc3RfbWFjWzJdLAor CQlkZXNjLT5kc3RfbWFjWzNdLCBkZXNjLT5kc3RfbWFjWzRdLCBkZXNjLT5kc3RfbWFjWzVdLAor CQlkZXNjLT5zcmNfbWFjWzBdLCBkZXNjLT5zcmNfbWFjWzFdLCBkZXNjLT5zcmNfbWFjWzJdLAor CQlkZXNjLT5zcmNfbWFjWzNdLCBkZXNjLT5zcmNfbWFjWzRdLCBkZXNjLT5zcmNfbWFjWzVdKTsK KyNlbmRpZgorfQorCitzdGF0aWMgaW5saW5lIGludCBxdWV1ZV9nZXRfZGVzYyh1bnNpZ25lZCBp bnQgcXVldWUsIHN0cnVjdCBwb3J0ICpwb3J0LAorCQkJCSBpbnQgaXNfdHgpCit7CisJdTMyIGFk ZHIsIG47CisJc3RydWN0IGRlc2MgKnRhYjsKKworCWlmICghKGFkZHIgPSBxbWdyX2dldF9lbnRy eShxdWV1ZSkpKQorCQlyZXR1cm4gLTE7CisKKwlhZGRyICY9IH4weDFGOyAvKiBtYXNrIG91dCBu b24tYWRkcmVzcyBiaXRzICovCisJdGFiID0gaXNfdHggPyBwb3J0LT5pby0+dHhfZGVzY190YWIg OiBwb3J0LT5pby0+cnhfZGVzY190YWI7CisJbiA9IChhZGRyIC0gKHUzMil0YWIpIC8gc2l6ZW9m KHN0cnVjdCBkZXNjKTsKKwlCVUdfT04obiA+PSAoaXNfdHggPyBUWF9ERVNDUyA6IFJYX0RFU0NT KSk7CisJZGVidWdfZGVzYygoc3RydWN0IGRlc2MqKWFkZHIpOworCUJVR19PTih0YWJbbl0ubmV4 dCk7CisJcmV0dXJuIG47Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBxdWV1ZV9wdXRfZGVzYyh1 bnNpZ25lZCBpbnQgcXVldWUsIHN0cnVjdCBkZXNjICpkZXNjKQoreworCWRlYnVnX2Rlc2MoZGVz Yyk7CisJQlVHX09OKCgodTMyKWRlc2MpICYgMHgxRik7CisJcW1ncl9wdXRfZW50cnkocXVldWUs ICh1MzIpZGVzYyk7CisJLyogRG9uJ3QgY2hlY2sgZm9yIHF1ZXVlIG92ZXJmbG93IGhlcmUsIHdl J3ZlIGFsbG9jYXRlZCBzdWZmaWNpZW50CisJICAgbGVuZ3RoIGFuZCBxdWV1ZXMgPj0gMzIgZG9u J3Qgc3VwcG9ydCB0aGlzIGNoZWNrIGFueXdheS4gKi8KK30KKworCitzdGF0aWMgaW50IGl4cDR4 eF9ldGhfcG9sbChzdHJ1Y3QgZXRoX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBwb3J0ICpwb3J0 ID0gZGV2LT5wcml2OworCXN0cnVjdCBkZXNjICpkZXNjOworCXU4ICpidWZmOworCWludCBuLCBs ZW47CisKKyNpZiBERUJVR19SWAorCWZwcmludGYoc3RkZXJyLCAiJXMlZDogZXRoX3BvbGxcbiIs IGRldi0+ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkKTsKKyNlbmRpZgorCisJaWYgKChuID0gcXVldWVf Z2V0X2Rlc2MoUlhfUVVFVUUocG9ydCksIHBvcnQsIDApKSA8IDApIHsKKyNpZiBERUJVR19SWAor CQlmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6IGV0aF9wb2xsID0gbm8gcGFja2V0IHJlY2VpdmVkXG4i LCBkZXYtPmRldi5uYW1lLCBkZXYtPmRldi5pZCk7CisjZW5kaWYKKwkJcmV0dXJuIDA7CisJfQor CisJYmFycmllcigpOworCWRlc2MgPSAmcG9ydC0+aW8tPnJ4X2Rlc2NfdGFiW25dOworCWJ1ZmYg PSBwb3J0LT5pby0+cnhfYnVmZl90YWJbbl07CisJbGVuID0gZGVzYy0+cGt0X2xlbjsKKwkvKiBw cm9jZXNzIHJlY2VpdmVkIGZyYW1lICovCisJbWVtY3B5KCh2b2lkICopTmV0UnhQYWNrZXRzWzBd LCBidWZmLCBsZW4pOworCWRlYnVnX3BrdChkZXYsICJSWCIsIGRlc2MtPmRhdGEsIGxlbik7CisK KwkvKiBwdXQgdGhlIG5ldyBidWZmZXIgb24gUlgtZnJlZSBxdWV1ZSAqLworCWRlc2MtPmJ1Zl9s ZW4gPSBNQVhfTVJVOworCWRlc2MtPnBrdF9sZW4gPSAwOworCXF1ZXVlX3B1dF9kZXNjKFJYRlJF RV9RVUVVRShwb3J0KSwgZGVzYyk7CisKKwluZXRfcmVjZWl2ZShOZXRSeFBhY2tldHNbMF0sIGxl bik7CisKKyNpZiBERUJVR19SWAorCWZwcmludGYoc3RkZXJyLCAiJXMlZDogZXRoX3BvbGwgZW5k XG4iLCBkZXYtPmRldi5uYW1lLCBkZXYtPmRldi5pZCk7CisjZW5kaWYKKwlyZXR1cm4gMDsKK30K KworCitzdGF0aWMgaW50IGl4cDR4eF9ldGhfeG1pdChzdHJ1Y3QgZXRoX2RldmljZSAqZGV2LCB2 b2lkICpkYXRhLCBpbnQgbGVuKQoreworCXN0cnVjdCBwb3J0ICpwb3J0ID0gZGV2LT5wcml2Owor CWludCBuOworCXN0cnVjdCBkZXNjICpkZXNjOworCisjaWYgREVCVUdfVFgKKwlmcHJpbnRmKHN0 ZGVyciwgIiVzJWQ6IGV0aF94bWl0XG4iLCBkZXYtPmRldi5uYW1lLCBkZXYtPmRldi5pZCk7Cisj ZW5kaWYKKworCWlmICh1bmxpa2VseShsZW4gPiAxNTAwKSkKKwkJcmV0dXJuIC0xOworCisJZGVi dWdfcGt0KGRldiwgIlRYIiwgZGF0YSwgbGVuKTsKKworCWlmICgobiA9IHF1ZXVlX2dldF9kZXNj KFRYRE9ORV9RVUVVRSwgcG9ydCwgMSkpIDwgMCkKKwkJcmV0dXJuIC0xOyAvKiBubyBmcmVlIGJ1 ZmZlcnMgKi8KKwlkZXNjID0gJnBvcnQtPmlvLT50eF9kZXNjX3RhYltuXTsKKwlkZXNjLT5kYXRh ID0gcG9ydC0+aW8tPnR4X2J1ZmZfdGFiW25dOworCWRlc2MtPmJ1Zl9sZW4gPSBkZXNjLT5wa3Rf bGVuID0gbGVuOworCW1lbWNweShkZXNjLT5kYXRhLCBkYXRhLCBsZW4pOworCisJLyogTlBFIGZp cm13YXJlIHBhZHMgc2hvcnQgZnJhbWVzIHdpdGggemVyb3MgaW50ZXJuYWxseSAqLworCS8vIHdt YigpOworCWJhcnJpZXIoKTsKKwlxdWV1ZV9wdXRfZGVzYyhUWF9RVUVVRShwb3J0KSwgZGVzYyk7 CisKKyNpZiBERUJVR19UWAorCWZwcmludGYoc3RkZXJyLCAiJXMlZDogZXRoX3htaXQgZW5kXG4i LCBkZXYtPmRldi5uYW1lLCBkZXYtPmRldi5pZCk7CisjZW5kaWYKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIHZvaWQgcmVxdWVzdF9xdWV1ZXMoc3RydWN0IHBvcnQgKnBvcnQsIHN0cnVjdCBldGhf ZGV2aWNlICpkZXYpCit7CisJcW1ncl9yZXF1ZXN0X3F1ZXVlKFJYRlJFRV9RVUVVRShwb3J0KSwg UlhfREVTQ1MsIDAsIDAsICIlczpSWC1mcmVlIiwgZGV2LT5kZXYubmFtZSk7CisJcW1ncl9yZXF1 ZXN0X3F1ZXVlKFJYX1FVRVVFKHBvcnQpLCBSWF9ERVNDUywgMCwgMCwgIiVzOlJYIiwgZGV2LT5k ZXYubmFtZSk7CisJcW1ncl9yZXF1ZXN0X3F1ZXVlKFRYX1FVRVVFKHBvcnQpLCBUWF9ERVNDUywg MCwgMCwgIiVzOlRYIiwgZGV2LT5kZXYubmFtZSk7CisKKwkvKiBDb21tb24gVFgtZG9uZSBxdWV1 ZSBoYW5kbGVzIGJ1ZmZlcnMgc2VudCBvdXQgYnkgdGhlIE5QRXMgKi8KKwlxbWdyX3JlcXVlc3Rf cXVldWUoVFhET05FX1FVRVVFLCBUWERPTkVfUVVFVUVfTEVOLCAwLCAwLAorCQkJICAgIiVzOlRY LWRvbmUiLCBkZXYtPmRldi5uYW1lKTsKK30KKworc3RhdGljIHZvaWQgcmVsZWFzZV9xdWV1ZXMo c3RydWN0IHBvcnQgKnBvcnQpCit7CisJcW1ncl9yZWxlYXNlX3F1ZXVlKFJYRlJFRV9RVUVVRShw b3J0KSk7CisJcW1ncl9yZWxlYXNlX3F1ZXVlKFJYX1FVRVVFKHBvcnQpKTsKKwlxbWdyX3JlbGVh c2VfcXVldWUoVFhfUVVFVUUocG9ydCkpOworCXFtZ3JfcmVsZWFzZV9xdWV1ZShUWERPTkVfUVVF VUUpOworfQorCitzdGF0aWMgdm9pZCBpbml0X3F1ZXVlcyhzdHJ1Y3QgcG9ydCAqcG9ydCkKK3sK KwlpbnQgaTsKKworCW1lbXNldChwb3J0LT5pby0+dHhfZGVzY190YWIsIDAsIHNpemVvZihwb3J0 LT5pby0+dHhfZGVzY190YWIpKTsgLyogZGVzY3MgKi8KKwltZW1zZXQocG9ydC0+aW8tPnJ4X2Rl c2NfdGFiLCAwLCBzaXplb2YocG9ydC0+aW8tPnJ4X2Rlc2NfdGFiKSk7CisKKwkvKiBTZXR1cCBS WCBidWZmZXJzICovCisJZm9yIChpID0gMDsgaSA8IFJYX0RFU0NTOyBpKyspIHsKKwkJc3RydWN0 IGRlc2MgKmRlc2MgPSAmcG9ydC0+aW8tPnJ4X2Rlc2NfdGFiW2ldOworCQlkZXNjLT5idWZfbGVu ID0gTUFYX01SVTsKKwkJZGVzYy0+ZGF0YSA9IHBvcnQtPmlvLT5yeF9idWZmX3RhYltpXTsKKwl9 Cit9CisKK3N0YXRpYyBpbnQgaXhwNHh4X2V0aF9vcGVuKHN0cnVjdCBldGhfZGV2aWNlICpkZXYp Cit7CisJc3RydWN0IHBvcnQgKnBvcnQgPSBkZXYtPnByaXY7CisJc3RydWN0IG5wZSAqbnBlID0g cG9ydC0+bnBlOworCXN0cnVjdCBtc2cgbXNnOworCWludCBpLCBlcnI7CisKKyNpZiBERUJVR19P UEVOCisJZnByaW50ZihzdGRlcnIsICIlcyVkOiBvcGVuaW5nICVwXG4iLCBkZXYtPmRldi5uYW1l LCBkZXYtPmRldi5pZCwgZGV2KTsKKyNlbmRpZgorCisJaWYgKCFucGVfcnVubmluZyhucGUpKSB7 CisJCWVyciA9IG5wZV9sb2FkX2Zpcm13YXJlKG5wZSk7CisJCWlmIChlcnIpCisJCQlyZXR1cm4g ZXJyOworCisJCWlmIChucGVfcmVjdl9tZXNzYWdlKG5wZSwgJm1zZywgIkVUSF9HRVRfU1RBVFVT IikpIHsKKwkJCWZwcmludGYoc3RkZXJyLCAiJXMlZDogJXMgbm90IHJlc3BvbmRpbmdcbiIsIGRl di0+ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkLCBucGUtPm5hbWUpOworCQkJcmV0dXJuIC1FSU87CisJ CX0KKwkJbWVtY3B5KHBvcnQtPmZpcm13YXJlLCBtc2cucGFyYW1zICsgMiwgNCk7CisJfQorCisJ ZXJyID0gcGh5X2RldmljZV9jb25uZWN0KGRldiwgJnBvcnQtPm1paV9idXMsIHBvcnQtPnBpbmZv LT5waHksCisJCQkJIGl4cDR4eF9hZGp1c3RfbGluaywgMCwgUEhZX0lOVEVSRkFDRV9NT0RFX01J SSk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKworCXBvcnQtPmlvID0gZG1hX2FsbG9jX2Nv aGVyZW50KHNpemVvZigqcG9ydC0+aW8pKTsKKworCW1lbXNldCgmbXNnLCAwLCBzaXplb2YobXNn KSk7CisJbXNnLmNtZCA9IE5QRV9WTEFOX1NFVFJYUU9TRU5UUlk7CisJbXNnLmV0aF9pZCA9IExP R0lDQUxfSUQocG9ydCk7CisJbXNnLnBhcmFtc1szXSA9IFJYX1FVRVVFKHBvcnQpIHwgMHg4MDsK Kwltc2cucGFyYW1zWzRdID0gUlhfUVVFVUUocG9ydCkgPj4gNDsgLyogTVNCIG9mIG9mZnNldCAq LworCW1zZy5wYXJhbXNbNV0gPSBSWF9RVUVVRShwb3J0KSA8PCA0OyAvKiBMU0Igb2Ygb2Zmc2V0 ICovCisJZm9yIChpID0gMDsgaSA8IDg7IGkrKykgeworCQltc2cucGFyYW1zWzFdID0gaTsKKwkJ aWYgKG5wZV9zZW5kX3JlY3ZfbWVzc2FnZShwb3J0LT5ucGUsICZtc2csICJFVEhfU0VUX1JYUSIp KSB7CisJCQllcnIgPSAtRUlPOworCQkJZ290byBvdXQ7CisJCX0KKwl9CisKKwltc2cuY21kID0g TlBFX0VEQl9TRVRQT1JUQUREUkVTUzsKKwltc2cuZXRoX2lkID0gUEhZU0lDQUxfSUQocG9ydCk7 CisJbWVtY3B5KG1zZy5wYXJhbXMsIHBvcnQtPnBpbmZvLT5od2FkZHIsIEVUSF9BTEVOKTsKKwlp ZiAobnBlX3NlbmRfcmVjdl9tZXNzYWdlKHBvcnQtPm5wZSwgJm1zZywgIkVUSF9TRVRfTUFDIikp IHsKKwkJZXJyID0gLUVJTzsKKwkJZ290byBvdXQ7CisJfQorCisJbWVtc2V0KCZtc2csIDAsIHNp emVvZihtc2cpKTsKKwltc2cuY21kID0gTlBFX0ZXX1NFVEZJUkVXQUxMTU9ERTsKKwltc2cuZXRo X2lkID0gTE9HSUNBTF9JRChwb3J0KTsKKwlpZiAobnBlX3NlbmRfcmVjdl9tZXNzYWdlKHBvcnQt Pm5wZSwgJm1zZywgIkVUSF9TRVRfRklSRVdBTExfTU9ERSIpKSB7CisJCWVyciA9IC1FSU87CisJ CWdvdG8gb3V0OworCX0KKworCXJlcXVlc3RfcXVldWVzKHBvcnQsIGRldik7CisJaW5pdF9xdWV1 ZXMocG9ydCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgRVRIX0FMRU47IGkrKykKKwkJX19yYXdfd3Jp dGVsKHBvcnQtPnBpbmZvLT5od2FkZHJbaV0sICZwb3J0LT5yZWdzLT5od19hZGRyW2ldKTsKKwlf X3Jhd193cml0ZWwoMHgwOCwgJnBvcnQtPnJlZ3MtPnJhbmRvbV9zZWVkKTsKKwlfX3Jhd193cml0 ZWwoMHgxMiwgJnBvcnQtPnJlZ3MtPnBhcnRpYWxfZW1wdHlfdGhyZXNob2xkKTsKKwlfX3Jhd193 cml0ZWwoMHgzMCwgJnBvcnQtPnJlZ3MtPnBhcnRpYWxfZnVsbF90aHJlc2hvbGQpOworCV9fcmF3 X3dyaXRlbCgweDA4LCAmcG9ydC0+cmVncy0+dHhfc3RhcnRfYnl0ZXMpOworCV9fcmF3X3dyaXRl bCgweDE1LCAmcG9ydC0+cmVncy0+dHhfZGVmZXJyYWwpOworCV9fcmF3X3dyaXRlbCgweDA4LCAm cG9ydC0+cmVncy0+dHhfMnBhcnRfZGVmZXJyYWxbMF0pOworCV9fcmF3X3dyaXRlbCgweDA3LCAm cG9ydC0+cmVncy0+dHhfMnBhcnRfZGVmZXJyYWxbMV0pOworCV9fcmF3X3dyaXRlbCgweDgwLCAm cG9ydC0+cmVncy0+c2xvdF90aW1lKTsKKwlfX3Jhd193cml0ZWwoMHgwMSwgJnBvcnQtPnJlZ3Mt PmludF9jbG9ja190aHJlc2hvbGQpOworCisJLyogUG9wdWxhdGUgcXVldWVzIHdpdGggYnVmZmVy cywgbm8gZmFpbHVyZSBhZnRlciB0aGlzIHBvaW50ICovCisJZm9yIChpID0gMDsgaSA8IFRYX0RF U0NTOyBpKyspCisJCXF1ZXVlX3B1dF9kZXNjKFRYRE9ORV9RVUVVRSwgJnBvcnQtPmlvLT50eF9k ZXNjX3RhYltpXSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgUlhfREVTQ1M7IGkrKykKKwkJcXVldWVf cHV0X2Rlc2MoUlhGUkVFX1FVRVVFKHBvcnQpLCAmcG9ydC0+aW8tPnJ4X2Rlc2NfdGFiW2ldKTsK KworCV9fcmF3X3dyaXRlbChUWF9DTlRSTDFfUkVUUklFUywgJnBvcnQtPnJlZ3MtPnR4X2NvbnRy b2xbMV0pOworCV9fcmF3X3dyaXRlbChERUZBVUxUX1RYX0NOVFJMMCwgJnBvcnQtPnJlZ3MtPnR4 X2NvbnRyb2xbMF0pOworCV9fcmF3X3dyaXRlbCgwLCAmcG9ydC0+cmVncy0+cnhfY29udHJvbFsx XSk7CisJX19yYXdfd3JpdGVsKERFRkFVTFRfUlhfQ05UUkwwLCAmcG9ydC0+cmVncy0+cnhfY29u dHJvbFswXSk7CisKKyNpZiAwCisJcW1ncl9zZXRfaXJxKFJYX1FVRVVFKHBvcnQpLCBRVUVVRV9J UlFfU1JDX05PVF9FTVBUWSwKKwkJICAgICBldGhfcnhfaXJxLCBkZXYpOworCXFtZ3Jfc2V0X2ly cShUWERPTkVfUVVFVUUsIFFVRVVFX0lSUV9TUkNfTk9UX0VNUFRZLAorCQkgICAgIGV0aF90eGRv bmVfaXJxLCBOVUxMKTsKKwlxbWdyX2VuYWJsZV9pcnEoVFhET05FX1FVRVVFKTsKKyNlbmRpZgor CW1lbXNldCgmbXNnLCAwLCBzaXplb2YobXNnKSk7CisjaWYgREVCVUdfT1BFTgorCWZwcmludGYo c3RkZXJyLCAiJXMlZCBvcGVuZWRcbiIsIGRldi0+ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkKTsKKyNl bmRpZgorCXJldHVybiAwOworb3V0OgorCWRtYV9mcmVlX2NvaGVyZW50KHBvcnQtPmlvLCBzaXpl b2YoKnBvcnQtPmlvKSk7CisJcG9ydC0+aW8gPSBOVUxMOworI2lmIERFQlVHX09QRU4KKwlmcHJp bnRmKHN0ZGVyciwgIiVzJWQgb3BlbiBmYWlsZWQgKCVpKVxuIiwgZGV2LT5kZXYubmFtZSwgZGV2 LT5kZXYuaWQsIGVycik7CisjZW5kaWYKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgdm9pZCBp eHA0eHhfZXRoX2Nsb3NlKHN0cnVjdCBldGhfZGV2aWNlICpkZXYpCit7CisJc3RydWN0IHBvcnQg KnBvcnQgPSBkZXYtPnByaXY7CisJc3RydWN0IG1zZyBtc2c7CisJaW50IGJ1ZmZzID0gUlhfREVT Q1M7IC8qIGFsbG9jYXRlZCBSWCBidWZmZXJzICovCisJaW50IGk7CisKKyNpZiBERUJVR19DTE9T RQorCWZwcmludGYoc3RkZXJyLCAiJXMlZDogY2xvc2luZ1xuIiwgZGV2LT5kZXYubmFtZSwgZGV2 LT5kZXYuaWQpOworI2VuZGlmCisjaWYgMAorCXFtZ3JfZGlzYWJsZV9pcnEoUlhfUVVFVUUocG9y dCkpOworI2VuZGlmCisKKwlpZiAoIXBvcnQtPmlvKQorCQlyZXR1cm47IC8qIGFscmVhZHkgY2xv c2VkICovCisKKwl3aGlsZSAocXVldWVfZ2V0X2Rlc2MoUlhGUkVFX1FVRVVFKHBvcnQpLCBwb3J0 LCAwKSA+PSAwKQorCQlidWZmcy0tOworCisJbWVtc2V0KCZtc2csIDAsIHNpemVvZihtc2cpKTsK Kwltc2cuY21kID0gTlBFX1NFVExPT1BCQUNLX01PREU7CisJbXNnLmV0aF9pZCA9IExPR0lDQUxf SUQocG9ydCk7CisJbXNnLnBhcmFtc1sxXSA9IDE7CisJaWYgKG5wZV9zZW5kX3JlY3ZfbWVzc2Fn ZShwb3J0LT5ucGUsICZtc2csICJFVEhfRU5BQkxFX0xPT1BCQUNLIikpCisJCWZwcmludGYoc3Rk ZXJyLCAiJXMlZDogdW5hYmxlIHRvIGVuYWJsZSBsb29wYmFja1xuIiwgZGV2LT5kZXYubmFtZSwg ZGV2LT5kZXYuaWQpOworCisjaWYgREVCVUdfQ0xPU0UKKwlmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6 IGRyYWluaW5nIFJYIHF1ZXVlXG4iLCBkZXYtPmRldi5uYW1lLCBkZXYtPmRldi5pZCk7CisjZW5k aWYKKwlpID0gMDsKKwlkbyB7IC8qIGRyYWluIFJYIGJ1ZmZlcnMgKi8KKwkJd2hpbGUgKHF1ZXVl X2dldF9kZXNjKFJYX1FVRVVFKHBvcnQpLCBwb3J0LCAwKSA+PSAwKQorCQkJYnVmZnMtLTsKKwkJ aWYgKCFidWZmcykKKwkJCWJyZWFrOworCQlpZiAocW1ncl9zdGF0X2Z1bGwoVFhET05FX1FVRVVF KSAmJiAhKGkgJSAxMCkpIHsKKwkJCS8qIHdlIGhhdmUgdG8gaW5qZWN0IHNvbWUgcGFja2V0ICov CisJCQlzdHJ1Y3QgZGVzYyAqZGVzYzsKKwkJCWludCBuID0gcXVldWVfZ2V0X2Rlc2MoVFhET05F X1FVRVVFLCBwb3J0LCAxKTsKKwkJCUJVR19PTihuIDwgMCk7CisJCQlkZXNjID0gJnBvcnQtPmlv LT50eF9kZXNjX3RhYltuXTsKKwkJCWRlc2MtPmJ1Zl9sZW4gPSBkZXNjLT5wa3RfbGVuID0gMTsK KwkJCS8vd21iKCk7CisJCQliYXJyaWVyKCk7CisJCQlxdWV1ZV9wdXRfZGVzYyhUWF9RVUVVRShw b3J0KSwgZGVzYyk7CisJCX0KKwkJdWRlbGF5KDEpOworCX0gd2hpbGUgKCsraSA8IE1BWF9DTE9T RV9XQUlUKTsKKworCWlmIChidWZmcykKKwkJZnByaW50ZihzdGRlcnIsICIlcyVkOiB1bmFibGUg dG8gZHJhaW4gUlggcXVldWUsICVpIGJ1ZmZlcihzKSBsZWZ0IGluIE5QRVxuIiwKKwkJCWRldi0+ ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkLCBidWZmcyk7CisjaWYgREVCVUdfQ0xPU0UKKwlpZiAoIWJ1 ZmZzKQorCQlmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6IGRyYWluaW5nIFJYIHF1ZXVlIHRvb2sgJWkg Y3ljbGVzXG4iLCBkZXYtPmRldi5uYW1lLCBkZXYtPmRldi5pZCwgaSk7CisjZW5kaWYKKworCWJ1 ZmZzID0gVFhfREVTQ1M7CisJd2hpbGUgKHF1ZXVlX2dldF9kZXNjKFRYX1FVRVVFKHBvcnQpLCBw b3J0LCAxKSA+PSAwKQorCQlidWZmcy0tOyAvKiBjYW5jZWwgVFggKi8KKworCWkgPSAwOworCWRv IHsKKwkJd2hpbGUgKHF1ZXVlX2dldF9kZXNjKFRYRE9ORV9RVUVVRSwgcG9ydCwgMSkgPj0gMCkK KwkJCWJ1ZmZzLS07CisJCWlmICghYnVmZnMpCisJCQlicmVhazsKKwl9IHdoaWxlICgrK2kgPCBN QVhfQ0xPU0VfV0FJVCk7CisKKwlpZiAoYnVmZnMpCisJCWZwcmludGYoc3RkZXJyLCAiJXMlZDog dW5hYmxlIHRvIGRyYWluIFRYIHF1ZXVlLCAlaSBidWZmZXIocykgbGVmdCBpbiBOUEVcbiIsCisJ CQlkZXYtPmRldi5uYW1lLCBkZXYtPmRldi5pZCwgYnVmZnMpOworI2lmIERFQlVHX0NMT1NFCisJ aWYgKCFidWZmcykKKwkJZnByaW50ZihzdGRlcnIsICIlcyVkOiBkcmFpbmluZyBUWCBxdWV1ZXMg dG9vayAlaSBjeWNsZXNcbiIsIGRldi0+ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkLCBpKTsKKyNlbmRp ZgorCisJbXNnLnBhcmFtc1sxXSA9IDA7CisJaWYgKG5wZV9zZW5kX3JlY3ZfbWVzc2FnZShwb3J0 LT5ucGUsICZtc2csICJFVEhfRElTQUJMRV9MT09QQkFDSyIpKQorCQlmcHJpbnRmKHN0ZGVyciwg IiVzJWQ6IHVuYWJsZSB0byBkaXNhYmxlIGxvb3BiYWNrXG4iLCBkZXYtPmRldi5uYW1lLCBkZXYt PmRldi5pZCk7CisKKyNpZiAwCisJcW1ncl9kaXNhYmxlX2lycShUWERPTkVfUVVFVUUpOworI2Vu ZGlmCisJcmVsZWFzZV9xdWV1ZXMocG9ydCk7CisJZG1hX2ZyZWVfY29oZXJlbnQocG9ydC0+aW8s IHNpemVvZigqcG9ydC0+aW8pKTsKKwlwb3J0LT5pbyA9IE5VTEw7CisjaWYgREVCVUdfQ0xPU0UK KwlmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6IGNsb3NlZFxuIiwgZGV2LT5kZXYubmFtZSwgZGV2LT5k ZXYuaWQpOworI2VuZGlmCit9CisKK3N0YXRpYyBpbnQgaXhwNHh4X2V0aF9nZXRfaHdhZGRyKHN0 cnVjdCBldGhfZGV2aWNlICpldGgsIHVuc2lnbmVkIGNoYXIgKmFkZHIpCit7CisJc3RydWN0IHBv cnQgKnBvcnQgPSBldGgtPnByaXY7CisJbWVtY3B5KGFkZHIsIHBvcnQtPnBpbmZvLT5od2FkZHIs IDYpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGl4cDR4eF9ldGhfc2V0X2h3YWRkcihz dHJ1Y3QgZXRoX2RldmljZSAqZXRoLCB1bnNpZ25lZCBjaGFyICphZGRyKQoreworCXN0cnVjdCBw b3J0ICpwb3J0ID0gZXRoLT5wcml2OworCW1lbWNweShwb3J0LT5waW5mby0+aHdhZGRyLCBhZGRy LCA2KTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBpeHA0eHhfZXRoX2luaXQoc3RydWN0 IGV0aF9kZXZpY2UgKmV0aCkKK3sKKwlzdHJ1Y3QgcG9ydCAqcG9ydCA9IGV0aC0+cHJpdjsKKwor CV9fcmF3X3dyaXRlbChERUZBVUxUX0NPUkVfQ05UUkwgfCBDT1JFX1JFU0VULAorCQkgICAgICZw b3J0LT5yZWdzLT5jb3JlX2NvbnRyb2wpOworCXVkZWxheSg1MCk7CisJX19yYXdfd3JpdGVsKERF RkFVTFRfQ09SRV9DTlRSTCwgJnBvcnQtPnJlZ3MtPmNvcmVfY29udHJvbCk7CisJdWRlbGF5KDUw KTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBpeHA0eHhfZXRoX3Byb2JlKHN0cnVjdCBk ZXZpY2VfZCAqZGV2KQoreworCXN0cnVjdCBucGUgKm5wZTsKKwlzdHJ1Y3QgcG9ydCAqcG9ydDsK KwlzdHJ1Y3QgZXRoX3BsYXRfaW5mbyAqcGluZm8gPSBkZXYtPnBsYXRmb3JtX2RhdGE7CisKKwlp ZiAoIXBpbmZvKSB7CisJCWZwcmludGYoc3RkZXJyLCAiaXhwNHh4X2V0aDogbm8gcGxhdGZvcm0g aW5mb3JtYXRpb25cbiIpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwlpZiAoIShucGUgPSBu cGVfcmVxdWVzdChwaW5mby0+bnBlKSkpIHsKKwkJZnByaW50ZihzdGRlcnIsICJpeHA0eHhfZXRo OiB1bmFibGUgdG8gYWNxdWlyZSBOUEVcbiIpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwlw b3J0ID0geG1lbWFsaWduKDB4MjAsIHNpemVvZigqcG9ydCkpOworCW1lbXNldChwb3J0LCAwLCBz aXplb2YoKnBvcnQpKTsKKworCXBvcnQtPnJlZ3MgPSBwaW5mby0+cmVnczsKKwlwb3J0LT5ucGUg PSBucGU7CisJcG9ydC0+cGluZm8gPSBwaW5mbzsKKwlwb3J0LT5ldGguZGV2LmlkID0gLTE7CisJ cG9ydC0+ZXRoLnByaXYgPSBwb3J0OworCXBvcnQtPmV0aC5pbml0ID0gaXhwNHh4X2V0aF9pbml0 OworCXBvcnQtPmV0aC5vcGVuID0gaXhwNHh4X2V0aF9vcGVuOworCXBvcnQtPmV0aC5oYWx0ID0g aXhwNHh4X2V0aF9jbG9zZTsKKwlwb3J0LT5ldGguc2VuZCA9IGl4cDR4eF9ldGhfeG1pdDsKKwlw b3J0LT5ldGgucmVjdiA9IGl4cDR4eF9ldGhfcG9sbDsKKwlwb3J0LT5ldGguZ2V0X2V0aGFkZHIg PSBpeHA0eHhfZXRoX2dldF9od2FkZHI7CisJcG9ydC0+ZXRoLnNldF9ldGhhZGRyID0gaXhwNHh4 X2V0aF9zZXRfaHdhZGRyOworCisJcG9ydC0+bWlpX2J1cy5kZXYuaWQgPSAtMTsKKwlwb3J0LT5t aWlfYnVzLnJlYWQgPSBpeHA0eHhfbWRpb19yZWFkOworCXBvcnQtPm1paV9idXMud3JpdGUgPSBp eHA0eHhfbWRpb193cml0ZTsKKwltZGlvYnVzX3JlZ2lzdGVyKCZwb3J0LT5taWlfYnVzKTsKKwll dGhfcmVnaXN0ZXIoJnBvcnQtPmV0aCk7CisJZGV2LT5wcml2ID0gcG9ydDsKKwlyZXR1cm4gMDsK K30KKworc3RhdGljIHZvaWQgaXhwNHh4X2V0aF9yZW1vdmUoc3RydWN0IGRldmljZV9kICpkZXYp Cit7CisJc3RydWN0IHBvcnQgKnBvcnQgPSBkZXYtPnByaXY7CisJaXhwNHh4X2V0aF9jbG9zZSgm cG9ydC0+ZXRoKTsKKwlldGhfdW5yZWdpc3RlcigmcG9ydC0+ZXRoKTsKKwltZGlvYnVzX3VucmVn aXN0ZXIoJnBvcnQtPm1paV9idXMpOworCWZyZWUocG9ydCk7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qg ZHJpdmVyX2QgaXhwNHh4X2V0aF9kcml2ZXIgPSB7CisJLm5hbWUgID0gIml4cDR4eF9ldGgiLAor CS5wcm9iZSA9IGl4cDR4eF9ldGhfcHJvYmUsCisJLnJlbW92ZSA9IGl4cDR4eF9ldGhfcmVtb3Zl LAorfTsKKworc3RhdGljIGludCBfX2luaXQgaXhwNHh4X2V0aF9tb2R1bGVfaW5pdCh2b2lkKQor eworCWlmIChjcHVfaXNfaXhwNDN4KCkpIHsKKwkJLyogSVhQNDN4IGxhY2tzIE5QRS1CIGFuZCB1 c2VzIE5QRS1DIGZvciBNSUkgUEhZIGFjY2VzcyAqLworCQlpZiAoIShpeHA0eHhfcmVhZF9mZWF0 dXJlX2JpdHMoKSAmIElYUDRYWF9GRUFUVVJFX05QRUNfRVRIKSkKKwkJCXJldHVybiAtRU5PU1lT OworCQltZGlvX3JlZ3MgPSAoc3RydWN0IGV0aF9yZWdzICopSVhQNFhYX0V0aENfQkFTRTsKKwl9 IGVsc2UgeworCQkvKiBBbGwgTUlJIFBIWSBhY2Nlc3NlcyB1c2UgTlBFLUIgRXRoZXJuZXQgcmVn aXN0ZXJzICovCisJCWlmICghKGl4cDR4eF9yZWFkX2ZlYXR1cmVfYml0cygpICYgSVhQNFhYX0ZF QVRVUkVfTlBFQl9FVEgwKSkKKwkJCXJldHVybiAtRU5PU1lTOworCQltZGlvX3JlZ3MgPSAoc3Ry dWN0IGV0aF9yZWdzICopSVhQNFhYX0V0aEJfQkFTRTsKKwl9CisKKwlfX3Jhd193cml0ZWwoREVG QVVMVF9DT1JFX0NOVFJMLCAmbWRpb19yZWdzLT5jb3JlX2NvbnRyb2wpOworCisJcGxhdGZvcm1f ZHJpdmVyX3JlZ2lzdGVyKCZpeHA0eHhfZXRoX2RyaXZlcik7CisJcmV0dXJuIDA7Cit9CisKK2Rl dmljZV9pbml0Y2FsbChpeHA0eHhfZXRoX21vZHVsZV9pbml0KTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvc2VyaWFsL3NlcmlhbF9uczE2NTUwLmMgYi9kcml2ZXJzL3NlcmlhbC9zZXJpYWxfbnMxNjU1 MC5jCmluZGV4IGI3OTEzYWEuLmJlMWI5NjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2VyaWFsL3Nl cmlhbF9uczE2NTUwLmMKKysrIGIvZHJpdmVycy9zZXJpYWwvc2VyaWFsX25zMTY1NTAuYwpAQCAt MTM3LDcgKzEzNywxMSBAQCBzdGF0aWMgdm9pZCBuczE2NTUwX3NlcmlhbF9pbml0X3BvcnQoc3Ry dWN0IGNvbnNvbGVfZGV2aWNlICpjZGV2KQogewogCS8qIGluaXRpYWxpemluZyB0aGUgZGV2aWNl IGZvciB0aGUgZmlyc3QgdGltZSAqLwogCW5zMTY1NTBfd3JpdGUoY2RldiwgMHgwMCwgbGNyKTsg Lyogc2VsZWN0IGllciByZWcgKi8KKyNpZmRlZiBDT05GSUdfQVJDSF9JWFA0WFgKKwluczE2NTUw X3dyaXRlKGNkZXYsIElFUl9VVUUsIGllcik7IC8qIEVuYWJsZSBVQVJUIG9wZXJhdGlvbiAqLwor I2Vsc2UKIAluczE2NTUwX3dyaXRlKGNkZXYsIDB4MDAsIGllcik7CisjZW5kaWYKIAogI2lmZGVm IENPTkZJR19EUklWRVJfU0VSSUFMX05TMTY1NTBfT01BUF9FWFRFTlNJT05TCiAJbnMxNjU1MF93 cml0ZShjZGV2LCAweDA3LCBtZHIxKTsJLyogRGlzYWJsZSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9zZXJpYWwvc2VyaWFsX25zMTY1NTAuaCBiL2RyaXZlcnMvc2VyaWFsL3NlcmlhbF9uczE2NTUw LmgKaW5kZXggZGI4ZmU2NC4uMTMyZjQ2ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zZXJpYWwvc2Vy aWFsX25zMTY1NTAuaAorKysgYi9kcml2ZXJzL3NlcmlhbC9zZXJpYWxfbnMxNjU1MC5oCkBAIC01 MCw2ICs1MCw4IEBACiAjZGVmaW5lIGRsbAkJcmJyCiAjZGVmaW5lIGRsbQkJaWVyCiAKKyNkZWZp bmUgSUVSX1VVRQkJMHg0MAkvKiBVQVJUIFVuaXQgRW5hYmxlIChYU2NhbGUpICovCisKICNkZWZp bmUgRkNSX0ZJRk9fRU4gICAgIDB4MDEJLyogRmlmbyBlbmFibGUgKi8KICNkZWZpbmUgRkNSX1JY U1IgICAgICAgIDB4MDIJLyogUmVjZWl2ZXIgc29mdCByZXNldCAqLwogI2RlZmluZSBGQ1JfVFhT UiAgICAgICAgMHgwNAkvKiBUcmFuc21pdHRlciBzb2Z0IHJlc2V0ICovCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpiYXJlYm94IG1haWxpbmcgbGlzdApi YXJlYm94QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFp bG1hbi9saXN0aW5mby9iYXJlYm94Cg==