From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id CD02E44D90 for ; Fri, 23 Dec 2022 18:01:17 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D5CD768BB0D; Fri, 23 Dec 2022 20:01:13 +0200 (EET) Received: from JPN01-TYC-obe.outbound.protection.outlook.com (mail-tycjpn01olkn2077.outbound.protection.outlook.com [40.92.99.77]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BE9BA68BAD5 for ; Fri, 23 Dec 2022 20:01:05 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HIg3Ht2LTfZP3ApFKU0jsEej5Xyr/wYggPl+q4PPM8+JZsX4VxTNZ4tLSzte4S0SqoRhNmgCMPYKI6qaOaUc5wxGkePbs+RS6BmXBn5//mofcAKNl2yfpP/PjIgKJtDMfXf0Ozr/BB+J1Frbtcyk4uYL8IEHfJLO+GCoO6muoD0jQTKaHHtdBsj6p756YmCzRuAmJ28TxRij2pd14wfuA+Tivm5rkzqAHvT7bFIVadWbmU41EXPmEhp2ksbOr6jF03We9rA4ds6VTY5BuCFn3xWsXB7bIWJiW0UMC32RiGMaGIWo5Yeeo2W+Shryg+aajPFf2VwiUE1uKMQv2mraLQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=PKrQhNvdCy6MMaJXSKzKFXyUo5f9vSeb2JcgwOLMnaU=; b=diNydxpcJ3PIAYLqReVWijKvCB5AiysEs15dZbUmQZhKDSM07QBsHseOEj6BvEkLksbc5DqDa0VohrykL1ZggrLehCoS4ex9fkNmlxYull/U3OkOJD6E2Mp/x6fcB4oXhtrNs+5eIytORrAuA9NLtfxlX7+0TkWZSG7eBiz0v+gNm7vMfV8NUc7CZVEh4NB3PymEDc9xQIrHvaZ9BcQVEsgX3eOfFKqer9VuadyprvWggieq+4sGpKBNUZlE7+vtT9Do3MjiSDa64I8/kYg4CxKpZ0B6RFrbrVSs+jK9GuGgVy9Wk2/SHXJjzA8dlDtx8uQuqUw8y/H0qvbMyloSpA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PKrQhNvdCy6MMaJXSKzKFXyUo5f9vSeb2JcgwOLMnaU=; b=r/lEa9paBdW75isXe50x8j9CHQJbXDJQGnxqiTASlbKkNA3mn+1Pn0FwNzLbtEW6Z2WdbtpGziQigsNoRXma+SxkXRLpXlf3il2/H2j0X1fPyNum04EF7RACNwANMAinrq0R43QBS2KI13M9YHoG6GrEcXD/QCny6aMSWq1iuJi8DKUr8mYzlwuLv+Y+b+3ORvD5yI7YqBDOkAnTuAt1qIO2dM1JGAKocdZP5dijsc6aHYP2tXoJWmVWPJOdDr/3Hsp6sLaEwbXhOIXMmxLrbpDxc5fp++yvmKy2f8pkFLW4CYTYpzbiYNex2I3+cqxjt5UT+atFLXeZhnEgTU6LCA== Received: from OSZP286MB2173.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:186::5) by OSZP286MB2256.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:18e::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.13; Fri, 23 Dec 2022 18:01:01 +0000 Received: from OSZP286MB2173.JPNP286.PROD.OUTLOOK.COM ([fe80::e09d:12e0:e7af:3e51]) by OSZP286MB2173.JPNP286.PROD.OUTLOOK.COM ([fe80::e09d:12e0:e7af:3e51%4]) with mapi id 15.20.5924.016; Fri, 23 Dec 2022 18:01:01 +0000 From: Wu Jianhua To: FFmpeg development discussions and patches Thread-Topic: [PATCH v2] avcodec: add D3D12VA hardware accelerated H264, HEVC, VP9, and AV1 decoding Thread-Index: AQHZFvZD6gCY8kSLQEqAoqZs4+ifVq57wvhm Date: Fri, 23 Dec 2022 18:01:01 +0000 Message-ID: References: In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [fD+jJzhEc5HCO3KBbzXphUG2hDZibvfx] x-ms-publictraffictype: Email x-ms-traffictypediagnostic: OSZP286MB2173:EE_|OSZP286MB2256:EE_ x-ms-office365-filtering-correlation-id: f17f802d-9cf5-4399-f37d-08dae50fa6cf x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Gw5G/bDcoChvwdLfwVwnM2USnY0SrpE9k6glv76UYELqp8mbQiFq6C1WUDbvrQMZxxrayxT5khfJzCaTPptkoIC49ioY/j3IFfwAeqA9RUmVmLSK+4iAKq4lVRxaWsNgWfZw3vdtTm+EvPdh69GWnSOK0I4jpo8KBY1D1yeud4q0bkYKcoJpIs7ZWM7h5TYFAXYUSUHJ5Jz75XAcfXMvFK8+m2TPwKXb5jqlQDd1VfiijzEFWJ0EEV/HRbtqsw7CxCzCA0z74RDwGUGzji7WqdvugUskjmEafKEHdqh9mjBdUKRvy8xFbAEKSqrni1G3oyEiJMSKeuqUfoneN0RxI8u2NGfvt/YguqHMU1e3LEHmayJiCstY/uGPd5YoGwojEmd5sdcQ7CTo3wkty2L7ZMBKPsCH0e+tAY3B+qdOsl/D9WLK6B68wkrgd5p2wNbuxptCAWA8IfuU25slF0158SGrOWonjIccHgvYj7OSCqrnHY75uO6O7f2TqtALKgwIxko7dXqZRkiFVy8SwTQvU5iao4Orc9FSAaP6kGrs5dwL0vFmIyBmmHd0uuGnEGDAI0jCq+dLxUD+WNBky5tQ/phmr+dn/ptRSTcYOXhA6k4= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?FCo/GWeOUWiEv/q8shEYwDxlIGhD/8IDbNfy7TeIf0x+4ey9HHaRsXHPukZT?= =?us-ascii?Q?OFn2na28qwa4l0TC1WmcmYBJLPTVzQDUn/Z7Ondewg39l7ISEGktWlmFrOId?= =?us-ascii?Q?Q/cww3KdB3GRmUq02aav9Hqt9Hplf+zyDYmEKEGvg1bTtAzH6m5sAbgSGCtp?= =?us-ascii?Q?iX+IK8lwuK7xjiDuOLPkupKF1kTLSZ6VIip41L3m7+EjvG0s2li2Uc0brmJu?= =?us-ascii?Q?tOsXOEl50PvmkTqf2OQLkPUqGecOW0aM2MX/9TlXwXn8W+zBf8TQqnxH4Q7R?= =?us-ascii?Q?fYOqQkGN8RuGn3sqOGYlnLthMhOu+uI42DssNC9/sGYl6whcPH8qjrq8iEJ2?= =?us-ascii?Q?LyPImYZqdJ4wwn5sHgrRXOqEHKpsuNccHt5gdb9Z0j+OqB2FR53IZLwkj5Aq?= =?us-ascii?Q?6tgbubKgAXaJqNJhmgOncW+2pf8p4kX82s/OWwYYg+vou5mn6VnERxfjn/RJ?= =?us-ascii?Q?UZaJOSN6nz3mQlyNL5tg7VcLzKfgm+53mvhiKYLWetLA75aDsBvzYIqz1Kie?= =?us-ascii?Q?GB5WFWNgZf6zuFJw3m902gpEDbtg5mkpf3RlKwZlQIgYp19QMlH6qYuqqh3k?= =?us-ascii?Q?o+NaPU+ijMTDV34ir72++Y5Y7RFriVmHz/tZ3/XAg2BoQuMi65JmpY3Obm7r?= =?us-ascii?Q?YZEFmpQYR7J4qKYxI2sMS2uN+vsnoKH7JqH0KEC2LTiuFQjEh/M38JCjXtXT?= =?us-ascii?Q?FkTGF818uml509ls66KTNRT+cVhgnShOaa2cS4A9sf6R8n6CjaGQ/h2/Hip3?= =?us-ascii?Q?B+LTr+ypo2EFxqAG0zfSL4DwhXr4+aPk6q2DUwhU+7G2GpHqsdbzrlexSDOj?= =?us-ascii?Q?9VHYyrDmGE150UjufGeEOZCvrQta5bDKbTvymRLNPUUoGG5dRyMLaZK6NOML?= =?us-ascii?Q?JCJmvbiQXTFrPIxryJLZalPCNczO0RoBRR0j+nrJrgx2I3eqK6Vo8Me2FLe7?= =?us-ascii?Q?hBKGvbc+lqaAixWlSoG4KGLynuyOUxMix0d2wlp5g6QYIO6u6vNGRrpOSN07?= =?us-ascii?Q?CGwZ5Z18NM0cwDlE6PIwiRxmBGOxDTAUOVAATLSpsrh9DtGrYuUuESFEzvgd?= =?us-ascii?Q?ojW90KK3Qwttx+NFkdKy/jJDeSFwtCQEpaAZAoWUkngcX6qDxjhrc6XANr3n?= =?us-ascii?Q?C40ivsGm+z7VsVCeQxO594y6I+7Q2y1FAoQX+6e+0P57R6BNua4xQoI418Z0?= =?us-ascii?Q?GbKsF7gcAtJkwz5xcXXUphJ7ZYbXVqkqRBz1tCnY/KTy7iUnY3by668Ildmt?= =?us-ascii?Q?pF0pPi61tHv/YVatiaAcYhw6ZXswCR9iQMBTLTI0oA=3D=3D?= Content-Type: multipart/mixed; boundary="_009_OSZP286MB217328A12BC439F5BB31897DCAE99OSZP286MB2173JPNP_" MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OSZP286MB2173.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: f17f802d-9cf5-4399-f37d-08dae50fa6cf X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Dec 2022 18:01:01.1951 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSZP286MB2256 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] [PATCH v2] avcodec: add D3D12VA hardware accelerated H264, HEVC, VP9, and AV1 decoding X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: --_009_OSZP286MB217328A12BC439F5BB31897DCAE99OSZP286MB2173JPNP_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable [PATCH v2] avcodec: add D3D12VA hardware accelerated H264, HEVC, VP9, and A= V1 decoding Patches attached. --_009_OSZP286MB217328A12BC439F5BB31897DCAE99OSZP286MB2173JPNP_ Content-Type: application/octet-stream; name="0004-avcodec-add-D3D12VA-hardware-accelerated-VP9-decodin.patch" Content-Description: 0004-avcodec-add-D3D12VA-hardware-accelerated-VP9-decodin.patch Content-Disposition: attachment; filename="0004-avcodec-add-D3D12VA-hardware-accelerated-VP9-decodin.patch"; size=15188; creation-date="Fri, 23 Dec 2022 17:45:06 GMT"; modification-date="Fri, 23 Dec 2022 18:00:31 GMT" Content-Transfer-Encoding: base64 RnJvbSAwMzAzZTI2YmZmOWRiNTlmZDExYjI1ZDhhZTVkYmYyYzQ1NGFmZjU4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBXdSBKaWFuaHVhIDx0b3FzeHdAb3V0bG9vay5jb20+CkRhdGU6 IFNhdCwgMTcgRGVjIDIwMjIgMDI6MjQ6NDUgKzA4MDAKU3ViamVjdDogW1BBVENIIDQvNl0gYXZj b2RlYzogYWRkIEQzRDEyVkEgaGFyZHdhcmUgYWNjZWxlcmF0ZWQgVlA5IGRlY29kaW5nCgpUaGUg Y29tbWFuZCBiZWxvdyBpcyBob3cgdG8gZW5hYmxlIGQzZDEydmE6CmZmbXBlZyAtaHdhY2NlbCBk M2QxMnZhIC1pIGlucHV0Lm1wNCBvdXRwdXQubXA0CgpTaWduZWQtb2ZmLWJ5OiBXdSBKaWFuaHVh IDx0b3FzeHdAb3V0bG9vay5jb20+Ci0tLQogY29uZmlndXJlICAgICAgICAgICAgICAgICB8ICAg MiArCiBsaWJhdmNvZGVjL01ha2VmaWxlICAgICAgIHwgICAxICsKIGxpYmF2Y29kZWMvZDNkMTJk ZWNfdnA5LmMgfCAyOTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGxp YmF2Y29kZWMvaHdhY2NlbHMuaCAgICAgfCAgIDEgKwogbGliYXZjb2RlYy92cDkuYyAgICAgICAg ICB8ICAgNyArCiA1IGZpbGVzIGNoYW5nZWQsIDMwNCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9k ZSAxMDA2NDQgbGliYXZjb2RlYy9kM2QxMmRlY192cDkuYwoKZGlmZiAtLWdpdCBhL2NvbmZpZ3Vy ZSBiL2NvbmZpZ3VyZQppbmRleCA0MDE0ZjE1Yzk2Li41NjlmY2MwYWI0IDEwMDc1NQotLS0gYS9j b25maWd1cmUKKysrIGIvY29uZmlndXJlCkBAIC0zMTA4LDYgKzMxMDgsOCBAQCB2cDlfZDNkMTF2 YV9od2FjY2VsX2RlcHM9ImQzZDExdmEgRFhWQV9QaWNQYXJhbXNfVlA5IgogdnA5X2QzZDExdmFf aHdhY2NlbF9zZWxlY3Q9InZwOV9kZWNvZGVyIgogdnA5X2QzZDExdmEyX2h3YWNjZWxfZGVwcz0i ZDNkMTF2YSBEWFZBX1BpY1BhcmFtc19WUDkiCiB2cDlfZDNkMTF2YTJfaHdhY2NlbF9zZWxlY3Q9 InZwOV9kZWNvZGVyIgordnA5X2QzZDEyZGVjX2h3YWNjZWxfZGVwcz0iZDNkMTJ2YSBEWFZBX1Bp Y1BhcmFtc19WUDkiCit2cDlfZDNkMTJkZWNfaHdhY2NlbF9zZWxlY3Q9InZwOV9kZWNvZGVyIgog dnA5X2R4dmEyX2h3YWNjZWxfZGVwcz0iZHh2YTIgRFhWQV9QaWNQYXJhbXNfVlA5IgogdnA5X2R4 dmEyX2h3YWNjZWxfc2VsZWN0PSJ2cDlfZGVjb2RlciIKIHZwOV9udmRlY19od2FjY2VsX2RlcHM9 Im52ZGVjIgpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9NYWtlZmlsZSBiL2xpYmF2Y29kZWMvTWFr ZWZpbGUKaW5kZXggZTU1YTlhNWU2OC4uMTg4YjYxYTlhZCAxMDA2NDQKLS0tIGEvbGliYXZjb2Rl Yy9NYWtlZmlsZQorKysgYi9saWJhdmNvZGVjL01ha2VmaWxlCkBAIC0xMDE2LDYgKzEwMTYsNyBA QCBPQkpTLSQoQ09ORklHX1ZQOF9OVkRFQ19IV0FDQ0VMKSAgICAgICAgICArPSBudmRlY192cDgu bwogT0JKUy0kKENPTkZJR19WUDhfVkFBUElfSFdBQ0NFTCkgICAgICAgICAgKz0gdmFhcGlfdnA4 Lm8KIE9CSlMtJChDT05GSUdfVlA5X0QzRDExVkFfSFdBQ0NFTCkgICAgICAgICs9IGR4dmEyX3Zw OS5vCiBPQkpTLSQoQ09ORklHX1ZQOV9EWFZBMl9IV0FDQ0VMKSAgICAgICAgICArPSBkeHZhMl92 cDkubworT0JKUy0kKENPTkZJR19WUDlfRDNEMTJERUNfSFdBQ0NFTCkgICAgICAgKz0gZDNkMTJk ZWNfdnA5Lm8KIE9CSlMtJChDT05GSUdfVlA5X05WREVDX0hXQUNDRUwpICAgICAgICAgICs9IG52 ZGVjX3ZwOS5vCiBPQkpTLSQoQ09ORklHX1ZQOV9WQUFQSV9IV0FDQ0VMKSAgICAgICAgICArPSB2 YWFwaV92cDkubwogT0JKUy0kKENPTkZJR19WUDlfVkRQQVVfSFdBQ0NFTCkgICAgICAgICAgKz0g dmRwYXVfdnA5Lm8KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvZDNkMTJkZWNfdnA5LmMgYi9saWJh dmNvZGVjL2QzZDEyZGVjX3ZwOS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAuLjkxYjFjMDc3ODIKLS0tIC9kZXYvbnVsbAorKysgYi9saWJhdmNvZGVjL2QzZDEyZGVjX3Zw OS5jCkBAIC0wLDAgKzEsMjkzIEBACisvKgorICogRGlyZWN0M0QgMTIgVlA5IEhXIGFjY2VsZXJh dGlvbgorICoKKyAqIGNvcHlyaWdodCAoYykgMjAyMiBXdSBKaWFuaHVhIDx0b3FzeHdAb3V0bG9v ay5jb20+CisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorICoKKyAqIEZGbXBl ZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs IFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0 aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0 LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICovCisKKyNpbmNsdWRl ICJjb25maWdfY29tcG9uZW50cy5oIgorCisjaW5jbHVkZSAibGliYXZ1dGlsL2F2YXNzZXJ0Lmgi CisjaW5jbHVkZSAibGliYXZ1dGlsL3BpeGRlc2MuaCIKKworI2luY2x1ZGUgInZwOXNoYXJlZC5o IgorI2luY2x1ZGUgImQzZDEyZGVjLmgiCisjaW5jbHVkZSA8ZHh2YS5oPgorCit0eXBlZGVmIHN0 cnVjdCBWUDlEZWNvZGVQaWN0dXJlQ29udGV4dCB7CisgICAgRFhWQV9QaWNQYXJhbXNfVlA5ICAg IHBwOworICAgIERYVkFfU2xpY2VfVlB4X1Nob3J0ICBzbGljZTsKKyAgICBjb25zdCB1aW50OF90 ICAgICAgICAqYml0c3RyZWFtOworICAgIHVuc2lnbmVkICAgICAgICAgICAgICBiaXRzdHJlYW1f c2l6ZTsKK30gVlA5RGVjb2RlUGljdHVyZUNvbnRleHQ7CisKK3N0YXRpYyB2b2lkIGZpbGxfcGlj dHVyZV9lbnRyeShEWFZBX1BpY0VudHJ5X1ZQeCAqcGljLCB1bnNpZ25lZCBpbmRleCwgdW5zaWdu ZWQgZmxhZykKK3sKKyAgICBhdl9hc3NlcnQwKChpbmRleCAmIDB4N2YpID09IGluZGV4ICYmIChm bGFnICYgMHgwMSkgPT0gZmxhZyk7CisgICAgcGljLT5iUGljRW50cnkgPSBpbmRleCB8IChmbGFn IDw8IDcpOworfQorCitzdGF0aWMgaW50IGZpbGxfcGljdHVyZV9wYXJhbWV0ZXJzKEFWQ29kZWND b250ZXh0ICphdmN0eCwgY29uc3QgVlA5U2hhcmVkQ29udGV4dCAqaCwgRFhWQV9QaWNQYXJhbXNf VlA5ICpwcCkKK3sKKyAgICBpbnQgaTsKKyAgICBEM0QxMlZBRGVjb2RlQ29udGV4dCAgICAgKmN0 eCAgICAgPSBEM0QxMlZBX0RFQ09ERV9DT05URVhUKGF2Y3R4KTsKKyAgICBjb25zdCBBVlBpeEZt dERlc2NyaXB0b3IgKnBpeGRlc2MgPSBhdl9waXhfZm10X2Rlc2NfZ2V0KGF2Y3R4LT5zd19waXhf Zm10KTsKKworICAgIGlmICghcGl4ZGVzYykKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgbWVt c2V0KHBwLCAwLCBzaXplb2YoKnBwKSk7CisKKyAgICBmaWxsX3BpY3R1cmVfZW50cnkoJnBwLT5D dXJyUGljLCBmZl9kM2QxMmRlY19nZXRfc3VyZmFjZV9pbmRleChhdmN0eCwgaC0+ZnJhbWVzW0NV Ul9GUkFNRV0udGYuZiksIDApOworCisgICAgcHAtPnByb2ZpbGUgPSBoLT5oLnByb2ZpbGU7Cisg ICAgcHAtPndGb3JtYXRBbmRQaWN0dXJlSW5mb0ZsYWdzID0gKChoLT5oLmtleWZyYW1lID09IDAp ICAgPDwgIDApIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGgtPmgu aW52aXNpYmxlID09IDApICA8PCAgMSkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChoLT5oLmVycm9ycmVzICAgICAgICAgIDw8ICAyKSB8CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHBpeGRlc2MtPmxvZzJfY2hyb21hX3cgPDwgIDMpIHwgLyog c3Vic2FtcGxpbmdfeCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChw aXhkZXNjLT5sb2cyX2Nocm9tYV9oIDw8ICA0KSB8IC8qIHN1YnNhbXBsaW5nX3kgKi8KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCAgICAgICAgICAgICAgICAgICAgICA8 PCAgNSkgfCAvKiBleHRyYV9wbGFuZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChoLT5oLnJlZnJlc2hjdHggICAgICAgIDw8ICA2KSB8CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGgtPmgucGFyYWxsZWxtb2RlICAgICAgPDwgIDcpIHwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaC0+aC5pbnRyYW9ubHkgICAgICAg ICA8PCAgOCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoLT5oLmZy YW1lY3R4aWQgICAgICAgIDw8ICA5KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGgtPmgucmVzZXRjdHggICAgICAgICAgPDwgMTEpIHwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoKGgtPmgua2V5ZnJhbWUgPyAwIDogaC0+aC5oaWdocHJlY2lz aW9ubXZzKSA8PCAxMykgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgw ICAgICAgICAgICAgICAgICAgICAgIDw8IDE0KTsgIC8qIFJlc2VydmVkRm9ybWF0SW5mbzJCaXRz ICovCisKKyAgICBwcC0+d2lkdGggID0gYXZjdHgtPndpZHRoOworICAgIHBwLT5oZWlnaHQgPSBh dmN0eC0+aGVpZ2h0OworICAgIHBwLT5CaXREZXB0aE1pbnVzOEx1bWEgICA9IHBpeGRlc2MtPmNv bXBbMF0uZGVwdGggLSA4OworICAgIHBwLT5CaXREZXB0aE1pbnVzOENocm9tYSA9IHBpeGRlc2Mt PmNvbXBbMV0uZGVwdGggLSA4OworICAgIC8qIHN3YXAgMC8xIHRvIG1hdGNoIHRoZSByZWZlcmVu Y2UgKi8KKyAgICBwcC0+aW50ZXJwX2ZpbHRlciA9IGgtPmguZmlsdGVybW9kZSBeIChoLT5oLmZp bHRlcm1vZGUgPD0gMSk7CisgICAgcHAtPlJlc2VydmVkOEJpdHMgPSAwOworCisgICAgZm9yIChp ID0gMDsgaSA8IDg7IGkrKykgeworICAgICAgICBpZiAoaC0+cmVmc1tpXS5mLT5idWZbMF0pIHsK KyAgICAgICAgICAgIGZpbGxfcGljdHVyZV9lbnRyeSgmcHAtPnJlZl9mcmFtZV9tYXBbaV0sIGZm X2QzZDEyZGVjX2dldF9zdXJmYWNlX2luZGV4KGF2Y3R4LCBoLT5yZWZzW2ldLmYpLCAwKTsKKyAg ICAgICAgICAgIHBwLT5yZWZfZnJhbWVfY29kZWRfd2lkdGhbaV0gID0gaC0+cmVmc1tpXS5mLT53 aWR0aDsKKyAgICAgICAgICAgIHBwLT5yZWZfZnJhbWVfY29kZWRfaGVpZ2h0W2ldID0gaC0+cmVm c1tpXS5mLT5oZWlnaHQ7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcHAtPnJlZl9mcmFt ZV9tYXBbaV0uYlBpY0VudHJ5ID0gMHhGRjsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwg MzsgaSsrKSB7CisgICAgICAgIHVpbnQ4X3QgcmVmaWR4ID0gaC0+aC5yZWZpZHhbaV07CisgICAg ICAgIGlmIChoLT5yZWZzW3JlZmlkeF0uZi0+YnVmWzBdKQorICAgICAgICAgICAgZmlsbF9waWN0 dXJlX2VudHJ5KCZwcC0+ZnJhbWVfcmVmc1tpXSwgZmZfZDNkMTJkZWNfZ2V0X3N1cmZhY2VfaW5k ZXgoYXZjdHgsIGgtPnJlZnNbcmVmaWR4XS5mKSwgMCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg ICAgIHBwLT5mcmFtZV9yZWZzW2ldLmJQaWNFbnRyeSA9IDB4RkY7CisKKyAgICAgICAgcHAtPnJl Zl9mcmFtZV9zaWduX2JpYXNbaSArIDFdID0gaC0+aC5zaWduYmlhc1tpXTsKKyAgICB9CisKKyAg ICBwcC0+ZmlsdGVyX2xldmVsICAgID0gaC0+aC5maWx0ZXIubGV2ZWw7CisgICAgcHAtPnNoYXJw bmVzc19sZXZlbCA9IGgtPmguZmlsdGVyLnNoYXJwbmVzczsKKworICAgIHBwLT53Q29udHJvbElu Zm9GbGFncyA9IChoLT5oLmxmX2RlbHRhLmVuYWJsZWQgICA8PCAwKSB8CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGgtPmgubGZfZGVsdGEudXBkYXRlZCAgIDw8IDEpIHwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoaC0+aC51c2VfbGFzdF9mcmFtZV9tdnMgPDwgMikgfAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICgwICAgICAgICAgICAgICAgICAgICAgICA8PCAzKTsg IC8qIFJlc2VydmVkQ29udHJvbEluZm81Qml0cyAqLworCisgICAgZm9yIChpID0gMDsgaSA8IDQ7 IGkrKykKKyAgICAgICAgcHAtPnJlZl9kZWx0YXNbaV0gID0gaC0+aC5sZl9kZWx0YS5yZWZbaV07 CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKQorICAgICAgICBwcC0+bW9kZV9kZWx0YXNb aV0gID0gaC0+aC5sZl9kZWx0YS5tb2RlW2ldOworCisgICAgcHAtPmJhc2VfcWluZGV4ICAgPSBo LT5oLnlhY19xaTsKKyAgICBwcC0+eV9kY19kZWx0YV9xICA9IGgtPmgueWRjX3FkZWx0YTsKKyAg ICBwcC0+dXZfZGNfZGVsdGFfcSA9IGgtPmgudXZkY19xZGVsdGE7CisgICAgcHAtPnV2X2FjX2Rl bHRhX3EgPSBoLT5oLnV2YWNfcWRlbHRhOworCisgICAgLyogc2VnbWVudGF0aW9uIGRhdGEgKi8K KyAgICBwcC0+c3RWUDlTZWdtZW50cy53U2VnbWVudEluZm9GbGFncyA9IChoLT5oLnNlZ21lbnRh dGlvbi5lbmFibGVkICAgICAgIDw8IDApIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChoLT5oLnNlZ21lbnRhdGlvbi51cGRhdGVfbWFwICAgIDw8IDEpIHwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoLT5oLnNlZ21lbnRhdGlv bi50ZW1wb3JhbCAgICAgIDw8IDIpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChoLT5oLnNlZ21lbnRhdGlvbi5hYnNvbHV0ZV92YWxzIDw8IDMpIHwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDw8IDQpOyAgLyogUmVzZXJ2ZWRTZWdtZW50RmxhZ3M0Qml0cyAqLworCisg ICAgZm9yIChpID0gMDsgaSA8IDc7IGkrKykKKyAgICAgICAgcHAtPnN0VlA5U2VnbWVudHMudHJl ZV9wcm9ic1tpXSA9IGgtPmguc2VnbWVudGF0aW9uLnByb2JbaV07CisKKyAgICBpZiAoaC0+aC5z ZWdtZW50YXRpb24udGVtcG9yYWwpCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCAzOyBpKyspCisg ICAgICAgICAgICBwcC0+c3RWUDlTZWdtZW50cy5wcmVkX3Byb2JzW2ldID0gaC0+aC5zZWdtZW50 YXRpb24ucHJlZF9wcm9iW2ldOworICAgIGVsc2UKKyAgICAgICAgbWVtc2V0KHBwLT5zdFZQOVNl Z21lbnRzLnByZWRfcHJvYnMsIDI1NSwgc2l6ZW9mKHBwLT5zdFZQOVNlZ21lbnRzLnByZWRfcHJv YnMpKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKKyAgICAgICAgcHAtPnN0VlA5 U2VnbWVudHMuZmVhdHVyZV9tYXNrW2ldID0gKGgtPmguc2VnbWVudGF0aW9uLmZlYXRbaV0ucV9l bmFibGVkICAgIDw8IDApIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGgtPmguc2VnbWVudGF0aW9uLmZlYXRbaV0ubGZfZW5hYmxlZCAgIDw8IDEpIHwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGgtPmguc2VnbWVudGF0 aW9uLmZlYXRbaV0ucmVmX2VuYWJsZWQgIDw8IDIpIHwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGgtPmguc2VnbWVudGF0aW9uLmZlYXRbaV0uc2tpcF9lbmFi bGVkIDw8IDMpOworCisgICAgICAgIHBwLT5zdFZQOVNlZ21lbnRzLmZlYXR1cmVfZGF0YVtpXVsw XSA9IGgtPmguc2VnbWVudGF0aW9uLmZlYXRbaV0ucV92YWw7CisgICAgICAgIHBwLT5zdFZQOVNl Z21lbnRzLmZlYXR1cmVfZGF0YVtpXVsxXSA9IGgtPmguc2VnbWVudGF0aW9uLmZlYXRbaV0ubGZf dmFsOworICAgICAgICBwcC0+c3RWUDlTZWdtZW50cy5mZWF0dXJlX2RhdGFbaV1bMl0gPSBoLT5o LnNlZ21lbnRhdGlvbi5mZWF0W2ldLnJlZl92YWw7CisgICAgICAgIHBwLT5zdFZQOVNlZ21lbnRz LmZlYXR1cmVfZGF0YVtpXVszXSA9IDA7IC8qIG5vIGRhdGEgZm9yIHNraXAgKi8KKyAgICB9CisK KyAgICBwcC0+bG9nMl90aWxlX2NvbHMgPSBoLT5oLnRpbGluZy5sb2cyX3RpbGVfY29sczsKKyAg ICBwcC0+bG9nMl90aWxlX3Jvd3MgPSBoLT5oLnRpbGluZy5sb2cyX3RpbGVfcm93czsKKworICAg IHBwLT51bmNvbXByZXNzZWRfaGVhZGVyX3NpemVfYnl0ZV9hbGlnbmVkID0gaC0+aC51bmNvbXBy ZXNzZWRfaGVhZGVyX3NpemU7CisgICAgcHAtPmZpcnN0X3BhcnRpdGlvbl9zaXplID0gaC0+aC5j b21wcmVzc2VkX2hlYWRlcl9zaXplOworCisgICAgcHAtPlN0YXR1c1JlcG9ydEZlZWRiYWNrTnVt YmVyID0gY3R4LT5yZXBvcnRfaWQrKzsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9p ZCBmaWxsX3NsaWNlX3Nob3J0KERYVkFfU2xpY2VfVlB4X1Nob3J0ICpzbGljZSwgdW5zaWduZWQg cG9zaXRpb24sIHVuc2lnbmVkIHNpemUpCit7CisgICAgbWVtc2V0KHNsaWNlLCAwLCBzaXplb2Yo KnNsaWNlKSk7CisgICAgc2xpY2UtPkJTTkFMdW5pdERhdGFMb2NhdGlvbiA9IHBvc2l0aW9uOwor ICAgIHNsaWNlLT5TbGljZUJ5dGVzSW5CdWZmZXIgICAgPSBzaXplOworICAgIHNsaWNlLT53QmFk U2xpY2VDaG9wcGluZyAgICAgPSAwOworfQorCitzdGF0aWMgaW50IGQzZDEyZGVjX3ZwOV9zdGFy dF9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIGF2X3VudXNlZCBjb25zdCB1aW50OF90ICpi dWZmZXIsIGF2X3VudXNlZCB1aW50MzJfdCBzaXplKQoreworICAgIGNvbnN0IFZQOVNoYXJlZENv bnRleHQgICpoICAgICAgID0gYXZjdHgtPnByaXZfZGF0YTsKKyAgICBWUDlEZWNvZGVQaWN0dXJl Q29udGV4dCAqY3R4X3BpYyA9IGgtPmZyYW1lc1tDVVJfRlJBTUVdLmh3YWNjZWxfcGljdHVyZV9w cml2YXRlOworCisgICAgaWYgKCFEM0QxMlZBX0RFQ09ERV9DT05URVhUKGF2Y3R4KSkKKyAgICAg ICAgcmV0dXJuIC0xOworCisgICAgYXZfYXNzZXJ0MChjdHhfcGljKTsKKworICAgIGlmIChmaWxs X3BpY3R1cmVfcGFyYW1ldGVycyhhdmN0eCwgaCwgJmN0eF9waWMtPnBwKSA8IDApCisgICAgICAg IHJldHVybiAtMTsKKworICAgIGN0eF9waWMtPmJpdHN0cmVhbV9zaXplID0gMDsKKyAgICBjdHhf cGljLT5iaXRzdHJlYW0gPSBOVUxMOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQg ZDNkMTJkZWNfdnA5X2RlY29kZV9zbGljZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIGNvbnN0IHVp bnQ4X3QgKmJ1ZmZlciwgdWludDMyX3Qgc2l6ZSkKK3sKKyAgICBjb25zdCBWUDlTaGFyZWRDb250 ZXh0ICAqaCAgICAgICA9IGF2Y3R4LT5wcml2X2RhdGE7CisgICAgVlA5RGVjb2RlUGljdHVyZUNv bnRleHQgKmN0eF9waWMgPSBoLT5mcmFtZXNbQ1VSX0ZSQU1FXS5od2FjY2VsX3BpY3R1cmVfcHJp dmF0ZTsKKyAgICB1bnNpZ25lZCBwb3NpdGlvbjsKKworICAgIGlmICghY3R4X3BpYy0+Yml0c3Ry ZWFtKQorICAgICAgICBjdHhfcGljLT5iaXRzdHJlYW0gPSBidWZmZXI7CisgICAgY3R4X3BpYy0+ Yml0c3RyZWFtX3NpemUgKz0gc2l6ZTsKKworICAgIHBvc2l0aW9uID0gYnVmZmVyIC0gY3R4X3Bp Yy0+Yml0c3RyZWFtOworICAgIGZpbGxfc2xpY2Vfc2hvcnQoJmN0eF9waWMtPnNsaWNlLCBwb3Np dGlvbiwgc2l6ZSk7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCB1cGRhdGVfaW5w dXRfYXJndW1lbnRzKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgRDNEMTJfVklERU9fREVDT0RFX0lO UFVUX1NUUkVBTV9BUkdVTUVOVFMgKmlucHV0X2FyZ3MsIElEM0QxMlJlc291cmNlICpidWZmZXIp Cit7CisgICAgRDNEMTJWQURlY29kZUNvbnRleHQgICAqY3R4ICAgICAgICAgID0gRDNEMTJWQV9E RUNPREVfQ09OVEVYVChhdmN0eCk7CisgICAgQVZIV0ZyYW1lc0NvbnRleHQgICAgICAqZnJhbWVz X2N0eCAgID0gRDNEMTJWQV9GUkFNRVNfQ09OVEVYVChhdmN0eCk7CisgICAgQVZEM0QxMlZBRnJh bWVzQ29udGV4dCAqZnJhbWVzX2h3Y3R4ID0gZnJhbWVzX2N0eC0+aHdjdHg7CisKKyAgICBjb25z dCBWUDlTaGFyZWRDb250ZXh0ICAqaCAgICAgICA9IGF2Y3R4LT5wcml2X2RhdGE7CisgICAgVlA5 RGVjb2RlUGljdHVyZUNvbnRleHQgKmN0eF9waWMgPSBoLT5mcmFtZXNbQ1VSX0ZSQU1FXS5od2Fj Y2VsX3BpY3R1cmVfcHJpdmF0ZTsKKworICAgIGludCBpbmRleDsKKyAgICB1aW50OF90ICptYXBw ZWRfZGF0YTsKKyAgICBEM0QxMl9WSURFT19ERUNPREVfRlJBTUVfQVJHVU1FTlQgKmFyZ3M7CisK KyAgICBpZiAoRkFJTEVEKElEM0QxMlJlc291cmNlX01hcChidWZmZXIsIDAsIE5VTEwsICZtYXBw ZWRfZGF0YSkpKSB7CisgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVk IHRvIG1hcCBEM0QxMiBCdWZmZXIgcmVzb3VyY2UhXG4iKTsKKyAgICAgICAgcmV0dXJuIEFWRVJS T1IoRUlOVkFMKTsKKyAgICB9CisKKyAgICBhcmdzID0gJmlucHV0X2FyZ3MtPkZyYW1lQXJndW1l bnRzW2lucHV0X2FyZ3MtPk51bUZyYW1lQXJndW1lbnRzKytdOworICAgIGFyZ3MtPlR5cGUgID0g RDNEMTJfVklERU9fREVDT0RFX0FSR1VNRU5UX1RZUEVfU0xJQ0VfQ09OVFJPTDsKKyAgICBhcmdz LT5TaXplICA9IHNpemVvZihjdHhfcGljLT5zbGljZSk7CisgICAgYXJncy0+cERhdGEgPSAmY3R4 X3BpYy0+c2xpY2U7CisKKyAgICBtZW1jcHkobWFwcGVkX2RhdGEsIGN0eF9waWMtPmJpdHN0cmVh bSwgY3R4X3BpYy0+c2xpY2UuU2xpY2VCeXRlc0luQnVmZmVyKTsKKworICAgIElEM0QxMlJlc291 cmNlX1VubWFwKGJ1ZmZlciwgMCwgTlVMTCk7CisKKyAgICBpbnB1dF9hcmdzLT5Db21wcmVzc2Vk Qml0c3RyZWFtID0gKEQzRDEyX1ZJREVPX0RFQ09ERV9DT01QUkVTU0VEX0JJVFNUUkVBTSl7Cisg ICAgICAgIC5wQnVmZmVyID0gYnVmZmVyLAorICAgICAgICAuT2Zmc2V0ICA9IDAsCisgICAgICAg IC5TaXplICAgID0gY3R4X3BpYy0+c2xpY2UuU2xpY2VCeXRlc0luQnVmZmVyLAorICAgIH07CisK KyAgICBpbmRleCA9IGN0eF9waWMtPnBwLkN1cnJQaWMuSW5kZXg3Qml0czsKKyAgICBjdHgtPnJl Zl9yZXNvdXJjZXNbaW5kZXhdID0gZnJhbWVzX2h3Y3R4LT50ZXh0dXJlX2luZm9zW2luZGV4XS50 ZXh0dXJlOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBGRl9BUlJBWV9FTEVNUyhjdHhfcGlj LT5wcC5mcmFtZV9yZWZzKTsgaSsrKSB7CisgICAgICAgIGluZGV4ID0gY3R4X3BpYy0+cHAuZnJh bWVfcmVmc1tpXS5JbmRleDdCaXRzOworICAgICAgICBpZiAoaW5kZXggIT0gMHg3ZikKKyAgICAg ICAgICAgIGN0eC0+cmVmX3Jlc291cmNlc1tpbmRleF0gPSBmcmFtZXNfaHdjdHgtPnRleHR1cmVf aW5mb3NbaW5kZXhdLnRleHR1cmU7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRp YyBpbnQgZDNkMTJkZWNfdnA5X2VuZF9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgpCit7Cisg ICAgVlA5U2hhcmVkQ29udGV4dCAgICAgICAgKmggICAgICAgPSBhdmN0eC0+cHJpdl9kYXRhOwor ICAgIFZQOURlY29kZVBpY3R1cmVDb250ZXh0ICpjdHhfcGljID0gaC0+ZnJhbWVzW0NVUl9GUkFN RV0uaHdhY2NlbF9waWN0dXJlX3ByaXZhdGU7CisKKyAgICBpZiAoY3R4X3BpYy0+Yml0c3RyZWFt X3NpemUgPD0gMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIGZmX2QzZDEyZGVj X2NvbW1vbl9lbmRfZnJhbWUoYXZjdHgsIGgtPmZyYW1lc1tDVVJfRlJBTUVdLnRmLmYsCisgICAg ICAgICAgICAgICAmY3R4X3BpYy0+cHAsIHNpemVvZihjdHhfcGljLT5wcCksIE5VTEwsIDAsIHVw ZGF0ZV9pbnB1dF9hcmd1bWVudHMpOworfQorCitzdGF0aWMgaW50IGQzZDEyZGVjX3ZwOV9kZWNv ZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCit7CisgICAgRDNEMTJWQURlY29kZUNvbnRl eHQgKmN0eCA9IEQzRDEyVkFfREVDT0RFX0NPTlRFWFQoYXZjdHgpOworCisgICAgc3dpdGNoIChh dmN0eC0+cHJvZmlsZSkgeworICAgIGNhc2UgRkZfUFJPRklMRV9WUDlfMjoKKyAgICBjYXNlIEZG X1BST0ZJTEVfVlA5XzM6CisgICAgICAgIGN0eC0+Y2ZnLkRlY29kZVByb2ZpbGUgPSBEM0QxMl9W SURFT19ERUNPREVfUFJPRklMRV9WUDlfMTBCSVRfUFJPRklMRTI7CisgICAgICAgIGJyZWFrOwor CisgICAgY2FzZSBGRl9QUk9GSUxFX1ZQOV8wOgorICAgIGNhc2UgRkZfUFJPRklMRV9WUDlfMToK KyAgICBkZWZhdWx0OgorICAgICAgICBjdHgtPmNmZy5EZWNvZGVQcm9maWxlID0gRDNEMTJfVklE RU9fREVDT0RFX1BST0ZJTEVfVlA5OworICAgICAgICBicmVhazsKKyAgICB9OworCisgICAgcmV0 dXJuIGZmX2QzZDEyZGVjX2RlY29kZV9pbml0KGF2Y3R4KTsKK30KKworI2lmIENPTkZJR19WUDlf RDNEMTJERUNfSFdBQ0NFTAorY29uc3QgQVZIV0FjY2VsIGZmX3ZwOV9kM2QxMmRlY19od2FjY2Vs ID0geworICAgIC5uYW1lICAgICAgICAgICAgICAgICA9ICJ2cDlfZDNkMTJkZWMiLAorICAgIC50 eXBlICAgICAgICAgICAgICAgICA9IEFWTUVESUFfVFlQRV9WSURFTywKKyAgICAuaWQgICAgICAg ICAgICAgICAgICAgPSBBVl9DT0RFQ19JRF9WUDksCisgICAgLnBpeF9mbXQgICAgICAgICAgICAg ID0gQVZfUElYX0ZNVF9EM0QxMiwKKyAgICAuaW5pdCAgICAgICAgICAgICAgICAgPSBkM2QxMmRl Y192cDlfZGVjb2RlX2luaXQsCisgICAgLnVuaW5pdCAgICAgICAgICAgICAgID0gZmZfZDNkMTJk ZWNfZGVjb2RlX3VuaW5pdCwKKyAgICAuc3RhcnRfZnJhbWUgICAgICAgICAgPSBkM2QxMmRlY192 cDlfc3RhcnRfZnJhbWUsCisgICAgLmRlY29kZV9zbGljZSAgICAgICAgID0gZDNkMTJkZWNfdnA5 X2RlY29kZV9zbGljZSwKKyAgICAuZW5kX2ZyYW1lICAgICAgICAgICAgPSBkM2QxMmRlY192cDlf ZW5kX2ZyYW1lLAorICAgIC5mcmFtZV9wYXJhbXMgICAgICAgICA9IGZmX2QzZDEyZGVjX2NvbW1v bl9mcmFtZV9wYXJhbXMsCisgICAgLmZyYW1lX3ByaXZfZGF0YV9zaXplID0gc2l6ZW9mKFZQOURl Y29kZVBpY3R1cmVDb250ZXh0KSwKKyAgICAucHJpdl9kYXRhX3NpemUgICAgICAgPSBzaXplb2Yo RDNEMTJWQURlY29kZUNvbnRleHQpLAorfTsKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbGliYXZjb2Rl Yy9od2FjY2Vscy5oIGIvbGliYXZjb2RlYy9od2FjY2Vscy5oCmluZGV4IGJjMjcwMjNjOGYuLmEz NmQxMzg1MzggMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvaHdhY2NlbHMuaAorKysgYi9saWJhdmNv ZGVjL2h3YWNjZWxzLmgKQEAgLTcyLDYgKzcyLDcgQEAgZXh0ZXJuIGNvbnN0IEFWSFdBY2NlbCBm Zl92cDhfbnZkZWNfaHdhY2NlbDsKIGV4dGVybiBjb25zdCBBVkhXQWNjZWwgZmZfdnA4X3ZhYXBp X2h3YWNjZWw7CiBleHRlcm4gY29uc3QgQVZIV0FjY2VsIGZmX3ZwOV9kM2QxMXZhX2h3YWNjZWw7 CiBleHRlcm4gY29uc3QgQVZIV0FjY2VsIGZmX3ZwOV9kM2QxMXZhMl9od2FjY2VsOworZXh0ZXJu IGNvbnN0IEFWSFdBY2NlbCBmZl92cDlfZDNkMTJkZWNfaHdhY2NlbDsKIGV4dGVybiBjb25zdCBB VkhXQWNjZWwgZmZfdnA5X2R4dmEyX2h3YWNjZWw7CiBleHRlcm4gY29uc3QgQVZIV0FjY2VsIGZm X3ZwOV9udmRlY19od2FjY2VsOwogZXh0ZXJuIGNvbnN0IEFWSFdBY2NlbCBmZl92cDlfdmFhcGlf aHdhY2NlbDsKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdnA5LmMgYi9saWJhdmNvZGVjL3ZwOS5j CmluZGV4IDdjMGEyNDY0NDYuLmE5OTc5MzEwNjMgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvdnA5 LmMKKysrIGIvbGliYXZjb2RlYy92cDkuYwpAQCAtMTg0LDYgKzE4NCw3IEBAIHN0YXRpYyBpbnQg dXBkYXRlX3NpemUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBpbnQgdywgaW50IGgpCiB7CiAjZGVm aW5lIEhXQUNDRUxfTUFYIChDT05GSUdfVlA5X0RYVkEyX0hXQUNDRUwgKyBcCiAgICAgICAgICAg ICAgICAgICAgICBDT05GSUdfVlA5X0QzRDExVkFfSFdBQ0NFTCAqIDIgKyBcCisgICAgICAgICAg ICAgICAgICAgICBDT05GSUdfVlA5X0QzRDEyREVDX0hXQUNDRUwgKyBcCiAgICAgICAgICAgICAg ICAgICAgICBDT05GSUdfVlA5X05WREVDX0hXQUNDRUwgKyBcCiAgICAgICAgICAgICAgICAgICAg ICBDT05GSUdfVlA5X1ZBQVBJX0hXQUNDRUwgKyBcCiAgICAgICAgICAgICAgICAgICAgICBDT05G SUdfVlA5X1ZEUEFVX0hXQUNDRUwgKyBcCkBAIC0yMTAsNiArMjExLDkgQEAgc3RhdGljIGludCB1 cGRhdGVfc2l6ZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIGludCB3LCBpbnQgaCkKICAgICAgICAg ICAgICpmbXRwKysgPSBBVl9QSVhfRk1UX0QzRDExVkFfVkxEOwogICAgICAgICAgICAgKmZtdHAr KyA9IEFWX1BJWF9GTVRfRDNEMTE7CiAjZW5kaWYKKyNpZiBDT05GSUdfVlA5X0QzRDEyREVDX0hX QUNDRUwKKyAgICAgICAgICAgICpmbXRwKysgPSBBVl9QSVhfRk1UX0QzRDEyOworI2VuZGlmCiAj aWYgQ09ORklHX1ZQOV9OVkRFQ19IV0FDQ0VMCiAgICAgICAgICAgICAqZm10cCsrID0gQVZfUElY X0ZNVF9DVURBOwogI2VuZGlmCkBAIC0xODk3LDYgKzE5MDEsOSBAQCBjb25zdCBGRkNvZGVjIGZm X3ZwOV9kZWNvZGVyID0gewogI2lmIENPTkZJR19WUDlfRDNEMTFWQTJfSFdBQ0NFTAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEhXQUNDRUxfRDNEMTFWQTIodnA5KSwKICNlbmRpZgor I2lmIENPTkZJR19WUDlfRDNEMTJERUNfSFdBQ0NFTAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEhXQUNDRUxfRDNEMTJERUModnA5KSwKKyNlbmRpZgogI2lmIENPTkZJR19WUDlfTlZE RUNfSFdBQ0NFTAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhXQUNDRUxfTlZERUMo dnA5KSwKICNlbmRpZgotLSAKMi4zMi4wCgo= --_009_OSZP286MB217328A12BC439F5BB31897DCAE99OSZP286MB2173JPNP_ Content-Type: application/octet-stream; name="0005-avcodec-add-D3D12VA-hardware-accelerated-AV1-decodin.patch" Content-Description: 0005-avcodec-add-D3D12VA-hardware-accelerated-AV1-decodin.patch Content-Disposition: attachment; filename="0005-avcodec-add-D3D12VA-hardware-accelerated-AV1-decodin.patch"; size=24714; creation-date="Fri, 23 Dec 2022 17:45:07 GMT"; modification-date="Fri, 23 Dec 2022 18:00:31 GMT" Content-Transfer-Encoding: base64 RnJvbSAxMWU4NzkzODlkODVhYWIzY2Y1MWYxMGM0ZmU4ZWI0ZGZhZTVlZjUyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBXdSBKaWFuaHVhIDx0b3FzeHdAb3V0bG9vay5jb20+CkRhdGU6 IFNhdCwgMTcgRGVjIDIwMjIgMDI6MzA6MjkgKzA4MDAKU3ViamVjdDogW1BBVENIIDUvNl0gYXZj b2RlYzogYWRkIEQzRDEyVkEgaGFyZHdhcmUgYWNjZWxlcmF0ZWQgQVYxIGRlY29kaW5nCgpUaGUg Y29tbWFuZCBiZWxvdyBpcyBob3cgdG8gZW5hYmxlIGQzZDEydmE6CmZmbXBlZyAtaHdhY2NlbCBk M2QxMnZhIC1pIGlucHV0Lm1wNCBvdXRwdXQubXA0CgpTaWduZWQtb2ZmLWJ5OiBXdSBKaWFuaHVh IDx0b3FzeHdAb3V0bG9vay5jb20+Ci0tLQogY29uZmlndXJlICAgICAgICAgICAgICAgICB8ICAg MiArCiBsaWJhdmNvZGVjL01ha2VmaWxlICAgICAgIHwgICAxICsKIGxpYmF2Y29kZWMvYXYxZGVj LmMgICAgICAgfCAgMTAgKwogbGliYXZjb2RlYy9kM2QxMmRlY19hdjEuYyB8IDQ0MiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogbGliYXZjb2RlYy9od2FjY2Vscy5oICAg ICB8ICAgMSArCiA1IGZpbGVzIGNoYW5nZWQsIDQ1NiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9k ZSAxMDA2NDQgbGliYXZjb2RlYy9kM2QxMmRlY19hdjEuYwoKZGlmZiAtLWdpdCBhL2NvbmZpZ3Vy ZSBiL2NvbmZpZ3VyZQppbmRleCA1NjlmY2MwYWI0Li44YzVjNTMxNzYwIDEwMDc1NQotLS0gYS9j b25maWd1cmUKKysrIGIvY29uZmlndXJlCkBAIC0zMDEwLDYgKzMwMTAsOCBAQCBhdjFfZDNkMTF2 YV9od2FjY2VsX2RlcHM9ImQzZDExdmEgRFhWQV9QaWNQYXJhbXNfQVYxIgogYXYxX2QzZDExdmFf aHdhY2NlbF9zZWxlY3Q9ImF2MV9kZWNvZGVyIgogYXYxX2QzZDExdmEyX2h3YWNjZWxfZGVwcz0i ZDNkMTF2YSBEWFZBX1BpY1BhcmFtc19BVjEiCiBhdjFfZDNkMTF2YTJfaHdhY2NlbF9zZWxlY3Q9 ImF2MV9kZWNvZGVyIgorYXYxX2QzZDEyZGVjX2h3YWNjZWxfZGVwcz0iZDNkMTJ2YSBEWFZBX1Bp Y1BhcmFtc19BVjEiCithdjFfZDNkMTJkZWNfaHdhY2NlbF9zZWxlY3Q9ImF2MV9kZWNvZGVyIgog YXYxX2R4dmEyX2h3YWNjZWxfZGVwcz0iZHh2YTIgRFhWQV9QaWNQYXJhbXNfQVYxIgogYXYxX2R4 dmEyX2h3YWNjZWxfc2VsZWN0PSJhdjFfZGVjb2RlciIKIGF2MV9udmRlY19od2FjY2VsX2RlcHM9 Im52ZGVjIENVVklEQVYxUElDUEFSQU1TIgpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9NYWtlZmls ZSBiL2xpYmF2Y29kZWMvTWFrZWZpbGUKaW5kZXggMTg4YjYxYTlhZC4uMzdkOWNjOGNhOCAxMDA2 NDQKLS0tIGEvbGliYXZjb2RlYy9NYWtlZmlsZQorKysgYi9saWJhdmNvZGVjL01ha2VmaWxlCkBA IC05NzAsNiArOTcwLDcgQEAgT0JKUy0kKENPTkZJR19WRFBBVSkgICAgICAgICAgICAgICAgICAg ICAgKz0gdmRwYXUubwogCiBPQkpTLSQoQ09ORklHX0FWMV9EM0QxMVZBX0hXQUNDRUwpICAgICAg ICArPSBkeHZhMl9hdjEubwogT0JKUy0kKENPTkZJR19BVjFfRFhWQTJfSFdBQ0NFTCkgICAgICAg ICAgKz0gZHh2YTJfYXYxLm8KK09CSlMtJChDT05GSUdfQVYxX0QzRDEyREVDX0hXQUNDRUwpICAg ICAgICs9IGQzZDEyZGVjX2F2MS5vCiBPQkpTLSQoQ09ORklHX0FWMV9OVkRFQ19IV0FDQ0VMKSAg ICAgICAgICArPSBudmRlY19hdjEubwogT0JKUy0kKENPTkZJR19BVjFfVkFBUElfSFdBQ0NFTCkg ICAgICAgICAgKz0gdmFhcGlfYXYxLm8KIE9CSlMtJChDT05GSUdfQVYxX1ZEUEFVX0hXQUNDRUwp ICAgICAgICAgICs9IHZkcGF1X2F2MS5vCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2F2MWRlYy5j IGIvbGliYXZjb2RlYy9hdjFkZWMuYwppbmRleCBkODNjOTAyZjFmLi44OGFhMWFhZDYwIDEwMDY0 NAotLS0gYS9saWJhdmNvZGVjL2F2MWRlYy5jCisrKyBiL2xpYmF2Y29kZWMvYXYxZGVjLmMKQEAg LTQ0MCw2ICs0NDAsNyBAQCBzdGF0aWMgaW50IGdldF9waXhlbF9mb3JtYXQoQVZDb2RlY0NvbnRl eHQgKmF2Y3R4KQogICAgIGVudW0gQVZQaXhlbEZvcm1hdCBwaXhfZm10ID0gQVZfUElYX0ZNVF9O T05FOwogI2RlZmluZSBIV0FDQ0VMX01BWCAoQ09ORklHX0FWMV9EWFZBMl9IV0FDQ0VMICsgXAog ICAgICAgICAgICAgICAgICAgICAgQ09ORklHX0FWMV9EM0QxMVZBX0hXQUNDRUwgKiAyICsgXAor ICAgICAgICAgICAgICAgICAgICAgQ09ORklHX0FWMV9EM0QxMkRFQ19IV0FDQ0VMICsgXAogICAg ICAgICAgICAgICAgICAgICAgQ09ORklHX0FWMV9OVkRFQ19IV0FDQ0VMICsgXAogICAgICAgICAg ICAgICAgICAgICAgQ09ORklHX0FWMV9WQUFQSV9IV0FDQ0VMICsgXAogICAgICAgICAgICAgICAg ICAgICAgQ09ORklHX0FWMV9WRFBBVV9IV0FDQ0VMKQpAQCAtNTE0LDYgKzUxNSw5IEBAIHN0YXRp YyBpbnQgZ2V0X3BpeGVsX2Zvcm1hdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiAgICAgICAgICpm bXRwKysgPSBBVl9QSVhfRk1UX0QzRDExVkFfVkxEOwogICAgICAgICAqZm10cCsrID0gQVZfUElY X0ZNVF9EM0QxMTsKICNlbmRpZgorI2lmIENPTkZJR19BVjFfRDNEMTJERUNfSFdBQ0NFTAorICAg ICAgICAqZm10cCsrID0gQVZfUElYX0ZNVF9EM0QxMjsKKyNlbmRpZgogI2lmIENPTkZJR19BVjFf TlZERUNfSFdBQ0NFTAogICAgICAgICAqZm10cCsrID0gQVZfUElYX0ZNVF9DVURBOwogI2VuZGlm CkBAIC01MzIsNiArNTM2LDkgQEAgc3RhdGljIGludCBnZXRfcGl4ZWxfZm9ybWF0KEFWQ29kZWND b250ZXh0ICphdmN0eCkKICAgICAgICAgKmZtdHArKyA9IEFWX1BJWF9GTVRfRDNEMTFWQV9WTEQ7 CiAgICAgICAgICpmbXRwKysgPSBBVl9QSVhfRk1UX0QzRDExOwogI2VuZGlmCisjaWYgQ09ORklH X0FWMV9EM0QxMkRFQ19IV0FDQ0VMCisgICAgICAgICpmbXRwKysgPSBBVl9QSVhfRk1UX0QzRDEy OworI2VuZGlmCiAjaWYgQ09ORklHX0FWMV9OVkRFQ19IV0FDQ0VMCiAgICAgICAgICpmbXRwKysg PSBBVl9QSVhfRk1UX0NVREE7CiAjZW5kaWYKQEAgLTEyNzEsNiArMTI3OCw5IEBAIGNvbnN0IEZG Q29kZWMgZmZfYXYxX2RlY29kZXIgPSB7CiAjaWYgQ09ORklHX0FWMV9EM0QxMVZBMl9IV0FDQ0VM CiAgICAgICAgIEhXQUNDRUxfRDNEMTFWQTIoYXYxKSwKICNlbmRpZgorI2lmIENPTkZJR19BVjFf RDNEMTJERUNfSFdBQ0NFTAorICAgICAgICBIV0FDQ0VMX0QzRDEyREVDKGF2MSksCisjZW5kaWYK ICNpZiBDT05GSUdfQVYxX05WREVDX0hXQUNDRUwKICAgICAgICAgSFdBQ0NFTF9OVkRFQyhhdjEp LAogI2VuZGlmCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2QzZDEyZGVjX2F2MS5jIGIvbGliYXZj b2RlYy9kM2QxMmRlY19hdjEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li5jYmE3YWE3YzgxCi0tLSAvZGV2L251bGwKKysrIGIvbGliYXZjb2RlYy9kM2QxMmRlY19hdjEu YwpAQCAtMCwwICsxLDQ0MiBAQAorLyoKKyAqIERpcmVjdDNEIDEyIEFWMSBIVyBhY2NlbGVyYXRp b24KKyAqCisgKiBjb3B5cmlnaHQgKGMpIDIwMjIgV3UgSmlhbmh1YSA8dG9xc3h3QG91dGxvb2su Y29tPgorICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcg aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg RmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworCisjaW5jbHVkZSAi Y29uZmlnX2NvbXBvbmVudHMuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvYXZhc3NlcnQuaCIKKyNp bmNsdWRlICJhdjFkZWMuaCIKKyNpbmNsdWRlICJkM2QxMmRlYy5oIgorI2luY2x1ZGUgPGR4dmEu aD4KKworI2RlZmluZSBNQVhfVElMRVMgMjU2CisKK3R5cGVkZWYgc3RydWN0IEQzRDEyQVYxRGVj b2RlQ29udGV4dCB7CisgICAgRDNEMTJWQURlY29kZUNvbnRleHQgY3R4OworICAgIHVpbnQ4X3Qg KmJpdHN0cmVhbV9idWZmZXI7Cit9IEQzRDEyQVYxRGVjb2RlQ29udGV4dDsKKworI2RlZmluZSBE M0QxMl9BVjFfREVDT0RFX0NPTlRFWFQoYXZjdHgpICgoRDNEMTJBVjFEZWNvZGVDb250ZXh0ICop RDNEMTJWQV9ERUNPREVfQ09OVEVYVChhdmN0eCkpCisKK3R5cGVkZWYgc3RydWN0IEFWMURlY29k ZVBpY3R1cmVDb250ZXh0IHsKKyAgICBEWFZBX1BpY1BhcmFtc19BVjEgIHBwOworICAgIHVuc2ln bmVkICAgICAgICAgICAgdGlsZV9jb3VudDsKKyAgICBEWFZBX1RpbGVfQVYxICAgICAgIHRpbGVz W01BWF9USUxFU107CisgICAgdWludDhfdCAgICAgICAgICAgICpiaXRzdHJlYW07CisgICAgdW5z aWduZWQgICAgICAgICAgICBiaXRzdHJlYW1fc2l6ZTsKK30gQVYxRGVjb2RlUGljdHVyZUNvbnRl eHQ7CisKK3N0YXRpYyBpbnQgZ2V0X2JpdF9kZXB0aF9mcm9tX3NlcShjb25zdCBBVjFSYXdTZXF1 ZW5jZUhlYWRlciAqc2VxKQoreworICAgIGlmIChzZXEtPnNlcV9wcm9maWxlID09IDIgJiYgc2Vx LT5jb2xvcl9jb25maWcuaGlnaF9iaXRkZXB0aCkKKyAgICAgICAgcmV0dXJuIHNlcS0+Y29sb3Jf Y29uZmlnLnR3ZWx2ZV9iaXQgPyAxMiA6IDEwOworICAgIGVsc2UgaWYgKHNlcS0+c2VxX3Byb2Zp bGUgPD0gMiAmJiBzZXEtPmNvbG9yX2NvbmZpZy5oaWdoX2JpdGRlcHRoKQorICAgICAgICByZXR1 cm4gMTA7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gODsKK30KKworc3RhdGljIGludCBmaWxs X3BpY3R1cmVfcGFyYW1ldGVycyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsIGNvbnN0IEFWMURlY0Nv bnRleHQgKmgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWFZBX1BpY1Bh cmFtc19BVjEgKnBwKQoreworICAgIGludCBpLGosIHVzZXNfbHI7CisgICAgY29uc3QgQVYxUmF3 U2VxdWVuY2VIZWFkZXIgICpzZXEgICAgICAgICAgPSBoLT5yYXdfc2VxOworICAgIGNvbnN0IEFW MVJhd0ZyYW1lSGVhZGVyICAgICAqZnJhbWVfaGVhZGVyID0gaC0+cmF3X2ZyYW1lX2hlYWRlcjsK KyAgICBjb25zdCBBVjFSYXdGaWxtR3JhaW5QYXJhbXMgKmZpbG1fZ3JhaW4gICA9ICZoLT5jdXJf ZnJhbWUuZmlsbV9ncmFpbjsKKworICAgIHVuc2lnbmVkIGNoYXIgcmVtYXBfbHJfdHlwZVs0XSA9 IHsgQVYxX1JFU1RPUkVfTk9ORSwgQVYxX1JFU1RPUkVfU1dJVENIQUJMRSwgQVYxX1JFU1RPUkVf V0lFTkVSLCBBVjFfUkVTVE9SRV9TR1JQUk9KIH07CisgICAgaW50IGFwcGx5X2dyYWluID0gIShh dmN0eC0+ZXhwb3J0X3NpZGVfZGF0YSAmIEFWX0NPREVDX0VYUE9SVF9EQVRBX0ZJTE1fR1JBSU4p ICYmIGZpbG1fZ3JhaW4tPmFwcGx5X2dyYWluOworCisgICAgbWVtc2V0KHBwLCAwLCBzaXplb2Yo KnBwKSk7CisKKyAgICBwcC0+d2lkdGggID0gYXZjdHgtPndpZHRoOworICAgIHBwLT5oZWlnaHQg PSBhdmN0eC0+aGVpZ2h0OworCisgICAgcHAtPm1heF93aWR0aCAgPSBzZXEtPm1heF9mcmFtZV93 aWR0aF9taW51c18xICsgMTsKKyAgICBwcC0+bWF4X2hlaWdodCA9IHNlcS0+bWF4X2ZyYW1lX2hl aWdodF9taW51c18xICsgMTsKKworICAgIHBwLT5DdXJyUGljVGV4dHVyZUluZGV4ID0gZmZfZDNk MTJkZWNfZ2V0X3N1cmZhY2VfaW5kZXgoYXZjdHgsIGgtPmN1cl9mcmFtZS5mKTsKKyAgICBwcC0+ c3VwZXJyZXNfZGVub20gICAgICA9IGZyYW1lX2hlYWRlci0+dXNlX3N1cGVycmVzID8gZnJhbWVf aGVhZGVyLT5jb2RlZF9kZW5vbSArIEFWMV9TVVBFUlJFU19ERU5PTV9NSU4gOiBBVjFfU1VQRVJS RVNfTlVNOworICAgIHBwLT5iaXRkZXB0aCAgICAgICAgICAgID0gZ2V0X2JpdF9kZXB0aF9mcm9t X3NlcShzZXEpOworICAgIHBwLT5zZXFfcHJvZmlsZSAgICAgICAgID0gc2VxLT5zZXFfcHJvZmls ZTsKKworICAgIC8qIFRpbGluZyBpbmZvICovCisgICAgcHAtPnRpbGVzLmNvbHMgPSBmcmFtZV9o ZWFkZXItPnRpbGVfY29sczsKKyAgICBwcC0+dGlsZXMucm93cyA9IGZyYW1lX2hlYWRlci0+dGls ZV9yb3dzOworICAgIHBwLT50aWxlcy5jb250ZXh0X3VwZGF0ZV9pZCA9IGZyYW1lX2hlYWRlci0+ Y29udGV4dF91cGRhdGVfdGlsZV9pZDsKKworICAgIGZvciAoaSA9IDA7IGkgPCBwcC0+dGlsZXMu Y29sczsgaSsrKQorICAgICAgICBwcC0+dGlsZXMud2lkdGhzW2ldID0gZnJhbWVfaGVhZGVyLT53 aWR0aF9pbl9zYnNfbWludXNfMVtpXSArIDE7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgcHAtPnRp bGVzLnJvd3M7IGkrKykKKyAgICAgICAgcHAtPnRpbGVzLmhlaWdodHNbaV0gPSBmcmFtZV9oZWFk ZXItPmhlaWdodF9pbl9zYnNfbWludXNfMVtpXSArIDE7CisKKyAgICAvKiBDb2RpbmcgdG9vbHMg Ki8KKyAgICBwcC0+Y29kaW5nLnVzZV8xMjh4MTI4X3N1cGVyYmxvY2sgICAgICAgPSBzZXEtPnVz ZV8xMjh4MTI4X3N1cGVyYmxvY2s7CisgICAgcHAtPmNvZGluZy5pbnRyYV9lZGdlX2ZpbHRlciAg ICAgICAgICAgID0gc2VxLT5lbmFibGVfaW50cmFfZWRnZV9maWx0ZXI7CisgICAgcHAtPmNvZGlu Zy5pbnRlcmludHJhX2NvbXBvdW5kICAgICAgICAgID0gc2VxLT5lbmFibGVfaW50ZXJpbnRyYV9j b21wb3VuZDsKKyAgICBwcC0+Y29kaW5nLm1hc2tlZF9jb21wb3VuZCAgICAgICAgICAgICAgPSBz ZXEtPmVuYWJsZV9tYXNrZWRfY29tcG91bmQ7CisgICAgcHAtPmNvZGluZy53YXJwZWRfbW90aW9u ICAgICAgICAgICAgICAgID0gZnJhbWVfaGVhZGVyLT5hbGxvd193YXJwZWRfbW90aW9uOworICAg IHBwLT5jb2RpbmcuZHVhbF9maWx0ZXIgICAgICAgICAgICAgICAgICA9IHNlcS0+ZW5hYmxlX2R1 YWxfZmlsdGVyOworICAgIHBwLT5jb2Rpbmcuam50X2NvbXAgICAgICAgICAgICAgICAgICAgICA9 IHNlcS0+ZW5hYmxlX2pudF9jb21wOworICAgIHBwLT5jb2Rpbmcuc2NyZWVuX2NvbnRlbnRfdG9v bHMgICAgICAgICA9IGZyYW1lX2hlYWRlci0+YWxsb3dfc2NyZWVuX2NvbnRlbnRfdG9vbHM7Cisg ICAgcHAtPmNvZGluZy5pbnRlZ2VyX212ICAgICAgICAgICAgICAgICAgID0gZnJhbWVfaGVhZGVy LT5mb3JjZV9pbnRlZ2VyX212IHx8ICEoZnJhbWVfaGVhZGVyLT5mcmFtZV90eXBlICYgMSk7Cisg ICAgcHAtPmNvZGluZy5jZGVmICAgICAgICAgICAgICAgICAgICAgICAgID0gc2VxLT5lbmFibGVf Y2RlZjsKKyAgICBwcC0+Y29kaW5nLnJlc3RvcmF0aW9uICAgICAgICAgICAgICAgICAgPSBzZXEt PmVuYWJsZV9yZXN0b3JhdGlvbjsKKyAgICBwcC0+Y29kaW5nLmZpbG1fZ3JhaW4gICAgICAgICAg ICAgICAgICAgPSBzZXEtPmZpbG1fZ3JhaW5fcGFyYW1zX3ByZXNlbnQgJiYgIShhdmN0eC0+ZXhw b3J0X3NpZGVfZGF0YSAmIEFWX0NPREVDX0VYUE9SVF9EQVRBX0ZJTE1fR1JBSU4pOworICAgIHBw LT5jb2RpbmcuaW50cmFiYyAgICAgICAgICAgICAgICAgICAgICA9IGZyYW1lX2hlYWRlci0+YWxs b3dfaW50cmFiYzsKKyAgICBwcC0+Y29kaW5nLmhpZ2hfcHJlY2lzaW9uX212ICAgICAgICAgICAg PSBmcmFtZV9oZWFkZXItPmFsbG93X2hpZ2hfcHJlY2lzaW9uX212OworICAgIHBwLT5jb2Rpbmcu c3dpdGNoYWJsZV9tb3Rpb25fbW9kZSAgICAgICA9IGZyYW1lX2hlYWRlci0+aXNfbW90aW9uX21v ZGVfc3dpdGNoYWJsZTsKKyAgICBwcC0+Y29kaW5nLmZpbHRlcl9pbnRyYSAgICAgICAgICAgICAg ICAgPSBzZXEtPmVuYWJsZV9maWx0ZXJfaW50cmE7CisgICAgcHAtPmNvZGluZy5kaXNhYmxlX2Zy YW1lX2VuZF91cGRhdGVfY2RmID0gZnJhbWVfaGVhZGVyLT5kaXNhYmxlX2ZyYW1lX2VuZF91cGRh dGVfY2RmOworICAgIHBwLT5jb2RpbmcuZGlzYWJsZV9jZGZfdXBkYXRlICAgICAgICAgICA9IGZy YW1lX2hlYWRlci0+ZGlzYWJsZV9jZGZfdXBkYXRlOworICAgIHBwLT5jb2RpbmcucmVmZXJlbmNl X21vZGUgICAgICAgICAgICAgICA9IGZyYW1lX2hlYWRlci0+cmVmZXJlbmNlX3NlbGVjdDsKKyAg ICBwcC0+Y29kaW5nLnNraXBfbW9kZSAgICAgICAgICAgICAgICAgICAgPSBmcmFtZV9oZWFkZXIt PnNraXBfbW9kZV9wcmVzZW50OworICAgIHBwLT5jb2RpbmcucmVkdWNlZF90eF9zZXQgICAgICAg ICAgICAgICA9IGZyYW1lX2hlYWRlci0+cmVkdWNlZF90eF9zZXQ7CisgICAgcHAtPmNvZGluZy5z dXBlcnJlcyAgICAgICAgICAgICAgICAgICAgID0gZnJhbWVfaGVhZGVyLT51c2Vfc3VwZXJyZXM7 CisgICAgcHAtPmNvZGluZy50eF9tb2RlICAgICAgICAgICAgICAgICAgICAgID0gZnJhbWVfaGVh ZGVyLT50eF9tb2RlOworICAgIHBwLT5jb2RpbmcudXNlX3JlZl9mcmFtZV9tdnMgICAgICAgICAg ICA9IGZyYW1lX2hlYWRlci0+dXNlX3JlZl9mcmFtZV9tdnM7CisgICAgcHAtPmNvZGluZy5lbmFi bGVfcmVmX2ZyYW1lX212cyAgICAgICAgID0gc2VxLT5lbmFibGVfcmVmX2ZyYW1lX212czsKKyAg ICBwcC0+Y29kaW5nLnJlZmVyZW5jZV9mcmFtZV91cGRhdGUgICAgICAgPSAxOyAvLyAwIGZvciBz aG93X2V4aXN0aW5nX2ZyYW1lIHdpdGgga2V5IGZyYW1lcywgYnV0IHRob3NlIGFyZSBub3QgcGFz c2VkIHRvIHRoZSBod2FjY2VsCisKKyAgICAvKiBGb3JtYXQgJiBQaWN0dXJlIEluZm8gZmxhZ3Mg Ki8KKyAgICBwcC0+Zm9ybWF0LmZyYW1lX3R5cGUgICAgID0gZnJhbWVfaGVhZGVyLT5mcmFtZV90 eXBlOworICAgIHBwLT5mb3JtYXQuc2hvd19mcmFtZSAgICAgPSBmcmFtZV9oZWFkZXItPnNob3df ZnJhbWU7CisgICAgcHAtPmZvcm1hdC5zaG93YWJsZV9mcmFtZSA9IGZyYW1lX2hlYWRlci0+c2hv d2FibGVfZnJhbWU7CisgICAgcHAtPmZvcm1hdC5zdWJzYW1wbGluZ194ICA9IHNlcS0+Y29sb3Jf Y29uZmlnLnN1YnNhbXBsaW5nX3g7CisgICAgcHAtPmZvcm1hdC5zdWJzYW1wbGluZ195ICA9IHNl cS0+Y29sb3JfY29uZmlnLnN1YnNhbXBsaW5nX3k7CisgICAgcHAtPmZvcm1hdC5tb25vX2Nocm9t ZSAgICA9IHNlcS0+Y29sb3JfY29uZmlnLm1vbm9fY2hyb21lOworCisgICAgLyogUmVmZXJlbmNl cyAqLworICAgIHBwLT5wcmltYXJ5X3JlZl9mcmFtZSA9IGZyYW1lX2hlYWRlci0+cHJpbWFyeV9y ZWZfZnJhbWU7CisgICAgcHAtPm9yZGVyX2hpbnQgICAgICAgID0gZnJhbWVfaGVhZGVyLT5vcmRl cl9oaW50OworICAgIHBwLT5vcmRlcl9oaW50X2JpdHMgICA9IHNlcS0+ZW5hYmxlX29yZGVyX2hp bnQgPyBzZXEtPm9yZGVyX2hpbnRfYml0c19taW51c18xICsgMSA6IDA7CisKKyAgICBtZW1zZXQo cHAtPlJlZkZyYW1lTWFwVGV4dHVyZUluZGV4LCAweEZGLCBzaXplb2YocHAtPlJlZkZyYW1lTWFw VGV4dHVyZUluZGV4KSk7CisgICAgZm9yIChpID0gMDsgaSA8IEFWMV9SRUZTX1BFUl9GUkFNRTsg aSsrKSB7CisgICAgICAgIGludDhfdCByZWZfaWR4ID0gZnJhbWVfaGVhZGVyLT5yZWZfZnJhbWVf aWR4W2ldOworICAgICAgICBBVkZyYW1lICpyZWZfZnJhbWUgPSBoLT5yZWZbcmVmX2lkeF0uZjsK KworICAgICAgICBwcC0+ZnJhbWVfcmVmc1tpXS53aWR0aCAgPSByZWZfZnJhbWUtPndpZHRoOwor ICAgICAgICBwcC0+ZnJhbWVfcmVmc1tpXS5oZWlnaHQgPSByZWZfZnJhbWUtPmhlaWdodDsKKyAg ICAgICAgcHAtPmZyYW1lX3JlZnNbaV0uSW5kZXggID0gcmVmX2ZyYW1lLT5idWZbMF0gPyByZWZf aWR4IDogMHhGRjsKKworICAgICAgICAvKiBHbG9iYWwgTW90aW9uICovCisgICAgICAgIHBwLT5m cmFtZV9yZWZzW2ldLndtaW52YWxpZCA9IGgtPmN1cl9mcmFtZS5nbV9pbnZhbGlkW0FWMV9SRUZf RlJBTUVfTEFTVCArIGldOworICAgICAgICBwcC0+ZnJhbWVfcmVmc1tpXS53bXR5cGUgICAgPSBo LT5jdXJfZnJhbWUuZ21fdHlwZVtBVjFfUkVGX0ZSQU1FX0xBU1QgKyBpXTsKKyAgICAgICAgZm9y IChqID0gMDsgaiA8IDY7ICsraikgeworICAgICAgICAgICAgIHBwLT5mcmFtZV9yZWZzW2ldLndt bWF0W2pdID0gaC0+Y3VyX2ZyYW1lLmdtX3BhcmFtc1tBVjFfUkVGX0ZSQU1FX0xBU1QgKyBpXVtq XTsKKyAgICAgICAgfQorICAgIH0KKyAgICBmb3IgKGkgPSAwOyBpIDwgQVYxX05VTV9SRUZfRlJB TUVTOyBpKyspIHsKKyAgICAgICAgQVZGcmFtZSAqcmVmX2ZyYW1lID0gaC0+cmVmW2ldLmY7Cisg ICAgICAgIGlmIChyZWZfZnJhbWUtPmJ1ZlswXSkKKyAgICAgICAgICAgIHBwLT5SZWZGcmFtZU1h cFRleHR1cmVJbmRleFtpXSA9IGZmX2QzZDEyZGVjX2dldF9zdXJmYWNlX2luZGV4KGF2Y3R4LCBy ZWZfZnJhbWUpOworICAgIH0KKworICAgIC8qIExvb3AgZmlsdGVyIHBhcmFtZXRlcnMgKi8KKyAg ICBwcC0+bG9vcF9maWx0ZXIuZmlsdGVyX2xldmVsWzBdICAgICAgICA9IGZyYW1lX2hlYWRlci0+ bG9vcF9maWx0ZXJfbGV2ZWxbMF07CisgICAgcHAtPmxvb3BfZmlsdGVyLmZpbHRlcl9sZXZlbFsx XSAgICAgICAgPSBmcmFtZV9oZWFkZXItPmxvb3BfZmlsdGVyX2xldmVsWzFdOworICAgIHBwLT5s b29wX2ZpbHRlci5maWx0ZXJfbGV2ZWxfdSAgICAgICAgID0gZnJhbWVfaGVhZGVyLT5sb29wX2Zp bHRlcl9sZXZlbFsyXTsKKyAgICBwcC0+bG9vcF9maWx0ZXIuZmlsdGVyX2xldmVsX3YgICAgICAg ICA9IGZyYW1lX2hlYWRlci0+bG9vcF9maWx0ZXJfbGV2ZWxbM107CisgICAgcHAtPmxvb3BfZmls dGVyLnNoYXJwbmVzc19sZXZlbCAgICAgICAgPSBmcmFtZV9oZWFkZXItPmxvb3BfZmlsdGVyX3No YXJwbmVzczsKKyAgICBwcC0+bG9vcF9maWx0ZXIubW9kZV9yZWZfZGVsdGFfZW5hYmxlZCA9IGZy YW1lX2hlYWRlci0+bG9vcF9maWx0ZXJfZGVsdGFfZW5hYmxlZDsKKyAgICBwcC0+bG9vcF9maWx0 ZXIubW9kZV9yZWZfZGVsdGFfdXBkYXRlICA9IGZyYW1lX2hlYWRlci0+bG9vcF9maWx0ZXJfZGVs dGFfdXBkYXRlOworICAgIHBwLT5sb29wX2ZpbHRlci5kZWx0YV9sZl9tdWx0aSAgICAgICAgID0g ZnJhbWVfaGVhZGVyLT5kZWx0YV9sZl9tdWx0aTsKKyAgICBwcC0+bG9vcF9maWx0ZXIuZGVsdGFf bGZfcHJlc2VudCAgICAgICA9IGZyYW1lX2hlYWRlci0+ZGVsdGFfbGZfcHJlc2VudDsKKyAgICBw cC0+bG9vcF9maWx0ZXIuZGVsdGFfbGZfcmVzICAgICAgICAgICA9IGZyYW1lX2hlYWRlci0+ZGVs dGFfbGZfcmVzOworCisgICAgZm9yIChpID0gMDsgaSA8IEFWMV9UT1RBTF9SRUZTX1BFUl9GUkFN RTsgaSsrKSB7CisgICAgICAgIHBwLT5sb29wX2ZpbHRlci5yZWZfZGVsdGFzW2ldID0gZnJhbWVf aGVhZGVyLT5sb29wX2ZpbHRlcl9yZWZfZGVsdGFzW2ldOworICAgIH0KKworICAgIHBwLT5sb29w X2ZpbHRlci5tb2RlX2RlbHRhc1swXSAgICAgICAgICAgICAgICA9IGZyYW1lX2hlYWRlci0+bG9v cF9maWx0ZXJfbW9kZV9kZWx0YXNbMF07CisgICAgcHAtPmxvb3BfZmlsdGVyLm1vZGVfZGVsdGFz WzFdICAgICAgICAgICAgICAgID0gZnJhbWVfaGVhZGVyLT5sb29wX2ZpbHRlcl9tb2RlX2RlbHRh c1sxXTsKKyAgICBwcC0+bG9vcF9maWx0ZXIuZnJhbWVfcmVzdG9yYXRpb25fdHlwZVswXSAgICAg PSByZW1hcF9scl90eXBlW2ZyYW1lX2hlYWRlci0+bHJfdHlwZVswXV07CisgICAgcHAtPmxvb3Bf ZmlsdGVyLmZyYW1lX3Jlc3RvcmF0aW9uX3R5cGVbMV0gICAgID0gcmVtYXBfbHJfdHlwZVtmcmFt ZV9oZWFkZXItPmxyX3R5cGVbMV1dOworICAgIHBwLT5sb29wX2ZpbHRlci5mcmFtZV9yZXN0b3Jh dGlvbl90eXBlWzJdICAgICA9IHJlbWFwX2xyX3R5cGVbZnJhbWVfaGVhZGVyLT5scl90eXBlWzJd XTsKKyAgICB1c2VzX2xyID0gZnJhbWVfaGVhZGVyLT5scl90eXBlWzBdIHx8IGZyYW1lX2hlYWRl ci0+bHJfdHlwZVsxXSB8fCBmcmFtZV9oZWFkZXItPmxyX3R5cGVbMl07CisgICAgcHAtPmxvb3Bf ZmlsdGVyLmxvZzJfcmVzdG9yYXRpb25fdW5pdF9zaXplWzBdID0gdXNlc19sciA/ICg2ICsgZnJh bWVfaGVhZGVyLT5scl91bml0X3NoaWZ0KSA6IDg7CisgICAgcHAtPmxvb3BfZmlsdGVyLmxvZzJf cmVzdG9yYXRpb25fdW5pdF9zaXplWzFdID0gdXNlc19sciA/ICg2ICsgZnJhbWVfaGVhZGVyLT5s cl91bml0X3NoaWZ0IC0gZnJhbWVfaGVhZGVyLT5scl91dl9zaGlmdCkgOiA4OworICAgIHBwLT5s b29wX2ZpbHRlci5sb2cyX3Jlc3RvcmF0aW9uX3VuaXRfc2l6ZVsyXSA9IHVzZXNfbHIgPyAoNiAr IGZyYW1lX2hlYWRlci0+bHJfdW5pdF9zaGlmdCAtIGZyYW1lX2hlYWRlci0+bHJfdXZfc2hpZnQp IDogODsKKworICAgIC8qIFF1YW50aXphdGlvbiAqLworICAgIHBwLT5xdWFudGl6YXRpb24uZGVs dGFfcV9wcmVzZW50ID0gZnJhbWVfaGVhZGVyLT5kZWx0YV9xX3ByZXNlbnQ7CisgICAgcHAtPnF1 YW50aXphdGlvbi5kZWx0YV9xX3JlcyAgICAgPSBmcmFtZV9oZWFkZXItPmRlbHRhX3FfcmVzOwor ICAgIHBwLT5xdWFudGl6YXRpb24uYmFzZV9xaW5kZXggICAgID0gZnJhbWVfaGVhZGVyLT5iYXNl X3FfaWR4OworICAgIHBwLT5xdWFudGl6YXRpb24ueV9kY19kZWx0YV9xICAgID0gZnJhbWVfaGVh ZGVyLT5kZWx0YV9xX3lfZGM7CisgICAgcHAtPnF1YW50aXphdGlvbi51X2RjX2RlbHRhX3EgICAg PSBmcmFtZV9oZWFkZXItPmRlbHRhX3FfdV9kYzsKKyAgICBwcC0+cXVhbnRpemF0aW9uLnZfZGNf ZGVsdGFfcSAgICA9IGZyYW1lX2hlYWRlci0+ZGVsdGFfcV92X2RjOworICAgIHBwLT5xdWFudGl6 YXRpb24udV9hY19kZWx0YV9xICAgID0gZnJhbWVfaGVhZGVyLT5kZWx0YV9xX3VfYWM7CisgICAg cHAtPnF1YW50aXphdGlvbi52X2FjX2RlbHRhX3EgICAgPSBmcmFtZV9oZWFkZXItPmRlbHRhX3Ff dl9hYzsKKyAgICBwcC0+cXVhbnRpemF0aW9uLnFtX3kgICAgICAgICAgICA9IGZyYW1lX2hlYWRl ci0+dXNpbmdfcW1hdHJpeCA/IGZyYW1lX2hlYWRlci0+cW1feSA6IDB4RkY7CisgICAgcHAtPnF1 YW50aXphdGlvbi5xbV91ICAgICAgICAgICAgPSBmcmFtZV9oZWFkZXItPnVzaW5nX3FtYXRyaXgg PyBmcmFtZV9oZWFkZXItPnFtX3UgOiAweEZGOworICAgIHBwLT5xdWFudGl6YXRpb24ucW1fdiAg ICAgICAgICAgID0gZnJhbWVfaGVhZGVyLT51c2luZ19xbWF0cml4ID8gZnJhbWVfaGVhZGVyLT5x bV92IDogMHhGRjsKKworICAgIC8qIENkZWYgcGFyYW1ldGVycyAqLworICAgIHBwLT5jZGVmLmRh bXBpbmcgPSBmcmFtZV9oZWFkZXItPmNkZWZfZGFtcGluZ19taW51c18zOworICAgIHBwLT5jZGVm LmJpdHMgICAgPSBmcmFtZV9oZWFkZXItPmNkZWZfYml0czsKKyAgICBmb3IgKGkgPSAwOyBpIDwg ODsgaSsrKSB7CisgICAgICAgIHBwLT5jZGVmLnlfc3RyZW5ndGhzW2ldLnByaW1hcnkgICAgPSBm cmFtZV9oZWFkZXItPmNkZWZfeV9wcmlfc3RyZW5ndGhbaV07CisgICAgICAgIHBwLT5jZGVmLnlf c3RyZW5ndGhzW2ldLnNlY29uZGFyeSAgPSBmcmFtZV9oZWFkZXItPmNkZWZfeV9zZWNfc3RyZW5n dGhbaV07CisgICAgICAgIHBwLT5jZGVmLnV2X3N0cmVuZ3Roc1tpXS5wcmltYXJ5ICAgPSBmcmFt ZV9oZWFkZXItPmNkZWZfdXZfcHJpX3N0cmVuZ3RoW2ldOworICAgICAgICBwcC0+Y2RlZi51dl9z dHJlbmd0aHNbaV0uc2Vjb25kYXJ5ID0gZnJhbWVfaGVhZGVyLT5jZGVmX3V2X3NlY19zdHJlbmd0 aFtpXTsKKyAgICB9CisKKyAgICAvKiBNaXNjIGZsYWdzICovCisgICAgcHAtPmludGVycF9maWx0 ZXIgPSBmcmFtZV9oZWFkZXItPmludGVycG9sYXRpb25fZmlsdGVyOworCisgICAgLyogU2VnbWVu dGF0aW9uICovCisgICAgcHAtPnNlZ21lbnRhdGlvbi5lbmFibGVkICAgICAgICAgPSBmcmFtZV9o ZWFkZXItPnNlZ21lbnRhdGlvbl9lbmFibGVkOworICAgIHBwLT5zZWdtZW50YXRpb24udXBkYXRl X21hcCAgICAgID0gZnJhbWVfaGVhZGVyLT5zZWdtZW50YXRpb25fdXBkYXRlX21hcDsKKyAgICBw cC0+c2VnbWVudGF0aW9uLnVwZGF0ZV9kYXRhICAgICA9IGZyYW1lX2hlYWRlci0+c2VnbWVudGF0 aW9uX3VwZGF0ZV9kYXRhOworICAgIHBwLT5zZWdtZW50YXRpb24udGVtcG9yYWxfdXBkYXRlID0g ZnJhbWVfaGVhZGVyLT5zZWdtZW50YXRpb25fdGVtcG9yYWxfdXBkYXRlOworICAgIGZvciAoaSA9 IDA7IGkgPCBBVjFfTUFYX1NFR01FTlRTOyBpKyspIHsKKyAgICAgICAgZm9yIChqID0gMDsgaiA8 IEFWMV9TRUdfTFZMX01BWDsgaisrKSB7CisgICAgICAgICAgICBwcC0+c2VnbWVudGF0aW9uLmZl YXR1cmVfbWFza1tpXS5tYXNrIHw9IGZyYW1lX2hlYWRlci0+ZmVhdHVyZV9lbmFibGVkW2ldW2pd IDw8IGo7CisgICAgICAgICAgICBwcC0+c2VnbWVudGF0aW9uLmZlYXR1cmVfZGF0YVtpXVtqXSAg ICA9IGZyYW1lX2hlYWRlci0+ZmVhdHVyZV92YWx1ZVtpXVtqXTsKKyAgICAgICAgfQorICAgIH0K KworICAgIC8qIEZpbG0gZ3JhaW4gKi8KKyAgICBpZiAoYXBwbHlfZ3JhaW4pIHsKKyAgICAgICAg cHAtPmZpbG1fZ3JhaW4uYXBwbHlfZ3JhaW4gICAgICAgICAgICAgID0gMTsKKyAgICAgICAgcHAt PmZpbG1fZ3JhaW4uc2NhbGluZ19zaGlmdF9taW51czggICAgID0gZmlsbV9ncmFpbi0+Z3JhaW5f c2NhbGluZ19taW51c184OworICAgICAgICBwcC0+ZmlsbV9ncmFpbi5jaHJvbWFfc2NhbGluZ19m cm9tX2x1bWEgPSBmaWxtX2dyYWluLT5jaHJvbWFfc2NhbGluZ19mcm9tX2x1bWE7CisgICAgICAg IHBwLT5maWxtX2dyYWluLmFyX2NvZWZmX2xhZyAgICAgICAgICAgICA9IGZpbG1fZ3JhaW4tPmFy X2NvZWZmX2xhZzsKKyAgICAgICAgcHAtPmZpbG1fZ3JhaW4uYXJfY29lZmZfc2hpZnRfbWludXM2 ICAgID0gZmlsbV9ncmFpbi0+YXJfY29lZmZfc2hpZnRfbWludXNfNjsKKyAgICAgICAgcHAtPmZp bG1fZ3JhaW4uZ3JhaW5fc2NhbGVfc2hpZnQgICAgICAgID0gZmlsbV9ncmFpbi0+Z3JhaW5fc2Nh bGVfc2hpZnQ7CisgICAgICAgIHBwLT5maWxtX2dyYWluLm92ZXJsYXBfZmxhZyAgICAgICAgICAg ICA9IGZpbG1fZ3JhaW4tPm92ZXJsYXBfZmxhZzsKKyAgICAgICAgcHAtPmZpbG1fZ3JhaW4uY2xp cF90b19yZXN0cmljdGVkX3JhbmdlID0gZmlsbV9ncmFpbi0+Y2xpcF90b19yZXN0cmljdGVkX3Jh bmdlOworICAgICAgICBwcC0+ZmlsbV9ncmFpbi5tYXRyaXhfY29lZmZfaXNfaWRlbnRpdHkgPSAo c2VxLT5jb2xvcl9jb25maWcubWF0cml4X2NvZWZmaWNpZW50cyA9PSBBVkNPTF9TUENfUkdCKTsK KworICAgICAgICBwcC0+ZmlsbV9ncmFpbi5ncmFpbl9zZWVkICAgICAgICAgICAgICAgPSBmaWxt X2dyYWluLT5ncmFpbl9zZWVkOworICAgICAgICBwcC0+ZmlsbV9ncmFpbi5udW1feV9wb2ludHMg ICAgICAgICAgICAgPSBmaWxtX2dyYWluLT5udW1feV9wb2ludHM7CisgICAgICAgIGZvciAoaSA9 IDA7IGkgPCBmaWxtX2dyYWluLT5udW1feV9wb2ludHM7IGkrKykgeworICAgICAgICAgICAgcHAt PmZpbG1fZ3JhaW4uc2NhbGluZ19wb2ludHNfeVtpXVswXSA9IGZpbG1fZ3JhaW4tPnBvaW50X3lf dmFsdWVbaV07CisgICAgICAgICAgICBwcC0+ZmlsbV9ncmFpbi5zY2FsaW5nX3BvaW50c195W2ld WzFdID0gZmlsbV9ncmFpbi0+cG9pbnRfeV9zY2FsaW5nW2ldOworICAgICAgICB9CisgICAgICAg IHBwLT5maWxtX2dyYWluLm51bV9jYl9wb2ludHMgICAgICAgICAgICA9IGZpbG1fZ3JhaW4tPm51 bV9jYl9wb2ludHM7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBmaWxtX2dyYWluLT5udW1fY2Jf cG9pbnRzOyBpKyspIHsKKyAgICAgICAgICAgIHBwLT5maWxtX2dyYWluLnNjYWxpbmdfcG9pbnRz X2NiW2ldWzBdID0gZmlsbV9ncmFpbi0+cG9pbnRfY2JfdmFsdWVbaV07CisgICAgICAgICAgICBw cC0+ZmlsbV9ncmFpbi5zY2FsaW5nX3BvaW50c19jYltpXVsxXSA9IGZpbG1fZ3JhaW4tPnBvaW50 X2NiX3NjYWxpbmdbaV07CisgICAgICAgIH0KKyAgICAgICAgcHAtPmZpbG1fZ3JhaW4ubnVtX2Ny X3BvaW50cyAgICAgICAgICAgID0gZmlsbV9ncmFpbi0+bnVtX2NyX3BvaW50czsKKyAgICAgICAg Zm9yIChpID0gMDsgaSA8IGZpbG1fZ3JhaW4tPm51bV9jcl9wb2ludHM7IGkrKykgeworICAgICAg ICAgICAgcHAtPmZpbG1fZ3JhaW4uc2NhbGluZ19wb2ludHNfY3JbaV1bMF0gPSBmaWxtX2dyYWlu LT5wb2ludF9jcl92YWx1ZVtpXTsKKyAgICAgICAgICAgIHBwLT5maWxtX2dyYWluLnNjYWxpbmdf cG9pbnRzX2NyW2ldWzFdID0gZmlsbV9ncmFpbi0+cG9pbnRfY3Jfc2NhbGluZ1tpXTsKKyAgICAg ICAgfQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMjQ7IGkrKykgeworICAgICAgICAgICAgcHAt PmZpbG1fZ3JhaW4uYXJfY29lZmZzX3lbaV0gPSBmaWxtX2dyYWluLT5hcl9jb2VmZnNfeV9wbHVz XzEyOFtpXTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMjU7IGkrKykgewor ICAgICAgICAgICAgcHAtPmZpbG1fZ3JhaW4uYXJfY29lZmZzX2NiW2ldID0gZmlsbV9ncmFpbi0+ YXJfY29lZmZzX2NiX3BsdXNfMTI4W2ldOworICAgICAgICAgICAgcHAtPmZpbG1fZ3JhaW4uYXJf Y29lZmZzX2NyW2ldID0gZmlsbV9ncmFpbi0+YXJfY29lZmZzX2NyX3BsdXNfMTI4W2ldOworICAg ICAgICB9CisgICAgICAgIHBwLT5maWxtX2dyYWluLmNiX211bHQgICAgICA9IGZpbG1fZ3JhaW4t PmNiX211bHQ7CisgICAgICAgIHBwLT5maWxtX2dyYWluLmNiX2x1bWFfbXVsdCA9IGZpbG1fZ3Jh aW4tPmNiX2x1bWFfbXVsdDsKKyAgICAgICAgcHAtPmZpbG1fZ3JhaW4uY3JfbXVsdCAgICAgID0g ZmlsbV9ncmFpbi0+Y3JfbXVsdDsKKyAgICAgICAgcHAtPmZpbG1fZ3JhaW4uY3JfbHVtYV9tdWx0 ID0gZmlsbV9ncmFpbi0+Y3JfbHVtYV9tdWx0OworICAgICAgICBwcC0+ZmlsbV9ncmFpbi5jYl9v ZmZzZXQgICAgPSBmaWxtX2dyYWluLT5jYl9vZmZzZXQ7CisgICAgICAgIHBwLT5maWxtX2dyYWlu LmNyX29mZnNldCAgICA9IGZpbG1fZ3JhaW4tPmNyX29mZnNldDsKKyAgICAgICAgcHAtPmZpbG1f Z3JhaW4uY3Jfb2Zmc2V0ICAgID0gZmlsbV9ncmFpbi0+Y3Jfb2Zmc2V0OworICAgIH0KKworICAg IHJldHVybiAwOworfQorCitzdGF0aWMgaW50IGQzZDEyZGVjX2F2MV9zdGFydF9mcmFtZShBVkNv ZGVjQ29udGV4dCAqYXZjdHgsIGF2X3VudXNlZCBjb25zdCB1aW50OF90ICpidWZmZXIsICBhdl91 bnVzZWQgdWludDMyX3Qgc2l6ZSkKK3sKKyAgICBjb25zdCBBVjFEZWNDb250ZXh0ICAgICAqaCAg ICAgICA9IGF2Y3R4LT5wcml2X2RhdGE7CisgICAgQVYxRGVjb2RlUGljdHVyZUNvbnRleHQgKmN0 eF9waWMgPSBoLT5jdXJfZnJhbWUuaHdhY2NlbF9waWN0dXJlX3ByaXZhdGU7CisKKyAgICBpZiAo IUQzRDEyVkFfREVDT0RFX0NPTlRFWFQoYXZjdHgpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAg ICBhdl9hc3NlcnQwKGN0eF9waWMpOworCisgICAgaWYgKGZpbGxfcGljdHVyZV9wYXJhbWV0ZXJz KGF2Y3R4LCBoLCAmY3R4X3BpYy0+cHApIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAg Y3R4X3BpYy0+Yml0c3RyZWFtICAgICAgPSBOVUxMOworICAgIGN0eF9waWMtPmJpdHN0cmVhbV9z aXplID0gMDsKKyAgICBjdHhfcGljLT50aWxlX2NvdW50ICAgICA9IDA7CisKKyAgICByZXR1cm4g MDsKK30KKworc3RhdGljIGludCBkM2QxMmRlY19hdjFfZGVjb2RlX3NsaWNlKEFWQ29kZWNDb250 ZXh0ICphdmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlu dDhfdCAqYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf dCBzaXplKQoreworICAgIGNvbnN0IEFWMURlY0NvbnRleHQgICAgICpoICAgICAgICAgICAgPSBh dmN0eC0+cHJpdl9kYXRhOworICAgIGNvbnN0IEFWMVJhd0ZyYW1lSGVhZGVyICpmcmFtZV9oZWFk ZXIgPSBoLT5yYXdfZnJhbWVfaGVhZGVyOworICAgIEFWMURlY29kZVBpY3R1cmVDb250ZXh0ICpj dHhfcGljICAgICAgPSBoLT5jdXJfZnJhbWUuaHdhY2NlbF9waWN0dXJlX3ByaXZhdGU7CisKKyAg ICBjdHhfcGljLT50aWxlX2NvdW50ID0gZnJhbWVfaGVhZGVyLT50aWxlX2NvbHMgKiBmcmFtZV9o ZWFkZXItPnRpbGVfcm93czsKKworICAgIGlmIChjdHhfcGljLT50aWxlX2NvdW50ID4gTUFYX1RJ TEVTKQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9TWVMpOworCisgICAgaWYgKGN0eF9waWMt PnRpbGVfY291bnQgPT0gaC0+dGdfZW5kIC0gaC0+dGdfc3RhcnQgKyAxKSB7CisgICAgICAgIGN0 eF9waWMtPmJpdHN0cmVhbSA9ICh1aW50OF90ICopYnVmZmVyOworICAgICAgICBjdHhfcGljLT5i aXRzdHJlYW1fc2l6ZSA9IHNpemU7CisKKyAgICAgICAgZm9yICh1aW50MzJfdCB0aWxlX251bSA9 IDA7IHRpbGVfbnVtIDwgY3R4X3BpYy0+dGlsZV9jb3VudDsgdGlsZV9udW0rKykgeworICAgICAg ICAgICAgY3R4X3BpYy0+dGlsZXNbdGlsZV9udW1dLkRhdGFPZmZzZXQgICA9IGgtPnRpbGVfZ3Jv dXBfaW5mb1t0aWxlX251bV0udGlsZV9vZmZzZXQ7CisgICAgICAgICAgICBjdHhfcGljLT50aWxl c1t0aWxlX251bV0uRGF0YVNpemUgICAgID0gaC0+dGlsZV9ncm91cF9pbmZvW3RpbGVfbnVtXS50 aWxlX3NpemU7CisgICAgICAgICAgICBjdHhfcGljLT50aWxlc1t0aWxlX251bV0ucm93ICAgICAg ICAgID0gaC0+dGlsZV9ncm91cF9pbmZvW3RpbGVfbnVtXS50aWxlX3JvdzsKKyAgICAgICAgICAg IGN0eF9waWMtPnRpbGVzW3RpbGVfbnVtXS5jb2x1bW4gICAgICAgPSBoLT50aWxlX2dyb3VwX2lu Zm9bdGlsZV9udW1dLnRpbGVfY29sdW1uOworICAgICAgICAgICAgY3R4X3BpYy0+dGlsZXNbdGls ZV9udW1dLmFuY2hvcl9mcmFtZSA9IDB4RkY7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g MDsKKyAgICB9CisKKyAgICBjdHhfcGljLT5iaXRzdHJlYW0gPSBEM0QxMl9BVjFfREVDT0RFX0NP TlRFWFQoYXZjdHgpLT5iaXRzdHJlYW1fYnVmZmVyOworICAgIG1lbWNweShjdHhfcGljLT5iaXRz dHJlYW0gKyBjdHhfcGljLT5iaXRzdHJlYW1fc2l6ZSwgYnVmZmVyLCBzaXplKTsKKworICAgIGZv ciAodWludDMyX3QgdGlsZV9udW0gPSBoLT50Z19zdGFydDsgdGlsZV9udW0gPD0gaC0+dGdfZW5k OyB0aWxlX251bSsrKSB7CisgICAgICAgIGN0eF9waWMtPnRpbGVzW3RpbGVfbnVtXS5EYXRhT2Zm c2V0ICAgPSBjdHhfcGljLT5iaXRzdHJlYW1fc2l6ZSArIGgtPnRpbGVfZ3JvdXBfaW5mb1t0aWxl X251bV0udGlsZV9vZmZzZXQ7CisgICAgICAgIGN0eF9waWMtPnRpbGVzW3RpbGVfbnVtXS5EYXRh U2l6ZSAgICAgPSBoLT50aWxlX2dyb3VwX2luZm9bdGlsZV9udW1dLnRpbGVfc2l6ZTsKKyAgICAg ICAgY3R4X3BpYy0+dGlsZXNbdGlsZV9udW1dLnJvdyAgICAgICAgICA9IGgtPnRpbGVfZ3JvdXBf aW5mb1t0aWxlX251bV0udGlsZV9yb3c7CisgICAgICAgIGN0eF9waWMtPnRpbGVzW3RpbGVfbnVt XS5jb2x1bW4gICAgICAgPSBoLT50aWxlX2dyb3VwX2luZm9bdGlsZV9udW1dLnRpbGVfY29sdW1u OworICAgICAgICBjdHhfcGljLT50aWxlc1t0aWxlX251bV0uYW5jaG9yX2ZyYW1lID0gMHhGRjsK KyAgICB9CisKKyAgICBjdHhfcGljLT5iaXRzdHJlYW1fc2l6ZSArPSBzaXplOworCisgICAgcmV0 dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgdXBkYXRlX2lucHV0X2FyZ3VtZW50cyhBVkNvZGVjQ29u dGV4dCAqYXZjdHgsIEQzRDEyX1ZJREVPX0RFQ09ERV9JTlBVVF9TVFJFQU1fQVJHVU1FTlRTICpp bnB1dF9hcmdzLCBJRDNEMTJSZXNvdXJjZSAqYnVmZmVyKQoreworICAgIEQzRDEyVkFEZWNvZGVD b250ZXh0ICAgICpjdHggICAgICAgICAgPSBEM0QxMlZBX0RFQ09ERV9DT05URVhUKGF2Y3R4KTsK KyAgICBBVkhXRnJhbWVzQ29udGV4dCAgICAgICAqZnJhbWVzX2N0eCAgID0gRDNEMTJWQV9GUkFN RVNfQ09OVEVYVChhdmN0eCk7CisgICAgQVZEM0QxMlZBRnJhbWVzQ29udGV4dCAgKmZyYW1lc19o d2N0eCA9IGZyYW1lc19jdHgtPmh3Y3R4OworICAgIGNvbnN0IEFWMURlY0NvbnRleHQgICAgICpo ICAgICAgICAgICAgPSBhdmN0eC0+cHJpdl9kYXRhOworICAgIEFWMURlY29kZVBpY3R1cmVDb250 ZXh0ICpjdHhfcGljICAgICAgPSBoLT5jdXJfZnJhbWUuaHdhY2NlbF9waWN0dXJlX3ByaXZhdGU7 CisKKyAgICBpbnQgaW5kZXg7CisgICAgdWludDhfdCAqbWFwcGVkX2RhdGE7CisKKyAgICBEM0Qx Ml9WSURFT19ERUNPREVfRlJBTUVfQVJHVU1FTlQgKmFyZ3MgPSAmaW5wdXRfYXJncy0+RnJhbWVB cmd1bWVudHNbaW5wdXRfYXJncy0+TnVtRnJhbWVBcmd1bWVudHMrK107CisgICAgYXJncy0+VHlw ZSAgPSBEM0QxMl9WSURFT19ERUNPREVfQVJHVU1FTlRfVFlQRV9TTElDRV9DT05UUk9MOworICAg IGFyZ3MtPlNpemUgID0gc2l6ZW9mKERYVkFfVGlsZV9BVjEpICogY3R4X3BpYy0+dGlsZV9jb3Vu dDsKKyAgICBhcmdzLT5wRGF0YSA9IGN0eF9waWMtPnRpbGVzOworCisgICAgaW5wdXRfYXJncy0+ Q29tcHJlc3NlZEJpdHN0cmVhbSA9IChEM0QxMl9WSURFT19ERUNPREVfQ09NUFJFU1NFRF9CSVRT VFJFQU0peworICAgICAgICAucEJ1ZmZlciA9IGJ1ZmZlciwKKyAgICAgICAgLk9mZnNldCAgPSAw LAorICAgICAgICAuU2l6ZSAgICA9IGN0eF9waWMtPmJpdHN0cmVhbV9zaXplLAorICAgIH07CisK KyAgICBpZiAoRkFJTEVEKElEM0QxMlJlc291cmNlX01hcChidWZmZXIsIDAsIE5VTEwsICZtYXBw ZWRfZGF0YSkpKSB7CisgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVk IHRvIG1hcCBEM0QxMiBCdWZmZXIgcmVzb3VyY2UhXG4iKTsKKyAgICAgICAgcmV0dXJuIEFWRVJS T1IoRUlOVkFMKTsKKyAgICB9CisKKyAgICBtZW1jcHkobWFwcGVkX2RhdGEsIGN0eF9waWMtPmJp dHN0cmVhbSwgY3R4X3BpYy0+Yml0c3RyZWFtX3NpemUpOworCisgICAgSUQzRDEyUmVzb3VyY2Vf VW5tYXAoYnVmZmVyLCAwLCBOVUxMKTsKKworICAgIGluZGV4ID0gY3R4X3BpYy0+cHAuQ3VyclBp Y1RleHR1cmVJbmRleDsKKyAgICBjdHgtPnJlZl9yZXNvdXJjZXNbaW5kZXhdID0gZnJhbWVzX2h3 Y3R4LT50ZXh0dXJlX2luZm9zW2luZGV4XS50ZXh0dXJlOworCisgICAgZm9yIChpbnQgaSA9IDA7 IGkgPCBGRl9BUlJBWV9FTEVNUyhjdHhfcGljLT5wcC5SZWZGcmFtZU1hcFRleHR1cmVJbmRleCk7 IGkrKykgeworICAgICAgICBpbmRleCA9IGN0eF9waWMtPnBwLlJlZkZyYW1lTWFwVGV4dHVyZUlu ZGV4W2ldOworICAgICAgICBpZiAoaW5kZXggIT0gMHhGRikKKyAgICAgICAgICAgIGN0eC0+cmVm X3Jlc291cmNlc1tpbmRleF0gPSBmcmFtZXNfaHdjdHgtPnRleHR1cmVfaW5mb3NbaW5kZXhdLnRl eHR1cmU7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZDNkMTJkZWNf YXYxX2VuZF9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgpCit7CisgICAgaW50IHJldDsKKyAg ICBjb25zdCBBVjFEZWNDb250ZXh0ICAgICAqaCAgICAgICA9IGF2Y3R4LT5wcml2X2RhdGE7Cisg ICAgRDNEMTJWQURlY29kZUNvbnRleHQgICAgKmN0eCAgICAgPSBEM0QxMlZBX0RFQ09ERV9DT05U RVhUKGF2Y3R4KTsKKyAgICBBVjFEZWNvZGVQaWN0dXJlQ29udGV4dCAqY3R4X3BpYyA9IGgtPmN1 cl9mcmFtZS5od2FjY2VsX3BpY3R1cmVfcHJpdmF0ZTsKKworICAgIGlmIChjdHhfcGljLT50aWxl cyA8PSAwIHx8IGN0eF9waWMtPmJpdHN0cmVhbV9zaXplIDw9IDApCisgICAgICAgIHJldHVybiAt MTsKKworICAgIHJldCA9IGZmX2QzZDEyZGVjX2NvbW1vbl9lbmRfZnJhbWUoYXZjdHgsIGgtPmN1 cl9mcmFtZS5mLCAmY3R4X3BpYy0+cHAsIHNpemVvZihjdHhfcGljLT5wcCksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDAsIHVwZGF0ZV9pbnB1dF9hcmd1bWVu dHMpOworCisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBkM2QxMmRlY19hdjFfZGVj b2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQoreworICAgIGNvbnN0IEFWMURlY0NvbnRl eHQgICAgICpoICAgICAgID0gYXZjdHgtPnByaXZfZGF0YTsKKyAgICBEM0QxMlZBRGVjb2RlQ29u dGV4dCAgICAqY3R4ICAgICA9IEQzRDEyVkFfREVDT0RFX0NPTlRFWFQoYXZjdHgpOworICAgIEQz RDEyQVYxRGVjb2RlQ29udGV4dCAgICphdjFfY3R4ID0gRDNEMTJfQVYxX0RFQ09ERV9DT05URVhU KGF2Y3R4KTsKKyAgICBBVjFEZWNvZGVQaWN0dXJlQ29udGV4dCAqY3R4X3BpYyA9IGgtPmN1cl9m cmFtZS5od2FjY2VsX3BpY3R1cmVfcHJpdmF0ZTsKKworICAgIGludCByZXQ7CisKKyAgICBpZiAo YXZjdHgtPnByb2ZpbGUgIT0gRkZfUFJPRklMRV9BVjFfTUFJTikKKyAgICAgICAgcmV0dXJuIEFW RVJST1IoRUlOVkFMKTsKKworICAgIGN0eC0+Y2ZnLkRlY29kZVByb2ZpbGUgPSBEM0QxMl9WSURF T19ERUNPREVfUFJPRklMRV9BVjFfUFJPRklMRTA7CisKKyAgICByZXQgPSBmZl9kM2QxMmRlY19k ZWNvZGVfaW5pdChhdmN0eCk7CisgICAgaWYgKHJldCA8IDApCisgICAgICAgIHJldHVybiByZXQ7 CisKKyAgICBpZiAoIWF2MV9jdHgtPmJpdHN0cmVhbV9idWZmZXIpIHsKKyAgICAgICAgYXYxX2N0 eC0+Yml0c3RyZWFtX2J1ZmZlciA9IGF2X21hbGxvYyhmZl9kM2QxMmRlY19nZXRfc3VpdGFibGVf bWF4X2JpdHN0cmVhbV9zaXplKGF2Y3R4KSk7CisgICAgICAgIGlmICghYXYxX2N0eC0+Yml0c3Ry ZWFtX2J1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CisgICAgfQor CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZDNkMTJkZWNfYXYxX2RlY29kZV91bmlu aXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQoreworICAgIGNvbnN0IEFWMURlY0NvbnRleHQgICAg ICpoICAgICAgID0gYXZjdHgtPnByaXZfZGF0YTsKKyAgICBEM0QxMkFWMURlY29kZUNvbnRleHQg ICAqY3R4ICAgICA9IEQzRDEyX0FWMV9ERUNPREVfQ09OVEVYVChhdmN0eCk7CisgICAgQVYxRGVj b2RlUGljdHVyZUNvbnRleHQgKmN0eF9waWMgPSBoLT5jdXJfZnJhbWUuaHdhY2NlbF9waWN0dXJl X3ByaXZhdGU7CisKKyAgICBpZiAoY3R4LT5iaXRzdHJlYW1fYnVmZmVyKQorICAgICAgICBhdl9m cmVlcCgmY3R4LT5iaXRzdHJlYW1fYnVmZmVyKTsKKworICAgIHJldHVybiBmZl9kM2QxMmRlY19k ZWNvZGVfdW5pbml0KGF2Y3R4KTsKK30KKworI2lmIENPTkZJR19BVjFfRDNEMTJERUNfSFdBQ0NF TAorY29uc3QgQVZIV0FjY2VsIGZmX2F2MV9kM2QxMmRlY19od2FjY2VsID0geworICAgIC5uYW1l ICAgICAgICAgICAgICAgICA9ICJhdjFfZDNkMTJkZWMiLAorICAgIC50eXBlICAgICAgICAgICAg ICAgICA9IEFWTUVESUFfVFlQRV9WSURFTywKKyAgICAuaWQgICAgICAgICAgICAgICAgICAgPSBB Vl9DT0RFQ19JRF9BVjEsCisgICAgLnBpeF9mbXQgICAgICAgICAgICAgID0gQVZfUElYX0ZNVF9E M0QxMiwKKyAgICAuaW5pdCAgICAgICAgICAgICAgICAgPSBkM2QxMmRlY19hdjFfZGVjb2RlX2lu aXQsCisgICAgLnVuaW5pdCAgICAgICAgICAgICAgID0gZDNkMTJkZWNfYXYxX2RlY29kZV91bmlu aXQsCisgICAgLnN0YXJ0X2ZyYW1lICAgICAgICAgID0gZDNkMTJkZWNfYXYxX3N0YXJ0X2ZyYW1l LAorICAgIC5kZWNvZGVfc2xpY2UgICAgICAgICA9IGQzZDEyZGVjX2F2MV9kZWNvZGVfc2xpY2Us CisgICAgLmVuZF9mcmFtZSAgICAgICAgICAgID0gZDNkMTJkZWNfYXYxX2VuZF9mcmFtZSwKKyAg ICAuZnJhbWVfcGFyYW1zICAgICAgICAgPSBmZl9kM2QxMmRlY19jb21tb25fZnJhbWVfcGFyYW1z LAorICAgIC5mcmFtZV9wcml2X2RhdGFfc2l6ZSA9IHNpemVvZihBVjFEZWNvZGVQaWN0dXJlQ29u dGV4dCksCisgICAgLnByaXZfZGF0YV9zaXplICAgICAgID0gc2l6ZW9mKEQzRDEyQVYxRGVjb2Rl Q29udGV4dCksCit9OworI2VuZGlmCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2h3YWNjZWxzLmgg Yi9saWJhdmNvZGVjL2h3YWNjZWxzLmgKaW5kZXggYTM2ZDEzODUzOC4uZWE2MjI0Y2NmOSAxMDA2 NDQKLS0tIGEvbGliYXZjb2RlYy9od2FjY2Vscy5oCisrKyBiL2xpYmF2Y29kZWMvaHdhY2NlbHMu aApAQCAtMjMsNiArMjMsNyBAQAogCiBleHRlcm4gY29uc3QgQVZIV0FjY2VsIGZmX2F2MV9kM2Qx MXZhX2h3YWNjZWw7CiBleHRlcm4gY29uc3QgQVZIV0FjY2VsIGZmX2F2MV9kM2QxMXZhMl9od2Fj Y2VsOworZXh0ZXJuIGNvbnN0IEFWSFdBY2NlbCBmZl9hdjFfZDNkMTJkZWNfaHdhY2NlbDsKIGV4 dGVybiBjb25zdCBBVkhXQWNjZWwgZmZfYXYxX2R4dmEyX2h3YWNjZWw7CiBleHRlcm4gY29uc3Qg QVZIV0FjY2VsIGZmX2F2MV9udmRlY19od2FjY2VsOwogZXh0ZXJuIGNvbnN0IEFWSFdBY2NlbCBm Zl9hdjFfdmFhcGlfaHdhY2NlbDsKLS0gCjIuMzIuMAoK --_009_OSZP286MB217328A12BC439F5BB31897DCAE99OSZP286MB2173JPNP_ Content-Type: application/octet-stream; name="0006-Changelog-add-D3D12VA-hardware-accelerated-H264-HEVC.patch" Content-Description: 0006-Changelog-add-D3D12VA-hardware-accelerated-H264-HEVC.patch Content-Disposition: attachment; filename="0006-Changelog-add-D3D12VA-hardware-accelerated-H264-HEVC.patch"; size=1215; creation-date="Fri, 23 Dec 2022 17:45:07 GMT"; modification-date="Fri, 23 Dec 2022 18:00:31 GMT" Content-Transfer-Encoding: base64 RnJvbSA3MTg4MDMxYWNlNTMyZmE4MjFhN2FmYzcyMDI4YjIwNWVjZjYyMzRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBXdSBKaWFuaHVhIDx0b3FzeHdAb3V0bG9vay5jb20+CkRhdGU6 IFNhdCwgMTcgRGVjIDIwMjIgMDI6NDI6NTAgKzA4MDAKU3ViamVjdDogW1BBVENIIDYvNl0gQ2hh bmdlbG9nOiBhZGQgRDNEMTJWQSBoYXJkd2FyZSBhY2NlbGVyYXRlZCBIMjY0LCBIRVZDLAogVlA5 LCBhbmQgQVYxIGRlY29kaW5nCgpTaWduZWQtb2ZmLWJ5OiBXdSBKaWFuaHVhIDx0b3FzeHdAb3V0 bG9vay5jb20+Ci0tLQogQ2hhbmdlbG9nICAgICAgICAgICAgfCAxICsKIGxpYmF2Y29kZWMvdmVy c2lvbi5oIHwgNCArKy0tCiAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9DaGFuZ2Vsb2cgYi9DaGFuZ2Vsb2cKaW5kZXggZjNhNmFi YjljZC4uODE2ODAwOTFhMyAxMDA2NDQKLS0tIGEvQ2hhbmdlbG9nCisrKyBiL0NoYW5nZWxvZwpA QCAtMjgsNiArMjgsNyBAQCB2ZXJzaW9uIDxuZXh0PjoKIC0gc2hvd2N3dCBtdWx0aW1lZGlhIGZp bHRlcgogLSBjb3JyIHZpZGVvIGZpbHRlcgogLSBhZHJjIGF1ZGlvIGZpbHRlcgorLSBEM0QxMlZB IGhhcmR3YXJlIGFjY2VsZXJhdGVkIEgyNjQsIEhFVkMsIFZQOSBhbmQgQVYxIGRlY29kaW5nCiAK IAogdmVyc2lvbiA1LjE6CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3ZlcnNpb24uaCBiL2xpYmF2 Y29kZWMvdmVyc2lvbi5oCmluZGV4IGViOTVhMGY4MjcuLjZiOGExZGJiNzkgMTAwNjQ0Ci0tLSBh L2xpYmF2Y29kZWMvdmVyc2lvbi5oCisrKyBiL2xpYmF2Y29kZWMvdmVyc2lvbi5oCkBAIC0yOSw4 ICsyOSw4IEBACiAKICNpbmNsdWRlICJ2ZXJzaW9uX21ham9yLmgiCiAKLSNkZWZpbmUgTElCQVZD T0RFQ19WRVJTSU9OX01JTk9SICA1NQotI2RlZmluZSBMSUJBVkNPREVDX1ZFUlNJT05fTUlDUk8g MTAzCisjZGVmaW5lIExJQkFWQ09ERUNfVkVSU0lPTl9NSU5PUiAgNTYKKyNkZWZpbmUgTElCQVZD T0RFQ19WRVJTSU9OX01JQ1JPIDEwMAogCiAjZGVmaW5lIExJQkFWQ09ERUNfVkVSU0lPTl9JTlQg IEFWX1ZFUlNJT05fSU5UKExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiwgXAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJBVkNPREVDX1ZFUlNJT05fTUlO T1IsIFwKLS0gCjIuMzIuMAoK --_009_OSZP286MB217328A12BC439F5BB31897DCAE99OSZP286MB2173JPNP_ Content-Type: application/octet-stream; name="0001-libavutil-add-hwcontext_d3d12va-and-AV_PIX_FMT_D3D12.patch" Content-Description: 0001-libavutil-add-hwcontext_d3d12va-and-AV_PIX_FMT_D3D12.patch Content-Disposition: attachment; filename="0001-libavutil-add-hwcontext_d3d12va-and-AV_PIX_FMT_D3D12.patch"; size=40484; creation-date="Fri, 23 Dec 2022 17:45:07 GMT"; modification-date="Fri, 23 Dec 2022 18:00:31 GMT" Content-Transfer-Encoding: base64 RnJvbSAzZGM3YjMwNGE5NmY2ZjliYWU5NjRiMjhkNTA1ZDFkMzhkZWI0MmExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBXdSBKaWFuaHVhIDx0b3FzeHdAb3V0bG9vay5jb20+CkRhdGU6 IFRodSwgMTUgRGVjIDIwMjIgMjI6NTE6MjIgKzA4MDAKU3ViamVjdDogW1BBVENIIDEvNl0gbGli YXZ1dGlsOiBhZGQgaHdjb250ZXh0X2QzZDEydmEgYW5kIEFWX1BJWF9GTVRfRDNEMTIKClNpZ25l ZC1vZmYtYnk6IFd1IEppYW5odWEgPHRvcXN4d0BvdXRsb29rLmNvbT4KLS0tCiBjb25maWd1cmUg ICAgICAgICAgICAgICAgICAgICAgfCAgIDUgKwogZG9jL0FQSWNoYW5nZXMgICAgICAgICAgICAg ICAgIHwgICA4ICsKIGxpYmF2dXRpbC9NYWtlZmlsZSAgICAgICAgICAgICB8ICAgMyArCiBsaWJh dnV0aWwvaHdjb250ZXh0LmMgICAgICAgICAgfCAgIDQgKwogbGliYXZ1dGlsL2h3Y29udGV4dC5o ICAgICAgICAgIHwgICAxICsKIGxpYmF2dXRpbC9od2NvbnRleHRfZDNkMTJ2YS5jICB8IDY5NiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGxpYmF2dXRpbC9od2NvbnRleHRfZDNk MTJ2YS5oICB8IDIyOSArKysrKysrKysrKwogbGliYXZ1dGlsL2h3Y29udGV4dF9pbnRlcm5hbC5o IHwgICAxICsKIGxpYmF2dXRpbC9waXhkZXNjLmMgICAgICAgICAgICB8ICAgNCArCiBsaWJhdnV0 aWwvcGl4Zm10LmggICAgICAgICAgICAgfCAgIDkgKwogbGliYXZ1dGlsL3Rlc3RzL2h3ZGV2aWNl LmMgICAgIHwgICAyICsKIGxpYmF2dXRpbC92ZXJzaW9uLmggICAgICAgICAgICB8ICAgMiArLQog MTIgZmlsZXMgY2hhbmdlZCwgOTYzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBsaWJhdnV0aWwvaHdjb250ZXh0X2QzZDEydmEuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IGxpYmF2dXRpbC9od2NvbnRleHRfZDNkMTJ2YS5oCgpkaWZmIC0tZ2l0IGEvY29uZmln dXJlIGIvY29uZmlndXJlCmluZGV4IGYwOGNkYWIzZDEuLjdjYWJhOGFlNzEgMTAwNzU1Ci0tLSBh L2NvbmZpZ3VyZQorKysgYi9jb25maWd1cmUKQEAgLTMzNyw2ICszMzcsNyBAQCBFeHRlcm5hbCBs aWJyYXJ5IHN1cHBvcnQ6CiAgIC0tZGlzYWJsZS1jdWRhLWxsdm0gICAgICBkaXNhYmxlIENVREEg Y29tcGlsYXRpb24gdXNpbmcgY2xhbmcgW2F1dG9kZXRlY3RdCiAgIC0tZGlzYWJsZS1jdXZpZCAg ICAgICAgICBkaXNhYmxlIE52aWRpYSBDVVZJRCBzdXBwb3J0IFthdXRvZGV0ZWN0XQogICAtLWRp c2FibGUtZDNkMTF2YSAgICAgICAgZGlzYWJsZSBNaWNyb3NvZnQgRGlyZWN0M0QgMTEgdmlkZW8g YWNjZWxlcmF0aW9uIGNvZGUgW2F1dG9kZXRlY3RdCisgIC0tZGlzYWJsZS1kM2QxMnZhICAgICAg ICBkaXNhYmxlIE1pY3Jvc29mdCBEaXJlY3QzRCAxMiB2aWRlbyBhY2NlbGVyYXRpb24gY29kZSBb YXV0b2RldGVjdF0KICAgLS1kaXNhYmxlLWR4dmEyICAgICAgICAgIGRpc2FibGUgTWljcm9zb2Z0 IERpcmVjdFggOSB2aWRlbyBhY2NlbGVyYXRpb24gY29kZSBbYXV0b2RldGVjdF0KICAgLS1kaXNh YmxlLWZmbnZjb2RlYyAgICAgIGRpc2FibGUgZHluYW1pY2FsbHkgbGlua2VkIE52aWRpYSBjb2Rl IFthdXRvZGV0ZWN0XQogICAtLWVuYWJsZS1saWJkcm0gICAgICAgICAgZW5hYmxlIERSTSBjb2Rl IChMaW51eCkgW25vXQpAQCAtMTg4Myw2ICsxODg0LDcgQEAgSFdBQ0NFTF9BVVRPREVURUNUX0xJ QlJBUllfTElTVD0iCiAgICAgY3VkYV9sbHZtCiAgICAgY3V2aWQKICAgICBkM2QxMXZhCisgICAg ZDNkMTJ2YQogICAgIGR4dmEyCiAgICAgZmZudmNvZGVjCiAgICAgbnZkZWMKQEAgLTI5OTUsNiAr Mjk5Nyw3IEBAIGNyeXN0YWxoZF9kZXBzPSJsaWJjcnlzdGFsaGRfbGliY3J5c3RhbGhkX2lmX2gi CiBjdWRhX2RlcHM9ImZmbnZjb2RlYyIKIGN1dmlkX2RlcHM9ImZmbnZjb2RlYyIKIGQzZDExdmFf ZGVwcz0iZHh2YV9oIElEM0QxMVZpZGVvRGVjb2RlciBJRDNEMTFWaWRlb0NvbnRleHQiCitkM2Qx MnZhX2RlcHM9ImR4dmFfaCBJRDNEMTJEZXZpY2UgSUQzRDEyVmlkZW9EZWNvZGVyIgogZHh2YTJf ZGVwcz0iZHh2YTJhcGlfaCBEWFZBMl9Db25maWdQaWN0dXJlRGVjb2RlIG9sZTMyIHVzZXIzMiIK IGZmbnZjb2RlY19kZXBzX2FueT0ibGliZGwgTG9hZExpYnJhcnkiCiBudmRlY19kZXBzPSJmZm52 Y29kZWMiCkBAIC02NDIwLDYgKzY0MjMsOCBAQCBjaGVja190eXBlICJ3aW5kb3dzLmggZHhnaTFf Mi5oIiAiSURYR0lPdXRwdXQxIgogY2hlY2tfdHlwZSAid2luZG93cy5oIGR4Z2kxXzUuaCIgIklE WEdJT3V0cHV0NSIKIGNoZWNrX3R5cGUgIndpbmRvd3MuaCBkM2QxMS5oIiAiSUQzRDExVmlkZW9E ZWNvZGVyIgogY2hlY2tfdHlwZSAid2luZG93cy5oIGQzZDExLmgiICJJRDNEMTFWaWRlb0NvbnRl eHQiCitjaGVja190eXBlICJ3aW5kb3dzLmggZDNkMTIuaCIgIklEM0QxMkRldmljZSIKK2NoZWNr X3R5cGUgIndpbmRvd3MuaCBkM2QxMnZpZGVvLmgiICJJRDNEMTJWaWRlb0RlY29kZXIiCiBjaGVj a190eXBlICJ3aW5kb3dzLmgiICJEUElfQVdBUkVORVNTX0NPTlRFWFQiIC1EX1dJTjMyX1dJTk5U PTB4MEEwMAogY2hlY2tfdHlwZSAiZDNkOS5oIGR4dmEyYXBpLmgiIERYVkEyX0NvbmZpZ1BpY3R1 cmVEZWNvZGUgLURfV0lOMzJfV0lOTlQ9MHgwNjAyCiBjaGVja19mdW5jX2hlYWRlcnMgbWZhcGku aCBNRkNyZWF0ZUFsaWduZWRNZW1vcnlCdWZmZXIgLWxtZnBsYXQKZGlmZiAtLWdpdCBhL2RvYy9B UEljaGFuZ2VzIGIvZG9jL0FQSWNoYW5nZXMKaW5kZXggMzI4MDI4ZjI5My4uMGVjNDFlODc2YyAx MDA2NDQKLS0tIGEvZG9jL0FQSWNoYW5nZXMKKysrIGIvZG9jL0FQSWNoYW5nZXMKQEAgLTE0LDYg KzE0LDE0IEBAIGxpYmF2dXRpbDogICAgIDIwMjEtMDQtMjcKIAogQVBJIGNoYW5nZXMsIG1vc3Qg cmVjZW50IGZpcnN0OgogCisyMDIyLTEyLXh4IC0geHh4eHh4eHh4eCAtIGxhdnUgNTcuNDQuMTAw IC0gcGl4Zm10LmggaHdjb250ZXh0LmggaHdjb250ZXh0X2QzZDEydmEuaAorICBBZGQgQVZfSFdE RVZJQ0VfVFlQRV9EM0QxMlZBIGFuZCBBVl9QSVhfRk1UX0QzRDEyLgorICBBZGQgQVZEM0QxMlZB RGV2aWNlQ29udGV4dCwgQVZEM0QxMlZBU3luY0NvbnRleHQsIEFWRDNEMTJGcmFtZURlc2NyaXB0 b3IsCisgIGFuZCBBVkQzRDEyVkFGcmFtZXNDb250ZXh0LgorICBBZGQgYXZfZDNkMTJ2YV9tYXBf c3dfdG9faHdfZm9ybWF0LCBhdl9kM2QxMnZhX2NyZWF0ZV9zeW5jX2NvbnRleHQsCisgIGF2X2Qz ZDEydmFfcmVsZWFzZV9zeW5jX2NvbnRleHQsIGF2X2QzZDEydmFfd2FpdF9mb3JfZmVuY2VfdmFs dWUsCisgIGF2X2QzZDEydmFfd2FpdF9pZGxlIGFuZCBhdl9kM2QxMnZhX3dhaXRfcXVldWVfaWRs ZS4KKwogMjAyMi0xMi14eCAtIHh4eHh4eHh4eHggLSBsYXZjIDU5LjU1LjEwMCAtIGF2Y29kZWMu aAogICBBZGQgQVZfSFdBQ0NFTF9GTEFHX1VOU0FGRV9PVVRQVVQuCiAKZGlmZiAtLWdpdCBhL2xp YmF2dXRpbC9NYWtlZmlsZSBiL2xpYmF2dXRpbC9NYWtlZmlsZQppbmRleCAzZDljMDdhZWE4Li4x MjFkODdlOWE1IDEwMDY0NAotLS0gYS9saWJhdnV0aWwvTWFrZWZpbGUKKysrIGIvbGliYXZ1dGls L01ha2VmaWxlCkBAIC00MCw2ICs0MCw3IEBAIEhFQURFUlMgPSBhZGxlcjMyLmggICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICBo d2NvbnRleHQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKICAgICAgICAgICBod2NvbnRleHRfY3VkYS5oICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICBod2NvbnRleHRfZDNkMTF2YS5oICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBod2Nv bnRleHRfZDNkMTJ2YS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKICAgICAgICAgICBod2NvbnRleHRfZHJtLmggICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICBod2NvbnRleHRfZHh2YTIuaCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICBod2NvbnRl eHRfcXN2LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK QEAgLTE4NSw2ICsxODYsNyBAQCBPQkpTID0gYWRsZXIzMi5vICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAKIE9CSlMtJChDT05GSUdfQ1VE QSkgICAgICAgICAgICAgICAgICAgICArPSBod2NvbnRleHRfY3VkYS5vCiBPQkpTLSQoQ09ORklH X0QzRDExVkEpICAgICAgICAgICAgICAgICAgKz0gaHdjb250ZXh0X2QzZDExdmEubworT0JKUy0k KENPTkZJR19EM0QxMlZBKSAgICAgICAgICAgICAgICAgICs9IGh3Y29udGV4dF9kM2QxMnZhLm8K IE9CSlMtJChDT05GSUdfRFhWQTIpICAgICAgICAgICAgICAgICAgICArPSBod2NvbnRleHRfZHh2 YTIubwogT0JKUy0kKENPTkZJR19MSUJEUk0pICAgICAgICAgICAgICAgICAgICs9IGh3Y29udGV4 dF9kcm0ubwogT0JKUy0kKENPTkZJR19NQUNPU19LUEVSRikgICAgICAgICAgICAgICs9IG1hY29z X2twZXJmLm8KQEAgLTIwOCw2ICsyMTAsNyBAQCBTS0lQSEVBREVSUy0kKEhBVkVfQ1VEQV9IKSAg ICAgICAgICAgICArPSBod2NvbnRleHRfY3VkYS5oCiBTS0lQSEVBREVSUy0kKENPTkZJR19DVURB KSAgICAgICAgICAgICArPSBod2NvbnRleHRfY3VkYV9pbnRlcm5hbC5oICAgICBcCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdWRhX2NoZWNrLmgKIFNLSVBIRUFE RVJTLSQoQ09ORklHX0QzRDExVkEpICAgICAgICAgICs9IGh3Y29udGV4dF9kM2QxMXZhLmgKK1NL SVBIRUFERVJTLSQoQ09ORklHX0QzRDEyVkEpICAgICAgICAgICs9IGh3Y29udGV4dF9kM2QxMnZh LmgKIFNLSVBIRUFERVJTLSQoQ09ORklHX0RYVkEyKSAgICAgICAgICAgICs9IGh3Y29udGV4dF9k eHZhMi5oCiBTS0lQSEVBREVSUy0kKENPTkZJR19RU1YpICAgICAgICAgICAgICArPSBod2NvbnRl eHRfcXN2LmgKIFNLSVBIRUFERVJTLSQoQ09ORklHX09QRU5DTCkgICAgICAgICAgICs9IGh3Y29u dGV4dF9vcGVuY2wuaApkaWZmIC0tZ2l0IGEvbGliYXZ1dGlsL2h3Y29udGV4dC5jIGIvbGliYXZ1 dGlsL2h3Y29udGV4dC5jCmluZGV4IDMzOTY1OTgyNjkuLjA0MDcwYmMzYzMgMTAwNjQ0Ci0tLSBh L2xpYmF2dXRpbC9od2NvbnRleHQuYworKysgYi9saWJhdnV0aWwvaHdjb250ZXh0LmMKQEAgLTM2 LDYgKzM2LDkgQEAgc3RhdGljIGNvbnN0IEhXQ29udGV4dFR5cGUgKiBjb25zdCBod190YWJsZVtd ID0gewogI2lmIENPTkZJR19EM0QxMVZBCiAgICAgJmZmX2h3Y29udGV4dF90eXBlX2QzZDExdmEs CiAjZW5kaWYKKyNpZiBDT05GSUdfRDNEMTJWQQorICAgICZmZl9od2NvbnRleHRfdHlwZV9kM2Qx MnZhLAorI2VuZGlmCiAjaWYgQ09ORklHX0xJQkRSTQogICAgICZmZl9od2NvbnRleHRfdHlwZV9k cm0sCiAjZW5kaWYKQEAgLTcxLDYgKzc0LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IGh3 X3R5cGVfbmFtZXNbXSA9IHsKICAgICBbQVZfSFdERVZJQ0VfVFlQRV9EUk1dICAgID0gImRybSIs CiAgICAgW0FWX0hXREVWSUNFX1RZUEVfRFhWQTJdICA9ICJkeHZhMiIsCiAgICAgW0FWX0hXREVW SUNFX1RZUEVfRDNEMTFWQV0gPSAiZDNkMTF2YSIsCisgICAgW0FWX0hXREVWSUNFX1RZUEVfRDNE MTJWQV0gPSAiZDNkMTJ2YSIsCiAgICAgW0FWX0hXREVWSUNFX1RZUEVfT1BFTkNMXSA9ICJvcGVu Y2wiLAogICAgIFtBVl9IV0RFVklDRV9UWVBFX1FTVl0gICAgPSAicXN2IiwKICAgICBbQVZfSFdE RVZJQ0VfVFlQRV9WQUFQSV0gID0gInZhYXBpIiwKZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC9od2Nv bnRleHQuaCBiL2xpYmF2dXRpbC9od2NvbnRleHQuaAppbmRleCA3ZmYwOGM4NjA4Li42OTFjNDkw ODdjIDEwMDY0NAotLS0gYS9saWJhdnV0aWwvaHdjb250ZXh0LmgKKysrIGIvbGliYXZ1dGlsL2h3 Y29udGV4dC5oCkBAIC0zMyw2ICszMyw3IEBAIGVudW0gQVZIV0RldmljZVR5cGUgewogICAgIEFW X0hXREVWSUNFX1RZUEVfUVNWLAogICAgIEFWX0hXREVWSUNFX1RZUEVfVklERU9UT09MQk9YLAog ICAgIEFWX0hXREVWSUNFX1RZUEVfRDNEMTFWQSwKKyAgICBBVl9IV0RFVklDRV9UWVBFX0QzRDEy VkEsCiAgICAgQVZfSFdERVZJQ0VfVFlQRV9EUk0sCiAgICAgQVZfSFdERVZJQ0VfVFlQRV9PUEVO Q0wsCiAgICAgQVZfSFdERVZJQ0VfVFlQRV9NRURJQUNPREVDLApkaWZmIC0tZ2l0IGEvbGliYXZ1 dGlsL2h3Y29udGV4dF9kM2QxMnZhLmMgYi9saWJhdnV0aWwvaHdjb250ZXh0X2QzZDEydmEuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi45NGZiMTcyYjRiCi0tLSAvZGV2 L251bGwKKysrIGIvbGliYXZ1dGlsL2h3Y29udGV4dF9kM2QxMnZhLmMKQEAgLTAsMCArMSw2OTYg QEAKKy8qCisgKiBEaXJlY3QzRCAxMiBIVyBhY2NlbGVyYXRpb24uCisgKgorICogY29weXJpZ2h0 IChjKSAyMDIyIFd1IEppYW5odWEgPHRvcXN4d0BvdXRsb29rLmNvbT4KKyAqCisgKiBUaGlzIGZp bGUgaXMgcGFydCBvZiBGRm1wZWcuCisgKgorICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIu MSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K KyAqCisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFs b25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBG b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24s IE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg ImNvbW1vbi5oIgorI2luY2x1ZGUgImh3Y29udGV4dC5oIgorI2luY2x1ZGUgImh3Y29udGV4dF9k M2QxMnZhLmgiCisjaW5jbHVkZSAiaHdjb250ZXh0X2ludGVybmFsLmgiCisjaW5jbHVkZSAiaW1n dXRpbHMuaCIKKyNpbmNsdWRlICJwaXhkZXNjLmgiCisjaW5jbHVkZSAicGl4Zm10LmgiCisjaW5j bHVkZSAidGhyZWFkLmgiCisjaW5jbHVkZSAiY29tcGF0L3czMmRsZmNuLmgiCisjaW5jbHVkZSA8 ZHhnaTFfMy5oPgorCit0eXBlZGVmIEhSRVNVTFQoV0lOQVBJICpQRk5fQ1JFQVRFX0RYR0lfRkFD VE9SWTIpKFVJTlQgRmxhZ3MsIFJFRklJRCByaWlkLCB2b2lkICoqcHBGYWN0b3J5KTsKKworc3Rh dGljIEFWT25jZSBmdW5jdGlvbnNfbG9hZGVkID0gQVZfT05DRV9JTklUOworCitzdGF0aWMgUEZO X0NSRUFURV9EWEdJX0ZBQ1RPUlkyIGQzZDEydmFfY3JlYXRlX2R4Z2lfZmFjdG9yeTI7CitzdGF0 aWMgUEZOX0QzRDEyX0NSRUFURV9ERVZJQ0UgZDNkMTJ2YV9jcmVhdGVfZGV2aWNlOworc3RhdGlj IFBGTl9EM0QxMl9HRVRfREVCVUdfSU5URVJGQUNFIGQzZDEydmFfZ2V0X2RlYnVnX2ludGVyZmFj ZTsKKworc3RhdGljIGF2X2NvbGQgdm9pZCBsb2FkX2Z1bmN0aW9ucyh2b2lkKQoreworICAgIEhB TkRMRSBkM2RsaWIsIGR4Z2lsaWI7CisKKyAgICBkM2RsaWIgID0gZGxvcGVuKCJkM2QxMi5kbGwi LCAwKTsKKyAgICBkeGdpbGliID0gZGxvcGVuKCJkeGdpLmRsbCIsIDApOworICAgIGlmICghZDNk bGliIHx8ICFkeGdpbGliKQorICAgICAgICByZXR1cm47CisKKyAgICBkM2QxMnZhX2NyZWF0ZV9k ZXZpY2UgPSAoUEZOX0QzRDEyX0NSRUFURV9ERVZJQ0UpR2V0UHJvY0FkZHJlc3MoZDNkbGliLCAi RDNEMTJDcmVhdGVEZXZpY2UiKTsKKyAgICBkM2QxMnZhX2NyZWF0ZV9keGdpX2ZhY3RvcnkyID0g KFBGTl9DUkVBVEVfRFhHSV9GQUNUT1JZMilHZXRQcm9jQWRkcmVzcyhkeGdpbGliLCAiQ3JlYXRl RFhHSUZhY3RvcnkyIik7CisgICAgZDNkMTJ2YV9nZXRfZGVidWdfaW50ZXJmYWNlID0gKFBGTl9E M0QxMl9HRVRfREVCVUdfSU5URVJGQUNFKUdldFByb2NBZGRyZXNzKGQzZGxpYiwgIkQzRDEyR2V0 RGVidWdJbnRlcmZhY2UiKTsKK30KKwordHlwZWRlZiBzdHJ1Y3QgRDNEMTJWQUZyYW1lc0NvbnRl eHQgeworICAgIElEM0QxMlJlc291cmNlICAgICAgICAgICAgKnN0YWdpbmdfYnVmZmVyOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBJRDNEMTJDb21tYW5kUXVldWUgICAgICAgICpj b21tYW5kX3F1ZXVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBJRDNEMTJDb21t YW5kQWxsb2NhdG9yICAgICpjb21tYW5kX2FsbG9jYXRvcjsKKyAgICBJRDNEMTJHcmFwaGljc0Nv bW1hbmRMaXN0ICpjb21tYW5kX2xpc3Q7CisgICAgQVZEM0QxMlZBU3luY0NvbnRleHQgICAgICAq c3luY19jdHg7CisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgbmJfc3VyZmFjZXM7Cisg ICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgbmJfc3VyZmFjZXNfdXNlZDsKKyAgICBEWEdJ X0ZPUk1BVCAgICAgICAgICAgICAgICBmb3JtYXQ7CisgICAgVUlOVCAgICAgICAgICAgICAgICAg ICAgICAgbHVtYV9jb21wb25lbnRfc2l6ZTsKK30gRDNEMTJWQUZyYW1lc0NvbnRleHQ7CisKK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgeworICAgIERYR0lfRk9STUFUIGQzZF9mb3JtYXQ7CisgICAgZW51 bSBBVlBpeGVsRm9ybWF0IHBpeF9mbXQ7Cit9IHN1cHBvcnRlZF9mb3JtYXRzW10gPSB7CisgICAg eyBEWEdJX0ZPUk1BVF9OVjEyLCBBVl9QSVhfRk1UX05WMTIgfSwKKyAgICB7IERYR0lfRk9STUFU X1AwMTAsIEFWX1BJWF9GTVRfUDAxMCB9LAorfTsKKworRFhHSV9GT1JNQVQgYXZfZDNkMTJ2YV9t YXBfc3dfdG9faHdfZm9ybWF0KGVudW0gQVZQaXhlbEZvcm1hdCBwaXhfZm10KQoreworICAgIHN3 aXRjaCAocGl4X2ZtdCkgeworICAgIGNhc2UgQVZfUElYX0ZNVF9OVjEyOnJldHVybiBEWEdJX0ZP Uk1BVF9OVjEyOworICAgIGNhc2UgQVZfUElYX0ZNVF9QMDEwOnJldHVybiBEWEdJX0ZPUk1BVF9Q MDEwOworICAgIGRlZmF1bHQ6ICAgICAgICAgICAgIHJldHVybiBEWEdJX0ZPUk1BVF9VTktOT1dO OworICAgIH0KK30KKworaW50IGF2X2QzZDEydmFfY3JlYXRlX3N5bmNfY29udGV4dChBVkQzRDEy VkFEZXZpY2VDb250ZXh0ICpjdHgsIEFWRDNEMTJWQVN5bmNDb250ZXh0ICoqc3luY19jdHgpCit7 CisgICAgQVZEM0QxMlZBU3luY0NvbnRleHQgKnN5bmM7CisKKyAgICAqc3luY19jdHggPSBhdl9t YWxsb2N6KHNpemVvZihBVkQzRDEyVkFTeW5jQ29udGV4dCkpOworICAgIHN5bmMgPSAqc3luY19j dHg7CisgICAgRFhfQ0hFQ0soSUQzRDEyRGV2aWNlX0NyZWF0ZUZlbmNlKGN0eC0+ZGV2aWNlLCBz eW5jLT5mZW5jZV92YWx1ZSwgRDNEMTJfRkVOQ0VfRkxBR19OT05FLCAmSUlEX0lEM0QxMkZlbmNl LCAmc3luYy0+ZmVuY2UpKTsKKworICAgIHN5bmMtPmV2ZW50ID0gQ3JlYXRlRXZlbnQoTlVMTCwg RkFMU0UsIEZBTFNFLCBOVUxMKTsKKyAgICBpZiAoIXN5bmMtPmV2ZW50KQorICAgICAgICBnb3Rv IGZhaWw7CisKKyAgICByZXR1cm4gMDsKKworZmFpbDoKKyAgICByZXR1cm4gQVZFUlJPUihFSU5W QUwpOworfQorCitpbnQgYXZfZDNkMTJ2YV9yZWxlYXNlX3N5bmNfY29udGV4dChBVkQzRDEyVkFT eW5jQ29udGV4dCAqc3luY19jdHgpCit7CisgICAgaWYgKCFzeW5jX2N0eCkKKyAgICAgICAgcmV0 dXJuIDA7CisKKyAgICBpbnQgcmV0ID0gYXZfZDNkMTJ2YV93YWl0X2lkbGUoc3luY19jdHgpOwor ICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0OworCisgICAgRDNEMTJfT0JKRUNU X1JFTEVBU0Uoc3luY19jdHgtPmZlbmNlKTsKKworICAgIGlmIChzeW5jX2N0eC0+ZXZlbnQgJiYg IUNsb3NlSGFuZGxlKHN5bmNfY3R4LT5ldmVudCkpCisgICAgICAgIHJldHVybiBBVkVSUk9SKEVJ TlZBTCk7CisKKyAgICBhdl9mcmVlcCgmc3luY19jdHgpOworCisgICAgcmV0dXJuIDA7Cit9CisK K2ludCBhdl9kM2QxMnZhX3dhaXRfZm9yX2ZlbmNlX3ZhbHVlKEFWRDNEMTJWQVN5bmNDb250ZXh0 ICpzeW5jX2N0eCwgdWludDY0X3QgZmVuY2VfdmFsdWUpCit7CisgICAgdWludDY0X3QgY29tcGxl dGlvbiA9IElEM0QxMkZlbmNlX0dldENvbXBsZXRlZFZhbHVlKHN5bmNfY3R4LT5mZW5jZSk7Cisg ICAgaWYgKGNvbXBsZXRpb24gPCBmZW5jZV92YWx1ZSkgeworICAgICAgICBpZiAoRkFJTEVEKElE M0QxMkZlbmNlX1NldEV2ZW50T25Db21wbGV0aW9uKHN5bmNfY3R4LT5mZW5jZSwgZmVuY2VfdmFs dWUsIHN5bmNfY3R4LT5ldmVudCkpKQorICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFM KTsKKworICAgICAgICBXYWl0Rm9yU2luZ2xlT2JqZWN0RXgoc3luY19jdHgtPmV2ZW50LCBJTkZJ TklURSwgRkFMU0UpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitpbnQgYXZfZDNkMTJ2 YV93YWl0X2lkbGUoQVZEM0QxMlZBU3luY0NvbnRleHQgKmN0eCkKK3sKKyAgICByZXR1cm4gYXZf ZDNkMTJ2YV93YWl0X2Zvcl9mZW5jZV92YWx1ZShjdHgsIGN0eC0+ZmVuY2VfdmFsdWUpOworfQor CitpbnQgYXZfZDNkMTJ2YV93YWl0X3F1ZXVlX2lkbGUoQVZEM0QxMlZBU3luY0NvbnRleHQgKnN5 bmNfY3R4LCBJRDNEMTJDb21tYW5kUXVldWUgKmNvbW1hbmRfcXVldWUpCit7CisgICAgRFhfQ0hF Q0soSUQzRDEyQ29tbWFuZFF1ZXVlX1NpZ25hbChjb21tYW5kX3F1ZXVlLCBzeW5jX2N0eC0+ZmVu Y2UsICsrc3luY19jdHgtPmZlbmNlX3ZhbHVlKSk7CisgICAgcmV0dXJuIGF2X2QzZDEydmFfd2Fp dF9pZGxlKHN5bmNfY3R4KTsKKworZmFpbDoKKyAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwor fQorCitzdGF0aWMgaW5saW5lIGludCBjcmVhdGVfcmVzb3VyY2UoSUQzRDEyRGV2aWNlICpkZXZp Y2UsIGNvbnN0IEQzRDEyX1JFU09VUkNFX0RFU0MgKmRlc2MsIEQzRDEyX1JFU09VUkNFX1NUQVRF UyBzdGF0ZXMsIElEM0QxMlJlc291cmNlICoqcHBSZXNvdXJjZSwgaW50IGlzX3JlYWRfYmFjaykK K3sKKyAgICBEM0QxMl9IRUFQX1BST1BFUlRJRVMgcHJvcHMgPSB7CisgICAgICAgIC5UeXBlICAg ICAgICAgICAgICAgICA9IGlzX3JlYWRfYmFjayA/IEQzRDEyX0hFQVBfVFlQRV9SRUFEQkFDSyA6 IEQzRDEyX0hFQVBfVFlQRV9ERUZBVUxULAorICAgICAgICAuQ1BVUGFnZVByb3BlcnR5ICAgICAg PSBEM0QxMl9DUFVfUEFHRV9QUk9QRVJUWV9VTktOT1dOLAorICAgICAgICAuTWVtb3J5UG9vbFBy ZWZlcmVuY2UgPSBEM0QxMl9NRU1PUllfUE9PTF9VTktOT1dOLAorICAgICAgICAuQ3JlYXRpb25O b2RlTWFzayAgICAgPSAwLAorICAgICAgICAuVmlzaWJsZU5vZGVNYXNrICAgICAgPSAwLAorICAg IH07CisKKyAgICBpZiAoRkFJTEVEKElEM0QxMkRldmljZV9DcmVhdGVDb21taXR0ZWRSZXNvdXJj ZShkZXZpY2UsICZwcm9wcywgRDNEMTJfSEVBUF9GTEFHX05PTkUsIGRlc2MsCisgICAgICAgIHN0 YXRlcywgTlVMTCwgJklJRF9JRDNEMTJSZXNvdXJjZSwgcHBSZXNvdXJjZSkpKQorICAgICAgICBy ZXR1cm4gQVZFUlJPUihFSU5WQUwpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQg ZDNkMTJ2YV9jcmVhdGVfc3RhZ2luZ19idWZmZXJfcmVzb3VyY2UoQVZIV0ZyYW1lc0NvbnRleHQg KmN0eCkKK3sKKyAgICBBVkQzRDEyVkFEZXZpY2VDb250ZXh0ICpkZXZpY2VfaHdjdHggPSBjdHgt PmRldmljZV9jdHgtPmh3Y3R4OworICAgIEQzRDEyVkFGcmFtZXNDb250ZXh0ICAgKnMgICAgICAg ICAgICA9IGN0eC0+aW50ZXJuYWwtPnByaXY7CisKKyAgICBEM0QxMl9SRVNPVVJDRV9ERVNDIGRl c2MgPSB7CisgICAgICAgIC5EaW1lbnNpb24gICAgICAgICAgPSBEM0QxMl9SRVNPVVJDRV9ESU1F TlNJT05fQlVGRkVSLAorICAgICAgICAuQWxpZ25tZW50ICAgICAgICAgID0gMCwKKyAgICAgICAg LldpZHRoICAgICAgICAgICAgICA9IDAsCisgICAgICAgIC5IZWlnaHQgICAgICAgICAgICAgPSAx LAorICAgICAgICAuRGVwdGhPckFycmF5U2l6ZSAgID0gMSwKKyAgICAgICAgLk1pcExldmVscyAg ICAgICAgICA9IDEsCisgICAgICAgIC5Gb3JtYXQgICAgICAgICAgICAgPSBEWEdJX0ZPUk1BVF9V TktOT1dOLAorICAgICAgICAuU2FtcGxlRGVzYyAgICAgICAgID0geyAuQ291bnQgPSAxLCAuUXVh bGl0eSA9IDAgfSwKKyAgICAgICAgLkxheW91dCAgICAgICAgICAgICA9IEQzRDEyX1RFWFRVUkVf TEFZT1VUX1JPV19NQUpPUiwKKyAgICAgICAgLkZsYWdzICAgICAgICAgICAgICA9IEQzRDEyX1JF U09VUkNFX0ZMQUdfTk9ORSwKKyAgICB9OworCisgICAgcy0+bHVtYV9jb21wb25lbnRfc2l6ZSA9 IEZGQUxJR04oY3R4LT53aWR0aCwgRDNEMTJfVEVYVFVSRV9EQVRBX1BJVENIX0FMSUdOTUVOVCkg KiBjdHgtPmhlaWdodCAqIChzLT5mb3JtYXQgPT0gRFhHSV9GT1JNQVRfUDAxMCA/IDIgOiAxKTsK KyAgICBkZXNjLldpZHRoID0gcy0+bHVtYV9jb21wb25lbnRfc2l6ZSArIChzLT5sdW1hX2NvbXBv bmVudF9zaXplID4+IDEpOworCisgICAgcmV0dXJuIGNyZWF0ZV9yZXNvdXJjZShkZXZpY2VfaHdj dHgtPmRldmljZSwgJmRlc2MsIEQzRDEyX1JFU09VUkNFX1NUQVRFX0NPUFlfREVTVCwgJnMtPnN0 YWdpbmdfYnVmZmVyLCAxKTsKK30KKworc3RhdGljIGludCBkM2QxMnZhX2NyZWF0ZV9oZWxwZXJf b2JqZWN0cyhBVkhXRnJhbWVzQ29udGV4dCAqY3R4KQoreworICAgIEFWRDNEMTJWQURldmljZUNv bnRleHQgKmRldmljZV9od2N0eCA9IGN0eC0+ZGV2aWNlX2N0eC0+aHdjdHg7CisgICAgRDNEMTJW QUZyYW1lc0NvbnRleHQgICAqcyAgICAgICAgICAgID0gY3R4LT5pbnRlcm5hbC0+cHJpdjsKKwor ICAgIEQzRDEyX0NPTU1BTkRfUVVFVUVfREVTQyBxdWV1ZV9kZXNjID0geworICAgICAgICAuVHlw ZSAgICAgPSBEM0QxMl9DT01NQU5EX0xJU1RfVFlQRV9DT1BZLAorICAgICAgICAuUHJpb3JpdHkg PSAwLAorICAgICAgICAuTm9kZU1hc2sgPSAwLAorICAgIH07CisKKyAgICBpbnQgcmV0ID0gZDNk MTJ2YV9jcmVhdGVfc3RhZ2luZ19idWZmZXJfcmVzb3VyY2UoY3R4KTsKKyAgICBpZiAocmV0IDwg MCkKKyAgICAgICAgcmV0dXJuIHJldDsKKworICAgIHJldCA9IGF2X2QzZDEydmFfY3JlYXRlX3N5 bmNfY29udGV4dChkZXZpY2VfaHdjdHgsICZzLT5zeW5jX2N0eCk7CisgICAgaWYgKHJldCA8IDAp CisgICAgICAgIHJldHVybiByZXQ7CisKKyAgICBEWF9DSEVDSyhJRDNEMTJEZXZpY2VfQ3JlYXRl Q29tbWFuZFF1ZXVlKGRldmljZV9od2N0eC0+ZGV2aWNlLCAmcXVldWVfZGVzYywKKyAgICAgICAg JklJRF9JRDNEMTJDb21tYW5kUXVldWUsICZzLT5jb21tYW5kX3F1ZXVlKSk7CisKKyAgICBEWF9D SEVDSyhJRDNEMTJEZXZpY2VfQ3JlYXRlQ29tbWFuZEFsbG9jYXRvcihkZXZpY2VfaHdjdHgtPmRl dmljZSwgcXVldWVfZGVzYy5UeXBlLAorICAgICAgICAmSUlEX0lEM0QxMkNvbW1hbmRBbGxvY2F0 b3IsICZzLT5jb21tYW5kX2FsbG9jYXRvcikpOworCisgICAgRFhfQ0hFQ0soSUQzRDEyRGV2aWNl X0NyZWF0ZUNvbW1hbmRMaXN0KGRldmljZV9od2N0eC0+ZGV2aWNlLCAwLCBxdWV1ZV9kZXNjLlR5 cGUsCisgICAgICAgIHMtPmNvbW1hbmRfYWxsb2NhdG9yLCBOVUxMLCAmSUlEX0lEM0QxMkdyYXBo aWNzQ29tbWFuZExpc3QsICZzLT5jb21tYW5kX2xpc3QpKTsKKworICAgIERYX0NIRUNLKElEM0Qx MkdyYXBoaWNzQ29tbWFuZExpc3RfQ2xvc2Uocy0+Y29tbWFuZF9saXN0KSk7CisKKyAgICBJRDNE MTJDb21tYW5kUXVldWVfRXhlY3V0ZUNvbW1hbmRMaXN0cyhzLT5jb21tYW5kX3F1ZXVlLCAxLCAo SUQzRDEyQ29tbWFuZExpc3QgKiopJnMtPmNvbW1hbmRfbGlzdCk7CisKKyAgICByZXR1cm4gYXZf ZDNkMTJ2YV93YWl0X3F1ZXVlX2lkbGUocy0+c3luY19jdHgsIHMtPmNvbW1hbmRfcXVldWUpOwor CitmYWlsOgorICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7Cit9CisKK3N0YXRpYyB2b2lkIGQz ZDEydmFfZnJhbWVzX3VuaW5pdChBVkhXRnJhbWVzQ29udGV4dCAqY3R4KQoreworICAgIEFWRDNE MTJWQUZyYW1lc0NvbnRleHQgKmZyYW1lc19od2N0eCA9IGN0eC0+aHdjdHg7CisgICAgRDNEMTJW QUZyYW1lc0NvbnRleHQgICAqcyAgICAgICAgICAgID0gY3R4LT5pbnRlcm5hbC0+cHJpdjsKKwor ICAgIGF2X2QzZDEydmFfcmVsZWFzZV9zeW5jX2NvbnRleHQocy0+c3luY19jdHgpOworCisgICAg RDNEMTJfT0JKRUNUX1JFTEVBU0Uocy0+c3RhZ2luZ19idWZmZXIpOworICAgIEQzRDEyX09CSkVD VF9SRUxFQVNFKHMtPmNvbW1hbmRfYWxsb2NhdG9yKTsKKyAgICBEM0QxMl9PQkpFQ1RfUkVMRUFT RShzLT5jb21tYW5kX2xpc3QpOworICAgIEQzRDEyX09CSkVDVF9SRUxFQVNFKHMtPmNvbW1hbmRf cXVldWUpOworCisgICAgYXZfZnJlZXAoJmZyYW1lc19od2N0eC0+dGV4dHVyZV9pbmZvcyk7Cit9 CisKK3N0YXRpYyBpbnQgZDNkMTJ2YV9mcmFtZXNfZ2V0X2NvbnN0cmFpbnRzKEFWSFdEZXZpY2VD b250ZXh0ICpjdHgsIGNvbnN0IHZvaWQgKmh3Y29uZmlnLCBBVkhXRnJhbWVzQ29uc3RyYWludHMg KmNvbnN0cmFpbnRzKQoreworICAgIEhSRVNVTFQgaHI7CisgICAgaW50IG5iX3N3X2Zvcm1hdHMg PSAwOworICAgIEFWRDNEMTJWQURldmljZUNvbnRleHQgKmRldmljZV9od2N0eCA9IGN0eC0+aHdj dHg7CisKKyAgICBjb25zdHJhaW50cy0+dmFsaWRfc3dfZm9ybWF0cyA9IGF2X21hbGxvY19hcnJh eShGRl9BUlJBWV9FTEVNUyhzdXBwb3J0ZWRfZm9ybWF0cykgKyAxLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZigqY29uc3RyYWludHMt PnZhbGlkX3N3X2Zvcm1hdHMpKTsKKyAgICBpZiAoIWNvbnN0cmFpbnRzLT52YWxpZF9zd19mb3Jt YXRzKQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworCisgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCBGRl9BUlJBWV9FTEVNUyhzdXBwb3J0ZWRfZm9ybWF0cyk7IGkrKykgeworICAgICAg ICBEM0QxMl9GRUFUVVJFX0RBVEFfRk9STUFUX1NVUFBPUlQgZm9ybWF0X3N1cHBvcnQgPSB7IHN1 cHBvcnRlZF9mb3JtYXRzW2ldLmQzZF9mb3JtYXQgfTsKKyAgICAgICAgaHIgPSBJRDNEMTJEZXZp Y2VfQ2hlY2tGZWF0dXJlU3VwcG9ydChkZXZpY2VfaHdjdHgtPmRldmljZSwgRDNEMTJfRkVBVFVS RV9GT1JNQVRfU1VQUE9SVCwgJmZvcm1hdF9zdXBwb3J0LCBzaXplb2YoZm9ybWF0X3N1cHBvcnQp KTsKKyAgICAgICAgaWYgKFNVQ0NFRURFRChocikgJiYgKGZvcm1hdF9zdXBwb3J0LlN1cHBvcnQx ICYgRDNEMTJfRk9STUFUX1NVUFBPUlQxX1RFWFRVUkUyRCkpCisgICAgICAgICAgICBjb25zdHJh aW50cy0+dmFsaWRfc3dfZm9ybWF0c1tuYl9zd19mb3JtYXRzKytdID0gc3VwcG9ydGVkX2Zvcm1h dHNbaV0ucGl4X2ZtdDsKKyAgICB9CisgICAgY29uc3RyYWludHMtPnZhbGlkX3N3X2Zvcm1hdHNb bmJfc3dfZm9ybWF0c10gPSBBVl9QSVhfRk1UX05PTkU7CisKKyAgICBjb25zdHJhaW50cy0+dmFs aWRfaHdfZm9ybWF0cyA9IGF2X21hbGxvY19hcnJheSgyLCBzaXplb2YoKmNvbnN0cmFpbnRzLT52 YWxpZF9od19mb3JtYXRzKSk7CisgICAgaWYgKCFjb25zdHJhaW50cy0+dmFsaWRfaHdfZm9ybWF0 cykKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKKworICAgIGNvbnN0cmFpbnRzLT52 YWxpZF9od19mb3JtYXRzWzBdID0gQVZfUElYX0ZNVF9EM0QxMjsKKyAgICBjb25zdHJhaW50cy0+ dmFsaWRfaHdfZm9ybWF0c1sxXSA9IEFWX1BJWF9GTVRfTk9ORTsKKworICAgIHJldHVybiAwOwor fQorCitzdGF0aWMgdm9pZCBmcmVlX3RleHR1cmUodm9pZCAqb3BhcXVlLCB1aW50OF90ICpkYXRh KQoreworICAgIEFWRDNEMTJGcmFtZURlc2NyaXB0b3IgKmRlc2MgPSAoQVZEM0QxMkZyYW1lRGVz Y3JpcHRvciAqKWRhdGE7CisKKyAgICBpZiAoZGVzYy0+c3luY19jdHgpCisgICAgICAgIGF2X2Qz ZDEydmFfcmVsZWFzZV9zeW5jX2NvbnRleHQoZGVzYy0+c3luY19jdHgpOworCisgICAgRDNEMTJf T0JKRUNUX1JFTEVBU0UoZGVzYy0+dGV4dHVyZSk7CisgICAgYXZfZnJlZXAoJmRhdGEpOworfQor CitzdGF0aWMgQVZCdWZmZXJSZWYgKndyYXBfdGV4dHVyZV9idWYoQVZIV0ZyYW1lc0NvbnRleHQg KmN0eCwgSUQzRDEyUmVzb3VyY2UgKnRleHR1cmUsIEFWRDNEMTJWQVN5bmNDb250ZXh0ICpzeW5j X2N0eCkKK3sKKyAgICBBVkJ1ZmZlclJlZiAqYnVmOworICAgIEQzRDEyVkFGcmFtZXNDb250ZXh0 ICAgKnMgICAgICAgICAgICA9IGN0eC0+aW50ZXJuYWwtPnByaXY7CisgICAgQVZEM0QxMlZBRnJh bWVzQ29udGV4dCAqZnJhbWVzX2h3Y3R4ID0gY3R4LT5od2N0eDsKKworICAgIEFWRDNEMTJGcmFt ZURlc2NyaXB0b3IgKmRlc2MgPSBhdl9tYWxsb2N6KHNpemVvZigqZGVzYykpOworICAgIGlmICgh ZGVzYykKKyAgICAgICAgZ290byBmYWlsOworCisgICAgaWYgKHMtPm5iX3N1cmZhY2VzIDw9IHMt Pm5iX3N1cmZhY2VzX3VzZWQpIHsKKyAgICAgICAgZnJhbWVzX2h3Y3R4LT50ZXh0dXJlX2luZm9z ID0gYXZfcmVhbGxvY19mKGZyYW1lc19od2N0eC0+dGV4dHVyZV9pbmZvcywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPm5iX3N1cmZhY2VzX3Vz ZWQgKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2l6ZW9mKCpmcmFtZXNfaHdjdHgtPnRleHR1cmVfaW5mb3MpKTsKKyAgICAgICAgaWYgKCFm cmFtZXNfaHdjdHgtPnRleHR1cmVfaW5mb3MpCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAg ICAgIHMtPm5iX3N1cmZhY2VzID0gcy0+bmJfc3VyZmFjZXNfdXNlZCArIDE7CisgICAgfQorCisg ICAgZGVzYy0+dGV4dHVyZSAgPSB0ZXh0dXJlOworICAgIGRlc2MtPmluZGV4ICAgID0gcy0+bmJf c3VyZmFjZXNfdXNlZDsKKyAgICBkZXNjLT5zeW5jX2N0eCA9IHN5bmNfY3R4OworCisgICAgZnJh bWVzX2h3Y3R4LT50ZXh0dXJlX2luZm9zW3MtPm5iX3N1cmZhY2VzX3VzZWRdLnRleHR1cmUgID0g dGV4dHVyZTsKKyAgICBmcmFtZXNfaHdjdHgtPnRleHR1cmVfaW5mb3Nbcy0+bmJfc3VyZmFjZXNf dXNlZF0uaW5kZXggICAgPSBkZXNjLT5pbmRleDsKKyAgICBmcmFtZXNfaHdjdHgtPnRleHR1cmVf aW5mb3Nbcy0+bmJfc3VyZmFjZXNfdXNlZF0uc3luY19jdHggPSBzeW5jX2N0eDsKKyAgICBzLT5u Yl9zdXJmYWNlc191c2VkKys7CisKKyAgICBidWYgPSBhdl9idWZmZXJfY3JlYXRlKCh1aW50OF90 ICopZGVzYywgc2l6ZW9mKGRlc2MpLCBmcmVlX3RleHR1cmUsIHRleHR1cmUsIDApOworICAgIGlm ICghYnVmKSB7CisgICAgICAgIEQzRDEyX09CSkVDVF9SRUxFQVNFKHRleHR1cmUpOworICAgICAg ICBhdl9mcmVlcCgmZGVzYyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJl dHVybiBidWY7CisKK2ZhaWw6CisgICAgRDNEMTJfT0JKRUNUX1JFTEVBU0UodGV4dHVyZSk7Cisg ICAgYXZfZDNkMTJ2YV9yZWxlYXNlX3N5bmNfY29udGV4dChzeW5jX2N0eCk7CisgICAgcmV0dXJu IE5VTEw7Cit9CisKK3N0YXRpYyBBVkJ1ZmZlclJlZiAqZDNkMTJ2YV9wb29sX2FsbG9jKHZvaWQg Km9wYXF1ZSwgc2l6ZV90IHNpemUpCit7CisgICAgQVZIV0ZyYW1lc0NvbnRleHQgICAgICAqY3R4 ICAgICAgICAgID0gKEFWSFdGcmFtZXNDb250ZXh0ICopb3BhcXVlOworICAgIEQzRDEyVkFGcmFt ZXNDb250ZXh0ICAgKnMgICAgICAgICAgICA9IGN0eC0+aW50ZXJuYWwtPnByaXY7CisgICAgQVZE M0QxMlZBRnJhbWVzQ29udGV4dCAqaHdjdHggICAgICAgID0gY3R4LT5od2N0eDsKKyAgICBBVkQz RDEyVkFEZXZpY2VDb250ZXh0ICpkZXZpY2VfaHdjdHggPSBjdHgtPmRldmljZV9jdHgtPmh3Y3R4 OworCisgICAgaW50IHJldDsKKyAgICBJRDNEMTJSZXNvdXJjZSAqdGV4dHVyZTsKKyAgICBBVkQz RDEyVkFTeW5jQ29udGV4dCAqc3luY19jdHg7CisKKyAgICBEM0QxMl9SRVNPVVJDRV9ERVNDIGRl c2MgPSB7CisgICAgICAgIC5EaW1lbnNpb24gICAgICAgID0gRDNEMTJfUkVTT1VSQ0VfRElNRU5T SU9OX1RFWFRVUkUyRCwKKyAgICAgICAgLkFsaWdubWVudCAgICAgICAgPSAwLAorICAgICAgICAu V2lkdGggICAgICAgICAgICA9IGN0eC0+d2lkdGgsCisgICAgICAgIC5IZWlnaHQgICAgICAgICAg ID0gY3R4LT5oZWlnaHQsCisgICAgICAgIC5EZXB0aE9yQXJyYXlTaXplID0gMSwKKyAgICAgICAg Lk1pcExldmVscyAgICAgICAgPSAxLAorICAgICAgICAuRm9ybWF0ICAgICAgICAgICA9IHMtPmZv cm1hdCwKKyAgICAgICAgLlNhbXBsZURlc2MgICAgICAgPSB7LkNvdW50ID0gMSwgLlF1YWxpdHkg PSAwIH0sCisgICAgICAgIC5MYXlvdXQgICAgICAgICAgID0gRDNEMTJfVEVYVFVSRV9MQVlPVVRf VU5LTk9XTiwKKyAgICAgICAgLkZsYWdzICAgICAgICAgICAgPSBEM0QxMl9SRVNPVVJDRV9GTEFH X05PTkUsCisgICAgfTsKKworICAgIGlmIChzLT5uYl9zdXJmYWNlc191c2VkID49IGN0eC0+aW5p dGlhbF9wb29sX3NpemUpIHsKKyAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAiU3Rh dGljIHN1cmZhY2UgcG9vbCBzaXplIGV4Y2VlZGVkLlxuIik7CisgICAgICAgIHJldHVybiBOVUxM OworICAgIH0KKworICAgIHJldCA9IGNyZWF0ZV9yZXNvdXJjZShkZXZpY2VfaHdjdHgtPmRldmlj ZSwgJmRlc2MsIEQzRDEyX1JFU09VUkNFX1NUQVRFX0NPTU1PTiwgJnRleHR1cmUsIDApOworICAg IGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldCA9IGF2X2QzZDEy dmFfY3JlYXRlX3N5bmNfY29udGV4dChkZXZpY2VfaHdjdHgsICZzeW5jX2N0eCk7CisgICAgaWYg KHJldCA8IDApIHsKKyAgICAgICAgRDNEMTJfT0JKRUNUX1JFTEVBU0UodGV4dHVyZSkKKyAgICAg ICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiB3cmFwX3RleHR1cmVfYnVm KGN0eCwgdGV4dHVyZSwgc3luY19jdHgpOworfQorCitzdGF0aWMgaW50IGQzZDEydmFfZnJhbWVz X2luaXQoQVZIV0ZyYW1lc0NvbnRleHQgKmN0eCkKK3sKKyAgICBBVkQzRDEyVkFGcmFtZXNDb250 ZXh0ICpod2N0eCAgICAgICAgPSBjdHgtPmh3Y3R4OworICAgIEFWRDNEMTJWQURldmljZUNvbnRl eHQgKmRldmljZV9od2N0eCA9IGN0eC0+ZGV2aWNlX2N0eC0+aHdjdHg7CisgICAgRDNEMTJWQUZy YW1lc0NvbnRleHQgICAqcyAgICAgICAgICAgID0gY3R4LT5pbnRlcm5hbC0+cHJpdjsKKworICAg IGludCBpOworCisgICAgaWYgKGN0eC0+aW5pdGlhbF9wb29sX3NpemUgPiBEM0QxMlZBX01BWF9T VVJGQUNFUykgeworICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfV0FSTklORywgIlRvbyBiaWcg aW5pdGlhbCBwb29sIHNpemUoJWQpIGZvciBzdXJmYWNlcy4gIgorICAgICAgICAgICAgIlRoZSBz aXplIHdpbGwgYmUgbGltaXRlZCB0byAlZCBhdXRvbWF0aWNhbGx5XG4iLCBjdHgtPmluaXRpYWxf cG9vbF9zaXplLCBEM0QxMlZBX01BWF9TVVJGQUNFUyk7CisgICAgICAgIGN0eC0+aW5pdGlhbF9w b29sX3NpemUgPSBEM0QxMlZBX01BWF9TVVJGQUNFUzsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAw OyBpIDwgRkZfQVJSQVlfRUxFTVMoc3VwcG9ydGVkX2Zvcm1hdHMpOyBpKyspIHsKKyAgICAgICAg aWYgKGN0eC0+c3dfZm9ybWF0ID09IHN1cHBvcnRlZF9mb3JtYXRzW2ldLnBpeF9mbXQpIHsKKyAg ICAgICAgICAgIHMtPmZvcm1hdCA9IHN1cHBvcnRlZF9mb3JtYXRzW2ldLmQzZF9mb3JtYXQ7Cisg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoaSA9PSBGRl9BUlJB WV9FTEVNUyhzdXBwb3J0ZWRfZm9ybWF0cykpIHsKKyAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9H X0VSUk9SLCAiVW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0OiAlc1xuIiwKKyAgICAgICAgICAgICAg IGF2X2dldF9waXhfZm10X25hbWUoY3R4LT5zd19mb3JtYXQpKTsKKyAgICAgICAgcmV0dXJuIEFW RVJST1IoRUlOVkFMKTsKKyAgICB9CisKKyAgICBod2N0eC0+dGV4dHVyZV9pbmZvcyA9IGF2X3Jl YWxsb2NfZihOVUxMLCBjdHgtPmluaXRpYWxfcG9vbF9zaXplLCBzaXplb2YoKmh3Y3R4LT50ZXh0 dXJlX2luZm9zKSk7CisgICAgaWYgKCFod2N0eC0+dGV4dHVyZV9pbmZvcykKKyAgICAgICAgcmV0 dXJuIEFWRVJST1IoRU5PTUVNKTsKKworICAgIG1lbXNldChod2N0eC0+dGV4dHVyZV9pbmZvcywg MCwgY3R4LT5pbml0aWFsX3Bvb2xfc2l6ZSAqIHNpemVvZigqaHdjdHgtPnRleHR1cmVfaW5mb3Mp KTsKKyAgICBzLT5uYl9zdXJmYWNlcyA9IGN0eC0+aW5pdGlhbF9wb29sX3NpemU7CisKKyAgICBj dHgtPmludGVybmFsLT5wb29sX2ludGVybmFsID0gYXZfYnVmZmVyX3Bvb2xfaW5pdDIoc2l6ZW9m KEFWRDNEMTJGcmFtZURlc2NyaXB0b3IpLAorICAgICAgICBjdHgsIGQzZDEydmFfcG9vbF9hbGxv YywgTlVMTCk7CisKKyAgICBpZiAoIWN0eC0+aW50ZXJuYWwtPnBvb2xfaW50ZXJuYWwpCisgICAg ICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGlj IGludCBkM2QxMnZhX2dldF9idWZmZXIoQVZIV0ZyYW1lc0NvbnRleHQgKmN0eCwgQVZGcmFtZSAq ZnJhbWUpCit7CisgICAgaW50IHJldDsKKyAgICBBVkQzRDEyRnJhbWVEZXNjcmlwdG9yICpkZXNj OworCisgICAgZnJhbWUtPmJ1ZlswXSA9IGF2X2J1ZmZlcl9wb29sX2dldChjdHgtPnBvb2wpOwor ICAgIGlmICghZnJhbWUtPmJ1ZlswXSkKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsK KworICAgIHJldCA9IGF2X2ltYWdlX2ZpbGxfYXJyYXlzKGZyYW1lLT5kYXRhLCBmcmFtZS0+bGlu ZXNpemUsIGZyYW1lLT5idWZbMF0tPmRhdGEsCisgICAgICAgIGN0eC0+c3dfZm9ybWF0LCBjdHgt PndpZHRoLCBjdHgtPmhlaWdodCwgRDNEMTJfVEVYVFVSRV9EQVRBX1BJVENIX0FMSUdOTUVOVCk7 CisgICAgaWYgKHJldCA8IDApCisgICAgICAgIHJldHVybiByZXQ7CisKKyAgICBkZXNjID0gKEFW RDNEMTJGcmFtZURlc2NyaXB0b3IgKilmcmFtZS0+YnVmWzBdLT5kYXRhOworICAgIGZyYW1lLT5k YXRhWzBdID0gKHVpbnQ4X3QgKilkZXNjLT50ZXh0dXJlOworICAgIGZyYW1lLT5kYXRhWzFdID0g KHVpbnQ4X3QgKilkZXNjLT5pbmRleDsKKyAgICBmcmFtZS0+ZGF0YVsyXSA9ICh1aW50OF90ICop ZGVzYy0+c3luY19jdHg7CisKKyAgICBmcmFtZS0+Zm9ybWF0ICA9IEFWX1BJWF9GTVRfRDNEMTI7 CisgICAgZnJhbWUtPndpZHRoICAgPSBjdHgtPndpZHRoOworICAgIGZyYW1lLT5oZWlnaHQgID0g Y3R4LT5oZWlnaHQ7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBkM2QxMnZhX3Ry YW5zZmVyX2dldF9mb3JtYXRzKEFWSFdGcmFtZXNDb250ZXh0ICpjdHgsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBBVkhXRnJhbWVUcmFuc2ZlckRpcmVjdGlv biBkaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBBVlBp eGVsRm9ybWF0ICoqZm9ybWF0cykKK3sKKyAgICBEM0QxMlZBRnJhbWVzQ29udGV4dCAqcyA9IGN0 eC0+aW50ZXJuYWwtPnByaXY7CisgICAgZW51bSBBVlBpeGVsRm9ybWF0ICpmbXRzOworCisgICAg Zm10cyA9IGF2X21hbGxvY19hcnJheSgyLCBzaXplb2YoKmZtdHMpKTsKKyAgICBpZiAoIWZtdHMp CisgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CisKKyAgICBmbXRzWzBdID0gY3R4LT5z d19mb3JtYXQ7CisgICAgZm10c1sxXSA9IEFWX1BJWF9GTVRfTk9ORTsKKworICAgICpmb3JtYXRz ID0gZm10czsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IGQzZDEydmFfdHJhbnNm ZXJfZGF0YShBVkhXRnJhbWVzQ29udGV4dCAqY3R4LCBBVkZyYW1lICpkc3QsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBVkZyYW1lICpzcmMpCit7CisgICAgQVZEM0Qx MlZBRGV2aWNlQ29udGV4dCAqaHdjdHggICAgICAgID0gY3R4LT5kZXZpY2VfY3R4LT5od2N0eDsK KyAgICBBVkQzRDEyVkFGcmFtZXNDb250ZXh0ICpmcmFtZXNfaHdjdHggPSBjdHgtPmh3Y3R4Owor ICAgIEQzRDEyVkFGcmFtZXNDb250ZXh0ICAgKnMgICAgICAgICAgICA9IGN0eC0+aW50ZXJuYWwt PnByaXY7CisKKyAgICBpbnQgcmV0OworICAgIGludCBkb3dubG9hZCA9IHNyYy0+Zm9ybWF0ID09 IEFWX1BJWF9GTVRfRDNEMTI7CisgICAgY29uc3QgQVZGcmFtZSAqZnJhbWUgPSBkb3dubG9hZCA/ IHNyYyA6IGRzdDsKKyAgICBjb25zdCBBVkZyYW1lICpvdGhlciA9IGRvd25sb2FkID8gZHN0IDog c3JjOworCisgICAgSUQzRDEyUmVzb3VyY2UgICAgICAgKnRleHR1cmUgID0gKElEM0QxMlJlc291 cmNlICopICAgICAgZnJhbWUtPmRhdGFbMF07CisgICAgaW50ICAgICAgICAgICAgICAgICAgIGlu ZGV4ICAgID0gKGludHB0cl90KSAgICAgICAgICAgICAgZnJhbWUtPmRhdGFbMV07CisgICAgQVZE M0QxMlZBU3luY0NvbnRleHQgKnN5bmNfY3R4ID0gKEFWRDNEMTJWQVN5bmNDb250ZXh0ICopZnJh bWUtPmRhdGFbMl07CisKKyAgICB1aW50OF90ICptYXBwZWRfZGF0YTsKKyAgICB1aW50OF90ICpk YXRhWzRdOworICAgIGludCBsaW5lc2l6ZXNbNF07CisKKyAgICBEM0QxMl9URVhUVVJFX0NPUFlf TE9DQVRJT04gc3RhZ2luZ195X2xvY2F0aW9uOworICAgIEQzRDEyX1RFWFRVUkVfQ09QWV9MT0NB VElPTiBzdGFnaW5nX3V2X2xvY2F0aW9uOworCisgICAgRDNEMTJfVEVYVFVSRV9DT1BZX0xPQ0FU SU9OIHRleHR1cmVfeV9sb2NhdGlvbiA9IHsKKyAgICAgICAgLnBSZXNvdXJjZSAgICAgICAgPSB0 ZXh0dXJlLAorICAgICAgICAuVHlwZSAgICAgICAgICAgICA9IEQzRDEyX1RFWFRVUkVfQ09QWV9U WVBFX1NVQlJFU09VUkNFX0lOREVYLAorICAgICAgICAuU3VicmVzb3VyY2VJbmRleCA9IDAsCisg ICAgfTsKKworICAgIEQzRDEyX1RFWFRVUkVfQ09QWV9MT0NBVElPTiB0ZXh0dXJlX3V2X2xvY2F0 aW9uID0geworICAgICAgICAucFJlc291cmNlICAgICAgICA9IHRleHR1cmUsCisgICAgICAgIC5U eXBlICAgICAgICAgICAgID0gRDNEMTJfVEVYVFVSRV9DT1BZX1RZUEVfU1VCUkVTT1VSQ0VfSU5E RVgsCisgICAgICAgIC5TdWJyZXNvdXJjZUluZGV4ID0gMSwKKyAgICB9OworCisgICAgRDNEMTJf UkVTT1VSQ0VfQkFSUklFUiBiYXJyaWVyID0geworICAgICAgICAuVHlwZSAgPSBEM0QxMl9SRVNP VVJDRV9CQVJSSUVSX1RZUEVfVFJBTlNJVElPTiwKKyAgICAgICAgLkZsYWdzID0gRDNEMTJfUkVT T1VSQ0VfQkFSUklFUl9GTEFHX05PTkUsCisgICAgICAgIC5UcmFuc2l0aW9uID0geworICAgICAg ICAgICAgLnBSZXNvdXJjZSAgID0gdGV4dHVyZSwKKyAgICAgICAgICAgIC5TdGF0ZUJlZm9yZSA9 IEQzRDEyX1JFU09VUkNFX1NUQVRFX0NPTU1PTiwKKyAgICAgICAgICAgIC5TdGF0ZUFmdGVyICA9 IEQzRDEyX1JFU09VUkNFX1NUQVRFX0NPUFlfU09VUkNFLAorICAgICAgICAgICAgLlN1YnJlc291 cmNlID0gRDNEMTJfUkVTT1VSQ0VfQkFSUklFUl9BTExfU1VCUkVTT1VSQ0VTLAorICAgICAgICB9 CisgICAgfTsKKworICAgIHMtPmZvcm1hdCA9IGF2X2QzZDEydmFfbWFwX3N3X3RvX2h3X2Zvcm1h dChjdHgtPnN3X2Zvcm1hdCk7CisKKyAgICBpZiAoZnJhbWUtPmh3X2ZyYW1lc19jdHgtPmRhdGEg IT0gKHVpbnQ4X3QgKiljdHggfHwgb3RoZXItPmZvcm1hdCAhPSBjdHgtPnN3X2Zvcm1hdCkKKyAg ICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKKworICAgIGlmICghcy0+Y29tbWFuZF9xdWV1 ZSkgeworICAgICAgICByZXQgPSBkM2QxMnZhX2NyZWF0ZV9oZWxwZXJfb2JqZWN0cyhjdHgpOwor ICAgICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspCisgICAgICAgIGxpbmVzaXplc1tpXSA9IEZG QUxJR04oZnJhbWUtPndpZHRoICogKHMtPmZvcm1hdCA9PSBEWEdJX0ZPUk1BVF9QMDEwID8gMiA6 IDEpLCBEM0QxMl9URVhUVVJFX0RBVEFfUElUQ0hfQUxJR05NRU5UKTsKKworICAgIHN0YWdpbmdf eV9sb2NhdGlvbiA9IChEM0QxMl9URVhUVVJFX0NPUFlfTE9DQVRJT04pIHsKKyAgICAgICAgLnBS ZXNvdXJjZSA9IHMtPnN0YWdpbmdfYnVmZmVyLAorICAgICAgICAuVHlwZSAgICAgID0gRDNEMTJf VEVYVFVSRV9DT1BZX1RZUEVfUExBQ0VEX0ZPT1RQUklOVCwKKyAgICAgICAgLlBsYWNlZEZvb3Rw cmludCA9IHsKKyAgICAgICAgICAgIC5PZmZzZXQgPSAwLAorICAgICAgICAgICAgLkZvb3Rwcmlu dCA9IHsKKyAgICAgICAgICAgICAgICAuRm9ybWF0ICAgPSBzLT5mb3JtYXQgPT0gRFhHSV9GT1JN QVRfUDAxMCA/IERYR0lfRk9STUFUX1IxNl9VTk9STSA6IERYR0lfRk9STUFUX1I4X1VOT1JNLAor ICAgICAgICAgICAgICAgIC5XaWR0aCAgICA9IGN0eC0+d2lkdGgsCisgICAgICAgICAgICAgICAg LkhlaWdodCAgID0gY3R4LT5oZWlnaHQsCisgICAgICAgICAgICAgICAgLkRlcHRoICAgID0gMSwK KyAgICAgICAgICAgICAgICAuUm93UGl0Y2ggPSBsaW5lc2l6ZXNbMF0sCisgICAgICAgICAgICB9 LAorICAgICAgICB9LAorICAgIH07CisKKyAgICBzdGFnaW5nX3V2X2xvY2F0aW9uID0gKEQzRDEy X1RFWFRVUkVfQ09QWV9MT0NBVElPTikgeworICAgICAgICAucFJlc291cmNlID0gcy0+c3RhZ2lu Z19idWZmZXIsCisgICAgICAgIC5UeXBlICAgICAgPSBEM0QxMl9URVhUVVJFX0NPUFlfVFlQRV9Q TEFDRURfRk9PVFBSSU5ULAorICAgICAgICAuUGxhY2VkRm9vdHByaW50ID0geworICAgICAgICAg ICAgLk9mZnNldCA9IHMtPmx1bWFfY29tcG9uZW50X3NpemUsCisgICAgICAgICAgICAuRm9vdHBy aW50ID0geworICAgICAgICAgICAgICAgIC5Gb3JtYXQgICA9IHMtPmZvcm1hdCA9PSBEWEdJX0ZP Uk1BVF9QMDEwID8gRFhHSV9GT1JNQVRfUjE2RzE2X1VOT1JNIDogRFhHSV9GT1JNQVRfUjhHOF9V Tk9STSwKKyAgICAgICAgICAgICAgICAuV2lkdGggICAgPSBjdHgtPndpZHRoICA+PiAxLAorICAg ICAgICAgICAgICAgIC5IZWlnaHQgICA9IGN0eC0+aGVpZ2h0ID4+IDEsCisgICAgICAgICAgICAg ICAgLkRlcHRoICAgID0gMSwKKyAgICAgICAgICAgICAgICAuUm93UGl0Y2ggPSBsaW5lc2l6ZXNb MF0sCisgICAgICAgICAgICB9LAorICAgICAgICB9LAorICAgIH07CisKKyAgICBEWF9DSEVDSyhJ RDNEMTJDb21tYW5kQWxsb2NhdG9yX1Jlc2V0KHMtPmNvbW1hbmRfYWxsb2NhdG9yKSk7CisKKyAg ICBEWF9DSEVDSyhJRDNEMTJHcmFwaGljc0NvbW1hbmRMaXN0X1Jlc2V0KHMtPmNvbW1hbmRfbGlz dCwgcy0+Y29tbWFuZF9hbGxvY2F0b3IsIE5VTEwpKTsKKworICAgIGlmIChkb3dubG9hZCkgewor ICAgICAgICBJRDNEMTJHcmFwaGljc0NvbW1hbmRMaXN0X1Jlc291cmNlQmFycmllcihzLT5jb21t YW5kX2xpc3QsIDEsICZiYXJyaWVyKTsKKworICAgICAgICBJRDNEMTJHcmFwaGljc0NvbW1hbmRM aXN0X0NvcHlUZXh0dXJlUmVnaW9uKHMtPmNvbW1hbmRfbGlzdCwKKyAgICAgICAgICAgICZzdGFn aW5nX3lfbG9jYXRpb24sIDAsIDAsIDAsICZ0ZXh0dXJlX3lfbG9jYXRpb24sIE5VTEwpOworCisg ICAgICAgIElEM0QxMkdyYXBoaWNzQ29tbWFuZExpc3RfQ29weVRleHR1cmVSZWdpb24ocy0+Y29t bWFuZF9saXN0LAorICAgICAgICAgICAgJnN0YWdpbmdfdXZfbG9jYXRpb24sIDAsIDAsIDAsICZ0 ZXh0dXJlX3V2X2xvY2F0aW9uLCBOVUxMKTsKKworICAgICAgICBiYXJyaWVyLlRyYW5zaXRpb24u U3RhdGVCZWZvcmUgPSBiYXJyaWVyLlRyYW5zaXRpb24uU3RhdGVBZnRlcjsKKyAgICAgICAgYmFy cmllci5UcmFuc2l0aW9uLlN0YXRlQWZ0ZXIgPSBEM0QxMl9SRVNPVVJDRV9TVEFURV9DT01NT047 CisgICAgICAgIElEM0QxMkdyYXBoaWNzQ29tbWFuZExpc3RfUmVzb3VyY2VCYXJyaWVyKHMtPmNv bW1hbmRfbGlzdCwgMSwgJmJhcnJpZXIpOworCisgICAgICAgIERYX0NIRUNLKElEM0QxMkdyYXBo aWNzQ29tbWFuZExpc3RfQ2xvc2Uocy0+Y29tbWFuZF9saXN0KSk7CisKKyAgICAgICAgcmV0ID0g YXZfZDNkMTJ2YV93YWl0X2lkbGUoc3luY19jdHgpOworICAgICAgICBpZiAocmV0KQorICAgICAg ICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgCisgICAgICAgIElEM0QxMkNvbW1hbmRRdWV1ZV9F eGVjdXRlQ29tbWFuZExpc3RzKHMtPmNvbW1hbmRfcXVldWUsIDEsIChJRDNEMTJDb21tYW5kTGlz dCAqKikmcy0+Y29tbWFuZF9saXN0KTsKKworICAgICAgICByZXQgPSBhdl9kM2QxMnZhX3dhaXRf cXVldWVfaWRsZShzLT5zeW5jX2N0eCwgcy0+Y29tbWFuZF9xdWV1ZSk7OworICAgICAgICBpZiAo cmV0KQorICAgICAgICAgICAgcmV0dXJuIHJldDsKKworICAgICAgICBEWF9DSEVDSyhJRDNEMTJS ZXNvdXJjZV9NYXAocy0+c3RhZ2luZ19idWZmZXIsIDAsIE5VTEwsICZtYXBwZWRfZGF0YSkpOwor ICAgICAgICBhdl9pbWFnZV9maWxsX3BvaW50ZXJzKGRhdGEsIGN0eC0+c3dfZm9ybWF0LCBjdHgt PmhlaWdodCwgbWFwcGVkX2RhdGEsIGxpbmVzaXplcyk7CisKKyAgICAgICAgYXZfaW1hZ2VfY29w eShkc3QtPmRhdGEsIGRzdC0+bGluZXNpemUsIGRhdGEsIGxpbmVzaXplcywKKyAgICAgICAgICAg IGN0eC0+c3dfZm9ybWF0LCBjdHgtPndpZHRoLCBjdHgtPmhlaWdodCk7CisKKyAgICAgICAgSUQz RDEyUmVzb3VyY2VfVW5tYXAocy0+c3RhZ2luZ19idWZmZXIsIDAsIE5VTEwpOworICAgIH0gZWxz ZSB7CisgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwgIlRyYW5zZmVyIGRhdGEgdG8g QVZfUElYX0ZNVF9EM0QxMiBpcyBub3Qgc3VwcG9ydGVkIHlldCFcbiIpOworICAgICAgICByZXR1 cm4gQVZFUlJPUihFSU5WQUwpOworICAgIH0KKworICAgIHJldHVybiAwOworCitmYWlsOgorICAg IHJldHVybiBBVkVSUk9SKEVJTlZBTCk7Cit9CisKK3N0YXRpYyBpbnQgZDNkMTJ2YV9kZXZpY2Vf aW5pdChBVkhXRGV2aWNlQ29udGV4dCAqaHdkZXYpCit7CisgICAgQVZEM0QxMlZBRGV2aWNlQ29u dGV4dCAqY3R4ID0gaHdkZXYtPmh3Y3R4OworCisgICAgaWYgKCFjdHgtPnZpZGVvX2RldmljZSkK KyAgICAgICAgRFhfQ0hFQ0soSUQzRDEyRGV2aWNlX1F1ZXJ5SW50ZXJmYWNlKGN0eC0+ZGV2aWNl LCAmSUlEX0lEM0QxMlZpZGVvRGV2aWNlLCAodm9pZCAqKikmY3R4LT52aWRlb19kZXZpY2UpKTsK KworICAgIHJldHVybiAwOworCitmYWlsOgorICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7Cit9 CisKK3N0YXRpYyB2b2lkIGQzZDEydmFfZGV2aWNlX3VuaW5pdChBVkhXRGV2aWNlQ29udGV4dCAq aHdkZXYpCit7CisgICAgQVZEM0QxMlZBRGV2aWNlQ29udGV4dCAqZGV2aWNlX2h3Y3R4ID0gaHdk ZXYtPmh3Y3R4OworCisgICAgRDNEMTJfT0JKRUNUX1JFTEVBU0UoZGV2aWNlX2h3Y3R4LT52aWRl b19kZXZpY2UpOworICAgIEQzRDEyX09CSkVDVF9SRUxFQVNFKGRldmljZV9od2N0eC0+ZGV2aWNl KTsKK30KKworc3RhdGljIGludCBkM2QxMnZhX2RldmljZV9jcmVhdGUoQVZIV0RldmljZUNvbnRl eHQgKmN0eCwgY29uc3QgY2hhciAqZGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQVZEaWN0aW9uYXJ5ICpvcHRzLCBpbnQgZmxhZ3MpCit7CisgICAgQVZEM0QxMlZBRGV2 aWNlQ29udGV4dCAqZGV2aWNlX2h3Y3R4ID0gY3R4LT5od2N0eDsKKworICAgIEhSRVNVTFQgaHI7 CisgICAgVUlOVCBjcmVhdGVfZmxhZ3MgPSAwOworICAgIElEWEdJQWRhcHRlciAqcEFkYXB0ZXIg PSBOVUxMOworCisgICAgaW50IHJldDsKKyAgICBpbnQgaXNfZGVidWcgICAgICAgPSAhIWF2X2Rp Y3RfZ2V0KG9wdHMsICJkZWJ1ZyIsIE5VTEwsIDApOworICAgIGRldmljZV9od2N0eC0+c3luYyA9 ICEhYXZfZGljdF9nZXQob3B0cywgInN5bmMiLCAgTlVMTCwgMCk7CisKKyAgICBpZiAoKHJldCA9 IGZmX3RocmVhZF9vbmNlKCZmdW5jdGlvbnNfbG9hZGVkLCBsb2FkX2Z1bmN0aW9ucykpICE9IDAp CisgICAgICAgIHJldHVybiBBVkVSUk9SX1VOS05PV047CisKKyAgICBpZiAoaXNfZGVidWcpIHsK KyAgICAgICAgSUQzRDEyRGVidWcgKnBEZWJ1ZzsKKyAgICAgICAgaWYgKGQzZDEydmFfZ2V0X2Rl YnVnX2ludGVyZmFjZSAmJiBTVUNDRUVERUQoZDNkMTJ2YV9nZXRfZGVidWdfaW50ZXJmYWNlKCZJ SURfSUQzRDEyRGVidWcsICZwRGVidWcpKSkgeworICAgICAgICAgICAgY3JlYXRlX2ZsYWdzIHw9 IERYR0lfQ1JFQVRFX0ZBQ1RPUllfREVCVUc7CisgICAgICAgICAgICBJRDNEMTJEZWJ1Z19FbmFi bGVEZWJ1Z0xheWVyKHBEZWJ1Zyk7CisgICAgICAgICAgICBEM0QxMl9PQkpFQ1RfUkVMRUFTRShw RGVidWcpOworICAgICAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0lORk8sICJEM0QxMiBkZWJ1 ZyBsYXllciBpcyBlbmFibGVkIVxuIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIWRl dmljZV9od2N0eC0+ZGV2aWNlKSB7CisgICAgICAgIElEWEdJRmFjdG9yeTIgKnBEWEdJRmFjdG9y eSA9IE5VTEw7CisKKyAgICAgICAgaWYgKCFkM2QxMnZhX2NyZWF0ZV9kZXZpY2UgfHwgIWQzZDEy dmFfY3JlYXRlX2R4Z2lfZmFjdG9yeTIpIHsKKyAgICAgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xP R19FUlJPUiwgIkZhaWxlZCB0byBsb2FkIEQzRDEyIGxpYnJhcnkgb3IgaXRzIGZ1bmN0aW9uc1xu Iik7CisgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9VTktOT1dOOworICAgICAgICB9CisKKyAg ICAgICAgaHIgPSBkM2QxMnZhX2NyZWF0ZV9keGdpX2ZhY3RvcnkyKGNyZWF0ZV9mbGFncywgJklJ RF9JRFhHSUZhY3RvcnkyLCAodm9pZCAqKikmcERYR0lGYWN0b3J5KTsKKyAgICAgICAgaWYgKFNV Q0NFRURFRChocikpIHsKKyAgICAgICAgICAgIGludCBhZGFwdGVyID0gZGV2aWNlID8gYXRvaShk ZXZpY2UpIDogMDsKKyAgICAgICAgICAgIGlmIChGQUlMRUQoSURYR0lGYWN0b3J5Ml9FbnVtQWRh cHRlcnMocERYR0lGYWN0b3J5LCBhZGFwdGVyLCAmcEFkYXB0ZXIpKSkKKyAgICAgICAgICAgICAg ICBwQWRhcHRlciA9IE5VTEw7CisgICAgICAgICAgICBJRFhHSUZhY3RvcnkyX1JlbGVhc2UocERY R0lGYWN0b3J5KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwQWRhcHRlcikgeworICAgICAg ICAgICAgRFhHSV9BREFQVEVSX0RFU0MgZGVzYzsKKyAgICAgICAgICAgIGhyID0gSURYR0lBZGFw dGVyMl9HZXREZXNjKHBBZGFwdGVyLCAmZGVzYyk7CisgICAgICAgICAgICBpZiAoIUZBSUxFRCho cikpIHsKKyAgICAgICAgICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfSU5GTywgIlVzaW5nIGRl dmljZSAlMDR4OiUwNHggKCVscykuXG4iLAorICAgICAgICAgICAgICAgICAgICAgICBkZXNjLlZl bmRvcklkLCBkZXNjLkRldmljZUlkLCBkZXNjLkRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgIH0K KyAgICAgICAgfQorCisgICAgICAgIGhyID0gZDNkMTJ2YV9jcmVhdGVfZGV2aWNlKChJVW5rbm93 biAqKXBBZGFwdGVyLCBEM0RfRkVBVFVSRV9MRVZFTF8xMl8wLCAmSUlEX0lEM0QxMkRldmljZSwg JmRldmljZV9od2N0eC0+ZGV2aWNlKTsKKyAgICAgICAgRDNEMTJfT0JKRUNUX1JFTEVBU0UocEFk YXB0ZXIpOworICAgICAgICBpZiAoRkFJTEVEKGhyKSkgeworICAgICAgICAgICAgYXZfbG9nKGN0 eCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVkIHRvIGNyZWF0ZSBEaXJlY3RYM0QgMTIgZGV2aWNlICgl bHgpXG4iLCAobG9uZylocik7CisgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9VTktOT1dOOwor ICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK2NvbnN0IEhXQ29udGV4dFR5 cGUgZmZfaHdjb250ZXh0X3R5cGVfZDNkMTJ2YSA9IHsKKyAgICAudHlwZSAgICAgICAgICAgICAg ICAgICA9IEFWX0hXREVWSUNFX1RZUEVfRDNEMTJWQSwKKyAgICAubmFtZSAgICAgICAgICAgICAg ICAgICA9ICJEM0QxMlZBIiwKKworICAgIC5kZXZpY2VfaHdjdHhfc2l6ZSAgICAgID0gc2l6ZW9m KEFWRDNEMTJWQURldmljZUNvbnRleHQpLAorICAgIC5mcmFtZXNfaHdjdHhfc2l6ZSAgICAgID0g c2l6ZW9mKEFWRDNEMTJWQUZyYW1lc0NvbnRleHQpLAorICAgIC5mcmFtZXNfcHJpdl9zaXplICAg ICAgID0gc2l6ZW9mKEQzRDEyVkFGcmFtZXNDb250ZXh0KSwKKworICAgIC5kZXZpY2VfY3JlYXRl ICAgICAgICAgID0gZDNkMTJ2YV9kZXZpY2VfY3JlYXRlLAorICAgIC5kZXZpY2VfaW5pdCAgICAg ICAgICAgID0gZDNkMTJ2YV9kZXZpY2VfaW5pdCwKKyAgICAuZGV2aWNlX3VuaW5pdCAgICAgICAg ICA9IGQzZDEydmFfZGV2aWNlX3VuaW5pdCwKKyAgICAuZnJhbWVzX2dldF9jb25zdHJhaW50cyA9 IGQzZDEydmFfZnJhbWVzX2dldF9jb25zdHJhaW50cywKKyAgICAuZnJhbWVzX2luaXQgICAgICAg ICAgICA9IGQzZDEydmFfZnJhbWVzX2luaXQsCisgICAgLmZyYW1lc191bmluaXQgICAgICAgICAg PSBkM2QxMnZhX2ZyYW1lc191bmluaXQsCisgICAgLmZyYW1lc19nZXRfYnVmZmVyICAgICAgPSBk M2QxMnZhX2dldF9idWZmZXIsCisgICAgLnRyYW5zZmVyX2dldF9mb3JtYXRzICAgPSBkM2QxMnZh X3RyYW5zZmVyX2dldF9mb3JtYXRzLAorICAgIC50cmFuc2Zlcl9kYXRhX3RvICAgICAgID0gZDNk MTJ2YV90cmFuc2Zlcl9kYXRhLAorICAgIC50cmFuc2Zlcl9kYXRhX2Zyb20gICAgID0gZDNkMTJ2 YV90cmFuc2Zlcl9kYXRhLAorCisgICAgLnBpeF9mbXRzICAgICAgICAgICAgICAgPSAoY29uc3Qg ZW51bSBBVlBpeGVsRm9ybWF0W10peyBBVl9QSVhfRk1UX0QzRDEyLCBBVl9QSVhfRk1UX05PTkUg fSwKK307CmRpZmYgLS1naXQgYS9saWJhdnV0aWwvaHdjb250ZXh0X2QzZDEydmEuaCBiL2xpYmF2 dXRpbC9od2NvbnRleHRfZDNkMTJ2YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAuLjZlMWM5NzUwYjcKLS0tIC9kZXYvbnVsbAorKysgYi9saWJhdnV0aWwvaHdjb250ZXh0 X2QzZDEydmEuaApAQCAtMCwwICsxLDIyOSBAQAorLyoKKyAqIERpcmVjdDNEIDEyIEhXIGFjY2Vs ZXJhdGlvbi4KKyAqCisgKiBjb3B5cmlnaHQgKGMpIDIwMjIgV3UgSmlhbmh1YSA8dG9xc3h3QG91 dGxvb2suY29tPgorICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBG Rm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V CisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUg dG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0 cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworCisjaWZu ZGVmIEFWVVRJTF9IV0NPTlRFWFRfRDNEMTJWQV9ICisjZGVmaW5lIEFWVVRJTF9IV0NPTlRFWFRf RDNEMTJWQV9ICisKKy8qKgorICogQGRlZiBDT0JKTUFDUk9TCisgKgorICogQGJyaWVmIEVuYWJs ZSBDIHN0eWxlIGludGVyZmFjZSBmb3IgRDNEMTIKKyAqLworI2lmbmRlZiBDT0JKTUFDUk9TCisj ZGVmaW5lIENPQkpNQUNST1MKKyNlbmRpZgorCisvKioKKyAqIEBmaWxlCisgKiBBbiBBUEktc3Bl Y2lmaWMgaGVhZGVyIGZvciBBVl9IV0RFVklDRV9UWVBFX0QzRDEyVkEuCisgKgorICovCisjaW5j bHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8aW5pdGd1aWQuaD4KKyNpbmNsdWRlIDxkM2QxMi5o PgorI2luY2x1ZGUgPGQzZDEydmlkZW8uaD4KKworLyoqCisgKiBAZGVmIERYX0NIRUNLCisgKgor ICogQGJyaWVmIEEgY2hlY2sgbWFjcm8gdXNlZCBieSBEM0QxMiBmdW5jdGlvbnMgaGlnaGx5IGZy ZXF1ZW50bHkKKyAqLworI2RlZmluZSBEWF9DSEVDSyhocikgaWYgKEZBSUxFRChocikpIHsgXAor ICAgIGF2X2xvZyhOVUxMLCBBVl9MT0dfRVJST1IsICJEM0QxMiBlcnJvciBvY2N1cnJlZCEgUGxl YXNlIGVuYWJsZSBkZWJ1Zz0xIGFuZCBjaGVjayB0aGUgb3V0cHV0IGZvciBtb3JlIGRldGFpbHMh XG4iKTsgXAorICAgIGdvdG8gZmFpbDsgXAorfQorCisvKioKKyAqIEBkZWYgRDNEMTJfT0JKRUNU X1JFTEVBU0UKKyAqCisgKiBAYnJpZWYgQSByZWxlYXNlIG1hY3JvIHVzZWQgYnkgRDNEMTIgb2Jq ZWN0cyBoaWdobHkgZnJlcXVlbnRseQorICovCisjZGVmaW5lIEQzRDEyX09CSkVDVF9SRUxFQVNF KHBJbnRlcmZhY2UpIGlmIChwSW50ZXJmYWNlKSB7IFwKKyAgICBJVW5rbm93bl9SZWxlYXNlKChJ VW5rbm93biAqKXBJbnRlcmZhY2UpOyBcCisgICAgcEludGVyZmFjZSA9IE5VTEw7IFwKK30KKwor LyoqCisgKiBAZGVmIEQzRDEyVkFfTUFYX1NVUkZBQ0VTCisgKgorICogQGJyaWVmIE1heGltdW0g bnVtYmVyIHN1cmZhY2VzCisgKiBUaGUgcmVmZXJlbmNlIHByb2Nlc3Npbmcgb3ZlciBkZWNvZGlu ZyB3aWxsIGJlIGNvcnJ1cHRlZCBvbiBzb21lIGRyaXZlcnMKKyAqIGlmIHRoZSBtYXggbnVtYmVy IG9mIHJlZmVyZW5jZSBmcmFtZXMgZXhjZWVkcyB0aGlzLgorICovCisjZGVmaW5lIEQzRDEyVkFf TUFYX1NVUkZBQ0VTIDMyCisKKy8qKgorICogQGJyaWVmIFRoaXMgc3RydWN0IGlzIGFsbG9jYXRl ZCBhcyBBVkhXRGV2aWNlQ29udGV4dC5od2N0eAorICoKKyAqLwordHlwZWRlZiBzdHJ1Y3QgQVZE M0QxMlZBRGV2aWNlQ29udGV4dCB7CisgICAgLyoqCisgICAgICogRGV2aWNlIHVzZWQgZm9yIG9i amVjdHMgY3JlYXRpb24gYW5kIGFjY2Vzcy4gVGhpcyBjYW4gYWxzbyBiZQorICAgICAqIHVzZWQg dG8gc2V0IHRoZSBsaWJhdmNvZGVjIGRlY29kaW5nIGRldmljZS4KKyAgICAgKgorICAgICAqIENh biBiZSBzZXQgYnkgdGhlIHVzZXIuIFRoaXMgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGZpZWxkIC0g dGhlIG90aGVyCisgICAgICogZGV2aWNlIGNvbnRleHQgZmllbGRzIGFyZSBzZXQgZnJvbSB0aGlz IGFuZCBhcmUgYXZhaWxhYmxlIGZvciBjb252ZW5pZW5jZS4KKyAgICAgKgorICAgICAqIERlYWxs b2NhdGluZyB0aGUgQVZIV0RldmljZUNvbnRleHQgd2lsbCBhbHdheXMgcmVsZWFzZSB0aGlzIGlu dGVyZmFjZSwKKyAgICAgKiBhbmQgaXQgZG9lcyBub3QgbWF0dGVyIHdoZXRoZXIgaXQgd2FzIHVz ZXItYWxsb2NhdGVkLgorICAgICAqLworICAgIElEM0QxMkRldmljZSAqZGV2aWNlOworCisgICAg LyoqCisgICAgICogSWYgdW5zZXQsIHRoaXMgd2lsbCBiZSBzZXQgZnJvbSB0aGUgZGV2aWNlIGZp ZWxkIG9uIGluaXQuCisgICAgICoKKyAgICAgKiBEZWFsbG9jYXRpbmcgdGhlIEFWSFdEZXZpY2VD b250ZXh0IHdpbGwgYWx3YXlzIHJlbGVhc2UgdGhpcyBpbnRlcmZhY2UsCisgICAgICogYW5kIGl0 IGRvZXMgbm90IG1hdHRlciB3aGV0aGVyIGl0IHdhcyB1c2VyLWFsbG9jYXRlZC4KKyAgICAgKi8K KyAgICBJRDNEMTJWaWRlb0RldmljZSAqdmlkZW9fZGV2aWNlOworCisgICAgLyoqCisgICAgICog U3BlY2lmZWQgYnkgc3luYz0xIHdoZW4gaW5pdCBkM2QxMnZhCisgICAgICoKKyAgICAgKiBFeGVj dXRlIGNvbW1hbmRzIGFzIHN5bmMgbW9kZQorICAgICAqLworICAgIGludCBzeW5jOworfSBBVkQz RDEyVkFEZXZpY2VDb250ZXh0OworCisvKioKKyAqIEBicmllZiBUaGlzIHN0cnVjdCBpcyB1c2Vk IHRvIHN5bmMgZDNkMTIgZXhlY3V0aW9uCisgKgorICovCit0eXBlZGVmIHN0cnVjdCBBVkQzRDEy VkFTeW5jQ29udGV4dCB7CisgICAgLyoqCisgICAgICogRDNEMTIgZmVuY2Ugb2JqZWN0CisgICAg ICovCisgICAgSUQzRDEyRmVuY2UgKmZlbmNlOworCisgICAgLyoqCisgICAgICogQSBoYW5kbGUg dG8gdGhlIGV2ZW50IG9iamVjdAorICAgICAqLworICAgIEhBTkRMRSBldmVudDsKKworICAgIC8q KgorICAgICAqIFRoZSBmZW5jZSB2YWx1ZSB1c2VkIGZvciBzeW5jCisgICAgICovCisgICAgdWlu dDY0X3QgZmVuY2VfdmFsdWU7Cit9IEFWRDNEMTJWQVN5bmNDb250ZXh0OworCisvKioKKyAqIEBi cmllZiBEM0QxMiBmcmFtZSBkZXNjcmlwdG9yIGZvciBwb29sIGFsbG9jYXRpb24uCisgKgorICov Cit0eXBlZGVmIHN0cnVjdCBBVkQzRDEyRnJhbWVEZXNjcmlwdG9yIHsKKyAgICAvKioKKyAgICAg KiBUaGUgdGV4dHVyZSBpbiB3aGljaCB0aGUgZnJhbWUgaXMgbG9jYXRlZC4gVGhlIHJlZmVyZW5j ZSBjb3VudCBpcworICAgICAqIG1hbmFnZWQgYnkgdGhlIEFWQnVmZmVyUmVmLCBhbmQgZGVzdHJv eWluZyB0aGUgcmVmZXJlbmNlIHdpbGwgcmVsZWFzZQorICAgICAqIHRoZSBpbnRlcmZhY2UuCisg ICAgICoKKyAgICAgKiBOb3JtYWxseSBzdG9yZWQgaW4gQVZGcmFtZS5kYXRhWzBdLgorICAgICAq LworICAgIElEM0QxMlJlc291cmNlICp0ZXh0dXJlOworCisgICAgLyoqCisgICAgICogVGhlIGlu ZGV4IGludG8gdGhlIGFycmF5IHRleHR1cmUgZWxlbWVudCByZXByZXNlbnRpbmcgdGhlIGZyYW1l CisgICAgICoKKyAgICAgKiBOb3JtYWxseSBzdG9yZWQgaW4gQVZGcmFtZS5kYXRhWzFdIChjYXN0 IGZyb20gaW50cHRyX3QpLgorICAgICAqLworICAgIGludHB0cl90IGluZGV4OworCisgICAgLyoq CisgICAgICogVGhlIHN5bmMgY29udGV4dCBmb3IgdGhlIHRleHR1cmUKKyAgICAgKgorICAgICAq IFVzZSBhdl9kM2QxMnZhX3dhaXRfaWRsZShzeW5jX2N0eCkgdG8gZW5zdXJlIHRoZSBkZWNvZGlu ZyBvciBlbmNvZGluZyBoYXZlIGJlZW4gZmluaXNlZAorICAgICAqIEBzZWU6IGh0dHBzOi8vbGVh cm4ubWljcm9zb2Z0LmNvbS9lbi11cy93aW5kb3dzL3dpbjMyL21lZGZvdW5kL2RpcmVjdDNkLTEy LXZpZGVvLW92ZXJ2aWV3I2RpcmVjdHgtMTItZmVuY2VzCisgICAgICoKKyAgICAgKiBOb3JtYWxs eSBzdG9yZWQgaW4gQVZGcmFtZS5kYXRhWzJdLgorICAgICAqLworICAgIEFWRDNEMTJWQVN5bmND b250ZXh0ICpzeW5jX2N0eDsKK30gQVZEM0QxMkZyYW1lRGVzY3JpcHRvcjsKKworLyoqCisgKiBA YnJpZWYgVGhpcyBzdHJ1Y3QgaXMgYWxsb2NhdGVkIGFzIEFWSFdGcmFtZXNDb250ZXh0Lmh3Y3R4 CisgKgorICovCit0eXBlZGVmIHN0cnVjdCBBVkQzRDEyVkFGcmFtZXNDb250ZXh0IHsKKyAgICAv KioKKyAgICAgKiBUaGUgc2FtZSBpbXBsZW1lbnRhdGlvbiBhcyBkM2QxMXZhCisgICAgICogVGhp cyBmaWVsZCBpcyBub3QgYWJsZSB0byBiZSB1c2VyLWFsbG9jYXRlZCBhdCB0aGUgcHJlc2VudC4K KyAgICAgKi8KKyAgICBBVkQzRDEyRnJhbWVEZXNjcmlwdG9yICp0ZXh0dXJlX2luZm9zOworfSBB VkQzRDEyVkFGcmFtZXNDb250ZXh0OworCisvKioKKyAqIEBicmllZiBNYXAgc3cgcGl4ZWwgZm9y bWF0IHRvIGQzZDEyIGZvcm1hdAorICoKKyAqIEBwYXJhbSBwaXhfZm10CisgKiBAcmV0dXJuIGQz ZDEyIHNwZWNpZmllZCBmb3JtYXQKKyAqLworRFhHSV9GT1JNQVQgYXZfZDNkMTJ2YV9tYXBfc3df dG9faHdfZm9ybWF0KGVudW0gQVZQaXhlbEZvcm1hdCBwaXhfZm10KTsKKworLyoqCisgKiBAYnJp ZWYgQ3JlYXRlIGEgQVZEM0QxMlZBU3luY0NvbnRleHQKKyAqCisgKiBAcGFyYW0gY3R4CisgKiBA cGFyYW0gc3luY19jdHgKKyAqIEByZXR1cm4gRXJyb3IgY29kZSAocmV0IDwgMCBpZiBmYWlsZWQp CisgKi8KK2ludCBhdl9kM2QxMnZhX2NyZWF0ZV9zeW5jX2NvbnRleHQoQVZEM0QxMlZBRGV2aWNl Q29udGV4dCAqY3R4LCBBVkQzRDEyVkFTeW5jQ29udGV4dCAqKnN5bmNfY3R4KTsKKworLyoqCisg KiBAYnJpZWYgUmVsZWFzZSBhIEFWRDNEMTJWQVN5bmNDb250ZXh0CisgKgorICogQHBhcmFtIHN5 bmNfY3R4CisgKiBAcmV0dXJuIEVycm9yIGNvZGUgKHJldCA8IDAgaWYgZmFpbGVkKSwgY2FuIGJl IGlnbm9yZWQKKyAqLworaW50IGF2X2QzZDEydmFfcmVsZWFzZV9zeW5jX2NvbnRleHQoQVZEM0Qx MlZBU3luY0NvbnRleHQgKnN5bmNfY3R4KTsKKworLyoqCisgKiBAYnJpZWYgV2FpdCBmb3IgYSBz cGVjaWZpZWQgZmVuY2UgdmFsdWUKKyAqCisgKiBUaGUgZXhlY3V0aW9uIGZlbmNlIHZhbHVlcyB0 aW1lbGluZSBtYXkgYmUgbGlrZToKKyAqICMwIC0+ICMxIC0+ICMyIC0+ICMzIC0tLS0tLS0tLS0t LS0tLS0+ICNuCisgKiAgICAgICAgICAgICBeCisgKiAgICAgICAgICAgICB8CisgKiBDYWxsIGF2 X2QzZDEydmFfd2FpdF9mb3JfZmVuY2VfdmFsdWUoMikgd2lsbCB3YWl0ICMyIGV4ZWN1dGlvbiB0 byBiZSBjb21wbGV0ZWQuCisgKgorICogQHBhcmFtIHN5bmNfY3R4CisgKiBAcGFyYW0gZmVuY2Vf dmFsdWUKKyAqIEByZXR1cm4gRXJyb3IgY29kZSAocmV0IDwgMCBpZiBmYWlsZWQpCisgKi8KK2lu dCBhdl9kM2QxMnZhX3dhaXRfZm9yX2ZlbmNlX3ZhbHVlKEFWRDNEMTJWQVN5bmNDb250ZXh0ICpz eW5jX2N0eCwgdWludDY0X3QgZmVuY2VfdmFsdWUpOworCisvKioKKyAqIEBicmllZiBXYWl0IGZv ciB0aGUgc3luYyBjb250ZXh0IHRvIHRoZSBpZGxlIHN0YXRlCisgKgorICogQHBhcmFtIHN5bmNf Y3R4CisgKiBAcmV0dXJuIEVycm9yIGNvZGUgKHJldCA8IDAgaWYgZmFpbGVkKQorICovCitpbnQg YXZfZDNkMTJ2YV93YWl0X2lkbGUoQVZEM0QxMlZBU3luY0NvbnRleHQgKnN5bmNfY3R4KTsKKwor LyoqCisgKiBAYnJpZWYgV2FpdCBmb3IgYSBzcGVjaWZpZWQgY29tbWFuZCBxdWV1ZSB0byB0aGUg aWRsZSBzdGF0ZQorICoKKyAqIEBwYXJhbSBzeW5jX2N0eAorICogQHBhcmFtIGNvbW1hbmRfcXVl dWUKKyAqIEByZXR1cm4gRXJyb3IgY29kZSAocmV0IDwgMCBpZiBmYWlsZWQpCisgKi8KK2ludCBh dl9kM2QxMnZhX3dhaXRfcXVldWVfaWRsZShBVkQzRDEyVkFTeW5jQ29udGV4dCAqc3luY19jdHgs IElEM0QxMkNvbW1hbmRRdWV1ZSAqY29tbWFuZF9xdWV1ZSk7CisKKyNlbmRpZiAvKiBBVlVUSUxf SFdDT05URVhUX0QzRDEyVkFfSCAqLwpkaWZmIC0tZ2l0IGEvbGliYXZ1dGlsL2h3Y29udGV4dF9p bnRlcm5hbC5oIGIvbGliYXZ1dGlsL2h3Y29udGV4dF9pbnRlcm5hbC5oCmluZGV4IGU2MjY2NDk0 YWMuLjRkZjUxNmVlNmEgMTAwNjQ0Ci0tLSBhL2xpYmF2dXRpbC9od2NvbnRleHRfaW50ZXJuYWwu aAorKysgYi9saWJhdnV0aWwvaHdjb250ZXh0X2ludGVybmFsLmgKQEAgLTE2NSw2ICsxNjUsNyBA QCBpbnQgZmZfaHdmcmFtZV9tYXBfcmVwbGFjZShBVkZyYW1lICpkc3QsIGNvbnN0IEFWRnJhbWUg KnNyYyk7CiAKIGV4dGVybiBjb25zdCBIV0NvbnRleHRUeXBlIGZmX2h3Y29udGV4dF90eXBlX2N1 ZGE7CiBleHRlcm4gY29uc3QgSFdDb250ZXh0VHlwZSBmZl9od2NvbnRleHRfdHlwZV9kM2QxMXZh OworZXh0ZXJuIGNvbnN0IEhXQ29udGV4dFR5cGUgZmZfaHdjb250ZXh0X3R5cGVfZDNkMTJ2YTsK IGV4dGVybiBjb25zdCBIV0NvbnRleHRUeXBlIGZmX2h3Y29udGV4dF90eXBlX2RybTsKIGV4dGVy biBjb25zdCBIV0NvbnRleHRUeXBlIGZmX2h3Y29udGV4dF90eXBlX2R4dmEyOwogZXh0ZXJuIGNv bnN0IEhXQ29udGV4dFR5cGUgZmZfaHdjb250ZXh0X3R5cGVfb3BlbmNsOwpkaWZmIC0tZ2l0IGEv bGliYXZ1dGlsL3BpeGRlc2MuYyBiL2xpYmF2dXRpbC9waXhkZXNjLmMKaW5kZXggNjJhMmFlMDhk OS4uODg4N2ZhNTZiOCAxMDA2NDQKLS0tIGEvbGliYXZ1dGlsL3BpeGRlc2MuYworKysgYi9saWJh dnV0aWwvcGl4ZGVzYy5jCkBAIC0yMjgzLDYgKzIyODMsMTAgQEAgc3RhdGljIGNvbnN0IEFWUGl4 Rm10RGVzY3JpcHRvciBhdl9waXhfZm10X2Rlc2NyaXB0b3JzW0FWX1BJWF9GTVRfTkJdID0gewog ICAgICAgICAubmFtZSA9ICJkM2QxMSIsCiAgICAgICAgIC5mbGFncyA9IEFWX1BJWF9GTVRfRkxB R19IV0FDQ0VMLAogICAgIH0sCisgICAgW0FWX1BJWF9GTVRfRDNEMTJdID0geworICAgICAgICAu bmFtZSA9ICJkM2QxMiIsCisgICAgICAgIC5mbGFncyA9IEFWX1BJWF9GTVRfRkxBR19IV0FDQ0VM LAorICAgIH0sCiAgICAgW0FWX1BJWF9GTVRfR0JSUEYzMkJFXSA9IHsKICAgICAgICAgLm5hbWUg PSAiZ2JycGYzMmJlIiwKICAgICAgICAgLm5iX2NvbXBvbmVudHMgPSAzLApkaWZmIC0tZ2l0IGEv bGliYXZ1dGlsL3BpeGZtdC5oIGIvbGliYXZ1dGlsL3BpeGZtdC5oCmluZGV4IDM3YzJjNzllMDEu LjE4NzAxMzNiZjcgMTAwNjQ0Ci0tLSBhL2xpYmF2dXRpbC9waXhmbXQuaAorKysgYi9saWJhdnV0 aWwvcGl4Zm10LmgKQEAgLTMzMiw2ICszMzIsMTUgQEAgZW51bSBBVlBpeGVsRm9ybWF0IHsKICAg ICAgKi8KICAgICBBVl9QSVhfRk1UX0QzRDExLAogCisgICAgLyoqCisgICAgICogSGFyZHdhcmUg c3VyZmFjZXMgZm9yIERpcmVjdDNEMTIuCisgICAgICoKKyAgICAgKiBkYXRhWzBdIGNvbnRhaW5z IGEgSUQzRDEyUmVzb3VyY2UgcG9pbnRlci4KKyAgICAgKiBkYXRhWzFdIGNvbnRhaW5zIHRoZSBy ZXNvdXJjZSBhcnJheSBpbmRleCBvZiB0aGUgZnJhbWUgYXMgaW50cHRyX3QuCisgICAgICogZGF0 YVsyXSBjb250YWlucyB0aGUgc3luYyBjb250ZXh0IGZvciBjdXJyZW50IHJlc291cmNlCisgICAg ICovCisgICAgQVZfUElYX0ZNVF9EM0QxMiwKKwogICAgIEFWX1BJWF9GTVRfR1JBWTlCRSwgICAv Ly88ICAgICAgICBZICAgICAgICAsIDlicHAsIGJpZy1lbmRpYW4KICAgICBBVl9QSVhfRk1UX0dS QVk5TEUsICAgLy8vPCAgICAgICAgWSAgICAgICAgLCA5YnBwLCBsaXR0bGUtZW5kaWFuCiAKZGlm ZiAtLWdpdCBhL2xpYmF2dXRpbC90ZXN0cy9od2RldmljZS5jIGIvbGliYXZ1dGlsL3Rlc3RzL2h3 ZGV2aWNlLmMKaW5kZXggN2ViMzU1Yzk4OC4uMDMyMmJkOWZjYiAxMDA2NDQKLS0tIGEvbGliYXZ1 dGlsL3Rlc3RzL2h3ZGV2aWNlLmMKKysrIGIvbGliYXZ1dGlsL3Rlc3RzL2h3ZGV2aWNlLmMKQEAg LTEzNyw2ICsxMzcsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHsKICAgICAgIHsgIjAiLCAiMSIs ICIyIiB9IH0sCiAgICAgeyBBVl9IV0RFVklDRV9UWVBFX0QzRDExVkEsCiAgICAgICB7ICIwIiwg IjEiLCAiMiIgfSB9LAorICAgIHsgQVZfSFdERVZJQ0VfVFlQRV9EM0QxMlZBLAorICAgICAgeyAi MCIsICIxIiwgIjIiIH0gfSwKICAgICB7IEFWX0hXREVWSUNFX1RZUEVfT1BFTkNMLAogICAgICAg eyAiMC4wIiwgIjAuMSIsICIxLjAiLCAiMS4xIiB9IH0sCiAgICAgeyBBVl9IV0RFVklDRV9UWVBF X1ZBQVBJLApkaWZmIC0tZ2l0IGEvbGliYXZ1dGlsL3ZlcnNpb24uaCBiL2xpYmF2dXRpbC92ZXJz aW9uLmgKaW5kZXggM2I2MTZlYTQ4OS4uNjBmOTZhZjVkZiAxMDA2NDQKLS0tIGEvbGliYXZ1dGls L3ZlcnNpb24uaAorKysgYi9saWJhdnV0aWwvdmVyc2lvbi5oCkBAIC03OSw3ICs3OSw3IEBACiAg Ki8KIAogI2RlZmluZSBMSUJBVlVUSUxfVkVSU0lPTl9NQUpPUiAgNTcKLSNkZWZpbmUgTElCQVZV VElMX1ZFUlNJT05fTUlOT1IgIDQzCisjZGVmaW5lIExJQkFWVVRJTF9WRVJTSU9OX01JTk9SICA0 NAogI2RlZmluZSBMSUJBVlVUSUxfVkVSU0lPTl9NSUNSTyAxMDAKIAogI2RlZmluZSBMSUJBVlVU SUxfVkVSU0lPTl9JTlQgICBBVl9WRVJTSU9OX0lOVChMSUJBVlVUSUxfVkVSU0lPTl9NQUpPUiwg XAotLSAKMi4zMi4wCgo= --_009_OSZP286MB217328A12BC439F5BB31897DCAE99OSZP286MB2173JPNP_ Content-Type: application/octet-stream; name="0002-avcodec-add-D3D12VA-hardware-accelerated-H264-decodi.patch" Content-Description: 0002-avcodec-add-D3D12VA-hardware-accelerated-H264-decodi.patch Content-Disposition: attachment; filename="0002-avcodec-add-D3D12VA-hardware-accelerated-H264-decodi.patch"; size=45738; creation-date="Fri, 23 Dec 2022 17:45:08 GMT"; modification-date="Fri, 23 Dec 2022 18:00:31 GMT" Content-Transfer-Encoding: base64 RnJvbSBiZmM5MzM5YjgwNGNiYTkxOGRkYWFlMzc5YTNjM2RkYzUzYTYxYTM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBXdSBKaWFuaHVhIDx0b3FzeHdAb3V0bG9vay5jb20+CkRhdGU6 IFNhdCwgMTcgRGVjIDIwMjIgMDE6MzI6NTkgKzA4MDAKU3ViamVjdDogW1BBVENIIDIvNl0gYXZj b2RlYzogYWRkIEQzRDEyVkEgaGFyZHdhcmUgYWNjZWxlcmF0ZWQgSDI2NCBkZWNvZGluZwoKVGhl IGltcGxlbWVudGF0aW9uIGlzIGJhc2VkIG9uOgpodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20v ZW4tdXMvd2luZG93cy93aW4zMi9tZWRmb3VuZC9kaXJlY3QzZC0xMi12aWRlby1vdmVydmlldwoK V2l0aCB0aGUgRGlyZWN0M0QgMTIgdmlkZW8gZGVjb2Rpbmcgc3VwcG9ydCwgd2UgY2FuIHJlbmRl ciBvciBwcm9jZXNzCnRoZSBkZWNvZGVkIGltYWdlcyBieSB0aGUgcGl4ZWwgc2hhZGVycyBvciBj b21wdXRlIHNoYWRlcnMgZGlyZWN0bHkKd2l0aG91dCB0aGUgZXh0cmEgY29weSBvdmVyaGVhZCwg d2hpY2ggaXMgYmVuZWZpY2lhbCBlc3BlY2lhbGx5IGlmIHlvdQphcmUgdHJ5aW5nIHRvIHJlbmRl ciBvciBwb3N0LXByb2Nlc3MgYSA0SyBvciA4SyB2aWRlby4KClRoZSBjb21tYW5kIGJlbG93IGlz IGhvdyB0byBlbmFibGUgZDNkMTJ2YToKZmZtcGVnIC1od2FjY2VsIGQzZDEydmEgLWkgaW5wdXQu bXA0IG91dHB1dC5tcDQKClNpZ25lZC1vZmYtYnk6IFd1IEppYW5odWEgPHRvcXN4d0BvdXRsb29r LmNvbT4KLS0tCiBjb25maWd1cmUgICAgICAgICAgICAgICAgICB8ICAgMiArCiBsaWJhdmNvZGVj L01ha2VmaWxlICAgICAgICB8ICAgMyArCiBsaWJhdmNvZGVjL2QzZDEyZGVjLmMgICAgICB8IDU1 MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWJhdmNvZGVjL2QzZDEy ZGVjLmggICAgICB8IDE5MSArKysrKysrKysrKysrCiBsaWJhdmNvZGVjL2QzZDEyZGVjX2gyNjQu YyB8IDM0MiArKysrKysrKysrKysrKysrKysrKysrKwogbGliYXZjb2RlYy9oMjY0X3NsaWNlLmMg ICAgfCAgIDQgKwogbGliYXZjb2RlYy9oMjY0ZGVjLmMgICAgICAgfCAgIDUgKy0KIGxpYmF2Y29k ZWMvaHdhY2NlbHMuaCAgICAgIHwgICAxICsKIGxpYmF2Y29kZWMvaHdjb25maWcuaCAgICAgIHwg ICAyICsKIDkgZmlsZXMgY2hhbmdlZCwgMTEwMCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0p CiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9kM2QxMmRlYy5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgbGliYXZjb2RlYy9kM2QxMmRlYy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2Rl Yy9kM2QxMmRlY19oMjY0LmMKCmRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKaW5k ZXggN2NhYmE4YWU3MS4uODIzZDhlNDQ4ZCAxMDA3NTUKLS0tIGEvY29uZmlndXJlCisrKyBiL2Nv bmZpZ3VyZQpAQCAtMzAyNiw2ICszMDI2LDggQEAgaDI2NF9kM2QxMXZhX2h3YWNjZWxfZGVwcz0i ZDNkMTF2YSIKIGgyNjRfZDNkMTF2YV9od2FjY2VsX3NlbGVjdD0iaDI2NF9kZWNvZGVyIgogaDI2 NF9kM2QxMXZhMl9od2FjY2VsX2RlcHM9ImQzZDExdmEiCiBoMjY0X2QzZDExdmEyX2h3YWNjZWxf c2VsZWN0PSJoMjY0X2RlY29kZXIiCitoMjY0X2QzZDEyZGVjX2h3YWNjZWxfZGVwcz0iZDNkMTJ2 YSIKK2gyNjRfZDNkMTJkZWNfaHdhY2NlbF9zZWxlY3Q9ImgyNjRfZGVjb2RlciIKIGgyNjRfZHh2 YTJfaHdhY2NlbF9kZXBzPSJkeHZhMiIKIGgyNjRfZHh2YTJfaHdhY2NlbF9zZWxlY3Q9ImgyNjRf ZGVjb2RlciIKIGgyNjRfbnZkZWNfaHdhY2NlbF9kZXBzPSJudmRlYyIKZGlmZiAtLWdpdCBhL2xp YmF2Y29kZWMvTWFrZWZpbGUgYi9saWJhdmNvZGVjL01ha2VmaWxlCmluZGV4IDk4ODQxZWQwN2Mu LjJjZmM0NzM4NzUgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvTWFrZWZpbGUKKysrIGIvbGliYXZj b2RlYy9NYWtlZmlsZQpAQCAtOTYxLDYgKzk2MSw3IEBAIE9CSlMtJChDT05GSUdfQURQQ01fWk9S S19ERUNPREVSKSAgICAgICAgICs9IGFkcGNtLm8gYWRwY21fZGF0YS5vCiAKICMgaGFyZHdhcmUg YWNjZWxlcmF0b3JzCiBPQkpTLSQoQ09ORklHX0QzRDExVkEpICAgICAgICAgICAgICAgICAgICAr PSBkeHZhMi5vCitPQkpTLSQoQ09ORklHX0QzRDEyVkEpICAgICAgICAgICAgICAgICAgICArPSBk M2QxMmRlYy5vCiBPQkpTLSQoQ09ORklHX0RYVkEyKSAgICAgICAgICAgICAgICAgICAgICArPSBk eHZhMi5vCiBPQkpTLSQoQ09ORklHX05WREVDKSAgICAgICAgICAgICAgICAgICAgICArPSBudmRl Yy5vCiBPQkpTLSQoQ09ORklHX1ZBQVBJKSAgICAgICAgICAgICAgICAgICAgICArPSB2YWFwaV9k ZWNvZGUubwpAQCAtOTc2LDYgKzk3Nyw3IEBAIE9CSlMtJChDT05GSUdfSDI2M19WQUFQSV9IV0FD Q0VMKSAgICAgICAgICs9IHZhYXBpX21wZWc0Lm8KIE9CSlMtJChDT05GSUdfSDI2M19WSURFT1RP T0xCT1hfSFdBQ0NFTCkgICs9IHZpZGVvdG9vbGJveC5vCiBPQkpTLSQoQ09ORklHX0gyNjRfRDNE MTFWQV9IV0FDQ0VMKSAgICAgICArPSBkeHZhMl9oMjY0Lm8KIE9CSlMtJChDT05GSUdfSDI2NF9E WFZBMl9IV0FDQ0VMKSAgICAgICAgICs9IGR4dmEyX2gyNjQubworT0JKUy0kKENPTkZJR19IMjY0 X0QzRDEyREVDX0hXQUNDRUwpICAgICAgKz0gZDNkMTJkZWNfaDI2NC5vCiBPQkpTLSQoQ09ORklH X0gyNjRfTlZERUNfSFdBQ0NFTCkgICAgICAgICArPSBudmRlY19oMjY0Lm8KIE9CSlMtJChDT05G SUdfSDI2NF9RU1ZfSFdBQ0NFTCkgICAgICAgICAgICs9IHFzdmRlYy5vCiBPQkpTLSQoQ09ORklH X0gyNjRfVkFBUElfSFdBQ0NFTCkgICAgICAgICArPSB2YWFwaV9oMjY0Lm8KQEAgLTEyNTUsNiAr MTI1Nyw3IEBAIFNLSVBIRUFERVJTICAgICAgICAgICAgICAgICAgICAgICAgICAgICs9ICVfdGFi bGVnZW4uaCAgICAgICAgICAgICAgICAgIFwKIAogU0tJUEhFQURFUlMtJChDT05GSUdfQU1GKSAg ICAgICAgICAgICAgKz0gYW1mZW5jLmgKIFNLSVBIRUFERVJTLSQoQ09ORklHX0QzRDExVkEpICAg ICAgICAgICs9IGQzZDExdmEuaCBkeHZhMl9pbnRlcm5hbC5oCitTS0lQSEVBREVSUy0kKENPTkZJ R19EM0QxMlZBKSAgICAgICAgICArPSBkM2QxMmRlYy5oCiBTS0lQSEVBREVSUy0kKENPTkZJR19E WFZBMikgICAgICAgICAgICArPSBkeHZhMi5oIGR4dmEyX2ludGVybmFsLmgKIFNLSVBIRUFERVJT LSQoQ09ORklHX0pOSSkgICAgICAgICAgICAgICs9IGZmam5pLmgKIFNLSVBIRUFERVJTLSQoQ09O RklHX0xDTVMyKSAgICAgICAgICAgICs9IGZmbGNtczIuaApkaWZmIC0tZ2l0IGEvbGliYXZjb2Rl Yy9kM2QxMmRlYy5jIGIvbGliYXZjb2RlYy9kM2QxMmRlYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAuLjU2YmZjYTYwNWQKLS0tIC9kZXYvbnVsbAorKysgYi9saWJhdmNv ZGVjL2QzZDEyZGVjLmMKQEAgLTAsMCArMSw1NTEgQEAKKy8qCisgKiBEaXJlY3QzRCAxMiBIVyBh Y2NlbGVyYXRpb24gdmlkZW8gZGVjb2RlcgorICoKKyAqIGNvcHlyaWdodCAoYykgMjAyMiBXdSBK aWFuaHVhIDx0b3FzeHdAb3V0bG9vay5jb20+CisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2Yg RkZtcGVnLgorICoKKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vu c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogRkZtcGVn IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBl ZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5j LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAx IFVTQQorICovCisKKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNp bmNsdWRlIDxpbml0Z3VpZC5oPgorCisjaW5jbHVkZSAibGliYXZ1dGlsL2NvbW1vbi5oIgorI2lu Y2x1ZGUgImxpYmF2dXRpbC9sb2cuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvdGltZS5oIgorI2lu Y2x1ZGUgImxpYmF2dXRpbC9pbWd1dGlscy5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9od2NvbnRl eHRfZDNkMTJ2YS5oIgorI2luY2x1ZGUgImF2Y29kZWMuaCIKKyNpbmNsdWRlICJkZWNvZGUuaCIK KyNpbmNsdWRlICJkM2QxMmRlYy5oIgorCit0eXBlZGVmIHN0cnVjdCBDb21tYW5kQWxsb2NhdG9y IHsKKyAgICBJRDNEMTJDb21tYW5kQWxsb2NhdG9yICpjb21tYW5kX2FsbG9jYXRvcjsKKyAgICB1 aW50NjRfdCBmZW5jZV92YWx1ZTsKK30gQ29tbWFuZEFsbG9jYXRvcjsKKworaW50IGZmX2QzZDEy ZGVjX2dldF9zdWl0YWJsZV9tYXhfYml0c3RyZWFtX3NpemUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4 KQoreworICAgIEFWSFdGcmFtZXNDb250ZXh0ICpmcmFtZXNfY3R4ID0gRDNEMTJWQV9GUkFNRVNf Q09OVEVYVChhdmN0eCk7CisgICAgcmV0dXJuIGF2X2ltYWdlX2dldF9idWZmZXJfc2l6ZShmcmFt ZXNfY3R4LT5zd19mb3JtYXQsIGF2Y3R4LT5jb2RlZF93aWR0aCwgYXZjdHgtPmNvZGVkX2hlaWdo dCwgMSk7Cit9CisKK3N0YXRpYyBpbnQgZDNkMTJkZWNfZ2V0X3ZhbGlkX2NvbW1hbmRfYWxsb2Nh dG9yKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgSUQzRDEyQ29tbWFuZEFsbG9jYXRvciAqKnBwQWxs b2NhdG9yKQoreworICAgIEhSRVNVTFQgaHI7CisgICAgRDNEMTJWQURlY29kZUNvbnRleHQgKmN0 eCA9IEQzRDEyVkFfREVDT0RFX0NPTlRFWFQoYXZjdHgpOworICAgIENvbW1hbmRBbGxvY2F0b3Ig YWxsb2NhdG9yOworCisgICAgaWYgKGF2X2ZpZm9fcGVlayhjdHgtPmFsbG9jYXRvcl9xdWV1ZSwg JmFsbG9jYXRvciwgMSwgMCkgPj0gMCkgeworICAgICAgICB1aW50NjRfdCBjb21wbGV0aW9uID0g SUQzRDEyRmVuY2VfR2V0Q29tcGxldGVkVmFsdWUoY3R4LT5zeW5jX2N0eC0+ZmVuY2UpOworICAg ICAgICBpZiAoY29tcGxldGlvbiA+PSBhbGxvY2F0b3IuZmVuY2VfdmFsdWUpIHsKKyAgICAgICAg ICAgICpwcEFsbG9jYXRvciA9IGFsbG9jYXRvci5jb21tYW5kX2FsbG9jYXRvcjsKKyAgICAgICAg ICAgIGF2X2ZpZm9fcmVhZChjdHgtPmFsbG9jYXRvcl9xdWV1ZSwgJmFsbG9jYXRvciwgMSk7Cisg ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGhyID0gSUQzRDEy RGV2aWNlX0NyZWF0ZUNvbW1hbmRBbGxvY2F0b3IoY3R4LT5kZXZpY2VfY3R4LT5kZXZpY2UsIEQz RDEyX0NPTU1BTkRfTElTVF9UWVBFX1ZJREVPX0RFQ09ERSwKKyAgICAgICAgJklJRF9JRDNEMTJD b21tYW5kQWxsb2NhdG9yLCBwcEFsbG9jYXRvcik7CisgICAgaWYgKEZBSUxFRChocikpIHsKKyAg ICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJGYWlsZWQgdG8gY3JlYXRlIGEgbmV3 IGNvbW1hbmQgYWxsb2NhdG9yIVxuIik7CisgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7 CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZDNkMTJkZWNfZGlzY2Fy ZF9jb21tYW5kX2FsbG9jYXRvcihBVkNvZGVjQ29udGV4dCAqYXZjdHgsIElEM0QxMkNvbW1hbmRB bGxvY2F0b3IgKnBBbGxvY2F0b3IsIHVpbnQ2NF90IGZlbmNlX3ZhbHVlKQoreworICAgIEQzRDEy VkFEZWNvZGVDb250ZXh0ICpjdHggPSBEM0QxMlZBX0RFQ09ERV9DT05URVhUKGF2Y3R4KTsKKwor ICAgIENvbW1hbmRBbGxvY2F0b3IgYWxsb2NhdG9yID0geworICAgICAgICAuY29tbWFuZF9hbGxv Y2F0b3IgPSBwQWxsb2NhdG9yLAorICAgICAgICAuZmVuY2VfdmFsdWUgPSBmZW5jZV92YWx1ZQor ICAgIH07CisKKyAgICBpZiAoYXZfZmlmb193cml0ZShjdHgtPmFsbG9jYXRvcl9xdWV1ZSwgJmFs bG9jYXRvciwgMSkgPCAwKSB7CisgICAgICAgIEQzRDEyX09CSkVDVF9SRUxFQVNFKHBBbGxvY2F0 b3IpOworICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworICAgIH0KKworICAgIHJldHVy biAwOworfQorCitzdGF0aWMgdm9pZCBidWZyZWZfZnJlZV9pbnRlcmZhY2Uodm9pZCAqb3BhcXVl LCB1aW50OF90ICpkYXRhKQoreworICAgIEQzRDEyX09CSkVDVF9SRUxFQVNFKG9wYXF1ZSk7Cit9 CisKK3N0YXRpYyBBVkJ1ZmZlclJlZiAqYnVmcmVmX3dyYXBfaW50ZXJmYWNlKElVbmtub3duICpp ZmFjZSkKK3sKKyAgICByZXR1cm4gYXZfYnVmZmVyX2NyZWF0ZSgodWludDhfdCopaWZhY2UsIDEs IGJ1ZnJlZl9mcmVlX2ludGVyZmFjZSwgaWZhY2UsIDApOworfQorCitzdGF0aWMgaW50IGQzZDEy ZGVjX2NyZWF0ZV9idWZmZXIoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBVSU5UIHNpemUsIElEM0Qx MlJlc291cmNlICoqcHBSZXNvdWNlKQoreworICAgIEQzRDEyVkFEZWNvZGVDb250ZXh0ICpjdHgg PSBEM0QxMlZBX0RFQ09ERV9DT05URVhUKGF2Y3R4KTsKKworICAgIEQzRDEyX0hFQVBfUFJPUEVS VElFUyBoZWFwX3Byb3BzID0geyAuVHlwZSA9IEQzRDEyX0hFQVBfVFlQRV9VUExPQUQgfTsKKwor ICAgIEQzRDEyX1JFU09VUkNFX0RFU0MgZGVzYyA9IHsKKyAgICAgICAgLkRpbWVuc2lvbiAgICAg ICAgPSBEM0QxMl9SRVNPVVJDRV9ESU1FTlNJT05fQlVGRkVSLAorICAgICAgICAuQWxpZ25tZW50 ICAgICAgICA9IEQzRDEyX0RFRkFVTFRfUkVTT1VSQ0VfUExBQ0VNRU5UX0FMSUdOTUVOVCwKKyAg ICAgICAgLldpZHRoICAgICAgICAgICAgPSBzaXplLAorICAgICAgICAuSGVpZ2h0ICAgICAgICAg ICA9IDEsCisgICAgICAgIC5EZXB0aE9yQXJyYXlTaXplID0gMSwKKyAgICAgICAgLk1pcExldmVs cyAgICAgICAgPSAxLAorICAgICAgICAuRm9ybWF0ICAgICAgICAgICA9IERYR0lfRk9STUFUX1VO S05PV04sCisgICAgICAgIC5TYW1wbGVEZXNjICAgICAgID0geyAuQ291bnQgPSAxLCAuUXVhbGl0 eSA9IDAgfSwKKyAgICAgICAgLkxheW91dCAgICAgICAgICAgPSBEM0QxMl9URVhUVVJFX0xBWU9V VF9ST1dfTUFKT1IsCisgICAgICAgIC5GbGFncyAgICAgICAgICAgID0gRDNEMTJfUkVTT1VSQ0Vf RkxBR19OT05FLAorICAgIH07CisKKyAgICBIUkVTVUxUIGhyID0gSUQzRDEyRGV2aWNlX0NyZWF0 ZUNvbW1pdHRlZFJlc291cmNlKGN0eC0+ZGV2aWNlX2N0eC0+ZGV2aWNlLCAmaGVhcF9wcm9wcywg RDNEMTJfSEVBUF9GTEFHX05PTkUsCisgICAgICAgICZkZXNjLCBEM0QxMl9SRVNPVVJDRV9TVEFU RV9HRU5FUklDX1JFQUQsIE5VTEwsICZJSURfSUQzRDEyUmVzb3VyY2UsIHBwUmVzb3VjZSk7CisK KyAgICBpZiAoRkFJTEVEKGhyKSkgeworICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJP UiwgIkZhaWxlZCB0byBjcmVhdGUgZDNkMTIgYnVmZmVyLlxuIik7CisgICAgICAgIHJldHVybiAg QVZFUlJPUihFSU5WQUwpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50 IGQzZDEyZGVjX3dhaXRfZm9yX2dwdShBVkNvZGVjQ29udGV4dCAqYXZjdHgpCit7CisgICAgRDNE MTJWQURlY29kZUNvbnRleHQgKmN0eCAgICAgID0gRDNEMTJWQV9ERUNPREVfQ09OVEVYVChhdmN0 eCk7CisgICAgQVZEM0QxMlZBU3luY0NvbnRleHQgKnN5bmNfY3R4ID0gY3R4LT5zeW5jX2N0eDsK KworICAgIHJldHVybiBhdl9kM2QxMnZhX3dhaXRfcXVldWVfaWRsZShzeW5jX2N0eCwgY3R4LT5j b21tYW5kX3F1ZXVlKTsKK30KKworc3RhdGljIGludCBkM2QxMmRlY19jcmVhdGVfZGVjb2Rlcl9o ZWFwKEFWQ29kZWNDb250ZXh0ICphdmN0eCkKK3sKKyAgICBEM0QxMlZBRGVjb2RlQ29udGV4dCAg ICpjdHggICAgICAgID0gRDNEMTJWQV9ERUNPREVfQ09OVEVYVChhdmN0eCk7CisgICAgQVZIV0Zy YW1lc0NvbnRleHQgICAgICAqZnJhbWVzX2N0eCA9IEQzRDEyVkFfRlJBTUVTX0NPTlRFWFQoYXZj dHgpOworICAgIEFWRDNEMTJWQURldmljZUNvbnRleHQgKmh3Y3R4ICAgICAgPSBjdHgtPmRldmlj ZV9jdHg7CisKKyAgICBEM0QxMl9WSURFT19ERUNPREVSX0hFQVBfREVTQyBkZXNjID0geworICAg ICAgICAuTm9kZU1hc2sgICAgICA9IDAsCisgICAgICAgIC5Db25maWd1cmF0aW9uID0gY3R4LT5j ZmcsCisgICAgICAgIC5EZWNvZGVXaWR0aCAgID0gZnJhbWVzX2N0eC0+d2lkdGgsCisgICAgICAg IC5EZWNvZGVIZWlnaHQgID0gZnJhbWVzX2N0eC0+aGVpZ2h0LAorICAgICAgICAuRm9ybWF0ICAg ICAgICA9IGF2X2QzZDEydmFfbWFwX3N3X3RvX2h3X2Zvcm1hdChmcmFtZXNfY3R4LT5zd19mb3Jt YXQpLAorICAgICAgICAuRnJhbWVSYXRlICAgICA9IHsgYXZjdHgtPmZyYW1lcmF0ZS5udW0sIGF2 Y3R4LT5mcmFtZXJhdGUuZGVuIH0sCisgICAgICAgIC5CaXRSYXRlICAgICAgID0gYXZjdHgtPmJp dF9yYXRlLAorICAgICAgICAuTWF4RGVjb2RlUGljdHVyZUJ1ZmZlckNvdW50ID0gZnJhbWVzX2N0 eC0+aW5pdGlhbF9wb29sX3NpemUsCisgICAgfTsKKworICAgIERYX0NIRUNLKElEM0QxMlZpZGVv RGV2aWNlX0NyZWF0ZVZpZGVvRGVjb2RlckhlYXAoaHdjdHgtPnZpZGVvX2RldmljZSwgJmRlc2Ms CisgICAgICAgICZJSURfSUQzRDEyVmlkZW9EZWNvZGVySGVhcCwgJmN0eC0+ZGVjb2Rlcl9oZWFw KSk7CisKKyAgICByZXR1cm4gMDsKKworZmFpbDoKKyAgICBpZiAoY3R4LT5kZWNvZGVyKSB7Cisg ICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiRDNEMTIgZG9lc24ndCBzdXBwb3J0 IGRlY29kaW5nIGZyYW1lcyB3aXRoIGFuIGV4dGVudCAiCisgICAgICAgICAgICAiW3dpZHRoKCVk KSwgaGVpZ2h0KCVkKV0sIG9uIHlvdXIgZGV2aWNlIVxuIiwgZnJhbWVzX2N0eC0+d2lkdGgsIGZy YW1lc19jdHgtPmhlaWdodCk7CisgICAgfQorCisgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsK K30KKworc3RhdGljIGludCBkM2QxMmRlY19jcmVhdGVfZGVjb2RlcihBVkNvZGVjQ29udGV4dCAq YXZjdHgpCit7CisgICAgRDNEMTJfVklERU9fREVDT0RFUl9ERVNDIGRlc2M7CisgICAgRDNEMTJW QURlY29kZUNvbnRleHQgICAqY3R4ICAgICAgICA9IEQzRDEyVkFfREVDT0RFX0NPTlRFWFQoYXZj dHgpOworICAgIEFWSFdGcmFtZXNDb250ZXh0ICAgICAgKmZyYW1lc19jdHggPSBEM0QxMlZBX0ZS QU1FU19DT05URVhUKGF2Y3R4KTsKKyAgICBBVkQzRDEyVkFEZXZpY2VDb250ZXh0ICpod2N0eCAg ICAgID0gY3R4LT5kZXZpY2VfY3R4OworCisgICAgRDNEMTJfRkVBVFVSRV9EQVRBX1ZJREVPX0RF Q09ERV9TVVBQT1JUIGZlYXR1cmUgPSB7CisgICAgICAgIC5Ob2RlSW5kZXggICAgID0gMCwKKyAg ICAgICAgLkNvbmZpZ3VyYXRpb24gPSBjdHgtPmNmZywKKyAgICAgICAgLldpZHRoICAgICAgICAg PSBmcmFtZXNfY3R4LT53aWR0aCwKKyAgICAgICAgLkhlaWdodCAgICAgICAgPSBmcmFtZXNfY3R4 LT5oZWlnaHQsCisgICAgICAgIC5EZWNvZGVGb3JtYXQgID0gYXZfZDNkMTJ2YV9tYXBfc3dfdG9f aHdfZm9ybWF0KGZyYW1lc19jdHgtPnN3X2Zvcm1hdCksCisgICAgICAgIC5GcmFtZVJhdGUgICAg ID0geyBhdmN0eC0+ZnJhbWVyYXRlLm51bSwgYXZjdHgtPmZyYW1lcmF0ZS5kZW4gfSwKKyAgICAg ICAgLkJpdFJhdGUgICAgICAgPSBhdmN0eC0+Yml0X3JhdGUsCisgICAgfTsKKworICAgIERYX0NI RUNLKElEM0QxMlZpZGVvRGV2aWNlX0NoZWNrRmVhdHVyZVN1cHBvcnQoaHdjdHgtPnZpZGVvX2Rl dmljZSwgRDNEMTJfRkVBVFVSRV9WSURFT19ERUNPREVfU1VQUE9SVCwgJmZlYXR1cmUsIHNpemVv ZihmZWF0dXJlKSkpOworICAgIGlmICghKGZlYXR1cmUuU3VwcG9ydEZsYWdzICYgRDNEMTJfVklE RU9fREVDT0RFX1NVUFBPUlRfRkxBR19TVVBQT1JURUQpIHx8CisgICAgICAgICEoZmVhdHVyZS5E ZWNvZGVUaWVyID49IEQzRDEyX1ZJREVPX0RFQ09ERV9USUVSXzIpKSB7CisgICAgICAgIGF2X2xv ZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiRDNEMTIgZGVjb2RlciBkb2Vzbid0IHN1cHBvcnQgb24g dGhpcyBkZXZpY2VcbiIpOworICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworICAgIH0K KworICAgIGRlc2MgPSAoRDNEMTJfVklERU9fREVDT0RFUl9ERVNDKSB7CisgICAgICAgIC5Ob2Rl TWFzayA9IDAsCisgICAgICAgIC5Db25maWd1cmF0aW9uID0gY3R4LT5jZmcsCisgICAgfTsKKwor ICAgIERYX0NIRUNLKElEM0QxMlZpZGVvRGV2aWNlX0NyZWF0ZVZpZGVvRGVjb2Rlcihod2N0eC0+ dmlkZW9fZGV2aWNlLCAmZGVzYywgJklJRF9JRDNEMTJWaWRlb0RlY29kZXIsICZjdHgtPmRlY29k ZXIpKTsKKworICAgIGN0eC0+ZGVjb2Rlcl9yZWYgPSBidWZyZWZfd3JhcF9pbnRlcmZhY2UoKElV bmtub3duICopY3R4LT5kZWNvZGVyKTsKKyAgICBpZiAoIWN0eC0+ZGVjb2Rlcl9yZWYpCisgICAg ICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CisKKyAgICByZXR1cm4gMDsKKworZmFpbDoKKyAg ICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworfQorCitzdGF0aWMgaW5saW5lIGludCBkM2QxMnZh X2dldF9udW1fc3VyZmFjZXMoZW51bSBBVkNvZGVjSUQgY29kZWNfaWQpCit7CisgICAgaW50IG51 bV9zdXJmYWNlcyA9IDE7CisgICAgc3dpdGNoIChjb2RlY19pZCkgeworICAgIGNhc2UgQVZfQ09E RUNfSURfSDI2NDoKKyAgICBjYXNlIEFWX0NPREVDX0lEX0hFVkM6CisgICAgICAgIG51bV9zdXJm YWNlcyArPSAxNjsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFWX0NPREVDX0lEX0FWMToK KyAgICAgICAgbnVtX3N1cmZhY2VzICs9IDEyOworICAgICAgICBicmVhazsKKworICAgIGNhc2Ug QVZfQ09ERUNfSURfVlA5OgorICAgICAgICBudW1fc3VyZmFjZXMgKz0gODsKKyAgICAgICAgYnJl YWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBudW1fc3VyZmFjZXMgKz0gMjsKKyAgICB9CisK KyAgICByZXR1cm4gbnVtX3N1cmZhY2VzOworfQorCitpbnQgZmZfZDNkMTJkZWNfY29tbW9uX2Zy YW1lX3BhcmFtcyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWQnVmZmVyUmVmICpod19mcmFtZXNf Y3R4KQoreworICAgIEFWSFdGcmFtZXNDb250ZXh0ICAgICAgKmZyYW1lc19jdHggICA9IChBVkhX RnJhbWVzQ29udGV4dCAqKWh3X2ZyYW1lc19jdHgtPmRhdGE7CisgICAgQVZIV0RldmljZUNvbnRl eHQgICAgICAqZGV2aWNlX2N0eCAgID0gZnJhbWVzX2N0eC0+ZGV2aWNlX2N0eDsKKyAgICBBVkQz RDEyVkFGcmFtZXNDb250ZXh0ICpmcmFtZXNfaHdjdHggPSBmcmFtZXNfY3R4LT5od2N0eDsKKwor ICAgIGZyYW1lc19jdHgtPmZvcm1hdCAgICA9IEFWX1BJWF9GTVRfRDNEMTI7CisgICAgZnJhbWVz X2N0eC0+c3dfZm9ybWF0ID0gYXZjdHgtPnN3X3BpeF9mbXQgPT0gQVZfUElYX0ZNVF9ZVVY0MjBQ MTAgPyBBVl9QSVhfRk1UX1AwMTAgOiBBVl9QSVhfRk1UX05WMTI7CisgICAgZnJhbWVzX2N0eC0+ d2lkdGggICAgID0gYXZjdHgtPndpZHRoOworICAgIGZyYW1lc19jdHgtPmhlaWdodCAgICA9IGF2 Y3R4LT5oZWlnaHQ7CisKKyAgICBmcmFtZXNfY3R4LT5pbml0aWFsX3Bvb2xfc2l6ZSA9IGQzZDEy dmFfZ2V0X251bV9zdXJmYWNlcyhhdmN0eC0+Y29kZWNfaWQpOworCisgICAgcmV0dXJuIDA7Cit9 CisKK2ludCBmZl9kM2QxMmRlY19kZWNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCit7 CisgICAgaW50IHJldDsKKyAgICBVSU5UIGJpdHN0cmVhbV9zaXplOworICAgIEFWSFdGcmFtZXND b250ZXh0ICpmcmFtZXNfY3R4OworICAgIEQzRDEyVkFEZWNvZGVDb250ZXh0ICpjdHggPSBEM0Qx MlZBX0RFQ09ERV9DT05URVhUKGF2Y3R4KTsKKworICAgIElEM0QxMkNvbW1hbmRBbGxvY2F0b3Ig KmNvbW1hbmRfYWxsb2NhdG9yID0gTlVMTDsKKyAgICBEM0QxMl9DT01NQU5EX1FVRVVFX0RFU0Mg cXVldWVfZGVzYyA9IHsKKyAgICAgICAgLlR5cGUgICAgID0gRDNEMTJfQ09NTUFORF9MSVNUX1RZ UEVfVklERU9fREVDT0RFLAorICAgICAgICAuUHJpb3JpdHkgPSAwLAorICAgICAgICAuRmxhZ3Mg ICAgPSBEM0QxMl9DT01NQU5EX1FVRVVFX0ZMQUdfTk9ORSwKKyAgICAgICAgLk5vZGVNYXNrID0g MAorICAgIH07CisKKyAgICBjdHgtPnBpeF9mbXQgPSBhdmN0eC0+aHdhY2NlbC0+cGl4X2ZtdDsK KworICAgIHJldCA9IGZmX2RlY29kZV9nZXRfaHdfZnJhbWVzX2N0eChhdmN0eCwgQVZfSFdERVZJ Q0VfVFlQRV9EM0QxMlZBKTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgcmV0dXJuIHJldDsK KworICAgIGZyYW1lc19jdHggPSBEM0QxMlZBX0ZSQU1FU19DT05URVhUKGF2Y3R4KTsKKyAgICBj dHgtPmRldmljZV9jdHggPSAoQVZEM0QxMlZBRGV2aWNlQ29udGV4dCAqKWZyYW1lc19jdHgtPmRl dmljZV9jdHgtPmh3Y3R4OworCisgICAgaWYgKGZyYW1lc19jdHgtPmZvcm1hdCAhPSBjdHgtPnBp eF9mbXQpIHsKKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJJbnZhbGlkIHBp eGZtdCBmb3IgaHdhY2NlbCFcbiIpOworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorCisgICAg cmV0ID0gZDNkMTJkZWNfY3JlYXRlX2RlY29kZXIoYXZjdHgpOworICAgIGlmIChyZXQgPCAwKQor ICAgICAgICBnb3RvIGZhaWw7CisKKyAgICByZXQgPSBkM2QxMmRlY19jcmVhdGVfZGVjb2Rlcl9o ZWFwKGF2Y3R4KTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgZ290byBmYWlsOworCisgICAg Y3R4LT5tYXhfbnVtX3JlZiA9IGZyYW1lc19jdHgtPmluaXRpYWxfcG9vbF9zaXplOworCisgICAg Yml0c3RyZWFtX3NpemUgPSBmZl9kM2QxMmRlY19nZXRfc3VpdGFibGVfbWF4X2JpdHN0cmVhbV9z aXplKGF2Y3R4KTsKKyAgICBjdHgtPmJ1ZmZlcnMgPSBhdl9jYWxsb2Moc2l6ZW9mKElEM0QxMlJl c291cmNlICopLCBjdHgtPm1heF9udW1fcmVmKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGN0 eC0+bWF4X251bV9yZWY7IGkrKykgeworICAgICAgICByZXQgPSBkM2QxMmRlY19jcmVhdGVfYnVm ZmVyKGF2Y3R4LCBiaXRzdHJlYW1fc2l6ZSwgJmN0eC0+YnVmZmVyc1tpXSk7CisgICAgICAgIGlm IChyZXQgPCAwKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgIH0KKworICAgIGN0eC0+cmVm X3Jlc291cmNlcyA9IGF2X2NhbGxvYyhzaXplb2YoSUQzRDEyUmVzb3VyY2UgKiksIGN0eC0+bWF4 X251bV9yZWYpOworICAgIGlmICghY3R4LT5yZWZfcmVzb3VyY2VzKQorICAgICAgICByZXR1cm4g QVZFUlJPUihFTk9NRU0pOworCisgICAgY3R4LT5yZWZfc3VicmVzb3VyY2VzID0gYXZfY2FsbG9j KHNpemVvZihVSU5UKSwgY3R4LT5tYXhfbnVtX3JlZik7CisgICAgaWYgKCFjdHgtPnJlZl9zdWJy ZXNvdXJjZXMpCisgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CisKKyAgICBjdHgtPmFs bG9jYXRvcl9xdWV1ZSA9IGF2X2ZpZm9fYWxsb2MyKGN0eC0+bWF4X251bV9yZWYsIHNpemVvZihD b21tYW5kQWxsb2NhdG9yKSwgQVZfRklGT19GTEFHX0FVVE9fR1JPVyk7CisgICAgaWYgKCFjdHgt PmFsbG9jYXRvcl9xdWV1ZSkKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKKworICAg IHJldCA9IGF2X2QzZDEydmFfY3JlYXRlX3N5bmNfY29udGV4dChjdHgtPmRldmljZV9jdHgsICZj dHgtPnN5bmNfY3R4KTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgZ290byBmYWlsOworCisg ICAgcmV0ID0gZDNkMTJkZWNfZ2V0X3ZhbGlkX2NvbW1hbmRfYWxsb2NhdG9yKGF2Y3R4LCAmY29t bWFuZF9hbGxvY2F0b3IpOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICBnb3RvIGZhaWw7CisK KyAgICBEWF9DSEVDSyhJRDNEMTJEZXZpY2VfQ3JlYXRlQ29tbWFuZFF1ZXVlKGN0eC0+ZGV2aWNl X2N0eC0+ZGV2aWNlLCAmcXVldWVfZGVzYywKKyAgICAgICAgJklJRF9JRDNEMTJDb21tYW5kUXVl dWUsICZjdHgtPmNvbW1hbmRfcXVldWUpKTsKKworICAgIERYX0NIRUNLKElEM0QxMkRldmljZV9D cmVhdGVDb21tYW5kTGlzdChjdHgtPmRldmljZV9jdHgtPmRldmljZSwgMCwgcXVldWVfZGVzYy5U eXBlLAorICAgICAgICBjb21tYW5kX2FsbG9jYXRvciwgTlVMTCwgJklJRF9JRDNEMTJDb21tYW5k TGlzdCwgJmN0eC0+Y29tbWFuZF9saXN0KSk7CisKKyAgICBEWF9DSEVDSyhJRDNEMTJWaWRlb0Rl Y29kZUNvbW1hbmRMaXN0X0Nsb3NlKGN0eC0+Y29tbWFuZF9saXN0KSk7CisKKyAgICBJRDNEMTJD b21tYW5kUXVldWVfRXhlY3V0ZUNvbW1hbmRMaXN0cyhjdHgtPmNvbW1hbmRfcXVldWUsIDEsIChJ RDNEMTJDb21tYW5kTGlzdCAqKikmY3R4LT5jb21tYW5kX2xpc3QpOworCisgICAgZDNkMTJkZWNf d2FpdF9mb3JfZ3B1KGF2Y3R4KTsKKworICAgIGQzZDEyZGVjX2Rpc2NhcmRfY29tbWFuZF9hbGxv Y2F0b3IoYXZjdHgsIGNvbW1hbmRfYWxsb2NhdG9yLCBjdHgtPnN5bmNfY3R4LT5mZW5jZV92YWx1 ZSk7CisKKyAgICByZXR1cm4gMDsKKworZmFpbDoKKyAgICBEM0QxMl9PQkpFQ1RfUkVMRUFTRShj b21tYW5kX2FsbG9jYXRvcik7CisgICAgZmZfZDNkMTJkZWNfZGVjb2RlX3VuaW5pdChhdmN0eCk7 CisKKyAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworfQorCitpbnQgZmZfZDNkMTJkZWNfZGVj b2RlX3VuaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCit7CisgICAgaW50IGksIG51bV9hbGxv Y2F0b3IgPSAwOworICAgIEQzRDEyVkFEZWNvZGVDb250ZXh0ICpjdHggPSBEM0QxMlZBX0RFQ09E RV9DT05URVhUKGF2Y3R4KTsKKyAgICBDb21tYW5kQWxsb2NhdG9yIGFsbG9jYXRvcjsKKworICAg IGlmIChjdHgtPnN5bmNfY3R4KQorICAgICAgICBkM2QxMmRlY193YWl0X2Zvcl9ncHUoYXZjdHgp OworCisgICAgYXZfZnJlZXAoJmN0eC0+cmVmX3Jlc291cmNlcyk7CisKKyAgICBhdl9mcmVlcCgm Y3R4LT5yZWZfc3VicmVzb3VyY2VzKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBjdHgtPm1heF9u dW1fcmVmOyBpKyspCisgICAgICAgIEQzRDEyX09CSkVDVF9SRUxFQVNFKGN0eC0+YnVmZmVyc1tp XSk7CisKKyAgICBhdl9mcmVlcCgmY3R4LT5idWZmZXJzKTsKKworICAgIEQzRDEyX09CSkVDVF9S RUxFQVNFKGN0eC0+Y29tbWFuZF9saXN0KTsKKworICAgIEQzRDEyX09CSkVDVF9SRUxFQVNFKGN0 eC0+Y29tbWFuZF9xdWV1ZSk7CisKKyAgICBpZiAoY3R4LT5hbGxvY2F0b3JfcXVldWUpIHsKKyAg ICAgICAgd2hpbGUgKGF2X2ZpZm9fcmVhZChjdHgtPmFsbG9jYXRvcl9xdWV1ZSwgJmFsbG9jYXRv ciwgMSkgPj0gMCkgeworICAgICAgICAgICAgbnVtX2FsbG9jYXRvcisrOworICAgICAgICAgICAg RDNEMTJfT0JKRUNUX1JFTEVBU0UoYWxsb2NhdG9yLmNvbW1hbmRfYWxsb2NhdG9yKTsKKyAgICAg ICAgfQorCisgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX1ZFUkJPU0UsICJUb3RhbCBudW1i ZXIgb2YgY29tbWFuZCBhbGxvY2F0b3JzIHJldXNlZDogJWRcbiIsIG51bV9hbGxvY2F0b3IpOwor ICAgIH0KKworICAgIGF2X2ZpZm9fZnJlZXAyKCZjdHgtPmFsbG9jYXRvcl9xdWV1ZSk7CisKKyAg ICBhdl9kM2QxMnZhX3JlbGVhc2Vfc3luY19jb250ZXh0KGN0eC0+c3luY19jdHgpOworCisgICAg RDNEMTJfT0JKRUNUX1JFTEVBU0UoY3R4LT5kZWNvZGVyX2hlYXApOworCisgICAgYXZfYnVmZmVy X3VucmVmKCZjdHgtPmRlY29kZXJfcmVmKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMg SUQzRDEyUmVzb3VyY2UgKmQzZDEyZGVjX2dldF9zdXJmYWNlKGNvbnN0IEFWRnJhbWUgKmZyYW1l KQoreworICAgIHJldHVybiAoSUQzRDEyUmVzb3VyY2UgKilmcmFtZS0+ZGF0YVswXTsKK30KKwor aW50cHRyX3QgZmZfZDNkMTJkZWNfZ2V0X3N1cmZhY2VfaW5kZXgoQVZDb2RlY0NvbnRleHQgKmN0 eCwgY29uc3QgQVZGcmFtZSogZnJhbWUpCit7CisgICAgcmV0dXJuIChpbnRwdHJfdClmcmFtZS0+ ZGF0YVsxXTsKK30KKworc3RhdGljIEFWRDNEMTJWQVN5bmNDb250ZXh0ICpkM2QxMmRlY19nZXRf c3luY19jb250ZXh0KGNvbnN0IEFWRnJhbWUgKmZyYW1lKQoreworICAgIHJldHVybiAoQVZEM0Qx MlZBU3luY0NvbnRleHQgKilmcmFtZS0+ZGF0YVsyXTsKK30KKworc3RhdGljIGludCBkM2QxMmRl Y19iZWdpbl91cGRhdGVfcmVmZXJlbmNlX2ZyYW1lcyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEQz RDEyX1JFU09VUkNFX0JBUlJJRVIgKmJhcnJpZXJzLCBpbnQgaW5kZXgpCit7CisgICAgRDNEMTJW QURlY29kZUNvbnRleHQgICAqY3R4ICAgICAgICAgID0gRDNEMTJWQV9ERUNPREVfQ09OVEVYVChh dmN0eCk7CisgICAgQVZIV0ZyYW1lc0NvbnRleHQgICAgICAqZnJhbWVzX2N0eCAgID0gRDNEMTJW QV9GUkFNRVNfQ09OVEVYVChhdmN0eCk7CisgICAgQVZEM0QxMlZBRnJhbWVzQ29udGV4dCAqZnJh bWVzX2h3Y3R4ID0gZnJhbWVzX2N0eC0+aHdjdHg7CisKKyAgICBpbnQgbnVtX2JhcnJpZXIgPSAw OworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjdHgtPm1heF9udW1fcmVmOyBpKyspIHsKKyAg ICAgICAgaWYgKGN0eC0+cmVmX3Jlc291cmNlc1tpXSAmJiBjdHgtPnJlZl9yZXNvdXJjZXNbaV0g IT0gZnJhbWVzX2h3Y3R4LT50ZXh0dXJlX2luZm9zW2luZGV4XS50ZXh0dXJlKSB7CisgICAgICAg ICAgICBiYXJyaWVyc1tudW1fYmFycmllcl0uVHlwZSAgPSBEM0QxMl9SRVNPVVJDRV9CQVJSSUVS X1RZUEVfVFJBTlNJVElPTjsKKyAgICAgICAgICAgIGJhcnJpZXJzW251bV9iYXJyaWVyXS5GbGFn cyA9IEQzRDEyX1JFU09VUkNFX0JBUlJJRVJfRkxBR19OT05FOworICAgICAgICAgICAgYmFycmll cnNbbnVtX2JhcnJpZXJdLlRyYW5zaXRpb24gPSAoRDNEMTJfUkVTT1VSQ0VfVFJBTlNJVElPTl9C QVJSSUVSKXsKKyAgICAgICAgICAgICAgICAucFJlc291cmNlICAgPSBjdHgtPnJlZl9yZXNvdXJj ZXNbaV0sCisgICAgICAgICAgICAgICAgLlN1YnJlc291cmNlID0gMCwKKyAgICAgICAgICAgICAg ICAuU3RhdGVCZWZvcmUgPSBEM0QxMl9SRVNPVVJDRV9TVEFURV9DT01NT04sCisgICAgICAgICAg ICAgICAgLlN0YXRlQWZ0ZXIgID0gRDNEMTJfUkVTT1VSQ0VfU1RBVEVfVklERU9fREVDT0RFX1JF QUQsCisgICAgICAgICAgICB9OworICAgICAgICAgICAgbnVtX2JhcnJpZXIrKzsKKyAgICAgICAg fQorICAgIH0KKworICAgIHJldHVybiBudW1fYmFycmllcjsKK30KKworc3RhdGljIHZvaWQgZDNk MTJkZWNfZW5kX3VwZGF0ZV9yZWZlcmVuY2VfZnJhbWVzKEFWQ29kZWNDb250ZXh0ICphdmN0eCwg RDNEMTJfUkVTT1VSQ0VfQkFSUklFUiAqYmFycmllcnMsIGludCBpbmRleCkKK3sKKyAgICBEM0Qx MlZBRGVjb2RlQ29udGV4dCAgICpjdHggICAgICAgICAgPSBEM0QxMlZBX0RFQ09ERV9DT05URVhU KGF2Y3R4KTsKKyAgICBBVkhXRnJhbWVzQ29udGV4dCAgICAgICpmcmFtZXNfY3R4ICAgPSBEM0Qx MlZBX0ZSQU1FU19DT05URVhUKGF2Y3R4KTsKKyAgICBBVkQzRDEyVkFGcmFtZXNDb250ZXh0ICpm cmFtZXNfaHdjdHggPSBmcmFtZXNfY3R4LT5od2N0eDsKKyAgICBpbnQgbnVtX2JhcnJpZXIgPSAw OworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjdHgtPm1heF9udW1fcmVmOyBpKyspIHsKKyAg ICAgICAgaWYgKGN0eC0+cmVmX3Jlc291cmNlc1tpXSAmJiBjdHgtPnJlZl9yZXNvdXJjZXNbaV0g IT0gZnJhbWVzX2h3Y3R4LT50ZXh0dXJlX2luZm9zW2luZGV4XS50ZXh0dXJlKSB7CisgICAgICAg ICAgICBiYXJyaWVyc1tudW1fYmFycmllcl0uVHJhbnNpdGlvbi5wUmVzb3VyY2UgPSBjdHgtPnJl Zl9yZXNvdXJjZXNbaV07CisgICAgICAgICAgICBiYXJyaWVyc1tudW1fYmFycmllcl0uRmxhZ3Mg PSBEM0QxMl9SRVNPVVJDRV9CQVJSSUVSX0ZMQUdfTk9ORTsKKyAgICAgICAgICAgIGJhcnJpZXJz W251bV9iYXJyaWVyXS5UcmFuc2l0aW9uLlN0YXRlQmVmb3JlID0gRDNEMTJfUkVTT1VSQ0VfU1RB VEVfVklERU9fREVDT0RFX1JFQUQ7CisgICAgICAgICAgICBiYXJyaWVyc1tudW1fYmFycmllcl0u VHJhbnNpdGlvbi5TdGF0ZUFmdGVyID0gRDNEMTJfUkVTT1VSQ0VfU1RBVEVfQ09NTU9OOworICAg ICAgICAgICAgbnVtX2JhcnJpZXIrKzsKKyAgICAgICAgfQorICAgIH0KK30KKworaW50IGZmX2Qz ZDEyZGVjX2NvbW1vbl9lbmRfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1lICpm cmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBwLCB1bnNp Z25lZCBwcF9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAq cW0sIHVuc2lnbmVkIHFtX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQo KnVwZGF0ZV9pbnB1dF9hcmd1bWVudHMpKEFWQ29kZWNDb250ZXh0ICosIEQzRDEyX1ZJREVPX0RF Q09ERV9JTlBVVF9TVFJFQU1fQVJHVU1FTlRTICosIElEM0QxMlJlc291cmNlICopKQoreworICAg IGludCByZXQ7CisgICAgRDNEMTJWQURlY29kZUNvbnRleHQgICAqY3R4ICAgICAgICAgICAgICAg PSBEM0QxMlZBX0RFQ09ERV9DT05URVhUKGF2Y3R4KTsKKyAgICBBVkhXRnJhbWVzQ29udGV4dCAg ICAgICpmcmFtZXNfY3R4ICAgICAgICA9IEQzRDEyVkFfRlJBTUVTX0NPTlRFWFQoYXZjdHgpOwor ICAgIEFWRDNEMTJWQUZyYW1lc0NvbnRleHQgKmZyYW1lc19od2N0eCAgICAgID0gZnJhbWVzX2N0 eC0+aHdjdHg7CisgICAgSUQzRDEyQ29tbWFuZEFsbG9jYXRvciAqY29tbWFuZF9hbGxvY2F0b3Ig PSBOVUxMOworCisgICAgSUQzRDEyUmVzb3VyY2UgKnJlc291cmNlID0gZDNkMTJkZWNfZ2V0X3N1 cmZhY2UoZnJhbWUpOworICAgIFVJTlQgaW5kZXggPSBmZl9kM2QxMmRlY19nZXRfc3VyZmFjZV9p bmRleChhdmN0eCwgZnJhbWUpOworICAgIEFWRDNEMTJWQVN5bmNDb250ZXh0ICpzeW5jX2N0eCA9 IGQzZDEyZGVjX2dldF9zeW5jX2NvbnRleHQoZnJhbWUpOworCisgICAgSUQzRDEyVmlkZW9EZWNv ZGVDb21tYW5kTGlzdCAqY21kX2xpc3QgPSBjdHgtPmNvbW1hbmRfbGlzdDsKKyAgICBEM0QxMl9S RVNPVVJDRV9CQVJSSUVSIGJhcnJpZXJzW0QzRDEyVkFfTUFYX1NVUkZBQ0VTXSA9IHsgMCB9Owor CisgICAgRDNEMTJfVklERU9fREVDT0RFX0lOUFVUX1NUUkVBTV9BUkdVTUVOVFMgaW5wdXRfYXJn cyA9IHsKKyAgICAgICAgLk51bUZyYW1lQXJndW1lbnRzID0gMiwKKyAgICAgICAgLkZyYW1lQXJn dW1lbnRzID0geworICAgICAgICAgICAgWzBdID0geworICAgICAgICAgICAgICAgIC5UeXBlICA9 IEQzRDEyX1ZJREVPX0RFQ09ERV9BUkdVTUVOVF9UWVBFX1BJQ1RVUkVfUEFSQU1FVEVSUywKKyAg ICAgICAgICAgICAgICAuU2l6ZSAgPSBwcF9zaXplLAorICAgICAgICAgICAgICAgIC5wRGF0YSA9 ICh2b2lkICopcHAsCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgWzFdID0geworICAgICAg ICAgICAgICAgIC5UeXBlICA9IEQzRDEyX1ZJREVPX0RFQ09ERV9BUkdVTUVOVF9UWVBFX0lOVkVS U0VfUVVBTlRJWkFUSU9OX01BVFJJWCwKKyAgICAgICAgICAgICAgICAuU2l6ZSAgPSBxbV9zaXpl LAorICAgICAgICAgICAgICAgIC5wRGF0YSA9ICh2b2lkICopcW0sCisgICAgICAgICAgICB9LAor ICAgICAgICB9LAorICAgICAgICAucEhlYXAgPSBjdHgtPmRlY29kZXJfaGVhcCwKKyAgICB9Owor CisgICAgRDNEMTJfVklERU9fREVDT0RFX09VVFBVVF9TVFJFQU1fQVJHVU1FTlRTIG91dHB1dF9h cmdzID0geworICAgICAgICAuQ29udmVyc2lvbkFyZ3VtZW50cyA9IDAsCisgICAgICAgIC5PdXRw dXRTdWJyZXNvdXJjZSAgID0gMCwKKyAgICAgICAgLnBPdXRwdXRUZXh0dXJlMkQgICAgPSByZXNv dXJjZSwKKyAgICB9OworCisgICAgVUlOVCBudW1fYmFycmllciA9IDE7CisgICAgYmFycmllcnNb MF0gPSAoRDNEMTJfUkVTT1VSQ0VfQkFSUklFUikgeworICAgICAgICAuVHlwZSAgPSBEM0QxMl9S RVNPVVJDRV9CQVJSSUVSX1RZUEVfVFJBTlNJVElPTiwKKyAgICAgICAgLkZsYWdzID0gRDNEMTJf UkVTT1VSQ0VfQkFSUklFUl9GTEFHX05PTkUsCisgICAgICAgIC5UcmFuc2l0aW9uID0geworICAg ICAgICAgICAgLnBSZXNvdXJjZSAgID0gcmVzb3VyY2UsCisgICAgICAgICAgICAuU3VicmVzb3Vy Y2UgPSAwLAorICAgICAgICAgICAgLlN0YXRlQmVmb3JlID0gRDNEMTJfUkVTT1VSQ0VfU1RBVEVf Q09NTU9OLAorICAgICAgICAgICAgLlN0YXRlQWZ0ZXIgID0gRDNEMTJfUkVTT1VSQ0VfU1RBVEVf VklERU9fREVDT0RFX1dSSVRFLAorICAgICAgICB9LAorICAgIH07CisKKyAgICBtZW1zZXQoY3R4 LT5yZWZfcmVzb3VyY2VzLCAwLCBzaXplb2YoSUQzRDEyUmVzb3VyY2UgKikgKiBjdHgtPm1heF9u dW1fcmVmKTsKKyAgICBtZW1zZXQoY3R4LT5yZWZfc3VicmVzb3VyY2VzLCAwLCBzaXplb2YoVUlO VCkgKiBjdHgtPm1heF9udW1fcmVmKTsKKyAgICBpbnB1dF9hcmdzLlJlZmVyZW5jZUZyYW1lcy5O dW1UZXh0dXJlMkRzID0gY3R4LT5tYXhfbnVtX3JlZjsKKyAgICBpbnB1dF9hcmdzLlJlZmVyZW5j ZUZyYW1lcy5wcFRleHR1cmUyRHMgID0gY3R4LT5yZWZfcmVzb3VyY2VzOworICAgIGlucHV0X2Fy Z3MuUmVmZXJlbmNlRnJhbWVzLnBTdWJyZXNvdXJjZXMgPSBjdHgtPnJlZl9zdWJyZXNvdXJjZXM7 CisKKyAgICBhdl9kM2QxMnZhX3dhaXRfaWRsZShzeW5jX2N0eCk7CisKKyAgICBpZiAoIXFtKQor ICAgICAgICBpbnB1dF9hcmdzLk51bUZyYW1lQXJndW1lbnRzID0gMTsKKworICAgIHJldCA9IHVw ZGF0ZV9pbnB1dF9hcmd1bWVudHMoYXZjdHgsICZpbnB1dF9hcmdzLCBjdHgtPmJ1ZmZlcnNbaW5k ZXhdKTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgcmV0dXJuIHJldDsKKworICAgIHJldCA9 IGQzZDEyZGVjX2dldF92YWxpZF9jb21tYW5kX2FsbG9jYXRvcihhdmN0eCwgJmNvbW1hbmRfYWxs b2NhdG9yKTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgZ290byBmYWlsOworCisgICAgRFhf Q0hFQ0soSUQzRDEyQ29tbWFuZEFsbG9jYXRvcl9SZXNldChjb21tYW5kX2FsbG9jYXRvcikpOwor CisgICAgRFhfQ0hFQ0soSUQzRDEyVmlkZW9EZWNvZGVDb21tYW5kTGlzdF9SZXNldChjbWRfbGlz dCwgY29tbWFuZF9hbGxvY2F0b3IpKTsKKworICAgIG51bV9iYXJyaWVyICs9IGQzZDEyZGVjX2Jl Z2luX3VwZGF0ZV9yZWZlcmVuY2VfZnJhbWVzKGF2Y3R4LCAmYmFycmllcnNbMV0sIGluZGV4KTsK KworICAgIElEM0QxMlZpZGVvRGVjb2RlQ29tbWFuZExpc3RfUmVzb3VyY2VCYXJyaWVyKGNtZF9s aXN0LCBudW1fYmFycmllciwgYmFycmllcnMpOworCisgICAgSUQzRDEyVmlkZW9EZWNvZGVDb21t YW5kTGlzdF9EZWNvZGVGcmFtZShjbWRfbGlzdCwgY3R4LT5kZWNvZGVyLCAmb3V0cHV0X2FyZ3Ms ICZpbnB1dF9hcmdzKTsKKworICAgIGJhcnJpZXJzWzBdLlRyYW5zaXRpb24uU3RhdGVCZWZvcmUg PSBiYXJyaWVyc1swXS5UcmFuc2l0aW9uLlN0YXRlQWZ0ZXI7CisgICAgYmFycmllcnNbMF0uVHJh bnNpdGlvbi5TdGF0ZUFmdGVyICA9IEQzRDEyX1JFU09VUkNFX1NUQVRFX0NPTU1PTjsKKyAgICBk M2QxMmRlY19lbmRfdXBkYXRlX3JlZmVyZW5jZV9mcmFtZXMoYXZjdHgsICZiYXJyaWVyc1sxXSwg aW5kZXgpOworCisgICAgSUQzRDEyVmlkZW9EZWNvZGVDb21tYW5kTGlzdF9SZXNvdXJjZUJhcnJp ZXIoY21kX2xpc3QsIG51bV9iYXJyaWVyLCBiYXJyaWVycyk7CisKKyAgICBEWF9DSEVDSyhJRDNE MTJWaWRlb0RlY29kZUNvbW1hbmRMaXN0X0Nsb3NlKGNtZF9saXN0KSk7CisKKyAgICBJRDNEMTJD b21tYW5kUXVldWVfRXhlY3V0ZUNvbW1hbmRMaXN0cyhjdHgtPmNvbW1hbmRfcXVldWUsIDEsIChJ RDNEMTJDb21tYW5kTGlzdCAqKikmY3R4LT5jb21tYW5kX2xpc3QpOworCisgICAgRFhfQ0hFQ0so SUQzRDEyQ29tbWFuZFF1ZXVlX1NpZ25hbChjdHgtPmNvbW1hbmRfcXVldWUsIHN5bmNfY3R4LT5m ZW5jZSwgKytzeW5jX2N0eC0+ZmVuY2VfdmFsdWUpKTsKKworICAgIERYX0NIRUNLKElEM0QxMkNv bW1hbmRRdWV1ZV9TaWduYWwoY3R4LT5jb21tYW5kX3F1ZXVlLCBjdHgtPnN5bmNfY3R4LT5mZW5j ZSwgKytjdHgtPnN5bmNfY3R4LT5mZW5jZV92YWx1ZSkpOworCisgICAgcmV0ID0gZDNkMTJkZWNf ZGlzY2FyZF9jb21tYW5kX2FsbG9jYXRvcihhdmN0eCwgY29tbWFuZF9hbGxvY2F0b3IsIGN0eC0+ c3luY19jdHgtPmZlbmNlX3ZhbHVlKTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgcmV0dXJu IHJldDsKKworICAgIGlmIChjdHgtPmRldmljZV9jdHgtPnN5bmMpIHsKKyAgICAgICAgcmV0ID0g ZDNkMTJkZWNfd2FpdF9mb3JfZ3B1KGF2Y3R4KTsKKyAgICAgICAgaWYgKHJldCA8IDApCisgICAg ICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKworICAgIHJldHVybiAwOworCitmYWlsOgorICAg IGlmIChjb21tYW5kX2FsbG9jYXRvcikKKyAgICAgICAgZDNkMTJkZWNfZGlzY2FyZF9jb21tYW5k X2FsbG9jYXRvcihhdmN0eCwgY29tbWFuZF9hbGxvY2F0b3IsIGN0eC0+c3luY19jdHgtPmZlbmNl X3ZhbHVlKTsKKyAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworfQpkaWZmIC0tZ2l0IGEvbGli YXZjb2RlYy9kM2QxMmRlYy5oIGIvbGliYXZjb2RlYy9kM2QxMmRlYy5oCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmVkYTVjZDg1NjEKLS0tIC9kZXYvbnVsbAorKysgYi9s aWJhdmNvZGVjL2QzZDEyZGVjLmgKQEAgLTAsMCArMSwxOTEgQEAKKy8qCisgKiBEaXJlY3QzRCAx MiBIVyBhY2NlbGVyYXRpb24gdmlkZW8gZGVjb2RlcgorICoKKyAqIGNvcHlyaWdodCAoYykgMjAy MiBXdSBKaWFuaHVhIDx0b3FzeHdAb3V0bG9vay5jb20+CisgKgorICogVGhpcyBmaWxlIGlzIHBh cnQgb2YgRkZtcGVnLgorICoKKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhl IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog RkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRo IEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlv biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjEx MC0xMzAxIFVTQQorICovCisKKyNpZm5kZWYgQVZDT0RFQ19EM0QxMkRFQ19ICisjZGVmaW5lIEFW Q09ERUNfRDNEMTJERUNfSAorCisjaW5jbHVkZSAibGliYXZ1dGlsL2ZpZm8uaCIKKyNpbmNsdWRl ICJsaWJhdnV0aWwvaHdjb250ZXh0LmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL2h3Y29udGV4dF9k M2QxMnZhLmgiCisjaW5jbHVkZSAiYXZjb2RlYy5oIgorI2luY2x1ZGUgImludGVybmFsLmgiCisK Ky8qKgorICogQGJyaWVmIFRoaXMgc3RydWN0dXJlIGlzIHVzZWQgdG8gcHJvdmlkZXMgdGhlIG5l Y2Vzc2FyeSBjb25maWd1cmF0aW9ucyBhbmQgZGF0YQorICogdG8gdGhlIEZGbXBlZyBEaXJlY3Qz RCAxMiBIV0FjY2VsIGltcGxlbWVudGF0aW9uIGZvciB2aWRlbyBkZWNvZGVyLgorICoKKyAqIFRo ZSBhcHBsaWNhdGlvbiBtdXN0IG1ha2UgaXQgYXZhaWxhYmxlIGFzIEFWQ29kZWNDb250ZXh0Lmh3 YWNjZWxfY29udGV4dC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgRDNEMTJWQURlY29kZUNvbnRleHQg eworICAgIEFWQnVmZmVyUmVmICpkZWNvZGVyX3JlZjsKKworICAgIC8qKgorICAgICAqIEQzRDEy IHZpZGVvIGRlY29kZXIKKyAgICAgKi8KKyAgICBJRDNEMTJWaWRlb0RlY29kZXIgKmRlY29kZXI7 CisKKyAgICAvKioKKyAgICAgKiBEM0QxMiB2aWRlbyBkZWNvZGVyIGhlYXAKKyAgICAgKi8KKyAg ICBJRDNEMTJWaWRlb0RlY29kZXJIZWFwICpkZWNvZGVyX2hlYXA7CisKKyAgICAvKioKKyAgICAg KiBEM0QxMiBjb25maWd1cmF0aW9uIHVzZWQgdG8gY3JlYXRlIHRoZSBkZWNvZGVyCisgICAgICoK KyAgICAgKiBTcGVjaWZpZWQgYnkgZGVjb2RlcnMKKyAgICAgKi8KKyAgICBEM0QxMl9WSURFT19E RUNPREVfQ09ORklHVVJBVElPTiBjZmc7CisKKyAgICAvKioKKyAgICAgKiBBIGNhY2hlZCBxdWV1 ZSBmb3IgcmV1c2luZyB0aGUgRDNEMTIgY29tbWFuZCBhbGxvY2F0b3JzCisgICAgICoKKyAgICAg KiBAc2VlIGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy93aW5kb3dzL3dpbjMyL2Rp cmVjdDNkMTIvcmVjb3JkaW5nLWNvbW1hbmQtbGlzdHMtYW5kLWJ1bmRsZXMjaWQzZDEyY29tbWFu ZGFsbG9jYXRvcgorICAgICAqLworICAgIEFWRmlmbyAqYWxsb2NhdG9yX3F1ZXVlOworCisgICAg LyoqCisgICAgICogRDNEMTIgY29tbWFuZCBxdWV1ZQorICAgICAqLworICAgIElEM0QxMkNvbW1h bmRRdWV1ZSAqY29tbWFuZF9xdWV1ZTsKKworICAgIC8qKgorICAgICAqIEQzRDEyIHZpZGVvIGRl Y29kZSBjb21tYW5kIGxpc3QKKyAgICAgKi8KKyAgICBJRDNEMTJWaWRlb0RlY29kZUNvbW1hbmRM aXN0ICpjb21tYW5kX2xpc3Q7CisKKyAgICAvKioKKyAgICAgKiBUaGUgYXJyYXkgb2YgYnVmZmVy IHJlc291cmNlcyB1c2VkIHRvIHVwbG9hZCBjb21wcmVzc2VkIGJpdHN0cmVhbQorICAgICAqCisg ICAgICogVGhlIGJ1ZmZlcnMubGVuZ3RoIGlzIHRoZSBzYW1lIGFzIEQzRDEyVkFEZWNvZGVDb250 ZXh0Lm1heF9udW1fcmVmCisgICAgICovCisgICAgSUQzRDEyUmVzb3VyY2UgKipidWZmZXJzOwor CisgICAgLyoqCisgICAgICogVGhlIGFycmF5IG9mIHJlc291cmNlcyB1c2VkIGZvciByZWZlcmVu Y2UgZnJhbWVzCisgICAgICoKKyAgICAgKiBUaGUgcmVmX3Jlc291cmNlcy5sZW5ndGggaXMgdGhl IHNhbWUgYXMgRDNEMTJWQURlY29kZUNvbnRleHQubWF4X251bV9yZWYKKyAgICAgKi8KKyAgICBJ RDNEMTJSZXNvdXJjZSAqKnJlZl9yZXNvdXJjZXM7CisKKyAgICAvKioKKyAgICAgKiBUaGUgYXJy YXkgb2Ygc3VicmVzb3VyY2VzIHVzZWQgZm9yIHJlZmVyZW5jZSBmcmFtZXMKKyAgICAgKgorICAg ICAqIFRoZSByZWZfc3VicmVzb3VyY2VzLmxlbmd0aCBpcyB0aGUgc2FtZSBhcyBEM0QxMlZBRGVj b2RlQ29udGV4dC5tYXhfbnVtX3JlZgorICAgICAqLworICAgIFVJTlQgKnJlZl9zdWJyZXNvdXJj ZXM7CisKKyAgICAvKioKKyAgICAgKiBNYXhpbXVtIG51bWJlciBvZiByZWZlcmVuY2UgZnJhbWVz CisgICAgICovCisgICAgVUlOVCBtYXhfbnVtX3JlZjsKKworICAgIC8qKgorICAgICAqIFRoZSBz eW5jIGNvbnRleHQgdXNlZCB0byBzeW5jIGNvbW1hbmQgcXVldWUKKyAgICAgKi8KKyAgICBBVkQz RDEyVkFTeW5jQ29udGV4dCAqc3luY19jdHg7CisKKyAgICAvKioKKyAgICAgKiBBIHBvaW50ZXIg dG8gQVZEM0QxMlZBRGV2aWNlQ29udGV4dCB1c2VkIHRvIGNyZWF0ZSBEM0QxMiBvYmplY3RzCisg ICAgICovCisgICAgQVZEM0QxMlZBRGV2aWNlQ29udGV4dCAqZGV2aWNlX2N0eDsKKworICAgIC8q KgorICAgICAqIFBpeGVsIGZvcm1hdAorICAgICAqLworICAgIGVudW0gQVZQaXhlbEZvcm1hdCBw aXhfZm10OworCisgICAgLyoqCisgICAgICogUHJpdmF0ZSB0byB0aGUgRkZtcGVnIEFWSFdBY2Nl bCBpbXBsZW1lbnRhdGlvbgorICAgICAqLworICAgIHVuc2lnbmVkIHJlcG9ydF9pZDsKK30gRDNE MTJWQURlY29kZUNvbnRleHQ7CisKKy8qKgorICogQH0KKyAqLworCisjZGVmaW5lIEQzRDEyVkFf REVDT0RFX0NPTlRFWFQoYXZjdHgpICgoRDNEMTJWQURlY29kZUNvbnRleHQgKikoKGF2Y3R4KS0+ aW50ZXJuYWwtPmh3YWNjZWxfcHJpdl9kYXRhKSkKKyNkZWZpbmUgRDNEMTJWQV9GUkFNRVNfQ09O VEVYVChhdmN0eCkgKChBVkhXRnJhbWVzQ29udGV4dCAqKShhdmN0eCktPmh3X2ZyYW1lc19jdHgt PmRhdGEpCisKKy8qKgorICogQGJyaWVmIEdldCBhIHN1aXRhYmxlIG1heGltdW0gYml0c3RyZWFt IHNpemUKKyAqCisgKiBDcmVhdGluZyBhbmQgZGVzdHJveWluZyBhIHJlc291cmNlIG9uIGQzZDEy IG5lZWRzIHN5bmMgYW5kIHJlYWxsb2NhdGlvbiwgc28gdXNlIHRoaXMgZnVuY3Rpb24KKyAqIHRv IGhlbHAgYWxsb2NhdGUgYSBiaWcgZW5vdWdoIGJpdHN0cmVhbSBidWZmZXIgdG8gYXZvaWQgcmVj cmVhdGluZyByZXNvdXJjZXMgd2hlbiBkZWNvZGluZy4KKyAqCisgKiBAcGFyYW0gYXZjdHgKKyAq IEByZXR1cm4gdGhlIHN1aXRhYmxlIHNpemUKKyAqLworaW50IGZmX2QzZDEyZGVjX2dldF9zdWl0 YWJsZV9tYXhfYml0c3RyZWFtX3NpemUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KTsKKworLyoqCisg KiBAYnJpZWYgaW5pdCBEM0QxMlZBRGVjb2RlQ29udGV4dAorICoKKyAqIEBwYXJhbSBhdmN0eAor ICogQHJldHVybiBFcnJvciBjb2RlIChyZXQgPCAwIGlmIGZhaWxlZCkKKyAqLworaW50IGZmX2Qz ZDEyZGVjX2RlY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCk7CisKKy8qKgorICogQGJy aWVmIHVuaW5pdCBEM0QxMlZBRGVjb2RlQ29udGV4dAorICoKKyAqIEBwYXJhbSBhdmN0eAorICog QHJldHVybiBFcnJvciBjb2RlIChyZXQgPCAwIGlmIGZhaWxlZCkKKyAqLworaW50IGZmX2QzZDEy ZGVjX2RlY29kZV91bmluaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KTsKKworLyoqCisgKiBAYnJp ZWYgZDNkMTJkZWMgY29tbW9uIGZyYW1lIHBhcmFtcworICoKKyAqIEBwYXJhbSBhdmN0eAorICog QHBhcmFtIGh3X2ZyYW1lc19jdHgKKyAqIEByZXR1cm4gRXJyb3IgY29kZSAocmV0IDwgMCBpZiBm YWlsZWQpCisgKi8KK2ludCBmZl9kM2QxMmRlY19jb21tb25fZnJhbWVfcGFyYW1zKEFWQ29kZWND b250ZXh0ICphdmN0eCwgQVZCdWZmZXJSZWYgKmh3X2ZyYW1lc19jdHgpOworCisvKioKKyAqIEBi cmllZiBkM2QxMmRlYyBjb21tb24gZW5kIGZyYW1lCisgKgorICogQHBhcmFtIGF2Y3R4ICAgIGNv ZGVjIGNvbnRleHQKKyAqIEBwYXJhbSBmcmFtZSAgICBjdXJyZW50IG91dHB1dCBmcmFtZQorICog QHBhcmFtIHBwICAgICAgIHBpY3R1cmUgcGFyYW1ldGVycworICogQHBhcmFtIHBwX3NpemUgIHRo ZSBzaXplIG9mIHRoZSBwaWN0dXJlIHBhcmFtZXRlcnMKKyAqIEBwYXJhbSBxbSAgICAgICBxdWFu dGl6YXRpb24gbWF0cml4CisgKiBAcGFyYW0gcW1fc2l6ZSAgdGhlIHNpemUgb2YgdGhlIHF1YW50 aXphdGlvbiBtYXRyaXgKKyAqIEBwYXJhbSBjYWxsYmFjayB1cGRhdGUgZGVjb2Rlci1zcGVjaWZp ZWQgaW5wdXQgc3RyZWFtIGFyZ3VtZW50cworICogQHJldHVybiBFcnJvciBjb2RlIChyZXQgPCAw IGlmIGZhaWxlZCkKKyAqLworaW50IGZmX2QzZDEyZGVjX2NvbW1vbl9lbmRfZnJhbWUoQVZDb2Rl Y0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1lICpmcmFtZSwKKyAgICBjb25zdCB2b2lkICpwcCwgdW5z aWduZWQgcHBfc2l6ZSwKKyAgICBjb25zdCB2b2lkICpxbSwgdW5zaWduZWQgcW1fc2l6ZSwKKyAg ICBpbnQoKikoQVZDb2RlY0NvbnRleHQgKiwgRDNEMTJfVklERU9fREVDT0RFX0lOUFVUX1NUUkVB TV9BUkdVTUVOVFMgKiwgSUQzRDEyUmVzb3VyY2UgKikpOworCisvKioKKyAqIEBicmllZiBnZXQg c3VyZmFjZSBpbmRleAorICoKKyAqIEBwYXJhbSBhdmN0eAorICogQHBhcmFtIGZyYW1lCisgKiBA cmV0dXJuIGluZGV4CisgKi8KK2ludHB0cl90IGZmX2QzZDEyZGVjX2dldF9zdXJmYWNlX2luZGV4 KEFWQ29kZWNDb250ZXh0ICphdmN0eCwgY29uc3QgQVZGcmFtZSAqZnJhbWUpOworCisjZW5kaWYg LyogQVZDT0RFQ19EM0QxMlZBX0RFQ19IICovCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2QzZDEy ZGVjX2gyNjQuYyBiL2xpYmF2Y29kZWMvZDNkMTJkZWNfaDI2NC5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLjc1YWM4NmExOTQKLS0tIC9kZXYvbnVsbAorKysgYi9saWJh dmNvZGVjL2QzZDEyZGVjX2gyNjQuYwpAQCAtMCwwICsxLDM0MiBAQAorLyoKKyAqIERpcmVjdDNE IDEyIGgyNjQgSFcgYWNjZWxlcmF0aW9uCisgKgorICogY29weXJpZ2h0IChjKSAyMDIyIFd1IEpp YW5odWEgPHRvcXN4d0BvdXRsb29rLmNvbT4KKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBG Rm1wZWcuCisgKgorICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl c3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5z ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1wZWcg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVn OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMu LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEg VVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZ19jb21wb25lbnRzLmgiCisjaW5jbHVkZSAibGli YXZ1dGlsL2F2YXNzZXJ0LmgiCisjaW5jbHVkZSAiaDI2NGRlYy5oIgorI2luY2x1ZGUgImgyNjRk YXRhLmgiCisjaW5jbHVkZSAiaDI2NF9wcy5oIgorI2luY2x1ZGUgIm1wZWd1dGlscy5oIgorI2lu Y2x1ZGUgImQzZDEyZGVjLmgiCisjaW5jbHVkZSA8ZHh2YS5oPgorCit0eXBlZGVmIHN0cnVjdCBI MjY0RGVjb2RlUGljdHVyZUNvbnRleHQgeworICAgIERYVkFfUGljUGFyYW1zX0gyNjQgICBwcDsK KyAgICBEWFZBX1FtYXRyaXhfSDI2NCAgICAgcW07CisgICAgdW5zaWduZWQgICAgICAgICAgICAg IHNsaWNlX2NvdW50OworICAgIERYVkFfU2xpY2VfSDI2NF9TaG9ydCBzbGljZV9zaG9ydFtNQVhf U0xJQ0VTXTsKKyAgICBjb25zdCB1aW50OF90ICAgICAgICAgKmJpdHN0cmVhbTsKKyAgICB1bnNp Z25lZCAgICAgICAgICAgICAgYml0c3RyZWFtX3NpemU7Cit9IEgyNjREZWNvZGVQaWN0dXJlQ29u dGV4dDsKKworc3RhdGljIHZvaWQgZmlsbF9waWN0dXJlX2VudHJ5KERYVkFfUGljRW50cnlfSDI2 NCAqcGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4LCB1 bnNpZ25lZCBmbGFnKQoreworICAgIGFzc2VydCgoaW5kZXggJiAweDdmKSA9PSBpbmRleCAmJiAo ZmxhZyAmIDB4MDEpID09IGZsYWcpOworICAgIHBpYy0+YlBpY0VudHJ5ID0gaW5kZXggfCAoZmxh ZyA8PCA3KTsKK30KKworc3RhdGljIHZvaWQgZmlsbF9waWN0dXJlX3BhcmFtZXRlcnMoQVZDb2Rl Y0NvbnRleHQgKmF2Y3R4LCBjb25zdCBIMjY0Q29udGV4dCAqaCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIERYVkFfUGljUGFyYW1zX0gyNjQgKnBwKQoreworICAgIEQzRDEy VkFEZWNvZGVDb250ZXh0ICpjdHggPSBEM0QxMlZBX0RFQ09ERV9DT05URVhUKGF2Y3R4KTsKKyAg ICBjb25zdCBIMjY0UGljdHVyZSAqY3VycmVudF9waWN0dXJlID0gaC0+Y3VyX3BpY19wdHI7Cisg ICAgY29uc3QgU1BTICpzcHMgPSBoLT5wcy5zcHM7CisgICAgY29uc3QgUFBTICpwcHMgPSBoLT5w cy5wcHM7CisgICAgaW50IGksIGo7CisKKyAgICBtZW1zZXQocHAsIDAsIHNpemVvZigqcHApKTsK KyAgICAvKiBDb25maWd1cmUgY3VycmVudCBwaWN0dXJlICovCisgICAgZmlsbF9waWN0dXJlX2Vu dHJ5KCZwcC0+Q3VyclBpYywKKyAgICAgICAgICAgICAgICAgICAgICAgZmZfZDNkMTJkZWNfZ2V0 X3N1cmZhY2VfaW5kZXgoYXZjdHgsIGN1cnJlbnRfcGljdHVyZS0+ZiksCisgICAgICAgICAgICAg ICAgICAgICAgIGgtPnBpY3R1cmVfc3RydWN0dXJlID09IFBJQ1RfQk9UVE9NX0ZJRUxEKTsKKyAg ICAvKiBDb25maWd1cmUgdGhlIHNldCBvZiByZWZlcmVuY2VzICovCisgICAgcHAtPlVzZWRGb3JS ZWZlcmVuY2VGbGFncyAgPSAwOworICAgIHBwLT5Ob25FeGlzdGluZ0ZyYW1lRmxhZ3MgID0gMDsK KyAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IEZGX0FSUkFZX0VMRU1TKHBwLT5SZWZGcmFtZUxp c3QpOyBpKyspIHsKKyAgICAgICAgY29uc3QgSDI2NFBpY3R1cmUgKnI7CisgICAgICAgIGlmIChq IDwgaC0+c2hvcnRfcmVmX2NvdW50KSB7CisgICAgICAgICAgICByID0gaC0+c2hvcnRfcmVmW2or K107CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByID0gTlVMTDsKKyAgICAgICAgICAg IHdoaWxlICghciAmJiBqIDwgaC0+c2hvcnRfcmVmX2NvdW50ICsgMTYpCisgICAgICAgICAgICAg ICAgciA9IGgtPmxvbmdfcmVmW2orKyAtIGgtPnNob3J0X3JlZl9jb3VudF07CisgICAgICAgIH0K KyAgICAgICAgaWYgKHIpIHsKKyAgICAgICAgICAgIGZpbGxfcGljdHVyZV9lbnRyeSgmcHAtPlJl ZkZyYW1lTGlzdFtpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZl9kM2QxMmRl Y19nZXRfc3VyZmFjZV9pbmRleChhdmN0eCwgci0+ZiksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgci0+bG9uZ19yZWYgIT0gMCk7CisKKyAgICAgICAgICAgIGlmICgoci0+cmVmZXJl bmNlICYgUElDVF9UT1BfRklFTEQpICYmIHItPmZpZWxkX3BvY1swXSAhPSBJTlRfTUFYKQorICAg ICAgICAgICAgICAgIHBwLT5GaWVsZE9yZGVyQ250TGlzdFtpXVswXSA9IHItPmZpZWxkX3BvY1sw XTsKKyAgICAgICAgICAgIGlmICgoci0+cmVmZXJlbmNlICYgUElDVF9CT1RUT01fRklFTEQpICYm IHItPmZpZWxkX3BvY1sxXSAhPSBJTlRfTUFYKQorICAgICAgICAgICAgICAgIHBwLT5GaWVsZE9y ZGVyQ250TGlzdFtpXVsxXSA9IHItPmZpZWxkX3BvY1sxXTsKKworICAgICAgICAgICAgcHAtPkZy YW1lTnVtTGlzdFtpXSA9IHItPmxvbmdfcmVmID8gci0+cGljX2lkIDogci0+ZnJhbWVfbnVtOwor ICAgICAgICAgICAgaWYgKHItPnJlZmVyZW5jZSAmIFBJQ1RfVE9QX0ZJRUxEKQorICAgICAgICAg ICAgICAgIHBwLT5Vc2VkRm9yUmVmZXJlbmNlRmxhZ3MgfD0gMSA8PCAoMippICsgMCk7CisgICAg ICAgICAgICBpZiAoci0+cmVmZXJlbmNlICYgUElDVF9CT1RUT01fRklFTEQpCisgICAgICAgICAg ICAgICAgcHAtPlVzZWRGb3JSZWZlcmVuY2VGbGFncyB8PSAxIDw8ICgyKmkgKyAxKTsKKyAgICAg ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBwLT5SZWZGcmFtZUxpc3RbaV0uYlBpY0VudHJ5ID0g MHhmZjsKKyAgICAgICAgICAgIHBwLT5GaWVsZE9yZGVyQ250TGlzdFtpXVswXSAgID0gMDsKKyAg ICAgICAgICAgIHBwLT5GaWVsZE9yZGVyQ250TGlzdFtpXVsxXSAgID0gMDsKKyAgICAgICAgICAg IHBwLT5GcmFtZU51bUxpc3RbaV0gICAgICAgICAgID0gMDsKKyAgICAgICAgfQorICAgIH0KKwor ICAgIHBwLT53RnJhbWVXaWR0aEluTWJzTWludXMxICAgICAgICA9IGgtPm1iX3dpZHRoICAtIDE7 CisgICAgcHAtPndGcmFtZUhlaWdodEluTWJzTWludXMxICAgICAgID0gaC0+bWJfaGVpZ2h0IC0g MTsKKyAgICBwcC0+bnVtX3JlZl9mcmFtZXMgICAgICAgICAgICAgICAgPSBzcHMtPnJlZl9mcmFt ZV9jb3VudDsKKworICAgIHBwLT53Qml0RmllbGRzICAgICAgICAgICAgICAgICAgICA9ICgoaC0+ cGljdHVyZV9zdHJ1Y3R1cmUgIT0gUElDVF9GUkFNRSkgPDwgIDApIHwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoKHNwcy0+bWJfYWZmICYmCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGgtPnBpY3R1cmVfc3RydWN0dXJlID09IFBJQ1Rf RlJBTUUpKSA8PCAgMSkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChzcHMtPnJlc2lkdWFsX2NvbG9yX3RyYW5zZm9ybV9mbGFnICAgPDwgIDIpIHwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcF9mb3Jfc3dpdGNoX2ZsYWcgKG5v dCBpbXBsZW1lbnRlZCBieSBGRm1wZWcpICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAgMykg fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzcHMtPmNocm9tYV9m b3JtYXRfaWRjICAgICAgICAgICAgICAgPDwgIDQpIHwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoKGgtPm5hbF9yZWZfaWRjICE9IDApICAgICAgICAgICAgICAgIDw8 ICA2KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBwcy0+Y29u c3RyYWluZWRfaW50cmFfcHJlZCAgICAgICAgICA8PCAgNykgfAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChwcHMtPndlaWdodGVkX3ByZWQgICAgICAgICAgICAgICAg ICAgPDwgIDgpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHBz LT53ZWlnaHRlZF9iaXByZWRfaWRjICAgICAgICAgICAgIDw8ICA5KSB8CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTWJzQ29uc2VjdXRpdmVGbGFnICovCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8PCAxMSkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChzcHMtPmZyYW1lX21ic19vbmx5X2ZsYWcgICAgICAgICAgICAgPDwgMTIpIHwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHBzLT50cmFuc2Zvcm1f OHg4X21vZGUgICAgICAgICAgICAgIDw8IDEzKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKChzcHMtPmxldmVsX2lkYyA+PSAzMSkgICAgICAgICAgICAgICA8PCAx NCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEludHJhUGlj RmxhZyAoTW9kaWZpZWQgaWYgd2UgZGV0ZWN0IGEgbm9uCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICogaW50cmEgc2xpY2UgaW4gZHh2YTJfaDI2NF9kZWNvZGVfc2xp Y2UpICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAxNSk7CisKKyAgICBwcC0+Yml0X2RlcHRo X2x1bWFfbWludXM4ICAgICAgICAgPSBzcHMtPmJpdF9kZXB0aF9sdW1hIC0gODsKKyAgICBwcC0+ Yml0X2RlcHRoX2Nocm9tYV9taW51czggICAgICAgPSBzcHMtPmJpdF9kZXB0aF9jaHJvbWEgLSA4 OworICAgIHBwLT5SZXNlcnZlZDE2Qml0cyAgICAgICAgICAgICAgICA9IDA7CisgICAgcHAtPlN0 YXR1c1JlcG9ydEZlZWRiYWNrTnVtYmVyICAgID0gY3R4LT5yZXBvcnRfaWQrKzsKKyAgICBwcC0+ Q3VyckZpZWxkT3JkZXJDbnRbMF0gPSAwOworICAgIGlmICgoaC0+cGljdHVyZV9zdHJ1Y3R1cmUg JiBQSUNUX1RPUF9GSUVMRCkgJiYKKyAgICAgICAgY3VycmVudF9waWN0dXJlLT5maWVsZF9wb2Nb MF0gIT0gSU5UX01BWCkKKyAgICAgICAgcHAtPkN1cnJGaWVsZE9yZGVyQ250WzBdID0gY3VycmVu dF9waWN0dXJlLT5maWVsZF9wb2NbMF07CisgICAgcHAtPkN1cnJGaWVsZE9yZGVyQ250WzFdID0g MDsKKyAgICBpZiAoKGgtPnBpY3R1cmVfc3RydWN0dXJlICYgUElDVF9CT1RUT01fRklFTEQpICYm CisgICAgICAgIGN1cnJlbnRfcGljdHVyZS0+ZmllbGRfcG9jWzFdICE9IElOVF9NQVgpCisgICAg ICAgIHBwLT5DdXJyRmllbGRPcmRlckNudFsxXSA9IGN1cnJlbnRfcGljdHVyZS0+ZmllbGRfcG9j WzFdOworICAgIHBwLT5waWNfaW5pdF9xc19taW51czI2ICAgICAgICAgICA9IHBwcy0+aW5pdF9x cyAtIDI2OworICAgIHBwLT5jaHJvbWFfcXBfaW5kZXhfb2Zmc2V0ICAgICAgICA9IHBwcy0+Y2hy b21hX3FwX2luZGV4X29mZnNldFswXTsKKyAgICBwcC0+c2Vjb25kX2Nocm9tYV9xcF9pbmRleF9v ZmZzZXQgPSBwcHMtPmNocm9tYV9xcF9pbmRleF9vZmZzZXRbMV07CisgICAgcHAtPkNvbnRpbnVh dGlvbkZsYWcgICAgICAgICAgICAgID0gMTsKKyAgICBwcC0+cGljX2luaXRfcXBfbWludXMyNiAg ICAgICAgICAgPSBwcHMtPmluaXRfcXAgLSAyNjsKKyAgICBwcC0+bnVtX3JlZl9pZHhfbDBfYWN0 aXZlX21pbnVzMSAgPSBwcHMtPnJlZl9jb3VudFswXSAtIDE7CisgICAgcHAtPm51bV9yZWZfaWR4 X2wxX2FjdGl2ZV9taW51czEgID0gcHBzLT5yZWZfY291bnRbMV0gLSAxOworICAgIHBwLT5SZXNl cnZlZDhCaXRzQSAgICAgICAgICAgICAgICA9IDA7CisgICAgcHAtPmZyYW1lX251bSAgICAgICAg ICAgICAgICAgICAgID0gaC0+cG9jLmZyYW1lX251bTsKKyAgICBwcC0+bG9nMl9tYXhfZnJhbWVf bnVtX21pbnVzNCAgICAgPSBzcHMtPmxvZzJfbWF4X2ZyYW1lX251bSAtIDQ7CisgICAgcHAtPnBp Y19vcmRlcl9jbnRfdHlwZSAgICAgICAgICAgID0gc3BzLT5wb2NfdHlwZTsKKyAgICBpZiAoc3Bz LT5wb2NfdHlwZSA9PSAwKQorICAgICAgICBwcC0+bG9nMl9tYXhfcGljX29yZGVyX2NudF9sc2Jf bWludXM0ID0gc3BzLT5sb2cyX21heF9wb2NfbHNiIC0gNDsKKyAgICBlbHNlIGlmIChzcHMtPnBv Y190eXBlID09IDEpCisgICAgICAgIHBwLT5kZWx0YV9waWNfb3JkZXJfYWx3YXlzX3plcm9fZmxh ZyA9IHNwcy0+ZGVsdGFfcGljX29yZGVyX2Fsd2F5c196ZXJvX2ZsYWc7CisgICAgcHAtPmRpcmVj dF84eDhfaW5mZXJlbmNlX2ZsYWcgICAgID0gc3BzLT5kaXJlY3RfOHg4X2luZmVyZW5jZV9mbGFn OworICAgIHBwLT5lbnRyb3B5X2NvZGluZ19tb2RlX2ZsYWcgICAgICA9IHBwcy0+Y2FiYWM7Cisg ICAgcHAtPnBpY19vcmRlcl9wcmVzZW50X2ZsYWcgICAgICAgID0gcHBzLT5waWNfb3JkZXJfcHJl c2VudDsKKyAgICBwcC0+bnVtX3NsaWNlX2dyb3Vwc19taW51czEgICAgICAgPSBwcHMtPnNsaWNl X2dyb3VwX2NvdW50IC0gMTsKKyAgICBwcC0+c2xpY2VfZ3JvdXBfbWFwX3R5cGUgICAgICAgICAg PSBwcHMtPm1iX3NsaWNlX2dyb3VwX21hcF90eXBlOworICAgIHBwLT5kZWJsb2NraW5nX2ZpbHRl cl9jb250cm9sX3ByZXNlbnRfZmxhZyA9IHBwcy0+ZGVibG9ja2luZ19maWx0ZXJfcGFyYW1ldGVy c19wcmVzZW50OworICAgIHBwLT5yZWR1bmRhbnRfcGljX2NudF9wcmVzZW50X2ZsYWc9IHBwcy0+ cmVkdW5kYW50X3BpY19jbnRfcHJlc2VudDsKKyAgICBwcC0+UmVzZXJ2ZWQ4Qml0c0IgICAgICAg ICAgICAgICAgPSAwOworICAgIHBwLT5zbGljZV9ncm91cF9jaGFuZ2VfcmF0ZV9taW51czE9IDA7 Cit9CisKK3N0YXRpYyB2b2lkIGZpbGxfc2NhbGluZ19saXN0cyhjb25zdCBBVkNvZGVjQ29udGV4 dCAqYXZjdHgsIGNvbnN0IEgyNjRDb250ZXh0ICpoLCBEWFZBX1FtYXRyaXhfSDI2NCAqcW0pCit7 CisgICAgY29uc3QgUFBTICpwcHMgPSBoLT5wcy5wcHM7CisgICAgbWVtc2V0KHFtLCAwLCBzaXpl b2YoKnFtKSk7CisgICAgaW50IGksIGo7CisgICAgZm9yIChpID0gMDsgaSA8IDY7IGkrKykKKyAg ICAgICAgZm9yIChqID0gMDsgaiA8IDE2OyBqKyspCisgICAgICAgICAgICBxbS0+YlNjYWxpbmdM aXN0czR4NFtpXVtqXSA9IHBwcy0+c2NhbGluZ19tYXRyaXg0W2ldW2pdOworCisgICAgZm9yIChp ID0gMDsgaSA8IDY0OyBpKyspIHsKKyAgICAgICAgcW0tPmJTY2FsaW5nTGlzdHM4eDhbMF1baV0g PSBwcHMtPnNjYWxpbmdfbWF0cml4OFswXVtpXTsKKyAgICAgICAgcW0tPmJTY2FsaW5nTGlzdHM4 eDhbMV1baV0gPSBwcHMtPnNjYWxpbmdfbWF0cml4OFszXVtpXTsKKyAgICB9Cit9CisKK3N0YXRp YyB2b2lkIGZpbGxfc2xpY2Vfc2hvcnQoRFhWQV9TbGljZV9IMjY0X1Nob3J0ICpzbGljZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIHNp emUpCit7CisgICAgbWVtc2V0KHNsaWNlLCAwLCBzaXplb2YoKnNsaWNlKSk7CisgICAgc2xpY2Ut PkJTTkFMdW5pdERhdGFMb2NhdGlvbiA9IHBvc2l0aW9uOworICAgIHNsaWNlLT5TbGljZUJ5dGVz SW5CdWZmZXIgICAgPSBzaXplOworICAgIHNsaWNlLT53QmFkU2xpY2VDaG9wcGluZyAgICAgPSAw OworfQorCitzdGF0aWMgaW50IGQzZDEyZGVjX2gyNjRfc3RhcnRfZnJhbWUoQVZDb2RlY0NvbnRl eHQgKmF2Y3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2X3VudXNlZCBj b25zdCB1aW50OF90ICpidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YXZfdW51c2VkIHVpbnQzMl90IHNpemUpCit7CisgICAgY29uc3QgSDI2NENvbnRleHQgICAgICAg ICpoICAgICAgID0gYXZjdHgtPnByaXZfZGF0YTsKKyAgICBIMjY0RGVjb2RlUGljdHVyZUNvbnRl eHQgKmN0eF9waWMgPSBoLT5jdXJfcGljX3B0ci0+aHdhY2NlbF9waWN0dXJlX3ByaXZhdGU7CisK KyAgICBpZiAoIUQzRDEyVkFfREVDT0RFX0NPTlRFWFQoYXZjdHgpKQorICAgICAgICByZXR1cm4g LTE7CisKKyAgICBhc3NlcnQoY3R4X3BpYyk7CisKKyAgICBmaWxsX3BpY3R1cmVfcGFyYW1ldGVy cyhhdmN0eCwgaCwgJmN0eF9waWMtPnBwKTsKKworICAgIGZpbGxfc2NhbGluZ19saXN0cyhhdmN0 eCwgaCwgJmN0eF9waWMtPnFtKTsKKworICAgIGN0eF9waWMtPnNsaWNlX2NvdW50ICAgID0gMDsK KyAgICBjdHhfcGljLT5iaXRzdHJlYW1fc2l6ZSA9IDA7CisgICAgY3R4X3BpYy0+Yml0c3RyZWFt ICAgICAgPSBOVUxMOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZDNkMTJkZWNf aDI2NF9kZWNvZGVfc2xpY2UoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpidWZmZXIsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNpemUpCit7CisgICAgdW5zaWduZWQgcG9z aXRpb247CisgICAgY29uc3QgSDI2NENvbnRleHQgICAgICAgICpoICAgICAgICAgICAgICAgPSBh dmN0eC0+cHJpdl9kYXRhOworICAgIGNvbnN0IEgyNjRTbGljZUNvbnRleHQgICAqc2wgICAgICAg ICAgICAgID0gJmgtPnNsaWNlX2N0eFswXTsKKyAgICBjb25zdCBIMjY0UGljdHVyZSAgICAgICAg KmN1cnJlbnRfcGljdHVyZSA9IGgtPmN1cl9waWNfcHRyOworICAgIEgyNjREZWNvZGVQaWN0dXJl Q29udGV4dCAqY3R4X3BpYyAgICAgICAgID0gY3VycmVudF9waWN0dXJlLT5od2FjY2VsX3BpY3R1 cmVfcHJpdmF0ZTsKKworICAgIGlmIChjdHhfcGljLT5zbGljZV9jb3VudCA+PSBNQVhfU0xJQ0VT KQorICAgICAgICByZXR1cm4gQVZFUlJPUihFUkFOR0UpOworCisgICAgaWYgKCFjdHhfcGljLT5i aXRzdHJlYW0pCisgICAgICAgIGN0eF9waWMtPmJpdHN0cmVhbSA9IGJ1ZmZlcjsKKyAgICBjdHhf cGljLT5iaXRzdHJlYW1fc2l6ZSArPSBzaXplOworCisgICAgcG9zaXRpb24gPSBidWZmZXIgLSBj dHhfcGljLT5iaXRzdHJlYW07CisgICAgZmlsbF9zbGljZV9zaG9ydCgmY3R4X3BpYy0+c2xpY2Vf c2hvcnRbY3R4X3BpYy0+c2xpY2VfY291bnRdLCBwb3NpdGlvbiwgc2l6ZSk7CisgICAgY3R4X3Bp Yy0+c2xpY2VfY291bnQrKzsKKworICAgIGlmIChzbC0+c2xpY2VfdHlwZSAhPSBBVl9QSUNUVVJF X1RZUEVfSSAmJiBzbC0+c2xpY2VfdHlwZSAhPSBBVl9QSUNUVVJFX1RZUEVfU0kpCisgICAgICAg IGN0eF9waWMtPnBwLndCaXRGaWVsZHMgJj0gfigxIDw8IDE1KTsgLyogU2V0IEludHJhUGljRmxh ZyB0byAwICovCisKKyAgICByZXR1cm4gMDsKK30KKworI2RlZmluZSBTVEFSVF9DT0RFIDY1NTM2 CisjZGVmaW5lIFNUQVJUX0NPREVfU0laRSAzCitzdGF0aWMgaW50IHVwZGF0ZV9pbnB1dF9hcmd1 bWVudHMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBEM0QxMl9WSURFT19ERUNPREVfSU5QVVRfU1RS RUFNX0FSR1VNRU5UUyAqaW5wdXRfYXJncywgSUQzRDEyUmVzb3VyY2UgKmJ1ZmZlcikKK3sKKyAg ICBEM0QxMlZBRGVjb2RlQ29udGV4dCAgICAgKmN0eCAgICAgICAgICA9IEQzRDEyVkFfREVDT0RF X0NPTlRFWFQoYXZjdHgpOworICAgIEFWSFdGcmFtZXNDb250ZXh0ICAgICAgICAqZnJhbWVzX2N0 eCAgID0gRDNEMTJWQV9GUkFNRVNfQ09OVEVYVChhdmN0eCk7CisgICAgQVZEM0QxMlZBRnJhbWVz Q29udGV4dCAgICpmcmFtZXNfaHdjdHggPSBmcmFtZXNfY3R4LT5od2N0eDsKKworICAgIGNvbnN0 IEgyNjRDb250ZXh0ICAgICAgICAqaCAgICAgICAgICAgICAgID0gYXZjdHgtPnByaXZfZGF0YTsK KyAgICBjb25zdCBIMjY0UGljdHVyZSAgICAgICAgKmN1cnJlbnRfcGljdHVyZSA9IGgtPmN1cl9w aWNfcHRyOworICAgIEgyNjREZWNvZGVQaWN0dXJlQ29udGV4dCAqY3R4X3BpYyAgICAgICAgID0g Y3VycmVudF9waWN0dXJlLT5od2FjY2VsX3BpY3R1cmVfcHJpdmF0ZTsKKworICAgIGludCBpLCBp bmRleDsKKyAgICB1aW50OF90ICptYXBwZWRfZGF0YSwgKm1hcHBlZF9wdHI7CisgICAgRFhWQV9T bGljZV9IMjY0X1Nob3J0ICpzbGljZTsKKyAgICBEM0QxMl9WSURFT19ERUNPREVfRlJBTUVfQVJH VU1FTlQgKmFyZ3M7CisKKyAgICBpZiAoRkFJTEVEKElEM0QxMlJlc291cmNlX01hcChidWZmZXIs IDAsIE5VTEwsICZtYXBwZWRfZGF0YSkpKSB7CisgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9H X0VSUk9SLCAiRmFpbGVkIHRvIG1hcCBEM0QxMiBCdWZmZXIgcmVzb3VyY2UhXG4iKTsKKyAgICAg ICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKKyAgICB9CisKKyAgICBtYXBwZWRfcHRyID0gbWFw cGVkX2RhdGE7CisgICAgZm9yIChpID0gMDsgaSA8IGN0eF9waWMtPnNsaWNlX2NvdW50OyBpKysp IHsKKyAgICAgICAgVUlOVCBwb3NpdGlvbiwgc2l6ZTsKKyAgICAgICAgc2xpY2UgPSAmY3R4X3Bp Yy0+c2xpY2Vfc2hvcnRbaV07CisKKyAgICAgICAgcG9zaXRpb24gPSBzbGljZS0+QlNOQUx1bml0 RGF0YUxvY2F0aW9uOworICAgICAgICBzaXplICAgICA9IHNsaWNlLT5TbGljZUJ5dGVzSW5CdWZm ZXI7CisKKyAgICAgICAgc2xpY2UtPlNsaWNlQnl0ZXNJbkJ1ZmZlciArPSBTVEFSVF9DT0RFX1NJ WkU7CisgICAgICAgIHNsaWNlLT5CU05BTHVuaXREYXRhTG9jYXRpb24gPSBtYXBwZWRfcHRyIC0g bWFwcGVkX2RhdGE7CisKKyAgICAgICAgKih1aW50MzJfdCAqKW1hcHBlZF9wdHIgPSBTVEFSVF9D T0RFOworICAgICAgICBtYXBwZWRfcHRyICs9IFNUQVJUX0NPREVfU0laRTsKKworICAgICAgICBt ZW1jcHkobWFwcGVkX3B0ciwgJmN0eF9waWMtPmJpdHN0cmVhbVtwb3NpdGlvbl0sIHNpemUpOwor ICAgICAgICBtYXBwZWRfcHRyICs9IHNpemU7CisgICAgfQorCisgICAgSUQzRDEyUmVzb3VyY2Vf VW5tYXAoYnVmZmVyLCAwLCBOVUxMKTsKKworICAgIGlucHV0X2FyZ3MtPkNvbXByZXNzZWRCaXRz dHJlYW0gPSAoRDNEMTJfVklERU9fREVDT0RFX0NPTVBSRVNTRURfQklUU1RSRUFNKXsKKyAgICAg ICAgLnBCdWZmZXIgPSBidWZmZXIsCisgICAgICAgIC5PZmZzZXQgID0gMCwKKyAgICAgICAgLlNp emUgICAgPSBtYXBwZWRfcHRyIC0gbWFwcGVkX2RhdGEsCisgICAgfTsKKworICAgIGFyZ3MgPSAm aW5wdXRfYXJncy0+RnJhbWVBcmd1bWVudHNbaW5wdXRfYXJncy0+TnVtRnJhbWVBcmd1bWVudHMr K107CisgICAgYXJncy0+VHlwZSAgPSBEM0QxMl9WSURFT19ERUNPREVfQVJHVU1FTlRfVFlQRV9T TElDRV9DT05UUk9MOworICAgIGFyZ3MtPlNpemUgID0gc2l6ZW9mKERYVkFfU2xpY2VfSDI2NF9T aG9ydCkgKiBjdHhfcGljLT5zbGljZV9jb3VudDsKKyAgICBhcmdzLT5wRGF0YSA9IGN0eF9waWMt PnNsaWNlX3Nob3J0OworCisgICAgaW5kZXggPSBjdHhfcGljLT5wcC5DdXJyUGljLkluZGV4N0Jp dHM7CisgICAgY3R4LT5yZWZfcmVzb3VyY2VzW2luZGV4XSA9IGZyYW1lc19od2N0eC0+dGV4dHVy ZV9pbmZvc1tpbmRleF0udGV4dHVyZTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgRkZfQVJSQVlfRUxF TVMoY3R4X3BpYy0+cHAuUmVmRnJhbWVMaXN0KTsgaSsrKSB7CisgICAgICAgIGluZGV4ID0gY3R4 X3BpYy0+cHAuUmVmRnJhbWVMaXN0W2ldLkluZGV4N0JpdHM7CisgICAgICAgIGlmIChpbmRleCAh PSAweDdmKQorICAgICAgICAgICAgY3R4LT5yZWZfcmVzb3VyY2VzW2luZGV4XSA9IGZyYW1lc19o d2N0eC0+dGV4dHVyZV9pbmZvc1tpbmRleF0udGV4dHVyZTsKKyAgICB9CisKKyAgICByZXR1cm4g MDsKK30KKworc3RhdGljIGludCBkM2QxMmRlY19oMjY0X2VuZF9mcmFtZShBVkNvZGVjQ29udGV4 dCAqYXZjdHgpCit7CisgICAgSDI2NENvbnRleHQgICAgICAgICAgICAgICAqaCAgICAgICA9IGF2 Y3R4LT5wcml2X2RhdGE7CisgICAgSDI2NERlY29kZVBpY3R1cmVDb250ZXh0ICAqY3R4X3BpYyA9 IGgtPmN1cl9waWNfcHRyLT5od2FjY2VsX3BpY3R1cmVfcHJpdmF0ZTsKKyAgICBIMjY0U2xpY2VD b250ZXh0ICAgICAgICAgICpzbCAgICAgID0gJmgtPnNsaWNlX2N0eFswXTsKKworICAgIGludCBy ZXQ7CisKKyAgICBpZiAoY3R4X3BpYy0+c2xpY2VfY291bnQgPD0gMCB8fCBjdHhfcGljLT5iaXRz dHJlYW1fc2l6ZSA8PSAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXQgPSBmZl9kM2Qx MmRlY19jb21tb25fZW5kX2ZyYW1lKGF2Y3R4LCBoLT5jdXJfcGljX3B0ci0+ZiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmN0eF9waWMtPnBwLCBzaXplb2YoY3R4X3Bp Yy0+cHApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY3R4X3BpYy0+ cW0sIHNpemVvZihjdHhfcGljLT5xbSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVwZGF0ZV9pbnB1dF9hcmd1bWVudHMpOworICAgIGlmICghcmV0KQorICAgICAgICBm Zl9oMjY0X2RyYXdfaG9yaXpfYmFuZChoLCBzbCwgMCwgaC0+YXZjdHgtPmhlaWdodCk7CisKKyAg ICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGQzZDEyZGVjX2gyNjRfZGVjb2RlX2luaXQo QVZDb2RlY0NvbnRleHQgKmF2Y3R4KQoreworICAgIEQzRDEyVkFEZWNvZGVDb250ZXh0ICpjdHgg PSBEM0QxMlZBX0RFQ09ERV9DT05URVhUKGF2Y3R4KTsKKworICAgIGN0eC0+Y2ZnLkRlY29kZVBy b2ZpbGUgPSBEM0QxMl9WSURFT19ERUNPREVfUFJPRklMRV9IMjY0OworCisgICAgcmV0dXJuIGZm X2QzZDEyZGVjX2RlY29kZV9pbml0KGF2Y3R4KTsKK30KKworI2lmIENPTkZJR19IMjY0X0QzRDEy REVDX0hXQUNDRUwKK2NvbnN0IEFWSFdBY2NlbCBmZl9oMjY0X2QzZDEyZGVjX2h3YWNjZWwgPSB7 CisgICAgLm5hbWUgICAgICAgICAgICAgICAgID0gImgyNjRfZDNkMTJkZWMiLAorICAgIC50eXBl ICAgICAgICAgICAgICAgICA9IEFWTUVESUFfVFlQRV9WSURFTywKKyAgICAuaWQgICAgICAgICAg ICAgICAgICAgPSBBVl9DT0RFQ19JRF9IMjY0LAorICAgIC5waXhfZm10ICAgICAgICAgICAgICA9 IEFWX1BJWF9GTVRfRDNEMTIsCisgICAgLmluaXQgICAgICAgICAgICAgICAgID0gZDNkMTJkZWNf aDI2NF9kZWNvZGVfaW5pdCwKKyAgICAudW5pbml0ICAgICAgICAgICAgICAgPSBmZl9kM2QxMmRl Y19kZWNvZGVfdW5pbml0LAorICAgIC5zdGFydF9mcmFtZSAgICAgICAgICA9IGQzZDEyZGVjX2gy NjRfc3RhcnRfZnJhbWUsCisgICAgLmRlY29kZV9zbGljZSAgICAgICAgID0gZDNkMTJkZWNfaDI2 NF9kZWNvZGVfc2xpY2UsCisgICAgLmVuZF9mcmFtZSAgICAgICAgICAgID0gZDNkMTJkZWNfaDI2 NF9lbmRfZnJhbWUsCisgICAgLmZyYW1lX3BhcmFtcyAgICAgICAgID0gZmZfZDNkMTJkZWNfY29t bW9uX2ZyYW1lX3BhcmFtcywKKyAgICAuZnJhbWVfcHJpdl9kYXRhX3NpemUgPSBzaXplb2YoSDI2 NERlY29kZVBpY3R1cmVDb250ZXh0KSwKKyAgICAucHJpdl9kYXRhX3NpemUgICAgICAgPSBzaXpl b2YoRDNEMTJWQURlY29kZUNvbnRleHQpLAorfTsKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbGliYXZj b2RlYy9oMjY0X3NsaWNlLmMgYi9saWJhdmNvZGVjL2gyNjRfc2xpY2UuYwppbmRleCA0MjA3NThi YTBhLi5jMzFlMzA0NjE0IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL2gyNjRfc2xpY2UuYworKysg Yi9saWJhdmNvZGVjL2gyNjRfc2xpY2UuYwpAQCAtNzczLDYgKzc3Myw3IEBAIHN0YXRpYyBlbnVt IEFWUGl4ZWxGb3JtYXQgZ2V0X3BpeGVsX2Zvcm1hdChIMjY0Q29udGV4dCAqaCwgaW50IGZvcmNl X2NhbGxiYWNrKQogewogI2RlZmluZSBIV0FDQ0VMX01BWCAoQ09ORklHX0gyNjRfRFhWQTJfSFdB Q0NFTCArIFwKICAgICAgICAgICAgICAgICAgICAgIChDT05GSUdfSDI2NF9EM0QxMVZBX0hXQUND RUwgKiAyKSArIFwKKyAgICAgICAgICAgICAgICAgICAgIENPTkZJR19IMjY0X0QzRDEyREVDX0hX QUNDRUwgKyBcCiAgICAgICAgICAgICAgICAgICAgICBDT05GSUdfSDI2NF9OVkRFQ19IV0FDQ0VM ICsgXAogICAgICAgICAgICAgICAgICAgICAgQ09ORklHX0gyNjRfVkFBUElfSFdBQ0NFTCArIFwK ICAgICAgICAgICAgICAgICAgICAgIENPTkZJR19IMjY0X1ZJREVPVE9PTEJPWF9IV0FDQ0VMICsg XApAQCAtODYxLDYgKzg2Miw5IEBAIHN0YXRpYyBlbnVtIEFWUGl4ZWxGb3JtYXQgZ2V0X3BpeGVs X2Zvcm1hdChIMjY0Q29udGV4dCAqaCwgaW50IGZvcmNlX2NhbGxiYWNrKQogICAgICAgICAgICAg KmZtdCsrID0gQVZfUElYX0ZNVF9EM0QxMVZBX1ZMRDsKICAgICAgICAgICAgICpmbXQrKyA9IEFW X1BJWF9GTVRfRDNEMTE7CiAjZW5kaWYKKyNpZiBDT05GSUdfSDI2NF9EM0QxMkRFQ19IV0FDQ0VM CisgICAgICAgICAgICAqZm10KysgPSBBVl9QSVhfRk1UX0QzRDEyOworI2VuZGlmCiAjaWYgQ09O RklHX0gyNjRfVkFBUElfSFdBQ0NFTAogICAgICAgICAgICAgKmZtdCsrID0gQVZfUElYX0ZNVF9W QUFQSTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9oMjY0ZGVjLmMgYi9saWJhdmNv ZGVjL2gyNjRkZWMuYwppbmRleCA5ZjdiMzc4MmU4Li5kODc1N2ZhOWNjIDEwMDY0NAotLS0gYS9s aWJhdmNvZGVjL2gyNjRkZWMuYworKysgYi9saWJhdmNvZGVjL2gyNjRkZWMuYwpAQCAtMTA4Niw3 ICsxMDg2LDEwIEBAIGNvbnN0IEZGQ29kZWMgZmZfaDI2NF9kZWNvZGVyID0gewogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEhXQUNDRUxfRDNEMTFWQShoMjY0KSwKICNlbmRpZgogI2lm IENPTkZJR19IMjY0X0QzRDExVkEyX0hXQUNDRUwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBIV0FDQ0VMX0QzRDExVkEyKGgyNjQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEhXQUNDRUxfRDNEMTFWQShoMjY0KSwKKyNlbmRpZgorI2lmIENPTkZJR19IMjY0X0QzRDEy REVDX0hXQUNDRUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIV0FDQ0VMX0QzRDEy REVDKGgyNjQpLAogI2VuZGlmCiAjaWYgQ09ORklHX0gyNjRfTlZERUNfSFdBQ0NFTAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEhXQUNDRUxfTlZERUMoaDI2NCksCmRpZmYgLS1naXQg YS9saWJhdmNvZGVjL2h3YWNjZWxzLmggYi9saWJhdmNvZGVjL2h3YWNjZWxzLmgKaW5kZXggYWNh NTU4MzFmMy4uNjA3YTJjZDBmOSAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9od2FjY2Vscy5oCisr KyBiL2xpYmF2Y29kZWMvaHdhY2NlbHMuaApAQCAtMzEsNiArMzEsNyBAQCBleHRlcm4gY29uc3Qg QVZIV0FjY2VsIGZmX2gyNjNfdmFhcGlfaHdhY2NlbDsKIGV4dGVybiBjb25zdCBBVkhXQWNjZWwg ZmZfaDI2M192aWRlb3Rvb2xib3hfaHdhY2NlbDsKIGV4dGVybiBjb25zdCBBVkhXQWNjZWwgZmZf aDI2NF9kM2QxMXZhX2h3YWNjZWw7CiBleHRlcm4gY29uc3QgQVZIV0FjY2VsIGZmX2gyNjRfZDNk MTF2YTJfaHdhY2NlbDsKK2V4dGVybiBjb25zdCBBVkhXQWNjZWwgZmZfaDI2NF9kM2QxMmRlY19o d2FjY2VsOwogZXh0ZXJuIGNvbnN0IEFWSFdBY2NlbCBmZl9oMjY0X2R4dmEyX2h3YWNjZWw7CiBl eHRlcm4gY29uc3QgQVZIV0FjY2VsIGZmX2gyNjRfbnZkZWNfaHdhY2NlbDsKIGV4dGVybiBjb25z dCBBVkhXQWNjZWwgZmZfaDI2NF92YWFwaV9od2FjY2VsOwpkaWZmIC0tZ2l0IGEvbGliYXZjb2Rl Yy9od2NvbmZpZy5oIGIvbGliYXZjb2RlYy9od2NvbmZpZy5oCmluZGV4IDcyMTQyNDkxMmMuLmJk NGUzZjA0YjkgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvaHdjb25maWcuaAorKysgYi9saWJhdmNv ZGVjL2h3Y29uZmlnLmgKQEAgLTY4LDYgKzY4LDggQEAgdHlwZWRlZiBzdHJ1Y3QgQVZDb2RlY0hX Q29uZmlnSW50ZXJuYWwgewogICAgIEhXX0NPTkZJR19IV0FDQ0VMKDEsIDEsIDEsIERYVkEyX1ZM RCwgICAgRFhWQTIsICAgICAgICBmZl8gIyMgY29kZWMgIyMgX2R4dmEyX2h3YWNjZWwpCiAjZGVm aW5lIEhXQUNDRUxfRDNEMTFWQTIoY29kZWMpIFwKICAgICBIV19DT05GSUdfSFdBQ0NFTCgxLCAx LCAwLCBEM0QxMSwgICAgICAgIEQzRDExVkEsICAgICAgZmZfICMjIGNvZGVjICMjIF9kM2QxMXZh Ml9od2FjY2VsKQorI2RlZmluZSBIV0FDQ0VMX0QzRDEyREVDKGNvZGVjKSBcCisgICAgSFdfQ09O RklHX0hXQUNDRUwoMSwgMSwgMCwgRDNEMTIsICAgICAgICBEM0QxMlZBLCAgICAgIGZmXyAjIyBj b2RlYyAjIyBfZDNkMTJkZWNfaHdhY2NlbCkKICNkZWZpbmUgSFdBQ0NFTF9OVkRFQyhjb2RlYykg XAogICAgIEhXX0NPTkZJR19IV0FDQ0VMKDEsIDEsIDAsIENVREEsICAgICAgICAgQ1VEQSwgICAg ICAgICBmZl8gIyMgY29kZWMgIyMgX252ZGVjX2h3YWNjZWwpCiAjZGVmaW5lIEhXQUNDRUxfVkFB UEkoY29kZWMpIFwKLS0gCjIuMzIuMAoK --_009_OSZP286MB217328A12BC439F5BB31897DCAE99OSZP286MB2173JPNP_ Content-Type: application/octet-stream; name="0003-avcodec-add-D3D12VA-hardware-accelerated-HEVC-decodi.patch" Content-Description: 0003-avcodec-add-D3D12VA-hardware-accelerated-HEVC-decodi.patch Content-Disposition: attachment; filename="0003-avcodec-add-D3D12VA-hardware-accelerated-HEVC-decodi.patch"; size=22298; creation-date="Fri, 23 Dec 2022 17:45:09 GMT"; modification-date="Fri, 23 Dec 2022 18:00:31 GMT" Content-Transfer-Encoding: base64 RnJvbSA2YmE1YWRhMDQ5NjYyYjNmMDNhOWRhNjNhYTgzNzI0ZWMwOGRjMDllIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBXdSBKaWFuaHVhIDx0b3FzeHdAb3V0bG9vay5jb20+CkRhdGU6 IFNhdCwgMTcgRGVjIDIwMjIgMDI6MTQ6MTYgKzA4MDAKU3ViamVjdDogW1BBVENIIDMvNl0gYXZj b2RlYzogYWRkIEQzRDEyVkEgaGFyZHdhcmUgYWNjZWxlcmF0ZWQgSEVWQyBkZWNvZGluZwoKVGhl IGNvbW1hbmQgYmVsb3cgaXMgaG93IHRvIGVuYWJsZSBkM2QxMnZhOgpmZm1wZWcgLWh3YWNjZWwg ZDNkMTJ2YSAtaSBpbnB1dC5tcDQgb3V0cHV0Lm1wNAoKU2lnbmVkLW9mZi1ieTogV3UgSmlhbmh1 YSA8dG9xc3h3QG91dGxvb2suY29tPgotLS0KIGNvbmZpZ3VyZSAgICAgICAgICAgICAgICAgIHwg ICAyICsKIGxpYmF2Y29kZWMvTWFrZWZpbGUgICAgICAgIHwgICAxICsKIGxpYmF2Y29kZWMvZDNk MTJkZWNfaGV2Yy5jIHwgMzk4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IGxpYmF2Y29kZWMvaGV2Y2RlYy5jICAgICAgIHwgIDEwICsKIGxpYmF2Y29kZWMvaHdhY2NlbHMu aCAgICAgIHwgICAxICsKIDUgZmlsZXMgY2hhbmdlZCwgNDEyIGluc2VydGlvbnMoKykKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL2QzZDEyZGVjX2hldmMuYwoKZGlmZiAtLWdpdCBhL2Nv bmZpZ3VyZSBiL2NvbmZpZ3VyZQppbmRleCA4MjNkOGU0NDhkLi40MDE0ZjE1Yzk2IDEwMDc1NQot LS0gYS9jb25maWd1cmUKKysrIGIvY29uZmlndXJlCkBAIC0zMDQyLDYgKzMwNDIsOCBAQCBoZXZj X2QzZDExdmFfaHdhY2NlbF9kZXBzPSJkM2QxMXZhIERYVkFfUGljUGFyYW1zX0hFVkMiCiBoZXZj X2QzZDExdmFfaHdhY2NlbF9zZWxlY3Q9ImhldmNfZGVjb2RlciIKIGhldmNfZDNkMTF2YTJfaHdh Y2NlbF9kZXBzPSJkM2QxMXZhIERYVkFfUGljUGFyYW1zX0hFVkMiCiBoZXZjX2QzZDExdmEyX2h3 YWNjZWxfc2VsZWN0PSJoZXZjX2RlY29kZXIiCitoZXZjX2QzZDEyZGVjX2h3YWNjZWxfZGVwcz0i ZDNkMTJ2YSBEWFZBX1BpY1BhcmFtc19IRVZDIgoraGV2Y19kM2QxMmRlY19od2FjY2VsX3NlbGVj dD0iaGV2Y19kZWNvZGVyIgogaGV2Y19keHZhMl9od2FjY2VsX2RlcHM9ImR4dmEyIERYVkFfUGlj UGFyYW1zX0hFVkMiCiBoZXZjX2R4dmEyX2h3YWNjZWxfc2VsZWN0PSJoZXZjX2RlY29kZXIiCiBo ZXZjX252ZGVjX2h3YWNjZWxfZGVwcz0ibnZkZWMiCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL01h a2VmaWxlIGIvbGliYXZjb2RlYy9NYWtlZmlsZQppbmRleCAyY2ZjNDczODc1Li5lNTVhOWE1ZTY4 IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL01ha2VmaWxlCisrKyBiL2xpYmF2Y29kZWMvTWFrZWZp bGUKQEAgLTk4NSw2ICs5ODUsNyBAQCBPQkpTLSQoQ09ORklHX0gyNjRfVkRQQVVfSFdBQ0NFTCkg ICAgICAgICArPSB2ZHBhdV9oMjY0Lm8KIE9CSlMtJChDT05GSUdfSDI2NF9WSURFT1RPT0xCT1hf SFdBQ0NFTCkgICs9IHZpZGVvdG9vbGJveC5vCiBPQkpTLSQoQ09ORklHX0hFVkNfRDNEMTFWQV9I V0FDQ0VMKSAgICAgICArPSBkeHZhMl9oZXZjLm8KIE9CSlMtJChDT05GSUdfSEVWQ19EWFZBMl9I V0FDQ0VMKSAgICAgICAgICs9IGR4dmEyX2hldmMubworT0JKUy0kKENPTkZJR19IRVZDX0QzRDEy REVDX0hXQUNDRUwpICAgICAgKz0gZDNkMTJkZWNfaGV2Yy5vCiBPQkpTLSQoQ09ORklHX0hFVkNf TlZERUNfSFdBQ0NFTCkgICAgICAgICArPSBudmRlY19oZXZjLm8KIE9CSlMtJChDT05GSUdfSEVW Q19RU1ZfSFdBQ0NFTCkgICAgICAgICAgICs9IHFzdmRlYy5vCiBPQkpTLSQoQ09ORklHX0hFVkNf VkFBUElfSFdBQ0NFTCkgICAgICAgICArPSB2YWFwaV9oZXZjLm8gaDI2NV9wcm9maWxlX2xldmVs Lm8KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvZDNkMTJkZWNfaGV2Yy5jIGIvbGliYXZjb2RlYy9k M2QxMmRlY19oZXZjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNjA1 M2VkNGViYwotLS0gL2Rldi9udWxsCisrKyBiL2xpYmF2Y29kZWMvZDNkMTJkZWNfaGV2Yy5jCkBA IC0wLDAgKzEsMzk4IEBACisvKgorICogRGlyZWN0M0QgMTIgSEVWQyBIVyBhY2NlbGVyYXRpb24K KyAqCisgKiBjb3B5cmlnaHQgKGMpIDIwMjIgV3UgSmlhbmh1YSA8dG9xc3h3QG91dGxvb2suY29t PgorICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs aWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy ZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm dGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworCisjaW5jbHVkZSAiY29u ZmlnX2NvbXBvbmVudHMuaCIKKworI2luY2x1ZGUgImxpYmF2dXRpbC9hdmFzc2VydC5oIgorI2lu Y2x1ZGUgImhldmNfZGF0YS5oIgorI2luY2x1ZGUgImhldmNkZWMuaCIKKyNpbmNsdWRlICJkM2Qx MmRlYy5oIgorI2luY2x1ZGUgPGR4dmEuaD4KKworI2RlZmluZSBNQVhfU0xJQ0VTIDI1NgorCit0 eXBlZGVmIHN0cnVjdCBIRVZDRGVjb2RlUGljdHVyZUNvbnRleHQgeworICAgIERYVkFfUGljUGFy YW1zX0hFVkMgICAgcHA7CisgICAgRFhWQV9RbWF0cml4X0hFVkMgICAgICBxbTsKKyAgICB1bnNp Z25lZCAgICAgICAgICAgICAgIHNsaWNlX2NvdW50OworICAgIERYVkFfU2xpY2VfSEVWQ19TaG9y dCAgc2xpY2Vfc2hvcnRbTUFYX1NMSUNFU107CisgICAgY29uc3QgdWludDhfdCAgICAgICAgICpi aXRzdHJlYW07CisgICAgdW5zaWduZWQgICAgICAgICAgICAgICBiaXRzdHJlYW1fc2l6ZTsKK30g SEVWQ0RlY29kZVBpY3R1cmVDb250ZXh0OworCitzdGF0aWMgdm9pZCBmaWxsX3BpY3R1cmVfZW50 cnkoRFhWQV9QaWNFbnRyeV9IRVZDICpwaWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGZsYWcpCit7CisgICAgYXZfYXNzZXJ0MCgoaW5k ZXggJiAweDdmKSA9PSBpbmRleCAmJiAoZmxhZyAmIDB4MDEpID09IGZsYWcpOworICAgIHBpYy0+ YlBpY0VudHJ5ID0gaW5kZXggfCAoZmxhZyA8PCA3KTsKK30KKworc3RhdGljIGludCBnZXRfcmVm cGljX2luZGV4KGNvbnN0IERYVkFfUGljUGFyYW1zX0hFVkMgKnBwLCBpbnQgc3VyZmFjZV9pbmRl eCkKK3sKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgRkZfQVJSQVlfRUxFTVMocHAt PlJlZlBpY0xpc3QpOyBpKyspIHsKKyAgICAgICAgaWYgKChwcC0+UmVmUGljTGlzdFtpXS5iUGlj RW50cnkgJiAweDdmKSA9PSBzdXJmYWNlX2luZGV4KQorICAgICAgICAgIHJldHVybiBpOworICAg IH0KKyAgICByZXR1cm4gMHhmZjsKK30KKworc3RhdGljIHZvaWQgZmlsbF9waWN0dXJlX3BhcmFt ZXRlcnMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBjb25zdCBIRVZDQ29udGV4dCAqaCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYVkFfUGljUGFyYW1zX0hFVkMgKnBwKQor eworICAgIEQzRDEyVkFEZWNvZGVDb250ZXh0ICpjdHggPSBEM0QxMlZBX0RFQ09ERV9DT05URVhU KGF2Y3R4KTsKKworICAgIGNvbnN0IEhFVkNGcmFtZSAqY3VycmVudF9waWN0dXJlID0gaC0+cmVm OworICAgIGNvbnN0IEhFVkNTUFMgKnNwcyA9IGgtPnBzLnNwczsKKyAgICBjb25zdCBIRVZDUFBT ICpwcHMgPSBoLT5wcy5wcHM7CisgICAgaW50IGksIGo7CisKKyAgICBtZW1zZXQocHAsIDAsIHNp emVvZigqcHApKTsKKworICAgIHBwLT5QaWNXaWR0aEluTWluQ2JzWSAgPSBzcHMtPm1pbl9jYl93 aWR0aDsKKyAgICBwcC0+UGljSGVpZ2h0SW5NaW5DYnNZID0gc3BzLT5taW5fY2JfaGVpZ2h0Owor CisgICAgcHAtPndGb3JtYXRBbmRTZXF1ZW5jZUluZm9GbGFncyA9IChzcHMtPmNocm9tYV9mb3Jt YXRfaWRjICAgICAgICAgICAgIDw8ICAwKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChzcHMtPnNlcGFyYXRlX2NvbG91cl9wbGFuZV9mbGFnICAgIDw8ICAyKSB8Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoc3BzLT5iaXRfZGVwdGggLSA4 KSAgICAgICAgICAgICAgIDw8ICAzKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICgoc3BzLT5iaXRfZGVwdGggLSA4KSAgICAgICAgICAgICAgIDw8ICA2KSB8CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoc3BzLT5sb2cyX21heF9wb2NfbHNi IC0gNCkgICAgICAgIDw8ICA5KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICgwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDEzKSB8CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDw8IDE0KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICgwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDE1KTsKKworICAgIGZpbGxf cGljdHVyZV9lbnRyeSgmcHAtPkN1cnJQaWMsIGZmX2QzZDEyZGVjX2dldF9zdXJmYWNlX2luZGV4 KGF2Y3R4LCBjdXJyZW50X3BpY3R1cmUtPmZyYW1lKSwgMCk7CisKKyAgICBwcC0+c3BzX21heF9k ZWNfcGljX2J1ZmZlcmluZ19taW51czEgICAgICAgICA9IHNwcy0+dGVtcG9yYWxfbGF5ZXJbc3Bz LT5tYXhfc3ViX2xheWVycyAtIDFdLm1heF9kZWNfcGljX2J1ZmZlcmluZyAtIDE7CisgICAgcHAt PmxvZzJfbWluX2x1bWFfY29kaW5nX2Jsb2NrX3NpemVfbWludXMzICAgPSBzcHMtPmxvZzJfbWlu X2NiX3NpemUgLSAzOworICAgIHBwLT5sb2cyX2RpZmZfbWF4X21pbl9sdW1hX2NvZGluZ19ibG9j a19zaXplID0gc3BzLT5sb2cyX2RpZmZfbWF4X21pbl9jb2RpbmdfYmxvY2tfc2l6ZTsKKyAgICBw cC0+bG9nMl9taW5fdHJhbnNmb3JtX2Jsb2NrX3NpemVfbWludXMyICAgICA9IHNwcy0+bG9nMl9t aW5fdGJfc2l6ZSAtIDI7CisgICAgcHAtPmxvZzJfZGlmZl9tYXhfbWluX3RyYW5zZm9ybV9ibG9j a19zaXplICAgPSBzcHMtPmxvZzJfbWF4X3RyYWZvX3NpemUgIC0gc3BzLT5sb2cyX21pbl90Yl9z aXplOworICAgIHBwLT5tYXhfdHJhbnNmb3JtX2hpZXJhcmNoeV9kZXB0aF9pbnRlciAgICAgID0g c3BzLT5tYXhfdHJhbnNmb3JtX2hpZXJhcmNoeV9kZXB0aF9pbnRlcjsKKyAgICBwcC0+bWF4X3Ry YW5zZm9ybV9oaWVyYXJjaHlfZGVwdGhfaW50cmEgICAgICA9IHNwcy0+bWF4X3RyYW5zZm9ybV9o aWVyYXJjaHlfZGVwdGhfaW50cmE7CisgICAgcHAtPm51bV9zaG9ydF90ZXJtX3JlZl9waWNfc2V0 cyAgICAgICAgICAgICAgPSBzcHMtPm5iX3N0X3JwczsKKyAgICBwcC0+bnVtX2xvbmdfdGVybV9y ZWZfcGljc19zcHMgICAgICAgICAgICAgICA9IHNwcy0+bnVtX2xvbmdfdGVybV9yZWZfcGljc19z cHM7CisKKyAgICBwcC0+bnVtX3JlZl9pZHhfbDBfZGVmYXVsdF9hY3RpdmVfbWludXMxICAgICA9 IHBwcy0+bnVtX3JlZl9pZHhfbDBfZGVmYXVsdF9hY3RpdmUgLSAxOworICAgIHBwLT5udW1fcmVm X2lkeF9sMV9kZWZhdWx0X2FjdGl2ZV9taW51czEgICAgID0gcHBzLT5udW1fcmVmX2lkeF9sMV9k ZWZhdWx0X2FjdGl2ZSAtIDE7CisgICAgcHAtPmluaXRfcXBfbWludXMyNiAgICAgICAgICAgICAg ICAgICAgICAgICAgPSBwcHMtPnBpY19pbml0X3FwX21pbnVzMjY7CisKKyAgICBpZiAoaC0+c2gu c2hvcnRfdGVybV9yZWZfcGljX3NldF9zcHNfZmxhZyA9PSAwICYmIGgtPnNoLnNob3J0X3Rlcm1f cnBzKSB7CisgICAgICAgIHBwLT51Y051bURlbHRhUG9jc09mUmVmUnBzSWR4ICAgICAgICAgICAg PSBoLT5zaC5zaG9ydF90ZXJtX3Jwcy0+cnBzX2lkeF9udW1fZGVsdGFfcG9jczsKKyAgICAgICAg cHAtPndOdW1CaXRzRm9yU2hvcnRUZXJtUlBTSW5TbGljZSAgICAgICA9IGgtPnNoLnNob3J0X3Rl cm1fcmVmX3BpY19zZXRfc2l6ZTsKKyAgICB9CisKKyAgICBwcC0+ZHdDb2RpbmdQYXJhbVRvb2xG bGFncyA9IChzcHMtPnNjYWxpbmdfbGlzdF9lbmFibGVfZmxhZyAgICAgICAgICAgICAgICAgIDw8 ICAwKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3BzLT5hbXBfZW5hYmxl ZF9mbGFnICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAgMSkgfAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNwcy0+c2FvX2VuYWJsZWQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPDwgIDIpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzcHMt PnBjbV9lbmFibGVkX2ZsYWcgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICAzKSB8CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHNwcy0+cGNtX2VuYWJsZWRfZmxhZyA/IChz cHMtPnBjbS5iaXRfZGVwdGggLSAxKSA6IDApICAgICAgICAgICAgPDwgIDQpIHwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICgoc3BzLT5wY21fZW5hYmxlZF9mbGFnID8gKHNwcy0+ cGNtLmJpdF9kZXB0aF9jaHJvbWEgLSAxKSA6IDApICAgICA8PCAgOCkgfAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKChzcHMtPnBjbV9lbmFibGVkX2ZsYWcgPyAoc3BzLT5wY20u bG9nMl9taW5fcGNtX2NiX3NpemUgLSAzKSA6IDApIDw8IDEyKSB8CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoKHNwcy0+cGNtX2VuYWJsZWRfZmxhZyA/IChzcHMtPnBjbS5sb2cy X21heF9wY21fY2Jfc2l6ZSAtIHNwcy0+cGNtLmxvZzJfbWluX3BjbV9jYl9zaXplKSA6IDApIDw8 IDE0KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3BzLT5wY20ubG9vcF9m aWx0ZXJfZGlzYWJsZV9mbGFnICAgICAgICAgICAgICA8PCAxNikgfAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNwcy0+bG9uZ190ZXJtX3JlZl9waWNzX3ByZXNlbnRfZmxhZyAg ICAgICAgICAgPDwgMTcpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzcHMt PnNwc190ZW1wb3JhbF9tdnBfZW5hYmxlZF9mbGFnICAgICAgICAgICAgIDw8IDE4KSB8CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3BzLT5zcHNfc3Ryb25nX2ludHJhX3Ntb290 aGluZ19lbmFibGVfZmxhZyAgICA8PCAxOSkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHBwcy0+ZGVwZW5kZW50X3NsaWNlX3NlZ21lbnRzX2VuYWJsZWRfZmxhZyAgICAgPDwg MjApIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcHMtPm91dHB1dF9mbGFn X3ByZXNlbnRfZmxhZyAgICAgICAgICAgICAgICAgIDw8IDIxKSB8CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAocHBzLT5udW1fZXh0cmFfc2xpY2VfaGVhZGVyX2JpdHMgICAgICAg ICAgICAgICA8PCAyMikgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBwcy0+ c2lnbl9kYXRhX2hpZGluZ19mbGFnICAgICAgICAgICAgICAgICAgICAgPDwgMjUpIHwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcHMtPmNhYmFjX2luaXRfcHJlc2VudF9mbGFn ICAgICAgICAgICAgICAgICAgIDw8IDI2KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAy Nyk7CisKKyAgICBwcC0+ZHdDb2RpbmdTZXR0aW5nUGljdHVyZVByb3BlcnR5RmxhZ3MgPSAocHBz LT5jb25zdHJhaW5lZF9pbnRyYV9wcmVkX2ZsYWcgICAgICAgICAgICAgICAgICAgPDwgIDApIHwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHBzLT50cmFu c2Zvcm1fc2tpcF9lbmFibGVkX2ZsYWcgICAgICAgICAgICAgICAgICAgPDwgIDEpIHwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHBzLT5jdV9xcF9kZWx0 YV9lbmFibGVkX2ZsYWcgICAgICAgICAgICAgICAgICAgICAgPDwgIDIpIHwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHBzLT5waWNfc2xpY2VfbGV2ZWxf Y2hyb21hX3FwX29mZnNldHNfcHJlc2VudF9mbGFnIDw8ICAzKSB8CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBwcy0+d2VpZ2h0ZWRfcHJlZF9mbGFnICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICA0KSB8CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHBwcy0+d2VpZ2h0ZWRfYmlwcmVkX2ZsYWcgICAgICAg ICAgICAgICAgICAgICAgICAgIDw8ICA1KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHBwcy0+dHJhbnNxdWFudF9ieXBhc3NfZW5hYmxlX2ZsYWcgICAg ICAgICAgICAgICAgIDw8ICA2KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHBwcy0+dGlsZXNfZW5hYmxlZF9mbGFnICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDw8ICA3KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHBwcy0+ZW50cm9weV9jb2Rpbmdfc3luY19lbmFibGVkX2ZsYWcgICAgICAgICAgICAg IDw8ICA4KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHBwcy0+dW5pZm9ybV9zcGFjaW5nX2ZsYWcgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICA5 KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcHMt PnRpbGVzX2VuYWJsZWRfZmxhZyA/IHBwcy0+bG9vcF9maWx0ZXJfYWNyb3NzX3RpbGVzX2VuYWJs ZWRfZmxhZyA6IDApIDw8IDEwKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHBwcy0+c2VxX2xvb3BfZmlsdGVyX2Fjcm9zc19zbGljZXNfZW5hYmxlZF9m bGFnICAgIDw8IDExKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHBwcy0+ZGVibG9ja2luZ19maWx0ZXJfb3ZlcnJpZGVfZW5hYmxlZF9mbGFnICAgICAg IDw8IDEyKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHBwcy0+ZGlzYWJsZV9kYmYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDEz KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBwcy0+ bGlzdHNfbW9kaWZpY2F0aW9uX3ByZXNlbnRfZmxhZyAgICAgICAgICAgICAgIDw8IDE0KSB8Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBwcy0+c2xpY2Vf aGVhZGVyX2V4dGVuc2lvbl9wcmVzZW50X2ZsYWcgICAgICAgICAgIDw8IDE1KSB8CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKElTX0lSQVAoaCkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDE2KSB8CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKElTX0lEUihoKSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDE3KSB8CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW50cmFQaWNGbGFnICovCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKElTX0lSQVAoaCkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDE4KSB8CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDE5KTsKKyAgICBwcC0+cHBzX2NiX3FwX29mZnNl dCAgICAgICAgICAgID0gcHBzLT5jYl9xcF9vZmZzZXQ7CisgICAgcHAtPnBwc19jcl9xcF9vZmZz ZXQgICAgICAgICAgICA9IHBwcy0+Y3JfcXBfb2Zmc2V0OworICAgIGlmIChwcHMtPnRpbGVzX2Vu YWJsZWRfZmxhZykgeworICAgICAgICBwcC0+bnVtX3RpbGVfY29sdW1uc19taW51czEgPSBwcHMt Pm51bV90aWxlX2NvbHVtbnMgLSAxOworICAgICAgICBwcC0+bnVtX3RpbGVfcm93c19taW51czEg ICAgPSBwcHMtPm51bV90aWxlX3Jvd3MgLSAxOworCisgICAgICAgIGlmICghcHBzLT51bmlmb3Jt X3NwYWNpbmdfZmxhZykgeworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHBwcy0+bnVtX3Rp bGVfY29sdW1uczsgaSsrKQorICAgICAgICAgICAgICAgIHBwLT5jb2x1bW5fd2lkdGhfbWludXMx W2ldID0gcHBzLT5jb2x1bW5fd2lkdGhbaV0gLSAxOworCisgICAgICAgICAgICBmb3IgKGkgPSAw OyBpIDwgcHBzLT5udW1fdGlsZV9yb3dzOyBpKyspCisgICAgICAgICAgICAgICAgcHAtPnJvd19o ZWlnaHRfbWludXMxW2ldID0gcHBzLT5yb3dfaGVpZ2h0W2ldIC0gMTsKKyAgICAgICAgfQorICAg IH0KKworICAgIHBwLT5kaWZmX2N1X3FwX2RlbHRhX2RlcHRoICAgICAgICAgICA9IHBwcy0+ZGlm Zl9jdV9xcF9kZWx0YV9kZXB0aDsKKyAgICBwcC0+cHBzX2JldGFfb2Zmc2V0X2RpdjIgICAgICAg ICAgICAgPSBwcHMtPmJldGFfb2Zmc2V0IC8gMjsKKyAgICBwcC0+cHBzX3RjX29mZnNldF9kaXYy ICAgICAgICAgICAgICAgPSBwcHMtPnRjX29mZnNldCAvIDI7CisgICAgcHAtPmxvZzJfcGFyYWxs ZWxfbWVyZ2VfbGV2ZWxfbWludXMyID0gcHBzLT5sb2cyX3BhcmFsbGVsX21lcmdlX2xldmVsIC0g MjsKKyAgICBwcC0+Q3VyclBpY09yZGVyQ250VmFsICAgICAgICAgICAgICAgPSBoLT5wb2M7CisK KyAgICAvLyBmaWxsIFJlZlBpY0xpc3QgZnJvbSB0aGUgRFBCCisgICAgZm9yIChpID0gMCwgaiA9 IDA7IGkgPCBGRl9BUlJBWV9FTEVNUyhwcC0+UmVmUGljTGlzdCk7IGkrKykgeworICAgICAgICBj b25zdCBIRVZDRnJhbWUgKmZyYW1lID0gTlVMTDsKKyAgICAgICAgd2hpbGUgKCFmcmFtZSAmJiBq IDwgRkZfQVJSQVlfRUxFTVMoaC0+RFBCKSkgeworICAgICAgICAgICAgaWYgKCZoLT5EUEJbal0g IT0gY3VycmVudF9waWN0dXJlICYmIChoLT5EUEJbal0uZmxhZ3MgJiAoSEVWQ19GUkFNRV9GTEFH X0xPTkdfUkVGIHwgSEVWQ19GUkFNRV9GTEFHX1NIT1JUX1JFRikpKQorICAgICAgICAgICAgICAg IGZyYW1lID0gJmgtPkRQQltqXTsKKyAgICAgICAgICAgIGorKzsKKyAgICAgICAgfQorCisgICAg ICAgIGlmIChmcmFtZSkgeworICAgICAgICAgICAgZmlsbF9waWN0dXJlX2VudHJ5KCZwcC0+UmVm UGljTGlzdFtpXSwgZmZfZDNkMTJkZWNfZ2V0X3N1cmZhY2VfaW5kZXgoYXZjdHgsIGZyYW1lLT5m cmFtZSksICEhKGZyYW1lLT5mbGFncyAmIEhFVkNfRlJBTUVfRkxBR19MT05HX1JFRikpOworICAg ICAgICAgICAgcHAtPlBpY09yZGVyQ250VmFsTGlzdFtpXSA9IGZyYW1lLT5wb2M7CisgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICBwcC0+UmVmUGljTGlzdFtpXS5iUGljRW50cnkgPSAweGZm OworICAgICAgICAgICAgcHAtPlBpY09yZGVyQ250VmFsTGlzdFtpXSAgID0gMDsKKyAgICAgICAg fQorICAgIH0KKworICAgICNkZWZpbmUgRE9fUkVGX0xJU1QocmVmX2lkeCwgcmVmX2xpc3QpIHsg XAorICAgICAgICBjb25zdCBSZWZQaWNMaXN0ICpycGwgPSAmaC0+cnBzW3JlZl9pZHhdOyBcCisg ICAgICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgRkZfQVJSQVlfRUxFTVMocHAtPnJlZl9saXN0 KTsgaSsrKSB7IFwKKyAgICAgICAgICAgIGNvbnN0IEhFVkNGcmFtZSAqZnJhbWUgPSBOVUxMOyBc CisgICAgICAgICAgICB3aGlsZSAoIWZyYW1lICYmIGogPCBycGwtPm5iX3JlZnMpIFwKKyAgICAg ICAgICAgICAgICBmcmFtZSA9IHJwbC0+cmVmW2orK107IFwKKyAgICAgICAgICAgIGlmIChmcmFt ZSAmJiBmcmFtZS0+ZmxhZ3MgJiAoSEVWQ19GUkFNRV9GTEFHX0xPTkdfUkVGIHwgSEVWQ19GUkFN RV9GTEFHX1NIT1JUX1JFRikpIFwKKyAgICAgICAgICAgICAgICBwcC0+cmVmX2xpc3RbaV0gPSBn ZXRfcmVmcGljX2luZGV4KHBwLCBmZl9kM2QxMmRlY19nZXRfc3VyZmFjZV9pbmRleChhdmN0eCwg ZnJhbWUtPmZyYW1lKSk7IFwKKyAgICAgICAgICAgIGVsc2UgXAorICAgICAgICAgICAgICAgIHBw LT5yZWZfbGlzdFtpXSA9IDB4ZmY7IFwKKyAgICAgICAgfSBcCisgICAgfQorCisgICAgLy8gRmls bCBzaG9ydCB0ZXJtIGFuZCBsb25nIHRlcm0gbGlzdHMKKyAgICBET19SRUZfTElTVChTVF9DVVJS X0JFRiwgUmVmUGljU2V0U3RDdXJyQmVmb3JlKTsKKyAgICBET19SRUZfTElTVChTVF9DVVJSX0FG VCwgUmVmUGljU2V0U3RDdXJyQWZ0ZXIpOworICAgIERPX1JFRl9MSVNUKExUX0NVUlIsIFJlZlBp Y1NldEx0Q3Vycik7CisKKyAgICBwcC0+U3RhdHVzUmVwb3J0RmVlZGJhY2tOdW1iZXIgPSBjdHgt PnJlcG9ydF9pZCsrOworfQorCitzdGF0aWMgdm9pZCBmaWxsX3NjYWxpbmdfbGlzdHMoY29uc3Qg QVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBjb25zdCBIRVZDQ29udGV4dCAqaCwgRFhWQV9RbWF0cml4 X0hFVkMgKnFtKQoreworICAgIHVuc2lnbmVkIGksIGosIHBvczsKKyAgICBjb25zdCBTY2FsaW5n TGlzdCAqc2wgPSBoLT5wcy5wcHMtPnNjYWxpbmdfbGlzdF9kYXRhX3ByZXNlbnRfZmxhZyA/Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmgtPnBzLnBwcy0+c2NhbGluZ19saXN0IDogJmgt PnBzLnNwcy0+c2NhbGluZ19saXN0OworCisgICAgbWVtc2V0KHFtLCAwLCBzaXplb2YoKnFtKSk7 CisgICAgZm9yIChpID0gMDsgaSA8IDY7IGkrKykgeworICAgICAgICBmb3IgKGogPSAwOyBqIDwg MTY7IGorKykgeworICAgICAgICAgICAgcG9zID0gNCAqIGZmX2hldmNfZGlhZ19zY2FuNHg0X3lb al0gKyBmZl9oZXZjX2RpYWdfc2NhbjR4NF94W2pdOworICAgICAgICAgICAgcW0tPnVjU2NhbGlu Z0xpc3RzMFtpXVtqXSA9IHNsLT5zbFswXVtpXVtwb3NdOworICAgICAgICB9CisKKyAgICAgICAg Zm9yIChqID0gMDsgaiA8IDY0OyBqKyspIHsKKyAgICAgICAgICAgIHBvcyA9IDggKiBmZl9oZXZj X2RpYWdfc2Nhbjh4OF95W2pdICsgZmZfaGV2Y19kaWFnX3NjYW44eDhfeFtqXTsKKyAgICAgICAg ICAgIHFtLT51Y1NjYWxpbmdMaXN0czFbaV1bal0gPSBzbC0+c2xbMV1baV1bcG9zXTsKKyAgICAg ICAgICAgIHFtLT51Y1NjYWxpbmdMaXN0czJbaV1bal0gPSBzbC0+c2xbMl1baV1bcG9zXTsKKwor ICAgICAgICAgICAgaWYgKGkgPCAyKQorICAgICAgICAgICAgICAgIHFtLT51Y1NjYWxpbmdMaXN0 czNbaV1bal0gPSBzbC0+c2xbM11baSAqIDNdW3Bvc107CisgICAgICAgIH0KKworICAgICAgICBx bS0+dWNTY2FsaW5nTGlzdERDQ29lZlNpemVJRDJbaV0gPSBzbC0+c2xfZGNbMF1baV07CisgICAg ICAgIGlmIChpIDwgMikKKyAgICAgICAgICAgIHFtLT51Y1NjYWxpbmdMaXN0RENDb2VmU2l6ZUlE M1tpXSA9IHNsLT5zbF9kY1sxXVtpICogM107CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBmaWxs X3NsaWNlX3Nob3J0KERYVkFfU2xpY2VfSEVWQ19TaG9ydCAqc2xpY2UsIHVuc2lnbmVkIHBvc2l0 aW9uLCB1bnNpZ25lZCBzaXplKQoreworICAgIG1lbXNldChzbGljZSwgMCwgc2l6ZW9mKCpzbGlj ZSkpOworICAgIHNsaWNlLT5CU05BTHVuaXREYXRhTG9jYXRpb24gPSBwb3NpdGlvbjsKKyAgICBz bGljZS0+U2xpY2VCeXRlc0luQnVmZmVyICAgID0gc2l6ZTsKKyAgICBzbGljZS0+d0JhZFNsaWNl Q2hvcHBpbmcgICAgID0gMDsKK30KKworc3RhdGljIGludCBkM2QxMmRlY19oZXZjX3N0YXJ0X2Zy YW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgYXZfdW51c2VkIGNvbnN0IHVpbnQ4X3QgKmJ1ZmZl ciwgYXZfdW51c2VkIHVpbnQzMl90IHNpemUpCit7CisgICAgY29uc3QgSEVWQ0NvbnRleHQgICAg ICAgICpoICAgICAgID0gYXZjdHgtPnByaXZfZGF0YTsKKyAgICBIRVZDRGVjb2RlUGljdHVyZUNv bnRleHQgKmN0eF9waWMgPSBoLT5yZWYtPmh3YWNjZWxfcGljdHVyZV9wcml2YXRlOworCisgICAg aWYgKCFEM0QxMlZBX0RFQ09ERV9DT05URVhUKGF2Y3R4KSkKKyAgICAgICAgcmV0dXJuIC0xOwor CisgICAgYXZfYXNzZXJ0MChjdHhfcGljKTsKKworICAgIGZpbGxfcGljdHVyZV9wYXJhbWV0ZXJz KGF2Y3R4LCBoLCAmY3R4X3BpYy0+cHApOworCisgICAgZmlsbF9zY2FsaW5nX2xpc3RzKGF2Y3R4 LCBoLCAmY3R4X3BpYy0+cW0pOworCisgICAgY3R4X3BpYy0+c2xpY2VfY291bnQgICAgPSAwOwor ICAgIGN0eF9waWMtPmJpdHN0cmVhbV9zaXplID0gMDsKKyAgICBjdHhfcGljLT5iaXRzdHJlYW0g ICAgICA9IE5VTEw7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBkM2QxMmRlY19o ZXZjX2RlY29kZV9zbGljZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIGNvbnN0IHVpbnQ4X3QgKmJ1 ZmZlciwgdWludDMyX3Qgc2l6ZSkKK3sKKyAgICBjb25zdCBIRVZDQ29udGV4dCAgICAgICAgKmgg ICAgICAgICAgICAgICA9IGF2Y3R4LT5wcml2X2RhdGE7CisgICAgY29uc3QgSEVWQ0ZyYW1lICAg ICAgICAgICpjdXJyZW50X3BpY3R1cmUgPSBoLT5yZWY7CisgICAgSEVWQ0RlY29kZVBpY3R1cmVD b250ZXh0ICpjdHhfcGljICAgICAgICAgPSBjdXJyZW50X3BpY3R1cmUtPmh3YWNjZWxfcGljdHVy ZV9wcml2YXRlOworICAgIHVuc2lnbmVkIHBvc2l0aW9uOworCisgICAgaWYgKGN0eF9waWMtPnNs aWNlX2NvdW50ID49IE1BWF9TTElDRVMpCisgICAgICAgIHJldHVybiBBVkVSUk9SKEVSQU5HRSk7 CisKKyAgICBpZiAoIWN0eF9waWMtPmJpdHN0cmVhbSkKKyAgICAgICAgY3R4X3BpYy0+Yml0c3Ry ZWFtID0gYnVmZmVyOworICAgIGN0eF9waWMtPmJpdHN0cmVhbV9zaXplICs9IHNpemU7CisKKyAg ICBwb3NpdGlvbiA9IGJ1ZmZlciAtIGN0eF9waWMtPmJpdHN0cmVhbTsKKyAgICBmaWxsX3NsaWNl X3Nob3J0KCZjdHhfcGljLT5zbGljZV9zaG9ydFtjdHhfcGljLT5zbGljZV9jb3VudF0sIHBvc2l0 aW9uLCBzaXplKTsKKyAgICBjdHhfcGljLT5zbGljZV9jb3VudCsrOworCisgICAgcmV0dXJuIDA7 Cit9CisKKyNkZWZpbmUgU1RBUlRfQ09ERSA2NTUzNgorI2RlZmluZSBTVEFSVF9DT0RFX1NJWkUg Mworc3RhdGljIGludCB1cGRhdGVfaW5wdXRfYXJndW1lbnRzKEFWQ29kZWNDb250ZXh0ICphdmN0 eCwgRDNEMTJfVklERU9fREVDT0RFX0lOUFVUX1NUUkVBTV9BUkdVTUVOVFMgKmlucHV0X2FyZ3Ms IElEM0QxMlJlc291cmNlICpidWZmZXIpCit7CisgICAgRDNEMTJWQURlY29kZUNvbnRleHQgICAq Y3R4ICAgICAgICAgID0gRDNEMTJWQV9ERUNPREVfQ09OVEVYVChhdmN0eCk7CisgICAgQVZIV0Zy YW1lc0NvbnRleHQgICAgICAqZnJhbWVzX2N0eCAgID0gRDNEMTJWQV9GUkFNRVNfQ09OVEVYVChh dmN0eCk7CisgICAgQVZEM0QxMlZBRnJhbWVzQ29udGV4dCAqZnJhbWVzX2h3Y3R4ID0gZnJhbWVz X2N0eC0+aHdjdHg7CisKKyAgICBjb25zdCBIRVZDQ29udGV4dCAgICAgICAgKmggICAgICAgICAg ICAgICA9IGF2Y3R4LT5wcml2X2RhdGE7CisgICAgY29uc3QgSEVWQ0ZyYW1lICAgICAgICAgICpj dXJyZW50X3BpY3R1cmUgPSBoLT5yZWY7CisgICAgSEVWQ0RlY29kZVBpY3R1cmVDb250ZXh0ICpj dHhfcGljICAgICAgICAgPSBjdXJyZW50X3BpY3R1cmUtPmh3YWNjZWxfcGljdHVyZV9wcml2YXRl OworCisgICAgaW50IGksIGluZGV4OworICAgIHVpbnQ4X3QgKm1hcHBlZF9kYXRhLCAqbWFwcGVk X3B0cjsKKyAgICBEWFZBX1NsaWNlX0hFVkNfU2hvcnQgKnNsaWNlOworICAgIEQzRDEyX1ZJREVP X0RFQ09ERV9GUkFNRV9BUkdVTUVOVCAqYXJnczsKKworICAgIGlmIChGQUlMRUQoSUQzRDEyUmVz b3VyY2VfTWFwKGJ1ZmZlciwgMCwgTlVMTCwgJm1hcHBlZF9kYXRhKSkpIHsKKyAgICAgICAgYXZf bG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJGYWlsZWQgdG8gbWFwIEQzRDEyIEJ1ZmZlciByZXNv dXJjZSFcbiIpOworICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworICAgIH0KKworICAg IG1hcHBlZF9wdHIgPSBtYXBwZWRfZGF0YTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgY3R4X3BpYy0+ c2xpY2VfY291bnQ7IGkrKykgeworICAgICAgICBVSU5UIHBvc2l0aW9uLCBzaXplOworICAgICAg ICBzbGljZSA9ICZjdHhfcGljLT5zbGljZV9zaG9ydFtpXTsKKworICAgICAgICBwb3NpdGlvbiA9 IHNsaWNlLT5CU05BTHVuaXREYXRhTG9jYXRpb247CisgICAgICAgIHNpemUgPSBzbGljZS0+U2xp Y2VCeXRlc0luQnVmZmVyOworCisgICAgICAgIHNsaWNlLT5TbGljZUJ5dGVzSW5CdWZmZXIgKz0g U1RBUlRfQ09ERV9TSVpFOworICAgICAgICBzbGljZS0+QlNOQUx1bml0RGF0YUxvY2F0aW9uID0g bWFwcGVkX3B0ciAtIG1hcHBlZF9kYXRhOworCisgICAgICAgICoodWludDMyX3QgKiltYXBwZWRf cHRyID0gU1RBUlRfQ09ERTsKKyAgICAgICAgbWFwcGVkX3B0ciArPSBTVEFSVF9DT0RFX1NJWkU7 CisKKyAgICAgICAgbWVtY3B5KG1hcHBlZF9wdHIsICZjdHhfcGljLT5iaXRzdHJlYW1bcG9zaXRp b25dLCBzaXplKTsKKyAgICAgICAgbWFwcGVkX3B0ciArPSBzaXplOworICAgIH0KKworICAgIElE M0QxMlJlc291cmNlX1VubWFwKGJ1ZmZlciwgMCwgTlVMTCk7CisKKyAgICBpbnB1dF9hcmdzLT5D b21wcmVzc2VkQml0c3RyZWFtID0gKEQzRDEyX1ZJREVPX0RFQ09ERV9DT01QUkVTU0VEX0JJVFNU UkVBTSl7CisgICAgICAgIC5wQnVmZmVyID0gYnVmZmVyLAorICAgICAgICAuT2Zmc2V0ICA9IDAs CisgICAgICAgIC5TaXplICAgID0gbWFwcGVkX3B0ciAtIG1hcHBlZF9kYXRhLAorICAgIH07CisK KyAgICBhcmdzID0gJmlucHV0X2FyZ3MtPkZyYW1lQXJndW1lbnRzW2lucHV0X2FyZ3MtPk51bUZy YW1lQXJndW1lbnRzKytdOworICAgIGFyZ3MtPlR5cGUgPSBEM0QxMl9WSURFT19ERUNPREVfQVJH VU1FTlRfVFlQRV9TTElDRV9DT05UUk9MOworICAgIGFyZ3MtPlNpemUgPSBzaXplb2YoRFhWQV9T bGljZV9IRVZDX1Nob3J0KSAqIGN0eF9waWMtPnNsaWNlX2NvdW50OworICAgIGFyZ3MtPnBEYXRh ID0gY3R4X3BpYy0+c2xpY2Vfc2hvcnQ7CisKKyAgICBpbmRleCA9IGN0eF9waWMtPnBwLkN1cnJQ aWMuSW5kZXg3Qml0czsKKyAgICBjdHgtPnJlZl9yZXNvdXJjZXNbaW5kZXhdID0gZnJhbWVzX2h3 Y3R4LT50ZXh0dXJlX2luZm9zW2luZGV4XS50ZXh0dXJlOworICAgIGZvciAoaSA9IDA7IGkgPCBG Rl9BUlJBWV9FTEVNUyhjdHhfcGljLT5wcC5SZWZQaWNMaXN0KTsgaSsrKSB7CisgICAgICAgIGlu ZGV4ID0gY3R4X3BpYy0+cHAuUmVmUGljTGlzdFtpXS5JbmRleDdCaXRzOworICAgICAgICBpZiAo aW5kZXggIT0gMHg3ZikKKyAgICAgICAgICAgIGN0eC0+cmVmX3Jlc291cmNlc1tpbmRleF0gPSBm cmFtZXNfaHdjdHgtPnRleHR1cmVfaW5mb3NbaW5kZXhdLnRleHR1cmU7CisgICAgfQorCisgICAg cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZDNkMTJkZWNfaGV2Y19lbmRfZnJhbWUoQVZDb2Rl Y0NvbnRleHQgKmF2Y3R4KQoreworICAgIEhFVkNDb250ZXh0ICAgICAgICAgICAgICAqaCAgICAg ICA9IGF2Y3R4LT5wcml2X2RhdGE7CisgICAgSEVWQ0RlY29kZVBpY3R1cmVDb250ZXh0ICpjdHhf cGljID0gaC0+cmVmLT5od2FjY2VsX3BpY3R1cmVfcHJpdmF0ZTsKKworICAgIGludCBzY2FsZSA9 IGN0eF9waWMtPnBwLmR3Q29kaW5nUGFyYW1Ub29sRmxhZ3MgJiAxOworCisgICAgaWYgKGN0eF9w aWMtPnNsaWNlX2NvdW50IDw9IDAgfHwgY3R4X3BpYy0+Yml0c3RyZWFtX3NpemUgPD0gMCkKKyAg ICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIGZmX2QzZDEyZGVjX2NvbW1vbl9lbmRfZnJh bWUoYXZjdHgsIGgtPnJlZi0+ZnJhbWUsICZjdHhfcGljLT5wcCwgc2l6ZW9mKGN0eF9waWMtPnBw KSwKKyAgICAgICAgICAgICAgIHNjYWxlID8gJmN0eF9waWMtPnFtIDogTlVMTCwgc2NhbGUgPyBz aXplb2YoY3R4X3BpYy0+cW0pIDogMCwgdXBkYXRlX2lucHV0X2FyZ3VtZW50cyk7Cit9CisKK3N0 YXRpYyBpbnQgZDNkMTJkZWNfaGV2Y19kZWNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgp Cit7CisgICAgSEVWQ0NvbnRleHQgICAgICAgICAgKmggICA9IGF2Y3R4LT5wcml2X2RhdGE7Cisg ICAgRDNEMTJWQURlY29kZUNvbnRleHQgKmN0eCA9IEQzRDEyVkFfREVDT0RFX0NPTlRFWFQoYXZj dHgpOworCisgICAgc3dpdGNoIChhdmN0eC0+cHJvZmlsZSkgeworICAgIGNhc2UgRkZfUFJPRklM RV9IRVZDX01BSU5fMTA6CisgICAgICAgIGN0eC0+Y2ZnLkRlY29kZVByb2ZpbGUgPSBEM0QxMl9W SURFT19ERUNPREVfUFJPRklMRV9IRVZDX01BSU4xMDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBj YXNlIEZGX1BST0ZJTEVfSEVWQ19NQUlOX1NUSUxMX1BJQ1RVUkU6CisgICAgICAgIGF2X2xvZyhh dmN0eCwgQVZfTE9HX0VSUk9SLCAiRDNEMTIgZG9lc24ndCBzdXBwb3J0IFBST0ZJTEVfSEVWQ19N QUlOX1NUSUxMX1BJQ1RVUkUhXG4iKTsKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsK KworICAgIGNhc2UgRkZfUFJPRklMRV9IRVZDX01BSU46CisgICAgZGVmYXVsdDoKKyAgICAgICAg Y3R4LT5jZmcuRGVjb2RlUHJvZmlsZSA9IEQzRDEyX1ZJREVPX0RFQ09ERV9QUk9GSUxFX0hFVkNf TUFJTjsKKyAgICAgICAgYnJlYWs7CisgICAgfTsKKworICAgIHJldHVybiBmZl9kM2QxMmRlY19k ZWNvZGVfaW5pdChhdmN0eCk7Cit9CisKKyNpZiBDT05GSUdfSEVWQ19EM0QxMkRFQ19IV0FDQ0VM Citjb25zdCBBVkhXQWNjZWwgZmZfaGV2Y19kM2QxMmRlY19od2FjY2VsID0geworICAgIC5uYW1l ICAgICAgICAgICAgICAgICA9ICJoZXZjX2QzZDEyZGVjIiwKKyAgICAudHlwZSAgICAgICAgICAg ICAgICAgPSBBVk1FRElBX1RZUEVfVklERU8sCisgICAgLmlkICAgICAgICAgICAgICAgICAgID0g QVZfQ09ERUNfSURfSEVWQywKKyAgICAucGl4X2ZtdCAgICAgICAgICAgICAgPSBBVl9QSVhfRk1U X0QzRDEyLAorICAgIC5pbml0ICAgICAgICAgICAgICAgICA9IGQzZDEyZGVjX2hldmNfZGVjb2Rl X2luaXQsCisgICAgLnVuaW5pdCAgICAgICAgICAgICAgID0gZmZfZDNkMTJkZWNfZGVjb2RlX3Vu aW5pdCwKKyAgICAuc3RhcnRfZnJhbWUgICAgICAgICAgPSBkM2QxMmRlY19oZXZjX3N0YXJ0X2Zy YW1lLAorICAgIC5kZWNvZGVfc2xpY2UgICAgICAgICA9IGQzZDEyZGVjX2hldmNfZGVjb2RlX3Ns aWNlLAorICAgIC5lbmRfZnJhbWUgICAgICAgICAgICA9IGQzZDEyZGVjX2hldmNfZW5kX2ZyYW1l LAorICAgIC5mcmFtZV9wYXJhbXMgICAgICAgICA9IGZmX2QzZDEyZGVjX2NvbW1vbl9mcmFtZV9w YXJhbXMsCisgICAgLmZyYW1lX3ByaXZfZGF0YV9zaXplID0gc2l6ZW9mKEhFVkNEZWNvZGVQaWN0 dXJlQ29udGV4dCksCisgICAgLnByaXZfZGF0YV9zaXplICAgICAgID0gc2l6ZW9mKEQzRDEyVkFE ZWNvZGVDb250ZXh0KSwKK307CisjZW5kaWYKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvaGV2Y2Rl Yy5jIGIvbGliYXZjb2RlYy9oZXZjZGVjLmMKaW5kZXggNTY3ZThkODFkNC4uYTY3M2QxMjlmYSAx MDA2NDQKLS0tIGEvbGliYXZjb2RlYy9oZXZjZGVjLmMKKysrIGIvbGliYXZjb2RlYy9oZXZjZGVj LmMKQEAgLTQwMiw2ICs0MDIsNyBAQCBzdGF0aWMgZW51bSBBVlBpeGVsRm9ybWF0IGdldF9mb3Jt YXQoSEVWQ0NvbnRleHQgKnMsIGNvbnN0IEhFVkNTUFMgKnNwcykKIHsKICNkZWZpbmUgSFdBQ0NF TF9NQVggKENPTkZJR19IRVZDX0RYVkEyX0hXQUNDRUwgKyBcCiAgICAgICAgICAgICAgICAgICAg ICBDT05GSUdfSEVWQ19EM0QxMVZBX0hXQUNDRUwgKiAyICsgXAorICAgICAgICAgICAgICAgICAg ICAgQ09ORklHX0hFVkNfRDNEMTJERUNfSFdBQ0NFTCArIFwKICAgICAgICAgICAgICAgICAgICAg IENPTkZJR19IRVZDX05WREVDX0hXQUNDRUwgKyBcCiAgICAgICAgICAgICAgICAgICAgICBDT05G SUdfSEVWQ19WQUFQSV9IV0FDQ0VMICsgXAogICAgICAgICAgICAgICAgICAgICAgQ09ORklHX0hF VkNfVklERU9UT09MQk9YX0hXQUNDRUwgKyBcCkBAIC00MTgsNiArNDE5LDkgQEAgc3RhdGljIGVu dW0gQVZQaXhlbEZvcm1hdCBnZXRfZm9ybWF0KEhFVkNDb250ZXh0ICpzLCBjb25zdCBIRVZDU1BT ICpzcHMpCiAgICAgICAgICpmbXQrKyA9IEFWX1BJWF9GTVRfRDNEMTFWQV9WTEQ7CiAgICAgICAg ICpmbXQrKyA9IEFWX1BJWF9GTVRfRDNEMTE7CiAjZW5kaWYKKyNpZiBDT05GSUdfSEVWQ19EM0Qx MkRFQ19IV0FDQ0VMCisgICAgICAgICpmbXQrKyA9IEFWX1BJWF9GTVRfRDNEMTI7CisjZW5kaWYK ICNpZiBDT05GSUdfSEVWQ19WQUFQSV9IV0FDQ0VMCiAgICAgICAgICpmbXQrKyA9IEFWX1BJWF9G TVRfVkFBUEk7CiAjZW5kaWYKQEAgLTQzOSw2ICs0NDMsOSBAQCBzdGF0aWMgZW51bSBBVlBpeGVs Rm9ybWF0IGdldF9mb3JtYXQoSEVWQ0NvbnRleHQgKnMsIGNvbnN0IEhFVkNTUFMgKnNwcykKICAg ICAgICAgKmZtdCsrID0gQVZfUElYX0ZNVF9EM0QxMVZBX1ZMRDsKICAgICAgICAgKmZtdCsrID0g QVZfUElYX0ZNVF9EM0QxMTsKICNlbmRpZgorI2lmIENPTkZJR19IRVZDX0QzRDEyREVDX0hXQUND RUwKKyAgICAgICAgKmZtdCsrID0gQVZfUElYX0ZNVF9EM0QxMjsKKyNlbmRpZgogI2lmIENPTkZJ R19IRVZDX1ZBQVBJX0hXQUNDRUwKICAgICAgICAgKmZtdCsrID0gQVZfUElYX0ZNVF9WQUFQSTsK ICNlbmRpZgpAQCAtMzcyOCw2ICszNzM1LDkgQEAgY29uc3QgRkZDb2RlYyBmZl9oZXZjX2RlY29k ZXIgPSB7CiAjaWYgQ09ORklHX0hFVkNfRDNEMTFWQTJfSFdBQ0NFTAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEhXQUNDRUxfRDNEMTFWQTIoaGV2YyksCiAjZW5kaWYKKyNpZiBDT05G SUdfSEVWQ19EM0QxMkRFQ19IV0FDQ0VMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg SFdBQ0NFTF9EM0QxMkRFQyhoZXZjKSwKKyNlbmRpZgogI2lmIENPTkZJR19IRVZDX05WREVDX0hX QUNDRUwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIV0FDQ0VMX05WREVDKGhldmMp LAogI2VuZGlmCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2h3YWNjZWxzLmggYi9saWJhdmNvZGVj L2h3YWNjZWxzLmgKaW5kZXggNjA3YTJjZDBmOS4uYmMyNzAyM2M4ZiAxMDA2NDQKLS0tIGEvbGli YXZjb2RlYy9od2FjY2Vscy5oCisrKyBiL2xpYmF2Y29kZWMvaHdhY2NlbHMuaApAQCAtMzksNiAr MzksNyBAQCBleHRlcm4gY29uc3QgQVZIV0FjY2VsIGZmX2gyNjRfdmRwYXVfaHdhY2NlbDsKIGV4 dGVybiBjb25zdCBBVkhXQWNjZWwgZmZfaDI2NF92aWRlb3Rvb2xib3hfaHdhY2NlbDsKIGV4dGVy biBjb25zdCBBVkhXQWNjZWwgZmZfaGV2Y19kM2QxMXZhX2h3YWNjZWw7CiBleHRlcm4gY29uc3Qg QVZIV0FjY2VsIGZmX2hldmNfZDNkMTF2YTJfaHdhY2NlbDsKK2V4dGVybiBjb25zdCBBVkhXQWNj ZWwgZmZfaGV2Y19kM2QxMmRlY19od2FjY2VsOwogZXh0ZXJuIGNvbnN0IEFWSFdBY2NlbCBmZl9o ZXZjX2R4dmEyX2h3YWNjZWw7CiBleHRlcm4gY29uc3QgQVZIV0FjY2VsIGZmX2hldmNfbnZkZWNf aHdhY2NlbDsKIGV4dGVybiBjb25zdCBBVkhXQWNjZWwgZmZfaGV2Y192YWFwaV9od2FjY2VsOwot LSAKMi4zMi4wCgo= --_009_OSZP286MB217328A12BC439F5BB31897DCAE99OSZP286MB2173JPNP_ Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". --_009_OSZP286MB217328A12BC439F5BB31897DCAE99OSZP286MB2173JPNP_--