From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Deucher Subject: [PATCH 15/51] drm/amd/powerplay: add event manager sub-component Date: Thu, 12 Nov 2015 01:18:05 -0500 Message-ID: <1447309121-2480-16-git-send-email-alexander.deucher@amd.com> References: <1447309121-2480-1-git-send-email-alexander.deucher@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qg0-f53.google.com (mail-qg0-f53.google.com [209.85.192.53]) by gabe.freedesktop.org (Postfix) with ESMTPS id A29207A093 for ; Wed, 11 Nov 2015 22:19:09 -0800 (PST) Received: by qgec40 with SMTP id c40so40607236qge.2 for ; Wed, 11 Nov 2015 22:19:08 -0800 (PST) In-Reply-To: <1447309121-2480-1-git-send-email-alexander.deucher@amd.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Rex Zhu List-Id: dri-devel@lists.freedesktop.org RnJvbTogUmV4IFpodSA8UmV4LlpodUBhbWQuY29tPgoKVGhlIGV2ZW50IG1hbmFnZXIgaGFuZGxl cyBwb3dlciByZWxhdGVkIGRyaXZlciBldmVudHMuCgpTaWduZWQtb2ZmLWJ5OiBSZXggWmh1IDxS ZXguWmh1QGFtZC5jb20+ClJldmlld2VkLWJ5OiBKYW1teSBaaG91IDxKYW1teS5aaG91QGFtZC5j b20+ClJldmlld2VkLWJ5OiBBbGV4IERldWNoZXIgPGFsZXhhbmRlci5kZXVjaGVyQGFtZC5jb20+ Ci0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvTWFrZWZpbGUgICAgICAgICAgICAg fCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2FtZF9wb3dlcnBsYXkuYyAg ICAgIHwgIDIzICsrCiBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9ldmVudG1nci9NYWtl ZmlsZSAgICB8ICAxMSArCiAuLi4vZHJtL2FtZC9wb3dlcnBsYXkvZXZlbnRtZ3IvZXZlbnRhY3Rp b25jaGFpbnMuYyB8IDI4NyArKysrKysrKysrKysrKysKIC4uLi9kcm0vYW1kL3Bvd2VycGxheS9l dmVudG1nci9ldmVudGFjdGlvbmNoYWlucy5oIHwgIDYyICsrKysKIGRyaXZlcnMvZ3B1L2RybS9h bWQvcG93ZXJwbGF5L2V2ZW50bWdyL2V2ZW50aW5pdC5jIHwgMTgwICsrKysrKysrKwogZHJpdmVy cy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvZXZlbnRtZ3IvZXZlbnRpbml0LmggfCAgMzQgKysKIC4u Li9kcm0vYW1kL3Bvd2VycGxheS9ldmVudG1nci9ldmVudG1hbmFnZW1lbnQuYyAgIHwgMjE1ICsr KysrKysrKysrCiAuLi4vZHJtL2FtZC9wb3dlcnBsYXkvZXZlbnRtZ3IvZXZlbnRtYW5hZ2VtZW50 LmggICB8ICA1OSArKysKIGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2V2ZW50bWdyL2V2 ZW50bWdyLmMgIHwgMTE0ICsrKysrKwogLi4uL2RybS9hbWQvcG93ZXJwbGF5L2V2ZW50bWdyL2V2 ZW50c3ViY2hhaW5zLmMgICAgfCAzOTUgKysrKysrKysrKysrKysrKysrKysKIC4uLi9kcm0vYW1k L3Bvd2VycGxheS9ldmVudG1nci9ldmVudHN1YmNoYWlucy5oICAgIHwgIDk4ICsrKysrCiAuLi4v Z3B1L2RybS9hbWQvcG93ZXJwbGF5L2V2ZW50bWdyL2V2ZW50dGFza3MuYyAgICB8IDQwOCArKysr KysrKysrKysrKysrKysrKysKIC4uLi9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvZXZlbnRtZ3IvZXZl bnR0YXNrcy5oICAgIHwgIDg1ICsrKysrCiBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9l dmVudG1nci9wc20uYyAgICAgICB8IDExMSArKysrKysKIGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93 ZXJwbGF5L2V2ZW50bWdyL3BzbS5oICAgICAgIHwgIDM3ICsrCiBkcml2ZXJzL2dwdS9kcm0vYW1k L3Bvd2VycGxheS9pbmMvZXZlbnRtYW5hZ2VyLmggICB8IDEwOSArKysrKysKIGRyaXZlcnMvZ3B1 L2RybS9hbWQvcG93ZXJwbGF5L2luYy9ldmVudG1nci5oICAgICAgIHwgMTI1ICsrKysrKysKIGRy aXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2luYy9wcF9mZWF0dXJlLmggICAgIHwgIDY3ICsr KysKIGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2luYy9wcF9pbnN0YW5jZS5oICAgIHwg ICAyICsKIDIwIGZpbGVzIGNoYW5nZWQsIDI0MjMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2V2ZW50 bWdyL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dl cnBsYXkvZXZlbnRtZ3IvZXZlbnRhY3Rpb25jaGFpbnMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2V2ZW50bWdyL2V2ZW50YWN0aW9uY2hhaW5zLmgK IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9ldmVudG1n ci9ldmVudGluaXQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93 ZXJwbGF5L2V2ZW50bWdyL2V2ZW50aW5pdC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9n cHUvZHJtL2FtZC9wb3dlcnBsYXkvZXZlbnRtZ3IvZXZlbnRtYW5hZ2VtZW50LmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9ldmVudG1nci9ldmVudG1h bmFnZW1lbnQuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJw bGF5L2V2ZW50bWdyL2V2ZW50bWdyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9k cm0vYW1kL3Bvd2VycGxheS9ldmVudG1nci9ldmVudHN1YmNoYWlucy5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvZXZlbnRtZ3IvZXZlbnRzdWJjaGFp bnMuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2V2 ZW50bWdyL2V2ZW50dGFza3MuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9h bWQvcG93ZXJwbGF5L2V2ZW50bWdyL2V2ZW50dGFza3MuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2V2ZW50bWdyL3BzbS5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvZXZlbnRtZ3IvcHNtLmgKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9pbmMvZXZlbnRtYW5h Z2VyLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9p bmMvZXZlbnRtZ3IuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93 ZXJwbGF5L2luYy9wcF9mZWF0dXJlLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1k L3Bvd2VycGxheS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L01ha2Vm aWxlCmluZGV4IDYzNTljNjcuLjAyMzEwMjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvcG93ZXJwbGF5L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5 L01ha2VmaWxlCkBAIC02LDcgKzYsNyBAQCBzdWJkaXItY2NmbGFncy15ICs9IC1JaW5jbHVkZS9k cm0gIFwKIAogQU1EX1BQX1BBVEggPSAuLi9wb3dlcnBsYXkKIAotUFBfTElCUyA9IHNtdW1nciBo d21ncgorUFBfTElCUyA9IHNtdW1nciBod21nciBldmVudG1ncgogCiBBTURfUE9XRVJQTEFZID0g JChhZGRzdWZmaXggL01ha2VmaWxlLCQoYWRkcHJlZml4IGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93 ZXJwbGF5LywkKFBQX0xJQlMpKSkKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9w b3dlcnBsYXkvYW1kX3Bvd2VycGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkv YW1kX3Bvd2VycGxheS5jCmluZGV4IDg4ZmRiMDQuLjE5NjRhMmEgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2FtZF9wb3dlcnBsYXkuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL3Bvd2VycGxheS9hbWRfcG93ZXJwbGF5LmMKQEAgLTUyLDYgKzUyLDcgQEAgc3Rh dGljIGludCBwcF9zd19pbml0KHZvaWQgKmhhbmRsZSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAly ZXQgPSBod21nci0+cHB0YWJsZV9mdW5jLT5wcHRhYmxlX2luaXQoaHdtZ3IpOworCiAJaWYgKHJl dCA9PSAwKQogCQlyZXQgPSBod21nci0+aHdtZ3JfZnVuYy0+YmFja2VuZF9pbml0KGh3bWdyKTsK IApAQCAtODEsNiArODIsNyBAQCBzdGF0aWMgaW50IHBwX2h3X2luaXQodm9pZCAqaGFuZGxlKQog ewogCXN0cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFuZGxlOwogCXN0cnVjdCBwcF9zbXVtZ3IgKnNt dW1ncjsKKwlzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdyOwogCWludCByZXQgPSAwOwogCiAJ aWYgKGhhbmRsZSA9PSBOVUxMKQpAQCAtMTA2LDggKzEwOCwxNCBAQCBzdGF0aWMgaW50IHBwX2h3 X2luaXQodm9pZCAqaGFuZGxlKQogCQlzbXVtZ3ItPnNtdW1ncl9mdW5jcy0+c211X2Zpbmkoc211 bWdyKTsKIAkJcmV0dXJuIHJldDsKIAl9CisKIAlod19pbml0X3Bvd2VyX3N0YXRlX3RhYmxlKHBw X2hhbmRsZS0+aHdtZ3IpOworCWV2ZW50bWdyID0gcHBfaGFuZGxlLT5ldmVudG1ncjsKIAorCWlm IChldmVudG1nciA9PSBOVUxMIHx8IGV2ZW50bWdyLT5wcF9ldmVudG1ncl9pbml0ID09IE5VTEwp CisJCXJldHVybiAtRUlOVkFMOworCisJcmV0ID0gZXZlbnRtZ3ItPnBwX2V2ZW50bWdyX2luaXQo ZXZlbnRtZ3IpOwogCXJldHVybiAwOwogfQogCkBAIC0xMTUsMTEgKzEyMywxNyBAQCBzdGF0aWMg aW50IHBwX2h3X2Zpbmkodm9pZCAqaGFuZGxlKQogewogCXN0cnVjdCBwcF9pbnN0YW5jZSAqcHBf aGFuZGxlOwogCXN0cnVjdCBwcF9zbXVtZ3IgKnNtdW1ncjsKKwlzdHJ1Y3QgcHBfZXZlbnRtZ3Ig KmV2ZW50bWdyOwogCiAJaWYgKGhhbmRsZSA9PSBOVUxMKQogCQlyZXR1cm4gLUVJTlZBTDsKIAog CXBwX2hhbmRsZSA9IChzdHJ1Y3QgcHBfaW5zdGFuY2UgKiloYW5kbGU7CisJZXZlbnRtZ3IgPSBw cF9oYW5kbGUtPmV2ZW50bWdyOworCisJaWYgKGV2ZW50bWdyICE9IE5VTEwgfHwgZXZlbnRtZ3It PnBwX2V2ZW50bWdyX2ZpbmkgIT0gTlVMTCkKKwkJZXZlbnRtZ3ItPnBwX2V2ZW50bWdyX2Zpbmko ZXZlbnRtZ3IpOworCiAJc211bWdyID0gcHBfaGFuZGxlLT5zbXVfbWdyOwogCiAJaWYgKHNtdW1n ciAhPSBOVUxMIHx8IHNtdW1nci0+c211bWdyX2Z1bmNzICE9IE5VTEwgfHwKQEAgLTI3Myw5ICsy ODcsMTUgQEAgc3RhdGljIGludCBhbWRfcHBfaW5zdGFuY2VfaW5pdChzdHJ1Y3QgYW1kX3BwX2lu aXQgKnBwX2luaXQsCiAJaWYgKHJldCkKIAkJZ290byBmYWlsX2h3bWdyOwogCisJcmV0ID0gZXZl bnRtZ3JfaW5pdChoYW5kbGUpOworCWlmIChyZXQpCisJCWdvdG8gZmFpbF9ldmVudG1ncjsKKwog CWFtZF9wcC0+cHBfaGFuZGxlID0gaGFuZGxlOwogCXJldHVybiAwOwogCitmYWlsX2V2ZW50bWdy OgorCWh3bWdyX2ZpbmkoaGFuZGxlLT5od21ncik7CiBmYWlsX2h3bWdyOgogCXNtdW1fZmluaSho YW5kbGUtPnNtdV9tZ3IpOwogZmFpbF9zbXVtOgpAQCAtMjg2LDkgKzMwNiwxMiBAQCBmYWlsX3Nt dW06CiBzdGF0aWMgaW50IGFtZF9wcF9pbnN0YW5jZV9maW5pKHZvaWQgKmhhbmRsZSkKIHsKIAlz dHJ1Y3QgcHBfaW5zdGFuY2UgKmluc3RhbmNlID0gKHN0cnVjdCBwcF9pbnN0YW5jZSAqKWhhbmRs ZTsKKwogCWlmIChpbnN0YW5jZSA9PSBOVUxMKQogCQlyZXR1cm4gLUVJTlZBTDsKIAorCWV2ZW50 bWdyX2ZpbmkoaW5zdGFuY2UtPmV2ZW50bWdyKTsKKwogCWh3bWdyX2ZpbmkoaW5zdGFuY2UtPmh3 bWdyKTsKIAogCXNtdW1fZmluaShpbnN0YW5jZS0+c211X21ncik7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9ldmVudG1nci9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvcG93ZXJwbGF5L2V2ZW50bWdyL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjc1MDllMzgKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL3Bvd2VycGxheS9ldmVudG1nci9NYWtlZmlsZQpAQCAtMCwwICsxLDExIEBACisjCisj IE1ha2VmaWxlIGZvciB0aGUgJ2V2ZW50IG1hbmFnZXInIHN1Yi1jb21wb25lbnQgb2YgcG93ZXJw bGF5LgorIyBJdCBwcm92aWRlcyB0aGUgZXZlbnQgbWFuYWdlbWVudCBzZXJ2aWNlcyBmb3IgdGhl IGRyaXZlci4KKworRVZFTlRfTUdSID0gZXZlbnRtZ3IubyBldmVudGluaXQubyBldmVudG1hbmFn ZW1lbnQubyAgXAorCQlldmVudGFjdGlvbmNoYWlucy5vIGV2ZW50c3ViY2hhaW5zLm8gZXZlbnR0 YXNrcy5vIHBzbS5vCisKK0FNRF9QUF9FVkVOVCA9ICQoYWRkcHJlZml4ICQoQU1EX1BQX1BBVEgp L2V2ZW50bWdyLywkKEVWRU5UX01HUikpCisKK0FNRF9QT1dFUlBMQVlfRklMRVMgKz0gJChBTURf UFBfRVZFTlQpCisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2V2 ZW50bWdyL2V2ZW50YWN0aW9uY2hhaW5zLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxh eS9ldmVudG1nci9ldmVudGFjdGlvbmNoYWlucy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmU5ZmU4NWYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L3Bvd2VycGxheS9ldmVudG1nci9ldmVudGFjdGlvbmNoYWlucy5jCkBAIC0wLDAgKzEsMjg3IEBA CisvKgorICogQ29weXJpZ2h0IDIwMTUgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgorICoK KyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkg cGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0 ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0 aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRh dGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gs IGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNv ZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlz IGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6 CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBu b3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwg cG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURF RCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJ TVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1F UkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBO T05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIENPUFlSSUdIVCBIT0xE RVIoUykgT1IgQVVUSE9SKFMpIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCisg KiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JU IE9SIE9USEVSV0lTRSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04g V0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgorICogT1RIRVIgREVBTElOR1MgSU4gVEhF IFNPRlRXQVJFLgorICoKKyAqLworI2luY2x1ZGUgImV2ZW50bWdyLmgiCisjaW5jbHVkZSAiZXZl bnRhY3Rpb25jaGFpbnMuaCIKKyNpbmNsdWRlICJldmVudHN1YmNoYWlucy5oIgorCitzdGF0aWMg Y29uc3QgcGVtX2V2ZW50X2FjdGlvbiAqaW5pdGlhbGl6ZV9ldmVudFtdID0geworCWJsb2NrX2Fk anVzdF9wb3dlcl9zdGF0ZV90YXNrcywKKwlwb3dlcl9idWRnZXRfdGFza3MsCisJc3lzdGVtX2Nv bmZpZ190YXNrcywKKwlzZXR1cF9hc2ljX3Rhc2tzLAorCWVuYWJsZV9keW5hbWljX3N0YXRlX21h bmFnZW1lbnRfdGFza3MsCisJZW5hYmxlX2Nsb2NrX3Bvd2VyX2dhdGluZ3NfdGFza3MsCisJZ2V0 XzJkX3BlcmZvcm1hbmNlX3N0YXRlX3Rhc2tzLAorCXNldF9wZXJmb3JtYW5jZV9zdGF0ZV90YXNr cywKKwljb25kaXRpb25hbGx5X2ZvcmNlXzNkX3BlcmZvcm1hbmNlX3N0YXRlX3Rhc2tzLAorCXBy b2Nlc3NfdmJpb3NfZXZlbnRpbmZvX3Rhc2tzLAorCWJyb2FkY2FzdF9wb3dlcl9wb2xpY3lfdGFz a3MsCisJTlVMTAorfTsKKworY29uc3Qgc3RydWN0IGFjdGlvbl9jaGFpbiBpbml0aWFsaXplX2Fj dGlvbl9jaGFpbiA9IHsKKwkiSW5pdGlhbGl6ZSIsCisJaW5pdGlhbGl6ZV9ldmVudAorfTsKKwor c3RhdGljIGNvbnN0IHBlbV9ldmVudF9hY3Rpb24gKnVuaW5pdGlhbGl6ZV9ldmVudFtdID0gewor CXVuZ2F0ZV9hbGxfZGlzcGxheV9waHlzX3Rhc2tzLAorCXVuaW5pdGlhbGl6ZV9kaXNwbGF5X3Bo eV9hY2Nlc3NfdGFza3MsCisJZGlzYWJsZV9nZnhfdm9sdGFnZV9pc2xhbmRfcG93ZXJfZ2F0aW5n X3Rhc2tzLAorCWRpc2FibGVfZ2Z4X2Nsb2NrX2dhdGluZ190YXNrcywKKwlzZXRfYm9vdF9zdGF0 ZV90YXNrcywKKwlhZGp1c3RfcG93ZXJfc3RhdGVfdGFza3MsCisJZGlzYWJsZV9keW5hbWljX3N0 YXRlX21hbmFnZW1lbnRfdGFza3MsCisJZGlzYWJsZV9jbG9ja19wb3dlcl9nYXRpbmdzX3Rhc2tz LAorCWNsZWFudXBfYXNpY190YXNrcywKKwlwcmVwYXJlX2Zvcl9wbnBfc3RvcF90YXNrcywKKwlO VUxMCit9OworCitjb25zdCBzdHJ1Y3QgYWN0aW9uX2NoYWluIHVuaW5pdGlhbGl6ZV9hY3Rpb25f Y2hhaW4gPSB7CisJIlVuaW5pdGlhbGl6ZSIsCisJdW5pbml0aWFsaXplX2V2ZW50Cit9OworCitz dGF0aWMgY29uc3QgcGVtX2V2ZW50X2FjdGlvbiAqcG93ZXJfc291cmNlX2NoYW5nZV9ldmVudF9w cF9lbmFibGVkW10gPSB7CisJc2V0X3Bvd2VyX3NvdXJjZV90YXNrcywKKwlzZXRfcG93ZXJfc2F2 aW5nX3N0YXRlX3Rhc2tzLAorCWFkanVzdF9wb3dlcl9zdGF0ZV90YXNrcywKKwllbmFibGVfZGlz YWJsZV9mcHNfdGFza3MsCisJc2V0X25ibWN1X3N0YXRlX3Rhc2tzLAorCWJyb2FkY2FzdF9wb3dl cl9wb2xpY3lfdGFza3MsCisJTlVMTAorfTsKKworY29uc3Qgc3RydWN0IGFjdGlvbl9jaGFpbiBw b3dlcl9zb3VyY2VfY2hhbmdlX2FjdGlvbl9jaGFpbl9wcF9lbmFibGVkID0geworCSJQb3dlciBz b3VyY2UgY2hhbmdlIC0gUG93ZXJQbGF5IGVuYWJsZWQiLAorCXBvd2VyX3NvdXJjZV9jaGFuZ2Vf ZXZlbnRfcHBfZW5hYmxlZAorfTsKKworc3RhdGljIGNvbnN0IHBlbV9ldmVudF9hY3Rpb24gKnBv d2VyX3NvdXJjZV9jaGFuZ2VfZXZlbnRfcHBfZGlzYWJsZWRbXSA9IHsKKwlzZXRfcG93ZXJfc291 cmNlX3Rhc2tzLAorCXNldF9uYm1jdV9zdGF0ZV90YXNrcywKKwlOVUxMCit9OworCitjb25zdCBz dHJ1Y3QgYWN0aW9uX2NoYWluIHBvd2VyX3NvdXJjZV9jaGFuZ2VzX2FjdGlvbl9jaGFpbl9wcF9k aXNhYmxlZCA9IHsKKwkiUG93ZXIgc291cmNlIGNoYW5nZSAtIFBvd2VyUGxheSBkaXNhYmxlZCIs CisJcG93ZXJfc291cmNlX2NoYW5nZV9ldmVudF9wcF9kaXNhYmxlZAorfTsKKworc3RhdGljIGNv bnN0IHBlbV9ldmVudF9hY3Rpb24gKnBvd2VyX3NvdXJjZV9jaGFuZ2VfZXZlbnRfaGFyZHdhcmVf ZGNbXSA9IHsKKwlzZXRfcG93ZXJfc291cmNlX3Rhc2tzLAorCXNldF9wb3dlcl9zYXZpbmdfc3Rh dGVfdGFza3MsCisJYWRqdXN0X3Bvd2VyX3N0YXRlX3Rhc2tzLAorCWVuYWJsZV9kaXNhYmxlX2Zw c190YXNrcywKKwlyZXNldF9oYXJkd2FyZV9kY19ub3RpZmljYXRpb25fdGFza3MsCisJc2V0X25i bWN1X3N0YXRlX3Rhc2tzLAorCWJyb2FkY2FzdF9wb3dlcl9wb2xpY3lfdGFza3MsCisJTlVMTAor fTsKKworY29uc3Qgc3RydWN0IGFjdGlvbl9jaGFpbiBwb3dlcl9zb3VyY2VfY2hhbmdlX2FjdGlv bl9jaGFpbl9oYXJkd2FyZV9kYyA9IHsKKwkiUG93ZXIgc291cmNlIGNoYW5nZSAtIHdpdGggSGFy ZHdhcmUgREMgc3dpdGNoaW5nIiwKKwlwb3dlcl9zb3VyY2VfY2hhbmdlX2V2ZW50X2hhcmR3YXJl X2RjCit9OworCitzdGF0aWMgY29uc3QgcGVtX2V2ZW50X2FjdGlvbiAqc3VzcGVuZF9ldmVudFtd ID0geworCXJlc2V0X2Rpc3BsYXlfcGh5X2FjY2Vzc190YXNrcywKKwl1bnJlZ2lzdGVyX2ludGVy cnVwdF90YXNrcywKKwlkaXNhYmxlX2dmeF92b2x0YWdlX2lzbGFuZF9wb3dlcl9nYXRpbmdfdGFz a3MsCisJZGlzYWJsZV9nZnhfY2xvY2tfZ2F0aW5nX3Rhc2tzLAorCW5vdGlmeV9zbXVfc3VzcGVu ZF90YXNrcywKKwlkaXNhYmxlX3NtY19maXJtd2FyZV9jdGZfdGFza3MsCisJc2V0X2Jvb3Rfc3Rh dGVfdGFza3MsCisJYWRqdXN0X3Bvd2VyX3N0YXRlX3Rhc2tzLAorCWRpc2FibGVfZnBzX3Rhc2tz LAorCXZhcmlfYnJpZ2h0X3N1c3BlbmRfdGFza3MsCisJcmVzZXRfZmFuX3NwZWVkX3RvX2RlZmF1 bHRfdGFza3MsCisJcG93ZXJfZG93bl9hc2ljX3Rhc2tzLAorCWRpc2FibGVfc3R1dHRlcl9tb2Rl X3Rhc2tzLAorCXNldF9jb25uZWN0ZWRfc3RhbmRieV90YXNrcywKKwlibG9ja19od19hY2Nlc3Nf dGFza3MsCisJTlVMTAorfTsKKworY29uc3Qgc3RydWN0IGFjdGlvbl9jaGFpbiBzdXNwZW5kX2Fj dGlvbl9jaGFpbiA9IHsKKwkiU3VzcGVuZCIsCisJc3VzcGVuZF9ldmVudAorfTsKKworc3RhdGlj IGNvbnN0IHBlbV9ldmVudF9hY3Rpb24gKnJlc3VtZV9ldmVudFtdID0geworCXVuYmxvY2tfaHdf YWNjZXNzX3Rhc2tzLAorCXJlc3VtZV9jb25uZWN0ZWRfc3RhbmRieV90YXNrcywKKwlub3RpZnlf c211X3Jlc3VtZV90YXNrcywKKwlyZXNldF9kaXNwbGF5X2NvbmZpZ0NvdW50ZXJfdGFza3MsCisJ dXBkYXRlX2RhbF9jb25maWd1cmF0aW9uX3Rhc2tzLAorCXZhcmlfYnJpZ2h0X3Jlc3VtZV90YXNr cywKKwlibG9ja19hZGp1c3RfcG93ZXJfc3RhdGVfdGFza3MsCisJc2V0dXBfYXNpY190YXNrcywK KwllbmFibGVfc3R1dHRlcl9tb2RlX3Rhc2tzLCAvKm11c3QgZG8gdGhpcyBpbiBib290IHN0YXRl IGFuZCBiZWZvcmUgU01DIGlzIHN0YXJ0ZWQgKi8KKwllbmFibGVfZHluYW1pY19zdGF0ZV9tYW5h Z2VtZW50X3Rhc2tzLAorCWVuYWJsZV9jbG9ja19wb3dlcl9nYXRpbmdzX3Rhc2tzLAorCWVuYWJs ZV9kaXNhYmxlX2JhcG1fdGFza3MsCisJcmVzZXRfYm9vdF9zdGF0ZV90YXNrcywKKwlhZGp1c3Rf cG93ZXJfc3RhdGVfdGFza3MsCisJZW5hYmxlX2Rpc2FibGVfZnBzX3Rhc2tzLAorCW5vdGlmeV9o d19wb3dlcl9zb3VyY2VfdGFza3MsCisJcHJvY2Vzc192Ymlvc19ldmVudF9pbmZvX3Rhc2tzLAor CWVuYWJsZV9nZnhfY2xvY2tfZ2F0aW5nX3Rhc2tzLAorCWVuYWJsZV9nZnhfdm9sdGFnZV9pc2xh bmRfcG93ZXJfZ2F0aW5nX3Rhc2tzLAorCXJlc2V0X2Nsb2NrX2dhdGluZ190YXNrcywKKwlub3Rp Znlfc211X3ZwdV9yZWNvdmVyeV9lbmRfdGFza3MsCisJZGlzYWJsZV92cHVfY2FwX3Rhc2tzLAor CWV4ZWN1dGVfZXNjYXBlX3NlcXVlbmNlX3Rhc2tzLAorCU5VTEwKK307CisKKworY29uc3Qgc3Ry dWN0IGFjdGlvbl9jaGFpbiByZXN1bWVfYWN0aW9uX2NoYWluID0geworCSJyZXN1bWUiLAorCXJl c3VtZV9ldmVudAorfTsKKworc3RhdGljIGNvbnN0IHBlbV9ldmVudF9hY3Rpb24gKmNvbXBsZXRl X2luaXRfZXZlbnRbXSA9IHsKKwlhZGp1c3RfcG93ZXJfc3RhdGVfdGFza3MsCisJZW5hYmxlX2dm eF9jbG9ja19nYXRpbmdfdGFza3MsCisJZW5hYmxlX2dmeF92b2x0YWdlX2lzbGFuZF9wb3dlcl9n YXRpbmdfdGFza3MsCisJbm90aWZ5X3Bvd2VyX3N0YXRlX2NoYW5nZV90YXNrcywKKwlOVUxMCit9 OworCitjb25zdCBzdHJ1Y3QgYWN0aW9uX2NoYWluIGNvbXBsZXRlX2luaXRfYWN0aW9uX2NoYWlu ID0geworCSJjb21wbGV0ZSBpbml0IiwKKwljb21wbGV0ZV9pbml0X2V2ZW50Cit9OworCitzdGF0 aWMgY29uc3QgcGVtX2V2ZW50X2FjdGlvbiAqZW5hYmxlX2dmeF9jbG9ja19nYXRpbmdfZXZlbnRb XSA9IHsKKwllbmFibGVfZ2Z4X2Nsb2NrX2dhdGluZ190YXNrcywKKwlOVUxMCit9OworCitjb25z dCBzdHJ1Y3QgYWN0aW9uX2NoYWluIGVuYWJsZV9nZnhfY2xvY2tfZ2F0aW5nX2FjdGlvbl9jaGFp biA9IHsKKwkiZW5hYmxlIGdmeCBjbG9jayBnYXRlIiwKKwllbmFibGVfZ2Z4X2Nsb2NrX2dhdGlu Z19ldmVudAorfTsKKworc3RhdGljIGNvbnN0IHBlbV9ldmVudF9hY3Rpb24gKmRpc2FibGVfZ2Z4 X2Nsb2NrX2dhdGluZ19ldmVudFtdID0geworCWRpc2FibGVfZ2Z4X2Nsb2NrX2dhdGluZ190YXNr cywKKwlOVUxMCit9OworCitjb25zdCBzdHJ1Y3QgYWN0aW9uX2NoYWluIGRpc2FibGVfZ2Z4X2Ns b2NrX2dhdGluZ19hY3Rpb25fY2hhaW4gPSB7CisJImRpc2FibGUgZ2Z4IGNsb2NrIGdhdGUiLAor CWRpc2FibGVfZ2Z4X2Nsb2NrX2dhdGluZ19ldmVudAorfTsKKworc3RhdGljIGNvbnN0IHBlbV9l dmVudF9hY3Rpb24gKmVuYWJsZV9jZ3BnX2V2ZW50W10gPSB7CisJZW5hYmxlX2NncGdfdGFza3Ms CisJTlVMTAorfTsKKworY29uc3Qgc3RydWN0IGFjdGlvbl9jaGFpbiBlbmFibGVfY2dwZ19hY3Rp b25fY2hhaW4gPSB7CisJImVhYmxlIGNnIHBnIiwKKwllbmFibGVfY2dwZ19ldmVudAorfTsKKwor c3RhdGljIGNvbnN0IHBlbV9ldmVudF9hY3Rpb24gKmRpc2FibGVfY2dwZ19ldmVudFtdID0gewor CWRpc2FibGVfY2dwZ190YXNrcywKKwlOVUxMCit9OworCitjb25zdCBzdHJ1Y3QgYWN0aW9uX2No YWluIGRpc2FibGVfY2dwZ19hY3Rpb25fY2hhaW4gPSB7CisJImRpc2FibGUgY2cgcGciLAorCWRp c2FibGVfY2dwZ19ldmVudAorfTsKKworCisvKiBFbmFibGUgdXNlciBfMmQgcGVyZm9ybWFuY2Ug YW5kIGFjdGl2YXRlICovCisKK3N0YXRpYyBjb25zdCBwZW1fZXZlbnRfYWN0aW9uICplbmFibGVf dXNlcl9zdGF0ZV9ldmVudFtdID0geworCWNyZWF0ZV9uZXdfdXNlcl9wZXJmb3JtYW5jZV9zdGF0 ZV90YXNrcywKKwlhZGp1c3RfcG93ZXJfc3RhdGVfdGFza3MsCisJTlVMTAorfTsKKworY29uc3Qg c3RydWN0IGFjdGlvbl9jaGFpbiBlbmFibGVfdXNlcl9zdGF0ZV9hY3Rpb25fY2hhaW4gPSB7CisJ IkVuYWJsZSB1c2VyIHN0YXRlIiwKKwllbmFibGVfdXNlcl9zdGF0ZV9ldmVudAorfTsKKworc3Rh dGljIGNvbnN0IHBlbV9ldmVudF9hY3Rpb24gKmVuYWJsZV91c2VyXzJkX3BlcmZvcm1hbmNlX2V2 ZW50W10gPSB7CisJZW5hYmxlX3VzZXJfMmRfcGVyZm9ybWFuY2VfdGFza3MsCisJYWRkX3VzZXJf MmRfcGVyZm9ybWFuY2Vfc3RhdGVfdGFza3MsCisJc2V0X3BlcmZvcm1hbmNlX3N0YXRlX3Rhc2tz LAorCWFkanVzdF9wb3dlcl9zdGF0ZV90YXNrcywKKwlkZWxldGVfdXNlcl8yZF9wZXJmb3JtYW5j ZV9zdGF0ZV90YXNrcywKKwlOVUxMCit9OworCitjb25zdCBzdHJ1Y3QgYWN0aW9uX2NoYWluIGVu YWJsZV91c2VyXzJkX3BlcmZvcm1hbmNlX2FjdGlvbl9jaGFpbiA9IHsKKwkiZW5hYmxlX3VzZXJf MmRfcGVyZm9ybWFuY2VfZXZlbnRfYWN0aXZhdGUiLAorCWVuYWJsZV91c2VyXzJkX3BlcmZvcm1h bmNlX2V2ZW50Cit9OworCisKK3N0YXRpYyBjb25zdCBwZW1fZXZlbnRfYWN0aW9uICpkaXNhYmxl X3VzZXJfMmRfcGVyZm9ybWFuY2VfZXZlbnRbXSA9IHsKKwlkaXNhYmxlX3VzZXJfMmRfcGVyZm9y bWFuY2VfdGFza3MsCisJZGVsZXRlX3VzZXJfMmRfcGVyZm9ybWFuY2Vfc3RhdGVfdGFza3MsCisJ TlVMTAorfTsKKworY29uc3Qgc3RydWN0IGFjdGlvbl9jaGFpbiBkaXNhYmxlX3VzZXJfMmRfcGVy Zm9ybWFuY2VfYWN0aW9uX2NoYWluID0geworCSJkaXNhYmxlX3VzZXJfMmRfcGVyZm9ybWFuY2Vf ZXZlbnQiLAorCWRpc2FibGVfdXNlcl8yZF9wZXJmb3JtYW5jZV9ldmVudAorfTsKKworCitzdGF0 aWMgY29uc3QgcGVtX2V2ZW50X2FjdGlvbiAqZGlzcGxheV9jb25maWdfY2hhbmdlX2V2ZW50W10g PSB7CisJLyogY291bnREaXNwbGF5Q29uZmlndXJhdGlvbkNoYW5nZUV2ZW50VGFza3MsICovCisJ dW5ibG9ja19hZGp1c3RfcG93ZXJfc3RhdGVfdGFza3MsCisJLyogc2V0Q1BVUG93ZXJTdGF0ZSwq LworCW5vdGlmeV9od19wb3dlcl9zb3VyY2VfdGFza3MsCisJLyogdXBkYXRlREFMQ29uZmlndXJh dGlvblRhc2tzLAorCXZhcmlCcmlnaHREaXNwbGF5Q29uZmlndXJhdGlvbkNoYW5nZVRhc2tzLCAq LworCWFkanVzdF9wb3dlcl9zdGF0ZV90YXNrcywKKwkvKmVuYWJsZURpc2FibGVGUFNUYXNrcywK KwlzZXROQk1DVVN0YXRlVGFza3MsCisJbm90aWZ5UENJRURldmljZVJlYWR5VGFza3MsKi8KKwlO VUxMCit9OworCitjb25zdCBzdHJ1Y3QgYWN0aW9uX2NoYWluIGRpc3BsYXlfY29uZmlnX2NoYW5n ZV9hY3Rpb25fY2hhaW4gPSB7CisJIkRpc3BsYXkgY29uZmlndXJhdGlvbiBjaGFuZ2UiLAorCWRp c3BsYXlfY29uZmlnX2NoYW5nZV9ldmVudAorfTsKKworc3RhdGljIGNvbnN0IHBlbV9ldmVudF9h Y3Rpb24gKnJlYWRqdXN0X3Bvd2VyX3N0YXRlX2V2ZW50W10gPSB7CisJYWRqdXN0X3Bvd2VyX3N0 YXRlX3Rhc2tzLAorCU5VTEwKK307CisKK2NvbnN0IHN0cnVjdCBhY3Rpb25fY2hhaW4gcmVhZGp1 c3RfcG93ZXJfc3RhdGVfYWN0aW9uX2NoYWluID0geworCSJyZS1hZGp1c3QgcG93ZXIgc3RhdGUi LAorCXJlYWRqdXN0X3Bvd2VyX3N0YXRlX2V2ZW50Cit9OworCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL3Bvd2VycGxheS9ldmVudG1nci9ldmVudGFjdGlvbmNoYWlucy5oIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvZXZlbnRtZ3IvZXZlbnRhY3Rpb25jaGFpbnMuaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTgxZTUzCi0tLSAvZGV2L251bGwK KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvZXZlbnRtZ3IvZXZlbnRhY3Rpb25j aGFpbnMuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IDIwMTUgQWR2YW5jZWQg TWljcm8gRGV2aWNlcywgSW5jLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRo aXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0 d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwg aW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHks IG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQv b3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8g d2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0 aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFs bCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAq IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO WSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE IFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFM TAorICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJQUJMRSBGT1Ig QU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4g QUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFSSVNJTkcgRlJPTSwg T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgor ICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworI2lmbmRlZiBfRVZF TlRfQUNUSU9OX0NIQUlOU19IXworI2RlZmluZSBfRVZFTlRfQUNUSU9OX0NIQUlOU19IXworI2lu Y2x1ZGUgImV2ZW50bWdyLmgiCisKK2V4dGVybiBjb25zdCBzdHJ1Y3QgYWN0aW9uX2NoYWluIGlu aXRpYWxpemVfYWN0aW9uX2NoYWluOworCitleHRlcm4gY29uc3Qgc3RydWN0IGFjdGlvbl9jaGFp biB1bmluaXRpYWxpemVfYWN0aW9uX2NoYWluOworCitleHRlcm4gY29uc3Qgc3RydWN0IGFjdGlv bl9jaGFpbiBwb3dlcl9zb3VyY2VfY2hhbmdlX2FjdGlvbl9jaGFpbl9wcF9lbmFibGVkOworCitl eHRlcm4gY29uc3Qgc3RydWN0IGFjdGlvbl9jaGFpbiBwb3dlcl9zb3VyY2VfY2hhbmdlc19hY3Rp b25fY2hhaW5fcHBfZGlzYWJsZWQ7CisKK2V4dGVybiBjb25zdCBzdHJ1Y3QgYWN0aW9uX2NoYWlu IHBvd2VyX3NvdXJjZV9jaGFuZ2VfYWN0aW9uX2NoYWluX2hhcmR3YXJlX2RjOworCitleHRlcm4g Y29uc3Qgc3RydWN0IGFjdGlvbl9jaGFpbiBzdXNwZW5kX2FjdGlvbl9jaGFpbjsKKworZXh0ZXJu IGNvbnN0IHN0cnVjdCBhY3Rpb25fY2hhaW4gcmVzdW1lX2FjdGlvbl9jaGFpbjsKKworZXh0ZXJu IGNvbnN0IHN0cnVjdCBhY3Rpb25fY2hhaW4gY29tcGxldGVfaW5pdF9hY3Rpb25fY2hhaW47CisK K2V4dGVybiBjb25zdCBzdHJ1Y3QgYWN0aW9uX2NoYWluIGVuYWJsZV9nZnhfY2xvY2tfZ2F0aW5n X2FjdGlvbl9jaGFpbjsKKworZXh0ZXJuIGNvbnN0IHN0cnVjdCBhY3Rpb25fY2hhaW4gZGlzYWJs ZV9nZnhfY2xvY2tfZ2F0aW5nX2FjdGlvbl9jaGFpbjsKKworZXh0ZXJuIGNvbnN0IHN0cnVjdCBh Y3Rpb25fY2hhaW4gZW5hYmxlX2NncGdfYWN0aW9uX2NoYWluOworCitleHRlcm4gY29uc3Qgc3Ry dWN0IGFjdGlvbl9jaGFpbiBkaXNhYmxlX2NncGdfYWN0aW9uX2NoYWluOworCitleHRlcm4gY29u c3Qgc3RydWN0IGFjdGlvbl9jaGFpbiBlbmFibGVfdXNlcl8yZF9wZXJmb3JtYW5jZV9hY3Rpb25f Y2hhaW47CisKK2V4dGVybiBjb25zdCBzdHJ1Y3QgYWN0aW9uX2NoYWluIGRpc2FibGVfdXNlcl8y ZF9wZXJmb3JtYW5jZV9hY3Rpb25fY2hhaW47CisKK2V4dGVybiBjb25zdCBzdHJ1Y3QgYWN0aW9u X2NoYWluIGVuYWJsZV91c2VyX3N0YXRlX2FjdGlvbl9jaGFpbjsKKworZXh0ZXJuIGNvbnN0IHN0 cnVjdCBhY3Rpb25fY2hhaW4gcmVhZGp1c3RfcG93ZXJfc3RhdGVfYWN0aW9uX2NoYWluOworCitl eHRlcm4gY29uc3Qgc3RydWN0IGFjdGlvbl9jaGFpbiBkaXNwbGF5X2NvbmZpZ19jaGFuZ2VfYWN0 aW9uX2NoYWluOworCisjZW5kaWYgLypfRVZFTlRfQUNUSU9OX0NIQUlOU19IXyovCisKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2V2ZW50bWdyL2V2ZW50aW5pdC5j IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvZXZlbnRtZ3IvZXZlbnRpbml0LmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQzODQ0MgotLS0gL2Rldi9udWxsCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2V2ZW50bWdyL2V2ZW50aW5pdC5jCkBA IC0wLDAgKzEsMTgwIEBACisvKgorICogQ29weXJpZ2h0IDIwMTUgQWR2YW5jZWQgTWljcm8gRGV2 aWNlcywgSW5jLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2Yg Y2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdh cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAor ICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5n IHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwg bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBj b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUK KyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo aXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMg b3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZU V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF WFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhF IENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN LCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9G IENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9S IElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgorICogT1RIRVIg REVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworI2luY2x1ZGUgImV2ZW50bWdyLmgi CisjaW5jbHVkZSAiZXZlbnRpbml0LmgiCisKK3ZvaWQgcGVtX2luaXRfZmVhdHVyZV9pbmZvKHN0 cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IpCit7CisKKwkvKiBQb3dlclBsYXkgaW5mbyAqLwor CWV2ZW50bWdyLT51aV9zdGF0ZV9pbmZvW1BQX1Bvd2VyU291cmNlX0FDXS5kZWZhdWx0X3VpX2xh YmxlID0KKwkJCQkJICAgIFBQX1N0YXRlVUlMYWJlbF9QZXJmb3JtYW5jZTsKKworCWV2ZW50bWdy LT51aV9zdGF0ZV9pbmZvW1BQX1Bvd2VyU291cmNlX0FDXS5jdXJyZW50X3VpX2xhYmVsID0KKwkJ CQkJICAgIFBQX1N0YXRlVUlMYWJlbF9QZXJmb3JtYW5jZTsKKworCWV2ZW50bWdyLT51aV9zdGF0 ZV9pbmZvW1BQX1Bvd2VyU291cmNlX0RDXS5kZWZhdWx0X3VpX2xhYmxlID0KKwkJCQkJCSAgUFBf U3RhdGVVSUxhYmVsX0JhdHRlcnk7CisKKwlldmVudG1nci0+dWlfc3RhdGVfaW5mb1tQUF9Qb3dl clNvdXJjZV9EQ10uY3VycmVudF91aV9sYWJlbCA9CisJCQkJCQkgIFBQX1N0YXRlVUlMYWJlbF9C YXR0ZXJ5OworCisJaWYgKHBobV9jYXBfZW5hYmxlZChldmVudG1nci0+cGxhdGZvcm1fZGVzY3Jp cHRvci0+cGxhdGZvcm1DYXBzLCBQSE1fUGxhdGZvcm1DYXBzX1Bvd2VyUGxheVN1cHBvcnQpKSB7 CisJCWV2ZW50bWdyLT5mZWF0dXJlc1tQUF9GZWF0dXJlX1Bvd2VyUGxheV0uc3VwcG9ydGVkID0g dHJ1ZTsKKwkJZXZlbnRtZ3ItPmZlYXR1cmVzW1BQX0ZlYXR1cmVfUG93ZXJQbGF5XS52ZXJzaW9u ID0gUEVNX0NVUlJFTlRfUE9XRVJQTEFZX0ZFQVRVUkVfVkVSU0lPTjsKKwkJZXZlbnRtZ3ItPmZl YXR1cmVzW1BQX0ZlYXR1cmVfUG93ZXJQbGF5XS5lbmFibGVkX2RlZmF1bHQgPSB0cnVlOworCQll dmVudG1nci0+ZmVhdHVyZXNbUFBfRmVhdHVyZV9Qb3dlclBsYXldLmVuYWJsZWQgPSB0cnVlOwor CX0gZWxzZSB7CisJCWV2ZW50bWdyLT5mZWF0dXJlc1tQUF9GZWF0dXJlX1Bvd2VyUGxheV0uc3Vw cG9ydGVkID0gZmFsc2U7CisJCWV2ZW50bWdyLT5mZWF0dXJlc1tQUF9GZWF0dXJlX1Bvd2VyUGxh eV0uZW5hYmxlZCA9IGZhbHNlOworCQlldmVudG1nci0+ZmVhdHVyZXNbUFBfRmVhdHVyZV9Qb3dl clBsYXldLmVuYWJsZWRfZGVmYXVsdCA9IGZhbHNlOworCX0KKworCWV2ZW50bWdyLT5mZWF0dXJl c1tQUF9GZWF0dXJlX0ZvcmNlM0RDbG9ja10uc3VwcG9ydGVkID0gdHJ1ZTsKKwlldmVudG1nci0+ ZmVhdHVyZXNbUFBfRmVhdHVyZV9Gb3JjZTNEQ2xvY2tdLmVuYWJsZWQgPSBmYWxzZTsKKwlldmVu dG1nci0+ZmVhdHVyZXNbUFBfRmVhdHVyZV9Gb3JjZTNEQ2xvY2tdLmVuYWJsZWRfZGVmYXVsdCA9 IGZhbHNlOworCWV2ZW50bWdyLT5mZWF0dXJlc1tQUF9GZWF0dXJlX0ZvcmNlM0RDbG9ja10udmVy c2lvbiA9IDE7CisKKwkvKiBvdmVyIGRyaXZlKi8KKwlldmVudG1nci0+ZmVhdHVyZXNbUFBfRmVh dHVyZV9Vc2VyMkRQZXJmb3JtYW5jZV0udmVyc2lvbiA9IDQ7CisJZXZlbnRtZ3ItPmZlYXR1cmVz W1BQX0ZlYXR1cmVfVXNlcjNEUGVyZm9ybWFuY2VdLnZlcnNpb24gPSA0OworCWV2ZW50bWdyLT5m ZWF0dXJlc1tQUF9GZWF0dXJlX092ZXJkcml2ZVRlc3RdLnZlcnNpb24gPSA0OworCisJZXZlbnRt Z3ItPmZlYXR1cmVzW1BQX0ZlYXR1cmVfT3ZlckRyaXZlXS52ZXJzaW9uID0gNDsKKwlldmVudG1n ci0+ZmVhdHVyZXNbUFBfRmVhdHVyZV9PdmVyRHJpdmVdLmVuYWJsZWQgPSBmYWxzZTsKKwlldmVu dG1nci0+ZmVhdHVyZXNbUFBfRmVhdHVyZV9PdmVyRHJpdmVdLmVuYWJsZWRfZGVmYXVsdCA9IGZh bHNlOworCisJZXZlbnRtZ3ItPmZlYXR1cmVzW1BQX0ZlYXR1cmVfVXNlcjJEUGVyZm9ybWFuY2Vd LnN1cHBvcnRlZCA9IGZhbHNlOworCWV2ZW50bWdyLT5mZWF0dXJlc1tQUF9GZWF0dXJlX1VzZXIy RFBlcmZvcm1hbmNlXS5lbmFibGVkID0gZmFsc2U7CisJZXZlbnRtZ3ItPmZlYXR1cmVzW1BQX0Zl YXR1cmVfVXNlcjJEUGVyZm9ybWFuY2VdLmVuYWJsZWRfZGVmYXVsdCA9IGZhbHNlOworCisJZXZl bnRtZ3ItPmZlYXR1cmVzW1BQX0ZlYXR1cmVfVXNlcjNEUGVyZm9ybWFuY2VdLnN1cHBvcnRlZCA9 IGZhbHNlOworCWV2ZW50bWdyLT5mZWF0dXJlc1tQUF9GZWF0dXJlX1VzZXIzRFBlcmZvcm1hbmNl XS5lbmFibGVkID0gZmFsc2U7CisJZXZlbnRtZ3ItPmZlYXR1cmVzW1BQX0ZlYXR1cmVfVXNlcjNE UGVyZm9ybWFuY2VdLmVuYWJsZWRfZGVmYXVsdCA9IGZhbHNlOworCisJZXZlbnRtZ3ItPmZlYXR1 cmVzW1BQX0ZlYXR1cmVfT3ZlcmRyaXZlVGVzdF0uc3VwcG9ydGVkID0gZmFsc2U7CisJZXZlbnRt Z3ItPmZlYXR1cmVzW1BQX0ZlYXR1cmVfT3ZlcmRyaXZlVGVzdF0uZW5hYmxlZCA9IGZhbHNlOwor CWV2ZW50bWdyLT5mZWF0dXJlc1tQUF9GZWF0dXJlX092ZXJkcml2ZVRlc3RdLmVuYWJsZWRfZGVm YXVsdCA9IGZhbHNlOworCisJZXZlbnRtZ3ItPmZlYXR1cmVzW1BQX0ZlYXR1cmVfT3ZlckRyaXZl XS5zdXBwb3J0ZWQgPSBmYWxzZTsKKworCWV2ZW50bWdyLT5mZWF0dXJlc1tQUF9GZWF0dXJlX1Bv d2VyQnVkZ2V0V2FpdmVyXS5lbmFibGVkX2RlZmF1bHQgPSBmYWxzZTsKKwlldmVudG1nci0+ZmVh dHVyZXNbUFBfRmVhdHVyZV9Qb3dlckJ1ZGdldFdhaXZlcl0udmVyc2lvbiA9IDE7CisJZXZlbnRt Z3ItPmZlYXR1cmVzW1BQX0ZlYXR1cmVfUG93ZXJCdWRnZXRXYWl2ZXJdLnN1cHBvcnRlZCA9IGZh bHNlOworCWV2ZW50bWdyLT5mZWF0dXJlc1tQUF9GZWF0dXJlX1Bvd2VyQnVkZ2V0V2FpdmVyXS5l bmFibGVkID0gZmFsc2U7CisKKwkvKiBNdWx0aSBVVkQgU3RhdGVzIHN1cHBvcnQgKi8KKwlldmVu dG1nci0+ZmVhdHVyZXNbUFBfRmVhdHVyZV9NdWx0aVVWRFN0YXRlXS5zdXBwb3J0ZWQgPSBmYWxz ZTsKKwlldmVudG1nci0+ZmVhdHVyZXNbUFBfRmVhdHVyZV9NdWx0aVVWRFN0YXRlXS5lbmFibGVk ID0gZmFsc2U7CisJZXZlbnRtZ3ItPmZlYXR1cmVzW1BQX0ZlYXR1cmVfTXVsdGlVVkRTdGF0ZV0u ZW5hYmxlZF9kZWZhdWx0ID0gZmFsc2U7CisKKwkvKiBEeW5hbWljIFVWRCBTdGF0ZXMgc3VwcG9y dCAqLworCWV2ZW50bWdyLT5mZWF0dXJlc1tQUF9GZWF0dXJlX0R5bmFtaWNVVkRTdGF0ZV0uc3Vw cG9ydGVkID0gZmFsc2U7CisJZXZlbnRtZ3ItPmZlYXR1cmVzW1BQX0ZlYXR1cmVfRHluYW1pY1VW RFN0YXRlXS5lbmFibGVkID0gZmFsc2U7CisJZXZlbnRtZ3ItPmZlYXR1cmVzW1BQX0ZlYXR1cmVf RHluYW1pY1VWRFN0YXRlXS5lbmFibGVkX2RlZmF1bHQgPSBmYWxzZTsKKworCS8qIFZDRSBEUE0g c3VwcG9ydCAqLworCWV2ZW50bWdyLT5mZWF0dXJlc1tQUF9GZWF0dXJlX1ZDRURQTV0uc3VwcG9y dGVkID0gZmFsc2U7CisJZXZlbnRtZ3ItPmZlYXR1cmVzW1BQX0ZlYXR1cmVfVkNFRFBNXS5lbmFi bGVkID0gZmFsc2U7CisJZXZlbnRtZ3ItPmZlYXR1cmVzW1BQX0ZlYXR1cmVfVkNFRFBNXS5lbmFi bGVkX2RlZmF1bHQgPSBmYWxzZTsKKworCS8qIEFDUCBQb3dlckdhdGluZyBzdXBwb3J0ICovCisJ ZXZlbnRtZ3ItPmZlYXR1cmVzW1BQX0ZlYXR1cmVfQUNQX1BPV0VSR0FUSU5HXS5zdXBwb3J0ZWQg PSBmYWxzZTsKKwlldmVudG1nci0+ZmVhdHVyZXNbUFBfRmVhdHVyZV9BQ1BfUE9XRVJHQVRJTkdd LmVuYWJsZWQgPSBmYWxzZTsKKwlldmVudG1nci0+ZmVhdHVyZXNbUFBfRmVhdHVyZV9BQ1BfUE9X RVJHQVRJTkddLmVuYWJsZWRfZGVmYXVsdCA9IGZhbHNlOworCisJLyogUFBNIHN1cHBvcnQgKi8K KwlldmVudG1nci0+ZmVhdHVyZXNbUFBfRmVhdHVyZV9QUE1dLnZlcnNpb24gPSAxOworCWV2ZW50 bWdyLT5mZWF0dXJlc1tQUF9GZWF0dXJlX1BQTV0uc3VwcG9ydGVkID0gZmFsc2U7CisJZXZlbnRt Z3ItPmZlYXR1cmVzW1BQX0ZlYXR1cmVfUFBNXS5lbmFibGVkID0gZmFsc2U7CisKKwkvKiBGRkMg c3VwcG9ydCAoZW5hYmxlcyBmYW4gYW5kIHRlbXAgc2V0dGluZ3MsIEdlbWluaSBuZWVkcyB0ZW1w IHNldHRpbmdzKSAqLworCWlmIChwaG1fY2FwX2VuYWJsZWQoZXZlbnRtZ3ItPnBsYXRmb3JtX2Rl c2NyaXB0b3ItPnBsYXRmb3JtQ2FwcywgUEhNX1BsYXRmb3JtQ2Fwc19PREZ1enp5RmFuQ29udHJv bFN1cHBvcnQpIHx8CisJICAgIHBobV9jYXBfZW5hYmxlZChldmVudG1nci0+cGxhdGZvcm1fZGVz Y3JpcHRvci0+cGxhdGZvcm1DYXBzLCBQSE1fUGxhdGZvcm1DYXBzX0dlbWluaVJlZ3VsYXRvckZh bkNvbnRyb2xTdXBwb3J0KSkgeworCQlldmVudG1nci0+ZmVhdHVyZXNbUFBfRmVhdHVyZV9GRkNd LnZlcnNpb24gPSAxOworCQlldmVudG1nci0+ZmVhdHVyZXNbUFBfRmVhdHVyZV9GRkNdLnN1cHBv cnRlZCA9IHRydWU7CisJCWV2ZW50bWdyLT5mZWF0dXJlc1tQUF9GZWF0dXJlX0ZGQ10uZW5hYmxl ZCA9IHRydWU7CisJCWV2ZW50bWdyLT5mZWF0dXJlc1tQUF9GZWF0dXJlX0ZGQ10uZW5hYmxlZF9k ZWZhdWx0ID0gdHJ1ZTsKKwl9IGVsc2UgeworCQlldmVudG1nci0+ZmVhdHVyZXNbUFBfRmVhdHVy ZV9GRkNdLnN1cHBvcnRlZCA9IGZhbHNlOworCQlldmVudG1nci0+ZmVhdHVyZXNbUFBfRmVhdHVy ZV9GRkNdLmVuYWJsZWQgPSBmYWxzZTsKKwkJZXZlbnRtZ3ItPmZlYXR1cmVzW1BQX0ZlYXR1cmVf RkZDXS5lbmFibGVkX2RlZmF1bHQgPSBmYWxzZTsKKwl9CisKKwlldmVudG1nci0+ZmVhdHVyZXNb UFBfRmVhdHVyZV9WYXJpQnJpZ2h0XS5zdXBwb3J0ZWQgPSBmYWxzZTsKKwlldmVudG1nci0+ZmVh dHVyZXNbUFBfRmVhdHVyZV9WYXJpQnJpZ2h0XS5lbmFibGVkID0gZmFsc2U7CisJZXZlbnRtZ3It PmZlYXR1cmVzW1BQX0ZlYXR1cmVfVmFyaUJyaWdodF0uZW5hYmxlZF9kZWZhdWx0ID0gZmFsc2U7 CisKKwlldmVudG1nci0+ZmVhdHVyZXNbUFBfRmVhdHVyZV9CQUNPXS5zdXBwb3J0ZWQgPSBmYWxz ZTsKKwlldmVudG1nci0+ZmVhdHVyZXNbUFBfRmVhdHVyZV9CQUNPXS5zdXBwb3J0ZWQgPSBmYWxz ZTsKKwlldmVudG1nci0+ZmVhdHVyZXNbUFBfRmVhdHVyZV9CQUNPXS5lbmFibGVkX2RlZmF1bHQg PSBmYWxzZTsKKworCS8qIFBvd2VyRG93biBmZWF0dXJlIHN1cHBvcnQgKi8KKwlldmVudG1nci0+ ZmVhdHVyZXNbUFBfRmVhdHVyZV9Qb3dlckRvd25dLnN1cHBvcnRlZCA9IGZhbHNlOworCWV2ZW50 bWdyLT5mZWF0dXJlc1tQUF9GZWF0dXJlX1Bvd2VyRG93bl0uZW5hYmxlZCA9IGZhbHNlOworCWV2 ZW50bWdyLT5mZWF0dXJlc1tQUF9GZWF0dXJlX1Bvd2VyRG93bl0uZW5hYmxlZF9kZWZhdWx0ID0g ZmFsc2U7CisKKwlldmVudG1nci0+ZmVhdHVyZXNbUFBfRmVhdHVyZV9GUFNdLnZlcnNpb24gPSAx OworCWV2ZW50bWdyLT5mZWF0dXJlc1tQUF9GZWF0dXJlX0ZQU10uc3VwcG9ydGVkID0gZmFsc2U7 CisJZXZlbnRtZ3ItPmZlYXR1cmVzW1BQX0ZlYXR1cmVfRlBTXS5lbmFibGVkX2RlZmF1bHQgPSBm YWxzZTsKKwlldmVudG1nci0+ZmVhdHVyZXNbUFBfRmVhdHVyZV9GUFNdLmVuYWJsZWQgPSBmYWxz ZTsKKworCWV2ZW50bWdyLT5mZWF0dXJlc1tQUF9GZWF0dXJlX1ZpUEddLnZlcnNpb24gPSAxOwor CWV2ZW50bWdyLT5mZWF0dXJlc1tQUF9GZWF0dXJlX1ZpUEddLnN1cHBvcnRlZCA9IGZhbHNlOwor CWV2ZW50bWdyLT5mZWF0dXJlc1tQUF9GZWF0dXJlX1ZpUEddLmVuYWJsZWRfZGVmYXVsdCA9IGZh bHNlOworCWV2ZW50bWdyLT5mZWF0dXJlc1tQUF9GZWF0dXJlX1ZpUEddLmVuYWJsZWQgPSBmYWxz ZTsKK30KKworaW50IHBlbV9yZWdpc3Rlcl9pbnRlcnJ1cHRzKHN0cnVjdCBwcF9ldmVudG1nciAq ZXZlbnRtZ3IpCit7CisJaW50IHJlc3VsdCA9IDA7CisKKwkvKiBUT0RPOgorCSAqIDEuIFJlZ2lz dGVyIHRoZXJtYWwgZXZlbnRzIGludGVycnVwdAorCSAqIDIuIFJlZ2lzdGVyIENURiBldmVudCBp bnRlcnJ1cHQKKwkgKiAzLiBSZWdpc3RlciBmb3IgdmJpb3MgZXZlbnRzIGludGVycnVwdAorCSAq IDQuIFJlZ2lzdGVyIEV4dGVybmFsIFRocm90dGxlIEludGVycnVwdAorCSAqIDUuIFJlZ2lzdGVy IFNtYyBUbyBIb3N0IEludGVycnVwdAorCSAqICovCisJcmV0dXJuIHJlc3VsdDsKK30KKworCitp bnQgcGVtX3VucmVnaXN0ZXJfaW50ZXJydXB0cyhzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdy KQoreworCXJldHVybiAwOworfQorCisKK3ZvaWQgcGVtX3VuaW5pdF9mZWF0dXJlSW5mbyhzdHJ1 Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdyKQoreworCWV2ZW50bWdyLT5mZWF0dXJlc1tQUF9GZWF0 dXJlX011bHRpVVZEU3RhdGVdLnN1cHBvcnRlZCA9IGZhbHNlOworCWV2ZW50bWdyLT5mZWF0dXJl c1tQUF9GZWF0dXJlX1ZhcmlCcmlnaHRdLnN1cHBvcnRlZCA9IGZhbHNlOworCWV2ZW50bWdyLT5m ZWF0dXJlc1tQUF9GZWF0dXJlX1Bvd2VyQnVkZ2V0V2FpdmVyXS5zdXBwb3J0ZWQgPSBmYWxzZTsK KwlldmVudG1nci0+ZmVhdHVyZXNbUFBfRmVhdHVyZV9PdmVyRHJpdmVdLnN1cHBvcnRlZCA9IGZh bHNlOworCWV2ZW50bWdyLT5mZWF0dXJlc1tQUF9GZWF0dXJlX092ZXJkcml2ZVRlc3RdLnN1cHBv cnRlZCA9IGZhbHNlOworCWV2ZW50bWdyLT5mZWF0dXJlc1tQUF9GZWF0dXJlX1VzZXIzRFBlcmZv cm1hbmNlXS5zdXBwb3J0ZWQgPSBmYWxzZTsKKwlldmVudG1nci0+ZmVhdHVyZXNbUFBfRmVhdHVy ZV9Vc2VyMkRQZXJmb3JtYW5jZV0uc3VwcG9ydGVkID0gZmFsc2U7CisJZXZlbnRtZ3ItPmZlYXR1 cmVzW1BQX0ZlYXR1cmVfUG93ZXJQbGF5XS5zdXBwb3J0ZWQgPSBmYWxzZTsKKwlldmVudG1nci0+ ZmVhdHVyZXNbUFBfRmVhdHVyZV9Gb3JjZTNEQ2xvY2tdLnN1cHBvcnRlZCA9IGZhbHNlOworfQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvZXZlbnRtZ3IvZXZlbnRp bml0LmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9ldmVudG1nci9ldmVudGluaXQu aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZWY5NmFhCi0tLSAvZGV2L251 bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvZXZlbnRtZ3IvZXZlbnRpbml0 LmgKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE1IEFkdmFuY2VkIE1pY3Jv IERldmljZXMsIEluYy4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVl IG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNv ZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUi KSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1 ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2Rp ZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNl bGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20g dGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZv bGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFu ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29w aWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUg U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO RCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBU SEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAq IFRIRSBDT1BZUklHSFQgSE9MREVSKFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBD TEFJTSwgREFNQUdFUyBPUgorICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBP RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9U SEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8KKworI2lmbmRlZiBfRVZFTlRJ TklUX0hfCisjZGVmaW5lIF9FVkVOVElOSVRfSF8KKworI2RlZmluZSBQRU1fQ1VSUkVOVF9QT1dF UlBMQVlfRkVBVFVSRV9WRVJTSU9OIDQKKwordm9pZCBwZW1faW5pdF9mZWF0dXJlX2luZm8oc3Ry dWN0IHBwX2V2ZW50bWdyICpldmVudG1ncik7Cit2b2lkIHBlbV91bmluaXRfZmVhdHVyZUluZm8o c3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1ncik7CitpbnQgcGVtX3JlZ2lzdGVyX2ludGVycnVw dHMoc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1ncik7CitpbnQgcGVtX3VucmVnaXN0ZXJfaW50 ZXJydXB0cyhzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdyKTsKKworI2VuZGlmIC8qIF9FVkVO VElOSVRfSF8gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2V2 ZW50bWdyL2V2ZW50bWFuYWdlbWVudC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkv ZXZlbnRtZ3IvZXZlbnRtYW5hZ2VtZW50LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uMWUyYWQ1NgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93 ZXJwbGF5L2V2ZW50bWdyL2V2ZW50bWFuYWdlbWVudC5jCkBAIC0wLDAgKzEsMjE1IEBACisvKgor ICogQ29weXJpZ2h0IDIwMTUgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgorICoKKyAqIFBl cm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29u IG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9j dW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29m dHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgor ICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3Ry aWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJl LCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5p c2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgor ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ug c2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlv bnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMg SVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVE LCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5U QUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZS SU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykg T1IgQVVUSE9SKFMpIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhF UiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9U SEVSV0lTRSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBU SEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgorICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRX QVJFLgorICoKKyAqLworI2luY2x1ZGUgImV2ZW50bWFuYWdlbWVudC5oIgorI2luY2x1ZGUgImV2 ZW50bWdyLmgiCisjaW5jbHVkZSAiZXZlbnRhY3Rpb25jaGFpbnMuaCIKKworaW50IHBlbV9pbml0 X2V2ZW50X2FjdGlvbl9jaGFpbnMoc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1ncikKK3sKKwlp bnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBBTURfUFBfRVZFTlRfTUFYOyBpKyspCisJCWV2ZW50 bWdyLT5ldmVudF9jaGFpbltpXSA9IE5VTEw7CisKKwlldmVudG1nci0+ZXZlbnRfY2hhaW5bQU1E X1BQX0VWRU5UX1NVU1BFTkRdID0gcGVtX2dldF9zdXNwZW5kX2FjdGlvbl9jaGFpbihldmVudG1n cik7CisJZXZlbnRtZ3ItPmV2ZW50X2NoYWluW0FNRF9QUF9FVkVOVF9JTklUSUFMSVpFXSA9IHBl bV9nZXRfaW5pdGlhbGl6ZV9hY3Rpb25fY2hhaW4oZXZlbnRtZ3IpOworCWV2ZW50bWdyLT5ldmVu dF9jaGFpbltBTURfUFBfRVZFTlRfVU5JTklUSUFMSVpFXSA9IHBlbV9nZXRfdW5pbml0aWFsaXpl X2FjdGlvbl9jaGFpbihldmVudG1ncik7CisJZXZlbnRtZ3ItPmV2ZW50X2NoYWluW0FNRF9QUF9F VkVOVF9QT1dFUl9TT1VSQ0VfQ0hBTkdFXSA9IHBlbV9nZXRfcG93ZXJfc291cmNlX2NoYW5nZV9h Y3Rpb25fY2hhaW4oZXZlbnRtZ3IpOworCWV2ZW50bWdyLT5ldmVudF9jaGFpbltBTURfUFBfRVZF TlRfSElCRVJOQVRFXSA9IHBlbV9nZXRfaGliZXJuYXRlX2FjdGlvbl9jaGFpbihldmVudG1ncik7 CisJZXZlbnRtZ3ItPmV2ZW50X2NoYWluW0FNRF9QUF9FVkVOVF9SRVNVTUVdID0gcGVtX2dldF9y ZXN1bWVfYWN0aW9uX2NoYWluKGV2ZW50bWdyKTsKKwlldmVudG1nci0+ZXZlbnRfY2hhaW5bQU1E X1BQX0VWRU5UX1RIRVJNQUxfTk9USUZJQ0FUSU9OXSA9IHBlbV9nZXRfdGhlcm1hbF9ub3RpZmlj YXRpb25fYWN0aW9uX2NoYWluKGV2ZW50bWdyKTsKKwlldmVudG1nci0+ZXZlbnRfY2hhaW5bQU1E X1BQX0VWRU5UX1ZCSU9TX05PVElGSUNBVElPTl0gPSBwZW1fZ2V0X3ZiaW9zX25vdGlmaWNhdGlv bl9hY3Rpb25fY2hhaW4oZXZlbnRtZ3IpOworCWV2ZW50bWdyLT5ldmVudF9jaGFpbltBTURfUFBf RVZFTlRfRU5URVJfVEhFUk1BTF9TVEFURV0gPSBwZW1fZ2V0X2VudGVyX3RoZXJtYWxfc3RhdGVf YWN0aW9uX2NoYWluKGV2ZW50bWdyKTsKKwlldmVudG1nci0+ZXZlbnRfY2hhaW5bQU1EX1BQX0VW RU5UX0VYSVRfVEhFUk1BTF9TVEFURV0gPSBwZW1fZ2V0X2V4aXRfdGhlcm1hbF9zdGF0ZV9hY3Rp b25fY2hhaW4oZXZlbnRtZ3IpOworCWV2ZW50bWdyLT5ldmVudF9jaGFpbltBTURfUFBfRVZFTlRf RU5BQkxFX1BPV0VSX1BMQVldID0gcGVtX2dldF9lbmFibGVfcG93ZXJwbGF5X2FjdGlvbl9jaGFp bihldmVudG1ncik7CisJZXZlbnRtZ3ItPmV2ZW50X2NoYWluW0FNRF9QUF9FVkVOVF9ESVNBQkxF X1BPV0VSX1BMQVldID0gcGVtX2dldF9kaXNhYmxlX3Bvd2VycGxheV9hY3Rpb25fY2hhaW4oZXZl bnRtZ3IpOworCWV2ZW50bWdyLT5ldmVudF9jaGFpbltBTURfUFBfRVZFTlRfRU5BQkxFX09WRVJf RFJJVkVfVEVTVF0gPSBwZW1fZ2V0X2VuYWJsZV9vdmVyZHJpdmVfdGVzdF9hY3Rpb25fY2hhaW4o ZXZlbnRtZ3IpOworCWV2ZW50bWdyLT5ldmVudF9jaGFpbltBTURfUFBfRVZFTlRfRElTQUJMRV9P VkVSX0RSSVZFX1RFU1RdID0gcGVtX2dldF9kaXNhYmxlX292ZXJkcml2ZV90ZXN0X2FjdGlvbl9j aGFpbihldmVudG1ncik7CisJZXZlbnRtZ3ItPmV2ZW50X2NoYWluW0FNRF9QUF9FVkVOVF9FTkFC TEVfR0ZYX0NMT0NLX0dBVElOR10gPSBwZW1fZ2V0X2VuYWJsZV9nZnhfY2xvY2tfZ2F0aW5nX2Fj dGlvbl9jaGFpbihldmVudG1ncik7CisJZXZlbnRtZ3ItPmV2ZW50X2NoYWluW0FNRF9QUF9FVkVO VF9ESVNBQkxFX0dGWF9DTE9DS19HQVRJTkddID0gcGVtX2dldF9kaXNhYmxlX2dmeF9jbG9ja19n YXRpbmdfYWN0aW9uX2NoYWluKGV2ZW50bWdyKTsKKwlldmVudG1nci0+ZXZlbnRfY2hhaW5bQU1E X1BQX0VWRU5UX0VOQUJMRV9DR1BHXSA9IHBlbV9nZXRfZW5hYmxlX2NncGdfYWN0aW9uX2NoYWlu KGV2ZW50bWdyKTsKKwlldmVudG1nci0+ZXZlbnRfY2hhaW5bQU1EX1BQX0VWRU5UX0RJU0FCTEVf Q0dQR10gPSBwZW1fZ2V0X2Rpc2FibGVfY2dwZ19hY3Rpb25fY2hhaW4oZXZlbnRtZ3IpOworCWV2 ZW50bWdyLT5ldmVudF9jaGFpbltBTURfUFBfRVZFTlRfQ09NUExFVEVfSU5JVF0gPSBwZW1fZ2V0 X2NvbXBsZXRlX2luaXRfYWN0aW9uX2NoYWluKGV2ZW50bWdyKTsKKwlldmVudG1nci0+ZXZlbnRf Y2hhaW5bQU1EX1BQX0VWRU5UX1NDUkVFTl9PTl0gPSBwZW1fZ2V0X3NjcmVlbl9vbl9hY3Rpb25f Y2hhaW4oZXZlbnRtZ3IpOworCWV2ZW50bWdyLT5ldmVudF9jaGFpbltBTURfUFBfRVZFTlRfU0NS RUVOX09GRl0gPSBwZW1fZ2V0X3NjcmVlbl9vZmZfYWN0aW9uX2NoYWluKGV2ZW50bWdyKTsKKwll dmVudG1nci0+ZXZlbnRfY2hhaW5bQU1EX1BQX0VWRU5UX1BSRV9TVVNQRU5EXSA9IHBlbV9nZXRf cHJlX3N1c3BlbmRfYWN0aW9uX2NoYWluKGV2ZW50bWdyKTsKKwlldmVudG1nci0+ZXZlbnRfY2hh aW5bQU1EX1BQX0VWRU5UX1BSRV9SRVNVTUVdID0gcGVtX2dldF9wcmVfcmVzdW1lX2FjdGlvbl9j aGFpbihldmVudG1ncik7CisJZXZlbnRtZ3ItPmV2ZW50X2NoYWluW0FNRF9QUF9FVkVOVF9FTkFC TEVfVVNFUl9TVEFURV0gPSBwZW1fZW5hYmxlX3VzZXJfc3RhdGVfYWN0aW9uX2NoYWluKGV2ZW50 bWdyKTsKKwlldmVudG1nci0+ZXZlbnRfY2hhaW5bQU1EX1BQX0VWRU5UX1JFQURKVVNUX1BPV0VS X1NUQVRFXSA9IHBlbV9yZWFkanVzdF9wb3dlcl9zdGF0ZV9hY3Rpb25fY2hhaW4oZXZlbnRtZ3Ip OworCWV2ZW50bWdyLT5ldmVudF9jaGFpbltBTURfUFBfRVZFTlRfRElTUExBWV9DT05GSUdfQ0hB TkdFXSA9IHBlbV9kaXNwbGF5X2NvbmZpZ19jaGFuZ2VfYWN0aW9uX2NoYWluKGV2ZW50bWdyKTsK KwlyZXR1cm4gMDsKK30KKworaW50IHBlbV9leGN1dGVfZXZlbnRfY2hhaW4oc3RydWN0IHBwX2V2 ZW50bWdyICpldmVudG1nciwgY29uc3Qgc3RydWN0IGFjdGlvbl9jaGFpbiAqZXZlbnRfY2hhaW4s IHN0cnVjdCBwZW1fZXZlbnRfZGF0YSAqZXZlbnRfZGF0YSkKK3sKKwljb25zdCBwZW1fZXZlbnRf YWN0aW9uICoqcGFjdGlvbl9jaGFpbjsKKwljb25zdCBwZW1fZXZlbnRfYWN0aW9uICpwc3ViX2No YWluOworCWludCB0bXBfcmVzdWx0ID0gMDsKKwlpbnQgcmVzdWx0ID0gMDsKKworCWlmIChldmVu dG1nciA9PSBOVUxMIHx8IGV2ZW50X2NoYWluID09IE5VTEwgfHwgZXZlbnRfZGF0YSA9PSBOVUxM KQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWZvciAocGFjdGlvbl9jaGFpbiA9IGV2ZW50X2NoYWlu LT5hY3Rpb25fY2hhaW47IE5VTEwgIT0gKnBhY3Rpb25fY2hhaW47IHBhY3Rpb25fY2hhaW4rKykg eworCQlpZiAoMCAhPSByZXN1bHQpCisJCQlyZXR1cm4gcmVzdWx0OworCisJCWZvciAocHN1Yl9j aGFpbiA9ICpwYWN0aW9uX2NoYWluOyBOVUxMICE9ICpwc3ViX2NoYWluOyBwc3ViX2NoYWluKysp IHsKKwkJCXRtcF9yZXN1bHQgPSAoKnBzdWJfY2hhaW4pKGV2ZW50bWdyLCBldmVudF9kYXRhKTsK KwkJCWlmICgwID09IHJlc3VsdCkKKwkJCQlyZXN1bHQgPSB0bXBfcmVzdWx0OworCQl9CisJfQor CisJcmV0dXJuIHJlc3VsdDsKK30KKworY29uc3Qgc3RydWN0IGFjdGlvbl9jaGFpbiAqcGVtX2dl dF9zdXNwZW5kX2FjdGlvbl9jaGFpbihzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdyKQorewor CXJldHVybiAmc3VzcGVuZF9hY3Rpb25fY2hhaW47Cit9CisKK2NvbnN0IHN0cnVjdCBhY3Rpb25f Y2hhaW4gKnBlbV9nZXRfaW5pdGlhbGl6ZV9hY3Rpb25fY2hhaW4oc3RydWN0IHBwX2V2ZW50bWdy ICpldmVudG1ncikKK3sKKwlyZXR1cm4gJmluaXRpYWxpemVfYWN0aW9uX2NoYWluOworfQorCitj b25zdCBzdHJ1Y3QgYWN0aW9uX2NoYWluICpwZW1fZ2V0X3VuaW5pdGlhbGl6ZV9hY3Rpb25fY2hh aW4oc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1ncikKK3sKKwlyZXR1cm4gJnVuaW5pdGlhbGl6 ZV9hY3Rpb25fY2hhaW47Cit9CisKK2NvbnN0IHN0cnVjdCBhY3Rpb25fY2hhaW4gKnBlbV9nZXRf cG93ZXJfc291cmNlX2NoYW5nZV9hY3Rpb25fY2hhaW4oc3RydWN0IHBwX2V2ZW50bWdyICpldmVu dG1ncikKK3sKKwlyZXR1cm4gJnBvd2VyX3NvdXJjZV9jaGFuZ2VfYWN0aW9uX2NoYWluX3BwX2Vu YWJsZWQ7ICAvKiBvdGhlciBjYXNlIGJhc2Ugb24gZmVhdHVyZSBpbmZvKi8KK30KKworY29uc3Qg c3RydWN0IGFjdGlvbl9jaGFpbiAqcGVtX2dldF9yZXN1bWVfYWN0aW9uX2NoYWluKHN0cnVjdCBw cF9ldmVudG1nciAqZXZlbnRtZ3IpCit7CisJcmV0dXJuICZyZXN1bWVfYWN0aW9uX2NoYWluOwor fQorCitjb25zdCBzdHJ1Y3QgYWN0aW9uX2NoYWluICpwZW1fZ2V0X2hpYmVybmF0ZV9hY3Rpb25f Y2hhaW4oc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1ncikKK3sKKwlyZXR1cm4gTlVMTDsKK30K KworY29uc3Qgc3RydWN0IGFjdGlvbl9jaGFpbiAqcGVtX2dldF90aGVybWFsX25vdGlmaWNhdGlv bl9hY3Rpb25fY2hhaW4oc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1ncikKK3sKKwlyZXR1cm4g TlVMTDsKK30KKworY29uc3Qgc3RydWN0IGFjdGlvbl9jaGFpbiAqcGVtX2dldF92Ymlvc19ub3Rp ZmljYXRpb25fYWN0aW9uX2NoYWluKHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IpCit7CisJ cmV0dXJuIE5VTEw7Cit9CisKK2NvbnN0IHN0cnVjdCBhY3Rpb25fY2hhaW4gKnBlbV9nZXRfZW50 ZXJfdGhlcm1hbF9zdGF0ZV9hY3Rpb25fY2hhaW4oc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1n cikKK3sKKwlyZXR1cm4gTlVMTDsKK30KKworY29uc3Qgc3RydWN0IGFjdGlvbl9jaGFpbiAqcGVt X2dldF9leGl0X3RoZXJtYWxfc3RhdGVfYWN0aW9uX2NoYWluKHN0cnVjdCBwcF9ldmVudG1nciAq ZXZlbnRtZ3IpCit7CisJcmV0dXJuIE5VTEw7Cit9CisKK2NvbnN0IHN0cnVjdCBhY3Rpb25fY2hh aW4gKnBlbV9nZXRfZW5hYmxlX3Bvd2VycGxheV9hY3Rpb25fY2hhaW4oc3RydWN0IHBwX2V2ZW50 bWdyICpldmVudG1ncikKK3sKKwlyZXR1cm4gTlVMTDsKK30KKworY29uc3Qgc3RydWN0IGFjdGlv bl9jaGFpbiAqcGVtX2dldF9kaXNhYmxlX3Bvd2VycGxheV9hY3Rpb25fY2hhaW4oc3RydWN0IHBw X2V2ZW50bWdyICpldmVudG1ncikKK3sKKwlyZXR1cm4gTlVMTDsKK30KKworY29uc3Qgc3RydWN0 IGFjdGlvbl9jaGFpbiAqcGVtX2dldF9lbmFibGVfb3ZlcmRyaXZlX3Rlc3RfYWN0aW9uX2NoYWlu KHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IpCit7CisJcmV0dXJuIE5VTEw7Cit9CisKK2Nv bnN0IHN0cnVjdCBhY3Rpb25fY2hhaW4gKnBlbV9nZXRfZGlzYWJsZV9vdmVyZHJpdmVfdGVzdF9h Y3Rpb25fY2hhaW4oc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1ncikKK3sKKwlyZXR1cm4gTlVM TDsKK30KKworY29uc3Qgc3RydWN0IGFjdGlvbl9jaGFpbiAqcGVtX2dldF9lbmFibGVfZ2Z4X2Ns b2NrX2dhdGluZ19hY3Rpb25fY2hhaW4oc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1ncikKK3sK KwlyZXR1cm4gJmVuYWJsZV9nZnhfY2xvY2tfZ2F0aW5nX2FjdGlvbl9jaGFpbjsKK30KKworY29u c3Qgc3RydWN0IGFjdGlvbl9jaGFpbiAqcGVtX2dldF9kaXNhYmxlX2dmeF9jbG9ja19nYXRpbmdf YWN0aW9uX2NoYWluKHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IpCit7CisJcmV0dXJuICZk aXNhYmxlX2dmeF9jbG9ja19nYXRpbmdfYWN0aW9uX2NoYWluOworfQorCitjb25zdCBzdHJ1Y3Qg YWN0aW9uX2NoYWluICpwZW1fZ2V0X2VuYWJsZV9jZ3BnX2FjdGlvbl9jaGFpbihzdHJ1Y3QgcHBf ZXZlbnRtZ3IgKmV2ZW50bWdyKQoreworCXJldHVybiAmZW5hYmxlX2NncGdfYWN0aW9uX2NoYWlu OworfQorCitjb25zdCBzdHJ1Y3QgYWN0aW9uX2NoYWluICpwZW1fZ2V0X2Rpc2FibGVfY2dwZ19h Y3Rpb25fY2hhaW4oc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1ncikKK3sKKwlyZXR1cm4gJmRp c2FibGVfY2dwZ19hY3Rpb25fY2hhaW47Cit9CisKK2NvbnN0IHN0cnVjdCBhY3Rpb25fY2hhaW4g KnBlbV9nZXRfY29tcGxldGVfaW5pdF9hY3Rpb25fY2hhaW4oc3RydWN0IHBwX2V2ZW50bWdyICpl dmVudG1ncikKK3sKKwlyZXR1cm4gJmNvbXBsZXRlX2luaXRfYWN0aW9uX2NoYWluOworfQorCitj b25zdCBzdHJ1Y3QgYWN0aW9uX2NoYWluICpwZW1fZ2V0X3NjcmVlbl9vbl9hY3Rpb25fY2hhaW4o c3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1ncikKK3sKKwlyZXR1cm4gTlVMTDsKK30KKworY29u c3Qgc3RydWN0IGFjdGlvbl9jaGFpbiAqcGVtX2dldF9zY3JlZW5fb2ZmX2FjdGlvbl9jaGFpbihz dHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdyKQoreworCXJldHVybiBOVUxMOworfQorCitjb25z dCBzdHJ1Y3QgYWN0aW9uX2NoYWluICpwZW1fZ2V0X3ByZV9zdXNwZW5kX2FjdGlvbl9jaGFpbihz dHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdyKQoreworCXJldHVybiBOVUxMOworfQorCitjb25z dCBzdHJ1Y3QgYWN0aW9uX2NoYWluICpwZW1fZ2V0X3ByZV9yZXN1bWVfYWN0aW9uX2NoYWluKHN0 cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IpCit7CisJcmV0dXJuIE5VTEw7Cit9CisKK2NvbnN0 IHN0cnVjdCBhY3Rpb25fY2hhaW4gKnBlbV9lbmFibGVfdXNlcl9zdGF0ZV9hY3Rpb25fY2hhaW4o c3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1ncikKK3sKKwlyZXR1cm4gJmVuYWJsZV91c2VyX3N0 YXRlX2FjdGlvbl9jaGFpbjsKK30KKworY29uc3Qgc3RydWN0IGFjdGlvbl9jaGFpbiAqcGVtX3Jl YWRqdXN0X3Bvd2VyX3N0YXRlX2FjdGlvbl9jaGFpbihzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50 bWdyKQoreworCXJldHVybiAmcmVhZGp1c3RfcG93ZXJfc3RhdGVfYWN0aW9uX2NoYWluOworfQor Citjb25zdCBzdHJ1Y3QgYWN0aW9uX2NoYWluICpwZW1fZGlzcGxheV9jb25maWdfY2hhbmdlX2Fj dGlvbl9jaGFpbihzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdyKQoreworCXJldHVybiAmZGlz cGxheV9jb25maWdfY2hhbmdlX2FjdGlvbl9jaGFpbjsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvcG93ZXJwbGF5L2V2ZW50bWdyL2V2ZW50bWFuYWdlbWVudC5oIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvZXZlbnRtZ3IvZXZlbnRtYW5hZ2VtZW50LmgKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzgzZDRiMgotLS0gL2Rldi9udWxsCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2V2ZW50bWdyL2V2ZW50bWFuYWdlbWVudC5o CkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNSBBZHZhbmNlZCBNaWNybyBE ZXZpY2VzLCBJbmMuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0 d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiks CisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp bmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5 LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxs IGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo ZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs b3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg dGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGll cyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNP RlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs IEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhF IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBU SEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xB SU0sIERBTUFHRVMgT1IKKyAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04g T0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAorICogQVJJU0lORyBGUk9NLCBPVVQgT0Yg T1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCisgKiBPVEhF UiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisjaWZuZGVmIF9FVkVOVF9NQU5B R0VNRU5UX0hfCisjZGVmaW5lIF9FVkVOVF9NQU5BR0VNRU5UX0hfCisKKyNpbmNsdWRlICJldmVu dG1nci5oIgorCitpbnQgcGVtX2luaXRfZXZlbnRfYWN0aW9uX2NoYWlucyhzdHJ1Y3QgcHBfZXZl bnRtZ3IgKmV2ZW50bWdyKTsKK2ludCBwZW1fZXhjdXRlX2V2ZW50X2NoYWluKHN0cnVjdCBwcF9l dmVudG1nciAqZXZlbnRtZ3IsIGNvbnN0IHN0cnVjdCBhY3Rpb25fY2hhaW4gKmV2ZW50X2NoYWlu LCBzdHJ1Y3QgcGVtX2V2ZW50X2RhdGEgKmV2ZW50X2RhdGEpOworY29uc3Qgc3RydWN0IGFjdGlv bl9jaGFpbiAqcGVtX2dldF9zdXNwZW5kX2FjdGlvbl9jaGFpbihzdHJ1Y3QgcHBfZXZlbnRtZ3Ig KmV2ZW50bWdyKTsKK2NvbnN0IHN0cnVjdCBhY3Rpb25fY2hhaW4gKnBlbV9nZXRfaW5pdGlhbGl6 ZV9hY3Rpb25fY2hhaW4oc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1ncik7Citjb25zdCBzdHJ1 Y3QgYWN0aW9uX2NoYWluICpwZW1fZ2V0X3VuaW5pdGlhbGl6ZV9hY3Rpb25fY2hhaW4oc3RydWN0 IHBwX2V2ZW50bWdyICpldmVudG1ncik7Citjb25zdCBzdHJ1Y3QgYWN0aW9uX2NoYWluICpwZW1f Z2V0X3Bvd2VyX3NvdXJjZV9jaGFuZ2VfYWN0aW9uX2NoYWluKHN0cnVjdCBwcF9ldmVudG1nciAq ZXZlbnRtZ3IpOworY29uc3Qgc3RydWN0IGFjdGlvbl9jaGFpbiAqcGVtX2dldF9yZXN1bWVfYWN0 aW9uX2NoYWluKHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IpOworY29uc3Qgc3RydWN0IGFj dGlvbl9jaGFpbiAqcGVtX2dldF9oaWJlcm5hdGVfYWN0aW9uX2NoYWluKHN0cnVjdCBwcF9ldmVu dG1nciAqZXZlbnRtZ3IpOworY29uc3Qgc3RydWN0IGFjdGlvbl9jaGFpbiAqcGVtX2dldF90aGVy bWFsX25vdGlmaWNhdGlvbl9hY3Rpb25fY2hhaW4oc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1n cik7Citjb25zdCBzdHJ1Y3QgYWN0aW9uX2NoYWluICpwZW1fZ2V0X3ZiaW9zX25vdGlmaWNhdGlv bl9hY3Rpb25fY2hhaW4oc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1ncik7Citjb25zdCBzdHJ1 Y3QgYWN0aW9uX2NoYWluICpwZW1fZ2V0X2VudGVyX3RoZXJtYWxfc3RhdGVfYWN0aW9uX2NoYWlu KHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IpOworY29uc3Qgc3RydWN0IGFjdGlvbl9jaGFp biAqcGVtX2dldF9leGl0X3RoZXJtYWxfc3RhdGVfYWN0aW9uX2NoYWluKHN0cnVjdCBwcF9ldmVu dG1nciAqZXZlbnRtZ3IpOworY29uc3Qgc3RydWN0IGFjdGlvbl9jaGFpbiAqcGVtX2dldF9lbmFi bGVfcG93ZXJwbGF5X2FjdGlvbl9jaGFpbihzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdyKTsK K2NvbnN0IHN0cnVjdCBhY3Rpb25fY2hhaW4gKnBlbV9nZXRfZGlzYWJsZV9wb3dlcnBsYXlfYWN0 aW9uX2NoYWluKHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IpOworY29uc3Qgc3RydWN0IGFj dGlvbl9jaGFpbiAqcGVtX2dldF9lbmFibGVfb3ZlcmRyaXZlX3Rlc3RfYWN0aW9uX2NoYWluKHN0 cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IpOworY29uc3Qgc3RydWN0IGFjdGlvbl9jaGFpbiAq cGVtX2dldF9kaXNhYmxlX292ZXJkcml2ZV90ZXN0X2FjdGlvbl9jaGFpbihzdHJ1Y3QgcHBfZXZl bnRtZ3IgKmV2ZW50bWdyKTsKK2NvbnN0IHN0cnVjdCBhY3Rpb25fY2hhaW4gKnBlbV9nZXRfZW5h YmxlX2dmeF9jbG9ja19nYXRpbmdfYWN0aW9uX2NoYWluKHN0cnVjdCBwcF9ldmVudG1nciAqZXZl bnRtZ3IpOworY29uc3Qgc3RydWN0IGFjdGlvbl9jaGFpbiAqcGVtX2dldF9kaXNhYmxlX2dmeF9j bG9ja19nYXRpbmdfYWN0aW9uX2NoYWluKHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IpOwor Y29uc3Qgc3RydWN0IGFjdGlvbl9jaGFpbiAqcGVtX2dldF9lbmFibGVfY2dwZ19hY3Rpb25fY2hh aW4oc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1ncik7Citjb25zdCBzdHJ1Y3QgYWN0aW9uX2No YWluICpwZW1fZ2V0X2Rpc2FibGVfY2dwZ19hY3Rpb25fY2hhaW4oc3RydWN0IHBwX2V2ZW50bWdy ICpldmVudG1ncik7Citjb25zdCBzdHJ1Y3QgYWN0aW9uX2NoYWluICpwZW1fZ2V0X2NvbXBsZXRl X2luaXRfYWN0aW9uX2NoYWluKHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IpOworY29uc3Qg c3RydWN0IGFjdGlvbl9jaGFpbiAqcGVtX2dldF9zY3JlZW5fb25fYWN0aW9uX2NoYWluKHN0cnVj dCBwcF9ldmVudG1nciAqZXZlbnRtZ3IpOworY29uc3Qgc3RydWN0IGFjdGlvbl9jaGFpbiAqcGVt X2dldF9zY3JlZW5fb2ZmX2FjdGlvbl9jaGFpbihzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdy KTsKK2NvbnN0IHN0cnVjdCBhY3Rpb25fY2hhaW4gKnBlbV9nZXRfcHJlX3N1c3BlbmRfYWN0aW9u X2NoYWluKHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IpOworY29uc3Qgc3RydWN0IGFjdGlv bl9jaGFpbiAqcGVtX2dldF9wcmVfcmVzdW1lX2FjdGlvbl9jaGFpbihzdHJ1Y3QgcHBfZXZlbnRt Z3IgKmV2ZW50bWdyKTsKKworZXh0ZXJuIGNvbnN0IHN0cnVjdCBhY3Rpb25fY2hhaW4gKnBlbV9l bmFibGVfdXNlcl9zdGF0ZV9hY3Rpb25fY2hhaW4oc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1n cik7CitleHRlcm4gY29uc3Qgc3RydWN0IGFjdGlvbl9jaGFpbiAqcGVtX3JlYWRqdXN0X3Bvd2Vy X3N0YXRlX2FjdGlvbl9jaGFpbihzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdyKTsKK2NvbnN0 IHN0cnVjdCBhY3Rpb25fY2hhaW4gKnBlbV9kaXNwbGF5X2NvbmZpZ19jaGFuZ2VfYWN0aW9uX2No YWluKHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IpOworCisKKyNlbmRpZiAvKiBfRVZFTlRf TUFOQUdFTUVOVF9IXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBs YXkvZXZlbnRtZ3IvZXZlbnRtZ3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2V2 ZW50bWdyL2V2ZW50bWdyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJh M2VmYwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2V2 ZW50bWdyL2V2ZW50bWdyLmMKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAx NSBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJl YnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAq IGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz ICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJl c3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRv IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5z ZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQg cGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBz dWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29w eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRl ZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdh cmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FS UkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQg Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5P IEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykgQkUg TElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKKyAqIE9USEVSIExJQUJJTElUWSwgV0hF VEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAorICogQVJJ U0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU SEUgVVNFIE9SCisgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisj aW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNs dWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSAiZXZlbnRtZ3IuaCIKKyNpbmNsdWRlICJod21n ci5oIgorI2luY2x1ZGUgImV2ZW50aW5pdC5oIgorI2luY2x1ZGUgImV2ZW50bWFuYWdlbWVudC5o IgorCitzdGF0aWMgaW50IHBlbV9pbml0KHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IpCit7 CisJaW50IHJlc3VsdCA9IDA7CisJc3RydWN0IHBlbV9ldmVudF9kYXRhIGV2ZW50X2RhdGE7CisK KwkvKiBJbml0aWFsaXplIFBvd2VyUGxheSBmZWF0dXJlIGluZm8gKi8KKwlwZW1faW5pdF9mZWF0 dXJlX2luZm8oZXZlbnRtZ3IpOworCisJLyogSW5pdGlhbGl6ZSBldmVudCBhY3Rpb24gY2hhaW5z ICovCisJcGVtX2luaXRfZXZlbnRfYWN0aW9uX2NoYWlucyhldmVudG1ncik7CisKKwkvKiBDYWxs IGluaXRpYWxpemF0aW9uIGV2ZW50ICovCisJcmVzdWx0ID0gcGVtX2hhbmRsZV9ldmVudChldmVu dG1nciwgQU1EX1BQX0VWRU5UX0lOSVRJQUxJWkUsICZldmVudF9kYXRhKTsKKworCWlmICgwICE9 IHJlc3VsdCkKKwkJcmV0dXJuIHJlc3VsdDsKKworCS8qIFJlZ2lzdGVyIGludGVycnVwdCBjYWxs YmFjayBmdW5jdGlvbnMgKi8KKwlyZXN1bHQgPSBwZW1fcmVnaXN0ZXJfaW50ZXJydXB0cyhldmVu dG1ncik7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHBlbV9maW5pKHN0cnVjdCBwcF9l dmVudG1nciAqZXZlbnRtZ3IpCit7CisJc3RydWN0IHBlbV9ldmVudF9kYXRhIGV2ZW50X2RhdGE7 CisKKwlwZW1fdW5pbml0X2ZlYXR1cmVJbmZvKGV2ZW50bWdyKTsKKwlwZW1fdW5yZWdpc3Rlcl9p bnRlcnJ1cHRzKGV2ZW50bWdyKTsKKworCXBlbV9oYW5kbGVfZXZlbnQoZXZlbnRtZ3IsIEFNRF9Q UF9FVkVOVF9VTklOSVRJQUxJWkUsICZldmVudF9kYXRhKTsKKworCWlmIChldmVudG1nciAhPSBO VUxMKQorCQlrZnJlZShldmVudG1ncik7Cit9CisKK2ludCBldmVudG1ncl9pbml0KHN0cnVjdCBw cF9pbnN0YW5jZSAqaGFuZGxlKQoreworCWludCByZXN1bHQgPSAwOworCXN0cnVjdCBwcF9ldmVu dG1nciAqZXZlbnRtZ3I7CisKKwlpZiAoaGFuZGxlID09IE5VTEwpCisJCXJldHVybiAtRUlOVkFM OworCisJZXZlbnRtZ3IgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgcHBfZXZlbnRtZ3IpLCBHRlBf S0VSTkVMKTsKKwlpZiAoZXZlbnRtZ3IgPT0gTlVMTCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwll dmVudG1nci0+aHdtZ3IgPSBoYW5kbGUtPmh3bWdyOworCWhhbmRsZS0+ZXZlbnRtZ3IgPSBldmVu dG1ncjsKKworCWV2ZW50bWdyLT5wbGF0Zm9ybV9kZXNjcmlwdG9yID0gJihldmVudG1nci0+aHdt Z3ItPnBsYXRmb3JtX2Rlc2NyaXB0b3IpOworCWV2ZW50bWdyLT5wcF9ldmVudG1ncl9pbml0ID0g cGVtX2luaXQ7CisJZXZlbnRtZ3ItPnBwX2V2ZW50bWdyX2ZpbmkgPSBwZW1fZmluaTsKKworCXJl dHVybiByZXN1bHQ7Cit9CisKK2ludCBldmVudG1ncl9maW5pKHN0cnVjdCBwcF9ldmVudG1nciAq ZXZlbnRtZ3IpCit7CisJa2ZyZWUoZXZlbnRtZ3IpOworCXJldHVybiAwOworfQorCitzdGF0aWMg aW50IHBlbV9oYW5kbGVfZXZlbnRfdW5sb2NrZWQoc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1n ciwgZW51bSBhbWRfcHBfZXZlbnQgZXZlbnQsIHN0cnVjdCBwZW1fZXZlbnRfZGF0YSAqZGF0YSkK K3sKKwlpZiAoZXZlbnRtZ3IgPT0gTlVMTCB8fCBldmVudCA+PSBBTURfUFBfRVZFTlRfTUFYIHx8 IGRhdGEgPT0gTlVMTCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlyZXR1cm4gcGVtX2V4Y3V0ZV9l dmVudF9jaGFpbihldmVudG1nciwgZXZlbnRtZ3ItPmV2ZW50X2NoYWluW2V2ZW50XSwgZGF0YSk7 Cit9CisKK2ludCBwZW1faGFuZGxlX2V2ZW50KHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3Is IGVudW0gYW1kX3BwX2V2ZW50IGV2ZW50LCBzdHJ1Y3QgcGVtX2V2ZW50X2RhdGEgKmV2ZW50X2Rh dGEpCit7CisJaW50IHIgPSAwOworCisJciA9IHBlbV9oYW5kbGVfZXZlbnRfdW5sb2NrZWQoZXZl bnRtZ3IsIGV2ZW50LCBldmVudF9kYXRhKTsKKworCXJldHVybiByOworfQorCitib29sIHBlbV9p c19od19hY2Nlc3NfYmxvY2tlZChzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdyKQoreworCXJl dHVybiAoZXZlbnRtZ3ItPmJsb2NrX2FkanVzdF9wb3dlcl9zdGF0ZSB8fCBwaG1faXNfaHdfYWNj ZXNzX2Jsb2NrZWQoZXZlbnRtZ3ItPmh3bWdyKSk7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL3Bvd2VycGxheS9ldmVudG1nci9ldmVudHN1YmNoYWlucy5jIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9wb3dlcnBsYXkvZXZlbnRtZ3IvZXZlbnRzdWJjaGFpbnMuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OWQ4YTI5Ci0tLSAvZGV2L251bGwKKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvZXZlbnRtZ3IvZXZlbnRzdWJjaGFpbnMuYwpAQCAt MCwwICsxLDM5NSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE1IEFkdmFuY2VkIE1pY3JvIERldmlj ZXMsIEluYy4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJl IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAq IHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3 aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1l cmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29w aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisg KiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz IHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9y IHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ UkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBD T1BZUklHSFQgSE9MREVSKFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwg REFNQUdFUyBPUgorICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBD T05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJ TiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVSIERF QUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImV2ZW50bWdyLmgi CisjaW5jbHVkZSAiZXZlbnRzdWJjaGFpbnMuaCIKKyNpbmNsdWRlICJldmVudHRhc2tzLmgiCisj aW5jbHVkZSAiaGFyZHdhcmVtYW5hZ2VyLmgiCisKK2NvbnN0IHBlbV9ldmVudF9hY3Rpb24gcmVz ZXRfZGlzcGxheV9waHlfYWNjZXNzX3Rhc2tzW10gPSB7CisJcGVtX3Rhc2tfcmVzZXRfZGlzcGxh eV9waHlzX2FjY2VzcywKKwlOVUxMCit9OworCitjb25zdCBwZW1fZXZlbnRfYWN0aW9uIGJyb2Fk Y2FzdF9wb3dlcl9wb2xpY3lfdGFza3NbXSA9IHsKKwkvKiBQRU1fVGFza19Ccm9hZGNhc3RQb3dl clBvbGljeUNoYW5nZSwgKi8KKwlOVUxMCit9OworCitjb25zdCBwZW1fZXZlbnRfYWN0aW9uIHVu cmVnaXN0ZXJfaW50ZXJydXB0X3Rhc2tzW10gPSB7CisJcGVtX3Rhc2tfdW5yZWdpc3Rlcl9pbnRl cnJ1cHRzLAorCU5VTEwKK307CisKKy8qIERpc2FibGUgR0ZYIFZvbHRhZ2UgSXNsYW5kcyBQb3dl ciBHYXRpbmcgKi8KK2NvbnN0IHBlbV9ldmVudF9hY3Rpb24gZGlzYWJsZV9nZnhfdm9sdGFnZV9p c2xhbmRfcG93ZXJnYXRpbmdfdGFza3NbXSA9IHsKKwlwZW1fdGFza19kaXNhYmxlX3ZvbHRhZ2Vf aXNsYW5kX3Bvd2VyX2dhdGluZywKKwlOVUxMCit9OworCitjb25zdCBwZW1fZXZlbnRfYWN0aW9u IGRpc2FibGVfZ2Z4X2Nsb2NrZ2F0aW5nX3Rhc2tzW10gPSB7CisJcGVtX3Rhc2tfZGlzYWJsZV9n ZnhfY2xvY2tfZ2F0aW5nLAorCU5VTEwKK307CisKK2NvbnN0IHBlbV9ldmVudF9hY3Rpb24gYmxv Y2tfYWRqdXN0X3Bvd2VyX3N0YXRlX3Rhc2tzW10gPSB7CisJcGVtX3Rhc2tfYmxvY2tfYWRqdXN0 X3Bvd2VyX3N0YXRlLAorCU5VTEwKK307CisKKworY29uc3QgcGVtX2V2ZW50X2FjdGlvbiB1bmJs b2NrX2FkanVzdF9wb3dlcl9zdGF0ZV90YXNrc1tdID0geworCXBlbV90YXNrX3VuYmxvY2tfYWRq dXN0X3Bvd2VyX3N0YXRlLAorCU5VTEwKK307CisKK2NvbnN0IHBlbV9ldmVudF9hY3Rpb24gc2V0 X3BlcmZvcm1hbmNlX3N0YXRlX3Rhc2tzW10gPSB7CisJcGVtX3Rhc2tfc2V0X3BlcmZvcm1hbmNl X3N0YXRlLAorCU5VTEwKK307CisKK2NvbnN0IHBlbV9ldmVudF9hY3Rpb24gZ2V0XzJkX3BlcmZv cm1hbmNlX3N0YXRlX3Rhc2tzW10gPSB7CisJcGVtX3Rhc2tfZ2V0XzJEX3BlcmZvcm1hbmNlX3N0 YXRlX2lkLAorCU5VTEwKK307CisKK2NvbnN0IHBlbV9ldmVudF9hY3Rpb24gY29uZGl0aW9uYWxs eV9mb3JjZTNEX3BlcmZvcm1hbmNlX3N0YXRlX3Rhc2tzW10gPSB7CisJcGVtX3Rhc2tfY29uZGl0 aW9uYWxseV9mb3JjZV8zZF9wZXJmb3JtYW5jZV9zdGF0ZSwKKwlOVUxMCit9OworCitjb25zdCBw ZW1fZXZlbnRfYWN0aW9uIHByb2Nlc3NfdmJpb3NfZXZlbnRpbmZvX3Rhc2tzW10gPSB7CisJLyog UEVNX1Rhc2tfUHJvY2Vzc1ZiaW9zRXZlbnRJbmZvLCovCisJTlVMTAorfTsKKworY29uc3QgcGVt X2V2ZW50X2FjdGlvbiBlbmFibGVfZHluYW1pY19zdGF0ZV9tYW5hZ2VtZW50X3Rhc2tzW10gPSB7 CisJLyogUEVNX1Rhc2tfUmVzZXRCQVBNUG9saWN5Q2hhbmdlZEZsYWcsKi8KKwlwZW1fdGFza19n ZXRfYm9vdF9zdGF0ZV9pZCwKKwlwZW1fdGFza19lbmFibGVfZHluYW1pY19zdGF0ZV9tYW5hZ2Vt ZW50LAorCXBlbV90YXNrX3JlZ2lzdGVyX2ludGVycnVwdHMsCisJTlVMTAorfTsKKworY29uc3Qg cGVtX2V2ZW50X2FjdGlvbiBlbmFibGVfY2xvY2tfcG93ZXJfZ2F0aW5nc190YXNrc1tdID0gewor CXBlbV90YXNrX2VuYWJsZV9jbG9ja19wb3dlcl9nYXRpbmdzX3Rhc2tzLAorCXBlbV90YXNrX3Bv d2VyZG93bl91dmRfdGFza3MsCisJcGVtX3Rhc2tfcG93ZXJkb3duX3ZjZV90YXNrcywKKwlOVUxM Cit9OworCitjb25zdCBwZW1fZXZlbnRfYWN0aW9uIHNldHVwX2FzaWNfdGFza3NbXSA9IHsKKwlw ZW1fdGFza19zZXR1cF9hc2ljLAorCU5VTEwKK307CisKK2NvbnN0IHBlbV9ldmVudF9hY3Rpb24g cG93ZXJfYnVkZ2V0X3Rhc2tzW10gPSB7CisJLyogVE9ETworCSAqIFBFTV9UYXNrX1Bvd2VyQnVk Z2V0V2FpdmVyQXZhaWxhYmxlLAorCSAqIFBFTV9UYXNrX1Bvd2VyQnVkZ2V0V2FybmluZ01lc3Nh Z2UsCisJICogUEVNX1Rhc2tfUHJ1bmVTdGF0ZXNCYXNlZE9uUG93ZXJCdWRnZXQsCisJKi8KKwlO VUxMCit9OworCitjb25zdCBwZW1fZXZlbnRfYWN0aW9uIHN5c3RlbV9jb25maWdfdGFza3NbXSA9 IHsKKwkvKiBQRU1fVGFza19QcnVuZVN0YXRlc0Jhc2VkT25TeXN0ZW1Db25maWcsKi8KKwlOVUxM Cit9OworCisKK2NvbnN0IHBlbV9ldmVudF9hY3Rpb24gY29uZGl0aW9uYWxseV9mb3JjZV8zZF9w ZXJmb3JtYW5jZV9zdGF0ZV90YXNrc1tdID0geworCXBlbV90YXNrX2NvbmRpdGlvbmFsbHlfZm9y Y2VfM2RfcGVyZm9ybWFuY2Vfc3RhdGUsCisJTlVMTAorfTsKKworY29uc3QgcGVtX2V2ZW50X2Fj dGlvbiB1bmdhdGVfYWxsX2Rpc3BsYXlfcGh5c190YXNrc1tdID0geworCS8qIFBFTV9UYXNrX0dl dERpc3BsYXlQaHlBY2Nlc3NJbmZvICovCisJTlVMTAorfTsKKworY29uc3QgcGVtX2V2ZW50X2Fj dGlvbiB1bmluaXRpYWxpemVfZGlzcGxheV9waHlfYWNjZXNzX3Rhc2tzW10gPSB7CisJLyogUEVN X1Rhc2tfVW5pbml0aWFsaXplRGlzcGxheVBoeXNBY2Nlc3MsICovCisJTlVMTAorfTsKKworY29u c3QgcGVtX2V2ZW50X2FjdGlvbiBkaXNhYmxlX2dmeF92b2x0YWdlX2lzbGFuZF9wb3dlcl9nYXRp bmdfdGFza3NbXSA9IHsKKwkvKiBQRU1fVGFza19EaXNhYmxlVm9sdGFnZUlzbGFuZFBvd2VyR2F0 aW5nLCAqLworCU5VTEwKK307CisKK2NvbnN0IHBlbV9ldmVudF9hY3Rpb24gZGlzYWJsZV9nZnhf Y2xvY2tfZ2F0aW5nX3Rhc2tzW10gPSB7CisJcGVtX3Rhc2tfZGlzYWJsZV9nZnhfY2xvY2tfZ2F0 aW5nLAorCU5VTEwKK307CisKK2NvbnN0IHBlbV9ldmVudF9hY3Rpb24gc2V0X2Jvb3Rfc3RhdGVf dGFza3NbXSA9IHsKKwlwZW1fdGFza19nZXRfYm9vdF9zdGF0ZV9pZCwKKwlwZW1fdGFza19zZXRf Ym9vdF9zdGF0ZSwKKwlOVUxMCit9OworCitjb25zdCBwZW1fZXZlbnRfYWN0aW9uIGFkanVzdF9w b3dlcl9zdGF0ZV90YXNrc1tdID0geworCXBlbV90YXNrX25vdGlmeV9od19tZ3JfZGlzcGxheV9j b25maWd1cmF0aW9uX2NoYW5nZSwKKwlwZW1fdGFza19hZGp1c3RfcG93ZXJfc3RhdGUsCisJLypw ZW1fdGFza19ub3RpZnlfc21jX2Rpc3BsYXlfY29uZmlnX2FmdGVyX3Bvd2VyX3N0YXRlX2FkanVz dG1lbnQsKi8KKwlwZW1fdGFza191cGRhdGVfYWxsb3dlZF9wZXJmb3JtYW5jZV9sZXZlbHMsCisJ LyogdG8gZG8gcGVtX3Rhc2tfRW5hYmxlX2Rpc2FibGVfYmFwbSwgKi8KKwlOVUxMCit9OworCitj b25zdCBwZW1fZXZlbnRfYWN0aW9uIGRpc2FibGVfZHluYW1pY19zdGF0ZV9tYW5hZ2VtZW50X3Rh c2tzW10gPSB7CisJcGVtX3Rhc2tfdW5yZWdpc3Rlcl9pbnRlcnJ1cHRzLAorCXBlbV90YXNrX2dl dF9ib290X3N0YXRlX2lkLAorCXBlbV90YXNrX2Rpc2FibGVfZHluYW1pY19zdGF0ZV9tYW5hZ2Vt ZW50LAorCU5VTEwKK307CisKK2NvbnN0IHBlbV9ldmVudF9hY3Rpb24gZGlzYWJsZV9jbG9ja19w b3dlcl9nYXRpbmdzX3Rhc2tzW10gPSB7CisJcGVtX3Rhc2tfZGlzYWJsZV9jbG9ja19wb3dlcl9n YXRpbmdzX3Rhc2tzLAorCU5VTEwKK307CisKK2NvbnN0IHBlbV9ldmVudF9hY3Rpb24gY2xlYW51 cF9hc2ljX3Rhc2tzW10gPSB7CisJLyogUEVNX1Rhc2tfRGlzYWJsZUZQUywqLworCXBlbV90YXNr X2NsZWFudXBfYXNpYywKKwlOVUxMCit9OworCitjb25zdCBwZW1fZXZlbnRfYWN0aW9uIHByZXBh cmVfZm9yX3BucF9zdG9wX3Rhc2tzW10gPSB7CisJLyogUEVNX1Rhc2tfUHJlcGFyZUZvclBucFN0 b3AsKi8KKwlOVUxMCit9OworCitjb25zdCBwZW1fZXZlbnRfYWN0aW9uIHNldF9wb3dlcl9zb3Vy Y2VfdGFza3NbXSA9IHsKKwlwZW1fdGFza19zZXRfcG93ZXJfc291cmNlLAorCXBlbV90YXNrX25v dGlmeV9od19vZl9wb3dlcl9zb3VyY2UsCisJTlVMTAorfTsKKworY29uc3QgcGVtX2V2ZW50X2Fj dGlvbiBzZXRfcG93ZXJfc2F2aW5nX3N0YXRlX3Rhc2tzW10gPSB7CisJcGVtX3Rhc2tfcmVzZXRf cG93ZXJfc2F2aW5nX3N0YXRlLAorCXBlbV90YXNrX2dldF9wb3dlcl9zYXZpbmdfc3RhdGUsCisJ cGVtX3Rhc2tfc2V0X3Bvd2VyX3NhdmluZ19zdGF0ZSwKKwkvKiBQRU1fVGFza19SZXNldE9ERENT dGF0ZSwKKwkgKiBQRU1fVGFza19HZXRPRERDU3RhdGUsCisJICogUEVNX1Rhc2tfU2V0T0REQ1N0 YXRlLCovCisJTlVMTAorfTsKKworY29uc3QgcGVtX2V2ZW50X2FjdGlvbiBlbmFibGVfZGlzYWJs ZV9mcHNfdGFza3NbXSA9IHsKKwkvKiBQRU1fVGFza19FbmFibGVEaXNhYmxlRlBTLCovCisJTlVM TAorfTsKKworY29uc3QgcGVtX2V2ZW50X2FjdGlvbiBzZXRfbmJtY3Vfc3RhdGVfdGFza3NbXSA9 IHsKKwkvKiBQRU1fVGFza19OQk1DVVN0YXRlQ2hhbmdlLCovCisJTlVMTAorfTsKKworY29uc3Qg cGVtX2V2ZW50X2FjdGlvbiByZXNldF9oYXJkd2FyZV9kY19ub3RpZmljYXRpb25fdGFza3NbXSA9 IHsKKwkvKiBQRU1fVGFza19SZXNldEhhcmR3YXJlRENOb3RpZmljYXRpb24sKi8KKwlOVUxMCit9 OworCisKK2NvbnN0IHBlbV9ldmVudF9hY3Rpb24gbm90aWZ5X3NtdV9zdXNwZW5kX3Rhc2tzW10g PSB7CisJLyogUEVNX1Rhc2tfTm90aWZ5U01VU3VzcGVuZCwqLworCU5VTEwKK307CisKK2NvbnN0 IHBlbV9ldmVudF9hY3Rpb24gZGlzYWJsZV9zbWNfZmlybXdhcmVfY3RmX3Rhc2tzW10gPSB7CisJ LyogUEVNX1Rhc2tfRGlzYWJsZVNNQ0Zpcm13YXJlQ1RGLCovCisJTlVMTAorfTsKKworY29uc3Qg cGVtX2V2ZW50X2FjdGlvbiBkaXNhYmxlX2Zwc190YXNrc1tdID0geworCS8qIFBFTV9UYXNrX0Rp c2FibGVGUFMsKi8KKwlOVUxMCit9OworCitjb25zdCBwZW1fZXZlbnRfYWN0aW9uIHZhcmlfYnJp Z2h0X3N1c3BlbmRfdGFza3NbXSA9IHsKKwkvKiBQRU1fVGFza19WYXJpQnJpZ2h0X1N1c3BlbmQs Ki8KKwlOVUxMCit9OworCitjb25zdCBwZW1fZXZlbnRfYWN0aW9uIHJlc2V0X2Zhbl9zcGVlZF90 b19kZWZhdWx0X3Rhc2tzW10gPSB7CisJLyogUEVNX1Rhc2tfUmVzZXRGYW5TcGVlZFRvRGVmYXVs dCwqLworCU5VTEwKK307CisKK2NvbnN0IHBlbV9ldmVudF9hY3Rpb24gcG93ZXJfZG93bl9hc2lj X3Rhc2tzW10gPSB7CisJLyogUEVNX1Rhc2tfRGlzYWJsZUZQUywqLworCXBlbV90YXNrX3Bvd2Vy X2Rvd25fYXNpYywKKwlOVUxMCit9OworCitjb25zdCBwZW1fZXZlbnRfYWN0aW9uIGRpc2FibGVf c3R1dHRlcl9tb2RlX3Rhc2tzW10gPSB7CisJLyogUEVNX1Rhc2tfRGlzYWJsZVN0dXR0ZXJNb2Rl LCovCisJTlVMTAorfTsKKworY29uc3QgcGVtX2V2ZW50X2FjdGlvbiBzZXRfY29ubmVjdGVkX3N0 YW5kYnlfdGFza3NbXSA9IHsKKwkvKiBQRU1fVGFza19TZXRDb25uZWN0ZWRTdGFuZGJ5LCovCisJ TlVMTAorfTsKKworY29uc3QgcGVtX2V2ZW50X2FjdGlvbiBibG9ja19od19hY2Nlc3NfdGFza3Nb XSA9IHsKKwlwZW1fdGFza19ibG9ja19od19hY2Nlc3MsCisJTlVMTAorfTsKKworY29uc3QgcGVt X2V2ZW50X2FjdGlvbiB1bmJsb2NrX2h3X2FjY2Vzc190YXNrc1tdID0geworCXBlbV90YXNrX3Vu X2Jsb2NrX2h3X2FjY2VzcywKKwlOVUxMCit9OworCitjb25zdCBwZW1fZXZlbnRfYWN0aW9uIHJl c3VtZV9jb25uZWN0ZWRfc3RhbmRieV90YXNrc1tdID0geworCS8qIFBFTV9UYXNrX1Jlc3VtZUNv bm5lY3RlZFN0YW5kYnksKi8KKwlOVUxMCit9OworCitjb25zdCBwZW1fZXZlbnRfYWN0aW9uIG5v dGlmeV9zbXVfcmVzdW1lX3Rhc2tzW10gPSB7CisJLyogUEVNX1Rhc2tfTm90aWZ5U01VUmVzdW1l LCovCisJTlVMTAorfTsKKworY29uc3QgcGVtX2V2ZW50X2FjdGlvbiByZXNldF9kaXNwbGF5X2Nv bmZpZ0NvdW50ZXJfdGFza3NbXSA9IHsKKwlwZW1fdGFza19yZXNldF9kaXNwbGF5X3BoeXNfYWNj ZXNzLAorCU5VTEwKK307CisKK2NvbnN0IHBlbV9ldmVudF9hY3Rpb24gdXBkYXRlX2RhbF9jb25m aWd1cmF0aW9uX3Rhc2tzW10gPSB7CisJLyogUEVNX1Rhc2tfQ2hlY2tWQmxhbmtUaW1lLCovCisJ TlVMTAorfTsKKworY29uc3QgcGVtX2V2ZW50X2FjdGlvbiB2YXJpX2JyaWdodF9yZXN1bWVfdGFz a3NbXSA9IHsKKwkvKiBQRU1fVGFza19WYXJpQnJpZ2h0X1Jlc3VtZSwqLworCU5VTEwKK307CisK K2NvbnN0IHBlbV9ldmVudF9hY3Rpb24gbm90aWZ5X2h3X3Bvd2VyX3NvdXJjZV90YXNrc1tdID0g eworCXBlbV90YXNrX25vdGlmeV9od19vZl9wb3dlcl9zb3VyY2UsCisJTlVMTAorfTsKKworY29u c3QgcGVtX2V2ZW50X2FjdGlvbiBwcm9jZXNzX3ZiaW9zX2V2ZW50X2luZm9fdGFza3NbXSA9IHsK KwkvKiBQRU1fVGFza19Qcm9jZXNzVmJpb3NFdmVudEluZm8sKi8KKwlOVUxMCit9OworCitjb25z dCBwZW1fZXZlbnRfYWN0aW9uIGVuYWJsZV9nZnhfY2xvY2tfZ2F0aW5nX3Rhc2tzW10gPSB7CisJ cGVtX3Rhc2tfZW5hYmxlX2dmeF9jbG9ja19nYXRpbmcsCisJTlVMTAorfTsKKworY29uc3QgcGVt X2V2ZW50X2FjdGlvbiBlbmFibGVfZ2Z4X3ZvbHRhZ2VfaXNsYW5kX3Bvd2VyX2dhdGluZ190YXNr c1tdID0geworCXBlbV90YXNrX2VuYWJsZV92b2x0YWdlX2lzbGFuZF9wb3dlcl9nYXRpbmcsCisJ TlVMTAorfTsKKworY29uc3QgcGVtX2V2ZW50X2FjdGlvbiByZXNldF9jbG9ja19nYXRpbmdfdGFz a3NbXSA9IHsKKwkvKiBQRU1fVGFza19SZXNldENsb2NrR2F0aW5nKi8KKwlOVUxMCit9OworCitj b25zdCBwZW1fZXZlbnRfYWN0aW9uIG5vdGlmeV9zbXVfdnB1X3JlY292ZXJ5X2VuZF90YXNrc1td ID0geworCS8qIFBFTV9UYXNrX05vdGlmeVNtdVZQVVJlY292ZXJ5RW5kLCovCisJTlVMTAorfTsK KworY29uc3QgcGVtX2V2ZW50X2FjdGlvbiBkaXNhYmxlX3ZwdV9jYXBfdGFza3NbXSA9IHsKKwkv KiBQRU1fVGFza19EaXNhYmxlVlBVQ2FwLCovCisJTlVMTAorfTsKKworY29uc3QgcGVtX2V2ZW50 X2FjdGlvbiBleGVjdXRlX2VzY2FwZV9zZXF1ZW5jZV90YXNrc1tdID0geworCS8qIFBFTV9UYXNr X0V4ZWN1dGVFc2NhcGVzZXF1ZW5jZSwqLworCU5VTEwKK307CisKK2NvbnN0IHBlbV9ldmVudF9h Y3Rpb24gbm90aWZ5X3Bvd2VyX3N0YXRlX2NoYW5nZV90YXNrc1tdID0geworCXBlbV90YXNrX25v dGlmeV9wb3dlcl9zdGF0ZV9jaGFuZ2UsCisJTlVMTAorfTsKKworY29uc3QgcGVtX2V2ZW50X2Fj dGlvbiBlbmFibGVfY2dwZ190YXNrc1tdID0geworCXBlbV90YXNrX2VuYWJsZV9jZ3BnLAorCU5V TEwKK307CisKK2NvbnN0IHBlbV9ldmVudF9hY3Rpb24gZGlzYWJsZV9jZ3BnX3Rhc2tzW10gPSB7 CisJcGVtX3Rhc2tfZGlzYWJsZV9jZ3BnLAorCU5VTEwKK307CisKK2NvbnN0IHBlbV9ldmVudF9h Y3Rpb24gZW5hYmxlX3VzZXJfMmRfcGVyZm9ybWFuY2VfdGFza3NbXSA9IHsKKwkvKiBQRU1fVGFz a19TZXRVc2VyMkRQZXJmb3JtYW5jZUZsYWcsKi8KKwkvKiBQRU1fVGFza19VcGRhdGVVc2VyMkRQ ZXJmb3JtYW5jZUVuYWJsZUV2ZW50cywqLworCU5VTEwKK307CisKK2NvbnN0IHBlbV9ldmVudF9h Y3Rpb24gYWRkX3VzZXJfMmRfcGVyZm9ybWFuY2Vfc3RhdGVfdGFza3NbXSA9IHsKKwkvKiBQRU1f VGFza19HZXQyRFBlcmZvcm1hbmNlVGVtcGxhdGUsKi8KKwkvKiBQRU1fVGFza19BbGxvY2F0ZU5l d1Bvd2VyU3RhdGVNZW1vcnksKi8KKwkvKiBQRU1fVGFza19Db3B5TmV3UG93ZXJTdGF0ZUluZm8s Ki8KKwkvKiBQRU1fVGFza19VcGRhdGVOZXdQb3dlclN0YXRlQ2xvY2tzLCovCisJLyogUEVNX1Rh c2tfVXBkYXRlTmV3UG93ZXJTdGF0ZVVzZXIyRFBlcmZvcm1hbmNlRmxhZywqLworCS8qIFBFTV9U YXNrX0FkZFBvd2VyU3RhdGUsKi8KKwkvKiBQRU1fVGFza19SZWxlYXNlTmV3UG93ZXJTdGF0ZU1l bW9yeSwqLworCU5VTEwKK307CisKK2NvbnN0IHBlbV9ldmVudF9hY3Rpb24gZGVsZXRlX3VzZXJf MmRfcGVyZm9ybWFuY2Vfc3RhdGVfdGFza3NbXSA9IHsKKwkvKiBQRU1fVGFza19HZXRDdXJyZW50 VXNlcjJEUGVyZm9ybWFuY2VTdGF0ZUlELCovCisJLyogUEVNX1Rhc2tfRGVsZXRlUG93ZXJTdGF0 ZSwqLworCS8qIFBFTV9UYXNrX1NldEN1cnJlbnRVc2VyMkRQZXJmb3JtYW5jZVN0YXRlSUQsKi8K KwlOVUxMCit9OworCitjb25zdCBwZW1fZXZlbnRfYWN0aW9uIGRpc2FibGVfdXNlcl8yZF9wZXJm b3JtYW5jZV90YXNrc1tdID0geworCS8qIFBFTV9UYXNrX1Jlc2V0VXNlcjJEUGVyZm9ybWFuY2VG bGFnLCovCisJLyogUEVNX1Rhc2tfVXBkYXRlVXNlcjJEUGVyZm9ybWFuY2VEaXNhYmxlRXZlbnRz LCovCisJTlVMTAorfTsKKworY29uc3QgcGVtX2V2ZW50X2FjdGlvbiBlbmFibGVfc3R1dHRlcl9t b2RlX3Rhc2tzW10gPSB7CisJcGVtX3Rhc2tfZW5hYmxlX3N0dXR0ZXJfbW9kZSwKKwlOVUxMCit9 OworCitjb25zdCBwZW1fZXZlbnRfYWN0aW9uIGVuYWJsZV9kaXNhYmxlX2JhcG1fdGFza3NbXSA9 IHsKKwkvKlBFTV9UYXNrX0VuYWJsZURpc2FibGVCQVBNLCovCisJTlVMTAorfTsKKworY29uc3Qg cGVtX2V2ZW50X2FjdGlvbiByZXNldF9ib290X3N0YXRlX3Rhc2tzW10gPSB7CisJcGVtX3Rhc2tf cmVzZXRfYm9vdF9zdGF0ZSwKKwlOVUxMCit9OworCitjb25zdCBwZW1fZXZlbnRfYWN0aW9uIGNy ZWF0ZV9uZXdfdXNlcl9wZXJmb3JtYW5jZV9zdGF0ZV90YXNrc1tdID0geworCXBlbV90YXNrX2Ny ZWF0ZV91c2VyX3BlcmZvcm1hbmNlX3N0YXRlLAorCU5VTEwKK307CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9ldmVudG1nci9ldmVudHN1YmNoYWlucy5oIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvZXZlbnRtZ3IvZXZlbnRzdWJjaGFpbnMuaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2UwZTYxCi0tLSAvZGV2L251bGwKKysr IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvZXZlbnRtZ3IvZXZlbnRzdWJjaGFpbnMu aApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IDIwMTUgQWR2YW5jZWQgTWljcm8g RGV2aWNlcywgSW5jLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUg b2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29m dHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIp LAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVk aW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlm eSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2Vs bCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0 aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5k IHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3Bp ZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBT T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E LCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI RSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICog VEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJQUJMRSBGT1IgQU5ZIENM QUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9O IE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9G IE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgorICogT1RI RVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisjaWZuZGVmIF9FVkVOVF9T VUJfQ0hBSU5TX0hfCisjZGVmaW5lIF9FVkVOVF9TVUJfQ0hBSU5TX0hfCisKKyNpbmNsdWRlICJl dmVudG1nci5oIgorCitleHRlcm4gY29uc3QgcGVtX2V2ZW50X2FjdGlvbiByZXNldF9kaXNwbGF5 X3BoeV9hY2Nlc3NfdGFza3NbXTsKK2V4dGVybiBjb25zdCBwZW1fZXZlbnRfYWN0aW9uIGJyb2Fk Y2FzdF9wb3dlcl9wb2xpY3lfdGFza3NbXTsKK2V4dGVybiBjb25zdCBwZW1fZXZlbnRfYWN0aW9u IHVucmVnaXN0ZXJfaW50ZXJydXB0X3Rhc2tzW107CitleHRlcm4gY29uc3QgcGVtX2V2ZW50X2Fj dGlvbiBkaXNhYmxlX0dGWF92b2x0YWdlX2lzbGFuZF9wb3dlcmdhdGluZ190YXNrc1tdOworZXh0 ZXJuIGNvbnN0IHBlbV9ldmVudF9hY3Rpb24gZGlzYWJsZV9HRlhfY2xvY2tnYXRpbmdfdGFza3Nb XTsKK2V4dGVybiBjb25zdCBwZW1fZXZlbnRfYWN0aW9uIGJsb2NrX2FkanVzdF9wb3dlcl9zdGF0 ZV90YXNrc1tdOworZXh0ZXJuIGNvbnN0IHBlbV9ldmVudF9hY3Rpb24gdW5ibG9ja19hZGp1c3Rf cG93ZXJfc3RhdGVfdGFza3NbXTsKK2V4dGVybiBjb25zdCBwZW1fZXZlbnRfYWN0aW9uIHNldF9w ZXJmb3JtYW5jZV9zdGF0ZV90YXNrc1tdOworZXh0ZXJuIGNvbnN0IHBlbV9ldmVudF9hY3Rpb24g Z2V0XzJEX3BlcmZvcm1hbmNlX3N0YXRlX3Rhc2tzW107CitleHRlcm4gY29uc3QgcGVtX2V2ZW50 X2FjdGlvbiBjb25kaXRpb25hbGx5X2ZvcmNlM0RfcGVyZm9ybWFuY2Vfc3RhdGVfdGFza3NbXTsK K2V4dGVybiBjb25zdCBwZW1fZXZlbnRfYWN0aW9uIHByb2Nlc3NfdmJpb3NfZXZlbnRpbmZvX3Rh c2tzW107CitleHRlcm4gY29uc3QgcGVtX2V2ZW50X2FjdGlvbiBlbmFibGVfZHluYW1pY19zdGF0 ZV9tYW5hZ2VtZW50X3Rhc2tzW107CitleHRlcm4gY29uc3QgcGVtX2V2ZW50X2FjdGlvbiBlbmFi bGVfY2xvY2tfcG93ZXJfZ2F0aW5nc190YXNrc1tdOworZXh0ZXJuIGNvbnN0IHBlbV9ldmVudF9h Y3Rpb24gY29uZGl0aW9uYWxseV9mb3JjZTNEX3BlcmZvcm1hbmNlX3N0YXRlX3Rhc2tzW107Citl eHRlcm4gY29uc3QgcGVtX2V2ZW50X2FjdGlvbiBzZXR1cF9hc2ljX3Rhc2tzW107CitleHRlcm4g Y29uc3QgcGVtX2V2ZW50X2FjdGlvbiBwb3dlcl9idWRnZXRfdGFza3NbXTsKK2V4dGVybiBjb25z dCBwZW1fZXZlbnRfYWN0aW9uIHN5c3RlbV9jb25maWdfdGFza3NbXTsKK2V4dGVybiBjb25zdCBw ZW1fZXZlbnRfYWN0aW9uIGdldF8yZF9wZXJmb3JtYW5jZV9zdGF0ZV90YXNrc1tdOworZXh0ZXJu IGNvbnN0IHBlbV9ldmVudF9hY3Rpb24gY29uZGl0aW9uYWxseV9mb3JjZV8zZF9wZXJmb3JtYW5j ZV9zdGF0ZV90YXNrc1tdOworZXh0ZXJuIGNvbnN0IHBlbV9ldmVudF9hY3Rpb24gdW5nYXRlX2Fs bF9kaXNwbGF5X3BoeXNfdGFza3NbXTsKK2V4dGVybiBjb25zdCBwZW1fZXZlbnRfYWN0aW9uIHVu aW5pdGlhbGl6ZV9kaXNwbGF5X3BoeV9hY2Nlc3NfdGFza3NbXTsKK2V4dGVybiBjb25zdCBwZW1f ZXZlbnRfYWN0aW9uIGRpc2FibGVfZ2Z4X3ZvbHRhZ2VfaXNsYW5kX3Bvd2VyX2dhdGluZ190YXNr c1tdOworZXh0ZXJuIGNvbnN0IHBlbV9ldmVudF9hY3Rpb24gZGlzYWJsZV9nZnhfY2xvY2tfZ2F0 aW5nX3Rhc2tzW107CitleHRlcm4gY29uc3QgcGVtX2V2ZW50X2FjdGlvbiBzZXRfYm9vdF9zdGF0 ZV90YXNrc1tdOworZXh0ZXJuIGNvbnN0IHBlbV9ldmVudF9hY3Rpb24gYWRqdXN0X3Bvd2VyX3N0 YXRlX3Rhc2tzW107CitleHRlcm4gY29uc3QgcGVtX2V2ZW50X2FjdGlvbiBkaXNhYmxlX2R5bmFt aWNfc3RhdGVfbWFuYWdlbWVudF90YXNrc1tdOworZXh0ZXJuIGNvbnN0IHBlbV9ldmVudF9hY3Rp b24gZGlzYWJsZV9jbG9ja19wb3dlcl9nYXRpbmdzX3Rhc2tzW107CitleHRlcm4gY29uc3QgcGVt X2V2ZW50X2FjdGlvbiBjbGVhbnVwX2FzaWNfdGFza3NbXTsKK2V4dGVybiBjb25zdCBwZW1fZXZl bnRfYWN0aW9uIHByZXBhcmVfZm9yX3BucF9zdG9wX3Rhc2tzW107CitleHRlcm4gY29uc3QgcGVt X2V2ZW50X2FjdGlvbiBzZXRfcG93ZXJfc291cmNlX3Rhc2tzW107CitleHRlcm4gY29uc3QgcGVt X2V2ZW50X2FjdGlvbiBzZXRfcG93ZXJfc2F2aW5nX3N0YXRlX3Rhc2tzW107CitleHRlcm4gY29u c3QgcGVtX2V2ZW50X2FjdGlvbiBlbmFibGVfZGlzYWJsZV9mcHNfdGFza3NbXTsKK2V4dGVybiBj b25zdCBwZW1fZXZlbnRfYWN0aW9uIHNldF9uYm1jdV9zdGF0ZV90YXNrc1tdOworZXh0ZXJuIGNv bnN0IHBlbV9ldmVudF9hY3Rpb24gcmVzZXRfaGFyZHdhcmVfZGNfbm90aWZpY2F0aW9uX3Rhc2tz W107CitleHRlcm4gY29uc3QgcGVtX2V2ZW50X2FjdGlvbiBub3RpZnlfc211X3N1c3BlbmRfdGFz a3NbXTsKK2V4dGVybiBjb25zdCBwZW1fZXZlbnRfYWN0aW9uIGRpc2FibGVfc21jX2Zpcm13YXJl X2N0Zl90YXNrc1tdOworZXh0ZXJuIGNvbnN0IHBlbV9ldmVudF9hY3Rpb24gZGlzYWJsZV9mcHNf dGFza3NbXTsKK2V4dGVybiBjb25zdCBwZW1fZXZlbnRfYWN0aW9uIHZhcmlfYnJpZ2h0X3N1c3Bl bmRfdGFza3NbXTsKK2V4dGVybiBjb25zdCBwZW1fZXZlbnRfYWN0aW9uIHJlc2V0X2Zhbl9zcGVl ZF90b19kZWZhdWx0X3Rhc2tzW107CitleHRlcm4gY29uc3QgcGVtX2V2ZW50X2FjdGlvbiBwb3dl cl9kb3duX2FzaWNfdGFza3NbXTsKK2V4dGVybiBjb25zdCBwZW1fZXZlbnRfYWN0aW9uIGRpc2Fi bGVfc3R1dHRlcl9tb2RlX3Rhc2tzW107CitleHRlcm4gY29uc3QgcGVtX2V2ZW50X2FjdGlvbiBz ZXRfY29ubmVjdGVkX3N0YW5kYnlfdGFza3NbXTsKK2V4dGVybiBjb25zdCBwZW1fZXZlbnRfYWN0 aW9uIGJsb2NrX2h3X2FjY2Vzc190YXNrc1tdOworZXh0ZXJuIGNvbnN0IHBlbV9ldmVudF9hY3Rp b24gdW5ibG9ja19od19hY2Nlc3NfdGFza3NbXTsKK2V4dGVybiBjb25zdCBwZW1fZXZlbnRfYWN0 aW9uIHJlc3VtZV9jb25uZWN0ZWRfc3RhbmRieV90YXNrc1tdOworZXh0ZXJuIGNvbnN0IHBlbV9l dmVudF9hY3Rpb24gbm90aWZ5X3NtdV9yZXN1bWVfdGFza3NbXTsKK2V4dGVybiBjb25zdCBwZW1f ZXZlbnRfYWN0aW9uIHJlc2V0X2Rpc3BsYXlfY29uZmlnQ291bnRlcl90YXNrc1tdOworZXh0ZXJu IGNvbnN0IHBlbV9ldmVudF9hY3Rpb24gdXBkYXRlX2RhbF9jb25maWd1cmF0aW9uX3Rhc2tzW107 CitleHRlcm4gY29uc3QgcGVtX2V2ZW50X2FjdGlvbiB2YXJpX2JyaWdodF9yZXN1bWVfdGFza3Nb XTsKK2V4dGVybiBjb25zdCBwZW1fZXZlbnRfYWN0aW9uIG5vdGlmeV9od19wb3dlcl9zb3VyY2Vf dGFza3NbXTsKK2V4dGVybiBjb25zdCBwZW1fZXZlbnRfYWN0aW9uIHByb2Nlc3NfdmJpb3NfZXZl bnRfaW5mb190YXNrc1tdOworZXh0ZXJuIGNvbnN0IHBlbV9ldmVudF9hY3Rpb24gZW5hYmxlX2dm eF9jbG9ja19nYXRpbmdfdGFza3NbXTsKK2V4dGVybiBjb25zdCBwZW1fZXZlbnRfYWN0aW9uIGVu YWJsZV9nZnhfdm9sdGFnZV9pc2xhbmRfcG93ZXJfZ2F0aW5nX3Rhc2tzW107CitleHRlcm4gY29u c3QgcGVtX2V2ZW50X2FjdGlvbiByZXNldF9jbG9ja19nYXRpbmdfdGFza3NbXTsKK2V4dGVybiBj b25zdCBwZW1fZXZlbnRfYWN0aW9uIG5vdGlmeV9zbXVfdnB1X3JlY292ZXJ5X2VuZF90YXNrc1td OworZXh0ZXJuIGNvbnN0IHBlbV9ldmVudF9hY3Rpb24gZGlzYWJsZV92cHVfY2FwX3Rhc2tzW107 CitleHRlcm4gY29uc3QgcGVtX2V2ZW50X2FjdGlvbiBleGVjdXRlX2VzY2FwZV9zZXF1ZW5jZV90 YXNrc1tdOworZXh0ZXJuIGNvbnN0IHBlbV9ldmVudF9hY3Rpb24gbm90aWZ5X3Bvd2VyX3N0YXRl X2NoYW5nZV90YXNrc1tdOworZXh0ZXJuIGNvbnN0IHBlbV9ldmVudF9hY3Rpb24gZW5hYmxlX2Nn cGdfdGFza3NbXTsKK2V4dGVybiBjb25zdCBwZW1fZXZlbnRfYWN0aW9uIGRpc2FibGVfY2dwZ190 YXNrc1tdOworZXh0ZXJuIGNvbnN0IHBlbV9ldmVudF9hY3Rpb24gZW5hYmxlX3VzZXJfMmRfcGVy Zm9ybWFuY2VfdGFza3NbXTsKK2V4dGVybiBjb25zdCBwZW1fZXZlbnRfYWN0aW9uIGFkZF91c2Vy XzJkX3BlcmZvcm1hbmNlX3N0YXRlX3Rhc2tzW107CitleHRlcm4gY29uc3QgcGVtX2V2ZW50X2Fj dGlvbiBkZWxldGVfdXNlcl8yZF9wZXJmb3JtYW5jZV9zdGF0ZV90YXNrc1tdOworZXh0ZXJuIGNv bnN0IHBlbV9ldmVudF9hY3Rpb24gZGlzYWJsZV91c2VyXzJkX3BlcmZvcm1hbmNlX3Rhc2tzW107 CitleHRlcm4gY29uc3QgcGVtX2V2ZW50X2FjdGlvbiBlbmFibGVfc3R1dHRlcl9tb2RlX3Rhc2tz W107CitleHRlcm4gY29uc3QgcGVtX2V2ZW50X2FjdGlvbiBlbmFibGVfZGlzYWJsZV9iYXBtX3Rh c2tzW107CitleHRlcm4gY29uc3QgcGVtX2V2ZW50X2FjdGlvbiByZXNldF9ib290X3N0YXRlX3Rh c2tzW107CitleHRlcm4gY29uc3QgcGVtX2V2ZW50X2FjdGlvbiBjcmVhdGVfbmV3X3VzZXJfcGVy Zm9ybWFuY2Vfc3RhdGVfdGFza3NbXTsKKworI2VuZGlmIC8qIF9FVkVOVF9TVUJfQ0hBSU5TX0hf ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9ldmVudG1nci9l dmVudHRhc2tzLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9ldmVudG1nci9ldmVu dHRhc2tzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTVkNTQ5MAotLS0g L2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2V2ZW50bWdyL2V2 ZW50dGFza3MuYwpAQCAtMCwwICsxLDQwOCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE1IEFkdmFu Y2VkIE1pY3JvIERldmljZXMsIEluYy4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBv ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAi U29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp b24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBj b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICog YW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z IHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg dG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQg bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisg KiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAq CisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP RiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQg U0hBTEwKKyAqIFRIRSBDT1BZUklHSFQgSE9MREVSKFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUg Rk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgorICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElO IEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCisgKiBBUklTSU5HIEZS T00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0Ug T1IKKyAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8KKworI2luY2x1 ZGUgImV2ZW50bWdyLmgiCisjaW5jbHVkZSAiZXZlbnRpbml0LmgiCisjaW5jbHVkZSAiZXZlbnRt YW5hZ2VtZW50LmgiCisjaW5jbHVkZSAiZXZlbnRtYW5hZ2VyLmgiCisjaW5jbHVkZSAiaGFyZHdh cmVtYW5hZ2VyLmgiCisjaW5jbHVkZSAiZXZlbnR0YXNrcy5oIgorI2luY2x1ZGUgInBvd2VyX3N0 YXRlLmgiCisjaW5jbHVkZSAiaHdtZ3IuaCIKKyNpbmNsdWRlICJhbWRfcG93ZXJwbGF5LmgiCisj aW5jbHVkZSAicHNtLmgiCisKK2ludCBwZW1fdGFza191cGRhdGVfYWxsb3dlZF9wZXJmb3JtYW5j ZV9sZXZlbHMoc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1nciwgc3RydWN0IHBlbV9ldmVudF9k YXRhICpldmVudF9kYXRhKQoreworCisJaWYgKHBlbV9pc19od19hY2Nlc3NfYmxvY2tlZChldmVu dG1ncikpCisJCXJldHVybiAwOworCisJcGhtX2ZvcmNlX2RwbV9sZXZlbHMoZXZlbnRtZ3ItPmh3 bWdyLCBBTURfRFBNX0ZPUkNFRF9MRVZFTF9BVVRPKTsKKworCXJldHVybiAwOworfQorCisvKiBl dmVudHRhc2tzX2dlbmVyaWMuYyAqLworaW50IHBlbV90YXNrX2FkanVzdF9wb3dlcl9zdGF0ZShz dHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdyLCBzdHJ1Y3QgcGVtX2V2ZW50X2RhdGEgKmV2ZW50 X2RhdGEpCit7CisJc3RydWN0IHBwX2h3bWdyICpod21ncjsKKworCWlmIChwZW1faXNfaHdfYWNj ZXNzX2Jsb2NrZWQoZXZlbnRtZ3IpKQorCQlyZXR1cm4gMDsKKworCWh3bWdyID0gZXZlbnRtZ3It Pmh3bWdyOworCWlmIChldmVudF9kYXRhLT5wbmV3X3Bvd2VyX3N0YXRlICE9IE5VTEwpCisJCWh3 bWdyLT5yZXF1ZXN0X3BzID0gZXZlbnRfZGF0YS0+cG5ld19wb3dlcl9zdGF0ZTsKKworCWlmIChw aG1fY2FwX2VuYWJsZWQoZXZlbnRtZ3ItPnBsYXRmb3JtX2Rlc2NyaXB0b3ItPnBsYXRmb3JtQ2Fw cywgUEhNX1BsYXRmb3JtQ2Fwc19EeW5hbWljUGF0Y2hQb3dlclN0YXRlKSkKKwkJcHNtX2FkanVz dF9wb3dlcl9zdGF0ZV9keW5hbWljKGV2ZW50bWdyLCBldmVudF9kYXRhLT5za2lwX3N0YXRlX2Fk anVzdF9ydWxlcyk7CisJZWxzZQorCQlwc21fYWRqdXN0X3Bvd2VyX3N0YXRlX3N0YXRpYyhldmVu dG1nciwgZXZlbnRfZGF0YS0+c2tpcF9zdGF0ZV9hZGp1c3RfcnVsZXMpOworCisJcmV0dXJuIDA7 Cit9CisKK2ludCBwZW1fdGFza19wb3dlcl9kb3duX2FzaWMoc3RydWN0IHBwX2V2ZW50bWdyICpl dmVudG1nciwgc3RydWN0IHBlbV9ldmVudF9kYXRhICpldmVudF9kYXRhKQoreworCS8qIFRPRE8g Ki8KKwlyZXR1cm4gMDsKK30KKworaW50IHBlbV90YXNrX3NldF9ib290X3N0YXRlKHN0cnVjdCBw cF9ldmVudG1nciAqZXZlbnRtZ3IsIHN0cnVjdCBwZW1fZXZlbnRfZGF0YSAqZXZlbnRfZGF0YSkK K3sKKwkvKiBUT0RPICovCisJcmV0dXJuIDA7Cit9CisKK2ludCBwZW1fdGFza19yZXNldF9ib290 X3N0YXRlKHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IsIHN0cnVjdCBwZW1fZXZlbnRfZGF0 YSAqZXZlbnRfZGF0YSkKK3sKKwkvKiBUT0RPICovCisJcmV0dXJuIDA7Cit9CisKK2ludCBwZW1f dGFza191cGRhdGVfbmV3X3Bvd2VyX3N0YXRlX2Nsb2NrcyhzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2 ZW50bWdyLCBzdHJ1Y3QgcGVtX2V2ZW50X2RhdGEgKmV2ZW50X2RhdGEpCit7CisJLyogVE9ETyAq LworCXJldHVybiAwOworfQorCitpbnQgcGVtX3Rhc2tfc3lzdGVtX3NodXRkb3duKHN0cnVjdCBw cF9ldmVudG1nciAqZXZlbnRtZ3IsIHN0cnVjdCBwZW1fZXZlbnRfZGF0YSAqZXZlbnRfZGF0YSkK K3sKKwkvKiBUT0RPICovCisJcmV0dXJuIDA7Cit9CisKK2ludCBwZW1fdGFza19yZWdpc3Rlcl9p bnRlcnJ1cHRzKHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IsIHN0cnVjdCBwZW1fZXZlbnRf ZGF0YSAqZXZlbnRfZGF0YSkKK3sKKwkvKiBUT0RPICovCisJcmV0dXJuIDA7Cit9CisKK2ludCBw ZW1fdGFza191bnJlZ2lzdGVyX2ludGVycnVwdHMoc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1n ciwgc3RydWN0IHBlbV9ldmVudF9kYXRhICpldmVudF9kYXRhKQoreworCXJldHVybiBwZW1fdW5y ZWdpc3Rlcl9pbnRlcnJ1cHRzKGV2ZW50bWdyKTsKK30KKworCisKK2ludCBwZW1fdGFza19nZXRf Ym9vdF9zdGF0ZV9pZChzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdyLCBzdHJ1Y3QgcGVtX2V2 ZW50X2RhdGEgKmV2ZW50X2RhdGEpCit7CisJaW50IHJlc3VsdDsKKworCXJlc3VsdCA9IHBzbV9n ZXRfc3RhdGVfYnlfY2xhc3NpZmljYXRpb24oZXZlbnRtZ3IsCisJCVBQX1N0YXRlQ2xhc3NpZmlj YXRpb25GbGFnX0Jvb3QsCisJCSYoZXZlbnRfZGF0YS0+cmVxdWVzdGVkX3N0YXRlX2lkKQorCSk7 CisKKwlpZiAoMCA9PSByZXN1bHQpCisJCXBlbV9zZXRfZXZlbnRfZGF0YV92YWxpZChldmVudF9k YXRhLT52YWxpZF9maWVsZHMsIFBFTV9FdmVudERhdGFWYWxpZF9SZXF1ZXN0ZWRTdGF0ZUlEKTsK KwllbHNlCisJCXBlbV91bnNldF9ldmVudF9kYXRhX3ZhbGlkKGV2ZW50X2RhdGEtPnZhbGlkX2Zp ZWxkcywgUEVNX0V2ZW50RGF0YVZhbGlkX1JlcXVlc3RlZFN0YXRlSUQpOworCisJcmV0dXJuIHJl c3VsdDsKK30KKworaW50IHBlbV90YXNrX2VuYWJsZV9keW5hbWljX3N0YXRlX21hbmFnZW1lbnQo c3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1nciwgc3RydWN0IHBlbV9ldmVudF9kYXRhICpldmVu dF9kYXRhKQoreworCXJldHVybiBwaG1fZW5hYmxlX2R5bmFtaWNfc3RhdGVfbWFuYWdlbWVudChl dmVudG1nci0+aHdtZ3IpOworfQorCitpbnQgcGVtX3Rhc2tfZGlzYWJsZV9keW5hbWljX3N0YXRl X21hbmFnZW1lbnQoc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1nciwgc3RydWN0IHBlbV9ldmVu dF9kYXRhICpldmVudF9kYXRhKQoreworCS8qIFRPRE8gKi8KKwlyZXR1cm4gMDsKK30KKworaW50 IHBlbV90YXNrX2VuYWJsZV9jbG9ja19wb3dlcl9nYXRpbmdzX3Rhc2tzKHN0cnVjdCBwcF9ldmVu dG1nciAqZXZlbnRtZ3IsIHN0cnVjdCBwZW1fZXZlbnRfZGF0YSAqZXZlbnRfZGF0YSkKK3sKKwly ZXR1cm4gcGhtX2VuYWJsZV9jbG9ja19wb3dlcl9nYXRpbmdzKGV2ZW50bWdyLT5od21ncik7Cit9 CisKK2ludCBwZW1fdGFza19wb3dlcmRvd25fdXZkX3Rhc2tzKHN0cnVjdCBwcF9ldmVudG1nciAq ZXZlbnRtZ3IsIHN0cnVjdCBwZW1fZXZlbnRfZGF0YSAqZXZlbnRfZGF0YSkKK3sKKwlyZXR1cm4g cGhtX3Bvd2VyZG93bl91dmQoZXZlbnRtZ3ItPmh3bWdyKTsKK30KKworaW50IHBlbV90YXNrX3Bv d2VyZG93bl92Y2VfdGFza3Moc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1nciwgc3RydWN0IHBl bV9ldmVudF9kYXRhICpldmVudF9kYXRhKQoreworCXBobV9wb3dlcmdhdGVfdXZkKGV2ZW50bWdy LT5od21nciwgdHJ1ZSk7CisJcGhtX3Bvd2VyZ2F0ZV92Y2UoZXZlbnRtZ3ItPmh3bWdyLCB0cnVl KTsKKwlyZXR1cm4gMDsKK30KKworaW50IHBlbV90YXNrX2Rpc2FibGVfY2xvY2tfcG93ZXJfZ2F0 aW5nc190YXNrcyhzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdyLCBzdHJ1Y3QgcGVtX2V2ZW50 X2RhdGEgKmV2ZW50X2RhdGEpCit7CisJLyogVE9ETyAqLworCXJldHVybiAwOworfQorCitpbnQg cGVtX3Rhc2tfc3RhcnRfYXNpY19ibG9ja191c2FnZShzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50 bWdyLCBzdHJ1Y3QgcGVtX2V2ZW50X2RhdGEgKmV2ZW50X2RhdGEpCit7CisJLyogVE9ETyAqLwor CXJldHVybiAwOworfQorCitpbnQgcGVtX3Rhc2tfc3RvcF9hc2ljX2Jsb2NrX3VzYWdlKHN0cnVj dCBwcF9ldmVudG1nciAqZXZlbnRtZ3IsIHN0cnVjdCBwZW1fZXZlbnRfZGF0YSAqZXZlbnRfZGF0 YSkKK3sKKwkvKiBUT0RPICovCisJcmV0dXJuIDA7Cit9CisKK2ludCBwZW1fdGFza19zZXR1cF9h c2ljKHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IsIHN0cnVjdCBwZW1fZXZlbnRfZGF0YSAq ZXZlbnRfZGF0YSkKK3sKKwlyZXR1cm4gcGhtX3NldHVwX2FzaWMoZXZlbnRtZ3ItPmh3bWdyKTsK K30KKworaW50IHBlbV90YXNrX2NsZWFudXBfYXNpYyhzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50 bWdyLCBzdHJ1Y3QgcGVtX2V2ZW50X2RhdGEgKmV2ZW50X2RhdGEpCit7CisJLyogVE9ETyAqLwor CXJldHVybiAwOworfQorCitpbnQgcGVtX3Rhc2tfc3RvcmVfZGFsX2NvbmZpZ3VyYXRpb24oc3Ry dWN0IHBwX2V2ZW50bWdyICpldmVudG1nciwgY29uc3Qgc3RydWN0IGFtZF9kaXNwbGF5X2NvbmZp Z3VyYXRpb24gKmRpc3BsYXlfY29uZmlnKQoreworCS8qIFRPRE8gKi8KKwlyZXR1cm4gMDsKKwkv KnBobV9zdG9yZV9kYWxfY29uZmlndXJhdGlvbl9kYXRhKGV2ZW50bWdyLT5od21nciwgZGlzcGxh eV9jb25maWcpICovCit9CisKK2ludCBwZW1fdGFza19ub3RpZnlfaHdfbWdyX2Rpc3BsYXlfY29u ZmlndXJhdGlvbl9jaGFuZ2Uoc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1nciwgc3RydWN0IHBl bV9ldmVudF9kYXRhICpldmVudF9kYXRhKQoreworCS8qIFRPRE8gKi8KKwlyZXR1cm4gMDsKK30K KworaW50IHBlbV90YXNrX25vdGlmeV9od19tZ3JfcHJlX2Rpc3BsYXlfY29uZmlndXJhdGlvbl9j aGFuZ2Uoc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1nciwgc3RydWN0IHBlbV9ldmVudF9kYXRh ICpldmVudF9kYXRhKQoreworCS8qIFRPRE8gKi8KKwlyZXR1cm4gMDsKK30KKworaW50IHBlbV90 YXNrX2Jsb2NrX2FkanVzdF9wb3dlcl9zdGF0ZShzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdy LCBzdHJ1Y3QgcGVtX2V2ZW50X2RhdGEgKmV2ZW50X2RhdGEpCit7CisJZXZlbnRtZ3ItPmJsb2Nr X2FkanVzdF9wb3dlcl9zdGF0ZSA9IHRydWU7CisJLyogdG8gZG8gUEhNX1Jlc2V0SVBTQ291bnRl cihwRXZlbnRNZ3ItPnBId01ncik7Ki8KKwlyZXR1cm4gMDsKK30KKworaW50IHBlbV90YXNrX3Vu YmxvY2tfYWRqdXN0X3Bvd2VyX3N0YXRlKHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IsIHN0 cnVjdCBwZW1fZXZlbnRfZGF0YSAqZXZlbnRfZGF0YSkKK3sKKwlldmVudG1nci0+YmxvY2tfYWRq dXN0X3Bvd2VyX3N0YXRlID0gZmFsc2U7CisJcmV0dXJuIDA7Cit9CisKK2ludCBwZW1fdGFza19u b3RpZnlfcG93ZXJfc3RhdGVfY2hhbmdlKHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IsIHN0 cnVjdCBwZW1fZXZlbnRfZGF0YSAqZXZlbnRfZGF0YSkKK3sKKwkvKiBUT0RPICovCisJcmV0dXJu IDA7Cit9CisKK2ludCBwZW1fdGFza19ibG9ja19od19hY2Nlc3Moc3RydWN0IHBwX2V2ZW50bWdy ICpldmVudG1nciwgc3RydWN0IHBlbV9ldmVudF9kYXRhICpldmVudF9kYXRhKQoreworCS8qIFRP RE8gKi8KKwlyZXR1cm4gMDsKK30KKworaW50IHBlbV90YXNrX3VuX2Jsb2NrX2h3X2FjY2Vzcyhz dHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdyLCBzdHJ1Y3QgcGVtX2V2ZW50X2RhdGEgKmV2ZW50 X2RhdGEpCit7CisJLyogVE9ETyAqLworCXJldHVybiAwOworfQorCitpbnQgcGVtX3Rhc2tfcmVz ZXRfZGlzcGxheV9waHlzX2FjY2VzcyhzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdyLCBzdHJ1 Y3QgcGVtX2V2ZW50X2RhdGEgKmV2ZW50X2RhdGEpCit7CisJLyogVE9ETyAqLworCXJldHVybiAw OworfQorCitpbnQgcGVtX3Rhc2tfc2V0X2NwdV9wb3dlcl9zdGF0ZShzdHJ1Y3QgcHBfZXZlbnRt Z3IgKmV2ZW50bWdyLCBzdHJ1Y3QgcGVtX2V2ZW50X2RhdGEgKmV2ZW50X2RhdGEpCit7CisJLyog VE9ETyAqLworCXJldHVybiAwOworfQorCisvKnBvd2Vyc2F2aW5nKi8KKworaW50IHBlbV90YXNr X3NldF9wb3dlcl9zb3VyY2Uoc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1nciwgc3RydWN0IHBl bV9ldmVudF9kYXRhICpldmVudF9kYXRhKQoreworCS8qIFRPRE8gKi8KKwlyZXR1cm4gMDsKK30K KworaW50IHBlbV90YXNrX25vdGlmeV9od19vZl9wb3dlcl9zb3VyY2Uoc3RydWN0IHBwX2V2ZW50 bWdyICpldmVudG1nciwgc3RydWN0IHBlbV9ldmVudF9kYXRhICpldmVudF9kYXRhKQoreworCS8q IFRPRE8gKi8KKwlyZXR1cm4gMDsKK30KKworaW50IHBlbV90YXNrX2dldF9wb3dlcl9zYXZpbmdf c3RhdGUoc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1nciwgc3RydWN0IHBlbV9ldmVudF9kYXRh ICpldmVudF9kYXRhKQoreworCS8qIFRPRE8gKi8KKwlyZXR1cm4gMDsKK30KKworaW50IHBlbV90 YXNrX3Jlc2V0X3Bvd2VyX3NhdmluZ19zdGF0ZShzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdy LCBzdHJ1Y3QgcGVtX2V2ZW50X2RhdGEgKmV2ZW50X2RhdGEpCit7CisJLyogVE9ETyAqLworCXJl dHVybiAwOworfQorCitpbnQgcGVtX3Rhc2tfc2V0X3Bvd2VyX3NhdmluZ19zdGF0ZShzdHJ1Y3Qg cHBfZXZlbnRtZ3IgKmV2ZW50bWdyLCBzdHJ1Y3QgcGVtX2V2ZW50X2RhdGEgKmV2ZW50X2RhdGEp Cit7CisJLyogVE9ETyAqLworCXJldHVybiAwOworfQorCitpbnQgcGVtX3Rhc2tfc2V0X3NjcmVl bl9zdGF0ZV9vbihzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdyLCBzdHJ1Y3QgcGVtX2V2ZW50 X2RhdGEgKmV2ZW50X2RhdGEpCit7CisJLyogVE9ETyAqLworCXJldHVybiAwOworfQorCitpbnQg cGVtX3Rhc2tfc2V0X3NjcmVlbl9zdGF0ZV9vZmYoc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1n ciwgc3RydWN0IHBlbV9ldmVudF9kYXRhICpldmVudF9kYXRhKQoreworCS8qIFRPRE8gKi8KKwly ZXR1cm4gMDsKK30KKworaW50IHBlbV90YXNrX2VuYWJsZV92b2x0YWdlX2lzbGFuZF9wb3dlcl9n YXRpbmcoc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1nciwgc3RydWN0IHBlbV9ldmVudF9kYXRh ICpldmVudF9kYXRhKQoreworCS8qIFRPRE8gKi8KKwlyZXR1cm4gMDsKK30KKworaW50IHBlbV90 YXNrX2Rpc2FibGVfdm9sdGFnZV9pc2xhbmRfcG93ZXJfZ2F0aW5nKHN0cnVjdCBwcF9ldmVudG1n ciAqZXZlbnRtZ3IsIHN0cnVjdCBwZW1fZXZlbnRfZGF0YSAqZXZlbnRfZGF0YSkKK3sKKwkvKiBU T0RPICovCisJcmV0dXJuIDA7Cit9CisKK2ludCBwZW1fdGFza19lbmFibGVfY2dwZyhzdHJ1Y3Qg cHBfZXZlbnRtZ3IgKmV2ZW50bWdyLCBzdHJ1Y3QgcGVtX2V2ZW50X2RhdGEgKmV2ZW50X2RhdGEp Cit7CisJLyogVE9ETyAqLworCXJldHVybiAwOworfQorCitpbnQgcGVtX3Rhc2tfZGlzYWJsZV9j Z3BnKHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IsIHN0cnVjdCBwZW1fZXZlbnRfZGF0YSAq ZXZlbnRfZGF0YSkKK3sKKwkvKiBUT0RPICovCisJcmV0dXJuIDA7Cit9CisKK2ludCBwZW1fdGFz a19lbmFibGVfY2xvY2tfcG93ZXJfZ2F0aW5nKHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3Is IHN0cnVjdCBwZW1fZXZlbnRfZGF0YSAqZXZlbnRfZGF0YSkKK3sKKwkvKiBUT0RPICovCisJcmV0 dXJuIDA7Cit9CisKKworaW50IHBlbV90YXNrX2VuYWJsZV9nZnhfY2xvY2tfZ2F0aW5nKHN0cnVj dCBwcF9ldmVudG1nciAqZXZlbnRtZ3IsIHN0cnVjdCBwZW1fZXZlbnRfZGF0YSAqZXZlbnRfZGF0 YSkKK3sKKwkvKiBUT0RPICovCisJcmV0dXJuIDA7Cit9CisKK2ludCBwZW1fdGFza19kaXNhYmxl X2dmeF9jbG9ja19nYXRpbmcoc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1nciwgc3RydWN0IHBl bV9ldmVudF9kYXRhICpldmVudF9kYXRhKQoreworCS8qIFRPRE8gKi8KKwlyZXR1cm4gMDsKK30K KworCisvKiBwZXJmb3JtYW5jZSAqLworaW50IHBlbV90YXNrX3NldF9wZXJmb3JtYW5jZV9zdGF0 ZShzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdyLCBzdHJ1Y3QgcGVtX2V2ZW50X2RhdGEgKmV2 ZW50X2RhdGEpCit7CisJaWYgKHBlbV9pc19ldmVudF9kYXRhX3ZhbGlkKGV2ZW50X2RhdGEtPnZh bGlkX2ZpZWxkcywgUEVNX0V2ZW50RGF0YVZhbGlkX1JlcXVlc3RlZFN0YXRlSUQpKQorCQlyZXR1 cm4gcHNtX3NldF9wZXJmb3JtYW5jZV9zdGF0ZXMoZXZlbnRtZ3IsICYoZXZlbnRfZGF0YS0+cmVx dWVzdGVkX3N0YXRlX2lkKSk7CisKKwlyZXR1cm4gMDsKK30KKworaW50IHBlbV90YXNrX2NvbmRp dGlvbmFsbHlfZm9yY2VfM2RfcGVyZm9ybWFuY2Vfc3RhdGUoc3RydWN0IHBwX2V2ZW50bWdyICpl dmVudG1nciwgc3RydWN0IHBlbV9ldmVudF9kYXRhICpldmVudF9kYXRhKQoreworCS8qIFRPRE8g Ki8KKwlyZXR1cm4gMDsKK30KKworaW50IHBlbV90YXNrX2VuYWJsZV9zdHV0dGVyX21vZGUoc3Ry dWN0IHBwX2V2ZW50bWdyICpldmVudG1nciwgc3RydWN0IHBlbV9ldmVudF9kYXRhICpldmVudF9k YXRhKQoreworCS8qIFRPRE8gKi8KKwlyZXR1cm4gMDsKK30KKworaW50IHBlbV90YXNrX2dldF8y RF9wZXJmb3JtYW5jZV9zdGF0ZV9pZChzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdyLCBzdHJ1 Y3QgcGVtX2V2ZW50X2RhdGEgKmV2ZW50X2RhdGEpCit7CisJaW50IHJlc3VsdDsKKworCWlmIChl dmVudG1nci0+ZmVhdHVyZXNbUFBfRmVhdHVyZV9Qb3dlclBsYXldLnN1cHBvcnRlZCAmJgorCQkh KGV2ZW50bWdyLT5mZWF0dXJlc1tQUF9GZWF0dXJlX1Bvd2VyUGxheV0uZW5hYmxlZCkpCisJCQly ZXN1bHQgPSBwc21fZ2V0X3N0YXRlX2J5X2NsYXNzaWZpY2F0aW9uKGV2ZW50bWdyLAorCQkJCQlQ UF9TdGF0ZUNsYXNzaWZpY2F0aW9uRmxhZ19Cb290LAorCQkJCQkmKGV2ZW50X2RhdGEtPnJlcXVl c3RlZF9zdGF0ZV9pZCkpOworCWVsc2UgaWYgKGV2ZW50bWdyLT5mZWF0dXJlc1tQUF9GZWF0dXJl X1VzZXIyRFBlcmZvcm1hbmNlXS5lbmFibGVkKQorCQkJcmVzdWx0ID0gcHNtX2dldF9zdGF0ZV9i eV9jbGFzc2lmaWNhdGlvbihldmVudG1nciwKKwkJCQkgICBQUF9TdGF0ZUNsYXNzaWZpY2F0aW9u RmxhZ19Vc2VyMkRQZXJmb3JtYW5jZSwKKwkJCQkJJihldmVudF9kYXRhLT5yZXF1ZXN0ZWRfc3Rh dGVfaWQpKTsKKwllbHNlCisJCXJlc3VsdCA9IHBzbV9nZXRfdWlfc3RhdGUoZXZlbnRtZ3IsIFBQ X1N0YXRlVUlMYWJlbF9QZXJmb3JtYW5jZSwKKwkJCQkJJihldmVudF9kYXRhLT5yZXF1ZXN0ZWRf c3RhdGVfaWQpKTsKKworCWlmICgwID09IHJlc3VsdCkKKwkJcGVtX3NldF9ldmVudF9kYXRhX3Zh bGlkKGV2ZW50X2RhdGEtPnZhbGlkX2ZpZWxkcywgUEVNX0V2ZW50RGF0YVZhbGlkX1JlcXVlc3Rl ZFN0YXRlSUQpOworCWVsc2UKKwkJcGVtX3Vuc2V0X2V2ZW50X2RhdGFfdmFsaWQoZXZlbnRfZGF0 YS0+dmFsaWRfZmllbGRzLCBQRU1fRXZlbnREYXRhVmFsaWRfUmVxdWVzdGVkU3RhdGVJRCk7CisK KwlyZXR1cm4gcmVzdWx0OworfQorCitpbnQgcGVtX3Rhc2tfY3JlYXRlX3VzZXJfcGVyZm9ybWFu Y2Vfc3RhdGUoc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1nciwgc3RydWN0IHBlbV9ldmVudF9k YXRhICpldmVudF9kYXRhKQoreworCXN0cnVjdCBwcF9wb3dlcl9zdGF0ZSAqc3RhdGU7CisJaW50 IHRhYmxlX2VudHJpZXM7CisJc3RydWN0IHBwX2h3bWdyICpod21nciA9IGV2ZW50bWdyLT5od21n cjsKKwlpbnQgaTsKKworCXRhYmxlX2VudHJpZXMgPSBod21nci0+bnVtX3BzOworCXN0YXRlID0g aHdtZ3ItPnBzOworCityZXN0YXJ0X3NlYXJjaDoKKwlmb3IgKGkgPSAwOyBpIDwgdGFibGVfZW50 cmllczsgaSsrKSB7CisJCWlmIChzdGF0ZS0+Y2xhc3NpZmljYXRpb24udWlfbGFiZWwgJiBldmVu dF9kYXRhLT5yZXF1ZXN0ZWRfdWlfbGFiZWwpIHsKKwkJCWV2ZW50X2RhdGEtPnBuZXdfcG93ZXJf c3RhdGUgPSBzdGF0ZTsKKwkJCXJldHVybiAwOworCQl9CisJCXN0YXRlID0gKHN0cnVjdCBwcF9w b3dlcl9zdGF0ZSAqKSgodWludDY0X3Qpc3RhdGUgKyBod21nci0+cHNfc2l6ZSk7CisJfQorCisJ c3dpdGNoIChldmVudF9kYXRhLT5yZXF1ZXN0ZWRfdWlfbGFiZWwpIHsKKwljYXNlIFBQX1N0YXRl VUlMYWJlbF9CYXR0ZXJ5OgorCWNhc2UgUFBfU3RhdGVVSUxhYmVsX0JhbGFuY2VkOgorCQlldmVu dF9kYXRhLT5yZXF1ZXN0ZWRfdWlfbGFiZWwgPSBQUF9TdGF0ZVVJTGFiZWxfUGVyZm9ybWFuY2U7 CisJCWdvdG8gcmVzdGFydF9zZWFyY2g7CisJZGVmYXVsdDoKKwkJYnJlYWs7CisJfQorCXJldHVy biAtMTsKK30KKwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvZXZl bnRtZ3IvZXZlbnR0YXNrcy5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvZXZlbnRt Z3IvZXZlbnR0YXNrcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3ZDNj ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9ldmVu dG1nci9ldmVudHRhc2tzLmgKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE1 IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVi eSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICog Y29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg KHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8g dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl LAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBw ZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1 YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5 cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVk IGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2Fy ZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJS QU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBO T1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8g RVZFTlQgU0hBTEwKKyAqIFRIRSBDT1BZUklHSFQgSE9MREVSKFMpIE9SIEFVVEhPUihTKSBCRSBM SUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgorICogT1RIRVIgTElBQklMSVRZLCBXSEVU SEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCisgKiBBUklT SU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRI RSBVU0UgT1IKKyAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8KKwor I2lmbmRlZiBfRVZFTlRfVEFTS1NfSF8KKyNkZWZpbmUgX0VWRU5UX1RBU0tTX0hfCisjaW5jbHVk ZSAiZXZlbnRtZ3IuaCIKKworc3RydWN0IGFtZF9kaXNwbGF5X2NvbmZpZ3VyYXRpb247CisKKy8q IGV2ZW50dGFza3NfZ2VuZXJpYy5jICovCitpbnQgcGVtX3Rhc2tfYWRqdXN0X3Bvd2VyX3N0YXRl KHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IsIHN0cnVjdCBwZW1fZXZlbnRfZGF0YSAqZXZl bnRfZGF0YSk7CitpbnQgcGVtX3Rhc2tfcG93ZXJfZG93bl9hc2ljKHN0cnVjdCBwcF9ldmVudG1n ciAqZXZlbnRtZ3IsIHN0cnVjdCBwZW1fZXZlbnRfZGF0YSAqZXZlbnRfZGF0YSk7CitpbnQgcGVt X3Rhc2tfZ2V0X2Jvb3Rfc3RhdGVfaWQoc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1nciwgc3Ry dWN0IHBlbV9ldmVudF9kYXRhICpldmVudF9kYXRhKTsKK2ludCBwZW1fdGFza19zZXRfYm9vdF9z dGF0ZShzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdyLCBzdHJ1Y3QgcGVtX2V2ZW50X2RhdGEg KmV2ZW50X2RhdGEpOworaW50IHBlbV90YXNrX3Jlc2V0X2Jvb3Rfc3RhdGUoc3RydWN0IHBwX2V2 ZW50bWdyICpldmVudG1nciwgc3RydWN0IHBlbV9ldmVudF9kYXRhICpldmVudF9kYXRhKTsKK2lu dCBwZW1fdGFza191cGRhdGVfbmV3X3Bvd2VyX3N0YXRlX2Nsb2NrcyhzdHJ1Y3QgcHBfZXZlbnRt Z3IgKmV2ZW50bWdyLCBzdHJ1Y3QgcGVtX2V2ZW50X2RhdGEgKmV2ZW50X2RhdGEpOworaW50IHBl bV90YXNrX3N5c3RlbV9zaHV0ZG93bihzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdyLCBzdHJ1 Y3QgcGVtX2V2ZW50X2RhdGEgKmV2ZW50X2RhdGEpOworaW50IHBlbV90YXNrX3JlZ2lzdGVyX2lu dGVycnVwdHMoc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1nciwgc3RydWN0IHBlbV9ldmVudF9k YXRhICpldmVudF9kYXRhKTsKK2ludCBwZW1fdGFza191bnJlZ2lzdGVyX2ludGVycnVwdHMoc3Ry dWN0IHBwX2V2ZW50bWdyICpldmVudG1nciwgc3RydWN0IHBlbV9ldmVudF9kYXRhICpldmVudF9k YXRhKTsKK2ludCBwZW1fdGFza19lbmFibGVfZHluYW1pY19zdGF0ZV9tYW5hZ2VtZW50KHN0cnVj dCBwcF9ldmVudG1nciAqZXZlbnRtZ3IsIHN0cnVjdCBwZW1fZXZlbnRfZGF0YSAqZXZlbnRfZGF0 YSk7CitpbnQgcGVtX3Rhc2tfZGlzYWJsZV9keW5hbWljX3N0YXRlX21hbmFnZW1lbnQoc3RydWN0 IHBwX2V2ZW50bWdyICpldmVudG1nciwgc3RydWN0IHBlbV9ldmVudF9kYXRhICpldmVudF9kYXRh KTsKK2ludCBwZW1fdGFza19lbmFibGVfY2xvY2tfcG93ZXJfZ2F0aW5nc190YXNrcyhzdHJ1Y3Qg cHBfZXZlbnRtZ3IgKmV2ZW50bWdyLCBzdHJ1Y3QgcGVtX2V2ZW50X2RhdGEgKmV2ZW50X2RhdGEp OworaW50IHBlbV90YXNrX3Bvd2VyZG93bl91dmRfdGFza3Moc3RydWN0IHBwX2V2ZW50bWdyICpl dmVudG1nciwgc3RydWN0IHBlbV9ldmVudF9kYXRhICpldmVudF9kYXRhKTsKK2ludCBwZW1fdGFz a19wb3dlcmRvd25fdmNlX3Rhc2tzKHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IsIHN0cnVj dCBwZW1fZXZlbnRfZGF0YSAqZXZlbnRfZGF0YSk7CitpbnQgcGVtX3Rhc2tfZGlzYWJsZV9jbG9j a19wb3dlcl9nYXRpbmdzX3Rhc2tzKHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IsIHN0cnVj dCBwZW1fZXZlbnRfZGF0YSAqZXZlbnRfZGF0YSk7CitpbnQgcGVtX3Rhc2tfc3RhcnRfYXNpY19i bG9ja191c2FnZShzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdyLCBzdHJ1Y3QgcGVtX2V2ZW50 X2RhdGEgKmV2ZW50X2RhdGEpOworaW50IHBlbV90YXNrX3N0b3BfYXNpY19ibG9ja191c2FnZShz dHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdyLCBzdHJ1Y3QgcGVtX2V2ZW50X2RhdGEgKmV2ZW50 X2RhdGEpOworaW50IHBlbV90YXNrX3NldHVwX2FzaWMoc3RydWN0IHBwX2V2ZW50bWdyICpldmVu dG1nciwgc3RydWN0IHBlbV9ldmVudF9kYXRhICpldmVudF9kYXRhKTsKK2ludCBwZW1fdGFza19j bGVhbnVwX2FzaWMoc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1nciwgc3RydWN0IHBlbV9ldmVu dF9kYXRhICpldmVudF9kYXRhKTsKK2ludCBwZW1fdGFza19zdG9yZV9kYWxfY29uZmlndXJhdGlv biAoc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1nciwgY29uc3Qgc3RydWN0IGFtZF9kaXNwbGF5 X2NvbmZpZ3VyYXRpb24gKmRpc3BsYXlfY29uZmlnKTsKK2ludCBwZW1fdGFza19ub3RpZnlfaHdf bWdyX2Rpc3BsYXlfY29uZmlndXJhdGlvbl9jaGFuZ2Uoc3RydWN0IHBwX2V2ZW50bWdyICpldmVu dG1nciwgc3RydWN0IHBlbV9ldmVudF9kYXRhICpldmVudF9kYXRhKTsKK2ludCBwZW1fdGFza19u b3RpZnlfaHdfbWdyX3ByZV9kaXNwbGF5X2NvbmZpZ3VyYXRpb25fY2hhbmdlKHN0cnVjdCBwcF9l dmVudG1nciAqZXZlbnRtZ3IsIHN0cnVjdCBwZW1fZXZlbnRfZGF0YSAqZXZlbnRfZGF0YSk7Citp bnQgcGVtX3Rhc2tfYmxvY2tfYWRqdXN0X3Bvd2VyX3N0YXRlKHN0cnVjdCBwcF9ldmVudG1nciAq ZXZlbnRtZ3IsIHN0cnVjdCBwZW1fZXZlbnRfZGF0YSAqZXZlbnRfZGF0YSk7CitpbnQgcGVtX3Rh c2tfdW5ibG9ja19hZGp1c3RfcG93ZXJfc3RhdGUoc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1n ciwgc3RydWN0IHBlbV9ldmVudF9kYXRhICpldmVudF9kYXRhKTsKK2ludCBwZW1fdGFza19ub3Rp ZnlfcG93ZXJfc3RhdGVfY2hhbmdlKHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IsIHN0cnVj dCBwZW1fZXZlbnRfZGF0YSAqZXZlbnRfZGF0YSk7CitpbnQgcGVtX3Rhc2tfYmxvY2tfaHdfYWNj ZXNzKHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IsIHN0cnVjdCBwZW1fZXZlbnRfZGF0YSAq ZXZlbnRfZGF0YSk7CitpbnQgcGVtX3Rhc2tfdW5fYmxvY2tfaHdfYWNjZXNzKHN0cnVjdCBwcF9l dmVudG1nciAqZXZlbnRtZ3IsIHN0cnVjdCBwZW1fZXZlbnRfZGF0YSAqZXZlbnRfZGF0YSk7Citp bnQgcGVtX3Rhc2tfcmVzZXRfZGlzcGxheV9waHlzX2FjY2VzcyhzdHJ1Y3QgcHBfZXZlbnRtZ3Ig KmV2ZW50bWdyLCBzdHJ1Y3QgcGVtX2V2ZW50X2RhdGEgKmV2ZW50X2RhdGEpOworaW50IHBlbV90 YXNrX3NldF9jcHVfcG93ZXJfc3RhdGUoc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1nciwgc3Ry dWN0IHBlbV9ldmVudF9kYXRhICpldmVudF9kYXRhKTsKKworLypwb3dlcnNhdmluZyovCisKK2lu dCBwZW1fdGFza19zZXRfcG93ZXJfc291cmNlKHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3Is IHN0cnVjdCBwZW1fZXZlbnRfZGF0YSAqZXZlbnRfZGF0YSk7CitpbnQgcGVtX3Rhc2tfbm90aWZ5 X2h3X29mX3Bvd2VyX3NvdXJjZShzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdyLCBzdHJ1Y3Qg cGVtX2V2ZW50X2RhdGEgKmV2ZW50X2RhdGEpOworaW50IHBlbV90YXNrX2dldF9wb3dlcl9zYXZp bmdfc3RhdGUoc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1nciwgc3RydWN0IHBlbV9ldmVudF9k YXRhICpldmVudF9kYXRhKTsKK2ludCBwZW1fdGFza19yZXNldF9wb3dlcl9zYXZpbmdfc3RhdGUo c3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1nciwgc3RydWN0IHBlbV9ldmVudF9kYXRhICpldmVu dF9kYXRhKTsKK2ludCBwZW1fdGFza19zZXRfcG93ZXJfc2F2aW5nX3N0YXRlKHN0cnVjdCBwcF9l dmVudG1nciAqZXZlbnRtZ3IsIHN0cnVjdCBwZW1fZXZlbnRfZGF0YSAqZXZlbnRfZGF0YSk7Citp bnQgcGVtX3Rhc2tfc2V0X3NjcmVlbl9zdGF0ZV9vbihzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50 bWdyLCBzdHJ1Y3QgcGVtX2V2ZW50X2RhdGEgKmV2ZW50X2RhdGEpOworaW50IHBlbV90YXNrX3Nl dF9zY3JlZW5fc3RhdGVfb2ZmKHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IsIHN0cnVjdCBw ZW1fZXZlbnRfZGF0YSAqZXZlbnRfZGF0YSk7CitpbnQgcGVtX3Rhc2tfZW5hYmxlX3ZvbHRhZ2Vf aXNsYW5kX3Bvd2VyX2dhdGluZyhzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdyLCBzdHJ1Y3Qg cGVtX2V2ZW50X2RhdGEgKmV2ZW50X2RhdGEpOworaW50IHBlbV90YXNrX2Rpc2FibGVfdm9sdGFn ZV9pc2xhbmRfcG93ZXJfZ2F0aW5nKHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IsIHN0cnVj dCBwZW1fZXZlbnRfZGF0YSAqZXZlbnRfZGF0YSk7CitpbnQgcGVtX3Rhc2tfZW5hYmxlX2NncGco c3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1nciwgc3RydWN0IHBlbV9ldmVudF9kYXRhICpldmVu dF9kYXRhKTsKK2ludCBwZW1fdGFza19kaXNhYmxlX2NncGcoc3RydWN0IHBwX2V2ZW50bWdyICpl dmVudG1nciwgc3RydWN0IHBlbV9ldmVudF9kYXRhICpldmVudF9kYXRhKTsKK2ludCBwZW1fdGFz a19lbmFibGVfZ2Z4X2Nsb2NrX2dhdGluZyhzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdyLCBz dHJ1Y3QgcGVtX2V2ZW50X2RhdGEgKmV2ZW50X2RhdGEpOworaW50IHBlbV90YXNrX2Rpc2FibGVf Z2Z4X2Nsb2NrX2dhdGluZyhzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdyLCBzdHJ1Y3QgcGVt X2V2ZW50X2RhdGEgKmV2ZW50X2RhdGEpOworaW50IHBlbV90YXNrX2VuYWJsZV9zdHV0dGVyX21v ZGUoc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1nciwgc3RydWN0IHBlbV9ldmVudF9kYXRhICpl dmVudF9kYXRhKTsKKworLyogcGVyZm9ybWFuY2UgKi8KK2ludCBwZW1fdGFza19zZXRfcGVyZm9y bWFuY2Vfc3RhdGUoc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1nciwgc3RydWN0IHBlbV9ldmVu dF9kYXRhICpldmVudF9kYXRhKTsKK2ludCBwZW1fdGFza19jb25kaXRpb25hbGx5X2ZvcmNlXzNk X3BlcmZvcm1hbmNlX3N0YXRlKHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IsIHN0cnVjdCBw ZW1fZXZlbnRfZGF0YSAqZXZlbnRfZGF0YSk7CitpbnQgcGVtX3Rhc2tfZ2V0XzJEX3BlcmZvcm1h bmNlX3N0YXRlX2lkKHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IsIHN0cnVjdCBwZW1fZXZl bnRfZGF0YSAqZXZlbnRfZGF0YSk7CitpbnQgcGVtX3Rhc2tfY3JlYXRlX3VzZXJfcGVyZm9ybWFu Y2Vfc3RhdGUoc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1nciwgc3RydWN0IHBlbV9ldmVudF9k YXRhICpldmVudF9kYXRhKTsKK2ludCBwZW1fdGFza191cGRhdGVfYWxsb3dlZF9wZXJmb3JtYW5j ZV9sZXZlbHMoc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1nciwgc3RydWN0IHBlbV9ldmVudF9k YXRhICpldmVudF9kYXRhKTsKKworI2VuZGlmIC8qIF9FVkVOVF9UQVNLU19IXyAqLwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvZXZlbnRtZ3IvcHNtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9ldmVudG1nci9wc20uYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi43NDY5YzRjCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9wb3dlcnBsYXkvZXZlbnRtZ3IvcHNtLmMKQEAgLTAsMCArMSwxMTEgQEAKKy8q CisgKiBDb3B5cmlnaHQgMjAxNSBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCisgKgorICog UGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJz b24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBk b2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBT b2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9u CisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlz dHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdh cmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVy bmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAq CisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj ZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0 aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJ RUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hB TlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklO RlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihT KSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKKyAqIE9U SEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Ig T1RIRVJXSVNFLAorICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI IFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCisgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09G VFdBUkUuCisgKgorICovCisjaW5jbHVkZSAicHNtLmgiCisKK2ludCBwc21fZ2V0X3VpX3N0YXRl KHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IsIGVudW0gUFBfU3RhdGVVSUxhYmVsIHVpX2xh YmVsLCB1bnNpZ25lZCBsb25nICpzdGF0ZV9pZCkKK3sKKwlzdHJ1Y3QgcHBfcG93ZXJfc3RhdGUg KnN0YXRlOworCWludCB0YWJsZV9lbnRyaWVzOworCXN0cnVjdCBwcF9od21nciAqaHdtZ3IgPSBl dmVudG1nci0+aHdtZ3I7CisJaW50IGk7CisKKwl0YWJsZV9lbnRyaWVzID0gaHdtZ3ItPm51bV9w czsKKwlzdGF0ZSA9IGh3bWdyLT5wczsKKworCWZvciAoaSA9IDA7IGkgPCB0YWJsZV9lbnRyaWVz OyBpKyspIHsKKwkJaWYgKHN0YXRlLT5jbGFzc2lmaWNhdGlvbi51aV9sYWJlbCAmIHVpX2xhYmVs KSB7CisJCQkqc3RhdGVfaWQgPSBzdGF0ZS0+aWQ7CisJCQlyZXR1cm4gMDsKKwkJfQorCQlzdGF0 ZSA9IChzdHJ1Y3QgcHBfcG93ZXJfc3RhdGUgKikoKHVpbnQ2NF90KXN0YXRlICsgaHdtZ3ItPnBz X3NpemUpOworCX0KKwlyZXR1cm4gLTE7Cit9CisKK2ludCBwc21fZ2V0X3N0YXRlX2J5X2NsYXNz aWZpY2F0aW9uKHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IsIGVudW0gUFBfU3RhdGVDbGFz c2lmaWNhdGlvbkZsYWcgZmxhZywgdW5zaWduZWQgbG9uZyAqc3RhdGVfaWQpCit7CisJc3RydWN0 IHBwX3Bvd2VyX3N0YXRlICpzdGF0ZTsKKwlpbnQgdGFibGVfZW50cmllczsKKwlzdHJ1Y3QgcHBf aHdtZ3IgKmh3bWdyID0gZXZlbnRtZ3ItPmh3bWdyOworCWludCBpOworCisJdGFibGVfZW50cmll cyA9IGh3bWdyLT5udW1fcHM7CisJc3RhdGUgPSBod21nci0+cHM7CisKKwlmb3IgKGkgPSAwOyBp IDwgdGFibGVfZW50cmllczsgaSsrKSB7CisJCWlmIChzdGF0ZS0+Y2xhc3NpZmljYXRpb24uZmxh Z3MgJiBmbGFnKSB7CisJCQkqc3RhdGVfaWQgPSBzdGF0ZS0+aWQ7CisJCQlyZXR1cm4gMDsKKwkJ fQorCQlzdGF0ZSA9IChzdHJ1Y3QgcHBfcG93ZXJfc3RhdGUgKikoKHVpbnQ2NF90KXN0YXRlICsg aHdtZ3ItPnBzX3NpemUpOworCX0KKwlyZXR1cm4gLTE7Cit9CisKK2ludCBwc21fc2V0X3BlcmZv cm1hbmNlX3N0YXRlcyhzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdyLCB1bnNpZ25lZCBsb25n ICpzdGF0ZV9pZCkKK3sKKwlzdHJ1Y3QgcHBfcG93ZXJfc3RhdGUgKnN0YXRlOworCWludCB0YWJs ZV9lbnRyaWVzOworCXN0cnVjdCBwcF9od21nciAqaHdtZ3IgPSBldmVudG1nci0+aHdtZ3I7CisJ aW50IGk7CisKKwl0YWJsZV9lbnRyaWVzID0gaHdtZ3ItPm51bV9wczsKKwlzdGF0ZSA9IGh3bWdy LT5wczsKKworCWZvciAoaSA9IDA7IGkgPCB0YWJsZV9lbnRyaWVzOyBpKyspIHsKKwkJaWYgKHN0 YXRlLT5pZCA9PSAqc3RhdGVfaWQpIHsKKwkJCWh3bWdyLT5yZXF1ZXN0X3BzID0gc3RhdGU7CisJ CQlyZXR1cm4gMDsKKwkJfQorCQlzdGF0ZSA9IChzdHJ1Y3QgcHBfcG93ZXJfc3RhdGUgKikoKHVp bnQ2NF90KXN0YXRlICsgaHdtZ3ItPnBzX3NpemUpOworCX0KKwlyZXR1cm4gLTE7Cit9CisKKwor aW50IHBzbV9hZGp1c3RfcG93ZXJfc3RhdGVfZHluYW1pYyhzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2 ZW50bWdyLCBib29sIHNraXApCit7CisKKwljb25zdCBzdHJ1Y3QgcHBfcG93ZXJfc3RhdGUgICpw Y3VycmVudDsKKwlzdHJ1Y3QgcHBfcG93ZXJfc3RhdGUgICpyZXF1ZXN0ZWQ7CisJc3RydWN0IHBw X2h3bWdyICpod21ncjsKKworCWlmIChza2lwKQorCQlyZXR1cm4gMDsKKworCWh3bWdyID0gZXZl bnRtZ3ItPmh3bWdyOworCXBjdXJyZW50ID0gaHdtZ3ItPmN1cnJlbnRfcHM7CisJcmVxdWVzdGVk ID0gaHdtZ3ItPnJlcXVlc3RfcHM7CisKKwlpZiAocGN1cnJlbnQgIT0gTlVMTCB8fCByZXF1ZXN0 ZWQgIT0gTlVMTCkgeworCQlwaG1fYXBwbHlfc3RhdGVfYWRqdXN0X3J1bGVzKGh3bWdyLCByZXF1 ZXN0ZWQsIHBjdXJyZW50KTsKKwkJcGhtX3NldF9wb3dlcl9zdGF0ZShod21nciwgJnBjdXJyZW50 LT5oYXJkd2FyZSwgJnJlcXVlc3RlZC0+aGFyZHdhcmUpOworCQlod21nci0+Y3VycmVudF9wcyA9 IHJlcXVlc3RlZDsKKwl9CisJcmV0dXJuIDA7Cit9CisKK2ludCBwc21fYWRqdXN0X3Bvd2VyX3N0 YXRlX3N0YXRpYyhzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdyLCBib29sIHNraXApCit7CisJ cmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9l dmVudG1nci9wc20uaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2V2ZW50bWdyL3Bz bS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1YWJmYWMKLS0tIC9kZXYv bnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9ldmVudG1nci9wc20uaApA QCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IDIwMTUgQWR2YW5jZWQgTWljcm8gRGV2 aWNlcywgSW5jLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2Yg Y2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdh cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAor ICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5n IHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwg bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBj b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUK KyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo aXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMg b3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZU V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF WFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhF IENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN LCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9G IENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9S IElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgorICogT1RIRVIg REVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworI2luY2x1ZGUgImV2ZW50bWdyLmgi CisjaW5jbHVkZSAiZXZlbnRpbml0LmgiCisjaW5jbHVkZSAiZXZlbnRtYW5hZ2VtZW50LmgiCisj aW5jbHVkZSAiZXZlbnRtYW5hZ2VyLmgiCisjaW5jbHVkZSAicG93ZXJfc3RhdGUuaCIKKworaW50 IHBzbV9nZXRfdWlfc3RhdGUoc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1nciwgZW51bSBQUF9T dGF0ZVVJTGFiZWwgdWlfbGFiZWwsIHVuc2lnbmVkIGxvbmcgKnN0YXRlX2lkKTsKKworaW50IHBz bV9nZXRfc3RhdGVfYnlfY2xhc3NpZmljYXRpb24oc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1n ciwgZW51bSBQUF9TdGF0ZUNsYXNzaWZpY2F0aW9uRmxhZyBmbGFnLCB1bnNpZ25lZCBsb25nICpz dGF0ZV9pZCk7CisKK2ludCBwc21fc2V0X3BlcmZvcm1hbmNlX3N0YXRlcyhzdHJ1Y3QgcHBfZXZl bnRtZ3IgKmV2ZW50bWdyLCB1bnNpZ25lZCBsb25nICpzdGF0ZV9pZCk7CisKK2ludCBwc21fYWRq dXN0X3Bvd2VyX3N0YXRlX2R5bmFtaWMoc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1nciwgYm9v bCBza2lwKTsKKworaW50IHBzbV9hZGp1c3RfcG93ZXJfc3RhdGVfc3RhdGljKHN0cnVjdCBwcF9l dmVudG1nciAqZXZlbnRtZ3IsIGJvb2wgc2tpcCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL3Bvd2VycGxheS9pbmMvZXZlbnRtYW5hZ2VyLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1k L3Bvd2VycGxheS9pbmMvZXZlbnRtYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uYjlkODRkZQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv cG93ZXJwbGF5L2luYy9ldmVudG1hbmFnZXIuaApAQCAtMCwwICsxLDEwOSBAQAorLyoKKyAqIENv cHlyaWdodCAyMDE1IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4KKyAqCisgKiBQZXJtaXNz aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRh aW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50 YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJl IHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRo ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl LCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5k IHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQg dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRo ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxs IGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m IHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwg V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5D TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ VFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VN RU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBDT1BZUklHSFQgSE9MREVSKFMpIE9SIEFV VEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgorICogT1RIRVIgTElB QklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJ U0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNP RlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4K KyAqCisgKi8KKyNpZm5kZWYgX0VWRU5UX01BTkFHRVJfSF8KKyNkZWZpbmUgX0VWRU5UX01BTkFH RVJfSF8KKworI2luY2x1ZGUgInBvd2VyX3N0YXRlLmgiCisjaW5jbHVkZSAicHBfcG93ZXJfc291 cmNlLmgiCisjaW5jbHVkZSAiaGFyZHdhcmVtYW5hZ2VyLmgiCisjaW5jbHVkZSAicHBfYXNpY2Js b2Nrcy5oIgorCitzdHJ1Y3QgcHBfZXZlbnRtZ3I7CitlbnVtIGFtZF9wcF9ldmVudDsKKworZW51 bSBQRU1fRXZlbnREYXRhVmFsaWQgeworCVBFTV9FdmVudERhdGFWYWxpZF9SZXF1ZXN0ZWRTdGF0 ZUlEID0gMCwKKwlQRU1fRXZlbnREYXRhVmFsaWRfUmVxdWVzdGVkVUlMYWJlbCwKKwlQRU1fRXZl bnREYXRhVmFsaWRfTmV3UG93ZXJTdGF0ZSwKKwlQRU1fRXZlbnREYXRhVmFsaWRfUmVxdWVzdGVk UG93ZXJTb3VyY2UsCisJUEVNX0V2ZW50RGF0YVZhbGlkX1JlcXVlc3RlZENsb2NrcywKKwlQRU1f RXZlbnREYXRhVmFsaWRfQ3VycmVudFRlbXBlcmF0dXJlLAorCVBFTV9FdmVudERhdGFWYWxpZF9B c2ljQmxvY2tzLAorCVBFTV9FdmVudERhdGFWYWxpZF9PRFBhcmFtZXRlcnMsCisJUEVNX0V2ZW50 RGF0YVZhbGlkX1BYQWRhcHRlclByZWZzLAorCVBFTV9FdmVudERhdGFWYWxpZF9QWFVzZXJQcmVm cywKKwlQRU1fRXZlbnREYXRhVmFsaWRfUFhTd2l0Y2hSZWFzb24sCisJUEVNX0V2ZW50RGF0YVZh bGlkX1BYU3dpdGNoUGhhc2UsCisJUEVNX0V2ZW50RGF0YVZhbGlkX0hkVmlkZW8sCisJUEVNX0V2 ZW50RGF0YVZhbGlkX0JhY2tsaWdodExldmVsLAorCVBFTV9FdmVudERhdGF2YWxpZF9WYXJpQnJp Z2h0UGFyYW1zLAorCVBFTV9FdmVudERhdGFWYWxpZF9WYXJpQnJpZ2h0TGV2ZWwsCisJUEVNX0V2 ZW50RGF0YVZhbGlkX1ZhcmlCcmlnaHRJbW1lZGlhdGVDaGFuZ2UsCisJUEVNX0V2ZW50RGF0YVZh bGlkX1BlcmNlbnRXaGl0ZSwKKwlQRU1fRXZlbnREYXRhVmFsaWRfU2RWaWRlbywKKwlQRU1fRXZl bnREYXRhVmFsaWRfSFRMaW5rQ2hhbmdlUmVhc29uLAorCVBFTV9FdmVudERhdGFWYWxpZF9IV0Js b2NrcywKKwlQRU1fRXZlbnREYXRhVmFsaWRfUmVxdWVzdGVkVGhlcm1hbFN0YXRlLAorCVBFTV9F dmVudERhdGFWYWxpZF9NdmNWaWRlbywKKwlQRU1fRXZlbnREYXRhVmFsaWRfTWF4Cit9OworCit0 eXBlZGVmIGVudW0gUEVNX0V2ZW50RGF0YVZhbGlkIFBFTV9FdmVudERhdGFWYWxpZDsKKworLyog TnVtYmVyIG9mIGJpdHMgaW4gVUxPTkcgdmFyaWFibGUgKi8KKyNkZWZpbmUgUEVNX01BWF9OVU1f RVZFTlREQVRBVkFMSURfQklUU19QRVJfRklFTEQgKHNpemVvZih1bnNpZ25lZCBsb25nKSo4KQor CisvKiBOdW1iZXIgb2YgVUxPTkcgZW50cmllcyB1c2VkIGJ5IGV2ZW50IGRhdGEgdmFsaWQgYml0 cyAqLworI2RlZmluZSBQRU1fTUFYX05VTV9FVkVOVERBVEFWQUxJRF9VTE9OR19FTlRSSUVTICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCQkoKFBFTV9FdmVudERhdGFWYWxpZF9N YXggKyBQRU1fTUFYX05VTV9FVkVOVERBVEFWQUxJRF9CSVRTX1BFUl9GSUVMRCAtIDEpIC8gIFwK KwkJUEVNX01BWF9OVU1fRVZFTlREQVRBVkFMSURfQklUU19QRVJfRklFTEQpCisKK3N0YXRpYyBp bmxpbmUgdm9pZCBwZW1fc2V0X2V2ZW50X2RhdGFfdmFsaWQodW5zaWduZWQgbG9uZyAqZmllbGRz LCBQRU1fRXZlbnREYXRhVmFsaWQgdmFsaWRfZmllbGQpCit7CisJZmllbGRzW3ZhbGlkX2ZpZWxk IC8gUEVNX01BWF9OVU1fRVZFTlREQVRBVkFMSURfQklUU19QRVJfRklFTERdIHw9CisJCSgxVUwg PDwgKHZhbGlkX2ZpZWxkICUgUEVNX01BWF9OVU1fRVZFTlREQVRBVkFMSURfQklUU19QRVJfRklF TEQpKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHBlbV91bnNldF9ldmVudF9kYXRhX3ZhbGlk KHVuc2lnbmVkIGxvbmcgKmZpZWxkcywgUEVNX0V2ZW50RGF0YVZhbGlkIHZhbGlkX2ZpZWxkKQor eworCWZpZWxkc1t2YWxpZF9maWVsZCAvIFBFTV9NQVhfTlVNX0VWRU5UREFUQVZBTElEX0JJVFNf UEVSX0ZJRUxEXSAmPQorCQl+KDFVTCA8PCAodmFsaWRfZmllbGQgJSBQRU1fTUFYX05VTV9FVkVO VERBVEFWQUxJRF9CSVRTX1BFUl9GSUVMRCkpOworfQorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVk IGxvbmcgcGVtX2lzX2V2ZW50X2RhdGFfdmFsaWQoY29uc3QgdW5zaWduZWQgbG9uZyAqZmllbGRz LCBQRU1fRXZlbnREYXRhVmFsaWQgdmFsaWRfZmllbGQpCit7CisJcmV0dXJuIGZpZWxkc1t2YWxp ZF9maWVsZCAvIFBFTV9NQVhfTlVNX0VWRU5UREFUQVZBTElEX0JJVFNfUEVSX0ZJRUxEXSAmCisJ CSgxVUwgPDwgKHZhbGlkX2ZpZWxkICUgUEVNX01BWF9OVU1fRVZFTlREQVRBVkFMSURfQklUU19Q RVJfRklFTEQpKTsKK30KKworc3RydWN0IHBlbV9ldmVudF9kYXRhIHsKKwl1bnNpZ25lZCBsb25n CXZhbGlkX2ZpZWxkc1sxMDBdOworCXVuc2lnbmVkIGxvbmcgICByZXF1ZXN0ZWRfc3RhdGVfaWQ7 CisJZW51bSBQUF9TdGF0ZVVJTGFiZWwgcmVxdWVzdGVkX3VpX2xhYmVsOworCXN0cnVjdCBwcF9w b3dlcl9zdGF0ZSAgKnBuZXdfcG93ZXJfc3RhdGU7CisJZW51bSBwcF9wb3dlcl9zb3VyY2UgIHJl cXVlc3RlZF9wb3dlcl9zb3VyY2U7CisJc3RydWN0IFBQX0Nsb2NrcyAgICAgICByZXF1ZXN0ZWRf Y2xvY2tzOworCWJvb2wgICAgICAgICBza2lwX3N0YXRlX2FkanVzdF9ydWxlczsKKwlzdHJ1Y3Qg cGhtX2FzaWNfYmxvY2tzICBhc2ljX2Jsb2NrczsKKwkvKiB0byBkb1BQX1RoZXJtYWxTdGF0ZSBy ZXF1ZXN0ZWRUaGVybWFsU3RhdGU7CisJZW51bSBUaGVybWFsU3RhdGVSZXF1ZXN0U3JjIHJlcXVl c3RUaGVybWFsU3RhdGVTcmM7CisJUFBfVGVtcGVyYXR1cmUgIGN1cnJlbnRUZW1wZXJhdHVyZTsq LworCit9OworCitpbnQgcGVtX2hhbmRsZV9ldmVudChzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50 bWdyLCBlbnVtIGFtZF9wcF9ldmVudCBldmVudCwKKwkJICAgICBzdHJ1Y3QgcGVtX2V2ZW50X2Rh dGEgKmV2ZW50X2RhdGEpOworCitib29sIHBlbV9pc19od19hY2Nlc3NfYmxvY2tlZChzdHJ1Y3Qg cHBfZXZlbnRtZ3IgKmV2ZW50bWdyKTsKKworI2VuZGlmIC8qIF9FVkVOVF9NQU5BR0VSX0hfICov CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9pbmMvZXZlbnRtZ3Iu aCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2luYy9ldmVudG1nci5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNDM3ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9pbmMvZXZlbnRtZ3IuaApAQCAtMCwwICsxLDEy NSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE1IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4K KyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g YW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwg aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp bWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRo ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2Fy ZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp b25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np b24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50 aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJP VklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgor ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP RiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB TkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBDT1BZUklHSFQg SE9MREVSKFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBP UgorICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwg VE9SVCBPUiBPVEhFUldJU0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNU SU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVSIERFQUxJTkdTIElO IFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8KKworI2lmbmRlZiBfRVZFTlRNR1JfSF8KKyNkZWZpbmUg X0VWRU5UTUdSX0hfCisKKyNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgorI2luY2x1ZGUgInBwX2lu c3RhbmNlLmgiCisjaW5jbHVkZSAiaGFyZHdhcmVtYW5hZ2VyLmgiCisjaW5jbHVkZSAiZXZlbnRt YW5hZ2VyLmgiCisjaW5jbHVkZSAicHBfZmVhdHVyZS5oIgorI2luY2x1ZGUgInBwX3Bvd2VyX3Nv dXJjZS5oIgorI2luY2x1ZGUgInBvd2VyX3N0YXRlLmgiCisKK3R5cGVkZWYgaW50ICgqcGVtX2V2 ZW50X2FjdGlvbikoc3RydWN0IHBwX2V2ZW50bWdyICpldmVudG1nciwKKwkJCQlzdHJ1Y3QgcGVt X2V2ZW50X2RhdGEgKmV2ZW50X2RhdGEpOworCitzdHJ1Y3QgYWN0aW9uX2NoYWluIHsKKwljb25z dCBjaGFyICpkZXNjcmlwdGlvbjsgIC8qIGFjdGlvbiBjaGFpbiBkZXNjcmlwdGlvbiBmb3IgZGVi dWdnaW5nIHB1cnBvc2UgKi8KKwljb25zdCBwZW1fZXZlbnRfYWN0aW9uICoqYWN0aW9uX2NoYWlu OyAvKiBwb2ludGVyIHRvIGNoYWluIG9mIGV2ZW50IGFjdGlvbnMgKi8KK307CisKK3N0cnVjdCBw ZW1fcG93ZXJfc291cmNlX3VpX3N0YXRlX2luZm8geworCWVudW0gUFBfU3RhdGVVSUxhYmVsIGN1 cnJlbnRfdWlfbGFiZWw7CisJZW51bSBQUF9TdGF0ZVVJTGFiZWwgZGVmYXVsdF91aV9sYWJsZTsK Kwl1bnNpZ25lZCBsb25nICAgIGNvbmZpZ3VyYWJsZV91aV9tYXBwaW5nOworfTsKKworc3RydWN0 IHBwX2Nsb2NrX3JhbmdlIHsKKwl1aW50MzJfdCBtaW5fc2Nsa19raHo7CisJdWludDMyX3QgbWF4 X3NjbGtfa2h6OworCisJdWludDMyX3QgbWluX21jbGtfa2h6OworCXVpbnQzMl90IG1heF9tY2xr X2toejsKKworCXVpbnQzMl90IG1pbl92Y2xrX2toejsKKwl1aW50MzJfdCBtYXhfdmNsa19raHo7 CisKKwl1aW50MzJfdCBtaW5fZGNsa19raHo7CisJdWludDMyX3QgbWF4X2RjbGtfa2h6OworCisJ dWludDMyX3QgbWluX2FjbGtfa2h6OworCXVpbnQzMl90IG1heF9hY2xrX2toejsKKworCXVpbnQz Ml90IG1pbl9lY2xrX2toejsKKwl1aW50MzJfdCBtYXhfZWNsa19raHo7Cit9OworCitlbnVtIHBw X3N0YXRlIHsKKwlVTklOSVRJQUxJWkVELAorCUlOQUNUSVZFLAorCUFDVElWRQorfTsKKworZW51 bSBwcF9yaW5nX2luZGV4IHsKKwlQUF9SSU5HX1RZUEVfR0ZYX0lOREVYID0gMCwKKwlQUF9SSU5H X1RZUEVfRE1BX0lOREVYLAorCVBQX1JJTkdfVFlQRV9ETUExX0lOREVYLAorCVBQX1JJTkdfVFlQ RV9VVkRfSU5ERVgsCisJUFBfUklOR19UWVBFX1ZDRTBfSU5ERVgsCisJUFBfUklOR19UWVBFX1ZD RTFfSU5ERVgsCisJUFBfUklOR19UWVBFX0NQMV9JTkRFWCwKKwlQUF9SSU5HX1RZUEVfQ1AyX0lO REVYLAorCVBQX05VTV9SSU5HUywKK307CisKK3N0cnVjdCBwcF9yZXF1ZXN0IHsKKwl1aW50MzJf dCBmbGFnczsKKwl1aW50MzJfdCBzY2xrOworCXVpbnQzMl90IHNjbGtfdGhyb3R0bGU7CisJdWlu dDMyX3QgbWNsazsKKwl1aW50MzJfdCB2Y2xrOworCXVpbnQzMl90IGRjbGs7CisJdWludDMyX3Qg ZWNsazsKKwl1aW50MzJfdCBhY2xrOworCXVpbnQzMl90IGljbGs7CisJdWludDMyX3QgdnA4Y2xr OworCXVpbnQzMl90IHJzdlszMl07Cit9OworCitzdHJ1Y3QgcHBfZXZlbnRtZ3IgeworCXN0cnVj dCBwcF9od21ncgkqaHdtZ3I7CisJc3RydWN0IHBwX3NtdW1nciAqc211bWdyOworCisJc3RydWN0 IHBwX2ZlYXR1cmVfaW5mbyBmZWF0dXJlc1tQUF9GZWF0dXJlX01heF07CisJY29uc3Qgc3RydWN0 IGFjdGlvbl9jaGFpbiAqZXZlbnRfY2hhaW5bQU1EX1BQX0VWRU5UX01BWF07CisJc3RydWN0IHBo bV9wbGF0Zm9ybV9kZXNjcmlwdG9yICAgKnBsYXRmb3JtX2Rlc2NyaXB0b3I7CisJc3RydWN0IHBw X2Nsb2NrX3JhbmdlIGNsb2NrX3JhbmdlOworCWVudW0gcHBfcG93ZXJfc291cmNlICBjdXJyZW50 X3Bvd2VyX3NvdXJjZTsKKwlzdHJ1Y3QgcGVtX3Bvd2VyX3NvdXJjZV91aV9zdGF0ZV9pbmZvICB1 aV9zdGF0ZV9pbmZvW1BQX1Bvd2VyU291cmNlX01heF07CisJZW51bSBwcF9zdGF0ZSBzdGF0ZXNb UFBfTlVNX1JJTkdTXTsKKwlzdHJ1Y3QgcHBfcmVxdWVzdCBoaV9yZXE7CisJc3RydWN0IGxpc3Rf aGVhZCBjb250ZXh0X2xpc3Q7CisJc3RydWN0IG11dGV4IGxvY2s7CisJYm9vbCAgYmxvY2tfYWRq dXN0X3Bvd2VyX3N0YXRlOworCWJvb2wgZW5hYmxlX2NnOworCWJvb2wgZW5hYmxlX2dmeF9jZ3Bn OworCWludCAoKnBwX2V2ZW50bWdyX2luaXQpKHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3Ip OworCXZvaWQgKCpwcF9ldmVudG1ncl9maW5pKShzdHJ1Y3QgcHBfZXZlbnRtZ3IgKmV2ZW50bWdy KTsKK307CisKK2ludCBldmVudG1ncl9pbml0KHN0cnVjdCBwcF9pbnN0YW5jZSAqaGFuZGxlKTsK K2ludCBldmVudG1ncl9maW5pKHN0cnVjdCBwcF9ldmVudG1nciAqZXZlbnRtZ3IpOworCisjZW5k aWYgLyogX0VWRU5UTUdSX0hfICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bv d2VycGxheS9pbmMvcHBfZmVhdHVyZS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkv aW5jL3BwX2ZlYXR1cmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmFm NmEyCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaW5j L3BwX2ZlYXR1cmUuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IDIwMTUgQWR2 YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5 IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl ICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmlj dGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2Us IGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisg KiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNv bnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj dCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdo dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4K KyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgor ICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZ IE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVO VCBTSEFMTAorICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJQUJM RSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIg SU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFSSVNJTkcg RlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVT RSBPUgorICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisjaWZu ZGVmIF9QUF9GRUFUVVJFX0hfCisjZGVmaW5lIF9QUF9GRUFUVVJFX0hfCisKKy8qKgorICogUG93 ZXJQbGF5IGZlYXR1cmUgaWRzLgorICovCitlbnVtIHBwX2ZlYXR1cmUgeworCVBQX0ZlYXR1cmVf UG93ZXJQbGF5ID0gMCwKKwlQUF9GZWF0dXJlX1VzZXIyRFBlcmZvcm1hbmNlLAorCVBQX0ZlYXR1 cmVfVXNlcjNEUGVyZm9ybWFuY2UsCisJUFBfRmVhdHVyZV9WYXJpQnJpZ2h0LAorCVBQX0ZlYXR1 cmVfVmFyaUJyaWdodE9uUG93ZXJYcHJlc3MsCisJUFBfRmVhdHVyZV9SZWR1Y2VkUmVmcmVzaFJh dGUsCisJUFBfRmVhdHVyZV9HRlhDbG9ja0dhdGluZywKKwlQUF9GZWF0dXJlX092ZXJkcml2ZVRl c3QsCisJUFBfRmVhdHVyZV9PdmVyRHJpdmUsCisJUFBfRmVhdHVyZV9Qb3dlckJ1ZGdldFdhaXZl ciwKKwlQUF9GZWF0dXJlX1Bvd2VyQ29udHJvbCwKKwlQUF9GZWF0dXJlX1Bvd2VyQ29udHJvbF8y LAorCVBQX0ZlYXR1cmVfTXVsdGlVVkRTdGF0ZSwKKwlQUF9GZWF0dXJlX0ZvcmNlM0RDbG9jaywK KwlQUF9GZWF0dXJlX0JBQ08sCisJUFBfRmVhdHVyZV9Qb3dlckRvd24sCisJUFBfRmVhdHVyZV9E eW5hbWljVVZEU3RhdGUsCisJUFBfRmVhdHVyZV9WQ0VEUE0sCisJUFBfRmVhdHVyZV9QUE0sCisJ UFBfRmVhdHVyZV9BQ1BfUE9XRVJHQVRJTkcsCisJUFBfRmVhdHVyZV9GRkMsCisJUFBfRmVhdHVy ZV9GUFMsCisJUFBfRmVhdHVyZV9WaVBHLAorCVBQX0ZlYXR1cmVfTWF4Cit9OworCisvKioKKyAq IFN0cnVjdCBmb3IgUG93ZXJQbGF5IGZlYXR1cmUgaW5mby4KKyAqLworc3RydWN0IHBwX2ZlYXR1 cmVfaW5mbyB7CisJYm9vbCBzdXBwb3J0ZWQ7ICAgICAgICAgICAgICAgLyogZmVhdHVyZSBzdXBw b3J0ZWQgYnkgUG93ZXJQbGF5ICovCisJYm9vbCBlbmFibGVkOyAgICAgICAgICAgICAgICAgLyog ZmVhdHVyZSBlbmFibGVkIGluIFBvd2VyUGxheSAqLworCWJvb2wgZW5hYmxlZF9kZWZhdWx0OyAg ICAgICAgLyogZGVmYXVsdCBlbmFibGUgc3RhdHVzIG9mIHRoZSBmZWF0dXJlICovCisJdWludDMy X3QgdmVyc2lvbjsgICAgICAgICAgICAgLyogZmVhdHVyZSB2ZXJzaW9uICovCit9OworCisjZW5k aWYgLyogX1BQX0ZFQVRVUkVfSF8gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv cG93ZXJwbGF5L2luYy9wcF9pbnN0YW5jZS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBs YXkvaW5jL3BwX2luc3RhbmNlLmgKaW5kZXggMzVkZmNkOS4uN2I2MGI2MSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaW5jL3BwX2luc3RhbmNlLmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaW5jL3BwX2luc3RhbmNlLmgKQEAgLTI1LDEwICsy NSwxMiBAQAogCiAjaW5jbHVkZSAic211bWdyLmgiCiAjaW5jbHVkZSAiaHdtZ3IuaCIKKyNpbmNs dWRlICJldmVudG1nci5oIgogCiBzdHJ1Y3QgcHBfaW5zdGFuY2UgewogCXN0cnVjdCBwcF9zbXVt Z3IgKnNtdV9tZ3I7CiAJc3RydWN0IHBwX2h3bWdyICpod21ncjsKKwlzdHJ1Y3QgcHBfZXZlbnRt Z3IgKmV2ZW50bWdyOwogfTsKIAogI2VuZGlmCi0tIAoxLjguMy4xCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=