From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Kaleb S. KEITHLEY To: git-commits@fedoraproject.org Subject: [rpms/libntirpc] f44: Merge remote-tracking branch 'origin/f43' into f44 Date: Sat, 13 Jun 2026 11:35:11 GMT Message-ID: <178135051121.1.16313043792751099013.rpms-libntirpc-9c506cd8143f@fedoraproject.org> List-ID: X-Git-Repo: rpms/libntirpc X-Git-Branch: f44 X-Git-Rev: 9c506cd8143f64bb5e4372727683616b1492895e QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvbGlibnRpcnBjCkJy YW5jaCA6IGY0NApDb21taXQgOiA5YzUwNmNkODE0M2Y2NGJiNWU0MzcyNzI3NjgzNjE2YjE0OTI4 OTVlCkF1dGhvciA6IEthbGViIFMuIEtFSVRITEVZIDxra2VpdGhsZUByZWRoYXQuY29tPgpEYXRl ICAgOiAyMDI2LTA2LTEzVDA3OjM0OjQ5LTA0OjAwClN0YXRzICA6ICsyODA4Ly01MCBpbiA1IGZp bGUocykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9saWJudGly cGMvYy85YzUwNmNkODE0M2Y2NGJiNWU0MzcyNzI3NjgzNjE2YjE0OTI4OTVlP2JyYW5jaD1mNDQK CkxvZzoKTWVyZ2UgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCAnb3JpZ2luL2Y0MycgaW50byBmNDQK Ci0tLQpkaWZmIC0tZ2l0IGEvMDAwMS1DTWFrZUxpc3RzLnR4dC5wYXRjaCBiLzAwMDEtQ01ha2VM aXN0cy50eHQucGF0Y2gKaW5kZXggYWJjM2I3NS4uZTQ4YzYyYSAxMDA2NDQKLS0tIGEvMDAwMS1D TWFrZUxpc3RzLnR4dC5wYXRjaAorKysgYi8wMDAxLUNNYWtlTGlzdHMudHh0LnBhdGNoCkBAIC0x LDEyICsxLDExIEBACiAtLS0gbnRpcnBjLTYuMy9DTWFrZUxpc3RzLnR4dC5vcmlnCTIwMjUtMDct MTYgMDg6NDk6NTYuNzcxNzA5NzAzIC0wNDAwCiArKysgbnRpcnBjLTYuMy9DTWFrZUxpc3RzLnR4 dAkyMDI1LTA3LTE2IDA5OjEyOjEyLjI4NTQyNzA0MyAtMDQwMAotQEAgLTIsNyArMiw4IEBACitA QCAtMiw3ICsyLDcgQEAKICAKICAjIEN1cnJlbnQgdmVyc2lvbiBhcyBvZiBGZWRvcmEgMTYuICBO b3QgdGVzdGVkIHdpdGggZWFybGllci4KICAKIC1jbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJ T04gMi42LjMpCi0rY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDMuMy4wLi4uNC4wKQot K2NtYWtlX3BvbGljeShWRVJTSU9OIDMuMi4yKQorK2NtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVS U0lPTiAzLjUuMC4uLjQuMCkKICAKICBzZXQoQ01BS0VfTU9EVUxFX1BBVEggJHtDTUFLRV9NT0RV TEVfUEFUSH0gIiR7Q01BS0VfU09VUkNFX0RJUn0vY21ha2UvbW9kdWxlcy8iKQogIAoKZGlmZiAt LWdpdCBhLzAwMDItNy4ycGx1cy5wYXRjaCBiLzAwMDItNy4ycGx1cy5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2UwZTdlCi0tLSAvZGV2L251bGwKKysrIGIvMDAw Mi03LjJwbHVzLnBhdGNoCkBAIC0wLDAgKzEsMjc5MiBAQAorZGlmZiAtdXIgbnRpcnBjLTcuMi9D TWFrZUxpc3RzLnR4dCBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1 NmJkMS9DTWFrZUxpc3RzLnR4dAorLS0tIG50aXJwYy03LjIvQ01ha2VMaXN0cy50eHQJMjAyNi0w My0xOCAxMTo0NTo0MC4zNTk0NzA0MzYgLTA0MDAKKysrKyBudGlycGMtNWM3NjFiYjE4NmU5ZWEz ZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9DTWFrZUxpc3RzLnR4dAkyMDI2LTA1LTE4IDE5OjQw OjIwLjAwMDAwMDAwMCAtMDQwMAorQEAgLTM3LDE4ICszNyw3IEBACisgCisgc2V0KENNQUtFX1BP U0lUSU9OX0lOREVQRU5ERU5UX0NPREUgT04pCisgCistIyBJbnN0YWxsIGRlc3RpbmF0aW9uLCBp ZiBidWlsdCBzdGFuZGFsb25lCistZ2V0X3Byb3BlcnR5KFVTRV9MSUI2NCBHTE9CQUwgUFJPUEVS VFkgRklORF9MSUJSQVJZX1VTRV9MSUI2NF9QQVRIUykKKy1pZiAoVVNFX0xJQjY0KQorLQlzZXQo TElCX0lOU1RBTExfRElSIGxpYjY0IENBQ0hFIFBBVEgKKy0JCSJTcGVjaWZ5IG5hbWUgb2YgbGli ZGlyIGluc2lkZSBpbnN0YWxsIHBhdGgiKQorLWVsc2UgKFVTRV9MSUI2NCkKKy0Jc2V0KExJQl9J TlNUQUxMX0RJUiBsaWIgQ0FDSEUgUEFUSAorLQkJIlNwZWNpZnkgbmFtZSBvZiBsaWJkaXIgaW5z aWRlIGluc3RhbGwgcGF0aCIpCistZW5kaWYgKFVTRV9MSUI2NCkKKy0KKy1zZXQoU1lTVEVNX0xJ QlJBUklFUyAke1NZU1RFTV9MSUJSQVJJRVN9KQorLXNldChCSU5BUllfTElCUkFSSUVTICR7QklO QVJZX0xJQlJBUklFU30pCisraW5jbHVkZShHTlVJbnN0YWxsRGlycykKKyAKKyBpbmNsdWRlKEdl dEdpdFJldmlzaW9uRGVzY3JpcHRpb24pCisgZ2V0X2dpdF9oZWFkX3JldmlzaW9uKEdJVF9SRUZT UEVDIF9HSVRfSEVBRF9DT01NSVQpCitAQCAtMzE3LDIxICszMDYsMTkgQEAKKyBlbmRpZiAoTk9U IFRBUkdFVCBkaXN0KQorIAorIGlmIChOT1QgVEFSR0VUIHJwbSkKKy1hZGRfY3VzdG9tX3Rhcmdl dCggcnBtIERFUEVORFMgZGlzdCkKKy1hZGRfY3VzdG9tX2NvbW1hbmQoVEFSR0VUIHJwbQorK2Fk ZF9jdXN0b21fdGFyZ2V0KCBycG0KKyAgICAgICAgICAgICAgICAgICBDT01NQU5EIHNoIC1jICJy cG1idWlsZCAtdGEgJHtQS0dfTkFNRX0iCisgCQkgIFZFUkJBVElNCisgCQkgIERFUEVORFMgZGlz dCkKKyAKKyBzZXQoUlBNREVTVCAiLS1kZWZpbmUgJ19zcmNycG1kaXIgJHtDTUFLRV9DVVJSRU5U X0JJTkFSWV9ESVJ9JyIpCistYWRkX2N1c3RvbV90YXJnZXQoIHNycG0gREVQRU5EUyBkaXN0KQor LWFkZF9jdXN0b21fY29tbWFuZChUQVJHRVQgc3JwbQorK2FkZF9jdXN0b21fdGFyZ2V0KCBzcnBt CisgICAgICAgICAgICAgICAgICAgQ09NTUFORCBzaCAtYyAicnBtYnVpbGQgJHtSUE1ERVNUfSAt dHMgJHtQS0dfTkFNRX0iCisgCQkgIFZFUkJBVElNCisgCQkgIERFUEVORFMgZGlzdCkKKyBlbmRp ZiAoTk9UIFRBUkdFVCBycG0pCisgIyMjIyMjIyMjIyMgaW5zdGFsbCBmaWxlcyAjIyMjIyMjIyMj IyMjIyMKKyAKKy1pbnN0YWxsKEZJTEVTICAke1BST0pFQ1RfQklOQVJZX0RJUn0vbGlibnRpcnBj LnBjIERFU1RJTkFUSU9OICR7TElCX0lOU1RBTExfRElSfS9wa2djb25maWcpCistaW5zdGFsbChE SVJFQ1RPUlkgICR7TlRJUlBDX0JBU0VfRElSfS9udGlycGMgREVTVElOQVRJT04gaW5jbHVkZSkK Ky1pbnN0YWxsKEZJTEVTICAke1BST0pFQ1RfQklOQVJZX0RJUn0vbnRpcnBjL3ZlcnNpb24uaCBE RVNUSU5BVElPTiBpbmNsdWRlL250aXJwYykKKytpbnN0YWxsKEZJTEVTICAke1BST0pFQ1RfQklO QVJZX0RJUn0vbGlibnRpcnBjLnBjIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9 L3BrZ2NvbmZpZykKKytpbnN0YWxsKERJUkVDVE9SWSAgJHtOVElSUENfQkFTRV9ESVJ9L250aXJw YyBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfSU5DTFVERURJUn0pCisraW5zdGFsbChGSUxF UyAgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L250aXJwYy92ZXJzaW9uLmggREVTVElOQVRJT04gJHtD TUFLRV9JTlNUQUxMX0lOQ0xVREVESVJ9L250aXJwYykKK09ubHkgaW4gbnRpcnBjLTcuMjogQ01h a2VMaXN0cy50eHQub3JpZworT25seSBpbiBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3 MzQ3ZWUxMjk3ODI1NmJkMTogLmdpdGh1YgorZGlmZiAtdXIgbnRpcnBjLTcuMi9saWJudGlycGMu cGMuaW4uY21ha2UgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZi ZDEvbGlibnRpcnBjLnBjLmluLmNtYWtlCistLS0gbnRpcnBjLTcuMi9saWJudGlycGMucGMuaW4u Y21ha2UJMjAyNS0wOS0yMyAxMDowNToxOS4wMDAwMDAwMDAgLTA0MDAKKysrKyBudGlycGMtNWM3 NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9saWJudGlycGMucGMuaW4uY21h a2UJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAgLTA0MDAKK0BAIC0xLDYgKzEsNiBAQAor IHByZWZpeD1AQ01BS0VfSU5TVEFMTF9QUkVGSVhACisgZXhlY19wcmVmaXg9JHtwcmVmaXh9Cist bGliZGlyPSR7cHJlZml4fS9ATElCX0lOU1RBTExfRElSQAorK2xpYmRpcj0ke3ByZWZpeH0vQENN QUtFX0lOU1RBTExfTElCRElSQAorIGluY2x1ZGVkaXI9JHtwcmVmaXh9L2luY2x1ZGUvbnRpcnBj CisgCisgTmFtZTogbGlibnRpcnBjCitkaWZmIC11ciBudGlycGMtNy4yL250aXJwYy9sdHRuZy9u dGlycGNfdHJhY2VzLmggbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5Nzgy NTZiZDEvbnRpcnBjL2x0dG5nL250aXJwY190cmFjZXMuaAorLS0tIG50aXJwYy03LjIvbnRpcnBj L2x0dG5nL250aXJwY190cmFjZXMuaAkyMDI1LTA5LTIzIDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQw MAorKysrIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL250 aXJwYy9sdHRuZy9udGlycGNfdHJhY2VzLmgJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAg LTA0MDAKK0BAIC0zMiw2ICszMiwxMiBAQAorICNkZWZpbmUgX19TMih4KSBfX1MxKHgpCisgI2Rl ZmluZSBMSU5FX0FTX1NUUklORyBfX1MyKF9fTElORV9fKQorIAorKyNpZm5kZWYgVU5VU0VECisr I2RlZmluZSBVTlVTRURfQVRUUiBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKQorKyNkZWZpbmUgVU5V U0VEKC4uLikgVU5VU0VEXyhfX1ZBX0FSR1NfXykKKysjZGVmaW5lIFVOVVNFRF8oYXJnKSBOT1Rf VVNFRF8jI2FyZyBVTlVTRURfQVRUUgorKyNlbmRpZgorKworICNpZmRlZiBVU0VfTFRUTkdfTlRJ UlBDCisgCisgI2luY2x1ZGUgImx0dG5nX2dlbmVyYXRvci5oIgorQEAgLTU3LDcgKzYzLDcgQEAK KyAKKyAvKiBXZSBjYWxsIHRoZSBlbXB0eSBmdW5jdGlvbiB3aXRoIHRoZSB2YXJpYWJsZSBhcmdz IHRvIGF2b2lkIHVudXNlZCB2YXJpYWJsZXMKKyAgKiB3YXJuaW5nIHdoZW4gTFRUTkcgdHJhY2Vz IGFyZSBkaXNhYmxlZCAqLworLXN0YXRpYyB2b2lkIGlubGluZSBudGlycGNfZW1wdHlfZnVuY3Rp b24oY29uc3QgY2hhciogdW51c2VkLCAuLi4pIHt9Cisrc3RhdGljIHZvaWQgaW5saW5lIG50aXJw Y19lbXB0eV9mdW5jdGlvbihjb25zdCBjaGFyKiBVTlVTRUQodW51c2VkKSwgLi4uKSB7fQorIAor ICNkZWZpbmUgTlRJUlBDX0FVVE9fVFJBQ0VQT0lOVChwcm92X25hbWUsIGV2ZW50X25hbWUsIGxv Z19sZXZlbCwgLi4uKSBcCisgCQludGlycGNfZW1wdHlfZnVuY3Rpb24oInVudXNlZCIsICMjX19W QV9BUkdTX18pCitAQCAtNzQsNCArODAsNCBAQAorICNlbmRpZiAvKiBUUF9JTlRfQVJSICovCisg CisgI2VuZGlmIC8vIFVTRV9MVFROR19OVElSUEMKKy0jZW5kaWYgLy8gX19OVElSUENfVFJBQ0VT X0hfXworXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisrI2VuZGlmIC8vIF9fTlRJUlBDX1RS QUNFU19IX18KK2RpZmYgLXVyIG50aXJwYy03LjIvbnRpcnBjL3JwYy9jbG50LmggbnRpcnBjLTVj NzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvbnRpcnBjL3JwYy9jbG50LmgK Ky0tLSBudGlycGMtNy4yL250aXJwYy9ycGMvY2xudC5oCTIwMjUtMDktMjMgMTA6MDU6MTkuMDAw MDAwMDAwIC0wNDAwCisrKysgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5 NzgyNTZiZDEvbnRpcnBjL3JwYy9jbG50LmgJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAg LTA0MDAKK0BAIC0xMTUsNiArMTE1LDcgQEAKKyAJbXV0ZXhfdCBjbF9sb2NrOwkvKiBzZXJpYWxp emUgcHJpdmF0ZSBkYXRhICovCisgCXN0cnVjdCBycGNfZXJyIGNsX2Vycm9yOyAvKiBzcGVjaWZp YyBlcnJvciBjb2RlICovCisgCWludDMyX3QgY2xfcmVmY250OwkvKiBoYW5kbGUgcmVmZXJlbmNl IGNvdW50ICovCisrCWJvb2wgcmRtYV9jbG50OwkJLyogdHJhbnNwb3J0IHJkbWEgKi8KKyAJdWlu dDE2X3QgY2xfZmxhZ3M7CS8qIHN0YXRlIGZsYWdzICovCisgCisgfSBDTElFTlQ7CitAQCAtNDg5 LDYgKzQ5MCwxMSBAQAorIAkJCQljb25zdCBycGNwcm9nX3QsIGNvbnN0IHJwY3ZlcnNfdCwKKyAJ CQkJY29uc3QgdV9pbnQsIGNvbnN0IHVfaW50LCBjb25zdCB1aW50MzJfdCk7CisgCisrQ0xJRU5U ICoKKytjbG50X3JkbWFfY3JlYXRlKGludCBmZCwgY2hhciAqaG9zdCwgaW50IHBvcnQsIGludCBy ZWN2X3N6LAorKyAgICBpbnQgc2VuZF9zeiwgaW50IHBhZ2Vfc3osIGNvbnN0IHJwY3Byb2dfdCBw cm9nLAorKyAgICBjb25zdCBycGN2ZXJzX3QgdmVycywgY29uc3QgdWludDMyX3QgZmxhZ3MpOwor KworIHN0YXRpYyBpbmxpbmUgQ0xJRU5UICoKKyBjbG50X3ZjX25jcmVhdGUoY29uc3QgaW50IGZk LCBjb25zdCBzdHJ1Y3QgbmV0YnVmICpyYWRkciwKKyAJCWNvbnN0IHJwY3Byb2dfdCBwcm9nLCBj b25zdCBycGN2ZXJzX3QgdmVycywKK0BAIC01MDMsNiArNTA5LDkgQEAKKyAgKi8KKyBleHRlcm4g Q0xJRU5UICpjbG50X3ZjX25jcmVhdGVfc3ZjKGNvbnN0IFNWQ1hQUlQgKiwgY29uc3QgcnBjcHJv Z190LAorIAkJCQkgICBjb25zdCBycGN2ZXJzX3QsIGNvbnN0IHVpbnQzMl90KTsKKysKKytleHRl cm4gQ0xJRU5UICpjbG50X3JkbWFfbmNyZWF0ZWYoY29uc3QgU1ZDWFBSVCAqLCBjb25zdCBycGNw cm9nX3QsCisrCQkJCSAgY29uc3QgcnBjdmVyc190LCBjb25zdCB1aW50MzJfdCwgYm9vbCk7Cisg LyoKKyAgKiAgICAgIGNvbnN0IFNWQ1hQUlQgKnhwcnQ7ICAgICAgICAgICAgICAgICAgICAtLSBh Y3RpdmUgc2VydmljZSB4cHJ0CisgICogICAgICBjb25zdCBycGNwcm9nX3QgcHJvZzsgICAgICAg ICAgICAgICAgICAgLS0gUlBDIHByb2dyYW0gbnVtYmVyCitkaWZmIC11ciBudGlycGMtNy4yL250 aXJwYy9ycGMvaGFwcm94eS5oIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEy OTc4MjU2YmQxL250aXJwYy9ycGMvaGFwcm94eS5oCistLS0gbnRpcnBjLTcuMi9udGlycGMvcnBj L2hhcHJveHkuaAkyMDI1LTA5LTIzIDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAorKysrIG50aXJw Yy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL250aXJwYy9ycGMvaGFw cm94eS5oCTIwMjYtMDUtMTggMTk6NDA6MjAuMDAwMDAwMDAwIC0wNDAwCitAQCAtMzAsNiArMzAs MTMgQEAKKyAKKyAjaW5jbHVkZSAiY29uZmlnLmgiCisgCisrLyogQWRkaW5nIG1hY3JvIGZvciBj b21wYXRpYmlsdHkgb2YgYysrIGNvbXBpbGF0aW9uICovCisrI2lmZGVmIF9fY3BsdXNwbHVzCisr I2lmbmRlZiBfU3RhdGljX2Fzc2VydAorKyNkZWZpbmUgX1N0YXRpY19hc3NlcnQgc3RhdGljX2Fz c2VydAorKyNlbmRpZgorKyNlbmRpZgorKworICNpZm5kZWYgX05USVJQQ19SUENfSEFQUk9YWV9I CisgI2RlZmluZSBfTlRJUlBDX1JQQ19IQVBST1hZX0gKKyAKK0BAIC0xMjIsNiArMTI5LDcgQEAK KyAJdWludDE2X3Qgc3JjX3BvcnQ7CisgCXVpbnQxNl90IGRzdF9wb3J0OworIH07CisrCisgX1N0 YXRpY19hc3NlcnQoCisgCXNpemVvZihzdHJ1Y3QgcHJveHlfaGVhZGVyX2FkZHJfaXA0X3BhcnQp ID09IFBQMl9BRERSX0xFTl9JTkVULAorIAkicHJveHlfaGVhZGVyX2FkZHJfaXA0X3BhcnQgc2l6 ZSBpcyBub3QgZXF1YWwgdG8gUFAyX0FERFJfTEVOX0lORVQiKTsKK0BAIC0xMzIsNiArMTQwLDcg QEAKKyAJdWludDE2X3Qgc3JjX3BvcnQ7CisgCXVpbnQxNl90IGRzdF9wb3J0OworIH07CisrCisg X1N0YXRpY19hc3NlcnQoCisgCXNpemVvZihzdHJ1Y3QgcHJveHlfaGVhZGVyX2FkZHJfaXA2X3Bh cnQpID09IFBQMl9BRERSX0xFTl9JTkVUNiwKKyAJInByb3h5X2hlYWRlcl9hZGRyX2lwNl9wYXJ0 IHNpemUgaXMgbm90IGVxdWFsIHRvIFBQMl9BRERSX0xFTl9JTkVUNiIpOworZGlmZiAtdXIgbnRp cnBjLTcuMi9udGlycGMvcnBjL3N2Yy5oIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzcz NDdlZTEyOTc4MjU2YmQxL250aXJwYy9ycGMvc3ZjLmgKKy0tLSBudGlycGMtNy4yL250aXJwYy9y cGMvc3ZjLmgJMjAyNS0wOS0yMyAxMDowNToxOS4wMDAwMDAwMDAgLTA0MDAKKysrKyBudGlycGMt NWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9udGlycGMvcnBjL3N2Yy5o CTIwMjYtMDUtMTggMTk6NDA6MjAuMDAwMDAwMDAwIC0wNDAwCitAQCAtMTgwLDYgKzE4MCw3IEBA CisgI2RlZmluZSBTVkNfWFBSVF9GTEFHX1JFTU9URV9BRERSX1NFVAkweDAyMDAJLyogcmVtb3Rl IGFkZHIgd2FzIGZpbmFsIHNldCAqLworICNkZWZpbmUgU1ZDX1hQUlRfRkxBR19SRUFEWQkJMHgw NDAwCS8qIHJlYWR5IHRvIHVzZSAqLworICNkZWZpbmUgU1ZDX1hQUlRfRkxBR19JT1FfV1JJVElO RwkweDA4MDAJLyogeHBydCBpcyB1c2VkIGJ5IHN2Y19pb3Ffd3JpdGUgKi8KKysjZGVmaW5lIFNW Q19YUFJUX0ZMQUdfTk9fU0VUCQkweDEwMDAgIC8qIGRvIG5vdCByZWdpc3RlciB3aXRoIHJwY2Jp bmQgKi8KKyAKKyAjZGVmaW5lIFNWQ19YUFJUX0ZMQUdfREVTVFJPWUVEIChTVkNfWFBSVF9GTEFH X0RFU1RST1lJTkcgXAorIAkJCQl8IFNWQ19YUFJUX0ZMQUdfUkVMRUFTSU5HKQorQEAgLTI3Miw3 ICsyNzMsMTEgQEAKKyAJCXN0cnVjdCB7CisgCQkJc3ZjX3JlcV9mdW5fdCBwcm9jZXNzX2NiOwor IAkJCXN2Y194cHJ0X2Z1bl90IHJlbW90ZV9hZGRyX3NldF9jYjsKKysjaWZkZWYgX19jcGx1c3Bs dXMKKysJCX1jb25uZWN0aW9uX2Rpc3BhdGNoX29wczsKKysjZWxzZQorIAkJfTsKKysjZW5kaWYK KyAJCXN2Y194cHJ0X2Z1bl90IHJlbmRlenZvdXNfY2I7CisgCX0gIHhwX2Rpc3BhdGNoOworIAlT VkNYUFJUICp4cF9wYXJlbnQ7CitAQCAtMzE1LDYgKzMyMCw4IEBACisgCWludCB4cF9pZmluZGV4 OwkJLyogaW50ZXJmYWNlIGluZGV4ICovCisgCWludCB4cF9zaV90eXBlOwkJLyogc2kgdHlwZSAq LworIAlpbnQgeHBfdHlwZTsJCS8qIHhwcnQgdHlwZSAqLworKwljaGFyICp4cF9pcDsJCS8qIHJl bW90ZSBpcCAqLworKwlpbnQgeHBfcG9ydDsJCS8qIHJlbW90ZSBwb3J0ICovCisgCisgCWludDMy X3QgeHBfcmVmY250OwkvKiBoYW5kbGUgcmVmZXJlbmNlIGNvdW50ICovCisgCXVpbnQxNl90IHhw X2ZsYWdzOwkvKiBmbGFncyAqLworQEAgLTMyNyw2ICszMzQsMTAgQEAKKyAJCXN0cnVjdCBpbjZf cGt0aW5mbyBpbjY7CisgI2VuZGlmCisgCX0geHBfcGt0aW5mbzsKKysKKysJLyogQ2xpZW50IGRl dGFpbHMgLSBJUCBBZGRyZXNzICYgUG9ydCAqLworKwljaGFyIHhwX2NsbnRfYWRkcltJTkVUNl9B RERSU1RSTEVOXTsKKysJdWludDE2X3QgeHBfY2xudF9wb3J0OworIH07CisgCisgI2RlZmluZSBY UFJUX0ZNVCAieHBydDogW3B0ciA9IHt9LGZsYWdzID0ge30sZmQgPSB7fSx0eXBlID0ge30scmVm Y250ID0ge31dIgorZGlmZiAtdXIgbnRpcnBjLTcuMi9udGlycGMvcnBjL3hkci5oIG50aXJwYy01 Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL250aXJwYy9ycGMveGRyLmgK Ky0tLSBudGlycGMtNy4yL250aXJwYy9ycGMveGRyLmgJMjAyNS0wOS0yMyAxMDowNToxOS4wMDAw MDAwMDAgLTA0MDAKKysrKyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3 ODI1NmJkMS9udGlycGMvcnBjL3hkci5oCTIwMjYtMDUtMTggMTk6NDA6MjAuMDAwMDAwMDAwIC0w NDAwCitAQCAtMTIzLDcgKzEyMyw3IEBACisgCVZJT19EQVRBLCAgICAgICAgICAgICAgIC8qIGRh dGEgYnVmZmVyICovCisgCVZJT19UUkFJTEVSX0xFTiwJLyogbGVuZ3RoIGZpZWxkIGZvciBmb2xs b3dpbmcgVFJBSUxFUiBidWZmZXIgKi8KKyAJVklPX1RSQUlMRVIsICAgICAgICAgICAgLyogdHJh aWxlciBidWZmZXIgYWZ0ZXIgZGF0YSAqLworLX0gdmlvX3R5cGU7CisrfSB2aW9fdHlwZV90Owor IAorIC8qIFhEUiBidWZmZXIgdmVjdG9yIGRlc2NyaXB0b3JzICovCisgdHlwZWRlZiBzdHJ1Y3Qg eGRyX3ZpbyB7CitAQCAtMTMzLDcgKzEzMyw3IEBACisgCXVpbnQ4X3QgKnZpb193cmFwOwkvKiBt YXhpbXVtIHZpb190YWlsICovCisgCXVpbnQzMl90IHZpb19sZW5ndGg7CS8qIGxlbmd0aCBvZiBi dWZmZXIsIHVzZWQgZm9yIHZlY3RvcgorIAkJCQkgICBwcmUtYWxsb2NhdGlvbiAqLworLQl2aW9f dHlwZSB2aW9fdHlwZTsJLyogdHlwZSBvZiBidWZmZXIgKi8gICAKKysJdmlvX3R5cGVfdCB2aW9f dHlwZTsJLyogdHlwZSBvZiBidWZmZXIgKi8gICAKKyB9IHhkcl92aW87CisgCisgLyogdmlvX3dy YXAgPj0gdmlvX3RhaWwgPj0gdmlvX2hlYWQgPj0gdmlvX2Jhc2UgKi8KK0BAIC0xNjIsNyArMTYy LDExIEBACisgCQkJCSAqIDA6IG5vdCBhbGxvY2F0ZWQgKi8KKyAJdV9pbnQJdWlvX2ZsYWdzOwor IAlpbnQzMl90IHVpb19yZWZlcmVuY2VzOworKyNpZmRlZiBfX2NwbHVzcGx1cworKwl4ZHJfdmlv IHVpb192aW9bMV07CisrI2Vsc2UKKyAJeGRyX3Zpbwl1aW9fdmlvWzBdOwkvKiBhcHBlbmRlZCB2 ZWN0b3JzICovCisrI2VuZGlmCisgfSB4ZHJfdWlvOworIAorIC8qIE9wIGZsYWdzICovCitkaWZm IC11ciBudGlycGMtNy4yL250aXJwYy9ycGMveGRyX2lubGluZS5oIG50aXJwYy01Yzc2MWJiMTg2 ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL250aXJwYy9ycGMveGRyX2lubGluZS5oCist LS0gbnRpcnBjLTcuMi9udGlycGMvcnBjL3hkcl9pbmxpbmUuaAkyMDI1LTA5LTIzIDEwOjA1OjE5 LjAwMDAwMDAwMCAtMDQwMAorKysrIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdl ZTEyOTc4MjU2YmQxL250aXJwYy9ycGMveGRyX2lubGluZS5oCTIwMjYtMDUtMTggMTk6NDA6MjAu MDAwMDAwMDAwIC0wNDAwCitAQCAtNTIsNiArNTIsMTcgQEAKKyAjaW5jbHVkZSA8cnBjL3R5cGVz Lmg+CisgI2luY2x1ZGUgPHJwYy94ZHIuaD4KKyAKKysjaWZkZWYgX19jcGx1c3BsdXMKKytleHRl cm4gIkMiIHsKKysjZW5kaWYKKysKKysjaWZuZGVmIFVOVVNFRAorKyNkZWZpbmUgVU5VU0VEX0FU VFIgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKKysjZGVmaW5lIFVOVVNFRCguLi4pIFVOVVNFRF8o X19WQV9BUkdTX18pCisrI2RlZmluZSBVTlVTRURfKGFyZykgTk9UX1VTRURfIyNhcmcgVU5VU0VE X0FUVFIKKysjZW5kaWYKKysKKysKKyAvKgorICAqIFhEUiBpbnRlZ2VycworICAqLworQEAgLTYz OSw3ICs2NTAsNyBAQAorIH0KKyAKKyBzdGF0aWMgaW5saW5lIGJvb2wKKy14ZHJfYnl0ZXNfZnJl ZShYRFIgKnhkcnMsIGNoYXIgKipjcHAsIHNpemVfdCBzaXplKQorK3hkcl9ieXRlc19mcmVlKFhE UiAqVU5VU0VEKHhkcnMpLCBjaGFyICoqY3BwLCBzaXplX3Qgc2l6ZSkKKyB7CisgCWlmICgqY3Bw KSB7CisgCQltZW1fZnJlZSgqY3BwLCBzaXplKTsKK0BAIC04NDAsNyArODUxLDcgQEAKKyB9Cisg Cisgc3RhdGljIGlubGluZSBib29sCisteGRyX2FycmF5X2ZyZWUoWERSICp4ZHJzLCBjaGFyICoq Y3BwLCB1X2ludCAqc2l6ZXAsIHVfaW50IG1heHNpemUsCisreGRyX2FycmF5X2ZyZWUoWERSICp4 ZHJzLCBjaGFyICoqY3BwLCB1X2ludCAqc2l6ZXAsIHVfaW50IFVOVVNFRChtYXhzaXplKSwKKyAJ ICAgICAgIHVfaW50IHNlbGVtLCB4ZHJwcm9jX3QgeGRyX2VsZW0pCisgeworIAljaGFyICp0YXJn ZXQgPSAqY3BwOworQEAgLTk5Myw3ICsxMDA0LDcgQEAKKyB9CisgCisgc3RhdGljIGlubGluZSBi b29sCisteGRyX3N0cmluZ19mcmVlKFhEUiAqeGRycywgY2hhciAqKmNwcCkKKyt4ZHJfc3RyaW5n X2ZyZWUoWERSICpVTlVTRUQoeGRycyksIGNoYXIgKipjcHApCisgeworIAlpZiAoKmNwcCkgewor IAkJbWVtX2ZyZWUoKmNwcCwgc3RybGVuKCpjcHApICsgMSk7CitAQCAtMTA2NCw0ICsxMDc1LDgg QEAKKyAJcmV0dXJuIChpbmxpbmVfeGRyX3VfaW50NjRfdCh4ZHJzLCAodV9pbnQ2NF90ICopIHVs bHApKTsKKyB9CisgCisrI2lmZGVmIF9fY3BsdXNwbHVzCisrfQorKyNlbmRpZiAvKiBleHRlcm4g IkMiICovCisrCisgI2VuZGlmCQkJCS8qIF9USVJQQ19JTkxJTkVfWERSX0ggKi8KK2RpZmYgLXVy IG50aXJwYy03LjIvc3JjL2NsbnRfZ2VuZXJpYy5jIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1 YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9jbG50X2dlbmVyaWMuYworLS0tIG50aXJwYy03LjIv c3JjL2NsbnRfZ2VuZXJpYy5jCTIwMjUtMDktMjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCisr KysgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL2Ns bnRfZ2VuZXJpYy5jCTIwMjYtMDUtMTggMTk6NDA6MjAuMDAwMDAwMDAwIC0wNDAwCitAQCAtNDQ3 LDEwICs0NDcsNDMgQEAKKyAJcmV0dXJuICgxKTsKKyB9CisgCisrLyoKKysgKiBIZWxwZXIgZnVu Y3Rpb24gdG8gaW5zZXJ0IFJETUEgY2xpZW50IHJlcXVlc3QgaW50byBjYWxsX2V4cGlyZXMKKysg Ki8KKytzdGF0aWMgdm9pZAorK3JkbWFfY2xudF9yZXFfZXhwaXJlX2luc2VydChzdHJ1Y3QgY2xu dF9yZXEgKmNjKQorK3sKKysJc3RydWN0IGN4X2RhdGEgKmN4ID0gQ1hfREFUQShjYy0+Y2NfY2xu dCk7CisrCXN0cnVjdCBycGNfZHBseF9yZWMgKnJlYyA9IGN4LT5jeF9yZWM7CisrCXN0cnVjdCBv cHJfcmJ0cmVlX25vZGUgKm52OworKwlzdHJ1Y3QgdGltZXNwZWMgdHM7CisrCisrCS8qIENhbGN1 bGF0ZSBleHBpcmF0aW9uIHRpbWUgKi8KKysJKHZvaWQpY2xvY2tfZ2V0dGltZShDTE9DS19NT05P VE9OSUNfRkFTVCwgJnRzKTsKKysJdGltZXNwZWNhZGQoJnRzLCAmY2MtPmNjX3RpbWVvdXQsICZ0 cyk7CisrCWNjLT5jY19leHBpcmVfbXMgPSB0aW1lc3BlY19tcygmdHMpOworKworKwlycGNfZHBs eF9ybGkocmVjKTsKKysJY2MtPmNjX2ZsYWdzID0gQ0xOVF9SRVFfRkxBR19FWFBJUklORzsKKysg cmVwZWF0OgorKwludiA9IG9wcl9yYnRyZWVfaW5zZXJ0KCZyZWMtPnJkbWFfY2FsbF9leHBpcmVz LCAmY2MtPmNjX3Jxc3QpOworKwlpZiAobnYpIHsKKysJCS8qIGFkZCB0aGlzIHNsaWdodGx5IGxh dGVyICovCisrCQljYy0+Y2NfZXhwaXJlX21zKys7CisrCQlnb3RvIHJlcGVhdDsKKysJfQorKwly cGNfZHBseF9ydWkocmVjKTsKKyt9CisrCisgZW51bSBjbG50X3N0YXQKKyBjbG50X3JlcV9jYWxs YmFjayhzdHJ1Y3QgY2xudF9yZXEgKmNjKQorIHsKKy0Jc3ZjX3Jxc3RfZXhwaXJlX2luc2VydChj Yyk7CisrCS8qIEFkZCB0byBhcHByb3ByaWF0ZSBjYWxsX2V4cGlyZXMgbGlzdCBiYXNlZCBvbiB0 cmFuc3BvcnQgdHlwZSAqLworKwlpZiAoY2MtPmNjX2NsbnQtPnJkbWFfY2xudCkgeworKwkJcmRt YV9jbG50X3JlcV9leHBpcmVfaW5zZXJ0KGNjKTsKKysJfSBlbHNlIHsKKysJCXN2Y19ycXN0X2V4 cGlyZV9pbnNlcnQoY2MpOworKwl9CisgCisgCXJldHVybiBDTE5UX0NBTExfT05DRShjYyk7Cisg fQorQEAgLTQ5Miw2ICs1MjUsMjAgQEAKKyAJcmV0dXJuIChSUENfU1VDQ0VTUyk7CisgfQorIAor Ky8qCisrICogSGVscGVyIGZ1bmN0aW9uIHRvIHJlbW92ZSBSRE1BIGNsaWVudCByZXF1ZXN0IGZy b20gY2FsbF9leHBpcmVzCisrICovCisrdm9pZAorK3JkbWFfY2xudF9yZXFfZXhwaXJlX3JlbW92 ZShzdHJ1Y3QgY2xudF9yZXEgKmNjKQorK3sKKysJc3RydWN0IGN4X2RhdGEgKmN4ID0gQ1hfREFU QShjYy0+Y2NfY2xudCk7CisrCXN0cnVjdCBycGNfZHBseF9yZWMgKnJlYyA9IGN4LT5jeF9yZWM7 CisrCisrCXJwY19kcGx4X3JsaShyZWMpOworKwlvcHJfcmJ0cmVlX3JlbW92ZSgmcmVjLT5yZG1h X2NhbGxfZXhwaXJlcywgJmNjLT5jY19ycXN0KTsKKysJcnBjX2RwbHhfcnVpKHJlYyk7CisrfQor KworIHZvaWQKKyBjbG50X3JlcV9yZXNldChzdHJ1Y3QgY2xudF9yZXEgKmNjKQorIHsKK0BAIC01 MDUsNyArNTUyLDEyIEBACisgCQkJCQkgICBDTE5UX1JFUV9GTEFHX0FDS1NZTkMgfAorIAkJCQkJ ICAgQ0xOVF9SRVFfRkxBR19FWFBJUklORykKKyAJICAgICYgQ0xOVF9SRVFfRkxBR19FWFBJUklO RykgeworLQkJc3ZjX3Jxc3RfZXhwaXJlX3JlbW92ZShjYyk7CisrCQkvKiBSZW1vdmUgZnJvbSBh cHByb3ByaWF0ZSBjYWxsX2V4cGlyZXMgbGlzdCBiYXNlZCBvbiB0cmFuc3BvcnQgdHlwZSAqLwor KwkJaWYgKGNjLT5jY19jbG50LT5yZG1hX2NsbnQpIHsKKysJCQlyZG1hX2NsbnRfcmVxX2V4cGly ZV9yZW1vdmUoY2MpOworKwkJfSBlbHNlIHsKKysJCQlzdmNfcnFzdF9leHBpcmVfcmVtb3ZlKGNj KTsKKysJCX0KKyAJCWNjLT5jY19leHBpcmVfbXMgPSAwOwkvKiBhdG9taWMgYmFycmllcihzKSAq LworIAl9CisgfQorQEAgLTUyNSw2ICs1NzcsNyBAQAorIAljYy0+Y2NfcmVmcmVzaGVzID0gMjsK KyAJY2MtPmNjX3RpbWVvdXQgPSB0aW1lb3V0OworIAorKworIAlpZiAodGltZW91dC50dl9uc2Vj IDwgMCB8fCB0aW1lb3V0LnR2X25zZWMgPiA5OTk5OTk5OTkKKyAJIHx8IHRpbWVvdXQudHZfc2Vj IDwgMCkgeworIAkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLAorQEAgLTU4NSw3ICs2 MzgsMTEgQEAKKyAJaWYgKGF0b21pY19wb3N0Y2xlYXJfdWludDE2X3RfYml0cygmY2MtPmNjX2Zs YWdzLAorIAkJCQkJICAgQ0xOVF9SRVFfRkxBR19FWFBJUklORykKKyAJICAgICYgQ0xOVF9SRVFf RkxBR19FWFBJUklORykgeworLQkJc3ZjX3Jxc3RfZXhwaXJlX3JlbW92ZShjYyk7CisrCQlpZiAo Y2MtPmNjX2NsbnQtPnJkbWFfY2xudCkgeworKwkJCXJkbWFfY2xudF9yZXFfZXhwaXJlX3JlbW92 ZShjYyk7CisrCQl9IGVsc2UgeworKwkJCXN2Y19ycXN0X2V4cGlyZV9yZW1vdmUoY2MpOworKwkJ fQorIAkJY2MtPmNjX2V4cGlyZV9tcyA9IDA7CS8qIGF0b21pYyBiYXJyaWVyKHMpICovCisgCX0K KyAKK2RpZmYgLXVyIG50aXJwYy03LjIvc3JjL2NsbnRfaW50ZXJuYWwuaCBudGlycGMtNWM3NjFi YjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMvY2xudF9pbnRlcm5hbC5oCist LS0gbnRpcnBjLTcuMi9zcmMvY2xudF9pbnRlcm5hbC5oCTIwMjUtMDktMjMgMTA6MDU6MTkuMDAw MDAwMDAwIC0wNDAwCisrKysgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5 NzgyNTZiZDEvc3JjL2NsbnRfaW50ZXJuYWwuaAkyMDI2LTA1LTE4IDE5OjQwOjIwLjAwMDAwMDAw MCAtMDQwMAorQEAgLTY0LDUgKzY0LDkgQEAKKyAvKiBpbiBzdmNfcnFzdC5jICovCisgdm9pZCBz dmNfcnFzdF9leHBpcmVfaW5zZXJ0KHN0cnVjdCBjbG50X3JlcSAqKTsKKyB2b2lkIHN2Y19ycXN0 X2V4cGlyZV9yZW1vdmUoc3RydWN0IGNsbnRfcmVxICopOworLQorK3ZvaWQgc3ZjX3Jxc3RfZXhw aXJlX3Rhc2soc3RydWN0IHdvcmtfcG9vbF9lbnRyeSAqKTsKKytpbnQgc3ZjX3Jxc3RfZXhwaXJl X2NtcGYoY29uc3Qgc3RydWN0IG9wcl9yYnRyZWVfbm9kZSAqbGhzLAorKwkJCSBjb25zdCBzdHJ1 Y3Qgb3ByX3JidHJlZV9ub2RlICpyaHMpOworK3ZvaWQgcmRtYV9jbG50X3JlcV9leHBpcmVfcmVt b3ZlKHN0cnVjdCBjbG50X3JlcSAqKTsKKytib29sIGNsbnRfZGF0YV9pc3ZhbGlkKHN0cnVjdCBy cGNfY2xpZW50ICopOworICNlbmRpZgkJCQkvKiBfQ0xOVF9JTlRFUk5BTF9IICovCitkaWZmIC11 ciBudGlycGMtNy4yL3NyYy9jbG50X3JkbWEuYyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJh Yjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMvY2xudF9yZG1hLmMKKy0tLSBudGlycGMtNy4yL3NyYy9j bG50X3JkbWEuYwkyMDI1LTA5LTIzIDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAorKysrIG50aXJw Yy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9jbG50X3JkbWEu YwkyMDI2LTA1LTE4IDE5OjQwOjIwLjAwMDAwMDAwMCAtMDQwMAorQEAgLTU0LDYgKzU0LDcgQEAK KyAjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgInJwY19jb20uaCIKKyAjaW5jbHVkZSAiY2xu dF9pbnRlcm5hbC5oIgorKyNpbmNsdWRlICJzdmNfaW50ZXJuYWwuaCIKKyAjaW5jbHVkZSAicnBj X3JkbWEuaCIKKyAKKyAjZGVmaW5lIE1BWF9ERUZBVUxUX0ZEUwkJIDIwMDAwCitAQCAtODgsMjkg Kzg5LDEwMSBAQAorICAqIGZvbGxvd2VkIGJ5IENMTlRfREVTVFJPWSgpIGFzIG5lY2Vzc2FyeS4K KyAgKi8KKyBDTElFTlQgKgorLWNsbnRfcmRtYV9uY3JlYXRlZihSRE1BWFBSVCAqcmRtYV94cHJ0 LAkJLyogaW5pdCBidXQgTk9UIGNvbm5lY3QoKWVkICovCisrY2xudF9yZG1hX25jcmVhdGVmKGNv bnN0IFNWQ1hQUlQgKnhwcnQsCQkvKiBpbml0IGJ1dCBOT1QgY29ubmVjdCgpZWQgKi8KKyAJCSAg IGNvbnN0IHJwY3Byb2dfdCBwcm9ncmFtLAorIAkJICAgY29uc3QgcnBjdmVyc190IHZlcnNpb24s CistCQkgICBjb25zdCB1X2ludCBmbGFncykKKysJCSAgIGNvbnN0IHVfaW50IGZsYWdzLCBib29s IGNyZWF0ZSkKKyB7CisgCXN0cnVjdCBjbV9kYXRhICpjbSA9IGNsbnRfcmRtYV9kYXRhX3phbGxv YygpOworIAlDTElFTlQgKmNsID0gJmNtLT5jbV9jeC5jeF9jOworIAlzdHJ1Y3QgcnBjX21zZyBj YWxsX21zZzsKKyAJWERSIHhkcnNbMV07CQkvKiB0ZW1wIFhEUiBzdHJlYW0gKi8KKyAKKy0JY2wt PmNsX29wcyA9IGNsbnRfcmRtYV9vcHMoKTsKKy0KKy0JaWYgKCFyZG1hX3hwcnQgfHwgcmRtYV94 cHJ0LT5zdGF0ZSAhPSBSRE1BWFNfSU5JVElBTCkgeworLQkJX193YXJueChUSVJQQ19ERUJVR19G TEFHX0VSUk9SLAorLQkJCSIlczogJXBAJXAgY2FsbGVkIHdpdGggaW52YWxpZCB0cmFuc3BvcnQg YWRkcmVzcyIsCistCQkJX19mdW5jX18sIGNsLCByZG1hX3hwcnQpOworLQkJY2wtPmNsX2Vycm9y LnJlX3N0YXR1cyA9IFJQQ19VTktOT1dOQUREUjsKKy0JCXJldHVybiAoY2wpOworKwlSRE1BWFBS VCAqcmRtYV94cHJ0ID0gTlVMTDsKKysJaWYgKGNyZWF0ZSkgeworKwkJcmRtYV94cHJ0ID0gcnBj X3JkbWFfYWxsb2NhdGUoKChSRE1BWFBSVCAqKXhwcnQpLT54YSk7CisrCQlpZiAoIXJkbWFfeHBy dCkgeworKwkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwKKysJCQkJIiVzOiByZG1h IGFsbG9jYXRlIGZhaWxlZCIsIF9fZnVuY19fKTsKKysJCQljbC0+Y2xfZXJyb3IucmVfc3RhdHVz ID0gUlBDX1NZU1RFTUVSUk9SOworKwkJCXJldHVybiBjbDsKKysJCX0KKysJfSBlbHNlIHsKKysJ CXJkbWFfeHBydCA9IChSRE1BWFBSVCAqKXhwcnQ7CisrCQlyZG1hX3hwcnQtPnNoYXJlZCA9IHRy dWU7CisrCQkvKiBUYWtlIHJlZiBmb3Igc2hhcmVkIHhwcnQgKi8KKysJCVNWQ19SRUYoJnJkbWFf eHBydC0+c21fZHIueHBydCwgU1ZDX1JFRl9GTEFHX05PTkUpOworIAl9CisrCisgCWNtLT5jbV9j eC5jeF9yZWMgPSAmcmRtYV94cHJ0LT5zbV9kcjsKKysJY2wtPmNsX29wcyA9IGNsbnRfcmRtYV9v cHMoKTsKKysJY2wtPnJkbWFfY2xudCA9IHRydWU7CisgCistCXJwY19yZG1hX2Nvbm5lY3QocmRt YV94cHJ0KTsKKy0JcnBjX3JkbWFfY29ubmVjdF9maW5hbGl6ZShyZG1hX3hwcnQpOworKwkvKiBU aGlzIGlzIHVzZWQgd2hlbiB3ZSB3YW50IHRvIGNyZWF0ZSBzZXBlcmF0ZQorKwkgKiBjb25uZWN0 aW9uIGZvciBjYWxsYmFjayBjaGFubmVsLgorKwkgKiB4cHJ0IHdlIGFyZSBwYXNzaW5nIGlzIGV4 aXN0aW5nIGNvbm5lY3Rpb24sCisrCSAqIHNvIHdlIG5lZWQgc2VwYXJldCBmbGFnIHRvIGluZGlj YXRlIHdlIHdhbnQgdG8KKysJICogY3JlYXRlIG5ldyBjb25uZWN0aW9uIG9yIGV4aXN0aW5nIG9u ZSBhcyBjYWxsYmFjayBjaGFubmVsLgorKwkgKiBGb3IgTkZTdjQuMSBpdHMgYWx3YXlzIGZhbHNl LCBzaW5jZSB3ZSB3YW50IHRvIHVzZSBzYW1lIGNvbm5lY3Rpb24uICovCisrCWlmIChjcmVhdGUp IHsKKysJCS8qIENvcHkgcmVtb3RlIGlwICovCisrCQlzdmNfcmRtYV9vcHMoJnJkbWFfeHBydC0+ c21fZHIueHBydCk7CisrCisrCQlyZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfaXAgPSBtZW1fYWxs b2MoU09DS19OQU1FX01BWCk7CisrCQltZW1jcHkocmRtYV94cHJ0LT5zbV9kci54cHJ0LnhwX2lw LCB4cHJ0LT54cF9pcCwgU09DS19OQU1FX01BWCk7CisrCQlyZG1hX3hwcnQtPnNtX2RyLnhwcnQu eHBfcG9ydCA9IHhwcnQtPnhwX3BvcnQ7CisrCisrCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdf UlBDX1JETUEsICIlczogY3JlYXRlIHJkbWEgY2xudCBpcCAlcyBwb3J0ICVkIiwKKysJCQlfX2Z1 bmNfXywgcmRtYV94cHJ0LT5zbV9kci54cHJ0LnhwX2lwLCByZG1hX3hwcnQtPnNtX2RyLnhwcnQu eHBfcG9ydCk7CisrCisrCQkvKiBSRE1BWF9DTElFTlQgaW5kaWNhdGUgaXMgY2xpZW50IGNvbm5l Y3Rpb24gZnJvbQorKwkJICogc2VydmVyIHRvIGNsaWVudCBpZiB3ZSBhcmUgY3JlYXRpbmcgbmV3 IGNvbm5lY3Rpb24KKysJCSAqIGZvciBzZXJ2ZXIgbGlzdGVuIGNvbm5lY3Rpb24gd2UgdXNlIHhh LT5iYWNrbG9nCisrCQkgKiBmb3IgY2xpZW50IHRvIHNlcnZlciBjb25uZWN0aW9uIHdlIHVzZSBS RE1BWF9TRVJWRVJfQ0hJTEQgKi8KKysJCXJkbWFfeHBydC0+c2VydmVyID0gUkRNQVhfQ0xJRU5U OworKworKwkJaWYgKCFyZG1hX3hwcnQgfHwgcmRtYV94cHJ0LT5zdGF0ZSAhPSBSRE1BWFNfSU5J VElBTCkgeworKwkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwKKysJCQkJIiVzOiAl cEAlcCBjYWxsZWQgd2l0aCBpbnZhbGlkIHRyYW5zcG9ydCBhZGRyZXNzIiwKKysJCQkJX19mdW5j X18sIGNsLCByZG1hX3hwcnQpOworKwkJCWNsLT5jbF9lcnJvci5yZV9zdGF0dXMgPSBSUENfVU5L Tk9XTkFERFI7CisrCQkJcmV0dXJuIChjbCk7CisrCQl9CisrCisrCQlpZiAocnBjX3JkbWFfY29u bmVjdF9wcmVwYXJlKHJkbWFfeHBydCkpIHsKKysJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdf RVJST1IsICIlczogZmFpbGVkIiwgX19mdW5jX18pOworKwkJCWNsLT5jbF9lcnJvci5yZV9zdGF0 dXMgPSBSUENfVU5LTk9XTkFERFI7CisrCQkJcmV0dXJuIChjbCk7CisrCQl9CisrCisrCQlpZiAo cnBjX3JkbWFfY29ubmVjdChyZG1hX3hwcnQpKSB7CisrCQkJX193YXJueChUSVJQQ19ERUJVR19G TEFHX0VSUk9SLAorKwkJCQkiJXM6IHJkbWEgY29ubmVjdCBmYWlsZWQiLCBfX2Z1bmNfXyk7Cisr CQkJY2wtPmNsX2Vycm9yLnJlX3N0YXR1cyA9IFJQQ19VTktOT1dOQUREUjsKKysJCQlyZXR1cm4g KGNsKTsKKysJCX0KKysJCWlmIChycGNfcmRtYV9jb25uZWN0X2ZpbmFsaXplKHJkbWFfeHBydCkp IHsKKysJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCisrCQkJCSIlczogcmRtYSBj b25uZWN0IGZpbmFsaXplIGZhaWxlZCIsIF9fZnVuY19fKTsKKysJCQljbC0+Y2xfZXJyb3IucmVf c3RhdHVzID0gUlBDX1VOS05PV05BRERSOworKwkJCXJldHVybiAoY2wpOworKwkJfQorKworKwkJ c3RydWN0IHJwY19kcGx4X3JlYyAqcmVjID0gUkVDX1hQUlQoeHBydCk7CisrCQlyZG1hX3hwcnQt PnNtX2RyLnJlY3ZzeiA9IHJlYy0+cmVjdnN6OworKwkJcmRtYV94cHJ0LT5zbV9kci5zZW5kc3og PSByZWMtPnNlbmRzejsKKysJCXJkbWFfeHBydC0+c21fZHIucGFnZXN6ID0gcmVjLT5wYWdlc3o7 CisrCisrCQlyZG1hX3hwcnQtPnNtX2RyLnJlY3ZfaGRyX3N6ID0gcmVjLT5yZWN2X2hkcl9zejsK KysJCXJkbWFfeHBydC0+c21fZHIuc2VuZF9oZHJfc3ogPSByZWMtPnNlbmRfaGRyX3N6OworKwor KwkJaWYgKHhkcl9yZG1hX2NyZWF0ZShyZG1hX3hwcnQpKSB7CisrCQkJX193YXJueChUSVJQQ19E RUJVR19GTEFHX0VSUk9SLAorKwkJCQkiJXM6IGJ1ZmZlciBhbGxvY2F0aW9uIGZhaWxlZCIsIF9f ZnVuY19fKTsKKysJCQljbC0+Y2xfZXJyb3IucmVfc3RhdHVzID0gUlBDX1NZU1RFTUVSUk9SOwor KwkJCXJldHVybiAoY2wpOworKwkJfQorKwl9CisgCisgCS8qCisgCSAqIGluaXRpYWxpemUgY2Fs bCBtZXNzYWdlCitAQCAtMTYyLDIzICsyMzUsNDIgQEAKKyAJCXhkcl9yZG1hX2lvcV91dl9mZXRj aCgmcmRtYV94cHJ0LT5zbV9kci5pb3EsICZyZG1hX3hwcnQtPmNicWgsCisgCQkJCSAiY2FsbCBj b250ZXh0IiwgMSwgSU9RX0ZMQUdfTk9ORSk7CisgCXN0cnVjdCBycGNfcmRtYV9jYmMgKmNiYyA9 IChzdHJ1Y3QgcnBjX3JkbWFfY2JjICopKF9JT1EoaGF2ZSkpOworKworKyAgICAgICAgY2JjLT5y ZWN2cS54ZHJzWzBdLnhfbGliWzFdID0KKysgICAgICAgIGNiYy0+c2VuZHEueGRyc1swXS54X2xp YlsxXSA9CisrICAgICAgICBjYmMtPmRhdGFxLnhkcnNbMF0ueF9saWJbMV0gPQorKyAgICAgICAg Y2JjLT5mcmVlcS54ZHJzWzBdLnhfbGliWzFdID0gcmRtYV94cHJ0OworKworKyAgICAgICAgcHRo cmVhZF9tdXRleF9sb2NrKCZyZG1hX3hwcnQtPmNiY2xpc3QucW11dGV4KTsKKysKKysgICAgICAg IGNiYy0+Y2FsbF9pbmxpbmUgPSAxOworKyAgICAgICAgY2JjLT5kYXRhX2NodW5rX3V2ID0gTlVM TDsKKysgICAgICAgIGNiYy0+cmVmY250ID0gMTsgLy8gU2VudGluZWwgcmVmCisrCVNWQ19SRUYo JnJkbWFfeHBydC0+c21fZHIueHBydCwgU1ZDX1JFRl9GTEFHX05PTkUpOyAvLyBmb3IgY2JjIHJl ZgorKyAgICAgICAgY2JjLT5jYmNfZmxhZ3MgPSBDQkNfRkxBR19SRUxFQVNFOworKyAgICAgICAg Y2JjLT5yZWFkX3dhaXRzID0gMDsKKysgICAgICAgIGNiYy0+d3JpdGVfd2FpdHMgPSAwOworKyAg ICAgICAgY2JjLT5hY3RpdmUgPSBmYWxzZTsKKysgICAgICAgIGNiYy0+bm9uX3JlZ2lzdGVyZWRf YnVmID0gTlVMTDsKKysgICAgICAgIGNiYy0+bm9uX3JlZ2lzdGVyZWRfYnVmX2xlbiA9IDA7Cisr CisrICAgICAgICBUQUlMUV9JTlNFUlRfVEFJTCgmcmRtYV94cHJ0LT5jYmNsaXN0LnFoLCAmY2Jj LT5jYmNfbGlzdCwgcSk7CisrICAgICAgICByZG1hX3hwcnQtPmNiY2xpc3QucWNvdW50Kys7Cisr ICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmcmRtYV94cHJ0LT5jYmNsaXN0LnFtdXRleCk7 CisrCisgCVhEUiAqeGRyczsKKyAJdV9pbnQzMl90ICp1aW50MzJwOworIAorLQkvKiBmcmVlIG9s ZCBidWZmZXJzIChzaG91bGQgZG8gbm90aGluZykgKi8KKy0JeGRyX2lvcV9yZWxlYXNlKCZjYmMt PnJlY3ZxLmlvcV91di51dnFoKTsKKy0JeGRyX2lvcV9yZWxlYXNlKCZjYmMtPnNlbmRxLmlvcV91 di51dnFoKTsKKy0JeGRyX3JkbWFfY2FsbHEocmRtYV94cHJ0KTsKKy0KKy0JY2JjLT5yZWN2cS54 ZHJzWzBdLnhfbGliWzFdID0KKy0JY2JjLT5zZW5kcS54ZHJzWzBdLnhfbGliWzFdID0gcmRtYV94 cHJ0OworKwljYy0+Y2NfdGltZW91dC50dl9zZWMgPSBjYy0+Y2NfdGltZW91dC50dl9uc2VjID0g MDsKKyAKKy0JKHZvaWQpIHhkcl9yZG1hX2lvcV91dl9mZXRjaCgmY2JjLT5zZW5kcSwgJnJkbWFf eHBydC0+b3V0YnVmc19kYXRhLnV2cWgsCisrCS8qIFVzZSBoZHIgYnVmZmVyIHNpbmNlIGNhbGxi YWNrcyBkb24ndCBjb250YWluIGRhdGEgKi8KKysJKHZvaWQpIHhkcl9yZG1hX2lvcV91dl9mZXRj aCgmY2JjLT5zZW5kcSwgJnJkbWFfeHBydC0+b3V0YnVmc19oZHIudXZxaCwKKyAJCQkJImNhbGwg YnVmZmVyIiwgMSwgSU9RX0ZMQUdfTk9ORSk7CisgCXhkcl9pb3FfcmVzZXQoJmNiYy0+c2VuZHEs IDApOworIAorIAl4ZHJzID0gY2JjLT5zZW5kcS54ZHJzOworIAljYy0+Y2NfZXJyb3IucmVfc3Rh dHVzID0gUlBDX1NVQ0NFU1M7CisrCXhkcnMtPnhfb3AgPSBYRFJfRU5DT0RFOworIAorIAltdXRl eF9sb2NrKCZjbC0+Y2xfbG9jayk7CisgCXVpbnQzMnAgPSAodV9pbnQzMl90ICopJmN4LT5jeF9t Y2FsbGNbMF07CitAQCAtMTk0LDE2ICsyODYsMjAgQEAKKyAJCV9fd2FybngoVElSUENfREVCVUdf RkxBR19DTE5UX1JETUEsCisgCQkJIiVzOiAlcEAlcCBmYWlsZWQiLAorIAkJCV9fZnVuY19fLCBj bCwgY3gtPmN4X3JlYyk7CistCQl4ZHJfaW9xX3JlbGVhc2UoJmNiYy0+c2VuZHEuaW9xX3V2LnV2 cWgpOworKwkJY2JjX3JlbGVhc2VfaXQoY2JjKTsKKyAJCXJldHVybiAoUlBDX0NBTlRFTkNPREVB UkdTKTsKKyAJfQorIAltdXRleF91bmxvY2soJmNsLT5jbF9sb2NrKTsKKyAKKysJLyogc2VuZCBy ZXF1ZXN0IGFuZCByZWN2IHJlc3BvbnNlICovCisgCWlmICgheGRyX3JkbWFfY2xudF9mbHVzaG91 dChjYmMpKSB7CisrCQljYmNfcmVsZWFzZV9pdChjYmMpOworIAkJY2wtPmNsX2Vycm9yLnJlX2Vy cm5vID0gZXJybm87CisgCQlyZXR1cm4gKFJQQ19DQU5UU0VORCk7CisgCX0KKyAKKysJY2JjX3Jl bGVhc2VfaXQoY2JjKTsKKysKKyAJcmV0dXJuIChSUENfU1VDQ0VTUyk7CisgfQorIAorZGlmZiAt dXIgbnRpcnBjLTcuMi9zcmMvY2xudF92Yy5jIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFi NzczNDdlZTEyOTc4MjU2YmQxL3NyYy9jbG50X3ZjLmMKKy0tLSBudGlycGMtNy4yL3NyYy9jbG50 X3ZjLmMJMjAyNS0wOS0yMyAxMDowNToxOS4wMDAwMDAwMDAgLTA0MDAKKysrKyBudGlycGMtNWM3 NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMvY2xudF92Yy5jCTIwMjYt MDUtMTggMTk6NDA6MjAuMDAwMDAwMDAwIC0wNDAwCitAQCAtNzMsNiArNzMsOSBAQAorICNpbmNs dWRlICJzdmNfaW9xLmgiCisgI2luY2x1ZGUgImNsbnRfaW50ZXJuYWwuaCIKKyAjaW5jbHVkZSAi c3ZjX2ludGVybmFsLmgiCisrI2lmZGVmIFVTRV9SUENfUkRNQQorKyNpbmNsdWRlICJycGNfcmRt YS5oIgorKyNlbmRpZgorIAorIHN0YXRpYyBlbnVtIHhwcnRfc3RhdCBjbG50X3ZjX3Byb2Nlc3Mo c3RydWN0IHN2Y19yZXEgKnJlcSk7Cisgc3RhdGljIHN0cnVjdCBjbG50X29wcyAqY2xudF92Y19v cHModm9pZCk7CitAQCAtMTI0LDYgKzEyNyw0OSBAQAorICAqICAgICAgc2VydmVyIHRyYW5wc29y dHMgc2hhcmluZyBhbiB1bmRlcmx5aW5nIGJ5dGVzdHJlYW0gKE1hdHQpLgorICAqLworIAorKyNp ZmRlZiBVU0VfUlBDX1JETUEKKysvKiBDcmVhdGUgbmV3IFJETUEgY2xpZW50IHdpdGggc3BlY2lm aWVkIGNvbm5lY3Rpb24gcGFyYW1ldGVycyAqLworK0NMSUVOVCAqCisrY2xudF9yZG1hX2NyZWF0 ZShpbnQgZmQsIGNoYXIgKmhvc3QsIGludCBwb3J0LCBpbnQgcmVjdl9zeiwgaW50IHNlbmRfc3os CisrICAgIGludCBwYWdlX3N6LCBjb25zdCBycGNwcm9nX3QgcHJvZywgY29uc3QgcnBjdmVyc190 IHZlcnMsCisrICAgIGNvbnN0IHVpbnQzMl90IGZsYWdzKQorK3sKKysJc3RydWN0IHJwY19yZG1h X2F0dHIgdG1wX3hhID0geworKwkJLnN0YXRpc3RpY3NfcHJlZml4ID0gTlVMTCwKKysJCS5ub2Rl ID0gIjo6IiwKKysJCS5wb3J0ID0gIjIwMDQ5IiwgICAgICAgICAgICAgICAgLyogZGVmYXVsdCBw b3J0IDIwMDQ5ICovCisrCQkuc3FfZGVwdGggPSAzMiwgICAgICAgICAgICAgICAgIC8qIGRlZmF1 bHQgd2FzIDUwICovCisrCQkubWF4X3NlbmRfc2dlID0gMzIsICAgICAgICAgICAgIC8qIG1pbmlt dW0gMiAqLworKwkJLnJxX2RlcHRoID0gMzIsICAgICAgICAgICAgICAgICAvKiBkZWZhdWx0IHdh cyA1MCAqLworKwkJLm1heF9yZWN2X3NnZSA9IDMxLCAgICAgICAgICAgICAvKiBtaW5pbXVtIDEg Ki8KKysJCS5iYWNrbG9nID0gMTAsICAgICAgICAgICAgICAgICAgLyogbWluaW11bSAyICovCisr CQkuY3JlZGl0cyA9IDMwLCAgICAgICAgICAgICAgICAgIC8qIGRlZmF1bHQgMTAgKi8KKysJCS5k ZXN0cm95X29uX2Rpc2Nvbm5lY3QgPSB0cnVlLAorKwkJLnVzZV9zcnEgPSBmYWxzZSwKKysJfTsK KysJc3RydWN0IHJwY19yZG1hX2F0dHIgKnVzZV94YSA9IG1lbV9hbGxvYyhzaXplb2Yoc3RydWN0 IHJwY19yZG1hX2F0dHIpKTsKKysJbWVtY3B5KHVzZV94YSwgJnRtcF94YSwgc2l6ZW9mKHN0cnVj dCBycGNfcmRtYV9hdHRyKSk7CisrCVNWQ1hQUlQgKnhwcnQgPSBzdmNfZmRfbmNyZWF0ZWYoZmQs IHNlbmRfc3osIHJlY3Zfc3osIGZsYWdzKTsKKysJaWYgKCF4cHJ0KSB7CisrCQlfX3dhcm54KFRJ UlBDX0RFQlVHX0ZMQUdfRVJST1IsICIlczogRmFpbGVkIHRvIGNyZWF0ZSB4cHJ0IGZkICVkIiwK KysJCQlfX2Z1bmNfXywgZmQpOworKwkJcmV0dXJuIE5VTEw7CisrCX0KKysJUkRNQVhQUlQgKnJk bWFfeHBydCA9IChSRE1BWFBSVCAqKXhwcnQ7CisrCXJkbWFfeHBydC0+eGEgPSB1c2VfeGE7Cisr CXN0cnVjdCBycGNfZHBseF9yZWMgKnJlYyA9IFJFQ19YUFJUKHhwcnQpOworKwlyZWMtPnJlY3Zz eiA9IFJETUFfREFUQV9DSFVOS19TWjsKKysJcmVjLT5zZW5kc3ogPSBSRE1BX0RBVEFfQ0hVTktf U1o7CisrCXJlYy0+cGFnZXN6ID0gcGFnZV9zejsKKysJcmVjLT5yZWN2X2hkcl9zeiA9IFJETUFf SERSX0NIVU5LX1NaOworKwlyZWMtPnNlbmRfaGRyX3N6ID0gUkRNQV9IRFJfQ0hVTktfU1o7Cisr CXhwcnQtPnhwX2lwID0gaG9zdDsKKysJeHBydC0+eHBfcG9ydCA9IHBvcnQ7CisrCS8qIGNyZWF0 ZSByZG1hX3hwcnQgdXNpbmcgeHBydCAqLworKwlyZXR1cm4gY2xudF9yZG1hX25jcmVhdGVmKHhw cnQsIHByb2csIHZlcnMsIGZsYWdzLCB0cnVlKTsKKyt9CisrI2VuZGlmCisrCisgLyoKKyAgKiBD cmVhdGUgYSBjbGllbnQgaGFuZGxlIGZvciBhIGNvbm5lY3Rpb24uCisgICogRGVmYXVsdCBvcHRp b25zIGFyZSBzZXQsIHdoaWNoIHRoZSB1c2VyIGNhbiBjaGFuZ2UgdXNpbmcgY2xudF9jb250cm9s KCkncy4KK2RpZmYgLXVyIG50aXJwYy03LjIvc3JjL0NNYWtlTGlzdHMudHh0IG50aXJwYy01Yzc2 MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9DTWFrZUxpc3RzLnR4dAor LS0tIG50aXJwYy03LjIvc3JjL0NNYWtlTGlzdHMudHh0CTIwMjUtMDktMjMgMTA6MDU6MTkuMDAw MDAwMDAwIC0wNDAwCisrKysgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5 NzgyNTZiZDEvc3JjL0NNYWtlTGlzdHMudHh0CTIwMjYtMDUtMTggMTk6NDA6MjAuMDAwMDAwMDAw IC0wNDAwCitAQCAtNSw5ICs1LDYgQEAKKyAgIC1EX0dOVV9TT1VSQ0UKKyApCisgCistIyBvayBv biBMaW51eCBhbmQgRnJlZUJTRCB3L0dDQyBhbmQgY2xhbmcgY29tcGlsZXJzCistc2V0KENNQUtF X0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gLWZQSUMiKQorLQorICMjIyMjIyMjIyMjIG5leHQg dGFyZ2V0ICMjIyMjIyMjIyMjIyMjIworIAorIFNFVChudGlycGNfY29tbW9uX1NSQ1MKK0BAIC0y Nyw3ICsyNCw2IEBACisgICBnZXRuZXRjb25maWcuYworICAgZ2V0bmV0cGF0aC5jCisgICBnZXRw ZWVyZWlkLmMKKy0gIGdldHJwY2VudC5jCisgICBtdF9taXNjLmMKKyAgIHBtYXBfcHJvdC5jCisg ICBwbWFwX3Byb3QyLmMKK0BAIC0xMzYsNyArMTMyLDcgQEAKKyAgIFNPVkVSU0lPTiAiJHtOVElS UENfTUFKT1JfVkVSU0lPTn0ke05USVJQQ19NSU5PUl9WRVJTSU9OfSIKKyAgICkKKyAKKy1pbnN0 YWxsKFRBUkdFVFMgbnRpcnBjIERFU1RJTkFUSU9OICR7TElCX0lOU1RBTExfRElSfSkKKytpbnN0 YWxsKFRBUkdFVFMgbnRpcnBjIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9KQor IAorICMjIyMjIyMjIyMjIGluc3RhbGwgZmlsZXMgIyMjIyMjIyMjIyMjIyMjCisgCitkaWZmIC11 ciBudGlycGMtNy4yL3NyYy9saWJudGlycGMubWFwLmluLmNtYWtlIG50aXJwYy01Yzc2MWJiMTg2 ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9saWJudGlycGMubWFwLmluLmNtYWtl CistLS0gbnRpcnBjLTcuMi9zcmMvbGlibnRpcnBjLm1hcC5pbi5jbWFrZQkyMDI1LTA5LTIzIDEw OjA1OjE5LjAwMDAwMDAwMCAtMDQwMAorKysrIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFi NzczNDdlZTEyOTc4MjU2YmQxL3NyYy9saWJudGlycGMubWFwLmluLmNtYWtlCTIwMjYtMDUtMTgg MTk6NDA6MjAuMDAwMDAwMDAwIC0wNDAwCitAQCAtNzAsNiArNzAsOCBAQAorICAgICBjbG50X3Zj X2dldF9jbGllbnRfeHBydDsKKyAgICAgY2xudF92Y19uY3JlYXRlZjsKKyAgICAgY2xudF92Y19u Y3JlYXRlX3N2YzsKKysgICAgY2xudF9yZG1hX2NyZWF0ZTsKKysgICAgY2xudF9yZG1hX25jcmVh dGVmOworIAorICAgICAjIGUqCisgICAgIGVuZG5ldGNvbmZpZzsKK2RpZmYgLXVyIG50aXJwYy03 LjIvc3JjL2x0dG5nL0NNYWtlTGlzdHMudHh0IG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFi NzczNDdlZTEyOTc4MjU2YmQxL3NyYy9sdHRuZy9DTWFrZUxpc3RzLnR4dAorLS0tIG50aXJwYy03 LjIvc3JjL2x0dG5nL0NNYWtlTGlzdHMudHh0CTIwMjUtMDktMjMgMTA6MDU6MTkuMDAwMDAwMDAw IC0wNDAwCisrKysgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZi ZDEvc3JjL2x0dG5nL0NNYWtlTGlzdHMudHh0CTIwMjYtMDUtMTggMTk6NDA6MjAuMDAwMDAwMDAw IC0wNDAwCitAQCAtMjIsNyArMjIsNyBAQAorICAgU09WRVJTSU9OICIke05USVJQQ19NQUpPUl9W RVJTSU9OfSR7TlRJUlBDX01JTk9SX1ZFUlNJT059IgorICkKKyAKKy1pbnN0YWxsKFRBUkdFVFMg bnRpcnBjX3RyYWNlcG9pbnRzIENPTVBPTkVOVCB0cmFjaW5nIERFU1RJTkFUSU9OICR7TElCX0lO U1RBTExfRElSfSApCisraW5zdGFsbChUQVJHRVRTIG50aXJwY190cmFjZXBvaW50cyBDT01QT05F TlQgdHJhY2luZyBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfTElCRElSfSApCisgCisgYWRk X2xpYnJhcnkobnRpcnBjX2x0dG5nIFNUQVRJQyBsdHRuZ19kZWZpbmVzLmMpCisgI2FkZF9zYW5p dGl6ZXJzKG50aXJwY19sdHRuZykKK2RpZmYgLXVyIG50aXJwYy03LjIvc3JjL21ldHJpY3NfbGli bnRpcnBjLmggbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEv c3JjL21ldHJpY3NfbGlibnRpcnBjLmgKKy0tLSBudGlycGMtNy4yL3NyYy9tZXRyaWNzX2xpYm50 aXJwYy5oCTIwMjUtMDktMjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCisrKysgbnRpcnBjLTVj NzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL21ldHJpY3NfbGlibnRp cnBjLmgJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAgLTA0MDAKK0BAIC0zMyw2ICszMyw3 IEBACisgI2luY2x1ZGUgPHJwYy9hdXRoX2dzcy5oPgorICNlbmRpZgorICNpbmNsdWRlIDxycGMv YXV0aF9zdGF0Lmg+CisrI2luY2x1ZGUgPHRpbWUuaD4KKyAKKyB0eXBlZGVmIGVudW0gZ3NzX3N2 Y19hdXRoX3N0ZXAgeworIAlWQUxJREFURV9BVVRIX0RBVEEgPSAwLAorZGlmZiAtdXIgbnRpcnBj LTcuMi9zcmMvbW9uaXRvcmluZy9DTWFrZUxpc3RzLnR4dCBudGlycGMtNWM3NjFiYjE4NmU5ZWEz ZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMvbW9uaXRvcmluZy9DTWFrZUxpc3RzLnR4dAor LS0tIG50aXJwYy03LjIvc3JjL21vbml0b3JpbmcvQ01ha2VMaXN0cy50eHQJMjAyNS0wOS0yMyAx MDowNToxOS4wMDAwMDAwMDAgLTA0MDAKKysrKyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJh Yjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMvbW9uaXRvcmluZy9DTWFrZUxpc3RzLnR4dAkyMDI2LTA1 LTE4IDE5OjQwOjIwLjAwMDAwMDAwMCAtMDQwMAorQEAgLTgsMTMgKzgsMTMgQEAKKyAKKyBhZGRf bGlicmFyeShudGlycGNtb25pdG9yaW5nIFNIQVJFRCAke250aXJwY21vbml0b3JpbmdfU1JDU30p CisgYWRkX3Nhbml0aXplcnMobnRpcnBjbW9uaXRvcmluZykKKy1zZXRfdGFyZ2V0X3Byb3BlcnRp ZXMobnRpcnBjbW9uaXRvcmluZyBQUk9QRVJUSUVTIENPTVBJTEVfRkxBR1MgIi1mUElDIgorK3Nl dF90YXJnZXRfcHJvcGVydGllcyhudGlycGNtb25pdG9yaW5nIFBST1BFUlRJRVMKKyAgIFZFUlNJ T04gJHtOVElSUENfVkVSU0lPTn0KKyAgIFNPVkVSU0lPTiAiJHtOVElSUENfTUFKT1JfVkVSU0lP Tn0ke05USVJQQ19NSU5PUl9WRVJTSU9OfSIKKyAgICkKKyB0YXJnZXRfaW5jbHVkZV9kaXJlY3Rv cmllcyhudGlycGNtb25pdG9yaW5nICAgICBQUklWQVRFICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0Vf RElSfS9wcm9tZXRoZXVzLWNwcC1saXRlL2NvcmUvaW5jbHVkZSkKKyBzZXQoQ01BS0VfQ1hYX0ZM QUdTICIke0NNQUtFX0NYWF9GTEFHU30gLXBlZGFudGljLWVycm9ycyAtV2Vycm9yIC1XYWxsIC1X ZXh0cmEiKQorLWluc3RhbGwoVEFSR0VUUyBudGlycGNtb25pdG9yaW5nIERFU1RJTkFUSU9OICR7 TElCX0lOU1RBTExfRElSfSkKKytpbnN0YWxsKFRBUkdFVFMgbnRpcnBjbW9uaXRvcmluZyBERVNU SU5BVElPTiAke0NNQUtFX0lOU1RBTExfTElCRElSfSkKKyAKKyAjIyMjIyMjIyMjIyBpbnN0YWxs IGZpbGVzICMjIyMjIyMjIyMjIyMjIworLWluc3RhbGwoRklMRVMgIGluY2x1ZGUvbW9uaXRvcmlu Zy5oIERFU1RJTkFUSU9OIGluY2x1ZGUvbnRpcnBjKQorK2luc3RhbGwoRklMRVMgIGluY2x1ZGUv bW9uaXRvcmluZy5oIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9JTkNMVURFRElSfS9udGly cGMpCitkaWZmIC11ciBudGlycGMtNy4yL3NyYy9ycGNfZHBseF9pbnRlcm5hbC5oIG50aXJwYy01 Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9ycGNfZHBseF9pbnRl cm5hbC5oCistLS0gbnRpcnBjLTcuMi9zcmMvcnBjX2RwbHhfaW50ZXJuYWwuaAkyMDI1LTA5LTIz IDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAorKysrIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1 YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9ycGNfZHBseF9pbnRlcm5hbC5oCTIwMjYtMDUtMTgg MTk6NDA6MjAuMDAwMDAwMDAwIC0wNDAwCitAQCAtNTcsNiArNTcsNyBAQAorIAlzdHJ1Y3QgeGRy X2lvcSBpb3E7CisgCXN0cnVjdCBwb29scV9oZWFkIHdyaXRlcTsJLyoqPCBwb29scSBmb3Igd3Jp dGUgcmVxdWVzdHMgKi8KKyAJc3RydWN0IG9wcl9yYnRyZWUgY2FsbF9yZXBsaWVzOworKwlzdHJ1 Y3Qgb3ByX3JidHJlZSByZG1hX2NhbGxfZXhwaXJlczsJLyoqPCBjYWxsIGV4cGlyYXRpb24gdHJl ZSBmb3IgUkRNQSAqLworIAlzdHJ1Y3Qgb3ByX3JidHJlZV9ub2RlIGZkX25vZGU7CisgCXN0cnVj dCB7CisgCQlycGNfZHBseF9sb2NrX3QgbG9jazsKK0BAIC0xMTQsMTEgKzExNSwxNiBAQAorIAlj b25kX2Rlc3Ryb3koJmxvY2stPndlLmN2KTsKKyB9CisgCisrLyogRm9yd2FyZCBkZWNsYXJhdGlv biBmb3IgY2FsbF9leHBpcmVzIGNvbXBhcmlzb24gZnVuY3Rpb24gKi8KKytpbnQgc3ZjX3Jxc3Rf ZXhwaXJlX2NtcGYoY29uc3Qgc3RydWN0IG9wcl9yYnRyZWVfbm9kZSAqbGhzLAorKwkJCSBjb25z dCBzdHJ1Y3Qgb3ByX3JidHJlZV9ub2RlICpyaHMpOworKworIHN0YXRpYyBpbmxpbmUgdm9pZAor IHJwY19kcGx4X3JlY19pbml0KHN0cnVjdCBycGNfZHBseF9yZWMgKnJlYykKKyB7CisgCXJwY19k cGx4X2xvY2tfaW5pdCgmcmVjLT5yZWN2LmxvY2spOworIAlvcHJfcmJ0cmVlX2luaXQoJnJlYy0+ Y2FsbF9yZXBsaWVzLCBjbG50X3JlcV94aWRfY21wZik7CisrCW9wcl9yYnRyZWVfaW5pdCgmcmVj LT5yZG1hX2NhbGxfZXhwaXJlcywgc3ZjX3Jxc3RfZXhwaXJlX2NtcGYpOworIAltdXRleF9pbml0 KCZyZWMtPnhwcnQueHBfbG9jaywgTlVMTCk7CisgCVRBSUxRX0lOSVQoJnJlYy0+d3JpdGVxLnFo KTsKKyAJbXV0ZXhfaW5pdCgmcmVjLT53cml0ZXEucW11dGV4LCBOVUxMKTsKK2RpZmYgLXVyIG50 aXJwYy03LjIvc3JjL3JwY19yZG1hLmMgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0 N2VlMTI5NzgyNTZiZDEvc3JjL3JwY19yZG1hLmMKKy0tLSBudGlycGMtNy4yL3NyYy9ycGNfcmRt YS5jCTIwMjUtMDktMjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCisrKysgbnRpcnBjLTVjNzYx YmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL3JwY19yZG1hLmMJMjAyNi0w NS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAgLTA0MDAKK0BAIC03NCw2ICs3NCw3IEBACisgI2luY2x1 ZGUgIm1pc2MvYWJzdHJhY3RfYXRvbWljLmgiCisgI2luY2x1ZGUgInJwY19yZG1hLmgiCisgI2lu Y2x1ZGUgInN2Y19pbnRlcm5hbC5oIgorKyNpbmNsdWRlICJjbG50X2ludGVybmFsLmgiCisgCisg I2lmZGVmIEhBVkVfVkFMR1JJTkRfTUVNQ0hFQ0tfSAorICMgIGluY2x1ZGUgPHZhbGdyaW5kL21l bWNoZWNrLmg+CitAQCAtMzI5LDcgKzMzMCw3IEBACisgCWludCBjbGVhbnVwX2NvdW50ID0gMDsK KyAJc3RydWN0IHBvb2xxX2hlYWQgKmlvcWggPSAmcmRtYV94cHJ0LT5jYmNsaXN0OworIAorLQlf X3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsICIlcygpIGJlZm9yZSBjbGVhbnVwICIKKysJ X193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLCAiJXMoKSBiZWZvcmUgY2xlYW51cCAi CisgCSAgICAiJXAgeHBfcmVmY250ICVkIGFjdGl2ZSByZXF1ZXN0cyAlZCBxY291bnQgJWQiLAor IAkgICAgX19mdW5jX18sICZyZG1hX3hwcnQtPnNtX2RyLnhwcnQsCisgCSAgICByZG1hX3hwcnQt PnNtX2RyLnhwcnQueHBfcmVmY250LCByZG1hX3hwcnQtPmFjdGl2ZV9yZXF1ZXN0cywKK0BAIC0z NzYsNyArMzc3LDcgQEAKKyAJCQkJY2JjX3JlbGVhc2UgPSB0cnVlOworIAkJCQljYmNfcmVsZWFz ZV9jb3VudCA9IGNiYy0+d3JpdGVfd2FpdHM7CisgCistCQkJCV9fd2FybngoVElSUENfREVCVUdf RkxBR19FVkVOVCwgIiVzIGFjdGl2ZSBjYmMgJXAgIgorKwkJCQlfX3dhcm54KFRJUlBDX0RFQlVH X0ZMQUdfUlBDX1JETUEsICIlcyBhY3RpdmUgY2JjICVwICIKKyAJCQkJICAgICJjYmNfcmVmICVk IHJlYWRfd2FpdHMgJWQgd3JpdGVfd2FpdHMgJWQgIgorIAkJCQkgICAgImFjdGl2ZSByZXF1ZXN0 cyAlZCByZG1hX3hwcnQgJXAiLAorIAkJCQkgICAgX19mdW5jX18sIGNiYywgY2JjLT5yZWZjbnQs IGNiYy0+cmVhZF93YWl0cywKK0BAIC0zODYsNyArMzg3LDcgQEAKKyAKKyAJCQlpZiAoIWNiY19y ZWxlYXNlKSB7CisgCQkJCS8qIFBlbmRpbmcgcmVxdWVzdCBzaG91bGQgY2xlYW51cCB0aGlzIGNi YyAqLworLQkJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsICIlcyBhY3RpdmUgY2Jj ICVwICIKKysJCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLCAiJXMgYWN0aXZl IGNiYyAlcCAiCisgCQkJCSAgICAiY2JjX3JlZiAlZCByZWFkX3dhaXRzICVkIHdyaXRlX3dhaXRz ICVkICIKKyAJCQkJICAgICJhY3RpdmUgcmVxdWVzdHMgJWQgcmRtYV94cHJ0ICVwIiwKKyAJCQkJ ICAgIF9fZnVuY19fLCBjYmMsIGNiYy0+cmVmY250LCBjYmMtPnJlYWRfd2FpdHMsCitAQCAtNDE3 LDcgKzQxOCw3IEBACisgCisgCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZpb3FoLT5xbXV0ZXgpOwor IAorLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsICIlcygpIGFmdGVyIGNsZWFudXAg IgorKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsICIlcygpIGFmdGVyIGNsZWFu dXAgIgorIAkgICAgIiVwIHhwX3JlZmNudCAlZCBhY3RpdmUgcmVxdWVzdHMgJWQgY2xlYW51cCBj b3VudCAlZCAiCisgCSAgICAicWNvdW50ICVkIiwKKyAJICAgIF9fZnVuY19fLCAmcmRtYV94cHJ0 LT5zbV9kci54cHJ0LAorQEAgLTUxNSw3ICs1MTYsNyBAQAorIAorIAkJcnBjX3JkbWFfc3RhdGUu Y3FfdGhyZWFkX2lkc1tycGNfcmRtYV9zdGF0ZS5jcV90aHJlYWRfY291bnRdID0gdGhyaWQ7Cisg CistCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCisrCQlfX3dhcm54KFRJUlBDX0RF QlVHX0ZMQUdfUlBDX1JETUEsCisgCQkJIiVzKCkgdGhyZWFkICVseCBzcGF3bmVkIGZvciBlcG9s bCAlZCIsCisgCQkJX19mdW5jX18sCisgCQkJKHVuc2lnbmVkIGxvbmcpdGhyaWQsCitAQCAtNjYx LDcgKzY2Miw3IEBACisgCQlyZXR1cm4gcmM7CisgCX0KKyAKKy0JX193YXJueChUSVJQQ19ERUJV R19GTEFHX0VWRU5ULAorKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsCisgCQki JXA6cnBjX3JkbWFfZmRfYWRkIGZkOiVkIGVwb2xsZmQ6JWQiLAorIAkJcHRocmVhZF9zZWxmKCks IGZkLCBlcG9sbGZkKTsKKyAKK0BAIC02NzEsNyArNjcyLDcgQEAKKyBpbnQKKyBycGNfcmRtYV9m ZF9kZWwoaW50IGZkLCBpbnQgZXBvbGxmZCkKKyB7CistCV9fd2FybngoVElSUENfREVCVUdfRkxB R19FVkVOVCwKKysJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLAorIAkJIiVwOnJw Y19yZG1hX2ZkX2RlbCBmZDolZCBlcG9sbGZkOiVkIiwKKyAJCXB0aHJlYWRfc2VsZigpLCBmZCwg ZXBvbGxmZCk7CisgCitAQCAtODQ0LDggKzg0NSw4IEBACisgICoKKyAgKiBAcmV0dXJuIDAgb24g c3VjY2Vzcywgd29yayBjb21wbGV0aW9uIHN0YXR1cyBpZiBub3QgMAorICAqLworLXN0YXRpYyBp bnQKKy1ycGNfcmRtYV9jcV9ldmVudF9oYW5kbGVyKFJETUFYUFJUICpyZG1hX3hwcnQpCisraW50 CisrcnBjX3JkbWFfY3FfZXZlbnRfaGFuZGxlcihSRE1BWFBSVCAqcmRtYV94cHJ0LCBpbnQgZXhw ZWN0ZWRfcG9sbF9jb3VudCkKKyB7CisgCXN0cnVjdCBpYnZfd2Mgd2NbSUJWX1BPTExfRVZFTlRT XTsKKyAJc3RydWN0IGlidl9jcSAqZXZfY3E7CitAQCAtODU4LDYgKzg1OSw5IEBACisgCXVpbnQz Ml90IGxlbjsKKyAJaW50IHBvbGxfY291bnQgPSBJQlZfUE9MTF9DT1VOVDsKKyAKKysJaWYgKGV4 cGVjdGVkX3BvbGxfY291bnQpCisrCQlwb2xsX2NvdW50ID0gZXhwZWN0ZWRfcG9sbF9jb3VudDsK KysKKyAJcmMgPSBpYnZfZ2V0X2NxX2V2ZW50KHJkbWFfeHBydC0+Y29tcF9jaGFubmVsLCAmZXZf Y3EsICZldl9jdHgpOworIAlpZiAocmMpIHsKKyAJCXJjID0gZXJybm87CitAQCAtMTA0Nyw2ICsx MDUxLDU2IEBACisgfQorIAorIC8qKgorKyAqIHJwY19yZG1hX3Byb2Nlc3NfdHJhbnNwb3J0X2V4 cGlyZXM6IHByb2Nlc3MgZXhwaXJlZCBjbGllbnQgcmVxdWVzdHMgZm9yIGEgc3BlY2lmaWMgUkRN QSB0cmFuc3BvcnQKKysgKiBTaW1pbGFyIHRvIHRoZSBjYWxsX2V4cGlyZXMgcHJvY2Vzc2luZyBp biBzdmNfcnFzdF9lcG9sbF9sb29wCisrICoKKysgKiBAcGFyYW1bSU5dIHJkbWFfeHBydCBSRE1B IHRyYW5zcG9ydCB0byBwcm9jZXNzCisrICogQHBhcmFtW0lOXSBleHBpcmVfbXMgY3VycmVudCB0 aW1lIGluIG1pbGxpc2Vjb25kcworKyAqIEBwYXJhbVtJTk9VVF0gdGltZW91dF9tcyBwb2ludGVy IHRvIHRpbWVvdXQgdmFsdWUgdG8gYmUgdXBkYXRlZAorKyAqLworK3N0YXRpYyB2b2lkCisrcnBj X3JkbWFfcHJvY2Vzc190cmFuc3BvcnRfZXhwaXJlcyhSRE1BWFBSVCAqcmRtYV94cHJ0LCBpbnQg ZXhwaXJlX21zLCBpbnQgKnRpbWVvdXRfbXMpCisreworKwlzdHJ1Y3QgY2xudF9yZXEgKmNjOwor KwlzdHJ1Y3Qgb3ByX3JidHJlZV9ub2RlICpuX25vZGU7CisrCXN0cnVjdCBycGNfZHBseF9yZWMg KnJlYzsKKysJaW50IG1pbl90aW1lb3V0ID0gKnRpbWVvdXRfbXM7CisrCisrCWlmICghcmRtYV94 cHJ0KQorKwkJcmV0dXJuOworKworKwlyZWMgPSAmcmRtYV94cHJ0LT5zbV9kcjsKKysKKysJLyog UHJvY2VzcyByZG1hX2NhbGxfZXhwaXJlcyBmb3IgdGhpcyB0cmFuc3BvcnQgLSBzaW1pbGFyIHRv IHN2Y19ycXN0X2Vwb2xsX2xvb3AgKi8KKysJcnBjX2RwbHhfcmxpKHJlYyk7CisrCXdoaWxlICgo bl9ub2RlID0gb3ByX3JidHJlZV9maXJzdCgmcmVjLT5yZG1hX2NhbGxfZXhwaXJlcykpKSB7Cisr CQljYyA9IG9wcl9jb250YWluZXJvZihuX25vZGUsIHN0cnVjdCBjbG50X3JlcSwgY2NfcnFzdCk7 CisrCisrCQlpZiAoY2MtPmNjX2V4cGlyZV9tcyA+IGV4cGlyZV9tcykgeworKwkJCWludCB0cmFu c3BvcnRfdGltZW91dCA9IGNjLT5jY19leHBpcmVfbXMgLSBleHBpcmVfbXM7CisrCQkJaWYgKHRy YW5zcG9ydF90aW1lb3V0IDwgbWluX3RpbWVvdXQpIHsKKysJCQkJbWluX3RpbWVvdXQgPSB0cmFu c3BvcnRfdGltZW91dDsKKysJCQl9CisrCQkJYnJlYWs7CisrCQl9CisrCisrCQkvKiBvcmRlciBk ZXBlbmRlbnQgKi8KKysJCWF0b21pY19jbGVhcl91aW50MTZfdF9iaXRzKCZjYy0+Y2NfZmxhZ3Ms CisrCQkJCQkgICBDTE5UX1JFUV9GTEFHX0VYUElSSU5HKTsKKysJCW9wcl9yYnRyZWVfcmVtb3Zl KCZyZWMtPnJkbWFfY2FsbF9leHBpcmVzLCAmY2MtPmNjX3Jxc3QpOworKwkJY2MtPmNjX2V4cGly ZV9tcyA9IDA7CS8qIGF0b21pYyBiYXJyaWVyKHMpICovCisrCisrCQlhdG9taWNfaW5jX3VpbnQz Ml90KCZjYy0+Y2NfcmVmY250KTsKKysJCWNjLT5jY193cGUuZnVuID0gc3ZjX3Jxc3RfZXhwaXJl X3Rhc2s7CisrCQljYy0+Y2Nfd3BlLmFyZyA9IE5VTEw7CisrCQl3b3JrX3Bvb2xfc3VibWl0KCZz dmNfd29ya19wb29sLCAmY2MtPmNjX3dwZSk7CisrCX0KKysJcnBjX2RwbHhfcnVpKHJlYyk7Cisr CisrCSp0aW1lb3V0X21zID0gbWluX3RpbWVvdXQ7CisrfQorKworKy8qKgorICAqIHJwY19yZG1h X2NxX3RocmVhZDogdGhyZWFkIGZ1bmN0aW9uIHdoaWNoIHdhaXRzIGZvciBuZXcgY29tcGxldGlv biBldmVudHMKKyAgKiBhbmQgZ2l2ZXMgdGhlbSB0byBoYW5kbGVyICh0aGVuIGFjayB0aGUgZXZl bnQpCisgICoKK0BAIC0xMDU2LDI0ICsxMTEwLDMwIEBACisgeworIAlSRE1BWFBSVCAqcmRtYV94 cHJ0OworIAlzdHJ1Y3QgZXBvbGxfZXZlbnQgZXBvbGxfZXZlbnRzW0VQT0xMX0VWRU5UU107Cisr CXN0cnVjdCB0aW1lc3BlYyB0czsKKysJaW50IHRpbWVvdXRfbXM7CisrCWludCBleHBpcmVfbXM7 CisgCWludCBpOworIAlpbnQgbjsKKyAJaW50IHJjOworIAlpbnQgZXBvbGxmZCA9ICooKGludCAq KSBhcmcpOworIAorLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCistCQkiJXAsIFN0 YXJ0aW5nIHJwY19yZG1hX2NxX3RocmVhZCBlcG9sbGZkOiVkIiwKKy0JCXB0aHJlYWRfc2VsZigp LCBlcG9sbGZkKTsKKy0KKy0JX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAorKwlfX3dh cm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsCisgCQkiJXAsIFN0YXJ0aW5nIHJwY19yZG1h X2NxX3RocmVhZCBlcG9sbGZkOiVkIiwKKyAJCXB0aHJlYWRfc2VsZigpLCBlcG9sbGZkKTsKKyAK KyAJcmN1X3JlZ2lzdGVyX3RocmVhZCgpOworIAorIAl3aGlsZSAocnBjX3JkbWFfc3RhdGUucnVu X2NvdW50ID4gMCkgeworKwkJdGltZW91dF9tcyA9IEVQT0xMX1dBSVRfTVM7CisrCisrCQkvKiBQ cm9jZXNzIGNhbGxfZXhwaXJlcyBmb3IgUkRNQSB0cmFuc3BvcnRzICovCisrCQkvKiBjb2Fyc2Ug bnNlYywgbm90IHN5c3RlbSB0aW1lICovCisrCQkodm9pZCljbG9ja19nZXR0aW1lKENMT0NLX01P Tk9UT05JQ19GQVNULCAmdHMpOworKwkJZXhwaXJlX21zID0gdGltZXNwZWNfbXMoJnRzKTsKKysK KyAJCW4gPSBlcG9sbF93YWl0KGVwb2xsZmQsCistCQkJCWVwb2xsX2V2ZW50cywgRVBPTExfRVZF TlRTLCBFUE9MTF9XQUlUX01TKTsKKysJCQkJZXBvbGxfZXZlbnRzLCBFUE9MTF9FVkVOVFMsIHRp bWVvdXRfbXMpOworIAkJaWYgKG4gPT0gMCkKKyAJCQljb250aW51ZTsKKyAKK0BAIC0xMDk4LDYg KzExNTgsOSBAQAorIAkJCQljb250aW51ZTsKKyAJCQl9CisgCisrCQkJLyogUHJvY2VzcyBjYWxs X2V4cGlyZXMgZm9yIHRoaXMgUkRNQSB0cmFuc3BvcnQgKi8KKysJCQlycGNfcmRtYV9wcm9jZXNz X3RyYW5zcG9ydF9leHBpcmVzKHJkbWFfeHBydCwgZXhwaXJlX21zLCAmdGltZW91dF9tcyk7Cisr CisgCQkJaWYgKGVwb2xsX2V2ZW50c1tpXS5ldmVudHMgPT0gRVBPTExFUlIKKyAJCQkgfHwgZXBv bGxfZXZlbnRzW2ldLmV2ZW50cyA9PSBFUE9MTEhVUCkgeworIAkJCQlfX3dhcm54KFRJUlBDX0RF QlVHX0ZMQUdfRVJST1IsCitAQCAtMTExNiw3ICsxMTc5LDcgQEAKKyAKKyAJCQltdXRleF9sb2Nr KCZyZG1hX3hwcnQtPmNtX2xvY2spOworIAorLQkJCXJjID0gcnBjX3JkbWFfY3FfZXZlbnRfaGFu ZGxlcihyZG1hX3hwcnQpOworKwkJCXJjID0gcnBjX3JkbWFfY3FfZXZlbnRfaGFuZGxlcihyZG1h X3hwcnQsIDApOworIAkJCWlmIChyYykgeworIAkJCQlTVkNfREVTVFJPWSgmcmRtYV94cHJ0LT5z bV9kci54cHJ0KTsKKyAJCQl9CitAQCAtMTE2MSw3ICsxMjI0LDcgQEAKKyAKKyAJc3dpdGNoIChl dmVudC0+ZXZlbnQpIHsKKyAJY2FzZSBSRE1BX0NNX0VWRU5UX0FERFJfUkVTT0xWRUQ6CistCQlf X3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCisrCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZM QUdfUlBDX1JETUEsCisgCQkJIiVzKCkgJXAgQUREUl9SRVNPTFZFRCIsCisgCQkJX19mdW5jX18s IHJkbWFfeHBydCk7CisgCQltdXRleF9sb2NrKCZyZG1hX3hwcnQtPmNtX2xvY2spOworQEAgLTEx NzEsNyArMTIzNCw3IEBACisgCQlicmVhazsKKyAKKyAJY2FzZSBSRE1BX0NNX0VWRU5UX1JPVVRF X1JFU09MVkVEOgorLQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAorKwkJX193YXJu eChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLAorIAkJCSIlcygpICVwIFJPVVRFX1JFU09MVkVE IiwKKyAJCQlfX2Z1bmNfXywgcmRtYV94cHJ0KTsKKyAJCW11dGV4X2xvY2soJnJkbWFfeHBydC0+ Y21fbG9jayk7CitAQCAtMTE4MSwyNiArMTI0NCwyOCBAQAorIAkJYnJlYWs7CisgCisgCWNhc2Ug UkRNQV9DTV9FVkVOVF9FU1RBQkxJU0hFRDoKKy0JCV9fd2FybngoVElSUENfREVCVUdfRkxBR19F VkVOVCwKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwKKyAJCQkiJXMoKSAl cCBFU1RBQkxJU0hFRCIsCisgCQkJX19mdW5jX18sIHJkbWFfeHBydCk7CisgCisgCQlyZG1hX3hw cnQtPnN0YXRlID0gUkRNQVhTX0NPTk5FQ1RFRDsKKyAKKy0JCWludCBjcV9mZCA9IHJkbWFfeHBy dC0+Y29tcF9jaGFubmVsLT5mZDsKKy0JCWludCBjcV90aHJlYWRfaW5kZXggPSBjcV9mZCAlIE5V TV9DUV9FUE9MTF9USFJFQURTOworLQkJcmMgPSBycGNfcmRtYV9mZF9hZGQocmRtYV94cHJ0LCBj cV9mZCwKKysJCWlmIChyZG1hX3hwcnQtPnNlcnZlcikgeworKwkJCWludCBjcV9mZCA9IHJkbWFf eHBydC0+Y29tcF9jaGFubmVsLT5mZDsKKysJCQlpbnQgY3FfdGhyZWFkX2luZGV4ID0gY3FfZmQg JSBOVU1fQ1FfRVBPTExfVEhSRUFEUzsKKysJCQlyYyA9IHJwY19yZG1hX2ZkX2FkZChyZG1hX3hw cnQsIGNxX2ZkLAorIAkJCQkgICAgIHJwY19yZG1hX3N0YXRlLmNxX2Vwb2xsZmRbY3FfdGhyZWFk X2luZGV4XSk7CistCQlpZiAocmMpIHsKKy0JCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJS T1IsCistCQkJCSIlczoldSBFUlJPUiAocmV0dXJuKSIsCistCQkJCV9fZnVuY19fLCBfX0xJTkVf Xyk7CisrCQkJaWYgKHJjKSB7CisrCQkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwK KysJCQkJCSIlczoldSBFUlJPUiAocmV0dXJuKSIsCisrCQkJCQlfX2Z1bmNfXywgX19MSU5FX18p OworKwkJCX0KKysJCQlycGNfcmRtYV9zdGF0c19hZGQocmRtYV94cHJ0KTsKKyAJCX0KKy0JCXJw Y19yZG1hX3N0YXRzX2FkZChyZG1hX3hwcnQpOworIAkJYnJlYWs7CisgCisgCWNhc2UgUkRNQV9D TV9FVkVOVF9DT05ORUNUX1JFUVVFU1Q6CistCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZF TlQsCisrCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsCisgCQkJIiVzKCkgJXAg Q09OTkVDVF9SRVFVRVNUIiwKKyAJCQlfX2Z1bmNfXywgcmRtYV94cHJ0KTsKKyAJCXJwY19yZG1h X3N0YXRlLmNfci5pZF9xdWV1ZVswXSA9IGNtX2lkOworQEAgLTEyMjMsNyArMTI4OCw3IEBACisg CQlicmVhazsKKyAKKyAJY2FzZSBSRE1BX0NNX0VWRU5UX0RJU0NPTk5FQ1RFRDoKKy0JCV9fd2Fy bngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19S UENfUkRNQSwKKyAJCQkiJXMoKSAlcFsldV0gRElTQ09OTkVDVCBFVkVOVC4uLiIsCisgCQkJX19m dW5jX18sIHJkbWFfeHBydCwgcmRtYV94cHJ0LT5zdGF0ZSk7CisgCitAQCAtMTIzMiwxNCArMTI5 NywxNCBAQAorIAkJYnJlYWs7CisgCisgCWNhc2UgUkRNQV9DTV9FVkVOVF9ERVZJQ0VfUkVNT1ZB TDoKKy0JCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKKysJCV9fd2FybngoVElSUENf REVCVUdfRkxBR19SUENfUkRNQSwKKyAJCQkiJXMoKSAlcFsldV0gY21hIGRldGVjdGVkIGRldmlj ZSByZW1vdmFsISEhISIsCisgCQkJX19mdW5jX18sIHJkbWFfeHBydCwgcmRtYV94cHJ0LT5zdGF0 ZSk7CisgCQlyYyA9IEVOT0RFVjsKKyAJCWJyZWFrOworIAorIAljYXNlIFJETUFfQ01fRVZFTlRf VElNRVdBSVRfRVhJVDoKKy0JCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKKysJCV9f d2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwKKyAJCSAgICAiJXMoKSAlcFsldV0gUkRN QV9DTV9FVkVOVF9USU1FV0FJVF9FWElUIiwKKyAJCSAgICBfX2Z1bmNfXywgcmRtYV94cHJ0LCBy ZG1hX3hwcnQtPnN0YXRlKTsKKyAKK0BAIC0xMzUyLDYgKzE0MTcsNDEgQEAKKyAJcHRocmVhZF9l eGl0KE5VTEwpOworIH0KKyAKKysvKiBIYW5kbGUgUkRNQSBjb25uZWN0aW9uIG1hbmFnZXIgZXZl bnRzIHN5bmNocm9ub3VzbHkgKi8KKytpbnQKKytycGNfcmRtYV9jbV9ldmVudF9oYW5kbGVyX2lu bGluZShSRE1BWFBSVCAqcmRtYV94cHJ0LCBpbnQgZXhwZWN0ZWRfZXZlbnQpCisreworKwlpbnQg cmMgPSAwOworKwlzdHJ1Y3QgcmRtYV9jbV9ldmVudCAqZXZlbnQgPSBOVUxMOworKworKwlyYyA9 IHJkbWFfZ2V0X2NtX2V2ZW50KHJkbWFfeHBydC0+ZXZlbnRfY2hhbm5lbCwgJmV2ZW50KTsKKysJ aWYgKHJjKSB7CisrCQlyYyA9IGVycm5vOworKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VS Uk9SLCAiJXM6IHJkbWEgZ2V0IGV2ZW50IGZhaWxlZCB4cHJ0ICVwICIKKysJCQkiZXJyICVkIiwg X19mdW5jX18sIHJkbWFfeHBydCwgcmMpOworKwkJZ290byBvdXQ7CisrCX0KKysKKysJaWYgKGV2 ZW50LT5ldmVudCAhPSBleHBlY3RlZF9ldmVudCkgeworKwkJX193YXJueChUSVJQQ19ERUJVR19G TEFHX0VSUk9SLCAiJXM6IHVuZXhwZWN0ZWQgZXZlbnQgJWQsIGV4cGVjdGVkICVkICIKKysJCQki eHBydCAlcyIsIF9fZnVuY19fLCBldmVudC0+ZXZlbnQsIGV4cGVjdGVkX2V2ZW50KTsKKysJfQor KworKwlTVkNfUkVGKCZyZG1hX3hwcnQtPnNtX2RyLnhwcnQsIFNWQ19SRUZfRkxBR19OT05FKTsK KysKKysJcmMgPSBycGNfcmRtYV9jbV9ldmVudF9oYW5kbGVyKHJkbWFfeHBydCwgZXZlbnQpOwor KworKwlyZG1hX2Fja19jbV9ldmVudChldmVudCk7CisrCisrCVNWQ19SRUxFQVNFKCZyZG1hX3hw cnQtPnNtX2RyLnhwcnQsIFNWQ19SRUZfRkxBR19OT05FKTsKKysKKytvdXQ6CisrCWlmIChyYykK KysJCVNWQ19ERVNUUk9ZKCZyZG1hX3hwcnQtPnNtX2RyLnhwcnQpOworKworKwlyZXR1cm4gcmM7 CisrfQorKworIC8qKgorICAqIHJwY19yZG1hX2Rlc3Ryb3lfc3R1ZmY6IGRlc3Ryb3lzIGFsbCBx cC1yZWxhdGVkIHN0dWZmIGZvciB1cworICAqCitAQCAtMTM3Myw3ICsxNDczLDggQEAKKyAJfQor IAorIAlpZiAocmRtYV94cHJ0LT5jb21wX2NoYW5uZWwpIHsKKy0JCWlmIChyZG1hX3hwcnQtPnN0 YXRlID09IFJETUFYU19DT05ORUNURUQpIHsKKysJCWlmIChyZG1hX3hwcnQtPnNlcnZlciAmJgor KwkJICAgIChyZG1hX3hwcnQtPnN0YXRlID09IFJETUFYU19DT05ORUNURUQpKSB7CisgCQkJaW50 IGNxX2ZkID0gKChSRE1BWFBSVCAqKXJkbWFfeHBydCktPmNvbXBfY2hhbm5lbC0+ZmQ7CisgCQkJ aW50IGNxX3RocmVhZF9pbmRleCA9IGNxX2ZkICUgTlVNX0NRX0VQT0xMX1RIUkVBRFM7CisgCQkJ cnBjX3JkbWFfZmRfZGVsKGNxX2ZkLAorQEAgLTEzOTYsNyArMTQ5Nyw3IEBACisgc3RhdGljIHZv aWQKKyByZG1hX2Rlc3Ryb3lfY2JjcyhSRE1BWFBSVCAqcmRtYV94cHJ0KSB7CisgCistCV9fd2Fy bngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKKysJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQ Q19SRE1BLAorIAkgICAgIiVzKCkgRGVzdHJveWluZyB4cHJ0ICVwIGNiY3MgcWNvdW50ICV1IHFz aXplICV1IHRvdGFsIGNiY3NfbWVtb3J5ICV1IiwKKyAJICAgIF9fZnVuY19fLCByZG1hX3hwcnQs IHJkbWFfeHBydC0+Y2JxaC5xY291bnQsIHJkbWFfeHBydC0+Y2JxaC5xc2l6ZSwKKyAJICAgIHJk bWFfeHBydC0+Y2JxaC5xY291bnQgKiByZG1hX3hwcnQtPmNicWgucXNpemUpOworQEAgLTE0MzYs NyArMTUzNyw3IEBACisgCisgc3RhdGljIHZvaWQKKyByZG1hX2Rlc3Ryb3lfaW9fYnVmcyhSRE1B WFBSVCAqcmRtYV94cHJ0KSB7CistCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKKysJ X193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLAorIAkgICAgIiVzKCkgRGVzdHJveWlu ZyB4cHJ0ICVwIGlvX2J1ZnMiLAorIAkgICAgX19mdW5jX18sIHJkbWFfeHBydCk7CisgCitAQCAt MTQ1NiwxMyArMTU1NywxMyBAQAorIAkJCXN0cnVjdCBycGNfaW9fYnVmcyAqaW9fYnVmID0KKyAJ CQkJb3ByX2NvbnRhaW5lcm9mKGhhdmUsIHN0cnVjdCBycGNfaW9fYnVmcywgcSk7CisgCistCQkJ X193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULCAiJXMgRGVzdHJveSBpb19idWYgJXAgaW9x aCAlcCBjb3VudCAlZCIsCisrCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLCAi JXMgRGVzdHJveSBpb19idWYgJXAgaW9xaCAlcCBjb3VudCAlZCIsCisgCQkJICAgIF9fZnVuY19f LCBpb19idWYsIGlvcWgsIGlvcWgtPnFjb3VudCk7CisgCisgCQkJaWYgKChpb19idWYtPnR5cGUg PT0gSU9fQlVGX0FMTCkgfHwKKyAJCQkgICAgKGlvX2J1Zi0+dHlwZSA9PSBJT19JTkJVRl9IRFIp KSB7CisgCQkJCXN0cnVjdCBwb29scV9oZWFkICppb3FoX2J1ZnMgPSAmcmRtYV94cHJ0LT5pbmJ1 ZnNfaGRyLnV2cWg7CistCQkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKKysJCQkJ X193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLAorIAkJCQkgICAgIiVzKCkgRGVzdHJv eWluZyAlcCBpbmJ1ZnNfaGRyIGhlYWQgJXAgY291bnQgJWQgaW9fYnVmICVwIiwKKyAJCQkJICAg IF9fZnVuY19fLCByZG1hX3hwcnQsIGlvcWhfYnVmcywgaW9xaF9idWZzLT5xY291bnQsIGlvX2J1 Zik7CisgCQkJCXhkcl9yZG1hX2J1Zl9wb29sX2Rlc3Ryb3koaW9xaF9idWZzLCBpb19idWYpOwor QEAgLTE0NzEsNyArMTU3Miw3IEBACisgCQkJaWYgKChpb19idWYtPnR5cGUgPT0gSU9fQlVGX0FM TCkgfHwKKyAJCQkgICAgKGlvX2J1Zi0+dHlwZSA9PSBJT19PVVRCVUZfSERSKSkgeworIAkJCQlz dHJ1Y3QgcG9vbHFfaGVhZCAqaW9xaF9idWZzID0gJnJkbWFfeHBydC0+b3V0YnVmc19oZHIudXZx aDsKKy0JCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAorKwkJCQlfX3dhcm54KFRJ UlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsCisgCQkJCSAgICAiJXMoKSBEZXN0cm95aW5nICVwIG91 dGJ1ZnNfaGRyIGhlYWQgJXAgY291bnQgJWQgaW9fYnVmICVwIiwKKyAJCQkJICAgIF9fZnVuY19f LCByZG1hX3hwcnQsIGlvcWhfYnVmcywgaW9xaF9idWZzLT5xY291bnQsIGlvX2J1Zik7CisgCQkJ CXhkcl9yZG1hX2J1Zl9wb29sX2Rlc3Ryb3koaW9xaF9idWZzLCBpb19idWYpOworQEAgLTE0ODAs NyArMTU4MSw3IEBACisgCQkJaWYgKChpb19idWYtPnR5cGUgPT0gSU9fQlVGX0FMTCkgfHwKKyAJ CQkgICAgKGlvX2J1Zi0+dHlwZSA9PSBJT19JTkJVRl9EQVRBKSkgeworIAkJCQlzdHJ1Y3QgcG9v bHFfaGVhZCAqaW9xaF9idWZzID0gJnJkbWFfeHBydC0+aW5idWZzX2RhdGEudXZxaDsKKy0JCQkJ X193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAorKwkJCQlfX3dhcm54KFRJUlBDX0RFQlVH X0ZMQUdfUlBDX1JETUEsCisgCQkJCSAgICAiJXMoKSBEZXN0cm95aW5nICVwIGluYnVmc19kYXRh IGhlYWQgJXAgY291bnQgJWQgaW9fYnVmICVwIiwKKyAJCQkJICAgIF9fZnVuY19fLCByZG1hX3hw cnQsIGlvcWhfYnVmcywgaW9xaF9idWZzLT5xY291bnQsIGlvX2J1Zik7CisgCQkJCXhkcl9yZG1h X2J1Zl9wb29sX2Rlc3Ryb3koaW9xaF9idWZzLCBpb19idWYpOworQEAgLTE0ODksNyArMTU5MCw3 IEBACisgCQkJaWYgKChpb19idWYtPnR5cGUgPT0gSU9fQlVGX0FMTCkgfHwKKyAJCQkgICAgKGlv X2J1Zi0+dHlwZSA9PSBJT19PVVRCVUZfREFUQSkpIHsKKyAJCQkJc3RydWN0IHBvb2xxX2hlYWQg KmlvcWhfYnVmcyA9ICZyZG1hX3hwcnQtPm91dGJ1ZnNfZGF0YS51dnFoOworLQkJCQlfX3dhcm54 KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCisrCQkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19S UENfUkRNQSwKKyAJCQkJICAgICIlcygpIERlc3Ryb3lpbmcgJXAgb3V0YnVmc19kYXRhIGhlYWQg JXAgY291bnQgJWQgaW9fYnVmICVwIiwKKyAJCQkJICAgIF9fZnVuY19fLCByZG1hX3hwcnQsIGlv cWhfYnVmcywgaW9xaF9idWZzLT5xY291bnQsIGlvX2J1Zik7CisgCQkJCXhkcl9yZG1hX2J1Zl9w b29sX2Rlc3Ryb3koaW9xaF9idWZzLCBpb19idWYpOworQEAgLTE1OTAsNyArMTY5MSw3IEBACisg ICoKKyAgKiBAcmV0dXJuIHJkbWFfeHBydCBvbiBzdWNjZXNzLCBOVUxMIG9uIGZhaWx1cmUKKyAg Ki8KKy1zdGF0aWMgUkRNQVhQUlQgKgorK1JETUFYUFJUICoKKyBycGNfcmRtYV9hbGxvY2F0ZShj b25zdCBzdHJ1Y3QgcnBjX3JkbWFfYXR0ciAqeGEpCisgeworIAlSRE1BWFBSVCAqcmRtYV94cHJ0 OworQEAgLTE3MzksOSArMTg0MCwxMyBAQAorIAkJCV9fZnVuY19fKTsKKyAJCWdvdG8gZmFpbHVy ZTsKKyAJfQorLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsCistCQkiJXMoKSBO RlMvUkRNQSBlbmdpbmUgYm91bmQgcmVjdnN6ICVsbHUgc2VuZHN6ICVsbHUgcmRtYV94cHJ0ICVw IiwKKy0JCV9fZnVuY19fLCByZG1hX3hwcnQtPnNtX2RyLnJlY3ZzeiwgcmRtYV94cHJ0LT5zbV9k ci5zZW5kc3osIHJkbWFfeHBydCk7CisrCisrCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVO VCB8IFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsCisrCQkiJXMoKSBSRE1BOiBORlMvUkRNQSB0 cmFuc3BvcnQgcmVhZHkgb24gcG9ydCAlcyByZWN2c3o9JWxsdSBzZW5kc3o9JWxsdSB4cHJ0PSVw IiwKKysJCV9fZnVuY19fLCB4YS0+cG9ydCwKKysJCSh1bnNpZ25lZCBsb25nIGxvbmcpcmRtYV94 cHJ0LT5zbV9kci5yZWN2c3osCisrCQkodW5zaWduZWQgbG9uZyBsb25nKXJkbWFfeHBydC0+c21f ZHIuc2VuZHN6LAorKwkJcmRtYV94cHJ0KTsKKyAKKyAJcmV0dXJuICgmcmRtYV94cHJ0LT5zbV9k ci54cHJ0KTsKKyAKK0BAIC0xNzkwLDcgKzE4OTUsNyBAQAorIAkgICAgSUJWX1FQX1BBVEhfTVRV IHwgSUJWX1FQX0RFU1RfUVBOIHwgSUJWX1FQX1JRX1BTTiB8CisgCSAgICBJQlZfUVBfTUFYX0RF U1RfUkRfQVRPTUlDIHwgSUJWX1FQX01JTl9STlJfVElNRVIsICZxcF9hdHRyKTsKKyAKKy0JX193 YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAorKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdf UlBDX1JETUEsCisgCQkiJXMoKSAlcFsldV0gaWJ2X3F1ZXJ5X3FwIHBhdGggbXR1ICVkIHN0YXRl ICVkIHFwIHR5cGUgJWQiLAorIAkJX19mdW5jX18sIHJkbWFfeHBydCwgcmRtYV94cHJ0LT5zdGF0 ZSwgYXR0ci5xcF9zdGF0ZSwKKyAJCWF0dHIucGF0aF9tdHUsIHFwX2F0dHIucXBfdHlwZSk7CitA QCAtMTc5OSw2ICsxOTA0LDQ4IEBACisgCXJldHVybiAwOworIH0KKyAKKysvKiBJbml0aWFsaXpl IFJETUEgY2xpZW50IGNvbXBsZXRpb24gY2hhbm5lbCBhbmQgcXVldWUgKi8KKytpbnQKKytycGNf cmRtYV9zZXR1cF9zdHVmZl9jbGllbnQoUkRNQVhQUlQgKnJkbWFfeHBydCkKKyt7CisrCWludCBy YyA9IDA7CisrCisrCXJkbWFfeHBydC0+Y29tcF9jaGFubmVsID0gaWJ2X2NyZWF0ZV9jb21wX2No YW5uZWwocmRtYV94cHJ0LT5jbV9pZC0+dmVyYnMpOworKwlpZiAoIXJkbWFfeHBydC0+Y29tcF9j aGFubmVsKSB7CisrCQlyYyA9IGVycm5vOworKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VS Uk9SLCAiJXM6IGNyZWF0ZSBjb21wIGNoYW5uZWwgZmFpbGVkIHhwcnQgJXAgIgorKwkJCSJlcnIg JWQiLCBfX2Z1bmNfXywgcmRtYV94cHJ0LCByYyk7CisrCQlnb3RvIG91dDsKKysJfQorKworKwly ZG1hX3hwcnQtPmNxID0gaWJ2X2NyZWF0ZV9jcShyZG1hX3hwcnQtPmNtX2lkLT52ZXJicywgTUFY X0NRX1NJWkUocmRtYV94cHJ0LT54YSksCisrCSAgICByZG1hX3hwcnQsIHJkbWFfeHBydC0+Y29t cF9jaGFubmVsLCAwKTsKKysJaWYgKCFyZG1hX3hwcnQtPmNxKSB7CisrCQlyYyA9IGVycm5vOwor KwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLCAiJXM6IGNyZWF0ZSBjcSBmYWlsZWQg eHBydCAlcCBlcnIgJWQiLAorKwkJCV9fZnVuY19fLCByZG1hX3hwcnQsIHJjKTsKKysJCWdvdG8g b3V0OworKwl9CisrCisrCXJjID0gaWJ2X3JlcV9ub3RpZnlfY3EocmRtYV94cHJ0LT5jcSwgMCk7 CisrCWlmIChyYykgeworKwkJcmMgPSBlcnJubzsKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxB R19FUlJPUiwgIiVzOiBub3RpZnkgY3EgZmFpbGVkIHhwcnQgJXAgZXJyICVkIiwKKysJCQlfX2Z1 bmNfXywgcmRtYV94cHJ0LCByYyk7CisrCQlnb3RvIG91dDsKKysJfQorKworKwlyYyA9IHJwY19y ZG1hX2NyZWF0ZV9xcChyZG1hX3hwcnQsIHJkbWFfeHBydC0+Y21faWQpOworKwlpZiAocmMpIHsK KysJCXJjID0gZXJybm87CisrCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsICIlczog Y3JlYXRlIHFwIGZhaWxlZCB4cHJ0ICVwIGVyciAlZCIsCisrCQkJX19mdW5jX18sIHJkbWFfeHBy dCwgcmMpOworKwl9CisrCisrb3V0OgorKwlyZXR1cm4gcmM7CisrfQorKworIC8qKgorICAqIHJw Y19yZG1hX3NldHVwX3N0dWZmOiBzZXR1cCBwZCwgcXAgYW4nIHN0dWZmCisgICoKK0BAIC0xOTIx LDEwICsyMDY4LDE0IEBACisgLyoqCisgICogcnBjX3JkbWFfc2V0dXBfY2JxCisgICovCistc3Rh dGljIGludAorK2ludAorIHJwY19yZG1hX3NldHVwX2NicShSRE1BWFBSVCAqcmRtYV94cHJ0LAor ICAgICBzdHJ1Y3QgcG9vbHFfaGVhZCAqaW9xaCwgdV9pbnQgZGVwdGgsIHVfaW50IHNnZSkKKyB7 CisrCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwKKysJCSIlczogc2V0dXAgY2Jx IHhwcnQgJXAgZGVwdGggJWQgc2dlICVkIiwKKysJCV9fZnVuY19fLCByZG1hX3hwcnQsIGRlcHRo LCBzZ2UpOworKworIAlpZiAoaW9xaC0+cXNpemUpIHsKKyAJCV9fd2FybngoVElSUENfREVCVUdf RkxBR19FUlJPUiwKKyAJCQkiJXMoKSBjb250ZXh0cyBhbHJlYWR5IGFsbG9jYXRlZCIsCitAQCAt MTk0OCw3ICsyMDk5LDcgQEAKKyAJCXJwY19yZG1hX2FsbG9jYXRlX2NiY19sb2NrZWQoaW9xaCk7 CisgCX0KKyAKKy0JX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULCAiJXMgVG90YWwgY2Jj c19tZW1vcnkgJXUgIgorKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsICIlcyBU b3RhbCBjYmNzX21lbW9yeSAldSAiCisgCSAgICAicWNvdW50ICV1IHFzaXplICV1IHhwcnQgJXAi LAorIAkgICAgX19mdW5jX18sIGlvcWgtPnFjb3VudCAqIGlvcWgtPnFzaXplLAorIAkgICAgaW9x aC0+cWNvdW50LCBpb3FoLT5xc2l6ZSwgcmRtYV94cHJ0KTsKK0BAIC0yMDM1LDYgKzIxODYsMTcg QEAKKyAJfQorIAorIAlyZG1hX3hwcnQtPnN0YXRlID0gUkRNQVhTX0xJU1RFTklORzsKKysKKysJ LyogTG9nIGF0IEVWRU5UIGxldmVsIHRoYXQgUkRNQSBsaXN0ZW5lciBpcyB1cCAqLworKwlfX3dh cm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCisrCQkiJXMoKSBSRE1BOiBORlMvUkRNQSBzZXJ2 ZXIgaXMgbm93IGxpc3RlbmluZyBvbiBub2RlICVzIHBvcnQgJXMgKGJhY2tsb2c9JWQgc3FfZGVw dGg9JWQgcnFfZGVwdGg9JWQpIiwKKysJCV9fZnVuY19fLAorKwkJcmRtYV94cHJ0LT54YS0+bm9k ZSA/IHJkbWFfeHBydC0+eGEtPm5vZGUgOiAiKiIsCisrCQlyZG1hX3hwcnQtPnhhLT5wb3J0LAor KwkJcmRtYV94cHJ0LT54YS0+YmFja2xvZywKKysJCXJkbWFfeHBydC0+eGEtPnNxX2RlcHRoLAor KwkJcmRtYV94cHJ0LT54YS0+cnFfZGVwdGgpOworKworIAlhdG9taWNfaW5jX2ludDMyX3QoJnJw Y19yZG1hX3N0YXRlLnJ1bl9jb3VudCk7CisgCisgCXJjID0gcnBjX3JkbWFfdGhyZWFkX2NyZWF0 ZV9lcG9sbCgmcnBjX3JkbWFfc3RhdGUuY21fdGhyZWFkX2lkLAorQEAgLTIyMTgsNyArMjM4MCw3 IEBACisgeworIAlzdHJ1Y3QgcmRtYV9jbV9pZCAqY21faWQ7CisgCistCV9fd2FybngoVElSUENf REVCVUdfRkxBR19FVkVOVCwKKysJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLAor IAkJIiVzKCkgJXBbJXVdIGxpc3RlbmluZyAoYWZ0ZXIgYmluZF9zZXJ2ZXIpIiwKKyAJCV9fZnVu Y19fLCBsX3JkbWFfeHBydCwgbF9yZG1hX3hwcnQtPnN0YXRlKTsKKyAKK0BAIC0yMjgxLDI1ICsy NDQzLDI5IEBACisgCXN0cnVjdCByZG1hX2FkZHJpbmZvICpyZXM7CisgCWludCByYzsKKyAKKy0J bXV0ZXhfbG9jaygmcmRtYV94cHJ0LT5jbV9sb2NrKTsKKy0KKyAJZG8geworIAkJbWVtc2V0KCZo aW50cywgMCwgc2l6ZW9mKGhpbnRzKSk7CisgCQloaW50cy5haV9wb3J0X3NwYWNlID0gcmRtYV94 cHJ0LT5jb25uX3R5cGU7CisgCistCQlyYyA9IHJkbWFfZ2V0YWRkcmluZm8ocmRtYV94cHJ0LT54 YS0+bm9kZSwgcmRtYV94cHJ0LT54YS0+cG9ydCwKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxB R19SUENfUkRNQSwgIiVzOiByZXNvbHZlICVzIHBvcnQgJWQiLCBfX2Z1bmNfXywKKysJCQlyZG1h X3hwcnQtPnNtX2RyLnhwcnQueHBfaXAsIHJkbWFfeHBydC0+c21fZHIueHBydC54cF9wb3J0KTsK KysJCWNoYXIgcG9ydF9zdHJbU09DS19OQU1FX01BWF07CisrCQlzbnByaW50Zihwb3J0X3N0ciwg U09DS19OQU1FX01BWCwgIiVkIiwgcmRtYV94cHJ0LT5zbV9kci54cHJ0LnhwX3BvcnQpOworKwor KwkJcmMgPSByZG1hX2dldGFkZHJpbmZvKHJkbWFfeHBydC0+c21fZHIueHBydC54cF9pcCwgcG9y dF9zdHIsCisgCQkJCQkmaGludHMsICZyZXMpOworIAkJaWYgKHJjKSB7CisgCQkJcmMgPSBlcnJu bzsKKyAJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCistCQkJCSIlcygpICVwWyV1 XSByZG1hX2dldGFkZHJpbmZvOiAlcyAoJWQpIiwKKy0JCQkJX19mdW5jX18sIHJkbWFfeHBydCwg cmRtYV94cHJ0LT5zdGF0ZSwgc3RyZXJyb3IocmMpLCByYyk7CisrCQkJCSIlcygpICVwWyV1XSBy ZG1hX2dldGFkZHJpbmZvOiAlcyAoJWQpIGlwICVzIHBvcnQgJWQiLAorKwkJCQlfX2Z1bmNfXywg cmRtYV94cHJ0LCByZG1hX3hwcnQtPnN0YXRlLCBzdHJlcnJvcihyYyksIHJjLAorKwkJCQlyZG1h X3hwcnQtPnNtX2RyLnhwcnQueHBfaXAsIHJkbWFfeHBydC0+c21fZHIueHBydC54cF9wb3J0KTsK KyAJCQlicmVhazsKKyAJCX0KKyAKKyAJCXJjID0gcmRtYV9yZXNvbHZlX2FkZHIocmRtYV94cHJ0 LT5jbV9pZCwgcmVzLT5haV9zcmNfYWRkciwKKyAJCQkJCXJlcy0+YWlfZHN0X2FkZHIsCistCQkJ CQlfX3N2Y19wYXJhbXMtPmlkbGVfdGltZW91dCk7CisrCQkJCQk1MDAwKTsKKyAJCWlmIChyYykg eworIAkJCXJjID0gZXJybm87CisgCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLAor QEAgLTIzMDksMTQgKzI0NzUsOCBAQAorIAkJfQorIAkJcmRtYV9mcmVlYWRkcmluZm8ocmVzKTsK KyAKKy0JCXdoaWxlIChyZG1hX3hwcnQtPnN0YXRlID09IFJETUFYU19JTklUSUFMKSB7CistCQkJ Y29uZF93YWl0KCZyZG1hX3hwcnQtPmNtX2NvbmQsICZyZG1hX3hwcnQtPmNtX2xvY2spOworLQkJ CV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwKKy0JCQkJIiVzKCkgJXBbJXVdIGFm dGVyIGNvbmRfd2FpdCIsCistCQkJCV9fZnVuY19fLCByZG1hX3hwcnQsIHJkbWFfeHBydC0+c3Rh dGUpOworLQkJfQorLQorLQkJaWYgKHJkbWFfeHBydC0+c3RhdGUgIT0gUkRNQVhTX0FERFJfUkVT T0xWRUQpIHsKKysJCXJjID0gcnBjX3JkbWFfY21fZXZlbnRfaGFuZGxlcl9pbmxpbmUocmRtYV94 cHJ0LCBSRE1BX0NNX0VWRU5UX0FERFJfUkVTT0xWRUQpOworKwkJaWYgKHJjKSB7CisgCQkJX193 YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLAorIAkJCQkiJXMoKSBDb3VsZCBub3QgcmVzb2x2 ZSBhZGRyIiwKKyAJCQkJX19mdW5jX18pOworQEAgLTIzMjUsNyArMjQ4NSw3IEBACisgCQl9Cisg CisgCQlyYyA9IHJkbWFfcmVzb2x2ZV9yb3V0ZShyZG1hX3hwcnQtPmNtX2lkLAorLQkJCQkJX19z dmNfcGFyYW1zLT5pZGxlX3RpbWVvdXQpOworKwkJCQkJNTAwMCk7CisgCQlpZiAocmMpIHsKKyAJ CQlyZG1hX3hwcnQtPnN0YXRlID0gUkRNQVhTX0VSUk9SOworIAkJCV9fd2FybngoVElSUENfREVC VUdfRkxBR19FUlJPUiwKK0BAIC0yMzM0LDE0ICsyNDk0LDggQEAKKyAJCQlicmVhazsKKyAJCX0K KyAKKy0JCXdoaWxlIChyZG1hX3hwcnQtPnN0YXRlID09IFJETUFYU19BRERSX1JFU09MVkVEKSB7 CistCQkJY29uZF93YWl0KCZyZG1hX3hwcnQtPmNtX2NvbmQsICZyZG1hX3hwcnQtPmNtX2xvY2sp OworLQkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwKKy0JCQkJIiVzKCkgJXBb JXVdIGFmdGVyIGNvbmRfd2FpdCIsCistCQkJCV9fZnVuY19fLCByZG1hX3hwcnQsIHJkbWFfeHBy dC0+c3RhdGUpOworLQkJfQorLQorLQkJaWYgKHJkbWFfeHBydC0+c3RhdGUgIT0gUkRNQVhTX1JP VVRFX1JFU09MVkVEKSB7CisrCQlyYyA9IHJwY19yZG1hX2NtX2V2ZW50X2hhbmRsZXJfaW5saW5l KHJkbWFfeHBydCwgUkRNQV9DTV9FVkVOVF9ST1VURV9SRVNPTFZFRCk7CisrCQlpZiAocmMpIHsK KyAJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCisgCQkJCSIlcygpIENvdWxkIG5v dCByZXNvbHZlIHJvdXRlIiwKKyAJCQkJX19mdW5jX18pOworQEAgLTIzNTAsOCArMjUwNCw2IEBA CisgCQl9CisgCX0gd2hpbGUgKDApOworIAorLQltdXRleF91bmxvY2soJnJkbWFfeHBydC0+Y21f bG9jayk7CistCisgCXJldHVybiByYzsKKyB9CisgCitAQCAtMjM5OCw2ICsyNTUwLDM5IEBACisg CQkJX19mdW5jX18sIHJkbWFfeHBydCwgcmRtYV94cHJ0LT5zdGF0ZSwgc3RyZXJyb3IocmMpLCBy Yyk7CisgCX0KKyAKKysJcmMgPSBycGNfcmRtYV9jbV9ldmVudF9oYW5kbGVyX2lubGluZShyZG1h X3hwcnQsIFJETUFfQ01fRVZFTlRfRVNUQUJMSVNIRUQpOworKwlpZiAocmMpIHsKKysJCXJjID0g ZXJybm87CisrCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsICIlczogY29uZWN0IGZh aWxlZCB4cHJ0ICVwIGVyciAlZCIsCisrCQkJX19mdW5jX18sIHJkbWFfeHBydCwgcmMpOworKwl9 CisrCisrCXJldHVybiByYzsKKyt9CisrCisrLyogUHJlcGFyZSBSRE1BIGNvbm5lY3Rpb24gYnkg Y3JlYXRpbmcgZXZlbnQgY2hhbm5lbCBhbmQgQ00gSUQgKi8KKytpbnQKKytycGNfcmRtYV9jb25u ZWN0X3ByZXBhcmUoUkRNQVhQUlQgKnJkbWFfeHBydCkKKyt7CisrCWludCByYyA9IDA7CisrCisr CXJkbWFfeHBydC0+ZXZlbnRfY2hhbm5lbCA9IHJkbWFfY3JlYXRlX2V2ZW50X2NoYW5uZWwoKTsK KysJaWYgKCFyZG1hX3hwcnQtPmV2ZW50X2NoYW5uZWwpIHsKKysJCXJjID0gZXJybm87CisrCQlf X3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsICIlczogY3JlYXRlIGV2ZW50IGNoYW5uZWwg ZmFpbGVkICIKKysJCQkiaXAgJXMgZXJyICVkIiwgX19mdW5jX18sIHJkbWFfeHBydC0+c21fZHIu eHBydC54cF9pcCwgcmMpOworKwkJZ290byBvdXQ7CisrCX0KKysKKysJcmMgPSByZG1hX2NyZWF0 ZV9pZChyZG1hX3hwcnQtPmV2ZW50X2NoYW5uZWwsICZyZG1hX3hwcnQtPmNtX2lkLCByZG1hX3hw cnQsCisrCSAgICByZG1hX3hwcnQtPmNvbm5fdHlwZSk7CisrCWlmIChyYykgeworKwkJcmMgPSBl cnJubzsKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwgIiVzOiBjcmVhdGUgaWQg ZmFpbGVkIGlwICVzIGVyciAlZCIsCisrCQkJX19mdW5jX18sIHJkbWFfeHBydC0+c21fZHIueHBy dC54cF9pcCwgcmMpOworKwkJZ290byBvdXQ7CisrCX0KKytvdXQ6CisgCXJldHVybiByYzsKKyB9 CisgCitAQCAtMjQyNywyOSArMjYxMiwyMCBAQAorIAkJcmV0dXJuIEVJTlZBTDsKKyAJfQorIAor LQlpZiAocmRtYV94cHJ0LT5zZXJ2ZXIpIHsKKysJaWYgKHJkbWFfeHBydC0+c2VydmVyICE9IFJE TUFYX0NMSUVOVCkgeworIAkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLAorIAkJCSIl cygpIG9ubHkgY2FsbGVkIGZyb20gY2xpZW50IHNpZGUhIiwKKyAJCQlfX2Z1bmNfXyk7CisgCQly ZXR1cm4gRUlOVkFMOworIAl9CisgCistCXJjID0gcnBjX3JkbWFfdGhyZWFkX2NyZWF0ZV9lcG9s bCgmcnBjX3JkbWFfc3RhdGUuY21fdGhyZWFkX2lkLAorLQkJcnBjX3JkbWFfY21fdGhyZWFkLCBy ZG1hX3hwcnQsICZycGNfcmRtYV9zdGF0ZS5jbV9lcG9sbGZkKTsKKy0JaWYgKHJjKSB7CistCQlf X3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCistCQkJIiVzKCkgJXBbJXVdIHJwY19yZG1h X3RocmVhZF9jcmVhdGVfZXBvbGwgZmFpbGVkOiAlcyAoJWQpIiwKKy0JCQlfX2Z1bmNfXywgcmRt YV94cHJ0LCByZG1hX3hwcnQtPnN0YXRlLCBzdHJlcnJvcihyYyksIHJjKTsKKy0JCXJldHVybiBy YzsKKy0JfQorLQorIAlyYyA9IHJwY19yZG1hX2JpbmRfY2xpZW50KHJkbWFfeHBydCk7CisgCWlm IChyYykKKyAJCXJldHVybiByYzsKKyAJcmMgPSBycGNfcmRtYV9wZF9nZXQocmRtYV94cHJ0KTsK KyAJaWYgKHJjKQorIAkJcmV0dXJuIHJjOworLQlyYyA9IHJwY19yZG1hX3NldHVwX3N0dWZmKHJk bWFfeHBydCk7CisrCXJjID0gcnBjX3JkbWFfc2V0dXBfc3R1ZmZfY2xpZW50KHJkbWFfeHBydCk7 CisgCWlmIChyYykgeworIAkJcnBjX3JkbWFfZGVzdHJveV9zdHVmZihyZG1hX3hwcnQpOworIAkJ cmV0dXJuIHJjOworQEAgLTI0NTcsMTEgKzI2MzMsNyBAQAorIAlyYyA9IHJwY19yZG1hX3NldHVw X2NicShyZG1hX3hwcnQsICZyZG1hX3hwcnQtPmNicWgsCisgCQkJCXJkbWFfeHBydC0+eGEtPnJx X2RlcHRoICsgcmRtYV94cHJ0LT54YS0+c3FfZGVwdGgsCisgCQkJCXJkbWFfeHBydC0+eGEtPmNy ZWRpdHMpOworLQlpZiAocmMpCistCQlyZXR1cm4gcmM7CistCistCXJldHVybiBycGNfcmRtYV9m ZF9hZGQocmRtYV94cHJ0LCByZG1hX3hwcnQtPmV2ZW50X2NoYW5uZWwtPmZkLAorLQkJCQlycGNf cmRtYV9zdGF0ZS5jbV9lcG9sbGZkKTsKKysJcmV0dXJuIHJjOworIH0KKyAKKyBleHRlcm4gbXV0 ZXhfdCBvcHNfbG9jazsKK2RpZmYgLXVyIG50aXJwYy03LjIvc3JjL3JwY19yZG1hLmggbnRpcnBj LTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL3JwY19yZG1hLmgK Ky0tLSBudGlycGMtNy4yL3NyYy9ycGNfcmRtYS5oCTIwMjUtMDktMjMgMTA6MDU6MTkuMDAwMDAw MDAwIC0wNDAwCisrKysgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5Nzgy NTZiZDEvc3JjL3JwY19yZG1hLmgJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAgLTA0MDAK K0BAIC04Nyw2ICs4NywxMCBAQAorICNkZWZpbmUgQ0JDX0ZMQUdfTk9ORQkJMHgwMDAwCisgI2Rl ZmluZSBDQkNfRkxBR19SRUxFQVNFCTB4MDAwMQorICNkZWZpbmUgQ0JDX0ZMQUdfUkVMRUFTSU5H CTB4MDAwMgorKy8qIHN2Y19yZXF1ZXN0IHJldHVybmVkIFhQUlRfU1VTUEVORCAoZS5nLiBRT1Ms IGFzeW5jIHJlcXVlc3QgaGFuZGxpbmcpCisrICogd3JhcF9jYWxsYmFjayBkZWZlcnJlZCB0aGUg c2VudGluZWwgY2JjX3JlbGVhc2VfaXQgdG8geGRyX3JkbWFfc3ZjX2ZsdXNob3V0CisrICogc28g dGhhdCBkYXRhcSBidWZmZXJzIHJlbWFpbiB2YWxpZCBhY3Jvc3MgdGhlIHN1c3BlbnNpb24gd2lu ZG93LiAqLworKyNkZWZpbmUgQ0JDX0ZMQUdfU0VOVElORUxfUEVORElORyAweDAwMDQKKyAKKyAj ZGVmaW5lIFJETUFfQ0JfVElNRU9VVF9TRUMgMTAKKyAKK0BAIC0yMjIsNiArMjI2LDcgQEAKKyAJ CQkJCSAqIC0xIChSRE1BWF9TRVJWRVJfQ0hJTEQpOgorIAkJCQkJICogc2VydmVyIGhhcyBhY2Nl cHRlZCBjb25uZWN0aW9uCisgCQkJCQkgKi8KKysJYm9vbCBzaGFyZWQ7CisgCisgCWVudW0gcmRt YV90cmFuc3BvcnRfc3RhdGUgeworIAkJUkRNQVhTX0lOSVRJQUwsIAkvKiBhc3N1bWVzIHplcm8s IG5ldmVyIHNldCAqLworQEAgLTM3NCw2ICszNzksNyBAQAorIGVudW0geHBydF9zdGF0IHN2Y19y ZG1hX3JlbmRlenZvdXMoU1ZDWFBSVCAqKTsKKyAKKyAvKiBjbGllbnQgKi8KKytpbnQgcnBjX3Jk bWFfY29ubmVjdF9wcmVwYXJlKFJETUFYUFJUICopOworIGludCBycGNfcmRtYV9jb25uZWN0KFJE TUFYUFJUICopOworIGludCBycGNfcmRtYV9jb25uZWN0X2ZpbmFsaXplKFJETUFYUFJUICopOwor IAorQEAgLTM4Myw3ICszODksNyBAQAorIHZvaWQgeGRyX3JkbWFfYWRkX291dGJ1ZnNfZGF0YShS RE1BWFBSVCAqcmRtYV94cHJ0KTsKKyB2b2lkIHhkcl9yZG1hX2FkZF9pbmJ1ZnNfaGRyKFJETUFY UFJUICpyZG1hX3hwcnQpOworIHZvaWQgeGRyX3JkbWFfYWRkX291dGJ1ZnNfaGRyKFJETUFYUFJU ICpyZG1hX3hwcnQpOworLXZvaWQgeGRyX3JkbWFfY2FsbHEoUkRNQVhQUlQgKik7Cisrdm9pZCB4 ZHJfcmRtYV9jYWxscShSRE1BWFBSVCAqLCBpbnQpOworIAorIGJvb2wgeGRyX3JkbWFfY2xudF9y ZXBseShYRFIgKiwgdV9pbnQzMl90KTsKKyBib29sIHhkcl9yZG1hX2NsbnRfZmx1c2hvdXQoc3Ry dWN0IHJwY19yZG1hX2NiYyAqKTsKK0BAIC00MDYsNCArNDEyLDEzIEBACisgaW50IHhkcl9yZG1h X2RlcmVnX21yKFJETUFYUFJUICpyZG1hX3hwcnQsIHN0cnVjdCBpYnZfbXIgKm1yLAorICAgICB1 aW50OF90ICpidWZmZXJfYWxpZ25lZCwgdWludDMyX3QgYnVmZmVyX3RvdGFsKTsKKyAKKytpbnQg cnBjX3JkbWFfY3FfZXZlbnRfaGFuZGxlcihSRE1BWFBSVCAqLCBpbnQpOworKworK1JETUFYUFJU ICogcnBjX3JkbWFfYWxsb2NhdGUoY29uc3Qgc3RydWN0IHJwY19yZG1hX2F0dHIgKik7CisrCisr aW50IHJwY19yZG1hX3NldHVwX2NicShSRE1BWFBSVCAqLCBzdHJ1Y3QgcG9vbHFfaGVhZCAqLAor KyAgICB1X2ludCBkZXB0aCwgdV9pbnQgc2dlKTsKKysKKyt2b2lkIHN2Y19yZG1hX29wcyhTVkNY UFJUICopOworKworICNlbmRpZiAvKiAhX1RJUlBDX1JQQ19SRE1BX0ggKi8KK2RpZmYgLXVyIG50 aXJwYy03LjIvc3JjL3N2Yy5jIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEy OTc4MjU2YmQxL3NyYy9zdmMuYworLS0tIG50aXJwYy03LjIvc3JjL3N2Yy5jCTIwMjUtMDktMjMg MTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCisrKysgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTVi YWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL3N2Yy5jCTIwMjYtMDUtMTggMTk6NDA6MjAuMDAwMDAw MDAwIC0wNDAwCitAQCAtMzc4LDcgKzM3OCw3IEBACisgIHJwY2JfaXQ6CisgCXJ3bG9ja191bmxv Y2soJnN2Y19sb2NrKTsKKyAJLyogbm93IHJlZ2lzdGVyIHRoZSBpbmZvcm1hdGlvbiB3aXRoIHRo ZSBsb2NhbCBiaW5kZXIgc2VydmljZSAqLworLQlpZiAobmNvbmYpIHsKKysJaWYgKG5jb25mICYm ICgoeHBydC0+eHBfZmxhZ3MgJiBTVkNfWFBSVF9GTEFHX05PX1NFVCkgPT0gMCkpIHsKKyAJCS8q TElOVEVEIGNvbnN0IGNhc3Rhd2F5ICovCisgCQlkdW1teSA9CisgCQkgICAgcnBjYl9zZXQocHJv ZywgdmVycywgKHN0cnVjdCBuZXRjb25maWcgKiluY29uZiwKK2RpZmYgLXVyIG50aXJwYy03LjIv c3JjL3N2Y19pbnRlcm5hbC5oIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEy OTc4MjU2YmQxL3NyYy9zdmNfaW50ZXJuYWwuaAorLS0tIG50aXJwYy03LjIvc3JjL3N2Y19pbnRl cm5hbC5oCTIwMjUtMDktMjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCisrKysgbnRpcnBjLTVj NzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL3N2Y19pbnRlcm5hbC5o CTIwMjYtMDUtMTggMTk6NDA6MjAuMDAwMDAwMDAwIC0wNDAwCitAQCAtMzAsNiArMzAsNyBAQAor ICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyAjaW5j bHVkZSA8bWlzYy9vc19lcG9sbC5oPgorKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyAjaW5jbHVk ZSA8cnBjL3JwY19tc2cuaD4KKyAKKyAjaW5jbHVkZSAicnBjX2RwbHhfaW50ZXJuYWwuaCIKK0BA IC0xOTQsNyArMTk1LDQ2IEBACisgdm9pZCBzdmNfcnFzdF94cHJ0X3NlbmRfY29tcGxldGUoU1ZD WFBSVCAqKTsKKyB2b2lkIHN2Y19ycXN0X3VuaG9vayhTVkNYUFJUICopOworIAorKy8qIEFsbG93 IG11Y2ggbW9yZSBzcGFjZSB0aGFuIHdlIHJlYWxseSBuZWVkIGZvciBhIHNvY2sgbmFtZS4gQW4g SVBWNCBhZGRyZXNzCisrICogZW1iZWRkZWQgaW4gSVB2NiBjb3VsZCB1c2UgNDUgYnl0ZXMgYW5k IHRoZW4gaWYgd2UgYWRkIGEgcG9ydCwgdGhhdCB3b3VsZCBiZQorKyAqIGFuIGFkZGl0aW9uYWwg NiBieXRlcyAoOjY1NTM1KSBmb3IgYSB0b3RhbCBvZiA1MSwgYW5kIHRoZW4gb25lIG1vcmUgZm9y IE5VTAorKyAqIHRlcm1pbmF0aW9uLiBXZSBjb3VsZCB1c2UgNjQgaW5zdGVhZCBvZiAxMjguCisr ICovCisrI2RlZmluZSBTT0NLX05BTUVfTUFYIDEyOAorKworIHR5cGVkZWYgc3RydWN0IHNvY2th ZGRyX3N0b3JhZ2Ugc29ja2FkZHJfdDsKKyBpbnQgc3ZjX2dldF9wb3J0KHNvY2thZGRyX3QgKik7 CisgCisrc3RhdGljIGlubGluZSB2b2lkICpzb2NrZXRfYWRkcihzb2NrYWRkcl90ICphZGRyKQor K3sKKysJc3dpdGNoIChhZGRyLT5zc19mYW1pbHkpIHsKKysJY2FzZSBBRl9JTkVUOgorKwkJcmV0 dXJuICYoKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilhZGRyKS0+c2luX2FkZHIpOworKwljYXNlIEFG X0lORVQ2OgorKwkJcmV0dXJuICYoKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopYWRkciktPnNpbjZf YWRkcik7CisrI2lmZGVmIFJQQ19WU09DSworKwljYXNlIEFGX1ZTT0NLOgorKwkJcmV0dXJuICYo KChzdHJ1Y3Qgc29ja2FkZHJfdm0gKilhZGRyKS0+c3ZtX2NpZCk7CisrI2VuZGlmIC8qIFZTT0NL ICovCisrCWRlZmF1bHQ6CisrCQlyZXR1cm4gYWRkcjsKKysJfQorK30KKysKKytzdGF0aWMgaW5s aW5lIGJvb2wgc3ByaW50X3NvY2tpcChzb2NrYWRkcl90ICphZGRyLCBjaGFyICpidWYsIGludCBs ZW4pCisreworKyNpZmRlZiBSUENfVlNPQ0sKKysJaWYgKGFkZHItPnNzX2ZhbWlseSA9PSBBRl9W U09DSykgeworKwkJaW50IHJjID0gc25wcmludGYoYnVmLCBsZW4sICIlZCIsCisrCQkJICgoc3Ry dWN0IHNvY2thZGRyX3ZtICopYWRkciktPnN2bV9jaWQpKTsKKysJCXJldHVybiByYyA+PSAwICYm IHJjIDwgbGVuOworKwl9CisrI2VuZGlmIC8qIFZTT0NLICovCisrCisrCWlmIChhZGRyLT5zc19m YW1pbHkgIT0gQUZfSU5FVCAmJiBhZGRyLT5zc19mYW1pbHkgIT0gQUZfSU5FVDYpCisrCQlyZXR1 cm4gZmFsc2U7CisrCisrCXJldHVybiBpbmV0X250b3AoYWRkci0+c3NfZmFtaWx5LCBzb2NrZXRf YWRkcihhZGRyKSwgYnVmLCBsZW4pICE9IE5VTEw7CisrfQorKworICNlbmRpZgkJCQkvKiBUSVJQ Q19TVkNfSU5URVJOQUxfSCAqLworZGlmZiAtdXIgbnRpcnBjLTcuMi9zcmMvc3ZjX3JkbWEuYyBu dGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMvc3ZjX3Jk bWEuYworLS0tIG50aXJwYy03LjIvc3JjL3N2Y19yZG1hLmMJMjAyNS0wOS0yMyAxMDowNToxOS4w MDAwMDAwMDAgLTA0MDAKKysrKyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUx Mjk3ODI1NmJkMS9zcmMvc3ZjX3JkbWEuYwkyMDI2LTA1LTE4IDE5OjQwOjIwLjAwMDAwMDAwMCAt MDQwMAorQEAgLTYwLDcgKzYwLDYgQEAKKyAjaW5jbHVkZSA8cnBjL3N2Y19ycXN0Lmg+CisgI2lu Y2x1ZGUgPHJwYy9zdmNfYXV0aC5oPgorIAorLXN0YXRpYyB2b2lkIHN2Y19yZG1hX29wcyhTVkNY UFJUICopOworIAorIC8qCisgICogc3ZjX3JkbWFfcmVuZGV6dm91czogd2FpdHMgZm9yIGNvbm5l Y3Rpb24gcmVxdWVzdAorQEAgLTk1LDExICs5NCwxOCBAQAorIAltZW1jcHkocmRtYV94cHJ0LT5z bV9kci54cHJ0LnhwX3JlbW90ZS5uYi5idWYsIHNzLAorIAkJcmRtYV94cHJ0LT5zbV9kci54cHJ0 LnhwX3JlbW90ZS5uYi5sZW4pOworIAorLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQs CistCQkiJXM6JXUgbG9jYWwgJXAgcmVtb3RlICVwIHhwcnQgJXAiLCBfX2Z1bmNfXywgX19MSU5F X18sCisrCXJkbWFfeHBydC0+c21fZHIueHBydC54cF9pcCA9IG1lbV9hbGxvYyhTT0NLX05BTUVf TUFYKTsKKysJc3ByaW50X3NvY2tpcChzcywgcmRtYV94cHJ0LT5zbV9kci54cHJ0LnhwX2lwLAor KwkgICAgU09DS19OQU1FX01BWCk7CisrCXJkbWFfeHBydC0+c21fZHIueHBydC54cF9wb3J0ID0g c3ZjX2dldF9wb3J0KHNzKTsKKysKKysJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1B LAorKwkJIiVzOiV1IGxvY2FsICVwIHJlbW90ZSAlcCB4cHJ0ICVwIHJlbW90ZSBpcCAlcyIsCisr CQlfX2Z1bmNfXywgX19MSU5FX18sCisgCQkmcmRtYV94cHJ0LT5zbV9kci54cHJ0LnhwX2xvY2Fs Lm5iLAorIAkJJnJkbWFfeHBydC0+c21fZHIueHBydC54cF9yZW1vdGUubmIsCistCQkmcmRtYV94 cHJ0LT5zbV9kci54cHJ0KTsKKysJCSZyZG1hX3hwcnQtPnNtX2RyLnhwcnQsCisrCQlyZG1hX3hw cnQtPnNtX2RyLnhwcnQueHBfaXApOworIAorIAlzdmNfcmRtYV9vcHMoJnJkbWFfeHBydC0+c21f ZHIueHBydCk7CisgCXJkbWFfeHBydC0+c21fZHIucmVjdnN6ID0gcmVxX3JkbWFfeHBydC0+c21f ZHIucmVjdnN6OworQEAgLTE1NSw3ICsxNjEsNyBAQAorIAlfX3dhcm54KFRJUlBDX0RFQlVHX0ZM QUdfRVZFTlQsCisgCQkiJXM6JXUgTmV3IFJETUEgY2xpZW50IGNvbm5lY3RlZCB4cHJ0ICVwLCB4 cF9mZCAlZCwgIgorIAkJInFwX251bSAlZCwgeHBfZmQgJWQgaXNfcmRtYV9lbmFibGVkICVkIHRv IGxvY2FsIHBvcnQgJWQgIgorLQkJImZyb20gcmVtb3RlIHBvcnQgJWQgcmVmICVkIGVwb2xsICUj MDR4IiwKKysJCSJmcm9tIHJlbW90ZSBwb3J0ICVkIHJlZiAlZCBlcG9sbCAlIzA0eCByZW1vdGUg aXAgJXMiLAorIAkJX19mdW5jX18sIF9fTElORV9fLAorIAkJJnJkbWFfeHBydC0+c21fZHIueHBy dCwgcmRtYV94cHJ0LT5zbV9kci54cHJ0LnhwX2ZkLAorIAkJcmRtYV94cHJ0LT5xcC0+cXBfbnVt LAorQEAgLTE2NSw3ICsxNzEsOCBAQAorIAkJcmRtYV94cHJ0LT5zbV9kci54cHJ0LnhwX3JlbW90 ZS5uYi5idWYgPworIAkJc3ZjX2dldF9wb3J0KHJkbWFfeHBydC0+c21fZHIueHBydC54cF9yZW1v dGUubmIuYnVmKSA6IDAsCisgCQlyZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfcmVmY250LAorLQkJ cmRtYV94cHJ0LT5zbV9kci54cHJ0LnhwX2ZsYWdzKTsKKysJCXJkbWFfeHBydC0+c21fZHIueHBy dC54cF9mbGFncywKKysJCXJkbWFfeHBydC0+c21fZHIueHBydC54cF9pcCk7CisgCisgCXJldHVy biAoWFBSVF9JRExFKTsKKyB9CitAQCAtMjIxLDYgKzIyOCwyNyBAQAorIAkJcmV0dXJuIChYUFJU X0RJRUQpOworIAl9CisgCisrCS8qIGluIG9yZGVyIG9mIGxpa2VsaWhvb2QgKi8KKysJaWYgKHJl cS0+cnFfbXNnLnJtX2RpcmVjdGlvbiA9PSBDQUxMKSB7CisrCQkvKiBhbiBvcmRpbmFyeSBjYWxs IGhlYWRlciAqLworKwkJZ290byBwcm9jZXNzX2NhbGw7CisrCX0KKysKKysJaWYgKHJlcS0+cnFf bXNnLnJtX2RpcmVjdGlvbiA9PSBSRVBMWSkgeworKwkJLyogcmVwbHkgaGVhZGVyICh4cHJ0IE9L KSAqLworKwkJY2xudF9yZXFfcHJvY2Vzc19yZXBseShyZXEtPnJxX3hwcnQsIHJlcSk7CisrCQly ZXR1cm4gWFBSVF9JRExFOworKwl9CisrCisrCV9fd2FybngoVElSUENfREVCVUdfRkxBR19XQVJO LAorKwkJIiVzOiAlcCBmZCAlZCBmYWlsZWQgZGlyZWN0aW9uICUiIFBSSXUzMgorKwkJIiAod2ls bCBzZXQgZGVhZCkiLAorKwkJX19mdW5jX18sIHJlcS0+cnFfeHBydCwgcmVxLT5ycV94cHJ0LT54 cF9mZCwKKysJCXJlcS0+cnFfbXNnLnJtX2RpcmVjdGlvbik7CisrCXJldHVybiAoWFBSVF9ESUVE KTsKKysKKytwcm9jZXNzX2NhbGw6CisrCisgCS8qIHRoZSBjaGVja3N1bSAqLworIAlyZXEtPnJx X2Nrc3VtID0gMDsKKyAKK0BAIC0yODksNyArMzE3LDcgQEAKKyAKKyAJc3ZjX3Jxc3RfeHBydF91 bnJlZ2lzdGVyX3JkbWEoeHBydCwgZmxhZ3MpOworIAorLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZM QUdfRVZFTlQsCisrCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwKKyAJICAgICIl cygpICVwWyV1XSIsCisgCSAgICBfX2Z1bmNfXywgcmRtYV94cHJ0LCByZG1hX3hwcnQtPnN0YXRl KTsKKyAKK0BAIC0zMTMsNyArMzQxLDcgQEAKKyB7CisgCVJETUFYUFJUICpyZG1hX3hwcnQgPSBS RE1BX0RSKFJFQ19YUFJUKHhwcnQpKTsKKyAKKy0JX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VW RU5ULAorKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsCisgCQkiJXMoKSAlcCB4 cF9yZWZjbnQgJSIgUFJJZDMyCisgCQkiIHNob3VsZCBhY3R1YWxseSBkZXN0cm95IHRoaW5ncyBA ICVzOiVkIiwKKyAJCV9fZnVuY19fLCB4cHJ0LCB4cHJ0LT54cF9yZWZjbnQsIHRhZywgbGluZSk7 CitAQCAtMzY4LDcgKzM5Niw3IEBACisgCXJldHVybiAoVFJVRSk7CisgfQorIAorLXN0YXRpYyB2 b2lkCisrdm9pZAorIHN2Y19yZG1hX29wcyhTVkNYUFJUICp4cHJ0KQorIHsKKyAJc3RhdGljIHN0 cnVjdCB4cF9vcHMgb3BzOworZGlmZiAtdXIgbnRpcnBjLTcuMi9zcmMvc3ZjX3Jxc3QuYyBudGly cGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMvc3ZjX3Jxc3Qu YworLS0tIG50aXJwYy03LjIvc3JjL3N2Y19ycXN0LmMJMjAyNS0wOS0yMyAxMDowNToxOS4wMDAw MDAwMDAgLTA0MDAKKysrKyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3 ODI1NmJkMS9zcmMvc3ZjX3Jxc3QuYwkyMDI2LTA1LTE4IDE5OjQwOjIwLjAwMDAwMDAwMCAtMDQw MAorQEAgLTI5Nyw3ICsyOTcsNyBAQAorIHN0YXRpYyB2b2lkIHN2Y19ycXN0X2Vwb2xsX2xvb3Ao c3RydWN0IHdvcmtfcG9vbF9lbnRyeSAqd3BlKTsKKyBzdGF0aWMgdm9pZCBzdmNfY29tcGxldGVf dGFzayhzdHJ1Y3Qgc3ZjX3Jxc3RfcmVjICpzcl9yZWMsIGJvb2wgZmluaXNoZWQpOworIAorLXN0 YXRpYyBpbnQKKytpbnQKKyBzdmNfcnFzdF9leHBpcmVfY21wZihjb25zdCBzdHJ1Y3Qgb3ByX3Ji dHJlZV9ub2RlICpsaHMsCisgCQkgICAgIGNvbnN0IHN0cnVjdCBvcHJfcmJ0cmVlX25vZGUgKnJo cykKKyB7CitAQCAtMzcxLDcgKzM3MSw3IEBACisgCWV2X3NpZyhzcl9yZWMtPnN2WzBdLCAwKTsJ Lyogc2VuZCB3YWtldXAgKi8KKyB9CisgCistc3RhdGljIHZvaWQKKyt2b2lkCisgc3ZjX3Jxc3Rf ZXhwaXJlX3Rhc2soc3RydWN0IHdvcmtfcG9vbF9lbnRyeSAqd3BlKQorIHsKKyAJc3RydWN0IGNs bnRfcmVxICpjYyA9IG9wcl9jb250YWluZXJvZih3cGUsIHN0cnVjdCBjbG50X3JlcSwgY2Nfd3Bl KTsKK2RpZmYgLXVyIG50aXJwYy03LjIvc3JjL3N2Y192Yy5jIG50aXJwYy01Yzc2MWJiMTg2ZTll YTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9zdmNfdmMuYworLS0tIG50aXJwYy03LjIv c3JjL3N2Y192Yy5jCTIwMjUtMDktMjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCisrKysgbnRp cnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL3N2Y192Yy5j CTIwMjYtMDUtMTggMTk6NDA6MjAuMDAwMDAwMDAwIC0wNDAwCitAQCAtNzQsNiArNzQsNyBAQAor ICNpbmNsdWRlIDxycGMvc3ZjX2F1dGguaD4KKyAjaW5jbHVkZSA8cnBjL3N2Y19ycXN0Lmg+Cisg I2luY2x1ZGUgPHJwYy94ZHJfaW9xLmg+CisrI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorIAorICNp bmNsdWRlICJycGNfY29tLmgiCisgI2luY2x1ZGUgImNsbnRfaW50ZXJuYWwuaCIKK0BAIC00Mzgs NiArNDM5LDcgQEAKKyAJc29ja2xlbl90IGxlbjsKKyAJc3RhdGljIGludCBuID0gMTsKKyAJc3Ry dWN0IHRpbWV2YWwgdGltZXZhbDsKKysJc3RydWN0IHNvY2thZGRyICpzYTsKKyAKKyAJWFBSVF9B VVRPX1RSQUNFUE9JTlQoeHBydCwgcmVuZGV6dm91c19zdGFydCwgVFJBQ0VfSU5GTywKKyAJCSJy ZW5kZXp2b3VzX3N0YXJ0Iik7CitAQCAtNTA1LDYgKzUwNywyOCBAQAorIAluZXd4cHJ0LT54cF9y ZW1vdGUubmIubGVuID0gbGVuOworIAlYUFJUX1RSQUNFKG5ld3hwcnQsIF9fZnVuY19fLCBfX2Z1 bmNfXywgX19MSU5FX18pOworIAorKwlzYSA9IChzdHJ1Y3Qgc29ja2FkZHIgKiluZXd4cHJ0LT54 cF9yZW1vdGUubmIuYnVmOworKwkvKiBTdG9yZSBjbGllbnQgaW5mb3JtYXRpb24gKElQICYgUG9y dCkgaW4gU1ZDWFBSVCAqLworKwlpZiAobmV3eHBydC0+eHBfcmVtb3RlLm5iLmxlbiA+IDAgJiYg c2EgIT0gTlVMTCkgeworKwkJaWYgKHNhLT5zYV9mYW1pbHkgPT0gQUZfSU5FVCkgeworKwkJCXN0 cnVjdCBzb2NrYWRkcl9pbiAqc2luID0gKHN0cnVjdCBzb2NrYWRkcl9pbiAqKXNhOworKwkJCWlu ZXRfbnRvcChBRl9JTkVULCAmc2luLT5zaW5fYWRkciwgbmV3eHBydC0+eHBfY2xudF9hZGRyLAor KwkJCQkJc2l6ZW9mKG5ld3hwcnQtPnhwX2NsbnRfYWRkcikpOworKwkJCW5ld3hwcnQtPnhwX2Ns bnRfcG9ydCA9IG50b2hzKHNpbi0+c2luX3BvcnQpOworKwkJfSBlbHNlIGlmIChzYS0+c2FfZmFt aWx5ID09IEFGX0lORVQ2KSB7CisrCQkJc3RydWN0IHNvY2thZGRyX2luNiAqc2luNiA9IChzdHJ1 Y3Qgc29ja2FkZHJfaW42ICopc2E7CisrCQkJaW5ldF9udG9wKEFGX0lORVQ2LCAmc2luNi0+c2lu Nl9hZGRyLCBuZXd4cHJ0LT54cF9jbG50X2FkZHIsCisrCQkJCQlzaXplb2YobmV3eHBydC0+eHBf Y2xudF9hZGRyKSk7CisrCQkJbmV3eHBydC0+eHBfY2xudF9wb3J0ID0gbnRvaHMoc2luNi0+c2lu Nl9wb3J0KTsKKysJCX0gZWxzZSB7CisrCQkJc25wcmludGYobmV3eHBydC0+eHBfY2xudF9hZGRy LCBzaXplb2YobmV3eHBydC0+eHBfY2xudF9hZGRyKSwgInVua25vd24iKTsKKysJCQluZXd4cHJ0 LT54cF9jbG50X3BvcnQgPSAwOworKwkJfQorKwl9IGVsc2UgeworKwkJc25wcmludGYobmV3eHBy dC0+eHBfY2xudF9hZGRyLCBzaXplb2YobmV3eHBydC0+eHBfY2xudF9hZGRyKSwgIm5vX2FkZHIi KTsKKysJCW5ld3hwcnQtPnhwX2NsbnRfcG9ydCA9IDA7CisrCX0KKysKKyAJLyogWFhYIGZ2ZGwg LSBpcyB0aGlzIHVzZWZ1bD8gKFllcy4gIE1hdHQpICovCisgCWlmIChzaS5zaV9wcm90byA9PSBJ UFBST1RPX1RDUCkgeworIAkJbGVuID0gMTsKK0BAIC05NzksNyArMTAwMyw3IEBACisgCVNWQ1hQ UlQgKnhwcnQsIHN0cnVjdCBwcm94eV9oZWFkZXJfcGFydCAqcHJveHlfaGVhZGVyX3BhcnQpCisg eworIAllbnVtIGhhcHJveHlfcmV0X2NvZGUgcmV0OworLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZM QUdfRVZFTlQsCisrCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwKKyAJCSIlczog JXAgZmQgJWQgcHJveHkgaWdub3JlZCBmb3IgbG9jYWwuIGxlbiBpZ25vcmVkOiAlZCIsCisgCQlf X2Z1bmNfXywgeHBydCwgeHBydC0+eHBfZmQsIHByb3h5X2hlYWRlcl9wYXJ0LT5sZW4pOworIAlj b25zdCBlbnVtIGhhcHJveHlfcmV0X2NvZGUgaWdub3JlX3JlbWFpbmluZ19kYXRhX3Jlc3VsdCA9 CitAQCAtMTIwNSw5ICsxMjI5LDkgQEAKKyAJCQkJCQl4cHJ0LAorIAkJCQkJCVNWQ19YUFJUX0ZM QUdfQURERURfUkVDVikpKSB7CisgCQkJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1Is CistCQkJCQkJIiVzOiAlcCBmZCAlZCBzdmNfcnFzdF9yZWFybV9ldmVudHMgZmFpbGVkICh3aWxs IHNldCBkZWFkKSIsCisrCQkJCQkJIiVzOiAlcCBmZCAlZCBzdmNfcnFzdF9yZWFybV9ldmVudHMg ZmFpbGVkICh3aWxsIHNldCBkZWFkKSAtIGNsaWVudGlwOiAlczoldSIsCisgCQkJCQkJInN2Y192 Y193YWl0IiwKKy0JCQkJCQl4cHJ0LCB4cHJ0LT54cF9mZCk7CisrCQkJCQkJeHBydCwgeHBydC0+ eHBfZmQsIHhwcnQtPnhwX2NsbnRfYWRkciwgeHBydC0+eHBfY2xudF9wb3J0KTsKKyAJCQkJCVNW Q19ERVNUUk9ZKHhwcnQpOworIAkJCQkJY29kZSA9IEVJTlZBTDsKKyAJCQkJfQorQEAgLTEyMTYs OCArMTI0MCw4IEBACisgCQkJCXJldHVybiBTVkNfU1RBVCh4cHJ0KTsKKyAJCQl9CisgCQkJX193 YXJueChUSVJQQ19ERUJVR19GTEFHX1dBUk4sCistCQkJCSIlczogJXAgZmQgJWQgcmVjdiBlcnJu byAlZCAod2lsbCBzZXQgZGVhZCkiLAorLQkJCQkic3ZjX3ZjX3dhaXQiLCB4cHJ0LCB4cHJ0LT54 cF9mZCwgY29kZSk7CisrCQkJCSIlczogJXAgZmQgJWQgcmVjdiBlcnJubyAlZCAod2lsbCBzZXQg ZGVhZCkgLSBjbGllbnRpcDogJXM6JXUiLAorKwkJCQkic3ZjX3ZjX3dhaXQiLCB4cHJ0LCB4cHJ0 LT54cF9mZCwgY29kZSwgeHBydC0+eHBfY2xudF9hZGRyLCB4cHJ0LT54cF9jbG50X3BvcnQpOwor IAkJCVNWQ19ERVNUUk9ZKHhwcnQpOworIAorIAkJCVhQUlRfQVVUT19UUkFDRVBPSU5UKHhwcnQs IHJlY3ZfZXJyLAorQEAgLTEyMjcsOCArMTI1MSw4IEBACisgCisgCQlpZiAodW5saWtlbHkoIXJs ZW4pKSB7CisgCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1NWQ19WQywKKy0JCQkJIiVzOiAl cCBmZCAlZCByZWN2IGNsb3NlZCAod2lsbCBzZXQgZGVhZCkiLAorLQkJCQkic3ZjX3ZjX3dhaXQi LCB4cHJ0LCB4cHJ0LT54cF9mZCk7CisrCQkJCSIlczogJXAgZmQgJWQgcmVjdiBjbG9zZWQgKHdp bGwgc2V0IGRlYWQpIC0gY2xpZW50aXA6ICVzOiV1IiwKKysJCQkJInN2Y192Y193YWl0IiwgeHBy dCwgeHBydC0+eHBfZmQsIHhwcnQtPnhwX2NsbnRfYWRkciwgeHBydC0+eHBfY2xudF9wb3J0KTsK KyAJCQlTVkNfREVTVFJPWSh4cHJ0KTsKKyAKKyAJCQlYUFJUX0FVVE9fVFJBQ0VQT0lOVCh4cHJ0 LCByZWN2X2VtcHR5LAorQEAgLTEyNDMsNiArMTI2NywxNiBAQAorIAkJCSJzeF9mYnRiYyA9ICUw OHgiLCAoaW50KXhkLT5zeF9mYnRiYyk7CisgCisgCQlpZiAoeGQtPnN4X2ZidGJjID09IFBQMl9T SUdfVUlOVDMyKSB7CisrCQkJLyogU2luY2UgdGhpcyBpcyBoYXByb3h5IGhlYWRlciBjbGVhciBv ZmYgc3hfZmJ0YmMKKysJCQkgKiBJbiBjYXNlIG9mIEhBUFJPWFlfUkVUX0NPREVfX0lHTk9SRV9M T0NBTCwKKysJCQkgKiBoYW5kbGVfaGFwcm94eV9oZWFkZXIoKSBkbyByZWFybSB0aGUgeHBydCBy ZWN2IGZkLgorKwkJCSAqIGNhdXNpbmcgYSByYWNlIGlmIHRoZSB0aHJlYWQgZ2V0cyBzY2hlZHVs ZWQKKysJCQkgKiBvdXQgYWZ0ZXIgcmVhcm0gYW5kIGVwb2xsX3dhaXQgZ2V0cyBkYXRhIGF2YWls YWJsZQorKwkJCSAqIGV2ZW50LCB0aGVuIG5ldyByZWN2IGVuZHVwIGluIGVsc2VjYXNlCisrCQkJ ICogImlmICgheGQtPnN4X2ZidGJjKSIKKysJCQkgKiBhbmQgd2lsbCBjYXVzZSB1diB0byBOVUxM ICovCisrCQkJeGQtPnN4X2ZidGJjID0gMDsKKysKKyAJCQkvKiBIQSBQcm94eSBWMj8gKi8KKyAJ CQllbnVtIGhhcHJveHlfcmV0X2NvZGUgcmV0ID0gaGFuZGxlX2hhcHJveHlfaGVhZGVyKHhwcnQp OworIAkJCXN3aXRjaCAocmV0KSB7CitAQCAtMTI1MiwxNyArMTI4NiwxNSBAQAorIAkJCQkJcmV0 dXJuIFNWQ19TVEFUKHhwcnQpOworIAkJCQl9CisgCQkJCS8qIE5vdyBsb29rIHRvIHNlZSBpZiB0 aGVyZSdzIG1vcmUuLi4gKi8KKy0JICAgICAgICAgICAgICAgICAgICAgICAgeGQtPnN4X2ZidGJj ID0gMDsKKyAJCQkJaGFwX2FnYWluID0gdHJ1ZTsKKyAJCQkJZ290byBhZ2FpbjsKKyAJCQljYXNl IEhBUFJPWFlfUkVUX0NPREVfX0ZBSUxVUkU6CisgCQkJCVNWQ19ERVNUUk9ZKHhwcnQpOworIAkJ CQlyZXR1cm4gU1ZDX1NUQVQoeHBydCk7CisgCQkJY2FzZSBIQVBST1hZX1JFVF9DT0RFX19JR05P UkVfTE9DQUw6CistCQkJCS8qIGNsZWFyIG9mZiBzeF9mYnRiYyAqLworLQkgICAgICAgICAgICAg ICAgICAgICAgICB4ZC0+c3hfZmJ0YmMgPSAwOworIAkJCQlyZXR1cm4gU1ZDX1NUQVQoeHBydCk7 CisgCQkJY2FzZSBIQVBST1hZX1JFVF9DT0RFX19OT1RfSEFQUk9YWToKKysJCQkJeGQtPnN4X2Zi dGJjID0gUFAyX1NJR19VSU5UMzI7CisgCQkJCWJyZWFrOworIAkJCX0KKyAJCX0KK0BAIC0xMjc2 LDggKzEzMDgsOCBAQAorIAorIAkJaWYgKHVubGlrZWx5KCF4ZC0+c3hfZmJ0YmMpKSB7CisgCQkJ X193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLAorLQkJCQkiJXM6ICVwIGZkICVkIGZyYWdt ZW50IGlzIHplcm8gKHdpbGwgc2V0IGRlYWQpIiwKKy0JCQkJX19mdW5jX18sIHhwcnQsIHhwcnQt PnhwX2ZkKTsKKysJCQkJIiVzOiAlcCBmZCAlZCBmcmFnbWVudCBpcyB6ZXJvICh3aWxsIHNldCBk ZWFkKSAtIGNsaWVudGlwOiAlczoldSIsCisrCQkJCV9fZnVuY19fLCB4cHJ0LCB4cHJ0LT54cF9m ZCwgeHBydC0+eHBfY2xudF9hZGRyLCB4cHJ0LT54cF9jbG50X3BvcnQpOworIAkJCVNWQ19ERVNU Uk9ZKHhwcnQpOworIAorIAkJCVhQUlRfQVVUT19UUkFDRVBPSU5UKHhwcnQsIHJlY3Zfbm9fcmVj b3JkLAorQEAgLTEzMDMsMTQgKzEzMzUsMTQgQEAKKyAKKyAJCWlmIChjb2RlID09IEVBR0FJTiB8 fCBjb2RlID09IEVXT1VMREJMT0NLKSB7CisgCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1NW Q19WQywKKy0JCQkJIiVzOiAlcCBmZCAlZCByZWN2IGVycm5vICVkICh0cnkgYWdhaW4pIiwKKy0J CQkJX19mdW5jX18sIHhwcnQsIHhwcnQtPnhwX2ZkLCBjb2RlKTsKKysJCQkJIiVzOiAlcCBmZCAl ZCByZWN2IGVycm5vICVkICh0cnkgYWdhaW4pIC0gY2xpZW50aXA6ICVzOiV1IiwKKysJCQkJX19m dW5jX18sIHhwcnQsIHhwcnQtPnhwX2ZkLCBjb2RlLCB4cHJ0LT54cF9jbG50X2FkZHIsIHhwcnQt PnhwX2NsbnRfcG9ydCk7CisgCQkJaWYgKHVubGlrZWx5KHN2Y19ycXN0X3JlYXJtX2V2ZW50cygK KyAJCQkJCQl4cHJ0LAorIAkJCQkJCVNWQ19YUFJUX0ZMQUdfQURERURfUkVDVikpKSB7CisgCQkJ CV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwKKy0JCQkJCSIlczogJXAgZmQgJWQgc3Zj X3Jxc3RfcmVhcm1fZXZlbnRzIGZhaWxlZCAod2lsbCBzZXQgZGVhZCkiLAorLQkJCQkJX19mdW5j X18sIHhwcnQsIHhwcnQtPnhwX2ZkKTsKKysJCQkJCSIlczogJXAgZmQgJWQgc3ZjX3Jxc3RfcmVh cm1fZXZlbnRzIGZhaWxlZCAod2lsbCBzZXQgZGVhZCkgLSBjbGllbnRpcDogJXM6JXUiLAorKwkJ CQkJX19mdW5jX18sIHhwcnQsIHhwcnQtPnhwX2ZkLCB4cHJ0LT54cF9jbG50X2FkZHIsIHhwcnQt PnhwX2NsbnRfcG9ydCk7CisgCQkJCVNWQ19ERVNUUk9ZKHhwcnQpOworIAkJCQljb2RlID0gRUlO VkFMOworIAkJCX0KK0BAIC0xMzIxLDggKzEzNTMsOCBAQAorIAkJCXJldHVybiBTVkNfU1RBVCh4 cHJ0KTsKKyAJCX0KKyAJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwKKy0JCQkiJXM6 ICVwIGZkICVkIHJlY3YgZXJybm8gJWQgKHdpbGwgc2V0IGRlYWQpIiwKKy0JCQlfX2Z1bmNfXywg eHBydCwgeHBydC0+eHBfZmQsIGNvZGUpOworKwkJCSIlczogJXAgZmQgJWQgcmVjdiBlcnJubyAl ZCAod2lsbCBzZXQgZGVhZCkgLSBjbGllbnRpcDogJXM6JXUiLAorKwkJCV9fZnVuY19fLCB4cHJ0 LCB4cHJ0LT54cF9mZCwgY29kZSwgeHBydC0+eHBfY2xudF9hZGRyLCB4cHJ0LT54cF9jbG50X3Bv cnQpOworIAkJU1ZDX0RFU1RST1koeHBydCk7CisgCisgCQlYUFJUX0FVVE9fVFJBQ0VQT0lOVCh4 cHJ0LCByZWN2X2Vycm9yLAorQEAgLTEzMzMsOCArMTM2NSw4IEBACisgCisgCWlmICh1bmxpa2Vs eSghcmxlbikpIHsKKyAJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19TVkNfVkMsCistCQkJIiVz OiAlcCBmZCAlZCByZWN2IGNsb3NlZCAod2lsbCBzZXQgZGVhZCkiLAorLQkJCV9fZnVuY19fLCB4 cHJ0LCB4cHJ0LT54cF9mZCk7CisrCQkJIiVzOiAlcCBmZCAlZCByZWN2IGNsb3NlZCAod2lsbCBz ZXQgZGVhZCkgLSBjbGllbnRpcDogJXM6JXUiLAorKwkJCV9fZnVuY19fLCB4cHJ0LCB4cHJ0LT54 cF9mZCwgeHBydC0+eHBfY2xudF9hZGRyLCB4cHJ0LT54cF9jbG50X3BvcnQpOworIAkJU1ZDX0RF U1RST1koeHBydCk7CisgCisgCQlYUFJUX0FVVE9fVFJBQ0VQT0lOVCh4cHJ0LCByZWN2X2Nsb3Nl ZCwKK0BAIC0xMzU4LDggKzEzOTAsOCBAQAorIAkJaWYgKHVubGlrZWx5KHN2Y19ycXN0X3JlYXJt X2V2ZW50cyh4cHJ0LAorIAkJCQkJCSAgIFNWQ19YUFJUX0ZMQUdfQURERURfUkVDVikpKSB7Cisg CQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLAorLQkJCQkiJXM6ICVwIGZkICVkIHN2 Y19ycXN0X3JlYXJtX2V2ZW50cyBmYWlsZWQgKHdpbGwgc2V0IGRlYWQpIiwKKy0JCQkJX19mdW5j X18sIHhwcnQsIHhwcnQtPnhwX2ZkKTsKKysJCQkJIiVzOiAlcCBmZCAlZCBzdmNfcnFzdF9yZWFy bV9ldmVudHMgZmFpbGVkICh3aWxsIHNldCBkZWFkKSAtIGNsaWVudGlwOiAlczoldSIsCisrCQkJ CV9fZnVuY19fLCB4cHJ0LCB4cHJ0LT54cF9mZCwgeHBydC0+eHBfY2xudF9hZGRyLCB4cHJ0LT54 cF9jbG50X3BvcnQpOworIAkJCVhQUlRfVU5JUVVFX0FVVE9fVFJBQ0VQT0lOVCh4cHJ0LCByZWFy bV9mYWlsZWQsCisgCQkJCVRSQUNFX0VSUiwgIlJlYXJtIGZhaWxlZCIpOworIAkJCVNWQ19ERVNU Uk9ZKHhwcnQpOworQEAgLTEzODUsOCArMTQxNyw4IEBACisgCisgCWlmICh1bmxpa2VseShzdmNf cnFzdF9yZWFybV9ldmVudHMoeHBydCwgU1ZDX1hQUlRfRkxBR19BRERFRF9SRUNWKSkpIHsKKyAJ CV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwKKy0JCQkiJXM6ICVwIGZkICVkIHN2Y19y cXN0X3JlYXJtX2V2ZW50cyBmYWlsZWQgKHdpbGwgc2V0IGRlYWQpIiwKKy0JCQlfX2Z1bmNfXywg eHBydCwgeHBydC0+eHBfZmQpOworKwkJCSIlczogJXAgZmQgJWQgc3ZjX3Jxc3RfcmVhcm1fZXZl bnRzIGZhaWxlZCAod2lsbCBzZXQgZGVhZCkgLSBjbGllbnRpcDogJXM6JXUiLAorKwkJCV9fZnVu Y19fLCB4cHJ0LCB4cHJ0LT54cF9mZCwgeHBydC0+eHBfY2xudF9hZGRyLCB4cHJ0LT54cF9jbG50 X3BvcnQpOworIAkJeGRyX2lvcV9kZXN0cm95KHhpb3EsIHhpb3EtPmlvcV9zLnFzaXplKTsKKyAJ CVNWQ19ERVNUUk9ZKHhwcnQpOworIAorZGlmZiAtdXIgbnRpcnBjLTcuMi9zcmMvc3ZjX3hwcnQu YyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMvc3Zj X3hwcnQuYworLS0tIG50aXJwYy03LjIvc3JjL3N2Y194cHJ0LmMJMjAyNS0wOS0yMyAxMDowNTox OS4wMDAwMDAwMDAgLTA0MDAKKysrKyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3 ZWUxMjk3ODI1NmJkMS9zcmMvc3ZjX3hwcnQuYwkyMDI2LTA1LTE4IDE5OjQwOjIwLjAwMDAwMDAw MCAtMDQwMAorQEAgLTQxNCwxMSArNDE0LDE3IEBACisgCQkJCQlnb3RvIHJlc3RhcnQ7CisgCQkJ CX0KKyAJCQl9CistCQkJLyogSWYgZXhpdHMgZWFybGllciwgY2xlYXIgdGhlIGZsYWcgZXhwbGlj aXRseSAqLworKwkJCS8qCisrCQkJICogR2V0IHRoZSBuZXh0IG5vZGUgQkVGT1JFIHJlbGVhc2lu ZyB0aGUgcmVmZXJlbmNlLgorKwkJCSAqIFNWQ19SRUxFQVNFIG1heSB0cmlnZ2VyIGRlc3RydWN0 aW9uIGlmIHJlZmNudCBkcm9wcworKwkJCSAqIHRvIDAsIHdoaWNoIGZyZWVzIHRoZSBtZW1vcnku IFRoZSBtZW1vcnkgY2FuIGJlCisrCQkJICogaW1tZWRpYXRlbHkgcmV1c2VkIGJ5IGFub3RoZXIg eHBydCAodXNlLWFmdGVyLWZyZWUpLgorKwkJCSAqLworKwkJCW4gPSBvcHJfcmJ0cmVlX25leHQo bik7CisrCQkJLyogTm93IHNhZmUgdG8gcmVsZWFzZSAtIHdlIGhhdmUgdGhlIG5leHQgbm9kZSAq LworIAkJCWF0b21pY19jbGVhcl91aW50MTZfdF9iaXRzKAorIAkJCQkmcmVjLT54cHJ0LnhwX2Zs YWdzLCBTVkNfWFBSVF9UUkVFX0xPQ0tFRCk7CisgCQkJU1ZDX1JFTEVBU0UoJnJlYy0+eHBydCwg U1ZDX1JFTEVBU0VfRkxBR19OT05FKTsKKy0JCQluID0gb3ByX3JidHJlZV9uZXh0KG4pOworIAkJ fQkJLyogY3VyciBwYXJ0aXRpb24gKi8KKyAJCXJ3bG9ja191bmxvY2soJnQtPmxvY2spOyAvKiB0 ICFMT0NLRUQgKi8KKyAJCXBfaXgrKzsKK2RpZmYgLXVyIG50aXJwYy03LjIvc3JjL3hkcl9pb3Eu YyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMveGRy X2lvcS5jCistLS0gbnRpcnBjLTcuMi9zcmMveGRyX2lvcS5jCTIwMjUtMDktMjMgMTA6MDU6MTku MDAwMDAwMDAwIC0wNDAwCisrKysgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2Vl MTI5NzgyNTZiZDEvc3JjL3hkcl9pb3EuYwkyMDI2LTA1LTE4IDE5OjQwOjIwLjAwMDAwMDAwMCAt MDQwMAorQEAgLTI2MCw2ICsyNjAsNyBAQAorIAkJICAgICZyZG1hX3hwcnQtPmxhc3RfZXh0cmFf YnVmX2FsbG9jYXRpb25fdGltZSk7CisgCX0KKyAKKysJX193YXJueChUSVJQQ19ERUJVR19GTEFH X1hEUiwgImlvIGJ1ZiByZWYgJXAgcmVmcyAlZCIsIGlvX2J1ZiwgaW9fYnVmLT5yZWZzKTsKKyAJ cmV0dXJuIGF0b21pY19pbmNfdWludDMyX3QoJmlvX2J1Zi0+cmVmcyk7CisgfQorIAorQEAgLTI5 MSw3ICsyOTIsNyBAQAorIHsKKyAJc3RydWN0IHBvb2xxX2hlYWQgKmlvcWggPSBnZXRfZGF0YV9w b29scV9oZWFkKGlvX2J1ZiwgcmRtYV94cHJ0KTsKKyAKKy0JX193YXJueChUSVJQQ19ERUJVR19G TEFHX0VWRU5ULCAiJXM6IFN0YXJ0IHNocmlua2luZyB4cHJ0ICVwICIKKysJX193YXJueChUSVJQ Q19ERUJVR19GTEFHX1hEUiwgIiVzOiBTdGFydCBzaHJpbmtpbmcgeHBydCAlcCAiCisgCSAgICAi aW9fYnVmICVwIHJlZnMgJWQgaW9xaCAlcCBjb3VudCAlZCIsCisgCSAgICBfX2Z1bmNfXywgcmRt YV94cHJ0LCBpb19idWYsIGlvX2J1Zi0+cmVmcywgaW9xaCwKKyAJICAgIGlvcWgtPnFjb3VudCk7 CitAQCAtMzg1LDcgKzM4Niw3IEBACisgCQkJcmRtYV94cHJ0LT5pb19idWZzX2NvdW50LS07Cisg CQkJcmRtYV94cHJ0LT5pb19idWZzLnFjb3VudC0tOworIAorLQkJCV9fd2FybngoVElSUENfREVC VUdfRkxBR19FVkVOVCwgIiVzOiB4cHJ0ICVwIHNocmluayAiCisrCQkJX193YXJueChUSVJQQ19E RUJVR19GTEFHX1hEUiwgIiVzOiB4cHJ0ICVwIHNocmluayAiCisgCQkJICAgICJpb19idWYgJXAg cmVmcyAlZCBpb19idWZzIGNvdW50ICVkICVkIiwKKyAJCQkgICAgX19mdW5jX18sIHJkbWFfeHBy dCwgaW9fYnVmLCBpb19idWYtPnJlZnMsCisgCQkJICAgIHJkbWFfeHBydC0+aW9fYnVmc19jb3Vu dCwKK0BAIC00MDMsNiArNDA0LDcgQEAKKyAJc3RydWN0IHJwY19pb19idWZzICppb19idWYgPSBn ZXRfcGFyZW50X2NodW5rKGhhdmUpOworIAl1aW50MzJfdCByZWZzID0gYXRvbWljX2RlY191aW50 MzJfdCgmaW9fYnVmLT5yZWZzKTsKKyAJUkRNQVhQUlQgKnJkbWFfeHBydCA9IChSRE1BWFBSVCAq KWlvX2J1Zi0+Y3R4OworKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSLCAiaW8gYnVmIHVu cmVmICVwIHJlZnMgJWQiLCBpb19idWYsIGlvX2J1Zi0+cmVmcyk7CisgCisgCS8qIENoZWNrIGlm IGl0cyBvbiBvbiBkZW1hbmQgYWxsb2NhdGVkIGRhdGEgYnVmICovCisgCWlmIChpc19zaHJpbmtf YnVmKGlvX2J1ZiwgcmRtYV94cHJ0KSkgeworQEAgLTY0OCw3ICs2NTAsNyBAQAorIAkJCSAgICBp b19idWYtPmJ1ZmZlcl9hbGlnbmVkLCBpb19idWYtPmJ1ZmZlcl90b3RhbCkpOworIAkJCWlvX2J1 Zi0+bXIgPSBOVUxMOworIAorLQkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwgIiVz KCkgRnJlZSB4cHJ0ICVwIG1yICIKKysJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSLCAi JXMoKSBGcmVlIHhwcnQgJXAgbXIgIgorIAkJCSAgICAiaW9fYnVmcyAlcCBzaXplICV1IGlvX2J1 ZiAlcCIsIF9fZnVuY19fLCByZG1hX3hwcnQsCisgCQkJICAgIGlvX2J1Zi0+YnVmZmVyX2FsaWdu ZWQsIGlvX2J1Zi0+YnVmZmVyX3RvdGFsLCBpb19idWYpOworIAorQEAgLTk5OCwxMiArMTAwMCwx MiBAQAorIAl9CisgCisgCS8qCistCSAqIFNtYWxsIFJETUEgV3JpdGVzCistCSAqIElmIGRhdGEg aXMgaW5saW5lLCBpdCBzaG91bGQgYmUgcGFydCBvZiBuZnNfYnVmZmVyIGl0c2VsZi4KKy0JICog U28sIHRvIGF2b2lkIHRoZSBJTExFR0FMX09QLCBzdGFydCBzaG91bGQgYWR2YW5jZSBieSBkYXRh bGVuCistCSAqIHRvIHBpY2sgdGhlIGNvcnJlY3QgT1Agd2hpbGUgZGVjb2RpbmcgdGhlIENPTVBP VU5EIG9wcy4KKysJICogU21hbGwgUkRNQSBXcml0ZXMgKElubGluZSBSRE1BKQorKwkgKiBUaGUg d3JpdGUgZGF0YSBmaXRzIGVudGlyZWx5IHdpdGhpbiB0aGUgY3VycmVudCAoTkZTIGhlYWRlcikg VVYKKysJICogYXQgdGhlIGN1cnJlbnQgWERSIHBvc2l0aW9uLiAgUmV0dXJuICdzdGFydCcgdW5j aGFuZ2VkIHNvIHRoYXQKKysJICogWERSX0ZJTExCVUZTIHJlYWRzIHRoZSBhY3R1YWwgZGF0YSBi eXRlcy4KKyAJICovCistCXJldHVybiBzdGFydCArIGRhdGFsZW47CisrCXJldHVybiBzdGFydDsK KyAKKyB9CisgCitAQCAtMTAyNyw5ICsxMDI5LDE1IEBACisgCSAqIG5leHQgbmZzIGhlYWRlciBp biBjb21wb3VuZCBvcC4gKi8KKyAJaWYgKGRhdGFsZW4gPiAoKHVpbnRwdHJfdCl4ZHJzLT54X3Yu dmlvX3RhaWwgLSAodWludHB0cl90KXhkcnMtPnhfZGF0YSkpIHsKKyAJCW9mZnNldCA9ICh1aW50 cHRyX3QpeGRycy0+eF92LnZpb190YWlsIC0gKHVpbnRwdHJfdCl4ZHJzLT54X2RhdGE7CisrCQly ZXR1cm4gc3RhcnQgLSBvZmZzZXQ7CisgCX0KKyAKKy0JcmV0dXJuIHN0YXJ0IC0gb2Zmc2V0Owor KwkvKiBJbmxpbmUgUkRNQTogJ3N0YXJ0JyBpcyB0aGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0IGRh dGEgYnl0ZQorKwkgKiAoZ2V0c3RhcnRkYXRhcG9zIHJldHVybmVkIGl0IHVuY2hhbmdlZCkuICAn ZGF0YWxlbicgaGVyZSBpcworKwkgKiBSTkRVUChkYXRhX2xlbiksIGkuZS4gdGhlIGRhdGEgYnl0 ZXMgcGx1cyBhbnkgWERSIGFsaWdubWVudAorKwkgKiBwYWRkaW5nLiAgQWR2YW5jZSBwYXN0IGJv dGggc28gdGhlIGRlY29kZXIgaXMgcG9zaXRpb25lZCBhdAorKwkgKiB0aGUgc3RhcnQgb2YgdGhl IG5leHQgY29tcG91bmQgb3AuICovCisrCXJldHVybiBzdGFydCArIGRhdGFsZW47CisgfQorIAor IHN0YXRpYyBib29sCitAQCAtMTg1NSw3ICsxODYzLDcgQEAKKyAKKyAJd2hpbGUgKGlkeCA8IGlv dl9jb3VudCkgeworIAkJLyogQW5vdGhlciBUUkFJTEVSIGJ1ZmZlciB0byBtYW5hZ2UgKi8KKy0J CXZpb190eXBlIHZ0ID0gdmVjdG9yW2lkeF0udmlvX3R5cGU7CisrCQl2aW9fdHlwZV90IHZ0ID0g dmVjdG9yW2lkeF0udmlvX3R5cGU7CisgCisgCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERS LAorIAkJCSJDYWxsaW5nIHhkcl9pb3FfdXNlX29yX2FsbG9jYXRlIGZvciBpZHggJWQgZm9yICVz IiwKK2RpZmYgLXVyIG50aXJwYy03LjIvc3JjL3hkcl9yZG1hLmMgbnRpcnBjLTVjNzYxYmIxODZl OWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL3hkcl9yZG1hLmMKKy0tLSBudGlycGMt Ny4yL3NyYy94ZHJfcmRtYS5jCTIwMjUtMDktMjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCisr KysgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL3hk cl9yZG1hLmMJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAgLTA0MDAKK0BAIC0yMTEsMTcg KzIxMSwxOCBAQAorIAlpbnQgcmV0ID0gMDsKKyAJaW50MzJfdCB3cml0ZV93YWl0cyA9IGF0b21p Y19kZWNfaW50MzJfdCgmY2JjLT53cml0ZV93YWl0cyk7CisgCistCV9fd2FybngoVElSUENfREVC VUdfRkxBR19YRFIsCistCSAgICAiJXMoKSAlcFsldV0gY2JjICVwIGNiY19yZWYgJWQgd3JpdGVf d2FpdHMgJWRcbiIsCistCSAgICBfX2Z1bmNfXywgcmRtYV94cHJ0LCByZG1hX3hwcnQtPnN0YXRl LCBjYmMsCistCSAgICBjYmMtPnJlZmNudCwgd3JpdGVfd2FpdHMpOworIAorIAlpZiAocmRtYV94 cHJ0LT5zbV9kci54cHJ0LnhwX2ZsYWdzICYgU1ZDX1hQUlRfRkxBR19ERVNUUk9ZRUQpIHsKKy0J CV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwgIiAlcyByZG1hX3hwcnQgJXAgY2JjICVw ICIKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFJfUkRNQSwgIiAlcyByZG1hX3hwcnQg JXAgY2JjICVwICIKKyAJCSAgICAiY2JjX3JlZiAlZCB3cml0ZV93YWl0cyAlZCBhbHJlYWR5IGRl c3Ryb3llZCIsCisgCQkgICAgX19mdW5jX18sIHJkbWFfeHBydCwgY2JjLCBjYmMtPnJlZmNudCwg d3JpdGVfd2FpdHMpOworIAorIAkJcmV0ID0gIC0xOworKwl9IGVsc2UgeworKwkJX193YXJueChU SVJQQ19ERUJVR19GTEFHX1hEUiwKKysJCQkiJXMoKSAlcFsldV0gY2JjICVwIGNiY19yZWYgJWQg d3JpdGVfd2FpdHMgJWRcbiIsCisrCQkJX19mdW5jX18sIHJkbWFfeHBydCwgcmRtYV94cHJ0LT5z dGF0ZSwgY2JjLAorKwkJCWNiYy0+cmVmY250LCB3cml0ZV93YWl0cyk7CisgCX0KKyAKKyAJY2Jj X3JlbGVhc2VfaXQoY2JjKTsKK0BAIC0yMzUsMTcgKzIzNiwxOCBAQAorIAlpbnQgcmV0ID0gMDsK KyAJaW50IHdyaXRlX3dhaXRzID0gYXRvbWljX2RlY19pbnQzMl90KCZjYmMtPndyaXRlX3dhaXRz KTsKKyAKKy0JX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLAorLQkgICAgIiVzKCkgJXBb JXVdIGNiYyAlcCByZWZzICVkIHdyaXRlX3dhaXRzICVkXG4iLAorLQkgICAgX19mdW5jX18sIHJk bWFfeHBydCwgcmRtYV94cHJ0LT5zdGF0ZSwgY2JjLAorLQkgICAgY2JjLT5yZWZjbnQsIHdyaXRl X3dhaXRzKTsKKyAKKyAJaWYgKHJkbWFfeHBydC0+c21fZHIueHBydC54cF9mbGFncyAmIFNWQ19Y UFJUX0ZMQUdfREVTVFJPWUVEKSB7CistCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1Is ICIgJXMgcmRtYV94cHJ0ICVwIGNiYyAlcCAiCisrCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdf WERSX1JETUEsICIgJXMgcmRtYV94cHJ0ICVwIGNiYyAlcCAiCisgCQkgICAgImNiY19yZWYgJWQg d3JpdGVfd2FpdHMgJWQgYWxyZWFkeSBkZXN0cm95ZWQiLAorIAkJICAgIF9fZnVuY19fLCByZG1h X3hwcnQsIGNiYywgY2JjLT5yZWZjbnQsIHdyaXRlX3dhaXRzKTsKKyAKKyAJCXJldCA9IC0xOwor Kwl9IGVsc2UgeworKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLAorKwkJCSIlcygp ICVwWyV1XSBjYmMgJXAgcmVmcyAlZCB3cml0ZV93YWl0cyAlZFxuIiwKKysJCQlfX2Z1bmNfXywg cmRtYV94cHJ0LCByZG1hX3hwcnQtPnN0YXRlLCBjYmMsCisrCQkJY2JjLT5yZWZjbnQsIHdyaXRl X3dhaXRzKTsKKyAJfQorIAorIAljYmNfcmVsZWFzZV9pdChjYmMpOworQEAgLTI2MCwxNSArMjYy LDE1IEBACisgeworIAlpbnQgcmV0ID0gMDsKKyAKKy0JX193YXJueChUSVJQQ19ERUJVR19GTEFH X1hEUiwKKy0JCSIlcygpICVwWyV1XSBjYmMgJXBcbiIsCistCQlfX2Z1bmNfXywgcmRtYV94cHJ0 LCByZG1hX3hwcnQtPnN0YXRlLCBjYmMpOworLQorIAlpZiAocmRtYV94cHJ0LT5zbV9kci54cHJ0 LnhwX2ZsYWdzICYgU1ZDX1hQUlRfRkxBR19ERVNUUk9ZRUQpIHsKKy0JCV9fd2FybngoVElSUENf REVCVUdfRkxBR19FUlJPUiwgIiAlcyByZG1hX3hwcnQgJXAgY2JjICVwICIKKysJCV9fd2Fybngo VElSUENfREVCVUdfRkxBR19YRFJfUkRNQSwgIiAlcyByZG1hX3hwcnQgJXAgY2JjICVwICIKKyAJ CQkiYWxyZWFkeSBkZXN0cm95ZWQiLCBfX2Z1bmNfXywgcmRtYV94cHJ0LCBjYmMpOworIAorIAkJ cmV0ID0gLTE7CisrCX0gZWxzZSB7CisrCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSLAor KwkJCSIlcygpICVwWyV1XSBjYmMgJXBcbiIsCisrCQkJX19mdW5jX18sIHJkbWFfeHBydCwgcmRt YV94cHJ0LT5zdGF0ZSwgY2JjKTsKKyAJfQorIAorIAl4ZHJfcmRtYV9jYWxsYmFja19zaWduYWwo Y2JjLCByZG1hX3hwcnQpOworQEAgLTI4MywxNSArMjg1LDE2IEBACisgeworIAlpbnQgcmV0ID0g MDsKKyAKKy0JX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLAorLQkJIiVzKCkgJXBbJXVd IGNiYyAlcFxuIiwKKy0JCV9fZnVuY19fLCByZG1hX3hwcnQsIHJkbWFfeHBydC0+c3RhdGUsIGNi Yyk7CistCisgCWlmIChyZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfZmxhZ3MgJiBTVkNfWFBSVF9G TEFHX0RFU1RST1lFRCkgeworLQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLCAiICVz IHJkbWFfeHBydCAlcCBjYmMgJXAgIgorKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1hEUl9S RE1BLCAiICVzIHJkbWFfeHBydCAlcCBjYmMgJXAgIgorIAkJCSJhbHJlYWR5IGRlc3Ryb3llZCIs IF9fZnVuY19fLCByZG1hX3hwcnQsIGNiYyk7CisgCisgCQlyZXQgPSAtMTsKKysJfSBlbHNlIHsK KysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwKKysJCQkiJXMoKSAlcFsldV0gY2Jj ICVwXG4iLAorKwkJCV9fZnVuY19fLCByZG1hX3hwcnQsIHJkbWFfeHBydC0+c3RhdGUsIGNiYyk7 CisrCisgCX0KKyAKKyAJeGRyX3JkbWFfY2FsbGJhY2tfc2lnbmFsKGNiYywgcmRtYV94cHJ0KTsK K0BAIC0zMDgsMTUgKzMxMSwxNiBAQAorIHsKKyAJaW50IHJldCA9IDA7CisgCistCV9fd2Fybngo VElSUENfREVCVUdfRkxBR19FUlJPUiwKKy0JCSJFcnJvciBpbiByZWN2IGNhbGxiYWNrICVzKCkg JXBbJXVdIGNiYyAlcFxuIiwKKy0JCV9fZnVuY19fLCByZG1hX3hwcnQsIHJkbWFfeHBydC0+c3Rh dGUsIGNiYyk7CistCisgCWlmIChyZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfZmxhZ3MgJiBTVkNf WFBSVF9GTEFHX0RFU1RST1lFRCkgeworLQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9S LCAiICVzIHJkbWFfeHBydCAlcCBjYmMgJXAgIgorKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFH X1hEUl9SRE1BLCAiICVzIHJkbWFfeHBydCAlcCBjYmMgJXAgIgorIAkJCSJhbHJlYWR5IGRlc3Ry b3llZCIsIF9fZnVuY19fLCByZG1hX3hwcnQsIGNiYyk7CisgCisgCQlyZXQgPSAtMTsKKysJfSBl bHNlIHsKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwKKysJCQkiRXJyb3IgaW4g cmVjdiBjYWxsYmFjayAlcygpICVwWyV1XSBjYmMgJXBcbiIsCisrCQkJX19mdW5jX18sIHJkbWFf eHBydCwgcmRtYV94cHJ0LT5zdGF0ZSwgY2JjKTsKKysKKyAJfQorIAorIAljYmMtPmNiY19mbGFn cyA9IENCQ19GTEFHX1JFTEVBU0U7CitAQCAtMzU1LDYgKzM1OSwzMyBAQAorIAorIAlhdG9taWNf ZGVjX3VpbnQzMl90KCZyZG1hX3hwcnQtPmFjdGl2ZV9yZXF1ZXN0cyk7CisgCisrCWlmICgoZW51 bSB4cHJ0X3N0YXQpcmV0ID09IFhQUlRfU1VTUEVORCkgeworKwkJLyoKKysJCSAqIFRoZSByZXF1 ZXN0IHdhcyBzdXNwZW5kZWQgbWlkLWNvbXBvdW5kCisrCQkgKiBlLmcuIFFPUyBCVyB0aHJvdHRs ZSwgYXN5bmMgSU8gYmFja2VuZC4KKysJCSAqIE5vIFJETUEgV1JJVEUvU0VORCBvcGVyYXRpb25z IGhhdmUgYmVlbiBwb3N0ZWQKKysJCSAqIHlldCwgc28gY2JjLT5yZWZjbnQgaXMgc3RpbGwgMSAo c2VudGluZWwgb25seSkuICBSZWxlYXNpbmcKKysJCSAqIHRoZSBzZW50aW5lbCBoZXJlIHdvdWxk IGRyb3AgcmVmY250IHRvIDAsIHdoaWNoIHRyaWdnZXJzCisrCQkgKiB4ZHJfcmRtYV9pb3FfcmVs ZWFzZSgmY2JjLT5kYXRhcSksIHplcm9pbmcgZGF0YXEucWNvdW50IGFuZAorKwkJICogcmV0dXJu aW5nIGRhdGFfY2h1bmtfdXYgdG8gdGhlIHBvb2wgd2hpbGUgdGhlIHN1c3BlbmRlZAorKwkJICog cmVxdWVzdCBzdGlsbCBob2xkcyBhIHBvaW50ZXIgdG8gaXQuICBUaGUgc3Vic2VxdWVudAorKwkJ ICogeGRyX3JkbWFfc3ZjX2ZsdXNob3V0IGNhbGwgd291bGQgdGhlbiBoaXQ6CisrCQkgKiAgIGFz c2VydChkYXRhcS5xY291bnQgPiAwKSAgZmlyZXMgd2l0aCBxY291bnQgPT0gMAorKwkJICoKKysJ CSAqIEZpeDogbWFyayBGTEFHX1JFTEVBU0UgKHNvIGNsZWFudXAgZmlyZXMgd2hlbiByZWZzIGV2 ZW50dWFsbHkKKysJCSAqIHJlYWNoIDApIGJ1dCBkZWZlciB0aGUgc2VudGluZWwgY2JjX3JlbGVh c2VfaXQgdG8KKysJCSAqIHhkcl9yZG1hX3N2Y19mbHVzaG91dCwgd2hpY2ggaXMgY2FsbGVkIGFm dGVyIFJETUEgb3BlcmF0aW9ucworKwkJICogYXJlIHBvc3RlZCBvbiB0aGUgcmVzdW1lIHBhdGgg YW5kIHRoZWlyIHJlZnMga2VlcCB0aGUgY2JjCisrCQkgKiBhbGl2ZS4KKysJCSAqLworKwkJX193 YXJueChUSVJQQ19ERUJVR19GTEFHX1hEUiwKKysJCQkiJXMgcmRtYV94cHJ0ICVwIGNiYyAlcCBz dXNwZW5kZWQsIGRlZmVycmluZyAiCisrCQkJInNlbnRpbmVsIHJlbGVhc2UgdG8gZmx1c2hvdXQi LAorKwkJCV9fZnVuY19fLCByZG1hX3hwcnQsIGNiYyk7CisrCQljYmMtPmNiY19mbGFncyA9IENC Q19GTEFHX1JFTEVBU0UgfCBDQkNfRkxBR19TRU5USU5FTF9QRU5ESU5HOworKwkJcmV0dXJuIHJl dDsKKysJfQorKworIGVycjoKKyAJY2JjLT5jYmNfZmxhZ3MgPSBDQkNfRkxBR19SRUxFQVNFOwor IAorQEAgLTQ2MSw2ICs0OTIsMzUgQEAKKyAJcmV0dXJuIDA7CisgfQorIAorKy8qIFBvc3Qgc3lu Y2hyb25vdXMgUkRNQSByZWNlaXZlIG9wZXJhdGlvbiAqLworK3N0YXRpYyBpbnQKKyt4ZHJfcmRt YV9wb3N0X3JlY3Zfc3luYyhSRE1BWFBSVCAqcmRtYV94cHJ0LCBzdHJ1Y3QgcnBjX3JkbWFfY2Jj ICpjYmMsIGludCBzZ2UpCisreworKwljYmMtPnBvc2l0aXZlX2NiID0geGRyX3JkbWFfd3JhcF9j YWxsYmFjazsKKysJY2JjLT5uZWdhdGl2ZV9jYiA9IHhkcl9yZG1hX2Rlc3Ryb3lfY2FsbGJhY2tf cmVjdjsKKysJY2JjLT5jYWxsYmFja19hcmcgPSBOVUxMOworKwljYmMtPmNhbGxfaW5saW5lID0g MTsKKysKKysJU1ZDX1JFRigmcmRtYV94cHJ0LT5zbV9kci54cHJ0LCBTVkNfUkVGX0ZMQUdfTk9O RSk7CisrCisrCWludCByZXQgPSB4ZHJfcmRtYV9wb3N0X3JlY3ZfbihyZG1hX3hwcnQsIGNiYywg c2dlKTsKKysKKysJaWYgKHJldCkgeworKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9S LCAiJXMgcG9zdF9yZWN2IGZhaWxlZCByZG1hX3hwcnQgJXAgIgorKwkJCSJjYmMgJXAgZXJyb3Ig JWQiLCBfX2Z1bmNfXywgcmRtYV94cHJ0LCBjYmMsIHJldCk7CisrCisrCQljYmMtPmNiY19mbGFn cyA9IENCQ19GTEFHX1JFTEVBU0U7CisrCisrCQkvKiBSZWxlYXNlIHNlbnRpbmVsIHJlZiAqLwor KwkJY2JjX3JlbGVhc2VfaXQoY2JjKTsKKysKKysJCVNWQ19ERVNUUk9ZKCZyZG1hX3hwcnQtPnNt X2RyLnhwcnQpOworKwl9CisrCXJwY19yZG1hX2NxX2V2ZW50X2hhbmRsZXIocmRtYV94cHJ0LCAx KTsKKysKKysJcmV0dXJuIHJldDsKKyt9CisrCisgLyoqCisgICogeGRyX3JkbWFfcG9zdF9yZWN2 X2NiOiBQb3N0IHJlY2VpdmUgY2h1bmsocykgd2l0aCBzdGFuZGFyZCBjYWxsYmFja3MuCisgICoK K0BAIC02NTUsNiArNzE1LDM5IEBACisgCisgfQorIAorKy8qIFBvc3Qgc3luY2hyb25vdXMgUkRN QSBzZW5kIG9wZXJhdGlvbiB3aXRoIGNhbGxiYWNrICovCisrc3RhdGljIGlubGluZSBpbnQKKyt4 ZHJfcmRtYV9zeW5jX3NlbmRfY2IoUkRNQVhQUlQgKnJkbWFfeHBydCwgc3RydWN0IHJwY19yZG1h X2NiYyAqY2JjLCBpbnQgc2dlKQorK3sKKysJaW50IHJldDsKKysKKysJY2JjLT5wb3NpdGl2ZV9j YiA9IHhkcl9yZG1hX3Jlc3BvbmRfY2FsbGJhY2tfc2VuZDsKKysJY2JjLT5uZWdhdGl2ZV9jYiA9 IHhkcl9yZG1hX2Rlc3Ryb3lfY2FsbGJhY2tfc2VuZDsKKysJY2JjLT5jYWxsYmFja19hcmcgPSBO VUxMOworKwljYmMtPmNhbGxfaW5saW5lID0gMTsKKysJaW50MzJfdCB3cml0ZV93YWl0cyA9IGF0 b21pY19pbmNfaW50MzJfdCgmY2JjLT53cml0ZV93YWl0cyk7CisrCisrCWNiY19yZWZfaXQoY2Jj LCByZG1hX3hwcnQpOworKworKwlyZXQgPSB4ZHJfcmRtYV9wb3N0X3NlbmRfbihyZG1hX3hwcnQs IGNiYywgc2dlLCBOVUxMLCBJQlZfV1JfU0VORCk7CisrCisrCWlmIChyZXQpIHsKKysJCXdyaXRl X3dhaXRzID0gYXRvbWljX2RlY19pbnQzMl90KCZjYmMtPndyaXRlX3dhaXRzKTsKKysKKysJCWNi Y19yZWxlYXNlX2l0KGNiYyk7CisrCisrCQlTVkNfREVTVFJPWSgmcmRtYV94cHJ0LT5zbV9kci54 cHJ0KTsKKysKKysJCS8qIEFzc3VtaW5nIHRoZXJlIHdvbid0IGJlIGNhbGxiYWNrICovCisrCQlf X3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsICIlczogZmFpbGVkIHJldCAlZCBlcnIgJWQi CisrCQkgICAgIiByZG1hX3hwcnQgJXAgY2JjICVwIGNiY19yZWYgJWQgd3JpdGVfd2FpdHMgJWQi LAorKwkJICAgIF9fZnVuY19fLCByZXQsIGVycm5vLCByZG1hX3hwcnQsIGNiYywgY2JjLT5yZWZj bnQsCisrCQkgICAgd3JpdGVfd2FpdHMpOworKwl9CisrCXJwY19yZG1hX2NxX2V2ZW50X2hhbmRs ZXIocmRtYV94cHJ0LCAyKTsKKysKKysJcmV0dXJuIHJldDsKKyt9CisgLyoqCisgICogUG9zdCBh IHdvcmsgY2h1bmsgd2l0aCBzdGFuZGFyZCBjYWxsYmFja3MuCisgICoKK0BAIC04ODcsOCArOTgw LDEwIEBACisgCisgLyogcG9zdCByZWN2IGJ1ZmZlcnMgKi8KKyB2b2lkCisteGRyX3JkbWFfY2Fs bHEoUkRNQVhQUlQgKnJkbWFfeHBydCkKKyt4ZHJfcmRtYV9jYWxscShSRE1BWFBSVCAqcmRtYV94 cHJ0LCBpbnQgc3luYykKKyB7CisrCWludCByYyA9IDA7CisrCisgCS8qIEdldCBjb250ZXh0IGJ1 ZiBmcm9tIGNicWggYW5kIGFkZCB0byBzbV9kcgorIAkgKiBycGNfcmRtYV9hbGxvY2F0ZS0+eGRy X2lvcV9zZXR1cCgmcmRtYV94cHJ0LT5zbV9kci5pb3EpOworIAkgKiBDaGVjayBpZiB3ZSBoYXZl IGNyZWRpdHMgYXZhaWxhYmxlZCBmcm9tIGNicWgKK0BAIC05MjcsNyArMTAyMiw3IEBACisgCisg CXB0aHJlYWRfbXV0ZXhfbG9jaygmcmRtYV94cHJ0LT5jYmNsaXN0LnFtdXRleCk7CisgCistCWNi Yy0+Y2FsbF9pbmxpbmUgPSAwOworKwljYmMtPmNhbGxfaW5saW5lID0gc3luYzsKKyAJY2JjLT5k YXRhX2NodW5rX3V2ID0gTlVMTDsKKyAJY2JjLT5yZWZjbnQgPSAxOyAvLyBTZW50aW5lbCByZWYK KyAJY2JjLT5jYmNfZmxhZ3MgPSBDQkNfRkxBR19OT05FOworQEAgLTk0MSw4ICsxMDM2LDEzIEBA CisgCXJkbWFfeHBydC0+Y2JjbGlzdC5xY291bnQrKzsKKyAJcHRocmVhZF9tdXRleF91bmxvY2so JnJkbWFfeHBydC0+Y2JjbGlzdC5xbXV0ZXgpOworIAorKwlpZiAoc3luYykKKysJCXJjID0geGRy X3JkbWFfcG9zdF9yZWN2X3N5bmMocmRtYV94cHJ0LCBjYmMsIDEpOworKwllbHNlCisrCQlyYyA9 IHhkcl9yZG1hX3Bvc3RfcmVjdl9jYihyZG1hX3hwcnQsIGNiYywgMSk7CisrCisgCS8qIHJkbWFf eHBydCByZWYgaXMgdGFrZW4gYnkgeGRyX3JkbWFfcG9zdF9yZWN2X2NiICovCistCWlmICh4ZHJf cmRtYV9wb3N0X3JlY3ZfY2IocmRtYV94cHJ0LCBjYmMsIDEpKSB7CisrCWlmIChyYykgeworIAkJ IF9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwgIiVzOiByZWN2IGZhaWxlZCAlcCIsCisg CQkJX19mdW5jX18sIHJkbWFfeHBydCk7CisgCX0KK0BAIC05NzMsNyArMTA3Myw3IEBACisgCisg CQlkYXRhLT5yZG1hX3V2ID0gMTsKKyAKKy0JCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENf UkRNQSwKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFJfUkRNQSwKKyAJCQkiJXMoKSBy ZWN2YnVmIGF0ICVwIGJhc2UgJXAiLAorIAkJCV9fZnVuY19fLCBkYXRhLCBiX2FkZHIpOworIAor QEAgLTEwNDcsNyArMTE0Nyw3IEBACisgCXJkbWFfeHBydC0+aW9fYnVmc19jb3VudCsrOworIAly ZG1hX3hwcnQtPmlvX2J1ZnMucWNvdW50Kys7CisgCistCV9fd2FybngoVElSUENfREVCVUdfRkxB R19FVkVOVCwKKysJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1hEUl9SRE1BLAorIAkJIiVzKCkg aW8gYnVmcyBjb3VudCAldSBpb19idWYgJXAgcmRtYV94cHJ0ICVwIiwKKyAJCV9fZnVuY19fLCBy ZG1hX3hwcnQtPmlvX2J1ZnNfY291bnQsIGlvX2J1ZiwgcmRtYV94cHJ0KTsKKyAKK0BAIC0xMDcx LDcgKzExNzEsNyBAQAorIAlpZiAobXIpIHsKKyAJCWF0b21pY19hZGRfdWludDY0X3QoJnRvdGFs X3JkbWFfcmVnX21lbSwgYnVmZmVyX3RvdGFsKTsKKyAKKy0JCV9fd2FybngoVElSUENfREVCVUdf RkxBR19FVkVOVCwgIiVzOiB0b3RhbF9yZG1hX3JlZ19tZW0gJWxsdSByZWdpc3RlcmVkLCAiCisr CQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSX1JETUEsICIlczogdG90YWxfcmRtYV9yZWdf bWVtICVsbHUgcmVnaXN0ZXJlZCwgIgorIAkJICAgICJyZWdpc3RlcmluZyBmb3IgeHBydCAlcCBt ciAlcCBidWZmZXJfYWxpZ25lZCAlcCBidWZmZXJfdG90YWwgJXUiLAorIAkJICAgIF9fZnVuY19f LCBhdG9taWNfZmV0Y2hfdWludDY0X3QoJnRvdGFsX3JkbWFfcmVnX21lbSksCisgCQkgICAgcmRt YV94cHJ0LCBtciwgYnVmZmVyX2FsaWduZWQsIGJ1ZmZlcl90b3RhbCk7CitAQCAtMTEwNCw3ICsx MjA0LDcgQEAKKyAJfSBlbHNlIHsKKyAJCWF0b21pY19zdWJfdWludDY0X3QoJnRvdGFsX3JkbWFf cmVnX21lbSwgYnVmZmVyX3RvdGFsKTsKKyAKKy0JCV9fd2FybngoVElSUENfREVCVUdfRkxBR19F VkVOVCwgIiVzOiB0b3RhbF9yZG1hX3JlZ19tZW0gJWxsdSByZWdpc3RlcmVkLCAiCisrCQlfX3dh cm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSX1JETUEsICIlczogdG90YWxfcmRtYV9yZWdfbWVtICVs bHUgcmVnaXN0ZXJlZCwgIgorIAkJICAgICJ1bnJlZ2lzdGVyaW5nIGZvciB4cHJ0ICVwIG1yICVw IGJ1ZmZlcl9hbGlnbmVkICVwIGJ1ZmZlcl90b3RhbCAldSIsCisgCQkgICAgX19mdW5jX18sIGF0 b21pY19mZXRjaF91aW50NjRfdCgmdG90YWxfcmRtYV9yZWdfbWVtKSwKKyAJCSAgICByZG1hX3hw cnQsIG1yLCBidWZmZXJfYWxpZ25lZCwgYnVmZmVyX3RvdGFsKTsKK0BAIC0xMTIxLDcgKzEyMjEs NyBAQAorIAl1aW50MzJfdCBidWZmZXJfdG90YWwgPSByZG1hX3hwcnQtPnNtX2RyLnNlbmRfaGRy X3N6ICogaGRyX3FkZXB0aDsKKyAJc3RydWN0IHJwY19pb19idWZzICppb19idWYgPSBOVUxMOwor IAorLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCisrCV9fd2FybngoVElSUENfREVC VUdfRkxBR19YRFJfUkRNQSwKKyAJCSIlcygpIGJ1ZmZlcl90b3RhbCAlbGx1LCBzZW5kc3ogJWxs dSBzcSAlbGx1IHJkbWFfeHBydCAlcCBwYWdlc3ogJWxsdSIsCisgCQlfX2Z1bmNfXywgYnVmZmVy X3RvdGFsLCByZG1hX3hwcnQtPnNtX2RyLnNlbmRfaGRyX3N6LCBoZHJfcWRlcHRoLAorIAkJcmRt YV94cHJ0LCByZG1hX3hwcnQtPnNtX2RyLnBhZ2Vzeik7CitAQCAtMTEzMSw3ICsxMjMxLDcgQEAK KyAJYXNzZXJ0KGJ1ZmZlcl9hbGlnbmVkKTsKKyAJbWVtc2V0KGJ1ZmZlcl9hbGlnbmVkLCAwLCBi dWZmZXJfdG90YWwpOworIAorLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCisrCV9f d2FybngoVElSUENfREVCVUdfRkxBR19YRFJfUkRNQSwKKyAJCSIlcygpIGJ1ZmZlcl9hbGlnbmVk IGF0ICVwIHByb3RlY3Rpb24gZG9tYWluICVwIHJkbWFfeHBydCAlcCIsCisgCQlfX2Z1bmNfXywg YnVmZmVyX2FsaWduZWQsIHJkbWFfeHBydC0+cGQtPnBkLCByZG1hX3hwcnQpOworIAorQEAgLTEx NTgsNyArMTI1OCw3IEBACisgCXVpbnQzMl90IGJ1ZmZlcl90b3RhbCA9IHJkbWFfeHBydC0+c21f ZHIuc2VuZHN6ICogZGF0YV9xZGVwdGg7CisgCXN0cnVjdCBycGNfaW9fYnVmcyAqaW9fYnVmID0g TlVMTDsKKyAKKy0JX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAorKwlfX3dhcm54KFRJ UlBDX0RFQlVHX0ZMQUdfWERSX1JETUEsCisgCQkiJXMoKSBidWZmZXJfdG90YWwgJWxsdSwgc2Vu ZHN6ICVsbHUgc3EgJWxsdSByZG1hX3hwcnQgJXAgcGFnZXN6ICVsbHUiLAorIAkJX19mdW5jX18s IGJ1ZmZlcl90b3RhbCwgcmRtYV94cHJ0LT5zbV9kci5zZW5kc3osIGRhdGFfcWRlcHRoLAorIAkJ cmRtYV94cHJ0LCByZG1hX3hwcnQtPnNtX2RyLnBhZ2Vzeik7CitAQCAtMTE2OCw3ICsxMjY4LDcg QEAKKyAJYXNzZXJ0KGJ1ZmZlcl9hbGlnbmVkKTsKKyAJbWVtc2V0KGJ1ZmZlcl9hbGlnbmVkLCAw LCBidWZmZXJfdG90YWwpOworIAorLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCisr CV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFJfUkRNQSwKKyAJCSIlcygpIGJ1ZmZlcl9hbGln bmVkIGF0ICVwIHByb3RlY3Rpb24gZG9tYWluICVwIHJkbWFfeHBydCAlcCIsCisgCQlfX2Z1bmNf XywgYnVmZmVyX2FsaWduZWQsIHJkbWFfeHBydC0+cGQtPnBkLCByZG1hX3hwcnQpOworIAorQEAg LTExOTUsNyArMTI5NSw3IEBACisgCXVpbnQzMl90IGJ1ZmZlcl90b3RhbCA9IHJkbWFfeHBydC0+ c21fZHIucmVjdl9oZHJfc3ogKiBoZHJfcWRlcHRoOworIAlzdHJ1Y3QgcnBjX2lvX2J1ZnMgKmlv X2J1ZiA9IE5VTEw7CisgCistCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKKysJX193 YXJueChUSVJQQ19ERUJVR19GTEFHX1hEUl9SRE1BLAorIAkJIiVzKCkgYnVmZmVyX3RvdGFsICVs bHUsIHJlY3ZzeiAlbGx1IHJxICVsbHUgcmRtYV94cHJ0ICVwIHBhZ2VzeiAlbGx1IiwKKyAJCV9f ZnVuY19fLCBidWZmZXJfdG90YWwsIHJkbWFfeHBydC0+c21fZHIucmVjdl9oZHJfc3osIGhkcl9x ZGVwdGgsCisgCQlyZG1hX3hwcnQsIHJkbWFfeHBydC0+c21fZHIucGFnZXN6KTsKK0BAIC0xMjA1 LDcgKzEzMDUsNyBAQAorIAlhc3NlcnQoYnVmZmVyX2FsaWduZWQpOworIAltZW1zZXQoYnVmZmVy X2FsaWduZWQsIDAsIGJ1ZmZlcl90b3RhbCk7CisgCistCV9fd2FybngoVElSUENfREVCVUdfRkxB R19FVkVOVCwKKysJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1hEUl9SRE1BLAorIAkJIiVzKCkg YnVmZmVyX2FsaWduZWQgYXQgJXAgcHJvdGVjdGlvbiBkb21haW4gJXAgcmRtYV94cHJ0ICVwIiwK KyAJCV9fZnVuY19fLCBidWZmZXJfYWxpZ25lZCwgcmRtYV94cHJ0LT5wZC0+cGQsIHJkbWFfeHBy dCk7CisgCitAQCAtMTIzMiw3ICsxMzMyLDcgQEAKKyAJdWludDMyX3QgYnVmZmVyX3RvdGFsID0g cmRtYV94cHJ0LT5zbV9kci5yZWN2c3ogKiBkYXRhX3FkZXB0aDsKKyAJc3RydWN0IHJwY19pb19i dWZzICppb19idWYgPSBOVUxMOworIAorLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQs CisrCV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFJfUkRNQSwKKyAJCSIlcygpIGJ1ZmZlcl90 b3RhbCAlbGx1LCByZWN2c3ogJWxsdSBycSAlbGx1IHJkbWFfeHBydCAlcCBwYWdlc3ogJWxsdSIs CisgCQlfX2Z1bmNfXywgYnVmZmVyX3RvdGFsLCByZG1hX3hwcnQtPnNtX2RyLnJlY3ZzeiwgZGF0 YV9xZGVwdGgsCisgCQlyZG1hX3hwcnQsIHJkbWFfeHBydC0+c21fZHIucGFnZXN6KTsKK0BAIC0x MjQyLDcgKzEzNDIsNyBAQAorIAlhc3NlcnQoYnVmZmVyX2FsaWduZWQpOworIAltZW1zZXQoYnVm ZmVyX2FsaWduZWQsIDAsIGJ1ZmZlcl90b3RhbCk7CisgCistCV9fd2FybngoVElSUENfREVCVUdf RkxBR19FVkVOVCwKKysJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1hEUl9SRE1BLAorIAkJIiVz KCkgYnVmZmVyX2FsaWduZWQgYXQgJXAgcHJvdGVjdGlvbiBkb21haW4gJXAgcmRtYV94cHJ0ICVw IiwKKyAJCV9fZnVuY19fLCBidWZmZXJfYWxpZ25lZCwgcmRtYV94cHJ0LT5wZC0+cGQsIHJkbWFf eHBydCk7CisgCitAQCAtMTI5Nyw3ICsxMzk3LDcgQEAKKyAKKyAJcmRtYV94cHJ0LT5idWZmZXJf dG90YWwgPSB0aXJwY19idWZmX3RvdGFsICsgdG90YWxfaGRyX3N6OworIAorLQlfX3dhcm54KFRJ UlBDX0RFQlVHX0ZMQUdfRVZFTlQsCisrCV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFJfUkRN QSwKKyAJCSIlcygpIGJ1ZmZlcl90b3RhbCAlbGx1KCVsbHUgKyAlbGx1KSwgcmRtYV94cHJ0ICVw IHBhZ2VzeiAlbGx1ICIKKyAJCSJyZWN2c3ogZGF0YSAlbGx1IGhkciAlbGx1IHJxICVsbHUgIgor IAkJInNlbmRzeiBkYXRhICVsbHUgaGRyICVsbHUgc3EgJWxsdSIsCitAQCAtMTMxMSw3ICsxNDEx LDcgQEAKKyAJYXNzZXJ0KHJkbWFfeHBydC0+YnVmZmVyX2FsaWduZWQpOworIAltZW1zZXQocmRt YV94cHJ0LT5idWZmZXJfYWxpZ25lZCwgMCwgcmRtYV94cHJ0LT5idWZmZXJfdG90YWwpOworIAor LQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCisrCV9fd2FybngoVElSUENfREVCVUdf RkxBR19YRFJfUkRNQSwKKyAJCSIlcygpIGJ1ZmZlcl9hbGlnbmVkIGF0ICVwIHByb3RlY3Rpb24g ZG9tYWluICVwIHJkbWFfeHBydCAlcCIsCisgCQlfX2Z1bmNfXywgcmRtYV94cHJ0LT5idWZmZXJf YWxpZ25lZCwgcmRtYV94cHJ0LT5wZC0+cGQsIHJkbWFfeHBydCk7CisgCitAQCAtMTM3MCwxOCAr MTQ3MCwxOCBAQAorIAkgKiB3ZSBjb3VsZCBoYXZlIG1heCBjYmNzIHJlcXVpcmVkIHdpbGwgYmUg Y2FsbHFfc2l6ZSAqIDIgKi8KKyAJaW50IGNhbGxxX3NpemUgPSBNQVhfUkVDVl9PVVRTVEFORElO RyhyZG1hX3hwcnQtPnhhKTsKKyAKKy0JX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1B LCAiY2FsbHEgc2l6ZSAlZCIsIGNhbGxxX3NpemUpOworKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZM QUdfWERSX1JETUEsICJjYWxscSBzaXplICVkIiwgY2FsbHFfc2l6ZSk7CisgCisgCXBvb2xxX2hl YWRfc2V0dXAoJnJkbWFfeHBydC0+Y2JjbGlzdCk7CisgCisgCXdoaWxlIChyZG1hX3hwcnQtPnNt X2RyLmlvcS5pb3FfdXYudXZxaC5xY291bnQgPCBjYWxscV9zaXplKSB7CisgCQkvKiBQb3N0IGNh bGxxX3NpemUgYnVmZmVycyB0byBkbyBmaXJzdCByZWN2cworIAkJICogY2FsbGJhY2sgd2lsbCBi ZSBkb25lIG9uIHJlY3Ygd2hpY2ggc2hvdWxkIHJlYXJhbSBhZ2FpbiAqLworLQkJX193YXJueChU SVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLAorKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1hE Ul9SRE1BLAorIAkJCSIlcygpIHFjb3VudCAlZCBjYWxscSBzaXplICVkIiwKKyAJCQlfX2Z1bmNf XywgcmRtYV94cHJ0LT5zbV9kci5pb3EuaW9xX3V2LnV2cWgucWNvdW50LAorIAkJCWNhbGxxX3Np emUpOworLQkJeGRyX3JkbWFfY2FsbHEocmRtYV94cHJ0KTsKKysJCXhkcl9yZG1hX2NhbGxxKHJk bWFfeHBydCwgMCk7CisgCX0KKyAKKyAJcmV0dXJuIDA7CitAQCAtMTUwNSw3ICsxNjA1LDcgQEAK KyAJYXNzZXJ0KGNiYy0+d3JpdGVfd2FpdHMgPT0gMCk7CisgCisgCS8qIE1haW50YWluIG1heF9v dXRzdGFuZGluZyAqLworLQl4ZHJfcmRtYV9jYWxscShyZG1hX3hwcnQpOworKwl4ZHJfcmRtYV9j YWxscShyZG1hX3hwcnQsIDApOworIAorIAkvKiBHZXQgaW5idWYgZnJvbSByZWN2cSAqLworIAlj YmMtPmNhbGxfdXYgPSBJT1FfKFRBSUxRX0ZJUlNUKCZjYmMtPnJlY3ZxLmlvcV91di51dnFoLnFo KSk7CitAQCAtMTg3MywxNSArMTk3MywxNiBAQAorIAkJYWxsb2NhdGVfaGVhZGVyID0gMTsKKyAK KyAJCWlmIChhbGxvY2F0ZV9oZWFkZXIpIHsKKy0JCQloYXZlID0geGRyX3JkbWFfaW9xX3V2X2Zl dGNoKCZjYmMtPnNlbmRxLCAmcmRtYV94cHJ0LT5vdXRidWZzX2hkci51dnFoLAorLQkJCQkJInNy ZXBseSBidWZmZXIiLCAxLCBJT1FfRkxBR19OT05FKTsKKy0KKysJCQkvKiBXaXRoIEFDTCBzdXBw b3J0IHdlIGNvdWxkIG5lZWQgYnVmZmVycyA+OGsgKi8KKysJCQloYXZlID0geGRyX3JkbWFfaW9x X3V2X2ZldGNoKCZjYmMtPnNlbmRxLCAmcmRtYV94cHJ0LT5vdXRidWZzX2RhdGEudXZxaCwKKysJ CQkJInNyZXBseSBidWZmZXIiLCAxLCBJT1FfRkxBR19OT05FKTsKKyAKKyAJCQkvKiBidWZmZXIg aXMgbGltaXRlZCBzaXplICovCisgCQkJSU9RXyhoYXZlKS0+di52aW9faGVhZCA9CisgCQkJSU9R XyhoYXZlKS0+di52aW9fdGFpbCA9IElPUV8oaGF2ZSktPnYudmlvX2Jhc2U7CisgCQkJSU9RXyho YXZlKS0+di52aW9fd3JhcCA9IChjaGFyICopSU9RXyhoYXZlKS0+di52aW9fYmFzZQorLQkJCQkJ KyByZG1hX3hwcnQtPnNtX2RyLnNlbmRfaGRyX3N6OworKwkJCQkrIHJkbWFfeHBydC0+c21fZHIu c2VuZHN6OworKworIAkJCS8qIG1ha2Ugcm9vbSBhdCBoZWFkIGZvciBSRE1BIGhlYWRlciAqLwor IAkJCXhkcl9pb3FfcmVzZXQoJmNiYy0+c2VuZHEsIDApOworIAkJfQorQEAgLTE5MDMsMTYgKzIw MDQsMzUgQEAKKyAJCQkJSU9RXyhoYXZlKS0+di52aW9fd3JhcCA9IChjaGFyICopSU9RXyhoYXZl KS0+di52aW9fYmFzZQorIAkJCQkJKyByZG1hX3hwcnQtPnNtX2RyLnNlbmRfaGRyX3N6OworIAkJ CX0gZWxzZSB7CistCQkJCS8qIEZvciByZXBseV9saXN0IHdlIGNvcHkgZnJvbSBwcm90b2NvbCBi dWZmZXIgc28gYWxsb2NhdGUgYmlnZ2VyCistCQkJCSAqIGNodW5rICovCistCQkJCWFzc2VydChs IDw9IHJkbWFfeHBydC0+c21fZHIuc2VuZHN6KTsKKysJCQkJLyogRm9yIHJlcGx5X2xpc3Qgd2Ug Y29weSBmcm9tIHByb3RvY29sIGJ1ZmZlciBzbyBhbGxvY2F0ZQorKwkJCQkgKiBiaWdnZXIgY2h1 bmsuCisrCQkJCSAqCisrCQkJCSAqIFRoZSBjbGllbnQncyByZXBseSBjaHVuayBsZW5ndGggKGwp IGNhbiBsZWdhbGx5IGV4Y2VlZAorKwkJCQkgKiBzZW5kc3o6IHRoZSBjbGllbnQgcHJlLXJlZ2lz dGVycyBhIGJ1ZmZlciBvZiBtYXhjb3VudCArCisrCQkJCSAqIE5GUyBDT01QT1VORCBvdmVyaGVh ZCAoYSBmZXcgaHVuZHJlZCBieXRlcyksIGFuZCB3aGVuCisrCQkJCSAqIG1heGNvdW50ID09IHNl bmRzeiAoPSBSRE1BX0RBVEFfQ0hVTktfU1ogPSAxIE1pQikgdGhlCisrCQkJCSAqIHRvdGFsIGwg PiBzZW5kc3ouCisrCQkJCSAqCisrCQkJCSAqIHZpb193cmFwIGlzIHNldCB0byBtaW4obCwgc2Vu ZHN6KToKKysJCQkJICogbCA8IHNlbmRzejogaG9ub3VyIHRoZSBjbGllbnQncyBhY3R1YWwgY2h1 bmsgY2FwYWNpdHkuCisrCQkJCSAqIGwgPj0gc2VuZHN6OiBjYXAgYXQgdGhlIHBoeXNpY2FsIGJ1 ZmZlciBzaXplIHRvIHByZXZlbnQKKysJCQkJICogYSBzZXJ2ZXItc2lkZSBidWZmZXIgb3ZlcmZs b3cgKHRoZSBvdmVyZmxvdyBkYXRhIGlzCisrCQkJCSAqIG9ubHkgTkZTIGhlYWRlciBieXRlcywg ZmFyIGxlc3MgdGhhbiBzZW5kc3opLgorKwkJCQkgKgorKwkJCQkgKiBUaGUgUkRNQSBXUklURSBz aXplIGlzIGRlcml2ZWQgZnJvbSBpb3F1dl9sZW5ndGgoKSA9CisrCQkJCSAqIHZpb190YWlsIC0g dmlvX2hlYWQgKGFjdHVhbCBieXRlcyB3cml0dGVuIGJ5IFhEUiksIG5ldmVyCisrCQkJCSAqIGZy b20gbCwgc28gdGhlIHRyYW5zZmVyIHN0YXlzIHdpdGhpbiBib3RoIHRoZSBzZXJ2ZXIgYnVmZmVy CisrCQkJCSAqIGFuZCB0aGUgY2xpZW50J3MgcHJlLXJlZ2lzdGVyZWQgcmVnaW9uLgorKwkJCQkg Ki8KKyAJCQkJaGF2ZSA9IHhkcl9yZG1hX2lvcV91dl9mZXRjaCgmY2JjLT5zZW5kcSwgJnJkbWFf eHBydC0+b3V0YnVmc19kYXRhLnV2cWgsCisgCQkJCSAgICAic3JlcGx5IGJ1ZmZlciIsIDEsIElP UV9GTEFHX05PTkUpOworIAorLQkJCQkvKiBidWZmZXIgaXMgbGltaXRlZCBzaXplICovCisrCQkJ CS8qIGJ1ZmZlciBpcyBsaW1pdGVkIHRvIG1pbihsLCBzZW5kc3opICovCisgCQkJCUlPUV8oaGF2 ZSktPnYudmlvX2hlYWQgPQorIAkJCQlJT1FfKGhhdmUpLT52LnZpb190YWlsID0gSU9RXyhoYXZl KS0+di52aW9fYmFzZTsKKy0JCQkJSU9RXyhoYXZlKS0+di52aW9fd3JhcCA9IChjaGFyICopSU9R XyhoYXZlKS0+di52aW9fYmFzZSArIGw7CisrCQkJCUlPUV8oaGF2ZSktPnYudmlvX3dyYXAgPSAo Y2hhciAqKUlPUV8oaGF2ZSktPnYudmlvX2Jhc2UKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsgKGwgPCByZG1hX3hwcnQtPnNtX2RyLnNlbmRzegorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPyBsIDogcmRtYV94cHJ0LT5zbV9kci5zZW5kc3opOwor IAkJCX0KKyAJCX0KKyAJCWlmICghYWxsb2NhdGVfaGVhZGVyKQorQEAgLTE5MzgsMjEgKzIwNTgs MjIgQEAKKyBib29sCisgeGRyX3JkbWFfY2xudF9mbHVzaG91dChzdHJ1Y3QgcnBjX3JkbWFfY2Jj ICpjYmMpCisgeworLS8qIEZJWE1FOiBkZWNpZGUgaG93IG1hbnkgYnVmZmVycyB3ZSB1c2UgaW4g YXJndW1lbnQhISEhISEgKi8KKy0jZGVmaW5lIG51bV9jaHVua3MgKHJkbWFfeHBydC0+eGEtPmNy ZWRpdHMgLSAxKQorLQorLQlSRE1BWFBSVCAqcmRtYV94cHJ0ID0geF9yZG1hX3hwcnQoY2JjLT5y ZWN2cS54ZHJzKTsKKysJUkRNQVhQUlQgKnJkbWFfeHBydCA9IHhfcmRtYV94cHJ0KGNiYy0+c2Vu ZHEueGRycyk7CisgCXN0cnVjdCBycGNfbXNnICptc2c7CisgCXN0cnVjdCByZG1hX21zZyAqcm1z ZzsKKy0Jc3RydWN0IHhkcl93cml0ZV9saXN0ICp3X2FycmF5OworIAlzdHJ1Y3QgeGRyX2lvcV91 diAqaGVhZF91djsKKyAJc3RydWN0IHhkcl9pb3FfdXYgKmhvbGRfdXY7CistCXN0cnVjdCBwb29s cV9lbnRyeSAqaGF2ZTsKKy0JaW50IGkgPSAwOworIAorKwkvKiBob2xkIE5GUyByZXF1ZXN0ICov CisgCWhvbGRfdXYgPSBJT1FfKFRBSUxRX0ZJUlNUKCZjYmMtPnNlbmRxLmlvcV91di51dnFoLnFo KSk7CisrCisrCXB0aHJlYWRfbXV0ZXhfbG9jaygmY2JjLT5zZW5kcS5pb3FfdXYudXZxaC5xbXV0 ZXgpOworKwlUQUlMUV9SRU1PVkUoJmNiYy0+c2VuZHEuaW9xX3V2LnV2cWgucWgsICZob2xkX3V2 LT51dnEsIHEpOworKwkoY2JjLT5zZW5kcS5pb3FfdXYudXZxaC5xY291bnQpLS07CisrCXB0aHJl YWRfbXV0ZXhfdW5sb2NrKCZjYmMtPnNlbmRxLmlvcV91di51dnFoLnFtdXRleCk7CisrCisgCW1z ZyA9IChzdHJ1Y3QgcnBjX21zZyAqKShob2xkX3V2LT52LnZpb19oZWFkKTsKKy0JeGRyX3RhaWxf dXBkYXRlKGNiYy0+cmVjdnEueGRycyk7CisrCXhkcl90YWlsX3VwZGF0ZShjYmMtPnNlbmRxLnhk cnMpOworIAorIAlzd2l0Y2gobnRvaGwobXNnLT5ybV9kaXJlY3Rpb24pKSB7CisgCSAgICBjYXNl IENBTEw6CitAQCAtMTk3MCwxNCArMjA5MSwxMSBAQAorIAkJcmV0dXJuIChmYWxzZSk7CisgCX0K KyAKKy0JY2JjLT5yZWN2cS5pb3FfdXYudXZxX2ZldGNoID0geGRyX3JkbWFfaW9xX3V2X2ZldGNo X25vdGhpbmc7CisrCWNiYy0+c2VuZHEuaW9xX3V2LnV2cV9mZXRjaCA9IHhkcl9yZG1hX2lvcV91 dl9mZXRjaF9ub3RoaW5nOworIAorLQloZWFkX3V2ID0gSU9RXyh4ZHJfcmRtYV9pb3FfdXZfZmV0 Y2goJmNiYy0+cmVjdnEsICZyZG1hX3hwcnQtPm91dGJ1ZnNfZGF0YS51dnFoLAorKwloZWFkX3V2 ID0gSU9RXyh4ZHJfcmRtYV9pb3FfdXZfZmV0Y2goJmNiYy0+c2VuZHEsICZyZG1hX3hwcnQtPm91 dGJ1ZnNfaGRyLnV2cWgsCisgCQkJCQkiY19oZWFkIGJ1ZmZlciIsIDEsIElPUV9GTEFHX05PTkUp KTsKKyAKKy0JKHZvaWQpeGRyX3JkbWFfaW9xX3V2X2ZldGNoKCZjYmMtPnNlbmRxLCAmcmRtYV94 cHJ0LT5pbmJ1ZnNfZGF0YS51dnFoLAorLQkJCQkiY2FsbCBidWZmZXJzIiwgbnVtX2NodW5rcywg SU9RX0ZMQUdfTk9ORSk7CistCisgCXJtc2cgPSBtXyhoZWFkX3V2LT52LnZpb19oZWFkKTsKKyAJ cm1zZy0+cmRtYV94aWQgPSBtc2ctPnJtX3hpZDsKKyAJcm1zZy0+cmRtYV92ZXJzID0gaHRvbmwo UlBDUkRNQV9WRVJTSU9OKTsKK0BAIC0xOTg3LDMxICsyMTA1LDI1IEBACisgCS8qIG5vIHJlYWQs IHdyaXRlIGNodW5rcy4gKi8KKyAJcm1zZy0+cmRtYV9ib2R5LnJkbWFfbXNnLnJkbWFfcmVhZHMg PSAwOyAvKiBodG9ubCgwKTsgKi8KKyAJcm1zZy0+cmRtYV9ib2R5LnJkbWFfbXNnLnJkbWFfd3Jp dGVzID0gMDsgLyogaHRvbmwoMCk7ICovCistCistCS8qIHJlcGx5IGNodW5rICovCistCXdfYXJy YXkgPSAod2xfdCAqKSZybXNnLT5yZG1hX2JvZHkucmRtYV9tc2cucmRtYV9yZXBseTsKKy0Jd19h cnJheS0+cHJlc2VudCA9IGh0b25sKDEpOworLQl3X2FycmF5LT5lbGVtZW50cyA9IGh0b25sKG51 bV9jaHVua3MpOworLQorLQlUQUlMUV9GT1JFQUNIKGhhdmUsICZjYmMtPnNlbmRxLmlvcV91di51 dnFoLnFoLCBxKSB7CistCQlzdHJ1Y3QgeGRyX3JkbWFfc2VnbWVudCAqd19zZWcgPQorLQkJCSZ3 X2FycmF5LT5lbnRyeVtpKytdLnRhcmdldDsKKy0JCXVpbnQzMl90IGxlbmd0aCA9IGlvcXV2X2xl bmd0aChJT1FfKGhhdmUpKTsKKy0KKy0JCXdfc2VnLT5oYW5kbGUgPSBodG9ubChyZG1hX3hwcnQt Pm1yLT5ya2V5KTsKKy0JCXdfc2VnLT5sZW5ndGggPSBodG9ubChsZW5ndGgpOworLQkJeGRyX2Vu Y29kZV9oeXBlcigodWludDMyX3QqKSZ3X3NlZy0+b2Zmc2V0LAorLQkJCQkgKHVpbnRwdHJfdClJ T1FfKGhhdmUpLT52LnZpb19oZWFkKTsKKy0JfQorKwlybXNnLT5yZG1hX2JvZHkucmRtYV9tc2cu cmRtYV9yZXBseSA9IDA7CisgCisgCWhlYWRfdXYtPnYudmlvX3RhaWwgPSBoZWFkX3V2LT52LnZp b19oZWFkCisgCQkJCSsgeGRyX3JkbWFfaGVhZGVyX2xlbmd0aChybXNnKTsKKyAKKysJcHRocmVh ZF9tdXRleF9sb2NrKCZjYmMtPnNlbmRxLmlvcV91di51dnFoLnFtdXRleCk7CisrCVRBSUxRX0lO U0VSVF9UQUlMKCZjYmMtPnNlbmRxLmlvcV91di51dnFoLnFoLCAmaG9sZF91di0+dXZxLCBxKTsK KysJKGNiYy0+c2VuZHEuaW9xX3V2LnV2cWgucWNvdW50KSsrOworKwlwdGhyZWFkX211dGV4X3Vu bG9jaygmY2JjLT5zZW5kcS5pb3FfdXYudXZxaC5xbXV0ZXgpOworKworIAlycGNyZG1hX2R1bXBf bXNnKGhlYWRfdXYsICJjbG50aGVhZCIsIG1zZy0+cm1feGlkKTsKKyAJcnBjcmRtYV9kdW1wX21z Zyhob2xkX3V2LCAiY2xudGNhbGwiLCBtc2ctPnJtX3hpZCk7CisgCisgCS8qIGFjdHVhbCBzZW5k LCBjYWxsYmFjayB3aWxsIHRha2UgY2FyZSBvZiBjbGVhbnVwICovCistCXhkcl9yZG1hX2FzeW5j X3NlbmRfY2IocmRtYV94cHJ0LCBjYmMsIDIpOworKwljYmMtPmhhdmUgPSBUQUlMUV9GSVJTVCgm Y2JjLT5zZW5kcS5pb3FfdXYudXZxaC5xaCk7CisrCWlmIChyZG1hX3hwcnQtPnNoYXJlZCkKKysJ CXhkcl9yZG1hX2FzeW5jX3NlbmRfY2IocmRtYV94cHJ0LCBjYmMsIDIpOworKwllbHNlCisrCQl4 ZHJfcmRtYV9zeW5jX3NlbmRfY2IocmRtYV94cHJ0LCBjYmMsIDIpOworIAlyZXR1cm4gKHRydWUp OworIH0KKyAKK0BAIC0yMjExLDYgKzIzMjMsNyBAQAorIAkJICogcHJvdG9jb2xzIGFuZCBVSU9f RkxBR19SRUZFUiB3aWxsIGJlIHNldC4KKyAJCSAqIGZpcnN0X2J1ZiA9IG5mc19oZWFkZXIgYnVm ICsgcmRtYV93cml0ZSBidWZzICovCisgCQlpZiAocmRtYV9idWZfdXNlZCkgeworKwkJCS8qIGRh dGFfY2h1bmsgYnVmZmVyIHdpbGwgYmUgc2V0IGJ5IHhfcHV0YnVmcyB0byB2aW9faGVhZCAqLwor IAkJCXJkbWFfYnVmX2FkZHIgPSBmaXJzdF9zZW5kX2J1Zl91di0+di52aW9faGVhZDsKKyAJCQly ZG1hX2J1Zl9sZW4gPSBpb3F1dl9sZW5ndGgoZmlyc3Rfc2VuZF9idWZfdXYpOworIAkJCWlmIChm aXJzdF9zZW5kX2J1Zl91di0+dS51aW9fZmxhZ3MgJiBVSU9fRkxBR19SRUZFUikKK0BAIC0yMjYy LDggKzIzNzUsMTMgQEAKKyAJCQl1aW50MzJfdCBsZW5ndGggPSBudG9obChjX3NlZy0+bGVuZ3Ro KTsKKyAJCQl1aW50MzJfdCBuZnNfaGVhZGVyX2xlbiA9IGlvcXV2X2xlbmd0aChuZnNfaGVhZGVy X3V2KTsKKyAKKy0JCQlhc3NlcnQobGVuZ3RoIDw9IHJkbWFfeHBydC0+c21fZHIuc2VuZHN6KTsK Ky0KKysJCQkvKiBEbyBub3QgYXNzZXJ0LCBpZiBsZW5ndGggPiBzZW5kc3o6IHRoZSBjbGllbnQg Y2FuIGxlZ2l0aW1hdGVseQorKwkJCSAqIHByZS1yZWdpc3RlciBhIHJlcGx5IGNodW5rIGxhcmdl ciB0aGFuIHNlbmRzeiAoZS5nLiB3aGVuCisrCQkJICogbWF4Y291bnQgZXF1YWxzIHNlbmRzeiB0 aGUgdG90YWwgY2h1bmsgaW5jbHVkZXMgTkZTIENPTVBPVU5ECisrCQkJICogb3ZlcmhlYWQgcHVz aGluZyBsIGFib3ZlIHNlbmRzeikuIFRoZSBhY3R1YWwgUkRNQSBXUklURSBzaXplCisrCQkJICog aXMgd3JpdGVfbGVuID0gbWluKHJkbWFfYnVmX2xlbiwgbGVuZ3RoKSA8PSBzZW5kc3osIHNvIHRo ZQorKwkJCSAqIHRyYW5zZmVyIGlzIGFsd2F5cyB3aXRoaW4gdGhlIHNlcnZlcidzIHJlZ2lzdGVy ZWQgYnVmZmVyLgorKwkJCSAqLworIAkJCSp3X3NlZyA9ICpjX3NlZzsKKyAKKyAJCQlfX3dhcm54 KFRJUlBDX0RFQlVHX0ZMQUdfWERSLAorQEAgLTIzODMsNiArMjUwMSwyNiBAQAorIAkJdWlvX3Jl ZmVyLT51aW9fcmVsZWFzZSh1aW9fcmVmZXIsIFVJT19GTEFHX05PTkUpOworIAl9CisgCisrCS8q CisrCSAqIFJlbGVhc2UgdGhlIGRlZmVycmVkIHNlbnRpbmVsIHJlZiB3aGVuIHRoZSByZXF1ZXN0 IHdhcyBzdXNwZW5kZWQKKysJICogYnkgd3JhcF9jYWxsYmFjayAoZS5nLiBRT1MsIGFzeW5jIElP KS4gSW4gdGhhdCBwYXRoIENCQ19GTEFHX1JFTEVBU0UKKysJICogd2FzIHNldCBidXQgY2JjX3Jl bGVhc2VfaXQgd2FzIGludGVudGlvbmFsbHkgc2tpcHBlZCB0byBrZWVwCisrCSAqIGNiYy0+ZGF0 YXEgYWxpdmUuICBOb3cgdGhhdCBhbGwgUkRNQSBvcGVyYXRpb25zIGhhdmUgYmVlbiBwb3N0ZWQK KysJICogKHRha2luZyB0aGVpciBvd24gcmVmcyksIGl0IGlzIHNhZmUgdG8gZHJvcCB0aGUgc2Vu dGluZWwuICBUaGUKKysJICogbGFzdCBSRE1BIGNvbXBsZXRpb24gd2lsbCB0aGVuIHNlZSByZWZj bnQ9PTAgd2l0aCBDQkNfRkxBR19SRUxFQVNFCisrCSAqIHNldCBhbmQgdHJpZ2dlciB0aGUgbm9y bWFsIGNiYyBjbGVhbnVwLgorKwkgKgorKwkgKiBGb3IgdGhlIG5vcm1hbCAobm9uLXN1c3BlbmRl ZCkgcGF0aCBDQkNfRkxBR19TRU5USU5FTF9QRU5ESU5HIGlzCisrCSAqIG5ldmVyIHNldCwgc28g dGhpcyBpcyBhIG5vLW9wLgorKwkgKi8KKysJaWYgKGNiYy0+Y2JjX2ZsYWdzICYgQ0JDX0ZMQUdf U0VOVElORUxfUEVORElORykgeworKwkJY2JjLT5jYmNfZmxhZ3MgJj0gfkNCQ19GTEFHX1NFTlRJ TkVMX1BFTkRJTkc7CisrCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSLAorKwkJCSIlcyBy ZG1hX3hwcnQgJXAgY2JjICVwIHJlbGVhc2luZyBkZWZlcnJlZCBzZW50aW5lbCIsCisrCQkJX19m dW5jX18sIHJkbWFfeHBydCwgY2JjKTsKKysJCWNiY19yZWxlYXNlX2l0KGNiYyk7CisrCX0KKysK KyAJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1hEUiwgIiVzOiBjYmMgJXAgcmVjdnEgJXAgJWQg c2VuZHEgJXAgJWQgcmRtYV94cHJ0ICVwIiwKKyAJCV9fZnVuY19fLCBjYmMsICZjYmMtPnJlY3Zx LCBjYmMtPnJlY3ZxLmlvcV91di51dnFoLnFjb3VudCwgJmNiYy0+c2VuZHEsCisgCQljYmMtPnNl bmRxLmlvcV91di51dnFoLnFjb3VudCwgcmRtYV94cHJ0KTsKK2RpZmYgLXVyIG50aXJwYy03LjIv dGVzdHMvcnBjcGluZy5jIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4 MjU2YmQxL3Rlc3RzL3JwY3BpbmcuYworLS0tIG50aXJwYy03LjIvdGVzdHMvcnBjcGluZy5jCTIw MjUtMDktMjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCisrKysgbnRpcnBjLTVjNzYxYmIxODZl OWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvdGVzdHMvcnBjcGluZy5jCTIwMjYtMDUtMTgg MTk6NDA6MjAuMDAwMDAwMDAwIC0wNDAwCitAQCAtMzQsNiArMzQsNyBAQAorICNpbmNsdWRlIDxy cGMvcnBjLmg+CisgI2luY2x1ZGUgPHJwYy9zdmNfYXV0aC5oPgorIAorKworICNpbmNsdWRlICJs dHRuZy9udGlycGNfdHJhY2VzLmgiCisgI2lmIGRlZmluZWQoVVNFX0xUVE5HX05USVJQQykgJiYg IWRlZmluZWQoTFRUTkdfUEFSU0lORykKKyAjaW5jbHVkZSAibHR0bmcvZ2VuZXJhdGVkX3RyYWNl cy9ycGNwaW5nLmgiCitAQCAtNDQsNiArNDUsMTEgQEAKKyBzdGF0aWMgdWludDMyX3QgcnBjcGlu Z190aHJlYWRzOworIAorIHN0YXRpYyBzdHJ1Y3QgdGltZXNwZWMgdG8gPSB7MzAsIDB9OworK3R5 cGVkZWYgZW51bSB7CisrCVRDUCA9IDEsCisrCVJETUEgPSAyLAorKwlSQVcgPSAzCisrfSBwcm90 b190OworIAorIHN0cnVjdCBzdGF0ZSB7CisgCUNMSUVOVCAqaGFuZGxlOworQEAgLTUzLDYgKzU5 LDcgQEAKKyAJc3RydWN0IHRpbWVzcGVjIHN0b3BwaW5nOworIAlpbnQgY291bnQ7CisgCWludCBw cm9jOworKwlwcm90b190IHByb3RvOworIAlpbnQgaWQ7CisgCXVpbnQzMl90IGZhaWx1cmVzOwor IAl1aW50MzJfdCByZXNwb25zZXM7CitAQCAtMTgzLDkgKzE5MCwxMSBAQAorIAkJfQorIAl9Cisg CistCXB0aHJlYWRfbXV0ZXhfbG9jaygmcy0+c19tdXRleCk7CistCXB0aHJlYWRfY29uZF93YWl0 KCZzLT5zX2NvbmQsICZzLT5zX211dGV4KTsKKy0JcHRocmVhZF9tdXRleF91bmxvY2soJnMtPnNf bXV0ZXgpOworKwlpZiAocy0+cHJvdG8gIT0gUkRNQSkgeworKwkJcHRocmVhZF9tdXRleF9sb2Nr KCZzLT5zX211dGV4KTsKKysJCXB0aHJlYWRfY29uZF93YWl0KCZzLT5zX2NvbmQsICZzLT5zX211 dGV4KTsKKysJCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZzLT5zX211dGV4KTsKKysJfQorIAljbG9j a19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJnMtPnN0b3BwaW5nKTsKKyAKKyAJaWYgKGF0b21p Y19kZWNfdWludDMyX3QoJnJwY3BpbmdfdGhyZWFkcykgPiAwKSB7CitAQCAtMjU0LDkgKzI2Mywx MyBAQAorIAlpbnQgcHJvYyA9IDA7CisgCWludCBzZW5kX3N6ID0gODE5MjsKKyAJaW50IHJlY3Zf c3ogPSA4MTkyOworKyNpZmRlZiBVU0VfUlBDX1JETUEKKysJaW50IHBhZ2Vfc3ogPSBzeXNjb25m KF9TQ19QQUdFU0laRSk7CisrI2VuZGlmCisgCXVuc2lnbmVkIGludCBmYWlsdXJlcyA9IDA7Cisg CXVuc2lnbmVkIGludCB0aW1lb3V0cyA9IDA7CisgCWJvb2wgcnBjYmluZCA9IGZhbHNlOworKwlw cm90b190IHByb3RvX3VzZWQgPSAwOworIAorIAlOVElSUENfQVVUT19UUkFDRVBPSU5UKHJwY3Bp bmcsIHRlc3QsIFRSQUNFX0lORk8sICJCb28iKTsKKyAKK0BAIC0zMzQsNyArMzQ3LDggQEAKKyAJ CQkJCSAgICJjbG50X25jcmVhdGUgZmFpbGVkIik7CisgCQkJCWV4aXQoMik7CisgCQkJfQorLQkJ fSBlbHNlIHsKKysJCX0gZWxzZSBpZiAoc3RyY21wKHByb3RvLCAicmRtYSIpKSB7CisrCQkJcHJv dG9fdXNlZCA9IFRDUDsKKyAJCQkvKiBjb25uZWN0IHRvIGhvc3Q6cG9ydCAqLworIAkJCXN0cnVj dCBzb2NrYWRkcl9zdG9yYWdlIHNzOworIAkJCXN0cnVjdCBuZXRidWYgcmFkZHIgPSB7CitAQCAt MzU2LDcgKzM3MCwyNiBAQAorIAkJCQkJICAgImNsbnRfbmNyZWF0ZSBmYWlsZWQiKTsKKyAJCQkJ ZXhpdCg0KTsKKyAJCQl9CisrCQl9IGVsc2UgeworKwkJCXByb3RvX3VzZWQgPSBSRE1BOworKwkJ CWludCBmZCA9IGdldF9jb25uX2ZkKGhvc3QsIHBvcnQpOworKwkJCWlmIChmZCA8PSAwKSB7Cisr CQkJCXBlcnJvcigiZ2V0X2Nvbm5fZmQgZmFpbGVkIik7CisrCQkJCWV4aXQoMyk7CisrCQkJfQor KyNpZmRlZiBVU0VfUlBDX1JETUEKKysJCQljbG50ID0gY2xudF9yZG1hX2NyZWF0ZShmZCwgaG9z dCwgMjAwNDksIHJlY3Zfc3osCisrCQkJICAgIHNlbmRfc3osIHBhZ2Vfc3osIHByb2csIHZlcnMs IENMTlRfQ1JFQVRFX0ZMQUdfQ0xPU0UpOworKwkJCWlmIChDTE5UX0ZBSUxVUkUoY2xudCkpIHsK KysJCQkJcnBjX3BlcnJvcigmY2xudC0+Y2xfZXJyb3IsICJjbG50X3JkbWFfY3JlYXRlIGZhaWxl ZCIpOworKwkJCQlleGl0KDQpOworKwkJCX0KKysjZWxzZQorKwkJCXBlcnJvcigicmRtYSBub3Qg ZW5hYmxlZCIpOworKwkJCWV4aXQoNCk7CisrI2VuZGlmCisgCQl9CisrCisgCQlzID0gJnN0YXRl c1tpXTsKKyAJCWNsbnQtPmNsX3UxID0gczsKKyAKK0BAIC0zNjQsNiArMzk3LDcgQEAKKyAJCXMt PmlkID0gaTsKKyAJCXMtPmNvdW50ID0gY291bnQ7CisgCQlzLT5wcm9jID0gcHJvYzsKKysJCXMt PnByb3RvID0gcHJvdG9fdXNlZDsKKyAJCXB0aHJlYWRfY3JlYXRlKCZ0LCBOVUxMLCB3b3JrZXIs IHMpOworIAl9CisgCgpkaWZmIC0tZ2l0IGEvMzUyLnBhdGNoIGIvMzUyLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTMxZGNjLi4wMDAwMDAwCi0tLSBhLzM1Mi5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gNmQ0MDRjZmJhNWIwNmVlYjYyZDk2 NWE1Yzc4MzE3YWI2MDFmY2I2NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENyaXN0 aWFuIExlIDxnaXRAbGVjcmlzLmRldj4KLURhdGU6IFRodSwgMTcgSnVsIDIwMjUgMTI6NTM6MjIg KzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gQnVtcCBDTWFrZSBwb2xpY2llcwotCi0tLS0KLSBDTWFr ZUxpc3RzLnR4dCB8IDggKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCsp LCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxp c3RzLnR4dAotaW5kZXggMDFmZTUzYWUxLi5lNmExZDAzZjggMTAwNjQ0Ci0tLS0gYS9DTWFrZUxp c3RzLnR4dAotKysrIGIvQ01ha2VMaXN0cy50eHQKLUBAIC0yLDcgKzIsNyBAQAotIAotICMgQ3Vy cmVudCB2ZXJzaW9uIGFzIG9mIEZlZG9yYSAxNi4gIE5vdCB0ZXN0ZWQgd2l0aCBlYXJsaWVyLgot IAotLWNtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAyLjYuMykKLStjbWFrZV9taW5pbXVt X3JlcXVpcmVkKFZFUlNJT04gMi42Li4uNC4wKQotIAotIHNldChDTUFLRV9NT0RVTEVfUEFUSCAk e0NNQUtFX01PRFVMRV9QQVRIfSAiJHtDTUFLRV9TT1VSQ0VfRElSfS9jbWFrZS9tb2R1bGVzLyIp Ci0gCi1AQCAtMzEyLDE1ICszMTIsMTMgQEAgc2V0KCBQS0dfTkFNRSAiJHtDUEFDS19QQUNLQUdF X05BTUV9LSR7Q1BBQ0tfUEFDS0FHRV9WRVJTSU9OfS50YXIuZ3oiKQotIGVuZGlmIChOT1QgVEFS R0VUIGRpc3QpCi0gCi0gaWYgKE5PVCBUQVJHRVQgcnBtKQotLWFkZF9jdXN0b21fdGFyZ2V0KCBy cG0gREVQRU5EUyBkaXN0KQotLWFkZF9jdXN0b21fY29tbWFuZChUQVJHRVQgcnBtCi0rYWRkX2N1 c3RvbV90YXJnZXQoIHJwbQotICAgICAgICAgICAgICAgICAgIENPTU1BTkQgc2ggLWMgInJwbWJ1 aWxkIC10YSAke1BLR19OQU1FfSIKLSAJCSAgVkVSQkFUSU0KLSAJCSAgREVQRU5EUyBkaXN0KQot IAotIHNldChSUE1ERVNUICItLWRlZmluZSAnX3NyY3JwbWRpciAke0NNQUtFX0NVUlJFTlRfQklO QVJZX0RJUn0nIikKLS1hZGRfY3VzdG9tX3RhcmdldCggc3JwbSBERVBFTkRTIGRpc3QpCi0tYWRk X2N1c3RvbV9jb21tYW5kKFRBUkdFVCBzcnBtCi0rYWRkX2N1c3RvbV90YXJnZXQoIHNycG0KLSAg ICAgICAgICAgICAgICAgICBDT01NQU5EIHNoIC1jICJycG1idWlsZCAke1JQTURFU1R9IC10cyAk e1BLR19OQU1FfSIKLSAJCSAgVkVSQkFUSU0KLSAJCSAgREVQRU5EUyBkaXN0KQoKZGlmZiAtLWdp dCBhL2xpYm50aXJwYy5zcGVjIGIvbGlibnRpcnBjLnNwZWMKaW5kZXggNDUxMWNmZi4uNGIyODY5 MyAxMDA2NDQKLS0tIGEvbGlibnRpcnBjLnNwZWMKKysrIGIvbGlibnRpcnBjLnNwZWMKQEAgLTMs NyArMyw3IEBACiAKIE5hbWU6CQlsaWJudGlycGMKIFZlcnNpb246CTcuMgotUmVsZWFzZToJMiV7 P2Rldjole2Rldn19JXs/ZGlzdH0KK1JlbGVhc2U6CTMlez9kZXY6JXtkZXZ9fSV7P2Rpc3R9CiBT dW1tYXJ5OglOZXcgVHJhbnNwb3J0IEluZGVwZW5kZW50IFJQQyBMaWJyYXJ5CiBMaWNlbnNlOglC U0QtMy1DbGF1c2UKIFVybDoJCWh0dHBzOi8vZ2l0aHViLmNvbS9uZnMtZ2FuZXNoYS9udGlycGMK QEAgLTEzLDYgKzEzLDcgQEAgVXJsOgkJaHR0cHM6Ly9naXRodWIuY29tL25mcy1nYW5lc2hhL250 aXJwYwogU291cmNlMDoJaHR0cHM6Ly9naXRodWIuY29tL25mcy1nYW5lc2hhL250aXJwYy9hcmNo aXZlL3Yle3ZlcnNpb259L250aXJwYy0le3ZlcnNpb259JXs/ZGV2OiV7ZGV2fX0udGFyLmd6CiBT b3VyY2UxOglodHRwczovL2dpdGh1Yi5jb20vYmlha3MvcHJvbWV0aGV1cy1jcHAtbGl0ZS9hcmNo aXZlLyV7cHJvbWV0aF92ZXJfbG9uZ30vcHJvbWV0aGV1cy1jcHAtbGl0ZS0le3Byb21ldGhfdmVy X3Nob3J0fS50YXIuZ3oKIFBhdGNoOgkJMDAwMS1DTWFrZUxpc3RzLnR4dC5wYXRjaAorUGF0Y2g6 CQkwMDAyLTcuMnBsdXMucGF0Y2gKIAogQnVpbGRSZXF1aXJlczoJY21ha2UgZ2NjIGdjYy1jKysK ICVpZmFyY2ggeDg2XzY0IGFhcmNoNjQKQEAgLTk1LDYgKzk2LDEwIEBAIGxuIC1zICV7bmFtZX0u c28uJXt2ZXJzaW9ufSAle2J1aWxkcm9vdH0le19saWJkaXJ9LyV7bmFtZX0uc28uNwogJXtfbGli ZGlyfS9wa2djb25maWcvbGlibnRpcnBjLnBjCiAKICVjaGFuZ2Vsb2cKKyogRnJpIEp1biAxMiAy MDI2IEthbGViIFMuIEtFSVRITEVZIDxra2VpdGhsZSBhdCByZWRoYXQuY29tPiA3LjItMworLSBu dGlycGMtNy4yLCBudGlycGMgZGlkIG5vdCB0YWcvcmVsZWFzZSByZXF1aXJlZCB1cGRhdGVzIGZv cgorICBnYW5lc2hhLTguMSBhbmQgbGF0ZXIKKwogKiBGcmkgSmFuIDE2IDIwMjYgRmVkb3JhIFJl bGVhc2UgRW5naW5lZXJpbmcgPHJlbGVuZ0BmZWRvcmFwcm9qZWN0Lm9yZz4gLSA3LjItMgogLSBS ZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzQ0X01hc3Nf UmVidWlsZAogCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXggOWUxOTQyNy4u YjI1NzQ1ZCAxMDA2NDQKLS0tIGEvc291cmNlcworKysgYi9zb3VyY2VzCkBAIC0xLDMgKzEsMiBA QAotU0hBNTEyIChudGlycGMtNy4wLnRhci5neikgPSBiNGU1YzY5ZTQ2OTg4Mzc0YTY2Yjg2ZjZj MzNlMjQxYjFkNzMyNWMyN2VjY2ExNzRjN2IxNTYwZTNkOWNhMTc0YWI2MzNmNTFiM2IzZTE4NTI4 NjdjMWU2MjEwMGNmODRkYzkwMzFmNDlkMjI5MmJiMzY0ZDMxYWNmMGI1NzAzZgogU0hBNTEyIChw cm9tZXRoZXVzLWNwcC1saXRlLTQ4ZDA5YzQ1LnRhci5neikgPSBhZTcxOTljNWNjMjY1YmUxMGI4 MjA0NmFjMTBmYTQzOGRiMjc5N2FkOTgyMTE2M2NlM2Y1ZTJjMjdjYzAxNjUzYjNhODIzYjUzY2Ix YWVjYjdkY2M2ZDE4YzBmMTY5MzM1MTA0NzdlOGNlZTQzN2QwYTdhMjI0ODIwY2E1ZmViYwogU0hB NTEyIChudGlycGMtNy4yLnRhci5neikgPSA5ZDQwNzVkYjcxYTk1MTE0MzA5YmRkMzNiNjAyNWEw YzliODA1YWVmYjBiOTJiODU0NDM5NTkyMGJiNDQwMmExYzViYWVlZTY3ZjM0NjZiMDZjNDRhYmIx YWZhYjI4Zjg4OWE5OWYxMDdjYTBhZDY2Nzk4YTA5NmM1NjRiZDczOAoKZGlmZiAtLWdpdCBhLzAw MDEtQ01ha2VMaXN0cy50eHQucGF0Y2ggYi8wMDAxLUNNYWtlTGlzdHMudHh0LnBhdGNoCmluZGV4 IGFiYzNiNzUuLmU0OGM2MmEgMTAwNjQ0Ci0tLSBhLzAwMDEtQ01ha2VMaXN0cy50eHQucGF0Y2gK KysrIGIvMDAwMS1DTWFrZUxpc3RzLnR4dC5wYXRjaApAQCAtMSwxMiArMSwxMSBAQAogLS0tIG50 aXJwYy02LjMvQ01ha2VMaXN0cy50eHQub3JpZwkyMDI1LTA3LTE2IDA4OjQ5OjU2Ljc3MTcwOTcw MyAtMDQwMAogKysrIG50aXJwYy02LjMvQ01ha2VMaXN0cy50eHQJMjAyNS0wNy0xNiAwOToxMjox Mi4yODU0MjcwNDMgLTA0MDAKLUBAIC0yLDcgKzIsOCBAQAorQEAgLTIsNyArMiw3IEBACiAgCiAg IyBDdXJyZW50IHZlcnNpb24gYXMgb2YgRmVkb3JhIDE2LiAgTm90IHRlc3RlZCB3aXRoIGVhcmxp ZXIuCiAgCiAtY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDIuNi4zKQotK2NtYWtlX21p bmltdW1fcmVxdWlyZWQoVkVSU0lPTiAzLjMuMC4uLjQuMCkKLStjbWFrZV9wb2xpY3koVkVSU0lP TiAzLjIuMikKKytjbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMy41LjAuLi40LjApCiAg CiAgc2V0KENNQUtFX01PRFVMRV9QQVRIICR7Q01BS0VfTU9EVUxFX1BBVEh9ICIke0NNQUtFX1NP VVJDRV9ESVJ9L2NtYWtlL21vZHVsZXMvIikKICAKCmRpZmYgLS1naXQgYS9saWJudGlycGMuc3Bl YyBiL2xpYm50aXJwYy5zcGVjCmluZGV4IDVjZjg4Y2UuLjRiMjg2OTMgMTAwNjQ0Ci0tLSBhL2xp Ym50aXJwYy5zcGVjCisrKyBiL2xpYm50aXJwYy5zcGVjCkBAIC0zLDcgKzMsNyBAQAogCiBOYW1l OgkJbGlibnRpcnBjCiBWZXJzaW9uOgk3LjIKLVJlbGVhc2U6CTIlez9kZXY6JXtkZXZ9fSV7P2Rp c3R9CitSZWxlYXNlOgkzJXs/ZGV2OiV7ZGV2fX0lez9kaXN0fQogU3VtbWFyeToJTmV3IFRyYW5z cG9ydCBJbmRlcGVuZGVudCBSUEMgTGlicmFyeQogTGljZW5zZToJQlNELTMtQ2xhdXNlCiBVcmw6 CQlodHRwczovL2dpdGh1Yi5jb20vbmZzLWdhbmVzaGEvbnRpcnBjCkBAIC0xMiw2ICsxMiw3IEBA IFVybDoJCWh0dHBzOi8vZ2l0aHViLmNvbS9uZnMtZ2FuZXNoYS9udGlycGMKICVnbG9iYWwgcHJv bWV0aF92ZXJfc2hvcnQJNDhkMDljNDUKIFNvdXJjZTA6CWh0dHBzOi8vZ2l0aHViLmNvbS9uZnMt Z2FuZXNoYS9udGlycGMvYXJjaGl2ZS92JXt2ZXJzaW9ufS9udGlycGMtJXt2ZXJzaW9ufSV7P2Rl djole2Rldn19LnRhci5negogU291cmNlMToJaHR0cHM6Ly9naXRodWIuY29tL2JpYWtzL3Byb21l dGhldXMtY3BwLWxpdGUvYXJjaGl2ZS8le3Byb21ldGhfdmVyX2xvbmd9L3Byb21ldGhldXMtY3Bw LWxpdGUtJXtwcm9tZXRoX3Zlcl9zaG9ydH0udGFyLmd6CitQYXRjaDoJCTAwMDEtQ01ha2VMaXN0 cy50eHQucGF0Y2gKIFBhdGNoOgkJMDAwMi03LjJwbHVzLnBhdGNoCiAKIEJ1aWxkUmVxdWlyZXM6 CWNtYWtlIGdjYyBnY2MtYysrCkBAIC05NSwxMCArOTYsMTMgQEAgbG4gLXMgJXtuYW1lfS5zby4l e3ZlcnNpb259ICV7YnVpbGRyb290fSV7X2xpYmRpcn0vJXtuYW1lfS5zby43CiAle19saWJkaXJ9 L3BrZ2NvbmZpZy9saWJudGlycGMucGMKIAogJWNoYW5nZWxvZwotKiBGcmkgSnVuIDEyIDIwMjYg S2FsZWIgUy4gS0VJVEhMRVkgPGtrZWl0aGxlIGF0IHJlZGhhdC5jb20+IDcuMi0yCisqIEZyaSBK dW4gMTIgMjAyNiBLYWxlYiBTLiBLRUlUSExFWSA8a2tlaXRobGUgYXQgcmVkaGF0LmNvbT4gNy4y LTMKIC0gbnRpcnBjLTcuMiwgbnRpcnBjIGRpZCBub3QgdGFnL3JlbGVhc2UgcmVxdWlyZWQgdXBk YXRlcyBmb3IKICAgZ2FuZXNoYS04LjEgYW5kIGxhdGVyCiAKKyogRnJpIEphbiAxNiAyMDI2IEZl ZG9yYSBSZWxlYXNlIEVuZ2luZWVyaW5nIDxyZWxlbmdAZmVkb3JhcHJvamVjdC5vcmc+IC0gNy4y LTIKKy0gUmVidWlsdCBmb3IgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0ZlZG9yYV80 NF9NYXNzX1JlYnVpbGQKKwogKiBUdWUgU2VwIDMwIDIwMjUgS2FsZWIgUy4gS0VJVEhMRVkgPGtr ZWl0aGxlIGF0IHJlZGhhdC5jb20+IDcuMi0xCiAtIG50aXJwYy03LjIgR0EKIAo=