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 468BE47254 for ; Sat, 2 Sep 2023 16:09:05 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DC8F668C7E1; Sat, 2 Sep 2023 19:08:32 +0300 (EEST) Received: from APC01-PSA-obe.outbound.protection.outlook.com (mail-psaapc01olkn2052.outbound.protection.outlook.com [40.92.52.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 93B4168C7C5 for ; Sat, 2 Sep 2023 19:08:25 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cmjQQwjMGWQd0nGoCF0T9fz4XdEdaINMb90SyqUbSrYBZDbajX24aEgaxJqwf4zHLRALj9vQ4aTJ1QjCjo0Q17vr1G3JlT52eFo0nD/hcCZ+nGeMFfpu0ZUZkR5U/grl8I3J0LW9mI17K0HA5T3348ffJHssK6GduPQIaPHD1LaOGBT0ZtH3d39oEIYdWoz5hFRxLqR3HPSu+RTFW3zvLg+Cz/+/TrnTe833aaEbvMf8p2qfyLWqceWUZXAOsAfuBu+0w0P27L7raYvwyW5MXwK6Bric03uOnf8cQKGk8KiaZqAHSuL6Ywa0apJOg3eQW+4GdOjWxDP3DqjWpbqPXA== 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=7a8VrWGsZRbzWgWlndBvgaxNiD4wKlqU9DUL+FkhkEQ=; b=SWya9jThPqevsH1Lgv3/uHzWQoHNmhqbLmAREzpyLyNiZsitKCiy8dlr2AQ7wLNeZyuAsAYcB9HNQNyIAdfhr/lYDtfdEe5oaIzi4uWMdU0BdUS9dU8I7LqSeiT+Tz5WfVYahZod3e8G5RBx439tj699DTRrM7JsgWQ2bTua4uoQ+ZAGHM7TlMImfWAKbDMH/CiUDQEFhrliSiD0ONSZTHPX4u51KouPyF6Xnr/2h4/20G9uH30Nwou5+Wml8sVJMYuzL2nUEfr8o1f2Ti+W5QFF+QSvSmxVRKPAMfDfVSbY9Mw79xwSU4dIqSBbk/ODbs831YRogFJeMp4pcarnig== 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=7a8VrWGsZRbzWgWlndBvgaxNiD4wKlqU9DUL+FkhkEQ=; b=i2sQC1Lxwc+gQ0HuReJapuBlrSpdSlCfIyIU0WDD0FMvoJJ7PbcH0DAvXEM20mLZtF4i4NtINRQ5YuZ33Fj/x9ccon0827Uf2mI/GyxxhIVBB20TC6KPigJ+oE2o+dNeeyIaJq/7ZoCs5zrub2PV9hPux/eYvajWxqttA8JGhNfwMZVWzTFupW4UTZlB3CJ1aqv7W/r9hmh0ufWgw7Z/SSPJQI7Dl+PihaiVl8mEYioLfKy7gFHeUxd6r73J2zio9awj1XQXXxsq+zrIiaDcKAYvlDOoyKNloE5haZkbT59z1uAhOzJmE/lyu9lqWOPtqNxTYtol1PRlGJQEV6FO3g== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by TYZPR06MB4030.apcprd06.prod.outlook.com (2603:1096:400:24::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6745.27; Sat, 2 Sep 2023 16:08:12 +0000 Received: from TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::f1a4:bbff:7592:ee31]) by TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::f1a4:bbff:7592:ee31%5]) with mapi id 15.20.6745.030; Sat, 2 Sep 2023 16:08:12 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Sun, 3 Sep 2023 00:07:31 +0800 Message-ID: X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230902160741.19197-1-nuomi2021@gmail.com> References: <20230902160741.19197-1-nuomi2021@gmail.com> X-TMN: [fGUtuUMnUrfc8gBL7BP+v2n8zF216Eoc] X-ClientProxiedBy: TYCP286CA0242.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:456::9) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20230902160741.19197-4-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|TYZPR06MB4030:EE_ X-MS-Office365-Filtering-Correlation-Id: 3d8dc370-8e20-48bc-32c0-08dbabceceb9 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: CRiCAcY3RQYGxyaKXZSIRntOC5wSsQu8Z81osRwUUkU3+2oWj00+WGxAZrXbOYLNrK4wSPi087DLRBHzR5tv/zPkQDkqW/RhSk/U+rPlEmUDMKGeMtbjQPPVGEXQtZyNDix1LEJAOw0l2EZvm5y8ffvTxlJi4HBdx0NTpkZUVVQEzMY6n8lmlG9oVp1AXtVRP/4JgCWajBjStAoNcS9naJ2sjNETrs899CcaUel4qAmHdUxIPx4zEPL2bk1F2lf9jBChPifDJ8C8D7SFBAg+oTjfmXM9IGnz3Ux9kV+m9euJ4awnDK2LOqFLiTBxH8Ufq+IgpssucsfeHqgg9d0kp5aIv8RCbgBV/5aNr3jKTOBwQXkHNNbxJxsVFJghVKFjzrcW3bRv1lZYGZqAvbPvWUvcEYM0tfdlFBTDa+tKfI6WOJI7Q7W9DAF/tAhL3Kgm0HabaJNZnBgzRA5Uplq5DrfjdLVkmiib/JvvQCweYIMpnT8zRxxEJ27KjIcFtTpc1jMxXfXMSeO4bnkDk4AyPJzncGUo8BL3KElIPuuWFnrupRnrVekK+/kdKwVSrq7GQe1RmMX7klE9i1YBUtMtH6jwqmNqrLX5lOrufCwgmGz/7vwZXffhh0vupsTJEoah X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?V1lOWEhvTHlHOTlGcTVZQlBrbERKVUtFUEdBNHVlT2JIc2grZUM2emhESWY1?= =?utf-8?B?Vk1XRlQ3azlsbTJ0S3RqU2ZocHNZeGpJWXM4eXk2VzNLOXVJSmpKYjUzNnJG?= =?utf-8?B?VWMyTmVXbC9TRWM0UkExZE5Cc0t0bmZKMzJWYkJHNzcvTUxwNis5d2I0bzh6?= =?utf-8?B?YUExRXM0SDhUNG5HZERlNnp5elJOMzBKUE8vVFFETG5sK2JUUzB1MWwrU1Rz?= =?utf-8?B?c3JoTFJKblAyaldrcGdhUStmOEl1MU1RdXU4N2hhS3RqOExBMkNLbVhVc2Fp?= =?utf-8?B?MkZEZnovSGcvUFdjVXZ2dlRMd2xEV0Fnckg1OTV0ZFViMTRUeCt1cmpialJE?= =?utf-8?B?YUszSWUwUDV2OVIwQ1REOG4vRXl4WEN3ZnczQXRhbGtteGd0enlyalJOVi8r?= =?utf-8?B?Q0lrN3RZeFZmSEdlaG45cjhoTzlxQlc5VW9pRkgrRzBTekNnQyt5VjdXKy8z?= =?utf-8?B?Nk9ySGxEbmRZalRkc2laUEVhb3lzN1gvR0xydnplV3dIc2RJTTlSL2kxTUs3?= =?utf-8?B?QmJrZUxJSnBoRkdRV0ZPQ25RbTN5RkhURHZZNExLeGVmcnpjN3IvcFExV2hy?= =?utf-8?B?Sm1XM2puNDZodktPQzVhNFcvS25DQ2hKaGZFWUc0dUVmd3d3TEtBUjNDS281?= =?utf-8?B?QkloanZaWFhSanYwZ1lpM1VZQjU0czB1Tm1rZlRMY1NSMnFQUkJ3NU1rdUZt?= =?utf-8?B?eHFEbEZTd0lkaVg4QlRvdHJxeGxvZTdYUmdNcVN1RndJWFRlRllkUmRJaDAy?= =?utf-8?B?ZEkybWJReXRyMFNYM3lBRHpzU1BJa0FsbjNaMFAyMnJVeGtuZ0w4eFBUcVIr?= =?utf-8?B?V254b2ZOdk5RRCt0U1dBdnNLcW4wZi9iSENIUXBMbTF5eXhLL2dDU1JYVGdv?= =?utf-8?B?VjJGb01HdkMvSWd2RCtBbndUZDdNQ1U5NmIxTkljTk1LU2MremU0T3E0cmtU?= =?utf-8?B?amZZY3Z4Znl2VHNKS1Vwa204NFhVVlgyOVJnS08xazRDT0tvKzFNQ1BQVGNy?= =?utf-8?B?WkVIaXFhNFRHeUxnVE4rdVFWQkpvUTMxbDNKQUM3Yk9IditYRTBkL090a2t0?= =?utf-8?B?RUJZUVZWQVFiOTlXL05VR3gxcUoxWkdTQzI5MHBSREJZeTdFRVl2NnhuNnJ5?= =?utf-8?B?MGM1KytTdmNKcnU4dXZ3Z2tSZWNpdW0wVEU2OEJiTGk3NnlVWVpPWGtvM1lh?= =?utf-8?B?R3hHMEdLeTIxM3BuNnJtWTNvN2JJUGg3VGhiNnZnUWtCZ256YWpuMW01Y1hx?= =?utf-8?B?bGhFY1EzVXRidURIWG5NaDlVc1FaZWZkKzJGUzlPU3ZaTmxIbUFwQjJSaGNV?= =?utf-8?B?L3VOUjM0dnhpZ2FyZi9UWHpiZllGeHRtd1d6TS9PcGMzdE92SmNsa0tDeVZ0?= =?utf-8?B?a3g3K0dHQmRUV3hDa3VtYWQveXl6M0V3d1Rrc0haaG9rRzZxb3d6UmxyL3pC?= =?utf-8?B?VXpTR3NUcFpra2k3NE5jUTJGSXR0c05HUTluNFVNY1FjMHJQSWoxUUZxdmpr?= =?utf-8?B?SWJrTzZaQVg2cTFTaVMwTTlIY3VJUEkzWHJTU25nQVM4NExhNHJ2eE9iak0w?= =?utf-8?B?MnZ3dWt2ZVVXWnd5S3VHNlRhRWZWelVCSnpTSGsyeldkZGFIbmZJdnJaVS91?= =?utf-8?B?Vm9xYzVlblJXU1lFWHJ0OWd5b2JEMHJic3dUVFNPRDluVlYvY01RV1d5NkEw?= =?utf-8?Q?vEsBWaYS7lII+e7za0D5?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3d8dc370-8e20-48bc-32c0-08dbabceceb9 X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Sep 2023 16:08:12.5418 (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: TYZPR06MB4030 Subject: [FFmpeg-devel] [PATCH v3 04/14] vvcdec: add cabac decoder 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 Cc: Nuo Mi Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: YWRkIENvbnRleHQtYmFzZWQgQWRhcHRpdmUgQmluYXJ5IEFyaXRobWV0aWMgQ29kaW5nIChDQUJB QykgZGVjb2RlcgotLS0KIGxpYmF2Y29kZWMvdnZjL01ha2VmaWxlICAgIHwgICAgMiArCiBsaWJh dmNvZGVjL3Z2Yy92dmNfY2FiYWMuYyB8IDI0ODQgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiBsaWJhdmNvZGVjL3Z2Yy92dmNfY2FiYWMuaCB8ICAxMjYgKysKIGxpYmF2Y29k ZWMvdnZjL3Z2Y19jdHUuYyAgIHwgICAzMiArCiBsaWJhdmNvZGVjL3Z2Yy92dmNfY3R1LmggICB8 ICA0MDYgKysrKysrCiBsaWJhdmNvZGVjL3Z2Yy92dmNkZWMuaCAgICB8ICAgIDcgKy0KIDYgZmls ZXMgY2hhbmdlZCwgMzA1NSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IGxpYmF2Y29kZWMvdnZjL3Z2Y19jYWJhYy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg bGliYXZjb2RlYy92dmMvdnZjX2NhYmFjLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVj L3Z2Yy92dmNfY3R1LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL3Z2Yy92dmNfY3R1 LmgKCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3Z2Yy9NYWtlZmlsZSBiL2xpYmF2Y29kZWMvdnZj L01ha2VmaWxlCmluZGV4IDNlYTQzMGY2MWEuLjY0YzllYTk2ODggMTAwNjQ0Ci0tLSBhL2xpYmF2 Y29kZWMvdnZjL01ha2VmaWxlCisrKyBiL2xpYmF2Y29kZWMvdnZjL01ha2VmaWxlCkBAIC0yLDUg KzIsNyBAQCBjbGVhbjo6CiAJJChSTSkgJChDTEVBTlNVRkZJWEVTOiU9bGliYXZjb2RlYy92dmMv JSkKIAogT0JKUy0kKENPTkZJR19WVkNfREVDT0RFUikgICAgICAgICAgKz0gIHZ2Yy92dmNkZWMu byAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2 dmMvdnZjX2NhYmFjLm8gICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdnZjL3Z2Y19jdHUubyAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHZ2Yy92dmNfZGF0YS5vICAgICAgICAgIFwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2dmMvdnZjX3BzLm8KZGlmZiAtLWdpdCBhL2xp YmF2Y29kZWMvdnZjL3Z2Y19jYWJhYy5jIGIvbGliYXZjb2RlYy92dmMvdnZjX2NhYmFjLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNzI3NWY0NGM0ZAotLS0gL2Rldi9u dWxsCisrKyBiL2xpYmF2Y29kZWMvdnZjL3Z2Y19jYWJhYy5jCkBAIC0wLDAgKzEsMjQ4NCBAQAor LyoKKyAqIFZWQyBDQUJBQyBkZWNvZGVyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDIxIE51byBN aQorICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs aWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy ZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm dGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworI2luY2x1ZGUgImxpYmF2 Y29kZWMvY2FiYWNfZnVuY3Rpb25zLmgiCisKKyNpbmNsdWRlICJ2dmNfY2FiYWMuaCIKKyNpbmNs dWRlICJ2dmNfY3R1LmgiCisjaW5jbHVkZSAidnZjX2RhdGEuaCIKKworI2RlZmluZSBDQUJBQ19N QVhfQklOIDMxCisKKyNkZWZpbmUgQ05VIDM1CisKK2VudW0gU3ludGF4RWxlbWVudCB7CisgICAg QUxGX0NUQl9GTEFHICAgICAgICAgICAgICAgICAgICA9ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMCwKKyAgICBBTEZfVVNFX0FQU19GTEFHICAgICAgICAgICAgICAgID0gQUxGX0NU Ql9GTEFHICAgICAgICAgICAgICAgICAgKyA5LAorICAgIEFMRl9DVEJfQ0NfQ0JfSURDLAorICAg IEFMRl9DVEJfQ0NfQ1JfSURDICAgICAgICAgICAgICAgPSBBTEZfQ1RCX0NDX0NCX0lEQyAgICAg ICAgICAgICArIDMsCisgICAgQUxGX0NUQl9GSUxURVJfQUxUX0lEWCAgICAgICAgICA9IEFMRl9D VEJfQ0NfQ1JfSURDICAgICAgICAgICAgICsgMywKKyAgICBTQU9fTUVSR0VfRkxBRyAgICAgICAg ICAgICAgICAgID0gQUxGX0NUQl9GSUxURVJfQUxUX0lEWCAgICAgICAgKyAyLAorICAgIFNBT19U WVBFX0lEWCwKKyAgICBTUExJVF9DVV9GTEFHLAorICAgIFNQTElUX1FUX0ZMQUcgICAgICAgICAg ICAgICAgICAgPSBTUExJVF9DVV9GTEFHICAgICAgICAgICAgICAgICArIDksCisgICAgTVRUX1NQ TElUX0NVX1ZFUlRJQ0FMX0ZMQUcgICAgICA9IFNQTElUX1FUX0ZMQUcgICAgICAgICAgICAgICAg ICsgNiwKKyAgICBNVFRfU1BMSVRfQ1VfQklOQVJZX0ZMQUcgICAgICAgID0gTVRUX1NQTElUX0NV X1ZFUlRJQ0FMX0ZMQUcgICAgKyA1LAorICAgIE5PTl9JTlRFUl9GTEFHICAgICAgICAgICAgICAg ICAgPSBNVFRfU1BMSVRfQ1VfQklOQVJZX0ZMQUcgICAgICArIDQsCisgICAgQ1VfU0tJUF9GTEFH ICAgICAgICAgICAgICAgICAgICA9IE5PTl9JTlRFUl9GTEFHICAgICAgICAgICAgICAgICsgMiwK KyAgICBQUkVEX01PREVfSUJDX0ZMQUcgICAgICAgICAgICAgID0gQ1VfU0tJUF9GTEFHICAgICAg ICAgICAgICAgICAgKyAzLAorICAgIFBSRURfTU9ERV9GTEFHICAgICAgICAgICAgICAgICAgPSBQ UkVEX01PREVfSUJDX0ZMQUcgICAgICAgICAgICArIDMsCisgICAgUFJFRF9NT0RFX1BMVF9GTEFH ICAgICAgICAgICAgICA9IFBSRURfTU9ERV9GTEFHICAgICAgICAgICAgICAgICsgMiwKKyAgICBD VV9BQ1RfRU5BQkxFRF9GTEFHLAorICAgIElOVFJBX0JEUENNX0xVTUFfRkxBRywKKyAgICBJTlRS QV9CRFBDTV9MVU1BX0RJUl9GTEFHLAorICAgIElOVFJBX01JUF9GTEFHLAorICAgIElOVFJBX0xV TUFfUkVGX0lEWCAgICAgICAgICAgICAgPSBJTlRSQV9NSVBfRkxBRyAgICAgICAgICAgICAgICAr IDQsCisgICAgSU5UUkFfU1VCUEFSVElUSU9OU19NT0RFX0ZMQUcgICA9IElOVFJBX0xVTUFfUkVG X0lEWCAgICAgICAgICAgICsgMiwKKyAgICBJTlRSQV9TVUJQQVJUSVRJT05TX1NQTElUX0ZMQUcs CisgICAgSU5UUkFfTFVNQV9NUE1fRkxBRywKKyAgICBJTlRSQV9MVU1BX05PVF9QTEFOQVJfRkxB RywKKyAgICBJTlRSQV9CRFBDTV9DSFJPTUFfRkxBRyAgICAgICAgID0gSU5UUkFfTFVNQV9OT1Rf UExBTkFSX0ZMQUcgICAgKyAyLAorICAgIElOVFJBX0JEUENNX0NIUk9NQV9ESVJfRkxBRywKKyAg ICBDQ0xNX01PREVfRkxBRywKKyAgICBDQ0xNX01PREVfSURYLAorICAgIElOVFJBX0NIUk9NQV9Q UkVEX01PREUsCisgICAgR0VORVJBTF9NRVJHRV9GTEFHLAorICAgIElOVEVSX1BSRURfSURDLAor ICAgIElOVEVSX0FGRklORV9GTEFHICAgICAgICAgICAgICAgPSBJTlRFUl9QUkVEX0lEQyAgICAg ICAgICAgICAgICArIDYsCisgICAgQ1VfQUZGSU5FX1RZUEVfRkxBRyAgICAgICAgICAgICA9IElO VEVSX0FGRklORV9GTEFHICAgICAgICAgICAgICsgMywKKyAgICBTWU1fTVZEX0ZMQUcsCisgICAg UkVGX0lEWF9MWCwKKyAgICBNVlBfTFhfRkxBRyAgICAgICAgICAgICAgICAgICAgID0gUkVGX0lE WF9MWCAgICAgICAgICAgICAgICAgICAgKyAyLAorICAgIEFNVlJfRkxBRywKKyAgICBBTVZSX1BS RUNJU0lPTl9JRFggICAgICAgICAgICAgID0gQU1WUl9GTEFHICAgICAgICAgICAgICAgICAgICAg KyAyLAorICAgIEJDV19JRFggICAgICAgICAgICAgICAgICAgICAgICAgPSBBTVZSX1BSRUNJU0lP Tl9JRFggICAgICAgICAgICArIDMsCisgICAgQ1VfQ09ERURfRkxBRywKKyAgICBDVV9TQlRfRkxB RywKKyAgICBDVV9TQlRfUVVBRF9GTEFHICAgICAgICAgICAgICAgID0gQ1VfU0JUX0ZMQUcgICAg ICAgICAgICAgICAgICAgKyAyLAorICAgIENVX1NCVF9IT1JJWk9OVEFMX0ZMQUcsCisgICAgQ1Vf U0JUX1BPU19GTEFHICAgICAgICAgICAgICAgICA9IENVX1NCVF9IT1JJWk9OVEFMX0ZMQUcgICAg ICAgICsgMywKKyAgICBMRk5TVF9JRFgsCisgICAgTVRTX0lEWCAgICAgICAgICAgICAgICAgICAg ICAgICA9IExGTlNUX0lEWCAgICAgICAgICAgICAgICAgICAgICsgMywKKyAgICBDT1BZX0FCT1ZF X1BBTEVUVEVfSU5ESUNFU19GTEFHID0gTVRTX0lEWCAgICAgICAgICAgICAgICAgICAgICAgKyA0 LAorICAgIFBBTEVUVEVfVFJBTlNQT1NFX0ZMQUcsCisgICAgUlVOX0NPUFlfRkxBRywKKyAgICBS RUdVTEFSX01FUkdFX0ZMQUcgICAgICAgICAgICAgID0gUlVOX0NPUFlfRkxBRyAgICAgICAgICAg ICAgICAgKyA4LAorICAgIE1NVkRfTUVSR0VfRkxBRyAgICAgICAgICAgICAgICAgPSBSRUdVTEFS X01FUkdFX0ZMQUcgICAgICAgICAgICArIDIsCisgICAgTU1WRF9DQU5EX0ZMQUcsCisgICAgTU1W RF9ESVNUQU5DRV9JRFgsCisgICAgQ0lJUF9GTEFHLAorICAgIE1FUkdFX1NVQkJMT0NLX0ZMQUcs CisgICAgTUVSR0VfU1VCQkxPQ0tfSURYICAgICAgICAgICAgICA9IE1FUkdFX1NVQkJMT0NLX0ZM QUcgICAgICAgICAgICsgMywKKyAgICBNRVJHRV9JRFgsCisgICAgQUJTX01WRF9HUkVBVEVSMF9G TEFHLAorICAgIEFCU19NVkRfR1JFQVRFUjFfRkxBRywKKyAgICBUVV9ZX0NPREVEX0ZMQUcsCisg ICAgVFVfQ0JfQ09ERURfRkxBRyAgICAgICAgICAgICAgICA9IFRVX1lfQ09ERURfRkxBRyAgICAg ICAgICAgICAgICsgNCwKKyAgICBUVV9DUl9DT0RFRF9GTEFHICAgICAgICAgICAgICAgID0gVFVf Q0JfQ09ERURfRkxBRyAgICAgICAgICAgICAgKyAyLAorICAgIENVX1FQX0RFTFRBX0FCUyAgICAg ICAgICAgICAgICAgPSBUVV9DUl9DT0RFRF9GTEFHICAgICAgICAgICAgICArIDMsCisgICAgQ1Vf Q0hST01BX1FQX09GRlNFVF9GTEFHICAgICAgICA9IENVX1FQX0RFTFRBX0FCUyAgICAgICAgICAg ICAgICsgMiwKKyAgICBDVV9DSFJPTUFfUVBfT0ZGU0VUX0lEWCwKKyAgICBUUkFOU0ZPUk1fU0tJ UF9GTEFHLAorICAgIFRVX0pPSU5UX0NCQ1JfUkVTSURVQUxfRkxBRyAgICAgPSBUUkFOU0ZPUk1f U0tJUF9GTEFHICAgICAgICAgICArIDIsCisgICAgTEFTVF9TSUdfQ09FRkZfWF9QUkVGSVggICAg ICAgICA9IFRVX0pPSU5UX0NCQ1JfUkVTSURVQUxfRkxBRyAgICsgMywKKyAgICBMQVNUX1NJR19D T0VGRl9ZX1BSRUZJWCAgICAgICAgID0gTEFTVF9TSUdfQ09FRkZfWF9QUkVGSVggICAgICAgKzIz LAorICAgIFNCX0NPREVEX0ZMQUcgICAgICAgICAgICAgICAgICAgPSBMQVNUX1NJR19DT0VGRl9Z X1BSRUZJWCAgICAgICArMjMsCisgICAgU0lHX0NPRUZGX0ZMQUcgICAgICAgICAgICAgICAgICA9 IFNCX0NPREVEX0ZMQUcgICAgICAgICAgICAgICAgICsgNywKKyAgICBQQVJfTEVWRUxfRkxBRyAg ICAgICAgICAgICAgICAgID0gU0lHX0NPRUZGX0ZMQUcgICAgICAgICAgICAgICAgKzYzLAorICAg IEFCU19MRVZFTF9HVFhfRkxBRyAgICAgICAgICAgICAgPSBQQVJfTEVWRUxfRkxBRyAgICAgICAg ICAgICAgICArMzMsCisgICAgQ09FRkZfU0lHTl9GTEFHICAgICAgICAgICAgICAgICA9IEFCU19M RVZFTF9HVFhfRkxBRyAgICAgICAgICAgICs3MiwKKyAgICBTWU5UQVhfRUxFTUVOVF9MQVNUICAg ICAgICAgICAgID0gQ09FRkZfU0lHTl9GTEFHICAgICAgICAgICAgICAgKyA2LAorfTsKKworc3Rh dGljIGNvbnN0IHVpbnQ4X3QgaW5pdF92YWx1ZXNbNF1bU1lOVEFYX0VMRU1FTlRfTEFTVF0gPSB7 CisgICAgeworICAgICAgICAvL2FsZl9jdGJfZmxhZworICAgICAgICA2MiwgIDM5LCAgMzksICA1 NCwgIDM5LCAgMzksICAzMSwgIDM5LCAgMzksCisgICAgICAgIC8vYWxmX3VzZV9hcHNfZmxhZwor ICAgICAgICA0NiwKKyAgICAgICAgLy9hbGZfY3RiX2NjX2NiX2lkYworICAgICAgICAxOCwgIDMw LCAgMzEsCisgICAgICAgIC8vYWxmX2N0Yl9jY19jcl9pZGMKKyAgICAgICAgMTgsICAzMCwgIDMx LAorICAgICAgICAvL2FsZl9jdGJfZmlsdGVyX2FsdF9pZHgKKyAgICAgICAgMTEsICAxMSwKKyAg ICAgICAgLy9zYW9fbWVyZ2VfbGVmdF9mbGFnIGFuZCBzYW9fbWVyZ2VfdXBfZmxhZworICAgICAg ICA2MCwKKyAgICAgICAgLy9zYW9fdHlwZV9pZHhfbHVtYSBhbmQgc2FvX3R5cGVfaWR4X2Nocm9t YQorICAgICAgICAxMywKKyAgICAgICAgLy9zcGxpdF9jdV9mbGFnCisgICAgICAgIDE5LCAgMjgs ICAzOCwgIDI3LCAgMjksICAzOCwgIDIwLCAgMzAsICAzMSwKKyAgICAgICAgLy9zcGxpdF9xdF9m bGFnCisgICAgICAgIDI3LCAgIDYsICAxNSwgIDI1LCAgMTksICAzNywKKyAgICAgICAgLy9tdHRf c3BsaXRfY3VfdmVydGljYWxfZmxhZworICAgICAgICA0MywgIDQyLCAgMjksICAyNywgIDQ0LAor ICAgICAgICAvL210dF9zcGxpdF9jdV9iaW5hcnlfZmxhZworICAgICAgICAzNiwgIDQ1LCAgMzYs ICA0NSwKKyAgICAgICAgLy9ub25faW50ZXJfZmxhZworICAgICAgICBDTlUsIENOVSwKKyAgICAg ICAgLy9jdV9za2lwX2ZsYWcKKyAgICAgICAgMCwgIDI2LCAgMjgsCisgICAgICAgIC8vcHJlZF9t b2RlX2liY19mbGFnCisgICAgICAgIDE3LCAgNDIsICAzNiwKKyAgICAgICAgLy9wcmVkX21vZGVf ZmxhZworICAgICAgICBDTlUsIENOVSwKKyAgICAgICAgLy9wcmVkX21vZGVfcGx0X2ZsYWcKKyAg ICAgICAgMjUsCisgICAgICAgIC8vY3VfYWN0X2VuYWJsZWRfZmxhZworICAgICAgICA1MiwKKyAg ICAgICAgLy9pbnRyYV9iZHBjbV9sdW1hX2ZsYWcKKyAgICAgICAgMTksCisgICAgICAgIC8vaW50 cmFfYmRwY21fbHVtYV9kaXJfZmxhZworICAgICAgICAzNSwKKyAgICAgICAgLy9pbnRyYV9taXBf ZmxhZworICAgICAgICAzMywgIDQ5LCAgNTAsICAyNSwKKyAgICAgICAgLy9pbnRyYV9sdW1hX3Jl Zl9pZHgKKyAgICAgICAgMjUsICA2MCwKKyAgICAgICAgLy9pbnRyYV9zdWJwYXJ0aXRpb25zX21v ZGVfZmxhZworICAgICAgICAzMywKKyAgICAgICAgLy9pbnRyYV9zdWJwYXJ0aXRpb25zX3NwbGl0 X2ZsYWcKKyAgICAgICAgNDMsCisgICAgICAgIC8vaW50cmFfbHVtYV9tcG1fZmxhZworICAgICAg ICA0NSwKKyAgICAgICAgLy9pbnRyYV9sdW1hX25vdF9wbGFuYXJfZmxhZworICAgICAgICAxMywg IDI4LAorICAgICAgICAvL2ludHJhX2JkcGNtX2Nocm9tYV9mbGFnCisgICAgICAgICAxLAorICAg ICAgICAvL2ludHJhX2JkcGNtX2Nocm9tYV9kaXJfZmxhZworICAgICAgICAyNywKKyAgICAgICAg Ly9jY2xtX21vZGVfZmxhZworICAgICAgICA1OSwKKyAgICAgICAgLy9jY2xtX21vZGVfaWR4Cisg ICAgICAgIDI3LAorICAgICAgICAvL2ludHJhX2Nocm9tYV9wcmVkX21vZGUKKyAgICAgICAgMzQs CisgICAgICAgIC8vZ2VuZXJhbF9tZXJnZV9mbGFnCisgICAgICAgIDI2LAorICAgICAgICAvL2lu dGVyX3ByZWRfaWRjCisgICAgICAgIENOVSwgQ05VLCBDTlUsIENOVSwgQ05VLCBDTlUsCisgICAg ICAgIC8vaW50ZXJfYWZmaW5lX2ZsYWcKKyAgICAgICAgQ05VLCBDTlUsIENOVSwKKyAgICAgICAg Ly9jdV9hZmZpbmVfdHlwZV9mbGFnCisgICAgICAgIENOVSwKKyAgICAgICAgLy9zeW1fbXZkX2Zs YWcKKyAgICAgICAgQ05VLAorICAgICAgICAvL3JlZl9pZHhfbDAgYW5kIHJlZl9pZHhfbDEKKyAg ICAgICAgQ05VLCBDTlUsCisgICAgICAgIC8vbXZwX2wwX2ZsYWcgYW5kIG12cF9sMV9mbGFnCisg ICAgICAgIDQyLAorICAgICAgICAvL2FtdnJfZmxhZworICAgICAgICBDTlUsIENOVSwKKyAgICAg ICAgLy9hbXZyX3ByZWNpc2lvbl9pZHgKKyAgICAgICAgMzUsICAzNCwgIDM1LAorICAgICAgICAv L2Jjd19pZHgKKyAgICAgICAgQ05VLAorICAgICAgICAvL2N1X2NvZGVkX2ZsYWcKKyAgICAgICAg IDYsCisgICAgICAgIC8vY3Vfc2J0X2ZsYWcKKyAgICAgICAgQ05VLCBDTlUsCisgICAgICAgIC8v Y3Vfc2J0X3F1YWRfZmxhZworICAgICAgICBDTlUsCisgICAgICAgIC8vY3Vfc2J0X2hvcml6b250 YWxfZmxhZworICAgICAgICBDTlUsIENOVSwgQ05VLAorICAgICAgICAvL2N1X3NidF9wb3NfZmxh ZworICAgICAgICBDTlUsCisgICAgICAgIC8vbGZuc3RfaWR4CisgICAgICAgIDI4LCAgNTIsICA0 MiwKKyAgICAgICAgLy9tdHNfaWR4CisgICAgICAgIDI5LCAgIDAsICAyOCwgICAwLAorICAgICAg ICAvL2NvcHlfYWJvdmVfcGFsZXR0ZV9pbmRpY2VzX2ZsYWcKKyAgICAgICAgNDIsCisgICAgICAg IC8vcGFsZXR0ZV90cmFuc3Bvc2VfZmxhZworICAgICAgICA0MiwKKyAgICAgICAgLy9ydW5fY29w eV9mbGFnCisgICAgICAgIDUwLCAgMzcsICA0NSwgIDMwLCAgNDYsICA0NSwgIDM4LCAgNDYsCisg ICAgICAgIC8vcmVndWxhcl9tZXJnZV9mbGFnCisgICAgICAgIENOVSwgQ05VLAorICAgICAgICAv L21tdmRfbWVyZ2VfZmxhZworICAgICAgICBDTlUsCisgICAgICAgIC8vbW12ZF9jYW5kX2ZsYWcK KyAgICAgICAgQ05VLAorICAgICAgICAvL21tdmRfZGlzdGFuY2VfaWR4CisgICAgICAgIENOVSwK KyAgICAgICAgLy9jaWlwX2ZsYWcKKyAgICAgICAgQ05VLAorICAgICAgICAvL21lcmdlX3N1YmJs b2NrX2ZsYWcKKyAgICAgICAgQ05VLCBDTlUsIENOVSwKKyAgICAgICAgLy9tZXJnZV9zdWJibG9j a19pZHgKKyAgICAgICAgQ05VLAorICAgICAgICAvL21lcmdlX2lkeCwgbWVyZ2VfZ3BtX2lkeDAs IGFuZCBtZXJnZV9ncG1faWR4MQorICAgICAgICAzNCwKKyAgICAgICAgLy9hYnNfbXZkX2dyZWF0 ZXIwX2ZsYWcKKyAgICAgICAgMTQsCisgICAgICAgIC8vYWJzX212ZF9ncmVhdGVyMV9mbGFnCisg ICAgICAgIDQ1LAorICAgICAgICAvL3R1X3lfY29kZWRfZmxhZworICAgICAgICAxNSwgIDEyLCAg IDUsICAgNywKKyAgICAgICAgLy90dV9jYl9jb2RlZF9mbGFnCisgICAgICAgIDEyLCAgMjEsCisg ICAgICAgIC8vdHVfY3JfY29kZWRfZmxhZworICAgICAgICAzMywgIDI4LCAgMzYsCisgICAgICAg IC8vY3VfcXBfZGVsdGFfYWJzCisgICAgICAgIENOVSwgQ05VLAorICAgICAgICAvL2N1X2Nocm9t YV9xcF9vZmZzZXRfZmxhZworICAgICAgICBDTlUsCisgICAgICAgIC8vY3VfY2hyb21hX3FwX29m ZnNldF9pZHgKKyAgICAgICAgQ05VLAorICAgICAgICAvL3RyYW5zZm9ybV9za2lwX2ZsYWcKKyAg ICAgICAgMjUsICAgOSwKKyAgICAgICAgLy90dV9qb2ludF9jYmNyX3Jlc2lkdWFsX2ZsYWcKKyAg ICAgICAgMTIsICAyMSwgIDM1LAorICAgICAgICAvL2xhc3Rfc2lnX2NvZWZmX3hfcHJlZml4Cisg ICAgICAgIDEzLCAgIDUsICAgNCwgIDIxLCAgMTQsICAgNCwgICA2LCAgMTQsICAyMSwgIDExLCAg MTQsICAgNywgIDE0LCAgIDUsICAxMSwgIDIxLAorICAgICAgICAzMCwgIDIyLCAgMTMsICA0Miwg IDEyLCAgIDQsICAgMywKKyAgICAgICAgLy9sYXN0X3NpZ19jb2VmZl95X3ByZWZpeAorICAgICAg ICAxMywgICA1LCAgIDQsICAgNiwgIDEzLCAgMTEsICAxNCwgICA2LCAgIDUsICAgMywgIDE0LCAg MjIsICAgNiwgICA0LCAgIDMsICAgNiwKKyAgICAgICAgMjIsICAyOSwgIDIwLCAgMzQsICAxMiwg ICA0LCAgIDMsCisgICAgICAgIC8vc2JfY29kZWRfZmxhZworICAgICAgICAxOCwgIDMxLCAgMjUs ICAxNSwgIDE4LCAgMjAsICAzOCwKKyAgICAgICAgLy9zaWdfY29lZmZfZmxhZworICAgICAgICAy NSwgIDE5LCAgMjgsICAxNCwgIDI1LCAgMjAsICAyOSwgIDMwLCAgMTksICAzNywgIDMwLCAgMzgs ICAxMSwgIDM4LCAgNDYsICA1NCwKKyAgICAgICAgMjcsICAzOSwgIDM5LCAgMzksICA0NCwgIDM5 LCAgMzksICAzOSwgIDE4LCAgMzksICAzOSwgIDM5LCAgMjcsICAzOSwgIDM5LCAgMzksCisgICAg ICAgICAwLCAgMzksICAzOSwgIDM5LCAgMjUsICAyNywgIDI4LCAgMzcsICAzNCwgIDUzLCAgNTMs ICA0NiwgIDE5LCAgNDYsICAzOCwgIDM5LAorICAgICAgICA1MiwgIDM5LCAgMzksICAzOSwgIDEx LCAgMzksICAzOSwgIDM5LCAgMTksICAzOSwgIDM5LCAgMzksICAyNSwgIDI4LCAgMzgsCisgICAg ICAgIC8vcGFyX2xldmVsX2ZsYWcKKyAgICAgICAgMzMsICAyNSwgIDE4LCAgMjYsICAzNCwgIDI3 LCAgMjUsICAyNiwgIDE5LCAgNDIsICAzNSwgIDMzLCAgMTksICAyNywgIDM1LCAgMzUsCisgICAg ICAgIDM0LCAgNDIsICAyMCwgIDQzLCAgMjAsICAzMywgIDI1LCAgMjYsICA0MiwgIDE5LCAgMjcs ICAyNiwgIDUwLCAgMzUsICAyMCwgIDQzLAorICAgICAgICAxMSwKKyAgICAgICAgLy9hYnNfbGV2 ZWxfZ3R4X2ZsYWcKKyAgICAgICAgMjUsICAyNSwgIDExLCAgMjcsICAyMCwgIDIxLCAgMzMsICAx MiwgIDI4LCAgMjEsICAyMiwgIDM0LCAgMjgsICAyOSwgIDI5LCAgMzAsCisgICAgICAgIDM2LCAg MjksICA0NSwgIDMwLCAgMjMsICA0MCwgIDMzLCAgMjcsICAyOCwgIDIxLCAgMzcsICAzNiwgIDM3 LCAgNDUsICAzOCwgIDQ2LAorICAgICAgICAyNSwgICAxLCAgNDAsICAyNSwgIDMzLCAgMTEsICAx NywgIDI1LCAgMjUsICAxOCwgICA0LCAgMTcsICAzMywgIDI2LCAgMTksICAxMywKKyAgICAgICAg MzMsICAxOSwgIDIwLCAgMjgsICAyMiwgIDQwLCAgIDksICAyNSwgIDE4LCAgMjYsICAzNSwgIDI1 LCAgMjYsICAzNSwgIDI4LCAgMzcsCisgICAgICAgIDExLCAgIDUsICAgNSwgIDE0LCAgMTAsICAg MywgICAzLCAgIDMsCisgICAgICAgIC8vY29lZmZfc2lnbl9mbGFnCisgICAgICAgIDEyLCAgMTcs ICA0NiwgIDI4LCAgMjUsICA0NiwKKyAgICB9LAorICAgIHsKKyAgICAgICAgLy9hbGZfY3RiX2Zs YWcKKyAgICAgICAgMTMsICAyMywgIDQ2LCAgIDQsICA2MSwgIDU0LCAgMTksICA0NiwgIDU0LAor ICAgICAgICAvL2FsZl91c2VfYXBzX2ZsYWcKKyAgICAgICAgNDYsCisgICAgICAgIC8vYWxmX2N0 Yl9jY19jYl9pZGMKKyAgICAgICAgMTgsICAyMSwgIDM4LAorICAgICAgICAvL2FsZl9jdGJfY2Nf Y3JfaWRjCisgICAgICAgIDE4LCAgMjEsICAzOCwKKyAgICAgICAgLy9hbGZfY3RiX2ZpbHRlcl9h bHRfaWR4CisgICAgICAgIDIwLCAgMTIsCisgICAgICAgIC8vc2FvX21lcmdlX2xlZnRfZmxhZyBh bmQgc2FvX21lcmdlX3VwX2ZsYWcKKyAgICAgICAgNjAsCisgICAgICAgIC8vc2FvX3R5cGVfaWR4 X2x1bWEgYW5kIHNhb190eXBlX2lkeF9jaHJvbWEKKyAgICAgICAgNSwKKyAgICAgICAgLy9zcGxp dF9jdV9mbGFnCisgICAgICAgIDExLCAgMzUsICA1MywgIDEyLCAgIDYsICAzMCwgIDEzLCAgMTUs ICAzMSwKKyAgICAgICAgLy9zcGxpdF9xdF9mbGFnCisgICAgICAgIDIwLCAgMTQsICAyMywgIDE4 LCAgMTksICAgNiwKKyAgICAgICAgLy9tdHRfc3BsaXRfY3VfdmVydGljYWxfZmxhZworICAgICAg ICA0MywgIDM1LCAgMzcsICAzNCwgIDUyLAorICAgICAgICAvL210dF9zcGxpdF9jdV9iaW5hcnlf ZmxhZworICAgICAgICA0MywgIDM3LCAgMjEsICAyMiwKKyAgICAgICAgLy9ub25faW50ZXJfZmxh ZworICAgICAgICAyNSwgIDEyLAorICAgICAgICAvL2N1X3NraXBfZmxhZworICAgICAgICA1Nywg IDU5LCAgNDUsCisgICAgICAgIC8vcHJlZF9tb2RlX2liY19mbGFnCisgICAgICAgICAwLCAgNTcs ICA0NCwKKyAgICAgICAgLy9wcmVkX21vZGVfZmxhZworICAgICAgICA0MCwgIDM1LAorICAgICAg ICAvL3ByZWRfbW9kZV9wbHRfZmxhZworICAgICAgICAwLAorICAgICAgICAvL2N1X2FjdF9lbmFi bGVkX2ZsYWcKKyAgICAgICAgNDYsCisgICAgICAgIC8vaW50cmFfYmRwY21fbHVtYV9mbGFnCisg ICAgICAgIDQwLAorICAgICAgICAvL2ludHJhX2JkcGNtX2x1bWFfZGlyX2ZsYWcKKyAgICAgICAg MzYsCisgICAgICAgIC8vaW50cmFfbWlwX2ZsYWcKKyAgICAgICAgNDEsICA1NywgIDU4LCAgMjYs CisgICAgICAgIC8vaW50cmFfbHVtYV9yZWZfaWR4CisgICAgICAgIDI1LCAgNTgsCisgICAgICAg IC8vaW50cmFfc3VicGFydGl0aW9uc19tb2RlX2ZsYWcKKyAgICAgICAgMzMsCisgICAgICAgIC8v aW50cmFfc3VicGFydGl0aW9uc19zcGxpdF9mbGFnCisgICAgICAgIDM2LAorICAgICAgICAvL2lu dHJhX2x1bWFfbXBtX2ZsYWcKKyAgICAgICAgMzYsCisgICAgICAgIC8vaW50cmFfbHVtYV9ub3Rf cGxhbmFyX2ZsYWcKKyAgICAgICAgMTIsICAyMCwKKyAgICAgICAgLy9pbnRyYV9iZHBjbV9jaHJv bWFfZmxhZworICAgICAgICAgMCwKKyAgICAgICAgLy9pbnRyYV9iZHBjbV9jaHJvbWFfZGlyX2Zs YWcKKyAgICAgICAgMTMsCisgICAgICAgIC8vY2NsbV9tb2RlX2ZsYWcKKyAgICAgICAgMzQsCisg ICAgICAgIC8vY2NsbV9tb2RlX2lkeAorICAgICAgICAyNywKKyAgICAgICAgLy9pbnRyYV9jaHJv bWFfcHJlZF9tb2RlCisgICAgICAgIDI1LAorICAgICAgICAvL2dlbmVyYWxfbWVyZ2VfZmxhZwor ICAgICAgICAyMSwKKyAgICAgICAgLy9pbnRlcl9wcmVkX2lkYworICAgICAgICAgNywgICA2LCAg IDUsICAxMiwgICA0LCAgNDAsCisgICAgICAgIC8vaW50ZXJfYWZmaW5lX2ZsYWcKKyAgICAgICAg MTIsICAxMywgIDE0LAorICAgICAgICAvL2N1X2FmZmluZV90eXBlX2ZsYWcKKyAgICAgICAgMzUs CisgICAgICAgIC8vc3ltX212ZF9mbGFnCisgICAgICAgIDI4LAorICAgICAgICAvL3JlZl9pZHhf bDAgYW5kIHJlZl9pZHhfbDEKKyAgICAgICAgMjAsICAzNSwKKyAgICAgICAgLy9tdnBfbDBfZmxh ZyBhbmQgbXZwX2wxX2ZsYWcKKyAgICAgICAgMzQsCisgICAgICAgIC8vYW12cl9mbGFnCisgICAg ICAgIDU5LCAgNTgsCisgICAgICAgIC8vYW12cl9wcmVjaXNpb25faWR4CisgICAgICAgIDYwLCAg NDgsICA2MCwKKyAgICAgICAgLy9iY3dfaWR4CisgICAgICAgICA0LAorICAgICAgICAvL2N1X2Nv ZGVkX2ZsYWcKKyAgICAgICAgIDUsCisgICAgICAgIC8vY3Vfc2J0X2ZsYWcKKyAgICAgICAgNTYs ICA1NywKKyAgICAgICAgLy9jdV9zYnRfcXVhZF9mbGFnCisgICAgICAgIDQyLAorICAgICAgICAv L2N1X3NidF9ob3Jpem9udGFsX2ZsYWcKKyAgICAgICAgMjAsICA0MywgIDEyLAorICAgICAgICAv L2N1X3NidF9wb3NfZmxhZworICAgICAgICAyOCwKKyAgICAgICAgLy9sZm5zdF9pZHgKKyAgICAg ICAgMzcsICA0NSwgIDI3LAorICAgICAgICAvL210c19pZHgKKyAgICAgICAgNDUsICA0MCwgIDI3 LCAgIDAsCisgICAgICAgIC8vY29weV9hYm92ZV9wYWxldHRlX2luZGljZXNfZmxhZworICAgICAg ICA1OSwKKyAgICAgICAgLy9wYWxldHRlX3RyYW5zcG9zZV9mbGFnCisgICAgICAgIDQyLAorICAg ICAgICAvL3J1bl9jb3B5X2ZsYWcKKyAgICAgICAgNTEsICAzMCwgIDMwLCAgMzgsICAyMywgIDM4 LCAgNTMsICA0NiwKKyAgICAgICAgLy9yZWd1bGFyX21lcmdlX2ZsYWcKKyAgICAgICAgMzgsICAg NywKKyAgICAgICAgLy9tbXZkX21lcmdlX2ZsYWcKKyAgICAgICAgMjYsCisgICAgICAgIC8vbW12 ZF9jYW5kX2ZsYWcKKyAgICAgICAgNDMsCisgICAgICAgIC8vbW12ZF9kaXN0YW5jZV9pZHgKKyAg ICAgICAgNjAsCisgICAgICAgIC8vY2lpcF9mbGFnCisgICAgICAgIDU3LAorICAgICAgICAvL21l cmdlX3N1YmJsb2NrX2ZsYWcKKyAgICAgICAgNDgsICA1NywgIDQ0LAorICAgICAgICAvL21lcmdl X3N1YmJsb2NrX2lkeAorICAgICAgICAgNSwKKyAgICAgICAgLy9tZXJnZV9pZHgsIG1lcmdlX2dw bV9pZHgwLCBhbmQgbWVyZ2VfZ3BtX2lkeDEKKyAgICAgICAgMjAsCisgICAgICAgIC8vYWJzX212 ZF9ncmVhdGVyMF9mbGFnCisgICAgICAgIDQ0LAorICAgICAgICAvL2Fic19tdmRfZ3JlYXRlcjFf ZmxhZworICAgICAgICA0MywKKyAgICAgICAgLy90dV95X2NvZGVkX2ZsYWcKKyAgICAgICAgMjMs ICAgNSwgIDIwLCAgIDcsCisgICAgICAgIC8vdHVfY2JfY29kZWRfZmxhZworICAgICAgICAyNSwg IDI4LAorICAgICAgICAvL3R1X2NyX2NvZGVkX2ZsYWcKKyAgICAgICAgMjUsICAyOSwgIDQ1LAor ICAgICAgICAvL2N1X3FwX2RlbHRhX2FicworICAgICAgICBDTlUsIENOVSwKKyAgICAgICAgLy9j dV9jaHJvbWFfcXBfb2Zmc2V0X2ZsYWcKKyAgICAgICAgQ05VLAorICAgICAgICAvL2N1X2Nocm9t YV9xcF9vZmZzZXRfaWR4CisgICAgICAgIENOVSwKKyAgICAgICAgLy90cmFuc2Zvcm1fc2tpcF9m bGFnCisgICAgICAgIDI1LCAgIDksCisgICAgICAgIC8vdHVfam9pbnRfY2Jjcl9yZXNpZHVhbF9m bGFnCisgICAgICAgIDI3LCAgMzYsICA0NSwKKyAgICAgICAgLy9sYXN0X3NpZ19jb2VmZl94X3By ZWZpeAorICAgICAgICAgNiwgIDEzLCAgMTIsICAgNiwgICA2LCAgMTIsICAxNCwgIDE0LCAgMTMs ICAxMiwgIDI5LCAgIDcsICAgNiwgIDEzLCAgMzYsICAyOCwKKyAgICAgICAgMTQsICAxMywgICA1 LCAgMjYsICAxMiwgICA0LCAgMTgsCisgICAgICAgIC8vbGFzdF9zaWdfY29lZmZfeV9wcmVmaXgK KyAgICAgICAgIDUsICAgNSwgIDEyLCAgIDYsICAgNiwgICA0LCAgIDYsICAxNCwgICA1LCAgMTIs ICAxNCwgICA3LCAgMTMsICAgNSwgIDEzLCAgMjEsCisgICAgICAgIDE0LCAgMjAsICAxMiwgIDM0 LCAgMTEsICAgNCwgIDE4LAorICAgICAgICAvL3NiX2NvZGVkX2ZsYWcKKyAgICAgICAgMjUsICAz MCwgIDI1LCAgNDUsICAxOCwgIDEyLCAgMjksCisgICAgICAgIC8vc2lnX2NvZWZmX2ZsYWcKKyAg ICAgICAgMTcsICA0MSwgIDQyLCAgMjksICAyNSwgIDQ5LCAgNDMsICAzNywgIDMzLCAgNTgsICA1 MSwgIDMwLCAgMTksICAzOCwgIDM4LCAgNDYsCisgICAgICAgIDM0LCAgNTQsICA1NCwgIDM5LCAg IDYsICAzOSwgIDM5LCAgMzksICAxOSwgIDM5LCAgNTQsICAzOSwgIDE5LCAgMzksICAzOSwgIDM5 LAorICAgICAgICA1NiwgIDM5LCAgMzksICAzOSwgIDE3LCAgMzQsICAzNSwgIDIxLCAgNDEsICA1 OSwgIDYwLCAgMzgsICAzNSwgIDQ1LCAgNTMsICA1NCwKKyAgICAgICAgNDQsICAzOSwgIDM5LCAg MzksICAzNCwgIDM4LCAgNjIsICAzOSwgIDI2LCAgMzksICAzOSwgIDM5LCAgNDAsICAzNSwgIDQ0 LAorICAgICAgICAvL3Bhcl9sZXZlbF9mbGFnCisgICAgICAgIDE4LCAgMTcsICAzMywgIDE4LCAg MjYsICA0MiwgIDI1LCAgMzMsICAyNiwgIDQyLCAgMjcsICAyNSwgIDM0LCAgNDIsICA0MiwgIDM1 LAorICAgICAgICAyNiwgIDI3LCAgNDIsICAyMCwgIDIwLCAgMjUsICAyNSwgIDI2LCAgMTEsICAx OSwgIDI3LCAgMzMsICA0MiwgIDM1LCAgMzUsICA0MywKKyAgICAgICAgIDMsCisgICAgICAgIC8v YWJzX2xldmVsX2d0eF9mbGFnCisgICAgICAgICAwLCAgMTcsICAyNiwgIDE5LCAgMzUsICAyMSwg IDI1LCAgMzQsICAyMCwgIDI4LCAgMjksICAzMywgIDI3LCAgMjgsICAyOSwgIDIyLAorICAgICAg ICAzNCwgIDI4LCAgNDQsICAzNywgIDM4LCAgIDAsICAyNSwgIDE5LCAgMjAsICAxMywgIDE0LCAg NTcsICA0NCwgIDMwLCAgMzAsICAyMywKKyAgICAgICAgMTcsICAgMCwgICAxLCAgMTcsICAyNSwg IDE4LCAgIDAsICAgOSwgIDI1LCAgMzMsICAzNCwgICA5LCAgMjUsICAxOCwgIDI2LCAgMjAsCisg ICAgICAgIDI1LCAgMTgsICAxOSwgIDI3LCAgMjksICAxNywgICA5LCAgMjUsICAxMCwgIDE4LCAg IDQsICAxNywgIDMzLCAgMTksICAyMCwgIDI5LAorICAgICAgICAxOCwgIDExLCAgIDQsICAyOCwg ICAyLCAgMTAsICAgMywgICAzLAorICAgICAgICAvL2NvZWZmX3NpZ25fZmxhZworICAgICAgICAg NSwgIDEwLCAgNTMsICA0MywgIDI1LCAgNDYsCisgICAgfSwKKyAgICB7CisgICAgICAgIC8vYWxm X2N0Yl9mbGFnCisgICAgICAgIDMzLCAgNTIsICA0NiwgIDI1LCAgNjEsICA1NCwgIDI1LCAgNjEs ICA1NCwKKyAgICAgICAgLy9hbGZfdXNlX2Fwc19mbGFnCisgICAgICAgIDQ2LAorICAgICAgICAv L2FsZl9jdGJfY2NfY2JfaWRjCisgICAgICAgIDI1LCAgMzUsICAzOCwKKyAgICAgICAgLy9hbGZf Y3RiX2NjX2NyX2lkYworICAgICAgICAyNSwgIDI4LCAgMzgsCisgICAgICAgIC8vYWxmX2N0Yl9m aWx0ZXJfYWx0X2lkeAorICAgICAgICAxMSwgIDI2LAorICAgICAgICAvL3Nhb19tZXJnZV9sZWZ0 X2ZsYWcgYW5kIHNhb19tZXJnZV91cF9mbGFnCisgICAgICAgIDIsCisgICAgICAgIC8vc2FvX3R5 cGVfaWR4X2x1bWEgYW5kIHNhb190eXBlX2lkeF9jaHJvbWEKKyAgICAgICAgMiwKKyAgICAgICAg Ly9zcGxpdF9jdV9mbGFnCisgICAgICAgIDE4LCAgMjcsICAxNSwgIDE4LCAgMjgsICA0NSwgIDI2 LCAgIDcsICAyMywKKyAgICAgICAgLy9zcGxpdF9xdF9mbGFnCisgICAgICAgIDI2LCAgMzYsICAz OCwgIDE4LCAgMzQsICAyMSwKKyAgICAgICAgLy9tdHRfc3BsaXRfY3VfdmVydGljYWxfZmxhZwor ICAgICAgICA0MywgIDQyLCAgMzcsICA0MiwgIDQ0LAorICAgICAgICAvL210dF9zcGxpdF9jdV9i aW5hcnlfZmxhZworICAgICAgICAyOCwgIDI5LCAgMjgsICAyOSwKKyAgICAgICAgLy9ub25faW50 ZXJfZmxhZworICAgICAgICAyNSwgIDIwLAorICAgICAgICAvL2N1X3NraXBfZmxhZworICAgICAg ICA1NywgIDYwLCAgNDYsCisgICAgICAgIC8vcHJlZF9tb2RlX2liY19mbGFnCisgICAgICAgICAw LCAgNDMsICA0NSwKKyAgICAgICAgLy9wcmVkX21vZGVfZmxhZworICAgICAgICA0MCwgIDM1LAor ICAgICAgICAvL3ByZWRfbW9kZV9wbHRfZmxhZworICAgICAgICAxNywKKyAgICAgICAgLy9jdV9h Y3RfZW5hYmxlZF9mbGFnCisgICAgICAgIDQ2LAorICAgICAgICAvL2ludHJhX2JkcGNtX2x1bWFf ZmxhZworICAgICAgICAxOSwKKyAgICAgICAgLy9pbnRyYV9iZHBjbV9sdW1hX2Rpcl9mbGFnCisg ICAgICAgIDIxLAorICAgICAgICAvL2ludHJhX21pcF9mbGFnCisgICAgICAgIDU2LCAgNTcsICA1 MCwgIDI2LAorICAgICAgICAvL2ludHJhX2x1bWFfcmVmX2lkeAorICAgICAgICAyNSwgIDU5LAor ICAgICAgICAvL2ludHJhX3N1YnBhcnRpdGlvbnNfbW9kZV9mbGFnCisgICAgICAgIDMzLAorICAg ICAgICAvL2ludHJhX3N1YnBhcnRpdGlvbnNfc3BsaXRfZmxhZworICAgICAgICA0MywKKyAgICAg ICAgLy9pbnRyYV9sdW1hX21wbV9mbGFnCisgICAgICAgIDQ0LAorICAgICAgICAvL2ludHJhX2x1 bWFfbm90X3BsYW5hcl9mbGFnCisgICAgICAgIDEzLCAgIDYsCisgICAgICAgIC8vaW50cmFfYmRw Y21fY2hyb21hX2ZsYWcKKyAgICAgICAgIDAsCisgICAgICAgIC8vaW50cmFfYmRwY21fY2hyb21h X2Rpcl9mbGFnCisgICAgICAgIDI4LAorICAgICAgICAvL2NjbG1fbW9kZV9mbGFnCisgICAgICAg IDI2LAorICAgICAgICAvL2NjbG1fbW9kZV9pZHgKKyAgICAgICAgMjcsCisgICAgICAgIC8vaW50 cmFfY2hyb21hX3ByZWRfbW9kZQorICAgICAgICAyNSwKKyAgICAgICAgLy9nZW5lcmFsX21lcmdl X2ZsYWcKKyAgICAgICAgIDYsCisgICAgICAgIC8vaW50ZXJfcHJlZF9pZGMKKyAgICAgICAgMTQs ICAxMywgICA1LCAgIDQsICAgMywgIDQwLAorICAgICAgICAvL2ludGVyX2FmZmluZV9mbGFnCisg ICAgICAgIDE5LCAgMTMsICAgNiwKKyAgICAgICAgLy9jdV9hZmZpbmVfdHlwZV9mbGFnCisgICAg ICAgIDM1LAorICAgICAgICAvL3N5bV9tdmRfZmxhZworICAgICAgICAyOCwKKyAgICAgICAgLy9y ZWZfaWR4X2wwIGFuZCByZWZfaWR4X2wxCisgICAgICAgICA1LCAgMzUsCisgICAgICAgIC8vbXZw X2wwX2ZsYWcgYW5kIG12cF9sMV9mbGFnCisgICAgICAgIDM0LAorICAgICAgICAvL2FtdnJfZmxh ZworICAgICAgICA1OSwgIDUwLAorICAgICAgICAvL2FtdnJfcHJlY2lzaW9uX2lkeAorICAgICAg ICAzOCwgIDI2LCAgNjAsCisgICAgICAgIC8vYmN3X2lkeAorICAgICAgICAgNSwKKyAgICAgICAg Ly9jdV9jb2RlZF9mbGFnCisgICAgICAgIDEyLAorICAgICAgICAvL2N1X3NidF9mbGFnCisgICAg ICAgIDQxLCAgNTcsCisgICAgICAgIC8vY3Vfc2J0X3F1YWRfZmxhZworICAgICAgICA0MiwKKyAg ICAgICAgLy9jdV9zYnRfaG9yaXpvbnRhbF9mbGFnCisgICAgICAgIDM1LCAgNTEsICAyNywKKyAg ICAgICAgLy9jdV9zYnRfcG9zX2ZsYWcKKyAgICAgICAgMjgsCisgICAgICAgIC8vbGZuc3RfaWR4 CisgICAgICAgIDUyLCAgMzcsICAyNywKKyAgICAgICAgLy9tdHNfaWR4CisgICAgICAgIDQ1LCAg MjUsICAyNywgICAwLAorICAgICAgICAvL2NvcHlfYWJvdmVfcGFsZXR0ZV9pbmRpY2VzX2ZsYWcK KyAgICAgICAgNTAsCisgICAgICAgIC8vcGFsZXR0ZV90cmFuc3Bvc2VfZmxhZworICAgICAgICAz NSwKKyAgICAgICAgLy9ydW5fY29weV9mbGFnCisgICAgICAgIDU4LCAgNDUsICA0NSwgIDMwLCAg MzgsICA0NSwgIDM4LCAgNDYsCisgICAgICAgIC8vcmVndWxhcl9tZXJnZV9mbGFnCisgICAgICAg IDQ2LCAgMTUsCisgICAgICAgIC8vbW12ZF9tZXJnZV9mbGFnCisgICAgICAgIDI1LAorICAgICAg ICAvL21tdmRfY2FuZF9mbGFnCisgICAgICAgIDQzLAorICAgICAgICAvL21tdmRfZGlzdGFuY2Vf aWR4CisgICAgICAgIDU5LAorICAgICAgICAvL2NpaXBfZmxhZworICAgICAgICA1NywKKyAgICAg ICAgLy9tZXJnZV9zdWJibG9ja19mbGFnCisgICAgICAgIDI1LCAgNTgsICA0NSwKKyAgICAgICAg Ly9tZXJnZV9zdWJibG9ja19pZHgKKyAgICAgICAgIDQsCisgICAgICAgIC8vbWVyZ2VfaWR4LCBt ZXJnZV9ncG1faWR4MCwgYW5kIG1lcmdlX2dwbV9pZHgxCisgICAgICAgIDE4LAorICAgICAgICAv L2Fic19tdmRfZ3JlYXRlcjBfZmxhZworICAgICAgICA1MSwKKyAgICAgICAgLy9hYnNfbXZkX2dy ZWF0ZXIxX2ZsYWcKKyAgICAgICAgMzYsCisgICAgICAgIC8vdHVfeV9jb2RlZF9mbGFnCisgICAg ICAgIDE1LCAgIDYsICAgNSwgIDE0LAorICAgICAgICAvL3R1X2NiX2NvZGVkX2ZsYWcKKyAgICAg ICAgMjUsICAzNywKKyAgICAgICAgLy90dV9jcl9jb2RlZF9mbGFnCisgICAgICAgICA5LCAgMzYs ICA0NSwKKyAgICAgICAgLy9jdV9xcF9kZWx0YV9hYnMKKyAgICAgICAgQ05VLCBDTlUsCisgICAg ICAgIC8vY3VfY2hyb21hX3FwX29mZnNldF9mbGFnCisgICAgICAgIENOVSwKKyAgICAgICAgLy9j dV9jaHJvbWFfcXBfb2Zmc2V0X2lkeAorICAgICAgICBDTlUsCisgICAgICAgIC8vdHJhbnNmb3Jt X3NraXBfZmxhZworICAgICAgICAyNSwgIDE3LAorICAgICAgICAvL3R1X2pvaW50X2NiY3JfcmVz aWR1YWxfZmxhZworICAgICAgICA0MiwgIDQzLCAgNTIsCisgICAgICAgIC8vbGFzdF9zaWdfY29l ZmZfeF9wcmVmaXgKKyAgICAgICAgIDYsICAgNiwgIDEyLCAgMTQsICAgNiwgICA0LCAgMTQsICAg NywgICA2LCAgIDQsICAyOSwgICA3LCAgIDYsICAgNiwgIDEyLCAgMjgsCisgICAgICAgICA3LCAg MTMsICAxMywgIDM1LCAgMTksICAgNSwgICA0LAorICAgICAgICAvL2xhc3Rfc2lnX2NvZWZmX3lf cHJlZml4CisgICAgICAgICA1LCAgIDUsICAyMCwgIDEzLCAgMTMsICAxOSwgIDIxLCAgIDYsICAx MiwgIDEyLCAgMTQsICAxNCwgICA1LCAgIDQsICAxMiwgIDEzLAorICAgICAgICAgNywgIDEzLCAg MTIsICA0MSwgIDExLCAgIDUsICAyNywKKyAgICAgICAgLy9zYl9jb2RlZF9mbGFnCisgICAgICAg IDI1LCAgNDUsICAyNSwgIDE0LCAgMTgsICAzNSwgIDQ1LAorICAgICAgICAvL3NpZ19jb2VmZl9m bGFnCisgICAgICAgIDE3LCAgNDEsICA0OSwgIDM2LCAgIDEsICA0OSwgIDUwLCAgMzcsICA0OCwg IDUxLCAgNTgsICA0NSwgIDI2LCAgNDUsICA1MywgIDQ2LAorICAgICAgICA0OSwgIDU0LCAgNjEs ICAzOSwgIDM1LCAgMzksICAzOSwgIDM5LCAgMTksICA1NCwgIDM5LCAgMzksICA1MCwgIDM5LCAg MzksICAzOSwKKyAgICAgICAgIDAsICAzOSwgIDM5LCAgMzksICAgOSwgIDQ5LCAgNTAsICAzNiwg IDQ4LCAgNTksICA1OSwgIDM4LCAgMzQsICA0NSwgIDM4LCAgMzEsCisgICAgICAgIDU4LCAgMzks ICAzOSwgIDM5LCAgMzQsICAzOCwgIDU0LCAgMzksICA0MSwgIDM5LCAgMzksICAzOSwgIDI1LCAg NTAsICAzNywKKyAgICAgICAgLy9wYXJfbGV2ZWxfZmxhZworICAgICAgICAzMywgIDQwLCAgMjUs ICA0MSwgIDI2LCAgNDIsICAyNSwgIDMzLCAgMjYsICAzNCwgIDI3LCAgMjUsICA0MSwgIDQyLCAg NDIsICAzNSwKKyAgICAgICAgMzMsICAyNywgIDM1LCAgNDIsICA0MywgIDMzLCAgMjUsICAyNiwg IDM0LCAgMTksICAyNywgIDMzLCAgNDIsICA0MywgIDM1LCAgNDMsCisgICAgICAgIDExLAorICAg ICAgICAvL2Fic19sZXZlbF9ndHhfZmxhZworICAgICAgICAgMCwgICAwLCAgMzMsICAzNCwgIDM1 LCAgMjEsICAyNSwgIDM0LCAgMzUsICAyOCwgIDI5LCAgNDAsICA0MiwgIDQzLCAgMjksICAzMCwK KyAgICAgICAgNDksICAzNiwgIDM3LCAgNDUsICAzOCwgICAwLCAgNDAsICAzNCwgIDQzLCAgMzYs ICAzNywgIDU3LCAgNTIsICA0NSwgIDM4LCAgNDYsCisgICAgICAgIDI1LCAgIDAsICAgMCwgIDE3 LCAgMjUsICAyNiwgICAwLCAgIDksICAyNSwgIDMzLCAgMTksICAgMCwgIDI1LCAgMzMsICAyNiwg IDIwLAorICAgICAgICAyNSwgIDMzLCAgMjcsICAzNSwgIDIyLCAgMjUsICAgMSwgIDI1LCAgMzMs ICAyNiwgIDEyLCAgMjUsICAzMywgIDI3LCAgMjgsICAzNywKKyAgICAgICAgMTksICAxMSwgICA0 LCAgIDYsICAgMywgICA0LCAgIDQsICAgNSwKKyAgICAgICAgLy9jb2VmZl9zaWduX2ZsYWcKKyAg ICAgICAgMzUsICAyNSwgIDQ2LCAgMjgsICAzMywgIDM4LAorICAgIH0sCisgICAgLy9zaGlmdElk eAorICAgIHsKKyAgICAgICAgLy9hbGZfY3RiX2ZsYWcKKyAgICAgICAgIDAsICAgMCwgICAwLCAg IDQsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLAorICAgICAgICAvL2FsZl91c2VfYXBzX2ZsYWcK KyAgICAgICAgIDAsCisgICAgICAgIC8vYWxmX2N0Yl9jY19jYl9pZGMKKyAgICAgICAgIDQsICAg MSwgICA0LAorICAgICAgICAvL2FsZl9jdGJfY2NfY3JfaWRjCisgICAgICAgICA0LCAgIDEsICAg NCwKKyAgICAgICAgLy9hbGZfY3RiX2ZpbHRlcl9hbHRfaWR4CisgICAgICAgICAwLCAgIDAsCisg ICAgICAgIC8vc2FvX21lcmdlX2xlZnRfZmxhZyBhbmQgc2FvX21lcmdlX3VwX2ZsYWcKKyAgICAg ICAgIDAsCisgICAgICAgIC8vc2FvX3R5cGVfaWR4X2x1bWEgYW5kIHNhb190eXBlX2lkeF9jaHJv bWEKKyAgICAgICAgIDQsCisgICAgICAgIC8vc3BsaXRfY3VfZmxhZworICAgICAgICAxMiwgIDEz LCAgIDgsICAgOCwgIDEzLCAgMTIsICAgNSwgICA5LCAgIDksCisgICAgICAgIC8vc3BsaXRfcXRf ZmxhZworICAgICAgICAgMCwgICA4LCAgIDgsICAxMiwgIDEyLCAgIDgsCisgICAgICAgIC8vbXR0 X3NwbGl0X2N1X3ZlcnRpY2FsX2ZsYWcKKyAgICAgICAgIDksICAgOCwgICA5LCAgIDgsICAgNSwK KyAgICAgICAgLy9tdHRfc3BsaXRfY3VfYmluYXJ5X2ZsYWcKKyAgICAgICAgMTIsICAxMywgIDEy LCAgMTMsCisgICAgICAgIC8vbm9uX2ludGVyX2ZsYWcKKyAgICAgICAgIDEsICAgMCwKKyAgICAg ICAgLy9jdV9za2lwX2ZsYWcKKyAgICAgICAgIDUsICAgNCwgICA4LAorICAgICAgICAvL3ByZWRf bW9kZV9pYmNfZmxhZworICAgICAgICAgMSwgICA1LCAgIDgsCisgICAgICAgIC8vcHJlZF9tb2Rl X2ZsYWcKKyAgICAgICAgIDUsICAgMSwKKyAgICAgICAgLy9wcmVkX21vZGVfcGx0X2ZsYWcKKyAg ICAgICAgIDEsCisgICAgICAgIC8vY3VfYWN0X2VuYWJsZWRfZmxhZworICAgICAgICAgMSwKKyAg ICAgICAgLy9pbnRyYV9iZHBjbV9sdW1hX2ZsYWcKKyAgICAgICAgIDEsCisgICAgICAgIC8vaW50 cmFfYmRwY21fbHVtYV9kaXJfZmxhZworICAgICAgICAgNCwKKyAgICAgICAgLy9pbnRyYV9taXBf ZmxhZworICAgICAgICAgOSwgIDEwLCAgIDksICAgNiwKKyAgICAgICAgLy9pbnRyYV9sdW1hX3Jl Zl9pZHgKKyAgICAgICAgIDUsICAgOCwKKyAgICAgICAgLy9pbnRyYV9zdWJwYXJ0aXRpb25zX21v ZGVfZmxhZworICAgICAgICAgOSwKKyAgICAgICAgLy9pbnRyYV9zdWJwYXJ0aXRpb25zX3NwbGl0 X2ZsYWcKKyAgICAgICAgIDIsCisgICAgICAgIC8vaW50cmFfbHVtYV9tcG1fZmxhZworICAgICAg ICAgNiwKKyAgICAgICAgLy9pbnRyYV9sdW1hX25vdF9wbGFuYXJfZmxhZworICAgICAgICAgMSwg ICA1LAorICAgICAgICAvL2ludHJhX2JkcGNtX2Nocm9tYV9mbGFnCisgICAgICAgICAxLAorICAg ICAgICAvL2ludHJhX2JkcGNtX2Nocm9tYV9kaXJfZmxhZworICAgICAgICAgMCwKKyAgICAgICAg Ly9jY2xtX21vZGVfZmxhZworICAgICAgICAgNCwKKyAgICAgICAgLy9jY2xtX21vZGVfaWR4Cisg ICAgICAgICA5LAorICAgICAgICAvL2ludHJhX2Nocm9tYV9wcmVkX21vZGUKKyAgICAgICAgIDUs CisgICAgICAgIC8vZ2VuZXJhbF9tZXJnZV9mbGFnCisgICAgICAgICA0LAorICAgICAgICAvL2lu dGVyX3ByZWRfaWRjCisgICAgICAgICAwLCAgIDAsICAgMSwgICA0LCAgIDQsICAgMCwKKyAgICAg ICAgLy9pbnRlcl9hZmZpbmVfZmxhZworICAgICAgICAgNCwgICAwLCAgIDAsCisgICAgICAgIC8v Y3VfYWZmaW5lX3R5cGVfZmxhZworICAgICAgICAgNCwKKyAgICAgICAgLy9zeW1fbXZkX2ZsYWcK KyAgICAgICAgIDUsCisgICAgICAgIC8vcmVmX2lkeF9sMCBhbmQgcmVmX2lkeF9sMQorICAgICAg ICAgMCwgICA0LAorICAgICAgICAvL212cF9sMF9mbGFnIGFuZCBtdnBfbDFfZmxhZworICAgICAg ICAxMiwKKyAgICAgICAgLy9hbXZyX2ZsYWcKKyAgICAgICAgIDAsICAgMCwKKyAgICAgICAgLy9h bXZyX3ByZWNpc2lvbl9pZHgKKyAgICAgICAgIDQsICAgNSwgIDAsCisgICAgICAgIC8vYmN3X2lk eAorICAgICAgICAgMSwKKyAgICAgICAgLy9jdV9jb2RlZF9mbGFnCisgICAgICAgICA0LAorICAg ICAgICAvL2N1X3NidF9mbGFnCisgICAgICAgICAxLCAgIDUsCisgICAgICAgIC8vY3Vfc2J0X3F1 YWRfZmxhZworICAgICAgICAxMCwKKyAgICAgICAgLy9jdV9zYnRfaG9yaXpvbnRhbF9mbGFnCisg ICAgICAgICA4LCAgIDQsICAgMSwKKyAgICAgICAgLy9jdV9zYnRfcG9zX2ZsYWcKKyAgICAgICAg MTMsCisgICAgICAgIC8vbGZuc3RfaWR4CisgICAgICAgICA5LCAgIDksICAxMCwKKyAgICAgICAg Ly9tdHNfaWR4CisgICAgICAgICA4LCAgIDAsICAgOSwgICAwLAorICAgICAgICAvL2NvcHlfYWJv dmVfcGFsZXR0ZV9pbmRpY2VzX2ZsYWcKKyAgICAgICAgIDksCisgICAgICAgIC8vcGFsZXR0ZV90 cmFuc3Bvc2VfZmxhZworICAgICAgICAgNSwKKyAgICAgICAgLy9ydW5fY29weV9mbGFnCisgICAg ICAgICA5LCAgIDYsICAgOSwgIDEwLCAgIDUsICAgMCwgICA5LCAgIDUsCisgICAgICAgIC8vcmVn dWxhcl9tZXJnZV9mbGFnCisgICAgICAgICA1LCAgIDUsCisgICAgICAgIC8vbW12ZF9tZXJnZV9m bGFnCisgICAgICAgICA0LAorICAgICAgICAvL21tdmRfY2FuZF9mbGFnCisgICAgICAgIDEwLAor ICAgICAgICAvL21tdmRfZGlzdGFuY2VfaWR4CisgICAgICAgICAwLAorICAgICAgICAvL2NpaXBf ZmxhZworICAgICAgICAgMSwKKyAgICAgICAgLy9tZXJnZV9zdWJibG9ja19mbGFnCisgICAgICAg ICA0LCAgIDQsICAgNCwKKyAgICAgICAgLy9tZXJnZV9zdWJibG9ja19pZHgKKyAgICAgICAgIDAs CisgICAgICAgIC8vbWVyZ2VfaWR4LCBtZXJnZV9ncG1faWR4MCwgYW5kIG1lcmdlX2dwbV9pZHgx CisgICAgICAgICA0LAorICAgICAgICAvL2Fic19tdmRfZ3JlYXRlcjBfZmxhZworICAgICAgICAg OSwKKyAgICAgICAgLy9hYnNfbXZkX2dyZWF0ZXIxX2ZsYWcKKyAgICAgICAgIDUsCisgICAgICAg IC8vdHVfeV9jb2RlZF9mbGFnCisgICAgICAgICA1LCAgIDEsICAgOCwgICA5LAorICAgICAgICAv L3R1X2NiX2NvZGVkX2ZsYWcKKyAgICAgICAgIDUsICAgMCwKKyAgICAgICAgLy90dV9jcl9jb2Rl ZF9mbGFnCisgICAgICAgICAyLCAgIDEsICAgMCwKKyAgICAgICAgLy9jdV9xcF9kZWx0YV9hYnMK KyAgICAgICAgIDgsICAgOCwKKyAgICAgICAgLy9jdV9jaHJvbWFfcXBfb2Zmc2V0X2ZsYWcKKyAg ICAgICAgIDgsCisgICAgICAgIC8vY3VfY2hyb21hX3FwX29mZnNldF9pZHgKKyAgICAgICAgIDgs CisgICAgICAgIC8vdHJhbnNmb3JtX3NraXBfZmxhZworICAgICAgICAgMSwgICAxLAorICAgICAg ICAvL3R1X2pvaW50X2NiY3JfcmVzaWR1YWxfZmxhZworICAgICAgICAgMSwgICAxLCAgIDAsCisg ICAgICAgIC8vbGFzdF9zaWdfY29lZmZfeF9wcmVmaXgKKyAgICAgICAgIDgsICAgNSwgICA0LCAg IDUsICAgNCwgICA0LCAgIDUsICAgNCwgICAxLCAgIDAsICAgNCwgICAxLCAgIDAsICAgMCwgICAw LCAgIDAsCisgICAgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDUsICAgNCwgICA0LAorICAgICAg ICAvL2xhc3Rfc2lnX2NvZWZmX3lfcHJlZml4CisgICAgICAgICA4LCAgIDUsICAgOCwgICA1LCAg IDUsICAgNCwgICA1LCAgIDUsICAgNCwgICAwLCAgIDUsICAgNCwgICAxLCAgIDAsICAgMCwgICAx LAorICAgICAgICAgNCwgICAwLCAgIDAsICAgMCwgICA2LCAgIDUsICAgNSwKKyAgICAgICAgLy9z Yl9jb2RlZF9mbGFnCisgICAgICAgICA4LCAgIDUsICAgNSwgICA4LCAgIDUsICAgOCwgICA4LAor ICAgICAgICAvL3NpZ19jb2VmZl9mbGFnCisgICAgICAgIDEyLCAgIDksICAgOSwgIDEwLCAgIDks ICAgOSwgICA5LCAgMTAsICAgOCwgICA4LCAgIDgsICAxMCwgICA5LCAgMTMsICAgOCwgICA4LAor ICAgICAgICAgOCwgICA4LCAgIDgsICAgNSwgICA4LCAgIDAsICAgMCwgICAwLCAgIDgsICAgOCwg ICA4LCAgIDgsICAgOCwgICAwLCAgIDQsICAgNCwKKyAgICAgICAgIDAsICAgMCwgICAwLCAgIDAs ICAxMiwgIDEyLCAgIDksICAxMywgICA0LCAgIDUsICAgOCwgICA5LCAgIDgsICAxMiwgIDEyLCAg IDgsCisgICAgICAgICA0LCAgIDAsICAgMCwgICAwLCAgIDgsICAgOCwgICA4LCAgIDgsICAgNCwg ICAwLCAgIDAsICAgMCwgIDEzLCAgMTMsICAgOCwKKyAgICAgICAgLy9wYXJfbGV2ZWxfZmxhZwor ICAgICAgICAgOCwgICA5LCAgMTIsICAxMywgIDEzLCAgMTMsICAxMCwgIDEzLCAgMTMsICAxMywg IDEzLCAgMTMsICAxMywgIDEzLCAgMTMsICAxMywKKyAgICAgICAgMTAsICAxMywgIDEzLCAgMTMs ICAxMywgICA4LCAgMTIsICAxMiwgIDEyLCAgMTMsICAxMywgIDEzLCAgMTMsICAxMywgIDEzLCAg MTMsCisgICAgICAgICA2LAorICAgICAgICAvL2Fic19sZXZlbF9ndHhfZmxhZworICAgICAgICAg OSwgICA1LCAgMTAsICAxMywgIDEzLCAgMTAsICAgOSwgIDEwLCAgMTMsICAxMywgIDEzLCAgIDks ICAxMCwgIDEwLCAgMTAsICAxMywKKyAgICAgICAgIDgsICAgOSwgIDEwLCAgMTAsICAxMywgICA4 LCAgIDgsICAgOSwgIDEyLCAgMTIsICAxMCwgICA1LCAgIDksICAgOSwgICA5LCAgMTMsCisgICAg ICAgICAxLCAgIDUsICAgOSwgICA5LCAgIDksICAgNiwgICA1LCAgIDksICAxMCwgIDEwLCAgIDks ICAgOSwgICA5LCAgIDksICAgOSwgICA5LAorICAgICAgICAgNiwgICA4LCAgIDksICAgOSwgIDEw LCAgIDEsICAgNSwgICA4LCAgIDgsICAgOSwgICA2LCAgIDYsICAgOSwgICA4LCAgIDgsICAgOSwK KyAgICAgICAgIDQsICAgMiwgICAxLCAgIDYsICAgMSwgICAxLCAgIDEsICAgMSwKKyAgICAgICAg Ly9jb2VmZl9zaWduX2ZsYWcKKyAgICAgICAgIDEsICAgNCwgICA0LCAgIDUsICAgOCwgICA4LAor ICAgIH0KK307CisKKyNkZWZpbmUgTUFYX1NVQl9CTE9DS1MgMTYKKyNkZWZpbmUgTUFYX1NVQl9C TE9DS19TSVpFIDQKKyNkZWZpbmUgTUFYX1RCX1NJWkUgNjQKKwordHlwZWRlZiBzdHJ1Y3QgUmVz aWR1YWxDb2RpbmcgeworICAgIC8vY29tbW9uIGZvciB0cyBhbmQgbm9uIHRzCisgICAgVHJhbnNm b3JtQmxvY2sgKnRiOworCisgICAgaW50IGxvZzJfc2JfdzsKKyAgICBpbnQgbG9nMl9zYl9oOwor ICAgIGludCBsYXN0X3N1Yl9ibG9jazsKKyAgICBpbnQgaGlzdF92YWx1ZTsKKyAgICBpbnQgdXBk YXRlX2hpc3Q7CisgICAgaW50IG51bV9zYl9jb2VmZjsKKyAgICBpbnQgcmVtX2JpbnNfcGFzczE7 CisKKyAgICBpbnQgd2lkdGhfaW5fc2JzOworICAgIGludCBoZWlnaHRfaW5fc2JzOworICAgIGlu dCBuYl9zYnM7CisKKyAgICBjb25zdCB1aW50OF90ICpzYl9zY2FuX3hfb2ZmOworICAgIGNvbnN0 IHVpbnQ4X3QgKnNiX3NjYW5feV9vZmY7CisgICAgY29uc3QgdWludDhfdCAqc2Nhbl94X29mZjsK KyAgICBjb25zdCB1aW50OF90ICpzY2FuX3lfb2ZmOworCisgICAgdWludDhfdCBzYl9jb2RlZF9m bGFnW01BWF9TVUJfQkxPQ0tTICogTUFYX1NVQl9CTE9DS1NdOworICAgIGludCBzaWdfY29lZmZf ZmxhZ1tNQVhfVEJfU0laRSAqIE1BWF9UQl9TSVpFXTsKKyAgICBpbnQgYWJzX2xldmVsX3Bhc3Mx W01BWF9UQl9TSVpFICogTUFYX1RCX1NJWkVdOyAgICAgICAgICAgICAgLy8vPCBBYnNMZXZlbFBh c3MxW11bXQorICAgIGludCBhYnNfbGV2ZWxbTUFYX1RCX1NJWkUgKiBNQVhfVEJfU0laRV07CisK KyAgICAvL2ZvciB0cyBvbmx5CisgICAgdWludDhfdCBpbmZlcl9zYl9jYmY7CisgICAgaW50IGNv ZWZmX3NpZ25fbGV2ZWxbTUFYX1RCX1NJWkUgKiBNQVhfVEJfU0laRV07ICAgICAgICAgICAgIC8v LzwgQ29lZmZTaWduTGV2ZWxbXVtdCisKKyAgICAvL2ZvciBub24gdHMgb25seQorICAgIGludCBx c3RhdGU7CisgICAgaW50IGxhc3Rfc2Nhbl9wb3M7CisgICAgaW50IGxhc3Rfc2lnbmlmaWNhbnRf Y29lZmZfeDsKKyAgICBpbnQgbGFzdF9zaWduaWZpY2FudF9jb2VmZl95OworfSBSZXNpZHVhbENv ZGluZzsKKworc3RhdGljIGludCBjYWJhY19yZWluaXQoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sK KyAgICByZXR1cm4gc2tpcF9ieXRlcygmbGMtPmVwLT5jYywgMCkgPT0gTlVMTCA/IEFWRVJST1Jf SU5WQUxJRERBVEEgOiAwOworfQorCitzdGF0aWMgdm9pZCBjYWJhY19pbml0X3N0YXRlKFZWQ0xv Y2FsQ29udGV4dCAqbGMpCit7CisgICAgY29uc3QgVlZDU1BTICpzcHMgICAgICAgICAgICAgICA9 IGxjLT5mYy0+cHMuc3BzOworICAgIGNvbnN0IEgyNjZSYXdTbGljZUhlYWRlciAqcnNoICAgPSBs Yy0+c2MtPnNoLnI7CisgICAgY29uc3QgaW50IHFwICAgICAgICAgICAgICAgICAgICA9IGF2X2Ns aXBfdWludHAyKGxjLT5zYy0+c2guc2xpY2VfcXBfeSwgNik7CisgICAgaW50IGluaXRfdHlwZSAg ICAgICAgICAgICAgICAgICA9IDIgLSByc2gtPnNoX3NsaWNlX3R5cGU7CisKKyAgICBhdl9hc3Nl cnQwKFZWQ19DT05URVhUUyA9PSBTWU5UQVhfRUxFTUVOVF9MQVNUKTsKKworICAgIGZmX3Z2Y19l cF9pbml0X3N0YXRfY29lZmYobGMtPmVwLCBzcHMtPmJpdF9kZXB0aCwgc3BzLT5yLT5zcHNfcGVy c2lzdGVudF9yaWNlX2FkYXB0YXRpb25fZW5hYmxlZF9mbGFnKTsKKworICAgIGlmIChyc2gtPnNo X2NhYmFjX2luaXRfZmxhZyAmJiAhSVNfSShyc2gpKQorICAgICAgICBpbml0X3R5cGUgXj0gMzsK KworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgVlZDX0NPTlRFWFRTOyBpKyspIHsKKyAgICAgICAg VlZDQ2FiYWNTdGF0ZSAqc3RhdGUgPSAmbGMtPmVwLT5jYWJhY19zdGF0ZVtpXTsKKyAgICAgICAg Y29uc3QgaW50IGluaXRfdmFsdWUgPSBpbml0X3ZhbHVlc1tpbml0X3R5cGVdW2ldOworICAgICAg ICBjb25zdCBpbnQgc2hpZnRfaWR4ICA9IGluaXRfdmFsdWVzWzNdW2ldOworICAgICAgICBjb25z dCBpbnQgbSA9IChpbml0X3ZhbHVlID4+IDMpIC0gNDsKKyAgICAgICAgY29uc3QgaW50IG4gPSAo KGluaXRfdmFsdWUgJiA3KSAqIDE4KSArIDE7CisgICAgICAgIGNvbnN0IGludCBwcmUgPSBhdl9j bGlwKCgobSAqIChxcCAtIDE2KSkgPj4gMSkgKyBuLCAxLCAxMjcpOworCisgICAgICAgIHN0YXRl LT5zdGF0ZVswXSA9IHByZSA8PCAzOworICAgICAgICBzdGF0ZS0+c3RhdGVbMV0gPSBwcmUgPDwg NzsKKyAgICAgICAgc3RhdGUtPnNoaWZ0WzBdID0gKHNoaWZ0X2lkeCA+PiAyICkgKyAyOworICAg ICAgICBzdGF0ZS0+c2hpZnRbMV0gPSAoc2hpZnRfaWR4ICYgMyApICsgMyArIHN0YXRlLT5zaGlm dFswXTsKKyAgICB9Cit9CisKK2ludCBmZl92dmNfY2FiYWNfaW5pdChWVkNMb2NhbENvbnRleHQg KmxjLAorICAgIGNvbnN0IGludCBjdHVfaWR4LCBjb25zdCBpbnQgcngsIGNvbnN0IGludCByeSkK K3sKKyAgICBpbnQgcmV0ID0gMDsKKyAgICBjb25zdCBWVkNQUFMgKnBwcyAgICAgICAgICAgICAg ID0gbGMtPmZjLT5wcy5wcHM7CisgICAgY29uc3QgaW50IGZpcnN0X2N0Yl9pbl9zbGljZSAgICA9 ICFjdHVfaWR4OworICAgIGNvbnN0IGludCBmaXJzdF9jdGJfaW5fdGlsZSAgICAgPSByeCA9PSBw cHMtPmN0Yl90b19jb2xfYmRbcnhdICYmIHJ5ID09IHBwcy0+Y3RiX3RvX3Jvd19iZFtyeV07CisK KyAgICBpZiAoZmlyc3RfY3RiX2luX3NsaWNlfHwgZmlyc3RfY3RiX2luX3RpbGUpIHsKKyAgICAg ICAgaWYgKGxjLT5zYy0+bmJfZXBzID09IDEgJiYgIWZpcnN0X2N0Yl9pbl9zbGljZSkKKyAgICAg ICAgICAgIHJldCA9IGNhYmFjX3JlaW5pdChsYyk7CisgICAgICAgIGlmIChyZXQgPT0gMCkKKyAg ICAgICAgICAgIGNhYmFjX2luaXRfc3RhdGUobGMpOworICAgIH0KKyAgICByZXR1cm4gcmV0Owor fQorCisvL2ZpeG1lCitzdGF0aWMgdm9pZCB2dmNfcmVmaWxsMihDQUJBQ0NvbnRleHQqIGMpIHsK KyAgICBpbnQgaTsKKyAgICB1bnNpZ25lZCB4OworI2lmICFIQVZFX0ZBU1RfQ0xaCisgICAgeCA9 IGMtPmxvdyBeIChjLT5sb3cgLSAxKTsKKyAgICBpID0gNyAtIGZmX2gyNjRfbm9ybV9zaGlmdFt4 ID4+IChDQUJBQ19CSVRTIC0gMSldOworI2Vsc2UKKyAgICBpID0gZmZfY3R6KGMtPmxvdykgLSBD QUJBQ19CSVRTOworI2VuZGlmCisKKyAgICB4ID0gLUNBQkFDX01BU0s7CisKKyNpZiBDQUJBQ19C SVRTID09IDE2CisgICAgeCArPSAoYy0+Ynl0ZXN0cmVhbVswXSA8PCA5KSArIChjLT5ieXRlc3Ry ZWFtWzFdIDw8IDEpOworI2Vsc2UKKyAgICB4ICs9IGMtPmJ5dGVzdHJlYW1bMF0gPDwgMTsKKyNl bmRpZgorCisgICAgYy0+bG93ICs9IHggPDwgaTsKKyNpZiAhVU5DSEVDS0VEX0JJVFNUUkVBTV9S RUFERVIKKyAgICBpZiAoYy0+Ynl0ZXN0cmVhbSA8IGMtPmJ5dGVzdHJlYW1fZW5kKQorI2VuZGlm CisgICAgICAgIGMtPmJ5dGVzdHJlYW0gKz0gQ0FCQUNfQklUUyAvIDg7Cit9CisKK3N0YXRpYyBp bnQgaW5saW5lIHZ2Y19nZXRfY2FiYWMoQ0FCQUNDb250ZXh0ICpjLCBWVkNDYWJhY1N0YXRlKiBi YXNlLCBjb25zdCBpbnQgY3R4KQoreworICAgIFZWQ0NhYmFjU3RhdGUgKnMgPSBiYXNlICsgY3R4 OworICAgIGNvbnN0IGludCBxUmFuZ2VJZHggPSBjLT5yYW5nZSA+PiA1OworICAgIGNvbnN0IGlu dCBwU3RhdGUgPSBzLT5zdGF0ZVsxXSArIChzLT5zdGF0ZVswXSA8PCA0KTsKKyAgICBjb25zdCBp bnQgdmFsTXBzID0gcFN0YXRlID4+IDE0OworICAgIGNvbnN0IGludCBSYW5nZUxQUyA9IChxUmFu Z2VJZHggKiAoKHZhbE1wcyA/IDMyNzY3IC0gcFN0YXRlIDogcFN0YXRlKSA+PiA5ICkgPj4gMSkg KyA0OworICAgIGludCBiaXQsIGxwc19tYXNrOworCisgICAgYy0+cmFuZ2UgLT0gUmFuZ2VMUFM7 CisgICAgbHBzX21hc2sgPSAoKGMtPnJhbmdlPDwoQ0FCQUNfQklUUysxKSkgLSBjLT5sb3cpPj4z MTsKKworICAgIGMtPmxvdyAtPSAoYy0+cmFuZ2U8PChDQUJBQ19CSVRTKzEpKSAmIGxwc19tYXNr OworICAgIGMtPnJhbmdlICs9IChSYW5nZUxQUyAtIGMtPnJhbmdlKSAmIGxwc19tYXNrOworCisg ICAgYml0ID0gdmFsTXBzIF4gKGxwc19tYXNrICYgMSk7CisKKyAgICBscHNfbWFzayA9IGZmX2gy NjRfbm9ybV9zaGlmdFtjLT5yYW5nZV07CisgICAgYy0+cmFuZ2UgPDw9IGxwc19tYXNrOworICAg IGMtPmxvdyAgPDw9IGxwc19tYXNrOworCisgICAgaWYgKCEoYy0+bG93ICYgQ0FCQUNfTUFTSykp CisgICAgICAgIHZ2Y19yZWZpbGwyKGMpOworICAgIHMtPnN0YXRlWzBdID0gcy0+c3RhdGVbMF0g LSAocy0+c3RhdGVbMF0gPj4gcy0+c2hpZnRbMF0pICsgKDEwMjMgKiBiaXQgPj4gcy0+c2hpZnRb MF0pOworICAgIHMtPnN0YXRlWzFdID0gcy0+c3RhdGVbMV0gLSAocy0+c3RhdGVbMV0gPj4gcy0+ c2hpZnRbMV0pICsgKDE2MzgzICogYml0ID4+IHMtPnNoaWZ0WzFdKTsKKyAgICByZXR1cm4gYml0 OworfQorCisjZGVmaW5lIEdFVF9DQUJBQyhjdHgpIHZ2Y19nZXRfY2FiYWMoJmxjLT5lcC0+Y2Ms IGxjLT5lcC0+Y2FiYWNfc3RhdGUsIGN0eCkKKworc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50 IHZ2Y19nZXRfY2FiYWNfYnlwYXNzKENBQkFDQ29udGV4dCAqYykKK3sKKyAgICByZXR1cm4gZ2V0 X2NhYmFjX2J5cGFzcyhjKTsKK30KKworLy85LjMuMy40IFRydW5jYXRlZCBiaW5hcnkgKFRCKSBi aW5hcml6YXRpb24gcHJvY2Vzcworc3RhdGljIGludCB0cnVuY2F0ZWRfYmluYXJ5X2RlY29kZShW VkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgY19tYXgpCit7CisgICAgY29uc3QgaW50IG4g PSBjX21heCArIDE7CisgICAgY29uc3QgaW50IGsgPSBhdl9sb2cyKG4pOworICAgIGNvbnN0IGlu dCB1ID0gKDEgPDwgKGsrMSkpIC0gbjsKKyAgICBpbnQgdiA9IDA7CisgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCBrOyBpKyspCisgICAgICAgIHYgPSAodiA8PCAxKSB8IHZ2Y19nZXRfY2FiYWNfYnlw YXNzKCZsYy0+ZXAtPmNjKTsKKyAgICBpZiAodiA+PSB1KSB7CisgICAgICAgIHYgPSAodiA8PCAx KSB8IHZ2Y19nZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsKKyAgICAgICAgdiAtPSB1Owor ICAgIH0KKyAgICByZXR1cm4gdjsKK30KKworLy8gOS4zLjMuNiBMaW1pdGVkIGstdGggb3JkZXIg RXhwLUdvbG9tYiBiaW5hcml6YXRpb24gcHJvY2Vzcworc3RhdGljIGludCBsaW1pdGVkX2t0aF9v cmRlcl9lZ2tfZGVjb2RlKENBQkFDQ29udGV4dCAqYywgY29uc3QgaW50IGssIGNvbnN0IGludCBt YXhfcHJlX2V4dF9sZW4sIGNvbnN0IGludCB0cnVuY19zdWZmaXhfbGVuKQoreworICAgIGludCBw cmVfZXh0X2xlbiA9IDA7CisgICAgaW50IGVzY2FwZV9sZW5ndGg7CisgICAgaW50IHZhbCA9IDA7 CisgICAgd2hpbGUgKChwcmVfZXh0X2xlbiA8IG1heF9wcmVfZXh0X2xlbikgJiYgdnZjX2dldF9j YWJhY19ieXBhc3MoYykpCisgICAgICAgIHByZV9leHRfbGVuKys7CisgICAgaWYgKHByZV9leHRf bGVuID09IG1heF9wcmVfZXh0X2xlbikKKyAgICAgICAgZXNjYXBlX2xlbmd0aCA9IHRydW5jX3N1 ZmZpeF9sZW47CisgICAgZWxzZQorICAgICAgICBlc2NhcGVfbGVuZ3RoID0gcHJlX2V4dF9sZW4g KyBrOworICAgIHdoaWxlIChlc2NhcGVfbGVuZ3RoLS0gPiAwKSB7CisgICAgICAgIHZhbCA9ICh2 YWwgPDwgMSkgKyB2dmNfZ2V0X2NhYmFjX2J5cGFzcyhjKTsKKyAgICB9CisgICAgdmFsICs9ICgo MSA8PCBwcmVfZXh0X2xlbikgLSAxKSA8PCBrOworICAgIHJldHVybiB2YWw7Cit9CisKK3N0YXRp YyBhdl9hbHdheXNfaW5saW5lCit2b2lkIGdldF9sZWZ0X3RvcChjb25zdCBWVkNMb2NhbENvbnRl eHQgKmxjLCB1aW50OF90ICpsZWZ0LCB1aW50OF90ICp0b3AsCisgICAgY29uc3QgaW50IHgwLCBj b25zdCBpbnQgeTAsIGNvbnN0IHVpbnQ4X3QgKmxlZnRfY3R4LCBjb25zdCB1aW50OF90ICp0b3Bf Y3R4KQoreworICAgIGNvbnN0IFZWQ0ZyYW1lQ29udGV4dCAqZmMgICA9IGxjLT5mYzsKKyAgICBj b25zdCBWVkNTUFMgKnNwcyAgICAgICAgICAgPSBmYy0+cHMuc3BzOworICAgIGNvbnN0IGludCBt aW5fY2Jfd2lkdGggICAgICA9IGZjLT5wcy5wcHMtPm1pbl9jYl93aWR0aDsKKyAgICBjb25zdCBp bnQgeDBiID0gYXZfbW9kX3VpbnRwMih4MCwgc3BzLT5jdGJfbG9nMl9zaXplX3kpOworICAgIGNv bnN0IGludCB5MGIgPSBhdl9tb2RfdWludHAyKHkwLCBzcHMtPmN0Yl9sb2cyX3NpemVfeSk7Cisg ICAgY29uc3QgaW50IHhfY2IgPSB4MCA+PiBzcHMtPm1pbl9jYl9sb2cyX3NpemVfeTsKKyAgICBj b25zdCBpbnQgeV9jYiA9IHkwID4+IHNwcy0+bWluX2NiX2xvZzJfc2l6ZV95OworCisgICAgaWYg KGxjLT5jdGJfbGVmdF9mbGFnIHx8IHgwYikKKyAgICAgICAgKmxlZnQgPSBTQU1QTEVfQ1RCKGxl ZnRfY3R4LCB4X2NiIC0gMSwgeV9jYik7CisgICAgaWYgKGxjLT5jdGJfdXBfZmxhZyB8fCB5MGIp CisgICAgICAgICp0b3AgPSBTQU1QTEVfQ1RCKHRvcF9jdHgsIHhfY2IsIHlfY2IgLSAxKTsKK30K Kworc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUKK3VpbnQ4X3QgZ2V0X2luYyhWVkNMb2NhbENvbnRl eHQgKmxjLCBjb25zdCB1aW50OF90ICpjdHgpCit7CisgICAgdWludDhfdCBsZWZ0ID0gMCwgdG9w ID0gMDsKKyAgICBnZXRfbGVmdF90b3AobGMsICZsZWZ0LCAmdG9wLCBsYy0+Y3UtPngwLCBsYy0+ Y3UtPnkwLCBjdHgsIGN0eCk7CisgICAgcmV0dXJuIGxlZnQgKyB0b3A7Cit9CisKK2ludCBmZl92 dmNfc2FvX21lcmdlX2ZsYWdfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0 dXJuIEdFVF9DQUJBQyhTQU9fTUVSR0VfRkxBRyk7Cit9CisKK2ludCBmZl92dmNfc2FvX3R5cGVf aWR4X2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIGlmICghR0VUX0NBQkFDKFNB T19UWVBFX0lEWCkpCisgICAgICAgIHJldHVybiBTQU9fTk9UX0FQUExJRUQ7CisKKyAgICBpZiAo IXZ2Y19nZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKSkKKyAgICAgICAgcmV0dXJuIFNBT19C QU5EOworICAgIHJldHVybiBTQU9fRURHRTsKK30KKworaW50IGZmX3Z2Y19zYW9fYmFuZF9wb3Np dGlvbl9kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBpbnQgaTsKKyAgICBpbnQg dmFsdWUgPSB2dmNfZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7CisKKyAgICBmb3IgKGkg PSAwOyBpIDwgNDsgaSsrKQorICAgICAgICB2YWx1ZSA9ICh2YWx1ZSA8PCAxKSB8IHZ2Y19nZXRf Y2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK2ludCBm Zl92dmNfc2FvX29mZnNldF9hYnNfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAg aW50IGkgPSAwOworICAgIGludCBsZW5ndGggPSAoMSA8PCAoRkZNSU4obGMtPmZjLT5wcy5zcHMt PmJpdF9kZXB0aCwgMTApIC0gNSkpIC0gMTsKKworICAgIHdoaWxlIChpIDwgbGVuZ3RoICYmIHZ2 Y19nZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKSkKKyAgICAgICAgaSsrOworICAgIHJldHVy biBpOworfQorCitpbnQgZmZfdnZjX3Nhb19vZmZzZXRfc2lnbl9kZWNvZGUoVlZDTG9jYWxDb250 ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gdnZjX2dldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2Mp OworfQorCitpbnQgZmZfdnZjX3Nhb19lb19jbGFzc19kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICps YykKK3sKKyAgICBpbnQgcmV0ID0gdnZjX2dldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpIDw8 IDE7CisgICAgcmV0ICAgIHw9IHZ2Y19nZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsKKyAg ICByZXR1cm4gcmV0OworfQorCitpbnQgZmZfdnZjX2FsZl9jdGJfZmxhZyhWVkNMb2NhbENvbnRl eHQgKmxjLCBjb25zdCBpbnQgcngsIGNvbnN0IGludCByeSwgY29uc3QgaW50IGNfaWR4KQorewor ICAgIGludCBpbmMgPSBjX2lkeCAqIDM7CisgICAgY29uc3QgVlZDRnJhbWVDb250ZXh0ICpmYyA9 IGxjLT5mYzsKKyAgICBpZiAobGMtPmN0Yl9sZWZ0X2ZsYWcpIHsKKyAgICAgICAgY29uc3QgQUxG UGFyYW1zICpsZWZ0ID0gJkNUQihmYy0+dGFiLmFsZiwgcnggLSAxLCByeSk7CisgICAgICAgIGlu YyArPSBsZWZ0LT5jdGJfZmxhZ1tjX2lkeF07CisgICAgfQorICAgIGlmIChsYy0+Y3RiX3VwX2Zs YWcpIHsKKyAgICAgICAgY29uc3QgQUxGUGFyYW1zICphYm92ZSA9ICZDVEIoZmMtPnRhYi5hbGYs IHJ4LCByeSAtIDEpOworICAgICAgICBpbmMgKz0gYWJvdmUtPmN0Yl9mbGFnW2NfaWR4XTsKKyAg ICB9CisgICAgcmV0dXJuIEdFVF9DQUJBQyhBTEZfQ1RCX0ZMQUcgKyBpbmMpOworfQorCitpbnQg ZmZfdnZjX2FsZl91c2VfYXBzX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1 cm4gR0VUX0NBQkFDKEFMRl9VU0VfQVBTX0ZMQUcpOworfQorCitpbnQgZmZfdnZjX2FsZl9sdW1h X3ByZXZfZmlsdGVyX2lkeChWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiB0cnVu Y2F0ZWRfYmluYXJ5X2RlY29kZShsYywgbGMtPnNjLT5zaC5yLT5zaF9udW1fYWxmX2Fwc19pZHNf bHVtYSAtIDEpOworfQorCitpbnQgZmZfdnZjX2FsZl9sdW1hX2ZpeGVkX2ZpbHRlcl9pZHgoVlZD TG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gdHJ1bmNhdGVkX2JpbmFyeV9kZWNvZGUo bGMsIDE1KTsKK30KKworaW50IGZmX3Z2Y19hbGZfY3RiX2ZpbHRlcl9hbHRfaWR4KFZWQ0xvY2Fs Q29udGV4dCAqbGMsIGNvbnN0IGludCBjX2lkeCwgY29uc3QgaW50IG51bV9jaHJvbWFfZmlsdGVy cykKK3sKKyAgICBpbnQgaSA9IDA7CisgICAgY29uc3QgaW50IGxlbmd0aCA9IG51bV9jaHJvbWFf ZmlsdGVycyAtIDE7CisKKyAgICB3aGlsZSAoaSA8IGxlbmd0aCAmJiBHRVRfQ0FCQUMoQUxGX0NU Ql9GSUxURVJfQUxUX0lEWCArIGNfaWR4IC0gMSkpCisgICAgICAgIGkrKzsKKyAgICByZXR1cm4g aTsKK30KKworaW50IGZmX3Z2Y19hbGZfY3RiX2NjX2lkYyhWVkNMb2NhbENvbnRleHQgKmxjLCBj b25zdCBpbnQgcngsIGNvbnN0IGludCByeSwgY29uc3QgaW50IGlkeCwgY29uc3QgaW50IGNjX2Zp bHRlcnNfc2lnbmFsbGVkKQoreworICAgIGludCBpbmMgPSAhaWR4ID8gQUxGX0NUQl9DQ19DQl9J REMgOiBBTEZfQ1RCX0NDX0NSX0lEQzsKKyAgICBpbnQgaSA9IDA7CisgICAgY29uc3QgVlZDRnJh bWVDb250ZXh0ICpmYyA9IGxjLT5mYzsKKyAgICBpZiAobGMtPmN0Yl9sZWZ0X2ZsYWcpIHsKKyAg ICAgICAgY29uc3QgQUxGUGFyYW1zICpsZWZ0ID0gJkNUQihmYy0+dGFiLmFsZiwgcnggLSAxLCBy eSk7CisgICAgICAgIGluYyArPSBsZWZ0LT5jdGJfY2NfaWRjW2lkeF0gIT0gMDsKKyAgICB9Cisg ICAgaWYgKGxjLT5jdGJfdXBfZmxhZykgeworICAgICAgICBjb25zdCBBTEZQYXJhbXMgKmFib3Zl ID0gJkNUQihmYy0+dGFiLmFsZiwgcngsIHJ5IC0gMSk7CisgICAgICAgIGluYyArPSBhYm92ZS0+ Y3RiX2NjX2lkY1tpZHhdICE9IDA7CisgICAgfQorCisgICAgaWYgKCFHRVRfQ0FCQUMoaW5jKSkK KyAgICAgICAgcmV0dXJuIDA7CisgICAgaSsrOworICAgIHdoaWxlIChpIDwgY2NfZmlsdGVyc19z aWduYWxsZWQgJiYgdnZjX2dldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpKQorICAgICAgICBp Kys7CisgICAgcmV0dXJuIGk7Cit9CisKK2ludCBmZl92dmNfc3BsaXRfY3VfZmxhZyhWVkNMb2Nh bENvbnRleHQgKmxjLCBjb25zdCBpbnQgeDAsIGNvbnN0IGludCB5MCwKKyAgICBjb25zdCBpbnQg Y2Jfd2lkdGgsIGNvbnN0IGludCBjYl9oZWlnaHQsIGNvbnN0IGludCBpc19jaHJvbWEsIGNvbnN0 IFZWQ0FsbG93ZWRTcGxpdCAqYSkKK3sKKyAgICBjb25zdCBWVkNGcmFtZUNvbnRleHQgKmZjID0g bGMtPmZjOworICAgIGNvbnN0IFZWQ1BQUyAqcHBzICAgPSBmYy0+cHMucHBzOworICAgIGNvbnN0 IGludCBpc19pbnNpZGUgPSAoeDAgKyBjYl93aWR0aCA8PSBwcHMtPndpZHRoKSAmJiAoeTAgKyBj Yl9oZWlnaHQgPD0gcHBzLT5oZWlnaHQpOworCisgICAgaWYgKChhLT5idHYgfHwgYS0+YnRoIHx8 IGEtPnR0diB8fCBhLT50dGggfHwgYS0+cXQpICYmIGlzX2luc2lkZSkKKyAgICB7CisgICAgICAg IHVpbnQ4X3QgaW5jID0gMCwgbGVmdF9oZWlnaHQgPSBjYl9oZWlnaHQsIHRvcF93aWR0aCA9IGNi X3dpZHRoOworCisgICAgICAgIGdldF9sZWZ0X3RvcChsYywgJmxlZnRfaGVpZ2h0LCAmdG9wX3dp ZHRoLCB4MCwgeTAsIGZjLT50YWIuY2JfaGVpZ2h0W2lzX2Nocm9tYV0sIGZjLT50YWIuY2Jfd2lk dGhbaXNfY2hyb21hXSk7CisgICAgICAgIGluYyArPSBsZWZ0X2hlaWdodCA8IGNiX2hlaWdodDsK KyAgICAgICAgaW5jICs9IHRvcF93aWR0aCAgIDwgY2Jfd2lkdGg7CisgICAgICAgIGluYyArPSAo YS0+YnR2ICsgYS0+YnRoICsgYS0+dHR2ICsgYS0+dHRoICsgMiAqIGEtPnF0IC0gMSkgLyAyICog MzsKKworICAgICAgICByZXR1cm4gR0VUX0NBQkFDKFNQTElUX0NVX0ZMQUcgKyBpbmMpOworCisg ICAgfQorICAgIHJldHVybiAhaXNfaW5zaWRlOworfQorCitzdGF0aWMgaW50IHNwbGl0X3F0X2Zs YWdfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCB4MCwgY29uc3QgaW50IHkw LCBjb25zdCBpbnQgY2hfdHlwZSwgY29uc3QgaW50IGNxdF9kZXB0aCkKK3sKKyAgICBjb25zdCBW VkNGcmFtZUNvbnRleHQgKmZjID0gbGMtPmZjOworICAgIGludCBpbmMgPSAwOworICAgIHVpbnQ4 X3QgZGVwdGhfbGVmdCA9IDAsIGRlcHRoX3RvcCA9IDA7CisKKyAgICBnZXRfbGVmdF90b3AobGMs ICAmZGVwdGhfbGVmdCwgJmRlcHRoX3RvcCwgeDAsIHkwLCBmYy0+dGFiLmNxdF9kZXB0aFtjaF90 eXBlXSwgZmMtPnRhYi5jcXRfZGVwdGhbY2hfdHlwZV0pOworICAgIGluYyArPSBkZXB0aF9sZWZ0 ID4gY3F0X2RlcHRoOworICAgIGluYyArPSBkZXB0aF90b3AgID4gY3F0X2RlcHRoOworICAgIGlu YyArPSAoY3F0X2RlcHRoID49IDIpICogMzsKKworICAgIHJldHVybiBHRVRfQ0FCQUMoU1BMSVRf UVRfRkxBRyArIGluYyk7Cit9CisKK3N0YXRpYyBpbnQgbXR0X3NwbGl0X2N1X3ZlcnRpY2FsX2Zs YWdfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCB4MCwgY29uc3QgaW50IHkw LAorICAgIGNvbnN0IGludCBjYl93aWR0aCwgY29uc3QgaW50IGNiX2hlaWdodCwgY29uc3QgaW50 IGNoX3R5cGUsIGNvbnN0IFZWQ0FsbG93ZWRTcGxpdCogYSkKK3sKKyAgICBpZiAoKGEtPmJ0aCB8 fCBhLT50dGgpICYmIChhLT5idHYgfHwgYS0+dHR2KSkgeworICAgICAgICBpbnQgaW5jOworICAg ICAgICBjb25zdCBpbnQgdiA9IGEtPmJ0diArIGEtPnR0djsKKyAgICAgICAgY29uc3QgaW50IGgg PSBhLT5idGggKyBhLT50dGg7CisgICAgICAgIGlmICh2ID4gaCkKKyAgICAgICAgICAgIGluYyA9 IDQ7CisgICAgICAgIGVsc2UgaWYgKHYgPCBoKQorICAgICAgICAgICAgaW5jID0gMzsKKyAgICAg ICAgZWxzZSB7CisgICAgICAgICAgICBjb25zdCBWVkNGcmFtZUNvbnRleHQgKmZjICAgPSBsYy0+ ZmM7CisgICAgICAgICAgICBjb25zdCBWVkNTUFMgKnNwcyAgICAgICAgICAgPSBmYy0+cHMuc3Bz OworICAgICAgICAgICAgY29uc3QgaW50IG1pbl9jYl93aWR0aCAgICAgID0gZmMtPnBzLnBwcy0+ bWluX2NiX3dpZHRoOworICAgICAgICAgICAgY29uc3QgaW50IHgwYiAgICAgICAgICAgICAgID0g YXZfbW9kX3VpbnRwMih4MCwgc3BzLT5jdGJfbG9nMl9zaXplX3kpOworICAgICAgICAgICAgY29u c3QgaW50IHkwYiAgICAgICAgICAgICAgID0gYXZfbW9kX3VpbnRwMih5MCwgc3BzLT5jdGJfbG9n Ml9zaXplX3kpOworICAgICAgICAgICAgY29uc3QgaW50IHhfY2IgICAgICAgICAgICAgID0geDAg Pj4gc3BzLT5taW5fY2JfbG9nMl9zaXplX3k7CisgICAgICAgICAgICBjb25zdCBpbnQgeV9jYiAg ICAgICAgICAgICAgPSB5MCA+PiBzcHMtPm1pbl9jYl9sb2cyX3NpemVfeTsKKyAgICAgICAgICAg IGNvbnN0IGludCBhdmFpbGFibGVfYSAgICAgICA9IGxjLT5jdGJfdXBfZmxhZyB8fCB5MGI7Cisg ICAgICAgICAgICBjb25zdCBpbnQgYXZhaWxhYmxlX2wgICAgICAgPSBsYy0+Y3RiX2xlZnRfZmxh ZyB8fCB4MGI7CisgICAgICAgICAgICBjb25zdCBpbnQgZGEgICAgICAgICAgICAgICAgPSBjYl93 aWR0aCAgLyAoYXZhaWxhYmxlX2EgPyBTQU1QTEVfQ1RCKGZjLT50YWIuY2Jfd2lkdGhbY2hfdHlw ZV0sIHhfY2IsIHlfY2IgLSAxKSA6IDEpOworICAgICAgICAgICAgY29uc3QgaW50IGRsICAgICAg ICAgICAgICAgID0gY2JfaGVpZ2h0IC8gKGF2YWlsYWJsZV9sID8gU0FNUExFX0NUQihmYy0+dGFi LmNiX2hlaWdodFtjaF90eXBlXSwgeF9jYiAtIDEsIHlfY2IpIDogMSk7CisKKyAgICAgICAgICAg IGlmIChkYSA9PSBkbCB8fCAhYXZhaWxhYmxlX2EgfHwgIWF2YWlsYWJsZV9sKQorICAgICAgICAg ICAgICAgIGluYyA9IDA7CisgICAgICAgICAgICBlbHNlIGlmIChkYSA8IGRsKQorICAgICAgICAg ICAgICAgIGluYyA9IDE7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaW5jID0g MjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gR0VUX0NBQkFDKE1UVF9TUExJVF9DVV9WRVJU SUNBTF9GTEFHICsgaW5jKTsKKyAgICB9CisgICAgcmV0dXJuICEoYS0+YnRoIHx8IGEtPnR0aCk7 Cit9CisKK3N0YXRpYyBpbnQgbXR0X3NwbGl0X2N1X2JpbmFyeV9mbGFnX2RlY29kZShWVkNMb2Nh bENvbnRleHQgKmxjLCBjb25zdCBpbnQgbXR0X3NwbGl0X2N1X3ZlcnRpY2FsX2ZsYWcsIGNvbnN0 IGludCBtdHRfZGVwdGgpCit7CisgICAgaW50IGluYyA9ICgyICogbXR0X3NwbGl0X2N1X3ZlcnRp Y2FsX2ZsYWcpICsgKChtdHRfZGVwdGggPD0gMSkgPyAxIDogMCk7CisgICAgcmV0dXJuIEdFVF9D QUJBQyhNVFRfU1BMSVRfQ1VfQklOQVJZX0ZMQUcgKyBpbmMpOworfQorCitWVkNTcGxpdE1vZGUg ZmZfdnZjX3NwbGl0X21vZGUoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IHgwLCBjb25z dCBpbnQgeTAsIGNvbnN0IGludCBjYl93aWR0aCwgY29uc3QgaW50IGNiX2hlaWdodCwKKyAgICBj b25zdCBpbnQgY3F0X2RlcHRoLCBjb25zdCBpbnQgbXR0X2RlcHRoLCBjb25zdCBpbnQgY2hfdHlw ZSwgY29uc3QgVlZDQWxsb3dlZFNwbGl0ICphKQoreworICAgIGludCBhbGxvd19ub19xdCA9IGEt PmJ0diB8fCBhLT5idGggfHwgYS0+dHR2IHx8IGEtPnR0aDsKKyAgICBpbnQgc3BsaXRfcXRfZmxh ZzsKKyAgICBpbnQgbXR0X3NwbGl0X2N1X3ZlcnRpY2FsX2ZsYWc7CisgICAgaW50IG10dF9zcGxp dF9jdV9iaW5hcnlfZmxhZzsKKyAgICBjb25zdCBWVkNTcGxpdE1vZGUgbXR0X3NwbGl0X21vZGVz W10gPSB7CisgICAgICAgIFNQTElUX1RUX0hPUiwgU1BMSVRfQlRfSE9SLCBTUExJVF9UVF9WRVIs IFNQTElUX0JUX1ZFUiwKKyAgICB9OworICAgIGlmIChhbGxvd19ub19xdCAmJiBhLT5xdCkgewor ICAgICAgICBzcGxpdF9xdF9mbGFnID0gc3BsaXRfcXRfZmxhZ19kZWNvZGUobGMsIHgwLCB5MCwg Y2hfdHlwZSwgY3F0X2RlcHRoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzcGxpdF9xdF9mbGFn ID0gIWFsbG93X25vX3F0IHx8IGEtPnF0OworICAgIH0KKyAgICBpZiAoc3BsaXRfcXRfZmxhZykK KyAgICAgICAgcmV0dXJuIFNQTElUX1FUOworICAgIG10dF9zcGxpdF9jdV92ZXJ0aWNhbF9mbGFn ID0gbXR0X3NwbGl0X2N1X3ZlcnRpY2FsX2ZsYWdfZGVjb2RlKGxjLCB4MCwgeTAsIGNiX3dpZHRo LCBjYl9oZWlnaHQsIGNoX3R5cGUsIGEpOworICAgIGlmICgoYS0+YnR2ICYmIGEtPnR0diAmJiBt dHRfc3BsaXRfY3VfdmVydGljYWxfZmxhZykgfHwKKyAgICAgICAgKGEtPmJ0aCAmJiBhLT50dGgg JiYgIW10dF9zcGxpdF9jdV92ZXJ0aWNhbF9mbGFnKSkgeworICAgICAgICBtdHRfc3BsaXRfY3Vf YmluYXJ5X2ZsYWcgPSBtdHRfc3BsaXRfY3VfYmluYXJ5X2ZsYWdfZGVjb2RlKGxjLCBtdHRfc3Bs aXRfY3VfdmVydGljYWxfZmxhZywgbXR0X2RlcHRoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBp ZiAoIWEtPmJ0diAmJiAhYS0+YnRoKQorICAgICAgICAgICAgbXR0X3NwbGl0X2N1X2JpbmFyeV9m bGFnID0gMDsKKyAgICAgICAgZWxzZSBpZiAoIWEtPnR0diAmJiAhYS0+dHRoKQorICAgICAgICAg ICAgbXR0X3NwbGl0X2N1X2JpbmFyeV9mbGFnID0gMTsKKyAgICAgICAgZWxzZSBpZiAoYS0+YnRo ICYmIGEtPnR0dikKKyAgICAgICAgICAgIG10dF9zcGxpdF9jdV9iaW5hcnlfZmxhZyA9IDEgLSBt dHRfc3BsaXRfY3VfdmVydGljYWxfZmxhZzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbXR0 X3NwbGl0X2N1X2JpbmFyeV9mbGFnID0gbXR0X3NwbGl0X2N1X3ZlcnRpY2FsX2ZsYWc7CisgICAg fQorICAgIHJldHVybiBtdHRfc3BsaXRfbW9kZXNbKG10dF9zcGxpdF9jdV92ZXJ0aWNhbF9mbGFn IDw8IDEpICsgbXR0X3NwbGl0X2N1X2JpbmFyeV9mbGFnXTsKK30KKworaW50IGZmX3Z2Y19ub25f aW50ZXJfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgeDAsIGNvbnN0IGludCB5 MCwgY29uc3QgaW50IGNoX3R5cGUpCit7CisgICAgY29uc3QgVlZDRnJhbWVDb250ZXh0ICpmYyA9 IGxjLT5mYzsKKyAgICB1aW50OF90IGluYywgbGVmdCA9IDAsIHRvcCA9IDA7CisKKyAgICBnZXRf bGVmdF90b3AobGMsICZsZWZ0LCAmdG9wLCB4MCwgeTAsIGZjLT50YWIuY3BtW2NoX3R5cGVdLCBm Yy0+dGFiLmNwbVtjaF90eXBlXSk7CisgICAgaW5jID0gbGVmdCB8fCB0b3A7CisgICAgcmV0dXJu IEdFVF9DQUJBQyhOT05fSU5URVJfRkxBRyArIGluYyk7Cit9CisKK2ludCBmZl92dmNfcHJlZF9t b2RlX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGlzX2Nocm9tYSkKK3sKKyAg ICBjb25zdCBWVkNGcmFtZUNvbnRleHQgKmZjICAgID0gbGMtPmZjOworICAgIGNvbnN0IENvZGlu Z1VuaXQgKmN1ICAgICAgICA9IGxjLT5jdTsKKyAgICB1aW50OF90IGluYywgbGVmdCA9IDAsIHRv cCA9IDA7CisKKyAgICBnZXRfbGVmdF90b3AobGMsICZsZWZ0LCAmdG9wLCBjdS0+eDAsIGN1LT55 MCwgZmMtPnRhYi5jcG1baXNfY2hyb21hXSwgZmMtPnRhYi5jcG1baXNfY2hyb21hXSk7CisgICAg aW5jID0gbGVmdCB8fCB0b3A7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhQUkVEX01PREVfRkxBRyAr IGluYyk7Cit9CisKK2ludCBmZl92dmNfcHJlZF9tb2RlX3BsdF9mbGFnKFZWQ0xvY2FsQ29udGV4 dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhQUkVEX01PREVfUExUX0ZMQUcpOworfQor CitpbnQgZmZfdnZjX2ludHJhX2JkcGNtX2x1bWFfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQor eworICAgIHJldHVybiBHRVRfQ0FCQUMoSU5UUkFfQkRQQ01fTFVNQV9GTEFHKTsKK30KKworaW50 IGZmX3Z2Y19pbnRyYV9iZHBjbV9sdW1hX2Rpcl9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7 CisgICAgcmV0dXJuIEdFVF9DQUJBQyhJTlRSQV9CRFBDTV9MVU1BX0RJUl9GTEFHKTsKK30KKwor aW50IGZmX3Z2Y19pbnRyYV9iZHBjbV9jaHJvbWFfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQor eworICAgIHJldHVybiBHRVRfQ0FCQUMoSU5UUkFfQkRQQ01fQ0hST01BX0ZMQUcpOworfQorCitp bnQgZmZfdnZjX2ludHJhX2JkcGNtX2Nocm9tYV9kaXJfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxj KQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoSU5UUkFfQkRQQ01fQ0hST01BX0RJUl9GTEFHKTsK K30KKworaW50IGZmX3Z2Y19jdV9za2lwX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3Qg dWludDhfdCAqY3Vfc2tpcF9mbGFnKQoreworICAgIGNvbnN0IGludCBpbmMgPSBnZXRfaW5jKGxj LCBjdV9za2lwX2ZsYWcpOworICAgIHJldHVybiBHRVRfQ0FCQUMoQ1VfU0tJUF9GTEFHICsgaW5j KTsKK30KKworaW50IGZmX3Z2Y19wcmVkX21vZGVfaWJjX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICps YywgY29uc3QgaW50IGlzX2Nocm9tYSkKK3sKKyAgICBjb25zdCBWVkNGcmFtZUNvbnRleHQgKmZj ID0gbGMtPmZjOworICAgIGNvbnN0IENvZGluZ1VuaXQgKmN1ICAgICAgICA9IGxjLT5jdTsKKyAg ICB1aW50OF90IGxlZnRfbW9kZSA9IE1PREVfSU5URVIsIHRvcF9tb2RlID0gTU9ERV9JTlRFUjsK KyAgICBpbnQgaW5jOworCisgICAgZ2V0X2xlZnRfdG9wKGxjLCAmbGVmdF9tb2RlLCAmdG9wX21v ZGUsIGN1LT54MCwgY3UtPnkwLCBmYy0+dGFiLmNwbVtpc19jaHJvbWFdLCBmYy0+dGFiLmNwbVtp c19jaHJvbWFdKTsKKyAgICBpbmMgPSAobGVmdF9tb2RlID09IE1PREVfSUJDKSArICh0b3BfbW9k ZSA9PSBNT0RFX0lCQyk7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhQUkVEX01PREVfSUJDX0ZMQUcg KyBpbmMpOworfQorCitpbnQgZmZfdnZjX2ludHJhX21pcF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAq bGMsIGNvbnN0IHVpbnQ4X3QgKmludHJhX21pcF9mbGFnKQoreworICAgIGNvbnN0IGludCB3ICAg ICA9IGxjLT5jdS0+Y2Jfd2lkdGg7CisgICAgY29uc3QgaW50IGggICAgID0gbGMtPmN1LT5jYl9o ZWlnaHQ7CisgICAgY29uc3QgaW50IGluYyAgID0gICh3ID4gaCAqIDIgfHwgaCA+IHcgKiAyKSA/ IDMgOiBnZXRfaW5jKGxjLCBpbnRyYV9taXBfZmxhZyk7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhJ TlRSQV9NSVBfRkxBRyArIGluYyk7Cit9CisKK2ludCBmZl92dmNfaW50cmFfbWlwX3RyYW5zcG9z ZWRfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiB2dmNfZ2V0X2NhYmFj X2J5cGFzcygmbGMtPmVwLT5jYyk7Cit9CisKK2ludCBmZl92dmNfaW50cmFfbWlwX21vZGUoVlZD TG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBjb25zdCBpbnQgdyAgICAgPSBsYy0+Y3UtPmNiX3dp ZHRoOworICAgIGNvbnN0IGludCBoICAgICA9IGxjLT5jdS0+Y2JfaGVpZ2h0OworICAgIGNvbnN0 IGludCBjX21heCA9ICh3ID09IDQgJiYgaCA9PSA0KSA/IDE1IDoKKyAgICAgICAgKCh3ID09IDQg fHwgaCA9PSA0KSB8fCAodyA9PSA4ICYmIGggPT0gOCkpID8gNzogNTsKKyAgICByZXR1cm4gdHJ1 bmNhdGVkX2JpbmFyeV9kZWNvZGUobGMsIGNfbWF4KTsKK30KKworaW50IGZmX3Z2Y19pbnRyYV9s dW1hX3JlZl9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBpbnQgaTsKKyAgICBmb3Ig KGkgPSAwOyBpIDwgMjsgaSsrKSB7CisgICAgICAgIGlmICghR0VUX0NBQkFDKElOVFJBX0xVTUFf UkVGX0lEWCArIGkpKQorICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgfQorICAgIHJldHVybiBp OworfQorCitpbnQgZmZfdnZjX2ludHJhX3N1YnBhcnRpdGlvbnNfbW9kZV9mbGFnKFZWQ0xvY2Fs Q29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhJTlRSQV9TVUJQQVJUSVRJT05T X01PREVfRkxBRyk7Cit9CisKK2VudW0gSXNwVHlwZSBmZl92dmNfaXNwX3NwbGl0X3R5cGUoVlZD TG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGludHJhX3N1YnBhcnRpdGlvbnNfbW9kZV9mbGFn KQoreworICAgIGlmICghaW50cmFfc3VicGFydGl0aW9uc19tb2RlX2ZsYWcpCisgICAgICAgIHJl dHVybiBJU1BfTk9fU1BMSVQ7CisgICAgcmV0dXJuIDEgKyBHRVRfQ0FCQUMoSU5UUkFfU1VCUEFS VElUSU9OU19TUExJVF9GTEFHKTsKK30KKworaW50IGZmX3Z2Y19pbnRyYV9sdW1hX21wbV9mbGFn KFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhJTlRSQV9MVU1B X01QTV9GTEFHKTsKK30KKworaW50IGZmX3Z2Y19pbnRyYV9sdW1hX25vdF9wbGFuYXJfZmxhZyhW VkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgaW50cmFfc3VicGFydGl0aW9uc19tb2RlX2Zs YWcpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhJTlRSQV9MVU1BX05PVF9QTEFOQVJfRkxBRyAr ICFpbnRyYV9zdWJwYXJ0aXRpb25zX21vZGVfZmxhZyk7Cit9CisKK2ludCBmZl92dmNfaW50cmFf bHVtYV9tcG1faWR4KFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgaW50IGk7CisgICAgZm9y IChpID0gMDsgaSA8IDQgJiYgdnZjX2dldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpOyBpKysp CisgICAgICAgIC8qIG5vdGhpbmcgKi87CisgICAgcmV0dXJuIGk7Cit9CisKK2ludCBmZl92dmNf aW50cmFfbHVtYV9tcG1fcmVtYWluZGVyKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0 dXJuIHRydW5jYXRlZF9iaW5hcnlfZGVjb2RlKGxjLCA2MCk7Cit9CisKK2ludCBmZl92dmNfY2Ns bV9tb2RlX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFD KENDTE1fTU9ERV9GTEFHKTsKK30KKworaW50IGZmX3Z2Y19jY2xtX21vZGVfaWR4KFZWQ0xvY2Fs Q29udGV4dCAqbGMpCit7CisgICAgaWYgKCFHRVRfQ0FCQUMoQ0NMTV9NT0RFX0lEWCkpCisgICAg ICAgIHJldHVybiAwOworICAgIHJldHVybiB2dmNfZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5j YykgKyAxOworfQorCitpbnQgZmZfdnZjX2ludHJhX2Nocm9tYV9wcmVkX21vZGUoVlZDTG9jYWxD b250ZXh0ICpsYykKK3sKKyAgICBpZiAoIUdFVF9DQUJBQyhJTlRSQV9DSFJPTUFfUFJFRF9NT0RF KSkKKyAgICAgICAgcmV0dXJuIDQ7CisgICAgcmV0dXJuICh2dmNfZ2V0X2NhYmFjX2J5cGFzcygm bGMtPmVwLT5jYykgPDwgMSkgfCB2dmNfZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7Cit9 CisKK2ludCBmZl92dmNfZ2VuZXJhbF9tZXJnZV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7 CisgICAgcmV0dXJuIEdFVF9DQUJBQyhHRU5FUkFMX01FUkdFX0ZMQUcpOworfQorCitzdGF0aWMg aW50IGdldF9pbnRlcl9mbGFnX2luYyhWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgeDAs IGNvbnN0IGludCB5MCkKK3sKKyAgICB1aW50OF90IGxlZnRfbWVyZ2UgPSAwLCAgdG9wX21lcmdl ID0gMDsKKyAgICB1aW50OF90IGxlZnRfYWZmaW5lID0gMCwgdG9wX2FmZmluZSA9IDA7CisgICAg Y29uc3QgVlZDRnJhbWVDb250ZXh0ICpmYyA9IGxjLT5mYzsKKworICAgIGdldF9sZWZ0X3RvcChs YywgJmxlZnRfbWVyZ2UsICZ0b3BfbWVyZ2UsIHgwLCB5MCwgZmMtPnRhYi5tc2YsIGZjLT50YWIu bXNmKTsKKyAgICBnZXRfbGVmdF90b3AobGMsICZsZWZ0X2FmZmluZSwgJnRvcF9hZmZpbmUsIHgw LCB5MCwgZmMtPnRhYi5pYWYsIGZjLT50YWIuaWFmKTsKKyAgICByZXR1cm4gKGxlZnRfbWVyZ2Ug fHwgbGVmdF9hZmZpbmUpICsgKHRvcF9tZXJnZSArIHRvcF9hZmZpbmUpOworfQorCitpbnQgZmZf dnZjX21lcmdlX3N1YmJsb2NrX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBjb25z dCBpbnQgaW5jID0gZ2V0X2ludGVyX2ZsYWdfaW5jKGxjLCBsYy0+Y3UtPngwLCBsYy0+Y3UtPnkw KTsKKyAgICByZXR1cm4gR0VUX0NBQkFDKE1FUkdFX1NVQkJMT0NLX0ZMQUcgKyBpbmMpOworfQor CitpbnQgZmZfdnZjX21lcmdlX3N1YmJsb2NrX2lkeChWVkNMb2NhbENvbnRleHQgKmxjLCBjb25z dCBpbnQgbWF4X251bV9zdWJibG9ja19tZXJnZV9jYW5kKQoreworICAgIGludCBpOworICAgIGlm ICghR0VUX0NBQkFDKE1FUkdFX1NVQkJMT0NLX0lEWCkpCisgICAgICAgIHJldHVybiAwOworICAg IGZvciAoaSA9IDE7IGkgPCBtYXhfbnVtX3N1YmJsb2NrX21lcmdlX2NhbmQgLSAxICYmIHZ2Y19n ZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsgaSsrKQorICAgICAgICAvKiBub3RoaW5nICov OworICAgIHJldHVybiBpOworfQorCitpbnQgZmZfdnZjX3JlZ3VsYXJfbWVyZ2VfZmxhZyhWVkNM b2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgY3Vfc2tpcF9mbGFnKQoreworICAgIGludCBpbmMg PSAhY3Vfc2tpcF9mbGFnOworICAgIHJldHVybiBHRVRfQ0FCQUMoUkVHVUxBUl9NRVJHRV9GTEFH ICsgaW5jKTsKK30KKworaW50IGZmX3Z2Y19tbXZkX21lcmdlX2ZsYWcoVlZDTG9jYWxDb250ZXh0 ICpsYykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKE1NVkRfTUVSR0VfRkxBRyk7Cit9CisKK2lu dCBmZl92dmNfbW12ZF9jYW5kX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1 cm4gR0VUX0NBQkFDKE1NVkRfQ0FORF9GTEFHKTsKK30KKworc3RhdGljIGludCBtbXZkX2Rpc3Rh bmNlX2lkeF9kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBpbnQgaTsKKyAgICBp ZiAoIUdFVF9DQUJBQyhNTVZEX0RJU1RBTkNFX0lEWCkpCisgICAgICAgIHJldHVybiAwOworICAg IGZvciAoaSA9IDE7IGkgPCA3ICYmIHZ2Y19nZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsg aSsrKQorICAgICAgICAvKiBub3RoaW5nICovOworICAgIHJldHVybiBpOworfQorCitzdGF0aWMg aW50IG1tdmRfZGlyZWN0aW9uX2lkeF9kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAg ICByZXR1cm4gKHZ2Y19nZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKSA8PCAxKSB8IHZ2Y19n ZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsKK30KKwordm9pZCBmZl92dmNfbW12ZF9vZmZz ZXRfY29kaW5nKFZWQ0xvY2FsQ29udGV4dCAqbGMsIE12ICptbXZkX29mZnNldCwgY29uc3QgaW50 IHBoX21tdmRfZnVsbHBlbF9vbmx5X2ZsYWcpCit7CisgICAgY29uc3QgaW50IHNoaWZ0ID0gcGhf bW12ZF9mdWxscGVsX29ubHlfZmxhZyA/IDQgOiAyOworICAgIGNvbnN0IGludCBtbXZkX2Rpc3Rh bmNlID0gMSA8PCAobW12ZF9kaXN0YW5jZV9pZHhfZGVjb2RlKGxjKSArIHNoaWZ0KTsKKyAgICBj b25zdCBpbnQgbW12ZF9kaXJlY3Rpb25faWR4ID0gbW12ZF9kaXJlY3Rpb25faWR4X2RlY29kZShs Yyk7CisgICAgY29uc3QgaW50IG1tdmRfc2lnbnNbXVsyXSA9IHsgezEsIDB9LCB7LTEsIDB9LCB7 MCwgMX0sIHswLCAtMX0gfTsKKyAgICBtbXZkX29mZnNldC0+eCA9IG1tdmRfZGlzdGFuY2UgKiBt bXZkX3NpZ25zW21tdmRfZGlyZWN0aW9uX2lkeF1bMF07CisgICAgbW12ZF9vZmZzZXQtPnkgPSBt bXZkX2Rpc3RhbmNlICogbW12ZF9zaWduc1ttbXZkX2RpcmVjdGlvbl9pZHhdWzFdOworfQorCitz dGF0aWMgUHJlZE1vZGUgZ2V0X2x1bWFfcHJlZF9tb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7 CisgICAgY29uc3QgVlZDRnJhbWVDb250ZXh0ICpmYyAgPSBsYy0+ZmM7CisgICAgY29uc3QgQ29k aW5nVW5pdCAqY3UgPSBsYy0+Y3U7CisgICAgUHJlZE1vZGUgcHJlZF9tb2RlOworICAgIGlmIChj dS0+dHJlZV90eXBlICE9IERVQUxfVFJFRV9DSFJPTUEpIHsKKyAgICAgICAgcHJlZF9tb2RlID0g Y3UtPnByZWRfbW9kZTsKKyAgICB9IGVsc2UgeworICAgICAgICBjb25zdCBpbnQgeF9jYiAgICAg ICAgICAgPSBjdS0+eDAgPj4gZmMtPnBzLnNwcy0+bWluX2NiX2xvZzJfc2l6ZV95OworICAgICAg ICBjb25zdCBpbnQgeV9jYiAgICAgICAgICAgPSBjdS0+eTAgPj4gZmMtPnBzLnNwcy0+bWluX2Ni X2xvZzJfc2l6ZV95OworICAgICAgICBjb25zdCBpbnQgbWluX2NiX3dpZHRoICAgPSBmYy0+cHMu cHBzLT5taW5fY2Jfd2lkdGg7CisgICAgICAgIHByZWRfbW9kZSA9IFNBTVBMRV9DVEIoZmMtPnRh Yi5jcG1bMF0sIHhfY2IsIHlfY2IpOworICAgIH0KKyAgICByZXR1cm4gcHJlZF9tb2RlOworfQor CitpbnQgZmZfdnZjX21lcmdlX2lkeChWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIGNvbnN0 IFZWQ1NQUyAqc3BzID0gbGMtPmZjLT5wcy5zcHM7CisgICAgY29uc3QgaW50IGlzX2liYyA9IGdl dF9sdW1hX3ByZWRfbW9kZShsYykgPT0gTU9ERV9JQkM7CisgICAgY29uc3QgaW50IGNfbWF4ID0g KGlzX2liYyA/IHNwcy0+bWF4X251bV9pYmNfbWVyZ2VfY2FuZCA6IHNwcy0+bWF4X251bV9tZXJn ZV9jYW5kKSAtIDE7CisgICAgaW50IGk7CisKKyAgICBpZiAoIUdFVF9DQUJBQyhNRVJHRV9JRFgp KQorICAgICAgICByZXR1cm4gMDsKKworICAgIGZvciAoaSA9IDE7IGkgPCBjX21heCAmJiB2dmNf Z2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7IGkrKykKKyAgICAgICAgLyogbm90aGluZyAq LzsKKyAgICByZXR1cm4gaTsKK30KKworaW50IGZmX3Z2Y19tZXJnZV9ncG1fcGFydGl0aW9uX2lk eChWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIGludCBpID0gMDsKKworICAgIGZvciAoaW50 IGogPSAwOyBqIDwgNjsgaisrKQorICAgICAgICBpID0gKGkgPDwgMSkgfCB2dmNfZ2V0X2NhYmFj X2J5cGFzcygmbGMtPmVwLT5jYyk7CisKKyAgICByZXR1cm4gaTsKK30KKworaW50IGZmX3Z2Y19t ZXJnZV9ncG1faWR4KFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCBpZHgpCit7CisgICAg Y29uc3QgaW50IGNfbWF4ID0gbGMtPmZjLT5wcy5zcHMtPm1heF9udW1fZ3BtX21lcmdlX2NhbmQg LSBpZHggLSAxOworICAgIGludCBpOworCisgICAgaWYgKCFHRVRfQ0FCQUMoTUVSR0VfSURYKSkK KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBmb3IgKGkgPSAxOyBpIDwgY19tYXggJiYgdnZjX2dl dF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpOyBpKyspCisgICAgICAgIC8qIG5vdGhpbmcgKi87 CisKKyAgICByZXR1cm4gaTsKK30KKworaW50IGZmX3Z2Y19jaWlwX2ZsYWcoVlZDTG9jYWxDb250 ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKENJSVBfRkxBRyk7Cit9CisKK1ByZWRG bGFnIGZmX3Z2Y19wcmVkX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGlzX2Ip Cit7CisgICAgY29uc3QgaW50IHcgPSBsYy0+Y3UtPmNiX3dpZHRoOworICAgIGNvbnN0IGludCBo ID0gbGMtPmN1LT5jYl9oZWlnaHQ7CisgICAgaWYgKCFpc19iKQorICAgICAgICByZXR1cm4gIFBG X0wwOworICAgIGlmICh3ICsgaCA+IDEyKSB7CisgICAgICAgIGNvbnN0IGludCBsb2cyID0gYXZf bG9nMih3KSArIGF2X2xvZzIoaCk7CisgICAgICAgIGNvbnN0IGludCBpbmMgPSA3IC0gKCgxICsg bG9nMik+PjEpOworICAgICAgICBpZiAoR0VUX0NBQkFDKElOVEVSX1BSRURfSURDICsgaW5jKSkK KyAgICAgICAgICAgIHJldHVybiBQRl9CSTsKKyAgICB9CisgICAgcmV0dXJuIFBGX0wwICsgR0VU X0NBQkFDKElOVEVSX1BSRURfSURDICsgNSk7Cit9CisKK2ludCBmZl92dmNfaW50ZXJfYWZmaW5l X2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBjb25zdCBpbnQgaW5jID0gZ2V0X2lu dGVyX2ZsYWdfaW5jKGxjLCBsYy0+Y3UtPngwLCBsYy0+Y3UtPnkwKTsKKyAgICByZXR1cm4gR0VU X0NBQkFDKElOVEVSX0FGRklORV9GTEFHICsgaW5jKTsKK30KKworaW50IGZmX3Z2Y19jdV9hZmZp bmVfdHlwZV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJB QyhDVV9BRkZJTkVfVFlQRV9GTEFHKTsKK30KKworaW50IGZmX3Z2Y19zeW1fbXZkX2ZsYWcoVlZD TG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKFNZTV9NVkRfRkxBRyk7 Cit9CisKK2ludCBmZl92dmNfcmVmX2lkeF9seChWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCB1 aW50OF90IG5iX3JlZnMpCit7CisgICAgY29uc3QgaW50IGNfbWF4ID0gbmJfcmVmcyAtIDE7Cisg ICAgY29uc3QgaW50IG1heF9jdHggPSBGRk1JTihjX21heCwgMik7CisgICAgaW50IGkgPSAwOwor CisgICAgd2hpbGUgKGkgPCBtYXhfY3R4ICYmIEdFVF9DQUJBQyhSRUZfSURYX0xYICsgaSkpCisg ICAgICAgIGkrKzsKKyAgICBpZiAoaSA9PSAyKSB7CisgICAgICAgIHdoaWxlIChpIDwgY19tYXgg JiYgdnZjX2dldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpKQorICAgICAgICAgICAgaSsrOwor ICAgIH0KKyAgICByZXR1cm4gaTsKK30KKworaW50IGZmX3Z2Y19hYnNfbXZkX2dyZWF0ZXIwX2Zs YWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKEFCU19NVkRf R1JFQVRFUjBfRkxBRyk7Cit9CisKK2ludCBmZl92dmNfYWJzX212ZF9ncmVhdGVyMV9mbGFnKFZW Q0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhBQlNfTVZEX0dSRUFU RVIxX0ZMQUcpOworfQorCitpbnQgZmZfdnZjX2Fic19tdmRfbWludXMyKFZWQ0xvY2FsQ29udGV4 dCAqbGMpCit7CisgICAgcmV0dXJuIGxpbWl0ZWRfa3RoX29yZGVyX2Vna19kZWNvZGUoJmxjLT5l cC0+Y2MsIDEsIDE1LCAxNyk7Cit9CisKK2ludCBmZl92dmNfbXZkX3NpZ25fZmxhZyhWVkNMb2Nh bENvbnRleHQgKmxjKQoreworICAgIHJldHVybiB2dmNfZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVw LT5jYyk7Cit9CisKK2ludCBmZl92dmNfbXZwX2x4X2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykK K3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKE1WUF9MWF9GTEFHKTsKK30KKworc3RhdGljIGludCBh bXZyX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGludGVyX2FmZmluZV9mbGFn KQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoQU1WUl9GTEFHICsgaW50ZXJfYWZmaW5lX2ZsYWcp OworfQorCitzdGF0aWMgaW50IGFtdnJfcHJlY2lzaW9uX2lkeChWVkNMb2NhbENvbnRleHQgKmxj LCBjb25zdCBpbnQgaW5jLCBjb25zdCBpbnQgY19tYXgpCit7CisgICAgaW50IGkgPSAwOworICAg IGlmICghR0VUX0NBQkFDKEFNVlJfUFJFQ0lTSU9OX0lEWCArIGluYykpCisgICAgICAgIHJldHVy biAwOworICAgIGkrKzsKKyAgICBpZiAoaSA8IGNfbWF4ICYmIEdFVF9DQUJBQyhBTVZSX1BSRUNJ U0lPTl9JRFggKyAxKSkKKyAgICAgICAgaSsrOworICAgIHJldHVybiBpOworfQorCitpbnQgZmZf dnZjX2FtdnJfc2hpZnQoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGludGVyX2FmZmlu ZV9mbGFnLAorICAgIGNvbnN0IFByZWRNb2RlIHByZWRfbW9kZSwgY29uc3QgaW50IGhhc19hbXZy X2ZsYWcpCit7CisgICAgaW50IGFtdnJfc2hpZnQgPSAyOworICAgIGlmIChoYXNfYW12cl9mbGFn KSB7CisgICAgICAgIGlmIChhbXZyX2ZsYWcobGMsIGludGVyX2FmZmluZV9mbGFnKSkgeworICAg ICAgICAgICAgaW50IGlkeDsKKyAgICAgICAgICAgIGlmIChpbnRlcl9hZmZpbmVfZmxhZykgewor ICAgICAgICAgICAgICAgIGlkeCA9IGFtdnJfcHJlY2lzaW9uX2lkeChsYywgMiwgMSk7CisgICAg ICAgICAgICAgICAgYW12cl9zaGlmdCA9IGlkeCAqIDQ7CisgICAgICAgICAgICB9IGVsc2UgaWYg KHByZWRfbW9kZSA9PSBNT0RFX0lCQykgeworICAgICAgICAgICAgICAgIGlkeCA9IGFtdnJfcHJl Y2lzaW9uX2lkeChsYywgMSwgMSk7CisgICAgICAgICAgICAgICAgYW12cl9zaGlmdCA9IDQgKyBp ZHggKiAyOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzdGF0aWMgY29u c3QgaW50IHNoaWZ0c1tdID0gezMsIDQsIDZ9OworICAgICAgICAgICAgICAgIGlkeCA9IGFtdnJf cHJlY2lzaW9uX2lkeChsYywgMCwgMik7CisgICAgICAgICAgICAgICAgYW12cl9zaGlmdCA9IHNo aWZ0c1tpZHhdOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBh bXZyX3NoaWZ0OworfQorCitpbnQgZmZfdnZjX2Jjd19pZHgoVlZDTG9jYWxDb250ZXh0ICpsYywg Y29uc3QgaW50IG5vX2JhY2t3YXJkX3ByZWRfZmxhZykKK3sKKyAgICBjb25zdCBpbnQgY19tYXgg PSBub19iYWNrd2FyZF9wcmVkX2ZsYWcgPyA0IDogMjsKKyAgICBpbnQgaSA9IDE7CisgICAgaWYg KCFHRVRfQ0FCQUMoQkNXX0lEWCkpCisgICAgICAgIHJldHVybiAwOworICAgIHdoaWxlIChpIDwg Y19tYXggJiYgdnZjX2dldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpKQorICAgICAgICBpKys7 CisgICAgcmV0dXJuIGk7Cit9CisKK2ludCBmZl92dmNfdHVfY2JfY29kZWRfZmxhZyhWVkNMb2Nh bENvbnRleHQgKmxjKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoVFVfQ0JfQ09ERURfRkxBRyAr IGxjLT5jdS0+YmRwY21fZmxhZ1sxXSk7Cit9CisKK2ludCBmZl92dmNfdHVfY3JfY29kZWRfZmxh ZyhWVkNMb2NhbENvbnRleHQgKmxjLCBpbnQgdHVfY2JfY29kZWRfZmxhZykKK3sKKyAgICByZXR1 cm4gR0VUX0NBQkFDKFRVX0NSX0NPREVEX0ZMQUcgKyAobGMtPmN1LT5iZHBjbV9mbGFnWzFdID8g MiA6IHR1X2NiX2NvZGVkX2ZsYWcpKTsKK30KKworaW50IGZmX3Z2Y190dV95X2NvZGVkX2ZsYWco VlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBjb25zdCBDb2RpbmdVbml0ICpjdSA9IGxjLT5j dTsKKyAgICBpbnQgaW5jOworICAgIGlmIChjdS0+YmRwY21fZmxhZ1swXSkKKyAgICAgICAgaW5j ID0gMTsKKyAgICBlbHNlIGlmIChjdS0+aXNwX3NwbGl0X3R5cGUgPT0gSVNQX05PX1NQTElUKQor ICAgICAgICBpbmMgPSAwOworICAgIGVsc2UKKyAgICAgICAgaW5jID0gMiArIGxjLT5wYXJzZS5w cmV2X3R1X2NiZl95OworICAgIGxjLT5wYXJzZS5wcmV2X3R1X2NiZl95ID0gR0VUX0NBQkFDKFRV X1lfQ09ERURfRkxBRyArIGluYyk7CisgICAgcmV0dXJuIGxjLT5wYXJzZS5wcmV2X3R1X2NiZl95 OworfQorCitpbnQgZmZfdnZjX2N1X3FwX2RlbHRhX2FicyhWVkNMb2NhbENvbnRleHQgKmxjKQor eworICAgIGludCB2LCBpLCBrOworICAgIGlmICghR0VUX0NBQkFDKENVX1FQX0RFTFRBX0FCUykp CisgICAgICAgIHJldHVybiAwOworCisgICAgLy8gcHJlZml4VmFsCisgICAgZm9yICh2ID0gMTsg diA8IDUgJiYgR0VUX0NBQkFDKENVX1FQX0RFTFRBX0FCUyArIDEpOyB2KyspCisgICAgICAgIC8q IG5vdGhpbmcgKi87CisgICAgaWYgKHYgPCA1KQorICAgICAgICByZXR1cm4gdjsKKworICAgIC8v IDkuMy4zLjUgay10aCBvcmRlciBFeHAtR29sb21iIGJpbmFyaXphdGlvbiBwcm9jZXNzCisgICAg Ly8gc3VmZml4VmFsCisKKyAgICAvLyBDdVFwRGVsdGFWYWwgc2hhbGwgaW4gdGhlIHJhbmdlIG9m IOKIkiggMzIgKyBRcEJkT2Zmc2V0IC8gMiApIHRvICsoIDMxICsgUXBCZE9mZnNldCAvIDIgKQor ICAgIC8vIHNvIGsgPSA2IHNob3VsZCBlbm91Z2gKKyAgICBmb3IgKGsgPSAwOyBrIDwgNiAmJiB2 dmNfZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7IGsrKykKKyAgICAgICAgLyogbm90aGlu ZyAqLzsKKyAgICBpID0gKDEgPDwgaykgLSAxOworICAgIHYgPSAwOworICAgIHdoaWxlIChrLS0p CisgICAgICAgIHYgPSAodiA8PCAxKSArIHZ2Y19nZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNj KTsKKyAgICB2ICs9IGk7CisKKyAgICByZXR1cm4gdiArIDU7Cit9CisKK2ludCBmZl92dmNfY3Vf cXBfZGVsdGFfc2lnbl9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIHZ2 Y19nZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsKK30KKworaW50IGZmX3Z2Y19jdV9jaHJv bWFfcXBfb2Zmc2V0X2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gR0VU X0NBQkFDKENVX0NIUk9NQV9RUF9PRkZTRVRfRkxBRyk7Cit9CitpbnQgZmZfdnZjX2N1X2Nocm9t YV9xcF9vZmZzZXRfaWR4KFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgY29uc3QgaW50IGNf bWF4ID0gbGMtPmZjLT5wcy5wcHMtPnItPnBwc19jaHJvbWFfcXBfb2Zmc2V0X2xpc3RfbGVuX21p bnVzMTsKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgY19tYXggJiYgR0VUX0NBQkFD KENVX0NIUk9NQV9RUF9PRkZTRVRfSURYKTsgaSsrKQorICAgICAgICAvKiBub3RoaW5nICovOwor ICAgIHJldHVybiBpOworfQorCitzdGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgbGFzdF9zaWdu aWZpY2FudF9jb2VmZl94eV9wcmVmaXgoVlZDTG9jYWxDb250ZXh0ICpsYywKKyAgICBjb25zdCBp bnQgbG9nMl90Yl9zaXplLCBjb25zdCBpbnQgbG9nMl96b190Yl9zaXplLCBjb25zdCBpbnQgY19p ZHgsIGNvbnN0IGludCBjdHgpCit7CisgICAgaW50IGkgPSAwOworICAgIGludCBtYXggPSAobG9n Ml96b190Yl9zaXplIDw8IDEpIC0gMTsKKyAgICBpbnQgY3R4X29mZnNldCwgY3R4X3NoaWZ0Owor ICAgIGlmICghbG9nMl90Yl9zaXplKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoIWNfaWR4 KSB7CisgICAgICAgIGNvbnN0IGludCBvZmZzZXRfeVtdID0gezAsIDAsIDMsIDYsIDEwLCAxNX07 CisgICAgICAgIGN0eF9vZmZzZXQgPSBvZmZzZXRfeVtsb2cyX3RiX3NpemUgLSAxXTsKKyAgICAg ICAgY3R4X3NoaWZ0ICA9IChsb2cyX3RiX3NpemUgKyAxKSA+PiAyOworICAgIH0gZWxzZSB7Cisg ICAgICAgIGNvbnN0IGludCBzaGlmdHNbXSA9IHswLCAwLCAwLCAxLCAyLCAyLCAyfTsKKyAgICAg ICAgY3R4X29mZnNldCA9IDIwOworICAgICAgICBjdHhfc2hpZnQgID0gc2hpZnRzW2xvZzJfdGJf c2l6ZV07CisgICAgfQorICAgIHdoaWxlIChpIDwgbWF4ICYmIEdFVF9DQUJBQyhjdHggKyAoaSA+ PiBjdHhfc2hpZnQpICsgY3R4X29mZnNldCkpCisgICAgICAgIGkrKzsKKyAgICByZXR1cm4gaTsK K30KKworc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZf eF9wcmVmaXhfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsCisgICAgY29uc3QgaW50IGxvZzJf dGJfd2lkdGgsIGNvbnN0IGludCBsb2cyX3pvX3RiX3dpZHRoLCBjb25zdCBpbnQgY19pZHgpCit7 CisgICAgcmV0dXJuIGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeHlfcHJlZml4KGxjLCBsb2cyX3Ri X3dpZHRoLCBsb2cyX3pvX3RiX3dpZHRoLCBjX2lkeCwgTEFTVF9TSUdfQ09FRkZfWF9QUkVGSVgp OworfQorCitzdGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgbGFzdF9zaWduaWZpY2FudF9jb2Vm Zl95X3ByZWZpeF9kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYywKKyAgICBjb25zdCBpbnQgbG9n Ml90Yl9oZWlnaHQsIGNvbnN0IGludCBsb2cyX3pvX3RiX2hlaWdodCwgY29uc3QgaW50IGNfaWR4 KQoreworICAgIHJldHVybiBsYXN0X3NpZ25pZmljYW50X2NvZWZmX3h5X3ByZWZpeChsYywgbG9n Ml90Yl9oZWlnaHQsIGxvZzJfem9fdGJfaGVpZ2h0LCBjX2lkeCwgTEFTVF9TSUdfQ09FRkZfWV9Q UkVGSVgpOworfQorCitzdGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgbGFzdF9zaWdfY29lZmZf c3VmZml4X2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjLAorICAgIGNvbnN0IGludCBsYXN0X3Np Z25pZmljYW50X2NvZWZmX3lfcHJlZml4KQoreworICAgIGludCBpOworICAgIGNvbnN0IGludCBs ZW5ndGggPSAobGFzdF9zaWduaWZpY2FudF9jb2VmZl95X3ByZWZpeCA+PiAxKSAtIDE7CisgICAg aW50IHZhbHVlID0gdnZjX2dldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpOworCisgICAgZm9y IChpID0gMTsgaSA8IGxlbmd0aDsgaSsrKQorICAgICAgICB2YWx1ZSA9ICh2YWx1ZSA8PCAxKSB8 IHZ2Y19nZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsKKyAgICByZXR1cm4gdmFsdWU7Cit9 CisKK2ludCBmZl92dmNfdHVfam9pbnRfY2Jjcl9yZXNpZHVhbF9mbGFnKFZWQ0xvY2FsQ29udGV4 dCAqbGMsIGNvbnN0IGludCB0dV9jYl9jb2RlZF9mbGFnLCBjb25zdCBpbnQgdHVfY3JfY29kZWRf ZmxhZykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKFRVX0pPSU5UX0NCQ1JfUkVTSURVQUxfRkxB RyArIDIgKiB0dV9jYl9jb2RlZF9mbGFnICsgdHVfY3JfY29kZWRfZmxhZyAtIDEpOworfQorCitp bnQgZmZfdnZjX3RyYW5zZm9ybV9za2lwX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3Qg aW50IGluYykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKFRSQU5TRk9STV9TS0lQX0ZMQUcgKyBp bmMpOworfQorCisvLzkuMy40LjIuNyBEZXJpdmF0aW9uIHByb2Nlc3MgZm9yIHRoZSB2YXJpYWJs ZXMgbG9jTnVtU2lnLCBsb2NTdW1BYnNQYXNzMQorc3RhdGljIGludCBnZXRfbG9jYWxfc3VtKGNv bnN0IGludCAqbGV2ZWwsIGNvbnN0IGludCB3LCBjb25zdCBpbnQgaCwKKyAgICBjb25zdCBpbnQg eGMsIGNvbnN0IGludCB5YywgY29uc3QgaW50IGhpc3RfdmFsdWUpCit7CisgICAgaW50IGxvY19z dW0gPSAzICogaGlzdF92YWx1ZTsKKyAgICBsZXZlbCArPSB3ICogeWMgKyB4YzsKKyAgICBpZiAo eGMgPCB3IC0gMSkgeworICAgICAgICBsb2Nfc3VtICs9IGxldmVsWzFdOworICAgICAgICBpZiAo eGMgPCB3IC0gMikKKyAgICAgICAgICAgIGxvY19zdW0gKz0gbGV2ZWxbMl0gLSBoaXN0X3ZhbHVl OworICAgICAgICBpZiAoeWMgPCBoIC0gMSkKKyAgICAgICAgICAgIGxvY19zdW0gKz0gbGV2ZWxb dyArIDFdIC0gaGlzdF92YWx1ZTsKKyAgICB9CisgICAgaWYgKHljIDwgaCAtIDEpIHsKKyAgICAg ICAgbG9jX3N1bSArPSBsZXZlbFt3XTsKKyAgICAgICAgaWYgKHljIDwgaCAtIDIpCisgICAgICAg ICAgICBsb2Nfc3VtICs9IGxldmVsW3cgPDwgMV0gLSBoaXN0X3ZhbHVlOworICAgIH0KKyAgICBy ZXR1cm4gbG9jX3N1bTsKK30KKworLy85LjMuNC4yLjcgRGVyaXZhdGlvbiBwcm9jZXNzIGZvciB0 aGUgdmFyaWFibGVzIGxvY051bVNpZywgbG9jU3VtQWJzUGFzczEKK3N0YXRpYyBpbnQgZ2V0X2xv Y2FsX3N1bV90cyhjb25zdCBpbnQgKmxldmVsLCBjb25zdCBpbnQgdywgY29uc3QgaW50IGgsIGNv bnN0IGludCB4YywgY29uc3QgaW50IHljKQoreworICAgIGludCBsb2Nfc3VtID0gMDsKKyAgICBs ZXZlbCArPSB3ICogeWMgKyB4YzsKKyAgICBpZiAoeGMgPiAwKQorICAgICAgICBsb2Nfc3VtICs9 IGxldmVsWy0xXTsKKyAgICBpZiAoeWMgPiAwKQorICAgICAgICBsb2Nfc3VtICs9IGxldmVsWy13 XTsKKyAgICByZXR1cm4gbG9jX3N1bTsKK30KKworc3RhdGljIGludCBnZXRfZ3R4X2ZsYWdfaW5j KGNvbnN0IFJlc2lkdWFsQ29kaW5nKiByYywgY29uc3QgaW50IHhjLCBjb25zdCBpbnQgeWMsIGNv bnN0IGludCBsYXN0KQoreworICAgIGNvbnN0IFRyYW5zZm9ybUJsb2NrICp0YiA9IHJjLT50YjsK KyAgICBpbnQgaW5jOworICAgIGlmIChsYXN0KSB7CisgICAgICAgIGNvbnN0IGludCBpbmNzW10g PSB7MCwgMjEsIDIxfTsKKyAgICAgICAgaW5jID0gIGluY3NbdGItPmNfaWR4XTsKKyAgICB9IGVs c2UgeworICAgICAgICBjb25zdCBpbnQgZCA9IHhjICsgeWM7CisgICAgICAgIGNvbnN0IGludCBs b2NhbF9zdW1fc2lnID0gZ2V0X2xvY2FsX3N1bShyYy0+c2lnX2NvZWZmX2ZsYWcsCisgICAgICAg ICAgICAgICAgdGItPnRiX3dpZHRoLHRiLT50Yl9oZWlnaHQsIHhjLCB5YywgcmMtPmhpc3RfdmFs dWUpOworICAgICAgICBjb25zdCBpbnQgbG9jX3N1bV9hYnNfcGFzczEgPSBnZXRfbG9jYWxfc3Vt KHJjLT5hYnNfbGV2ZWxfcGFzczEsCisgICAgICAgICAgICAgICAgdGItPnRiX3dpZHRoLCB0Yi0+ dGJfaGVpZ2h0LCB4YywgeWMsIHJjLT5oaXN0X3ZhbHVlKTsKKyAgICAgICAgY29uc3QgaW50IG9m ZnNldCA9IEZGTUlOKGxvY19zdW1fYWJzX3Bhc3MxIC0gbG9jYWxfc3VtX3NpZywgNCk7CisKKyAg ICAgICAgaWYgKCF0Yi0+Y19pZHgpCisgICAgICAgICAgICBpbmMgPSAgMSArIG9mZnNldCArICgh ZCA/IDE1IDogKGQgPCAzID8gMTAgOiAoZCA8IDEwID8gNSA6IDApKSk7CisgICAgICAgIGVsc2UK KyAgICAgICAgICAgIGluYyA9IDIyICsgb2Zmc2V0ICsgKCFkID8gNSA6IDApOworICAgIH0KKyAg ICByZXR1cm4gaW5jOworfQorCitzdGF0aWMgaW50IGFic19sZXZlbF9ndHhfZmxhZ19kZWNvZGUo VlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGluYykKK3sKKyAgICByZXR1cm4gR0VUX0NB QkFDKEFCU19MRVZFTF9HVFhfRkxBRyArIGluYyk7Cit9CisKK3N0YXRpYyBpbnQgcGFyX2xldmVs X2ZsYWdfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCBpbmMpCit7CisgICAg cmV0dXJuIEdFVF9DQUJBQyhQQVJfTEVWRUxfRkxBRyArIGluYyk7Cit9CisKK3N0YXRpYyBpbnQg cGFyX2xldmVsX2ZsYWdfdHNfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgY29u c3QgaW50IGluYyA9IDMyOworICAgIHJldHVybiBHRVRfQ0FCQUMoUEFSX0xFVkVMX0ZMQUcgKyBp bmMpOworfQorCitzdGF0aWMgaW50IHNiX2NvZGVkX2ZsYWdfZGVjb2RlKFZWQ0xvY2FsQ29udGV4 dCAqbGMsIGNvbnN0IHVpbnQ4X3QgKnNiX2NvZGVkX2ZsYWcsCisgICAgY29uc3QgUmVzaWR1YWxD b2RpbmcgKnJjLCBjb25zdCBpbnQgeHMsIGNvbnN0IGludCB5cykKK3sKKyAgICBjb25zdCBIMjY2 UmF3U2xpY2VIZWFkZXIgKnJzaCAgID0gbGMtPnNjLT5zaC5yOworICAgIGNvbnN0IFRyYW5zZm9y bUJsb2NrICp0YiAgICAgICAgPSByYy0+dGI7CisgICAgY29uc3QgaW50IHcgICAgICAgICAgICAg ICAgICAgICA9IHJjLT53aWR0aF9pbl9zYnM7CisgICAgY29uc3QgaW50IGggICAgICAgICAgICAg ICAgICAgICA9IHJjLT5oZWlnaHRfaW5fc2JzOworICAgIGludCBpbmM7CisKKyAgICBpZiAodGIt PnRzICYmICFyc2gtPnNoX3RzX3Jlc2lkdWFsX2NvZGluZ19kaXNhYmxlZF9mbGFnKSB7CisgICAg ICAgIGNvbnN0IGludCBsZWZ0ID0geHMgPiAwID8gc2JfY29kZWRfZmxhZ1stMV0gOiAwOworICAg ICAgICBjb25zdCBpbnQgYWJvdmUgPSB5cyA+IDAgPyBzYl9jb2RlZF9mbGFnWy13XSA6IDA7Cisg ICAgICAgIGluYyA9IGxlZnQgKyBhYm92ZSArIDQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY29u c3QgaW50IHJpZ2h0ICA9ICh4cyA8IHcgLSAxKSA/IHNiX2NvZGVkX2ZsYWdbMV0gOiAwOworICAg ICAgICBjb25zdCBpbnQgYm90dG9tID0gKHlzIDwgaCAtIDEpID8gc2JfY29kZWRfZmxhZ1t3XSA6 IDA7CisgICAgICAgIGluYyA9IChyaWdodCB8IGJvdHRvbSkgKyAodGItPmNfaWR4ID8gMiA6IDAp OworICAgIH0KKyAgICByZXR1cm4gR0VUX0NBQkFDKFNCX0NPREVEX0ZMQUcgKyBpbmMpOworfQor CitzdGF0aWMgaW50IHNpZ19jb2VmZl9mbGFnX2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjLCBj b25zdCBSZXNpZHVhbENvZGluZyogcmMsIGNvbnN0IGludCB4YywgY29uc3QgaW50IHljKQorewor ICAgIGNvbnN0IEgyNjZSYXdTbGljZUhlYWRlciAqcnNoICAgPSBsYy0+c2MtPnNoLnI7CisgICAg Y29uc3QgVHJhbnNmb3JtQmxvY2sgKnRiICAgICAgICA9IHJjLT50YjsKKyAgICBpbnQgaW5jOwor CisgICAgaWYgKHRiLT50cyAmJiAhcnNoLT5zaF90c19yZXNpZHVhbF9jb2RpbmdfZGlzYWJsZWRf ZmxhZykgeworICAgICAgICBjb25zdCBpbnQgbG9jYWxfbnVtX3NpZyA9IGdldF9sb2NhbF9zdW1f dHMocmMtPnNpZ19jb2VmZl9mbGFnLCB0Yi0+dGJfd2lkdGgsIHRiLT50Yl9oZWlnaHQsIHhjLCB5 Yyk7CisgICAgICAgIGluYyA9IDYwICsgbG9jYWxfbnVtX3NpZzsKKyAgICB9IGVsc2UgeworICAg ICAgICBjb25zdCBpbnQgZCA9IHhjICsgeWM7CisgICAgICAgIGNvbnN0IGludCBsb2Nfc3VtX2Fi c19wYXNzMSA9IGdldF9sb2NhbF9zdW0ocmMtPmFic19sZXZlbF9wYXNzMSwKKyAgICAgICAgICAg ICAgICB0Yi0+dGJfd2lkdGgsIHRiLT50Yl9oZWlnaHQsIHhjLCB5YywgMCk7CisKKyAgICAgICAg aWYgKCF0Yi0+Y19pZHgpIHsKKyAgICAgICAgICAgIGluYyA9IDEyICogRkZNQVgoMCwgcmMtPnFz dGF0ZSAtIDEpICsgRkZNSU4oKGxvY19zdW1fYWJzX3Bhc3MxICsgMSkgPj4gMSwgMykgKyAoKGQg PCAyKSA/IDggOiAoZCA8IDUgPyA0IDogMCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg ICAgaW5jID0gMzYgKyA4ICogRkZNQVgoMCwgcmMtPnFzdGF0ZSAtIDEpICsgRkZNSU4oKGxvY19z dW1fYWJzX3Bhc3MxICsgMSkgPj4gMSwgMykgKyAoZCA8IDIgPyA0IDogMCk7CisgICAgICAgIH0K KyAgICB9CisgICAgcmV0dXJuIEdFVF9DQUJBQyhTSUdfQ09FRkZfRkxBRyArIGluYyk7Cit9CisK K3N0YXRpYyBpbnQgYWJzX2dldF9yaWNlX3BhcmFtKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0 IFJlc2lkdWFsQ29kaW5nKiByYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGludCB4YywgY29uc3QgaW50IHljLCBjb25zdCBpbnQgYmFzZV9sZXZlbCkKK3sKKyAgICBjb25z dCBWVkNTUFMgKnNwcyA9IGxjLT5mYy0+cHMuc3BzOworICAgIGNvbnN0IFRyYW5zZm9ybUJsb2Nr KiB0YiA9IHJjLT50YjsKKyAgICBjb25zdCBpbnQgcmljZV9wYXJhbXNbXSA9IHsKKyAgICAgICAg MCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMiwgMiwKKyAgICAgICAg MiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMywgMywgMywgMywKKyAgICB9Owor ICAgIGludCBsb2Nfc3VtX2FiczsKKyAgICBpbnQgc2hpZnRfdmFsOworCisgICAgbG9jX3N1bV9h YnMgPSBnZXRfbG9jYWxfc3VtKHJjLT5hYnNfbGV2ZWwsIHRiLT50Yl93aWR0aCwgdGItPnRiX2hl aWdodCwgeGMsCisgICAgICAgICAgICB5YywgcmMtPmhpc3RfdmFsdWUpOworCisgICAgaWYgKCFz cHMtPnItPnNwc19ycmNfcmljZV9leHRlbnNpb25fZmxhZykgeworICAgICAgICBzaGlmdF92YWwg PSAwOworICAgIH0gZWxzZSB7CisgICAgICAgIHNoaWZ0X3ZhbCA9IChhdl9sb2cyKEZGTUFYKEZG TUlOKGxvY19zdW1fYWJzLCAyMDQ4KSwgOCkpIC0gMykgJiB+MTsKKyAgICB9CisKKyAgICBsb2Nf c3VtX2FicyA9IGF2X2NsaXBfdWludHAyKChsb2Nfc3VtX2FicyA+PiBzaGlmdF92YWwpIC0gYmFz ZV9sZXZlbCAqIDUsIDUpOworCisgICAgcmV0dXJuIHJpY2VfcGFyYW1zW2xvY19zdW1fYWJzXSAr IHNoaWZ0X3ZhbDsKK30KKworc3RhdGljIGludCBhYnNfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAq bGMsIGNvbnN0IGludCBjX3JpY2VfcGFyYW0pCit7CisgICAgY29uc3QgVlZDU1BTICpzcHMgPSBs Yy0+ZmMtPnBzLnNwczsKKyAgICBjb25zdCBpbnQgTUFYX0JJTiA9IDY7CisgICAgaW50IHByZWZp eCA9IDA7CisgICAgaW50IHN1ZmZpeCA9IDA7CisgICAgaW50IGk7CisKKyAgICB3aGlsZSAocHJl Zml4IDwgTUFYX0JJTiAmJiB2dmNfZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYykpCisgICAg ICAgIHByZWZpeCsrOworICAgIGlmIChwcmVmaXggPCBNQVhfQklOKSB7CisgICAgICAgIGZvciAo aSA9IDA7IGkgPCBjX3JpY2VfcGFyYW07IGkrKykgeworICAgICAgICAgICAgc3VmZml4ID0gKHN1 ZmZpeCA8PCAxKSB8IHZ2Y19nZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsKKyAgICAgICAg fQorICAgIH0gZWxzZSB7CisgICAgICAgIHN1ZmZpeCA9IGxpbWl0ZWRfa3RoX29yZGVyX2Vna19k ZWNvZGUoJmxjLT5lcC0+Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY19yaWNlX3BhcmFtICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAyNiAtIHNwcy0+bG9nMl90cmFuc2Zvcm1fcmFuZ2UsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BzLT5sb2cyX3RyYW5zZm9y bV9yYW5nZSk7CisgICAgfQorICAgIHJldHVybiBzdWZmaXggKyAocHJlZml4IDw8IGNfcmljZV9w YXJhbSk7Cit9CisKK3N0YXRpYyBpbnQgYWJzX3JlbWFpbmRlcl9kZWNvZGUoVlZDTG9jYWxDb250 ZXh0ICpsYywgY29uc3QgUmVzaWR1YWxDb2RpbmcqIHJjLCBjb25zdCBpbnQgeGMsIGNvbnN0IGlu dCB5YykKK3sKKyAgICBjb25zdCBWVkNTUFMgKnNwcyAgICAgICAgICAgID0gbGMtPmZjLT5wcy5z cHM7CisgICAgY29uc3QgSDI2NlJhd1NsaWNlSGVhZGVyICpyc2ggPSBsYy0+c2MtPnNoLnI7Cisg ICAgY29uc3QgaW50IGJhc2VfbGV2ZWxbXVsyXVsyXSA9IHsKKyAgICAgICAgeyB7NCwgNH0sIHs0 LCA0fSB9LAorICAgICAgICB7IHszLCAyfSwgezIsIDF9IH0KKyAgICB9OworICAgIGNvbnN0IGlu dCBjX3JpY2VfcGFyYW0gPSBhYnNfZ2V0X3JpY2VfcGFyYW0obGMsIHJjLCB4YywgeWMsCisgICAg ICAgIGJhc2VfbGV2ZWxbc3BzLT5yLT5zcHNfcnJjX3JpY2VfZXh0ZW5zaW9uX2ZsYWddW3Nwcy0+ Yml0X2RlcHRoID4gMTJdW0lTX0kocnNoKV0pOworICAgIGNvbnN0IGludCByZW0gPSBhYnNfZGVj b2RlKGxjLCBjX3JpY2VfcGFyYW0pOworICAgIHJldHVybiByZW07Cit9CisKK3N0YXRpYyBpbnQg YWJzX3JlbWFpbmRlcl90c19kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgUmVzaWR1 YWxDb2RpbmcqIHJjLCBjb25zdCBpbnQgeGMsIGNvbnN0IGludCB5YykKK3sKKyAgICBjb25zdCBI MjY2UmF3U2xpY2VIZWFkZXIgKnJzaCA9IGxjLT5zYy0+c2gucjsKKyAgICBjb25zdCBpbnQgY19y aWNlX3BhcmFtID0gcnNoLT5zaF90c19yZXNpZHVhbF9jb2RpbmdfcmljZV9pZHhfbWludXMxICsg MTsKKyAgICBjb25zdCBpbnQgcmVtID0gYWJzX2RlY29kZShsYywgY19yaWNlX3BhcmFtKTsKKwor ICAgIHJldHVybiByZW07Cit9CisKK3N0YXRpYyBpbnQgY29lZmZfc2lnbl9mbGFnX2RlY29kZShW VkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiB2dmNfZ2V0X2NhYmFjX2J5cGFzcygm bGMtPmVwLT5jYyk7Cit9CisKKy8vOS4zLjQuMi4xMCBEZXJpdmF0aW9uIHByb2Nlc3Mgb2YgY3R4 SW5jIGZvciB0aGUgc3ludGF4IGVsZW1lbnQgY29lZmZfc2lnbl9mbGFnIGZvciB0cmFuc2Zvcm0g c2tpcCBtb2RlCitzdGF0aWMgaW50IGNvZWZmX3NpZ25fZmxhZ190c19kZWNvZGUoVlZDTG9jYWxD b250ZXh0ICpsYywgY29uc3QgQ29kaW5nVW5pdCAqY3UsIGNvbnN0IFJlc2lkdWFsQ29kaW5nICpy YywgY29uc3QgaW50IHhjLCBjb25zdCBpbnQgeWMpCit7CisgICAgY29uc3QgVHJhbnNmb3JtQmxv Y2sgKnRiICAgID0gcmMtPnRiOworICAgIGNvbnN0IGludCB3ICAgICAgICAgICAgICAgICA9IHRi LT50Yl93aWR0aDsKKyAgICBjb25zdCBpbnQgKmxldmVsICAgICAgICAgICAgPSByYy0+Y29lZmZf c2lnbl9sZXZlbCArIHljICogdyArIHhjOworICAgIGNvbnN0IGludCBsZWZ0X3NpZ24gICAgICAg ICA9ICh4YyA9PSAwKSA/IDAgOiBsZXZlbFstMV07CisgICAgY29uc3QgaW50IGFib3ZlX3NpZ24g ICAgICAgID0gKHljID09IDApID8gMCA6IGxldmVsWy13XTsKKyAgICBjb25zdCBpbnQgYmRwY21f ZmxhZyAgICAgICAgPSBjdS0+YmRwY21fZmxhZ1t0Yi0+Y19pZHhdOworICAgIGludCBpbmM7CisK KyAgICBpZiAobGVmdF9zaWduID09IC1hYm92ZV9zaWduKQorICAgICAgICBpbmMgPSBiZHBjbV9m bGFnID09IDAgPyAwIDogMzsKKyAgICBlbHNlIGlmIChsZWZ0X3NpZ24gPj0gMCAmJiBhYm92ZV9z aWduID49IDApCisgICAgICAgIGluYyA9IGJkcGNtX2ZsYWcgPT0gMCA/IDEgOiA0OworICAgIGVs c2UKKyAgICAgICAgaW5jID0gYmRwY21fZmxhZyA9PSAwID8gMiA6IDU7CisgICAgcmV0dXJuIEdF VF9DQUJBQyhDT0VGRl9TSUdOX0ZMQUcgKyBpbmMpOworfQorCitzdGF0aWMgaW50IGFic19sZXZl bF9ndDFfZmxhZ190c19kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgQ29kaW5nVW5p dCAqY3UsIGNvbnN0IFJlc2lkdWFsQ29kaW5nICpyYywgY29uc3QgaW50IHhjLCBjb25zdCBpbnQg eWMpCit7CisgICAgY29uc3QgVHJhbnNmb3JtQmxvY2sgKnRiID0gcmMtPnRiOworICAgIGNvbnN0 IGludCAqc2lnX2NvZWZmX2ZsYWcgPSByYy0+c2lnX2NvZWZmX2ZsYWcgKyB5YyAqIHRiLT50Yl93 aWR0aCArIHhjOworICAgIGludCBpbmM7CisKKyAgICBpZiAoY3UtPmJkcGNtX2ZsYWdbdGItPmNf aWR4XSkgeworICAgICAgICBpbmMgPSA2NzsKKyAgICB9IGVsc2UgeworICAgICAgICBjb25zdCBp bnQgbCA9IHhjID4gMCA/IHNpZ19jb2VmZl9mbGFnWy0xXSA6IDA7CisgICAgICAgIGNvbnN0IGlu dCBhID0geWMgPiAwID8gc2lnX2NvZWZmX2ZsYWdbLXRiLT50Yl93aWR0aF0gOiAwOworICAgICAg ICBpbmMgPSA2NCArIGEgKyBsOworICAgIH0KKyAgICByZXR1cm4gR0VUX0NBQkFDKEFCU19MRVZF TF9HVFhfRkxBRyArIGluYyk7Cit9CisKK3N0YXRpYyBpbnQgYWJzX2xldmVsX2d0eF9mbGFnX3Rz X2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgaikKK3sKKyAgICBjb25zdCBp bnQgaW5jID0gNjcgKyBqOworICAgIHJldHVybiBHRVRfQ0FCQUMoQUJTX0xFVkVMX0dUWF9GTEFH ICsgaW5jKTsKK30KKworc3RhdGljIGNvbnN0IHVpbnQ4X3QgcXN0YXRlX3RyYW5zbGF0ZV90YWJs ZVtdWzJdID0geworICAgIHsgMCwgMiB9LCB7IDIsIDAgfSwgeyAxLCAzIH0sIHsgMywgMSB9Cit9 OworCitzdGF0aWMgaW50IGRlY19hYnNfbGV2ZWxfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMs IGNvbnN0IFJlc2lkdWFsQ29kaW5nICpyYywKKyAgICBjb25zdCBpbnQgeGMsIGNvbnN0IGludCB5 YywgaW50ICphYnNfbGV2ZWwpCit7CisgICAgY29uc3QgaW50IGNfcmljZV9wYXJhbSAgPSBhYnNf Z2V0X3JpY2VfcGFyYW0obGMsIHJjLCB4YywgeWMsIDApOworICAgIGNvbnN0IGludCBkZWNfYWJz X2xldmVsID0gIGFic19kZWNvZGUobGMsIGNfcmljZV9wYXJhbSk7CisgICAgY29uc3QgaW50IHpl cm9fcG9zICAgICAgPSAocmMtPnFzdGF0ZSA8IDIgPyAxIDogMikgPDwgY19yaWNlX3BhcmFtOwor CisgICAgKmFic19sZXZlbCA9IDA7CisgICAgaWYgKGRlY19hYnNfbGV2ZWwgIT0gemVyb19wb3Mp IHsKKyAgICAgICAgKmFic19sZXZlbCA9IGRlY19hYnNfbGV2ZWw7CisgICAgICAgIGlmIChkZWNf YWJzX2xldmVsIDwgemVyb19wb3MpCisgICAgICAgICAgICAqYWJzX2xldmVsICs9IDE7CisgICAg fQorICAgIHJldHVybiBkZWNfYWJzX2xldmVsOworfQorCitzdGF0aWMgdm9pZCBlcF91cGRhdGVf aGlzdChFbnRyeVBvaW50ICplcCwgUmVzaWR1YWxDb2RpbmcgKnJjLAorICAgIGNvbnN0IGludCBy ZW1haW5kZXIsIGNvbnN0IGludCBhZGRpbikKK3sKKyAgICBpbnQgKnN0YXQgPSBlcC0+c3RhdF9j b2VmZiArIHJjLT50Yi0+Y19pZHg7CisgICAgaWYgKHJjLT51cGRhdGVfaGlzdCAmJiByZW1haW5k ZXIgPiAwKSB7CisgICAgICAgICpzdGF0ID0gKCpzdGF0ICsgYXZfbG9nMihyZW1haW5kZXIpICsg YWRkaW4pID4+IDE7CisgICAgICAgIHJjLT51cGRhdGVfaGlzdCA9IDA7CisgICAgfQorfQorCitz dGF0aWMgdm9pZCBpbml0X3Jlc2lkdWFsX2NvZGluZyhWVkNMb2NhbENvbnRleHQgKmxjLCBSZXNp ZHVhbENvZGluZyAqcmMsCisgICAgICAgIGNvbnN0IGludCBsb2cyX3pvX3RiX3dpZHRoLCBjb25z dCBpbnQgbG9nMl96b190Yl9oZWlnaHQsCisgICAgICAgIFRyYW5zZm9ybUJsb2NrICp0YikKK3sK KyAgICBjb25zdCBWVkNTUFMgKnNwcyAgID0gbGMtPmZjLT5wcy5zcHM7CisgICAgaW50IGxvZzJf c2JfdyA9IChGRk1JTihsb2cyX3pvX3RiX3dpZHRoLCBsb2cyX3pvX3RiX2hlaWdodCApIDwgMiA/ IDEgOiAyICk7CisgICAgaW50IGxvZzJfc2JfaCA9IGxvZzJfc2JfdzsKKworICAgIGlmICggbG9n Ml96b190Yl93aWR0aCArIGxvZzJfem9fdGJfaGVpZ2h0ID4gMyApIHsKKyAgICAgICAgaWYgKCBs b2cyX3pvX3RiX3dpZHRoIDwgMiApIHsKKyAgICAgICAgICAgIGxvZzJfc2JfdyA9IGxvZzJfem9f dGJfd2lkdGg7CisgICAgICAgICAgICBsb2cyX3NiX2ggPSA0IC0gbG9nMl9zYl93OworICAgICAg ICB9IGVsc2UgaWYgKCBsb2cyX3pvX3RiX2hlaWdodCA8IDIgKSB7CisgICAgICAgICAgICBsb2cy X3NiX2ggPSBsb2cyX3pvX3RiX2hlaWdodDsKKyAgICAgICAgICAgIGxvZzJfc2JfdyA9IDQgLSBs b2cyX3NiX2g7CisgICAgICAgIH0KKyAgICB9CisgICAgcmMtPmxvZzJfc2JfdyA9IGxvZzJfc2Jf dzsKKyAgICByYy0+bG9nMl9zYl9oID0gbG9nMl9zYl9oOworICAgIHJjLT5udW1fc2JfY29lZmYg ICA9IDEgPDwgKGxvZzJfc2JfdyArIGxvZzJfc2JfaCk7CisgICAgcmMtPmxhc3Rfc3ViX2Jsb2Nr ID0gKCAxIDw8ICggbG9nMl96b190Yl93aWR0aCArIGxvZzJfem9fdGJfaGVpZ2h0IC0gKGxvZzJf c2JfdyArIGxvZzJfc2JfaCkpKSAtIDE7CisgICAgcmMtPmhpc3RfdmFsdWUgICAgID0gc3BzLT5y LT5zcHNfcGVyc2lzdGVudF9yaWNlX2FkYXB0YXRpb25fZW5hYmxlZF9mbGFnID8gKDEgPDwgbGMt PmVwLT5zdGF0X2NvZWZmW3RiLT5jX2lkeF0pIDogMDsKKyAgICByYy0+dXBkYXRlX2hpc3QgICAg PSBzcHMtPnItPnNwc19wZXJzaXN0ZW50X3JpY2VfYWRhcHRhdGlvbl9lbmFibGVkX2ZsYWcgPyAx IDogMDsKKyAgICByYy0+cmVtX2JpbnNfcGFzczEgPSAoKCAxIDw8ICggbG9nMl96b190Yl93aWR0 aCArIGxvZzJfem9fdGJfaGVpZ2h0KSkgKiA3ICkgPj4gMjsKKworCisgICAgcmMtPnNiX3NjYW5f eF9vZmYgPSBmZl92dmNfZGlhZ19zY2FuX3hbbG9nMl96b190Yl93aWR0aCAtIGxvZzJfc2Jfd11b bG9nMl96b190Yl9oZWlnaHQgLSBsb2cyX3NiX2hdOworICAgIHJjLT5zYl9zY2FuX3lfb2ZmID0g ZmZfdnZjX2RpYWdfc2Nhbl95W2xvZzJfem9fdGJfd2lkdGggLSBsb2cyX3NiX3ddW2xvZzJfem9f dGJfaGVpZ2h0IC0gbG9nMl9zYl9oXTsKKworICAgIHJjLT5zY2FuX3hfb2ZmID0gZmZfdnZjX2Rp YWdfc2Nhbl94W2xvZzJfc2Jfd11bbG9nMl9zYl9oXTsKKyAgICByYy0+c2Nhbl95X29mZiA9IGZm X3Z2Y19kaWFnX3NjYW5feVtsb2cyX3NiX3ddW2xvZzJfc2JfaF07CisKKyAgICByYy0+aW5mZXJf c2JfY2JmID0gMTsKKworICAgIHJjLT53aWR0aF9pbl9zYnMgID0gKDEgPDwgKGxvZzJfem9fdGJf d2lkdGggLSBsb2cyX3NiX3cpKTsKKyAgICByYy0+aGVpZ2h0X2luX3NicyA9ICgxIDw8IChsb2cy X3pvX3RiX2hlaWdodCAtIGxvZzJfc2JfaCkpOworICAgIHJjLT5uYl9zYnMgICAgICAgID0gcmMt PndpZHRoX2luX3NicyAqIHJjLT5oZWlnaHRfaW5fc2JzOworCisgICAgcmMtPmxhc3Rfc2Nhbl9w b3MgPSByYy0+bnVtX3NiX2NvZWZmOworICAgIHJjLT5xc3RhdGUgICAgICAgID0gMDsKKworICAg IHJjLT50YiA9IHRiOworfQorCitzdGF0aWMgaW50IHJlc2lkdWFsX3RzX2NvZGluZ19zdWJibG9j ayhWVkNMb2NhbENvbnRleHQgKmxjLCBSZXNpZHVhbENvZGluZyogcmMsIGNvbnN0IGludCBpKQor eworICAgIGNvbnN0IENvZGluZ1VuaXQgKmN1ICAgID0gbGMtPmN1OworICAgIFRyYW5zZm9ybUJs b2NrICp0YiAgICAgID0gcmMtPnRiOworICAgIGNvbnN0IGludCBiZHBjbV9mbGFnICAgID0gY3Ut PmJkcGNtX2ZsYWdbdGItPmNfaWR4XTsKKyAgICBjb25zdCBpbnQgeHMgICAgICAgICAgICA9IHJj LT5zYl9zY2FuX3hfb2ZmW2ldOworICAgIGNvbnN0IGludCB5cyAgICAgICAgICAgID0gcmMtPnNi X3NjYW5feV9vZmZbaV07CisgICAgdWludDhfdCAqc2JfY29kZWRfZmxhZyAgPSByYy0+c2JfY29k ZWRfZmxhZyArIHlzICogcmMtPndpZHRoX2luX3NicyArIHhzOworICAgIGludCBpbmZlcl9zYl9z aWdfY29lZmZfZmxhZyA9IDE7CisgICAgaW50IGxhc3Rfc2Nhbl9wb3NfcGFzczEgPSAtMSwgbGFz dF9zY2FuX3Bvc19wYXNzMiA9IC0xLCBuOworICAgIGludCBhYnNfbGV2ZWxfZ3R4X2ZsYWdbTUFY X1NVQl9CTE9DS19TSVpFICogTUFYX1NVQl9CTE9DS19TSVpFXTsKKyAgICBpbnQgYWJzX2xldmVs X3Bhc3MyW01BWF9TVUJfQkxPQ0tfU0laRSAqIE1BWF9TVUJfQkxPQ0tfU0laRV07ICAgICAgIC8v LzwgQWJzTGV2ZWxQYXNzMgorCisgICAgaWYgKGkgIT0gcmMtPmxhc3Rfc3ViX2Jsb2NrIHx8ICFy Yy0+aW5mZXJfc2JfY2JmKQorICAgICAgICAqc2JfY29kZWRfZmxhZyA9IHNiX2NvZGVkX2ZsYWdf ZGVjb2RlKGxjLCBzYl9jb2RlZF9mbGFnLCByYywgeHMsIHlzKTsKKyAgICBlbHNlCisgICAgICAg ICpzYl9jb2RlZF9mbGFnID0gMTsKKyAgICBpZiAoKnNiX2NvZGVkX2ZsYWcgJiYgaSA8IHJjLT5s YXN0X3N1Yl9ibG9jaykKKyAgICAgICAgcmMtPmluZmVyX3NiX2NiZiA9IDA7CisKKyAgICAvL2Zp cnN0IHNjYW4gcGFzcworICAgIGZvciAobiA9IDA7IG4gPCByYy0+bnVtX3NiX2NvZWZmICYmIHJj LT5yZW1fYmluc19wYXNzMSA+PSA0OyBuKyspIHsKKyAgICAgICAgY29uc3QgaW50IHhjICA9ICh4 cyA8PCByYy0+bG9nMl9zYl93KSArIHJjLT5zY2FuX3hfb2ZmW25dOworICAgICAgICBjb25zdCBp bnQgeWMgID0gKHlzIDw8IHJjLT5sb2cyX3NiX2gpICsgcmMtPnNjYW5feV9vZmZbbl07CisgICAg ICAgIGNvbnN0IGludCBvZmYgPSB5YyAqIHRiLT50Yl93aWR0aCArIHhjOworICAgICAgICBpbnQg KnNpZ19jb2VmZl9mbGFnICAgPSByYy0+c2lnX2NvZWZmX2ZsYWcgKyBvZmY7CisgICAgICAgIGlu dCAqYWJzX2xldmVsX3Bhc3MxICA9IHJjLT5hYnNfbGV2ZWxfcGFzczEgKyBvZmY7CisgICAgICAg IGludCAqY29lZmZfc2lnbl9sZXZlbCA9IHJjLT5jb2VmZl9zaWduX2xldmVsICsgb2ZmOworICAg ICAgICBpbnQgcGFyX2xldmVsX2ZsYWcgICAgPSAwOworCisgICAgICAgIGFic19sZXZlbF9ndHhf ZmxhZ1tuXSA9IDA7CisgICAgICAgIGxhc3Rfc2Nhbl9wb3NfcGFzczEgPSBuOworICAgICAgICBp ZiAoKnNiX2NvZGVkX2ZsYWcgJiYgKG4gIT0gcmMtPm51bV9zYl9jb2VmZiAtIDEgfHwgIWluZmVy X3NiX3NpZ19jb2VmZl9mbGFnKSkgeworICAgICAgICAgICAgKnNpZ19jb2VmZl9mbGFnID0gc2ln X2NvZWZmX2ZsYWdfZGVjb2RlKGxjLCByYywgeGMsIHljKTsKKyAgICAgICAgICAgIHJjLT5yZW1f Ymluc19wYXNzMS0tOworICAgICAgICAgICAgaWYgKCpzaWdfY29lZmZfZmxhZykKKyAgICAgICAg ICAgICAgICBpbmZlcl9zYl9zaWdfY29lZmZfZmxhZyA9IDA7CisgICAgICAgIH0gZWxzZSB7Cisg ICAgICAgICAgICAqc2lnX2NvZWZmX2ZsYWcgPSAobiA9PSByYy0+bnVtX3NiX2NvZWZmIC0gMSkg JiYgaW5mZXJfc2Jfc2lnX2NvZWZmX2ZsYWcgJiYgKnNiX2NvZGVkX2ZsYWc7CisgICAgICAgIH0K KyAgICAgICAgKmNvZWZmX3NpZ25fbGV2ZWwgPSAwOworICAgICAgICBpZiAoKnNpZ19jb2VmZl9m bGFnKSB7CisgICAgICAgICAgICAqY29lZmZfc2lnbl9sZXZlbCA9IDEgLSAyICogY29lZmZfc2ln bl9mbGFnX3RzX2RlY29kZShsYywgY3UsIHJjLCB4YywgeWMpOworICAgICAgICAgICAgYWJzX2xl dmVsX2d0eF9mbGFnW25dID0gYWJzX2xldmVsX2d0MV9mbGFnX3RzX2RlY29kZShsYywgY3UsIHJj LCB4YywgeWMpOworICAgICAgICAgICAgcmMtPnJlbV9iaW5zX3Bhc3MxIC09IDI7CisgICAgICAg ICAgICBpZiAoYWJzX2xldmVsX2d0eF9mbGFnW25dKSB7CisgICAgICAgICAgICAgICAgcGFyX2xl dmVsX2ZsYWcgPSBwYXJfbGV2ZWxfZmxhZ190c19kZWNvZGUobGMpOworICAgICAgICAgICAgICAg IHJjLT5yZW1fYmluc19wYXNzMS0tOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg ICphYnNfbGV2ZWxfcGFzczEgPSAqc2lnX2NvZWZmX2ZsYWcgKyBwYXJfbGV2ZWxfZmxhZyArIGFi c19sZXZlbF9ndHhfZmxhZ1tuXTsKKyAgICB9CisKKyAgICAvL2dyZWF0ZXIgdGhhbiB4IHNjYW4g cGFzcworICAgIGZvciAobiA9IDA7IG4gPCByYy0+bnVtX3NiX2NvZWZmICYmIHJjLT5yZW1fYmlu c19wYXNzMSA+PSA0OyBuKyspIHsKKyAgICAgICAgY29uc3QgaW50IHhjICA9ICh4cyA8PCByYy0+ bG9nMl9zYl93KSArIHJjLT5zY2FuX3hfb2ZmW25dOworICAgICAgICBjb25zdCBpbnQgeWMgID0g KHlzIDw8IHJjLT5sb2cyX3NiX2gpICsgcmMtPnNjYW5feV9vZmZbbl07CisgICAgICAgIGNvbnN0 IGludCBvZmYgPSB5YyAqIHRiLT50Yl93aWR0aCArIHhjOworCisgICAgICAgIGFic19sZXZlbF9w YXNzMltuXSA9IHJjLT5hYnNfbGV2ZWxfcGFzczFbb2ZmXTsKKyAgICAgICAgZm9yIChpbnQgaiA9 IDE7IGogPCA1ICYmIGFic19sZXZlbF9ndHhfZmxhZ1tuXTsgaisrKSB7CisgICAgICAgICAgICBh YnNfbGV2ZWxfZ3R4X2ZsYWdbbl0gPSBhYnNfbGV2ZWxfZ3R4X2ZsYWdfdHNfZGVjb2RlKGxjLCBq KTsKKyAgICAgICAgICAgIGFic19sZXZlbF9wYXNzMltuXSArPSBhYnNfbGV2ZWxfZ3R4X2ZsYWdb bl0gPDwgMTsKKyAgICAgICAgICAgIHJjLT5yZW1fYmluc19wYXNzMS0tOworICAgICAgICB9Cisg ICAgICAgIGxhc3Rfc2Nhbl9wb3NfcGFzczIgPSBuOworICAgIH0KKworICAgIC8qIHJlbWFpbmRl ciBzY2FuIHBhc3MgKi8KKyAgICBmb3IgKG4gPSAwOyBuIDwgcmMtPm51bV9zYl9jb2VmZjsgbisr KSB7CisgICAgICAgIGNvbnN0IGludCB4YyAgPSAoeHMgPDwgcmMtPmxvZzJfc2JfdykgKyByYy0+ c2Nhbl94X29mZltuXTsKKyAgICAgICAgY29uc3QgaW50IHljICA9ICh5cyA8PCByYy0+bG9nMl9z Yl9oKSArIHJjLT5zY2FuX3lfb2ZmW25dOworICAgICAgICBjb25zdCBpbnQgb2ZmID0geWMgKiB0 Yi0+dGJfd2lkdGggKyB4YzsKKyAgICAgICAgY29uc3QgaW50ICphYnNfbGV2ZWxfcGFzczEgID0g cmMtPmFic19sZXZlbF9wYXNzMSArIG9mZjsKKyAgICAgICAgaW50ICphYnNfbGV2ZWwgICAgICAg ICAgICAgID0gcmMtPmFic19sZXZlbCArIG9mZjsKKyAgICAgICAgaW50ICpjb2VmZl9zaWduX2xl dmVsICAgICAgID0gcmMtPmNvZWZmX3NpZ25fbGV2ZWwgKyBvZmY7CisgICAgICAgIGludCBhYnNf cmVtYWluZGVyID0gMDsKKworICAgICAgICBpZiAoKG4gPD0gbGFzdF9zY2FuX3Bvc19wYXNzMiAm JiBhYnNfbGV2ZWxfcGFzczJbbl0gPj0gMTApIHx8CisgICAgICAgICAgICAobiA+IGxhc3Rfc2Nh bl9wb3NfcGFzczIgJiYgbiA8PSBsYXN0X3NjYW5fcG9zX3Bhc3MxICYmCisgICAgICAgICAgICAq YWJzX2xldmVsX3Bhc3MxID49IDIpIHx8CisgICAgICAgICAgICAobiA+IGxhc3Rfc2Nhbl9wb3Nf cGFzczEgJiYgICpzYl9jb2RlZF9mbGFnKSkKKyAgICAgICAgICAgIGFic19yZW1haW5kZXIgPSBh YnNfcmVtYWluZGVyX3RzX2RlY29kZShsYywgcmMsIHhjLCB5Yyk7CisgICAgICAgIGlmIChuIDw9 IGxhc3Rfc2Nhbl9wb3NfcGFzczIpIHsKKyAgICAgICAgICAgICphYnNfbGV2ZWwgPSBhYnNfbGV2 ZWxfcGFzczJbbl0gKyAyICogYWJzX3JlbWFpbmRlcjsKKyAgICAgICAgfSBlbHNlIGlmIChuIDw9 IGxhc3Rfc2Nhbl9wb3NfcGFzczEpIHsKKyAgICAgICAgICAgICphYnNfbGV2ZWwgPSAqYWJzX2xl dmVsX3Bhc3MxICsgMiAqIGFic19yZW1haW5kZXI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg ICAgICAqYWJzX2xldmVsID0gYWJzX3JlbWFpbmRlcjsKKyAgICAgICAgICAgIGlmIChhYnNfcmVt YWluZGVyKSB7CisgICAgICAgICAgICAgICAgLy9uID4gbGFzdFNjYW5Qb3NQYXNzMQorICAgICAg ICAgICAgICAgICpjb2VmZl9zaWduX2xldmVsID0gMSAtIDIgKiBjb2VmZl9zaWduX2ZsYWdfZGVj b2RlKGxjKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIWJkcGNtX2Zs YWcgJiYgbiA8PSBsYXN0X3NjYW5fcG9zX3Bhc3MxKSB7CisgICAgICAgICAgICBjb25zdCBpbnQg bGVmdCAgPSB4YyA+IDAgPyBhYnNfbGV2ZWxbLTFdIDogMDsKKyAgICAgICAgICAgIGNvbnN0IGlu dCBhYm92ZSA9IHljID4gMCA/IGFic19sZXZlbFstdGItPnRiX3dpZHRoXSA6IDA7CisgICAgICAg ICAgICBjb25zdCBpbnQgcHJlZCA9IEZGTUFYKGxlZnQsIGFib3ZlKTsKKworICAgICAgICAgICAg aWYgKCphYnNfbGV2ZWwgPT0gMSAmJiBwcmVkID4gMCkKKyAgICAgICAgICAgICAgICAqYWJzX2xl dmVsID0gcHJlZDsKKyAgICAgICAgICAgIGVsc2UgaWYgKCphYnNfbGV2ZWwgPiAwICYmICphYnNf bGV2ZWwgPD0gcHJlZCkKKyAgICAgICAgICAgICAgICAoKmFic19sZXZlbCktLTsKKyAgICAgICAg fQorICAgICAgICBpZiAoKmFic19sZXZlbCkgeworICAgICAgICAgICAgdGItPmNvZWZmc1tvZmZd ID0gKmNvZWZmX3NpZ25fbGV2ZWwgKiAqYWJzX2xldmVsOworICAgICAgICAgICAgdGItPm1heF9z Y2FuX3ggPSBGRk1BWCh4YywgdGItPm1heF9zY2FuX3gpOworICAgICAgICAgICAgdGItPm1heF9z Y2FuX3kgPSBGRk1BWCh5YywgdGItPm1heF9zY2FuX3kpOworICAgICAgICAgICAgdGItPm1pbl9z Y2FuX3ggPSBGRk1JTih4YywgdGItPm1pbl9zY2FuX3gpOworICAgICAgICAgICAgdGItPm1pbl9z Y2FuX3kgPSBGRk1JTih5YywgdGItPm1pbl9zY2FuX3kpOworICAgICAgICB9IGVsc2UgeworICAg ICAgICAgICAgdGItPmNvZWZmc1tvZmZdID0gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJl dHVybiAwOworfQorCitzdGF0aWMgaW50IGhsc19yZXNpZHVhbF90c19jb2RpbmcoVlZDTG9jYWxD b250ZXh0ICpsYywgVHJhbnNmb3JtQmxvY2sgKnRiKQoreworICAgIFJlc2lkdWFsQ29kaW5nIHJj OworICAgIHRiLT5taW5fc2Nhbl94ID0gdGItPm1pbl9zY2FuX3kgPSBJTlRfTUFYOworICAgIGlu aXRfcmVzaWR1YWxfY29kaW5nKGxjLCAmcmMsIHRiLT5sb2cyX3RiX3dpZHRoLCB0Yi0+bG9nMl90 Yl9oZWlnaHQsIHRiKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8PSByYy5sYXN0X3N1Yl9ibG9j azsgaSsrKSB7CisgICAgICAgIGludCByZXQgPSByZXNpZHVhbF90c19jb2Rpbmdfc3ViYmxvY2so bGMsICZyYywgaSk7CisgICAgICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgICAgcmV0dXJuIHJl dDsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGlubGluZSBpbnQgcmVzaWR1 YWxfY29kaW5nX3N1YmJsb2NrKFZWQ0xvY2FsQ29udGV4dCAqbGMsIFJlc2lkdWFsQ29kaW5nICpy YywgY29uc3QgaW50IGkpCit7CisgICAgY29uc3QgSDI2NlJhd1NsaWNlSGVhZGVyICpyc2ggICA9 IGxjLT5zYy0+c2gucjsKKyAgICBUcmFuc2Zvcm1CbG9jayAqdGIgICAgICAgICAgICAgID0gcmMt PnRiOworICAgIGludCBmaXJzdF9zaWdfc2Nhbl9wb3Nfc2IsIGxhc3Rfc2lnX3NjYW5fcG9zX3Ni OworICAgIGludCBmaXJzdF9wb3NfbW9kZTAsIGZpcnN0X3Bvc19tb2RlMTsKKyAgICBpbnQgaW5m ZXJfc2JfZGNfc2lnX2NvZWZmX2ZsYWcgPSAwOworICAgIGludCBuLCBzaWdfaGlkZGVuX2ZsYWcs IHN1bSA9IDA7CisgICAgaW50IGFic19sZXZlbF9ndDJfZmxhZ1tNQVhfU1VCX0JMT0NLX1NJWkUg KiBNQVhfU1VCX0JMT0NLX1NJWkVdOworICAgIGNvbnN0IGludCBzdGFydF9xc3RhdGVfc2IgPSBy Yy0+cXN0YXRlOworICAgIGNvbnN0IGludCB4cyA9IHJjLT5zYl9zY2FuX3hfb2ZmW2ldOworICAg IGNvbnN0IGludCB5cyA9IHJjLT5zYl9zY2FuX3lfb2ZmW2ldOworICAgIHVpbnQ4X3QgKnNiX2Nv ZGVkX2ZsYWcgPSByYy0+c2JfY29kZWRfZmxhZyArIHlzICogcmMtPndpZHRoX2luX3NicyArIHhz OworCisKKyAgICBhdl9hc3NlcnQwKHJjLT5udW1fc2JfY29lZmYgPD0gTUFYX1NVQl9CTE9DS19T SVpFICogTUFYX1NVQl9CTE9DS19TSVpFKTsKKyAgICBpZiAoaSA8IHJjLT5sYXN0X3N1Yl9ibG9j ayAmJiBpID4gMCkgeworICAgICAgICAqc2JfY29kZWRfZmxhZyA9IHNiX2NvZGVkX2ZsYWdfZGVj b2RlKGxjLCBzYl9jb2RlZF9mbGFnLCByYywgeHMsIHlzKTsKKyAgICAgICAgaW5mZXJfc2JfZGNf c2lnX2NvZWZmX2ZsYWcgPSAxOworICAgIH0gZWxzZSB7CisgICAgICAgICpzYl9jb2RlZF9mbGFn ID0gMTsKKyAgICB9CisgICAgaWYgKCpzYl9jb2RlZF9mbGFnICYmICh4cyA+IDMgfHwgeXMgPiAz KSAmJiB0Yi0+Y19pZHggPT0gMCkKKyAgICAgICAgbGMtPnBhcnNlLm10c196ZXJvX291dF9zaWdf Y29lZmZfZmxhZyA9IDA7CisKKyAgICBpZiAoISpzYl9jb2RlZF9mbGFnKQorICAgICAgICByZXR1 cm4gMDsKKworICAgIGZpcnN0X3NpZ19zY2FuX3Bvc19zYiA9IHJjLT5udW1fc2JfY29lZmY7Cisg ICAgbGFzdF9zaWdfc2Nhbl9wb3Nfc2IgPSAtMTsKKyAgICBmaXJzdF9wb3NfbW9kZTAgPSAoaSA9 PSByYy0+bGFzdF9zdWJfYmxvY2sgPyByYy0+bGFzdF9zY2FuX3BvcyA6IHJjLT5udW1fc2JfY29l ZmYgLTEpOworICAgIGZpcnN0X3Bvc19tb2RlMSA9IGZpcnN0X3Bvc19tb2RlMDsKKyAgICBmb3Ig KG4gPSBmaXJzdF9wb3NfbW9kZTA7IG4gPj0gMCAmJiByYy0+cmVtX2JpbnNfcGFzczEgPj0gNDsg bi0tKSB7CisgICAgICAgIGNvbnN0IGludCB4YyAgID0gKHhzIDw8IHJjLT5sb2cyX3NiX3cpICsg cmMtPnNjYW5feF9vZmZbbl07CisgICAgICAgIGNvbnN0IGludCB5YyAgID0gKHlzIDw8IHJjLT5s b2cyX3NiX2gpICsgcmMtPnNjYW5feV9vZmZbbl07CisgICAgICAgIGNvbnN0IGludCBsYXN0ID0g KHhjID09IHJjLT5sYXN0X3NpZ25pZmljYW50X2NvZWZmX3ggJiYgeWMgPT0gcmMtPmxhc3Rfc2ln bmlmaWNhbnRfY29lZmZfeSk7CisgICAgICAgIGludCAqYWJzX2xldmVsX3Bhc3MxID0gcmMtPmFi c19sZXZlbF9wYXNzMSArIHljICogdGItPnRiX3dpZHRoICsgeGM7CisgICAgICAgIGludCAqc2ln X2NvZWZmX2ZsYWcgID0gcmMtPnNpZ19jb2VmZl9mbGFnICsgeWMgKiB0Yi0+dGJfd2lkdGggKyB4 YzsKKworICAgICAgICBpZiAoKG4gPiAwIHx8ICFpbmZlcl9zYl9kY19zaWdfY29lZmZfZmxhZyAp ICYmICFsYXN0KSB7CisgICAgICAgICAgICAqc2lnX2NvZWZmX2ZsYWcgPSBzaWdfY29lZmZfZmxh Z19kZWNvZGUobGMsIHJjLCB4YywgeWMpOworICAgICAgICAgICAgcmMtPnJlbV9iaW5zX3Bhc3Mx LS07CisgICAgICAgICAgICBpZiAoKnNpZ19jb2VmZl9mbGFnKQorICAgICAgICAgICAgICAgIGlu ZmVyX3NiX2RjX3NpZ19jb2VmZl9mbGFnID0gMDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg ICAgICpzaWdfY29lZmZfZmxhZyA9IGxhc3QgfHwgKCFyYy0+c2Nhbl94X29mZltuXSAmJiAhcmMg LT5zY2FuX3lfb2ZmW25dICYmCisgICAgICAgICAgICAgICAgaW5mZXJfc2JfZGNfc2lnX2NvZWZm X2ZsYWcpOworICAgICAgICB9CisgICAgICAgICphYnNfbGV2ZWxfcGFzczEgPSAwOworICAgICAg ICBpZiAoKnNpZ19jb2VmZl9mbGFnKSB7CisgICAgICAgICAgICBpbnQgYWJzX2xldmVsX2d0MV9m bGFnLCBwYXJfbGV2ZWxfZmxhZyA9IDA7CisgICAgICAgICAgICBjb25zdCBpbnQgaW5jID0gZ2V0 X2d0eF9mbGFnX2luYyhyYywgeGMsIHljLCBsYXN0KTsKKyAgICAgICAgICAgIGFic19sZXZlbF9n dDFfZmxhZyA9IGFic19sZXZlbF9ndHhfZmxhZ19kZWNvZGUobGMsIGluYyk7CisgICAgICAgICAg ICByYy0+cmVtX2JpbnNfcGFzczEtLTsKKyAgICAgICAgICAgIGlmIChhYnNfbGV2ZWxfZ3QxX2Zs YWcpIHsKKyAgICAgICAgICAgICAgICBwYXJfbGV2ZWxfZmxhZyA9IHBhcl9sZXZlbF9mbGFnX2Rl Y29kZShsYywgaW5jKTsKKyAgICAgICAgICAgICAgICBhYnNfbGV2ZWxfZ3QyX2ZsYWdbbl0gPSBh YnNfbGV2ZWxfZ3R4X2ZsYWdfZGVjb2RlKGxjLCBpbmMgKyAzMik7CisgICAgICAgICAgICAgICAg cmMtPnJlbV9iaW5zX3Bhc3MxIC09IDI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg ICAgICAgIGFic19sZXZlbF9ndDJfZmxhZ1tuXSA9IDA7CisgICAgICAgICAgICB9CisgICAgICAg ICAgICBpZiAobGFzdF9zaWdfc2Nhbl9wb3Nfc2IgPT0gLTEpCisgICAgICAgICAgICAgICAgbGFz dF9zaWdfc2Nhbl9wb3Nfc2IgPSBuOworICAgICAgICAgICAgZmlyc3Rfc2lnX3NjYW5fcG9zX3Ni ID0gbjsKKworICAgICAgICAgICAgKmFic19sZXZlbF9wYXNzMSA9CisgICAgICAgICAgICAgICAg MSAgKyBwYXJfbGV2ZWxfZmxhZyArIGFic19sZXZlbF9ndDFfZmxhZyArIChhYnNfbGV2ZWxfZ3Qy X2ZsYWdbbl0gPDwgMSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhYnNfbGV2ZWxf Z3QyX2ZsYWdbbl0gPSAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJzaC0+c2hfZGVwX3F1 YW50X3VzZWRfZmxhZykKKyAgICAgICAgICAgIHJjLT5xc3RhdGUgPSBxc3RhdGVfdHJhbnNsYXRl X3RhYmxlW3JjLT5xc3RhdGVdWyphYnNfbGV2ZWxfcGFzczEgJiAxXTsKKworICAgICAgICBmaXJz dF9wb3NfbW9kZTEgPSBuIC0gMTsKKyAgICB9CisgICAgZm9yIChuID0gZmlyc3RfcG9zX21vZGUw OyBuID4gZmlyc3RfcG9zX21vZGUxOyBuLS0pIHsKKyAgICAgICAgY29uc3QgaW50IHhjID0gKHhz IDw8IHJjLT5sb2cyX3NiX3cpICsgcmMtPnNjYW5feF9vZmZbbl07CisgICAgICAgIGNvbnN0IGlu dCB5YyA9ICh5cyA8PCByYy0+bG9nMl9zYl9oKSArIHJjLT5zY2FuX3lfb2ZmW25dOworICAgICAg ICBjb25zdCBpbnQgKmFic19sZXZlbF9wYXNzMSAgPSByYy0+YWJzX2xldmVsX3Bhc3MxICsgeWMg KiB0Yi0+dGJfd2lkdGggKyB4YzsKKyAgICAgICAgaW50ICphYnNfbGV2ZWwgICAgICAgICAgICAg ID0gcmMtPmFic19sZXZlbCArIHljICogdGItPnRiX3dpZHRoICsgeGM7CisKKyAgICAgICAgKmFi c19sZXZlbCA9ICphYnNfbGV2ZWxfcGFzczE7CisgICAgICAgIGlmIChhYnNfbGV2ZWxfZ3QyX2Zs YWdbbl0pIHsKKyAgICAgICAgICAgIGNvbnN0IGludCBhYnNfcmVtYWluZGVyID0gYWJzX3JlbWFp bmRlcl9kZWNvZGUobGMsIHJjLCB4YywgeWMpOworICAgICAgICAgICAgZXBfdXBkYXRlX2hpc3Qo bGMtPmVwLCByYywgYWJzX3JlbWFpbmRlciwgMik7CisgICAgICAgICAgICAqYWJzX2xldmVsICs9 IDIgKiBhYnNfcmVtYWluZGVyOworICAgICAgICB9CisgICAgfQorICAgIGZvciAobiA9IGZpcnN0 X3Bvc19tb2RlMTsgbiA+PSAwOyBuLS0pIHsKKyAgICAgICAgY29uc3QgaW50IHhjICAgID0gKHhz IDw8IHJjLT5sb2cyX3NiX3cpICsgcmMtPnNjYW5feF9vZmZbbl07CisgICAgICAgIGNvbnN0IGlu dCB5YyAgICA9ICh5cyA8PCByYy0+bG9nMl9zYl9oKSArIHJjLT5zY2FuX3lfb2ZmW25dOworICAg ICAgICBpbnQgKmFic19sZXZlbCAgPSByYy0+YWJzX2xldmVsICsgeWMgKiB0Yi0+dGJfd2lkdGgg KyB4YzsKKworICAgICAgICBpZiAoKnNiX2NvZGVkX2ZsYWcpIHsKKyAgICAgICAgICAgIGNvbnN0 IGludCBkZWNfYWJzX2xldmVsID0gZGVjX2Fic19sZXZlbF9kZWNvZGUobGMsIHJjLCB4YywgeWMs IGFic19sZXZlbCk7CisgICAgICAgICAgICBlcF91cGRhdGVfaGlzdChsYy0+ZXAsIHJjLCBkZWNf YWJzX2xldmVsLCAwKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoKmFic19sZXZlbCA+IDApIHsK KyAgICAgICAgICAgIGlmIChsYXN0X3NpZ19zY2FuX3Bvc19zYiA9PSAtMSkKKyAgICAgICAgICAg ICAgICBsYXN0X3NpZ19zY2FuX3Bvc19zYiA9IG47CisgICAgICAgICAgICBmaXJzdF9zaWdfc2Nh bl9wb3Nfc2IgPSBuOworICAgICAgICB9CisgICAgICAgIGlmIChyc2gtPnNoX2RlcF9xdWFudF91 c2VkX2ZsYWcpCisgICAgICAgICAgICByYy0+cXN0YXRlID0gcXN0YXRlX3RyYW5zbGF0ZV90YWJs ZVtyYy0+cXN0YXRlXVsqYWJzX2xldmVsICYgMV07CisgICAgfQorICAgIHNpZ19oaWRkZW5fZmxh ZyA9IHJzaC0+c2hfc2lnbl9kYXRhX2hpZGluZ191c2VkX2ZsYWcgJiYKKyAgICAgICAgKGxhc3Rf c2lnX3NjYW5fcG9zX3NiIC0gZmlyc3Rfc2lnX3NjYW5fcG9zX3NiID4gMyA/IDEgOiAwKTsKKwor ICAgIGlmIChyc2gtPnNoX2RlcF9xdWFudF91c2VkX2ZsYWcpCisgICAgICAgIHJjLT5xc3RhdGUg PSBzdGFydF9xc3RhdGVfc2I7CisgICAgbiA9IChpID09IHJjLT5sYXN0X3N1Yl9ibG9jayA/IHJj LT5sYXN0X3NjYW5fcG9zIDogcmMtPm51bV9zYl9jb2VmZiAtMSk7CisgICAgZm9yICgvKiBub3Ro aW5nICovOyBuID49IDA7IG4tLSkgeworICAgICAgICBpbnQgdHJhbnNfY29lZmZfbGV2ZWw7Cisg ICAgICAgIGNvbnN0IGludCB4YyAgPSAoeHMgPDwgcmMtPmxvZzJfc2JfdykgKyByYy0+c2Nhbl94 X29mZltuXTsKKyAgICAgICAgY29uc3QgaW50IHljICA9ICh5cyA8PCByYy0+bG9nMl9zYl9oKSAr IHJjLT5zY2FuX3lfb2ZmW25dOworICAgICAgICBjb25zdCBpbnQgb2ZmID0geWMgKiB0Yi0+dGJf d2lkdGggKyB4YzsKKyAgICAgICAgY29uc3QgaW50ICphYnNfbGV2ZWwgPSByYy0+YWJzX2xldmVs ICsgb2ZmOworCisgICAgICAgIGlmICgqYWJzX2xldmVsID4gMCkgeworICAgICAgICAgICAgaW50 IHNpZ24gPSAxOworICAgICAgICAgICAgaWYgKCFzaWdfaGlkZGVuX2ZsYWcgfHwgKG4gIT0gZmly c3Rfc2lnX3NjYW5fcG9zX3NiKSkKKyAgICAgICAgICAgICAgICBzaWduID0gMSAtIDIgKiBjb2Vm Zl9zaWduX2ZsYWdfZGVjb2RlKGxjKTsKKyAgICAgICAgICAgIGlmIChyc2gtPnNoX2RlcF9xdWFu dF91c2VkX2ZsYWcpIHsKKyAgICAgICAgICAgICAgICB0cmFuc19jb2VmZl9sZXZlbCA9ICgyICog KmFic19sZXZlbCAtIChyYy0+cXN0YXRlID4gMSkpICogc2lnbjsKKyAgICAgICAgICAgIH0gZWxz ZSB7CisgICAgICAgICAgICAgICAgdHJhbnNfY29lZmZfbGV2ZWwgPSAqYWJzX2xldmVsICogc2ln bjsKKyAgICAgICAgICAgICAgICBpZiAoc2lnX2hpZGRlbl9mbGFnKSB7CisgICAgICAgICAgICAg ICAgICAgIHN1bSArPSAqYWJzX2xldmVsOworICAgICAgICAgICAgICAgICAgICBpZiAobiA9PSBm aXJzdF9zaWdfc2Nhbl9wb3Nfc2IgJiYgKHN1bSAlIDIpKQorICAgICAgICAgICAgICAgICAgICAg ICAgdHJhbnNfY29lZmZfbGV2ZWwgPSAtdHJhbnNfY29lZmZfbGV2ZWw7CisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgdGItPmNvZWZmc1tvZmZdID0gdHJhbnNf Y29lZmZfbGV2ZWw7CisgICAgICAgICAgICB0Yi0+bWF4X3NjYW5feCA9IEZGTUFYKHhjLCB0Yi0+ bWF4X3NjYW5feCk7CisgICAgICAgICAgICB0Yi0+bWF4X3NjYW5feSA9IEZGTUFYKHljLCB0Yi0+ bWF4X3NjYW5feSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJzaC0+c2hfZGVwX3F1YW50X3Vz ZWRfZmxhZykKKyAgICAgICAgICAgIHJjLT5xc3RhdGUgPSBxc3RhdGVfdHJhbnNsYXRlX3RhYmxl W3JjLT5xc3RhdGVdWyphYnNfbGV2ZWwgJiAxXTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30K Kworc3RhdGljIHZvaWQgZGVyaXZlX2xhc3Rfc2Nhbl9wb3MoUmVzaWR1YWxDb2RpbmcgKnJjLAor ICAgIGNvbnN0IGludCBsb2cyX3pvX3RiX3dpZHRoLCBpbnQgbG9nMl96b190Yl9oZWlnaHQpCit7 CisgICAgaW50IHhjLCB5YywgeHMsIHlzOworICAgIGRvIHsKKyAgICAgICAgaWYgKHJjLT5sYXN0 X3NjYW5fcG9zID09IDApIHsKKyAgICAgICAgICAgIHJjLT5sYXN0X3NjYW5fcG9zID0gcmMtPm51 bV9zYl9jb2VmZjsKKyAgICAgICAgICAgIHJjLT5sYXN0X3N1Yl9ibG9jay0tOworICAgICAgICB9 CisgICAgICAgIHJjLT5sYXN0X3NjYW5fcG9zLS07CisgICAgICAgIHhzID0gcmMtPnNiX3NjYW5f eF9vZmZbcmMtPmxhc3Rfc3ViX2Jsb2NrXTsKKyAgICAgICAgeXMgPSByYy0+c2Jfc2Nhbl95X29m ZltyYy0+bGFzdF9zdWJfYmxvY2tdOworICAgICAgICB4YyA9ICh4cyA8PCByYy0+bG9nMl9zYl93 KSArIHJjLT5zY2FuX3hfb2ZmW3JjLT5sYXN0X3NjYW5fcG9zXTsKKyAgICAgICAgeWMgPSAoeXMg PDwgcmMtPmxvZzJfc2JfaCkgKyByYy0+c2Nhbl95X29mZltyYy0+bGFzdF9zY2FuX3Bvc107Cisg ICAgfSB3aGlsZSAoKHhjICE9IHJjLT5sYXN0X3NpZ25pZmljYW50X2NvZWZmX3gpIHx8ICh5YyAh PSByYy0+bGFzdF9zaWduaWZpY2FudF9jb2VmZl95KSk7Cit9CisKK3N0YXRpYyB2b2lkIGxhc3Rf c2lnbmlmaWNhbnRfY29lZmZfeF95X2RlY29kZShSZXNpZHVhbENvZGluZyAqcmMsIFZWQ0xvY2Fs Q29udGV4dCAqbGMsCisgICAgY29uc3QgaW50IGxvZzJfem9fdGJfd2lkdGgsIGNvbnN0IGludCBs b2cyX3pvX3RiX2hlaWdodCkKK3sKKyAgICBjb25zdCBIMjY2UmF3U2xpY2VIZWFkZXIgKnJzaCAg ID0gbGMtPnNjLT5zaC5yOworICAgIGNvbnN0IFRyYW5zZm9ybUJsb2NrICp0YiAgICAgICAgPSBy Yy0+dGI7CisgICAgaW50IGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeCwgbGFzdF9zaWduaWZpY2Fu dF9jb2VmZl95OworCisgICAgbGFzdF9zaWduaWZpY2FudF9jb2VmZl94ID0gbGFzdF9zaWduaWZp Y2FudF9jb2VmZl94X3ByZWZpeF9kZWNvZGUobGMsCisgICAgICAgICAgICB0Yi0+bG9nMl90Yl93 aWR0aCwgbG9nMl96b190Yl93aWR0aCwgdGItPmNfaWR4KTsKKworICAgIGxhc3Rfc2lnbmlmaWNh bnRfY29lZmZfeSA9IGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeV9wcmVmaXhfZGVjb2RlKGxjLAor ICAgICAgICB0Yi0+bG9nMl90Yl9oZWlnaHQsIGxvZzJfem9fdGJfaGVpZ2h0LCB0Yi0+Y19pZHgp OworCisgICAgaWYgKGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeCA+IDMpIHsKKyAgICAgICAgaW50 IHN1ZmZpeCA9IGxhc3Rfc2lnX2NvZWZmX3N1ZmZpeF9kZWNvZGUobGMsIGxhc3Rfc2lnbmlmaWNh bnRfY29lZmZfeCk7CisgICAgICAgIGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeCA9ICgxIDw8ICgo bGFzdF9zaWduaWZpY2FudF9jb2VmZl94ID4+IDEpIC0gMSkpICoKKyAgICAgICAgICAgICgyICsg KGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeCAmIDEpKSArIHN1ZmZpeDsKKyAgICB9CisgICAgaWYg KGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeSA+IDMpIHsKKyAgICAgICAgaW50IHN1ZmZpeCA9IGxh c3Rfc2lnX2NvZWZmX3N1ZmZpeF9kZWNvZGUobGMsIGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeSk7 CisgICAgICAgIGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeSA9ICgxIDw8ICgobGFzdF9zaWduaWZp Y2FudF9jb2VmZl95ID4+IDEpIC0gMSkpICoKKyAgICAgICAgICAgICgyICsgKGxhc3Rfc2lnbmlm aWNhbnRfY29lZmZfeSAmIDEpKSArIHN1ZmZpeDsKKyAgICB9CisgICAgaWYgKHJzaC0+c2hfcmV2 ZXJzZV9sYXN0X3NpZ19jb2VmZl9mbGFnKSB7CisgICAgICAgIGxhc3Rfc2lnbmlmaWNhbnRfY29l ZmZfeCA9ICgxIDw8IGxvZzJfem9fdGJfd2lkdGgpIC0gMSAtIGxhc3Rfc2lnbmlmaWNhbnRfY29l ZmZfeDsKKyAgICAgICAgbGFzdF9zaWduaWZpY2FudF9jb2VmZl95ID0gKDEgPDwgbG9nMl96b190 Yl9oZWlnaHQpIC0gMSAtIGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeTsKKyAgICB9CisgICAgcmMt Pmxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeCA9IGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeDsKKyAg ICByYy0+bGFzdF9zaWduaWZpY2FudF9jb2VmZl95ID0gbGFzdF9zaWduaWZpY2FudF9jb2VmZl95 OworfQorCitzdGF0aWMgaW50IGhsc19yZXNpZHVhbF9jb2RpbmcoVlZDTG9jYWxDb250ZXh0ICps YywgVHJhbnNmb3JtQmxvY2sgKnRiKQoreworICAgIGNvbnN0IFZWQ1NQUyAqc3BzICAgICAgICAg ICA9IGxjLT5mYy0+cHMuc3BzOworICAgIGNvbnN0IENvZGluZ1VuaXQgKmN1ICAgICAgICA9IGxj LT5jdTsKKyAgICBjb25zdCBpbnQgbG9nMl90Yl93aWR0aCAgICAgPSB0Yi0+bG9nMl90Yl93aWR0 aDsKKyAgICBjb25zdCBpbnQgbG9nMl90Yl9oZWlnaHQgICAgPSB0Yi0+bG9nMl90Yl9oZWlnaHQ7 CisgICAgY29uc3QgaW50IGNfaWR4ICAgICAgICAgICAgID0gdGItPmNfaWR4OworICAgIGludCBs b2cyX3pvX3RiX3dpZHRoLCBsb2cyX3pvX3RiX2hlaWdodDsKKyAgICBSZXNpZHVhbENvZGluZyBy YzsKKworICAgIGlmIChzcHMtPnItPnNwc19tdHNfZW5hYmxlZF9mbGFnICYmIGN1LT5zYnRfZmxh ZyAmJiBjX2lkeCA9PSAwICYmIGxvZzJfdGJfd2lkdGggPT0gNSAmJiBsb2cyX3RiX2hlaWdodCA8 IDYpCisgICAgICAgIGxvZzJfem9fdGJfd2lkdGggPSA0OworICAgIGVsc2UKKyAgICAgICAgbG9n Ml96b190Yl93aWR0aCA9IEZGTUlOKGxvZzJfdGJfd2lkdGgsIDUgKTsKKworICAgIGlmIChzcHMt PnItPnNwc19tdHNfZW5hYmxlZF9mbGFnICYmIGN1LT5zYnRfZmxhZyAmJiBjX2lkeCA9PSAwICYm IGxvZzJfdGJfd2lkdGggPCA2ICYmIGxvZzJfdGJfaGVpZ2h0ID09IDUgKQorICAgICAgICBsb2cy X3pvX3RiX2hlaWdodCA9IDQ7CisgICAgZWxzZQorICAgICAgICBsb2cyX3pvX3RiX2hlaWdodCA9 IEZGTUlOKGxvZzJfdGJfaGVpZ2h0LCA1KTsKKworICAgIGluaXRfcmVzaWR1YWxfY29kaW5nKGxj LCAmcmMsIGxvZzJfem9fdGJfd2lkdGgsIGxvZzJfem9fdGJfaGVpZ2h0LCB0Yik7CisgICAgbGFz dF9zaWduaWZpY2FudF9jb2VmZl94X3lfZGVjb2RlKCZyYywgbGMsIGxvZzJfem9fdGJfd2lkdGgs IGxvZzJfem9fdGJfaGVpZ2h0KTsKKyAgICBkZXJpdmVfbGFzdF9zY2FuX3BvcygmcmMsIGxvZzJf em9fdGJfd2lkdGgsIGxvZzJfem9fdGJfaGVpZ2h0KTsKKworICAgIGlmIChyYy5sYXN0X3N1Yl9i bG9jayA9PSAwICYmIGxvZzJfdGJfd2lkdGggPj0gMiAmJiBsb2cyX3RiX2hlaWdodCA+PSAyICYm ICF0Yi0+dHMgJiYgcmMubGFzdF9zY2FuX3BvcyA+IDApCisgICAgICAgIGxjLT5wYXJzZS5sZm5z dF9kY19vbmx5ID0gMDsKKyAgICBpZiAoKHJjLmxhc3Rfc3ViX2Jsb2NrID4gMCAmJiBsb2cyX3Ri X3dpZHRoID49IDIgJiYgbG9nMl90Yl9oZWlnaHQgPj0gMiApIHx8CisgICAgICAgICAocmMubGFz dF9zY2FuX3BvcyA+IDcgJiYgKGxvZzJfdGJfd2lkdGggPT0gMiB8fCBsb2cyX3RiX3dpZHRoID09 IDMgKSAmJgorICAgICAgICAgbG9nMl90Yl93aWR0aCA9PSBsb2cyX3RiX2hlaWdodCkpCisgICAg ICAgIGxjLT5wYXJzZS5sZm5zdF96ZXJvX291dF9zaWdfY29lZmZfZmxhZyA9IDA7CisgICAgaWYg KChyYy5sYXN0X3N1Yl9ibG9jayA+IDAgfHwgcmMubGFzdF9zY2FuX3BvcyA+IDAgKSAmJiBjX2lk eCA9PSAwKQorICAgICAgICBsYy0+cGFyc2UubXRzX2RjX29ubHkgPSAwOworCisgICAgbWVtc2V0 KHRiLT5jb2VmZnMsIDAsIHRiLT50Yl93aWR0aCAqIHRiLT50Yl9oZWlnaHQgKiBzaXplb2YoKnRi LT5jb2VmZnMpKTsKKyAgICBtZW1zZXQocmMuYWJzX2xldmVsLCAwLCB0Yi0+dGJfd2lkdGggKiB0 Yi0+dGJfaGVpZ2h0ICogc2l6ZW9mKHJjLmFic19sZXZlbFswXSkpOworICAgIG1lbXNldChyYy5z Yl9jb2RlZF9mbGFnLCAwLCByYy5uYl9zYnMpOworICAgIG1lbXNldChyYy5hYnNfbGV2ZWxfcGFz czEsIDAsIHRiLT50Yl93aWR0aCAqIHRiLT50Yl9oZWlnaHQgKiBzaXplb2YocmMuYWJzX2xldmVs X3Bhc3MxWzBdKSk7CisgICAgbWVtc2V0KHJjLnNpZ19jb2VmZl9mbGFnLCAwLCB0Yi0+dGJfd2lk dGggKiB0Yi0+dGJfaGVpZ2h0ICogc2l6ZW9mKHJjLnNpZ19jb2VmZl9mbGFnWzBdKSk7CisKKyAg ICBmb3IgKGludCBpID0gcmMubGFzdF9zdWJfYmxvY2s7IGkgPj0gMDsgaS0tKSB7CisgICAgICAg IGludCByZXQgPSByZXNpZHVhbF9jb2Rpbmdfc3ViYmxvY2sobGMsICZyYywgaSk7CisgICAgICAg IGlmIChyZXQgPCAwKQorICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICByZXR1 cm4gMDsKK30KKworaW50IGZmX3Z2Y19yZXNpZHVhbF9jb2RpbmcoVlZDTG9jYWxDb250ZXh0ICps YywgVHJhbnNmb3JtQmxvY2sgKnRiKQoreworICAgIGNvbnN0IEgyNjZSYXdTbGljZUhlYWRlciAq cnNoICAgPSBsYy0+c2MtPnNoLnI7CisgICAgY29uc3QgaW50IHRzICAgICAgICAgICAgICAgICAg ICA9ICFyc2gtPnNoX3RzX3Jlc2lkdWFsX2NvZGluZ19kaXNhYmxlZF9mbGFnICYmIHRiLT50czsK KworICAgIHJldHVybiB0cyA/IGhsc19yZXNpZHVhbF90c19jb2RpbmcobGMsIHRiKSA6IGhsc19y ZXNpZHVhbF9jb2RpbmcobGMsIHRiKTsKK30KKworaW50IGZmX3Z2Y19jdV9jb2RlZF9mbGFnKFZW Q0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhDVV9DT0RFRF9GTEFH KTsKK30KKworaW50IGZmX3Z2Y19zYnRfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAg IGNvbnN0IGludCB3ICAgICA9IGxjLT5jdS0+Y2Jfd2lkdGg7CisgICAgY29uc3QgaW50IGggICAg ID0gbGMtPmN1LT5jYl9oZWlnaHQ7CisgICAgY29uc3QgaW50IGluYyAgID0gdyAqIGggPD0gMjU2 OworICAgIHJldHVybiBHRVRfQ0FCQUMoQ1VfU0JUX0ZMQUcgKyBpbmMpOworfQorCitpbnQgZmZf dnZjX3NidF9xdWFkX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gR0VU X0NBQkFDKENVX1NCVF9RVUFEX0ZMQUcpOworfQorCitpbnQgZmZfdnZjX3NidF9ob3Jpem9udGFs X2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBjb25zdCBpbnQgdyA9IGxjLT5jdS0+ Y2Jfd2lkdGg7CisgICAgY29uc3QgaW50IGggPSBsYy0+Y3UtPmNiX2hlaWdodDsKKyAgICBjb25z dCBpbnQgaW5jID0gKHcgPT0gaCkgPyAwIDogKCh3IDwgaCkgPyAxIDogMik7CisgICAgcmV0dXJu IEdFVF9DQUJBQyhDVV9TQlRfSE9SSVpPTlRBTF9GTEFHICsgaW5jKTsKK30KKworaW50IGZmX3Z2 Y19zYnRfcG9zX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gR0VUX0NB QkFDKENVX1NCVF9QT1NfRkxBRyk7Cit9CisKK2ludCBmZl92dmNfbGZuc3RfaWR4KFZWQ0xvY2Fs Q29udGV4dCAqbGMsIGNvbnN0IGludCBpbmMpCit7CisgICAgaWYgKCFHRVRfQ0FCQUMoTEZOU1Rf SURYICsgaW5jKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFHRVRfQ0FCQUMoTEZOU1Rf SURYICsgMikpCisgICAgICAgIHJldHVybiAxOworICAgIHJldHVybiAyOworfQorCitpbnQgZmZf dnZjX210c19pZHgoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBpbnQgaTsKKyAgICBmb3Ig KGkgPSAwOyBpIDwgNDsgaSsrKSB7CisgICAgICAgIGlmICghR0VUX0NBQkFDKE1UU19JRFggKyBp KSkKKyAgICAgICAgICAgIHJldHVybiBpOworICAgIH0KKyAgICByZXR1cm4gaTsKK30KKworaW50 IGZmX3Z2Y19lbmRfb2Zfc2xpY2VfZmxhZ19kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sK KyAgICByZXR1cm4gZ2V0X2NhYmFjX3Rlcm1pbmF0ZSgmbGMtPmVwLT5jYyk7Cit9CisKK2ludCBm Zl92dmNfZW5kX29mX3RpbGVfb25lX2JpdChWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJl dHVybiBnZXRfY2FiYWNfdGVybWluYXRlKCZsYy0+ZXAtPmNjKTsKK30KKworaW50IGZmX3Z2Y19l bmRfb2Zfc3Vic2V0X29uZV9iaXQoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4g Z2V0X2NhYmFjX3Rlcm1pbmF0ZSgmbGMtPmVwLT5jYyk7Cit9CmRpZmYgLS1naXQgYS9saWJhdmNv ZGVjL3Z2Yy92dmNfY2FiYWMuaCBiL2xpYmF2Y29kZWMvdnZjL3Z2Y19jYWJhYy5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjViYjFhZTgzZjcKLS0tIC9kZXYvbnVsbAor KysgYi9saWJhdmNvZGVjL3Z2Yy92dmNfY2FiYWMuaApAQCAtMCwwICsxLDEyNiBAQAorLyoKKyAq IFZWQyBDQUJBQyBkZWNvZGVyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDIyIE51byBNaQorICoK KyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq IHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq IExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m dHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv b3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworCisjaWZuZGVmIEFWQ09ERUNfVlZD X0NBQkFDX0gKKyNkZWZpbmUgQVZDT0RFQ19WVkNfQ0FCQUNfSAorCisjaW5jbHVkZSAidnZjX2N0 dS5oIgorCitpbnQgZmZfdnZjX2NhYmFjX2luaXQoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IGN0 dV9pZHgsIGludCByeCwgaW50IHJ5KTsKKworLy9zYW8KK2ludCBmZl92dmNfc2FvX21lcmdlX2Zs YWdfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19zYW9fdHlwZV9pZHhf ZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19zYW9fYmFuZF9wb3NpdGlv bl9kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX3Nhb19vZmZzZXRfYWJz X2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfc2FvX29mZnNldF9zaWdu X2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfc2FvX2VvX2NsYXNzX2Rl Y29kZShWVkNMb2NhbENvbnRleHQgKmxjKTsKKworLy9hbGYKK2ludCBmZl92dmNfYWxmX2N0Yl9m bGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGludCByeCwgaW50IHJ5LCBpbnQgY19pZHgpOworaW50 IGZmX3Z2Y19hbGZfdXNlX2Fwc19mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2 Y19hbGZfbHVtYV9wcmV2X2ZpbHRlcl9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZf dnZjX2FsZl9sdW1hX2ZpeGVkX2ZpbHRlcl9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQg ZmZfdnZjX2FsZl9jdGJfZmlsdGVyX2FsdF9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IGNf aWR4LCBpbnQgbnVtX2Nocm9tYV9maWx0ZXJzKTsKK2ludCBmZl92dmNfYWxmX2N0Yl9jY19pZGMo VlZDTG9jYWxDb250ZXh0ICpsYywgaW50IHJ4LCBpbnQgcnksIGludCBpZHgsIGludCBjY19maWx0 ZXJzX3NpZ25hbGxlZCk7CisKKy8vY29kaW5nX3RyZWUKK2ludCBmZl92dmNfc3BsaXRfY3VfZmxh ZyhWVkNMb2NhbENvbnRleHQqIGxjLCBpbnQgeDAsIGludCB5MCwgaW50IGNiX3dpZHRoLCBpbnQg Y2JfaGVpZ2h0LAorICAgIGludCBjaF90eXBlLCBjb25zdCBWVkNBbGxvd2VkU3BsaXQgKmEpOwor VlZDU3BsaXRNb2RlIGZmX3Z2Y19zcGxpdF9tb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsICBpbnQg eDAsIGludCB5MCwgaW50IGNiX3dpZHRoLCBpbnQgY2JfaGVpZ2h0LAorICAgIGludCBjcXRfZGVw dGgsIGludCBtdHRfZGVwdGgsIGludCBjaF90eXBlLCBjb25zdCBWVkNBbGxvd2VkU3BsaXQgKmEp OworaW50IGZmX3Z2Y19ub25faW50ZXJfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjLCBpbnQgeDAs IGludCB5MCwgaW50IGNoX3R5cGUpOworCisvL2NvZGluZyB1bml0CitpbnQgZmZfdnZjX3ByZWRf bW9kZV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGludCBpc19jaHJvbWEpOworaW50IGZmX3Z2 Y19wcmVkX21vZGVfcGx0X2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2lu dHJhX2JkcGNtX2x1bWFfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfaW50 cmFfYmRwY21fbHVtYV9kaXJfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNf aW50cmFfYmRwY21fY2hyb21hX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZj X2ludHJhX2JkcGNtX2Nocm9tYV9kaXJfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBm Zl92dmNfY3Vfc2tpcF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IHVpbnQ4X3QgKmN1 X3NraXBfZmxhZyk7CitpbnQgZmZfdnZjX3ByZWRfbW9kZV9pYmNfZmxhZyhWVkNMb2NhbENvbnRl eHQgKmxjLCBpbnQgY2hfdHlwZSk7CitpbnQgZmZfdnZjX2N1X2NvZGVkX2ZsYWcoVlZDTG9jYWxD b250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2N1X3FwX2RlbHRhX2FicyhWVkNMb2NhbENvbnRleHQg KmxjKTsKK2ludCBmZl92dmNfY3VfcXBfZGVsdGFfc2lnbl9mbGFnKFZWQ0xvY2FsQ29udGV4dCAq bGMpOworaW50IGZmX3Z2Y19zYnRfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92 dmNfc2J0X3F1YWRfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfc2J0X2hv cml6b250YWxfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfc2J0X3Bvc19m bGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworCisvL2ludHJhCitpbnQgZmZfdnZjX2ludHJhX21p cF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IHVpbnQ4X3QgKmludHJhX21pcF9mbGFn KTsKK2ludCBmZl92dmNfaW50cmFfbWlwX3RyYW5zcG9zZWRfZmxhZyhWVkNMb2NhbENvbnRleHQg KmxjKTsKK2ludCBmZl92dmNfaW50cmFfbWlwX21vZGUoVlZDTG9jYWxDb250ZXh0ICpsYyk7Citp bnQgZmZfdnZjX2ludHJhX2x1bWFfcmVmX2lkeChWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBm Zl92dmNfaW50cmFfc3VicGFydGl0aW9uc19tb2RlX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7 CitlbnVtIElzcFR5cGUgZmZfdnZjX2lzcF9zcGxpdF90eXBlKFZWQ0xvY2FsQ29udGV4dCAqbGMs IGludCBpbnRyYV9zdWJwYXJ0aXRpb25zX21vZGVfZmxhZyk7CitpbnQgZmZfdnZjX2ludHJhX2x1 bWFfbXBtX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2ludHJhX2x1bWFf bm90X3BsYW5hcl9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGludCBpbnRyYV9zdWJwYXJ0aXRp b25zX21vZGVfZmxhZyk7CitpbnQgZmZfdnZjX2ludHJhX2x1bWFfbXBtX2lkeChWVkNMb2NhbENv bnRleHQgKmxjKTsKK2ludCBmZl92dmNfaW50cmFfbHVtYV9tcG1fcmVtYWluZGVyKFZWQ0xvY2Fs Q29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19jY2xtX21vZGVfZmxhZyhWVkNMb2NhbENvbnRleHQg KmxjKTsKK2ludCBmZl92dmNfY2NsbV9tb2RlX2lkeChWVkNMb2NhbENvbnRleHQgKmxjKTsKK2lu dCBmZl92dmNfaW50cmFfY2hyb21hX3ByZWRfbW9kZShWVkNMb2NhbENvbnRleHQgKmxjKTsKKwor Ly9pbnRlcgoraW50IGZmX3Z2Y19nZW5lcmFsX21lcmdlX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICps Yyk7CitpbnQgZmZfdnZjX21lcmdlX3N1YmJsb2NrX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7 CitpbnQgZmZfdnZjX21lcmdlX3N1YmJsb2NrX2lkeChWVkNMb2NhbENvbnRleHQgKmxjLCBpbnQg bWF4X251bV9zdWJibG9ja19tZXJnZV9jYW5kKTsKK2ludCBmZl92dmNfcmVndWxhcl9tZXJnZV9m bGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGludCBjdV9za2lwX2ZsYWcpOworaW50IGZmX3Z2Y19t ZXJnZV9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX21tdmRfbWVyZ2VfZmxh ZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfbW12ZF9jYW5kX2ZsYWcoVlZDTG9j YWxDb250ZXh0ICpsYyk7Cit2b2lkIGZmX3Z2Y19tbXZkX29mZnNldF9jb2RpbmcoVlZDTG9jYWxD b250ZXh0ICpsYywgTXYgKm12ZF9vZmZzZXQsIGludCBwaF9tbXZkX2Z1bGxwZWxfb25seV9mbGFn KTsKK2ludCBmZl92dmNfY2lpcF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2 Y19tZXJnZV9ncG1fcGFydGl0aW9uX2lkeChWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92 dmNfbWVyZ2VfZ3BtX2lkeChWVkNMb2NhbENvbnRleHQgKmxjLCBpbnQgaWR4KTsKK1ByZWRGbGFn IGZmX3Z2Y19wcmVkX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IGlzX2IpOworaW50IGZm X3Z2Y19pbnRlcl9hZmZpbmVfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNf Y3VfYWZmaW5lX3R5cGVfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfc3lt X212ZF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19yZWZfaWR4X2x4KFZW Q0xvY2FsQ29udGV4dCAqbGMsIHVpbnQ4X3QgbmJfcmVmcyk7CitpbnQgZmZfdnZjX2Fic19tdmRf Z3JlYXRlcjBfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfYWJzX212ZF9n cmVhdGVyMV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19hYnNfbXZkX21p bnVzMihWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfbXZkX3NpZ25fZmxhZyhWVkNM b2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfbXZwX2x4X2ZsYWcoVlZDTG9jYWxDb250ZXh0 ICpsYyk7CitpbnQgZmZfdnZjX2FtdnJfc2hpZnQoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IGlu dGVyX2FmZmluZV9mbGFnLCBQcmVkTW9kZSBwcmVkX21vZGUsIGludCBoYXNfYW12cl9mbGFnKTsK K2ludCBmZl92dmNfYmN3X2lkeChWVkNMb2NhbENvbnRleHQgKmxjLCBpbnQgbm9fYmFja3dhcmRf cHJlZF9mbGFnKTsKKworLy90cmFuc2Zvcm0KK2ludCBmZl92dmNfdHVfY2JfY29kZWRfZmxhZyhW VkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfdHVfY3JfY29kZWRfZmxhZyhWVkNMb2Nh bENvbnRleHQgKmxjLCBpbnQgdHVfY2JfY29kZWRfZmxhZyk7CitpbnQgZmZfdnZjX3R1X3lfY29k ZWRfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfY3VfY2hyb21hX3FwX29m ZnNldF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19jdV9jaHJvbWFfcXBf b2Zmc2V0X2lkeChWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfdHVfam9pbnRfY2Jj cl9yZXNpZHVhbF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGludCB0dV9jYl9jb2RlZF9mbGFn LCBpbnQgdHVfY3JfY29kZWRfZmxhZyk7CitpbnQgZmZfdnZjX3RyYW5zZm9ybV9za2lwX2ZsYWco VlZDTG9jYWxDb250ZXh0ICpsYywgaW50IGN0eCk7CitpbnQgZmZfdnZjX3Jlc2lkdWFsX2NvZGlu ZyhWVkNMb2NhbENvbnRleHQgKmxjLCBUcmFuc2Zvcm1CbG9jayAqdGIpOworaW50IGZmX3Z2Y19s Zm5zdF9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IGluYyk7CitpbnQgZmZfdnZjX210c19p ZHgoVlZDTG9jYWxDb250ZXh0ICpsYyk7CisKK2ludCBmZl92dmNfZW5kX29mX3NsaWNlX2ZsYWdf ZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19lbmRfb2ZfdGlsZV9vbmVf Yml0KFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19lbmRfb2Zfc3Vic2V0X29uZV9i aXQoVlZDTG9jYWxDb250ZXh0ICpsYyk7CisKKyNlbmRpZiAvL0FWQ09ERUNfVlZDX0NBQkFDX0gK ZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdnZjL3Z2Y19jdHUuYyBiL2xpYmF2Y29kZWMvdnZjL3Z2 Y19jdHUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi43OGIxM2ZmYjAw Ci0tLSAvZGV2L251bGwKKysrIGIvbGliYXZjb2RlYy92dmMvdnZjX2N0dS5jCkBAIC0wLDAgKzEs MzIgQEAKKy8qCisgKiBWVkMgQ1RVKENvZGluZyBUcmVlIFVuaXQpIHBhcnNlcgorICoKKyAqIENv cHlyaWdodCAoQykgMjAyMiBOdW8gTWkKKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1w ZWcuCisgKgorICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwg b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1wZWcgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBp ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1 MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNB CisgKi8KKworI2luY2x1ZGUgInZ2Y19jdHUuaCIKKwordm9pZCBmZl92dmNfZXBfaW5pdF9zdGF0 X2NvZWZmKEVudHJ5UG9pbnQgKmVwLAorCWNvbnN0IGludCBiaXRfZGVwdGgsIGNvbnN0IGludCBw ZXJzaXN0ZW50X3JpY2VfYWRhcHRhdGlvbl9lbmFibGVkX2ZsYWcpCit7CisgICAgZm9yIChzaXpl X3QgaSA9IDA7IGkgPCBGRl9BUlJBWV9FTEVNUyhlcC0+c3RhdF9jb2VmZik7ICsraSkgeworICAg ICAgICBlcC0+c3RhdF9jb2VmZltpXSA9CisgICAgICAgICAgICBwZXJzaXN0ZW50X3JpY2VfYWRh cHRhdGlvbl9lbmFibGVkX2ZsYWcgPyAyICogKGF2X2xvZzIoYml0X2RlcHRoIC0gMTApKSA6IDA7 CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92dmMvdnZjX2N0dS5oIGIvbGliYXZj b2RlYy92dmMvdnZjX2N0dS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu LjdhY2IzNjFlMjEKLS0tIC9kZXYvbnVsbAorKysgYi9saWJhdmNvZGVjL3Z2Yy92dmNfY3R1LmgK QEAgLTAsMCArMSw0MDYgQEAKKy8qCisgKiBWVkMgQ1RVKENvZGluZyBUcmVlIFVuaXQpIHBhcnNl cgorICoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBOdW8gTWkKKyAqCisgKiBUaGlzIGZpbGUgaXMg cGFydCBvZiBGRm1wZWcuCisgKgorICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0 aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg KiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdp dGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0 aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAy MTEwLTEzMDEgVVNBCisgKi8KKworI2lmbmRlZiBBVkNPREVDX1ZWQ19DVFVfSAorI2RlZmluZSBB VkNPREVDX1ZWQ19DVFVfSAorCisjaW5jbHVkZSAibGliYXZjb2RlYy9jYWJhYy5oIgorI2luY2x1 ZGUgImxpYmF2dXRpbC9tZW1faW50ZXJuYWwuaCIKKworI2luY2x1ZGUgInZ2Y2RlYy5oIgorCitl bnVtIFNBT1R5cGUgeworICAgIFNBT19OT1RfQVBQTElFRCA9IDAsCisgICAgU0FPX0JBTkQsCisg ICAgU0FPX0VER0UsCisgICAgU0FPX0FQUExJRUQKK307CisKK2VudW0gU0FPRU9DbGFzcyB7Cisg ICAgU0FPX0VPX0hPUklaID0gMCwKKyAgICBTQU9fRU9fVkVSVCwKKyAgICBTQU9fRU9fMTM1RCwK KyAgICBTQU9fRU9fNDVELAorfTsKKwordHlwZWRlZiBzdHJ1Y3QgTmVpZ2hib3VyQXZhaWxhYmxl IHsKKyAgICBpbnQgY2FuZF9sZWZ0OworICAgIGludCBjYW5kX3VwOworICAgIGludCBjYW5kX3Vw X2xlZnQ7CisgICAgaW50IGNhbmRfdXBfcmlnaHQ7CisgICAgaW50IGNhbmRfdXBfcmlnaHRfc2Fw OworfSBOZWlnaGJvdXJBdmFpbGFibGU7CisKK2VudW0gSXNwVHlwZXsKKyAgICBJU1BfTk9fU1BM SVQsCisgICAgSVNQX0hPUl9TUExJVCwKKyAgICBJU1BfVkVSX1NQTElULAorfTsKKwordHlwZWRl ZiBlbnVtIFZWQ1NwbGl0TW9kZSB7CisgICAgU1BMSVRfTk9ORSwKKyAgICBTUExJVF9UVF9IT1Is CisgICAgU1BMSVRfQlRfSE9SLAorICAgIFNQTElUX1RUX1ZFUiwKKyAgICBTUExJVF9CVF9WRVIs CisgICAgU1BMSVRfUVQsCit9IFZWQ1NwbGl0TW9kZTsKKwordHlwZWRlZiBlbnVtIE10c0lkeCB7 CisgICAgTVRTX0RDVDJfRENUMiwKKyAgICBNVFNfRFNUN19EU1Q3LAorICAgIE1UU19EU1Q3X0RD VDgsCisgICAgTVRTX0RDVDhfRFNUNywKKyAgICBNVFNfRENUOF9EQ1Q4LAorfSBNdHNJZHg7CisK K3R5cGVkZWYgc3RydWN0IFRyYW5zZm9ybUJsb2NrIHsKKyAgICB1aW50OF90IGhhc19jb2VmZnM7 CisgICAgdWludDhfdCBjX2lkeDsKKyAgICB1aW50OF90IHRzOyAgICAgICAgICAgICAvLy88ICB0 cmFuc2Zvcm1fc2tpcF9mbGFnCisgICAgaW50IHgwOworICAgIGludCB5MDsKKworICAgIGludCB0 Yl93aWR0aDsKKyAgICBpbnQgdGJfaGVpZ2h0OworICAgIGludCBsb2cyX3RiX3dpZHRoOworICAg IGludCBsb2cyX3RiX2hlaWdodDsKKworICAgIGludCBtYXhfc2Nhbl94OworICAgIGludCBtYXhf c2Nhbl95OworICAgIGludCBtaW5fc2Nhbl94OworICAgIGludCBtaW5fc2Nhbl95OworCisgICAg aW50IHFwOworICAgIGludCByZWN0X25vbl90c19mbGFnOworICAgIGludCBiZF9zaGlmdDsKKyAg ICBpbnQgYmRfb2Zmc2V0OworCisgICAgaW50ICpjb2VmZnM7Cit9IFRyYW5zZm9ybUJsb2NrOwor Cit0eXBlZGVmIGVudW0gVlZDVHJlZVR5cGUgeworICAgIFNJTkdMRV9UUkVFLAorICAgIERVQUxf VFJFRV9MVU1BLAorICAgIERVQUxfVFJFRV9DSFJPTUEsCit9IFZWQ1RyZWVUeXBlOworCit0eXBl ZGVmIHN0cnVjdCBUcmFuc2Zvcm1Vbml0IHsKKyAgICBBVkJ1ZmZlclJlZiAqYnVmOworCisgICAg aW50IHgwOworICAgIGludCB5MDsKKyAgICBpbnQgd2lkdGg7CisgICAgaW50IGhlaWdodDsKKwor ICAgIHVpbnQ4X3Qgam9pbnRfY2Jjcl9yZXNpZHVhbF9mbGFnOyAgICAgICAgICAgICAgICAgICAv Ly88IHR1X2pvaW50X2NiY3JfcmVzaWR1YWxfZmxhZworCisgICAgdWludDhfdCBjb2RlZF9mbGFn W1ZWQ19NQVhfU0FNUExFX0FSUkFZU107ICAgICAgICAgIC8vLzwgdHVfeV9jb2RlZF9mbGFnLCB0 dV9jYl9jb2RlZF9mbGFnLCB0dV9jcl9jb2RlZF9mbGFnCisgICAgdWludDhfdCBuYl90YnM7Cisg ICAgVHJhbnNmb3JtQmxvY2sgdGJzW1ZWQ19NQVhfU0FNUExFX0FSUkFZU107CisKKyAgICBzdHJ1 Y3QgVHJhbnNmb3JtVW5pdCAqbmV4dDsKK30gVHJhbnNmb3JtVW5pdDsKKwordHlwZWRlZiBlbnVt IFByZWRNb2RlIHsKKyAgICBNT0RFX0lOVEVSLAorICAgIE1PREVfSU5UUkEsCisgICAgTU9ERV9T S0lQLAorICAgIE1PREVfUExULAorICAgIE1PREVfSUJDLAorfSBQcmVkTW9kZTsKKwordHlwZWRl ZiBzdHJ1Y3QgTXYgeworICAgIGludCB4OyAgLy8vPCBob3Jpem9udGFsIGNvbXBvbmVudCBvZiBt b3Rpb24gdmVjdG9yCisgICAgaW50IHk7ICAvLy88IHZlcnRpY2FsIGNvbXBvbmVudCBvZiBtb3Rp b24gdmVjdG9yCit9IE12OworCit0eXBlZGVmIHN0cnVjdCBNdkZpZWxkIHsKKyAgICBERUNMQVJF X0FMSUdORUQoNCwgTXYsIG12KVsyXTsgIC8vLzwgbXZMMCwgdnZMMQorICAgIGludDhfdCAgcmVm X2lkeFsyXTsgICAgICAgICAgICAgLy8vPCByZWZJZHhMMCwgcmVmSWR4TDEKKyAgICB1aW50OF90 IGhwZWxfaWZfaWR4OyAgICAgICAgICAgIC8vLzwgaHBlbElmSWR4CisgICAgdWludDhfdCBiY3df aWR4OyAgICAgICAgICAgICAgICAvLy88IGJjd0lkeAorICAgIHVpbnQ4X3QgcHJlZF9mbGFnOwor ICAgIHVpbnQ4X3QgY2lpcF9mbGFnOyAgICAgICAgICAgICAgLy8vPCBjaWlwX2ZsYWcKK30gTXZG aWVsZDsKKwordHlwZWRlZiBzdHJ1Y3QgRE1WUkluZm8geworICAgIERFQ0xBUkVfQUxJR05FRCg0 LCBNdiwgbXYpWzJdOyAgLy8vPCBtdkwwLCB2dkwxCisgICAgdWludDhfdCBkbXZyX2VuYWJsZWQ7 Cit9IERNVlJJbmZvOworCit0eXBlZGVmIGVudW0gTW90aW9uTW9kZWxJZGMgeworICAgIE1PVElP Tl9UUkFOU0xBVElPTiwKKyAgICBNT1RJT05fNF9QQVJBTVNfQUZGSU5FLAorICAgIE1PVElPTl82 X1BBUkFNU19BRkZJTkUsCit9IE1vdGlvbk1vZGVsSWRjOworCit0eXBlZGVmIGVudW0gUHJlZEZs YWcgeworICAgIFBGX0lOVFJBID0gMHgwLAorICAgIFBGX0wwICAgID0gMHgxLAorICAgIFBGX0wx ICAgID0gMHgyLAorICAgIFBGX0JJICAgID0gMHgzLAorfSBQcmVkRmxhZzsKKwordHlwZWRlZiBl bnVtIEludHJhUHJlZE1vZGUgeworICAgIElOVFJBX0lOVkFMSUQgICA9IC0xLAorICAgIElOVFJB X1BMQU5BUiAgICA9IDAsCisgICAgSU5UUkFfREMsCisgICAgSU5UUkFfSE9SWiAgICAgID0gMTgs CisgICAgSU5UUkFfRElBRyAgICAgID0gMzQsCisgICAgSU5UUkFfVkVSVCAgICAgID0gNTAsCisg ICAgSU5UUkFfVkRJQUcgICAgID0gNjYsCisgICAgSU5UUkFfTFRfQ0NMTSAgID0gODEsCisgICAg SU5UUkFfTF9DQ0xNLAorICAgIElOVFJBX1RfQ0NMTQorfSBJbnRyYVByZWRNb2RlOworCit0eXBl ZGVmIHN0cnVjdCBNb3Rpb25JbmZvIHsKKyAgICBNb3Rpb25Nb2RlbElkYyBtb3Rpb25fbW9kZWxf aWRjOyAvLy88IE1vdGlvbk1vZGVsSWRjCisgICAgaW50OF90ICAgcmVmX2lkeFsyXTsgICAgICAg ICAgICAgLy8vPCByZWZJZHhMMCwgcmVmSWR4TDEKKyAgICB1aW50OF90ICBocGVsX2lmX2lkeDsg ICAgICAgICAgICAvLy88IGhwZWxJZklkeAorICAgIHVpbnQ4X3QgIGJjd19pZHg7ICAgICAgICAg ICAgICAgIC8vLzwgYmN3SWR4CisgICAgUHJlZEZsYWcgcHJlZF9mbGFnOworCisgICAgTXYgbXZb Ml1bTUFYX0NPTlRST0xfUE9JTlRTXTsKKworICAgIGludCBudW1fc2JfeCwgbnVtX3NiX3k7Cit9 IE1vdGlvbkluZm87CisKK3R5cGVkZWYgc3RydWN0IFByZWRpY3Rpb25Vbml0IHsKKyAgICB1aW50 OF90IGdlbmVyYWxfbWVyZ2VfZmxhZzsKKyAgICB1aW50OF90IG1tdmRfbWVyZ2VfZmxhZzsKKyAg ICAvL0ludGVyUHJlZElkYyBpbnRlcl9wcmVkX2lkYzsKKyAgICB1aW50OF90IGludGVyX2FmZmlu ZV9mbGFnOworCisgICAgLy9zdWJibG9jayBwcmVkaWN0CisgICAgdWludDhfdCBtZXJnZV9zdWJi bG9ja19mbGFnOworCisgICAgdWludDhfdCBtZXJnZV9ncG1fZmxhZzsKKyAgICB1aW50OF90IGdw bV9wYXJ0aXRpb25faWR4OworICAgIE12RmllbGQgZ3BtX212WzJdOworCisgICAgaW50IHN5bV9t dmRfZmxhZzsKKworICAgIE1vdGlvbkluZm8gbWk7CisKKyAgICAvLyBmb3IgcmVndWxhciBwcmVk aWN0aW9uIG9ubHkKKyAgICB1aW50OF90IGRtdnJfZmxhZzsKKyAgICB1aW50OF90IGJkb2ZfZmxh ZzsKKworICAgIGludDE2X3QgZGlmZl9tdl94WzJdW0FGRklORV9NSU5fQkxPQ0tfU0laRSAqIEFG RklORV9NSU5fQkxPQ0tfU0laRV07ICAgLy8vPCBkaWZmTXZMWAorICAgIGludDE2X3QgZGlmZl9t dl95WzJdW0FGRklORV9NSU5fQkxPQ0tfU0laRSAqIEFGRklORV9NSU5fQkxPQ0tfU0laRV07ICAg Ly8vPCBkaWZmTXZMWAorICAgIGludCBjYl9wcm9mX2ZsYWdbMl07Cit9IFByZWRpY3Rpb25Vbml0 OworCit0eXBlZGVmIHN0cnVjdCBDb2RpbmdVbml0IHsKKyAgICBBVkJ1ZmZlclJlZiAqYnVmOwor CisgICAgVlZDVHJlZVR5cGUgdHJlZV90eXBlOworICAgIGludCB4MDsKKyAgICBpbnQgeTA7Cisg ICAgaW50IGNiX3dpZHRoOworICAgIGludCBjYl9oZWlnaHQ7CisgICAgaW50IGNoX3R5cGU7Cisg ICAgaW50IGNxdF9kZXB0aDsKKworICAgIHVpbnQ4X3QgY29kZWRfZmxhZzsKKworICAgIHVpbnQ4 X3Qgc2J0X2ZsYWc7CisgICAgdWludDhfdCBzYnRfaG9yaXpvbnRhbF9mbGFnOworICAgIHVpbnQ4 X3Qgc2J0X3Bvc19mbGFnOworCisgICAgaW50IGxmbnN0X2lkeDsKKyAgICBNdHNJZHggbXRzX2lk eDsKKworICAgIHVpbnQ4X3QgYWN0X2VuYWJsZWRfZmxhZzsKKworICAgIHVpbnQ4X3QgaW50cmFf bHVtYV9yZWZfaWR4OyAgICAgICAgICAgICAgICAgICAgIC8vLzwgSW50cmFMdW1hUmVmTGluZUlk eFtdW10KKyAgICB1aW50OF90IGludHJhX21pcF9mbGFnOyAgICAgICAgICAgICAgICAgICAgICAg ICAvLy88IGludHJhX21pcF9mbGFnCisgICAgdWludDhfdCBza2lwX2ZsYWc7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLy8vPCBjdV9za2lwX2ZsYWc7CisKKyAgICAvL2ludGVyCisgICAg dWludDhfdCBjaWlwX2ZsYWc7CisKKyAgICAvLyBJbmZlcnJlZCBwYXJhbWV0ZXJzCisgICAgZW51 bSBJc3BUeXBlIGlzcF9zcGxpdF90eXBlOyAgICAgICAgICAgICAgICAgICAgLy8vPCBJbnRyYVN1 YlBhcnRpdGlvbnNTcGxpdFR5cGUKKworICAgIGVudW0gUHJlZE1vZGUgcHJlZF9tb2RlOyAgICAg ICAgICAgICAgICAgICAgICAgIC8vLzwgUHJlZE1vZGUKKworICAgIGludCBudW1faW50cmFfc3Vi cGFydGl0aW9uczsKKworICAgIEludHJhUHJlZE1vZGUgaW50cmFfcHJlZF9tb2RlX3k7ICAgICAg ICAgICAgICAgIC8vLzwgSW50cmFQcmVkTW9kZVkKKyAgICBJbnRyYVByZWRNb2RlIGludHJhX3By ZWRfbW9kZV9jOyAgICAgICAgICAgICAgICAvLy88IEludHJhUHJlZE1vZGVDCisgICAgaW50IG1p cF9jaHJvbWFfZGlyZWN0X2ZsYWc7ICAgICAgICAgICAgICAgICAgICAgLy8vPCBNaXBDaHJvbWFE aXJlY3RGbGFnCisKKyAgICBpbnQgYmRwY21fZmxhZ1tWVkNfTUFYX1NBTVBMRV9BUlJBWVNdOyAg ICAgICAgICAvLy88IEJkcGNtRmxhZworCisgICAgaW50IGFwcGx5X2xmbnN0X2ZsYWdbVlZDX01B WF9TQU1QTEVfQVJSQVlTXTsgICAgLy8vPCBBcHBseUxmbnN0RmxhZ1tdCisKKyAgICBzdHJ1Y3Qg eworICAgICAgICBUcmFuc2Zvcm1Vbml0ICpoZWFkOworICAgICAgICBUcmFuc2Zvcm1Vbml0ICp0 YWlsOworICAgIH0gdHVzOworCisgICAgaW50OF90IHFwWzRdOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLy8vPCBRcFksIFFw4oCyQ2IsIFFw4oCyQ3IsIFFw4oCyQ2JDcgorCisg ICAgUHJlZGljdGlvblVuaXQgcHU7CisKKyAgICBzdHJ1Y3QgQ29kaW5nVW5pdCAqbmV4dDsKK30g Q29kaW5nVW5pdDsKKworc3RydWN0IENUVSB7CisgICAgQ29kaW5nVW5pdCAqY3VzOworICAgIGlu dCBtYXhfeVsyXVtWVkNfTUFYX1JFRl9FTlRSSUVTXTsKKyAgICBpbnQgbWF4X3lfaWR4WzJdOwor fTsKKwordHlwZWRlZiBzdHJ1Y3QgUmVjb25zdHJ1Y3RlZEFyZWEgeworICAgIGludCB4OworICAg IGludCB5OworICAgIGludCB3OworICAgIGludCBoOworfSBSZWNvbnN0cnVjdGVkQXJlYTsKKwor dHlwZWRlZiBzdHJ1Y3QgVlZDQ2FiYWNTdGF0ZSB7CisgICAgdWludDE2X3Qgc3RhdGVbMl07Cisg ICAgdWludDhfdCAgc2hpZnRbMl07Cit9IFZWQ0NhYmFjU3RhdGU7CisKKy8vIFZWQ19DT05URVhU UyBtYXRjaGVkIHdpdGggU1lOVEFYX0VMRU1FTlRfTEFTVCwgaXQncyBjaGVja2VkIGJ5IGNhYmFj X2luaXRfc3RhdGUuCisjZGVmaW5lIFZWQ19DT05URVhUUyAzNzgKK3R5cGVkZWYgc3RydWN0IEVu dHJ5UG9pbnQgeworICAgIGludDhfdCBxcF95OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8vLzwgUXBZCisKKyAgICBpbnQgc3RhdF9jb2VmZltWVkNfTUFYX1NBTVBMRV9BUlJB WVNdOyAgICAgICAgICAvLy88IFN0YXRDb2VmZgorCisgICAgVlZDQ2FiYWNTdGF0ZSBjYWJhY19z dGF0ZVtWVkNfQ09OVEVYVFNdOworICAgIENBQkFDQ29udGV4dCBjYzsKKworICAgIFZWQ1Rhc2sg KnBhcnNlX3Rhc2s7CisgICAgaW50IGN0dV9lbmQ7CisKKyAgICB1aW50OF90IGlzX2ZpcnN0X3Fn OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmaXJzdCBxdWFudGl6YXRpb24gZ3JvdXAK KyAgICBNdkZpZWxkIGhtdnBbTUFYX05VTV9ITVZQX0NBTkRTXTsgICAgICAgICAgICAgICAvLy88 IEhtdnBDYW5kTGlzdAorICAgIGludCAgICAgbnVtX2htdnA7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8vLzwgTnVtSG12cENhbmQKK30gRW50cnlQb2ludDsKKworc3RydWN0IFZWQ0xv Y2FsQ29udGV4dCB7CisgICAgdWludDhfdCBjdGJfbGVmdF9mbGFnOworICAgIHVpbnQ4X3QgY3Ri X3VwX2ZsYWc7CisgICAgdWludDhfdCBjdGJfdXBfcmlnaHRfZmxhZzsKKyAgICB1aW50OF90IGN0 Yl91cF9sZWZ0X2ZsYWc7CisgICAgaW50ICAgICBlbmRfb2ZfdGlsZXNfeDsKKyAgICBpbnQgICAg IGVuZF9vZl90aWxlc195OworCisgICAgLyogKzcgaXMgZm9yIHN1YnBpeGVsIGludGVycG9sYXRp b24sICoyIGZvciBoaWdoIGJpdCBkZXB0aHMgKi8KKyAgICBERUNMQVJFX0FMSUdORUQoMzIsIHVp bnQ4X3QsIGVkZ2VfZW11X2J1ZmZlcilbKE1BWF9QQl9TSVpFICsgNykgKiBFREdFX0VNVV9CVUZG RVJfU1RSSURFICogMl07CisgICAgLyogVGhlIGV4dGVuZGVkIHNpemUgYmV0d2VlbiB0aGUgbmV3 IGVkZ2UgZW11IGJ1ZmZlciBpcyBhYnVzZWQgYnkgU0FPICovCisgICAgREVDTEFSRV9BTElHTkVE KDMyLCB1aW50OF90LCBlZGdlX2VtdV9idWZmZXIyKVsoTUFYX1BCX1NJWkUgKyA3KSAqIEVER0Vf RU1VX0JVRkZFUl9TVFJJREUgKiAyXTsKKyAgICBERUNMQVJFX0FMSUdORUQoMzIsIGludDE2X3Qs IHRtcClbTUFYX1BCX1NJWkUgKiBNQVhfUEJfU0laRV07CisgICAgREVDTEFSRV9BTElHTkVEKDMy LCBpbnQxNl90LCB0bXAxKVtNQVhfUEJfU0laRSAqIE1BWF9QQl9TSVpFXTsKKyAgICBERUNMQVJF X0FMSUdORUQoMzIsIGludDE2X3QsIHRtcDIpW01BWF9QQl9TSVpFICogTUFYX1BCX1NJWkVdOwor ICAgIERFQ0xBUkVfQUxJR05FRCgzMiwgdWludDhfdCwgY2lpcF90bXAxKVtNQVhfUEJfU0laRSAq IE1BWF9QQl9TSVpFICogMl07CisgICAgREVDTEFSRV9BTElHTkVEKDMyLCB1aW50OF90LCBjaWlw X3RtcDIpW01BWF9QQl9TSVpFICogTUFYX1BCX1NJWkUgKiAyXTsKKyAgICBERUNMQVJFX0FMSUdO RUQoMzIsIHVpbnQ4X3QsIHNhb19idWZmZXIpWyhNQVhfQ1RVX1NJWkUgKyAyICogU0FPX1BBRERJ TkdfU0laRSkgKiBFREdFX0VNVV9CVUZGRVJfU1RSSURFICogMl07CisgICAgREVDTEFSRV9BTElH TkVEKDMyLCB1aW50OF90LCBhbGZfYnVmZmVyX2x1bWEpWyhNQVhfQ1RVX1NJWkUgKyAyICogQUxG X1BBRERJTkdfU0laRSkgKiBFREdFX0VNVV9CVUZGRVJfU1RSSURFICogMl07CisgICAgREVDTEFS RV9BTElHTkVEKDMyLCB1aW50OF90LCBhbGZfYnVmZmVyX2Nocm9tYSlbKE1BWF9DVFVfU0laRSAr IDIgKiBBTEZfUEFERElOR19TSVpFKSAqIEVER0VfRU1VX0JVRkZFUl9TVFJJREUgKiAyXTsKKyAg ICBERUNMQVJFX0FMSUdORUQoMzIsIGludDMyX3QsIGFsZl9ncmFkaWVudF90bXApW0FMRl9HUkFE SUVOVF9TSVpFICogQUxGX0dSQURJRU5UX1NJWkUgKiBBTEZfTlVNX0RJUl07CisKKyAgICBzdHJ1 Y3QgeworICAgICAgICBpbnQgc2J0X251bV9mb3VydGhzX3RiMDsgICAgICAgICAgICAgICAgLy8v PCBTYnROdW1Gb3VydGhzVGIwCisKKyAgICAgICAgdWludDhfdCBpc19jdV9xcF9kZWx0YV9jb2Rl ZDsgICAgICAgICAgIC8vLzwgSXNDdVFwRGVsdGFDb2RlZAorICAgICAgICBpbnQgY3VfcWdfdG9w X2xlZnRfeDsgICAgICAgICAgICAgICAgICAgLy8vPCBDdVFnVG9wTGVmdFgKKyAgICAgICAgaW50 IGN1X3FnX3RvcF9sZWZ0X3k7ICAgICAgICAgICAgICAgICAgIC8vLzwgQ3VRZ1RvcExlZnRZCisg ICAgICAgIGludCBpc19jdV9jaHJvbWFfcXBfb2Zmc2V0X2NvZGVkOyAgICAgICAvLy88IElzQ3VD aHJvbWFRcE9mZnNldENvZGVkCisgICAgICAgIGludCBjaHJvbWFfcXBfb2Zmc2V0WzNdOyAgICAg ICAgICAgICAgICAvLy88IEN1UXBPZmZzZXRDYiwgQ3VRcE9mZnNldENyLCBDdVFwT2Zmc2V0Q2JD cgorCisgICAgICAgIGludCBpbmZlcl90dV9jYmZfbHVtYTsgICAgICAgICAgICAgICAgICAvLy88 IEluZmVyVHVDYmZMdW1hCisgICAgICAgIGludCBwcmV2X3R1X2NiZl95OyAgICAgICAgICAgICAg ICAgICAgICAvLy88IHByZXZUdUNiZlk7CisKKyAgICAgICAgaW50IGxmbnN0X2RjX29ubHk7ICAg ICAgICAgICAgICAgICAgICAgIC8vLzwgTGZuc3REY09ubHkKKyAgICAgICAgaW50IGxmbnN0X3pl cm9fb3V0X3NpZ19jb2VmZl9mbGFnOyAgICAgIC8vLzwgTGZuc3RaZXJvT3V0U2lnQ29lZmZGbGFn CisKKyAgICAgICAgaW50IG10c19kY19vbmx5OyAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwg TXRzRGNPbmx5CisgICAgICAgIGludCBtdHNfemVyb19vdXRfc2lnX2NvZWZmX2ZsYWc7ICAgICAg ICAvLy88IE10c1plcm9PdXRTaWdDb2VmZkZsYWc7CisgICAgfSBwYXJzZTsKKworICAgIHN0cnVj dCB7CisgICAgICAgIC8vIGxtY3MgY2FjaGUsIGZvciByZWNvbiBvbmx5CisgICAgICAgIGludCBj aHJvbWFfc2NhbGU7CisgICAgICAgIGludCB4X3ZwZHU7CisgICAgICAgIGludCB5X3ZwZHU7Cisg ICAgfSBsbWNzOworCisgICAgQ29kaW5nVW5pdCAqY3U7CisgICAgUmVjb25zdHJ1Y3RlZEFyZWEg cmFzWzJdW01BWF9QQVJUU19JTl9DVFVdOworICAgIGludCAgbnVtX3Jhc1syXTsKKworICAgIE5l aWdoYm91ckF2YWlsYWJsZSBuYTsKKworI2RlZmluZSBCT1VOREFSWV9MRUZUX1NMSUNFICAgICAo MSA8PCAwKQorI2RlZmluZSBCT1VOREFSWV9MRUZUX1RJTEUgICAgICAoMSA8PCAxKQorI2RlZmlu ZSBCT1VOREFSWV9VUFBFUl9TTElDRSAgICAoMSA8PCAyKQorI2RlZmluZSBCT1VOREFSWV9VUFBF Ul9USUxFICAgICAoMSA8PCAzKQorICAgIC8qIHByb3BlcnRpZXMgb2YgdGhlIGJvdW5kYXJ5IG9m IHRoZSBjdXJyZW50IENUQiBmb3IgdGhlIHB1cnBvc2VzCisgICAgICogb2YgdGhlIGRlYmxvY2tp bmcgZmlsdGVyICovCisgICAgaW50IGJvdW5kYXJ5X2ZsYWdzOworCisgICAgU2xpY2VDb250ZXh0 ICpzYzsKKyAgICBWVkNGcmFtZUNvbnRleHQgKmZjOworICAgIEVudHJ5UG9pbnQgKmVwOworICAg IGludCAqY29lZmZzOworfSA7CisKK3R5cGVkZWYgc3RydWN0IFZWQ0FsbG93ZWRTcGxpdCB7Cisg ICAgaW50IHF0OworICAgIGludCBidHY7CisgICAgaW50IGJ0aDsKKyAgICBpbnQgdHR2OworICAg IGludCB0dGg7Cit9IFZWQ0FsbG93ZWRTcGxpdDsKKworc3RydWN0IFNBT1BhcmFtcyB7CisgICAg aW50IG9mZnNldF9hYnNbM11bNF07ICAgICAgICAgICAgICAgLy8vPCBzYW9fb2Zmc2V0X2Ficwor ICAgIGludCBvZmZzZXRfc2lnblszXVs0XTsgICAgICAgICAgICAgIC8vLzwgc2FvX29mZnNldF9z aWduCisKKyAgICB1aW50OF90IGJhbmRfcG9zaXRpb25bM107ICAgICAgICAgICAvLy88IHNhb19i YW5kX3Bvc2l0aW9uCisKKyAgICBpbnQgZW9fY2xhc3NbM107ICAgICAgICAgICAgICAgICAgICAv Ly88IHNhb19lb19jbGFzcworCisgICAgaW50MTZfdCBvZmZzZXRfdmFsWzNdWzVdOyAgICAgICAg ICAgLy8vPFNhb09mZnNldFZhbAorCisgICAgdWludDhfdCB0eXBlX2lkeFszXTsgICAgICAgICAg ICAgICAgLy8vPCBzYW9fdHlwZV9pZHgKK307CisKK3N0cnVjdCBBTEZQYXJhbXMgeworICAgIHVp bnQ4X3QgY3RiX2ZsYWdbM107ICAgICAgICAgICAgICAgIC8vLzwgYWxmX2N0Yl9mbGFnW10KKyAg ICB1aW50OF90IGN0Yl9maWx0X3NldF9pZHhfeTsgICAgICAgICAvLy88IEFsZkN0YkZpbHRTZXRJ ZHhZCisgICAgdWludDhfdCBhbGZfY3RiX2ZpbHRlcl9hbHRfaWR4WzJdOyAgLy8vPCBhbGZfY3Ri X2ZpbHRlcl9hbHRfaWR4W10KKyAgICB1aW50OF90IGN0Yl9jY19pZGNbMl07ICAgICAgICAgICAg ICAvLy88IGFsZl9jdGJfY2NfY2JfaWRjLCBhbGZfY3RiX2NjX2NyX2lkYworCisgICAgdWludDhf dCBhcHBsaWVkWzNdOworfTsKKwordm9pZCBmZl92dmNfZXBfaW5pdF9zdGF0X2NvZWZmKEVudHJ5 UG9pbnQgKmVwLCBpbnQgYml0X2RlcHRoLCBpbnQgcGVyc2lzdGVudF9yaWNlX2FkYXB0YXRpb25f ZW5hYmxlZF9mbGFnKTsKKyNlbmRpZiAvLyBBVkNPREVDX1ZWQ19DVFVfSApkaWZmIC0tZ2l0IGEv bGliYXZjb2RlYy92dmMvdnZjZGVjLmggYi9saWJhdmNvZGVjL3Z2Yy92dmNkZWMuaAppbmRleCBh NDZlYzI4YjhhLi4yNjk3ZDI2ZWQwIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL3Z2Yy92dmNkZWMu aAorKysgYi9saWJhdmNvZGVjL3Z2Yy92dmNkZWMuaApAQCAtMTIxLDcgKzEyMSw2IEBAIHR5cGVk ZWYgc3RydWN0IEVudHJ5UG9pbnQgRW50cnlQb2ludDsKIHR5cGVkZWYgc3RydWN0IFZWQ1Rhc2sg VlZDVGFzazsKIHR5cGVkZWYgc3RydWN0IE12IE12OwogdHlwZWRlZiBzdHJ1Y3QgTXZGaWVsZCBN dkZpZWxkOwotdHlwZWRlZiBzdHJ1Y3QgRE1WUkluZm8gRE1WUkluZm87CiB0eXBlZGVmIHN0cnVj dCBDVFUgQ1RVOwogdHlwZWRlZiBzdHJ1Y3QgU0FPUGFyYW1zIFNBT1BhcmFtczsKIHR5cGVkZWYg c3RydWN0IEFMRlBhcmFtcyBBTEZQYXJhbXM7CkBAIC0xNjgsNiArMTY3LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgVlZDRnJhbWUgewogCiBzdHJ1Y3QgU2xpY2VDb250ZXh0IHsKICAgICBpbnQgc2xpY2Vf aWR4OworICAgIFZWQ1NIIHNoOwogICAgIEVudHJ5UG9pbnQgKmVwczsKICAgICBpbnQgbmJfZXBz OwogICAgIFJlZlBpY0xpc3QgKnJwbDsKQEAgLTE4MSw2ICsxODEsNyBAQCBzdHJ1Y3QgVlZDRnJh bWVDb250ZXh0IHsKIAogICAgIEFWRnJhbWUgKmZyYW1lOwogICAgIEFWRnJhbWUgKm91dHB1dF9m cmFtZTsKKyAgICBWVkNGcmFtZVBhcmFtU2V0cyBwczsKIAogICAgIFNsaWNlQ29udGV4dCAgKipz bGljZXM7CiAgICAgaW50IG5iX3NsaWNlczsKQEAgLTIwMyw3ICsyMDQsOSBAQCBzdHJ1Y3QgVlZD RnJhbWVDb250ZXh0IHsKICAgICBzdHJ1Y3QgewogICAgICAgICBpbnQxNl90ICpzbGljZV9pZHg7 CiAKLSAgICAgICAgRE1WUkluZm8gICpkbXZyOworICAgICAgICBEQlBhcmFtcyAgKmRlYmxvY2s7 CisgICAgICAgIFNBT1BhcmFtcyAqc2FvOworICAgICAgICBBTEZQYXJhbXMgKmFsZjsKIAogICAg ICAgICBpbnQgICAgICpjYl9wb3NfeFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy88 IENiUG9zWFtdW11bXQogICAgICAgICBpbnQgICAgICpjYl9wb3NfeVsyXTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAvLy88IENiUG9zWVtdW11bXQotLSAKMi4yNS4xCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBs aXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9y IGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1 YnNjcmliZSIuCg==