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 623E342289 for ; Thu, 31 Mar 2022 21:44:27 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A783368B25A; Fri, 1 Apr 2022 00:44:25 +0300 (EEST) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2061.outbound.protection.outlook.com [40.92.90.61]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 69F0E68B181 for ; Fri, 1 Apr 2022 00:44:19 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Q57/MkZ6nraHXnFwXfiO2mIyOawBSrzAOFtaf560RRNDkZAdyzqA8BMgh/Pi9FhrdtlzsbTtC2h1RYD3BWsOOo/2nBFKpL/d+psw3/pqevbtITJXC0TcNPep8wA5+YhI7M+Vm9Q5R1lUKcLA3tGjEViHaUj+EO/XJdIem3qOdkCLbPiJz7c6AUrEiELsX4AyIh+rqgEIIhYL0UcUZtabsjZtS9BKRaQO2OlYBNJfqNHvhBmZx5LrqFnkgUF/+c0N+fZavxvaqCbHj9ivR+5M8mpjPZU0fG5EWwMBPkUCm99bu+JMC6CepYfWjiigLoxBPWWb4Zt6Rglzab3QbIVyXg== 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=HrMJG0h4K56Fof3c5sSn9DUm30t1x5eEprRUiOjMCqY=; b=T77dePsdxgq4IcW1A1ZIPGx5feNF8Q1FAw32hRV2x9rTKGKduue7RDCRDX63Ve4bTl+MSx4YI9VFU6gVWmnhpm19f5z3BoDJbM8G5SFEYwgqm7rxFHLQY9WODt6l1R6NA4ALvJEf6lbv7yGJItjUyA5vyxxGx1gbQHKm4qbVWuDWHyJo6UP7/ClgLhs6XIwP7uULlRt3tcj0DG48VJLYs7rR2021KK08uL1matCTpCWRdEXBlUz79rXLGgQTWOBACFYz4KRsuXgzGFApkQX/KT1qVBbtvCuIP9pRJh+lxy84NaYR8ll9Sy8PzRTf5a5xXmdN3LD/j3Q9qgorn4Vapw== 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=HrMJG0h4K56Fof3c5sSn9DUm30t1x5eEprRUiOjMCqY=; b=JFpzPn1mgNwg9BMVJYqcTQkEZ8hMpT2bE0NyK8ZoGwyqbDeUHa/6UdBRVu3lEc2Nz937C8pfJ0/6VoQWVXff1OA7zdGdHECZwgpqhTN8xBnPr6hZtyFlDFJ6LJujUvi3o5vakQ+hLmLaXaJqzCG4cmpGNaPYI3RDbjlXCDCN2M3AMGd2yM9QNGj6FvaNuyAb8qF6JKDoLct7K9ckizvUNc3sHPueXaYolXdmtPweybzh+fecECu3lpW9g/xRQpRFhFsjwNPHcaKDCmf51TDFkcSd7zc4SduXq+L4wy1gJKG5W3atGg+BEdtar4LB1ivupSZvZbXsB6dSNwGebWIKIQ== Received: from AS1PR01MB9564.eurprd01.prod.exchangelabs.com (2603:10a6:20b:4d1::16) by PR3PR01MB6601.eurprd01.prod.exchangelabs.com (2603:10a6:102:68::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5123.21; Thu, 31 Mar 2022 21:44:18 +0000 Received: from AS1PR01MB9564.eurprd01.prod.exchangelabs.com ([fe80::9070:a5fd:e532:bdf8]) by AS1PR01MB9564.eurprd01.prod.exchangelabs.com ([fe80::9070:a5fd:e532:bdf8%3]) with mapi id 15.20.5102.022; Thu, 31 Mar 2022 21:44:18 +0000 Message-ID: Date: Thu, 31 Mar 2022 23:44:15 +0200 Content-Language: en-US To: Mark Gaiser References: <20220330114039.69510-1-markg85@gmail.com> <20220330114039.69510-2-markg85@gmail.com> From: Andreas Rheinhardt In-Reply-To: X-TMN: [o6qN62DIkcpude9tLDxyC11rlCohGMct] X-ClientProxiedBy: ZR0P278CA0181.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:44::14) To AS1PR01MB9564.eurprd01.prod.exchangelabs.com (2603:10a6:20b:4d1::16) X-Microsoft-Original-Message-ID: <87345bf5-9700-6b93-4f22-5ae58dd6fd16@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6f244237-761f-40e1-13e7-08da135f9b7c X-MS-TrafficTypeDiagnostic: PR3PR01MB6601:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: vW9ohGr5D6KbHGxTr5MwmnJg3Xcpbm6If6gwyri5qCYqib0Nznvk0oC9muWRwNj7EiWk3Xd+0FFL0p9Xw1c865zoc8+9tAbGRnnvyl8I4zwYme2lW7voiw13vfXp3tB90kqMJ5nK/WKmjnF+EYg4+Hxwl8EEHgTRjTBOiB2PwWTiD9qeEH9wc4PAyEtOkbJxo3PyYEUHzKHIZOGQEvSmkp9wRjuqRy3PSihVLoO3OB/bEMLMKZ79w6y8m/v6Wd8/YtkllEmQehpWf8TbmOiw6MYqW5Ii7WMLPXiejtVyl4Uz5sTBFV1f5tdNvYC/ekyl2BZUbkN7xmreGJdaevLR7Uzo4lI9Lp/yW9WdSYh52b+2fUi1ea7idu6g2eVUsRtP/Nam34/aUKx9E36uZ1GTD6t2BmlSGcG4i/i3PBNYWN7J6TTDWptYnZqI3MPtackZWuuokGVgikq7lmyNJo8IJKStYsjzh3PBx6HOyCl/pcT7VbrjHZe2kTIPBPz4bX5EwAbQYN18fzHQggD6wQ69yIihz3XpJ0Kf1GwRZb1k6Txy7UWYxZVWbpG/MrFIZ9C82JEP1+bWtwk7ACbLNpXc4mC6jfUGNKf/b6RnPg6H3GuQZ3beDSq703TJI9cYYZaP X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?S3IyTkRDa3o2T1JBSW5UZjc3d1g5UHUxYUtyTk52SXY2WlhaOWV4VC9lSm1O?= =?utf-8?B?QlFTSVIvRDdBdjEwanpsRHliaUpCUTFsL0hxVENuVjQrd3dmdVQ0V1hwV1NW?= =?utf-8?B?L2RsNEJmVnBjWEQybkZiZWo2L2V0Vy9WcUp1NWRpTmp6TFFSZERYbzUwUWNq?= =?utf-8?B?M2N2L2o4TlV3VnY3WW84Vm1TYnRaU0JOSkdxLy9lTUtLMURxbjBtT0xVeTJx?= =?utf-8?B?cWdQNzFNR3EwMkNIM0x6bVVnU3dNRWllcHl5MlBaWnp1cjdFRU4ycjdRWktY?= =?utf-8?B?QnFkTVlIb1IrQSsyOVlXKzErVUw1dDYya2N5MUtjZnlScHhmN2xJT251cUFS?= =?utf-8?B?WkNMelJLRzBIRG9VV0lFZVJacEtRWUhDd2pqME5TYmk5NVFSVkFvSUhZNWRn?= =?utf-8?B?bnVKYStOT1VqeURWeVM2WVJ4blZBRWpqY3BEc2NybjhzYzNSR0tkR21ibGRK?= =?utf-8?B?b3BBZWRuYWFYdGtiTFVrWjNoaFF5NWkvdjcwamRBT1J2aVFGKzZCK1ZwL080?= =?utf-8?B?cmR5M3dDM20vd2ZlK1MzdzNtZGkxZkNLY2lldVczdjVoanhPWVhYYjdGWlRV?= =?utf-8?B?NUl0RXRIRkxEYVFWZWVCdXEyMlYvaGNEZGtxcTlXR2k4ME85TjdmaVZnd0Z2?= =?utf-8?B?TmVGMjhleDRuV0pYRXlybVVsK3JrcXE0OHROT3pQaVRROTBIUlRlYmdVb3NN?= =?utf-8?B?VlkwL283TUdzV0x1d1B6OWVMRGVqbFY0ZWpLSzl1Zm95N09wVDBlbDJhd1dP?= =?utf-8?B?am5uUGhaMDU1dXdQUHB4REk0d09GbmQvL05vTzd4TlJwM1ZnSG5FUERWdVZP?= =?utf-8?B?RWpUSHcwd3RSdnpySU9OM1RBMk95dVlpdi9Ma2ZUeWxsZlZPb1NlQ0J1VGlt?= =?utf-8?B?RzMwR2JpQjkwNDFKOEtiTmdOOVFGMGJ4UENnQVFlZXpCWWVndndkdkVMK3I3?= =?utf-8?B?ams2UTdtV09vU1JVZU94RkgrT2dEeDZNbU1CeU5vRklEeUR1NGtYSm5jaTlq?= =?utf-8?B?MWhqVGJyei9zWkJHOEVXdWJEaU9QSkhKQ0w1M1lHRnBEVlVyNjArTnRaeERx?= =?utf-8?B?cE5NbzFQWkVoQjlZSFNLd053dkxIZVZXZldxNktsdStWd1hNUHY3TzF4YXVk?= =?utf-8?B?ZTJ5elg3MjdxT2NteWhaaS8vQjROL0xVVXdYMEZoWVBPSnNSMmtweUVTLy9H?= =?utf-8?B?dGJ6MWxEQko1YkpSbjdDTUhEeWU1TzhQTlF1S2pzeHdYN3RNenBrTmt6NlNv?= =?utf-8?B?Y0xpYTBNSjN5NUJSZzJtLy9nTUs4dElTWURNR3AxTlh4cDJMNW5CVmJVRkpU?= =?utf-8?B?bm4vdGp5d0x1SEg0Uk9ucFJSWE5Xbk5iYWR3elJwMXA2a3VzMlVMS1VWNFdV?= =?utf-8?B?RDM2UUhyd1dJYitHZlgrWnllQ1RFSU51TkN3YVJPYVpYWWNKQ3kvQllsaFpt?= =?utf-8?B?eUNoTnN5OHlFRVlPeE9XeXo4U29WK0NpQ2JONnhsU203d3RvM1p6eElMeGsv?= =?utf-8?B?dk5rbDhKL1FMZUV0ekNzOGh5NW5uZ1dRZFhNTDRRN2xjcm9GMkpYSE5hTEtL?= =?utf-8?B?ZDIxcG8rTG9GYVhUWmV6LzZhOTR5WGZ0STIwUGl0TUpUREdKWUZ1aUpnZStn?= =?utf-8?B?dGU4TWd4TnY4NlprVnpmK2FiWmdYTi9RYmVXa0U0T3gySlVJRGZFNWsvOHBm?= =?utf-8?B?ams2Ymh4R3AwVEZTMFJxNEpKdVNvek4yL25zUW5NWkxPL00xVEo2UWdJdW5C?= =?utf-8?B?bDkwNjc5VGxWeEEwNEFld3hxWnR1VzhYV1VreThDZm5MbGZ2aHgzRVRzeHRn?= =?utf-8?B?aFM3TDBRQUdydUs1bWErenVVUUZOczNrL212RzNyNWlxV0FTR21zR0QwS0oy?= =?utf-8?B?UjZHOHhMRjQrNVYvSTlZcnBDNk4vV1BoN2xTaEVHZUpBVG9tYUpkbzYyd05a?= =?utf-8?Q?XZGIwIBZS6j+Y9O3JCL1umurgaByHaLt?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6f244237-761f-40e1-13e7-08da135f9b7c X-MS-Exchange-CrossTenant-AuthSource: AS1PR01MB9564.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Mar 2022 21:44:17.9954 (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: PR3PR01MB6601 Subject: Re: [FFmpeg-devel] [PATCH v10 1/1] avformat: Add IPFS protocol support. 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: 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: TWFyayBHYWlzZXI6Cj4gT24gV2VkLCBNYXIgMzAsIDIwMjIgYXQgMzo1NyBQTSBBbmRyZWFzIFJo ZWluaGFyZHQgPAo+IGFuZHJlYXMucmhlaW5oYXJkdEBvdXRsb29rLmNvbT4gd3JvdGU6Cj4gCj4+ IE1hcmsgR2Fpc2VyOgo+Pj4gT24gV2VkLCBNYXIgMzAsIDIwMjIgYXQgMjoyMSBQTSBBbmRyZWFz IFJoZWluaGFyZHQgPAo+Pj4gYW5kcmVhcy5yaGVpbmhhcmR0QG91dGxvb2suY29tPiB3cm90ZToK Pj4+Cj4+Pj4gTWFyayBHYWlzZXI6Cj4+Pj4+IFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvcjoK Pj4+Pj4gLSBmZnBsYXkgaXBmczovLzxjaWQ+Cj4+Pj4+IC0gZmZwbGF5IGlwbnM6Ly88Y2lkPgo+ Pj4+Pgo+Pj4+PiBJUEZTIGRhdGEgY2FuIGJlIHBsYXllZCBmcm9tIHNvIGNhbGxlZCAiaXBmcyBn YXRld2F5cyIuCj4+Pj4+IEEgZ2F0ZXdheSBpcyBlc3NlbnRpYWxseSBhIHdlYnNlcnZlciB0aGF0 IGdpdmVzIGFjY2VzcyB0byB0aGUKPj4+Pj4gZGlzdHJpYnV0ZWQgSVBGUyBuZXR3b3JrLgo+Pj4+ Pgo+Pj4+PiBUaGlzIHByb3RvY29sIHN1cHBvcnQgKGlwZnMgYW5kIGlwbnMpIHRoZXJlZm9yZSB0 cmFuc2xhdGVzCj4+Pj4+IGlwZnM6Ly8gYW5kIGlwbnM6Ly8gdG8gYSBodHRwOi8vIHVybC4gVGhp cyByZXN1bHRpbmcgdXJsIGlzCj4+Pj4+IHRoZW4gaGFuZGxlZCBieSB0aGUgaHR0cCBwcm90b2Nv bC4gSXQgY291bGQgYWxzbyBiZSBodHRwcwo+Pj4+PiBkZXBlbmRpbmcgb24gdGhlIGdhdGV3YXkg cHJvdmlkZWQuCj4+Pj4+Cj4+Pj4+IFRvIHVzZSB0aGlzIHByb3RvY29sLCBhIGdhdGV3YXkgbXVz dCBiZSBwcm92aWRlZC4KPj4+Pj4gSWYgeW91IGRvIG5vdGhpbmcgaXQgd2lsbCB0cnkgdG8gZmlu ZCBpdCBpbiB5b3VyCj4+Pj4+ICRIT01FLy5pcGZzL2dhdGV3YXkgZmlsZS4gVGhlIHdheXMgdG8g c2V0IGl0IG1hbnVhbGx5IGFyZToKPj4+Pj4gMS4gRGVmaW5lIGEgLWdhdGV3YXkgPHVybD4gdG8g dGhlIGdhdGV3YXkuCj4+Pj4+IDIuIERlZmluZSAkSVBGU19HQVRFV0FZIHdpdGggdGhlIGZ1bGwg aHR0cCBsaW5rIHRvIHRoZSBnYXRld2F5Lgo+Pj4+PiAzLiBEZWZpbmUgJElQRlNfUEFUSCBhbmQg cG9pbnQgaXQgdG8gdGhlIElQRlMgZGF0YSBwYXRoLgo+Pj4+PiA0LiBIYXZlIElQRlMgcnVubmlu ZyBpbiB5b3VyIGxvY2FsIHVzZXIgZm9sZGVyICh1bmRlciAkSE9NRS8uaXBmcykuCj4+Pj4+Cj4+ Pj4+IFNpZ25lZC1vZmYtYnk6IE1hcmsgR2Fpc2VyIDxtYXJrZzg1QGdtYWlsLmNvbT4KPj4+Pj4g LS0tCj4+Pj4+ICBjb25maWd1cmUgICAgICAgICAgICAgICAgIHwgICAyICsKPj4+Pj4gIGRvYy9w cm90b2NvbHMudGV4aSAgICAgICAgfCAgMzAgKysrKwo+Pj4+PiAgbGliYXZmb3JtYXQvTWFrZWZp bGUgICAgICB8ICAgMiArCj4+Pj4+ICBsaWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5jIHwgMzA5ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+Pj4+ICBsaWJhdmZvcm1hdC9w cm90b2NvbHMuYyAgIHwgICAyICsKPj4+Pj4gIDUgZmlsZXMgY2hhbmdlZCwgMzQ1IGluc2VydGlv bnMoKykKPj4+Pj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5j Cj4+Pj4+Cj4+Pj4+IGRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKPj4+Pj4gaW5k ZXggZTRkMzZhYTYzOS4uNTVhZjkwOTU3YSAxMDA3NTUKPj4+Pj4gLS0tIGEvY29uZmlndXJlCj4+ Pj4+ICsrKyBiL2NvbmZpZ3VyZQo+Pj4+PiBAQCAtMzU3OSw2ICszNTc5LDggQEAgdWRwX3Byb3Rv Y29sX3NlbGVjdD0ibmV0d29yayIKPj4+Pj4gIHVkcGxpdGVfcHJvdG9jb2xfc2VsZWN0PSJuZXR3 b3JrIgo+Pj4+PiAgdW5peF9wcm90b2NvbF9kZXBzPSJzeXNfdW5faCIKPj4+Pj4gIHVuaXhfcHJv dG9jb2xfc2VsZWN0PSJuZXR3b3JrIgo+Pj4+PiAraXBmc19wcm90b2NvbF9zZWxlY3Q9Imh0dHBz X3Byb3RvY29sIgo+Pj4+PiAraXBuc19wcm90b2NvbF9zZWxlY3Q9Imh0dHBzX3Byb3RvY29sIgo+ Pj4+Pgo+Pj4+PiAgIyBleHRlcm5hbCBsaWJyYXJ5IHByb3RvY29scwo+Pj4+PiAgbGliYW1xcF9w cm90b2NvbF9kZXBzPSJsaWJyYWJiaXRtcSIKPj4+Pj4gZGlmZiAtLWdpdCBhL2RvYy9wcm90b2Nv bHMudGV4aSBiL2RvYy9wcm90b2NvbHMudGV4aQo+Pj4+PiBpbmRleCBkMjA3ZGYwYjUyLi43Yzlj MGE0ODA4IDEwMDY0NAo+Pj4+PiAtLS0gYS9kb2MvcHJvdG9jb2xzLnRleGkKPj4+Pj4gKysrIGIv ZG9jL3Byb3RvY29scy50ZXhpCj4+Pj4+IEBAIC0yMDI1LDUgKzIwMjUsMzUgQEAgZGVjb2Rpbmcg ZXJyb3JzLgo+Pj4+Pgo+Pj4+PiAgQGVuZCB0YWJsZQo+Pj4+Pgo+Pj4+PiArQHNlY3Rpb24gaXBm cwo+Pj4+PiArCj4+Pj4+ICtJbnRlclBsYW5ldGFyeSBGaWxlIFN5c3RlbSAoSVBGUykgcHJvdG9j b2wgc3VwcG9ydC4gT25lIGNhbiBhY2Nlc3MKPj4+PiBmaWxlcyBzdG9yZWQKPj4+Pj4gK29uIHRo ZSBJUEZTIG5ldHdvcmsgdGhyb3VnaCBzbyBjYWxsZWQgZ2F0ZXdheXMuIFRob3NlIGFyZSBodHRw KHMpCj4+Pj4gZW5kcG9pbnRzLgo+Pj4+PiArVGhpcyBwcm90b2NvbCB3cmFwcyB0aGUgSVBGUyBu YXRpdmUgcHJvdG9jb2xzIChpcGZzOi8vIGFuZCBpcG5zOi8vKSB0bwo+Pj4+IGJlIHNlbmQKPj4+ Pj4gK3RvIHN1Y2ggYSBnYXRld2F5LiBVc2VycyBjYW4gKGFuZCBzaG91bGQpIGhvc3QgdGhlaXIg b3duIG5vZGUgd2hpY2gKPj4+PiBtZWFucyB0aGlzCj4+Pj4+ICtwcm90b2NvbCB3aWxsIHVzZSB5 b3VyIGxvY2FsIG1hY2hpbmUgZ2F0ZXdheSB0byBhY2Nlc3MgZmlsZXMgb24gdGhlCj4+Pj4gSVBG UyBuZXR3b3JrLgo+Pj4+PiArCj4+Pj4+ICtJZiBhIHVzZXIgZG9lc24ndCBoYXZlIGEgbm9kZSBv ZiB0aGVpciBvd24gdGhlbiB0aGUgcHVibGljIGdhdGV3YXkKPj4+PiBkd2ViLmxpbmsgaXMKPj4+ Pj4gK3VzZWQgYnkgZGVmYXVsdC4KPj4+Pj4gKwo+Pj4+PiArWW91IGNhbiB1c2UgdGhpcyBwcm90 b2NvbCBpbiAyIHdheXMuIFVzaW5nIElQRlM6Cj4+Pj4+ICtAZXhhbXBsZQo+Pj4+PiArZmZwbGF5 IGlwZnM6Ly9RbWJHdEpnMjNza2h2Rm11OW1KaWVQVkJ5aGZ6dTVyd283NE1Fa1ZEWUFtRjVUCj4+ Pj4+ICtAZW5kIGV4YW1wbGUKPj4+Pj4gKwo+Pj4+PiArT3IgdGhlIElQTlMgcHJvdG9jb2wgKElQ TlMgaXMgbXV0YWJsZSBJUEZTKToKPj4+Pj4gK0BleGFtcGxlCj4+Pj4+ICtmZnBsYXkgaXBuczov L1FtYkd0SmcyM3NraHZGbXU5bUppZVBWQnloZnp1NXJ3bzc0TUVrVkRZQW1GNVQKPj4+Pj4gK0Bl bmQgZXhhbXBsZQo+Pj4+PiArCj4+Pj4+ICtZb3UgY2FuIGFsc28gY2hhbmdlIHRoZSBnYXRld2F5 IHRvIGJlIHVzZWQ6Cj4+Pj4+ICsKPj4+Pj4gK0B0YWJsZSBAb3B0aW9uCj4+Pj4+ICsKPj4+Pj4g K0BpdGVtIGdhdGV3YXkKPj4+Pj4gK0RlZmluZXMgdGhlIGdhdGV3YXkgdG8gdXNlLiBXaGVuIG5v dGhpbmcgaXMgcHJvdmlkZWQgdGhlIHByb3RvY29sIHdpbGwKPj4+PiBmaXJzdCB0cnkKPj4+Pj4g K3lvdXIgbG9jYWwgZ2F0ZXdheS4gSWYgdGhhdCBmYWlscyBkd2ViLmxpbmsgd2lsbCBiZSB1c2Vk Lgo+Pj4+PiArCj4+Pj4+ICtAZW5kIHRhYmxlCj4+Pj4+Cj4+Pj4+ICBAYyBtYW4gZW5kIFBST1RP Q09MUwo+Pj4+PiBkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvTWFrZWZpbGUgYi9saWJhdmZvcm1h dC9NYWtlZmlsZQo+Pj4+PiBpbmRleCBkNzE4MmQ2YmQ4Li5lMzIzM2ZkN2FjIDEwMDY0NAo+Pj4+ PiAtLS0gYS9saWJhdmZvcm1hdC9NYWtlZmlsZQo+Pj4+PiArKysgYi9saWJhdmZvcm1hdC9NYWtl ZmlsZQo+Pj4+PiBAQCAtNjYwLDYgKzY2MCw4IEBAIE9CSlMtJChDT05GSUdfU1JUUF9QUk9UT0NP TCkgICAgICAgICAgICAgKz0KPj4+PiBzcnRwcHJvdG8ubyBzcnRwLm8KPj4+Pj4gIE9CSlMtJChD T05GSUdfU1VCRklMRV9QUk9UT0NPTCkgICAgICAgICAgKz0gc3ViZmlsZS5vCj4+Pj4+ICBPQkpT LSQoQ09ORklHX1RFRV9QUk9UT0NPTCkgICAgICAgICAgICAgICs9IHRlZXByb3RvLm8gdGVlX2Nv bW1vbi5vCj4+Pj4+ICBPQkpTLSQoQ09ORklHX1RDUF9QUk9UT0NPTCkgICAgICAgICAgICAgICs9 IHRjcC5vCj4+Pj4+ICtPQkpTLSQoQ09ORklHX0lQRlNfUFJPVE9DT0wpICAgICAgICAgICAgICs9 IGlwZnNnYXRld2F5Lm8KPj4+Pj4gK09CSlMtJChDT05GSUdfSVBOU19QUk9UT0NPTCkgICAgICAg ICAgICAgKz0gaXBmc2dhdGV3YXkubwo+Pj4+PiAgVExTLU9CSlMtJChDT05GSUdfR05VVExTKSAg ICAgICAgICAgICAgICArPSB0bHNfZ251dGxzLm8KPj4+Pj4gIFRMUy1PQkpTLSQoQ09ORklHX0xJ QlRMUykgICAgICAgICAgICAgICAgKz0gdGxzX2xpYnRscy5vCj4+Pj4+ICBUTFMtT0JKUy0kKENP TkZJR19NQkVEVExTKSAgICAgICAgICAgICAgICs9IHRsc19tYmVkdGxzLm8KPj4+Pj4gZGlmZiAt LWdpdCBhL2xpYmF2Zm9ybWF0L2lwZnNnYXRld2F5LmMgYi9saWJhdmZvcm1hdC9pcGZzZ2F0ZXdh eS5jCj4+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+Pj4+IGluZGV4IDAwMDAwMDAwMDAuLjFh MDM5NTg5YzAKPj4+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4+PiArKysgYi9saWJhdmZvcm1hdC9pcGZz Z2F0ZXdheS5jCj4+Pj4+IEBAIC0wLDAgKzEsMzA5IEBACj4+Pj4+ICsvKgo+Pj4+PiArICogSVBG UyBhbmQgSVBOUyBwcm90b2NvbCBzdXBwb3J0IHRocm91Z2ggSVBGUyBHYXRld2F5Lgo+Pj4+PiAr ICogQ29weXJpZ2h0IChjKSAyMDIyIE1hcmsgR2Fpc2VyCj4+Pj4+ICsgKgo+Pj4+PiArICogVGhp cyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgo+Pj4+PiArICoKPj4+Pj4gKyAqIEZGbXBlZyBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPj4+Pj4gKyAqIG1v ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK Pj4+Pj4gKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlcgo+Pj4+PiArICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4+Pj4+ICsgKgo+Pj4+PiArICogRkZt cGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4+ Pj4+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgo+Pj4+PiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKPj4+Pj4gKyAqIExlc3NlciBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4+Pj4+ICsgKgo+Pj4+PiArICogWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1 YmxpYwo+Pj4+PiArICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0 byB0aGUgRnJlZSBTb2Z0d2FyZQo+Pj4+PiArICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQQo+Pj4+IDAyMTEwLTEzMDEgVVNBCj4+ Pj4+ICsgKi8KPj4+Pj4gKwo+Pj4+PiArI2luY2x1ZGUgImF2Zm9ybWF0LmgiCj4+Pj4+ICsjaW5j bHVkZSAibGliYXZ1dGlsL2F2YXNzZXJ0LmgiCj4+Pj4KPj4+PiBVbnVzZWQuCj4+Pj4KPj4+Pj4g KyNpbmNsdWRlICJsaWJhdnV0aWwvYXZzdHJpbmcuaCIKPj4+Pj4gKyNpbmNsdWRlICJsaWJhdnV0 aWwvaW50ZXJuYWwuaCIKPj4+Pj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvb3B0LmgiCj4+Pj4+ICsj aW5jbHVkZSAibGliYXZ1dGlsL3RyZWUuaCIKPj4+Pgo+Pj4+ID8KPj4+Pgo+Pj4KPj4+IFRoaXMg d2hvbGUgaW5jbHVkZSBwYXJ0IGNhbiBiZSBjbGVhbmVkIHVwIG11Y2ggbW9yZS4KPj4+IEp1c3Qg aGF2aW5nIHRoZXNlOgo+Pj4gI2luY2x1ZGUgImxpYmF2dXRpbC9hdnN0cmluZy5oIgo+Pj4gI2lu Y2x1ZGUgImxpYmF2dXRpbC9vcHQuaCIKPj4+ICNpbmNsdWRlICJ1cmwuaCIKPj4+ICNpbmNsdWRl IDxzeXMvc3RhdC5oPgo+Pj4KPj4+IGlzIGVub3VnaC4KPj4+Cj4+Pgo+Pj4+PiArI2luY2x1ZGUg PGZjbnRsLmg+Cj4+Pj4+ICsjaWYgSEFWRV9JT19ICj4+Pj4+ICsjaW5jbHVkZSA8aW8uaD4KPj4+ Pj4gKyNlbmRpZgo+Pj4+PiArI2lmIEhBVkVfVU5JU1REX0gKPj4+Pj4gKyNpbmNsdWRlIDx1bmlz dGQuaD4KPj4+Pj4gKyNlbmRpZgo+Pj4+PiArI2luY2x1ZGUgIm9zX3N1cHBvcnQuaCIKPj4+Pj4g KyNpbmNsdWRlICJ1cmwuaCIKPj4+Pj4gKyNpbmNsdWRlIDxzdGRsaWIuaD4KPj4+Pj4gKyNpbmNs dWRlIDxzeXMvc3RhdC5oPgo+Pj4+PiArCj4+Pj4+ICt0eXBlZGVmIHN0cnVjdCBJUEZTR2F0ZXdh eUNvbnRleHQgewo+Pj4+PiArICAgIEFWQ2xhc3MgKmNsYXNzOwo+Pj4+PiArICAgIFVSTENvbnRl eHQgKmlubmVyOwo+Pj4+PiArICAgIC8vIElzIGZpbGxlZCBieSB0aGUgLWdhdGV3YXkgYXJndW1l bnQgYW5kIG5vdCBjaGFuZ2VkIGFmdGVyLgo+Pj4+PiArICAgIGNoYXIgKmdhdGV3YXk7Cj4+Pj4+ ICsgICAgLy8gSWYgdGhlIGFib3ZlIGdhdGV3YXkgaXMgbm9uIG51bGwsIGl0IHdpbGwgYmUgY29w aWVkIGludG8gdGhpcwo+Pj4+IGJ1ZmZlci4KPj4+Pj4gKyAgICAvLyBFbHNlIHRoaXMgYnVmZmVy IHdpbGwgY29udGFpbiB0aGUgYXV0byBkZXRlY3RlZCBnYXRld2F5Lgo+Pj4+PiArICAgIC8vIElu IGVpdGhlciBjYXNlLCB0aGUgZ2F0ZXdheSB0byB1c2Ugd2lsbCBiZSBpbiB0aGlzIGJ1ZmZlci4K Pj4+Pj4gKyAgICBjaGFyIGdhdGV3YXlfYnVmZmVyW1BBVEhfTUFYXTsKPj4+Pj4gK30gSVBGU0dh dGV3YXlDb250ZXh0Owo+Pj4+PiArCj4+Pj4+ICsvLyBBIGJlc3QtZWZmb3J0IHdheSB0byBmaW5k IHRoZSBJUEZTIGdhdGV3YXkuCj4+Pj4+ICsvLyBPbmx5IHRoZSBtb3N0IGFwcHJvcGlhdGUgZ2F0 ZXdheSBpcyBzZXQuIEl0J3Mgbm90IGFjdHVhbGx5Cj4+IHJlcXVlc3RlZAo+Pj4+PiArLy8gKGh0 dHAgY2FsbCkgdG8gcHJldmVudCBhIHBvdGVudGlhbCBzbG93ZG93biBpbiBzdGFydHVwLiBBIHBv dGVudGlhbAo+Pj4+IHRpbWVvdXQKPj4+Pj4gKy8vIGlzIGhhbmRsZWQgYnkgdGhlIEhUVFAgcHJv dG9jb2wuCj4+Pj4+ICtzdGF0aWMgaW50IHBvcHVsYXRlX2lwZnNfZ2F0ZXdheShVUkxDb250ZXh0 ICpoKQo+Pj4+PiArewo+Pj4+PiArICAgIElQRlNHYXRld2F5Q29udGV4dCAqYyA9IGgtPnByaXZf ZGF0YTsKPj4+Pj4gKyAgICBjaGFyIGlwZnNfZnVsbF9kYXRhX2ZvbGRlcltQQVRIX01BWF07Cj4+ Pj4+ICsgICAgY2hhciBpcGZzX2dhdGV3YXlfZmlsZVtQQVRIX01BWF07Cj4+Pj4+ICsgICAgc3Ry dWN0IHN0YXQgc3Q7Cj4+Pj4+ICsgICAgaW50IHN0YXRfcmV0ID0gMDsKPj4+Pj4gKyAgICBpbnQg cmV0ID0gQVZFUlJPUihFSU5WQUwpOwo+Pj4+PiArICAgIEZJTEUgKmdhdGV3YXlfZmlsZSA9IE5V TEw7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAvLyBUZXN0ICRJUEZTX0dBVEVXQVkuCj4+Pj4+ICsgICAg aWYgKGdldGVudigiSVBGU19HQVRFV0FZIikgIT0gTlVMTCkgewo+Pj4+PiArICAgICAgICBpZiAo c25wcmludGYoYy0+Z2F0ZXdheV9idWZmZXIsIHNpemVvZihjLT5nYXRld2F5X2J1ZmZlciksCj4+ ICIlcyIsCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICBnZXRlbnYoIklQRlNfR0FURVdBWSIp KSA+PQo+Pj4+IHNpemVvZihjLT5nYXRld2F5X2J1ZmZlcikpIHsKPj4+Pj4gKyAgICAgICAgICAg IGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSBJUEZTX0dBVEVXQVkgZW52aXJvbm1lbnQK Pj4+PiB2YXJpYWJsZSBleGNlZWRzIHRoZSBtYXhpbXVtIGxlbmd0aC4gV2UgYWxsb3cgYSBtYXgg b2YgJXp1Cj4+IGNoYXJhY3RlcnNcbiIsCj4+Pj4gc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSk7 Cj4+Pj4+ICsgICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7Cj4+Pj4+ICsgICAgICAg ICAgICBnb3RvIGVycjsKPj4+Pj4gKyAgICAgICAgfQo+Pj4+PiArCj4+Pj4+ICsgICAgICAgIHJl dCA9IDE7Cj4+Pj4+ICsgICAgICAgIGdvdG8gZXJyOwo+Pj4+PiArICAgIH0gZWxzZQo+Pj4+PiAr ICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0RFQlVHLCAiJElQRlNfR0FURVdBWSBpcyBlbXB0eS5c biIpOwo+Pj4+PiArCj4+Pj4+ICsgICAgLy8gV2UgbmVlZCB0byBrbm93IHRoZSBJUEZTIGZvbGRl ciB0byAtIGV2ZW50dWFsbHkgLSByZWFkIHRoZQo+Pj4+IGNvbnRlbnRzIG9mCj4+Pj4+ICsgICAg Ly8gdGhlICJnYXRld2F5IiBmaWxlIHdoaWNoIHdvdWxkIHRlbGwgdXMgdGhlIGdhdGV3YXkgdG8g dXNlLgo+Pj4+PiArICAgIGlmIChnZXRlbnYoIklQRlNfUEFUSCIpID09IE5VTEwpIHsKPj4+Pj4g KyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19ERUJVRywgIiRJUEZTX1BBVEggaXMgZW1wdHkuXG4i KTsKPj4+Pj4gKwo+Pj4+PiArICAgICAgICAvLyBUcnkgdmlhIHRoZSBob21lIGZvbGRlci4KPj4+ Pj4gKyAgICAgICAgaWYgKGdldGVudigiSE9NRSIpID09IE5VTEwpIHsKPj4+Pj4gKyAgICAgICAg ICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIiRIT01FIGFwcGVhcnMgdG8gYmUgZW1wdHku XG4iKTsKPj4+Pj4gKyAgICAgICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKPj4+Pj4gKyAg ICAgICAgICAgIGdvdG8gZXJyOwo+Pj4+PiArICAgICAgICB9Cj4+Pj4+ICsKPj4+Pj4gKyAgICAg ICAgLy8gVmVyaWZ5IHRoZSBjb21wb3NlZCBwYXRoIGZpdHMuCj4+Pj4+ICsgICAgICAgIGlmIChz bnByaW50ZihpcGZzX2Z1bGxfZGF0YV9mb2xkZXIsCj4+Pj4gc2l6ZW9mKGlwZnNfZnVsbF9kYXRh X2ZvbGRlciksCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAiJXMvLmlwZnMvIiwgZ2V0ZW52 KCJIT01FIikpID49Cj4+Pj4gc2l6ZW9mKGlwZnNfZnVsbF9kYXRhX2ZvbGRlcikpIHsKPj4+Pj4g KyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSBJUEZTIGRhdGEgcGF0 aCBleGNlZWRzIHRoZQo+Pj4+IG1heCBwYXRoIGxlbmd0aCAoJXp1KVxuIiwgc2l6ZW9mKGlwZnNf ZnVsbF9kYXRhX2ZvbGRlcikpOwo+Pj4+PiArICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFSU5W QUwpOwo+Pj4+PiArICAgICAgICAgICAgZ290byBlcnI7Cj4+Pj4+ICsgICAgICAgIH0KPj4+Pj4g Kwo+Pj4+PiArICAgICAgICAvLyBTdGF0IHRoZSBmb2xkZXIuCj4+Pj4+ICsgICAgICAgIC8vIEl0 IHNob3VsZCBleGlzdCBpbiBhIGRlZmF1bHQgSVBGUyBzZXR1cCB3aGVuIHJ1biBhcyBsb2NhbAo+ Pj4+IHVzZXIuCj4+Pj4+ICsjaWZuZGVmIF9XSU4zMgo+Pj4+PiArICAgICAgICBzdGF0X3JldCA9 IHN0YXQoaXBmc19mdWxsX2RhdGFfZm9sZGVyLCAmc3QpOwo+Pj4+PiArI2Vsc2UKPj4+Pj4gKyAg ICAgICAgc3RhdF9yZXQgPSB3aW4zMl9zdGF0KGlwZnNfZnVsbF9kYXRhX2ZvbGRlciwgJnN0KTsK Pj4+Pj4gKyNlbmRpZgo+Pj4+PiArICAgICAgICBpZiAoc3RhdF9yZXQgPCAwKSB7Cj4+Pj4+ICsg ICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0lORk8sICJVbmFibGUgdG8gZmluZCBJUEZTIGZv bGRlci4gV2UKPj4+PiB0cmllZDpcbiIpOwo+Pj4+PiArICAgICAgICAgICAgYXZfbG9nKGgsIEFW X0xPR19JTkZPLCAiLSAkSVBGU19QQVRILCB3aGljaCB3YXMKPj4gZW1wdHkuXG4iKTsKPj4+Pj4g KyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfSU5GTywgIi0gJEhPTUUvLmlwZnMgKGZ1bGwg dXJpOiAlcykgd2hpY2gKPj4+PiBkb2Vzbid0IGV4aXN0LlxuIiwgaXBmc19mdWxsX2RhdGFfZm9s ZGVyKTsKPj4+Pj4gKyAgICAgICAgICAgIHJldCA9IEFWRVJST1IoRU5PRU5UKTsKPj4+Pj4gKyAg ICAgICAgICAgIGdvdG8gZXJyOwo+Pj4+PiArICAgICAgICB9Cj4+Pj4+ICsgICAgfSBlbHNlIHsK Pj4+Pj4gKyAgICAgICAgaWYgKHNucHJpbnRmKGlwZnNfZnVsbF9kYXRhX2ZvbGRlciwKPj4+PiBz aXplb2YoaXBmc19mdWxsX2RhdGFfZm9sZGVyKSwgIiVzIiwKPj4+Pj4gKyAgICAgICAgICAgICAg ICAgZ2V0ZW52KCJJUEZTX1BBVEgiKSkgPj0KPj4gc2l6ZW9mKGlwZnNfZnVsbF9kYXRhX2ZvbGRl cikpCj4+Pj4gewo+Pj4+PiArICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAi VGhlIElQRlNfUEFUSCBlbnZpcm9ubWVudAo+Pj4+IHZhcmlhYmxlIGV4Y2VlZHMgdGhlIG1heGlt dW0gbGVuZ3RoLiBXZSBhbGxvdyBhIG1heCBvZiAlenUKPj4gY2hhcmFjdGVyc1xuIiwKPj4+PiBz aXplb2YoYy0+Z2F0ZXdheV9idWZmZXIpKTsKPj4+Pj4gKyAgICAgICAgICAgIHJldCA9IEFWRVJS T1IoRUlOVkFMKTsKPj4+Pj4gKyAgICAgICAgICAgIGdvdG8gZXJyOwo+Pj4+PiArICAgICAgICB9 Cj4+Pj4+ICsKPj4+Pj4gKyAgICB9Cj4+Pj4+ICsKPj4+Pj4gKyAgICAvLyBDb3B5IHRoZSBmdWxs eSBjb21wb3NlZCBnYXRld2F5IHBhdGggaW50byBpcGZzX2dhdGV3YXlfZmlsZS4KPj4+Pj4gKyAg ICBpZiAoc25wcmludGYoaXBmc19nYXRld2F5X2ZpbGUsIHNpemVvZihpcGZzX2dhdGV3YXlfZmls ZSksCj4+Pj4gIiVzZ2F0ZXdheSIsCj4+Pj4+ICsgICAgICAgICAgICAgICAgIGlwZnNfZnVsbF9k YXRhX2ZvbGRlcikgPj0gc2l6ZW9mKGlwZnNfZ2F0ZXdheV9maWxlKSkKPj4gewo+Pj4+PiArICAg ICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJUaGUgSVBGUyBnYXRld2F5IGZpbGUgcGF0 aCBleGNlZWRzCj4+Pj4gdGhlIG1heCBwYXRoIGxlbmd0aCAoJXp1KVxuIiwgc2l6ZW9mKGlwZnNf Z2F0ZXdheV9maWxlKSk7Cj4+Pj4+ICsgICAgICAgIHJldCA9IEFWRVJST1IoRU5PRU5UKTsKPj4+ Pj4gKyAgICAgICAgZ290byBlcnI7Cj4+Pj4+ICsgICAgfQo+Pj4+PiArCj4+Pj4+ICsgICAgLy8g R2V0IHRoZSBjb250ZW50cyBvZiB0aGUgZ2F0ZXdheSBmaWxlLgo+Pj4+PiArICAgIGdhdGV3YXlf ZmlsZSA9IGF2X2ZvcGVuX3V0ZjgoaXBmc19nYXRld2F5X2ZpbGUsICJyIik7Cj4+Pj4+ICsgICAg aWYgKCFnYXRld2F5X2ZpbGUpIHsKPj4+Pj4gKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJO SU5HLCAiVGhlIElQRlMgZ2F0ZXdheSBmaWxlIChmdWxsIHVyaToKPj4gJXMpCj4+Pj4gZG9lc24n dCBleGlzdC4gSXMgdGhlIGdhdGV3YXkgZW5hYmxlZD9cbiIsIGlwZnNfZ2F0ZXdheV9maWxlKTsK Pj4+Pj4gKyAgICAgICAgcmV0ID0gQVZFUlJPUihFTk9FTlQpOwo+Pj4+PiArICAgICAgICBnb3Rv IGVycjsKPj4+Pj4gKyAgICB9Cj4+Pj4+ICsKPj4+Pj4gKyAgICAvLyBSZWFkIGEgc2luZ2xlIGxp bmUgKGZnZXRzIHN0b3BzIGF0IG5ldyBsaW5lIG1hcmspLgo+Pj4+PiArICAgIGZnZXRzKGMtPmdh dGV3YXlfYnVmZmVyLCBzaXplb2YoYy0+Z2F0ZXdheV9idWZmZXIpIC0gMSwKPj4+PiBnYXRld2F5 X2ZpbGUpOwo+Pj4+PiArCj4+Pj4+ICsgICAgLy8gUmVwbGFjZSB0aGUgbGFzdCBjaGFyIHdpdGgg XDAKPj4+Pj4gKyAgICBjLT5nYXRld2F5X2J1ZmZlcltzaXplb2YoYy0+Z2F0ZXdheV9idWZmZXIp IC0gMV0gPSAwOwoKQnR3OiBmZ2V0cyBub3JtYWxseSB6ZXJvLXRlcm1pbmF0ZXMgdGhlIGJ1ZmZl ciAoaS5lLiBpdCByZWFkcyBhdCBtb3N0CihzaXplb2YoYy0+Z2F0ZXdheV9idWZmZXIpIC0gMSkg LSAxIGNoYXJhY3RlcnMgZnJvbSB0aGUgc3RyZWFtIGFuZCBhZGRzCmEgXDAuIEJ1dCBvbiBhIHJl YWQgZXJyb3IgaXQgZG9lc24ndCBkbyB0aGlzLCBpbnN0ZWFkIHRoZSBjb250ZW50cyBvZgp0aGUg YnVmZmVyIGFyZSBpbmRldGVybWluYXRlIGFuZCBzbyBzaG91bGQgbm90IGJlIHVzZWQuIEFkZGlu ZyBhIHplcm8gYXQKdGhlIHZlcnkgZW5kIG9mIGdhdGV3YXlfYnVmZmVyIGRvZXMgbm90IGhlbHAg dG8gZW5mb3JjZSB0aGlzLgoKZmdldHMgcmV0dXJucyBOVUxMIG9uIHJlYWQgZXJyb3IgYW5kIGlm IG5vdGhpbmcgY291bGQgYmUgcmVhZCBkdWUgdG8KaW1tZWRpYXRlIEVPRjsgc28geW91IHNob3Vs ZCBjaGVjayBmb3IgdGhhdC4KKEJ0dzogQSBwcm90b2NvbCdzIGNvbnRleHQgaXMgemVyb2VkIGlu aXRpYWxseSwgc28KYy0+Z2F0ZXdheV9idWZmZXJbc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSAt IDFdIGlzIGFscmVhZHkgemVybywKYmVjYXVzZSBubyBvbmUgZXZlciB3cm90ZSBhbnl0aGluZyBl bHNlIHRoZXJlLikKCj4+Pj4+ICsKPj4+Pj4gKyAgICAvLyBSZXBsYWNlIGZpcnN0IG9jY3VyZW5j ZSBvZiBlbmQgb2YgbGluZSB3aXRoIFwwCj4+Pj4+ICsgICAgYy0+Z2F0ZXdheV9idWZmZXJbc3Ry Y3NwbihjLT5nYXRld2F5X2J1ZmZlciwgIlxyIildID0gMDsKPj4+Pj4gKyAgICBjLT5nYXRld2F5 X2J1ZmZlcltzdHJjc3BuKGMtPmdhdGV3YXlfYnVmZmVyLCAiXG4iKV0gPSAwOwo+Pj4+Cj4+Pj4g SWYgdGhlIGJ1ZmZlciBjb250YWlucyBib3RoIFxyIGFuZCBcbiBhbmQgdGhlIGZpcnN0IFxuIHBy ZWNlZGVzIHRoZQo+Pj4+IGZpcnN0IFxyLCB0aGVuIHRoZSBhYm92ZSB6ZXJvZXMgYm90aCB0aGUg Zmlyc3QgXHIgYW5kIHRoZSBmaXJzdCBcbi4gSWYKPj4+PiBpdCBpcyBlbm91Z2ggdG8gb25seSB6 ZXJvIHRoZSBmaXJzdCBuZXdsaW5lLCB0aGVuIHRoaXMgY2FuIGJlIHNpbXBsaWZpZWQKPj4+PiB0 byAiYy0+Z2F0ZXdheV9idWZmZXJbc3RyY3NwbihjLT5nYXRld2F5X2J1ZmZlciwgIlxyXG4iKV0g PSAwOyIuCj4+Pj4KPj4+Cj4+PiBJdCB1c2VkIHRvIGJlIGluIHlvdXIgc3VnZ2VzdGVkIHNpbXBs aWZpZWQgYXBwcm9hY2guCj4+PiBJdCB3YXMgdGhlbiBzdWdnZXN0ZWQgdG8gc3BsaXQgaXQgYmVj YXVzZSBvZiBuZXcgbGluZSBkaWZmZXJlbmNlcwo+Pj4gb24gZGlmZmVyZW50IHBsYXRmb3Jtcy4g VGhpcyB3YXMgc3VwcG9zZWQgdG8gY2F0Y2ggImV2ZXJ5dGhpbmciLgo+Pj4KPj4+IEkgcHJlZmVy IHRvIGtlZXAgdGhpcyBhcy1pcyBub3cuCj4+Pgo+Pgo+PiBJcyBpdCBpbnRlbmRlZCB0byB1c2Ug d2hhdCBpcyBiZXR3ZWVuIHRoZSBmaXJzdCBcbiBhbmQgdGhlIGZpcnN0IFxyCj4+IGxhdGVyb24g YWx0aG91Z2ggdGhpcyBkYXRhIHdpbGwgYmUgYWZ0ZXIgdGhlICdcMCcgYWZ0ZXIgdGhpcz8gVGhh dCB3b3VsZAo+PiBiZSB2ZXJ5IHdlaXJkLgo+Pgo+IAo+IFlvdSBoYXZlIHRvIGVsYWJvcmF0ZSBv biB0aGF0IGFzIHRoYXQgc291bmRzIHJlYWxseSB3cm9uZyB0byBtZS4KPiAKCmMtPmdhdGV3YXlf YnVmZmVyW3N0cmNzcG4oYy0+Z2F0ZXdheV9idWZmZXIsICJcclxuIildID0gMDsKb3ZlcndyaXRl cyB0aGUgZmlyc3QgXHIgb3IgXG4gKHdoaWNoZXZlciBpcyBmaXJzdCkgd2l0aCAnXDAnIChpZiBh bnk7Cm90aGVyd2lzZSBpdCBvdmVyd3JpdGVzIHRoZSB0ZXJtaW5hdGluZyBcMCB3aXRoIFwwLgoK Yy0+Z2F0ZXdheV9idWZmZXJbc3RyY3NwbihjLT5nYXRld2F5X2J1ZmZlciwgIlxyIildID0gMDsK Yy0+Z2F0ZXdheV9idWZmZXJbc3RyY3NwbihjLT5nYXRld2F5X2J1ZmZlciwgIlxuIildID0gMDsK YWxzbyBkb2VzIHRoaXMsIGJ1dCBpbiBjYXNlIHRoYXQgdGhlIHN0cmluZyBvcmlnaW5hbGx5IGNv bnRhaW5lZCBib3RoIGEKXHIgYW5kIGEgXG4gd2l0aCB0aGUgZmlyc3QgXG4gcHJlY2VkaW5nIHRo ZSBmaXJzdCBcciBpdCB3b3VsZCBhbHNvIHplcm8KdGhlIGZpcnN0IFxyOyB0aGlzIHBvc2l0aW9u IGlzIGFmdGVyIHRoZSBmaXJzdCB0ZXJtaW5hdGluZyBcMCAodGhvc2UgYXQKdGhlIHBvc2l0aW9u IHdoZXJlIHRoZSBmaXJzdCBcbiB3YXMpLCBzbyBpdCBhcHBlYXJlZCB0byBtZSB0aGF0IHlvdQpp bnRlbmRlZCB0byB1c2Ugd2hhdCBpcyBhZnRlciB0aGUgZmlyc3QgXDAuIEJlY2F1c2UgdGhhdCBp cyB0aGUgb25seQpkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGFwcHJvYWNoIHdpdGggdHdvIGNhbGxz IHRvIHN0cmNzcG4gYW5kIHRoZSBvbmUKd2l0aCBvbmUgY2FsbCB0byBzdHJjc3BuLgoKQnV0IHRo ZW4gSSByZWFkIHRoYXQgdGhpcyBoYXMgYmVlbiBzdWdnZXN0ZWQgdG8geW91IGFuZCBmb3VuZCB0 aGUgbWFpbAooaHR0cHM6Ly9mZm1wZWcub3JnL3BpcGVybWFpbC9mZm1wZWctZGV2ZWwvMjAyMi1G ZWJydWFyeS8yOTI1OTAuaHRtbCkKdGhpcyByZWZlcnJlZCB0by4gVGhlcmUgc2VlbXMgdG8gYmUg YSBtaXN1bmRlcnN0YW5kaW5nIGluIHRoZSBzZW1hbnRpY3MKb2Ygc3RyY3NwbiAobW9zdCBsaWtl bHkgYSBjb25mdXNpb24gd2l0aCBzdHJzdHIpOgpzdHJjc3BuKGMtPmdhdGV3YXlfYnVmZmVyLCAi XHJcbiIpIHdvcmtzIHdpdGggc2luZ2xlIFxyIGFuZCBzaW5nbGUgXG4sCnRoZXJlIG5lZWQgbm90 IGJlIGEgc2luZ2xlICJcclxuIiBzdWJzdHJpbmcuIEJvdGggbWV0aG9kcyB3b3VsZCBwcm9kdWNl CnN0cmluZ3MgdGhhdCBjb21wYXJlIGVxdWFsIGFjY29yZGluZyB0byBzdHJjbXAoKS4KCj4gSWYg SSdtIGNvcnJlY3QgYSBmaWxlIGRvZXNuJ3Qgc3RhcnQgd2l0aCBlaXRoZXIgXHIgb3IgXG4uIFVu bGVzcyB5b3UgaGF2ZQo+IGludGVudGlvbmFsIGxpbmUgYnJlYWtzLgo+IEl0IGVuZHMgd2l0aCB0 aG9zZSwgbm90IHN0YXJ0cy4gSSdtIGp1c3QgZ29pbmcgdG8gaWdub3JlIFxyIGZvciBub3cgZm9y Cj4gYnJldml0eS4KPiAKPiBTbyBpZiB5b3UgaGF2ZToKPiBcbjx5b3VyIGdhdGV3YXk+XG4KPiAK PiBXb3VsZCBiZSB0cmFuc2xhdGVkIHRvOgo+IFwwPHlvdXIgZ2F0ZXdheT5cbgo+IAo+IFRoZW4g aW5kZWVkIHlvdSB3b24ndCBnZXQgYSBnYXRld2F5IGJlY2F1c2UgaXQncyBpbnRlbmRlZCB0aGF0 IHlvdXIgZmlyc3QKPiBsaW5lIGlzIHRoYXQgZ2F0ZXdheS4KPiAKPiBJdCBtdXN0IGJlIGluIHRo aXMgZm9ybWF0Ogo+IDx5b3VyIGdhdGV3YXk+XG4KPiAKPiBvciB3aXRob3V0IGEgbmV3bGluZQo+ IDx5b3VyIGdhdGV3YXk+Cj4gCj4gVGhlcmUgaXMgbm8gYmxhbmsgbGluZSB0cmltbWluZyB0byBm aXggdXNlciBzY3Jld3Vwcy4KPiBVc2VycyBhcmUgbm90IGludGVuZGVkIHRvIHRvdWNoIHRoYXQg ZmlsZSBhbnlob3cuIEl0J3MgYXV0by1nZW5lcmF0ZWQgYnkKPiBJUEZTIGFuZCByZW1vdmVkIG9u Y2UgaXQgc2h1dHMgZG93bi4KPiAKPiAKPj4+Cj4+Pj4+ICsKPj4+Pj4gKyAgICAvLyBJZiBzdHJs ZW4gZmluZHMgYW55dGhpbmcgbG9uZ2VyIHRoZW4gMCBjaGFyYWN0ZXJzIHRoZW4gd2UgaGF2ZQo+ PiBhCj4+Pj4+ICsgICAgLy8gcG90ZW50aWFsIGdhdGV3YXkgdXJsLgo+Pj4+PiArICAgIGlmIChz dHJsZW4oYy0+Z2F0ZXdheV9idWZmZXIpIDwgMSkgewo+Pj4+Cj4+Pj4gaWYgKCpjLT5nYXRld2F5 X2J1ZmZlciA9PSAnXDAnKQo+Pj4+Cj4+Pgo+Pj4gSXMgdGhhdCBhIHN0eWxlIGRpZmZlcmVuY2Ug b3IgYW4gYWN0dWFsIGJlaGF2aW9yIGRpZmZlcmVuY2U/Cj4+Pgo+Pgo+PiBUaGUgZm9ybWVyIHdv dWxkIGNhbGwgc3RybGVuIHRvIGNoZWNrIHdoZXRoZXIgYSBzdHJpbmcgaXMgZW1wdHkgKHVubGVz cwo+PiB0aGUgY29tcGlsZXIgb3B0aW1pemVzIGl0IGF3YXkpLiBObyBhY3R1YWwgYmVoYXZpb3Vy IGRpZmZlcmVuY2UgZXhpc3RzLgo+PiBCdXQgaXQgaXMgbmV2ZXJ0aGVsZXNzIG1vcmUgdGhhbiBh IHN0eWxlIGRpZmZlcmVuY2UuCj4+Cj4gCj4gRml4ZWQgbG9jYWxseS4KPiAKPj4KPj4+Cj4+Pj4K Pj4+Pj4gKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiVGhlIElQRlMgZ2F0ZXdh eSBmaWxlIChmdWxsIHVyaToKPj4gJXMpCj4+Pj4gYXBwZWFycyB0byBiZSBlbXB0eS4gSXMgdGhl IGdhdGV3YXkgc3RhcnRlZD9cbiIsIGlwZnNfZ2F0ZXdheV9maWxlKTsKPj4+Pj4gKyAgICAgICAg cmV0ID0gQVZFUlJPUihFSUxTRVEpOwo+Pj4+PiArICAgICAgICBnb3RvIGVycjsKPj4+Pj4gKyAg ICB9IGVsc2Ugewo+Pj4+PiArICAgICAgICAvLyBXZSdyZSBkb25lLCB0aGUgYy0+Z2F0ZXdheV9i dWZmZXIgaGFzIHNvbWV0aGluZyB0aGF0IGxvb2tzCj4+Pj4gdmFsaWQuCj4+Pj4+ICsgICAgICAg IHJldCA9IDE7Cj4+Pj4+ICsgICAgICAgIGdvdG8gZXJyOwo+Pj4+PiArICAgIH0KPj4+Pj4gKwo+ Pj4+PiArZXJyOgo+Pj4+PiArICAgIGlmIChnYXRld2F5X2ZpbGUpCj4+Pj4+ICsgICAgICAgIGZj bG9zZShnYXRld2F5X2ZpbGUpOwo+Pj4+PiArCj4+Pj4+ICsgICAgcmV0dXJuIHJldDsKPj4+Pj4g K30KPj4+Pj4gKwo+Pj4+PiArc3RhdGljIGludCB0cmFuc2xhdGVfaXBmc190b19odHRwKFVSTENv bnRleHQgKmgsIGNvbnN0IGNoYXIgKnVyaSwKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgZmxhZ3MsIEFWRGljdGlvbmFyeSAqKm9wdGlvbnMpCj4+Pj4+ICt7Cj4+ Pj4+ICsgICAgY29uc3QgY2hhciAqaXBmc19jaWQ7Cj4+Pj4+ICsgICAgY2hhciAqZnVsbHVyaSA9 IE5VTEw7Cj4+Pj4+ICsgICAgaW50IHJldDsKPj4+Pj4gKyAgICBJUEZTR2F0ZXdheUNvbnRleHQg KmMgPSBoLT5wcml2X2RhdGE7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAvLyBUZXN0IGZvciBpcGZzOi8v LCBpcGZzOiwgaXBuczovLyBhbmQgaXBuczouIFRoaXMgcHJlZml4IGlzCj4+Pj4gc3RyaXBwZWQg ZnJvbQo+Pj4+PiArICAgIC8vIHRoZSBzdHJpbmcgbGVhdmluZyBqdXN0IHRoZSBDSUQgaW4gaXBm c19jaWQuCj4+Pj4+ICsgICAgaW50IGlzX2lwZnMgPSBhdl9zdHJpc3RhcnQodXJpLCAiaXBmczov LyIsICZpcGZzX2NpZCk7Cj4+Pj4+ICsgICAgaW50IGlzX2lwbnMgPSBhdl9zdHJpc3RhcnQodXJp LCAiaXBuczovLyIsICZpcGZzX2NpZCk7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAvLyBXZSBtdXN0IGhh dmUgZWl0aGVyIGlwbnMgb3IgaXBmcy4KPj4+Pj4gKyAgICBpZiAoIWlzX2lwZnMgJiYgIWlzX2lw bnMpIHsKPj4+Pj4gKyAgICAgICAgcmV0ID0gQVZFUlJPUihFSU5WQUwpOwo+Pj4+PiArICAgICAg ICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJVbnN1cHBvcnRlZCB1cmwgJXNcbiIsIHVyaSk7 Cj4+Pj4+ICsgICAgICAgIGdvdG8gZXJyOwo+Pj4+PiArICAgIH0KPj4+Pj4gKwo+Pj4+PiArICAg IC8vIElmIHRoZSBDSUQgaGFzIGEgbGVuZ3RoIGdyZWF0ZXIgdGhlbiAwIHRoZW4gd2UgYXNzdW1l IHdlIGhhdmUgYQo+Pj4+IHByb3BlciB3b3JraW5nIG9uZS4KPj4+Pj4gKyAgICAvLyBJdCBjb3Vs ZCBzdGlsbCBiZSB3cm9uZyBidXQgaW4gdGhhdCBjYXNlIHRoZSBnYXRld2F5IHNob3VsZAo+PiBz YXZlCj4+Pj4gdXMgYW5kCj4+Pj4+ICsgICAgLy8gcnV0dXJuIGEgNDAzIGVycm9yLiBUaGUgaHR0 cCBwcm90b2NvbCBoYW5kbGVzIHRoaXMuCj4+Pj4+ICsgICAgaWYgKHN0cmxlbihpcGZzX2NpZCkg PCAxKSB7Cj4+Pj4+ICsgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIkEgQ0lEIG11 c3QgYmUgcHJvdmlkZWQuXG4iKTsKPj4+Pj4gKyAgICAgICAgcmV0ID0gQVZFUlJPUihFSUxTRVEp Owo+Pj4+PiArICAgICAgICBnb3RvIGVycjsKPj4+Pj4gKyAgICB9Cj4+Pj4+ICsKPj4+Pj4gKyAg ICAvLyBQb3B1bGF0ZSBjLT5nYXRld2F5X2J1ZmZlciB3aXRoIHdoYXRldmVyIGlzIGluIGMtPmdh dGV3YXkKPj4+Pj4gKyAgICBpZiAoYy0+Z2F0ZXdheSAhPSBOVUxMKSB7Cj4+Pj4+ICsgICAgICAg IGlmIChzbnByaW50ZihjLT5nYXRld2F5X2J1ZmZlciwgc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVy KSwKPj4gIiVzIiwKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGMtPmdhdGV3YXkpID49IHNp emVvZihjLT5nYXRld2F5X2J1ZmZlcikpIHsKPj4+Pj4gKyAgICAgICAgICAgIGF2X2xvZyhoLCBB Vl9MT0dfV0FSTklORywgIlRoZSAtZ2F0ZXdheSBwYXJhbWV0ZXIgaXMgdG9vCj4+Pj4gbG9uZy4g V2UgYWxsb3cgYSBtYXggb2YgJXp1IGNoYXJhY3RlcnNcbiIsIHNpemVvZihjLT5nYXRld2F5X2J1 ZmZlcikpOwo+Pj4+Cj4+Pj4gV2UgdHlwaWNhbGx5IHVzZSBTSVpFX1NQRUNJRklFUiBpbnN0ZWFk IG9mIHogZm9yIGNvbXBhdGliaWxpdHkgd2l0aAo+Pj4+IGFuY2llbnQgdmVyc2lvbnMgb2YgTVNW Qy4KPj4+PiAoSSBkb24ndCBrbm93IHdoZXRoZXIgdGhlcmUgaXMgYW55IHN1cHBvcnRlZCB2ZXJz aW9uIG9mIE1TVkMgdGhhdAo+Pj4+IGRvZXNuJ3Qgc3VwcG9ydCB6OyBJIGRvbid0IHVzZSBNU1ZD IG15c2VsZi4pCj4+Pj4KPj4+Cj4+PiBIZXJlIHRvbyBJIHdhcyBleHBsaWNpdGx5IHN1Z2dlc3Rl ZCB0byB1c2UgJXp1ICh3aGVuIEkgd2FzIHVzaW5nIC0gSQo+PiB0aGluawo+Pj4gLSAlbHUgYmVm b3JlKS4KPj4+IFNvIEkgYXNzdW1lIHRoYXQgdGhlIGFuY2llbnQgTVNWQyB2ZXJzaW9uIHlvdSdy ZSByZWZlcnJpbmcgdG8gaXMgcHJvYmFibHkKPj4+IG5vdCBzdXBwb3J0ZWQgYW55bW9yZSBmcm9t IGFuIGZmbXBlZyBjb21waWxlciByZXF1aXJlbWVudCBwb2ludCBvZiB2aWV3Pwo+Pj4KPj4+IFNo b3VsZCBpIG5vdyBjaGFuZ2UgYWxsICIlenUiIHRvICIlIlNJWkVfU1BFQ0lGSUVSICh0aGlzIGRv ZXMgbm90IG1ha2UgaXQKPj4+IG5lYXRlciBub3Igc2hvcnRlciB3aXRoIHRoZSA4MCBjaGFyIGxp bmUgbGltaXQpLgo+Pj4gSXMgdGhpcyBjaGFuZ2UgcmVxdWlyZWQ/Cj4+Cj4+IEFzIHNhaWQ6IEl0 IGlzIGZvciBjb21wYXRpYmlsaXR5IHdpdGggYW5jaWVudCB2ZXJzaW9ucyBvZiBNU1ZDLiBCdXQg SQo+PiBkb24ndCBrbm93IHdoZXRoZXIgYW55IG9mIHRoZSBhY3R1YWxseSBzdXBwb3J0ZWQgdmVy c2lvbnMgb2YgTVNWQyBzdGlsbAo+PiBuZWVkIGl0Lgo+Pgo+Pj4KPj4+IElmIGl0IGlzLCB3aGF0 IF9leGFjdGx5XyBkbyBpIG5lZWQgdG8gY2hhbmdlIGl0IGluPyBJIHNlZSBhCj4+PiBjb3VwbGUg ZGlmZmVyZW50IFNJWkVfU1BFQ0lGSUVSIHByZWZpeGVzLiBJIGhhdmUgbm8gY2x1ZSB3aGF0IHRv IHVzZQo+PiBoZXJlLgo+Pgo+PiBUaGVyZSBpcyBvbmx5IG9uZSBTSVpFX1NQRUNJRklFUiwgbmFt ZWx5IFNJWkVfU1BFQ0lGSUVSOyB0aGUKPj4gUFRSRElGRl9TUEVDSUZJRVIgKG9yIHdoYXRldmVy IHlvdSBzZWUpIGlzIG9idmlvdXNseSBub3QgdGhlIHRoaW5nIHRvCj4+IHVzZSBmb3Igc2l6ZV90 Lgo+Pgo+PiBJIHNlZSBzb21lOgo+ICUiU0laRV9TUEVDSUZJRVIiCj4gCj4gQnV0IGFsc28gbGlr ZSB0aGlzOgo+ICU4IlNJWkVfU1BFQ0lGSUVSCj4gJTUiU0laRV9TUEVDSUZJRVIKPiAKPiBJJ20g YXNzdW1pbmcgdGhleSBhcmUgZm9yIGNsaXBwaW5nPwoKcHJpbnRmIHNwZWNpZmllcnMgY29uc2lz dCBvZiBmbGFncywgbWluaW11bSBmaWVsZCB3aWR0aCwgcHJlY2lzaW9uCihpbmRpY2F0ZWQgYnkg Jy4nKSwgbGVuZ3RoIG1vZGlmaWVyIGFuZCBjb252ZXJzaW9uIHNwZWNpZmllciAoaW4gdGhhdApv cmRlcikuIExpa2UgdGhlIG1hY3JvcyBpbiBpbnR0eXBlcy5oIFNJWkVfU1BFQ0lGSUVSIGV4cGFu ZHMgdG8gYQpjaGFyYWN0ZXIgc3RyaW5nIGxpdGVyYWwgdGhhdCBpbmNsdWRlcyBhIGxlbmd0aCBt b2RpZmllciBhbmQgYQpjb252ZXJzaW9uIHNwZWNpZmllciwgc28gdGhhdCBvbmUgY2FuIHVzZSB0 aGlzIHRvZ2V0aGVyIHdpdGggdGhlIGZvcm1lcgp0aHJlZSBwb3NzaWJpbGl0aWVzLgpPZiBjb3Vy c2UsIGl0IHdvdWxkIG1ha2Ugbm8gc2Vuc2UgdG8gdXNlIGFueSBvZiB0aGVzZSB0aHJlZSBoZXJl LCBzbyBpdAp3b3VsZCBqdXN0IGJlICUiU0laRV9TUEVDSUZJRVIiLgoKPiAKPiBJIHJlYWxseSBk b24ndCBsaWtlIGhhdmluZyB0byBjaGFuZ2UgaXQgdG8gdGhpcyBhcyBpdDoKPiAtIFVnbGlmaWVz IHRoZSBjb2RlIChhbmQgaSBkb3VidCBpZiBpdCdzIGV2ZW4gbmVlZGVkKQoKSSBhZ3JlZSB0byBi b3RoIHBvaW50cy4gV2hpY2ggaXMgd2h5IEkgYW0gbm90IGZvcmNpbmcgeW91IHRvIGRvIHRoaXMu IEl0CnNlZW1zIHRoYXQgdGhlcmUgaXMgYWxyZWFkeSBhdCBsZWFzdCBvbmUgY29tbW9ubHkgY29t cGlsZWQgaW5zdGFuY2UKd2hlcmUgaXQgaXMgbm90IHVzZWQgYXQgYWxsIChsaWJhdmZvcm1hdC9h cmdvX2N2Zy5jKS4KCj4gLSBEaXJlY3RseSBjb250cmFkaWN0cyBlYXJsaWVyIGZlZWRiYWNrCgpJ IGRvbid0IGFncmVlIHdpdGggdGhhdCBnaXZlbiB0aGF0IFNJWkVfU1BFQ0lGSUVSIGlzIGJhc2lj YWxseSBqdXN0IGEKd3JhcHBlciBhcm91bmQgenUuCgo+IC0gQW5kIGR1ZSB0byB0aGUgYWJvdmUg Z2l2ZXMgbWUgYSBmZWVsaW5nIG9mIHdhc3RpbmcgdGltZQo+IC0gRmluZSB0byBjaGFuZ2UgaXQg YnV0IEkgaG9wZSB0aGVyZSBpc24ndCBhbm90aGVyIHBlcnNvbiBwb3BwaW5nIHVwIHdpdGggYQo+ IHF1ZXN0aW9uIHRvIGNoYW5nZSBpdCB5ZXQgYWdhaW4uLi4uCj4gCj4gCj4+Pgo+Pj4KPj4+Pj4g KyAgICAgICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKPj4+Pj4gKyAgICAgICAgICAgIGdv dG8gZXJyOwo+Pj4+PiArICAgICAgICB9Cj4+Pj4+ICsgICAgfSBlbHNlIHsKPj4+Pj4gKyAgICAg ICAgLy8gUG9wdWxhdGUgdGhlIElQRlMgZ2F0ZXdheSBpZiB3ZSBoYXZlIGFueS4KPj4+Pj4gKyAg ICAgICAgLy8gSWYgbm90LCBpbmZvcm0gdGhlIHVzZXIgaG93IHRvIHByb3Blcmx5IHNldCBvbmUu Cj4+Pj4+ICsgICAgICAgIHJldCA9IHBvcHVsYXRlX2lwZnNfZ2F0ZXdheShoKTsKPj4+Pj4gKwo+ Pj4+PiArICAgICAgICBpZiAocmV0IDwgMSkgewo+Pj4+PiArICAgICAgICAgICAgLy8gV2UgZmFs bGJhY2sgb24gZHdlYi5saW5rIChtYW5hZ2VkIGJ5IFByb3RvY29sIExhYnMpLgo+Pj4+PiArICAg ICAgICAgICAgc25wcmludGYoYy0+Z2F0ZXdheV9idWZmZXIsIHNpemVvZihjLT5nYXRld2F5X2J1 ZmZlciksICIKPj4+PiBodHRwczovL2R3ZWIubGluayIpOwo+Pj4+PiArCj4+Pj4+ICsgICAgICAg ICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJJUEZTIGRvZXMgbm90IGFwcGVhciB0byBi ZQo+Pj4+IHJ1bm5pbmcuIFlvdeKAmXJlIG5vdyB1c2luZyB0aGUgcHVibGljIGdhdGV3YXkgYXQg ZHdlYi5saW5rLlxuIik7Cj4+Pj4+ICsgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0lORk8s ICJJbnN0YWxsaW5nIElQRlMgbG9jYWxseSBpcwo+Pj4+IHJlY29tbWVuZGVkIHRvIGltcHJvdmUg cGVyZm9ybWFuY2UgYW5kIHJlbGlhYmlsaXR5LCBhbmQgbm90IHNoYXJlIGFsbAo+PiB5b3VyCj4+ Pj4gYWN0aXZpdHkgd2l0aCBhIHNpbmdsZSBJUEZTIGdhdGV3YXkuXG4iKTsKPj4+Pj4gKyAgICAg ICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfSU5GTywgIlRoZXJlIGFyZSBtdWx0aXBsZSBvcHRpb25z IHRvCj4+Pj4gZGVmaW5lIHRoaXMgZ2F0ZXdheS5cbiIpOwo+Pj4+PiArICAgICAgICAgICAgYXZf bG9nKGgsIEFWX0xPR19JTkZPLCAiMS4gQ2FsbCBmZm1wZWcgd2l0aCBhIGdhdGV3YXkKPj4+PiBw YXJhbSwgd2l0aG91dCBhIHRyYWlsaW5nIHNsYXNoOiAtZ2F0ZXdheSA8dXJsPi5cbiIpOwo+Pj4+ PiArICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19JTkZPLCAiMi4gRGVmaW5lIGFuICRJUEZT X0dBVEVXQVkKPj4+PiBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aXRoIHRoZSBmdWxsIEhUVFAgVVJM IHRvIHRoZSBnYXRld2F5IHdpdGhvdXQKPj4gdHJhaWxpbmcKPj4+PiBmb3J3YXJkIHNsYXNoLlxu Iik7Cj4+Pj4+ICsgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0lORk8sICIzLiBEZWZpbmUg YW4gJElQRlNfUEFUSAo+PiBlbnZpcm9ubWVudAo+Pj4+IHZhcmlhYmxlIGFuZCBwb2ludCBpdCB0 byB0aGUgSVBGUyBkYXRhIHBhdGggLSB0aGlzIGlzIHR5cGljYWxseQo+PiB+Ly5pcGZzXG4iKTsK Pj4+Pgo+Pj4+IEFsbCB0aG9zZSBBVl9MT0dfSU5GTyBjYW4gYmUgY29tYmluZWQgd2hpY2ggaGFz IHRoZSBhZHZhbnRhZ2UgdGhhdCB0aGUKPj4+PiBsb2dzIGNhbid0IGJlIHRlYXJlZCBhcGFydCAo d2hpY2ggdGhleSBjYW4gbm93IGlmIHNvbWV0aGluZyBlbHNlIGxvZ3MgYXQKPj4+PiB0aGUgc2Ft ZSB0aW1lKTsgZnVydGhlcm1vcmUsIHRoaXMgd291bGQgYWxzbyBkZWNyZWFzZSBjb2Rlc2l6ZS4K Pj4+Pgo+Pj4KPj4+IERvIHlvdSBoYXZlIGFuIGV4YW1wbGUgb2Ygd2hlcmUgdGhhdCdzIGhhcHBl bmluZz8KPj4+Cj4+Cj4+IEl0IGNhbiBoYXBwZW4gYW55IHRpbWUgeW91IGhhdmUgbXVsdGlwbGUg dGhyZWFkcyB1c2luZyBhdl9sb2cgYXQgdGhlCj4+IHNhbWUgdGltZS4gR2l2ZW4gdGhhdCB5b3Vy IHN0YXRlbWVudHMgYXJlIHN1cHBvc2VkIHRvIGJlIGZ1bGwgbGluZXMsIGl0Cj4+IGlzIG5vdCB0 aGF0IGJhZCBpZiBpdCBoYXBwZW5zIGhlcmUsIGJ1dCBpdCBpcyBuZXZlcnRoZWxlc3Mgc3Vib3B0 aW1hbC4KPj4KPiAKPiBJIG1lYW50IGEgbXVsdGktbGluZSBhdl9sb2cgZXhhbXBsZSA7KSBCdXQg eWVhaCwgSSBnZXQgaG93IHRocmVhZGluZyBjb3VsZAo+IHNjcmV3IHRoaXMgdXAuCj4gCgpJIG1l YW50IHNvbWV0aGluZyBsaWtlOgphdl9sb2coaCwgQVZfTE9HX0lORk8sICJJbnN0YWxsaW5nIElQ RlMgbG9jYWxseSBpcyByZWNvbW1lbmRlZCB0bwppbXByb3ZlIHBlcmZvcm1hbmNlIGFuZCByZWxp YWJpbGl0eSwgYW5kIG5vdCBzaGFyZSBhbGwgeW91ciBhY3Rpdml0eQp3aXRoIGEgc2luZ2xlIElQ RlMgZ2F0ZXdheS5cbiIKICAgICAgICJUaGVyZSBhcmUgbXVsdGlwbGUgb3B0aW9ucyB0byBkZWZp bmUgdGhpcyBnYXRld2F5LlxuIgogICAgICAgIjEuIENhbGwgZmZtcGVnIHdpdGggYSBnYXRld2F5 IHBhcmFtLCB3aXRob3V0IGEgdHJhaWxpbmcgc2xhc2g6Ci1nYXRld2F5IDx1cmw+LlxuIgogICAg ICAgIjIuIERlZmluZSBhbiAkSVBGU19HQVRFV0FZIGVudmlyb25tZW50IHZhcmlhYmxlIHdpdGgg dGhlIGZ1bGwKSFRUUCBVUkwgdG8gdGhlIGdhdGV3YXkgd2l0aG91dCB0cmFpbGluZyBmb3J3YXJk IHNsYXNoLlxuIgogICAgICAgIjMuIERlZmluZSBhbiAkSVBGU19QQVRIIGVudmlyb25tZW50IHZh cmlhYmxlIGFuZCBwb2ludCBpdCB0byB0aGUKSVBGUyBkYXRhIHBhdGggLSB0aGlzIGlzIHR5cGlj YWxseSB+Ly5pcGZzXG4iKTsKCihUaGVzZSBsaW5lcyBhcmUgYWN0dWFsbHkgd2F5IHRvbyBsb25n LikKCi0gQW5kcmVhcwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0 dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJz Y3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZm bXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==