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 5851C411FC for ; Tue, 4 Jan 2022 09:13:14 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 250FF68B263; Tue, 4 Jan 2022 11:13:12 +0200 (EET) Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-oln040092070078.outbound.protection.outlook.com [40.92.70.78]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 615AB68B106 for ; Tue, 4 Jan 2022 11:13:06 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lfWJoWsE1B1VIkFtwR0e/pxDzOfVi0K66ndPAphR1fDnpHZUiL+J7V3oZGYdxxIy6zJh7obAgWBBRZAaye8+K+3PYdRokorPBh4Vekuc1i9I4EbfGlZbOTD7JNGAq/0wLcw+0o2ZML7Gz5Z2248pkfUFzngJNiJos9ti9G2JBrIStB1TlMhy6+u/NLtuoFiOff7jTvpx1K3APFrQrWm5qSSEtpy17GYS2RF57MDZ5h66gWqvAMDxZdr8E6ZByhl+2Ho3478FRycwu1dIbaW8tQucCUQjxw2xWB7SYuiKvb/Y+J2qJZ3s1hc7kdXS+vHp+yjMBMIXBWvC+CiReL57fw== 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=7dDtuHEKvn/NVFpGvEWVdc5ahFeyv1fERRB5Eqf1lFo=; b=Laxl7sKJvY/p4Cfz9gQM3uIh1iOVFBiD81GvXgBdWch1soiGWev0XHGYdGkw1x87DK2KpTeFUtnSM60cfzyou1abQZiiVJpP8dbJkOwTGWtsW/e7kurcAGXX4jV3+3pBfFS57JsPzVflmtVWv/4HeRUZDFUUQBPqBSpCzGMjiQwdLcJynQKGW4nyt5bU7eLOoWjZZj5Eh7mLqbKsXGXFMB7UdBJaKahWVw8d7S5XF7BbfsPCaR9Lhl4lGISXWpT3o4zrHGUEceoYn3Qq8jR2bBQGWl7NcfrY9Mvm4R9egmKJzvTLOF+sYTC28vsgpJc3PxcM4UPD0oB9c6rL/YvPaQ== 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=7dDtuHEKvn/NVFpGvEWVdc5ahFeyv1fERRB5Eqf1lFo=; b=mCS8c2PrGg043fLtlRomaWeYWxblMt0gR6vqnrbcIUWN2ANqeK/WbUmNX2p45Z4IDQCdrFdouh02p8F5LkZC+TXguQ/FDOFEJY1y54GGamkrD92eCas4Iy3Am3Xtg+9ZeW41ps9N9jE/Qy2UdB8NHLBlNMdcV8GTKuHQMX/2ZqY9xpS/wi+4FxZ4U0jRFcEF7oKcdKSZfRZa7YU8PLNL9ylHfFJgynUSweCf3Q6BpGWMl8vPJ80qSPAQOHKtgjryqbSbkc3r8OzDRC6NTW1tSrdPu2hc7RnkFZCs5izstMROPSII47BPNy8v0xPuVMEyDcK8EW51g7nGhodd7YPskA== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM6PR03MB4949.eurprd03.prod.outlook.com (2603:10a6:20b:84::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4844.14; Tue, 4 Jan 2022 09:13:04 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::19fc:be9f:2c9c:53f5]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::19fc:be9f:2c9c:53f5%6]) with mapi id 15.20.4844.016; Tue, 4 Jan 2022 09:13:04 +0000 Message-ID: Date: Tue, 4 Jan 2022 10:13:03 +0100 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20220103002727.38840-1-ffmpeg@haasn.xyz> <20220103002727.38840-4-ffmpeg@haasn.xyz> From: Andreas Rheinhardt In-Reply-To: <20220103002727.38840-4-ffmpeg@haasn.xyz> X-TMN: [+SJ+1gB3INxbhazpbzXIm4ooO8t+PNzB] X-ClientProxiedBy: AM0PR03CA0027.eurprd03.prod.outlook.com (2603:10a6:208:14::40) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <51002d48-5489-0e09-1c40-300148eb8ee6@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f0de9d5d-f006-47a9-b978-08d9cf626a0a X-MS-TrafficTypeDiagnostic: AM6PR03MB4949:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 0PjsHQUhCYvqrzekNSQ0nj5FGiIL6WesO7Ei13aruzkkjtIlOsfUV5TwAVahk5uPf2IbCTaZ5jxYCr6lMSZdmJ94IHtLgeZKkH9e3m4oqvE7VRpdx0Cg3yoprRtTv5NdM/WybHQrTFBsB+WN62VBRk2tzEjP/hfMCyOaM2ma9ANVGocN1YHNdqaCzBupYYw81ZrO6FMignZIrnthPAJSyu30p4OSzkZoJnFeSelPgFDgBaDLuxsNVMtfMREJSOJ30qpWvsjrU7UMbCov3EsN/zW/DKFGA2loVvw+8m1tt1f5gzWzeal5s4Rp701lI5sECfKDsGdTaKcV01wkliKkEPsMMDZkRO6HHscqrB5ENgO5OqGsHV/xBDSbX+90qHXrqa1dAPxk4TQMhGVp84SDUX5YbD9s2+jGFk3Uq0w/yUPps21NlAMhT/uF2qCvqO02aDjvXiSL03RF4nrPQ0t7CpGknAedUkxt7q3ON6LriqJu/PqokKoElKW5i6+bUdWqBc+C2cELBa8eMWQx4B5/sLamPf3mvdWI/JksC1LVgzQn4vjfk2xxTx6U6N9JqzHXSTuCXdfOTVX/9kcr5OrW/eg7qd6IrbrBtzAhSDu+7EeV+oIGSegjg9HqcYG89A58 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Zmt1cHA0ZTBML1VKZDBSVUMvQXdVcDFYMDBHQW5YL3pVak81emdPN2NYcnNW?= =?utf-8?B?SzVTNWV4SllEMGJlTDlwOWNzODRrZW4wY0x2NWRRU3ZHTlkrcExoRTdoTjcy?= =?utf-8?B?dUFDNlNoQUFCOER2UjU1V0kralp2VHl5Z1NKS2RqTkx3MVJtUjBpY2NhQkU0?= =?utf-8?B?VE5pWlRWakdGSWlONUFyWUFJdjVyeTREbmVuK0ZkaUQvUUNpRDMxL2dtUExj?= =?utf-8?B?aitHZHVJSWRZTkJYM0paMzgrODg1QUdCbmREazJXaHpqNk1UZ1UvY0hraCs5?= =?utf-8?B?cjg2aitwcGlxRnN6REhlZkZVc3IwM1hRUFZUM2liN3E5blZMbU9Oc1F4c1Bj?= =?utf-8?B?VkZDZXRKSHVJUjYzMk55K2ovdnVqakNRcnNqTGJEalFRZzNPTnJ1VHJQUnp3?= =?utf-8?B?QW8xODVnNm5xMUdQNjBsc3MwUW5lNDVJUi9FdjUxdG1rbGhyeFNLSFhVUW9l?= =?utf-8?B?WHhTVzBXSjRMNEx0K1dsSk51blo2MUxqTmhPcEZ6S1piaHloZnhSZ053M0Jn?= =?utf-8?B?U0IwV0VVMWtsUk50ODFOOTdRRHBxeHZ6djNuUWROSWgwODlVa2RiWVZpQi9O?= =?utf-8?B?T1l1cUswUzQ1VnZGMHZkam5IYzBLQkhYWkZJL1ZZcXIydnkxUFAvU1llU3RL?= =?utf-8?B?WHJCVE4rcEtRRk9RMWd4WnpvNUNOQVo3Q3ViVUJmckp6SFdBSmpoN0Z4ZzZ3?= =?utf-8?B?SUFTdE4rQUdXbDZnZTdrYXRhVjVnYVR6UG9CNk1mNU91UVZkaXo3bXZjamRD?= =?utf-8?B?clg3VE1LNVVDTDRVS0xjb1lyN0tRbGFQTzE4bFRsN0xTRXVsa0M1VVhwdGsw?= =?utf-8?B?SjNGVFEzeG9EMmVxQ0tOR2hReldDcUdDd0FnWktVV2JNdjB3ejlmRHEzTCtI?= =?utf-8?B?d2hQYURZaytNNnFMcWxyMXo0UGVpWXM5cFc1emtHV21CemVES0xqREIwU0Nn?= =?utf-8?B?bXRSZEtiYU1yT0dGeDRjY1Z6UFREaTFxbTBPUWxDaUFKY3JsOXV6cGRleTA2?= =?utf-8?B?R0pvLzN5STZ1aGZhTGdPbW9KeXBvanNXOTkyUlZYdkE5Nm5ERmhiM0xPK1h4?= =?utf-8?B?aEhqMkRGQkxTTGMxaVhsNzc5dCs3YUh4Q1dHU2hnZG5QdWMyTloxWHprMlM1?= =?utf-8?B?dEpldGNqVklnWnJJZzdvT0xCQnlNSjdJRzFLTUVZbFBpUGk3L0JJWm5BakhK?= =?utf-8?B?cFE1MUl2VWt3Ykc1cjlFNGU3K3BlSWtRSHVNVTJtdUpPdU9QMkFiVkhhWkZ3?= =?utf-8?B?MkhmVlczV3NWS1JySUZxUUxJZXVCNlBXUEUzYjI5THNKL2diQT09?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f0de9d5d-f006-47a9-b978-08d9cf626a0a X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jan 2022 09:13:04.4811 (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: AM6PR03MB4949 Subject: Re: [FFmpeg-devel] [PATCH v10 4/6] lavc: Implement Dolby Vision RPU parsing 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 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: TmlrbGFzIEhhYXM6Cj4gRnJvbTogTmlrbGFzIEhhYXMgPGdpdEBoYWFzbi5kZXY+Cj4gCj4gQmFz ZWQgb24gYSBtaXh0dXJlIG9mIGd1ZXNzd29yaywgcGFydGlhbCBkb2N1bWVudGF0aW9uIGluIHBh dGVudHMsIGFuZAo+IHJldmVyc2UgZW5naW5lZXJpbmcgb2YgcmVhbC13b3JsZCBzYW1wbGVzLiBD b25maXJtZWQgd29ya2luZyBmb3IgYWxsIHRoZQo+IHNhbXBsZXMgSSd2ZSB0aHJvd24gYXQgaXQu Cj4gCj4gQ29udGFpbnMgc29tZSBhbm5veWluZyBtYWNoaW5lcnkgdG8gcGVyc2lzdCB0aGVzZSB2 YWx1ZXMgaW4gYmV0d2Vlbgo+IGZyYW1lcywgd2hpY2ggaXMgbmVlZGVkIGluIHRoZW9yeSBldmVu IHRob3VnaCBJJ3ZlIG5ldmVyIGFjdHVhbGx5IHNlZW4gYQo+IHNhbXBsZSB0aGF0IHJlbGllcyBv biBpdCBpbiBwcmFjdGljZS4gTWF5IG9yIG1heSBub3Qgd29yay4KPiAKPiBTaW5jZSB0aGUgZGlz dGluY3Rpb24gbWF0dGVycyBncmVhdGx5IGZvciBwYXJzaW5nIHRoZSBjb2xvciBtYXRyaXgKPiB2 YWx1ZXMsIHRoaXMgaW5jbHVkZXMgYSBzbWFsbCBoZWxwZXIgZnVuY3Rpb24gdG8gZ3Vlc3MgdGhl IHJpZ2h0IHByb2ZpbGUKPiBmcm9tIHRoZSBSUFUgaXRzZWxmIGluIGNhc2UgdGhlIHVzZXIgaGFz IGZvcmdvdHRlbiB0byBmb3J3YXJkIHRoZSBkb3ZpCj4gY29uZmlndXJhdGlvbiByZWNvcmQgdG8g dGhlIGRlY29kZXIuIChXaGljaCBpbiBwcmFjdGljZSwgb25seSBmZm1wZWcuYwo+IGFuZCBmZnBs YXkgZG8uLikKPiAKPiBOb3RhYmxlIG9taXNzaW9ucyAvIGRldmlhdGlvbnM6Cj4gLSBDUkMzMiB2 ZXJpZmljYXRpb24uIFRoaXMgaXMgYmFzZWQgb24gdGhlIE1QRUcyIENSQzMyIHR5cGUsIHdoaWNo IGlzCj4gICBzaW1pbGFyIHRvIElFRUUgQ1JDMzIgYnV0IGFwcGFyZW50bHkgZGlmZmVyZW50IGlu IHN1YnRsZSBlbm91Z2ggd2F5cwo+ICAgdGhhdCBJIGNvdWxkIG5vdCBnZXQgaXQgdG8gcGFzcyB2 ZXJpZmljYXRpb24gbm8gbWF0dGVyIHdoYXQgcGFyYW1ldGVycwo+ICAgSSBmZWQgdG8gYXZfY3Jj LiBJdCdzIHBvc3NpYmxlIHRoZSBjb2RlIG5lZWRzIHNvbWUgY2hhbmdlcy4KPiAtIExpbmVhciBp bnRlcnBvbGF0aW9uIHN1cHBvcnQuIE5vdGhpbmcgZG9jdW1lbnRzIHRoaXMgKGJleW9uZCBpdHMK PiAgIGV4aXN0ZW5jZSkgYW5kIG5vIHNhbXBsZXMgdXNlIGl0LCBzbyBpbXBvc3NpYmxlIHRvIGlt cGxlbWVudC4KPiAtIEFsbCBvZiB0aGUgZXh0ZW5zaW9uIG1ldGFkYXRhIGJsb2NrcywgYnV0IHRo ZXNlIGNvbnRhaW4gdmFsdWVzIHRoYXQKPiAgIHNlZW0gbGFyZ2VseSBjb25ncnVlbnQgd2l0aCBT VDIwOTQsIEhEUjEwLCBvciBvdGhlciBleGlzdGluZyBmb3JtcyBvZgo+ICAgc2lkZSBkYXRhLCBz byBJIHdpbGwgZGVmZXIgcGFyc2luZy9hdHRhY2hpbmcgdGhlbSB0byBhIGZ1dHVyZSBjb21taXQu Cj4gLSBUaGUgcGF0ZW50IGRlc2NyaWJlcyBhIG1lY2hhbmlzbSBmb3IgcHJlZGljdGluZyBjb2Vm ZmljaWVudHMgZnJvbQo+ICAgcHJldmlvdXMgUlBVcywgYnV0IHRoZSBiaXQgZm9yIHRoZSBmbGFn IHdoZXRoZXIgdG8gdXNlIHRoZQo+ICAgcHJlZGljdGlvbiBkZWx0YXMgb3Igc2lnbmFsIGVudGly ZWx5IG5ldyBjb2VmZmljaWVudHMgZG9lcyBub3Qgc2VlbSB0bwo+ICAgYmUgcHJlc2VudCBpbiBh Y3R1YWwgUlBVcywgc28gd2UgaWdub3JlIHRoaXMgc3Vic3lzdGVtIGVudGlyZWx5Lgo+IC0gSW4g dGhlIHBhdGVudCdzIHNwZWMsIHRoZSBOTFEgc3Vic3lzdGVtIGFsc28gbG9vcHMgb3Zlcgo+ICAg bnVtX25scV9waXZvdHMsIGJ1dCBldmVuIGluIHRoZSBwYXRlbnQgdGhlIG51bWJlciBpcyBoYXJk LWNvZGVkIHRvIG9uZQo+ICAgaXRlcmF0aW9uIHJhdGhlciB0aGFuIHNpZ25hbGxlZC4gU28gd2Ug b25seSBzdG9yZSBvbmUgc2V0IG9mIGNvZWZzLgo+IAo+IEhlYXZpbHkgaW5mbHVlbmNlZCBieSBo dHRwczovL2dpdGh1Yi5jb20vcXVpZXR2b2lkL2RvdmlfdG9vbAo+IERvY3VtZW50YXRpb24gZHJh d24gZnJvbSBVUyBQYXRlbnQgMTAsNzAxLDM5OSBCMiBhbmQgRVRTSSBHUyBDQ00gMDAxCj4gCj4g U2lnbmVkLW9mZi1ieTogTmlrbGFzIEhhYXMgPGdpdEBoYWFzbi5kZXY+Cj4gLS0tCj4gIGNvbmZp Z3VyZSAgICAgICAgICAgICB8ICAgMiArCj4gIGxpYmF2Y29kZWMvTWFrZWZpbGUgICB8ICAgMSAr Cj4gIGxpYmF2Y29kZWMvZG92aV9ycHUuYyB8IDQ0OSArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKPiAgbGliYXZjb2RlYy9kb3ZpX3JwdS5oIHwgIDg3ICsrKysrKysr Cj4gIDQgZmlsZXMgY2hhbmdlZCwgNTM5IGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAw NjQ0IGxpYmF2Y29kZWMvZG92aV9ycHUuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2Rl Yy9kb3ZpX3JwdS5oCj4gCj4gZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQo+IGlu ZGV4IDZhZDcwYjlmN2IuLjgzMDNlMTMyOWUgMTAwNzU1Cj4gLS0tIGEvY29uZmlndXJlCj4gKysr IGIvY29uZmlndXJlCj4gQEAgLTI0MzQsNiArMjQzNCw3IEBAIENPTkZJR19FWFRSQT0iCj4gICAg ICBjYnNfdnA5Cj4gICAgICBkaXJhY19wYXJzZQo+ICAgICAgZG5uCj4gKyAgICBkb3ZpX3JwdQo+ ICAgICAgZHZwcm9maWxlCj4gICAgICBleGlmCj4gICAgICBmYWFuZGN0Cj4gQEAgLTI3MDYsNiAr MjcwNyw3IEBAIGNic19tcGVnMl9zZWxlY3Q9ImNicyIKPiAgY2JzX3ZwOV9zZWxlY3Q9ImNicyIK PiAgZGN0X3NlbGVjdD0icmRmdCIKPiAgZGlyYWNfcGFyc2Vfc2VsZWN0PSJnb2xvbWIiCj4gK2Rv dmlfcnB1X3NlbGVjdD0iZ29sb21iIgo+ICBkbm5fc3VnZ2VzdD0ibGlidGVuc29yZmxvdyBsaWJv cGVudmlubyIKPiAgZG5uX2RlcHM9ImF2Zm9ybWF0IHN3c2NhbGUiCj4gIGVycm9yX3Jlc2lsaWVu Y2Vfc2VsZWN0PSJtZV9jbXAiCj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvTWFrZWZpbGUgYi9s aWJhdmNvZGVjL01ha2VmaWxlCj4gaW5kZXggOTU3NzA2MmVlYy4uY2VlY2RmMDVlMSAxMDA2NDQK PiAtLS0gYS9saWJhdmNvZGVjL01ha2VmaWxlCj4gKysrIGIvbGliYXZjb2RlYy9NYWtlZmlsZQo+ IEBAIC03Nyw2ICs3Nyw3IEBAIE9CSlMtJChDT05GSUdfQ0JTX01QRUcyKSAgICAgICAgICAgICAg ICs9IGNic19tcGVnMi5vCj4gIE9CSlMtJChDT05GSUdfQ0JTX1ZQOSkgICAgICAgICAgICAgICAg ICs9IGNic192cDkubwo+ICBPQkpTLSQoQ09ORklHX0NSWVNUQUxIRCkgICAgICAgICAgICAgICAr PSBjcnlzdGFsaGQubwo+ICBPQkpTLSQoQ09ORklHX0RDVCkgICAgICAgICAgICAgICAgICAgICAr PSBkY3QubyBkY3QzMl9maXhlZC5vIGRjdDMyX2Zsb2F0Lm8KPiArT0JKUy0kKENPTkZJR19ET1ZJ X1JQVSkgICAgICAgICAgICAgICAgKz0gZG92aV9ycHUubwo+ICBPQkpTLSQoQ09ORklHX0VSUk9S X1JFU0lMSUVOQ0UpICAgICAgICArPSBlcnJvcl9yZXNpbGllbmNlLm8KPiAgT0JKUy0kKENPTkZJ R19FWElGKSAgICAgICAgICAgICAgICAgICAgKz0gZXhpZi5vIHRpZmZfY29tbW9uLm8KPiAgT0JK Uy0kKENPTkZJR19GQUFORENUKSAgICAgICAgICAgICAgICAgKz0gZmFhbmRjdC5vCj4gZGlmZiAt LWdpdCBhL2xpYmF2Y29kZWMvZG92aV9ycHUuYyBiL2xpYmF2Y29kZWMvZG92aV9ycHUuYwo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMC4uYTg3NTYyYzhhMwo+IC0tLSAv ZGV2L251bGwKPiArKysgYi9saWJhdmNvZGVjL2RvdmlfcnB1LmMKPiBAQCAtMCwwICsxLDQ0OSBA QAo+ICsvKgo+ICsgKiBEb2xieSBWaXNpb24gUlBVIGRlY29kZXIKPiArICoKPiArICogQ29weXJp Z2h0IChDKSAyMDIxIEphbiBFa3N0csO2bQo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjEgTmlrbGFz IEhhYXMKPiArICoKPiArICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgo+ICsgKgo+ICsg KiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y Cj4gKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMKPiArICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyCj4gKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ICsgKgo+ICsgKiBGRm1wZWcgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiArICogYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKPiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZSBHTlUKPiArICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KPiArICoKPiArICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsgKiBMaWNlbnNlIGFsb25nIHdp dGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCj4gKyAqIEZvdW5k YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg MDIxMTAtMTMwMSBVU0EKPiArICovCj4gKwo+ICsjaW5jbHVkZSAibGliYXZ1dGlsL2J1ZmZlci5o Igo+ICsKPiArI2luY2x1ZGUgImRvdmlfcnB1LmgiCj4gKyNpbmNsdWRlICJnb2xvbWIuaCIKPiAr I2luY2x1ZGUgImdldF9iaXRzLmgiCj4gKwo+ICtlbnVtIHsKPiArICAgIFJQVV9DT0VGRl9GSVhF RCA9IDAsCj4gKyAgICBSUFVfQ09FRkZfRkxPQVQgPSAxLAo+ICt9Owo+ICsKPiArLyoqCj4gKyAq IFByaXZhdGUgY29udGVudHMgb2YgdmRyX3JlZi4KPiArICovCj4gK3R5cGVkZWYgc3RydWN0IERP VklWZHJSZWYgewo+ICsgICAgQVZET1ZJRGF0YU1hcHBpbmcgbWFwcGluZzsKPiArICAgIEFWRE9W SUNvbG9yTWV0YWRhdGEgY29sb3I7Cj4gK30gRE9WSVZkclJlZjsKPiArCj4gK3ZvaWQgZmZfZG92 aV9jdHhfdW5yZWYoRE9WSUNvbnRleHQgKnMpCj4gK3sKPiArICAgIGZvciAoaW50IGkgPSAwOyBp IDwgRkZfQVJSQVlfRUxFTVMocy0+dmRyX3JlZik7IGkrKykKPiArICAgICAgICBhdl9idWZmZXJf dW5yZWYoJnMtPnZkcl9yZWZbaV0pOwo+ICsKPiArICAgICpzID0gKERPVklDb250ZXh0KSB7Cj4g KyAgICAgICAgLmxvZ2N0eCA9IHMtPmxvZ2N0eCwKPiArICAgIH07CgpUaGlzIGNvdWxkIGJlIHNp bXBsaWZpZWQgdG8gZmZfZG92aV9jdHhfZmx1c2goKTsgcy0+ZHZfcHJvZmlsZSA9IDA7Cgo+ICt9 Cj4gKwo+ICt2b2lkIGZmX2RvdmlfY3R4X2ZsdXNoKERPVklDb250ZXh0ICpzKQo+ICt7Cj4gKyAg ICBmb3IgKGludCBpID0gMDsgaSA8IEZGX0FSUkFZX0VMRU1TKHMtPnZkcl9yZWYpOyBpKyspCj4g KyAgICAgICAgYXZfYnVmZmVyX3VucmVmKCZzLT52ZHJfcmVmW2ldKTsKPiArCj4gKyAgICAqcyA9 IChET1ZJQ29udGV4dCkgewo+ICsgICAgICAgIC5sb2djdHggPSBzLT5sb2djdHgsCj4gKyAgICAg ICAgLmR2X3Byb2ZpbGUgPSBzLT5kdl9wcm9maWxlLAo+ICsgICAgfTsKPiArfQo+ICsKPiAraW50 IGZmX2RvdmlfY3R4X3JlcGxhY2UoRE9WSUNvbnRleHQgKnMsIGNvbnN0IERPVklDb250ZXh0ICpz MCkKPiArewo+ICsgICAgaW50IHJldDsKPiArICAgIHMtPmxvZ2N0eCA9IHMwLT5sb2djdHg7Cj4g KyAgICBzLT5tYXBwaW5nID0gczAtPm1hcHBpbmc7Cj4gKyAgICBzLT5jb2xvciA9IHMwLT5jb2xv cjsKPiArICAgIHMtPmR2X3Byb2ZpbGUgPSBzMC0+ZHZfcHJvZmlsZTsKPiArICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgRE9WSV9NQVhfRE1fSUQ7IGkrKykgewo+ICsgICAgICAgIGlmICgocmV0ID0g YXZfYnVmZmVyX3JlcGxhY2UoJnMtPnZkcl9yZWZbaV0sIHMwLT52ZHJfcmVmW2ldKSkgPCAwKQo+ ICsgICAgICAgICAgICBnb3RvIGZhaWw7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIDA7Cj4g Kwo+ICtmYWlsOgo+ICsgICAgZmZfZG92aV9jdHhfdW5yZWYocyk7Cj4gKyAgICByZXR1cm4gcmV0 Owo+ICt9Cj4gKwo+ICt2b2lkIGZmX2RvdmlfdXBkYXRlX2NmZyhET1ZJQ29udGV4dCAqcywgY29u c3QgQVZET1ZJRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQgKmNmZykKPiArewo+ICsgICAgaWYg KCFjZmcpCj4gKyAgICAgICAgcmV0dXJuOwo+ICsKPiArICAgIHMtPmR2X3Byb2ZpbGUgPSBjZmct PmR2X3Byb2ZpbGU7Cj4gK30KPiArCj4gK2ludCBmZl9kb3ZpX2F0dGFjaF9zaWRlX2RhdGEoRE9W SUNvbnRleHQgKnMsIEFWRnJhbWUgKmZyYW1lKQo+ICt7Cj4gKyAgICBBVkZyYW1lU2lkZURhdGEg KnNkOwo+ICsgICAgQVZCdWZmZXJSZWYgKmJ1ZjsKPiArICAgIEFWRE9WSU1ldGFkYXRhICpkb3Zp Owo+ICsgICAgc2l6ZV90IGRvdmlfc2l6ZTsKPiArCj4gKyAgICBpZiAoIXMtPm1hcHBpbmcgfHwg IXMtPmNvbG9yKQo+ICsgICAgICAgIHJldHVybiAwOyAvKiBpbmNvbXBsZXRlIGRvdmkgbWV0YWRh dGEgKi8KPiArCj4gKyAgICBkb3ZpID0gYXZfZG92aV9tZXRhZGF0YV9hbGxvYygmZG92aV9zaXpl KTsKPiArICAgIGlmICghZG92aSkKPiArICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwo+ ICsKPiArICAgIGJ1ZiA9IGF2X2J1ZmZlcl9jcmVhdGUoKHVpbnQ4X3QgKikgZG92aSwgZG92aV9z aXplLCBOVUxMLCBOVUxMLCAwKTsKPiArICAgIGlmICghYnVmKSB7Cj4gKyAgICAgICAgYXZfZnJl ZShkb3ZpKTsKPiArICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwo+ICsgICAgfQo+ICsK PiArICAgIHNkID0gYXZfZnJhbWVfbmV3X3NpZGVfZGF0YV9mcm9tX2J1ZihmcmFtZSwgQVZfRlJB TUVfREFUQV9ET1ZJX01FVEFEQVRBLCBidWYpOwo+ICsgICAgaWYgKCFzZCkgewo+ICsgICAgICAg IGF2X2J1ZmZlcl91bnJlZigmYnVmKTsKPiArICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0p Owo+ICsgICAgfQo+ICsKPiArICAgIC8qIENvcHkgb25seSB0aGUgcGFydHMgb2YgdGhlc2Ugc3Ry dWN0cyBrbm93biB0byB1cyBhdCBjb21waWxlci10aW1lLiAqLwo+ICsjZGVmaW5lIENPUFkodCwg YSwgYiwgbGFzdCkgbWVtY3B5KGEsIGIsIG9mZnNldG9mKHQsIGxhc3QpICsgc2l6ZW9mKChiKS0+ bGFzdCkpCj4gKyAgICBDT1BZKEFWRE9WSVJwdURhdGFIZWFkZXIsIGF2X2RvdmlfZ2V0X2hlYWRl cihkb3ZpKSwgJnMtPmhlYWRlciwgZGlzYWJsZV9yZXNpZHVhbF9mbGFnKTsKPiArICAgIENPUFko QVZET1ZJRGF0YU1hcHBpbmcsIGF2X2RvdmlfZ2V0X21hcHBpbmcoZG92aSksIHMtPm1hcHBpbmcs IG5scVsyXS5saW5lYXJfZGVhZHpvbmVfdGhyZXNob2xkKTsKCllvdSBzaG91bGQgYmUgYWJsZSB0 byB1c2UgbmxnIGFzIGxhc3QgZWxlbWVudCAod2l0aG91dApbMl0ubGluZWFyX2RlYWR6b25lX3Ro cmVzaG9sZCkuCihPYnZpb3VzbHkgdGhlIGNoYW5nZXMgc3VnZ2VzdGVkIGJ5IHRoZXNlIGNvbW1l bnRzIGNvdWxkIGJlIGFwcGxpZWQgYXQKYW55IHRpbWUuKQoKPiArICAgIENPUFkoQVZET1ZJQ29s b3JNZXRhZGF0YSwgYXZfZG92aV9nZXRfY29sb3IoZG92aSksIHMtPmNvbG9yLCBzb3VyY2VfZGlh Z29uYWwpOwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgZ3Vlc3NfcHJv ZmlsZShjb25zdCBBVkRPVklScHVEYXRhSGVhZGVyICpoZHIpCj4gK3sKPiArICAgIHN3aXRjaCAo aGRyLT52ZHJfcnB1X3Byb2ZpbGUpIHsKPiArICAgIGNhc2UgMDoKPiArICAgICAgICBpZiAoaGRy LT5ibF92aWRlb19mdWxsX3JhbmdlX2ZsYWcpCj4gKyAgICAgICAgICAgIHJldHVybiA1Owo+ICsg ICAgICAgIGJyZWFrOwo+ICsgICAgY2FzZSAxOgo+ICsgICAgICAgIGlmIChoZHItPmVsX3NwYXRp YWxfcmVzYW1wbGluZ19maWx0ZXJfZmxhZyAmJiAhaGRyLT5kaXNhYmxlX3Jlc2lkdWFsX2ZsYWcp IHsKPiArICAgICAgICAgICAgaWYgKGhkci0+dmRyX2JpdF9kZXB0aCA9PSAxMikgewo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIDc7Cj4gKyAgICAgICAgICAgIH0gZWxzZSB7Cj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gNDsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAgIH0gZWxzZSB7Cj4g KyAgICAgICAgICAgIHJldHVybiA4Owo+ICsgICAgICAgIH0KPiArICAgIH0KPiArCj4gKyAgICBy ZXR1cm4gMDsgLyogdW5rbm93biAqLwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHVpbnQ2NF90 IGdldF91ZV9jb2VmKEdldEJpdENvbnRleHQgKmdiLCBjb25zdCBBVkRPVklScHVEYXRhSGVhZGVy ICpoZHIpCj4gK3sKPiArICAgIHVpbnQ2NF90IGlwYXJ0Owo+ICsgICAgdW5pb24geyB1aW50MzJf dCB1MzI7IGZsb2F0IGYzMjsgfSBmcGFydDsKPiArCj4gKyAgICBzd2l0Y2ggKGhkci0+Y29lZl9k YXRhX3R5cGUpIHsKPiArICAgIGNhc2UgUlBVX0NPRUZGX0ZJWEVEOgo+ICsgICAgICAgIGlwYXJ0 ID0gZ2V0X3VlX2dvbG9tYl9sb25nKGdiKTsKPiArICAgICAgICBmcGFydC51MzIgPSBnZXRfYml0 c19sb25nKGdiLCBoZHItPmNvZWZfbG9nMl9kZW5vbSk7Cj4gKyAgICAgICAgcmV0dXJuIChpcGFy dCA8PCBoZHItPmNvZWZfbG9nMl9kZW5vbSkgKyBmcGFydC51MzI7Cj4gKwo+ICsgICAgY2FzZSBS UFVfQ09FRkZfRkxPQVQ6Cj4gKyAgICAgICAgZnBhcnQudTMyID0gZ2V0X2JpdHNfbG9uZyhnYiwg MzIpOwo+ICsgICAgICAgIHJldHVybiBmcGFydC5mMzIgKiAoMSA8PCBoZHItPmNvZWZfbG9nMl9k ZW5vbSk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIDA7IC8qIHVucmVhY2hhYmxlICovCj4g K30KPiArCj4gK3N0YXRpYyBpbmxpbmUgaW50NjRfdCBnZXRfc2VfY29lZihHZXRCaXRDb250ZXh0 ICpnYiwgY29uc3QgQVZET1ZJUnB1RGF0YUhlYWRlciAqaGRyKQo+ICt7Cj4gKyAgICBpbnQ2NF90 IGlwYXJ0Owo+ICsgICAgdW5pb24geyB1aW50MzJfdCB1MzI7IGZsb2F0IGYzMjsgfSBmcGFydDsK PiArCj4gKyAgICBzd2l0Y2ggKGhkci0+Y29lZl9kYXRhX3R5cGUpIHsKPiArICAgIGNhc2UgUlBV X0NPRUZGX0ZJWEVEOgo+ICsgICAgICAgIGlwYXJ0ID0gZ2V0X3NlX2dvbG9tYl9sb25nKGdiKTsK PiArICAgICAgICBmcGFydC51MzIgPSBnZXRfYml0c19sb25nKGdiLCBoZHItPmNvZWZfbG9nMl9k ZW5vbSk7Cj4gKyAgICAgICAgcmV0dXJuIChpcGFydCA8PCBoZHItPmNvZWZfbG9nMl9kZW5vbSkg KyBmcGFydC51MzI7Cj4gKwo+ICsgICAgY2FzZSBSUFVfQ09FRkZfRkxPQVQ6Cj4gKyAgICAgICAg ZnBhcnQudTMyID0gZ2V0X2JpdHNfbG9uZyhnYiwgMzIpOwo+ICsgICAgICAgIHJldHVybiBmcGFy dC5mMzIgKiAoMSA8PCBoZHItPmNvZWZfbG9nMl9kZW5vbSk7Cj4gKyAgICB9Cj4gKwo+ICsgICAg cmV0dXJuIDA7IC8qIHVucmVhY2hhYmxlICovCj4gK30KPiArCj4gKyNkZWZpbmUgVkFMSURBVEUo VkFSLCBNSU4sIE1BWCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAo+ICsgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICBpZiAoVkFSIDwg TUlOIHx8IFZBUiA+IE1BWCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCj4gKyAgICAgICAgICAgIGF2X2xvZyhzLT5sb2djdHgsIEFWX0xPR19FUlJPUiwgIlJQ VSB2YWxpZGF0aW9uIGZhaWxlZDogIiAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICAgICAg I01JTiIgPD0gIiNWQVIiID0gJWQgPD0gIiNNQVgiXG4iLCAoaW50KSBWQVIpOyAgICAgICAgICAg ICAgIFwKPiArICAgICAgICAgICAgZ290byBmYWlsOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgfSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAo+ICsgICAgfSB3aGlsZSAoMCkKPiArCj4gK2ludCBmZl9kb3ZpX3JwdV9wYXJzZShET1ZJ Q29udGV4dCAqcywgY29uc3QgdWludDhfdCAqcnB1LCBzaXplX3QgcnB1X3NpemUpCj4gK3sKPiAr ICAgIEFWRE9WSVJwdURhdGFIZWFkZXIgKmhkciA9ICZzLT5oZWFkZXI7Cj4gKyAgICBHZXRCaXRD b250ZXh0ICpnYiA9ICYoR2V0Qml0Q29udGV4dCl7MH07Cj4gKyAgICBET1ZJVmRyUmVmICp2ZHI7 Cj4gKyAgICBpbnQgcmV0Owo+ICsKPiArICAgIHVpbnQ4X3QgbmFsX3ByZWZpeDsKPiArICAgIHVp bnQ4X3QgcnB1X3R5cGU7Cj4gKyAgICB1aW50OF90IHZkcl9zZXFfaW5mb19wcmVzZW50Owo+ICsg ICAgdWludDhfdCB2ZHJfZG1fbWV0YWRhdGFfcHJlc2VudDsKPiArICAgIHVpbnQ4X3QgdXNlX3By ZXZfdmRyX3JwdTsKPiArICAgIHVpbnQ4X3QgdXNlX25scTsKPiArICAgIHVpbnQ4X3QgcHJvZmls ZTsKPiArICAgIGlmICgocmV0ID0gaW5pdF9nZXRfYml0czgoZ2IsIHJwdSwgcnB1X3NpemUpKSA8 IDApCj4gKyAgICAgICAgcmV0dXJuIHJldDsKPiArCj4gKyAgICAvKiBSUFUgaGVhZGVyLCBjb21t b24gdmFsdWVzICovCj4gKyAgICBuYWxfcHJlZml4ID0gZ2V0X2JpdHMoZ2IsIDgpOwo+ICsgICAg VkFMSURBVEUobmFsX3ByZWZpeCwgMjUsIDI1KTsKPiArICAgIHJwdV90eXBlID0gZ2V0X2JpdHMo Z2IsIDYpOwo+ICsgICAgaWYgKHJwdV90eXBlICE9IDIpIHsKPiArICAgICAgICBhdl9sb2cocy0+ bG9nY3R4LCBBVl9MT0dfV0FSTklORywgIlVucmVjb2duaXplZCBSUFUgdHlwZSAiCj4gKyAgICAg ICAgICAgICAgICIlIlBSSXU4IiwgaWdub3JpbmdcbiIsIHJwdV90eXBlKTsKPiArICAgICAgICBy ZXR1cm4gMDsKPiArICAgIH0KPiArCj4gKyAgICBoZHItPnJwdV90eXBlID0gcnB1X3R5cGU7Cj4g KyAgICBoZHItPnJwdV9mb3JtYXQgPSBnZXRfYml0cyhnYiwgMTEpOwo+ICsKPiArICAgIC8qIFZh bHVlcyBzcGVjaWZpYyB0byBSUFUgdHlwZSAyICovCj4gKyAgICBoZHItPnZkcl9ycHVfcHJvZmls ZSA9IGdldF9iaXRzKGdiLCA0KTsKPiArICAgIGhkci0+dmRyX3JwdV9sZXZlbCA9IGdldF9iaXRz KGdiLCA0KTsKPiArCj4gKyAgICB2ZHJfc2VxX2luZm9fcHJlc2VudCA9IGdldF9iaXRzMShnYik7 Cj4gKyAgICBpZiAodmRyX3NlcV9pbmZvX3ByZXNlbnQpIHsKPiArICAgICAgICBoZHItPmNocm9t YV9yZXNhbXBsaW5nX2V4cGxpY2l0X2ZpbHRlcl9mbGFnID0gZ2V0X2JpdHMxKGdiKTsKPiArICAg ICAgICBoZHItPmNvZWZfZGF0YV90eXBlID0gZ2V0X2JpdHMoZ2IsIDIpOwo+ICsgICAgICAgIFZB TElEQVRFKGhkci0+Y29lZl9kYXRhX3R5cGUsIFJQVV9DT0VGRl9GSVhFRCwgUlBVX0NPRUZGX0ZM T0FUKTsKPiArICAgICAgICBzd2l0Y2ggKGhkci0+Y29lZl9kYXRhX3R5cGUpIHsKPiArICAgICAg ICBjYXNlIFJQVV9DT0VGRl9GSVhFRDoKPiArICAgICAgICAgICAgaGRyLT5jb2VmX2xvZzJfZGVu b20gPSBnZXRfdWVfZ29sb21iKGdiKTsKPiArICAgICAgICAgICAgVkFMSURBVEUoaGRyLT5jb2Vm X2xvZzJfZGVub20sIDEzLCAzMik7Cj4gKyAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgIGNh c2UgUlBVX0NPRUZGX0ZMT0FUOgo+ICsgICAgICAgICAgICBoZHItPmNvZWZfbG9nMl9kZW5vbSA9 IDMyOyAvKiBhcmJpdHJhcnksIGNob29zZSBtYXhpbXVtIHByZWNpc2lvbiAqLwo+ICsgICAgICAg ICAgICBicmVhazsKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIGhkci0+dmRyX3JwdV9ub3Jt YWxpemVkX2lkYyA9IGdldF9iaXRzKGdiLCAyKTsKPiArICAgICAgICBoZHItPmJsX3ZpZGVvX2Z1 bGxfcmFuZ2VfZmxhZyA9IGdldF9iaXRzMShnYik7Cj4gKwo+ICsgICAgICAgIGlmICgoaGRyLT5y cHVfZm9ybWF0ICYgMHg3MDApID09IDApIHsKPiArICAgICAgICAgICAgaW50IGJsX2JpdF9kZXB0 aF9taW51czggPSBnZXRfdWVfZ29sb21iXzMxKGdiKTsKPiArICAgICAgICAgICAgaW50IGVsX2Jp dF9kZXB0aF9taW51czggPSBnZXRfdWVfZ29sb21iXzMxKGdiKTsKPiArICAgICAgICAgICAgaW50 IHZkcl9iaXRfZGVwdGhfbWludXM4ID0gZ2V0X3VlX2dvbG9tYl8zMShnYik7Cj4gKyAgICAgICAg ICAgIFZBTElEQVRFKGJsX2JpdF9kZXB0aF9taW51czgsIDAsIDgpOwo+ICsgICAgICAgICAgICBW QUxJREFURShlbF9iaXRfZGVwdGhfbWludXM4LCAwLCA4KTsKPiArICAgICAgICAgICAgVkFMSURB VEUodmRyX2JpdF9kZXB0aF9taW51czgsIDAsIDgpOwo+ICsgICAgICAgICAgICBoZHItPmJsX2Jp dF9kZXB0aCA9IGJsX2JpdF9kZXB0aF9taW51czggKyA4Owo+ICsgICAgICAgICAgICBoZHItPmVs X2JpdF9kZXB0aCA9IGVsX2JpdF9kZXB0aF9taW51czggKyA4Owo+ICsgICAgICAgICAgICBoZHIt PnZkcl9iaXRfZGVwdGggPSB2ZHJfYml0X2RlcHRoX21pbnVzOCArIDg7Cj4gKyAgICAgICAgICAg IGhkci0+c3BhdGlhbF9yZXNhbXBsaW5nX2ZpbHRlcl9mbGFnID0gZ2V0X2JpdHMxKGdiKTsKPiAr ICAgICAgICAgICAgc2tpcF9iaXRzKGdiLCAzKTsgLyogcmVzZXJ2ZWRfemVyb18zYml0cyAqLwo+ ICsgICAgICAgICAgICBoZHItPmVsX3NwYXRpYWxfcmVzYW1wbGluZ19maWx0ZXJfZmxhZyA9IGdl dF9iaXRzMShnYik7Cj4gKyAgICAgICAgICAgIGhkci0+ZGlzYWJsZV9yZXNpZHVhbF9mbGFnID0g Z2V0X2JpdHMxKGdiKTsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKCFoZHIt PmJsX2JpdF9kZXB0aCkgewo+ICsgICAgICAgIGF2X2xvZyhzLT5sb2djdHgsIEFWX0xPR19FUlJP UiwgIk1pc3NpbmcgUlBVIFZEUiBzZXF1ZW5jZSBpbmZvP1xuIik7Cj4gKyAgICAgICAgZ290byBm YWlsOwo+ICsgICAgfQo+ICsKPiArICAgIHZkcl9kbV9tZXRhZGF0YV9wcmVzZW50ID0gZ2V0X2Jp dHMxKGdiKTsKPiArICAgIHVzZV9wcmV2X3Zkcl9ycHUgPSBnZXRfYml0czEoZ2IpOwo+ICsgICAg dXNlX25scSA9IChoZHItPnJwdV9mb3JtYXQgJiAweDcwMCkgPT0gMCAmJiAhaGRyLT5kaXNhYmxl X3Jlc2lkdWFsX2ZsYWc7Cj4gKwo+ICsgICAgcHJvZmlsZSA9IHMtPmR2X3Byb2ZpbGUgPyBzLT5k dl9wcm9maWxlIDogZ3Vlc3NfcHJvZmlsZShoZHIpOwo+ICsgICAgaWYgKHByb2ZpbGUgPT0gNSAm JiB1c2VfbmxxKSB7Cj4gKyAgICAgICAgYXZfbG9nKHMtPmxvZ2N0eCwgQVZfTE9HX0VSUk9SLCAi UHJvZmlsZSA1IFJQVXMgc2hvdWxkIG5vdCB1c2UgTkxRXG4iKTsKPiArICAgICAgICBnb3RvIGZh aWw7Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKHVzZV9wcmV2X3Zkcl9ycHUpIHsKPiArICAgICAg ICBpbnQgcHJldl92ZHJfcnB1X2lkID0gZ2V0X3VlX2dvbG9tYl8zMShnYik7Cj4gKyAgICAgICAg VkFMSURBVEUocHJldl92ZHJfcnB1X2lkLCAwLCBET1ZJX01BWF9ETV9JRCk7Cj4gKyAgICAgICAg aWYgKCFzLT52ZHJfcmVmW3ByZXZfdmRyX3JwdV9pZF0pIHsKPiArICAgICAgICAgICAgYXZfbG9n KHMtPmxvZ2N0eCwgQVZfTE9HX0VSUk9SLCAiVW5rbm93biBwcmV2aW91cyBSUFUgSUQ6ICV1XG4i LAo+ICsgICAgICAgICAgICAgICAgICAgcHJldl92ZHJfcnB1X2lkKTsKPiArICAgICAgICAgICAg Z290byBmYWlsOwo+ICsgICAgICAgIH0KPiArICAgICAgICB2ZHIgPSAoRE9WSVZkclJlZiAqKSBz LT52ZHJfcmVmW3ByZXZfdmRyX3JwdV9pZF0tPmRhdGE7Cj4gKyAgICAgICAgcy0+bWFwcGluZyA9 ICZ2ZHItPm1hcHBpbmc7Cj4gKyAgICB9IGVsc2Ugewo+ICsgICAgICAgIGludCB2ZHJfcnB1X2lk ID0gZ2V0X3VlX2dvbG9tYl8zMShnYik7Cj4gKyAgICAgICAgVkFMSURBVEUodmRyX3JwdV9pZCwg MCwgRE9WSV9NQVhfRE1fSUQpOwo+ICsgICAgICAgIGlmICghcy0+dmRyX3JlZlt2ZHJfcnB1X2lk XSkgewo+ICsgICAgICAgICAgICBzLT52ZHJfcmVmW3Zkcl9ycHVfaWRdID0gYXZfYnVmZmVyX2Fs bG9jeihzaXplb2YoRE9WSVZkclJlZikpOwo+ICsgICAgICAgICAgICBpZiAoIXMtPnZkcl9yZWZb dmRyX3JwdV9pZF0pCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwo+ ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgdmRyID0gKERPVklWZHJSZWYgKikgcy0+dmRyX3Jl Zlt2ZHJfcnB1X2lkXS0+ZGF0YTsKPiArICAgICAgICBzLT5tYXBwaW5nID0gJnZkci0+bWFwcGlu ZzsKPiArCj4gKyAgICAgICAgdmRyLT5tYXBwaW5nLnZkcl9ycHVfaWQgPSB2ZHJfcnB1X2lkOwo+ ICsgICAgICAgIHZkci0+bWFwcGluZy5tYXBwaW5nX2NvbG9yX3NwYWNlID0gZ2V0X3VlX2dvbG9t Yl8zMShnYik7Cj4gKyAgICAgICAgdmRyLT5tYXBwaW5nLm1hcHBpbmdfY2hyb21hX2Zvcm1hdF9p ZGMgPSBnZXRfdWVfZ29sb21iXzMxKGdiKTsKPiArCj4gKyAgICAgICAgZm9yIChpbnQgYyA9IDA7 IGMgPCAzOyBjKyspIHsKPiArICAgICAgICAgICAgQVZET1ZJUmVzaGFwaW5nQ3VydmUgKmN1cnZl ID0gJnZkci0+bWFwcGluZy5jdXJ2ZXNbY107Cj4gKyAgICAgICAgICAgIGludCBudW1fcGl2b3Rz X21pbnVzXzIgPSBnZXRfdWVfZ29sb21iXzMxKGdiKTsKPiArICAgICAgICAgICAgaW50IHBpdm90 ID0gMDsKPiArCj4gKyAgICAgICAgICAgIFZBTElEQVRFKG51bV9waXZvdHNfbWludXNfMiwgMCwg QVZfRE9WSV9NQVhfUElFQ0VTIC0gMSk7Cj4gKyAgICAgICAgICAgIGN1cnZlLT5udW1fcGl2b3Rz ID0gbnVtX3Bpdm90c19taW51c18yICsgMjsKPiArICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7 IGkgPCBjdXJ2ZS0+bnVtX3Bpdm90czsgaSsrKSB7Cj4gKyAgICAgICAgICAgICAgICBwaXZvdCAr PSBnZXRfYml0cyhnYiwgaGRyLT5ibF9iaXRfZGVwdGgpOwo+ICsgICAgICAgICAgICAgICAgY3Vy dmUtPnBpdm90c1tpXSA9IGF2X2NsaXBfdWludDE2KHBpdm90KTsKPiArICAgICAgICAgICAgfQo+ ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgaWYgKHVzZV9ubHEpIHsKPiArICAgICAgICAgICAg dmRyLT5tYXBwaW5nLm5scV9tZXRob2RfaWRjID0gZ2V0X2JpdHMoZ2IsIDMpOwo+ICsgICAgICAg ICAgICAvKioKPiArICAgICAgICAgICAgICogVGhlIHBhdGVudCBtZW50aW9ucyBhbm90aGVyIGxl Z2FsIHZhbHVlLCBOTFFfTVVfTEFXLCBidXQgaXQncwo+ICsgICAgICAgICAgICAgKiBub3QgZG9j dW1lbnRlZCBhbnl3aGVyZSBob3cgdG8gcGFyc2Ugb3IgYXBwbHkgdGhhdCB0eXBlIG9mIE5MUS4K PiArICAgICAgICAgICAgICovCj4gKyAgICAgICAgICAgIFZBTElEQVRFKHZkci0+bWFwcGluZy5u bHFfbWV0aG9kX2lkYywgMCwgQVZfRE9WSV9OTFFfTElORUFSX0RaKTsKPiArICAgICAgICB9IGVs c2Ugewo+ICsgICAgICAgICAgICB2ZHItPm1hcHBpbmcubmxxX21ldGhvZF9pZGMgPSBBVl9ET1ZJ X05MUV9OT05FOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgdmRyLT5tYXBwaW5nLm51bV94 X3BhcnRpdGlvbnMgPSBnZXRfdWVfZ29sb21iX2xvbmcoZ2IpICsgMTsKPiArICAgICAgICB2ZHIt Pm1hcHBpbmcubnVtX3lfcGFydGl0aW9ucyA9IGdldF91ZV9nb2xvbWJfbG9uZyhnYikgKyAxOwo+ ICsgICAgICAgIC8qIEVuZCBvZiBycHVfZGF0YV9oZWFkZXIoKSwgc3RhcnQgb2YgdmRyX3JwdV9k YXRhX3BheWxvYWQoKSAqLwo+ICsKPiArICAgICAgICBmb3IgKGludCBjID0gMDsgYyA8IDM7IGMr Kykgewo+ICsgICAgICAgICAgICBBVkRPVklSZXNoYXBpbmdDdXJ2ZSAqY3VydmUgPSAmdmRyLT5t YXBwaW5nLmN1cnZlc1tjXTsKPiArICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjdXJ2 ZS0+bnVtX3Bpdm90cyAtIDE7IGkrKykgewo+ICsgICAgICAgICAgICAgICAgaW50IG1hcHBpbmdf aWRjID0gZ2V0X3VlX2dvbG9tYl8zMShnYik7Cj4gKyAgICAgICAgICAgICAgICBWQUxJREFURSht YXBwaW5nX2lkYywgMCwgMSk7Cj4gKyAgICAgICAgICAgICAgICBjdXJ2ZS0+bWFwcGluZ19pZGNb aV0gPSBtYXBwaW5nX2lkYzsKPiArICAgICAgICAgICAgICAgIHN3aXRjaCAobWFwcGluZ19pZGMp IHsKPiArICAgICAgICAgICAgICAgIGNhc2UgQVZfRE9WSV9NQVBQSU5HX1BPTFlOT01JQUw6IHsK PiArICAgICAgICAgICAgICAgICAgICBpbnQgcG9seV9vcmRlcl9taW51czEgPSBnZXRfdWVfZ29s b21iXzMxKGdiKTsKPiArICAgICAgICAgICAgICAgICAgICBWQUxJREFURShwb2x5X29yZGVyX21p bnVzMSwgMCwgMSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgY3VydmUtPnBvbHlfb3JkZXJbaV0g PSBwb2x5X29yZGVyX21pbnVzMSArIDE7Cj4gKyAgICAgICAgICAgICAgICAgICAgaWYgKHBvbHlf b3JkZXJfbWludXMxID09IDApIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVh cl9pbnRlcnBfZmxhZyA9IGdldF9iaXRzMShnYik7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAg IGlmIChsaW5lYXJfaW50ZXJwX2ZsYWcpIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg IC8qIGxhY2sgb2YgZG9jdW1lbnRhdGlvbi9zYW1wbGVzICovCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhdnByaXZfcmVxdWVzdF9zYW1wbGUocy0+bG9nY3R4LCAiRG9sYnkgVmlzaW9u ICIKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi bGluZWFyIGludGVycG9sYXRpb24iKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZm X2RvdmlfY3R4X3VucmVmKHMpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IEFWRVJST1JfUEFUQ0hXRUxDT01FOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICB9Cj4gKyAg ICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGsgPSAw OyBrIDw9IGN1cnZlLT5wb2x5X29yZGVyW2ldOyBrKyspCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgIGN1cnZlLT5wb2x5X2NvZWZbaV1ba10gPSBnZXRfc2VfY29lZihnYiwgaGRyKTsKPiArICAg ICAgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAg ICAgICAgIGNhc2UgQVZfRE9WSV9NQVBQSU5HX01NUjogewo+ICsgICAgICAgICAgICAgICAgICAg IGludCBtbXJfb3JkZXJfbWludXMxID0gZ2V0X2JpdHMoZ2IsIDIpOwo+ICsgICAgICAgICAgICAg ICAgICAgIFZBTElEQVRFKG1tcl9vcmRlcl9taW51czEsIDAsIDIpOwo+ICsgICAgICAgICAgICAg ICAgICAgIGN1cnZlLT5tbXJfb3JkZXJbaV0gPSBtbXJfb3JkZXJfbWludXMxICsgMTsKPiArICAg ICAgICAgICAgICAgICAgICBjdXJ2ZS0+bW1yX2NvbnN0YW50W2ldID0gZ2V0X3NlX2NvZWYoZ2Is IGhkcik7Cj4gKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjdXJ2ZS0+ bW1yX29yZGVyW2ldOyBqKyspIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQg ayA9IDA7IGsgPCA3OyBrKyspCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJ2ZS0+ bW1yX2NvZWZbaV1bal1ba10gPSBnZXRfc2VfY29lZihnYiwgaGRyKTsKPiArICAgICAgICAgICAg ICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgICAg ICB9Cj4gKyAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICB9Cj4g Kwo+ICsgICAgICAgIGlmICh1c2VfbmxxKSB7Cj4gKyAgICAgICAgICAgIGZvciAoaW50IGMgPSAw OyBjIDwgMzsgYysrKSB7Cj4gKyAgICAgICAgICAgICAgICBBVkRPVklOTFFQYXJhbXMgKm5scSA9 ICZ2ZHItPm1hcHBpbmcubmxxW2NdOwo+ICsgICAgICAgICAgICAgICAgbmxxLT5ubHFfb2Zmc2V0 ID0gZ2V0X2JpdHMoZ2IsIGhkci0+ZWxfYml0X2RlcHRoKTsKPiArICAgICAgICAgICAgICAgIG5s cS0+dmRyX2luX21heCA9IGdldF91ZV9jb2VmKGdiLCBoZHIpOwo+ICsgICAgICAgICAgICAgICAg c3dpdGNoICh2ZHItPm1hcHBpbmcubmxxX21ldGhvZF9pZGMpIHsKPiArICAgICAgICAgICAgICAg IGNhc2UgQVZfRE9WSV9OTFFfTElORUFSX0RaOgo+ICsgICAgICAgICAgICAgICAgICAgIG5scS0+ bGluZWFyX2RlYWR6b25lX3Nsb3BlID0gZ2V0X3VlX2NvZWYoZ2IsIGhkcik7Cj4gKyAgICAgICAg ICAgICAgICAgICAgbmxxLT5saW5lYXJfZGVhZHpvbmVfdGhyZXNob2xkID0gZ2V0X3VlX2NvZWYo Z2IsIGhkcik7Cj4gKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgICAg ICB9Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYg KHZkcl9kbV9tZXRhZGF0YV9wcmVzZW50KSB7Cj4gKyAgICAgICAgQVZET1ZJQ29sb3JNZXRhZGF0 YSAqY29sb3I7Cj4gKyAgICAgICAgaW50IGFmZmVjdGVkX2RtX2lkID0gZ2V0X3VlX2dvbG9tYl8z MShnYik7Cj4gKyAgICAgICAgaW50IGN1cnJlbnRfZG1faWQgPSBnZXRfdWVfZ29sb21iXzMxKGdi KTsKPiArICAgICAgICBWQUxJREFURShhZmZlY3RlZF9kbV9pZCwgMCwgRE9WSV9NQVhfRE1fSUQp Owo+ICsgICAgICAgIFZBTElEQVRFKGN1cnJlbnRfZG1faWQsIDAsIERPVklfTUFYX0RNX0lEKTsK PiArICAgICAgICBpZiAoIXMtPnZkcl9yZWZbYWZmZWN0ZWRfZG1faWRdKSB7Cj4gKyAgICAgICAg ICAgIHMtPnZkcl9yZWZbYWZmZWN0ZWRfZG1faWRdID0gYXZfYnVmZmVyX2FsbG9jeihzaXplb2Yo RE9WSVZkclJlZikpOwo+ICsgICAgICAgICAgICBpZiAoIXMtPnZkcl9yZWZbYWZmZWN0ZWRfZG1f aWRdKQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKPiArICAgICAg ICB9Cj4gKwo+ICsgICAgICAgIGlmICghcy0+dmRyX3JlZltjdXJyZW50X2RtX2lkXSkgewo+ICsg ICAgICAgICAgICBhdl9sb2cocy0+bG9nY3R4LCBBVl9MT0dfRVJST1IsICJVbmtub3duIHByZXZp b3VzIFJQVSBETSBJRDogJXVcbiIsCj4gKyAgICAgICAgICAgICAgICAgICBjdXJyZW50X2RtX2lk KTsKPiArICAgICAgICAgICAgZ290byBmYWlsOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAg LyogVXBkYXRlIGN1cnJlbnQgcG9pbnRlciBiYXNlZCBvbiBjdXJyZW50X2RtX2lkICovCj4gKyAg ICAgICAgdmRyID0gKERPVklWZHJSZWYgKikgcy0+dmRyX3JlZltjdXJyZW50X2RtX2lkXS0+ZGF0 YTsKPiArICAgICAgICBzLT5jb2xvciA9ICZ2ZHItPmNvbG9yOwo+ICsKPiArICAgICAgICAvKiBV cGRhdGUgdmFsdWVzIG9mIGFmZmVjdGVkX2RtX2lkICovCj4gKyAgICAgICAgdmRyID0gKERPVklW ZHJSZWYgKikgcy0+dmRyX3JlZlthZmZlY3RlZF9kbV9pZF0tPmRhdGE7Cj4gKyAgICAgICAgY29s b3IgPSAmdmRyLT5jb2xvcjsKPiArICAgICAgICBjb2xvci0+ZG1fbWV0YWRhdGFfaWQgPSBhZmZl Y3RlZF9kbV9pZDsKPiArICAgICAgICBjb2xvci0+c2NlbmVfcmVmcmVzaF9mbGFnID0gZ2V0X3Vl X2dvbG9tYl8zMShnYik7Cj4gKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA5OyBpKyspCj4g KyAgICAgICAgICAgIGNvbG9yLT55Y2NfdG9fcmdiX21hdHJpeFtpXSA9IGF2X21ha2VfcShnZXRf c2JpdHMoZ2IsIDE2KSwgMSA8PCAxMyk7Cj4gKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAz OyBpKyspIHsKPiArICAgICAgICAgICAgaW50IGRlbm9tID0gcHJvZmlsZSA9PSA0ID8gKDEgPDwg MzApIDogKDEgPDwgMjgpOwo+ICsgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSBnZXRfYml0 c19sb25nKGdiLCAzMik7Cj4gKyAgICAgICAgICAgIGlmIChvZmZzZXQgPiBJTlRfTUFYKSB7Cj4g KyAgICAgICAgICAgICAgICAvKiBFbnN1cmUgdGhlIHJlc3VsdCBmaXRzIGluc2lkZSBBVlJhdGlv bmFsICovCj4gKyAgICAgICAgICAgICAgICBvZmZzZXQgPj49IDE7Cj4gKyAgICAgICAgICAgICAg ICBkZW5vbSA+Pj0gMTsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICBjb2xvci0+eWNj X3RvX3JnYl9vZmZzZXRbaV0gPSBhdl9tYWtlX3Eob2Zmc2V0LCBkZW5vbSk7Cj4gKyAgICAgICAg fQo+ICsgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgOTsgaSsrKQo+ICsgICAgICAgICAgICBj b2xvci0+cmdiX3RvX2xtc19tYXRyaXhbaV0gPSBhdl9tYWtlX3EoZ2V0X3NiaXRzKGdiLCAxNiks IDEgPDwgMTQpOwo+ICsKPiArICAgICAgICBjb2xvci0+c2lnbmFsX2VvdGYgPSBnZXRfYml0cyhn YiwgMTYpOwo+ICsgICAgICAgIGNvbG9yLT5zaWduYWxfZW90Zl9wYXJhbTAgPSBnZXRfYml0cyhn YiwgMTYpOwo+ICsgICAgICAgIGNvbG9yLT5zaWduYWxfZW90Zl9wYXJhbTEgPSBnZXRfYml0cyhn YiwgMTYpOwo+ICsgICAgICAgIGNvbG9yLT5zaWduYWxfZW90Zl9wYXJhbTIgPSBnZXRfYml0c19s b25nKGdiLCAzMik7Cj4gKyAgICAgICAgY29sb3ItPnNpZ25hbF9iaXRfZGVwdGggPSBnZXRfYml0 cyhnYiwgNSk7Cj4gKyAgICAgICAgVkFMSURBVEUoY29sb3ItPnNpZ25hbF9iaXRfZGVwdGgsIDgs IDE2KTsKPiArICAgICAgICBjb2xvci0+c2lnbmFsX2NvbG9yX3NwYWNlID0gZ2V0X2JpdHMoZ2Is IDIpOwo+ICsgICAgICAgIGNvbG9yLT5zaWduYWxfY2hyb21hX2Zvcm1hdCA9IGdldF9iaXRzKGdi LCAyKTsKPiArICAgICAgICBjb2xvci0+c2lnbmFsX2Z1bGxfcmFuZ2VfZmxhZyA9IGdldF9iaXRz KGdiLCAyKTsKPiArICAgICAgICBjb2xvci0+c291cmNlX21pbl9wcSA9IGdldF9iaXRzKGdiLCAx Mik7Cj4gKyAgICAgICAgY29sb3ItPnNvdXJjZV9tYXhfcHEgPSBnZXRfYml0cyhnYiwgMTIpOwo+ ICsgICAgICAgIGNvbG9yLT5zb3VyY2VfZGlhZ29uYWwgPSBnZXRfYml0cyhnYiwgMTApOwo+ICsg ICAgfQo+ICsKPiArICAgIC8qIEZJWE1FOiB2ZXJpZnkgQ1JDMzIsIHJlcXVpcmVzIGltcGxlbWVu dGF0aW9uIG9mIEFWX0NSQ18zMl9NUEVHXzIgKi8KPiArICAgIHJldHVybiAwOwo+ICsKPiArZmFp bDoKPiArICAgIGZmX2RvdmlfY3R4X3VucmVmKHMpOyAvKiBkb24ndCBsZWFrIHBvdGVudGlhbGx5 IGludmFsaWQgc3RhdGUgKi8KPiArICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7Cj4gK30KPiBk aWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9kb3ZpX3JwdS5oIGIvbGliYXZjb2RlYy9kb3ZpX3JwdS5o Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwLi5mNmNhNWJiYmM1Cj4g LS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYmF2Y29kZWMvZG92aV9ycHUuaAo+IEBAIC0wLDAgKzEs ODcgQEAKPiArLyoKPiArICogRG9sYnkgVmlzaW9uIFJQVSBkZWNvZGVyCj4gKyAqCj4gKyAqIENv cHlyaWdodCAoQykgMjAyMSBKYW4gRWtzdHLDtm0KPiArICogQ29weXJpZ2h0IChDKSAyMDIxIE5p a2xhcyBIYWFzCj4gKyAqCj4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KPiArICoK PiArICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vcgo+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl bmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+ICsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwg b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiArICoKPiArICogRkZtcGVn IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gKyAq IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUgR05VCj4gKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiArICogTGljZW5zZSBhbG9u ZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+ICsgKiBG b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24s IE1BIDAyMTEwLTEzMDEgVVNBCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBBVkNPREVDX0RPVklfUlBV X0gKPiArI2RlZmluZSBBVkNPREVDX0RPVklfUlBVX0gKPiArCj4gKyNpbmNsdWRlICJsaWJhdnV0 aWwvZG92aV9tZXRhLmgiCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvZnJhbWUuaCIKPiArCj4gKyNk ZWZpbmUgRE9WSV9NQVhfRE1fSUQgMTUKPiArdHlwZWRlZiBzdHJ1Y3QgRE9WSUNvbnRleHQgewo+ ICsgICAgdm9pZCAqbG9nY3R4Owo+ICsKPiArICAgIC8qKgo+ICsgICAgICogQ3VycmVudGx5IGFj dGl2ZSBSUFUgZGF0YSBoZWFkZXIsIHVwZGF0ZXMgb24gZXZlcnkgZG92aV9ycHVfcGFyc2UoKS4K PiArICAgICAqLwo+ICsgICAgQVZET1ZJUnB1RGF0YUhlYWRlciBoZWFkZXI7Cj4gKwo+ICsgICAg LyoqCj4gKyAgICAgKiBDdXJyZW50bHkgYWN0aXZlIGRhdGEgbWFwcGluZ3MsIG9yIE5VTEwuIFBv aW50cyBpbnRvIG1lbW9yeSBvd25lZCBieSB0aGUKPiArICAgICAqIGNvcnJlc3BvbmRpbmcgcnB1 L3Zkcl9yZWYsIHdoaWNoIGJlY29tZXMgaW52YWxpZCBvbiB0aGUgbmV4dCBjYWxsIHRvCj4gKyAg ICAgKiBkb3ZpX3JwdV9wYXJzZS4KPiArICAgICAqLwo+ICsgICAgY29uc3QgQVZET1ZJRGF0YU1h cHBpbmcgKm1hcHBpbmc7Cj4gKyAgICBjb25zdCBBVkRPVklDb2xvck1ldGFkYXRhICpjb2xvcjsK PiArCj4gKyAgICAvKioKPiArICAgICAqIFByaXZhdGUgZmllbGRzIGludGVybmFsIHRvIGRvdmlf cnB1LmMKPiArICAgICAqLwo+ICsgICAgQVZCdWZmZXJSZWYgKnZkcl9yZWZbRE9WSV9NQVhfRE1f SUQrMV07Cj4gKyAgICB1aW50OF90IGR2X3Byb2ZpbGU7Cj4gKwo+ICt9IERPVklDb250ZXh0Owo+ ICsKPiAraW50IGZmX2RvdmlfY3R4X3JlcGxhY2UoRE9WSUNvbnRleHQgKnMsIGNvbnN0IERPVklD b250ZXh0ICpzMCk7Cj4gKwo+ICsvKioKPiArICogQ29tcGxldGVseSByZXNldCBhIERPVklDb250 ZXh0LCBwcmVzZXJ2aW5nIG9ubHkgbG9nY3R4Lgo+ICsgKi8KPiArdm9pZCBmZl9kb3ZpX2N0eF91 bnJlZihET1ZJQ29udGV4dCAqcyk7Cj4gKwo+ICsvKioKPiArICogUGFydGlhbGx5IHJlc2V0IHRo ZSBpbnRlcm5hbCBzdGF0ZS4gUmVzZXRzIHBlci1mcmFtZSBzdGF0ZSB3aGlsZSBwcmVzZXJ2aW5n Cj4gKyAqIGZpZWxkcyBwYXJzZWQgZnJvbSB0aGUgY29uZmlndXJhdGlvbiByZWNvcmQuCj4gKyAq Lwo+ICt2b2lkIGZmX2RvdmlfY3R4X2ZsdXNoKERPVklDb250ZXh0ICpzKTsKPiArCj4gKy8qKgo+ ICsgKiBSZWFkIHRoZSBjb250ZW50cyBvZiBhbiBBVkRPVklEZWNvZGVyQ29uZmlndXJhdGlvblJl Y29yZCAodXN1YWxseSBwcm92aWRlZAo+ICsgKiBieSBzdHJlYW0gc2lkZSBkYXRhKSBhbmQgdXBk YXRlIGludGVybmFsIHN0YXRlIGFjY29yZGluZ2x5Lgo+ICsgKi8KPiArdm9pZCBmZl9kb3ZpX3Vw ZGF0ZV9jZmcoRE9WSUNvbnRleHQgKnMsIGNvbnN0IEFWRE9WSURlY29kZXJDb25maWd1cmF0aW9u UmVjb3JkICpjZmcpOwo+ICsKPiArLyoqCj4gKyAqIFBhcnNlIHRoZSBjb250ZW50cyBvZiBhIERv dmkgUlBVIE5BTCBhbmQgdXBkYXRlIHRoZSBwYXJzZWQgdmFsdWVzIGluIHRoZQo+ICsgKiBET1ZJ Q29udGV4dCBzdHJ1Y3QuCj4gKyAqCj4gKyAqIFJldHVybnMgMCBvciBhbiBlcnJvciBjb2RlLgo+ ICsgKi8KPiAraW50IGZmX2RvdmlfcnB1X3BhcnNlKERPVklDb250ZXh0ICpzLCBjb25zdCB1aW50 OF90ICpycHUsIHNpemVfdCBycHVfc2l6ZSk7Cj4gKwo+ICsvKioKPiArICogQXR0YWNoIHRoZSBk ZWNvZGVkIEFWRE9WSU1ldGFkYXRhIGFzIHNpZGUgZGF0YSB0byBhbiBBVkZyYW1lLgo+ICsgKi8K PiAraW50IGZmX2RvdmlfYXR0YWNoX3NpZGVfZGF0YShET1ZJQ29udGV4dCAqcywgQVZGcmFtZSAq ZnJhbWUpOwo+ICsKPiArI2VuZGlmIC8qIEFWQ09ERUNfRE9WSV9SUFVfSCAqLwo+IAoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1h aWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFp bG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFi b3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVj dCAidW5zdWJzY3JpYmUiLgo=