From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.7 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2FD98C433DB for ; Thu, 14 Jan 2021 09:05:46 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C752B221EF for ; Thu, 14 Jan 2021 09:05:45 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C752B221EF Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 2FE196E09C; Thu, 14 Jan 2021 09:05:45 +0000 (UTC) Received: from us-smtp-delivery-44.mimecast.com (us-smtp-delivery-44.mimecast.com [205.139.111.44]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7220B6E09F for ; Thu, 14 Jan 2021 09:05:40 +0000 (UTC) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-546-sNx4_7M5OlCVmDok2X2lOQ-1; Thu, 14 Jan 2021 04:05:35 -0500 X-MC-Unique: sNx4_7M5OlCVmDok2X2lOQ-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id BF715806661 for ; Thu, 14 Jan 2021 09:05:34 +0000 (UTC) Received: from dreadlord-bne-redhat-com.bne.redhat.com (unknown [10.64.32.209]) by smtp.corp.redhat.com (Postfix) with ESMTP id C6676100164C; Thu, 14 Jan 2021 09:05:33 +0000 (UTC) From: Dave Airlie To: intel-gfx@lists.freedesktop.org Date: Thu, 14 Jan 2021 19:05:15 +1000 Message-Id: <20210114090522.22750-5-airlied@gmail.com> In-Reply-To: <20210114090522.22750-1-airlied@gmail.com> References: <20210114090522.22750-1-airlied@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: gmail.com Subject: [Intel-gfx] [PATCH 04/11] drm/i915: refactor ddi translations into a separate file X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Dave Airlie Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" RnJvbTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KClZpbGxlIHN1Z2dlc3RlZCB0 aGlzLCB0aGVzZSB0YWJsZXMgYXJlIHByb2JhYmx5IGJldHRlciBiZWluZwpzdGFuZGFsb25lLgoK VGhpcyBmaXhlcyB1cCB0aGUgY25sL2J4dCBpbnRlcmZhY2VzIHRvIGJlIGxpa2UgdGhlIG90aGVy cywKdGhlIGludGVsIG9uZSBJIGxlZnQgYWxvbmUgc2luY2UgaXQgaGFzIGEgZmV3IGV4dHJhIGVu dHJ5cG9pbnRzLgoKU2lnbmVkLW9mZi1ieTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNv bT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAg ICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMgICAgICB8IDE0 MTcgKy0tLS0tLS0tLS0tLS0tLS0KIC4uLi9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaV9idWZf dHJhbnMuYyAgICB8IDEzNTggKysrKysrKysrKysrKysrKwogLi4uL2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZGRpX2J1Zl90cmFucy5oICAgIHwgICA5OSArKwogNCBmaWxlcyBjaGFuZ2VkLCAxNDcw IGluc2VydGlvbnMoKyksIDE0MDUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGlfYnVmX3RyYW5zLmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaV9idWZfdHJh bnMuaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKaW5kZXggMzJhMDQxNjA5ZGY2Li5lMzRlMWI2MDA2Y2Ug MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L01ha2VmaWxlCkBAIC0yMzcsNiArMjM3LDcgQEAgaTkxNS15ICs9IFwKIAlk aXNwbGF5L2ljbF9kc2kubyBcCiAJZGlzcGxheS9pbnRlbF9jcnQubyBcCiAJZGlzcGxheS9pbnRl bF9kZGkubyBcCisJZGlzcGxheS9pbnRlbF9kZGlfYnVmX3RyYW5zLm8gXAogCWRpc3BsYXkvaW50 ZWxfZHAubyBcCiAJZGlzcGxheS9pbnRlbF9kcF9hdXhfYmFja2xpZ2h0Lm8gXAogCWRpc3BsYXkv aW50ZWxfZHBfaGRjcC5vIFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZGRpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5j CmluZGV4IDQ5Y2Y3NmE5YjRjNi4uZmIzYTI5ODk3ZTU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZGRpLmMKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJpbnRlbF9j b21ib19waHkuaCIKICNpbmNsdWRlICJpbnRlbF9jb25uZWN0b3IuaCIKICNpbmNsdWRlICJpbnRl bF9kZGkuaCIKKyNpbmNsdWRlICJpbnRlbF9kZGlfYnVmX3RyYW5zLmgiCiAjaW5jbHVkZSAiaW50 ZWxfZGlzcGxheV90eXBlcy5oIgogI2luY2x1ZGUgImludGVsX2RwLmgiCiAjaW5jbHVkZSAiaW50 ZWxfZHBfbXN0LmgiCkBAIC01MSwxMiArNTIsNiBAQAogI2luY2x1ZGUgImludGVsX3RjLmgiCiAj aW5jbHVkZSAiaW50ZWxfdmRzYy5oIgogCi1zdHJ1Y3QgZGRpX2J1Zl90cmFucyB7Ci0JdTMyIHRy YW5zMTsJLyogYmFsYW5jZSBsZWcgZW5hYmxlLCBkZS1lbXBoIGxldmVsICovCi0JdTMyIHRyYW5z MjsJLyogdnJlZiBzZWwsIHZzd2luZyAqLwotCXU4IGlfYm9vc3Q7CS8qIFNLTDogSV9ib29zdDsg dmFsaWQ6IDB4MCwgMHgxLCAweDMsIDB4NyAqLwotfTsKLQogc3RhdGljIGNvbnN0IHU4IGluZGV4 X3RvX2RwX3NpZ25hbF9sZXZlbHNbXSA9IHsKIAlbMF0gPSBEUF9UUkFJTl9WT0xUQUdFX1NXSU5H X0xFVkVMXzAgfCBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8wLAogCVsxXSA9IERQX1RSQUlOX1ZP TFRBR0VfU1dJTkdfTEVWRUxfMCB8IERQX1RSQUlOX1BSRV9FTVBIX0xFVkVMXzEsCkBAIC03MCwx Mzg5ICs2NSwxNSBAQCBzdGF0aWMgY29uc3QgdTggaW5kZXhfdG9fZHBfc2lnbmFsX2xldmVsc1td ID0gewogCVs5XSA9IERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMyB8IERQX1RSQUlOX1BS RV9FTVBIX0xFVkVMXzAsCiB9OwogCi0vKiBIRE1JL0RWSSBtb2RlcyBpZ25vcmUgZXZlcnl0aGlu ZyBidXQgdGhlIGxhc3QgMiBpdGVtcy4gU28gd2Ugc2hhcmUKLSAqIHRoZW0gZm9yIGJvdGggRFAg YW5kIEZESSB0cmFuc3BvcnRzLCBhbGxvd2luZyB0aG9zZSBwb3J0cyB0bwotICogYXV0b21hdGlj YWxseSBhZGFwdCB0byBIRE1JIGNvbm5lY3Rpb25zIGFzIHdlbGwKLSAqLwotc3RhdGljIGNvbnN0 IHN0cnVjdCBkZGlfYnVmX3RyYW5zIGhzd19kZGlfdHJhbnNsYXRpb25zX2RwW10gPSB7Ci0JeyAw eDAwRkZGRkZGLCAweDAwMDYwMDBFLCAweDAgfSwKLQl7IDB4MDBENzVGRkYsIDB4MDAwNTAwMEEs IDB4MCB9LAotCXsgMHgwMEMzMEZGRiwgMHgwMDA0MDAwNiwgMHgwIH0sCi0JeyAweDgwQUFBRkZG LCAweDAwMEIwMDAwLCAweDAgfSwKLQl7IDB4MDBGRkZGRkYsIDB4MDAwNTAwMEEsIDB4MCB9LAot CXsgMHgwMEQ3NUZGRiwgMHgwMDBDMDAwNCwgMHgwIH0sCi0JeyAweDgwQzMwRkZGLCAweDAwMEIw MDAwLCAweDAgfSwKLQl7IDB4MDBGRkZGRkYsIDB4MDAwNDAwMDYsIDB4MCB9LAotCXsgMHg4MEQ3 NUZGRiwgMHgwMDBCMDAwMCwgMHgwIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9i dWZfdHJhbnMgaHN3X2RkaV90cmFuc2xhdGlvbnNfZmRpW10gPSB7Ci0JeyAweDAwRkZGRkZGLCAw eDAwMDcwMDBFLCAweDAgfSwKLQl7IDB4MDBENzVGRkYsIDB4MDAwRjAwMEEsIDB4MCB9LAotCXsg MHgwMEMzMEZGRiwgMHgwMDA2MDAwNiwgMHgwIH0sCi0JeyAweDAwQUFBRkZGLCAweDAwMUUwMDAw LCAweDAgfSwKLQl7IDB4MDBGRkZGRkYsIDB4MDAwRjAwMEEsIDB4MCB9LAotCXsgMHgwMEQ3NUZG RiwgMHgwMDE2MDAwNCwgMHgwIH0sCi0JeyAweDAwQzMwRkZGLCAweDAwMUUwMDAwLCAweDAgfSwK LQl7IDB4MDBGRkZGRkYsIDB4MDAwNjAwMDYsIDB4MCB9LAotCXsgMHgwMEQ3NUZGRiwgMHgwMDFF MDAwMCwgMHgwIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgaHN3 X2RkaV90cmFuc2xhdGlvbnNfaGRtaVtdID0gewotCQkJCQkvKiBJZHgJTlQgbVYgZAlUIG1WIGQJ ZGIJKi8KLQl7IDB4MDBGRkZGRkYsIDB4MDAwNjAwMEUsIDB4MCB9LC8qIDA6CTQwMAk0MDAJMAkq LwotCXsgMHgwMEU3OUZGRiwgMHgwMDBFMDAwQywgMHgwIH0sLyogMToJNDAwCTUwMAkyCSovCi0J eyAweDAwRDc1RkZGLCAweDAwMDUwMDBBLCAweDAgfSwvKiAyOgk0MDAJNjAwCTMuNQkqLwotCXsg MHgwMEZGRkZGRiwgMHgwMDA1MDAwQSwgMHgwIH0sLyogMzoJNjAwCTYwMAkwCSovCi0JeyAweDAw RTc5RkZGLCAweDAwMUQwMDA3LCAweDAgfSwvKiA0Ogk2MDAJNzUwCTIJKi8KLQl7IDB4MDBENzVG RkYsIDB4MDAwQzAwMDQsIDB4MCB9LC8qIDU6CTYwMAk5MDAJMy41CSovCi0JeyAweDAwRkZGRkZG LCAweDAwMDQwMDA2LCAweDAgfSwvKiA2Ogk4MDAJODAwCTAJKi8KLQl7IDB4ODBFNzlGRkYsIDB4 MDAwMzAwMDIsIDB4MCB9LC8qIDc6CTgwMAkxMDAwCTIJKi8KLQl7IDB4MDBGRkZGRkYsIDB4MDAx NDAwMDUsIDB4MCB9LC8qIDg6CTg1MAk4NTAJMAkqLwotCXsgMHgwMEZGRkZGRiwgMHgwMDBDMDAw NCwgMHgwIH0sLyogOToJOTAwCTkwMAkwCSovCi0JeyAweDAwRkZGRkZGLCAweDAwMUMwMDAzLCAw eDAgfSwvKiAxMDoJOTUwCTk1MAkwCSovCi0JeyAweDgwRkZGRkZGLCAweDAwMDMwMDAyLCAweDAg fSwvKiAxMToJMTAwMAkxMDAwCTAJKi8KLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1 Zl90cmFucyBiZHdfZGRpX3RyYW5zbGF0aW9uc19lZHBbXSA9IHsKLQl7IDB4MDBGRkZGRkYsIDB4 MDAwMDAwMTIsIDB4MCB9LAotCXsgMHgwMEVCQUZGRiwgMHgwMDAyMDAxMSwgMHgwIH0sCi0JeyAw eDAwQzcxRkZGLCAweDAwMDYwMDBGLCAweDAgfSwKLQl7IDB4MDBBQUFGRkYsIDB4MDAwRTAwMEEs IDB4MCB9LAotCXsgMHgwMEZGRkZGRiwgMHgwMDAyMDAxMSwgMHgwIH0sCi0JeyAweDAwREI2RkZG LCAweDAwMDUwMDBGLCAweDAgfSwKLQl7IDB4MDBCRUVGRkYsIDB4MDAwQTAwMEMsIDB4MCB9LAot CXsgMHgwMEZGRkZGRiwgMHgwMDA1MDAwRiwgMHgwIH0sCi0JeyAweDAwREI2RkZGLCAweDAwMEEw MDBDLCAweDAgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBiZHdf ZGRpX3RyYW5zbGF0aW9uc19kcFtdID0gewotCXsgMHgwMEZGRkZGRiwgMHgwMDA3MDAwRSwgMHgw IH0sCi0JeyAweDAwRDc1RkZGLCAweDAwMEUwMDBBLCAweDAgfSwKLQl7IDB4MDBCRUZGRkYsIDB4 MDAxNDAwMDYsIDB4MCB9LAotCXsgMHg4MEIyQ0ZGRiwgMHgwMDFCMDAwMiwgMHgwIH0sCi0JeyAw eDAwRkZGRkZGLCAweDAwMEUwMDBBLCAweDAgfSwKLQl7IDB4MDBEQjZGRkYsIDB4MDAxNjAwMDUs IDB4MCB9LAotCXsgMHg4MEM3MUZGRiwgMHgwMDFBMDAwMiwgMHgwIH0sCi0JeyAweDAwRjdERkZG LCAweDAwMTgwMDA0LCAweDAgfSwKLQl7IDB4ODBENzVGRkYsIDB4MDAxQjAwMDIsIDB4MCB9LAot fTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIGJkd19kZGlfdHJhbnNsYXRp b25zX2ZkaVtdID0gewotCXsgMHgwMEZGRkZGRiwgMHgwMDAxMDAwRSwgMHgwIH0sCi0JeyAweDAw RDc1RkZGLCAweDAwMDQwMDBBLCAweDAgfSwKLQl7IDB4MDBDMzBGRkYsIDB4MDAwNzAwMDYsIDB4 MCB9LAotCXsgMHgwMEFBQUZGRiwgMHgwMDBDMDAwMCwgMHgwIH0sCi0JeyAweDAwRkZGRkZGLCAw eDAwMDQwMDBBLCAweDAgfSwKLQl7IDB4MDBENzVGRkYsIDB4MDAwOTAwMDQsIDB4MCB9LAotCXsg MHgwMEMzMEZGRiwgMHgwMDBDMDAwMCwgMHgwIH0sCi0JeyAweDAwRkZGRkZGLCAweDAwMDcwMDA2 LCAweDAgfSwKLQl7IDB4MDBENzVGRkYsIDB4MDAwQzAwMDAsIDB4MCB9LAotfTsKLQotc3RhdGlj IGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIGJkd19kZGlfdHJhbnNsYXRpb25zX2hkbWlbXSA9 IHsKLQkJCQkJLyogSWR4CU5UIG1WIGQJVCBtViBkZglkYgkqLwotCXsgMHgwMEZGRkZGRiwgMHgw MDA3MDAwRSwgMHgwIH0sLyogMDoJNDAwCTQwMAkwCSovCi0JeyAweDAwRDc1RkZGLCAweDAwMEUw MDBBLCAweDAgfSwvKiAxOgk0MDAJNjAwCTMuNQkqLwotCXsgMHgwMEJFRkZGRiwgMHgwMDE0MDAw NiwgMHgwIH0sLyogMjoJNDAwCTgwMAk2CSovCi0JeyAweDAwRkZGRkZGLCAweDAwMDkwMDBELCAw eDAgfSwvKiAzOgk0NTAJNDUwCTAJKi8KLQl7IDB4MDBGRkZGRkYsIDB4MDAwRTAwMEEsIDB4MCB9 LC8qIDQ6CTYwMAk2MDAJMAkqLwotCXsgMHgwMEQ3RkZGRiwgMHgwMDE0MDAwNiwgMHgwIH0sLyog NToJNjAwCTgwMAkyLjUJKi8KLQl7IDB4ODBDQjJGRkYsIDB4MDAxQjAwMDIsIDB4MCB9LC8qIDY6 CTYwMAkxMDAwCTQuNQkqLwotCXsgMHgwMEZGRkZGRiwgMHgwMDE0MDAwNiwgMHgwIH0sLyogNzoJ ODAwCTgwMAkwCSovCi0JeyAweDgwRTc5RkZGLCAweDAwMUIwMDAyLCAweDAgfSwvKiA4Ogk4MDAJ MTAwMAkyCSovCi0JeyAweDgwRkZGRkZGLCAweDAwMUIwMDAyLCAweDAgfSwvKiA5OgkxMDAwCTEw MDAJMAkqLwotfTsKLQotLyogU2t5bGFrZSBIIGFuZCBTICovCi1zdGF0aWMgY29uc3Qgc3RydWN0 IGRkaV9idWZfdHJhbnMgc2tsX2RkaV90cmFuc2xhdGlvbnNfZHBbXSA9IHsKLQl7IDB4MDAwMDIw MTYsIDB4MDAwMDAwQTAsIDB4MCB9LAotCXsgMHgwMDAwNTAxMiwgMHgwMDAwMDA5QiwgMHgwIH0s Ci0JeyAweDAwMDA3MDExLCAweDAwMDAwMDg4LCAweDAgfSwKLQl7IDB4ODAwMDkwMTAsIDB4MDAw MDAwQzAsIDB4MSB9LAotCXsgMHgwMDAwMjAxNiwgMHgwMDAwMDA5QiwgMHgwIH0sCi0JeyAweDAw MDA1MDEyLCAweDAwMDAwMDg4LCAweDAgfSwKLQl7IDB4ODAwMDcwMTEsIDB4MDAwMDAwQzAsIDB4 MSB9LAotCXsgMHgwMDAwMjAxNiwgMHgwMDAwMDBERiwgMHgwIH0sCi0JeyAweDgwMDA1MDEyLCAw eDAwMDAwMEMwLCAweDEgfSwKLX07Ci0KLS8qIFNreWxha2UgVSAqLwotc3RhdGljIGNvbnN0IHN0 cnVjdCBkZGlfYnVmX3RyYW5zIHNrbF91X2RkaV90cmFuc2xhdGlvbnNfZHBbXSA9IHsKLQl7IDB4 MDAwMDIwMUIsIDB4MDAwMDAwQTIsIDB4MCB9LAotCXsgMHgwMDAwNTAxMiwgMHgwMDAwMDA4OCwg MHgwIH0sCi0JeyAweDgwMDA3MDExLCAweDAwMDAwMENELCAweDEgfSwKLQl7IDB4ODAwMDkwMTAs IDB4MDAwMDAwQzAsIDB4MSB9LAotCXsgMHgwMDAwMjAxQiwgMHgwMDAwMDA5RCwgMHgwIH0sCi0J eyAweDgwMDA1MDEyLCAweDAwMDAwMEMwLCAweDEgfSwKLQl7IDB4ODAwMDcwMTEsIDB4MDAwMDAw QzAsIDB4MSB9LAotCXsgMHgwMDAwMjAxNiwgMHgwMDAwMDA4OCwgMHgwIH0sCi0JeyAweDgwMDA1 MDEyLCAweDAwMDAwMEMwLCAweDEgfSwKLX07Ci0KLS8qIFNreWxha2UgWSAqLwotc3RhdGljIGNv bnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIHNrbF95X2RkaV90cmFuc2xhdGlvbnNfZHBbXSA9IHsK LQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwQTIsIDB4MCB9LAotCXsgMHgwMDAwNTAxMiwgMHgwMDAw MDA4OCwgMHgwIH0sCi0JeyAweDgwMDA3MDExLCAweDAwMDAwMENELCAweDMgfSwKLQl7IDB4ODAw MDkwMTAsIDB4MDAwMDAwQzAsIDB4MyB9LAotCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDA5RCwgMHgw IH0sCi0JeyAweDgwMDA1MDEyLCAweDAwMDAwMEMwLCAweDMgfSwKLQl7IDB4ODAwMDcwMTEsIDB4 MDAwMDAwQzAsIDB4MyB9LAotCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDA4OCwgMHgwIH0sCi0JeyAw eDgwMDA1MDEyLCAweDAwMDAwMEMwLCAweDMgfSwKLX07Ci0KLS8qIEthYnlsYWtlIEggYW5kIFMg Ki8KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBrYmxfZGRpX3RyYW5zbGF0aW9u c19kcFtdID0gewotCXsgMHgwMDAwMjAxNiwgMHgwMDAwMDBBMCwgMHgwIH0sCi0JeyAweDAwMDA1 MDEyLCAweDAwMDAwMDlCLCAweDAgfSwKLQl7IDB4MDAwMDcwMTEsIDB4MDAwMDAwODgsIDB4MCB9 LAotCXsgMHg4MDAwOTAxMCwgMHgwMDAwMDBDMCwgMHgxIH0sCi0JeyAweDAwMDAyMDE2LCAweDAw MDAwMDlCLCAweDAgfSwKLQl7IDB4MDAwMDUwMTIsIDB4MDAwMDAwODgsIDB4MCB9LAotCXsgMHg4 MDAwNzAxMSwgMHgwMDAwMDBDMCwgMHgxIH0sCi0JeyAweDAwMDAyMDE2LCAweDAwMDAwMDk3LCAw eDAgfSwKLQl7IDB4ODAwMDUwMTIsIDB4MDAwMDAwQzAsIDB4MSB9LAotfTsKLQotLyogS2FieWxh a2UgVSAqLwotc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIGtibF91X2RkaV90cmFu c2xhdGlvbnNfZHBbXSA9IHsKLQl7IDB4MDAwMDIwMUIsIDB4MDAwMDAwQTEsIDB4MCB9LAotCXsg MHgwMDAwNTAxMiwgMHgwMDAwMDA4OCwgMHgwIH0sCi0JeyAweDgwMDA3MDExLCAweDAwMDAwMENE LCAweDMgfSwKLQl7IDB4ODAwMDkwMTAsIDB4MDAwMDAwQzAsIDB4MyB9LAotCXsgMHgwMDAwMjAx QiwgMHgwMDAwMDA5RCwgMHgwIH0sCi0JeyAweDgwMDA1MDEyLCAweDAwMDAwMEMwLCAweDMgfSwK LQl7IDB4ODAwMDcwMTEsIDB4MDAwMDAwQzAsIDB4MyB9LAotCXsgMHgwMDAwMjAxNiwgMHgwMDAw MDA0RiwgMHgwIH0sCi0JeyAweDgwMDA1MDEyLCAweDAwMDAwMEMwLCAweDMgfSwKLX07Ci0KLS8q IEthYnlsYWtlIFkgKi8KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBrYmxfeV9k ZGlfdHJhbnNsYXRpb25zX2RwW10gPSB7Ci0JeyAweDAwMDAxMDE3LCAweDAwMDAwMEExLCAweDAg fSwKLQl7IDB4MDAwMDUwMTIsIDB4MDAwMDAwODgsIDB4MCB9LAotCXsgMHg4MDAwNzAxMSwgMHgw MDAwMDBDRCwgMHgzIH0sCi0JeyAweDgwMDA4MDBGLCAweDAwMDAwMEMwLCAweDMgfSwKLQl7IDB4 MDAwMDEwMTcsIDB4MDAwMDAwOUQsIDB4MCB9LAotCXsgMHg4MDAwNTAxMiwgMHgwMDAwMDBDMCwg MHgzIH0sCi0JeyAweDgwMDA3MDExLCAweDAwMDAwMEMwLCAweDMgfSwKLQl7IDB4MDAwMDEwMTcs IDB4MDAwMDAwNEMsIDB4MCB9LAotCXsgMHg4MDAwNTAxMiwgMHgwMDAwMDBDMCwgMHgzIH0sCi19 OwotCi0vKgotICogU2t5bGFrZS9LYWJ5bGFrZSBIIGFuZCBTCi0gKiBlRFAgMS40IGxvdyB2c3dp bmcgdHJhbnNsYXRpb24gcGFyYW1ldGVycwotICovCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9i dWZfdHJhbnMgc2tsX2RkaV90cmFuc2xhdGlvbnNfZWRwW10gPSB7Ci0JeyAweDAwMDAwMDE4LCAw eDAwMDAwMEE4LCAweDAgfSwKLQl7IDB4MDAwMDQwMTMsIDB4MDAwMDAwQTksIDB4MCB9LAotCXsg MHgwMDAwNzAxMSwgMHgwMDAwMDBBMiwgMHgwIH0sCi0JeyAweDAwMDA5MDEwLCAweDAwMDAwMDlD LCAweDAgfSwKLQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwQTksIDB4MCB9LAotCXsgMHgwMDAwNjAx MywgMHgwMDAwMDBBMiwgMHgwIH0sCi0JeyAweDAwMDA3MDExLCAweDAwMDAwMEE2LCAweDAgfSwK LQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwQUIsIDB4MCB9LAotCXsgMHgwMDAwNzAxMywgMHgwMDAw MDA5RiwgMHgwIH0sCi0JeyAweDAwMDAwMDE4LCAweDAwMDAwMERGLCAweDAgfSwKLX07Ci0KLS8q Ci0gKiBTa3lsYWtlL0thYnlsYWtlIFUKLSAqIGVEUCAxLjQgbG93IHZzd2luZyB0cmFuc2xhdGlv biBwYXJhbWV0ZXJzCi0gKi8KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBza2xf dV9kZGlfdHJhbnNsYXRpb25zX2VkcFtdID0gewotCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBOCwg MHgwIH0sCi0JeyAweDAwMDA0MDEzLCAweDAwMDAwMEE5LCAweDAgfSwKLQl7IDB4MDAwMDcwMTEs IDB4MDAwMDAwQTIsIDB4MCB9LAotCXsgMHgwMDAwOTAxMCwgMHgwMDAwMDA5QywgMHgwIH0sCi0J eyAweDAwMDAwMDE4LCAweDAwMDAwMEE5LCAweDAgfSwKLQl7IDB4MDAwMDYwMTMsIDB4MDAwMDAw QTIsIDB4MCB9LAotCXsgMHgwMDAwNzAxMSwgMHgwMDAwMDBBNiwgMHgwIH0sCi0JeyAweDAwMDAy MDE2LCAweDAwMDAwMEFCLCAweDAgfSwKLQl7IDB4MDAwMDUwMTMsIDB4MDAwMDAwOUYsIDB4MCB9 LAotCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBERiwgMHgwIH0sCi19OwotCi0vKgotICogU2t5bGFr ZS9LYWJ5bGFrZSBZCi0gKiBlRFAgMS40IGxvdyB2c3dpbmcgdHJhbnNsYXRpb24gcGFyYW1ldGVy cwotICovCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgc2tsX3lfZGRpX3RyYW5z bGF0aW9uc19lZHBbXSA9IHsKLQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwQTgsIDB4MCB9LAotCXsg MHgwMDAwNDAxMywgMHgwMDAwMDBBQiwgMHgwIH0sCi0JeyAweDAwMDA3MDExLCAweDAwMDAwMEE0 LCAweDAgfSwKLQl7IDB4MDAwMDkwMTAsIDB4MDAwMDAwREYsIDB4MCB9LAotCXsgMHgwMDAwMDAx OCwgMHgwMDAwMDBBQSwgMHgwIH0sCi0JeyAweDAwMDA2MDEzLCAweDAwMDAwMEE0LCAweDAgfSwK LQl7IDB4MDAwMDcwMTEsIDB4MDAwMDAwOUQsIDB4MCB9LAotCXsgMHgwMDAwMDAxOCwgMHgwMDAw MDBBMCwgMHgwIH0sCi0JeyAweDAwMDA2MDEyLCAweDAwMDAwMERGLCAweDAgfSwKLQl7IDB4MDAw MDAwMTgsIDB4MDAwMDAwOEEsIDB4MCB9LAotfTsKLQotLyogU2t5bGFrZS9LYWJ5bGFrZSBVLCBI IGFuZCBTICovCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgc2tsX2RkaV90cmFu c2xhdGlvbnNfaGRtaVtdID0gewotCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBQywgMHgwIH0sCi0J eyAweDAwMDA1MDEyLCAweDAwMDAwMDlELCAweDAgfSwKLQl7IDB4MDAwMDcwMTEsIDB4MDAwMDAw ODgsIDB4MCB9LAotCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBMSwgMHgwIH0sCi0JeyAweDAwMDAw MDE4LCAweDAwMDAwMDk4LCAweDAgfSwKLQl7IDB4MDAwMDQwMTMsIDB4MDAwMDAwODgsIDB4MCB9 LAotCXsgMHg4MDAwNjAxMiwgMHgwMDAwMDBDRCwgMHgxIH0sCi0JeyAweDAwMDAwMDE4LCAweDAw MDAwMERGLCAweDAgfSwKLQl7IDB4ODAwMDMwMTUsIDB4MDAwMDAwQ0QsIDB4MSB9LAkvKiBEZWZh dWx0ICovCi0JeyAweDgwMDAzMDE1LCAweDAwMDAwMEMwLCAweDEgfSwKLQl7IDB4ODAwMDAwMTgs IDB4MDAwMDAwQzAsIDB4MSB9LAotfTsKLQotLyogU2t5bGFrZS9LYWJ5bGFrZSBZICovCi1zdGF0 aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgc2tsX3lfZGRpX3RyYW5zbGF0aW9uc19oZG1p W10gPSB7Ci0JeyAweDAwMDAwMDE4LCAweDAwMDAwMEExLCAweDAgfSwKLQl7IDB4MDAwMDUwMTIs IDB4MDAwMDAwREYsIDB4MCB9LAotCXsgMHg4MDAwNzAxMSwgMHgwMDAwMDBDQiwgMHgzIH0sCi0J eyAweDAwMDAwMDE4LCAweDAwMDAwMEE0LCAweDAgfSwKLQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAw OUQsIDB4MCB9LAotCXsgMHgwMDAwNDAxMywgMHgwMDAwMDA4MCwgMHgwIH0sCi0JeyAweDgwMDA2 MDEzLCAweDAwMDAwMEMwLCAweDMgfSwKLQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwOEEsIDB4MCB9 LAotCXsgMHg4MDAwMzAxNSwgMHgwMDAwMDBDMCwgMHgzIH0sCS8qIERlZmF1bHQgKi8KLQl7IDB4 ODAwMDMwMTUsIDB4MDAwMDAwQzAsIDB4MyB9LAotCXsgMHg4MDAwMDAxOCwgMHgwMDAwMDBDMCwg MHgzIH0sCi19OwotCi1zdHJ1Y3QgYnh0X2RkaV9idWZfdHJhbnMgewotCXU4IG1hcmdpbjsJLyog c3dpbmcgdmFsdWUgKi8KLQl1OCBzY2FsZTsJLyogc2NhbGUgdmFsdWUgKi8KLQl1OCBlbmFibGU7 CS8qIHNjYWxlIGVuYWJsZSAqLwotCXU4IGRlZW1waGFzaXM7Ci19OwotCi1zdGF0aWMgY29uc3Qg c3RydWN0IGJ4dF9kZGlfYnVmX3RyYW5zIGJ4dF9kZGlfdHJhbnNsYXRpb25zX2RwW10gPSB7Ci0J CQkJCS8qIElkeAlOVCBtViBkaWZmCWRiICAqLwotCXsgNTIsICAweDlBLCAwLCAxMjgsIH0sCS8q IDA6CTQwMAkJMCAgICovCi0JeyA3OCwgIDB4OUEsIDAsIDg1LCAgfSwJLyogMToJNDAwCQkzLjUg Ki8KLQl7IDEwNCwgMHg5QSwgMCwgNjQsICB9LAkvKiAyOgk0MDAJCTYgICAqLwotCXsgMTU0LCAw eDlBLCAwLCA0MywgIH0sCS8qIDM6CTQwMAkJOS41ICovCi0JeyA3NywgIDB4OUEsIDAsIDEyOCwg fSwJLyogNDoJNjAwCQkwICAgKi8KLQl7IDExNiwgMHg5QSwgMCwgODUsICB9LAkvKiA1Ogk2MDAJ CTMuNSAqLwotCXsgMTU0LCAweDlBLCAwLCA2NCwgIH0sCS8qIDY6CTYwMAkJNiAgICovCi0JeyAx MDIsIDB4OUEsIDAsIDEyOCwgfSwJLyogNzoJODAwCQkwICAgKi8KLQl7IDE1NCwgMHg5QSwgMCwg ODUsICB9LAkvKiA4Ogk4MDAJCTMuNSAqLwotCXsgMTU0LCAweDlBLCAxLCAxMjgsIH0sCS8qIDk6 CTEyMDAJCTAgICAqLwotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBieHRfZGRpX2J1Zl90cmFu cyBieHRfZGRpX3RyYW5zbGF0aW9uc19lZHBbXSA9IHsKLQkJCQkJLyogSWR4CU5UIG1WIGRpZmYJ ZGIgICovCi0JeyAyNiwgMCwgMCwgMTI4LCB9LAkvKiAwOgkyMDAJCTAgICAqLwotCXsgMzgsIDAs IDAsIDExMiwgfSwJLyogMToJMjAwCQkxLjUgKi8KLQl7IDQ4LCAwLCAwLCA5NiwgIH0sCS8qIDI6 CTIwMAkJNCAgICovCi0JeyA1NCwgMCwgMCwgNjksICB9LAkvKiAzOgkyMDAJCTYgICAqLwotCXsg MzIsIDAsIDAsIDEyOCwgfSwJLyogNDoJMjUwCQkwICAgKi8KLQl7IDQ4LCAwLCAwLCAxMDQsIH0s CS8qIDU6CTI1MAkJMS41ICovCi0JeyA1NCwgMCwgMCwgODUsICB9LAkvKiA2OgkyNTAJCTQgICAq LwotCXsgNDMsIDAsIDAsIDEyOCwgfSwJLyogNzoJMzAwCQkwICAgKi8KLQl7IDU0LCAwLCAwLCAx MDEsIH0sCS8qIDg6CTMwMAkJMS41ICovCi0JeyA0OCwgMCwgMCwgMTI4LCB9LAkvKiA5OgkzMDAJ CTAgICAqLwotfTsKLQotLyogQlNwZWMgaGFzIDIgcmVjb21tZW5kZWQgdmFsdWVzIC0gZW50cmll cyAwIGFuZCA4LgotICogVXNpbmcgdGhlIGVudHJ5IHdpdGggaGlnaGVyIHZzd2luZy4KLSAqLwot c3RhdGljIGNvbnN0IHN0cnVjdCBieHRfZGRpX2J1Zl90cmFucyBieHRfZGRpX3RyYW5zbGF0aW9u c19oZG1pW10gPSB7Ci0JCQkJCS8qIElkeAlOVCBtViBkaWZmCWRiICAqLwotCXsgNTIsICAweDlB LCAwLCAxMjgsIH0sCS8qIDA6CTQwMAkJMCAgICovCi0JeyA1MiwgIDB4OUEsIDAsIDg1LCAgfSwJ LyogMToJNDAwCQkzLjUgKi8KLQl7IDUyLCAgMHg5QSwgMCwgNjQsICB9LAkvKiAyOgk0MDAJCTYg ICAqLwotCXsgNDIsICAweDlBLCAwLCA0MywgIH0sCS8qIDM6CTQwMAkJOS41ICovCi0JeyA3Nywg IDB4OUEsIDAsIDEyOCwgfSwJLyogNDoJNjAwCQkwICAgKi8KLQl7IDc3LCAgMHg5QSwgMCwgODUs ICB9LAkvKiA1Ogk2MDAJCTMuNSAqLwotCXsgNzcsICAweDlBLCAwLCA2NCwgIH0sCS8qIDY6CTYw MAkJNiAgICovCi0JeyAxMDIsIDB4OUEsIDAsIDEyOCwgfSwJLyogNzoJODAwCQkwICAgKi8KLQl7 IDEwMiwgMHg5QSwgMCwgODUsICB9LAkvKiA4Ogk4MDAJCTMuNSAqLwotCXsgMTU0LCAweDlBLCAx LCAxMjgsIH0sCS8qIDk6CTEyMDAJCTAgICAqLwotfTsKLQotc3RydWN0IGNubF9kZGlfYnVmX3Ry YW5zIHsKLQl1OCBkdzJfc3dpbmdfc2VsOwotCXU4IGR3N19uX3NjYWxhcjsKLQl1OCBkdzRfY3Vy c29yX2NvZWZmOwotCXU4IGR3NF9wb3N0X2N1cnNvcl8yOwotCXU4IGR3NF9wb3N0X2N1cnNvcl8x OwotfTsKLQotLyogVm9sdGFnZSBTd2luZyBQcm9ncmFtbWluZyBmb3IgVmNjSU8gMC44NVYgZm9y IERQICovCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGNubF9kZGlfdHJh bnNsYXRpb25zX2RwXzBfODVWW10gPSB7Ci0JCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAq LwotCXsgMHhBLCAweDVELCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDM1MCAgIDM1MCAgICAgIDAu MCAgICovCi0JeyAweEEsIDB4NkEsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMzUwICAgNTAwICAg ICAgMy4xICAgKi8KLQl7IDB4QiwgMHg3QSwgMHgzMiwgMHgwMCwgMHgwRCB9LAkvKiAzNTAgICA3 MDAgICAgICA2LjAgICAqLwotCXsgMHg2LCAweDdDLCAweDJELCAweDAwLCAweDEyIH0sCS8qIDM1 MCAgIDkwMCAgICAgIDguMiAgICovCi0JeyAweEEsIDB4NjksIDB4M0YsIDB4MDAsIDB4MDAgfSwJ LyogNTAwICAgNTAwICAgICAgMC4wICAgKi8KLQl7IDB4QiwgMHg3QSwgMHgzNiwgMHgwMCwgMHgw OSB9LAkvKiA1MDAgICA3MDAgICAgICAyLjkgICAqLwotCXsgMHg2LCAweDdDLCAweDMwLCAweDAw LCAweDBGIH0sCS8qIDUwMCAgIDkwMCAgICAgIDUuMSAgICovCi0JeyAweEIsIDB4N0QsIDB4M0Ms IDB4MDAsIDB4MDMgfSwJLyogNjUwICAgNzI1ICAgICAgMC45ICAgKi8KLQl7IDB4NiwgMHg3Qywg MHgzNCwgMHgwMCwgMHgwQiB9LAkvKiA2MDAgICA5MDAgICAgICAzLjUgICAqLwotCXsgMHg2LCAw eDdCLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDkwMCAgIDkwMCAgICAgIDAuMCAgICovCi19Owot Ci0vKiBWb2x0YWdlIFN3aW5nIFByb2dyYW1taW5nIGZvciBWY2NJTyAwLjg1ViBmb3IgSERNSSAq Lwotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBjbmxfZGRpX3RyYW5zbGF0 aW9uc19oZG1pXzBfODVWW10gPSB7Ci0JCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwot CXsgMHhBLCAweDYwLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDQ1MCAgIDQ1MCAgICAgIDAuMCAg ICovCi0JeyAweEIsIDB4NzMsIDB4MzYsIDB4MDAsIDB4MDkgfSwJLyogNDUwICAgNjUwICAgICAg My4yICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgzMSwgMHgwMCwgMHgwRSB9LAkvKiA0NTAgICA4NTAg ICAgICA1LjUgICAqLwotCXsgMHhCLCAweDczLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDY1MCAg IDY1MCAgICAgIDAuMCAgICovCi0JeyAweDYsIDB4N0YsIDB4MzcsIDB4MDAsIDB4MDggfSwJLyog NjUwICAgODUwICAgICAgMi4zICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9 LAkvKiA4NTAgICA4NTAgICAgICAwLjAgICAqLwotCXsgMHg2LCAweDdGLCAweDM1LCAweDAwLCAw eDBBIH0sCS8qIDYwMCAgIDg1MCAgICAgIDMuMCAgICovCi19OwotCi0vKiBWb2x0YWdlIFN3aW5n IFByb2dyYW1taW5nIGZvciBWY2NJTyAwLjg1ViBmb3IgZURQICovCi1zdGF0aWMgY29uc3Qgc3Ry dWN0IGNubF9kZGlfYnVmX3RyYW5zIGNubF9kZGlfdHJhbnNsYXRpb25zX2VkcF8wXzg1VltdID0g ewotCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KLQl7IDB4QSwgMHg2NiwgMHgzQSwg MHgwMCwgMHgwNSB9LAkvKiAzODQgICA1MDAgICAgICAyLjMgICAqLwotCXsgMHgwLCAweDdGLCAw eDM4LCAweDAwLCAweDA3IH0sCS8qIDE1MyAgIDIwMCAgICAgIDIuMyAgICovCi0JeyAweDgsIDB4 N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMTkyICAgMjUwICAgICAgMi4zICAgKi8KLQl7IDB4 MSwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAyMzAgICAzMDAgICAgICAyLjMgICAqLwot CXsgMHg5LCAweDdGLCAweDM4LCAweDAwLCAweDA3IH0sCS8qIDI2OSAgIDM1MCAgICAgIDIuMyAg ICovCi0JeyAweEEsIDB4NjYsIDB4M0MsIDB4MDAsIDB4MDMgfSwJLyogNDQ2ICAgNTAwICAgICAg MS4wICAgKi8KLQl7IDB4QiwgMHg3MCwgMHgzQywgMHgwMCwgMHgwMyB9LAkvKiA0NjAgICA2MDAg ICAgICAyLjMgICAqLwotCXsgMHhDLCAweDc1LCAweDNDLCAweDAwLCAweDAzIH0sCS8qIDUzNyAg IDcwMCAgICAgIDIuMyAgICovCi0JeyAweDIsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyog NDAwICAgNDAwICAgICAgMC4wICAgKi8KLX07Ci0KLS8qIFZvbHRhZ2UgU3dpbmcgUHJvZ3JhbW1p bmcgZm9yIFZjY0lPIDAuOTVWIGZvciBEUCAqLwotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRp X2J1Zl90cmFucyBjbmxfZGRpX3RyYW5zbGF0aW9uc19kcF8wXzk1VltdID0gewotCQkJCQkJLyog TlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KLQl7IDB4QSwgMHg1RCwgMHgzRiwgMHgwMCwgMHgwMCB9 LAkvKiAzNTAgICAzNTAgICAgICAwLjAgICAqLwotCXsgMHhBLCAweDZBLCAweDM4LCAweDAwLCAw eDA3IH0sCS8qIDM1MCAgIDUwMCAgICAgIDMuMSAgICovCi0JeyAweEIsIDB4N0EsIDB4MzIsIDB4 MDAsIDB4MEQgfSwJLyogMzUwICAgNzAwICAgICAgNi4wICAgKi8KLQl7IDB4NiwgMHg3QywgMHgy RCwgMHgwMCwgMHgxMiB9LAkvKiAzNTAgICA5MDAgICAgICA4LjIgICAqLwotCXsgMHhBLCAweDY5 LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDUwMCAgIDUwMCAgICAgIDAuMCAgICovCi0JeyAweEIs IDB4N0EsIDB4MzYsIDB4MDAsIDB4MDkgfSwJLyogNTAwICAgNzAwICAgICAgMi45ICAgKi8KLQl7 IDB4NiwgMHg3QywgMHgzMCwgMHgwMCwgMHgwRiB9LAkvKiA1MDAgICA5MDAgICAgICA1LjEgICAq LwotCXsgMHhCLCAweDdELCAweDNDLCAweDAwLCAweDAzIH0sCS8qIDY1MCAgIDcyNSAgICAgIDAu OSAgICovCi0JeyAweDYsIDB4N0MsIDB4MzQsIDB4MDAsIDB4MEIgfSwJLyogNjAwICAgOTAwICAg ICAgMy41ICAgKi8KLQl7IDB4NiwgMHg3QiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA5MDAgICA5 MDAgICAgICAwLjAgICAqLwotfTsKLQotLyogVm9sdGFnZSBTd2luZyBQcm9ncmFtbWluZyBmb3Ig VmNjSU8gMC45NVYgZm9yIEhETUkgKi8KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZf dHJhbnMgY25sX2RkaV90cmFuc2xhdGlvbnNfaGRtaV8wXzk1VltdID0gewotCQkJCQkJLyogTlQg bVYgVHJhbnMgbVYgZGIgICAgKi8KLQl7IDB4QSwgMHg1QywgMHgzRiwgMHgwMCwgMHgwMCB9LAkv KiA0MDAgICA0MDAgICAgICAwLjAgICAqLwotCXsgMHhCLCAweDY5LCAweDM3LCAweDAwLCAweDA4 IH0sCS8qIDQwMCAgIDYwMCAgICAgIDMuNSAgICovCi0JeyAweDUsIDB4NzYsIDB4MzEsIDB4MDAs IDB4MEUgfSwJLyogNDAwICAgODAwICAgICAgNi4wICAgKi8KLQl7IDB4QSwgMHg1RSwgMHgzRiwg MHgwMCwgMHgwMCB9LAkvKiA0NTAgICA0NTAgICAgICAwLjAgICAqLwotCXsgMHhCLCAweDY5LCAw eDNGLCAweDAwLCAweDAwIH0sCS8qIDYwMCAgIDYwMCAgICAgIDAuMCAgICovCi0JeyAweEIsIDB4 NzksIDB4MzUsIDB4MDAsIDB4MEEgfSwJLyogNjAwICAgODUwICAgICAgMy4wICAgKi8KLQl7IDB4 NiwgMHg3RCwgMHgzMiwgMHgwMCwgMHgwRCB9LAkvKiA2MDAgICAxMDAwICAgICA0LjQgICAqLwot CXsgMHg1LCAweDc2LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDgwMCAgIDgwMCAgICAgIDAuMCAg ICovCi0JeyAweDYsIDB4N0QsIDB4MzksIDB4MDAsIDB4MDYgfSwJLyogODAwICAgMTAwMCAgICAg MS45ICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgzOSwgMHgwMCwgMHgwNiB9LAkvKiA4NTAgICAxMDUw ICAgICAxLjggICAqLwotCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDEwNTAg IDEwNTAgICAgIDAuMCAgICovCi19OwotCi0vKiBWb2x0YWdlIFN3aW5nIFByb2dyYW1taW5nIGZv ciBWY2NJTyAwLjk1ViBmb3IgZURQICovCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVm X3RyYW5zIGNubF9kZGlfdHJhbnNsYXRpb25zX2VkcF8wXzk1VltdID0gewotCQkJCQkJLyogTlQg bVYgVHJhbnMgbVYgZGIgICAgKi8KLQl7IDB4QSwgMHg2MSwgMHgzQSwgMHgwMCwgMHgwNSB9LAkv KiAzODQgICA1MDAgICAgICAyLjMgICAqLwotCXsgMHgwLCAweDdGLCAweDM4LCAweDAwLCAweDA3 IH0sCS8qIDE1MyAgIDIwMCAgICAgIDIuMyAgICovCi0JeyAweDgsIDB4N0YsIDB4MzgsIDB4MDAs IDB4MDcgfSwJLyogMTkyICAgMjUwICAgICAgMi4zICAgKi8KLQl7IDB4MSwgMHg3RiwgMHgzOCwg MHgwMCwgMHgwNyB9LAkvKiAyMzAgICAzMDAgICAgICAyLjMgICAqLwotCXsgMHg5LCAweDdGLCAw eDM4LCAweDAwLCAweDA3IH0sCS8qIDI2OSAgIDM1MCAgICAgIDIuMyAgICovCi0JeyAweEEsIDB4 NjEsIDB4M0MsIDB4MDAsIDB4MDMgfSwJLyogNDQ2ICAgNTAwICAgICAgMS4wICAgKi8KLQl7IDB4 QiwgMHg2OCwgMHgzOSwgMHgwMCwgMHgwNiB9LAkvKiA0NjAgICA2MDAgICAgICAyLjMgICAqLwot CXsgMHhDLCAweDZFLCAweDM5LCAweDAwLCAweDA2IH0sCS8qIDUzNyAgIDcwMCAgICAgIDIuMyAg ICovCi0JeyAweDQsIDB4N0YsIDB4M0EsIDB4MDAsIDB4MDUgfSwJLyogNDYwICAgNjAwICAgICAg Mi4zICAgKi8KLQl7IDB4MiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA0MDAgICA0MDAg ICAgICAwLjAgICAqLwotfTsKLQotLyogVm9sdGFnZSBTd2luZyBQcm9ncmFtbWluZyBmb3IgVmNj SU8gMS4wNVYgZm9yIERQICovCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5z IGNubF9kZGlfdHJhbnNsYXRpb25zX2RwXzFfMDVWW10gPSB7Ci0JCQkJCQkvKiBOVCBtViBUcmFu cyBtViBkYiAgICAqLwotCXsgMHhBLCAweDU4LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDQwMCAg IDQwMCAgICAgIDAuMCAgICovCi0JeyAweEIsIDB4NjQsIDB4MzcsIDB4MDAsIDB4MDggfSwJLyog NDAwICAgNjAwICAgICAgMy41ICAgKi8KLQl7IDB4NSwgMHg3MCwgMHgzMSwgMHgwMCwgMHgwRSB9 LAkvKiA0MDAgICA4MDAgICAgICA2LjAgICAqLwotCXsgMHg2LCAweDdGLCAweDJDLCAweDAwLCAw eDEzIH0sCS8qIDQwMCAgIDEwNTAgICAgIDguNCAgICovCi0JeyAweEIsIDB4NjQsIDB4M0YsIDB4 MDAsIDB4MDAgfSwJLyogNjAwICAgNjAwICAgICAgMC4wICAgKi8KLQl7IDB4NSwgMHg3MywgMHgz NSwgMHgwMCwgMHgwQSB9LAkvKiA2MDAgICA4NTAgICAgICAzLjAgICAqLwotCXsgMHg2LCAweDdG LCAweDMwLCAweDAwLCAweDBGIH0sCS8qIDU1MCAgIDEwNTAgICAgIDUuNiAgICovCi0JeyAweDUs IDB4NzYsIDB4M0UsIDB4MDAsIDB4MDEgfSwJLyogODUwICAgOTAwICAgICAgMC41ICAgKi8KLQl7 IDB4NiwgMHg3RiwgMHgzNiwgMHgwMCwgMHgwOSB9LAkvKiA3NTAgICAxMDUwICAgICAyLjkgICAq LwotCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDEwNTAgIDEwNTAgICAgIDAu MCAgICovCi19OwotCi0vKiBWb2x0YWdlIFN3aW5nIFByb2dyYW1taW5nIGZvciBWY2NJTyAxLjA1 ViBmb3IgSERNSSAqLwotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBjbmxf ZGRpX3RyYW5zbGF0aW9uc19oZG1pXzFfMDVWW10gPSB7Ci0JCQkJCQkvKiBOVCBtViBUcmFucyBt ViBkYiAgICAqLwotCXsgMHhBLCAweDU4LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDQwMCAgIDQw MCAgICAgIDAuMCAgICovCi0JeyAweEIsIDB4NjQsIDB4MzcsIDB4MDAsIDB4MDggfSwJLyogNDAw ICAgNjAwICAgICAgMy41ICAgKi8KLQl7IDB4NSwgMHg3MCwgMHgzMSwgMHgwMCwgMHgwRSB9LAkv KiA0MDAgICA4MDAgICAgICA2LjAgICAqLwotCXsgMHhBLCAweDVCLCAweDNGLCAweDAwLCAweDAw IH0sCS8qIDQ1MCAgIDQ1MCAgICAgIDAuMCAgICovCi0JeyAweEIsIDB4NjQsIDB4M0YsIDB4MDAs IDB4MDAgfSwJLyogNjAwICAgNjAwICAgICAgMC4wICAgKi8KLQl7IDB4NSwgMHg3MywgMHgzNSwg MHgwMCwgMHgwQSB9LAkvKiA2MDAgICA4NTAgICAgICAzLjAgICAqLwotCXsgMHg2LCAweDdDLCAw eDMyLCAweDAwLCAweDBEIH0sCS8qIDYwMCAgIDEwMDAgICAgIDQuNCAgICovCi0JeyAweDUsIDB4 NzAsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogODAwICAgODAwICAgICAgMC4wICAgKi8KLQl7IDB4 NiwgMHg3QywgMHgzOSwgMHgwMCwgMHgwNiB9LAkvKiA4MDAgICAxMDAwICAgICAxLjkgICAqLwot CXsgMHg2LCAweDdGLCAweDM5LCAweDAwLCAweDA2IH0sCS8qIDg1MCAgIDEwNTAgICAgIDEuOCAg ICovCi0JeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMTA1MCAgMTA1MCAgICAg MC4wICAgKi8KLX07Ci0KLS8qIFZvbHRhZ2UgU3dpbmcgUHJvZ3JhbW1pbmcgZm9yIFZjY0lPIDEu MDVWIGZvciBlRFAgKi8KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgY25s X2RkaV90cmFuc2xhdGlvbnNfZWRwXzFfMDVWW10gPSB7Ci0JCQkJCQkvKiBOVCBtViBUcmFucyBt ViBkYiAgICAqLwotCXsgMHhBLCAweDVFLCAweDNBLCAweDAwLCAweDA1IH0sCS8qIDM4NCAgIDUw MCAgICAgIDIuMyAgICovCi0JeyAweDAsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMTUz ICAgMjAwICAgICAgMi4zICAgKi8KLQl7IDB4OCwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkv KiAxOTIgICAyNTAgICAgICAyLjMgICAqLwotCXsgMHgxLCAweDdGLCAweDM4LCAweDAwLCAweDA3 IH0sCS8qIDIzMCAgIDMwMCAgICAgIDIuMyAgICovCi0JeyAweDksIDB4N0YsIDB4MzgsIDB4MDAs IDB4MDcgfSwJLyogMjY5ICAgMzUwICAgICAgMi4zICAgKi8KLQl7IDB4QSwgMHg1RSwgMHgzQywg MHgwMCwgMHgwMyB9LAkvKiA0NDYgICA1MDAgICAgICAxLjAgICAqLwotCXsgMHhCLCAweDY0LCAw eDM5LCAweDAwLCAweDA2IH0sCS8qIDQ2MCAgIDYwMCAgICAgIDIuMyAgICovCi0JeyAweEUsIDB4 NkEsIDB4MzksIDB4MDAsIDB4MDYgfSwJLyogNTM3ICAgNzAwICAgICAgMi4zICAgKi8KLQl7IDB4 MiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA0MDAgICA0MDAgICAgICAwLjAgICAqLwot fTsKLQotLyogaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zICovCi1zdGF0aWMgY29uc3Qg c3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19k cF9oYnIyW10gPSB7Ci0JCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwotCXsgMHhBLCAw eDM1LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDM1MCAgIDM1MCAgICAgIDAuMCAgICovCi0JeyAw eEEsIDB4NEYsIDB4MzcsIDB4MDAsIDB4MDggfSwJLyogMzUwICAgNTAwICAgICAgMy4xICAgKi8K LQl7IDB4QywgMHg3MSwgMHgyRiwgMHgwMCwgMHgxMCB9LAkvKiAzNTAgICA3MDAgICAgICA2LjAg ICAqLwotCXsgMHg2LCAweDdGLCAweDJCLCAweDAwLCAweDE0IH0sCS8qIDM1MCAgIDkwMCAgICAg IDguMiAgICovCi0JeyAweEEsIDB4NEMsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNTAwICAgNTAw ICAgICAgMC4wICAgKi8KLQl7IDB4QywgMHg3MywgMHgzNCwgMHgwMCwgMHgwQiB9LAkvKiA1MDAg ICA3MDAgICAgICAyLjkgICAqLwotCXsgMHg2LCAweDdGLCAweDJGLCAweDAwLCAweDEwIH0sCS8q IDUwMCAgIDkwMCAgICAgIDUuMSAgICovCi0JeyAweEMsIDB4NkMsIDB4M0MsIDB4MDAsIDB4MDMg fSwJLyogNjUwICAgNzAwICAgICAgMC42ICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgzNSwgMHgwMCwg MHgwQSB9LAkvKiA2MDAgICA5MDAgICAgICAzLjUgICAqLwotCXsgMHg2LCAweDdGLCAweDNGLCAw eDAwLCAweDAwIH0sCS8qIDkwMCAgIDkwMCAgICAgIDAuMCAgICovCi19OwotCi1zdGF0aWMgY29u c3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9u c19lZHBfaGJyMltdID0gewotCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KLQl7IDB4 MCwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAyMDAgICAyMDAgICAgICAwLjAgICAqLwot CXsgMHg4LCAweDdGLCAweDM4LCAweDAwLCAweDA3IH0sCS8qIDIwMCAgIDI1MCAgICAgIDEuOSAg ICovCi0JeyAweDEsIDB4N0YsIDB4MzMsIDB4MDAsIDB4MEMgfSwJLyogMjAwICAgMzAwICAgICAg My41ICAgKi8KLQl7IDB4OSwgMHg3RiwgMHgzMSwgMHgwMCwgMHgwRSB9LAkvKiAyMDAgICAzNTAg ICAgICA0LjkgICAqLwotCXsgMHg4LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDI1MCAg IDI1MCAgICAgIDAuMCAgICovCi0JeyAweDEsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyog MjUwICAgMzAwICAgICAgMS42ICAgKi8KLQl7IDB4OSwgMHg3RiwgMHgzNSwgMHgwMCwgMHgwQSB9 LAkvKiAyNTAgICAzNTAgICAgICAyLjkgICAqLwotCXsgMHgxLCAweDdGLCAweDNGLCAweDAwLCAw eDAwIH0sCS8qIDMwMCAgIDMwMCAgICAgIDAuMCAgICovCi0JeyAweDksIDB4N0YsIDB4MzgsIDB4 MDAsIDB4MDcgfSwJLyogMzAwICAgMzUwICAgICAgMS4zICAgKi8KLQl7IDB4OSwgMHg3RiwgMHgz RiwgMHgwMCwgMHgwMCB9LAkvKiAzNTAgICAzNTAgICAgICAwLjAgICAqLwotfTsKLQotc3RhdGlj IGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xh dGlvbnNfZWRwX2hicjNbXSA9IHsKLQkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCi0J eyAweEEsIDB4MzUsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAg Ki8KLQl7IDB4QSwgMHg0RiwgMHgzNywgMHgwMCwgMHgwOCB9LAkvKiAzNTAgICA1MDAgICAgICAz LjEgICAqLwotCXsgMHhDLCAweDcxLCAweDJGLCAweDAwLCAweDEwIH0sCS8qIDM1MCAgIDcwMCAg ICAgIDYuMCAgICovCi0JeyAweDYsIDB4N0YsIDB4MkIsIDB4MDAsIDB4MTQgfSwJLyogMzUwICAg OTAwICAgICAgOC4yICAgKi8KLQl7IDB4QSwgMHg0QywgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA1 MDAgICA1MDAgICAgICAwLjAgICAqLwotCXsgMHhDLCAweDczLCAweDM0LCAweDAwLCAweDBCIH0s CS8qIDUwMCAgIDcwMCAgICAgIDIuOSAgICovCi0JeyAweDYsIDB4N0YsIDB4MkYsIDB4MDAsIDB4 MTAgfSwJLyogNTAwICAgOTAwICAgICAgNS4xICAgKi8KLQl7IDB4QywgMHg2QywgMHgzQywgMHgw MCwgMHgwMyB9LAkvKiA2NTAgICA3MDAgICAgICAwLjYgICAqLwotCXsgMHg2LCAweDdGLCAweDM1 LCAweDAwLCAweDBBIH0sCS8qIDYwMCAgIDkwMCAgICAgIDMuNSAgICovCi0JeyAweDYsIDB4N0Ys IDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogOTAwICAgOTAwICAgICAgMC4wICAgKi8KLX07Ci0KLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgaWNsX2NvbWJvX3BoeV9kZGlfdHJh bnNsYXRpb25zX2hkbWlbXSA9IHsKLQkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCi0J eyAweEEsIDB4NjAsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNDUwICAgNDUwICAgICAgMC4wICAg Ki8KLQl7IDB4QiwgMHg3MywgMHgzNiwgMHgwMCwgMHgwOSB9LAkvKiA0NTAgICA2NTAgICAgICAz LjIgICAqLwotCXsgMHg2LCAweDdGLCAweDMxLCAweDAwLCAweDBFIH0sCS8qIDQ1MCAgIDg1MCAg ICAgIDUuNSAgICovCi0JeyAweEIsIDB4NzMsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNjUwICAg NjUwICAgICAgMC4wICAgQUxTICovCi0JeyAweDYsIDB4N0YsIDB4MzcsIDB4MDAsIDB4MDggfSwJ LyogNjUwICAgODUwICAgICAgMi4zICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgw MCB9LAkvKiA4NTAgICA4NTAgICAgICAwLjAgICAqLwotCXsgMHg2LCAweDdGLCAweDM1LCAweDAw LCAweDBBIH0sCS8qIDYwMCAgIDg1MCAgICAgIDMuMCAgICovCi19OwotCi1zdGF0aWMgY29uc3Qg c3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGVobF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19k cFtdID0gewotCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KLQl7IDB4QSwgMHgzMywg MHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzNTAgICAzNTAgICAgICAwLjAgICAqLwotCXsgMHhBLCAw eDQ3LCAweDM2LCAweDAwLCAweDA5IH0sCS8qIDM1MCAgIDUwMCAgICAgIDMuMSAgICovCi0JeyAw eEMsIDB4NjQsIDB4MzQsIDB4MDAsIDB4MEIgfSwJLyogMzUwICAgNzAwICAgICAgNi4wICAgKi8K LQl7IDB4NiwgMHg3RiwgMHgzMCwgMHgwMCwgMHgwRiB9LAkvKiAzNTAgICA5MDAgICAgICA4LjIg ICAqLwotCXsgMHhBLCAweDQ2LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDUwMCAgIDUwMCAgICAg IDAuMCAgICovCi0JeyAweEMsIDB4NjQsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogNTAwICAgNzAw ICAgICAgMi45ICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgzMiwgMHgwMCwgMHgwRCB9LAkvKiA1MDAg ICA5MDAgICAgICA1LjEgICAqLwotCXsgMHhDLCAweDYxLCAweDNGLCAweDAwLCAweDAwIH0sCS8q IDY1MCAgIDcwMCAgICAgIDAuNiAgICovCi0JeyAweDYsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcg fSwJLyogNjAwICAgOTAwICAgICAgMy41ICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwg MHgwMCB9LAkvKiA5MDAgICA5MDAgICAgICAwLjAgICAqLwotfTsKLQotc3RhdGljIGNvbnN0IHN0 cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBqc2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRw X2hicltdID0gewotCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KLQl7IDB4OCwgMHg3 RiwgMHgzRiwgMHgwMCwgMHgwMCB9LCAgICAgICAgLyogMjAwICAgMjAwICAgICAgMC4wICAgKi8K LQl7IDB4OCwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LCAgICAgICAgLyogMjAwICAgMjUwICAg ICAgMS45ICAgKi8KLQl7IDB4MSwgMHg3RiwgMHgzMywgMHgwMCwgMHgwQyB9LCAgICAgICAgLyog MjAwICAgMzAwICAgICAgMy41ICAgKi8KLQl7IDB4QSwgMHgzNSwgMHgzNiwgMHgwMCwgMHgwOSB9 LCAgICAgICAgLyogMjAwICAgMzUwICAgICAgNC45ICAgKi8KLQl7IDB4OCwgMHg3RiwgMHgzRiwg MHgwMCwgMHgwMCB9LCAgICAgICAgLyogMjUwICAgMjUwICAgICAgMC4wICAgKi8KLQl7IDB4MSwg MHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LCAgICAgICAgLyogMjUwICAgMzAwICAgICAgMS42ICAg Ki8KLQl7IDB4QSwgMHgzNSwgMHgzNSwgMHgwMCwgMHgwQSB9LCAgICAgICAgLyogMjUwICAgMzUw ICAgICAgMi45ICAgKi8KLQl7IDB4MSwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LCAgICAgICAg LyogMzAwICAgMzAwICAgICAgMC4wICAgKi8KLQl7IDB4QSwgMHgzNSwgMHgzOCwgMHgwMCwgMHgw NyB9LCAgICAgICAgLyogMzAwICAgMzUwICAgICAgMS4zICAgKi8KLQl7IDB4QSwgMHgzNSwgMHgz RiwgMHgwMCwgMHgwMCB9LCAgICAgICAgLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8KLX07Ci0K LXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMganNsX2NvbWJvX3BoeV9kZGlf dHJhbnNsYXRpb25zX2VkcF9oYnIyW10gPSB7Ci0JCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAg ICAqLwotCXsgMHg4LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sICAgICAgICAvKiAyMDAgICAy MDAgICAgICAwLjAgICAqLwotCXsgMHg4LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sICAgICAg ICAvKiAyMDAgICAyNTAgICAgICAxLjkgICAqLwotCXsgMHgxLCAweDdGLCAweDNELCAweDAwLCAw eDAyIH0sICAgICAgICAvKiAyMDAgICAzMDAgICAgICAzLjUgICAqLwotCXsgMHhBLCAweDM1LCAw eDM4LCAweDAwLCAweDA3IH0sICAgICAgICAvKiAyMDAgICAzNTAgICAgICA0LjkgICAqLwotCXsg MHg4LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sICAgICAgICAvKiAyNTAgICAyNTAgICAgICAw LjAgICAqLwotCXsgMHgxLCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sICAgICAgICAvKiAyNTAg ICAzMDAgICAgICAxLjYgICAqLwotCXsgMHhBLCAweDM1LCAweDNBLCAweDAwLCAweDA1IH0sICAg ICAgICAvKiAyNTAgICAzNTAgICAgICAyLjkgICAqLwotCXsgMHgxLCAweDdGLCAweDNGLCAweDAw LCAweDAwIH0sICAgICAgICAvKiAzMDAgICAzMDAgICAgICAwLjAgICAqLwotCXsgMHhBLCAweDM1 LCAweDM4LCAweDAwLCAweDA3IH0sICAgICAgICAvKiAzMDAgICAzNTAgICAgICAxLjMgICAqLwot CXsgMHhBLCAweDM1LCAweDNGLCAweDAwLCAweDAwIH0sICAgICAgICAvKiAzNTAgICAzNTAgICAg ICAwLjAgICAqLwotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBk ZzFfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfcmJyX2hicltdID0gewotCQkJCQkJLyog TlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KLQl7IDB4QSwgMHgzMiwgMHgzRiwgMHgwMCwgMHgwMCB9 LAkvKiAzNTAgICAzNTAgICAgICAwLjAgICAqLwotCXsgMHhBLCAweDQ4LCAweDM1LCAweDAwLCAw eDBBIH0sCS8qIDM1MCAgIDUwMCAgICAgIDMuMSAgICovCi0JeyAweEMsIDB4NjMsIDB4MkYsIDB4 MDAsIDB4MTAgfSwJLyogMzUwICAgNzAwICAgICAgNi4wICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgy QywgMHgwMCwgMHgxMyB9LAkvKiAzNTAgICA5MDAgICAgICA4LjIgICAqLwotCXsgMHhBLCAweDQz LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDUwMCAgIDUwMCAgICAgIDAuMCAgICovCi0JeyAweEMs IDB4NjAsIDB4MzYsIDB4MDAsIDB4MDkgfSwJLyogNTAwICAgNzAwICAgICAgMi45ICAgKi8KLQl7 IDB4NiwgMHg3RiwgMHgzMCwgMHgwMCwgMHgwRiB9LAkvKiA1MDAgICA5MDAgICAgICA1LjEgICAq LwotCXsgMHhDLCAweDYwLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDY1MCAgIDcwMCAgICAgIDAu NiAgICovCi0JeyAweDYsIDB4N0YsIDB4MzcsIDB4MDAsIDB4MDggfSwJLyogNjAwICAgOTAwICAg ICAgMy41ICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA5MDAgICA5 MDAgICAgICAwLjAgICAqLwotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90 cmFucyBkZzFfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMl9oYnIzW10gPSB7Ci0J CQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwotCXsgMHhBLCAweDMyLCAweDNGLCAweDAw LCAweDAwIH0sCS8qIDM1MCAgIDM1MCAgICAgIDAuMCAgICovCi0JeyAweEEsIDB4NDgsIDB4MzUs IDB4MDAsIDB4MEEgfSwJLyogMzUwICAgNTAwICAgICAgMy4xICAgKi8KLQl7IDB4QywgMHg2Mywg MHgyRiwgMHgwMCwgMHgxMCB9LAkvKiAzNTAgICA3MDAgICAgICA2LjAgICAqLwotCXsgMHg2LCAw eDdGLCAweDJDLCAweDAwLCAweDEzIH0sCS8qIDM1MCAgIDkwMCAgICAgIDguMiAgICovCi0JeyAw eEEsIDB4NDMsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNTAwICAgNTAwICAgICAgMC4wICAgKi8K LQl7IDB4QywgMHg2MCwgMHgzNiwgMHgwMCwgMHgwOSB9LAkvKiA1MDAgICA3MDAgICAgICAyLjkg ICAqLwotCXsgMHg2LCAweDdGLCAweDMwLCAweDAwLCAweDBGIH0sCS8qIDUwMCAgIDkwMCAgICAg IDUuMSAgICovCi0JeyAweEMsIDB4NTgsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNjUwICAgNzAw ICAgICAgMC42ICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgzNSwgMHgwMCwgMHgwQSB9LAkvKiA2MDAg ICA5MDAgICAgICAzLjUgICAqLwotCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8q IDkwMCAgIDkwMCAgICAgIDAuMCAgICovCi19OwotCi1zdHJ1Y3QgaWNsX21nX3BoeV9kZGlfYnVm X3RyYW5zIHsKLQl1MzIgY3JpX3R4ZGVlbXBoX292ZXJyaWRlXzExXzY7Ci0JdTMyIGNyaV90eGRl ZW1waF9vdmVycmlkZV81XzA7Ci0JdTMyIGNyaV90eGRlZW1waF9vdmVycmlkZV8xN18xMjsKLX07 Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWNsX21nX3BoeV9kZGlfYnVmX3RyYW5zIGljbF9tZ19w aHlfZGRpX3RyYW5zbGF0aW9uc19yYnJfaGJyW10gPSB7Ci0JCQkJLyogVm9sdGFnZSBzd2luZyAg cHJlLWVtcGhhc2lzICovCi0JeyAweDE4LCAweDAwLCAweDAwIH0sCS8qIDAgICAgICAgICAgICAg IDAgICAqLwotCXsgMHgxRCwgMHgwMCwgMHgwNSB9LAkvKiAwICAgICAgICAgICAgICAxICAgKi8K LQl7IDB4MjQsIDB4MDAsIDB4MEMgfSwJLyogMCAgICAgICAgICAgICAgMiAgICovCi0JeyAweDJC LCAweDAwLCAweDE0IH0sCS8qIDAgICAgICAgICAgICAgIDMgICAqLwotCXsgMHgyMSwgMHgwMCwg MHgwMCB9LAkvKiAxICAgICAgICAgICAgICAwICAgKi8KLQl7IDB4MkIsIDB4MDAsIDB4MDggfSwJ LyogMSAgICAgICAgICAgICAgMSAgICovCi0JeyAweDMwLCAweDAwLCAweDBGIH0sCS8qIDEgICAg ICAgICAgICAgIDIgICAqLwotCXsgMHgzMSwgMHgwMCwgMHgwMyB9LAkvKiAyICAgICAgICAgICAg ICAwICAgKi8KLQl7IDB4MzQsIDB4MDAsIDB4MEIgfSwJLyogMiAgICAgICAgICAgICAgMSAgICov Ci0JeyAweDNGLCAweDAwLCAweDAwIH0sCS8qIDMgICAgICAgICAgICAgIDAgICAqLwotfTsKLQot c3RhdGljIGNvbnN0IHN0cnVjdCBpY2xfbWdfcGh5X2RkaV9idWZfdHJhbnMgaWNsX21nX3BoeV9k ZGlfdHJhbnNsYXRpb25zX2hicjJfaGJyM1tdID0gewotCQkJCS8qIFZvbHRhZ2Ugc3dpbmcgIHBy ZS1lbXBoYXNpcyAqLwotCXsgMHgxOCwgMHgwMCwgMHgwMCB9LAkvKiAwICAgICAgICAgICAgICAw ICAgKi8KLQl7IDB4MUQsIDB4MDAsIDB4MDUgfSwJLyogMCAgICAgICAgICAgICAgMSAgICovCi0J eyAweDI0LCAweDAwLCAweDBDIH0sCS8qIDAgICAgICAgICAgICAgIDIgICAqLwotCXsgMHgyQiwg MHgwMCwgMHgxNCB9LAkvKiAwICAgICAgICAgICAgICAzICAgKi8KLQl7IDB4MjYsIDB4MDAsIDB4 MDAgfSwJLyogMSAgICAgICAgICAgICAgMCAgICovCi0JeyAweDJDLCAweDAwLCAweDA3IH0sCS8q IDEgICAgICAgICAgICAgIDEgICAqLwotCXsgMHgzMywgMHgwMCwgMHgwQyB9LAkvKiAxICAgICAg ICAgICAgICAyICAgKi8KLQl7IDB4MkUsIDB4MDAsIDB4MDAgfSwJLyogMiAgICAgICAgICAgICAg MCAgICovCi0JeyAweDM2LCAweDAwLCAweDA5IH0sCS8qIDIgICAgICAgICAgICAgIDEgICAqLwot CXsgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzICAgICAgICAgICAgICAwICAgKi8KLX07Ci0KLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgaWNsX21nX3BoeV9kZGlfYnVmX3RyYW5zIGljbF9tZ19waHlfZGRp X3RyYW5zbGF0aW9uc19oZG1pW10gPSB7Ci0JCQkJLyogSERNSSBQcmVzZXQJVlMJUHJlLWVtcGgg Ki8KLQl7IDB4MUEsIDB4MCwgMHgwIH0sCS8qIDEJCTQwMG1WCTBkQiAqLwotCXsgMHgyMCwgMHgw LCAweDAgfSwJLyogMgkJNTAwbVYJMGRCICovCi0JeyAweDI5LCAweDAsIDB4MCB9LAkvKiAzCQk2 NTBtVgkwZEIgKi8KLQl7IDB4MzIsIDB4MCwgMHgwIH0sCS8qIDQJCTgwMG1WCTBkQiAqLwotCXsg MHgzRiwgMHgwLCAweDAgfSwJLyogNQkJMTAwMG1WCTBkQiAqLwotCXsgMHgzQSwgMHgwLCAweDUg fSwJLyogNgkJRnVsbAktMS41IGRCICovCi0JeyAweDM5LCAweDAsIDB4NiB9LAkvKiA3CQlGdWxs CS0xLjggZEIgKi8KLQl7IDB4MzgsIDB4MCwgMHg3IH0sCS8qIDgJCUZ1bGwJLTIgZEIgKi8KLQl7 IDB4MzcsIDB4MCwgMHg4IH0sCS8qIDkJCUZ1bGwJLTIuNSBkQiAqLwotCXsgMHgzNiwgMHgwLCAw eDkgfSwJLyogMTAJCUZ1bGwJLTMgZEIgKi8KLX07Ci0KLXN0cnVjdCB0Z2xfZGtsX3BoeV9kZGlf YnVmX3RyYW5zIHsKLQl1MzIgZGtsX3Zzd2luZ19jb250cm9sOwotCXUzMiBka2xfcHJlc2hvb3Rf Y29udHJvbDsKLQl1MzIgZGtsX2RlX2VtcGhhc2lzX2NvbnRyb2w7Ci19OwotCi1zdGF0aWMgY29u c3Qgc3RydWN0IHRnbF9ka2xfcGh5X2RkaV9idWZfdHJhbnMgdGdsX2RrbF9waHlfZHBfZGRpX3Ry YW5zW10gPSB7Ci0JCQkJLyogVlMJcHJlLWVtcAlOb24tdHJhbnMgbVYJUHJlLWVtcGggZEIgKi8K LQl7IDB4NywgMHgwLCAweDAwIH0sCS8qIDAJMAk0MDBtVgkJMCBkQiAqLwotCXsgMHg1LCAweDAs IDB4MDUgfSwJLyogMAkxCTQwMG1WCQkzLjUgZEIgKi8KLQl7IDB4MiwgMHgwLCAweDBCIH0sCS8q IDAJMgk0MDBtVgkJNiBkQiAqLwotCXsgMHgwLCAweDAsIDB4MTggfSwJLyogMAkzCTQwMG1WCQk5 LjUgZEIgKi8KLQl7IDB4NSwgMHgwLCAweDAwIH0sCS8qIDEJMAk2MDBtVgkJMCBkQiAqLwotCXsg MHgyLCAweDAsIDB4MDggfSwJLyogMQkxCTYwMG1WCQkzLjUgZEIgKi8KLQl7IDB4MCwgMHgwLCAw eDE0IH0sCS8qIDEJMgk2MDBtVgkJNiBkQiAqLwotCXsgMHgyLCAweDAsIDB4MDAgfSwJLyogMgkw CTgwMG1WCQkwIGRCICovCi0JeyAweDAsIDB4MCwgMHgwQiB9LAkvKiAyCTEJODAwbVYJCTMuNSBk QiAqLwotCXsgMHgwLCAweDAsIDB4MDAgfSwJLyogMwkwCTEyMDBtVgkJMCBkQiBIRE1JIGRlZmF1 bHQgKi8KLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgdGdsX2RrbF9waHlfZGRpX2J1Zl90cmFu cyB0Z2xfZGtsX3BoeV9kcF9kZGlfdHJhbnNfaGJyMltdID0gewotCQkJCS8qIFZTCXByZS1lbXAJ Tm9uLXRyYW5zIG1WCVByZS1lbXBoIGRCICovCi0JeyAweDcsIDB4MCwgMHgwMCB9LAkvKiAwCTAJ NDAwbVYJCTAgZEIgKi8KLQl7IDB4NSwgMHgwLCAweDA1IH0sCS8qIDAJMQk0MDBtVgkJMy41IGRC ICovCi0JeyAweDIsIDB4MCwgMHgwQiB9LAkvKiAwCTIJNDAwbVYJCTYgZEIgKi8KLQl7IDB4MCwg MHgwLCAweDE5IH0sCS8qIDAJMwk0MDBtVgkJOS41IGRCICovCi0JeyAweDUsIDB4MCwgMHgwMCB9 LAkvKiAxCTAJNjAwbVYJCTAgZEIgKi8KLQl7IDB4MiwgMHgwLCAweDA4IH0sCS8qIDEJMQk2MDBt VgkJMy41IGRCICovCi0JeyAweDAsIDB4MCwgMHgxNCB9LAkvKiAxCTIJNjAwbVYJCTYgZEIgKi8K LQl7IDB4MiwgMHgwLCAweDAwIH0sCS8qIDIJMAk4MDBtVgkJMCBkQiAqLwotCXsgMHgwLCAweDAs IDB4MEIgfSwJLyogMgkxCTgwMG1WCQkzLjUgZEIgKi8KLQl7IDB4MCwgMHgwLCAweDAwIH0sCS8q IDMJMAkxMjAwbVYJCTAgZEIgSERNSSBkZWZhdWx0ICovCi19OwotCi1zdGF0aWMgY29uc3Qgc3Ry dWN0IHRnbF9ka2xfcGh5X2RkaV9idWZfdHJhbnMgdGdsX2RrbF9waHlfaGRtaV9kZGlfdHJhbnNb XSA9IHsKLQkJCQkvKiBIRE1JIFByZXNldAlWUwlQcmUtZW1waCAqLwotCXsgMHg3LCAweDAsIDB4 MCB9LAkvKiAxCQk0MDBtVgkwZEIgKi8KLQl7IDB4NiwgMHgwLCAweDAgfSwJLyogMgkJNTAwbVYJ MGRCICovCi0JeyAweDQsIDB4MCwgMHgwIH0sCS8qIDMJCTY1MG1WCTBkQiAqLwotCXsgMHgyLCAw eDAsIDB4MCB9LAkvKiA0CQk4MDBtVgkwZEIgKi8KLQl7IDB4MCwgMHgwLCAweDAgfSwJLyogNQkJ MTAwMG1WCTBkQiAqLwotCXsgMHgwLCAweDAsIDB4NSB9LAkvKiA2CQlGdWxsCS0xLjUgZEIgKi8K LQl7IDB4MCwgMHgwLCAweDYgfSwJLyogNwkJRnVsbAktMS44IGRCICovCi0JeyAweDAsIDB4MCwg MHg3IH0sCS8qIDgJCUZ1bGwJLTIgZEIgKi8KLQl7IDB4MCwgMHgwLCAweDggfSwJLyogOQkJRnVs bAktMi41IGRCICovCi0JeyAweDAsIDB4MCwgMHhBIH0sCS8qIDEwCQlGdWxsCS0zIGRCICovCi19 OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIHRnbF9jb21ib19waHlf ZGRpX3RyYW5zbGF0aW9uc19kcF9oYnJbXSA9IHsKLQkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRi ICAgICovCi0JeyAweEEsIDB4MzIsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAg ICAgMC4wICAgKi8KLQl7IDB4QSwgMHg0RiwgMHgzNywgMHgwMCwgMHgwOCB9LAkvKiAzNTAgICA1 MDAgICAgICAzLjEgICAqLwotCXsgMHhDLCAweDcxLCAweDJGLCAweDAwLCAweDEwIH0sCS8qIDM1 MCAgIDcwMCAgICAgIDYuMCAgICovCi0JeyAweDYsIDB4N0QsIDB4MkIsIDB4MDAsIDB4MTQgfSwJ LyogMzUwICAgOTAwICAgICAgOC4yICAgKi8KLQl7IDB4QSwgMHg0QywgMHgzRiwgMHgwMCwgMHgw MCB9LAkvKiA1MDAgICA1MDAgICAgICAwLjAgICAqLwotCXsgMHhDLCAweDczLCAweDM0LCAweDAw LCAweDBCIH0sCS8qIDUwMCAgIDcwMCAgICAgIDIuOSAgICovCi0JeyAweDYsIDB4N0YsIDB4MkYs IDB4MDAsIDB4MTAgfSwJLyogNTAwICAgOTAwICAgICAgNS4xICAgKi8KLQl7IDB4QywgMHg2Qywg MHgzQywgMHgwMCwgMHgwMyB9LAkvKiA2NTAgICA3MDAgICAgICAwLjYgICAqLwotCXsgMHg2LCAw eDdGLCAweDM1LCAweDAwLCAweDBBIH0sCS8qIDYwMCAgIDkwMCAgICAgIDMuNSAgICovCi0JeyAw eDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogOTAwICAgOTAwICAgICAgMC4wICAgKi8K LX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgdGdsX2NvbWJvX3Bo eV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicjJbXSA9IHsKLQkJCQkJCS8qIE5UIG1WIFRyYW5zIG1W IGRiICAgICovCi0JeyAweEEsIDB4MzUsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUw ICAgICAgMC4wICAgKi8KLQl7IDB4QSwgMHg0RiwgMHgzNywgMHgwMCwgMHgwOCB9LAkvKiAzNTAg ICA1MDAgICAgICAzLjEgICAqLwotCXsgMHhDLCAweDYzLCAweDJGLCAweDAwLCAweDEwIH0sCS8q IDM1MCAgIDcwMCAgICAgIDYuMCAgICovCi0JeyAweDYsIDB4N0YsIDB4MkIsIDB4MDAsIDB4MTQg fSwJLyogMzUwICAgOTAwICAgICAgOC4yICAgKi8KLQl7IDB4QSwgMHg0NywgMHgzRiwgMHgwMCwg MHgwMCB9LAkvKiA1MDAgICA1MDAgICAgICAwLjAgICAqLwotCXsgMHhDLCAweDYzLCAweDM0LCAw eDAwLCAweDBCIH0sCS8qIDUwMCAgIDcwMCAgICAgIDIuOSAgICovCi0JeyAweDYsIDB4N0YsIDB4 MkYsIDB4MDAsIDB4MTAgfSwJLyogNTAwICAgOTAwICAgICAgNS4xICAgKi8KLQl7IDB4QywgMHg2 MSwgMHgzQywgMHgwMCwgMHgwMyB9LAkvKiA2NTAgICA3MDAgICAgICAwLjYgICAqLwotCXsgMHg2 LCAweDdCLCAweDM1LCAweDAwLCAweDBBIH0sCS8qIDYwMCAgIDkwMCAgICAgIDMuNSAgICovCi0J eyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogOTAwICAgOTAwICAgICAgMC4wICAg Ki8KLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgdGdsX3V5X2Nv bWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicjJbXSA9IHsKLQkJCQkJCS8qIE5UIG1WIFRy YW5zIG1WIGRiICAgICovCi0JeyAweEEsIDB4MzUsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUw ICAgMzUwICAgICAgMC4wICAgKi8KLQl7IDB4QSwgMHg0RiwgMHgzNiwgMHgwMCwgMHgwOSB9LAkv KiAzNTAgICA1MDAgICAgICAzLjEgICAqLwotCXsgMHhDLCAweDYwLCAweDMyLCAweDAwLCAweDBE IH0sCS8qIDM1MCAgIDcwMCAgICAgIDYuMCAgICovCi0JeyAweEMsIDB4N0YsIDB4MkQsIDB4MDAs IDB4MTIgfSwJLyogMzUwICAgOTAwICAgICAgOC4yICAgKi8KLQl7IDB4QywgMHg0NywgMHgzRiwg MHgwMCwgMHgwMCB9LAkvKiA1MDAgICA1MDAgICAgICAwLjAgICAqLwotCXsgMHhDLCAweDZGLCAw eDM2LCAweDAwLCAweDA5IH0sCS8qIDUwMCAgIDcwMCAgICAgIDIuOSAgICovCi0JeyAweDYsIDB4 N0QsIDB4MzIsIDB4MDAsIDB4MEQgfSwJLyogNTAwICAgOTAwICAgICAgNS4xICAgKi8KLQl7IDB4 NiwgMHg2MCwgMHgzQywgMHgwMCwgMHgwMyB9LAkvKiA2NTAgICA3MDAgICAgICAwLjYgICAqLwot CXsgMHg2LCAweDdGLCAweDM0LCAweDAwLCAweDBCIH0sCS8qIDYwMCAgIDkwMCAgICAgIDMuNSAg ICovCi0JeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogOTAwICAgOTAwICAgICAg MC4wICAgKi8KLX07Ci0KLS8qCi0gKiBDbG9uZWQgdGhlIEhPQkwgZW50cnkgdG8gY29tcGx5IHdp dGggdGhlIHZvbHRhZ2UgYW5kIHByZS1lbXBoYXNpcyBlbnRyaWVzCi0gKiB0aGF0IERpc3BsYXlQ b3J0IHNwZWNpZmljYXRpb24gcmVxdWlyZXMKLSAqLwotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxf ZGRpX2J1Zl90cmFucyB0Z2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjJfaG9i bFtdID0gewotCQkJCQkJLyogVlMJcHJlLWVtcAkqLwotCXsgMHg2LCAweDdGLCAweDNGLCAweDAw LCAweDAwIH0sCS8qIDAJMAkqLwotCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8q IDAJMQkqLwotCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDAJMgkqLwotCXsg MHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDAJMwkqLwotCXsgMHg2LCAweDdGLCAw eDNGLCAweDAwLCAweDAwIH0sCS8qIDEJMAkqLwotCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAw eDAwIH0sCS8qIDEJMQkqLwotCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDEJ MgkqLwotCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDIJMAkqLwotCXsgMHg2 LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDIJMQkqLwotfTsKLQotc3RhdGljIGNvbnN0 IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBya2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNf ZHBfaGJyW10gPSB7Ci0JCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwotCXsgMHhBLCAw eDJGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDM1MCAgIDM1MCAgICAgIDAuMCAgICovCi0JeyAw eEEsIDB4NEYsIDB4MzcsIDB4MDAsIDB4MDggfSwJLyogMzUwICAgNTAwICAgICAgMy4xICAgKi8K LQl7IDB4QywgMHg2MywgMHgyRiwgMHgwMCwgMHgxMCB9LAkvKiAzNTAgICA3MDAgICAgICA2LjAg ICAqLwotCXsgMHg2LCAweDdELCAweDJBLCAweDAwLCAweDE1IH0sCS8qIDM1MCAgIDkwMCAgICAg IDguMiAgICovCi0JeyAweEEsIDB4NEMsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNTAwICAgNTAw ICAgICAgMC4wICAgKi8KLQl7IDB4QywgMHg3MywgMHgzNCwgMHgwMCwgMHgwQiB9LAkvKiA1MDAg ICA3MDAgICAgICAyLjkgICAqLwotCXsgMHg2LCAweDdGLCAweDJGLCAweDAwLCAweDEwIH0sCS8q IDUwMCAgIDkwMCAgICAgIDUuMSAgICovCi0JeyAweEMsIDB4NkUsIDB4M0UsIDB4MDAsIDB4MDEg fSwJLyogNjUwICAgNzAwICAgICAgMC42ICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgzNSwgMHgwMCwg MHgwQSB9LAkvKiA2MDAgICA5MDAgICAgICAzLjUgICAqLwotCXsgMHg2LCAweDdGLCAweDNGLCAw eDAwLCAweDAwIH0sCS8qIDkwMCAgIDkwMCAgICAgIDAuMCAgICovCi19OwotCi1zdGF0aWMgY29u c3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIHJrbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9u c19kcF9oYnIyX2hicjNbXSA9IHsKLQkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCi0J eyAweEEsIDB4MzUsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAg Ki8KLQl7IDB4QSwgMHg1MCwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAzNTAgICA1MDAgICAgICAz LjEgICAqLwotCXsgMHhDLCAweDYxLCAweDMzLCAweDAwLCAweDBDIH0sCS8qIDM1MCAgIDcwMCAg ICAgIDYuMCAgICovCi0JeyAweDYsIDB4N0YsIDB4MkUsIDB4MDAsIDB4MTEgfSwJLyogMzUwICAg OTAwICAgICAgOC4yICAgKi8KLQl7IDB4QSwgMHg0NywgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA1 MDAgICA1MDAgICAgICAwLjAgICAqLwotCXsgMHhDLCAweDVGLCAweDM4LCAweDAwLCAweDA3IH0s CS8qIDUwMCAgIDcwMCAgICAgIDIuOSAgICovCi0JeyAweDYsIDB4N0YsIDB4MkYsIDB4MDAsIDB4 MTAgfSwJLyogNTAwICAgOTAwICAgICAgNS4xICAgKi8KLQl7IDB4QywgMHg1RiwgMHgzRiwgMHgw MCwgMHgwMCB9LAkvKiA2NTAgICA3MDAgICAgICAwLjYgICAqLwotCXsgMHg2LCAweDdFLCAweDM2 LCAweDAwLCAweDA5IH0sCS8qIDYwMCAgIDkwMCAgICAgIDMuNSAgICovCi0JeyAweDYsIDB4N0Ys IDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogOTAwICAgOTAwICAgICAgMC4wICAgKi8KLX07Ci0KLXN0 YXRpYyBib29sIGlzX2hvYmxfYnVmX3RyYW5zKGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFu cyAqdGFibGUpCi17Ci0JcmV0dXJuIHRhYmxlID09IHRnbF9jb21ib19waHlfZGRpX3RyYW5zbGF0 aW9uc19lZHBfaGJyMl9ob2JsOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJh bnMgKgotYmR3X2dldF9idWZfdHJhbnNfZWRwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy LCBpbnQgKm5fZW50cmllcykKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKLQotCWlmIChkZXZfcHJpdi0+dmJ0LmVkcC5s b3dfdnN3aW5nKSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGJkd19kZGlfdHJhbnNsYXRp b25zX2VkcCk7Ci0JCXJldHVybiBiZHdfZGRpX3RyYW5zbGF0aW9uc19lZHA7Ci0JfSBlbHNlIHsK LQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoYmR3X2RkaV90cmFuc2xhdGlvbnNfZHApOwotCQly ZXR1cm4gYmR3X2RkaV90cmFuc2xhdGlvbnNfZHA7Ci0JfQotfQotCi1zdGF0aWMgY29uc3Qgc3Ry dWN0IGRkaV9idWZfdHJhbnMgKgotc2tsX2dldF9idWZfdHJhbnNfZHAoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsIGludCAqbl9lbnRyaWVzKQotewotCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwotCi0JaWYgKElTX1NL TF9VTFgoZGV2X3ByaXYpKSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHNrbF95X2RkaV90 cmFuc2xhdGlvbnNfZHApOwotCQlyZXR1cm4gc2tsX3lfZGRpX3RyYW5zbGF0aW9uc19kcDsKLQl9 IGVsc2UgaWYgKElTX1NLTF9VTFQoZGV2X3ByaXYpKSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9T SVpFKHNrbF91X2RkaV90cmFuc2xhdGlvbnNfZHApOwotCQlyZXR1cm4gc2tsX3VfZGRpX3RyYW5z bGF0aW9uc19kcDsKLQl9IGVsc2UgewotCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShza2xfZGRp X3RyYW5zbGF0aW9uc19kcCk7Ci0JCXJldHVybiBza2xfZGRpX3RyYW5zbGF0aW9uc19kcDsKLQl9 Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAqCi1rYmxfZ2V0X2J1Zl90 cmFuc19kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCi17 Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5i YXNlLmRldik7Ci0KLQlpZiAoSVNfS0JMX1VMWChkZXZfcHJpdikgfHwKLQkgICAgSVNfQ0ZMX1VM WChkZXZfcHJpdikgfHwKLQkgICAgSVNfQ01MX1VMWChkZXZfcHJpdikpIHsKLQkJKm5fZW50cmll cyA9IEFSUkFZX1NJWkUoa2JsX3lfZGRpX3RyYW5zbGF0aW9uc19kcCk7Ci0JCXJldHVybiBrYmxf eV9kZGlfdHJhbnNsYXRpb25zX2RwOwotCX0gZWxzZSBpZiAoSVNfS0JMX1VMVChkZXZfcHJpdikg fHwKLQkJICAgSVNfQ0ZMX1VMVChkZXZfcHJpdikgfHwKLQkJICAgSVNfQ01MX1VMVChkZXZfcHJp dikpIHsKLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoa2JsX3VfZGRpX3RyYW5zbGF0aW9uc19k cCk7Ci0JCXJldHVybiBrYmxfdV9kZGlfdHJhbnNsYXRpb25zX2RwOwotCX0gZWxzZSB7Ci0JCSpu X2VudHJpZXMgPSBBUlJBWV9TSVpFKGtibF9kZGlfdHJhbnNsYXRpb25zX2RwKTsKLQkJcmV0dXJu IGtibF9kZGlfdHJhbnNsYXRpb25zX2RwOwotCX0KLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBk ZGlfYnVmX3RyYW5zICoKLXNrbF9nZXRfYnVmX3RyYW5zX2VkcChzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCi17Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Ci0KLQlpZiAoZGV2X3ByaXYt PnZidC5lZHAubG93X3Zzd2luZykgewotCQlpZiAoSVNfU0tMX1VMWChkZXZfcHJpdikgfHwKLQkJ ICAgIElTX0tCTF9VTFgoZGV2X3ByaXYpIHx8Ci0JCSAgICBJU19DRkxfVUxYKGRldl9wcml2KSB8 fAotCQkgICAgSVNfQ01MX1VMWChkZXZfcHJpdikpIHsKLQkJCSpuX2VudHJpZXMgPSBBUlJBWV9T SVpFKHNrbF95X2RkaV90cmFuc2xhdGlvbnNfZWRwKTsKLQkJCXJldHVybiBza2xfeV9kZGlfdHJh bnNsYXRpb25zX2VkcDsKLQkJfSBlbHNlIGlmIChJU19TS0xfVUxUKGRldl9wcml2KSB8fAotCQkJ ICAgSVNfS0JMX1VMVChkZXZfcHJpdikgfHwKLQkJCSAgIElTX0NGTF9VTFQoZGV2X3ByaXYpIHx8 Ci0JCQkgICBJU19DTUxfVUxUKGRldl9wcml2KSkgewotCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJ WkUoc2tsX3VfZGRpX3RyYW5zbGF0aW9uc19lZHApOwotCQkJcmV0dXJuIHNrbF91X2RkaV90cmFu c2xhdGlvbnNfZWRwOwotCQl9IGVsc2UgewotCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoc2ts X2RkaV90cmFuc2xhdGlvbnNfZWRwKTsKLQkJCXJldHVybiBza2xfZGRpX3RyYW5zbGF0aW9uc19l ZHA7Ci0JCX0KLQl9Ci0KLQlpZiAoSVNfS0FCWUxBS0UoZGV2X3ByaXYpIHx8Ci0JICAgIElTX0NP RkZFRUxBS0UoZGV2X3ByaXYpIHx8Ci0JICAgIElTX0NPTUVUTEFLRShkZXZfcHJpdikpCi0JCXJl dHVybiBrYmxfZ2V0X2J1Zl90cmFuc19kcChlbmNvZGVyLCBuX2VudHJpZXMpOwotCWVsc2UKLQkJ cmV0dXJuIHNrbF9nZXRfYnVmX3RyYW5zX2RwKGVuY29kZXIsIG5fZW50cmllcyk7Ci19Ci0KLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAqCi1za2xfZ2V0X2J1Zl90cmFuc19oZG1p KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50ICpuX2VudHJpZXMpCi17Ci0J aWYgKElTX1NLTF9VTFgoZGV2X3ByaXYpIHx8Ci0JICAgIElTX0tCTF9VTFgoZGV2X3ByaXYpIHx8 Ci0JICAgIElTX0NGTF9VTFgoZGV2X3ByaXYpIHx8Ci0JICAgIElTX0NNTF9VTFgoZGV2X3ByaXYp KSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHNrbF95X2RkaV90cmFuc2xhdGlvbnNfaGRt aSk7Ci0JCXJldHVybiBza2xfeV9kZGlfdHJhbnNsYXRpb25zX2hkbWk7Ci0JfSBlbHNlIHsKLQkJ Km5fZW50cmllcyA9IEFSUkFZX1NJWkUoc2tsX2RkaV90cmFuc2xhdGlvbnNfaGRtaSk7Ci0JCXJl dHVybiBza2xfZGRpX3RyYW5zbGF0aW9uc19oZG1pOwotCX0KLX0KLQotc3RhdGljIGludCBza2xf YnVmX3RyYW5zX251bV9lbnRyaWVzKGVudW0gcG9ydCBwb3J0LCBpbnQgbl9lbnRyaWVzKQotewot CS8qIE9ubHkgRERJQSBhbmQgRERJRSBjYW4gc2VsZWN0IHRoZSAxMHRoIHJlZ2lzdGVyIHdpdGgg RFAgKi8KLQlpZiAocG9ydCA9PSBQT1JUX0EgfHwgcG9ydCA9PSBQT1JUX0UpCi0JCXJldHVybiBt aW4obl9lbnRyaWVzLCAxMCk7Ci0JZWxzZQotCQlyZXR1cm4gbWluKG5fZW50cmllcywgOSk7Ci19 Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAqCi1pbnRlbF9kZGlfZ2V0X2J1 Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMp Ci17Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVy LT5iYXNlLmRldik7Ci0KLQlpZiAoSVNfS0FCWUxBS0UoZGV2X3ByaXYpIHx8Ci0JICAgIElTX0NP RkZFRUxBS0UoZGV2X3ByaXYpIHx8Ci0JICAgIElTX0NPTUVUTEFLRShkZXZfcHJpdikpIHsKLQkJ Y29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKmRkaV90cmFuc2xhdGlvbnMgPQotCQkJa2JsX2dl dF9idWZfdHJhbnNfZHAoZW5jb2Rlciwgbl9lbnRyaWVzKTsKLQkJKm5fZW50cmllcyA9IHNrbF9i dWZfdHJhbnNfbnVtX2VudHJpZXMoZW5jb2Rlci0+cG9ydCwgKm5fZW50cmllcyk7Ci0JCXJldHVy biBkZGlfdHJhbnNsYXRpb25zOwotCX0gZWxzZSBpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikpIHsK LQkJY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKmRkaV90cmFuc2xhdGlvbnMgPQotCQkJc2ts X2dldF9idWZfdHJhbnNfZHAoZW5jb2Rlciwgbl9lbnRyaWVzKTsKLQkJKm5fZW50cmllcyA9IHNr bF9idWZfdHJhbnNfbnVtX2VudHJpZXMoZW5jb2Rlci0+cG9ydCwgKm5fZW50cmllcyk7Ci0JCXJl dHVybiBkZGlfdHJhbnNsYXRpb25zOwotCX0gZWxzZSBpZiAoSVNfQlJPQURXRUxMKGRldl9wcml2 KSkgewotCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShiZHdfZGRpX3RyYW5zbGF0aW9uc19kcCk7 Ci0JCXJldHVybiAgYmR3X2RkaV90cmFuc2xhdGlvbnNfZHA7Ci0JfSBlbHNlIGlmIChJU19IQVNX RUxMKGRldl9wcml2KSkgewotCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShoc3dfZGRpX3RyYW5z bGF0aW9uc19kcCk7Ci0JCXJldHVybiBoc3dfZGRpX3RyYW5zbGF0aW9uc19kcDsKLQl9Ci0KLQkq bl9lbnRyaWVzID0gMDsKLQlyZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBk ZGlfYnVmX3RyYW5zICoKLWludGVsX2RkaV9nZXRfYnVmX3RyYW5zX2VkcChzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCi17Ci0Jc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Ci0KLQlpZiAoSVNf R0VOOV9CQyhkZXZfcHJpdikpIHsKLQkJY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKmRkaV90 cmFuc2xhdGlvbnMgPQotCQkJc2tsX2dldF9idWZfdHJhbnNfZWRwKGVuY29kZXIsIG5fZW50cmll cyk7Ci0JCSpuX2VudHJpZXMgPSBza2xfYnVmX3RyYW5zX251bV9lbnRyaWVzKGVuY29kZXItPnBv cnQsICpuX2VudHJpZXMpOwotCQlyZXR1cm4gZGRpX3RyYW5zbGF0aW9uczsKLQl9IGVsc2UgaWYg KElTX0JST0FEV0VMTChkZXZfcHJpdikpIHsKLQkJcmV0dXJuIGJkd19nZXRfYnVmX3RyYW5zX2Vk cChlbmNvZGVyLCBuX2VudHJpZXMpOwotCX0gZWxzZSBpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikp IHsKLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaHN3X2RkaV90cmFuc2xhdGlvbnNfZHApOwot CQlyZXR1cm4gaHN3X2RkaV90cmFuc2xhdGlvbnNfZHA7Ci0JfQotCi0JKm5fZW50cmllcyA9IDA7 Ci0JcmV0dXJuIE5VTEw7Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAq Ci1pbnRlbF9kZGlfZ2V0X2J1Zl90cmFuc19mZGkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAotCQkJICAgIGludCAqbl9lbnRyaWVzKQotewotCWlmIChJU19CUk9BRFdFTEwoZGV2 X3ByaXYpKSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGJkd19kZGlfdHJhbnNsYXRpb25z X2ZkaSk7Ci0JCXJldHVybiBiZHdfZGRpX3RyYW5zbGF0aW9uc19mZGk7Ci0JfSBlbHNlIGlmIChJ U19IQVNXRUxMKGRldl9wcml2KSkgewotCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShoc3dfZGRp X3RyYW5zbGF0aW9uc19mZGkpOwotCQlyZXR1cm4gaHN3X2RkaV90cmFuc2xhdGlvbnNfZmRpOwot CX0KLQotCSpuX2VudHJpZXMgPSAwOwotCXJldHVybiBOVUxMOwotfQotCi1zdGF0aWMgY29uc3Qg c3RydWN0IGRkaV9idWZfdHJhbnMgKgotaW50ZWxfZGRpX2dldF9idWZfdHJhbnNfaGRtaShzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKLQkJCSAgICAgaW50ICpuX2VudHJpZXMpCi17Ci0J c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNl LmRldik7Ci0KLQlpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpIHsKLQkJcmV0dXJuIHNrbF9nZXRf YnVmX3RyYW5zX2hkbWkoZGV2X3ByaXYsIG5fZW50cmllcyk7Ci0JfSBlbHNlIGlmIChJU19CUk9B RFdFTEwoZGV2X3ByaXYpKSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGJkd19kZGlfdHJh bnNsYXRpb25zX2hkbWkpOwotCQlyZXR1cm4gYmR3X2RkaV90cmFuc2xhdGlvbnNfaGRtaTsKLQl9 IGVsc2UgaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpKSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9T SVpFKGhzd19kZGlfdHJhbnNsYXRpb25zX2hkbWkpOwotCQlyZXR1cm4gaHN3X2RkaV90cmFuc2xh dGlvbnNfaGRtaTsKLQl9Ci0KLQkqbl9lbnRyaWVzID0gMDsKLQlyZXR1cm4gTlVMTDsKLX0KLQot c3RhdGljIGNvbnN0IHN0cnVjdCBieHRfZGRpX2J1Zl90cmFucyAqCi1ieHRfZ2V0X2J1Zl90cmFu c19kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCi17Ci0J Km5fZW50cmllcyA9IEFSUkFZX1NJWkUoYnh0X2RkaV90cmFuc2xhdGlvbnNfZHApOwotCXJldHVy biBieHRfZGRpX3RyYW5zbGF0aW9uc19kcDsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBieHRf ZGRpX2J1Zl90cmFucyAqCi1ieHRfZ2V0X2J1Zl90cmFuc19lZHAoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIsIGludCAqbl9lbnRyaWVzKQotewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwotCi0JaWYgKGRldl9wcml2 LT52YnQuZWRwLmxvd192c3dpbmcpIHsKLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoYnh0X2Rk aV90cmFuc2xhdGlvbnNfZWRwKTsKLQkJcmV0dXJuIGJ4dF9kZGlfdHJhbnNsYXRpb25zX2VkcDsK LQl9Ci0KLQlyZXR1cm4gYnh0X2dldF9idWZfdHJhbnNfZHAoZW5jb2Rlciwgbl9lbnRyaWVzKTsK LX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBieHRfZGRpX2J1Zl90cmFucyAqCi1ieHRfZ2V0X2J1 Zl90cmFuc19oZG1pKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmll cykKLXsKLQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShieHRfZGRpX3RyYW5zbGF0aW9uc19oZG1p KTsKLQlyZXR1cm4gYnh0X2RkaV90cmFuc2xhdGlvbnNfaGRtaTsKLX0KLQotc3RhdGljIGNvbnN0 IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCi1jbmxfZ2V0X2J1Zl90cmFuc19oZG1pKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmllcykKLXsKLQlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKLQl1 MzIgdm9sdGFnZSA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIENOTF9QT1JUX0NPTVBfRFczKSAm IFZPTFRBR0VfSU5GT19NQVNLOwotCi0JaWYgKHZvbHRhZ2UgPT0gVk9MVEFHRV9JTkZPXzBfODVW KSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJhbnNsYXRpb25zX2hkbWlf MF84NVYpOwotCQlyZXR1cm4gY25sX2RkaV90cmFuc2xhdGlvbnNfaGRtaV8wXzg1VjsKLQl9IGVs c2UgaWYgKHZvbHRhZ2UgPT0gVk9MVEFHRV9JTkZPXzBfOTVWKSB7Ci0JCSpuX2VudHJpZXMgPSBB UlJBWV9TSVpFKGNubF9kZGlfdHJhbnNsYXRpb25zX2hkbWlfMF85NVYpOwotCQlyZXR1cm4gY25s X2RkaV90cmFuc2xhdGlvbnNfaGRtaV8wXzk1VjsKLQl9IGVsc2UgaWYgKHZvbHRhZ2UgPT0gVk9M VEFHRV9JTkZPXzFfMDVWKSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJh bnNsYXRpb25zX2hkbWlfMV8wNVYpOwotCQlyZXR1cm4gY25sX2RkaV90cmFuc2xhdGlvbnNfaGRt aV8xXzA1VjsKLQl9IGVsc2UgewotCQkqbl9lbnRyaWVzID0gMTsgLyogc2h1dCB1cCBnY2MgKi8K LQkJTUlTU0lOR19DQVNFKHZvbHRhZ2UpOwotCX0KLQlyZXR1cm4gTlVMTDsKLX0KLQotc3RhdGlj IGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCi1jbmxfZ2V0X2J1Zl90cmFuc19kcChz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCi17Ci0Jc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7 Ci0JdTMyIHZvbHRhZ2UgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBDTkxfUE9SVF9DT01QX0RX MykgJiBWT0xUQUdFX0lORk9fTUFTSzsKLQotCWlmICh2b2x0YWdlID09IFZPTFRBR0VfSU5GT18w Xzg1VikgewotCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShjbmxfZGRpX3RyYW5zbGF0aW9uc19k cF8wXzg1Vik7Ci0JCXJldHVybiBjbmxfZGRpX3RyYW5zbGF0aW9uc19kcF8wXzg1VjsKLQl9IGVs c2UgaWYgKHZvbHRhZ2UgPT0gVk9MVEFHRV9JTkZPXzBfOTVWKSB7Ci0JCSpuX2VudHJpZXMgPSBB UlJBWV9TSVpFKGNubF9kZGlfdHJhbnNsYXRpb25zX2RwXzBfOTVWKTsKLQkJcmV0dXJuIGNubF9k ZGlfdHJhbnNsYXRpb25zX2RwXzBfOTVWOwotCX0gZWxzZSBpZiAodm9sdGFnZSA9PSBWT0xUQUdF X0lORk9fMV8wNVYpIHsKLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoY25sX2RkaV90cmFuc2xh dGlvbnNfZHBfMV8wNVYpOwotCQlyZXR1cm4gY25sX2RkaV90cmFuc2xhdGlvbnNfZHBfMV8wNVY7 Ci0JfSBlbHNlIHsKLQkJKm5fZW50cmllcyA9IDE7IC8qIHNodXQgdXAgZ2NjICovCi0JCU1JU1NJ TkdfQ0FTRSh2b2x0YWdlKTsKLQl9Ci0JcmV0dXJuIE5VTEw7Ci19Ci0KLXN0YXRpYyBjb25zdCBz dHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgotY25sX2dldF9idWZfdHJhbnNfZWRwKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmllcykKLXsKLQlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKLQl1MzIg dm9sdGFnZSA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIENOTF9QT1JUX0NPTVBfRFczKSAmIFZP TFRBR0VfSU5GT19NQVNLOwotCi0JaWYgKGRldl9wcml2LT52YnQuZWRwLmxvd192c3dpbmcpIHsK LQkJaWYgKHZvbHRhZ2UgPT0gVk9MVEFHRV9JTkZPXzBfODVWKSB7Ci0JCQkqbl9lbnRyaWVzID0g QVJSQVlfU0laRShjbmxfZGRpX3RyYW5zbGF0aW9uc19lZHBfMF84NVYpOwotCQkJcmV0dXJuIGNu bF9kZGlfdHJhbnNsYXRpb25zX2VkcF8wXzg1VjsKLQkJfSBlbHNlIGlmICh2b2x0YWdlID09IFZP TFRBR0VfSU5GT18wXzk1VikgewotCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoY25sX2RkaV90 cmFuc2xhdGlvbnNfZWRwXzBfOTVWKTsKLQkJCXJldHVybiBjbmxfZGRpX3RyYW5zbGF0aW9uc19l ZHBfMF85NVY7Ci0JCX0gZWxzZSBpZiAodm9sdGFnZSA9PSBWT0xUQUdFX0lORk9fMV8wNVYpIHsK LQkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJhbnNsYXRpb25zX2VkcF8xXzA1 Vik7Ci0JCQlyZXR1cm4gY25sX2RkaV90cmFuc2xhdGlvbnNfZWRwXzFfMDVWOwotCQl9IGVsc2Ug ewotCQkJKm5fZW50cmllcyA9IDE7IC8qIHNodXQgdXAgZ2NjICovCi0JCQlNSVNTSU5HX0NBU0Uo dm9sdGFnZSk7Ci0JCX0KLQkJcmV0dXJuIE5VTEw7Ci0JfSBlbHNlIHsKLQkJcmV0dXJuIGNubF9n ZXRfYnVmX3RyYW5zX2RwKGVuY29kZXIsIG5fZW50cmllcyk7Ci0JfQotfQotCi1zdGF0aWMgY29u c3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKLWljbF9nZXRfY29tYm9fYnVmX3RyYW5zX2hk bWkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCi0JCQkgICAgIGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAotCQkJICAgICBpbnQgKm5fZW50cmllcykKLXsK LQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNf aGRtaSk7Ci0JcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19oZG1pOwotfQot Ci1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKLWljbF9nZXRfY29tYm9f YnVmX3RyYW5zX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAotCQkJICAgY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCi0JCQkgICBpbnQgKm5fZW50cmll cykKLXsKLQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xh dGlvbnNfZHBfaGJyMik7Ci0JcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19k cF9oYnIyOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKLWlj bF9nZXRfY29tYm9fYnVmX3RyYW5zX2VkcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwK LQkJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKLQkJCSAg ICBpbnQgKm5fZW50cmllcykKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKLQotCWlmIChjcnRjX3N0YXRlLT5wb3J0X2Ns b2NrID4gNTQwMDAwKSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlf ZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMyk7Ci0JCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90 cmFuc2xhdGlvbnNfZWRwX2hicjM7Ci0JfSBlbHNlIGlmIChkZXZfcHJpdi0+dmJ0LmVkcC5sb3df dnN3aW5nKSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3Ry YW5zbGF0aW9uc19lZHBfaGJyMik7Ci0JCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xh dGlvbnNfZWRwX2hicjI7Ci0JfSBlbHNlIGlmIChJU19ERzEoZGV2X3ByaXYpICYmIGNydGNfc3Rh dGUtPnBvcnRfY2xvY2sgPiAyNzAwMDApIHsKLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoZGcx X2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicjJfaGJyMyk7Ci0JCXJldHVybiBkZzFf Y29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMl9oYnIzOwotCX0gZWxzZSBpZiAoSVNf REcxKGRldl9wcml2KSkgewotCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShkZzFfY29tYm9fcGh5 X2RkaV90cmFuc2xhdGlvbnNfZHBfcmJyX2hicik7Ci0JCXJldHVybiBkZzFfY29tYm9fcGh5X2Rk aV90cmFuc2xhdGlvbnNfZHBfcmJyX2hicjsKLQl9Ci0KLQlyZXR1cm4gaWNsX2dldF9jb21ib19i dWZfdHJhbnNfZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKLX0KLQotc3RhdGlj IGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCi1pY2xfZ2V0X2NvbWJvX2J1Zl90cmFu cyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKLQkJCWNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlLAotCQkJaW50ICpuX2VudHJpZXMpCi17Ci0JaWYgKGludGVs X2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0hETUkpKQotCQlyZXR1cm4g aWNsX2dldF9jb21ib19idWZfdHJhbnNfaGRtaShlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJp ZXMpOwotCWVsc2UgaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VU UFVUX0VEUCkpCi0JCXJldHVybiBpY2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19lZHAoZW5jb2Rlciwg Y3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKLQllbHNlCi0JCXJldHVybiBpY2xfZ2V0X2NvbWJvX2J1 Zl90cmFuc19kcChlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOwotfQotCi1zdGF0aWMg Y29uc3Qgc3RydWN0IGljbF9tZ19waHlfZGRpX2J1Zl90cmFucyAqCi1pY2xfZ2V0X21nX2J1Zl90 cmFuc19oZG1pKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAotCQkJICBjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKLQkJCSAgaW50ICpuX2VudHJpZXMpCi17 Ci0JKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX21nX3BoeV9kZGlfdHJhbnNsYXRpb25zX2hk bWkpOwotCXJldHVybiBpY2xfbWdfcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRtaTsKLX0KLQotc3Rh dGljIGNvbnN0IHN0cnVjdCBpY2xfbWdfcGh5X2RkaV9idWZfdHJhbnMgKgotaWNsX2dldF9tZ19i dWZfdHJhbnNfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCi0JCQljb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKLQkJCWludCAqbl9lbnRyaWVzKQotewot CWlmIChjcnRjX3N0YXRlLT5wb3J0X2Nsb2NrID4gMjcwMDAwKSB7Ci0JCSpuX2VudHJpZXMgPSBB UlJBWV9TSVpFKGljbF9tZ19waHlfZGRpX3RyYW5zbGF0aW9uc19oYnIyX2hicjMpOwotCQlyZXR1 cm4gaWNsX21nX3BoeV9kZGlfdHJhbnNsYXRpb25zX2hicjJfaGJyMzsKLQl9IGVsc2UgewotCQkq bl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfbWdfcGh5X2RkaV90cmFuc2xhdGlvbnNfcmJyX2hi cik7Ci0JCXJldHVybiBpY2xfbWdfcGh5X2RkaV90cmFuc2xhdGlvbnNfcmJyX2hicjsKLQl9Ci19 Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWNsX21nX3BoeV9kZGlfYnVmX3RyYW5zICoKLWljbF9n ZXRfbWdfYnVmX3RyYW5zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAotCQkgICAgIGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAotCQkgICAgIGludCAqbl9l bnRyaWVzKQotewotCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09V VFBVVF9IRE1JKSkKLQkJcmV0dXJuIGljbF9nZXRfbWdfYnVmX3RyYW5zX2hkbWkoZW5jb2Rlciwg Y3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKLQllbHNlCi0JCXJldHVybiBpY2xfZ2V0X21nX2J1Zl90 cmFuc19kcChlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOwotfQotCi1zdGF0aWMgY29u c3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKLWVobF9nZXRfY29tYm9fYnVmX3RyYW5zX2hk bWkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCi0JCQkgICAgIGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAotCQkJICAgICBpbnQgKm5fZW50cmllcykKLXsK LQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNf aGRtaSk7Ci0JcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19oZG1pOwotfQot Ci1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKLWVobF9nZXRfY29tYm9f YnVmX3RyYW5zX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAotCQkJICAgY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCi0JCQkgICBpbnQgKm5fZW50cmll cykKLXsKLQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShlaGxfY29tYm9fcGh5X2RkaV90cmFuc2xh dGlvbnNfZHApOwotCXJldHVybiBlaGxfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHA7Ci19 Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgotZWhsX2dldF9jb21i b19idWZfdHJhbnNfZWRwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAotCQkJICAgIGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAotCQkJICAgIGludCAqbl9l bnRyaWVzKQotewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo ZW5jb2Rlci0+YmFzZS5kZXYpOwotCi0JaWYgKGRldl9wcml2LT52YnQuZWRwLmxvd192c3dpbmcp IHsKLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRp b25zX2VkcF9oYnIyKTsKLQkJcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19l ZHBfaGJyMjsKLQl9Ci0KLQlyZXR1cm4gZWhsX2dldF9jb21ib19idWZfdHJhbnNfZHAoZW5jb2Rl ciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxf ZGRpX2J1Zl90cmFucyAqCi1laGxfZ2V0X2NvbWJvX2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlciwKLQkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlLAotCQkJaW50ICpuX2VudHJpZXMpCi17Ci0JaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0 Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0hETUkpKQotCQlyZXR1cm4gZWhsX2dldF9jb21ib19idWZf dHJhbnNfaGRtaShlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOwotCWVsc2UgaWYgKGlu dGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0VEUCkpCi0JCXJldHVy biBlaGxfZ2V0X2NvbWJvX2J1Zl90cmFuc19lZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRy aWVzKTsKLQllbHNlCi0JCXJldHVybiBlaGxfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChlbmNvZGVy LCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9k ZGlfYnVmX3RyYW5zICoKLWpzbF9nZXRfY29tYm9fYnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCi0JCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAotCQkJICAgICBpbnQgKm5fZW50cmllcykKLXsKLQkqbl9lbnRyaWVzID0g QVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRtaSk7Ci0JcmV0dXJu IGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19oZG1pOwotfQotCi1zdGF0aWMgY29uc3Qg c3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKLWpzbF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAotCQkJICAgY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCi0JCQkgICBpbnQgKm5fZW50cmllcykKLXsKLQkqbl9lbnRy aWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMik7 Ci0JcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIyOwotfQotCi1z dGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKLWpzbF9nZXRfY29tYm9fYnVm X3RyYW5zX2VkcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKLQkJCSAgICBjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKLQkJCSAgICBpbnQgKm5fZW50cmll cykKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29k ZXItPmJhc2UuZGV2KTsKLQotCWlmIChkZXZfcHJpdi0+dmJ0LmVkcC5sb3dfdnN3aW5nKSB7Ci0J CWlmIChjcnRjX3N0YXRlLT5wb3J0X2Nsb2NrID4gMjcwMDAwKSB7Ci0JCQkqbl9lbnRyaWVzID0g QVJSQVlfU0laRShqc2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjIpOwotCQkJ cmV0dXJuIGpzbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMjsKLQkJfSBlbHNl IHsKLQkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGpzbF9jb21ib19waHlfZGRpX3RyYW5zbGF0 aW9uc19lZHBfaGJyKTsKLQkJCXJldHVybiBqc2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNf ZWRwX2hicjsKLQkJfQotCX0KLQotCXJldHVybiBqc2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChl bmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0 IGNubF9kZGlfYnVmX3RyYW5zICoKLWpzbF9nZXRfY29tYm9fYnVmX3RyYW5zKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLAotCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUsCi0JCQlpbnQgKm5fZW50cmllcykKLXsKLQlpZiAoaW50ZWxfY3J0Y19oYXNfdHlw ZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfSERNSSkpCi0JCXJldHVybiBqc2xfZ2V0X2NvbWJv X2J1Zl90cmFuc19oZG1pKGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Ci0JZWxzZSBp ZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfRURQKSkKLQkJ cmV0dXJuIGpzbF9nZXRfY29tYm9fYnVmX3RyYW5zX2VkcChlbmNvZGVyLCBjcnRjX3N0YXRlLCBu X2VudHJpZXMpOwotCWVsc2UKLQkJcmV0dXJuIGpzbF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKGVu Y29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3Qg Y25sX2RkaV9idWZfdHJhbnMgKgotdGdsX2dldF9jb21ib19idWZfdHJhbnNfaGRtaShzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKLQkJCSAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCi0JCQkgICAgIGludCAqbl9lbnRyaWVzKQotewotCSpuX2VudHJp ZXMgPSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19oZG1pKTsKLQly ZXR1cm4gaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2hkbWk7Ci19Ci0KLXN0YXRpYyBj b25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgotdGdsX2dldF9jb21ib19idWZfdHJhbnNf ZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCi0JCQkgICBjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKLQkJCSAgIGludCAqbl9lbnRyaWVzKQotewotCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5k ZXYpOwotCi0JaWYgKGNydGNfc3RhdGUtPnBvcnRfY2xvY2sgPiAyNzAwMDApIHsKLQkJaWYgKElT X1JPQ0tFVExBS0UoZGV2X3ByaXYpKSB7Ci0JCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShya2xf Y29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMl9oYnIzKTsKLQkJCXJldHVybiBya2xf Y29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMl9oYnIzOwotCQl9IGVsc2UgaWYgKElT X1RHTF9VKGRldl9wcml2KSB8fCBJU19UR0xfWShkZXZfcHJpdikpIHsKLQkJCSpuX2VudHJpZXMg PSBBUlJBWV9TSVpFKHRnbF91eV9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIyKTsK LQkJCXJldHVybiB0Z2xfdXlfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMjsKLQkJ fSBlbHNlIHsKLQkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHRnbF9jb21ib19waHlfZGRpX3Ry YW5zbGF0aW9uc19kcF9oYnIyKTsKLQkJCXJldHVybiB0Z2xfY29tYm9fcGh5X2RkaV90cmFuc2xh dGlvbnNfZHBfaGJyMjsKLQkJfQotCX0gZWxzZSB7Ci0JCWlmIChJU19ST0NLRVRMQUtFKGRldl9w cml2KSkgewotCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUocmtsX2NvbWJvX3BoeV9kZGlfdHJh bnNsYXRpb25zX2RwX2hicik7Ci0JCQlyZXR1cm4gcmtsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRp b25zX2RwX2hicjsKLQkJfSBlbHNlIHsKLQkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHRnbF9j b21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIpOwotCQkJcmV0dXJuIHRnbF9jb21ib19w aHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnI7Ci0JCX0KLQl9Ci19Ci0KLXN0YXRpYyBjb25zdCBz dHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgotdGdsX2dldF9jb21ib19idWZfdHJhbnNfZWRwKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAotCQkJICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlLAotCQkJICAgIGludCAqbl9lbnRyaWVzKQotewotCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYp OwotCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoZW5jb2Rlcik7 Ci0KLQlpZiAoY3J0Y19zdGF0ZS0+cG9ydF9jbG9jayA+IDU0MDAwMCkgewotCQkqbl9lbnRyaWVz ID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjMpOwot CQlyZXR1cm4gaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIzOwotCX0gZWxz ZSBpZiAoZGV2X3ByaXYtPnZidC5lZHAuaG9ibCAmJiAhaW50ZWxfZHAtPmhvYmxfZmFpbGVkKSB7 Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHRnbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9u c19lZHBfaGJyMl9ob2JsKTsKLQkJcmV0dXJuIHRnbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9u c19lZHBfaGJyMl9ob2JsOwotCX0gZWxzZSBpZiAoZGV2X3ByaXYtPnZidC5lZHAubG93X3Zzd2lu ZykgewotCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xh dGlvbnNfZWRwX2hicjIpOwotCQlyZXR1cm4gaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25z X2VkcF9oYnIyOwotCX0KLQotCXJldHVybiB0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChlbmNv ZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNu bF9kZGlfYnVmX3RyYW5zICoKLXRnbF9nZXRfY29tYm9fYnVmX3RyYW5zKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLAotCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUsCi0JCQlpbnQgKm5fZW50cmllcykKLXsKLQlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShj cnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfSERNSSkpCi0JCXJldHVybiB0Z2xfZ2V0X2NvbWJvX2J1 Zl90cmFuc19oZG1pKGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Ci0JZWxzZSBpZiAo aW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfRURQKSkKLQkJcmV0 dXJuIHRnbF9nZXRfY29tYm9fYnVmX3RyYW5zX2VkcChlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2Vu dHJpZXMpOwotCWVsc2UKLQkJcmV0dXJuIHRnbF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKGVuY29k ZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgdGds X2RrbF9waHlfZGRpX2J1Zl90cmFucyAqCi10Z2xfZ2V0X2RrbF9idWZfdHJhbnNfaGRtaShzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKLQkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlLAotCQkJICAgaW50ICpuX2VudHJpZXMpCi17Ci0JKm5fZW50cmll cyA9IEFSUkFZX1NJWkUodGdsX2RrbF9waHlfaGRtaV9kZGlfdHJhbnMpOwotCXJldHVybiB0Z2xf ZGtsX3BoeV9oZG1pX2RkaV90cmFuczsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCB0Z2xfZGts X3BoeV9kZGlfYnVmX3RyYW5zICoKLXRnbF9nZXRfZGtsX2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwKLQkJCSBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKLQkJCSBpbnQgKm5fZW50cmllcykKLXsKLQlpZiAoY3J0Y19zdGF0ZS0+cG9y dF9jbG9jayA+IDI3MDAwMCkgewotCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRSh0Z2xfZGtsX3Bo eV9kcF9kZGlfdHJhbnNfaGJyMik7Ci0JCXJldHVybiB0Z2xfZGtsX3BoeV9kcF9kZGlfdHJhbnNf aGJyMjsKLQl9IGVsc2UgewotCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRSh0Z2xfZGtsX3BoeV9k cF9kZGlfdHJhbnMpOwotCQlyZXR1cm4gdGdsX2RrbF9waHlfZHBfZGRpX3RyYW5zOwotCX0KLX0K LQotc3RhdGljIGNvbnN0IHN0cnVjdCB0Z2xfZGtsX3BoeV9kZGlfYnVmX3RyYW5zICoKLXRnbF9n ZXRfZGtsX2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKLQkJICAgICAg Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCi0JCSAgICAgIGludCAq bl9lbnRyaWVzKQotewotCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVM X09VVFBVVF9IRE1JKSkKLQkJcmV0dXJuIHRnbF9nZXRfZGtsX2J1Zl90cmFuc19oZG1pKGVuY29k ZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Ci0JZWxzZQotCQlyZXR1cm4gdGdsX2dldF9ka2xf YnVmX3RyYW5zX2RwKGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Ci19Ci0KIHN0YXRp YyBpbnQgaW50ZWxfZGRpX2hkbWlfbGV2ZWwoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs CiAJCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiB7CiAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRl dik7CiAJaW50IG5fZW50cmllcywgbGV2ZWwsIGRlZmF1bHRfZW50cnk7Ci0JZW51bSBwaHkgcGh5 ID0gaW50ZWxfcG9ydF90b19waHkoZGV2X3ByaXYsIGVuY29kZXItPnBvcnQpOwogCi0JaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gMTIpIHsKLQkJaWYgKGludGVsX3BoeV9pc19jb21ibyhkZXZf cHJpdiwgcGh5KSkKLQkJCXRnbF9nZXRfY29tYm9fYnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgY3J0 Y19zdGF0ZSwgJm5fZW50cmllcyk7Ci0JCWVsc2UKLQkJCXRnbF9nZXRfZGtsX2J1Zl90cmFuc19o ZG1pKGVuY29kZXIsIGNydGNfc3RhdGUsICZuX2VudHJpZXMpOwotCQlkZWZhdWx0X2VudHJ5ID0g bl9lbnRyaWVzIC0gMTsKLQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPT0gMTEpIHsK LQkJaWYgKGludGVsX3BoeV9pc19jb21ibyhkZXZfcHJpdiwgcGh5KSkKLQkJCWljbF9nZXRfY29t Ym9fYnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgY3J0Y19zdGF0ZSwgJm5fZW50cmllcyk7Ci0JCWVs c2UKLQkJCWljbF9nZXRfbWdfYnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgY3J0Y19zdGF0ZSwgJm5f ZW50cmllcyk7Ci0JCWRlZmF1bHRfZW50cnkgPSBuX2VudHJpZXMgLSAxOwotCX0gZWxzZSBpZiAo SVNfQ0FOTk9OTEFLRShkZXZfcHJpdikpIHsKLQkJY25sX2dldF9idWZfdHJhbnNfaGRtaShlbmNv ZGVyLCAmbl9lbnRyaWVzKTsKLQkJZGVmYXVsdF9lbnRyeSA9IG5fZW50cmllcyAtIDE7Ci0JfSBl bHNlIGlmIChJU19HRU45X0xQKGRldl9wcml2KSkgewotCQlieHRfZ2V0X2J1Zl90cmFuc19oZG1p KGVuY29kZXIsICZuX2VudHJpZXMpOwotCQlkZWZhdWx0X2VudHJ5ID0gbl9lbnRyaWVzIC0gMTsK LQl9IGVsc2UgaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKSB7Ci0JCWludGVsX2RkaV9nZXRfYnVm X3RyYW5zX2hkbWkoZW5jb2RlciwgJm5fZW50cmllcyk7Ci0JCWRlZmF1bHRfZW50cnkgPSA4Owot CX0gZWxzZSBpZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSkgewotCQlpbnRlbF9kZGlfZ2V0X2J1 Zl90cmFuc19oZG1pKGVuY29kZXIsICZuX2VudHJpZXMpOwotCQlkZWZhdWx0X2VudHJ5ID0gNzsK LQl9IGVsc2UgaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpKSB7Ci0JCWludGVsX2RkaV9nZXRfYnVm X3RyYW5zX2hkbWkoZW5jb2RlciwgJm5fZW50cmllcyk7Ci0JCWRlZmF1bHRfZW50cnkgPSA2Owot CX0gZWxzZSB7Ci0JCWRybV9XQVJOKCZkZXZfcHJpdi0+ZHJtLCAxLCAiZGRpIHRyYW5zbGF0aW9u IHRhYmxlIG1pc3NpbmdcbiIpOworCW5fZW50cmllcyA9IGludGVsX2RkaV9oZG1pX251bV9lbnRy aWVzKGVuY29kZXIsIGNydGNfc3RhdGUsICZkZWZhdWx0X2VudHJ5KTsKKwlpZiAobl9lbnRyaWVz ID09IDApCiAJCXJldHVybiAwOwotCX0KLQotCWlmIChkcm1fV0FSTl9PTl9PTkNFKCZkZXZfcHJp di0+ZHJtLCBuX2VudHJpZXMgPT0gMCkpCi0JCXJldHVybiAwOwotCiAJbGV2ZWwgPSBpbnRlbF9i aW9zX2hkbWlfbGV2ZWxfc2hpZnQoZW5jb2Rlcik7CiAJaWYgKGxldmVsIDwgMCkKIAkJbGV2ZWwg PSBkZWZhdWx0X2VudHJ5OwpAQCAtMTYzNSw2ICsyNTYsOSBAQCB2b2lkIGhzd19mZGlfbGlua190 cmFpbihzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKIAl1MzIg dGVtcCwgaSwgcnhfY3RsX3ZhbCwgZGRpX3BsbF9zZWw7CisJaW50IG5fZW50cmllczsKKworCWlu dGVsX2RkaV9nZXRfYnVmX3RyYW5zX2ZkaShkZXZfcHJpdiwgJm5fZW50cmllcyk7CiAKIAlpbnRl bF9wcmVwYXJlX2RwX2RkaV9idWZmZXJzKGVuY29kZXIsIGNydGNfc3RhdGUpOwogCkBAIC0xNjY3 LDcgKzI5MSw3IEBAIHZvaWQgaHN3X2ZkaV9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLAogCiAJLyogU3RhcnQgdGhlIHRyYWluaW5nIGl0ZXJhdGluZyB0aHJvdWdoIGF2 YWlsYWJsZSB2b2x0YWdlcyBhbmQgZW1waGFzaXMsCiAJICogdGVzdGluZyBlYWNoIHZhbHVlIHR3 aWNlLiAqLwotCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGhzd19kZGlfdHJhbnNsYXRpb25z X2ZkaSkgKiAyOyBpKyspIHsKKwlmb3IgKGkgPSAwOyBpIDwgbl9lbnRyaWVzICogMjsgaSsrKSB7 CiAJCS8qIENvbmZpZ3VyZSBEUF9UUF9DVEwgd2l0aCBhdXRvLXRyYWluaW5nICovCiAJCWludGVs X2RlX3dyaXRlKGRldl9wcml2LCBEUF9UUF9DVEwoUE9SVF9FKSwKIAkJCSAgICAgICBEUF9UUF9D VExfRkRJX0FVVE9UUkFJTiB8CkBAIC0xNzE2LDcgKzM0MCw3IEBAIHZvaWQgaHN3X2ZkaV9saW5r X3RyYWluKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCQkgKiBMZWF2ZSB0aGluZ3Mg ZW5hYmxlZCBldmVuIGlmIHdlIGZhaWxlZCB0byB0cmFpbiBGREkuCiAJCSAqIFJlc3VsdHMgaW4g bGVzcyBmaXJld29ya3MgZnJvbSB0aGUgc3RhdGUgY2hlY2tlci4KIAkJICovCi0JCWlmIChpID09 IEFSUkFZX1NJWkUoaHN3X2RkaV90cmFuc2xhdGlvbnNfZmRpKSAqIDIgLSAxKSB7CisJCWlmIChp ID09IG5fZW50cmllcyAqIDIgLSAxKSB7CiAJCQlkcm1fZXJyKCZkZXZfcHJpdi0+ZHJtLCAiRkRJ IGxpbmsgdHJhaW5pbmcgZmFpbGVkIVxuIik7CiAJCQlicmVhazsKIAkJfQpAQCAtMjQ3OCwxMyAr MTEwMiw3IEBAIHN0YXRpYyB2b2lkIGJ4dF9kZGlfdnN3aW5nX3NlcXVlbmNlKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLAogCWVudW0gcG9ydCBwb3J0ID0gZW5jb2Rlci0+cG9ydDsKIAlp bnQgbl9lbnRyaWVzOwogCi0JaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5U RUxfT1VUUFVUX0hETUkpKQotCQlkZGlfdHJhbnNsYXRpb25zID0gYnh0X2dldF9idWZfdHJhbnNf aGRtaShlbmNvZGVyLCAmbl9lbnRyaWVzKTsKLQllbHNlIGlmIChpbnRlbF9jcnRjX2hhc190eXBl KGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9FRFApKQotCQlkZGlfdHJhbnNsYXRpb25zID0gYnh0 X2dldF9idWZfdHJhbnNfZWRwKGVuY29kZXIsICZuX2VudHJpZXMpOwotCWVsc2UKLQkJZGRpX3Ry YW5zbGF0aW9ucyA9IGJ4dF9nZXRfYnVmX3RyYW5zX2RwKGVuY29kZXIsICZuX2VudHJpZXMpOwot CisJZGRpX3RyYW5zbGF0aW9ucyA9IGJ4dF9nZXRfYnVmX3RyYW5zKGVuY29kZXIsIGNydGNfc3Rh dGUsICZuX2VudHJpZXMpOwogCWlmIChkcm1fV0FSTl9PTl9PTkNFKCZkZXZfcHJpdi0+ZHJtLCAh ZGRpX3RyYW5zbGF0aW9ucykpCiAJCXJldHVybjsKIAlpZiAoZHJtX1dBUk5fT05fT05DRSgmZGV2 X3ByaXYtPmRybSwgbGV2ZWwgPj0gbl9lbnRyaWVzKSkKQEAgLTI1MjEsMTUgKzExMzksOSBAQCBz dGF0aWMgdTggaW50ZWxfZGRpX2RwX3ZvbHRhZ2VfbWF4KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHAsCiAJCWVsc2UKIAkJCWljbF9nZXRfbWdfYnVmX3RyYW5zKGVuY29kZXIsIGNydGNfc3RhdGUs ICZuX2VudHJpZXMpOwogCX0gZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikpIHsKLQkJ aWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0VEUCkpCi0J CQljbmxfZ2V0X2J1Zl90cmFuc19lZHAoZW5jb2RlciwgJm5fZW50cmllcyk7Ci0JCWVsc2UKLQkJ CWNubF9nZXRfYnVmX3RyYW5zX2RwKGVuY29kZXIsICZuX2VudHJpZXMpOworCQljbmxfZ2V0X2J1 Zl90cmFucyhlbmNvZGVyLCBjcnRjX3N0YXRlLCAmbl9lbnRyaWVzKTsKIAl9IGVsc2UgaWYgKElT X0dFTjlfTFAoZGV2X3ByaXYpKSB7Ci0JCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3Rh dGUsIElOVEVMX09VVFBVVF9FRFApKQotCQkJYnh0X2dldF9idWZfdHJhbnNfZWRwKGVuY29kZXIs ICZuX2VudHJpZXMpOwotCQllbHNlCi0JCQlieHRfZ2V0X2J1Zl90cmFuc19kcChlbmNvZGVyLCAm bl9lbnRyaWVzKTsKKwkJYnh0X2dldF9idWZfdHJhbnMoZW5jb2RlciwgY3J0Y19zdGF0ZSwgJm5f ZW50cmllcyk7CiAJfSBlbHNlIHsKIAkJaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0 ZSwgSU5URUxfT1VUUFVUX0VEUCkpCiAJCQlpbnRlbF9kZGlfZ2V0X2J1Zl90cmFuc19lZHAoZW5j b2RlciwgJm5fZW50cmllcyk7CkBAIC0yNTY3LDEyICsxMTc5LDcgQEAgc3RhdGljIHZvaWQgY25s X2RkaV92c3dpbmdfcHJvZ3JhbShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAlpbnQg bl9lbnRyaWVzLCBsbjsKIAl1MzIgdmFsOwogCi0JaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0 Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0hETUkpKQotCQlkZGlfdHJhbnNsYXRpb25zID0gY25sX2dl dF9idWZfdHJhbnNfaGRtaShlbmNvZGVyLCAmbl9lbnRyaWVzKTsKLQllbHNlIGlmIChpbnRlbF9j cnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9FRFApKQotCQlkZGlfdHJhbnNs YXRpb25zID0gY25sX2dldF9idWZfdHJhbnNfZWRwKGVuY29kZXIsICZuX2VudHJpZXMpOwotCWVs c2UKLQkJZGRpX3RyYW5zbGF0aW9ucyA9IGNubF9nZXRfYnVmX3RyYW5zX2RwKGVuY29kZXIsICZu X2VudHJpZXMpOworCWRkaV90cmFuc2xhdGlvbnMgPSBjbmxfZ2V0X2J1Zl90cmFucyhlbmNvZGVy LCBjcnRjX3N0YXRlLCAmbl9lbnRyaWVzKTsKIAogCWlmIChkcm1fV0FSTl9PTl9PTkNFKCZkZXZf cHJpdi0+ZHJtLCAhZGRpX3RyYW5zbGF0aW9ucykpCiAJCXJldHVybjsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpX2J1Zl90cmFucy5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGlfYnVmX3RyYW5zLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zYWZhYTFiYTM5MWUKLS0tIC9kZXYvbnVsbAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaV9idWZfdHJhbnMuYwpA QCAtMCwwICsxLDEzNTggQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKKy8qCisg KiBDb3B5cmlnaHQgwqkgMjAyMCBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisKKyNpbmNsdWRlICJp OTE1X2Rydi5oIgorI2luY2x1ZGUgImludGVsX2RkaS5oIgorI2luY2x1ZGUgImludGVsX2RkaV9i dWZfdHJhbnMuaCIKKyNpbmNsdWRlICJpbnRlbF9kaXNwbGF5X3R5cGVzLmgiCisKKy8qIEhETUkv RFZJIG1vZGVzIGlnbm9yZSBldmVyeXRoaW5nIGJ1dCB0aGUgbGFzdCAyIGl0ZW1zLiBTbyB3ZSBz aGFyZQorICogdGhlbSBmb3IgYm90aCBEUCBhbmQgRkRJIHRyYW5zcG9ydHMsIGFsbG93aW5nIHRo b3NlIHBvcnRzIHRvCisgKiBhdXRvbWF0aWNhbGx5IGFkYXB0IHRvIEhETUkgY29ubmVjdGlvbnMg YXMgd2VsbAorICovCitzdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgaHN3X2RkaV90 cmFuc2xhdGlvbnNfZHBbXSA9IHsKKwl7IDB4MDBGRkZGRkYsIDB4MDAwNjAwMEUsIDB4MCB9LAor CXsgMHgwMEQ3NUZGRiwgMHgwMDA1MDAwQSwgMHgwIH0sCisJeyAweDAwQzMwRkZGLCAweDAwMDQw MDA2LCAweDAgfSwKKwl7IDB4ODBBQUFGRkYsIDB4MDAwQjAwMDAsIDB4MCB9LAorCXsgMHgwMEZG RkZGRiwgMHgwMDA1MDAwQSwgMHgwIH0sCisJeyAweDAwRDc1RkZGLCAweDAwMEMwMDA0LCAweDAg fSwKKwl7IDB4ODBDMzBGRkYsIDB4MDAwQjAwMDAsIDB4MCB9LAorCXsgMHgwMEZGRkZGRiwgMHgw MDA0MDAwNiwgMHgwIH0sCisJeyAweDgwRDc1RkZGLCAweDAwMEIwMDAwLCAweDAgfSwKK307CisK K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBoc3dfZGRpX3RyYW5zbGF0aW9uc19m ZGlbXSA9IHsKKwl7IDB4MDBGRkZGRkYsIDB4MDAwNzAwMEUsIDB4MCB9LAorCXsgMHgwMEQ3NUZG RiwgMHgwMDBGMDAwQSwgMHgwIH0sCisJeyAweDAwQzMwRkZGLCAweDAwMDYwMDA2LCAweDAgfSwK Kwl7IDB4MDBBQUFGRkYsIDB4MDAxRTAwMDAsIDB4MCB9LAorCXsgMHgwMEZGRkZGRiwgMHgwMDBG MDAwQSwgMHgwIH0sCisJeyAweDAwRDc1RkZGLCAweDAwMTYwMDA0LCAweDAgfSwKKwl7IDB4MDBD MzBGRkYsIDB4MDAxRTAwMDAsIDB4MCB9LAorCXsgMHgwMEZGRkZGRiwgMHgwMDA2MDAwNiwgMHgw IH0sCisJeyAweDAwRDc1RkZGLCAweDAwMUUwMDAwLCAweDAgfSwKK307CisKK3N0YXRpYyBjb25z dCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBoc3dfZGRpX3RyYW5zbGF0aW9uc19oZG1pW10gPSB7CisJ CQkJCS8qIElkeAlOVCBtViBkCVQgbVYgZAlkYgkqLworCXsgMHgwMEZGRkZGRiwgMHgwMDA2MDAw RSwgMHgwIH0sLyogMDoJNDAwCTQwMAkwCSovCisJeyAweDAwRTc5RkZGLCAweDAwMEUwMDBDLCAw eDAgfSwvKiAxOgk0MDAJNTAwCTIJKi8KKwl7IDB4MDBENzVGRkYsIDB4MDAwNTAwMEEsIDB4MCB9 LC8qIDI6CTQwMAk2MDAJMy41CSovCisJeyAweDAwRkZGRkZGLCAweDAwMDUwMDBBLCAweDAgfSwv KiAzOgk2MDAJNjAwCTAJKi8KKwl7IDB4MDBFNzlGRkYsIDB4MDAxRDAwMDcsIDB4MCB9LC8qIDQ6 CTYwMAk3NTAJMgkqLworCXsgMHgwMEQ3NUZGRiwgMHgwMDBDMDAwNCwgMHgwIH0sLyogNToJNjAw CTkwMAkzLjUJKi8KKwl7IDB4MDBGRkZGRkYsIDB4MDAwNDAwMDYsIDB4MCB9LC8qIDY6CTgwMAk4 MDAJMAkqLworCXsgMHg4MEU3OUZGRiwgMHgwMDAzMDAwMiwgMHgwIH0sLyogNzoJODAwCTEwMDAJ MgkqLworCXsgMHgwMEZGRkZGRiwgMHgwMDE0MDAwNSwgMHgwIH0sLyogODoJODUwCTg1MAkwCSov CisJeyAweDAwRkZGRkZGLCAweDAwMEMwMDA0LCAweDAgfSwvKiA5Ogk5MDAJOTAwCTAJKi8KKwl7 IDB4MDBGRkZGRkYsIDB4MDAxQzAwMDMsIDB4MCB9LC8qIDEwOgk5NTAJOTUwCTAJKi8KKwl7IDB4 ODBGRkZGRkYsIDB4MDAwMzAwMDIsIDB4MCB9LC8qIDExOgkxMDAwCTEwMDAJMAkqLworfTsKKwor c3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIGJkd19kZGlfdHJhbnNsYXRpb25zX2Vk cFtdID0geworCXsgMHgwMEZGRkZGRiwgMHgwMDAwMDAxMiwgMHgwIH0sCisJeyAweDAwRUJBRkZG LCAweDAwMDIwMDExLCAweDAgfSwKKwl7IDB4MDBDNzFGRkYsIDB4MDAwNjAwMEYsIDB4MCB9LAor CXsgMHgwMEFBQUZGRiwgMHgwMDBFMDAwQSwgMHgwIH0sCisJeyAweDAwRkZGRkZGLCAweDAwMDIw MDExLCAweDAgfSwKKwl7IDB4MDBEQjZGRkYsIDB4MDAwNTAwMEYsIDB4MCB9LAorCXsgMHgwMEJF RUZGRiwgMHgwMDBBMDAwQywgMHgwIH0sCisJeyAweDAwRkZGRkZGLCAweDAwMDUwMDBGLCAweDAg fSwKKwl7IDB4MDBEQjZGRkYsIDB4MDAwQTAwMEMsIDB4MCB9LAorfTsKKworc3RhdGljIGNvbnN0 IHN0cnVjdCBkZGlfYnVmX3RyYW5zIGJkd19kZGlfdHJhbnNsYXRpb25zX2RwW10gPSB7CisJeyAw eDAwRkZGRkZGLCAweDAwMDcwMDBFLCAweDAgfSwKKwl7IDB4MDBENzVGRkYsIDB4MDAwRTAwMEEs IDB4MCB9LAorCXsgMHgwMEJFRkZGRiwgMHgwMDE0MDAwNiwgMHgwIH0sCisJeyAweDgwQjJDRkZG LCAweDAwMUIwMDAyLCAweDAgfSwKKwl7IDB4MDBGRkZGRkYsIDB4MDAwRTAwMEEsIDB4MCB9LAor CXsgMHgwMERCNkZGRiwgMHgwMDE2MDAwNSwgMHgwIH0sCisJeyAweDgwQzcxRkZGLCAweDAwMUEw MDAyLCAweDAgfSwKKwl7IDB4MDBGN0RGRkYsIDB4MDAxODAwMDQsIDB4MCB9LAorCXsgMHg4MEQ3 NUZGRiwgMHgwMDFCMDAwMiwgMHgwIH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9i dWZfdHJhbnMgYmR3X2RkaV90cmFuc2xhdGlvbnNfZmRpW10gPSB7CisJeyAweDAwRkZGRkZGLCAw eDAwMDEwMDBFLCAweDAgfSwKKwl7IDB4MDBENzVGRkYsIDB4MDAwNDAwMEEsIDB4MCB9LAorCXsg MHgwMEMzMEZGRiwgMHgwMDA3MDAwNiwgMHgwIH0sCisJeyAweDAwQUFBRkZGLCAweDAwMEMwMDAw LCAweDAgfSwKKwl7IDB4MDBGRkZGRkYsIDB4MDAwNDAwMEEsIDB4MCB9LAorCXsgMHgwMEQ3NUZG RiwgMHgwMDA5MDAwNCwgMHgwIH0sCisJeyAweDAwQzMwRkZGLCAweDAwMEMwMDAwLCAweDAgfSwK Kwl7IDB4MDBGRkZGRkYsIDB4MDAwNzAwMDYsIDB4MCB9LAorCXsgMHgwMEQ3NUZGRiwgMHgwMDBD MDAwMCwgMHgwIH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgYmR3 X2RkaV90cmFuc2xhdGlvbnNfaGRtaVtdID0geworCQkJCQkvKiBJZHgJTlQgbVYgZAlUIG1WIGRm CWRiCSovCisJeyAweDAwRkZGRkZGLCAweDAwMDcwMDBFLCAweDAgfSwvKiAwOgk0MDAJNDAwCTAJ Ki8KKwl7IDB4MDBENzVGRkYsIDB4MDAwRTAwMEEsIDB4MCB9LC8qIDE6CTQwMAk2MDAJMy41CSov CisJeyAweDAwQkVGRkZGLCAweDAwMTQwMDA2LCAweDAgfSwvKiAyOgk0MDAJODAwCTYJKi8KKwl7 IDB4MDBGRkZGRkYsIDB4MDAwOTAwMEQsIDB4MCB9LC8qIDM6CTQ1MAk0NTAJMAkqLworCXsgMHgw MEZGRkZGRiwgMHgwMDBFMDAwQSwgMHgwIH0sLyogNDoJNjAwCTYwMAkwCSovCisJeyAweDAwRDdG RkZGLCAweDAwMTQwMDA2LCAweDAgfSwvKiA1Ogk2MDAJODAwCTIuNQkqLworCXsgMHg4MENCMkZG RiwgMHgwMDFCMDAwMiwgMHgwIH0sLyogNjoJNjAwCTEwMDAJNC41CSovCisJeyAweDAwRkZGRkZG LCAweDAwMTQwMDA2LCAweDAgfSwvKiA3Ogk4MDAJODAwCTAJKi8KKwl7IDB4ODBFNzlGRkYsIDB4 MDAxQjAwMDIsIDB4MCB9LC8qIDg6CTgwMAkxMDAwCTIJKi8KKwl7IDB4ODBGRkZGRkYsIDB4MDAx QjAwMDIsIDB4MCB9LC8qIDk6CTEwMDAJMTAwMAkwCSovCit9OworCisvKiBTa3lsYWtlIEggYW5k IFMgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBza2xfZGRpX3RyYW5zbGF0 aW9uc19kcFtdID0geworCXsgMHgwMDAwMjAxNiwgMHgwMDAwMDBBMCwgMHgwIH0sCisJeyAweDAw MDA1MDEyLCAweDAwMDAwMDlCLCAweDAgfSwKKwl7IDB4MDAwMDcwMTEsIDB4MDAwMDAwODgsIDB4 MCB9LAorCXsgMHg4MDAwOTAxMCwgMHgwMDAwMDBDMCwgMHgxIH0sCisJeyAweDAwMDAyMDE2LCAw eDAwMDAwMDlCLCAweDAgfSwKKwl7IDB4MDAwMDUwMTIsIDB4MDAwMDAwODgsIDB4MCB9LAorCXsg MHg4MDAwNzAxMSwgMHgwMDAwMDBDMCwgMHgxIH0sCisJeyAweDAwMDAyMDE2LCAweDAwMDAwMERG LCAweDAgfSwKKwl7IDB4ODAwMDUwMTIsIDB4MDAwMDAwQzAsIDB4MSB9LAorfTsKKworLyogU2t5 bGFrZSBVICovCitzdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgc2tsX3VfZGRpX3Ry YW5zbGF0aW9uc19kcFtdID0geworCXsgMHgwMDAwMjAxQiwgMHgwMDAwMDBBMiwgMHgwIH0sCisJ eyAweDAwMDA1MDEyLCAweDAwMDAwMDg4LCAweDAgfSwKKwl7IDB4ODAwMDcwMTEsIDB4MDAwMDAw Q0QsIDB4MSB9LAorCXsgMHg4MDAwOTAxMCwgMHgwMDAwMDBDMCwgMHgxIH0sCisJeyAweDAwMDAy MDFCLCAweDAwMDAwMDlELCAweDAgfSwKKwl7IDB4ODAwMDUwMTIsIDB4MDAwMDAwQzAsIDB4MSB9 LAorCXsgMHg4MDAwNzAxMSwgMHgwMDAwMDBDMCwgMHgxIH0sCisJeyAweDAwMDAyMDE2LCAweDAw MDAwMDg4LCAweDAgfSwKKwl7IDB4ODAwMDUwMTIsIDB4MDAwMDAwQzAsIDB4MSB9LAorfTsKKwor LyogU2t5bGFrZSBZICovCitzdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgc2tsX3lf ZGRpX3RyYW5zbGF0aW9uc19kcFtdID0geworCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBMiwgMHgw IH0sCisJeyAweDAwMDA1MDEyLCAweDAwMDAwMDg4LCAweDAgfSwKKwl7IDB4ODAwMDcwMTEsIDB4 MDAwMDAwQ0QsIDB4MyB9LAorCXsgMHg4MDAwOTAxMCwgMHgwMDAwMDBDMCwgMHgzIH0sCisJeyAw eDAwMDAwMDE4LCAweDAwMDAwMDlELCAweDAgfSwKKwl7IDB4ODAwMDUwMTIsIDB4MDAwMDAwQzAs IDB4MyB9LAorCXsgMHg4MDAwNzAxMSwgMHgwMDAwMDBDMCwgMHgzIH0sCisJeyAweDAwMDAwMDE4 LCAweDAwMDAwMDg4LCAweDAgfSwKKwl7IDB4ODAwMDUwMTIsIDB4MDAwMDAwQzAsIDB4MyB9LAor fTsKKworLyogS2FieWxha2UgSCBhbmQgUyAqLworc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVm X3RyYW5zIGtibF9kZGlfdHJhbnNsYXRpb25zX2RwW10gPSB7CisJeyAweDAwMDAyMDE2LCAweDAw MDAwMEEwLCAweDAgfSwKKwl7IDB4MDAwMDUwMTIsIDB4MDAwMDAwOUIsIDB4MCB9LAorCXsgMHgw MDAwNzAxMSwgMHgwMDAwMDA4OCwgMHgwIH0sCisJeyAweDgwMDA5MDEwLCAweDAwMDAwMEMwLCAw eDEgfSwKKwl7IDB4MDAwMDIwMTYsIDB4MDAwMDAwOUIsIDB4MCB9LAorCXsgMHgwMDAwNTAxMiwg MHgwMDAwMDA4OCwgMHgwIH0sCisJeyAweDgwMDA3MDExLCAweDAwMDAwMEMwLCAweDEgfSwKKwl7 IDB4MDAwMDIwMTYsIDB4MDAwMDAwOTcsIDB4MCB9LAorCXsgMHg4MDAwNTAxMiwgMHgwMDAwMDBD MCwgMHgxIH0sCit9OworCisvKiBLYWJ5bGFrZSBVICovCitzdGF0aWMgY29uc3Qgc3RydWN0IGRk aV9idWZfdHJhbnMga2JsX3VfZGRpX3RyYW5zbGF0aW9uc19kcFtdID0geworCXsgMHgwMDAwMjAx QiwgMHgwMDAwMDBBMSwgMHgwIH0sCisJeyAweDAwMDA1MDEyLCAweDAwMDAwMDg4LCAweDAgfSwK Kwl7IDB4ODAwMDcwMTEsIDB4MDAwMDAwQ0QsIDB4MyB9LAorCXsgMHg4MDAwOTAxMCwgMHgwMDAw MDBDMCwgMHgzIH0sCisJeyAweDAwMDAyMDFCLCAweDAwMDAwMDlELCAweDAgfSwKKwl7IDB4ODAw MDUwMTIsIDB4MDAwMDAwQzAsIDB4MyB9LAorCXsgMHg4MDAwNzAxMSwgMHgwMDAwMDBDMCwgMHgz IH0sCisJeyAweDAwMDAyMDE2LCAweDAwMDAwMDRGLCAweDAgfSwKKwl7IDB4ODAwMDUwMTIsIDB4 MDAwMDAwQzAsIDB4MyB9LAorfTsKKworLyogS2FieWxha2UgWSAqLworc3RhdGljIGNvbnN0IHN0 cnVjdCBkZGlfYnVmX3RyYW5zIGtibF95X2RkaV90cmFuc2xhdGlvbnNfZHBbXSA9IHsKKwl7IDB4 MDAwMDEwMTcsIDB4MDAwMDAwQTEsIDB4MCB9LAorCXsgMHgwMDAwNTAxMiwgMHgwMDAwMDA4OCwg MHgwIH0sCisJeyAweDgwMDA3MDExLCAweDAwMDAwMENELCAweDMgfSwKKwl7IDB4ODAwMDgwMEYs IDB4MDAwMDAwQzAsIDB4MyB9LAorCXsgMHgwMDAwMTAxNywgMHgwMDAwMDA5RCwgMHgwIH0sCisJ eyAweDgwMDA1MDEyLCAweDAwMDAwMEMwLCAweDMgfSwKKwl7IDB4ODAwMDcwMTEsIDB4MDAwMDAw QzAsIDB4MyB9LAorCXsgMHgwMDAwMTAxNywgMHgwMDAwMDA0QywgMHgwIH0sCisJeyAweDgwMDA1 MDEyLCAweDAwMDAwMEMwLCAweDMgfSwKK307CisKKy8qCisgKiBTa3lsYWtlL0thYnlsYWtlIEgg YW5kIFMKKyAqIGVEUCAxLjQgbG93IHZzd2luZyB0cmFuc2xhdGlvbiBwYXJhbWV0ZXJzCisgKi8K K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBza2xfZGRpX3RyYW5zbGF0aW9uc19l ZHBbXSA9IHsKKwl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwQTgsIDB4MCB9LAorCXsgMHgwMDAwNDAx MywgMHgwMDAwMDBBOSwgMHgwIH0sCisJeyAweDAwMDA3MDExLCAweDAwMDAwMEEyLCAweDAgfSwK Kwl7IDB4MDAwMDkwMTAsIDB4MDAwMDAwOUMsIDB4MCB9LAorCXsgMHgwMDAwMDAxOCwgMHgwMDAw MDBBOSwgMHgwIH0sCisJeyAweDAwMDA2MDEzLCAweDAwMDAwMEEyLCAweDAgfSwKKwl7IDB4MDAw MDcwMTEsIDB4MDAwMDAwQTYsIDB4MCB9LAorCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBQiwgMHgw IH0sCisJeyAweDAwMDA3MDEzLCAweDAwMDAwMDlGLCAweDAgfSwKKwl7IDB4MDAwMDAwMTgsIDB4 MDAwMDAwREYsIDB4MCB9LAorfTsKKworLyoKKyAqIFNreWxha2UvS2FieWxha2UgVQorICogZURQ IDEuNCBsb3cgdnN3aW5nIHRyYW5zbGF0aW9uIHBhcmFtZXRlcnMKKyAqLworc3RhdGljIGNvbnN0 IHN0cnVjdCBkZGlfYnVmX3RyYW5zIHNrbF91X2RkaV90cmFuc2xhdGlvbnNfZWRwW10gPSB7CisJ eyAweDAwMDAwMDE4LCAweDAwMDAwMEE4LCAweDAgfSwKKwl7IDB4MDAwMDQwMTMsIDB4MDAwMDAw QTksIDB4MCB9LAorCXsgMHgwMDAwNzAxMSwgMHgwMDAwMDBBMiwgMHgwIH0sCisJeyAweDAwMDA5 MDEwLCAweDAwMDAwMDlDLCAweDAgfSwKKwl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwQTksIDB4MCB9 LAorCXsgMHgwMDAwNjAxMywgMHgwMDAwMDBBMiwgMHgwIH0sCisJeyAweDAwMDA3MDExLCAweDAw MDAwMEE2LCAweDAgfSwKKwl7IDB4MDAwMDIwMTYsIDB4MDAwMDAwQUIsIDB4MCB9LAorCXsgMHgw MDAwNTAxMywgMHgwMDAwMDA5RiwgMHgwIH0sCisJeyAweDAwMDAwMDE4LCAweDAwMDAwMERGLCAw eDAgfSwKK307CisKKy8qCisgKiBTa3lsYWtlL0thYnlsYWtlIFkKKyAqIGVEUCAxLjQgbG93IHZz d2luZyB0cmFuc2xhdGlvbiBwYXJhbWV0ZXJzCisgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGRp X2J1Zl90cmFucyBza2xfeV9kZGlfdHJhbnNsYXRpb25zX2VkcFtdID0geworCXsgMHgwMDAwMDAx OCwgMHgwMDAwMDBBOCwgMHgwIH0sCisJeyAweDAwMDA0MDEzLCAweDAwMDAwMEFCLCAweDAgfSwK Kwl7IDB4MDAwMDcwMTEsIDB4MDAwMDAwQTQsIDB4MCB9LAorCXsgMHgwMDAwOTAxMCwgMHgwMDAw MDBERiwgMHgwIH0sCisJeyAweDAwMDAwMDE4LCAweDAwMDAwMEFBLCAweDAgfSwKKwl7IDB4MDAw MDYwMTMsIDB4MDAwMDAwQTQsIDB4MCB9LAorCXsgMHgwMDAwNzAxMSwgMHgwMDAwMDA5RCwgMHgw IH0sCisJeyAweDAwMDAwMDE4LCAweDAwMDAwMEEwLCAweDAgfSwKKwl7IDB4MDAwMDYwMTIsIDB4 MDAwMDAwREYsIDB4MCB9LAorCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDA4QSwgMHgwIH0sCit9Owor CisvKiBTa3lsYWtlL0thYnlsYWtlIFUsIEggYW5kIFMgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg ZGRpX2J1Zl90cmFucyBza2xfZGRpX3RyYW5zbGF0aW9uc19oZG1pW10gPSB7CisJeyAweDAwMDAw MDE4LCAweDAwMDAwMEFDLCAweDAgfSwKKwl7IDB4MDAwMDUwMTIsIDB4MDAwMDAwOUQsIDB4MCB9 LAorCXsgMHgwMDAwNzAxMSwgMHgwMDAwMDA4OCwgMHgwIH0sCisJeyAweDAwMDAwMDE4LCAweDAw MDAwMEExLCAweDAgfSwKKwl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwOTgsIDB4MCB9LAorCXsgMHgw MDAwNDAxMywgMHgwMDAwMDA4OCwgMHgwIH0sCisJeyAweDgwMDA2MDEyLCAweDAwMDAwMENELCAw eDEgfSwKKwl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwREYsIDB4MCB9LAorCXsgMHg4MDAwMzAxNSwg MHgwMDAwMDBDRCwgMHgxIH0sCS8qIERlZmF1bHQgKi8KKwl7IDB4ODAwMDMwMTUsIDB4MDAwMDAw QzAsIDB4MSB9LAorCXsgMHg4MDAwMDAxOCwgMHgwMDAwMDBDMCwgMHgxIH0sCit9OworCisvKiBT a3lsYWtlL0thYnlsYWtlIFkgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBz a2xfeV9kZGlfdHJhbnNsYXRpb25zX2hkbWlbXSA9IHsKKwl7IDB4MDAwMDAwMTgsIDB4MDAwMDAw QTEsIDB4MCB9LAorCXsgMHgwMDAwNTAxMiwgMHgwMDAwMDBERiwgMHgwIH0sCisJeyAweDgwMDA3 MDExLCAweDAwMDAwMENCLCAweDMgfSwKKwl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwQTQsIDB4MCB9 LAorCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDA5RCwgMHgwIH0sCisJeyAweDAwMDA0MDEzLCAweDAw MDAwMDgwLCAweDAgfSwKKwl7IDB4ODAwMDYwMTMsIDB4MDAwMDAwQzAsIDB4MyB9LAorCXsgMHgw MDAwMDAxOCwgMHgwMDAwMDA4QSwgMHgwIH0sCisJeyAweDgwMDAzMDE1LCAweDAwMDAwMEMwLCAw eDMgfSwJLyogRGVmYXVsdCAqLworCXsgMHg4MDAwMzAxNSwgMHgwMDAwMDBDMCwgMHgzIH0sCisJ eyAweDgwMDAwMDE4LCAweDAwMDAwMEMwLCAweDMgfSwKK307CisKKworc3RhdGljIGNvbnN0IHN0 cnVjdCBieHRfZGRpX2J1Zl90cmFucyBieHRfZGRpX3RyYW5zbGF0aW9uc19kcFtdID0geworCQkJ CQkvKiBJZHgJTlQgbVYgZGlmZglkYiAgKi8KKwl7IDUyLCAgMHg5QSwgMCwgMTI4LCB9LAkvKiAw Ogk0MDAJCTAgICAqLworCXsgNzgsICAweDlBLCAwLCA4NSwgIH0sCS8qIDE6CTQwMAkJMy41ICov CisJeyAxMDQsIDB4OUEsIDAsIDY0LCAgfSwJLyogMjoJNDAwCQk2ICAgKi8KKwl7IDE1NCwgMHg5 QSwgMCwgNDMsICB9LAkvKiAzOgk0MDAJCTkuNSAqLworCXsgNzcsICAweDlBLCAwLCAxMjgsIH0s CS8qIDQ6CTYwMAkJMCAgICovCisJeyAxMTYsIDB4OUEsIDAsIDg1LCAgfSwJLyogNToJNjAwCQkz LjUgKi8KKwl7IDE1NCwgMHg5QSwgMCwgNjQsICB9LAkvKiA2Ogk2MDAJCTYgICAqLworCXsgMTAy LCAweDlBLCAwLCAxMjgsIH0sCS8qIDc6CTgwMAkJMCAgICovCisJeyAxNTQsIDB4OUEsIDAsIDg1 LCAgfSwJLyogODoJODAwCQkzLjUgKi8KKwl7IDE1NCwgMHg5QSwgMSwgMTI4LCB9LAkvKiA5Ogkx MjAwCQkwICAgKi8KK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYnh0X2RkaV9idWZfdHJhbnMg Ynh0X2RkaV90cmFuc2xhdGlvbnNfZWRwW10gPSB7CisJCQkJCS8qIElkeAlOVCBtViBkaWZmCWRi ICAqLworCXsgMjYsIDAsIDAsIDEyOCwgfSwJLyogMDoJMjAwCQkwICAgKi8KKwl7IDM4LCAwLCAw LCAxMTIsIH0sCS8qIDE6CTIwMAkJMS41ICovCisJeyA0OCwgMCwgMCwgOTYsICB9LAkvKiAyOgky MDAJCTQgICAqLworCXsgNTQsIDAsIDAsIDY5LCAgfSwJLyogMzoJMjAwCQk2ICAgKi8KKwl7IDMy LCAwLCAwLCAxMjgsIH0sCS8qIDQ6CTI1MAkJMCAgICovCisJeyA0OCwgMCwgMCwgMTA0LCB9LAkv KiA1OgkyNTAJCTEuNSAqLworCXsgNTQsIDAsIDAsIDg1LCAgfSwJLyogNjoJMjUwCQk0ICAgKi8K Kwl7IDQzLCAwLCAwLCAxMjgsIH0sCS8qIDc6CTMwMAkJMCAgICovCisJeyA1NCwgMCwgMCwgMTAx LCB9LAkvKiA4OgkzMDAJCTEuNSAqLworCXsgNDgsIDAsIDAsIDEyOCwgfSwJLyogOToJMzAwCQkw ICAgKi8KK307CisKKy8qIEJTcGVjIGhhcyAyIHJlY29tbWVuZGVkIHZhbHVlcyAtIGVudHJpZXMg MCBhbmQgOC4KKyAqIFVzaW5nIHRoZSBlbnRyeSB3aXRoIGhpZ2hlciB2c3dpbmcuCisgKi8KK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgYnh0X2RkaV9idWZfdHJhbnMgYnh0X2RkaV90cmFuc2xhdGlvbnNf aGRtaVtdID0geworCQkJCQkvKiBJZHgJTlQgbVYgZGlmZglkYiAgKi8KKwl7IDUyLCAgMHg5QSwg MCwgMTI4LCB9LAkvKiAwOgk0MDAJCTAgICAqLworCXsgNTIsICAweDlBLCAwLCA4NSwgIH0sCS8q IDE6CTQwMAkJMy41ICovCisJeyA1MiwgIDB4OUEsIDAsIDY0LCAgfSwJLyogMjoJNDAwCQk2ICAg Ki8KKwl7IDQyLCAgMHg5QSwgMCwgNDMsICB9LAkvKiAzOgk0MDAJCTkuNSAqLworCXsgNzcsICAw eDlBLCAwLCAxMjgsIH0sCS8qIDQ6CTYwMAkJMCAgICovCisJeyA3NywgIDB4OUEsIDAsIDg1LCAg fSwJLyogNToJNjAwCQkzLjUgKi8KKwl7IDc3LCAgMHg5QSwgMCwgNjQsICB9LAkvKiA2Ogk2MDAJ CTYgICAqLworCXsgMTAyLCAweDlBLCAwLCAxMjgsIH0sCS8qIDc6CTgwMAkJMCAgICovCisJeyAx MDIsIDB4OUEsIDAsIDg1LCAgfSwJLyogODoJODAwCQkzLjUgKi8KKwl7IDE1NCwgMHg5QSwgMSwg MTI4LCB9LAkvKiA5OgkxMjAwCQkwICAgKi8KK307CisKKy8qIFZvbHRhZ2UgU3dpbmcgUHJvZ3Jh bW1pbmcgZm9yIFZjY0lPIDAuODVWIGZvciBEUCAqLworc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxf ZGRpX2J1Zl90cmFucyBjbmxfZGRpX3RyYW5zbGF0aW9uc19kcF8wXzg1VltdID0geworCQkJCQkJ LyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KKwl7IDB4QSwgMHg1RCwgMHgzRiwgMHgwMCwgMHgw MCB9LAkvKiAzNTAgICAzNTAgICAgICAwLjAgICAqLworCXsgMHhBLCAweDZBLCAweDM4LCAweDAw LCAweDA3IH0sCS8qIDM1MCAgIDUwMCAgICAgIDMuMSAgICovCisJeyAweEIsIDB4N0EsIDB4MzIs IDB4MDAsIDB4MEQgfSwJLyogMzUwICAgNzAwICAgICAgNi4wICAgKi8KKwl7IDB4NiwgMHg3Qywg MHgyRCwgMHgwMCwgMHgxMiB9LAkvKiAzNTAgICA5MDAgICAgICA4LjIgICAqLworCXsgMHhBLCAw eDY5LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDUwMCAgIDUwMCAgICAgIDAuMCAgICovCisJeyAw eEIsIDB4N0EsIDB4MzYsIDB4MDAsIDB4MDkgfSwJLyogNTAwICAgNzAwICAgICAgMi45ICAgKi8K Kwl7IDB4NiwgMHg3QywgMHgzMCwgMHgwMCwgMHgwRiB9LAkvKiA1MDAgICA5MDAgICAgICA1LjEg ICAqLworCXsgMHhCLCAweDdELCAweDNDLCAweDAwLCAweDAzIH0sCS8qIDY1MCAgIDcyNSAgICAg IDAuOSAgICovCisJeyAweDYsIDB4N0MsIDB4MzQsIDB4MDAsIDB4MEIgfSwJLyogNjAwICAgOTAw ICAgICAgMy41ICAgKi8KKwl7IDB4NiwgMHg3QiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA5MDAg ICA5MDAgICAgICAwLjAgICAqLworfTsKKworLyogVm9sdGFnZSBTd2luZyBQcm9ncmFtbWluZyBm b3IgVmNjSU8gMC44NVYgZm9yIEhETUkgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9i dWZfdHJhbnMgY25sX2RkaV90cmFuc2xhdGlvbnNfaGRtaV8wXzg1VltdID0geworCQkJCQkJLyog TlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KKwl7IDB4QSwgMHg2MCwgMHgzRiwgMHgwMCwgMHgwMCB9 LAkvKiA0NTAgICA0NTAgICAgICAwLjAgICAqLworCXsgMHhCLCAweDczLCAweDM2LCAweDAwLCAw eDA5IH0sCS8qIDQ1MCAgIDY1MCAgICAgIDMuMiAgICovCisJeyAweDYsIDB4N0YsIDB4MzEsIDB4 MDAsIDB4MEUgfSwJLyogNDUwICAgODUwICAgICAgNS41ICAgKi8KKwl7IDB4QiwgMHg3MywgMHgz RiwgMHgwMCwgMHgwMCB9LAkvKiA2NTAgICA2NTAgICAgICAwLjAgICAqLworCXsgMHg2LCAweDdG LCAweDM3LCAweDAwLCAweDA4IH0sCS8qIDY1MCAgIDg1MCAgICAgIDIuMyAgICovCisJeyAweDYs IDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogODUwICAgODUwICAgICAgMC4wICAgKi8KKwl7 IDB4NiwgMHg3RiwgMHgzNSwgMHgwMCwgMHgwQSB9LAkvKiA2MDAgICA4NTAgICAgICAzLjAgICAq LworfTsKKworLyogVm9sdGFnZSBTd2luZyBQcm9ncmFtbWluZyBmb3IgVmNjSU8gMC44NVYgZm9y IGVEUCAqLworc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBjbmxfZGRpX3Ry YW5zbGF0aW9uc19lZHBfMF84NVZbXSA9IHsKKwkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAg ICovCisJeyAweEEsIDB4NjYsIDB4M0EsIDB4MDAsIDB4MDUgfSwJLyogMzg0ICAgNTAwICAgICAg Mi4zICAgKi8KKwl7IDB4MCwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAxNTMgICAyMDAg ICAgICAyLjMgICAqLworCXsgMHg4LCAweDdGLCAweDM4LCAweDAwLCAweDA3IH0sCS8qIDE5MiAg IDI1MCAgICAgIDIuMyAgICovCisJeyAweDEsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyog MjMwICAgMzAwICAgICAgMi4zICAgKi8KKwl7IDB4OSwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9 LAkvKiAyNjkgICAzNTAgICAgICAyLjMgICAqLworCXsgMHhBLCAweDY2LCAweDNDLCAweDAwLCAw eDAzIH0sCS8qIDQ0NiAgIDUwMCAgICAgIDEuMCAgICovCisJeyAweEIsIDB4NzAsIDB4M0MsIDB4 MDAsIDB4MDMgfSwJLyogNDYwICAgNjAwICAgICAgMi4zICAgKi8KKwl7IDB4QywgMHg3NSwgMHgz QywgMHgwMCwgMHgwMyB9LAkvKiA1MzcgICA3MDAgICAgICAyLjMgICAqLworCXsgMHgyLCAweDdG LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDQwMCAgIDQwMCAgICAgIDAuMCAgICovCit9OworCisv KiBWb2x0YWdlIFN3aW5nIFByb2dyYW1taW5nIGZvciBWY2NJTyAwLjk1ViBmb3IgRFAgKi8KK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgY25sX2RkaV90cmFuc2xhdGlvbnNf ZHBfMF85NVZbXSA9IHsKKwkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCisJeyAweEEs IDB4NUQsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8KKwl7 IDB4QSwgMHg2QSwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAzNTAgICA1MDAgICAgICAzLjEgICAq LworCXsgMHhCLCAweDdBLCAweDMyLCAweDAwLCAweDBEIH0sCS8qIDM1MCAgIDcwMCAgICAgIDYu MCAgICovCisJeyAweDYsIDB4N0MsIDB4MkQsIDB4MDAsIDB4MTIgfSwJLyogMzUwICAgOTAwICAg ICAgOC4yICAgKi8KKwl7IDB4QSwgMHg2OSwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA1MDAgICA1 MDAgICAgICAwLjAgICAqLworCXsgMHhCLCAweDdBLCAweDM2LCAweDAwLCAweDA5IH0sCS8qIDUw MCAgIDcwMCAgICAgIDIuOSAgICovCisJeyAweDYsIDB4N0MsIDB4MzAsIDB4MDAsIDB4MEYgfSwJ LyogNTAwICAgOTAwICAgICAgNS4xICAgKi8KKwl7IDB4QiwgMHg3RCwgMHgzQywgMHgwMCwgMHgw MyB9LAkvKiA2NTAgICA3MjUgICAgICAwLjkgICAqLworCXsgMHg2LCAweDdDLCAweDM0LCAweDAw LCAweDBCIH0sCS8qIDYwMCAgIDkwMCAgICAgIDMuNSAgICovCisJeyAweDYsIDB4N0IsIDB4M0Ys IDB4MDAsIDB4MDAgfSwJLyogOTAwICAgOTAwICAgICAgMC4wICAgKi8KK307CisKKy8qIFZvbHRh Z2UgU3dpbmcgUHJvZ3JhbW1pbmcgZm9yIFZjY0lPIDAuOTVWIGZvciBIRE1JICovCitzdGF0aWMg Y29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGNubF9kZGlfdHJhbnNsYXRpb25zX2hkbWlf MF85NVZbXSA9IHsKKwkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCisJeyAweEEsIDB4 NUMsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNDAwICAgNDAwICAgICAgMC4wICAgKi8KKwl7IDB4 QiwgMHg2OSwgMHgzNywgMHgwMCwgMHgwOCB9LAkvKiA0MDAgICA2MDAgICAgICAzLjUgICAqLwor CXsgMHg1LCAweDc2LCAweDMxLCAweDAwLCAweDBFIH0sCS8qIDQwMCAgIDgwMCAgICAgIDYuMCAg ICovCisJeyAweEEsIDB4NUUsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNDUwICAgNDUwICAgICAg MC4wICAgKi8KKwl7IDB4QiwgMHg2OSwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA2MDAgICA2MDAg ICAgICAwLjAgICAqLworCXsgMHhCLCAweDc5LCAweDM1LCAweDAwLCAweDBBIH0sCS8qIDYwMCAg IDg1MCAgICAgIDMuMCAgICovCisJeyAweDYsIDB4N0QsIDB4MzIsIDB4MDAsIDB4MEQgfSwJLyog NjAwICAgMTAwMCAgICAgNC40ICAgKi8KKwl7IDB4NSwgMHg3NiwgMHgzRiwgMHgwMCwgMHgwMCB9 LAkvKiA4MDAgICA4MDAgICAgICAwLjAgICAqLworCXsgMHg2LCAweDdELCAweDM5LCAweDAwLCAw eDA2IH0sCS8qIDgwMCAgIDEwMDAgICAgIDEuOSAgICovCisJeyAweDYsIDB4N0YsIDB4MzksIDB4 MDAsIDB4MDYgfSwJLyogODUwICAgMTA1MCAgICAgMS44ICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgz RiwgMHgwMCwgMHgwMCB9LAkvKiAxMDUwICAxMDUwICAgICAwLjAgICAqLworfTsKKworLyogVm9s dGFnZSBTd2luZyBQcm9ncmFtbWluZyBmb3IgVmNjSU8gMC45NVYgZm9yIGVEUCAqLworc3RhdGlj IGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBjbmxfZGRpX3RyYW5zbGF0aW9uc19lZHBf MF85NVZbXSA9IHsKKwkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCisJeyAweEEsIDB4 NjEsIDB4M0EsIDB4MDAsIDB4MDUgfSwJLyogMzg0ICAgNTAwICAgICAgMi4zICAgKi8KKwl7IDB4 MCwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAxNTMgICAyMDAgICAgICAyLjMgICAqLwor CXsgMHg4LCAweDdGLCAweDM4LCAweDAwLCAweDA3IH0sCS8qIDE5MiAgIDI1MCAgICAgIDIuMyAg ICovCisJeyAweDEsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMjMwICAgMzAwICAgICAg Mi4zICAgKi8KKwl7IDB4OSwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAyNjkgICAzNTAg ICAgICAyLjMgICAqLworCXsgMHhBLCAweDYxLCAweDNDLCAweDAwLCAweDAzIH0sCS8qIDQ0NiAg IDUwMCAgICAgIDEuMCAgICovCisJeyAweEIsIDB4NjgsIDB4MzksIDB4MDAsIDB4MDYgfSwJLyog NDYwICAgNjAwICAgICAgMi4zICAgKi8KKwl7IDB4QywgMHg2RSwgMHgzOSwgMHgwMCwgMHgwNiB9 LAkvKiA1MzcgICA3MDAgICAgICAyLjMgICAqLworCXsgMHg0LCAweDdGLCAweDNBLCAweDAwLCAw eDA1IH0sCS8qIDQ2MCAgIDYwMCAgICAgIDIuMyAgICovCisJeyAweDIsIDB4N0YsIDB4M0YsIDB4 MDAsIDB4MDAgfSwJLyogNDAwICAgNDAwICAgICAgMC4wICAgKi8KK307CisKKy8qIFZvbHRhZ2Ug U3dpbmcgUHJvZ3JhbW1pbmcgZm9yIFZjY0lPIDEuMDVWIGZvciBEUCAqLworc3RhdGljIGNvbnN0 IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBjbmxfZGRpX3RyYW5zbGF0aW9uc19kcF8xXzA1Vltd ID0geworCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KKwl7IDB4QSwgMHg1OCwgMHgz RiwgMHgwMCwgMHgwMCB9LAkvKiA0MDAgICA0MDAgICAgICAwLjAgICAqLworCXsgMHhCLCAweDY0 LCAweDM3LCAweDAwLCAweDA4IH0sCS8qIDQwMCAgIDYwMCAgICAgIDMuNSAgICovCisJeyAweDUs IDB4NzAsIDB4MzEsIDB4MDAsIDB4MEUgfSwJLyogNDAwICAgODAwICAgICAgNi4wICAgKi8KKwl7 IDB4NiwgMHg3RiwgMHgyQywgMHgwMCwgMHgxMyB9LAkvKiA0MDAgICAxMDUwICAgICA4LjQgICAq LworCXsgMHhCLCAweDY0LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDYwMCAgIDYwMCAgICAgIDAu MCAgICovCisJeyAweDUsIDB4NzMsIDB4MzUsIDB4MDAsIDB4MEEgfSwJLyogNjAwICAgODUwICAg ICAgMy4wICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgzMCwgMHgwMCwgMHgwRiB9LAkvKiA1NTAgICAx MDUwICAgICA1LjYgICAqLworCXsgMHg1LCAweDc2LCAweDNFLCAweDAwLCAweDAxIH0sCS8qIDg1 MCAgIDkwMCAgICAgIDAuNSAgICovCisJeyAweDYsIDB4N0YsIDB4MzYsIDB4MDAsIDB4MDkgfSwJ LyogNzUwICAgMTA1MCAgICAgMi45ICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgw MCB9LAkvKiAxMDUwICAxMDUwICAgICAwLjAgICAqLworfTsKKworLyogVm9sdGFnZSBTd2luZyBQ cm9ncmFtbWluZyBmb3IgVmNjSU8gMS4wNVYgZm9yIEhETUkgKi8KK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgY25sX2RkaV9idWZfdHJhbnMgY25sX2RkaV90cmFuc2xhdGlvbnNfaGRtaV8xXzA1VltdID0g eworCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KKwl7IDB4QSwgMHg1OCwgMHgzRiwg MHgwMCwgMHgwMCB9LAkvKiA0MDAgICA0MDAgICAgICAwLjAgICAqLworCXsgMHhCLCAweDY0LCAw eDM3LCAweDAwLCAweDA4IH0sCS8qIDQwMCAgIDYwMCAgICAgIDMuNSAgICovCisJeyAweDUsIDB4 NzAsIDB4MzEsIDB4MDAsIDB4MEUgfSwJLyogNDAwICAgODAwICAgICAgNi4wICAgKi8KKwl7IDB4 QSwgMHg1QiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA0NTAgICA0NTAgICAgICAwLjAgICAqLwor CXsgMHhCLCAweDY0LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDYwMCAgIDYwMCAgICAgIDAuMCAg ICovCisJeyAweDUsIDB4NzMsIDB4MzUsIDB4MDAsIDB4MEEgfSwJLyogNjAwICAgODUwICAgICAg My4wICAgKi8KKwl7IDB4NiwgMHg3QywgMHgzMiwgMHgwMCwgMHgwRCB9LAkvKiA2MDAgICAxMDAw ICAgICA0LjQgICAqLworCXsgMHg1LCAweDcwLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDgwMCAg IDgwMCAgICAgIDAuMCAgICovCisJeyAweDYsIDB4N0MsIDB4MzksIDB4MDAsIDB4MDYgfSwJLyog ODAwICAgMTAwMCAgICAgMS45ICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgzOSwgMHgwMCwgMHgwNiB9 LAkvKiA4NTAgICAxMDUwICAgICAxLjggICAqLworCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAw eDAwIH0sCS8qIDEwNTAgIDEwNTAgICAgIDAuMCAgICovCit9OworCisvKiBWb2x0YWdlIFN3aW5n IFByb2dyYW1taW5nIGZvciBWY2NJTyAxLjA1ViBmb3IgZURQICovCitzdGF0aWMgY29uc3Qgc3Ry dWN0IGNubF9kZGlfYnVmX3RyYW5zIGNubF9kZGlfdHJhbnNsYXRpb25zX2VkcF8xXzA1VltdID0g eworCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KKwl7IDB4QSwgMHg1RSwgMHgzQSwg MHgwMCwgMHgwNSB9LAkvKiAzODQgICA1MDAgICAgICAyLjMgICAqLworCXsgMHgwLCAweDdGLCAw eDM4LCAweDAwLCAweDA3IH0sCS8qIDE1MyAgIDIwMCAgICAgIDIuMyAgICovCisJeyAweDgsIDB4 N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMTkyICAgMjUwICAgICAgMi4zICAgKi8KKwl7IDB4 MSwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAyMzAgICAzMDAgICAgICAyLjMgICAqLwor CXsgMHg5LCAweDdGLCAweDM4LCAweDAwLCAweDA3IH0sCS8qIDI2OSAgIDM1MCAgICAgIDIuMyAg ICovCisJeyAweEEsIDB4NUUsIDB4M0MsIDB4MDAsIDB4MDMgfSwJLyogNDQ2ICAgNTAwICAgICAg MS4wICAgKi8KKwl7IDB4QiwgMHg2NCwgMHgzOSwgMHgwMCwgMHgwNiB9LAkvKiA0NjAgICA2MDAg ICAgICAyLjMgICAqLworCXsgMHhFLCAweDZBLCAweDM5LCAweDAwLCAweDA2IH0sCS8qIDUzNyAg IDcwMCAgICAgIDIuMyAgICovCisJeyAweDIsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyog NDAwICAgNDAwICAgICAgMC4wICAgKi8KK307CisKKy8qIGljbF9jb21ib19waHlfZGRpX3RyYW5z bGF0aW9ucyAqLworc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBpY2xfY29t Ym9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMltdID0geworCQkJCQkJLyogTlQgbVYgVHJh bnMgbVYgZGIgICAgKi8KKwl7IDB4QSwgMHgzNSwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzNTAg ICAzNTAgICAgICAwLjAgICAqLworCXsgMHhBLCAweDRGLCAweDM3LCAweDAwLCAweDA4IH0sCS8q IDM1MCAgIDUwMCAgICAgIDMuMSAgICovCisJeyAweEMsIDB4NzEsIDB4MkYsIDB4MDAsIDB4MTAg fSwJLyogMzUwICAgNzAwICAgICAgNi4wICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgyQiwgMHgwMCwg MHgxNCB9LAkvKiAzNTAgICA5MDAgICAgICA4LjIgICAqLworCXsgMHhBLCAweDRDLCAweDNGLCAw eDAwLCAweDAwIH0sCS8qIDUwMCAgIDUwMCAgICAgIDAuMCAgICovCisJeyAweEMsIDB4NzMsIDB4 MzQsIDB4MDAsIDB4MEIgfSwJLyogNTAwICAgNzAwICAgICAgMi45ICAgKi8KKwl7IDB4NiwgMHg3 RiwgMHgyRiwgMHgwMCwgMHgxMCB9LAkvKiA1MDAgICA5MDAgICAgICA1LjEgICAqLworCXsgMHhD LCAweDZDLCAweDNDLCAweDAwLCAweDAzIH0sCS8qIDY1MCAgIDcwMCAgICAgIDAuNiAgICovCisJ eyAweDYsIDB4N0YsIDB4MzUsIDB4MDAsIDB4MEEgfSwJLyogNjAwICAgOTAwICAgICAgMy41ICAg Ki8KKwl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA5MDAgICA5MDAgICAgICAw LjAgICAqLworfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBpY2xf Y29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjJbXSA9IHsKKwkJCQkJCS8qIE5UIG1W IFRyYW5zIG1WIGRiICAgICovCisJeyAweDAsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyog MjAwICAgMjAwICAgICAgMC4wICAgKi8KKwl7IDB4OCwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9 LAkvKiAyMDAgICAyNTAgICAgICAxLjkgICAqLworCXsgMHgxLCAweDdGLCAweDMzLCAweDAwLCAw eDBDIH0sCS8qIDIwMCAgIDMwMCAgICAgIDMuNSAgICovCisJeyAweDksIDB4N0YsIDB4MzEsIDB4 MDAsIDB4MEUgfSwJLyogMjAwICAgMzUwICAgICAgNC45ICAgKi8KKwl7IDB4OCwgMHg3RiwgMHgz RiwgMHgwMCwgMHgwMCB9LAkvKiAyNTAgICAyNTAgICAgICAwLjAgICAqLworCXsgMHgxLCAweDdG LCAweDM4LCAweDAwLCAweDA3IH0sCS8qIDI1MCAgIDMwMCAgICAgIDEuNiAgICovCisJeyAweDks IDB4N0YsIDB4MzUsIDB4MDAsIDB4MEEgfSwJLyogMjUwICAgMzUwICAgICAgMi45ICAgKi8KKwl7 IDB4MSwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzMDAgICAzMDAgICAgICAwLjAgICAq LworCXsgMHg5LCAweDdGLCAweDM4LCAweDAwLCAweDA3IH0sCS8qIDMwMCAgIDM1MCAgICAgIDEu MyAgICovCisJeyAweDksIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAg ICAgMC4wICAgKi8KK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMg aWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIzW10gPSB7CisJCQkJCQkvKiBO VCBtViBUcmFucyBtViBkYiAgICAqLworCXsgMHhBLCAweDM1LCAweDNGLCAweDAwLCAweDAwIH0s CS8qIDM1MCAgIDM1MCAgICAgIDAuMCAgICovCisJeyAweEEsIDB4NEYsIDB4MzcsIDB4MDAsIDB4 MDggfSwJLyogMzUwICAgNTAwICAgICAgMy4xICAgKi8KKwl7IDB4QywgMHg3MSwgMHgyRiwgMHgw MCwgMHgxMCB9LAkvKiAzNTAgICA3MDAgICAgICA2LjAgICAqLworCXsgMHg2LCAweDdGLCAweDJC LCAweDAwLCAweDE0IH0sCS8qIDM1MCAgIDkwMCAgICAgIDguMiAgICovCisJeyAweEEsIDB4NEMs IDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNTAwICAgNTAwICAgICAgMC4wICAgKi8KKwl7IDB4Qywg MHg3MywgMHgzNCwgMHgwMCwgMHgwQiB9LAkvKiA1MDAgICA3MDAgICAgICAyLjkgICAqLworCXsg MHg2LCAweDdGLCAweDJGLCAweDAwLCAweDEwIH0sCS8qIDUwMCAgIDkwMCAgICAgIDUuMSAgICov CisJeyAweEMsIDB4NkMsIDB4M0MsIDB4MDAsIDB4MDMgfSwJLyogNjUwICAgNzAwICAgICAgMC42 ICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgzNSwgMHgwMCwgMHgwQSB9LAkvKiA2MDAgICA5MDAgICAg ICAzLjUgICAqLworCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDkwMCAgIDkw MCAgICAgIDAuMCAgICovCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3Ry YW5zIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19oZG1pW10gPSB7CisJCQkJCQkvKiBO VCBtViBUcmFucyBtViBkYiAgICAqLworCXsgMHhBLCAweDYwLCAweDNGLCAweDAwLCAweDAwIH0s CS8qIDQ1MCAgIDQ1MCAgICAgIDAuMCAgICovCisJeyAweEIsIDB4NzMsIDB4MzYsIDB4MDAsIDB4 MDkgfSwJLyogNDUwICAgNjUwICAgICAgMy4yICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgzMSwgMHgw MCwgMHgwRSB9LAkvKiA0NTAgICA4NTAgICAgICA1LjUgICAqLworCXsgMHhCLCAweDczLCAweDNG LCAweDAwLCAweDAwIH0sCS8qIDY1MCAgIDY1MCAgICAgIDAuMCAgIEFMUyAqLworCXsgMHg2LCAw eDdGLCAweDM3LCAweDAwLCAweDA4IH0sCS8qIDY1MCAgIDg1MCAgICAgIDIuMyAgICovCisJeyAw eDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogODUwICAgODUwICAgICAgMC4wICAgKi8K Kwl7IDB4NiwgMHg3RiwgMHgzNSwgMHgwMCwgMHgwQSB9LAkvKiA2MDAgICA4NTAgICAgICAzLjAg ICAqLworfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBlaGxfY29t Ym9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBbXSA9IHsKKwkJCQkJCS8qIE5UIG1WIFRyYW5zIG1W IGRiICAgICovCisJeyAweEEsIDB4MzMsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUw ICAgICAgMC4wICAgKi8KKwl7IDB4QSwgMHg0NywgMHgzNiwgMHgwMCwgMHgwOSB9LAkvKiAzNTAg ICA1MDAgICAgICAzLjEgICAqLworCXsgMHhDLCAweDY0LCAweDM0LCAweDAwLCAweDBCIH0sCS8q IDM1MCAgIDcwMCAgICAgIDYuMCAgICovCisJeyAweDYsIDB4N0YsIDB4MzAsIDB4MDAsIDB4MEYg fSwJLyogMzUwICAgOTAwICAgICAgOC4yICAgKi8KKwl7IDB4QSwgMHg0NiwgMHgzRiwgMHgwMCwg MHgwMCB9LAkvKiA1MDAgICA1MDAgICAgICAwLjAgICAqLworCXsgMHhDLCAweDY0LCAweDM4LCAw eDAwLCAweDA3IH0sCS8qIDUwMCAgIDcwMCAgICAgIDIuOSAgICovCisJeyAweDYsIDB4N0YsIDB4 MzIsIDB4MDAsIDB4MEQgfSwJLyogNTAwICAgOTAwICAgICAgNS4xICAgKi8KKwl7IDB4QywgMHg2 MSwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA2NTAgICA3MDAgICAgICAwLjYgICAqLworCXsgMHg2 LCAweDdGLCAweDM4LCAweDAwLCAweDA3IH0sCS8qIDYwMCAgIDkwMCAgICAgIDMuNSAgICovCisJ eyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogOTAwICAgOTAwICAgICAgMC4wICAg Ki8KK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMganNsX2NvbWJv X3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnJbXSA9IHsKKwkJCQkJCS8qIE5UIG1WIFRyYW5z IG1WIGRiICAgICovCisJeyAweDgsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwgICAgICAgIC8q IDIwMCAgIDIwMCAgICAgIDAuMCAgICovCisJeyAweDgsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcg fSwgICAgICAgIC8qIDIwMCAgIDI1MCAgICAgIDEuOSAgICovCisJeyAweDEsIDB4N0YsIDB4MzMs IDB4MDAsIDB4MEMgfSwgICAgICAgIC8qIDIwMCAgIDMwMCAgICAgIDMuNSAgICovCisJeyAweEEs IDB4MzUsIDB4MzYsIDB4MDAsIDB4MDkgfSwgICAgICAgIC8qIDIwMCAgIDM1MCAgICAgIDQuOSAg ICovCisJeyAweDgsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwgICAgICAgIC8qIDI1MCAgIDI1 MCAgICAgIDAuMCAgICovCisJeyAweDEsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwgICAgICAg IC8qIDI1MCAgIDMwMCAgICAgIDEuNiAgICovCisJeyAweEEsIDB4MzUsIDB4MzUsIDB4MDAsIDB4 MEEgfSwgICAgICAgIC8qIDI1MCAgIDM1MCAgICAgIDIuOSAgICovCisJeyAweDEsIDB4N0YsIDB4 M0YsIDB4MDAsIDB4MDAgfSwgICAgICAgIC8qIDMwMCAgIDMwMCAgICAgIDAuMCAgICovCisJeyAw eEEsIDB4MzUsIDB4MzgsIDB4MDAsIDB4MDcgfSwgICAgICAgIC8qIDMwMCAgIDM1MCAgICAgIDEu MyAgICovCisJeyAweEEsIDB4MzUsIDB4M0YsIDB4MDAsIDB4MDAgfSwgICAgICAgIC8qIDM1MCAg IDM1MCAgICAgIDAuMCAgICovCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVm X3RyYW5zIGpzbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMltdID0geworCQkJ CQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KKwl7IDB4OCwgMHg3RiwgMHgzRiwgMHgwMCwg MHgwMCB9LCAgICAgICAgLyogMjAwICAgMjAwICAgICAgMC4wICAgKi8KKwl7IDB4OCwgMHg3Riwg MHgzRiwgMHgwMCwgMHgwMCB9LCAgICAgICAgLyogMjAwICAgMjUwICAgICAgMS45ICAgKi8KKwl7 IDB4MSwgMHg3RiwgMHgzRCwgMHgwMCwgMHgwMiB9LCAgICAgICAgLyogMjAwICAgMzAwICAgICAg My41ICAgKi8KKwl7IDB4QSwgMHgzNSwgMHgzOCwgMHgwMCwgMHgwNyB9LCAgICAgICAgLyogMjAw ICAgMzUwICAgICAgNC45ICAgKi8KKwl7IDB4OCwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LCAg ICAgICAgLyogMjUwICAgMjUwICAgICAgMC4wICAgKi8KKwl7IDB4MSwgMHg3RiwgMHgzRiwgMHgw MCwgMHgwMCB9LCAgICAgICAgLyogMjUwICAgMzAwICAgICAgMS42ICAgKi8KKwl7IDB4QSwgMHgz NSwgMHgzQSwgMHgwMCwgMHgwNSB9LCAgICAgICAgLyogMjUwICAgMzUwICAgICAgMi45ICAgKi8K Kwl7IDB4MSwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LCAgICAgICAgLyogMzAwICAgMzAwICAg ICAgMC4wICAgKi8KKwl7IDB4QSwgMHgzNSwgMHgzOCwgMHgwMCwgMHgwNyB9LCAgICAgICAgLyog MzAwICAgMzUwICAgICAgMS4zICAgKi8KKwl7IDB4QSwgMHgzNSwgMHgzRiwgMHgwMCwgMHgwMCB9 LCAgICAgICAgLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8KK307CisKK3N0YXRpYyBjb25zdCBz dHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgZGcxX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2Rw X3Jicl9oYnJbXSA9IHsKKwkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCisJeyAweEEs IDB4MzIsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8KKwl7 IDB4QSwgMHg0OCwgMHgzNSwgMHgwMCwgMHgwQSB9LAkvKiAzNTAgICA1MDAgICAgICAzLjEgICAq LworCXsgMHhDLCAweDYzLCAweDJGLCAweDAwLCAweDEwIH0sCS8qIDM1MCAgIDcwMCAgICAgIDYu MCAgICovCisJeyAweDYsIDB4N0YsIDB4MkMsIDB4MDAsIDB4MTMgfSwJLyogMzUwICAgOTAwICAg ICAgOC4yICAgKi8KKwl7IDB4QSwgMHg0MywgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA1MDAgICA1 MDAgICAgICAwLjAgICAqLworCXsgMHhDLCAweDYwLCAweDM2LCAweDAwLCAweDA5IH0sCS8qIDUw MCAgIDcwMCAgICAgIDIuOSAgICovCisJeyAweDYsIDB4N0YsIDB4MzAsIDB4MDAsIDB4MEYgfSwJ LyogNTAwICAgOTAwICAgICAgNS4xICAgKi8KKwl7IDB4QywgMHg2MCwgMHgzRiwgMHgwMCwgMHgw MCB9LAkvKiA2NTAgICA3MDAgICAgICAwLjYgICAqLworCXsgMHg2LCAweDdGLCAweDM3LCAweDAw LCAweDA4IH0sCS8qIDYwMCAgIDkwMCAgICAgIDMuNSAgICovCisJeyAweDYsIDB4N0YsIDB4M0Ys IDB4MDAsIDB4MDAgfSwJLyogOTAwICAgOTAwICAgICAgMC4wICAgKi8KK307CisKK3N0YXRpYyBj b25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgZGcxX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRp b25zX2RwX2hicjJfaGJyM1tdID0geworCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8K Kwl7IDB4QSwgMHgzMiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzNTAgICAzNTAgICAgICAwLjAg ICAqLworCXsgMHhBLCAweDQ4LCAweDM1LCAweDAwLCAweDBBIH0sCS8qIDM1MCAgIDUwMCAgICAg IDMuMSAgICovCisJeyAweEMsIDB4NjMsIDB4MkYsIDB4MDAsIDB4MTAgfSwJLyogMzUwICAgNzAw ICAgICAgNi4wICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgyQywgMHgwMCwgMHgxMyB9LAkvKiAzNTAg ICA5MDAgICAgICA4LjIgICAqLworCXsgMHhBLCAweDQzLCAweDNGLCAweDAwLCAweDAwIH0sCS8q IDUwMCAgIDUwMCAgICAgIDAuMCAgICovCisJeyAweEMsIDB4NjAsIDB4MzYsIDB4MDAsIDB4MDkg fSwJLyogNTAwICAgNzAwICAgICAgMi45ICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgzMCwgMHgwMCwg MHgwRiB9LAkvKiA1MDAgICA5MDAgICAgICA1LjEgICAqLworCXsgMHhDLCAweDU4LCAweDNGLCAw eDAwLCAweDAwIH0sCS8qIDY1MCAgIDcwMCAgICAgIDAuNiAgICovCisJeyAweDYsIDB4N0YsIDB4 MzUsIDB4MDAsIDB4MEEgfSwJLyogNjAwICAgOTAwICAgICAgMy41ICAgKi8KKwl7IDB4NiwgMHg3 RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA5MDAgICA5MDAgICAgICAwLjAgICAqLworfTsKKwor c3RhdGljIGNvbnN0IHN0cnVjdCBpY2xfbWdfcGh5X2RkaV9idWZfdHJhbnMgaWNsX21nX3BoeV9k ZGlfdHJhbnNsYXRpb25zX3Jicl9oYnJbXSA9IHsKKwkJCQkvKiBWb2x0YWdlIHN3aW5nICBwcmUt ZW1waGFzaXMgKi8KKwl7IDB4MTgsIDB4MDAsIDB4MDAgfSwJLyogMCAgICAgICAgICAgICAgMCAg ICovCisJeyAweDFELCAweDAwLCAweDA1IH0sCS8qIDAgICAgICAgICAgICAgIDEgICAqLworCXsg MHgyNCwgMHgwMCwgMHgwQyB9LAkvKiAwICAgICAgICAgICAgICAyICAgKi8KKwl7IDB4MkIsIDB4 MDAsIDB4MTQgfSwJLyogMCAgICAgICAgICAgICAgMyAgICovCisJeyAweDIxLCAweDAwLCAweDAw IH0sCS8qIDEgICAgICAgICAgICAgIDAgICAqLworCXsgMHgyQiwgMHgwMCwgMHgwOCB9LAkvKiAx ICAgICAgICAgICAgICAxICAgKi8KKwl7IDB4MzAsIDB4MDAsIDB4MEYgfSwJLyogMSAgICAgICAg ICAgICAgMiAgICovCisJeyAweDMxLCAweDAwLCAweDAzIH0sCS8qIDIgICAgICAgICAgICAgIDAg ICAqLworCXsgMHgzNCwgMHgwMCwgMHgwQiB9LAkvKiAyICAgICAgICAgICAgICAxICAgKi8KKwl7 IDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMyAgICAgICAgICAgICAgMCAgICovCit9OworCitzdGF0 aWMgY29uc3Qgc3RydWN0IGljbF9tZ19waHlfZGRpX2J1Zl90cmFucyBpY2xfbWdfcGh5X2RkaV90 cmFuc2xhdGlvbnNfaGJyMl9oYnIzW10gPSB7CisJCQkJLyogVm9sdGFnZSBzd2luZyAgcHJlLWVt cGhhc2lzICovCisJeyAweDE4LCAweDAwLCAweDAwIH0sCS8qIDAgICAgICAgICAgICAgIDAgICAq LworCXsgMHgxRCwgMHgwMCwgMHgwNSB9LAkvKiAwICAgICAgICAgICAgICAxICAgKi8KKwl7IDB4 MjQsIDB4MDAsIDB4MEMgfSwJLyogMCAgICAgICAgICAgICAgMiAgICovCisJeyAweDJCLCAweDAw LCAweDE0IH0sCS8qIDAgICAgICAgICAgICAgIDMgICAqLworCXsgMHgyNiwgMHgwMCwgMHgwMCB9 LAkvKiAxICAgICAgICAgICAgICAwICAgKi8KKwl7IDB4MkMsIDB4MDAsIDB4MDcgfSwJLyogMSAg ICAgICAgICAgICAgMSAgICovCisJeyAweDMzLCAweDAwLCAweDBDIH0sCS8qIDEgICAgICAgICAg ICAgIDIgICAqLworCXsgMHgyRSwgMHgwMCwgMHgwMCB9LAkvKiAyICAgICAgICAgICAgICAwICAg Ki8KKwl7IDB4MzYsIDB4MDAsIDB4MDkgfSwJLyogMiAgICAgICAgICAgICAgMSAgICovCisJeyAw eDNGLCAweDAwLCAweDAwIH0sCS8qIDMgICAgICAgICAgICAgIDAgICAqLworfTsKKworc3RhdGlj IGNvbnN0IHN0cnVjdCBpY2xfbWdfcGh5X2RkaV9idWZfdHJhbnMgaWNsX21nX3BoeV9kZGlfdHJh bnNsYXRpb25zX2hkbWlbXSA9IHsKKwkJCQkvKiBIRE1JIFByZXNldAlWUwlQcmUtZW1waCAqLwor CXsgMHgxQSwgMHgwLCAweDAgfSwJLyogMQkJNDAwbVYJMGRCICovCisJeyAweDIwLCAweDAsIDB4 MCB9LAkvKiAyCQk1MDBtVgkwZEIgKi8KKwl7IDB4MjksIDB4MCwgMHgwIH0sCS8qIDMJCTY1MG1W CTBkQiAqLworCXsgMHgzMiwgMHgwLCAweDAgfSwJLyogNAkJODAwbVYJMGRCICovCisJeyAweDNG LCAweDAsIDB4MCB9LAkvKiA1CQkxMDAwbVYJMGRCICovCisJeyAweDNBLCAweDAsIDB4NSB9LAkv KiA2CQlGdWxsCS0xLjUgZEIgKi8KKwl7IDB4MzksIDB4MCwgMHg2IH0sCS8qIDcJCUZ1bGwJLTEu OCBkQiAqLworCXsgMHgzOCwgMHgwLCAweDcgfSwJLyogOAkJRnVsbAktMiBkQiAqLworCXsgMHgz NywgMHgwLCAweDggfSwJLyogOQkJRnVsbAktMi41IGRCICovCisJeyAweDM2LCAweDAsIDB4OSB9 LAkvKiAxMAkJRnVsbAktMyBkQiAqLworfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB0Z2xfZGts X3BoeV9kZGlfYnVmX3RyYW5zIHRnbF9ka2xfcGh5X2RwX2RkaV90cmFuc1tdID0geworCQkJCS8q IFZTCXByZS1lbXAJTm9uLXRyYW5zIG1WCVByZS1lbXBoIGRCICovCisJeyAweDcsIDB4MCwgMHgw MCB9LAkvKiAwCTAJNDAwbVYJCTAgZEIgKi8KKwl7IDB4NSwgMHgwLCAweDA1IH0sCS8qIDAJMQk0 MDBtVgkJMy41IGRCICovCisJeyAweDIsIDB4MCwgMHgwQiB9LAkvKiAwCTIJNDAwbVYJCTYgZEIg Ki8KKwl7IDB4MCwgMHgwLCAweDE4IH0sCS8qIDAJMwk0MDBtVgkJOS41IGRCICovCisJeyAweDUs IDB4MCwgMHgwMCB9LAkvKiAxCTAJNjAwbVYJCTAgZEIgKi8KKwl7IDB4MiwgMHgwLCAweDA4IH0s CS8qIDEJMQk2MDBtVgkJMy41IGRCICovCisJeyAweDAsIDB4MCwgMHgxNCB9LAkvKiAxCTIJNjAw bVYJCTYgZEIgKi8KKwl7IDB4MiwgMHgwLCAweDAwIH0sCS8qIDIJMAk4MDBtVgkJMCBkQiAqLwor CXsgMHgwLCAweDAsIDB4MEIgfSwJLyogMgkxCTgwMG1WCQkzLjUgZEIgKi8KKwl7IDB4MCwgMHgw LCAweDAwIH0sCS8qIDMJMAkxMjAwbVYJCTAgZEIgSERNSSBkZWZhdWx0ICovCit9OworCitzdGF0 aWMgY29uc3Qgc3RydWN0IHRnbF9ka2xfcGh5X2RkaV9idWZfdHJhbnMgdGdsX2RrbF9waHlfZHBf ZGRpX3RyYW5zX2hicjJbXSA9IHsKKwkJCQkvKiBWUwlwcmUtZW1wCU5vbi10cmFucyBtVglQcmUt ZW1waCBkQiAqLworCXsgMHg3LCAweDAsIDB4MDAgfSwJLyogMAkwCTQwMG1WCQkwIGRCICovCisJ eyAweDUsIDB4MCwgMHgwNSB9LAkvKiAwCTEJNDAwbVYJCTMuNSBkQiAqLworCXsgMHgyLCAweDAs IDB4MEIgfSwJLyogMAkyCTQwMG1WCQk2IGRCICovCisJeyAweDAsIDB4MCwgMHgxOSB9LAkvKiAw CTMJNDAwbVYJCTkuNSBkQiAqLworCXsgMHg1LCAweDAsIDB4MDAgfSwJLyogMQkwCTYwMG1WCQkw IGRCICovCisJeyAweDIsIDB4MCwgMHgwOCB9LAkvKiAxCTEJNjAwbVYJCTMuNSBkQiAqLworCXsg MHgwLCAweDAsIDB4MTQgfSwJLyogMQkyCTYwMG1WCQk2IGRCICovCisJeyAweDIsIDB4MCwgMHgw MCB9LAkvKiAyCTAJODAwbVYJCTAgZEIgKi8KKwl7IDB4MCwgMHgwLCAweDBCIH0sCS8qIDIJMQk4 MDBtVgkJMy41IGRCICovCisJeyAweDAsIDB4MCwgMHgwMCB9LAkvKiAzCTAJMTIwMG1WCQkwIGRC IEhETUkgZGVmYXVsdCAqLworfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB0Z2xfZGtsX3BoeV9k ZGlfYnVmX3RyYW5zIHRnbF9ka2xfcGh5X2hkbWlfZGRpX3RyYW5zW10gPSB7CisJCQkJLyogSERN SSBQcmVzZXQJVlMJUHJlLWVtcGggKi8KKwl7IDB4NywgMHgwLCAweDAgfSwJLyogMQkJNDAwbVYJ MGRCICovCisJeyAweDYsIDB4MCwgMHgwIH0sCS8qIDIJCTUwMG1WCTBkQiAqLworCXsgMHg0LCAw eDAsIDB4MCB9LAkvKiAzCQk2NTBtVgkwZEIgKi8KKwl7IDB4MiwgMHgwLCAweDAgfSwJLyogNAkJ ODAwbVYJMGRCICovCisJeyAweDAsIDB4MCwgMHgwIH0sCS8qIDUJCTEwMDBtVgkwZEIgKi8KKwl7 IDB4MCwgMHgwLCAweDUgfSwJLyogNgkJRnVsbAktMS41IGRCICovCisJeyAweDAsIDB4MCwgMHg2 IH0sCS8qIDcJCUZ1bGwJLTEuOCBkQiAqLworCXsgMHgwLCAweDAsIDB4NyB9LAkvKiA4CQlGdWxs CS0yIGRCICovCisJeyAweDAsIDB4MCwgMHg4IH0sCS8qIDkJCUZ1bGwJLTIuNSBkQiAqLworCXsg MHgwLCAweDAsIDB4QSB9LAkvKiAxMAkJRnVsbAktMyBkQiAqLworfTsKKworc3RhdGljIGNvbnN0 IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyB0Z2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNf ZHBfaGJyW10gPSB7CisJCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLworCXsgMHhBLCAw eDMyLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDM1MCAgIDM1MCAgICAgIDAuMCAgICovCisJeyAw eEEsIDB4NEYsIDB4MzcsIDB4MDAsIDB4MDggfSwJLyogMzUwICAgNTAwICAgICAgMy4xICAgKi8K Kwl7IDB4QywgMHg3MSwgMHgyRiwgMHgwMCwgMHgxMCB9LAkvKiAzNTAgICA3MDAgICAgICA2LjAg ICAqLworCXsgMHg2LCAweDdELCAweDJCLCAweDAwLCAweDE0IH0sCS8qIDM1MCAgIDkwMCAgICAg IDguMiAgICovCisJeyAweEEsIDB4NEMsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNTAwICAgNTAw ICAgICAgMC4wICAgKi8KKwl7IDB4QywgMHg3MywgMHgzNCwgMHgwMCwgMHgwQiB9LAkvKiA1MDAg ICA3MDAgICAgICAyLjkgICAqLworCXsgMHg2LCAweDdGLCAweDJGLCAweDAwLCAweDEwIH0sCS8q IDUwMCAgIDkwMCAgICAgIDUuMSAgICovCisJeyAweEMsIDB4NkMsIDB4M0MsIDB4MDAsIDB4MDMg fSwJLyogNjUwICAgNzAwICAgICAgMC42ICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgzNSwgMHgwMCwg MHgwQSB9LAkvKiA2MDAgICA5MDAgICAgICAzLjUgICAqLworCXsgMHg2LCAweDdGLCAweDNGLCAw eDAwLCAweDAwIH0sCS8qIDkwMCAgIDkwMCAgICAgIDAuMCAgICovCit9OworCitzdGF0aWMgY29u c3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIHRnbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9u c19kcF9oYnIyW10gPSB7CisJCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLworCXsgMHhB LCAweDM1LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDM1MCAgIDM1MCAgICAgIDAuMCAgICovCisJ eyAweEEsIDB4NEYsIDB4MzcsIDB4MDAsIDB4MDggfSwJLyogMzUwICAgNTAwICAgICAgMy4xICAg Ki8KKwl7IDB4QywgMHg2MywgMHgyRiwgMHgwMCwgMHgxMCB9LAkvKiAzNTAgICA3MDAgICAgICA2 LjAgICAqLworCXsgMHg2LCAweDdGLCAweDJCLCAweDAwLCAweDE0IH0sCS8qIDM1MCAgIDkwMCAg ICAgIDguMiAgICovCisJeyAweEEsIDB4NDcsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNTAwICAg NTAwICAgICAgMC4wICAgKi8KKwl7IDB4QywgMHg2MywgMHgzNCwgMHgwMCwgMHgwQiB9LAkvKiA1 MDAgICA3MDAgICAgICAyLjkgICAqLworCXsgMHg2LCAweDdGLCAweDJGLCAweDAwLCAweDEwIH0s CS8qIDUwMCAgIDkwMCAgICAgIDUuMSAgICovCisJeyAweEMsIDB4NjEsIDB4M0MsIDB4MDAsIDB4 MDMgfSwJLyogNjUwICAgNzAwICAgICAgMC42ICAgKi8KKwl7IDB4NiwgMHg3QiwgMHgzNSwgMHgw MCwgMHgwQSB9LAkvKiA2MDAgICA5MDAgICAgICAzLjUgICAqLworCXsgMHg2LCAweDdGLCAweDNG LCAweDAwLCAweDAwIH0sCS8qIDkwMCAgIDkwMCAgICAgIDAuMCAgICovCit9OworCitzdGF0aWMg Y29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIHRnbF91eV9jb21ib19waHlfZGRpX3RyYW5z bGF0aW9uc19kcF9oYnIyW10gPSB7CisJCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwor CXsgMHhBLCAweDM1LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDM1MCAgIDM1MCAgICAgIDAuMCAg ICovCisJeyAweEEsIDB4NEYsIDB4MzYsIDB4MDAsIDB4MDkgfSwJLyogMzUwICAgNTAwICAgICAg My4xICAgKi8KKwl7IDB4QywgMHg2MCwgMHgzMiwgMHgwMCwgMHgwRCB9LAkvKiAzNTAgICA3MDAg ICAgICA2LjAgICAqLworCXsgMHhDLCAweDdGLCAweDJELCAweDAwLCAweDEyIH0sCS8qIDM1MCAg IDkwMCAgICAgIDguMiAgICovCisJeyAweEMsIDB4NDcsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyog NTAwICAgNTAwICAgICAgMC4wICAgKi8KKwl7IDB4QywgMHg2RiwgMHgzNiwgMHgwMCwgMHgwOSB9 LAkvKiA1MDAgICA3MDAgICAgICAyLjkgICAqLworCXsgMHg2LCAweDdELCAweDMyLCAweDAwLCAw eDBEIH0sCS8qIDUwMCAgIDkwMCAgICAgIDUuMSAgICovCisJeyAweDYsIDB4NjAsIDB4M0MsIDB4 MDAsIDB4MDMgfSwJLyogNjUwICAgNzAwICAgICAgMC42ICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgz NCwgMHgwMCwgMHgwQiB9LAkvKiA2MDAgICA5MDAgICAgICAzLjUgICAqLworCXsgMHg2LCAweDdG LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDkwMCAgIDkwMCAgICAgIDAuMCAgICovCit9OworCisv KgorICogQ2xvbmVkIHRoZSBIT0JMIGVudHJ5IHRvIGNvbXBseSB3aXRoIHRoZSB2b2x0YWdlIGFu ZCBwcmUtZW1waGFzaXMgZW50cmllcworICogdGhhdCBEaXNwbGF5UG9ydCBzcGVjaWZpY2F0aW9u IHJlcXVpcmVzCisgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgdGds X2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIyX2hvYmxbXSA9IHsKKwkJCQkJCS8q IFZTCXByZS1lbXAJKi8KKwl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAwCTAJ Ki8KKwl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAwCTEJKi8KKwl7IDB4Niwg MHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAwCTIJKi8KKwl7IDB4NiwgMHg3RiwgMHgzRiwg MHgwMCwgMHgwMCB9LAkvKiAwCTMJKi8KKwl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9 LAkvKiAxCTAJKi8KKwl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAxCTEJKi8K Kwl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAxCTIJKi8KKwl7IDB4NiwgMHg3 RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAyCTAJKi8KKwl7IDB4NiwgMHg3RiwgMHgzRiwgMHgw MCwgMHgwMCB9LAkvKiAyCTEJKi8KK307CisKK2Jvb2wgaXNfaG9ibF9idWZfdHJhbnMoY29uc3Qg c3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICp0YWJsZSkKK3sKKwlyZXR1cm4gdGFibGUgPT0gdGds X2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIyX2hvYmw7Cit9CisKK2NvbnN0IHN0 cnVjdCBkZGlfYnVmX3RyYW5zICoKK2Jkd19nZXRfYnVmX3RyYW5zX2VkcChzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCit7CisJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CisKKwlpZiAoZGV2 X3ByaXYtPnZidC5lZHAubG93X3Zzd2luZykgeworCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShi ZHdfZGRpX3RyYW5zbGF0aW9uc19lZHApOworCQlyZXR1cm4gYmR3X2RkaV90cmFuc2xhdGlvbnNf ZWRwOworCX0gZWxzZSB7CisJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGJkd19kZGlfdHJhbnNs YXRpb25zX2RwKTsKKwkJcmV0dXJuIGJkd19kZGlfdHJhbnNsYXRpb25zX2RwOworCX0KK30KKwor Y29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKgorc2tsX2dldF9idWZfdHJhbnNfZHAoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCAqbl9lbnRyaWVzKQoreworCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOworCisJ aWYgKElTX1NLTF9VTFgoZGV2X3ByaXYpKSB7CisJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHNr bF95X2RkaV90cmFuc2xhdGlvbnNfZHApOworCQlyZXR1cm4gc2tsX3lfZGRpX3RyYW5zbGF0aW9u c19kcDsKKwl9IGVsc2UgaWYgKElTX1NLTF9VTFQoZGV2X3ByaXYpKSB7CisJCSpuX2VudHJpZXMg PSBBUlJBWV9TSVpFKHNrbF91X2RkaV90cmFuc2xhdGlvbnNfZHApOworCQlyZXR1cm4gc2tsX3Vf ZGRpX3RyYW5zbGF0aW9uc19kcDsKKwl9IGVsc2UgeworCQkqbl9lbnRyaWVzID0gQVJSQVlfU0la RShza2xfZGRpX3RyYW5zbGF0aW9uc19kcCk7CisJCXJldHVybiBza2xfZGRpX3RyYW5zbGF0aW9u c19kcDsKKwl9Cit9CisKK2NvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zICoKK2tibF9nZXRfYnVm X3RyYW5zX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmllcykK K3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXIt PmJhc2UuZGV2KTsKKworCWlmIChJU19LQkxfVUxYKGRldl9wcml2KSB8fAorCSAgICBJU19DRkxf VUxYKGRldl9wcml2KSB8fAorCSAgICBJU19DTUxfVUxYKGRldl9wcml2KSkgeworCQkqbl9lbnRy aWVzID0gQVJSQVlfU0laRShrYmxfeV9kZGlfdHJhbnNsYXRpb25zX2RwKTsKKwkJcmV0dXJuIGti bF95X2RkaV90cmFuc2xhdGlvbnNfZHA7CisJfSBlbHNlIGlmIChJU19LQkxfVUxUKGRldl9wcml2 KSB8fAorCQkgICBJU19DRkxfVUxUKGRldl9wcml2KSB8fAorCQkgICBJU19DTUxfVUxUKGRldl9w cml2KSkgeworCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShrYmxfdV9kZGlfdHJhbnNsYXRpb25z X2RwKTsKKwkJcmV0dXJuIGtibF91X2RkaV90cmFuc2xhdGlvbnNfZHA7CisJfSBlbHNlIHsKKwkJ Km5fZW50cmllcyA9IEFSUkFZX1NJWkUoa2JsX2RkaV90cmFuc2xhdGlvbnNfZHApOworCQlyZXR1 cm4ga2JsX2RkaV90cmFuc2xhdGlvbnNfZHA7CisJfQorfQorCitjb25zdCBzdHJ1Y3QgZGRpX2J1 Zl90cmFucyAqCitza2xfZ2V0X2J1Zl90cmFuc19lZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsIGludCAqbl9lbnRyaWVzKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOworCisJaWYgKGRldl9wcml2LT52YnQu ZWRwLmxvd192c3dpbmcpIHsKKwkJaWYgKElTX1NLTF9VTFgoZGV2X3ByaXYpIHx8CisJCSAgICBJ U19LQkxfVUxYKGRldl9wcml2KSB8fAorCQkgICAgSVNfQ0ZMX1VMWChkZXZfcHJpdikgfHwKKwkJ ICAgIElTX0NNTF9VTFgoZGV2X3ByaXYpKSB7CisJCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShz a2xfeV9kZGlfdHJhbnNsYXRpb25zX2VkcCk7CisJCQlyZXR1cm4gc2tsX3lfZGRpX3RyYW5zbGF0 aW9uc19lZHA7CisJCX0gZWxzZSBpZiAoSVNfU0tMX1VMVChkZXZfcHJpdikgfHwKKwkJCSAgIElT X0tCTF9VTFQoZGV2X3ByaXYpIHx8CisJCQkgICBJU19DRkxfVUxUKGRldl9wcml2KSB8fAorCQkJ ICAgSVNfQ01MX1VMVChkZXZfcHJpdikpIHsKKwkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHNr bF91X2RkaV90cmFuc2xhdGlvbnNfZWRwKTsKKwkJCXJldHVybiBza2xfdV9kZGlfdHJhbnNsYXRp b25zX2VkcDsKKwkJfSBlbHNlIHsKKwkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHNrbF9kZGlf dHJhbnNsYXRpb25zX2VkcCk7CisJCQlyZXR1cm4gc2tsX2RkaV90cmFuc2xhdGlvbnNfZWRwOwor CQl9CisJfQorCisJaWYgKElTX0tBQllMQUtFKGRldl9wcml2KSB8fAorCSAgICBJU19DT0ZGRUVM QUtFKGRldl9wcml2KSB8fAorCSAgICBJU19DT01FVExBS0UoZGV2X3ByaXYpKQorCQlyZXR1cm4g a2JsX2dldF9idWZfdHJhbnNfZHAoZW5jb2Rlciwgbl9lbnRyaWVzKTsKKwllbHNlCisJCXJldHVy biBza2xfZ2V0X2J1Zl90cmFuc19kcChlbmNvZGVyLCBuX2VudHJpZXMpOworfQorCitjb25zdCBz dHJ1Y3QgZGRpX2J1Zl90cmFucyAqCitza2xfZ2V0X2J1Zl90cmFuc19oZG1pKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50ICpuX2VudHJpZXMpCit7CisJaWYgKElTX1NLTF9V TFgoZGV2X3ByaXYpIHx8CisJICAgIElTX0tCTF9VTFgoZGV2X3ByaXYpIHx8CisJICAgIElTX0NG TF9VTFgoZGV2X3ByaXYpIHx8CisJICAgIElTX0NNTF9VTFgoZGV2X3ByaXYpKSB7CisJCSpuX2Vu dHJpZXMgPSBBUlJBWV9TSVpFKHNrbF95X2RkaV90cmFuc2xhdGlvbnNfaGRtaSk7CisJCXJldHVy biBza2xfeV9kZGlfdHJhbnNsYXRpb25zX2hkbWk7CisJfSBlbHNlIHsKKwkJKm5fZW50cmllcyA9 IEFSUkFZX1NJWkUoc2tsX2RkaV90cmFuc2xhdGlvbnNfaGRtaSk7CisJCXJldHVybiBza2xfZGRp X3RyYW5zbGF0aW9uc19oZG1pOworCX0KK30KKworaW50IHNrbF9idWZfdHJhbnNfbnVtX2VudHJp ZXMoZW51bSBwb3J0IHBvcnQsIGludCBuX2VudHJpZXMpCit7CisJLyogT25seSBERElBIGFuZCBE RElFIGNhbiBzZWxlY3QgdGhlIDEwdGggcmVnaXN0ZXIgd2l0aCBEUCAqLworCWlmIChwb3J0ID09 IFBPUlRfQSB8fCBwb3J0ID09IFBPUlRfRSkKKwkJcmV0dXJuIG1pbihuX2VudHJpZXMsIDEwKTsK KwllbHNlCisJCXJldHVybiBtaW4obl9lbnRyaWVzLCA5KTsKK30KKworY29uc3Qgc3RydWN0IGRk aV9idWZfdHJhbnMgKgoraW50ZWxfZGRpX2dldF9idWZfdHJhbnNfZHAoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsIGludCAqbl9lbnRyaWVzKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOworCisJaWYgKElTX0tB QllMQUtFKGRldl9wcml2KSB8fAorCSAgICBJU19DT0ZGRUVMQUtFKGRldl9wcml2KSB8fAorCSAg ICBJU19DT01FVExBS0UoZGV2X3ByaXYpKSB7CisJCWNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5z ICpkZGlfdHJhbnNsYXRpb25zID0KKwkJCWtibF9nZXRfYnVmX3RyYW5zX2RwKGVuY29kZXIsIG5f ZW50cmllcyk7CisJCSpuX2VudHJpZXMgPSBza2xfYnVmX3RyYW5zX251bV9lbnRyaWVzKGVuY29k ZXItPnBvcnQsICpuX2VudHJpZXMpOworCQlyZXR1cm4gZGRpX3RyYW5zbGF0aW9uczsKKwl9IGVs c2UgaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpKSB7CisJCWNvbnN0IHN0cnVjdCBkZGlfYnVmX3Ry YW5zICpkZGlfdHJhbnNsYXRpb25zID0KKwkJCXNrbF9nZXRfYnVmX3RyYW5zX2RwKGVuY29kZXIs IG5fZW50cmllcyk7CisJCSpuX2VudHJpZXMgPSBza2xfYnVmX3RyYW5zX251bV9lbnRyaWVzKGVu Y29kZXItPnBvcnQsICpuX2VudHJpZXMpOworCQlyZXR1cm4gZGRpX3RyYW5zbGF0aW9uczsKKwl9 IGVsc2UgaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikpIHsKKwkJKm5fZW50cmllcyA9IEFSUkFZ X1NJWkUoYmR3X2RkaV90cmFuc2xhdGlvbnNfZHApOworCQlyZXR1cm4gIGJkd19kZGlfdHJhbnNs YXRpb25zX2RwOworCX0gZWxzZSBpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikpIHsKKwkJKm5fZW50 cmllcyA9IEFSUkFZX1NJWkUoaHN3X2RkaV90cmFuc2xhdGlvbnNfZHApOworCQlyZXR1cm4gaHN3 X2RkaV90cmFuc2xhdGlvbnNfZHA7CisJfQorCisJKm5fZW50cmllcyA9IDA7CisJcmV0dXJuIE5V TEw7Cit9CisKK2NvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zICoKK2ludGVsX2RkaV9nZXRfYnVm X3RyYW5zX2VkcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMp Cit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVy LT5iYXNlLmRldik7CisKKwlpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpIHsKKwkJY29uc3Qgc3Ry dWN0IGRkaV9idWZfdHJhbnMgKmRkaV90cmFuc2xhdGlvbnMgPQorCQkJc2tsX2dldF9idWZfdHJh bnNfZWRwKGVuY29kZXIsIG5fZW50cmllcyk7CisJCSpuX2VudHJpZXMgPSBza2xfYnVmX3RyYW5z X251bV9lbnRyaWVzKGVuY29kZXItPnBvcnQsICpuX2VudHJpZXMpOworCQlyZXR1cm4gZGRpX3Ry YW5zbGF0aW9uczsKKwl9IGVsc2UgaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikpIHsKKwkJcmV0 dXJuIGJkd19nZXRfYnVmX3RyYW5zX2VkcChlbmNvZGVyLCBuX2VudHJpZXMpOworCX0gZWxzZSBp ZiAoSVNfSEFTV0VMTChkZXZfcHJpdikpIHsKKwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaHN3 X2RkaV90cmFuc2xhdGlvbnNfZHApOworCQlyZXR1cm4gaHN3X2RkaV90cmFuc2xhdGlvbnNfZHA7 CisJfQorCisJKm5fZW50cmllcyA9IDA7CisJcmV0dXJuIE5VTEw7Cit9CisKK2NvbnN0IHN0cnVj dCBkZGlfYnVmX3RyYW5zICoKK2ludGVsX2RkaV9nZXRfYnVmX3RyYW5zX2ZkaShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgICAgaW50ICpuX2VudHJpZXMpCit7CisJaWYg KElTX0JST0FEV0VMTChkZXZfcHJpdikpIHsKKwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoYmR3 X2RkaV90cmFuc2xhdGlvbnNfZmRpKTsKKwkJcmV0dXJuIGJkd19kZGlfdHJhbnNsYXRpb25zX2Zk aTsKKwl9IGVsc2UgaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpKSB7CisJCSpuX2VudHJpZXMgPSBB UlJBWV9TSVpFKGhzd19kZGlfdHJhbnNsYXRpb25zX2ZkaSk7CisJCXJldHVybiBoc3dfZGRpX3Ry YW5zbGF0aW9uc19mZGk7CisJfQorCisJKm5fZW50cmllcyA9IDA7CisJcmV0dXJuIE5VTEw7Cit9 CisKK2NvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zICoKK2ludGVsX2RkaV9nZXRfYnVmX3RyYW5z X2hkbWkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCQkgICAgIGludCAqbl9lbnRy aWVzKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5j b2Rlci0+YmFzZS5kZXYpOworCisJaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKSB7CisJCXJldHVy biBza2xfZ2V0X2J1Zl90cmFuc19oZG1pKGRldl9wcml2LCBuX2VudHJpZXMpOworCX0gZWxzZSBp ZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSkgeworCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShi ZHdfZGRpX3RyYW5zbGF0aW9uc19oZG1pKTsKKwkJcmV0dXJuIGJkd19kZGlfdHJhbnNsYXRpb25z X2hkbWk7CisJfSBlbHNlIGlmIChJU19IQVNXRUxMKGRldl9wcml2KSkgeworCQkqbl9lbnRyaWVz ID0gQVJSQVlfU0laRShoc3dfZGRpX3RyYW5zbGF0aW9uc19oZG1pKTsKKwkJcmV0dXJuIGhzd19k ZGlfdHJhbnNsYXRpb25zX2hkbWk7CisJfQorCisJKm5fZW50cmllcyA9IDA7CisJcmV0dXJuIE5V TEw7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYnh0X2RkaV9idWZfdHJhbnMgKgorYnh0X2dl dF9idWZfdHJhbnNfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCAqbl9lbnRy aWVzKQoreworCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGJ4dF9kZGlfdHJhbnNsYXRpb25zX2Rw KTsKKwlyZXR1cm4gYnh0X2RkaV90cmFuc2xhdGlvbnNfZHA7Cit9CisKK3N0YXRpYyBjb25zdCBz dHJ1Y3QgYnh0X2RkaV9idWZfdHJhbnMgKgorYnh0X2dldF9idWZfdHJhbnNfZWRwKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmllcykKK3sKKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKKworCWlm IChkZXZfcHJpdi0+dmJ0LmVkcC5sb3dfdnN3aW5nKSB7CisJCSpuX2VudHJpZXMgPSBBUlJBWV9T SVpFKGJ4dF9kZGlfdHJhbnNsYXRpb25zX2VkcCk7CisJCXJldHVybiBieHRfZGRpX3RyYW5zbGF0 aW9uc19lZHA7CisJfQorCisJcmV0dXJuIGJ4dF9nZXRfYnVmX3RyYW5zX2RwKGVuY29kZXIsIG5f ZW50cmllcyk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYnh0X2RkaV9idWZfdHJhbnMgKgor Ynh0X2dldF9idWZfdHJhbnNfaGRtaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50 ICpuX2VudHJpZXMpCit7CisJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoYnh0X2RkaV90cmFuc2xh dGlvbnNfaGRtaSk7CisJcmV0dXJuIGJ4dF9kZGlfdHJhbnNsYXRpb25zX2hkbWk7Cit9CisKK2Nv bnN0IHN0cnVjdCBieHRfZGRpX2J1Zl90cmFucyAqCitieHRfZ2V0X2J1Zl90cmFucyhzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSwKKwkJICBpbnQgKm5fZW50cmllcykKK3sKKwlpZiAoaW50ZWxfY3J0Y19o YXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfSERNSSkpCisJCXJldHVybiBieHRfZ2V0 X2J1Zl90cmFuc19oZG1pKGVuY29kZXIsIG5fZW50cmllcyk7CisJaWYgKGludGVsX2NydGNfaGFz X3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0VEUCkpCisJCXJldHVybiBieHRfZ2V0X2J1 Zl90cmFuc19lZHAoZW5jb2Rlciwgbl9lbnRyaWVzKTsKKwlyZXR1cm4gYnh0X2dldF9idWZfdHJh bnNfZHAoZW5jb2Rlciwgbl9lbnRyaWVzKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxf ZGRpX2J1Zl90cmFucyAqCitjbmxfZ2V0X2J1Zl90cmFuc19oZG1pKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmllcykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKKwl1MzIgdm9sdGFnZSA9 IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIENOTF9QT1JUX0NPTVBfRFczKSAmIFZPTFRBR0VfSU5G T19NQVNLOworCisJaWYgKHZvbHRhZ2UgPT0gVk9MVEFHRV9JTkZPXzBfODVWKSB7CisJCSpuX2Vu dHJpZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJhbnNsYXRpb25zX2hkbWlfMF84NVYpOworCQly ZXR1cm4gY25sX2RkaV90cmFuc2xhdGlvbnNfaGRtaV8wXzg1VjsKKwl9IGVsc2UgaWYgKHZvbHRh Z2UgPT0gVk9MVEFHRV9JTkZPXzBfOTVWKSB7CisJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNu bF9kZGlfdHJhbnNsYXRpb25zX2hkbWlfMF85NVYpOworCQlyZXR1cm4gY25sX2RkaV90cmFuc2xh dGlvbnNfaGRtaV8wXzk1VjsKKwl9IGVsc2UgaWYgKHZvbHRhZ2UgPT0gVk9MVEFHRV9JTkZPXzFf MDVWKSB7CisJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJhbnNsYXRpb25zX2hk bWlfMV8wNVYpOworCQlyZXR1cm4gY25sX2RkaV90cmFuc2xhdGlvbnNfaGRtaV8xXzA1VjsKKwl9 IGVsc2UgeworCQkqbl9lbnRyaWVzID0gMTsgLyogc2h1dCB1cCBnY2MgKi8KKwkJTUlTU0lOR19D QVNFKHZvbHRhZ2UpOworCX0KKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVj dCBjbmxfZGRpX2J1Zl90cmFucyAqCitjbmxfZ2V0X2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCit7CisJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CisJdTMyIHZvbHRh Z2UgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBDTkxfUE9SVF9DT01QX0RXMykgJiBWT0xUQUdF X0lORk9fTUFTSzsKKworCWlmICh2b2x0YWdlID09IFZPTFRBR0VfSU5GT18wXzg1VikgeworCQkq bl9lbnRyaWVzID0gQVJSQVlfU0laRShjbmxfZGRpX3RyYW5zbGF0aW9uc19kcF8wXzg1Vik7CisJ CXJldHVybiBjbmxfZGRpX3RyYW5zbGF0aW9uc19kcF8wXzg1VjsKKwl9IGVsc2UgaWYgKHZvbHRh Z2UgPT0gVk9MVEFHRV9JTkZPXzBfOTVWKSB7CisJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNu bF9kZGlfdHJhbnNsYXRpb25zX2RwXzBfOTVWKTsKKwkJcmV0dXJuIGNubF9kZGlfdHJhbnNsYXRp b25zX2RwXzBfOTVWOworCX0gZWxzZSBpZiAodm9sdGFnZSA9PSBWT0xUQUdFX0lORk9fMV8wNVYp IHsKKwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoY25sX2RkaV90cmFuc2xhdGlvbnNfZHBfMV8w NVYpOworCQlyZXR1cm4gY25sX2RkaV90cmFuc2xhdGlvbnNfZHBfMV8wNVY7CisJfSBlbHNlIHsK KwkJKm5fZW50cmllcyA9IDE7IC8qIHNodXQgdXAgZ2NjICovCisJCU1JU1NJTkdfQ0FTRSh2b2x0 YWdlKTsKKwl9CisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2Rk aV9idWZfdHJhbnMgKgorY25sX2dldF9idWZfdHJhbnNfZWRwKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLCBpbnQgKm5fZW50cmllcykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKKwl1MzIgdm9sdGFnZSA9IGlu dGVsX2RlX3JlYWQoZGV2X3ByaXYsIENOTF9QT1JUX0NPTVBfRFczKSAmIFZPTFRBR0VfSU5GT19N QVNLOworCisJaWYgKGRldl9wcml2LT52YnQuZWRwLmxvd192c3dpbmcpIHsKKwkJaWYgKHZvbHRh Z2UgPT0gVk9MVEFHRV9JTkZPXzBfODVWKSB7CisJCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShj bmxfZGRpX3RyYW5zbGF0aW9uc19lZHBfMF84NVYpOworCQkJcmV0dXJuIGNubF9kZGlfdHJhbnNs YXRpb25zX2VkcF8wXzg1VjsKKwkJfSBlbHNlIGlmICh2b2x0YWdlID09IFZPTFRBR0VfSU5GT18w Xzk1VikgeworCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoY25sX2RkaV90cmFuc2xhdGlvbnNf ZWRwXzBfOTVWKTsKKwkJCXJldHVybiBjbmxfZGRpX3RyYW5zbGF0aW9uc19lZHBfMF85NVY7CisJ CX0gZWxzZSBpZiAodm9sdGFnZSA9PSBWT0xUQUdFX0lORk9fMV8wNVYpIHsKKwkJCSpuX2VudHJp ZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJhbnNsYXRpb25zX2VkcF8xXzA1Vik7CisJCQlyZXR1 cm4gY25sX2RkaV90cmFuc2xhdGlvbnNfZWRwXzFfMDVWOworCQl9IGVsc2UgeworCQkJKm5fZW50 cmllcyA9IDE7IC8qIHNodXQgdXAgZ2NjICovCisJCQlNSVNTSU5HX0NBU0Uodm9sdGFnZSk7CisJ CX0KKwkJcmV0dXJuIE5VTEw7CisJfSBlbHNlIHsKKwkJcmV0dXJuIGNubF9nZXRfYnVmX3RyYW5z X2RwKGVuY29kZXIsIG5fZW50cmllcyk7CisJfQorfQorCitjb25zdCBzdHJ1Y3QgY25sX2RkaV9i dWZfdHJhbnMgKgorY25sX2dldF9idWZfdHJhbnMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsCisJCSAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCSAg aW50ICpuX2VudHJpZXMpCit7CisJaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwg SU5URUxfT1VUUFVUX0hETUkpKQorCQlyZXR1cm4gY25sX2dldF9idWZfdHJhbnNfaGRtaShlbmNv ZGVyLCBuX2VudHJpZXMpOworCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElO VEVMX09VVFBVVF9FRFApKQorCQlyZXR1cm4gY25sX2dldF9idWZfdHJhbnNfZWRwKGVuY29kZXIs IG5fZW50cmllcyk7CisJcmV0dXJuIGNubF9nZXRfYnVmX3RyYW5zX2RwKGVuY29kZXIsIG5fZW50 cmllcyk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgoraWNs X2dldF9jb21ib19idWZfdHJhbnNfaGRtaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwK KwkJCSAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCQkg ICAgIGludCAqbl9lbnRyaWVzKQoreworCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9jb21i b19waHlfZGRpX3RyYW5zbGF0aW9uc19oZG1pKTsKKwlyZXR1cm4gaWNsX2NvbWJvX3BoeV9kZGlf dHJhbnNsYXRpb25zX2hkbWk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZf dHJhbnMgKgoraWNsX2dldF9jb21ib19idWZfdHJhbnNfZHAoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsCisJCQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKKwkJCSAgIGludCAqbl9lbnRyaWVzKQoreworCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGlj bF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIyKTsKKwlyZXR1cm4gaWNsX2NvbWJv X3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicjI7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg Y25sX2RkaV9idWZfdHJhbnMgKgoraWNsX2dldF9jb21ib19idWZfdHJhbnNfZWRwKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAorCQkJICAgIGludCAqbl9lbnRyaWVzKQoreworCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOworCisJ aWYgKGNydGNfc3RhdGUtPnBvcnRfY2xvY2sgPiA1NDAwMDApIHsKKwkJKm5fZW50cmllcyA9IEFS UkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIzKTsKKwkJcmV0 dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMzsKKwl9IGVsc2UgaWYg KGRldl9wcml2LT52YnQuZWRwLmxvd192c3dpbmcpIHsKKwkJKm5fZW50cmllcyA9IEFSUkFZX1NJ WkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIyKTsKKwkJcmV0dXJuIGlj bF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMjsKKwl9IGVsc2UgaWYgKElTX0RH MShkZXZfcHJpdikgJiYgY3J0Y19zdGF0ZS0+cG9ydF9jbG9jayA+IDI3MDAwMCkgeworCQkqbl9l bnRyaWVzID0gQVJSQVlfU0laRShkZzFfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJy Ml9oYnIzKTsKKwkJcmV0dXJuIGRnMV9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIy X2hicjM7CisJfSBlbHNlIGlmIChJU19ERzEoZGV2X3ByaXYpKSB7CisJCSpuX2VudHJpZXMgPSBB UlJBWV9TSVpFKGRnMV9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9yYnJfaGJyKTsKKwkJ cmV0dXJuIGRnMV9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9yYnJfaGJyOworCX0KKwor CXJldHVybiBpY2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChlbmNvZGVyLCBjcnRjX3N0YXRlLCBu X2VudHJpZXMpOworfQorCitjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgoraWNsX2dl dF9jb21ib19idWZfdHJhbnMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCQljb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCWludCAqbl9lbnRyaWVz KQoreworCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9I RE1JKSkKKwkJcmV0dXJuIGljbF9nZXRfY29tYm9fYnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgY3J0 Y19zdGF0ZSwgbl9lbnRyaWVzKTsKKwllbHNlIGlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNf c3RhdGUsIElOVEVMX09VVFBVVF9FRFApKQorCQlyZXR1cm4gaWNsX2dldF9jb21ib19idWZfdHJh bnNfZWRwKGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7CisJZWxzZQorCQlyZXR1cm4g aWNsX2dldF9jb21ib19idWZfdHJhbnNfZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVz KTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBpY2xfbWdfcGh5X2RkaV9idWZfdHJhbnMgKgor aWNsX2dldF9tZ19idWZfdHJhbnNfaGRtaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwK KwkJCSAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCQkgIGlu dCAqbl9lbnRyaWVzKQoreworCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9tZ19waHlfZGRp X3RyYW5zbGF0aW9uc19oZG1pKTsKKwlyZXR1cm4gaWNsX21nX3BoeV9kZGlfdHJhbnNsYXRpb25z X2hkbWk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaWNsX21nX3BoeV9kZGlfYnVmX3RyYW5z ICoKK2ljbF9nZXRfbWdfYnVmX3RyYW5zX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy LAorCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCQlpbnQg Km5fZW50cmllcykKK3sKKwlpZiAoY3J0Y19zdGF0ZS0+cG9ydF9jbG9jayA+IDI3MDAwMCkgewor CQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfbWdfcGh5X2RkaV90cmFuc2xhdGlvbnNfaGJy Ml9oYnIzKTsKKwkJcmV0dXJuIGljbF9tZ19waHlfZGRpX3RyYW5zbGF0aW9uc19oYnIyX2hicjM7 CisJfSBlbHNlIHsKKwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX21nX3BoeV9kZGlfdHJh bnNsYXRpb25zX3Jicl9oYnIpOworCQlyZXR1cm4gaWNsX21nX3BoeV9kZGlfdHJhbnNsYXRpb25z X3Jicl9oYnI7CisJfQorfQorCitjb25zdCBzdHJ1Y3QgaWNsX21nX3BoeV9kZGlfYnVmX3RyYW5z ICoKK2ljbF9nZXRfbWdfYnVmX3RyYW5zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAor CQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkgICAg IGludCAqbl9lbnRyaWVzKQoreworCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUs IElOVEVMX09VVFBVVF9IRE1JKSkKKwkJcmV0dXJuIGljbF9nZXRfbWdfYnVmX3RyYW5zX2hkbWko ZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKKwllbHNlCisJCXJldHVybiBpY2xfZ2V0 X21nX2J1Zl90cmFuc19kcChlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOworfQorCitz dGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKK2VobF9nZXRfY29tYm9fYnVm X3RyYW5zX2hkbWkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCQkgICAgIGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJICAgICBpbnQgKm5fZW50 cmllcykKK3sKKwkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFu c2xhdGlvbnNfaGRtaSk7CisJcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19o ZG1pOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKK2VobF9n ZXRfY29tYm9fYnVmX3RyYW5zX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJ ICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCQkgICBpbnQg Km5fZW50cmllcykKK3sKKwkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShlaGxfY29tYm9fcGh5X2Rk aV90cmFuc2xhdGlvbnNfZHApOworCXJldHVybiBlaGxfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlv bnNfZHA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgorZWhs X2dldF9jb21ib19idWZfdHJhbnNfZWRwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAor CQkJICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJICAg IGludCAqbl9lbnRyaWVzKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOworCisJaWYgKGRldl9wcml2LT52YnQuZWRwLmxv d192c3dpbmcpIHsKKwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlf dHJhbnNsYXRpb25zX2VkcF9oYnIyKTsKKwkJcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5z bGF0aW9uc19lZHBfaGJyMjsKKwl9CisKKwlyZXR1cm4gZWhsX2dldF9jb21ib19idWZfdHJhbnNf ZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKK30KKworY29uc3Qgc3RydWN0IGNu bF9kZGlfYnVmX3RyYW5zICoKK2VobF9nZXRfY29tYm9fYnVmX3RyYW5zKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLAorCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUsCisJCQlpbnQgKm5fZW50cmllcykKK3sKKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShj cnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfSERNSSkpCisJCXJldHVybiBlaGxfZ2V0X2NvbWJvX2J1 Zl90cmFuc19oZG1pKGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7CisJZWxzZSBpZiAo aW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfRURQKSkKKwkJcmV0 dXJuIGVobF9nZXRfY29tYm9fYnVmX3RyYW5zX2VkcChlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2Vu dHJpZXMpOworCWVsc2UKKwkJcmV0dXJuIGVobF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKGVuY29k ZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25s X2RkaV9idWZfdHJhbnMgKgoranNsX2dldF9jb21ib19idWZfdHJhbnNfaGRtaShzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCSAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCisJCQkgICAgIGludCAqbl9lbnRyaWVzKQoreworCSpuX2VudHJpZXMg PSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19oZG1pKTsKKwlyZXR1 cm4gaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2hkbWk7Cit9CisKK3N0YXRpYyBjb25z dCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgoranNsX2dldF9jb21ib19idWZfdHJhbnNfZHAo c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCSAgIGludCAqbl9lbnRyaWVzKQoreworCSpuX2Vu dHJpZXMgPSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIy KTsKKwlyZXR1cm4gaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicjI7Cit9CisK K3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgoranNsX2dldF9jb21ib19i dWZfdHJhbnNfZWRwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJICAgIGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJICAgIGludCAqbl9lbnRy aWVzKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5j b2Rlci0+YmFzZS5kZXYpOworCisJaWYgKGRldl9wcml2LT52YnQuZWRwLmxvd192c3dpbmcpIHsK KwkJaWYgKGNydGNfc3RhdGUtPnBvcnRfY2xvY2sgPiAyNzAwMDApIHsKKwkJCSpuX2VudHJpZXMg PSBBUlJBWV9TSVpFKGpzbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMik7CisJ CQlyZXR1cm4ganNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIyOworCQl9IGVs c2UgeworCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoanNsX2NvbWJvX3BoeV9kZGlfdHJhbnNs YXRpb25zX2VkcF9oYnIpOworCQkJcmV0dXJuIGpzbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9u c19lZHBfaGJyOworCQl9CisJfQorCisJcmV0dXJuIGpzbF9nZXRfY29tYm9fYnVmX3RyYW5zX2Rw KGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Cit9CisKK2NvbnN0IHN0cnVjdCBjbmxf ZGRpX2J1Zl90cmFucyAqCitqc2xfZ2V0X2NvbWJvX2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlciwKKwkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlLAorCQkJaW50ICpuX2VudHJpZXMpCit7CisJaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0 Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0hETUkpKQorCQlyZXR1cm4ganNsX2dldF9jb21ib19idWZf dHJhbnNfaGRtaShlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOworCWVsc2UgaWYgKGlu dGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0VEUCkpCisJCXJldHVy biBqc2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19lZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRy aWVzKTsKKwllbHNlCisJCXJldHVybiBqc2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChlbmNvZGVy LCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9k ZGlfYnVmX3RyYW5zICoKK3RnbF9nZXRfY29tYm9fYnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCisJCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAorCQkJICAgICBpbnQgKm5fZW50cmllcykKK3sKKwkqbl9lbnRyaWVzID0g QVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRtaSk7CisJcmV0dXJu IGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19oZG1pOworfQorCitzdGF0aWMgY29uc3Qg c3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKK3RnbF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJICAgY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCQkgICBpbnQgKm5fZW50cmllcykKK3sKKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsK KworCWlmIChjcnRjX3N0YXRlLT5wb3J0X2Nsb2NrID4gMjcwMDAwKSB7CisJCWlmIChJU19UR0xf VShkZXZfcHJpdikgfHwgSVNfVEdMX1koZGV2X3ByaXYpKSB7CisJCQkqbl9lbnRyaWVzID0gQVJS QVlfU0laRSh0Z2xfdXlfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMik7CisJCQly ZXR1cm4gdGdsX3V5X2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicjI7CisJCX0gZWxz ZSB7CisJCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRSh0Z2xfY29tYm9fcGh5X2RkaV90cmFuc2xh dGlvbnNfZHBfaGJyMik7CisJCQlyZXR1cm4gdGdsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25z X2RwX2hicjI7CisJCX0KKwl9IGVsc2UgeworCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRSh0Z2xf Y29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyKTsKKwkJcmV0dXJuIHRnbF9jb21ib19w aHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnI7CisJfQorfQorCitzdGF0aWMgY29uc3Qgc3RydWN0 IGNubF9kZGlfYnVmX3RyYW5zICoKK3RnbF9nZXRfY29tYm9fYnVmX3RyYW5zX2VkcChzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCSAgICBpbnQgKm5fZW50cmllcykKK3sKKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKKwlz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpOworCisJ aWYgKGNydGNfc3RhdGUtPnBvcnRfY2xvY2sgPiA1NDAwMDApIHsKKwkJKm5fZW50cmllcyA9IEFS UkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIzKTsKKwkJcmV0 dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMzsKKwl9IGVsc2UgaWYg KGRldl9wcml2LT52YnQuZWRwLmhvYmwgJiYgIWludGVsX2RwLT5ob2JsX2ZhaWxlZCkgeworCQkq bl9lbnRyaWVzID0gQVJSQVlfU0laRSh0Z2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRw X2hicjJfaG9ibCk7CisJCXJldHVybiB0Z2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRw X2hicjJfaG9ibDsKKwl9IGVsc2UgaWYgKGRldl9wcml2LT52YnQuZWRwLmxvd192c3dpbmcpIHsK KwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25z X2VkcF9oYnIyKTsKKwkJcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBf aGJyMjsKKwl9CisKKwlyZXR1cm4gdGdsX2dldF9jb21ib19idWZfdHJhbnNfZHAoZW5jb2Rlciwg Y3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKK30KKworY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3Ry YW5zICoKK3RnbF9nZXRfY29tYm9fYnVmX3RyYW5zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyLAorCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCQlp bnQgKm5fZW50cmllcykKK3sKKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJ TlRFTF9PVVRQVVRfSERNSSkpCisJCXJldHVybiB0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19oZG1p KGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7CisJZWxzZSBpZiAoaW50ZWxfY3J0Y19o YXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfRURQKSkKKwkJcmV0dXJuIHRnbF9nZXRf Y29tYm9fYnVmX3RyYW5zX2VkcChlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOworCWVs c2UKKwkJcmV0dXJuIHRnbF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKGVuY29kZXIsIGNydGNfc3Rh dGUsIG5fZW50cmllcyk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdGdsX2RrbF9waHlfZGRp X2J1Zl90cmFucyAqCit0Z2xfZ2V0X2RrbF9idWZfdHJhbnNfaGRtaShzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlciwKKwkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLAorCQkJICAgaW50ICpuX2VudHJpZXMpCit7CisJKm5fZW50cmllcyA9IEFSUkFZX1NJ WkUodGdsX2RrbF9waHlfaGRtaV9kZGlfdHJhbnMpOworCXJldHVybiB0Z2xfZGtsX3BoeV9oZG1p X2RkaV90cmFuczsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCB0Z2xfZGtsX3BoeV9kZGlfYnVm X3RyYW5zICoKK3RnbF9nZXRfZGtsX2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKKwkJCSBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK KwkJCSBpbnQgKm5fZW50cmllcykKK3sKKwlpZiAoY3J0Y19zdGF0ZS0+cG9ydF9jbG9jayA+IDI3 MDAwMCkgeworCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRSh0Z2xfZGtsX3BoeV9kcF9kZGlfdHJh bnNfaGJyMik7CisJCXJldHVybiB0Z2xfZGtsX3BoeV9kcF9kZGlfdHJhbnNfaGJyMjsKKwl9IGVs c2UgeworCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRSh0Z2xfZGtsX3BoeV9kcF9kZGlfdHJhbnMp OworCQlyZXR1cm4gdGdsX2RrbF9waHlfZHBfZGRpX3RyYW5zOworCX0KK30KKworY29uc3Qgc3Ry dWN0IHRnbF9ka2xfcGh5X2RkaV9idWZfdHJhbnMgKgordGdsX2dldF9ka2xfYnVmX3RyYW5zKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJICAgICAgaW50ICpuX2VudHJpZXMpCit7CisJaWYg KGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0hETUkpKQorCQly ZXR1cm4gdGdsX2dldF9ka2xfYnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9l bnRyaWVzKTsKKwllbHNlCisJCXJldHVybiB0Z2xfZ2V0X2RrbF9idWZfdHJhbnNfZHAoZW5jb2Rl ciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKK30KKworaW50IGludGVsX2RkaV9oZG1pX251bV9l bnRyaWVzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJICAgICAgIGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJICAgICAgIGludCAqZGVmYXVs dF9lbnRyeSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGVuY29kZXItPmJhc2UuZGV2KTsKKwllbnVtIHBoeSBwaHkgPSBpbnRlbF9wb3J0X3RvX3BoeShk ZXZfcHJpdiwgZW5jb2Rlci0+cG9ydCk7CisJaW50IG5fZW50cmllczsKKworCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDEyKSB7CisJCWlmIChpbnRlbF9waHlfaXNfY29tYm8oZGV2X3ByaXYs IHBoeSkpCisJCQl0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19oZG1pKGVuY29kZXIsIGNydGNfc3Rh dGUsICZuX2VudHJpZXMpOworCQllbHNlCisJCQl0Z2xfZ2V0X2RrbF9idWZfdHJhbnNfaGRtaShl bmNvZGVyLCBjcnRjX3N0YXRlLCAmbl9lbnRyaWVzKTsKKwkJKmRlZmF1bHRfZW50cnkgPSBuX2Vu dHJpZXMgLSAxOworCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA9PSAxMSkgeworCQlp ZiAoaW50ZWxfcGh5X2lzX2NvbWJvKGRldl9wcml2LCBwaHkpKQorCQkJaWNsX2dldF9jb21ib19i dWZfdHJhbnNfaGRtaShlbmNvZGVyLCBjcnRjX3N0YXRlLCAmbl9lbnRyaWVzKTsKKwkJZWxzZQor CQkJaWNsX2dldF9tZ19idWZfdHJhbnNfaGRtaShlbmNvZGVyLCBjcnRjX3N0YXRlLCAmbl9lbnRy aWVzKTsKKwkJKmRlZmF1bHRfZW50cnkgPSBuX2VudHJpZXMgLSAxOworCX0gZWxzZSBpZiAoSVNf Q0FOTk9OTEFLRShkZXZfcHJpdikpIHsKKwkJY25sX2dldF9idWZfdHJhbnNfaGRtaShlbmNvZGVy LCAmbl9lbnRyaWVzKTsKKwkJKmRlZmF1bHRfZW50cnkgPSBuX2VudHJpZXMgLSAxOworCX0gZWxz ZSBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpIHsKKwkJYnh0X2dldF9idWZfdHJhbnNfaGRtaShl bmNvZGVyLCAmbl9lbnRyaWVzKTsKKwkJKmRlZmF1bHRfZW50cnkgPSBuX2VudHJpZXMgLSAxOwor CX0gZWxzZSBpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpIHsKKwkJaW50ZWxfZGRpX2dldF9idWZf dHJhbnNfaGRtaShlbmNvZGVyLCAmbl9lbnRyaWVzKTsKKwkJKmRlZmF1bHRfZW50cnkgPSA4Owor CX0gZWxzZSBpZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSkgeworCQlpbnRlbF9kZGlfZ2V0X2J1 Zl90cmFuc19oZG1pKGVuY29kZXIsICZuX2VudHJpZXMpOworCQkqZGVmYXVsdF9lbnRyeSA9IDc7 CisJfSBlbHNlIGlmIChJU19IQVNXRUxMKGRldl9wcml2KSkgeworCQlpbnRlbF9kZGlfZ2V0X2J1 Zl90cmFuc19oZG1pKGVuY29kZXIsICZuX2VudHJpZXMpOworCQkqZGVmYXVsdF9lbnRyeSA9IDY7 CisJfSBlbHNlIHsKKwkJZHJtX1dBUk4oJmRldl9wcml2LT5kcm0sIDEsICJkZGkgdHJhbnNsYXRp b24gdGFibGUgbWlzc2luZ1xuIik7CisJCXJldHVybiAwOworCX0KKworCWlmIChkcm1fV0FSTl9P Tl9PTkNFKCZkZXZfcHJpdi0+ZHJtLCBuX2VudHJpZXMgPT0gMCkpCisJCXJldHVybiAwOworCisJ cmV0dXJuIG5fZW50cmllczsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfZGRpX2J1Zl90cmFucy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kZGlfYnVmX3RyYW5zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi45YjI3NzI5ZjkyMzMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2RkaV9idWZfdHJhbnMuaApAQCAtMCwwICsxLDk5IEBACisvKiBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUICovCisvKgorICogQ29weXJpZ2h0IMKpIDIwMjAg SW50ZWwgQ29ycG9yYXRpb24KKyAqLworCisjaWZuZGVmIF9JTlRFTF9ERElfQlVGX1RSQU5TX0hf CisjZGVmaW5lIF9JTlRFTF9ERElfQlVGX1RSQU5TX0hfCisKKyNpbmNsdWRlIDxsaW51eC90eXBl cy5oPgorCitzdHJ1Y3QgaW50ZWxfZW5jb2RlcjsKK3N0cnVjdCBpbnRlbF9jcnRjX3N0YXRlOwor CitzdHJ1Y3QgZGRpX2J1Zl90cmFucyB7CisJdTMyIHRyYW5zMTsJLyogYmFsYW5jZSBsZWcgZW5h YmxlLCBkZS1lbXBoIGxldmVsICovCisJdTMyIHRyYW5zMjsJLyogdnJlZiBzZWwsIHZzd2luZyAq LworCXU4IGlfYm9vc3Q7CS8qIFNLTDogSV9ib29zdDsgdmFsaWQ6IDB4MCwgMHgxLCAweDMsIDB4 NyAqLworfTsKKworc3RydWN0IGJ4dF9kZGlfYnVmX3RyYW5zIHsKKwl1OCBtYXJnaW47CS8qIHN3 aW5nIHZhbHVlICovCisJdTggc2NhbGU7CS8qIHNjYWxlIHZhbHVlICovCisJdTggZW5hYmxlOwkv KiBzY2FsZSBlbmFibGUgKi8KKwl1OCBkZWVtcGhhc2lzOworfTsKKworc3RydWN0IGNubF9kZGlf YnVmX3RyYW5zIHsKKwl1OCBkdzJfc3dpbmdfc2VsOworCXU4IGR3N19uX3NjYWxhcjsKKwl1OCBk dzRfY3Vyc29yX2NvZWZmOworCXU4IGR3NF9wb3N0X2N1cnNvcl8yOworCXU4IGR3NF9wb3N0X2N1 cnNvcl8xOworfTsKKworc3RydWN0IGljbF9tZ19waHlfZGRpX2J1Zl90cmFucyB7CisJdTMyIGNy aV90eGRlZW1waF9vdmVycmlkZV8xMV82OworCXUzMiBjcmlfdHhkZWVtcGhfb3ZlcnJpZGVfNV8w OworCXUzMiBjcmlfdHhkZWVtcGhfb3ZlcnJpZGVfMTdfMTI7Cit9OworCitzdHJ1Y3QgdGdsX2Rr bF9waHlfZGRpX2J1Zl90cmFucyB7CisJdTMyIGRrbF92c3dpbmdfY29udHJvbDsKKwl1MzIgZGts X3ByZXNob290X2NvbnRyb2w7CisJdTMyIGRrbF9kZV9lbXBoYXNpc19jb250cm9sOworfTsKKwor Ym9vbCBpc19ob2JsX2J1Zl90cmFucyhjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKnRh YmxlKTsKKworaW50IGludGVsX2RkaV9oZG1pX251bV9lbnRyaWVzKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAorCQkJICAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAorCQkJICAgICAgIGludCAqZGVmYXVsdF9lbnRyeSk7CisKK2NvbnN0IHN0cnVj dCBkZGlfYnVmX3RyYW5zICoKK2ludGVsX2RkaV9nZXRfYnVmX3RyYW5zX2VkcChzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpOworY29uc3Qgc3RydWN0IGRkaV9i dWZfdHJhbnMgKgoraW50ZWxfZGRpX2dldF9idWZfdHJhbnNfZmRpKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKKwkJCSAgICBpbnQgKm5fZW50cmllcyk7Citjb25zdCBzdHJ1Y3Qg ZGRpX2J1Zl90cmFucyAqCitpbnRlbF9kZGlfZ2V0X2J1Zl90cmFuc19oZG1pKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLAorCQkJICAgICBpbnQgKm5fZW50cmllcyk7Citjb25zdCBzdHJ1 Y3QgZGRpX2J1Zl90cmFucyAqCitpbnRlbF9kZGlfZ2V0X2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpOworCitjb25zdCBzdHJ1Y3QgYnh0 X2RkaV9idWZfdHJhbnMgKgorYnh0X2dldF9idWZfdHJhbnMoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsCisJCSAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs CisJCSAgaW50ICpuX2VudHJpZXMpOworCitjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMg KgordGdsX2dldF9jb21ib19idWZfdHJhbnMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs CisJCQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCWludCAq bl9lbnRyaWVzKTsKK2NvbnN0IHN0cnVjdCB0Z2xfZGtsX3BoeV9kZGlfYnVmX3RyYW5zICoKK3Rn bF9nZXRfZGtsX2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJICAg ICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCSAgICAgIGlu dCAqbl9lbnRyaWVzKTsKK2NvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCitqc2xfZ2V0 X2NvbWJvX2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCWNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJaW50ICpuX2VudHJpZXMp OworY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKK2VobF9nZXRfY29tYm9fYnVmX3Ry YW5zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCQlpbnQgKm5fZW50cmllcyk7Citjb25zdCBzdHJ1 Y3QgY25sX2RkaV9idWZfdHJhbnMgKgoraWNsX2dldF9jb21ib19idWZfdHJhbnMoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCisJCQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKKwkJCWludCAqbl9lbnRyaWVzKTsKK2NvbnN0IHN0cnVjdCBpY2xfbWdfcGh5 X2RkaV9idWZfdHJhbnMgKgoraWNsX2dldF9tZ19idWZfdHJhbnMoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIsCisJCSAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUsCisJCSAgICAgaW50ICpuX2VudHJpZXMpOworCitjb25zdCBzdHJ1Y3QgY25sX2RkaV9i dWZfdHJhbnMgKgorY25sX2dldF9idWZfdHJhbnMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsCisJCSAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCSAg aW50ICpuX2VudHJpZXMpOworCQkgIAorI2VuZGlmCi0tIAoyLjI3LjAKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=