From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oscar Mateo Subject: [RFC PATCH] drm/i915/guc: New interface files for GuC starting in Gen11 Date: Fri, 25 May 2018 14:59:35 -0700 Message-ID: <1527285575-19898-1-git-send-email-oscar.mateo@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 760956E18C for ; Fri, 25 May 2018 21:59:17 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Jalpa Patel , Kevin Rogovin , Sujaritha Sundaresan List-Id: intel-gfx@lists.freedesktop.org R3VDIGludGVyZmFjZSBoYXMgYmVlbiByZWRlc2lnbmVkIChvciBjbGVhbmVkIHVwLCByYXRoZXIp IHN0YXJ0aW5nCndpdGggR2VuMTEsIGFzIGEgc3RlcHBpbmcgc3RvbmUgdG93YXJkcyBhIG5ldyBi cmFuY2hpbmcgc3RyYXRlZ3kKdGhhdCBoZWxwcyBtYWludGFpbiBiYWNrd2FyZHMgY29tcGF0aWJp bGl0eSB3aXRoIHByZXZpb3VzIEdlbnMsIGFzCndlbGwgYXMgc2lkZXdhcmQgY29tcGF0aWJpbGl0 eSB3aXRoIG90aGVyIE9TZXMuCgpUaGUgaW50ZXJmYWNlIGlzIHNwbGl0IGluIHR3byBoZWFkZXIg ZmlsZXM6IG9uZSBmb3IgdGhlIEtNRCBhbmQgb25lCmZvciBjbGllbnRzIG9mIHRoZSBHdUMgKHdo aWNoLCBpbiBvdXIgY2FzZSwgaGFwcGVucyB0byBiZSB0aGUgS01ECmFzIHdlbGwpLiBTTFBDIGlu dGVyZmFjZSBmaWxlcyB3aWxsIGNvbWUgYXQgYSBsYXRlciBkYXRlLgoKQ291bGQgd2UgZ2V0IGV5 ZXMgb24gdGhlIG5ldyBpbnRlcmZhY2UgaGVhZGVyIGZpbGVzLCB0byBtYWtlIHN1cmUgdGhlCkd1 QyB0ZWFtIGlzIG1vdmluZyBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uPwoKU2lnbmVkLW9mZi1ieTog T3NjYXIgTWF0ZW8gPG9zY2FyLm1hdGVvQGludGVsLmNvbT4KQ2M6IEpvb25hcyBMYWh0aW5lbiA8 am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KQ2M6IEtldmluIFJvZ292aW4gPGtldmlu LnJvZ292aW5AaW50ZWwuY29tPgpDYzogSm9obiBBIFNwb3Rzd29vZCA8am9obi5hLnNwb3Rzd29v ZEBpbnRlbC5jb20+CkNjOiBBbnVzaGEgU3JpdmF0c2EgPGFudXNoYS5zcml2YXRzYUBpbnRlbC5j b20+CkNjOiBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIDxkYW5pZWxlLmNlcmFvbG9zcHVyaW9AaW50 ZWwuY29tPgpDYzogTWljaGFsIFdhamRlY3prbyA8bWljaGFsLndhamRlY3prb0BpbnRlbC5jb20+ CkNjOiBNaWNoZWwgVGhpZXJyeSA8bWljaGVsLnRoaWVycnlAaW50ZWwuY29tPgpDYzogQ2hyaXMg V2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBNaWNoYcWCIFdpbmlhcnNraSA8 bWljaGFsLndpbmlhcnNraUBpbnRlbC5jb20+CkNjOiBUb21hc3ogTGlzIDx0b21hc3oubGlzQGlu dGVsLmNvbT4KQ2M6IEpvbiBFd2lucyA8am9uLmV3aW5zQGludGVsLmNvbT4KQ2M6IFN1amFyaXRo YSBTdW5kYXJlc2FuIDxzdWphcml0aGEuc3VuZGFyZXNhbkBpbnRlbC5jb20+CkNjOiBKYWxwYSBQ YXRlbCA8amFscGEucGF0ZWxAaW50ZWwuY29tPgpDYzogSmFja2llIExpIDx5YW9kb25nLmxpQGlu dGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfY2xpZW50X2ludGVy ZmFjZS5oIHwgMjU1ICsrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19rbWRf aW50ZXJmYWNlLmggICAgfCA4NDcgKysrKysrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFu Z2VkLCAxMTAyIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9ndWNfY2xpZW50X2ludGVyZmFjZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2ttZF9pbnRlcmZhY2UuaAoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19jbGllbnRfaW50ZXJmYWNlLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfY2xpZW50X2ludGVyZmFjZS5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlZjkxYTcKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfY2xpZW50X2ludGVyZmFjZS5oCkBAIC0wLDAg KzEsMjU1IEBACisvKgorICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorICoKKyAqIENv cHlyaWdodCDCqSAyMDE4IEludGVsIENvcnBvcmF0aW9uCisgKi8KKworI2lmbmRlZiBfSU5URUxf R1VDX0NMSUVOVF9JTlRFUkZBQ0VfSF8KKyNkZWZpbmUgX0lOVEVMX0dVQ19DTElFTlRfSU5URVJG QUNFX0hfCisKKyNwcmFnbWEgcGFjaygxKQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIEVuZ2luZXMgKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIEdVQ19N QVhfRU5HSU5FX0lOU1RBTkNFX1BFUl9DTEFTUwk0CisjZGVmaW5lIEdVQ19NQVhfU0NIRURVTEFC TEVfRU5HSU5FX0NMQVNTCTUKKyNkZWZpbmUgR1VDX01BWF9FTkdJTkVfQ0xBU1NfQ09VTlQJCTYK KyNkZWZpbmUgR1VDX0VOR0lORV9JTlZBTElECQkJNgorCisvKiBFbmdpbmUgQ2xhc3MgdGhhdCB1 S2VybmVsIGNhbiBzY2hlZHVsZSBvbi4gVGhpcyBpcyBqdXN0IGEgU1cgZW51bWVyYXRpb24uCisg KiBIVyBjb25maWd1cmF0aW9uIHdpbGwgZGVwZW5kIG9uIHRoZSBQbGF0Zm9ybSBhbmQgU0tVCisg Ki8KK2VudW0gdWtfZW5naW5lX2NsYXNzIHsKKwlVS19SRU5ERVJfRU5HSU5FX0NMQVNTID0gMCwK KwlVS19WREVDRU5DX0VOR0lORV9DTEFTUyA9IDEsCisJVUtfVkVfRU5HSU5FX0NMQVNTID0gMiwK KwlVS19CTFRfQ09QWV9FTkdJTkVfQ0xBU1MgPSAzLAorCVVLX1JFU0VSVkVEX0VOR0lORV9DTEFT UyA9IDQsCisJVUtfT1RIRVJfRU5HSU5FX0NMQVNTID0gNSwKK307CisKKy8qIEVuZ2luZSBJbnN0 YW5jZSB0aGF0IHVLZXJuZWwgY2FuIHNjaGVkdWxlIG9uICovCitlbnVtIHVrX2VuZ2luZV9pbnN0 YW5jZSB7CisJVUtfRU5HSU5FX0lOU1RBTkNFXzAgPSAwLAorCVVLX0VOR0lORV9JTlNUQU5DRV8x ID0gMSwKKwlVS19FTkdJTkVfSU5TVEFOQ0VfMiA9IDIsCisJVUtfRU5HSU5FX0lOU1RBTkNFXzMg PSAzLAorCVVLX0lOVkFMSURfRU5HSU5FX0lOU1RBTkNFID0gR1VDX01BWF9FTkdJTkVfSU5TVEFO Q0VfUEVSX0NMQVNTLAorCVVLX0VOR0lORV9BTExfSU5TVEFOQ0VTID0gVUtfSU5WQUxJRF9FTkdJ TkVfSU5TVEFOQ0UKK307CisKKy8qIFRhcmdldCBFbmdpbmUgZmllbGQgdXNlZCBpbiBXSSBoZWFk ZXIgYW5kIEd1YzJIb3N0ICovCitzdHJ1Y3QgZ3VjX3RhcmdldF9lbmdpbmUgeworCXVuaW9uIHsK KwkJc3RydWN0IHsKKwkJCS8qIE9uZSBvZiBlbnVtIHVrX2VuZ2luZV9jbGFzcyAqLworCQkJdTgg ZW5naW5lX2NsYXNzIDogMzsKKwkJCS8qIE9uZSBvZiBlbnVtIHVrX2VuZ2luZV9pbnN0YW5jZSAq LworCQkJdTggZW5naW5lX2luc3RhbmNlIDogNDsKKwkJCS8qIEFsbCBlbmFibGVkIGVuZ2luZSBj bGFzc2VzIGFuZCBpbnN0YW5jZXMgKi8KKwkJCXU4IGFsbF9lbmdpbmVzIDogMTsKKwkJfTsKKwkJ dTggdmFsdWU7CisJfTsKK307CisKK3N0cnVjdCBndWNfZW5naW5lX2NsYXNzX2JpdF9tYXAgewor CXVuaW9uIHsKKwkJLyogQml0IHBvc2l0aW9ucyBtdXN0IG1hdGNoIGVudW0gdWtfZW5naW5lX2Ns YXNzIHZhbHVlICovCisJCXN0cnVjdCB7CisJCQl1MzIgcmVuZGVyX2VuZ2luZV9jbGFzcyA6IDE7 CisJCQl1MzIgdmRlY2VuY19lbmdpbmVfY2xhc3MgOiAxOworCQkJdTMyIHZlX2VuZ2luZV9jbGFz cyA6IDE7CisJCQl1MzIgYmx0X2NvcHlfZW5naW5lX2NsYXNzIDogMTsKKwkJCXUzMiByZXNlcnZl ZF9lbmdpbmVfY2xhc3MgOiAxOworCQkJdTMyIG90aGVyX2VuZ2luZV9jbGFzcyA6IDE7CisJCQl1 MzIgOiAyNjsKKwkJfTsKKwkJdTMyIHZhbHVlOworCX07Cit9OworCitzdHJ1Y3QgZ3VjX2VuZ2lu ZV9pbnN0YW5jZV9iaXRfbWFwIHsKKwl1bmlvbiB7CisJCXN0cnVjdCB7CisJCQl1MzIgZW5naW5l MCA6IDE7CisJCQl1MzIgZW5naW5lMSA6IDE7CisJCQl1MzIgZW5naW5lMiA6IDE7CisJCQl1MzIg ZW5naW5lMyA6IDE7CisJCQl1MzIgZW5naW5lNCA6IDE7CisJCQl1MzIgZW5naW5lNSA6IDE7CisJ CQl1MzIgZW5naW5lNiA6IDE7CisJCQl1MzIgZW5naW5lNyA6IDE7CisJCQl1MzIgOiAyNDsKKwkJ fTsKKwkJdTMyIHZhbHVlOworCX07Cit9OworCitzdHJ1Y3QgZ3VjX2VuZ2luZV9iaXRfbWFwIHsK KwlzdHJ1Y3QgZ3VjX2VuZ2luZV9jbGFzc19iaXRfbWFwIGVuZ2luZV9jbGFzc19iaXRfbWFwOwor CXN0cnVjdCBndWNfZW5naW5lX2luc3RhbmNlX2JpdF9tYXAKKwkJZW5naW5lX2luc3RhbmNlX2Jp dF9tYXBbR1VDX01BWF9FTkdJTkVfQ0xBU1NfQ09VTlRdOworfTsKKworLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCisgKioqKioqKioqKioqKioqKioqKioqIFByb2Nlc3MgRGVzY3JpcHRvciBhbmQgV29y ayBRdWV1ZSAqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwor LyogU3RhdHVzIG9mIGEgV29yayBRdWV1ZSAqLworZW51bSBndWNfcXVldWVfc3RhdHVzIHsKKwlH VUNfUVVFVUVfU1RBVFVTX0FDVElWRSA9IDEsCisJR1VDX1FVRVVFX1NUQVRVU19TVVNQRU5ERUQg PSAyLAorCUdVQ19RVUVVRV9TVEFUVVNfQ01EX0VSUk9SID0gMywKKwlHVUNfUVVFVUVfU1RBVFVT X0VOR0lORV9JRF9OT1RfVVNFRCA9IDQsCisJR1VDX1FVRVVFX1NUQVRVU19TVVNQRU5ERURfRlJP TV9FTkdJTkVfUkVTRVQgPSA1LAorCUdVQ19RVUVVRV9TVEFUVVNfSU5WQUxJRF9TVEFUVVMgPSA2 LAorfTsKKworLyogUHJpb3JpdHkgb2YgZ3VjX2NvbnRleHRfZGVzY3JpcHRvciAqLworZW51bSBn dWNfY29udGV4dF9wcmlvcml0eSB7CisJR1VDX0NPTlRFWFRfUFJJT1JJVFlfS01EX0hJR0ggPSAw LAorCUdVQ19DT05URVhUX1BSSU9SSVRZX0hJR0ggPSAxLAorCUdVQ19DT05URVhUX1BSSU9SSVRZ X0tNRF9OT1JNQUwgPSAyLAorCUdVQ19DT05URVhUX1BSSU9SSVRZX05PUk1BTCA9IDMsCisJR1VD X0NPTlRFWFRfUFJJT1JJVFlfQUJTT0xVVEVfTUFYX0NPVU5UID0gNCwKKwlHVUNfQ09OVEVYVF9Q UklPUklUWV9JTlZBTElEID0gR1VDX0NPTlRFWFRfUFJJT1JJVFlfQUJTT0xVVEVfTUFYX0NPVU5U Cit9OworCisvKiBBIHNoYXJlZCBzdHJ1Y3R1cmUgYmV0d2VlbiBhcHAgYW5kIHVLZXJuZWwgZm9y IGNvbW11bmljYXRpb24gKi8KK3N0cnVjdCBndWNfc2NoZWRfcHJvY2Vzc19kZXNjcmlwdG9yIHsK KwkvKiBJbmRleCBpbiB0aGUgR3VDIENvbnRleHQgRGVzY3JpcHRvciBQb29sICovCisJdTMyIGNv bnRleHRfaWQ7CisKKwkvKiBQb2ludGVyIHRvIGRvb3JiZWxsIGNhY2hlbGluZS4gQlNwZWM6IDEx MTYgKi8KKwl1NjQgcF9kb29yYmVsbDsKKworCS8qIFdRIEhlYWQgQnl0ZSBPZmZzZXQgLSBDbGll bnQgbXVzdCBub3Qgd3JpdGUgaGVyZSAqLworCXUzMiBoZWFkX29mZnNldDsKKworCS8qIFdRIFRh aWwgQnl0ZSBPZmZzZXQgLSB1S2VybmVsIHdpbGwgbm90IHdyaXRlIGhlcmUgKi8KKwl1MzIgdGFp bF9vZmZzZXQ7CisKKwkvKiBXUSBFcnJvciBCeXRlIG9mZnNldCAqLworCXUzMiBlcnJvcl9vZmZz ZXRfYnl0ZTsKKworCS8qIFdRIHBWaXJ0IGJhc2UgYWRkcmVzcyBpbiBDbGllbnQuIEZvciB1c2Ug b25seSBieSBDbGllbnQgKi8KKwl1NjQgd3F2X2Jhc2VfYWRkcmVzczsKKworCS8qIFdRIFNpemUg aW4gQnl0ZXMgKi8KKwl1MzIgd3Ffc2l6ZV9ieXRlczsKKworCS8qIFdRIFN0YXR1cy4gUmVhZCBi eSBDbGllbnQuIFdyaXR0ZW4gYnkgdUtlcm5lbC9LTUQgKi8KKwllbnVtIGd1Y19xdWV1ZV9zdGF0 dXMgd3Ffc3RhdHVzOworCisJLyogQ29udGV4dCBwcmlvcml0eS4gUmVhZCBvbmx5IGJ5IENsaWVu dCAqLworCWVudW0gZ3VjX2NvbnRleHRfcHJpb3JpdHkgcHJpb3JpdHlfYXNzaWduZWQ7CisKKwl1 MzIgZnV0dXJlOworCisJc3RydWN0IGd1Y19lbmdpbmVfY2xhc3NfYml0X21hcCBxdWV1ZV9lbmdp bmVfZXJyb3I7CisKKwl1MzIgcmVzZXJ2ZWQwWzNdOworCisJLyogdUtlcm5lbCBzaWRlIHRyYWNr aW5nIGZvciBkZWJ1ZyAqLworCisJLyogV3JpdHRlbiBieSB1S2VybmVsIGF0IHRoZSB0aW1lIG9m IHBhcnNpbmcgYW5kIHN1Y2Nlc3NmdWwgcmVtb3ZhbAorCSAqIGZyb20gV1EgKGltcGxpZXMgcmlu ZyB0YWlsIHdhcyB1cGRhdGVkKQorCSAqLworCXUzMiB0b3RhbF93b3JrX2l0ZW1zX3BhcnNlZF9i eV9ndWM7CisKKwkvKiBXcml0dGVuIGJ5IHVLZXJuZWwgaWYgYSBXSSB3YXMgY29sbGFwc2VkIGlm IG5leHQgV0kgaXMgdGhlIHNhbWUKKwkgKiBMUkNBIChvcHRpbWl6YXRpb24gYXBwbGllcyBvbmx5 IHRvIFNlY3VyZS9LTUQgY29udGV4dHMpCisJICovCisJdTMyIHRvdGFsX3dvcmtfaXRlbXNfY29s bGFwc2VkX2J5X2d1YzsKKworCS8qIFRlbGxzIGlmIHRoZSBjb250ZXh0IGlzIGFmZmVjdGVkIGJ5 IEVuZ2luZSBSZXNldC4gVU1EIG5lZWRzIHRvCisJICogY2xlYXIgaXQgYWZ0ZXIgdGFraW5nIGFw cHJvcHJpYXRlIEFjdGlvbiAoVEJEKQorCSAqLworCXUzMiBpc19jb250ZXh0X2luX2VuZ2luZV9y ZXNldDsKKworCS8qIFdRIFNhbXBsZWQgdGFpbCBhdCBFbmdpbmUgUmVzZXQgVGltZS4gVmFsaWQg b25seSBpZgorCSAqIGlzX2NvbnRleHRfaW5fZW5naW5lX3Jlc2V0ID0gdHJ1ZQorCSAqLworCXUz MiBlbmdpbmVfcmVzZXRfc2FtcGxlZF93cV90YWlsOworCisJLyogVmFsaWQgZnJvbSBlbmdpbmUg cmVzZXQgdW50aWwgYWxsIHRoZSBhZmZlY3RlZCBXb3JrIEl0ZW1zIGFyZQorCSAqIHByb2Nlc3Nl ZAorCSAqLworCXUzMiBlbmdpbmVfcmVzZXRfc2FtcGxlZF93cV90YWlsX3ZhbGlkOworCisJdTMy IHJlc2VydmVkMVsxNV07Cit9OworCisvKiBXb3JrIEl0ZW0gZm9yIHN1Ym1pdHRpbmcgS01EIHdv cmtsb2FkcyBpbnRvIFdvcmsgUXVldWUgZm9yIEd1QyAqLworc3RydWN0IGd1Y19zY2hlZF93b3Jr X3F1ZXVlX2ttZF9lbGVtZW50X2luZm8geworCS8qIEV4ZWNsaXN0IGNvbnRleHQgZGVzY3JpcHRv cidzIGxvd2VyIERXLiBCU3BlYzogMTIyNTQgKi8KKwl1MzIgZWxlbWVudF9sb3dfZHc7CisJdW5p b24geworCQlzdHJ1Y3QgeworCQkJLyogU1cgQ29udGV4dCBJRC4gQlNwZWM6IDEyMjU0ICovCisJ CQl1MzIgc3dfY29udGV4dF9pbmRleCA6IDExOworCQkJLyogU1cgQ291bnRlci4gQlNwZWM6IDEy MjU0ICovCisJCQl1MzIgc3dfY29udGV4dF9jb3VudGVyIDogNjsKKwkJCS8qIElmIHRoaXMgd29y a2xvYWQgbmVlZHMgdG8gYmUgc3luY2VkIHByaW9yCisJCQkgKiB0byBzdWJtaXNzaW9uIHVzZSBj b250ZXh0X3N1Ym1pdF9zeW5jX3ZhbHVlIGFuZAorCQkJICogY29udGV4dF9zdWJtaXRfc3luY19h ZGRyZXNzCisJCQkgKi8KKwkJCXUzMiBuZWVkc19zeW5jIDogMTsKKwkJCS8qIFFXIEFsaWduZWQs IFRhaWxWYWx1ZSA8PSAyMDQ4CisJCQkgKiAoYWRkcmVzc2VzIDQgcGFnZXMgbWF4KQorCQkJICov CisJCQl1MzIgcmluZ190YWlsX3F3X2luZGV4IDogMTE7CisJCQl1MzIgOiAyOworCQkJLyogQml0 IHRvIGluZGljYXRlIGlmIFBPQ1MgbmVlZHMgdG8gYmUgaW4gRlJFRVpFIHN0YXRlCisJCQkgKiBm b3IgdGhpcyBXSSBzdWJtaXNzaW9uCisJCQkgKi8KKwkJCXUzMiB3aV9mcmVlemVfcG9jcyA6IDE7 CisJCX07CisJCXUzMiB2YWx1ZTsKKwl9IGVsZW1lbnRfaGlnaF9kdzsKK307CisKKy8qIFdvcmsg SXRlbSBpbnN0cnVjdGlvbiB0eXBlICovCitlbnVtIGd1Y19zY2hlZF9pbnN0cnVjdGlvbl90eXBl IHsKKwlHVUNfU0NIRURfSU5TVFJVQ1RJT05fQkFUQ0hfQlVGRkVSX1NUQVJUID0gMHgxLAorCUdV Q19TQ0hFRF9JTlNUUlVDVElPTl9HVUNfQ01EX1BTRVVETyA9IDB4MiwKKwlHVUNfU0NIRURfSU5T VFJVQ1RJT05fR1VDX0NNRF9LTUQgPSAweDMsCisJR1VDX1NDSEVEX0lOU1RSVUNUSU9OX0dVQ19D TURfTk9PUCA9IDB4NCwKKwlHVUNfU0NIRURfSU5TVFJVQ1RJT05fUkVTVU1FX0VOR0lORV9XUV9Q QVJTSU5HID0gMHg1LAorCUdVQ19TQ0hFRF9JTlNUUlVDVElPTl9JTlZBTElEID0gMHg2LAorfTsK KworLyogSGVhZGVyIGZvciBldmVyeSBXb3JrIEl0ZW0gcHV0IGluIHRoZSBXb3JrIFF1ZXVlICov CitzdHJ1Y3QgZ3VjX3NjaGVkX3dvcmtfcXVldWVfaXRlbV9oZWFkZXIgeworCXVuaW9uIHsKKwkJ c3RydWN0IHsKKwkJCS8qIE9uZSBvZiBlbnVtIGd1Y19zY2hlZF9pbnN0cnVjdGlvbl90eXBlICov CisJCQl1MzIgd29ya19pbnN0cnVjdGlvbl90eXBlIDogODsKKwkJCS8qIHN0cnVjdCBndWNfdGFy Z2V0X2VuZ2luZSAqLworCQkJdTMyIHRhcmdldF9lbmdpbmUgOiA4OworCQkJLyogTGVuZ3RoIGlu IG51bWJlciBvZiBkd29yZHMgZm9sbG93aW5nIHRoaXMgaGVhZGVyICovCisJCQl1MzIgY29tbWFu ZF9sZW5ndGhfZHdvcmRzIDogMTE7CisJCQl1MzIgOiA1OworCQl9OworCQl1MzIgdmFsdWU7CisJ fTsKK307CisKKy8qIFdvcmsgaXRlbSBmb3Igc3VibWl0dGluZyBLTUQgd29ya2xvYWRzIGludG8g d29yayBxdWV1ZSBmb3IgR3VDICovCitzdHJ1Y3QgZ3VjX3NjaGVkX3dvcmtfcXVldWVfaXRlbSB7 CisJc3RydWN0IGd1Y19zY2hlZF93b3JrX3F1ZXVlX2l0ZW1faGVhZGVyIGhlYWRlcjsKKwlzdHJ1 Y3QgZ3VjX3NjaGVkX3dvcmtfcXVldWVfa21kX2VsZW1lbnRfaW5mbyBrbWRfc3VibWl0X2VsZW1l bnRfaW5mbzsKKwkvKiBEZWJ1ZyBvbmx5ICovCisJdTMyIGZlbmNlX2lkOworfTsKKworc3RydWN0 IGttX2dlbjExX3Jlc3VtZV93b3JrX3F1ZXVlX3Byb2Nlc3NpbmdfaXRlbSB7CisJc3RydWN0IGd1 Y19zY2hlZF93b3JrX3F1ZXVlX2l0ZW0gaGVhZGVyOworfTsKKworI3ByYWdtYSBwYWNrKCkKKwor I2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfa21kX2lu dGVyZmFjZS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2ttZF9pbnRlcmZhY2Uu aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzY0M2FkCi0tLSAvZGV2L251 bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2ttZF9pbnRlcmZhY2UuaApA QCAtMCwwICsxLDg0NyBAQAorLyoKKyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKKyAq CisgKiBDb3B5cmlnaHQgwqkgMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisKKyNpZm5kZWYg X0lOVEVMX0dVQ19LTURfSU5URVJGQUNFX0hfCisjZGVmaW5lIF9JTlRFTF9HVUNfS01EX0lOVEVS RkFDRV9IXworCisjaW5jbHVkZSAiaW50ZWxfZ3VjX2NsaWVudF9pbnRlcmZhY2UuaCIKKworI3By YWdtYSBwYWNrKDEpCisKKy8qIE1heGltdW0gbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIEd1QyBD b250ZXh0IERlc2NyaXB0b3IgUG9vbC4gVXBwZXIgbGltaXQKKyAqIHJlc3RyaWN0ZWQgYnkgbnVt YmVyIG9mICdTVyBDb250ZXh0IElEJyBiaXRzIGluIHRoZSBDb250ZXh0IERlc2NyaXB0b3IKKyAq IChCU3BlYzogMTIyNTQpIG1pbnVzIHNvbWUgcmVzZXJ2ZWQgZW50cmllcworICovCisjZGVmaW5l IEdVQ19NQVhfR1VDX0NPTlRFWFRfREVTQ1JJUFRPUl9FTlRSSUVTCTIwMzIKKworLyogTGltaXRl ZCBieSAnU1cgQ291bnRlcicgYml0cy4gQlNwZWM6IDEyMjU0ICovCisjZGVmaW5lIEdVQ19NQVhf U1dfQ09OVEVYVF9DT1VOVEVSCTY0CisKKy8qIE1heGltdW0gZGVwdGggb2YgSFcgRXhlY2xpc3Qg U3VibWlzc2lvbiBRdWV1ZS4gQlNwZWM6IDE4OTM0ICovCisjZGVmaW5lIEdVQ19NQVhfU1VCTUlT U0lPTl9RX0RFUFRICTgKKworLyogTWluaW11bSBkZXB0aCBvZiBIVyBFeGVjbGlzdCBTdWJtaXNz aW9uIFF1ZXVlLiBCU3BlYzogMTg5MzQgKi8KKyNkZWZpbmUgR1VDX01JTl9TVUJNSVNTSU9OX1Ff REVQVEgJMgorCisvKiBEZWZhdWx0IGRlcHRoIG9mIEhXIEV4ZWNsaXN0IFN1Ym1pc3Npb24gUXVl dWUuIEJTcGVjOiAxODkzNCAqLworI2RlZmluZSBHVUNfREVGQVVMVF9FTEVNX0lOX1NVQk1JU1NJ T05fUQlHVUNfTUlOX1NVQk1JU1NJT05fUV9ERVBUSAorCisvKiAxIENhY2hlbGluZSA9IDY0IEJ5 dGVzICovCisjZGVmaW5lIEdVQ19ETUFfQ0FDSEVMSU5FX1NJWkVfQllURVMJNjQKKworLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKiogRW5naW5lcyBhbmQg U3lzdGVtIEluZm8gKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KKworLyogR1Qgc3lzdGVtIGluZm8gcGFzc2VkIGRvd24gYnkgS01EIGFmdGVyIHJlYWRp bmcgZnVzZSByZWdpc3RlcnMgKi8KK3N0cnVjdCBndWNfZ3Rfc3lzdGVtX2luZm8geworCXUzMiBz bGljZV9lbmFibGVkOworCXUzMiByY3NfZW5hYmxlZDsKKwl1MzIgZnV0dXJlMDsKKwl1MzIgYmNz X2VuYWJsZWQ7CisJdTMyIHZkX2JveF9lbmFibGVfbWFzazsKKwl1MzIgZnV0dXJlMTsKKwl1MzIg dmVfYm94X2VuYWJsZV9tYXNrOworCXUzMiBmdXR1cmUyOworCXUzMiByZXNlcnZlZFs4XTsKK307 CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKiBHdUMg Q29udGV4dCBEZXNjcmlwdG9yIFBvb2wgKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCisKKy8qIFN0YXRlIG9mIHRoZSBjb250ZXh0ICovCitzdHJ1Y3QgZ3Vj X2VuZ2luZV9jb250ZXh0X3N0YXRlIHsKKwl1bmlvbiB7CisJCXN0cnVjdCB7CisJCQl1MzIgd2Fp dF9mb3JfZGlzcGxheV9ldmVudCA6IDE7CisJCQl1MzIgd2FpdF9mb3Jfc2VtYXBob3JlIDogMTsK KwkJCXUzMiByZV9lbnF1ZXVlX3RvX3N1Ym1pdF9xdWV1ZSA6IDE7CisJCQl1MzIgOiAyOTsKKwkJ fTsKKwkJdTMyIHdhaXRfdmFsdWU7CisJfTsKKwl1MzIgcmVzZXJ2ZWQ7Cit9OworCisvKiBUbyBk ZXNjcmliZSBzdGF0dXMgYW5kIGFjY2VzcyBpbmZvcm1hdGlvbiBvZiBjdXJyZW50IHJpbmcgYnVm ZmVyIGZvcgorICogYSBnaXZlbiBndWNfZXhlY2xpc3RfY29udGV4dAorICovCitzdHJ1Y3QgZ3Vj X2V4ZWNsaXN0X3JpbmdfYnVmZmVyIHsKKwl1MzIgcF9leGVjbGlzdF9yaW5nX2NvbnRleHQ7CisK KwkvKiB1S2VybmVsIGFkZHJlc3MgZm9yIHRoZSByaW5nIGJ1ZmZlciAqLworCXUzMiBwX3Jpbmdf YmVnaW47CisJLyogdUtlcm5lbCBmaW5hbCBieXRlIGFkZHJlc3MgdGhhdCBpcyB2YWxpZCBmb3Ig dGhpcyByaW5nICovCisJdTMyIHBfcmluZ19lbmQ7CisJLyogdUtlcm5lbCBhZGRyZXNzIGZvciBu ZXh0IGxvY2F0aW9uIGluIHJpbmcgKi8KKwl1MzIgcF9uZXh0X2ZyZWVfbG9jYXRpb247CisKKwkv KiBMYXN0IHZhbHVlIHdyaXR0ZW4gYnkgc29mdHdhcmUgZm9yIHRyYWNraW5nIChqdXN0IGluIGNh c2UKKwkgKiBIVyBjb3JydXB0cyB0aGUgdGFpbCBpbiBpdHMgY29udGV4dCkKKwkgKi8KKwl1MzIg Y3VycmVudF90YWlsX3BvaW50ZXJfdmFsdWU7Cit9OworCisvKiBUaGUgZW50aXJlIGV4ZWNsaXN0 IGNvbnRleHQgaW5jbHVkaW5nIHNvZnR3YXJlIGFuZCBIVyBpbmZvcm1hdGlvbiAqLworc3RydWN0 IGd1Y19leGVjbGlzdF9jb250ZXh0IHsKKwkvKiAyIERXcyBvZiBDb250ZXh0IERlc2NyaXB0b3Iu IEJTcGVjOiAxMjI1NCAqLworCXUzMiBod19jb250ZXh0X2Rlc2NfZHdbMl07CisJdTMyIHJlc2Vy dmVkMDsKKworCXN0cnVjdCBndWNfZXhlY2xpc3RfcmluZ19idWZmZXIgcmluZ19idWZmZXJfb2Jq OworCXN0cnVjdCBndWNfZW5naW5lX2NvbnRleHRfc3RhdGUgc3RhdGU7CisKKwkvKiBGbGFnIHRv IHRyYWNrIGlmIGV4ZWNsaXN0IGNvbnRleHQgZXhpc3RzIGluIHN1Ym1pdCBxdWV1ZQorCSAqIFZh bGlkIHZhbHVlcyAwIG9yIDEKKwkgKi8KKwl1MzIgaXNfcHJlc2VudF9pbl9zcTsKKworCS8qIElm IG5lZWRzX3N5bmMgaXMgc2V0IGluIFdJLCBzeW5jICpjb250ZXh0X3N1Ym1pdF9zeW5jX2FkZHJl c3MgPT0KKwkgKiBjb250ZXh0X3N1Ym1pdF9zeW5jX3ZhbHVlIGJlZm9yZSBzdWJtaXR0aW5nIHRo ZSBjb250ZXh0IHRvIEhXCisJICovCisJdTMyIGNvbnRleHRfc3VibWl0X3N5bmNfdmFsdWU7CisJ dTMyIGNvbnRleHRfc3VibWl0X3N5bmNfYWRkcmVzczsKKworCS8qIFJlc2VydmVkIGZvciBTTFBD IGhpbnRzIChjdXJyZW50bHkgdXNlZCBmb3IgR1QgdGhyb3R0bGUgbW9kZXMpICovCisJdTMyIHNs cGNfY29udGV4dF9oaW50czsKKworCXUzMiByZXNlcnZlZDFbNF07Cit9OworCisvKiBCaXRtYXAg dG8gdHJhY2sgYWxsb2NhdGVkIGFuZCBmcmVlIGNvbnRleHRzCisgKiBjb250ZXh0X2FsbG9jdF9i aXRfbWFwW25dID0gMDsgQ29udGV4dCAnbicgZnJlZQorICogY29udGV4dF9hbGxvY3RfYml0X21h cFtuXSA9IDE7IENvbnRleHQgJ24nIGFsbG9jYXRlZAorICovCitzdHJ1Y3QgZ3VjX2V4ZWNsaXN0 X2NvbnRleHRfYWxsb2NfbWFwIHsKKwkvKiBCaXQgbWFwIGZvciBleGVjbGlzdCBjb250ZXh0cywg Yml0cyAwIHRvCisJICogKEdVQ19NQVhfU1dfQ09OVEVYVF9DT1VOVEVSIC0gMSkgYXJlIHZhbGlk CisJICovCisJdTY0IGNvbnRleHRfYWxsb2N0X2JpdF9tYXA7CisJdTMyIHJlc2VydmVkOworfTsK KworZW51bSBndWNfY29udGV4dF9kZXNjcmlwdG9yX3R5cGUgeworCS8qIFdvcmsgd2lsbCBiZSBz dWJtaXR0ZWQgdGhyb3VnaCBkb29yYmVsbCBhbmQgV1Egb2YgYQorCSAqIFByb3h5IFN1Ym1pc3Np b24gZGVzY3JpcHRvciBpbiB0aGUgY29udGV4dCBkZXNjIHBvb2wKKwkgKi8KKwlHVUNfQ09OVEVY VF9ERVNDUklQVE9SX1RZUEVfUFJPWFlfRU5UUlkgPSAweDAwLAorCisJLyogV29yayB3aWxsIGJl IHN1Ym1pdHRlZCB1c2luZyBkb29yYmVsbCBhbmQgd29ya3F1ZXVlCisJICogb2YgdGhpcyBkZXNj cmlwdG9yIG9uIGJlaGFsZiBvZiBvdGhlciBwcm94eSBFbnRyaWVzCisJICogaW4gdGhlIGNvbnRl eHQgZGVzYyBwb29sCisJICovCisJR1VDX0NPTlRFWFRfREVTQ1JJUFRPUl9UWVBFX1BST1hZX1NV Qk1JU1NJT04gPSAweDAxLAorCisJLyogV29yayBpcyBzdWJtaXR0ZWQgdGhyb3VnaCBpdHMgb3du IGRvb3JiZWxsIGFuZCBXUSAqLworCUdVQ19DT05URVhUX0RFU0NSSVBUT1JfVFlQRV9SRUFMID0g MHgwMiwKK307CisKKy8qIENQVSwgR3JhcGhpY3MgYW5kIHBoeXNpY2FsIGFkZHJlc3NlcyAqLwor c3RydWN0IGd1Y19hZGRyZXNzIHsKKwkvKiBDcHUgYWRkcmVzcyAodmlydHVhbCkgKi8KKwl1NjQg cF9jcHVfYWRkcmVzczsKKwkvKiB1S2VybmVsIGFkZHJlc3MgKGdmeCkgKi8KKwl1MzIgcF91a19h ZGRyZXNzOworCS8qIFBoeXNpY2FsIGFkZHJlc3MgKi8KKwl1NjQgcF9hZGRyZXNzX2dwYTsKK307 CisKKy8qIENvbnRleHQgZGVzY3JpcHRvciBmb3IgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHVLZXJu ZWwgYW5kIEtNRCAqLworc3RydWN0IGd1Y19jb250ZXh0X2Rlc2NyaXB0b3IgeworCS8qIENQVSBi YWNrIHBvaW50ZXIgZm9yIGdlbmVyYWwgS01EIHVzYWdlICovCisJdTY0IGFzc2lnbmVkX2d1Y19n cHVfZGVzYzsKKworCS8qIEluZGV4IGluIHRoZSBwb29sICovCisJdTMyIGd1Y19jb250ZXh0X2Rl c2NfcG9vbF9pbmRleDsKKworCS8qIEZvciBhIFByb3h5IEVudHJ5LCB0aGlzIGlzIHRoZSBpbmRl eCBvZiBpdCdzIHByb3h5IHN1Ym1pc3Npb24gZW50cnkuCisJICogRm9yIG90aGVycyB0aGlzIGlz IHRoZSBzYW1lIGFzIGd1Y19jb250ZXh0X2Rlc2NfcG9vbF9pbmRleCBhYm92ZQorCSAqLworCXUz MiBwcm94eV9zdWJtaXNzaW9uX2d1Y19jb250ZXh0X2Rlc2NfcG9vbF9pbmRleDsKKworCS8qIFRo ZSBkb29yYmVsbCBwYWdlJ3MgdHJpZ2dlciBjYWNoZWxpbmUgKi8KKwlzdHJ1Y3QgZ3VjX2FkZHJl c3MgZG9vcmJlbGxfdHJpZ2dlcl9hZGRyZXNzOworCisJLyogQXNzaWduZWQgZG9vcmJlbGwgKi8K Kwl1MzIgZG9vcmJlbGxfaWQ7CisKKwkvKiBBcnJheSBvZiBleGVjbGlzdCBjb250ZXh0cyAqLwor CXN0cnVjdCBndWNfZXhlY2xpc3RfY29udGV4dAorCQl1a19leGVjX2xpc3RfY29udGV4dFtHVUNf TUFYX1NDSEVEVUxBQkxFX0VOR0lORV9DTEFTU10KKwkJCQkgICAgW0dVQ19NQVhfU1dfQ09OVEVY VF9DT1VOVEVSXTsKKworCS8qIEFsbG9jYXRpb24gbWFwIHRvIHRyYWNrIHdoaWNoIGV4ZWNsaXN0 IGNvbnRleHRzIGFyZSBpbiB1c2UgKi8KKwlzdHJ1Y3QgZ3VjX2V4ZWNsaXN0X2NvbnRleHRfYWxs b2NfbWFwCisJCXVrX2V4ZWNsaXN0X2NvbnRleHRfYWxsb2NfbWFwW0dVQ19NQVhfU0NIRURVTEFC TEVfRU5HSU5FX0NMQVNTXTsKKworCS8qIE51bWJlciBvZiBhY3RpdmUgZXhlY2xpc3QgY29udGV4 dHMgKi8KKwl1MzIgdWtfZXhlY2xpc3RfY29udGV4dF9hbGxvY19jb3VudDsKKworCS8qIE9wdGlt aXphdGlvbiB0byByZWR1Y2UgdGhlIG1heGltdW0gZXhlY2xpc3QgY29udGV4dCBjb3VudCBmb3IK KwkgKiB0aGlzIEd1QyBjb250ZXh0IGRlc2NyaXB0b3IuIFNob3VsZCBiZSBsZXNzIHRoYW4KKwkg KiBHVUNfTUFYX1NXX0NPTlRFWFRfQ09VTlRFUgorCSAqLworCXUzMiBtYXhfdWtfZXhlY2xpc3Rf Y29udGV4dF9wZXJfZW5naW5lX2NsYXNzOworCisJdW5pb24geworCQlzdHJ1Y3QgeworCQkJLyog SXMgdGhpcyBjb250ZXh0IGFjdGl2ZWx5IGFzc2lnbmVkIHRvIGFuIGFwcD8gKi8KKwkJCXUzMiBp c19jb250ZXh0X2FjdGl2ZSA6IDE7CisKKwkJCS8qIElzIHRoaXMgYSBwcm94eSBlbnRyeSwgcHJp bmNpcGFsIG9yIHJlYWwgZW50cnk/ICovCisJCQl1MzIgY29udGV4dF90eXBlIDogMjsKKworCQkJ dTMyIGlzX2ttZF9jcmVhdGVkX2NvbnRleHQgOiAxOworCisJCQkvKiBDb250ZXh0IHdhcyBwYXJ0 IG9mIGFuIGVuZ2luZSByZXNldC4gS01EIG11c3QgdGFrZQorCQkJICogYXBwcm9wcmlhdGUgYWN0 aW9uICh0aGlzIGNvbnRleHQgd2lsbCBub3QgYmUKKwkJCSAqIHJlc3VibWl0dGVkIHVudGlsIHRo aXMgYml0IGlzIGNsZWFyZWQpCisJCQkgKi8KKwkJCXUzMiBpc19jb250ZXh0X2VuZ19yZXNldCA6 IDE7CisKKwkJCSAvKiBTZXQgaXQgdG8gMSB0byBwcmV2ZW50IG90aGVyIGNvZGUgcGF0aHMgdG8g ZG8gd29yaworCQkJICAqIHF1ZXVlIHByb2Nlc3NpbmcgYXMgd2UgdXNlIHNhbXBsZWQgdmFsdWVz IGZvciBXUQorCQkJICAqIHByb2Nlc3NpbmcuIEFsbG93aW5nIG11bHRpcGxlIGNvZGUgcGF0aHMg dG8gZG8gV1EKKwkJCSAgKiBwcm9jZXNzaW5nIHdpbGwgY2F1c2Ugc2FtZSB3b3JrbG9hZCB0byBl eGVjdXRlCisJCQkgICogbXVsdGlwbGUgdGltZXMKKwkJCSAgKi8KKwkJCXUzMiB3cV9wcm9jZXNz aW5nX2xvY2tlZCA6IDE7CisKKwkJCXUzMiBmdXR1cmUgOiAxOworCisJCQkvKiBJZiBzZXQgdG8g MSwgdGhlIGNvbnRleHQgaXMgdGVybWluYXRlZCBieSBHdUMuIEFsbAorCQkJICogdGhlIHBlbmRp bmcgd29yayBpcyBkcm9wcGVkLCBpdHMgZG9vcmJlbGwgaXMgZXZpY3RlZAorCQkJICogYW5kIGV2 ZW50dWFsbHkgdGhpcyBjb250ZXh0IHdpbGwgYmUgcmVtb3ZlZAorCQkJICovCisJCQl1MzIgaXNf Y29udGV4dF90ZXJtaW5hdGVkIDogMTsKKworCQkJdTMyIDogMjQ7CisJCX07CisJCXUzMiBib29s X3ZhbHVlczsKKwl9OworCisJZW51bSBndWNfY29udGV4dF9wcmlvcml0eSBwcmlvcml0eTsKKwor CS8qIFdRIHRhaWwgU2FtcGxlZCBhbmQgc2V0IGR1cmluZyBkb29yYmVsbCBJU1IgaGFuZGxlciAq LworCXUzMiB3cV9zYW1wbGVkX3RhaWxfb2Zmc2V0OworCisJLyogR2xvYmFsIChhY3Jvc3MgYWxs IHN1Ym1pdCBxdWV1ZXMpLiBGb3IgcHJpbmNpcGFscworCSAqIChwcm94eSBlbnRyeSksIHRoaXMg d2lsbCBiZSB6ZXJvIGFuZCB0cnVlIGNvdW50CisJICogd2lsbCBiZSByZWZsZWN0ZWQgaW4gaXRz IHByb3h5IChwcm94eSBzdWJtaXNzaW9uKQorCSAqLworCXUzMiB0b3RhbF9zdWJtaXRfcXVldWVf ZW5xdWV1ZXM7CisKKwkvKiBQb2ludGVyIHRvIHN0cnVjdCBndWNfc2NoZWRfcHJvY2Vzc19kZXNj cmlwdG9yICovCisJdTMyIHBfcHJvY2Vzc19kZXNjcmlwdG9yOworCisJLyogU2VjdXJlIGNvcHkg b2YgV1EgYWRkcmVzcyBhbmQgc2l6ZS4gdUtlcm5lbCBjYW4gbm90CisJICogdHJ1c3QgZGF0YSBp biBzdHJ1Y3QgZ3VjX3NjaGVkX3Byb2Nlc3NfZGVzY3JpcHRvcgorCSAqLworCXUzMiBwX3dvcmtf cXVldWVfYWRkcmVzczsKKwl1MzIgd29ya19xdWV1ZV9zaXplX2J5dGVzOworCisJdTMyIGZ1dHVy ZTA7CisJdTMyIGZ1dHVyZTE7CisKKwlzdHJ1Y3QgZ3VjX2VuZ2luZV9jbGFzc19iaXRfbWFwIHF1 ZXVlX2VuZ2luZV9lcnJvcjsKKworCXUzMiByZXNlcnZlZDBbM107CisJdTY0IHJlc2VydmVkMVsx Ml07Cit9OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioq KioqKiogSG9zdDJHdUMgYW5kIEd1QzJIb3N0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKgor ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworCisvKiBIb3N0IDIgR3VDIGFjdGlvbnMgKi8KK2VudW0g Z3VjX2hvc3QyZ3VjX2FjdGlvbiB7CisJR1VDX0hPU1QyR1VDX0FDVElPTl9ERUZBVUxUID0gMHgw LAorCUdVQ19IT1NUMkdVQ19BQ1RJT05fUkVRVUVTVF9JTklUX0RPTkVfSU5URVJSVVBUID0gMHgx LAorCUdVQ19IT1NUMkdVQ19BQ1RJT05fUkVRVUVTVF9QUkVFTVBUSU9OID0gMHgyLAorCUdVQ19I T1NUMkdVQ19BQ1RJT05fUkVRVUVTVF9FTkdJTkVfUkVTRVQgPSAweDMsCisJR1VDX0hPU1QyR1VD X0FDVElPTl9QQVVTRV9TQ0hFRFVMSU5HID0gMHg0LAorCUdVQ19IT1NUMkdVQ19BQ1RJT05fUkVT VU1FX1NDSEVEVUxJTkcgPSAweDUsCisKKwlHVUNfSE9TVDJHVUNfQUNUSU9OX0FMTE9DQVRFX0RP T1JCRUxMID0gMHgxMCwKKwlHVUNfSE9TVDJHVUNfQUNUSU9OX0RFQUxMT0NBVEVfRE9PUkJFTEwg PSAweDIwLAorCUdVQ19IT1NUMkdVQ19BQ1RJT05fTE9HX0JVRkZFUl9GSUxFX0ZMVVNIX0NPTVBM RVRFID0gMHgzMCwKKwlHVUNfSE9TVDJHVUNfQUNUSU9OX0VOQUJMRV9MT0dHSU5HID0gMHg0MCwK KwlHVUNfSE9TVDJHVUNfQUNUSU9OX0NBQ0hFX0NSQVNIX0RVTVAgPSAweDIwMCwKKwlHVUNfSE9T VDJHVUNfQUNUSU9OX0RFQlVHX1JJTkdfREIgPSAweDMwMCwKKwlHVUNfSE9TVDJHVUNfQUNUSU9O X1BFUkZPUk1fR0xPQkFMX0RFQlVHX0FDVElPTlMgPSAweDMwMSwKKwlHVUNfSE9TVDJHVUNfQUNU SU9OX0ZPUkNFX0xPR0JVRkZFUkZMVVNIID0gMHgzMDIsCisJR1VDX0hPU1QyR1VDX0FDVElPTl9M T0dfVkVSQk9TSVRZX0xPR09VVFBVVF9TRUxFQ1QgPSAweDQwMCwKKwlHVUNfSE9TVDJHVUNfQUNU SU9OX0VOVEVSX1NfU1RBVEUgPSAweDUwMSwKKwlHVUNfSE9TVDJHVUNfQUNUSU9OX0VYSVRfU19T VEFURSA9IDB4NTAyLAorCUdVQ19IT1NUMkdVQ19BQ1RJT05fU0VUX1NDSEVEVUxJTkdfTU9ERSA9 IDB4NTA0LAorCUdVQ19IT1NUMkdVQ19BQ1RJT05fU0NIRURfUE9MSUNZX0NIQU5HRSA9IDB4NTA2 LAorCisJLyogQWN0aW9ucyBmb3IgUG93ciBDb25zZXJ2YXRpb24gOiAweDMwMDAtMHgzRkZGICov CisJR1VDX0hPU1QyR1VDX0FDVElPTl9QQ19TTFBNX1JFUVVFU1QgPSAweDMwMDMsCisJR1VDX0hP U1QyR1VDX0FDVElPTl9QQ19TRVRVUF9HVUNSQyA9IDB4MzAwNCwKKwlHVUNfSE9TVDJHVUNfQUNU SU9OX1NBTVBMRV9GT1JDRVdBS0VfRkVBVFVSRV9SRUdJU1RFUiA9IDB4MzAwNSwKKwlHVUNfSE9T VDJHVUNfQUNUSU9OX1NFVFVQX0dVQ1JDID0gMHgzMDA2LAorCisJR1VDX0hPU1QyR1VDX0FDVElP Tl9BVVRIRU5USUNBVEVfSFVDID0gMHg0MDAwLAorCisJR1VDX0hPU1QyR1VDX0FDVElPTl9SRUdJ U1RFUl9DT01NQU5EX1RSQU5TUE9SVF9CVUZGRVIgPSAweDQ1MDUsCisJR1VDX0hPU1QyR1VDX0FD VElPTl9ERVJFR0lTVEVSX0NPTU1BTkRfVFJBTlNQT1JUX0JVRkZFUiA9IDB4NDUwNiwKKworCUdV Q19IT1NUMkdVQ19BQ1RJT05fTUFYID0gMHhGRkZGCit9OworCitlbnVtIGd1Y19ob3N0Mmd1Y19y ZXNwb25zZV9zdGF0dXMgeworCUdVQ19IT1NUMkdVQ19SRVNQT05TRV9TVEFUVVNfU1VDQ0VTUyA9 IDB4MCwKKwlHVUNfSE9TVDJHVUNfUkVTUE9OU0VfU1RBVFVTX1VOS05PV05fQUNUSU9OID0gMHgz MCwKKwlHVUNfSE9TVDJHVUNfUkVTUE9OU0VfU1RBVFVTX0xPR19IT1NUX0FERFJFU1NfTk9UX1ZB TElEID0gMHg4MCwKKwlHVUNfSE9TVDJHVUNfUkVTUE9OU0VfU1RBVFVTX0dFTkVSSUNfRkFJTCA9 IDB4RjAwMCwKK307CisKK2VudW0geworCS8qIEhvc3Qgb3JpZ2luYXRpbmcgdHlwZXMgKi8KKwlH VUNfTVNHX1RZUEVfSE9TVDJHVUNfUkVRVUVTVCA9IDB4MCwKKworCS8qIEd1QyBvcmlnaW5hdGlu ZyB0eXBlcyAqLworCUdVQ19NU0dfVFlQRV9IT1NUMkdVQ19SRVNQT05TRSA9IDB4RiwKK30gR1VD X0dVQ19NU0dfVFlQRTsKKworLyogVGhpcyBzdHJ1Y3R1cmUgcmVwcmVzZW50cyB0aGUgdmFyaW91 cyBmb3JtYXRzIG9mIHZhbHVlcyBwdXQgaW4KKyAqIFNPRlRfU0NSQVRDSF8wLiBUaGUgIlR5cGUi IGZpZWxkIGlzIHRvIGRldGVybWluZSB3aGljaCByZWdpc3RlcgorICogZGVmaW5pdGlvbiB0byB1 c2UsIHNvIGl0IG11c3QgYmUgY29tbW9uIGFtb25nIGFsbCB1bmlvbmVkCisgKiBzdHJ1Y3RzLgor ICovCitzdHJ1Y3QgZ3VjX21zZ19mb3JtYXQgeworCXVuaW9uIHsKKwkJc3RydWN0IHsKKwkJCXUz MiBhY3Rpb24gOiAxNjsgLyogZW51bSBndWNfaG9zdDJndWNfYWN0aW9uICovCisJCQl1MzIgcmVz ZXJ2ZWQgOiAxMjsgLyogTUJaICovCisJCQl1MzIgdHlwZSA6IDQ7IC8qIEdVQ19NU0dfVFlQRV9I T1NUMkdVQ19SRVFVRVNUICovCisJCX0gaG9zdDJndWNfYWN0aW9uOworCisJCXN0cnVjdCB7CisJ CQl1MzIgc3RhdHVzIDogMTY7IC8qIGVudW0gZ3VjX2hvc3QyZ3VjX3Jlc3BvbnNlX3N0YXR1cyAq LworCQkJdTMyIHJldHVybl9kYXRhIDogMTI7CisJCQl1MzIgdHlwZSA6IDQ7IC8qIEdVQ19NU0df VFlQRV9IT1NUMkdVQ19SRVNQT05TRSAqLworCQl9IGhvc3QyZ3VjX3Jlc3BvbnNlOworCisJCXUz MiBkd29yZF92YWx1ZTsKKwl9OworfTsKKworI2RlZmluZSBHVUNfTUFLRV9IT1NUMkdVQ19SRVNQ T05TRShfc3RhdHVzLCBfcmV0dXJuX2RhdGEpCVwKKwkoKEdVQ19NU0dfVFlQRV9IT1NUMkdVQ19S RVNQT05TRSA8PCAyOCkgfAkJXAorCSgoX3JldHVybl9kYXRhICYgMHhGRkYpIDw8IDE2KSB8CQkJ XAorCShfc3RhdHVzICYgMHhGRkZGKSkKKyNkZWZpbmUgR1VDX01BS0VfSE9TVDJHVUNfU1RBVFVT KGEpIChHVUNfTUFLRV9IT1NUMkdVQ19SRVNQT05TRShhLCAwKSkKKworZW51bSBndWNfY21kX3Ry YW5zcG9ydF9idWZmZXJfdHlwZSB7CisJR1VDX0NNRF9UUkFOU1BPUlRfQlVGRkVSX0hPU1QyR1VD ID0gMHgwMCwKKwlHVUNfQ01EX1RSQU5TUE9SVF9CVUZGRVJfR1VDMkhPU1QgPSAweDAxLAorCUdV Q19DTURfVFJBTlNQT1JUX0JVRkZFUl9NQVhfVFlQRSA9IDB4MDIsCit9OworCitzdHJ1Y3QgZ3Vj X2NtZF90cmFuc3BvcnRfYnVmZmVyX2Rlc2MgeworCXUzMiBidWZmZXJfYmVnaW5fZ2Z4X2FkZHJl c3M7CisJdTY0IGJ1ZmZlcl9iZWdpbl92aXJ0dWFsX2FkZHJlc3M7CisJdTMyIGJ1ZmZlcl9zaXpl X2luX2J5dGVzOworCS8qIEd1QyB1S2VybmVsIHVwZGF0ZXMgdGhpcyAqLworCXUzMiBoZWFkX29m ZnNldDsKKwkvKiBHdUMgY2xpZW50IHVwZGF0ZXMgdGhpcyAqLworCXUzMiB0YWlsX29mZnNldDsK Kwl1MzIgaXNfaW5fZXJyb3I7CisJLyogQSBEVyBwcm92aWRlZCBieSBIMkcgaXRlbSB0aGF0IHdh cyByZXF1ZXN0ZWQgdG8gYmUgd3JpdHRlbiAqLworCXUzMiBmZW5jZV9yZXBvcnRfZHc7CisJLyog U3RhdHVzIGFzc29jaWF0ZWQgd2l0aCBhYm92ZSBmZW5jZV9yZXBvcnRfZHcgKi8KKwl1MzIgc3Rh dHVzX3JlcG9ydF9kdzsKKwkvKiBJRCBhc3NvY2lhdGVkIHdpdGggdGhpcyBidWZmZXIgKGFzc2ln bmVkIGJ5IEd1QyBtYXN0ZXIpICovCisJdTMyIGNsaWVudF9pZDsKKwkvKiBVc2VkICYgc2V0IGJ5 IHRoZSBjbGllbnQgZm9yIGZ1cnRoZXIgdHJhY2tpbmcgb2YgaW50ZXJuYWwgY2xpZW50cyAqLwor CXUzMiBjbGllbnRfc3ViX3RyYWNraW5nX2lkOworCXUzMiByZXNlcnZlZFs1XTsKK307CisKKy8q IFBlciBjbGllbnQgY29tbWFuZCB0cmFuc3BvcnQgYnVmZmVyIGFsbG9jYXRlZCBieSBHdUMgbWFz dGVyICovCitzdHJ1Y3QgZ3VjX21hc3Rlcl9jbWRfdHJhbnNwb3J0X2J1ZmZlcl9hbGxvYyB7CisJ LyogVGhpcyBpcyB0aGUgY29weSB0aGF0IEd1QyB0cnVzdHMgKi8KKwlzdHJ1Y3QgZ3VjX2NtZF90 cmFuc3BvcnRfYnVmZmVyX2Rlc2MgYnVmZmVyX2Rlc2M7CisJdTMyIGZ1dHVyZTsKKwl1NjQgcmVz ZXJ2ZWQwOworCXUzMiB1c2FnZV9zcGVjaWFsX2luZm87CisJdTMyIHZhbGlkOworCXUzMiBhc3Nv Y2lhdGVkX2cyaF9pbmRleDsKKwl1MzIgcmVzZXJ2ZWQxOworfTsKKworLyogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEhvc3QgMiBHdUMgV29yayBJdGVtCisgKiBWLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1W CisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCisgKiAqICAgICAgICAgICAgICAgICAgICogICAgRFcwLyAg ICogICAgICAgICAgICogICAgICAgICAgICAgICAqICAgICAgICAgICAqCisgKiAqIEgyRyBJdGVt IEhlYWRlciAgICogIFJldHVybkRXICogIERXMSAgICAgICogICAgICAuLi4gICAgICAqICBEV24g ICAgICAqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworLyogQ29tbWFuZCBidWZmZXIgaGVh ZGVyICovCitzdHJ1Y3QgZ3VjX2NtZF9idWZmZXJfaXRlbV9oZWFkZXIgeworCXVuaW9uIHsKKwkJ c3RydWN0IHsKKwkJCS8qIE51bWJlciBvZiBkd29yZHMgdGhhdCBhcmUgcGFyYW1ldGVycyBvZiB0 aGlzCisJCQkgKiBIb3N0Mkd1QyBhY3Rpb24uIE1heCBvZiAzMS4gRS5nLjogaWYgdGhlcmUgYXJl IDIgRFdzCisJCQkgKiBmb2xsb3dpbmcgdGhpcyBoZWFkZXIsIHRoaXMgZmllbGQgaXMgc2V0IHRv IDIKKwkJCSAqLworCQkJdTMyIG51bV9kd29yZHMgOiA1OworCisJCQl1MzIgOiAzOworCisJCQkv KiBUaGUgdUtlcm5lbCB3aWxsIHdyaXRlIHRoZSB2YWx1ZSBmcm9tIERXMCAoYWthCisJCQkgKiBS ZXR1cm5EVykgdG8gZmVuY2VfcmVwb3J0X2R3IGluIHN0cnVjdAorCQkJICogZ3VjX2NtZF90cmFu c3BvcnRfYnVmZmVyX2Rlc2MKKwkJCSAqLworCQkJdTMyIHdyaXRlX2ZlbmNlX2Zyb21fZHcwX3Rv X2Rlc2NyaXB0b3IgOiAxOworCisJCQkvKiBXcml0ZSB0aGUgc3RhdHVzIG9mIHRoZSBhY3Rpb24g dG8gRFcwIGZvbGxvd2luZyB0aGlzCisJCQkgKiBoZWFkZXIKKwkJCSAqLworCQkJdTMyIHdyaXRl X3N0YXR1c190b19kdzAgOiAxOworCisJCQkvKiBTZW5kIGEgR3VDMkhvc3Qgd2l0aCBTdGF0dXMg b2YgdGhlIGFjdGlvbiBhbmQgdGhlCisJCQkgKiBmZW5jZSBJRCBmb3VuZCBpbiBEVzAgdmlhIHRo ZSBidWZmZXIgdXNlZCBmb3IgR3VDIHRvCisJCQkgKiBIb3N0IGNvbW11bmljYXRpb24KKwkJCSAq LworCQkJdTMyIHNlbmRfc3RhdHVzX3dpdGhfZHcwX3ZpYV9ndWNfdG9faG9zdCA6IDE7CisKKwkJ CXUzMiA6IDU7CisKKwkJCS8qICBUaGlzIGlzIHRoZSB2YWx1ZSBvZiB0aGUgZW51bSBndWNfaG9z dDJndWNfYWN0aW9uCisJCQkgKiB0aGF0IG5lZWRzIHRvIGJlIGRvbmUgYnkgdGhlIHVLZXJuZWwK KwkJCSAqLworCQkJdTMyIGhvc3QyZ3VjX2FjdGlvbiA6IDE2OworCQl9IGgyZ19jbWRfYnVmZmVy X2l0ZW1faGVhZGVyOworCisJCXN0cnVjdCB7CisJCQkvKiBOdW1iZXIgb2YgZHdvcmRzIHRoYXQg YXJlIHBhcmFtZXRlcnMgb2YgdGhpcyBHdUMySG9zdAorCQkJICogYWN0aW9uCisJCQkgKi8KKwkJ CXUzMiBudW1fZHdvcmRzIDogNTsKKworCQkJdTMyIDogMzsKKworCQkJLyogSW5kaWNhdGVzIHRo YXQgdGhpcyBHdUMySG9zdCBhY3Rpb24gaXMgYSByZXNwb25zZSBvZgorCQkJICogYSBIb3N0Mkd1 YyByZXF1ZXN0CisJCQkgKi8KKwkJCXUzMiBob3N0Ml9ndWNfcmVzcG9uc2UgOiAxOworCisJCQl1 MzIgcmVzZXJ2ZWQgOiA3OworCisJCQkvKiBzdHJ1Y3QgZ3VjX3RvX2hvc3RfbWVzc2FnZSAqLwor CQkJdTMyIGd1YzJob3N0X2FjdGlvbiA6IDE2OworCQl9IGcyaF9jbWRfYnVmZmVyX2l0ZW1faGVh ZGVyOworCisJCXN0cnVjdCB7CisJCQl1MzIgbnVtX2R3b3JkcyA6IDU7CisJCQl1MzIgcmVzZXJ2 ZWQgOiAzOworCQkJdTMyIGZyZWVfZm9yX2NsaWVudF91c2UgOiAyNDsKKwkJfSBnZW5lcmljX2Nt ZF9idWZmZXJfaXRlbV9oZWFkZXI7CisKKwkJdTMyIGhlYWRlcl92YWx1ZTsKKwl9OworCit9Owor CitzdHJ1Y3QgZ3VjX3RvX2hvc3RfbWVzc2FnZSB7CisJdW5pb24geworCQlzdHJ1Y3QgeworCQkJ dTMyIHVrX2luaXRfZG9uZSA6IDE7CisJCQl1MzIgY3Jhc2hfZHVtcF9wb3N0ZWQgOiAxOworCQkJ dTMyIDogMTsKKwkJCXUzMiBmbHVzaF9sb2dfYnVmZmVyX3RvX2ZpbGUgOiAxOworCQkJdTMyIHBy ZWVtcHRfcmVxdWVzdF9vbGRfcHJlZW1wdF9wZW5kaW5nIDogMTsKKwkJCXUzMiBwcmVlbXB0X3Jl cXVlc3RfdGFyZ2V0X2NvbnRleHRfYmFkIDogMTsKKwkJCXUzMiA6IDE7CisJCQl1MzIgc2xlZXBf ZW50cnlfaW5fcHJvZ3Jlc3MgOiAxOworCQkJdTMyIGd1Y19pbl9kZWJ1Z19oYWx0IDogMTsKKwkJ CXUzMiBndWNfcmVwb3J0X2VuZ2luZV9yZXNldF9jb250ZXh0X2lkIDogMTsKKwkJCXUzMiA6IDE7 CisJCQl1MzIgaG9zdF9wcmVlbXB0aW9uX2NvbXBsZXRlIDogMTsKKwkJCXUzMiByZXNlcnZlZDAg OiA0OworCQkJdTMyIGdwYV90b19ocGFfeGxhdGlvbl9lcnJvciA6IDE7CisJCQl1MzIgZG9vcmJl bGxfaWRfYWxsb2NhdGlvbl9lcnJvciA6IDE7CisJCQl1MzIgZG9vcmJlbGxfaWRfYWxsb2NhdGlv bl9pbnZhbGlkX2N0eF9pZCA6IDE7CisJCQl1MzIgOiAxOworCQkJdTMyIGZvcmNlX3dha2VfdGlt ZWRfb3V0IDogMTsKKwkJCXUzMiBmb3JjZV93YWtlX3RpbWVfb3V0X2NvdW50ZXIgOiAyOworCQkJ dTMyIDogMTsKKwkJCXUzMiBpb21tdV9jYXRfcGFnZV9mYXVsdGVkIDogMTsKKwkJCXUzMiBob3N0 Mmd1Y19lbmdpbmVfcmVzZXRfY29tcGxldGUgOiAxOworCQkJdTMyIHJlc2VydmVkMSA6IDI7CisJ CQl1MzIgZG9vcmJlbGxfc2VsZWN0aW9uX2Vycm9yIDogMTsKKwkJCXUzMiBkb29yYmVsbF9pZF9y ZWxlYXNlX2Vycm9yIDogMTsKKwkJCXUzMiB1a19leGNlcHRpb24gOiAxOworCQkJdTMyIDogMTsK KwkJfTsKKwkJdTMyIGR3OworCX07CisKK307CisKKy8qIFNpemUgb2YgdGhlIGJ1ZmZlciB0byBz YXZlIEd1QydzIHN0YXRlIGJlZm9yZSBTMy4gVGhlIGRkcmVzcyBvZiB0aGUgYnVmZmVyCisgKiBn b2VzIGluIGd1Y19hZGRpdGlvbmFsX2RhdGFfc3RydWN0cworICovCisjZGVmaW5lIEdVQ19NQVhf R1VDX1MzX1NBVkVfU1BBQ0VfUEFHRVMJMTAKKworLyogTU1JTyBPZmZzZXQgZm9yIHN0YXR1cyBv ZiBzbGVlcCBzdGF0ZSBlbnRlciByZXF1ZXN0ICovCisjZGVmaW5lIEdVQ19TTEVFUF9TVEFURV9F TlRFUl9TVEFUVVMJMHhDMUI4CisKKy8qIFN0YXR1cyBvZiBzbGVlcCByZXF1ZXN0LiBWYWx1ZSB1 cGRhdGVkIGluIEdVQ19TTEVFUF9TVEFURV9FTlRFUl9TVEFUVVMgKi8KK2VudW0gZ3VjX3NsZWVw X3N0YXRlX2VudGVyX3N0YXR1cyB7CisJR1VDX1NMRUVQX1NUQVRFX0VOVEVSX1NVQ0NFU1MgPSAx LAorCUdVQ19TTEVFUF9TVEFURV9FTlRFUl9QUkVFTVBUX1RPX0lETEVfRkFJTEVEID0gMiwKKwlH VUNfU0xFRVBfU1RBVEVfRU5URVJfRU5HX1JFU0VUX0ZBSUxFRCA9IDMsCit9OworCisKKy8qIEVu dW0gdG8gZGV0ZXJtaW5lIHdoYXQgbW9kZSB0aGUgc2NoZWR1bGVyIGlzIGluICovCitlbnVtIGd1 Y19zY2hlZHVsZXJfbW9kZSB7CisJR1VDX1NDSEVEVUxFUl9NT0RFX05PUk1BTCwKKwlHVUNfU0NI RURVTEVSX01PREVfU1RBTExfSU1NRURJQVRFLAorfTsKKworLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBMb2dnaW5nICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworZW51bSBn dWNfbG9nX2J1ZmZlcl90eXBlIHsKKwlHVUNfTE9HX0JVRkZFUl9UWVBFX0lTUiA9IDB4MCwKKwlH VUNfTE9HX0JVRkZFUl9UWVBFX0RQQyA9IDB4MSwKKwlHVUNfTE9HX0JVRkZFUl9UWVBFX0NSQVNI ID0gMHgyLAorCUdVQ19MT0dfQlVGRkVSX1RZUEVfTUFYID0gMHgzLAorfTsKKworZW51bSBndWNf bG9nX3ZlcmJvc2l0eSB7CisJR1VDX0xPR19WRVJCT1NJVFlfTE9XID0gMHgwLAorCUdVQ19MT0df VkVSQk9TSVRZX01FRCA9IDB4MSwKKwlHVUNfTE9HX1ZFUkJPU0lUWV9ISUdIID0gMHgyLAorCUdV Q19MT0dfVkVSQk9TSVRZX1VMVFJBID0gMHgzLAorCUdVQ19MT0dfVkVSQk9TSVRZX01BWCA9IDB4 NCwKK307CisKKy8qIFRoaXMgZW51bSBjb250cm9scyB0aGUgdHlwZSBvZiBsb2dnaW5nIG91dHB1 dC4gQ2FuIGJlIGNoYW5nZWQgZHluYW1pY2FsbHkKKyAqIHVzaW5nIEdVQ19IT1NUMkdVQ19BQ1RJ T05fTE9HX1ZFUkJPU0lUWV9MT0dPVVRQVVRfU0VMRUNUCisgKi8KK2VudW0gZ3VjX2xvZ291dHB1 dF9zZWxlY3Rpb24geworCUdVQ19MT0dPVVRQVVRfTE9HQlVGRkVSX09OTFkgPSAweDAsCisJR1VD X0xPR09VVFBVVF9OUEtfT05MWSA9IDB4MSwKKwlHVUNfTE9HT1VUUFVUX0xPR0JVRkZFUl9BTkRf TlBLID0gMHgyLAorCUdVQ19MT0dPVVRQVVRfTUFYCit9OworCisvKiBGaWxsZWQgYnkgS01EIGV4 Y2VwdCB2ZXJzaW9uIGFuZCBtYXJrZXIgdGhhdCBhcmUgaW5pdGlhbGl6ZWQgYnkgdUtlcm5lbCAq Lworc3RydWN0IGd1Y19rbV9sb2dfYnVmZmVyX3N0YXRlIHsKKwkvKiBNYXJrcyB0aGUgYmVnaW5u aW5nIG9mIEJ1ZmZlciBGbHVzaCAoc2V0IGJ5IHVLZXJuZWwgYXQgTG9nIEJ1ZmZlcgorCSAqIElu aXQpCisJICovCisJdTMyIG1hcmtlclsyXTsKKworCS8qIFRoaXMgaXMgdGhlIGxhc3QgYnl0ZSBv ZmZzZXQgbG9jYXRpb24gdGhhdCB3YXMgcmVhZCBieSBLTUQuIEtNRCB3aWxsCisJICogd3JpdGUg dG8gdGhpcyBhbmQgdUtlcm5lbCB3aWxsIHJlYWQgaXQKKwkgKi8KKwl1MzIgbG9nX2J1Zl9yZF9w dHI7CisKKwkvKiBUaGlzIGlzIHRoZSBieXRlIG9mZnNldCBsb2NhdGlvbiB0aGF0IHdpbGwgYmUg d3JpdHRlbiBieSB1S2VybmVsICovCisJdTMyIGxvZ19idWZfd3JfcHRyOworCisJdTMyIGxvZ19i dWZfc2l6ZTsKKworCS8qIFRoaXMgaXMgd3JpdHRlbiBieSB1S2VybmVsIHdoZW4gaXQgc2VlcyB0 aGUgbG9nIGJ1ZmZlciBiZWNvbWluZyBoYWxmCisJICogZnVsbC4gS01EIHdyaXRlcyB0aGlzIHZh bHVlIGluIHRoZSBsb2cgZmlsZSB0byBhdm9pZCBzdGFsZSBkYXRhCisJICovCisJdTMyIHNhbXBs ZWRfbG9nX2J1Zl93cnB0cjsKKworCXVuaW9uIHsKKwkJc3RydWN0IHsKKwkJCS8qIHVLZXJuZWwg c2V0cyB0aGlzIHdoZW4gbG9nIGJ1ZmZlciBpcyBoYWxmIGZ1bGwgb3IKKwkJCSAqIHdoZW4gYSBm b3JjZWQgZmx1c2ggaGFzIGJlZW4gcmVxdWVzdGVkIHRocm91Z2gKKwkJCSAqIEhvc3QyR3VjLiB1 S2VybmVsIHdpbGwgc2VuZCBHdWMySG9zdCBvbmx5IGlmIHRoaXMKKwkJCSAqIGJpdCBpcyBjbGVh cmVkLiBUaGlzIGlzIHRvIGF2b2lkIHVubmVjZXNzYXJ5CisJCQkgKiBpbnRlcnJ1cHRzIGZyb20g R3VDCisJCQkgKi8KKwkJCXUzMiBsb2dfYnVmX2ZsdXNoX3RvX2ZpbGUgOiAxOworCisJCQkvKiB1 S2VybmVsIGluY3JlbWVudHMgdGhpcyB3aGVuIGxvZyBidWZmZXIgb3ZlcmZsb3dzICovCisJCQl1 MzIgYnVmZmVyX2Z1bGxfY291bnQgOiA0OworCisJCQl1MzIgOiAyNzsKKwkJfTsKKwkJdTMyIGxv Z19idWZfZmxhZ3M7CisJfTsKKworCXUzMiB2ZXJzaW9uOworfTsKKworLyogTG9nZ2luZyBQYXJh bWV0ZXJzIHNlbnQgdmlhIHN0cnVjdCBzY2hlZF9jb250cm9sX2RhdGEuIE1haW50YWluZWQgYXMg c2VwYXJhdGUKKyAqIHN0cnVjdHVyZSB0byBhbGxvdyBkZWJ1ZyB0b29scyB0byBhY2Nlc3MgbG9n cyB3aXRob3V0IGNvbnRhY3RpbmcgR3VDIChmb3IKKyAqIHdoZW4gR3VDIGlzIHN0dWNrIGluIElT UikKKyAqLworc3RydWN0IGd1Y19sb2dfaW5pdF9wYXJhbXMgeworCXVuaW9uIHsKKwkJc3RydWN0 IHsKKwkJCXUzMiBpc19sb2dfYnVmZmVyX3ZhbGlkIDogMTsKKwkJCS8qIFJhaXNlIEd1QzJIb3N0 IGludGVycnVwdCB3aGVuIGJ1ZmZlciBpcyBoYWxmIGZ1bGwgKi8KKwkJCXUzMiBub3RpZnlfb25f bG9nX2hhbGZfZnVsbCA6IDE7CisJCQl1MzIgOiAxOworCQkJLyogMCA9IFBhZ2VzLCAxID0gTWVn YWJ5dGVzICovCisJCQl1MzIgYWxsb2NhdGVkX2NvdW50X3VuaXRzIDogMTsKKwkJCS8qIE5vLiBv ZiB1bml0cyBhbGxvY2F0ZWQgLTEgKE1BWCA0IFVuaXRzKSAqLworCQkJdTMyIGNyYXNoX2R1bXBf bG9nX2FsbG9jYXRlZF9jb3VudCA6IDI7CisJCQkvKiBOby4gb2YgdW5pdHMgYWxsb2NhdGVkIC0x IChNQVggOCBVbml0cykgKi8KKwkJCXUzMiBkcGNfbG9nX2FsbG9jYXRlZF9jb3VudCA6IDM7CisJ CQkvKiBOby4gb2YgdW5pdHMgYWxsb2NhdGVkIC0xIChNQVggOCBVbml0cykgKi8KKwkJCXUzMiBp c3JfbG9nX2FsbG9jYXRlZF9jb3VudCA6IDM7CisJCQkvKiBQYWdlIGFsaWduZWQgYWRkcmVzcyBm b3IgbG9nIGJ1ZmZlciAqLworCQkJdTMyIGxvZ19idWZmZXJfZ2Z4X2FkZHJlc3MgOiAyMDsKKwkJ fTsKKwkJdTMyIGxvZ19kd29yZF92YWx1ZTsKKwl9OworfTsKKworLyogUGFzcyBpbmZvIGZvciBk b2luZyBhIEhvc3QyR3VDIHJlcXVlc3QgKEdVQ19IT1NUMkdVQ19BQ1RJT05fRU5BQkxFX0xPR0dJ TkcpCisgKiBpbiBvcmRlciB0byBlbmFibGUvZGlzYWJsZSBHdUMgbG9nZ2luZworICovCitzdHJ1 Y3QgZ3VjX2xvZ19lbmFibGVfcGFyYW1zIHsKKwl1bmlvbiB7CisJCXN0cnVjdCB7CisJCQl1MzIg bG9nZ2luZ19lbmFibGVkIDogMTsKKwkJCXUzMiBwcm9maWxlX2xvZ2dpbmdfZW5hYmxlZCA6IDE7 CisJCQl1MzIgbG9nX291dHB1dF9zZWxlY3Rpb24gOiAyOworCQkJdTMyIGxvZ192ZXJib3NpdHkg OiA0OworCQkJdTMyIGRlZmF1bHRfbG9nZ2luZ19lbmFibGVkIDogMTsKKwkJCXUzMiA6IDIzOwor CQl9OworCQl1MzIgbG9nX2VuYWJsZV9kd29yZF92YWx1ZTsKKwl9OworCit9OworCisvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKiBTY2hlZCBDb250cm9sIERhdGEgYW5kIEFk ZHRpb25hbCBEYXRhIFN0cnVjdHVyZXMgKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLworCisvKiBIb2xkcyB0aGUgaW5pdCB2YWx1ZXMgb2YgdmFyaW91cyBwYXJhbWV0ZXJzIHVz ZWQgYnkgdGhlIHVLZXJuZWwgKi8KK3N0cnVjdCBndWNfc2NoZWRfY29udHJvbF9kYXRhIHsKKwkv KiBEd29yZCAwICovCisJdW5pb24geworCQlzdHJ1Y3QgeworCQkJLyogTnVtIG9mIGNvbnRleHRz IGluIHBvb2wgaW4gYmxvY2tzIG9mIDE2LAorCQkJICogRS5nLjogbnVtX2NvbnRleHRzX2luX3Bv b2wxNl9ibG9ja3MgPSAxIGlmIDE2CisJCQkgKiBjb250ZXh0cywgNjQgaWYgMTAyNCBjb250ZXh0 cyBhbGxvY2F0ZWQKKwkJCSAqLworCQkJdTMyIG51bV9jb250ZXh0c19pbl9wb29sMTZfYmxvY2tz IDogMTI7CisKKwkJCS8qIEFsaWduZWQgYml0cyBbMzE6MTJdIG9mIHRoZSBHRlggYWRkcmVzcyB3 aGVyZSB0aGUKKwkJCSAqIHBvb2wgYmVnaW5zCisJCQkgKi8KKwkJCXUzMiBjb250ZXh0X3Bvb2xf Z2Z4X2FkZHJlc3NfYmVnaW4gOiAyMDsKKwkJfTsKKwl9OworCisJLyogRHdvcmQgMSAqLworCXN0 cnVjdCBndWNfbG9nX2luaXRfcGFyYW1zIGxvZ19pbml0X3BhcmFtczsKKworCisJLyogRHdvcmQg MiAqLworCXVuaW9uIHsKKwkJc3RydWN0IHsKKwkJCXUzMiByZXNlcnZlZCA6IDE7CisJCQl1MzIg d2FfZGlzYWJsZV9kdW1teV9hbGxfZW5naW5lX2ZhdWx0X2ZpeCA6IDE7CisJCQl1MzIgOiAzMDsK KwkJfTsKKwkJdTMyIHdvcmthcm91bmRfZHc7CisJfTsKKworCS8qIER3b3JkIDMgKi8KKwl1bmlv biB7CisJCXN0cnVjdCB7CisJCQl1MzIgZnRyX2VuYWJsZV9wcmVlbXB0aW9uX2RhdGFfbG9nZ2lu ZyA6IDE7CisJCQl1MzIgZnRyX2VuYWJsZV9ndWNfcGF2cF9jb250cm9sIDogMTsKKwkJCXUzMiBm dHJfZW5hYmxlX2d1Y19zbHBtIDogMTsKKwkJCXUzMiBmdHJfZW5hYmxlX2VuZ2luZV9yZXNldF9v bl9wcmVlbXB0X2ZhaWx1cmUgOiAxOworCQkJdTMyIGZ0cl9saXRlX3Jlc3RvcmUgOiAxOworCQkJ dTMyIGZ0cl9kcml2ZXJfZmxyIDogMTsKKwkJCXUzMiBmdXR1cmUgOiAxOworCQkJdTMyIGZ0cl9l bmFibGVfcHNtaV9sb2dnaW5nIDogMTsKKwkJCXUzMiA6IDE7CisJCQl1MzIgOiAxOworCQkJdTMy IDogMTsKKwkJCXUzMiA6IDE7CisJCQl1MzIgOiAxOworCQkJdTMyIDogMTsKKwkJCXUzMiA6IDE4 OworCQl9OworCQl1MzIgZmVhdHVyZV9kd29yZDsKKwl9OworCisJLyogRHdvcmQgNCAqLworCXVu aW9uIHsKKwkJc3RydWN0IHsKKwkJCS8qIE9uZSBvZiBlbnVtIGd1Y19sb2dfdmVyYm9zaXR5ICov CisJCQl1MzIgbG9nZ2luZ192ZXJib3NpdHkgOiA0OworCQkJLyogT25lIG9mIGVudW0gZ3VjX2xv Z291dHB1dF9zZWxlY3Rpb24gKi8KKwkJCXUzMiBsb2dfb3V0cHV0X3NlbGVjdGlvbiA6IDI7CisJ CQl1MzIgbG9nZ2luZ19kaXNhYmxlZCA6IDE7CisJCQl1MzIgcHJvZmlsZV9sb2dnaW5nX2VuYWJs ZWQgOiAxOworCQkJdTMyIDogMjQ7CisJCX07CisJfTsKKworCS8qIER3b3JkIDUgKi8KKwl1bmlv biB7CisJCXN0cnVjdCB7CisJCQl1MzIgOiAxOworCQkJdTMyIGdmeF9hZGRyZXNzX2FkZGl0aW9u YWxfZGF0YV9zdHJ1Y3RzIDogMjE7CisJCQl1MzIgOiAxMDsKKwkJfTsKKwl9OworCit9OworCisv KiBTdHJ1Y3R1cmUgdG8gcGFzcyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFuZCBzdHJ1Y3R1cmUg cG9pbnRlcnMgdG8gKi8KK3N0cnVjdCBndWNfYWRkaXRpb25hbF9kYXRhX3N0cnVjdHMgeworCS8q IEdmeCBwdHIgdG8gc3RydWN0IGd1Y19tbWlvX3NhdmVfcmVzdG9yZV9saXN0IChwZXJzaXN0ZW50 KSAqLworCXUzMiBnZnhfYWRkcmVzc19tbWlvX3NhdmVfcmVzdG9yZV9saXN0OworCisJLyogQnVm ZmVyIG9mIHNpemUgR1VDX01BWF9HVUNfUzNfU0FWRV9TUEFDRV9QQUdFUyAocGVyc2lzdGVudCkg Ki8KKwl1MzIgZ2Z4X3B0cl90b19ndWNzX3N0YXRlX3NhdmVfYnVmZmVyOworCisJLyogR2Z4IGFk ZHJlc3NlcyBvZiBzdHJ1Y3QgZ3VjX3NjaGVkdWxpbmdfcG9saWNpZXMgKG5vbi1wZXJzaXN0ZW50 LCBtYXkKKwkgKiBiZSByZWxlYXNlZCBhZnRlciBpbml0aWFsIGxvYWQpLCBOVUxMIG9yIHZhbGlk ID0gMCBmbGFnIHZhbHVlIHdpbGwKKwkgKiBjYXVzZSBkZWZhdWx0IHBvbGljaWVzIHRvIGJlIGxv YWRlZAorCSAqLworCXUzMiBnZnhfc2NoZWR1bGVyX3BvbGljaWVzOworCisJLyogR2Z4IGFkZHJl c3Mgb2Ygc3RydWN0IGd1Y19ndF9zeXN0ZW1faW5mbyAqLworCXUzMiBndF9zeXN0ZW1faW5mbzsK KworCXUzMiBmdXR1cmU7CisKKwl1MzIgZ2Z4X3B0cl90b19wc21pX2xvZ19jb250cm9sX2RhdGE7 CisKKwkvKiBMUkNBIGFkZHJlc3NlcyBhbmQgc2l6ZXMgb2YgZ29sZGVuIGNvbnRleHRzIChwZXJz aXN0ZW50KSAqLworCXUzMiBnZnhfZ29sZGVuX2NvbnRleHRfbHJjYVtHVUNfTUFYX1NDSEVEVUxB QkxFX0VOR0lORV9DTEFTU107CisJdTMyIGdvbGRlbl9jb250ZXh0X2VuZ19zdGF0ZV9zaXplX2lu X2J5dGVzW0dVQ19NQVhfU0NIRURVTEFCTEVfRU5HSU5FX0NMQVNTXTsKKworCXUzMiByZXNlcnZl ZFsxNl07Cit9OworCisvKiBNYXggbnVtYmVyIG9mIG1taW8gcGVyIGVuZ2luZSBjbGFzcyBwZXIg ZW5naW5lIGluc3RhbmNlICovCisjZGVmaW5lIEdVQ19NQVhfTU1JT19QRVJfU0VUCTY0CisKK3N0 cnVjdCBndWNfbW1pb19mbGFncyB7CisJdW5pb24geworCQlzdHJ1Y3QgeworCQkJdTMyIG1hc2tl ZCA6IDE7CisJCQl1MzIgOiAzMTsKKwkJfTsKKwkJdTMyIGZsYWdzX3ZhbHVlOworCX07Cit9Owor CitzdHJ1Y3QgZ3VjX21taW8geworCXUzMiBvZmZzZXQ7CisJdTMyIHZhbHVlOworCXN0cnVjdCBn dWNfbW1pb19mbGFncyBmbGFnczsKK307CisKK3N0cnVjdCBndWNfbW1pb19zZXQgeworCS8qIEFy cmF5IG9mIG1taW8gdG8gYmUgc2F2ZWQvcmVzdG9yZWQgKi8KKwlzdHJ1Y3QgZ3VjX21taW8gbW1p b1tHVUNfTUFYX01NSU9fUEVSX1NFVF07CisJLyogU2V0IGFmdGVyIHNhdmluZyBtbWlvIHZhbHVl LCBjbGVhcmVkIGFmdGVyIHJlc3RvcmUuICovCisJdTMyIG1taW9fdmFsdWVzX3ZhbGlkOworCSAv KiBOdW1iZXIgb2YgbW1pbyBpbiB0aGUgc2V0ICovCisJdTMyIG51bWJlcl9vZl9tbWlvOworfTsK Kworc3RydWN0IGd1Y19tbWlvX3NhdmVfcmVzdG9yZV9saXN0IHsKKwlzdHJ1Y3QgZ3VjX21taW9f c2V0CisJCW5vZGVfbW1pb19zZXRbR1VDX01BWF9TQ0hFRFVMQUJMRV9FTkdJTkVfQ0xBU1NdCisJ CQkgICAgIFtHVUNfTUFYX0VOR0lORV9JTlNUQU5DRV9QRVJfQ0xBU1NdOworCXUzMiByZXNlcnZl ZFs5OF07Cit9OworCisvKiBQb2xpY3kgZmxhZ3MgdG8gY29udHJvbCBzY2hlZHVsaW5nIGRlY2lz aW9ucyAqLworc3RydWN0IGd1Y19zY2hlZHVsaW5nX3BvbGljeV9mbGFncyB7CisJdW5pb24gewor CQlzdHJ1Y3QgeworCQkJLyogU2hvdWxkIHdlIHJlc2V0IGVuZ2luZSB3aGVuIHByZWVtcHRpb24g ZmFpbGVkIHdpdGhpbgorCQkJICogaXRzIHRpbWUgcXVhbnR1bQorCQkJICovCisJCQl1MzIgcmVz ZXRfZW5naW5lX3Vwb25fcHJlZW1wdF9mYWlsdXJlIDogMTsKKworCQkJLyogU2hvdWxkIHdlIHBy ZWVtcHQgdG8gaWRsZSB1bmNvbmRpdGlvbmFsbHkgZm9yIHRoZQorCQkJICogZXhlY3V0aW9uIHF1 YW50dW0gZXhwaXJ5CisJCQkgKi8KKwkJCXUzMiBwcmVlbXB0X3RvX2lkbGVfb25fcXVhbnR1bV9l eHBpcnkgOiAxOworCisJCQl1MzIgOiAzMDsKKwkJfTsKKwkJdTMyIHBvbGljeV9kd29yZDsKKwl9 OworfTsKKworLyogUGVyLWVuZ2luZSBjbGFzcyBhbmQgcGVyLXByaW9yaXR5IHN0cnVjdCBmb3Ig c2NoZWR1bGluZyBwb2xpY3kgICovCitzdHJ1Y3QgZ3VjX3NjaGVkdWxpbmdfcG9saWN5IHsKKwkv KiBUaW1lIGZvciBvbmUgd29ya2xvYWQgdG8gZXhlY3V0ZSAobWljcm8gc2Vjb25kcykgKi8KKwl1 MzIgZXhlY3V0aW9uX3F1YW50dW07CisKKwkvKiBUaW1lIHRvIHdhaXQgZm9yIGEgcHJlZW1wdGlv biByZXF1ZXN0IHRvIGNvbXBsZXRlZCBiZWZvcmUgaXNzdWluZyBhCisJICogcmVzZXQgKG1pY3Jv IHNlY29uZHMpCisJICovCisJdTMyIHdhaXRfZm9yX3ByZWVtcHRpb25fY29tcGxldGlvbl90aW1l OworCisJLyogSG93IG11Y2ggdGltZSB0byBhbGxvdyB0byBydW4gYWZ0ZXIgdGhlIGZpcnN0IGZh dWx0IGlzIG9ic2VydmVkLgorCSAqIFRoZW4gcHJlZW1wdCBhZnRlcndhcmRzIChtaWNybyBzZWNv bmRzKQorCSAqLworCXUzMiBxdWFudHVtX3Vwb25fZmlyc3RfZmF1bHRfdGltZTsKKworCXN0cnVj dCBndWNfc2NoZWR1bGluZ19wb2xpY3lfZmxhZ3MgcG9saWN5X2ZsYWdzOworCisJdTMyIHJlc2Vy dmVkWzhdOworfTsKKworLyogS01EIHNob3VsZCBwb3B1bGF0ZSB0aGlzIHN0cnVjdCBhbmQgcGFz cyBpbmZvIHRocm91Z2ggc3RydWN0CisgKiBndWNfYWRkaXRpb25hbF9kYXRhX3N0cnVjdHMtIElm IEtNRCBkb2VzIG5vdCBzZXQgdGhlIHNjaGVkdWxlciBwb2xpY3ksCisgKiB1S2VybmVsIHdpbGwg ZmFsbCBiYWNrIHRvIGRlZmF1bHQgc2NoZWR1bGluZyBwb2xpY2llcworICovCitzdHJ1Y3QgZ3Vj X3NjaGVkdWxpbmdfcG9saWNpZXMgeworCXN0cnVjdCBndWNfc2NoZWR1bGluZ19wb2xpY3kKKwkJ cGVyX3N1Ym1pdF9xdWV1ZV9wb2xpY3lbR1VDX0NPTlRFWFRfUFJJT1JJVFlfQUJTT0xVVEVfTUFY X0NPVU5UXQorCQkJCSAgICAgICBbR1VDX01BWF9TQ0hFRFVMQUJMRV9FTkdJTkVfQ0xBU1NdOwor CisJLyogU3VibWlzc2lvbiBxdWV1ZSBkZXB0aCwgbWluIDIsIG1heCA4LiBJZiBvdXRzaWRlIHRo ZSB2YWxpZCByYW5nZSwKKwkgKiBkZWZhdWx0IHZhbHVlIGlzIHVzZWQKKwkgKi8KKwl1MzIgc3Vi bWlzc2lvbl9xdWV1ZV9kZXB0aFtHVUNfTUFYX1NDSEVEVUxBQkxFX0VOR0lORV9DTEFTU107CisK KwkvKiBIb3cgbXVjaCB0aW1lIHRvIGFsbG93IGJlZm9yZSBEUEMgcHJvY2Vzc2luZyBpcyBjYWxs ZWQgYmFjayB2aWEKKwkgKiBpbnRlcnJ1cHQgKHRvIHByZXZlbnQgRFBDIHF1ZXVlIGRyYWluIHN0 YXJ2aW5nKSBJTiBtaWNybyBzZWNvbmRzLgorCSAqIFR5cGljYWxseSBpbiB0aGUgMTAwMHMgKGV4 YW1wbGUgb25seSwgbm90IGdyYW51bGFyaXR5KQorCSAqLworCXUzMiBkcGNfcHJvbW90ZV90aW1l OworCisJLyogTXVzdCBiZSBzZXQgdG8gdGFrZSB0aGVzZSBuZXcgdmFsdWVzICovCisJdTMyIGlz X3ZhbGlkOworCisJLyogTnVtYmVyIG9mIFdJcyB0byBwcm9jZXNzIHBlciBjYWxsIHRvIHByb2Nl c3Mgc2luZ2xlLiBQcm9jZXNzIHNpbmdsZQorCSAqIGNvdWxkIGhhdmUgYSBsYXJnZSBNYXggVGFp bCB2YWx1ZSB3aGljaCBtYXkga2VlcCBDUyBpZGxlLiBQcm9jZXNzCisJICogbWF4X251bV93b3Jr X2l0ZW1zX3Blcl9kcGNfY2FsbCBXSXMgYW5kIHRyeSBmYXN0IHNjaGVkdWxlCisJICovCisJdTMy IG1heF9udW1fd29ya19pdGVtc19wZXJfZHBjX2NhbGw7CisKKwl1MzIgcmVzZXJ2ZWRbNF07Cit9 OworCisjcHJhZ21hIHBhY2soKQorCisjZW5kaWYKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK