From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Lyup1-0000IP-KN for qemu-devel@nongnu.org; Tue, 28 Apr 2009 17:26:35 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Lyuow-0000GR-F2 for qemu-devel@nongnu.org; Tue, 28 Apr 2009 17:26:34 -0400 Received: from [199.232.76.173] (port=43594 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Lyuov-0000GA-R4 for qemu-devel@nongnu.org; Tue, 28 Apr 2009 17:26:29 -0400 Received: from smtp5-g21.free.fr ([212.27.42.5]:44512) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Lyuou-0000k8-Dt for qemu-devel@nongnu.org; Tue, 28 Apr 2009 17:26:29 -0400 Received: from smtp5-g21.free.fr (localhost [127.0.0.1]) by smtp5-g21.free.fr (Postfix) with ESMTP id 39107D480EA for ; Tue, 28 Apr 2009 23:26:24 +0200 (CEST) Received: from laptop (vaf26-2-82-244-111-82.fbx.proxad.net [82.244.111.82]) by smtp5-g21.free.fr (Postfix) with ESMTP id 7F265D48106 for ; Tue, 28 Apr 2009 23:26:21 +0200 (CEST) From: "=?utf-8?q?Fran=C3=A7ois?= Revol" Date: Tue, 28 Apr 2009 23:26:42 +0200 CEST Message-Id: <15356553649-BeMail@laptop> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=----------Zoidberg-BeMail-temp-------- Subject: [Qemu-devel] [PATCH] Merge usb-wacom.c into usb-hid.c List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org This is a multipart message in MIME format. ------------Zoidberg-BeMail-temp-------- Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable $subj; Cleaned up a bit from last RFC, still works fine here with http://dev.haiku-os.org/browser/haiku/trunk/3rdparty/mmu=5Fman/onlinedemo/haiku.php Fran=C3=A7ois. ------------Zoidberg-BeMail-temp-------- Content-Transfer-Encoding: base64 Content-Disposition: BMailAttachment Content-Type: text/x-patch; name=0001-Merge-usb-wacom.c-into-usb-hid.c.txt ClNpZ25lZC1vZmYtYnk6IEZyYW7Dp29pcyBSZXZvbCA8cmV2b2xAZnJlZS5mcj4KLS0tCiBNYWtl ZmlsZSAgICAgICB8ICAgIDIgKy0KIGh3L3VzYi1oaWQuYyAgIHwgIDMyMiArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQogaHcvdXNiLXdhY29tLmMgfCAgNDEyIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAz IGZpbGVzIGNoYW5nZWQsIDI2MCBpbnNlcnRpb25zKCspLCA0NzYgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQppbmRleCAwZjQwY2RhLi5jMDNkNTg3IDEwMDY0 NAotLS0gYS9NYWtlZmlsZQorKysgYi9NYWtlZmlsZQpAQCAtOTIsNyArOTIsNyBAQCBPQkpTKz1z c2QwMzAzLm8gc3NkMDMyMy5vIGFkczc4NDYubyBzdGVsbGFyaXNfaW5wdXQubyB0d2w5MjIzMC5v CiBPQkpTKz10bXAxMDUubyBsbTgzMngubyBlZXByb205M3h4Lm8gdHNjMjAwNS5vCiBPQkpTKz1z Y3NpLWRpc2subyBjZHJvbS5vCiBPQkpTKz1zY3NpLWdlbmVyaWMubwotT0JKUys9dXNiLm8gdXNi LWh1Yi5vIHVzYi0kKEhPU1RfVVNCKS5vIHVzYi1oaWQubyB1c2ItbXNkLm8gdXNiLXdhY29tLm8K K09CSlMrPXVzYi5vIHVzYi1odWIubyB1c2ItJChIT1NUX1VTQikubyB1c2ItaGlkLm8gdXNiLW1z ZC5vCiBPQkpTKz11c2Itc2VyaWFsLm8gdXNiLW5ldC5vCiBPQkpTKz1zZC5vIHNzaS1zZC5vCiBP QkpTKz1idC5vIGJ0LWhvc3QubyBidC12aGNpLm8gYnQtbDJjYXAubyBidC1zZHAubyBidC1oY2ku byBidC1oaWQubyB1c2ItYnQubwpkaWZmIC0tZ2l0IGEvaHcvdXNiLWhpZC5jIGIvaHcvdXNiLWhp ZC5jCmluZGV4IGM4NTBhOTEuLjVmN2FiZjIgMTAwNjQ0Ci0tLSBhL2h3L3VzYi1oaWQuYworKysg Yi9ody91c2ItaGlkLmMKQEAgLTEsNiArMSwxMCBAQAogLyoKICAqIFFFTVUgVVNCIEhJRCBkZXZp Y2VzCiAgKgorICogV2Fjb20gUGVuUGFydG5lciBVU0IgdGFibGV0IGVtdWxhdGlvbjoKKyAqIENv cHlyaWdodCAoYykgMjAwNiBPcGVuZWRoYW5kIEx0ZC4KKyAqIEF1dGhvcjogQW5kcnplaiBaYWJv cm93c2tpIDxiYWxyb2dAemFib3Iub3JnPgorICoKICAqIENvcHlyaWdodCAoYykgMjAwNSBGYWJy aWNlIEJlbGxhcmQKICAqIENvcHlyaWdodCAoYykgMjAwNyBPcGVuTW9rbywgSW5jLiAgKGFuZHJl d0BvcGVuZWRoYW5kLmNvbSkKICAqCkBAIC0yNiwyMiArMzAsMzEgQEAKICNpbmNsdWRlICJjb25z b2xlLmgiCiAjaW5jbHVkZSAidXNiLmgiCiAKKy8qIEludGVyZmFjZSByZXF1ZXN0cyAqLworI2Rl ZmluZSBXQUNPTV9HRVRfUkVQT1JUIDB4MjEwMQorI2RlZmluZSBXQUNPTV9TRVRfUkVQT1JUIDB4 MjEwOQorCiAvKiBISUQgaW50ZXJmYWNlIHJlcXVlc3RzICovCi0jZGVmaW5lIEdFVF9SRVBPUlQg ICAweGExMDEKLSNkZWZpbmUgR0VUX0lETEUgICAgIDB4YTEwMgotI2RlZmluZSBHRVRfUFJPVE9D T0wgMHhhMTAzCi0jZGVmaW5lIFNFVF9SRVBPUlQgICAweDIxMDkKLSNkZWZpbmUgU0VUX0lETEUg ICAgIDB4MjEwYQotI2RlZmluZSBTRVRfUFJPVE9DT0wgMHgyMTBiCisjZGVmaW5lIEhJRF9HRVRf UkVQT1JUCQkweGExMDEKKyNkZWZpbmUgSElEX0dFVF9JRExFCQkweGExMDIKKyNkZWZpbmUgSElE X0dFVF9QUk9UT0NPTAkweGExMDMKKyNkZWZpbmUgSElEX1NFVF9SRVBPUlQJCTB4MjEwOQorI2Rl ZmluZSBISURfU0VUX0lETEUJCTB4MjEwYQorI2RlZmluZSBISURfU0VUX1BST1RPQ09MCTB4MjEw YgorCiAKIC8qIEhJRCBkZXNjcmlwdG9yIHR5cGVzICovCiAjZGVmaW5lIFVTQl9EVF9ISUQgICAg MHgyMQogI2RlZmluZSBVU0JfRFRfUkVQT1JUIDB4MjIKICNkZWZpbmUgVVNCX0RUX1BIWSAgICAw eDIzCiAKLSNkZWZpbmUgVVNCX01PVVNFICAgICAxCi0jZGVmaW5lIFVTQl9UQUJMRVQgICAgMgot I2RlZmluZSBVU0JfS0VZQk9BUkQgIDMKKyNkZWZpbmUgVVNCX01PVVNFICAgICAgICAxCisjZGVm aW5lIFVTQl9UQUJMRVQgICAgICAgMgorI2RlZmluZSBVU0JfS0VZQk9BUkQgICAgIDMKKyNkZWZp bmUgVVNCX1dBQ09NX1RBQkxFVCA0CisKKyNkZWZpbmUgV0FDT01fTU9ERV9ISUQgICAxCisjZGVm aW5lIFdBQ09NX01PREVfV0FDT00gMgogCiB0eXBlZGVmIHN0cnVjdCBVU0JNb3VzZVN0YXRlIHsK ICAgICBpbnQgZHgsIGR5LCBkeiwgYnV0dG9uc19zdGF0ZTsKQEAgLTYzLDEwICs3NiwxMyBAQCB0 eXBlZGVmIHN0cnVjdCBVU0JISURTdGF0ZSB7CiAgICAgICAgIFVTQk1vdXNlU3RhdGUgcHRyOwog ICAgICAgICBVU0JLZXlib2FyZFN0YXRlIGtiZDsKICAgICB9OworICAgIGNvbnN0IHVpbnQ4X3Qg KmRldl9kZXNjcmlwdG9yLCAqY29uZmlnX2Rlc2NyaXB0b3IsICpoaWRfcmVwb3J0X2Rlc2NyaXB0 b3I7CisgICAgaW50IGRldl9kZXNjcmlwdG9yX3NpemUsIGNvbmZpZ19kZXNjcmlwdG9yX3NpemUs IGhpZF9yZXBvcnRfZGVzY3JpcHRvcl9zaXplOwogICAgIGludCBraW5kOwogICAgIGludCBwcm90 b2NvbDsKICAgICB1aW50OF90IGlkbGU7CiAgICAgaW50IGNoYW5nZWQ7CisgICAgaW50ICgqaG9v a19wb2xsKShzdHJ1Y3QgVVNCSElEU3RhdGUgKiwgdWludDhfdCAqLCBpbnQpOwogICAgIHZvaWQg KmRhdGFpbl9vcGFxdWU7CiAgICAgdm9pZCAoKmRhdGFpbikodm9pZCAqKTsKIH0gVVNCSElEU3Rh dGU7CkBAIC05Miw2ICsxMDgsMjYgQEAgc3RhdGljIGNvbnN0IHVpbnQ4X3QgcWVtdV9tb3VzZV9k ZXZfZGVzY3JpcHRvcltdID0gewogCTB4MDEgICAgICAgIC8qICB1OCAgYk51bUNvbmZpZ3VyYXRp b25zOyAqLwogfTsKIAorc3RhdGljIGNvbnN0IHVpbnQ4X3QgcWVtdV93YWNvbV9kZXZfZGVzY3Jp cHRvcltdID0geworCTB4MTIsICAgICAgIC8qICB1OCBiTGVuZ3RoOyAqLworCTB4MDEsICAgICAg IC8qICB1OCBiRGVzY3JpcHRvclR5cGU7IERldmljZSAqLworCTB4MTAsIDB4MTAsIC8qICB1MTYg YmNkVVNCOyB2MS4xMCAqLworCisJMHgwMCwgICAgICAgLyogIHU4ICBiRGV2aWNlQ2xhc3M7ICov CisJMHgwMCwgICAgICAgLyogIHU4ICBiRGV2aWNlU3ViQ2xhc3M7ICovCisJMHgwMCwgICAgICAg LyogIHU4ICBiRGV2aWNlUHJvdG9jb2w7IFsgbG93L2Z1bGwgc3BlZWRzIG9ubHkgXSAqLworCTB4 MDgsICAgICAgIC8qICB1OCAgYk1heFBhY2tldFNpemUwOyA4IEJ5dGVzICovCisKKwkweDZhLCAw eDA1LCAvKiAgdTE2IGlkVmVuZG9yOyAqLworCTB4MDAsIDB4MDAsIC8qICB1MTYgaWRQcm9kdWN0 OyAqLworCTB4MTAsIDB4NDIsIC8qICB1MTYgYmNkRGV2aWNlICovCisKKwkweDAxLCAgICAgICAv KiAgdTggIGlNYW51ZmFjdHVyZXI7ICovCisJMHgwMiwgICAgICAgLyogIHU4ICBpUHJvZHVjdDsg Ki8KKwkweDAwLCAgICAgICAvKiAgdTggIGlTZXJpYWxOdW1iZXI7ICovCisJMHgwMSwgICAgICAg LyogIHU4ICBiTnVtQ29uZmlndXJhdGlvbnM7ICovCit9OworCiBzdGF0aWMgY29uc3QgdWludDhf dCBxZW11X21vdXNlX2NvbmZpZ19kZXNjcmlwdG9yW10gPSB7CiAJLyogb25lIGNvbmZpZ3VyYXRp b24gKi8KIAkweDA5LCAgICAgICAvKiAgdTggIGJMZW5ndGg7ICovCkBAIC0yNTcsNiArMjkzLDUw IEBAIHN0YXRpYyBjb25zdCB1aW50OF90IHFlbXVfa2V5Ym9hcmRfY29uZmlnX2Rlc2NyaXB0b3Jb XSA9IHsKICAgICAweDBhLAkJLyogIHU4ICBlcF9iSW50ZXJ2YWw7ICgyNTVtcyAtLSB1c2IgMi4w IHNwZWMpICovCiB9OwogCitzdGF0aWMgY29uc3QgdWludDhfdCBxZW11X3dhY29tX2NvbmZpZ19k ZXNjcmlwdG9yW10gPSB7CisgICAgLyogb25lIGNvbmZpZ3VyYXRpb24gKi8KKyAgICAweDA5LAkv KiAgdTggIGJMZW5ndGg7ICovCisgICAgMHgwMiwJLyogIHU4ICBiRGVzY3JpcHRvclR5cGU7IENv bmZpZ3VyYXRpb24gKi8KKyAgICAweDIyLCAweDAwLAkvKiAgdTE2IHdUb3RhbExlbmd0aDsgKi8K KyAgICAweDAxLAkvKiAgdTggIGJOdW1JbnRlcmZhY2VzOyAoMSkgKi8KKyAgICAweDAxLAkvKiAg dTggIGJDb25maWd1cmF0aW9uVmFsdWU7ICovCisgICAgMHgwMCwJLyogIHU4ICBpQ29uZmlndXJh dGlvbjsgKi8KKyAgICAweDgwLAkvKiAgdTggIGJtQXR0cmlidXRlczsKKwkJCQkgQml0IDc6IG11 c3QgYmUgc2V0LAorCQkJCSAgICAgNjogU2VsZi1wb3dlcmVkLAorCQkJCSAgICAgNTogUmVtb3Rl IHdha2V1cCwKKwkJCQkgICAgIDQuLjA6IHJlc3ZkICovCisgICAgNDAsCQkvKiAgdTggIE1heFBv d2VyOyAqLworCisgICAgLyogb25lIGludGVyZmFjZSAqLworICAgIDB4MDksCS8qICB1OCAgaWZf Ykxlbmd0aDsgKi8KKyAgICAweDA0LAkvKiAgdTggIGlmX2JEZXNjcmlwdG9yVHlwZTsgSW50ZXJm YWNlICovCisgICAgMHgwMCwJLyogIHU4ICBpZl9iSW50ZXJmYWNlTnVtYmVyOyAqLworICAgIDB4 MDAsCS8qICB1OCAgaWZfYkFsdGVybmF0ZVNldHRpbmc7ICovCisgICAgMHgwMSwJLyogIHU4ICBp Zl9iTnVtRW5kcG9pbnRzOyAqLworICAgIDB4MDMsCS8qICB1OCAgaWZfYkludGVyZmFjZUNsYXNz OyBISUQgKi8KKyAgICAweDAxLAkvKiAgdTggIGlmX2JJbnRlcmZhY2VTdWJDbGFzczsgQm9vdCAq LworICAgIDB4MDIsCS8qICB1OCAgaWZfYkludGVyZmFjZVByb3RvY29sOyBbdXNiMS4xIG9yIHNp bmdsZSB0dF0gKi8KKyAgICAweDAwLAkvKiAgdTggIGlmX2lJbnRlcmZhY2U7ICovCisKKyAgICAv KiBISUQgZGVzY3JpcHRvciAqLworICAgIDB4MDksCS8qICB1OCAgYkxlbmd0aDsgKi8KKyAgICAw eDIxLAkvKiAgdTggIGJEZXNjcmlwdG9yVHlwZTsgKi8KKyAgICAweDAxLCAweDEwLAkvKiAgdTE2 IEhJRF9jbGFzcyAqLworICAgIDB4MDAsCS8qICB1OCAgY291bnRyeV9jb2RlICovCisgICAgMHgw MSwJLyogIHU4ICBudW1fZGVzY3JpcHRvcnMgKi8KKyAgICAweDIyLAkvKiAgdTggIHR5cGU7IFJl cG9ydCAqLworICAgIDB4NmUsIDB4MDAsCS8qICB1MTYgbGVuICovCisKKyAgICAvKiBvbmUgZW5k cG9pbnQgKHN0YXR1cyBjaGFuZ2UgZW5kcG9pbnQpICovCisgICAgMHgwNywJLyogIHU4ICBlcF9i TGVuZ3RoOyAqLworICAgIDB4MDUsCS8qICB1OCAgZXBfYkRlc2NyaXB0b3JUeXBlOyBFbmRwb2lu dCAqLworICAgIDB4ODEsCS8qICB1OCAgZXBfYkVuZHBvaW50QWRkcmVzczsgSU4gRW5kcG9pbnQg MSAqLworICAgIDB4MDMsCS8qICB1OCAgZXBfYm1BdHRyaWJ1dGVzOyBJbnRlcnJ1cHQgKi8KKyAg ICAweDA4LCAweDAwLAkvKiAgdTE2IGVwX3dNYXhQYWNrZXRTaXplOyAqLworICAgIDB4MGEsCS8q ICB1OCAgZXBfYkludGVydmFsOyAqLworfTsKKwogc3RhdGljIGNvbnN0IHVpbnQ4X3QgcWVtdV9t b3VzZV9oaWRfcmVwb3J0X2Rlc2NyaXB0b3JbXSA9IHsKICAgICAweDA1LCAweDAxLAkJLyogVXNh Z2UgUGFnZSAoR2VuZXJpYyBEZXNrdG9wKSAqLwogICAgIDB4MDksIDB4MDIsCQkvKiBVc2FnZSAo TW91c2UpICovCkBAIC00MjcsNyArNTA3LDcgQEAgc3RhdGljIHZvaWQgdXNiX21vdXNlX2V2ZW50 KHZvaWQgKm9wYXF1ZSwKIH0KIAogc3RhdGljIHZvaWQgdXNiX3RhYmxldF9ldmVudCh2b2lkICpv cGFxdWUsCi0JCQkgICAgIGludCB4LCBpbnQgeSwgaW50IGR6LCBpbnQgYnV0dG9uc19zdGF0ZSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHgsIGludCB5LCBpbnQgZHosIGludCBi dXR0b25zX3N0YXRlKQogewogICAgIFVTQkhJRFN0YXRlICpocyA9IG9wYXF1ZTsKICAgICBVU0JN b3VzZVN0YXRlICpzID0gJmhzLT5wdHI7CkBAIC00NDAsNiArNTIwLDI2IEBAIHN0YXRpYyB2b2lk IHVzYl90YWJsZXRfZXZlbnQodm9pZCAqb3BhcXVlLAogICAgIHVzYl9oaWRfY2hhbmdlZChocyk7 CiB9CiAKK3N0YXRpYyB2b2lkIHVzYl93YWNvbV9ldmVudCh2b2lkICpvcGFxdWUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IHgsIGludCB5LCBpbnQgZHosIGludCBidXR0b25zX3N0 YXRlKQoreworICAgIFVTQkhJRFN0YXRlICpocyA9IG9wYXF1ZTsKKyAgICBVU0JNb3VzZVN0YXRl ICpzID0gJmhzLT5wdHI7CisKKyAgICBpZiAoaHMtPnByb3RvY29sID09IFdBQ09NX01PREVfSElE KSB7CisgICAgICAgIHVzYl9tb3VzZV9ldmVudChvcGFxdWUsIHgsIHksIGR6LCBidXR0b25zX3N0 YXRlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qIHNjYWxlIHRvIFBlbnBhcnRu ZXIgcmVzb2x1dGlvbiAqLworICAgIHMtPnggPSAoeCAqIDUwNDAgLyAweDdGRkYpOworICAgIHMt PnkgPSAoeSAqIDM3ODAgLyAweDdGRkYpOworICAgIHMtPmR6ICs9IGR6OworICAgIHMtPmJ1dHRv bnNfc3RhdGUgPSBidXR0b25zX3N0YXRlOworCisgICAgdXNiX2hpZF9jaGFuZ2VkKGhzKTsKK30K Kwogc3RhdGljIHZvaWQgdXNiX2tleWJvYXJkX2V2ZW50KHZvaWQgKm9wYXF1ZSwgaW50IGtleWNv ZGUpCiB7CiAgICAgVVNCSElEU3RhdGUgKmhzID0gb3BhcXVlOwpAQCAtNTEwLDkgKzYxMCw5IEBA IHN0YXRpYyBpbnQgdXNiX21vdXNlX3BvbGwoVVNCSElEU3RhdGUgKmhzLCB1aW50OF90ICpidWYs IGludCBsZW4pCiAgICAgVVNCTW91c2VTdGF0ZSAqcyA9ICZocy0+cHRyOwogCiAgICAgaWYgKCFz LT5tb3VzZV9ncmFiYmVkKSB7Ci0Jcy0+ZWhfZW50cnkgPSBxZW11X2FkZF9tb3VzZV9ldmVudF9o YW5kbGVyKHVzYl9tb3VzZV9ldmVudCwgaHMsCisgICAgICAgIHMtPmVoX2VudHJ5ID0gcWVtdV9h ZGRfbW91c2VfZXZlbnRfaGFuZGxlcih1c2JfbW91c2VfZXZlbnQsIGhzLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAiUUVNVSBVU0IgTW91c2Ui KTsKLQlzLT5tb3VzZV9ncmFiYmVkID0gMTsKKyAgICAgICAgcy0+bW91c2VfZ3JhYmJlZCA9IDE7 CiAgICAgfQogCiAgICAgZHggPSBpbnRfY2xhbXAocy0+ZHgsIC0xMjcsIDEyNyk7CkBAIC01NTIs OSArNjUyLDkgQEAgc3RhdGljIGludCB1c2JfdGFibGV0X3BvbGwoVVNCSElEU3RhdGUgKmhzLCB1 aW50OF90ICpidWYsIGludCBsZW4pCiAgICAgVVNCTW91c2VTdGF0ZSAqcyA9ICZocy0+cHRyOwog CiAgICAgaWYgKCFzLT5tb3VzZV9ncmFiYmVkKSB7Ci0Jcy0+ZWhfZW50cnkgPSBxZW11X2FkZF9t b3VzZV9ldmVudF9oYW5kbGVyKHVzYl90YWJsZXRfZXZlbnQsIGhzLAorICAgICAgICBzLT5laF9l bnRyeSA9IHFlbXVfYWRkX21vdXNlX2V2ZW50X2hhbmRsZXIodXNiX3RhYmxldF9ldmVudCwgaHMs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsICJR RU1VIFVTQiBUYWJsZXQiKTsKLQlzLT5tb3VzZV9ncmFiYmVkID0gMTsKKyAgICAgICAgcy0+bW91 c2VfZ3JhYmJlZCA9IDE7CiAgICAgfQogCiAgICAgZHogPSBpbnRfY2xhbXAocy0+ZHosIC0xMjcs IDEyNyk7CkBAIC01ODEsOCArNjgxLDUwIEBAIHN0YXRpYyBpbnQgdXNiX3RhYmxldF9wb2xsKFVT QkhJRFN0YXRlICpocywgdWludDhfdCAqYnVmLCBpbnQgbGVuKQogICAgIHJldHVybiBsOwogfQog Ci1zdGF0aWMgaW50IHVzYl9rZXlib2FyZF9wb2xsKFVTQktleWJvYXJkU3RhdGUgKnMsIHVpbnQ4 X3QgKmJ1ZiwgaW50IGxlbikKK3N0YXRpYyBpbnQgdXNiX3dhY29tX3BvbGwoVVNCSElEU3RhdGUg KmhzLCB1aW50OF90ICpidWYsIGludCBsZW4pCit7CisgICAgaW50IGI7CisgICAgVVNCTW91c2VT dGF0ZSAqcyA9ICZocy0+cHRyOworCisgICAgaWYgKCFzLT5tb3VzZV9ncmFiYmVkKSB7CisgICAg ICAgIHMtPmVoX2VudHJ5ID0gcWVtdV9hZGRfbW91c2VfZXZlbnRfaGFuZGxlcih1c2Jfd2Fjb21f ZXZlbnQsIGhzLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgIlFFTVUgUGVuUGFydG5lciB0 YWJsZXQiKTsKKyAgICAgICAgcy0+bW91c2VfZ3JhYmJlZCA9IDE7CisgICAgfQorCisgICAgaWYg KGhzLT5wcm90b2NvbCA9PSBXQUNPTV9NT0RFX0hJRCkKKyAgICAgICAgcmV0dXJuIHVzYl9tb3Vz ZV9wb2xsKGhzLCBidWYsIGxlbik7CisKKyAgICBiID0gMDsKKyAgICBpZiAocy0+YnV0dG9uc19z dGF0ZSAmIE1PVVNFX0VWRU5UX0xCVVRUT04pCisgICAgICAgIGIgfD0gMHgwMTsKKyAgICBpZiAo cy0+YnV0dG9uc19zdGF0ZSAmIE1PVVNFX0VWRU5UX1JCVVRUT04pCisgICAgICAgIGIgfD0gMHg0 MDsKKyAgICBpZiAocy0+YnV0dG9uc19zdGF0ZSAmIE1PVVNFX0VWRU5UX01CVVRUT04pCisgICAg ICAgIGIgfD0gMHgyMDsgLyogZXJhc2VyICovCisKKyAgICBpZiAobGVuIDwgNykKKyAgICAgICAg cmV0dXJuIDA7CisKKyAgICBidWZbMF0gPSBocy0+cHJvdG9jb2w7CisgICAgYnVmWzVdID0gMHgw MCB8IChiICYgMHhmMCk7CisgICAgYnVmWzFdID0gcy0+eCAmIDB4ZmY7CisgICAgYnVmWzJdID0g cy0+eCA+PiA4OworICAgIGJ1ZlszXSA9IHMtPnkgJiAweGZmOworICAgIGJ1Zls0XSA9IHMtPnkg Pj4gODsKKyAgICBpZiAoYiAmIDB4M2YpIHsKKyAgICAgICAgYnVmWzZdID0gMDsKKyAgICB9IGVs c2UgeworICAgICAgICBidWZbNl0gPSAodW5zaWduZWQgY2hhcikgLTEyNzsKKyAgICB9CisKKyAg ICByZXR1cm4gNzsKK30KKworc3RhdGljIGludCB1c2Jfa2V5Ym9hcmRfcG9sbChVU0JISURTdGF0 ZSAqaHMsIHVpbnQ4X3QgKmJ1ZiwgaW50IGxlbikKIHsKKyAgICBVU0JLZXlib2FyZFN0YXRlICpz ID0gJmhzLT5rYmQ7CisKICAgICBpZiAobGVuIDwgMikKICAgICAgICAgcmV0dXJuIDA7CiAKQEAg LTYyMiw2ICs3NjQsMTMgQEAgc3RhdGljIHZvaWQgdXNiX21vdXNlX2hhbmRsZV9yZXNldChVU0JE ZXZpY2UgKmRldikKICAgICBzLT5wcm90b2NvbCA9IDE7CiB9CiAKK3N0YXRpYyB2b2lkIHVzYl93 YWNvbV9oYW5kbGVfcmVzZXQoVVNCRGV2aWNlICpkZXYpCit7CisgICAgVVNCSElEU3RhdGUgKnMg PSAoVVNCSElEU3RhdGUgKilkZXY7CisgICAgdXNiX21vdXNlX2hhbmRsZV9yZXNldChkZXYpOwor ICAgIHMtPnByb3RvY29sID0gV0FDT01fTU9ERV9ISUQ7Cit9CisKIHN0YXRpYyB2b2lkIHVzYl9r ZXlib2FyZF9oYW5kbGVfcmVzZXQoVVNCRGV2aWNlICpkZXYpCiB7CiAgICAgVVNCSElEU3RhdGUg KnMgPSAoVVNCSElEU3RhdGUgKilkZXY7CkBAIC02NjYsMjQgKzgxNSwxNCBAQCBzdGF0aWMgaW50 IHVzYl9oaWRfaGFuZGxlX2NvbnRyb2woVVNCRGV2aWNlICpkZXYsIGludCByZXF1ZXN0LCBpbnQg dmFsdWUsCiAgICAgY2FzZSBEZXZpY2VSZXF1ZXN0IHwgVVNCX1JFUV9HRVRfREVTQ1JJUFRPUjoK ICAgICAgICAgc3dpdGNoKHZhbHVlID4+IDgpIHsKICAgICAgICAgY2FzZSBVU0JfRFRfREVWSUNF OgotICAgICAgICAgICAgbWVtY3B5KGRhdGEsIHFlbXVfbW91c2VfZGV2X2Rlc2NyaXB0b3IsCi0g ICAgICAgICAgICAgICAgICAgc2l6ZW9mKHFlbXVfbW91c2VfZGV2X2Rlc2NyaXB0b3IpKTsKLSAg ICAgICAgICAgIHJldCA9IHNpemVvZihxZW11X21vdXNlX2Rldl9kZXNjcmlwdG9yKTsKKyAgICAg ICAgICAgIGlmIChzLT5kZXZfZGVzY3JpcHRvcikKKyAgICAgICAgICAgICAgICBtZW1jcHkoZGF0 YSwgcy0+ZGV2X2Rlc2NyaXB0b3IsIHMtPmRldl9kZXNjcmlwdG9yX3NpemUpOworICAgICAgICAg ICAgcmV0ID0gcy0+ZGV2X2Rlc2NyaXB0b3Jfc2l6ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAg ICAgICBjYXNlIFVTQl9EVF9DT05GSUc6Ci0JICAgIGlmIChzLT5raW5kID09IFVTQl9NT1VTRSkg ewotCQltZW1jcHkoZGF0YSwgcWVtdV9tb3VzZV9jb25maWdfZGVzY3JpcHRvciwKLQkJICAgICAg IHNpemVvZihxZW11X21vdXNlX2NvbmZpZ19kZXNjcmlwdG9yKSk7Ci0JCXJldCA9IHNpemVvZihx ZW11X21vdXNlX2NvbmZpZ19kZXNjcmlwdG9yKTsKLQkgICAgfSBlbHNlIGlmIChzLT5raW5kID09 IFVTQl9UQUJMRVQpIHsKLQkJbWVtY3B5KGRhdGEsIHFlbXVfdGFibGV0X2NvbmZpZ19kZXNjcmlw dG9yLAotCQkgICAgICAgc2l6ZW9mKHFlbXVfdGFibGV0X2NvbmZpZ19kZXNjcmlwdG9yKSk7Ci0J CXJldCA9IHNpemVvZihxZW11X3RhYmxldF9jb25maWdfZGVzY3JpcHRvcik7Ci0gICAgICAgICAg ICB9IGVsc2UgaWYgKHMtPmtpbmQgPT0gVVNCX0tFWUJPQVJEKSB7Ci0gICAgICAgICAgICAgICAg bWVtY3B5KGRhdGEsIHFlbXVfa2V5Ym9hcmRfY29uZmlnX2Rlc2NyaXB0b3IsCi0gICAgICAgICAg ICAgICAgICAgICAgIHNpemVvZihxZW11X2tleWJvYXJkX2NvbmZpZ19kZXNjcmlwdG9yKSk7Ci0g ICAgICAgICAgICAgICAgcmV0ID0gc2l6ZW9mKHFlbXVfa2V5Ym9hcmRfY29uZmlnX2Rlc2NyaXB0 b3IpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHMtPmNvbmZpZ19kZXNjcmlwdG9y KQorICAgICAgICAgICAgICAgIG1lbWNweShkYXRhLCBzLT5jb25maWdfZGVzY3JpcHRvciwgcy0+ Y29uZmlnX2Rlc2NyaXB0b3Jfc2l6ZSk7CisgICAgICAgICAgICByZXQgPSBzLT5jb25maWdfZGVz Y3JpcHRvcl9zaXplOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVVNCX0RUX1NU UklORzoKICAgICAgICAgICAgIHN3aXRjaCh2YWx1ZSAmIDB4ZmYpIHsKQEAgLTcxNiw2ICs4NTUs MTEgQEAgc3RhdGljIGludCB1c2JfaGlkX2hhbmRsZV9jb250cm9sKFVTQkRldmljZSAqZGV2LCBp bnQgcmVxdWVzdCwgaW50IHZhbHVlLAogICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAg ICAgIHJldCA9IHNldF91c2Jfc3RyaW5nKGRhdGEsICJISUQgS2V5Ym9hcmQiKTsKICAgICAgICAg ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgY2FzZSA0Ogor ICAgICAgICAgICAgICAgIHJldCA9IHNldF91c2Jfc3RyaW5nKGRhdGEsICJXYWNvbSBUYWJsZXQi KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAqLwogICAgICAgICAg ICAgY2FzZSA3OgogICAgICAgICAgICAgICAgIHJldCA9IHNldF91c2Jfc3RyaW5nKGRhdGEsICJF bmRwb2ludDEgSW50ZXJydXB0IFBpcGUiKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTc0 MSw1OSArODg1LDYwIEBAIHN0YXRpYyBpbnQgdXNiX2hpZF9oYW5kbGVfY29udHJvbChVU0JEZXZp Y2UgKmRldiwgaW50IHJlcXVlc3QsIGludCB2YWx1ZSwKICAgICBjYXNlIERldmljZU91dFJlcXVl c3QgfCBVU0JfUkVRX1NFVF9JTlRFUkZBQ0U6CiAgICAgICAgIHJldCA9IDA7CiAgICAgICAgIGJy ZWFrOworICAgICAgICAvKiB3YWNvbSBzcGVjaWZpYyByZXF1ZXN0cyAqLworICAgIGNhc2UgV0FD T01fR0VUX1JFUE9SVDoKKyAgICAgICAgZGF0YVswXSA9IDA7CisgICAgICAgIGRhdGFbMV0gPSBz LT5wcm90b2NvbDsKKyAgICAgICAgcmV0ID0gMjsKKyAgICAgICAgYnJlYWs7CiAgICAgICAgIC8q IGhpZCBzcGVjaWZpYyByZXF1ZXN0cyAqLwogICAgIGNhc2UgSW50ZXJmYWNlUmVxdWVzdCB8IFVT Ql9SRVFfR0VUX0RFU0NSSVBUT1I6CiAgICAgICAgIHN3aXRjaCh2YWx1ZSA+PiA4KSB7CiAgICAg ICAgIGNhc2UgMHgyMjoKLQkgICAgaWYgKHMtPmtpbmQgPT0gVVNCX01PVVNFKSB7Ci0JCW1lbWNw eShkYXRhLCBxZW11X21vdXNlX2hpZF9yZXBvcnRfZGVzY3JpcHRvciwKLQkJICAgICAgIHNpemVv ZihxZW11X21vdXNlX2hpZF9yZXBvcnRfZGVzY3JpcHRvcikpOwotCQlyZXQgPSBzaXplb2YocWVt dV9tb3VzZV9oaWRfcmVwb3J0X2Rlc2NyaXB0b3IpOwotCSAgICB9IGVsc2UgaWYgKHMtPmtpbmQg PT0gVVNCX1RBQkxFVCkgewotCQltZW1jcHkoZGF0YSwgcWVtdV90YWJsZXRfaGlkX3JlcG9ydF9k ZXNjcmlwdG9yLAotCQkgICAgICAgc2l6ZW9mKHFlbXVfdGFibGV0X2hpZF9yZXBvcnRfZGVzY3Jp cHRvcikpOwotCQlyZXQgPSBzaXplb2YocWVtdV90YWJsZXRfaGlkX3JlcG9ydF9kZXNjcmlwdG9y KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAocy0+a2luZCA9PSBVU0JfS0VZQk9BUkQpIHsKLSAg ICAgICAgICAgICAgICBtZW1jcHkoZGF0YSwgcWVtdV9rZXlib2FyZF9oaWRfcmVwb3J0X2Rlc2Ny aXB0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihxZW11X2tleWJvYXJkX2hpZF9y ZXBvcnRfZGVzY3JpcHRvcikpOwotICAgICAgICAgICAgICAgIHJldCA9IHNpemVvZihxZW11X2tl eWJvYXJkX2hpZF9yZXBvcnRfZGVzY3JpcHRvcik7Ci0gICAgICAgICAgICB9CisgICAgICAgICAg ICBpZiAocy0+aGlkX3JlcG9ydF9kZXNjcmlwdG9yKQorICAgICAgICAgICAgICAgIG1lbWNweShk YXRhLCBzLT5oaWRfcmVwb3J0X2Rlc2NyaXB0b3IsCisgICAgICAgICAgICAgICAgICAgICAgIHMt PmhpZF9yZXBvcnRfZGVzY3JpcHRvcl9zaXplKTsKKyAgICAgICAgICAgIHJldCA9IHMtPmhpZF9y ZXBvcnRfZGVzY3JpcHRvcl9zaXplOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1 bHQ6CiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0g ICAgY2FzZSBHRVRfUkVQT1JUOgotCWlmIChzLT5raW5kID09IFVTQl9NT1VTRSkKLSAgICAgICAg ICAgIHJldCA9IHVzYl9tb3VzZV9wb2xsKHMsIGRhdGEsIGxlbmd0aCk7Ci0JZWxzZSBpZiAocy0+ a2luZCA9PSBVU0JfVEFCTEVUKQotICAgICAgICAgICAgcmV0ID0gdXNiX3RhYmxldF9wb2xsKHMs IGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIGVsc2UgaWYgKHMtPmtpbmQgPT0gVVNCX0tFWUJPQVJE KQotICAgICAgICAgICAgcmV0ID0gdXNiX2tleWJvYXJkX3BvbGwoJnMtPmtiZCwgZGF0YSwgbGVu Z3RoKTsKKyAgICBjYXNlIEhJRF9HRVRfUkVQT1JUOgorICAgICAgICBpZiAocy0+aG9va19wb2xs KQorICAgICAgICAgICAgcmV0ID0gcy0+aG9va19wb2xsKHMsIGRhdGEsIGxlbmd0aCk7CiAgICAg ICAgIGJyZWFrOwotICAgIGNhc2UgU0VUX1JFUE9SVDoKKyAgICBjYXNlIEhJRF9TRVRfUkVQT1JU OgorICAgICAgICAvKiBhbHNvIFdBQ09NX1NFVF9SRVBPUlQgKi8KICAgICAgICAgaWYgKHMtPmtp bmQgPT0gVVNCX0tFWUJPQVJEKQogICAgICAgICAgICAgcmV0ID0gdXNiX2tleWJvYXJkX3dyaXRl KCZzLT5rYmQsIGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgZWxzZSBpZiAo cy0+a2luZCA9PSBVU0JfV0FDT01fVEFCTEVUKSB7CisgICAgICAgICAgICBpZiAocy0+cHRyLmVo X2VudHJ5KQorICAgICAgICAgICAgICAgIHFlbXVfcmVtb3ZlX21vdXNlX2V2ZW50X2hhbmRsZXIo cy0+cHRyLmVoX2VudHJ5KTsKKyAgICAgICAgICAgIHMtPnB0ci5laF9lbnRyeSA9IE5VTEw7Cisg ICAgICAgICAgICBzLT5wdHIubW91c2VfZ3JhYmJlZCA9IDA7CisgICAgICAgICAgICBzLT5wcm90 b2NvbCA9IGRhdGFbMF07CisgICAgICAgICAgICByZXQgPSAwOworICAgICAgICB9IGVsc2UKICAg ICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHRVRfUFJPVE9D T0w6CisgICAgY2FzZSBISURfR0VUX1BST1RPQ09MOgogICAgICAgICBpZiAocy0+a2luZCAhPSBV U0JfS0VZQk9BUkQpCiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIHJldCA9IDE7CiAg ICAgICAgIGRhdGFbMF0gPSBzLT5wcm90b2NvbDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBT RVRfUFJPVE9DT0w6CisgICAgY2FzZSBISURfU0VUX1BST1RPQ09MOgogICAgICAgICBpZiAocy0+ a2luZCAhPSBVU0JfS0VZQk9BUkQpCiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIHJl dCA9IDA7CiAgICAgICAgIHMtPnByb3RvY29sID0gdmFsdWU7CiAgICAgICAgIGJyZWFrOwotICAg IGNhc2UgR0VUX0lETEU6CisgICAgY2FzZSBISURfR0VUX0lETEU6CiAgICAgICAgIHJldCA9IDE7 CiAgICAgICAgIGRhdGFbMF0gPSBzLT5pZGxlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNF VF9JRExFOgorICAgIGNhc2UgSElEX1NFVF9JRExFOgogICAgICAgICBzLT5pZGxlID0gKHVpbnQ4 X3QpICh2YWx1ZSA+PiA4KTsKICAgICAgICAgcmV0ID0gMDsKICAgICAgICAgYnJlYWs7CkBAIC04 MTcsMTIgKzk2Miw4IEBAIHN0YXRpYyBpbnQgdXNiX2hpZF9oYW5kbGVfZGF0YShVU0JEZXZpY2Ug KmRldiwgVVNCUGFja2V0ICpwKQogICAgICAgICAgICAgaWYgKCEocy0+Y2hhbmdlZCB8fCBzLT5p ZGxlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gVVNCX1JFVF9OQUs7CiAgICAgICAgICAgICBz LT5jaGFuZ2VkID0gMDsKLSAgICAgICAgICAgIGlmIChzLT5raW5kID09IFVTQl9NT1VTRSkKLSAg ICAgICAgICAgICAgICByZXQgPSB1c2JfbW91c2VfcG9sbChzLCBwLT5kYXRhLCBwLT5sZW4pOwot ICAgICAgICAgICAgZWxzZSBpZiAocy0+a2luZCA9PSBVU0JfVEFCTEVUKQotICAgICAgICAgICAg ICAgIHJldCA9IHVzYl90YWJsZXRfcG9sbChzLCBwLT5kYXRhLCBwLT5sZW4pOwotICAgICAgICAg ICAgZWxzZSBpZiAocy0+a2luZCA9PSBVU0JfS0VZQk9BUkQpCi0gICAgICAgICAgICAgICAgcmV0 ID0gdXNiX2tleWJvYXJkX3BvbGwoJnMtPmtiZCwgcC0+ZGF0YSwgcC0+bGVuKTsKKyAgICAgICAg ICAgIGlmIChzLT5ob29rX3BvbGwpCisgICAgICAgICAgICAgICAgcmV0ID0gcy0+aG9va19wb2xs KHMsIHAtPmRhdGEsIHAtPmxlbik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBnb3Rv IGZhaWw7CiAgICAgICAgIH0KQEAgLTg1OCw3ICs5OTksMTUgQEAgVVNCRGV2aWNlICp1c2JfdGFi bGV0X2luaXQodm9pZCkKICAgICBzLT5kZXYuaGFuZGxlX2NvbnRyb2wgPSB1c2JfaGlkX2hhbmRs ZV9jb250cm9sOwogICAgIHMtPmRldi5oYW5kbGVfZGF0YSA9IHVzYl9oaWRfaGFuZGxlX2RhdGE7 CiAgICAgcy0+ZGV2LmhhbmRsZV9kZXN0cm95ID0gdXNiX2hpZF9oYW5kbGVfZGVzdHJveTsKKwor ICAgIHMtPmRldl9kZXNjcmlwdG9yID0gcWVtdV9tb3VzZV9kZXZfZGVzY3JpcHRvcjsKKyAgICBz LT5kZXZfZGVzY3JpcHRvcl9zaXplID0gc2l6ZW9mKHFlbXVfbW91c2VfZGV2X2Rlc2NyaXB0b3Ip OworICAgIHMtPmNvbmZpZ19kZXNjcmlwdG9yID0gcWVtdV90YWJsZXRfY29uZmlnX2Rlc2NyaXB0 b3I7CisgICAgcy0+Y29uZmlnX2Rlc2NyaXB0b3Jfc2l6ZSA9IHNpemVvZihxZW11X3RhYmxldF9j b25maWdfZGVzY3JpcHRvcik7CisgICAgcy0+aGlkX3JlcG9ydF9kZXNjcmlwdG9yID0gcWVtdV90 YWJsZXRfaGlkX3JlcG9ydF9kZXNjcmlwdG9yOworICAgIHMtPmhpZF9yZXBvcnRfZGVzY3JpcHRv cl9zaXplID0gc2l6ZW9mKHFlbXVfdGFibGV0X2hpZF9yZXBvcnRfZGVzY3JpcHRvcik7CiAgICAg cy0+a2luZCA9IFVTQl9UQUJMRVQ7CisgICAgcy0+aG9va19wb2xsID0gdXNiX3RhYmxldF9wb2xs OwogICAgIC8qIEZvcmNlIHBvbGwgcm91dGluZSB0byBiZSBydW4gYW5kIGdyYWIgaW5wdXQgdGhl IGZpcnN0IHRpbWUuICAqLwogICAgIHMtPmNoYW5nZWQgPSAxOwogCkBAIC04NjcsNiArMTAxNiwz NiBAQCBVU0JEZXZpY2UgKnVzYl90YWJsZXRfaW5pdCh2b2lkKQogICAgIHJldHVybiAoVVNCRGV2 aWNlICopczsKIH0KIAorVVNCRGV2aWNlICp1c2Jfd2Fjb21faW5pdCh2b2lkKQoreworICAgIFVT QkhJRFN0YXRlICpzOworCisgICAgcyA9IHFlbXVfbWFsbG9jeihzaXplb2YoVVNCSElEU3RhdGUp KTsKKyAgICBzLT5kZXYuc3BlZWQgPSBVU0JfU1BFRURfRlVMTDsKKyAgICBzLT5kZXYuaGFuZGxl X3BhY2tldCA9IHVzYl9nZW5lcmljX2hhbmRsZV9wYWNrZXQ7CisKKyAgICBzLT5kZXYuaGFuZGxl X3Jlc2V0ID0gdXNiX3dhY29tX2hhbmRsZV9yZXNldDsKKyAgICBzLT5kZXYuaGFuZGxlX2NvbnRy b2wgPSB1c2JfaGlkX2hhbmRsZV9jb250cm9sOworICAgIHMtPmRldi5oYW5kbGVfZGF0YSA9IHVz Yl9oaWRfaGFuZGxlX2RhdGE7CisgICAgcy0+ZGV2LmhhbmRsZV9kZXN0cm95ID0gdXNiX2hpZF9o YW5kbGVfZGVzdHJveTsKKworICAgIHMtPmRldl9kZXNjcmlwdG9yID0gcWVtdV93YWNvbV9kZXZf ZGVzY3JpcHRvcjsKKyAgICBzLT5kZXZfZGVzY3JpcHRvcl9zaXplID0gc2l6ZW9mKHFlbXVfd2Fj b21fZGV2X2Rlc2NyaXB0b3IpOworICAgIHMtPmNvbmZpZ19kZXNjcmlwdG9yID0gcWVtdV90YWJs ZXRfY29uZmlnX2Rlc2NyaXB0b3I7CisgICAgcy0+Y29uZmlnX2Rlc2NyaXB0b3Jfc2l6ZSA9IHNp emVvZihxZW11X3RhYmxldF9jb25maWdfZGVzY3JpcHRvcik7CisgICAgcy0+aGlkX3JlcG9ydF9k ZXNjcmlwdG9yID0gTlVMTDsKKyAgICBzLT5oaWRfcmVwb3J0X2Rlc2NyaXB0b3Jfc2l6ZSA9IDA7 CisgICAgcy0+a2luZCA9IFVTQl9XQUNPTV9UQUJMRVQ7CisgICAgcy0+aG9va19wb2xsID0gJnVz Yl93YWNvbV9wb2xsOworICAgIC8qIEZvcmNlIHBvbGwgcm91dGluZSB0byBiZSBydW4gYW5kIGdy YWIgaW5wdXQgdGhlIGZpcnN0IHRpbWUuICAqLworICAgIHMtPmNoYW5nZWQgPSAxOworCisgICAg cHN0cmNweShzLT5kZXYuZGV2bmFtZSwgc2l6ZW9mKHMtPmRldi5kZXZuYW1lKSwKKyAgICAgICAg ICAgICJRRU1VIFBlblBhcnRuZXIgVGFibGV0Iik7CisKKyAgICByZXR1cm4gKFVTQkRldmljZSAq KXM7Cit9CisKIFVTQkRldmljZSAqdXNiX21vdXNlX2luaXQodm9pZCkKIHsKICAgICBVU0JISURT dGF0ZSAqczsKQEAgLTg3OSw3ICsxMDU4LDE1IEBAIFVTQkRldmljZSAqdXNiX21vdXNlX2luaXQo dm9pZCkKICAgICBzLT5kZXYuaGFuZGxlX2NvbnRyb2wgPSB1c2JfaGlkX2hhbmRsZV9jb250cm9s OwogICAgIHMtPmRldi5oYW5kbGVfZGF0YSA9IHVzYl9oaWRfaGFuZGxlX2RhdGE7CiAgICAgcy0+ ZGV2LmhhbmRsZV9kZXN0cm95ID0gdXNiX2hpZF9oYW5kbGVfZGVzdHJveTsKKworICAgIHMtPmRl dl9kZXNjcmlwdG9yID0gcWVtdV9tb3VzZV9kZXZfZGVzY3JpcHRvcjsKKyAgICBzLT5kZXZfZGVz Y3JpcHRvcl9zaXplID0gc2l6ZW9mKHFlbXVfbW91c2VfZGV2X2Rlc2NyaXB0b3IpOworICAgIHMt PmNvbmZpZ19kZXNjcmlwdG9yID0gcWVtdV9tb3VzZV9jb25maWdfZGVzY3JpcHRvcjsKKyAgICBz LT5jb25maWdfZGVzY3JpcHRvcl9zaXplID0gc2l6ZW9mKHFlbXVfbW91c2VfY29uZmlnX2Rlc2Ny aXB0b3IpOworICAgIHMtPmhpZF9yZXBvcnRfZGVzY3JpcHRvciA9IHFlbXVfbW91c2VfaGlkX3Jl cG9ydF9kZXNjcmlwdG9yOworICAgIHMtPmhpZF9yZXBvcnRfZGVzY3JpcHRvcl9zaXplID0gc2l6 ZW9mKHFlbXVfbW91c2VfaGlkX3JlcG9ydF9kZXNjcmlwdG9yKTsKICAgICBzLT5raW5kID0gVVNC X01PVVNFOworICAgIHMtPmhvb2tfcG9sbCA9IHVzYl9tb3VzZV9wb2xsOwogICAgIC8qIEZvcmNl IHBvbGwgcm91dGluZSB0byBiZSBydW4gYW5kIGdyYWIgaW5wdXQgdGhlIGZpcnN0IHRpbWUuICAq LwogICAgIHMtPmNoYW5nZWQgPSAxOwogCkBAIC05MDAsNyArMTA4NywxNSBAQCBVU0JEZXZpY2Ug KnVzYl9rZXlib2FyZF9pbml0KHZvaWQpCiAgICAgcy0+ZGV2LmhhbmRsZV9jb250cm9sID0gdXNi X2hpZF9oYW5kbGVfY29udHJvbDsKICAgICBzLT5kZXYuaGFuZGxlX2RhdGEgPSB1c2JfaGlkX2hh bmRsZV9kYXRhOwogICAgIHMtPmRldi5oYW5kbGVfZGVzdHJveSA9IHVzYl9oaWRfaGFuZGxlX2Rl c3Ryb3k7CisKKyAgICBzLT5kZXZfZGVzY3JpcHRvciA9IHFlbXVfbW91c2VfZGV2X2Rlc2NyaXB0 b3I7CisgICAgcy0+ZGV2X2Rlc2NyaXB0b3Jfc2l6ZSA9IHNpemVvZihxZW11X21vdXNlX2Rldl9k ZXNjcmlwdG9yKTsKKyAgICBzLT5jb25maWdfZGVzY3JpcHRvciA9IHFlbXVfa2V5Ym9hcmRfY29u ZmlnX2Rlc2NyaXB0b3I7CisgICAgcy0+Y29uZmlnX2Rlc2NyaXB0b3Jfc2l6ZSA9IHNpemVvZihx ZW11X2tleWJvYXJkX2NvbmZpZ19kZXNjcmlwdG9yKTsKKyAgICBzLT5oaWRfcmVwb3J0X2Rlc2Ny aXB0b3IgPSBxZW11X2tleWJvYXJkX2hpZF9yZXBvcnRfZGVzY3JpcHRvcjsKKyAgICBzLT5oaWRf cmVwb3J0X2Rlc2NyaXB0b3Jfc2l6ZSA9IHNpemVvZihxZW11X2tleWJvYXJkX2hpZF9yZXBvcnRf ZGVzY3JpcHRvcik7CiAgICAgcy0+a2luZCA9IFVTQl9LRVlCT0FSRDsKKyAgICBzLT5ob29rX3Bv bGwgPSB1c2Jfa2V5Ym9hcmRfcG9sbDsKIAogICAgIHBzdHJjcHkocy0+ZGV2LmRldm5hbWUsIHNp emVvZihzLT5kZXYuZGV2bmFtZSksICJRRU1VIFVTQiBLZXlib2FyZCIpOwogCkBAIC05MTQsMyAr MTEwOSw0IEBAIHZvaWQgdXNiX2hpZF9kYXRhaW5fY2IoVVNCRGV2aWNlICpkZXYsIHZvaWQgKm9w YXF1ZSwgdm9pZCAoKmRhdGFpbikodm9pZCAqKSkKICAgICBzLT5kYXRhaW5fb3BhcXVlID0gb3Bh cXVlOwogICAgIHMtPmRhdGFpbiA9IGRhdGFpbjsKIH0KKwpkaWZmIC0tZ2l0IGEvaHcvdXNiLXdh Y29tLmMgYi9ody91c2Itd2Fjb20uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWFm MGQyOS4uMDAwMDAwMAotLS0gYS9ody91c2Itd2Fjb20uYworKysgL2Rldi9udWxsCkBAIC0xLDQx MiArMCwwIEBACi0vKgotICogV2Fjb20gUGVuUGFydG5lciBVU0IgdGFibGV0IGVtdWxhdGlvbi4K LSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYgT3BlbmVkaGFuZCBMdGQuCi0gKiBBdXRob3I6IEFu ZHJ6ZWogWmFib3Jvd3NraSA8YmFscm9nQHphYm9yLm9yZz4KLSAqCi0gKiBCYXNlZCBvbiBody91 c2ItaGlkLmM6Ci0gKiBDb3B5cmlnaHQgKGMpIDIwMDUgRmFicmljZSBCZWxsYXJkCi0gKgotICog UGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJz b24gb2J0YWluaW5nIGEgY29weQotICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBk b2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKLSAqIGluIHRoZSBT b2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9u IHRoZSByaWdodHMKLSAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlz dHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKLSAqIGNvcGllcyBvZiB0aGUgU29mdHdh cmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwotICogZnVy bmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSAq Ci0gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj ZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgotICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0 aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0gKgotICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLSAqIElNUExJ RUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hB TlRBQklMSVRZLAotICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklO RlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwKLSAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdI VCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCi0gKiBM SUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVS V0lTRSwgQVJJU0lORyBGUk9NLAotICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUg U09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgotICogVEhFIFNPRlRXQVJF LgotICovCi0jaW5jbHVkZSAiaHcuaCIKLSNpbmNsdWRlICJjb25zb2xlLmgiCi0jaW5jbHVkZSAi dXNiLmgiCi0KLS8qIEludGVyZmFjZSByZXF1ZXN0cyAqLwotI2RlZmluZSBXQUNPTV9HRVRfUkVQ T1JUCTB4MjEwMQotI2RlZmluZSBXQUNPTV9TRVRfUkVQT1JUCTB4MjEwOQotCi0vKiBISUQgaW50 ZXJmYWNlIHJlcXVlc3RzICovCi0jZGVmaW5lIEhJRF9HRVRfUkVQT1JUCQkweGExMDEKLSNkZWZp bmUgSElEX0dFVF9JRExFCQkweGExMDIKLSNkZWZpbmUgSElEX0dFVF9QUk9UT0NPTAkweGExMDMK LSNkZWZpbmUgSElEX1NFVF9JRExFCQkweDIxMGEKLSNkZWZpbmUgSElEX1NFVF9QUk9UT0NPTAkw eDIxMGIKLQotdHlwZWRlZiBzdHJ1Y3QgVVNCV2Fjb21TdGF0ZSB7Ci0gICAgVVNCRGV2aWNlIGRl djsKLSAgICBRRU1VUHV0TW91c2VFbnRyeSAqZWhfZW50cnk7Ci0gICAgaW50IGR4LCBkeSwgZHos IGJ1dHRvbnNfc3RhdGU7Ci0gICAgaW50IHgsIHk7Ci0gICAgaW50IG1vdXNlX2dyYWJiZWQ7Ci0g ICAgZW51bSB7Ci0gICAgICAgIFdBQ09NX01PREVfSElEID0gMSwKLSAgICAgICAgV0FDT01fTU9E RV9XQUNPTSA9IDIsCi0gICAgfSBtb2RlOwotfSBVU0JXYWNvbVN0YXRlOwotCi1zdGF0aWMgY29u c3QgdWludDhfdCBxZW11X3dhY29tX2Rldl9kZXNjcmlwdG9yW10gPSB7Ci0gICAgMHgxMiwJLyog IHU4IGJMZW5ndGg7ICovCi0gICAgMHgwMSwJLyogIHU4IGJEZXNjcmlwdG9yVHlwZTsgRGV2aWNl ICovCi0gICAgMHgxMCwgMHgxMCwJLyogIHUxNiBiY2RVU0I7IHYxLjEwICovCi0KLSAgICAweDAw LAkvKiAgdTggIGJEZXZpY2VDbGFzczsgKi8KLSAgICAweDAwLAkvKiAgdTggIGJEZXZpY2VTdWJD bGFzczsgKi8KLSAgICAweDAwLAkvKiAgdTggIGJEZXZpY2VQcm90b2NvbDsgWyBsb3cvZnVsbCBz cGVlZHMgb25seSBdICovCi0gICAgMHgwOCwJLyogIHU4ICBiTWF4UGFja2V0U2l6ZTA7IDggQnl0 ZXMgKi8KLQotICAgIDB4NmEsIDB4MDUsCS8qICB1MTYgaWRWZW5kb3I7ICovCi0gICAgMHgwMCwg MHgwMCwJLyogIHUxNiBpZFByb2R1Y3Q7ICovCi0gICAgMHgxMCwgMHg0MiwJLyogIHUxNiBiY2RE ZXZpY2UgKi8KLQotICAgIDB4MDEsCS8qICB1OCAgaU1hbnVmYWN0dXJlcjsgKi8KLSAgICAweDAy LAkvKiAgdTggIGlQcm9kdWN0OyAqLwotICAgIDB4MDAsCS8qICB1OCAgaVNlcmlhbE51bWJlcjsg Ki8KLSAgICAweDAxLAkvKiAgdTggIGJOdW1Db25maWd1cmF0aW9uczsgKi8KLX07Ci0KLXN0YXRp YyBjb25zdCB1aW50OF90IHFlbXVfd2Fjb21fY29uZmlnX2Rlc2NyaXB0b3JbXSA9IHsKLSAgICAv KiBvbmUgY29uZmlndXJhdGlvbiAqLwotICAgIDB4MDksCS8qICB1OCAgYkxlbmd0aDsgKi8KLSAg ICAweDAyLAkvKiAgdTggIGJEZXNjcmlwdG9yVHlwZTsgQ29uZmlndXJhdGlvbiAqLwotICAgIDB4 MjIsIDB4MDAsCS8qICB1MTYgd1RvdGFsTGVuZ3RoOyAqLwotICAgIDB4MDEsCS8qICB1OCAgYk51 bUludGVyZmFjZXM7ICgxKSAqLwotICAgIDB4MDEsCS8qICB1OCAgYkNvbmZpZ3VyYXRpb25WYWx1 ZTsgKi8KLSAgICAweDAwLAkvKiAgdTggIGlDb25maWd1cmF0aW9uOyAqLwotICAgIDB4ODAsCS8q ICB1OCAgYm1BdHRyaWJ1dGVzOwotCQkJCSBCaXQgNzogbXVzdCBiZSBzZXQsCi0JCQkJICAgICA2 OiBTZWxmLXBvd2VyZWQsCi0JCQkJICAgICA1OiBSZW1vdGUgd2FrZXVwLAotCQkJCSAgICAgNC4u MDogcmVzdmQgKi8KLSAgICA0MCwJCS8qICB1OCAgTWF4UG93ZXI7ICovCi0KLSAgICAvKiBvbmUg aW50ZXJmYWNlICovCi0gICAgMHgwOSwJLyogIHU4ICBpZl9iTGVuZ3RoOyAqLwotICAgIDB4MDQs CS8qICB1OCAgaWZfYkRlc2NyaXB0b3JUeXBlOyBJbnRlcmZhY2UgKi8KLSAgICAweDAwLAkvKiAg dTggIGlmX2JJbnRlcmZhY2VOdW1iZXI7ICovCi0gICAgMHgwMCwJLyogIHU4ICBpZl9iQWx0ZXJu YXRlU2V0dGluZzsgKi8KLSAgICAweDAxLAkvKiAgdTggIGlmX2JOdW1FbmRwb2ludHM7ICovCi0g ICAgMHgwMywJLyogIHU4ICBpZl9iSW50ZXJmYWNlQ2xhc3M7IEhJRCAqLwotICAgIDB4MDEsCS8q ICB1OCAgaWZfYkludGVyZmFjZVN1YkNsYXNzOyBCb290ICovCi0gICAgMHgwMiwJLyogIHU4ICBp Zl9iSW50ZXJmYWNlUHJvdG9jb2w7IFt1c2IxLjEgb3Igc2luZ2xlIHR0XSAqLwotICAgIDB4MDAs CS8qICB1OCAgaWZfaUludGVyZmFjZTsgKi8KLQotICAgIC8qIEhJRCBkZXNjcmlwdG9yICovCi0g ICAgMHgwOSwJLyogIHU4ICBiTGVuZ3RoOyAqLwotICAgIDB4MjEsCS8qICB1OCAgYkRlc2NyaXB0 b3JUeXBlOyAqLwotICAgIDB4MDEsIDB4MTAsCS8qICB1MTYgSElEX2NsYXNzICovCi0gICAgMHgw MCwJLyogIHU4ICBjb3VudHJ5X2NvZGUgKi8KLSAgICAweDAxLAkvKiAgdTggIG51bV9kZXNjcmlw dG9ycyAqLwotICAgIDB4MjIsCS8qICB1OCAgdHlwZTsgUmVwb3J0ICovCi0gICAgMHg2ZSwgMHgw MCwJLyogIHUxNiBsZW4gKi8KLQotICAgIC8qIG9uZSBlbmRwb2ludCAoc3RhdHVzIGNoYW5nZSBl bmRwb2ludCkgKi8KLSAgICAweDA3LAkvKiAgdTggIGVwX2JMZW5ndGg7ICovCi0gICAgMHgwNSwJ LyogIHU4ICBlcF9iRGVzY3JpcHRvclR5cGU7IEVuZHBvaW50ICovCi0gICAgMHg4MSwJLyogIHU4 ICBlcF9iRW5kcG9pbnRBZGRyZXNzOyBJTiBFbmRwb2ludCAxICovCi0gICAgMHgwMywJLyogIHU4 ICBlcF9ibUF0dHJpYnV0ZXM7IEludGVycnVwdCAqLwotICAgIDB4MDgsIDB4MDAsCS8qICB1MTYg ZXBfd01heFBhY2tldFNpemU7ICovCi0gICAgMHgwYSwJLyogIHU4ICBlcF9iSW50ZXJ2YWw7ICov Ci19OwotCi1zdGF0aWMgdm9pZCB1c2JfbW91c2VfZXZlbnQodm9pZCAqb3BhcXVlLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCBkeDEsIGludCBkeTEsIGludCBkejEsIGludCBidXR0 b25zX3N0YXRlKQotewotICAgIFVTQldhY29tU3RhdGUgKnMgPSBvcGFxdWU7Ci0KLSAgICBzLT5k eCArPSBkeDE7Ci0gICAgcy0+ZHkgKz0gZHkxOwotICAgIHMtPmR6ICs9IGR6MTsKLSAgICBzLT5i dXR0b25zX3N0YXRlID0gYnV0dG9uc19zdGF0ZTsKLX0KLQotc3RhdGljIHZvaWQgdXNiX3dhY29t X2V2ZW50KHZvaWQgKm9wYXF1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeCwg aW50IHksIGludCBkeiwgaW50IGJ1dHRvbnNfc3RhdGUpCi17Ci0gICAgVVNCV2Fjb21TdGF0ZSAq cyA9IG9wYXF1ZTsKLQotICAgIHMtPnggPSB4OwotICAgIHMtPnkgPSB5OwotICAgIHMtPmR6ICs9 IGR6OwotICAgIHMtPmJ1dHRvbnNfc3RhdGUgPSBidXR0b25zX3N0YXRlOwotfQotCi1zdGF0aWMg aW5saW5lIGludCBpbnRfY2xhbXAoaW50IHZhbCwgaW50IHZtaW4sIGludCB2bWF4KQotewotICAg IGlmICh2YWwgPCB2bWluKQotICAgICAgICByZXR1cm4gdm1pbjsKLSAgICBlbHNlIGlmICh2YWwg PiB2bWF4KQotICAgICAgICByZXR1cm4gdm1heDsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiB2 YWw7Ci19Ci0KLXN0YXRpYyBpbnQgdXNiX21vdXNlX3BvbGwoVVNCV2Fjb21TdGF0ZSAqcywgdWlu dDhfdCAqYnVmLCBpbnQgbGVuKQotewotICAgIGludCBkeCwgZHksIGR6LCBiLCBsOwotCi0gICAg aWYgKCFzLT5tb3VzZV9ncmFiYmVkKSB7Ci0gICAgICAgIHMtPmVoX2VudHJ5ID0gcWVtdV9hZGRf bW91c2VfZXZlbnRfaGFuZGxlcih1c2JfbW91c2VfZXZlbnQsIHMsIDAsCi0gICAgICAgICAgICAg ICAgICAgICAgICAiUUVNVSBQZW5QYXJ0bmVyIHRhYmxldCIpOwotICAgICAgICBzLT5tb3VzZV9n cmFiYmVkID0gMTsKLSAgICB9Ci0KLSAgICBkeCA9IGludF9jbGFtcChzLT5keCwgLTEyOCwgMTI3 KTsKLSAgICBkeSA9IGludF9jbGFtcChzLT5keSwgLTEyOCwgMTI3KTsKLSAgICBkeiA9IGludF9j bGFtcChzLT5keiwgLTEyOCwgMTI3KTsKLQotICAgIHMtPmR4IC09IGR4OwotICAgIHMtPmR5IC09 IGR5OwotICAgIHMtPmR6IC09IGR6OwotCi0gICAgYiA9IDA7Ci0gICAgaWYgKHMtPmJ1dHRvbnNf c3RhdGUgJiBNT1VTRV9FVkVOVF9MQlVUVE9OKQotICAgICAgICBiIHw9IDB4MDE7Ci0gICAgaWYg KHMtPmJ1dHRvbnNfc3RhdGUgJiBNT1VTRV9FVkVOVF9SQlVUVE9OKQotICAgICAgICBiIHw9IDB4 MDI7Ci0gICAgaWYgKHMtPmJ1dHRvbnNfc3RhdGUgJiBNT1VTRV9FVkVOVF9NQlVUVE9OKQotICAg ICAgICBiIHw9IDB4MDQ7Ci0KLSAgICBidWZbMF0gPSBiOwotICAgIGJ1ZlsxXSA9IGR4OwotICAg IGJ1ZlsyXSA9IGR5OwotICAgIGwgPSAzOwotICAgIGlmIChsZW4gPj0gNCkgewotICAgICAgICBi dWZbM10gPSBkejsKLSAgICAgICAgbCA9IDQ7Ci0gICAgfQotICAgIHJldHVybiBsOwotfQotCi1z dGF0aWMgaW50IHVzYl93YWNvbV9wb2xsKFVTQldhY29tU3RhdGUgKnMsIHVpbnQ4X3QgKmJ1Ziwg aW50IGxlbikKLXsKLSAgICBpbnQgYjsKLQotICAgIGlmICghcy0+bW91c2VfZ3JhYmJlZCkgewot ICAgICAgICBzLT5laF9lbnRyeSA9IHFlbXVfYWRkX21vdXNlX2V2ZW50X2hhbmRsZXIodXNiX3dh Y29tX2V2ZW50LCBzLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgIlFFTVUgUGVuUGFydG5l ciB0YWJsZXQiKTsKLSAgICAgICAgcy0+bW91c2VfZ3JhYmJlZCA9IDE7Ci0gICAgfQotCi0gICAg YiA9IDA7Ci0gICAgaWYgKHMtPmJ1dHRvbnNfc3RhdGUgJiBNT1VTRV9FVkVOVF9MQlVUVE9OKQot ICAgICAgICBiIHw9IDB4MDE7Ci0gICAgaWYgKHMtPmJ1dHRvbnNfc3RhdGUgJiBNT1VTRV9FVkVO VF9SQlVUVE9OKQotICAgICAgICBiIHw9IDB4MDI7Ci0gICAgaWYgKHMtPmJ1dHRvbnNfc3RhdGUg JiBNT1VTRV9FVkVOVF9NQlVUVE9OKQotICAgICAgICBiIHw9IDB4MDQ7Ci0KLSAgICBpZiAobGVu IDwgNykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBidWZbMF0gPSBzLT5tb2RlOwotICAgIGJ1 Zls1XSA9IDB4MDA7Ci0gICAgaWYgKGIpIHsKLSAgICAgICAgYnVmWzFdID0gcy0+eCAmIDB4ZmY7 Ci0gICAgICAgIGJ1ZlsyXSA9IHMtPnggPj4gODsKLSAgICAgICAgYnVmWzNdID0gcy0+eSAmIDB4 ZmY7Ci0gICAgICAgIGJ1Zls0XSA9IHMtPnkgPj4gODsKLSAgICAgICAgYnVmWzZdID0gMDsKLSAg ICB9IGVsc2UgewotICAgICAgICBidWZbMV0gPSAwOwotICAgICAgICBidWZbMl0gPSAwOwotICAg ICAgICBidWZbM10gPSAwOwotICAgICAgICBidWZbNF0gPSAwOwotICAgICAgICBidWZbNl0gPSAo dW5zaWduZWQgY2hhcikgLTEyNzsKLSAgICB9Ci0KLSAgICByZXR1cm4gNzsKLX0KLQotc3RhdGlj IHZvaWQgdXNiX3dhY29tX2hhbmRsZV9yZXNldChVU0JEZXZpY2UgKmRldikKLXsKLSAgICBVU0JX YWNvbVN0YXRlICpzID0gKFVTQldhY29tU3RhdGUgKikgZGV2OwotCi0gICAgcy0+ZHggPSAwOwot ICAgIHMtPmR5ID0gMDsKLSAgICBzLT5keiA9IDA7Ci0gICAgcy0+eCA9IDA7Ci0gICAgcy0+eSA9 IDA7Ci0gICAgcy0+YnV0dG9uc19zdGF0ZSA9IDA7Ci0gICAgcy0+bW9kZSA9IFdBQ09NX01PREVf SElEOwotfQotCi1zdGF0aWMgaW50IHVzYl93YWNvbV9oYW5kbGVfY29udHJvbChVU0JEZXZpY2Ug KmRldiwgaW50IHJlcXVlc3QsIGludCB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludCBpbmRleCwgaW50IGxlbmd0aCwgdWludDhfdCAqZGF0YSkKLXsKLSAgICBV U0JXYWNvbVN0YXRlICpzID0gKFVTQldhY29tU3RhdGUgKikgZGV2OwotICAgIGludCByZXQgPSAw OwotCi0gICAgc3dpdGNoIChyZXF1ZXN0KSB7Ci0gICAgY2FzZSBEZXZpY2VSZXF1ZXN0IHwgVVNC X1JFUV9HRVRfU1RBVFVTOgotICAgICAgICBkYXRhWzBdID0gKDEgPDwgVVNCX0RFVklDRV9TRUxG X1BPV0VSRUQpIHwKLSAgICAgICAgICAgIChkZXYtPnJlbW90ZV93YWtldXAgPDwgVVNCX0RFVklD RV9SRU1PVEVfV0FLRVVQKTsKLSAgICAgICAgZGF0YVsxXSA9IDB4MDA7Ci0gICAgICAgIHJldCA9 IDI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGV2aWNlT3V0UmVxdWVzdCB8IFVTQl9SRVFf Q0xFQVJfRkVBVFVSRToKLSAgICAgICAgaWYgKHZhbHVlID09IFVTQl9ERVZJQ0VfUkVNT1RFX1dB S0VVUCkgewotICAgICAgICAgICAgZGV2LT5yZW1vdGVfd2FrZXVwID0gMDsKLSAgICAgICAgfSBl bHNlIHsKLSAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgfQotICAgICAgICByZXQgPSAw OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIERldmljZU91dFJlcXVlc3QgfCBVU0JfUkVRX1NF VF9GRUFUVVJFOgotICAgICAgICBpZiAodmFsdWUgPT0gVVNCX0RFVklDRV9SRU1PVEVfV0FLRVVQ KSB7Ci0gICAgICAgICAgICBkZXYtPnJlbW90ZV93YWtldXAgPSAxOwotICAgICAgICB9IGVsc2Ug ewotICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICB9Ci0gICAgICAgIHJldCA9IDA7Ci0g ICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGV2aWNlT3V0UmVxdWVzdCB8IFVTQl9SRVFfU0VUX0FE RFJFU1M6Ci0gICAgICAgIGRldi0+YWRkciA9IHZhbHVlOwotICAgICAgICByZXQgPSAwOwotICAg ICAgICBicmVhazsKLSAgICBjYXNlIERldmljZVJlcXVlc3QgfCBVU0JfUkVRX0dFVF9ERVNDUklQ VE9SOgotICAgICAgICBzd2l0Y2ggKHZhbHVlID4+IDgpIHsKLSAgICAgICAgY2FzZSBVU0JfRFRf REVWSUNFOgotICAgICAgICAgICAgbWVtY3B5KGRhdGEsIHFlbXVfd2Fjb21fZGV2X2Rlc2NyaXB0 b3IsCi0gICAgICAgICAgICAgICAgICAgc2l6ZW9mKHFlbXVfd2Fjb21fZGV2X2Rlc2NyaXB0b3Ip KTsKLSAgICAgICAgICAgIHJldCA9IHNpemVvZihxZW11X3dhY29tX2Rldl9kZXNjcmlwdG9yKTsK LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFVTQl9EVF9DT05GSUc6Ci0gICAgICAg CSAgICBtZW1jcHkoZGF0YSwgcWVtdV93YWNvbV9jb25maWdfZGVzY3JpcHRvciwKLSAgICAgICAg ICAgICAgICAgICBzaXplb2YocWVtdV93YWNvbV9jb25maWdfZGVzY3JpcHRvcikpOwotICAgICAg ICAgICAgcmV0ID0gc2l6ZW9mKHFlbXVfd2Fjb21fY29uZmlnX2Rlc2NyaXB0b3IpOwotICAgICAg ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVVNCX0RUX1NUUklORzoKLSAgICAgICAgICAgIHN3 aXRjaCAodmFsdWUgJiAweGZmKSB7Ci0gICAgICAgICAgICBjYXNlIDA6Ci0gICAgICAgICAgICAg ICAgLyogbGFuZ3VhZ2UgaWRzICovCi0gICAgICAgICAgICAgICAgZGF0YVswXSA9IDQ7Ci0gICAg ICAgICAgICAgICAgZGF0YVsxXSA9IDM7Ci0gICAgICAgICAgICAgICAgZGF0YVsyXSA9IDB4MDk7 Ci0gICAgICAgICAgICAgICAgZGF0YVszXSA9IDB4MDQ7Ci0gICAgICAgICAgICAgICAgcmV0ID0g NDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgMToKLSAgICAgICAg ICAgICAgICAvKiBzZXJpYWwgbnVtYmVyICovCi0gICAgICAgICAgICAgICAgcmV0ID0gc2V0X3Vz Yl9zdHJpbmcoZGF0YSwgIjEiKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg IGNhc2UgMjoKLQkJcmV0ID0gc2V0X3VzYl9zdHJpbmcoZGF0YSwgIldhY29tIFBlblBhcnRuZXIi KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgMzoKLSAgICAgICAg ICAgICAgICAvKiB2ZW5kb3IgZGVzY3JpcHRpb24gKi8KLSAgICAgICAgICAgICAgICByZXQgPSBz ZXRfdXNiX3N0cmluZyhkYXRhLCAiUUVNVSAiIFFFTVVfVkVSU0lPTik7Ci0gICAgICAgICAgICAg ICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICAgICAgcmV0ID0gc2V0 X3VzYl9zdHJpbmcoZGF0YSwgIldhY29tIFRhYmxldCIpOwotICAgICAgICAgICAgICAgIGJyZWFr OwotICAgICAgICAgICAgY2FzZSA1OgotICAgICAgICAgICAgICAgIHJldCA9IHNldF91c2Jfc3Ry aW5nKGRhdGEsICJFbmRwb2ludDEgSW50ZXJydXB0IFBpcGUiKTsKLSAgICAgICAgICAgICAgICBi cmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgZ290byBmYWlsOwot ICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAg ICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBE ZXZpY2VSZXF1ZXN0IHwgVVNCX1JFUV9HRVRfQ09ORklHVVJBVElPTjoKLSAgICAgICAgZGF0YVsw XSA9IDE7Ci0gICAgICAgIHJldCA9IDE7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGV2aWNl T3V0UmVxdWVzdCB8IFVTQl9SRVFfU0VUX0NPTkZJR1VSQVRJT046Ci0gICAgICAgIHJldCA9IDA7 Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGV2aWNlUmVxdWVzdCB8IFVTQl9SRVFfR0VUX0lO VEVSRkFDRToKLSAgICAgICAgZGF0YVswXSA9IDA7Ci0gICAgICAgIHJldCA9IDE7Ci0gICAgICAg IGJyZWFrOwotICAgIGNhc2UgRGV2aWNlT3V0UmVxdWVzdCB8IFVTQl9SRVFfU0VUX0lOVEVSRkFD RToKLSAgICAgICAgcmV0ID0gMDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXQUNPTV9TRVRf UkVQT1JUOgotICAgICAgICBxZW11X3JlbW92ZV9tb3VzZV9ldmVudF9oYW5kbGVyKHMtPmVoX2Vu dHJ5KTsKLSAgICAgICAgcy0+bW91c2VfZ3JhYmJlZCA9IDA7Ci0gICAgICAgIHMtPm1vZGUgPSBk YXRhWzBdOwotICAgICAgICByZXQgPSAwOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFdBQ09N X0dFVF9SRVBPUlQ6Ci0gICAgICAgIGRhdGFbMF0gPSAwOwotICAgICAgICBkYXRhWzFdID0gcy0+ bW9kZTsKLSAgICAgICAgcmV0ID0gMjsKLSAgICAgICAgYnJlYWs7Ci0gICAgLyogVVNCIEhJRCBy ZXF1ZXN0cyAqLwotICAgIGNhc2UgSElEX0dFVF9SRVBPUlQ6Ci0gICAgICAgIGlmIChzLT5tb2Rl ID09IFdBQ09NX01PREVfSElEKQotICAgICAgICAgICAgcmV0ID0gdXNiX21vdXNlX3BvbGwocywg ZGF0YSwgbGVuZ3RoKTsKLSAgICAgICAgZWxzZSBpZiAocy0+bW9kZSA9PSBXQUNPTV9NT0RFX1dB Q09NKQotICAgICAgICAgICAgcmV0ID0gdXNiX3dhY29tX3BvbGwocywgZGF0YSwgbGVuZ3RoKTsK LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBISURfU0VUX0lETEU6Ci0gICAgICAgIHJldCA9IDA7 Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgZmFpbDoKLSAgICAgICAgcmV0ID0g VVNCX1JFVF9TVEFMTDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiByZXQ7Ci19 Ci0KLXN0YXRpYyBpbnQgdXNiX3dhY29tX2hhbmRsZV9kYXRhKFVTQkRldmljZSAqZGV2LCBVU0JQ YWNrZXQgKnApCi17Ci0gICAgVVNCV2Fjb21TdGF0ZSAqcyA9IChVU0JXYWNvbVN0YXRlICopIGRl djsKLSAgICBpbnQgcmV0ID0gMDsKLQotICAgIHN3aXRjaCAocC0+cGlkKSB7Ci0gICAgY2FzZSBV U0JfVE9LRU5fSU46Ci0gICAgICAgIGlmIChwLT5kZXZlcCA9PSAxKSB7Ci0gICAgICAgICAgICBp ZiAocy0+bW9kZSA9PSBXQUNPTV9NT0RFX0hJRCkKLSAgICAgICAgICAgICAgICByZXQgPSB1c2Jf bW91c2VfcG9sbChzLCBwLT5kYXRhLCBwLT5sZW4pOwotICAgICAgICAgICAgZWxzZSBpZiAocy0+ bW9kZSA9PSBXQUNPTV9NT0RFX1dBQ09NKQotICAgICAgICAgICAgICAgIHJldCA9IHVzYl93YWNv bV9wb2xsKHMsIHAtPmRhdGEsIHAtPmxlbik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg fQotICAgICAgICAvKiBGYWxsIHRocm91Z2guICAqLwotICAgIGNhc2UgVVNCX1RPS0VOX09VVDoK LSAgICBkZWZhdWx0OgotICAgICAgICByZXQgPSBVU0JfUkVUX1NUQUxMOwotICAgICAgICBicmVh azsKLSAgICB9Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIHZvaWQgdXNiX3dhY29tX2hh bmRsZV9kZXN0cm95KFVTQkRldmljZSAqZGV2KQotewotICAgIFVTQldhY29tU3RhdGUgKnMgPSAo VVNCV2Fjb21TdGF0ZSAqKSBkZXY7Ci0KLSAgICBxZW11X3JlbW92ZV9tb3VzZV9ldmVudF9oYW5k bGVyKHMtPmVoX2VudHJ5KTsKLSAgICBxZW11X2ZyZWUocyk7Ci19Ci0KLVVTQkRldmljZSAqdXNi X3dhY29tX2luaXQodm9pZCkKLXsKLSAgICBVU0JXYWNvbVN0YXRlICpzOwotCi0gICAgcyA9IHFl bXVfbWFsbG9jeihzaXplb2YoVVNCV2Fjb21TdGF0ZSkpOwotICAgIHMtPmRldi5zcGVlZCA9IFVT Ql9TUEVFRF9GVUxMOwotICAgIHMtPmRldi5oYW5kbGVfcGFja2V0ID0gdXNiX2dlbmVyaWNfaGFu ZGxlX3BhY2tldDsKLQotICAgIHMtPmRldi5oYW5kbGVfcmVzZXQgPSB1c2Jfd2Fjb21faGFuZGxl X3Jlc2V0OwotICAgIHMtPmRldi5oYW5kbGVfY29udHJvbCA9IHVzYl93YWNvbV9oYW5kbGVfY29u dHJvbDsKLSAgICBzLT5kZXYuaGFuZGxlX2RhdGEgPSB1c2Jfd2Fjb21faGFuZGxlX2RhdGE7Ci0g ICAgcy0+ZGV2LmhhbmRsZV9kZXN0cm95ID0gdXNiX3dhY29tX2hhbmRsZV9kZXN0cm95OwotCi0g ICAgcHN0cmNweShzLT5kZXYuZGV2bmFtZSwgc2l6ZW9mKHMtPmRldi5kZXZuYW1lKSwKLSAgICAg ICAgICAgICJRRU1VIFBlblBhcnRuZXIgVGFibGV0Iik7Ci0KLSAgICByZXR1cm4gKFVTQkRldmlj ZSAqKSBzOwotfQotLSAKMS40LjQuNAoK ------------Zoidberg-BeMail-temp----------