From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tim Blechmann Subject: [PATCH] alsa: lx6464es - driver for the digigram lx6464es interface Date: Mon, 23 Mar 2009 11:12:22 +0100 Message-ID: <20090323111222.2dc7e6e4@thinkpad> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from klingt.org (mail.klingt.org [86.59.21.178]) by alsa0.perex.cz (Postfix) with ESMTP id BC55A2435C for ; Mon, 23 Mar 2009 11:12:26 +0100 (CET) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: alsa-devel-bounces@alsa-project.org Errors-To: alsa-devel-bounces@alsa-project.org To: alsa-devel@alsa-project.org Cc: Takashi Iwai List-Id: alsa-devel@alsa-project.org cHJvdG90eXBlIG9mIGEgZHJpdmVyIGZvciB0aGUgZGlnaWdyYW0gbHg2NDY0ZXMgNjQgY2hhbm5l bCBldGhlcnNvdW5kCmludGVyZmFjZS4KClNpZ25lZC1vZmYtYnk6IFRpbSBCbGVjaG1hbm4gPHRp bUBrbGluZ3Qub3JnPgotLS0KIGluY2x1ZGUvbGludXgvcGNpX2lkcy5oICAgICAgICAgICAgIHwg ICAgNSArCiBzb3VuZC9wY2kvS2NvbmZpZyAgICAgICAgICAgICAgICAgICB8ICAgMTAgKwogc291 bmQvcGNpL01ha2VmaWxlICAgICAgICAgICAgICAgICAgfCAgICAxICsKIHNvdW5kL3BjaS9seDY0 NjRlcy9MWEVTX3JlZ2lzdGVycy5oIHwgIDEyMiArKysKIHNvdW5kL3BjaS9seDY0NjRlcy9NYWtl ZmlsZSAgICAgICAgIHwgICAxMyArCiBzb3VuZC9wY2kvbHg2NDY0ZXMvUGN4RXJyX2UuaCAgICAg ICB8ICA2ODAgKysrKysrKysrKysrKysrKwogc291bmQvcGNpL2x4NjQ2NGVzL2V0aGVyc291bmQu aCAgICAgfCAgIDU1ICsrCiBzb3VuZC9wY2kvbHg2NDY0ZXMvaWZfZHJ2X21iLmggICAgICB8ICAy ODcgKysrKysrKwogc291bmQvcGNpL2x4NjQ2NGVzL2x4NjQ2NGVzLmMgICAgICAgfCAxMTc5ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysKIHNvdW5kL3BjaS9seDY0NjRlcy9seDY0NjRlcy5o ICAgICAgIHwgIDExOSArKysKIHNvdW5kL3BjaS9seDY0NjRlcy9seF9jb3JlLmMgICAgICAgIHwg MTQ1MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc291bmQvcGNpL2x4NjQ2 NGVzL2x4X2NvcmUuaCAgICAgICAgfCAgMjM5ICsrKysrKwogMTIgZmlsZXMgY2hhbmdlZCwgNDE2 MyBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNvdW5k L3BjaS9seDY0NjRlcy9MWEVTX3JlZ2lzdGVycy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc291bmQv cGNpL2x4NjQ2NGVzL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgc291bmQvcGNpL2x4NjQ2 NGVzL1BjeEVycl9lLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzb3VuZC9wY2kvbHg2NDY0ZXMvZXRo ZXJzb3VuZC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc291bmQvcGNpL2x4NjQ2NGVzL2lmX2Rydl9t Yi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc291bmQvcGNpL2x4NjQ2NGVzL2x4NjQ2NGVzLmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzb3VuZC9wY2kvbHg2NDY0ZXMvbHg2NDY0ZXMuaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNvdW5kL3BjaS9seDY0NjRlcy9seF9jb3JlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzb3VuZC9wY2kvbHg2NDY0ZXMvbHhfY29yZS5oCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51 eC9wY2lfaWRzLmggYi9pbmNsdWRlL2xpbnV4L3BjaV9pZHMuaAppbmRleCAwMmMxOGI5Li4wYThj MzZkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3BjaV9pZHMuaAorKysgYi9pbmNsdWRlL2xp bnV4L3BjaV9pZHMuaApAQCAtOTc2LDYgKzk3Niw3IEBACiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURf UExYX1BDSTIwMFNZTgkweDMxOTYKICNkZWZpbmUgUENJX0RFVklDRV9JRF9QTFhfOTAzMCAgICAg ICAgICAweDkwMzAKICNkZWZpbmUgUENJX0RFVklDRV9JRF9QTFhfOTA1MAkJMHg5MDUwCisjZGVm aW5lIFBDSV9ERVZJQ0VfSURfUExYXzkwNTYJCTB4OTA1NgogI2RlZmluZSBQQ0lfREVWSUNFX0lE X1BMWF85MDgwCQkweDkwODAKICNkZWZpbmUgUENJX0RFVklDRV9JRF9QTFhfR1RFS19TRVJJQUwy CTB4YTAwMQogCkBAIC0xODEzLDYgKzE4MTQsMTAgQEAKICNkZWZpbmUgUENJX1NVQkRFVklDRV9J RF9IWVBFUkNPUEVfTUVUUk8JMHgwMTA3CiAjZGVmaW5lIFBDSV9TVUJERVZJQ0VfSURfSFlQRVJD T1BFX0NIQU1QMgkweDAxMDgKIAorI2RlZmluZSBQQ0lfVkVORE9SX0lEX0RJR0lHUkFNCQkweDEz NjkKKyNkZWZpbmUgUENJX1NVQkRFVklDRV9JRF9ESUdJR1JBTV9MWDY0NjRFU19TRVJJQUxfU1VC U1lTVEVNCTB4YzAwMQorI2RlZmluZSBQQ0lfU1VCREVWSUNFX0lEX0RJR0lHUkFNX0xYNjQ2NEVT X0NBRV9TRVJJQUxfU1VCU1lTVEVNCTB4YzAwMgorCiAjZGVmaW5lIFBDSV9WRU5ET1JfSURfS0FX QVNBS0kJCTB4MTM2YgogI2RlZmluZSBQQ0lfREVWSUNFX0lEX01DSElQX0tMNUE3MjAwMgkweGZm MDEKIApkaWZmIC0tZ2l0IGEvc291bmQvcGNpL0tjb25maWcgYi9zb3VuZC9wY2kvS2NvbmZpZwpp bmRleCBjYTI1ZTYxLi44MDAyYWU0IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvS2NvbmZpZworKysg Yi9zb3VuZC9wY2kvS2NvbmZpZwpAQCAtNjIyLDYgKzYyMiwxNiBAQCBjb25maWcgU05EX0tPUkcx MjEyCiAJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJl OiB0aGUgbW9kdWxlCiAJICB3aWxsIGJlIGNhbGxlZCBzbmQta29yZzEyMTIuCiAKK2NvbmZpZyBT TkRfTFg2NDY0RVMKKwl0cmlzdGF0ZSAiRGlnaWdyYW0gTFg2NDY0RVMiCisJc2VsZWN0IFNORF9Q Q00KKwloZWxwCisJICBTYXkgWSBoZXJlIHRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgRGlnaWdyYW0g TFg2NDY0RVMgYm9hcmRzLgorCisJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxl LCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlCisJICB3aWxsIGJlIGNhbGxlZCBzbmQtbHg2NDY0 ZXMuCisKKwogY29uZmlnIFNORF9NQUVTVFJPMwogCXRyaXN0YXRlICJFU1MgQWxsZWdyby9NYWVz dHJvMyIKIAlzZWxlY3QgU05EX0FDOTdfQ09ERUMKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9NYWtl ZmlsZSBiL3NvdW5kL3BjaS9NYWtlZmlsZQppbmRleCA2NWIyNWQyLi43ZDgzZTA4IDEwMDY0NAot LS0gYS9zb3VuZC9wY2kvTWFrZWZpbGUKKysrIGIvc291bmQvcGNpL01ha2VmaWxlCkBAIC02Miw2 ICs2Miw3IEBAIG9iai0kKENPTkZJR19TTkQpICs9IFwKIAljYTAxMDYvIFwKIAljczQ2eHgvIFwK IAljczU1MzVhdWRpby8gXAorCWx4NjQ2NGVzLyBcCiAJZWNob2F1ZGlvLyBcCiAJZW11MTBrMS8g XAogCWhkYS8gXApkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2x4NjQ2NGVzL0xYRVNfcmVnaXN0ZXJz LmggYi9zb3VuZC9wY2kvbHg2NDY0ZXMvTFhFU19yZWdpc3RlcnMuaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5mNjY1MDg0Ci0tLSAvZGV2L251bGwKKysrIGIvc291bmQvcGNp L2x4NjQ2NGVzL0xYRVNfcmVnaXN0ZXJzLmgKQEAgLTAsMCArMSwxMjIgQEAKKy8qKgorKglDb3B5 cmlnaHQgKEMpIDIwMDYgRElHSUdSQU0gUy5BLgorKgorKglAZmlsZQlMWEVTX3JlZ2lzdGVycy5o CisqCUBicmllZglvZmZzZXRzIGFuZCB2YWx1ZXMgb2YgdGhlIFBDSSBtYXBwZWQgcmVnaXN0ZXJz IGZvciBMWDY0NjRFUworKi8KKworI2lmICFkZWZpbmVkKEFGWF9QQ0lFU0RFRklORV9IKQorI2Rl ZmluZSBBRlhfUENJRVNERUZJTkVfSAorCisjZGVmaW5lIFJlZ19DU00JCQkJMHg0MDAKKyNkZWZp bmUgUmVnX0NTTV9NUgkJCTB4MDAwMDAwMDIKKyNkZWZpbmUgUmVnX0NTTV9NQwkJCTB4MDAwMDAw MDEKKyNkZWZpbmUgUkVHX0NSTV9OVU1CRVIJCTEyCisjZGVmaW5lIFJlZ19DUk0xCQkJMHg0MDEK KyNkZWZpbmUgUmVnX0NSTTIJCQkweDQwMgorI2RlZmluZSBSZWdfQ1JNMwkJCTB4NDAzCisjZGVm aW5lIFJlZ19DUk00CQkJMHg0MDQKKyNkZWZpbmUgUmVnX0NSTTUJCQkweDQwNQorI2RlZmluZSBS ZWdfQ1JNNgkJCTB4NDA2CisjZGVmaW5lIFJlZ19DUk03CQkJMHg0MDcKKyNkZWZpbmUgUmVnX0NS TTgJCQkweDQwOAorI2RlZmluZSBSZWdfQ1JNOQkJCTB4NDA5CisjZGVmaW5lIFJlZ19DUk0xMAkJ CTB4NDBhCisjZGVmaW5lIFJlZ19DUk0xMQkJCTB4NDBiCisjZGVmaW5lIFJlZ19DUk0xMgkJCTB4 NDBjCisKKyNkZWZpbmUgUmVnX0lDUgkJCQkweDQxMAorI2RlZmluZSBSZWdfQ1ZSCQkJCTB4NDEx CisjZGVmaW5lIFJlZ19JU1IJCQkJMHg0MTIKKyNkZWZpbmUgUmVnX1JYSFRYSAkJCTB4NDEzCisj ZGVmaW5lIFJlZ19SWE1UWE0JCQkweDQxNAorI2RlZmluZSBSZWdfUkhMVFhMCQkJMHg0MTUKKyNk ZWZpbmUgUmVnX1JFU0VURFNQCQkweDQxNgorCisjZGVmaW5lIFJlZ19DU1VGCQkJMHg0MjAKKy8v IHdyaXRlCisjZGVmaW5lIFJlZ19DU1VGX1RNUzAJCSAweDAwMDAwMDAxCisjZGVmaW5lIFJlZ19D U1VGX1RESTAJCSAweDAwMDAwMDAyCisjZGVmaW5lIFJlZ19DU1VGX1YwCQkJIDB4MDAwMDAwMDQK KyNkZWZpbmUgUmVnX0NTVUZfVE1TMQkJIDB4MDAwMDAwMDgKKyNkZWZpbmUgUmVnX0NTVUZfVERJ MQkJIDB4MDAwMDAwMTAKKyNkZWZpbmUgUmVnX0NTVUZfVjEJCQkgMHgwMDAwMDAyMAorI2RlZmlu ZSBSZWdfQ1NVRl9UTVMyCQkgMHgwMDAwMDA0MAorI2RlZmluZSBSZWdfQ1NVRl9UREkyCQkgMHgw MDAwMDA4MAorI2RlZmluZSBSZWdfQ1NVRl9WMgkJCSAweDAwMDAwMTAwCisjZGVmaW5lIFJlZ19D U1VGX1RNUzMJCSAweDAwMDAwMjAwCisjZGVmaW5lIFJlZ19DU1VGX1RESTMJCSAweDAwMDAwNDAw CisjZGVmaW5lIFJlZ19DU1VGX1YzCQkJIDB4MDAwMDA4MDAKKyNkZWZpbmUgUmVnX0NTVUZfVE1T NAkJIDB4MDAwMDEwMDAKKyNkZWZpbmUgUmVnX0NTVUZfVERJNAkJIDB4MDAwMDIwMDAKKyNkZWZp bmUgUmVnX0NTVUZfVjQJCQkgMHgwMDAwNDAwMAorI2RlZmluZSBSZWdfQ1NVRl9FTkFCTEVfSlRB RyAweDgwMDAwMDAwCisvLyByZWFkCisjZGVmaW5lIFJlZ19DU1VGX1RETzAJCQkJMHgwMDAwMDAw MQorI2RlZmluZSBSZWdfQ1NVRl9URE8xCQkJCTB4MDAwMDAwMDIKKyNkZWZpbmUgUmVnX0NTVUZf VERPMgkJCQkweDAwMDAwMDA0CisjZGVmaW5lIFJlZ19DU1VGX1RETzMJCQkJMHgwMDAwMDAwOAor I2RlZmluZSBSZWdfQ1NVRl9URE80CQkJCTB4MDAwMDAwMTAKKyNkZWZpbmUgUmVnX0NTVUZfQgkJ CQkJMHgwMDAwMDAyMAorI2RlZmluZSBSZWdfQ1NVRl9WRVJJRllfUEFUVEVSTgkJMHgwMDAwRkZD MAkvLyBiaXQzMSA9IGVuYWJsZSBqdGFnICsgYml0cyAxNS4uNiBmb3JjZWQgdG8gMQorI2RlZmlu ZSBSZWdfQ1NVRl9WRVJJRllfTEFTVF9XUklURQkweDdGRkYwMDAwCisjZGVmaW5lIFJlZ19DU1VG X1ZFUklGWV9MQVNUX1dSSVRFX09GRlNFVCAxNgorCisKKyNkZWZpbmUgUmVnX0NTRVMJCQkweDQz MAorI2RlZmluZSBSZWdfQ1JFU01TQgkJCTB4NDMxCisjZGVmaW5lIFJlZ19DUkVTTFNCCQkJMHg0 MzIKKyNkZWZpbmUgUmVnX0FETUFDRVNNU0IJCTB4NDMzCisjZGVmaW5lIFJlZ19BRE1BQ0VTTFNC CQkweDQzNAorCisjZGVmaW5lIFJlZ19DT05GRVMJCQkweDQ0MAorCisvLyBDb25mRVMgOiBwYXJ0 aWUgbHVlIGRlcHVpcyBsZSB4aWxpbngKKy8vCisjZGVmaW5lIENPTkZFU19SRUFEX1BBUlRfTUFT SwkweDAwMDcwMDAwCisvLworI2RlZmluZSBJT0NSX09VVFBVVFNfT0ZGU0VUCQkgMAkJLyoqPCAo cncpIG9mZnNldCBmb3IgdGhlIG51bWJlciBvZiBPVVRzIGluIHRoZSBDb25mRVMgcmVnaXN0ZXIu CQkqLworI2RlZmluZSBJT0NSX0lOUFVUU19PRkZTRVQJCSA4CQkvKio8IChydykgb2Zmc2V0IGZv ciB0aGUgbnVtYmVyIG9mIElOcyBpbiB0aGUgQ29uZkVTIHJlZ2lzdGVyLgkJKi8KKyNkZWZpbmUg SU5URVJQUkVURVJfVkVSU19PRkZTRVQJMTYJCS8qKjwgKHJvKSBvZmZzZXQgZm9yIEVTIGNvbW1h bmQgaW50ZXJwcmV0ZXIgdmVyc2lvbiBpbmZvLgkJCSovCisjZGVmaW5lIElOVEVSUFJFVEVSX1ZF UlNfTUFTSwkweDA3CS8qKjwgYml0cyAxNi8xNy8xOCBnaXZlIHRoZSBpbnRlcnByZXRlciB2ZXJz aW9uLCBhbW9uZ3N0IHRoZSBmb2xsb3dpbmcgdmFsdWVzLiovCisjZGVmaW5lCQlJTlRFUlBSRVRF Ul9WMgkJMAkJLyoqPCBWMS9WMiBFdGhlclNvdW5kLCBvciBlYXJseSBWMyBwcm90b3R5cGVzIC4q LworI2RlZmluZQkJSU5URVJQUkVURVJfRVMxMDAJMQkJLyoqPCBWMyBFdGhlclNvdW5kLCBFUzEw MC4gKi8KKy8vI2RlZmluZQlJTlRFUlBSRVRFUl9FU0dJR0EJMgorCisKKy8vIENvbmZFUyA6IHBh cnRpZSBlY3JpdGUgYSBwYXJ0aXIgZGVzIGluZm8gZGFucyBsYSByZWdpc3RyeQorLy8KKyNkZWZp bmUgQ09ORkVTX1dSSVRFX1BBUlRfTUFTSwkweDAwRjgwMDAwCisvLworI2RlZmluZSBGUkVRX1JB VElPX09GRlNFVAkJMTkJCS8qKjwgKHJ3KSBvZmZzZXQgZm9yIGZyZXF1ZW5jeSByYXRpbyBpbiB0 aGUgQ29uZkVTIHJlZ2lzdGVyLgkJCSovCisjZGVmaW5lIE1BQ19QUk9HX1NFVF9CSVQJCTIzCQkv Kio8IChydykgTUFDIFBST0cgYml0LgkJCSovCisjZGVmaW5lCQlGUkVRX1JBVElPX1NJTkdMRV9N T0RFCTB4MDEJLyoqPCB2YWx1ZSBmb3Igc2luZ2xlIG1vZGUgZnJlcXVlbmN5IHJhdGlvOiBzYW1w bGUgcmF0ZSA9IGZyZXF1ZW5jeSByYXRlLgkJKi8KKyNkZWZpbmUJCUZSRVFfUkFUSU9fRFVBTF9N T0RFCTB4MDIJLyoqPCB2YWx1ZSBmb3IgZHVhbCBtb2RlIGZyZXF1ZW5jeSByYXRpbzoJc2FtcGxl IHJhdGUgPSBmcmVxdWVuY3kgcmF0ZSAqIDIuCSovCisjZGVmaW5lCQlGUkVRX1JBVElPX1FVQURf TU9ERQkweDA0CS8qKjwgdmFsdWUgZm9yIHF1YWQgbW9kZSBmcmVxdWVuY3kgcmF0aW86ICAgc2Ft cGxlIHJhdGUgPSBmcmVxdWVuY3kgcmF0ZSAqIDQuCSovCisKKyNkZWZpbmUgUmVnX0NPTkZFU0lP TVIJCTB4NDQxCisKKy8vIElPTVIgKDMyQml0cykKKy8vCisjZGVmaW5lIElNUl9PRkZTRVQJCQkJ MTYJCQkJLyoqPCBNU1dvcmQgPSBJTVIsIExTV29yZCA9IE9NUiovCisjZGVmaW5lIE9NUl9PRkZT RVQJCQkJMAorCisvLyBvZmZzZXRzIGluIE9NUiBvciBJTVIgd29yZHMKKyNkZWZpbmUgSU9NUl9Q SURfT0ZGU0VUCQkJMAkJCQkvKio8IG9mZnNldCBmb3IgUElEIGZpZWxkIGluIElPTVIgOiB1bnVz ZWQgZm9yIG5vdy4JKi8KKyNkZWZpbmUJIElPTVJfUElEX0RFRkFVTFQJCTB4MAkJCQkvKio8IGRl ZmF1bHQgUElEIHZhbHVlID0gMC4JKi8KKyNkZWZpbmUgSU9NUl9QVFlfT0ZGU0VUCSAJCTYJCQkJ LyoqPCBvZmZzZXQgZm9yIFBhY2tldCBUeXBlIGluIElPTVIgOiBhbHdheXMgYXVkaW8gMHgwMS4J Ki8KKyNkZWZpbmUJIElPTVJfUFRZX0FVRElPCQkJMHgxCQkJCS8qKjwgcGFja2V0IHR5cGUgQVVE SU8uCSovCisjZGVmaW5lCSBJT01SX1BUWV9ERUZBVUxUCQlJT01SX1BUWV9BVURJTwkvKio8IGRl ZmF1bHQgdmFsdWUgZm9yIFBhY2tldCBUeXBlLgkqLworI2RlZmluZSBJT01SX0JOUF9PRkZTRVQJ IAkJOAkJCQkvKio8IGJ1bmRsZSBudW1iZXIgb2Zmc2V0LgkqLworI2RlZmluZSBJT01SX0lPRF9P RkZTRVQJIAkJMTUJCQkJLyoqPCBvZmZzZXQgZm9yIHRoZSBidW5kbGUgZGlyZWN0aW9uIGJpdCA6 IHNpZ25pZmljYW50IGlmIGEgYmktZGlyIGVuZCBvZiBsb29wIGlzIGNvbmZpZ3VyZWQgaW4gdGhl IG5ldHdvcmsuKi8KKyNkZWZpbmUgIElPTVJfSU9EX1VQU1RSRUFNCQkweDEJCQkJLyoqPCAidXBz dHJlYW0iIHZhbHVlLiovCisjZGVmaW5lICBJT01SX0lPRF9ET1dOU1RSRUFNCTB4MAkJCQkvKio8 ICJkb3duc3RyZWFtIiB2YWx1ZS4qLworI2RlZmluZSAgT01SX0lPRF9ERUZBVUxUIAlJT01SX0lP RF9VUFNUUkVBTQkvKio8IGRlZmF1bHQgdmFsdWUgZm9yIE9NUjpJT0QuKi8KKyNkZWZpbmUgIElN Ul9JT0RfREVGQVVMVCAJSU9NUl9JT0RfRE9XTlNUUkVBTQkvKio8IGRlZmF1bHQgdmFsdWUgZm9y IElNUjpJT0QuKi8KKworCisjZW5kaWYgLy8gIWRlZmluZWQoQUZYX1BDSUVTREVGSU5FX0gpCisK Ky8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyAkaGlzdG9yeTokCisvLwpkaWZmIC0tZ2l0 IGEvc291bmQvcGNpL2x4NjQ2NGVzL01ha2VmaWxlIGIvc291bmQvcGNpL2x4NjQ2NGVzL01ha2Vm aWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyMzI1N2MKLS0tIC9kZXYv bnVsbAorKysgYi9zb3VuZC9wY2kvbHg2NDY0ZXMvTWFrZWZpbGUKQEAgLTAsMCArMSwxMyBAQAor aWZlcSAoJChLRVJORUxSRUxFQVNFKSwpCitzbmQtbHg2NDY0ZXMtb2JqcyA6PSBseDY0NjRlcy5v IGx4X2NvcmUubworb2JqLW0gKz0gc25kLWx4NjQ2NGVzLm8KK2FsbDoKKwltYWtlIC1DIC9saWIv bW9kdWxlcy8kKHNoZWxsIHVuYW1lIC1yKS9idWlsZCBNPSQoUFdEKSBtb2R1bGVzCisKK2NsZWFu OgorCW1ha2UgLUMgL2xpYi9tb2R1bGVzLyQoc2hlbGwgdW5hbWUgLXIpL2J1aWxkIE09JChQV0Qp IGNsZWFuCisKK2Vsc2UKK3NuZC1seDY0NjRlcy1vYmpzIDo9IGx4NjQ2NGVzLm8gbHhfY29yZS5v CitvYmotJChDT05GSUdfU05EX0xYNjQ2NEVTKSArPSBzbmQtbHg2NDY0ZXMubworZW5kaWYKZGlm ZiAtLWdpdCBhL3NvdW5kL3BjaS9seDY0NjRlcy9QY3hFcnJfZS5oIGIvc291bmQvcGNpL2x4NjQ2 NGVzL1BjeEVycl9lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ0OGM0 NgotLS0gL2Rldi9udWxsCisrKyBiL3NvdW5kL3BjaS9seDY0NjRlcy9QY3hFcnJfZS5oCkBAIC0w LDAgKzEsNjgwIEBACisvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gIENPUFlSSUdIVCAxOTk2 LTIwMDAgRElHSUdSQU0uCisvLworLy8gIERJR0lHUkFNCisvLworLy8gKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKKworI2lmbmRlZiBfUENYRVJST1JfSF8KKy8veworI2RlZmluZSBfUENYRVJST1JfSF8KKwor Ly8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKKy8vIEVycm9yIGNvZGUgc3RydWN0dXJlCisvLyAqKioqKioqKioqKioq KioqKioqKgorLy8KKy8vIEFuIGVycm9yIGNvZGUgaXMgMTYgYml0cyA6CisvLworLy8gICAgQml0 IDE1IDogMSA9IGVycm9yLCAwID0gd2FybmluZworLy8KKy8vICAgIEJpdHMgMTQtLT4xMSA6IHNv dXJjZSBvZiBlcnJvci93YXJuaW5nCisvLyAgICAgICAgICAweDEgPSBUT09MUyBzb3VyY2UgZXJy b3Ivd2FybmluZworLy8gICAgICAgICAgMHgyID0gQVBJIHNvdXJjZSBlcnJvci93YXJuaW5nCisv LyAgICAgICAgICAweDMgPSBBVURJTyBzb3VyY2UgZXJyb3Ivd2FybmluZworLy8gICAgICAgICAg MHg0ID0gRFJWIHNvdXJjZSBlcnJvci93YXJuaW5nCisvLyAgICAgICAgICAweDUgPSBWUENYIHNv dXJjZSBlcnJvci93YXJuaW5nCisvLyAgICAgICAgICAweDYgPSBESVNQQVRDSEVSIHNvdXJjZSBl cnJvci93YXJuaW5nCisvLyAgICAgICAgICAweDcgPSByZXNlcnZlZAorLy8gICAgICAgICAgMHg4 ID0gQk9BUkQgc291cmNlIGVycm9yL3dhcm5pbmcKKy8vICAgICAgICAgIDB4OS0tPjB4ZSA9IHJl c2VydmVkCisvLyAgICAgICAgICAweGYgPSBmcmVlIGZvciBVU0VSIHVzYWdlCisvLworLy8gICAg Qml0cyA4LS0+MTAgOiBDbGFzcyBjb2RlCisvLworLy8gICAgQml0cyAwLS0+NyAgOiBDb2RlCisv LworLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCisKKy8vIFJldHVybiB2YWx1ZSB3aGVuIE9LCisvLyAqKioqKioq KioqKioqKioqKioqKgorCisjZGVmaW5lIFNVQ0NFU1MgICAgICAgICAgICAgICAgIDAKKworCisv LyBCaXRzIG1hc2tzCisvLyAqKioqKioqKioqCisKKyNkZWZpbmUgRVJST1JfTUFTSyAgICAgICAg ICAgICAgMHg4MDAwCisKKyNkZWZpbmUgU09VUkNFX01BU0sgICAgICAgICAgICAgMHg3ODAwCisK KyNkZWZpbmUgRV9TT1VSQ0VfQk9BUkQgICAgICAgICAgMHg0MDAwIC8vOCA+PiAxCisjZGVmaW5l IEVfU09VUkNFX0RSViAgICAgICAgICAgIDB4MjAwMCAvLzQgPj4gMQorI2RlZmluZSBFX1NPVVJD RV9BUEkgICAgICAgICAgICAweDEwMDAgLy8yID4+IDEKKy8vIEVycm9yIHRvb2xzCisjZGVmaW5l IEVfU09VUkNFX1RPT0xTICAgICAgICAgIDB4MDgwMCAvLzEgPj4gMQorLy8gRXJyb3IgcGN4YXVk aW8KKyNkZWZpbmUgRV9TT1VSQ0VfQVVESU8gICAgICAgICAgMHgxODAwIC8vMyA+PiAxCisvLyBF cnJvciB2aXJ0dWFsIHBjeAorI2RlZmluZSBFX1NPVVJDRV9WUENYICAgICAgICAgICAweDI4MDAg Ly81ID4+IDEKKy8vIEVycm9yIGRpc3BhdGNoZXIKKyNkZWZpbmUgRV9TT1VSQ0VfRElTUEFUQ0hF UiAgICAgIDB4MzAwMCAvLzYgPj4gMQorLy8gRXJyb3IgZnJvbSBDb2JyYU5ldCBmaXJtd2FyZQor I2RlZmluZSBFX1NPVVJDRV9DT0JSQU5FVCAgICAgICAweDM4MDAgLy83ID4+IDEKKworI2RlZmlu ZSBFX1NPVVJDRV9VU0VSICAgICAgICAgICAweDc4MDAKKworI2RlZmluZSBDTEFTU19NQVNLICAg ICAgICAgICAgICAweDA3MDAKKworI2RlZmluZSBDT0RFX01BU0sgICAgICAgICAgICAgICAweDAw RkYKKworLy8gQml0cyB2YWx1ZXMKKy8vICoqKioqKioqKioqCisKKy8vIFZhbHVlcyBmb3IgdGhl IGVycm9yL3dhcm5pbmcgYml0CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor I2RlZmluZSBFUlJPUl9WQUxVRSAgICAgICAgICAgICAweDgwMDAKKyNkZWZpbmUgV0FSTklOR19W QUxVRSAgICAgICAgICAgMHgwMDAwCisKKy8vIENsYXNzIHZhbHVlcworLy8gLS0tLS0tLS0tLS0t CisjZGVmaW5lIEVfQ0xBU1NfR0VORVJBTCAgICAgICAgICAgICAgICAgIDB4MDAwMAorI2RlZmlu ZSBFX0NMQVNTX0lOVkFMSURfQ01EICAgICAgICAgICAgICAweDAxMDAKKyNkZWZpbmUgRV9DTEFT U19JTlZBTElEX1NURF9PQkpFQ1QgICAgICAgMHgwMjAwCisjZGVmaW5lIEVfQ0xBU1NfUlNSQ19J TVBPU1NJQkxFICAgICAgICAgIDB4MDMwMAorI2RlZmluZSBFX0NMQVNTX1dST05HX0NPTlRFWFQg ICAgICAgICAgICAweDA0MDAKKyNkZWZpbmUgRV9DTEFTU19CQURfU1BFQ0lGSUNfUEFSQU1FVEVS ICAgMHgwNTAwCisjZGVmaW5lIEVfQ0xBU1NfUkVBTF9USU1FX0VSUk9SICAgICAgICAgIDB4MDYw MAorI2RlZmluZSBFX0NMQVNTX0RJUkVDVFNIT1cgICAgICAgICAgICAgICAweDA3MDAKKyNkZWZp bmUgRV9DTEFTU19GUkVFICAgICAgICAgICAgICAgICAgICAgMHgwNzAwCisKKy8vIENvbXBsZXRl IEFQSSB3YXJuaW5nIGNvZGUgZm9yIHRoZSBnZW5lcmFsIGNsYXNzCisvLyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorI2RlZmluZSBXQV9HTiAgICAgICAg ICAgKFdBUk5JTkdfVkFMVUUgfCBFX1NPVVJDRV9BUEkgfCBFX0NMQVNTX0dFTkVSQUwpCisjZGVm aW5lIFdBX01PUkVfREFUQSAgICAgICAgICAgICAgICAgICAgKFdBX0dOIHwgMFgwMSkKKyNkZWZp bmUgV0FfTk9fTU9SRV9EQVRBICAgICAgICAgICAgICAgICAoV0FfR04gfCAweDAyKQorI2RlZmlu ZSBXQV9FU1RJTUFURURfVkFMVUUgICAgICAgICAgICAgIChXQV9HTiB8IDB4MDMpCisjZGVmaW5l IFdBX0dFTkVSSUNfV0FSTklORyAgICAgICAgICAgICAgKFdBX0dOIHwgMHgwNCkKKworLy8gQ29t cGxldGUgQVBJIGVycm9yIGNvZGUgZm9yIHRoZSBnZW5lcmFsIGNsYXNzCisvLyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyNkZWZpbmUgRUFfR04gICAgICAg ICAgIChFUlJPUl9WQUxVRSB8IEVfU09VUkNFX0FQSSB8IEVfQ0xBU1NfR0VORVJBTCkKKyNkZWZp bmUgRUFfRFJJVkVSX05PVF9MT0FERUQgICAgICAgICAgICAoRUFfR04gfCAweDAxKQorI2RlZmlu ZSBFQV9VTktOT1dOX01FTU9SWV9UWVBFICAgICAgICAgIChFQV9HTiB8IDB4MDIpCisjZGVmaW5l IEVBX1VTRV9YTVNfTUVNT1JZX0lNUE9TU0lCTEUgICAgKEVBX0dOIHwgMHgwMykKKyNkZWZpbmUg RUFfQ0FOVF9UQUtFX01VVEVYICAgICAgICAgICAgICAoRUFfR04gfCAweDA0KQorI2RlZmluZSBF QV9WRVJTSU9OX01JU01BVENIICAgICAgICAgICAgIChFQV9HTiB8IDB4MDUpCisjZGVmaW5lIEVB X0ZJTEVfQ09SUlVQVEVEICAgICAgICAgICAgICAgKEVBX0dOIHwgMHgwNikKKyNkZWZpbmUgRUFf RExMX05PVF9MT0FERUQgICAgICAgICAgICAgICAoRUFfR04gfCAweDA3KQorI2RlZmluZSBFQV9V TktOT1dOX0JPQVJEICAgICAgICAgICAgICAgIChFQV9HTiB8IDB4MDgpCisjZGVmaW5lIEVBX0NS RUFURV9USFJFQURfRkFJTEVEICAgICAgICAgKEVBX0dOIHwgMHgwOSkKKyNkZWZpbmUgRUFfRkVB VFVSRV9OT1RfQVVUSE9SSVpFRCAgICAgICAoRUFfR04gfCAweDBhKQorI2RlZmluZSBFQV9UT09f TVVDSF9EQVRBICAgICAgICAgICAgICAgIChFQV9HTiB8IDB4MGIpCisjZGVmaW5lIEVBX0NPTU1B TkRfTk9UX0FWQUlMQUJMRSAgICAgICAgKEVBX0dOIHwgMHgwYykKKworLy8gQ29tcGxldGUgQVBJ IHdhcm5pbmcgY29kZSBmb3IgdGhlIGludmFsaWQgY29tbWFuZCBjbGFzcworLy8gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorI2RlZmluZSBX QV9JQyAgICAgICAgICAgKFdBUk5JTkdfVkFMVUUgfCBFX1NPVVJDRV9BUEkgfCBFX0NMQVNTX0lO VkFMSURfQ01EKQorI2RlZmluZSBXQV9DT01NQU5EX05PVF9BVkFJTEFCTEUgICAgICAgIChXQV9J QyB8IDB4MDEpCisKKy8vIENvbXBsZXRlIEFQSSBlcnJvciBjb2RlIGZvciB0aGUgaW52YWxpZCBj b21tYW5kIGNsYXNzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorI2RlZmluZSBFQV9JQyAgICAgICAgICAgKEVSUk9SX1ZBTFVFIHwgRV9T T1VSQ0VfQVBJIHwgRV9DTEFTU19JTlZBTElEX0NNRCkKKworLy8gQ29tcGxldGUgQVBJIHdhcm5p bmcgY29kZSBmb3IgdGhlIGludmFsaWQgc3RhbmRhcmQgb2JqZWN0IGNsYXNzCisvLyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisj ZGVmaW5lIFdBX0lTTyAgICAgICAgICAoV0FSTklOR19WQUxVRSB8IEVfU09VUkNFX0FQSSB8IEVf Q0xBU1NfSU5WQUxJRF9TVERfT0JKRUNUKQorI2RlZmluZSBXQV9JTlZBTElEX1BBUkFNRVRFUiAg ICAgICAgICAgIChXQV9JU08gfCAweDAxKQorCisvLyBDb21wbGV0ZSBBUEkgZXJyb3IgY29kZSBm b3IgdGhlIGludmFsaWQgc3RhbmRhcmQgb2JqZWN0IGNsYXNzCisvLyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjZGVmaW5lIEVB X0lTTyAgICAgICAgICAoRVJST1JfVkFMVUUgfCBFX1NPVVJDRV9BUEkgfCBFX0NMQVNTX0lOVkFM SURfU1REX09CSkVDVCkKKyNkZWZpbmUgRUFfSU5WQUxJRF9CVUZGRVIgICAgICAgICAgICAgICAo RUFfSVNPIHwgMHgwMSkKKyNkZWZpbmUgRUFfSU5WQUxJRF9QQ1hfSEFORExFICAgICAgICAgICAo RUFfSVNPIHwgMHgwMikKKyNkZWZpbmUgRUFfSU5WQUxJRF9QSVBFICAgICAgICAgICAgICAgICAo RUFfSVNPIHwgMHgwMykKKyNkZWZpbmUgRUFfSU5WQUxJRF9QQVJBTUVURVIgICAgICAgICAgICAo RUFfSVNPIHwgMHgwNCkKKyNkZWZpbmUgRUFfSU5WQUxJRF9EQVRBX0xFTkdUSCAgICAgICAgICAo RUFfSVNPIHwgMHgwNSkKKyNkZWZpbmUgRUFfSU5WQUxJRF9GVU5DVElPTiAgICAgICAgICAgICAo RUFfSVNPIHwgMHgwNikKKworLy8gQ29tcGxldGUgQVBJIGVycm9yIGNvZGUgZm9yIGltcG9zc2li bGUgcmVzb3VyY2UgYWxsb2NhdGlvbiBjbGFzcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorI2RlZmluZSBFQV9SSSAg ICAgICAgICAgKEVSUk9SX1ZBTFVFIHwgRV9TT1VSQ0VfQVBJIHwgRV9DTEFTU19SU1JDX0lNUE9T U0lCTEUpCisjZGVmaW5lIEVBX0FMTE9DQVRFX0FTWU5DX0lNUE9TU0lCTEUgICAgKEVBX1JJIHwg MHgwMSkKKyNkZWZpbmUgRUFfQUxMT0NBVEVfQ01EX0JMS19JTVBPU1NJQkxFICAoRUFfUkkgfCAw eDAyKQorI2RlZmluZSBFQV9BTExPQ0FURV9NRU1PUllfSU1QT1NTSUJMRSAgIChFQV9SSSB8IDB4 MDMpCisKKy8vIENvbXBsZXRlIEFQSSBlcnJvciBjb2RlIGZvciB3cm9uZyBjYWxsIGNvbnRleHQg Y2xhc3MKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyNkZWZpbmUgRUFfV0NDICAgICAgICAgIChFUlJPUl9WQUxVRSB8IEVfU09VUkNFX0FQ SSB8IEVfQ0xBU1NfV1JPTkdfQ09OVEVYVCkKKyNkZWZpbmUgRUFfQlVGRkVSX1JFRlVTRUQgICAg ICAgICAgICAgICAoRUFfV0NDIHwgMHgwMSkKKyNkZWZpbmUgRUFfV0FJVF9SRVFVRVNUX1JFRlVT RUQgICAgICAgICAoRUFfV0NDIHwgMHgwMikKKyNkZWZpbmUgRUFfTE9BRF9EU1BfUkVGVVNFRCAg ICAgICAgICAgICAoRUFfV0NDIHwgMHgwMykKKyNkZWZpbmUgRUFfU0VUX09FTV9ETExfUkVGVVNF RCAgICAgICAgICAoRUFfV0NDIHwgMHgwNCkKKworLy8gQ29tcGxldGUgQVBJIHdhcm5pbmcgY29k ZSBmb3IgYmFkIHNwZWNpZmljIHBhcmFtZXRlciBjbGFzcworLy8gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyNkZWZpbmUgV0FfV1NQICAg ICAgKFdBUk5JTkdfVkFMVUUgfCBFX1NPVVJDRV9BUEkgfCBFX0NMQVNTX0JBRF9TUEVDSUZJQ19Q QVJBTUVURVIpCisjZGVmaW5lIFdBX0xFVkVMX09VVF9PRl9SQU5HRSAgICAgICAgICAgKFdBX1dT UCB8IDB4MDEpCisjZGVmaW5lIFdBX1BBUkFNRVRFUl9BREpVU1RFRCAgICAgICAgICAgKFdBX1dT UCB8IDB4MDIpCisKKy8vIENvbXBsZXRlIEFQSSBlcnJvciBjb2RlIGZvciBiYWQgc3BlY2lmaWMg cGFyYW1ldGVyIGNsYXNzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorI2RlZmluZSBFQV9XU1AgICAgICAoRVJST1JfVkFMVUUgfCBF X1NPVVJDRV9BUEkgfCBFX0NMQVNTX0JBRF9TUEVDSUZJQ19QQVJBTUVURVIpCisjZGVmaW5lIEVB X0FQUExJQ0FUSU9OX05BTUVfU0laRSAgICAgICAgKEVBX1dTUCB8IDB4MDEpCisjZGVmaW5lIEVB X0JBRF9TWU5DX1NPVVJDRSAgICAgICAgICAgICAgKEVBX1dTUCB8IDB4MDIpCisjZGVmaW5lIEVB X09QRU5fRklMRV9JTVBPU1NJQkxFICAgICAgICAgKEVBX1dTUCB8IDB4MDMpCisjZGVmaW5lIEVB X1JFQURfRklMRV9JTVBPU1NJQkxFICAgICAgICAgKEVBX1dTUCB8IDB4MDQpCisjZGVmaW5lIEVB X0ZJTEVfVE9PX0xBUkdFICAgICAgICAgICAgICAgKEVBX1dTUCB8IDB4MDUpCisjZGVmaW5lIEVB X0JBRF9TVFJFQU1fTlVNQkVSICAgICAgICAgICAgKEVBX1dTUCB8IDB4MDYpCisjZGVmaW5lIEVB X0JBRF9BVURJT19OVU1CRVIgICAgICAgICAgICAgKEVBX1dTUCB8IDB4MDcpCisjZGVmaW5lIEVB X0JBRF9FRkZFQ1RfSUQgICAgICAgICAgICAgICAgKEVBX1dTUCB8IDB4MDgpCisjZGVmaW5lIEVB X0JBRF9GUkVRVUVOQ1lfVkFMVUUgICAgICAgICAgKEVBX1dTUCB8IDB4MDkpCisjZGVmaW5lIEVB X01PREVfTk9UX0FWQUlMQUJMRSAgICAgICAgICAgKEVBX1dTUCB8IDB4MGEpCisjZGVmaW5lIEVB X0NPTlRFWFRfTk9UX0FWQUlMQUJMRSAgICAgICAgKEVBX1dTUCB8IDB4MGIpCisjZGVmaW5lIEVB X0JBRF9FRkZFQ1RfUEFSQU1FVEVSICAgICAgICAgKEVBX1dTUCB8IDB4MGMpCisjZGVmaW5lIEVB X0JBRF9EU1BfRkVBVFVSRVMgICAgICAgICAgICAgKEVBX1dTUCB8IDB4MGQpCisjZGVmaW5lIEVB X0JBRF9QTEFZX0ZPUk1BVFMgICAgICAgICAgICAgKEVBX1dTUCB8IDB4MGUpCisjZGVmaW5lIEVB X0JBRF9SRUNPUkRfRk9STUFUUyAgICAgICAgICAgKEVBX1dTUCB8IDB4MGYpCisjZGVmaW5lIEVB X0JBRF9QTEFZX0VGRkVDVFMgICAgICAgICAgICAgKEVBX1dTUCB8IDB4MTApCisjZGVmaW5lIEVB X0JBRF9SRUNPUkRfRUZGRUNUUyAgICAgICAgICAgKEVBX1dTUCB8IDB4MTEpCisjZGVmaW5lIEVB X0JBRF9TT1VORF9GT1JNQVQgICAgICAgICAgICAgKEVBX1dTUCB8IDB4MTIpCisjZGVmaW5lIEVB X0JBRF9USU1FX0NPREVfTlVNQkVSICAgICAgICAgKEVBX1dTUCB8IDB4MTMpCisjZGVmaW5lIEVB X0JBRF9CQU5EX05VTUJFUiAgICAgICAgICAgICAgKEVBX1dTUCB8IDB4MTQpCisjZGVmaW5lIEVB X0JBRF9PRU1fSUQgICAgICAgICAgICAgICAgICAgKEVBX1dTUCB8IDB4MTUpCisjZGVmaW5lIEVB X0lOVkFMSURfUE9JTlRFUiAgICAgICAgICAgICAgKEVBX1dTUCB8IDB4MTYpCisjZGVmaW5lIEVB X0JBRF9NVUxUSUNIQU5ORUxfRk9STUFUICAgICAgKEVBX1dTUCB8IDB4MTcpCisKKy8vIFZQQ1gg QUREIC0gQmVnaW4KKy8vIENvbXBsZXRlIEFQSSBlcnJvciBjb2RlIGZvciBkaXJlY3Qgc2hvdyBw cm9ibGVtcyBjbGFzcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisjZGVmaW5lIEVBX0RTICAgICAgIChFUlJPUl9WQUxVRSB8IEVfU09V UkNFX1ZQQ1ggfCBFX0NMQVNTX0RJUkVDVFNIT1cpCisjZGVmaW5lIEVBX1NSQ0ZJTFRFUl9JTlNU QU5DSUFUSU9OX0ZBSUxFRCAgKEVBX0RTIHwgMHgwMSkKKyNkZWZpbmUgRUFfREVDT0RNSVhfSU5T VEFOQ0lBVElPTl9GQUlMRUQgICAoRUFfRFMgfCAweDAyKQorI2RlZmluZSBFQV9STkRGSUxURVJf SU5TVEFOQ0lBVElPTl9GQUlMRUQgIChFQV9EUyB8IDB4MDMpCisjZGVmaW5lIEVBX0VGRkVDVF9J TlNUQU5DSUFUSU9OX0ZBSUxFRCAgICAgKEVBX0RTIHwgMHgwNCkKKyNkZWZpbmUgRUFfREVDRklM VEVSX0lOU1RBTkNJQVRJT05fRkFJTEVEICAoRUFfRFMgfCAweDA1KQorI2RlZmluZSBFQV9DT0RG SUxURVJfSU5TVEFOQ0lBVElPTl9GQUlMRUQgIChFQV9EUyB8IDB4MDYpCisjZGVmaW5lIEVBX0NB Tk5PVF9HRVRfSU5URVJGQUNFICAgICAgICAgICAgKEVBX0RTIHwgMHgwNykKKyNkZWZpbmUgRUFf RklMVEVSX0dSQVBIX0VSUk9SICAgICAgICAgICAgICAoRUFfRFMgfCAweDA4KQorI2RlZmluZSBF QV9OT19XQVZFX0RSSVZFUiAgICAgICAgICAgICAgICAgIChFQV9EUyB8IDB4MDkpCisjZGVmaW5l IEVBX1NSQ0ZJTFRFUl9SVU5USU1FX0VSUk9SICAgICAgICAgKEVBX0RTIHwgMHgwQSkKKyNkZWZp bmUgRUFfREVDT0RNSVhfUlVOVElNRV9FUlJPUiAgICAgICAgICAoRUFfRFMgfCAweDBCKQorI2Rl ZmluZSBFQV9STkRGSUxURVJfUlVOVElNRV9FUlJPUiAgICAgICAgIChFQV9EUyB8IDB4MEMpCisj ZGVmaW5lIEVBX0ZDRklMVEVSX1JVTlRJTUVfRVJST1IgICAgICAgICAgKEVBX0RTIHwgMHgwRCkK KyNkZWZpbmUgRUFfREVJTlRFUkxFQVZFRklMVEVSX0lOU1RBTkNJQVRJT05fRkFJTEVEICAoRUFf RFMgfCAweDBFKQorI2RlZmluZSBFQV9JTlRFUkxFQVZFRklMVEVSX0lOU1RBTkNJQVRJT05fRkFJ TEVEICAgIChFQV9EUyB8IDB4MEYpCisjZGVmaW5lIEVBX01QRUdDT0RFUl9SVU5USU1FX0VSUk9S ICAgICAgICAgKEVBX0RTIHwgMHgxMCkKKyNkZWZpbmUgRUFfUENDT0RFUk1QRUdfUlVOVElNRV9F UlJPUiAgICAgICBFQV9NUEVHQ09ERVJfUlVOVElNRV9FUlJPUiAvLyBmb3IgY29tcGF0aWJpbGl0 eQorI2RlZmluZSBFQV9QQ01DT0RFUl9SVU5USU1FX0VSUk9SICAgICAgICAgIChFQV9EUyB8IDB4 MTEpCisjZGVmaW5lIEVBX0VGRkVDVF9OT1RfRk9VTkQgICAgICAgICAgICAgICAgKEVBX0RTIHwg MHgxMikKKyNkZWZpbmUgRUFfQUFDQ09ERVJfUlVOVElNRV9FUlJPUiAgICAgICAgICAoRUFfRFMg fCAweDEzKQorI2RlZmluZSBFQV9XTUFDT0RFUl9SVU5USU1FX0VSUk9SICAgICAgICAgIChFQV9E UyB8IDB4MTQpCisvLyBWUENYIEFERCAtIEVuZAorCisKKy8vIENvbXBsZXRlIEFQSSB3YXJuaW5n IGNvZGUgZm9yIHJlYWwgdGltZSBjbGFzcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisjZGVmaW5lIFdBX1JUICAgICAgICAgICAoV0FSTklOR19WQUxV RSB8IEVfU09VUkNFX0FQSSB8IEVfQ0xBU1NfUkVBTF9USU1FX0VSUk9SKQorI2RlZmluZSBXQV9D QU5OT1RfQ0FOQ0VMICAgICAgICAgICAgICAgIChXQV9SVCB8IDB4MDcpCisKKy8vIENvbXBsZXRl IERSViBlcnJvciBjb2RlIGZvciB0aGUgZ2VuZXJhbCBjbGFzcworLy8gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjZGVmaW5lIEVEX0dOICAgICAgICAgICAo RVJST1JfVkFMVUUgfCBFX1NPVVJDRV9EUlYgfCBFX0NMQVNTX0dFTkVSQUwpCisjZGVmaW5lIEVE X0NPTkNVUlJFTkNZICAgICAgICAgICAgICAgICAgKEVEX0dOIHwgMHgwMSkKKyNkZWZpbmUgRURf RFNQX0NSQVNIRUQgICAgICAgICAgICAgICAgICAoRURfR04gfCAweDAyKQorI2RlZmluZSBFRF9V TktOT1dOX0JPQVJEICAgICAgICAgICAgICAgIChFRF9HTiB8IDB4MDMpCisjZGVmaW5lIEVEX05P VF9JTlNUQUxMRUQgICAgICAgICAgICAgICAgKEVEX0dOIHwgMHgwNCkKKyNkZWZpbmUgRURfQ0FO Tk9UX09QRU5fU1ZDX01BTkFHRVIgICAgICAoRURfR04gfCAweDA1KQorI2RlZmluZSBFRF9DQU5O T1RfUkVBRF9SRUdJU1RSWSAgICAgICAgIChFRF9HTiB8IDB4MDYpCisjZGVmaW5lIEVEX0RTUF9W RVJTSU9OX01JU01BVENIICAgICAgICAgKEVEX0dOIHwgMHgwNykKKyNkZWZpbmUgRURfVU5BVkFJ TEFCTEVfRkVBVFVSRSAgICAgICAgICAoRURfR04gfCAweDA4KQorI2RlZmluZSBFRF9DQU5DRUxM RUQgICAgICAgICAgICAgICAgICAgIChFRF9HTiB8IDB4MDkpCisjZGVmaW5lIEVEX05PX1JFU1BP TlNFX0FUX0lSUUEgICAgICAgICAgKEVEX0dOIHwgMHgxMCkKKyNkZWZpbmUgRURfSU5WQUxJRF9B RERSRVNTICAgICAgICAgICAgICAoRURfR04gfCAweDExKQorI2RlZmluZSBFRF9EU1BfQ09SUlVQ VEVEICAgICAgICAgICAgICAgIChFRF9HTiB8IDB4MTIpCisjZGVmaW5lIEVEX1BFTkRJTkdfT1BF UkFUSU9OICAgICAgICAgICAgKEVEX0dOIHwgMHgxMykKKyNkZWZpbmUgRURfTkVUX0FMTE9DQVRF X01FTU9SWV9JTVBPU1NJQkxFICAgKEVEX0dOIHwgMHgxNCkKKyNkZWZpbmUgRURfTkVUX1JFR0lT VEVSX0VSUk9SICAgICAgICAgICAgICAgKEVEX0dOIHwgMHgxNSkKKyNkZWZpbmUgRURfTkVUX1RI UkVBRF9FUlJPUiAgICAgICAgICAgICAgICAgKEVEX0dOIHwgMHgxNikKKyNkZWZpbmUgRURfTkVU X09QRU5fRVJST1IgICAgICAgICAgICAgICAgICAgKEVEX0dOIHwgMHgxNykKKyNkZWZpbmUgRURf TkVUX0NMT1NFX0VSUk9SICAgICAgICAgICAgICAgICAgKEVEX0dOIHwgMHgxOCkKKyNkZWZpbmUg RURfTkVUX05PX01PUkVfUEFDS0VUICAgICAgICAgICAgICAgKEVEX0dOIHwgMHgxOSkKKyNkZWZp bmUgRURfTkVUX05PX01PUkVfQlVGRkVSICAgICAgICAgICAgICAgKEVEX0dOIHwgMHgxQSkKKyNk ZWZpbmUgRURfTkVUX1NFTkRfRVJST1IgICAgICAgICAgICAgICAgICAgKEVEX0dOIHwgMHgxQikK KyNkZWZpbmUgRURfTkVUX1JFQ0VJVkVfRVJST1IgICAgICAgICAgICAgICAgKEVEX0dOIHwgMHgx QykKKyNkZWZpbmUgRURfTkVUX1dST05HX01TR19TSVpFICAgICAgICAgICAgICAgKEVEX0dOIHwg MHgxRCkKKyNkZWZpbmUgRURfTkVUX1dBSVRfRVJST1IgICAgICAgICAgICAgICAgICAgKEVEX0dO IHwgMHgxRSkKKyNkZWZpbmUgRURfTkVUX0VFUFJPTV9FUlJPUiAgICAgICAgICAgICAgICAgKEVE X0dOIHwgMHgxRikKKyNkZWZpbmUgRURfSU5WQUxJRF9SUzIzMl9DT01fTlVNQkVSICAgICAgICAg KEVEX0dOIHwgMHgyMCkKKyNkZWZpbmUgRURfSU5WQUxJRF9SUzIzMl9JTklUICAgICAgICAgICAg ICAgKEVEX0dOIHwgMHgyMSkKKyNkZWZpbmUgRURfRklMRV9FUlJPUiAgICAgICAgICAgICAgICAg ICAgICAgKEVEX0dOIHwgMHgyMikKKyNkZWZpbmUgRURfSU5WQUxJRF9HUElPX0NNRCAgICAgICAg ICAgICAgICAgKEVEX0dOIHwgMHgyMykKKyNkZWZpbmUgRURfUlMyMzJfQUxSRUFEWV9PUEVORUQg ICAgICAgICAgICAgKEVEX0dOIHwgMHgyNCkKKyNkZWZpbmUgRURfUlMyMzJfTk9UX09QRU5FRCAg ICAgICAgICAgICAgICAgKEVEX0dOIHwgMHgyNSkKKyNkZWZpbmUgRURfR1BJT19BTFJFQURZX09Q RU5FRCAgICAgICAgICAgICAgKEVEX0dOIHwgMHgyNikKKyNkZWZpbmUgRURfR1BJT19OT1RfT1BF TkVEICAgICAgICAgICAgICAgICAgKEVEX0dOIHwgMHgyNykKKyNkZWZpbmUgRURfUkVHSVNUUllf RVJST1IgICAgICAgICAgICAgICAgICAgKEVEX0dOIHwgMHgyOCkvLyA8LSBOQ1gKKyNkZWZpbmUg RURfSU5WQUxJRF9TRVJWSUNFICAgICAgICAgICAgICAgICAgKEVEX0dOIHwgMHgyOSkvLyA8LSBO Q1gKKworI2RlZmluZSBFRF9SRUFEX0ZJTEVfQUxSRUFEWV9PUEVORUQJCQkgICAgKEVEX0dOIHwg MHgyYSkvLyA8LSBEZWNhbGFnZSBwb3VyIFJDWCAob2xkIDB4MjgpCisjZGVmaW5lIEVEX1JFQURf RklMRV9JTlZBTElEX0NPTU1BTkQJCSAgICAoRURfR04gfCAweDJiKS8vIH4KKyNkZWZpbmUgRURf UkVBRF9GSUxFX0lOVkFMSURfUEFSQU1FVEVSCQkgIChFRF9HTiB8IDB4MmMpLy8gfgorI2RlZmlu ZSBFRF9SRUFEX0ZJTEVfQUxSRUFEWV9DTE9TRUQJCQkgICAgKEVEX0dOIHwgMHgyZCkvLyB+Cisj ZGVmaW5lIEVEX1JFQURfRklMRV9OT19JTkZPUk1BVElPTgkJCSAgICAoRURfR04gfCAweDJlKS8v IH4KKyNkZWZpbmUgRURfUkVBRF9GSUxFX0lOVkFMSURfSEFORExFCQkJICAgIChFRF9HTiB8IDB4 MmYpLy8gfgorI2RlZmluZSBFRF9SRUFEX0ZJTEVfRU5EX09GX0ZJTEUJCQkgICAgICAoRURfR04g fCAweDMwKS8vIH4KKyNkZWZpbmUgRURfUkVBRF9GSUxFX0VSUk9SCQkJCQkgICAgICAgIChFRF9H TiB8IDB4MzEpLy8gfgorCisjZGVmaW5lIEVEX0RTUF9DUkFTSEVEX0VYQ19EU1BTVEFDS19PVkVS RkxPVyAoRURfR04gfCAweDMyKS8vIDwtIERlY2FsYWdlIHBvdXIgUENYIChvbGQgMHgxNCkKKyNk ZWZpbmUgRURfRFNQX0NSQVNIRURfRVhDX1NZU1NUQUNLX09WRVJGTE9XIChFRF9HTiB8IDB4MzMp Ly8gfgorI2RlZmluZSBFRF9EU1BfQ1JBU0hFRF9FWENfSUxMRUdBTCAgICAgICAgICAgKEVEX0dO IHwgMHgzNCkvLyB+CisjZGVmaW5lIEVEX0RTUF9DUkFTSEVEX0VYQ19USU1FUl9SRUVOVFJZICAg ICAoRURfR04gfCAweDM1KS8vIH4KKyNkZWZpbmUgRURfRFNQX0NSQVNIRURfRVhDX0ZBVEFMX0VS Uk9SICAgICAgIChFRF9HTiB8IDB4MzYpLy8gfgorCisjZGVmaW5lIEVEX0ZMQVNIX1BDQ0FSRF9O T1RfUFJFU0VOVCAgICAgICAgICAoRURfR04gfCAweDM3KQorCisjZGVmaW5lIEVEX05PX0NVUlJF TlRfQ0xPQ0sgICAgICAgICAgICAgICAgICAoRURfR04gfCAweDM4KQorCisKKy8vIENvbXBsZXRl IERSViB3YXJuaW5nIGNvZGUgZm9yIHRoZSBnZW5lcmFsIGNsYXNzCisvLyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyNkZWZpbmUgV0RfR04gICAgICAgICAg IChXQVJOSU5HX1ZBTFVFIHwgRV9TT1VSQ0VfRFJWIHwgRV9DTEFTU19HRU5FUkFMKQorI2RlZmlu ZSBXRF9NT1JFX0RBVEEgICAgICAgICAgICAgICAgICAgIChXRF9HTiB8IDB4MDEpCisjZGVmaW5l IFdEX05PX01PUkVfREFUQSAgICAgICAgICAgICAgICAgKFdEX0dOIHwgMHgwMikKKyNkZWZpbmUg V0RfRFNQX1ZFUlNJT05fTUlTTUFUQ0ggICAgICAgICAoV0RfR04gfCAweDA3KQorI2RlZmluZSBX RF9JQkxfQ0xJUFBFRCAgICAgICAgICAgICAgICAgIChXRF9HTiB8IDB4MDgpCS8qKjwgb24gVlg6 IHdoZW4gSW50ZXJuYWwgQnVmZmVyIExhdGVuY3kgc2V0dGluZ3MgYXJlIG5vdCBpbiBhY2NvcmRh bmNlIHdpdGggZ3JhbnVsYXJpdHkuKi8KKyNkZWZpbmUgV0RfRkxBU0hfQ0FSRF9SRUlOU0VSVEVE ICAgICAgICAoV0RfR04gfCAweDE3KQorCisKKy8vIENvbXBsZXRlIERSViBlcnJvciBjb2RlIGZv ciB0aGUgaW52YWxpZCBjb21tYW5kIGNsYXNzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorI2RlZmluZSBFRF9JQyAgICAgICAgICAgKEVS Uk9SX1ZBTFVFIHwgRV9TT1VSQ0VfRFJWIHwgRV9DTEFTU19JTlZBTElEX0NNRCkKKyNkZWZpbmUg RURfSU5WQUxJRF9GQU0gICAgICAgICAgICAgICAgICAoRURfSUMgfCAweDAxKQorI2RlZmluZSBF RF9JTlZBTElEX0NNRF9GQU0xICAgICAgICAgICAgIChFRF9JQyB8IDB4MDIpCisjZGVmaW5lIEVE X0lOVkFMSURfQ01EX0ZBTTIgICAgICAgICAgICAgKEVEX0lDIHwgMHgwMykKKyNkZWZpbmUgRURf SU5WQUxJRF9DTURfRkFNMyAgICAgICAgICAgICAoRURfSUMgfCAweDA0KQorI2RlZmluZSBFRF9J TlZBTElEX0NNRF9GQU00ICAgICAgICAgICAgIChFRF9JQyB8IDB4MDUpCisjZGVmaW5lIEVEX0lO VkFMSURfQ01EX0ZBTTUgICAgICAgICAgICAgKEVEX0lDIHwgMHgwNikKKyNkZWZpbmUgRURfSU5W QUxJRF9DTURfRkFNNiAgICAgICAgICAgICAoRURfSUMgfCAweDA3KQorI2RlZmluZSBFRF9JTlZB TElEX0NNRF9GQU03ICAgICAgICAgICAgIChFRF9JQyB8IDB4MDgpCisjZGVmaW5lIEVEX0lOVkFM SURfQ01EX0ZBTTggICAgICAgICAgICAgKEVEX0lDIHwgMHgwOSkKKyNkZWZpbmUgRURfSU5WQUxJ RF9DTURfRkFNOSAgICAgICAgICAgICAoRURfSUMgfCAweDBBKQorI2RlZmluZSBFRF9JTlZBTElE X0NNRF9GQU0xMCAgICAgICAgICAgIChFRF9JQyB8IDB4MEIpCisjZGVmaW5lIEVEX0lOVkFMSURf Q01EX0ZBTTExICAgICAgICAgICAgKEVEX0lDIHwgMHgwQykKKyNkZWZpbmUgRURfSU5WQUxJRF9D TURfRkFNMTIgICAgICAgICAgICAoRURfSUMgfCAweDBEKQorI2RlZmluZSBFRF9JTlZBTElEX0NN RF9GQU0xMyAgICAgICAgICAgIChFRF9JQyB8IDB4MEUpCisKKy8vIENvbXBsZXRlIERSViBlcnJv ciBjb2RlIGZvciB0aGUgaW52YWxpZCBzdGFuZGFyZCBvYmplY3QgY2xhc3MKKy8vIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyNk ZWZpbmUgRURfSVNPICAgICAgICAgIChFUlJPUl9WQUxVRSB8IEVfU09VUkNFX0RSViB8IEVfQ0xB U1NfSU5WQUxJRF9TVERfT0JKRUNUKQorI2RlZmluZSBFRF9JTlZBTElEX1BDWF9IQU5ETEUgICAg ICAgICAgIChFRF9JU08gfCAweDAxKQorI2RlZmluZSBFRF9JTlZBTElEX1BJUEUgICAgICAgICAg ICAgICAgIChFRF9JU08gfCAweDAyKQorI2RlZmluZSBFRF9JTlZBTElEX1NUUkVBTSAgICAgICAg ICAgICAgIChFRF9JU08gfCAweDAzKQorI2RlZmluZSBFRF9JTlZBTElEX1BJUEVfQVVESU8gICAg ICAgICAgIChFRF9JU08gfCAweDA0KQorI2RlZmluZSBFRF9JTlZBTElEX0JVRkZFUiAgICAgICAg ICAgICAgIChFRF9JU08gfCAweDA1KQorI2RlZmluZSBFRF9JTlZBTElEX0RTUF9TT0ZUV0FSRSAg ICAgICAgIChFRF9JU08gfCAweDA2KQorI2RlZmluZSBFRF9JTlZBTElEX0JPQVJEICAgICAgICAg ICAgICAgIChFRF9JU08gfCAweDA3KQorI2RlZmluZSBFRF9JTlZBTElEX0RTUCAgICAgICAgICAg ICAgICAgIChFRF9JU08gfCAweDA4KQorI2RlZmluZSBFRF9JTlZBTElEX0JPQVJEX0FVRElPICAg ICAgICAgIChFRF9JU08gfCAweDA5KQorI2RlZmluZSBFRF9JTlZBTElEX0ZSRVFVRU5DWSAgICAg ICAgICAgIChFRF9JU08gfCAweDBhKQorCisvLyBDb21wbGV0ZSBEUlYgd2FybmluZyBjb2RlIGZv ciBpbXBvc3NpYmxlIHJlc291cmNlIGFsbG9jYXRpb24gY2xhc3MKKy8vIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorI2Rl ZmluZSBXRF9SSSAgICAgICAgICAgKFdBUk5JTkdfVkFMVUUgfCBFX1NPVVJDRV9EUlYgfCBFX0NM QVNTX1JTUkNfSU1QT1NTSUJMRSkKKyNkZWZpbmUgV0RfVU5ERVJfQUxMT0NBVEVfQlVGRkVSICAg ICAgICAoV0RfUkkgfCAweDAxKQorI2RlZmluZSBXRF9SRVBMWV9UUlVOQ0FURUQgICAgICAgICAg ICAgIChXRF9SSSB8IDB4MDIpCisKKy8vIENvbXBsZXRlIERSViBlcnJvciBjb2RlIGZvciBpbXBv c3NpYmxlIHJlc291cmNlIGFsbG9jYXRpb24gY2xhc3MKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyNkZWZpbmUgRURf UkkgICAgICAgICAgIChFUlJPUl9WQUxVRSB8IEVfU09VUkNFX0RSViB8IEVfQ0xBU1NfUlNSQ19J TVBPU1NJQkxFKQorI2RlZmluZSBFRF9ERUNMX0FQUF9JTVBPU1NJQkxFICAgICAgICAgIChFRF9S SSB8IDB4MDEpCisjZGVmaW5lIEVEX1NFVF9DTE9DS19JTVBPU1NJQkxFICAgICAgICAgKEVEX1JJ IHwgMHgwMikKKyNkZWZpbmUgRURfQUxMT0NBVEVfQlVGRkVSX0lNUE9TU0lCTEUgICAoRURfUkkg fCAweDAzKQorI2RlZmluZSBFRF9BTExPQ0FURV9BVURJT19JTVBPU1NJQkxFICAgIChFRF9SSSB8 IDB4MDQpCisjZGVmaW5lIEVEX0xPQURfRFNQX0lNUE9TU0lCTEUgICAgICAgICAgKEVEX1JJIHwg MHgwNSkKKyNkZWZpbmUgRURfUkVRVUVTVF9CTE9DX1RPT19TSE9SVCAgICAgICAoRURfUkkgfCAw eDA2KQorI2RlZmluZSBFRF9BTExPQ0FURV9TVFJFQU1fSU1QT1NTSUJMRSAgIChFRF9SSSB8IDB4 MDcpCisjZGVmaW5lIEVEX1JFUExZX0JMT0NfVE9PX1NIT1JUICAgICAgICAgKEVEX1JJIHwgMHgw OCkKKyNkZWZpbmUgRURfQUxMT0NBVEVfTUVNT1JZX0lNUE9TU0lCTEUgICAoRURfUkkgfCAweDA5 KQorI2RlZmluZSBFRF9OT05fQ09CUkFORVRfQ0xPQ0tfUkVGVVNFRCAgIChFRF9SSSB8IDB4MEEp CisjZGVmaW5lIEVEX05PTl9FVEhFUlNPVU5EX0NMT0NLX1JFRlVTRUQgKEVEX1JJIHwgMHgwQikK KworLy8gQ29tcGxldGUgRFJWIHdhcm5pbmcgY29kZSBmb3Igd3JvbmcgY2FsbCBjb250ZXh0IGNs YXNzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisjZGVmaW5lIFdEX1dDQyAgICAgICAgICAoV0FSTklOR19WQUxVRSB8IEVfU09VUkNFX0RS ViB8IEVfQ0xBU1NfV1JPTkdfQ09OVEVYVCkKKyNkZWZpbmUgV0RfUFJJVkFURV9EQVRBICAgICAg ICAgICAgICAgICAoV0RfV0NDIHwgMHgwMSkKKyNkZWZpbmUgV0RfTk9fSEFSRFdBUkVfU1VQUE9S VCAgICAgICAgICAoV0RfV0NDIHwgMHgwMikKKyNkZWZpbmUgV0RfQ09CUkFORVRfQ0xPQ0tfU0VM RUNURUQgICAgICAoV0RfV0NDIHwgMHgwMykKKyNkZWZpbmUgV0RfQVVESU9fTUFOQUdFRF9CWV9D T05TT0xFICAgICAoV0RfV0NDIHwgMHgwNCkKKworLy8gQ29tcGxldGUgRFJWIGVycm9yIGNvZGUg Zm9yIHdyb25nIGNhbGwgY29udGV4dCBjbGFzcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorI2RlZmluZSBFRF9XQ0MgICAgICAgICAgKEVS Uk9SX1ZBTFVFIHwgRV9TT1VSQ0VfRFJWIHwgRV9DTEFTU19XUk9OR19DT05URVhUKQorI2RlZmlu ZSBFRF9VU0VfRFNQX1JFRlVTRUQgICAgICAgICAgICAgICAgKEVEX1dDQyB8IDB4MDEpCisjZGVm aW5lIEVEX0ZSRUVfRFNQX1JFRlVTRUQgICAgICAgICAgICAgICAoRURfV0NDIHwgMHgwMikKKyNk ZWZpbmUgRURfU1VQUFJFU1NfUElQRV9SRUZVU0VEICAgICAgICAgIChFRF9XQ0MgfCAweDAzKQor I2RlZmluZSBFRF9TRVRfQ0xPQ0tfUkVGVVNFRCAgICAgICAgICAgICAgKEVEX1dDQyB8IDB4MDQp CisjZGVmaW5lIEVEX0RJRkZFUkVEX0NNRF9SRUZVU0VEICAgICAgICAgICAoRURfV0NDIHwgMHgw NSkKKyNkZWZpbmUgRURfU0VUX0NMT0NLX1RIRVNFUElQRVNfUkVGVVNFRCAgIChFRF9XQ0MgfCAw eDA2KQorI2RlZmluZSBFRF9NQU5ZX1BJUEVTX1JFRlVTRUQgICAgICAgICAgICAgKEVEX1dDQyB8 IDB4MDcpCisjZGVmaW5lIEVEX01BTllfQVVESU9TX1JFRlVTRUQgICAgICAgICAgICAoRURfV0ND IHwgMHgwOCkKKyNkZWZpbmUgRURfU0VUX1BJUEVfU09VUkNFX1JFRlVTRUQgICAgICAgIChFRF9X Q0MgfCAweDA5KQorI2RlZmluZSBFRF9DT05URVhUX1JFRlVTRUQgICAgICAgICAgICAgICAgKEVE X1dDQyB8IDB4MGEpCisjZGVmaW5lIEVEX1NUQVJUX0lOX1BST0dSRVNTICAgICAgICAgICAgICAo RURfV0NDIHwgMHgwYikKKyNkZWZpbmUgRURfU1RBUlRfT05fVElNRV9DT0RFX0lOX1BST0dSRVNT IChFRF9XQ0MgfCAweDBjKQorI2RlZmluZSBFRF9TVEFSVF9PTl9WU1lOQ19JTl9QUk9HUkVTUyAg ICAgKEVEX1dDQyB8IDB4MGQpCisjZGVmaW5lIEVEX0FVRElPX01BTkFHRURfQllfREhTX1BBTkVM ICAgICAoRURfV0NDIHwgMHgwZSkKKyNkZWZpbmUgRURfQ0xPQ0tfTUFOQUdFRF9CWV9ESFNfUEFO RUwgICAgIChFRF9XQ0MgfCAweDBmKQorCisKKy8vIENvbXBsZXRlIERSViBlcnJvciBjb2RlIGZv ciBiYWQgc3BlY2lmaWMgcGFyYW1ldGVyIGNsYXNzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjZGVmaW5lIEVEX1dTUCAgICAg IChFUlJPUl9WQUxVRSB8IEVfU09VUkNFX0RSViB8IEVfQ0xBU1NfQkFEX1NQRUNJRklDX1BBUkFN RVRFUikKKyNkZWZpbmUgRURfQVBQTElDQVRJT05fTkFNRV9TSVpFICAgICAgICAgICAgKEVEX1dT UCB8IDB4MDEpCisjZGVmaW5lIEVEX1VOS05PV05fQVBQTElDQVRJT05fQVRUUklCICAgICAgIChF RF9XU1AgfCAweDAyKQorI2RlZmluZSBFRF9VTktOT1dOX1BJUEVfQVRUUklCICAgICAgICAgICAg ICAoRURfV1NQIHwgMHgwMykKKyNkZWZpbmUgRURfVU5LTk9XTl9BVURJT19BVFRSSUIgICAgICAg ICAgICAgKEVEX1dTUCB8IDB4MDQpCisjZGVmaW5lIEVEX0lOQ09NUEFUSUJMRV9QSVBFX0FVRElP X0FUVFJJQiAgIChFRF9XU1AgfCAweDA1KQorI2RlZmluZSBFRF9GT1JNQVRfTk9UX1NVUFBPUlRF RCAgICAgICAgICAgICAoRURfV1NQIHwgMHgwNikKKyNkZWZpbmUgRURfTEVWRUxfT1VUX09GX1JB TkdFICAgICAgICAgICAgICAgKEVEX1dTUCB8IDB4MDcpCisjZGVmaW5lIEVEX0NMT0NLX1VFUl9C T0FSRCAgICAgICAgICAgICAgICAgIChFRF9XU1AgfCAweDA4KQorI2RlZmluZSBFRF9CQURfVUVS X0ZSRVFVRU5DWSAgICAgICAgICAgICAgICAoRURfV1NQIHwgMHgwOSkKKyNkZWZpbmUgRURfQkFE X1VFUl9NT0RFICAgICAgICAgICAgICAgICAgICAgKEVEX1dTUCB8IDB4MEEpCisjZGVmaW5lIEVE X0JBRF9DTE9DS19GUkVRVUVOQ1kgICAgICAgICAgICAgIChFRF9XU1AgfCAweDBCKQorI2RlZmlu ZSBFRF9CQURfVkFMSURBVElPTl9NQVNLICAgICAgICAgICAgICAoRURfV1NQIHwgMHgwQykKKyNk ZWZpbmUgRURfQkFEX1NPVVJDRSAgICAgICAgICAgICAgICAgICAgICAgKEVEX1dTUCB8IDB4MEQp CisjZGVmaW5lIEVEX0NMT0NLX1dPUkRfQ0xPQ0tfQk9BUkQgICAgICAgICAgIChFRF9XU1AgfCAw eDBFKQorI2RlZmluZSBFRF9DT05URVhUX05PVF9GT1VORCAgICAgICAgICAgICAgICAoRURfV1NQ IHwgMHgwRikKKyNkZWZpbmUgRURfQ01EX01VU1RfQkVfRElGRkVSRUQgICAgICAgICAgICAgKEVE X1dTUCB8IDB4MTApCisjZGVmaW5lIEVEX0NMT0NLX1BST0dSQU1NQUJMRV9DTE9DS19CT0FSRCAg IChFRF9XU1AgfCAweDExKQorI2RlZmluZSBFRF9CQURfVUVSX0VYVFJBX1BBUkFNICAgICAgICAg ICAgICAoRURfV1NQIHwgMHgxMikKKyNkZWZpbmUgRURfU1JDX1VOQVZBSUxBQkxFICAgICAgICAg ICAgICAgICAgKEVEX1dTUCB8IDB4MTMpCisKKy8vIENvbXBsZXRlIERSViB3YXJuaW5nIGNvZGUg Zm9yIHJlYWwgdGltZSBjbGFzcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisjZGVmaW5lIFdEX1JUICAgICAgICAgICAoV0FSTklOR19WQUxVRSB8IEVf U09VUkNFX0RSViB8IEVfQ0xBU1NfUkVBTF9USU1FX0VSUk9SKQorI2RlZmluZSBXRF9VRVJfRlJF UVVFTkNZX01PRElGSUNBVElPTiAgICAgICAgICAgKFdEX1JUIHwgMHgwMSkKKyNkZWZpbmUgV0Rf V09SRF9DTE9DS19GUkVRVUVOQ1lfTU9ESUZJQ0FUSU9OICAgIChXRF9SVCB8IDB4MDIpCisjZGVm aW5lIFdEX1VFUl9DTE9DS19MT1NUCQkJCQkgICAgKFdEX1JUIHwgMHgwMykKKyNkZWZpbmUgV0Rf RVhURVJOQUxfQ0xPQ0tfTE9TVAkJCQkgICAgV0RfVUVSX0NMT0NLX0xPU1QKKyNkZWZpbmUgV0Rf U1JDX0FTU0lHTkVEICAgICAgICAgICAgICAgICAgICAgICAgIChXRF9SVCB8IDB4MDQpCisjZGVm aW5lIFdEX0NBTk5PVF9DQU5DRUwgICAgICAgICAgICAgICAgICAgICAgICAoV0RfUlQgfCAweDA3 KQorCisvLyBDb21wbGV0ZSBEUlYgZXJyb3IgY29kZSBmb3IgcmVhbCB0aW1lIGNsYXNzCisvLyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyNkZWZpbmUgRURf UlQgICAgICAgICAgIChFUlJPUl9WQUxVRSB8IEVfU09VUkNFX0RSViB8IEVfQ0xBU1NfUkVBTF9U SU1FX0VSUk9SKQorI2RlZmluZSBFRF9EU1BfVElNRURfT1VUICAgICAgICAgICAgICAgIChFRF9S VCB8IDB4MDEpCisjZGVmaW5lIEVEX0RTUF9DSEtfVElNRURfT1VUICAgICAgICAgICAgKEVEX1JU IHwgMHgwMikKKyNkZWZpbmUgRURfU1RSRUFNX09WRVJSVU4gICAgICAgICAgICAgICAoRURfUlQg fCAweDAzKQorI2RlZmluZSBFRF9EU1BfQlVTWSAgICAgICAgICAgICAgICAgICAgIChFRF9SVCB8 IDB4MDQpCisjZGVmaW5lIEVEX0RTUF9TRU1BUEhPUkVfVElNRV9PVVQgICAgICAgKEVEX1JUIHwg MHgwNSkKKyNkZWZpbmUgRURfQk9BUkRfVElNRV9PVVQgICAgICAgICAgICAgICAoRURfUlQgfCAw eDA2KQorI2RlZmluZSBFRF9YSUxJTlhfRVJST1IgICAgICAgICAgICAgICAgIChFRF9SVCB8IDB4 MDcpCisjZGVmaW5lIEVEX0NPQlJBTkVUX0lURl9OT1RfUkVTUE9ORElORyAgKEVEX1JUIHwgMHgw OCkKKworLy8gQ29tcGxldGUgQk9BUkQgZXJyb3IgY29kZSBmb3IgdGhlIGdlbmVyYWwgY2xhc3MK Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjZGVm aW5lIEVCX0dOICAgICAgICAgICAoRVJST1JfVkFMVUUgfCBFX1NPVVJDRV9CT0FSRCB8IEVfQ0xB U1NfR0VORVJBTCkKKworLy8gQ29tcGxldGUgQk9BUkQgd2FybmluZyBjb2RlIGZvciB0aGUgaW52 YWxpZCBjb21tYW5kIGNsYXNzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjZGVmaW5lIFdCX0lDICAgICAgICAgICAoV0FSTklOR19W QUxVRSB8IEVfU09VUkNFX0JPQVJEIHwgRV9DTEFTU19JTlZBTElEX0NNRCkKKyNkZWZpbmUgV0Jf Q09NTUFORF9OT1RfSU1QTEVNRU5URURfWUVUICAgICAgICAgIChXQl9JQyB8IDB4MDApCisKKy8v IENvbXBsZXRlIEJPQVJEIGVycm9yIGNvZGUgZm9yIHRoZSBpbnZhbGlkIGNvbW1hbmQgY2xhc3MK Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyNkZWZpbmUgRUJfSUMgICAgICAgICAgIChFUlJPUl9WQUxVRSB8IEVfU09VUkNFX0JPQVJE IHwgRV9DTEFTU19JTlZBTElEX0NNRCkKKyNkZWZpbmUgRUJfSU5WQUxJRF9DT01NQU5EICAgICAg ICAgICAgICAoRUJfSUMgfCAweDAwKQorCisvLyBDb21wbGV0ZSBCT0FSRCBlcnJvciBjb2RlIGZv ciB0aGUgaW52YWlkIHN0YW5kYXJkIG9iamVjdCBjbGFzcworLy8gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyNkZWZpbmUgRUJf SVNPICAgICAgICAgIChFUlJPUl9WQUxVRSB8IEVfU09VUkNFX0JPQVJEIHwgRV9DTEFTU19JTlZB TElEX1NURF9PQkpFQ1QpCisjZGVmaW5lIEVCX0lOVkFMSURfRUZGRUNUICAgICAgICAgICAgICAg KEVCX0lTTyB8IDB4MDApCisjZGVmaW5lIEVCX0lOVkFMSURfUElQRSAgICAgICAgICAgICAgICAg KEVCX0lTTyB8IDB4NDApCisjZGVmaW5lIEVCX0lOVkFMSURfU1RSRUFNICAgICAgICAgICAgICAg KEVCX0lTTyB8IDB4ODApCisjZGVmaW5lIEVCX0lOVkFMSURfQVVESU8gICAgICAgICAgICAgICAg KEVCX0lTTyB8IDB4QzApCisKKy8vIENvbXBsZXRlIEJPQVJEIHdhcm5pbmcgY29kZSBmb3IgaW1w b3NzaWJsZSByZXNvdXJjZSBhbGxvY2F0aW9uIGNsYXNzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyNkZWZpbmUg V0JfUkkgICAgICAgICAgIChXQVJOSU5HX1ZBTFVFIHwgRV9TT1VSQ0VfQk9BUkQgfCBFX0NMQVNT X1JTUkNfSU1QT1NTSUJMRSkKKyNkZWZpbmUgV0JfTE9XX0RJRkZFUkVEX0NPTU1BTkQgICAgICAg ICAgICAgICAgIChXQl9SSSB8IDB4MDYpCisjZGVmaW5lIFdCX0NPTU1BTkRfV0lMTF9OT1RfQkVf Tk9USUZJRUQgICAgICAgICAoV0JfUkkgfCAweDA3KQorI2RlZmluZSBXQl9XSUxMX05PVF9CRV9O T1RJRklFRCAgICAgICAgICAgICAgICAgV0JfQ09NTUFORF9XSUxMX05PVF9CRV9OT1RJRklFRAor I2RlZmluZSBXQl9QUkVWSU9VU19TVEFUVVNfRElBTE9HX0lNUE9TU0lCTEUgICAgKFdCX1JJIHwg MHgxQykKKyNkZWZpbmUgV0JfU1RBVFVTX1RPT19CSUcgICAgICAgICAgICAgICAgICAgICAgIChX Ql9SSSB8IDB4MUYpCisKKy8vIENvbXBsZXRlIEJPQVJEIGVycm9yIGNvZGUgZm9yIGltcG9zc2li bGUgcmVzb3VyY2UgYWxsb2NhdGlvbiBjbGFzcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjZGVmaW5lIEVCX1JJ ICAgICAgICAgICAoRVJST1JfVkFMVUUgfCBFX1NPVVJDRV9CT0FSRCB8IEVfQ0xBU1NfUlNSQ19J TVBPU1NJQkxFKQorI2RlZmluZSBFQl9BTExPQ0FURV9BTExfU1RSRUFNX1RSQU5TRkVSVF9CVUZG RVJTX0lNUE9TU0lCTEUgKEVCX1JJIHwgMHgwMSkKKyNkZWZpbmUgRUJfQUxMT0NBVEVfUElQRV9T QU1QTEVfQlVGRkVSX0lNUE9TU0lCTEUgICAgICAgICAgIChFQl9SSSB8IDB4MDIpCisKKyNkZWZp bmUgRUJfQUxMT0NBVEVfTUVNX1NUUkVBTV9JTVBPU1NJQkxFICAgICAgIEVCX0FMTE9DQVRFX0FM TF9TVFJFQU1fVFJBTlNGRVJUX0JVRkZFUlNfSU1QT1NTSUJMRQorI2RlZmluZSBFQl9BTExPQ0FU RV9NRU1fUElQRV9JTVBPU1NJQkxFICAgICAgICAgRUJfQUxMT0NBVEVfUElQRV9TQU1QTEVfQlVG RkVSX0lNUE9TU0lCTEUKKworI2RlZmluZSBFQl9BTExPQ0FURV9ESUZGRVJFRF9DTURfSU1QT1NT SUJMRSAgICAgKEVCX1JJIHwgMHgwMykKKyNkZWZpbmUgRUJfVE9PX01BTllfRElGRkVSRURfQ01E ICAgICAgICAgICAgICAgIChFQl9SSSB8IDB4MDQpCisjZGVmaW5lIEVCX1JCVUZGRVJTX1RBQkxF X09WRVJGTE9XICAgICAgICAgICAgICAoRUJfUkkgfCAweDA1KQorI2RlZmluZSBFQl9BTExPQ0FU RV9FRkZFQ1RTX0lNUE9TU0lCTEUgICAgICAgICAgKEVCX1JJIHwgMHgwOCkKKyNkZWZpbmUgRUJf QUxMT0NBVEVfRUZGRUNUX1BPU19JTVBPU1NJQkxFICAgICAgIChFQl9SSSB8IDB4MDkpCisjZGVm aW5lIEVCX1JCVUZGRVJfTk9UX0FWQUlMQUJMRSAgICAgICAgICAgICAgICAoRUJfUkkgfCAweDBB KQorI2RlZmluZSBFQl9BTExPQ0FURV9DT05URVhUX0xJSUlfSU1QT1NTSUJMRSAgICAgKEVCX1JJ IHwgMHgwQikKKyNkZWZpbmUgRUJfU1RBVFVTX0RJQUxPR19JTVBPU1NJQkxFICAgICAgICAgICAg IChFQl9SSSB8IDB4MUQpCisjZGVmaW5lIEVCX0NPTlRST0xfQ01EX0lNUE9TU0lCTEUgICAgICAg ICAgICAgICAoRUJfUkkgfCAweDFFKQorI2RlZmluZSBFQl9TVEFUVVNfU0VORF9JTVBPU1NJQkxF ICAgICAgICAgICAgICAgKEVCX1JJIHwgMHgxRikKKyNkZWZpbmUgRUJfQUxMT0NBVEVfUElQRV9J TVBPU1NJQkxFICAgICAgICAgICAgIChFQl9SSSB8IDB4NDApCisjZGVmaW5lIEVCX0FMTE9DQVRF X1NUUkVBTV9JTVBPU1NJQkxFICAgICAgICAgICAoRUJfUkkgfCAweDgwKQorI2RlZmluZSBFQl9B TExPQ0FURV9BVURJT19JTVBPU1NJQkxFICAgICAgICAgICAgKEVCX1JJIHwgMHhDMCkKKy8vRGVi dXQgbWlYYXJ0IHNwZWNpZmlxdWUKKyNkZWZpbmUgRUJfQ0xPQ0tfQUxSRUFEWV9DQVBUVVJFRCAg ICAgICAgICAgICAgIChFQl9SSSB8IDB4RDApCisjZGVmaW5lIEVCX05PX0NVUlJFTlRfQ0xPQ0sg ICAgICAgICAgICAgICAgICAgICAoRUJfUkkgfCAweEQxKQorCisvL0ZpbiAgIG1pWGFydAorCisv LyBDb21wbGV0ZSBCT0FSRCBlcnJvciBjb2RlIGZvciB3cm9uZyBjYWxsIGNvbnRleHQgY2xhc3MK Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorI2RlZmluZSBFQl9XQ0MgICAgICAgICAgKEVSUk9SX1ZBTFVFIHwgRV9TT1VSQ0VfQk9BUkQg fCBFX0NMQVNTX1dST05HX0NPTlRFWFQpCisjZGVmaW5lIEVCX0NNRF9SRUZVU0VEICAgICAgICAg ICAgICAgICAgKEVCX1dDQyB8IDB4MDApCisjZGVmaW5lIEVCX1NUQVJUX1NUUkVBTV9SRUZVU0VE ICAgICAgICAgKEVCX1dDQyB8IDB4RkMpCisjZGVmaW5lIEVCX1NQQ19SRUZVU0VEICAgICAgICAg ICAgICAgICAgKEVCX1dDQyB8IDB4RkQpCisjZGVmaW5lIEVCX0NTTl9SRUZVU0VEICAgICAgICAg ICAgICAgICAgKEVCX1dDQyB8IDB4RkUpCisjZGVmaW5lIEVCX0NTRV9SRUZVU0VEICAgICAgICAg ICAgICAgICAgKEVCX1dDQyB8IDB4RkYpCisKKy8vIENvbXBsZXRlIEJPQVJEIHdhcm5pbmcgY29k ZSBmb3IgYmFkIHNwZWNpZmljIHBhcmFtZXRlciBjbGFzcworLy8gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjZGVmaW5lIFdCX1dT UCAgICAoV0FSTklOR19WQUxVRSB8IEVfU09VUkNFX0JPQVJEIHwgRV9DTEFTU19CQURfU1BFQ0lG SUNfUEFSQU1FVEVSKQorI2RlZmluZSBXQl9CQURfRUZGRUNUX1BBUkFNRVRFUiAgICAgICAgIChX Ql9XU1AgfCAweDQyKQorCisvLyBDb21wbGV0ZSBCT0FSRCBlcnJvciBjb2RlIGZvciBiYWQgc3Bl Y2lmaWMgcGFyYW1ldGVyIGNsYXNzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyNkZWZpbmUgRUJfV1NQICAgIChFUlJPUl9W QUxVRSB8IEVfU09VUkNFX0JPQVJEIHwgRV9DTEFTU19CQURfU1BFQ0lGSUNfUEFSQU1FVEVSKQor I2RlZmluZSBFQl9CQURfRFNQX01FU1NBR0VfU0laRSAgICAgICAgIChFQl9XU1AgfCAweDAxKQor CisjZGVmaW5lIEVCX0JBRF9DTE9DS19GUkVRVUVOQ1kgICAgICAgICAgKEVCX1dTUCB8IDB4MzAp CisKKyNkZWZpbmUgRUJfQkFEX1BJUEVfTUVTU0FHRV9TSVpFICAgICAgICAoRUJfV1NQIHwgMHg0 MSkKKyNkZWZpbmUgRUJfQkFEX0VGRkVDVF9QQVJBTUVURVIgICAgICAgICAoRUJfV1NQIHwgMHg0 MikKKyNkZWZpbmUgRUJfQkFEX1NUUkVBTV9NRVNTQUdFX1NJWkUgICAgICAoRUJfV1NQIHwgMHg4 MSkKKworI2RlZmluZSBFQl9CQURfQVVESU9fTUVTU0FHRV9TSVpFICAgICAgIChFQl9XU1AgfCAw eEMxKQorI2RlZmluZSBFQl9CQURfRFNQX01FU1NBR0VfUEFSQU1FVEVSICAgIChFQl9XU1AgfCAw eDIwKQorI2RlZmluZSBFQl9CQURfUElQRV9NRVNTQUdFX1BBUkFNRVRFUiAgIChFQl9XU1AgfCAw eDYwKQorI2RlZmluZSBFQl9CQURfU1RSRUFNX01FU1NBR0VfUEFSQU1FVEVSIChFQl9XU1AgfCAw eEEwKQorI2RlZmluZSBFQl9CQURfQVVESU9fTUVTU0FHRV9QQVJBTUVURVIgIChFQl9XU1AgfCAw eEUwKQorCisjZGVmaW5lIEVCX0JBRF9EU1BNRVNTQUdFX1NJWkUgICAgICAgICAgRUJfQkFEX0RT UF9NRVNTQUdFX1NJWkUKKyNkZWZpbmUgRUJfQkFEX1BJUEVNRVNTQUdFX1NJWkUgICAgICAgICBF Ql9CQURfUElQRV9NRVNTQUdFX1NJWkUKKworI2RlZmluZSBFQl9CQURfU1RSRUFNTUVTU0FHRV9T SVpFICAgICAgIEVCX0JBRF9TVFJFQU1fTUVTU0FHRV9TSVpFCisjZGVmaW5lIEVCX0JBRF9BVURJ T01FU1NBR0VfU0laRSAgICAgICAgRUJfQkFEX0RTUF9NRVNTQUdFX1BBUkFNRVRFUgorI2RlZmlu ZSBFQl9CQURfRFNQTUVTU0FHRV9QQVJBTUVURVIgICAgIEVCX0JBRF9EU1BfTUVTU0FHRV9QQVJB TUVURVIKKyNkZWZpbmUgRUJfQkFEX1BJUEVNRVNTQUdFX1BBUkFNRVRFUiAgICBFQl9CQURfUElQ RV9NRVNTQUdFX1BBUkFNRVRFUgorI2RlZmluZSBFQl9CQURfU1RSRUFNTUVTU0FHRV9QQVJBTUVU RVIgIEVCX0JBRF9TVFJFQU1fTUVTU0FHRV9QQVJBTUVURVIKKyNkZWZpbmUgRUJfQkFEX0FVRElP TUVTU0FHRV9QQVJBTUVURVIgICBFQl9CQURfQVVESU9fTUVTU0FHRV9QQVJBTUVURVIKKworI2Rl ZmluZSBFQl9DQU5OT1RfUkVBRF9USU1FX0NPREUgICAgICAgIChFQl9XU1AgfCAweEYwKQorI2Rl ZmluZSBFQl9DQU5OT1RfUkVBRF9WU1lOQyAgICAgICAgICAgIChFQl9XU1AgfCAweEYxKQorI2Rl ZmluZSBFQl9DQU5OT1RfV1JJVEVfVlNZTkMgICAgICAgICAgIChFQl9XU1AgfCAweEYyKQorCisv LyBDb21wbGV0ZSBCT0FSRCB3YXJuaW5nIGNvZGUgZm9yIHJlYWwgdGltZSBjbGFzcworLy8gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjZGVmaW5lIFdCX1JU ICAgICAgICAgICAoV0FSTklOR19WQUxVRSB8IEVfU09VUkNFX0JPQVJEIHwgRV9DTEFTU19SRUFM X1RJTUVfRVJST1IpCisjZGVmaW5lIFdCX0NBTk5PVF9DQU5DRUwgICAgICAgICAgICAgICAgKFdC X1JUIHwgMHgwQSkKKworLy8gQ29tcGxldGUgQk9BUkQgZXJyb3IgY29kZSBmb3IgcmVhbCB0aW1l IGNsYXNzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyNkZWZpbmUgRUJfUlQgICAgICAgICAgIChFUlJPUl9WQUxVRSB8IEVfU09VUkNFX0JPQVJEIHwg RV9DTEFTU19SRUFMX1RJTUVfRVJST1IpCisjZGVmaW5lIEVCX1NUUkVBTV9VTkRFUlJVTiAgICAg ICAgICAgICAgICAgIChFQl9SVCB8IDB4MDEpCisjZGVmaW5lIEVCX1NUUkVBTV9GUkFNRV9DUkNf RkFJTEVEICAgICAgICAgIChFQl9SVCB8IDB4MDIpCisjZGVmaW5lIEVCX1NUUkVBTV9JTlZBTElE X0ZSQU1FICAgICAgICAgICAgIChFQl9SVCB8IDB4MDMpCisjZGVmaW5lIEVCX1NUUkVBTV9JTkNP TVBBVElCTEVfTEFZRVIgICAgICAgIChFQl9SVCB8IDB4MDQpCisjZGVmaW5lIEVCX1NUUkVBTV9S QlVGRkVSX1JFQURfRVJST1IgICAgICAgIChFQl9SVCB8IDB4MDUpCisjZGVmaW5lIEVCX1NUUkVB TV9SQlVGRkVSX1RPT19TTUFMTCAgICAgICAgIChFQl9SVCB8IDB4MDYpCisjZGVmaW5lIEVCX1NU UkVBTV9GT1JNQVRfTUlTVVNFRCAgICAgICAgICAgIChFQl9SVCB8IDB4MDcpCisjZGVmaW5lIEVC X1NUUkVBTV9SQlVGRkVSX1dSSVRFX0VSUk9SICAgICAgIChFQl9SVCB8IDB4MDgpCisjZGVmaW5l IEVCX1NUUkVBTV9MQVlFUjNfRlJBTUVfRVJST1IgICAgICAgIChFQl9SVCB8IDB4MDkpCisjZGVm aW5lIEVCX1NUUkVBTV9NVUxUSUNIQU5ORUxfRVJST1IgICAgICAgIChFQl9SVCB8IDB4MEIpCisj ZGVmaW5lIEVCX1BJUEVfVU5ERVJSVU4gICAgICAgICAgICAgICAgICAgIChFQl9SVCB8IDB4MTAp CisjZGVmaW5lIEVCX1NUQVJUX09OX1RJTUVfQ09ERV9GQUlMRUQgICAgICAgIChFQl9SVCB8IDB4 MTEpCisKKyNkZWZpbmUgRUJfU1RSRUFNX0ZBSUxFRF9DUkMgICAgICAgICAgICBFQl9TVFJFQU1f RlJBTUVfQ1JDX0ZBSUxFRAorI2RlZmluZSBFQl9TVFJFQU1fSU5WQUxJRF9MQVlFUiAgICAgICAg IEVCX1NUUkVBTV9JTkNPTVBBVElCTEVfTEFZRVIKKworLy8gQ29tcGxldGUgQk9BUkQgZXJyb3Ig Y29kZSBmb3IgaW50ZXJuYWwgZXJyb3IgY2xhc3MKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjZGVmaW5lIEVCX0lFICAgICAgICAgICAoRVJS T1JfVkFMVUUgfCBFX1NPVVJDRV9CT0FSRCB8IEVfQ0xBU1NfRlJFRSkKKyNkZWZpbmUgRUJfR0VO RVJJQ19GQVRBTF9FUlJPUiAgICAgICAgICAoRUJfSUUgfCAweDAwKQorI2RlZmluZSBFQl9DU05S X0kxX0ZBVEFMX0VSUk9SICAgICAgICAgIChFQl9JRSB8IDB4MDEpCisjZGVmaW5lIEVCX0NTTlJf STJfRkFUQUxfRVJST1IgICAgICAgICAgKEVCX0lFIHwgMHgwMikKKyNkZWZpbmUgRUJfQ1NOUl9J M19GQVRBTF9FUlJPUiAgICAgICAgICAoRUJfSUUgfCAweDA0KQorI2RlZmluZSBFQl9SRUVOVFJZ X0ZBVEFMX0VSUk9SICAgICAgICAgIChFQl9JRSB8IDB4MDgpCisjZGVmaW5lIEVCX0NPTk5fUkVf RkFUQUxfRVJST1IgICAgICAgICAgKEVCX0lFIHwgMHgxMCkKKworCisvLyoqKioqKioqKioqKipX QVJOSU5HIEFORCAmIEVSUk9SIGZvciB0aGUgbmV3IERJU1BBVENIRVIqKioqKioqKioqKioqKioq KioqCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBDb21wbGV0ZSBESVNQIHdhcm5pbmcgY29kZSBm b3IgdGhlIGdlbmVyYWwgY2xhc3MKKyNkZWZpbmUgV1NfR04gICAgICAgICAgIChXQVJOSU5HX1ZB TFVFIHwgRV9TT1VSQ0VfRElTUEFUQ0hFUiB8IEVfQ0xBU1NfR0VORVJBTCkKKyNkZWZpbmUgV1Nf RElTUEFUQ0hFUiAgICAgICAgICAgICAgICAgICAgICAgICAoV1NfR04gfCAweDAwKQorI2RlZmlu ZSBXU19ORVdfTU9ERV9BTFJFQURZX0RFRklORSAgICAgICAgICAgIChXU19HTiB8IDB4MDEpCisj ZGVmaW5lIFdTX0FMUkVBRFlfSU5JVElBTElaRUQgICAgICAgICAgICAgICAgKFdTX0dOIHwgMHgw MikKKyNkZWZpbmUgV1NfSU5WQUxJRF9BUElfTU9ERV9TRUxFQ1RFRF9LRUVQX09MRCAoV1NfR04g fCAweDAzKQorCisvLyBDb21wbGV0ZSBESVNQIHdhcm5pbmcgY29kZSBmb3IgdGhlIGludmFsaWQg Y29tbWFuZCBjbGFzcworI2RlZmluZSBXU19JQyAgICAgICAgICAgKFdBUk5JTkdfVkFMVUUgfCBF X1NPVVJDRV9ESVNQQVRDSEVSIHwgRV9DTEFTU19JTlZBTElEX0NNRCkKKworLy8gQ29tcGxldGUg RElTUCB3YXJuaW5nIGNvZGUgZm9yIHRoZSBpbnRlcm5hbCBjbGFzcworI2RlZmluZSBXU19JRSAg ICAgICAgICAgKFdBUk5JTkdfVkFMVUUgfCBFX1NPVVJDRV9ESVNQQVRDSEVSIHwgRV9DTEFTU19G UkVFKQorCisvLyBDb21wbGV0ZSBESVNQIHdhcm5pbmcgY29kZSBmb3IgdGhlIGludmFsaWQgc3Rh bmRhcmQgb2JqZWN0IGNsYXNzCisjZGVmaW5lIFdTX0lTTyAgICAgICAgICAoV0FSTklOR19WQUxV RSB8IEVfU09VUkNFX0RJU1BBVENIRVIgfCBFX0NMQVNTX0lOVkFMSURfU1REX09CSkVDVCkKKwor Ly8gQ29tcGxldGUgRElTUCB3YXJuaW5nIGNvZGUgZm9yIHRoZSBiYWQgc3BlY2lmaWMgcGFyYW1l dGVyIGNsYXNzCisjZGVmaW5lIFdTX1dTUCAgICAgICAgICAoV0FSTklOR19WQUxVRSB8IEVfU09V UkNFX0RJU1BBVENIRVIgfCBFX0NMQVNTX0JBRF9TUEVDSUZJQ19QQVJBTUVURVIpCisKKy8vIENv bXBsZXRlIERJU1Agd2FybmluZyBjb2RlIGZvciB0aGUgcmVhbCB0aW1lIGNsYXNzCisjZGVmaW5l IFdTX1JUICAgICAgICAgICAoV0FSTklOR19WQUxVRSB8IEVfU09VUkNFX0RJU1BBVENIRVIgfCBF X0NMQVNTX1JFQUxfVElNRV9FUlJPUikKKworLy8gQ29tcGxldGUgRElTUCB3YXJuaW5nIGNvZGUg Zm9yIGltcG9zc2libGUgcmVzb3VyY2UgYWxsb2NhdGlvbiBjbGFzcworI2RlZmluZSBXU19SSSAg ICAgICAgICAgKFdBUk5JTkdfVkFMVUUgfCBFX1NPVVJDRV9ESVNQQVRDSEVSIHwgRV9DTEFTU19S U1JDX0lNUE9TU0lCTEUpCisKKy8vIENvbXBsZXRlIERJU1Agd2FybmluZyBjb2RlIGZvciB3cm9u ZyBjYWxsIGNvbnRleHQgY2xhc3MKKyNkZWZpbmUgV1NfV0NDICAgICAgICAgIChXQVJOSU5HX1ZB TFVFIHwgRV9TT1VSQ0VfRElTUEFUQ0hFUiB8IEVfQ0xBU1NfV1JPTkdfQ09OVEVYVCkKKworLy8g Q29tcGxldGUgRElTUCB3YXJuaW5nIGNvZGUgZm9yIGRpcmVjdCBzaG93IHByb2JsZW1zIGNsYXNz CisjZGVmaW5lIFdTX0RTICAgICAgICAgICAoV0FSTklOR19WQUxVRSB8IEVfU09VUkNFX0RJU1BB VENIRVIgfCBFX0NMQVNTX0RJUkVDVFNIT1cpCisKKworLy8gQ29tcGxldGUgRElTUCBlcnJvciBj b2RlIGZvciB0aGUgZ2VuZXJhbCBjbGFzcworI2RlZmluZSBFU19HTiAgICAgICAgICAgKEVSUk9S X1ZBTFVFIHwgRV9TT1VSQ0VfRElTUEFUQ0hFUiB8IEVfQ0xBU1NfR0VORVJBTCkKKyNkZWZpbmUg RVNfQ0FOTk9UX0ZJTkRfUElQRV9IQU5ETEUgICAgICAgICAgICAgIChFU19HTiB8IDB4MDApCisj ZGVmaW5lIEVTX0NBTk5PVF9GSU5EX0JPQVJEX0hBTkRMRSAgICAgICAgICAgICAoRVNfR04gfCAw eDAxKQorI2RlZmluZSBFU19DQU5OT1RfRklORF9MSVNUICAgICAgICAgICAgICAgICAgICAgKEVT X0dOIHwgMHgwMikKKyNkZWZpbmUgRVNfQ0FOTk9UX0ZJTkRfREFUQSAgICAgICAgICAgICAgICAg ICAgIChFU19HTiB8IDB4MDMpCisjZGVmaW5lIEVTX0NBTk5PVF9BRERfRUxFTUVOVF9UT19MSVNU ICAgICAgICAgICAoRVNfR04gfCAweDA0KQorI2RlZmluZSBFU19DQU5OT1RfUkVNT1ZFX0VMRU1F TlRfRlJPTV9MSVNUICAgICAgKEVTX0dOIHwgMHgwNSkKKyNkZWZpbmUgRVNfQ0FOTk9UX0RJU1BB VENIX0ZVTkNUSU9OICAgICAgICAgICAgIChFU19HTiB8IDB4MDYpCisjZGVmaW5lIEVTX0ZVTkNU SU9OX05PVF9JTVBMRU1FTlRFRCAgICAgICAgICAgICAoRVNfR04gfCAweDA3KQorI2RlZmluZSBF U19FTEVNRU5UX0RPRVNfTk9UX0VYSVNUICAgICAgICAgICAgICAgKEVTX0dOIHwgMHgwOCkKKyNk ZWZpbmUgRVNfRUxFTUVOVF9ET0VTX05PVF9FWElTVF9JTl9MSVNUICAgICAgIChFU19HTiB8IDB4 MDkpCisjZGVmaW5lIEVTX0VMRU1FTlRfTk9UX0ZPVU5EX0lOX0xJU1QgICAgICAgICAgICAoRVNf R04gfCAweDBBKQorI2RlZmluZSBFU19MSVNUX0RPRVNfTk9UX0VYSVNUICAgICAgICAgICAgICAg ICAgKEVTX0dOIHwgMHgwQikKKyNkZWZpbmUgRVNfTElTVF9FTVBUWSAgICAgICAgICAgICAgICAg ICAgICAgICAgIChFU19HTiB8IDB4MEMpCisjZGVmaW5lIEVTX0RBVEFfRE9FU19OT1RfRVhJU1Qg ICAgICAgICAgICAgICAgICAoRVNfR04gfCAweDBEKQorI2RlZmluZSBFU19EQVRBX05PVF9GT1VO RF9JTl9MSVNUICAgICAgICAgICAgICAgKEVTX0dOIHwgMHgwRSkKKyNkZWZpbmUgRVNfRkFJTEVE ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChFU19HTiB8IDB4MEYpCisjZGVmaW5lIEVT X0NBTk5PVF9ERVRBQ0hfREFUQV9GUk9NX0xJU1QgICAgICAgICAoRVNfR04gfCAweDEwKQorI2Rl ZmluZSBFU19OT1RfSU1QTEVNRU5URUQgICAgICAgICAgICAgICAgICAgICAgKEVTX0dOIHwgMHgx MSkKKyNkZWZpbmUgRVNfQk9BUkRfTk9UX0ZPVU5EICAgICAgICAgICAgICAgICAgICAgIChFU19H TiB8IDB4MTIpCisjZGVmaW5lIEVTX0lOVkFMSURfTU9ERSAgICAgICAgICAgICAgICAgICAgICAg ICAoRVNfR04gfCAweDEzKQorI2RlZmluZSBFU19BTFJFQURZX0lOSVRJQUxJWkVEICAgICAgICAg ICAgICAgICAgKEVTX0dOIHwgMHgxNCkKKyNkZWZpbmUgRVNfTk9UX0lOSVRJQUxJWkVEICAgICAg ICAgICAgICAgICAgICAgIChFU19HTiB8IDB4MTUpCisjZGVmaW5lIEVTX01BWElNVU1fQVBQTElf UkVBQ0ggICAgICAgICAgICAgICAgICAoRVNfR04gfCAweDE2KQorI2RlZmluZSBFU19ORUVEX1JF R0lTVFJBVElPTiAgICAgICAgICAgICAgICAgICAgKEVTX0dOIHwgMHgxNykKKyNkZWZpbmUgRVNf REFUQV9BTFJFQURZX0lOX0xJU1QgICAgICAgICAgICAgICAgIChFU19HTiB8IDB4MTgpCisjZGVm aW5lIEVTX05PX0FQSV9UT19MT0FEICAgICAgICAgICAgICAgICAgICAgICAoRVNfR04gfCAweDE5 KQorCisKKy8vIENvbXBsZXRlIERJU1AgZXJyb3IgY29kZSBmb3IgdGhlIGludmFsaWQgY29tbWFu ZCBjbGFzcworI2RlZmluZSBFU19JQyAgICAgICAgICAgKEVSUk9SX1ZBTFVFIHwgRV9TT1VSQ0Vf RElTUEFUQ0hFUiB8IEVfQ0xBU1NfSU5WQUxJRF9DTUQpCisjZGVmaW5lIEVTX0NPTU1BTkRfTk9U X0FWQUlMQUJMRSAgICAgICAgICAgICAgICAoRVNfSUMgfCAweDAwKQorCisvLyBDb21wbGV0ZSBE SVNQIGVycm9yIGNvZGUgZm9yIHRoZSBpbnRlcm5hbCBjbGFzcworI2RlZmluZSBFU19JRSAgICAg ICAgICAgKEVSUk9SX1ZBTFVFIHwgRV9TT1VSQ0VfRElTUEFUQ0hFUiB8IEVfQ0xBU1NfRlJFRSkK KworLy8gQ29tcGxldGUgRElTUCBlcnJvciBjb2RlIGZvciB0aGUgaW52YWxpZCBzdGFuZGFyZCBv YmplY3QgY2xhc3MKKyNkZWZpbmUgRVNfSVNPICAgICAgICAgIChFUlJPUl9WQUxVRSB8IEVfU09V UkNFX0RJU1BBVENIRVIgfCBFX0NMQVNTX0lOVkFMSURfU1REX09CSkVDVCkKKworLy8gQ29tcGxl dGUgRElTUCBlcnJvciBjb2RlIGZvciB0aGUgYmFkIHNwZWNpZmljIHBhcmFtZXRlciBjbGFzcwor I2RlZmluZSBFU19XU1AgICAgICAgICAgKEVSUk9SX1ZBTFVFIHwgRV9TT1VSQ0VfRElTUEFUQ0hF UiB8IEVfQ0xBU1NfQkFEX1NQRUNJRklDX1BBUkFNRVRFUikKKyNkZWZpbmUgRVNfSU5WQUxJRF9Q SVBFICAgICAgICAgICAgICAgICAgICAgICAgIChFU19XU1AgfCAweDAxKQorI2RlZmluZSBFU19J TlZBTElEX1BJUEVfT1VUICAgICAgICAgICAgICAgICAgICAgKEVTX1dTUCB8IDB4MDIpCisjZGVm aW5lIEVTX0lOVkFMSURfUElQRV9JTiAgICAgICAgICAgICAgICAgICAgICAoRVNfV1NQIHwgMHgw MykKKyNkZWZpbmUgRVNfSU5WQUxJRF9CT0FSRCAgICAgICAgICAgICAgICAgICAgICAgIChFU19X U1AgfCAweDA0KQorI2RlZmluZSBFU19JTlZBTElEX0xJU1QgICAgICAgICAgICAgICAgICAgICAg ICAgKEVTX1dTUCB8IDB4MDUpCisjZGVmaW5lIEVTX0lOVkFMSURfREFUQSAgICAgICAgICAgICAg ICAgICAgICAgICAoRVNfV1NQIHwgMHgwNikKKyNkZWZpbmUgRVNfSU5WQUxJRF9QQVJBTUVURVIg ICAgICAgICAgICAgICAgICAgIChFU19XU1AgfCAweDA3KQorI2RlZmluZSBFU19JTlZBTElEX0hB TkRMRSAgICAgICAgICAgICAgICAgICAgICAgKEVTX1dTUCB8IDB4MDgpCisjZGVmaW5lIEVTX0lO VkFMSURfTE9HSUNBTF9OVU1CRVIgICAgICAgICAgICAgICAoRVNfV1NQIHwgMHgwOSkKKworLy8g Q29tcGxldGUgRElTUCBlcnJvciBjb2RlIGZvciB0aGUgcmVhbCB0aW1lIGNsYXNzCisjZGVmaW5l IEVTX1JUICAgICAgICAgICAoRVJST1JfVkFMVUUgfCBFX1NPVVJDRV9ESVNQQVRDSEVSIHwgRV9D TEFTU19SRUFMX1RJTUVfRVJST1IpCisKKy8vIENvbXBsZXRlIERJU1AgZXJyb3IgY29kZSBmb3Ig aW1wb3NzaWJsZSByZXNvdXJjZSBhbGxvY2F0aW9uIGNsYXNzCisjZGVmaW5lIEVTX1JJICAgICAg ICAgICAoRVJST1JfVkFMVUUgfCBFX1NPVVJDRV9ESVNQQVRDSEVSIHwgRV9DTEFTU19SU1JDX0lN UE9TU0lCTEUpCisjZGVmaW5lIEVTX0FMTE9DQVRFX1BJUEVfSEFORExFICAgICAgICAgICAgKEVT X1JJIHwgMHgwMCkKKyNkZWZpbmUgRVNfQUxMT0NBVEVfQk9BUkRfSEFORExFICAgICAgICAgICAo RVNfUkkgfCAweDAxKQorI2RlZmluZSBFU19BTExPQ0FURV9MSVNUICAgICAgICAgICAgICAgICAg IChFU19SSSB8IDB4MDIpCisjZGVmaW5lIEVTX0FMTE9DQVRFX0VMRU1FTlQgICAgICAgICAgICAg ICAgKEVTX1JJIHwgMHgwMykKKyNkZWZpbmUgRVNfQUxMT0NBVEVfTUVNT1JZICAgICAgICAgICAg ICAgICAoRVNfUkkgfCAweDA0KQorI2RlZmluZSBFU19DQU5OT1RfRlJFRV9QSVBFX0hBTkRMRSAg ICAgICAgIChFU19SSSB8IDB4MDUpCisjZGVmaW5lIEVTX0NBTk5PVF9GUkVFX0JPQVJEX0hBTkRM RSAgICAgICAgKEVTX1JJIHwgMHgwNikKKyNkZWZpbmUgRVNfQ0FOTk9UX0ZSRUVfTElTVCAgICAg ICAgICAgICAgICAoRVNfUkkgfCAweDA3KQorI2RlZmluZSBFU19DQU5OT1RfRlJFRV9FTEVNRU5U ICAgICAgICAgICAgIChFU19SSSB8IDB4MDgpCisjZGVmaW5lIEVTX0NBTk5PVF9GUkVFX0JJR19C TE9DICAgICAgICAgICAgKEVTX1JJIHwgMHgwOSkKKyNkZWZpbmUgRVNfTElTVF9PRl9MSVNUX05P VF9WQUxJRCAgICAgICAgICAoRVNfUkkgfCAweDBhKQorI2RlZmluZSBFU19JTlZBTElEX1BPSU5U RVIgICAgICAgICAgICAgICAgIChFU19SSSB8IDB4MGIpCisjZGVmaW5lIEVTX05PX01PUkVfUk9P TV9BVkFJTEFCTEUgICAgICAgICAgKEVTX1JJIHwgMHgwYykKKworLy8gQ29tcGxldGUgRElTUCBl cnJvciBjb2RlIGZvciB3cm9uZyBjYWxsIGNvbnRleHQgY2xhc3MKKyNkZWZpbmUgRVNfV0NDICAg ICAgICAgIChFUlJPUl9WQUxVRSB8IEVfU09VUkNFX0RJU1BBVENIRVIgfCBFX0NMQVNTX1dST05H X0NPTlRFWFQpCisKKy8vIENvbXBsZXRlIERJU1AgZXJyb3IgY29kZSBmb3IgZGlyZWN0IHNob3cg cHJvYmxlbXMgY2xhc3MKKyNkZWZpbmUgRVNfRFMgICAgICAgICAgIChFUlJPUl9WQUxVRSB8IEVf U09VUkNFX0RJU1BBVENIRVIgfCBFX0NMQVNTX0RJUkVDVFNIT1cpCisKKworLy8qKioqKioqKioq KioqIFdBUk5JTkdTIEFORCBFUlJPUlMgY29taW5nIGZvcm0gQ29icmFOZXQgZmlybXdhcmUgKioq KioqKioqKioqKioqKioqKgorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQ29tcGxldGUgd2Fybmlu ZyBjb2RlcyBmb3IgdGhlIGdlbmVyYWwgY2xhc3MKKyNkZWZpbmUgV0NfR04gICAgICAgICAgIChX QVJOSU5HX1ZBTFVFIHwgRV9TT1VSQ0VfQ09CUkFORVQgfCBFX0NMQVNTX0dFTkVSQUwpCisKKwor Ly8gQ29tcGxldGUgZXJyb3IgY29kZXMgZm9yIHRoZSBnZW5lcmFsIGNsYXNzCisjZGVmaW5lIEVD X0dOICAgICAgICAgICAoRVJST1JfVkFMVUUgfCBFX1NPVVJDRV9DT0JSQU5FVCB8IEVfQ0xBU1Nf R0VORVJBTCkKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKipGSU4qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKKworLy99CisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEv c291bmQvcGNpL2x4NjQ2NGVzL2V0aGVyc291bmQuaCBiL3NvdW5kL3BjaS9seDY0NjRlcy9ldGhl cnNvdW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDAyNmYzNgotLS0g L2Rldi9udWxsCisrKyBiL3NvdW5kL3BjaS9seDY0NjRlcy9ldGhlcnNvdW5kLmgKQEAgLTAsMCAr MSw1NSBAQAorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIENPUFlSSUdIVCAyMDA1IERJR0lHUkFNLgor Ly8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKKy8vCisvLyAgRVRIRVJTT1VORC5ICisvLworLy8gIFByb2plY3Qg ICAgICAgICAgOiBMWEVTCisvLyAgRGVzY3JpcHRpb24gICAgICA6IGhlYWRlciBmaWxlIGZvciBF dGhlcnNvdW5kIEZQR0EgaW50ZXJmYWNlCisvLworLy8gIExhc3QgTW9kICREYXRlOiAxLzA2LzA2 IDEzOjIyICQgYnkgJEF1dGhvcjogTXRyICQKKy8vCisvLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2lmbmRl ZiBfX0VUSEVSU09VTkRfSF8KKyNkZWZpbmUgX19FVEhFUlNPVU5EX0hfCisKKyNkZWZpbmUJWEVT X0JBU0VBRERSCQkweDAwMDdGODAwCQkvLyBFdGhlcnNvdW5kIGZwZ2EgYmFzZSBhZGRyZXNzCisv LworI2RlZmluZSBYRVNfUldfR1JBTlVMQVJJVFkJKFhFU19CQVNFQUREUiArIDB4MDAwMCkJLy8g YWRyZXNzZSBkdSByZWdpc3RyZSBFdGhlclNvdW5kIGNvbnRlbmFudCBsYSBncmFudWxhcml0w6kK KyNkZWZpbmUJCVhFU19HUkFOX01BU0sJMHgwMEZGRkYJCQkJLy8gbWFzcXVlIGRlcyBiaXRzIHNp Z25pZmljYXRpZnMgZGFucyBsZSByZWdpc3RyZSBkZSBncmFudWxhcml0ZQorCisvLworI2RlZmlu ZSBYRVNfUldfRlJFUVVFTkNZCShYRVNfQkFTRUFERFIgKyAweDAwMDEpCQkvLyBhZHJlc3NlIGR1 IHJlZ2lzdHJlIEV0aGVyU291bmQgY29udGVuYW50IGxhIGZyZXF1ZW5jZSBkZXMgdHJhbWVzCisj ZGVmaW5lCQlYRVNfRlJFUV9GSUxURVIJCQkweDAwMDBGRkYwCS8vIGZpbHRyZSBwb3VyIG5vdGlm aWVyIGxlIGNoYW5nZW1lbnQgZGUgc291cmNlIC8gY2FkZW5jZS4KKyNkZWZpbmUJCVhFU19GUkVR X01BU0sJCQkweDAwMDBGRkZGCS8vIGNvbmRpdGlvbiBiaXRzIGFuZCBjb3VudGVyIGZpbHRlciBt YXNrLgorI2RlZmluZQkJWEVTX0ZSRVFfSVNfUE0JCQkweDAwMDA4MDAwCS8vIHNldCBpZiBwcmlt YXJ5IG1hc3RlcgorI2RlZmluZQkJWEVTX0ZSRVFfTk9UX1dDSwkJMHgwMDAwNDAwMAkvLyAoc2ln bmlmaWNhbnQgaWYgcHJpbWFyeSBtYXN0ZXIpIGNsZWFyIGlmIHdvcmRjbG9jaywgc2V0IGlmIGxv Y2FsLgorI2RlZmluZQkJWEVTX0ZSRVFfQ09VTlQ4X01BU0sJMHgwMDAwMUZGRgkvLyBjb21wdGV1 ciAyNU1IeiBlbnRyZSA4IGVjaC4KKyNkZWZpbmUJCVhFU19GUkVRX0NPVU5UOF80NF9NSU4gIDB4 MDAwMDEyODgJLy8gMjVNIC8gWyA0NGsgLSAoIDQ0LjFrICsgNDhrICkgLyAyIF0gKiA4CisjZGVm aW5lCQlYRVNfRlJFUV9DT1VOVDhfNDRfTUFYCTB4MDAwMDEwRjAJLy8gMjVNIC8gWyAoIDQ0LjFr ICsgNDhrICkgLyAyIF0gKiA4CisjZGVmaW5lCQlYRVNfRlJFUV9DT1VOVDhfNDhfTUFYCTB4MDAw MDBGMDgJLy8gMjVNIC8gWyA0OGsgKyAoIDQ0LjFrICsgNDhrICkgLyAyIF0gKiA4CisKKy8vCisj ZGVmaW5lIFhFU19ST19QRUFLTUVURVJfSU4wCShYRVNfQkFTRUFERFIgKyAweDAyMDApCisjZGVm aW5lIFhFU19ST19QRUFLTUVURVJfT1VUMAkoWEVTX0JBU0VBRERSICsgMHgwMjEwKQorCisKKy8v IDE2IGJpdHMgcGYgYSBjaGFxdWUgZm9pcworLy8KKyNkZWZpbmUgT0ZGU0VUX0EJMAkJLyoqPCBj aGFubmVscyAwMCB0byAxNS4qLworI2RlZmluZSBPRkZTRVRfQgkxCQkvKio8IGNoYW5uZWxzIDE2 IHRvIDMxLiovCisjZGVmaW5lIE9GRlNFVF9DCTIJCS8qKjwgY2hhbm5lbHMgMzIgdG8gNDcuKi8K KyNkZWZpbmUgT0ZGU0VUX0QJMwkJLyoqPCBjaGFubmVscyA0OCB0byA2My4qLworLy8KKyNkZWZp bmUgWEVTX1dfTVVURV9QTEFZCQkJKFhFU19CQVNFQUREUiArIDB4MDAyMCkJLy8gcmVnaXN0cmUg ZGUgIG11dGUgKDEpIG91IGTDqW11dGUgKDApIGRlcyB2b2llcyBQTEFZCisjZGVmaW5lIFhFU19X X01VVEVfUkVDT1JECQkoWEVTX0JBU0VBRERSICsgMHgwMDMwKQkvLyByZWdpc3RyZSBkZSAgbXV0 ZSAoMSkgb3UgZMOpbXV0ZSAoMCkgZGVzIHZvaWVzIFJFQ09SRAorI2RlZmluZSBYRVNfV19BQ1RJ VkFURV9QTEFZCQkoWEVTX0JBU0VBRERSICsgMHgwMDQwKQkvLyByZWdpc3RyZSBkJ2FjdGl2YXRp b24gKDEpIG91IGRpc2FibGUgKDApIGRlcyB2b2llcyBQTEFZCisjZGVmaW5lIFhFU19XX0FDVElW QVRFX1JFQ09SRAkoWEVTX0JBU0VBRERSICsgMHgwMDUwKSAvLyByZWdpc3RyZSBkJ2FjdGl2YXRp b24gKDEpIG91IGRpc2FibGUgKDApIGRlcyB2b2llcyBSRUMKKworI2RlZmluZSBYRVNfV19SQU1f RklGT19CQVNFCQkoWEVTX0JBU0VBRERSICsgMHgwMTAwKQkvLyByZWdpc3RyZSBkZSAgcHJvZyBk ZSBsJ2FkZHJlc3NlIGRlIGJhc2UgZGVzIGZpZm8KKyNkZWZpbmUgWEVTX1JfUkFNX0NVUl9CQU5L CQkoWEVTX0JBU0VBRERSICsgMHgwMTAxKQkvKio8IGN1cnJlbnQgYmFuayAoYml0IDApLiovCisK KworI2VuZGlmCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvbHg2NDY0ZXMvaWZfZHJ2X21iLmggYi9z b3VuZC9wY2kvbHg2NDY0ZXMvaWZfZHJ2X21iLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uNDRiZjY4NwotLS0gL2Rldi9udWxsCisrKyBiL3NvdW5kL3BjaS9seDY0NjRlcy9p Zl9kcnZfbWIuaApAQCAtMCwwICsxLDI4NyBAQAorLy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIENPUFlS SUdIVCAyMDA1IERJR0lHUkFNLgorLy8KKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvKioJQGZpbGUJIElG X0RSVl9NQi5ICisqCUBicmllZgkgZGVmaW5pdGlvbnMgc2hhcmVkIGJldHdlZW4gUEMtc2lkZSBE cml2ZXIgYW5kIEVtYmVkZGVkCisqLworLy8gIFByb2plY3QgICAgICAgICAgOiBMWEVTCisvLwor Ly8gIExhc3QgTW9kICREYXRlOiAxNi8xMS8wNiAxNzo0NiAkIGJ5ICRBdXRob3I6IE10ciAkCisv LworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKKworCisjaWZuZGVmIF9fSUZfRFJWX01CX0hfCisjZGVmaW5lIF9f SUZfRFJWX01CX0hfCisKKy8vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8JCQkJY29tcGlsZS9kZWJ1ZyBvcHRp b25zCisvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgorCisjZGVmaW5lIERFQlVHX01BSU4JCTAJLyoqIG1haW4gZGVi dWcgc3dpdGNoLiovCisjZGVmaW5lIERFQlVHX1VBUlQJCTAJLyoqIHN1cHBvcnQgZm9yIFVBUlQu Ki8KKyNkZWZpbmUgREVCVUdfTUFTSzY0CTAJLy8gNjQgYml0cyBtYXNrIGNsYXNzCisKKy8vKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCisvLwkJCQlnZW5lcmFsIGRlZmluaXRpb25zCisvLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2Rl ZmluZSBTSVpFX01BUFBJTkcJCQkxMAkvKiBudW1iZXIgb2YgY2hhbm5lbHMgc3VwcG9ydGVkIGlu IG0vYyBtb2RlLiovCisjZGVmaW5lIE9QVF82NF9CSVRTX1BDQUREUgkgICAgMAkvKiBzdXBwb3J0 IGZvciA2NCBiaXRzIFBDIGFkZHJlc3MgLyBETUEuKi8KKworLyoqIGF0dGVudGlvbiA6IHNpIGxl IG1heCBkZXMgSS9PIGVzdCA8IDMyLCBpbCB5IGEgZHUgY29kZSBhIHJldm9pciAqLworCisjZGVm aW5lIE1BWF9DQVJEX0lOUFVUUwkJNjQKKyNkZWZpbmUgTUFYX0NBUkRfT1VUUFVUUwk2NAorI2Rl ZmluZSBNQVhfQ0FOQVVYX0NBUlRFCShNQVhfQ0FSRF9JTlBVVFMrTUFYX0NBUkRfT1VUUFVUUykK KworI2RlZmluZSBNQVhfQ0FSRF9JTl9QSVBFUwkzMgorI2RlZmluZSBNQVhfQ0FSRF9PVVRfUElQ RVMJMzIKKworLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKKy8vCQkJCSBEUlYgPC0tLT4gdU0gY29tbWFuZHMgZGVm aW5pdGlvbnMKKy8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCisKKyNkZWZpbmUgTUJfUkVHX0NTTQkJMAorLy8gRFJW IC0tPiBNQgorI2RlZmluZSBNQl9SRUdfQ01EMAkJMQorI2RlZmluZSBNQl9SRUdfQ01EMQkJMgor I2RlZmluZSBNQl9SRUdfQ01EMgkJMworI2RlZmluZSBNQl9SRUdfQ01EMwkJNAorI2RlZmluZSBN Ql9SRUdfQ01ENAkJNQorI2RlZmluZSBNQl9SRUdfQ01ENQkJNgorI2RlZmluZSBNQl9SRUdfQ01E X01BWAk3CisvLyBNQiAtLT4gRFJWCisjZGVmaW5lIE1CX1JFR19FUlIJCTEKKyNkZWZpbmUgTUJf UkVHX1JTUDAJCTIKKyNkZWZpbmUgTUJfUkVHX1JTUDEJCTMKKyNkZWZpbmUgTUJfUkVHX1JTUDIJ CTQKKyNkZWZpbmUgTUJfUkVHX1JTUDMJCTUKKyNkZWZpbmUgTUJfUkVHX1JTUDQJCTYKKyNkZWZp bmUgTUJfUkVHX1JTUDUJCTcKKyNkZWZpbmUgTUJfUkVHX1JTUDYJCTgKKyNkZWZpbmUgTUJfUkVH X1JTUDcJCTkKKyNkZWZpbmUgTUJfUkVHX1JTUDgJCTEwCisjZGVmaW5lIE1CX1JFR19SU1A5CQkx MQorCisvKgorCXRoZSBjYXB0dXJlIGJpdCBwb3NpdGlvbiBpbiB0aGUgb2JqZWN0X2lkIGZpZWxk IGluIGRyaXZlciBjb21tYW5kcworCWRlcGVuZHMgdXBvbiB0aGUgbnVtYmVyIG9mIG1hbmFnZWQg Y2hhbm5lbHMuIEZvciBub3csIDY0IElOICsgNjQgT1VUIGFyZQorCXN1cHBvcnRlZC4gSE93ZXZl ciwgdGhlIGNvbW11bmljYXRpb24gcHJvdG9jb2wgZm9yc2VlcyAxMDI0IGNoYW5uZWxzLCBoZW5j ZQorCWJpdCAxMCBpbmRpY2F0ZXMgYSBjYXB0dXJlIChpbnB1dCkgb2JqZWN0KS4KKyovCisjZGVm aW5lIElEX0lTX0NBUFRVUkUJCSggMUwgPDwgMTAgKQorI2RlZmluZSBJRF9PRkZTRVQJCQkxMwkJ CQkvKio8IG9iamVjdCBJRCBpcyBhdCB0aGUgMTN0aCBiaXQgaW4gdGhlIDFzdCBjb21tYW5kIHdv cmQuKi8KKyNkZWZpbmUgSURfQ0hfTUFTSwkJCTB4M0YKKworI2RlZmluZSBPUENPREVfT0ZGU0VU CQkyNAkJCQkvKio8IG9mZnNldCBvZiB0aGUgY29tbWFuZCBvcGNvZGUgaW4gdGhlIGZpcnN0IGNv bW1hbmQgd29yZC4qLworCisKK3R5cGVkZWYgZW51bSB7CisJQ01EXzAwX0lORk9fREVCVUcJCQk9 IDB4MDAsIAkvLyBpbmZvcm1hdGlvbiBkZSBkZWJ1ZworCUNNRF8wMV9HRVRfU1lTX0NGRwkJCT0g MHgwMSwJLy8gbGVjdHVyZSBkZSBsYSBjb25maWd1cmF0aW9uIHN5c3TDqG1lCisJQ01EXzAyX1NF VF9HUkFOVUxBUklUWQkJPSAweDAyLAkvLyBwcm9ncmFtbWF0aW9uIGRlIGxhIGdyYW51bGFyaXTD qQorCUNNRF8wM19TRVRfVElNRVJfSVJRCQk9IDB4MDMsCS8vIHByb2dyYW1tYXRpb24gZGUgbCdJ UlEgUENJIFRpbWVyCisJQ01EXzA0X0dFVF9FVkVOVAkJCT0gMHgwNCwJLy8gbGVjdHVyZSBkZXMg w6l2w6luZW1lbnRzIG5vdGlmacOpcworCUNNRF8wNV9HRVRfUElQRVMJCQk9IDB4MDUsCS8vIGxl Y3R1cmUgZGUgbCfDqXRhdCBkZXMgcGlwZXMKKwkvLworCUNNRF8wNl9BTExPQ0FURV9QSVBFICAg ICAgICA9IDB4MDYsCS8vIHLDqXNlcnZhdGlvbiBkJ3VuIHBpcGUKKwlDTURfMDdfUkVMRUFTRV9Q SVBFCQkJPSAweDA3LAkvLyBsaWLDqXJhdGlvbiBkJ3VuIHBpcGUKKwlDTURfMDhfQVNLX0JVRkZF UlMJCQk9IDB4MDgsCS8vIMOpdGF0IGRlcyBidWZmZXJzIGQndW4gcGlwZQorCUNNRF8wOV9TVE9Q X1BJUEUJCQk9IDB4MDksCS8vIGFycmV0IGQndW4gcGlwZQorCUNNRF8wQV9HRVRfUElQRV9TUExf Q09VTlQJPSAweDBhLAkvLyBsZWN0dXJlIGR1IGNvbXB0ZSBkJ8OpY2hhbnRpbGxvbnMgcGlwZQor CUNNRF8wQl9UT0dHTEVfUElQRV9TVEFURQk9IDB4MGIsCS8vIGNvbW11dGF0aW9uIFNUQVJUL1BB VVNFCisJLy8KKwlDTURfMENfREVGX1NUUkVBTQkJCT0gMHgwYywJLy8gZMOpZmluaXRpb24gZCd1 biBzdHJlYW0KKwlDTURfMERfU0VUX01VVEUJCQkJPSAweDBkLAkvLyBtdXRlIGRlcyB2b2llcwor CUNNRF8wRV9HRVRfU1RSRUFNX1NQTF9DT1VOVCA9IDB4MGUsCS8vIGxlY3R1cmUgw6l0YXQgZXQg Y29tcHRlIGQnw6ljaGFudGlsbG9ucyBzdHJlYW0KKwlDTURfMEZfVVBEQVRFX0JVRkZFUgkJPSAw eDBmLAkvLyBtaXNlIMOgIGpvdXIgZCd1biBidWZmZXIgUEMKKwlDTURfMTBfR0VUX0JVRkZFUgkJ CT0gMHgxMCwJLy8gw6l0YXQgZCd1biBidWZmZXIgUEMKKwlDTURfMTFfQ0FOQ0VMX0JVRkZFUgkJ PSAweDExLAkvLyBhbm51bGF0aW9uIGQndW4gYnVmZmVyIFBDCisJQ01EXzEyX0dFVF9QRUFLCQkJ CT0gMHgxMiwJLy8gbGVjdHVyZSBkZXMgcGVhay1tZXRyZXMgYXVkaW8KKwlDTURfMTNfU0VUX1NU UkVBTV9TVEFURQkJPSAweDEzLAorCUNNRF8xNF9JTlZBTElECQkJCT0gMHgxNCwKK30gY21kX21i X29wY29kZXM7CisKKworLy8qKioqKioqKioqKiBzcGVjaWZpYyB0byBDT0RFQ01EX0lORk9fREVC VUcJCQkqKioqKioqKioqKioqKioKKworCisvLyoqKioqKioqKioqIHNwZWNpZmljIHRvIENPREVD TURfTEVDX0NPTkZfU1lTCQkJKioqKioqKioqKioqKioqCisKKyNkZWZpbmUgRlJFUV9GSUVMRF9P RkZTRVQJMTUJLy8gb2Zmc2V0IG9mIHRoZSBmcmVxIGZpZWxkIGluIHRoZSByZXNwb25zZSB3b3Jk CisKKyNkZWZpbmUJCUZSRVFfNDgJCQkweDAwCisjZGVmaW5lCQlGUkVRXzQ0CQkJMHgwMQorI2Rl ZmluZQkJRlJFUV85NgkJCTB4MDIJLy8gKGRydiBtdXN0IHRlc3QgdGhlIGZyZXF1ZW5jeSBtb2Rl KQorI2RlZmluZQkJRlJFUV8xOTIJCTB4MDMJLy8gKGRydiBtdXN0IHRlc3QgdGhlIGZyZXF1ZW5j eSBtb2RlKQorI2RlZmluZQkJRlJFUV9VTktOT1dOCTB4MEYJLy8gKGRydiBtdXN0IHRlc3QgdGhl IGZyZXF1ZW5jeSBtb2RlKQorCisvLy0tIFZlcnNpb24KKyNkZWZpbmUJVkVSU0lPTl9NQUpPUl9P RkZTRVQgMTYKKyNkZWZpbmUJVkVSU0lPTl9NSU5PUl9PRkZTRVQgOAorI2RlZmluZQlWRVJTSU9O X0JVSUxEX09GRlNFVCAwCisjZGVmaW5lIE1JQ1JPQkxBWkVfVkVSU0lPTgkJKChQQ1hfVkVSU0lP Tl9OVU1CRVIgIDw8IFZFUlNJT05fTUFKT1JfT0ZGU0VUKSBcCisJCQkJCQkJCXwoUENYX1ZFUlNJ T05fUkVMRUFTRSA8PCBWRVJTSU9OX01JTk9SX09GRlNFVCkgXAorCQkJCQkJCQl8KFBDWF9CVUlM RF9OVU1CRVIgICAgPDwgVkVSU0lPTl9CVUlMRF9PRkZTRVQpKQorCisKKy8vKioqKioqKioqKiog c3BlY2lmaWMgdG8gQ09ERUNNRF9QUk9HX0dSQU5VTEFSSVRFCQkqKioqKioqKioqKioqKioKKwor Ly8gbXVzdCBiZSBwb3dlciBvZiAyCisvLworI2RlZmluZSBNSUNST0JMQVpFX0lCTF9NSU4JCTMy CQkvLyAzMiAoMCksIDY0ICgxKSwgMTI4ICgyKSwgMjU2ICgzKSwgNTEyICg0KSwgMTAyNCAoNSkK KyNkZWZpbmUgTUlDUk9CTEFaRV9JQkxfREVGQVVMVAkxMjgKKyNkZWZpbmUgTUlDUk9CTEFaRV9J QkxfTUFYCQk1MTIKKyNkZWZpbmUgTUFTS19HUkFOVUxBUklUWQkJKDIqTUlDUk9CTEFaRV9JQkxf TUFYLTEpCisjZGVmaW5lIE1JQ1JPQkxBWkVfSUJMX0NPREVEX0RFRkFVTFQJMgkJLy8gY29kZWQg dmFsdWUsIGZvciBhdWRpbyB2aGRsIHsgMCwgMSwgMiwgMywgNCwgNSB9CisKKy8vKioqKioqKioq Kiogc3BlY2lmaWMgdG8gQ09ERUNNRF9QUk9HX0lSUV9USU1FUgkJKioqKioqKioqKioqKioqCisK KyNkZWZpbmUgTUFTS19USU1FUl9LCQkJMHgwMEZGRkZGRgorCisvLyoqKioqKioqKioqIHNwZWNp ZmljIHRvIENPREVDTURfTEVDX0VWRV9OT1RJRklFUwkJKioqKioqKioqKioqKioqCisKKy8vIC0t IG1hc2sgZGVmaW5pdGlvbnMgZm9yIFNZUy5TVEFUIC0tLS0tCisvLworI2RlZmluZSBNQVNLX1NZ U19TVEFUVVNfRVJST1IJKDFMIDw8IDMxKQkvLyBldmVudHMgdGhhdCBsZWFkIHRvIGEgUENJIGly cSBpZiBub3QgeWV0IHBlbmRpbmcKKyNkZWZpbmUgTUFTS19TWVNfU1RBVFVTX1VSVU4JKDFMIDw8 IDMwKQorI2RlZmluZSBNQVNLX1NZU19TVEFUVVNfT1JVTgkoMUwgPDwgMjkpCisjZGVmaW5lIE1B U0tfU1lTX1NUQVRVU19FT0JPCSgxTCA8PCAyOCkKKyNkZWZpbmUgTUFTS19TWVNfU1RBVFVTX0VP QkkJKDFMIDw8IDI3KQorI2RlZmluZSBNQVNLX1NZU19TVEFUVVNfRlJFUQkoMUwgPDwgMjYpCisj ZGVmaW5lIE1BU0tfU1lTX1NUQVRVU19FU0EJKDFMIDw8IDI1KQkvLyByZXNlcnZlZCwgdGhpcyBp cyBzZXQgYnkgdGhlIFhFUworI2RlZmluZSBNQVNLX1NZU19TVEFUVVNfVElNRVIJKDFMIDw8IDI0 KQorCisjZGVmaW5lIE1BU0tfU1lTX0FTWU5DX0VWRU5UUwkoTUFTS19TWVNfU1RBVFVTX0VSUk9S IHwgTUFTS19TWVNfU1RBVFVTX1VSVU4gfCBcCisJCQkJCQkJCSBNQVNLX1NZU19TVEFUVVNfT1JV TiAgfCBNQVNLX1NZU19TVEFUVVNfRU9CTyB8IFwKKwkJCQkJCQkJIE1BU0tfU1lTX1NUQVRVU19F T0JJICB8IE1BU0tfU1lTX1NUQVRVU19GUkVRIHwgXAorCQkJCQkJCQkgTUFTS19TWVNfU1RBVFVT X0VTQSkKKworI2RlZmluZSBNQVNLX1NZU19QQ0lfRVZFTlRTCQkoTUFTS19TWVNfQVNZTkNfRVZF TlRTIHwgTUFTS19TWVNfU1RBVFVTX1RJTUVSKQorCisjZGVmaW5lIE1BU0tfU1lTX1RJTUVSX0NP VU5UCTB4MDAwMEZGRkYKKworLy8jZGVmaW5lIE1BU0tfU1lTX1NUQVRVU19DTUQJCSgxTCA8PCAy MykJLy8gZXZlbnQgdGhhdCByZW1haW5zIGludGVybmFsCisjZGVmaW5lIE1BU0tfU1lTX1NUQVRV U19FT1RfUExYCQkoMUwgPDwgMjIpCS8vIGV2ZW50IHRoYXQgcmVtYWlucyBpbnRlcm5hbCA6IHJl c2VydmVkIGZvIGVuZCBvZiBwbHggZG1hCisjZGVmaW5lIE1BU0tfU1lTX1NUQVRVU19YRVMJCSgx TCA8PCAyMSkJLy8gZXZlbnQgdGhhdCByZW1haW5zIGludGVybmFsIDogcGVuZGluZyBYRVMgSVJR CisjZGVmaW5lIE1BU0tfU1lTX1NUQVRVU19DTURfRE9ORQkoMUwgPDwgMjApCS8vIGFsdGVybmF0 ZSBjb21tYW5kIG1hbmFnZW1lbnQgOiBub3RpZnkgZHJpdmVyIGluc3RlYWQgb2YgcG9sbGluZwor CisKKy8vIGJlaGF2ZSBsaWtlIG9uIFBDWCA6IHRoZSBkcml2ZXIgbWF5IG5vdCBhY2tub3dsZWRn ZQorLy8gdGhlIE1BU0tfU1lTX1NUQVRVU19USU1FUiBJUlEgc291cmNlIHdpdGggY29tbWFuZCAw eDA0CisvLyBpbiB0aGlzIGNhc2UsIHRoZSB1QiByZXNldHMgaXQgYWZ0ZXIgc2VuZGluZyB0aGUg SVJRCisvLworI2RlZmluZSBPUFRfQVVUT1JFU0VUX1RJTUVSX0lSUQkgIDEKKworLy8qKioqKioq KioqKiBzcGVjaWZpYyB0byBDT0RFQ01EX0VUQVRfUElQRVMJCQkqKioqKioqKioqKioqKioKKwor Ly8gdGhpcyBjb21tYW5kIGlzIG5vdCBtYW5kYXRvcnkgaW5mYWN0CisvLyBkZWZhdWx0IDogZG8g bm90IGNvbXBpbGUKKy8vCisjZGVmaW5lIE9QVF9OT19DTURfR0VUX1BJUEVTCSAgMQorCisvLyoq KioqKioqKioqIHNwZWNpZmljIHRvIENPREVDTURfUkVTRVJWX1BJUEUJCQkqKioqKioqKioqKioq KioKKy8vKioqKioqKioqKiogc3BlY2lmaWMgdG8gQ09ERUNNRF9FVEFUX0JVRkZfUElQRQkJKioq KioqKioqKioqKioqCisKKyNkZWZpbmUgQlVGRl9GTEFHU19PRkZTRVQJMjQJCS8qKjwgb2Zmc2V0 IG9mIHRoZSBidWZmZXIgZmxhZ3MgaW4gdGhlIHJlc3BvbnNlIHdvcmQuKi8KKyNkZWZpbmUgTUFT S19EQVRBX1NJWkUJMHgwMEZGRkZGRgkvKio8dGhpcyBtdXN0IG1hdGNoIHRoZSBmaWVsZCBzaXpl IG9mIGRhdGFzaXplIGluIHRoZSBidWZmZXJfdCBzdHJ1Y3R1cmUuKi8KKworLyoqCisqCUJ1ZmZl ciBGbGFncworKi8KKyB0eXBlZGVmIGVudW0JeworIAlCRl9WQUxJRAkJCT0JMHg4MCwJLyoqPCBz ZXQgaWYgdGhlIGJ1ZmZlciBpcyB2YWxpZCwgY2xlYXIgaWYgZnJlZS4qLworCUJGX0NVUlJFTlQJ CQk9CTB4NDAsCS8qKjwgc2V0IGlmIHRoaXMgaXMgdGhlIGN1cnJlbnQgYnVmZmVyICh0aGVyZSBp cyBhbHdheXMgYSBjdXJyZW50IGJ1ZmZlcikuKi8KKwlCRl9OT1RJRllfRU9CCQk9CTB4MjAsCS8q Kjwgc2V0IGlmIHRoaXMgYnVmZmVyIG11c3QgY2F1c2UgYSBQQ0kgZXZlbnQgd2hlbiBmaW5pc2hl ZC4qLworCUJGX0NJUkNVTEFSCQkJPQkweDEwLAkvKio8IHNldCBpZiBidWZmZXJbMV0gbXVzdCBi ZSBjb3BpZWQgdG8gYnVmZmVyWzBdIGJ5IHRoZSBlbmQgb2YgdGhpcyBidWZmZXIuKi8KKwlCRl82 NEJJVFNfQURSCQk9CTB4MDgsCS8qKjwgc2V0IGlmIHRoZSBoaSBwYXJ0IG9mIHRoZSBhZGRyZXNz IGlzIHZhbGlkLiovCisJQkZfeHgJCQkJPQkweDA0LAkvKio8IGZ1dHVyIGV4dGVuc2lvbi4qLwor CUJGX0VPQgkJCQk9CTB4MDIsCS8qKjwgc2V0IGlmIGZpbmlzaGVkLCBidXQgbm90IHlldCBmcmVl LiovCisJQkZfUEFVU0UJCQk9CTB4MDEsCS8qKjwgcGF1c2Ugc3RyZWFtIGF0IGJ1ZmZlciBlbmQu Ki8KKwlCRl9aRVJPCQkJCT0JMHgwMCwJLyoqPCBubyBmbGFncyAoaW5pdCkuKi8KKyB9IGJ1ZmZl cl9mbGFnczsKKworLy8gZmxhZ3Mgc2V0IGJ5IGRyaXZlci4KKyNkZWZpbmUgTUFTS19CRl9GTEFH UwkoQkZfTk9USUZZX0VPQnxCRl9DSVJDVUxBUnxCRl82NEJJVFNfQURSfEJGX1BBVVNFfEJGX3h4 KQorCisvLyoqKioqKioqKioqIHNwZWNpZmljIHRvIENPREVDTURfU1RPUF9QSVBFCQkJCSoqKioq KioqKioqKioqKgorLy8qKioqKioqKioqKiBzcGVjaWZpYyB0byBDT0RFQ01EX0xFQ19DRVAJCQkJ KioqKioqKioqKioqKioqCisKKyNkZWZpbmUgTUFTS19TUExfQ09VTlRfSEkJMHgwMEZGRkZGRgkv LyA0IE1TQml0cyBhcmUgc3RhdHVzIGJpdHMKKyNkZWZpbmUgUFNUQVRFX09GRlNFVAkJMjgJCQkv LyA0IE1TQml0cyBhcmUgc3RhdHVzIGJpdHMKKworLyoqCisqCXBpcGUgc3RhdGVzCisqLwordHlw ZWRlZiBlbnVtICB7CisJUFNUQVRFX0lETEUJCT0gMCwJLyoqPCB0aGUgcGlwZSBpcyBub3QgcHJv Y2Vzc2VkIGluIHRoZSBYRVNfSVJRIChmcmVlIG9yIHN0b3BwZWQsIG9yIHBhdXNlZCkuICovCisJ UFNUQVRFX1JVTgkJPSAxLAkvKio8IHN1c3RhaW5lZCBwbGF5L3JlY29yZCBzdGF0ZS4gKi8KKwlQ U1RBVEVfUFVSR0UJPSAyLAkvKio8IHRoZSBFUyBjaGFubmVscyBhcmUgbm93IG9mZiwgcmVuZGVy IHBpcGVzIGRvIG5vdCBETUEsIHJlY29yZCBwaXBlIGRvIGEgbGFzdCBETUEuICovCisJUFNUQVRF X0FDUVVJUkUJPSAzLAkvKio8IHRoZSBFUyBjaGFubmVscyBhcmUgbm93IG9uLCByZW5kZXIgcGlw ZXMgZG8gbm90IHlldCBpbmNyZWFzZSB0aGVpciBzYW1wbGUgY291bnQsIHJlY29yZCBwaXBlcyBk byBub3QgRE1BLiAqLworCVBTVEFURV9DTE9TSU5HCT0gNCwJLyoqPCB0aGUgcGlwZSBpcyByZWxl YXNpbmcsIGFuZCBtYXkgbm90IHlldCByZWNlaXZlIGFuICJhbGxvYyIgY29tbWFuZC4gKi8KK30g cGlwZV9zdGF0ZV90OworCisKKy8vKioqKioqKioqKiogc3BlY2lmaWMgdG8gQ09ERUNNRF9TVEFS VF9QQVVTRQkJCSoqKioqKioqKioqKioqKgorCisjZGVmaW5lIE1BU0tfQ01EX0xJU1RFCQkoMUwg PDwgMTIpCS8vIGJpdCAxMiBpbmRpY2F0ZXMgYSBsaXN0IG9yIG1hc2sgb2YgYXJndW1lbnRzIGlz IHBhc3NlZCBpbiB0aGUgZm9sbG93aW5nIGNvbWFuZCB3b3Jkcy4KKworLy8qKioqKioqKioqKiBz cGVjaWZpYyB0byBDT0RFQ01EX0RFRl9TVFJFQU0JCQkqKioqKioqKioqKioqKioKKworI2RlZmlu ZSBNQVNLX1NUUkVBTV9IQVNfTUFQUElORwkoIDFMIDw8IDEyKQorI2RlZmluZSBNQVNLX1NUUkVB TV9JU19BU0lPCQkoIDFMIDw8IDkpCisjZGVmaW5lIFNUUkVBTV9GTVRfT0ZGU0VUCTEwCS8qKjx0 aGUgc3RyZWFtIGZtdCBiaXRzIHN0YXJ0IGF0IHRoZSAxMHRoIGJpdCBpbiB0aGUgY29tbWFuZCB3 b3JkLiovCisvLyBzZWUgRE1BX2NvbmZfdCBzdHJ1Y3R1cmUgYXN3ZWxsLCBtdXN0IGJlIHRoZSBz YW1lIHZhbHVlcworI2RlZmluZSBTVFJFQU1fRk1UXzE2YgkJMHgwMgorI2RlZmluZSBTVFJFQU1f Rk1UX2ludGVsCTB4MDEKKyNkZWZpbmUgU1RSRUFNX01BUF9pbXBsaWNpdAkweDAxCisjZGVmaW5l IFNUUkVBTV9NQVBfZXhwbGljaXQJMAorCisKKy8vKioqKioqKioqKiogc3BlY2lmaWMgdG8gQ09E RUNNRF9MRUNfRVRBVF9DRVMJCQkqKioqKioqKioqKioqKioKKworLyoqCisqCVN0cmVhbSBGbGFn cyBkZWZpbml0aW9ucworKi8KKyB0eXBlZGVmIGVudW0JeworCVNGX1pFUk8JCQk9CTB4MDAwMDAw MDAsCS8qKjwgbm8gZmxhZ3MgKHN0cmVhbSBpbnZhbGlkKS4qLworIAlTRl9WQUxJRAkJPQkweDEw MDAwMDAwLAkvKio8IHRoZSBzdHJlYW0gaGFzIGEgdmFsaWQgRE1BX2NvbmYgaW5mbyAoc2V0c3Ry ZWFtZm9ybWF0KS4qLworCVNGX1hSVU4JCQk9CTB4MjAwMDAwMDAsCS8qKjwgdGhlIHN0cmVhbSBp cyB1biB4LXJ1biBzdGF0ZS4qLworCVNGX1NUQVJUCQk9CTB4NDAwMDAwMDAsCS8qKjwgdGhlIERN QSBpcyBydW5uaW5nLiovCisJU0ZfQVNJTwkJCT0JMHg4MDAwMDAwMCwJLyoqPCBBU0lPLiovCisg fQlzdHJlYW1fZmxhZ3MgOworCisKKy8vKioqKioqKioqKiogc3BlY2lmaWMgdG8gQ09ERUNNRF9N QUpfQlVGRkVSX1BDCQkJKioqKioqKioqKioqKioqCisvLyNpZiBERUJVR19NQUlOID09IDEKKy8v I2RlZmluZSBNQVhfU1RSRUFNX0JVRkZFUiAzCS8qKjwgbWF4IGFtb3VudCBvZiBzdHJlYW0gYnVm ZmVycy4qLworLy8jZWxzZQorI2RlZmluZSBNQVhfU1RSRUFNX0JVRkZFUiA1CS8qKjwgbWF4IGFt b3VudCBvZiBzdHJlYW0gYnVmZmVycy4qLworLy8jZW5kaWYKKworLy8qKioqKioqKioqKiBzcGVj aWZpYyB0byBDT0RFQ01EX0RFTF9CVUZGX1BDCQkJKioqKioqKioqKioqKioqCisKKyNkZWZpbmUg TUFTS19CVUZGRVJfSUQJMHhGRgkJLyoqPHRoZSBjYW5jZWwgY29tbWFuZCBhd2FpdHMgYSBidWZm ZXIgSUQsIG1heSBiZSAweEZGIGZvciAiY3VycmVudCIuKi8KKworLy8qKioqKioqKioqKiBzcGVj aWZpYyB0byBDT0RFQ01EX0xFQ1RVUkVfUEVBS01FVFJFUwkqKioqKioqKioqKioqKioKKworCisv LyoqKioqKioqKioqIHNwZWNpZmljIHRvIENNRF8xM19TRVRfU1RSRUFNX1NUQVRFCSoqKioqKioq KioqKioqKgorCisKKy8qKgorKglzdHJlYW0gc3RhdGVzCisqLwordHlwZWRlZiBlbnVtICB7CisJ U1NUQVRFX1NUT1AJCT0gIDB4MDAsCQkvKio8IHNldHRpbmcgdG8gc3RvcCByZXNldHMgdGhlIHN0 cmVhbSBzcGwgY291bnQuKi8KKwlTU1RBVEVfUlVOCQk9ICgweDAxIDw8IDApLAkvKio8IHN0YXJ0 IERNQSBhbmQgc3BsIGNvdW50IGhhbmRsaW5nLiAqLworCVNTVEFURV9QQVVTRQk9ICgweDAxIDw8 IDEpLAkvKio8IHBhdXNlIERNQSBhbmQgc3BsIGNvdW50IGhhbmRsaW5nLiAqLworfSBzdHJlYW1f c3RhdGVfdDsKKworCisjZGVmaW5lIE1BU0tfU1RSRUFNX1NUQVRFCTB4MDAwMDAwMEYJCS8qKjx0 aGUgc3RhdGUgZmllbGQgaW4gdGhlIDFzdCBjb21tYW5kIHdvcmQuKi8KKworI2VuZGlmCmRpZmYg LS1naXQgYS9zb3VuZC9wY2kvbHg2NDY0ZXMvbHg2NDY0ZXMuYyBiL3NvdW5kL3BjaS9seDY0NjRl cy9seDY0NjRlcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxZGY2OTMK LS0tIC9kZXYvbnVsbAorKysgYi9zb3VuZC9wY2kvbHg2NDY0ZXMvbHg2NDY0ZXMuYwpAQCAtMCww ICsxLDExNzkgQEAKKy8qIC0qLSBsaW51eC1jIC0qLSAqCisgKgorICogQUxTQSBkcml2ZXIgZm9y IHRoZSBkaWdpZ3JhbSBseDY0NjRlcyBpbnRlcmZhY2UKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIw MDgsIDIwMDkgVGltIEJsZWNobWFubiA8dGltQGtsaW5ndC5vcmc+CisgKgorICoKKyAqIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICog R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAg SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg NTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBV U0EuCisgKgorICovCisKKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51 eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvcGNpLmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXku aD4KKworI2luY2x1ZGUgPHNvdW5kL2luaXR2YWwuaD4KKyNpbmNsdWRlIDxzb3VuZC9jb250cm9s Lmg+CisjaW5jbHVkZSA8c291bmQvaW5mby5oPgorCisjaW5jbHVkZSAibHg2NDY0ZXMuaCIKKwor I2luY2x1ZGUgIkxYRVNfcmVnaXN0ZXJzLmgiCisKK01PRFVMRV9BVVRIT1IoIlRpbSBCbGVjaG1h bm4iKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9ERVNDUklQVElPTigiZGlnaWdy YW0gbHg2NDY0ZXMiKTsKK01PRFVMRV9TVVBQT1JURURfREVWSUNFKCJ7ZGlnaWdyYW0gbHg2NDY0 ZXN7fX0iKTsKKworCitzdGF0aWMgaW50IGluZGV4W1NORFJWX0NBUkRTXSA9IFNORFJWX0RFRkFV TFRfSURYOworc3RhdGljIGNoYXIgKmlkW1NORFJWX0NBUkRTXSA9IFNORFJWX0RFRkFVTFRfU1RS Oworc3RhdGljIGludCBlbmFibGVbU05EUlZfQ0FSRFNdID0gU05EUlZfREVGQVVMVF9FTkFCTEVf UE5QOworCitzdGF0aWMgY29uc3QgY2hhciBjYXJkX25hbWVbXSA9ICJMWDY0NjRFUyI7CisKKwor LyoKKyAqIHBjaSBkZXZpY2Ugc3R1ZmYKKyAqCisgKiAqLworCisKKyNpZm5kZWYgUENJX0RFVklD RV9JRF9QTFhfOTA1NgkvKiBMQVRFUjogdGhpcyBzaG91bGQgZ28gdG8gcGNpX2lkcy5oICovCisj ZGVmaW5lIFBDSV9ERVZJQ0VfSURfUExYXzkwNTYJCTB4OTA1NgorI2VuZGlmCisKKyNkZWZpbmUg UENJX0RFVklDRV9JRF9QTFhfTFg2NDY0RVMJCVBDSV9ERVZJQ0VfSURfUExYXzkwNTYKKworI2lm bmRlZiBQQ0lfVkVORE9SX0lEX0RJR0lHUkFNCisjZGVmaW5lIFBDSV9WRU5ET1JfSURfRElHSUdS QU0JCTB4MTM2OQorI2VuZGlmCisKKyNpZm5kZWYgUENJX1NVQkRFVklDRV9JRF9ESUdJR1JBTV9M WDY0NjRFU19TRVJJQUxfU1VCU1lTVEVNCisjZGVmaW5lIFBDSV9TVUJERVZJQ0VfSURfRElHSUdS QU1fTFg2NDY0RVNfU0VSSUFMX1NVQlNZU1RFTQkweGMwMDEKKyNkZWZpbmUgUENJX1NVQkRFVklD RV9JRF9ESUdJR1JBTV9MWDY0NjRFU19DQUVfU0VSSUFMX1NVQlNZU1RFTQkweGMwMDIKKyNlbmRp ZgorCitzdGF0aWMgc3RydWN0IHBjaV9kZXZpY2VfaWQgc25kX2x4NjQ2NGVzX2lkc1tdID0gewor CXsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX1BMWCwgUENJX0RFVklDRV9JRF9QTFhfTFg2NDY0 RVMpLAorCSAgLnN1YnZlbmRvciA9IFBDSV9WRU5ET1JfSURfRElHSUdSQU0sCisJICAuc3ViZGV2 aWNlID0gUENJX1NVQkRFVklDRV9JRF9ESUdJR1JBTV9MWDY0NjRFU19TRVJJQUxfU1VCU1lTVEVN CisJfSwJCQkvKiBMWDY0NjRFUyAqLworCXsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX1BMWCwg UENJX0RFVklDRV9JRF9QTFhfTFg2NDY0RVMpLAorCSAgLnN1YnZlbmRvciA9IFBDSV9WRU5ET1Jf SURfRElHSUdSQU0sCisJICAuc3ViZGV2aWNlID0gUENJX1NVQkRFVklDRV9JRF9ESUdJR1JBTV9M WDY0NjRFU19DQUVfU0VSSUFMX1NVQlNZU1RFTQorCX0sCQkJLyogTFg2NDY0RVMtQ0FFICovCisJ eyAwLCB9LAorfTsKKworTU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHNuZF9seDY0NjRlc19pZHMp OworCisKKworLyogUEdPIHBvdXIgVVNFUm8gZGFucyBsZSByZWdpc3RyZSBwY2lfMHgwNi9sb2Nf MHhFQyAqLworI2RlZmluZSBDSElQU0NfUkVTRVRfWElMSU5YICgxTDw8MTYpCisKKworLyogYWxz YSBjYWxsYmFja3MgKi8KK3N0YXRpYyBzdHJ1Y3Qgc25kX3BjbV9oYXJkd2FyZSBseF9jYXBzID0g eworCS5pbmZvICAgICAgICAgICAgID0gKFNORFJWX1BDTV9JTkZPX01NQVAgfAorCQkJICAgICBT TkRSVl9QQ01fSU5GT19JTlRFUkxFQVZFRCB8CisJCQkgICAgIFNORFJWX1BDTV9JTkZPX01NQVBf VkFMSUQgfAorCQkJICAgICBTTkRSVl9QQ01fSU5GT19TWU5DX1NUQVJUKSwKKwkuZm9ybWF0cwkg ID0gKFNORFJWX1BDTV9GTVRCSVRfUzE2X0xFIHwKKwkJCSAgICAgU05EUlZfUENNX0ZNVEJJVF9T MTZfQkUgfAorCQkJICAgICBTTkRSVl9QQ01fRk1UQklUX1MyNF8zTEUgfAorCQkJICAgICBTTkRS Vl9QQ01fRk1UQklUX1MyNF8zQkUpLAorCS5yYXRlcyAgICAgICAgICAgID0gKFNORFJWX1BDTV9S QVRFX0NPTlRJTlVPVVMgfAorCQkJICAgICBTTkRSVl9QQ01fUkFURV84MDAwXzE5MjAwMCksCisJ LnJhdGVfbWluICAgICAgICAgPSA4MDAwLAorCS5yYXRlX21heCAgICAgICAgID0gMTkyMDAwLAor CS5jaGFubmVsc19taW4gICAgID0gMiwKKwkuY2hhbm5lbHNfbWF4ICAgICA9IDY0LAorCS5idWZm ZXJfYnl0ZXNfbWF4ID0gNjQqMiozKk1JQ1JPQkxBWkVfSUJMX01BWCpNQVhfU1RSRUFNX0JVRkZF UiwKKwkucGVyaW9kX2J5dGVzX21pbiA9ICgyKjIqTUlDUk9CTEFaRV9JQkxfTUlOKjIpLAorCS5w ZXJpb2RfYnl0ZXNfbWF4ID0gKDQqNjQqTUlDUk9CTEFaRV9JQkxfTUFYKk1BWF9TVFJFQU1fQlVG RkVSKSwKKwkucGVyaW9kc19taW4gICAgICA9IDIsCisJLnBlcmlvZHNfbWF4ICAgICAgPSBNQVhf U1RSRUFNX0JVRkZFUiwKK307CisKK3N0YXRpYyBpbnQgbHhfc2V0X2dyYW51bGFyaXR5KHN0cnVj dCBseDY0NjRlcyAqY2hpcCwgdTMyIGdyYW4pOworCisKK3N0YXRpYyBpbnQgbHhfaGFyZHdhcmVf b3BlbihzdHJ1Y3QgbHg2NDY0ZXMgKmNoaXAsCisJCQkgICAgc3RydWN0IHNuZF9wY21fc3Vic3Ry ZWFtICpzdWJzdHJlYW0pCit7CisJaW50IGVyciA9IDA7CisJc3RydWN0IHNuZF9wY21fcnVudGlt ZSAqcnVudGltZSA9IHN1YnN0cmVhbS0+cnVudGltZTsKKwlpbnQgY2hhbm5lbHMgPSBydW50aW1l LT5jaGFubmVsczsKKwlpbnQgaXNfY2FwdHVyZSA9IChzdWJzdHJlYW0tPnN0cmVhbSA9PSBTTkRS Vl9QQ01fU1RSRUFNX0NBUFRVUkUpOworCisJc25kX3BjbV91ZnJhbWVzX3QgcGVyaW9kX3NpemUg PSBydW50aW1lLT5wZXJpb2Rfc2l6ZTsKKworCXNuZF9wcmludGQoTFhQICJhbGxvY2F0aW5nIHBp cGUgZm9yICVkIGNoYW5uZWxzXG4iLCBjaGFubmVscyk7CisJZXJyID0gbHhfcGlwZV9hbGxvY2F0 ZShjaGlwLCAwLCBpc19jYXB0dXJlLCBjaGFubmVscyk7CisJaWYgKGVyciA8IDApIHsKKwkJc25k X3ByaW50ayhLRVJOX0VSUiBMWFAgImFsbG9jYXRpbmcgcGlwZSBmYWlsZWRcbiIpOworCQlyZXR1 cm4gZXJyOworCX0KKworCWVyciA9IGx4X3NldF9ncmFudWxhcml0eShjaGlwLCBwZXJpb2Rfc2l6 ZSk7CisJaWYgKGVyciA8IDApIHsKKwkJc25kX3ByaW50ayhLRVJOX0VSUiBMWFAgInNldHRpbmcg Z3JhbnVsYXJpdHkgdG8gJWxkIGZhaWxlZFxuIiwKKwkJCSAgIHBlcmlvZF9zaXplKTsKKwkJcmV0 dXJuIGVycjsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBseF9oYXJkd2FyZV9z dGFydChzdHJ1Y3QgbHg2NDY0ZXMgKmNoaXAsCisJCQkgICAgIHN0cnVjdCBzbmRfcGNtX3N1YnN0 cmVhbSAqc3Vic3RyZWFtKQoreworCWludCBlcnIgPSAwOworCXN0cnVjdCBzbmRfcGNtX3J1bnRp bWUgKnJ1bnRpbWUgPSBzdWJzdHJlYW0tPnJ1bnRpbWU7CisJaW50IGlzX2NhcHR1cmUgPSAoc3Vi c3RyZWFtLT5zdHJlYW0gPT0gU05EUlZfUENNX1NUUkVBTV9DQVBUVVJFKTsKKworCXNuZF9wcmlu dGQoTFhQICJzZXR0aW5nIHN0cmVhbSBmb3JtYXRcbiIpOworCWVyciA9IGx4X3N0cmVhbV9zZXRf Zm9ybWF0KGNoaXAsIHJ1bnRpbWUsIDAsIGlzX2NhcHR1cmUpOworCWlmIChlcnIgPCAwKSB7CisJ CXNuZF9wcmludGsoS0VSTl9FUlIgTFhQICJzZXR0aW5nIHN0cmVhbSBmb3JtYXQgZmFpbGVkXG4i KTsKKwkJcmV0dXJuIGVycjsKKwl9CisKKwlzbmRfcHJpbnRkKExYUCAic3RhcnRpbmcgcGlwZVxu Iik7CisJZXJyID0gbHhfcGlwZV9zdGFydChjaGlwLCAwLCBpc19jYXB0dXJlKTsKKwlpZiAoZXJy IDwgMCkgeworCQlzbmRfcHJpbnRrKEtFUk5fRVJSIExYUCAic3RhcnRpbmcgcGlwZSBmYWlsZWRc biIpOworCQlyZXR1cm4gZXJyOworCX0KKworCXNuZF9wcmludGQoTFhQICJ3YWl0aW5nIGZvciBw aXBlIHRvIHN0YXJ0XG4iKTsKKwllcnIgPSBseF9waXBlX3dhaXRfZm9yX3N0YXJ0KGNoaXAsIDAs IGlzX2NhcHR1cmUpOworCWlmIChlcnIgPCAwKSB7CisJCXNuZF9wcmludGsoS0VSTl9FUlIgTFhQ ICJ3YWl0aW5nIGZvciBwaXBlIGZhaWxlZFxuIik7CisJCXJldHVybiBlcnI7CisJfQorCisJcmV0 dXJuIGVycjsKK30KKworCitzdGF0aWMgaW50IGx4X2hhcmR3YXJlX3N0b3Aoc3RydWN0IGx4NjQ2 NGVzICpjaGlwLAorCQkJICAgIHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtKQor eworCWludCBlcnIgPSAwOworCWludCBpc19jYXB0dXJlID0gKHN1YnN0cmVhbS0+c3RyZWFtID09 IFNORFJWX1BDTV9TVFJFQU1fQ0FQVFVSRSk7CisKKwlzbmRfcHJpbnRkKExYUCAicGF1c2luZyBw aXBlXG4iKTsKKwllcnIgPSBseF9waXBlX3BhdXNlKGNoaXAsIDAsIGlzX2NhcHR1cmUpOworCWlm IChlcnIgPCAwKSB7CisJCXNuZF9wcmludGsoS0VSTl9FUlIgTFhQICJwYXVzaW5nIHBpcGUgZmFp bGVkXG4iKTsKKwkJcmV0dXJuIGVycjsKKwl9CisKKwlzbmRfcHJpbnRkKExYUCAid2FpdGluZyBm b3IgcGlwZSB0byBiZWNvbWUgaWRsZVxuIik7CisJZXJyID0gbHhfcGlwZV93YWl0X2Zvcl9pZGxl KGNoaXAsIDAsIGlzX2NhcHR1cmUpOworCWlmIChlcnIgPCAwKSB7CisJCXNuZF9wcmludGsoS0VS Tl9FUlIgTFhQICJ3YWl0aW5nIGZvciBwaXBlIGZhaWxlZFxuIik7CisJCXJldHVybiBlcnI7CisJ fQorCisJc25kX3ByaW50ZChMWFAgInN0b3BwaW5nIHBpcGVcbiIpOworCWVyciA9IGx4X3BpcGVf c3RvcChjaGlwLCAwLCBpc19jYXB0dXJlKTsKKwlpZiAoZXJyIDwgMCkgeworCQlzbmRfcHJpbnRr KExYUCAic3RvcHBpbmcgcGlwZSBmYWlsZWRcbiIpOworCQlyZXR1cm4gZXJyOworCX0KKworCXJl dHVybiBlcnI7Cit9CisKKworc3RhdGljIGludCBseF9oYXJkd2FyZV9jbG9zZShzdHJ1Y3QgbHg2 NDY0ZXMgKmNoaXAsCisJCQkgICAgIHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFt KQoreworCWludCBlcnIgPSAwOworCWludCBpc19jYXB0dXJlID0gKHN1YnN0cmVhbS0+c3RyZWFt ID09IFNORFJWX1BDTV9TVFJFQU1fQ0FQVFVSRSk7CisKKwlzbmRfcHJpbnRkKExYUCAicmVsZWFz aW5nIHBpcGVcbiIpOworCWVyciA9IGx4X3BpcGVfcmVsZWFzZShjaGlwLCAwLCBpc19jYXB0dXJl KTsKKwlpZiAoZXJyIDwgMCkgeworCQlzbmRfcHJpbnRrKExYUCAicmVsZWFzaW5nIHBpcGUgZmFp bGVkXG4iKTsKKwkJcmV0dXJuIGVycjsKKwl9CisKKwlyZXR1cm4gZXJyOworfQorCisKK3N0YXRp YyBpbnQgbHhfcGNtX29wZW4oc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCit7 CisJc3RydWN0IGx4NjQ2NGVzICpjaGlwID0gc25kX3BjbV9zdWJzdHJlYW1fY2hpcChzdWJzdHJl YW0pOworCXN0cnVjdCBzbmRfcGNtX3J1bnRpbWUgKnJ1bnRpbWUgPSBzdWJzdHJlYW0tPnJ1bnRp bWU7CisJaW50IGVyciA9IDA7CisJaW50IGJvYXJkX3JhdGU7CisKKwlzbmRfcHJpbnRkZCgiLT5s eF9wY21fb3BlblxuIik7CisJbXV0ZXhfbG9jaygmY2hpcC0+c2V0dXBfbXV0ZXgpOworCisJLyog Y29weSB0aGUgc3RydWN0IHNuZF9wY21faGFyZHdhcmUgc3RydWN0ICovCisJcnVudGltZS0+aHcg PSBseF9jYXBzOworCisjaWYgMAorCS8qIGJ1ZmZlci1zaXplIHNob3VsZCBiZXR0ZXIgYmUgbXVs dGlwbGUgb2YgcGVyaW9kLXNpemUgKi8KKwllcnIgPSBzbmRfcGNtX2h3X2NvbnN0cmFpbnRfaW50 ZWdlcihydW50aW1lLAorCQkJCQkgICAgU05EUlZfUENNX0hXX1BBUkFNX1BFUklPRFMpOworCWlm IChlcnIgPCAwKSB7CisJCXNuZF9wcmludGsoS0VSTl9XQVJOSU5HIExYUCAiY291bGQgbm90IGNv bnN0cmFpbiBwZXJpb2RzXG4iKTsKKwkJZ290byBleGl0OworCX0KKyNlbmRpZgorCisJLyogdGhl IGNsb2NrIHJhdGUgY2Fubm90IGJlIGNoYW5nZWQgKi8KKwlib2FyZF9yYXRlID0gY2hpcC0+Ym9h cmRfc2FtcGxlX3JhdGU7CisJZXJyID0gc25kX3BjbV9od19jb25zdHJhaW50X21pbm1heChydW50 aW1lLCBTTkRSVl9QQ01fSFdfUEFSQU1fUkFURSwKKwkJCQkJICAgYm9hcmRfcmF0ZSwgYm9hcmRf cmF0ZSk7CisKKwlpZiAoZXJyIDwgMCkgeworCQlzbmRfcHJpbnRrKEtFUk5fV0FSTklORyBMWFAg ImNvdWxkIG5vdCBjb25zdHJhaW4gcGVyaW9kc1xuIik7CisJCWdvdG8gZXhpdDsKKwl9CisKKwkv KiBjb25zdHJhaW4gcGVyaW9kIHNpemUgKi8KKwllcnIgPSBzbmRfcGNtX2h3X2NvbnN0cmFpbnRf bWlubWF4KHJ1bnRpbWUsCisJCQkJCSAgIFNORFJWX1BDTV9IV19QQVJBTV9QRVJJT0RfU0laRSwK KwkJCQkJICAgTUlDUk9CTEFaRV9JQkxfTUlOLAorCQkJCQkgICBNSUNST0JMQVpFX0lCTF9NQVgp OworCWlmIChlcnIgPCAwKSB7CisJCXNuZF9wcmludGsoS0VSTl9XQVJOSU5HIExYUAorCQkJICAg ImNvdWxkIG5vdCBjb25zdHJhaW4gcGVyaW9kIHNpemVcbiIpOworCQlnb3RvIGV4aXQ7CisJfQor CisJc25kX3BjbV9od19jb25zdHJhaW50X3N0ZXAocnVudGltZSwgMCwKKwkJCQkgICBTTkRSVl9Q Q01fSFdfUEFSQU1fQlVGRkVSX1NJWkUsIDMyKTsKKworCXNuZF9wY21fc2V0X3N5bmMoc3Vic3Ry ZWFtKTsKKwllcnIgPSAwOworCitleGl0OgorCXJ1bnRpbWUtPnByaXZhdGVfZGF0YSA9IGNoaXA7 CisKKwltdXRleF91bmxvY2soJmNoaXAtPnNldHVwX211dGV4KTsKKwlzbmRfcHJpbnRkZCgiPC1s eF9wY21fb3BlbiwgJWRcbiIsIGVycik7CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIGludCBs eF9wY21fY2xvc2Uoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCit7CisJaW50 IGVyciA9IDA7CisJc25kX3ByaW50ZGQoIi0+bHhfcGNtX2Nsb3NlXG4iKTsKKwlyZXR1cm4gZXJy OworfQorCitzdGF0aWMgc25kX3BjbV91ZnJhbWVzX3QgbHhfcGNtX3N0cmVhbV9wb2ludGVyKHN0 cnVjdCBzbmRfcGNtX3N1YnN0cmVhbQorCQkJCQkgICAgICAgKnN1YnN0cmVhbSkKK3sKKwlzdHJ1 Y3QgbHg2NDY0ZXMgKmNoaXAgPSBzbmRfcGNtX3N1YnN0cmVhbV9jaGlwKHN1YnN0cmVhbSk7CisJ c25kX3BjbV91ZnJhbWVzX3QgcG9zOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJaW50IGlzX2Nh cHR1cmUgPSAoc3Vic3RyZWFtLT5zdHJlYW0gPT0gU05EUlZfUENNX1NUUkVBTV9DQVBUVVJFKTsK KworCXN0cnVjdCBseF9zdHJlYW0gKmx4X3N0cmVhbSA9IGlzX2NhcHR1cmUgPyAmY2hpcC0+Y2Fw dHVyZV9zdHJlYW0gOgorCQkmY2hpcC0+cGxheWJhY2tfc3RyZWFtOworCisJc25kX3ByaW50ZGQo Ii0+bHhfcGNtX3N0cmVhbV9wb2ludGVyXG4iKTsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZjaGlw LT5sb2NrLCBmbGFncyk7CisJcG9zID0gbHhfc3RyZWFtLT5mcmFtZV9wb3MgKiBzdWJzdHJlYW0t PnJ1bnRpbWUtPnBlcmlvZF9zaXplOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNoaXAtPmxv Y2ssIGZsYWdzKTsKKworCXNuZF9wcmludGRkKExYUCAic3RyZWFtX3BvaW50ZXIgYXQgJWxkXG4i LCBwb3MpOworCXJldHVybiBwb3M7Cit9CisKK3N0YXRpYyBpbnQgbHhfcGNtX3ByZXBhcmUoc3Ry dWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCit7CisJc3RydWN0IGx4NjQ2NGVzICpj aGlwID0gc25kX3BjbV9zdWJzdHJlYW1fY2hpcChzdWJzdHJlYW0pOworCWludCBlcnIgPSAwOwor CWNvbnN0IGludCBpc19jYXB0dXJlID0gKHN1YnN0cmVhbS0+c3RyZWFtID09IFNORFJWX1BDTV9T VFJFQU1fQ0FQVFVSRSk7CisKKwlzbmRfcHJpbnRkZCgiLT5seF9wY21fcHJlcGFyZVxuIik7CisK KwltdXRleF9sb2NrKCZjaGlwLT5zZXR1cF9tdXRleCk7CisKKwlpZiAoY2hpcC0+aGFyZHdhcmVf cnVubmluZ1tpc19jYXB0dXJlXSkgeworCQllcnIgPSBseF9oYXJkd2FyZV9zdG9wKGNoaXAsIHN1 YnN0cmVhbSk7CisJCWlmIChlcnIgPCAwKSB7CisJCQlzbmRfcHJpbnRrKEtFUk5fRVJSIExYUCAi ZmFpbGVkIHRvIHN0b3AgaGFyZHdhcmUuICIKKwkJCQkgICAiRXJyb3IgY29kZSAlZFxuIiwgZXJy KTsKKwkJCWdvdG8gZXhpdDsKKwkJfQorCisJCWVyciA9IGx4X2hhcmR3YXJlX2Nsb3NlKGNoaXAs IHN1YnN0cmVhbSk7CisJCWlmIChlcnIgPCAwKSB7CisJCQlzbmRfcHJpbnRrKEtFUk5fRVJSIExY UCAiZmFpbGVkIHRvIGNsb3NlIGhhcmR3YXJlLiAiCisJCQkJICAgIkVycm9yIGNvZGUgJWRcbiIs IGVycik7CisJCQlnb3RvIGV4aXQ7CisJCX0KKwl9CisKKwlzbmRfcHJpbnRkKExYUCAib3Blbmlu ZyBoYXJkd2FyZVxuIik7CisJZXJyID0gbHhfaGFyZHdhcmVfb3BlbihjaGlwLCBzdWJzdHJlYW0p OworCWlmIChlcnIgPCAwKSB7CisJCXNuZF9wcmludGsoS0VSTl9FUlIgTFhQICJmYWlsZWQgdG8g b3BlbiBoYXJkd2FyZS4gIgorCQkJICAgIkVycm9yIGNvZGUgJWRcbiIsIGVycik7CisJCWdvdG8g ZXhpdDsKKwl9CisKKwllcnIgPSBseF9oYXJkd2FyZV9zdGFydChjaGlwLCBzdWJzdHJlYW0pOwor CWlmIChlcnIgPCAwKSB7CisJCXNuZF9wcmludGsoS0VSTl9FUlIgTFhQICJmYWlsZWQgdG8gc3Rh cnQgaGFyZHdhcmUuICIKKwkJCSAgICJFcnJvciBjb2RlICVkXG4iLCBlcnIpOworCQlnb3RvIGV4 aXQ7CisJfQorCisJY2hpcC0+aGFyZHdhcmVfcnVubmluZ1tpc19jYXB0dXJlXSA9IDE7CisKKwlp ZiAoY2hpcC0+Ym9hcmRfc2FtcGxlX3JhdGUgIT0gc3Vic3RyZWFtLT5ydW50aW1lLT5yYXRlKSB7 CisJCWlmICghZXJyKQorCQkJY2hpcC0+Ym9hcmRfc2FtcGxlX3JhdGUgPSBzdWJzdHJlYW0tPnJ1 bnRpbWUtPnJhdGU7CisJfQorCitleGl0OgorCW11dGV4X3VubG9jaygmY2hpcC0+c2V0dXBfbXV0 ZXgpOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgbHhfcGNtX2h3X3BhcmFtcyhzdHJ1 Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKKwkJCSAgICBzdHJ1Y3Qgc25kX3BjbV9o d19wYXJhbXMgKmh3X3BhcmFtcywgaW50IGlzX2NhcHR1cmUpCit7CisJc3RydWN0IGx4NjQ2NGVz ICpjaGlwID0gc25kX3BjbV9zdWJzdHJlYW1fY2hpcChzdWJzdHJlYW0pOworCWludCBlcnIgPSAw OworCisJc25kX3ByaW50ZGQoIi0+bHhfcGNtX2h3X3BhcmFtc1xuIik7CisKKwltdXRleF9sb2Nr KCZjaGlwLT5zZXR1cF9tdXRleCk7CisKKwkvKiBzZXQgZG1hIGJ1ZmZlciAqLworCWVyciA9IHNu ZF9wY21fbGliX21hbGxvY19wYWdlcyhzdWJzdHJlYW0sCisJCQkJICAgICAgIHBhcmFtc19idWZm ZXJfYnl0ZXMoaHdfcGFyYW1zKSk7CisKKwlpZiAoaXNfY2FwdHVyZSkKKwkJY2hpcC0+Y2FwdHVy ZV9zdHJlYW0uc3RyZWFtID0gc3Vic3RyZWFtOworCWVsc2UKKwkJY2hpcC0+cGxheWJhY2tfc3Ry ZWFtLnN0cmVhbSA9IHN1YnN0cmVhbTsKKworCW11dGV4X3VubG9jaygmY2hpcC0+c2V0dXBfbXV0 ZXgpOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgbHhfcGNtX2h3X3BhcmFtc19wbGF5 YmFjayhzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKKwkJCQkgc3RydWN0IHNu ZF9wY21faHdfcGFyYW1zICpod19wYXJhbXMpCit7CisJcmV0dXJuIGx4X3BjbV9od19wYXJhbXMo c3Vic3RyZWFtLCBod19wYXJhbXMsIDApOworfQorCitzdGF0aWMgaW50IGx4X3BjbV9od19wYXJh bXNfY2FwdHVyZShzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKKwkJCQkgc3Ry dWN0IHNuZF9wY21faHdfcGFyYW1zICpod19wYXJhbXMpCit7CisJcmV0dXJuIGx4X3BjbV9od19w YXJhbXMoc3Vic3RyZWFtLCBod19wYXJhbXMsIDEpOworfQorCitzdGF0aWMgaW50IGx4X3BjbV9o d19mcmVlKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtKQoreworCXN0cnVjdCBs eDY0NjRlcyAqY2hpcCA9IHNuZF9wY21fc3Vic3RyZWFtX2NoaXAoc3Vic3RyZWFtKTsKKwlpbnQg ZXJyID0gMDsKKwlpbnQgaXNfY2FwdHVyZSA9IChzdWJzdHJlYW0tPnN0cmVhbSA9PSBTTkRSVl9Q Q01fU1RSRUFNX0NBUFRVUkUpOworCisJc25kX3ByaW50ZGQoIi0+bHhfcGNtX2h3X2ZyZWVcbiIp OworCW11dGV4X2xvY2soJmNoaXAtPnNldHVwX211dGV4KTsKKworCWlmIChjaGlwLT5oYXJkd2Fy ZV9ydW5uaW5nW2lzX2NhcHR1cmVdKSB7CisJCWVyciA9IGx4X2hhcmR3YXJlX3N0b3AoY2hpcCwg c3Vic3RyZWFtKTsKKwkJaWYgKGVyciA8IDApIHsKKwkJCXNuZF9wcmludGsoS0VSTl9FUlIgTFhQ ICJmYWlsZWQgdG8gc3RvcCBoYXJkd2FyZS4gIgorCQkJCSAgICJFcnJvciBjb2RlICVkXG4iLCBl cnIpOworCQkJZ290byBleGl0OworCQl9CisKKwkJZXJyID0gbHhfaGFyZHdhcmVfY2xvc2UoY2hp cCwgc3Vic3RyZWFtKTsKKwkJaWYgKGVyciA8IDApIHsKKwkJCXNuZF9wcmludGsoS0VSTl9FUlIg TFhQICJmYWlsZWQgdG8gY2xvc2UgaGFyZHdhcmUuICIKKwkJCQkgICAiRXJyb3IgY29kZSAlZFxu IiwgZXJyKTsKKwkJCWdvdG8gZXhpdDsKKwkJfQorCisJCWNoaXAtPmhhcmR3YXJlX3J1bm5pbmdb aXNfY2FwdHVyZV0gPSAwOworCX0KKworCWVyciA9IHNuZF9wY21fbGliX2ZyZWVfcGFnZXMoc3Vi c3RyZWFtKTsKKworCWlmIChpc19jYXB0dXJlKQorCQljaGlwLT5jYXB0dXJlX3N0cmVhbS5zdHJl YW0gPSAwOworCWVsc2UKKwkJY2hpcC0+cGxheWJhY2tfc3RyZWFtLnN0cmVhbSA9IDA7CisKK2V4 aXQ6CisJbXV0ZXhfdW5sb2NrKCZjaGlwLT5zZXR1cF9tdXRleCk7CisJcmV0dXJuIGVycjsKK30K Kworc3RhdGljIHZvaWQgbHhfdHJpZ2dlcl9zdGFydChzdHJ1Y3QgbHg2NDY0ZXMgKmNoaXAsIHN0 cnVjdCBseF9zdHJlYW0gKmx4X3N0cmVhbSkKK3sKKwlzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0g KnN1YnN0cmVhbSA9IGx4X3N0cmVhbS0+c3RyZWFtOworCWNvbnN0IGludCBpc19jYXB0dXJlID0g bHhfc3RyZWFtLT5pc19jYXB0dXJlOworCisJaW50IGVycjsKKworCWNvbnN0IHUzMiBjaGFubmVs cyA9IHN1YnN0cmVhbS0+cnVudGltZS0+Y2hhbm5lbHM7CisJY29uc3QgdTMyIGJ5dGVzX3Blcl9m cmFtZSA9IGNoYW5uZWxzICogMzsKKwljb25zdCB1MzIgcGVyaW9kX3NpemUgPSBzdWJzdHJlYW0t PnJ1bnRpbWUtPnBlcmlvZF9zaXplOworCWNvbnN0IHUzMiBwZXJpb2RzID0gc3Vic3RyZWFtLT5y dW50aW1lLT5wZXJpb2RzOworCWNvbnN0IHUzMiBwZXJpb2RfYnl0ZXMgPSBwZXJpb2Rfc2l6ZSAq IGJ5dGVzX3Blcl9mcmFtZTsKKworCWRtYV9hZGRyX3QgYnVmID0gc3Vic3RyZWFtLT5kbWFfYnVm ZmVyLmFkZHI7CisJaW50IGk7CisKKwl1MzIgbmVlZGVkLCBmcmVlZDsKKwl1MzIgc2l6ZV9hcnJh eVs1XTsKKworCWZvciAoaSA9IDA7IGkgIT0gcGVyaW9kczsgKytpKSB7CisJCXUzMiBidWZfbG8g PSAwOworCQl1MzIgYnVmX2hpID0gMDsKKwkJdTMyIGJ1ZmZlcl9pbmRleCA9IDA7CisKKwkJZXJy ID0gbHhfYnVmZmVyX2FzayhjaGlwLCAwLCBpc19jYXB0dXJlLCAmbmVlZGVkLCAmZnJlZWQsCisJ CQkJICAgIHNpemVfYXJyYXkpOworCQlzbmRfcHJpbnRkZChMWFAgInN0YXJ0aW5nOiBuZWVkZWQg JWQsIGZyZWVkICVkXG4iLAorCQkJICAgIG5lZWRlZCwgZnJlZWQpOworCisJCXVucGFja19wb2lu dGVyKGJ1ZiwgJmJ1Zl9sbywgJmJ1Zl9oaSk7CisJCWVyciA9IGx4X2J1ZmZlcl9naXZlKGNoaXAs IDAsIGlzX2NhcHR1cmUsIHBlcmlvZF9ieXRlcywgYnVmX2xvLAorCQkJCSAgICAgYnVmX2hpLCAm YnVmZmVyX2luZGV4KTsKKworCQlzbmRfcHJpbnRkZChMWFAgInN0YXJ0aW5nOiBidWZmZXIgaW5k ZXggJXggb24gJXAgKCVkIGJ5dGVzKVxuIiwKKwkJCSAgICBidWZmZXJfaW5kZXgsICh2b2lkKili dWYsIHBlcmlvZF9ieXRlcyk7CisJCWJ1ZiArPSBwZXJpb2RfYnl0ZXM7CisJfQorCisJZXJyID0g bHhfYnVmZmVyX2FzayhjaGlwLCAwLCBpc19jYXB0dXJlLCAmbmVlZGVkLCAmZnJlZWQsIHNpemVf YXJyYXkpOworCXNuZF9wcmludGRkKExYUCAic3RhcnRpbmc6IG5lZWRlZCAlZCwgZnJlZWQgJWRc biIsIG5lZWRlZCwgZnJlZWQpOworCisJc25kX3ByaW50ZChMWFAgInN0YXJ0aW5nOiBzdGFydGlu ZyBzdHJlYW1cbiIpOworCWVyciA9IGx4X3N0cmVhbV9zdGFydChjaGlwLCAwLCBpc19jYXB0dXJl KTsKKwlpZiAoZXJyIDwgMCkKKwkJc25kX3ByaW50ayhLRVJOX0VSUiBMWFAgImNvdWxkbid0IHN0 YXJ0IHN0cmVhbVxuIik7CisJZWxzZQorCQlseF9zdHJlYW0tPnN0YXR1cyA9IExYX1NUUkVBTV9T VEFUVVNfUlVOTklORzsKKworCWx4X3N0cmVhbS0+ZnJhbWVfcG9zID0gMDsKK30KKworc3RhdGlj IHZvaWQgbHhfdHJpZ2dlcl9zdG9wKHN0cnVjdCBseDY0NjRlcyAqY2hpcCwgc3RydWN0IGx4X3N0 cmVhbSAqbHhfc3RyZWFtKQoreworCWNvbnN0IGludCBpc19jYXB0dXJlID0gbHhfc3RyZWFtLT5p c19jYXB0dXJlOworCWludCBlcnI7CisKKwlzbmRfcHJpbnRkKExYUCAic3RvcHBpbmc6IHN0b3Bw aW5nIHN0cmVhbVxuIik7CisJZXJyID0gbHhfc3RyZWFtX3N0b3AoY2hpcCwgMCwgaXNfY2FwdHVy ZSk7CisJaWYgKGVyciA8IDApCisJCXNuZF9wcmludGsoS0VSTl9FUlIgTFhQICJjb3VsZG4ndCBz dG9wIHN0cmVhbVxuIik7CisJZWxzZQorCQlseF9zdHJlYW0tPnN0YXR1cyA9IExYX1NUUkVBTV9T VEFUVVNfRlJFRTsKKworfQorCitzdGF0aWMgdm9pZCBseF90cmlnZ2VyX3Rhc2tsZXRfZGlzcGF0 Y2hfc3RyZWFtKHN0cnVjdCBseDY0NjRlcyAqY2hpcCwKKwkJCQkJICAgICAgIHN0cnVjdCBseF9z dHJlYW0gKmx4X3N0cmVhbSkKK3sKKwlzd2l0Y2ggKGx4X3N0cmVhbS0+c3RhdHVzKSB7CisJY2Fz ZSBMWF9TVFJFQU1fU1RBVFVTX1NDSEVEVUxFX1JVTjoKKwkJbHhfdHJpZ2dlcl9zdGFydChjaGlw LCBseF9zdHJlYW0pOworCQlicmVhazsKKworCWNhc2UgTFhfU1RSRUFNX1NUQVRVU19TQ0hFRFVM RV9TVE9QOgorCQlseF90cmlnZ2VyX3N0b3AoY2hpcCwgbHhfc3RyZWFtKTsKKwkJYnJlYWs7CisK KwlkZWZhdWx0OgorCQlicmVhazsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGx4X3RyaWdnZXJfdGFz a2xldCh1bnNpZ25lZCBsb25nIGRhdGEpCit7CisJc3RydWN0IGx4NjQ2NGVzICpjaGlwID0gKHN0 cnVjdCBseDY0NjRlcyAqKWRhdGE7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXNuZF9wcmlu dGRkKCItPmx4X3RyaWdnZXJfdGFza2xldFxuIik7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmY2hp cC0+bG9jaywgZmxhZ3MpOworCWx4X3RyaWdnZXJfdGFza2xldF9kaXNwYXRjaF9zdHJlYW0oY2hp cCwgJmNoaXAtPmNhcHR1cmVfc3RyZWFtKTsKKwlseF90cmlnZ2VyX3Rhc2tsZXRfZGlzcGF0Y2hf c3RyZWFtKGNoaXAsICZjaGlwLT5wbGF5YmFja19zdHJlYW0pOworCXNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJmNoaXAtPmxvY2ssIGZsYWdzKTsKK30KKworc3RhdGljIGludCBseF9wY21fdHJpZ2dl cl9kaXNwYXRjaChzdHJ1Y3QgbHg2NDY0ZXMgKmNoaXAsCisJCQkJICAgc3RydWN0IGx4X3N0cmVh bSAqbHhfc3RyZWFtLCBpbnQgY21kKQoreworCWludCBlcnIgPSAwOworCisJc3dpdGNoIChjbWQp IHsKKwljYXNlIFNORFJWX1BDTV9UUklHR0VSX1NUQVJUOgorCQlseF9zdHJlYW0tPnN0YXR1cyA9 IExYX1NUUkVBTV9TVEFUVVNfU0NIRURVTEVfUlVOOworCQlicmVhazsKKworCWNhc2UgU05EUlZf UENNX1RSSUdHRVJfU1RPUDoKKwkJbHhfc3RyZWFtLT5zdGF0dXMgPSBMWF9TVFJFQU1fU1RBVFVT X1NDSEVEVUxFX1NUT1A7CisJCWJyZWFrOworCisJZGVmYXVsdDoKKwkJZXJyID0gLUVJTlZBTDsK KwkJZ290byBleGl0OworCX0KKwl0YXNrbGV0X3NjaGVkdWxlKCZjaGlwLT50cmlnZ2VyX3Rhc2ts ZXQpOworCitleGl0OgorCXJldHVybiBlcnI7Cit9CisKKworc3RhdGljIGludCBseF9wY21fdHJp Z2dlcihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwgaW50IGNtZCkKK3sKKwlz dHJ1Y3QgbHg2NDY0ZXMgKmNoaXAgPSBzbmRfcGNtX3N1YnN0cmVhbV9jaGlwKHN1YnN0cmVhbSk7 CisJY29uc3QgaW50IGlzX2NhcHR1cmUgPSAoc3Vic3RyZWFtLT5zdHJlYW0gPT0gU05EUlZfUENN X1NUUkVBTV9DQVBUVVJFKTsKKwlzdHJ1Y3QgbHhfc3RyZWFtICpzdHJlYW0gPSBpc19jYXB0dXJl ID8gJmNoaXAtPmNhcHR1cmVfc3RyZWFtIDoKKwkJJmNoaXAtPnBsYXliYWNrX3N0cmVhbTsKKwor CXNuZF9wcmludGRkKCItPmx4X3BjbV90cmlnZ2VyXG4iKTsKKworCXJldHVybiBseF9wY21fdHJp Z2dlcl9kaXNwYXRjaChjaGlwLCBzdHJlYW0sIGNtZCk7Cit9CisKK3N0YXRpYyBpbnQgc25kX2x4 NjQ2NGVzX2ZyZWUoc3RydWN0IGx4NjQ2NGVzICpjaGlwKQoreworCXNuZF9wcmludGRkKCItPnNu ZF9seDY0NjRlc19mcmVlXG4iKTsKKworCWx4X2lycV9kaXNhYmxlKGNoaXApOworCisJaWYgKGNo aXAtPmlycSA+PSAwKQorCQlmcmVlX2lycShjaGlwLT5pcnEsIGNoaXApOworCisJaW91bm1hcChj aGlwLT5wb3J0X2RzcF9yZW1hcHBlZCk7CisJaW9wb3J0X3VubWFwKGNoaXAtPnBvcnRfcGx4X3Jl bWFwcGVkKTsKKworCXBjaV9yZWxlYXNlX3JlZ2lvbnMoY2hpcC0+cGNpKTsKKwlwY2lfZGlzYWJs ZV9kZXZpY2UoY2hpcC0+cGNpKTsKKworCWtmcmVlKGNoaXApOworCisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBpbnQgc25kX2x4NjQ2NGVzX2Rldl9mcmVlKHN0cnVjdCBzbmRfZGV2aWNlICpkZXZp Y2UpCit7CisJcmV0dXJuIHNuZF9seDY0NjRlc19mcmVlKGRldmljZS0+ZGV2aWNlX2RhdGEpOwor fQorCisvKiByZXNldCB0aGUgZHNwIGR1cmluZyBpbml0aWFsaXphdGlvbiAqLworc3RhdGljIGlu dCBfX2RldmluaXQgbHhfaW5pdF94aWxpbnhfcmVzZXQoc3RydWN0IGx4NjQ2NGVzICpjaGlwKQor eworCWludCBpOworCXUzMiBwbHhfcmVnID0gbHhfcGx4X3JlZ19yZWFkKGNoaXAsIGVQTFhfQ0hJ UFNDKTsKKworCXNuZF9wcmludGRkKCItPmx4X2luaXRfeGlsaW54X3Jlc2V0XG4iKTsKKworCS8q IGFjdGl2YXRlIHJlc2V0IG9mIHhpbGlueCAqLworCXBseF9yZWcgJj0gfkNISVBTQ19SRVNFVF9Y SUxJTlg7CisKKwlseF9wbHhfcmVnX3dyaXRlKGNoaXAsIGVQTFhfQ0hJUFNDLCBwbHhfcmVnKTsK Kwltc2xlZXAoMSk7CisKKwlseF9wbHhfcmVnX3dyaXRlKGNoaXAsIGVQTFhfTUJPWDMsIDApOwor CW1zbGVlcCgxKTsKKworCXBseF9yZWcgfD0gQ0hJUFNDX1JFU0VUX1hJTElOWDsKKwlseF9wbHhf cmVnX3dyaXRlKGNoaXAsIGVQTFhfQ0hJUFNDLCBwbHhfcmVnKTsKKworCS8qIGRlYWN0aXZhdGUg cmVzZXQgb2YgeGlsaW54ICovCisJZm9yIChpID0gMDsgaSAhPSAxMDA7ICsraSkgeworCQl1MzIg cmVnX21ib3gzOworCQltc2xlZXAoMTApOworCQlyZWdfbWJveDMgPSBseF9wbHhfcmVnX3JlYWQo Y2hpcCwgZVBMWF9NQk9YMyk7CisJCWlmIChyZWdfbWJveDMpIHsKKwkJCXNuZF9wcmludGQoTFhQ ICJ4aWxpbnggcmVzZXQgZG9uZVxuIik7CisJCQlzbmRfcHJpbnRkZChMWFAgInhpbGlueCB0b29r ICVkIGxvb3BzXG4iLCBpKTsKKwkJCWJyZWFrOworCQl9CisJfQorCisJLyogdG9kbzogYWRkIHNv bWUgZXJyb3IgaGFuZGxpbmc/ICovCisKKwkvKiBjbGVhciBtciAqLworCWx4X2RzcF9yZWdfd3Jp dGUoY2hpcCwgZVJlZ19DU00sIDApOworCisJLyogbGUgeGlsaW54IEVTIHBldXQgbmUgcGFzIGV0 cmUgZW5jb3JlIHByZXQsIG9uIGF0dGVuZC4gKi8KKwltc2xlZXAoNjAwKTsKKworCXJldHVybiAw OworfQorCitzdGF0aWMgaW50IF9fZGV2aW5pdCBseF9pbml0X3hpbGlueF90ZXN0KHN0cnVjdCBs eDY0NjRlcyAqY2hpcCkKK3sKKwl1MzIgcmVnOworCisJc25kX3ByaW50ZGQoIi0+bHhfaW5pdF94 aWxpbnhfdGVzdFxuIik7CisKKwkvKiBURVNUIGlmIHdlIGhhdmUgYWNjZXNzIHRvIFhpbGlueC9N aWNyb0JsYXplICovCisJbHhfZHNwX3JlZ193cml0ZShjaGlwLCBlUmVnX0NTTSwgMCk7CisKKwly ZWcgPSBseF9kc3BfcmVnX3JlYWQoY2hpcCwgZVJlZ19DU00pOworCisJaWYgKHJlZykgeworCQlz bmRfcHJpbnRrKEtFUk5fRVJSIExYUCAiUHJvYmxlbTogUmVnX0NTTSAleC5cbiIsIHJlZyk7CisK KwkJLyogUENJOTA1Nl9TUEFDRTBfUkVNQVAgKi8KKwkJbHhfcGx4X3JlZ193cml0ZShjaGlwLCBl UExYX1BDSUNSLCAxKTsKKworCQlyZWcgPSBseF9kc3BfcmVnX3JlYWQoY2hpcCwgZVJlZ19DU00p OworCQlpZiAocmVnKSB7CisJCQlzbmRfcHJpbnRrKEtFUk5fRVJSIExYUCAiRXJyb3I6IFJlZ19D U00gJXguXG4iLCByZWcpOworCQkJcmV0dXJuIC1FQUdBSU47IC8qIHNlZW1zIHRvIGJlIGFwcHJv cHJpYXRlICovCisJCX0KKwl9CisKKwlzbmRfcHJpbnRkKExYUCAiWGlsaW54L01pY3JvQmxhemUg YWNjZXNzIHRlc3Qgc3VjY2Vzc2Z1bFxuIik7CisKKwlyZXR1cm4gMDsKK30KKworLyogaW5pdGlh bGl6ZSBldGhlcnNvdW5kICovCitzdGF0aWMgaW50IF9fZGV2aW5pdCBseF9pbml0X2V0aGVyc291 bmRfY29uZmlnKHN0cnVjdCBseDY0NjRlcyAqY2hpcCkKK3sKKwlpbnQgaTsKKwl1MzIgb3JpZ19j b25mX2VzID0gbHhfZHNwX3JlZ19yZWFkKGNoaXAsIGVSZWdfQ09ORkVTKTsKKworCXUzMiBkZWZh dWx0X2NvbmZfZXMgPSAoNjQgPDwgSU9DUl9PVVRQVVRTX09GRlNFVCkgfAorCQkoNjQgPDwgSU9D Ul9JTlBVVFNfT0ZGU0VUKSB8CisJCShGUkVRX1JBVElPX1NJTkdMRV9NT0RFIDw8IEZSRVFfUkFU SU9fT0ZGU0VUKTsKKworCXUzMiBjb25mX2VzID0gKG9yaWdfY29uZl9lcyAmIENPTkZFU19SRUFE X1BBUlRfTUFTSykKKwkJfCAoZGVmYXVsdF9jb25mX2VzICYgQ09ORkVTX1dSSVRFX1BBUlRfTUFT Syk7CisKKwlzbmRfcHJpbnRkZCgiLT5seF9pbml0X2V0aGVyc291bmRcbiIpOworCisJY2hpcC0+ ZnJlcV9yYXRpbyA9IEZSRVFfUkFUSU9fU0lOR0xFX01PREU7CisKKwkvKgorCSAqIHdyaXRlIGl0 IHRvIHRoZSBjYXJkICEKKwkgKiB0aGlzIGFjdHVhbGx5IGtpY2tzIHRoZSBFUyB4aWxpbngsIHRo ZSBmaXJzdCB0aW1lIHNpbmNlIHBvd2Vyb24uCisJICogdGhlIE1BQyBhZGRyZXNzIGluIHRoZSBS ZWdfQURNQUNFU01TQiBSZWdfQURNQUNFU0xTQiByZWdpc3RlcnMKKwkgKiBpcyBub3QgcmVhZHkg YmVmb3JlIHRoaXMgaXMgZG9uZSwgYW5kIHRoZSBiaXQgMiBpbiBSZWdfQ1NFUyBpcyBzZXQuCisJ ICogKi8KKwlseF9kc3BfcmVnX3dyaXRlKGNoaXAsIGVSZWdfQ09ORkVTLCBjb25mX2VzKTsKKwor CWZvciAoaSA9IDA7IGkgIT0gMTAwMDsgKytpKSB7CisJCWlmIChseF9kc3BfcmVnX3JlYWQoY2hp cCwgZVJlZ19DU0VTKSAmIDQpIHsKKwkJCXNuZF9wcmludGQoTFhQICJldGhlcnNvdW5kIGluaXRp YWxpemVkIGFmdGVyICVkbXNcbiIsCisJCQkJICAgaSk7CisJCQlnb3RvIGV0aGVyc291bmRfaW5p dGlhbGl6ZWQ7CisJCX0KKwkJbXNsZWVwKDEpOworCX0KKwlzbmRfcHJpbnRrKEtFUk5fV0FSTklO RyBMWFAKKwkJICAgImV0aGVyc291bmQgY291bGQgbm90IGJlIGluaXRpYWxpemVkIGFmdGVyICVk bXNcbiIsIGkpOworCXJldHVybiAtRVRJTUVET1VUOworCisgZXRoZXJzb3VuZF9pbml0aWFsaXpl ZDoKKwlzbmRfcHJpbnRkKExYUCAiZXRoZXJzb3VuZCBpbml0aWFsaXplZFxuIik7CisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBpbnQgX19kZXZpbml0IGx4X2luaXRfZ2V0X3ZlcnNpb25fZmVhdHVy ZXMoc3RydWN0IGx4NjQ2NGVzICpjaGlwKQoreworCXUzMiBkc3BfdmVyc2lvbjsKKworCWludCBl cnI7CisKKwlzbmRfcHJpbnRkZCgiLT5seF9pbml0X2dldF92ZXJzaW9uX2ZlYXR1cmVzXG4iKTsK KworCWVyciA9IGx4X2RzcF9nZXRfdmVyc2lvbihjaGlwLCAmZHNwX3ZlcnNpb24pOworCisJaWYg KGVyciA9PSAwKSB7CisJCXUzMiBmcmVxOworCisJCXNuZF9wcmludGsoTFhQICJEU1AgdmVyc2lv bjogViUwMmQuJTAyZCAjJWRcbiIsCisJCQkgICAoZHNwX3ZlcnNpb24+PjE2KSAmIDB4ZmYsIChk c3BfdmVyc2lvbj4+OCkgJiAweGZmLAorCQkJICAgZHNwX3ZlcnNpb24gJiAweGZmKTsKKworCQkv KiBsYXRlcjogd2hhdCBmaXJtd2FyZSB2ZXJzaW9uIGRvIHdlIGV4cGVjdD8gKi8KKworCQkvKiBy ZXRyaWV2ZSBQbGF5L1JlYyBmZWF0dXJlcyAqLworCQkvKiBkb25lIGhlcmUgYmVjYXVzZSB3ZSBt YXkgaGF2ZSB0byBoYW5kbGUgYWx0ZXJuYXRlCisJCSAqIERTUCBmaWxlcy4gKi8KKwkJLyogbGF0 ZXIgKi8KKworCQkvKiBpbml0IHRoZSBFdGhlclNvdW5kIHNhbXBsZSByYXRlICovCisJCWVyciA9 IGx4X2RzcF9nZXRfY2xvY2tfZnJlcXVlbmN5KGNoaXAsICZmcmVxKTsKKwkJaWYgKGVyciA9PSAw KQorCQkJY2hpcC0+Ym9hcmRfc2FtcGxlX3JhdGUgPSBmcmVxOworCQlzbmRfcHJpbnRkKExYUCAi YWN0dWFsIGNsb2NrIGZyZXF1ZW5jeSAlZFxuIiwgZnJlcSk7CisJfSBlbHNlIHsKKwkJc25kX3By aW50ayhLRVJOX0VSUiBMWFAgIkRTUCBjb3JydXB0ZWQgXG4iKTsKKwkJZXJyID0gLUVBR0FJTjsK Kwl9CisKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50IGx4X3NldF9ncmFudWxhcml0eShz dHJ1Y3QgbHg2NDY0ZXMgKmNoaXAsIHUzMiBncmFuKQoreworCWludCBlcnIgPSAwOworCXUzMiBz bmFwcGVkX2dyYW4gPSBNSUNST0JMQVpFX0lCTF9NSU47CisKKwlzbmRfcHJpbnRkZCgiLT5seF9z ZXRfZ3JhbnVsYXJpdHlcbiIpOworCisJLyogYmxvY2tzaXplIGlzIGEgcG93ZXIgb2YgMiAqLwor CXdoaWxlICgoc25hcHBlZF9ncmFuIDwgZ3JhbikgJiYKKwkgICAgICAgKHNuYXBwZWRfZ3JhbiA8 IE1JQ1JPQkxBWkVfSUJMX01BWCkpIHsKKwkJc25hcHBlZF9ncmFuICo9IDI7CisJfQorCisJaWYg KHNuYXBwZWRfZ3JhbiA9PSBjaGlwLT5wY21fZ3JhbnVsYXJpdHkpCisJCXJldHVybiAwOworCisJ ZXJyID0gbHhfZHNwX3NldF9ncmFudWxhcml0eShjaGlwLCBzbmFwcGVkX2dyYW4pOworCWlmIChl cnIgPCAwKSB7CisJCXNuZF9wcmludGsoS0VSTl9XQVJOSU5HIExYUCAiY291bGQgbm90IHNldCBn cmFudWxhcml0eVxuIik7CisJCWVyciA9IC1FQUdBSU47CisJfQorCisJaWYgKHNuYXBwZWRfZ3Jh biAhPSBncmFuKQorCQlzbmRfcHJpbnRrKExYUCAic25hcHBlZCBibG9ja3NpemUgdG8gJWRcbiIs IHNuYXBwZWRfZ3Jhbik7CisKKwlzbmRfcHJpbnRkKExYUCAic2V0IGJsb2Nrc2l6ZSBvbiBib2Fy ZCAlZFxuIiwgc25hcHBlZF9ncmFuKTsKKwljaGlwLT5wY21fZ3JhbnVsYXJpdHkgPSBzbmFwcGVk X2dyYW47CisKKwlyZXR1cm4gZXJyOworfQorCisvKiBpbml0aWFsaXplIGFuZCB0ZXN0IHRoZSB4 aWxpbnggZHNwIGNoaXAgKi8KK3N0YXRpYyBpbnQgX19kZXZpbml0IGx4X2luaXRfZHNwKHN0cnVj dCBseDY0NjRlcyAqY2hpcCkKK3sKKwlpbnQgZXJyOworCXU4IG1hY19hZGRyZXNzWzZdOworCWlu dCBpOworCisJc25kX3ByaW50ZGQoIi0+bHhfaW5pdF9kc3BcbiIpOworCisJc25kX3ByaW50ZChM WFAgImluaXRpYWxpemUgYm9hcmRcbiIpOworCWVyciA9IGx4X2luaXRfeGlsaW54X3Jlc2V0KGNo aXApOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisKKwlzbmRfcHJpbnRkKExYUCAidGVzdGlu ZyBib2FyZFxuIik7CisJZXJyID0gbHhfaW5pdF94aWxpbnhfdGVzdChjaGlwKTsKKwlpZiAoZXJy KQorCQlyZXR1cm4gZXJyOworCisJc25kX3ByaW50ZChMWFAgImluaXRpYWxpemUgZXRoZXJzb3Vu ZCBjb25maWd1cmF0aW9uXG4iKTsKKwllcnIgPSBseF9pbml0X2V0aGVyc291bmRfY29uZmlnKGNo aXApOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisKKwlseF9pcnFfZW5hYmxlKGNoaXApOwor CisJLyoqIFx0b2RvIHRoZSBtYWMgYWRkcmVzcyBzaG91bGQgYmUgcmVhZHkgYnkgbm90LCBidXQg aXQgaXNuJ3QsCisJICogIHNvIHdlIHdhaXQgZm9yIGl0ICovCisJZm9yIChpID0gMDsgaSAhPSAx MDAwOyArK2kpIHsKKwkJZXJyID0gbHhfZHNwX2dldF9tYWMoY2hpcCwgbWFjX2FkZHJlc3MpOwor CQlpZiAoZXJyKQorCQkJcmV0dXJuIGVycjsKKwkJaWYgKG1hY19hZGRyZXNzWzBdIHx8IG1hY19h ZGRyZXNzWzFdIHx8IG1hY19hZGRyZXNzWzJdIHx8CisJCSAgICBtYWNfYWRkcmVzc1szXSB8fCBt YWNfYWRkcmVzc1s0XSB8fCBtYWNfYWRkcmVzc1s1XSkKKwkJCWdvdG8gbWFjX3JlYWR5OworCQlt c2xlZXAoMSk7CisJfQorCXJldHVybiAtRVRJTUVET1VUOworCittYWNfcmVhZHk6CisJc25kX3By aW50ZChMWFAgIm1hYyBhZGRyZXNzIHJlYWR5IHJlYWQgYWZ0ZXI6ICVkbXNcbiIsIGkpOworCXNu ZF9wcmludGsoTFhQICJtYWMgYWRkcmVzczogJTAyWC4lMDJYLiUwMlguJTAyWC4lMDJYLiUwMlhc biIsCisJCSAgIG1hY19hZGRyZXNzWzBdLCBtYWNfYWRkcmVzc1sxXSwgbWFjX2FkZHJlc3NbMl0s CisJCSAgIG1hY19hZGRyZXNzWzNdLCBtYWNfYWRkcmVzc1s0XSwgbWFjX2FkZHJlc3NbNV0pOwor CisJZXJyID0gbHhfaW5pdF9nZXRfdmVyc2lvbl9mZWF0dXJlcyhjaGlwKTsKKwlpZiAoZXJyKQor CQlyZXR1cm4gZXJyOworCisJbHhfc2V0X2dyYW51bGFyaXR5KGNoaXAsIE1JQ1JPQkxBWkVfSUJM X0RFRkFVTFQpOworCisJY2hpcC0+cGxheWJhY2tfbXV0ZSA9IDA7CisKKwlyZXR1cm4gZXJyOwor fQorCitzdGF0aWMgc3RydWN0IHNuZF9wY21fb3BzIGx4X29wc19wbGF5YmFjayA9IHsKKwkub3Bl biAgICAgID0gbHhfcGNtX29wZW4sCisJLmNsb3NlICAgICA9IGx4X3BjbV9jbG9zZSwKKwkuaW9j dGwgICAgID0gc25kX3BjbV9saWJfaW9jdGwsCisJLnByZXBhcmUgICA9IGx4X3BjbV9wcmVwYXJl LAorCS5od19wYXJhbXMgPSBseF9wY21faHdfcGFyYW1zX3BsYXliYWNrLAorCS5od19mcmVlICAg PSBseF9wY21faHdfZnJlZSwKKwkudHJpZ2dlciAgID0gbHhfcGNtX3RyaWdnZXIsCisJLnBvaW50 ZXIgICA9IGx4X3BjbV9zdHJlYW1fcG9pbnRlciwKK307CisKK3N0YXRpYyBzdHJ1Y3Qgc25kX3Bj bV9vcHMgbHhfb3BzX2NhcHR1cmUgPSB7CisJLm9wZW4gICAgICA9IGx4X3BjbV9vcGVuLAorCS5j bG9zZSAgICAgPSBseF9wY21fY2xvc2UsCisJLmlvY3RsICAgICA9IHNuZF9wY21fbGliX2lvY3Rs LAorCS5wcmVwYXJlICAgPSBseF9wY21fcHJlcGFyZSwKKwkuaHdfcGFyYW1zID0gbHhfcGNtX2h3 X3BhcmFtc19jYXB0dXJlLAorCS5od19mcmVlICAgPSBseF9wY21faHdfZnJlZSwKKwkudHJpZ2dl ciAgID0gbHhfcGNtX3RyaWdnZXIsCisJLnBvaW50ZXIgICA9IGx4X3BjbV9zdHJlYW1fcG9pbnRl ciwKK307CisKK3N0YXRpYyBpbnQgX19kZXZpbml0IGx4X3BjbV9jcmVhdGUoc3RydWN0IGx4NjQ2 NGVzICpjaGlwKQoreworCWludCBlcnI7CisJc3RydWN0IHNuZF9wY20gKnBjbTsKKworCXUzMiBz aXplID0gNjQgKgkJICAgICAvKiBjaGFubmVscyAqLworCQkzICoJCSAgICAgLyogMjQgYml0IHNh bXBsZXMgKi8KKwkJTUFYX1NUUkVBTV9CVUZGRVIgKiAgLyogcGVyaW9kcyAqLworCQlNSUNST0JM QVpFX0lCTF9NQVggKiAvKiBmcmFtZXMgcGVyIHBlcmlvZCAqLworCQkyOwkJICAgICAvKiBkdXBs ZXggKi8KKworCXNpemUgPSBQQUdFX0FMSUdOKHNpemUpOworCisJLyogaGFyZGNvZGVkIGRldmlj ZSBuYW1lICYgY2hhbm5lbCBjb3VudCAqLworCWVyciA9IHNuZF9wY21fbmV3KGNoaXAtPmNhcmQs IChjaGFyICopY2FyZF9uYW1lLCAwLAorCQkJICAxLCAxLCAmcGNtKTsKKworCXBjbS0+cHJpdmF0 ZV9kYXRhID0gY2hpcDsKKworCXNuZF9wY21fc2V0X29wcyhwY20sIFNORFJWX1BDTV9TVFJFQU1f UExBWUJBQ0ssICZseF9vcHNfcGxheWJhY2spOworCXNuZF9wY21fc2V0X29wcyhwY20sIFNORFJW X1BDTV9TVFJFQU1fQ0FQVFVSRSwgJmx4X29wc19jYXB0dXJlKTsKKworCXBjbS0+aW5mb19mbGFn cyA9IDA7CisJc3RyY3B5KHBjbS0+bmFtZSwgY2FyZF9uYW1lKTsKKworCWVyciA9IHNuZF9wY21f bGliX3ByZWFsbG9jYXRlX3BhZ2VzX2Zvcl9hbGwocGNtLCBTTkRSVl9ETUFfVFlQRV9ERVYsCisJ CQkJCQkgICAgc25kX2RtYV9wY2lfZGF0YShjaGlwLT5wY2kpLAorCQkJCQkJICAgIHNpemUsIHNp emUpOworCWlmIChlcnIgPCAwKQorCQlyZXR1cm4gZXJyOworCisJY2hpcC0+cGNtID0gcGNtOwor CWNoaXAtPmNhcHR1cmVfc3RyZWFtLmlzX2NhcHR1cmUgPSAxOworCisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBpbnQgbHhfY29udHJvbF9wbGF5YmFja19pbmZvKHN0cnVjdCBzbmRfa2NvbnRyb2wg Kmtjb250cm9sLAorCQkJCSAgICBzdHJ1Y3Qgc25kX2N0bF9lbGVtX2luZm8gKnVpbmZvKQorewor CXVpbmZvLT50eXBlID0gU05EUlZfQ1RMX0VMRU1fVFlQRV9CT09MRUFOOworCXVpbmZvLT5jb3Vu dCA9IDE7CisJdWluZm8tPnZhbHVlLmludGVnZXIubWluID0gMDsKKwl1aW5mby0+dmFsdWUuaW50 ZWdlci5tYXggPSAxOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGx4X2NvbnRyb2xfcGxh eWJhY2tfZ2V0KHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLAorCQkJCSAgIHN0cnVjdCBz bmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKQoreworCXN0cnVjdCBseDY0NjRlcyAqY2hpcCA9 IHNuZF9rY29udHJvbF9jaGlwKGtjb250cm9sKTsKKwl1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52 YWx1ZVswXSA9IGNoaXAtPnBsYXliYWNrX211dGU7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBp bnQgbHhfY29udHJvbF9wbGF5YmFja19wdXQoc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2ws CisJCQkJICAgc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSAqdWNvbnRyb2wpCit7CisJc3RydWN0 IGx4NjQ2NGVzICpjaGlwID0gc25kX2tjb250cm9sX2NoaXAoa2NvbnRyb2wpOworCWludCBjaGFu Z2VkID0gMDsKKwlpbnQgY3VycmVudF92YWx1ZSA9IGNoaXAtPnBsYXliYWNrX211dGU7CisKKwlp ZiAoY3VycmVudF92YWx1ZSAhPSB1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVswXSkgewor CQlseF9sZXZlbF91bm11dGUoY2hpcCwgMCwgIWN1cnJlbnRfdmFsdWUpOworCQljaGlwLT5wbGF5 YmFja19tdXRlID0gIWN1cnJlbnRfdmFsdWU7CisJCWNoYW5nZWQgPSAxOworCX0KKwlyZXR1cm4g Y2hhbmdlZDsKK30KKworc3RhdGljIHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IGx4X2NvbnRyb2xf cGxheWJhY2tfc3dpdGNoIF9fZGV2aW5pdGRhdGEgPSB7CisJLmlmYWNlID0gU05EUlZfQ1RMX0VM RU1fSUZBQ0VfTUlYRVIsCisJLm5hbWUgPSAiUENNIFBsYXliYWNrIFN3aXRjaCIsCisJLmluZGV4 ID0gMCwKKwkuYWNjZXNzID0gU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1JFQURXUklURSwKKwkucHJp dmF0ZV92YWx1ZSA9IDAsCisJLmluZm8gPSBseF9jb250cm9sX3BsYXliYWNrX2luZm8sCisJLmdl dCA9IGx4X2NvbnRyb2xfcGxheWJhY2tfZ2V0LAorCS5wdXQgPSBseF9jb250cm9sX3BsYXliYWNr X3B1dAorfTsKKworCisKK3N0YXRpYyB2b2lkIGx4X3Byb2NfbGV2ZWxzX3JlYWQoc3RydWN0IHNu ZF9pbmZvX2VudHJ5ICplbnRyeSwKKwkJCQlzdHJ1Y3Qgc25kX2luZm9fYnVmZmVyICpidWZmZXIp Cit7CisJdTMyIGxldmVsc1s2NF07CisJaW50IGVycjsKKwlpbnQgaSwgajsKKwlzdHJ1Y3QgbHg2 NDY0ZXMgKmNoaXAgPSBlbnRyeS0+cHJpdmF0ZV9kYXRhOworCisJc25kX2lwcmludGYoYnVmZmVy LCAiY2FwdHVyZSBsZXZlbHM6XG4iKTsKKwllcnIgPSBseF9sZXZlbF9wZWFrcyhjaGlwLCAxLCA2 NCwgbGV2ZWxzKTsKKwlpZiAoZXJyIDwgMCkKKwkJcmV0dXJuOworCisJZm9yIChpID0gMDsgaSAh PSA4OyArK2kpIHsKKwkJZm9yIChqID0gMDsgaiAhPSA4OyArK2opCisJCQlzbmRfaXByaW50Zihi dWZmZXIsICIlMDh4ICIsIGxldmVsc1tpKjgral0pOworCQlzbmRfaXByaW50ZihidWZmZXIsICJc biIpOworCX0KKworCXNuZF9pcHJpbnRmKGJ1ZmZlciwgIlxucGxheWJhY2sgbGV2ZWxzOlxuIik7 CisKKwllcnIgPSBseF9sZXZlbF9wZWFrcyhjaGlwLCAwLCA2NCwgbGV2ZWxzKTsKKwlpZiAoZXJy IDwgMCkKKwkJcmV0dXJuOworCisJZm9yIChpID0gMDsgaSAhPSA4OyArK2kpIHsKKwkJZm9yIChq ID0gMDsgaiAhPSA4OyArK2opCisJCQlzbmRfaXByaW50ZihidWZmZXIsICIlMDh4ICIsIGxldmVs c1tpKjgral0pOworCQlzbmRfaXByaW50ZihidWZmZXIsICJcbiIpOworCX0KKworCXNuZF9pcHJp bnRmKGJ1ZmZlciwgIlxuIik7Cit9CisKK3N0YXRpYyBpbnQgbHhfcHJvY19jcmVhdGUoc3RydWN0 IHNuZF9jYXJkICpjYXJkLCBzdHJ1Y3QgbHg2NDY0ZXMgKmNoaXApCit7CisJc3RydWN0IHNuZF9p bmZvX2VudHJ5ICplbnRyeTsKKwlpbnQgZXJyID0gc25kX2NhcmRfcHJvY19uZXcoY2FyZCwgImxl dmVscyIsICZlbnRyeSk7CisJaWYgKGVyciA8IDApCisJCXJldHVybiBlcnI7CisKKwlzbmRfaW5m b19zZXRfdGV4dF9vcHMoZW50cnksIGNoaXAsIGx4X3Byb2NfbGV2ZWxzX3JlYWQpOworCXJldHVy biAwOworfQorCisKK3N0YXRpYyBpbnQgX19kZXZpbml0IHNuZF9seDY0NjRlc19jcmVhdGUoc3Ry dWN0IHNuZF9jYXJkICpjYXJkLAorCQkJCQkgc3RydWN0IHBjaV9kZXYgKnBjaSwKKwkJCQkJIHN0 cnVjdCBseDY0NjRlcyAqKnJjaGlwKQoreworCXN0cnVjdCBseDY0NjRlcyAqY2hpcDsKKwlpbnQg ZXJyOworCisJc3RhdGljIHN0cnVjdCBzbmRfZGV2aWNlX29wcyBvcHMgPSB7CisJCS5kZXZfZnJl ZSA9IHNuZF9seDY0NjRlc19kZXZfZnJlZSwKKwl9OworCisJc25kX3ByaW50ZGQoIi0+c25kX2x4 NjQ2NGVzX2NyZWF0ZVxuIik7CisKKwkqcmNoaXAgPSBOVUxMOworCisJLyogZW5hYmxlIFBDSSBk ZXZpY2UgKi8KKwllcnIgPSBwY2lfZW5hYmxlX2RldmljZShwY2kpOworCWlmIChlcnIgPCAwKQor CQlyZXR1cm4gZXJyOworCisJcGNpX3NldF9tYXN0ZXIocGNpKTsKKworCS8qIGNoZWNrIGlmIHdl IGNhbiByZXN0cmljdCBQQ0kgRE1BIHRyYW5zZmVycyB0byAzMiBiaXRzICovCisJZXJyID0gcGNp X3NldF9kbWFfbWFzayhwY2ksIERNQV8zMkJJVF9NQVNLKTsKKwlpZiAoZXJyIDwgMCkgeworCQlz bmRfcHJpbnRrKEtFUk5fRVJSICJhcmNoaXRlY3R1cmUgZG9lcyBub3Qgc3VwcG9ydCAiCisJCQkg ICAiMzJiaXQgUENJIGJ1c21hc3RlciBETUFcbiIpOworCQlwY2lfZGlzYWJsZV9kZXZpY2UocGNp KTsKKwkJcmV0dXJuIC1FTlhJTzsKKwl9CisKKwljaGlwID0ga3phbGxvYyhzaXplb2YoKmNoaXAp LCBHRlBfS0VSTkVMKTsKKwlpZiAoY2hpcCA9PSBOVUxMKSB7CisJCWVyciA9IC1FTk9NRU07CisJ CWdvdG8gYWxsb2NfZmFpbGVkOworCX0KKworCWNoaXAtPmNhcmQgPSBjYXJkOworCWNoaXAtPnBj aSA9IHBjaTsKKwljaGlwLT5pcnEgPSAtMTsKKworCS8qIGluaXRpYWxpemUgc3luY2hyb25pemF0 aW9uIHN0cnVjdHMgKi8KKwlzcGluX2xvY2tfaW5pdCgmY2hpcC0+bG9jayk7CisJc3Bpbl9sb2Nr X2luaXQoJmNoaXAtPm1zZ19sb2NrKTsKKwltdXRleF9pbml0KCZjaGlwLT5zZXR1cF9tdXRleCk7 CisJdGFza2xldF9pbml0KCZjaGlwLT50cmlnZ2VyX3Rhc2tsZXQsIGx4X3RyaWdnZXJfdGFza2xl dCwKKwkJICAgICAodW5zaWduZWQgbG9uZyljaGlwKTsKKwl0YXNrbGV0X2luaXQoJmNoaXAtPnRh c2tsZXRfY2FwdHVyZSwgbHhfdGFza2xldF9jYXB0dXJlLAorCQkgICAgICh1bnNpZ25lZCBsb25n KWNoaXApOworCXRhc2tsZXRfaW5pdCgmY2hpcC0+dGFza2xldF9wbGF5YmFjaywgbHhfdGFza2xl dF9wbGF5YmFjaywKKwkJICAgICAodW5zaWduZWQgbG9uZyljaGlwKTsKKworCS8qIHJlcXVlc3Qg cmVzb3VyY2VzICovCisJZXJyID0gcGNpX3JlcXVlc3RfcmVnaW9ucyhwY2ksIGNhcmRfbmFtZSk7 CisJaWYgKGVyciA8IDApCisJCWdvdG8gcmVxdWVzdF9yZWdpb25zX2ZhaWxlZDsKKworCWNoaXAt PnBvcnRfbWVtID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBjaSwgMCk7CisKKwkvKiBwbHggcG9ydCAq LworCWNoaXAtPnBvcnRfcGx4ID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBjaSwgMSk7CisJY2hpcC0+ cG9ydF9wbHhfcmVtYXBwZWQgPSBpb3BvcnRfbWFwKGNoaXAtPnBvcnRfcGx4LAorCQkJCQkgICAg IHBjaV9yZXNvdXJjZV9sZW4ocGNpLCAxKSk7CisKKwkvKiBkc3AgcG9ydCAqLworCWNoaXAtPnBv cnRfZHNwID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBjaSwgMik7CisJY2hpcC0+cG9ydF9kc3BfcmVz b3VyY2UgPSByZXF1ZXN0X21lbV9yZWdpb24oY2hpcC0+cG9ydF9kc3AsCisJCQkJCQkgICAgIHBj aV9yZXNvdXJjZV9sZW4ocGNpLCAyKSwKKwkJCQkJCSAgICAgY2FyZF9uYW1lKTsKKwljaGlwLT5w b3J0X2RzcF9yZW1hcHBlZCA9IGlvcmVtYXBfbm9jYWNoZShjaGlwLT5wb3J0X2RzcCwKKwkJCQkJ CSAgcGNpX3Jlc291cmNlX2xlbihwY2ksIDIpKTsKKworCWVyciA9IHJlcXVlc3RfaXJxKHBjaS0+ aXJxLCBseF9pbnRlcnJ1cHQsIElSUUZfU0hBUkVELAorCQkJICBjYXJkX25hbWUsIGNoaXApOwor CWlmIChlcnIpIHsKKwkJc25kX3ByaW50ayhLRVJOX0VSUiBMWFAgInVuYWJsZSB0byBncmFiIElS USAlZFxuIiwgcGNpLT5pcnEpOworCQlnb3RvIHJlcXVlc3RfaXJxX2ZhaWxlZDsKKwl9CisJY2hp cC0+aXJxID0gcGNpLT5pcnE7CisKKwllcnIgPSBzbmRfZGV2aWNlX25ldyhjYXJkLCBTTkRSVl9E RVZfTE9XTEVWRUwsIGNoaXAsICZvcHMpOworCWlmIChlcnIgPCAwKQorCQlyZXR1cm4gZXJyOwor CisJZXJyID0gbHhfaW5pdF9kc3AoY2hpcCk7CisJaWYgKGVyciA8IDApIHsKKwkJc25kX3ByaW50 ayhLRVJOX0VSUiBMWFAgImVycm9yIGR1cmluZyBEU1AgaW5pdGlhbGl6YXRpb25cbiIpOworCQly ZXR1cm4gZXJyOworCX0KKworCWVyciA9IGx4X3BjbV9jcmVhdGUoY2hpcCk7CisJaWYgKGVyciA8 IDApCisJCXJldHVybiBlcnI7CisKKwllcnIgPSBseF9wcm9jX2NyZWF0ZShjYXJkLCBjaGlwKTsK KwlpZiAoZXJyIDwgMCkKKwkJcmV0dXJuIGVycjsKKworCWVyciA9IHNuZF9jdGxfYWRkKGNhcmQs IHNuZF9jdGxfbmV3MSgmbHhfY29udHJvbF9wbGF5YmFja19zd2l0Y2gsCisJCQkJCSAgICAgY2hp cCkpOworCWlmIChlcnIgPCAwKQorCQlyZXR1cm4gZXJyOworCisJc25kX2NhcmRfc2V0X2Rldihj YXJkLCAmcGNpLT5kZXYpOworCisJKnJjaGlwID0gY2hpcDsKKwlyZXR1cm4gMDsKKworcmVxdWVz dF9pcnFfZmFpbGVkOgorCXBjaV9yZWxlYXNlX3JlZ2lvbnMocGNpKTsKKworcmVxdWVzdF9yZWdp b25zX2ZhaWxlZDoKKwlrZnJlZShjaGlwKTsKKworYWxsb2NfZmFpbGVkOgorCXBjaV9kaXNhYmxl X2RldmljZShwY2kpOworCisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIGludCBfX2RldmluaXQg c25kX2x4NjQ2NGVzX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2ksCisJCQkJCWNvbnN0IHN0cnVj dCBwY2lfZGV2aWNlX2lkICpwY2lfaWQpCit7CisJc3RhdGljIGludCBkZXY7CisJc3RydWN0IHNu ZF9jYXJkICpjYXJkOworCXN0cnVjdCBseDY0NjRlcyAqY2hpcDsKKwlpbnQgZXJyOworCisJc25k X3ByaW50ZGQoIi0+c25kX2x4NjQ2NGVzX3Byb2JlXG4iKTsKKworCWlmIChkZXYgPj0gU05EUlZf Q0FSRFMpCisJCXJldHVybiAtRU5PREVWOworCWlmICghZW5hYmxlW2Rldl0pIHsKKwkJZGV2Kys7 CisJCXJldHVybiAtRU5PRU5UOworCX0KKworCWNhcmQgPSBzbmRfY2FyZF9uZXcoaW5kZXhbZGV2 XSwgaWRbZGV2XSwgVEhJU19NT0RVTEUsIDApOworCWlmIChjYXJkID09IE5VTEwpCisJCXJldHVy biAtRU5PTUVNOworCisJZXJyID0gc25kX2x4NjQ2NGVzX2NyZWF0ZShjYXJkLCBwY2ksICZjaGlw KTsKKwlpZiAoZXJyIDwgMCkgeworCQlzbmRfcHJpbnRrKEtFUk5fRVJSIExYUCAiZXJyb3IgZHVy aW5nIHNuZF9seDY0NjRlc19jcmVhdGVcbiIpOworCQlnb3RvIG91dF9mcmVlOworCX0KKworCXN0 cmNweShjYXJkLT5kcml2ZXIsICJseDY0NjRlcyIpOworCXN0cmNweShjYXJkLT5zaG9ydG5hbWUs ICJEaWdpZ3JhbSBMWDY0NjRFUyIpOworCXNwcmludGYoY2FyZC0+bG9uZ25hbWUsICIlcyBhdCAw eCVseCwgMHglbHgsIDB4JWx4LCBpcnEgJWkiLAorCQljYXJkLT5zaG9ydG5hbWUsIGNoaXAtPnBv cnRfbWVtLCBjaGlwLT5wb3J0X3BseCwKKwkJY2hpcC0+cG9ydF9kc3AsIGNoaXAtPmlycSk7CisK KwllcnIgPSBzbmRfY2FyZF9yZWdpc3RlcihjYXJkKTsKKwlpZiAoZXJyIDwgMCkKKwkJZ290byBv dXRfZnJlZTsKKworCXNuZF9wcmludGRkKExYUCAiaW5pdGlhbGl6YXRpb24gc3VjY2Vzc2Z1bFxu Iik7CisJcGNpX3NldF9kcnZkYXRhKHBjaSwgY2FyZCk7CisJZGV2Kys7CisJcmV0dXJuIDA7CisK K291dF9mcmVlOgorCXNuZF9jYXJkX2ZyZWUoY2FyZCk7CisJcmV0dXJuIGVycjsKKworfQorCitz dGF0aWMgdm9pZCBfX2RldmV4aXQgc25kX2x4NjQ2NGVzX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAq cGNpKQoreworCXNuZF9jYXJkX2ZyZWUocGNpX2dldF9kcnZkYXRhKHBjaSkpOworCXBjaV9zZXRf ZHJ2ZGF0YShwY2ksIE5VTEwpOworfQorCisKK3N0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBkcml2 ZXIgPSB7CisJLm5hbWUgPSAgICAgIkRpZ2lncmFtIExYNjQ2NEVTIiwKKwkuaWRfdGFibGUgPSBz bmRfbHg2NDY0ZXNfaWRzLAorCS5wcm9iZSA9ICAgIHNuZF9seDY0NjRlc19wcm9iZSwKKwkucmVt b3ZlID0gX19kZXZleGl0X3Aoc25kX2x4NjQ2NGVzX3JlbW92ZSksCit9OworCisKKy8qIG1vZHVs ZSBpbml0aWFsaXphdGlvbiAqLworc3RhdGljIGludCBfX2luaXQgbW9kX2luaXQodm9pZCkKK3sK KwlyZXR1cm4gcGNpX3JlZ2lzdGVyX2RyaXZlcigmZHJpdmVyKTsKK30KKworc3RhdGljIHZvaWQg X19leGl0IG1vZF9leGl0KHZvaWQpCit7CisJcGNpX3VucmVnaXN0ZXJfZHJpdmVyKCZkcml2ZXIp OworfQorCittb2R1bGVfaW5pdChtb2RfaW5pdCk7Cittb2R1bGVfZXhpdChtb2RfZXhpdCk7CmRp ZmYgLS1naXQgYS9zb3VuZC9wY2kvbHg2NDY0ZXMvbHg2NDY0ZXMuaCBiL3NvdW5kL3BjaS9seDY0 NjRlcy9seDY0NjRlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3NGM1 YTcKLS0tIC9kZXYvbnVsbAorKysgYi9zb3VuZC9wY2kvbHg2NDY0ZXMvbHg2NDY0ZXMuaApAQCAt MCwwICsxLDExOSBAQAorLyogLSotIGxpbnV4LWMgLSotICoKKyAqCisgKiBBTFNBIGRyaXZlciBm b3IgdGhlIGRpZ2lncmFtIGx4NjQ2NGVzIGludGVyZmFjZQorICoKKyAqIENvcHlyaWdodCAoYykg MjAwOSBUaW0gQmxlY2htYW5uIDx0aW1Aa2xpbmd0Lm9yZz4KKyAqCisgKgorICogVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBu b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBU ZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4K KyAqCisgKi8KKworI2lmbmRlZiBMWDY0NjRFU19ICisjZGVmaW5lIExYNjQ2NEVTX0gKKworI2lu Y2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+CisjaW5jbHVkZSA8YXNtL2F0b21pYy5oPgorCisjaW5j bHVkZSA8c291bmQvY29yZS5oPgorI2luY2x1ZGUgPHNvdW5kL3BjbS5oPgorCisjaW5jbHVkZSAi bHhfY29yZS5oIgorCisjZGVmaW5lIExYUCAiTFg2NDY0RVM6ICIKKworZW51bSB7CisgICAgRVNf Y21kX2ZyZWUgICAgICAgICA9IDAsICAgIC8qIG5vIGNvbW1hbmQgZXhlY3V0aW5nICovCisgICAg RVNfY21kX3Byb2Nlc3NpbmcgICA9IDEsCS8qIGV4ZWN1dGlvbiBvZiBhIHJlYWQvd3JpdGUgY29t bWFuZCAqLworICAgIEVTX3JlYWRfcGVuZGluZyAgICAgPSAyLCAgICAvKiBhIGFzeW5jaHJvbiBy ZWFkIGNvbW1hbmQgaXMgcGVuZGluZyAqLworICAgIEVTX3JlYWRfZmluaXNoaW5nICAgPSAzLCAg ICAvKiBhIHJlYWQgY29tbWFuZCBoYXMgZmluaXNoZWQgd2FpdGluZyAoc2V0IGJ5CisJCQkJICog SW50ZXJydXB0IG9yIENhbmNlbElycCkgKi8KK307CisKK2VudW0gbHhfc3RyZWFtX3N0YXR1cyB7 CisJTFhfU1RSRUFNX1NUQVRVU19GUkVFLAorLyogCUxYX1NUUkVBTV9TVEFUVVNfT1BFTiwgKi8K KwlMWF9TVFJFQU1fU1RBVFVTX1NDSEVEVUxFX1JVTiwKKy8qIAlMWF9TVFJFQU1fU1RBVFVTX1NU QVJURUQsICovCisJTFhfU1RSRUFNX1NUQVRVU19SVU5OSU5HLAorCUxYX1NUUkVBTV9TVEFUVVNf U0NIRURVTEVfU1RPUCwKKy8qIAlMWF9TVFJFQU1fU1RBVFVTX1NUT1BQRUQsICovCisvKiAJTFhf U1RSRUFNX1NUQVRVU19QQVVTRUQgKi8KK307CisKKworc3RydWN0IGx4X3N0cmVhbSB7CisJc3Ry dWN0IHNuZF9wY21fc3Vic3RyZWFtICAqc3RyZWFtOworCXNuZF9wY21fdWZyYW1lc190ICAgICAg ICAgIGZyYW1lX3BvczsKKwllbnVtIGx4X3N0cmVhbV9zdGF0dXMgICAgICBzdGF0dXM7IC8qIGZy ZWUsIG9wZW4sIHJ1bm5pbmcsIGRyYWluaW5nCisJCQkJCSAgICAqIHBhdXNlICovCisJaW50ICAg ICAgICAgICAgICAgICAgICAgICAgaXNfY2FwdHVyZToxOworfTsKKworCitzdHJ1Y3QgbHg2NDY0 ZXMgeworCXN0cnVjdCBzbmRfY2FyZCAgICAgICAgKmNhcmQ7CisJc3RydWN0IHBjaV9kZXYgICAg ICAgICAqcGNpOworCWludAkJCWlycTsKKworCXNwaW5sb2NrX3QJCWxvY2s7ICAgICAgICAvKiBp bnRlcnJ1cHQgc3BpbmxvY2sgKi8KKwlzdHJ1Y3QgbXV0ZXggICAgICAgICAgICBzZXR1cF9tdXRl eDsgLyogbXV0ZXggdXNlZCBpbiBod19wYXJhbXMsIG9wZW4KKwkJCQkJICAgICAgKiBhbmQgY2xv c2UgKi8KKworCXN0cnVjdCB0YXNrbGV0X3N0cnVjdCAgIHRyaWdnZXJfdGFza2xldDsgLyogdHJp Z2dlciB0YXNrbGV0ICovCisJc3RydWN0IHRhc2tsZXRfc3RydWN0ICAgdGFza2xldF9jYXB0dXJl OworCXN0cnVjdCB0YXNrbGV0X3N0cnVjdCAgIHRhc2tsZXRfcGxheWJhY2s7CisKKwkvKiBwb3J0 cyAqLworCXVuc2lnbmVkIGxvbmcJCXBvcnRfbWVtOyAgICAgICAgICAvKiBtZW1vcnkgcG9ydCAo MzItYml0LAorCQkJCQkJICAgICogbm9uLXByZWZldGNoYWJsZSwKKwkJCQkJCSAgICAqIHNpemU9 NTEyKSAqLworCXVuc2lnbmVkIGxvbmcJCXBvcnRfcGx4OwkgICAvKiBpbyBwb3J0IChzaXplPTI1 NikgKi8KKwl2b2lkIF9faW9tZW0gICAgICAgICAgICpwb3J0X3BseF9yZW1hcHBlZDsgLyogcmVt YXBwZWQgcGx4IHBvcnQgKi8KKwl1bnNpZ25lZCBsb25nCQlwb3J0X2RzcDsJICAgLyogbWVtb3J5 IHBvcnQgKDMyLWJpdCwKKwkJCQkJCSAgICAqIG5vbi1wcmVmZXRjaGFibGUsCisJCQkJCQkgICAg KiBzaXplPThLKSAqLworCXZvaWQgX19pb21lbSAgICAgICAgICAgKnBvcnRfZHNwX3JlbWFwcGVk OyAvKiByZW1hcHBlZCBkc3AgcG9ydCAqLworCXN0cnVjdCByZXNvdXJjZSAgICAgICAgKnBvcnRf ZHNwX3Jlc291cmNlOyAvKiBpdHMgcmVzb3VyY2UgKi8KKworCS8qIG1lc3NhZ2luZyAqLworCXNw aW5sb2NrX3QJCW1zZ19sb2NrOyAgICAgICAgICAvKiBtZXNzYWdlIHNwaW5sb2NrICovCisJYXRv bWljX3QJICAgICAgICBzZW5kX21lc3NhZ2VfbG9ja2VkOworCXN0cnVjdCBseF9ybWggICAgICAg ICAgIHJtaDsKKworCS8qIGNvbmZpZ3VyYXRpb24gKi8KKwl1aW50CQkJZnJlcV9yYXRpbyA6IDI7 CisJdWludCAgICAgICAgICAgICAgICAgICAgcGxheWJhY2tfbXV0ZSA6IDE7CisJdWludCAgICAg ICAgICAgICAgICAgICAgaGFyZHdhcmVfcnVubmluZ1syXTsKKwl1MzIgICAgICAgICAgICAgICAg ICAgICBib2FyZF9zYW1wbGVfcmF0ZTsgLyogc2FtcGxlIHJhdGUgcmVhZCBmcm9tCisJCQkJCQkg ICAgKiBib2FyZCAqLworCXUzMiAgICAgICAgICAgICAgICAgICAgIHNhbXBsZV9yYXRlOwkgICAv KiBvdXIgc2FtcGxlIHJhdGUgKi8KKwl1MTYgICAgICAgICAgICAgICAgICAgICBwY21fZ3JhbnVs YXJpdHk7ICAgLyogYm9hcmQgYmxvY2tzaXplICovCisKKwkvKiBkbWEgKi8KKwlzdHJ1Y3Qgc25k X2RtYV9idWZmZXIgICBjYXB0dXJlX2RtYV9idWY7CisJc3RydWN0IHNuZF9kbWFfYnVmZmVyICAg cGxheWJhY2tfZG1hX2J1ZjsKKworCS8qIHBjbSAqLworCXN0cnVjdCBzbmRfcGNtICAgICAgICAg KnBjbTsKKworCS8qIHN0cmVhbXMgKi8KKwlzdHJ1Y3QgbHhfc3RyZWFtICAgICAgICBjYXB0dXJl X3N0cmVhbTsKKwlzdHJ1Y3QgbHhfc3RyZWFtICAgICAgICBwbGF5YmFja19zdHJlYW07Cit9Owor CisKKyNlbmRpZiAvKiBMWDY0NjRFU19IICovCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvbHg2NDY0 ZXMvbHhfY29yZS5jIGIvc291bmQvcGNpL2x4NjQ2NGVzL2x4X2NvcmUuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTYwYjE4Ci0tLSAvZGV2L251bGwKKysrIGIvc291bmQv cGNpL2x4NjQ2NGVzL2x4X2NvcmUuYwpAQCAtMCwwICsxLDE0NTMgQEAKKy8qIC0qLSBsaW51eC1j IC0qLSAqCisgKgorICogQUxTQSBkcml2ZXIgZm9yIHRoZSBkaWdpZ3JhbSBseDY0NjRlcyBpbnRl cmZhY2UKKyAqIGxvdy1sZXZlbCBpbnRlcmZhY2UKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDkg VGltIEJsZWNobWFubiA8dGltQGtsaW5ndC5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRl IHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxh Y2UgLSBTdWl0ZSAzMzAsCisgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyAqCisgKi8K KworLyogI2RlZmluZSBSTUhfREVCVUcgMSAqLworCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+ CisjaW5jbHVkZSA8bGludXgvcGNpLmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKworI2lu Y2x1ZGUgImx4NjQ2NGVzLmgiCisjaW5jbHVkZSAibHhfY29yZS5oIgorCisjaW5jbHVkZSAiZXRo ZXJzb3VuZC5oIgorCisvKiBsb3ctbGV2ZWwgcmVnaXN0ZXIgYWNjZXNzICovCisKK3N0YXRpYyBj b25zdCB1bnNpZ25lZCBsb25nIGRzcF9wb3J0X29mZnNldHNbXSA9IHsKKwkwLAorCTB4NDAwLAor CTB4NDAxLAorCTB4NDAyLAorCTB4NDAzLAorCTB4NDA0LAorCTB4NDA1LAorCTB4NDA2LAorCTB4 NDA3LAorCTB4NDA4LAorCTB4NDA5LAorCTB4NDBhLAorCTB4NDBiLAorCTB4NDBjLAorCisJMHg0 MTAsCisJMHg0MTEsCisJMHg0MTIsCisJMHg0MTMsCisJMHg0MTQsCisJMHg0MTUsCisJMHg0MTYs CisKKwkweDQyMCwKKwkweDQzMCwKKwkweDQzMSwKKwkweDQzMiwKKwkweDQzMywKKwkweDQzNCwK KwkweDQ0MAorfTsKKworc3RhdGljIHZvaWQgX19pb21lbSAqbHhfZHNwX3JlZ2lzdGVyKHN0cnVj dCBseDY0NjRlcyAqY2hpcCwgaW50IHBvcnQpCit7CisJdm9pZCBfX2lvbWVtICpiYXNlX2FkZHJl c3MgPSBjaGlwLT5wb3J0X2RzcF9yZW1hcHBlZDsKKwlyZXR1cm4gYmFzZV9hZGRyZXNzICsgZHNw X3BvcnRfb2Zmc2V0c1twb3J0XSo0OworfQorCit1bnNpZ25lZCBsb25nIGx4X2RzcF9yZWdfcmVh ZChzdHJ1Y3QgbHg2NDY0ZXMgKmNoaXAsIGludCBwb3J0KQoreworCXZvaWQgX19pb21lbSAqYWRk cmVzcyA9IGx4X2RzcF9yZWdpc3RlcihjaGlwLCBwb3J0KTsKKwlyZXR1cm4gaW9yZWFkMzIoYWRk cmVzcyk7Cit9CisKK3ZvaWQgbHhfZHNwX3JlZ19yZWFkYnVmKHN0cnVjdCBseDY0NjRlcyAqY2hp cCwgaW50IHBvcnQsIHUzMiAqZGF0YSwgdTMyIGxlbikKK3sKKwl2b2lkIF9faW9tZW0gKmFkZHJl c3MgPSBseF9kc3BfcmVnaXN0ZXIoY2hpcCwgcG9ydCk7CisJbWVtY3B5X2Zyb21pbyhkYXRhLCBh ZGRyZXNzLCBsZW4qc2l6ZW9mKHUzMikpOworfQorCisKK3ZvaWQgbHhfZHNwX3JlZ193cml0ZShz dHJ1Y3QgbHg2NDY0ZXMgKmNoaXAsIGludCBwb3J0LCB1bnNpZ25lZCBkYXRhKQoreworCXZvaWQg X19pb21lbSAqYWRkcmVzcyA9IGx4X2RzcF9yZWdpc3RlcihjaGlwLCBwb3J0KTsKKwlpb3dyaXRl MzIoZGF0YSwgYWRkcmVzcyk7Cit9CisKK3ZvaWQgbHhfZHNwX3JlZ193cml0ZWJ1ZihzdHJ1Y3Qg bHg2NDY0ZXMgKmNoaXAsIGludCBwb3J0LCBjb25zdCB1MzIgKmRhdGEsCisJCQkgdTMyIGxlbikK K3sKKwl2b2lkIF9faW9tZW0gKmFkZHJlc3MgPSBseF9kc3BfcmVnaXN0ZXIoY2hpcCwgcG9ydCk7 CisJbWVtY3B5X3RvaW8oYWRkcmVzcywgZGF0YSwgbGVuKnNpemVvZih1MzIpKTsKK30KKworCitz dGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBwbHhfcG9ydF9vZmZzZXRzW10gPSB7CisJMHgwNCwK KwkweDQwLAorCTB4NDQsCisJMHg0OCwKKwkweDRjLAorCTB4NTAsCisJMHg1NCwKKwkweDU4LAor CTB4NWMsCisJMHg2NCwKKwkweDY4LAorCTB4NkMKK307CisKK3N0YXRpYyB2b2lkIF9faW9tZW0g Kmx4X3BseF9yZWdpc3RlcihzdHJ1Y3QgbHg2NDY0ZXMgKmNoaXAsIGludCBwb3J0KQoreworCXZv aWQgX19pb21lbSAqYmFzZV9hZGRyZXNzID0gY2hpcC0+cG9ydF9wbHhfcmVtYXBwZWQ7CisJcmV0 dXJuIGJhc2VfYWRkcmVzcyArIHBseF9wb3J0X29mZnNldHNbcG9ydF07Cit9CisKK3Vuc2lnbmVk IGxvbmcgbHhfcGx4X3JlZ19yZWFkKHN0cnVjdCBseDY0NjRlcyAqY2hpcCwgaW50IHBvcnQpCit7 CisJdm9pZCBfX2lvbWVtICphZGRyZXNzID0gbHhfcGx4X3JlZ2lzdGVyKGNoaXAsIHBvcnQpOwor CXJldHVybiBpb3JlYWQzMihhZGRyZXNzKTsKK30KKwordm9pZCBseF9wbHhfcmVnX3dyaXRlKHN0 cnVjdCBseDY0NjRlcyAqY2hpcCwgaW50IHBvcnQsIHUzMiBkYXRhKQoreworCXZvaWQgX19pb21l bSAqYWRkcmVzcyA9IGx4X3BseF9yZWdpc3RlcihjaGlwLCBwb3J0KTsKKwlpb3dyaXRlMzIoZGF0 YSwgYWRkcmVzcyk7Cit9CisKK3UzMiBseF9wbHhfbWJveF9yZWFkKHN0cnVjdCBseDY0NjRlcyAq Y2hpcCwgaW50IG1ib3hfbnIpCit7CisJaW50IGluZGV4OworCisJc3dpdGNoIChtYm94X25yKSB7 CisJY2FzZSAxOgorCQlpbmRleCA9IGVQTFhfTUJPWDE7ICAgIGJyZWFrOworCWNhc2UgMjoKKwkJ aW5kZXggPSBlUExYX01CT1gyOyAgICBicmVhazsKKwljYXNlIDM6CisJCWluZGV4ID0gZVBMWF9N Qk9YMzsgICAgYnJlYWs7CisJY2FzZSA0OgorCQlpbmRleCA9IGVQTFhfTUJPWDQ7ICAgIGJyZWFr OworCWNhc2UgNToKKwkJaW5kZXggPSBlUExYX01CT1g1OyAgICBicmVhazsKKwljYXNlIDY6CisJ CWluZGV4ID0gZVBMWF9NQk9YNjsgICAgYnJlYWs7CisJY2FzZSA3OgorCQlpbmRleCA9IGVQTFhf TUJPWDc7ICAgIGJyZWFrOworCWNhc2UgMDoJCQkvKiByZXNlcnZlZCBmb3IgSEYgZmxhZ3MgKi8K KwkJc25kX0JVRygpOworCWRlZmF1bHQ6CisJCXJldHVybiAweGRlYWRiZWVmOworCX0KKworCXJl dHVybiBseF9wbHhfcmVnX3JlYWQoY2hpcCwgaW5kZXgpOworfQorCitpbnQgbHhfcGx4X21ib3hf d3JpdGUoc3RydWN0IGx4NjQ2NGVzICpjaGlwLCBpbnQgbWJveF9uciwgdTMyIHZhbHVlKQorewor CWludCBpbmRleCA9IC0xOworCisJc3dpdGNoIChtYm94X25yKSB7CisJY2FzZSAxOgorCQlpbmRl eCA9IGVQTFhfTUJPWDE7ICAgIGJyZWFrOworCWNhc2UgMzoKKwkJaW5kZXggPSBlUExYX01CT1gz OyAgICBicmVhazsKKwljYXNlIDQ6CisJCWluZGV4ID0gZVBMWF9NQk9YNDsgICAgYnJlYWs7CisJ Y2FzZSA1OgorCQlpbmRleCA9IGVQTFhfTUJPWDU7ICAgIGJyZWFrOworCWNhc2UgNjoKKwkJaW5k ZXggPSBlUExYX01CT1g2OyAgICBicmVhazsKKwljYXNlIDc6CisJCWluZGV4ID0gZVBMWF9NQk9Y NzsgICAgYnJlYWs7CisJY2FzZSAwOgkJCS8qIHJlc2VydmVkIGZvciBIRiBmbGFncyAqLworCWNh c2UgMjoJCQkvKiByZXNlcnZlZCBmb3IgUGlwZSBTdGF0ZXMKKwkJCQkgKiB0aGUgRFNQIGtlZXBz IGFuIGltYWdlIG9mIGl0ICovCisJCXNuZF9CVUcoKTsKKwkJcmV0dXJuIC1FQkFEUlFDOworCX0K KworCWx4X3BseF9yZWdfd3JpdGUoY2hpcCwgaW5kZXgsIHZhbHVlKTsKKwlyZXR1cm4gMDsKK30K KworCisvKiBybWggKi8KKworI2lmZGVmIENPTkZJR19TTkRfREVCVUcKKyNkZWZpbmUgQ01EX05B TUUoYSkgYQorI2Vsc2UKKyNkZWZpbmUgQ01EX05BTUUoYSkgTlVMTAorI2VuZGlmCisKKyNkZWZp bmUgT1BDT0RFX09GRlNFVAkyNCAgICAgIC8qKjwgb2Zmc2V0IG9mIHRoZSBjb21tYW5kIG9wY29k ZSBpbiB0aGUgZmlyc3QgY29tbWFuZCB3b3JkLiovCisKKy8qIHNwZWNpZmljIHRvIENPREVDTURf TUFKX0JVRkZFUl9QQyAqLworI2RlZmluZSBNQVhfU1RSRUFNX0JVRkZFUiA1CS8qKjwgbWF4IGFt b3VudCBvZiBzdHJlYW0gYnVmZmVycy4qLworCisjZGVmaW5lIFJlZ19DU01fTVIJCQkweDAwMDAw MDAyCisjZGVmaW5lIFJlZ19DU01fTUMJCQkweDAwMDAwMDAxCisKK3N0cnVjdCBkc3BfY21kX2lu Zm8geworCXUzMiAgICBkY0NvZGVPcDsJLyoqPCBPcCBDb2RlIG9mIHRoZSBjb21tYW5kICh1c3Vh bGx5IDFzdCAyNC1iaXRzIHdvcmQpLiovCisJdTE2ICAgIGRjQ21kTGVuZ3RoOwkvKio8IENvbW1h bmQgbGVuZ3RoIGluIHdvcmRzIG9mIDI0IGJpdHMuKi8KKwl1MTYgICAgZGNTdGF0dXNUeXBlOwkv Kio8IFN0YXR1cyB0eXBlOiAwIGZvciBmaXhlZCBsZW5ndGgsIDEgZm9yIHJhbmRvbS4qLworCXUx NiAgICBkY1N0YXR1c0xlbmd0aDsJLyoqPCBTdGF0dXMgbGVuZ3RoIChpZiBmaXhlZCkuKi8KKwlj aGFyICAqZGNPcE5hbWU7Cit9OworCisvKioKKyoJQGJyaWVmCUluaXRpYWxpemF0aW9uIGFuZCBj b250cm9sIGRhdGEgZm9yIHRoZSBNaWNyb2JsYXplIGludGVyZmFjZQorKgorKgktIE9wQ29kZToJ dGhlIG9wY29kZSBmaWVsZCBvZiB0aGUgY29tbWFuZCBzZXQgYXQgdGhlIHByb3BlciBvZmZzZXQK KyoJLSBDbWRMZW5ndGgJdGhlIG51bWJlciBvZiBjb21tYW5kIHdvcmRzCisqCS0gU3RhdHVzVHlw ZQlvZmZzZXQgaW4gdGhlIHN0YXR1cyByZWdpc3RlcnMgOiAwIG1lYW5zIHRoYXQgdGhlIHJldHVy biB2YWx1ZSBtYXkgYmUgZGlmZmVyZW50IGZyb20gU1VDQ0VTUywgYW5kIG11c3QgYmUgcmVhZAor KgktIFN0YXR1c0xlbmd0aAl0aGUgbnVtYmVyIG9mIHN0YXR1cyB3b3JkcyAoaW4gYWRkaXRpb24g dG8gdGhlIHJldHVybiB2YWx1ZSkKKyovCisKK3N0YXRpYyBzdHJ1Y3QgZHNwX2NtZF9pbmZvIGRz cF9jb21tYW5kc1tdID0KK3sKKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJ Ly8gT3BDb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg Q21kTGVuZ3RoICAgfCAgIFN0YXR1c1R5cGUgIHwgICAgU3RhdHVzTGVuZ3RoCisJLy8gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCXsgKENNRF8wMF9JTkZPX0RFQlVHIDw8IE9QQ09E RV9PRkZTRVQpCQkJLDEgLypjdXN0b20qLyAgICwxCSwwIC8qKi8JCSAgICAsIENNRF9OQU1FKCJJ TkZPX0RFQlVHIikgfSwKKwl7IChDTURfMDFfR0VUX1NZU19DRkcgPDwgT1BDT0RFX09GRlNFVCkg CQksMSAvKiovICAgICAgICAgLDEgICAgICAsMiAvKiovCQkgICAgLCBDTURfTkFNRSgiR0VUX1NZ U19DRkciKSB9LAorCXsgKENNRF8wMl9TRVRfR1JBTlVMQVJJVFkgPDwgT1BDT0RFX09GRlNFVCkJ ICAgICAgICAsMSAvKiovICAgICAgICAgLDEgICAgICAsMCAvKiovCQkgICAgLCBDTURfTkFNRSgi U0VUX0dSQU5VTEFSSVRZIikgfSwKKwl7IChDTURfMDNfU0VUX1RJTUVSX0lSUSA8PCBPUENPREVf T0ZGU0VUKQkJLDEgLyoqLyAgICAgICAgICwxICAgICAgLDAgLyoqLwkJICAgICwgQ01EX05BTUUo IlNFVF9USU1FUl9JUlEiKSB9LAorCXsgKENNRF8wNF9HRVRfRVZFTlQgPDwgT1BDT0RFX09GRlNF VCkJCQksMSAvKiovICAgICAgICAgLDEgICAgICAsMCAvKnVwIHRvIDEwKi8gICAgICwgQ01EX05B TUUoIkdFVF9FVkVOVCIpIH0sCisJeyAoQ01EXzA1X0dFVF9QSVBFUyA8PCBPUENPREVfT0ZGU0VU KQkJCSwxIC8qKi8gICAgICAgICAsMSAgICAgICwyIC8qdXAgdG8gNCovICAgICAgLCBDTURfTkFN RSgiR0VUX1BJUEVTIikgfSwKKwl7IChDTURfMDZfQUxMT0NBVEVfUElQRSA8PCBPUENPREVfT0ZG U0VUKQkJLDEgLyoqLyAgICAgICAgICwwICAgICAgLDAgLyoqLwkJICAgICwgQ01EX05BTUUoIkFM TE9DQVRFX1BJUEUiKSB9LAorCXsgKENNRF8wN19SRUxFQVNFX1BJUEUgPDwgT1BDT0RFX09GRlNF VCkJCSwxIC8qKi8gICAgICAgICAsMCAgICAgICwwIC8qKi8JCSAgICAsIENNRF9OQU1FKCJSRUxF QVNFX1BJUEUiKSB9LAorCXsgKENNRF8wOF9BU0tfQlVGRkVSUyA8PCBPUENPREVfT0ZGU0VUKSAJ CSwxIC8qKi8gICAgICAgICAsMSAgICAgICxNQVhfU1RSRUFNX0JVRkZFUiAgLCBDTURfTkFNRSgi QVNLX0JVRkZFUlMiKSB9LAorCXsgKENNRF8wOV9TVE9QX1BJUEUgPDwgT1BDT0RFX09GRlNFVCkJ CQksMSAvKiovICAgICAgICAgLDAgICAgICAsMCAvKnVwIHRvIDIqLyAgICAgICwgQ01EX05BTUUo IlNUT1BfUElQRSIpIH0sCisJeyAoQ01EXzBBX0dFVF9QSVBFX1NQTF9DT1VOVCA8PCBPUENPREVf T0ZGU0VUKQkgICAgICAgICwxIC8qKi8JCSwxICAgICAgLDEgLyp1cCB0byAyKi8gICAgICAsIENN RF9OQU1FKCJHRVRfUElQRV9TUExfQ09VTlQiKSB9LAorCXsgKENNRF8wQl9UT0dHTEVfUElQRV9T VEFURSA8PCBPUENPREVfT0ZGU0VUKSAgICAgICAgICAgLDEgLyp1cCB0byA1Ki8gICwxICAgICAg LDAgLyoqLwkJICAgICwgQ01EX05BTUUoIlRPR0dMRV9QSVBFX1NUQVRFIikgfSwKKwl7IChDTURf MENfREVGX1NUUkVBTSA8PCBPUENPREVfT0ZGU0VUKQkJCSwxIC8qdXAgdG8gNCovCSwxICAgICAg LDAgLyoqLwkJICAgICwgQ01EX05BTUUoIkRFRl9TVFJFQU0iKSB9LAorCXsgKENNRF8wRF9TRVRf TVVURSAgPDwgT1BDT0RFX09GRlNFVCkJCQksMyAvKiovCQksMSAgICAgICwwIC8qKi8JCSAgICAs IENNRF9OQU1FKCJTRVRfTVVURSIpIH0sCisJeyAoQ01EXzBFX0dFVF9TVFJFQU1fU1BMX0NPVU5U IDw8IE9QQ09ERV9PRkZTRVQpICAgICAgICAsMS8qKi8JCSwxICAgICAgLDIgLyoqLwkJICAgICwg Q01EX05BTUUoIkdFVF9TVFJFQU1fU1BMX0NPVU5UIikgfSwKKwl7IChDTURfMEZfVVBEQVRFX0JV RkZFUiA8PCBPUENPREVfT0ZGU0VUKQkJLDMgLyp1cCB0byA0Ki8JLDAgICAgICAsMSAvKiovCQkg ICAgLCBDTURfTkFNRSgiVVBEQVRFX0JVRkZFUiIpIH0sCisJeyAoQ01EXzEwX0dFVF9CVUZGRVIg PDwgT1BDT0RFX09GRlNFVCkJCQksMSAvKiovCQksMSAgICAgICw0IC8qKi8JCSAgICAsIENNRF9O QU1FKCJHRVRfQlVGRkVSIikgfSwKKwl7IChDTURfMTFfQ0FOQ0VMX0JVRkZFUiA8PCBPUENPREVf T0ZGU0VUKQkJLDEgLyoqLwkJLDEgICAgICAsMSAvKnVwIHRvIDQqLyAgICAgICwgQ01EX05BTUUo IkNBTkNFTF9CVUZGRVIiKSB9LAorCXsgKENNRF8xMl9HRVRfUEVBSyA8PCBPUENPREVfT0ZGU0VU KQkJCSwxIC8qKi8JCSwxICAgICAgLDEgLyoqLwkJICAgICwgQ01EX05BTUUoIkdFVF9QRUFLIikg fSwKKwl7IChDTURfMTNfU0VUX1NUUkVBTV9TVEFURSA8PCBPUENPREVfT0ZGU0VUKQkgICAgICAg ICwxIC8qKi8JCSwxICAgICAgLDAgLyoqLwkJICAgICwgQ01EX05BTUUoIlNFVF9TVFJFQU1fU1RB VEUiKSB9LAorfTsKKworc3RhdGljIHZvaWQgbHhfbWVzc2FnZV9pbml0KHN0cnVjdCBseF9ybWgg KnJtaCwgY21kX21iX29wY29kZXMgY21kKQoreworCXNuZF9CVUdfT04oY21kID49IENNRF8xNF9J TlZBTElEKTsKKworCXJtaC0+Y21kWzBdID0gZHNwX2NvbW1hbmRzW2NtZF0uZGNDb2RlT3A7CisJ cm1oLT5jbWRfbGVuID0gZHNwX2NvbW1hbmRzW2NtZF0uZGNDbWRMZW5ndGg7CisJcm1oLT5zdGF0 X2xlbiA9IGRzcF9jb21tYW5kc1tjbWRdLmRjU3RhdHVzTGVuZ3RoOworCXJtaC0+ZHNwX3N0YXQg PSBkc3BfY29tbWFuZHNbY21kXS5kY1N0YXR1c1R5cGU7CisJcm1oLT5jbWRfaWR4ID0gY21kOwor CW1lbXNldCgmcm1oLT5jbWRbMV0sIDAsIChSRUdfQ1JNX05VTUJFUiAtIDEpICogc2l6ZW9mKHUz MikpOworCisjaWZkZWYgQ09ORklHX1NORF9ERUJVRworCW1lbXNldChybWgtPnN0YXQsIDAsIFJF R19DUk1fTlVNQkVSICogc2l6ZW9mKHUzMikpOworI2VuZGlmCisjaWZkZWYgUk1IX0RFQlVHCisJ cm1oLT5jbWRfaWR4ID0gY21kOworI2VuZGlmCit9CisKKyNpZmRlZiBSTUhfREVCVUcKKyNkZWZp bmUgTFhSTUggImx4NjQ2NGVzIHJtaDogIgorc3RhdGljIHZvaWQgbHhfbWVzc2FnZV9kdW1wKHN0 cnVjdCBseF9ybWggKnJtaCkKK3sKKwl1OCBpZHggPSBybWgtPmNtZF9pZHg7CisJaW50IGk7CisK KwlzbmRfcHJpbnRrKExYUk1IICJjb21tYW5kICVzXG4iLCBkc3BfY29tbWFuZHNbaWR4XS5kY09w TmFtZSk7CisKKwlmb3IgKGkgPSAwOyBpICE9IHJtaC0+Y21kX2xlbjsgKytpKQorCQlzbmRfcHJp bnRrKExYUk1IICJcdGNtZFslZF0gJTA4eFxuIiwgaSwgcm1oLT5jbWRbaV0pOworCisJZm9yIChp ID0gMDsgaSAhPSBybWgtPnN0YXRfbGVuOyArK2kpCisJCXNuZF9wcmludGsoTFhSTUggIlx0c3Rh dFslZF06ICUwOHhcbiIsIGksIHJtaC0+c3RhdFtpXSk7CisJc25kX3ByaW50aygiXG4iKTsKK30K KyNlbHNlCitzdGF0aWMgaW5saW5lIHZvaWQgbHhfbWVzc2FnZV9kdW1wKHN0cnVjdCBseF9ybWgg KnJtaCkKK3t9CisjZW5kaWYKKworCisKKy8qIHNsZWVwIDUwMCAtIDEwMCA9IDQwMCB0aW1lcyAx MDB1cyAtPiB0aGUgdGltZW91dCBpcyA+PSA0MCBtcyAqLworI2RlZmluZSBYSUxJTlhfVElNRU9V VF9NUyAgICAgICA0MAorI2RlZmluZSBYSUxJTlhfUE9MTF9OT19TTEVFUCAgICAxMDAKKyNkZWZp bmUgWElMSU5YX1BPTExfSVRFUkFUSU9OUyAgMTUwCisKK3N0YXRpYyBpbnQgbHhfbWVzc2FnZV9z ZW5kKHN0cnVjdCBseDY0NjRlcyAqY2hpcCwgc3RydWN0IGx4X3JtaCAqcm1oKQoreworCXUzMiBy ZWcgPSBFRF9EU1BfVElNRURfT1VUOworCWludCBkd2xvb3A7CisJaW50IGFuc3dlcl9yZWNlaXZl ZDsKKworCWlmIChseF9kc3BfcmVnX3JlYWQoY2hpcCwgZVJlZ19DU00pICYgKFJlZ19DU01fTUMg fCBSZWdfQ1NNX01SKSkgeworCQlzbmRfcHJpbnRrKEtFUk5fRVJSIExYUCAiUElPU2VuZE1lc3Nh Z2UgZVJlZ19DU00gJXhcbiIsIHJlZyk7CisJCXJldHVybiAtRUJVU1k7CisJfQorCisJLyogd3Jp dGUgY29tbWFuZCAqLworCWx4X2RzcF9yZWdfd3JpdGVidWYoY2hpcCwgZVJlZ19DUk0xLCBybWgt PmNtZCwgcm1oLT5jbWRfbGVuKTsKKworCXNuZF9CVUdfT04oYXRvbWljX3JlYWQoJmNoaXAtPnNl bmRfbWVzc2FnZV9sb2NrZWQpICE9IDApOworCWF0b21pY19zZXQoJmNoaXAtPnNlbmRfbWVzc2Fn ZV9sb2NrZWQsIDEpOworCisJLyogTWljb0JsYXplIGdvZ29nbyAqLworCWx4X2RzcF9yZWdfd3Jp dGUoY2hpcCwgZVJlZ19DU00sIFJlZ19DU01fTUMpOworCisJLyogd2FpdCBmb3IgaW50ZXJydXB0 IHRvIGFuc3dlciAqLworCWZvciAoZHdsb29wID0gMDsgZHdsb29wICE9IFhJTElOWF9USU1FT1VU X01TOyArK2R3bG9vcCkgeworCQlhbnN3ZXJfcmVjZWl2ZWQgPSBhdG9taWNfcmVhZCgmY2hpcC0+ c2VuZF9tZXNzYWdlX2xvY2tlZCk7CisJCWlmIChhbnN3ZXJfcmVjZWl2ZWQgPT0gMCkKKwkJCWJy ZWFrOworCQltc2xlZXAoMSk7CisJfQorCisJaWYgKGFuc3dlcl9yZWNlaXZlZCA9PSAwKSB7CisJ CS8qIGluIERlYnVnIG1vZGUgdmVyaWZ5IFJlZ19DU01fTVIgKi8KKwkJc25kX0JVR19PTighKGx4 X2RzcF9yZWdfcmVhZChjaGlwLCBlUmVnX0NTTSkgJiBSZWdfQ1NNX01SKSk7CisKKwkJLyogY29t bWFuZCBmaW5pc2hlZCwgcmVhZCBzdGF0dXMgKi8KKwkJaWYgKHJtaC0+ZHNwX3N0YXQgPT0gMCkK KwkJCXJlZyA9IGx4X2RzcF9yZWdfcmVhZChjaGlwLCBlUmVnX0NSTTEpOworCQllbHNlCisJCQly ZWcgPSBTVUNDRVNTOworCX0gZWxzZSB7CisJCWludCBpOworCQlzbmRfcHJpbnRrKEtFUk5fV0FS TklORyBMWFAgIlRJTUVPVVQgbHhfbWVzc2FnZV9zZW5kISAiCisJCQkgICAiSW50ZXJydXB0cyBk aXNhYmxlZD9cbiIpOworCisJCS8qIGF0dGVudGUgYml0IFJlZ19DU01fTVIgKi8KKwkJZm9yIChp ID0gMDsgaSAhPSBYSUxJTlhfUE9MTF9JVEVSQVRJT05TOyBpKyspIHsKKwkJCWlmICgobHhfZHNw X3JlZ19yZWFkKGNoaXAsIGVSZWdfQ1NNKSAmIFJlZ19DU01fTVIpKSB7CisJCQkJaWYgKHJtaC0+ ZHNwX3N0YXQgPT0gMCkKKwkJCQkJcmVnID0gbHhfZHNwX3JlZ19yZWFkKGNoaXAsIGVSZWdfQ1JN MSk7CisJCQkJZWxzZQorCQkJCQlyZWcgPSBTVUNDRVNTOworCQkJCWdvdG8gcG9sbGluZ19zdWNj ZXNzZnVsOworCQkJfQorCisJCQlpZiAoaSA+IFhJTElOWF9QT0xMX05PX1NMRUVQKQorCQkJCW1z bGVlcCgxKTsKKwkJfQorCQlzbmRfcHJpbnRrKEtFUk5fV0FSTklORyBMWFAgIlRJTUVPVVQgbHhf bWVzc2FnZV9zZW5kISAiCisJCQkgICAicG9sbGluZyBmYWlsZWRcbiIpOworCitwb2xsaW5nX3N1 Y2Nlc3NmdWw6CisJCWF0b21pY19zZXQoJmNoaXAtPnNlbmRfbWVzc2FnZV9sb2NrZWQsIDApOwor CX0KKworCWlmICgocmVnICYgRVJST1JfVkFMVUUpID09IDApIHsKKwkJLyogcmVhZCByZXNwb25z ZSAqLworCQlpZiAocm1oLT5zdGF0X2xlbikgeworCQkJc25kX0JVR19PTihybWgtPnN0YXRfbGVu ID49IChSRUdfQ1JNX05VTUJFUi0xKSk7CisKKwkJCWx4X2RzcF9yZWdfcmVhZGJ1ZihjaGlwLCBl UmVnX0NSTTIsIHJtaC0+c3RhdCwKKwkJCQkJICAgcm1oLT5zdGF0X2xlbik7CisJCX0KKwl9IGVs c2UKKwkJc25kX3ByaW50ayhLRVJOX1dBUk5JTkcgTFhQICJseF9tZXNzYWdlX3NlbmQ6IGVycm9y X3ZhbHVlICV4XG4iLAorCQkJICAgcmVnKTsKKworCS8qIGNsZWFyIFJlZ19DU01fTVIgKi8KKwls eF9kc3BfcmVnX3dyaXRlKGNoaXAsIGVSZWdfQ1NNLCAwKTsKKworCXN3aXRjaCAocmVnKSB7CisJ Y2FzZSBFRF9EU1BfVElNRURfT1VUOgorCQlzbmRfcHJpbnRrKEtFUk5fV0FSTklORyBMWFAgImx4 X21lc3NhZ2Vfc2VuZDogZHNwIHRpbWVvdXRcbiIpOworCQlyZXR1cm4gLUVUSU1FRE9VVDsKKwor CWNhc2UgRURfRFNQX0NSQVNIRUQ6CisJCXNuZF9wcmludGsoS0VSTl9XQVJOSU5HIExYUCAibHhf bWVzc2FnZV9zZW5kOiBkc3AgY3Jhc2hlZFxuIik7CisJCXJldHVybiAtRUFHQUlOOworCX0KKwor CWx4X21lc3NhZ2VfZHVtcChybWgpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGx4X21l c3NhZ2Vfc2VuZF9hdG9taWMoc3RydWN0IGx4NjQ2NGVzICpjaGlwLCBzdHJ1Y3QgbHhfcm1oICpy bWgpCit7CisJdTMyIHJlZyA9IEVEX0RTUF9USU1FRF9PVVQ7CisJaW50IGR3bG9vcDsKKworCWlm IChseF9kc3BfcmVnX3JlYWQoY2hpcCwgZVJlZ19DU00pICYgKFJlZ19DU01fTUMgfCBSZWdfQ1NN X01SKSkgeworCQlzbmRfcHJpbnRrKEtFUk5fRVJSIExYUCAiUElPU2VuZE1lc3NhZ2UgZVJlZ19D U00gJXhcbiIsIHJlZyk7CisJCXJldHVybiAtRUJVU1k7CisJfQorCisJLyogd3JpdGUgY29tbWFu ZCAqLworCWx4X2RzcF9yZWdfd3JpdGVidWYoY2hpcCwgZVJlZ19DUk0xLCBybWgtPmNtZCwgcm1o LT5jbWRfbGVuKTsKKworCS8qIE1pY29CbGF6ZSBnb2dvZ28gKi8KKwlseF9kc3BfcmVnX3dyaXRl KGNoaXAsIGVSZWdfQ1NNLCBSZWdfQ1NNX01DKTsKKworCS8qIHdhaXQgZm9yIGludGVycnVwdCB0 byBhbnN3ZXIgKi8KKwlmb3IgKGR3bG9vcCA9IDA7IGR3bG9vcCAhPSBYSUxJTlhfVElNRU9VVF9N UyAqIDEwMDA7ICsrZHdsb29wKSB7CisJCWlmIChseF9kc3BfcmVnX3JlYWQoY2hpcCwgZVJlZ19D U00pICYgUmVnX0NTTV9NUikgeworCQkJaWYgKHJtaC0+ZHNwX3N0YXQgPT0gMCkKKwkJCQlyZWcg PSBseF9kc3BfcmVnX3JlYWQoY2hpcCwgZVJlZ19DUk0xKTsKKwkJCWVsc2UKKwkJCQlyZWcgPSBT VUNDRVNTOworCQkJZ290byBwb2xsaW5nX3N1Y2Nlc3NmdWw7CisJCX0gZWxzZQorCQkJdWRlbGF5 KDEpOworCX0KKwlzbmRfcHJpbnRrKEtFUk5fV0FSTklORyBMWFAgIlRJTUVPVVQgbHhfbWVzc2Fn ZV9zZW5kX2F0b21pYyEgIgorCQkgICAicG9sbGluZyBmYWlsZWRcbiIpOworCitwb2xsaW5nX3N1 Y2Nlc3NmdWw6CisJaWYgKChyZWcgJiBFUlJPUl9WQUxVRSkgPT0gMCkgeworCQkvKiByZWFkIHJl c3BvbnNlICovCisJCWlmIChybWgtPnN0YXRfbGVuKSB7CisJCQlzbmRfQlVHX09OKHJtaC0+c3Rh dF9sZW4gPj0gKFJFR19DUk1fTlVNQkVSLTEpKTsKKwkJCWx4X2RzcF9yZWdfcmVhZGJ1ZihjaGlw LCBlUmVnX0NSTTIsIHJtaC0+c3RhdCwKKwkJCQkJICAgcm1oLT5zdGF0X2xlbik7CisJCX0KKwl9 IGVsc2UKKwkJc25kX3ByaW50ayhMWFAgInJtaCBlcnJvcjogJTA4eFxuIiwgcmVnKTsKKworCS8q IGNsZWFyIFJlZ19DU01fTVIgKi8KKwlseF9kc3BfcmVnX3dyaXRlKGNoaXAsIGVSZWdfQ1NNLCAw KTsKKworCXN3aXRjaCAocmVnKSB7CisJY2FzZSBFRF9EU1BfVElNRURfT1VUOgorCQlzbmRfcHJp bnRrKEtFUk5fV0FSTklORyBMWFAgImx4X21lc3NhZ2Vfc2VuZDogZHNwIHRpbWVvdXRcbiIpOwor CQlyZXR1cm4gLUVUSU1FRE9VVDsKKworCWNhc2UgRURfRFNQX0NSQVNIRUQ6CisJCXNuZF9wcmlu dGsoS0VSTl9XQVJOSU5HIExYUCAibHhfbWVzc2FnZV9zZW5kOiBkc3AgY3Jhc2hlZFxuIik7CisJ CXJldHVybiAtRUFHQUlOOworCX0KKworCWx4X21lc3NhZ2VfZHVtcChybWgpOworCisJcmV0dXJu IHJlZzsKK30KKworCisvKiBsb3ctbGV2ZWwgZHNwIGFjY2VzcyAqLworaW50IF9fZGV2aW5pdCBs eF9kc3BfZ2V0X3ZlcnNpb24oc3RydWN0IGx4NjQ2NGVzICpjaGlwLCB1MzIgKnJkc3BfdmVyc2lv bikKK3sKKwl1MTYgcmV0OworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJx c2F2ZSgmY2hpcC0+bXNnX2xvY2ssIGZsYWdzKTsKKworCWx4X21lc3NhZ2VfaW5pdCgmY2hpcC0+ cm1oLCBDTURfMDFfR0VUX1NZU19DRkcpOworCXJldCA9IGx4X21lc3NhZ2Vfc2VuZF9hdG9taWMo Y2hpcCwgJmNoaXAtPnJtaCk7CisKKwkqcmRzcF92ZXJzaW9uID0gY2hpcC0+cm1oLnN0YXRbMV07 CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2hpcC0+bXNnX2xvY2ssIGZsYWdzKTsKKwlyZXR1 cm4gcmV0OworfQorCitpbnQgbHhfZHNwX2dldF9jbG9ja19mcmVxdWVuY3koc3RydWN0IGx4NjQ2 NGVzICpjaGlwLCB1MzIgKnJmcmVxKQoreworCXUxNiByZXQgPSBTVUNDRVNTOworCXVuc2lnbmVk IGxvbmcgZmxhZ3M7CisJdTMyIGZyZXFfcmF3ID0gMDsKKwl1MzIgZnJlcSA9IDA7CisJdTMyIGZy ZXF1ZW5jeSA9IDA7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmY2hpcC0+bXNnX2xvY2ssIGZsYWdz KTsKKworCWx4X21lc3NhZ2VfaW5pdCgmY2hpcC0+cm1oLCBDTURfMDFfR0VUX1NZU19DRkcpOwor CXJldCA9IGx4X21lc3NhZ2Vfc2VuZF9hdG9taWMoY2hpcCwgJmNoaXAtPnJtaCk7CisKKwlpZiAo cmV0ID09IFNVQ0NFU1MpIHsKKwkJZnJlcV9yYXcgPSBjaGlwLT5ybWguc3RhdFswXSA+PiBGUkVR X0ZJRUxEX09GRlNFVDsKKwkJZnJlcSA9IGZyZXFfcmF3ICYgWEVTX0ZSRVFfQ09VTlQ4X01BU0s7 CisKKwkJaWYgKChmcmVxIDwgWEVTX0ZSRVFfQ09VTlQ4XzQ4X01BWCkgfHwKKwkJICAgIChmcmVx ID4gWEVTX0ZSRVFfQ09VTlQ4XzQ0X01JTikpCisJCQlmcmVxdWVuY3kgPSAwOyAvKiB1bmtub3du ICovCisJCWVsc2UgaWYgKGZyZXEgPj0gWEVTX0ZSRVFfQ09VTlQ4XzQ0X01BWCkKKwkJCWZyZXF1 ZW5jeSA9IDQ0MTAwOworCQllbHNlCisJCQlmcmVxdWVuY3kgPSA0ODAwMDsKKwl9CisKKwlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZjaGlwLT5tc2dfbG9jaywgZmxhZ3MpOworCisJKnJmcmVxID0g ZnJlcXVlbmN5ICogY2hpcC0+ZnJlcV9yYXRpbzsKKworCXJldHVybiByZXQ7Cit9CisKK2ludCBs eF9kc3BfZ2V0X21hYyhzdHJ1Y3QgbHg2NDY0ZXMgKmNoaXAsIHU4ICptYWNfYWRkcmVzcykKK3sK Kwl1MzIgbWFjbXNiLCBtYWNsc2I7CisKKwltYWNtc2IgPSBseF9kc3BfcmVnX3JlYWQoY2hpcCwg ZVJlZ19BRE1BQ0VTTVNCKSAmIDB4MDBGRkZGRkY7CisJbWFjbHNiID0gbHhfZHNwX3JlZ19yZWFk KGNoaXAsIGVSZWdfQURNQUNFU0xTQikgJiAweDAwRkZGRkZGOworCisJLyogdG9kbzogZW5kaWFu ZXNzIGhhbmRsaW5nICovCisJbWFjX2FkZHJlc3NbNV0gPSAoKHU4ICopKCZtYWNsc2IpKVswXTsK KwltYWNfYWRkcmVzc1s0XSA9ICgodTggKikoJm1hY2xzYikpWzFdOworCW1hY19hZGRyZXNzWzNd ID0gKCh1OCAqKSgmbWFjbHNiKSlbMl07CisJbWFjX2FkZHJlc3NbMl0gPSAoKHU4ICopKCZtYWNt c2IpKVswXTsKKwltYWNfYWRkcmVzc1sxXSA9ICgodTggKikoJm1hY21zYikpWzFdOworCW1hY19h ZGRyZXNzWzBdID0gKCh1OCAqKSgmbWFjbXNiKSlbMl07CisKKwlyZXR1cm4gMDsKK30KKworCitp bnQgbHhfZHNwX3NldF9ncmFudWxhcml0eShzdHJ1Y3QgbHg2NDY0ZXMgKmNoaXAsIHUzMiBncmFu KQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJaW50IHJldDsKKworCXNwaW5fbG9ja19pcnFz YXZlKCZjaGlwLT5tc2dfbG9jaywgZmxhZ3MpOworCisJbHhfbWVzc2FnZV9pbml0KCZjaGlwLT5y bWgsIENNRF8wMl9TRVRfR1JBTlVMQVJJVFkpOworCWNoaXAtPnJtaC5jbWRbMF0gfD0gZ3JhbjsK KworCXJldCA9IGx4X21lc3NhZ2Vfc2VuZF9hdG9taWMoY2hpcCwgJmNoaXAtPnJtaCk7CisJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmY2hpcC0+bXNnX2xvY2ssIGZsYWdzKTsKKwlyZXR1cm4gcmV0 OworfQorCitpbnQgbHhfZHNwX3JlYWRfYXN5bmNfZXZlbnRzKHN0cnVjdCBseDY0NjRlcyAqY2hp cCwgdTMyICpkYXRhKQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJaW50IHJldDsKKworCXNw aW5fbG9ja19pcnFzYXZlKCZjaGlwLT5tc2dfbG9jaywgZmxhZ3MpOworCisJbHhfbWVzc2FnZV9p bml0KCZjaGlwLT5ybWgsIENNRF8wNF9HRVRfRVZFTlQpOworCWNoaXAtPnJtaC5zdGF0X2xlbiA9 IDk7CS8qIHdlIGRvbid0IG5lY2Vzc2FyaWx5IG5lZWQgdGhlIGZ1bGwgbGVuZ3RoICovCisKKwly ZXQgPSBseF9tZXNzYWdlX3NlbmRfYXRvbWljKGNoaXAsICZjaGlwLT5ybWgpOworCisJaWYgKCFy ZXQpCisJCW1lbWNweShkYXRhLCBjaGlwLT5ybWguc3RhdCwgY2hpcC0+cm1oLnN0YXRfbGVuICog c2l6ZW9mKHUzMikpOworCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2hpcC0+bXNnX2xvY2ss IGZsYWdzKTsKKwlyZXR1cm4gcmV0OworfQorCisjZGVmaW5lIENTRVNfVElNRU9VVCAgICAgICAg MTAwICAgICAvKiBtaWNyb3NlY29uZHMgKi8KKyNkZWZpbmUgQ1NFU19DRSAgICAgICAgICAgICAw eDAwMDEKKyNkZWZpbmUgQ1NFU19CUk9BRENBU1QgICAgICAweDAwMDIKKyNkZWZpbmUgQ1NFU19V UERBVEVfTERTViAgICAweDAwMDQKKworaW50IGx4X2RzcF9lc19jaGVja19waXBlbGluZShzdHJ1 Y3QgbHg2NDY0ZXMgKmNoaXApCit7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpICE9IENTRVNf VElNRU9VVDsgKytpKSB7CisJCS8qCisJCSAqIGxlIGJpdCBDU0VTX1VQREFURV9MRFNWIGVzdCDD g8KgIDEgZMODwqlzIHF1ZSBsZSBtYWNwcm9nIGVzdCBwcmV0LgorCQkgKiBpbCByZS1wYXNzZSDD g8KgIDAgbG9yc3F1ZSBsZSBwcmVtaWVyIHJlYWQgYSDDg8KpdMODwqkgZmFpdC4KKwkJICogcG91 ciBsJ2luc3RhbnQgb24gcmV0aXJlIGxlIHRlc3QgY2FyIGNlIGJpdCBwYXNzZSBhIDEgZW52aXJv biAyMDAgw4PCoCA0MDAgbXMKKwkJICogYXByw4PCqXMgcXVlIGxlIHJlZ2lzdHJlIGNvbmZFUyDD g8KgIMODwql0w4PCqSDDg8KpY3JpdCAoa2ljayBkdSB4aWxpbnggRVMpLgorCQkgKgorCQkgKiBP biBuZSB0ZXN0ZSBxdWUgbGUgYml0IENFLgorCQkgKiAqLworCisJCXUzMiBjc2VzID0gbHhfZHNw X3JlZ19yZWFkKGNoaXAsIGVSZWdfQ1NFUyk7CisKKwkJaWYgKChjc2VzICYgQ1NFU19DRSkgPT0g MCkKKwkJCXJldHVybiAwOworCisJCXVkZWxheSgxKTsKKwl9CisKKwlyZXR1cm4gLUVUSU1FRE9V VDsKK30KKworCisjZGVmaW5lIFBJUEVfSU5GT19UT19DTUQoY2FwdHVyZSwgcGlwZSkJCQkJCVwK KwkoKHUzMikoKHUzMikocGlwZSkgfCAoKGNhcHR1cmUpID8gSURfSVNfQ0FQVFVSRSA6IDBMKSkg PDwgSURfT0ZGU0VUKQorCisKKworLyogbG93LWxldmVsIHBpcGUgaGFuZGxpbmcgKi8KK2ludCBs eF9waXBlX2FsbG9jYXRlKHN0cnVjdCBseDY0NjRlcyAqY2hpcCwgdTMyIHBpcGUsIGludCBpc19j YXB0dXJlLAorCQkgICAgIGludCBjaGFubmVscykKK3sKKwlpbnQgZXJyOworCXVuc2lnbmVkIGxv bmcgZmxhZ3M7CisKKwl1MzIgcGlwZV9jbWQgPSBQSVBFX0lORk9fVE9fQ01EKGlzX2NhcHR1cmUs IHBpcGUpOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmNoaXAtPm1zZ19sb2NrLCBmbGFncyk7CisJ bHhfbWVzc2FnZV9pbml0KCZjaGlwLT5ybWgsIENNRF8wNl9BTExPQ0FURV9QSVBFKTsKKworCWNo aXAtPnJtaC5jbWRbMF0gfD0gcGlwZV9jbWQ7CisJY2hpcC0+cm1oLmNtZFswXSB8PSBjaGFubmVs czsKKworCWVyciA9IGx4X21lc3NhZ2Vfc2VuZF9hdG9taWMoY2hpcCwgJmNoaXAtPnJtaCk7CisJ c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2hpcC0+bXNnX2xvY2ssIGZsYWdzKTsKKworCWlmIChl cnIgIT0gU1VDQ0VTUykKKwkJc25kX3ByaW50ayhLRVJOX0VSUiAibHg2NDY0ZXM6IGNvdWxkIG5v dCBhbGxvY2F0ZSBwaXBlXG4iKTsKKworCXJldHVybiBlcnI7Cit9CisKK2ludCBseF9waXBlX3Jl bGVhc2Uoc3RydWN0IGx4NjQ2NGVzICpjaGlwLCB1MzIgcGlwZSwgaW50IGlzX2NhcHR1cmUpCit7 CisJaW50IGVycjsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJdTMyIHBpcGVfY21kID0gUElQ RV9JTkZPX1RPX0NNRChpc19jYXB0dXJlLCBwaXBlKTsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZj aGlwLT5tc2dfbG9jaywgZmxhZ3MpOworCWx4X21lc3NhZ2VfaW5pdCgmY2hpcC0+cm1oLCBDTURf MDdfUkVMRUFTRV9QSVBFKTsKKworCWNoaXAtPnJtaC5jbWRbMF0gfD0gcGlwZV9jbWQ7CisKKwll cnIgPSBseF9tZXNzYWdlX3NlbmRfYXRvbWljKGNoaXAsICZjaGlwLT5ybWgpOworCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJmNoaXAtPm1zZ19sb2NrLCBmbGFncyk7CisKKwlyZXR1cm4gZXJyOwor fQorCitpbnQgbHhfYnVmZmVyX2FzayhzdHJ1Y3QgbHg2NDY0ZXMgKmNoaXAsIHUzMiBwaXBlLCBp bnQgaXNfY2FwdHVyZSwKKwkJICB1MzIgKnJfbmVlZGVkLCB1MzIgKnJfZnJlZWQsIHUzMiAqc2l6 ZV9hcnJheSkKK3sKKwlpbnQgZXJyOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwl1MzIgcGlw ZV9jbWQgPSBQSVBFX0lORk9fVE9fQ01EKGlzX2NhcHR1cmUsIHBpcGUpOworCisjaWZkZWYgQ09O RklHX1NORF9ERUJVRworCWlmIChzaXplX2FycmF5KQorCQltZW1zZXQoc2l6ZV9hcnJheSwgMCwg c2l6ZW9mKHUzMikqTUFYX1NUUkVBTV9CVUZGRVIpOworI2VuZGlmCisKKwkqcl9uZWVkZWQgPSAw OworCSpyX2ZyZWVkID0gMDsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZjaGlwLT5tc2dfbG9jaywg ZmxhZ3MpOworCWx4X21lc3NhZ2VfaW5pdCgmY2hpcC0+cm1oLCBDTURfMDhfQVNLX0JVRkZFUlMp OworCisJY2hpcC0+cm1oLmNtZFswXSB8PSBwaXBlX2NtZDsKKworCWVyciA9IGx4X21lc3NhZ2Vf c2VuZF9hdG9taWMoY2hpcCwgJmNoaXAtPnJtaCk7CisKKwlpZiAoIWVycikgeworCQlpbnQgaTsK KwkJZm9yIChpID0gMDsgaSA8IE1BWF9TVFJFQU1fQlVGRkVSOyArK2kpIHsKKwkJCXUzMiBzdGF0 ID0gY2hpcC0+cm1oLnN0YXRbaV07CisJCQlpZiAoc3RhdCAmIChCRl9FT0IgPDwgQlVGRl9GTEFH U19PRkZTRVQpKSB7CisJCQkJLyogZmluaXNoZWQgKi8KKwkJCQkqcl9mcmVlZCArPSAxOworCQkJ CWlmIChzaXplX2FycmF5KQorCQkJCQlzaXplX2FycmF5W2ldID0gc3RhdCAmIE1BU0tfREFUQV9T SVpFOworCQkJfSBlbHNlIGlmICgoc3RhdCAmIChCRl9WQUxJRCA8PCBCVUZGX0ZMQUdTX09GRlNF VCkpCisJCQkJICAgPT0gMCkKKwkJCQkvKiBmcmVlICovCisJCQkJKnJfbmVlZGVkICs9IDE7CisJ CX0KKworI2lmIDAKKwkJc25kX3ByaW50ZGQoTFhQICJDTURfMDhfQVNLX0JVRkZFUlM6IG5lZWRl ZCAlZCwgZnJlZWQgJWRcbiIsCisJCQkgICAgKnJfbmVlZGVkLCAqcl9mcmVlZCk7CisJCWZvciAo aSA9IDA7IGkgPCBNQVhfU1RSRUFNX0JVRkZFUjsgKytpKSB7CisJCQlmb3IgKGkgPSAwOyBpICE9 IGNoaXAtPnJtaC5zdGF0X2xlbjsgKytpKQorCQkJCXNuZF9wcmludGRkKCIgIHN0YXRbJWRdOiAl eCwgJXhcbiIsIGksCisJCQkJCSAgICBjaGlwLT5ybWguc3RhdFtpXSwKKwkJCQkJICAgIGNoaXAt PnJtaC5zdGF0W2ldICYgTUFTS19EQVRBX1NJWkUpOworCQl9CisjZW5kaWYKKwl9CisKKwlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZjaGlwLT5tc2dfbG9jaywgZmxhZ3MpOworCXJldHVybiBlcnI7 Cit9CisKKworaW50IGx4X3BpcGVfc3RvcChzdHJ1Y3QgbHg2NDY0ZXMgKmNoaXAsIHUzMiBwaXBl LCBpbnQgaXNfY2FwdHVyZSkKK3sKKwlpbnQgZXJyOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisK Kwl1MzIgcGlwZV9jbWQgPSBQSVBFX0lORk9fVE9fQ01EKGlzX2NhcHR1cmUsIHBpcGUpOworCisJ c3Bpbl9sb2NrX2lycXNhdmUoJmNoaXAtPm1zZ19sb2NrLCBmbGFncyk7CisJbHhfbWVzc2FnZV9p bml0KCZjaGlwLT5ybWgsIENNRF8wOV9TVE9QX1BJUEUpOworCisJY2hpcC0+cm1oLmNtZFswXSB8 PSBwaXBlX2NtZDsKKworCWVyciA9IGx4X21lc3NhZ2Vfc2VuZF9hdG9taWMoY2hpcCwgJmNoaXAt PnJtaCk7CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjaGlwLT5tc2dfbG9jaywgZmxhZ3Mp OworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgbHhfcGlwZV90b2dnbGVfc3RhdGUoc3Ry dWN0IGx4NjQ2NGVzICpjaGlwLCB1MzIgcGlwZSwgaW50IGlzX2NhcHR1cmUpCit7CisJaW50IGVy cjsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJdTMyIHBpcGVfY21kID0gUElQRV9JTkZPX1RP X0NNRChpc19jYXB0dXJlLCBwaXBlKTsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZjaGlwLT5tc2df bG9jaywgZmxhZ3MpOworCWx4X21lc3NhZ2VfaW5pdCgmY2hpcC0+cm1oLCBDTURfMEJfVE9HR0xF X1BJUEVfU1RBVEUpOworCisJY2hpcC0+cm1oLmNtZFswXSB8PSBwaXBlX2NtZDsKKworCWVyciA9 IGx4X21lc3NhZ2Vfc2VuZF9hdG9taWMoY2hpcCwgJmNoaXAtPnJtaCk7CisKKwlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZjaGlwLT5tc2dfbG9jaywgZmxhZ3MpOworCXJldHVybiBlcnI7Cit9CisK KworaW50IGx4X3BpcGVfc3RhcnQoc3RydWN0IGx4NjQ2NGVzICpjaGlwLCB1MzIgcGlwZSwgaW50 IGlzX2NhcHR1cmUpCit7CisJaW50IGVycjsKKworCWVyciA9IGx4X3BpcGVfd2FpdF9mb3JfaWRs ZShjaGlwLCBwaXBlLCBpc19jYXB0dXJlKTsKKwlpZiAoZXJyIDwgMCkKKwkJcmV0dXJuIGVycjsK KworCWVyciA9IGx4X3BpcGVfdG9nZ2xlX3N0YXRlKGNoaXAsIHBpcGUsIGlzX2NhcHR1cmUpOwor CisJcmV0dXJuIGVycjsKK30KKworaW50IGx4X3BpcGVfcGF1c2Uoc3RydWN0IGx4NjQ2NGVzICpj aGlwLCB1MzIgcGlwZSwgaW50IGlzX2NhcHR1cmUpCit7CisJaW50IGVyciA9IDA7CisKKwllcnIg PSBseF9waXBlX3dhaXRfZm9yX3N0YXJ0KGNoaXAsIHBpcGUsIGlzX2NhcHR1cmUpOworCWlmIChl cnIgPCAwKQorCQlyZXR1cm4gZXJyOworCisJZXJyID0gbHhfcGlwZV90b2dnbGVfc3RhdGUoY2hp cCwgcGlwZSwgaXNfY2FwdHVyZSk7CisKKwlyZXR1cm4gZXJyOworfQorCisKK2ludCBseF9waXBl X3NhbXBsZV9jb3VudChzdHJ1Y3QgbHg2NDY0ZXMgKmNoaXAsIHUzMiBwaXBlLCBpbnQgaXNfY2Fw dHVyZSwKKwkJCSB1NjQgKnJzYW1wbGVfY291bnQpCit7CisJaW50IGVycjsKKwl1bnNpZ25lZCBs b25nIGZsYWdzOworCisJdTMyIHBpcGVfY21kID0gUElQRV9JTkZPX1RPX0NNRChpc19jYXB0dXJl LCBwaXBlKTsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZjaGlwLT5tc2dfbG9jaywgZmxhZ3MpOwor CWx4X21lc3NhZ2VfaW5pdCgmY2hpcC0+cm1oLCBDTURfMEFfR0VUX1BJUEVfU1BMX0NPVU5UKTsK KworCWNoaXAtPnJtaC5jbWRbMF0gfD0gcGlwZV9jbWQ7CisJY2hpcC0+cm1oLnN0YXRfbGVuID0g MjsJLyogbmVlZCBhbGwgd29yZHMgaGVyZSEgKi8KKworCWVyciA9IGx4X21lc3NhZ2Vfc2VuZF9h dG9taWMoY2hpcCwgJmNoaXAtPnJtaCk7IC8qIGRvbid0IHNsZWVwISAqLworCisJaWYgKGVyciAh PSBTVUNDRVNTKQorCQlzbmRfcHJpbnRrKEtFUk5fRVJSCisJCQkgICAibHg2NDY0ZXM6IGNvdWxk IG5vdCBxdWVyeSBwaXBlJ3Mgc2FtcGxlIGNvdW50XG4iKTsKKwllbHNlIHsKKwkJKnJzYW1wbGVf Y291bnQgPSAoKHU2NCkoY2hpcC0+cm1oLnN0YXRbMF0gJiBNQVNLX1NQTF9DT1VOVF9ISSkKKwkJ CQkgIDw8IDI0KSAgICAgLyogaGkgcGFydCAqLworCQkJKyBjaGlwLT5ybWguc3RhdFsxXTsgLyog bG8gcGFydCAqLworCX0KKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNoaXAtPm1zZ19sb2Nr LCBmbGFncyk7CisJcmV0dXJuIGVycjsKK30KKworaW50IGx4X3BpcGVfc3RhdGUoc3RydWN0IGx4 NjQ2NGVzICpjaGlwLCB1MzIgcGlwZSwgaW50IGlzX2NhcHR1cmUsIHUxNiAqcnN0YXRlKQorewor CWludCBlcnI7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXUzMiBwaXBlX2NtZCA9IFBJUEVf SU5GT19UT19DTUQoaXNfY2FwdHVyZSwgcGlwZSk7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmY2hp cC0+bXNnX2xvY2ssIGZsYWdzKTsKKwlseF9tZXNzYWdlX2luaXQoJmNoaXAtPnJtaCwgQ01EXzBB X0dFVF9QSVBFX1NQTF9DT1VOVCk7CisKKwljaGlwLT5ybWguY21kWzBdIHw9IHBpcGVfY21kOwor CisJZXJyID0gbHhfbWVzc2FnZV9zZW5kX2F0b21pYyhjaGlwLCAmY2hpcC0+cm1oKTsKKworCWlm IChlcnIgIT0gU1VDQ0VTUykKKwkJc25kX3ByaW50ayhLRVJOX0VSUiAibHg2NDY0ZXM6IGNvdWxk IG5vdCBxdWVyeSBwaXBlJ3Mgc3RhdGVcbiIpOworCWVsc2UKKwkJKnJzdGF0ZSA9IChjaGlwLT5y bWguc3RhdFswXSA+PiBQU1RBVEVfT0ZGU0VUKSAmIDB4MEY7CisKKwlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZjaGlwLT5tc2dfbG9jaywgZmxhZ3MpOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRp YyBpbnQgbHhfcGlwZV93YWl0X2Zvcl9zdGF0ZShzdHJ1Y3QgbHg2NDY0ZXMgKmNoaXAsIHUzMiBw aXBlLAorCQkJCSAgaW50IGlzX2NhcHR1cmUsIHUxNiBzdGF0ZSkKK3sKKwlpbnQgaTsKKworCS8q IG1heCAyKlBDTU9ubHlHcmFudWxhcml0eSA9IDIqMTAyNCBhdCA0NDEwMCA9IDwgNTAgbXM6CisJ ICogdGltZW91dCA1MCBtcyAqLworCWZvciAoaSA9IDA7IGkgIT0gNTA7ICsraSkgeworCQl1MTYg Y3VycmVudF9zdGF0ZTsKKwkJaW50IGVyciA9IGx4X3BpcGVfc3RhdGUoY2hpcCwgcGlwZSwgaXNf Y2FwdHVyZSwgJmN1cnJlbnRfc3RhdGUpOworCisJCWlmIChlcnIgPCAwKQorCQkJcmV0dXJuIGVy cjsKKworCQlpZiAoY3VycmVudF9zdGF0ZSA9PSBzdGF0ZSkKKwkJCXJldHVybiAwOworCisJCW1k ZWxheSgxKTsKKwl9CisKKwlyZXR1cm4gLUVUSU1FRE9VVDsKK30KKworaW50IGx4X3BpcGVfd2Fp dF9mb3Jfc3RhcnQoc3RydWN0IGx4NjQ2NGVzICpjaGlwLCB1MzIgcGlwZSwgaW50IGlzX2NhcHR1 cmUpCit7CisJcmV0dXJuIGx4X3BpcGVfd2FpdF9mb3Jfc3RhdGUoY2hpcCwgcGlwZSwgaXNfY2Fw dHVyZSwgUFNUQVRFX1JVTik7Cit9CisKK2ludCBseF9waXBlX3dhaXRfZm9yX2lkbGUoc3RydWN0 IGx4NjQ2NGVzICpjaGlwLCB1MzIgcGlwZSwgaW50IGlzX2NhcHR1cmUpCit7CisJcmV0dXJuIGx4 X3BpcGVfd2FpdF9mb3Jfc3RhdGUoY2hpcCwgcGlwZSwgaXNfY2FwdHVyZSwgUFNUQVRFX0lETEUp OworfQorCisvKiBsb3ctbGV2ZWwgc3RyZWFtIGhhbmRsaW5nICovCitpbnQgbHhfc3RyZWFtX3Nl dF9zdGF0ZShzdHJ1Y3QgbHg2NDY0ZXMgKmNoaXAsIHUzMiBwaXBlLAorCQkJICAgICAgIGludCBp c19jYXB0dXJlLCBzdHJlYW1fc3RhdGVfdCBzdGF0ZSkKK3sKKwlpbnQgZXJyOworCXVuc2lnbmVk IGxvbmcgZmxhZ3M7CisKKwl1MzIgcGlwZV9jbWQgPSBQSVBFX0lORk9fVE9fQ01EKGlzX2NhcHR1 cmUsIHBpcGUpOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmNoaXAtPm1zZ19sb2NrLCBmbGFncyk7 CisJbHhfbWVzc2FnZV9pbml0KCZjaGlwLT5ybWgsIENNRF8xM19TRVRfU1RSRUFNX1NUQVRFKTsK KworCWNoaXAtPnJtaC5jbWRbMF0gfD0gcGlwZV9jbWQ7CisJY2hpcC0+cm1oLmNtZFswXSB8PSBz dGF0ZTsKKworCWVyciA9IGx4X21lc3NhZ2Vfc2VuZF9hdG9taWMoY2hpcCwgJmNoaXAtPnJtaCk7 CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2hpcC0+bXNnX2xvY2ssIGZsYWdzKTsKKworCXJl dHVybiBlcnI7Cit9CisKK2ludCBseF9zdHJlYW1fc2V0X2Zvcm1hdChzdHJ1Y3QgbHg2NDY0ZXMg KmNoaXAsIHN0cnVjdCBzbmRfcGNtX3J1bnRpbWUgKnJ1bnRpbWUsCisJCQkgdTMyIHBpcGUsIGlu dCBpc19jYXB0dXJlKQoreworCWludCBlcnI7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXUz MiBwaXBlX2NtZCA9IFBJUEVfSU5GT19UT19DTUQoaXNfY2FwdHVyZSwgcGlwZSk7CisKKwl1MzIg Y2hhbm5lbHMgPSBydW50aW1lLT5jaGFubmVsczsKKworCWlmIChydW50aW1lLT5jaGFubmVscyAh PSBjaGFubmVscykKKwkJc25kX3ByaW50ayhLRVJOX0VSUiBMWFAgImNoYW5uZWwgY291bnQgbWlz bWF0Y2g6ICVkIHZzICVkIiwKKwkJCSAgIHJ1bnRpbWUtPmNoYW5uZWxzLCBjaGFubmVscyk7CisK KwlzcGluX2xvY2tfaXJxc2F2ZSgmY2hpcC0+bXNnX2xvY2ssIGZsYWdzKTsKKwlseF9tZXNzYWdl X2luaXQoJmNoaXAtPnJtaCwgQ01EXzBDX0RFRl9TVFJFQU0pOworCisJY2hpcC0+cm1oLmNtZFsw XSB8PSBwaXBlX2NtZDsKKworCWlmIChydW50aW1lLT5zYW1wbGVfYml0cyA9PSAxNikKKwkJLyog MTYgYml0IGZvcm1hdCAqLworCQljaGlwLT5ybWguY21kWzBdIHw9IChTVFJFQU1fRk1UXzE2YiA8 PCBTVFJFQU1fRk1UX09GRlNFVCk7CisKKwlpZiAoc25kX3BjbV9mb3JtYXRfbGl0dGxlX2VuZGlh bihydW50aW1lLT5mb3JtYXQpKQorCQkvKiBsaXR0bGUgZW5kaWFuL2ludGVsIGZvcm1hdCAqLwor CQljaGlwLT5ybWguY21kWzBdIHw9IChTVFJFQU1fRk1UX2ludGVsIDw8IFNUUkVBTV9GTVRfT0ZG U0VUKTsKKworCWNoaXAtPnJtaC5jbWRbMF0gfD0gY2hhbm5lbHMtMTsKKworCWVyciA9IGx4X21l c3NhZ2Vfc2VuZF9hdG9taWMoY2hpcCwgJmNoaXAtPnJtaCk7CisJc3Bpbl91bmxvY2tfaXJxcmVz dG9yZSgmY2hpcC0+bXNnX2xvY2ssIGZsYWdzKTsKKworCXJldHVybiBlcnI7Cit9CisKK2ludCBs eF9zdHJlYW1fc3RhdGUoc3RydWN0IGx4NjQ2NGVzICpjaGlwLCB1MzIgcGlwZSwgaW50IGlzX2Nh cHR1cmUsCisJCSAgICBpbnQgKnJzdGF0ZSkKK3sKKwlpbnQgZXJyOworCXVuc2lnbmVkIGxvbmcg ZmxhZ3M7CisKKwl1MzIgcGlwZV9jbWQgPSBQSVBFX0lORk9fVE9fQ01EKGlzX2NhcHR1cmUsIHBp cGUpOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmNoaXAtPm1zZ19sb2NrLCBmbGFncyk7CisJbHhf bWVzc2FnZV9pbml0KCZjaGlwLT5ybWgsIENNRF8wRV9HRVRfU1RSRUFNX1NQTF9DT1VOVCk7CisK KwljaGlwLT5ybWguY21kWzBdIHw9IHBpcGVfY21kOworCisJZXJyID0gbHhfbWVzc2FnZV9zZW5k X2F0b21pYyhjaGlwLCAmY2hpcC0+cm1oKTsKKworCSpyc3RhdGUgPSAoY2hpcC0+cm1oLnN0YXRb MF0gJiBTRl9TVEFSVCkgPyBTVEFSVF9TVEFURSA6IFBBVVNFX1NUQVRFOworCisJc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmY2hpcC0+bXNnX2xvY2ssIGZsYWdzKTsKKwlyZXR1cm4gZXJyOworfQor CitpbnQgbHhfc3RyZWFtX3NhbXBsZV9wb3NpdGlvbihzdHJ1Y3QgbHg2NDY0ZXMgKmNoaXAsIHUz MiBwaXBlLCBpbnQgaXNfY2FwdHVyZSwKKwkJCSAgICAgIHU2NCAqcl9ieXRlcG9zKQoreworCWlu dCBlcnI7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXUzMiBwaXBlX2NtZCA9IFBJUEVfSU5G T19UT19DTUQoaXNfY2FwdHVyZSwgcGlwZSk7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmY2hpcC0+ bXNnX2xvY2ssIGZsYWdzKTsKKwlseF9tZXNzYWdlX2luaXQoJmNoaXAtPnJtaCwgQ01EXzBFX0dF VF9TVFJFQU1fU1BMX0NPVU5UKTsKKworCWNoaXAtPnJtaC5jbWRbMF0gfD0gcGlwZV9jbWQ7CisK KwllcnIgPSBseF9tZXNzYWdlX3NlbmRfYXRvbWljKGNoaXAsICZjaGlwLT5ybWgpOworCisJKnJf Ynl0ZXBvcyA9ICgodTY0KSAoY2hpcC0+cm1oLnN0YXRbMF0gJiBNQVNLX1NQTF9DT1VOVF9ISSkK KwkJICAgICAgPDwgMzIpCSAgICAgLyogaGkgcGFydCAqLworCQkrIGNoaXAtPnJtaC5zdGF0WzFd OyAvKiBsbyBwYXJ0ICovCisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjaGlwLT5tc2dfbG9j aywgZmxhZ3MpOworCXJldHVybiBlcnI7Cit9CisKKy8qIGxvdy1sZXZlbCBidWZmZXIgaGFuZGxp bmcgKi8KK2ludCBseF9idWZmZXJfZ2l2ZShzdHJ1Y3QgbHg2NDY0ZXMgKmNoaXAsIHUzMiBwaXBl LCBpbnQgaXNfY2FwdHVyZSwKKwkJICAgdTMyIGJ1ZmZlcl9zaXplLCB1MzIgYnVmX2FkZHJlc3Nf bG8sIHUzMiBidWZfYWRkcmVzc19oaSwKKwkJICAgdTMyICpyX2J1ZmZlcl9pbmRleCkKK3sKKwlp bnQgZXJyOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwl1MzIgcGlwZV9jbWQgPSBQSVBFX0lO Rk9fVE9fQ01EKGlzX2NhcHR1cmUsIHBpcGUpOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmNoaXAt Pm1zZ19sb2NrLCBmbGFncyk7CisJbHhfbWVzc2FnZV9pbml0KCZjaGlwLT5ybWgsIENNRF8wRl9V UERBVEVfQlVGRkVSKTsKKworCWNoaXAtPnJtaC5jbWRbMF0gfD0gcGlwZV9jbWQ7CisJY2hpcC0+ cm1oLmNtZFswXSB8PSBCRl9OT1RJRllfRU9COyAvKiByZXF1ZXN0IGludGVycnVwdCBub3RpZmlj YXRpb24gKi8KKworCS8qIHRvZG86IHBhdXNlIHJlcXVlc3QsIGNpcmN1bGFyIGJ1ZmZlciAqLwor CisJY2hpcC0+cm1oLmNtZFsxXSA9IGJ1ZmZlcl9zaXplICYgTUFTS19EQVRBX1NJWkU7CisJY2hp cC0+cm1oLmNtZFsyXSA9IGJ1Zl9hZGRyZXNzX2xvOworCisJaWYgKGJ1Zl9hZGRyZXNzX2hpKSB7 CisJCWNoaXAtPnJtaC5jbWRfbGVuID0gNDsKKwkJY2hpcC0+cm1oLmNtZFszXSA9IGJ1Zl9hZGRy ZXNzX2hpOworCQljaGlwLT5ybWguY21kWzBdIHw9IEJGXzY0QklUU19BRFI7CisJfQorCisJZXJy ID0gbHhfbWVzc2FnZV9zZW5kX2F0b21pYyhjaGlwLCAmY2hpcC0+cm1oKTsKKworCWlmIChlcnIg PT0gU1VDQ0VTUykgeworCQkqcl9idWZmZXJfaW5kZXggPSBjaGlwLT5ybWguc3RhdFswXTsKKwkJ Z290byBkb25lOworCX0KKworCWlmIChlcnIgPT0gRUJfUkJVRkZFUlNfVEFCTEVfT1ZFUkZMT1cp CisJCXNuZF9wcmludGsoTFhQICJseF9idWZmZXJfZ2l2ZSBFQl9SQlVGRkVSU19UQUJMRV9PVkVS RkxPV1xuIik7CisKKwlpZiAoZXJyID09IEVCX0lOVkFMSURfU1RSRUFNKQorCQlzbmRfcHJpbnRr KExYUCAibHhfYnVmZmVyX2dpdmUgRUJfSU5WQUxJRF9TVFJFQU1cbiIpOworCisJaWYgKGVyciA9 PSBFQl9DTURfUkVGVVNFRCkKKwkJc25kX3ByaW50ayhMWFAgImx4X2J1ZmZlcl9naXZlIEVCX0NN RF9SRUZVU0VEXG4iKTsKKworIGRvbmU6CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2hpcC0+ bXNnX2xvY2ssIGZsYWdzKTsKKwlyZXR1cm4gZXJyOworfQorCitpbnQgbHhfYnVmZmVyX2ZyZWUo c3RydWN0IGx4NjQ2NGVzICpjaGlwLCB1MzIgcGlwZSwgaW50IGlzX2NhcHR1cmUsCisJCSAgIHUz MiAqcl9idWZmZXJfc2l6ZSkKK3sKKwlpbnQgZXJyOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisK Kwl1MzIgcGlwZV9jbWQgPSBQSVBFX0lORk9fVE9fQ01EKGlzX2NhcHR1cmUsIHBpcGUpOworCisJ c3Bpbl9sb2NrX2lycXNhdmUoJmNoaXAtPm1zZ19sb2NrLCBmbGFncyk7CisJbHhfbWVzc2FnZV9p bml0KCZjaGlwLT5ybWgsIENNRF8xMV9DQU5DRUxfQlVGRkVSKTsKKworCWNoaXAtPnJtaC5jbWRb MF0gfD0gcGlwZV9jbWQ7CisJY2hpcC0+cm1oLmNtZFswXSB8PSBNQVNLX0JVRkZFUl9JRDsgLyog YXNrIGZvciB0aGUgY3VycmVudCBidWZmZXI6IHRoZQorCQkJCQkgICAgICogbWljcm9ibGF6ZSB3 aWxsIHNlZWsgZm9yIGl0ICovCisKKwllcnIgPSBseF9tZXNzYWdlX3NlbmRfYXRvbWljKGNoaXAs ICZjaGlwLT5ybWgpOworCisJaWYgKGVyciA9PSBTVUNDRVNTKQorCQkqcl9idWZmZXJfc2l6ZSA9 IGNoaXAtPnJtaC5zdGF0WzBdICAmIE1BU0tfREFUQV9TSVpFOworCisJc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmY2hpcC0+bXNnX2xvY2ssIGZsYWdzKTsKKwlyZXR1cm4gZXJyOworfQorCitpbnQg bHhfYnVmZmVyX2NhbmNlbChzdHJ1Y3QgbHg2NDY0ZXMgKmNoaXAsIHUzMiBwaXBlLCBpbnQgaXNf Y2FwdHVyZSwKKwkJICAgICB1MzIgYnVmZmVyX2luZGV4KQoreworCWludCBlcnI7CisJdW5zaWdu ZWQgbG9uZyBmbGFnczsKKworCXUzMiBwaXBlX2NtZCA9IFBJUEVfSU5GT19UT19DTUQoaXNfY2Fw dHVyZSwgcGlwZSk7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmY2hpcC0+bXNnX2xvY2ssIGZsYWdz KTsKKwlseF9tZXNzYWdlX2luaXQoJmNoaXAtPnJtaCwgQ01EXzExX0NBTkNFTF9CVUZGRVIpOwor CisJY2hpcC0+cm1oLmNtZFswXSB8PSBwaXBlX2NtZDsKKwljaGlwLT5ybWguY21kWzBdIHw9IGJ1 ZmZlcl9pbmRleDsKKworCWVyciA9IGx4X21lc3NhZ2Vfc2VuZF9hdG9taWMoY2hpcCwgJmNoaXAt PnJtaCk7CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjaGlwLT5tc2dfbG9jaywgZmxhZ3Mp OworCXJldHVybiBlcnI7Cit9CisKKworLyogbG93LWxldmVsIGdhaW4vcGVhayBoYW5kbGluZwor ICoKKyAqIFx0b2RvOiBjYW4gd2UgdW5tdXRlIGNhcHR1cmUvcGxheWJhY2sgY2hhbm5lbHMgaW5k ZXBlbmRlbnRseT8KKyAqCisgKiAqLworaW50IGx4X2xldmVsX3VubXV0ZShzdHJ1Y3QgbHg2NDY0 ZXMgKmNoaXAsIGludCBpc19jYXB0dXJlLCBpbnQgdW5tdXRlKQoreworCWludCBlcnI7CisJdW5z aWduZWQgbG9uZyBmbGFnczsKKworCS8qIGJpdCBzZXQgdG8gMTogY2hhbm5lbCBtdXRlZCAqLwor CXU2NCBtdXRlX21hc2sgPSB1bm11dGUgPyAwIDogMHhGRkZGRkZGRkZGRkZGRkZGTExVOworCisJ c3Bpbl9sb2NrX2lycXNhdmUoJmNoaXAtPm1zZ19sb2NrLCBmbGFncyk7CisJbHhfbWVzc2FnZV9p bml0KCZjaGlwLT5ybWgsIENNRF8wRF9TRVRfTVVURSk7CisKKwljaGlwLT5ybWguY21kWzBdIHw9 IFBJUEVfSU5GT19UT19DTUQoaXNfY2FwdHVyZSwgMCk7CisKKwljaGlwLT5ybWguY21kWzFdID0g KHUzMikobXV0ZV9tYXNrID4+ICh1NjQpMzIpOwkgICAgICAgLyogaGkgcGFydCAqLworCWNoaXAt PnJtaC5jbWRbMl0gPSAodTMyKShtdXRlX21hc2sgJiAodTY0KTB4RkZGRkZGRkYpOyAvKiBsbyBw YXJ0ICovCisKKwlzbmRfcHJpbnRrKCJtdXRlICV4ICV4ICV4XG4iLCBjaGlwLT5ybWguY21kWzBd LCBjaGlwLT5ybWguY21kWzFdLAorCQkgICBjaGlwLT5ybWguY21kWzJdKTsKKworCWVyciA9IGx4 X21lc3NhZ2Vfc2VuZF9hdG9taWMoY2hpcCwgJmNoaXAtPnJtaCk7CisKKwlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZjaGlwLT5tc2dfbG9jaywgZmxhZ3MpOworCXJldHVybiBlcnI7Cit9CisKK3N0 YXRpYyB1MzIgcGVha19tYXBbXSA9IHsKKwkweDAwMDAwMTA5LCAvKiAtOTAuMzA4ZEIgKi8KKwkw eDAwMDAwODNCLCAvKiAtNzIuMjQ3ZEIgKi8KKwkweDAwMDAyMEM0LCAvKiAtNjAuMjA1ZEIgKi8K KwkweDAwMDA4MjczLCAvKiAtNDguMDMwZEIgKi8KKwkweDAwMDIwNzU2LCAvKiAtMzYuMDA1ZEIg Ki8KKwkweDAwMDQwQzM3LCAvKiAtMzAuMDAxZEIgKi8KKwkweDAwMDgxMzg1LCAvKiAtMjQuMDAy ZEIgKi8KKwkweDAwMTAxRDNGLCAvKiAtMTguMDAwZEIgKi8KKwkweDAwMTZDMzEwLCAvKiAtMTUu MDAwZEIgKi8KKwkweDAwMjAyNkYyLCAvKiAtMTIuMDAxZEIgKi8KKwkweDAwMkQ2QTg2LCAvKiAt OS4wMDBkQiAqLworCTB4MDA0MDI2RTYsIC8qIC02LjAwNGRCICovCisJMHgwMDVBOURGNiwgLyog LTMuMDAwZEIgKi8KKwkweDAwNjVBQzhCLCAvKiAtMi4wMDBkQiAqLworCTB4MDA3MjE0ODEsIC8q IC0xLjAwMGRCICovCisJMHgwMDdGRkZGRiwgLyogRlMgKi8KK307CisKK2ludCBseF9sZXZlbF9w ZWFrcyhzdHJ1Y3QgbHg2NDY0ZXMgKmNoaXAsIGludCBpc19jYXB0dXJlLCBpbnQgY2hhbm5lbHMs CisJCSAgIHUzMiAqcl9sZXZlbHMpCit7CisJaW50IGVyciA9IDA7CisJdW5zaWduZWQgbG9uZyBm bGFnczsKKwlpbnQgaTsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmY2hpcC0+bXNnX2xvY2ssIGZsYWdz KTsKKworCWZvciAoaSA9IDA7IGkgPCBjaGFubmVsczsgaSArPSA0KSB7CisJCXUzMiBzMCwgczEs IHMyLCBzMzsKKworCQlseF9tZXNzYWdlX2luaXQoJmNoaXAtPnJtaCwgQ01EXzEyX0dFVF9QRUFL KTsKKwkJY2hpcC0+cm1oLmNtZFswXSB8PSBQSVBFX0lORk9fVE9fQ01EKGlzX2NhcHR1cmUsIGkp OworCisJCWVyciA9IGx4X21lc3NhZ2Vfc2VuZF9hdG9taWMoY2hpcCwgJmNoaXAtPnJtaCk7CisK KwkJaWYgKGVyciA9PSAwKSB7CisJCQlzMCA9IHBlYWtfbWFwW2NoaXAtPnJtaC5zdGF0WzBdICYg MHgwRl07CisJCQlzMSA9IHBlYWtfbWFwWyhjaGlwLT5ybWguc3RhdFswXSA+PiAgNCkgJiAweGZd OworCQkJczIgPSBwZWFrX21hcFsoY2hpcC0+cm1oLnN0YXRbMF0gPj4gIDgpICYgMHhmXTsKKwkJ CXMzID0gcGVha19tYXBbKGNoaXAtPnJtaC5zdGF0WzBdID4+ICAxMikgJiAweGZdOworCQl9IGVs c2UKKwkJCXMwID0gczEgPSBzMiA9IHMzID0gMDsKKworCQlyX2xldmVsc1swXSA9IHMwOworCQly X2xldmVsc1sxXSA9IHMxOworCQlyX2xldmVsc1syXSA9IHMyOworCQlyX2xldmVsc1szXSA9IHMz OworCisJCXJfbGV2ZWxzICs9IDQ7CisJfQorCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2hp cC0+bXNnX2xvY2ssIGZsYWdzKTsKKwlyZXR1cm4gZXJyOworfQorCisvKiBsYXRlcjogdGhlIGNh cmQgYWxzbyBzdXBwb3J0cyBoYXJkd2FyZSBwZWFrIG1ldGVyaW5nICovCisKKworLyogaW50ZXJy dXB0IGhhbmRsaW5nICovCisjZGVmaW5lIFBDWF9JUlFfTk9ORSAwCisjZGVmaW5lIElSUUNTX0FD VElWRV9QQ0lEQiAgMHgwMDAwMjAwMEwgICAgICAgICAvKiBCaXQgbsODwoPDgsK4IDEzICovCisj ZGVmaW5lIElSUUNTX0VOQUJMRV9QQ0lJUlEgMHgwMDAwMDEwMEwgICAgICAgICAvKiBCaXQgbsOD woPDgsK4IDA4ICovCisjZGVmaW5lIElSUUNTX0VOQUJMRV9QQ0lEQiAgMHgwMDAwMDIwMEwgICAg ICAgICAvKiBCaXQgbsODwoPDgsK4IDA5ICovCisKKy8qICAtLSBtYXNrIGRlZmluaXRpb25zIGZv ciBTWVMuU1RBVCAtLS0tLSAqLworI2RlZmluZSBNQVNLX1NZU19TVEFUVVNfRVJST1IJKDFMIDw8 IDMxKQkvKiBldmVudHMgdGhhdCBsZWFkIHRvIGEgUENJIGlycSBpZiBub3QgeWV0IHBlbmRpbmcg Ki8KKyNkZWZpbmUgTUFTS19TWVNfU1RBVFVTX1VSVU4JKDFMIDw8IDMwKQorI2RlZmluZSBNQVNL X1NZU19TVEFUVVNfT1JVTgkoMUwgPDwgMjkpCisjZGVmaW5lIE1BU0tfU1lTX1NUQVRVU19FT0JP CSgxTCA8PCAyOCkKKyNkZWZpbmUgTUFTS19TWVNfU1RBVFVTX0VPQkkJKDFMIDw8IDI3KQorI2Rl ZmluZSBNQVNLX1NZU19TVEFUVVNfRlJFUQkoMUwgPDwgMjYpCisjZGVmaW5lIE1BU0tfU1lTX1NU QVRVU19FU0EJKDFMIDw8IDI1KQkvKiByZXNlcnZlZCwgdGhpcyBpcyBzZXQgYnkgdGhlIFhFUyAq LworI2RlZmluZSBNQVNLX1NZU19TVEFUVVNfVElNRVIJKDFMIDw8IDI0KQorCisjZGVmaW5lIE1B U0tfU1lTX0FTWU5DX0VWRU5UUwkoTUFTS19TWVNfU1RBVFVTX0VSUk9SIHwgTUFTS19TWVNfU1RB VFVTX1VSVU4gfCBcCisJCQkJIE1BU0tfU1lTX1NUQVRVU19PUlVOICB8IE1BU0tfU1lTX1NUQVRV U19FT0JPIHwgXAorCQkJCSBNQVNLX1NZU19TVEFUVVNfRU9CSSAgfCBNQVNLX1NZU19TVEFUVVNf RlJFUSB8IFwKKwkJCQkgTUFTS19TWVNfU1RBVFVTX0VTQSkKKworI2RlZmluZSBNQVNLX1NZU19Q Q0lfRVZFTlRTCQkoTUFTS19TWVNfQVNZTkNfRVZFTlRTIHwgTUFTS19TWVNfU1RBVFVTX1RJTUVS KQorCisjZGVmaW5lIE1BU0tfU1lTX1RJTUVSX0NPVU5UCTB4MDAwMEZGRkYKKworLyogI2RlZmlu ZSBNQVNLX1NZU19TVEFUVVNfQ01ECQkoMUwgPDwgMjMpCS9cKiBldmVudCB0aGF0IHJlbWFpbnMg aW50ZXJuYWwgKlwvICovCisjZGVmaW5lIE1BU0tfU1lTX1NUQVRVU19FT1RfUExYCQkoMUwgPDwg MjIpCS8qIGV2ZW50IHRoYXQgcmVtYWlucyBpbnRlcm5hbCA6IHJlc2VydmVkIGZvIGVuZCBvZiBw bHggZG1hICovCisjZGVmaW5lIE1BU0tfU1lTX1NUQVRVU19YRVMJCSgxTCA8PCAyMSkJLyogZXZl bnQgdGhhdCByZW1haW5zIGludGVybmFsIDogcGVuZGluZyBYRVMgSVJRICovCisjZGVmaW5lIE1B U0tfU1lTX1NUQVRVU19DTURfRE9ORQkoMUwgPDwgMjApCS8qIGFsdGVybmF0ZSBjb21tYW5kIG1h bmFnZW1lbnQgOiBub3RpZnkgZHJpdmVyIGluc3RlYWQgb2YgcG9sbGluZyAqLworCisKK3N0YXRp YyB1MzIgbHhfaW50ZXJydXB0X3Rlc3RfYWNrKHN0cnVjdCBseDY0NjRlcyAqY2hpcCkKK3sKKwl1 MzIgaXJxY3MgPSBseF9wbHhfcmVnX3JlYWQoY2hpcCwgZVBMWF9JUlFDUyk7CisKKwkvKiBUZXN0 IGlmIFBDSSBEb29yYmVsbCBpbnRlcnJ1cHQgaXMgYWN0aXZlICovCisJaWYgKGlycWNzICYgSVJR Q1NfQUNUSVZFX1BDSURCKQl7CisJCXUzMiB0ZW1wOworCQlpcnFjcyA9IFBDWF9JUlFfTk9ORTsK KworCQl3aGlsZSAoKHRlbXAgPSBseF9wbHhfcmVnX3JlYWQoY2hpcCwgZVBMWF9MMlBDSURCKSkp IHsKKwkJCS8qIFJBWiBpbnRlcnJ1cHQgKi8KKwkJCWlycWNzIHw9IHRlbXA7CisJCQlseF9wbHhf cmVnX3dyaXRlKGNoaXAsIGVQTFhfTDJQQ0lEQiwgdGVtcCk7CisJCX0KKworCQlyZXR1cm4gaXJx Y3M7CisJfQorCXJldHVybiBQQ1hfSVJRX05PTkU7Cit9CisKK3N0YXRpYyBpbnQgbHhfaW50ZXJy dXB0X2FjayhzdHJ1Y3QgbHg2NDY0ZXMgKmNoaXAsIHUzMiAqcl9pcnFzcmMsCisJCQkgICAgaW50 ICpyX2FzeW5jX3BlbmRpbmcsIGludCAqcl9hc3luY19lc2NtZCkKK3sKKwl1MzIgaXJxX2FzeW5j OworCXUzMiBpcnFzcmMgPSBseF9pbnRlcnJ1cHRfdGVzdF9hY2soY2hpcCk7CisKKwlpZiAoaXJx c3JjID09IFBDWF9JUlFfTk9ORSkKKwkJcmV0dXJuIDA7CisKKwkqcl9pcnFzcmMgPSBpcnFzcmM7 CisKKwlpcnFfYXN5bmMgPSBpcnFzcmMgJiBNQVNLX1NZU19BU1lOQ19FVkVOVFM7IC8qICsgRXRo ZXJTb3VuZCByZXNwb25zZQorCQkJCQkJICAgICAqIChzZXQgYnkgeGlsaW54KSArIEVPQiAqLwor CisJaWYgKGlycV9hc3luYyAmIE1BU0tfU1lTX1NUQVRVU19FU0EpIHsKKwkJaXJxX2FzeW5jICY9 IH5NQVNLX1NZU19TVEFUVVNfRVNBOworCQkqcl9hc3luY19lc2NtZCA9IDE7CisJfQorCisJaWYg KGlycXNyYyAmIE1BU0tfU1lTX1NUQVRVU19DTURfRE9ORSkKKwkJLyogeGlsaW54IGNvbW1hbmQg bm90aWZpY2F0aW9uICovCisJCWF0b21pY19zZXQoJmNoaXAtPnNlbmRfbWVzc2FnZV9sb2NrZWQs IDApOworCisJaWYgKGlycV9hc3luYykgeworCQkvKiBzbmRfcHJpbnRkKCJpbnRlcnJ1cHQ6IGFz eW5jIGV2ZW50IHBlbmRpbmdcbiIpOyAqLworCQkqcl9hc3luY19wZW5kaW5nID0gMTsKKwl9CisK KwlyZXR1cm4gMTsKK30KKworc3RhdGljIGludCBseF9pbnRlcnJ1cHRfaGFuZGxlX2FzeW5jX2V2 ZW50cyhzdHJ1Y3QgbHg2NDY0ZXMgKmNoaXAsIHUzMiBpcnFzcmMsCisJCQkJCSAgICBpbnQgKnJf ZnJlcV9jaGFuZ2VkLAorCQkJCQkgICAgdTY0ICpyX25vdGlmaWVkX2luX3BpcGVfbWFzaywKKwkJ CQkJICAgIHU2NCAqcl9ub3RpZmllZF9vdXRfcGlwZV9tYXNrKQoreworCWludCBlcnI7CisJdTMy IHN0YXRbOV07CQkvKiBhbnN3ZXIgZnJvbSBDTURfMDRfR0VUX0VWRU5UICovCisKKwkvKiBPbiBw ZXV0IG9wdGltaXNlciBwb3VyIG5lIHBhcyBsaXJlIGxlcyBldmVuZW1lbnRzIHZpZGVzCisJICog bGVzIG1vdHMgZGUgcsODwoPDgsKpcG9uc2Ugc29udCBkYW5zIGwnb3JkcmUgc3VpdmFudCA6CisJ ICogU3RhdFswXQltb3QgZGUgc3RhdHVzIGfDg8KDw4LCqW7Dg8KDw4LCqXJhbAorCSAqIFN0YXRb MV0JZmluIGRlIGJ1ZmZlciBPVVQgcEYKKwkgKiBTdGF0WzJdCWZpbiBkZSBidWZmZXIgT1VUIHBm CisJICogU3RhdFszXQlmaW4gZGUgYnVmZmVyIElOIHBGCisJICogU3RhdFs0XQlmaW4gZGUgYnVm ZmVyIElOIHBmCisJICogU3RhdFs1XQl1bmRlcnJ1biBwb2lkIGZvcnQKKwkgKiBTdGF0WzZdCXVu ZGVycnVuIHBvaWQgZmFpYmxlCisJICogU3RhdFs3XQlvdmVycnVuIHBvaWQgZm9ydAorCSAqIFN0 YXRbOF0Jb3ZlcnJ1biBwb2lkIGZhaWJsZQorCSAqICovCisKKwl1NjQgb3J1bl9tYXNrOworCXU2 NCB1cnVuX21hc2s7CisjaWYgMAorCWludCBoYXNfdW5kZXJydW4gICA9IChpcnFzcmMgJiBNQVNL X1NZU19TVEFUVVNfVVJVTikgPyAxIDogMDsKKwlpbnQgaGFzX292ZXJydW4gICAgPSAoaXJxc3Jj ICYgTUFTS19TWVNfU1RBVFVTX09SVU4pID8gMSA6IDA7CisjZW5kaWYKKwlpbnQgZWJfcGVuZGlu Z19vdXQgPSAoaXJxc3JjICYgTUFTS19TWVNfU1RBVFVTX0VPQk8pID8gMSA6IDA7CisJaW50IGVi X3BlbmRpbmdfaW4gID0gKGlycXNyYyAmIE1BU0tfU1lTX1NUQVRVU19FT0JJKSA/IDEgOiAwOwor CisJKnJfZnJlcV9jaGFuZ2VkID0gKGlycXNyYyAmIE1BU0tfU1lTX1NUQVRVU19GUkVRKSA/IDEg OiAwOworCisJZXJyID0gbHhfZHNwX3JlYWRfYXN5bmNfZXZlbnRzKGNoaXAsIHN0YXQpOworCWlm IChlcnIgPCAwKQorCQlyZXR1cm4gZXJyOworCisJaWYgKGViX3BlbmRpbmdfaW4pIHsKKwkJKnJf bm90aWZpZWRfaW5fcGlwZV9tYXNrID0gKCh1NjQpc3RhdFszXSA8PCAzMikKKwkJCSsgc3RhdFs0 XTsKKwkJc25kX3ByaW50ZGQoTFhQICJpbnRlcnJ1cHQ6IEVPQkkgcGVuZGluZyAlbGx4XG4iLAor CQkJICAgICpyX25vdGlmaWVkX2luX3BpcGVfbWFzayk7CisJfQorCWlmIChlYl9wZW5kaW5nX291 dCkgeworCQkqcl9ub3RpZmllZF9vdXRfcGlwZV9tYXNrID0gKCh1NjQpc3RhdFsxXSA8PCAzMikK KwkJCSsgc3RhdFsyXTsKKwkJc25kX3ByaW50ZGQoTFhQICJpbnRlcnJ1cHQ6IEVPQk8gcGVuZGlu ZyAlbGx4XG4iLAorCQkJICAgICpyX25vdGlmaWVkX291dF9waXBlX21hc2spOworCX0KKworCW9y dW5fbWFzayA9ICgodTY0KXN0YXRbN10gPDwgMzIpICsgc3RhdFs4XTsKKwl1cnVuX21hc2sgPSAo KHU2NClzdGF0WzVdIDw8IDMyKSArIHN0YXRbNl07CisKKwkvKiB0b2RvOiBoYW5kbGUgeHJ1biBu b3RpZmljYXRpb24gKi8KKworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgbHhfaW50ZXJy dXB0X3JlcXVlc3RfbmV3X2J1ZmZlcihzdHJ1Y3QgbHg2NDY0ZXMgKmNoaXAsCisJCQkJCSAgIHN0 cnVjdCBseF9zdHJlYW0gKmx4X3N0cmVhbSkKK3sKKwlzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0g KnN1YnN0cmVhbSA9IGx4X3N0cmVhbS0+c3RyZWFtOworCWludCBpc19jYXB0dXJlID0gbHhfc3Ry ZWFtLT5pc19jYXB0dXJlOworCWludCBlcnI7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCWNv bnN0IHUzMiBjaGFubmVscyA9IHN1YnN0cmVhbS0+cnVudGltZS0+Y2hhbm5lbHM7CisJY29uc3Qg dTMyIGJ5dGVzX3Blcl9mcmFtZSA9IGNoYW5uZWxzICogMzsKKwljb25zdCB1MzIgcGVyaW9kX3Np emUgPSBzdWJzdHJlYW0tPnJ1bnRpbWUtPnBlcmlvZF9zaXplOworCWNvbnN0IHUzMiBwZXJpb2Rf Ynl0ZXMgPSBwZXJpb2Rfc2l6ZSAqIGJ5dGVzX3Blcl9mcmFtZTsKKwljb25zdCB1MzIgcG9zID0g bHhfc3RyZWFtLT5mcmFtZV9wb3M7CisJY29uc3QgdTMyIG5leHRfcG9zID0gKChwb3MrMSkgPT0g c3Vic3RyZWFtLT5ydW50aW1lLT5wZXJpb2RzKSA/CisJCTAgOiBwb3MgKyAxOworCisJZG1hX2Fk ZHJfdCBidWYgPSBzdWJzdHJlYW0tPmRtYV9idWZmZXIuYWRkciArIHBvcyAqIHBlcmlvZF9ieXRl czsKKwl1MzIgYnVmX2hpID0gMDsKKwl1MzIgYnVmX2xvID0gMDsKKwl1MzIgYnVmZmVyX2luZGV4 ID0gMDsKKworCXUzMiBuZWVkZWQsIGZyZWVkOworCXUzMiBzaXplX2FycmF5W01BWF9TVFJFQU1f QlVGRkVSXTsKKworCXNuZF9wcmludGRkKCItPmx4X2ludGVycnVwdF9yZXF1ZXN0X25ld19idWZm ZXJcbiIpOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmNoaXAtPmxvY2ssIGZsYWdzKTsKKworCWVy ciA9IGx4X2J1ZmZlcl9hc2soY2hpcCwgMCwgaXNfY2FwdHVyZSwgJm5lZWRlZCwgJmZyZWVkLCBz aXplX2FycmF5KTsKKwlzbmRfcHJpbnRkZChMWFAgImludGVycnVwdDogbmVlZGVkICVkLCBmcmVl ZCAlZFxuIiwgbmVlZGVkLCBmcmVlZCk7CisKKwl1bnBhY2tfcG9pbnRlcihidWYsICZidWZfbG8s ICZidWZfaGkpOworCWVyciA9IGx4X2J1ZmZlcl9naXZlKGNoaXAsIDAsIGlzX2NhcHR1cmUsIHBl cmlvZF9ieXRlcywgYnVmX2xvLCBidWZfaGksCisJCQkgICAgICZidWZmZXJfaW5kZXgpOworCXNu ZF9wcmludGRkKExYUCAiaW50ZXJydXB0OiBnYXZlIGJ1ZmZlciBpbmRleCAleCBvbiAlcCAoJWQg Ynl0ZXMpXG4iLAorCQkgICAgYnVmZmVyX2luZGV4LCAodm9pZCopYnVmLCBwZXJpb2RfYnl0ZXMp OworCisJbHhfc3RyZWFtLT5mcmFtZV9wb3MgPSBuZXh0X3BvczsKKwlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZjaGlwLT5sb2NrLCBmbGFncyk7CisKKwlyZXR1cm4gZXJyOworfQorCit2b2lkIGx4 X3Rhc2tsZXRfcGxheWJhY2sodW5zaWduZWQgbG9uZyBkYXRhKQoreworCXN0cnVjdCBseDY0NjRl cyAqY2hpcCA9IChzdHJ1Y3QgbHg2NDY0ZXMgKilkYXRhOworCXN0cnVjdCBseF9zdHJlYW0gKmx4 X3N0cmVhbSA9ICZjaGlwLT5wbGF5YmFja19zdHJlYW07CisJaW50IGVycjsKKworCXNuZF9wcmlu dGRkKCItPmx4X3Rhc2tsZXRfcGxheWJhY2tcbiIpOworCisJZXJyID0gbHhfaW50ZXJydXB0X3Jl cXVlc3RfbmV3X2J1ZmZlcihjaGlwLCBseF9zdHJlYW0pOworCWlmIChlcnIgPCAwKQorCQlzbmRf cHJpbnRrKEtFUk5fRVJSIExYUAorCQkJICAgImNhbm5vdCByZXF1ZXN0IG5ldyBidWZmZXIgZm9y IHBsYXliYWNrXG4iKTsKKworCXNuZF9wY21fcGVyaW9kX2VsYXBzZWQobHhfc3RyZWFtLT5zdHJl YW0pOworfQorCit2b2lkIGx4X3Rhc2tsZXRfY2FwdHVyZSh1bnNpZ25lZCBsb25nIGRhdGEpCit7 CisJc3RydWN0IGx4NjQ2NGVzICpjaGlwID0gKHN0cnVjdCBseDY0NjRlcyAqKWRhdGE7CisJc3Ry dWN0IGx4X3N0cmVhbSAqbHhfc3RyZWFtID0gJmNoaXAtPmNhcHR1cmVfc3RyZWFtOworCWludCBl cnI7CisKKwlzbmRfcHJpbnRkZCgiLT5seF90YXNrbGV0X2NhcHR1cmVcbiIpOworCWVyciA9IGx4 X2ludGVycnVwdF9yZXF1ZXN0X25ld19idWZmZXIoY2hpcCwgbHhfc3RyZWFtKTsKKwlpZiAoZXJy IDwgMCkKKwkJc25kX3ByaW50ayhLRVJOX0VSUiBMWFAKKwkJCSAgICJjYW5ub3QgcmVxdWVzdCBu ZXcgYnVmZmVyIGZvciBjYXB0dXJlXG4iKTsKKworCXNuZF9wY21fcGVyaW9kX2VsYXBzZWQobHhf c3RyZWFtLT5zdHJlYW0pOworfQorCisKKworc3RhdGljIGludCBseF9pbnRlcnJ1cHRfaGFuZGxl X2F1ZGlvX3RyYW5zZmVyKHN0cnVjdCBseDY0NjRlcyAqY2hpcCwKKwkJCQkJICAgICAgdTY0IG5v dGlmaWVkX2luX3BpcGVfbWFzaywKKwkJCQkJICAgICAgdTY0IG5vdGlmaWVkX291dF9waXBlX21h c2spCit7CisJaW50IGVyciA9IDA7CisKKwlpZiAobm90aWZpZWRfaW5fcGlwZV9tYXNrKSB7CisJ CXNuZF9wcmludGRkKExYUCAicmVxdWVzdGluZyBhdWRpbyB0cmFuc2ZlciBmb3IgY2FwdHVyZVxu Iik7CisJCXRhc2tsZXRfaGlfc2NoZWR1bGUoJmNoaXAtPnRhc2tsZXRfY2FwdHVyZSk7CisJfQor CisJaWYgKG5vdGlmaWVkX291dF9waXBlX21hc2spIHsKKwkJc25kX3ByaW50ZGQoTFhQICJyZXF1 ZXN0aW5nIGF1ZGlvIHRyYW5zZmVyIGZvciBwbGF5YmFja1xuIik7CisJCXRhc2tsZXRfaGlfc2No ZWR1bGUoJmNoaXAtPnRhc2tsZXRfcGxheWJhY2spOworCX0KKworCXJldHVybiBlcnI7Cit9CisK KworaXJxcmV0dXJuX3QgbHhfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pZCkKK3sKKwlz dHJ1Y3QgbHg2NDY0ZXMgKmNoaXAgPSBkZXZfaWQ7CisJaW50IGFzeW5jX3BlbmRpbmcsIGFzeW5j X2VzY21kOworCXUzMiBpcnFzcmM7CisKKwlzcGluX2xvY2soJmNoaXAtPmxvY2spOworCisJc25k X3ByaW50ZGQoIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqXG4iKTsKKworCWlmICghbHhfaW50ZXJydXB0X2FjayhjaGlwLCAmaXJxc3JjLCAmYXN5bmNf cGVuZGluZywgJmFzeW5jX2VzY21kKSkgeworCQlzcGluX3VubG9jaygmY2hpcC0+bG9jayk7CisJ CXNuZF9wcmludGRkKCJJUlFfTk9ORVxuIik7CisJCXJldHVybiBJUlFfTk9ORTsgLyogdGhpcyBk ZXZpY2UgZGlkIG5vdCBjYXVzZSB0aGUgaW50ZXJydXB0ICovCisJfQorCisJaWYgKGlycXNyYyAm IE1BU0tfU1lTX1NUQVRVU19DTURfRE9ORSkKKwkJZ290byBleGl0OworCisjaWYgMAorCWlmIChp cnFzcmMgJiBNQVNLX1NZU19TVEFUVVNfRU9CSSkKKwkJc25kX3ByaW50ZGQoTFhQICJpbnRlcnJ1 cHQ6IEVPQklcbiIpOworCisJaWYgKGlycXNyYyAmIE1BU0tfU1lTX1NUQVRVU19FT0JPKQorCQlz bmRfcHJpbnRkZChMWFAgImludGVycnVwdDogRU9CT1xuIik7CisKKwlpZiAoaXJxc3JjICYgTUFT S19TWVNfU1RBVFVTX1VSVU4pCisJCXNuZF9wcmludGRkKExYUCAiaW50ZXJydXB0OiBVUlVOXG4i KTsKKworCWlmIChpcnFzcmMgJiBNQVNLX1NZU19TVEFUVVNfT1JVTikKKwkJc25kX3ByaW50ZGQo TFhQICJpbnRlcnJ1cHQ6IE9SVU5cbiIpOworI2VuZGlmCisKKwlpZiAoYXN5bmNfcGVuZGluZykg eworCQl1NjQgbm90aWZpZWRfaW5fcGlwZV9tYXNrID0gMDsKKwkJdTY0IG5vdGlmaWVkX291dF9w aXBlX21hc2sgPSAwOworCQlpbnQgZnJlcV9jaGFuZ2VkOworCQlpbnQgZXJyOworCisJCS8qIGhh bmRsZSBhc3luYyBldmVudHMgKi8KKwkJZXJyID0gbHhfaW50ZXJydXB0X2hhbmRsZV9hc3luY19l dmVudHMoY2hpcCwgaXJxc3JjLAorCQkJCQkJICAgICAgICZmcmVxX2NoYW5nZWQsCisJCQkJCQkg ICAgICAgJm5vdGlmaWVkX2luX3BpcGVfbWFzaywKKwkJCQkJCSAgICAgICAmbm90aWZpZWRfb3V0 X3BpcGVfbWFzayk7CisJCWlmIChlcnIpCisJCQlzbmRfcHJpbnRrKEtFUk5fRVJSIExYUAorCQkJ CSAgICJlcnJvciBoYW5kbGluZyBhc3luYyBldmVudHNcbiIpOworCisJCWVyciA9IGx4X2ludGVy cnVwdF9oYW5kbGVfYXVkaW9fdHJhbnNmZXIoY2hpcCwKKwkJCQkJCQkgbm90aWZpZWRfaW5fcGlw ZV9tYXNrLAorCQkJCQkJCSBub3RpZmllZF9vdXRfcGlwZV9tYXNrCisJCQkpOworCQlpZiAoZXJy KQorCQkJc25kX3ByaW50ayhLRVJOX0VSUiBMWFAKKwkJCQkgICAiZXJyb3IgZHVyaW5nIGF1ZGlv IHRyYW5zZmVyXG4iKTsKKwl9CisKKwlpZiAoYXN5bmNfZXNjbWQpIHsKKyNpZiAwCisJCS8qIGJh Y2tkb29yIGZvciBldGhlcnNvdW5kIGNvbW1hbmRzCisJCSAqCisJCSAqIGZvciBub3csIHdlIGRv IG5vdCBuZWVkIHRoaXMKKwkJICoKKwkJICogKi8KKworCQlzbmRfcHJpbnRkZCgibHg2NDY0ZXM6 IGludGVycnVwdCByZXF1ZXN0cyBlc2NtZCBoYW5kbGluZ1xuIik7CisjZW5kaWYKKwl9CisKK2V4 aXQ6CisJc3Bpbl91bmxvY2soJmNoaXAtPmxvY2spOworCXJldHVybiBJUlFfSEFORExFRDsJLyog dGhpcyBkZXZpY2UgY2F1c2VkIHRoZSBpbnRlcnJ1cHQgKi8KK30KKworCitzdGF0aWMgdm9pZCBs eF9pcnFfc2V0KHN0cnVjdCBseDY0NjRlcyAqY2hpcCwgaW50IGVuYWJsZSkKK3sKKwl1MzIgcmVn ID0gbHhfcGx4X3JlZ19yZWFkKGNoaXAsIGVQTFhfSVJRQ1MpOworCisJLyogZW5hYmxlL2Rpc2Fi bGUgaW50ZXJydXB0cworCSAqCisJICogU2V0IHRoZSBEb29yYmVsbCBhbmQgUENJIGludGVycnVw dCBlbmFibGUgYml0cworCSAqCisJICogKi8KKwlpZiAoZW5hYmxlKQorCQlyZWcgfD0gIChJUlFD U19FTkFCTEVfUENJSVJRIHwgSVJRQ1NfRU5BQkxFX1BDSURCKTsKKwllbHNlCisJCXJlZyAmPSB+ KElSUUNTX0VOQUJMRV9QQ0lJUlEgfCBJUlFDU19FTkFCTEVfUENJREIpOworCWx4X3BseF9yZWdf d3JpdGUoY2hpcCwgZVBMWF9JUlFDUywgcmVnKTsKK30KKwordm9pZCBseF9pcnFfZW5hYmxlKHN0 cnVjdCBseDY0NjRlcyAqY2hpcCkKK3sKKwlzbmRfcHJpbnRkZCgiLT5seF9pcnFfZW5hYmxlXG4i KTsKKwlseF9pcnFfc2V0KGNoaXAsIDEpOworfQorCit2b2lkIGx4X2lycV9kaXNhYmxlKHN0cnVj dCBseDY0NjRlcyAqY2hpcCkKK3sKKwlzbmRfcHJpbnRkZCgiLT5seF9pcnFfZGlzYWJsZVxuIik7 CisJbHhfaXJxX3NldChjaGlwLCAwKTsKK30KZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9seDY0NjRl cy9seF9jb3JlLmggYi9zb3VuZC9wY2kvbHg2NDY0ZXMvbHhfY29yZS5oCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwMWQ0NDMKLS0tIC9kZXYvbnVsbAorKysgYi9zb3VuZC9w Y2kvbHg2NDY0ZXMvbHhfY29yZS5oCkBAIC0wLDAgKzEsMjM5IEBACisvKiAtKi0gbGludXgtYyAt Ki0gKgorICoKKyAqIEFMU0EgZHJpdmVyIGZvciB0aGUgZGlnaWdyYW0gbHg2NDY0ZXMgaW50ZXJm YWNlCisgKiBsb3ctbGV2ZWwgaW50ZXJmYWNlCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA5IFRp bSBCbGVjaG1hbm4gPHRpbUBrbGluZ3Qub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg d2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0 bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNl IC0gU3VpdGUgMzMwLAorICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisgKgorICovCisK KyNpZm5kZWYgTFhfQ09SRV9ICisjZGVmaW5lIExYX0NPUkVfSAorCisjaW5jbHVkZSA8bGludXgv aW50ZXJydXB0Lmg+CisKKyNpbmNsdWRlICJQY3hFcnJfZS5oIgorI2luY2x1ZGUgImlmX2Rydl9t Yi5oIgorCisjZGVmaW5lIFJFR19DUk1fTlVNQkVSCQkxMgorCitzdHJ1Y3QgbHg2NDY0ZXM7CisK Ky8qIGxvdy1sZXZlbCByZWdpc3RlciBhY2Nlc3MgKi8KKworLyogZHNwIHJlZ2lzdGVyIGFjY2Vz cyAqLworZW51bSB7CisJZVJlZ19CQVNFLAorCWVSZWdfQ1NNLAorCWVSZWdfQ1JNMSwKKwllUmVn X0NSTTIsCisJZVJlZ19DUk0zLAorCWVSZWdfQ1JNNCwKKwllUmVnX0NSTTUsCisJZVJlZ19DUk02 LAorCWVSZWdfQ1JNNywKKwllUmVnX0NSTTgsCisJZVJlZ19DUk05LAorCWVSZWdfQ1JNMTAsCisJ ZVJlZ19DUk0xMSwKKwllUmVnX0NSTTEyLAorCisJZVJlZ19JQ1IsCisJZVJlZ19DVlIsCisJZVJl Z19JU1IsCisJZVJlZ19SWEhUWEgsCisJZVJlZ19SWE1UWE0sCisJZVJlZ19SSExUWEwsCisJZVJl Z19SRVNFVERTUCwKKworCWVSZWdfQ1NVRiwKKwllUmVnX0NTRVMsCisJZVJlZ19DUkVTTVNCLAor CWVSZWdfQ1JFU0xTQiwKKwllUmVnX0FETUFDRVNNU0IsCisJZVJlZ19BRE1BQ0VTTFNCLAorCWVS ZWdfQ09ORkVTLAorCisJZU1heFBvcnRMeAorfTsKKwordW5zaWduZWQgbG9uZyBseF9kc3BfcmVn X3JlYWQoc3RydWN0IGx4NjQ2NGVzICpjaGlwLCBpbnQgcG9ydCk7Cit2b2lkIGx4X2RzcF9yZWdf cmVhZGJ1ZihzdHJ1Y3QgbHg2NDY0ZXMgKmNoaXAsIGludCBwb3J0LCB1MzIgKmRhdGEsIHUzMiBs ZW4pOwordm9pZCBseF9kc3BfcmVnX3dyaXRlKHN0cnVjdCBseDY0NjRlcyAqY2hpcCwgaW50IHBv cnQsIHVuc2lnbmVkIGRhdGEpOwordm9pZCBseF9kc3BfcmVnX3dyaXRlYnVmKHN0cnVjdCBseDY0 NjRlcyAqY2hpcCwgaW50IHBvcnQsIGNvbnN0IHUzMiAqZGF0YSwKKwkJCSB1MzIgbGVuKTsKKwor LyogcGx4IHJlZ2lzdGVyIGFjY2VzcyAqLworZW51bSB7CisgICAgZVBMWF9QQ0lDUiwKKworICAg IGVQTFhfTUJPWDAsCisgICAgZVBMWF9NQk9YMSwKKyAgICBlUExYX01CT1gyLAorICAgIGVQTFhf TUJPWDMsCisgICAgZVBMWF9NQk9YNCwKKyAgICBlUExYX01CT1g1LAorICAgIGVQTFhfTUJPWDYs CisgICAgZVBMWF9NQk9YNywKKworICAgIGVQTFhfTDJQQ0lEQiwKKyAgICBlUExYX0lSUUNTLAor ICAgIGVQTFhfQ0hJUFNDLAorCisgICAgZU1heFBvcnQKK307CisKK3Vuc2lnbmVkIGxvbmcgbHhf cGx4X3JlZ19yZWFkKHN0cnVjdCBseDY0NjRlcyAqY2hpcCwgaW50IHBvcnQpOwordm9pZCBseF9w bHhfcmVnX3dyaXRlKHN0cnVjdCBseDY0NjRlcyAqY2hpcCwgaW50IHBvcnQsIHUzMiBkYXRhKTsK KworLyogcmhtICovCitzdHJ1Y3QgbHhfcm1oIHsKKwl1MTYJY21kX2xlbjsJLyogbGVuZ3RoIG9m IHRoZSBjb21tYW5kIHRvIHNlbmQgKFdPUkRzKSAqLworCXUxNglzdGF0X2xlbjsJLyogbGVuZ3Ro IG9mIHRoZSBzdGF0dXMgcmVjZWl2ZWQgKFdPUkRzKSAqLworCXUxNglkc3Bfc3RhdDsJLyogc3Rh dHVzIHR5cGUsIFJNUF9TU0laRV9YWFggKi8KKwl1MTYJY21kX2lkeDsJLyogaW5kZXggb2YgdGhl IGNvbW1hbmQgKi8KKwl1MzIJY21kW1JFR19DUk1fTlVNQkVSXTsKKwl1MzIJc3RhdFtSRUdfQ1JN X05VTUJFUl07Cit9OworCisKKy8qIGxvdy1sZXZlbCBkc3AgYWNjZXNzICovCitpbnQgX19kZXZp bml0IGx4X2RzcF9nZXRfdmVyc2lvbihzdHJ1Y3QgbHg2NDY0ZXMgKmNoaXAsIHUzMiAqcmRzcF92 ZXJzaW9uKTsKK2ludCBseF9kc3BfZ2V0X2Nsb2NrX2ZyZXF1ZW5jeShzdHJ1Y3QgbHg2NDY0ZXMg KmNoaXAsIHUzMiAqcmZyZXEpOworaW50IGx4X2RzcF9zZXRfZ3JhbnVsYXJpdHkoc3RydWN0IGx4 NjQ2NGVzICpjaGlwLCB1MzIgZ3Jhbik7CitpbnQgbHhfZHNwX3JlYWRfYXN5bmNfZXZlbnRzKHN0 cnVjdCBseDY0NjRlcyAqY2hpcCwgdTMyICpkYXRhKTsKK2ludCBseF9kc3BfZ2V0X21hYyhzdHJ1 Y3QgbHg2NDY0ZXMgKmNoaXAsIHU4ICptYWNfYWRkcmVzcyk7CisKKworLyogbG93LWxldmVsIHBp cGUgaGFuZGxpbmcgKi8KK2ludCBseF9waXBlX2FsbG9jYXRlKHN0cnVjdCBseDY0NjRlcyAqY2hp cCwgdTMyIHBpcGUsIGludCBpc19jYXB0dXJlLAorCQkgICAgIGludCBjaGFubmVscyk7CitpbnQg bHhfcGlwZV9yZWxlYXNlKHN0cnVjdCBseDY0NjRlcyAqY2hpcCwgdTMyIHBpcGUsIGludCBpc19j YXB0dXJlKTsKK2ludCBseF9waXBlX3NhbXBsZV9jb3VudChzdHJ1Y3QgbHg2NDY0ZXMgKmNoaXAs IHUzMiBwaXBlLCBpbnQgaXNfY2FwdHVyZSwKKwkJCSB1NjQgKnJzYW1wbGVfY291bnQpOworaW50 IGx4X3BpcGVfc3RhdGUoc3RydWN0IGx4NjQ2NGVzICpjaGlwLCB1MzIgcGlwZSwgaW50IGlzX2Nh cHR1cmUsIHUxNiAqcnN0YXRlKTsKK2ludCBseF9waXBlX3N0b3Aoc3RydWN0IGx4NjQ2NGVzICpj aGlwLCB1MzIgcGlwZSwgaW50IGlzX2NhcHR1cmUpOworaW50IGx4X3BpcGVfc3RhcnQoc3RydWN0 IGx4NjQ2NGVzICpjaGlwLCB1MzIgcGlwZSwgaW50IGlzX2NhcHR1cmUpOworaW50IGx4X3BpcGVf cGF1c2Uoc3RydWN0IGx4NjQ2NGVzICpjaGlwLCB1MzIgcGlwZSwgaW50IGlzX2NhcHR1cmUpOwor CitpbnQgbHhfcGlwZV93YWl0X2Zvcl9zdGFydChzdHJ1Y3QgbHg2NDY0ZXMgKmNoaXAsIHUzMiBw aXBlLCBpbnQgaXNfY2FwdHVyZSk7CitpbnQgbHhfcGlwZV93YWl0X2Zvcl9pZGxlKHN0cnVjdCBs eDY0NjRlcyAqY2hpcCwgdTMyIHBpcGUsIGludCBpc19jYXB0dXJlKTsKKworLyogbG93LWxldmVs IHN0cmVhbSBoYW5kbGluZyAqLworaW50IGx4X3N0cmVhbV9zZXRfZm9ybWF0KHN0cnVjdCBseDY0 NjRlcyAqY2hpcCwgc3RydWN0IHNuZF9wY21fcnVudGltZSAqcnVudGltZSwKKwkJCSB1MzIgcGlw ZSwgaW50IGlzX2NhcHR1cmUpOworaW50IGx4X3N0cmVhbV9zdGF0ZShzdHJ1Y3QgbHg2NDY0ZXMg KmNoaXAsIHUzMiBwaXBlLCBpbnQgaXNfY2FwdHVyZSwKKwkJICAgIGludCAqcnN0YXRlKTsKK2lu dCBseF9zdHJlYW1fc2FtcGxlX3Bvc2l0aW9uKHN0cnVjdCBseDY0NjRlcyAqY2hpcCwgdTMyIHBp cGUsIGludCBpc19jYXB0dXJlLAorCQkJICAgICAgdTY0ICpyX2J5dGVwb3MpOworCitpbnQgbHhf c3RyZWFtX3NldF9zdGF0ZShzdHJ1Y3QgbHg2NDY0ZXMgKmNoaXAsIHUzMiBwaXBlLAorCQkJaW50 IGlzX2NhcHR1cmUsIHN0cmVhbV9zdGF0ZV90IHN0YXRlKTsKKworc3RhdGljIGlubGluZSBpbnQg bHhfc3RyZWFtX3N0YXJ0KHN0cnVjdCBseDY0NjRlcyAqY2hpcCwgdTMyIHBpcGUsCisJCQkJICBp bnQgaXNfY2FwdHVyZSkKK3sKKwlzbmRfcHJpbnRkZCgiLT5seF9zdHJlYW1fc3RhcnRcbiIpOwor CXJldHVybiBseF9zdHJlYW1fc2V0X3N0YXRlKGNoaXAsIHBpcGUsIGlzX2NhcHR1cmUsIFNTVEFU RV9SVU4pOworfQorCitzdGF0aWMgaW5saW5lIGludCBseF9zdHJlYW1fcGF1c2Uoc3RydWN0IGx4 NjQ2NGVzICpjaGlwLCB1MzIgcGlwZSwKKwkJCQkgIGludCBpc19jYXB0dXJlKQoreworCXNuZF9w cmludGRkKCItPmx4X3N0cmVhbV9wYXVzZVxuIik7CisJcmV0dXJuIGx4X3N0cmVhbV9zZXRfc3Rh dGUoY2hpcCwgcGlwZSwgaXNfY2FwdHVyZSwgU1NUQVRFX1BBVVNFKTsKK30KKworc3RhdGljIGlu bGluZSBpbnQgbHhfc3RyZWFtX3N0b3Aoc3RydWN0IGx4NjQ2NGVzICpjaGlwLCB1MzIgcGlwZSwK KwkJCQkgaW50IGlzX2NhcHR1cmUpCit7CisJc25kX3ByaW50ZGQoIi0+bHhfc3RyZWFtX3N0b3Bc biIpOworCXJldHVybiBseF9zdHJlYW1fc2V0X3N0YXRlKGNoaXAsIHBpcGUsIGlzX2NhcHR1cmUs IFNTVEFURV9TVE9QKTsKK30KKworLyogbG93LWxldmVsIGJ1ZmZlciBoYW5kbGluZyAqLworaW50 IGx4X2J1ZmZlcl9hc2soc3RydWN0IGx4NjQ2NGVzICpjaGlwLCB1MzIgcGlwZSwgaW50IGlzX2Nh cHR1cmUsCisJCSAgdTMyICpyX25lZWRlZCwgdTMyICpyX2ZyZWVkLCB1MzIgKnNpemVfYXJyYXkp OworaW50IGx4X2J1ZmZlcl9naXZlKHN0cnVjdCBseDY0NjRlcyAqY2hpcCwgdTMyIHBpcGUsIGlu dCBpc19jYXB0dXJlLAorCQkgICB1MzIgYnVmZmVyX3NpemUsIHUzMiBidWZfYWRkcmVzc19sbywg dTMyIGJ1Zl9hZGRyZXNzX2hpLAorCQkgICB1MzIgKnJfYnVmZmVyX2luZGV4KTsKK2ludCBseF9i dWZmZXJfZnJlZShzdHJ1Y3QgbHg2NDY0ZXMgKmNoaXAsIHUzMiBwaXBlLCBpbnQgaXNfY2FwdHVy ZSwKKwkJICAgdTMyICpyX2J1ZmZlcl9zaXplKTsKK2ludCBseF9idWZmZXJfY2FuY2VsKHN0cnVj dCBseDY0NjRlcyAqY2hpcCwgdTMyIHBpcGUsIGludCBpc19jYXB0dXJlLAorCQkgICAgIHUzMiBi dWZmZXJfaW5kZXgpOworCisvKiBsb3ctbGV2ZWwgZ2Fpbi9wZWFrIGhhbmRsaW5nICovCitpbnQg bHhfbGV2ZWxfdW5tdXRlKHN0cnVjdCBseDY0NjRlcyAqY2hpcCwgaW50IGlzX2NhcHR1cmUsIGlu dCB1bm11dGUpOworaW50IGx4X2xldmVsX3BlYWtzKHN0cnVjdCBseDY0NjRlcyAqY2hpcCwgaW50 IGlzX2NhcHR1cmUsIGludCBjaGFubmVscywKKwkJICAgdTMyICpyX2xldmVscyk7CisKKworLyog aW50ZXJydXB0IGhhbmRsaW5nICovCitpcnFyZXR1cm5fdCBseF9pbnRlcnJ1cHQoaW50IGlycSwg dm9pZCAqZGV2X2lkKTsKK3ZvaWQgbHhfaXJxX2VuYWJsZShzdHJ1Y3QgbHg2NDY0ZXMgKmNoaXAp Owordm9pZCBseF9pcnFfZGlzYWJsZShzdHJ1Y3QgbHg2NDY0ZXMgKmNoaXApOworCit2b2lkIGx4 X3Rhc2tsZXRfY2FwdHVyZSh1bnNpZ25lZCBsb25nIGRhdGEpOwordm9pZCBseF90YXNrbGV0X3Bs YXliYWNrKHVuc2lnbmVkIGxvbmcgZGF0YSk7CisKKworLyogU3RyZWFtIEZvcm1hdCBIZWFkZXIg RGVmaW5lcyAoZm9yIExJTiBhbmQgSUVFRTc1NCkgKi8KKyNkZWZpbmUgSEVBREVSX0ZNVF9CQVNF CQlIRUFERVJfRk1UX0JBU0VfTElOCisjZGVmaW5lIEhFQURFUl9GTVRfQkFTRV9MSU4JMHhGRUQw MDAwMAorI2RlZmluZSBIRUFERVJfRk1UX0JBU0VfRkxPQVQJMHhGQUQwMDAwMAorI2RlZmluZSBI RUFERVJfRk1UX01PTk8JCTB4MDAwMDAwODAgLyoqPCBiaXQgMjMgaW4gaGVhZGVyX2xvLiBXQVJO SU5HIDogb2xkIGJpdCAyMiBpcyBpZ25vcmVkIGluIGZsb2F0IGZvcm1hdCovCisjZGVmaW5lIEhF QURFUl9GTVRfSU5URUwJMHgwMDAwODAwMAorI2RlZmluZSBIRUFERVJfRk1UXzE2QklUUwkweDAw MDAyMDAwCisjZGVmaW5lIEhFQURFUl9GTVRfMjRCSVRTCTB4MDAwMDQwMDAKKyNkZWZpbmUgSEVB REVSX0ZNVF9VUFRPMTEJMHgwMDAwMDIwMCAvKio8IGZyZXF1ZW5jeSBpcyBsZXNzIG9yIGVxdS4g dG8gMTFrLiovCisjZGVmaW5lIEhFQURFUl9GTVRfVVBUTzMyCTB4MDAwMDAxMDAgLyoqPCBmcmVx dWVuY3kgaXMgb3ZlciAxMWsgYW5kIGxlc3MgdGhlbiAzMmsuKi8KKworCisjZGVmaW5lIEJJVF9G TVBfSEVBREVSICAgICAgICAgIDIzCisjZGVmaW5lIEJJVF9GTVBfU0QgICAgICAgICAgICAgIDIy CisjZGVmaW5lIEJJVF9GTVBfTVVMVElDSEFOTkVMICAgIDE5CisKKyNkZWZpbmUgU1RBUlRfU1RB VEUgICAgICAgICAgICAgMQorI2RlZmluZSBQQVVTRV9TVEFURSAgICAgICAgICAgICAwCisKKwor CisKKworLyogZnJvbSBQY3hBbGxfZS5oICovCisvKiBTdGFydC9QYXVzZSBjb25kaXRpb24gZm9y IHBpcGVzIChQQ1hTdGFydFBpcGUsIFBDWFBhdXNlUGlwZSkgKi8KKyNkZWZpbmUgU1RBUlRfUEFV U0VfSU1NRURJQVRFICAgICAgICAgICAwCisjZGVmaW5lIFNUQVJUX1BBVVNFX09OX1NZTkNIUk8g ICAgICAgICAgMQorI2RlZmluZSBTVEFSVF9QQVVTRV9PTl9USU1FX0NPREUgICAgICAgIDIKKwor CisvKiBQaXBlIC8gU3RyZWFtIHN0YXRlICovCisjZGVmaW5lIFNUQVJUX1NUQVRFICAgICAgICAg ICAgIDEKKyNkZWZpbmUgUEFVU0VfU1RBVEUgICAgICAgICAgICAgMAorCitzdGF0aWMgaW5saW5l IHZvaWQgdW5wYWNrX3BvaW50ZXIoZG1hX2FkZHJfdCBwdHIsIHUzMiAqcl9sb3csIHUzMiAqcl9o aWdoKQoreworCSpyX2xvdyA9ICh1MzIpKHB0ciAmIDB4ZmZmZmZmZmYpOworI2lmIEJJVFNfUEVS X0xPTkcgPT0gMzIKKwkqcl9oaWdoID0gMDsKKyNlbHNlCisJKnJfaGlnaCA9ICh1MzIpKCh1NjQp cHRyPj4zMik7CisjZW5kaWYKK30KKworI2VuZGlmIC8qIExYX0NPUkVfSCAqLwotLSAKMS42LjIu MQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBbHNhLWRl dmVsIG1haWxpbmcgbGlzdApBbHNhLWRldmVsQGFsc2EtcHJvamVjdC5vcmcKaHR0cDovL21haWxt YW4uYWxzYS1wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Fsc2EtZGV2ZWwK