From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1d4768-0005BO-UU for barebox@lists.infradead.org; Fri, 28 Apr 2017 14:42:50 +0000 From: Steffen Trumtrar Date: Fri, 28 Apr 2017 16:41:41 +0200 Message-Id: <235a07d5cf87d536675bd60e1b7830bc58fb3bba.1493390425.git-series.s.trumtrar@pengutronix.de> In-Reply-To: References: MIME-Version: 1.0 In-Reply-To: References: List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "barebox" Errors-To: barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org Subject: [PATCH v2 5/8] ARM: socfpga: add arria10 support To: barebox@lists.infradead.org Cc: Steffen Trumtrar QXJyaWExMCBpcyBhIFNvQyArIEZQR0EgbGlrZSB0aGUgQ3ljbG9uZTUgU29DRlBHQSB0aGF0Cmlz IGFscmVhZHkgc3VwcG9ydGVkIGluIGJhcmVib3guCkJvdGggYSB0aGUgc2FtZSBpbiBzb21lIHBh cnRzLCBidXQgdG90YWx5IGRpZmZlcmVudCBpbgpvdGhlcnMuIE1vc3Qgb2YgdGhlIGhhcmR3YXJl IGJsb2NrcyBhcmUgdGhlIHNhbWUgaW4gdGhlClNvQyBwYXJ0cy4gVGhlIE9DUkFNIGlzIGxhcmdl ciBvbiB0aGUgQXJyaWExMCBhbmQgdGhlClNEUkFNIGNvbnRyb2xsZXIgaXMgZGlmZmVyZW50LgpU aGUgc2VyaWFsIGNvcmUgb25seSBzdXBwb3J0cyAzMmJpdCBhY2Nlc3NlcyAoZGlmZmVyZW50IHRv CnRoZSA4Yml0IGFjY2Vzc2VzIG9uIHRoZSBDeWNsb25lNSkuCgpBcyBBcnJpYTEwIGhhcyAyNTZL QiBvZiBPQ1JBTSwgaXQgaXMgcG9zc2libGUgdG8gZml0IGEgbGFyZ2VyCmJhcmVib3ggKGFuZC9v ciB1c2UgUEJMKSBpbnN0ZWFkIG9mIHRoZSB0d28gc3RhZ2UgYm9vdHByb2Nlc3MKdXNlZCBvbiB0 aGUgQ3ljbG9uZTUgYW5kIGl0cyA2NEtCIE9DUkFNLgoKU2lnbmVkLW9mZi1ieTogU3RlZmZlbiBU cnVtdHJhciA8cy50cnVtdHJhckBwZW5ndXRyb25peC5kZT4KLS0tCiBhcmNoL2FybS9LY29uZmln ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNiArLQogYXJj aC9hcm0vbWFjaC1zb2NmcGdhL0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgMTkgKy0KIGFyY2gvYXJtL21hY2gtc29jZnBnYS9NYWtlZmlsZSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIDEwICstCiBhcmNoL2FybS9tYWNoLXNvY2ZwZ2EvYXJyaWExMC1ib290 c291cmNlLmMgICAgICAgICAgICAgICAgICB8ICA1MyArLQogYXJjaC9hcm0vbWFjaC1zb2NmcGdh L2FycmlhMTAtY2xvY2stbWFuYWdlci5jICAgICAgICAgICAgICAgfCA4MTUgKysrKysrKy0KIGFy Y2gvYXJtL21hY2gtc29jZnBnYS9hcnJpYTEwLWdlbmVyaWMuYyAgICAgICAgICAgICAgICAgICAg IHwgIDg1ICstCiBhcmNoL2FybS9tYWNoLXNvY2ZwZ2EvYXJyaWExMC1pbml0LmMgICAgICAgICAg ICAgICAgICAgICAgICB8IDE5MyArKy0KIGFyY2gvYXJtL21hY2gtc29jZnBnYS9hcnJpYTEwLXJl c2V0LW1hbmFnZXIuYyAgICAgICAgICAgICAgIHwgMzk4ICsrKy0KIGFyY2gvYXJtL21hY2gtc29j ZnBnYS9hcnJpYTEwLXNkcmFtLmMgICAgICAgICAgICAgICAgICAgICAgIHwgNTM1ICsrKysrLQog YXJjaC9hcm0vbWFjaC1zb2NmcGdhL2N5Y2xvbmU1LWJvb3Rzb3VyY2UuYyAgICAgICAgICAgICAg ICAgfCAgNDUgKy0KIGFyY2gvYXJtL21hY2gtc29jZnBnYS9nZW5lcmljLmMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgMTA0ICstCiBhcmNoL2FybS9tYWNoLXNvY2ZwZ2EvaW5jbHVkZS9t YWNoL2FycmlhMTAtY2xvY2stbWFuYWdlci5oICB8IDI0OSArKy0KIGFyY2gvYXJtL21hY2gtc29j ZnBnYS9pbmNsdWRlL21hY2gvYXJyaWExMC1waW5tdXguaCAgICAgICAgIHwgMjUwICsrLQogYXJj aC9hcm0vbWFjaC1zb2NmcGdhL2luY2x1ZGUvbWFjaC9hcnJpYTEwLXJlZ3MuaCAgICAgICAgICAg fCAxMTQgKy0KIGFyY2gvYXJtL21hY2gtc29jZnBnYS9pbmNsdWRlL21hY2gvYXJyaWExMC1yZXNl dC1tYW5hZ2VyLmggIHwgMTE0ICstCiBhcmNoL2FybS9tYWNoLXNvY2ZwZ2EvaW5jbHVkZS9tYWNo L2FycmlhMTAtc2RyYW0uaCAgICAgICAgICB8IDM1MyArKystCiBhcmNoL2FybS9tYWNoLXNvY2Zw Z2EvaW5jbHVkZS9tYWNoL2FycmlhMTAtc3lzdGVtLW1hbmFnZXIuaCB8ICA5NyArLQogYXJjaC9h cm0vbWFjaC1zb2NmcGdhL2luY2x1ZGUvbWFjaC9iYXJlYm94LWFybS1oZWFkLmggICAgICAgfCAg NDIgKy0KIGFyY2gvYXJtL21hY2gtc29jZnBnYS9pbmNsdWRlL21hY2gvZGVidWdfbGwuaCAgICAg ICAgICAgICAgIHwgIDEyICstCiBhcmNoL2FybS9tYWNoLXNvY2ZwZ2EvaW5jbHVkZS9tYWNoL2dl bmVyaWMuaCAgICAgICAgICAgICAgICB8ICAzNiArLQogYXJjaC9hcm0vbWFjaC1zb2NmcGdhL3hs b2FkLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOTIgKy0KIGNvbW1vbi9LY29u ZmlnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDExICst CiBpbWFnZXMvTWFrZWZpbGUuc29jZnBnYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgNSArLQogc2NyaXB0cy9zb2NmcGdhX3htbF90b19jb25maWcuc2ggICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAxMTcgKy0KIDI0IGZpbGVzIGNoYW5nZWQsIDM1NTQgaW5zZXJ0 aW9ucygrKSwgMjAxIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL21h Y2gtc29jZnBnYS9hcnJpYTEwLWJvb3Rzb3VyY2UuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gv YXJtL21hY2gtc29jZnBnYS9hcnJpYTEwLWNsb2NrLW1hbmFnZXIuYwogY3JlYXRlIG1vZGUgMTAw NjQ0IGFyY2gvYXJtL21hY2gtc29jZnBnYS9hcnJpYTEwLWdlbmVyaWMuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IGFyY2gvYXJtL21hY2gtc29jZnBnYS9hcnJpYTEwLWluaXQuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IGFyY2gvYXJtL21hY2gtc29jZnBnYS9hcnJpYTEwLXJlc2V0LW1hbmFnZXIuYwogY3Jl YXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL21hY2gtc29jZnBnYS9hcnJpYTEwLXNkcmFtLmMKIGRl bGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9tYWNoLXNvY2ZwZ2EvZ2VuZXJpYy5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1zb2NmcGdhL2luY2x1ZGUvbWFjaC9hcnJpYTEwLWNs b2NrLW1hbmFnZXIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL21hY2gtc29jZnBnYS9p bmNsdWRlL21hY2gvYXJyaWExMC1waW5tdXguaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJt L21hY2gtc29jZnBnYS9pbmNsdWRlL21hY2gvYXJyaWExMC1yZWdzLmgKIGNyZWF0ZSBtb2RlIDEw MDY0NCBhcmNoL2FybS9tYWNoLXNvY2ZwZ2EvaW5jbHVkZS9tYWNoL2FycmlhMTAtcmVzZXQtbWFu YWdlci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1zb2NmcGdhL2luY2x1ZGUv bWFjaC9hcnJpYTEwLXNkcmFtLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9tYWNoLXNv Y2ZwZ2EvaW5jbHVkZS9tYWNoL2FycmlhMTAtc3lzdGVtLW1hbmFnZXIuaAogY3JlYXRlIG1vZGUg MTAwNjQ0IGFyY2gvYXJtL21hY2gtc29jZnBnYS9pbmNsdWRlL21hY2gvYmFyZWJveC1hcm0taGVh ZC5oCiBjcmVhdGUgbW9kZSAxMDA3NTUgc2NyaXB0cy9zb2NmcGdhX3htbF90b19jb25maWcuc2gK CmRpZmYgLS1naXQgYS9hcmNoL2FybS9LY29uZmlnIGIvYXJjaC9hcm0vS2NvbmZpZwppbmRleCA0 ZDk1MjY5OGZjNWMuLjFkY2FlMmMyZGU5NSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vS2NvbmZpZwor KysgYi9hcmNoL2FybS9LY29uZmlnCkBAIC0xNzIsNyArMTcyLDcgQEAgY29uZmlnIEFSQ0hfUk9D S0NISVAKIAlzZWxlY3QgQVJDSF9IQVNfTDJYMAogCiBjb25maWcgQVJDSF9TT0NGUEdBCi0JYm9v bCAiQWx0ZXJhIFNPQ0ZQR0EgY3ljbG9uZTUiCisJYm9vbCAiQWx0ZXJhIFNPQ0ZQR0EiCiAJc2Vs ZWN0IEhBU19ERUJVR19MTAogCXNlbGVjdCBBUk1fU01QX1RXRAogCXNlbGVjdCBDUFVfVjcKQEAg LTE4MCw4ICsxODAsOCBAQCBjb25maWcgQVJDSF9TT0NGUEdBCiAJc2VsZWN0IENMS0RFVl9MT09L VVAKIAlzZWxlY3QgR1BJT0xJQgogCXNlbGVjdCBIQVZFX1BCTF9NVUxUSV9JTUFHRVMKLQlzZWxl Y3QgT0ZERVZJQ0UgaWYgIUFSQ0hfU09DRlBHQV9YTE9BRAotCXNlbGVjdCBPRlRSRUUgaWYgIUFS Q0hfU09DRlBHQV9YTE9BRAorCXNlbGVjdCBPRkRFVklDRSBpZiAhKEFSQ0hfU09DRlBHQV9YTE9B RCAmJiBBUkNIX1NPQ0ZQR0FfQ1lDTE9ORTUpCisJc2VsZWN0IE9GVFJFRSBpZiAhKEFSQ0hfU09D RlBHQV9YTE9BRCAmJiBBUkNIX1NPQ0ZQR0FfQ1lDTE9ORTUpCiAKIGNvbmZpZyBBUkNIX1MzQzI0 eHgKIAlib29sICJTYW1zdW5nIFMzQzI0MTAsIFMzQzI0NDAiCmRpZmYgLS1naXQgYS9hcmNoL2Fy bS9tYWNoLXNvY2ZwZ2EvS2NvbmZpZyBiL2FyY2gvYXJtL21hY2gtc29jZnBnYS9LY29uZmlnCmlu ZGV4IDA0YjU0MTZiNjQ1Mi4uMGEzM2U4ODY0NDljIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNo LXNvY2ZwZ2EvS2NvbmZpZworKysgYi9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EvS2NvbmZpZwpAQCAt MTIsMTYgKzEyLDM1IEBAIGNvbmZpZyBBUkNIX1RFWFRfQkFTRQogCWhleAogCWRlZmF1bHQgMHgw MDEwMDAwMCBpZiBNQUNIX1NPQ0ZQR0FfQ1lDTE9ORTUKIAorY29tbWVudCAiQWx0ZXJhIFNvQ0ZQ R0EgU3lzdGVtLW9uLUNoaXAiCisKK2NvbmZpZyBBUkNIX1NPQ0ZQR0FfQ1lDTE9ORTUKKwlib29s CisJc2VsZWN0IENQVV9WNworCitjb25maWcgQVJDSF9TT0NGUEdBX0FSUklBMTAKKwlib29sCisJ c2VsZWN0IENQVV9WNworCXNlbGVjdCBIQVZFX01BQ0hfQVJNX0hFQUQKKwogY29uZmlnIE1BQ0hf U09DRlBHQV9BTFRFUkFfU09DREsKKwlzZWxlY3QgSEFWRV9ERUZBVUxUX0VOVklST05NRU5UX05F VworCXNlbGVjdCBBUkNIX1NPQ0ZQR0FfQ1lDTE9ORTUKIAlib29sICJBbHRlcmEgU29DRlBHQSBE ZXZlbG9wbWVudCBLaXQiCiAKIGNvbmZpZyBNQUNIX1NPQ0ZQR0FfRUJWX1NPQ1JBVEVTCisJc2Vs ZWN0IEhBVkVfREVGQVVMVF9FTlZJUk9OTUVOVF9ORVcKKwlzZWxlY3QgQVJDSF9TT0NGUEdBX0NZ Q0xPTkU1CiAJYm9vbCAiRUJWIFNvY3JhdGVzIgogCiBjb25maWcgTUFDSF9TT0NGUEdBX1RFUkFT SUNfREUwX05BTk9fU09DCisJc2VsZWN0IEhBVkVfREVGQVVMVF9FTlZJUk9OTUVOVF9ORVcKKwlz ZWxlY3QgQVJDSF9TT0NGUEdBX0NZQ0xPTkU1CiAJYm9vbCAiVGVyYXNpYyBERTAtTkFOTy1Tb0Mg YWthIEF0bGFzIgogCiBjb25maWcgTUFDSF9TT0NGUEdBX1RFUkFTSUNfU09DS0lUCisJc2VsZWN0 IEhBVkVfREVGQVVMVF9FTlZJUk9OTUVOVF9ORVcKKwlzZWxlY3QgQVJDSF9TT0NGUEdBX0NZQ0xP TkU1CiAJYm9vbCAiVGVyYXNpYyBTb0NLaXQiCiAKIGVuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2Fy bS9tYWNoLXNvY2ZwZ2EvTWFrZWZpbGUgYi9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EvTWFrZWZpbGUK aW5kZXggMzBiNzk2ZGQzYjRmLi5jYmI0N2ZhMjA2ZjIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21h Y2gtc29jZnBnYS9NYWtlZmlsZQorKysgYi9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EvTWFrZWZpbGUK QEAgLTEsNCArMSw4IEBACi1wYmwteSArPSBjeWNsb25lNS1pbml0Lm8gY3ljbG9uZTUtZnJlZXpl LWNvbnRyb2xsZXIubyBjeWNsb25lNS1zY2FuLW1hbmFnZXIubyBjeWNsb25lNS1zeXN0ZW0tbWFu YWdlci5vCi1wYmwteSArPSBjeWNsb25lNS1jbG9jay1tYW5hZ2VyLm8KLW9iai15ICs9IGN5Y2xv bmU1LWdlbmVyaWMubyBuaWMzMDEubyBjeWNsb25lNS1ib290c291cmNlLm8gY3ljbG9uZTUtcmVz ZXQtbWFuYWdlci5vCitwYmwtJChDT05GSUdfQVJDSF9TT0NGUEdBX0NZQ0xPTkU1KSArPSBjeWNs b25lNS1pbml0Lm8gY3ljbG9uZTUtZnJlZXplLWNvbnRyb2xsZXIubyBjeWNsb25lNS1zY2FuLW1h bmFnZXIubyBjeWNsb25lNS1zeXN0ZW0tbWFuYWdlci5vCitwYmwtJChDT05GSUdfQVJDSF9TT0NG UEdBX0NZQ0xPTkU1KSArPSBjeWNsb25lNS1jbG9jay1tYW5hZ2VyLm8KK29iai0kKENPTkZJR19B UkNIX1NPQ0ZQR0FfQ1lDTE9ORTUpICs9IGN5Y2xvbmU1LWdlbmVyaWMubyBuaWMzMDEubyBjeWNs b25lNS1ib290c291cmNlLm8gY3ljbG9uZTUtcmVzZXQtbWFuYWdlci5vCisKK3BibC0kKENPTkZJ R19BUkNIX1NPQ0ZQR0FfQVJSSUExMCkgKz0gYXJyaWExMC1pbml0Lm8gYXJyaWExMC1jbG9jay1t YW5hZ2VyLm8gYXJyaWExMC1zZHJhbS5vIGFycmlhMTAtcmVzZXQtbWFuYWdlci5vIGFycmlhMTAt Ym9vdHNvdXJjZS5vCitvYmotJChDT05GSUdfQVJDSF9TT0NGUEdBX0FSUklBMTApICs9IGFycmlh MTAtYm9vdHNvdXJjZS5vIGFycmlhMTAtZ2VuZXJpYy5vIGFycmlhMTAtcmVzZXQtbWFuYWdlci5v CisKIG9iai0kKENPTkZJR19BUkNIX1NPQ0ZQR0FfWExPQUQpICs9IHhsb2FkLm8KZGlmZiAtLWdp dCBhL2FyY2gvYXJtL21hY2gtc29jZnBnYS9hcnJpYTEwLWJvb3Rzb3VyY2UuYyBiL2FyY2gvYXJt L21hY2gtc29jZnBnYS9hcnJpYTEwLWJvb3Rzb3VyY2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLjI2YWY2NGExYTQwOAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gv YXJtL21hY2gtc29jZnBnYS9hcnJpYTEwLWJvb3Rzb3VyY2UuYwpAQCAtMCwwICsxLDUzIEBACisv KgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor ICoKKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8Ym9vdHNvdXJjZS5oPgor I2luY2x1ZGUgPGluaXQuaD4KKyNpbmNsdWRlIDxpby5oPgorI2luY2x1ZGUgPG1hY2gvYXJyaWEx MC1zeXN0ZW0tbWFuYWdlci5oPgorCitzdGF0aWMgaW50IGFycmlhMTBfYm9vdF9zYXZlX2xvYyh2 b2lkKQoreworCWVudW0gYm9vdHNvdXJjZSBzcmMgPSBCT09UU09VUkNFX1VOS05PV047CisJdWlu dDMyX3QgdmFsOworCisJdmFsID0gcmVhZGwoQVJSSUExMF9TWVNNR1JfQk9PVElORk8pOworCisJ c3dpdGNoICgodmFsICYgMHg3MDAwKSA+PiAxMikgeworCWNhc2UgMDoKKwkJLyogcmVzZXJ2ZWQg Ki8KKwkJYnJlYWs7CisJY2FzZSAxOgorCQkvKiBGUEdBLCBjdXJyZW50bHkgbm90IGRlY29kZWQg Ki8KKwkJYnJlYWs7CisJY2FzZSAyOgorCWNhc2UgMzoKKwkJc3JjID0gQk9PVFNPVVJDRV9OQU5E OworCQlicmVhazsKKwljYXNlIDQ6CisJY2FzZSA1OgorCQlzcmMgPSBCT09UU09VUkNFX01NQzsK KwkJYnJlYWs7CisJY2FzZSA2OgorCWNhc2UgNzoKKwkJc3JjID0gQk9PVFNPVVJDRV9TUEk7CisJ CWJyZWFrOworCX0KKworCWJvb3Rzb3VyY2Vfc2V0KHNyYyk7CisJYm9vdHNvdXJjZV9zZXRfaW5z dGFuY2UoMCk7CisKKwlyZXR1cm4gMDsKK30KK2NvcmVfaW5pdGNhbGwoYXJyaWExMF9ib290X3Nh dmVfbG9jKTsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtc29jZnBnYS9hcnJpYTEwLWNsb2Nr LW1hbmFnZXIuYyBiL2FyY2gvYXJtL21hY2gtc29jZnBnYS9hcnJpYTEwLWNsb2NrLW1hbmFnZXIu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjgwNTJhZmUyZDg2Mgot LS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL21hY2gtc29jZnBnYS9hcnJpYTEwLWNsb2NrLW1h bmFnZXIuYwpAQCAtMCwwICsxLDgxNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBbHRl cmEgQ29ycG9yYXRpb24gPHd3dy5hbHRlcmEuY29tPgorICoKKyAqIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOglHUEwtMi4wKworICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxh c20vaW8uaD4KKyNpbmNsdWRlIDxtYWNoL2dlbmVyaWMuaD4KKyNpbmNsdWRlIDxtYWNoL2Fycmlh MTAtcmVncy5oPgorI2luY2x1ZGUgPG1hY2gvYXJyaWExMC1jbG9jay1tYW5hZ2VyLmg+CisKK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgYXJyaWExMF9jbG9ja19tYW5hZ2VyICphcnJpYTEwX2Nsa21ncl9i YXNlID0KKwkodm9pZCAqKUFSUklBMTBfQ0xLTUdSX0FERFI7CisKK3N0YXRpYyB1aW50MzJfdCBl b3NjMV9oejsKK3N0YXRpYyB1aW50MzJfdCBjYl9pbnRvc2NfaHo7CitzdGF0aWMgdWludDMyX3Qg ZjJzX2ZyZWVfaHo7CisjZGVmaW5lIExPQ0tFRF9NQVNLCShBUlJJQTEwX0NMS01HUl9DTEtNR1Jf U1RBVF9NQUlOUExMTE9DS0VEX1NFVF9NU0sgfCBcCisJCQkgQVJSSUExMF9DTEtNR1JfQ0xLTUdS X1NUQVRfUEVSUExMTE9DS0VEX1NFVF9NU0spCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBhcnJpYTEw X2NtX3dhaXRfZm9yX2xvY2sodWludDMyX3QgbWFzaykKK3sKKwlyZWdpc3RlciB1aW50MzJfdCBp bnRlcl92YWw7CisKKwlkbyB7CisJCWludGVyX3ZhbCA9IHJlYWRsKCZhcnJpYTEwX2Nsa21ncl9i YXNlLT5zdGF0KSAmIG1hc2s7CisJfSB3aGlsZSAoaW50ZXJfdmFsICE9IG1hc2spOworfQorCisv KiBmdW5jdGlvbiB0byBwb2xsIGluIHRoZSBmc20gYnVzeSBiaXQgKi8KK3N0YXRpYyBpbmxpbmUg dm9pZCBhcnJpYTEwX2NtX3dhaXQ0ZnNtKHZvaWQpCit7CisJcmVnaXN0ZXIgdWludDMyX3QgaW50 ZXJfdmFsOworCisJZG8geworCQlpbnRlcl92YWwgPSByZWFkbCgmYXJyaWExMF9jbGttZ3JfYmFz ZS0+c3RhdCkgJgorCQkJQVJSSUExMF9DTEtNR1JfQ0xLTUdSX1NUQVRfQlVTWV9TRVRfTVNLOwor CX0gd2hpbGUgKGludGVyX3ZhbCk7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBhcnJpYTEwX2NtX2dl dF9tYWluX3Zjbyh2b2lkKQoreworCXVpbnQzMl90IHZjbzEsIHNyY19oeiwgbnVtZXIsIGRlbm9t LCB2Y287CisJdWludDMyX3QgY2xrX3NyYyA9IHJlYWRsKCZhcnJpYTEwX2Nsa21ncl9iYXNlLT5t YWluX3BsbF92Y28wKTsKKworCWNsa19zcmMgPSAoY2xrX3NyYyA+PiBBUlJJQTEwX0NMS01HUl9N QUlOUExMX1ZDTzBfUFNSQ19MU0IpICYKKwkJQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9WQ08wX1BT UkNfTVNLOworCisJc3dpdGNoIChjbGtfc3JjKSB7CisJY2FzZSBBUlJJQTEwX0NMS01HUl9NQUlO UExMX1ZDTzBfUFNSQ19FT1NDOgorCQlzcmNfaHogPSBlb3NjMV9oejsKKwkJYnJlYWs7CisJY2Fz ZSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX1ZDTzBfUFNSQ19FX0lOVE9TQzoKKwkJc3JjX2h6ID0g Y2JfaW50b3NjX2h6OworCQlicmVhazsKKwljYXNlIEFSUklBMTBfQ0xLTUdSX01BSU5QTExfVkNP MF9QU1JDX0YyUzoKKwkJc3JjX2h6ID0gZjJzX2ZyZWVfaHo7CisJCWJyZWFrOworCWRlZmF1bHQ6 CisJCXByX2VycigiYXJyaWExMF9jbV9nZXRfbWFpbl92Y28gaW52YWxpZCBjbGtfc3JjICVkXG4i LCBjbGtfc3JjKTsKKwkJcmV0dXJuIDA7CisJfQorCisJdmNvMSA9IHJlYWRsKCZhcnJpYTEwX2Ns a21ncl9iYXNlLT5tYWluX3BsbF92Y28xKTsKKwludW1lciA9IHZjbzEgJiBBUlJJQTEwX0NMS01H Ul9NQUlOUExMX1ZDTzFfTlVNRVJfTVNLOworCWRlbm9tID0gKHZjbzEgPj4gQVJSSUExMF9DTEtN R1JfTUFJTlBMTF9WQ08xX0RFTk9NX0xTQikgJgorCQkgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9W Q08xX0RFTk9NX01TSzsKKwl2Y28gPSBzcmNfaHogKiAoMSArIG51bWVyKTsKKwl2Y28gLz0gMSAr IGRlbm9tOworCisJcmV0dXJuIHZjbzsKK30KKworc3RhdGljIHVpbnQzMl90IGFycmlhMTBfY21f Z2V0X3BlcmlfdmNvKHZvaWQpCit7CisJdWludDMyX3QgdmNvMSwgc3JjX2h6LCBudW1lciwgZGVu b20sIHZjbzsKKwl1aW50MzJfdCBjbGtfc3JjID0gcmVhZGwoJmFycmlhMTBfY2xrbWdyX2Jhc2Ut PnBlcl9wbGxfdmNvMCk7CisKKwljbGtfc3JjID0gKGNsa19zcmMgPj4gQVJSSUExMF9DTEtNR1Jf UEVSUExMX1ZDTzBfUFNSQ19MU0IpICYKKwkJQVJSSUExMF9DTEtNR1JfUEVSUExMX1ZDTzBfUFNS Q19NU0s7CisKKwlzd2l0Y2ggKGNsa19zcmMpIHsKKwljYXNlIEFSUklBMTBfQ0xLTUdSX1BFUlBM TF9WQ08wX1BTUkNfRU9TQzoKKwkJc3JjX2h6ID0gZW9zYzFfaHo7CisJCWJyZWFrOworCWNhc2Ug QVJSSUExMF9DTEtNR1JfUEVSUExMX1ZDTzBfUFNSQ19FX0lOVE9TQzoKKwkJc3JjX2h6ID0gY2Jf aW50b3NjX2h6OworCQlicmVhazsKKwljYXNlIEFSUklBMTBfQ0xLTUdSX1BFUlBMTF9WQ08wX1BT UkNfRjJTOgorCQlzcmNfaHogPSBmMnNfZnJlZV9oejsKKwkJYnJlYWs7CisJY2FzZSBBUlJJQTEw X0NMS01HUl9QRVJQTExfVkNPMF9QU1JDX01BSU46CisJCXNyY19oeiA9IGFycmlhMTBfY21fZ2V0 X21haW5fdmNvKCk7CisJCXNyY19oeiAvPSAocmVhZGwoJmFycmlhMTBfY2xrbWdyX2Jhc2UtPm1h aW5fcGxsX2NudHIxNWNsaykgJgorCQkJICAgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9DTlRSQ0xL X01TSykgKyAxOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlwcl9lcnIoImFycmlhMTBfY21fZ2V0 X3BlcmlfdmNvIGludmFsaWQgY2xrX3NyYyAlZFxuIiwgY2xrX3NyYyk7CisJCXJldHVybiAwOwor CX0KKworCXZjbzEgPSByZWFkbCgmYXJyaWExMF9jbGttZ3JfYmFzZS0+cGVyX3BsbF92Y28xKTsK KwludW1lciA9IHZjbzEgJiBBUlJJQTEwX0NMS01HUl9QRVJQTExfVkNPMV9OVU1FUl9NU0s7CisJ ZGVub20gPSAodmNvMSA+PiBBUlJJQTEwX0NMS01HUl9QRVJQTExfVkNPMV9ERU5PTV9MU0IpICYK KwkJQVJSSUExMF9DTEtNR1JfUEVSUExMX1ZDTzFfREVOT01fTVNLOworCXZjbyA9IHNyY19oeiAq ICgxICsgbnVtZXIpOworCXZjbyAvPSAxICsgZGVub207CisKKwlyZXR1cm4gdmNvOworfQorCit1 bnNpZ25lZCBpbnQgYXJyaWExMF9jbV9nZXRfbW1jX2NvbnRyb2xsZXJfY2xrX2h6KHZvaWQpCit7 CisJdWludDMyX3QgY2xrX2h6ID0gMDsKKwl1aW50MzJfdCBjbGtfaW5wdXQgPSByZWFkbCgmYXJy aWExMF9jbGttZ3JfYmFzZS0+cGVyX3BsbF9jbnRyNmNsayk7CisJY2xrX2lucHV0ID0gKGNsa19p bnB1dCA+PiBBUlJJQTEwX0NMS01HUl9QRVJQTExfQ05UUjZDTEtfU1JDX0xTQikgJgorCQlBUlJJ QTEwX0NMS01HUl9QRVJQTExHUlBfU1JDX01TSzsKKworCXN3aXRjaCAoY2xrX2lucHV0KSB7CisJ Y2FzZSBBUlJJQTEwX0NMS01HUl9QRVJQTExHUlBfU1JDX01BSU46CisJCWNsa19oeiA9IGFycmlh MTBfY21fZ2V0X21haW5fdmNvKCk7CisJCWNsa19oeiAvPSAxICsgKHJlYWRsKCZhcnJpYTEwX2Ns a21ncl9iYXNlLT5tYWluX3BsbF9jbnRyNmNsaykgJgorCQkJICAgICAgIEFSUklBMTBfQ0xLTUdS X01BSU5QTExfQ05UUkNMS19NU0spOworCQlicmVhazsKKworCWNhc2UgQVJSSUExMF9DTEtNR1Jf UEVSUExMR1JQX1NSQ19QRVJJOgorCQljbGtfaHogPSBhcnJpYTEwX2NtX2dldF9wZXJpX3Zjbygp OworCQljbGtfaHogLz0gMSArIChyZWFkbCgmYXJyaWExMF9jbGttZ3JfYmFzZS0+cGVyX3BsbF9j bnRyNmNsaykgJgorCQkJICAgICAgIEFSUklBMTBfQ0xLTUdSX1BFUlBMTF9DTlRSQ0xLX01TSyk7 CisJCWJyZWFrOworCisJY2FzZSBBUlJJQTEwX0NMS01HUl9QRVJQTExHUlBfU1JDX09TQzE6CisJ CWNsa19oeiA9IGVvc2MxX2h6OworCQlicmVhazsKKworCWNhc2UgQVJSSUExMF9DTEtNR1JfUEVS UExMR1JQX1NSQ19JTlRPU0M6CisJCWNsa19oeiA9IGNiX2ludG9zY19oejsKKwkJYnJlYWs7CisK KwljYXNlIEFSUklBMTBfQ0xLTUdSX1BFUlBMTEdSUF9TUkNfRlBHQToKKwkJY2xrX2h6ID0gZjJz X2ZyZWVfaHo7CisJCWJyZWFrOworCX0KKworCXJldHVybiBjbGtfaHovNDsKK30KKworLyogY2Fs Y3VsYXRlIHRoZSBpbnRlbmRlZCBtYWluIFZDTyBmcmVxdWVuY3kgYmFzZWQgb24gaGFuZG9mZiAq Lworc3RhdGljIHVpbnQzMl90IGFycmlhMTBfY21fY2FsY19oYW5kb2ZmX21haW5fdmNvX2Nsa19o eihzdHJ1Y3QgYXJyaWExMF9tYWlucGxsX2NmZyAqbWFpbl9jZmcpCit7CisJdWludDMyX3QgY2xr X2h6OworCisJLyogQ2hlY2sgbWFpbiBWQ08gY2xvY2sgc291cmNlOiBlb3NjLCBpbnRvc2Mgb3Ig ZjJzPyAqLworCXN3aXRjaCAobWFpbl9jZmctPnZjbzBfcHNyYykgeworCWNhc2UgQVJSSUExMF9D TEtNR1JfTUFJTlBMTF9WQ08wX1BTUkNfRU9TQzoKKwkJY2xrX2h6ID0gZW9zYzFfaHo7CisJCWJy ZWFrOworCWNhc2UgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9WQ08wX1BTUkNfRV9JTlRPU0M6CisJ CWNsa19oeiA9IGNiX2ludG9zY19oejsKKwkJYnJlYWs7CisJY2FzZSBBUlJJQTEwX0NMS01HUl9N QUlOUExMX1ZDTzBfUFNSQ19GMlM6CisJCWNsa19oeiA9IGYyc19mcmVlX2h6OworCQlicmVhazsK KwlkZWZhdWx0OgorCQlyZXR1cm4gMDsKKwl9CisKKwkvKiBjYWxjdWxhdGUgdGhlIFZDTyBmcmVx dWVuY3kgKi8KKwljbGtfaHogKj0gMSArIG1haW5fY2ZnLT52Y28xX251bWVyOworCWNsa19oeiAv PSAxICsgbWFpbl9jZmctPnZjbzFfZGVub207CisKKwlyZXR1cm4gY2xrX2h6OworfQorCisvKiBj YWxjdWxhdGUgdGhlIGludGVuZGVkIHBlcmlwaCBWQ08gZnJlcXVlbmN5IGJhc2VkIG9uIGhhbmRv ZmYgKi8KK3N0YXRpYyB1aW50MzJfdCBhcnJpYTEwX2NtX2NhbGNfaGFuZG9mZl9wZXJpcGhfdmNv X2Nsa19oeihzdHJ1Y3QgYXJyaWExMF9tYWlucGxsX2NmZyAqbWFpbl9jZmcsCisJCQkJCQkJICBz dHJ1Y3QgYXJyaWExMF9wZXJwbGxfY2ZnICpwZXJfY2ZnKQoreworCXVpbnQzMl90IGNsa19oejsK KworCS8qIENoZWNrIHBlcmlwaCBWQ08gY2xvY2sgc291cmNlOiBlb3NjLCBpbnRvc2MsIGYycyBv ciBtYWlucGxsPyAqLworCXN3aXRjaCAocGVyX2NmZy0+dmNvMF9wc3JjKSB7CisJY2FzZSBBUlJJ QTEwX0NMS01HUl9QRVJQTExfVkNPMF9QU1JDX0VPU0M6CisJCWNsa19oeiA9IGVvc2MxX2h6Owor CQlicmVhazsKKwljYXNlIEFSUklBMTBfQ0xLTUdSX1BFUlBMTF9WQ08wX1BTUkNfRV9JTlRPU0M6 CisJCWNsa19oeiA9IGNiX2ludG9zY19oejsKKwkJYnJlYWs7CisJY2FzZSBBUlJJQTEwX0NMS01H Ul9QRVJQTExfVkNPMF9QU1JDX0YyUzoKKwkJY2xrX2h6ID0gZjJzX2ZyZWVfaHo7CisJCWJyZWFr OworCWNhc2UgQVJSSUExMF9DTEtNR1JfUEVSUExMX1ZDTzBfUFNSQ19NQUlOOgorCQljbGtfaHog PSBhcnJpYTEwX2NtX2NhbGNfaGFuZG9mZl9tYWluX3Zjb19jbGtfaHoobWFpbl9jZmcpOworCQlj bGtfaHogLz0gbWFpbl9jZmctPmNudHIxNWNsa19jbnQ7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJ CXJldHVybiAwOworCX0KKworCS8qIGNhbGN1bGF0ZSB0aGUgVkNPIGZyZXF1ZW5jeSAqLworCWNs a19oeiAqPSAxICsgcGVyX2NmZy0+dmNvMV9udW1lcjsKKwljbGtfaHogLz0gMSArIHBlcl9jZmct PnZjbzFfZGVub207CisKKwlyZXR1cm4gY2xrX2h6OworfQorCisvKiBjYWxjdWxhdGUgdGhlIGlu dGVuZGVkIE1QVSBjbG9jayBmcmVxdWVuY3kgYmFzZWQgb24gaGFuZG9mZiAqLworc3RhdGljIHVp bnQzMl90IGFycmlhMTBfY21fY2FsY19oYW5kb2ZmX21wdV9jbGtfaHooc3RydWN0IGFycmlhMTBf bWFpbnBsbF9jZmcgKm1haW5fY2ZnLAorCQkJCQkJICAgc3RydWN0IGFycmlhMTBfcGVycGxsX2Nm ZyAqcGVyX2NmZykKK3sKKwl1aW50MzJfdCBjbGtfaHo7CisKKwkvKiBDaGVjayBNUFUgY2xvY2sg c291cmNlOiBtYWluLCBwZXJpcGgsIG9zYzEsIGludG9zYyBvciBmMnM/ICovCisJc3dpdGNoICht YWluX2NmZy0+bXB1Y2xrX3NyYykgeworCWNhc2UgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9NUFVD TEtfU1JDX01BSU46CisJCWNsa19oeiA9IGFycmlhMTBfY21fY2FsY19oYW5kb2ZmX21haW5fdmNv X2Nsa19oeihtYWluX2NmZyk7CisJCWNsa19oeiAvPSAoKG1haW5fY2ZnLT5tcHVjbGsgJiBBUlJJ QTEwX0NMS01HUl9NQUlOUExMX01QVUNMS19DTlRfTVNLKQorCQkJICAgKyAxKTsKKwkJYnJlYWs7 CisJY2FzZSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX01QVUNMS19TUkNfUEVSSToKKwkJY2xrX2h6 ID0gYXJyaWExMF9jbV9jYWxjX2hhbmRvZmZfcGVyaXBoX3Zjb19jbGtfaHoobWFpbl9jZmcsIHBl cl9jZmcpOworCQljbGtfaHogLz0gKCgobWFpbl9jZmctPm1wdWNsayA+PgorCQkJICAgQVJSSUEx MF9DTEtNR1JfTUFJTlBMTF9NUFVDTEtfUEVSSUNOVF9MU0IpICYKKwkJCSAgIEFSUklBMTBfQ0xL TUdSX01BSU5QTExfTVBVQ0xLX0NOVF9NU0spICsgMSk7CisJCWJyZWFrOworCWNhc2UgQVJSSUEx MF9DTEtNR1JfTUFJTlBMTF9NUFVDTEtfU1JDX09TQzE6CisJCWNsa19oeiA9IGVvc2MxX2h6Owor CQlicmVhazsKKwljYXNlIEFSUklBMTBfQ0xLTUdSX01BSU5QTExfTVBVQ0xLX1NSQ19JTlRPU0M6 CisJCWNsa19oeiA9IGNiX2ludG9zY19oejsKKwkJYnJlYWs7CisJY2FzZSBBUlJJQTEwX0NMS01H Ul9NQUlOUExMX01QVUNMS19TUkNfRlBHQToKKwkJY2xrX2h6ID0gZjJzX2ZyZWVfaHo7CisJCWJy ZWFrOworCWRlZmF1bHQ6CisJCXJldHVybiAwOworCX0KKworCWNsa19oeiAvPSAobWFpbl9jZmct Pm1wdWNsa19jbnQgKyAxKTsKKworCXJldHVybiBjbGtfaHo7Cit9CisKKy8qIGNhbGN1bGF0ZSB0 aGUgaW50ZW5kZWQgTk9DIGNsb2NrIGZyZXF1ZW5jeSBiYXNlZCBvbiBoYW5kb2ZmICovCitzdGF0 aWMgdWludDMyX3QgYXJyaWExMF9jbV9jYWxjX2hhbmRvZmZfbm9jX2Nsa19oeihzdHJ1Y3QgYXJy aWExMF9tYWlucGxsX2NmZyAqbWFpbl9jZmcsCisJCQkJCQkgICBzdHJ1Y3QgYXJyaWExMF9wZXJw bGxfY2ZnICpwZXJfY2ZnKQoreworCXVpbnQzMl90IGNsa19oejsKKworCS8qIENoZWNrIE1QVSBj bG9jayBzb3VyY2U6IG1haW4sIHBlcmlwaCwgb3NjMSwgaW50b3NjIG9yIGYycz8gKi8KKwlzd2l0 Y2ggKG1haW5fY2ZnLT5ub2NjbGtfc3JjKSB7CisJY2FzZSBBUlJJQTEwX0NMS01HUl9NQUlOUExM X05PQ0NMS19TUkNfTUFJTjoKKwkJY2xrX2h6ID0gYXJyaWExMF9jbV9jYWxjX2hhbmRvZmZfbWFp bl92Y29fY2xrX2h6KG1haW5fY2ZnKTsKKwkJY2xrX2h6IC89ICgobWFpbl9jZmctPm5vY2NsayAm IEFSUklBMTBfQ0xLTUdSX01BSU5QTExfTk9DQ0xLX0NOVF9NU0spCisJCQkgICArIDEpOworCQli cmVhazsKKwljYXNlIEFSUklBMTBfQ0xLTUdSX01BSU5QTExfTk9DQ0xLX1NSQ19QRVJJOgorCQlj bGtfaHogPSBhcnJpYTEwX2NtX2NhbGNfaGFuZG9mZl9wZXJpcGhfdmNvX2Nsa19oeihtYWluX2Nm ZywgcGVyX2NmZyk7CisJCWNsa19oeiAvPSAoKChtYWluX2NmZy0+bm9jY2xrID4+CisJCQkgICBB UlJJQTEwX0NMS01HUl9NQUlOUExMX05PQ0NMS19QRVJJQ05UX0xTQikgJgorCQkJICAgQVJSSUEx MF9DTEtNR1JfTUFJTlBMTF9OT0NDTEtfQ05UX01TSykgKyAxKTsKKwkJYnJlYWs7CisJY2FzZSBB UlJJQTEwX0NMS01HUl9NQUlOUExMX05PQ0NMS19TUkNfT1NDMToKKwkJY2xrX2h6ID0gZW9zYzFf aHo7CisJCWJyZWFrOworCWNhc2UgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9OT0NDTEtfU1JDX0lO VE9TQzoKKwkJY2xrX2h6ID0gY2JfaW50b3NjX2h6OworCQlicmVhazsKKwljYXNlIEFSUklBMTBf Q0xLTUdSX01BSU5QTExfTk9DQ0xLX1NSQ19GUEdBOgorCQljbGtfaHogPSBmMnNfZnJlZV9oejsK KwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIDA7CisJfQorCisJY2xrX2h6IC89IChtYWlu X2NmZy0+bm9jY2xrX2NudCArIDEpOworCisJcmV0dXJuIGNsa19oejsKK30KKworLyogcmV0dXJu IDEgaWYgUExMIHJhbXAgaXMgcmVxdWlyZWQgKi8KK3N0YXRpYyBpbnQgYXJyaWExMF9jbV9pc19w bGxfcmFtcF9yZXF1aXJlZChpbnQgbWFpbjBwZXJpcGgxLAorCQkJCQkgICBzdHJ1Y3QgYXJyaWEx MF9tYWlucGxsX2NmZyAqbWFpbl9jZmcsCisJCQkJCSAgIHN0cnVjdCBhcnJpYTEwX3BlcnBsbF9j ZmcgKnBlcl9jZmcpCit7CisKKwkvKiBDaGVjayBmb3IgbWFpbiBQTEwgKi8KKwlpZiAobWFpbjBw ZXJpcGgxID09IDApIHsKKwkJLyoKKwkJICogUExMIHJhbXAgaXMgbm90IHJlcXVpcmVkIGlmIGJv dGggTVBVIGNsb2NrIGFuZCBOT0MgY2xvY2sgYXJlCisJCSAqIG5vdCBzb3VyY2VkIGZyb20gbWFp biBQTEwKKwkJICovCisJCWlmIChtYWluX2NmZy0+bXB1Y2xrX3NyYyAhPSBBUlJJQTEwX0NMS01H Ul9NQUlOUExMX01QVUNMS19TUkNfTUFJTiAmJgorCQkgICAgbWFpbl9jZmctPm5vY2Nsa19zcmMg IT0gQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9OT0NDTEtfU1JDX01BSU4pCisJCQlyZXR1cm4gMDsK KworCQkvKgorCQkgKiBQTEwgcmFtcCBpcyByZXF1aXJlZCBpZiBNUFUgY2xvY2sgaXMgc291cmNl ZCBmcm9tIG1haW4gUExMCisJCSAqIGFuZCBNUFUgY2xvY2sgaXMgb3ZlciA5MDBNSHogKGFzIGFk dmlzZWQgYnkgSFcgdGVhbSkKKwkJICovCisJCWlmIChtYWluX2NmZy0+bXB1Y2xrX3NyYyA9PSBB UlJJQTEwX0NMS01HUl9NQUlOUExMX01QVUNMS19TUkNfTUFJTiAmJgorCQkgICAgKGFycmlhMTBf Y21fY2FsY19oYW5kb2ZmX21wdV9jbGtfaHoobWFpbl9jZmcsIHBlcl9jZmcpID4KKwkJICAgICBB UlJJQTEwX0NMS01HUl9QTExfUkFNUF9NUFVDTEtfVEhSRVNIT0xEX0haKSkKKwkJCXJldHVybiAx OworCisJCS8qCisJCSAqIFBMTCByYW1wIGlzIHJlcXVpcmVkIGlmIE5PQyBjbG9jayBpcyBzb3Vy Y2VkIGZyb20gbWFpbiBQTEwKKwkJICogYW5kIE5PQyBjbG9jayBpcyBvdmVyIDMwME1IeiAoYXMg YWR2aXNlZCBieSBIVyB0ZWFtKQorCQkgKi8KKwkJaWYgKG1haW5fY2ZnLT5ub2NjbGtfc3JjID09 IEFSUklBMTBfQ0xLTUdSX01BSU5QTExfTk9DQ0xLX1NSQ19NQUlOICYmCisJCSAgICAoYXJyaWEx MF9jbV9jYWxjX2hhbmRvZmZfbm9jX2Nsa19oeihtYWluX2NmZywgcGVyX2NmZykgPgorCQkgICAg IEFSUklBMTBfQ0xLTUdSX1BMTF9SQU1QX05PQ0NMS19USFJFU0hPTERfSFopKQorCQkJcmV0dXJu IDE7CisKKwl9IGVsc2UgaWYgKG1haW4wcGVyaXBoMSA9PSAxKSB7CisJCS8qCisJCSAqIFBMTCBy YW1wIGlzIG5vdCByZXF1aXJlZCBpZiBib3RoIE1QVSBjbG9jayBhbmQgTk9DIGNsb2NrIGFyZQor CQkgKiBub3Qgc291cmNlZCBmcm9tIHBlcmlwaCBQTEwKKwkJICovCisJCWlmIChtYWluX2NmZy0+ bXB1Y2xrX3NyYyAhPSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX01QVUNMS19TUkNfUEVSSSAmJgor CQkgICAgbWFpbl9jZmctPm5vY2Nsa19zcmMgIT0gQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9OT0ND TEtfU1JDX1BFUkkpCisJCQlyZXR1cm4gMDsKKworCQkvKgorCQkgKiBQTEwgcmFtcCBpcyByZXF1 aXJlZCBpZiBNUFUgY2xvY2sgYXJlIHNvdXJjZSBmcm9tIHBlcmlwaCBQTEwKKwkJICogYW5kIE1Q VSBjbG9jayBpcyBvdmVyIDkwME1IeiAoYXMgYWR2aXNlZCBieSBIVyB0ZWFtKQorCQkgKi8KKwkJ aWYgKG1haW5fY2ZnLT5tcHVjbGtfc3JjID09IEFSUklBMTBfQ0xLTUdSX01BSU5QTExfTVBVQ0xL X1NSQ19QRVJJICYmCisJCSAgICAoYXJyaWExMF9jbV9jYWxjX2hhbmRvZmZfbXB1X2Nsa19oeiht YWluX2NmZywgcGVyX2NmZykgPgorCQkgICAgIEFSUklBMTBfQ0xLTUdSX1BMTF9SQU1QX01QVUNM S19USFJFU0hPTERfSFopKQorCQkJcmV0dXJuIDE7CisKKwkJLyoKKwkJICogUExMIHJhbXAgaXMg cmVxdWlyZWQgaWYgTk9DIGNsb2NrIGFyZSBzb3VyY2UgZnJvbSBwZXJpcGggUExMCisJCSAqIGFu ZCBOT0MgY2xvY2sgaXMgb3ZlciAzMDBNSHogKGFzIGFkdmlzZWQgYnkgSFcgdGVhbSkKKwkJICov CisJCWlmIChtYWluX2NmZy0+bm9jY2xrX3NyYyA9PSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX05P Q0NMS19TUkNfUEVSSSAmJgorCQkgICAgKGFycmlhMTBfY21fY2FsY19oYW5kb2ZmX25vY19jbGtf aHoobWFpbl9jZmcsIHBlcl9jZmcpID4KKwkJICAgICBBUlJJQTEwX0NMS01HUl9QTExfUkFNUF9O T0NDTEtfVEhSRVNIT0xEX0haKSkKKwkJCXJldHVybiAxOworCX0KKworCXJldHVybiAwOworfQor CisvKgorICogQ2FsY3VsYXRlIHRoZSBuZXcgUExMIG51bWVyYXRvciB3aGljaCBpcyBiYXNlZCBv biBleGlzdGluZyBEVFMgaGFuZCBvZmYgYW5kCisgKiBpbnRlbmRlZCBzYWZlIGZyZXF1ZW5jeSAo c2FmZV9oeikuIE5vdGUgdGhhdCBQTEwgcmFtcCBpcyBvbmx5IG1vZGlmeWluZyB0aGUKKyAqIG51 bWVyYXRvciB3aGlsZSBtYWludGFpbmluZyBkZW5vbWluYXRvciBhcyBkZW5vbWluYXRvciB3aWxs IGluZmx1ZW5jZSB0aGUKKyAqIGppdHRlciBjb25kaXRpb24uIFBsZWFzZSByZWZlciBBMTAgSFBT IFRSTSBmb3IgdGhlIGppdHRlciBndWlkZS4gTm90ZSBmaW5hbAorICogdmFsdWUgZm9yIG51bWVy YXRvciBpcyBtaW51cyB3aXRoIDEgdG8gY2F0ZXIgb3VyIHJlZ2lzdGVyIHZhbHVlCisgKiByZXBy ZXNlbnRhdGlvbi4KKyAqLworc3RhdGljIHVpbnQzMl90IGFycmlhMTBfY21fY2FsY19zYWZlX3Bs bF9udW1lcihpbnQgbWFpbjBwZXJpcGgxLAorCQkJCQkgICAgICAgc3RydWN0IGFycmlhMTBfbWFp bnBsbF9jZmcgKm1haW5fY2ZnLAorCQkJCQkgICAgICAgc3RydWN0IGFycmlhMTBfcGVycGxsX2Nm ZyAqcGVyX2NmZywKKwkJCQkJICAgICAgIHVpbnQzMl90IHNhZmVfaHopCit7CisJdWludDMyX3Qg Y2xrX2h6ID0gMDsKKworCS8qIENoZWNrIGZvciBtYWluIFBMTCAqLworCWlmIChtYWluMHBlcmlw aDEgPT0gMCkgeworCQkvKiBDaGVjayBtYWluIFZDTyBjbG9jayBzb3VyY2U6IGVvc2MsIGludG9z YyBvciBmMnM/ICovCisJCXN3aXRjaCAobWFpbl9jZmctPnZjbzBfcHNyYykgeworCQljYXNlIEFS UklBMTBfQ0xLTUdSX01BSU5QTExfVkNPMF9QU1JDX0VPU0M6CisJCQljbGtfaHogPSBlb3NjMV9o ejsKKwkJCWJyZWFrOworCQljYXNlIEFSUklBMTBfQ0xLTUdSX01BSU5QTExfVkNPMF9QU1JDX0Vf SU5UT1NDOgorCQkJY2xrX2h6ID0gY2JfaW50b3NjX2h6OworCQkJYnJlYWs7CisJCWNhc2UgQVJS SUExMF9DTEtNR1JfTUFJTlBMTF9WQ08wX1BTUkNfRjJTOgorCQkJY2xrX2h6ID0gZjJzX2ZyZWVf aHo7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXJldHVybiAwOworCQl9CisKKwkJLyogQXBw bGljYWJsZSBpZiBNUFUgY2xvY2sgaXMgZnJvbSBtYWluIFBMTCAqLworCQlpZiAobWFpbl9jZmct Pm1wdWNsa19zcmMgPT0gQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9NUFVDTEtfU1JDX01BSU4pIHsK KwkJCS8qIGNhbGN1bGF0ZSB0aGUgc2FmZSBudW1lciB2YWx1ZSAqLworCQkJY2xrX2h6ID0gKHNh ZmVfaHogLyBjbGtfaHopICoKKwkJCQkobWFpbl9jZmctPm1wdWNsa19jbnQgKyAxKSAqCisJCQkJ KChtYWluX2NmZy0+bXB1Y2xrICYKKwkJCQkgIEFSUklBMTBfQ0xLTUdSX01BSU5QTExfTVBVQ0xL X0NOVF9NU0spICsgMSkgKgorCQkJCSgxICsgbWFpbl9jZmctPnZjbzFfZGVub20pIC0gMTsKKwkJ fQorCQkvKiBSZWFjaCBoZXJlIGlmIE1QVSBjbGsgbm90IGZyb20gbWFpbiBQTEwgYnV0IE5PQyBj bGsgaXMgKi8KKwkJZWxzZSBpZiAobWFpbl9jZmctPm5vY2Nsa19zcmMgPT0KKwkJCSBBUlJJQTEw X0NMS01HUl9NQUlOUExMX05PQ0NMS19TUkNfTUFJTikgeworCQkJLyogY2FsY3VsYXRlIHRoZSBz YWZlIG51bWVyIHZhbHVlICovCisJCQljbGtfaHogPSAoc2FmZV9oeiAvIGNsa19oeikgKgorCQkJ CShtYWluX2NmZy0+bm9jY2xrX2NudCArIDEpICoKKwkJCQkoKG1haW5fY2ZnLT5ub2NjbGsgJgor CQkJCSAgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9OT0NDTEtfQ05UX01TSykgKyAxKSAqCisJCQkJ KDEgKyBtYWluX2NmZy0+dmNvMV9kZW5vbSkgLSAxOworCQl9IGVsc2UgeworCQkJY2xrX2h6ID0g MDsKKwkJfQorCisJfSBlbHNlIGlmIChtYWluMHBlcmlwaDEgPT0gMSkgeworCQkvKiBDaGVjayBw ZXJpcGggVkNPIGNsb2NrIHNvdXJjZTogZW9zYywgaW50b3NjLCBmMnMsIG1haW5wbGwgKi8KKwkJ c3dpdGNoIChwZXJfY2ZnLT52Y28wX3BzcmMpIHsKKwkJY2FzZSBBUlJJQTEwX0NMS01HUl9QRVJQ TExfVkNPMF9QU1JDX0VPU0M6CisJCQljbGtfaHogPSBlb3NjMV9oejsKKwkJCWJyZWFrOworCQlj YXNlIEFSUklBMTBfQ0xLTUdSX1BFUlBMTF9WQ08wX1BTUkNfRV9JTlRPU0M6CisJCQljbGtfaHog PSBjYl9pbnRvc2NfaHo7CisJCQlicmVhazsKKwkJY2FzZSBBUlJJQTEwX0NMS01HUl9QRVJQTExf VkNPMF9QU1JDX0YyUzoKKwkJCWNsa19oeiA9IGYyc19mcmVlX2h6OworCQkJYnJlYWs7CisJCWNh c2UgQVJSSUExMF9DTEtNR1JfUEVSUExMX1ZDTzBfUFNSQ19NQUlOOgorCQkJY2xrX2h6ID0gYXJy aWExMF9jbV9jYWxjX2hhbmRvZmZfbWFpbl92Y29fY2xrX2h6KAorCQkJCSBtYWluX2NmZyk7CisJ CQljbGtfaHogLz0gbWFpbl9jZmctPmNudHIxNWNsa19jbnQ7CisJCQlicmVhazsKKwkJZGVmYXVs dDoKKwkJCXJldHVybiAwOworCQl9CisJCS8qIEFwcGxpY2FibGUgaWYgTVBVIGNsb2NrIGlzIGZy b20gcGVyaXBoIFBMTCAqLworCQlpZiAobWFpbl9jZmctPm1wdWNsa19zcmMgPT0gQVJSSUExMF9D TEtNR1JfTUFJTlBMTF9NUFVDTEtfU1JDX1BFUkkpIHsKKwkJCS8qIGNhbGN1bGF0ZSB0aGUgc2Fm ZSBudW1lciB2YWx1ZSAqLworCQkJY2xrX2h6ID0gKHNhZmVfaHogLyBjbGtfaHopICoKKwkJCQko bWFpbl9jZmctPm1wdWNsa19jbnQgKyAxKSAqCisJCQkJKCgobWFpbl9jZmctPm1wdWNsayA+Pgor CQkJCSAgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9NUFVDTEtfUEVSSUNOVF9MU0IpICYKKwkJCQkg IEFSUklBMTBfQ0xLTUdSX01BSU5QTExfTVBVQ0xLX0NOVF9NU0spICsgMSkgKgorCQkJCSgxICsg cGVyX2NmZy0+dmNvMV9kZW5vbSkgLSAxOworCQl9CisJCS8qIFJlYWNoIGhlcmUgaWYgTVBVIGNs ayBub3QgZnJvbSBwZXJpcGggUExMIGJ1dCBOT0MgY2xrIGlzICovCisJCWVsc2UgaWYgKG1haW5f Y2ZnLT5ub2NjbGtfc3JjID09CisJCQkgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9OT0NDTEtfU1JD X1BFUkkpIHsKKwkJCS8qIGNhbGN1bGF0ZSB0aGUgc2FmZSBudW1lciB2YWx1ZSAqLworCQkJY2xr X2h6ID0gKHNhZmVfaHogLyBjbGtfaHopICoKKwkJCQkobWFpbl9jZmctPm5vY2Nsa19jbnQgKyAx KSAqCisJCQkJKCgobWFpbl9jZmctPm5vY2NsayA+PgorCQkJCSAgQVJSSUExMF9DTEtNR1JfTUFJ TlBMTF9OT0NDTEtfUEVSSUNOVF9MU0IpICYKKwkJCQkgIEFSUklBMTBfQ0xLTUdSX01BSU5QTExf Tk9DQ0xLX0NOVF9NU0spICsgMSkgKgorCQkJCSgxICsgcGVyX2NmZy0+dmNvMV9kZW5vbSkgLSAx OworCQl9IGVsc2UgeworCQkJY2xrX2h6ID0gMDsKKwkJfQorCX0KKworCXJldHVybiBjbGtfaHo7 Cit9CisKKy8qIHJhbXBpbmcgdGhlIG1haW4gUExMIHRvIGZpbmFsIHZhbHVlICovCitzdGF0aWMg dm9pZCBhcnJpYTEwX2NtX3BsbF9yYW1wX21haW4oc3RydWN0IGFycmlhMTBfbWFpbnBsbF9jZmcg Km1haW5fY2ZnLAorCQkJCSAgICAgc3RydWN0IGFycmlhMTBfcGVycGxsX2NmZyAqcGVyX2NmZywK KwkJCQkgICAgIHVpbnQzMl90IHBsbF9yYW1wX21haW5faHopCit7CisJdWludDMyX3QgY2xrX2h6 ID0gMDsKKwl1aW50MzJfdCBjbGtfaW5jcl9oeiA9IDA7CisJdWludDMyX3QgY2xrX2ZpbmFsX2h6 ID0gMDsKKworCS8qIGZpbmQgb3V0IHRoZSBpbmNyZW1lbnQgdmFsdWUgKi8KKwlpZiAobWFpbl9j ZmctPm1wdWNsa19zcmMgPT0gQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9NUFVDTEtfU1JDX01BSU4p IHsKKwkJY2xrX2luY3JfaHogPSBBUlJJQTEwX0NMS01HUl9QTExfUkFNUF9NUFVDTEtfSU5DUkVN RU5UX0haOworCQljbGtfZmluYWxfaHogPSBhcnJpYTEwX2NtX2NhbGNfaGFuZG9mZl9tcHVfY2xr X2h6KG1haW5fY2ZnLCBwZXJfY2ZnKTsKKwl9IGVsc2UgaWYgKG1haW5fY2ZnLT5ub2NjbGtfc3Jj ID09IEFSUklBMTBfQ0xLTUdSX01BSU5QTExfTk9DQ0xLX1NSQ19NQUlOKSB7CisJCWNsa19pbmNy X2h6ID0gQVJSSUExMF9DTEtNR1JfUExMX1JBTVBfTk9DQ0xLX0lOQ1JFTUVOVF9IWjsKKwkJY2xr X2ZpbmFsX2h6ID0gYXJyaWExMF9jbV9jYWxjX2hhbmRvZmZfbm9jX2Nsa19oeihtYWluX2NmZywg cGVyX2NmZyk7CisJfQorCisJLyogZXhlY3V0ZSB0aGUgcmFtcGluZyBoZXJlICovCisJZm9yIChj bGtfaHogPSBwbGxfcmFtcF9tYWluX2h6ICsgY2xrX2luY3JfaHo7CisJICAgICBjbGtfaHogPCBj bGtfZmluYWxfaHo7IGNsa19oeiArPSBjbGtfaW5jcl9oeikgeworCQl3cml0ZWwoKG1haW5fY2Zn LT52Y28xX2Rlbm9tIDw8IEFSUklBMTBfQ0xLTUdSX01BSU5QTExfVkNPMV9ERU5PTV9MU0IpIHwK KwkJICAgICAgIGFycmlhMTBfY21fY2FsY19zYWZlX3BsbF9udW1lcigwLCBtYWluX2NmZywgcGVy X2NmZywgY2xrX2h6KSwKKwkJICAgICAgICZhcnJpYTEwX2Nsa21ncl9iYXNlLT5tYWluX3BsbF92 Y28xKTsKKwkJX191ZGVsYXkoMTAwMCk7CisJCWFycmlhMTBfY21fd2FpdF9mb3JfbG9jayhMT0NL RURfTUFTSyk7CisJfQorCisJd3JpdGVsKChtYWluX2NmZy0+dmNvMV9kZW5vbSA8PCBBUlJJQTEw X0NMS01HUl9NQUlOUExMX1ZDTzFfREVOT01fTFNCKSB8CisJICAgICAgIG1haW5fY2ZnLT52Y28x X251bWVyLCAmYXJyaWExMF9jbGttZ3JfYmFzZS0+bWFpbl9wbGxfdmNvMSk7CisKKwlfX3VkZWxh eSgxMDAwKTsKKwlhcnJpYTEwX2NtX3dhaXRfZm9yX2xvY2soTE9DS0VEX01BU0spOworfQorCisv KiByYW1waW5nIHRoZSBwZXJpcGggUExMIHRvIGZpbmFsIHZhbHVlICovCitzdGF0aWMgdm9pZCBh cnJpYTEwX2NtX3BsbF9yYW1wX3BlcmlwaChzdHJ1Y3QgYXJyaWExMF9tYWlucGxsX2NmZyAqbWFp bl9jZmcsCisJCQkJICAgICAgIHN0cnVjdCBhcnJpYTEwX3BlcnBsbF9jZmcgKnBlcl9jZmcsCisJ CQkJICAgICAgIHVpbnQzMl90IHBsbF9yYW1wX3BlcmlwaF9oeikKK3sKKwl1aW50MzJfdCBjbGtf aHogPSAwOworCXVpbnQzMl90IGNsa19pbmNyX2h6ID0gMDsKKwl1aW50MzJfdCBjbGtfZmluYWxf aHogPSAwOworCisJLyogZmluZCBvdXQgdGhlIGluY3JlbWVudCB2YWx1ZSAqLworCWlmIChtYWlu X2NmZy0+bXB1Y2xrX3NyYyA9PSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX01QVUNMS19TUkNfUEVS SSkgeworCQljbGtfaW5jcl9oeiA9IEFSUklBMTBfQ0xLTUdSX1BMTF9SQU1QX01QVUNMS19JTkNS RU1FTlRfSFo7CisJCWNsa19maW5hbF9oeiA9IGFycmlhMTBfY21fY2FsY19oYW5kb2ZmX21wdV9j bGtfaHoobWFpbl9jZmcsIHBlcl9jZmcpOworCX0gZWxzZSBpZiAobWFpbl9jZmctPm5vY2Nsa19z cmMgPT0gQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9OT0NDTEtfU1JDX1BFUkkpIHsKKwkJY2xrX2lu Y3JfaHogPSBBUlJJQTEwX0NMS01HUl9QTExfUkFNUF9OT0NDTEtfSU5DUkVNRU5UX0haOworCQlj bGtfZmluYWxfaHogPSBhcnJpYTEwX2NtX2NhbGNfaGFuZG9mZl9ub2NfY2xrX2h6KG1haW5fY2Zn LCBwZXJfY2ZnKTsKKwl9CisKKwkvKiBleGVjdXRlIHRoZSByYW1waW5nIGhlcmUgKi8KKwlmb3Ig KGNsa19oeiA9IHBsbF9yYW1wX3BlcmlwaF9oeiArIGNsa19pbmNyX2h6OworCSAgICAgY2xrX2h6 IDwgY2xrX2ZpbmFsX2h6OyBjbGtfaHogKz0gY2xrX2luY3JfaHopIHsKKwkJd3JpdGVsKChwZXJf Y2ZnLT52Y28xX2Rlbm9tIDw8IEFSUklBMTBfQ0xLTUdSX1BFUlBMTF9WQ08xX0RFTk9NX0xTQikg fAorCQkgICAgICAgYXJyaWExMF9jbV9jYWxjX3NhZmVfcGxsX251bWVyKDEsIG1haW5fY2ZnLCBw ZXJfY2ZnLCBjbGtfaHopLAorCQkgICAgICAgJmFycmlhMTBfY2xrbWdyX2Jhc2UtPnBlcl9wbGxf dmNvMSk7CisJCV9fdWRlbGF5KDEwMDApOworCQlhcnJpYTEwX2NtX3dhaXRfZm9yX2xvY2soTE9D S0VEX01BU0spOworCX0KKworCXdyaXRlbCgocGVyX2NmZy0+dmNvMV9kZW5vbSA8PCBBUlJJQTEw X0NMS01HUl9QRVJQTExfVkNPMV9ERU5PTV9MU0IpIHwKKwkgICAgICAgcGVyX2NmZy0+dmNvMV9u dW1lciwgJmFycmlhMTBfY2xrbWdyX2Jhc2UtPnBlcl9wbGxfdmNvMSk7CisJX191ZGVsYXkoMTAw MCk7CisJYXJyaWExMF9jbV93YWl0X2Zvcl9sb2NrKExPQ0tFRF9NQVNLKTsKK30KKworLyoKKyAq IFNldHVwIGNsb2NrcyB3aGlsZSBtYWtpbmcgbm8gYXNzdW1wdGlvbnMgb2YgdGhlCisgKiBwcmV2 aW91cyBzdGF0ZSBvZiB0aGUgY2xvY2tzLgorICoKKyAqIC0gU3RhcnQgYnkgYmVpbmcgcGFyYW5v aWQgYW5kIGdhdGUgYWxsIHN3IG1hbmFnZWQgY2xvY2tzCisgKiAtIFB1dCBhbGwgcGxscyBpbiBi eXBhc3MKKyAqIC0gUHV0IGFsbCBwbGxzIFZDTyByZWdpc3RlcnMgYmFjayB0byByZXNldCB2YWx1 ZSAoYmdwd3IgZHduKS4KKyAqIC0gUHV0IHBlcmlwaGVyYWwgYW5kIG1haW4gcGxsIHNyYyB0byBy ZXNldCB2YWx1ZSB0byBhdm9pZCBnbGl0Y2guCisgKiAtIERlbGF5IDUgdXMuCisgKiAtIERlYXNz ZXJ0IGJnIHB3ciBkbiBhbmQgc2V0IG51bWVyYXRvciBhbmQgZGVub21pbmF0b3IKKyAqIC0gU3Rh cnQgNyB1cyB0aW1lci4KKyAqIC0gc2V0IGludGVybmFsIGRpdmlkZXJzCisgKiAtIFdhaXQgZm9y IDcgdXMgdGltZXIuCisgKiAtIEVuYWJsZSBwbGxzCisgKiAtIFNldCBleHRlcm5hbCBkaXZpZGVy cyB3aGlsZSBwbGxzIGFyZSBsb2NraW5nCisgKiAtIFdhaXQgZm9yIHBsbCBsb2NrCisgKiAtIEFz c2VydC9kZWFzc2VydCBvdXRyZXNldCBhbGwuCisgKiAtIFRha2UgYWxsIHBsbCdzIG91dCBvZiBi eXBhc3MKKyAqIC0gQ2xlYXIgc2FmZSBtb2RlCisgKiAtIHNldCBzb3VyY2UgbWFpbiBhbmQgcGVy aXBoZXJhbCBjbG9ja3MKKyAqIC0gVW5nYXRlIGNsb2NrcworICovCitzdGF0aWMgaW50IGFycmlh MTBfY21fZnVsbF9jZmcoc3RydWN0IGFycmlhMTBfbWFpbnBsbF9jZmcgKm1haW5fY2ZnLAorCQkJ ICAgICAgIHN0cnVjdCBhcnJpYTEwX3BlcnBsbF9jZmcgKnBlcl9jZmcpCit7CisJdWludDMyX3Qg cGxsX3JhbXBfbWFpbl9oeiA9IDA7CisJdWludDMyX3QgcGxsX3JhbXBfcGVyaXBoX2h6ID0gMDsK KworCS8qIGdhdGUgb2ZmIGFsbCBtYWlucGxsIGNsb2NrIGV4Y3BldCBIVyBtYW5hZ2VkIGNsb2Nr ICovCisJd3JpdGVsKEFSUklBMTBfQ0xLTUdSX01BSU5QTExfRU5fUzJGVVNFUjBDTEtFTl9TRVRf TVNLIHwKKwkgICAgICAgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9FTl9ITUNQTExSRUZDTEtFTl9T RVRfTVNLLAorCSAgICAgICAmYXJyaWExMF9jbGttZ3JfYmFzZS0+bWFpbl9wbGxfZW5yKTsKKwor CS8qIG5vdyB3ZSBjYW4gZ2F0ZSBvZmYgdGhlIHJlc3Qgb2YgdGhlIHBlcmlwaGVyYWwgY2xvY2tz ICovCisJd3JpdGVsKDAsICZhcnJpYTEwX2Nsa21ncl9iYXNlLT5wZXJfcGxsX2VuKTsKKworCS8q IFB1dCBhbGwgcGxscyBpbiBleHRlcm5hbCBieXBhc3MgKi8KKwl3cml0ZWwoQVJSSUExMF9DTEtN R1JfTUFJTlBMTF9CWVBBU1NfUkVTRVQsCisJICAgICAgICZhcnJpYTEwX2Nsa21ncl9iYXNlLT5t YWluX3BsbF9ieXBhc3NzKTsKKwl3cml0ZWwoQVJSSUExMF9DTEtNR1JfUEVSUExMX0JZUEFTU19S RVNFVCwKKwkgICAgICAgJmFycmlhMTBfY2xrbWdyX2Jhc2UtPnBlcl9wbGxfYnlwYXNzcyk7CisK KwkvKgorCSAqIFB1dCBhbGwgcGxscyBWQ08gcmVnaXN0ZXJzIGJhY2sgdG8gcmVzZXQgdmFsdWUu CisJICogU29tZSBjb2RlIG1pZ2h0IGhhdmUgbWVzc2VkIHdpdGggdGhlbS4gQXQgc2FtZSB0aW1l IHNldCB0aGUKKwkgKiBkZXNpcmVkIGNsb2NrIHNvdXJjZQorCSAqLworCXdyaXRlbChBUlJJQTEw X0NMS01HUl9NQUlOUExMX1ZDTzBfUkVTRVQgfAorCSAgICAgICBBUlJJQTEwX0NMS01HUl9NQUlO UExMX1ZDTzBfUkVHRVhUU0VMX1NFVF9NU0sgfAorCSAgICAgICAobWFpbl9jZmctPnZjbzBfcHNy YyA8PCBBUlJJQTEwX0NMS01HUl9NQUlOUExMX1ZDTzBfUFNSQ19MU0IpLAorCSAgICAgICAmYXJy aWExMF9jbGttZ3JfYmFzZS0+bWFpbl9wbGxfdmNvMCk7CisKKwl3cml0ZWwoQVJSSUExMF9DTEtN R1JfUEVSUExMX1ZDTzBfUkVTRVQgfAorCSAgICAgICBBUlJJQTEwX0NMS01HUl9QRVJQTExfVkNP MF9SRUdFWFRTRUxfU0VUX01TSyB8CisJICAgICAgIChwZXJfY2ZnLT52Y28wX3BzcmMgPDwgQVJS SUExMF9DTEtNR1JfUEVSUExMX1ZDTzBfUFNSQ19MU0IpLAorCSAgICAgICAmYXJyaWExMF9jbGtt Z3JfYmFzZS0+cGVyX3BsbF92Y28wKTsKKworCXdyaXRlbChBUlJJQTEwX0NMS01HUl9NQUlOUExM X1ZDTzFfUkVTRVQsCisJICAgICAgICZhcnJpYTEwX2Nsa21ncl9iYXNlLT5tYWluX3BsbF92Y28x KTsKKwl3cml0ZWwoQVJSSUExMF9DTEtNR1JfUEVSUExMX1ZDTzFfUkVTRVQsCisJICAgICAgICZh cnJpYTEwX2Nsa21ncl9iYXNlLT5wZXJfcGxsX3ZjbzEpOworCisJLyogY2xlYXIgdGhlIGludGVy cnVwdCByZWdpc3RlciBzdGF0dXMgcmVnaXN0ZXIgKi8KKwl3cml0ZWwoQVJSSUExMF9DTEtNR1Jf Q0xLTUdSX0lOVFJfTUFJTlBMTExPU1RfU0VUX01TSyB8CisJICAgICAgIEFSUklBMTBfQ0xLTUdS X0NMS01HUl9JTlRSX1BFUlBMTExPU1RfU0VUX01TSyB8CisJICAgICAgIEFSUklBMTBfQ0xLTUdS X0NMS01HUl9JTlRSX01BSU5QTExSRlNMSVBfU0VUX01TSyB8CisJICAgICAgIEFSUklBMTBfQ0xL TUdSX0NMS01HUl9JTlRSX1BFUlBMTFJGU0xJUF9TRVRfTVNLIHwKKwkgICAgICAgQVJSSUExMF9D TEtNR1JfQ0xLTUdSX0lOVFJfTUFJTlBMTEZCU0xJUF9TRVRfTVNLIHwKKwkgICAgICAgQVJSSUEx MF9DTEtNR1JfQ0xLTUdSX0lOVFJfUEVSUExMRkJTTElQX1NFVF9NU0sgfAorCSAgICAgICBBUlJJ QTEwX0NMS01HUl9DTEtNR1JfSU5UUl9NQUlOUExMQUNISUVWRURfU0VUX01TSyB8CisJICAgICAg IEFSUklBMTBfQ0xLTUdSX0NMS01HUl9JTlRSX1BFUlBMTEFDSElFVkVEX1NFVF9NU0ssCisJICAg ICAgICZhcnJpYTEwX2Nsa21ncl9iYXNlLT5pbnRyKTsKKworCS8qIFByb2dyYW0gVkNPIOKAnE51 bWVyYXRvcuKAnSBhbmQg4oCcRGVub21pbmF0b3LigJ0gZm9yIG1haW4gUExMICovCisJaWYgKGFy cmlhMTBfY21faXNfcGxsX3JhbXBfcmVxdWlyZWQoMCwgbWFpbl9jZmcsIHBlcl9jZmcpKSB7CisJ CS8qIHNldCBtYWluIFBMTCB0byBzYWZlIHN0YXJ0aW5nIHRocmVzaG9sZCBmcmVxdWVuY3kgKi8K KwkJaWYgKG1haW5fY2ZnLT5tcHVjbGtfc3JjID09IEFSUklBMTBfQ0xLTUdSX01BSU5QTExfTVBV Q0xLX1NSQ19NQUlOKQorCQkJcGxsX3JhbXBfbWFpbl9oeiA9IEFSUklBMTBfQ0xLTUdSX1BMTF9S QU1QX01QVUNMS19USFJFU0hPTERfSFo7CisJCWVsc2UgaWYgKG1haW5fY2ZnLT5ub2NjbGtfc3Jj ID09IEFSUklBMTBfQ0xLTUdSX01BSU5QTExfTk9DQ0xLX1NSQ19NQUlOKQorCQkJcGxsX3JhbXBf bWFpbl9oeiA9IEFSUklBMTBfQ0xLTUdSX1BMTF9SQU1QX05PQ0NMS19USFJFU0hPTERfSFo7CisK KwkJd3JpdGVsKChtYWluX2NmZy0+dmNvMV9kZW5vbSA8PCBBUlJJQTEwX0NMS01HUl9NQUlOUExM X1ZDTzFfREVOT01fTFNCKSB8CisJCSAgICAgICBhcnJpYTEwX2NtX2NhbGNfc2FmZV9wbGxfbnVt ZXIoMCwgbWFpbl9jZmcsIHBlcl9jZmcsCisJCQkJCQkgICAgICBwbGxfcmFtcF9tYWluX2h6KSwK KwkJICAgICAgICZhcnJpYTEwX2Nsa21ncl9iYXNlLT5tYWluX3BsbF92Y28xKTsKKwl9IGVsc2Ug eworCQl3cml0ZWwoKG1haW5fY2ZnLT52Y28xX2Rlbm9tIDw8IEFSUklBMTBfQ0xLTUdSX01BSU5Q TExfVkNPMV9ERU5PTV9MU0IpIHwKKwkJICAgICAgIG1haW5fY2ZnLT52Y28xX251bWVyLAorCQkg ICAgICAgJmFycmlhMTBfY2xrbWdyX2Jhc2UtPm1haW5fcGxsX3ZjbzEpOworCX0KKworCS8qIFBy b2dyYW0gVkNPIOKAnE51bWVyYXRvcuKAnSBhbmQg4oCcRGVub21pbmF0b3LigJ0gZm9yIHBlcmlw aCBQTEwgKi8KKwlpZiAoYXJyaWExMF9jbV9pc19wbGxfcmFtcF9yZXF1aXJlZCgxLCBtYWluX2Nm ZywgcGVyX2NmZykpIHsKKwkJLyogc2V0IHBlcmlwaCBQTEwgdG8gc2FmZSBzdGFydGluZyB0aHJl c2hvbGQgZnJlcXVlbmN5ICovCisJCWlmIChtYWluX2NmZy0+bXB1Y2xrX3NyYyA9PSBBUlJJQTEw X0NMS01HUl9NQUlOUExMX01QVUNMS19TUkNfUEVSSSkKKwkJCXBsbF9yYW1wX3BlcmlwaF9oeiA9 IEFSUklBMTBfQ0xLTUdSX1BMTF9SQU1QX01QVUNMS19USFJFU0hPTERfSFo7CisJCWVsc2UgaWYg KG1haW5fY2ZnLT5ub2NjbGtfc3JjID09IEFSUklBMTBfQ0xLTUdSX01BSU5QTExfTk9DQ0xLX1NS Q19QRVJJKQorCQkJcGxsX3JhbXBfcGVyaXBoX2h6ID0gQVJSSUExMF9DTEtNR1JfUExMX1JBTVBf Tk9DQ0xLX1RIUkVTSE9MRF9IWjsKKworCQl3cml0ZWwoKHBlcl9jZmctPnZjbzFfZGVub20gPDwg QVJSSUExMF9DTEtNR1JfUEVSUExMX1ZDTzFfREVOT01fTFNCKSB8CisJCSAgICAgICBhcnJpYTEw X2NtX2NhbGNfc2FmZV9wbGxfbnVtZXIoMSwgbWFpbl9jZmcsIHBlcl9jZmcsCisJCQkJCQkgICAg ICBwbGxfcmFtcF9wZXJpcGhfaHopLAorCQkgICAgICAgJmFycmlhMTBfY2xrbWdyX2Jhc2UtPnBl cl9wbGxfdmNvMSk7CisJfSBlbHNlIHsKKwkJd3JpdGVsKChwZXJfY2ZnLT52Y28xX2Rlbm9tIDw8 IEFSUklBMTBfQ0xLTUdSX1BFUlBMTF9WQ08xX0RFTk9NX0xTQikgfAorCQkgICAgICAgcGVyX2Nm Zy0+dmNvMV9udW1lciwgJmFycmlhMTBfY2xrbWdyX2Jhc2UtPnBlcl9wbGxfdmNvMSk7CisJfQor CisJLyogV2FpdCBmb3IgYXQgbGVhc3QgNSB1cyAqLworCV9fdWRlbGF5KDUpOworCisJLyogTm93 IGRlYXNzZXJ0IEJHUFdSRE4gYW5kIFBXUkROICovCisJY2xyYml0c19sZTMyKCZhcnJpYTEwX2Ns a21ncl9iYXNlLT5tYWluX3BsbF92Y28wLAorCQkgICAgIEFSUklBMTBfQ0xLTUdSX01BSU5QTExf VkNPMF9CR1BXUkROX1NFVF9NU0sgfAorCQkgICAgIEFSUklBMTBfQ0xLTUdSX01BSU5QTExfVkNP MF9QV1JETl9TRVRfTVNLKTsKKwljbHJiaXRzX2xlMzIoJmFycmlhMTBfY2xrbWdyX2Jhc2UtPnBl cl9wbGxfdmNvMCwKKwkJICAgICBBUlJJQTEwX0NMS01HUl9QRVJQTExfVkNPMF9CR1BXUkROX1NF VF9NU0sgfAorCQkgICAgIEFSUklBMTBfQ0xLTUdSX1BFUlBMTF9WQ08wX1BXUkROX1NFVF9NU0sp OworCisJLyogV2FpdCBmb3IgYXQgbGVhc3QgNyB1cyAqLworCV9fdWRlbGF5KDcpOworCisJLyog ZW5hYmxlIHRoZSBWQ08gYW5kIGRpc2FibGUgdGhlIGV4dGVybmFsIHJlZ3VsYXRvciB0byBQTEwg Ki8KKwl3cml0ZWwoKHJlYWRsKCZhcnJpYTEwX2Nsa21ncl9iYXNlLT5tYWluX3BsbF92Y28wKSAm CisJCX5BUlJJQTEwX0NMS01HUl9NQUlOUExMX1ZDTzBfUkVHRVhUU0VMX1NFVF9NU0spIHwKKwkg ICAgICAgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9WQ08wX0VOX1NFVF9NU0ssCisJICAgICAgICZh cnJpYTEwX2Nsa21ncl9iYXNlLT5tYWluX3BsbF92Y28wKTsKKwl3cml0ZWwoKHJlYWRsKCZhcnJp YTEwX2Nsa21ncl9iYXNlLT5wZXJfcGxsX3ZjbzApICYKKwkJfkFSUklBMTBfQ0xLTUdSX1BFUlBM TF9WQ08wX1JFR0VYVFNFTF9TRVRfTVNLKSB8CisJICAgICAgIEFSUklBMTBfQ0xLTUdSX1BFUlBM TF9WQ08wX0VOX1NFVF9NU0ssCisJICAgICAgICZhcnJpYTEwX2Nsa21ncl9iYXNlLT5wZXJfcGxs X3ZjbzApOworCisJLyogc2V0dXAgYWxsIHRoZSBtYWluIFBMTCBjb3VudGVyIGFuZCBjbG9jayBz b3VyY2UgKi8KKwl3cml0ZWwobWFpbl9jZmctPm5vY2NsaywKKwkgICAgICAgQVJSSUExMF9DTEtN R1JfQUREUiArIEFSUklBMTBfQ0xLTUdSX01BSU5QTExfTk9DX0NMS19PRkZTRVQpOworCXdyaXRl bChtYWluX2NmZy0+bXB1Y2xrLAorCSAgICAgICBBUlJJQTEwX0NMS01HUl9BRERSICsgQVJSSUEx MF9DTEtNR1JfQUxURVJBR1JQX01QVV9DTEtfT0ZGU0VUKTsKKworCS8qIG1haW5fZW1hY2FfY2xr IGRpdmlkZXIgKi8KKwl3cml0ZWwobWFpbl9jZmctPmNudHIyY2xrX2NudCwgJmFycmlhMTBfY2xr bWdyX2Jhc2UtPm1haW5fcGxsX2NudHIyY2xrKTsKKwkvKiBtYWluX2VtYWNiX2NsayBkaXZpZGVy ICovCisJd3JpdGVsKG1haW5fY2ZnLT5jbnRyM2Nsa19jbnQsICZhcnJpYTEwX2Nsa21ncl9iYXNl LT5tYWluX3BsbF9jbnRyM2Nsayk7CisJLyogbWFpbl9lbWFjX3B0cF9jbGsgZGl2aWRlciAqLwor CXdyaXRlbChtYWluX2NmZy0+Y250cjRjbGtfY250LCAmYXJyaWExMF9jbGttZ3JfYmFzZS0+bWFp bl9wbGxfY250cjRjbGspOworCS8qIG1haW5fZ3Bpb19kYl9jbGsgZGl2aWRlciAqLworCXdyaXRl bChtYWluX2NmZy0+Y250cjVjbGtfY250LCAmYXJyaWExMF9jbGttZ3JfYmFzZS0+bWFpbl9wbGxf Y250cjVjbGspOworCS8qIG1haW5fc2RtbWNfY2xrIGRpdmlkZXIgKi8KKwl3cml0ZWwobWFpbl9j ZmctPmNudHI2Y2xrX2NudCwgJmFycmlhMTBfY2xrbWdyX2Jhc2UtPm1haW5fcGxsX2NudHI2Y2xr KTsKKwkvKiBtYWluX3MyZl91c2VyMF9jbGsgZGl2aWRlciAqLworCXdyaXRlbChtYWluX2NmZy0+ Y250cjdjbGtfY250IHwKKwkgICAgICAgKG1haW5fY2ZnLT5jbnRyN2Nsa19zcmMgPDwgQVJSSUEx MF9DTEtNR1JfTUFJTlBMTF9DTlRSN0NMS19TUkNfTFNCKSwKKwkgICAgICAgJmFycmlhMTBfY2xr bWdyX2Jhc2UtPm1haW5fcGxsX2NudHI3Y2xrKTsKKwkvKiBtYWluX3MyZl91c2VyMV9jbGsgZGl2 aWRlciAqLworCXdyaXRlbChtYWluX2NmZy0+Y250cjhjbGtfY250LCAmYXJyaWExMF9jbGttZ3Jf YmFzZS0+bWFpbl9wbGxfY250cjhjbGspOworCS8qIG1haW5faG1jX3BsbF9jbGsgZGl2aWRlciAq LworCXdyaXRlbChtYWluX2NmZy0+Y250cjljbGtfY250IHwKKwkgICAgICAgKG1haW5fY2ZnLT5j bnRyOWNsa19zcmMgPDwgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9DTlRSOUNMS19TUkNfTFNCKSwK KwkgICAgICAgJmFycmlhMTBfY2xrbWdyX2Jhc2UtPm1haW5fcGxsX2NudHI5Y2xrKTsKKwkvKiBt YWluX3BlcmlwaF9yZWZfY2xrIGRpdmlkZXIgKi8KKwl3cml0ZWwobWFpbl9jZmctPmNudHIxNWNs a19jbnQsCSZhcnJpYTEwX2Nsa21ncl9iYXNlLT5tYWluX3BsbF9jbnRyMTVjbGspOworCisJLyog c2V0dXAgYWxsIHRoZSBwZXJpcGhlcmFsIFBMTCBjb3VudGVyIGFuZCBjbG9jayBzb3VyY2UgKi8K KwkvKiBwZXJpX2VtYWNhX2NsayBkaXZpZGVyICovCisJd3JpdGVsKHBlcl9jZmctPmNudHIyY2xr X2NudCB8CisJICAgICAgIChwZXJfY2ZnLT5jbnRyMmNsa19zcmMgPDwgQVJSSUExMF9DTEtNR1Jf UEVSUExMX0NOVFIyQ0xLX1NSQ19MU0IpLAorCSAgICAgICAmYXJyaWExMF9jbGttZ3JfYmFzZS0+ cGVyX3BsbF9jbnRyMmNsayk7CisJLyogcGVyaV9lbWFjYl9jbGsgZGl2aWRlciAqLworCXdyaXRl bChwZXJfY2ZnLT5jbnRyM2Nsa19jbnQgfAorCSAgICAgICAocGVyX2NmZy0+Y250cjNjbGtfc3Jj IDw8IEFSUklBMTBfQ0xLTUdSX1BFUlBMTF9DTlRSM0NMS19TUkNfTFNCKSwKKwkgICAgICAgJmFy cmlhMTBfY2xrbWdyX2Jhc2UtPnBlcl9wbGxfY250cjNjbGspOworCS8qIHBlcmlfZW1hY19wdHBf Y2xrIGRpdmlkZXIgKi8KKwl3cml0ZWwocGVyX2NmZy0+Y250cjRjbGtfY250IHwKKwkgICAgICAg KHBlcl9jZmctPmNudHI0Y2xrX3NyYyA8PCBBUlJJQTEwX0NMS01HUl9QRVJQTExfQ05UUjRDTEtf U1JDX0xTQiksCisJICAgICAgICZhcnJpYTEwX2Nsa21ncl9iYXNlLT5wZXJfcGxsX2NudHI0Y2xr KTsKKwkvKiBwZXJpX2dwaW9fZGJfY2xrIGRpdmlkZXIgKi8KKwl3cml0ZWwocGVyX2NmZy0+Y250 cjVjbGtfY250IHwKKwkgICAgICAgKHBlcl9jZmctPmNudHI1Y2xrX3NyYyA8PCBBUlJJQTEwX0NM S01HUl9QRVJQTExfQ05UUjVDTEtfU1JDX0xTQiksCisJICAgICAgICZhcnJpYTEwX2Nsa21ncl9i YXNlLT5wZXJfcGxsX2NudHI1Y2xrKTsKKwkvKiBwZXJpX3NkbW1jX2NsayBkaXZpZGVyICovCisJ d3JpdGVsKHBlcl9jZmctPmNudHI2Y2xrX2NudCB8CisJICAgICAgIChwZXJfY2ZnLT5jbnRyNmNs a19zcmMgPDwgQVJSSUExMF9DTEtNR1JfUEVSUExMX0NOVFI2Q0xLX1NSQ19MU0IpLAorCSAgICAg ICAmYXJyaWExMF9jbGttZ3JfYmFzZS0+cGVyX3BsbF9jbnRyNmNsayk7CisJLyogcGVyaV9zMmZf dXNlcjBfY2xrIGRpdmlkZXIgKi8KKwl3cml0ZWwocGVyX2NmZy0+Y250cjdjbGtfY250LCAmYXJy aWExMF9jbGttZ3JfYmFzZS0+cGVyX3BsbF9jbnRyN2Nsayk7CisJLyogcGVyaV9zMmZfdXNlcjFf Y2xrIGRpdmlkZXIgKi8KKwl3cml0ZWwocGVyX2NmZy0+Y250cjhjbGtfY250IHwKKwkgICAgICAg KHBlcl9jZmctPmNudHI4Y2xrX3NyYyA8PCBBUlJJQTEwX0NMS01HUl9QRVJQTExfQ05UUjhDTEtf U1JDX0xTQiksCisJICAgICAgICZhcnJpYTEwX2Nsa21ncl9iYXNlLT5wZXJfcGxsX2NudHI4Y2xr KTsKKwkvKiBwZXJpX2htY19wbGxfY2xrIGRpdmlkZXIgKi8KKwl3cml0ZWwocGVyX2NmZy0+Y250 cjljbGtfY250LCAmYXJyaWExMF9jbGttZ3JfYmFzZS0+cGVyX3BsbF9jbnRyOWNsayk7CisKKwkv KiBzZXR1cCBhbGwgdGhlIGV4dGVybmFsIFBMTCBjb3VudGVyICovCisJLyogbXB1IHdyYXBwZXIg LyBleHRlcm5hbCBkaXZpZGVyICovCisJd3JpdGVsKG1haW5fY2ZnLT5tcHVjbGtfY250IHwKKwkg ICAgICAgKG1haW5fY2ZnLT5tcHVjbGtfc3JjIDw8IEFSUklBMTBfQ0xLTUdSX01BSU5QTExfTVBV Q0xLX1NSQ19MU0IpLAorCSAgICAgICAmYXJyaWExMF9jbGttZ3JfYmFzZS0+bWFpbl9wbGxfbXB1 Y2xrKTsKKwkvKiBOT0Mgd3JhcHBlciAvIGV4dGVybmFsIGRpdmlkZXIgKi8KKwl3cml0ZWwobWFp bl9jZmctPm5vY2Nsa19jbnQgfAorCSAgICAgICAobWFpbl9jZmctPm5vY2Nsa19zcmMgPDwgQVJS SUExMF9DTEtNR1JfTUFJTlBMTF9OT0NDTEtfU1JDX0xTQiksCisJICAgICAgICZhcnJpYTEwX2Ns a21ncl9iYXNlLT5tYWluX3BsbF9ub2NjbGspOworCS8qIE5PQyBzdWJjbG9jayBkaXZpZGVyIHN1 Y2ggYXMgbDQgKi8KKwl3cml0ZWwobWFpbl9jZmctPm5vY2Rpdl9sNG1haW5jbGsgfAorCSAgICAg ICAobWFpbl9jZmctPm5vY2Rpdl9sNG1wY2xrIDw8IEFSUklBMTBfQ0xLTUdSX01BSU5QTExfTk9D RElWX0w0TVBDTEtfTFNCKSB8CisJICAgICAgIChtYWluX2NmZy0+bm9jZGl2X2w0c3BjbGsgPDwg QVJSSUExMF9DTEtNR1JfTUFJTlBMTF9OT0NESVZfTDRTUENMS19MU0IpIHwKKwkgICAgICAgKG1h aW5fY2ZnLT5ub2NkaXZfY3NhdGNsayA8PCBBUlJJQTEwX0NMS01HUl9NQUlOUExMX05PQ0RJVl9D U0FUQ0xLX0xTQikgfAorCSAgICAgICAobWFpbl9jZmctPm5vY2Rpdl9jc3RyYWNlY2xrIDw8IEFS UklBMTBfQ0xLTUdSX01BSU5QTExfTk9DRElWX0NTVFJBQ0VDTEtfTFNCKSB8CisJICAgICAgICht YWluX2NmZy0+bm9jZGl2X2NzcGRiZ2NsayA8PCBBUlJJQTEwX0NMS01HUl9NQUlOUExMX05PQ0RJ Vl9DU1BEQkdDTEtfTFNCKSwKKwkgICAgICAgJmFycmlhMTBfY2xrbWdyX2Jhc2UtPm1haW5fcGxs X25vY2Rpdik7CisJLyogZ3Bpb19kYiBleHRlcm5hbCBkaXZpZGVyICovCisJd3JpdGVsKHBlcl9j ZmctPmdwaW9kaXZfZ3Bpb2RiY2xrLCAmYXJyaWExMF9jbGttZ3JfYmFzZS0+cGVyX3BsbF9ncGlv ZGl2KTsKKworCS8qIHNldHVwIHRoZSBFTUFDIGNsb2NrIG11eCBzZWxlY3QgKi8KKwl3cml0ZWwo KHBlcl9jZmctPmVtYWNjdGxfZW1hYzBzZWwgPCBBUlJJQTEwX0NMS01HUl9QRVJQTExfRU1BQ0NU TF9FTUFDMFNFTF9MU0IpIHwKKwkgICAgICAgKHBlcl9jZmctPmVtYWNjdGxfZW1hYzFzZWwgPDwg QVJSSUExMF9DTEtNR1JfUEVSUExMX0VNQUNDVExfRU1BQzFTRUxfTFNCKSB8CisJICAgICAgIChw ZXJfY2ZnLT5lbWFjY3RsX2VtYWMyc2VsIDw8IEFSUklBMTBfQ0xLTUdSX1BFUlBMTF9FTUFDQ1RM X0VNQUMyU0VMX0xTQiksCisJICAgICAgICZhcnJpYTEwX2Nsa21ncl9iYXNlLT5wZXJfcGxsX2Vt YWNjdGwpOworCisJLyogYXQgdGhpcyBzdGFnZSwgY2hlY2sgZm9yIFBMTCBsb2NrIHN0YXR1cyAq LworCWFycmlhMTBfY21fd2FpdF9mb3JfbG9jayhMT0NLRURfTUFTSyk7CisKKwkvKgorCSAqIGFm dGVyIGxvY2tpbmcsIGJ1dCBiZWZvcmUgdGFraW5nIG91dCBvZiBieXBhc3MsCisJICogYXNzZXJ0 L2RlYXNzZXJ0IG91dHJlc2V0YWxsCisJICovCisKKwkvKiBhc3NlcnQgbWFpbnBsbCBvdXRyZXNl dGFsbCAqLworCXNldGJpdHNfbGUzMigmYXJyaWExMF9jbGttZ3JfYmFzZS0+bWFpbl9wbGxfdmNv MCwKKwkJICAgICBBUlJJQTEwX0NMS01HUl9NQUlOUExMX1ZDTzBfT1VUUlNUQUxMX1NFVF9NU0sp OworCS8qIGFzc2VydCBwZXJwbGwgb3V0cmVzZXRhbGwgKi8KKwlzZXRiaXRzX2xlMzIoJmFycmlh MTBfY2xrbWdyX2Jhc2UtPnBlcl9wbGxfdmNvMCwKKwkJICAgICBBUlJJQTEwX0NMS01HUl9QRVJQ TExfVkNPMF9PVVRSU1RBTExfU0VUX01TSyk7CisJLyogZGUtYXNzZXJ0IG1haW5wbGwgb3V0cmVz ZXRhbGwgKi8KKwljbHJiaXRzX2xlMzIoJmFycmlhMTBfY2xrbWdyX2Jhc2UtPm1haW5fcGxsX3Zj bzAsCisJCSAgICAgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9WQ08wX09VVFJTVEFMTF9TRVRfTVNL KTsKKwkvKiBkZS1hc3NlcnQgcGVycGxsIG91dHJlc2V0YWxsICovCisJY2xyYml0c19sZTMyKCZh cnJpYTEwX2Nsa21ncl9iYXNlLT5wZXJfcGxsX3ZjbzAsCisJCSAgICAgQVJSSUExMF9DTEtNR1Jf UEVSUExMX1ZDTzBfT1VUUlNUQUxMX1NFVF9NU0spOworCisJLyoKKwkgKiBUYWtlIGFsbCBQTExz IG91dCBvZiBieXBhc3Mgd2hlbiBib290IG1vZGUgaXMgY2xlYXJlZC4KKwkgKiByZWxlYXNlIG1h aW5wbGwgZnJvbSBieXBhc3MKKwkgKi8KKwl3cml0ZWwoQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9C WVBBU1NfUkVTRVQsCisJICAgICAgICZhcnJpYTEwX2Nsa21ncl9iYXNlLT5tYWluX3BsbF9ieXBh c3NyKTsKKwkvKiB3YWl0IHRpbGwgQ2xvY2sgTWFuYWdlciBpcyBub3QgYnVzeSAqLworCWFycmlh MTBfY21fd2FpdDRmc20oKTsKKworCS8qIHJlbGVhc2UgcGVycGxsIGZyb20gYnlwYXNzICovCisJ d3JpdGVsKEFSUklBMTBfQ0xLTUdSX1BFUlBMTF9CWVBBU1NfUkVTRVQsCisJICAgICAgICZhcnJp YTEwX2Nsa21ncl9iYXNlLT5wZXJfcGxsX2J5cGFzc3IpOworCS8qIHdhaXQgdGlsbCBDbG9jayBN YW5hZ2VyIGlzIG5vdCBidXN5ICovCisJYXJyaWExMF9jbV93YWl0NGZzbSgpOworCisJLyogY2xl YXIgYm9vdCBtb2RlICovCisJY2xyYml0c19sZTMyKCZhcnJpYTEwX2Nsa21ncl9iYXNlLT5jdHJs LAorCQkgICAgIEFSUklBMTBfQ0xLTUdSX0NMS01HUl9DVExfQk9PVE1PRF9TRVRfTVNLKTsKKwkv KiB3YWl0IHRpbGwgQ2xvY2sgTWFuYWdlciBpcyBub3QgYnVzeSAqLworCWFycmlhMTBfY21fd2Fp dDRmc20oKTsKKworCS8qIEF0IGhlcmUsIHdlIG5lZWQgdG8gcmFtcCB0byBmaW5hbCB2YWx1ZSBp ZiBuZWVkZWQgKi8KKwlpZiAocGxsX3JhbXBfbWFpbl9oeiAhPSAwKQorCQlhcnJpYTEwX2NtX3Bs bF9yYW1wX21haW4obWFpbl9jZmcsIHBlcl9jZmcsIHBsbF9yYW1wX21haW5faHopOworCWlmIChw bGxfcmFtcF9wZXJpcGhfaHogIT0gMCkKKwkJYXJyaWExMF9jbV9wbGxfcmFtcF9wZXJpcGgobWFp bl9jZmcsIHBlcl9jZmcsIHBsbF9yYW1wX3BlcmlwaF9oeik7CisKKwkvKiBOb3cgdW5nYXRlIG5v bi1ody1tYW5hZ2VkIGNsb2NrcyAqLworCXdyaXRlbChBUlJJQTEwX0NMS01HUl9NQUlOUExMX0VO X1MyRlVTRVIwQ0xLRU5fU0VUX01TSyB8CisJICAgICAgIEFSUklBMTBfQ0xLTUdSX01BSU5QTExf RU5fSE1DUExMUkVGQ0xLRU5fU0VUX01TSywKKwkgICAgICAgJmFycmlhMTBfY2xrbWdyX2Jhc2Ut Pm1haW5fcGxsX2Vucyk7CisJd3JpdGVsKEFSUklBMTBfQ0xLTUdSX1BFUlBMTF9FTl9SRVNFVCwK KwkgICAgICAgJmFycmlhMTBfY2xrbWdyX2Jhc2UtPnBlcl9wbGxfZW5zKTsKKworCS8qCisJICog Q2xlYXIgdGhlIGxvc3MgbG9jayBhbmQgc2xpcCBiaXRzIGFzIHRoZXkgbWlnaHQgc2V0IGR1cmlu ZworCSAqIGNsb2NrIHJlY29uZmlndXJhdGlvbgorCSAqLworCXdyaXRlbChBUlJJQTEwX0NMS01H Ul9DTEtNR1JfSU5UUl9NQUlOUExMTE9TVF9TRVRfTVNLIHwKKwkgICAgICAgQVJSSUExMF9DTEtN R1JfQ0xLTUdSX0lOVFJfUEVSUExMTE9TVF9TRVRfTVNLIHwKKwkgICAgICAgQVJSSUExMF9DTEtN R1JfQ0xLTUdSX0lOVFJfTUFJTlBMTFJGU0xJUF9TRVRfTVNLIHwKKwkgICAgICAgQVJSSUExMF9D TEtNR1JfQ0xLTUdSX0lOVFJfUEVSUExMUkZTTElQX1NFVF9NU0sgfAorCSAgICAgICBBUlJJQTEw X0NMS01HUl9DTEtNR1JfSU5UUl9NQUlOUExMRkJTTElQX1NFVF9NU0sgfAorCSAgICAgICBBUlJJ QTEwX0NMS01HUl9DTEtNR1JfSU5UUl9QRVJQTExGQlNMSVBfU0VUX01TSywKKwkgICAgICAgJmFy cmlhMTBfY2xrbWdyX2Jhc2UtPmludHIpOworCisJcmV0dXJuIDA7Cit9CisKK2ludCBhcnJpYTEw X2NtX2Jhc2ljX2luaXQoc3RydWN0IGFycmlhMTBfbWFpbnBsbF9jZmcgKm1haW5wbGwsCisJCQkg IHN0cnVjdCBhcnJpYTEwX3BlcnBsbF9jZmcgKnBlcnBsbCkKK3sKKwlyZXR1cm4gYXJyaWExMF9j bV9mdWxsX2NmZyhtYWlucGxsLCBwZXJwbGwpOworfQorCit2b2lkIGFycmlhMTBfY21fdXNlX2lu dG9zYyh2b2lkKQoreworCXNldGJpdHNfbGUzMigmYXJyaWExMF9jbGttZ3JfYmFzZS0+Y3RybCwK KwkJICAgICBBUlJJQTEwX0NMS01HUl9DTEtNR1JfQ1RMX0JPT1RDTEtfSU5UT1NDX1NFVF9NU0sp OworfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1zb2NmcGdhL2FycmlhMTAtZ2VuZXJpYy5j IGIvYXJjaC9hcm0vbWFjaC1zb2NmcGdhL2FycmlhMTAtZ2VuZXJpYy5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjgxMjllYWYyM2ZmCi0tLSAvZGV2L251bGwKKysr IGIvYXJjaC9hcm0vbWFjaC1zb2NmcGdhL2FycmlhMTAtZ2VuZXJpYy5jCkBAIC0wLDAgKzEsODUg QEAKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxpby5oPgorI2luY2x1ZGUgPGluaXQu aD4KKyNpbmNsdWRlIDxyZXN0YXJ0Lmg+CisjaW5jbHVkZSA8bWFjaC9nZW5lcmljLmg+CisjaW5j bHVkZSA8bWFjaC9hcnJpYTEwLXJlc2V0LW1hbmFnZXIuaD4KKyNpbmNsdWRlIDxtYWNoL2Fycmlh MTAtc3lzdGVtLW1hbmFnZXIuaD4KKyNpbmNsdWRlIDxtYWNoL2FycmlhMTAtcmVncy5oPgorCisv KiBTb21lIGluaXRpYWxpemF0aW9uIGZvciB0aGUgRU1BQyAqLworc3RhdGljIHZvaWQgYXJyaWEx MF9pbml0X2VtYWModm9pZCkKK3sKKwl1aW50MzJfdCByc3QsIHZhbDsKKworCS8qIE5vIG5lZWQg Zm9yIHRoaXMgd2l0aG91dCBuZXR3b3JrIHN1cHBvcnQsIGUuZy4geGxvYWRlciBidWlsZCAqLwor CWlmICghSVNfRU5BQkxFRChDT05GSUdfTkVUKSkKKwkJcmV0dXJuOworCisJcnN0ID0gcmVhZGwo QVJSSUExMF9SU1RNR1JfQUREUiArIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1QpOworCXJzdCB8 PSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX0VNQUMwIHwKKwkgICAgICAgQVJSSUExMF9SU1RN R1JfUEVSME1PRFJTVF9FTUFDMSB8CisJICAgICAgIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1Rf RU1BQzI7CisKKwl3cml0ZWwocnN0LCBBUlJJQTEwX1JTVE1HUl9BRERSICsgQVJSSUExMF9SU1RN R1JfUEVSME1PRFJTVCk7CisJdmFsID0gcmVhZGwoQVJSSUExMF9TWVNNR1JfRU1BQzApOworCXZh bCAmPSB+KEFSUklBMTBfU1lTTUdSX0VNQUNHUlBfQ1RSTF9QSFlTRUxfTUFTSyk7CisJdmFsIHw9 IEFSUklBMTBfU1lTTUdSX0VNQUNHUlBfQ1RSTF9QSFlTRUxfRU5VTV9SR01JSTsKKwl3cml0ZWwo dmFsLCBBUlJJQTEwX1NZU01HUl9FTUFDMCk7CisKKwl2YWwgPSByZWFkbChBUlJJQTEwX1NZU01H Ul9FTUFDMSk7CisJdmFsICY9IH4oQVJSSUExMF9TWVNNR1JfRU1BQ0dSUF9DVFJMX1BIWVNFTF9N QVNLKTsKKwl2YWwgfD0gQVJSSUExMF9TWVNNR1JfRU1BQ0dSUF9DVFJMX1BIWVNFTF9FTlVNX1JH TUlJOworCXdyaXRlbCh2YWwsIEFSUklBMTBfU1lTTUdSX0VNQUMxKTsKKworCXZhbCA9IHJlYWRs KEFSUklBMTBfU1lTTUdSX0VNQUMyKTsKKwl2YWwgJj0gfihBUlJJQTEwX1NZU01HUl9FTUFDR1JQ X0NUUkxfUEhZU0VMX01BU0spOworCXZhbCB8PSBBUlJJQTEwX1NZU01HUl9FTUFDR1JQX0NUUkxf UEhZU0VMX0VOVU1fUkdNSUk7CisJd3JpdGVsKHZhbCwgQVJSSUExMF9TWVNNR1JfRU1BQzIpOwor CisJdmFsID0gcmVhZGwoQVJSSUExMF9TWVNNR1JfRlBHQUlOVEZfRU5fMyk7CisJdmFsICY9IH4o QVJSSUExMF9TWVNNR1JfRlBHQUlOVEZfRU4zX0VNQUMwIHwKKwkJIEFSUklBMTBfU1lTTUdSX0ZQ R0FJTlRGX0VOM19FTUFDMF9TVyB8CisJCSBBUlJJQTEwX1NZU01HUl9GUEdBSU5URl9FTjNfRU1B QzEgfAorCQkgQVJSSUExMF9TWVNNR1JfRlBHQUlOVEZfRU4zX0VNQUMxX1NXIHwKKwkJIEFSUklB MTBfU1lTTUdSX0ZQR0FJTlRGX0VOM19FTUFDMiB8CisJCSBBUlJJQTEwX1NZU01HUl9GUEdBSU5U Rl9FTjNfRU1BQzJfU1cpOworCisJcnN0ID0gcmVhZGwoQVJSSUExMF9SU1RNR1JfQUREUiArIEFS UklBMTBfUlNUTUdSX1BFUjBNT0RSU1QpOworCXJzdCAmPSB+KEFSUklBMTBfUlNUTUdSX1BFUjBN T0RSU1RfRU1BQzAgfAorCQkgQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9FTUFDMSB8CisJCSBB UlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX0VNQUMyKTsKKwl3cml0ZWwocnN0LCBBUlJJQTEwX1JT VE1HUl9BRERSICsgQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVCk7Cit9CisKKy8qIFdyaXRlIHRo ZSByZXNldCBtYW5hZ2VyIHJlZ2lzdGVyIHRvIGNhdXNlIHJlc2V0ICovCitzdGF0aWMgdm9pZCBf X25vcmV0dXJuIGFycmlhMTBfcmVzdGFydF9zb2Moc3RydWN0IHJlc3RhcnRfaGFuZGxlciAqcnN0 KQoreworCS8qIHJlcXVlc3QgYSB3YXJtIHJlc2V0ICovCisJd3JpdGVsKEFSUklBMTBfUlNUTUdS X0NUTF9TV1dBUk1SU1RSRVEsCisJICAgICAgIEFSUklBMTBfUlNUTUdSX0FERFIgKyBBUlJJQTEw X1JTVE1HUl9DVFJMKTsKKwkvKgorCSAqIGluZmluaXRlIGxvb3AgaGVyZSBhcyB3YXRjaGRvZyB3 aWxsIHRyaWdnZXIgYW5kIHJlc2V0CisJICogdGhlIHByb2Nlc3NvcgorCSAqLworCWhhbmcoKTsK K30KKworc3RhdGljIGludCBhcnJpYTEwX2dlbmVyaWNfaW5pdCh2b2lkKQoreworCWJhcmVib3hf c2V0X21vZGVsKCJTb0NGUEdBIEFycmlhMTAiKTsKKworCXByX2RlYnVnKCJTZXR0aW5nIFNETU1D IHBoYXNlIHNoaWZ0cyBmb3IgQXJyaWExMFxuIik7CisJd3JpdGVsKEFSUklBMTBfU1lTTUdSX1NE TU1DX0RSVlNFTCgzKSB8CisJICAgICAgIEFSUklBMTBfU1lTTUdSX1NETU1DX1NNUExTRUwoMCks CisJICAgICAgIEFSUklBMTBfU1lTTUdSX1NETU1DKTsKKworCXByX2RlYnVnKCJJbml0aWFsaXpl IEVNQUNzXG4iKTsKKwlhcnJpYTEwX2luaXRfZW1hYygpOworCisJcHJfZGVidWcoIlJlZ2lzdGVy IHJlc3RhcnQgaGFuZGxlclxuIik7CisJcmVzdGFydF9oYW5kbGVyX3JlZ2lzdGVyX2ZuKGFycmlh MTBfcmVzdGFydF9zb2MpOworCisJcmV0dXJuIDA7Cit9Citwb3N0Y29yZV9pbml0Y2FsbChhcnJp YTEwX2dlbmVyaWNfaW5pdCk7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EvYXJy aWExMC1pbml0LmMgYi9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EvYXJyaWExMC1pbml0LmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wNzI1NmRhMWRiOGIKLS0tIC9kZXYv bnVsbAorKysgYi9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EvYXJyaWExMC1pbml0LmMKQEAgLTAsMCAr MSwxOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQWx0ZXJhIENvcnBvcmF0aW9uIDx3 d3cuYWx0ZXJhLmNvbT4KKyAqCisgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjoJR1BMLTIuMAor ICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxkZWJ1Z19sbC5oPgorI2luY2x1 ZGUgPG1hY2gvYXJyaWExMC1yZWdzLmg+CisjaW5jbHVkZSA8bWFjaC9hcnJpYTEwLWNsb2NrLW1h bmFnZXIuaD4KKyNpbmNsdWRlIDxtYWNoL2FycmlhMTAtcGlubXV4Lmg+CisjaW5jbHVkZSA8bWFj aC9hcnJpYTEwLXJlc2V0LW1hbmFnZXIuaD4KKyNpbmNsdWRlIDxtYWNoL2FycmlhMTAtc3lzdGVt LW1hbmFnZXIuaD4KKyNpbmNsdWRlIDxtYWNoL2dlbmVyaWMuaD4KKyNpbmNsdWRlIDxhc20vaW8u aD4KKyNpbmNsdWRlIDxhc20vY2FjaGUtbDJ4MC5oPgorI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4K KworI2RlZmluZSBMMzEwX0FVWF9DVFJMX0VBUkxZX0JSRVNQCQlCSVQoMzApCS8qIFIyUDArICov CisjZGVmaW5lIEwzMTBfQVVYX0NUUkxfTlNfTE9DS0RPV04JCUJJVCgyNikKKyNkZWZpbmUgTDMx MF9BVVhfQ1RSTF9GVUxMX0xJTkVfWkVSTwkJQklUKDApCS8qIFIyUDArICovCisKK3N0YXRpYyBp bmxpbmUgdm9pZCBzZXRfYXV4Y3IodW5zaWduZWQgaW50IHZhbCkKK3sKKwlhc20gdm9sYXRpbGUo Im1jciBwMTUsIDAsICUwLCBjMSwgYzAsIDEJQCBzZXQgQVVYQ1IiCisJCSAgICAgOiA6ICJyIiAo dmFsKSk7CisJaXNiKCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdldF9hdXhj cih2b2lkKQoreworCXVuc2lnbmVkIGludCB2YWw7CisKKwlhc20oIm1yYyBwMTUsIDAsICUwLCBj MSwgYzAsIDEJQCBnZXQgQVVYQ1IiIDogIj1yIiAodmFsKSk7CisJcmV0dXJuIHZhbDsKK30KKwor c3RhdGljIHZvaWQgbDJjMzEwX2Rpc2FibGUodm9pZCBfX2lvbWVtICpiYXNlKQoreworCXUzMiBh dXg7CisJaW50IHdheXMgPSA4OworCisJYXV4ID0gcmVhZGwoYmFzZSArIEwyWDBfQVVYX0NUUkwp OworCisJLyoKKwkgKiBJZiBmdWxsLWxpbmUtb2YtemVyb3MgaXMgZW5hYmxlZCwgd2UgbXVzdCBm aXJzdCBkaXNhYmxlIGl0IGluIHRoZQorCSAqIENvcnRleC1BOSBhdXhpbGlhcnkgY29udHJvbCBy ZWdpc3RlciBiZWZvcmUgZGlzYWJsaW5nIHRoZSBMMiBjYWNoZS4KKwkgKi8KKwlpZiAoYXV4ICYg TDMxMF9BVVhfQ1RSTF9GVUxMX0xJTkVfWkVSTykKKwkJc2V0X2F1eGNyKGdldF9hdXhjcigpICYg fihCSVQoMykgfCBCSVQoMikgfCBCSVQoMSkpKTsKKworCS8qIGZsdXNoIGFsbCB3YXlzICovCisJ d3JpdGVsKCgxIDw8IHdheXMpIC0gMSwgYmFzZSArIEwyWDBfSU5WX1dBWSk7CisKKwl3aGlsZSAo cmVhZGwoYmFzZSArIEwyWDBfSU5WX1dBWSkgJiB3YXlzKQorCQk7CisKKwkvKiBzeW5jICovCisJ d3JpdGVsKDAsIGJhc2UgKyBMMlgwX0NBQ0hFX1NZTkMpOworCisJLyogZGlzYWJsZSAqLworCXdy aXRlbCgwLCBiYXNlICsgTDJYMF9DVFJMKTsKKwlkc2IoKTsKK30KKworc3RhdGljIHZvaWQgYXJy aWExMF9pbml0aWFsaXplX3NlY3VyaXR5X3BvbGljaWVzKHZvaWQpCit7CisJdm9pZCBfX2lvbWVt ICpsMngwX2Jhc2UgPSAodm9pZCBfX2lvbWVtICopIDB4ZmZmZmYwMDA7CisKKwkvKiBCb290Uk9N IGxlYXZlcyB0aGUgTDJYMCBpbiBhIHdlaXJkIHN0YXRlLiBBbHdheXMgZGlzYWJsZSBMMlgwIGZv ciBub3cuICovCisJbDJjMzEwX2Rpc2FibGUobDJ4MF9iYXNlKTsKKworCS8qIFB1dCBPQ1JBTSBp biBub24tc2VjdXJlICovCisJd3JpdGVsKDB4MDAzZjAwMDAsIEFSUklBMTBfTk9DX0ZXX09DUkFN X09DUkFNX1NDUl9SRUdJT04wKTsKKwl3cml0ZWwoMHgxLCBBUlJJQTEwX05PQ19GV19PQ1JBTV9P Q1JBTV9TQ1JfRU4pOworCisJLyogUHV0IEREUiBpbiBub24tc2VjdXJlICovCisJd3JpdGVsKDB4 ZmZmZjAwMDAsIEFSUklBMTBfTk9DX0ZXX0REUl9MM19ERFJfU0NSX1JFR0lPTjApOworCXdyaXRl bCgweDEsIEFSUklBMTBfTk9DX0ZXX0REUl9MM19ERFJfU0NSX0VOKTsKKworCS8qIEVuYWJsZSBw cml2aWxlZGdlIGFuZCBub24gcHJpdmlsZWRnZSBhY2Nlc3MgdG8gTDQgcGVyaXBoZXJhbHMgKi8K Kwl3cml0ZWwoMHhmZmZmZmZmZiwgQVJSSUExMF9OT0NfTDRfUFJJVl9MNF9QUklWX0w0X1BSSVYp OworCisJLyogRW5hYmxlIHNlY3VyZSBhbmQgbm9uIHNlY3VyZSB0cmFuc2FjdGlvbiB0byBicmlk Z2VzICovCisJd3JpdGVsKDB4ZmZmZmZmZmYsIEFSUklBMTBfTk9DX0ZXX1NPQzJGUEdBX1NPQzJG UEdBX1NDUl9MV1NPQzJGUEdBKTsKKwl3cml0ZWwoMHhmZmZmZmZmZiwgQVJSSUExMF9OT0NfRldf U09DMkZQR0FfU09DMkZQR0FfU0NSX1NPQzJGUEdBKTsKKworCS8qIGFsbG93IG5vbi1zZWN1cmUg YW5kIHNlY3VyZSB0cmFuc2FjdGlvbiBmcm9tL3RvIGFsbCBwZXJpcGhlcmFscyAqLworCXdyaXRl bCgweGZmZmZmZmZmLCBBUlJJQTEwX05PQ19GV19MNF9QRVJfU0NSX05BTkRfUkVHKTsKKwl3cml0 ZWwoMHhmZmZmZmZmZiwgQVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9OQU5EX0RBVEEpOworCXdy aXRlbCgweGZmZmZmZmZmLCBBUlJJQTEwX05PQ19GV19MNF9QRVJfU0NSX1FTUElfREFUQSk7CisJ d3JpdGVsKDB4ZmZmZmZmZmYsIEFSUklBMTBfTk9DX0ZXX0w0X1BFUl9TQ1JfVVNCMF9SRUcpOwor CXdyaXRlbCgweGZmZmZmZmZmLCBBUlJJQTEwX05PQ19GV19MNF9QRVJfU0NSX1VTQjFfUkVHKTsK Kwl3cml0ZWwoMHhmZmZmZmZmZiwgQVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9TUElNMCk7CisJ d3JpdGVsKDB4ZmZmZmZmZmYsIEFSUklBMTBfTk9DX0ZXX0w0X1BFUl9TQ1JfU1BJTTEpOworCXdy aXRlbCgweGZmZmZmZmZmLCBBUlJJQTEwX05PQ19GV19MNF9QRVJfU0NSX1NQSVMwKTsKKwl3cml0 ZWwoMHhmZmZmZmZmZiwgQVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9TUElTMSk7CisJd3JpdGVs KDB4ZmZmZmZmZmYsIEFSUklBMTBfTk9DX0ZXX0w0X1BFUl9TQ1JfRU1BQzApOworCXdyaXRlbCgw eGZmZmZmZmZmLCBBUlJJQTEwX05PQ19GV19MNF9QRVJfU0NSX0VNQUMxKTsKKwl3cml0ZWwoMHhm ZmZmZmZmZiwgQVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9FTUFDMik7CisJd3JpdGVsKDB4ZmZm ZmZmZmYsIEFSUklBMTBfTk9DX0ZXX0w0X1BFUl9TQ1JfRU1BQzMpOworCXdyaXRlbCgweGZmZmZm ZmZmLCBBUlJJQTEwX05PQ19GV19MNF9QRVJfU0NSX1FTUEkpOworCXdyaXRlbCgweGZmZmZmZmZm LCBBUlJJQTEwX05PQ19GV19MNF9QRVJfU0NSX1NETU1DKTsKKwl3cml0ZWwoMHhmZmZmZmZmZiwg QVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9HUElPMCk7CisJd3JpdGVsKDB4ZmZmZmZmZmYsIEFS UklBMTBfTk9DX0ZXX0w0X1BFUl9TQ1JfR1BJTzEpOworCXdyaXRlbCgweGZmZmZmZmZmLCBBUlJJ QTEwX05PQ19GV19MNF9QRVJfU0NSX0dQSU8yKTsKKwl3cml0ZWwoMHhmZmZmZmZmZiwgQVJSSUEx MF9OT0NfRldfTDRfUEVSX1NDUl9JMkMwKTsKKwl3cml0ZWwoMHhmZmZmZmZmZiwgQVJSSUExMF9O T0NfRldfTDRfUEVSX1NDUl9JMkMxKTsKKwl3cml0ZWwoMHhmZmZmZmZmZiwgQVJSSUExMF9OT0Nf RldfTDRfUEVSX1NDUl9JMkMyKTsKKwl3cml0ZWwoMHhmZmZmZmZmZiwgQVJSSUExMF9OT0NfRldf TDRfUEVSX1NDUl9JMkMzKTsKKwl3cml0ZWwoMHhmZmZmZmZmZiwgQVJSSUExMF9OT0NfRldfTDRf UEVSX1NDUl9JMkM0KTsKKwl3cml0ZWwoMHhmZmZmZmZmZiwgQVJSSUExMF9OT0NfRldfTDRfUEVS X1NDUl9TUFRJTUVSMCk7CisJd3JpdGVsKDB4ZmZmZmZmZmYsIEFSUklBMTBfTk9DX0ZXX0w0X1BF Ul9TQ1JfU1BUSU1FUjEpOworCXdyaXRlbCgweGZmZmZmZmZmLCBBUlJJQTEwX05PQ19GV19MNF9Q RVJfU0NSX1VBUlQwKTsKKwl3cml0ZWwoMHhmZmZmZmZmZiwgQVJSSUExMF9OT0NfRldfTDRfUEVS X1NDUl9VQVJUMSk7CisKKwkvKiBSZXR1cm4gZXJyb3IgaW5zdGVhZCBvZiByYW5kb20gZGF0YSAq LworCXdyaXRlbCgweDEsIEFSUklBMTBfTk9DX0ZXX0REUl9MM19ERFJfU0NSX0dMT0JBTCk7Cit9 CisKK3N0YXRpYyB2b2lkIGFycmlhMTBfbWFza19lY2NfZXJyb3JzKHZvaWQpCit7CisJd3JpdGVs KDB4MDAwN0ZGRkYsIEFSUklBMTBfU1lTTUdSX0FERFIgKyAweDk0KTsKK30KKworLyoKKyAqIEZp cnN0IEMgZnVuY3Rpb24gdG8gaW5pdGlhbGl6ZSB0aGUgY3JpdGljYWwgaGFyZHdhcmUgZWFybHkK KyAqLwordm9pZCBhcnJpYTEwX2luaXQoc3RydWN0IGFycmlhMTBfbWFpbnBsbF9jZmcgKm1haW5w bGwsCisJCSAgc3RydWN0IGFycmlhMTBfcGVycGxsX2NmZyAqcGVycGxsLAorCQkgIHVpbnQzMl90 ICpwaW5tdXgpCit7CisJaW50IGk7CisKKwlhcnJpYTEwX2NtX3VzZV9pbnRvc2MoKTsKKworCWFy cmlhMTBfaW5pdGlhbGl6ZV9zZWN1cml0eV9wb2xpY2llcygpOworCisJYXJyaWExMF9tYXNrX2Vj Y19lcnJvcnMoKTsKKworCS8qCisJICogQ29uZmlndXJlIHRoZSBMMiBjb250cm9sbGVyIHRvIG1h a2UgU0RSQU0gc3RhcnQgYXQgMC4KKwkgKiBTZXQgYWRkcmVzcyBmaWx0ZXJpbmcgc3RhcnQgdG8g MHgwIChCaXRzIFszMToyMF0pLAorCSAqIEVuYWJsZSBhZGRyZXNzIGZpbHRlcmluZyAoQml0WzBd KQorCSAqLworCXdyaXRlbCgweDAwMDAwMDAxLCBBUlJJQTEwX01QVUwyX0FEUkZMVFJfU1RBUlQp OworCXdyaXRlbCgweDAwMDAwMDAyLCBBUlJJQTEwX1NZU01HUl9OT0NfQUREUl9SRU1BUF9WQUxV RSk7CisKKwlhcnJpYTEwX3Jlc2V0X3BlcmlwaGVyYWxzKCk7CisKKwkvKiB0aW1lciBpbml0ICov CisJd3JpdGVsKDB4ZmZmZmZmZmYsIEFSUklBMTBfT1NDMVRJTUVSMF9BRERSKTsKKwl3cml0ZWwo MHhmZmZmZmZmZiwgQVJSSUExMF9PU0MxVElNRVIwX0FERFIgKyAweDQpOworCXdyaXRlbCgweDAw MDAwMDAzLCBBUlJJQTEwX09TQzFUSU1FUjBfQUREUiArIDB4OCk7CisKKwkvKiBjb25maWd1cmlu ZyB0aGUgY2xvY2sgYmFzZWQgb24gaGFuZG9mZiAqLworCWFycmlhMTBfY21fYmFzaWNfaW5pdCht YWlucGxsLCBwZXJwbGwpOworCisJLyogZGVkaWNhdGVkIHBpbnMgKi8KKwlmb3IgKGkgPSBhcnJp YTEwX3Bpbm11eF9kZWRpY2F0ZWRfaW9fNDsKKwkgICAgIGkgPD0gYXJyaWExMF9waW5tdXhfZGVk aWNhdGVkX2lvXzE3OyBpKyspCisJCXdyaXRlbChwaW5tdXhbaV0sIEFSUklBMTBfUElOTVVYX0RF RElDQVRFRF9JT180X0FERFIgKworCQkgICAgICAgKGkgLSBhcnJpYTEwX3Bpbm11eF9kZWRpY2F0 ZWRfaW9fNCkgKiBzaXplb2YodWludDMyX3QpKTsKKworCWZvciAoaSA9IGFycmlhMTBfcGluY2Zn X2RlZGljYXRlZF9pb19iYW5rOworCSAgICAgaSA8PSBhcnJpYTEwX3BpbmNmZ19kZWRpY2F0ZWRf aW9fMTc7IGkrKykKKwkJd3JpdGVsKHBpbm11eFtpXSwgQVJSSUExMF9QSU5DRkdfREVESUNBVEVE X0lPX0JBTktfQUREUiArCisJCSAgICAgICAoaSAtIGFycmlhMTBfcGluY2ZnX2RlZGljYXRlZF9p b19iYW5rKSAqIHNpemVvZih1aW50MzJfdCkpOworCisJLyogZGVhc3NlcnQgcGVyaXBoZXJhbCBy ZXNldHMgKi8KKwlhcnJpYTEwX3Jlc2V0X2RlYXNzZXJ0X2RlZGljYXRlZF9wZXJpcGhlcmFscygp OworCisJLyogd2FpdCBmb3IgZnBnYV91c2VybW9kZSAqLworCXdoaWxlICgocmVhZGwoMHhmZmQw MzA4MCkgJiAweDYpID09IDApOworCisJLyogc2hhcmVkIHBpbnMgKi8KKwlmb3IgKGkgPSBhcnJp YTEwX3Bpbm11eF9zaGFyZWRfaW9fcTFfMTsKKwkgICAgIGkgPD0gYXJyaWExMF9waW5tdXhfc2hh cmVkX2lvX3E0XzEyOyBpKyspCisJCXdyaXRlbChwaW5tdXhbaV0sIEFSUklBMTBfUElOTVVYX1NI QVJFRF8zVl9JT19HUlBfQUREUiArCisJCSAgICAgICAoaSAtIGFycmlhMTBfcGlubXV4X3NoYXJl ZF9pb19xMV8xKSAqIHNpemVvZih1aW50MzJfdCkpOworCisJYXJyaWExMF9yZXNldF9kZWFzc2Vy dF9zaGFyZWRfcGVyaXBoZXJhbHMoKTsKKworCS8qIHVzZWZwZ2E6IHNlbGVjdCBzb3VyY2UgZm9y IHNpZ25hbHM6IGhwcyBvciBmcGdhICovCisJZm9yIChpID0gYXJyaWExMF9waW5tdXhfcmdtaWkw X3VzZWZwZ2E7CisJICAgICBpIDwgYXJyaWExMF9waW5tdXhfbWF4OyBpKyspCisJCXdyaXRlbChw aW5tdXhbaV0sIEFSUklBMTBfUElOTVVYX0ZQR0FfSU5URVJGQUNFX0FERFIgKworCQkgICAgICAg KGkgLSBhcnJpYTEwX3Bpbm11eF9yZ21paTBfdXNlZnBnYSkgKiBzaXplb2YodWludDMyX3QpKTsK KworCWFycmlhMTBfcmVzZXRfZGVhc3NlcnRfZnBnYV9wZXJpcGhlcmFscygpOworCisJSU5JVF9M TCgpOworfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1zb2NmcGdhL2FycmlhMTAtcmVzZXQt bWFuYWdlci5jIGIvYXJjaC9hcm0vbWFjaC1zb2NmcGdhL2FycmlhMTAtcmVzZXQtbWFuYWdlci5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTdlNGJkNjAzZTRjCi0t LSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vbWFjaC1zb2NmcGdhL2FycmlhMTAtcmVzZXQtbWFu YWdlci5jCkBAIC0wLDAgKzEsMzk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYg QWx0ZXJhIENvcnBvcmF0aW9uIDx3d3cuYWx0ZXJhLmNvbT4KKyAqCisgKiBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjoJR1BMLTIuMAorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRl IDxlcnJuby5oPgorI2luY2x1ZGUgPGlvLmg+CisjaW5jbHVkZSA8bWFjaC9hcnJpYTEwLXBpbm11 eC5oPgorI2luY2x1ZGUgPG1hY2gvYXJyaWExMC1yZWdzLmg+CisjaW5jbHVkZSA8bWFjaC9hcnJp YTEwLXJlc2V0LW1hbmFnZXIuaD4KKyNpbmNsdWRlIDxtYWNoL2FycmlhMTAtc3lzdGVtLW1hbmFn ZXIuaD4KKwordm9pZCBhcnJpYTEwX3Jlc2V0X3BlcmlwaGVyYWxzKHZvaWQpCit7CisJdW5zaWdu ZWQgbWFza19lY2Nfb2NwID0gQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9FTUFDME9DUCB8CisJ CUFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfRU1BQzFPQ1AgfAorCQlBUlJJQTEwX1JTVE1HUl9Q RVIwTU9EUlNUX0VNQUMyT0NQIHwKKwkJQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9VU0IwT0NQ IHwKKwkJQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9VU0IxT0NQIHwKKwkJQVJSSUExMF9SU1RN R1JfUEVSME1PRFJTVF9OQU5ET0NQIHwKKwkJQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9RU1BJ T0NQIHwKKwkJQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9TRE1NQ09DUDsKKworCS8qIGRpc2Fi bGUgYWxsIGNvbXBvbmVudHMgZXhjZXB0IEVDQ19PQ1AsIEw0IFRpbWVyMCBhbmQgTDQgV0QwICov CisJd3JpdGVsKDB4ZmZmZmZmZmYsIEFSUklBMTBfUlNUTUdSX0FERFIgKyBBUlJJQTEwX1JTVE1H Ul9QRVIxTU9EUlNUKTsKKwlzZXRiaXRzX2xlMzIoQVJSSUExMF9SU1RNR1JfQUREUiArIEFSUklB MTBfUlNUTUdSX1BFUjBNT0RSU1QsCisJCSAgICAgfm1hc2tfZWNjX29jcCk7CisKKwkvKiBGaW5h bGx5IGRpc2FibGUgdGhlIEVDQ19PQ1AgKi8KKwlzZXRiaXRzX2xlMzIoQVJSSUExMF9SU1RNR1Jf QUREUiArIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1QsCisJCSAgICAgbWFza19lY2Nfb2NwKTsK K30KKwordm9pZCBhcnJpYTEwX3Jlc2V0X2RlYXNzZXJ0X2RlZGljYXRlZF9wZXJpcGhlcmFscyh2 b2lkKQoreworCXVpbnQzMl90IG1hc2s7CisKKwltYXNrID0gQVJSSUExMF9SU1RNR1JfUEVSME1P RFJTVF9TRE1NQ09DUCB8CisJICAgICAgIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfUVNQSU9D UCB8CisJICAgICAgIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfTkFORE9DUCB8CisJICAgICAg IEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfRE1BT0NQOworCisJLyogZW5hYmxlIEVDQyBPQ1Ag Zmlyc3QgKi8KKwljbHJiaXRzX2xlMzIoQVJSSUExMF9SU1RNR1JfQUREUiArIEFSUklBMTBfUlNU TUdSX1BFUjBNT0RSU1QsIG1hc2spOworCisJbWFzayA9IEFSUklBMTBfUlNUTUdSX1BFUjBNT0RS U1RfU0RNTUMgfAorCSAgICAgICBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX1FTUEkgfAorCSAg ICAgICBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX05BTkQgfAorCSAgICAgICBBUlJJQTEwX1JT VE1HUl9QRVIwTU9EUlNUX0RNQTsKKworCWNscmJpdHNfbGUzMihBUlJJQTEwX1JTVE1HUl9BRERS ICsgQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVCwgbWFzayk7CisKKwltYXNrID0gQVJSSUExMF9S U1RNR1JfUEVSMU1PRFJTVF9MNFNZU1RJTUVSMCB8CisJICAgICAgIEFSUklBMTBfUlNUTUdSX1BF UjFNT0RSU1RfVUFSVDEgfAorCSAgICAgICBBUlJJQTEwX1JTVE1HUl9QRVIxTU9EUlNUX1VBUlQw OworCisJY2xyYml0c19sZTMyKEFSUklBMTBfUlNUTUdSX0FERFIgKyBBUlJJQTEwX1JTVE1HUl9Q RVIxTU9EUlNULCBtYXNrKTsKKworCWNscmJpdHNfbGUzMihBUlJJQTEwX1JTVE1HUl9BRERSICsg QVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVCwKKwkJICAgICBBUlJJQTEwX1JTVE1HUl9PQ1BfTUFT Syk7CisJbWFzayA9IEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfRU1BQzEgfAorCQlBUlJJQTEw X1JTVE1HUl9QRVIwTU9EUlNUX0VNQUMyIHwKKwkJQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9F TUFDMCB8CisJCUFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfU1BJUzAgfAorCQlBUlJJQTEwX1JT VE1HUl9QRVIwTU9EUlNUX1NQSU0wOworCWNscmJpdHNfbGUzMihBUlJJQTEwX1JTVE1HUl9BRERS ICsgQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVCwgbWFzayk7CisKKwltYXNrID0gQVJSSUExMF9S U1RNR1JfUEVSMU1PRFJTVF9JMkMzIHwKKwkgICAgICAgQVJSSUExMF9SU1RNR1JfUEVSMU1PRFJT VF9JMkM0IHwKKwkgICAgICAgQVJSSUExMF9SU1RNR1JfUEVSMU1PRFJTVF9JMkMyIHwKKwkgICAg ICAgQVJSSUExMF9SU1RNR1JfUEVSMU1PRFJTVF9VQVJUMSB8CisJICAgICAgIEFSUklBMTBfUlNU TUdSX1BFUjFNT0RSU1RfR1BJTzI7CisJY2xyYml0c19sZTMyKEFSUklBMTBfUlNUTUdSX0FERFIg KyBBUlJJQTEwX1JTVE1HUl9QRVIxTU9EUlNULCBtYXNrKTsKK30KKworc3RhdGljIGNvbnN0IHVp bnQzMl90IHBlcjBmcGdhbWFza3NbXSA9IHsKKwlBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX0VN QUMwT0NQIHwgQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9FTUFDMCwKKwlBUlJJQTEwX1JTVE1H Ul9QRVIwTU9EUlNUX0VNQUMxT0NQIHwgQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9FTUFDMSwK KwlBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX0VNQUMyT0NQIHwgQVJSSUExMF9SU1RNR1JfUEVS ME1PRFJTVF9FTUFDMiwKKwkwLCAvKiBpMmMwIHBlcjBtb2QgKi8KKwkwLCAvKiBpMmMxIHBlcjBt b2QgKi8KKwkwLCAvKiBpMmMwX2VtYWMgKi8KKwkwLCAvKiBpMmMxX2VtYWMgKi8KKwkwLCAvKiBp MmMyX2VtYWMgKi8KKwlBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX05BTkRPQ1AgfCBBUlJJQTEw X1JTVE1HUl9QRVIwTU9EUlNUX05BTkQsCisJQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9RU1BJ T0NQIHwgQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9RU1BJLAorCUFSUklBMTBfUlNUTUdSX1BF UjBNT0RSU1RfU0RNTUNPQ1AgfCBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX1NETU1DLAorCUFS UklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfU1BJTTAsCisJQVJSSUExMF9SU1RNR1JfUEVSME1PRFJT VF9TUElNMSwKKwlBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX1NQSVMwLAorCUFSUklBMTBfUlNU TUdSX1BFUjBNT0RSU1RfU1BJUzEsCisJMCwgLyogdWFydDAgcGVyMG1vZCAqLworCTAsIC8qIHVh cnQxIHBlcjBtb2QgKi8KK307CisKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBwZXIxZnBnYW1hc2tz W10gPSB7CisJMCwgLyogZW1hYzAgcGVyMG1vZCAqLworCTAsIC8qIGVtYWMxIHBlcjBtb2QgKi8K KwkwLCAvKiBlbWFjMiBwZXIwbW9kICovCisJQVJSSUExMF9SU1RNR1JfUEVSMU1PRFJTVF9JMkMw LAorCUFSUklBMTBfUlNUTUdSX1BFUjFNT0RSU1RfSTJDMSwKKwlBUlJJQTEwX1JTVE1HUl9QRVIx TU9EUlNUX0kyQzIsCisJQVJSSUExMF9SU1RNR1JfUEVSMU1PRFJTVF9JMkMzLAorCUFSUklBMTBf UlNUTUdSX1BFUjFNT0RSU1RfSTJDNCwKKwkwLCAvKiBuYW5kIHBlcjBtb2QgKi8KKwkwLCAvKiBx c3BpIHBlcjBtb2QgKi8KKwkwLCAvKiBzZG1tYyBwZXIwbW9kICovCisJMCwgLyogc3BpbTAgcGVy MG1vZCAqLworCTAsIC8qIHNwaW0xIHBlcjBtb2QgKi8KKwkwLCAvKiBzcGlzMCBwZXIwbW9kICov CisJMCwgLyogc3BpczEgcGVyMG1vZCAqLworCUFSUklBMTBfUlNUTUdSX1BFUjFNT0RSU1RfVUFS VDAsCisJQVJSSUExMF9SU1RNR1JfUEVSMU1PRFJTVF9VQVJUMSwKK307CisKK3ZvaWQgYXJyaWEx MF9yZXNldF9kZWFzc2VydF9mcGdhX3BlcmlwaGVyYWxzKHZvaWQpCit7CisJdWludDMyX3QgbWFz azAgPSAwOworCXVpbnQzMl90IG1hc2sxID0gMDsKKwl1aW50MzJfdCBmcGdhX3BpbnV4X2FkZHIg PSBBUlJJQTEwX1BJTk1VWF9GUEdBX0lOVEVSRkFDRV9BRERSOworCWludCBpOworCisJZm9yIChp ID0gMDsgaSA8IEFSUkFZX1NJWkUocGVyMWZwZ2FtYXNrcyk7IGkrKykgeworCQlpZiAocmVhZGwo ZnBnYV9waW51eF9hZGRyKSkgeworCQkJbWFzazAgfD0gcGVyMGZwZ2FtYXNrc1tpXTsKKwkJCW1h c2sxIHw9IHBlcjFmcGdhbWFza3NbaV07CisJCX0KKwkJZnBnYV9waW51eF9hZGRyICs9IHNpemVv Zih1aW50MzJfdCk7CisJfQorCisJY2xyYml0c19sZTMyKEFSUklBMTBfUlNUTUdSX0FERFIgKyBB UlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNULAorCQkgICAgIG1hc2swICYgQVJSSUExMF9SU1RNR1Jf T0NQX01BU0spOworCWNscmJpdHNfbGUzMihBUlJJQTEwX1JTVE1HUl9BRERSICsgQVJSSUExMF9S U1RNR1JfUEVSME1PRFJTVCwgbWFzazApOworCWNscmJpdHNfbGUzMihBUlJJQTEwX1JTVE1HUl9B RERSICsgQVJSSUExMF9SU1RNR1JfUEVSMU1PRFJTVCwgbWFzazEpOworfQorCit2b2lkIGFycmlh MTBfcmVzZXRfZGVhc3NlcnRfc2hhcmVkX3BlcmlwaGVyYWxzX3ExKHVpbnQzMl90ICptYXNrMCwK KwkJCQkJCSAgdWludDMyX3QgKm1hc2sxKQoreworCXVpbnQzMl90IHBpbm11eF9hZGRyID0gQVJS SUExMF9QSU5NVVhfU0hBUkVEXzNWX0lPX0dSUF9BRERSOworCWludCBxMTsKKworCWZvciAocTEg PSAxOyBxMSA8PSAxMjsgcTErKywgcGlubXV4X2FkZHIgKz0gc2l6ZW9mKHVpbnQzMl90KSkgewor CQlzd2l0Y2ggKHJlYWRsKHBpbm11eF9hZGRyKSkgeworCQljYXNlIEFSUklBMTBfUElOTVVYX1NI QVJFRF9JT19RMV9HUElPOgorCQkJKm1hc2sxIHw9IEFSUklBMTBfUlNUTUdSX1BFUjFNT0RSU1Rf R1BJTzA7CisJCQlicmVhazsKKwkJY2FzZSBBUlJJQTEwX1BJTk1VWF9TSEFSRURfSU9fUTFfTkFO RDoKKwkJCSptYXNrMCB8PSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX05BTkRPQ1B8CisJCQkJ QVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9OQU5EOworCQkJYnJlYWs7CisJCWNhc2UgQVJSSUEx MF9QSU5NVVhfU0hBUkVEX0lPX1ExX1VBUlQ6CisJCQlpZiAoKHExID49IDEpICYmIChxMSA8PSA0 KSkKKwkJCQkqbWFzazEgfD0gQVJSSUExMF9SU1RNR1JfUEVSMU1PRFJTVF9VQVJUMDsKKwkJCWVs c2UgaWYgKChxMSA+PSA1KSAmJiAocTEgPD0gOCkpCisJCQkJKm1hc2sxIHw9IEFSUklBMTBfUlNU TUdSX1BFUjFNT0RSU1RfVUFSVDE7CisJCQlicmVhazsKKwkJY2FzZSBBUlJJQTEwX1BJTk1VWF9T SEFSRURfSU9fUTFfUVNQSToKKwkJCWlmICgocTEgPj0gNSkgJiYgKHExIDw9IDYpKQorCQkJCSpt YXNrMCB8PSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX1FTUElPQ1AgfAorCQkJCQkgIEFSUklB MTBfUlNUTUdSX1BFUjBNT0RSU1RfUVNQSTsKKwkJCWJyZWFrOworCQljYXNlIEFSUklBMTBfUElO TVVYX1NIQVJFRF9JT19RMV9VU0I6CisJCQkqbWFzazAgfD0gQVJSSUExMF9SU1RNR1JfUEVSME1P RFJTVF9VU0IwT0NQIHwKKwkJCSAgICBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX1VTQjA7CisJ CQlicmVhazsKKwkJY2FzZSBBUlJJQTEwX1BJTk1VWF9TSEFSRURfSU9fUTFfU0RNTUM6CisJCQlp ZiAoKHExID49IDEpICYmIChxMSA8PSAxMCkpCisJCQkJKm1hc2swIHw9IEFSUklBMTBfUlNUTUdS X1BFUjBNT0RSU1RfU0RNTUNPQ1AgfAorCQkJCQkgIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1Rf U0RNTUM7CisJCQlicmVhazsKKwkJY2FzZSBBUlJJQTEwX1BJTk1VWF9TSEFSRURfSU9fUTFfU1BJ TToKKwkJCWlmICgocTEgPT0gMSkgfHwgKChxMSA+PSA1KSAmJiAocTEgPD0gOCkpKQorCQkJCSpt YXNrMCB8PSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX1NQSU0wOworCQkJZWxzZSBpZiAoKHEx ID09IDIpIHx8ICgocTEgPj0gOSkgJiYgKHExIDw9IDEyKSkpCisJCQkJKm1hc2swIHw9IEFSUklB MTBfUlNUTUdSX1BFUjBNT0RSU1RfU1BJTTE7CisJCQlicmVhazsKKwkJY2FzZSBBUlJJQTEwX1BJ Tk1VWF9TSEFSRURfSU9fUTFfU1BJUzoKKwkJCWlmICgocTEgPj0gMSkgJiYgKHExIDw9IDQpKQor CQkJCSptYXNrMCB8PSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX1NQSVMwOworCQkJZWxzZSBp ZiAoKHExID49IDkpICYmIChxMSA8PSAxMikpCisJCQkJKm1hc2swIHw9IEFSUklBMTBfUlNUTUdS X1BFUjBNT0RSU1RfU1BJUzE7CisJCQlicmVhazsKKwkJY2FzZSBBUlJJQTEwX1BJTk1VWF9TSEFS RURfSU9fUTFfRU1BQzoKKwkJCWlmICgocTEgPT0gNykgfHwgKHExID09IDgpKQorCQkJCSptYXNr MCB8PSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX0VNQUMyT0NQIHwKKwkJCQkJICBBUlJJQTEw X1JTVE1HUl9QRVIwTU9EUlNUX0VNQUMyOworCQkJZWxzZSBpZiAoKHExID09IDkpIHx8IChxMSA9 PSAxMCkpCisJCQkJKm1hc2swIHw9IEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfRU1BQzFPQ1Ag fAorCQkJCQkgIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfRU1BQzE7CisJCQllbHNlIGlmICgo cTEgPT0gMTEpIHx8ICgxID09IDEyKSkKKwkJCQkqbWFzazAgfD0gQVJSSUExMF9SU1RNR1JfUEVS ME1PRFJTVF9FTUFDME9DUCB8CisJCQkJCSAgQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9FTUFD MDsKKwkJCWJyZWFrOworCQljYXNlIEFSUklBMTBfUElOTVVYX1NIQVJFRF9JT19RMV9JMkM6CisJ CQlpZiAoKHExID09IDMpIHx8IChxMSA9PSA0KSkKKwkJCQkqbWFzazEgfD0gQVJSSUExMF9SU1RN R1JfUEVSMU1PRFJTVF9JMkMxOworCQkJZWxzZSBpZiAoKHExID09IDUpIHx8IChxMSA9PSA2KSkK KwkJCQkqbWFzazEgfD0gQVJSSUExMF9SU1RNR1JfUEVSMU1PRFJTVF9JMkMwOworCQkJZWxzZSBp ZiAoKHExID09IDcpIHx8IChxMSA9PSA4KSkKKwkJCQkqbWFzazEgfD0gQVJSSUExMF9SU1RNR1Jf UEVSMU1PRFJTVF9JMkM0OworCQkJZWxzZSBpZiAoKHExID09IDkpIHx8IChxMSA9PSAxMCkpCisJ CQkJKm1hc2sxIHw9IEFSUklBMTBfUlNUTUdSX1BFUjFNT0RSU1RfSTJDMzsKKwkJCWVsc2UgaWYg KChxMSA9PSAxMSkgfHwgKHExID09IDEyKSkKKwkJCQkqbWFzazEgfD0gQVJSSUExMF9SU1RNR1Jf UEVSMU1PRFJTVF9JMkMyOworCQkJYnJlYWs7CisJCX0KKwl9Cit9CisKK3ZvaWQgYXJyaWExMF9y ZXNldF9kZWFzc2VydF9zaGFyZWRfcGVyaXBoZXJhbHNfcTIodWludDMyX3QgKm1hc2swLAorCQkJ CQkJICB1aW50MzJfdCAqbWFzazEpCit7CisJdWludDMyX3QgcGlubXV4X2FkZHIgPSBBUlJJQTEw X1BJTk1VWF9TSEFSRURfM1ZfSU9fR1JQX0FERFI7CisJaW50IHEyOworCisJZm9yIChxMiA9IDE7 IHEyIDw9IDEyOyBxMisrLCBwaW5tdXhfYWRkciArPSBzaXplb2YodWludDMyX3QpKSB7CisJCXN3 aXRjaCAocmVhZGwocGlubXV4X2FkZHIpKSB7CisJCWNhc2UgQVJSSUExMF9QSU5NVVhfU0hBUkVE X0lPX1EyX0dQSU86CisJCQkqbWFzazEgfD0gQVJSSUExMF9SU1RNR1JfUEVSMU1PRFJTVF9HUElP MDsKKwkJCWJyZWFrOworCQljYXNlIEFSUklBMTBfUElOTVVYX1NIQVJFRF9JT19RMl9OQU5EOgor CQkJaWYgKChxMiAhPSA0KSAmJiAocTIgIT0gNSkpCisJCQkJKm1hc2swIHw9IEFSUklBMTBfUlNU TUdSX1BFUjBNT0RSU1RfTkFORE9DUCB8CisJCQkJCSAgQVJSSUExMF9SU1RNR1JfUEVSME1PRFJT VF9OQU5EOworCQkJYnJlYWs7CisJCWNhc2UgQVJSSUExMF9QSU5NVVhfU0hBUkVEX0lPX1EyX1VB UlQ6CisJCQlpZiAoKHEyID49IDkpICYmIChxMiA8PSAxMikpCisJCQkJKm1hc2sxIHw9IEFSUklB MTBfUlNUTUdSX1BFUjFNT0RSU1RfVUFSVDA7CisJCQlicmVhazsKKwkJY2FzZSBBUlJJQTEwX1BJ Tk1VWF9TSEFSRURfSU9fUTJfVVNCOgorCQkJKm1hc2swIHw9IEFSUklBMTBfUlNUTUdSX1BFUjBN T0RSU1RfVVNCMU9DUCB8CisJCQkJICBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX1VTQjE7CisJ CQlicmVhazsKKwkJY2FzZSBBUlJJQTEwX1BJTk1VWF9TSEFSRURfSU9fUTJfRU1BQzoKKwkJCSpt YXNrMCB8PSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX0VNQUMwT0NQIHwKKwkJCQkgIEFSUklB MTBfUlNUTUdSX1BFUjBNT0RSU1RfRU1BQzA7CisJCQlicmVhazsKKwkJY2FzZSBBUlJJQTEwX1BJ Tk1VWF9TSEFSRURfSU9fUTJfU1BJTToKKwkJCWlmICgocTIgPj0gOCkgJiYgKHEyIDw9IDEyKSkK KwkJCQkqbWFzazAgfD0gQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9TUElNMTsKKwkJCWJyZWFr OworCQljYXNlIEFSUklBMTBfUElOTVVYX1NIQVJFRF9JT19RMl9TUElTOgorCQkJaWYgKChxMiA+ PSA5KSAmJiAocTIgPD0gMTIpKQorCQkJCSptYXNrMCB8PSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9E UlNUX1NQSVMwOworCQkJYnJlYWs7CisJCWNhc2UgQVJSSUExMF9QSU5NVVhfU0hBUkVEX0lPX1Ey X0kyQzoKKwkJCWlmICgocTIgPT0gOSkgfHwgKHEyID09IDEwKSkKKwkJCQkqbWFzazEgfD0gQVJS SUExMF9SU1RNR1JfUEVSMU1PRFJTVF9JMkMxOworCQkJZWxzZSBpZiAoKHEyID09IDExKSB8fCAo cTIgPT0gMTIpKQorCQkJCSptYXNrMSB8PSBBUlJJQTEwX1JTVE1HUl9QRVIxTU9EUlNUX0kyQzA7 CisJCQlicmVhazsKKwkJfQorCX0KK30KKwordm9pZCBhcnJpYTEwX3Jlc2V0X2RlYXNzZXJ0X3No YXJlZF9wZXJpcGhlcmFsc19xMyh1aW50MzJfdCAqbWFzazAsCisJCQkJCQkgIHVpbnQzMl90ICpt YXNrMSkKK3sKKwl1aW50MzJfdCBwaW5tdXhfYWRkciA9IEFSUklBMTBfUElOTVVYX1NIQVJFRF8z Vl9JT19HUlBfQUREUjsKKwlpbnQgcTM7CisKKwlmb3IgKHEzID0gMTsgcTMgPD0gMTI7IHEzKyss IHBpbm11eF9hZGRyICs9IHNpemVvZih1aW50MzJfdCkpIHsKKwkJc3dpdGNoIChyZWFkbChwaW5t dXhfYWRkcikpIHsKKwkJY2FzZSBBUlJJQTEwX1BJTk1VWF9TSEFSRURfSU9fUTNfR1BJTzoKKwkJ CSptYXNrMSB8PSBBUlJJQTEwX1JTVE1HUl9QRVIxTU9EUlNUX0dQSU8xOworCQkJYnJlYWs7CisJ CWNhc2UgQVJSSUExMF9QSU5NVVhfU0hBUkVEX0lPX1EzX05BTkQ6CisJCQkqbWFzazAgfD0gQVJS SUExMF9SU1RNR1JfUEVSME1PRFJTVF9OQU5ET0NQIHwKKwkJCQkgIEFSUklBMTBfUlNUTUdSX1BF UjBNT0RSU1RfTkFORDsKKwkJCWJyZWFrOworCQljYXNlIEFSUklBMTBfUElOTVVYX1NIQVJFRF9J T19RM19VQVJUOgorCQkJaWYgKChxMyA+PSAxKSAmJiAocTMgPD0gNCkpCisJCQkJKm1hc2sxIHw9 IEFSUklBMTBfUlNUTUdSX1BFUjFNT0RSU1RfVUFSVDA7CisJCQllbHNlIGlmICgocTMgPj0gNSkg JiYgKHEzIDw9IDgpKQorCQkJCSptYXNrMSB8PSBBUlJJQTEwX1JTVE1HUl9QRVIxTU9EUlNUX1VB UlQxOworCQkJYnJlYWs7CisJCWNhc2UgQVJSSUExMF9QSU5NVVhfU0hBUkVEX0lPX1EzX0VNQUMx OgorCQkJKm1hc2swIHw9IEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfRU1BQzFPQ1AgfAorCQkJ CSAgQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9FTUFDMTsKKwkJCWJyZWFrOworCQljYXNlIEFS UklBMTBfUElOTVVYX1NIQVJFRF9JT19RM19TUElNOgorCQkJaWYgKChxMyA+PSAxKSAmJiAocTMg PD0gNSkpCisJCQkJKm1hc2swIHw9IEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfU1BJTTE7CisJ CQlicmVhazsKKwkJY2FzZSBBUlJJQTEwX1BJTk1VWF9TSEFSRURfSU9fUTNfU1BJUzoKKwkJCWlm ICgocTMgPj0gNSkgJiYgKHEzIDw9IDgpKQorCQkJCSptYXNrMCB8PSBBUlJJQTEwX1JTVE1HUl9Q RVIwTU9EUlNUX1NQSVMxOworCQkJZWxzZSBpZiAoKHEzID49IDkpICYmIChxMyA8PSAxMikpCisJ CQkJKm1hc2swIHw9IEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfU1BJUzA7CisJCQlicmVhazsK KwkJY2FzZSBBUlJJQTEwX1BJTk1VWF9TSEFSRURfSU9fUTNfRU1BQzA6CisJCQlpZiAoKHEzID09 IDkpIHx8IChxMyA9PSAxMCkpCisJCQkJKm1hc2swIHw9IEFSUklBMTBfUlNUTUdSX1BFUjBNT0RS U1RfRU1BQzJPQ1AgfAorCQkJCQkgIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfRU1BQzI7CisJ CQllbHNlIGlmICgocTMgPT0gMTEpIHx8IChxMyA9PSAxMikpCisJCQkJKm1hc2swIHw9IEFSUklB MTBfUlNUTUdSX1BFUjBNT0RSU1RfRU1BQzBPQ1AgfAorCQkJCQkgIEFSUklBMTBfUlNUTUdSX1BF UjBNT0RSU1RfRU1BQzA7CisJCQlicmVhazsKKwkJY2FzZSBBUlJJQTEwX1BJTk1VWF9TSEFSRURf SU9fUTNfSTJDOgorCQkJaWYgKChxMyA9PSA3KSB8fCAocTMgPT0gOCkpCisJCQkJKm1hc2sxIHw9 IEFSUklBMTBfUlNUTUdSX1BFUjFNT0RSU1RfSTJDMTsKKwkJCWVsc2UgaWYgKChxMyA9PSAzKSB8 fCAocTMgPT0gNCkpCisJCQkJKm1hc2sxIHw9IEFSUklBMTBfUlNUTUdSX1BFUjFNT0RSU1RfSTJD MDsKKwkJCWVsc2UgaWYgKChxMyA9PSA5KSB8fCAocTMgPT0gMTApKQorCQkJCSptYXNrMSB8PSBB UlJJQTEwX1JTVE1HUl9QRVIxTU9EUlNUX0kyQzQ7CisJCQllbHNlIGlmICgocTMgPT0gMTEpIHx8 IChxMyA9PSAxMikpCisJCQkJKm1hc2sxIHw9IEFSUklBMTBfUlNUTUdSX1BFUjFNT0RSU1RfSTJD MjsKKwkJCWJyZWFrOworCQl9CisJfQorfQorCit2b2lkIGFycmlhMTBfcmVzZXRfZGVhc3NlcnRf c2hhcmVkX3BlcmlwaGVyYWxzX3E0KHVpbnQzMl90ICptYXNrMCwgdWludDMyX3QgKm1hc2sxKQor eworCXVpbnQzMl90IHBpbm11eF9hZGRyID0gQVJSSUExMF9QSU5NVVhfU0hBUkVEXzNWX0lPX0dS UF9BRERSOworCWludCBxNDsKKworCWZvciAocTQgPSAxOyBxNCA8PSAxMjsgcTQrKywgcGlubXV4 X2FkZHIgKz0gc2l6ZW9mKHVpbnQzMl90KSkgeworCQlzd2l0Y2ggKHJlYWRsKHBpbm11eF9hZGRy KSkgeworCQljYXNlIEFSUklBMTBfUElOTVVYX1NIQVJFRF9JT19RNF9HUElPOgorCQkJKm1hc2sx IHw9IEFSUklBMTBfUlNUTUdSX1BFUjFNT0RSU1RfR1BJTzE7CisJCQlicmVhazsKKwkJY2FzZSBB UlJJQTEwX1BJTk1VWF9TSEFSRURfSU9fUTRfTkFORDoKKwkJCWlmIChxNCAhPSA0KQorCQkJCSpt YXNrMCB8PSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX05BTkRPQ1AgfAorCQkJCQkgIEFSUklB MTBfUlNUTUdSX1BFUjBNT0RSU1RfTkFORDsKKwkJCWJyZWFrOworCQljYXNlIEFSUklBMTBfUElO TVVYX1NIQVJFRF9JT19RNF9VQVJUOgorCQkJaWYgKChxNCA+PSAzKSAmJiAocTQgPD0gNikpCisJ CQkJKm1hc2sxIHw9IEFSUklBMTBfUlNUTUdSX1BFUjFNT0RSU1RfVUFSVDE7CisJCQlicmVhazsK KwkJY2FzZSBBUlJJQTEwX1BJTk1VWF9TSEFSRURfSU9fUTRfUVNQSToKKwkJCWlmICgocTQgPT0g NSkgfHwgKHE0ID09IDYpKQorCQkJCSptYXNrMCB8PSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNU X1FTUElPQ1AgfAorCQkJCQkgIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfUVNQSTsKKwkJCWJy ZWFrOworCQljYXNlIEFSUklBMTBfUElOTVVYX1NIQVJFRF9JT19RNF9FTUFDMToKKwkJCSptYXNr MCB8PSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX0VNQUMyT0NQIHwKKwkJCQkgIEFSUklBMTBf UlNUTUdSX1BFUjBNT0RSU1RfRU1BQzI7CisJCQlicmVhazsKKwkJY2FzZSBBUlJJQTEwX1BJTk1V WF9TSEFSRURfSU9fUTRfU0RNTUM6CisJCQlpZiAoKHE0ID49IDEpICYmIChxNCA8PSA2KSkKKwkJ CQkqbWFzazAgfD0gQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9TRE1NQ09DUCB8CisJCQkJCSAg QVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9TRE1NQzsKKwkJCWJyZWFrOworCQljYXNlIEFSUklB MTBfUElOTVVYX1NIQVJFRF9JT19RNF9TUElNOgorCQkJaWYgKChxNCA+PSA2KSAmJiAocTQgPD0g MTIpKQorCQkJCSptYXNrMCB8PSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX1NQSU0wOworCQkJ YnJlYWs7CisJCWNhc2UgQVJSSUExMF9QSU5NVVhfU0hBUkVEX0lPX1E0X1NQSVM6CisJCQlpZiAo KHE0ID49IDkpICYmIChxNCA8PSAxMikpCisJCQkJKm1hc2swIHw9IEFSUklBMTBfUlNUTUdSX1BF UjBNT0RSU1RfU1BJUzE7CisJCQlicmVhazsKKwkJY2FzZSBBUlJJQTEwX1BJTk1VWF9TSEFSRURf SU9fUTRfRU1BQzA6CisJCQlpZiAoKHE0ID09IDcpIHx8IChxNCA9PSA4KSkKKwkJCQkqbWFzazAg fD0gQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9FTUFDMU9DUCB8CisJCQkJCSAgQVJSSUExMF9S U1RNR1JfUEVSME1PRFJTVF9FTUFDMTsKKwkJCWVsc2UgaWYgKChxNCA9PSAxMSkgfHwgKHE0ID09 IDEyKSkKKwkJCQkqbWFzazAgfD0gQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9FTUFDME9DUCB8 CisJCQkJCSAgQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9FTUFDMDsKKwkJCWJyZWFrOworCQlj YXNlIEFSUklBMTBfUElOTVVYX1NIQVJFRF9JT19RNF9JMkM6CisJCQlpZiAoKHE0ID09IDEpIHx8 IChxNCA9PSAyKSkKKwkJCQkqbWFzazEgfD0gQVJSSUExMF9SU1RNR1JfUEVSMU1PRFJTVF9JMkMx OworCQkJZWxzZSBpZiAoKHE0ID09IDcpIHx8IChxNCA9PSA4KSkKKwkJCQkqbWFzazEgfD0gQVJS SUExMF9SU1RNR1JfUEVSMU1PRFJTVF9JMkMzOworCQkJZWxzZSBpZiAoKHE0ID09IDkpIHx8IChx NCA9PSAxMCkpCisJCQkJKm1hc2sxIHw9IEFSUklBMTBfUlNUTUdSX1BFUjFNT0RSU1RfSTJDNDsK KwkJCWVsc2UgaWYgKChxNCA9PSAxMSkgfHwgKHE0ID09IDEyKSkKKwkJCQkqbWFzazEgfD0gQVJS SUExMF9SU1RNR1JfUEVSMU1PRFJTVF9JMkMyOworCQkJYnJlYWs7CisJCX0KKwl9Cit9CisKK3Zv aWQgYXJyaWExMF9yZXNldF9kZWFzc2VydF9zaGFyZWRfcGVyaXBoZXJhbHModm9pZCkKK3sKKwl1 aW50MzJfdCBtYXNrMCA9IDA7CisJdWludDMyX3QgbWFzazEgPSAwOworCisJYXJyaWExMF9yZXNl dF9kZWFzc2VydF9zaGFyZWRfcGVyaXBoZXJhbHNfcTEoJm1hc2swLCAmbWFzazEpOworCWFycmlh MTBfcmVzZXRfZGVhc3NlcnRfc2hhcmVkX3BlcmlwaGVyYWxzX3EyKCZtYXNrMCwgJm1hc2sxKTsK KwlhcnJpYTEwX3Jlc2V0X2RlYXNzZXJ0X3NoYXJlZF9wZXJpcGhlcmFsc19xMygmbWFzazAsICZt YXNrMSk7CisJYXJyaWExMF9yZXNldF9kZWFzc2VydF9zaGFyZWRfcGVyaXBoZXJhbHNfcTQoJm1h c2swLCAmbWFzazEpOworCisJbWFzazEgfD0gQVJSSUExMF9SU1RNR1JfUEVSMU1PRFJTVF9XQVRD SERPRzEgfAorCQkgQVJSSUExMF9SU1RNR1JfUEVSMU1PRFJTVF9MNFNZU1RJTUVSMSB8CisJCSBB UlJJQTEwX1JTVE1HUl9QRVIxTU9EUlNUX1NQVElNRVIwIHwKKwkJIEFSUklBMTBfUlNUTUdSX1BF UjFNT0RSU1RfU1BUSU1FUjE7CisKKwljbHJiaXRzX2xlMzIoQVJSSUExMF9SU1RNR1JfQUREUiAr IEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1QsCisJCSAgICAgbWFzazAgJiBBUlJJQTEwX1JTVE1H Ul9PQ1BfTUFTSyk7CisJY2xyYml0c19sZTMyKEFSUklBMTBfUlNUTUdSX0FERFIgKyBBUlJJQTEw X1JTVE1HUl9QRVIxTU9EUlNULCBtYXNrMSk7CisJY2xyYml0c19sZTMyKEFSUklBMTBfUlNUTUdS X0FERFIgKyBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNULCBtYXNrMCk7Cit9CmRpZmYgLS1naXQg YS9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EvYXJyaWExMC1zZHJhbS5jIGIvYXJjaC9hcm0vbWFjaC1z b2NmcGdhL2FycmlhMTAtc2RyYW0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLjA4ZGUwZTMyY2RjNQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL21hY2gtc29j ZnBnYS9hcnJpYTEwLXNkcmFtLmMKQEAgLTAsMCArMSw1MzUgQEAKKy8qCisgKiBDb3B5cmlnaHQg KEMpIDIwMTQtMjAxNiBBbHRlcmEgQ29ycG9yYXRpb24gPHd3dy5hbHRlcmEuY29tPgorICoKKyAq IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOglHUEwtMi4wCisgKi8KKworI2luY2x1ZGUgPGNvbW1v bi5oPgorI2luY2x1ZGUgPGlvLmg+CisjaW5jbHVkZSA8ZGVidWdfbGwuaD4KKyNpbmNsdWRlIDxt YWNoL2dlbmVyaWMuaD4KKyNpbmNsdWRlIDxtYWNoL2FycmlhMTAtc2RyYW0uaD4KKyNpbmNsdWRl IDxtYWNoL2FycmlhMTAtcmVncy5oPgorI2luY2x1ZGUgPG1hY2gvYXJyaWExMC1yZXNldC1tYW5h Z2VyLmg+CisKKworLyogRkFXQkFOSyAtIE51bWJlciBvZiBCYW5rIG9mIGEgZ2l2ZW4gZGV2aWNl IGludm9sdmVkIGluIHRoZSBGQVcgcGVyaW9kLiAqLworI2RlZmluZSBBUlJJQTEwX1NEUl9BQ1RJ VkFURV9GQVdCQU5LCSgweDEpCisKKyNkZWZpbmUgQVJSSUExMF9FTUlGX1JTVAlCSVQoMzEpCisj ZGVmaW5lIEFSUklBMTBfT0NUX0NBTF9SRVEJQklUKDMwKQorI2RlZmluZSBBUlJJQTEwX09DVF9D QUxfQUNLCTMxCisKKyNkZWZpbmUgQVJSSUExMF9OSU9TX09DVF9ET05FCUJJVCg3KQorI2RlZmlu ZSBBUlJJQTEwX05JT1NfT0NUX0FDSwk3CisKKy8qIEVuZ2luZWVyaW5nIHNhbXBsZSBzaWxpY29u ICovCisjZGVmaW5lIEFSUklBMTBfRVNfU0lMSUNPTl9WRVIJMHgwMDAxMDAwMQorCisjZGVmaW5l IEREUl9SRUdfU0VRMkNPUkUgICAgICAgIDB4RkZEMDUwN0MKKyNkZWZpbmUgRERSX1JFR19DT1JF MlNFUSAgICAgICAgMHhGRkQwNTA3OAorI2RlZmluZSBERFJfUkVHX0dQT1VUICAgICAgICAgICAw eEZGRDAzMDEwCisjZGVmaW5lIEREUl9SRUdfR1BJTiAgICAgICAgICAgIDB4RkZEMDMwMTQKKyNk ZWZpbmUgRERSX01BWF9UUklFUwkJMHgwMDEwMDAwMAorI2RlZmluZSBJTzQ4X01NUl9EUkFNU1RT CTB4RkZDRkEwRUMKKyNkZWZpbmUgSU80OF9NTVJfTklPUzJfUkVTRVJWRTAJMHhGRkNGQTExMAor I2RlZmluZSBJTzQ4X01NUl9OSU9TMl9SRVNFUlZFMQkweEZGQ0ZBMTE0CisjZGVmaW5lIElPNDhf TU1SX05JT1MyX1JFU0VSVkUyCTB4RkZDRkExMTgKKworI2RlZmluZSBTRVEyQ09SRV9NQVNLCQkw eEYKKyNkZWZpbmUgQ09SRTJTRVFfSU5UX1JFUQkweEYKKyNkZWZpbmUgU0VRMkNPUkVfSU5UX1JF U1BfQklUCTMKKworI2RlZmluZSBERFJfRUNDX0RNQV9TSVpFCTE1MDAKKyNkZWZpbmUgRERSX1JF QURfTEFURU5DWV9ERUxBWQk0MAorCisjZGVmaW5lIEFSUklBX0REUl9DT05GSUcoQSwgQiwgQywg UikJKChBPDwyNCl8KEI8PDE2KXwoQzw8OCl8UikKKy8qIFRoZSBmb2xsb3dyaW5nIGFyZSB0aGUg c3VwcG9ydGVkIGNvbmZpZ3VyYXRpb25zICovCit1aW50MzJfdCBkZHJfY29uZmlnW10gPSB7CisJ LyogQ2hpcCAtIFJvdyAtIEJhbmsgLSBDb2x1bW4gU3R5bGUgKi8KKwkvKiBBbGwgVHlwZXMgKi8K KwlBUlJJQV9ERFJfQ09ORklHKDAsIDMsIDEwLCAxMiksCisJQVJSSUFfRERSX0NPTkZJRygwLCAz LCAxMCwgMTMpLAorCUFSUklBX0REUl9DT05GSUcoMCwgMywgMTAsIDE0KSwKKwlBUlJJQV9ERFJf Q09ORklHKDAsIDMsIDEwLCAxNSksCisJQVJSSUFfRERSX0NPTkZJRygwLCAzLCAxMCwgMTYpLAor CUFSUklBX0REUl9DT05GSUcoMCwgMywgMTAsIDE3KSwKKwkvKiBMUEREUiB4MTYgKi8KKwlBUlJJ QV9ERFJfQ09ORklHKDAsIDMsIDExLCAxNCksCisJQVJSSUFfRERSX0NPTkZJRygwLCAzLCAxMSwg MTUpLAorCUFSUklBX0REUl9DT05GSUcoMCwgMywgMTEsIDE2KSwKKwlBUlJJQV9ERFJfQ09ORklH KDAsIDMsIDEyLCAxNSksCisJLyogRERSNCBPbmx5ICovCisJQVJSSUFfRERSX0NPTkZJRygwLCA0 LCAxMCwgMTQpLAorCUFSUklBX0REUl9DT05GSUcoMCwgNCwgMTAsIDE1KSwKKwlBUlJJQV9ERFJf Q09ORklHKDAsIDQsIDEwLCAxNiksCisJQVJSSUFfRERSX0NPTkZJRygwLCA0LCAxMCwgMTcpLAkv KiAxNCAqLworCS8qIENoaXAgLSBCYW5rIC0gUm93IC0gQ29sdW1uIFN0eWxlICovCisJQVJSSUFf RERSX0NPTkZJRygxLCAzLCAxMCwgMTIpLAorCUFSUklBX0REUl9DT05GSUcoMSwgMywgMTAsIDEz KSwKKwlBUlJJQV9ERFJfQ09ORklHKDEsIDMsIDEwLCAxNCksCisJQVJSSUFfRERSX0NPTkZJRygx LCAzLCAxMCwgMTUpLAorCUFSUklBX0REUl9DT05GSUcoMSwgMywgMTAsIDE2KSwKKwlBUlJJQV9E RFJfQ09ORklHKDEsIDMsIDEwLCAxNyksCisJQVJSSUFfRERSX0NPTkZJRygxLCAzLCAxMSwgMTQp LAorCUFSUklBX0REUl9DT05GSUcoMSwgMywgMTEsIDE1KSwKKwlBUlJJQV9ERFJfQ09ORklHKDEs IDMsIDExLCAxNiksCisJQVJSSUFfRERSX0NPTkZJRygxLCAzLCAxMiwgMTUpLAorCS8qIEREUjQg T25seSAqLworCUFSUklBX0REUl9DT05GSUcoMSwgNCwgMTAsIDE0KSwKKwlBUlJJQV9ERFJfQ09O RklHKDEsIDQsIDEwLCAxNSksCisJQVJSSUFfRERSX0NPTkZJRygxLCA0LCAxMCwgMTYpLAorCUFS UklBX0REUl9DT05GSUcoMSwgNCwgMTAsIDE3KSwKK307CisjZGVmaW5lIEREUl9DT05GSUdfRUxF TUVOVFMJQVJSQVlfU0laRShkZHJfY29uZmlnKQorCitzdGF0aWMgaW50IG1hdGNoX2Rkcl9jb25m KHVpbnQzMl90IGRkcl9jb25mKQoreworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IEREUl9D T05GSUdfRUxFTUVOVFM7IGkrKykgeworCQlpZiAoZGRyX2NvbmYgPT0gZGRyX2NvbmZpZ1tpXSkK KwkJCXJldHVybiBpOworCX0KKwlyZXR1cm4gMDsKK30KKworLyogQ2hlY2sgd2hldGhlciBTRFJB TSBpcyBzdWNjZXNzZnVsbHkgQ2FsaWJyYXRlZCAqLworc3RhdGljIGludCBpc19zZHJhbV9jYWxf c3VjY2Vzcyh2b2lkKQoreworCXJldHVybiByZWFkbChBUlJJQTEwX0VDQ19ITUNfT0NQX0REUkNB TFNUQVQpOworfQorCitzdGF0aWMgdW5zaWduZWQgY2hhciBkZHJfZ2V0X2JpdCh1aW50MzJfdCBl cmVnLCB1bnNpZ25lZCBjaGFyIGJpdCkKK3sKKwl1bnNpZ25lZCBpbnQgcmVnID0gcmVhZGwoZXJl Zyk7CisKKwlyZXR1cm4gKHJlZyAmICgxIDw8IGJpdCkpID8gMSA6IDA7Cit9CisKK3N0YXRpYyB1 bnNpZ25lZCBjaGFyIGRkcl93YWl0X2JpdCh1aW50MzJfdCBlcmVnLCB1aW50MzJfdCBiaXQsCisJ CQkJICB1aW50MzJfdCBleHBlY3RlZCwgdWludDMyX3QgdGltZW91dF91c2VjKQoreworCXVuc2ln bmVkIGludCB0bXI7CisKKwlmb3IgKHRtciA9IDA7IHRtciA8IHRpbWVvdXRfdXNlYzsgdG1yICs9 IDEwMCkgeworCQlfX3VkZWxheSgxMDApOworCQlpZiAoZGRyX2dldF9iaXQoZXJlZywgYml0KSA9 PSBleHBlY3RlZCkKKwkJCXJldHVybiAwOworCX0KKworCXJldHVybiAxOworfQorCitzdGF0aWMg dm9pZCBkZHJfZGVsYXkodWludDMyX3QgZGVsYXkpCit7CisJaW50IHRtcjsKKworCWZvciAodG1y ID0gMDsgdG1yIDwgZGVsYXk7IHRtcisrKQorCQlfX3VkZWxheSgxMDAwKTsKK30KKworLyoKKyAq IERpYWdyYW0gb2YgT0NUIFdvcmthcm91bmQ6CisgKgorICogRU1JRiBDb3JlICAgICAgICAgICAg ICAgICAgICAgSFBTIFByb2Nlc3NvciAgICAgICAgICAgICAgT0NUIEZTTQorICogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K KyAqCisgKiBzZXEyY29yZSAgICAgID09PT09PT09PT09PT09PgorICogWzB4Pz8/Pz8/Pz8/XSAg IE9DVCBSZXF1ZXN0ICAgWzB4RkZEMDUwN0NdCisgKgorICogY29yZTJzZXEKKyAqIFsweD8/Pz8/ Pz8/P10gPD09PT09PT09PT09PT09CisgKiAgICAgICAgICAgICAgICAgT0NUIFJlYWR5ICAgICBb MHhGRkQwNTA3OF0KKyAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMHhGRkQw MzAxMF0gPT09PT09PT09PT09PiBSZXF1ZXN0CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE9DVCBSZXF1ZXN0CisgKgorICogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgWzB4RkZEMDMwMTRdIDw9PT09PT09PT09PT0gUmVhZHkKKyAqICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DVCBSZWFkeQorICogU2lnbmFs IGRlZmluaXRpb25zOgorICoKKyAqIHNlcTJjb3JlWzddIC0gT0NUIGNhbGlicmF0aW9uIHJlcXVl c3QgKGFjdC1oaWdoKQorICogY29yZTJzZXFbN10gLSBTaWduYWxzIE9DVCBGU00gaXMgcmVhZHkg KGFjdGl2ZSBoaWdoKQorICogZ3BvdXRbMzFdICAgLSBFTUlGIFJlc2V0IG92ZXJyaWRlIChhY3Rp dmUgbG93KQorICogZ3BvdXRbMzBdICAgLSBPQ1QgY2FsaWJyYXRpb24gcmVxdWVzdCAoYWN0LWhp Z2gpCisgKiBncGluWzMxXSAgICAtIE9DVCBjYWxpYnJhdGlvbiByZWFkeSAoYWN0LWhpZ2gpCisg Ki8KKworc3RhdGljIGludCBkZHJfY2FsaWJyYXRpb25fZXNfd29ya2Fyb3VuZCh2b2lkKQorewor CWRkcl9kZWxheSg1MDApOworCS8qIFN0ZXAgMSAtIEluaXRpYXRpbmcgUmVzZXQgU2VxdWVuY2Ug Ki8KKwljbHJiaXRzX2xlMzIoRERSX1JFR19HUE9VVCwgQVJSSUExMF9FTUlGX1JTVCk7CisJZGRy X2RlbGF5KDEwKTsKKworCS8qIFN0ZXAgMiAtIENsZWFyaW5nIHJlZ2lzdGVycyB0byBFTUlGIGNv cmUgKi8KKwl3cml0ZWwoMCwgRERSX1JFR19DT1JFMlNFUSk7CS8qQ2xlYXIgdGhlIEhQUy0+TklP UyBDT00gcmVnLiovCisKKwkvKiBTdGVwIDMgLSBDbGVhcmluZyByZWdpc3RlcnMgdG8gT0NUIGNv cmUgKi8KKwljbHJiaXRzX2xlMzIoRERSX1JFR19HUE9VVCwgQVJSSUExMF9PQ1RfQ0FMX1JFUSk7 CisJZGRyX2RlbGF5KDUpOworCisJLyogU3RlcCA0IC0gVGFraW5nIEVNSUYgb3V0IG9mIHJlc2V0 ICovCisJc2V0Yml0c19sZTMyKEREUl9SRUdfR1BPVVQsIEFSUklBMTBfRU1JRl9SU1QpOworCWRk cl9kZWxheSgxMCk7CisKKwkvKiBTdGVwIDUgLSBXYWl0aW5nIGZvciBPQ1QgY2lyY3VpdHJ5IHRv IGNvbWUgb3V0IG9mIHJlc2V0ICovCisJaWYgKGRkcl93YWl0X2JpdChERFJfUkVHX0dQSU4sIEFS UklBMTBfT0NUX0NBTF9BQ0ssIDEsIDEwMDAwMDApKQorCQlyZXR1cm4gLTE7CisKKwkvKiBTdGVw IDYgLSBBbGxvd2luZyBFTUlGIHRvIHByb2NlZWQgd2l0aCBPQ1QgY2FsaWJyYXRpb24gKi8KKwlz ZXRiaXRzX2xlMzIoRERSX1JFR19DT1JFMlNFUSwgQVJSSUExMF9OSU9TX09DVF9ET05FKTsKKwor CS8qIFN0ZXAgNyAtIFdhaXRpbmcgZm9yIEVNSUYgcmVxdWVzdCAqLworCWlmIChkZHJfd2FpdF9i aXQoRERSX1JFR19TRVEyQ09SRSwgQVJSSUExMF9OSU9TX09DVF9BQ0ssIDEsIDIwMDAwMDApKQor CQlyZXR1cm4gLTI7CisKKwkvKiBTdGVwIDggLSBBY2tub3dsZWRnaW5nIEVNSUYgT0NUIHJlcXVl c3QgKi8KKwljbHJiaXRzX2xlMzIoRERSX1JFR19DT1JFMlNFUSwgQVJSSUExMF9OSU9TX09DVF9E T05FKTsKKworCS8qIFN0ZXAgOSAtIFdhaXRpbmcgZm9yIEVNSUYgcmVzcG9uc2UgKi8KKwlpZiAo ZGRyX3dhaXRfYml0KEREUl9SRUdfU0VRMkNPUkUsIEFSUklBMTBfTklPU19PQ1RfQUNLLCAwLCAy MDAwMDAwKSkKKwkJcmV0dXJuIC0zOworCisJLyogU3RlcCAxMCAtIFRyaWdnZXJpbmcgT0NUIENh bGlicmF0aW9uICovCisJc2V0Yml0c19sZTMyKEREUl9SRUdfR1BPVVQsIEFSUklBMTBfT0NUX0NB TF9SRVEpOworCisJLyogU3RlcCAxMSAtIFdhaXRpbmcgZm9yIE9DVCByZXNwb25zZSAqLworCWlm IChkZHJfd2FpdF9iaXQoRERSX1JFR19HUElOLCBBUlJJQTEwX09DVF9DQUxfQUNLLCAwLCAxMDAw KSkKKwkJcmV0dXJuIC00OworCisJLyogU3RlcCAxMiAtIENsZWFyaW5nIE9DVCBSZXF1ZXN0IGJp dCAqLworCWNscmJpdHNfbGUzMihERFJfUkVHX0dQT1VULCBBUlJJQTEwX09DVF9DQUxfUkVRKTsK KworCS8qIFN0ZXAgMTMgLSBXYWl0aW5nIGZvciBPQ1QgRW5naW5lICovCisJaWYgKGRkcl93YWl0 X2JpdChERFJfUkVHX0dQSU4sIEFSUklBMTBfT0NUX0NBTF9BQ0ssIDEsIDIwMDAwMCkpCisJCXJl dHVybiAtNTsKKworCS8qIFN0ZXAgMTQgLSBQcm9jZWVkaW5nIHdpdGggRU1JRiBjYWxpYnJhdGlv biAqLworCXNldGJpdHNfbGUzMihERFJfUkVHX0NPUkUyU0VRLCBBUlJJQTEwX05JT1NfT0NUX0RP TkUpOworCisJZGRyX2RlbGF5KDEwMCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBl bWlmX2NsZWFyKHZvaWQpCit7CisJdWludDMyX3QgczJjOworCXVpbnQzMl90IGkgPSBERFJfTUFY X1RSSUVTOworCisJd3JpdGVsKDAsIEREUl9SRUdfQ09SRTJTRVEpOworCWRvIHsKKwkJZGRyX2Rl bGF5KDUwKTsKKwkJczJjID0gcmVhZGwoRERSX1JFR19TRVEyQ09SRSk7CisJfSB3aGlsZSAoKHMy YyAmIFNFUTJDT1JFX01BU0spICYmICgtLWkgPiAwKSk7CisKKwlyZXR1cm4gIWk7Cit9CitzdGF0 aWMgaW50IGVtaWZfcmVzZXQodm9pZCkKK3sKKwl1aW50MzJfdCBjMnMsIHMyYzsKKworCWMycyA9 IHJlYWRsKEREUl9SRUdfQ09SRTJTRVEpOworCXMyYyA9IHJlYWRsKEREUl9SRUdfU0VRMkNPUkUp OworCisJcHJfZGVidWcoImMycz0lMDh4IHMyYz0lMDh4IG5yMD0lMDh4IG5yMT0lMDh4IG5yMj0l MDh4IGRzdD0lMDh4XG4iLAorCQljMnMsIHMyYywgcmVhZGwoSU80OF9NTVJfTklPUzJfUkVTRVJW RTApLAorCQlyZWFkbChJTzQ4X01NUl9OSU9TMl9SRVNFUlZFMSksCisJCXJlYWRsKElPNDhfTU1S X05JT1MyX1JFU0VSVkUyKSwKKwkJcmVhZGwoSU80OF9NTVJfRFJBTVNUUykpOworCisJaWYgKChz MmMgJiBTRVEyQ09SRV9NQVNLKSAmJiBlbWlmX2NsZWFyKCkpIHsKKwkJcHJpbnRmKCJmYWlsZWQg ZW1pZl9jbGVhcigpXG4iKTsKKwkJcmV0dXJuIC0xOworCX0KKworCXdyaXRlbChDT1JFMlNFUV9J TlRfUkVRLCBERFJfUkVHX0NPUkUyU0VRKTsKKworCWlmIChkZHJfd2FpdF9iaXQoRERSX1JFR19T RVEyQ09SRSwgU0VRMkNPUkVfSU5UX1JFU1BfQklULCAwLCAxMDAwMDAwKSkgeworCQlwcmludGYo ImVtaWZfcmVzZXQgZmFpbGVkIHRvIHNlZSBpbnRlcnJ1cHQgYWNrbm93bGVkZ2VcbiIpOworCQly ZXR1cm4gLTI7CisJfSBlbHNlIHsKKwkJcHJpbnRmKCJlbWlmX3Jlc2V0IGludGVycnVwdCBhY2tu b3dsZWRnZWRcbiIpOworCX0KKworCWlmIChlbWlmX2NsZWFyKCkpIHsKKwkJcHJpbnRmKCJlbWlm X2NsZWFyKCkgZmFpbGVkXG4iKTsKKwkJcmV0dXJuIC0zOworCX0KKwlwcl9kZWJ1ZygiZW1pZl9y ZXNldCBpbnRlcnJ1cHQgY2xlYXJlZFxuIik7CisKKwlwcl9kZWJ1ZygibnIwPSUwOHggbnIxPSUw OHggbnIyPSUwOHhcbiIsCisJCXJlYWRsKElPNDhfTU1SX05JT1MyX1JFU0VSVkUwKSwKKwkJcmVh ZGwoSU80OF9NTVJfTklPUzJfUkVTRVJWRTEpLAorCQlyZWFkbChJTzQ4X01NUl9OSU9TMl9SRVNF UlZFMikpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYXJyaWExMF9kZHJfc2V0dXAo dm9pZCkKK3sKKwlpbnQgaSwgaiwgcmV0Y29kZSwgZGRyX3NldHVwX2NvbXBsZXRlID0gMDsKKwlp bnQgY2hpcF92ZXJzaW9uID0gcmVhZGwoQVJSSUExMF9TWVNNR1JfU0lMSUNPTklEMSk7CisKKwkv KiBUcnkgMyB0aW1lcyB0byBkbyBhIGNhbGlicmF0aW9uICovCisJZm9yIChpID0gMDsgKGkgPCAz KSAmJiAhZGRyX3NldHVwX2NvbXBsZXRlOyBpKyspIHsKKwkJLyogT25seSBlbmdpbmVlcmluZyBz YW1wbGUgbmVlZHMgY2FsaWJyYXRpb24gd29ya2Fyb3VuZCAqLworCQlpZiAoQVJSSUExMF9FU19T SUxJQ09OX1ZFUiA9PSBjaGlwX3ZlcnNpb24pIHsKKwkJCXJldGNvZGUgPSBkZHJfY2FsaWJyYXRp b25fZXNfd29ya2Fyb3VuZCgpOworCQkJaWYgKHJldGNvZGUpIHsKKwkJCQlwcmludGYoIkREUkNB TDogRmFpbHVyZTogJWRcbiIsIHJldGNvZGUpOworCQkJCWNvbnRpbnVlOworCQkJfQorCQl9CisK KwkJLyogQSBkZWxheSB0byB3YWl0IGZvciBjYWxpYnJhdGlvbiBiaXQgdG8gc2V0ICovCisJCWZv ciAoaiA9IDA7IChqIDwgMTApICYmICFkZHJfc2V0dXBfY29tcGxldGU7IGorKykgeworCQkJZGRy X2RlbGF5KDUwMCk7CisJCQlkZHJfc2V0dXBfY29tcGxldGUgPSBpc19zZHJhbV9jYWxfc3VjY2Vz cygpOworCQl9CisKKwkJaWYgKCFkZHJfc2V0dXBfY29tcGxldGUgJiYKKwkJCShBUlJJQTEwX0VT X1NJTElDT05fVkVSICE9IGNoaXBfdmVyc2lvbikpIHsKKwkJCWVtaWZfcmVzZXQoKTsKKwkJfQor CX0KKworCWlmICghZGRyX3NldHVwX2NvbXBsZXRlKSB7CisJCXB1dHNfbGwoIkVycm9yOiBDb3Vs ZCBOb3QgQ2FsaWJyYXRlIFNEUkFNXG4iKTsKKwkJcmV0dXJuIC0xOworCX0KKworCXJldHVybiAw OworfQorCisvKiBGdW5jdGlvbiB0byBzdGFydHVwIHRoZSBTRFJBTSovCitzdGF0aWMgaW50IGFy cmlhMTBfc2RyYW1fc3RhcnR1cCh2b2lkKQoreworCXVpbnQzMl90IHZhbDsKKworCS8qIFJlbGVh c2UgTk9DIGRkciBzY2hlZHVsZXIgZnJvbSByZXNldCAqLworCXZhbCA9IHJlYWRsKEFSUklBMTBf UlNUTUdSX0FERFIgKyBBUlJJQTEwX1JTVE1HUl9CUkdNT0RSU1QpOworCXZhbCAmPSB+QVJSSUEx MF9SU1RNR1JfQlJHTU9EUlNUX0REUlNDSDsKKwl3cml0ZWwodmFsLCBBUlJJQTEwX1JTVE1HUl9B RERSICsgQVJSSUExMF9SU1RNR1JfQlJHTU9EUlNUKTsKKworCS8qIEJyaW5ndXAgdGhlIEREUiAo Y2FsaWJyYXRpb24gYW5kIGNvbmZpZ3VyYXRpb24pICovCisJcmV0dXJuIGFycmlhMTBfZGRyX3Nl dHVwKCk7Cit9CisKKy8qIEZ1bmN0aW9uIHRvIGluaXRpYWxpemUgU0RSQU0gTU1SIGFuZCBOT0Mg RERSIHNjaGVkdWxlciovCitzdGF0aWMgdm9pZCBhcnJpYTEwX3NkcmFtX21tcl9pbml0KHZvaWQp Cit7CisJdWludDMyX3QgdXBkYXRlX3ZhbHVlLCBpbzQ4X3ZhbHVlOworCXVuaW9uIGN0cmxjZmcw X3JlZyBjdHJsY2ZnMCA9CisJCSh1bmlvbiBjdHJsY2ZnMF9yZWcpcmVhZGwoQVJSSUExMF9JTzQ4 X0hNQ19NTVJfQ1RSTENGRzApOworCXVuaW9uIGN0cmxjZmcxX3JlZyBjdHJsY2ZnMSA9CisJCSh1 bmlvbiBjdHJsY2ZnMV9yZWcpcmVhZGwoQVJSSUExMF9JTzQ4X0hNQ19NTVJfQ1RSTENGRzEpOwor CXVuaW9uIGRyYW1hZGRyd19yZWcgZHJhbWFkZHJ3ID0KKwkJKHVuaW9uIGRyYW1hZGRyd19yZWcp cmVhZGwoQVJSSUExMF9JTzQ4X0hNQ19NTVJfRFJBTUFERFJXKTsKKwl1bmlvbiBjYWx0aW1pbmcw X3JlZyBjYWx0aW0wID0KKwkJKHVuaW9uIGNhbHRpbWluZzBfcmVnKXJlYWRsKEFSUklBMTBfSU80 OF9ITUNfTU1SX0NBTFRJTUlORzApOworCXVuaW9uIGNhbHRpbWluZzFfcmVnIGNhbHRpbTEgPQor CQkodW5pb24gY2FsdGltaW5nMV9yZWcpcmVhZGwoQVJSSUExMF9JTzQ4X0hNQ19NTVJfQ0FMVElN SU5HMSk7CisJdW5pb24gY2FsdGltaW5nMl9yZWcgY2FsdGltMiA9CisJCSh1bmlvbiBjYWx0aW1p bmcyX3JlZylyZWFkbChBUlJJQTEwX0lPNDhfSE1DX01NUl9DQUxUSU1JTkcyKTsKKwl1bmlvbiBj YWx0aW1pbmczX3JlZyBjYWx0aW0zID0KKwkJKHVuaW9uIGNhbHRpbWluZzNfcmVnKXJlYWRsKEFS UklBMTBfSU80OF9ITUNfTU1SX0NBTFRJTUlORzMpOworCXVuaW9uIGNhbHRpbWluZzRfcmVnIGNh bHRpbTQgPQorCQkodW5pb24gY2FsdGltaW5nNF9yZWcpcmVhZGwoQVJSSUExMF9JTzQ4X0hNQ19N TVJfQ0FMVElNSU5HNCk7CisJdW5pb24gY2FsdGltaW5nOV9yZWcgY2FsdGltOSA9CisJCSh1bmlv biBjYWx0aW1pbmc5X3JlZylyZWFkbChBUlJJQTEwX0lPNDhfSE1DX01NUl9DQUxUSU1JTkc5KTsK Kwl1aW50MzJfdCBkZHJpb2N0bDsKKworCS8qCisJICogQ29uZmlndXJlIHRoZSBERFIgSU8gc2l6 ZSBbMHhGRkNGQjAwOF0KKwkgKiBuaW9zcmVzZXJ2ZTA6IFVzZWQgdG8gaW5kaWNhdGUgRERSIHdp ZHRoICYKKwkgKgliaXRbNzowXSA9IE51bWJlciBvZiBkYXRhIGJpdHMgKDB4MjAgZm9yIDMyYml0 KQorCSAqCWJpdFs4XSAgID0gMSBpZiB1c2VyLW1vZGUgT0NUIGlzIHByZXNlbnQKKwkgKgliaXRb OV0gICA9IDEgaWYgd2FybSByZXNldCBjb21waWxlZCBpbnRvIEVNSUYgQ2FsIENvZGUKKwkgKgli aXRbMTBdICA9IDEgaWYgd2FybSByZXNldCBpcyBvbiBkdXJpbmcgZ2VuZXJhdGlvbiBpbiBFTUlG IENhbAorCSAqIG5pb3NyZXNlcnZlMTogSVAgQURDRFMgdmVyc2lvbiBlbmNvZGVkIGFzIDE2IGJp dCB2YWx1ZQorCSAqCWJpdFsyOjBdID0gVmFyaWFudCAoMD1ub3Qgc3BlY2lhbCwxPUZBRSBiZXRh LCAyPUN1c3RvbWVyIGJldGEsCisJICoJCQkgICAgMz1FQVAsIDQtNiBhcmUgcmVzZXJ2ZWQpCisJ ICoJYml0WzU6M10gPSBTZXJ2aWNlIFBhY2sgIyAoZS5nLiAxKQorCSAqCWJpdFs5OjZdID0gTWlu b3IgUmVsZWFzZSAjCisJICoJYml0WzE0OjEwXSA9IE1ham9yIFJlbGVhc2UgIworCSAqLworCWlm ICgocmVhZGwoQVJSSUExMF9JTzQ4X0hNQ19NTVJfTklPU1JFU0VSVkUxKSA+PiA2KSAmIDB4MUZG KSB7CisJCXVwZGF0ZV92YWx1ZSA9IHJlYWRsKEFSUklBMTBfSU80OF9ITUNfTU1SX05JT1NSRVNF UlZFMCk7CisJCXdyaXRlbCgoKHVwZGF0ZV92YWx1ZSAmIDB4RkYpID4+IDUpLAorCQkgICAgICAg QVJSSUExMF9FQ0NfSE1DX09DUF9ERFJJT0NUUkwpOworCX0KKworCWRkcmlvY3RsID0gcmVhZGwo QVJSSUExMF9FQ0NfSE1DX09DUF9ERFJJT0NUUkwpOworCisJLyogU2V0IHRoZSBERFIgQ29uZmln dXJhdGlvbiBbMHhGRkQxMjQwMF0gKi8KKwlpbzQ4X3ZhbHVlID0gQVJSSUFfRERSX0NPTkZJRyhj dHJsY2ZnMS5jZmdfYWRkcl9vcmRlciwKKwkJCQkgICAgICAoZHJhbWFkZHJ3LmNmZ19iYW5rX2Fk ZHJfd2lkdGggKworCQkJCSAgICAgICBkcmFtYWRkcncuY2ZnX2JhbmtfZ3JvdXBfYWRkcl93aWR0 aCksCisJCQkJICAgICAgZHJhbWFkZHJ3LmNmZ19jb2xfYWRkcl93aWR0aCwKKwkJCQkgICAgICBk cmFtYWRkcncuY2ZnX3Jvd19hZGRyX3dpZHRoKTsKKworCXVwZGF0ZV92YWx1ZSA9IG1hdGNoX2Rk cl9jb25mKGlvNDhfdmFsdWUpOworCWlmICh1cGRhdGVfdmFsdWUpCisJCXdyaXRlbCh1cGRhdGVf dmFsdWUsIEFSUklBMTBfTk9DX0REUl9UX01BSU5fU0NIRURVTEVSX0REUkNPTkYpOworCisJLyoK KwkgKiBDb25maWd1cmUgRERSIHRpbWluZyBbMHhGRkQxMjQwQ10KKwkgKiAgUkRUT01JU1MgPSB0 UlRQICsgdFJQICsgdFJDRCAtIEJMLzIKKwkgKiAgV1JUT01JU1MgPSBXTCArIHRXUiArIHRSUCAr IHRSQ0QgYW5kCisJICogICAgV0wgPSBSTCArIEJMLzIgKyAyIC0gcmQtdG8td3IgOyB0V1IgPSAx NW5zICBzby4uLgorCSAqICBGaXJzdCBwYXJ0IG9mIGVxdWF0aW9uIGlzIGluIG1lbW9yeSBjbG9j ayB1bml0cyBzbyBkaXZpZGUgYnkgMgorCSAqICBmb3IgSE1DIGNsb2NrIHVuaXRzLiAxMDY2TUh6 IGlzIGNsb3NlIHRvIDFucyBzbyB1c2UgMTUgZGlyZWN0bHkuCisJICogIFdSVE9NSVNTID0gKChS TCArIEJMLzIgKyAyICsgdFdSKSA+PiAxKS0gcmQtdG8td3IgKyB0UlAgKyB0UkNECisJICovCisJ dXBkYXRlX3ZhbHVlID0gKGNhbHRpbTIuY2ZnX3JkX3RvX3BjaCArICBjYWx0aW00LmNmZ19wY2hf dG9fdmFsaWQgKworCQkJY2FsdGltMC5jZmdfYWN0X3RvX3Jkd3IgLQorCQkJKGN0cmxjZmcwLmNm Z19jdHJsX2J1cnN0X2xlbiA+PiAyKSk7CisJaW80OF92YWx1ZSA9ICgoKChyZWFkbChBUlJJQTEw X0lPNDhfSE1DX01NUl9EUkFNVElNSU5HMCkgJgorCQkJIEFSUklBMTBfSU80OF9EUkFNVElNRV9N RU1fUkVBRF9MQVRFTkNZKSArIDIgKyAxNSArCisJCQkoY3RybGNmZzAuY2ZnX2N0cmxfYnVyc3Rf bGVuID4+IDEpKSA+PiAxKSAtCisJCSAgICAgIC8qIFVwIHRvIGhlcmUgd2FzIGluIG1lbW9yeSBj eWNsZXMgc28gZGl2aWRlIGJ5IDIgKi8KKwkJICAgICAgY2FsdGltMS5jZmdfcmRfdG9fd3IgKyBj YWx0aW0wLmNmZ19hY3RfdG9fcmR3ciArCisJCSAgICAgIGNhbHRpbTQuY2ZnX3BjaF90b192YWxp ZCk7CisKKwl3cml0ZWwoKChjYWx0aW0wLmNmZ19hY3RfdG9fYWN0IDw8CisJCSBBUlJJQTEwX05P Q19NUFVfRERSX1RfU0NIRURfRERSVElNSU5HX0FDVFRPQUNUX0xTQikgfAorCQkodXBkYXRlX3Zh bHVlIDw8CisJCSBBUlJJQTEwX05PQ19NUFVfRERSX1RfU0NIRURfRERSVElNSU5HX1JEVE9NSVNT X0xTQikgfAorCQkoaW80OF92YWx1ZSA8PAorCQkgQVJSSUExMF9OT0NfTVBVX0REUl9UX1NDSEVE X0REUlRJTUlOR19XUlRPTUlTU19MU0IpIHwKKwkJKChjdHJsY2ZnMC5jZmdfY3RybF9idXJzdF9s ZW4gPj4gMikgPDwKKwkJIEFSUklBMTBfTk9DX01QVV9ERFJfVF9TQ0hFRF9ERFJUSU1JTkdfQlVS U1RMRU5fTFNCKSB8CisJCShjYWx0aW0xLmNmZ19yZF90b193ciA8PAorCQkgQVJSSUExMF9OT0Nf TVBVX0REUl9UX1NDSEVEX0REUlRJTUlOR19SRFRPV1JfTFNCKSB8CisJCShjYWx0aW0zLmNmZ193 cl90b19yZCA8PAorCQkgQVJSSUExMF9OT0NfTVBVX0REUl9UX1NDSEVEX0REUlRJTUlOR19XUlRP UkRfTFNCKSB8CisJCSgoKGRkcmlvY3RsID09IDEpID8gMSA6IDApIDw8CisJCSBBUlJJQTEwX05P Q19NUFVfRERSX1RfU0NIRURfRERSVElNSU5HX0JXUkFUSU9fTFNCKSksCisJICAgICAgIEFSUklB MTBfTk9DX0REUl9UX01BSU5fU0NIRURVTEVSX0REUlRJTUlORyk7CisKKwkvKiBDb25maWd1cmUg RERSIG1vZGUgWzB4RkZEMTI0MTBdIFtwcmVjaGFyZ2UgPSAwXSAqLworCXdyaXRlbCgoKGRkcmlv Y3RsID8gMCA6IDEpIDw8CisJCUFSUklBMTBfTk9DX01QVV9ERFJfVF9TQ0hFRF9ERFJNT0RfQldS QVRJT0VYVEVOREVEX0xTQiksCisJICAgICAgIEFSUklBMTBfTk9DX0REUl9UX01BSU5fU0NIRURV TEVSX0REUk1PREUpOworCisJLyogQ29uZmlndXJlIHRoZSByZWFkIGxhdGVuY3kgWzB4RkZEMTI0 MTRdICovCisJd3JpdGVsKCgocmVhZGwoQVJSSUExMF9JTzQ4X0hNQ19NTVJfRFJBTVRJTUlORzAp ICYKKwkJIEFSUklBMTBfSU80OF9EUkFNVElNRV9NRU1fUkVBRF9MQVRFTkNZKSA+PiAxKSArCisJ ICAgICAgIEREUl9SRUFEX0xBVEVOQ1lfREVMQVksCisJICAgICAgIEFSUklBMTBfTk9DX0REUl9U X01BSU5fU0NIRURVTEVSX1JFQURMQVRFTkNZKTsKKworCS8qCisJICogQ29uZmlndXJpbmcgdGlt aW5nIHZhbHVlcyBjb25jZXJuaW5nIGFjdGl2YXRlIGNvbW1hbmRzCisJICogWzB4RkZEMTI0Mzhd IFtGQVdCQU5LIGFsd2F5IDEgYmVjYXVzZSBhbHdheXMgNCBiYW5rIEREUl0KKwkgKi8KKwl3cml0 ZWwoKChjYWx0aW0wLmNmZ19hY3RfdG9fYWN0X2RiIDw8CisJCSBBUlJJQTEwX05PQ19NUFVfRERS X1RfU0NIRURfQUNUSVZBVEVfUlJEX0xTQikgfAorCQkoY2FsdGltOS5jZmdfNF9hY3RfdG9fYWN0 IDw8CisJCSBBUlJJQTEwX05PQ19NUFVfRERSX1RfU0NIRURfQUNUSVZBVEVfRkFXX0xTQikgfAor CQkoQVJSSUExMF9TRFJfQUNUSVZBVEVfRkFXQkFOSyA8PAorCQkgQVJSSUExMF9OT0NfTVBVX0RE Ul9UX1NDSEVEX0FDVElWQVRFX0ZBV0JBTktfTFNCKSksCisJICAgICAgIEFSUklBMTBfTk9DX0RE Ul9UX01BSU5fU0NIRURVTEVSX0FDVElWQVRFKTsKKworCS8qCisJICogQ29uZmlndXJpbmcgdGlt aW5nIHZhbHVlcyBjb25jZXJuaW5nIGRldmljZSB0byBkZXZpY2UgZGF0YSBidXMKKwkgKiBvd25l cnNoaXAgY2hhbmdlIFsweEZGRDEyNDNDXQorCSAqLworCXdyaXRlbCgoKGNhbHRpbTEuY2ZnX3Jk X3RvX3JkX2RjIDw8CisJCSBBUlJJQTEwX05PQ19NUFVfRERSX1RfU0NIRURfREVWVE9ERVZfQlVT UkRUT1JEX0xTQikgfAorCQkoY2FsdGltMS5jZmdfcmRfdG9fd3JfZGMgPDwKKwkJIEFSUklBMTBf Tk9DX01QVV9ERFJfVF9TQ0hFRF9ERVZUT0RFVl9CVVNSRFRPV1JfTFNCKSB8CisJCShjYWx0aW0z LmNmZ193cl90b19yZF9kYyA8PAorCQkgQVJSSUExMF9OT0NfTVBVX0REUl9UX1NDSEVEX0RFVlRP REVWX0JVU1dSVE9SRF9MU0IpKSwKKwkgICAgICAgQVJSSUExMF9OT0NfRERSX1RfTUFJTl9TQ0hF RFVMRVJfREVWVE9ERVYpOworCisJLyogRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNEUkFNIEVDQyAq LworCWlmIChjdHJsY2ZnMS5jZmdfY3RybF9lbmFibGVfZWNjKSB7CisJCXNldGJpdHNfbGUzMihB UlJJQTEwX0VDQ19ITUNfT0NQX01QUl9FQ0NDVFJMMSwKKwkJCSAgICAgKEFSUklBMTBfRUNDX0hN Q19PQ1BfRUNDQ1RMX0FXQl9DTlRfUlNUIHwKKwkJCSAgICAgIEFSUklBMTBfRUNDX0hNQ19PQ1Bf RUNDQ1RMX0NOVF9SU1QgfAorCQkJICAgICAgQVJSSUExMF9FQ0NfSE1DX09DUF9FQ0NDVExfRUND X0VOKSk7CisJCWNscmJpdHNfbGUzMihBUlJJQTEwX0VDQ19ITUNfT0NQX01QUl9FQ0NDVFJMMSwK KwkJCSAgICAgKEFSUklBMTBfRUNDX0hNQ19PQ1BfRUNDQ1RMX0FXQl9DTlRfUlNUIHwKKwkJCSAg ICAgIEFSUklBMTBfRUNDX0hNQ19PQ1BfRUNDQ1RMX0NOVF9SU1QpKTsKKwkJc2V0Yml0c19sZTMy KEFSUklBMTBfRUNDX0hNQ19PQ1BfTVBSX0VDQ0NUUkwyLAorCQkJICAgICAoQVJSSUExMF9FQ0Nf SE1DX09DUF9FQ0NDVEwyX1JNV19FTiB8CisJCQkgICAgICBBUlJJQTEwX0VDQ19ITUNfT0NQX0VD Q0NUTDJfQVdCX0VOKSk7CisJfSBlbHNlIHsKKwkJY2xyYml0c19sZTMyKEFSUklBMTBfRUNDX0hN Q19PQ1BfTVBSX0VDQ0NUUkwxLAorCQkJICAgICAoQVJSSUExMF9FQ0NfSE1DX09DUF9FQ0NDVExf QVdCX0NOVF9SU1QgfAorCQkJICAgICAgQVJSSUExMF9FQ0NfSE1DX09DUF9FQ0NDVExfQ05UX1JT VCB8CisJCQkgICAgICBBUlJJQTEwX0VDQ19ITUNfT0NQX0VDQ0NUTF9FQ0NfRU4pKTsKKwkJY2xy Yml0c19sZTMyKEFSUklBMTBfRUNDX0hNQ19PQ1BfTVBSX0VDQ0NUUkwyLAorCQkJICAgICAoQVJS SUExMF9FQ0NfSE1DX09DUF9FQ0NDVEwyX1JNV19FTiB8CisJCQkgICAgICBBUlJJQTEwX0VDQ19I TUNfT0NQX0VDQ0NUTDJfQVdCX0VOKSk7CisJfQorfQorCitzdGF0aWMgaW50IGFycmlhMTBfc2Ry YW1fZmlyZXdhbGxfc2V0dXAodm9pZCkKK3sKKwl1aW50MzJfdCBtcHVfZW4gPSAwOworCisJLyog c2V0IHRvIGRlZmF1bHQgc3RhdGUgKi8KKwl3cml0ZWwoMHgwMDAwMDAwMCwgQVJSSUExMF9TRFJf RldfTVBVX0ZQR0FfRU4pOworCXdyaXRlbCgweDAwMDAwMDAwLCBBUlJJQTEwX05PQ19GV19ERFJf TDNfRERSX1NDUl9BRERSICsgMHgwMCk7CisKKwl3cml0ZWwoMHhmZmZmMDAwMCwgQVJSSUExMF9T RFJfRldfTVBVX0ZQR0FfTVBVUkVHSU9OMEFERFIpOworCisJbXB1X2VuIHw9IEFSUklBMTBfTk9D X0ZXX0REUl9NUFVfTVBVUkVHMEVOOworCisJd3JpdGVsKG1wdV9lbiwgQVJSSUExMF9TRFJfRldf TVBVX0ZQR0FfRU4pOworCXdyaXRlbCgweDAwMDAwMDAwLCBBUlJJQTEwX1NEUl9GV19NUFVfRlBH QV9NUFVSRUdJT04xQUREUik7CisJd3JpdGVsKDB4MDAwMDAwMDAsIEFSUklBMTBfU0RSX0ZXX01Q VV9GUEdBX01QVVJFR0lPTjJBRERSKTsKKwl3cml0ZWwoMHgwMDAwMDAwMCwgQVJSSUExMF9TRFJf RldfTVBVX0ZQR0FfTVBVUkVHSU9OM0FERFIpOworCXdyaXRlbCgweGZmZmYwMDAwLCBBUlJJQTEw X1NEUl9GV19NUFVfRlBHQV9GUEdBMlNEUkFNMFJFR0lPTjBBRERSKTsKKworCW1wdV9lbiB8PSBB UlJJQTEwX05PQ19GV19ERFJfTVBVX01QVVJFRzFFTjsKKwl3cml0ZWwobXB1X2VuLCBBUlJJQTEw X1NEUl9GV19NUFVfRlBHQV9FTik7CisKKwl3cml0ZWwoMHgwMDAwMDAwMCwgQVJSSUExMF9TRFJf RldfTVBVX0ZQR0FfRlBHQTJTRFJBTTBSRUdJT04xQUREUik7CisJd3JpdGVsKDB4MDAwMDAwMDAs IEFSUklBMTBfU0RSX0ZXX01QVV9GUEdBX0ZQR0EyU0RSQU0wUkVHSU9OMkFERFIpOworCXdyaXRl bCgweDAwMDAwMDAwLCBBUlJJQTEwX1NEUl9GV19NUFVfRlBHQV9GUEdBMlNEUkFNMFJFR0lPTjNB RERSKTsKKwl3cml0ZWwoMHhmZmZmMDAwMCwgQVJSSUExMF9TRFJfRldfTVBVX0ZQR0FfRlBHQTJT RFJBTTFSRUdJT04wQUREUik7CisKKwltcHVfZW4gfD0gQVJSSUExMF9OT0NfRldfRERSX01QVV9N UFVSRUcyRU47CisJd3JpdGVsKG1wdV9lbiwgQVJSSUExMF9TRFJfRldfTVBVX0ZQR0FfRU4pOwor CisJd3JpdGVsKDB4MDAwMDAwMDAsIEFSUklBMTBfU0RSX0ZXX01QVV9GUEdBX0ZQR0EyU0RSQU0x UkVHSU9OMUFERFIpOworCXdyaXRlbCgweDAwMDAwMDAwLCBBUlJJQTEwX1NEUl9GV19NUFVfRlBH QV9GUEdBMlNEUkFNMVJFR0lPTjJBRERSKTsKKwl3cml0ZWwoMHgwMDAwMDAwMCwgQVJSSUExMF9T RFJfRldfTVBVX0ZQR0FfRlBHQTJTRFJBTTFSRUdJT04zQUREUik7CisJd3JpdGVsKDB4ZmZmZjAw MDAsIEFSUklBMTBfU0RSX0ZXX01QVV9GUEdBX0ZQR0EyU0RSQU0yUkVHSU9OMEFERFIpOworCisJ bXB1X2VuIHw9IEFSUklBMTBfTk9DX0ZXX0REUl9NUFVfTVBVUkVHM0VOOworCXdyaXRlbChtcHVf ZW4sIEFSUklBMTBfU0RSX0ZXX01QVV9GUEdBX0VOKTsKKworCXdyaXRlbCgweDAwMDAwMDAwLCBB UlJJQTEwX1NEUl9GV19NUFVfRlBHQV9GUEdBMlNEUkFNMlJFR0lPTjFBRERSKTsKKwl3cml0ZWwo MHgwMDAwMDAwMCwgQVJSSUExMF9TRFJfRldfTVBVX0ZQR0FfRlBHQTJTRFJBTTJSRUdJT04yQURE Uik7CisJd3JpdGVsKDB4MDAwMDAwMDAsIEFSUklBMTBfU0RSX0ZXX01QVV9GUEdBX0ZQR0EyU0RS QU0yUkVHSU9OM0FERFIpOworCisJd3JpdGVsKDB4ZmZmZjAwMDAsIEFSUklBMTBfTk9DX0ZXX0RE Ul9MM19IUFNSRUdJT04wQUREUik7CisJd3JpdGVsKEFSUklBMTBfTk9DX0ZXX0REUl9MM19IUFNS RUcwRU4sIEFSUklBMTBfTk9DX0ZXX0REUl9MM19FTik7CisKKwlyZXR1cm4gMDsKK30KKworaW50 IGFycmlhMTBfZGRyX2NhbGlicmF0aW9uX3NlcXVlbmNlKHZvaWQpCit7CisJLyogQ2hlY2sgdG8g c2VlIGlmIFNEUkFNIGNhbCB3YXMgc3VjY2VzcyAqLworCWlmIChhcnJpYTEwX3NkcmFtX3N0YXJ0 dXAoKSkgeworCQlwdXRzX2xsKCJERFJDQUw6IEZhaWxlZFxuIik7CisJCXJldHVybiAtMTsKKwl9 CisKKwlwdXRzX2xsKCJERFJDQUw6IFN1Y2Nlc3NcbiIpOworCisJLyogaW5pdGlhbGl6ZSB0aGUg TU1SIHJlZ2lzdGVyICovCisJYXJyaWExMF9zZHJhbV9tbXJfaW5pdCgpOworCisJaWYgKGFycmlh MTBfc2RyYW1fZmlyZXdhbGxfc2V0dXAoKSkKKwkJcHV0c19sbCgiRlc6IEVycm9yIENvbmZpZ3Vy aW5nIEZpcmV3YWxsXG4iKTsKKworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0v bWFjaC1zb2NmcGdhL2N5Y2xvbmU1LWJvb3Rzb3VyY2UuYyBiL2FyY2gvYXJtL21hY2gtc29jZnBn YS9jeWNsb25lNS1ib290c291cmNlLmMKaW5kZXggZGE0MTAyYzRmNTMxLi43MTdhMDAzNDI1MDYg MTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtc29jZnBnYS9jeWNsb25lNS1ib290c291cmNlLmMK KysrIGIvYXJjaC9hcm0vbWFjaC1zb2NmcGdhL2N5Y2xvbmU1LWJvb3Rzb3VyY2UuYwpAQCAtMTgs NiArMTgsNyBAQAogI2luY2x1ZGUgPGlvLmg+CiAjaW5jbHVkZSA8bWFjaC9jeWNsb25lNS1zeXN0 ZW0tbWFuYWdlci5oPgogI2luY2x1ZGUgPG1hY2gvY3ljbG9uZTUtcmVncy5oPgorI2luY2x1ZGUg PG1hY2gvYXJyaWExMC1zeXN0ZW0tbWFuYWdlci5oPgogCiAjZGVmaW5lIENZQ0xPTkU1X1NZU01H Ul9CT09USU5GTwkweDE0CiAKQEAgLTU0LDQgKzU1LDQ2IEBAIHN0YXRpYyBpbnQgY3ljbG9uZTVf Ym9vdF9zYXZlX2xvYyh2b2lkKQogCiAJcmV0dXJuIDA7CiB9Ci1jb3JlX2luaXRjYWxsKGN5Y2xv bmU1X2Jvb3Rfc2F2ZV9sb2MpOworCitzdGF0aWMgaW50IGFycmlhMTBfYm9vdF9zYXZlX2xvYyh2 b2lkKQoreworCWVudW0gYm9vdHNvdXJjZSBzcmMgPSBCT09UU09VUkNFX1VOS05PV047CisJdWlu dDMyX3QgdmFsOworCisJdmFsID0gcmVhZGwoQVJSSUExMF9TWVNNR1JfQk9PVElORk8pOworCisJ c3dpdGNoICgodmFsICYgMHg3MDAwKSA+PiAxMikgeworCWNhc2UgMDoKKwkJLyogcmVzZXJ2ZWQg Ki8KKwkJYnJlYWs7CisJY2FzZSAxOgorCQkvKiBGUEdBLCBjdXJyZW50bHkgbm90IGRlY29kZWQg Ki8KKwkJYnJlYWs7CisJY2FzZSAyOgorCWNhc2UgMzoKKwkJc3JjID0gQk9PVFNPVVJDRV9OQU5E OworCQlicmVhazsKKwljYXNlIDQ6CisJY2FzZSA1OgorCQlzcmMgPSBCT09UU09VUkNFX01NQzsK KwkJYnJlYWs7CisJY2FzZSA2OgorCWNhc2UgNzoKKwkJc3JjID0gQk9PVFNPVVJDRV9TUEk7CisJ CWJyZWFrOworCX0KKworCWJvb3Rzb3VyY2Vfc2V0KHNyYyk7CisJYm9vdHNvdXJjZV9zZXRfaW5z dGFuY2UoMCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzb2NmcGdhX2Jvb3Rfc2F2 ZV9sb2Modm9pZCkKK3sKKwlpZiAoSVNfRU5BQkxFRChDT05GSUdfQVJDSF9TT0NGUEdBX0FSUklB MTApKQorCQlyZXR1cm4gYXJyaWExMF9ib290X3NhdmVfbG9jKCk7CisJZWxzZQorCQlyZXR1cm4g Y3ljbG9uZTVfYm9vdF9zYXZlX2xvYygpOworfQorY29yZV9pbml0Y2FsbChzb2NmcGdhX2Jvb3Rf c2F2ZV9sb2MpOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1zb2NmcGdhL2dlbmVyaWMuYyBi L2FyY2gvYXJtL21hY2gtc29jZnBnYS9nZW5lcmljLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IGM5MjBiZDY1OGZkNy4uMDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gvYXJtL21hY2gtc29j ZnBnYS9nZW5lcmljLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBAQAotI2luY2x1ZGUg PGNvbW1vbi5oPgotI2luY2x1ZGUgPG1hbGxvYy5oPgotI2luY2x1ZGUgPGVudmZzLmg+Ci0jaW5j bHVkZSA8aW5pdC5oPgotI2luY2x1ZGUgPGlvLmg+Ci0jaW5jbHVkZSA8ZnMuaD4KLSNpbmNsdWRl IDxsaW51eC9jbGtkZXYuaD4KLSNpbmNsdWRlIDxsaW51eC9jbGsuaD4KLSNpbmNsdWRlIDxsaW51 eC9zdGF0Lmg+Ci0jaW5jbHVkZSA8YXNtL21lbW9yeS5oPgotI2luY2x1ZGUgPG1hY2gvc3lzdGVt LW1hbmFnZXIuaD4KLSNpbmNsdWRlIDxtYWNoL3Jlc2V0LW1hbmFnZXIuaD4KLSNpbmNsdWRlIDxt YWNoL3NvY2ZwZ2EtcmVncy5oPgotI2luY2x1ZGUgPG1hY2gvbmljMzAxLmg+Ci0KLSNkZWZpbmUg U1lTTUdSX1NETU1DR1JQX0NUUkxfUkVHCShDWUNMT05FNV9TWVNNR1JfQUREUkVTUyArIDB4MTA4 KQotI2RlZmluZSBTWVNNR1JfU0RNTUNfQ1RSTF9TTVBMU0VMKHNtcGxzZWwpCSgoKHNtcGxzZWwp ICYgMHg3KSA8PCAzKQotI2RlZmluZSBTWVNNR1JfU0RNTUNfQ1RSTF9EUlZTRUwoZHJ2c2VsKQko KGRydnNlbCkgJiAweDcpCi0KLXN0YXRpYyBpbnQgc29jZnBnYV9kZXRlY3Rfc2RyYW0odm9pZCkK LXsKLQl2b2lkIF9faW9tZW0gKmJhc2UgPSAodm9pZCAqKUNZQ0xPTkU1X1NEUl9BRERSRVNTOwot CXVpbnQzMl90IGRyYW1hZGRydywgY3RybHdpZHRoLCBtZW1zaXplOwotCWludCBjb2xiaXRzLCBy b3diaXRzLCBiYW5rYml0czsKLQlpbnQgd2lkdGhfYnl0ZXM7Ci0KLQlkcmFtYWRkcncgPSByZWFk bChiYXNlICsgMHg1MDAwICsgMHgyYyk7Ci0KLQljb2xiaXRzID0gZHJhbWFkZHJ3ICYgMHgxZjsK LQlyb3diaXRzID0gKGRyYW1hZGRydyA+PiA1KSAmIDB4MWY7Ci0JYmFua2JpdHMgPSAoZHJhbWFk ZHJ3ID4+IDEwKSAmIDB4NzsKLQotCWN0cmx3aWR0aCA9IHJlYWRsKGJhc2UgKyAweDUwMDAgKyAw eDYwKTsKLQotCXN3aXRjaCAoY3RybHdpZHRoICYgMHgzKSB7Ci0JZGVmYXVsdDoKLQljYXNlIDA6 Ci0JCXdpZHRoX2J5dGVzID0gMTsKLQkJYnJlYWs7Ci0JY2FzZSAxOgotCQl3aWR0aF9ieXRlcyA9 IDI7Ci0JCWJyZWFrOwotCWNhc2UgMjoKLQkJd2lkdGhfYnl0ZXMgPSA0OwotCQlicmVhazsKLQl9 Ci0KLQltZW1zaXplID0gKDEgPDwgY29sYml0cykgKiAoMSA8PCByb3diaXRzKSAqICgxIDw8IGJh bmtiaXRzKSAqIHdpZHRoX2J5dGVzOwotCi0JcHJfZGVidWcoIiVzOiBjb2xiaXRzOiAlZCByb3di aXRzOiAlZCBiYW5rYml0czogJWQgd2lkdGg6ICVkID0+IG1lbXNpemU6IDB4JTA4eFxuIiwKLQkJ CV9fZnVuY19fLCBjb2xiaXRzLCByb3diaXRzLCBiYW5rYml0cywgd2lkdGhfYnl0ZXMsIG1lbXNp emUpOwotCi0JYXJtX2FkZF9tZW1fZGV2aWNlKCJyYW0wIiwgMHgwLCBtZW1zaXplKTsKLQotCXJl dHVybiAwOwotfQotCi0vKiBTb21lIGluaXRpYWxpemF0aW9uIGZvciB0aGUgRU1BQyAqLwotc3Rh dGljIHZvaWQgc29jZnBnYV9pbml0X2VtYWModm9pZCkKLXsKLQl1aW50MzJfdCByc3QsIHZhbDsK LQotCS8qIE5vIG5lZWQgZm9yIHRoaXMgd2l0aG91dCBuZXR3b3JrIHN1cHBvcnQsIGUuZy4geGxv YWRlciBidWlsZCAqLwotCWlmICghSVNfRU5BQkxFRChDT05GSUdfTkVUKSkKLQkJcmV0dXJuOwot Ci0JLyogQWNjb3JkaW5nIHRvIEN5Y2xvbmUgViBkYXRhc2hlZXQsIDE3LTYwICJFTUFDIEhQUyBJ bnRlcmZhY2UKLQkgKiBJbml0aWFsaXphdGlvbiIsIGNoYW5naW5nIFBIWVNFTCBzaG91bGQgYmUg ZG9uZSB3aXRoIEVNQUMgaW4gcmVzZXQKLQkgKiB2aWEgcGVybW9kcnN0LiAgKi8KLQotCS8qIEV2 ZXJ5dGhpbmcsIGV4Y2VwdCBMNFdEMC8xLCBpcyBvdXQgb2YgcmVzZXQgdmlhIHNvY2ZwZ2FfbG93 bGV2ZWxfaW5pdCgpICovCi0JcnN0ID0gcmVhZGwoQ1lDTE9ORTVfUlNUTUdSX0FERFJFU1MgKyBS RVNFVF9NR1JfUEVSX01PRF9SRVNFVF9PRlMpOwotCXJzdCB8PSBSU1RNR1JfUEVSTU9EUlNUX0VN QUMwIHwgUlNUTUdSX1BFUk1PRFJTVF9FTUFDMTsKLQl3cml0ZWwocnN0LCBDWUNMT05FNV9SU1RN R1JfQUREUkVTUyArIFJFU0VUX01HUl9QRVJfTU9EX1JFU0VUX09GUyk7Ci0KLQkvKiBTZXQgZW1h YzAvMSBQSFkgaW50ZXJmYWNlIHNlbGVjdCB0byBSR01JSS4gIFdlIGNvdWxkIHJlYWQgcGh5LW1v ZGUKLQkgKiBmcm9tIHRoZSBkZXZpY2UgdHJlZSwgaWYgaXQgd2FzIGRlc2lyZWQgdG8gc3VwcG9y dCBpbnRlcmZhY2VzIG90aGVyCi0JICogdGhhbiBSR01JSS4gKi8KLQl2YWwgPSByZWFkbChDT05G SUdfU1lTTUdSX0VNQUNfQ1RSTCk7Ci0JdmFsICY9IH4oU1lTTUdSX0VNQUNHUlBfQ1RSTF9QSFlT RUxfTUFTSyA8PCBTWVNNR1JfRU1BQ0dSUF9DVFJMX1BIWVNFTDBfTFNCKTsKLQl2YWwgJj0gfihT WVNNR1JfRU1BQ0dSUF9DVFJMX1BIWVNFTF9NQVNLIDw8IFNZU01HUl9FTUFDR1JQX0NUUkxfUEhZ U0VMMV9MU0IpOwotCXZhbCB8PSBTWVNNR1JfRU1BQ0dSUF9DVFJMX1BIWVNFTF9FTlVNX1JHTUlJ IDw8IFNZU01HUl9FTUFDR1JQX0NUUkxfUEhZU0VMMF9MU0I7Ci0JdmFsIHw9IFNZU01HUl9FTUFD R1JQX0NUUkxfUEhZU0VMX0VOVU1fUkdNSUkgPDwgU1lTTUdSX0VNQUNHUlBfQ1RSTF9QSFlTRUwx X0xTQjsKLQl3cml0ZWwodmFsLCBDT05GSUdfU1lTTUdSX0VNQUNfQ1RSTCk7Ci0KLQkvKiBUYWtl IGVtYWMwIGFuZCBlbWFjMSBvdXQgb2YgcmVzZXQgKi8KLQlyc3QgJj0gfihSU1RNR1JfUEVSTU9E UlNUX0VNQUMwIHwgUlNUTUdSX1BFUk1PRFJTVF9FTUFDMSk7Ci0Jd3JpdGVsKHJzdCwgQ1lDTE9O RTVfUlNUTUdSX0FERFJFU1MgKyBSRVNFVF9NR1JfUEVSX01PRF9SRVNFVF9PRlMpOwotfQotCi1z dGF0aWMgaW50IHNvY2ZwZ2FfaW5pdCh2b2lkKQotewotCXNvY2ZwZ2FfaW5pdF9lbWFjKCk7Ci0K LQl3cml0ZWwoU1lTTUdSX1NETU1DX0NUUkxfRFJWU0VMKDMpIHwgU1lTTUdSX1NETU1DX0NUUkxf U01QTFNFTCgwKSwKLQkJU1lTTUdSX1NETU1DR1JQX0NUUkxfUkVHKTsKLQotCW5pYzMwMV9zbGF2 ZV9ucygpOwotCi0Jc29jZnBnYV9kZXRlY3Rfc2RyYW0oKTsKLQotCXJldHVybiAwOwotfQotY29y ZV9pbml0Y2FsbChzb2NmcGdhX2luaXQpOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1zb2Nm cGdhL2luY2x1ZGUvbWFjaC9hcnJpYTEwLWNsb2NrLW1hbmFnZXIuaCBiL2FyY2gvYXJtL21hY2gt c29jZnBnYS9pbmNsdWRlL21hY2gvYXJyaWExMC1jbG9jay1tYW5hZ2VyLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lZTJiOWIzYzVlYzEKLS0tIC9kZXYvbnVsbAor KysgYi9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EvaW5jbHVkZS9tYWNoL2FycmlhMTAtY2xvY2stbWFu YWdlci5oCkBAIC0wLDAgKzEsMjQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFsdGVy YSBDb3Jwb3JhdGlvbiA8d3d3LmFsdGVyYS5jb20+CisgKgorICogU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6CUdQTC0yLjArCisgKi8KKworI2lmbmRlZglfQVJSSUExMF9DTE9DS19NQU5BR0VSX0hf CisjZGVmaW5lCV9BUlJJQTEwX0NMT0NLX01BTkFHRVJfSF8KKworc3RydWN0IGFycmlhMTBfY2xv Y2tfbWFuYWdlciB7CisJLyogY2xrbWdyICovCisJdm9sYXRpbGUgdWludDMyX3QgIGN0cmw7CisJ dm9sYXRpbGUgdWludDMyX3QgIGludHI7CisJdm9sYXRpbGUgdWludDMyX3QgIGludHJzOworCXZv bGF0aWxlIHVpbnQzMl90ICBpbnRycjsKKwl2b2xhdGlsZSB1aW50MzJfdCAgaW50cmVuOworCXZv bGF0aWxlIHVpbnQzMl90ICBpbnRyZW5zOworCXZvbGF0aWxlIHVpbnQzMl90ICBpbnRyZW5yOwor CXZvbGF0aWxlIHVpbnQzMl90ICBzdGF0OworCXZvbGF0aWxlIHVpbnQzMl90ICB0ZXN0aW9jdHJs OworCXZvbGF0aWxlIHVpbnQzMl90ICBfcGFkXzB4MjRfMHg0MFs3XTsKKworCS8qIG1haW5wbGxn cnAqLworCXZvbGF0aWxlIHVpbnQzMl90ICBtYWluX3BsbF92Y28wOworCXZvbGF0aWxlIHVpbnQz Ml90ICBtYWluX3BsbF92Y28xOworCXZvbGF0aWxlIHVpbnQzMl90ICBtYWluX3BsbF9lbjsKKwl2 b2xhdGlsZSB1aW50MzJfdCAgbWFpbl9wbGxfZW5zOworCXZvbGF0aWxlIHVpbnQzMl90ICBtYWlu X3BsbF9lbnI7CisJdm9sYXRpbGUgdWludDMyX3QgIG1haW5fcGxsX2J5cGFzczsKKwl2b2xhdGls ZSB1aW50MzJfdCAgbWFpbl9wbGxfYnlwYXNzczsKKwl2b2xhdGlsZSB1aW50MzJfdCAgbWFpbl9w bGxfYnlwYXNzcjsKKwl2b2xhdGlsZSB1aW50MzJfdCAgbWFpbl9wbGxfbXB1Y2xrOworCXZvbGF0 aWxlIHVpbnQzMl90ICBtYWluX3BsbF9ub2NjbGs7CisJdm9sYXRpbGUgdWludDMyX3QgIG1haW5f cGxsX2NudHIyY2xrOworCXZvbGF0aWxlIHVpbnQzMl90ICBtYWluX3BsbF9jbnRyM2NsazsKKwl2 b2xhdGlsZSB1aW50MzJfdCAgbWFpbl9wbGxfY250cjRjbGs7CisJdm9sYXRpbGUgdWludDMyX3Qg IG1haW5fcGxsX2NudHI1Y2xrOworCXZvbGF0aWxlIHVpbnQzMl90ICBtYWluX3BsbF9jbnRyNmNs azsKKwl2b2xhdGlsZSB1aW50MzJfdCAgbWFpbl9wbGxfY250cjdjbGs7CisJdm9sYXRpbGUgdWlu dDMyX3QgIG1haW5fcGxsX2NudHI4Y2xrOworCXZvbGF0aWxlIHVpbnQzMl90ICBtYWluX3BsbF9j bnRyOWNsazsKKwl2b2xhdGlsZSB1aW50MzJfdCAgbWFpbl9wbGxfX3BhZF8weDQ4XzB4NWJbNV07 CisJdm9sYXRpbGUgdWludDMyX3QgIG1haW5fcGxsX2NudHIxNWNsazsKKwl2b2xhdGlsZSB1aW50 MzJfdCAgbWFpbl9wbGxfb3V0cnN0OworCXZvbGF0aWxlIHVpbnQzMl90ICBtYWluX3BsbF9vdXRy c3RzdGF0OworCXZvbGF0aWxlIHVpbnQzMl90ICBtYWluX3BsbF9ub2NkaXY7CisJdm9sYXRpbGUg dWludDMyX3QgIG1haW5fcGxsX19wYWRfMHg2Y18weDgwWzVdOworCisJLyogcGVycGxsZ3JwKi8K Kwl2b2xhdGlsZSB1aW50MzJfdCAgcGVyX3BsbF92Y28wOworCXZvbGF0aWxlIHVpbnQzMl90ICBw ZXJfcGxsX3ZjbzE7CisJdm9sYXRpbGUgdWludDMyX3QgIHBlcl9wbGxfZW47CisJdm9sYXRpbGUg dWludDMyX3QgIHBlcl9wbGxfZW5zOworCXZvbGF0aWxlIHVpbnQzMl90ICBwZXJfcGxsX2VucjsK Kwl2b2xhdGlsZSB1aW50MzJfdCAgcGVyX3BsbF9ieXBhc3M7CisJdm9sYXRpbGUgdWludDMyX3Qg IHBlcl9wbGxfYnlwYXNzczsKKwl2b2xhdGlsZSB1aW50MzJfdCAgcGVyX3BsbF9ieXBhc3NyOwor CXZvbGF0aWxlIHVpbnQzMl90ICBwZXJfcGxsX19wYWRfMHgyMF8weDI3WzJdOworCXZvbGF0aWxl IHVpbnQzMl90ICBwZXJfcGxsX2NudHIyY2xrOworCXZvbGF0aWxlIHVpbnQzMl90ICBwZXJfcGxs X2NudHIzY2xrOworCXZvbGF0aWxlIHVpbnQzMl90ICBwZXJfcGxsX2NudHI0Y2xrOworCXZvbGF0 aWxlIHVpbnQzMl90ICBwZXJfcGxsX2NudHI1Y2xrOworCXZvbGF0aWxlIHVpbnQzMl90ICBwZXJf cGxsX2NudHI2Y2xrOworCXZvbGF0aWxlIHVpbnQzMl90ICBwZXJfcGxsX2NudHI3Y2xrOworCXZv bGF0aWxlIHVpbnQzMl90ICBwZXJfcGxsX2NudHI4Y2xrOworCXZvbGF0aWxlIHVpbnQzMl90ICBw ZXJfcGxsX2NudHI5Y2xrOworCXZvbGF0aWxlIHVpbnQzMl90ICBwZXJfcGxsX19wYWRfMHg0OF8w eDVmWzZdOworCXZvbGF0aWxlIHVpbnQzMl90ICBwZXJfcGxsX291dHJzdDsKKwl2b2xhdGlsZSB1 aW50MzJfdCAgcGVyX3BsbF9vdXRyc3RzdGF0OworCXZvbGF0aWxlIHVpbnQzMl90ICBwZXJfcGxs X2VtYWNjdGw7CisJdm9sYXRpbGUgdWludDMyX3QgIHBlcl9wbGxfZ3Bpb2RpdjsKKwl2b2xhdGls ZSB1aW50MzJfdCAgcGVyX3BsbF9fcGFkXzB4NzBfMHg4MFs0XTsKK307CisKK3N0cnVjdCBhcnJp YTEwX21haW5wbGxfY2ZnIHsKKwl1aW50MzJfdCB2Y28wX3BzcmM7CisJdWludDMyX3QgdmNvMV9k ZW5vbTsKKwl1aW50MzJfdCB2Y28xX251bWVyOworCXVpbnQzMl90IG1wdWNsazsKKwl1aW50MzJf dCBtcHVjbGtfY250OworCXVpbnQzMl90IG1wdWNsa19zcmM7CisJdWludDMyX3Qgbm9jY2xrOwor CXVpbnQzMl90IG5vY2Nsa19jbnQ7CisJdWludDMyX3Qgbm9jY2xrX3NyYzsKKwl1aW50MzJfdCBj bnRyMmNsa19jbnQ7CisJdWludDMyX3QgY250cjNjbGtfY250OworCXVpbnQzMl90IGNudHI0Y2xr X2NudDsKKwl1aW50MzJfdCBjbnRyNWNsa19jbnQ7CisJdWludDMyX3QgY250cjZjbGtfY250Owor CXVpbnQzMl90IGNudHI3Y2xrX2NudDsKKwl1aW50MzJfdCBjbnRyN2Nsa19zcmM7CisJdWludDMy X3QgY250cjhjbGtfY250OworCXVpbnQzMl90IGNudHI5Y2xrX2NudDsKKwl1aW50MzJfdCBjbnRy OWNsa19zcmM7CisJdWludDMyX3QgY250cjE1Y2xrX2NudDsKKwl1aW50MzJfdCBub2NkaXZfbDRt YWluY2xrOworCXVpbnQzMl90IG5vY2Rpdl9sNG1wY2xrOworCXVpbnQzMl90IG5vY2Rpdl9sNHNw Y2xrOworCXVpbnQzMl90IG5vY2Rpdl9jc2F0Y2xrOworCXVpbnQzMl90IG5vY2Rpdl9jc3RyYWNl Y2xrOworCXVpbnQzMl90IG5vY2Rpdl9jc3BkYmdjbGs7Cit9OworCitzdHJ1Y3QgYXJyaWExMF9w ZXJwbGxfY2ZnIHsKKwl1aW50MzJfdCB2Y28wX3BzcmM7CisJdWludDMyX3QgdmNvMV9kZW5vbTsK Kwl1aW50MzJfdCB2Y28xX251bWVyOworCXVpbnQzMl90IGNudHIyY2xrX2NudDsKKwl1aW50MzJf dCBjbnRyMmNsa19zcmM7CisJdWludDMyX3QgY250cjNjbGtfY250OworCXVpbnQzMl90IGNudHIz Y2xrX3NyYzsKKwl1aW50MzJfdCBjbnRyNGNsa19jbnQ7CisJdWludDMyX3QgY250cjRjbGtfc3Jj OworCXVpbnQzMl90IGNudHI1Y2xrX2NudDsKKwl1aW50MzJfdCBjbnRyNWNsa19zcmM7CisJdWlu dDMyX3QgY250cjZjbGtfY250OworCXVpbnQzMl90IGNudHI2Y2xrX3NyYzsKKwl1aW50MzJfdCBj bnRyN2Nsa19jbnQ7CisJdWludDMyX3QgY250cjhjbGtfY250OworCXVpbnQzMl90IGNudHI4Y2xr X3NyYzsKKwl1aW50MzJfdCBjbnRyOWNsa19jbnQ7CisJdWludDMyX3QgY250cjljbGtfc3JjOwor CXVpbnQzMl90IGVtYWNjdGxfZW1hYzBzZWw7CisJdWludDMyX3QgZW1hY2N0bF9lbWFjMXNlbDsK Kwl1aW50MzJfdCBlbWFjY3RsX2VtYWMyc2VsOworCXVpbnQzMl90IGdwaW9kaXZfZ3Bpb2RiY2xr OworfTsKKworZXh0ZXJuIGludCBhcnJpYTEwX2NtX2Jhc2ljX2luaXQoc3RydWN0IGFycmlhMTBf bWFpbnBsbF9jZmcgKm1haW5wbGxfY2ZnLAorCQkJCSBzdHJ1Y3QgYXJyaWExMF9wZXJwbGxfY2Zn ICpwZXJwbGxfY2ZnKTsKK2V4dGVybiB1bnNpZ25lZCBpbnQgY21fZ2V0X21tY19jb250cm9sbGVy X2Nsa19oeih2b2lkKTsKK2V4dGVybiB2b2lkIGFycmlhMTBfY21fdXNlX2ludG9zYyh2b2lkKTsK K2V4dGVybiB1aW50MzJfdCBjbV9sNF9tYWluX2Nsa19oejsKK2V4dGVybiB1aW50MzJfdCBjbV9s NF9zcF9jbGtfaHo7CitleHRlcm4gdWludDMyX3QgY21fbDRfbXBfY2xrX2h6OworZXh0ZXJuIHVp bnQzMl90IGNtX2w0X3N5c19mcmVlX2Nsa19oejsKKworI2RlZmluZSBBUlJJQTEwX0NMS01HUl9B TFRFUkFHUlBfTVBVX0NMS19PRkZTRVQJCQkweDE0MAorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9N QUlOUExMX05PQ19DTEtfT0ZGU0VUCQkJMHgxNDQKKworLyogdmFsdWUgKi8KKyNkZWZpbmUgQVJS SUExMF9DTEtNR1JfTUFJTlBMTF9CWVBBU1NfUkVTRVQJCQkweDAwMDAwMDNmCisjZGVmaW5lIEFS UklBMTBfQ0xLTUdSX01BSU5QTExfVkNPMF9SRVNFVAkJCTB4MDAwMTAwNTMKKyNkZWZpbmUgQVJS SUExMF9DTEtNR1JfTUFJTlBMTF9WQ08xX1JFU0VUCQkJMHgwMDAxMDAwMQorI2RlZmluZSBBUlJJ QTEwX0NMS01HUl9NQUlOUExMX1ZDTzBfUFNSQ19FT1NDCQkJMHgwCisjZGVmaW5lIEFSUklBMTBf Q0xLTUdSX01BSU5QTExfVkNPMF9QU1JDX0VfSU5UT1NDCQkweDEKKyNkZWZpbmUgQVJSSUExMF9D TEtNR1JfTUFJTlBMTF9WQ08wX1BTUkNfRjJTCQkJMHgyCisjZGVmaW5lIEFSUklBMTBfQ0xLTUdS X1BFUlBMTF9CWVBBU1NfUkVTRVQJCQkweDAwMDAwMGZmCisjZGVmaW5lIEFSUklBMTBfQ0xLTUdS X1BFUlBMTF9WQ08wX1JFU0VUCQkJMHgwMDAxMDA1MworI2RlZmluZSBBUlJJQTEwX0NMS01HUl9Q RVJQTExfVkNPMV9SRVNFVAkJCTB4MDAwMTAwMDEKKyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfUEVS UExMX1ZDTzBfUFNSQ19FT1NDCQkJMHgwCisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX1BFUlBMTF9W Q08wX1BTUkNfRV9JTlRPU0MJCTB4MQorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9QRVJQTExfVkNP MF9QU1JDX0YyUwkJCTB4MgorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9QRVJQTExfVkNPMF9QU1JD X01BSU4JCQkweDMKKworLyogbWFzayAqLworI2RlZmluZSBBUlJJQTEwX0NMS01HUl9NQUlOUExM X0VOX1MyRlVTRVIwQ0xLRU5fU0VUX01TSwkJMHgwMDAwMDA0MAorI2RlZmluZSBBUlJJQTEwX0NM S01HUl9NQUlOUExMX0VOX0hNQ1BMTFJFRkNMS0VOX1NFVF9NU0sJMHgwMDAwMDA4MAorI2RlZmlu ZSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX1ZDTzBfQkdQV1JETl9TRVRfTVNLCQkweDAwMDAwMDAx CisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX01BSU5QTExfVkNPMF9QV1JETl9TRVRfTVNLCQkweDAw MDAwMDAyCisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX01BSU5QTExfVkNPMF9FTl9TRVRfTVNLCQkJ MHgwMDAwMDAwNAorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX1ZDTzBfT1VUUlNUQUxM X1NFVF9NU0sJCTB4MDAwMDAwMDgKKyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9WQ08w X1JFR0VYVFNFTF9TRVRfTVNLCQkweDAwMDAwMDEwCisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX01B SU5QTExfVkNPMF9QU1JDX01TSwkJCTB4MDAwMDAwMDMKKyNkZWZpbmUgQVJSSUExMF9DTEtNR1Jf TUFJTlBMTF9WQ08xX05VTUVSX01TSwkJCTB4MDAwMDFmZmYKKyNkZWZpbmUgQVJSSUExMF9DTEtN R1JfTUFJTlBMTF9WQ08xX0RFTk9NX01TSwkJCTB4MDAwMDAwM2YKKyNkZWZpbmUgQVJSSUExMF9D TEtNR1JfTUFJTlBMTF9DTlRSQ0xLX01TSwkJCTB4MDAwMDAzZmYKKyNkZWZpbmUgQVJSSUExMF9D TEtNR1JfTUFJTlBMTF9NUFVDTEtfQ05UX01TSwkJCTB4MDAwMDAzZmYKKyNkZWZpbmUgQVJSSUEx MF9DTEtNR1JfTUFJTlBMTF9NUFVDTEtfU1JDX01BSU4JCQkwCisjZGVmaW5lIEFSUklBMTBfQ0xL TUdSX01BSU5QTExfTVBVQ0xLX1NSQ19QRVJJCQkJMQorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9N QUlOUExMX01QVUNMS19TUkNfT1NDMQkJCTIKKyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfTUFJTlBM TF9NUFVDTEtfU1JDX0lOVE9TQwkJMworI2RlZmluZSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX01Q VUNMS19TUkNfRlBHQQkJCTQKKyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9OT0NESVZf TVNLCQkJMHgwMDAwMDAwMworI2RlZmluZSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX05PQ0NMS19D TlRfTVNLCQkJMHgwMDAwMDNmZgorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX05PQ0NM S19TUkNfTVNLCQkJMHgwMDAwMDAwNworI2RlZmluZSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX05P Q0NMS19TUkNfTUFJTgkJCTAKKyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9OT0NDTEtf U1JDX1BFUkkJCQkxCisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX01BSU5QTExfTk9DQ0xLX1NSQ19P U0MxCQkJMgorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX05PQ0NMS19TUkNfSU5UT1ND CQkzCisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX01BSU5QTExfTk9DQ0xLX1NSQ19GUEdBCQkJNAor I2RlZmluZSBBUlJJQTEwX0NMS01HUl9DTEtNR1JfU1RBVF9CVVNZX1NFVF9NU0sJCQkweDAwMDAw MDAxCisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX0NMS01HUl9TVEFUX01BSU5QTExMT0NLRURfU0VU X01TSwkweDAwMDAwMTAwCisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX0NMS01HUl9TVEFUX1BFUlBM TExPQ0tFRF9TRVRfTVNLCQkweDAwMDAwMjAwCisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX0NMS01H Ul9TVEFUX0JPT1RDTEtTUkNfU0VUX01TSwkJMHgwMDAyMDAwMAorI2RlZmluZSBBUlJJQTEwX0NM S01HUl9DTEtNR1JfSU5UUl9QRVJQTExGQlNMSVBfU0VUX01TSwkJMHgwMDAwMDgwMAorI2RlZmlu ZSBBUlJJQTEwX0NMS01HUl9DTEtNR1JfSU5UUl9NQUlOUExMRkJTTElQX1NFVF9NU0sJMHgwMDAw MDQwMAorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9DTEtNR1JfSU5UUl9QRVJQTExSRlNMSVBfU0VU X01TSwkJMHgwMDAwMDIwMAorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9DTEtNR1JfSU5UUl9NQUlO UExMUkZTTElQX1NFVF9NU0sJMHgwMDAwMDEwMAorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9DTEtN R1JfSU5UUl9QRVJQTExMT1NUX1NFVF9NU0sJCTB4MDAwMDAwMDgKKyNkZWZpbmUgQVJSSUExMF9D TEtNR1JfQ0xLTUdSX0lOVFJfTUFJTlBMTExPU1RfU0VUX01TSwkJMHgwMDAwMDAwNAorI2RlZmlu ZSBBUlJJQTEwX0NMS01HUl9DTEtNR1JfSU5UUl9NQUlOUExMQUNISUVWRURfU0VUX01TSwkweDAw MDAwMDAxCisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX0NMS01HUl9JTlRSX1BFUlBMTEFDSElFVkVE X1NFVF9NU0sJMHgwMDAwMDAwMgorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9DTEtNR1JfQ1RMX0JP T1RNT0RfU0VUX01TSwkJMHgwMDAwMDAwMQorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9DTEtNR1Jf Q1RMX0JPT1RDTEtfSU5UT1NDX1NFVF9NU0sJMHgwMDAwMDMwMAorI2RlZmluZSBBUlJJQTEwX0NM S01HUl9QRVJQTExfVkNPMF9CR1BXUkROX1NFVF9NU0sJCTB4MDAwMDAwMDEKKyNkZWZpbmUgQVJS SUExMF9DTEtNR1JfUEVSUExMX1ZDTzBfUFdSRE5fU0VUX01TSwkJMHgwMDAwMDAwMgorI2RlZmlu ZSBBUlJJQTEwX0NMS01HUl9QRVJQTExfVkNPMF9FTl9TRVRfTVNLCQkJMHgwMDAwMDAwNAorI2Rl ZmluZSBBUlJJQTEwX0NMS01HUl9QRVJQTExfVkNPMF9PVVRSU1RBTExfU0VUX01TSwkJMHgwMDAw MDAwOAorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9QRVJQTExfVkNPMF9SRUdFWFRTRUxfU0VUX01T SwkJMHgwMDAwMDAxMAorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9QRVJQTExfRU5fUkVTRVQJCQkJ MHgwMDAwMGY3ZgorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9QRVJQTExfVkNPMF9QU1JDX01TSwkJ CTB4MDAwMDAwMDMKKyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfUEVSUExMX1ZDTzFfTlVNRVJfTVNL CQkJMHgwMDAwMWZmZgorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9QRVJQTExfVkNPMV9ERU5PTV9N U0sJCQkweDAwMDAwMDNmCisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX1BFUlBMTF9DTlRSQ0xLX01T SwkJCTB4MDAwMDAzZmYKKworI2RlZmluZSBBUlJJQTEwX0NMS01HUl9QRVJQTExHUlBfRU5fU0RN TUNDTEtfTUFTSwkJMHgwMDAwMDAyMAorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9QRVJQTExHUlBf U1JDX01TSwkJCTB4MDAwMDAwMDcKKyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfUEVSUExMR1JQX1NS Q19NQUlOCQkJMAorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9QRVJQTExHUlBfU1JDX1BFUkkJCQkx CisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX1BFUlBMTEdSUF9TUkNfT1NDMQkJCTIKKyNkZWZpbmUg QVJSSUExMF9DTEtNR1JfUEVSUExMR1JQX1NSQ19JTlRPU0MJCQkzCisjZGVmaW5lIEFSUklBMTBf Q0xLTUdSX1BFUlBMTEdSUF9TUkNfRlBHQQkJCTQKKworLyogYml0IHNoaWZ0aW5nIG1hY3JvICov CisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX01BSU5QTExfVkNPMF9QU1JDX0xTQgkJCTgKKyNkZWZp bmUgQVJSSUExMF9DTEtNR1JfTUFJTlBMTF9WQ08xX0RFTk9NX0xTQgkJCTE2CisjZGVmaW5lIEFS UklBMTBfQ0xLTUdSX01BSU5QTExfTk9DQ0xLX1BFUklDTlRfTFNCCQkxNgorI2RlZmluZSBBUlJJ QTEwX0NMS01HUl9NQUlOUExMX05PQ0NMS19TUkNfTFNCCQkJMTYKKyNkZWZpbmUgQVJSSUExMF9D TEtNR1JfTUFJTlBMTF9OT0NESVZfTDRNQUlOQ0xLX0xTQgkJMAorI2RlZmluZSBBUlJJQTEwX0NM S01HUl9NQUlOUExMX05PQ0RJVl9MNE1QQ0xLX0xTQgkJOAorI2RlZmluZSBBUlJJQTEwX0NMS01H Ul9NQUlOUExMX05PQ0RJVl9MNFNQQ0xLX0xTQgkJMTYKKyNkZWZpbmUgQVJSSUExMF9DTEtNR1Jf TUFJTlBMTF9OT0NESVZfQ1NBVENMS19MU0IJCTI0CisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX01B SU5QTExfTk9DRElWX0NTVFJBQ0VDTEtfTFNCCQkyNgorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9N QUlOUExMX05PQ0RJVl9DU1BEQkdDTEtfTFNCCQkyOAorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9N QUlOUExMX01QVUNMS19TUkNfTFNCCQkJMTYKKyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfTUFJTlBM TF9NUFVDTEtfUEVSSUNOVF9MU0IJCTE2CisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX01BSU5QTExf Tk9DQ0xLX1NSQ19MU0IJCQkxNgorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX0NOVFI3 Q0xLX1NSQ19MU0IJCQkxNgorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9NQUlOUExMX0NOVFI5Q0xL X1NSQ19MU0IJCQkxNgorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9QRVJQTExfVkNPMV9ERU5PTV9M U0IJCQkxNgorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9QRVJQTExfVkNPMF9QU1JDX0xTQgkJCTgK KyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfUEVSUExMX0NOVFIyQ0xLX1NSQ19MU0IJCQkxNgorI2Rl ZmluZSBBUlJJQTEwX0NMS01HUl9QRVJQTExfQ05UUjNDTEtfU1JDX0xTQgkJCTE2CisjZGVmaW5l IEFSUklBMTBfQ0xLTUdSX1BFUlBMTF9DTlRSNENMS19TUkNfTFNCCQkJMTYKKyNkZWZpbmUgQVJS SUExMF9DTEtNR1JfUEVSUExMX0NOVFI1Q0xLX1NSQ19MU0IJCQkxNgorI2RlZmluZSBBUlJJQTEw X0NMS01HUl9QRVJQTExfQ05UUjZDTEtfU1JDX0xTQgkJCTE2CisjZGVmaW5lIEFSUklBMTBfQ0xL TUdSX1BFUlBMTF9DTlRSOENMS19TUkNfTFNCCQkJMTYKKyNkZWZpbmUgQVJSSUExMF9DTEtNR1Jf UEVSUExMX0VNQUNDVExfRU1BQzBTRUxfTFNCCQkyNgorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9Q RVJQTExfRU1BQ0NUTF9FTUFDMVNFTF9MU0IJCTI3CisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX1BF UlBMTF9FTUFDQ1RMX0VNQUMyU0VMX0xTQgkJMjgKKworLyogUExMIHJhbXBpbmcgd29yayBhcm91 bmQgKi8KKyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfUExMX1JBTVBfTVBVQ0xLX1RIUkVTSE9MRF9I WgkJOTAwMDAwMDAwCisjZGVmaW5lIEFSUklBMTBfQ0xLTUdSX1BMTF9SQU1QX05PQ0NMS19USFJF U0hPTERfSFoJCTMwMDAwMDAwMAorI2RlZmluZSBBUlJJQTEwX0NMS01HUl9QTExfUkFNUF9NUFVD TEtfSU5DUkVNRU5UX0haCQkxMDAwMDAwMDAKKyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfUExMX1JB TVBfTk9DQ0xLX0lOQ1JFTUVOVF9IWgkJIDMzMDAwMDAwCisKKyNlbmRpZiAvKiBfQVJSSUExMF9D TE9DS19NQU5BR0VSX0hfICovCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EvaW5j bHVkZS9tYWNoL2FycmlhMTAtcGlubXV4LmggYi9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EvaW5jbHVk ZS9tYWNoL2FycmlhMTAtcGlubXV4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi45NzllNDc2OWRiYjQKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNoLXNv Y2ZwZ2EvaW5jbHVkZS9tYWNoL2FycmlhMTAtcGlubXV4LmgKQEAgLTAsMCArMSwyNTAgQEAKKy8q CisgKiAgQ29weXJpZ2h0IChDKSAyMDE3IFBlbmd1dHJvbml4LCBTdGVmZmVuIFRydW10cmFyIDxr ZXJuZWxAcGVuZ3V0cm9uaXguZGU+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRo ZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq CisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqLworCisjaWZuZGVmIF9BUlJJQTEwX1BJTk1V WF9IXworI2RlZmluZSBfQVJSSUExMF9QSU5NVVhfSF8KKworI2luY2x1ZGUgPG1hY2gvYXJyaWEx MC1yZWdzLmg+CisKKyNkZWZpbmUgQVJSSUExMF9QSU5NVVhfU0hBUkVEX0lPX1ExXzFfQUREUglB UlJJQTEwX1BJTk1VWF9TSEFSRURfM1ZfSU9fR1JQX0FERFIgKyAweDAwCisjZGVmaW5lIEFSUklB MTBfUElOTVVYX1NIQVJFRF9JT19RMV8yX0FERFIJQVJSSUExMF9QSU5NVVhfU0hBUkVEXzNWX0lP X0dSUF9BRERSICsgMHgwNAorI2RlZmluZSBBUlJJQTEwX1BJTk1VWF9TSEFSRURfSU9fUTFfM19B RERSCUFSUklBMTBfUElOTVVYX1NIQVJFRF8zVl9JT19HUlBfQUREUiArIDB4MDgKKyNkZWZpbmUg QVJSSUExMF9QSU5NVVhfU0hBUkVEX0lPX1ExXzRfQUREUglBUlJJQTEwX1BJTk1VWF9TSEFSRURf M1ZfSU9fR1JQX0FERFIgKyAweDBjCisjZGVmaW5lIEFSUklBMTBfUElOTVVYX1NIQVJFRF9JT19R MV81X0FERFIJQVJSSUExMF9QSU5NVVhfU0hBUkVEXzNWX0lPX0dSUF9BRERSICsgMHgxMAorI2Rl ZmluZSBBUlJJQTEwX1BJTk1VWF9TSEFSRURfSU9fUTFfNl9BRERSCUFSUklBMTBfUElOTVVYX1NI QVJFRF8zVl9JT19HUlBfQUREUiArIDB4MTQKKyNkZWZpbmUgQVJSSUExMF9QSU5NVVhfU0hBUkVE X0lPX1ExXzdfQUREUglBUlJJQTEwX1BJTk1VWF9TSEFSRURfM1ZfSU9fR1JQX0FERFIgKyAweDE4 CisjZGVmaW5lIEFSUklBMTBfUElOTVVYX1NIQVJFRF9JT19RMV84X0FERFIJQVJSSUExMF9QSU5N VVhfU0hBUkVEXzNWX0lPX0dSUF9BRERSICsgMHgxYworI2RlZmluZSBBUlJJQTEwX1BJTk1VWF9T SEFSRURfSU9fUTFfOV9BRERSCUFSUklBMTBfUElOTVVYX1NIQVJFRF8zVl9JT19HUlBfQUREUiAr IDB4MjAKKyNkZWZpbmUgQVJSSUExMF9QSU5NVVhfU0hBUkVEX0lPX1ExXzEwX0FERFIJQVJSSUEx MF9QSU5NVVhfU0hBUkVEXzNWX0lPX0dSUF9BRERSICsgMHgyNAorI2RlZmluZSBBUlJJQTEwX1BJ Tk1VWF9TSEFSRURfSU9fUTFfMTFfQUREUglBUlJJQTEwX1BJTk1VWF9TSEFSRURfM1ZfSU9fR1JQ X0FERFIgKyAweDI4CisjZGVmaW5lIEFSUklBMTBfUElOTVVYX1NIQVJFRF9JT19RMV8xMl9BRERS CUFSUklBMTBfUElOTVVYX1NIQVJFRF8zVl9JT19HUlBfQUREUiArIDB4MmMKKyNkZWZpbmUgQVJS SUExMF9QSU5NVVhfU0hBUkVEX0lPX1EyXzFfQUREUglBUlJJQTEwX1BJTk1VWF9TSEFSRURfM1Zf SU9fR1JQX0FERFIgKyAweDMwCisjZGVmaW5lIEFSUklBMTBfUElOTVVYX1NIQVJFRF9JT19RMl8y X0FERFIJQVJSSUExMF9QSU5NVVhfU0hBUkVEXzNWX0lPX0dSUF9BRERSICsgMHgzNAorI2RlZmlu ZSBBUlJJQTEwX1BJTk1VWF9TSEFSRURfSU9fUTJfM19BRERSCUFSUklBMTBfUElOTVVYX1NIQVJF RF8zVl9JT19HUlBfQUREUiArIDB4MzgKKyNkZWZpbmUgQVJSSUExMF9QSU5NVVhfU0hBUkVEX0lP X1EyXzRfQUREUglBUlJJQTEwX1BJTk1VWF9TSEFSRURfM1ZfSU9fR1JQX0FERFIgKyAweDNjCisj ZGVmaW5lIEFSUklBMTBfUElOTVVYX1NIQVJFRF9JT19RMl81X0FERFIJQVJSSUExMF9QSU5NVVhf U0hBUkVEXzNWX0lPX0dSUF9BRERSICsgMHg0MAorI2RlZmluZSBBUlJJQTEwX1BJTk1VWF9TSEFS RURfSU9fUTJfNl9BRERSCUFSUklBMTBfUElOTVVYX1NIQVJFRF8zVl9JT19HUlBfQUREUiArIDB4 NDQKKyNkZWZpbmUgQVJSSUExMF9QSU5NVVhfU0hBUkVEX0lPX1EyXzdfQUREUglBUlJJQTEwX1BJ Tk1VWF9TSEFSRURfM1ZfSU9fR1JQX0FERFIgKyAweDQ4CisjZGVmaW5lIEFSUklBMTBfUElOTVVY X1NIQVJFRF9JT19RMl84X0FERFIJQVJSSUExMF9QSU5NVVhfU0hBUkVEXzNWX0lPX0dSUF9BRERS ICsgMHg0YworI2RlZmluZSBBUlJJQTEwX1BJTk1VWF9TSEFSRURfSU9fUTJfOV9BRERSCUFSUklB MTBfUElOTVVYX1NIQVJFRF8zVl9JT19HUlBfQUREUiArIDB4NTAKKyNkZWZpbmUgQVJSSUExMF9Q SU5NVVhfU0hBUkVEX0lPX1EyXzEwX0FERFIJQVJSSUExMF9QSU5NVVhfU0hBUkVEXzNWX0lPX0dS UF9BRERSICsgMHg1NAorI2RlZmluZSBBUlJJQTEwX1BJTk1VWF9TSEFSRURfSU9fUTJfMTFfQURE UglBUlJJQTEwX1BJTk1VWF9TSEFSRURfM1ZfSU9fR1JQX0FERFIgKyAweDU4CisjZGVmaW5lIEFS UklBMTBfUElOTVVYX1NIQVJFRF9JT19RMl8xMl9BRERSCUFSUklBMTBfUElOTVVYX1NIQVJFRF8z Vl9JT19HUlBfQUREUiArIDB4NWMKKyNkZWZpbmUgQVJSSUExMF9QSU5NVVhfU0hBUkVEX0lPX1Ez XzFfQUREUglBUlJJQTEwX1BJTk1VWF9TSEFSRURfM1ZfSU9fR1JQX0FERFIgKyAweDYwCisjZGVm aW5lIEFSUklBMTBfUElOTVVYX1NIQVJFRF9JT19RM18yX0FERFIJQVJSSUExMF9QSU5NVVhfU0hB UkVEXzNWX0lPX0dSUF9BRERSICsgMHg2NAorI2RlZmluZSBBUlJJQTEwX1BJTk1VWF9TSEFSRURf SU9fUTNfM19BRERSCUFSUklBMTBfUElOTVVYX1NIQVJFRF8zVl9JT19HUlBfQUREUiArIDB4NjgK KyNkZWZpbmUgQVJSSUExMF9QSU5NVVhfU0hBUkVEX0lPX1EzXzRfQUREUglBUlJJQTEwX1BJTk1V WF9TSEFSRURfM1ZfSU9fR1JQX0FERFIgKyAweDZjCisjZGVmaW5lIEFSUklBMTBfUElOTVVYX1NI QVJFRF9JT19RM181X0FERFIJQVJSSUExMF9QSU5NVVhfU0hBUkVEXzNWX0lPX0dSUF9BRERSICsg MHg3MAorI2RlZmluZSBBUlJJQTEwX1BJTk1VWF9TSEFSRURfSU9fUTNfNl9BRERSCUFSUklBMTBf UElOTVVYX1NIQVJFRF8zVl9JT19HUlBfQUREUiArIDB4NzQKKyNkZWZpbmUgQVJSSUExMF9QSU5N VVhfU0hBUkVEX0lPX1EzXzdfQUREUglBUlJJQTEwX1BJTk1VWF9TSEFSRURfM1ZfSU9fR1JQX0FE RFIgKyAweDc4CisjZGVmaW5lIEFSUklBMTBfUElOTVVYX1NIQVJFRF9JT19RM184X0FERFIJQVJS SUExMF9QSU5NVVhfU0hBUkVEXzNWX0lPX0dSUF9BRERSICsgMHg3YworI2RlZmluZSBBUlJJQTEw X1BJTk1VWF9TSEFSRURfSU9fUTNfOV9BRERSCUFSUklBMTBfUElOTVVYX1NIQVJFRF8zVl9JT19H UlBfQUREUiArIDB4ODAKKyNkZWZpbmUgQVJSSUExMF9QSU5NVVhfU0hBUkVEX0lPX1EzXzEwX0FE RFIJQVJSSUExMF9QSU5NVVhfU0hBUkVEXzNWX0lPX0dSUF9BRERSICsgMHg4NAorI2RlZmluZSBB UlJJQTEwX1BJTk1VWF9TSEFSRURfSU9fUTNfMTFfQUREUglBUlJJQTEwX1BJTk1VWF9TSEFSRURf M1ZfSU9fR1JQX0FERFIgKyAweDg4CisjZGVmaW5lIEFSUklBMTBfUElOTVVYX1NIQVJFRF9JT19R M18xMl9BRERSCUFSUklBMTBfUElOTVVYX1NIQVJFRF8zVl9JT19HUlBfQUREUiArIDB4OGMKKyNk ZWZpbmUgQVJSSUExMF9QSU5NVVhfU0hBUkVEX0lPX1E0XzFfQUREUglBUlJJQTEwX1BJTk1VWF9T SEFSRURfM1ZfSU9fR1JQX0FERFIgKyAweDkwCisjZGVmaW5lIEFSUklBMTBfUElOTVVYX1NIQVJF RF9JT19RNF8yX0FERFIJQVJSSUExMF9QSU5NVVhfU0hBUkVEXzNWX0lPX0dSUF9BRERSICsgMHg5 NAorI2RlZmluZSBBUlJJQTEwX1BJTk1VWF9TSEFSRURfSU9fUTRfM19BRERSCUFSUklBMTBfUElO TVVYX1NIQVJFRF8zVl9JT19HUlBfQUREUiArIDB4OTgKKyNkZWZpbmUgQVJSSUExMF9QSU5NVVhf U0hBUkVEX0lPX1E0XzRfQUREUglBUlJJQTEwX1BJTk1VWF9TSEFSRURfM1ZfSU9fR1JQX0FERFIg KyAweDljCisjZGVmaW5lIEFSUklBMTBfUElOTVVYX1NIQVJFRF9JT19RNF81X0FERFIJQVJSSUEx MF9QSU5NVVhfU0hBUkVEXzNWX0lPX0dSUF9BRERSICsgMHhhMAorI2RlZmluZSBBUlJJQTEwX1BJ Tk1VWF9TSEFSRURfSU9fUTRfNl9BRERSCUFSUklBMTBfUElOTVVYX1NIQVJFRF8zVl9JT19HUlBf QUREUiArIDB4YTQKKyNkZWZpbmUgQVJSSUExMF9QSU5NVVhfU0hBUkVEX0lPX1E0XzdfQUREUglB UlJJQTEwX1BJTk1VWF9TSEFSRURfM1ZfSU9fR1JQX0FERFIgKyAweGE4CisjZGVmaW5lIEFSUklB MTBfUElOTVVYX1NIQVJFRF9JT19RNF84X0FERFIJQVJSSUExMF9QSU5NVVhfU0hBUkVEXzNWX0lP X0dSUF9BRERSICsgMHhhYworI2RlZmluZSBBUlJJQTEwX1BJTk1VWF9TSEFSRURfSU9fUTRfOV9B RERSCUFSUklBMTBfUElOTVVYX1NIQVJFRF8zVl9JT19HUlBfQUREUiArIDB4YjAKKyNkZWZpbmUg QVJSSUExMF9QSU5NVVhfU0hBUkVEX0lPX1E0XzEwX0FERFIJQVJSSUExMF9QSU5NVVhfU0hBUkVE XzNWX0lPX0dSUF9BRERSICsgMHhiNAorI2RlZmluZSBBUlJJQTEwX1BJTk1VWF9TSEFSRURfSU9f UTRfMTFfQUREUglBUlJJQTEwX1BJTk1VWF9TSEFSRURfM1ZfSU9fR1JQX0FERFIgKyAweGI4Cisj ZGVmaW5lIEFSUklBMTBfUElOTVVYX1NIQVJFRF9JT19RNF8xMl9BRERSCUFSUklBMTBfUElOTVVY X1NIQVJFRF8zVl9JT19HUlBfQUREUiArIDB4YmMKKworI2RlZmluZSBBUlJJQTEwX1BJTk1VWF9T SEFSRURfSU9fUTFfSTJDCQkwCisjZGVmaW5lIEFSUklBMTBfUElOTVVYX1NIQVJFRF9JT19RMV9F TUFDCTEKKyNkZWZpbmUgQVJSSUExMF9QSU5NVVhfU0hBUkVEX0lPX1ExX1NQSVMJMgorI2RlZmlu ZSBBUlJJQTEwX1BJTk1VWF9TSEFSRURfSU9fUTFfU1BJTQkzCisjZGVmaW5lIEFSUklBMTBfUElO TVVYX1NIQVJFRF9JT19RMV9TRE1NQwk0CisjZGVmaW5lIEFSUklBMTBfUElOTVVYX1NIQVJFRF9J T19RMV9VU0IJCTgKKyNkZWZpbmUgQVJSSUExMF9QSU5NVVhfU0hBUkVEX0lPX1ExX1FTUEkJMTIK KyNkZWZpbmUgQVJSSUExMF9QSU5NVVhfU0hBUkVEX0lPX1ExX1VBUlQJMTMKKyNkZWZpbmUgQVJS SUExMF9QSU5NVVhfU0hBUkVEX0lPX1ExX05BTkQJMTQKKyNkZWZpbmUgQVJSSUExMF9QSU5NVVhf U0hBUkVEX0lPX1ExX0dQSU8JMTUKKworI2RlZmluZSBBUlJJQTEwX1BJTk1VWF9TSEFSRURfSU9f UTJfSTJDCQkwCisjZGVmaW5lIEFSUklBMTBfUElOTVVYX1NIQVJFRF9JT19RMl9TUElTCTIKKyNk ZWZpbmUgQVJSSUExMF9QSU5NVVhfU0hBUkVEX0lPX1EyX1NQSU0JMworI2RlZmluZSBBUlJJQTEw X1BJTk1VWF9TSEFSRURfSU9fUTJfRU1BQwk0CisjZGVmaW5lIEFSUklBMTBfUElOTVVYX1NIQVJF RF9JT19RMl9VU0IJCTgKKyNkZWZpbmUgQVJSSUExMF9QSU5NVVhfU0hBUkVEX0lPX1EyX1VBUlQJ MTMKKyNkZWZpbmUgQVJSSUExMF9QSU5NVVhfU0hBUkVEX0lPX1EyX05BTkQJMTQKKyNkZWZpbmUg QVJSSUExMF9QSU5NVVhfU0hBUkVEX0lPX1EyX0dQSU8JMTUKKworI2RlZmluZSBBUlJJQTEwX1BJ Tk1VWF9TSEFSRURfSU9fUTNfSTJDCQkwCisjZGVmaW5lIEFSUklBMTBfUElOTVVYX1NIQVJFRF9J T19RM19FTUFDMAkxCisjZGVmaW5lIEFSUklBMTBfUElOTVVYX1NIQVJFRF9JT19RM19TUElTCTIK KyNkZWZpbmUgQVJSSUExMF9QSU5NVVhfU0hBUkVEX0lPX1EzX1NQSU0JMworI2RlZmluZSBBUlJJ QTEwX1BJTk1VWF9TSEFSRURfSU9fUTNfRU1BQzEJOAorI2RlZmluZSBBUlJJQTEwX1BJTk1VWF9T SEFSRURfSU9fUTNfVUFSVAkxMworI2RlZmluZSBBUlJJQTEwX1BJTk1VWF9TSEFSRURfSU9fUTNf TkFORAkxNAorI2RlZmluZSBBUlJJQTEwX1BJTk1VWF9TSEFSRURfSU9fUTNfR1BJTwkxNQorCisj ZGVmaW5lIEFSUklBMTBfUElOTVVYX1NIQVJFRF9JT19RNF9JMkMJCTAKKyNkZWZpbmUgQVJSSUEx MF9QSU5NVVhfU0hBUkVEX0lPX1E0X0VNQUMwCTEKKyNkZWZpbmUgQVJSSUExMF9QSU5NVVhfU0hB UkVEX0lPX1E0X1NQSVMJMgorI2RlZmluZSBBUlJJQTEwX1BJTk1VWF9TSEFSRURfSU9fUTRfU1BJ TQkzCisjZGVmaW5lIEFSUklBMTBfUElOTVVYX1NIQVJFRF9JT19RNF9TRE1NQwk0CisjZGVmaW5l IEFSUklBMTBfUElOTVVYX1NIQVJFRF9JT19RNF9FTUFDMQk4CisjZGVmaW5lIEFSUklBMTBfUElO TVVYX1NIQVJFRF9JT19RNF9RU1BJCTEyCisjZGVmaW5lIEFSUklBMTBfUElOTVVYX1NIQVJFRF9J T19RNF9VQVJUCTEzCisjZGVmaW5lIEFSUklBMTBfUElOTVVYX1NIQVJFRF9JT19RNF9OQU5ECTE0 CisjZGVmaW5lIEFSUklBMTBfUElOTVVYX1NIQVJFRF9JT19RNF9HUElPCTE1CisKKyNkZWZpbmUg QVJSSUExMF9QSU5NVVhfREVESUNBVEVEX0lPXzFfQUREUglBUlJJQTEwX1BJTk1VWF9ERURJQ0FU RURfSU9fR1JQX0FERFIgKyAweDAwCisjZGVmaW5lIEFSUklBMTBfUElOTVVYX0RFRElDQVRFRF9J T18yX0FERFIJQVJSSUExMF9QSU5NVVhfREVESUNBVEVEX0lPX0dSUF9BRERSICsgMHgwNAorI2Rl ZmluZSBBUlJJQTEwX1BJTk1VWF9ERURJQ0FURURfSU9fM19BRERSCUFSUklBMTBfUElOTVVYX0RF RElDQVRFRF9JT19HUlBfQUREUiArIDB4MDgKKyNkZWZpbmUgQVJSSUExMF9QSU5NVVhfREVESUNB VEVEX0lPXzRfQUREUglBUlJJQTEwX1BJTk1VWF9ERURJQ0FURURfSU9fR1JQX0FERFIgKyAweDBj CisjZGVmaW5lIEFSUklBMTBfUElOTVVYX0RFRElDQVRFRF9JT181X0FERFIJQVJSSUExMF9QSU5N VVhfREVESUNBVEVEX0lPX0dSUF9BRERSICsgMHgxMAorI2RlZmluZSBBUlJJQTEwX1BJTk1VWF9E RURJQ0FURURfSU9fNl9BRERSCUFSUklBMTBfUElOTVVYX0RFRElDQVRFRF9JT19HUlBfQUREUiAr IDB4MTQKKyNkZWZpbmUgQVJSSUExMF9QSU5NVVhfREVESUNBVEVEX0lPXzdfQUREUglBUlJJQTEw X1BJTk1VWF9ERURJQ0FURURfSU9fR1JQX0FERFIgKyAweDE4CisjZGVmaW5lIEFSUklBMTBfUElO TVVYX0RFRElDQVRFRF9JT184X0FERFIJQVJSSUExMF9QSU5NVVhfREVESUNBVEVEX0lPX0dSUF9B RERSICsgMHgxYworI2RlZmluZSBBUlJJQTEwX1BJTk1VWF9ERURJQ0FURURfSU9fOV9BRERSCUFS UklBMTBfUElOTVVYX0RFRElDQVRFRF9JT19HUlBfQUREUiArIDB4MjAKKyNkZWZpbmUgQVJSSUEx MF9QSU5NVVhfREVESUNBVEVEX0lPXzEwX0FERFIJQVJSSUExMF9QSU5NVVhfREVESUNBVEVEX0lP X0dSUF9BRERSICsgMHgyNAorI2RlZmluZSBBUlJJQTEwX1BJTk1VWF9ERURJQ0FURURfSU9fMTFf QUREUglBUlJJQTEwX1BJTk1VWF9ERURJQ0FURURfSU9fR1JQX0FERFIgKyAweDI4CisjZGVmaW5l IEFSUklBMTBfUElOTVVYX0RFRElDQVRFRF9JT18xMl9BRERSCUFSUklBMTBfUElOTVVYX0RFRElD QVRFRF9JT19HUlBfQUREUiArIDB4MmMKKyNkZWZpbmUgQVJSSUExMF9QSU5NVVhfREVESUNBVEVE X0lPXzEzX0FERFIJQVJSSUExMF9QSU5NVVhfREVESUNBVEVEX0lPX0dSUF9BRERSICsgMHgzMAor I2RlZmluZSBBUlJJQTEwX1BJTk1VWF9ERURJQ0FURURfSU9fMTRfQUREUglBUlJJQTEwX1BJTk1V WF9ERURJQ0FURURfSU9fR1JQX0FERFIgKyAweDM0CisjZGVmaW5lIEFSUklBMTBfUElOTVVYX0RF RElDQVRFRF9JT18xNV9BRERSCUFSUklBMTBfUElOTVVYX0RFRElDQVRFRF9JT19HUlBfQUREUiAr IDB4MzgKKyNkZWZpbmUgQVJSSUExMF9QSU5NVVhfREVESUNBVEVEX0lPXzE2X0FERFIJQVJSSUEx MF9QSU5NVVhfREVESUNBVEVEX0lPX0dSUF9BRERSICsgMHgzYworI2RlZmluZSBBUlJJQTEwX1BJ Tk1VWF9ERURJQ0FURURfSU9fMTdfQUREUglBUlJJQTEwX1BJTk1VWF9ERURJQ0FURURfSU9fR1JQ X0FERFIgKyAweDQwCisKKyNkZWZpbmUgQVJSSUExMF9QSU5DRkdfREVESUNBVEVEX0lPX0JBTktf QUREUglBUlJJQTEwX1BJTk1VWF9DRkdfREVESUNBVEVEX0lPX0dSUF9BRERSICsgMHgwMAorI2Rl ZmluZSBBUlJJQTEwX1BJTkNGR19ERURJQ0FURURfSU9fMV9BRERSCUFSUklBMTBfUElOTVVYX0NG R19ERURJQ0FURURfSU9fR1JQX0FERFIgKyAweDA0CisjZGVmaW5lIEFSUklBMTBfUElOQ0ZHX0RF RElDQVRFRF9JT18yX0FERFIJQVJSSUExMF9QSU5NVVhfQ0ZHX0RFRElDQVRFRF9JT19HUlBfQURE UiArIDB4MDgKKyNkZWZpbmUgQVJSSUExMF9QSU5DRkdfREVESUNBVEVEX0lPXzNfQUREUglBUlJJ QTEwX1BJTk1VWF9DRkdfREVESUNBVEVEX0lPX0dSUF9BRERSICsgMHgwYworI2RlZmluZSBBUlJJ QTEwX1BJTkNGR19ERURJQ0FURURfSU9fNF9BRERSCUFSUklBMTBfUElOTVVYX0NGR19ERURJQ0FU RURfSU9fR1JQX0FERFIgKyAweDEwCisjZGVmaW5lIEFSUklBMTBfUElOQ0ZHX0RFRElDQVRFRF9J T181X0FERFIJQVJSSUExMF9QSU5NVVhfQ0ZHX0RFRElDQVRFRF9JT19HUlBfQUREUiArIDB4MTQK KyNkZWZpbmUgQVJSSUExMF9QSU5DRkdfREVESUNBVEVEX0lPXzZfQUREUglBUlJJQTEwX1BJTk1V WF9DRkdfREVESUNBVEVEX0lPX0dSUF9BRERSICsgMHgxOAorI2RlZmluZSBBUlJJQTEwX1BJTkNG R19ERURJQ0FURURfSU9fN19BRERSCUFSUklBMTBfUElOTVVYX0NGR19ERURJQ0FURURfSU9fR1JQ X0FERFIgKyAweDFjCisjZGVmaW5lIEFSUklBMTBfUElOQ0ZHX0RFRElDQVRFRF9JT184X0FERFIJ QVJSSUExMF9QSU5NVVhfQ0ZHX0RFRElDQVRFRF9JT19HUlBfQUREUiArIDB4MjAKKyNkZWZpbmUg QVJSSUExMF9QSU5DRkdfREVESUNBVEVEX0lPXzlfQUREUglBUlJJQTEwX1BJTk1VWF9DRkdfREVE SUNBVEVEX0lPX0dSUF9BRERSICsgMHgyNAorI2RlZmluZSBBUlJJQTEwX1BJTkNGR19ERURJQ0FU RURfSU9fMTBfQUREUglBUlJJQTEwX1BJTk1VWF9DRkdfREVESUNBVEVEX0lPX0dSUF9BRERSICsg MHgyOAorI2RlZmluZSBBUlJJQTEwX1BJTkNGR19ERURJQ0FURURfSU9fMTFfQUREUglBUlJJQTEw X1BJTk1VWF9DRkdfREVESUNBVEVEX0lPX0dSUF9BRERSICsgMHgyYworI2RlZmluZSBBUlJJQTEw X1BJTkNGR19ERURJQ0FURURfSU9fMTJfQUREUglBUlJJQTEwX1BJTk1VWF9DRkdfREVESUNBVEVE X0lPX0dSUF9BRERSICsgMHgzMAorI2RlZmluZSBBUlJJQTEwX1BJTkNGR19ERURJQ0FURURfSU9f MTNfQUREUglBUlJJQTEwX1BJTk1VWF9DRkdfREVESUNBVEVEX0lPX0dSUF9BRERSICsgMHgzNAor I2RlZmluZSBBUlJJQTEwX1BJTkNGR19ERURJQ0FURURfSU9fMTRfQUREUglBUlJJQTEwX1BJTk1V WF9DRkdfREVESUNBVEVEX0lPX0dSUF9BRERSICsgMHgzOAorI2RlZmluZSBBUlJJQTEwX1BJTkNG R19ERURJQ0FURURfSU9fMTVfQUREUglBUlJJQTEwX1BJTk1VWF9DRkdfREVESUNBVEVEX0lPX0dS UF9BRERSICsgMHgzYworI2RlZmluZSBBUlJJQTEwX1BJTkNGR19ERURJQ0FURURfSU9fMTZfQURE UglBUlJJQTEwX1BJTk1VWF9DRkdfREVESUNBVEVEX0lPX0dSUF9BRERSICsgMHg0MAorI2RlZmlu ZSBBUlJJQTEwX1BJTkNGR19ERURJQ0FURURfSU9fMTdfQUREUglBUlJJQTEwX1BJTk1VWF9DRkdf REVESUNBVEVEX0lPX0dSUF9BRERSICsgMHg0NAorCitlbnVtIGFycmlhMTBfcGlubXV4X2lvX2Fk ZHIgeworCWFycmlhMTBfcGlubXV4X3NoYXJlZF9pb19xMV8xLAorCWFycmlhMTBfcGlubXV4X3No YXJlZF9pb19xMV8yLAorCWFycmlhMTBfcGlubXV4X3NoYXJlZF9pb19xMV8zLAorCWFycmlhMTBf cGlubXV4X3NoYXJlZF9pb19xMV80LAorCWFycmlhMTBfcGlubXV4X3NoYXJlZF9pb19xMV81LAor CWFycmlhMTBfcGlubXV4X3NoYXJlZF9pb19xMV82LAorCWFycmlhMTBfcGlubXV4X3NoYXJlZF9p b19xMV83LAorCWFycmlhMTBfcGlubXV4X3NoYXJlZF9pb19xMV84LAorCWFycmlhMTBfcGlubXV4 X3NoYXJlZF9pb19xMV85LAorCWFycmlhMTBfcGlubXV4X3NoYXJlZF9pb19xMV8xMCwKKwlhcnJp YTEwX3Bpbm11eF9zaGFyZWRfaW9fcTFfMTEsCisJYXJyaWExMF9waW5tdXhfc2hhcmVkX2lvX3Ex XzEyLAorCWFycmlhMTBfcGlubXV4X3NoYXJlZF9pb19xMl8xLAorCWFycmlhMTBfcGlubXV4X3No YXJlZF9pb19xMl8yLAorCWFycmlhMTBfcGlubXV4X3NoYXJlZF9pb19xMl8zLAorCWFycmlhMTBf cGlubXV4X3NoYXJlZF9pb19xMl80LAorCWFycmlhMTBfcGlubXV4X3NoYXJlZF9pb19xMl81LAor CWFycmlhMTBfcGlubXV4X3NoYXJlZF9pb19xMl82LAorCWFycmlhMTBfcGlubXV4X3NoYXJlZF9p b19xMl83LAorCWFycmlhMTBfcGlubXV4X3NoYXJlZF9pb19xMl84LAorCWFycmlhMTBfcGlubXV4 X3NoYXJlZF9pb19xMl85LAorCWFycmlhMTBfcGlubXV4X3NoYXJlZF9pb19xMl8xMCwKKwlhcnJp YTEwX3Bpbm11eF9zaGFyZWRfaW9fcTJfMTEsCisJYXJyaWExMF9waW5tdXhfc2hhcmVkX2lvX3Ey XzEyLAorCWFycmlhMTBfcGlubXV4X3NoYXJlZF9pb19xM18xLAorCWFycmlhMTBfcGlubXV4X3No YXJlZF9pb19xM18yLAorCWFycmlhMTBfcGlubXV4X3NoYXJlZF9pb19xM18zLAorCWFycmlhMTBf cGlubXV4X3NoYXJlZF9pb19xM180LAorCWFycmlhMTBfcGlubXV4X3NoYXJlZF9pb19xM181LAor CWFycmlhMTBfcGlubXV4X3NoYXJlZF9pb19xM182LAorCWFycmlhMTBfcGlubXV4X3NoYXJlZF9p b19xM183LAorCWFycmlhMTBfcGlubXV4X3NoYXJlZF9pb19xM184LAorCWFycmlhMTBfcGlubXV4 X3NoYXJlZF9pb19xM185LAorCWFycmlhMTBfcGlubXV4X3NoYXJlZF9pb19xM18xMCwKKwlhcnJp YTEwX3Bpbm11eF9zaGFyZWRfaW9fcTNfMTEsCisJYXJyaWExMF9waW5tdXhfc2hhcmVkX2lvX3Ez XzEyLAorCWFycmlhMTBfcGlubXV4X3NoYXJlZF9pb19xNF8xLAorCWFycmlhMTBfcGlubXV4X3No YXJlZF9pb19xNF8yLAorCWFycmlhMTBfcGlubXV4X3NoYXJlZF9pb19xNF8zLAorCWFycmlhMTBf cGlubXV4X3NoYXJlZF9pb19xNF80LAorCWFycmlhMTBfcGlubXV4X3NoYXJlZF9pb19xNF81LAor CWFycmlhMTBfcGlubXV4X3NoYXJlZF9pb19xNF82LAorCWFycmlhMTBfcGlubXV4X3NoYXJlZF9p b19xNF83LAorCWFycmlhMTBfcGlubXV4X3NoYXJlZF9pb19xNF84LAorCWFycmlhMTBfcGlubXV4 X3NoYXJlZF9pb19xNF85LAorCWFycmlhMTBfcGlubXV4X3NoYXJlZF9pb19xNF8xMCwKKwlhcnJp YTEwX3Bpbm11eF9zaGFyZWRfaW9fcTRfMTEsCisJYXJyaWExMF9waW5tdXhfc2hhcmVkX2lvX3E0 XzEyLAorCWFycmlhMTBfcGlubXV4X2RlZGljYXRlZF9pb18xLAorCWFycmlhMTBfcGlubXV4X2Rl ZGljYXRlZF9pb18yLAorCWFycmlhMTBfcGlubXV4X2RlZGljYXRlZF9pb18zLAorCWFycmlhMTBf cGlubXV4X2RlZGljYXRlZF9pb180LAorCWFycmlhMTBfcGlubXV4X2RlZGljYXRlZF9pb181LAor CWFycmlhMTBfcGlubXV4X2RlZGljYXRlZF9pb182LAorCWFycmlhMTBfcGlubXV4X2RlZGljYXRl ZF9pb183LAorCWFycmlhMTBfcGlubXV4X2RlZGljYXRlZF9pb184LAorCWFycmlhMTBfcGlubXV4 X2RlZGljYXRlZF9pb185LAorCWFycmlhMTBfcGlubXV4X2RlZGljYXRlZF9pb18xMCwKKwlhcnJp YTEwX3Bpbm11eF9kZWRpY2F0ZWRfaW9fMTEsCisJYXJyaWExMF9waW5tdXhfZGVkaWNhdGVkX2lv XzEyLAorCWFycmlhMTBfcGlubXV4X2RlZGljYXRlZF9pb18xMywKKwlhcnJpYTEwX3Bpbm11eF9k ZWRpY2F0ZWRfaW9fMTQsCisJYXJyaWExMF9waW5tdXhfZGVkaWNhdGVkX2lvXzE1LAorCWFycmlh MTBfcGlubXV4X2RlZGljYXRlZF9pb18xNiwKKwlhcnJpYTEwX3Bpbm11eF9kZWRpY2F0ZWRfaW9f MTcsCisJYXJyaWExMF9waW5jZmdfZGVkaWNhdGVkX2lvX2JhbmssCisJYXJyaWExMF9waW5jZmdf ZGVkaWNhdGVkX2lvXzEsCisJYXJyaWExMF9waW5jZmdfZGVkaWNhdGVkX2lvXzIsCisJYXJyaWEx MF9waW5jZmdfZGVkaWNhdGVkX2lvXzMsCisJYXJyaWExMF9waW5jZmdfZGVkaWNhdGVkX2lvXzQs CisJYXJyaWExMF9waW5jZmdfZGVkaWNhdGVkX2lvXzUsCisJYXJyaWExMF9waW5jZmdfZGVkaWNh dGVkX2lvXzYsCisJYXJyaWExMF9waW5jZmdfZGVkaWNhdGVkX2lvXzcsCisJYXJyaWExMF9waW5j ZmdfZGVkaWNhdGVkX2lvXzgsCisJYXJyaWExMF9waW5jZmdfZGVkaWNhdGVkX2lvXzksCisJYXJy aWExMF9waW5jZmdfZGVkaWNhdGVkX2lvXzEwLAorCWFycmlhMTBfcGluY2ZnX2RlZGljYXRlZF9p b18xMSwKKwlhcnJpYTEwX3BpbmNmZ19kZWRpY2F0ZWRfaW9fMTIsCisJYXJyaWExMF9waW5jZmdf ZGVkaWNhdGVkX2lvXzEzLAorCWFycmlhMTBfcGluY2ZnX2RlZGljYXRlZF9pb18xNCwKKwlhcnJp YTEwX3BpbmNmZ19kZWRpY2F0ZWRfaW9fMTUsCisJYXJyaWExMF9waW5jZmdfZGVkaWNhdGVkX2lv XzE2LAorCWFycmlhMTBfcGluY2ZnX2RlZGljYXRlZF9pb18xNywKKwlhcnJpYTEwX3Bpbm11eF9y Z21paTBfdXNlZnBnYSwKKwlhcnJpYTEwX3Bpbm11eF9yZ21paTFfdXNlZnBnYSwKKwlhcnJpYTEw X3Bpbm11eF9yZ21paTJfdXNlZnBnYSwKKwlhcnJpYTEwX3Bpbm11eF9pMmMwX3VzZWZwZ2EsCisJ YXJyaWExMF9waW5tdXhfaTJjMV91c2VmcGdhLAorCWFycmlhMTBfcGlubXV4X2kyY2VtYWMwX3Vz ZWZwZ2EsCisJYXJyaWExMF9waW5tdXhfaTJjZW1hYzFfdXNlZnBnYSwKKwlhcnJpYTEwX3Bpbm11 eF9pMmNlbWFjMl91c2VmcGdhLAorCWFycmlhMTBfcGlubXV4X25hbmRfdXNlZnBnYSwKKwlhcnJp YTEwX3Bpbm11eF9xc3BpX3VzZWZwZ2EsCisJYXJyaWExMF9waW5tdXhfc2RtbWNfdXNlZnBnYSwK KwlhcnJpYTEwX3Bpbm11eF9zcGltMF91c2VmcGdhLAorCWFycmlhMTBfcGlubXV4X3NwaW0xX3Vz ZWZwZ2EsCisJYXJyaWExMF9waW5tdXhfc3BpczBfdXNlZnBnYSwKKwlhcnJpYTEwX3Bpbm11eF9z cGlzMV91c2VmcGdhLAorCWFycmlhMTBfcGlubXV4X3VhcnQwX3VzZWZwZ2EsCisJYXJyaWExMF9w aW5tdXhfdWFydDFfdXNlZnBnYSwKKwlhcnJpYTEwX3Bpbm11eF9tYXgKK307CisjZW5kaWYKZGlm ZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtc29jZnBnYS9pbmNsdWRlL21hY2gvYXJyaWExMC1yZWdz LmggYi9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EvaW5jbHVkZS9tYWNoL2FycmlhMTAtcmVncy5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTU2OTU3NGUxNTdkCi0tLSAv ZGV2L251bGwKKysrIGIvYXJjaC9hcm0vbWFjaC1zb2NmcGdhL2luY2x1ZGUvbWFjaC9hcnJpYTEw LXJlZ3MuaApAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBbHRl cmEgQ29ycG9yYXRpb24gPHd3dy5hbHRlcmEuY29tPgorICoKKyAqIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOglHUEwtMi4wKworICovCisKKyNpZm5kZWYgX0FSUklBMTBfSEFSRFdBUkVfSF8KKyNk ZWZpbmUgX0FSUklBMTBfSEFSRFdBUkVfSF8KKworI2RlZmluZSBBUlJJQTEwX0VNQUMwX0FERFIJ CQkJKDB4ZmY4MDAwMDApCisjZGVmaW5lIEFSUklBMTBfRU1BQzFfQUREUgkJCQkoMHhmZjgwMjAw MCkKKyNkZWZpbmUgQVJSSUExMF9FTUFDMl9BRERSCQkJCSgweGZmODA0MDAwKQorI2RlZmluZSBB UlJJQTEwX1NETU1DX0FERFIJCQkJKDB4ZmY4MDgwMDApCisjZGVmaW5lIEFSUklBMTBfUVNQSVJF R1NfQUREUgkJCQkoMHhmZjgwOTAwMCkKKyNkZWZpbmUgQVJSSUExMF9FQ0NfT0NSQU1fQUREUgkJ CQkoMHhmZjhjMzAwMCkKKyNkZWZpbmUgQVJSSUExMF9RU1BJREFUQV9BRERSCQkJCSgweGZmYTAw MDAwKQorI2RlZmluZSBBUlJJQTEwX1VBUlQwX0FERFIJCQkJKDB4ZmZjMDIwMDApCisjZGVmaW5l IEFSUklBMTBfVUFSVDFfQUREUgkJCQkoMHhmZmMwMjEwMCkKKyNkZWZpbmUgQVJSSUExMF9JMkMw X0FERFIJCQkJKDB4ZmZjMDIyMDApCisjZGVmaW5lIEFSUklBMTBfSTJDMV9BRERSCQkJCSgweGZm YzAyMzAwKQorI2RlZmluZSBBUlJJQTEwX0dQSU8wX0FERFIJCQkJKDB4ZmZjMDI5MDApCisjZGVm aW5lIEFSUklBMTBfR1BJTzFfQUREUgkJCQkoMHhmZmMwMmEwMCkKKyNkZWZpbmUgQVJSSUExMF9H UElPMl9BRERSCQkJCSgweGZmYzAyYjAwKQorI2RlZmluZSBBUlJJQTEwX0hNQ19NTVJfSU80OF9B RERSCQkJKDB4ZmZjZmEwMDApCisjZGVmaW5lIEFSUklBMTBfU0RSX0FERFIJCQkJKDB4ZmZjZmIw MDApCisjZGVmaW5lIEFSUklBMTBfRlBHQU1HUkRBVEFfQUREUgkJCSgweGZmY2ZlNDAwKQorI2Rl ZmluZSBBUlJJQTEwX09TQzFUSU1FUjBfQUREUgkJCQkoMHhmZmQwMDAwMCkKKyNkZWZpbmUgQVJS SUExMF9MNFdEMF9BRERSCQkJCSgweGZmZDAwMjAwKQorI2RlZmluZSBBUlJJQTEwX0ZQR0FNR1JS RUdTX0FERFIJCQkoMHhmZmQwMzAwMCkKKyNkZWZpbmUgQVJSSUExMF9DTEtNR1JfQUREUgkJCQko MHhmZmQwNDAwMCkKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1JfQUREUgkJCQkoMHhmZmQwNTAwMCkK KyNkZWZpbmUgQVJSSUExMF9TWVNNR1JfQUREUgkJCQkoMHhmZmQwNjAwMCkKKyNkZWZpbmUgQVJS SUExMF9QSU5NVVhfU0hBUkVEXzNWX0lPX0dSUF9BRERSCQkoMHhmZmQwNzAwMCkKKyNkZWZpbmUg QVJSSUExMF9QSU5NVVhfREVESUNBVEVEX0lPX0dSUF9BRERSCQkoMHhmZmQwNzIwMCkKKyNkZWZp bmUgQVJSSUExMF9QSU5NVVhfQ0ZHX0RFRElDQVRFRF9JT19HUlBfQUREUgkoMHhmZmQwNzMwMCkK KyNkZWZpbmUgQVJSSUExMF9QSU5NVVhfRlBHQV9JTlRFUkZBQ0VfQUREUgkJKDB4ZmZkMDc0MDAp CisjZGVmaW5lIEFSUklBMTBfTk9DX0w0X1BSSVZfTDRfUFJJVl9GSUxURVJfQUREUgkJKDB4ZmZk MTEwMDApCisjZGVmaW5lIEFSUklBMTBfU0RSX1NDSEVEVUxFUl9BRERSCQkJKDB4ZmZkMTI0MDAp CisjZGVmaW5lIEFSUklBMTBfTk9DX0w0X1BFUl9MNF9QRVJfU0NSX0FERFIJCSgweGZmZDEzMDAw KQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19PQ1JBTV9PQ1JBTV9TQ1JfQUREUgkJKDB4ZmZkMTMy MDApCisjZGVmaW5lIEFSUklBMTBfU0RSX0ZXX01QVV9GUEdBX0FERFIJCQkoMHhmZmQxMzMwMCkK KyNkZWZpbmUgQVJSSUExMF9OT0NfRldfRERSX0wzX0REUl9TQ1JfQUREUgkJKDB4ZmZkMTM0MDAp CisjZGVmaW5lIEFSUklBMTBfTk9DX0ZXX1NPQzJGUEdBX1NPQzJGUEdBX1NDUl9BRERSCSgweGZm ZDEzNTAwKQorI2RlZmluZSBBUlJJQTEwX0RNQU5PTlNFQ1VSRV9BRERSCQkJKDB4ZmZkYTAwMDAp CisjZGVmaW5lIEFSUklBMTBfRE1BU0VDVVJFX0FERFIJCQkJKDB4ZmZkYTEwMDApCisjZGVmaW5l IEFSUklBMTBfTVBVU0NVX0FERFIJCQkJKDB4ZmZmZmMwMDApCisjZGVmaW5lIEFSUklBMTBfTVBV TDJfQUREUgkJCQkoMHhmZmZmZjAwMCkKKworLyogTDIgY2FjaGUgY29udHJvbGxlciAqLworI2Rl ZmluZSBBUlJJQTEwX01QVUwyX0FEUkZMVFJfU1RBUlQJCQkoQVJSSUExMF9NUFVMMl9BRERSICsg MHhDMDApCisKKy8qIE5PQyBMNCBQcml2ICovCisjZGVmaW5lIEFSUklBMTBfTk9DX0w0X1BSSVZf TDRfUFJJVl9MNF9QUklWCQkoQVJSSUExMF9OT0NfTDRfUFJJVl9MNF9QUklWX0ZJTFRFUl9BRERS ICsgMHgwMCkKKyNkZWZpbmUgQVJSSUExMF9OT0NfTDRfUFJJVl9MNF9QUklWX0w0X1BSSVZfU0VU CQkoQVJSSUExMF9OT0NfTDRfUFJJVl9MNF9QUklWX0ZJTFRFUl9BRERSICsgMHgwNCkKKyNkZWZp bmUgQVJSSUExMF9OT0NfTDRfUFJJVl9MNF9QUklWX0w0X1BSSVZfQ0xSCQkoQVJSSUExMF9OT0Nf TDRfUFJJVl9MNF9QUklWX0ZJTFRFUl9BRERSICsgMHgwOCkKKworLyogTk9DIEw0IFBlcm1pc3Np b25zICovCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZXX0w0X1BFUl9TQ1JfTkFORF9SRUcJCShBUlJJ QTEwX05PQ19MNF9QRVJfTDRfUEVSX1NDUl9BRERSICsgMHgwMCkKKyNkZWZpbmUgQVJSSUExMF9O T0NfRldfTDRfUEVSX1NDUl9OQU5EX0RBVEEJCShBUlJJQTEwX05PQ19MNF9QRVJfTDRfUEVSX1ND Ul9BRERSICsgMHgwNCkKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9RU1BJX0RB VEEJCShBUlJJQTEwX05PQ19MNF9QRVJfTDRfUEVSX1NDUl9BRERSICsgMHgwOCkKKyNkZWZpbmUg QVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9VU0IwX1JFRwkJKEFSUklBMTBfTk9DX0w0X1BFUl9M NF9QRVJfU0NSX0FERFIgKyAweDBjKQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19MNF9QRVJfU0NS X1VTQjFfUkVHCQkoQVJSSUExMF9OT0NfTDRfUEVSX0w0X1BFUl9TQ1JfQUREUiArIDB4MTApCisj ZGVmaW5lIEFSUklBMTBfTk9DX0ZXX0w0X1BFUl9TQ1JfRE1BX05PTlNFQ1VSRQkJKEFSUklBMTBf Tk9DX0w0X1BFUl9MNF9QRVJfU0NSX0FERFIgKyAweDE0KQorI2RlZmluZSBBUlJJQTEwX05PQ19G V19MNF9QRVJfU0NSX0RNQV9TRUNVUkUJCShBUlJJQTEwX05PQ19MNF9QRVJfTDRfUEVSX1NDUl9B RERSICsgMHgxOCkKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9TUElNMAkJCShB UlJJQTEwX05PQ19MNF9QRVJfTDRfUEVSX1NDUl9BRERSICsgMHgxYykKKyNkZWZpbmUgQVJSSUEx MF9OT0NfRldfTDRfUEVSX1NDUl9TUElNMQkJCShBUlJJQTEwX05PQ19MNF9QRVJfTDRfUEVSX1ND Ul9BRERSICsgMHgyMCkKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9TUElTMAkJ CShBUlJJQTEwX05PQ19MNF9QRVJfTDRfUEVSX1NDUl9BRERSICsgMHgyNCkKKyNkZWZpbmUgQVJS SUExMF9OT0NfRldfTDRfUEVSX1NDUl9TUElTMQkJCShBUlJJQTEwX05PQ19MNF9QRVJfTDRfUEVS X1NDUl9BRERSICsgMHgyOCkKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9FTUFD MAkJCShBUlJJQTEwX05PQ19MNF9QRVJfTDRfUEVSX1NDUl9BRERSICsgMHgyYykKKyNkZWZpbmUg QVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9FTUFDMQkJCShBUlJJQTEwX05PQ19MNF9QRVJfTDRf UEVSX1NDUl9BRERSICsgMHgzMCkKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9F TUFDMgkJCShBUlJJQTEwX05PQ19MNF9QRVJfTDRfUEVSX1NDUl9BRERSICsgMHgzNCkKKyNkZWZp bmUgQVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9FTUFDMwkJCShBUlJJQTEwX05PQ19MNF9QRVJf TDRfUEVSX1NDUl9BRERSICsgMHgzOCkKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfTDRfUEVSX1ND Ul9RU1BJCQkJKEFSUklBMTBfTk9DX0w0X1BFUl9MNF9QRVJfU0NSX0FERFIgKyAweDNjKQorI2Rl ZmluZSBBUlJJQTEwX05PQ19GV19MNF9QRVJfU0NSX1NETU1DCQkJKEFSUklBMTBfTk9DX0w0X1BF Ul9MNF9QRVJfU0NSX0FERFIgKyAweDQwKQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19MNF9QRVJf U0NSX0dQSU8wCQkJKEFSUklBMTBfTk9DX0w0X1BFUl9MNF9QRVJfU0NSX0FERFIgKyAweDQ0KQor I2RlZmluZSBBUlJJQTEwX05PQ19GV19MNF9QRVJfU0NSX0dQSU8xCQkJKEFSUklBMTBfTk9DX0w0 X1BFUl9MNF9QRVJfU0NSX0FERFIgKyAweDQ4KQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19MNF9Q RVJfU0NSX0dQSU8yCQkJKEFSUklBMTBfTk9DX0w0X1BFUl9MNF9QRVJfU0NSX0FERFIgKyAweDRj KQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19MNF9QRVJfU0NSX0kyQzAJCQkoQVJSSUExMF9OT0Nf TDRfUEVSX0w0X1BFUl9TQ1JfQUREUiArIDB4NTApCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZXX0w0 X1BFUl9TQ1JfSTJDMQkJCShBUlJJQTEwX05PQ19MNF9QRVJfTDRfUEVSX1NDUl9BRERSICsgMHg1 NCkKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfTDRfUEVSX1NDUl9JMkMyCQkJKEFSUklBMTBfTk9D X0w0X1BFUl9MNF9QRVJfU0NSX0FERFIgKyAweDU4KQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19M NF9QRVJfU0NSX0kyQzMJCQkoQVJSSUExMF9OT0NfTDRfUEVSX0w0X1BFUl9TQ1JfQUREUiArIDB4 NWMpCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZXX0w0X1BFUl9TQ1JfSTJDNAkJCShBUlJJQTEwX05P Q19MNF9QRVJfTDRfUEVSX1NDUl9BRERSICsgMHg2MCkKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldf TDRfUEVSX1NDUl9TUFRJTUVSMAkJKEFSUklBMTBfTk9DX0w0X1BFUl9MNF9QRVJfU0NSX0FERFIg KyAweDY0KQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19MNF9QRVJfU0NSX1NQVElNRVIxCQkoQVJS SUExMF9OT0NfTDRfUEVSX0w0X1BFUl9TQ1JfQUREUiArIDB4NjgpCisjZGVmaW5lIEFSUklBMTBf Tk9DX0ZXX0w0X1BFUl9TQ1JfVUFSVDAJCQkoQVJSSUExMF9OT0NfTDRfUEVSX0w0X1BFUl9TQ1Jf QUREUiArIDB4NmMpCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZXX0w0X1BFUl9TQ1JfVUFSVDEJCQko QVJSSUExMF9OT0NfTDRfUEVSX0w0X1BFUl9TQ1JfQUREUiArIDB4NzApCisKKyNkZWZpbmUgQVJS SUExMF9OT0NfRldfT0NSQU1fT0NSQU1fU0NSX0VOCQkoQVJSSUExMF9OT0NfRldfT0NSQU1fT0NS QU1fU0NSX0FERFIgKyAweDAwKQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19PQ1JBTV9PQ1JBTV9T Q1JfRU5fU0VUCQkoQVJSSUExMF9OT0NfRldfT0NSQU1fT0NSQU1fU0NSX0FERFIgKyAweDA0KQor I2RlZmluZSBBUlJJQTEwX05PQ19GV19PQ1JBTV9PQ1JBTV9TQ1JfRU5fQ0xSCQkoQVJSSUExMF9O T0NfRldfT0NSQU1fT0NSQU1fU0NSX0FERFIgKyAweDA4KQorI2RlZmluZSBBUlJJQTEwX05PQ19G V19PQ1JBTV9PQ1JBTV9TQ1JfUkVHSU9OMAkJKEFSUklBMTBfTk9DX0ZXX09DUkFNX09DUkFNX1ND Ul9BRERSICsgMHgwYykKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfT0NSQU1fT0NSQU1fU0NSX1JF R0lPTjEJCShBUlJJQTEwX05PQ19GV19PQ1JBTV9PQ1JBTV9TQ1JfQUREUiArIDB4MTApCisjZGVm aW5lIEFSUklBMTBfTk9DX0ZXX09DUkFNX09DUkFNX1NDUl9SRUdJT04yCQkoQVJSSUExMF9OT0Nf RldfT0NSQU1fT0NSQU1fU0NSX0FERFIgKyAweDE0KQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19P Q1JBTV9PQ1JBTV9TQ1JfUkVHSU9OMwkJKEFSUklBMTBfTk9DX0ZXX09DUkFNX09DUkFNX1NDUl9B RERSICsgMHgxOCkKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfT0NSQU1fT0NSQU1fU0NSX1JFR0lP TjQJCShBUlJJQTEwX05PQ19GV19PQ1JBTV9PQ1JBTV9TQ1JfQUREUiArIDB4MWMpCisjZGVmaW5l IEFSUklBMTBfTk9DX0ZXX09DUkFNX09DUkFNX1NDUl9SRUdJT041CQkoQVJSSUExMF9OT0NfRldf T0NSQU1fT0NSQU1fU0NSX0FERFIgKyAweDIwKQorCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZXX0RE Ul9MM19ERFJfU0NSX0VOCQkoQVJSSUExMF9OT0NfRldfRERSX0wzX0REUl9TQ1JfQUREUiArIDB4 MDApCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZXX0REUl9MM19ERFJfU0NSX0VOX1NFVAkJKEFSUklB MTBfTk9DX0ZXX0REUl9MM19ERFJfU0NSX0FERFIgKyAweDA0KQorI2RlZmluZSBBUlJJQTEwX05P Q19GV19ERFJfTDNfRERSX1NDUl9FTl9DTFIJCShBUlJJQTEwX05PQ19GV19ERFJfTDNfRERSX1ND Ul9BRERSICsgMHgwOCkKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfRERSX0wzX0REUl9TQ1JfUkVH SU9OMAkJKEFSUklBMTBfTk9DX0ZXX0REUl9MM19ERFJfU0NSX0FERFIgKyAweDBjKQorI2RlZmlu ZSBBUlJJQTEwX05PQ19GV19ERFJfTDNfRERSX1NDUl9SRUdJT04xCQkoQVJSSUExMF9OT0NfRldf RERSX0wzX0REUl9TQ1JfQUREUiArIDB4MTApCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZXX0REUl9M M19ERFJfU0NSX1JFR0lPTjIJCShBUlJJQTEwX05PQ19GV19ERFJfTDNfRERSX1NDUl9BRERSICsg MHgxNCkKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfRERSX0wzX0REUl9TQ1JfUkVHSU9OMwkJKEFS UklBMTBfTk9DX0ZXX0REUl9MM19ERFJfU0NSX0FERFIgKyAweDE4KQorI2RlZmluZSBBUlJJQTEw X05PQ19GV19ERFJfTDNfRERSX1NDUl9SRUdJT040CQkoQVJSSUExMF9OT0NfRldfRERSX0wzX0RE Ul9TQ1JfQUREUiArIDB4MWMpCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZXX0REUl9MM19ERFJfU0NS X1JFR0lPTjUJCShBUlJJQTEwX05PQ19GV19ERFJfTDNfRERSX1NDUl9BRERSICsgMHgyMCkKKyNk ZWZpbmUgQVJSSUExMF9OT0NfRldfRERSX0wzX0REUl9TQ1JfUkVHSU9ONgkJKEFSUklBMTBfTk9D X0ZXX0REUl9MM19ERFJfU0NSX0FERFIgKyAweDI0KQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19E RFJfTDNfRERSX1NDUl9SRUdJT043CQkoQVJSSUExMF9OT0NfRldfRERSX0wzX0REUl9TQ1JfQURE UiArIDB4MjgpCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZXX0REUl9MM19ERFJfU0NSX0dMT0JBTAkJ KEFSUklBMTBfTk9DX0ZXX0REUl9MM19ERFJfU0NSX0FERFIgKyAweDJjKQorCisjZGVmaW5lIEFS UklBMTBfTk9DX0ZXX1NPQzJGUEdBX1NPQzJGUEdBX1NDUl9MV1NPQzJGUEdBCShBUlJJQTEwX05P Q19GV19TT0MyRlBHQV9TT0MyRlBHQV9TQ1JfQUREUiArIDB4MDApCisjZGVmaW5lIEFSUklBMTBf Tk9DX0ZXX1NPQzJGUEdBX1NPQzJGUEdBX1NDUl9TT0MyRlBHQQkoQVJSSUExMF9OT0NfRldfU09D MkZQR0FfU09DMkZQR0FfU0NSX0FERFIgKyAweDA0KQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2Fy Y2gvYXJtL21hY2gtc29jZnBnYS9pbmNsdWRlL21hY2gvYXJyaWExMC1yZXNldC1tYW5hZ2VyLmgg Yi9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EvaW5jbHVkZS9tYWNoL2FycmlhMTAtcmVzZXQtbWFuYWdl ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZWJkMjA0MzQyNjNh Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vbWFjaC1zb2NmcGdhL2luY2x1ZGUvbWFjaC9h cnJpYTEwLXJlc2V0LW1hbmFnZXIuaApAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdo dCAoQykgMjAxNC0yMDE2IEFsdGVyYSBDb3Jwb3JhdGlvbiA8d3d3LmFsdGVyYS5jb20+CisgKgor ICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6CUdQTC0yLjAKKyAqLworCisjaWZuZGVmCV9BUlJJ QTEwX1JFU0VUX01BTkFHRVJfSF8KKyNkZWZpbmUJX0FSUklBMTBfUkVTRVRfTUFOQUdFUl9IXwor CisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX1NUQVRVUwkJMHgwCisjZGVmaW5lIEFSUklBMTBfUlNU TUdSX1JBTVNUQVQJCTB4NAorI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9NSVNDU1RBVAkJMHg4Cisj ZGVmaW5lIEFSUklBMTBfUlNUTUdSX0NUUkwJCTB4YworI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9I RFNLRU4JCTB4MTAKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1JfSERTS1JFUQkJMHgxNAorI2RlZmlu ZSBBUlJJQTEwX1JTVE1HUl9IRFNLQUNLCQkweDE4CisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX0NP VU5UUwkJMHgxYworI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9NUFVNT0RSU1QJMHgyMAorI2RlZmlu ZSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUCTB4MjQKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1Jf UEVSMU1PRFJTVAkweDI4CisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX0JSR01PRFJTVAkweDJjCisj ZGVmaW5lIEFSUklBMTBfUlNUTUdSX1NZU01PRFJTVAkweDMwCisjZGVmaW5lIEFSUklBMTBfUlNU TUdSX0NPTERNT0RSU1QJMHgzNAorI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9OUlNUTU9EUlNUCTB4 MzgKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1JfREJHTU9EUlNUCTB4M2MKKyNkZWZpbmUgQVJSSUEx MF9SU1RNR1JfTVBVV0FSTU1BU0sJMHg0MAorI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9QRVIwV0FS TU1BU0sJMHg0NAorI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9QRVIxV0FSTU1BU0sJMHg0OAorI2Rl ZmluZSBBUlJJQTEwX1JTVE1HUl9CUkdXQVJNTUFTSwkweDRjCisjZGVmaW5lIEFSUklBMTBfUlNU TUdSX1NZU1dBUk1NQVNLCTB4NTAKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1JfTlJTVFdBUk1NQVNL CTB4NTQKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1JfTDNXQVJNTUFTSwkweDU4CisjZGVmaW5lIEFS UklBMTBfUlNUTUdSX1RTVFNUQQkJMHg1YworI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9UU1RTQ1JB VENICTB4NjAKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1JfSERTS1RJTUVPVVQJMHg2NAorI2RlZmlu ZSBBUlJJQTEwX1JTVE1HUl9ITUNJTlRSCQkweDY4CisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX0hN Q0lOVFJFTgkweDZjCisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX0hNQ0lOVFJFTlMJMHg3MAorI2Rl ZmluZSBBUlJJQTEwX1JTVE1HUl9ITUNJTlRSRU5SCTB4NzQKKyNkZWZpbmUgQVJSSUExMF9SU1RN R1JfSE1DR1BPVVQJCTB4NzgKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1JfSE1DR1BJTgkJMHg3Ywor CisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX0NUTF9TV1dBUk1SU1RSRVEJCUJJVCgxKQorI2RlZmlu ZSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX0VNQUMwCQlCSVQoMCkKKyNkZWZpbmUgQVJSSUEx MF9SU1RNR1JfUEVSME1PRFJTVF9FTUFDMQkJQklUKDEpCisjZGVmaW5lIEFSUklBMTBfUlNUTUdS X1BFUjBNT0RSU1RfRU1BQzIJCUJJVCgyKQorI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9E UlNUX1VTQjAJCUJJVCgzKQorI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX1VTQjEJ CUJJVCg0KQorI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX05BTkQJCUJJVCg1KQor I2RlZmluZSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX1FTUEkJCUJJVCg2KQorI2RlZmluZSBB UlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX1NETU1DCQlCSVQoNykKKyNkZWZpbmUgQVJSSUExMF9S U1RNR1JfUEVSME1PRFJTVF9FTUFDME9DUAlCSVQoOCkKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1Jf UEVSME1PRFJTVF9FTUFDMU9DUAlCSVQoOSkKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1JfUEVSME1P RFJTVF9FTUFDMk9DUAlCSVQoMTApCisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1Rf VVNCME9DUAlCSVQoMTEpCisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfVVNCMU9D UAlCSVQoMTIpCisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfTkFORE9DUAlCSVQo MTMpCisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfUVNQSU9DUAlCSVQoMTQpCisj ZGVmaW5lIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfU0RNTUNPQ1AJQklUKDE1KQorI2RlZmlu ZSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX0RNQQkJQklUKDE2KQorI2RlZmluZSBBUlJJQTEw X1JTVE1HUl9QRVIwTU9EUlNUX1NQSU0wCQlCSVQoMTcpCisjZGVmaW5lIEFSUklBMTBfUlNUTUdS X1BFUjBNT0RSU1RfU1BJTTEJCUJJVCgxOCkKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1JfUEVSME1P RFJTVF9TUElTMAkJQklUKDE5KQorI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX1NQ SVMxCQlCSVQoMjApCisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1RfRE1BT0NQCUJJ VCgyMSkKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9FTUFDUFRQCUJJVCgyMikK KyNkZWZpbmUgQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9ETUFJRjAJQklUKDI0KQorI2RlZmlu ZSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX0RNQUlGMQlCSVQoMjUpCisjZGVmaW5lIEFSUklB MTBfUlNUTUdSX1BFUjBNT0RSU1RfRE1BSUYyCUJJVCgyNikKKyNkZWZpbmUgQVJSSUExMF9SU1RN R1JfUEVSME1PRFJTVF9ETUFJRjMJQklUKDI3KQorI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9QRVIw TU9EUlNUX0RNQUlGNAlCSVQoMjgpCisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX1BFUjBNT0RSU1Rf RE1BSUY1CUJJVCgyOSkKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1JfUEVSME1PRFJTVF9ETUFJRjYJ QklUKDMwKQorI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX0RNQUlGNwlCSVQoMzEp CisKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1JfUEVSMU1PRFJTVF9XQVRDSERPRzAJQklUKDApCisj ZGVmaW5lIEFSUklBMTBfUlNUTUdSX1BFUjFNT0RSU1RfV0FUQ0hET0cxCUJJVCgxKQorI2RlZmlu ZSBBUlJJQTEwX1JTVE1HUl9QRVIxTU9EUlNUX0w0U1lTVElNRVIwCUJJVCgyKQorI2RlZmluZSBB UlJJQTEwX1JTVE1HUl9QRVIxTU9EUlNUX0w0U1lTVElNRVIxCUJJVCgzKQorI2RlZmluZSBBUlJJ QTEwX1JTVE1HUl9QRVIxTU9EUlNUX1NQVElNRVIwCUJJVCg0KQorI2RlZmluZSBBUlJJQTEwX1JT VE1HUl9QRVIxTU9EUlNUX1NQVElNRVIxCUJJVCg1KQorI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9Q RVIxTU9EUlNUX0kyQzAJCUJJVCg4KQorI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9QRVIxTU9EUlNU X0kyQzEJCUJJVCg5KQorI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9QRVIxTU9EUlNUX0kyQzIJCUJJ VCgxMCkKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1JfUEVSMU1PRFJTVF9JMkMzCQlCSVQoMTEpCisj ZGVmaW5lIEFSUklBMTBfUlNUTUdSX1BFUjFNT0RSU1RfSTJDNAkJQklUKDEyKQorI2RlZmluZSBB UlJJQTEwX1JTVE1HUl9QRVIxTU9EUlNUX1VBUlQwCQlCSVQoMTYpCisjZGVmaW5lIEFSUklBMTBf UlNUTUdSX1BFUjFNT0RSU1RfVUFSVDEJCUJJVCgxNykKKyNkZWZpbmUgQVJSSUExMF9SU1RNR1Jf UEVSMU1PRFJTVF9HUElPMAkJQklUKDI0KQorI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9QRVIxTU9E UlNUX0dQSU8xCQlCSVQoMjUpCisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX1BFUjFNT0RSU1RfR1BJ TzIJCUJJVCgyNikKKworI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9CUkdNT0RSU1RfSFBTMkZQR0EJ QklUKDApCisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX0JSR01PRFJTVF9MV0hQUzJGUEdBCUJJVCgx KQorI2RlZmluZSBBUlJJQTEwX1JTVE1HUl9CUkdNT0RSU1RfRlBHQTJIUFMJQklUKDIpCisjZGVm aW5lIEFSUklBMTBfUlNUTUdSX0JSR01PRFJTVF9GMlNTRFJBTTAJQklUKDMpCisjZGVmaW5lIEFS UklBMTBfUlNUTUdSX0JSR01PRFJTVF9GMlNTRFJBTTEJQklUKDQpCisjZGVmaW5lIEFSUklBMTBf UlNUTUdSX0JSR01PRFJTVF9GMlNTRFJBTTIJQklUKDUpCisjZGVmaW5lIEFSUklBMTBfUlNUTUdS X0JSR01PRFJTVF9ERFJTQ0gJCUJJVCg2KQorCisjZGVmaW5lIEFSUklBMTBfUlNUTUdSX09DUF9N QVNLIChBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX0VNQUMwT0NQIHwJXAorCQkJCSBBUlJJQTEw X1JTVE1HUl9QRVIwTU9EUlNUX0VNQUMxT0NQIHwJXAorCQkJCSBBUlJJQTEwX1JTVE1HUl9QRVIw TU9EUlNUX0VNQUMyT0NQIHwJXAorCQkJCSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX05BTkRP Q1AgIHwJXAorCQkJCSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX1FTUElPQ1AgIHwJXAorCQkJ CSBBUlJJQTEwX1JTVE1HUl9QRVIwTU9EUlNUX1NETU1DT0NQKQorCit2b2lkIGFycmlhMTBfcmVz ZXRfcGVyaXBoZXJhbHModm9pZCk7Cit2b2lkIGFycmlhMTBfcmVzZXRfZGVhc3NlcnRfZGVkaWNh dGVkX3BlcmlwaGVyYWxzKHZvaWQpOwordm9pZCBhcnJpYTEwX3Jlc2V0X2RlYXNzZXJ0X3NoYXJl ZF9wZXJpcGhlcmFscyh2b2lkKTsKK3ZvaWQgYXJyaWExMF9yZXNldF9kZWFzc2VydF9mcGdhX3Bl cmlwaGVyYWxzKHZvaWQpOworCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1z b2NmcGdhL2luY2x1ZGUvbWFjaC9hcnJpYTEwLXNkcmFtLmggYi9hcmNoL2FybS9tYWNoLXNvY2Zw Z2EvaW5jbHVkZS9tYWNoL2FycmlhMTAtc2RyYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLjA3ZTRkZDAxMzA4OQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJt L21hY2gtc29jZnBnYS9pbmNsdWRlL21hY2gvYXJyaWExMC1zZHJhbS5oCkBAIC0wLDAgKzEsMzUz IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFsdGVyYSBDb3Jwb3JhdGlvbiA8d3d3LmFs dGVyYS5jb20+CisgKgorICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6CUdQTC0yLjAKKyAqLwor CisjaW5jbHVkZSA8bWFjaC9hcnJpYTEwLXN5c3RlbS1tYW5hZ2VyLmg+CisKKyNpZm5kZWYJX0FS UklBMTBfU0RSQU1fSF8KKyNkZWZpbmUJX0FSUklBMTBfU0RSQU1fSF8KKworI2RlZmluZSBBUlJJ QTEwX0VDQ19ITUNfT0NQX0lQX1JFVl9JRAkJCShBUlJJQTEwX1NEUl9BRERSICsgMHgwMCkKKyNk ZWZpbmUgQVJSSUExMF9FQ0NfSE1DX09DUF9ERFJJT0NUUkwJCQkoQVJSSUExMF9TRFJfQUREUiAr IDB4MDgpCisjZGVmaW5lIEFSUklBMTBfRUNDX0hNQ19PQ1BfRERSQ0FMU1RBVAkJCShBUlJJQTEw X1NEUl9BRERSICsgMHgwYykKKyNkZWZpbmUgQVJSSUExMF9FQ0NfSE1DX09DUF9NUFJfT0JFQVQx CQkJKEFSUklBMTBfU0RSX0FERFIgKyAweDEwKQorI2RlZmluZSBBUlJJQTEwX0VDQ19ITUNfT0NQ X01QUl8xQkVBVDEJCQkoQVJSSUExMF9TRFJfQUREUiArIDB4MTQpCisjZGVmaW5lIEFSUklBMTBf RUNDX0hNQ19PQ1BfTVBSXzJCRUFUMQkJCShBUlJJQTEwX1NEUl9BRERSICsgMHgxOCkKKyNkZWZp bmUgQVJSSUExMF9FQ0NfSE1DX09DUF9NUFJfM0JFQVQxCQkJKEFSUklBMTBfU0RSX0FERFIgKyAw eDFjKQorI2RlZmluZSBBUlJJQTEwX0VDQ19ITUNfT0NQX01QUl80QkVBVDEJCQkoQVJSSUExMF9T RFJfQUREUiArIDB4MjApCisjZGVmaW5lIEFSUklBMTBfRUNDX0hNQ19PQ1BfTVBSXzVCRUFUMQkJ CShBUlJJQTEwX1NEUl9BRERSICsgMHgyNCkKKyNkZWZpbmUgQVJSSUExMF9FQ0NfSE1DX09DUF9N UFJfNkJFQVQxCQkJKEFSUklBMTBfU0RSX0FERFIgKyAweDI4KQorI2RlZmluZSBBUlJJQTEwX0VD Q19ITUNfT0NQX01QUl83QkVBVDEJCQkoQVJSSUExMF9TRFJfQUREUiArIDB4MmMpCisjZGVmaW5l IEFSUklBMTBfRUNDX0hNQ19PQ1BfTVBSXzhCRUFUMQkJCShBUlJJQTEwX1NEUl9BRERSICsgMHgz MCkKKyNkZWZpbmUgQVJSSUExMF9FQ0NfSE1DX09DUF9NUFJfT0JFQVQyCQkJKEFSUklBMTBfU0RS X0FERFIgKyAweDM0KQorI2RlZmluZSBBUlJJQTEwX0VDQ19ITUNfT0NQX01QUl8xQkVBVDIJCQko QVJSSUExMF9TRFJfQUREUiArIDB4MzgpCisjZGVmaW5lIEFSUklBMTBfRUNDX0hNQ19PQ1BfTVBS XzJCRUFUMgkJCShBUlJJQTEwX1NEUl9BRERSICsgMHgzYykKKyNkZWZpbmUgQVJSSUExMF9FQ0Nf SE1DX09DUF9NUFJfM0JFQVQyCQkJKEFSUklBMTBfU0RSX0FERFIgKyAweDQwKQorI2RlZmluZSBB UlJJQTEwX0VDQ19ITUNfT0NQX01QUl80QkVBVDIJCQkoQVJSSUExMF9TRFJfQUREUiArIDB4NDQp CisjZGVmaW5lIEFSUklBMTBfRUNDX0hNQ19PQ1BfTVBSXzVCRUFUMgkJCShBUlJJQTEwX1NEUl9B RERSICsgMHg0OCkKKyNkZWZpbmUgQVJSSUExMF9FQ0NfSE1DX09DUF9NUFJfNkJFQVQyCQkJKEFS UklBMTBfU0RSX0FERFIgKyAweDRjKQorI2RlZmluZSBBUlJJQTEwX0VDQ19ITUNfT0NQX01QUl83 QkVBVDIJCQkoQVJSSUExMF9TRFJfQUREUiArIDB4NTApCisjZGVmaW5lIEFSUklBMTBfRUNDX0hN Q19PQ1BfTVBSXzhCRUFUMgkJCShBUlJJQTEwX1NEUl9BRERSICsgMHg1NCkKKyNkZWZpbmUgQVJS SUExMF9FQ0NfSE1DX09DUF9NUFJfQVVUT19QUkVDSEFSR0UJCShBUlJJQTEwX1NEUl9BRERSICsg MHg2MCkKKyNkZWZpbmUgQVJSSUExMF9FQ0NfSE1DX09DUF9NUFJfRUNDQ1RSTDEJCShBUlJJQTEw X1NEUl9BRERSICsgMHgxMDApCisjZGVmaW5lIEFSUklBMTBfRUNDX0hNQ19PQ1BfTVBSX0VDQ0NU UkwyCQkoQVJSSUExMF9TRFJfQUREUiArIDB4MTA0KQorI2RlZmluZSBBUlJJQTEwX0VDQ19ITUNf T0NQX01QUl9FUlJJTlRFTgkJKEFSUklBMTBfU0RSX0FERFIgKyAweDExMCkKKyNkZWZpbmUgQVJS SUExMF9FQ0NfSE1DX09DUF9NUFJfRVJSSU5URU5TCQkoQVJSSUExMF9TRFJfQUREUiArIDB4MTE0 KQorI2RlZmluZSBBUlJJQTEwX0VDQ19ITUNfT0NQX01QUl9FUlJJTlRFTlIJCShBUlJJQTEwX1NE Ul9BRERSICsgMHgxMTgpCisjZGVmaW5lIEFSUklBMTBfRUNDX0hNQ19PQ1BfTVBSX0lOVE1PREUJ CQkoQVJSSUExMF9TRFJfQUREUiArIDB4MTFjKQorI2RlZmluZSBBUlJJQTEwX0VDQ19ITUNfT0NQ X01QUl9JTlRTVEFUCQkJKEFSUklBMTBfU0RSX0FERFIgKyAweDEyMCkKKyNkZWZpbmUgQVJSSUEx MF9FQ0NfSE1DX09DUF9NUFJfRElBR0lOVFRFU1QJCShBUlJJQTEwX1NEUl9BRERSICsgMHgxMjQp CisjZGVmaW5lIEFSUklBMTBfRUNDX0hNQ19PQ1BfTVBSX01PRFNUQVQJCQkoQVJSSUExMF9TRFJf QUREUiArIDB4MTI4KQorI2RlZmluZSBBUlJJQTEwX0VDQ19ITUNfT0NQX01QUl9ERVJSQUREUkEJ CShBUlJJQTEwX1NEUl9BRERSICsgMHgxMmMpCisjZGVmaW5lIEFSUklBMTBfRUNDX0hNQ19PQ1Bf TVBSX1NFUlJBRERSQQkJKEFSUklBMTBfU0RSX0FERFIgKyAweDEzMCkKKyNkZWZpbmUgQVJSSUEx MF9FQ0NfSE1DX09DUF9NUFJfQVVUT1dCX0NPUlJBRERSCQkoQVJSSUExMF9TRFJfQUREUiArIDB4 MTM4KQorI2RlZmluZSBBUlJJQTEwX0VDQ19ITUNfT0NQX01QUl9TRVJSQ05UUkVHCQkoQVJSSUEx MF9TRFJfQUREUiArIDB4MTNjKQorI2RlZmluZSBBUlJJQTEwX0VDQ19ITUNfT0NQX01QUl9BVVRP V0JfRFJPUF9DTlRSRUcJKEFSUklBMTBfU0RSX0FERFIgKyAweDE0MCkKKyNkZWZpbmUgQVJSSUEx MF9FQ0NfSE1DX09DUF9NUFJfRUNDX1JFRzJXUkVDQ0RBVEFCVVMJKEFSUklBMTBfU0RSX0FERFIg KyAweDE0NCkKKyNkZWZpbmUgQVJSSUExMF9FQ0NfSE1DX09DUF9NUFJfRUNDX1JERUNDREFUQTJS RUdCVVMJKEFSUklBMTBfU0RSX0FERFIgKyAweDE0OCkKKyNkZWZpbmUgQVJSSUExMF9FQ0NfSE1D X09DUF9NUFJfRUNDX1JFRzJSREVDQ0RBVEFCVVMJKEFSUklBMTBfU0RSX0FERFIgKyAweDE0YykK KyNkZWZpbmUgQVJSSUExMF9FQ0NfSE1DX09DUF9NUFJfRUNDX0RJQUdPTgkJKEFSUklBMTBfU0RS X0FERFIgKyAweDE1MCkKKyNkZWZpbmUgQVJSSUExMF9FQ0NfSE1DX09DUF9NUFJfRUNDX0RFQ1NU QVQJCShBUlJJQTEwX1NEUl9BRERSICsgMHgxNTQpCisjZGVmaW5lIEFSUklBMTBfRUNDX0hNQ19P Q1BfTVBSX0VDQ19FUlJHRU5BRERSXzAJKEFSUklBMTBfU0RSX0FERFIgKyAweDE2MCkKKyNkZWZp bmUgQVJSSUExMF9FQ0NfSE1DX09DUF9NUFJfRUNDX0VSUkdFTkFERFJfMQkoQVJSSUExMF9TRFJf QUREUiArIDB4MTY0KQorI2RlZmluZSBBUlJJQTEwX0VDQ19ITUNfT0NQX01QUl9FQ0NfRVJSR0VO QUREUl8yCShBUlJJQTEwX1NEUl9BRERSICsgMHgxNjgpCisjZGVmaW5lIEFSUklBMTBfRUNDX0hN Q19PQ1BfTVBSX0VDQ19FUlJHRU5BRERSXzMJKEFSUklBMTBfU0RSX0FERFIgKyAweDE2YykKKyNk ZWZpbmUgQVJSSUExMF9FQ0NfSE1DX09DUF9NUFJfRUNDX1JFRzJSRERBVEFCVVNfQkVBVDAJKEFS UklBMTBfU0RSX0FERFIgKyAweDE3MCkKKyNkZWZpbmUgQVJSSUExMF9FQ0NfSE1DX09DUF9NUFJf RUNDX1JFRzJSRERBVEFCVVNfQkVBVDEJKEFSUklBMTBfU0RSX0FERFIgKyAweDE3NCkKKyNkZWZp bmUgQVJSSUExMF9FQ0NfSE1DX09DUF9NUFJfRUNDX1JFRzJSRERBVEFCVVNfQkVBVDIJKEFSUklB MTBfU0RSX0FERFIgKyAweDE3OCkKKyNkZWZpbmUgQVJSSUExMF9FQ0NfSE1DX09DUF9NUFJfRUND X1JFRzJSRERBVEFCVVNfQkVBVDMJKEFSUklBMTBfU0RSX0FERFIgKyAweDE3YykKKworI2RlZmlu ZSBBUlJJQTEwX05PQ19ERFJfVF9NQUlOX1NDSEVEVUxFUl9JRF9DT1JFSUQJCShBUlJJQTEwX1NE Ul9TQ0hFRFVMRVJfQUREUiArIDB4MDApCisjZGVmaW5lIEFSUklBMTBfTk9DX0REUl9UX01BSU5f U0NIRURVTEVSX0lEX1JFVklTSU9OSUQJCShBUlJJQTEwX1NEUl9TQ0hFRFVMRVJfQUREUiArIDB4 MDQpCisjZGVmaW5lIEFSUklBMTBfTk9DX0REUl9UX01BSU5fU0NIRURVTEVSX0REUkNPTkYJCShB UlJJQTEwX1NEUl9TQ0hFRFVMRVJfQUREUiArIDB4MDgpCisjZGVmaW5lIEFSUklBMTBfTk9DX0RE Ul9UX01BSU5fU0NIRURVTEVSX0REUlRJTUlORwkJKEFSUklBMTBfU0RSX1NDSEVEVUxFUl9BRERS ICsgMHgwYykKKyNkZWZpbmUgQVJSSUExMF9OT0NfRERSX1RfTUFJTl9TQ0hFRFVMRVJfRERSTU9E RQkJKEFSUklBMTBfU0RSX1NDSEVEVUxFUl9BRERSICsgMHgxMCkKKyNkZWZpbmUgQVJSSUExMF9O T0NfRERSX1RfTUFJTl9TQ0hFRFVMRVJfUkVBRExBVEVOQ1kJCShBUlJJQTEwX1NEUl9TQ0hFRFVM RVJfQUREUiArIDB4MTQpCisjZGVmaW5lIEFSUklBMTBfTk9DX0REUl9UX01BSU5fU0NIRURVTEVS X0FDVElWQVRFCQkoQVJSSUExMF9TRFJfU0NIRURVTEVSX0FERFIgKyAweDM4KQorI2RlZmluZSBB UlJJQTEwX05PQ19ERFJfVF9NQUlOX1NDSEVEVUxFUl9ERVZUT0RFVgkJKEFSUklBMTBfU0RSX1ND SEVEVUxFUl9BRERSICsgMHgzYykKKworI2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9EQkdD RkcwCQkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4MDApCisjZGVmaW5lIEFSUklBMTBf SU80OF9ITUNfTU1SX0RCR0NGRzEJCShBUlJJQTEwX0hNQ19NTVJfSU80OF9BRERSICsgMHgwNCkK KyNkZWZpbmUgQVJSSUExMF9JTzQ4X0hNQ19NTVJfREJHQ0ZHMgkJKEFSUklBMTBfSE1DX01NUl9J TzQ4X0FERFIgKyAweDA4KQorI2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9EQkdDRkczCQko QVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4MGMpCisjZGVmaW5lIEFSUklBMTBfSU80OF9I TUNfTU1SX0RCR0NGRzQJCShBUlJJQTEwX0hNQ19NTVJfSU80OF9BRERSICsgMHgxMCkKKyNkZWZp bmUgQVJSSUExMF9JTzQ4X0hNQ19NTVJfREJHQ0ZHNQkJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FE RFIgKyAweDE0KQorI2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9EQkdDRkc2CQkoQVJSSUEx MF9ITUNfTU1SX0lPNDhfQUREUiArIDB4MTgpCisjZGVmaW5lIEFSUklBMTBfSU80OF9ITUNfTU1S X1JFU0VSVkUwCQkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4MWMpCisjZGVmaW5lIEFS UklBMTBfSU80OF9ITUNfTU1SX1JFU0VSVkUxCQkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiAr IDB4MjApCisjZGVmaW5lIEFSUklBMTBfSU80OF9ITUNfTU1SX1JFU0VSVkUyCQkoQVJSSUExMF9I TUNfTU1SX0lPNDhfQUREUiArIDB4MjQpCisjZGVmaW5lIEFSUklBMTBfSU80OF9ITUNfTU1SX0NU UkxDRkcwCQkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4MjgpCisjZGVmaW5lIEFSUklB MTBfSU80OF9ITUNfTU1SX0NUUkxDRkcxCQkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4 MmMpCisjZGVmaW5lIEFSUklBMTBfSU80OF9ITUNfTU1SX0NUUkxDRkcyCQkoQVJSSUExMF9ITUNf TU1SX0lPNDhfQUREUiArIDB4MzApCisjZGVmaW5lIEFSUklBMTBfSU80OF9ITUNfTU1SX0NUUkxD RkczCQkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4MzQpCisjZGVmaW5lIEFSUklBMTBf SU80OF9ITUNfTU1SX0NUUkxDRkc0CQkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4Mzgp CisjZGVmaW5lIEFSUklBMTBfSU80OF9ITUNfTU1SX0NUUkxDRkc1CQkoQVJSSUExMF9ITUNfTU1S X0lPNDhfQUREUiArIDB4M2MpCisjZGVmaW5lIEFSUklBMTBfSU80OF9ITUNfTU1SX0NUUkxDRkc2 CQkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4NDApCisjZGVmaW5lIEFSUklBMTBfSU80 OF9ITUNfTU1SX0NUUkxDRkc3CQkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4NDQpCisj ZGVmaW5lIEFSUklBMTBfSU80OF9ITUNfTU1SX0NUUkxDRkc4CQkoQVJSSUExMF9ITUNfTU1SX0lP NDhfQUREUiArIDB4NDgpCisjZGVmaW5lIEFSUklBMTBfSU80OF9ITUNfTU1SX0NUUkxDRkc5CQko QVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4NGMpCisjZGVmaW5lIEFSUklBMTBfSU80OF9I TUNfTU1SX0RSQU1USU1JTkcwCShBUlJJQTEwX0hNQ19NTVJfSU80OF9BRERSICsgMHg1MCkKKyNk ZWZpbmUgQVJSSUExMF9JTzQ4X0hNQ19NTVJfRFJBTU9EVDAJCShBUlJJQTEwX0hNQ19NTVJfSU80 OF9BRERSICsgMHg1NCkKKyNkZWZpbmUgQVJSSUExMF9JTzQ4X0hNQ19NTVJfRFJBTU9EVDEJCShB UlJJQTEwX0hNQ19NTVJfSU80OF9BRERSICsgMHg1OCkKKyNkZWZpbmUgQVJSSUExMF9JTzQ4X0hN Q19NTVJfU0JDRkcwCQkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4NWMpCisjZGVmaW5l IEFSUklBMTBfSU80OF9ITUNfTU1SX1NCQ0ZHMQkJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FERFIg KyAweDYwKQorI2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9TQkNGRzIJCShBUlJJQTEwX0hN Q19NTVJfSU80OF9BRERSICsgMHg2NCkKKyNkZWZpbmUgQVJSSUExMF9JTzQ4X0hNQ19NTVJfU0JD RkczCQkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4NjgpCisjZGVmaW5lIEFSUklBMTBf SU80OF9ITUNfTU1SX1NCQ0ZHNAkJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FERFIgKyAweDZjKQor I2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9TQkNGRzUJCShBUlJJQTEwX0hNQ19NTVJfSU80 OF9BRERSICsgMHg3MCkKKyNkZWZpbmUgQVJSSUExMF9JTzQ4X0hNQ19NTVJfU0JDRkc2CQkoQVJS SUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4NzQpCisjZGVmaW5lIEFSUklBMTBfSU80OF9ITUNf TU1SX1NCQ0ZHNwkJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FERFIgKyAweDc4KQorI2RlZmluZSBB UlJJQTEwX0lPNDhfSE1DX01NUl9DQUxUSU1JTkcwCQkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQURE UiArIDB4N2MpCisjZGVmaW5lIEFSUklBMTBfSU80OF9ITUNfTU1SX0NBTFRJTUlORzEJCShBUlJJ QTEwX0hNQ19NTVJfSU80OF9BRERSICsgMHg4MCkKKyNkZWZpbmUgQVJSSUExMF9JTzQ4X0hNQ19N TVJfQ0FMVElNSU5HMgkJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FERFIgKyAweDg0KQorI2RlZmlu ZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9DQUxUSU1JTkczCQkoQVJSSUExMF9ITUNfTU1SX0lPNDhf QUREUiArIDB4ODgpCisjZGVmaW5lIEFSUklBMTBfSU80OF9ITUNfTU1SX0NBTFRJTUlORzQJCShB UlJJQTEwX0hNQ19NTVJfSU80OF9BRERSICsgMHg4YykKKyNkZWZpbmUgQVJSSUExMF9JTzQ4X0hN Q19NTVJfQ0FMVElNSU5HNQkJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FERFIgKyAweDkwKQorI2Rl ZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9DQUxUSU1JTkc2CQkoQVJSSUExMF9ITUNfTU1SX0lP NDhfQUREUiArIDB4OTQpCisjZGVmaW5lIEFSUklBMTBfSU80OF9ITUNfTU1SX0NBTFRJTUlORzcJ CShBUlJJQTEwX0hNQ19NTVJfSU80OF9BRERSICsgMHg5OCkKKyNkZWZpbmUgQVJSSUExMF9JTzQ4 X0hNQ19NTVJfQ0FMVElNSU5HOAkJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FERFIgKyAweDljKQor I2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9DQUxUSU1JTkc5CQkoQVJSSUExMF9ITUNfTU1S X0lPNDhfQUREUiArIDB4YTApCisjZGVmaW5lIEFSUklBMTBfSU80OF9ITUNfTU1SX0NBTFRJTUlO RzEwCShBUlJJQTEwX0hNQ19NTVJfSU80OF9BRERSICsgMHhhNCkKKyNkZWZpbmUgQVJSSUExMF9J TzQ4X0hNQ19NTVJfRFJBTUFERFJXCQkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4YTgp CisjZGVmaW5lIEFSUklBMTBfSU80OF9ITUNfTU1SX1NJREVCQU5EMAkJKEFSUklBMTBfSE1DX01N Ul9JTzQ4X0FERFIgKyAweGFjKQorI2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9TSURFQkFO RDEJCShBUlJJQTEwX0hNQ19NTVJfSU80OF9BRERSICsgMHhiMCkKKyNkZWZpbmUgQVJSSUExMF9J TzQ4X0hNQ19NTVJfU0lERUJBTkQyCQkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4YjQp CisjZGVmaW5lIEFSUklBMTBfSU80OF9ITUNfTU1SX1NJREVCQU5EMwkJKEFSUklBMTBfSE1DX01N Ul9JTzQ4X0FERFIgKyAweGI4KQorI2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9TSURFQkFO RDQJCShBUlJJQTEwX0hNQ19NTVJfSU80OF9BRERSICsgMHhiYykKKyNkZWZpbmUgQVJSSUExMF9J TzQ4X0hNQ19NTVJfU0lERUJBTkQ1CQkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4YzAp CisjZGVmaW5lIEFSUklBMTBfSU80OF9ITUNfTU1SX1NJREVCQU5ENgkJKEFSUklBMTBfSE1DX01N Ul9JTzQ4X0FERFIgKyAweGM0KQorI2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9TSURFQkFO RDcJCShBUlJJQTEwX0hNQ19NTVJfSU80OF9BRERSICsgMHhjOCkKKyNkZWZpbmUgQVJSSUExMF9J TzQ4X0hNQ19NTVJfU0lERUJBTkQ4CQkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4Y2Mp CisjZGVmaW5lIEFSUklBMTBfSU80OF9ITUNfTU1SX1NJREVCQU5EOQkJKEFSUklBMTBfSE1DX01N Ul9JTzQ4X0FERFIgKyAweGQwKQorI2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9TSURFQkFO RDEwCQkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4ZDQpCisjZGVmaW5lIEFSUklBMTBf SU80OF9ITUNfTU1SX1NJREVCQU5EMTEJCShBUlJJQTEwX0hNQ19NTVJfSU80OF9BRERSICsgMHhk OCkKKyNkZWZpbmUgQVJSSUExMF9JTzQ4X0hNQ19NTVJfU0lERUJBTkQxMgkJKEFSUklBMTBfSE1D X01NUl9JTzQ4X0FERFIgKyAweGRjKQorI2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9TSURF QkFOQjEzCQkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4ZTApCisjZGVmaW5lIEFSUklB MTBfSU80OF9ITUNfTU1SX1NJREVCQU5EMTQJCShBUlJJQTEwX0hNQ19NTVJfSU80OF9BRERSICsg MHhlNCkKKyNkZWZpbmUgQVJSSUExMF9JTzQ4X0hNQ19NTVJfU0lERUJBTkQxNQkJKEFSUklBMTBf SE1DX01NUl9JTzQ4X0FERFIgKyAweGU4KQorI2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9E UkFNU1RTCQkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4ZWMpCisjZGVmaW5lIEFSUklB MTBfSU80OF9ITUNfTU1SX0RCR0RPTkUJCShBUlJJQTEwX0hNQ19NTVJfSU80OF9BRERSICsgMHhm MCkKKyNkZWZpbmUgQVJSSUExMF9JTzQ4X0hNQ19NTVJfREJHU0lHTkFMUwkJKEFSUklBMTBfSE1D X01NUl9JTzQ4X0FERFIgKyAweGY0KQorI2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9EQkdS RVNFVAkJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FERFIgKyAweGY4KQorI2RlZmluZSBBUlJJQTEw X0lPNDhfSE1DX01NUl9EQkdNQVRDSAkJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FERFIgKyAweGZj KQorI2RlZmluZSBBUlJJQTEwX0lPNDhfSE1DX01NUl9DT1VOVEVSME1BU0sJKEFSUklBMTBfSE1D X01NUl9JTzQ4X0FERFIgKyAweDEwMCkKKyNkZWZpbmUgQVJSSUExMF9JTzQ4X0hNQ19NTVJfQ09V TlRFUjFNQVNLCShBUlJJQTEwX0hNQ19NTVJfSU80OF9BRERSICsgMHgxMDQpCisjZGVmaW5lIEFS UklBMTBfSU80OF9ITUNfTU1SX0NPVU5URVIwTUFUQ0gJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FE RFIgKyAweDEwOCkKKyNkZWZpbmUgQVJSSUExMF9JTzQ4X0hNQ19NTVJfQ09VTlRFUjFNQVRDSAko QVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4MTBjKQorI2RlZmluZSBBUlJJQTEwX0lPNDhf SE1DX01NUl9OSU9TUkVTRVJWRTAJKEFSUklBMTBfSE1DX01NUl9JTzQ4X0FERFIgKyAweDExMCkK KyNkZWZpbmUgQVJSSUExMF9JTzQ4X0hNQ19NTVJfTklPU1JFU0VSVkUxCShBUlJJQTEwX0hNQ19N TVJfSU80OF9BRERSICsgMHgxMTQpCisjZGVmaW5lIEFSUklBMTBfSU80OF9ITUNfTU1SX05JT1NS RVNFUlZFMgkoQVJSSUExMF9ITUNfTU1SX0lPNDhfQUREUiArIDB4MTE4KQorCit1bmlvbiBkcmFt YWRkcndfcmVnIHsKKwlzdHJ1Y3QgeworCQl1MzIgY2ZnX2NvbF9hZGRyX3dpZHRoOjU7CisJCXUz MiBjZmdfcm93X2FkZHJfd2lkdGg6NTsKKwkJdTMyIGNmZ19iYW5rX2FkZHJfd2lkdGg6NDsKKwkJ dTMyIGNmZ19iYW5rX2dyb3VwX2FkZHJfd2lkdGg6MjsKKwkJdTMyIGNmZ19jc19hZGRyX3dpZHRo OjM7CisJCXUzMiByZXNlcnZlZDoxMzsKKwl9OworCXUzMiB3b3JkOworfTsKKwordW5pb24gY3Ry bGNmZzBfcmVnIHsKKwlzdHJ1Y3QgeworCQl1MzIgY2ZnX21lbV90eXBlOjQ7CisJCXUzMiBjZmdf ZGltbV90eXBlOjM7CisJCXUzMiBjZmdfYWNfcG9zOjI7CisJCXUzMiBjZmdfY3RybF9idXJzdF9s ZW46NTsKKwkJdTMyIHJlc2VydmVkOjE4OyAgLyogT3RoZXIgZmllbGRzIHVudXNlZCAqLworCX07 CisJdTMyIHdvcmQ7Cit9OworCit1bmlvbiBjdHJsY2ZnMV9yZWcgeworCXN0cnVjdCB7CisJCXUz MiBjZmdfZGJjM19idXJzdF9sZW46NTsKKwkJdTMyIGNmZ19hZGRyX29yZGVyOjI7CisJCXUzMiBj ZmdfY3RybF9lbmFibGVfZWNjOjE7CisJCXUzMiByZXNlcnZlZDoyNDsgIC8qIE90aGVyIGZpZWxk cyB1bnVzZWQgKi8KKwl9OworCXUzMiB3b3JkOworfTsKKwordW5pb24gY2FsdGltaW5nMF9yZWcg eworCXN0cnVjdCB7CisJCXUzMiBjZmdfYWN0X3RvX3Jkd3I6NjsKKwkJdTMyIGNmZ19hY3RfdG9f cGNoOjY7CisJCXUzMiBjZmdfYWN0X3RvX2FjdDo2OworCQl1MzIgY2ZnX2FjdF90b19hY3RfZGI6 NjsKKwkJdTMyIHJlc2VydmVkOjg7ICAvKiBPdGhlciBmaWVsZHMgdW51c2VkICovCisJfTsKKwl1 MzIgd29yZDsKK307CisKK3VuaW9uIGNhbHRpbWluZzFfcmVnIHsKKwlzdHJ1Y3QgeworCQl1MzIg Y2ZnX3JkX3RvX3JkOjY7CisJCXUzMiBjZmdfcmRfdG9fcmRfZGM6NjsKKwkJdTMyIGNmZ19yZF90 b19yZF9kYjo2OworCQl1MzIgY2ZnX3JkX3RvX3dyOjY7CisJCXUzMiBjZmdfcmRfdG9fd3JfZGM6 NjsKKwkJdTMyIHJlc2VydmVkOjI7CisJfTsKKwl1MzIgd29yZDsKK307CisKK3VuaW9uIGNhbHRp bWluZzJfcmVnIHsKKwlzdHJ1Y3QgeworCQl1MzIgY2ZnX3JkX3RvX3dyX2RiOjY7CisJCXUzMiBj ZmdfcmRfdG9fcGNoOjY7CisJCXUzMiBjZmdfcmRfYXBfdG9fdmFsaWQ6NjsKKwkJdTMyIGNmZ193 cl90b193cjo2OworCQl1MzIgY2ZnX3dyX3RvX3dyX2RjOjY7CisJCXUzMiByZXNlcnZlZDoyOwor CX07CisJdTMyIHdvcmQ7Cit9OworCit1bmlvbiBjYWx0aW1pbmczX3JlZyB7CisJc3RydWN0IHsK KwkJdTMyIGNmZ193cl90b193cl9kYjo2OworCQl1MzIgY2ZnX3dyX3RvX3JkOjY7CisJCXUzMiBj Zmdfd3JfdG9fcmRfZGM6NjsKKwkJdTMyIGNmZ193cl90b19yZF9kYjo2OworCQl1MzIgY2ZnX3dy X3RvX3BjaDo2OworCQl1MzIgcmVzZXJ2ZWQ6MjsKKwl9OworCXUzMiB3b3JkOworfTsKKwordW5p b24gY2FsdGltaW5nNF9yZWcgeworCXN0cnVjdCB7CisJCXUzMiBjZmdfd3JfYXBfdG9fdmFsaWQ6 NjsKKwkJdTMyIGNmZ19wY2hfdG9fdmFsaWQ6NjsKKwkJdTMyIGNmZ19wY2hfYWxsX3RvX3ZhbGlk OjY7CisJCXUzMiBjZmdfYXJmX3RvX3ZhbGlkOjg7CisJCXUzMiBjZmdfcGRuX3RvX3ZhbGlkOjY7 CisJfTsKKwl1MzIgd29yZDsKK307CisKK3VuaW9uIGNhbHRpbWluZzlfcmVnIHsKKwlzdHJ1Y3Qg eworCQl1MzIgY2ZnXzRfYWN0X3RvX2FjdDo4OworCQl1MzIgcmVzZXJ2ZWQ6MjQ7CisJfTsKKwl1 MzIgd29yZDsKK307CisKKyNkZWZpbmUgSVJRX0VDQ19TRVJSCQkJCQkJMzQKKyNkZWZpbmUgSVJR X0VDQ19ERVJSCQkJCQkJMzIKKworI2RlZmluZSBBUlJJQTEwX0VDQ19ITUNfT0NQX0REUklPQ1RS TF9JT19TSVpFCQkJMHgwMDAwMDAwMQorCisjZGVmaW5lIEFSUklBMTBfRUNDX0hNQ19PQ1BfSU5U U1RBVF9TRVJSUEVOQQkJCTB4MDAwMDAwMDEKKyNkZWZpbmUgQVJSSUExMF9FQ0NfSE1DX09DUF9J TlRTVEFUX0RFUlJQRU5BCQkJMHgwMDAwMDAwMgorI2RlZmluZSBBUlJJQTEwX0VDQ19ITUNfT0NQ X0VSUklOVEVOX1NFUlJJTlRFTgkJCTB4MDAwMDAwMDEKKyNkZWZpbmUgQVJSSUExMF9FQ0NfSE1D X09DUF9FUlJJTlRFTl9ERVJSSU5URU4JCQkweDAwMDAwMDAyCisjZGVmaW5lIEFSUklBMTBfRUND X0hNQ19PQ1BfSU5UTU9EX0lOVE9OQ01QCQkJMHgwMDAxMDAwMAorI2RlZmluZSBBUlJJQTEwX0VD Q19ITUNfT0NQX0lOVE1PRF9TRVJSCQkJCTB4MDAwMDAwMDEKKyNkZWZpbmUgQVJSSUExMF9FQ0Nf SE1DX09DUF9JTlRNT0RfRVhUX0FERFJQQVJJVFkJCTB4MDAwMDAxMDAKKyNkZWZpbmUgQVJSSUEx MF9FQ0NfSE1DX09DUF9FQ0NDVExfQVdCX0NOVF9SU1QJCQkweDAwMDEwMDAwCisjZGVmaW5lIEFS UklBMTBfRUNDX0hNQ19PQ1BfRUNDQ1RMX0NOVF9SU1QJCQkweDAwMDAwMTAwCisjZGVmaW5lIEFS UklBMTBfRUNDX0hNQ19PQ1BfRUNDQ1RMX0VDQ19FTgkJCTB4MDAwMDAwMDAKKyNkZWZpbmUgQVJS SUExMF9FQ0NfSE1DX09DUF9FQ0NDVEwyX1JNV19FTgkJCTB4MDAwMDAxMDAKKyNkZWZpbmUgQVJS SUExMF9FQ0NfSE1DX09DUF9FQ0NDVEwyX0FXQl9FTgkJCTB4MDAwMDAwMDEKKyNkZWZpbmUgQVJS SUExMF9FQ0NfSE1DX09DUF9FUlJJTlRFTl9TRVJSCQkJMHgwMDAwMDAwMQorI2RlZmluZSBBUlJJ QTEwX0VDQ19ITUNfT0NQX0VSUklOVEVOX0RFUlIJCQkweDAwMDAwMDAyCisjZGVmaW5lIEFSUklB MTBfRUNDX0hNQ19PQ1BfRVJSSU5URU5fSE1JCQkJMHgwMDAwMDAwNAorI2RlZmluZSBBUlJJQTEw X0VDQ19ITUNfT0NQX0lOVFNUQVRfU0VSUgkJCTB4MDAwMDAwMDEKKyNkZWZpbmUgQVJSSUExMF9F Q0NfSE1DX09DUF9JTlRTVEFUX0RFUlIJCQkweDAwMDAwMDAyCisjZGVmaW5lIEFSUklBMTBfRUND X0hNQ19PQ1BfSU5UU1RBVF9ITUkJCQkJMHgwMDAwMDAwNAorI2RlZmluZSBBUlJJQTEwX0VDQ19I TUNfT0NQX0lOVFNUQVRfQUREUk1UQ0ZMRwkJCTB4MDAwMTAwMDAKKyNkZWZpbmUgQVJSSUExMF9F Q0NfSE1DX09DUF9JTlRTVEFUX0FERFJQQVJGTEcJCQkweDAwMDIwMDAwCisjZGVmaW5lIEFSUklB MTBfRUNDX0hNQ19PQ1BfSU5UU1RBVF9ERVJSQlVTRkxHCQkJMHgwMDA0MDAwMAorCisjZGVmaW5l IEFSUklBMTBfRUNDX0hNQ19PQ1BfU0VSUkNOVFJFR19WQUxVRQkJCTgKKworI2RlZmluZSBBUlJJ QTEwX05PQ19NUFVfRERSX1RfU0NIRURfRERSVElNSU5HX0FDVFRPQUNUX0xTQgkyMgorI2RlZmlu ZSBBUlJJQTEwX05PQ19NUFVfRERSX1RfU0NIRURfRERSVElNSU5HX1JEVE9NSVNTX0xTQgkwCisj ZGVmaW5lIEFSUklBMTBfTk9DX01QVV9ERFJfVF9TQ0hFRF9ERFJUSU1JTkdfV1JUT01JU1NfTFNC CTAKKyNkZWZpbmUgQVJSSUExMF9OT0NfTVBVX0REUl9UX1NDSEVEX0REUlRJTUlOR19CVVJTVExF Tl9MU0IJMgorI2RlZmluZSBBUlJJQTEwX05PQ19NUFVfRERSX1RfU0NIRURfRERSVElNSU5HX1JE VE9XUl9MU0IJNgorI2RlZmluZSBBUlJJQTEwX05PQ19NUFVfRERSX1RfU0NIRURfRERSVElNSU5H X1dSVE9SRF9MU0IJMTUKKyNkZWZpbmUgQVJSSUExMF9OT0NfTVBVX0REUl9UX1NDSEVEX0REUlRJ TUlOR19CV1JBVElPX0xTQgkwCisKKyNkZWZpbmUgQVJSSUExMF9OT0NfTVBVX0REUl9UX1NDSEVE X0REUk1PRF9BVVRPUFJFQ0hBUkdFX0xTQgkwCisjZGVmaW5lIEFSUklBMTBfTk9DX01QVV9ERFJf VF9TQ0hFRF9ERFJNT0RfQldSQVRJT0VYVEVOREVEX0xTQgkwCisKKyNkZWZpbmUgQVJSSUExMF9O T0NfTVBVX0REUl9UX1NDSEVEX0FDVElWQVRFX1JSRF9MU0IJCTQKKyNkZWZpbmUgQVJSSUExMF9O T0NfTVBVX0REUl9UX1NDSEVEX0FDVElWQVRFX0ZBV19MU0IJCTEzCisjZGVmaW5lIEFSUklBMTBf Tk9DX01QVV9ERFJfVF9TQ0hFRF9BQ1RJVkFURV9GQVdCQU5LX0xTQgk0CisKKyNkZWZpbmUgQVJS SUExMF9OT0NfTVBVX0REUl9UX1NDSEVEX0RFVlRPREVWX0JVU1JEVE9SRF9MU0IJNAorI2RlZmlu ZSBBUlJJQTEwX05PQ19NUFVfRERSX1RfU0NIRURfREVWVE9ERVZfQlVTUkRUT1dSX0xTQgk2Cisj ZGVmaW5lIEFSUklBMTBfTk9DX01QVV9ERFJfVF9TQ0hFRF9ERVZUT0RFVl9CVVNXUlRPUkRfTFNC CTYKKworI2RlZmluZSBBUlJJQTEwX1NEUl9GV19NUFVfRlBHQV9FTgkJCShBUlJJQTEwX1NEUl9G V19NUFVfRlBHQV9BRERSICsgMHgwMCkKKyNkZWZpbmUgQVJSSUExMF9TRFJfRldfTVBVX0ZQR0Ff RU5fU0VUCQkJKEFSUklBMTBfU0RSX0ZXX01QVV9GUEdBX0FERFIgKyAweDA0KQorI2RlZmluZSBB UlJJQTEwX1NEUl9GV19NUFVfRlBHQV9FTl9DTFIJCQkoQVJSSUExMF9TRFJfRldfTVBVX0ZQR0Ff QUREUiArIDB4MDgpCisjZGVmaW5lIEFSUklBMTBfU0RSX0ZXX01QVV9GUEdBX01QVVJFR0lPTjBB RERSCQkoQVJSSUExMF9TRFJfRldfTVBVX0ZQR0FfQUREUiArIDB4MTApCisjZGVmaW5lIEFSUklB MTBfU0RSX0ZXX01QVV9GUEdBX01QVVJFR0lPTjFBRERSCQkoQVJSSUExMF9TRFJfRldfTVBVX0ZQ R0FfQUREUiArIDB4MTQpCisjZGVmaW5lIEFSUklBMTBfU0RSX0ZXX01QVV9GUEdBX01QVVJFR0lP TjJBRERSCQkoQVJSSUExMF9TRFJfRldfTVBVX0ZQR0FfQUREUiArIDB4MTgpCisjZGVmaW5lIEFS UklBMTBfU0RSX0ZXX01QVV9GUEdBX01QVVJFR0lPTjNBRERSCQkoQVJSSUExMF9TRFJfRldfTVBV X0ZQR0FfQUREUiArIDB4MWMpCisjZGVmaW5lIEFSUklBMTBfU0RSX0ZXX01QVV9GUEdBX0ZQR0Ey U0RSQU0wUkVHSU9OMEFERFIJKEFSUklBMTBfU0RSX0ZXX01QVV9GUEdBX0FERFIgKyAweDIwKQor I2RlZmluZSBBUlJJQTEwX1NEUl9GV19NUFVfRlBHQV9GUEdBMlNEUkFNMFJFR0lPTjFBRERSCShB UlJJQTEwX1NEUl9GV19NUFVfRlBHQV9BRERSICsgMHgyNCkKKyNkZWZpbmUgQVJSSUExMF9TRFJf RldfTVBVX0ZQR0FfRlBHQTJTRFJBTTBSRUdJT04yQUREUgkoQVJSSUExMF9TRFJfRldfTVBVX0ZQ R0FfQUREUiArIDB4MjgpCisjZGVmaW5lIEFSUklBMTBfU0RSX0ZXX01QVV9GUEdBX0ZQR0EyU0RS QU0wUkVHSU9OM0FERFIJKEFSUklBMTBfU0RSX0ZXX01QVV9GUEdBX0FERFIgKyAweDJjKQorI2Rl ZmluZSBBUlJJQTEwX1NEUl9GV19NUFVfRlBHQV9GUEdBMlNEUkFNMVJFR0lPTjBBRERSCShBUlJJ QTEwX1NEUl9GV19NUFVfRlBHQV9BRERSICsgMHgzMCkKKyNkZWZpbmUgQVJSSUExMF9TRFJfRldf TVBVX0ZQR0FfRlBHQTJTRFJBTTFSRUdJT04xQUREUgkoQVJSSUExMF9TRFJfRldfTVBVX0ZQR0Ff QUREUiArIDB4MzQpCisjZGVmaW5lIEFSUklBMTBfU0RSX0ZXX01QVV9GUEdBX0ZQR0EyU0RSQU0x UkVHSU9OMkFERFIJKEFSUklBMTBfU0RSX0ZXX01QVV9GUEdBX0FERFIgKyAweDM4KQorI2RlZmlu ZSBBUlJJQTEwX1NEUl9GV19NUFVfRlBHQV9GUEdBMlNEUkFNMVJFR0lPTjNBRERSCShBUlJJQTEw X1NEUl9GV19NUFVfRlBHQV9BRERSICsgMHgzYykKKyNkZWZpbmUgQVJSSUExMF9TRFJfRldfTVBV X0ZQR0FfRlBHQTJTRFJBTTJSRUdJT04wQUREUgkoQVJSSUExMF9TRFJfRldfTVBVX0ZQR0FfQURE UiArIDB4NDApCisjZGVmaW5lIEFSUklBMTBfU0RSX0ZXX01QVV9GUEdBX0ZQR0EyU0RSQU0yUkVH SU9OMUFERFIJKEFSUklBMTBfU0RSX0ZXX01QVV9GUEdBX0FERFIgKyAweDQ0KQorI2RlZmluZSBB UlJJQTEwX1NEUl9GV19NUFVfRlBHQV9GUEdBMlNEUkFNMlJFR0lPTjJBRERSCShBUlJJQTEwX1NE Ul9GV19NUFVfRlBHQV9BRERSICsgMHg0OCkKKyNkZWZpbmUgQVJSSUExMF9TRFJfRldfTVBVX0ZQ R0FfRlBHQTJTRFJBTTJSRUdJT04zQUREUgkoQVJSSUExMF9TRFJfRldfTVBVX0ZQR0FfQUREUiAr IDB4NGMpCisKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfRERSX01QVV9NUFVSRUcwRU4JCUJJVCgw KQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19ERFJfTVBVX01QVVJFRzFFTgkJQklUKDEpCisjZGVm aW5lIEFSUklBMTBfTk9DX0ZXX0REUl9NUFVfTVBVUkVHMkVOCQlCSVQoMikKKyNkZWZpbmUgQVJS SUExMF9OT0NfRldfRERSX01QVV9NUFVSRUczRU4JCUJJVCgzKQorI2RlZmluZSBBUlJJQTEwX05P Q19GV19ERFJfTVBVX0YyU0RSMFJFRzBFTgkJQklUKDQpCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZX X0REUl9NUFVfRjJTRFIwUkVHMUVOCQlCSVQoNSkKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfRERS X01QVV9GMlNEUjBSRUcyRU4JCUJJVCg2KQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19ERFJfTVBV X0YyU0RSMFJFRzNFTgkJQklUKDcpCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZXX0REUl9NUFVfRjJT RFIxUkVHMEVOCQlCSVQoOCkKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfRERSX01QVV9GMlNEUjFS RUcxRU4JCUJJVCg5KQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19ERFJfTVBVX0YyU0RSMVJFRzJF TgkJQklUKDEwKQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19ERFJfTVBVX0YyU0RSMVJFRzNFTgkJ QklUKDExKQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19ERFJfTVBVX0YyU0RSMlJFRzBFTgkJQklU KDEyKQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19ERFJfTVBVX0YyU0RSMlJFRzFFTgkJQklUKDEz KQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19ERFJfTVBVX0YyU0RSMlJFRzJFTgkJQklUKDE0KQor I2RlZmluZSBBUlJJQTEwX05PQ19GV19ERFJfTVBVX0YyU0RSMlJFRzNFTgkJQklUKDE1KQorCisj ZGVmaW5lIEFSUklBMTBfTk9DX0ZXX0REUl9MM19FTgkJCShBUlJJQTEwX05PQ19GV19ERFJfTDNf RERSX1NDUl9BRERSICsgMHgwMCkKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfRERSX0wzX0VOX1NF VAkJCShBUlJJQTEwX05PQ19GV19ERFJfTDNfRERSX1NDUl9BRERSICsgMHgwNCkKKyNkZWZpbmUg QVJSSUExMF9OT0NfRldfRERSX0wzX0VOX0NMUgkJCShBUlJJQTEwX05PQ19GV19ERFJfTDNfRERS X1NDUl9BRERSICsgMHgwOCkKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfRERSX0wzX0hQU1JFR0lP TjBBRERSCQkoQVJSSUExMF9OT0NfRldfRERSX0wzX0REUl9TQ1JfQUREUiArIDB4MGMpCisjZGVm aW5lIEFSUklBMTBfTk9DX0ZXX0REUl9MM19IUFNSRUdJT04xQUREUgkJKEFSUklBMTBfTk9DX0ZX X0REUl9MM19ERFJfU0NSX0FERFIgKyAweDEwKQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19ERFJf TDNfSFBTUkVHSU9OMkFERFIJCShBUlJJQTEwX05PQ19GV19ERFJfTDNfRERSX1NDUl9BRERSICsg MHgxNCkKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfRERSX0wzX0hQU1JFR0lPTjNBRERSCQkoQVJS SUExMF9OT0NfRldfRERSX0wzX0REUl9TQ1JfQUREUiArIDB4MTgpCisjZGVmaW5lIEFSUklBMTBf Tk9DX0ZXX0REUl9MM19IUFNSRUdJT040QUREUgkJKEFSUklBMTBfTk9DX0ZXX0REUl9MM19ERFJf U0NSX0FERFIgKyAweDFjKQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19ERFJfTDNfSFBTUkVHSU9O NUFERFIJCShBUlJJQTEwX05PQ19GV19ERFJfTDNfRERSX1NDUl9BRERSICsgMHgyMCkKKyNkZWZp bmUgQVJSSUExMF9OT0NfRldfRERSX0wzX0hQU1JFR0lPTjZBRERSCQkoQVJSSUExMF9OT0NfRldf RERSX0wzX0REUl9TQ1JfQUREUiArIDB4MjQpCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZXX0REUl9M M19IUFNSRUdJT043QUREUgkJKEFSUklBMTBfTk9DX0ZXX0REUl9MM19ERFJfU0NSX0FERFIgKyAw eDI4KQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19ERFJfTDNfR0xPQkFMCQkJKEFSUklBMTBfTk9D X0ZXX0REUl9MM19ERFJfU0NSX0FERFIgKyAweDJjKQorCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZX X0REUl9MM19IUFNSRUcwRU4JCQlCSVQoMCkKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfRERSX0wz X0hQU1JFRzFFTgkJCUJJVCgxKQorI2RlZmluZSBBUlJJQTEwX05PQ19GV19ERFJfTDNfSFBTUkVH MkVOCQkJQklUKDIpCisjZGVmaW5lIEFSUklBMTBfTk9DX0ZXX0REUl9MM19IUFNSRUczRU4JCQlC SVQoMykKKyNkZWZpbmUgQVJSSUExMF9OT0NfRldfRERSX0wzX0hQU1JFRzRFTgkJCUJJVCg0KQor I2RlZmluZSBBUlJJQTEwX05PQ19GV19ERFJfTDNfSFBTUkVHNUVOCQkJQklUKDUpCisjZGVmaW5l IEFSUklBMTBfTk9DX0ZXX0REUl9MM19IUFNSRUc2RU4JCQlCSVQoNikKKyNkZWZpbmUgQVJSSUEx MF9OT0NfRldfRERSX0wzX0hQU1JFRzdFTgkJCUJJVCg3KQorCisjZGVmaW5lIEFSUklBMTBfSU80 OF9EUkFNVElNRV9NRU1fUkVBRF9MQVRFTkNZCQkweDAwMDAwMDNmCisKK2ludCBhcnJpYTEwX2Rk cl9jYWxpYnJhdGlvbl9zZXF1ZW5jZSh2b2lkKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNo L2FybS9tYWNoLXNvY2ZwZ2EvaW5jbHVkZS9tYWNoL2FycmlhMTAtc3lzdGVtLW1hbmFnZXIuaCBi L2FyY2gvYXJtL21hY2gtc29jZnBnYS9pbmNsdWRlL21hY2gvYXJyaWExMC1zeXN0ZW0tbWFuYWdl ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjk4Y2MzNmM3NjY0 Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vbWFjaC1zb2NmcGdhL2luY2x1ZGUvbWFjaC9h cnJpYTEwLXN5c3RlbS1tYW5hZ2VyLmgKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdo dCAoQykgMjAxNC0yMDE2IEFsdGVyYSBDb3Jwb3JhdGlvbiA8d3d3LmFsdGVyYS5jb20+CisgKgor ICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6CUdQTC0yLjAKKyAqLworCisjaWZuZGVmCV9BUlJJ QTEwX1NZU1RFTV9NQU5BR0VSX0hfCisjZGVmaW5lCV9BUlJJQTEwX1NZU1RFTV9NQU5BR0VSX0hf CisKKyNpbmNsdWRlIDxtYWNoL2FycmlhMTAtcmVncy5oPgorCisjZGVmaW5lIEFSUklBMTBfU1lT TUdSX1NJTElDT05JRDEJCShBUlJJQTEwX1NZU01HUl9BRERSICsgMHgwMCkKKyNkZWZpbmUgQVJS SUExMF9TWVNNR1JfU0lMSUNPTklEMgkJKEFSUklBMTBfU1lTTUdSX0FERFIgKyAweDA0KQorI2Rl ZmluZSBBUlJJQTEwX1NZU01HUl9XRERCRwkJCShBUlJJQTEwX1NZU01HUl9BRERSICsgMHgwOCkK KyNkZWZpbmUgQVJSSUExMF9TWVNNR1JfQk9PVElORk8JCQkoQVJSSUExMF9TWVNNR1JfQUREUiAr IDB4MGMpCisjZGVmaW5lIEFSUklBMTBfU1lTTUdSX01QVV9DVFJMX0wyX0VDQwkJKEFSUklBMTBf U1lTTUdSX0FERFIgKyAweDEwKQorI2RlZmluZSBBUlJJQTEwX1NZU01HUl9ETUEJCQkoQVJSSUEx MF9TWVNNR1JfQUREUiArIDB4MjApCisjZGVmaW5lIEFSUklBMTBfU1lTTUdSX0RNQV9QRVJJUEgJ CShBUlJJQTEwX1NZU01HUl9BRERSICsgMHgyNCkKKyNkZWZpbmUgQVJSSUExMF9TWVNNR1JfU0RN TUMJCQkoQVJSSUExMF9TWVNNR1JfQUREUiArIDB4MjgpCisjZGVmaW5lIEFSUklBMTBfU1lTTUdS X1NETU1DX0wzTUFTVEVSCQkoQVJSSUExMF9TWVNNR1JfQUREUiArIDB4MmMpCisjZGVmaW5lIEFS UklBMTBfU1lTTUdSX05BTkRfQk9PVFNUUkFQCQkoQVJSSUExMF9TWVNNR1JfQUREUiArIDB4MzAp CisjZGVmaW5lIEFSUklBMTBfU1lTTUdSX05BTkRfTDNNQVNURVIJCShBUlJJQTEwX1NZU01HUl9B RERSICsgMHgzNCkKKyNkZWZpbmUgQVJSSUExMF9TWVNNR1JfVVNCMF9MM01BU1RFUgkJKEFSUklB MTBfU1lTTUdSX0FERFIgKyAweDM4KQorI2RlZmluZSBBUlJJQTEwX1NZU01HUl9VU0IxX0wzTUFT VEVSCQkoQVJSSUExMF9TWVNNR1JfQUREUiArIDB4M2MpCisjZGVmaW5lIEFSUklBMTBfU1lTTUdS X0VNQUNfR0xPQkFMCQkoQVJSSUExMF9TWVNNR1JfQUREUiArIDB4NDApCisjZGVmaW5lIEFSUklB MTBfU1lTTUdSX0VNQUMwCQkJKEFSUklBMTBfU1lTTUdSX0FERFIgKyAweDQ0KQorI2RlZmluZSBB UlJJQTEwX1NZU01HUl9FTUFDMQkJCShBUlJJQTEwX1NZU01HUl9BRERSICsgMHg0OCkKKyNkZWZp bmUgQVJSSUExMF9TWVNNR1JfRU1BQzIJCQkoQVJSSUExMF9TWVNNR1JfQUREUiArIDB4NGMpCisj ZGVmaW5lIEFSUklBMTBfU1lTTUdSX0ZQR0FJTlRGX0dMT0JBTAkJKEFSUklBMTBfU1lTTUdSX0FE RFIgKyAweDYwKQorI2RlZmluZSBBUlJJQTEwX1NZU01HUl9GUEdBSU5URl9FTl8wCQkoQVJSSUEx MF9TWVNNR1JfQUREUiArIDB4NjQpCisjZGVmaW5lIEFSUklBMTBfU1lTTUdSX0ZQR0FJTlRGX0VO XzEJCShBUlJJQTEwX1NZU01HUl9BRERSICsgMHg2OCkKKyNkZWZpbmUgQVJSSUExMF9TWVNNR1Jf RlBHQUlOVEZfRU5fMgkJKEFSUklBMTBfU1lTTUdSX0FERFIgKyAweDZjKQorI2RlZmluZSBBUlJJ QTEwX1NZU01HUl9GUEdBSU5URl9FTl8zCQkoQVJSSUExMF9TWVNNR1JfQUREUiArIDB4NzApCisj ZGVmaW5lIEFSUklBMTBfU1lTTUdSX05PQ19BRERSX1JFTUFQX1ZBTFVFIAkoQVJSSUExMF9TWVNN R1JfQUREUiArIDB4ODApCisjZGVmaW5lIEFSUklBMTBfU1lTTUdSX05PQ19BRERSX1JFTUFQX1NF VCAJKEFSUklBMTBfU1lTTUdSX0FERFIgKyAweDg0KQorI2RlZmluZSBBUlJJQTEwX1NZU01HUl9O T0NfQUREUl9SRU1BUF9DTEVBUiAJKEFSUklBMTBfU1lTTUdSX0FERFIgKyAweDg4KQorI2RlZmlu ZSBBUlJJQTEwX1NZU01HUl9FQ0NfSU5UTUFTS19WQUxVRSAJKEFSUklBMTBfU1lTTUdSX0FERFIg KyAweDkwKQorI2RlZmluZSBBUlJJQTEwX1NZU01HUl9FQ0NfSU5UTUFTS19TRVQgCQkoQVJSSUEx MF9TWVNNR1JfQUREUiArIDB4OTQpCisjZGVmaW5lIEFSUklBMTBfU1lTTUdSX0VDQ19JTlRNQVNL X0NMUiAJCShBUlJJQTEwX1NZU01HUl9BRERSICsgMHg5OCkKKyNkZWZpbmUgQVJSSUExMF9TWVNN R1JfRUNDX0lOVFNUQVRVU19TRVJSIAkoQVJSSUExMF9TWVNNR1JfQUREUiArIDB4OWMpCisjZGVm aW5lIEFSUklBMTBfU1lTTUdSX0VDQ19JTlRTVEFUVVNfREVSUiAJKEFSUklBMTBfU1lTTUdSX0FE RFIgKyAweGEwKQorI2RlZmluZSBBUlJJQTEwX1NZU01HUl9NUFVfU1RBVFVTX0wyX0VDQyAJKEFS UklBMTBfU1lTTUdSX0FERFIgKyAweGE0KQorI2RlZmluZSBBUlJJQTEwX1NZU01HUl9NUFVfQ0xF QVJfTDJfRUNDIAkoQVJSSUExMF9TWVNNR1JfQUREUiArIDB4YTgpCisjZGVmaW5lIEFSUklBMTBf U1lTTUdSX01QVV9TVEFUVVNfTDFfUEFSSVRZIAkoQVJSSUExMF9TWVNNR1JfQUREUiArIDB4YWMp CisjZGVmaW5lIEFSUklBMTBfU1lTTUdSX01QVV9DTEVBUl9MMV9QQVJJVFkgCShBUlJJQTEwX1NZ U01HUl9BRERSICsgMHhiMCkKKyNkZWZpbmUgQVJSSUExMF9TWVNNR1JfTVBVX1NFVF9MMV9QQVJJ VFkgCShBUlJJQTEwX1NZU01HUl9BRERSICsgMHhiNCkKKyNkZWZpbmUgQVJSSUExMF9TWVNNR1Jf Tk9DX1RJTUVPVVQgCQkoQVJSSUExMF9TWVNNR1JfQUREUiArIDB4YzApCisjZGVmaW5lIEFSUklB MTBfU1lTTUdSX05PQ19JRExFUkVRX1NFVAkJKEFSUklBMTBfU1lTTUdSX0FERFIgKyAweGM0KQor I2RlZmluZSBBUlJJQTEwX1NZU01HUl9OT0NfSURMRVJFUV9DTFIJCShBUlJJQTEwX1NZU01HUl9B RERSICsgMHhjOCkKKyNkZWZpbmUgQVJSSUExMF9TWVNNR1JfTk9DX0lETEVSRVFfVkFMVUUJKEFS UklBMTBfU1lTTUdSX0FERFIgKyAweGNjKQorI2RlZmluZSBBUlJJQTEwX1NZU01HUl9OT0NfSURM RUFDSwkJKEFSUklBMTBfU1lTTUdSX0FERFIgKyAweGQwKQorI2RlZmluZSBBUlJJQTEwX1NZU01H Ul9OT0NfSURMRVNUQVRVUwkJKEFSUklBMTBfU1lTTUdSX0FERFIgKyAweGQ0KQorI2RlZmluZSBB UlJJQTEwX1NZU01HUl9GUEdBMlNPQ19DVFJMCQkoQVJSSUExMF9TWVNNR1JfQUREUiArIDB4ZDgp CisKKy8qIHBpbiBtdXggKi8KKyNkZWZpbmUgQVJSSUExMF9TWVNNR1JfUElOTVVYR1JQCQkoQVJS SUExMF9TWVNNR1JfQUREUiArIDB4NDAwKQorI2RlZmluZSBBUlJJQTEwX1NZU01HUl9QSU5NVVhH UlBfTkFORFVTRUZQR0EJKEFSUklBMTBfU1lTTUdSX1BJTk1VWEdSUCArIDB4MkYwKQorI2RlZmlu ZSBBUlJJQTEwX1NZU01HUl9QSU5NVVhHUlBfRU1BQzFVU0VGUEdBCShBUlJJQTEwX1NZU01HUl9Q SU5NVVhHUlAgKyAweDJGOCkKKyNkZWZpbmUgQVJSSUExMF9TWVNNR1JfUElOTVVYR1JQX1NETU1D VVNFRlBHQQkoQVJSSUExMF9TWVNNR1JfUElOTVVYR1JQICsgMHgzMDgpCisjZGVmaW5lIEFSUklB MTBfU1lTTUdSX1BJTk1VWEdSUF9FTUFDMFVTRUZQR0EJKEFSUklBMTBfU1lTTUdSX1BJTk1VWEdS UCArIDB4MzE0KQorI2RlZmluZSBBUlJJQTEwX1NZU01HUl9QSU5NVVhHUlBfU1BJTTFVU0VGUEdB CShBUlJJQTEwX1NZU01HUl9QSU5NVVhHUlAgKyAweDMzMCkKKyNkZWZpbmUgQVJSSUExMF9TWVNN R1JfUElOTVVYR1JQX1NQSU0wVVNFRlBHQQkoQVJSSUExMF9TWVNNR1JfUElOTVVYR1JQICsgMHgz MzgpCisKKy8qIGJpdCBmaWVsZHMgKi8KKyNkZWZpbmUgQVJSSUExMF9TWVNNR1JfUk9NQ09ERUdS UF9DVFJMX1dBUk1SU1RDRkdQSU5NVVgJCUJJVCgwKQorI2RlZmluZSBBUlJJQTEwX1NZU01HUl9S T01DT0RFR1JQX0NUUkxfV0FSTVJTVENGR0lPCQlCSVQoMSkKKyNkZWZpbmUgQVJSSUExMF9TWVNN R1JfRUNDX09DUkFNX0VOCQkJCUJJVCgwKQorI2RlZmluZSBBUlJJQTEwX1NZU01HUl9FQ0NfT0NS QU1fU0VSUgkJCQlCSVQoMykKKyNkZWZpbmUgQVJSSUExMF9TWVNNR1JfRUNDX09DUkFNX0RFUlIJ CQkJQklUKDQpCisjZGVmaW5lIEFSUklBMTBfU1lTTUdSX0ZQR0FJTlRGX1VTRUZQR0EJCQkJQklU KDEpCisjZGVmaW5lIEFSUklBMTBfU1lTTUdSX0ZQR0FJTlRGX1NQSU0wCQkJCUJJVCgwKQorI2Rl ZmluZSBBUlJJQTEwX1NZU01HUl9GUEdBSU5URl9TUElNMQkJCQlCSVQoMSkKKyNkZWZpbmUgQVJS SUExMF9TWVNNR1JfRlBHQUlOVEZfRU1BQzAJCQkJQklUKDIpCisjZGVmaW5lIEFSUklBMTBfU1lT TUdSX0ZQR0FJTlRGX0VNQUMxCQkJCUJJVCgzKQorI2RlZmluZSBBUlJJQTEwX1NZU01HUl9GUEdB SU5URl9OQU5ECQkJCUJJVCg0KQorI2RlZmluZSBBUlJJQTEwX1NZU01HUl9GUEdBSU5URl9TRE1N QwkJCQlCSVQoNSkKKworI2RlZmluZSBBUlJJQTEwX1NZU01HUl9FTUFDR1JQX0NUUkxfUEhZU0VM X0VOVU1fR01JSV9NSUkJMHgwCisjZGVmaW5lIEFSUklBMTBfU1lTTUdSX0VNQUNHUlBfQ1RSTF9Q SFlTRUxfRU5VTV9SR01JSQkJMHgxCisjZGVmaW5lIEFSUklBMTBfU1lTTUdSX0VNQUNHUlBfQ1RS TF9QSFlTRUxfRU5VTV9STUlJCQkweDIKKyNkZWZpbmUgQVJSSUExMF9TWVNNR1JfRU1BQ0dSUF9D VFJMX1BIWVNFTF9MU0IJCQkwCisjZGVmaW5lIEFSUklBMTBfU1lTTUdSX0VNQUNHUlBfQ1RSTF9Q SFlTRUxfTUFTSwkJCTB4MDAwMDAwMDMKKworI2RlZmluZSBBUlJJQTEwX1NZU01HUl9GUEdBSU5U Rl9FTjNfRU1BQzAJQklUKDApCisjZGVmaW5lIEFSUklBMTBfU1lTTUdSX0ZQR0FJTlRGX0VOM19F TUFDMF9TVwlCSVQoNCkKKyNkZWZpbmUgQVJSSUExMF9TWVNNR1JfRlBHQUlOVEZfRU4zX0VNQUMx CUJJVCg4KQorI2RlZmluZSBBUlJJQTEwX1NZU01HUl9GUEdBSU5URl9FTjNfRU1BQzFfU1cJQklU KDEyKQorI2RlZmluZSBBUlJJQTEwX1NZU01HUl9GUEdBSU5URl9FTjNfRU1BQzIJQklUKDE2KQor I2RlZmluZSBBUlJJQTEwX1NZU01HUl9GUEdBSU5URl9FTjNfRU1BQzJfU1cJQklUKDIwKQorCisj ZGVmaW5lIEFSUklBMTBfU1lTTUdSX1NETU1DX1NNUExTRUwoc21wbHNlbCkJKCgoc21wbHNlbCkg JiAweDcpIDw8IDQpCisjZGVmaW5lIEFSUklBMTBfU1lTTUdSX1NETU1DX0RSVlNFTChkcnZzZWwp CSgoZHJ2c2VsKSAmIDB4NykKKworI2RlZmluZSBTWVNNR1JfU0RNTUNfQ1RSTF9TRVQoc21wbHNl bCwgZHJ2c2VsKQlcCisJKChkcnZzZWwgPDwgMCkgJiAweDcpIHwgKChzbXBsc2VsIDw8IDQpICYg MHg3MCkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EvaW5jbHVk ZS9tYWNoL2JhcmVib3gtYXJtLWhlYWQuaCBiL2FyY2gvYXJtL21hY2gtc29jZnBnYS9pbmNsdWRl L21hY2gvYmFyZWJveC1hcm0taGVhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uMjhmYjFjOTJmYzc3Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vbWFjaC1z b2NmcGdhL2luY2x1ZGUvbWFjaC9iYXJlYm94LWFybS1oZWFkLmgKQEAgLTAsMCArMSw0MiBAQAor c3RhdGljIGlubGluZSB2b2lkIF9fYmFyZWJveF9hcm1faGVhZCh2b2lkKQoreworCV9fYXNtX18g X192b2xhdGlsZV9fICgKKyNpZmRlZiBDT05GSUdfVEhVTUIyX0JBUkVCT1gKKwkJIi5hcm1cbiIK KwkJImFkciByOSwgMWYgKyAxXG4iCisJCSJieCByOVxuIgorCQkiLnRodW1iXG4iCisJCSIxOlxu IgorCQkiYmwgMmZcbiIKKwkJIi5yZXB0IDEwXG4iCisJCSIxOiBiIDFiXG4iCisJCSIuZW5kclxu IgorI2Vsc2UKKwkJImIgMmZcbiIKKwkJIjE6IGIgMWJcbiIKKwkJIjE6IGIgMWJcbiIKKwkJIjE6 IGIgMWJcbiIKKwkJIjE6IGIgMWJcbiIKKwkJIjE6IGIgMWJcbiIKKwkJIjE6IGIgMWJcbiIKKwkJ IjE6IGIgMWJcbiIKKyNlbmRpZgorCQkiLmFzY2l6IFwiYmFyZWJveFwiXG4iCisJCSIud29yZCBf dGV4dFxuIgkJCQkvKiB0ZXh0IGJhc2UuIElmIGNvcGllZCB0aGVyZSwKKwkJCQkJCQkgKiBiYXJl Ym94IGNhbiBza2lwIHJlbG9jYXRpb24KKwkJCQkJCQkgKi8KKwkJIi53b3JkIF9iYXJlYm94X2lt YWdlX3NpemVcbiIJCS8qIGltYWdlIHNpemUgdG8gY29weSAqLworCisJCSIucmVwdCAxMFxuIgor CQkiLndvcmQgMHg1NTU1NTU1NVxuIgorCQkiLmVuZHJcbiIKKwkJIjI6XG4iCisJKTsKK30KK3N0 YXRpYyBpbmxpbmUgdm9pZCBiYXJlYm94X2FybV9oZWFkKHZvaWQpCit7CisJX19iYXJlYm94X2Fy bV9oZWFkKCk7CisJX19hc21fXyBfX3ZvbGF0aWxlX18gKAorCQkiYiBiYXJlYm94X2FybV9yZXNl dF92ZWN0b3JcbiIKKwkpOworfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1zb2NmcGdhL2lu Y2x1ZGUvbWFjaC9kZWJ1Z19sbC5oIGIvYXJjaC9hcm0vbWFjaC1zb2NmcGdhL2luY2x1ZGUvbWFj aC9kZWJ1Z19sbC5oCmluZGV4IDRlOTA2ZWE2NmVkZC4uZjQxMjU4YzUwNGFlIDEwMDY0NAotLS0g YS9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EvaW5jbHVkZS9tYWNoL2RlYnVnX2xsLmgKKysrIGIvYXJj aC9hcm0vbWFjaC1zb2NmcGdhL2luY2x1ZGUvbWFjaC9kZWJ1Z19sbC5oCkBAIC01Myw2ICs1Mywx NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgSU5JVF9MTCh2b2lkKQogCXdyaXRlbChGQ1JWQUwsIFVB UlRfQkFTRSArIEZDUik7CiB9CiAKKyNpZmRlZiBDT05GSUdfQVJDSF9TT0NGUEdBX0FSUklBMTAK K3N0YXRpYyBpbmxpbmUgdm9pZCBQVVRDX0xMKGNoYXIgYykKK3sKKwkvKiBXYWl0IHVudGlsIHRo ZXJlIGlzIHNwYWNlIGluIHRoZSBGSUZPICovCisJd2hpbGUgKChyZWFkbChVQVJUX0JBU0UgKyBM U1IpICYgTFNSX1RIUkUpID09IDApOworCS8qIFNlbmQgdGhlIGNoYXJhY3RlciAqLworCXdyaXRl bChjLCBVQVJUX0JBU0UgKyBUSFIpOworCS8qIFdhaXQgdG8gbWFrZSBzdXJlIGl0IGhpdHMgdGhl IGxpbmUsIGluIGNhc2Ugd2UgZGllIHRvbyBzb29uLiAqLworCXdoaWxlICgocmVhZGwoVUFSVF9C QVNFICsgTFNSKSAmIExTUl9USFJFKSA9PSAwKTsKK30KKyNlbHNlCiBzdGF0aWMgaW5saW5lIHZv aWQgUFVUQ19MTChjaGFyIGMpCiB7CiAJLyogV2FpdCB1bnRpbCB0aGVyZSBpcyBzcGFjZSBpbiB0 aGUgRklGTyAqLwpAQCAtNjIsNiArNzMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgUFVUQ19MTChj aGFyIGMpCiAJLyogV2FpdCB0byBtYWtlIHN1cmUgaXQgaGl0cyB0aGUgbGluZSwgaW4gY2FzZSB3 ZSBkaWUgdG9vIHNvb24uICovCiAJd2hpbGUgKChyZWFkYihVQVJUX0JBU0UgKyBMU1IpICYgTFNS X1RIUkUpID09IDApOwogfQorI2VuZGlmCiAKICNlbHNlCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVk IGludCBuczE2NTUwX2NhbGNfZGl2aXNvcih1bnNpZ25lZCBpbnQgY2xrLApkaWZmIC0tZ2l0IGEv YXJjaC9hcm0vbWFjaC1zb2NmcGdhL2luY2x1ZGUvbWFjaC9nZW5lcmljLmggYi9hcmNoL2FybS9t YWNoLXNvY2ZwZ2EvaW5jbHVkZS9tYWNoL2dlbmVyaWMuaAppbmRleCAyYTdlMGVhNDk5YWYuLjlk NmRkMWYyNmNjNiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1zb2NmcGdhL2luY2x1ZGUvbWFj aC9nZW5lcmljLmgKKysrIGIvYXJjaC9hcm0vbWFjaC1zb2NmcGdhL2luY2x1ZGUvbWFjaC9nZW5l cmljLmgKQEAgLTEsMTMgKzEsNDkgQEAKICNpZm5kZWYgX19NQUNIX1NPQ0ZQR0FfR0VORVJJQ19I CiAjZGVmaW5lIF9fTUFDSF9TT0NGUEdBX0dFTkVSSUNfSAogCisjaW5jbHVkZSA8bGludXgvdHlw ZXMuaD4KKwogc3RydWN0IHNvY2ZwZ2FfY21fY29uZmlnOwogCiBzdHJ1Y3Qgc29jZnBnYV9pb19j b25maWc7CiAKK3N0cnVjdCBhcnJpYTEwX21haW5wbGxfY2ZnOworc3RydWN0IGFycmlhMTBfcGVy cGxsX2NmZzsKK3N0cnVjdCBhcnJpYTEwX3Bpbm11eF9jZmc7CisKK3ZvaWQgYXJyaWExMF9pbml0 KHN0cnVjdCBhcnJpYTEwX21haW5wbGxfY2ZnICptYWlucGxsLAorCQkgIHN0cnVjdCBhcnJpYTEw X3BlcnBsbF9jZmcgKnBlcnBsbCwgdWludDMyX3QgKnBpbm11eCk7CisKIHZvaWQgc29jZnBnYV9s b3dsZXZlbF9pbml0KHN0cnVjdCBzb2NmcGdhX2NtX2NvbmZpZyAqY21fY29uZmlnLAogCQkJICAg c3RydWN0IHNvY2ZwZ2FfaW9fY29uZmlnICppb19jb25maWcpOwogCisjaWYgZGVmaW5lZChDT05G SUdfQVJDSF9TT0NGUEdBX0NZQ0xPTkU1KQordm9pZCBzb2NmcGdhX2N5Y2xvbmU1X21tY19pbml0 KHZvaWQpOwordm9pZCBzb2NmcGdhX2N5Y2xvbmU1X3VhcnRfaW5pdCh2b2lkKTsKK3ZvaWQgc29j ZnBnYV9jeWNsb25lNV90aW1lcl9pbml0KHZvaWQpOwordm9pZCBzb2NmcGdhX2N5Y2xvbmU1X3Fz cGlfaW5pdCh2b2lkKTsKKyNlbHNlCitzdGF0aWMgaW5saW5lIHZvaWQgc29jZnBnYV9jeWNsb25l NV9tbWNfaW5pdCh2b2lkKQoreworCXJldHVybjsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHNv Y2ZwZ2FfY3ljbG9uZTVfdWFydF9pbml0KHZvaWQpCit7CisJcmV0dXJuOworfQorCitzdGF0aWMg aW5saW5lIHZvaWQgc29jZnBnYV9jeWNsb25lNV90aW1lcl9pbml0KHZvaWQpCit7CisJcmV0dXJu OworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgc29jZnBnYV9jeWNsb25lNV9xc3BpX2luaXQodm9p ZCkKK3sKKwlyZXR1cm47Cit9CisjZW5kaWYKKwogc3RhdGljIGlubGluZSB2b2lkIF9fdWRlbGF5 KHVuc2lnbmVkIHVzKQogewogCXZvbGF0aWxlIHVuc2lnbmVkIGludCBpOwpkaWZmIC0tZ2l0IGEv YXJjaC9hcm0vbWFjaC1zb2NmcGdhL3hsb2FkLmMgYi9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EveGxv YWQuYwppbmRleCA1ZDQ3YmI5ZDNlYTIuLmVlN2QxOTQ0MjdlYyAxMDA2NDQKLS0tIGEvYXJjaC9h cm0vbWFjaC1zb2NmcGdhL3hsb2FkLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1zb2NmcGdhL3hsb2Fk LmMKQEAgLTEsOCArMSw1IEBACi0jaW5jbHVkZSA8cGxhdGZvcm1fZGF0YS9jYWRlbmNlX3FzcGku aD4KLSNpbmNsdWRlIDxwbGF0Zm9ybV9kYXRhL2R3X21tYy5oPgogI2luY2x1ZGUgPGJvb3Rzb3Vy Y2UuaD4KICNpbmNsdWRlIDxib290c3RyYXAuaD4KLSNpbmNsdWRlIDxwbGF0Zm9ybV9kYXRhL3Nl cmlhbC1uczE2NTUwLmg+CiAjaW5jbHVkZSA8Y29tbW9uLmg+CiAjaW5jbHVkZSA8bWFsbG9jLmg+ CiAjaW5jbHVkZSA8aW5pdC5oPgpAQCAtMTAsNyArNyw2IEBACiAjaW5jbHVkZSA8bGludXgvc2l6 ZXMuaD4KICNpbmNsdWRlIDxmcy5oPgogI2luY2x1ZGUgPGlvLmg+Ci0jaW5jbHVkZSA8bWNpLmg+ CiAKICNpbmNsdWRlIDxsaW51eC9jbGtkZXYuaD4KICNpbmNsdWRlIDxsaW51eC9zdGF0Lmg+CkBA IC0zMCw4NCArMjYsNiBAQCBzdGF0aWMgc3RydWN0IHNvY2ZwZ2FfYmFyZWJveF9wYXJ0IGRlZmF1 bHRfcGFydHNbXSA9IHsKIH07CiBjb25zdCBzdHJ1Y3Qgc29jZnBnYV9iYXJlYm94X3BhcnQgKmJh cmVib3hfcGFydHMgPSBkZWZhdWx0X3BhcnRzOwogCi1lbnVtIHNvY2ZwZ2FfY2xrcyB7Ci0JdGlt ZXIsIG1tYywgcXNwaV9jbGssIHVhcnQsIGNsa19tYXgKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgY2xr ICpjbGtzW2Nsa19tYXhdOwotCi1zdGF0aWMgc3RydWN0IGR3X21tY19wbGF0Zm9ybV9kYXRhIG1t Y19wZGF0YSA9IHsKLQkuYnVzX3dpZHRoX2NhcHMgPSBNTUNfQ0FQXzRfQklUX0RBVEEsCi0JLmNp dV9kaXYgPSAzLAotfTsKLQotc3RhdGljIHZvaWQgc29jZnBnYV9tbWNfaW5pdCh2b2lkKQotewot CWNsa3NbbW1jXSA9IGNsa19maXhlZCgibW1jIiwgNDAwMDAwMDAwKTsKLQljbGtkZXZfYWRkX3Bo eXNiYXNlKGNsa3NbbW1jXSwgQ1lDTE9ORTVfU0RNTUNfQUREUkVTUywgTlVMTCk7Ci0JYWRkX2dl bmVyaWNfZGV2aWNlKCJkd19tbWMiLCAwLCBOVUxMLCBDWUNMT05FNV9TRE1NQ19BRERSRVNTLCBT Wl80SywKLQkJCUlPUkVTT1VSQ0VfTUVNLCAmbW1jX3BkYXRhKTsKLX0KLQotI2lmIGRlZmluZWQo Q09ORklHX1NQSV9DQURFTkNFX1FVQURTUEkpCi1zdGF0aWMgc3RydWN0IGNhZGVuY2VfcXNwaV9w bGF0Zm9ybV9kYXRhIHFzcGlfcGRhdGEgPSB7Ci0JLmV4dF9kZWNvZGVyID0gMCwKLQkuZmlmb19k ZXB0aCA9IDEyOCwKLX07Ci0KLXN0YXRpYyBfX21heWJlX3VudXNlZCB2b2lkIGFkZF9jYWRlbmNl X3FzcGlfZGV2aWNlKGludCBpZCwgcmVzb3VyY2Vfc2l6ZV90IGN0cmwsCi0JCQkJICAgIHJlc291 cmNlX3NpemVfdCBkYXRhLCB2b2lkICpwZGF0YSkKLXsKLQlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsK LQotCXJlcyA9IHh6YWxsb2Moc2l6ZW9mKHN0cnVjdCByZXNvdXJjZSkgKiAyKTsKLQlyZXNbMF0u c3RhcnQgPSBjdHJsOwotCXJlc1swXS5lbmQgPSBjdHJsICsgMHgxMDAgLSAxOwotCXJlc1swXS5m bGFncyA9IElPUkVTT1VSQ0VfTUVNOwotCXJlc1sxXS5zdGFydCA9IGRhdGE7Ci0JcmVzWzFdLmVu ZCA9IGRhdGEgKyAweDEwMCAtIDE7Ci0JcmVzWzFdLmZsYWdzID0gSU9SRVNPVVJDRV9NRU07Ci0K LQlhZGRfZ2VuZXJpY19kZXZpY2VfcmVzKCJjYWRlbmNlX3FzcGkiLCBpZCwgcmVzLCAyLCBwZGF0 YSk7Ci19Ci0KLXN0YXRpYyBfX21heWJlX3VudXNlZCB2b2lkIHNvY2ZwZ2FfcXNwaV9pbml0KHZv aWQpCi17Ci0JY2xrc1txc3BpX2Nsa10gPSBjbGtfZml4ZWQoInFzcGlfY2xrIiwgMzcwMDAwMDAw KTsKLQljbGtkZXZfYWRkX3BoeXNiYXNlKGNsa3NbcXNwaV9jbGtdLCBDWUNMT05FNV9RU1BJX0NU UkxfQUREUkVTUywgTlVMTCk7Ci0JY2xrZGV2X2FkZF9waHlzYmFzZShjbGtzW3FzcGlfY2xrXSwg Q1lDTE9ORTVfUVNQSV9EQVRBX0FERFJFU1MsIE5VTEwpOwotCWFkZF9jYWRlbmNlX3FzcGlfZGV2 aWNlKDAsIENZQ0xPTkU1X1FTUElfQ1RSTF9BRERSRVNTLAotCQkJCUNZQ0xPTkU1X1FTUElfREFU QV9BRERSRVNTLCAmcXNwaV9wZGF0YSk7Ci19Ci0jZWxzZQotc3RhdGljIHZvaWQgc29jZnBnYV9x c3BpX2luaXQodm9pZCkKLXsKLQlyZXR1cm47Ci19Ci0jZW5kaWYKLQotc3RhdGljIHN0cnVjdCBO UzE2NTUwX3BsYXQgdWFydF9wZGF0YSA9IHsKLQkuY2xvY2sgPSAxMDAwMDAwMDAsCi0JLnNoaWZ0 ID0gMiwKLX07Ci0KLXN0YXRpYyB2b2lkIHNvY2ZwZ2FfdWFydF9pbml0KHZvaWQpCi17Ci0JY2xr c1t1YXJ0XSA9IGNsa19maXhlZCgidWFydCIsIDEwMDAwMDAwMCk7Ci0JY2xrZGV2X2FkZF9waHlz YmFzZShjbGtzW3VhcnRdLCBDWUNMT05FNV9VQVJUMF9BRERSRVNTLCBOVUxMKTsKLQljbGtkZXZf YWRkX3BoeXNiYXNlKGNsa3NbdWFydF0sIENZQ0xPTkU1X1VBUlQxX0FERFJFU1MsIE5VTEwpOwot CWFkZF9uczE2NTUwX2RldmljZSgwLCAweGZmYzAyMDAwLCAxMDI0LCBJT1JFU09VUkNFX01FTSB8 Ci0JCQlJT1JFU09VUkNFX01FTV84QklULCAmdWFydF9wZGF0YSk7Ci19Ci0KLXN0YXRpYyB2b2lk IHNvY2ZwZ2FfdGltZXJfaW5pdCh2b2lkKQotewotCWNsa3NbdGltZXJdID0gY2xrX2ZpeGVkKCJ0 aW1lciIsIDIwMDAwMDAwMCk7Ci0JY2xrZGV2X2FkZF9waHlzYmFzZShjbGtzW3RpbWVyXSwgQ1lD TE9ORTVfU01QX1RXRF9BRERSRVNTLCBOVUxMKTsKLQlhZGRfZ2VuZXJpY19kZXZpY2UoInNtcF90 d2QiLCAwLCBOVUxMLCBDWUNMT05FNV9TTVBfVFdEX0FERFJFU1MsIDB4MTAwLAotCQkJSU9SRVNP VVJDRV9NRU0sIE5VTEwpOwotfQotCiBzdGF0aWMgX19ub3JldHVybiBpbnQgc29jZnBnYV94bG9h ZCh2b2lkKQogewogCWVudW0gYm9vdHNvdXJjZSBib290c291cmNlID0gYm9vdHNvdXJjZV9nZXQo KTsKQEAgLTExNiw3ICszNCw3IEBAIHN0YXRpYyBfX25vcmV0dXJuIGludCBzb2NmcGdhX3hsb2Fk KHZvaWQpCiAKIAlzd2l0Y2ggKGJvb3Rzb3VyY2UpIHsKIAljYXNlIEJPT1RTT1VSQ0VfTU1DOgot CQlzb2NmcGdhX21tY19pbml0KCk7CisJCXNvY2ZwZ2FfY3ljbG9uZTVfbW1jX2luaXQoKTsKIAog CQlmb3IgKHBhcnQgPSBiYXJlYm94X3BhcnRzOyBwYXJ0LT5tbWNfZGlzazsgcGFydCsrKSB7CiAJ CQlidWYgPSBib290c3RyYXBfcmVhZF9kaXNrKGJhcmVib3hfcGFydHMtPm1tY19kaXNrLCAiZmF0 Iik7CkBAIC0xMzIsOCArNTAsNyBAQCBzdGF0aWMgX19ub3JldHVybiBpbnQgc29jZnBnYV94bG9h ZCh2b2lkKQogCQl9CiAJCWJyZWFrOwogCWNhc2UgQk9PVFNPVVJDRV9TUEk6Ci0JCXNvY2ZwZ2Ff cXNwaV9pbml0KCk7Ci0KKwkJc29jZnBnYV9jeWNsb25lNV9xc3BpX2luaXQoKTsKIAkJZm9yIChw YXJ0ID0gYmFyZWJveF9wYXJ0czsgcGFydC0+bm9yX3NpemU7IHBhcnQrKykgewogCQkJYnVmID0g Ym9vdHN0cmFwX3JlYWRfZGV2ZnMoIm10ZDAiLCBmYWxzZSwKIAkJCQkJcGFydC0+bm9yX29mZnNl dCwgcGFydC0+bm9yX3NpemUsIFNaXzFNKTsKQEAgLTE0Miw3ICs1OSw2IEBAIHN0YXRpYyBfX25v cmV0dXJuIGludCBzb2NmcGdhX3hsb2FkKHZvaWQpCiAJCQkJCXBhcnQtPm5vcl9vZmZzZXQpOwog CQkJCWNvbnRpbnVlOwogCQkJfQotCiAJCQlicmVhazsKIAkJfQogCkBAIC0xNjcsOCArODMsOCBA QCBzdGF0aWMgX19ub3JldHVybiBpbnQgc29jZnBnYV94bG9hZCh2b2lkKQogc3RhdGljIGludCBz b2NmcGdhX2RldmljZXNfaW5pdCh2b2lkKQogewogCWJhcmVib3hfc2V0X21vZGVsKCJTb0NGUEdB Iik7Ci0Jc29jZnBnYV90aW1lcl9pbml0KCk7Ci0Jc29jZnBnYV91YXJ0X2luaXQoKTsKKwlzb2Nm cGdhX2N5Y2xvbmU1X3RpbWVyX2luaXQoKTsKKwlzb2NmcGdhX2N5Y2xvbmU1X3VhcnRfaW5pdCgp OwogCiAJYmFyZWJveF9tYWluID0gc29jZnBnYV94bG9hZDsKIApkaWZmIC0tZ2l0IGEvY29tbW9u L0tjb25maWcgYi9jb21tb24vS2NvbmZpZwppbmRleCAxOTAxYzJhMjU2YjMuLjc2NTk0OGU1M2Zh MSAxMDA2NDQKLS0tIGEvY29tbW9uL0tjb25maWcKKysrIGIvY29tbW9uL0tjb25maWcKQEAgLTEx MjMsNiArMTEyMywxMyBAQCBjb25maWcgREVCVUdfU09DRlBHQV9VQVJUMAogCSAgU2F5IFkgaGVy ZSBpZiB5b3Ugd2FudCBrZXJuZWwgbG93LWxldmVsIGRlYnVnZ2luZyBzdXBwb3J0CiAJICBvbiBT T0NGUEdBKEN5Y2xvbmUgNSBhbmQgQXJyaWEgNSkgYmFzZWQgcGxhdGZvcm1zLgogCitjb25maWcg REVCVUdfU09DRlBHQV9VQVJUMQorCWJvb2wgIlVzZSBTT0NGUEdBIFVBUlQxIGZvciBsb3ctbGV2 ZWwgZGVidWciCisJZGVwZW5kcyBvbiBBUkNIX1NPQ0ZQR0EKKwloZWxwCisJICBTYXkgWSBoZXJl IGlmIHlvdSB3YW50IGtlcm5lbCBsb3ctbGV2ZWwgZGVidWdnaW5nIHN1cHBvcnQKKwkgIG9uIFNP Q0ZQR0EoQXJyaWEgMTApIGJhc2VkIHBsYXRmb3Jtcy4KKwogCiBlbmRjaG9pY2UKIApAQCAtMTE2 OSwxMSArMTE3NiwxMyBAQCBjb25maWcgREVCVUdfUk9DS0NISVBfVUFSVF9QT1JUCiBjb25maWcg REVCVUdfU09DRlBHQV9VQVJUX1BIWVNfQUREUgogCWhleCAiUGh5c2ljYWwgYmFzZSBhZGRyZXNz IG9mIGRlYnVnIFVBUlQiIGlmIERFQlVHX0xMCiAJZGVmYXVsdCAweGZmYzAyMDAwIGlmIERFQlVH X1NPQ0ZQR0FfVUFSVDAKKwlkZWZhdWx0IDB4ZmZjMDIxMDAgaWYgREVCVUdfU09DRlBHQV9VQVJU MQogCWRlcGVuZHMgb24gQVJDSF9TT0NGUEdBCiAKIGNvbmZpZyBERUJVR19TT0NGUEdBX1VBUlRf Q0xPQ0sKIAlpbnQgIlNvQ0ZQR0EgVUFSVCBkZWJ1ZyBjbG9jayIgaWYgREVCVUdfTEwKLQlkZWZh dWx0IDEwMDAwMDAwMAorCWRlZmF1bHQgMTAwMDAwMDAwIGlmIEFSQ0hfU09DRlBHQV9DWUNMT05F NQorCWRlZmF1bHQgIDUwMDAwMDAwIGlmIEFSQ0hfU09DRlBHQV9BUlJJQTEwCiAJZGVwZW5kcyBv biBBUkNIX1NPQ0ZQR0EKIAloZWxwCiAJICBDaG9vc2UgVUFSVCByb290IGNsb2NrLgpkaWZmIC0t Z2l0IGEvaW1hZ2VzL01ha2VmaWxlLnNvY2ZwZ2EgYi9pbWFnZXMvTWFrZWZpbGUuc29jZnBnYQpp bmRleCAyMTgwNGQ5M2RmNzIuLmE3NjRiMWE1ZmUyMiAxMDA2NDQKLS0tIGEvaW1hZ2VzL01ha2Vm aWxlLnNvY2ZwZ2EKKysrIGIvaW1hZ2VzL01ha2VmaWxlLnNvY2ZwZ2EKQEAgLTQsOCArNCwxMSBA QAogCiAjICUuc29jZnBnYWltZyAtIGNvbnZlcnQgaW50byBzb2NmcGdhIGltYWdlCiAjIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KK1NPQ0ZQR0FfSU1BR0VfQVJHUy0kKENPTkZJR19BUkNIX1NPQ0ZQR0FfQVJSSUExMCkgKz0g LXYxCitTT0NGUEdBX0lNQUdFX0FSR1MtJChDT05GSUdfQVJDSF9TT0NGUEdBX0NZQ0xPTkU1KSAr PSAtdjAKKwogcXVpZXRfY21kX3NvY2ZwZ2FfaW1hZ2UgPSBTT0NGUEdBLUlNRyAkQAotICAgICAg Y21kX3NvY2ZwZ2FfaW1hZ2UgPSBzY3JpcHRzL3NvY2ZwZ2FfbWtpbWFnZSAtbyAkQCAkPAorICAg ICAgY21kX3NvY2ZwZ2FfaW1hZ2UgPSBzY3JpcHRzL3NvY2ZwZ2FfbWtpbWFnZSAtbyAkQCAkKFNP Q0ZQR0FfSU1BR0VfQVJHUy15KSAkPAogCiAkKG9iaikvJS5zb2NmcGdhaW1nOiAkKG9iaikvJSBG T1JDRQogCSQoY2FsbCBpZl9jaGFuZ2VkLHNvY2ZwZ2FfaW1hZ2UpCmRpZmYgLS1naXQgYS9zY3Jp cHRzL3NvY2ZwZ2FfeG1sX3RvX2NvbmZpZy5zaCBiL3NjcmlwdHMvc29jZnBnYV94bWxfdG9fY29u ZmlnLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMC4uN2UyMmViYjll OGQ4Ci0tLSAvZGV2L251bGwKKysrIGIvc2NyaXB0cy9zb2NmcGdhX3htbF90b19jb25maWcuc2gK QEAgLTAsMCArMSwxMTcgQEAKKyMhL2Jpbi9iYXNoCisKKyMjIFRPRE86CisjIyAtIHJlYWQgaW4g bXB1Y2xrIGFuZCBub2NjbGssIG11c3QgYmUgY2FsY3VsYXRlZCBieSBoYW5kIGF0IHRoZSBtb21l bnQKKyMjIC0gcmVhZCBpbiBjZmdfZGVkaWNhdGVkX2lvXyosIG11c3QgYmUgY2FsY3VsYXRlZCBi eSBoYW5kIGF0IHRoZSBtb21lbnQKKworaWYgWyAiJCMiIC1sdCAiMiIgXQordGhlbgorICAgIGVj aG8gIlVTQUdFOiAkMCA8Ym9hcmRkaXI+IDxIUFMueG1sPiIKKyAgICBleGl0IDEKK2ZpCisKK2Rp cj0kMQoreG1sPSQyCisKK3BsbF9jb25maWcoKSB7CisgICAgbG9jYWwgc3JjCisgICAgbG9jYWwg dGd0CisgICAgc3JjPSQxCisgICAgdGd0PSQyCisKKyAgICBNQUlOUExMPWBncmVwIG1haW5wbGwg IiRzcmMiIHwgXAorICAgICAgICAgc2VkIC1lICdzL14uKm1haW5wbGxncnBcLi8vZycgfCBcCisg ICAgICAgICBzZWQgLWUgJ3MvXC4vXy9nJyB8IFwKKyAgICAgICAgIHNlZCAtZSAicy8nIHZhbHVl LyAvZyIgfCBcCisgICAgICAgICBzZWQgLWUgInMvJy8gL2ciIHwgXAorICAgICAgICAgc2VkIC1l ICJzIyAgLz4jLCNnIiB8IFwKKyAgICAgICAgIHNlZCAtZSAicy9eL1x0Li9nIiB8CisgICAgICAg ICBzb3J0YAorCisgICAgIyBGSVhNRTogRmluZCBzb2x1dGlvbgorICAgIE1BSU5QTExfRklYTUU9 Ii5tcHVjbGsgPSBGSVhNRSwKKyAgICAubm9jY2xrID0gRklYTUUsIgorCisgICAgUEVSUExMPWBn cmVwIHBlcnBsbCAiJHNyYyIgfCBcCisgICAgICAgIHNlZCAtZSAncy9eLipwZXJwbGxncnBcLi8v ZycgfCBcCisgICAgICAgIHNlZCAtZSAncy9cLi9fL2cnIHwgXAorICAgICAgICBzZWQgLWUgInMv JyB2YWx1ZS8gL2ciIHwgXAorICAgICAgICBzZWQgLWUgInMvJy8gL2ciIHwgXAorICAgICAgICBz ZWQgLWUgInMjICAvPiMsI2ciIHwgXAorICAgICAgICBzZWQgLWUgInMvXi9cdC4vZyIgfAorICAg ICAgICBzb3J0YAorCisgICAgZWNobyAiI2luY2x1ZGUgPG1hY2gvYXJyaWExMC1jbG9jay1tYW5h Z2VyLmg+IiA+ICR0Z3QKKyAgICBlY2hvID4+ICR0Z3QKKyAgICBlY2hvICJzdGF0aWMgc3RydWN0 IGFycmlhMTBfbWFpbnBsbF9jZmcgbWFpbnBsbF9jZmcgPSB7IiA+PiAkdGd0CisgICAgZWNobyAi JE1BSU5QTEwiID4+ICR0Z3QKKyAgICBlY2hvICIkTUFJTlBMTF9GSVhNRSIgPj4gJHRndAorICAg IGVjaG8gIn07IiA+PiAkdGd0CisgICAgZWNobyA+PiAkdGd0CisgICAgZWNobyAic3RhdGljIHN0 cnVjdCBhcnJpYTEwX3BlcnBsbF9jZmcgcGVycGxsX2NmZyA9IHsiID4+ICR0Z3QKKyAgICBlY2hv ICIkUEVSUExMIiA+PiAkdGd0CisgICAgZWNobyAifTsiID4+ICR0Z3QKKworICAgIGRvczJ1bml4 ICR0Z3QKK30KKworcGlubXV4X2NvbmZpZygpIHsKKyAgICBsb2NhbCBzcmMKKyAgICBsb2NhbCB0 Z3QKKyAgICBzcmM9JDEKKyAgICB0Z3Q9JDIKKworICAgIFNIQVJFRD1gZ3JlcCBwaW5tdXhfc2hh cmVkICIkc3JjIiB8IFwKKyAgICAgICAgICAgIHNlZCAtZSAncy9eLipwaW5tdXhfL1thcnJpYTEw X3Bpbm11eF8vZycgfCBcCisgICAgICAgICAgICBzZWQgLWUgInMvXC5zZWwnIHZhbHVlPScvXSA9 IC9nIiB8IFwKKyAgICAgICAgICAgIHNlZCAtZSAicy8nIFwvPi8sL2ciYAorCisgICAgREVESUNB VEVEPWBncmVwIHBpbm11eF9kZWRpY2F0ZWQgIiRzcmMiIHwgXAorICAgICAgICAgICAgc2VkIC1l ICdzL14uKnBpbm11eF8vW2FycmlhMTBfcGlubXV4Xy9nJyB8IFwKKyAgICAgICAgICAgIHNlZCAt ZSAicy9cLnNlbCcgdmFsdWU9Jy9dID0gL2ciIHwgXAorICAgICAgICAgICAgc2VkIC1lICJzLycg XC8+LywvZyJgCisKKyAgICAjIEZJWE1FOiBFaXRoZXIgZmluZCBzb2x1dGlvbiBob3cgdG8gcGFy c2UgdGhlc2UgdmFsdWVzIHRvbyBvciByZXBsYWNlCisgICAgIyBzY3JpcHQgd2l0aCBzb21ldGhp bmcgdGhhdCBnb2VzIG1vcmUgaW4gdGhlIGRpcmVjdGlvbiBvZiBhIHByb2dyYW1taW5nCisgICAg IyBsYW5ndWFnZQorICAgIERFRElDQVRFRF9GSVhNRT0iW2FycmlhMTBfcGluY2ZnX2RlZGljYXRl ZF9pb19iYW5rXSA9IEZJWE1FLAorICAgIFthcnJpYTEwX3BpbmNmZ19kZWRpY2F0ZWRfaW9fMV0g PSBGSVhNRSwKKyAgICBbYXJyaWExMF9waW5jZmdfZGVkaWNhdGVkX2lvXzJdID0gRklYTUUsCisg ICAgW2FycmlhMTBfcGluY2ZnX2RlZGljYXRlZF9pb18zXSA9IEZJWE1FLAorICAgIFthcnJpYTEw X3BpbmNmZ19kZWRpY2F0ZWRfaW9fNF0gPSBGSVhNRSwKKyAgICBbYXJyaWExMF9waW5jZmdfZGVk aWNhdGVkX2lvXzVdID0gRklYTUUsCisgICAgW2FycmlhMTBfcGluY2ZnX2RlZGljYXRlZF9pb182 XSA9IEZJWE1FLAorICAgIFthcnJpYTEwX3BpbmNmZ19kZWRpY2F0ZWRfaW9fN10gPSBGSVhNRSwK KyAgICBbYXJyaWExMF9waW5jZmdfZGVkaWNhdGVkX2lvXzhdID0gRklYTUUsCisgICAgW2Fycmlh MTBfcGluY2ZnX2RlZGljYXRlZF9pb185XSA9IEZJWE1FLAorICAgIFthcnJpYTEwX3BpbmNmZ19k ZWRpY2F0ZWRfaW9fMTBdID0gRklYTUUsCisgICAgW2FycmlhMTBfcGluY2ZnX2RlZGljYXRlZF9p b18xMV0gPSBGSVhNRSwKKyAgICBbYXJyaWExMF9waW5jZmdfZGVkaWNhdGVkX2lvXzEyXSA9IEZJ WE1FLAorICAgIFthcnJpYTEwX3BpbmNmZ19kZWRpY2F0ZWRfaW9fMTNdID0gRklYTUUsCisgICAg W2FycmlhMTBfcGluY2ZnX2RlZGljYXRlZF9pb18xNF0gPSBGSVhNRSwKKyAgICBbYXJyaWExMF9w aW5jZmdfZGVkaWNhdGVkX2lvXzE1XSA9IEZJWE1FLAorICAgIFthcnJpYTEwX3BpbmNmZ19kZWRp Y2F0ZWRfaW9fMTZdID0gRklYTUUsCisgICAgW2FycmlhMTBfcGluY2ZnX2RlZGljYXRlZF9pb18x N10gPSBGSVhNRSIKKworICAgIEZQR0E9YGdyZXAgX2ZwZ2FfaW50ZXJmYWNlX2dycCAiJHNyYyIg fCBcCisgICAgICAgICAgZ3JlcCAtdiAtZSB1c2IgLWUgcGxsX2Nsb2NrX291dCB8IFwKKyAgICAg ICAgICAgIHNlZCAtZSAncy9eLipwaW5tdXhfL1thcnJpYTEwX3Bpbm11eF8vZycgfCBcCisgICAg ICAgICAgICBzZWQgLWUgInMvXC5zZWwnIHZhbHVlPScvXSA9IC9nIiB8IFwKKyAgICAgICAgICAg IHNlZCAtZSAicy8nIFwvPi8sL2ciYAorCisgICAgZWNobyAiI2luY2x1ZGUgPG1hY2gvYXJyaWEx MC1waW5tdXguaD4iID4gJHRndAorICAgIGVjaG8gPj4gJHRndAorICAgIGVjaG8gInN0YXRpYyB1 aW50MzJfdCBwaW5tdXhbXSA9IHsiID4+ICR0Z3QKKyAgICBlY2hvICIkU0hBUkVEIiA+PiAkdGd0 CisgICAgZWNobyAiJERFRElDQVRFRCIgPj4gJHRndAorICAgIGVjaG8gIiRERURJQ0FURURfRklY TUUiID4+ICR0Z3QKKyAgICBlY2hvICIkRlBHQSIgPj4gJHRndAorICAgIGVjaG8gIn07IiA+PiAk dGd0CisgICAgZWNobyA+PiAkdGd0CisKKyAgICBkb3MydW5peCAkdGd0Cit9CisKK3BsbF9jb25m aWcgJHhtbCAkZGlyL3BsbC1jb25maWctYXJyaWExMC5jCisKK3Bpbm11eF9jb25maWcgJHhtbCAk ZGlyL3Bpbm11eC1jb25maWctYXJyaWExMC5jCi0tIApnaXQtc2VyaWVzIDAuOS4xCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpiYXJlYm94IG1haWxpbmcg bGlzdApiYXJlYm94QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5v cmcvbWFpbG1hbi9saXN0aW5mby9iYXJlYm94Cg==