From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mauro Rossi Subject: [PATCH 02/10] drm/amd/display: dc/dce: add DCE6 support Date: Mon, 8 Oct 2018 04:23:36 +0200 Message-ID: <20181008022344.10247-3-issor.oruam@gmail.com> References: <20181008022344.10247-1-issor.oruam@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181008022344.10247-1-issor.oruam-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: harry.wentland-5C7GfCeVMHo@public.gmane.org RENFNiB0YXJnZXRzIGFyZSBhZGRlZCByZXBsaWNhdGluZyBleGlzdGluZyBEQ0U4IGltcGxlbWVu dGF0aW9uLgoKTk9URTogZGNlXzhfMF97ZCxzaF9tYXNrfS5oIGhlYWRlcnMgdXNlZCBpbnN0ZWFk IG9mIGRjZV82XzBfe2Qsc2hfbWFza30uaApvbmx5IHRvIGJ1aWxkIGRjZTYwX3Jlc291cmNlLmMg ZHVlIHRvIG1pc3NpbmcgKl9EQ0U2MCBtYWNyb3MvcmVnaXN0ZXJzL21hc2tzCgpJTVBPUlRBTlQ6 IENvZGluZyBvZiBkY2U2MF9yZXNvdXJjZS5jIHJlcXVpcmVzIHJldmlldyB0byB1bmRlcnN0YW5k CmlmIGRjZV82XzBfe2Qsc2hfbWFza30uaCBzaG91bGQgYmUgdXBkYXRlZCB3aXRoIG1hY3Jvcy9y ZWdpc3RlcnMvbWFza3MKLS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvTWFrZWZp bGUgICAgICAgfCAgICA0ICsKIC4uLi9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlL2RjZV9jbG9ja19z b3VyY2UuYyB8ICAgMTUgKwogZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZTYwL01h a2VmaWxlIHwgICAzNCArCiAuLi4vYW1kL2Rpc3BsYXkvZGMvZGNlNjAvZGNlNjBfaHdfc2VxdWVu Y2VyLmMgfCAgIDgxICsKIC4uLi9hbWQvZGlzcGxheS9kYy9kY2U2MC9kY2U2MF9od19zZXF1ZW5j ZXIuaCB8ICAgMzYgKwogLi4uL2RybS9hbWQvZGlzcGxheS9kYy9kY2U2MC9kY2U2MF9yZXNvdXJj ZS5jIHwgMTM0OCArKysrKysrKysrKysrKysrKwogLi4uL2RybS9hbWQvZGlzcGxheS9kYy9kY2U2 MC9kY2U2MF9yZXNvdXJjZS5oIHwgICA0NyArCiAuLi4vZGlzcGxheS9kYy9kY2U2MC9kY2U2MF90 aW1pbmdfZ2VuZXJhdG9yLmMgfCAgMjQyICsrKwogLi4uL2Rpc3BsYXkvZGMvZGNlNjAvZGNlNjBf dGltaW5nX2dlbmVyYXRvci5oIHwgICAzOSArCiAuLi4vaW5jbHVkZS9hc2ljX3JlZy9kY2UvZGNl XzZfMF9zaF9tYXNrLmggICAgfCAgICA0ICsKIDEwIGZpbGVzIGNoYW5nZWQsIDE4NTAgaW5zZXJ0 aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9k Yy9kY2U2MC9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hbWQv ZGlzcGxheS9kYy9kY2U2MC9kY2U2MF9od19zZXF1ZW5jZXIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2U2MC9kY2U2MF9od19zZXF1ZW5jZXIu aAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2U2 MC9kY2U2MF9yZXNvdXJjZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2Ft ZC9kaXNwbGF5L2RjL2RjZTYwL2RjZTYwX3Jlc291cmNlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlNjAvZGNlNjBfdGltaW5nX2dlbmVyYXRv ci5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2Rj ZTYwL2RjZTYwX3RpbWluZ19nZW5lcmF0b3IuaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvZGlzcGxheS9kYy9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9k Yy9NYWtlZmlsZQppbmRleCBhZWQ1MzhhNGQxYmEuLmQ1ZDVhY2Q1NzU1OSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvZGlzcGxheS9kYy9NYWtlZmlsZQpAQCAtMzYsNiArMzYsMTAgQEAgRENfTElCUyAr PSBkY2UxMTAKIERDX0xJQlMgKz0gZGNlMTAwCiBEQ19MSUJTICs9IGRjZTgwCiAKK2lmZGVmIENP TkZJR19EUk1fQU1EX0RDX1NJCitEQ19MSUJTICs9IGRjZTYwCitlbmRpZgorCiBBTURfREMgPSAk KGFkZHN1ZmZpeCAvTWFrZWZpbGUsICQoYWRkcHJlZml4ICQoRlVMTF9BTURfRElTUExBWV9QQVRI KS9kYy8sJChEQ19MSUJTKSkpCiAKIGluY2x1ZGUgJChBTURfREMpCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlL2RjZV9jbG9ja19zb3VyY2UuYyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2UvZGNlX2Nsb2NrX3NvdXJjZS5jCmluZGV4IGNh MTM3NzU3YTY5ZS4uZDk2Yzk3N2U0NTFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2Rpc3BsYXkvZGMvZGNlL2RjZV9jbG9ja19zb3VyY2UuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2Rpc3BsYXkvZGMvZGNlL2RjZV9jbG9ja19zb3VyY2UuYwpAQCAtNTgwLDYgKzU4MCwxMSBA QCBzdGF0aWMgdWludDMyX3QgZGNlMTEwX2dldF9waXhfY2xrX2RpdmlkZXJzKAogCX0KIAogCXN3 aXRjaCAoY3MtPmN0eC0+ZGNlX3ZlcnNpb24pIHsKKyNpZiBkZWZpbmVkKENPTkZJR19EUk1fQU1E X0RDX1NJKQorCWNhc2UgRENFX1ZFUlNJT05fNl8wOgorCWNhc2UgRENFX1ZFUlNJT05fNl8xOgor CWNhc2UgRENFX1ZFUlNJT05fNl80OgorI2VuZGlmCiAJY2FzZSBEQ0VfVkVSU0lPTl84XzA6CiAJ Y2FzZSBEQ0VfVkVSU0lPTl84XzE6CiAJY2FzZSBEQ0VfVkVSU0lPTl84XzM6CkBAIC05NDEsNiAr OTQ2LDExIEBAIHN0YXRpYyBib29sIGRjZTExMF9wcm9ncmFtX3BpeF9jbGsoCiAJYnBfcGNfcGFy YW1zLnNpZ25hbF90eXBlID0gcGl4X2Nsa19wYXJhbXMtPnNpZ25hbF90eXBlOwogCiAJc3dpdGNo IChjbG9ja19zb3VyY2UtPmN0eC0+ZGNlX3ZlcnNpb24pIHsKKyNpZiBkZWZpbmVkKENPTkZJR19E Uk1fQU1EX0RDX1NJKQorCWNhc2UgRENFX1ZFUlNJT05fNl8wOgorCWNhc2UgRENFX1ZFUlNJT05f Nl8xOgorCWNhc2UgRENFX1ZFUlNJT05fNl80OgorI2VuZGlmCiAJY2FzZSBEQ0VfVkVSU0lPTl84 XzA6CiAJY2FzZSBEQ0VfVkVSU0lPTl84XzE6CiAJY2FzZSBEQ0VfVkVSU0lPTl84XzM6CkBAIC0x Mjk2LDYgKzEzMDYsMTEgQEAgYm9vbCBkY2UxMTBfY2xrX3NyY19jb25zdHJ1Y3QoCiAJCQlmd19p bmZvLmV4dGVybmFsX2Nsb2NrX3NvdXJjZV9mcmVxdWVuY3lfZm9yX2RwOwogCiAJc3dpdGNoIChj bGtfc3JjLT5iYXNlLmN0eC0+ZGNlX3ZlcnNpb24pIHsKKyNpZiBkZWZpbmVkKENPTkZJR19EUk1f QU1EX0RDX1NJKQorCWNhc2UgRENFX1ZFUlNJT05fNl8wOgorCWNhc2UgRENFX1ZFUlNJT05fNl8x OgorCWNhc2UgRENFX1ZFUlNJT05fNl80OgorI2VuZGlmCiAJY2FzZSBEQ0VfVkVSU0lPTl84XzA6 CiAJY2FzZSBEQ0VfVkVSU0lPTl84XzE6CiAJY2FzZSBEQ0VfVkVSU0lPTl84XzM6CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlNjAvTWFrZWZpbGUgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlNjAvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zOWFmZDdjNTlhN2MKLS0tIC9kZXYvbnVsbAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlNjAvTWFrZWZpbGUKQEAgLTAsMCAr MSwzNCBAQAorIworIyBDb3B5cmlnaHQgMjAxNyBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMu CisjCisjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh bnkgcGVyc29uIG9idGFpbmluZyBhCisjIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisjIHRvIGRlYWwgaW4g dGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0 YXRpb24KKyMgdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gs IGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisjIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29m dHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorIyBTb2Z0d2FyZSBpcyBm dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgor IworIyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj ZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorIyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRp b25zIG9mIHRoZSBTb2Z0d2FyZS4KKyMKKyMgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyMgSU1QTElFRCwg SU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC SUxJVFksCisjIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5H RU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorIyBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBB VVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKKyMgT1RIRVIgTElB QklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJ U0UsCisjIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G VFdBUkUgT1IgVEhFIFVTRSBPUgorIyBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisj CisjCisjIE1ha2VmaWxlIGZvciB0aGUgJ2NvbnRyb2xsZXInIHN1Yi1jb21wb25lbnQgb2YgREFM LgorIyBJdCBwcm92aWRlcyB0aGUgY29udHJvbCBhbmQgc3RhdHVzIG9mIEhXIENSVEMgYmxvY2su CisKK0RDRTYwID0gZGNlNjBfdGltaW5nX2dlbmVyYXRvci5vIGRjZTYwX2h3X3NlcXVlbmNlci5v IFwKKwlkY2U2MF9yZXNvdXJjZS5vCisKK0FNRF9EQUxfRENFNjAgPSAkKGFkZHByZWZpeCAkKEFN RERBTFBBVEgpL2RjL2RjZTYwLywkKERDRTYwKSkKKworQU1EX0RJU1BMQVlfRklMRVMgKz0gJChB TURfREFMX0RDRTYwKQorCisKKwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNw bGF5L2RjL2RjZTYwL2RjZTYwX2h3X3NlcXVlbmNlci5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9k aXNwbGF5L2RjL2RjZTYwL2RjZTYwX2h3X3NlcXVlbmNlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uZjA0ZDc3YjhkOGE5Ci0tLSAvZGV2L251bGwKKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZTYwL2RjZTYwX2h3X3NlcXVlbmNlci5jCkBA IC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNSBBZHZhbmNlZCBNaWNybyBEZXZp Y2VzLCBJbmMuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj aGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2Fy ZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisg KiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcg d2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBt ZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNv cGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQor ICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dp bmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhp cyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBv ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRX QVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVY UFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdB UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUg Q09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s IERBTUFHRVMgT1IKKyAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAorICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1Ig SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCisgKiBPVEhFUiBE RUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQXV0aG9yczogQU1ECisgKgorICovCisK KyNpbmNsdWRlICJkbV9zZXJ2aWNlcy5oIgorI2luY2x1ZGUgImRjLmgiCisjaW5jbHVkZSAiY29y ZV90eXBlcy5oIgorI2luY2x1ZGUgImRjZTYwX2h3X3NlcXVlbmNlci5oIgorCisjaW5jbHVkZSAi ZGNlL2RjZV9od3NlcS5oIgorI2luY2x1ZGUgImRjZTExMC9kY2UxMTBfaHdfc2VxdWVuY2VyLmgi CisjaW5jbHVkZSAiZGNlMTAwL2RjZTEwMF9od19zZXF1ZW5jZXIuaCIKKworLyogaW5jbHVkZSBE Q0U4IHJlZ2lzdGVyIGhlYWRlciBmaWxlcyAqLworI2luY2x1ZGUgImRjZS9kY2VfNl8wX2QuaCIK KyNpbmNsdWRlICJkY2UvZGNlXzZfMF9zaF9tYXNrLmgiCisKK3N0cnVjdCBkY2U2MF9od19zZXFf cmVnX29mZnNldHMgeworCXVpbnQzMl90IGNydGM7Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0 IGRjZTYwX2h3X3NlcV9yZWdfb2Zmc2V0cyByZWdfb2Zmc2V0c1tdID0geworeworCS5jcnRjID0g KG1tQ1JUQzBfQ1JUQ19HU0xfQ09OVFJPTCAtIG1tQ1JUQ19HU0xfQ09OVFJPTCksCit9LAorewor CS5jcnRjID0gKG1tQ1JUQzFfQ1JUQ19HU0xfQ09OVFJPTCAtIG1tQ1JUQ19HU0xfQ09OVFJPTCks Cit9LAoreworCS5jcnRjID0gKG1tQ1JUQzJfQ1JUQ19HU0xfQ09OVFJPTCAtIG1tQ1JUQ19HU0xf Q09OVFJPTCksCit9LAoreworCS5jcnRjID0gKG1tQ1JUQzNfQ1JUQ19HU0xfQ09OVFJPTCAtIG1t Q1JUQ19HU0xfQ09OVFJPTCksCit9LAoreworCS5jcnRjID0gKG1tQ1JUQzRfQ1JUQ19HU0xfQ09O VFJPTCAtIG1tQ1JUQ19HU0xfQ09OVFJPTCksCit9LAoreworCS5jcnRjID0gKG1tQ1JUQzVfQ1JU Q19HU0xfQ09OVFJPTCAtIG1tQ1JUQ19HU0xfQ09OVFJPTCksCit9Cit9OworCisjZGVmaW5lIEhX X1JFR19DUlRDKHJlZywgaWQpXAorCShyZWcgKyByZWdfb2Zmc2V0c1tpZF0uY3J0YykKKworLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKyAqIFByaXZhdGUgZGVmaW5pdGlvbnMKKyAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKipQSVBFX0NPTlRST0wq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwordm9pZCBkY2U2MF9od19zZXF1 ZW5jZXJfY29uc3RydWN0KHN0cnVjdCBkYyAqZGMpCit7CisJZGNlMTEwX2h3X3NlcXVlbmNlcl9j b25zdHJ1Y3QoZGMpOworCisJZGMtPmh3c3MuZW5hYmxlX2Rpc3BsYXlfcG93ZXJfZ2F0aW5nID0g ZGNlMTAwX2VuYWJsZV9kaXNwbGF5X3Bvd2VyX2dhdGluZzsKKwlkYy0+aHdzcy5waXBlX2NvbnRy b2xfbG9jayA9IGRjZV9waXBlX2NvbnRyb2xfbG9jazsKKwlkYy0+aHdzcy5zZXRfYmFuZHdpZHRo ID0gZGNlMTAwX3NldF9iYW5kd2lkdGg7Cit9CisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvZGlzcGxheS9kYy9kY2U2MC9kY2U2MF9od19zZXF1ZW5jZXIuaCBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvZGlzcGxheS9kYy9kY2U2MC9kY2U2MF9od19zZXF1ZW5jZXIuaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU3Y2U2M2IxZjc1YQotLS0gL2Rldi9udWxs CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2U2MC9kY2U2MF9od19zZXF1 ZW5jZXIuaApAQCAtMCwwICsxLDM2IEBACisvKgorKiBDb3B5cmlnaHQgMjAxMi0xNSBBZHZhbmNl ZCBNaWNybyBEZXZpY2VzLCBJbmMuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2Yg dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv ZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29w eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFu ZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0 byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5v dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICog YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgor ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg QU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNI QUxMCisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZP UiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKKyAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBB TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAorICogQVJJU0lORyBGUk9N LCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9S CisgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQXV0aG9yczogQU1E CisgKgorICovCisKKyNpZm5kZWYgX19EQ19IV1NTX0RDRTYwX0hfXworI2RlZmluZSBfX0RDX0hX U1NfRENFNjBfSF9fCisKKyNpbmNsdWRlICJjb3JlX3R5cGVzLmgiCisKK3N0cnVjdCBkYzsKKwor dm9pZCBkY2U2MF9od19zZXF1ZW5jZXJfY29uc3RydWN0KHN0cnVjdCBkYyAqZGMpOworCisjZW5k aWYgLyogX19EQ19IV1NTX0RDRTYwX0hfXyAqLworCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2Rpc3BsYXkvZGMvZGNlNjAvZGNlNjBfcmVzb3VyY2UuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvZGlzcGxheS9kYy9kY2U2MC9kY2U2MF9yZXNvdXJjZS5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uM2M3NTY4ODExNjk3Ci0tLSAvZGV2L251bGwKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZTYwL2RjZTYwX3Jlc291cmNlLmMKQEAg LTAsMCArMSwxMzQ4IEBACisvKgorICogQ29weXJpZ2h0IDIwMTItMTUgQWR2YW5jZWQgTWljcm8g RGV2aWNlcywgSW5jLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUg b2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29m dHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIp LAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVk aW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlm eSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2Vs bCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0 aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5k IHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3Bp ZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBT T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E LCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI RSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICog VEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJQUJMRSBGT1IgQU5ZIENM QUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9O IE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9G IE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgorICogT1RI RVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIEF1dGhvcnM6IEFNRAorICoKKyAq LworCisjaW5jbHVkZSAiZGNlL2RjZV84XzBfZC5oIgorI2luY2x1ZGUgImRjZS9kY2VfOF8wX3No X21hc2suaCIKKworI2luY2x1ZGUgImRtX3NlcnZpY2VzLmgiCisKKyNpbmNsdWRlICJsaW5rX2Vu Y29kZXIuaCIKKyNpbmNsdWRlICJzdHJlYW1fZW5jb2Rlci5oIgorCisjaW5jbHVkZSAicmVzb3Vy Y2UuaCIKKyNpbmNsdWRlICJpbmNsdWRlL2lycV9zZXJ2aWNlX2ludGVyZmFjZS5oIgorI2luY2x1 ZGUgImlycS9kY2U2MC9pcnFfc2VydmljZV9kY2U2MC5oIgorI2luY2x1ZGUgImRjZTExMC9kY2Ux MTBfdGltaW5nX2dlbmVyYXRvci5oIgorI2luY2x1ZGUgImRjZTExMC9kY2UxMTBfcmVzb3VyY2Uu aCIKKyNpbmNsdWRlICJkY2U2MC9kY2U2MF90aW1pbmdfZ2VuZXJhdG9yLmgiCisjaW5jbHVkZSAi ZGNlL2RjZV9tZW1faW5wdXQuaCIKKyNpbmNsdWRlICJkY2UvZGNlX2xpbmtfZW5jb2Rlci5oIgor I2luY2x1ZGUgImRjZS9kY2Vfc3RyZWFtX2VuY29kZXIuaCIKKyNpbmNsdWRlICJkY2UvZGNlX21l bV9pbnB1dC5oIgorI2luY2x1ZGUgImRjZS9kY2VfaXBwLmgiCisjaW5jbHVkZSAiZGNlL2RjZV90 cmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJkY2UvZGNlX29wcC5oIgorI2luY2x1ZGUgImRjZS9kY2Vf Y2xvY2tzLmgiCisjaW5jbHVkZSAiZGNlL2RjZV9jbG9ja19zb3VyY2UuaCIKKyNpbmNsdWRlICJk Y2UvZGNlX2F1ZGlvLmgiCisjaW5jbHVkZSAiZGNlL2RjZV9od3NlcS5oIgorI2luY2x1ZGUgImRj ZTYwL2RjZTYwX2h3X3NlcXVlbmNlci5oIgorI2luY2x1ZGUgImRjZTEwMC9kY2UxMDBfcmVzb3Vy Y2UuaCIKKworI2luY2x1ZGUgInJlZ19oZWxwZXIuaCIKKworI2luY2x1ZGUgImRjZS9kY2VfZG1j dS5oIgorI2luY2x1ZGUgImRjZS9kY2VfYXV4LmgiCisjaW5jbHVkZSAiZGNlL2RjZV9hYm0uaCIK Ky8qIFRPRE8gcmVtb3ZlIHRoaXMgaW5jbHVkZSAqLworCisjaWZuZGVmIG1tTUNfSFVCX1JEUkVR X0RNSUZfTElNSVQKKyNpbmNsdWRlICJnbWMvZ21jXzZfMF9kLmgiCisjaW5jbHVkZSAiZ21jL2dt Y182XzBfc2hfbWFzay5oIgorI2VuZGlmCisKKyNpZm5kZWYgbW1EUF9EUEhZX0lOVEVSTkFMX0NU UkwKKyNkZWZpbmUgbW1EUF9EUEhZX0lOVEVSTkFMX0NUUkwgICAgICAgICAgICAgICAgICAgICAg ICAgMHgxQ0RFCisjZGVmaW5lIG1tRFAwX0RQX0RQSFlfSU5URVJOQUxfQ1RSTCAgICAgICAgICAg ICAgICAgICAgIDB4MUNERQorI2RlZmluZSBtbURQMV9EUF9EUEhZX0lOVEVSTkFMX0NUUkwgICAg ICAgICAgICAgICAgICAgICAweDFGREUKKyNkZWZpbmUgbW1EUDJfRFBfRFBIWV9JTlRFUk5BTF9D VFJMICAgICAgICAgICAgICAgICAgICAgMHg0MkRFCisjZGVmaW5lIG1tRFAzX0RQX0RQSFlfSU5U RVJOQUxfQ1RSTCAgICAgICAgICAgICAgICAgICAgIDB4NDVERQorI2RlZmluZSBtbURQNF9EUF9E UEhZX0lOVEVSTkFMX0NUUkwgICAgICAgICAgICAgICAgICAgICAweDQ4REUKKyNkZWZpbmUgbW1E UDVfRFBfRFBIWV9JTlRFUk5BTF9DVFJMICAgICAgICAgICAgICAgICAgICAgMHg0QkRFCisjZGVm aW5lIG1tRFA2X0RQX0RQSFlfSU5URVJOQUxfQ1RSTCAgICAgICAgICAgICAgICAgICAgIDB4NEVE RQorI2VuZGlmCisKKworI2lmbmRlZiBtbUJJT1NfU0NSQVRDSF8yCisJI2RlZmluZSBtbUJJT1Nf U0NSQVRDSF8yIDB4MDVDQgorCSNkZWZpbmUgbW1CSU9TX1NDUkFUQ0hfNiAweDA1Q0YKKyNlbmRp ZgorCisjaWZuZGVmIG1tRFBfRFBIWV9GQVNUX1RSQUlOSU5HCisJI2RlZmluZSBtbURQX0RQSFlf RkFTVF9UUkFJTklORyAgICAgICAgICAgICAgICAgICAgICAgICAweDFDQ0UKKwkjZGVmaW5lIG1t RFAwX0RQX0RQSFlfRkFTVF9UUkFJTklORyAgICAgICAgICAgICAgICAgICAgIDB4MUNDRQorCSNk ZWZpbmUgbW1EUDFfRFBfRFBIWV9GQVNUX1RSQUlOSU5HICAgICAgICAgICAgICAgICAgICAgMHgx RkNFCisJI2RlZmluZSBtbURQMl9EUF9EUEhZX0ZBU1RfVFJBSU5JTkcgICAgICAgICAgICAgICAg ICAgICAweDQyQ0UKKwkjZGVmaW5lIG1tRFAzX0RQX0RQSFlfRkFTVF9UUkFJTklORyAgICAgICAg ICAgICAgICAgICAgIDB4NDVDRQorCSNkZWZpbmUgbW1EUDRfRFBfRFBIWV9GQVNUX1RSQUlOSU5H ICAgICAgICAgICAgICAgICAgICAgMHg0OENFCisJI2RlZmluZSBtbURQNV9EUF9EUEhZX0ZBU1Rf VFJBSU5JTkcgICAgICAgICAgICAgICAgICAgICAweDRCQ0UKKwkjZGVmaW5lIG1tRFA2X0RQX0RQ SFlfRkFTVF9UUkFJTklORyAgICAgICAgICAgICAgICAgICAgIDB4NEVDRQorI2VuZGlmCisKKwor I2lmbmRlZiBtbUhQRF9EQ19IUERfQ09OVFJPTAorCSNkZWZpbmUgbW1IUERfRENfSFBEX0NPTlRS T0wgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxODlBCisJI2RlZmluZSBtbUhQRDBfRENf SFBEX0NPTlRST0wgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4OUEKKwkjZGVmaW5lIG1t SFBEMV9EQ19IUERfQ09OVFJPTCAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MThBMgorCSNk ZWZpbmUgbW1IUEQyX0RDX0hQRF9DT05UUk9MICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgx OEFBCisJI2RlZmluZSBtbUhQRDNfRENfSFBEX0NPTlRST0wgICAgICAgICAgICAgICAgICAgICAg ICAgICAweDE4QjIKKwkjZGVmaW5lIG1tSFBENF9EQ19IUERfQ09OVFJPTCAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4MThCQQorCSNkZWZpbmUgbW1IUEQ1X0RDX0hQRF9DT05UUk9MICAgICAg ICAgICAgICAgICAgICAgICAgICAgMHgxOEMyCisjZW5kaWYKKworI2RlZmluZSBEQ0UxMV9ESUdf RkVfQ05UTCAweDRhMDAKKyNkZWZpbmUgRENFMTFfRElHX0JFX0NOVEwgMHg0YTQ3CisjZGVmaW5l IERDRTExX0RQX1NFQyAweDRhYzMKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkY2UxMTBfdGltaW5n X2dlbmVyYXRvcl9vZmZzZXRzIGRjZTYwX3RnX29mZnNldHNbXSA9IHsKKwkJeworCQkJLmNydGMg PSAobW1DUlRDMF9DUlRDX0NPTlRST0wgLSBtbUNSVENfQ09OVFJPTCksCisJCQkuZGNwID0gICht bUdSUEhfQ09OVFJPTCAtIG1tR1JQSF9DT05UUk9MKSwKKwkJCS5kbWlmID0gKG1tRE1JRl9QRzBf RFBHX1dBVEVSTUFSS19NQVNLX0NPTlRST0wKKwkJCQkJLSBtbURQR19XQVRFUk1BUktfTUFTS19D T05UUk9MKSwKKwkJfSwKKwkJeworCQkJLmNydGMgPSAobW1DUlRDMV9DUlRDX0NPTlRST0wgLSBt bUNSVENfQ09OVFJPTCksCisJCQkuZGNwID0gKG1tRENQMV9HUlBIX0NPTlRST0wgLSBtbUdSUEhf Q09OVFJPTCksCisJCQkuZG1pZiA9IChtbURNSUZfUEcxX0RQR19XQVRFUk1BUktfTUFTS19DT05U Uk9MCisJCQkJCS0gbW1EUEdfV0FURVJNQVJLX01BU0tfQ09OVFJPTCksCisJCX0sCisJCXsKKwkJ CS5jcnRjID0gKG1tQ1JUQzJfQ1JUQ19DT05UUk9MIC0gbW1DUlRDX0NPTlRST0wpLAorCQkJLmRj cCA9IChtbURDUDJfR1JQSF9DT05UUk9MIC0gbW1HUlBIX0NPTlRST0wpLAorCQkJLmRtaWYgPSAo bW1ETUlGX1BHMl9EUEdfV0FURVJNQVJLX01BU0tfQ09OVFJPTAorCQkJCQktIG1tRFBHX1dBVEVS TUFSS19NQVNLX0NPTlRST0wpLAorCQl9LAorCQl7CisJCQkuY3J0YyA9IChtbUNSVEMzX0NSVENf Q09OVFJPTCAtIG1tQ1JUQ19DT05UUk9MKSwKKwkJCS5kY3AgPSAobW1EQ1AzX0dSUEhfQ09OVFJP TCAtIG1tR1JQSF9DT05UUk9MKSwKKwkJCS5kbWlmID0gKG1tRE1JRl9QRzNfRFBHX1dBVEVSTUFS S19NQVNLX0NPTlRST0wKKwkJCQkJLSBtbURQR19XQVRFUk1BUktfTUFTS19DT05UUk9MKSwKKwkJ fSwKKwkJeworCQkJLmNydGMgPSAobW1DUlRDNF9DUlRDX0NPTlRST0wgLSBtbUNSVENfQ09OVFJP TCksCisJCQkuZGNwID0gKG1tRENQNF9HUlBIX0NPTlRST0wgLSBtbUdSUEhfQ09OVFJPTCksCisJ CQkuZG1pZiA9IChtbURNSUZfUEc0X0RQR19XQVRFUk1BUktfTUFTS19DT05UUk9MCisJCQkJCS0g bW1EUEdfV0FURVJNQVJLX01BU0tfQ09OVFJPTCksCisJCX0sCisJCXsKKwkJCS5jcnRjID0gKG1t Q1JUQzVfQ1JUQ19DT05UUk9MIC0gbW1DUlRDX0NPTlRST0wpLAorCQkJLmRjcCA9IChtbURDUDVf R1JQSF9DT05UUk9MIC0gbW1HUlBIX0NPTlRST0wpLAorCQkJLmRtaWYgPSAobW1ETUlGX1BHNV9E UEdfV0FURVJNQVJLX01BU0tfQ09OVFJPTAorCQkJCQktIG1tRFBHX1dBVEVSTUFSS19NQVNLX0NP TlRST0wpLAorCQl9Cit9OworCisvKiBzZXQgcmVnaXN0ZXIgb2Zmc2V0ICovCisjZGVmaW5lIFNS KHJlZ19uYW1lKVwKKwkucmVnX25hbWUgPSBtbSAjIyByZWdfbmFtZQorCisvKiBzZXQgcmVnaXN0 ZXIgb2Zmc2V0IHdpdGggaW5zdGFuY2UgKi8KKyNkZWZpbmUgU1JJKHJlZ19uYW1lLCBibG9jaywg aWQpXAorCS5yZWdfbmFtZSA9IG1tICMjIGJsb2NrICMjIGlkICMjIF8gIyMgcmVnX25hbWUKKwor CitzdGF0aWMgY29uc3Qgc3RydWN0IGRjY2dfcmVnaXN0ZXJzIGRpc3BfY2xrX3JlZ3MgPSB7CisJ CUNMS19DT01NT05fUkVHX0xJU1RfRENFX0JBU0UoKQorfTsKKworc3RhdGljIGNvbnN0IHN0cnVj dCBkY2NnX3NoaWZ0IGRpc3BfY2xrX3NoaWZ0ID0geworCQlDTEtfQ09NTU9OX01BU0tfU0hfTElT VF9EQ0VfQ09NTU9OX0JBU0UoX19TSElGVCkKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGNj Z19tYXNrIGRpc3BfY2xrX21hc2sgPSB7CisJCUNMS19DT01NT05fTUFTS19TSF9MSVNUX0RDRV9D T01NT05fQkFTRShfTUFTSykKK307CisKKyNkZWZpbmUgaXBwX3JlZ3MoaWQpXAorW2lkXSA9IHtc CisJCUlQUF9DT01NT05fUkVHX0xJU1RfRENFX0JBU0UoaWQpXAorfQorCitzdGF0aWMgY29uc3Qg c3RydWN0IGRjZV9pcHBfcmVnaXN0ZXJzIGlwcF9yZWdzW10gPSB7CisJCWlwcF9yZWdzKDApLAor CQlpcHBfcmVncygxKSwKKwkJaXBwX3JlZ3MoMiksCisJCWlwcF9yZWdzKDMpLAorCQlpcHBfcmVn cyg0KSwKKwkJaXBwX3JlZ3MoNSkKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGNlX2lwcF9z aGlmdCBpcHBfc2hpZnQgPSB7CisJCUlQUF9DT01NT05fTUFTS19TSF9MSVNUX0RDRV9DT01NT05f QkFTRShfX1NISUZUKQorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkY2VfaXBwX21hc2sgaXBw X21hc2sgPSB7CisJCUlQUF9DT01NT05fTUFTS19TSF9MSVNUX0RDRV9DT01NT05fQkFTRShfTUFT SykKK307CisKKyNkZWZpbmUgdHJhbnNmb3JtX3JlZ3MoaWQpXAorW2lkXSA9IHtcCisJCVhGTV9D T01NT05fUkVHX0xJU1RfRENFODAoaWQpXAorfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRjZV90 cmFuc2Zvcm1fcmVnaXN0ZXJzIHhmbV9yZWdzW10gPSB7CisJCXRyYW5zZm9ybV9yZWdzKDApLAor CQl0cmFuc2Zvcm1fcmVncygxKSwKKwkJdHJhbnNmb3JtX3JlZ3MoMiksCisJCXRyYW5zZm9ybV9y ZWdzKDMpLAorCQl0cmFuc2Zvcm1fcmVncyg0KSwKKwkJdHJhbnNmb3JtX3JlZ3MoNSkKK307CisK K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGNlX3RyYW5zZm9ybV9zaGlmdCB4Zm1fc2hpZnQgPSB7CisJ CVhGTV9DT01NT05fTUFTS19TSF9MSVNUX0RDRTgwKF9fU0hJRlQpCit9OworCitzdGF0aWMgY29u c3Qgc3RydWN0IGRjZV90cmFuc2Zvcm1fbWFzayB4Zm1fbWFzayA9IHsKKwkJWEZNX0NPTU1PTl9N QVNLX1NIX0xJU1RfRENFODAoX01BU0spCit9OworCisjZGVmaW5lIGF1eF9yZWdzKGlkKVwKK1tp ZF0gPSB7XAorCUFVWF9SRUdfTElTVChpZClcCit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGNl MTEwX2xpbmtfZW5jX2F1eF9yZWdpc3RlcnMgbGlua19lbmNfYXV4X3JlZ3NbXSA9IHsKKwlhdXhf cmVncygwKSwKKwlhdXhfcmVncygxKSwKKwlhdXhfcmVncygyKSwKKwlhdXhfcmVncygzKSwKKwlh dXhfcmVncyg0KSwKKwlhdXhfcmVncyg1KQorfTsKKworI2RlZmluZSBocGRfcmVncyhpZClcCitb aWRdID0ge1wKKwlIUERfUkVHX0xJU1QoaWQpXAorfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRj ZTExMF9saW5rX2VuY19ocGRfcmVnaXN0ZXJzIGxpbmtfZW5jX2hwZF9yZWdzW10gPSB7CisJCWhw ZF9yZWdzKDApLAorCQlocGRfcmVncygxKSwKKwkJaHBkX3JlZ3MoMiksCisJCWhwZF9yZWdzKDMp LAorCQlocGRfcmVncyg0KSwKKwkJaHBkX3JlZ3MoNSkKK307CisKKyNkZWZpbmUgbGlua19yZWdz KGlkKVwKK1tpZF0gPSB7XAorCUxFX0RDRTgwX1JFR19MSVNUKGlkKVwKK30KKworc3RhdGljIGNv bnN0IHN0cnVjdCBkY2UxMTBfbGlua19lbmNfcmVnaXN0ZXJzIGxpbmtfZW5jX3JlZ3NbXSA9IHsK KwlsaW5rX3JlZ3MoMCksCisJbGlua19yZWdzKDEpLAorCWxpbmtfcmVncygyKSwKKwlsaW5rX3Jl Z3MoMyksCisJbGlua19yZWdzKDQpLAorCWxpbmtfcmVncyg1KSwKKwlsaW5rX3JlZ3MoNiksCit9 OworCisjZGVmaW5lIHN0cmVhbV9lbmNfcmVncyhpZClcCitbaWRdID0ge1wKKwlTRV9DT01NT05f UkVHX0xJU1RfRENFX0JBU0UoaWQpLFwKKwkuQUZNVF9DTlRMID0gMCxcCit9CisKK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZGNlMTEwX3N0cmVhbV9lbmNfcmVnaXN0ZXJzIHN0cmVhbV9lbmNfcmVnc1td ID0geworCXN0cmVhbV9lbmNfcmVncygwKSwKKwlzdHJlYW1fZW5jX3JlZ3MoMSksCisJc3RyZWFt X2VuY19yZWdzKDIpLAorCXN0cmVhbV9lbmNfcmVncygzKSwKKwlzdHJlYW1fZW5jX3JlZ3MoNCks CisJc3RyZWFtX2VuY19yZWdzKDUpLAorCXN0cmVhbV9lbmNfcmVncyg2KQorfTsKKworc3RhdGlj IGNvbnN0IHN0cnVjdCBkY2Vfc3RyZWFtX2VuY29kZXJfc2hpZnQgc2Vfc2hpZnQgPSB7CisJCVNF X0NPTU1PTl9NQVNLX1NIX0xJU1RfRENFODBfMTAwKF9fU0hJRlQpCit9OworCitzdGF0aWMgY29u c3Qgc3RydWN0IGRjZV9zdHJlYW1fZW5jb2Rlcl9tYXNrIHNlX21hc2sgPSB7CisJCVNFX0NPTU1P Tl9NQVNLX1NIX0xJU1RfRENFODBfMTAwKF9NQVNLKQorfTsKKworI2RlZmluZSBvcHBfcmVncyhp ZClcCitbaWRdID0ge1wKKwlPUFBfRENFXzgwX1JFR19MSVNUKGlkKSxcCit9CisKK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZGNlX29wcF9yZWdpc3RlcnMgb3BwX3JlZ3NbXSA9IHsKKwlvcHBfcmVncygw KSwKKwlvcHBfcmVncygxKSwKKwlvcHBfcmVncygyKSwKKwlvcHBfcmVncygzKSwKKwlvcHBfcmVn cyg0KSwKKwlvcHBfcmVncyg1KQorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkY2Vfb3BwX3No aWZ0IG9wcF9zaGlmdCA9IHsKKwlPUFBfQ09NTU9OX01BU0tfU0hfTElTVF9EQ0VfODAoX19TSElG VCkKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGNlX29wcF9tYXNrIG9wcF9tYXNrID0gewor CU9QUF9DT01NT05fTUFTS19TSF9MSVNUX0RDRV84MChfTUFTSykKK307CisKKyNkZWZpbmUgYXV4 X2VuZ2luZV9yZWdzKGlkKVwKK1tpZF0gPSB7XAorCUFVWF9DT01NT05fUkVHX0xJU1QoaWQpLCBc CisJLkFVWF9SRVNFVF9NQVNLID0gMCBcCit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGNlMTEw X2F1eF9yZWdpc3RlcnMgYXV4X2VuZ2luZV9yZWdzW10gPSB7CisJCWF1eF9lbmdpbmVfcmVncygw KSwKKwkJYXV4X2VuZ2luZV9yZWdzKDEpLAorCQlhdXhfZW5naW5lX3JlZ3MoMiksCisJCWF1eF9l bmdpbmVfcmVncygzKSwKKwkJYXV4X2VuZ2luZV9yZWdzKDQpLAorCQlhdXhfZW5naW5lX3JlZ3Mo NSkKK307CisKKyNkZWZpbmUgYXVkaW9fcmVncyhpZClcCitbaWRdID0ge1wKKwlBVURfQ09NTU9O X1JFR19MSVNUKGlkKVwKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkY2VfYXVkaW9fcmVnaXN0 ZXJzIGF1ZGlvX3JlZ3NbXSA9IHsKKwlhdWRpb19yZWdzKDApLAorCWF1ZGlvX3JlZ3MoMSksCisJ YXVkaW9fcmVncygyKSwKKwlhdWRpb19yZWdzKDMpLAorCWF1ZGlvX3JlZ3MoNCksCisJYXVkaW9f cmVncyg1KSwKKwlhdWRpb19yZWdzKDYpLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkY2Vf YXVkaW9fc2hpZnQgYXVkaW9fc2hpZnQgPSB7CisJCUFVRF9DT01NT05fTUFTS19TSF9MSVNUKF9f U0hJRlQpCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGRjZV9hZHVpb19tYXNrIGF1ZGlvX21h c2sgPSB7CisJCUFVRF9DT01NT05fTUFTS19TSF9MSVNUKF9NQVNLKQorfTsKKworI2RlZmluZSBj bGtfc3JjX3JlZ3MoaWQpXAorW2lkXSA9IHtcCisJQ1NfQ09NTU9OX1JFR19MSVNUX0RDRV84MChp ZCksXAorfQorCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGNlMTEwX2Nsa19zcmNfcmVncyBjbGtf c3JjX3JlZ3NbXSA9IHsKKwljbGtfc3JjX3JlZ3MoMCksCisJY2xrX3NyY19yZWdzKDEpLAorCWNs a19zcmNfcmVncygyKQorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkY2UxMTBfY2xrX3NyY19z aGlmdCBjc19zaGlmdCA9IHsKKwkJQ1NfQ09NTU9OX01BU0tfU0hfTElTVF9EQ0VfQ09NTU9OX0JB U0UoX19TSElGVCkKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGNlMTEwX2Nsa19zcmNfbWFz ayBjc19tYXNrID0geworCQlDU19DT01NT05fTUFTS19TSF9MSVNUX0RDRV9DT01NT05fQkFTRShf TUFTSykKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmlvc19yZWdpc3RlcnMgYmlvc19yZWdz ID0geworCS5CSU9TX1NDUkFUQ0hfNiA9IG1tQklPU19TQ1JBVENIXzYKK307CisKK3N0YXRpYyBj b25zdCBzdHJ1Y3QgcmVzb3VyY2VfY2FwcyByZXNfY2FwID0geworCQkubnVtX3RpbWluZ19nZW5l cmF0b3IgPSA2LAorCQkubnVtX2F1ZGlvID0gNiwKKwkJLm51bV9zdHJlYW1fZW5jb2RlciA9IDYs CisJCS5udW1fcGxsID0gMiwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVzb3VyY2VfY2Fw cyByZXNfY2FwXzYxID0geworCQkubnVtX3RpbWluZ19nZW5lcmF0b3IgPSA0LAorCQkubnVtX2F1 ZGlvID0gNiwKKwkJLm51bV9zdHJlYW1fZW5jb2RlciA9IDYsCisJCS5udW1fcGxsID0gMiwKK307 CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVzb3VyY2VfY2FwcyByZXNfY2FwXzY0ID0geworCQku bnVtX3RpbWluZ19nZW5lcmF0b3IgPSAyLAorCQkubnVtX2F1ZGlvID0gMiwKKwkJLm51bV9zdHJl YW1fZW5jb2RlciA9IDIsCisJCS5udW1fcGxsID0gMiwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZGNlX2RtY3VfcmVnaXN0ZXJzIGRtY3VfcmVncyA9IHsKKwkJRE1DVV9EQ0U4MF9SRUdfTElT VCgpCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGRjZV9kbWN1X3NoaWZ0IGRtY3Vfc2hpZnQg PSB7CisJCURNQ1VfTUFTS19TSF9MSVNUX0RDRTgwKF9fU0hJRlQpCit9OworCitzdGF0aWMgY29u c3Qgc3RydWN0IGRjZV9kbWN1X21hc2sgZG1jdV9tYXNrID0geworCQlETUNVX01BU0tfU0hfTElT VF9EQ0U4MChfTUFTSykKK307CitzdGF0aWMgY29uc3Qgc3RydWN0IGRjZV9hYm1fcmVnaXN0ZXJz IGFibV9yZWdzID0geworCQlBQk1fRENFMTEwX0NPTU1PTl9SRUdfTElTVCgpCit9OworCitzdGF0 aWMgY29uc3Qgc3RydWN0IGRjZV9hYm1fc2hpZnQgYWJtX3NoaWZ0ID0geworCQlBQk1fTUFTS19T SF9MSVNUX0RDRTExMChfX1NISUZUKQorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkY2VfYWJt X21hc2sgYWJtX21hc2sgPSB7CisJCUFCTV9NQVNLX1NIX0xJU1RfRENFMTEwKF9NQVNLKQorfTsK KworI2RlZmluZSBDVFggIGN0eAorI2RlZmluZSBSRUcocmVnKSBtbSAjIyByZWcKKworI2lmbmRl ZiBtbUNDX0RDX0hETUlfU1RSQVBTCisjZGVmaW5lIG1tQ0NfRENfSERNSV9TVFJBUFMgMHgxOTE4 CisjZGVmaW5lIENDX0RDX0hETUlfU1RSQVBTX19IRE1JX0RJU0FCTEVfTUFTSyAweDQwCisjZGVm aW5lIENDX0RDX0hETUlfU1RSQVBTX19IRE1JX0RJU0FCTEVfX1NISUZUIDB4NgorI2RlZmluZSBD Q19EQ19IRE1JX1NUUkFQU19fQVVESU9fU1RSRUFNX05VTUJFUl9NQVNLIDB4NzAwCisjZGVmaW5l IENDX0RDX0hETUlfU1RSQVBTX19BVURJT19TVFJFQU1fTlVNQkVSX19TSElGVCAweDgKKyNlbmRp ZgorCitzdGF0aWMgdm9pZCByZWFkX2RjZV9zdHJhcHMoCisJc3RydWN0IGRjX2NvbnRleHQgKmN0 eCwKKwlzdHJ1Y3QgcmVzb3VyY2Vfc3RyYXBzICpzdHJhcHMpCit7CisJUkVHX0dFVF8yKENDX0RD X0hETUlfU1RSQVBTLAorCQkJSERNSV9ESVNBQkxFLCAmc3RyYXBzLT5oZG1pX2Rpc2FibGUsCisJ CQlBVURJT19TVFJFQU1fTlVNQkVSLCAmc3RyYXBzLT5hdWRpb19zdHJlYW1fbnVtYmVyKTsKKwor CVJFR19HRVQoRENfUElOU1RSQVBTLCBEQ19QSU5TVFJBUFNfQVVESU8sICZzdHJhcHMtPmRjX3Bp bnN0cmFwc19hdWRpbyk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgYXVkaW8gKmNyZWF0ZV9hdWRpbygK KwkJc3RydWN0IGRjX2NvbnRleHQgKmN0eCwgdW5zaWduZWQgaW50IGluc3QpCit7CisJcmV0dXJu IGRjZV9hdWRpb19jcmVhdGUoY3R4LCBpbnN0LAorCQkJJmF1ZGlvX3JlZ3NbaW5zdF0sICZhdWRp b19zaGlmdCwgJmF1ZGlvX21hc2spOworfQorCitzdGF0aWMgc3RydWN0IHRpbWluZ19nZW5lcmF0 b3IgKmRjZTYwX3RpbWluZ19nZW5lcmF0b3JfY3JlYXRlKAorCQlzdHJ1Y3QgZGNfY29udGV4dCAq Y3R4LAorCQl1aW50MzJfdCBpbnN0YW5jZSwKKwkJY29uc3Qgc3RydWN0IGRjZTExMF90aW1pbmdf Z2VuZXJhdG9yX29mZnNldHMgKm9mZnNldHMpCit7CisJc3RydWN0IGRjZTExMF90aW1pbmdfZ2Vu ZXJhdG9yICp0ZzExMCA9CisJCWt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBkY2UxMTBfdGltaW5nX2dl bmVyYXRvciksIEdGUF9LRVJORUwpOworCisJaWYgKCF0ZzExMCkKKwkJcmV0dXJuIE5VTEw7CisK KwlkY2U2MF90aW1pbmdfZ2VuZXJhdG9yX2NvbnN0cnVjdCh0ZzExMCwgY3R4LCBpbnN0YW5jZSwg b2Zmc2V0cyk7CisJcmV0dXJuICZ0ZzExMC0+YmFzZTsKK30KKworc3RhdGljIHN0cnVjdCBvdXRw dXRfcGl4ZWxfcHJvY2Vzc29yICpkY2U2MF9vcHBfY3JlYXRlKAorCXN0cnVjdCBkY19jb250ZXh0 ICpjdHgsCisJdWludDMyX3QgaW5zdCkKK3sKKwlzdHJ1Y3QgZGNlMTEwX29wcCAqb3BwID0KKwkJ a3phbGxvYyhzaXplb2Yoc3RydWN0IGRjZTExMF9vcHApLCBHRlBfS0VSTkVMKTsKKworCWlmICgh b3BwKQorCQlyZXR1cm4gTlVMTDsKKworCWRjZTExMF9vcHBfY29uc3RydWN0KG9wcCwKKwkJCSAg ICAgY3R4LCBpbnN0LCAmb3BwX3JlZ3NbaW5zdF0sICZvcHBfc2hpZnQsICZvcHBfbWFzayk7CisJ cmV0dXJuICZvcHAtPmJhc2U7Cit9CisKK3N0cnVjdCBhdXhfZW5naW5lICpkY2U2MF9hdXhfZW5n aW5lX2NyZWF0ZSgKKwlzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAorCXVpbnQzMl90IGluc3QpCit7 CisJc3RydWN0IGF1eF9lbmdpbmVfZGNlMTEwICphdXhfZW5naW5lID0KKwkJa3phbGxvYyhzaXpl b2Yoc3RydWN0IGF1eF9lbmdpbmVfZGNlMTEwKSwgR0ZQX0tFUk5FTCk7CisKKwlpZiAoIWF1eF9l bmdpbmUpCisJCXJldHVybiBOVUxMOworCisJZGNlMTEwX2F1eF9lbmdpbmVfY29uc3RydWN0KGF1 eF9lbmdpbmUsIGN0eCwgaW5zdCwKKwkJCQkgICAgU1dfQVVYX1RJTUVPVVRfUEVSSU9EX01VTFRJ UExJRVIgKiBBVVhfVElNRU9VVF9QRVJJT0QsCisJCQkJICAgICZhdXhfZW5naW5lX3JlZ3NbaW5z dF0pOworCisJcmV0dXJuICZhdXhfZW5naW5lLT5iYXNlOworfQorCitzdGF0aWMgc3RydWN0IHN0 cmVhbV9lbmNvZGVyICpkY2U2MF9zdHJlYW1fZW5jb2Rlcl9jcmVhdGUoCisJZW51bSBlbmdpbmVf aWQgZW5nX2lkLAorCXN0cnVjdCBkY19jb250ZXh0ICpjdHgpCit7CisJc3RydWN0IGRjZTExMF9z dHJlYW1fZW5jb2RlciAqZW5jMTEwID0KKwkJa3phbGxvYyhzaXplb2Yoc3RydWN0IGRjZTExMF9z dHJlYW1fZW5jb2RlciksIEdGUF9LRVJORUwpOworCisJaWYgKCFlbmMxMTApCisJCXJldHVybiBO VUxMOworCisJZGNlMTEwX3N0cmVhbV9lbmNvZGVyX2NvbnN0cnVjdChlbmMxMTAsIGN0eCwgY3R4 LT5kY19iaW9zLCBlbmdfaWQsCisJCQkJCSZzdHJlYW1fZW5jX3JlZ3NbZW5nX2lkXSwKKwkJCQkJ JnNlX3NoaWZ0LCAmc2VfbWFzayk7CisJcmV0dXJuICZlbmMxMTAtPmJhc2U7Cit9CisKKyNkZWZp bmUgU1JJSShyZWdfbmFtZSwgYmxvY2ssIGlkKVwKKwkucmVnX25hbWVbaWRdID0gbW0gIyMgYmxv Y2sgIyMgaWQgIyMgXyAjIyByZWdfbmFtZQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRjZV9od3Nl cV9yZWdpc3RlcnMgaHdzZXFfcmVnID0geworCQlIV1NFUV9EQ0U4X1JFR19MSVNUKCkKK307CisK K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGNlX2h3c2VxX3NoaWZ0IGh3c2VxX3NoaWZ0ID0geworCQlI V1NFUV9EQ0U4X01BU0tfU0hfTElTVChfX1NISUZUKQorfTsKKworc3RhdGljIGNvbnN0IHN0cnVj dCBkY2VfaHdzZXFfbWFzayBod3NlcV9tYXNrID0geworCQlIV1NFUV9EQ0U4X01BU0tfU0hfTElT VChfTUFTSykKK307CisKK3N0YXRpYyBzdHJ1Y3QgZGNlX2h3c2VxICpkY2U2MF9od3NlcV9jcmVh dGUoCisJc3RydWN0IGRjX2NvbnRleHQgKmN0eCkKK3sKKwlzdHJ1Y3QgZGNlX2h3c2VxICpod3Mg PSBremFsbG9jKHNpemVvZihzdHJ1Y3QgZGNlX2h3c2VxKSwgR0ZQX0tFUk5FTCk7CisKKwlpZiAo aHdzKSB7CisJCWh3cy0+Y3R4ID0gY3R4OworCQlod3MtPnJlZ3MgPSAmaHdzZXFfcmVnOworCQlo d3MtPnNoaWZ0cyA9ICZod3NlcV9zaGlmdDsKKwkJaHdzLT5tYXNrcyA9ICZod3NlcV9tYXNrOwor CX0KKwlyZXR1cm4gaHdzOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHJlc291cmNlX2NyZWF0 ZV9mdW5jcyByZXNfY3JlYXRlX2Z1bmNzID0geworCS5yZWFkX2RjZV9zdHJhcHMgPSByZWFkX2Rj ZV9zdHJhcHMsCisJLmNyZWF0ZV9hdWRpbyA9IGNyZWF0ZV9hdWRpbywKKwkuY3JlYXRlX3N0cmVh bV9lbmNvZGVyID0gZGNlNjBfc3RyZWFtX2VuY29kZXJfY3JlYXRlLAorCS5jcmVhdGVfaHdzZXEg PSBkY2U2MF9od3NlcV9jcmVhdGUsCit9OworCisjZGVmaW5lIG1pX2luc3RfcmVncyhpZCkgeyBc CisJTUlfRENFOF9SRUdfTElTVChpZCksIFwKKwkuTUNfSFVCX1JEUkVRX0RNSUZfTElNSVQgPSBt bU1DX0hVQl9SRFJFUV9ETUlGX0xJTUlUIFwKK30KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGNlX21l bV9pbnB1dF9yZWdpc3RlcnMgbWlfcmVnc1tdID0geworCQltaV9pbnN0X3JlZ3MoMCksCisJCW1p X2luc3RfcmVncygxKSwKKwkJbWlfaW5zdF9yZWdzKDIpLAorCQltaV9pbnN0X3JlZ3MoMyksCisJ CW1pX2luc3RfcmVncyg0KSwKKwkJbWlfaW5zdF9yZWdzKDUpLAorfTsKKworc3RhdGljIGNvbnN0 IHN0cnVjdCBkY2VfbWVtX2lucHV0X3NoaWZ0IG1pX3NoaWZ0cyA9IHsKKwkJTUlfRENFOF9NQVNL X1NIX0xJU1QoX19TSElGVCksCisJCS5FTkFCTEUgPSBNQ19IVUJfUkRSRVFfRE1JRl9MSU1JVF9f RU5BQkxFX19TSElGVAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkY2VfbWVtX2lucHV0X21h c2sgbWlfbWFza3MgPSB7CisJCU1JX0RDRThfTUFTS19TSF9MSVNUKF9NQVNLKSwKKwkJLkVOQUJM RSA9IE1DX0hVQl9SRFJFUV9ETUlGX0xJTUlUX19FTkFCTEVfTUFTSworfTsKKworc3RhdGljIHN0 cnVjdCBtZW1faW5wdXQgKmRjZTYwX21lbV9pbnB1dF9jcmVhdGUoCisJc3RydWN0IGRjX2NvbnRl eHQgKmN0eCwKKwl1aW50MzJfdCBpbnN0KQoreworCXN0cnVjdCBkY2VfbWVtX2lucHV0ICpkY2Vf bWkgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgZGNlX21lbV9pbnB1dCksCisJCQkJCSAgICAgICBH RlBfS0VSTkVMKTsKKworCWlmICghZGNlX21pKSB7CisJCUJSRUFLX1RPX0RFQlVHR0VSKCk7CisJ CXJldHVybiBOVUxMOworCX0KKworCWRjZV9tZW1faW5wdXRfY29uc3RydWN0KGRjZV9taSwgY3R4 LCBpbnN0LCAmbWlfcmVnc1tpbnN0XSwgJm1pX3NoaWZ0cywgJm1pX21hc2tzKTsKKwlkY2VfbWkt PndhLnNpbmdsZV9oZWFkX3JkcmVxX2RtaWZfbGltaXQgPSAyOworCXJldHVybiAmZGNlX21pLT5i YXNlOworfQorCitzdGF0aWMgdm9pZCBkY2U2MF90cmFuc2Zvcm1fZGVzdHJveShzdHJ1Y3QgdHJh bnNmb3JtICoqeGZtKQoreworCWtmcmVlKFRPX0RDRV9UUkFOU0ZPUk0oKnhmbSkpOworCSp4Zm0g PSBOVUxMOworfQorCitzdGF0aWMgc3RydWN0IHRyYW5zZm9ybSAqZGNlNjBfdHJhbnNmb3JtX2Ny ZWF0ZSgKKwlzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAorCXVpbnQzMl90IGluc3QpCit7CisJc3Ry dWN0IGRjZV90cmFuc2Zvcm0gKnRyYW5zZm9ybSA9CisJCWt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBk Y2VfdHJhbnNmb3JtKSwgR0ZQX0tFUk5FTCk7CisKKwlpZiAoIXRyYW5zZm9ybSkKKwkJcmV0dXJu IE5VTEw7CisKKwlkY2VfdHJhbnNmb3JtX2NvbnN0cnVjdCh0cmFuc2Zvcm0sIGN0eCwgaW5zdCwK KwkJCQkmeGZtX3JlZ3NbaW5zdF0sICZ4Zm1fc2hpZnQsICZ4Zm1fbWFzayk7CisJdHJhbnNmb3Jt LT5wcmVzY2FsZXJfb24gPSBmYWxzZTsKKwlyZXR1cm4gJnRyYW5zZm9ybS0+YmFzZTsKK30KKwor c3RhdGljIGNvbnN0IHN0cnVjdCBlbmNvZGVyX2ZlYXR1cmVfc3VwcG9ydCBsaW5rX2VuY19mZWF0 dXJlID0geworCQkubWF4X2hkbWlfZGVlcF9jb2xvciA9IENPTE9SX0RFUFRIXzEyMTIxMiwKKwkJ Lm1heF9oZG1pX3BpeGVsX2Nsb2NrID0gMjk3MDAwLAorCQkuZmxhZ3MuYml0cy5JU19IQlIyX0NB UEFCTEUgPSB0cnVlLAorCQkuZmxhZ3MuYml0cy5JU19UUFMzX0NBUEFCTEUgPSB0cnVlLAorCQku ZmxhZ3MuYml0cy5JU19ZQ0JDUl9DQVBBQkxFID0gdHJ1ZQorfTsKKworc3RydWN0IGxpbmtfZW5j b2RlciAqZGNlNjBfbGlua19lbmNvZGVyX2NyZWF0ZSgKKwljb25zdCBzdHJ1Y3QgZW5jb2Rlcl9p bml0X2RhdGEgKmVuY19pbml0X2RhdGEpCit7CisJc3RydWN0IGRjZTExMF9saW5rX2VuY29kZXIg KmVuYzExMCA9CisJCWt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBkY2UxMTBfbGlua19lbmNvZGVyKSwg R0ZQX0tFUk5FTCk7CisKKwlpZiAoIWVuYzExMCkKKwkJcmV0dXJuIE5VTEw7CisKKwlkY2UxMTBf bGlua19lbmNvZGVyX2NvbnN0cnVjdChlbmMxMTAsCisJCQkJICAgICAgZW5jX2luaXRfZGF0YSwK KwkJCQkgICAgICAmbGlua19lbmNfZmVhdHVyZSwKKwkJCQkgICAgICAmbGlua19lbmNfcmVnc1tl bmNfaW5pdF9kYXRhLT50cmFuc21pdHRlcl0sCisJCQkJICAgICAgJmxpbmtfZW5jX2F1eF9yZWdz W2VuY19pbml0X2RhdGEtPmNoYW5uZWwgLSAxXSwKKwkJCQkgICAgICAmbGlua19lbmNfaHBkX3Jl Z3NbZW5jX2luaXRfZGF0YS0+aHBkX3NvdXJjZV0pOworCXJldHVybiAmZW5jMTEwLT5iYXNlOwor fQorCitzdHJ1Y3QgY2xvY2tfc291cmNlICpkY2U2MF9jbG9ja19zb3VyY2VfY3JlYXRlKAorCXN0 cnVjdCBkY19jb250ZXh0ICpjdHgsCisJc3RydWN0IGRjX2Jpb3MgKmJpb3MsCisJZW51bSBjbG9j a19zb3VyY2VfaWQgaWQsCisJY29uc3Qgc3RydWN0IGRjZTExMF9jbGtfc3JjX3JlZ3MgKnJlZ3Ms CisJYm9vbCBkcF9jbGtfc3JjKQoreworCXN0cnVjdCBkY2UxMTBfY2xrX3NyYyAqY2xrX3NyYyA9 CisJCWt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBkY2UxMTBfY2xrX3NyYyksIEdGUF9LRVJORUwpOwor CisJaWYgKCFjbGtfc3JjKQorCQlyZXR1cm4gTlVMTDsKKworCWlmIChkY2UxMTBfY2xrX3NyY19j b25zdHJ1Y3QoY2xrX3NyYywgY3R4LCBiaW9zLCBpZCwKKwkJCXJlZ3MsICZjc19zaGlmdCwgJmNz X21hc2spKSB7CisJCWNsa19zcmMtPmJhc2UuZHBfY2xrX3NyYyA9IGRwX2Nsa19zcmM7CisJCXJl dHVybiAmY2xrX3NyYy0+YmFzZTsKKwl9CisKKwlCUkVBS19UT19ERUJVR0dFUigpOworCXJldHVy biBOVUxMOworfQorCit2b2lkIGRjZTYwX2Nsb2NrX3NvdXJjZV9kZXN0cm95KHN0cnVjdCBjbG9j a19zb3VyY2UgKipjbGtfc3JjKQoreworCWtmcmVlKFRPX0RDRTExMF9DTEtfU1JDKCpjbGtfc3Jj KSk7CisJKmNsa19zcmMgPSBOVUxMOworfQorCitzdGF0aWMgc3RydWN0IGlucHV0X3BpeGVsX3By b2Nlc3NvciAqZGNlNjBfaXBwX2NyZWF0ZSgKKwlzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LCB1aW50 MzJfdCBpbnN0KQoreworCXN0cnVjdCBkY2VfaXBwICppcHAgPSBremFsbG9jKHNpemVvZihzdHJ1 Y3QgZGNlX2lwcCksIEdGUF9LRVJORUwpOworCisJaWYgKCFpcHApIHsKKwkJQlJFQUtfVE9fREVC VUdHRVIoKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJZGNlX2lwcF9jb25zdHJ1Y3QoaXBwLCBj dHgsIGluc3QsCisJCQkmaXBwX3JlZ3NbaW5zdF0sICZpcHBfc2hpZnQsICZpcHBfbWFzayk7CisJ cmV0dXJuICZpcHAtPmJhc2U7Cit9CisKK3N0YXRpYyB2b2lkIGRlc3RydWN0KHN0cnVjdCBkY2Ux MTBfcmVzb3VyY2VfcG9vbCAqcG9vbCkKK3sKKwl1bnNpZ25lZCBpbnQgaTsKKworCWZvciAoaSA9 IDA7IGkgPCBwb29sLT5iYXNlLnBpcGVfY291bnQ7IGkrKykgeworCQlpZiAocG9vbC0+YmFzZS5v cHBzW2ldICE9IE5VTEwpCisJCQlkY2UxMTBfb3BwX2Rlc3Ryb3koJnBvb2wtPmJhc2Uub3Bwc1tp XSk7CisKKwkJaWYgKHBvb2wtPmJhc2UudHJhbnNmb3Jtc1tpXSAhPSBOVUxMKQorCQkJZGNlNjBf dHJhbnNmb3JtX2Rlc3Ryb3koJnBvb2wtPmJhc2UudHJhbnNmb3Jtc1tpXSk7CisKKwkJaWYgKHBv b2wtPmJhc2UuaXBwc1tpXSAhPSBOVUxMKQorCQkJZGNlX2lwcF9kZXN0cm95KCZwb29sLT5iYXNl LmlwcHNbaV0pOworCisJCWlmIChwb29sLT5iYXNlLm1pc1tpXSAhPSBOVUxMKSB7CisJCQlrZnJl ZShUT19EQ0VfTUVNX0lOUFVUKHBvb2wtPmJhc2UubWlzW2ldKSk7CisJCQlwb29sLT5iYXNlLm1p c1tpXSA9IE5VTEw7CisJCX0KKworCQlpZiAocG9vbC0+YmFzZS50aW1pbmdfZ2VuZXJhdG9yc1tp XSAhPSBOVUxMKQl7CisJCQlrZnJlZShEQ0UxMTBUR19GUk9NX1RHKHBvb2wtPmJhc2UudGltaW5n X2dlbmVyYXRvcnNbaV0pKTsKKwkJCXBvb2wtPmJhc2UudGltaW5nX2dlbmVyYXRvcnNbaV0gPSBO VUxMOworCQl9CisKKwkJaWYgKHBvb2wtPmJhc2UuZW5naW5lc1tpXSAhPSBOVUxMKQorCQkJZGNl MTEwX2VuZ2luZV9kZXN0cm95KCZwb29sLT5iYXNlLmVuZ2luZXNbaV0pOworCX0KKworCWZvciAo aSA9IDA7IGkgPCBwb29sLT5iYXNlLnN0cmVhbV9lbmNfY291bnQ7IGkrKykgeworCQlpZiAocG9v bC0+YmFzZS5zdHJlYW1fZW5jW2ldICE9IE5VTEwpCisJCQlrZnJlZShEQ0UxMTBTVFJFTkNfRlJP TV9TVFJFTkMocG9vbC0+YmFzZS5zdHJlYW1fZW5jW2ldKSk7CisJfQorCisJZm9yIChpID0gMDsg aSA8IHBvb2wtPmJhc2UuY2xrX3NyY19jb3VudDsgaSsrKSB7CisJCWlmIChwb29sLT5iYXNlLmNs b2NrX3NvdXJjZXNbaV0gIT0gTlVMTCkgeworCQkJZGNlNjBfY2xvY2tfc291cmNlX2Rlc3Ryb3ko JnBvb2wtPmJhc2UuY2xvY2tfc291cmNlc1tpXSk7CisJCX0KKwl9CisKKwlpZiAocG9vbC0+YmFz ZS5hYm0gIT0gTlVMTCkKKwkJCWRjZV9hYm1fZGVzdHJveSgmcG9vbC0+YmFzZS5hYm0pOworCisJ aWYgKHBvb2wtPmJhc2UuZG1jdSAhPSBOVUxMKQorCQkJZGNlX2RtY3VfZGVzdHJveSgmcG9vbC0+ YmFzZS5kbWN1KTsKKworCWlmIChwb29sLT5iYXNlLmRwX2Nsb2NrX3NvdXJjZSAhPSBOVUxMKQor CQlkY2U2MF9jbG9ja19zb3VyY2VfZGVzdHJveSgmcG9vbC0+YmFzZS5kcF9jbG9ja19zb3VyY2Up OworCisJZm9yIChpID0gMDsgaSA8IHBvb2wtPmJhc2UuYXVkaW9fY291bnQ7IGkrKykJeworCQlp ZiAocG9vbC0+YmFzZS5hdWRpb3NbaV0gIT0gTlVMTCkgeworCQkJZGNlX2F1ZF9kZXN0cm95KCZw b29sLT5iYXNlLmF1ZGlvc1tpXSk7CisJCX0KKwl9CisKKwlpZiAocG9vbC0+YmFzZS5kY2NnICE9 IE5VTEwpCisJCWRjZV9kY2NnX2Rlc3Ryb3koJnBvb2wtPmJhc2UuZGNjZyk7CisKKwlpZiAocG9v bC0+YmFzZS5pcnFzICE9IE5VTEwpIHsKKwkJZGFsX2lycV9zZXJ2aWNlX2Rlc3Ryb3koJnBvb2wt PmJhc2UuaXJxcyk7CisJfQorfQorCitib29sIGRjZTYwX3ZhbGlkYXRlX2JhbmR3aWR0aCgKKwlz dHJ1Y3QgZGMgKmRjLAorCXN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCkKK3sKKwkvKiBUT0RPIGlt cGxlbWVudCB3aGVuIG5lZWRlZCBidXQgZm9yIG5vdyBoYXJkY29kZSBtYXggdmFsdWUqLworCWNv bnRleHQtPmJ3LmRjZS5kaXNwY2xrX2toeiA9IDY4MTAwMDsKKwljb250ZXh0LT5idy5kY2UueWNs a19raHogPSAyNTAwMDAgKiBNRU1PUllfVFlQRV9NVUxUSVBMSUVSOworCisJcmV0dXJuIHRydWU7 Cit9CisKK3N0YXRpYyBib29sIGRjZTYwX3ZhbGlkYXRlX3N1cmZhY2Vfc2V0cygKKwkJc3RydWN0 IGRjX3N0YXRlICpjb250ZXh0KQoreworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IGNvbnRl eHQtPnN0cmVhbV9jb3VudDsgaSsrKSB7CisJCWlmIChjb250ZXh0LT5zdHJlYW1fc3RhdHVzW2ld LnBsYW5lX2NvdW50ID09IDApCisJCQljb250aW51ZTsKKworCQlpZiAoY29udGV4dC0+c3RyZWFt X3N0YXR1c1tpXS5wbGFuZV9jb3VudCA+IDEpCisJCQlyZXR1cm4gZmFsc2U7CisKKwkJaWYgKGNv bnRleHQtPnN0cmVhbV9zdGF0dXNbaV0ucGxhbmVfc3RhdGVzWzBdLT5mb3JtYXQKKwkJCQk+PSBT VVJGQUNFX1BJWEVMX0ZPUk1BVF9WSURFT19CRUdJTikKKwkJCXJldHVybiBmYWxzZTsKKwl9CisK KwlyZXR1cm4gdHJ1ZTsKK30KKworZW51bSBkY19zdGF0dXMgZGNlNjBfdmFsaWRhdGVfZ2xvYmFs KAorCQlzdHJ1Y3QgZGMgKmRjLAorCQlzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpCit7CisJaWYg KCFkY2U2MF92YWxpZGF0ZV9zdXJmYWNlX3NldHMoY29udGV4dCkpCisJCXJldHVybiBEQ19GQUlM X1NVUkZBQ0VfVkFMSURBVEU7CisKKwlyZXR1cm4gRENfT0s7Cit9CisKK3N0YXRpYyB2b2lkIGRj ZTYwX2Rlc3Ryb3lfcmVzb3VyY2VfcG9vbChzdHJ1Y3QgcmVzb3VyY2VfcG9vbCAqKnBvb2wpCit7 CisJc3RydWN0IGRjZTExMF9yZXNvdXJjZV9wb29sICpkY2UxMTBfcG9vbCA9IFRPX0RDRTExMF9S RVNfUE9PTCgqcG9vbCk7CisKKwlkZXN0cnVjdChkY2UxMTBfcG9vbCk7CisJa2ZyZWUoZGNlMTEw X3Bvb2wpOworCSpwb29sID0gTlVMTDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCByZXNvdXJj ZV9mdW5jcyBkY2U2MF9yZXNfcG9vbF9mdW5jcyA9IHsKKwkuZGVzdHJveSA9IGRjZTYwX2Rlc3Ry b3lfcmVzb3VyY2VfcG9vbCwKKwkubGlua19lbmNfY3JlYXRlID0gZGNlNjBfbGlua19lbmNvZGVy X2NyZWF0ZSwKKwkudmFsaWRhdGVfYmFuZHdpZHRoID0gZGNlNjBfdmFsaWRhdGVfYmFuZHdpZHRo LAorCS52YWxpZGF0ZV9wbGFuZSA9IGRjZTEwMF92YWxpZGF0ZV9wbGFuZSwKKwkuYWRkX3N0cmVh bV90b19jdHggPSBkY2UxMDBfYWRkX3N0cmVhbV90b19jdHgsCisJLnZhbGlkYXRlX2dsb2JhbCA9 IGRjZTYwX3ZhbGlkYXRlX2dsb2JhbAorfTsKKworc3RhdGljIGJvb2wgZGNlNjBfY29uc3RydWN0 KAorCXVpbnQ4X3QgbnVtX3ZpcnR1YWxfbGlua3MsCisJc3RydWN0IGRjICpkYywKKwlzdHJ1Y3Qg ZGNlMTEwX3Jlc291cmNlX3Bvb2wgKnBvb2wpCit7CisJdW5zaWduZWQgaW50IGk7CisJc3RydWN0 IGRjX2NvbnRleHQgKmN0eCA9IGRjLT5jdHg7CisJc3RydWN0IGRjX2Zpcm13YXJlX2luZm8gaW5m bzsKKwlzdHJ1Y3QgZGNfYmlvcyAqYnA7CisJc3RydWN0IGRtX3BwX3N0YXRpY19jbG9ja19pbmZv IHN0YXRpY19jbGtfaW5mbyA9IHswfTsKKworCWN0eC0+ZGNfYmlvcy0+cmVncyA9ICZiaW9zX3Jl Z3M7CisKKwlwb29sLT5iYXNlLnJlc19jYXAgPSAmcmVzX2NhcDsKKwlwb29sLT5iYXNlLmZ1bmNz ID0gJmRjZTYwX3Jlc19wb29sX2Z1bmNzOworCisKKwkvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgorCSAqICBSZXNvdXJjZSArIGFzaWMgY2FwIGhhcmNv ZGluZyAgICAgICAgICAgICAgICAqCisJICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCisJcG9vbC0+YmFzZS51bmRlcmxheV9waXBlX2luZGV4ID0gTk9f VU5ERVJMQVlfUElQRTsKKwlwb29sLT5iYXNlLnBpcGVfY291bnQgPSByZXNfY2FwLm51bV90aW1p bmdfZ2VuZXJhdG9yOworCXBvb2wtPmJhc2UudGltaW5nX2dlbmVyYXRvcl9jb3VudCA9IHJlc19j YXAubnVtX3RpbWluZ19nZW5lcmF0b3I7CisJZGMtPmNhcHMubWF4X2Rvd25zY2FsZV9yYXRpbyA9 IDIwMDsKKwlkYy0+Y2Fwcy5pMmNfc3BlZWRfaW5fa2h6ID0gNDA7CisJZGMtPmNhcHMubWF4X2N1 cnNvcl9zaXplID0gMTI4OworCWRjLT5jYXBzLmR1YWxfbGlua19kdmkgPSB0cnVlOworCisJLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKwkgKiAgQ3Jl YXRlIHJlc291cmNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorCSAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisJYnAgPSBjdHgtPmRj X2Jpb3M7CisKKwlpZiAoKGJwLT5mdW5jcy0+Z2V0X2Zpcm13YXJlX2luZm8oYnAsICZpbmZvKSA9 PSBCUF9SRVNVTFRfT0spICYmCisJCWluZm8uZXh0ZXJuYWxfY2xvY2tfc291cmNlX2ZyZXF1ZW5j eV9mb3JfZHAgIT0gMCkgeworCQlwb29sLT5iYXNlLmRwX2Nsb2NrX3NvdXJjZSA9CisJCQkJZGNl NjBfY2xvY2tfc291cmNlX2NyZWF0ZShjdHgsIGJwLCBDTE9DS19TT1VSQ0VfSURfRVhURVJOQUws IE5VTEwsIHRydWUpOworCisJCXBvb2wtPmJhc2UuY2xvY2tfc291cmNlc1swXSA9CisJCQkJZGNl NjBfY2xvY2tfc291cmNlX2NyZWF0ZShjdHgsIGJwLCBDTE9DS19TT1VSQ0VfSURfUExMMCwgJmNs a19zcmNfcmVnc1swXSwgZmFsc2UpOworCQlwb29sLT5iYXNlLmNsb2NrX3NvdXJjZXNbMV0gPQor CQkJCWRjZTYwX2Nsb2NrX3NvdXJjZV9jcmVhdGUoY3R4LCBicCwgQ0xPQ0tfU09VUkNFX0lEX1BM TDEsICZjbGtfc3JjX3JlZ3NbMV0sIGZhbHNlKTsKKwkJcG9vbC0+YmFzZS5jbG9ja19zb3VyY2Vz WzJdID0KKwkJCQlkY2U2MF9jbG9ja19zb3VyY2VfY3JlYXRlKGN0eCwgYnAsIENMT0NLX1NPVVJD RV9JRF9QTEwyLCAmY2xrX3NyY19yZWdzWzJdLCBmYWxzZSk7CisJCXBvb2wtPmJhc2UuY2xrX3Ny Y19jb3VudCA9IDM7CisKKwl9IGVsc2UgeworCQlwb29sLT5iYXNlLmRwX2Nsb2NrX3NvdXJjZSA9 CisJCQkJZGNlNjBfY2xvY2tfc291cmNlX2NyZWF0ZShjdHgsIGJwLCBDTE9DS19TT1VSQ0VfSURf UExMMCwgJmNsa19zcmNfcmVnc1swXSwgdHJ1ZSk7CisKKwkJcG9vbC0+YmFzZS5jbG9ja19zb3Vy Y2VzWzBdID0KKwkJCQlkY2U2MF9jbG9ja19zb3VyY2VfY3JlYXRlKGN0eCwgYnAsIENMT0NLX1NP VVJDRV9JRF9QTEwxLCAmY2xrX3NyY19yZWdzWzFdLCBmYWxzZSk7CisJCXBvb2wtPmJhc2UuY2xv Y2tfc291cmNlc1sxXSA9CisJCQkJZGNlNjBfY2xvY2tfc291cmNlX2NyZWF0ZShjdHgsIGJwLCBD TE9DS19TT1VSQ0VfSURfUExMMiwgJmNsa19zcmNfcmVnc1syXSwgZmFsc2UpOworCQlwb29sLT5i YXNlLmNsa19zcmNfY291bnQgPSAyOworCX0KKworCWlmIChwb29sLT5iYXNlLmRwX2Nsb2NrX3Nv dXJjZSA9PSBOVUxMKSB7CisJCWRtX2Vycm9yKCJEQzogZmFpbGVkIHRvIGNyZWF0ZSBkcCBjbG9j ayBzb3VyY2UhXG4iKTsKKwkJQlJFQUtfVE9fREVCVUdHRVIoKTsKKwkJZ290byByZXNfY3JlYXRl X2ZhaWw7CisJfQorCisJZm9yIChpID0gMDsgaSA8IHBvb2wtPmJhc2UuY2xrX3NyY19jb3VudDsg aSsrKSB7CisJCWlmIChwb29sLT5iYXNlLmNsb2NrX3NvdXJjZXNbaV0gPT0gTlVMTCkgeworCQkJ ZG1fZXJyb3IoIkRDOiBmYWlsZWQgdG8gY3JlYXRlIGNsb2NrIHNvdXJjZXMhXG4iKTsKKwkJCUJS RUFLX1RPX0RFQlVHR0VSKCk7CisJCQlnb3RvIHJlc19jcmVhdGVfZmFpbDsKKwkJfQorCX0KKwor CXBvb2wtPmJhc2UuZGNjZyA9IGRjZV9kY2NnX2NyZWF0ZShjdHgsCisJCQkmZGlzcF9jbGtfcmVn cywKKwkJCSZkaXNwX2Nsa19zaGlmdCwKKwkJCSZkaXNwX2Nsa19tYXNrKTsKKwlpZiAocG9vbC0+ YmFzZS5kY2NnID09IE5VTEwpIHsKKwkJZG1fZXJyb3IoIkRDOiBmYWlsZWQgdG8gY3JlYXRlIGRp c3BsYXkgY2xvY2shXG4iKTsKKwkJQlJFQUtfVE9fREVCVUdHRVIoKTsKKwkJZ290byByZXNfY3Jl YXRlX2ZhaWw7CisJfQorCisJcG9vbC0+YmFzZS5kbWN1ID0gZGNlX2RtY3VfY3JlYXRlKGN0eCwK KwkJCSZkbWN1X3JlZ3MsCisJCQkmZG1jdV9zaGlmdCwKKwkJCSZkbWN1X21hc2spOworCWlmIChw b29sLT5iYXNlLmRtY3UgPT0gTlVMTCkgeworCQlkbV9lcnJvcigiREM6IGZhaWxlZCB0byBjcmVh dGUgZG1jdSFcbiIpOworCQlCUkVBS19UT19ERUJVR0dFUigpOworCQlnb3RvIHJlc19jcmVhdGVf ZmFpbDsKKwl9CisKKwlwb29sLT5iYXNlLmFibSA9IGRjZV9hYm1fY3JlYXRlKGN0eCwKKwkJCSZh Ym1fcmVncywKKwkJCSZhYm1fc2hpZnQsCisJCQkmYWJtX21hc2spOworCWlmIChwb29sLT5iYXNl LmFibSA9PSBOVUxMKSB7CisJCWRtX2Vycm9yKCJEQzogZmFpbGVkIHRvIGNyZWF0ZSBhYm0hXG4i KTsKKwkJQlJFQUtfVE9fREVCVUdHRVIoKTsKKwkJZ290byByZXNfY3JlYXRlX2ZhaWw7CisJfQor CWlmIChkbV9wcF9nZXRfc3RhdGljX2Nsb2NrcyhjdHgsICZzdGF0aWNfY2xrX2luZm8pKQorCQlw b29sLT5iYXNlLmRjY2ctPm1heF9jbGtzX3N0YXRlID0KKwkJCQkJc3RhdGljX2Nsa19pbmZvLm1h eF9jbG9ja3Nfc3RhdGU7CisKKwl7CisJCXN0cnVjdCBpcnFfc2VydmljZV9pbml0X2RhdGEgaW5p dF9kYXRhOworCQlpbml0X2RhdGEuY3R4ID0gZGMtPmN0eDsKKwkJcG9vbC0+YmFzZS5pcnFzID0g ZGFsX2lycV9zZXJ2aWNlX2RjZTYwX2NyZWF0ZSgmaW5pdF9kYXRhKTsKKwkJaWYgKCFwb29sLT5i YXNlLmlycXMpCisJCQlnb3RvIHJlc19jcmVhdGVfZmFpbDsKKwl9CisKKwlmb3IgKGkgPSAwOyBp IDwgcG9vbC0+YmFzZS5waXBlX2NvdW50OyBpKyspIHsKKwkJcG9vbC0+YmFzZS50aW1pbmdfZ2Vu ZXJhdG9yc1tpXSA9IGRjZTYwX3RpbWluZ19nZW5lcmF0b3JfY3JlYXRlKAorCQkJCWN0eCwgaSwg JmRjZTYwX3RnX29mZnNldHNbaV0pOworCQlpZiAocG9vbC0+YmFzZS50aW1pbmdfZ2VuZXJhdG9y c1tpXSA9PSBOVUxMKSB7CisJCQlCUkVBS19UT19ERUJVR0dFUigpOworCQkJZG1fZXJyb3IoIkRD OiBmYWlsZWQgdG8gY3JlYXRlIHRnIVxuIik7CisJCQlnb3RvIHJlc19jcmVhdGVfZmFpbDsKKwkJ fQorCisJCXBvb2wtPmJhc2UubWlzW2ldID0gZGNlNjBfbWVtX2lucHV0X2NyZWF0ZShjdHgsIGkp OworCQlpZiAocG9vbC0+YmFzZS5taXNbaV0gPT0gTlVMTCkgeworCQkJQlJFQUtfVE9fREVCVUdH RVIoKTsKKwkJCWRtX2Vycm9yKCJEQzogZmFpbGVkIHRvIGNyZWF0ZSBtZW1vcnkgaW5wdXQhXG4i KTsKKwkJCWdvdG8gcmVzX2NyZWF0ZV9mYWlsOworCQl9CisKKwkJcG9vbC0+YmFzZS5pcHBzW2ld ID0gZGNlNjBfaXBwX2NyZWF0ZShjdHgsIGkpOworCQlpZiAocG9vbC0+YmFzZS5pcHBzW2ldID09 IE5VTEwpIHsKKwkJCUJSRUFLX1RPX0RFQlVHR0VSKCk7CisJCQlkbV9lcnJvcigiREM6IGZhaWxl ZCB0byBjcmVhdGUgaW5wdXQgcGl4ZWwgcHJvY2Vzc29yIVxuIik7CisJCQlnb3RvIHJlc19jcmVh dGVfZmFpbDsKKwkJfQorCisJCXBvb2wtPmJhc2UudHJhbnNmb3Jtc1tpXSA9IGRjZTYwX3RyYW5z Zm9ybV9jcmVhdGUoY3R4LCBpKTsKKwkJaWYgKHBvb2wtPmJhc2UudHJhbnNmb3Jtc1tpXSA9PSBO VUxMKSB7CisJCQlCUkVBS19UT19ERUJVR0dFUigpOworCQkJZG1fZXJyb3IoIkRDOiBmYWlsZWQg dG8gY3JlYXRlIHRyYW5zZm9ybSFcbiIpOworCQkJZ290byByZXNfY3JlYXRlX2ZhaWw7CisJCX0K KworCQlwb29sLT5iYXNlLm9wcHNbaV0gPSBkY2U2MF9vcHBfY3JlYXRlKGN0eCwgaSk7CisJCWlm IChwb29sLT5iYXNlLm9wcHNbaV0gPT0gTlVMTCkgeworCQkJQlJFQUtfVE9fREVCVUdHRVIoKTsK KwkJCWRtX2Vycm9yKCJEQzogZmFpbGVkIHRvIGNyZWF0ZSBvdXRwdXQgcGl4ZWwgcHJvY2Vzc29y IVxuIik7CisJCQlnb3RvIHJlc19jcmVhdGVfZmFpbDsKKwkJfQorCisJCXBvb2wtPmJhc2UuZW5n aW5lc1tpXSA9IGRjZTYwX2F1eF9lbmdpbmVfY3JlYXRlKGN0eCwgaSk7CisJCWlmIChwb29sLT5i YXNlLmVuZ2luZXNbaV0gPT0gTlVMTCkgeworCQkJQlJFQUtfVE9fREVCVUdHRVIoKTsKKwkJCWRt X2Vycm9yKAorCQkJCSJEQzpmYWlsZWQgdG8gY3JlYXRlIGF1eCBlbmdpbmUhIVxuIik7CisJCQln b3RvIHJlc19jcmVhdGVfZmFpbDsKKwkJfQorCX0KKworCWRjLT5jYXBzLm1heF9wbGFuZXMgPSAg cG9vbC0+YmFzZS5waXBlX2NvdW50OworCWRjLT5jYXBzLmRpc2FibGVfZHBfY2xrX3NoYXJlID0g dHJ1ZTsKKworCWlmICghcmVzb3VyY2VfY29uc3RydWN0KG51bV92aXJ0dWFsX2xpbmtzLCBkYywg JnBvb2wtPmJhc2UsCisJCQkmcmVzX2NyZWF0ZV9mdW5jcykpCisJCWdvdG8gcmVzX2NyZWF0ZV9m YWlsOworCisJLyogQ3JlYXRlIGhhcmR3YXJlIHNlcXVlbmNlciAqLworCWRjZTYwX2h3X3NlcXVl bmNlcl9jb25zdHJ1Y3QoZGMpOworCisJcmV0dXJuIHRydWU7CisKK3Jlc19jcmVhdGVfZmFpbDoK KwlkZXN0cnVjdChwb29sKTsKKwlyZXR1cm4gZmFsc2U7Cit9CisKK3N0cnVjdCByZXNvdXJjZV9w b29sICpkY2U2MF9jcmVhdGVfcmVzb3VyY2VfcG9vbCgKKwl1aW50OF90IG51bV92aXJ0dWFsX2xp bmtzLAorCXN0cnVjdCBkYyAqZGMpCit7CisJc3RydWN0IGRjZTExMF9yZXNvdXJjZV9wb29sICpw b29sID0KKwkJa3phbGxvYyhzaXplb2Yoc3RydWN0IGRjZTExMF9yZXNvdXJjZV9wb29sKSwgR0ZQ X0tFUk5FTCk7CisKKwlpZiAoIXBvb2wpCisJCXJldHVybiBOVUxMOworCisJaWYgKGRjZTYwX2Nv bnN0cnVjdChudW1fdmlydHVhbF9saW5rcywgZGMsIHBvb2wpKQorCQlyZXR1cm4gJnBvb2wtPmJh c2U7CisKKwlCUkVBS19UT19ERUJVR0dFUigpOworCXJldHVybiBOVUxMOworfQorCitzdGF0aWMg Ym9vbCBkY2U2MV9jb25zdHJ1Y3QoCisJdWludDhfdCBudW1fdmlydHVhbF9saW5rcywKKwlzdHJ1 Y3QgZGMgKmRjLAorCXN0cnVjdCBkY2UxMTBfcmVzb3VyY2VfcG9vbCAqcG9vbCkKK3sKKwl1bnNp Z25lZCBpbnQgaTsKKwlzdHJ1Y3QgZGNfY29udGV4dCAqY3R4ID0gZGMtPmN0eDsKKwlzdHJ1Y3Qg ZGNfZmlybXdhcmVfaW5mbyBpbmZvOworCXN0cnVjdCBkY19iaW9zICpicDsKKwlzdHJ1Y3QgZG1f cHBfc3RhdGljX2Nsb2NrX2luZm8gc3RhdGljX2Nsa19pbmZvID0gezB9OworCisJY3R4LT5kY19i aW9zLT5yZWdzID0gJmJpb3NfcmVnczsKKworCXBvb2wtPmJhc2UucmVzX2NhcCA9ICZyZXNfY2Fw XzYxOworCXBvb2wtPmJhc2UuZnVuY3MgPSAmZGNlNjBfcmVzX3Bvb2xfZnVuY3M7CisKKworCS8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisJICogIFJl c291cmNlICsgYXNpYyBjYXAgaGFyY29kaW5nICAgICAgICAgICAgICAgICoKKwkgKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwlwb29sLT5iYXNlLnVu ZGVybGF5X3BpcGVfaW5kZXggPSBOT19VTkRFUkxBWV9QSVBFOworCXBvb2wtPmJhc2UucGlwZV9j b3VudCA9IHJlc19jYXBfNjEubnVtX3RpbWluZ19nZW5lcmF0b3I7CisJcG9vbC0+YmFzZS50aW1p bmdfZ2VuZXJhdG9yX2NvdW50ID0gcmVzX2NhcF82MS5udW1fdGltaW5nX2dlbmVyYXRvcjsKKwlk Yy0+Y2Fwcy5tYXhfZG93bnNjYWxlX3JhdGlvID0gMjAwOworCWRjLT5jYXBzLmkyY19zcGVlZF9p bl9raHogPSA0MDsKKwlkYy0+Y2Fwcy5tYXhfY3Vyc29yX3NpemUgPSAxMjg7CisJZGMtPmNhcHMu aXNfYXB1ID0gdHJ1ZTsKKworCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCisJICogIENyZWF0ZSByZXNvdXJjZXMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICoKKwkgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KKworCWJwID0gY3R4LT5kY19iaW9zOworCisJaWYgKChicC0+ZnVuY3MtPmdldF9maXJt d2FyZV9pbmZvKGJwLCAmaW5mbykgPT0gQlBfUkVTVUxUX09LKSAmJgorCQlpbmZvLmV4dGVybmFs X2Nsb2NrX3NvdXJjZV9mcmVxdWVuY3lfZm9yX2RwICE9IDApIHsKKwkJcG9vbC0+YmFzZS5kcF9j bG9ja19zb3VyY2UgPQorCQkJCWRjZTYwX2Nsb2NrX3NvdXJjZV9jcmVhdGUoY3R4LCBicCwgQ0xP Q0tfU09VUkNFX0lEX0VYVEVSTkFMLCBOVUxMLCB0cnVlKTsKKworCQlwb29sLT5iYXNlLmNsb2Nr X3NvdXJjZXNbMF0gPQorCQkJCWRjZTYwX2Nsb2NrX3NvdXJjZV9jcmVhdGUoY3R4LCBicCwgQ0xP Q0tfU09VUkNFX0lEX1BMTDAsICZjbGtfc3JjX3JlZ3NbMF0sIGZhbHNlKTsKKwkJcG9vbC0+YmFz ZS5jbG9ja19zb3VyY2VzWzFdID0KKwkJCQlkY2U2MF9jbG9ja19zb3VyY2VfY3JlYXRlKGN0eCwg YnAsIENMT0NLX1NPVVJDRV9JRF9QTEwxLCAmY2xrX3NyY19yZWdzWzFdLCBmYWxzZSk7CisJCXBv b2wtPmJhc2UuY2xvY2tfc291cmNlc1syXSA9CisJCQkJZGNlNjBfY2xvY2tfc291cmNlX2NyZWF0 ZShjdHgsIGJwLCBDTE9DS19TT1VSQ0VfSURfUExMMiwgJmNsa19zcmNfcmVnc1syXSwgZmFsc2Up OworCQlwb29sLT5iYXNlLmNsa19zcmNfY291bnQgPSAzOworCisJfSBlbHNlIHsKKwkJcG9vbC0+ YmFzZS5kcF9jbG9ja19zb3VyY2UgPQorCQkJCWRjZTYwX2Nsb2NrX3NvdXJjZV9jcmVhdGUoY3R4 LCBicCwgQ0xPQ0tfU09VUkNFX0lEX1BMTDAsICZjbGtfc3JjX3JlZ3NbMF0sIHRydWUpOworCisJ CXBvb2wtPmJhc2UuY2xvY2tfc291cmNlc1swXSA9CisJCQkJZGNlNjBfY2xvY2tfc291cmNlX2Ny ZWF0ZShjdHgsIGJwLCBDTE9DS19TT1VSQ0VfSURfUExMMSwgJmNsa19zcmNfcmVnc1sxXSwgZmFs c2UpOworCQlwb29sLT5iYXNlLmNsb2NrX3NvdXJjZXNbMV0gPQorCQkJCWRjZTYwX2Nsb2NrX3Nv dXJjZV9jcmVhdGUoY3R4LCBicCwgQ0xPQ0tfU09VUkNFX0lEX1BMTDIsICZjbGtfc3JjX3JlZ3Nb Ml0sIGZhbHNlKTsKKwkJcG9vbC0+YmFzZS5jbGtfc3JjX2NvdW50ID0gMjsKKwl9CisKKwlpZiAo cG9vbC0+YmFzZS5kcF9jbG9ja19zb3VyY2UgPT0gTlVMTCkgeworCQlkbV9lcnJvcigiREM6IGZh aWxlZCB0byBjcmVhdGUgZHAgY2xvY2sgc291cmNlIVxuIik7CisJCUJSRUFLX1RPX0RFQlVHR0VS KCk7CisJCWdvdG8gcmVzX2NyZWF0ZV9mYWlsOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBwb29s LT5iYXNlLmNsa19zcmNfY291bnQ7IGkrKykgeworCQlpZiAocG9vbC0+YmFzZS5jbG9ja19zb3Vy Y2VzW2ldID09IE5VTEwpIHsKKwkJCWRtX2Vycm9yKCJEQzogZmFpbGVkIHRvIGNyZWF0ZSBjbG9j ayBzb3VyY2VzIVxuIik7CisJCQlCUkVBS19UT19ERUJVR0dFUigpOworCQkJZ290byByZXNfY3Jl YXRlX2ZhaWw7CisJCX0KKwl9CisKKwlwb29sLT5iYXNlLmRjY2cgPSBkY2VfZGNjZ19jcmVhdGUo Y3R4LAorCQkJJmRpc3BfY2xrX3JlZ3MsCisJCQkmZGlzcF9jbGtfc2hpZnQsCisJCQkmZGlzcF9j bGtfbWFzayk7CisJaWYgKHBvb2wtPmJhc2UuZGNjZyA9PSBOVUxMKSB7CisJCWRtX2Vycm9yKCJE QzogZmFpbGVkIHRvIGNyZWF0ZSBkaXNwbGF5IGNsb2NrIVxuIik7CisJCUJSRUFLX1RPX0RFQlVH R0VSKCk7CisJCWdvdG8gcmVzX2NyZWF0ZV9mYWlsOworCX0KKworCXBvb2wtPmJhc2UuZG1jdSA9 IGRjZV9kbWN1X2NyZWF0ZShjdHgsCisJCQkmZG1jdV9yZWdzLAorCQkJJmRtY3Vfc2hpZnQsCisJ CQkmZG1jdV9tYXNrKTsKKwlpZiAocG9vbC0+YmFzZS5kbWN1ID09IE5VTEwpIHsKKwkJZG1fZXJy b3IoIkRDOiBmYWlsZWQgdG8gY3JlYXRlIGRtY3UhXG4iKTsKKwkJQlJFQUtfVE9fREVCVUdHRVIo KTsKKwkJZ290byByZXNfY3JlYXRlX2ZhaWw7CisJfQorCisJcG9vbC0+YmFzZS5hYm0gPSBkY2Vf YWJtX2NyZWF0ZShjdHgsCisJCQkmYWJtX3JlZ3MsCisJCQkmYWJtX3NoaWZ0LAorCQkJJmFibV9t YXNrKTsKKwlpZiAocG9vbC0+YmFzZS5hYm0gPT0gTlVMTCkgeworCQlkbV9lcnJvcigiREM6IGZh aWxlZCB0byBjcmVhdGUgYWJtIVxuIik7CisJCUJSRUFLX1RPX0RFQlVHR0VSKCk7CisJCWdvdG8g cmVzX2NyZWF0ZV9mYWlsOworCX0KKworCWlmIChkbV9wcF9nZXRfc3RhdGljX2Nsb2NrcyhjdHgs ICZzdGF0aWNfY2xrX2luZm8pKQorCQlwb29sLT5iYXNlLmRjY2ctPm1heF9jbGtzX3N0YXRlID0K KwkJCQkJc3RhdGljX2Nsa19pbmZvLm1heF9jbG9ja3Nfc3RhdGU7CisKKwl7CisJCXN0cnVjdCBp cnFfc2VydmljZV9pbml0X2RhdGEgaW5pdF9kYXRhOworCQlpbml0X2RhdGEuY3R4ID0gZGMtPmN0 eDsKKwkJcG9vbC0+YmFzZS5pcnFzID0gZGFsX2lycV9zZXJ2aWNlX2RjZTYwX2NyZWF0ZSgmaW5p dF9kYXRhKTsKKwkJaWYgKCFwb29sLT5iYXNlLmlycXMpCisJCQlnb3RvIHJlc19jcmVhdGVfZmFp bDsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgcG9vbC0+YmFzZS5waXBlX2NvdW50OyBpKyspIHsK KwkJcG9vbC0+YmFzZS50aW1pbmdfZ2VuZXJhdG9yc1tpXSA9IGRjZTYwX3RpbWluZ19nZW5lcmF0 b3JfY3JlYXRlKAorCQkJCWN0eCwgaSwgJmRjZTYwX3RnX29mZnNldHNbaV0pOworCQlpZiAocG9v bC0+YmFzZS50aW1pbmdfZ2VuZXJhdG9yc1tpXSA9PSBOVUxMKSB7CisJCQlCUkVBS19UT19ERUJV R0dFUigpOworCQkJZG1fZXJyb3IoIkRDOiBmYWlsZWQgdG8gY3JlYXRlIHRnIVxuIik7CisJCQln b3RvIHJlc19jcmVhdGVfZmFpbDsKKwkJfQorCisJCXBvb2wtPmJhc2UubWlzW2ldID0gZGNlNjBf bWVtX2lucHV0X2NyZWF0ZShjdHgsIGkpOworCQlpZiAocG9vbC0+YmFzZS5taXNbaV0gPT0gTlVM TCkgeworCQkJQlJFQUtfVE9fREVCVUdHRVIoKTsKKwkJCWRtX2Vycm9yKCJEQzogZmFpbGVkIHRv IGNyZWF0ZSBtZW1vcnkgaW5wdXQhXG4iKTsKKwkJCWdvdG8gcmVzX2NyZWF0ZV9mYWlsOworCQl9 CisKKwkJcG9vbC0+YmFzZS5pcHBzW2ldID0gZGNlNjBfaXBwX2NyZWF0ZShjdHgsIGkpOworCQlp ZiAocG9vbC0+YmFzZS5pcHBzW2ldID09IE5VTEwpIHsKKwkJCUJSRUFLX1RPX0RFQlVHR0VSKCk7 CisJCQlkbV9lcnJvcigiREM6IGZhaWxlZCB0byBjcmVhdGUgaW5wdXQgcGl4ZWwgcHJvY2Vzc29y IVxuIik7CisJCQlnb3RvIHJlc19jcmVhdGVfZmFpbDsKKwkJfQorCisJCXBvb2wtPmJhc2UudHJh bnNmb3Jtc1tpXSA9IGRjZTYwX3RyYW5zZm9ybV9jcmVhdGUoY3R4LCBpKTsKKwkJaWYgKHBvb2wt PmJhc2UudHJhbnNmb3Jtc1tpXSA9PSBOVUxMKSB7CisJCQlCUkVBS19UT19ERUJVR0dFUigpOwor CQkJZG1fZXJyb3IoIkRDOiBmYWlsZWQgdG8gY3JlYXRlIHRyYW5zZm9ybSFcbiIpOworCQkJZ290 byByZXNfY3JlYXRlX2ZhaWw7CisJCX0KKworCQlwb29sLT5iYXNlLm9wcHNbaV0gPSBkY2U2MF9v cHBfY3JlYXRlKGN0eCwgaSk7CisJCWlmIChwb29sLT5iYXNlLm9wcHNbaV0gPT0gTlVMTCkgewor CQkJQlJFQUtfVE9fREVCVUdHRVIoKTsKKwkJCWRtX2Vycm9yKCJEQzogZmFpbGVkIHRvIGNyZWF0 ZSBvdXRwdXQgcGl4ZWwgcHJvY2Vzc29yIVxuIik7CisJCQlnb3RvIHJlc19jcmVhdGVfZmFpbDsK KwkJfQorCX0KKworCWRjLT5jYXBzLm1heF9wbGFuZXMgPSAgcG9vbC0+YmFzZS5waXBlX2NvdW50 OworCWRjLT5jYXBzLmRpc2FibGVfZHBfY2xrX3NoYXJlID0gdHJ1ZTsKKworCWlmICghcmVzb3Vy Y2VfY29uc3RydWN0KG51bV92aXJ0dWFsX2xpbmtzLCBkYywgJnBvb2wtPmJhc2UsCisJCQkmcmVz X2NyZWF0ZV9mdW5jcykpCisJCWdvdG8gcmVzX2NyZWF0ZV9mYWlsOworCisJLyogQ3JlYXRlIGhh cmR3YXJlIHNlcXVlbmNlciAqLworCWRjZTYwX2h3X3NlcXVlbmNlcl9jb25zdHJ1Y3QoZGMpOwor CisJcmV0dXJuIHRydWU7CisKK3Jlc19jcmVhdGVfZmFpbDoKKwlkZXN0cnVjdChwb29sKTsKKwly ZXR1cm4gZmFsc2U7Cit9CisKK3N0cnVjdCByZXNvdXJjZV9wb29sICpkY2U2MV9jcmVhdGVfcmVz b3VyY2VfcG9vbCgKKwl1aW50OF90IG51bV92aXJ0dWFsX2xpbmtzLAorCXN0cnVjdCBkYyAqZGMp Cit7CisJc3RydWN0IGRjZTExMF9yZXNvdXJjZV9wb29sICpwb29sID0KKwkJa3phbGxvYyhzaXpl b2Yoc3RydWN0IGRjZTExMF9yZXNvdXJjZV9wb29sKSwgR0ZQX0tFUk5FTCk7CisKKwlpZiAoIXBv b2wpCisJCXJldHVybiBOVUxMOworCisJaWYgKGRjZTYxX2NvbnN0cnVjdChudW1fdmlydHVhbF9s aW5rcywgZGMsIHBvb2wpKQorCQlyZXR1cm4gJnBvb2wtPmJhc2U7CisKKwlCUkVBS19UT19ERUJV R0dFUigpOworCXJldHVybiBOVUxMOworfQorCitzdGF0aWMgYm9vbCBkY2U2NF9jb25zdHJ1Y3Qo CisJdWludDhfdCBudW1fdmlydHVhbF9saW5rcywKKwlzdHJ1Y3QgZGMgKmRjLAorCXN0cnVjdCBk Y2UxMTBfcmVzb3VyY2VfcG9vbCAqcG9vbCkKK3sKKwl1bnNpZ25lZCBpbnQgaTsKKwlzdHJ1Y3Qg ZGNfY29udGV4dCAqY3R4ID0gZGMtPmN0eDsKKwlzdHJ1Y3QgZGNfZmlybXdhcmVfaW5mbyBpbmZv OworCXN0cnVjdCBkY19iaW9zICpicDsKKwlzdHJ1Y3QgZG1fcHBfc3RhdGljX2Nsb2NrX2luZm8g c3RhdGljX2Nsa19pbmZvID0gezB9OworCisJY3R4LT5kY19iaW9zLT5yZWdzID0gJmJpb3NfcmVn czsKKworCXBvb2wtPmJhc2UucmVzX2NhcCA9ICZyZXNfY2FwXzY0OworCXBvb2wtPmJhc2UuZnVu Y3MgPSAmZGNlNjBfcmVzX3Bvb2xfZnVuY3M7CisKKworCS8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCisJICogIFJlc291cmNlICsgYXNpYyBjYXAgaGFy Y29kaW5nICAgICAgICAgICAgICAgICoKKwkgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KKwlwb29sLT5iYXNlLnVuZGVybGF5X3BpcGVfaW5kZXggPSBO T19VTkRFUkxBWV9QSVBFOworCXBvb2wtPmJhc2UucGlwZV9jb3VudCA9IHJlc19jYXBfNjQubnVt X3RpbWluZ19nZW5lcmF0b3I7CisJcG9vbC0+YmFzZS50aW1pbmdfZ2VuZXJhdG9yX2NvdW50ID0g cmVzX2NhcF82NC5udW1fdGltaW5nX2dlbmVyYXRvcjsKKwlkYy0+Y2Fwcy5tYXhfZG93bnNjYWxl X3JhdGlvID0gMjAwOworCWRjLT5jYXBzLmkyY19zcGVlZF9pbl9raHogPSA0MDsKKwlkYy0+Y2Fw cy5tYXhfY3Vyc29yX3NpemUgPSAxMjg7CisJZGMtPmNhcHMuaXNfYXB1ID0gdHJ1ZTsKKworCS8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisJICogIENy ZWF0ZSByZXNvdXJjZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKwkgKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCWJwID0gY3R4LT5k Y19iaW9zOworCisJaWYgKChicC0+ZnVuY3MtPmdldF9maXJtd2FyZV9pbmZvKGJwLCAmaW5mbykg PT0gQlBfUkVTVUxUX09LKSAmJgorCQlpbmZvLmV4dGVybmFsX2Nsb2NrX3NvdXJjZV9mcmVxdWVu Y3lfZm9yX2RwICE9IDApIHsKKwkJcG9vbC0+YmFzZS5kcF9jbG9ja19zb3VyY2UgPQorCQkJCWRj ZTYwX2Nsb2NrX3NvdXJjZV9jcmVhdGUoY3R4LCBicCwgQ0xPQ0tfU09VUkNFX0lEX0VYVEVSTkFM LCBOVUxMLCB0cnVlKTsKKworCQlwb29sLT5iYXNlLmNsb2NrX3NvdXJjZXNbMF0gPQorCQkJCWRj ZTYwX2Nsb2NrX3NvdXJjZV9jcmVhdGUoY3R4LCBicCwgQ0xPQ0tfU09VUkNFX0lEX1BMTDEsICZj bGtfc3JjX3JlZ3NbMF0sIGZhbHNlKTsKKwkJcG9vbC0+YmFzZS5jbG9ja19zb3VyY2VzWzFdID0K KwkJCQlkY2U2MF9jbG9ja19zb3VyY2VfY3JlYXRlKGN0eCwgYnAsIENMT0NLX1NPVVJDRV9JRF9Q TEwyLCAmY2xrX3NyY19yZWdzWzFdLCBmYWxzZSk7CisJCXBvb2wtPmJhc2UuY2xrX3NyY19jb3Vu dCA9IDI7CisKKwl9IGVsc2UgeworCQlwb29sLT5iYXNlLmRwX2Nsb2NrX3NvdXJjZSA9CisJCQkJ ZGNlNjBfY2xvY2tfc291cmNlX2NyZWF0ZShjdHgsIGJwLCBDTE9DS19TT1VSQ0VfSURfUExMMSwg JmNsa19zcmNfcmVnc1swXSwgdHJ1ZSk7CisKKwkJcG9vbC0+YmFzZS5jbG9ja19zb3VyY2VzWzBd ID0KKwkJCQlkY2U2MF9jbG9ja19zb3VyY2VfY3JlYXRlKGN0eCwgYnAsIENMT0NLX1NPVVJDRV9J RF9QTEwyLCAmY2xrX3NyY19yZWdzWzFdLCBmYWxzZSk7CisJCXBvb2wtPmJhc2UuY2xrX3NyY19j b3VudCA9IDE7CisJfQorCisJaWYgKHBvb2wtPmJhc2UuZHBfY2xvY2tfc291cmNlID09IE5VTEwp IHsKKwkJZG1fZXJyb3IoIkRDOiBmYWlsZWQgdG8gY3JlYXRlIGRwIGNsb2NrIHNvdXJjZSFcbiIp OworCQlCUkVBS19UT19ERUJVR0dFUigpOworCQlnb3RvIHJlc19jcmVhdGVfZmFpbDsKKwl9CisK Kwlmb3IgKGkgPSAwOyBpIDwgcG9vbC0+YmFzZS5jbGtfc3JjX2NvdW50OyBpKyspIHsKKwkJaWYg KHBvb2wtPmJhc2UuY2xvY2tfc291cmNlc1tpXSA9PSBOVUxMKSB7CisJCQlkbV9lcnJvcigiREM6 IGZhaWxlZCB0byBjcmVhdGUgY2xvY2sgc291cmNlcyFcbiIpOworCQkJQlJFQUtfVE9fREVCVUdH RVIoKTsKKwkJCWdvdG8gcmVzX2NyZWF0ZV9mYWlsOworCQl9CisJfQorCisJcG9vbC0+YmFzZS5k Y2NnID0gZGNlX2RjY2dfY3JlYXRlKGN0eCwKKwkJCSZkaXNwX2Nsa19yZWdzLAorCQkJJmRpc3Bf Y2xrX3NoaWZ0LAorCQkJJmRpc3BfY2xrX21hc2spOworCWlmIChwb29sLT5iYXNlLmRjY2cgPT0g TlVMTCkgeworCQlkbV9lcnJvcigiREM6IGZhaWxlZCB0byBjcmVhdGUgZGlzcGxheSBjbG9jayFc biIpOworCQlCUkVBS19UT19ERUJVR0dFUigpOworCQlnb3RvIHJlc19jcmVhdGVfZmFpbDsKKwl9 CisKKwlwb29sLT5iYXNlLmRtY3UgPSBkY2VfZG1jdV9jcmVhdGUoY3R4LAorCQkJJmRtY3VfcmVn cywKKwkJCSZkbWN1X3NoaWZ0LAorCQkJJmRtY3VfbWFzayk7CisJaWYgKHBvb2wtPmJhc2UuZG1j dSA9PSBOVUxMKSB7CisJCWRtX2Vycm9yKCJEQzogZmFpbGVkIHRvIGNyZWF0ZSBkbWN1IVxuIik7 CisJCUJSRUFLX1RPX0RFQlVHR0VSKCk7CisJCWdvdG8gcmVzX2NyZWF0ZV9mYWlsOworCX0KKwor CXBvb2wtPmJhc2UuYWJtID0gZGNlX2FibV9jcmVhdGUoY3R4LAorCQkJJmFibV9yZWdzLAorCQkJ JmFibV9zaGlmdCwKKwkJCSZhYm1fbWFzayk7CisJaWYgKHBvb2wtPmJhc2UuYWJtID09IE5VTEwp IHsKKwkJZG1fZXJyb3IoIkRDOiBmYWlsZWQgdG8gY3JlYXRlIGFibSFcbiIpOworCQlCUkVBS19U T19ERUJVR0dFUigpOworCQlnb3RvIHJlc19jcmVhdGVfZmFpbDsKKwl9CisKKwlpZiAoZG1fcHBf Z2V0X3N0YXRpY19jbG9ja3MoY3R4LCAmc3RhdGljX2Nsa19pbmZvKSkKKwkJcG9vbC0+YmFzZS5k Y2NnLT5tYXhfY2xrc19zdGF0ZSA9CisJCQkJCXN0YXRpY19jbGtfaW5mby5tYXhfY2xvY2tzX3N0 YXRlOworCisJeworCQlzdHJ1Y3QgaXJxX3NlcnZpY2VfaW5pdF9kYXRhIGluaXRfZGF0YTsKKwkJ aW5pdF9kYXRhLmN0eCA9IGRjLT5jdHg7CisJCXBvb2wtPmJhc2UuaXJxcyA9IGRhbF9pcnFfc2Vy dmljZV9kY2U2MF9jcmVhdGUoJmluaXRfZGF0YSk7CisJCWlmICghcG9vbC0+YmFzZS5pcnFzKQor CQkJZ290byByZXNfY3JlYXRlX2ZhaWw7CisJfQorCisJZm9yIChpID0gMDsgaSA8IHBvb2wtPmJh c2UucGlwZV9jb3VudDsgaSsrKSB7CisJCXBvb2wtPmJhc2UudGltaW5nX2dlbmVyYXRvcnNbaV0g PSBkY2U2MF90aW1pbmdfZ2VuZXJhdG9yX2NyZWF0ZSgKKwkJCQljdHgsIGksICZkY2U2MF90Z19v ZmZzZXRzW2ldKTsKKwkJaWYgKHBvb2wtPmJhc2UudGltaW5nX2dlbmVyYXRvcnNbaV0gPT0gTlVM TCkgeworCQkJQlJFQUtfVE9fREVCVUdHRVIoKTsKKwkJCWRtX2Vycm9yKCJEQzogZmFpbGVkIHRv IGNyZWF0ZSB0ZyFcbiIpOworCQkJZ290byByZXNfY3JlYXRlX2ZhaWw7CisJCX0KKworCQlwb29s LT5iYXNlLm1pc1tpXSA9IGRjZTYwX21lbV9pbnB1dF9jcmVhdGUoY3R4LCBpKTsKKwkJaWYgKHBv b2wtPmJhc2UubWlzW2ldID09IE5VTEwpIHsKKwkJCUJSRUFLX1RPX0RFQlVHR0VSKCk7CisJCQlk bV9lcnJvcigiREM6IGZhaWxlZCB0byBjcmVhdGUgbWVtb3J5IGlucHV0IVxuIik7CisJCQlnb3Rv IHJlc19jcmVhdGVfZmFpbDsKKwkJfQorCisJCXBvb2wtPmJhc2UuaXBwc1tpXSA9IGRjZTYwX2lw cF9jcmVhdGUoY3R4LCBpKTsKKwkJaWYgKHBvb2wtPmJhc2UuaXBwc1tpXSA9PSBOVUxMKSB7CisJ CQlCUkVBS19UT19ERUJVR0dFUigpOworCQkJZG1fZXJyb3IoIkRDOiBmYWlsZWQgdG8gY3JlYXRl IGlucHV0IHBpeGVsIHByb2Nlc3NvciFcbiIpOworCQkJZ290byByZXNfY3JlYXRlX2ZhaWw7CisJ CX0KKworCQlwb29sLT5iYXNlLnRyYW5zZm9ybXNbaV0gPSBkY2U2MF90cmFuc2Zvcm1fY3JlYXRl KGN0eCwgaSk7CisJCWlmIChwb29sLT5iYXNlLnRyYW5zZm9ybXNbaV0gPT0gTlVMTCkgeworCQkJ QlJFQUtfVE9fREVCVUdHRVIoKTsKKwkJCWRtX2Vycm9yKCJEQzogZmFpbGVkIHRvIGNyZWF0ZSB0 cmFuc2Zvcm0hXG4iKTsKKwkJCWdvdG8gcmVzX2NyZWF0ZV9mYWlsOworCQl9CisKKwkJcG9vbC0+ YmFzZS5vcHBzW2ldID0gZGNlNjBfb3BwX2NyZWF0ZShjdHgsIGkpOworCQlpZiAocG9vbC0+YmFz ZS5vcHBzW2ldID09IE5VTEwpIHsKKwkJCUJSRUFLX1RPX0RFQlVHR0VSKCk7CisJCQlkbV9lcnJv cigiREM6IGZhaWxlZCB0byBjcmVhdGUgb3V0cHV0IHBpeGVsIHByb2Nlc3NvciFcbiIpOworCQkJ Z290byByZXNfY3JlYXRlX2ZhaWw7CisJCX0KKwl9CisKKwlkYy0+Y2Fwcy5tYXhfcGxhbmVzID0g IHBvb2wtPmJhc2UucGlwZV9jb3VudDsKKwlkYy0+Y2Fwcy5kaXNhYmxlX2RwX2Nsa19zaGFyZSA9 IHRydWU7CisKKwlpZiAoIXJlc291cmNlX2NvbnN0cnVjdChudW1fdmlydHVhbF9saW5rcywgZGMs ICZwb29sLT5iYXNlLAorCQkJJnJlc19jcmVhdGVfZnVuY3MpKQorCQlnb3RvIHJlc19jcmVhdGVf ZmFpbDsKKworCS8qIENyZWF0ZSBoYXJkd2FyZSBzZXF1ZW5jZXIgKi8KKwlkY2U2MF9od19zZXF1 ZW5jZXJfY29uc3RydWN0KGRjKTsKKworCXJldHVybiB0cnVlOworCityZXNfY3JlYXRlX2ZhaWw6 CisJZGVzdHJ1Y3QocG9vbCk7CisJcmV0dXJuIGZhbHNlOworfQorCitzdHJ1Y3QgcmVzb3VyY2Vf cG9vbCAqZGNlNjRfY3JlYXRlX3Jlc291cmNlX3Bvb2woCisJdWludDhfdCBudW1fdmlydHVhbF9s aW5rcywKKwlzdHJ1Y3QgZGMgKmRjKQoreworCXN0cnVjdCBkY2UxMTBfcmVzb3VyY2VfcG9vbCAq cG9vbCA9CisJCWt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBkY2UxMTBfcmVzb3VyY2VfcG9vbCksIEdG UF9LRVJORUwpOworCisJaWYgKCFwb29sKQorCQlyZXR1cm4gTlVMTDsKKworCWlmIChkY2U2NF9j b25zdHJ1Y3QobnVtX3ZpcnR1YWxfbGlua3MsIGRjLCBwb29sKSkKKwkJcmV0dXJuICZwb29sLT5i YXNlOworCisJQlJFQUtfVE9fREVCVUdHRVIoKTsKKwlyZXR1cm4gTlVMTDsKK30KZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2U2MC9kY2U2MF9yZXNvdXJjZS5o IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZTYwL2RjZTYwX3Jlc291cmNlLmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iMzBlNGU0ZWQ3YzAKLS0t IC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlNjAvZGNl NjBfcmVzb3VyY2UuaApAQCAtMCwwICsxLDQ3IEBACisvKgorKiBDb3B5cmlnaHQgMjAxMi0xNSBB ZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkg Z3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNv cHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0 aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3Ry aWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVz ZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwK KyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVy c29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJq ZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJp Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBp bgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUu CisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFO VFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVW RU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykgQkUgTElB QkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKKyAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhF UiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAorICogQVJJU0lO RyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUg VVNFIE9SCisgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQXV0aG9y czogQU1ECisgKgorICovCisKKyNpZm5kZWYgX19EQ19SRVNPVVJDRV9EQ0U2MF9IX18KKyNkZWZp bmUgX19EQ19SRVNPVVJDRV9EQ0U2MF9IX18KKworI2luY2x1ZGUgImNvcmVfdHlwZXMuaCIKKwor c3RydWN0IGRjOworc3RydWN0IHJlc291cmNlX3Bvb2w7CisKK3N0cnVjdCByZXNvdXJjZV9wb29s ICpkY2U2MF9jcmVhdGVfcmVzb3VyY2VfcG9vbCgKKwl1aW50OF90IG51bV92aXJ0dWFsX2xpbmtz LAorCXN0cnVjdCBkYyAqZGMpOworCitzdHJ1Y3QgcmVzb3VyY2VfcG9vbCAqZGNlNjFfY3JlYXRl X3Jlc291cmNlX3Bvb2woCisJdWludDhfdCBudW1fdmlydHVhbF9saW5rcywKKwlzdHJ1Y3QgZGMg KmRjKTsKKworc3RydWN0IHJlc291cmNlX3Bvb2wgKmRjZTY0X2NyZWF0ZV9yZXNvdXJjZV9wb29s KAorCXVpbnQ4X3QgbnVtX3ZpcnR1YWxfbGlua3MsCisJc3RydWN0IGRjICpkYyk7CisKKyNlbmRp ZiAvKiBfX0RDX1JFU09VUkNFX0RDRTYwX0hfXyAqLworCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlNjAvZGNlNjBfdGltaW5nX2dlbmVyYXRvci5jIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZTYwL2RjZTYwX3RpbWluZ19nZW5lcmF0b3Iu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjkwYjYxMDM2N2FmOAot LS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2U2MC9k Y2U2MF90aW1pbmdfZ2VuZXJhdG9yLmMKQEAgLTAsMCArMSwyNDIgQEAKKy8qCisgKiBDb3B5cmln aHQgMjAxMi0xNSBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCisgKgorICogUGVybWlzc2lv biBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWlu aW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0 aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3 aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUg cmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwg c3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0 byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRv IGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUg YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBi ZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0 aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJ VEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xV RElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ LAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVO VC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRI T1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKKyAqIE9USEVSIExJQUJJ TElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF LAorICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU V0FSRSBPUiBUSEUgVVNFIE9SCisgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisg KgorICogQXV0aG9yczogQU1ECisgKgorICovCisKKyNpbmNsdWRlICJkbV9zZXJ2aWNlcy5oIgor CisvKiBpbmNsdWRlIERDRTYgcmVnaXN0ZXIgaGVhZGVyIGZpbGVzICovCisjaW5jbHVkZSAiZGNl L2RjZV82XzBfZC5oIgorI2luY2x1ZGUgImRjZS9kY2VfNl8wX3NoX21hc2suaCIKKworI2luY2x1 ZGUgImRjX3R5cGVzLmgiCisKKyNpbmNsdWRlICJpbmNsdWRlL2dycGhfb2JqZWN0X2lkLmgiCisj aW5jbHVkZSAiaW5jbHVkZS9sb2dnZXJfaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiLi4vZGNlMTEw L2RjZTExMF90aW1pbmdfZ2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiZGNlNjBfdGltaW5nX2dlbmVy YXRvci5oIgorCisjaW5jbHVkZSAidGltaW5nX2dlbmVyYXRvci5oIgorCitlbnVtIGJsYWNrX2Nv bG9yX2Zvcm1hdCB7CisJQkxBQ0tfQ09MT1JfRk9STUFUX1JHQl9GVUxMUkFOR0UgPSAwLAkvKiB1 c2VkIGFzIGluZGV4IGluIGFycmF5ICovCisJQkxBQ0tfQ09MT1JfRk9STUFUX1JHQl9MSU1JVEVE LAorCUJMQUNLX0NPTE9SX0ZPUk1BVF9ZVVZfVFYsCisJQkxBQ0tfQ09MT1JfRk9STUFUX1lVVl9D ViwKKwlCTEFDS19DT0xPUl9GT1JNQVRfWVVWX1NVUEVSX0FBLAorCisJQkxBQ0tfQ09MT1JfRk9S TUFUX0NPVU5UCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGRjZTExMF90aW1pbmdfZ2VuZXJh dG9yX29mZnNldHMgcmVnX29mZnNldHNbXSA9IHsKK3sKKwkuY3J0YyA9IChtbUNSVEMwX0RDRkVf TUVNX0xJR0hUX1NMRUVQX0NOVEwgLSBtbUNSVEMwX0RDRkVfTUVNX0xJR0hUX1NMRUVQX0NOVEwp LAorCS5kY3AgPSAobW1EQ1AwX0dSUEhfQ09OVFJPTCAtIG1tRENQMF9HUlBIX0NPTlRST0wpLAor fSwKK3sKKwkuY3J0YyA9IChtbUNSVEMxX0RDRkVfTUVNX0xJR0hUX1NMRUVQX0NOVEwgLSBtbUNS VEMwX0RDRkVfTUVNX0xJR0hUX1NMRUVQX0NOVEwpLAorCS5kY3AgPSAobW1EQ1AxX0dSUEhfQ09O VFJPTCAtIG1tRENQMF9HUlBIX0NPTlRST0wpLAorfSwKK3sKKwkuY3J0YyA9IChtbUNSVEMyX0RD RkVfTUVNX0xJR0hUX1NMRUVQX0NOVEwgLSBtbUNSVEMwX0RDRkVfTUVNX0xJR0hUX1NMRUVQX0NO VEwpLAorCS5kY3AgPSAobW1EQ1AyX0dSUEhfQ09OVFJPTCAtIG1tRENQMF9HUlBIX0NPTlRST0wp LAorfSwKK3sKKwkuY3J0YyA9IChtbUNSVEMzX0RDRkVfTUVNX0xJR0hUX1NMRUVQX0NOVEwgLSBt bUNSVEMwX0RDRkVfTUVNX0xJR0hUX1NMRUVQX0NOVEwpLAorCS5kY3AgPSAobW1EQ1AzX0dSUEhf Q09OVFJPTCAtIG1tRENQMF9HUlBIX0NPTlRST0wpLAorfSwKK3sKKwkuY3J0YyA9IChtbUNSVEM0 X0RDRkVfTUVNX0xJR0hUX1NMRUVQX0NOVEwgLSBtbUNSVEMwX0RDRkVfTUVNX0xJR0hUX1NMRUVQ X0NOVEwpLAorCS5kY3AgPSAobW1EQ1A0X0dSUEhfQ09OVFJPTCAtIG1tRENQMF9HUlBIX0NPTlRS T0wpLAorfSwKK3sKKwkuY3J0YyA9IChtbUNSVEM1X0RDRkVfTUVNX0xJR0hUX1NMRUVQX0NOVEwg LSBtbUNSVEMwX0RDRkVfTUVNX0xJR0hUX1NMRUVQX0NOVEwpLAorCS5kY3AgPSAobW1EQ1A1X0dS UEhfQ09OVFJPTCAtIG1tRENQMF9HUlBIX0NPTlRST0wpLAorfQorfTsKKworI2RlZmluZSBOVU1C RVJfT0ZfRlJBTUVfVE9fV0FJVF9PTl9UUklHR0VSRURfUkVTRVQgMTAKKworI2RlZmluZSBNQVhf SF9UT1RBTCAoQ1JUQ19IX1RPVEFMX19DUlRDX0hfVE9UQUxfTUFTSyArIDEpCisjZGVmaW5lIE1B WF9WX1RPVEFMIChDUlRDX1ZfVE9UQUxfX0NSVENfVl9UT1RBTF9NQVNLaHcgKyAxKQorCisjZGVm aW5lIENSVENfUkVHKHJlZykgKHJlZyArIHRnMTEwLT5vZmZzZXRzLmNydGMpCisjZGVmaW5lIERD UF9SRUcocmVnKSAocmVnICsgdGcxMTAtPm9mZnNldHMuZGNwKQorI2RlZmluZSBETUlGX1JFRyhy ZWcpIChyZWcgKyB0ZzExMC0+b2Zmc2V0cy5kbWlmKQorCitzdGF0aWMgdm9pZCBwcm9ncmFtX3Bp eF9kdXIoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnLCB1aW50MzJfdCBwaXhfY2xrX2toeikK K3sKKwl1aW50NjRfdCBwaXhfZHVyOworCXVpbnQzMl90IGFkZHIgPSBtbURNSUZfUEcwX0RQR19Q SVBFX0FSQklUUkFUSU9OX0NPTlRST0wxCisJCQkJCSsgRENFMTEwVEdfRlJPTV9URyh0ZyktPm9m ZnNldHMuZG1pZjsKKwl1aW50MzJfdCB2YWx1ZSA9IGRtX3JlYWRfcmVnKHRnLT5jdHgsIGFkZHIp OworCisJaWYgKHBpeF9jbGtfa2h6ID09IDApCisJCXJldHVybjsKKworCXBpeF9kdXIgPSAxMDAw MDAwMDAwIC8gcGl4X2Nsa19raHo7CisKKwlzZXRfcmVnX2ZpZWxkX3ZhbHVlKAorCQl2YWx1ZSwK KwkJcGl4X2R1ciwKKwkJRFBHX1BJUEVfQVJCSVRSQVRJT05fQ09OVFJPTDEsCisJCVBJWEVMX0RV UkFUSU9OKTsKKworCWRtX3dyaXRlX3JlZyh0Zy0+Y3R4LCBhZGRyLCB2YWx1ZSk7Cit9CisKK3N0 YXRpYyB2b2lkIHByb2dyYW1fdGltaW5nKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0ZywKKwlj b25zdCBzdHJ1Y3QgZGNfY3J0Y190aW1pbmcgKnRpbWluZywKKwlib29sIHVzZV92YmlvcykKK3sK KwlpZiAoIXVzZV92YmlvcykKKwkJcHJvZ3JhbV9waXhfZHVyKHRnLCB0aW1pbmctPnBpeF9jbGtf a2h6KTsKKworCWRjZTExMF90Z19wcm9ncmFtX3RpbWluZyh0ZywgdGltaW5nLCB1c2VfdmJpb3Mp OworfQorCitzdGF0aWMgdm9pZCBkY2U2MF90aW1pbmdfZ2VuZXJhdG9yX2VuYWJsZV9hZHZhbmNl ZF9yZXF1ZXN0KAorCXN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0ZywKKwlib29sIGVuYWJsZSwK Kwljb25zdCBzdHJ1Y3QgZGNfY3J0Y190aW1pbmcgKnRpbWluZykKK3sKKwlzdHJ1Y3QgZGNlMTEw X3RpbWluZ19nZW5lcmF0b3IgKnRnMTEwID0gRENFMTEwVEdfRlJPTV9URyh0Zyk7CisJdWludDMy X3QgYWRkciA9IENSVENfUkVHKG1tQ1JUQ19TVEFSVF9MSU5FX0NPTlRST0wpOworCXVpbnQzMl90 IHZhbHVlID0gZG1fcmVhZF9yZWcodGctPmN0eCwgYWRkcik7CisKKwlpZiAoZW5hYmxlKSB7CisJ CXNldF9yZWdfZmllbGRfdmFsdWUoCisJCQl2YWx1ZSwKKwkJCTAsCisJCQlDUlRDX1NUQVJUX0xJ TkVfQ09OVFJPTCwKKwkJCUNSVENfTEVHQUNZX1JFUVVFU1RPUl9FTik7CisJfSBlbHNlIHsKKwkJ c2V0X3JlZ19maWVsZF92YWx1ZSgKKwkJCXZhbHVlLAorCQkJMSwKKwkJCUNSVENfU1RBUlRfTElO RV9DT05UUk9MLAorCQkJQ1JUQ19MRUdBQ1lfUkVRVUVTVE9SX0VOKTsKKwl9CisKKwlpZiAoKHRp bWluZy0+dl9zeW5jX3dpZHRoICsgdGltaW5nLT52X2Zyb250X3BvcmNoKSA8PSAzKSB7CisJCXNl dF9yZWdfZmllbGRfdmFsdWUoCisJCQl2YWx1ZSwKKwkJCTMsCisJCQlDUlRDX1NUQVJUX0xJTkVf Q09OVFJPTCwKKwkJCUNSVENfQURWQU5DRURfU1RBUlRfTElORV9QT1NJVElPTik7CisJCXNldF9y ZWdfZmllbGRfdmFsdWUoCisJCQl2YWx1ZSwKKwkJCTAsCisJCQlDUlRDX1NUQVJUX0xJTkVfQ09O VFJPTCwKKwkJCUNSVENfUFJFRkVUQ0hfRU4pOworCX0gZWxzZSB7CisJCXNldF9yZWdfZmllbGRf dmFsdWUoCisJCQl2YWx1ZSwKKwkJCTQsCisJCQlDUlRDX1NUQVJUX0xJTkVfQ09OVFJPTCwKKwkJ CUNSVENfQURWQU5DRURfU1RBUlRfTElORV9QT1NJVElPTik7CisJCXNldF9yZWdfZmllbGRfdmFs dWUoCisJCQl2YWx1ZSwKKwkJCTEsCisJCQlDUlRDX1NUQVJUX0xJTkVfQ09OVFJPTCwKKwkJCUNS VENfUFJFRkVUQ0hfRU4pOworCX0KKworCXNldF9yZWdfZmllbGRfdmFsdWUoCisJCXZhbHVlLAor CQkxLAorCQlDUlRDX1NUQVJUX0xJTkVfQ09OVFJPTCwKKwkJQ1JUQ19QUk9HUkVTU0lWRV9TVEFS VF9MSU5FX0VBUkxZKTsKKworCXNldF9yZWdfZmllbGRfdmFsdWUoCisJCXZhbHVlLAorCQkxLAor CQlDUlRDX1NUQVJUX0xJTkVfQ09OVFJPTCwKKwkJQ1JUQ19JTlRFUkxBQ0VfU1RBUlRfTElORV9F QVJMWSk7CisKKwlkbV93cml0ZV9yZWcodGctPmN0eCwgYWRkciwgdmFsdWUpOworfQorCitzdGF0 aWMgY29uc3Qgc3RydWN0IHRpbWluZ19nZW5lcmF0b3JfZnVuY3MgZGNlNjBfdGdfZnVuY3MgPSB7 CisJCS52YWxpZGF0ZV90aW1pbmcgPSBkY2UxMTBfdGdfdmFsaWRhdGVfdGltaW5nLAorCQkucHJv Z3JhbV90aW1pbmcgPSBwcm9ncmFtX3RpbWluZywKKwkJLmVuYWJsZV9jcnRjID0gZGNlMTEwX3Rp bWluZ19nZW5lcmF0b3JfZW5hYmxlX2NydGMsCisJCS5kaXNhYmxlX2NydGMgPSBkY2UxMTBfdGlt aW5nX2dlbmVyYXRvcl9kaXNhYmxlX2NydGMsCisJCS5pc19jb3VudGVyX21vdmluZyA9IGRjZTEx MF90aW1pbmdfZ2VuZXJhdG9yX2lzX2NvdW50ZXJfbW92aW5nLAorCQkuZ2V0X3Bvc2l0aW9uID0g ZGNlMTEwX3RpbWluZ19nZW5lcmF0b3JfZ2V0X3Bvc2l0aW9uLAorCQkuZ2V0X2ZyYW1lX2NvdW50 ID0gZGNlMTEwX3RpbWluZ19nZW5lcmF0b3JfZ2V0X3ZibGFua19jb3VudGVyLAorCQkuZ2V0X3Nj YW5vdXRwb3MgPSBkY2UxMTBfdGltaW5nX2dlbmVyYXRvcl9nZXRfY3J0Y19zY2Fub3V0cG9zLAor CQkuc2V0X2Vhcmx5X2NvbnRyb2wgPSBkY2UxMTBfdGltaW5nX2dlbmVyYXRvcl9zZXRfZWFybHlf Y29udHJvbCwKKwkJLndhaXRfZm9yX3N0YXRlID0gZGNlMTEwX3RnX3dhaXRfZm9yX3N0YXRlLAor CQkuc2V0X2JsYW5rID0gZGNlMTEwX3RnX3NldF9ibGFuaywKKwkJLmlzX2JsYW5rZWQgPSBkY2Ux MTBfdGdfaXNfYmxhbmtlZCwKKwkJLnNldF9jb2xvcnMgPSBkY2UxMTBfdGdfc2V0X2NvbG9ycywK KwkJLnNldF9vdmVyc2Nhbl9ibGFua19jb2xvciA9CisJCQkJZGNlMTEwX3RpbWluZ19nZW5lcmF0 b3Jfc2V0X292ZXJzY2FuX2NvbG9yX2JsYWNrLAorCQkuc2V0X2JsYW5rX2NvbG9yID0gZGNlMTEw X3RpbWluZ19nZW5lcmF0b3JfcHJvZ3JhbV9ibGFua19jb2xvciwKKwkJLmRpc2FibGVfdmdhID0g ZGNlMTEwX3RpbWluZ19nZW5lcmF0b3JfZGlzYWJsZV92Z2EsCisJCS5kaWRfdHJpZ2dlcmVkX3Jl c2V0X29jY3VyID0KKwkJCQlkY2UxMTBfdGltaW5nX2dlbmVyYXRvcl9kaWRfdHJpZ2dlcmVkX3Jl c2V0X29jY3VyLAorCQkuc2V0dXBfZ2xvYmFsX3N3YXBfbG9jayA9CisJCQkJZGNlMTEwX3RpbWlu Z19nZW5lcmF0b3Jfc2V0dXBfZ2xvYmFsX3N3YXBfbG9jaywKKwkJLmVuYWJsZV9yZXNldF90cmln Z2VyID0gZGNlMTEwX3RpbWluZ19nZW5lcmF0b3JfZW5hYmxlX3Jlc2V0X3RyaWdnZXIsCisJCS5k aXNhYmxlX3Jlc2V0X3RyaWdnZXIgPSBkY2UxMTBfdGltaW5nX2dlbmVyYXRvcl9kaXNhYmxlX3Jl c2V0X3RyaWdnZXIsCisJCS50ZWFyX2Rvd25fZ2xvYmFsX3N3YXBfbG9jayA9CisJCQkJZGNlMTEw X3RpbWluZ19nZW5lcmF0b3JfdGVhcl9kb3duX2dsb2JhbF9zd2FwX2xvY2ssCisJCS5zZXRfZHJy ID0gZGNlMTEwX3RpbWluZ19nZW5lcmF0b3Jfc2V0X2RyciwKKwkJLnNldF9zdGF0aWNfc2NyZWVu X2NvbnRyb2wgPQorCQkJZGNlMTEwX3RpbWluZ19nZW5lcmF0b3Jfc2V0X3N0YXRpY19zY3JlZW5f Y29udHJvbCwKKwkJLnNldF90ZXN0X3BhdHRlcm4gPSBkY2UxMTBfdGltaW5nX2dlbmVyYXRvcl9z ZXRfdGVzdF9wYXR0ZXJuLAorCQkuYXJtX3ZlcnRfaW50ciA9IGRjZTExMF9hcm1fdmVydF9pbnRy LAorCisJCS8qIERDRTYuMCBvdmVycmlkZXMgKi8KKwkJLmVuYWJsZV9hZHZhbmNlZF9yZXF1ZXN0 ID0KKwkJCQlkY2U2MF90aW1pbmdfZ2VuZXJhdG9yX2VuYWJsZV9hZHZhbmNlZF9yZXF1ZXN0LAor CQkuY29uZmlndXJlX2NyYyA9IGRjZTExMF9jb25maWd1cmVfY3JjLAorCQkuZ2V0X2NyYyA9IGRj ZTExMF9nZXRfY3JjLAorfTsKKwordm9pZCBkY2U2MF90aW1pbmdfZ2VuZXJhdG9yX2NvbnN0cnVj dCgKKwlzdHJ1Y3QgZGNlMTEwX3RpbWluZ19nZW5lcmF0b3IgKnRnMTEwLAorCXN0cnVjdCBkY19j b250ZXh0ICpjdHgsCisJdWludDMyX3QgaW5zdGFuY2UsCisJY29uc3Qgc3RydWN0IGRjZTExMF90 aW1pbmdfZ2VuZXJhdG9yX29mZnNldHMgKm9mZnNldHMpCit7CisJdGcxMTAtPmNvbnRyb2xsZXJf aWQgPSBDT05UUk9MTEVSX0lEX0QwICsgaW5zdGFuY2U7CisJdGcxMTAtPmJhc2UuaW5zdCA9IGlu c3RhbmNlOworCXRnMTEwLT5vZmZzZXRzID0gKm9mZnNldHM7CisJdGcxMTAtPmRlcml2ZWRfb2Zm c2V0cyA9IHJlZ19vZmZzZXRzW2luc3RhbmNlXTsKKworCXRnMTEwLT5iYXNlLmZ1bmNzID0gJmRj ZTYwX3RnX2Z1bmNzOworCisJdGcxMTAtPmJhc2UuY3R4ID0gY3R4OworCXRnMTEwLT5iYXNlLmJw ID0gY3R4LT5kY19iaW9zOworCisJdGcxMTAtPm1heF9oX3RvdGFsID0gQ1JUQ19IX1RPVEFMX19D UlRDX0hfVE9UQUxfTUFTSyArIDE7CisJdGcxMTAtPm1heF92X3RvdGFsID0gQ1JUQ19WX1RPVEFM X19DUlRDX1ZfVE9UQUxfTUFTSyArIDE7CisKKwl0ZzExMC0+bWluX2hfYmxhbmsgPSA1NjsKKwl0 ZzExMC0+bWluX2hfZnJvbnRfcG9yY2ggPSA0OworCXRnMTEwLT5taW5faF9iYWNrX3BvcmNoID0g NDsKK30KKwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZTYw L2RjZTYwX3RpbWluZ19nZW5lcmF0b3IuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9k Yy9kY2U2MC9kY2U2MF90aW1pbmdfZ2VuZXJhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwLi44OTcyY2QwZDU4MTUKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlNjAvZGNlNjBfdGltaW5nX2dlbmVyYXRvci5oCkBA IC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMi0xNSBBZHZhbmNlZCBNaWNybyBE ZXZpY2VzLCBJbmMuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0 d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiks CisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp bmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5 LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqICBhbmQvb3Igc2Vs bCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0 aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5k IHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3Bp ZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBT T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E LCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI RSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICog VEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJQUJMRSBGT1IgQU5ZIENM QUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9O IE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9G IE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgorICogT1RI RVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIEF1dGhvcnM6IEFNRAorICoKKyAq LworCisjaWZuZGVmIF9fRENfVElNSU5HX0dFTkVSQVRPUl9EQ0U2MF9IX18KKyNkZWZpbmUgX19E Q19USU1JTkdfR0VORVJBVE9SX0RDRTYwX0hfXworCisjaW5jbHVkZSAidGltaW5nX2dlbmVyYXRv ci5oIgorI2luY2x1ZGUgIi4uL2luY2x1ZGUvZ3JwaF9vYmplY3RfaWQuaCIKKworLyogRENFNi4w IGltcGxlbWVudGF0aW9uIGluaGVyaXRzIGZyb20gRENFMTEuMCAqLwordm9pZCBkY2U2MF90aW1p bmdfZ2VuZXJhdG9yX2NvbnN0cnVjdCgKKwlzdHJ1Y3QgZGNlMTEwX3RpbWluZ19nZW5lcmF0b3Ig KnRnLAorCXN0cnVjdCBkY19jb250ZXh0ICpjdHgsCisJdWludDMyX3QgaW5zdGFuY2UsCisJY29u c3Qgc3RydWN0IGRjZTExMF90aW1pbmdfZ2VuZXJhdG9yX29mZnNldHMgKm9mZnNldHMpOworCisj ZW5kaWYgLyogX19EQ19USU1JTkdfR0VORVJBVE9SX0RDRTYwX0hfXyAqLwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9pbmNsdWRlL2FzaWNfcmVnL2RjZS9kY2VfNl8wX3NoX21hc2su aCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvaW5jbHVkZS9hc2ljX3JlZy9kY2UvZGNlXzZfMF9zaF9t YXNrLmgKaW5kZXggYWJlMDViYzgwNzUyLi41NDkyYzZiOTg1MjUgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvaW5jbHVkZS9hc2ljX3JlZy9kY2UvZGNlXzZfMF9zaF9tYXNrLmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9pbmNsdWRlL2FzaWNfcmVnL2RjZS9kY2VfNl8wX3NoX21h c2suaApAQCAtMjI2NCw2ICsyMjY0LDEwIEBACiAjZGVmaW5lIENSVENfU1RBUlRfTElORV9DT05U Uk9MX19DUlRDX0FEVkFOQ0VEX1NUQVJUX0xJTkVfUE9TSVRJT05fX1NISUZUIDB4MDAwMDAwMTAK ICNkZWZpbmUgQ1JUQ19TVEFSVF9MSU5FX0NPTlRST0xfX0NSVENfSU5URVJMQUNFX1NUQVJUX0xJ TkVfRUFSTFlfTUFTSyAweDAwMDAwMTAwTAogI2RlZmluZSBDUlRDX1NUQVJUX0xJTkVfQ09OVFJP TF9fQ1JUQ19JTlRFUkxBQ0VfU1RBUlRfTElORV9FQVJMWV9fU0hJRlQgMHgwMDAwMDAwOAorI2Rl ZmluZSBDUlRDX1NUQVJUX0xJTkVfQ09OVFJPTF9fQ1JUQ19MRUdBQ1lfUkVRVUVTVE9SX0VOX01B U0sgMHgxMDAwMDAKKyNkZWZpbmUgQ1JUQ19TVEFSVF9MSU5FX0NPTlRST0xfX0NSVENfTEVHQUNZ X1JFUVVFU1RPUl9FTl9fU0hJRlQgMHgxNAorI2RlZmluZSBDUlRDX1NUQVJUX0xJTkVfQ09OVFJP TF9fQ1JUQ19QUkVGRVRDSF9FTl9NQVNLIDB4MTAwMDAwMDAKKyNkZWZpbmUgQ1JUQ19TVEFSVF9M SU5FX0NPTlRST0xfX0NSVENfUFJFRkVUQ0hfRU5fX1NISUZUIDB4MWMKICNkZWZpbmUgQ1JUQ19T VEFSVF9MSU5FX0NPTlRST0xfX0NSVENfUFJPR1JFU1NJVkVfU1RBUlRfTElORV9FQVJMWV9NQVNL IDB4MDAwMDAwMDFMCiAjZGVmaW5lIENSVENfU1RBUlRfTElORV9DT05UUk9MX19DUlRDX1BST0dS RVNTSVZFX1NUQVJUX0xJTkVfRUFSTFlfX1NISUZUIDB4MDAwMDAwMDAKICNkZWZpbmUgQ1JUQ19T VEFUVVNfX0NSVENfSF9BQ1RJVkVfRElTUF9NQVNLIDB4MDAwMjAwMDBMCi0tIAoyLjE3LjEKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFp bGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=