From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from inx.pm.waw.pl ([195.116.170.130]) by canuck.infradead.org with esmtps (Exim 4.72 #1 (Red Hat Linux)) id 1PUooF-0003YO-62 for barebox@lists.infradead.org; Mon, 20 Dec 2010 23:06:44 +0000 From: Krzysztof Halasa In-Reply-To: (Krzysztof Halasa's message of "Mon, 20 Dec 2010 23:30:03 +0100") Date: Tue, 21 Dec 2010 00:06:12 +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-bounces@lists.infradead.org Errors-To: barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org Subject: [PATCH 10] ARM: Add support for IXP4xx CPU and for Goramo Multilink router platform. To: barebox@lists.infradead.org U2lnbmVkLW9mZi1ieTogS3J6eXN6dG9mIEhhxYJhc2EgPGtoY0BwbS53YXcucGw+CgpkaWZmIC0t Z2l0IGEvYXJjaC9hcm0vS2NvbmZpZyBiL2FyY2gvYXJtL0tjb25maWcKaW5kZXggOGNiODZjYi4u NTZiNWEwZCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vS2NvbmZpZworKysgYi9hcmNoL2FybS9LY29u ZmlnCkBAIC0zOSw2ICszOSwxMyBAQCBjb25maWcgQVJDSF9JTVgKIAlib29sICJGcmVlc2NhbGUg aU1YLWJhc2VkIgogCXNlbGVjdCBHRU5FUklDX0dQSU8KIAorY29uZmlnIEFSQ0hfSVhQNFhYCisJ Ym9vbCAiSW50ZWwgSVhQNHh4LWJhc2VkIgorCXNlbGVjdCBDUFVfMzJ2NQorCXNlbGVjdCBBUkNI X1NVUFBPUlRTX0JJR19FTkRJQU4KKwlzZWxlY3QgQ1BVX0JJR19FTkRJQU4KKwlzZWxlY3QgQVJD SF9IQVNfTE9XTEVWRUxfSU5JVAorCiBjb25maWcgQVJDSF9TVE0KIAlib29sICJTaWdtYVRlbC9G U0wgaU1YLWJhc2VkIgogCXNlbGVjdCBHRU5FUklDX0dQSU8KQEAgLTY3LDYgKzc0LDcgQEAgc291 cmNlIGFyY2gvYXJtL2NwdS9LY29uZmlnCiBzb3VyY2UgYXJjaC9hcm0vbWFjaC1hdDkxL0tjb25m aWcKIHNvdXJjZSBhcmNoL2FybS9tYWNoLWVwOTN4eC9LY29uZmlnCiBzb3VyY2UgYXJjaC9hcm0v bWFjaC1pbXgvS2NvbmZpZworc291cmNlIGFyY2gvYXJtL21hY2gtaXhwNHh4L0tjb25maWcKIHNv dXJjZSBhcmNoL2FybS9tYWNoLXN0bS9LY29uZmlnCiBzb3VyY2UgYXJjaC9hcm0vbWFjaC1uZXR4 L0tjb25maWcKIHNvdXJjZSBhcmNoL2FybS9tYWNoLW5vbWFkaWsvS2NvbmZpZwpkaWZmIC0tZ2l0 IGEvYXJjaC9hcm0vTWFrZWZpbGUgYi9hcmNoL2FybS9NYWtlZmlsZQppbmRleCA5NzI5YzIzLi4y ZTlmOTlkIDEwMDY0NAotLS0gYS9hcmNoL2FybS9NYWtlZmlsZQorKysgYi9hcmNoL2FybS9NYWtl ZmlsZQpAQCAtNDEsNiArNDEsNyBAQCBDUFBGTEFHUyArPSAkKENGTEFHU19BQkkpICQoYXJjaC15 KSAkKHR1bmUteSkKIG1hY2hpbmUtJChDT05GSUdfQVJDSF9BVDkxKQkJOj0gYXQ5MQogbWFjaGlu ZS0kKENPTkZJR19BUkNIX0VQOTNYWCkJCTo9IGVwOTN4eAogbWFjaGluZS0kKENPTkZJR19BUkNI X0lNWCkJCTo9IGlteAorbWFjaGluZS0kKENPTkZJR19BUkNIX0lYUDRYWCkJCTo9IGl4cDR4eAog bWFjaGluZS0kKENPTkZJR19BUkNIX1NUTSkJCTo9IHN0bQogbWFjaGluZS0kKENPTkZJR19BUkNI X05PTUFESUspCQk6PSBub21hZGlrCiBtYWNoaW5lLSQoQ09ORklHX0FSQ0hfTkVUWCkJCTo9IG5l dHgKQEAgLTczLDYgKzc0LDcgQEAgYm9hcmQtJChDT05GSUdfTUFDSF9GUkVFU0NBTEVfTVgzNV8z U1RBQ0spCTo9IGZyZWVzY2FsZS1teDM1LTMtc3RhY2sKIGJvYXJkLSQoQ09ORklHX01BQ0hfSU1Y MjFBRFMpCQkJOj0gaW14MjFhZHMKIGJvYXJkLSQoQ09ORklHX01BQ0hfSU1YMjdBRFMpCQkJOj0g aW14MjdhZHMKIGJvYXJkLSQoQ09ORklHX01BQ0hfTU1DQ1BVKQkJCTo9IG1tY2NwdQorYm9hcmQt JChDT05GSUdfTUFDSF9NVUxUSUxJTkspCQkJOj0gbXVsdGlsaW5rCiBib2FyZC0kKENPTkZJR19N QUNIX01YMUFEUykJCQk6PSBteDFhZHMKIGJvYXJkLSQoQ09ORklHX01BQ0hfTk9NQURJS184ODE1 TkhLKQkJOj0gbmhrODgxNQogYm9hcmQtJChDT05GSUdfTUFDSF9OWERCNTAwKQkJCTo9IG5ldHgK ZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2JvYXJkcy9tdWx0aWxpbmsvTWFrZWZpbGUgYi9hcmNoL2Fy bS9ib2FyZHMvbXVsdGlsaW5rL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmQ1YThiYmMKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9ib2FyZHMvbXVsdGls aW5rL01ha2VmaWxlCkBAIC0wLDAgKzEgQEAKK29iai15ICs9IGxvd2xldmVsX2luaXQubyBtdWx0 aWxpbmsubwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vYm9hcmRzL211bHRpbGluay9jb25maWcuaCBi L2FyY2gvYXJtL2JvYXJkcy9tdWx0aWxpbmsvY29uZmlnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uZTY5ZGUyOQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vYm9hcmRzL211bHRp bGluay9sb3dsZXZlbF9pbml0LlMgYi9hcmNoL2FybS9ib2FyZHMvbXVsdGlsaW5rL2xvd2xldmVs X2luaXQuUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzBlZjcyCi0tLSAv ZGV2L251bGwKKysrIGIvYXJjaC9hcm0vYm9hcmRzL211bHRpbGluay9sb3dsZXZlbF9pbml0LlMK QEAgLTAsMCArMSw2NCBAQAorI2luY2x1ZGUgPG1hY2gvaXhwNHh4LXJlZ3MuaD4KKworCS5zZWN0 aW9uICIudGV4dF9iYXJlX2luaXQiLCAiYXgiCisJLmJhbGlnbiAweDQwCisJLnNwYWNlIDB4NDAg LyogY29uZmlndXJhdGlvbiBibG9jayBhdCAweDQwICovCisKKwkubWFjcm8gREVMQVlfRk9SIGN5 Y2xlcywgcmVnMAorCWxkciBccmVnMCwgPVxjeWNsZXMKKwlzdWJzIFxyZWcwLCBccmVnMCwgIzEK KwlzdWJuZSBwYywgcGMsICMweGMKKwkuZW5kbQorCisjZGVmaW5lIENGR19TRFJBTV9TSVpFICAg IDB4NTAgLyogdTMyICovCisjZGVmaW5lIENGR19TRFJBTV9DT05GICAgIDB4NTQgLyogdTMyICov CisjZGVmaW5lIENGR19TRFJBTV9NT0RFICAgIDB4NTggLyogdTMyICovCisjZGVmaW5lIENGR19T RFJBTV9SRUZSRVNIIDB4NUMgLyogdTMyICovCisKKy5nbG9ibCBib2FyZF9pbml0X2xvd2xldmVs Citib2FyZF9pbml0X2xvd2xldmVsOgorCW1vdiByOCwgI0lYUDRYWF9FWFBfQkFTRSgwKQorCWxk ciByMSwgW3I4LCAjQ0ZHX1NEUkFNX0NPTkZdCisJbGRyIHIyLCA9SVhQNFhYX1NEUkFNX0NPTkZJ RworCXN0ciByMSwgW3IyXQorCisJLyogZGlzYWJsZSByZWZyZXNoIGN5Y2xlcyAqLworCW1vdiBy MSwgIzAKKwlhZGQgcjIsIHIyLCAjNCAvKiByMiA9IElYUDRYWF9TRFJBTV9SRUZSRVNIICovCisJ c3RyIHIxLCBbcjJdCisKKwkvKiBzZW5kIE5PUCBjb21tYW5kICovCisJbW92IHIxLCAjMworCWFk ZCByMywgcjIsICM0IC8qIHIzID0gSVhQNFhYX1NEUkFNX0lSICovCisJc3RyIHIxLCBbcjNdCisJ REVMQVlfRk9SIDB4NDAwMCwgcjAKKworCS8qIHNldCBTRFJBTSBpbnRlcm5hbCByZWZyZXNoICov CisJbGRyIHIxLCBbcjgsICNDRkdfU0RSQU1fUkVGUkVTSF0KKwlzdHIgcjEsIFtyMl0KKwlERUxB WV9GT1IgMHg0MDAwLCByMAorCisJLyogc2VuZCBwcmVjaGFyZ2UtYWxsIGNvbW1hbmQgdG8gY2xv c2UgYWxsIG9wZW4gYmFua3MgKi8KKwltb3YgcjEsICMyCisJc3RyIHIxLCBbcjNdCisJREVMQVlf Rk9SIDB4NDAwMCwgcjAKKworCS8qIHByb3ZpZGUgOCBhdXRvLXJlZnJlc2ggY3ljbGVzICovCisJ bW92IHIxLCAjNAorCW1vdiByNCwgIzgKKzE6CXN0ciByMSwgW3IzXQorCURFTEFZX0ZPUiAweDEw MCwgcjAKKwlzdWJzIHI0LCByNCwgIzEKKwlibmUgMWIKKworCS8qIHNldCBtb2RlIHJlZ2lzdGVy IGluIFNEUkFNICovCisJbGRyIHIxLCBbcjgsICNDRkdfU0RSQU1fTU9ERV0KKwlzdHIgcjEsIFty M10KKwlERUxBWV9GT1IgMHg0MDAwLCByMAorCisJLyogc2VuZCBub3JtYWwgb3BlcmF0aW9uIGNv bW1hbmQgKi8KKwltb3YgcjEsICM2CisJc3RyIHIxLCBbcjNdCisJREVMQVlfRk9SIDB4NDAwMCwg cjAKKworCW1vdiBwYywgbHIKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2JvYXJkcy9tdWx0aWxpbmsv bXVsdGlsaW5rLmMgYi9hcmNoL2FybS9ib2FyZHMvbXVsdGlsaW5rL211bHRpbGluay5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyZmI4ZjQKLS0tIC9kZXYvbnVsbAorKysg Yi9hcmNoL2FybS9ib2FyZHMvbXVsdGlsaW5rL211bHRpbGluay5jCkBAIC0wLDAgKzEsMTQ0IEBA CisvLyNkZWZpbmUgREVCVUcKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxlcnJuby5o PgorI2luY2x1ZGUgPGluaXQuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUg PGFzbS9hcm1saW51eC5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGdlbmVyYXRl ZC9tYWNoLXR5cGVzLmg+CisjaW5jbHVkZSA8bWFjaC9peHA0eHgtcmVncy5oPgorI2luY2x1ZGUg PG1hY2gvcGxhdGZvcm0uaD4KKworLyogb2Zmc2V0cyBmcm9tIHN0YXJ0IG9mIGZsYXNoIFJPTSA9 IDB4NTAwMDAwMDAgKi8KKyNkZWZpbmUgQ0ZHX0VUSDBfQUREUkVTUyAgICAgMHg0MCAvKiA2IGJ5 dGVzICovCisjZGVmaW5lIENGR19FVEgxX0FERFJFU1MgICAgIDB4NDYgLyogNiBieXRlcyAqLwor I2RlZmluZSBDRkdfUkVWICAgICAgICAgICAgICAweDRDIC8qIHUzMiAqLworI2RlZmluZSBDRkdf U0RSQU1fU0laRSAgICAgICAweDUwIC8qIHUzMiAqLworI2RlZmluZSBDRkdfU0RSQU1fQ09ORiAg ICAgICAweDU0IC8qIHUzMiAqLworI2RlZmluZSBDRkdfU0RSQU1fTU9ERSAgICAgICAweDU4IC8q IHUzMiAqLworI2RlZmluZSBDRkdfU0RSQU1fUkVGUkVTSCAgICAweDVDIC8qIHUzMiAqLworCisj ZGVmaW5lIENGR19IV19CSVRTICAgICAgICAgIDB4NjAgLyogdTMyICovCisjZGVmaW5lICBDRkdf SFdfVVNCX1BPUlRTICAgIDB4MDAwMDAwMDcgLyogMCA9IG5vIE5FQyBjaGlwLCAxLTUgPSBwb3J0 cyAjICovCisjZGVmaW5lICBDRkdfSFdfSEFTX1BDSV9TTE9UIDB4MDAwMDAwMDgKKyNkZWZpbmUg IENGR19IV19IQVNfRVRIMCAgICAgMHgwMDAwMDAxMAorI2RlZmluZSAgQ0ZHX0hXX0hBU19FVEgx ICAgICAweDAwMDAwMDIwCisjZGVmaW5lICBDRkdfSFdfSEFTX0hTUzAgICAgIDB4MDAwMDAwNDAK KyNkZWZpbmUgIENGR19IV19IQVNfSFNTMSAgICAgMHgwMDAwMDA4MAorI2RlZmluZSAgQ0ZHX0hX X0hBU19VQVJUMCAgICAweDAwMDAwMTAwCisjZGVmaW5lICBDRkdfSFdfSEFTX1VBUlQxICAgIDB4 MDAwMDAyMDAKKyNkZWZpbmUgIENGR19IV19IQVNfRUVQUk9NICAgMHgwMDAwMDQwMAorCisjZGVm aW5lIEVUSF9BTEVOICAgICAgICAgICAgIDYKKworI2RlZmluZSBCQVJFQk9YX1NUQVJUICAgICAg ICAweDAwMDAwCisjZGVmaW5lIEJBUkVCT1hfTEVOR1RIICAgICAgIDB4MzQwMDAKKyNkZWZpbmUg TlBFX0FfU1RBUlQgICAgICAgICAgKEJBUkVCT1hfU1RBUlQgKyBCQVJFQk9YX0xFTkdUSCkKKyNk ZWZpbmUgTlBFX0FfTEVOR1RIICAgICAgICAgMHgwNTAwMAorI2RlZmluZSBOUEVfQl9TVEFSVCAg ICAgICAgICAoTlBFX0FfU1RBUlQgKyBOUEVfQV9MRU5HVEgpCisjZGVmaW5lIE5QRV9CX0xFTkdU SCAgICAgICAgIDB4MDMwMDAKKyNkZWZpbmUgTlBFX0NfU1RBUlQgICAgICAgICAgKE5QRV9CX1NU QVJUICsgTlBFX0JfTEVOR1RIKQorI2RlZmluZSBOUEVfQ19MRU5HVEggICAgICAgICAweDA0MDAw CisjZGVmaW5lIE5QRV9FTlYwX1NUQVJUICAgICAgIChOUEVfQ19TVEFSVCArIE5QRV9DX0xFTkdU SCkKKyNkZWZpbmUgTlBFX0VOVjBfTEVOR1RIICAgICAgMHgyMDAwMAorCitzdGF0aWMgc3RydWN0 IGRldmljZV9kIGNmaV9kZXYgPSB7CisJLm5hbWUgICAgID0gImNmaV9mbGFzaCIsCisJLm1hcF9i YXNlID0gSVhQNFhYX0VYUF9CQVNFKDApLAorCS5zaXplICAgICA9IDE2ICogMTAyNCAqIDEwMjQs Cit9OworCitzdGF0aWMgc3RydWN0IGV0aF9wbGF0X2luZm8gZXRoX3BpbmZvWzJdID0geworCXsK KwkJLnJlZ3MgICAgID0gSVhQNFhYX0V0aEJfQkFTRSwKKwkJLm5wZSAgICAgID0gMSwKKwkJLnBo eSAgICAgID0gMCwKKwkJLnJ4cSAgICAgID0gMjAsCisJCS50eHJlYWR5cSA9IDI5LAorCX0sIHsK KwkJLnJlZ3MgICAgID0gSVhQNFhYX0V0aENfQkFTRSwKKwkJLm5wZSAgICAgID0gMiwKKwkJLnBo eSAgICAgID0gMSwKKwkJLnJ4cSAgICAgID0gMjEsCisJCS50eHJlYWR5cSA9IDMwLAorCX0KK307 CisKK3N0YXRpYyBzdHJ1Y3QgZGV2aWNlX2QgZXRoX2RldlsyXSA9IHsKKwl7CisJCS5uYW1lICAg ICAgICAgICA9ICJpeHA0eHhfZXRoIiwKKwkJLnBsYXRmb3JtX2RhdGEgID0gJmV0aF9waW5mb1sw XSwKKwl9LCB7CisJCS5pZCAgICAgICAgICAgICA9IDEsCisJCS5uYW1lICAgICAgICAgICA9ICJp eHA0eHhfZXRoIiwKKwkJLnBsYXRmb3JtX2RhdGEgID0gJmV0aF9waW5mb1sxXSwKKwl9Cit9Owor CitzdGF0aWMgc3RydWN0IG1lbW9yeV9wbGF0Zm9ybV9kYXRhIHJhbV9wZGF0YSA9IHsKKwkubmFt ZSAgICAgICAgICAgPSAicmFtMCIsCisJLmZsYWdzICAgICAgICAgID0gREVWRlNfUkRXUiwKK307 CisKK3N0cnVjdCBkZXZpY2VfZCBzZHJhbV9kZXYgPSB7CisJLmlkICAgICAgICAgICAgID0gLTEs CisJLm5hbWUgICAgICAgICAgID0gIm1lbSIsCisJLm1hcF9iYXNlICAgICAgID0gMHgwMDAwMDAw MCwKKwkuc2l6ZSAgICAgICAgICAgPSAzMiAqIDEwMjQgKiAxMDI0LAorCS5wbGF0Zm9ybV9kYXRh ICA9ICZyYW1fcGRhdGEsCit9OworCitzdGF0aWMgaW5saW5lIHU4IF9faW5pdCBmbGFzaF9yZWFk Yih1MzIgYWRkcikKK3sKKwlyZXR1cm4gX19yYXdfcmVhZGIoSVhQNFhYX0VYUF9CQVNFKDApICsg YWRkcik7Cit9CisKK3N0YXRpYyBpbnQgX19pbml0IGdtbF9kZXZpY2VzX2luaXQodm9pZCkKK3sK Kwl1MzIgaHdfYml0czsKKwlpbnQgaTsKKworCUlYUDRYWF9FWFBfQ1MwID0gSVhQNFhYX0VYUF9F TiB8IElYUDRYWF9FWFBfSU5URUwgfAorCQlJWFA0WFhfRVhQX0JJVFMoMjQpIHwgSVhQNFhYX0VY UF9XUl9FTiB8IElYUDRYWF9FWFBfQllURV9SRDE2OworCWkgPSByZWdpc3Rlcl9kZXZpY2UoJmNm aV9kZXYpOworCWlmIChpKQorCQlnb3RvIG91dDsKKworCWRldmZzX2FkZF9wYXJ0aXRpb24oIm5v cjAiLCBCQVJFQk9YX1NUQVJULCBCQVJFQk9YX0xFTkdUSCwKKwkJCSAgICBERVZGU19QQVJUSVRJ T05fRklYRUQgfCBERVZGU19QQVJUSVRJT05fUkVBRE9OTFksICJiYXJlYm94Iik7CisJZGV2ZnNf YWRkX3BhcnRpdGlvbigibm9yMCIsIE5QRV9BX1NUQVJULCBOUEVfQV9MRU5HVEgsCisJCQkgICAg REVWRlNfUEFSVElUSU9OX0ZJWEVEIHwgREVWRlNfUEFSVElUSU9OX1JFQURPTkxZLCAiTlBFLUEi KTsKKwlkZXZmc19hZGRfcGFydGl0aW9uKCJub3IwIiwgTlBFX0JfU1RBUlQsIE5QRV9CX0xFTkdU SCwKKwkJCSAgICBERVZGU19QQVJUSVRJT05fRklYRUQgfCBERVZGU19QQVJUSVRJT05fUkVBRE9O TFksICJOUEUtQiIpOworCWRldmZzX2FkZF9wYXJ0aXRpb24oIm5vcjAiLCBOUEVfQ19TVEFSVCwg TlBFX0NfTEVOR1RILAorCQkJICAgIERFVkZTX1BBUlRJVElPTl9GSVhFRCB8IERFVkZTX1BBUlRJ VElPTl9SRUFET05MWSwgIk5QRS1DIik7CisJZGV2ZnNfYWRkX3BhcnRpdGlvbigibm9yMCIsIE5Q RV9FTlYwX1NUQVJULCBOUEVfRU5WMF9MRU5HVEgsCisJCQkgICAgREVWRlNfUEFSVElUSU9OX0ZJ WEVELCAiZW52MCIpOworCisJaHdfYml0cyA9IF9fcmF3X3JlYWRsKElYUDRYWF9FWFBfQkFTRSgw KSArIENGR19IV19CSVRTKTsKKworCWlmIChod19iaXRzICYgQ0ZHX0hXX0hBU19FVEgwKSB7CisJ CWZvciAoaSA9IDA7IGkgPCBFVEhfQUxFTjsgaSsrKQorCQkJZXRoX3BpbmZvWzBdLmh3YWRkcltp XSA9IGZsYXNoX3JlYWRiKENGR19FVEgwX0FERFJFU1MgKyBpKTsKKwkJcmVnaXN0ZXJfZGV2aWNl KCZldGhfZGV2WzBdKTsKKwl9CisKKwlpZiAoaHdfYml0cyAmIENGR19IV19IQVNfRVRIMSkgewor CQlmb3IgKGkgPSAwOyBpIDwgRVRIX0FMRU47IGkrKykKKwkJCWV0aF9waW5mb1sxXS5od2FkZHJb aV0gPSBmbGFzaF9yZWFkYihDRkdfRVRIMV9BRERSRVNTICsgaSk7CisJCXJlZ2lzdGVyX2Rldmlj ZSgmZXRoX2RldlsxXSk7CisJfQorCisJc2RyYW1fZGV2LnNpemUgPSBfX3Jhd19yZWFkbChJWFA0 WFhfRVhQX0JBU0UoMCkgKyBDRkdfU0RSQU1fU0laRSk7CisJaSA9IHJlZ2lzdGVyX2RldmljZSgm c2RyYW1fZGV2KTsKKwlpZiAoaSkKKwkJZ290byBvdXQ7CisKKwlhcm1saW51eF9hZGRfZHJhbSgm c2RyYW1fZGV2KTsKKwlhcm1saW51eF9zZXRfYm9vdHBhcmFtcygodm9pZCAqKSgweDAwMDAwMTAw KSk7CisJYXJtbGludXhfc2V0X2FyY2hpdGVjdHVyZShNQUNIX1RZUEVfR09SQU1PX01MUik7CisK K291dDoKKwlyZXR1cm4gaTsKK30KK2RldmljZV9pbml0Y2FsbChnbWxfZGV2aWNlc19pbml0KTsK ZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtaXhwNHh4L0tjb25maWcgYi9hcmNoL2FybS9tYWNo LWl4cDR4eC9LY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1ZTRi NDEKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNoLWl4cDR4eC9LY29uZmlnCkBAIC0w LDAgKzEsMjYgQEAKK2lmIEFSQ0hfSVhQNFhYCisKK2Nob2ljZQorCXByb21wdCAiSVhQNHh4IEJv YXJkIFR5cGUiCisKK2NvbmZpZyBNQUNIX01VTFRJTElOSworCWJvb2wgIkdvcmFtbyBNdWx0aUxp bmsiCisJc2VsZWN0IE1BQ0hfSEFTX0xPV0xFVkVMX0lOSVQKK2VuZGNob2ljZQorCitjb25maWcg Qk9BUkRJTkZPCisJZGVmYXVsdCAiR29yYW1vIE11bHRpTGluayIgaWYgTUFDSF9NVUxUSUxJTksK KworY29uZmlnIElYUDRYWF9RTUdSCisJdHJpc3RhdGUgIklYUDR4eCBRdWV1ZSBNYW5hZ2VyIHN1 cHBvcnQiCisJaGVscAorCSAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgSVhQNHh4IGJ1aWx0LWluIGhh cmR3YXJlIHF1ZXVlIG1hbmFnZXIKKwkgIGFuZCBpcyByZXF1aXJlZCBieSB0aGUgRXRoZXJuZXQg ZHJpdmVyLgorCitjb25maWcgSVhQNFhYX05QRQorCXRyaXN0YXRlICJJWFA0eHggTmV0d29yayBQ cm9jZXNzb3IgRW5naW5lIHN1cHBvcnQiCisJaGVscAorCSAgVGhpcyBkcml2ZXIgc3VwcG9ydHMg SVhQNHh4IGJ1aWx0LWluIG5ldHdvcmsgY29wcm9jZXNzb3JzCisJICBhbmQgaXMgcmVxdWlyZWQg YnkgdGhlIEV0aGVybmV0IGRyaXZlci4KKworZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21h Y2gtaXhwNHh4L01ha2VmaWxlIGIvYXJjaC9hcm0vbWFjaC1peHA0eHgvTWFrZWZpbGUKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWEzODk5MQotLS0gL2Rldi9udWxsCisrKyBi L2FyY2gvYXJtL21hY2gtaXhwNHh4L01ha2VmaWxlCkBAIC0wLDAgKzEsMyBAQAorb2JqLXkgKz0g bG93bGV2ZWxfaW5pdC5vIGdlbmVyaWMubworb2JqLSQoQ09ORklHX0lYUDRYWF9RTUdSKSArPSBx bWdyLm8KK29iai0kKENPTkZJR19JWFA0WFhfTlBFKSArPSBucGUubwpkaWZmIC0tZ2l0IGEvYXJj aC9hcm0vbWFjaC1peHA0eHgvZ2VuZXJpYy5jIGIvYXJjaC9hcm0vbWFjaC1peHA0eHgvZ2VuZXJp Yy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyMzk0YTQKLS0tIC9kZXYv bnVsbAorKysgYi9hcmNoL2FybS9tYWNoLWl4cDR4eC9nZW5lcmljLmMKQEAgLTAsMCArMSwxMjAg QEAKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxpbml0Lmg+CisjaW5jbHVkZSA8bnMx NjU1MC5oPgorI2luY2x1ZGUgPGFzbS9hcm1saW51eC5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgor I2luY2x1ZGUgPG1hY2gvaXhwNHh4LXJlZ3MuaD4KKworI2RlZmluZSBPU1RTX0ZSRVFVRU5DWSA2 NjY2NjAwMAorCit2b2lkIHJlc2V0X2NwdSh1bG9uZyBhZGRyKQoreworCS8qIFVzZSBvbi1jaGlw IHJlc2V0IGNhcGFiaWxpdHkgKi8KKwkvKiBUaGlzIG1heSBub3Qgd29yayBvbiBJWFA0MjUgcmV2 LiBBMCAqLworCisJSVhQNFhYX09TV0sgPSBJWFA0WFhfV0RUX0tFWTsKKwlJWFA0WFhfT1NXVCA9 IDA7IC8qIHJlcXVlc3QgaW1tZWRpYXRlIHJlc2V0ICovCisJSVhQNFhYX09TV0UgPSBJWFA0WFhf V0RUX1JFU0VUX0VOQUJMRSB8IElYUDRYWF9XRFRfQ09VTlRfRU5BQkxFOworCXdoaWxlICgxKQor CQk7Cit9CisKKyNpbmNsdWRlIDxjbG9jay5oPgorCisvKioKKyAqIEBicmllZiBQcm92aWRlIGEg c2ltcGxlIGNsb2NrIHJlYWQKKyAqCisgKiBOb3RoaW5nIGlzIHNpbXBsZXIuLiByZWFkIGRpcmVj dCBmcm9tIGNsb2NrIGFuZCBwcm92aWRlIGl0CisgKiB0byB0aGUgY2FsbGVyLgorICoKKyAqIEBy ZXR1cm4gY2xvY2sgY291bnRlcgorICovCitzdGF0aWMgdWludDY0X3QgaXhwNHh4X2Nsb2Nrc291 cmNlX3JlYWQodm9pZCkKK3sKKwlyZXR1cm4gSVhQNFhYX09TVFM7Cit9CisKK3N0YXRpYyBzdHJ1 Y3QgY2xvY2tzb3VyY2UgY3MgPSB7CisJLnJlYWQgPSBpeHA0eHhfY2xvY2tzb3VyY2VfcmVhZCwK KwkubWFzayA9IDB4ZmZmZmZmZmYsCisJLnNoaWZ0ID0gMTAsCit9OworCisvKioKKyAqIEBicmll ZiBJbml0aWFsaXplIHRoZSBDbG9jaworICoKKyAqIFdlIHVzZSB0aGUgVGltZS1TdGFtcCBUaW1l cgorICoKKyAqIEByZXR1cm4gcmVzdWx0IG9mIEByZWYgaW5pdF9jbG9jaworICovCitzdGF0aWMg aW50IGl4cDR4eF9jbG9ja3NvdXJjZV9pbml0KHZvaWQpCit7CisJY3MubXVsdCA9IGNsb2Nrc291 cmNlX2h6Mm11bHQoT1NUU19GUkVRVUVOQ1ksIGNzLnNoaWZ0KTsKKworCXJldHVybiBpbml0X2Ns b2NrKCZjcyk7Cit9CisKKy8qIFJ1biBtZSBhdCBib290IHRpbWUgKi8KK2NvcmVfaW5pdGNhbGwo aXhwNHh4X2Nsb2Nrc291cmNlX2luaXQpOworCisKKyNpZmRlZiBDT05GSUdfRFJJVkVSX1NFUklB TF9OUzE2NTUwCisKKy8qKgorICogQGJyaWVmIFVBUlQgcG9ydCByZWdpc3RlciByZWFkIGZ1bmN0 aW9uIGZvciBJWFA0WFgKKyAqCisgKiBAcGFyYW0gYmFzZSBiYXNlIGFkZHJlc3Mgb2YgVUFSVAor ICogQHBhcmFtIHJlZ19pZHggcmVnaXN0ZXIgaW5kZXgKKyAqCisgKiBAcmV0dXJuIGNoYXJhY3Rl ciByZWFkIGZyb20gcmVnaXN0ZXIKKyAqLwordW5zaWduZWQgaW50IGl4cDR4eF91YXJ0X3JlYWQo dW5zaWduZWQgbG9uZyBiYXNlLCB1bnNpZ25lZCBjaGFyIHJlZ19pZHgpCit7CisJcmV0dXJuIHJl YWRiKDQgKiByZWdfaWR4ICsgMyAvKiBiaWctZW5kaWFuICovICsgKHVpbnQ4X3QgKiliYXNlKTsK K30KK0VYUE9SVF9TWU1CT0woaXhwNHh4X3VhcnRfcmVhZCk7CisKKy8qKgorICogQGJyaWVmIFVB UlQgcG9ydCByZWdpc3RlciB3cml0ZSBmdW5jdGlvbiBmb3IgSVhQNFhYCisgKgorICogQHBhcmFt IHZhbCB2YWx1ZSB0byB3cml0ZQorICogQHBhcmFtIGJhc2UgYmFzZSBhZGRyZXNzIG9mIFVBUlQK KyAqIEBwYXJhbSByZWdfaWR4IHJlZ2lzdGVyIGluZGV4CisgKgorICogQHJldHVybiB2b2lkCisg Ki8KK3ZvaWQgaXhwNHh4X3VhcnRfd3JpdGUodW5zaWduZWQgaW50IHZhbCwgdW5zaWduZWQgbG9u ZyBiYXNlLCB1bnNpZ25lZCBjaGFyIHJlZ19pZHgpCit7CisJd3JpdGViKHZhbCwgNCAqIHJlZ19p ZHggKyAzIC8qIGJpZy1lbmRpYW4gKi8gKyAodWludDhfdCAqKWJhc2UpOworfQorRVhQT1JUX1NZ TUJPTChpeHA0eHhfdWFydF93cml0ZSk7CisKKworc3RhdGljIHN0cnVjdCBOUzE2NTUwX3BsYXQg c2VyaWFsX3BsYXQgPSB7CisJLmNsb2NrID0gMTQ3NDU2MDAsCisJLmZfY2FwcyA9IENPTlNPTEVf U1RESU4gfCBDT05TT0xFX1NURE9VVCB8IENPTlNPTEVfU1RERVJSLAorCS5yZWdfcmVhZCA9IGl4 cDR4eF91YXJ0X3JlYWQsCisJLnJlZ193cml0ZSA9IGl4cDR4eF91YXJ0X3dyaXRlLAorfTsKKwor c3RhdGljIHN0cnVjdCBkZXZpY2VfZCBpeHA0eHhfc2VyaWFsX2RldmljZSA9IHsKKwkubmFtZSA9 ICJzZXJpYWxfbnMxNjU1MCIsCisJLm1hcF9iYXNlID0gKHUzMilJWFA0WFhfVUFSVDFfQkFTRSwK Kwkuc2l6ZSA9IDEwMjQsCisJLnBsYXRmb3JtX2RhdGEgPSAodm9pZCAqKSZzZXJpYWxfcGxhdCwK K307CisKKy8qKgorICogQGJyaWVmIFVBUlQgc2VyaWFsIHBvcnQgaW5pdGlhbGl6YXRpb24KKyAq CisgKiBAcmV0dXJuIHJlc3VsdCBvZiBkZXZpY2UgcmVnaXN0cmF0aW9uCisgKi8KK3N0YXRpYyBp bnQgaXhwNHh4X2NvbnNvbGVfaW5pdCh2b2lkKQoreworCS8qIFJlZ2lzdGVyIHRoZSBzZXJpYWwg cG9ydCAqLworCXJldHVybiByZWdpc3Rlcl9kZXZpY2UoJml4cDR4eF9zZXJpYWxfZGV2aWNlKTsK K30KKworY29uc29sZV9pbml0Y2FsbChpeHA0eHhfY29uc29sZV9pbml0KTsKKworI2VuZGlmIC8q IENPTkZJR19EUklWRVJfU0VSSUFMX05TMTY1NTAgKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21h Y2gtaXhwNHh4L2luY2x1ZGUvbWFjaC9jcHUuaCBiL2FyY2gvYXJtL21hY2gtaXhwNHh4L2luY2x1 ZGUvbWFjaC9jcHUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGUwMjFl Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vbWFjaC1peHA0eHgvaW5jbHVkZS9tYWNoL2Nw dS5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBhcmNoL2FybS9tYWNoLWl4cDR4eC9pbmNsdWRl L21hY2gvY3B1LmgKKyAqCisgKiBJWFA0WFggY3B1IHR5cGUgZGV0ZWN0aW9uCisgKgorICogQ29w eXJpZ2h0IChDKSAyMDA3IE1vbnRhVmlzdGEgU29mdHdhcmUsIEluYy4KKyAqCisgKiBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLgorICoKKyAqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfQ1BVX0hfXworI2RlZmluZSBf X0FTTV9BUkNIX0NQVV9IX18KKworI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisKKy8qIFByb2Nl c3NvciBpZCB2YWx1ZSBpbiBDUDE1IFJlZ2lzdGVyIDAgKi8KKyNkZWZpbmUgSVhQNDJYX1BST0NF U1NPUl9JRF9WQUxVRSAweDY5MDU0MWMwIC8qIGluY2x1ZGluZyB1bnVzZWQgMHg2OTA1NDFFeCAq LworI2RlZmluZSBJWFA0MlhfUFJPQ0VTU09SX0lEX01BU0sgIDB4ZmZmZmZmYzAKKworI2RlZmlu ZSBJWFA0M1hfUFJPQ0VTU09SX0lEX1ZBTFVFIDB4NjkwNTQwNDAKKyNkZWZpbmUgSVhQNDNYX1BS T0NFU1NPUl9JRF9NQVNLICAweGZmZmZmZmYwCisKKyNkZWZpbmUgSVhQNDZYX1BST0NFU1NPUl9J RF9WQUxVRSAweDY5MDU0MjAwIC8qIGluY2x1ZGluZyBJWFA0NTUgKi8KKyNkZWZpbmUgSVhQNDZY X1BST0NFU1NPUl9JRF9NQVNLICAweGZmZmZmZmYwCisKKyNkZWZpbmUgY3B1X2lzX2l4cDQyeF9y ZXZfYTAoKSAoKHJlYWRfY3B1aWRfaWQoKSAmIChJWFA0MlhfUFJPQ0VTU09SX0lEX01BU0sgfCAw eEYpKSA9PSBcCisJCQkJSVhQNDJYX1BST0NFU1NPUl9JRF9WQUxVRSkKKyNkZWZpbmUgY3B1X2lz X2l4cDQyeCgpICgocmVhZF9jcHVpZF9pZCgpICYgSVhQNDJYX1BST0NFU1NPUl9JRF9NQVNLKSA9 PSBcCisJCQkgSVhQNDJYX1BST0NFU1NPUl9JRF9WQUxVRSkKKyNkZWZpbmUgY3B1X2lzX2l4cDQz eCgpICgocmVhZF9jcHVpZF9pZCgpICYgSVhQNDNYX1BST0NFU1NPUl9JRF9NQVNLKSA9PSBcCisJ CQkgSVhQNDNYX1BST0NFU1NPUl9JRF9WQUxVRSkKKyNkZWZpbmUgY3B1X2lzX2l4cDQ2eCgpICgo cmVhZF9jcHVpZF9pZCgpICYgSVhQNDZYX1BST0NFU1NPUl9JRF9NQVNLKSA9PSBcCisJCQkgSVhQ NDZYX1BST0NFU1NPUl9JRF9WQUxVRSkKKworLyoKKyAqIFRoZSBDUFUgSUQgbmV2ZXIgY2hhbmdl cyBhdCBydW4gdGltZSwgc28gd2UgbWlnaHQgYXMgd2VsbCB0ZWxsIHRoZQorICogY29tcGlsZXIg dGhhdCBpdCdzIGNvbnN0YW50LiAgVXNlIHRoaXMgZnVuY3Rpb24gdG8gcmVhZCB0aGUgQ1BVIElE CisgKiByYXRoZXIgdGhhbiBkaXJlY3RseSByZWFkaW5nIHByb2Nlc3Nvcl9pZCBvciByZWFkX2Nw dWlkKCkgZGlyZWN0bHkuCisgKi8KK3N0YXRpYyBpbmxpbmUgdTMyIF9fYXR0cmlidXRlX2NvbnN0 X18gcmVhZF9jcHVpZF9pZCh2b2lkKQoreworCXUzMiB2YWw7CisJYXNtKCJtcmMgcDE1LCAwLCAl MCwgYzAsIGMwLCAwIiA6ICI9ciIgKHZhbCkgOiA6ICJjYyIpOworCisJcmV0dXJuIHZhbDsKK30K Kworc3RhdGljIGlubGluZSB1MzIgaXhwNHh4X3JlYWRfZmVhdHVyZV9iaXRzKHZvaWQpCit7CisJ dTMyIHZhbCA9IH5JWFA0WFhfRVhQX0NGRzI7CisKKwlpZiAoY3B1X2lzX2l4cDQyeF9yZXZfYTAo KSkKKwkJcmV0dXJuIElYUDQyWF9GRUFUVVJFX01BU0sgJiB+KElYUDRYWF9GRUFUVVJFX1JDT01Q IHwKKwkJCQkJICAgICAgIElYUDRYWF9GRUFUVVJFX0FFUyk7CisJaWYgKGNwdV9pc19peHA0Mngo KSkKKwkJcmV0dXJuIHZhbCAmIElYUDQyWF9GRUFUVVJFX01BU0s7CisJaWYgKGNwdV9pc19peHA0 M3goKSkKKwkJcmV0dXJuIHZhbCAmIElYUDQzWF9GRUFUVVJFX01BU0s7CisJcmV0dXJuIHZhbCAm IElYUDQ2WF9GRUFUVVJFX01BU0s7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBpeHA0eHhfd3Jp dGVfZmVhdHVyZV9iaXRzKHUzMiB2YWx1ZSkKK3sKKwlJWFA0WFhfRVhQX0NGRzIgPSB+dmFsdWU7 Cit9CisKKyNlbmRpZiAgLyogX0FTTV9BUkNIX0NQVV9IICovCmRpZmYgLS1naXQgYS9hcmNoL2Fy bS9tYWNoLWl4cDR4eC9pbmNsdWRlL21hY2gvaXhwNHh4LXJlZ3MuaCBiL2FyY2gvYXJtL21hY2gt aXhwNHh4L2luY2x1ZGUvbWFjaC9peHA0eHgtcmVncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmRhNGRjOGEKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNoLWl4 cDR4eC9pbmNsdWRlL21hY2gvaXhwNHh4LXJlZ3MuaApAQCAtMCwwICsxLDM2NSBAQAorLyoKKyAq IFJlZ2lzdGVyIGRlZmluaXRpb25zIGZvciBJWFA0eHggY2hpcHNldC4KKyAqCisgKiBDb3B5cmln aHQgKEMpIDIwMDIgSW50ZWwgQ29ycG9yYXRpb24uCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAw NCBNb250YVZpc3RhIFNvZnR3YXJlLCBJbmMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAy IGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisg Ki8KKworI2lmbmRlZiBfQVNNX0FSTV9JWFA0WFhfSF8KKyNkZWZpbmUgX0FTTV9BUk1fSVhQNFhY X0hfCisKKyNpZmRlZiBfX0FTU0VNQkxFUl9fCisjZGVmaW5lIElYUDRYWF9SRUcocmVnKSAgKHJl ZykKKyNlbHNlCisjZGVmaW5lIElYUDRYWF9SRUcocmVnKSAgKCoodm9sYXRpbGUgdTMyICopKHJl ZykpCisjZGVmaW5lIElYUDRYWF9CQVNFKHJlZykgKCh1MzIqKShyZWcpKQorI2VuZGlmCisKKy8q IEV4cGFuc2lvbiBCdXMgcmVnaW9uICovCisKKy8qIFF1ZXVlIE1hbmFnZXIgKi8KKyNkZWZpbmUg SVhQNFhYX1FNR1JfQkFTRSAgICAgICAgICAgICAgKDB4NjAwMDAwMDApCisjZGVmaW5lIElYUDRY WF9RTUdSX1JFR0lPTl9TSVpFICAgICAgICgweDAwMDA0MDAwKQorCisKKy8qIFBDSSBDb25maWcg cmVnaXN0ZXJzICovCisjZGVmaW5lIElYUDRYWF9QQ0lfQ0ZHX0JBU0UgICAgICAgICAgICgweEMw MDAwMDAwKQorI2RlZmluZSBJWFA0WFhfUENJX0NGR19SRUdJT05fU0laRSAgICAoMHgwMDAwMTAw MCkKKworLyogUGVyaXBoZXJhbCBzcGFjZSAqLworI2RlZmluZSBJWFA0WFhfUEVSSVBIRVJBTF9C QVNFICAgICAgICAoMHhDODAwMDAwMCkKKyNkZWZpbmUgSVhQNFhYX1BFUklQSEVSQUxfUkVHSU9O X1NJWkUgKDB4MDAwMTMwMDApCisKKy8qCisgKiBEZWJ1ZyBVQVJUCisgKgorICogVGhpcyBpcyBi YXNpY2FsbHkgYSByZW1hcCBvZiBVQVJUMSBpbnRvIGEgcmVnaW9uIHRoYXQgaXMgc2VjdGlvbgor ICogYWxpZ25lZCBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIHdpdGggdGhlIGxvdy1sZXZlbCBkZWJ1 ZyBjb2RlLgorICovCisjZGVmaW5lIElYUDRYWF9ERUJVR19VQVJUX0JBU0UgICAgICAgICgweEM4 MDAwMDAwKQorI2RlZmluZSBJWFA0WFhfREVCVUdfVUFSVF9SRUdJT05fU0laRSAoMHgwMDAwMTAw MCkKKworLyogRXhwYW5zaW9uIEJ1cyBDb250cm9sbGVyIHJlZ2lzdGVycy4gKi8KKyNkZWZpbmUg SVhQNFhYX0VYUF9DUzAgICAgICAgSVhQNFhYX1JFRygweEM0MDAwMDAwKQorI2RlZmluZSBJWFA0 WFhfRVhQX0NTMSAgICAgICBJWFA0WFhfUkVHKDB4QzQwMDAwMDQpCisjZGVmaW5lIElYUDRYWF9F WFBfQ1MyICAgICAgIElYUDRYWF9SRUcoMHhDNDAwMDAwOCkKKyNkZWZpbmUgSVhQNFhYX0VYUF9D UzMgICAgICAgSVhQNFhYX1JFRygweEM0MDAwMDBDKQorI2RlZmluZSBJWFA0WFhfRVhQX0NTNCAg ICAgICBJWFA0WFhfUkVHKDB4QzQwMDAwMTApCisjZGVmaW5lIElYUDRYWF9FWFBfQ1M1ICAgICAg IElYUDRYWF9SRUcoMHhDNDAwMDAxNCkKKyNkZWZpbmUgSVhQNFhYX0VYUF9DUzYgICAgICAgSVhQ NFhYX1JFRygweEM0MDAwMDE4KQorI2RlZmluZSBJWFA0WFhfRVhQX0NTNyAgICAgICBJWFA0WFhf UkVHKDB4QzQwMDAwMUMpCisKKyNkZWZpbmUgSVhQNFhYX0VYUF9CQVNFKG4pICAoMHg1MDAwMDAw MCArIChuKSAqIDEwMDAwMDApCisKKyNkZWZpbmUgSVhQNFhYX0VYUF9FTiAgICAgICAgMHg4MDAw MDAwMAorI2RlZmluZSBJWFA0WFhfRVhQX1QxKG4pICAgICgweDEwMDAwMDAwICogKG4pKSAvKiB2 YWxpZDogMCAtIDMgKi8KKyNkZWZpbmUgSVhQNFhYX0VYUF9UMihuKSAgICAoMHgwNDAwMDAwMCAq IChuKSkgLyogdmFsaWQ6IDAgLSAzICovCisjZGVmaW5lIElYUDRYWF9FWFBfVDMobikgICAgKDB4 MDA0MDAwMDAgKiAobikpIC8qIHZhbGlkOiAwIC0gMTUgKi8KKyNkZWZpbmUgSVhQNFhYX0VYUF9U NChuKSAgICAoMHgwMDEwMDAwMCAqIChuKSkgLyogdmFsaWQ6IDAgLSAzICovCisjZGVmaW5lIElY UDRYWF9FWFBfVDUobikgICAgKDB4MDAwMTAwMDAgKiAobikpIC8qIHZhbGlkOiAwIC0gMTUgKi8K KyNkZWZpbmUgSVhQNFhYX0VYUF9JTlRFTCAgICAgMHgwMDAwMDAwMAorI2RlZmluZSBJWFA0WFhf RVhQX01PVE8gICAgICAweDAwMDA0MDAwCisjZGVmaW5lIElYUDRYWF9FWFBfSFBJICAgICAgIDB4 MDAwMDgwMDAKKyNkZWZpbmUgSVhQNFhYX0VYUF9CSVRTKG4pICAoMHgwMDAwMDQwMCAqICgobikg LSA5KSkgLyogdmFsaWQ6IDkgLSAyNCAqLworI2RlZmluZSBJWFA0WFhfRVhQX0JZVEVfUkQxNiAw eDAwMDAwMDQwCisjZGVmaW5lIElYUDRYWF9FWFBfSFJEWV9QT0wgIDB4MDAwMDAwMjAKKyNkZWZp bmUgSVhQNFhYX0VYUF9NVVhfRU4gICAgMHgwMDAwMDAxMAorI2RlZmluZSBJWFA0WFhfRVhQX1NQ TFRfRU4gICAweDAwMDAwMDA4CisjZGVmaW5lIElYUDRYWF9FWFBfV1JfRU4gICAgIDB4MDAwMDAw MDIKKyNkZWZpbmUgSVhQNFhYX0VYUF9CWVRFX0VOICAgMHgwMDAwMDAwMQorCisjZGVmaW5lIElY UDRYWF9FWFBfQ0ZHMCAgICAgIElYUDRYWF9SRUcoMHhDNDAwMDAyMCkKKyNkZWZpbmUgSVhQNFhY X0VYUF9DRkcxICAgICAgSVhQNFhYX1JFRygweEM0MDAwMDI0KQorI2RlZmluZSBJWFA0WFhfRVhQ X0NGRzIgICAgICBJWFA0WFhfUkVHKDB4QzQwMDAwMjgpCisjZGVmaW5lIElYUDRYWF9FWFBfQ0ZH MyAgICAgIElYUDRYWF9SRUcoMHhDNDAwMDAyQykKKworCisvKiBQZXJpcGhlcmFsIFNwYWNlIFJl Z2lzdGVyIFJlZ2lvbiBCYXNlIEFkZHJlc3NlcyAqLworI2RlZmluZSBJWFA0WFhfVUFSVDFfQkFT RSAgICBJWFA0WFhfQkFTRShJWFA0WFhfUEVSSVBIRVJBTF9CQVNFICsgMHgwMDAwKQorI2RlZmlu ZSBJWFA0WFhfVUFSVDJfQkFTRSAgICBJWFA0WFhfQkFTRShJWFA0WFhfUEVSSVBIRVJBTF9CQVNF ICsgMHgxMDAwKQorI2RlZmluZSBJWFA0WFhfUE1VX0JBU0UgICAgICBJWFA0WFhfQkFTRShJWFA0 WFhfUEVSSVBIRVJBTF9CQVNFICsgMHgyMDAwKQorI2RlZmluZSBJWFA0WFhfSU5UQ19CQVNFICAg ICBJWFA0WFhfQkFTRShJWFA0WFhfUEVSSVBIRVJBTF9CQVNFICsgMHgzMDAwKQorI2RlZmluZSBJ WFA0WFhfR1BJT19CQVNFICAgICBJWFA0WFhfQkFTRShJWFA0WFhfUEVSSVBIRVJBTF9CQVNFICsg MHg0MDAwKQorI2RlZmluZSBJWFA0WFhfTlBFQV9CQVNFICAgICBJWFA0WFhfQkFTRShJWFA0WFhf UEVSSVBIRVJBTF9CQVNFICsgMHg2MDAwKQorI2RlZmluZSBJWFA0WFhfTlBFQl9CQVNFICAgICBJ WFA0WFhfQkFTRShJWFA0WFhfUEVSSVBIRVJBTF9CQVNFICsgMHg3MDAwKQorI2RlZmluZSBJWFA0 WFhfTlBFQ19CQVNFICAgICBJWFA0WFhfQkFTRShJWFA0WFhfUEVSSVBIRVJBTF9CQVNFICsgMHg4 MDAwKQorI2RlZmluZSBJWFA0WFhfRXRoQl9CQVNFICAgICBJWFA0WFhfQkFTRShJWFA0WFhfUEVS SVBIRVJBTF9CQVNFICsgMHg5MDAwKQorI2RlZmluZSBJWFA0WFhfRXRoQ19CQVNFICAgICBJWFA0 WFhfQkFTRShJWFA0WFhfUEVSSVBIRVJBTF9CQVNFICsgMHhBMDAwKQorI2RlZmluZSBJWFA0WFhf VVNCX0JBU0UgICAgICBJWFA0WFhfQkFTRShJWFA0WFhfUEVSSVBIRVJBTF9CQVNFICsgMHhCMDAw KQorLyogSVhQNDZ4IG9ubHkgKi8KKyNkZWZpbmUgSVhQNFhYX0V0aEFfQkFTRSAgICAgSVhQNFhY X0JBU0UoSVhQNFhYX1BFUklQSEVSQUxfQkFTRSArIDB4QzAwMCkKKyNkZWZpbmUgSVhQNFhYX0V0 aEIxX0JBU0UgICAgSVhQNFhYX0JBU0UoSVhQNFhYX1BFUklQSEVSQUxfQkFTRSArIDB4RDAwMCkK KyNkZWZpbmUgSVhQNFhYX0V0aEIyX0JBU0UgICAgSVhQNFhYX0JBU0UoSVhQNFhYX1BFUklQSEVS QUxfQkFTRSArIDB4RTAwMCkKKyNkZWZpbmUgSVhQNFhYX0V0aEIzX0JBU0UgICAgSVhQNFhYX0JB U0UoSVhQNFhYX1BFUklQSEVSQUxfQkFTRSArIDB4RjAwMCkKKyNkZWZpbmUgSVhQNFhYX1RJTUVT WU5DX0JBU0UgSVhQNFhYX0JBU0UoSVhQNFhYX1BFUklQSEVSQUxfQkFTRSArIDB4MTAwMDApCisj ZGVmaW5lIElYUDRYWF9JMkNfQkFTRSAgICAgIElYUDRYWF9CQVNFKElYUDRYWF9QRVJJUEhFUkFM X0JBU0UgKyAweDExMDAwKQorI2RlZmluZSBJWFA0WFhfU1NQX0JBU0UgICAgICBJWFA0WFhfQkFT RShJWFA0WFhfUEVSSVBIRVJBTF9CQVNFICsgMHgxMjAwMCkKKworLyoKKyAgQ29uc3RhbnRzIHRv IG1ha2UgaXQgZWFzeSB0byBhY2Nlc3MgSW50ZXJydXB0IENvbnRyb2xsZXIgcmVnaXN0ZXJzCisg Ki8KKyNkZWZpbmUgSVhQNFhYX0lDUFJfT0ZGU0VUICAgMHgwMCAvKiBJbnRlcnJ1cHQgU3RhdHVz ICovCisjZGVmaW5lIElYUDRYWF9JQ01SX09GRlNFVCAgIDB4MDQgLyogSW50ZXJydXB0IEVuYWJs ZSAqLworI2RlZmluZSBJWFA0WFhfSUNMUl9PRkZTRVQgICAweDA4IC8qIEludGVycnVwdCBJUlEv RklRIFNlbGVjdCAqLworI2RlZmluZSBJWFA0WFhfSUNJUF9PRkZTRVQgICAweDBDIC8qIElSUSBT dGF0dXMgKi8KKyNkZWZpbmUgSVhQNFhYX0lDRlBfT0ZGU0VUICAgMHgxMCAvKiBGSVEgU3RhdHVz ICovCisjZGVmaW5lIElYUDRYWF9JQ0hSX09GRlNFVCAgIDB4MTQgLyogSW50ZXJydXB0IFByaW9y aXR5ICovCisjZGVmaW5lIElYUDRYWF9JQ0lIX09GRlNFVCAgIDB4MTggLyogSVJRIEhpZ2hlc3Qg UHJpIEludCAqLworI2RlZmluZSBJWFA0WFhfSUNGSF9PRkZTRVQgICAweDFDIC8qIEZJUSBIaWdo ZXN0IFByaSBJbnQgKi8KKworLyogSVhQNDY1LW9ubHkgKi8KKyNkZWZpbmUgSVhQNFhYX0lDUFIy X09GRlNFVCAgMHgyMCAvKiBJbnRlcnJ1cHQgU3RhdHVzIDIgKi8KKyNkZWZpbmUgSVhQNFhYX0lD TVIyX09GRlNFVCAgMHgyNCAvKiBJbnRlcnJ1cHQgRW5hYmxlIDIgKi8KKyNkZWZpbmUgSVhQNFhY X0lDTFIyX09GRlNFVCAgMHgyOCAvKiBJbnRlcnJ1cHQgSVJRL0ZJUSBTZWxlY3QgMiAqLworI2Rl ZmluZSBJWFA0WFhfSUNJUDJfT0ZGU0VUICAweDJDIC8qIElSUSBTdGF0dXMgKi8KKyNkZWZpbmUg SVhQNFhYX0lDRlAyX09GRlNFVCAgMHgzMCAvKiBGSVEgU3RhdHVzICovCisjZGVmaW5lIElYUDRY WF9JQ0VFTl9PRkZTRVQgIDB4MzQgLyogRXJyb3IgSGlnaCBQcmkgRW5hYmxlICovCisKKworLyog SW50ZXJydXB0IENvbnRyb2xsZXIgUmVnaXN0ZXIgRGVmaW5pdGlvbnMuICovCisjZGVmaW5lIElY UDRYWF9JTlRDX1JFRyh4KSAgICgodm9sYXRpbGUgdTMyICopKElYUDRYWF9JTlRDX0JBU0UgKyAo eCkpKQorCisjZGVmaW5lIElYUDRYWF9JQ1BSICAgICAgICAgIElYUDRYWF9JTlRDX1JFRyhJWFA0 WFhfSUNQUl9PRkZTRVQpCisjZGVmaW5lIElYUDRYWF9JQ01SICAgICAgICAgIElYUDRYWF9JTlRD X1JFRyhJWFA0WFhfSUNNUl9PRkZTRVQpCisjZGVmaW5lIElYUDRYWF9JQ0xSICAgICAgICAgIElY UDRYWF9JTlRDX1JFRyhJWFA0WFhfSUNMUl9PRkZTRVQpCisjZGVmaW5lIElYUDRYWF9JQ0lQICAg ICAgICAgIElYUDRYWF9JTlRDX1JFRyhJWFA0WFhfSUNJUF9PRkZTRVQpCisjZGVmaW5lIElYUDRY WF9JQ0ZQICAgICAgICAgIElYUDRYWF9JTlRDX1JFRyhJWFA0WFhfSUNGUF9PRkZTRVQpCisjZGVm aW5lIElYUDRYWF9JQ0hSICAgICAgICAgIElYUDRYWF9JTlRDX1JFRyhJWFA0WFhfSUNIUl9PRkZT RVQpCisjZGVmaW5lIElYUDRYWF9JQ0lIICAgICAgICAgIElYUDRYWF9JTlRDX1JFRyhJWFA0WFhf SUNJSF9PRkZTRVQpCisjZGVmaW5lIElYUDRYWF9JQ0ZIICAgICAgICAgIElYUDRYWF9JTlRDX1JF RyhJWFA0WFhfSUNGSF9PRkZTRVQpCisjZGVmaW5lIElYUDRYWF9JQ1BSMiAgICAgICAgIElYUDRY WF9JTlRDX1JFRyhJWFA0WFhfSUNQUjJfT0ZGU0VUKQorI2RlZmluZSBJWFA0WFhfSUNNUjIgICAg ICAgICBJWFA0WFhfSU5UQ19SRUcoSVhQNFhYX0lDTVIyX09GRlNFVCkKKyNkZWZpbmUgSVhQNFhY X0lDTFIyICAgICAgICAgSVhQNFhYX0lOVENfUkVHKElYUDRYWF9JQ0xSMl9PRkZTRVQpCisjZGVm aW5lIElYUDRYWF9JQ0lQMiAgICAgICAgIElYUDRYWF9JTlRDX1JFRyhJWFA0WFhfSUNJUDJfT0ZG U0VUKQorI2RlZmluZSBJWFA0WFhfSUNGUDIgICAgICAgICBJWFA0WFhfSU5UQ19SRUcoSVhQNFhY X0lDRlAyX09GRlNFVCkKKyNkZWZpbmUgSVhQNFhYX0lDRUVOICAgICAgICAgSVhQNFhYX0lOVENf UkVHKElYUDRYWF9JQ0VFTl9PRkZTRVQpCisKKy8qIENvbnN0YW50cyB0byBtYWtlIGl0IGVhc3kg dG8gYWNjZXNzIEdQSU8gcmVnaXN0ZXJzICovCisjZGVmaW5lIElYUDRYWF9HUElPX0dQT1VUUl9P RkZTRVQgICAweDAwCisjZGVmaW5lIElYUDRYWF9HUElPX0dQT0VSX09GRlNFVCAgICAweDA0Cisj ZGVmaW5lIElYUDRYWF9HUElPX0dQSU5SX09GRlNFVCAgICAweDA4CisjZGVmaW5lIElYUDRYWF9H UElPX0dQSVNSX09GRlNFVCAgICAweDBDCisjZGVmaW5lIElYUDRYWF9HUElPX0dQSVQxUl9PRkZT RVQgICAweDEwCisjZGVmaW5lIElYUDRYWF9HUElPX0dQSVQyUl9PRkZTRVQgICAweDE0CisjZGVm aW5lIElYUDRYWF9HUElPX0dQQ0xLUl9PRkZTRVQgICAweDE4CisjZGVmaW5lIElYUDRYWF9HUElP X0dQREJTRUxSX09GRlNFVCAweDFDCisKKy8qIEdQSU8gUmVnaXN0ZXIgRGVmaW5pdGlvbnMgLSBw ZXJmb3JtIG9ubHkgMzItYml0IHJlYWRzL3dyaXRlcyAqLworI2RlZmluZSBJWFA0WFhfR1BJT19S RUcoeCkgICAoKHZvbGF0aWxlIHUzMiAqKShJWFA0WFhfR1BJT19CQVNFICsgKHgpKSkKKworI2Rl ZmluZSBJWFA0WFhfR1BJT19HUE9VVFIgICBJWFA0WFhfR1BJT19SRUcoSVhQNFhYX0dQSU9fR1BP VVRSX09GRlNFVCkKKyNkZWZpbmUgSVhQNFhYX0dQSU9fR1BPRVIgICAgSVhQNFhYX0dQSU9fUkVH KElYUDRYWF9HUElPX0dQT0VSX09GRlNFVCkKKyNkZWZpbmUgSVhQNFhYX0dQSU9fR1BJTlIgICAg SVhQNFhYX0dQSU9fUkVHKElYUDRYWF9HUElPX0dQSU5SX09GRlNFVCkKKyNkZWZpbmUgSVhQNFhY X0dQSU9fR1BJU1IgICAgSVhQNFhYX0dQSU9fUkVHKElYUDRYWF9HUElPX0dQSVNSX09GRlNFVCkK KyNkZWZpbmUgSVhQNFhYX0dQSU9fR1BJVDFSICAgSVhQNFhYX0dQSU9fUkVHKElYUDRYWF9HUElP X0dQSVQxUl9PRkZTRVQpCisjZGVmaW5lIElYUDRYWF9HUElPX0dQSVQyUiAgIElYUDRYWF9HUElP X1JFRyhJWFA0WFhfR1BJT19HUElUMlJfT0ZGU0VUKQorI2RlZmluZSBJWFA0WFhfR1BJT19HUENM S1IgICBJWFA0WFhfR1BJT19SRUcoSVhQNFhYX0dQSU9fR1BDTEtSX09GRlNFVCkKKyNkZWZpbmUg SVhQNFhYX0dQSU9fR1BEQlNFTFIgSVhQNFhYX0dQSU9fUkVHKElYUDRYWF9HUElPX0dQREJTRUxS X09GRlNFVCkKKworLyogR1BJTyByZWdpc3RlciBiaXQgZGVmaW5pdGlvbnMgKi8KKworLyogSW50 ZXJydXB0IHN0eWxlcyAqLworI2RlZmluZSBJWFA0WFhfR1BJT19TVFlMRV9BQ1RJVkVfSElHSCAg MHgwCisjZGVmaW5lIElYUDRYWF9HUElPX1NUWUxFX0FDVElWRV9MT1cgICAweDEKKyNkZWZpbmUg SVhQNFhYX0dQSU9fU1RZTEVfUklTSU5HX0VER0UgIDB4MgorI2RlZmluZSBJWFA0WFhfR1BJT19T VFlMRV9GQUxMSU5HX0VER0UgMHgzCisjZGVmaW5lIElYUDRYWF9HUElPX1NUWUxFX1RSQU5TSVRJ T05BTCAweDQKKworLyogTWFzayB1c2VkIHRvIGNsZWFyIGludGVycnVwdCBzdHlsZXMgKi8KKyNk ZWZpbmUgSVhQNFhYX0dQSU9fU1RZTEVfQ0xFQVIgICAgICAgIDB4NworI2RlZmluZSBJWFA0WFhf R1BJT19TVFlMRV9TSVpFICAgICAgICAgMworCisvKiBPcGVyYXRpbmcgU3lzdGVtIFRpbWVyIFJl Z2lzdGVyIERlZmluaXRpb25zLiAqLworI2RlZmluZSBJWFA0WFhfT1NUUyAgICAgICAgICBJWFA0 WFhfUkVHKDB4QzgwMDUwMDApIC8qIENvbnRpbmlvdXMgVGltZVN0YW1wICovCisjZGVmaW5lIElY UDRYWF9PU1QxICAgICAgICAgIElYUDRYWF9SRUcoMHhDODAwNTAwNCkgLyogVGltZXIgMSBUaW1l c3RhbXAgKi8KKyNkZWZpbmUgSVhQNFhYX09TUlQxICAgICAgICAgSVhQNFhYX1JFRygweEM4MDA1 MDA4KSAvKiBUaW1lciAxIFJlbG9hZCAqLworI2RlZmluZSBJWFA0WFhfT1NUMiAgICAgICAgICBJ WFA0WFhfUkVHKDB4QzgwMDUwMEMpIC8qIFRpbWVyIDIgVGltZXN0YW1wICovCisjZGVmaW5lIElY UDRYWF9PU1JUMiAgICAgICAgIElYUDRYWF9SRUcoMHhDODAwNTAxMCkgLyogVGltZXIgMiBSZWxv YWQgKi8KKyNkZWZpbmUgSVhQNFhYX09TV1QgICAgICAgICAgSVhQNFhYX1JFRygweEM4MDA1MDE0 KSAvKiBXYXRjaGRvZyBUaW1lciAqLworI2RlZmluZSBJWFA0WFhfT1NXRSAgICAgICAgICBJWFA0 WFhfUkVHKDB4QzgwMDUwMTgpIC8qIFdhdGNoZG9nIEVuYWJsZSAqLworI2RlZmluZSBJWFA0WFhf T1NXSyAgICAgICAgICBJWFA0WFhfUkVHKDB4QzgwMDUwMUMpIC8qIFdhdGNoZG9nIEtleSAqLwor I2RlZmluZSBJWFA0WFhfT1NTVCAgICAgICAgICBJWFA0WFhfUkVHKDB4QzgwMDUwMjApIC8qIFRp bWVyIFN0YXR1cyAqLworCisvKiBUaW1lciByZWdpc3RlciB2YWx1ZXMgYW5kIGJpdCBkZWZpbml0 aW9ucyAqLworI2RlZmluZSBJWFA0WFhfT1NUX0VOQUJMRSAgICAgICAgICAgIDB4MDAwMDAwMDEK KyNkZWZpbmUgSVhQNFhYX09TVF9PTkVfU0hPVCAgICAgICAgICAweDAwMDAwMDAyCisvKiBMb3cg b3JkZXIgYml0cyBvZiByZWxvYWQgdmFsdWUgaWdub3JlZCAqLworI2RlZmluZSBJWFA0WFhfT1NU X1JFTE9BRF9NQVNLICAgICAgIDB4MDAwMDAwMDMKKyNkZWZpbmUgSVhQNFhYX09TVF9ESVNBQkxF RCAgICAgICAgICAweDAwMDAwMDAwCisjZGVmaW5lIElYUDRYWF9PU1NUX1RJTUVSXzFfUEVORCAg ICAgMHgwMDAwMDAwMQorI2RlZmluZSBJWFA0WFhfT1NTVF9USU1FUl8yX1BFTkQgICAgIDB4MDAw MDAwMDIKKyNkZWZpbmUgSVhQNFhYX09TU1RfVElNRVJfVFNfUEVORCAgICAweDAwMDAwMDA0Cisj ZGVmaW5lIElYUDRYWF9PU1NUX1RJTUVSX1dET0dfUEVORCAgMHgwMDAwMDAwOAorI2RlZmluZSBJ WFA0WFhfT1NTVF9USU1FUl9XQVJNX1JFU0VUIDB4MDAwMDAwMTAKKworI2RlZmluZSBJWFA0WFhf V0RUX0tFWSAgICAgICAgICAgICAgIDB4MDAwMDQ4MkUKKworI2RlZmluZSBJWFA0WFhfV0RUX1JF U0VUX0VOQUJMRSAgICAgIDB4MDAwMDAwMDEKKyNkZWZpbmUgSVhQNFhYX1dEVF9JUlFfRU5BQkxF ICAgICAgICAweDAwMDAwMDAyCisjZGVmaW5lIElYUDRYWF9XRFRfQ09VTlRfRU5BQkxFICAgICAg MHgwMDAwMDAwNAorCisKKy8qIENvbnN0YW50cyB0byBtYWtlIGl0IGVhc3kgdG8gYWNjZXNzIFBD SSBDb250cm9sL1N0YXR1cyByZWdpc3RlcnMgKi8KKyNkZWZpbmUgUENJX05QX0FEX09GRlNFVCAg ICAgICAgICAgMHgwMAorI2RlZmluZSBQQ0lfTlBfQ0JFX09GRlNFVCAgICAgICAgICAweDA0Cisj ZGVmaW5lIFBDSV9OUF9XREFUQV9PRkZTRVQgICAgICAgIDB4MDgKKyNkZWZpbmUgUENJX05QX1JE QVRBX09GRlNFVCAgICAgICAgMHgwYworI2RlZmluZSBQQ0lfQ1JQX0FEX0NCRV9PRkZTRVQgICAg ICAweDEwCisjZGVmaW5lIFBDSV9DUlBfV0RBVEFfT0ZGU0VUICAgICAgIDB4MTQKKyNkZWZpbmUg UENJX0NSUF9SREFUQV9PRkZTRVQgICAgICAgMHgxOAorI2RlZmluZSBQQ0lfQ1NSX09GRlNFVCAg ICAgICAgICAgICAweDFjCisjZGVmaW5lIFBDSV9JU1JfT0ZGU0VUICAgICAgICAgICAgIDB4MjAK KyNkZWZpbmUgUENJX0lOVEVOX09GRlNFVCAgICAgICAgICAgMHgyNAorI2RlZmluZSBQQ0lfRE1B Q1RSTF9PRkZTRVQgICAgICAgICAweDI4CisjZGVmaW5lIFBDSV9BSEJNRU1CQVNFX09GRlNFVCAg ICAgIDB4MmMKKyNkZWZpbmUgUENJX0FIQklPQkFTRV9PRkZTRVQgICAgICAgMHgzMAorI2RlZmlu ZSBQQ0lfUENJTUVNQkFTRV9PRkZTRVQgICAgICAweDM0CisjZGVmaW5lIFBDSV9BSEJET09SQkVM TF9PRkZTRVQgICAgIDB4MzgKKyNkZWZpbmUgUENJX1BDSURPT1JCRUxMX09GRlNFVCAgICAgMHgz QworI2RlZmluZSBQQ0lfQVRQRE1BMF9BSEJBRERSX09GRlNFVCAweDQwCisjZGVmaW5lIFBDSV9B VFBETUEwX1BDSUFERFJfT0ZGU0VUIDB4NDQKKyNkZWZpbmUgUENJX0FUUERNQTBfTEVOQUREUl9P RkZTRVQgMHg0OAorI2RlZmluZSBQQ0lfQVRQRE1BMV9BSEJBRERSX09GRlNFVCAweDRDCisjZGVm aW5lIFBDSV9BVFBETUExX1BDSUFERFJfT0ZGU0VUIDB4NTAKKyNkZWZpbmUgUENJX0FUUERNQTFf TEVOQUREUl9PRkZTRVQgMHg1NAorCisvKiBQQ0kgQ29udHJvbC9TdGF0dXMgUmVnaXN0ZXJzICov CisjZGVmaW5lIElYUDRYWF9QQ0lfQ1NSKHgpICgodm9sYXRpbGUgdTMyICopKElYUDRYWF9QQ0lf Q0ZHX0JBU0UgKyAoeCkpKQorCisjZGVmaW5lIFBDSV9OUF9BRCAgICAgICAgICAgIElYUDRYWF9Q Q0lfQ1NSKFBDSV9OUF9BRF9PRkZTRVQpCisjZGVmaW5lIFBDSV9OUF9DQkUgICAgICAgICAgIElY UDRYWF9QQ0lfQ1NSKFBDSV9OUF9DQkVfT0ZGU0VUKQorI2RlZmluZSBQQ0lfTlBfV0RBVEEgICAg ICAgICBJWFA0WFhfUENJX0NTUihQQ0lfTlBfV0RBVEFfT0ZGU0VUKQorI2RlZmluZSBQQ0lfTlBf UkRBVEEgICAgICAgICBJWFA0WFhfUENJX0NTUihQQ0lfTlBfUkRBVEFfT0ZGU0VUKQorI2RlZmlu ZSBQQ0lfQ1JQX0FEX0NCRSAgICAgICBJWFA0WFhfUENJX0NTUihQQ0lfQ1JQX0FEX0NCRV9PRkZT RVQpCisjZGVmaW5lIFBDSV9DUlBfV0RBVEEgICAgICAgIElYUDRYWF9QQ0lfQ1NSKFBDSV9DUlBf V0RBVEFfT0ZGU0VUKQorI2RlZmluZSBQQ0lfQ1JQX1JEQVRBICAgICAgICBJWFA0WFhfUENJX0NT UihQQ0lfQ1JQX1JEQVRBX09GRlNFVCkKKyNkZWZpbmUgUENJX0NTUiAgICAgICAgICAgICAgSVhQ NFhYX1BDSV9DU1IoUENJX0NTUl9PRkZTRVQpCisjZGVmaW5lIFBDSV9JU1IgICAgICAgICAgICAg IElYUDRYWF9QQ0lfQ1NSKFBDSV9JU1JfT0ZGU0VUKQorI2RlZmluZSBQQ0lfSU5URU4gICAgICAg ICAgICBJWFA0WFhfUENJX0NTUihQQ0lfSU5URU5fT0ZGU0VUKQorI2RlZmluZSBQQ0lfRE1BQ1RS TCAgICAgICAgICBJWFA0WFhfUENJX0NTUihQQ0lfRE1BQ1RSTF9PRkZTRVQpCisjZGVmaW5lIFBD SV9BSEJNRU1CQVNFICAgICAgIElYUDRYWF9QQ0lfQ1NSKFBDSV9BSEJNRU1CQVNFX09GRlNFVCkK KyNkZWZpbmUgUENJX0FIQklPQkFTRSAgICAgICAgSVhQNFhYX1BDSV9DU1IoUENJX0FIQklPQkFT RV9PRkZTRVQpCisjZGVmaW5lIFBDSV9QQ0lNRU1CQVNFICAgICAgIElYUDRYWF9QQ0lfQ1NSKFBD SV9QQ0lNRU1CQVNFX09GRlNFVCkKKyNkZWZpbmUgUENJX0FIQkRPT1JCRUxMICAgICAgSVhQNFhY X1BDSV9DU1IoUENJX0FIQkRPT1JCRUxMX09GRlNFVCkKKyNkZWZpbmUgUENJX1BDSURPT1JCRUxM ICAgICAgSVhQNFhYX1BDSV9DU1IoUENJX1BDSURPT1JCRUxMX09GRlNFVCkKKyNkZWZpbmUgUENJ X0FUUERNQTBfQUhCQUREUiAgSVhQNFhYX1BDSV9DU1IoUENJX0FUUERNQTBfQUhCQUREUl9PRkZT RVQpCisjZGVmaW5lIFBDSV9BVFBETUEwX1BDSUFERFIgIElYUDRYWF9QQ0lfQ1NSKFBDSV9BVFBE TUEwX1BDSUFERFJfT0ZGU0VUKQorI2RlZmluZSBQQ0lfQVRQRE1BMF9MRU5BRERSICBJWFA0WFhf UENJX0NTUihQQ0lfQVRQRE1BMF9MRU5BRERSX09GRlNFVCkKKyNkZWZpbmUgUENJX0FUUERNQTFf QUhCQUREUiAgSVhQNFhYX1BDSV9DU1IoUENJX0FUUERNQTFfQUhCQUREUl9PRkZTRVQpCisjZGVm aW5lIFBDSV9BVFBETUExX1BDSUFERFIgIElYUDRYWF9QQ0lfQ1NSKFBDSV9BVFBETUExX1BDSUFE RFJfT0ZGU0VUKQorI2RlZmluZSBQQ0lfQVRQRE1BMV9MRU5BRERSICBJWFA0WFhfUENJX0NTUihQ Q0lfQVRQRE1BMV9MRU5BRERSX09GRlNFVCkKKworLyogUENJIHJlZ2lzdGVyIHZhbHVlcyBhbmQg Yml0IGRlZmluaXRpb25zICovCisKKy8qIENTUiBiaXQgZGVmaW5pdGlvbnMgKi8KKyNkZWZpbmUg UENJX0NTUl9IT1NUICAgICAgICAgMHgwMDAwMDAwMQorI2RlZmluZSBQQ0lfQ1NSX0FSQkVOICAg ICAgICAweDAwMDAwMDAyCisjZGVmaW5lIFBDSV9DU1JfQURTICAgICAgICAgIDB4MDAwMDAwMDQK KyNkZWZpbmUgUENJX0NTUl9QRFMgICAgICAgICAgMHgwMDAwMDAwOAorI2RlZmluZSBQQ0lfQ1NS X0FCRSAgICAgICAgICAweDAwMDAwMDEwCisjZGVmaW5lIFBDSV9DU1JfREJUICAgICAgICAgIDB4 MDAwMDAwMjAKKyNkZWZpbmUgUENJX0NTUl9BU0UgICAgICAgICAgMHgwMDAwMDEwMAorI2RlZmlu ZSBQQ0lfQ1NSX0lDICAgICAgICAgICAweDAwMDA4MDAwCisKKy8qIElTUiAoSW50ZXJydXB0IHN0 YXR1cykgUmVnaXN0ZXIgYml0IGRlZmluaXRpb25zICovCisjZGVmaW5lIFBDSV9JU1JfUFNFICAg ICAgICAgIDB4MDAwMDAwMDEKKyNkZWZpbmUgUENJX0lTUl9QRkUgICAgICAgICAgMHgwMDAwMDAw MgorI2RlZmluZSBQQ0lfSVNSX1BQRSAgICAgICAgICAweDAwMDAwMDA0CisjZGVmaW5lIFBDSV9J U1JfQUhCRSAgICAgICAgIDB4MDAwMDAwMDgKKyNkZWZpbmUgUENJX0lTUl9BUERDICAgICAgICAg MHgwMDAwMDAxMAorI2RlZmluZSBQQ0lfSVNSX1BBREMgICAgICAgICAweDAwMDAwMDIwCisjZGVm aW5lIFBDSV9JU1JfQURCICAgICAgICAgIDB4MDAwMDAwNDAKKyNkZWZpbmUgUENJX0lTUl9QREIg ICAgICAgICAgMHgwMDAwMDA4MAorCisvKiBJTlRFTiAoSW50ZXJydXB0IEVuYWJsZSkgUmVnaXN0 ZXIgYml0IGRlZmluaXRpb25zICovCisjZGVmaW5lIFBDSV9JTlRFTl9QU0UgICAgICAgIDB4MDAw MDAwMDEKKyNkZWZpbmUgUENJX0lOVEVOX1BGRSAgICAgICAgMHgwMDAwMDAwMgorI2RlZmluZSBQ Q0lfSU5URU5fUFBFICAgICAgICAweDAwMDAwMDA0CisjZGVmaW5lIFBDSV9JTlRFTl9BSEJFICAg ICAgIDB4MDAwMDAwMDgKKyNkZWZpbmUgUENJX0lOVEVOX0FQREMgICAgICAgMHgwMDAwMDAxMAor I2RlZmluZSBQQ0lfSU5URU5fUEFEQyAgICAgICAweDAwMDAwMDIwCisjZGVmaW5lIFBDSV9JTlRF Tl9BREIgICAgICAgIDB4MDAwMDAwNDAKKyNkZWZpbmUgUENJX0lOVEVOX1BEQiAgICAgICAgMHgw MDAwMDA4MAorCisvKiBTaGlmdCB2YWx1ZSBmb3IgYnl0ZSBlbmFibGUgb24gTlAgY21kL2J5dGUg ZW5hYmxlIHJlZ2lzdGVyICovCisjZGVmaW5lIElYUDRYWF9QQ0lfTlBfQ0JFX0JFU0wgNAorCisv KiBQQ0kgY29tbWFuZHMgc3VwcG9ydGVkIGJ5IE5QIGFjY2VzcyB1bml0ICovCisjZGVmaW5lIE5Q X0NNRF9JT1JFQUQgICAgICAgIDB4MgorI2RlZmluZSBOUF9DTURfSU9XUklURSAgICAgICAweDMK KyNkZWZpbmUgTlBfQ01EX0NPTkZJR1JFQUQgICAgMHhBCisjZGVmaW5lIE5QX0NNRF9DT05GSUdX UklURSAgIDB4QgorI2RlZmluZSBOUF9DTURfTUVNUkVBRCAgICAgICAweDYKKyNkZWZpbmUgTlBf Q01EX01FTVdSSVRFICAgICAgMHg3CisKKy8qIENvbnN0YW50cyBmb3IgQ1JQIGFjY2VzcyBpbnRv IGxvY2FsIGNvbmZpZyBzcGFjZSAqLworI2RlZmluZSBDUlBfQURfQ0JFX0JFU0wgICAgICAyMAor I2RlZmluZSBDUlBfQURfQ0JFX1dSSVRFICAgICAweDAwMDEwMDAwCisKKy8qIFVTQiBEZXZpY2Ug Q29udHJvbGxlciAqLworIyBkZWZpbmUgSVhQNFhYX1VTQl9SRUcoeCkgICAoKigodm9sYXRpbGUg dTMyICopKHgpKSkKKworLyogU0RSQU0gQ29udHJvbGxlciByZWdpc3RlcnMuICovCisjZGVmaW5l IElYUDRYWF9TRFJBTV9DT05GSUcgIElYUDRYWF9SRUcoMHhDQzAwMDAwMCkKKyNkZWZpbmUgSVhQ NFhYX1NEUkFNX1JFRlJFU0ggSVhQNFhYX1JFRygweENDMDAwMDA0KQorI2RlZmluZSBJWFA0WFhf U0RSQU1fSVIgICAgICBJWFA0WFhfUkVHKDB4Q0MwMDAwMDgpCisKKy8qICJmdXNlIiBiaXRzIG9m IElYUF9FWFBfQ0ZHMiAqLworLyogQWxsIElYUDR4eCBDUFVzICovCisjZGVmaW5lIElYUDRYWF9G RUFUVVJFX1JDT01QICAgICAgICAgICAgKDEgPDwgMCkKKyNkZWZpbmUgSVhQNFhYX0ZFQVRVUkVf VVNCX0RFVklDRSAgICAgICAoMSA8PCAxKQorI2RlZmluZSBJWFA0WFhfRkVBVFVSRV9IQVNIICAg ICAgICAgICAgICgxIDw8IDIpCisjZGVmaW5lIElYUDRYWF9GRUFUVVJFX0FFUyAgICAgICAgICAg ICAgKDEgPDwgMykKKyNkZWZpbmUgSVhQNFhYX0ZFQVRVUkVfREVTICAgICAgICAgICAgICAoMSA8 PCA0KQorI2RlZmluZSBJWFA0WFhfRkVBVFVSRV9IRExDICAgICAgICAgICAgICgxIDw8IDUpCisj ZGVmaW5lIElYUDRYWF9GRUFUVVJFX0FBTCAgICAgICAgICAgICAgKDEgPDwgNikKKyNkZWZpbmUg SVhQNFhYX0ZFQVRVUkVfSFNTICAgICAgICAgICAgICAoMSA8PCA3KQorI2RlZmluZSBJWFA0WFhf RkVBVFVSRV9VVE9QSUEgICAgICAgICAgICgxIDw8IDgpCisjZGVmaW5lIElYUDRYWF9GRUFUVVJF X05QRUJfRVRIMCAgICAgICAgKDEgPDwgOSkKKyNkZWZpbmUgSVhQNFhYX0ZFQVRVUkVfTlBFQ19F VEggICAgICAgICAoMSA8PCAxMCkKKyNkZWZpbmUgSVhQNFhYX0ZFQVRVUkVfUkVTRVRfTlBFQSAg ICAgICAoMSA8PCAxMSkKKyNkZWZpbmUgSVhQNFhYX0ZFQVRVUkVfUkVTRVRfTlBFQiAgICAgICAo MSA8PCAxMikKKyNkZWZpbmUgSVhQNFhYX0ZFQVRVUkVfUkVTRVRfTlBFQyAgICAgICAoMSA8PCAx MykKKyNkZWZpbmUgSVhQNFhYX0ZFQVRVUkVfUENJICAgICAgICAgICAgICAoMSA8PCAxNCkKKyNk ZWZpbmUgSVhQNFhYX0ZFQVRVUkVfVVRPUElBX1BIWV9MSU1JVCAoMyA8PCAxNikKKyNkZWZpbmUg SVhQNFhYX0ZFQVRVUkVfWFNDQUxFX01BWF9GUkVRICAoMyA8PCAyMikKKyNkZWZpbmUgSVhQNDJY X0ZFQVRVUkVfTUFTSyAoSVhQNFhYX0ZFQVRVUkVfUkNPTVAgICAgICAgICAgICB8IFwKKwkJCSAg ICAgSVhQNFhYX0ZFQVRVUkVfVVNCX0RFVklDRSAgICAgICB8IFwKKwkJCSAgICAgSVhQNFhYX0ZF QVRVUkVfSEFTSCAgICAgICAgICAgICB8IFwKKwkJCSAgICAgSVhQNFhYX0ZFQVRVUkVfQUVTICAg ICAgICAgICAgICB8IFwKKwkJCSAgICAgSVhQNFhYX0ZFQVRVUkVfREVTICAgICAgICAgICAgICB8 IFwKKwkJCSAgICAgSVhQNFhYX0ZFQVRVUkVfSERMQyAgICAgICAgICAgICB8IFwKKwkJCSAgICAg SVhQNFhYX0ZFQVRVUkVfQUFMICAgICAgICAgICAgICB8IFwKKwkJCSAgICAgSVhQNFhYX0ZFQVRV UkVfSFNTICAgICAgICAgICAgICB8IFwKKwkJCSAgICAgSVhQNFhYX0ZFQVRVUkVfVVRPUElBICAg ICAgICAgICB8IFwKKwkJCSAgICAgSVhQNFhYX0ZFQVRVUkVfTlBFQl9FVEgwICAgICAgICB8IFwK KwkJCSAgICAgSVhQNFhYX0ZFQVRVUkVfTlBFQ19FVEggICAgICAgICB8IFwKKwkJCSAgICAgSVhQ NFhYX0ZFQVRVUkVfUkVTRVRfTlBFQSAgICAgICB8IFwKKwkJCSAgICAgSVhQNFhYX0ZFQVRVUkVf UkVTRVRfTlBFQiAgICAgICB8IFwKKwkJCSAgICAgSVhQNFhYX0ZFQVRVUkVfUkVTRVRfTlBFQyAg ICAgICB8IFwKKwkJCSAgICAgSVhQNFhYX0ZFQVRVUkVfUENJICAgICAgICAgICAgICB8IFwKKwkJ CSAgICAgSVhQNFhYX0ZFQVRVUkVfVVRPUElBX1BIWV9MSU1JVCB8IFwKKwkJCSAgICAgSVhQNFhY X0ZFQVRVUkVfWFNDQUxFX01BWF9GUkVRKQorCisvKiBJWFA0M3gvNDZ4IENQVXMgKi8KKyNkZWZp bmUgSVhQNFhYX0ZFQVRVUkVfRUNDX1RJTUVTWU5DICAgICAoMSA8PCAxNSkKKyNkZWZpbmUgSVhQ NFhYX0ZFQVRVUkVfVVNCX0hPU1QgICAgICAgICAoMSA8PCAxOCkKKyNkZWZpbmUgSVhQNFhYX0ZF QVRVUkVfTlBFQV9FVEggICAgICAgICAoMSA8PCAxOSkKKyNkZWZpbmUgSVhQNDNYX0ZFQVRVUkVf TUFTSyAoSVhQNDJYX0ZFQVRVUkVfTUFTSyAgICAgICAgICAgICB8IFwKKwkJCSAgICAgSVhQNFhY X0ZFQVRVUkVfRUNDX1RJTUVTWU5DICAgICB8IFwKKwkJCSAgICAgSVhQNFhYX0ZFQVRVUkVfVVNC X0hPU1QgICAgICAgICB8IFwKKwkJCSAgICAgSVhQNFhYX0ZFQVRVUkVfTlBFQV9FVEgpCisKKy8q IElYUDQ2eCBDUFUgKGluY2x1ZGluZyBJWFA0NTUpIG9ubHkgKi8KKyNkZWZpbmUgSVhQNFhYX0ZF QVRVUkVfTlBFQl9FVEhfMV9UT18zICAoMSA8PCAyMCkKKyNkZWZpbmUgSVhQNFhYX0ZFQVRVUkVf UlNBICAgICAgICAgICAgICAoMSA8PCAyMSkKKyNkZWZpbmUgSVhQNDZYX0ZFQVRVUkVfTUFTSyAo SVhQNDNYX0ZFQVRVUkVfTUFTSyAgICAgICAgICAgICB8IFwKKwkJCSAgICAgSVhQNFhYX0ZFQVRV UkVfTlBFQl9FVEhfMV9UT18zICB8IFwKKwkJCSAgICAgSVhQNFhYX0ZFQVRVUkVfUlNBKQorCisj ZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtaXhwNHh4L2luY2x1ZGUvbWFjaC9ucGUu aCBiL2FyY2gvYXJtL21hY2gtaXhwNHh4L2luY2x1ZGUvbWFjaC9ucGUuaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGJkMDFiCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9h cm0vbWFjaC1peHA0eHgvaW5jbHVkZS9tYWNoL25wZS5oCkBAIC0wLDAgKzEsMzAgQEAKKyNpZm5k ZWYgX19JWFA0WFhfTlBFX0gKKyNkZWZpbmUgX19JWFA0WFhfTlBFX0gKKworI2luY2x1ZGUgPGNv bW1vbi5oPgorCisjZGVmaW5lIE5QRV9OQU1FX0xFTkdUSCA1CisKK3N0cnVjdCBucGVfcmVncyB7 CisJdTMyIGV4ZWNfYWRkciwgZXhlY19kYXRhLCBleGVjX3N0YXR1c19jbWQsIGV4ZWNfY291bnQ7 CisJdTMyIGFjdGlvbl9wb2ludHNbNF07CisJdTMyIHdhdGNocG9pbnRfZmlmbywgd2F0Y2hfY291 bnQ7CisJdTMyIHByb2ZpbGVfY291bnQ7CisJdTMyIG1lc3NhZ2luZ19zdGF0dXMsIG1lc3NhZ2lu Z19jb250cm9sOworCXUzMiBtYWlsYm94X3N0YXR1cywgLyptZXNzYWdpbmdfKi8gaW5fb3V0X2Zp Zm87Cit9OworCitzdHJ1Y3QgbnBlIHsKKwlzdHJ1Y3QgbnBlX3JlZ3MgKnJlZ3M7CisJaW50IGlk LCB2YWxpZDsKKwljb25zdCBjaGFyIG5hbWVbTlBFX05BTUVfTEVOR1RIICsgMV07Cit9OworCitp bnQgbnBlX3J1bm5pbmcoc3RydWN0IG5wZSAqbnBlKTsKK2ludCBucGVfc2VuZF9tZXNzYWdlKHN0 cnVjdCBucGUgKm5wZSwgY29uc3Qgdm9pZCAqbXNnLCBjb25zdCBjaGFyICp3aGF0KTsKK2ludCBu cGVfcmVjdl9tZXNzYWdlKHN0cnVjdCBucGUgKm5wZSwgdm9pZCAqbXNnLCBjb25zdCBjaGFyICp3 aGF0KTsKK2ludCBucGVfc2VuZF9yZWN2X21lc3NhZ2Uoc3RydWN0IG5wZSAqbnBlLCB2b2lkICpt c2csIGNvbnN0IGNoYXIgKndoYXQpOworaW50IG5wZV9sb2FkX2Zpcm13YXJlKHN0cnVjdCBucGUg Km5wZSk7CitzdHJ1Y3QgbnBlICpucGVfcmVxdWVzdChpbnQgaWQpOworCisjZW5kaWYgLyogX19J WFA0WFhfTlBFX0ggKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtaXhwNHh4L2luY2x1ZGUv bWFjaC9wbGF0Zm9ybS5oIGIvYXJjaC9hcm0vbWFjaC1peHA0eHgvaW5jbHVkZS9tYWNoL3BsYXRm b3JtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWRmNGFhNAotLS0gL2Rl di9udWxsCisrKyBiL2FyY2gvYXJtL21hY2gtaXhwNHh4L2luY2x1ZGUvbWFjaC9wbGF0Zm9ybS5o CkBAIC0wLDAgKzEsMTUgQEAKKyNpbmNsdWRlIDxhc20vdHlwZXMuaD4KKworI2RlZmluZSBJWFA0 WFhfRVRIX05QRUEgMHgwMAorI2RlZmluZSBJWFA0WFhfRVRIX05QRUIgMHgxMAorI2RlZmluZSBJ WFA0WFhfRVRIX05QRUMgMHgyMAorCisvKiBJbmZvcm1hdGlvbiBhYm91dCBidWlsdC1pbiBFdGhl cm5ldCBNQUMgaW50ZXJmYWNlcyAqLworc3RydWN0IGV0aF9wbGF0X2luZm8geworCXZvaWQgKnJl Z3M7CisJdTggbnBlOworCXU4IHBoeTsgLyogTUlJIFBIWSBJRCwgMCAtIDMxICovCisJdTggcnhx OyAvKiBjb25maWd1cmFibGUsIGN1cnJlbnRseSAwIC0gMzEgb25seSAqLworCXU4IHR4cmVhZHlx OworCXU4IGh3YWRkcls2XTsKK307CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWl4cDR4eC9p bmNsdWRlL21hY2gvcW1nci5oIGIvYXJjaC9hcm0vbWFjaC1peHA0eHgvaW5jbHVkZS9tYWNoL3Ft Z3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTliOGQ0Ci0tLSAvZGV2 L251bGwKKysrIGIvYXJjaC9hcm0vbWFjaC1peHA0eHgvaW5jbHVkZS9tYWNoL3FtZ3IuaApAQCAt MCwwICsxLDE2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBLcnp5c3p0b2YgSGFsYXNh IDxraGNAcG0ud2F3LnBsPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVy bXMgb2YgdmVyc2lvbiAyIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYXMg cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKworI2lmbmRl ZiBJWFA0WFhfUU1HUl9ICisjZGVmaW5lIElYUDRYWF9RTUdSX0gKKworI2luY2x1ZGUgPGNvbW1v bi5oPgorI2luY2x1ZGUgPG1hY2gvaXhwNHh4LXJlZ3MuaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4K KworI2RlZmluZSBERUJVR19RTUdSICAgICAgIDAKKworI2RlZmluZSBIQUxGX1FVRVVFUyAgICAg MzIKKyNkZWZpbmUgUVVFVUVTICAgICAgICAgIDY0CisjZGVmaW5lIE1BWF9RVUVVRV9MRU5HVEgg NCAvKiBpbiBkd29yZHMgKi8KKworI2RlZmluZSBRVUVVRV9TVEFUMV9FTVBUWSAgICAgICAgICAg ICAgIDEgLyogcXVldWUgc3RhdHVzIGJpdHMgKi8KKyNkZWZpbmUgUVVFVUVfU1RBVDFfTkVBUkxZ X0VNUFRZICAgICAgICAyCisjZGVmaW5lIFFVRVVFX1NUQVQxX05FQVJMWV9GVUxMICAgICAgICAg NAorI2RlZmluZSBRVUVVRV9TVEFUMV9GVUxMICAgICAgICAgICAgICAgIDgKKyNkZWZpbmUgUVVF VUVfU1RBVDJfVU5ERVJGTE9XICAgICAgICAgICAxCisjZGVmaW5lIFFVRVVFX1NUQVQyX09WRVJG TE9XICAgICAgICAgICAgMgorCisjZGVmaW5lIFFVRVVFX1dBVEVSTUFSS18wX0VOVFJJRVMgICAg ICAgMAorI2RlZmluZSBRVUVVRV9XQVRFUk1BUktfMV9FTlRSWSAgICAgICAgIDEKKyNkZWZpbmUg UVVFVUVfV0FURVJNQVJLXzJfRU5UUklFUyAgICAgICAyCisjZGVmaW5lIFFVRVVFX1dBVEVSTUFS S180X0VOVFJJRVMgICAgICAgMworI2RlZmluZSBRVUVVRV9XQVRFUk1BUktfOF9FTlRSSUVTICAg ICAgIDQKKyNkZWZpbmUgUVVFVUVfV0FURVJNQVJLXzE2X0VOVFJJRVMgICAgICA1CisjZGVmaW5l IFFVRVVFX1dBVEVSTUFSS18zMl9FTlRSSUVTICAgICAgNgorI2RlZmluZSBRVUVVRV9XQVRFUk1B UktfNjRfRU5UUklFUyAgICAgIDcKKworLyogcXVldWUgaW50ZXJydXB0IHJlcXVlc3QgY29uZGl0 aW9ucyAqLworI2RlZmluZSBRVUVVRV9JUlFfU1JDX0VNUFRZICAgICAgICAgICAgIDAKKyNkZWZp bmUgUVVFVUVfSVJRX1NSQ19ORUFSTFlfRU1QVFkgICAgICAxCisjZGVmaW5lIFFVRVVFX0lSUV9T UkNfTkVBUkxZX0ZVTEwgICAgICAgMgorI2RlZmluZSBRVUVVRV9JUlFfU1JDX0ZVTEwgICAgICAg ICAgICAgIDMKKyNkZWZpbmUgUVVFVUVfSVJRX1NSQ19OT1RfRU1QVFkgICAgICAgICA0CisjZGVm aW5lIFFVRVVFX0lSUV9TUkNfTk9UX05FQVJMWV9FTVBUWSAgNQorI2RlZmluZSBRVUVVRV9JUlFf U1JDX05PVF9ORUFSTFlfRlVMTCAgIDYKKyNkZWZpbmUgUVVFVUVfSVJRX1NSQ19OT1RfRlVMTCAg ICAgICAgICA3CisKK3N0cnVjdCBxbWdyX3JlZ3MgeworCXUzMiBhY2NbUVVFVUVTXVtNQVhfUVVF VUVfTEVOR1RIXTsgLyogMHgwMDAgLSAweDNGRiAqLworCXUzMiBzdGF0MVs0XTsgICAgICAgICAv KiAweDQwMCAtIDB4NDBGICovCisJdTMyIHN0YXQyWzJdOyAgICAgICAgIC8qIDB4NDEwIC0gMHg0 MTcgKi8KKwl1MzIgc3RhdG5lX2g7ICAgICAgICAgLyogMHg0MTggLSBxdWV1ZSBuZWFybHkgZW1w dHkgKi8KKwl1MzIgc3RhdGZfaDsgICAgICAgICAgLyogMHg0MUMgLSBxdWV1ZSBmdWxsICovCisJ dTMyIGlycXNyY1s0XTsgICAgICAgIC8qIDB4NDIwIC0gMHg0MkYgSVJDIHNvdXJjZSAqLworCXUz MiBpcnFlblsyXTsgICAgICAgICAvKiAweDQzMCAtIDB4NDM3IElSUSBlbmFibGVkICovCisJdTMy IGlycXN0YXRbMl07ICAgICAgIC8qIDB4NDM4IC0gMHg0M0YgLSBJUlEgYWNjZXNzIG9ubHkgKi8K Kwl1MzIgcmVzZXJ2ZWRbMTc3Nl07CisJdTMyIHNyYW1bMjA0OF07ICAgICAgIC8qIDB4MjAwMCAt IDB4M0ZGRiAtIGNvbmZpZyBhbmQgYnVmZmVyICovCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0 IHFtZ3JfcmVncyAqcW1ncl9yZWdzID0gKHN0cnVjdCBxbWdyX3JlZ3MgKilJWFA0WFhfUU1HUl9C QVNFOworCit2b2lkIHFtZ3Jfc2V0X2lycSh1bnNpZ25lZCBpbnQgcXVldWUsIGludCBzcmMsCisJ CSAgdm9pZCAoKmhhbmRsZXIpKHZvaWQgKnBkZXYpLCB2b2lkICpwZGV2KTsKK3ZvaWQgcW1ncl9l bmFibGVfaXJxKHVuc2lnbmVkIGludCBxdWV1ZSk7Cit2b2lkIHFtZ3JfZGlzYWJsZV9pcnEodW5z aWduZWQgaW50IHF1ZXVlKTsKKworLyogcmVxdWVzdF8gYW5kIHJlbGVhc2VfcXVldWUoKSBtdXN0 IGJlIGNhbGxlZCBmcm9tIG5vbi1JUlEgY29udGV4dCAqLworCisjaWYgREVCVUdfUU1HUgorZXh0 ZXJuIGNoYXIgcW1ncl9xdWV1ZV9kZXNjc1tIQUxGX1FVRVVFU11bMzJdOworCit2b2lkIHFtZ3Jf cmVxdWVzdF9xdWV1ZSh1bnNpZ25lZCBpbnQgcXVldWUsIHVuc2lnbmVkIGludCBsZW4gLyogZHdv cmRzICovLAorCQkJdW5zaWduZWQgaW50IG5lYXJseV9lbXB0eV93YXRlcm1hcmssCisJCQl1bnNp Z25lZCBpbnQgbmVhcmx5X2Z1bGxfd2F0ZXJtYXJrLAorCQkJY29uc3QgY2hhciAqZGVzY19mb3Jt YXQsIGNvbnN0IGNoYXIqIG5hbWUpOworI2Vsc2UKK3ZvaWQgX19xbWdyX3JlcXVlc3RfcXVldWUo dW5zaWduZWQgaW50IHF1ZXVlLCB1bnNpZ25lZCBpbnQgbGVuIC8qIGR3b3JkcyAqLywKKwkJCSAg dW5zaWduZWQgaW50IG5lYXJseV9lbXB0eV93YXRlcm1hcmssCisJCQkgIHVuc2lnbmVkIGludCBu ZWFybHlfZnVsbF93YXRlcm1hcmspOworI2RlZmluZSBxbWdyX3JlcXVlc3RfcXVldWUocXVldWUs IGxlbiwgbmVhcmx5X2VtcHR5X3dhdGVybWFyaywgICAgICAgXAorCQkJICAgbmVhcmx5X2Z1bGxf d2F0ZXJtYXJrLCBkZXNjX2Zvcm1hdCwgbmFtZSkgXAorCV9fcW1ncl9yZXF1ZXN0X3F1ZXVlKHF1 ZXVlLCBsZW4sIG5lYXJseV9lbXB0eV93YXRlcm1hcmssICAgICBcCisJCQkgICAgIG5lYXJseV9m dWxsX3dhdGVybWFyaykKKyNlbmRpZgorCit2b2lkIHFtZ3JfcmVsZWFzZV9xdWV1ZSh1bnNpZ25l ZCBpbnQgcXVldWUpOworCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBxbWdyX3B1dF9lbnRyeSh1bnNp Z25lZCBpbnQgcXVldWUsIHUzMiB2YWwpCit7CisjaWYgREVCVUdfUU1HUgorCUJVR19PTighcW1n cl9xdWV1ZV9kZXNjc1txdWV1ZV0pOyAvKiBub3QgeWV0IHJlcXVlc3RlZCAqLworCisJZnByaW50 ZihzdGRlcnIsICJRdWV1ZSAlcyglaSkgcHV0ICVYXG4iLAorCQlxbWdyX3F1ZXVlX2Rlc2NzW3F1 ZXVlXSwgcXVldWUsIHZhbCk7CisjZW5kaWYKKwlfX3Jhd193cml0ZWwodmFsLCAmcW1ncl9yZWdz LT5hY2NbcXVldWVdWzBdKTsKK30KKworc3RhdGljIGlubGluZSB1MzIgcW1ncl9nZXRfZW50cnko dW5zaWduZWQgaW50IHF1ZXVlKQoreworCXUzMiB2YWw7CisJdmFsID0gX19yYXdfcmVhZGwoJnFt Z3JfcmVncy0+YWNjW3F1ZXVlXVswXSk7CisjaWYgREVCVUdfUU1HUgorCUJVR19PTighcW1ncl9x dWV1ZV9kZXNjc1txdWV1ZV0pOyAvKiBub3QgeWV0IHJlcXVlc3RlZCAqLworCisJZnByaW50Zihz dGRlcnIsICJRdWV1ZSAlcyglaSkgZ2V0ICVYXG4iLAorCQlxbWdyX3F1ZXVlX2Rlc2NzW3F1ZXVl XSwgcXVldWUsIHZhbCk7CisjZW5kaWYKKwlyZXR1cm4gdmFsOworfQorCitzdGF0aWMgaW5saW5l IGludCBfX3FtZ3JfZ2V0X3N0YXQxKHVuc2lnbmVkIGludCBxdWV1ZSkKK3sKKwlyZXR1cm4gKF9f cmF3X3JlYWRsKCZxbWdyX3JlZ3MtPnN0YXQxW3F1ZXVlID4+IDNdKQorCQk+PiAoKHF1ZXVlICYg NykgPDwgMikpICYgMHhGOworfQorCisvKioKKyAqIHFtZ3Jfc3RhdF9lbXB0eSgpIC0gY2hlY2tz IGlmIGEgaGFyZHdhcmUgcXVldWUgaXMgZW1wdHkKKyAqIEBxdWV1ZTogcXVldWUgbnVtYmVyCisg KgorICogUmV0dXJucyBub24temVybyB2YWx1ZSBpZiB0aGUgcXVldWUgaXMgZW1wdHkuCisgKi8K K3N0YXRpYyBpbmxpbmUgaW50IHFtZ3Jfc3RhdF9lbXB0eSh1bnNpZ25lZCBpbnQgcXVldWUpCit7 CisJcmV0dXJuIF9fcW1ncl9nZXRfc3RhdDEocXVldWUpICYgUVVFVUVfU1RBVDFfRU1QVFk7Cit9 CisKKy8qKgorICogcW1ncl9zdGF0X2JlbG93X2xvd193YXRlcm1hcmsoKSAtIGNoZWNrcyBpZiBh IHF1ZXVlIGlzIGJlbG93IGxvdyB3YXRlcm1hcmsKKyAqIEBxdWV1ZTogcXVldWUgbnVtYmVyCisg KgorICogUmV0dXJucyBub24temVybyB2YWx1ZSBpZiB0aGUgcXVldWUgaXMgYmVsb3cgbG93IHdh dGVybWFyay4KKyAqLworc3RhdGljIGlubGluZSBpbnQgcW1ncl9zdGF0X2JlbG93X2xvd193YXRl cm1hcmsodW5zaWduZWQgaW50IHF1ZXVlKQoreworCXJldHVybiBfX3FtZ3JfZ2V0X3N0YXQxKHF1 ZXVlKSAmIFFVRVVFX1NUQVQxX05FQVJMWV9FTVBUWTsKK30KKworLyoqCisgKiBxbWdyX3N0YXRf YWJvdmVfaGlnaF93YXRlcm1hcmsoKSAtIGNoZWNrcyBpZiBhIHF1ZXVlIGlzIGFib3ZlIGhpZ2gg d2F0ZXJtYXJrCisgKiBAcXVldWU6IHF1ZXVlIG51bWJlcgorICoKKyAqIFJldHVybnMgbm9uLXpl cm8gdmFsdWUgaWYgdGhlIHF1ZXVlIGlzIGFib3ZlIGhpZ2ggd2F0ZXJtYXJrCisgKi8KK3N0YXRp YyBpbmxpbmUgaW50IHFtZ3Jfc3RhdF9hYm92ZV9oaWdoX3dhdGVybWFyayh1bnNpZ25lZCBpbnQg cXVldWUpCit7CisJcmV0dXJuIF9fcW1ncl9nZXRfc3RhdDEocXVldWUpICYgUVVFVUVfU1RBVDFf TkVBUkxZX0ZVTEw7Cit9CisKKy8qKgorICogcW1ncl9zdGF0X2Z1bGwoKSAtIGNoZWNrcyBpZiBh IGhhcmR3YXJlIHF1ZXVlIGlzIGZ1bGwKKyAqIEBxdWV1ZTogcXVldWUgbnVtYmVyCisgKgorICog UmV0dXJucyBub24temVybyB2YWx1ZSBpZiB0aGUgcXVldWUgaXMgZnVsbC4KKyAqLworc3RhdGlj IGlubGluZSBpbnQgcW1ncl9zdGF0X2Z1bGwodW5zaWduZWQgaW50IHF1ZXVlKQoreworCXJldHVy biBfX3FtZ3JfZ2V0X3N0YXQxKHF1ZXVlKSAmIFFVRVVFX1NUQVQxX0ZVTEw7Cit9CisKKyNlbmRp ZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1peHA0eHgvbG93bGV2ZWxfaW5pdC5TIGIvYXJj aC9hcm0vbWFjaC1peHA0eHgvbG93bGV2ZWxfaW5pdC5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmE0ZTkzZWYKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNoLWl4 cDR4eC9sb3dsZXZlbF9pbml0LlMKQEAgLTAsMCArMSwxNyBAQAorI2luY2x1ZGUgPG1hY2gvaXhw NHh4LXJlZ3MuaD4KKworCS5zZWN0aW9uICIudGV4dF9iYXJlX2luaXQiLCAiYXgiCisKKwkuZ2xv YmwgYXJjaF9pbml0X2xvd2xldmVsCithcmNoX2luaXRfbG93bGV2ZWw6CisJbGRyIHIwLCBjZmcK KwlsZHIgcjEsIFtyMF0KKwlhbmQgcjEsIHIxLCAjfjB4ODAwMDAwMDAgLyogdW5tYXAgRVhQIGJ1 cyBmcm9tIDB4MCAqLworCXN0ciByMSwgW3IwXQorCisJLyogcmV0dXJuIHRvIFJPTSAqLworCW9y ciBsciwgIzB4NTAwMDAwMDAKKwltb3YgcGMsIGxyCisKK2NmZzoKKwkud29yZCBJWFA0WFhfRVhQ X0NGRzAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtaXhwNHh4L25wZS5jIGIvYXJjaC9hcm0v bWFjaC1peHA0eHgvbnBlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThk ZGQ1YQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL21hY2gtaXhwNHh4L25wZS5jCkBAIC0w LDAgKzEsNjY4IEBACisvKgorICogSW50ZWwgSVhQNHh4IE5ldHdvcmsgUHJvY2Vzc29yIEVuZ2lu ZSBkcml2ZXIgZm9yIExpbnV4CisgKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEtyenlzenRvZiBI YWxhc2EgPGtoY0BwbS53YXcucGw+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRo ZSB0ZXJtcyBvZiB2ZXJzaW9uIDIgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg KiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisj aW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxmcy5oPgor I2luY2x1ZGUgPGluaXQuaD4KKyNpbmNsdWRlIDxtYWxsb2MuaD4KKyNpbmNsdWRlIDxhc20vYnl0 ZW9yZGVyLmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisjaW5jbHVkZSA8bWFjaC9peHA0eHgtcmVn cy5oPgorI2luY2x1ZGUgPG1hY2gvY3B1Lmg+CisjaW5jbHVkZSA8bWFjaC9ucGUuaD4KKworI2Rl ZmluZSBERUJVR19NU0cgICAgICAgICAgICAgICAgICAgICAgMAorI2RlZmluZSBERUJVR19GVyAg ICAgICAgICAgICAgICAgICAgICAgMAorCisjZGVmaW5lIE5QRV9DT1VOVCAgICAgICAgICAgICAg ICAgICAgICAzCisjZGVmaW5lIE1BWF9SRVRSSUVTICAgICAgICAgICAgICAgICAgICAxMDAwICAv KiBtaWNyb3NlY29uZHMgKi8KKyNkZWZpbmUgTlBFXzQyWF9EQVRBX1NJWkUgICAgICAgICAgICAg IDB4ODAwIC8qIGluIGR3b3JkcyAqLworI2RlZmluZSBOUEVfNDZYX0RBVEFfU0laRSAgICAgICAg ICAgICAgMHgxMDAwCisjZGVmaW5lIE5QRV9BXzQyWF9JTlNUUl9TSVpFICAgICAgICAgICAweDEw MDAKKyNkZWZpbmUgTlBFX0JfQU5EX0NfNDJYX0lOU1RSX1NJWkUgICAgIDB4ODAwCisjZGVmaW5l IE5QRV80NlhfSU5TVFJfU0laRSAgICAgICAgICAgICAweDEwMDAKKyNkZWZpbmUgUkVHU19TSVpF ICAgICAgICAgICAgICAgICAgICAgIDB4MTAwMAorCisjZGVmaW5lIE5QRV9QSFlTX1JFRyAgICAg ICAgICAgICAgICAgICAzMgorCisjZGVmaW5lIEZXX01BR0lDICAgICAgICAgICAgICAgICAgICAg ICAweEZFRURGMDBECisjZGVmaW5lIEZXX0JMT0NLX1RZUEVfSU5TVFIgICAgICAgICAgICAweDAK KyNkZWZpbmUgRldfQkxPQ0tfVFlQRV9EQVRBICAgICAgICAgICAgIDB4MQorI2RlZmluZSBGV19C TE9DS19UWVBFX0VPRiAgICAgICAgICAgICAgMHhGCisKKy8qIE5QRSBleGVjIHN0YXR1cyAocmVh ZCkgYW5kIGNvbW1hbmQgKHdyaXRlKSAqLworI2RlZmluZSBDTURfTlBFX1NURVAgICAgICAgICAg ICAgICAgICAgMHgwMQorI2RlZmluZSBDTURfTlBFX1NUQVJUICAgICAgICAgICAgICAgICAgMHgw MgorI2RlZmluZSBDTURfTlBFX1NUT1AgICAgICAgICAgICAgICAgICAgMHgwMworI2RlZmluZSBD TURfTlBFX0NMUl9QSVBFICAgICAgICAgICAgICAgMHgwNAorI2RlZmluZSBDTURfQ0xSX1BST0ZJ TEVfQ05UICAgICAgICAgICAgMHgwQworI2RlZmluZSBDTURfUkRfSU5TX01FTSAgICAgICAgICAg ICAgICAgMHgxMCAvKiBpbnN0cnVjdGlvbiBtZW1vcnkgKi8KKyNkZWZpbmUgQ01EX1dSX0lOU19N RU0gICAgICAgICAgICAgICAgIDB4MTEKKyNkZWZpbmUgQ01EX1JEX0RBVEFfTUVNICAgICAgICAg ICAgICAgIDB4MTIgLyogZGF0YSBtZW1vcnkgKi8KKyNkZWZpbmUgQ01EX1dSX0RBVEFfTUVNICAg ICAgICAgICAgICAgIDB4MTMKKyNkZWZpbmUgQ01EX1JEX0VDU19SRUcgICAgICAgICAgICAgICAg IDB4MTQgLyogZXhlYyBhY2Nlc3MgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgQ01EX1dSX0VDU19SRUcg ICAgICAgICAgICAgICAgIDB4MTUKKworI2RlZmluZSBTVEFUX1JVTiAgICAgICAgICAgICAgICAg ICAgICAgMHg4MDAwMDAwMAorI2RlZmluZSBTVEFUX1NUT1AgICAgICAgICAgICAgICAgICAgICAg MHg0MDAwMDAwMAorI2RlZmluZSBTVEFUX0NMRUFSICAgICAgICAgICAgICAgICAgICAgMHgyMDAw MDAwMAorI2RlZmluZSBTVEFUX0VDU19LICAgICAgICAgICAgICAgICAgICAgMHgwMDgwMDAwMCAv KiBwaXBlbGluZSBjbGVhbiAqLworCisjZGVmaW5lIE5QRV9TVEVWVCAgICAgICAgICAgICAgICAg ICAgICAweDFCCisjZGVmaW5lIE5QRV9TVEFSVFBDICAgICAgICAgICAgICAgICAgICAweDFDCisj ZGVmaW5lIE5QRV9SRUdNQVAgICAgICAgICAgICAgICAgICAgICAweDFFCisjZGVmaW5lIE5QRV9D SU5ERVggICAgICAgICAgICAgICAgICAgICAweDFGCisKKyNkZWZpbmUgSU5TVFJfV1JfUkVHX1NI T1JUICAgICAgICAgICAgIDB4MDAwMEMwMDAKKyNkZWZpbmUgSU5TVFJfV1JfUkVHX0JZVEUgICAg ICAgICAgICAgIDB4MDAwMDQwMDAKKyNkZWZpbmUgSU5TVFJfUkRfRklGTyAgICAgICAgICAgICAg ICAgIDB4MEY4ODgyMjAKKyNkZWZpbmUgSU5TVFJfUkVTRVRfTUJPWCAgICAgICAgICAgICAgIDB4 MEZBQzgyMTAKKworI2RlZmluZSBFQ1NfQkdfQ1RYVF9SRUdfMCAgICAgICAgICAgICAgMHgwMCAv KiBCYWNrZ3JvdW5kIEV4ZWN1dGluZyBDb250ZXh0ICovCisjZGVmaW5lIEVDU19CR19DVFhUX1JF R18xICAgICAgICAgICAgICAweDAxIC8qIFN0YWNrIGxldmVsICovCisjZGVmaW5lIEVDU19CR19D VFhUX1JFR18yICAgICAgICAgICAgICAweDAyCisjZGVmaW5lIEVDU19QUklfMV9DVFhUX1JFR18w ICAgICAgICAgICAweDA0IC8qIFByaW9yaXR5IDEgRXhlY3V0aW5nIENvbnRleHQgKi8KKyNkZWZp bmUgRUNTX1BSSV8xX0NUWFRfUkVHXzEgICAgICAgICAgIDB4MDUgLyogU3RhY2sgbGV2ZWwgKi8K KyNkZWZpbmUgRUNTX1BSSV8xX0NUWFRfUkVHXzIgICAgICAgICAgIDB4MDYKKyNkZWZpbmUgRUNT X1BSSV8yX0NUWFRfUkVHXzAgICAgICAgICAgIDB4MDggLyogUHJpb3JpdHkgMiBFeGVjdXRpbmcg Q29udGV4dCAqLworI2RlZmluZSBFQ1NfUFJJXzJfQ1RYVF9SRUdfMSAgICAgICAgICAgMHgwOSAv KiBTdGFjayBsZXZlbCAqLworI2RlZmluZSBFQ1NfUFJJXzJfQ1RYVF9SRUdfMiAgICAgICAgICAg MHgwQQorI2RlZmluZSBFQ1NfREJHX0NUWFRfUkVHXzAgICAgICAgICAgICAgMHgwQyAvKiBEZWJ1 ZyBFeGVjdXRpbmcgQ29udGV4dCAqLworI2RlZmluZSBFQ1NfREJHX0NUWFRfUkVHXzEgICAgICAg ICAgICAgMHgwRCAvKiBTdGFjayBsZXZlbCAqLworI2RlZmluZSBFQ1NfREJHX0NUWFRfUkVHXzIg ICAgICAgICAgICAgMHgwRQorI2RlZmluZSBFQ1NfSU5TVFJVQ1RfUkVHICAgICAgICAgICAgICAg MHgxMSAvKiBOUEUgSW5zdHJ1Y3Rpb24gUmVnaXN0ZXIgKi8KKworI2RlZmluZSBFQ1NfUkVHXzBf QUNUSVZFICAgICAgICAgICAgICAgMHg4MDAwMDAwMCAvKiBhbGwgbGV2ZWxzICovCisjZGVmaW5l IEVDU19SRUdfMF9ORVhUUENfTUFTSyAgICAgICAgICAweDFGRkYwMDAwIC8qIEJHL1BSSTEvUFJJ MiBsZXZlbHMgKi8KKyNkZWZpbmUgRUNTX1JFR18wX0xEVVJfQklUUyAgICAgICAgICAgIDgKKyNk ZWZpbmUgRUNTX1JFR18wX0xEVVJfTUFTSyAgICAgICAgICAgIDB4MDAwMDA3MDAgLyogYWxsIGxl dmVscyAqLworI2RlZmluZSBFQ1NfUkVHXzFfQ0NUWFRfQklUUyAgICAgICAgICAgMTYKKyNkZWZp bmUgRUNTX1JFR18xX0NDVFhUX01BU0sgICAgICAgICAgIDB4MDAwRjAwMDAgLyogYWxsIGxldmVs cyAqLworI2RlZmluZSBFQ1NfUkVHXzFfU0VMQ1RYVF9CSVRTICAgICAgICAgMAorI2RlZmluZSBF Q1NfUkVHXzFfU0VMQ1RYVF9NQVNLICAgICAgICAgMHgwMDAwMDAwRiAvKiBhbGwgbGV2ZWxzICov CisjZGVmaW5lIEVDU19EQkdfUkVHXzJfSUYgICAgICAgICAgICAgICAweDAwMTAwMDAwIC8qIGRl YnVnIGxldmVsICovCisjZGVmaW5lIEVDU19EQkdfUkVHXzJfSUUgICAgICAgICAgICAgICAweDAw MDgwMDAwIC8qIGRlYnVnIGxldmVsICovCisKKy8qIE5QRSB3YXRjaHBvaW50X2ZpZm8gcmVnaXN0 ZXIgYml0ICovCisjZGVmaW5lIFdGSUZPX1ZBTElEICAgICAgICAgICAgICAgICAgICAweDgwMDAw MDAwCisKKy8qIE5QRSBtZXNzYWdpbmdfc3RhdHVzIHJlZ2lzdGVyIGJpdCBkZWZpbml0aW9ucyAq LworI2RlZmluZSBNU0dTVEFUX09GTkUgIDB4MDAwMTAwMDAgLyogT3V0Rmlmb05vdEVtcHR5ICov CisjZGVmaW5lIE1TR1NUQVRfSUZORiAgMHgwMDAyMDAwMCAvKiBJbkZpZm9Ob3RGdWxsICovCisj ZGVmaW5lIE1TR1NUQVRfT0ZORiAgMHgwMDA0MDAwMCAvKiBPdXRGaWZvTm90RnVsbCAqLworI2Rl ZmluZSBNU0dTVEFUX0lGTkUgIDB4MDAwODAwMDAgLyogSW5GaWZvTm90RW1wdHkgKi8KKyNkZWZp bmUgTVNHU1RBVF9NQklOVCAweDAwMTAwMDAwIC8qIE1haWxib3ggaW50ZXJydXB0ICovCisjZGVm aW5lIE1TR1NUQVRfSUZJTlQgMHgwMDIwMDAwMCAvKiBJbkZpZm8gaW50ZXJydXB0ICovCisjZGVm aW5lIE1TR1NUQVRfT0ZJTlQgMHgwMDQwMDAwMCAvKiBPdXRGaWZvIGludGVycnVwdCAqLworI2Rl ZmluZSBNU0dTVEFUX1dGSU5UIDB4MDA4MDAwMDAgLyogV2F0Y2hGaWZvIGludGVycnVwdCAqLwor CisvKiBOUEUgbWVzc2FnaW5nX2NvbnRyb2wgcmVnaXN0ZXIgYml0IGRlZmluaXRpb25zICovCisj ZGVmaW5lIE1TR0NUTF9PVVRfRklGTyAgICAgICAweDAwMDEwMDAwIC8qIGVuYWJsZSBvdXRwdXQg RklGTyAqLworI2RlZmluZSBNU0dDVExfSU5fRklGTyAgICAgICAgMHgwMDAyMDAwMCAvKiBlbmFi bGUgaW5wdXQgRklGTyAqLworI2RlZmluZSBNU0dDVExfT1VUX0ZJRk9fV1JJVEUgMHgwMTAwMDAw MCAvKiBlbmFibGUgRklGTyArIFdSSVRFICovCisjZGVmaW5lIE1TR0NUTF9JTl9GSUZPX1dSSVRF ICAweDAyMDAwMDAwCisKKy8qIE5QRSBtYWlsYm94X3N0YXR1cyB2YWx1ZSBmb3IgcmVzZXQgKi8K KyNkZWZpbmUgUkVTRVRfTUJPWF9TVEFUICAgICAgICAgIDB4MDAwMEYwRjAKKworI2RlZmluZSBw cmludF9ucGUobnBlLCBmbXQsIC4uLikgZnByaW50ZihzdGRlcnIsICIlczogIiBmbXQsIG5wZS0+ bmFtZSwgIyMgX19WQV9BUkdTX18pCisKKyNpZiBERUJVR19NU0cKKyNkZWZpbmUgZGVidWdfbXNn KG5wZSwgZm10LCAuLi4pIHByaW50X25wZShucGUsIGZtdCwgIyMgX19WQV9BUkdTX18pCisjZWxz ZQorI2RlZmluZSBkZWJ1Z19tc2cobnBlLCBmbXQsIC4uLikKKyNlbmRpZgorCitzdGF0aWMgc3Ry dWN0IHsKKwl1MzIgcmVnLCB2YWw7Cit9IGVjc19yZXNldFtdID0geworCXtFQ1NfQkdfQ1RYVF9S RUdfMCwgICAgMHhBMDAwMDAwMH0sCisJe0VDU19CR19DVFhUX1JFR18xLCAgICAweDAxMDAwMDAw fSwKKwl7RUNTX0JHX0NUWFRfUkVHXzIsICAgIDB4MDAwMDgwMDB9LAorCXtFQ1NfUFJJXzFfQ1RY VF9SRUdfMCwgMHgyMDAwMDA4MH0sCisJe0VDU19QUklfMV9DVFhUX1JFR18xLCAweDAxMDAwMDAw fSwKKwl7RUNTX1BSSV8xX0NUWFRfUkVHXzIsIDB4MDAwMDgwMDB9LAorCXtFQ1NfUFJJXzJfQ1RY VF9SRUdfMCwgMHgyMDAwMDA4MH0sCisJe0VDU19QUklfMl9DVFhUX1JFR18xLCAweDAxMDAwMDAw fSwKKwl7RUNTX1BSSV8yX0NUWFRfUkVHXzIsIDB4MDAwMDgwMDB9LAorCXtFQ1NfREJHX0NUWFRf UkVHXzAsICAgMHgyMDAwMDAwMH0sCisJe0VDU19EQkdfQ1RYVF9SRUdfMSwgICAweDAwMDAwMDAw fSwKKwl7RUNTX0RCR19DVFhUX1JFR18yLCAgIDB4MDAxRTAwMDB9LAorCXtFQ1NfSU5TVFJVQ1Rf UkVHLCAgICAgMHgxMDAzQzAwRn0sCit9OworCitzdGF0aWMgc3RydWN0IG5wZSBucGVfdGFiW05Q RV9DT1VOVF0gPSB7CisJeworCQkucmVncyA9IChzdHJ1Y3QgbnBlX3JlZ3MgKilJWFA0WFhfTlBF QV9CQVNFLAorCQkuaWQgPSAwLAorCQkubmFtZSA9ICJOUEUtQSIsCisJfSwgeworCQkucmVncyA9 IChzdHJ1Y3QgbnBlX3JlZ3MgKilJWFA0WFhfTlBFQl9CQVNFLAorCQkuaWQgPSAxLAorCQkubmFt ZSA9ICJOUEUtQiIsCisJfSwgeworCQkucmVncyA9IChzdHJ1Y3QgbnBlX3JlZ3MgKilJWFA0WFhf TlBFQ19CQVNFLAorCQkuaWQgPSAyLAorCQkubmFtZSA9ICJOUEUtQyIsCisJfQorfTsKKworaW50 IG5wZV9ydW5uaW5nKHN0cnVjdCBucGUgKm5wZSkKK3sKKwlyZXR1cm4gKF9fcmF3X3JlYWRsKCZu cGUtPnJlZ3MtPmV4ZWNfc3RhdHVzX2NtZCkgJiBTVEFUX1JVTikgIT0gMDsKK30KKworc3RhdGlj IHZvaWQgbnBlX2NtZF93cml0ZShzdHJ1Y3QgbnBlICpucGUsIHUzMiBhZGRyLCBpbnQgY21kLCB1 MzIgZGF0YSkKK3sKKwlfX3Jhd193cml0ZWwoZGF0YSwgJm5wZS0+cmVncy0+ZXhlY19kYXRhKTsK KwlfX3Jhd193cml0ZWwoYWRkciwgJm5wZS0+cmVncy0+ZXhlY19hZGRyKTsKKwlfX3Jhd193cml0 ZWwoY21kLCAmbnBlLT5yZWdzLT5leGVjX3N0YXR1c19jbWQpOworfQorCitzdGF0aWMgdTMyIG5w ZV9jbWRfcmVhZChzdHJ1Y3QgbnBlICpucGUsIHUzMiBhZGRyLCBpbnQgY21kKQoreworCV9fcmF3 X3dyaXRlbChhZGRyLCAmbnBlLT5yZWdzLT5leGVjX2FkZHIpOworCV9fcmF3X3dyaXRlbChjbWQs ICZucGUtPnJlZ3MtPmV4ZWNfc3RhdHVzX2NtZCk7CisJLyogSWludHJvZHVjZSBleHRyYSByZWFk IGN5Y2xlcyBhZnRlciBpc3N1aW5nIHJlYWQgY29tbWFuZCB0byBOUEUKKwkgICBzbyB0aGF0IHdl IHJlYWQgdGhlIHJlZ2lzdGVyIGFmdGVyIHRoZSBOUEUgaGFzIHVwZGF0ZWQgaXQuCisJICAgVGhp cyBpcyB0byBvdmVyY29tZSByYWNlIGNvbmRpdGlvbiBiZXR3ZWVuIFhTY2FsZSBhbmQgTlBFICov CisJX19yYXdfcmVhZGwoJm5wZS0+cmVncy0+ZXhlY19kYXRhKTsKKwlfX3Jhd19yZWFkbCgmbnBl LT5yZWdzLT5leGVjX2RhdGEpOworCXJldHVybiBfX3Jhd19yZWFkbCgmbnBlLT5yZWdzLT5leGVj X2RhdGEpOworfQorCitzdGF0aWMgdm9pZCBucGVfY2xlYXJfYWN0aXZlKHN0cnVjdCBucGUgKm5w ZSwgdTMyIHJlZykKK3sKKwl1MzIgdmFsID0gbnBlX2NtZF9yZWFkKG5wZSwgcmVnLCBDTURfUkRf RUNTX1JFRyk7CisJbnBlX2NtZF93cml0ZShucGUsIHJlZywgQ01EX1dSX0VDU19SRUcsIHZhbCAm IH5FQ1NfUkVHXzBfQUNUSVZFKTsKK30KKworc3RhdGljIHZvaWQgbnBlX3N0YXJ0KHN0cnVjdCBu cGUgKm5wZSkKK3sKKwkvKiBlbnN1cmUgb25seSBCYWNrZ3JvdW5kIENvbnRleHQgU3RhY2sgTGV2 ZWwgaXMgYWN0aXZlICovCisJbnBlX2NsZWFyX2FjdGl2ZShucGUsIEVDU19QUklfMV9DVFhUX1JF R18wKTsKKwlucGVfY2xlYXJfYWN0aXZlKG5wZSwgRUNTX1BSSV8yX0NUWFRfUkVHXzApOworCW5w ZV9jbGVhcl9hY3RpdmUobnBlLCBFQ1NfREJHX0NUWFRfUkVHXzApOworCisJX19yYXdfd3JpdGVs KENNRF9OUEVfQ0xSX1BJUEUsICZucGUtPnJlZ3MtPmV4ZWNfc3RhdHVzX2NtZCk7CisJX19yYXdf d3JpdGVsKENNRF9OUEVfU1RBUlQsICZucGUtPnJlZ3MtPmV4ZWNfc3RhdHVzX2NtZCk7Cit9CisK K3N0YXRpYyB2b2lkIG5wZV9zdG9wKHN0cnVjdCBucGUgKm5wZSkKK3sKKwlfX3Jhd193cml0ZWwo Q01EX05QRV9TVE9QLCAmbnBlLT5yZWdzLT5leGVjX3N0YXR1c19jbWQpOworCV9fcmF3X3dyaXRl bChDTURfTlBFX0NMUl9QSVBFLCAmbnBlLT5yZWdzLT5leGVjX3N0YXR1c19jbWQpOyAvKkZJWE1F PyovCit9CisKK3N0YXRpYyBpbnQgbnBlX2RlYnVnX2luc3RyKHN0cnVjdCBucGUgKm5wZSwgdTMy IGluc3RyLCB1MzIgY3R4LCB1MzIgbGR1cikKK3sKKwl1MzIgd2M7CisJaW50IGk7CisKKwkvKiBz ZXQgdGhlIEFjdGl2ZSBiaXQsIGFuZCB0aGUgTERVUiwgaW4gdGhlIGRlYnVnIGxldmVsICovCisJ bnBlX2NtZF93cml0ZShucGUsIEVDU19EQkdfQ1RYVF9SRUdfMCwgQ01EX1dSX0VDU19SRUcsCisJ CSAgICAgIEVDU19SRUdfMF9BQ1RJVkUgfCAobGR1ciA8PCBFQ1NfUkVHXzBfTERVUl9CSVRTKSk7 CisKKwkvKiBzZXQgQ0NUWFQgYXQgRUNTIERFQlVHIEwzIHRvIHNwZWNpZnkgaW4gd2hpY2ggY29u dGV4dCB0byBleGVjdXRlCisJICAgdGhlIGluc3RydWN0aW9uLCBhbmQgc2V0IFNFTENUWFQgYXQg RUNTIERFQlVHIExldmVsIHRvIHNwZWNpZnkKKwkgICB3aGljaCBjb250ZXh0IHN0b3JlIHRvIGFj Y2Vzcy4KKwkgICBEZWJ1ZyBFQ1MgTGV2ZWwgUmVnIDEgaGFzIGZvcm0gMHgwMDBuMDAwbiwgd2hl cmUgbiA9IGNvbnRleHQgbnVtYmVyCisJKi8KKwlucGVfY21kX3dyaXRlKG5wZSwgRUNTX0RCR19D VFhUX1JFR18xLCBDTURfV1JfRUNTX1JFRywKKwkJICAgICAgKGN0eCA8PCBFQ1NfUkVHXzFfQ0NU WFRfQklUUykgfAorCQkgICAgICAoY3R4IDw8IEVDU19SRUdfMV9TRUxDVFhUX0JJVFMpKTsKKwor CS8qIGNsZWFyIHRoZSBwaXBlbGluZSAqLworCV9fcmF3X3dyaXRlbChDTURfTlBFX0NMUl9QSVBF LCAmbnBlLT5yZWdzLT5leGVjX3N0YXR1c19jbWQpOworCisJLyogbG9hZCBOUEUgaW5zdHJ1Y3Rp b24gaW50byB0aGUgaW5zdHJ1Y3Rpb24gcmVnaXN0ZXIgKi8KKwlucGVfY21kX3dyaXRlKG5wZSwg RUNTX0lOU1RSVUNUX1JFRywgQ01EX1dSX0VDU19SRUcsIGluc3RyKTsKKworCS8qIHdlIG5lZWQg dGhpcyB2YWx1ZSBsYXRlciB0byB3YWl0IGZvciBjb21wbGV0aW9uIG9mIE5QRSBleGVjdXRpb24K KwkgICBzdGVwICovCisJd2MgPSBfX3Jhd19yZWFkbCgmbnBlLT5yZWdzLT53YXRjaF9jb3VudCk7 CisKKwkvKiBpc3N1ZSBhIFN0ZXAgT25lIGNvbW1hbmQgdmlhIHRoZSBFeGVjdXRpb24gQ29udHJv bCByZWdpc3RlciAqLworCV9fcmF3X3dyaXRlbChDTURfTlBFX1NURVAsICZucGUtPnJlZ3MtPmV4 ZWNfc3RhdHVzX2NtZCk7CisKKwkvKiBXYXRjaCBDb3VudCByZWdpc3RlciBpbmNyZW1lbnRzIHdo ZW4gTlBFIGNvbXBsZXRlcyBhbiBpbnN0cnVjdGlvbiAqLworCWZvciAoaSA9IDA7IGkgPCBNQVhf UkVUUklFUzsgaSsrKSB7CisJCWlmICh3YyAhPSBfX3Jhd19yZWFkbCgmbnBlLT5yZWdzLT53YXRj aF9jb3VudCkpCisJCQlyZXR1cm4gMDsKKwkJdWRlbGF5KDEpOworCX0KKworCXByaW50X25wZShu cGUsICJyZXNldDogbnBlX2RlYnVnX2luc3RyKCk6IHRpbWVvdXRcbiIpOworCXJldHVybiAtRVRJ TUVET1VUOworfQorCitzdGF0aWMgaW50IG5wZV9sb2dpY2FsX3JlZ193cml0ZTgoc3RydWN0IG5w ZSAqbnBlLCB1MzIgYWRkciwgdTggdmFsLCB1MzIgY3R4KQoreworCS8qIGhlcmUgd2UgYnVpbGQg dGhlIE5QRSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb246IG1vdjggZDAsICMwICovCisJdTMyIGluc3Ry ID0gSU5TVFJfV1JfUkVHX0JZVEUgfCAvKiBPcENvZGUgKi8KKwkJYWRkciA8PCA5IHwgICAgICAg ICAgICAgLyogYmFzZSBPcGVyYW5kICovCisJCSh2YWwgJiAweDFGKSA8PCA0IHwgICAgIC8qIGxv d2VyIDUgYml0cyB0byBpbW1lZGlhdGUgZGF0YSAqLworCQkodmFsICYgfjB4MUYpIDw8ICgxOCAt IDUpOy8qIGhpZ2hlciAzIGJpdHMgdG8gQ29Qcm9jIGluc3RyLiAqLworCXJldHVybiBucGVfZGVi dWdfaW5zdHIobnBlLCBpbnN0ciwgY3R4LCAxKTsgLyogZXhlY3V0ZSBpdCAqLworfQorCitzdGF0 aWMgaW50IG5wZV9sb2dpY2FsX3JlZ193cml0ZTE2KHN0cnVjdCBucGUgKm5wZSwgdTMyIGFkZHIs IHUxNiB2YWwsIHUzMiBjdHgpCit7CisJLyogaGVyZSB3ZSBidWlsZCB0aGUgTlBFIGFzc2VtYmxl ciBpbnN0cnVjdGlvbjogbW92MTYgZDAsICMwICovCisJdTMyIGluc3RyID0gSU5TVFJfV1JfUkVH X1NIT1JUIHwgLyogT3BDb2RlICovCisJCWFkZHIgPDwgOSB8ICAgICAgICAgICAgIC8qIGJhc2Ug T3BlcmFuZCAqLworCQkodmFsICYgMHgxRikgPDwgNCB8ICAgICAvKiBsb3dlciA1IGJpdHMgdG8g aW1tZWRpYXRlIGRhdGEgKi8KKwkJKHZhbCAmIH4weDFGKSA8PCAoMTggLSA1KTsvKiBoaWdoZXIg MTEgYml0cyB0byBDb1Byb2MgaW5zdHIuICovCisJcmV0dXJuIG5wZV9kZWJ1Z19pbnN0cihucGUs IGluc3RyLCBjdHgsIDEpOyAvKiBleGVjdXRlIGl0ICovCit9CisKK3N0YXRpYyBpbnQgbnBlX2xv Z2ljYWxfcmVnX3dyaXRlMzIoc3RydWN0IG5wZSAqbnBlLCB1MzIgYWRkciwgdTMyIHZhbCwgdTMy IGN0eCkKK3sKKwkvKiB3cml0ZSBpbiAxNiBiaXQgc3RlcHMgZmlyc3QgdGhlIGhpZ2ggYW5kIHRo ZW4gdGhlIGxvdyB2YWx1ZSAqLworCWlmIChucGVfbG9naWNhbF9yZWdfd3JpdGUxNihucGUsIGFk ZHIsIHZhbCA+PiAxNiwgY3R4KSkKKwkJcmV0dXJuIC1FVElNRURPVVQ7CisJcmV0dXJuIG5wZV9s b2dpY2FsX3JlZ193cml0ZTE2KG5wZSwgYWRkciArIDIsIHZhbCAmIDB4RkZGRiwgY3R4KTsKK30K Kworc3RhdGljIGludCBucGVfcmVzZXQoc3RydWN0IG5wZSAqbnBlKQoreworCXUzMiB2YWwsIGN0 bCwgZXhlY19jb3VudCwgY3R4X3JlZzI7CisJaW50IGk7CisKKwljdGwgPSAoX19yYXdfcmVhZGwo Jm5wZS0+cmVncy0+bWVzc2FnaW5nX2NvbnRyb2wpIHwgMHgzRjAwMDAwMCkgJgorCQkweDNGM0ZG RkZGOworCisJLyogZGlzYWJsZSBwYXJpdHkgaW50ZXJydXB0ICovCisJX19yYXdfd3JpdGVsKGN0 bCAmIDB4M0YwMEZGRkYsICZucGUtPnJlZ3MtPm1lc3NhZ2luZ19jb250cm9sKTsKKworCS8qIHBy ZSBleGVjIC0gZGVidWcgaW5zdHJ1Y3Rpb24gKi8KKwkvKiB0dXJuIG9mZiB0aGUgaGFsdCBiaXQg YnkgY2xlYXJpbmcgRXhlY3V0aW9uIENvdW50IHJlZ2lzdGVyLiAqLworCWV4ZWNfY291bnQgPSBf X3Jhd19yZWFkbCgmbnBlLT5yZWdzLT5leGVjX2NvdW50KTsKKwlfX3Jhd193cml0ZWwoMCwgJm5w ZS0+cmVncy0+ZXhlY19jb3VudCk7CisJLyogZW5zdXJlIHRoYXQgSUYgYW5kIElFIGFyZSBvbiAo dGVtcG9yYXJpbHkpLCBzbyB0aGF0IHdlIGRvbid0IGVuZCB1cAorCSAgIHN0ZXBwaW5nIGZvcmV2 ZXIgKi8KKwljdHhfcmVnMiA9IG5wZV9jbWRfcmVhZChucGUsIEVDU19EQkdfQ1RYVF9SRUdfMiwg Q01EX1JEX0VDU19SRUcpOworCW5wZV9jbWRfd3JpdGUobnBlLCBFQ1NfREJHX0NUWFRfUkVHXzIs IENNRF9XUl9FQ1NfUkVHLCBjdHhfcmVnMiB8CisJCSAgICAgIEVDU19EQkdfUkVHXzJfSUYgfCBF Q1NfREJHX1JFR18yX0lFKTsKKworCS8qIGNsZWFyIHRoZSBGSUZPcyAqLworCXdoaWxlIChfX3Jh d19yZWFkbCgmbnBlLT5yZWdzLT53YXRjaHBvaW50X2ZpZm8pICYgV0ZJRk9fVkFMSUQpCisJCTsK Kwl3aGlsZSAoX19yYXdfcmVhZGwoJm5wZS0+cmVncy0+bWVzc2FnaW5nX3N0YXR1cykgJiBNU0dT VEFUX09GTkUpCisJCS8qIHJlYWQgZnJvbSB0aGUgb3V0RklGTyB1bnRpbCBlbXB0eSAqLworCQlw cmludF9ucGUobnBlLCAibnBlX3Jlc2V0OiByZWFkIEZJRk8gPSAweCVYXG4iLAorCQkJICBfX3Jh d19yZWFkbCgmbnBlLT5yZWdzLT5pbl9vdXRfZmlmbykpOworCisJd2hpbGUgKF9fcmF3X3JlYWRs KCZucGUtPnJlZ3MtPm1lc3NhZ2luZ19zdGF0dXMpICYgTVNHU1RBVF9JRk5FKQorCQkvKiBzdGVw IGV4ZWN1dGlvbiBvZiB0aGUgTlBFIGludHJ1Y3Rpb24gdG8gcmVhZCBpbkZJRk8gdXNpbmcKKwkJ ICAgdGhlIERlYnVnIEV4ZWN1dGluZyBDb250ZXh0IHN0YWNrICovCisJCWlmIChucGVfZGVidWdf aW5zdHIobnBlLCBJTlNUUl9SRF9GSUZPLCAwLCAwKSkKKwkJCXJldHVybiAtRVRJTUVET1VUOwor CisJLyogcmVzZXQgdGhlIG1haWxib3ggcmVnIGZyb20gdGhlIFhTY2FsZSBzaWRlICovCisJX19y YXdfd3JpdGVsKFJFU0VUX01CT1hfU1RBVCwgJm5wZS0+cmVncy0+bWFpbGJveF9zdGF0dXMpOwor CS8qIGZyb20gTlBFIHNpZGUgKi8KKwlpZiAobnBlX2RlYnVnX2luc3RyKG5wZSwgSU5TVFJfUkVT RVRfTUJPWCwgMCwgMCkpCisJCXJldHVybiAtRVRJTUVET1VUOworCisJLyogUmVzZXQgdGhlIHBo eXNpY2FsIHJlZ2lzdGVycyBpbiB0aGUgTlBFIHJlZ2lzdGVyIGZpbGUgKi8KKwlmb3IgKHZhbCA9 IDA7IHZhbCA8IE5QRV9QSFlTX1JFRzsgdmFsKyspIHsKKwkJaWYgKG5wZV9sb2dpY2FsX3JlZ193 cml0ZTE2KG5wZSwgTlBFX1JFR01BUCwgdmFsID4+IDEsIDApKQorCQkJcmV0dXJuIC1FVElNRURP VVQ7CisJCS8qIGFkZHJlc3MgaXMgZWl0aGVyIDAgb3IgNCAqLworCQlpZiAobnBlX2xvZ2ljYWxf cmVnX3dyaXRlMzIobnBlLCAodmFsICYgMSkgKiA0LCAwLCAwKSkKKwkJCXJldHVybiAtRVRJTUVE T1VUOworCX0KKworCS8qIFJlc2V0IHRoZSBjb250ZXh0IHN0b3JlID0gZWFjaCBjb250ZXh0J3Mg Q29udGV4dCBTdG9yZSByZWdpc3RlcnMgKi8KKworCS8qIENvbnRleHQgMCBoYXMgbm8gU1RBUlRQ Qy4gSW5zdGVhZCwgdGhpcyB2YWx1ZSBpcyB1c2VkIHRvIHNldCBOZXh0UEMKKwkgICBmb3IgQmFj a2dyb3VuZCBFQ1MsIHRvIHNldCB3aGVyZSBOUEUgc3RhcnRzIGV4ZWN1dGluZyBjb2RlICovCisJ dmFsID0gbnBlX2NtZF9yZWFkKG5wZSwgRUNTX0JHX0NUWFRfUkVHXzAsIENNRF9SRF9FQ1NfUkVH KTsKKwl2YWwgJj0gfkVDU19SRUdfMF9ORVhUUENfTUFTSzsKKwl2YWwgfD0gKDAgLyogTmV4dFBD ICovIDw8IDE2KSAmIEVDU19SRUdfMF9ORVhUUENfTUFTSzsKKwlucGVfY21kX3dyaXRlKG5wZSwg RUNTX0JHX0NUWFRfUkVHXzAsIENNRF9XUl9FQ1NfUkVHLCB2YWwpOworCisJZm9yIChpID0gMDsg aSA8IDE2OyBpKyspIHsKKwkJaWYgKGkpIHsgLyogQ29udGV4dCAwIGhhcyBubyBTVEVWVCBub3Ig U1RBUlRQQyAqLworCQkJLyogU1RFVlQgPSBvZmYsIDB4ODAgKi8KKwkJCWlmIChucGVfbG9naWNh bF9yZWdfd3JpdGU4KG5wZSwgTlBFX1NURVZULCAweDgwLCBpKSkKKwkJCQlyZXR1cm4gLUVUSU1F RE9VVDsKKwkJCWlmIChucGVfbG9naWNhbF9yZWdfd3JpdGUxNihucGUsIE5QRV9TVEFSVFBDLCAw LCBpKSkKKwkJCQlyZXR1cm4gLUVUSU1FRE9VVDsKKwkJfQorCQkvKiBSRUdNQVAgPSBkMC0+cDAs IGQ4LT5wMiwgZDE2LT5wNCAqLworCQlpZiAobnBlX2xvZ2ljYWxfcmVnX3dyaXRlMTYobnBlLCBO UEVfUkVHTUFQLCAweDgyMCwgaSkpCisJCQlyZXR1cm4gLUVUSU1FRE9VVDsKKwkJaWYgKG5wZV9s b2dpY2FsX3JlZ193cml0ZTgobnBlLCBOUEVfQ0lOREVYLCAwLCBpKSkKKwkJCXJldHVybiAtRVRJ TUVET1VUOworCX0KKworCS8qIHBvc3QgZXhlYyAqLworCS8qIGNsZWFyIGFjdGl2ZSBiaXQgaW4g ZGVidWcgbGV2ZWwgKi8KKwlucGVfY21kX3dyaXRlKG5wZSwgRUNTX0RCR19DVFhUX1JFR18wLCBD TURfV1JfRUNTX1JFRywgMCk7CisJLyogY2xlYXIgdGhlIHBpcGVsaW5lICovCisJX19yYXdfd3Jp dGVsKENNRF9OUEVfQ0xSX1BJUEUsICZucGUtPnJlZ3MtPmV4ZWNfc3RhdHVzX2NtZCk7CisJLyog cmVzdG9yZSBwcmV2aW91cyB2YWx1ZXMgKi8KKwlfX3Jhd193cml0ZWwoZXhlY19jb3VudCwgJm5w ZS0+cmVncy0+ZXhlY19jb3VudCk7CisJbnBlX2NtZF93cml0ZShucGUsIEVDU19EQkdfQ1RYVF9S RUdfMiwgQ01EX1dSX0VDU19SRUcsIGN0eF9yZWcyKTsKKworCS8qIHdyaXRlIHJlc2V0IHZhbHVl cyB0byBFeGVjdXRpb24gQ29udGV4dCBTdGFjayByZWdpc3RlcnMgKi8KKwlmb3IgKHZhbCA9IDA7 IHZhbCA8IEFSUkFZX1NJWkUoZWNzX3Jlc2V0KTsgdmFsKyspCisJCW5wZV9jbWRfd3JpdGUobnBl LCBlY3NfcmVzZXRbdmFsXS5yZWcsIENNRF9XUl9FQ1NfUkVHLAorCQkJICAgICAgZWNzX3Jlc2V0 W3ZhbF0udmFsKTsKKworCS8qIGNsZWFyIHRoZSBwcm9maWxlIGNvdW50ZXIgKi8KKwlfX3Jhd193 cml0ZWwoQ01EX0NMUl9QUk9GSUxFX0NOVCwgJm5wZS0+cmVncy0+ZXhlY19zdGF0dXNfY21kKTsK KworCV9fcmF3X3dyaXRlbCgwLCAmbnBlLT5yZWdzLT5leGVjX2NvdW50KTsKKwlfX3Jhd193cml0 ZWwoMCwgJm5wZS0+cmVncy0+YWN0aW9uX3BvaW50c1swXSk7CisJX19yYXdfd3JpdGVsKDAsICZu cGUtPnJlZ3MtPmFjdGlvbl9wb2ludHNbMV0pOworCV9fcmF3X3dyaXRlbCgwLCAmbnBlLT5yZWdz LT5hY3Rpb25fcG9pbnRzWzJdKTsKKwlfX3Jhd193cml0ZWwoMCwgJm5wZS0+cmVncy0+YWN0aW9u X3BvaW50c1szXSk7CisJX19yYXdfd3JpdGVsKDAsICZucGUtPnJlZ3MtPndhdGNoX2NvdW50KTsK KworCXZhbCA9IGl4cDR4eF9yZWFkX2ZlYXR1cmVfYml0cygpOworCS8qIHJlc2V0IHRoZSBOUEUg Ki8KKwlpeHA0eHhfd3JpdGVfZmVhdHVyZV9iaXRzKHZhbCAmCisJCQkJICB+KElYUDRYWF9GRUFU VVJFX1JFU0VUX05QRUEgPDwgbnBlLT5pZCkpOworCS8qIGRlYXNzZXJ0IHJlc2V0ICovCisJaXhw NHh4X3dyaXRlX2ZlYXR1cmVfYml0cyh2YWwgfAorCQkJCSAgKElYUDRYWF9GRUFUVVJFX1JFU0VU X05QRUEgPDwgbnBlLT5pZCkpOworCWZvciAoaSA9IDA7IGkgPCBNQVhfUkVUUklFUzsgaSsrKSB7 CisJCWlmIChpeHA0eHhfcmVhZF9mZWF0dXJlX2JpdHMoKSAmCisJCSAgICAoSVhQNFhYX0ZFQVRV UkVfUkVTRVRfTlBFQSA8PCBucGUtPmlkKSkKKwkJCWJyZWFrOyAvKiBOUEUgaXMgYmFjayBhbGl2 ZSAqLworCQl1ZGVsYXkoMSk7CisJfQorCWlmIChpID09IE1BWF9SRVRSSUVTKQorCQlyZXR1cm4g LUVUSU1FRE9VVDsKKworCW5wZV9zdG9wKG5wZSk7CisKKwkvKiByZXN0b3JlIE5QRSBjb25maWd1 cmF0aW9uIGJ1cyBDb250cm9sIFJlZ2lzdGVyIC0gcGFyaXR5IHNldHRpbmdzICovCisJX19yYXdf d3JpdGVsKGN0bCwgJm5wZS0+cmVncy0+bWVzc2FnaW5nX2NvbnRyb2wpOworCXJldHVybiAwOwor fQorCisKK2ludCBucGVfc2VuZF9tZXNzYWdlKHN0cnVjdCBucGUgKm5wZSwgY29uc3Qgdm9pZCAq bXNnLCBjb25zdCBjaGFyICp3aGF0KQoreworCWNvbnN0IHUzMiAqc2VuZCA9IG1zZzsKKwlpbnQg Y3ljbGVzID0gMDsKKworCWRlYnVnX21zZyhucGUsICJUcnlpbmcgdG8gc2VuZCBtZXNzYWdlICVz IFslMDhYOiUwOFhdXG4iLAorCQkgIHdoYXQsIHNlbmRbMF0sIHNlbmRbMV0pOworCisJaWYgKF9f cmF3X3JlYWRsKCZucGUtPnJlZ3MtPm1lc3NhZ2luZ19zdGF0dXMpICYgTVNHU1RBVF9JRk5FKSB7 CisJCWRlYnVnX21zZyhucGUsICJOUEUgaW5wdXQgRklGTyBub3QgZW1wdHlcbiIpOworCQlyZXR1 cm4gLUVJTzsKKwl9CisKKwlfX3Jhd193cml0ZWwoc2VuZFswXSwgJm5wZS0+cmVncy0+aW5fb3V0 X2ZpZm8pOworCisJaWYgKCEoX19yYXdfcmVhZGwoJm5wZS0+cmVncy0+bWVzc2FnaW5nX3N0YXR1 cykgJiBNU0dTVEFUX0lGTkYpKSB7CisJCWRlYnVnX21zZyhucGUsICJOUEUgaW5wdXQgRklGTyBm dWxsXG4iKTsKKwkJcmV0dXJuIC1FSU87CisJfQorCisJX19yYXdfd3JpdGVsKHNlbmRbMV0sICZu cGUtPnJlZ3MtPmluX291dF9maWZvKTsKKworCXdoaWxlICgoY3ljbGVzIDwgTUFYX1JFVFJJRVMp ICYmCisJICAgICAgIChfX3Jhd19yZWFkbCgmbnBlLT5yZWdzLT5tZXNzYWdpbmdfc3RhdHVzKSAm IE1TR1NUQVRfSUZORSkpIHsKKwkJdWRlbGF5KDEpOworCQljeWNsZXMrKzsKKwl9CisKKwlpZiAo Y3ljbGVzID09IE1BWF9SRVRSSUVTKSB7CisJCWRlYnVnX21zZyhucGUsICJUaW1lb3V0IHNlbmRp bmcgbWVzc2FnZVxuIik7CisJCXJldHVybiAtRVRJTUVET1VUOworCX0KKworI2lmIERFQlVHX01T RyA+IDEKKwlkZWJ1Z19tc2cobnBlLCAiU2VuZGluZyBhIG1lc3NhZ2UgdG9vayAlaSBjeWNsZXNc biIsIGN5Y2xlcyk7CisjZW5kaWYKKwlyZXR1cm4gMDsKK30KKworaW50IG5wZV9yZWN2X21lc3Nh Z2Uoc3RydWN0IG5wZSAqbnBlLCB2b2lkICptc2csIGNvbnN0IGNoYXIgKndoYXQpCit7CisJdTMy ICpyZWN2ID0gbXNnOworCWludCBjeWNsZXMgPSAwLCBjbnQgPSAwOworCisJZGVidWdfbXNnKG5w ZSwgIlRyeWluZyB0byByZWNlaXZlIG1lc3NhZ2UgJXNcbiIsIHdoYXQpOworCisJd2hpbGUgKGN5 Y2xlcyA8IE1BWF9SRVRSSUVTKSB7CisJCWlmIChfX3Jhd19yZWFkbCgmbnBlLT5yZWdzLT5tZXNz YWdpbmdfc3RhdHVzKSAmIE1TR1NUQVRfT0ZORSkgeworCQkJcmVjdltjbnQrK10gPSBfX3Jhd19y ZWFkbCgmbnBlLT5yZWdzLT5pbl9vdXRfZmlmbyk7CisJCQlpZiAoY250ID09IDIpCisJCQkJYnJl YWs7CisJCX0gZWxzZSB7CisJCQl1ZGVsYXkoMSk7CisJCQljeWNsZXMrKzsKKwkJfQorCX0KKwor CXN3aXRjaChjbnQpIHsKKwljYXNlIDE6CisJCWRlYnVnX21zZyhucGUsICJSZWNlaXZlZCBbJTA4 WF1cbiIsIHJlY3ZbMF0pOworCQlicmVhazsKKwljYXNlIDI6CisJCWRlYnVnX21zZyhucGUsICJS ZWNlaXZlZCBbJTA4WDolMDhYXVxuIiwgcmVjdlswXSwgcmVjdlsxXSk7CisJCWJyZWFrOworCX0K KworCWlmIChjeWNsZXMgPT0gTUFYX1JFVFJJRVMpIHsKKwkJZGVidWdfbXNnKG5wZSwgIlRpbWVv dXQgd2FpdGluZyBmb3IgbWVzc2FnZVxuIik7CisJCXJldHVybiAtRVRJTUVET1VUOworCX0KKwor I2lmIERFQlVHX01TRyA+IDEKKwlkZWJ1Z19tc2cobnBlLCAiUmVjZWl2aW5nIGEgbWVzc2FnZSB0 b29rICVpIGN5Y2xlc1xuIiwgY3ljbGVzKTsKKyNlbmRpZgorCXJldHVybiAwOworfQorCitpbnQg bnBlX3NlbmRfcmVjdl9tZXNzYWdlKHN0cnVjdCBucGUgKm5wZSwgdm9pZCAqbXNnLCBjb25zdCBj aGFyICp3aGF0KQoreworCWludCByZXN1bHQ7CisJdTMyICpzZW5kID0gbXNnLCByZWN2WzJdOwor CisJaWYgKChyZXN1bHQgPSBucGVfc2VuZF9tZXNzYWdlKG5wZSwgbXNnLCB3aGF0KSkgIT0gMCkK KwkJcmV0dXJuIHJlc3VsdDsKKwlpZiAoKHJlc3VsdCA9IG5wZV9yZWN2X21lc3NhZ2UobnBlLCBy ZWN2LCB3aGF0KSkgIT0gMCkKKwkJcmV0dXJuIHJlc3VsdDsKKworCWlmICgocmVjdlswXSAhPSBz ZW5kWzBdKSB8fCAocmVjdlsxXSAhPSBzZW5kWzFdKSkgeworCQlkZWJ1Z19tc2cobnBlLCAiTWVz c2FnZSAlczogdW5leHBlY3RlZCBtZXNzYWdlIHJlY2VpdmVkXG4iLAorCQkJICB3aGF0KTsKKwkJ cmV0dXJuIC1FSU87CisJfQorCXJldHVybiAwOworfQorCisKK2ludCBucGVfbG9hZF9maXJtd2Fy ZShzdHJ1Y3QgbnBlICpucGUpCit7CisJc3RydWN0IGRsX2Jsb2NrIHsKKwkJdTMyIHR5cGU7CisJ CXUzMiBvZmZzZXQ7CisJfSAqYmxrOworCisJc3RydWN0IGRsX2ltYWdlIHsKKwkJdTMyIG1hZ2lj OworCQl1MzIgaWQ7CisJCXUzMiBzaXplOworCQl1bmlvbiB7CisJCQl1MzIgZGF0YVswXTsKKwkJ CXN0cnVjdCBkbF9ibG9jayBibG9ja3NbMF07CisJCX07CisJfSAqaW1hZ2U7CisKKwlzdHJ1Y3Qg ZGxfY29kZWJsb2NrIHsKKwkJdTMyIG5wZV9hZGRyOworCQl1MzIgc2l6ZTsKKwkJdTMyIGRhdGFb MF07CisJfSAqY2I7CisKKwlpbnQgaSwgaiwgZXJyLCBkYXRhX3NpemUsIGluc3RyX3NpemUsIGJs b2NrcywgdGFibGVfZW5kOworCXUzMiBjbWQ7CisJY2hhciBuYW1lWzUgLyogIi9kZXYvIiAqLyAr IE5QRV9OQU1FX0xFTkdUSCArIDEgLyogTlVMICovXTsKKwlzaXplX3QgaW1hZ2Vfc2l6ZTsKKwor CXNwcmludGYobmFtZSwgIi9kZXYvJXMiLCBucGUtPm5hbWUpOworCWlmICghKGltYWdlID0gcmVh ZF9maWxlKG5hbWUsICZpbWFnZV9zaXplKSkpIHsKKwkJcHJpbnRfbnBlKG5wZSwgImJhZCBvciBt aXNzaW5nIG1pY3JvY29kZSBmaWxlICVzIiwgbmFtZSk7CisJCXJldHVybiAtRUlPOworCX0KKwor CWVyciA9IC1FSU5WQUw7CisJaWYgKGltYWdlX3NpemUgPCBzaXplb2Yoc3RydWN0IGRsX2ltYWdl KSkgeworCQlwcmludF9ucGUobnBlLCAiaW5jb21wbGV0ZSBtaWNyb2NvZGUgZmlsZSAlc1xuIiwg bmFtZSk7CisJCWdvdG8gZXJyOworCX0KKworI2lmIERFQlVHX0ZXCisJcHJpbnRfbnBlKG5wZSwg Im1pY3JvY29kZTogJTA4WCAlMDhYICUwOFggKDB4JVggYnl0ZXMpXG4iLAorCQkgIGltYWdlLT5t YWdpYywgaW1hZ2UtPmlkLCBpbWFnZS0+c2l6ZSwgaW1hZ2UtPnNpemUgKiA0KTsKKyNlbmRpZgor CisJaWYgKGltYWdlLT5tYWdpYyA9PSBzd2FiMzIoRldfTUFHSUMpKSB7IC8qIHN3YXBwZWQgZmls ZSAqLworCQlpbWFnZS0+aWQgPSBzd2FiMzIoaW1hZ2UtPmlkKTsKKwkJaW1hZ2UtPnNpemUgPSBz d2FiMzIoaW1hZ2UtPnNpemUpOworCX0gZWxzZSBpZiAoaW1hZ2UtPm1hZ2ljICE9IEZXX01BR0lD KSB7CisJCXByaW50X25wZShucGUsICJiYWQgbWljcm9jb2RlIGZpbGUgJXMgbWFnaWM6IDB4JVhc biIsIG5hbWUsIGltYWdlLT5tYWdpYyk7CisJCWdvdG8gZXJyOworCX0KKwlpZiAoKGltYWdlLT5z aXplICogNCArIHNpemVvZihzdHJ1Y3QgZGxfaW1hZ2UpKSA+IGltYWdlX3NpemUpIHsKKwkJcHJp bnRfbnBlKG5wZSwgImluY29tcGxldGUgbWljcm9jb2RlIGZpbGUgJXNcbiIsIG5hbWUpOworCQln b3RvIGVycjsKKwl9CisJaWYgKCgoaW1hZ2UtPmlkID4+IDI0KSAmIDB4RiAvKiBOUEUgSUQgKi8p ICE9IG5wZS0+aWQpIHsKKwkJcHJpbnRfbnBlKG5wZSwgIk5QRSBJRCBtaXNtYXRjaCBpbiBtaWNy b2NvZGUgZmlsZSAlc1xuIiwgbmFtZSk7CisJCWdvdG8gZXJyOworCX0KKwlpZiAoaW1hZ2UtPm1h Z2ljID09IHN3YWIzMihGV19NQUdJQykpCisJCWZvciAoaSA9IDA7IGkgPCBpbWFnZS0+c2l6ZTsg aSsrKQorCQkJaW1hZ2UtPmRhdGFbaV0gPSBzd2FiMzIoaW1hZ2UtPmRhdGFbaV0pOworCisJaWYg KGNwdV9pc19peHA0MngoKSAmJiAoKGltYWdlLT5pZCA+PiAyOCkgJiAweEYgLyogZGV2aWNlIElE ICovKSkgeworCQlwcmludF9ucGUobnBlLCAiSVhQNDN4L0lYUDQ2eCBtaWNyb2NvZGUgaWdub3Jl ZCBvbiBJWFA0MnhcbiIpOworCQlnb3RvIGVycjsKKwl9CisKKwlpZiAobnBlX3J1bm5pbmcobnBl KSkgeworCQlwcmludF9ucGUobnBlLCAidW5hYmxlIHRvIGxvYWQgbWljcm9jb2RlIGZpbGUgJXMs IE5QRSBpcyBhbHJlYWR5IHJ1bm5pbmdcbiIsIG5hbWUpOworCQllcnIgPSAtRUJVU1k7CisJCWdv dG8gZXJyOworCX0KKworCWlmIChjcHVfaXNfaXhwNDJ4KCkpIHsKKwkJaWYgKCFucGUtPmlkKQor CQkJaW5zdHJfc2l6ZSA9IE5QRV9BXzQyWF9JTlNUUl9TSVpFOworCQllbHNlCisJCQlpbnN0cl9z aXplID0gTlBFX0JfQU5EX0NfNDJYX0lOU1RSX1NJWkU7CisJCWRhdGFfc2l6ZSA9IE5QRV80Mlhf REFUQV9TSVpFOworCX0gZWxzZSB7CisJCWluc3RyX3NpemUgPSBOUEVfNDZYX0lOU1RSX1NJWkU7 CisJCWRhdGFfc2l6ZSA9IE5QRV80NlhfREFUQV9TSVpFOworCX0KKworCWZvciAoYmxvY2tzID0g MDsgYmxvY2tzICogc2l6ZW9mKHN0cnVjdCBkbF9ibG9jaykgLyA0IDwgaW1hZ2UtPnNpemU7CisJ ICAgICBibG9ja3MrKykKKwkJaWYgKGltYWdlLT5ibG9ja3NbYmxvY2tzXS50eXBlID09IEZXX0JM T0NLX1RZUEVfRU9GKQorCQkJYnJlYWs7CisJaWYgKGJsb2NrcyAqIHNpemVvZihzdHJ1Y3QgZGxf YmxvY2spIC8gNCA+PSBpbWFnZS0+c2l6ZSkgeworCQlwcmludF9ucGUobnBlLCAibWljcm9jb2Rl IEVPRiBibG9jayBtYXJrZXIgbm90IGZvdW5kXG4iKTsKKwkJZ290byBlcnI7CisJfQorCisjaWYg REVCVUdfRlcKKwlwcmludF9ucGUobnBlLCAiJWkgbWljcm9jb2RlIGJsb2NrcyBmb3VuZFxuIiwg YmxvY2tzKTsKKyNlbmRpZgorCisJdGFibGVfZW5kID0gYmxvY2tzICogc2l6ZW9mKHN0cnVjdCBk bF9ibG9jaykgLyA0ICsgMSAvKiBFT0YgbWFya2VyICovOworCWZvciAoaSA9IDAsIGJsayA9IGlt YWdlLT5ibG9ja3M7IGkgPCBibG9ja3M7IGkrKywgYmxrKyspIHsKKwkJaWYgKGJsay0+b2Zmc2V0 ID4gaW1hZ2UtPnNpemUgLSBzaXplb2Yoc3RydWN0IGRsX2NvZGVibG9jaykgLyA0CisJCSAgICB8 fCBibGstPm9mZnNldCA8IHRhYmxlX2VuZCkgeworCQkJcHJpbnRfbnBlKG5wZSwgImludmFsaWQg b2Zmc2V0IDB4JVggb2YgIgorCQkJCSAgIm1pY3JvY29kZSBibG9jayAjJWlcbiIsIGJsay0+b2Zm c2V0LCBpKTsKKwkJCWdvdG8gZXJyOworCQl9CisKKwkJY2IgPSAoc3RydWN0IGRsX2NvZGVibG9j ayopJmltYWdlLT5kYXRhW2Jsay0+b2Zmc2V0XTsKKwkJaWYgKGJsay0+dHlwZSA9PSBGV19CTE9D S19UWVBFX0lOU1RSKSB7CisJCQlpZiAoY2ItPm5wZV9hZGRyICsgY2ItPnNpemUgPiBpbnN0cl9z aXplKQorCQkJCWdvdG8gdG9vX2JpZzsKKwkJCWNtZCA9IENNRF9XUl9JTlNfTUVNOworCQl9IGVs c2UgaWYgKGJsay0+dHlwZSA9PSBGV19CTE9DS19UWVBFX0RBVEEpIHsKKwkJCWlmIChjYi0+bnBl X2FkZHIgKyBjYi0+c2l6ZSA+IGRhdGFfc2l6ZSkKKwkJCQlnb3RvIHRvb19iaWc7CisJCQljbWQg PSBDTURfV1JfREFUQV9NRU07CisJCX0gZWxzZSB7CisJCQlwcmludF9ucGUobnBlLCAiaW52YWxp ZCBtaWNyb2NvZGUgYmxvY2sgIyVpIHR5cGUgMHglWFxuIiwKKwkJCQkgIGksIGJsay0+dHlwZSk7 CisJCQlnb3RvIGVycjsKKwkJfQorCQlpZiAoYmxrLT5vZmZzZXQgKyBzaXplb2YoKmNiKSAvIDQg KyBjYi0+c2l6ZSA+IGltYWdlLT5zaXplKSB7CisJCQlwcmludF9ucGUobnBlLCAibWljcm9jb2Rl IGJsb2NrICMlaSBkb2Vzbid0ICIKKwkJCQkgICJmaXQgaW4gbWljcm9jb2RlIGltYWdlOiB0eXBl ICVjLCBzdGFydCAweCVYLCIKKwkJCQkgICIgbGVuZ3RoIDB4JVhcbiIsIGksCisJCQkJICBibGst PnR5cGUgPT0gRldfQkxPQ0tfVFlQRV9JTlNUUiA/ICdJJyA6ICdEJywKKwkJCQkgIGNiLT5ucGVf YWRkciwgY2ItPnNpemUpOworCQkJZ290byBlcnI7CisJCX0KKworCQlmb3IgKGogPSAwOyBqIDwg Y2ItPnNpemU7IGorKykKKwkJCW5wZV9jbWRfd3JpdGUobnBlLCBjYi0+bnBlX2FkZHIgKyBqLCBj bWQsIGNiLT5kYXRhW2pdKTsKKwl9CisKKwlucGVfc3RhcnQobnBlKTsKKwlpZiAoIW5wZV9ydW5u aW5nKG5wZSkpCisJCXByaW50X25wZShucGUsICJ1bmFibGUgdG8gc3RhcnRcbiIpOworCWZyZWUo aW1hZ2UpOworCXJldHVybiAwOworCit0b29fYmlnOgorCXByaW50X25wZShucGUsICJtaWNyb2Nv ZGUgYmxvY2sgIyVpIGRvZXNuJ3QgZml0IGluIE5QRSAiCisJCSAgIm1lbW9yeTogdHlwZSAlYywg c3RhcnQgMHglWCwgbGVuZ3RoIDB4JVhcbiIsIGksCisJCSAgYmxrLT50eXBlID09IEZXX0JMT0NL X1RZUEVfSU5TVFIgPyAnSScgOiAnRCcsCisJCSAgY2ItPm5wZV9hZGRyLCBjYi0+c2l6ZSk7Citl cnI6CisJZnJlZShpbWFnZSk7CisJcmV0dXJuIGVycjsKK30KKworCitzdHJ1Y3QgbnBlICpucGVf cmVxdWVzdChpbnQgaWQpCit7CisJaWYgKGlkIDwgTlBFX0NPVU5UKQorCQlpZiAobnBlX3RhYltp ZF0udmFsaWQpCisJCQlyZXR1cm4gJm5wZV90YWJbaWRdOworCXJldHVybiBOVUxMOworfQorCitz dGF0aWMgaW50IF9faW5pdCBucGVfaW5pdCh2b2lkKQoreworCWludCBpOworCisJZm9yIChpID0g MDsgaSA8IE5QRV9DT1VOVDsgaSsrKSB7CisJCXN0cnVjdCBucGUgKm5wZSA9ICZucGVfdGFiW2ld OworCQlpZiAoIShpeHA0eHhfcmVhZF9mZWF0dXJlX2JpdHMoKSAmIChJWFA0WFhfRkVBVFVSRV9S RVNFVF9OUEVBIDw8IGkpKSkKKwkJCWNvbnRpbnVlOyAvKiBOUEUgYWxyZWFkeSBkaXNhYmxlZCBv ciBub3QgcHJlc2VudCAqLworCQlpZiAobnBlX3Jlc2V0KG5wZSkpCisJCQljb250aW51ZTsKKwkJ bnBlLT52YWxpZCA9IDE7CisJfQorCXJldHVybiAwOworfQorCitjb3JlZGV2aWNlX2luaXRjYWxs KG5wZV9pbml0KTsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtaXhwNHh4L3FtZ3IuYyBiL2Fy Y2gvYXJtL21hY2gtaXhwNHh4L3FtZ3IuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi40OWNiYTYwCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vbWFjaC1peHA0eHgvcW1n ci5jCkBAIC0wLDAgKzEsMjY5IEBACisvKgorICogSW50ZWwgSVhQNHh4IFF1ZXVlIE1hbmFnZXIg ZHJpdmVyIGZvciBMaW51eAorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBLcnp5c3p0b2YgSGFs YXNhIDxraGNAcG0ud2F3LnBsPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUg dGVybXMgb2YgdmVyc2lvbiAyIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKworI2lu Y2x1ZGUgPGluaXQuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPG1hY2gvcW1nci5o PgorCitzdGF0aWMgdTMyIHVzZWRfc3JhbV9iaXRtYXBbNF07IC8qIDEyOCAxNi1kd29yZCBwYWdl cyAqLworCisjaWYgREVCVUdfUU1HUgorY2hhciBxbWdyX3F1ZXVlX2Rlc2NzW0hBTEZfUVVFVUVT XVszMl07CisjZW5kaWYKKworI2lmZGVmIENPTkZJR19VU0VfSVJRCisKK3N0YXRpYyB2b2lkICgq aXJxX2hhbmRsZXJzW0hBTEZfUVVFVUVTXSkodm9pZCAqcGRldik7CitzdGF0aWMgdm9pZCAqaXJx X3BkZXZzW0hBTEZfUVVFVUVTXTsKKworI3VuZGVmIGZscworc3RhdGljIGlubGluZSBpbnQgZmxz KGludCB4KQoreworCWludCByZXQ7CisJYXNtKCJjbHpcdCUwLCAlMSIgOiAiPXIiIChyZXQpIDog InIiICh4KSA6ICJjYyIpOworCXJldCA9IDMyIC0gcmV0OworCXJldHVybiByZXQ7Cit9CisKKwor dm9pZCBxbWdyX3NldF9pcnEodW5zaWduZWQgaW50IHF1ZXVlLCBpbnQgc3JjLAorCQkgIHZvaWQg KCpoYW5kbGVyKSh2b2lkICpwZGV2KSwgdm9pZCAqcGRldikKK3sKKwljb25zdCB1MzIgKnJlZzsK KwlpbnQgYml0OworCUJVR19PTihzcmMgPiBRVUVVRV9JUlFfU1JDX05PVF9GVUxMKTsKKwlyZWcg PSAmcW1ncl9yZWdzLT5pcnFzcmNbcXVldWUgPj4gM107IC8qIDggcXVldWVzIHBlciB1MzIgKi8K KwliaXQgPSAocXVldWUgJSA4KSAqIDQ7IC8qIDMgYml0cyArIDEgcmVzZXJ2ZWQgYml0IHBlciBx dWV1ZSAqLworCV9fcmF3X3dyaXRlbCgoX19yYXdfcmVhZGwocmVnKSAmIH4oNyA8PCBiaXQpKSB8 IChzcmMgPDwgYml0KSwgcmVnKTsKKworCWlycV9oYW5kbGVyc1txdWV1ZV0gPSBoYW5kbGVyOwor CWlycV9wZGV2c1txdWV1ZV0gPSBwZGV2OworfQorCisKK3N0YXRpYyB2b2lkIHFtZ3JfaXJxMV9h MCh2b2lkICpkYXRhKQoreworCWludCBpOworCXUzMiBlbl9iaXRtYXAsIHNyYywgc3RhdDsKKwor CS8qIEFDSyAtIGl0IG1heSBjbGVhciBhbnkgYml0cyBzbyBkb24ndCByZWx5IG9uIGl0ICovCisJ X19yYXdfd3JpdGVsKDB4RkZGRkZGRkYsICZxbWdyX3JlZ3MtPmlycXN0YXRbMF0pOworCisJZW5f Yml0bWFwID0gcW1ncl9yZWdzLT5pcnFlblswXTsKKwl3aGlsZSAoZW5fYml0bWFwKSB7CisJCWkg PSBmbHMoZW5fYml0bWFwKSAtIDE7IC8qIG51bWJlciBvZiB0aGUgbGFzdCAibG93IiBxdWV1ZSAq LworCQllbl9iaXRtYXAgJj0gfkJJVChpKTsKKwkJc3JjID0gcW1ncl9yZWdzLT5pcnFzcmNbaSA+ PiAzXTsKKwkJc3RhdCA9IHFtZ3JfcmVncy0+c3RhdDFbaSA+PiAzXTsKKwkJaWYgKHNyYyAmIDQp IC8qIHRoZSBJUlEgY29uZGl0aW9uIGlzIGludmVydGVkICovCisJCQlzdGF0ID0gfnN0YXQ7CisJ CWlmIChzdGF0ICYgQklUKHNyYyAmIDMpKQorCQkJaXJxX2hhbmRsZXJzW2ldKGlycV9wZGV2c1tp XSk7CisJfQorfQorCisKK3N0YXRpYyB2b2lkIHFtZ3JfaXJxMSh2b2lkICpkYXRhKQoreworCWlu dCBpOworCXUzMiByZXFfYml0bWFwID0gX19yYXdfcmVhZGwoJnFtZ3JfcmVncy0+aXJxc3RhdFsw XSk7CisKKwlpZiAoIXJlcV9iaXRtYXApCisJCXJldHVybjsKKwlfX3Jhd193cml0ZWwocmVxX2Jp dG1hcCwgJnFtZ3JfcmVncy0+aXJxc3RhdFswXSk7IC8qIEFDSyAqLworCisJd2hpbGUgKHJlcV9i aXRtYXApIHsKKwkJaSA9IGZscyhyZXFfYml0bWFwKSAtIDE7IC8qIG51bWJlciBvZiB0aGUgbGFz dCBxdWV1ZSAqLworCQlyZXFfYml0bWFwICY9IH5CSVQoaSk7CisJCWlycV9oYW5kbGVyc1tpXShp cnFfcGRldnNbaV0pOworCX0KK30KKworCit2b2lkIHFtZ3JfZW5hYmxlX2lycSh1bnNpZ25lZCBp bnQgcXVldWUpCit7CisJdTMyIG1hc2sgPSAxIDw8IHF1ZXVlOworCisJX19yYXdfd3JpdGVsKF9f cmF3X3JlYWRsKCZxbWdyX3JlZ3MtPmlycWVuWzBdKSB8IG1hc2ssCisJCSAgICAgJnFtZ3JfcmVn cy0+aXJxZW5bMF0pOworfQorCit2b2lkIHFtZ3JfZGlzYWJsZV9pcnEodW5zaWduZWQgaW50IHF1 ZXVlKQoreworCXUzMiBtYXNrID0gMSA8PCBxdWV1ZTsKKworCV9fcmF3X3dyaXRlbChfX3Jhd19y ZWFkbCgmcW1ncl9yZWdzLT5pcnFlblswXSkgJiB+bWFzaywKKwkJICAgICAmcW1ncl9yZWdzLT5p cnFlblswXSk7CisJX19yYXdfd3JpdGVsKG1hc2ssICZxbWdyX3JlZ3MtPmlycXN0YXRbMF0pOyAv KiBjbGVhciAqLworfQorCisjZW5kaWYgLyogQ09ORklHX1VTRV9JUlEgKi8KKworc3RhdGljIGlu bGluZSB2b2lkIHNoaWZ0X21hc2sodTMyICptYXNrKQoreworCW1hc2tbM10gPSBtYXNrWzNdIDw8 IDEgfCBtYXNrWzJdID4+IDMxOworCW1hc2tbMl0gPSBtYXNrWzJdIDw8IDEgfCBtYXNrWzFdID4+ IDMxOworCW1hc2tbMV0gPSBtYXNrWzFdIDw8IDEgfCBtYXNrWzBdID4+IDMxOworCW1hc2tbMF0g PDw9IDE7Cit9CisKKyNpZiBERUJVR19RTUdSCit2b2lkIHFtZ3JfcmVxdWVzdF9xdWV1ZSh1bnNp Z25lZCBpbnQgcXVldWUsIHVuc2lnbmVkIGludCBsZW4gLyogZHdvcmRzICovLAorCQkJdW5zaWdu ZWQgaW50IG5lYXJseV9lbXB0eV93YXRlcm1hcmssCisJCQl1bnNpZ25lZCBpbnQgbmVhcmx5X2Z1 bGxfd2F0ZXJtYXJrLAorCQkJY29uc3QgY2hhciAqZGVzY19mb3JtYXQsIGNvbnN0IGNoYXIqIG5h bWUpCisjZWxzZQordm9pZCBfX3FtZ3JfcmVxdWVzdF9xdWV1ZSh1bnNpZ25lZCBpbnQgcXVldWUs IHVuc2lnbmVkIGludCBsZW4gLyogZHdvcmRzICovLAorCQkJICB1bnNpZ25lZCBpbnQgbmVhcmx5 X2VtcHR5X3dhdGVybWFyaywKKwkJCSAgdW5zaWduZWQgaW50IG5lYXJseV9mdWxsX3dhdGVybWFy aykKKyNlbmRpZgoreworCXUzMiBjZmcsIGFkZHIgPSAwLCBtYXNrWzRdOyAvKiBpbiAxNi1kd29y ZHMgKi8KKworCUJVR19PTihxdWV1ZSA+PSBIQUxGX1FVRVVFUyk7CisJQlVHX09OKChuZWFybHlf ZW1wdHlfd2F0ZXJtYXJrIHwgbmVhcmx5X2Z1bGxfd2F0ZXJtYXJrKSAmIH43KTsKKworCXN3aXRj aCAobGVuKSB7CisJY2FzZSAgMTY6CisJCWNmZyA9IDAgPDwgMjQ7CisJCW1hc2tbMF0gPSAweDE7 CisJCWJyZWFrOworCWNhc2UgIDMyOgorCQljZmcgPSAxIDw8IDI0OworCQltYXNrWzBdID0gMHgz OworCQlicmVhazsKKwljYXNlICA2NDoKKwkJY2ZnID0gMiA8PCAyNDsKKwkJbWFza1swXSA9IDB4 RjsKKwkJYnJlYWs7CisJY2FzZSAxMjg6CisJCWNmZyA9IDMgPDwgMjQ7CisJCW1hc2tbMF0gPSAw eEZGOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlCVUcoKTsKKwl9CisKKwljZmcgfD0gbmVhcmx5 X2VtcHR5X3dhdGVybWFyayA8PCAyNjsKKwljZmcgfD0gbmVhcmx5X2Z1bGxfd2F0ZXJtYXJrIDw8 IDI5OworCWxlbiAvPSAxNjsgLyogaW4gMTYtZHdvcmRzOiAxLCAyLCA0IG9yIDggKi8KKwltYXNr WzFdID0gbWFza1syXSA9IG1hc2tbM10gPSAwOworCisJQlVHX09OKF9fcmF3X3JlYWRsKCZxbWdy X3JlZ3MtPnNyYW1bcXVldWVdKSk7CisKKwl3aGlsZSAoMSkgeworCQlpZiAoISh1c2VkX3NyYW1f Yml0bWFwWzBdICYgbWFza1swXSkgJiYKKwkJICAgICEodXNlZF9zcmFtX2JpdG1hcFsxXSAmIG1h c2tbMV0pICYmCisJCSAgICAhKHVzZWRfc3JhbV9iaXRtYXBbMl0gJiBtYXNrWzJdKSAmJgorCQkg ICAgISh1c2VkX3NyYW1fYml0bWFwWzNdICYgbWFza1szXSkpCisJCQlicmVhazsgLyogZm91bmQg ZnJlZSBzcGFjZSAqLworCisJCWFkZHIrKzsKKwkJc2hpZnRfbWFzayhtYXNrKTsKKwkJaWYgKGFk ZHIgKyBsZW4gPiBBUlJBWV9TSVpFKHFtZ3JfcmVncy0+c3JhbSkpIHsKKwkJCWZwcmludGYoc3Rk ZXJyLCAicW1ncjogbm8gZnJlZSBTUkFNIHNwYWNlIGZvciIKKwkJCQkiIHF1ZXVlICVpXG4iLCBx dWV1ZSk7CisJCQlCVUcoKTsKKwkJfQorCX0KKworCXVzZWRfc3JhbV9iaXRtYXBbMF0gfD0gbWFz a1swXTsKKwl1c2VkX3NyYW1fYml0bWFwWzFdIHw9IG1hc2tbMV07CisJdXNlZF9zcmFtX2JpdG1h cFsyXSB8PSBtYXNrWzJdOworCXVzZWRfc3JhbV9iaXRtYXBbM10gfD0gbWFza1szXTsKKwlfX3Jh d193cml0ZWwoY2ZnIHwgKGFkZHIgPDwgMTQpLCAmcW1ncl9yZWdzLT5zcmFtW3F1ZXVlXSk7Cisj aWYgREVCVUdfUU1HUgorCS8qIG5vIHNucHJpbnRmKCkgKi8KKwlzcHJpbnRmKHFtZ3JfcXVldWVf ZGVzY3NbcXVldWVdLCBkZXNjX2Zvcm1hdCwgbmFtZSk7CisJZnByaW50ZihzdGRlcnIsICJxbWdy OiByZXF1ZXN0ZWQgcXVldWUgJXMoJWkpIGFkZHIgPSAweCUwMlhcbiIsCisJCXFtZ3JfcXVldWVf ZGVzY3NbcXVldWVdLCBxdWV1ZSwgYWRkcik7CisjZW5kaWYKK30KKwordm9pZCBxbWdyX3JlbGVh c2VfcXVldWUodW5zaWduZWQgaW50IHF1ZXVlKQoreworCXUzMiBjZmcsIGFkZHIsIG1hc2tbNF07 CisKKwlCVUdfT04ocXVldWUgPj0gSEFMRl9RVUVVRVMpOyAvKiBub3QgaW4gdmFsaWQgcmFuZ2Ug Ki8KKworCWNmZyA9IF9fcmF3X3JlYWRsKCZxbWdyX3JlZ3MtPnNyYW1bcXVldWVdKTsKKwlhZGRy ID0gKGNmZyA+PiAxNCkgJiAweEZGOworCisJQlVHX09OKCFhZGRyKTsgLyogbm90IHJlcXVlc3Rl ZCAqLworCisJc3dpdGNoICgoY2ZnID4+IDI0KSAmIDMpIHsKKwljYXNlIDA6IG1hc2tbMF0gPSAw eDE7IGJyZWFrOworCWNhc2UgMTogbWFza1swXSA9IDB4MzsgYnJlYWs7CisJY2FzZSAyOiBtYXNr WzBdID0gMHhGOyBicmVhazsKKwljYXNlIDM6IG1hc2tbMF0gPSAweEZGOyBicmVhazsKKwl9CisK KwltYXNrWzFdID0gbWFza1syXSA9IG1hc2tbM10gPSAwOworCisJd2hpbGUgKGFkZHItLSkKKwkJ c2hpZnRfbWFzayhtYXNrKTsKKworI2lmIERFQlVHX1FNR1IKKwlmcHJpbnRmKHN0ZGVyciwgInFt Z3I6IHJlbGVhc2luZyBxdWV1ZSAlcyglaSlcbiIsCisJCXFtZ3JfcXVldWVfZGVzY3NbcXVldWVd LCBxdWV1ZSk7CisJcW1ncl9xdWV1ZV9kZXNjc1txdWV1ZV1bMF0gPSAnXHgwJzsKKyNlbmRpZgor CV9fcmF3X3dyaXRlbCgwLCAmcW1ncl9yZWdzLT5zcmFtW3F1ZXVlXSk7CisKKwl1c2VkX3NyYW1f Yml0bWFwWzBdICY9IH5tYXNrWzBdOworCXVzZWRfc3JhbV9iaXRtYXBbMV0gJj0gfm1hc2tbMV07 CisJdXNlZF9zcmFtX2JpdG1hcFsyXSAmPSB+bWFza1syXTsKKwl1c2VkX3NyYW1fYml0bWFwWzNd ICY9IH5tYXNrWzNdOworI2lmZGVmIENPTkZJR19VU0VfSVJRCisJaXJxX2hhbmRsZXJzW3F1ZXVl XSA9IE5VTEw7IC8qIGNhdGNoIElSUSBidWdzICovCisjZW5kaWYKKworCXdoaWxlICgoYWRkciA9 IHFtZ3JfZ2V0X2VudHJ5KHF1ZXVlKSkpCisJCWZwcmludGYoc3RkZXJyLCAicW1ncjogcmVsZWFz ZWQgcXVldWUgJWkgbm90IGVtcHR5OiAweCUwOFhcbiIsCisJCQlxdWV1ZSwgYWRkcik7Cit9CisK K3N0YXRpYyBpbnQgX19pbml0IHFtZ3JfaW5pdCh2b2lkKQoreworCWludCBpOworI2lmZGVmIENP TkZJR19VU0VfSVJRCisJaW50ZXJydXB0X2hhbmRsZXJfdCAqaGFuZGxlcjsKKyNlbmRpZgorCisJ LyogcmVzZXQgcW1nciByZWdpc3RlcnMgKi8KKwlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CisJ CV9fcmF3X3dyaXRlbCgweDMzMzMzMzMzLCAmcW1ncl9yZWdzLT5zdGF0MVtpXSk7CisJCV9fcmF3 X3dyaXRlbCgwLCAmcW1ncl9yZWdzLT5pcnFzcmNbaV0pOworCX0KKwlmb3IgKGkgPSAwOyBpIDwg MjsgaSsrKSB7CisJCV9fcmF3X3dyaXRlbCgwLCAmcW1ncl9yZWdzLT5zdGF0MltpXSk7CisJCV9f cmF3X3dyaXRlbCgweEZGRkZGRkZGLCAmcW1ncl9yZWdzLT5pcnFzdGF0W2ldKTsgLyogY2xlYXIg Ki8KKwkJX19yYXdfd3JpdGVsKDAsICZxbWdyX3JlZ3MtPmlycWVuW2ldKTsKKwl9CisKKwlfX3Jh d193cml0ZWwoMHhGRkZGRkZGRiwgJnFtZ3JfcmVncy0+c3RhdG5lX2gpOworCV9fcmF3X3dyaXRl bCgwLCAmcW1ncl9yZWdzLT5zdGF0Zl9oKTsKKworCWZvciAoaSA9IDA7IGkgPCBRVUVVRVM7IGkr KykKKwkJX19yYXdfd3JpdGVsKDAsICZxbWdyX3JlZ3MtPnNyYW1baV0pOworCisjaWZkZWYgQ09O RklHX1VTRV9JUlEKKwlpZiAoY3B1X2lzX2l4cDQyeF9yZXZfYTAoKSkKKwkJaGFuZGxlciA9IHFt Z3JfaXJxMV9hMDsKKwllbHNlCisJCWhhbmRsZXIgPSBxbWdyX2lycTE7CisKKwlpcnFfaW5zdGFs bF9oYW5kbGVyKElYUDQyNV9RTTFfSVJRLCBoYW5kbGVyLCBOVUxMKTsKKyNlbmRpZgorCXVzZWRf c3JhbV9iaXRtYXBbMF0gPSAweEY7IC8qIDQgZmlyc3QgcGFnZXMgcmVzZXJ2ZWQgZm9yIGNvbmZp ZyAqLworCXJldHVybiAwOworfQorCitjb3JlZGV2aWNlX2luaXRjYWxsKHFtZ3JfaW5pdCk7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL25ldC9LY29uZmlnIGIvZHJpdmVycy9uZXQvS2NvbmZpZwppbmRl eCA2OWYzMzUyLi5kZjZlNDJjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9LY29uZmlnCisrKyBi L2RyaXZlcnMvbmV0L0tjb25maWcKQEAgLTc3LDYgKzc3LDE0IEBAIGNvbmZpZyBEUklWRVJfTkVU X01BQ0IKIAlkZXBlbmRzIG9uIEhBU19NQUNCCiAJc2VsZWN0IE1JSURFVgogCitjb25maWcgRFJJ VkVSX05FVF9JWFA0WFhfRVRICisJdHJpc3RhdGUgIkludGVsIElYUDR4eCBFdGhlcm5ldCBzdXBw b3J0IgorCWRlcGVuZHMgb24gQVJDSF9JWFA0WFggJiYgSVhQNFhYX05QRSAmJiBJWFA0WFhfUU1H UgorCXNlbGVjdCBNSUlERVYKKwloZWxwCisJICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVz ZSBidWlsdC1pbiBFdGhlcm5ldCBwb3J0cworCSAgb24gSVhQNHh4IHByb2Nlc3Nvci4KKwogY29u ZmlnIERSSVZFUl9ORVRfVEFQCiAJYm9vbCAidGFwIEV0aGVybmV0IGRyaXZlciIKIAlkZXBlbmRz IG9uIExJTlVYCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0 L01ha2VmaWxlCmluZGV4IDk2ZDNkMzIuLjk3Y2I0NGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0 L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvbmV0L01ha2VmaWxlCkBAIC0xMSwzICsxMSw0IEBAIG9i ai0kKENPTkZJR19EUklWRVJfTkVUX01BQ0IpCQkrPSBtYWNiLm8KIG9iai0kKENPTkZJR19EUklW RVJfTkVUX1RBUCkJCSs9IHRhcC5vCiBvYmotJChDT05GSUdfTUlJREVWKQkJCSs9IG1paWRldi5v CiBvYmotJChDT05GSUdfTkVUX1VTQikJCQkrPSB1c2IvCitvYmotJChDT05GSUdfRFJJVkVSX05F VF9JWFA0WFhfRVRIKQkrPSBpeHA0eHhfZXRoLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2l4 cDR4eF9ldGguYyBiL2RyaXZlcnMvbmV0L2l4cDR4eF9ldGguYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi43MWU2ZDkyCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9uZXQv aXhwNHh4X2V0aC5jCkBAIC0wLDAgKzEsNzYzIEBACisvKgorICogSW50ZWwgSVhQNHh4IEV0aGVy bmV0IGRyaXZlciBmb3IgTGludXgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgS3J6eXN6dG9m IEhhbGFzYSA8a2hjQHBtLndhdy5wbD4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIg dGhlIHRlcm1zIG9mIHZlcnNpb24gMiBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK KyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAq IEV0aGVybmV0IHBvcnQgY29uZmlnICgweDAwIGlzIG5vdCBwcmVzZW50IG9uIElYUDQyWCk6Cisg KgorICogbG9naWNhbCBwb3J0CQkweDAwCQkweDEwCQkweDIwCisgKiBOUEUJCQkwIChOUEUtQSkJ MSAoTlBFLUIpCTIgKE5QRS1DKQorICogcGh5c2ljYWwgcG9ydAkyCQkwCQkxCisgKiBSWCBxdWV1 ZSAodmFyaWFibGUpCTIwCQkyMQkJMjIKKyAqIFRYIHF1ZXVlCQkyMwkJMjQJCTI1CisgKiBSWC1m cmVlIHF1ZXVlCTI2CQkyNwkJMjgKKyAqIFRYLWRvbmUgcXVldWUgaXMgYWx3YXlzIDMxLCBwZXIt cG9ydCBSWCBxdWV1ZSBpcyBjb25maWd1cmFibGUKKyAqCisgKgorICogUXVldWUgZW50cmllczoK KyAqIGJpdHMgMCAtPiAxICAtIE5QRSBJRCAoUlggYW5kIFRYLWRvbmUpCisgKiBiaXRzIDAgLT4g MiAgLSBwcmlvcml0eSAoVFgsIHBlciA4MDIuMUQpCisgKiBiaXRzIDMgLT4gNCAgLSBwb3J0IElE ICh1c2VyLXNldD8pCisgKiBiaXRzIDUgLT4gMzEgLSBwaHlzaWNhbCBkZXNjcmlwdG9yIGFkZHJl c3MKKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8aW5pdC5oPgorI2luY2x1 ZGUgPG1hbGxvYy5oPgorI2luY2x1ZGUgPG1paWRldi5oPgorI2luY2x1ZGUgPG5ldC5oPgorI2lu Y2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8bWFjaC9peHA0eHgtcmVncy5oPgorI2luY2x1ZGUg PG1hY2gvcGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxtYWNoL2NwdS5oPgorI2luY2x1ZGUgPG1hY2gv bnBlLmg+CisjaW5jbHVkZSA8bWFjaC9xbWdyLmg+CisKKyNkZWZpbmUgREVCVUdfREVTQwkJMAor I2RlZmluZSBERUJVR19SWAkJMAorI2RlZmluZSBERUJVR19UWAkJMAorI2RlZmluZSBERUJVR19Q S1RfQllURVMJCTAKKyNkZWZpbmUgREVCVUdfTURJTwkJMAorI2RlZmluZSBERUJVR19PUEVOCQkw CisjZGVmaW5lIERFQlVHX0NMT1NFCQkwCisKKyNkZWZpbmUgUlhfREVTQ1MJCTE2IC8qIGFsc28g bGVuZ3RoIG9mIGFsbCBSWCBxdWV1ZXMgKi8KKyNkZWZpbmUgVFhfREVTQ1MJCTE2IC8qIGFsc28g bGVuZ3RoIG9mIGFsbCBUWCBxdWV1ZXMgKi8KKyNkZWZpbmUgVFhET05FX1FVRVVFX0xFTgkxNiAv KiBkd29yZHMgKi8KKworI2RlZmluZSBNQVhfTVJVCQkJMTUzNiAvKiAweDYwMCAqLworI2RlZmlu ZSBSWF9CVUZGX1NJWkUJCU1BWF9NUlUKKworI2RlZmluZSBNQVhfTURJT19SRVRSSUVTCTEwMCAv KiBtaWNyb3NlY29uZHMsIHR5cGljYWxseSAzMCBjeWNsZXMgKi8KKyNkZWZpbmUgTUFYX0NMT1NF X1dBSVQJCTEwMDAgLyogbWljcm9zZWNvbmRzLCB0eXBpY2FsbHkgMi0zIGN5Y2xlcyAqLworI2Rl ZmluZSBFVEhfQUxFTgkJNgorCisjZGVmaW5lIFBIWVNJQ0FMX0lEKHBvcnQpCSgoKHBvcnQpLT5u cGUtPmlkICsgMikgJSAzKQorI2RlZmluZSBMT0dJQ0FMX0lEKHBvcnQpCSgocG9ydCktPm5wZS0+ aWQgPDwgNCkKKyNkZWZpbmUgUlhfUVVFVUUocG9ydCkJCSgocG9ydCktPm5wZS0+aWQgKyAyMCkg LyogY2FuIGJlIGNoYW5nZWQgKi8KKyNkZWZpbmUgVFhfUVVFVUUocG9ydCkJCSgocG9ydCktPm5w ZS0+aWQgKyAyMykKKyNkZWZpbmUgUlhGUkVFX1FVRVVFKHBvcnQpCSgocG9ydCktPm5wZS0+aWQg KyAyNikKKyNkZWZpbmUgVFhET05FX1FVRVVFCQkzMQorCisvKiBUWCBDb250cm9sIFJlZ2lzdGVy cyAqLworI2RlZmluZSBUWF9DTlRSTDBfVFhfRU4JCTB4MDEKKyNkZWZpbmUgVFhfQ05UUkwwX0hB TEZEVVBMRVgJMHgwMgorI2RlZmluZSBUWF9DTlRSTDBfUkVUUlkJCTB4MDQKKyNkZWZpbmUgVFhf Q05UUkwwX1BBRF9FTgkweDA4CisjZGVmaW5lIFRYX0NOVFJMMF9BUFBFTkRfRkNTCTB4MTAKKyNk ZWZpbmUgVFhfQ05UUkwwXzJERUZFUgkweDIwCisjZGVmaW5lIFRYX0NOVFJMMF9STUlJCQkweDQw IC8qIHJlZHVjZWQgTUlJICovCisjZGVmaW5lIFRYX0NOVFJMMV9SRVRSSUVTCTB4MEYgLyogNCBi aXRzICovCisKKy8qIFJYIENvbnRyb2wgUmVnaXN0ZXJzICovCisjZGVmaW5lIFJYX0NOVFJMMF9S WF9FTgkJMHgwMQorI2RlZmluZSBSWF9DTlRSTDBfUEFEU1RSSVBfRU4JMHgwMgorI2RlZmluZSBS WF9DTlRSTDBfU0VORF9GQ1MJMHgwNAorI2RlZmluZSBSWF9DTlRSTDBfUEFVU0VfRU4JMHgwOAor I2RlZmluZSBSWF9DTlRSTDBfTE9PUF9FTgkweDEwCisjZGVmaW5lIFJYX0NOVFJMMF9BRERSX0ZM VFJfRU4JMHgyMAorI2RlZmluZSBSWF9DTlRSTDBfUlhfUlVOVF9FTgkweDQwCisjZGVmaW5lIFJY X0NOVFJMMF9CQ0FTVF9ESVMJMHg4MAorI2RlZmluZSBSWF9DTlRSTDFfREVGRVJfRU4JMHgwMQor CisvKiBDb3JlIENvbnRyb2wgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgQ09SRV9SRVNFVAkJMHgwMQor I2RlZmluZSBDT1JFX1JYX0ZJRk9fRkxVU0gJMHgwMgorI2RlZmluZSBDT1JFX1RYX0ZJRk9fRkxV U0gJMHgwNAorI2RlZmluZSBDT1JFX1NFTkRfSkFNCQkweDA4CisjZGVmaW5lIENPUkVfTURDX0VO CQkweDEwIC8qIE1ESU8gdXNpbmcgTlBFLUIgRVRILTAgb25seSAqLworCisjZGVmaW5lIERFRkFV TFRfVFhfQ05UUkwwCShUWF9DTlRSTDBfVFhfRU4gfCBUWF9DTlRSTDBfUkVUUlkgfCAgICAgICBc CisJCQkJIFRYX0NOVFJMMF9QQURfRU4gfCBUWF9DTlRSTDBfQVBQRU5EX0ZDUyB8IFwKKwkJCQkg VFhfQ05UUkwwXzJERUZFUikKKyNkZWZpbmUgREVGQVVMVF9SWF9DTlRSTDAJUlhfQ05UUkwwX1JY X0VOCisjZGVmaW5lIERFRkFVTFRfQ09SRV9DTlRSTAlDT1JFX01EQ19FTgorCisKKy8qIE5QRSBt ZXNzYWdlIGNvZGVzICovCisjZGVmaW5lIE5QRV9HRVRTVEFUVVMJCQkgMHgwMAorI2RlZmluZSBO UEVfRURCX1NFVFBPUlRBRERSRVNTCQkgMHgwMQorI2RlZmluZSBOUEVfRURCX0dFVE1BQ0FERFJF U1NEQVRBQkFTRQkgMHgwMgorI2RlZmluZSBOUEVfRURCX1NFVE1BQ0FERFJFU1NTREFUQUJBU0UJ IDB4MDMKKyNkZWZpbmUgTlBFX0dFVFNUQVRTCQkJIDB4MDQKKyNkZWZpbmUgTlBFX1JFU0VUU1RB VFMJCQkgMHgwNQorI2RlZmluZSBOUEVfU0VUTUFYRlJBTUVMRU5HVEhTCQkgMHgwNgorI2RlZmlu ZSBOUEVfVkxBTl9TRVRSWFRBR01PREUJCSAweDA3CisjZGVmaW5lIE5QRV9WTEFOX1NFVERFRkFV TFRSWFZJRAkgMHgwOAorI2RlZmluZSBOUEVfVkxBTl9TRVRQT1JUVkxBTlRBQkxFRU5UUlkJIDB4 MDkKKyNkZWZpbmUgTlBFX1ZMQU5fU0VUUE9SVFZMQU5UQUJMRVJBTkdFCSAweDBBCisjZGVmaW5l IE5QRV9WTEFOX1NFVFJYUU9TRU5UUlkJCSAweDBCCisjZGVmaW5lIE5QRV9WTEFOX1NFVFBPUlRJ REVYVFJBQ1RJT05NT0RFIDB4MEMKKyNkZWZpbmUgTlBFX1NUUF9TRVRCTE9DS0lOR1NUQVRFCSAw eDBECisjZGVmaW5lIE5QRV9GV19TRVRGSVJFV0FMTE1PREUJCSAweDBFCisjZGVmaW5lIE5QRV9Q Q19TRVRGUkFNRUNPTlRST0xEVVJBVElPTklEIDB4MEYKKyNkZWZpbmUgTlBFX1BDX1NFVEFQTUFD VEFCTEUJCSAweDExCisjZGVmaW5lIE5QRV9TRVRMT09QQkFDS19NT0RFCQkgMHgxMgorI2RlZmlu ZSBOUEVfUENfU0VUQlNTSURUQUJMRQkJIDB4MTMKKyNkZWZpbmUgTlBFX0FERFJFU1NfRklMVEVS X0NPTkZJRwkgMHgxNAorI2RlZmluZSBOUEVfQVBQRU5ERkNTQ09ORklHCQkgMHgxNQorI2RlZmlu ZSBOUEVfTk9USUZZX01BQ19SRUNPVkVSWV9ET05FCSAweDE2CisjZGVmaW5lIE5QRV9NQUNfUkVD T1ZFUllfU1RBUlQJCSAweDE3CisKK3N0cnVjdCBldGhfcmVncyB7CisJdTMyIHR4X2NvbnRyb2xb Ml0sIF9fcmVzMVsyXTsJCSAvKiAwMDAgKi8KKwl1MzIgcnhfY29udHJvbFsyXSwgX19yZXMyWzJd OwkJIC8qIDAxMCAqLworCXUzMiByYW5kb21fc2VlZCwgX19yZXMzWzNdOwkJIC8qIDAyMCAqLwor CXUzMiBwYXJ0aWFsX2VtcHR5X3RocmVzaG9sZCwgX19yZXM0OwkgLyogMDMwICovCisJdTMyIHBh cnRpYWxfZnVsbF90aHJlc2hvbGQsIF9fcmVzNTsJIC8qIDAzOCAqLworCXUzMiB0eF9zdGFydF9i eXRlcywgX19yZXM2WzNdOwkJIC8qIDA0MCAqLworCXUzMiB0eF9kZWZlcnJhbCwgcnhfZGVmZXJy YWwsIF9fcmVzN1syXTsgLyogMDUwICovCisJdTMyIHR4XzJwYXJ0X2RlZmVycmFsWzJdLCBfX3Jl czhbMl07CSAvKiAwNjAgKi8KKwl1MzIgc2xvdF90aW1lLCBfX3JlczlbM107CQkgLyogMDcwICov CisJdTMyIG1kaW9fY29tbWFuZFs0XTsJCQkgLyogMDgwICovCisJdTMyIG1kaW9fc3RhdHVzWzRd OwkJCSAvKiAwOTAgKi8KKwl1MzIgbWNhc3RfbWFza1s2XSwgX19yZXMxMFsyXTsJCSAvKiAwQTAg Ki8KKwl1MzIgbWNhc3RfYWRkcls2XSwgX19yZXMxMVsyXTsJCSAvKiAwQzAgKi8KKwl1MzIgaW50 X2Nsb2NrX3RocmVzaG9sZCwgX19yZXMxMlszXTsJIC8qIDBFMCAqLworCXUzMiBod19hZGRyWzZd LCBfX3JlczEzWzYxXTsJCSAvKiAwRjAgKi8KKwl1MzIgY29yZV9jb250cm9sOwkJCSAvKiAxRkMg Ki8KK307CisKKy8qIE5QRSBtZXNzYWdlIHN0cnVjdHVyZSAqLworc3RydWN0IG1zZyB7CisJdTgg Y21kLCBldGhfaWQsIHBhcmFtc1s2XTsKK307CisKKy8qIEV0aGVybmV0IHBhY2tldCBkZXNjcmlw dG9yLCAzMiBieXRlcyAqLworc3RydWN0IGRlc2MgeworCXU4ICpuZXh0OyAgICAvKiBwb2ludGVy IHRvIG5leHQgYnVmZmVyLCB1bnVzZWQgKi8KKworCXUxNiBidWZfbGVuOyAvKiBidWZmZXIgbGVu Z3RoICovCisJdTE2IHBrdF9sZW47IC8qIHBhY2tldCBsZW5ndGggKi8KKwl1OCAqZGF0YTsgICAg LyogcG9pbnRlciB0byBkYXRhIGJ1ZmZlciBpbiBSQU0gKi8KKwl1OCBkZXN0X2lkOworCXU4IHNy Y19pZDsKKwl1MTYgZmxhZ3M7CisJdTggcW9zOworCXU4IHBhZGxlbjsKKwl1MTYgdmxhbl90Y2k7 CisKKwl1OCBkc3RfbWFjW0VUSF9BTEVOXSwgc3JjX21hY1tFVEhfQUxFTl07Cit9OworCitzdHJ1 Y3QgcG9ydCB7CisJc3RydWN0IGRlc2MgcnhfZGVzY190YWJbUlhfREVTQ1NdOyAvKiBhbGlnbm1l bnQ6IDB4MTAgKi8KKwlzdHJ1Y3QgZGVzYyB0eF9kZXNjX3RhYltUWF9ERVNDU107CisJdTggKmJ1 ZmZfdGFiOworCXN0cnVjdCBldGhfcmVncyAqcmVnczsKKwlzdHJ1Y3QgbnBlICpucGU7CisJdTgg ZmlybXdhcmVbNF07CisJc3RydWN0IGV0aF9wbGF0X2luZm8gKnBpbmZvOworCXN0cnVjdCBtaWlf ZGV2aWNlIG1paWRldjsKKwlzdHJ1Y3QgZXRoX2RldmljZSBldGg7Cit9OworCisjZGVmaW5lIHJ4 X2J1ZmYocG9ydCwgbikgKChwb3J0KS0+YnVmZl90YWIgKyBNQVhfTVJVICogKG4pKQorI2RlZmlu ZSB0eF9idWZmKHBvcnQsIG4pICgocG9ydCktPmJ1ZmZfdGFiICsgTUFYX01SVSAqIChSWF9ERVND UyArIChuKSkpCisKK3N0YXRpYyBzdHJ1Y3QgZXRoX3JlZ3MgKm1kaW9fcmVnczsgLyogbWRpbyBj b21tYW5kIGFuZCBzdGF0dXMgb25seSAqLworCitzdGF0aWMgaW50IGl4cDR4eF9tZGlvX2NtZChp bnQgd3JpdGUsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZCAqZGV2LCB1bnNpZ25lZCBjaGFyIHBoeV9p ZCwKKwkJCSAgIHVuc2lnbmVkIGNoYXIgbG9jYXRpb24sIHVuc2lnbmVkIHNob3J0IHZhbHVlKQor eworCWludCBjeWNsZXMgPSAwOworCisJaWYgKF9fcmF3X3JlYWRsKCZtZGlvX3JlZ3MtPm1kaW9f Y29tbWFuZFszXSkgJiAweDgwKSB7CisJCWZwcmludGYoc3RkZXJyLCAiJXMlZDogTUlJIG5vdCBy ZWFkeSB0byB0cmFuc21pdFxuIiwgZGV2LT5uYW1lLCBkZXYtPmlkKTsKKwkJcmV0dXJuIC0xOwor CX0KKworCWlmICh3cml0ZSkgeworCQlfX3Jhd193cml0ZWwodmFsdWUgJiAweEZGLCAmbWRpb19y ZWdzLT5tZGlvX2NvbW1hbmRbMF0pOworCQlfX3Jhd193cml0ZWwodmFsdWUgPj4gOCwgJm1kaW9f cmVncy0+bWRpb19jb21tYW5kWzFdKTsKKwl9CisJX19yYXdfd3JpdGVsKCgocGh5X2lkIDw8IDUp IHwgbG9jYXRpb24pICYgMHhGRiwKKwkJICAgICAmbWRpb19yZWdzLT5tZGlvX2NvbW1hbmRbMl0p OworCV9fcmF3X3dyaXRlbCgocGh5X2lkID4+IDMpIHwgKHdyaXRlIDw8IDIpIHwgMHg4MCAvKiBH TyAqLywKKwkJICAgICAmbWRpb19yZWdzLT5tZGlvX2NvbW1hbmRbM10pOworCisJd2hpbGUgKChj eWNsZXMgPCBNQVhfTURJT19SRVRSSUVTKSAmJgorCSAgICAgICAoX19yYXdfcmVhZGwoJm1kaW9f cmVncy0+bWRpb19jb21tYW5kWzNdKSAmIDB4ODApKSB7CisJCXVkZWxheSgxKTsKKwkJY3ljbGVz Kys7CisJfQorCisJaWYgKGN5Y2xlcyA9PSBNQVhfTURJT19SRVRSSUVTKSB7CisJCWZwcmludGYo c3RkZXJyLCAiJXMlZDogTUlJIHdyaXRlIGZhaWxlZFxuIiwgZGV2LT5uYW1lLCBkZXYtPmlkKTsK KwkJcmV0dXJuIC0xOworCX0KKworI2lmIERFQlVHX01ESU8KKwlmcHJpbnRmKHN0ZGVyciwgIiVz JWQ6IG1kaW9fJXMoKSB0b29rICVpIGN5Y2xlc1xuIiwgZGV2LT5uYW1lLCBkZXYtPmlkLAorCQl3 cml0ZSA/ICJ3cml0ZSIgOiAicmVhZCIsIGN5Y2xlcyk7CisjZW5kaWYKKworCWlmICh3cml0ZSkK KwkJcmV0dXJuIDA7CisKKwlpZiAoX19yYXdfcmVhZGwoJm1kaW9fcmVncy0+bWRpb19zdGF0dXNb M10pICYgMHg4MCkgeworI2lmIERFQlVHX01ESU8KKwkJZnByaW50ZihzdGRlcnIsICIlcyVkOiBN SUkgcmVhZCBmYWlsZWRcbiIsIGRldi0+bmFtZSwgZGV2LT5pZCk7CisjZW5kaWYKKwkJcmV0dXJu IC0xOworCX0KKworCXZhbHVlID0gKF9fcmF3X3JlYWRsKCZtZGlvX3JlZ3MtPm1kaW9fc3RhdHVz WzBdKSAmIDB4RkYpIHwKKwkJKChfX3Jhd19yZWFkbCgmbWRpb19yZWdzLT5tZGlvX3N0YXR1c1sx XSkgJiAweEZGKSA8PCA4KTsKKyNpZiBERUJVR19NRElPCisJZnByaW50ZihzdGRlcnIsICIlcyVk OiBNSUkgcmVhZCBbJWldIC0+IDB4JVhcbiIsIGRldi0+bmFtZSwgZGV2LT5pZCwgbG9jYXRpb24s IHZhbHVlKTsKKyNlbmRpZgorCisJcmV0dXJuIHZhbHVlOworfQorCitzdGF0aWMgaW50IGl4cDR4 eF9tZGlvX3JlYWQoc3RydWN0IG1paV9kZXZpY2UgKm1paSwgaW50IHBoeV9pZCwgaW50IGxvY2F0 aW9uKQoreworCWludCByZXQgPSBpeHA0eHhfbWRpb19jbWQoMCwgJm1paS0+ZGV2LCBwaHlfaWQs IGxvY2F0aW9uLCAwKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGl4cDR4eF9tZGlv X3dyaXRlKHN0cnVjdCBtaWlfZGV2aWNlICptaWksIGludCBwaHlfaWQsIGludCBsb2NhdGlvbiwg aW50IHZhbHVlKQoreworCWludCByZXQgPSBpeHA0eHhfbWRpb19jbWQoMSwgJm1paS0+ZGV2LCBw aHlfaWQsIGxvY2F0aW9uLCB2YWx1ZSk7CisjaWYgREVCVUdfTURJTworCWZwcmludGYoc3RkZXJy LCAiJXMlZDogTUlJIHdyaXRlIFslaV0gPC0gMHglWCwgZXJyID0gJWlcbiIsCisJCW1paS0+ZGV2 Lm5hbWUsIG1paS0+ZGV2LmlkLCBsb2NhdGlvbiwgdmFsdWUsIHJldCk7CisjZW5kaWYKKwlyZXR1 cm4gcmV0OworfQorCitzdGF0aWMgaW50IGl4cDR4eF9hZGp1c3RfbGluayhzdHJ1Y3QgZXRoX2Rl dmljZSAqZGV2KQoreworCXN0cnVjdCBwb3J0ICpwb3J0ID0gZGV2LT5wcml2OworCWludCByZWcs IHNwZWVkLCBkdXBsZXg7CisKKwltaWlkZXZfd2FpdF9hbmVnKCZwb3J0LT5taWlkZXYpOworCisJ cmVnID0gbWlpX3JlYWQoJnBvcnQtPm1paWRldiwgcG9ydC0+bWlpZGV2LmFkZHJlc3MsIE1JSV9C TVNSKTsKKwlpZiAocmVnIDwgMCkKKwkJZ290byBlcnJfb3V0OworCWlmICghKHJlZyAmIEJNU1Jf TFNUQVRVUykpIHsKKwkJcHJpbnRmKCIlcyVkOiBMaW5rIGlzIGRvd24iLCBkZXYtPmRldi5uYW1l LCBkZXYtPmRldi5pZCk7CisJCXJldHVybiAtMTsKKwl9CisKKwlyZWcgPSBtaWlfcmVhZCgmcG9y dC0+bWlpZGV2LCBwb3J0LT5taWlkZXYuYWRkcmVzcywgTUlJX0JNQ1IpOworCWlmIChyZWcgPCAw KQorCQlnb3RvIGVycl9vdXQ7CisKKwlpZiAocmVnICYgQk1DUl9BTkVOQUJMRSkgeworCQlyZWcg PSBtaWlfcmVhZCgmcG9ydC0+bWlpZGV2LCBwb3J0LT5taWlkZXYuYWRkcmVzcywgTUlJX0xQQSk7 CisJCWlmIChyZWcgPCAwKQorCQkJZ290byBlcnJfb3V0OworCQlkdXBsZXggPSByZWcgJiBMUEFf RFVQTEVYOworCQlzcGVlZCA9IHJlZyAmIExQQV8xMDAgPyAxMDAgOiAxMDsKKwl9IGVsc2Ugewor CQlkdXBsZXggPSByZWcgJiBCTUNSX0ZVTExEUExYOworCQlzcGVlZCA9IHJlZyAmIEJNQ1JfU1BF RUQxMDAgPyAxMDAgOiAxMDsKKwl9CisKKwlpZiAoZHVwbGV4KQorCQlfX3Jhd193cml0ZWwoREVG QVVMVF9UWF9DTlRSTDAgJiB+VFhfQ05UUkwwX0hBTEZEVVBMRVgsCisJCQkgICAgICZwb3J0LT5y ZWdzLT50eF9jb250cm9sWzBdKTsKKwllbHNlCisJCV9fcmF3X3dyaXRlbChERUZBVUxUX1RYX0NO VFJMMCB8IFRYX0NOVFJMMF9IQUxGRFVQTEVYLAorCQkJICAgICAmcG9ydC0+cmVncy0+dHhfY29u dHJvbFswXSk7CisKKwlmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6IGxpbmsgdXAsIHNwZWVkICV1IE1i L3MsICVzIGR1cGxleFxuIiwKKwkJZGV2LT5kZXYubmFtZSwgZGV2LT5kZXYuaWQsIHNwZWVkLCBk dXBsZXggPyAiZnVsbCIgOiAiaGFsZiIpOworCXJldHVybiAwOworCitlcnJfb3V0OgorCXByaW50 ZigiJXMlZDogZmFpbGVkIHRvIHJlYWQgTUlJIGRhdGFcbiIsIGRldi0+ZGV2Lm5hbWUsIGRldi0+ ZGV2LmlkKTsKKwlyZXR1cm4gLUVJTzsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGRlYnVnX3Br dChzdHJ1Y3QgZXRoX2RldmljZSAqZGV2LCBjb25zdCBjaGFyICpmdW5jLAorCQkJICAgICB1OCAq ZGF0YSwgaW50IGxlbikKK3sKKyNpZiBERUJVR19QS1RfQllURVMKKwlpbnQgaTsKKworCWZwcmlu dGYoc3RkZXJyLCAiJXMlZDogJXMoJTRpKSAiLCBkZXYtPmRldi5uYW1lLCBkZXYtPmRldi5pZCwg ZnVuYywgbGVuKTsKKwlmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKwkJaWYgKGkgPj0gREVC VUdfUEtUX0JZVEVTKQorCQkJYnJlYWs7CisJCWZwcmludGYoc3RkZXJyLCAiJXMlMDJYIiwKKwkJ CSgoaSA9PSA2KSB8fCAoaSA9PSAxMikgfHwgKGkgPj0gMTQpKSA/ICIgIiA6ICIiLAorCQkJZGF0 YVtpXSk7CisJfQorCWZwcmludGYoc3RkZXJyLCAiXG4iKTsKKyNlbmRpZgorfQorCisKK3N0YXRp YyBpbmxpbmUgdm9pZCBkZWJ1Z19kZXNjKHN0cnVjdCBkZXNjICpkZXNjKQoreworI2lmIERFQlVH X0RFU0MKKwlmcHJpbnRmKHN0ZGVyciwgIiUwN1g6ICVYICUzWCAlM1ggJTA3WCAlMlggPCAlMlgg JTRYICVYIgorCQkiICVYICVYICUwMlglMDJYJTAyWCUwMlglMDJYJTAyWCA8ICUwMlglMDJYJTAy WCUwMlglMDJYJTAyWFxuIiwKKwkJKHUzMilkZXNjLCAodTMyKWRlc2MtPm5leHQsIGRlc2MtPmJ1 Zl9sZW4sIGRlc2MtPnBrdF9sZW4sCisJCSh1MzIpZGVzYy0+ZGF0YSwgZGVzYy0+ZGVzdF9pZCwg ZGVzYy0+c3JjX2lkLCBkZXNjLT5mbGFncywKKwkJZGVzYy0+cW9zLCBkZXNjLT5wYWRsZW4sIGRl c2MtPnZsYW5fdGNpLAorCQlkZXNjLT5kc3RfbWFjWzBdLCBkZXNjLT5kc3RfbWFjWzFdLCBkZXNj LT5kc3RfbWFjWzJdLAorCQlkZXNjLT5kc3RfbWFjWzNdLCBkZXNjLT5kc3RfbWFjWzRdLCBkZXNj LT5kc3RfbWFjWzVdLAorCQlkZXNjLT5zcmNfbWFjWzBdLCBkZXNjLT5zcmNfbWFjWzFdLCBkZXNj LT5zcmNfbWFjWzJdLAorCQlkZXNjLT5zcmNfbWFjWzNdLCBkZXNjLT5zcmNfbWFjWzRdLCBkZXNj LT5zcmNfbWFjWzVdKTsKKyNlbmRpZgorfQorCitzdGF0aWMgaW5saW5lIGludCBxdWV1ZV9nZXRf ZGVzYyh1bnNpZ25lZCBpbnQgcXVldWUsIHN0cnVjdCBwb3J0ICpwb3J0LAorCQkJCSBpbnQgaXNf dHgpCit7CisJdTMyIGFkZHIsIG47CisJc3RydWN0IGRlc2MgKnRhYjsKKworCWlmICghKGFkZHIg PSBxbWdyX2dldF9lbnRyeShxdWV1ZSkpKQorCQlyZXR1cm4gLTE7CisKKwlhZGRyICY9IH4weDFG OyAvKiBtYXNrIG91dCBub24tYWRkcmVzcyBiaXRzICovCisJdGFiID0gaXNfdHggPyBwb3J0LT50 eF9kZXNjX3RhYiA6IHBvcnQtPnJ4X2Rlc2NfdGFiOworCW4gPSAoYWRkciAtICh1MzIpdGFiKSAv IHNpemVvZihzdHJ1Y3QgZGVzYyk7CisJQlVHX09OKG4gPj0gKGlzX3R4ID8gVFhfREVTQ1MgOiBS WF9ERVNDUykpOworCWRlYnVnX2Rlc2MoKHN0cnVjdCBkZXNjKilhZGRyKTsKKwlCVUdfT04odGFi W25dLm5leHQpOworCXJldHVybiBuOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgcXVldWVfcHV0 X2Rlc2ModW5zaWduZWQgaW50IHF1ZXVlLCBzdHJ1Y3QgZGVzYyAqZGVzYykKK3sKKwlkZWJ1Z19k ZXNjKGRlc2MpOworCUJVR19PTigoKHUzMilkZXNjKSAmIDB4MUYpOworCXFtZ3JfcHV0X2VudHJ5 KHF1ZXVlLCAodTMyKWRlc2MpOworCS8qIERvbid0IGNoZWNrIGZvciBxdWV1ZSBvdmVyZmxvdyBo ZXJlLCB3ZSd2ZSBhbGxvY2F0ZWQgc3VmZmljaWVudAorCSAgIGxlbmd0aCBhbmQgcXVldWVzID49 IDMyIGRvbid0IHN1cHBvcnQgdGhpcyBjaGVjayBhbnl3YXkuICovCit9CisKKworc3RhdGljIGlu dCBpeHA0eHhfZXRoX3BvbGwoc3RydWN0IGV0aF9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgcG9y dCAqcG9ydCA9IGRldi0+cHJpdjsKKwlzdHJ1Y3QgZGVzYyAqZGVzYzsKKwl1OCAqYnVmZjsKKwlp bnQgbiwgbGVuOworCisjaWYgREVCVUdfUlgKKwlmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6IGV0aF9w b2xsXG4iLCBkZXYtPmRldi5uYW1lLCBkZXYtPmRldi5pZCk7CisjZW5kaWYKKworCWlmICgobiA9 IHF1ZXVlX2dldF9kZXNjKFJYX1FVRVVFKHBvcnQpLCBwb3J0LCAwKSkgPCAwKSB7CisjaWYgREVC VUdfUlgKKwkJZnByaW50ZihzdGRlcnIsICIlcyVkOiBldGhfcG9sbCA9IG5vIHBhY2tldCByZWNl aXZlZFxuIiwgZGV2LT5kZXYubmFtZSwgZGV2LT5kZXYuaWQpOworI2VuZGlmCisJCXJldHVybiAw OworCX0KKworCWJhcnJpZXIoKTsKKwlkZXNjID0gJnBvcnQtPnJ4X2Rlc2NfdGFiW25dOworCWJ1 ZmYgPSByeF9idWZmKHBvcnQsIG4pOworCWxlbiA9IGRlc2MtPnBrdF9sZW47CisJLyogcHJvY2Vz cyByZWNlaXZlZCBmcmFtZSAqLworCW1lbWNweSgodm9pZCAqKU5ldFJ4UGFja2V0c1swXSwgYnVm ZiwgbGVuKTsKKwlkZWJ1Z19wa3QoZGV2LCAiUlgiLCBkZXNjLT5kYXRhLCBsZW4pOworCisJLyog cHV0IHRoZSBuZXcgYnVmZmVyIG9uIFJYLWZyZWUgcXVldWUgKi8KKwlkZXNjLT5idWZfbGVuID0g TUFYX01SVTsKKwlkZXNjLT5wa3RfbGVuID0gMDsKKwlxdWV1ZV9wdXRfZGVzYyhSWEZSRUVfUVVF VUUocG9ydCksIGRlc2MpOworCisJbmV0X3JlY2VpdmUoTmV0UnhQYWNrZXRzWzBdLCBsZW4pOwor CisjaWYgREVCVUdfUlgKKwlmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6IGV0aF9wb2xsIGVuZFxuIiwg ZGV2LT5kZXYubmFtZSwgZGV2LT5kZXYuaWQpOworI2VuZGlmCisJcmV0dXJuIDA7Cit9CisKKwor c3RhdGljIGludCBpeHA0eHhfZXRoX3htaXQoc3RydWN0IGV0aF9kZXZpY2UgKmRldiwgdm9pZCAq ZGF0YSwgaW50IGxlbikKK3sKKwlzdHJ1Y3QgcG9ydCAqcG9ydCA9IGRldi0+cHJpdjsKKwlpbnQg bjsKKwlzdHJ1Y3QgZGVzYyAqZGVzYzsKKworI2lmIERFQlVHX1RYCisJZnByaW50ZihzdGRlcnIs ICIlcyVkOiBldGhfeG1pdFxuIiwgZGV2LT5kZXYubmFtZSwgZGV2LT5kZXYuaWQpOworI2VuZGlm CisKKwlpZiAodW5saWtlbHkobGVuID4gMTUwMCkpCisJCXJldHVybiAtMTsKKworCWRlYnVnX3Br dChkZXYsICJUWCIsIGRhdGEsIGxlbik7CisKKwlpZiAoKG4gPSBxdWV1ZV9nZXRfZGVzYyhUWERP TkVfUVVFVUUsIHBvcnQsIDEpKSA8IDApCisJCXJldHVybiAtMTsgLyogbm8gZnJlZSBidWZmZXJz ICovCisJZGVzYyA9ICZwb3J0LT50eF9kZXNjX3RhYltuXTsKKwlkZXNjLT5kYXRhID0gdHhfYnVm Zihwb3J0LCBuKTsKKwlkZXNjLT5idWZfbGVuID0gZGVzYy0+cGt0X2xlbiA9IGxlbjsKKwltZW1j cHkoZGVzYy0+ZGF0YSwgZGF0YSwgbGVuKTsKKworCS8qIE5QRSBmaXJtd2FyZSBwYWRzIHNob3J0 IGZyYW1lcyB3aXRoIHplcm9zIGludGVybmFsbHkgKi8KKwkvLyB3bWIoKTsKKwliYXJyaWVyKCk7 CisJcXVldWVfcHV0X2Rlc2MoVFhfUVVFVUUocG9ydCksIGRlc2MpOworCisjaWYgREVCVUdfVFgK KwlmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6IGV0aF94bWl0IGVuZFxuIiwgZGV2LT5kZXYubmFtZSwg ZGV2LT5kZXYuaWQpOworI2VuZGlmCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHJlcXVl c3RfcXVldWVzKHN0cnVjdCBwb3J0ICpwb3J0LCBzdHJ1Y3QgZXRoX2RldmljZSAqZGV2KQorewor CXFtZ3JfcmVxdWVzdF9xdWV1ZShSWEZSRUVfUVVFVUUocG9ydCksIFJYX0RFU0NTLCAwLCAwLCAi JXM6UlgtZnJlZSIsIGRldi0+ZGV2Lm5hbWUpOworCXFtZ3JfcmVxdWVzdF9xdWV1ZShSWF9RVUVV RShwb3J0KSwgUlhfREVTQ1MsIDAsIDAsICIlczpSWCIsIGRldi0+ZGV2Lm5hbWUpOworCXFtZ3Jf cmVxdWVzdF9xdWV1ZShUWF9RVUVVRShwb3J0KSwgVFhfREVTQ1MsIDAsIDAsICIlczpUWCIsIGRl di0+ZGV2Lm5hbWUpOworCisJLyogQ29tbW9uIFRYLWRvbmUgcXVldWUgaGFuZGxlcyBidWZmZXJz IHNlbnQgb3V0IGJ5IHRoZSBOUEVzICovCisJcW1ncl9yZXF1ZXN0X3F1ZXVlKFRYRE9ORV9RVUVV RSwgVFhET05FX1FVRVVFX0xFTiwgMCwgMCwKKwkJCSAgICIlczpUWC1kb25lIiwgZGV2LT5kZXYu bmFtZSk7Cit9CisKK3N0YXRpYyB2b2lkIHJlbGVhc2VfcXVldWVzKHN0cnVjdCBwb3J0ICpwb3J0 KQoreworCXFtZ3JfcmVsZWFzZV9xdWV1ZShSWEZSRUVfUVVFVUUocG9ydCkpOworCXFtZ3JfcmVs ZWFzZV9xdWV1ZShSWF9RVUVVRShwb3J0KSk7CisJcW1ncl9yZWxlYXNlX3F1ZXVlKFRYX1FVRVVF KHBvcnQpKTsKKwlxbWdyX3JlbGVhc2VfcXVldWUoVFhET05FX1FVRVVFKTsKK30KKworc3RhdGlj IHZvaWQgaW5pdF9xdWV1ZXMoc3RydWN0IHBvcnQgKnBvcnQpCit7CisJaW50IGk7CisKKwltZW1z ZXQocG9ydC0+dHhfZGVzY190YWIsIDAsIHNpemVvZihwb3J0LT50eF9kZXNjX3RhYikpOyAvKiBk ZXNjcyAqLworCW1lbXNldChwb3J0LT5yeF9kZXNjX3RhYiwgMCwgc2l6ZW9mKHBvcnQtPnJ4X2Rl c2NfdGFiKSk7CisKKwkvKiBTZXR1cCBSWCBidWZmZXJzICovCisJZm9yIChpID0gMDsgaSA8IFJY X0RFU0NTOyBpKyspIHsKKwkJc3RydWN0IGRlc2MgKmRlc2MgPSAmcG9ydC0+cnhfZGVzY190YWJb aV07CisJCWRlc2MtPmJ1Zl9sZW4gPSBNQVhfTVJVOworCQlkZXNjLT5kYXRhID0gcnhfYnVmZihw b3J0LCBpKTsKKwl9Cit9CisKK3N0YXRpYyBpbnQgaXhwNHh4X2V0aF9vcGVuKHN0cnVjdCBldGhf ZGV2aWNlICpkZXYpCit7CisJc3RydWN0IHBvcnQgKnBvcnQgPSBkZXYtPnByaXY7CisJc3RydWN0 IG5wZSAqbnBlID0gcG9ydC0+bnBlOworCXN0cnVjdCBtc2cgbXNnOworCWludCBpLCBlcnI7CisK KyNpZiBERUJVR19PUEVOCisJZnByaW50ZihzdGRlcnIsICIlcyVkOiBvcGVuaW5nICVwXG4iLCBk ZXYtPmRldi5uYW1lLCBkZXYtPmRldi5pZCwgZGV2KTsKKyNlbmRpZgorCisJaWYgKCFucGVfcnVu bmluZyhucGUpKSB7CisJCWVyciA9IG5wZV9sb2FkX2Zpcm13YXJlKG5wZSk7CisJCWlmIChlcnIp CisJCQlyZXR1cm4gZXJyOworCisJCWlmIChucGVfcmVjdl9tZXNzYWdlKG5wZSwgJm1zZywgIkVU SF9HRVRfU1RBVFVTIikpIHsKKwkJCWZwcmludGYoc3RkZXJyLCAiJXMlZDogJXMgbm90IHJlc3Bv bmRpbmdcbiIsIGRldi0+ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkLCBucGUtPm5hbWUpOworCQkJcmV0 dXJuIC1FSU87CisJCX0KKwkJbWVtY3B5KHBvcnQtPmZpcm13YXJlLCBtc2cucGFyYW1zICsgMiwg NCk7CisJfQorCisJaWYgKGl4cDR4eF9hZGp1c3RfbGluayhkZXYpKQorCQlyZXR1cm4gLUVOT0xJ Tks7CisKKwlwb3J0LT5idWZmX3RhYiA9IHhtYWxsb2MoKFJYX0RFU0NTICsgVFhfREVTQ1MpICog TUFYX01SVSk7CisKKwltZW1zZXQoJm1zZywgMCwgc2l6ZW9mKG1zZykpOworCW1zZy5jbWQgPSBO UEVfVkxBTl9TRVRSWFFPU0VOVFJZOworCW1zZy5ldGhfaWQgPSBMT0dJQ0FMX0lEKHBvcnQpOwor CW1zZy5wYXJhbXNbM10gPSBSWF9RVUVVRShwb3J0KSB8IDB4ODA7CisJbXNnLnBhcmFtc1s0XSA9 IFJYX1FVRVVFKHBvcnQpID4+IDQ7IC8qIE1TQiBvZiBvZmZzZXQgKi8KKwltc2cucGFyYW1zWzVd ID0gUlhfUVVFVUUocG9ydCkgPDwgNDsgLyogTFNCIG9mIG9mZnNldCAqLworCWZvciAoaSA9IDA7 IGkgPCA4OyBpKyspIHsKKwkJbXNnLnBhcmFtc1sxXSA9IGk7CisJCWlmIChucGVfc2VuZF9yZWN2 X21lc3NhZ2UocG9ydC0+bnBlLCAmbXNnLCAiRVRIX1NFVF9SWFEiKSkgeworCQkJZXJyID0gLUVJ TzsKKwkJCWdvdG8gb3V0OworCQl9CisJfQorCisJbXNnLmNtZCA9IE5QRV9FREJfU0VUUE9SVEFE RFJFU1M7CisJbXNnLmV0aF9pZCA9IFBIWVNJQ0FMX0lEKHBvcnQpOworCW1lbWNweShtc2cucGFy YW1zLCBwb3J0LT5waW5mby0+aHdhZGRyLCBFVEhfQUxFTik7CisJaWYgKG5wZV9zZW5kX3JlY3Zf bWVzc2FnZShwb3J0LT5ucGUsICZtc2csICJFVEhfU0VUX01BQyIpKSB7CisJCWVyciA9IC1FSU87 CisJCWdvdG8gb3V0OworCX0KKworCW1lbXNldCgmbXNnLCAwLCBzaXplb2YobXNnKSk7CisJbXNn LmNtZCA9IE5QRV9GV19TRVRGSVJFV0FMTE1PREU7CisJbXNnLmV0aF9pZCA9IExPR0lDQUxfSUQo cG9ydCk7CisJaWYgKG5wZV9zZW5kX3JlY3ZfbWVzc2FnZShwb3J0LT5ucGUsICZtc2csICJFVEhf U0VUX0ZJUkVXQUxMX01PREUiKSkgeworCQllcnIgPSAtRUlPOworCQlnb3RvIG91dDsKKwl9CisK KwlyZXF1ZXN0X3F1ZXVlcyhwb3J0LCBkZXYpOworCWluaXRfcXVldWVzKHBvcnQpOworCisJZm9y IChpID0gMDsgaSA8IEVUSF9BTEVOOyBpKyspCisJCV9fcmF3X3dyaXRlbChwb3J0LT5waW5mby0+ aHdhZGRyW2ldLCAmcG9ydC0+cmVncy0+aHdfYWRkcltpXSk7CisJX19yYXdfd3JpdGVsKDB4MDgs ICZwb3J0LT5yZWdzLT5yYW5kb21fc2VlZCk7CisJX19yYXdfd3JpdGVsKDB4MTIsICZwb3J0LT5y ZWdzLT5wYXJ0aWFsX2VtcHR5X3RocmVzaG9sZCk7CisJX19yYXdfd3JpdGVsKDB4MzAsICZwb3J0 LT5yZWdzLT5wYXJ0aWFsX2Z1bGxfdGhyZXNob2xkKTsKKwlfX3Jhd193cml0ZWwoMHgwOCwgJnBv cnQtPnJlZ3MtPnR4X3N0YXJ0X2J5dGVzKTsKKwlfX3Jhd193cml0ZWwoMHgxNSwgJnBvcnQtPnJl Z3MtPnR4X2RlZmVycmFsKTsKKwlfX3Jhd193cml0ZWwoMHgwOCwgJnBvcnQtPnJlZ3MtPnR4XzJw YXJ0X2RlZmVycmFsWzBdKTsKKwlfX3Jhd193cml0ZWwoMHgwNywgJnBvcnQtPnJlZ3MtPnR4XzJw YXJ0X2RlZmVycmFsWzFdKTsKKwlfX3Jhd193cml0ZWwoMHg4MCwgJnBvcnQtPnJlZ3MtPnNsb3Rf dGltZSk7CisJX19yYXdfd3JpdGVsKDB4MDEsICZwb3J0LT5yZWdzLT5pbnRfY2xvY2tfdGhyZXNo b2xkKTsKKworCS8qIFBvcHVsYXRlIHF1ZXVlcyB3aXRoIGJ1ZmZlcnMsIG5vIGZhaWx1cmUgYWZ0 ZXIgdGhpcyBwb2ludCAqLworCWZvciAoaSA9IDA7IGkgPCBUWF9ERVNDUzsgaSsrKQorCQlxdWV1 ZV9wdXRfZGVzYyhUWERPTkVfUVVFVUUsICZwb3J0LT50eF9kZXNjX3RhYltpXSk7CisKKwlmb3Ig KGkgPSAwOyBpIDwgUlhfREVTQ1M7IGkrKykKKwkJcXVldWVfcHV0X2Rlc2MoUlhGUkVFX1FVRVVF KHBvcnQpLCAmcG9ydC0+cnhfZGVzY190YWJbaV0pOworCisJX19yYXdfd3JpdGVsKFRYX0NOVFJM MV9SRVRSSUVTLCAmcG9ydC0+cmVncy0+dHhfY29udHJvbFsxXSk7CisJX19yYXdfd3JpdGVsKERF RkFVTFRfVFhfQ05UUkwwLCAmcG9ydC0+cmVncy0+dHhfY29udHJvbFswXSk7CisJX19yYXdfd3Jp dGVsKDAsICZwb3J0LT5yZWdzLT5yeF9jb250cm9sWzFdKTsKKwlfX3Jhd193cml0ZWwoREVGQVVM VF9SWF9DTlRSTDAsICZwb3J0LT5yZWdzLT5yeF9jb250cm9sWzBdKTsKKworI2lmIDAKKwlxbWdy X3NldF9pcnEoUlhfUVVFVUUocG9ydCksIFFVRVVFX0lSUV9TUkNfTk9UX0VNUFRZLAorCQkgICAg IGV0aF9yeF9pcnEsIGRldik7CisJcW1ncl9zZXRfaXJxKFRYRE9ORV9RVUVVRSwgUVVFVUVfSVJR X1NSQ19OT1RfRU1QVFksCisJCSAgICAgZXRoX3R4ZG9uZV9pcnEsIE5VTEwpOworCXFtZ3JfZW5h YmxlX2lycShUWERPTkVfUVVFVUUpOworI2VuZGlmCisJbWVtc2V0KCZtc2csIDAsIHNpemVvZiht c2cpKTsKKyNpZiBERUJVR19PUEVOCisJZnByaW50ZihzdGRlcnIsICIlcyVkIG9wZW5lZFxuIiwg ZGV2LT5kZXYubmFtZSwgZGV2LT5kZXYuaWQpOworI2VuZGlmCisJcmV0dXJuIDA7CitvdXQ6CisJ ZnJlZShwb3J0LT5idWZmX3RhYik7CisJcG9ydC0+YnVmZl90YWIgPSBOVUxMOworI2lmIERFQlVH X09QRU4KKwlmcHJpbnRmKHN0ZGVyciwgIiVzJWQgb3BlbiBmYWlsZWQgKCVpKVxuIiwgZGV2LT5k ZXYubmFtZSwgZGV2LT5kZXYuaWQsIGVycik7CisjZW5kaWYKKwlyZXR1cm4gZXJyOworfQorCitz dGF0aWMgdm9pZCBpeHA0eHhfZXRoX2Nsb3NlKHN0cnVjdCBldGhfZGV2aWNlICpkZXYpCit7CisJ c3RydWN0IHBvcnQgKnBvcnQgPSBkZXYtPnByaXY7CisJc3RydWN0IG1zZyBtc2c7CisJaW50IGJ1 ZmZzID0gUlhfREVTQ1M7IC8qIGFsbG9jYXRlZCBSWCBidWZmZXJzICovCisJaW50IGk7CisKKyNp ZiBERUJVR19DTE9TRQorCWZwcmludGYoc3RkZXJyLCAiJXMlZDogY2xvc2luZ1xuIiwgZGV2LT5k ZXYubmFtZSwgZGV2LT5kZXYuaWQpOworI2VuZGlmCisjaWYgMAorCXFtZ3JfZGlzYWJsZV9pcnEo UlhfUVVFVUUocG9ydCkpOworI2VuZGlmCisKKwlpZiAoIXBvcnQtPmJ1ZmZfdGFiKQorCQlyZXR1 cm47IC8qIGFscmVhZHkgY2xvc2VkICovCisKKwl3aGlsZSAocXVldWVfZ2V0X2Rlc2MoUlhGUkVF X1FVRVVFKHBvcnQpLCBwb3J0LCAwKSA+PSAwKQorCQlidWZmcy0tOworCisJbWVtc2V0KCZtc2cs IDAsIHNpemVvZihtc2cpKTsKKwltc2cuY21kID0gTlBFX1NFVExPT1BCQUNLX01PREU7CisJbXNn LmV0aF9pZCA9IExPR0lDQUxfSUQocG9ydCk7CisJbXNnLnBhcmFtc1sxXSA9IDE7CisJaWYgKG5w ZV9zZW5kX3JlY3ZfbWVzc2FnZShwb3J0LT5ucGUsICZtc2csICJFVEhfRU5BQkxFX0xPT1BCQUNL IikpCisJCWZwcmludGYoc3RkZXJyLCAiJXMlZDogdW5hYmxlIHRvIGVuYWJsZSBsb29wYmFja1xu IiwgZGV2LT5kZXYubmFtZSwgZGV2LT5kZXYuaWQpOworCisjaWYgREVCVUdfQ0xPU0UKKwlmcHJp bnRmKHN0ZGVyciwgIiVzJWQ6IGRyYWluaW5nIFJYIHF1ZXVlXG4iLCBkZXYtPmRldi5uYW1lLCBk ZXYtPmRldi5pZCk7CisjZW5kaWYKKwlpID0gMDsKKwlkbyB7IC8qIGRyYWluIFJYIGJ1ZmZlcnMg Ki8KKwkJd2hpbGUgKHF1ZXVlX2dldF9kZXNjKFJYX1FVRVVFKHBvcnQpLCBwb3J0LCAwKSA+PSAw KQorCQkJYnVmZnMtLTsKKwkJaWYgKCFidWZmcykKKwkJCWJyZWFrOworCQlpZiAocW1ncl9zdGF0 X2Z1bGwoVFhET05FX1FVRVVFKSAmJiAhKGkgJSAxMCkpIHsKKwkJCS8qIHdlIGhhdmUgdG8gaW5q ZWN0IHNvbWUgcGFja2V0ICovCisJCQlzdHJ1Y3QgZGVzYyAqZGVzYzsKKwkJCWludCBuID0gcXVl dWVfZ2V0X2Rlc2MoVFhET05FX1FVRVVFLCBwb3J0LCAxKTsKKwkJCUJVR19PTihuIDwgMCk7CisJ CQlkZXNjID0gJnBvcnQtPnR4X2Rlc2NfdGFiW25dOworCQkJZGVzYy0+YnVmX2xlbiA9IGRlc2Mt PnBrdF9sZW4gPSAxOworCQkJLy93bWIoKTsKKwkJCWJhcnJpZXIoKTsKKwkJCXF1ZXVlX3B1dF9k ZXNjKFRYX1FVRVVFKHBvcnQpLCBkZXNjKTsKKwkJfQorCQl1ZGVsYXkoMSk7CisJfSB3aGlsZSAo KytpIDwgTUFYX0NMT1NFX1dBSVQpOworCisJaWYgKGJ1ZmZzKQorCQlmcHJpbnRmKHN0ZGVyciwg IiVzJWQ6IHVuYWJsZSB0byBkcmFpbiBSWCBxdWV1ZSwgJWkgYnVmZmVyKHMpIGxlZnQgaW4gTlBF XG4iLAorCQkJZGV2LT5kZXYubmFtZSwgZGV2LT5kZXYuaWQsIGJ1ZmZzKTsKKyNpZiBERUJVR19D TE9TRQorCWlmICghYnVmZnMpCisJCWZwcmludGYoc3RkZXJyLCAiJXMlZDogZHJhaW5pbmcgUlgg cXVldWUgdG9vayAlaSBjeWNsZXNcbiIsIGRldi0+ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkLCBpKTsK KyNlbmRpZgorCisJYnVmZnMgPSBUWF9ERVNDUzsKKwl3aGlsZSAocXVldWVfZ2V0X2Rlc2MoVFhf UVVFVUUocG9ydCksIHBvcnQsIDEpID49IDApCisJCWJ1ZmZzLS07IC8qIGNhbmNlbCBUWCAqLwor CisJaSA9IDA7CisJZG8geworCQl3aGlsZSAocXVldWVfZ2V0X2Rlc2MoVFhET05FX1FVRVVFLCBw b3J0LCAxKSA+PSAwKQorCQkJYnVmZnMtLTsKKwkJaWYgKCFidWZmcykKKwkJCWJyZWFrOworCX0g d2hpbGUgKCsraSA8IE1BWF9DTE9TRV9XQUlUKTsKKworCWlmIChidWZmcykKKwkJZnByaW50Zihz dGRlcnIsICIlcyVkOiB1bmFibGUgdG8gZHJhaW4gVFggcXVldWUsICVpIGJ1ZmZlcihzKSBsZWZ0 IGluIE5QRVxuIiwKKwkJCWRldi0+ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkLCBidWZmcyk7CisjaWYg REVCVUdfQ0xPU0UKKwlpZiAoIWJ1ZmZzKQorCQlmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6IGRyYWlu aW5nIFRYIHF1ZXVlcyB0b29rICVpIGN5Y2xlc1xuIiwgZGV2LT5kZXYubmFtZSwgZGV2LT5kZXYu aWQsIGkpOworI2VuZGlmCisKKwltc2cucGFyYW1zWzFdID0gMDsKKwlpZiAobnBlX3NlbmRfcmVj dl9tZXNzYWdlKHBvcnQtPm5wZSwgJm1zZywgIkVUSF9ESVNBQkxFX0xPT1BCQUNLIikpCisJCWZw cmludGYoc3RkZXJyLCAiJXMlZDogdW5hYmxlIHRvIGRpc2FibGUgbG9vcGJhY2tcbiIsIGRldi0+ ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkKTsKKworI2lmIDAKKwlxbWdyX2Rpc2FibGVfaXJxKFRYRE9O RV9RVUVVRSk7CisjZW5kaWYKKwlyZWxlYXNlX3F1ZXVlcyhwb3J0KTsKKwlmcmVlKHBvcnQtPmJ1 ZmZfdGFiKTsKKwlwb3J0LT5idWZmX3RhYiA9IE5VTEw7CisjaWYgREVCVUdfQ0xPU0UKKwlmcHJp bnRmKHN0ZGVyciwgIiVzJWQ6IGNsb3NlZFxuIiwgZGV2LT5kZXYubmFtZSwgZGV2LT5kZXYuaWQp OworI2VuZGlmCit9CisKK3N0YXRpYyBpbnQgaXhwNHh4X2V0aF9nZXRfaHdhZGRyKHN0cnVjdCBl dGhfZGV2aWNlICpldGgsIHVuc2lnbmVkIGNoYXIgKmFkZHIpCit7CisJc3RydWN0IHBvcnQgKnBv cnQgPSBldGgtPnByaXY7CisJbWVtY3B5KGFkZHIsIHBvcnQtPnBpbmZvLT5od2FkZHIsIDYpOwor CXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGl4cDR4eF9ldGhfc2V0X2h3YWRkcihzdHJ1Y3Qg ZXRoX2RldmljZSAqZXRoLCB1bnNpZ25lZCBjaGFyICphZGRyKQoreworCXN0cnVjdCBwb3J0ICpw b3J0ID0gZXRoLT5wcml2OworCW1lbWNweShwb3J0LT5waW5mby0+aHdhZGRyLCBhZGRyLCA2KTsK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBpeHA0eHhfZXRoX2luaXQoc3RydWN0IGV0aF9k ZXZpY2UgKmV0aCkKK3sKKwlzdHJ1Y3QgcG9ydCAqcG9ydCA9IGV0aC0+cHJpdjsKKworCV9fcmF3 X3dyaXRlbChERUZBVUxUX0NPUkVfQ05UUkwgfCBDT1JFX1JFU0VULAorCQkgICAgICZwb3J0LT5y ZWdzLT5jb3JlX2NvbnRyb2wpOworCXVkZWxheSg1MCk7CisJX19yYXdfd3JpdGVsKERFRkFVTFRf Q09SRV9DTlRSTCwgJnBvcnQtPnJlZ3MtPmNvcmVfY29udHJvbCk7CisJdWRlbGF5KDUwKTsKKwor CW1paWRldl9yZXN0YXJ0X2FuZWcoJnBvcnQtPm1paWRldik7CisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbnQgaXhwNHh4X2V0aF9wcm9iZShzdHJ1Y3QgZGV2aWNlX2QgKmRldikKK3sKKwlzdHJ1 Y3QgbnBlICpucGU7CisJc3RydWN0IHBvcnQgKnBvcnQ7CisJc3RydWN0IGV0aF9wbGF0X2luZm8g KnBpbmZvID0gZGV2LT5wbGF0Zm9ybV9kYXRhOworCisJaWYgKCFwaW5mbykgeworCQlmcHJpbnRm KHN0ZGVyciwgIml4cDR4eF9ldGg6IG5vIHBsYXRmb3JtIGluZm9ybWF0aW9uXG4iKTsKKwkJcmV0 dXJuIC1FTk9ERVY7CisJfQorCisJaWYgKCEobnBlID0gbnBlX3JlcXVlc3QocGluZm8tPm5wZSkp KSB7CisJCWZwcmludGYoc3RkZXJyLCAiaXhwNHh4X2V0aDogdW5hYmxlIHRvIGFjcXVpcmUgTlBF XG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCisJcG9ydCA9IG1lbWFsaWduKDB4MjAsIHNp emVvZigqcG9ydCkpOworCW1lbXNldChwb3J0LCAwLCBzaXplb2YoKnBvcnQpKTsKKworCXBvcnQt PnJlZ3MgPSBwaW5mby0+cmVnczsKKwlwb3J0LT5ucGUgPSBucGU7CisJcG9ydC0+cGluZm8gPSBw aW5mbzsKKwlwb3J0LT5ldGguZGV2LmlkID0gLTE7CisJcG9ydC0+ZXRoLnByaXYgPSBwb3J0Owor CXBvcnQtPmV0aC5pbml0ID0gaXhwNHh4X2V0aF9pbml0OworCXBvcnQtPmV0aC5vcGVuID0gaXhw NHh4X2V0aF9vcGVuOworCXBvcnQtPmV0aC5oYWx0ID0gaXhwNHh4X2V0aF9jbG9zZTsKKwlwb3J0 LT5ldGguc2VuZCA9IGl4cDR4eF9ldGhfeG1pdDsKKwlwb3J0LT5ldGgucmVjdiA9IGl4cDR4eF9l dGhfcG9sbDsKKwlwb3J0LT5ldGguZ2V0X2V0aGFkZHIgPSBpeHA0eHhfZXRoX2dldF9od2FkZHI7 CisJcG9ydC0+ZXRoLnNldF9ldGhhZGRyID0gaXhwNHh4X2V0aF9zZXRfaHdhZGRyOworCisJcG9y dC0+bWlpZGV2LmRldi5pZCA9IC0xOworCXBvcnQtPm1paWRldi5yZWFkID0gaXhwNHh4X21kaW9f cmVhZDsKKwlwb3J0LT5taWlkZXYud3JpdGUgPSBpeHA0eHhfbWRpb193cml0ZTsKKwlwb3J0LT5t aWlkZXYuYWRkcmVzcyA9IHBpbmZvLT5waHk7CisJcG9ydC0+bWlpZGV2LmVkZXYgPSAmcG9ydC0+ ZXRoOworCW1paV9yZWdpc3RlcigmcG9ydC0+bWlpZGV2KTsKKwlldGhfcmVnaXN0ZXIoJnBvcnQt PmV0aCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZHJpdmVyX2QgaXhwNHh4X2V0 aF9kcml2ZXIgPSB7CisJLm5hbWUgID0gIml4cDR4eF9ldGgiLAorCS5wcm9iZSA9IGl4cDR4eF9l dGhfcHJvYmUsCit9OworCitzdGF0aWMgaW50IF9faW5pdCBpeHA0eHhfZXRoX21vZHVsZV9pbml0 KHZvaWQpCit7CisJaWYgKGNwdV9pc19peHA0M3goKSkgeworCQkvKiBJWFA0M3ggbGFja3MgTlBF LUIgYW5kIHVzZXMgTlBFLUMgZm9yIE1JSSBQSFkgYWNjZXNzICovCisJCWlmICghKGl4cDR4eF9y ZWFkX2ZlYXR1cmVfYml0cygpICYgSVhQNFhYX0ZFQVRVUkVfTlBFQ19FVEgpKQorCQkJcmV0dXJu IC1FTk9TWVM7CisJCW1kaW9fcmVncyA9IChzdHJ1Y3QgZXRoX3JlZ3MgKilJWFA0WFhfRXRoQ19C QVNFOworCX0gZWxzZSB7CisJCS8qIEFsbCBNSUkgUEhZIGFjY2Vzc2VzIHVzZSBOUEUtQiBFdGhl cm5ldCByZWdpc3RlcnMgKi8KKwkJaWYgKCEoaXhwNHh4X3JlYWRfZmVhdHVyZV9iaXRzKCkgJiBJ WFA0WFhfRkVBVFVSRV9OUEVCX0VUSDApKQorCQkJcmV0dXJuIC1FTk9TWVM7CisJCW1kaW9fcmVn cyA9IChzdHJ1Y3QgZXRoX3JlZ3MgKilJWFA0WFhfRXRoQl9CQVNFOworCX0KKworCV9fcmF3X3dy aXRlbChERUZBVUxUX0NPUkVfQ05UUkwsICZtZGlvX3JlZ3MtPmNvcmVfY29udHJvbCk7CisKKwly ZWdpc3Rlcl9kcml2ZXIoJml4cDR4eF9ldGhfZHJpdmVyKTsKKwlyZXR1cm4gMDsKK30KKworZGV2 aWNlX2luaXRjYWxsKGl4cDR4eF9ldGhfbW9kdWxlX2luaXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9zZXJpYWwvc2VyaWFsX25zMTY1NTAuYyBiL2RyaXZlcnMvc2VyaWFsL3NlcmlhbF9uczE2NTUw LmMKaW5kZXggMjkwNjE5Zi4uMGYyNWNlYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zZXJpYWwvc2Vy aWFsX25zMTY1NTAuYworKysgYi9kcml2ZXJzL3NlcmlhbC9zZXJpYWxfbnMxNjU1MC5jCkBAIC0x MDIsNyArMTAyLDExIEBAIHN0YXRpYyB2b2lkIG5zMTY1NTBfc2VyaWFsX2luaXRfcG9ydChzdHJ1 Y3QgY29uc29sZV9kZXZpY2UgKmNkZXYpCiAJYmF1ZF9kaXZpc29yID0gbnMxNjU1MF9jYWxjX2Rp dmlzb3IoY2RldiwgQ09ORklHX0JBVURSQVRFKTsKIAogCS8qIGluaXRpYWxpemluZyB0aGUgZGV2 aWNlIGZvciB0aGUgZmlyc3QgdGltZSAqLworI2lmZGVmIENPTkZJR19BUkNIX0lYUDRYWAorCXBs YXQtPnJlZ193cml0ZShJRVJfVVVFLCBiYXNlLCBpZXIpOyAvKiBFbmFibGUgVUFSVCBvcGVyYXRp b24gKi8KKyNlbHNlCiAJcGxhdC0+cmVnX3dyaXRlKDB4MDAsIGJhc2UsIGllcik7CisjZW5kaWYK ICNpZmRlZiBDT05GSUdfRFJJVkVSX1NFUklBTF9OUzE2NTUwX09NQVBfRVhURU5TSU9OUwogCXBs YXQtPnJlZ193cml0ZSgweDA3LCBiYXNlLCBtZHIxKTsJLyogRGlzYWJsZSAqLwogI2VuZGlmCkBA IC0xODEsNyArMTg1LDExIEBAIHN0YXRpYyBpbnQgbnMxNjU1MF9zZXRiYXVkcmF0ZShzdHJ1Y3Qg Y29uc29sZV9kZXZpY2UgKmNkZXYsIGludCBiYXVkX3JhdGUpCiAJICAgIGNkZXYtPmRldi0+cGxh dGZvcm1fZGF0YTsKIAl1bnNpZ25lZCBsb25nIGJhc2UgPSBjZGV2LT5kZXYtPm1hcF9iYXNlOwog CXVuc2lnbmVkIGludCBiYXVkX2Rpdmlzb3IgPSBuczE2NTUwX2NhbGNfZGl2aXNvcihjZGV2LCBi YXVkX3JhdGUpOworI2lmZGVmIENPTkZJR19BUkNIX0lYUDRYWAorCXBsYXQtPnJlZ193cml0ZShJ RVJfVVVFLCBiYXNlLCBpZXIpOyAvKiBFbmFibGUgVUFSVCBvcGVyYXRpb24gKi8KKyNlbHNlCiAJ cGxhdC0+cmVnX3dyaXRlKDB4MDAsIGJhc2UsIGllcik7CisjZW5kaWYKIAlwbGF0LT5yZWdfd3Jp dGUoTENSX0JLU0UsIGJhc2UsIGxjcik7CiAJcGxhdC0+cmVnX3dyaXRlKGJhdWRfZGl2aXNvciAm IDB4ZmYsIGJhc2UsIGRsbCk7CiAJcGxhdC0+cmVnX3dyaXRlKChiYXVkX2Rpdmlzb3IgPj4gOCkg JiAweGZmLCBiYXNlLCBkbG0pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zZXJpYWwvc2VyaWFsX25z MTY1NTAuaCBiL2RyaXZlcnMvc2VyaWFsL3NlcmlhbF9uczE2NTUwLmgKaW5kZXggZWIyZmQxMC4u YmEyMGE2ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zZXJpYWwvc2VyaWFsX25zMTY1NTAuaAorKysg Yi9kcml2ZXJzL3NlcmlhbC9zZXJpYWxfbnMxNjU1MC5oCkBAIC01MCw2ICs1MCw4IEBACiAjZGVm aW5lIGRsbAkJcmJyCiAjZGVmaW5lIGRsbQkJaWVyCiAKKyNkZWZpbmUgSUVSX1VVRQkJMHg0MAkv KiBVQVJUIFVuaXQgRW5hYmxlIChYU2NhbGUpICovCisKICNkZWZpbmUgRkNSX0ZJRk9fRU4gICAg IDB4MDEJLyogRmlmbyBlbmFibGUgKi8KICNkZWZpbmUgRkNSX1JYU1IgICAgICAgIDB4MDIJLyog UmVjZWl2ZXIgc29mdCByZXNldCAqLwogI2RlZmluZSBGQ1JfVFhTUiAgICAgICAgMHgwNAkvKiBU cmFuc21pdHRlciBzb2Z0IHJlc2V0ICovCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpiYXJlYm94IG1haWxpbmcgbGlzdApiYXJlYm94QGxpc3RzLmluZnJh ZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9iYXJl Ym94Cg==