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 80B0440932 for ; Sun, 3 Apr 2022 17:55:30 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7BF8F68B285; Sun, 3 Apr 2022 20:55:27 +0300 (EEST) Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 65E1E68B265 for ; Sun, 3 Apr 2022 20:55:19 +0300 (EEST) Received: by mail-wr1-f41.google.com with SMTP id w21so11279831wra.2 for ; Sun, 03 Apr 2022 10:55:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=LMkBXgAZKZI3y4GkBbyGoNE8j7cqN0b9HC76I2qYuvE=; b=iUthyrxH7/xc7yG7i82Rr8f6/ptlAfE6hL3V7QEaQD9uofPoZgjd5GElvgpm71ht22 uKK55QgSXFp3W59aaeKD5bebRsEWtYQU4i2LwDeVRfanMiQi0xbqAxVLpvFON+KQav49 e0yDuc01AsH3XBqS/fGwqJxqzLjW2mMRuf29YgkSdsL7/f8VJ+vwxKHOiIpynBvtJMgA qpRAEXfj/O0ExvJfWqzE5L/tUxGFnurD+4W43ecwwAh5MqVuEoGsbF16PfZddVOxUEnq 6zADJtxZMni94JOZB5335z74ey9I45js1MeTZMGE5Dznt7OU8DVEUiaCv8ASX+LRejjn FIqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=LMkBXgAZKZI3y4GkBbyGoNE8j7cqN0b9HC76I2qYuvE=; b=U7jZSxppoKn2TNr3vfniInDEaFD9DF24Hp8T7SaWbAI4kz1ataoqsPlvdpsGk71Oer AoZCvzPOaHnrKbZjYoX1UVUAEXwhGoxsZH7NJhomJfrHwT4o061eu4nFym3JeiUGyIWb Xl/xt6KAGShwRPuMHw4Z6A+8NrM/Cv/0DMZzYxtNvr0LBfG8JgG/cZPBjer8BCUbAaDH zu1v+LKtMH5wgBwIb2du/jbwEeShiHQY6V7LjaBVHvbMGlDZ7S//uBiLdChGqbjAazG9 dYtme9qQYWpbULe+cUpYnOGMDr6gmlW9dhi6BfonaC3UNDt6ywz4g4Vpo6c5wp/QS5ye uKzQ== X-Gm-Message-State: AOAM530BfjMBtY1yXdqyWCXAARbA5Cpun9Twfl5Dse30Q181xzT7pcl6 gH4CQxnEBt22CGeRSgCwU0oz7Hty0nUWaZO9mbNsdbi/ X-Google-Smtp-Source: ABdhPJybozy3L6AVmkmsfKd7gvW5Yy0C/285X7BayFueL+cDtOE5dPzKwfzmYj2HkbKQii1XZPYC2AZv+XGeyp1c340= X-Received: by 2002:adf:c512:0:b0:206:bbf:a82c with SMTP id q18-20020adfc512000000b002060bbfa82cmr3809222wrf.42.1649008517959; Sun, 03 Apr 2022 10:55:17 -0700 (PDT) MIME-Version: 1.0 References: <20220401000852.156566-1-markg85@gmail.com> <20220401000852.156566-2-markg85@gmail.com> <20220401153906.GQ2829255@pb2> In-Reply-To: <20220401153906.GQ2829255@pb2> From: Mark Gaiser Date: Sun, 3 Apr 2022 19:54:06 +0200 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH v11 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 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: T24gRnJpLCBBcHIgMSwgMjAyMiBhdCA1OjM5IFBNIE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hh ZWxAbmllZGVybWF5ZXIuY2M+Cndyb3RlOgoKPiBPbiBGcmksIEFwciAwMSwgMjAyMiBhdCAwMjoy MzoyM0FNICswMjAwLCBNYXJrIEdhaXNlciB3cm90ZToKPiA+IE9uIEZyaSwgQXByIDEsIDIwMjIg YXQgMjowOSBBTSBNYXJrIEdhaXNlciA8bWFya2c4NUBnbWFpbC5jb20+IHdyb3RlOgo+ID4KPiA+ ID4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yOgo+ID4gPiAtIGZmcGxheSBpcGZzOi8vPGNp ZD4KPiA+ID4gLSBmZnBsYXkgaXBuczovLzxjaWQ+Cj4gPiA+Cj4gPiA+IElQRlMgZGF0YSBjYW4g YmUgcGxheWVkIGZyb20gc28gY2FsbGVkICJpcGZzIGdhdGV3YXlzIi4KPiA+ID4gQSBnYXRld2F5 IGlzIGVzc2VudGlhbGx5IGEgd2Vic2VydmVyIHRoYXQgZ2l2ZXMgYWNjZXNzIHRvIHRoZQo+ID4g PiBkaXN0cmlidXRlZCBJUEZTIG5ldHdvcmsuCj4gPiA+Cj4gPiA+IFRoaXMgcHJvdG9jb2wgc3Vw cG9ydCAoaXBmcyBhbmQgaXBucykgdGhlcmVmb3JlIHRyYW5zbGF0ZXMKPiA+ID4gaXBmczovLyBh bmQgaXBuczovLyB0byBhIGh0dHA6Ly8gdXJsLiBUaGlzIHJlc3VsdGluZyB1cmwgaXMKPiA+ID4g dGhlbiBoYW5kbGVkIGJ5IHRoZSBodHRwIHByb3RvY29sLiBJdCBjb3VsZCBhbHNvIGJlIGh0dHBz Cj4gPiA+IGRlcGVuZGluZyBvbiB0aGUgZ2F0ZXdheSBwcm92aWRlZC4KPiA+ID4KPiA+ID4gVG8g dXNlIHRoaXMgcHJvdG9jb2wsIGEgZ2F0ZXdheSBtdXN0IGJlIHByb3ZpZGVkLgo+ID4gPiBJZiB5 b3UgZG8gbm90aGluZyBpdCB3aWxsIHRyeSB0byBmaW5kIGl0IGluIHlvdXIKPiA+ID4gJEhPTUUv LmlwZnMvZ2F0ZXdheSBmaWxlLiBUaGUgd2F5cyB0byBzZXQgaXQgbWFudWFsbHkgYXJlOgo+ID4g PiAxLiBEZWZpbmUgYSAtZ2F0ZXdheSA8dXJsPiB0byB0aGUgZ2F0ZXdheS4KPiA+ID4gMi4gRGVm aW5lICRJUEZTX0dBVEVXQVkgd2l0aCB0aGUgZnVsbCBodHRwIGxpbmsgdG8gdGhlIGdhdGV3YXku Cj4gPiA+IDMuIERlZmluZSAkSVBGU19QQVRIIGFuZCBwb2ludCBpdCB0byB0aGUgSVBGUyBkYXRh IHBhdGguCj4gPiA+IDQuIEhhdmUgSVBGUyBydW5uaW5nIGluIHlvdXIgbG9jYWwgdXNlciBmb2xk ZXIgKHVuZGVyICRIT01FLy5pcGZzKS4KPiA+ID4KPiA+ID4gU2lnbmVkLW9mZi1ieTogTWFyayBH YWlzZXIgPG1hcmtnODVAZ21haWwuY29tPgo+ID4gPiAtLS0KPiA+ID4gIGNvbmZpZ3VyZSAgICAg ICAgICAgICAgICAgfCAgIDIgKwo+ID4gPiAgZG9jL3Byb3RvY29scy50ZXhpICAgICAgICB8ICAz MCArKysrCj4gPiA+ICBsaWJhdmZvcm1hdC9NYWtlZmlsZSAgICAgIHwgICAyICsKPiA+ID4gIGxp YmF2Zm9ybWF0L2lwZnNnYXRld2F5LmMgfCAzMjggKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKPiA+ID4gIGxpYmF2Zm9ybWF0L3Byb3RvY29scy5jICAgfCAgIDIgKwo+ID4g PiAgNSBmaWxlcyBjaGFuZ2VkLCAzNjQgaW5zZXJ0aW9ucygrKQo+ID4gPiAgY3JlYXRlIG1vZGUg MTAwNjQ0IGxpYmF2Zm9ybWF0L2lwZnNnYXRld2F5LmMKPiA+ID4KPiA+ID4gZGlmZiAtLWdpdCBh L2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQo+ID4gPiBpbmRleCBlNGQzNmFhNjM5Li41NWFmOTA5NTdh IDEwMDc1NQo+ID4gPiAtLS0gYS9jb25maWd1cmUKPiA+ID4gKysrIGIvY29uZmlndXJlCj4gPiA+ IEBAIC0zNTc5LDYgKzM1NzksOCBAQCB1ZHBfcHJvdG9jb2xfc2VsZWN0PSJuZXR3b3JrIgo+ID4g PiAgdWRwbGl0ZV9wcm90b2NvbF9zZWxlY3Q9Im5ldHdvcmsiCj4gPiA+ICB1bml4X3Byb3RvY29s X2RlcHM9InN5c191bl9oIgo+ID4gPiAgdW5peF9wcm90b2NvbF9zZWxlY3Q9Im5ldHdvcmsiCj4g PiA+ICtpcGZzX3Byb3RvY29sX3NlbGVjdD0iaHR0cHNfcHJvdG9jb2wiCj4gPiA+ICtpcG5zX3By b3RvY29sX3NlbGVjdD0iaHR0cHNfcHJvdG9jb2wiCj4gPiA+Cj4gPiA+ICAjIGV4dGVybmFsIGxp YnJhcnkgcHJvdG9jb2xzCj4gPiA+ICBsaWJhbXFwX3Byb3RvY29sX2RlcHM9ImxpYnJhYmJpdG1x Igo+ID4gPiBkaWZmIC0tZ2l0IGEvZG9jL3Byb3RvY29scy50ZXhpIGIvZG9jL3Byb3RvY29scy50 ZXhpCj4gPiA+IGluZGV4IGQyMDdkZjBiNTIuLjdjOWMwYTQ4MDggMTAwNjQ0Cj4gPiA+IC0tLSBh L2RvYy9wcm90b2NvbHMudGV4aQo+ID4gPiArKysgYi9kb2MvcHJvdG9jb2xzLnRleGkKPiA+ID4g QEAgLTIwMjUsNSArMjAyNSwzNSBAQCBkZWNvZGluZyBlcnJvcnMuCj4gPiA+Cj4gPiA+ICBAZW5k IHRhYmxlCj4gPiA+Cj4gPiA+ICtAc2VjdGlvbiBpcGZzCj4gPiA+ICsKPiA+ID4gK0ludGVyUGxh bmV0YXJ5IEZpbGUgU3lzdGVtIChJUEZTKSBwcm90b2NvbCBzdXBwb3J0LiBPbmUgY2FuIGFjY2Vz cwo+IGZpbGVzCj4gPiA+IHN0b3JlZAo+ID4gPiArb24gdGhlIElQRlMgbmV0d29yayB0aHJvdWdo IHNvIGNhbGxlZCBnYXRld2F5cy4gVGhvc2UgYXJlIGh0dHAocykKPiA+ID4gZW5kcG9pbnRzLgo+ ID4gPiArVGhpcyBwcm90b2NvbCB3cmFwcyB0aGUgSVBGUyBuYXRpdmUgcHJvdG9jb2xzIChpcGZz Oi8vIGFuZCBpcG5zOi8vKQo+IHRvIGJlCj4gPiA+IHNlbmQKPiA+ID4gK3RvIHN1Y2ggYSBnYXRl d2F5LiBVc2VycyBjYW4gKGFuZCBzaG91bGQpIGhvc3QgdGhlaXIgb3duIG5vZGUgd2hpY2gKPiBt ZWFucwo+ID4gPiB0aGlzCj4gPiA+ICtwcm90b2NvbCB3aWxsIHVzZSB5b3VyIGxvY2FsIG1hY2hp bmUgZ2F0ZXdheSB0byBhY2Nlc3MgZmlsZXMgb24gdGhlCj4gSVBGUwo+ID4gPiBuZXR3b3JrLgo+ ID4gPiArCj4gPiA+ICtJZiBhIHVzZXIgZG9lc24ndCBoYXZlIGEgbm9kZSBvZiB0aGVpciBvd24g dGhlbiB0aGUgcHVibGljIGdhdGV3YXkKPiA+ID4gZHdlYi5saW5rIGlzCj4gPiA+ICt1c2VkIGJ5 IGRlZmF1bHQuCj4gPiA+ICsKPiA+ID4gK1lvdSBjYW4gdXNlIHRoaXMgcHJvdG9jb2wgaW4gMiB3 YXlzLiBVc2luZyBJUEZTOgo+ID4gPiArQGV4YW1wbGUKPiA+ID4gK2ZmcGxheSBpcGZzOi8vUW1i R3RKZzIzc2todkZtdTltSmllUFZCeWhmenU1cndvNzRNRWtWRFlBbUY1VAo+ID4gPiArQGVuZCBl eGFtcGxlCj4gPiA+ICsKPiA+ID4gK09yIHRoZSBJUE5TIHByb3RvY29sIChJUE5TIGlzIG11dGFi bGUgSVBGUyk6Cj4gPiA+ICtAZXhhbXBsZQo+ID4gPiArZmZwbGF5IGlwbnM6Ly9RbWJHdEpnMjNz a2h2Rm11OW1KaWVQVkJ5aGZ6dTVyd283NE1Fa1ZEWUFtRjVUCj4gPiA+ICtAZW5kIGV4YW1wbGUK PiA+ID4gKwo+ID4gPiArWW91IGNhbiBhbHNvIGNoYW5nZSB0aGUgZ2F0ZXdheSB0byBiZSB1c2Vk Ogo+ID4gPiArCj4gPiA+ICtAdGFibGUgQG9wdGlvbgo+ID4gPiArCj4gPiA+ICtAaXRlbSBnYXRl d2F5Cj4gPiA+ICtEZWZpbmVzIHRoZSBnYXRld2F5IHRvIHVzZS4gV2hlbiBub3RoaW5nIGlzIHBy b3ZpZGVkIHRoZSBwcm90b2NvbCB3aWxsCj4gPiA+IGZpcnN0IHRyeQo+ID4gPiAreW91ciBsb2Nh bCBnYXRld2F5LiBJZiB0aGF0IGZhaWxzIGR3ZWIubGluayB3aWxsIGJlIHVzZWQuCj4gPiA+ICsK PiA+ID4gK0BlbmQgdGFibGUKPiA+ID4KPiA+ID4gIEBjIG1hbiBlbmQgUFJPVE9DT0xTCj4gPiA+ IGRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9NYWtlZmlsZSBiL2xpYmF2Zm9ybWF0L01ha2VmaWxl Cj4gPiA+IGluZGV4IGQ3MTgyZDZiZDguLmUzMjMzZmQ3YWMgMTAwNjQ0Cj4gPiA+IC0tLSBhL2xp YmF2Zm9ybWF0L01ha2VmaWxlCj4gPiA+ICsrKyBiL2xpYmF2Zm9ybWF0L01ha2VmaWxlCj4gPiA+ IEBAIC02NjAsNiArNjYwLDggQEAgT0JKUy0kKENPTkZJR19TUlRQX1BST1RPQ09MKSAgICAgICAg ICAgICArPQo+ID4gPiBzcnRwcHJvdG8ubyBzcnRwLm8KPiA+ID4gIE9CSlMtJChDT05GSUdfU1VC RklMRV9QUk9UT0NPTCkgICAgICAgICAgKz0gc3ViZmlsZS5vCj4gPiA+ICBPQkpTLSQoQ09ORklH X1RFRV9QUk9UT0NPTCkgICAgICAgICAgICAgICs9IHRlZXByb3RvLm8gdGVlX2NvbW1vbi5vCj4g PiA+ICBPQkpTLSQoQ09ORklHX1RDUF9QUk9UT0NPTCkgICAgICAgICAgICAgICs9IHRjcC5vCj4g PiA+ICtPQkpTLSQoQ09ORklHX0lQRlNfUFJPVE9DT0wpICAgICAgICAgICAgICs9IGlwZnNnYXRl d2F5Lm8KPiA+ID4gK09CSlMtJChDT05GSUdfSVBOU19QUk9UT0NPTCkgICAgICAgICAgICAgKz0g aXBmc2dhdGV3YXkubwo+ID4gPiAgVExTLU9CSlMtJChDT05GSUdfR05VVExTKSAgICAgICAgICAg ICAgICArPSB0bHNfZ251dGxzLm8KPiA+ID4gIFRMUy1PQkpTLSQoQ09ORklHX0xJQlRMUykgICAg ICAgICAgICAgICAgKz0gdGxzX2xpYnRscy5vCj4gPiA+ICBUTFMtT0JKUy0kKENPTkZJR19NQkVE VExTKSAgICAgICAgICAgICAgICs9IHRsc19tYmVkdGxzLm8KPiA+ID4gZGlmZiAtLWdpdCBhL2xp YmF2Zm9ybWF0L2lwZnNnYXRld2F5LmMgYi9saWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5jCj4gPiA+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiA+IGluZGV4IDAwMDAwMDAwMDAuLjcyNWNjNWU0NzQK PiA+ID4gLS0tIC9kZXYvbnVsbAo+ID4gPiArKysgYi9saWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5j Cj4gPiA+IEBAIC0wLDAgKzEsMzI4IEBACj4gPiA+ICsvKgo+ID4gPiArICogSVBGUyBhbmQgSVBO UyBwcm90b2NvbCBzdXBwb3J0IHRocm91Z2ggSVBGUyBHYXRld2F5Lgo+ID4gPiArICogQ29weXJp Z2h0IChjKSAyMDIyIE1hcmsgR2Fpc2VyCj4gPiA+ICsgKgo+ID4gPiArICogVGhpcyBmaWxlIGlz IHBhcnQgb2YgRkZtcGVnLgo+ID4gPiArICoKPiA+ID4gKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiA+ID4gKyAqIG1vZGlmeSBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiA+ID4gKyAq IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlcgo+ID4gPiArICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4gPiA+ICsgKgo+ID4gPiArICogRkZtcGVnIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gPiA+ICsgKiBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgo+ID4gPiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKPiA+ID4gKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gPiA+ICsgKgo+ID4gPiArICogWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ID4g PiArICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZQo+ID4gPiArICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0 LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQQo+ID4gPiAwMjExMC0xMzAxIFVTQQo+ID4gPiArICov Cj4gPiA+ICsKPiA+ID4gKyNpbmNsdWRlICJsaWJhdnV0aWwvYXZzdHJpbmcuaCIKPiA+ID4gKyNp bmNsdWRlICJsaWJhdnV0aWwvb3B0LmgiCj4gPiA+ICsjaW5jbHVkZSAidXJsLmgiCj4gPiA+ICsj aW5jbHVkZSA8c3lzL3N0YXQuaD4KPiA+ID4gKwo+ID4gPiArdHlwZWRlZiBzdHJ1Y3QgSVBGU0dh dGV3YXlDb250ZXh0IHsKPiA+ID4gKyAgICBBVkNsYXNzICpjbGFzczsKPiA+ID4gKyAgICBVUkxD b250ZXh0ICppbm5lcjsKPiA+ID4gKyAgICAvLyBJcyBmaWxsZWQgYnkgdGhlIC1nYXRld2F5IGFy Z3VtZW50IGFuZCBub3QgY2hhbmdlZCBhZnRlci4KPiA+ID4gKyAgICBjaGFyICpnYXRld2F5Owo+ ID4gPiArICAgIC8vIElmIHRoZSBhYm92ZSBnYXRld2F5IGlzIG5vbiBudWxsLCBpdCB3aWxsIGJl IGNvcGllZCBpbnRvIHRoaXMKPiA+ID4gYnVmZmVyLgo+ID4gPiArICAgIC8vIEVsc2UgdGhpcyBi dWZmZXIgd2lsbCBjb250YWluIHRoZSBhdXRvIGRldGVjdGVkIGdhdGV3YXkuCj4gPiA+ICsgICAg Ly8gSW4gZWl0aGVyIGNhc2UsIHRoZSBnYXRld2F5IHRvIHVzZSB3aWxsIGJlIGluIHRoaXMgYnVm ZmVyLgo+ID4gPiArICAgIGNoYXIgZ2F0ZXdheV9idWZmZXJbUEFUSF9NQVhdOwo+ID4gPiArfSBJ UEZTR2F0ZXdheUNvbnRleHQ7Cj4gPiA+ICsKPiA+ID4gKy8vIEEgYmVzdC1lZmZvcnQgd2F5IHRv IGZpbmQgdGhlIElQRlMgZ2F0ZXdheS4KPiA+ID4gKy8vIE9ubHkgdGhlIG1vc3QgYXBwcm9waWF0 ZSBnYXRld2F5IGlzIHNldC4gSXQncyBub3QgYWN0dWFsbHkKPiByZXF1ZXN0ZWQKPiA+ID4gKy8v IChodHRwIGNhbGwpIHRvIHByZXZlbnQgYSBwb3RlbnRpYWwgc2xvd2Rvd24gaW4gc3RhcnR1cC4g QSBwb3RlbnRpYWwKPiA+ID4gdGltZW91dAo+ID4gPiArLy8gaXMgaGFuZGxlZCBieSB0aGUgSFRU UCBwcm90b2NvbC4KPiA+ID4gK3N0YXRpYyBpbnQgcG9wdWxhdGVfaXBmc19nYXRld2F5KFVSTENv bnRleHQgKmgpCj4gPiA+ICt7Cj4gPiA+ICsgICAgSVBGU0dhdGV3YXlDb250ZXh0ICpjID0gaC0+ cHJpdl9kYXRhOwo+ID4gPiArICAgIGNoYXIgaXBmc19mdWxsX2RhdGFfZm9sZGVyW1BBVEhfTUFY XTsKPiA+ID4gKyAgICBjaGFyIGlwZnNfZ2F0ZXdheV9maWxlW1BBVEhfTUFYXTsKPiA+ID4gKyAg ICBzdHJ1Y3Qgc3RhdCBzdDsKPiA+ID4gKyAgICBpbnQgc3RhdF9yZXQgPSAwOwo+ID4gPiArICAg IGludCByZXQgPSBBVkVSUk9SKEVJTlZBTCk7Cj4gPiA+ICsgICAgRklMRSAqZ2F0ZXdheV9maWxl ID0gTlVMTDsKPiA+ID4gKwo+ID4gPiArICAgIC8vIFRlc3QgJElQRlNfR0FURVdBWS4KPiA+ID4g KyAgICBpZiAoZ2V0ZW52KCJJUEZTX0dBVEVXQVkiKSAhPSBOVUxMKSB7Cj4gPiA+ICsgICAgICAg IGlmIChzbnByaW50ZihjLT5nYXRld2F5X2J1ZmZlciwgc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVy KSwKPiAiJXMiLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgZ2V0ZW52KCJJUEZTX0dBVEVX QVkiKSkgPj0KPiA+ID4gc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSkgewo+ID4gPiArICAgICAg ICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiVGhlIElQRlNfR0FURVdBWSBlbnZpcm9u bWVudAo+ID4gPiB2YXJpYWJsZSAiCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJleGNlZWRzIHRoZSBtYXhpbXVtIGxlbmd0aC4gIgo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2UgYWxsb3cgYSBtYXggb2YgJXp1Cj4gPiA+ IGNoYXJhY3RlcnNcbiIsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGMtPmdhdGV3 YXlfYnVmZmVyKSk7Cj4gPiA+ICsgICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7Cj4g PiA+ICsgICAgICAgICAgICBnb3RvIGVycjsKPiA+ID4gKyAgICAgICAgfQo+ID4gPiArCj4gPiA+ ICsgICAgICAgIHJldCA9IDE7Cj4gPiA+ICsgICAgICAgIGdvdG8gZXJyOwo+ID4gPiArICAgIH0g ZWxzZQo+ID4gPiArICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0RFQlVHLCAiJElQRlNfR0FURVdB WSBpcyBlbXB0eS5cbiIpOwo+ID4gPiArCj4gPiA+ICsgICAgLy8gV2UgbmVlZCB0byBrbm93IHRo ZSBJUEZTIGZvbGRlciB0byAtIGV2ZW50dWFsbHkgLSByZWFkIHRoZQo+ID4gPiBjb250ZW50cyBv Zgo+ID4gPiArICAgIC8vIHRoZSAiZ2F0ZXdheSIgZmlsZSB3aGljaCB3b3VsZCB0ZWxsIHVzIHRo ZSBnYXRld2F5IHRvIHVzZS4KPiA+ID4gKyAgICBpZiAoZ2V0ZW52KCJJUEZTX1BBVEgiKSA9PSBO VUxMKSB7Cj4gPiA+ICsgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfREVCVUcsICIkSVBGU19QQVRI IGlzIGVtcHR5LlxuIik7Cj4gPiA+ICsKPiA+ID4gKyAgICAgICAgLy8gVHJ5IHZpYSB0aGUgaG9t ZSBmb2xkZXIuCj4gPiA+ICsgICAgICAgIGlmIChnZXRlbnYoIkhPTUUiKSA9PSBOVUxMKSB7Cj4g PiA+ICsgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICIkSE9NRSBhcHBlYXJz IHRvIGJlIGVtcHR5LlxuIik7Cj4gPiA+ICsgICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVJTlZB TCk7Cj4gPiA+ICsgICAgICAgICAgICBnb3RvIGVycjsKPiA+ID4gKyAgICAgICAgfQo+ID4gPiAr Cj4gPiA+ICsgICAgICAgIC8vIFZlcmlmeSB0aGUgY29tcG9zZWQgcGF0aCBmaXRzLgo+ID4gPiAr ICAgICAgICBpZiAoc25wcmludGYoaXBmc19mdWxsX2RhdGFfZm9sZGVyLAo+IHNpemVvZihpcGZz X2Z1bGxfZGF0YV9mb2xkZXIpLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgIiVzLy5pcGZz LyIsIGdldGVudigiSE9NRSIpKSA+PQo+ID4gPiBzaXplb2YoaXBmc19mdWxsX2RhdGFfZm9sZGVy KSkgewo+ID4gPiArICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiVGhlIElQ RlMgZGF0YSBwYXRoIGV4Y2VlZHMgdGhlCj4gIgo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAibWF4IHBhdGggbGVuZ3RoICglenUpXG4iLAo+ID4gPiArICAgICAg ICAgICAgICAgICAgIHNpemVvZihpcGZzX2Z1bGxfZGF0YV9mb2xkZXIpKTsKPiA+ID4gKyAgICAg ICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKPiA+ID4gKyAgICAgICAgICAgIGdvdG8gZXJy Owo+ID4gPiArICAgICAgICB9Cj4gPiA+ICsKPiA+ID4gKyAgICAgICAgLy8gU3RhdCB0aGUgZm9s ZGVyLgo+ID4gPiArICAgICAgICAvLyBJdCBzaG91bGQgZXhpc3QgaW4gYSBkZWZhdWx0IElQRlMg c2V0dXAgd2hlbiBydW4gYXMgbG9jYWwKPiB1c2VyLgo+ID4gPiArI2lmbmRlZiBfV0lOMzIKPiA+ ID4gKyAgICAgICAgc3RhdF9yZXQgPSBzdGF0KGlwZnNfZnVsbF9kYXRhX2ZvbGRlciwgJnN0KTsK PiA+ID4gKyNlbHNlCj4gPiA+ICsgICAgICAgIHN0YXRfcmV0ID0gd2luMzJfc3RhdChpcGZzX2Z1 bGxfZGF0YV9mb2xkZXIsICZzdCk7Cj4gPiA+ICsjZW5kaWYKPiA+ID4gKyAgICAgICAgaWYgKHN0 YXRfcmV0IDwgMCkgewo+ID4gPiArICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19JTkZPLCAi VW5hYmxlIHRvIGZpbmQgSVBGUyBmb2xkZXIuIFdlCj4gPiA+IHRyaWVkOlxuIik7Cj4gPiA+ICsg ICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0lORk8sICItICRJUEZTX1BBVEgsIHdoaWNoIHdh cwo+IGVtcHR5LlxuIik7Cj4gPiA+ICsgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0lORk8s ICItICRIT01FLy5pcGZzIChmdWxsIHVyaTogJXMpIHdoaWNoCj4gPiA+IGRvZXNuJ3QgZXhpc3Qu XG4iLCBpcGZzX2Z1bGxfZGF0YV9mb2xkZXIpOwo+ID4gPiArICAgICAgICAgICAgcmV0ID0gQVZF UlJPUihFTk9FTlQpOwo+ID4gPiArICAgICAgICAgICAgZ290byBlcnI7Cj4gPiA+ICsgICAgICAg IH0KPiA+ID4gKyAgICB9IGVsc2Ugewo+ID4gPiArICAgICAgICBpZiAoc25wcmludGYoaXBmc19m dWxsX2RhdGFfZm9sZGVyLAo+ID4gPiBzaXplb2YoaXBmc19mdWxsX2RhdGFfZm9sZGVyKSwgIiVz IiwKPiA+ID4gKyAgICAgICAgICAgICAgICAgZ2V0ZW52KCJJUEZTX1BBVEgiKSkgPj0KPiBzaXpl b2YoaXBmc19mdWxsX2RhdGFfZm9sZGVyKSkgewo+ID4gPiArICAgICAgICAgICAgYXZfbG9nKGgs IEFWX0xPR19XQVJOSU5HLCAiVGhlIElQRlNfUEFUSCBlbnZpcm9ubWVudAo+IHZhcmlhYmxlCj4g PiA+ICIKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2Vl ZHMgdGhlIG1heGltdW0gbGVuZ3RoLiAiCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJXZSBhbGxvdyBhIG1heCBvZiAlenUKPiA+ID4gY2hhcmFjdGVyc1xuIiwK PiA+ID4gKyAgICAgICAgICAgICAgICAgICBzaXplb2YoYy0+Z2F0ZXdheV9idWZmZXIpKTsKPiA+ ID4gKyAgICAgICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKPiA+ID4gKyAgICAgICAgICAg IGdvdG8gZXJyOwo+ID4gPiArICAgICAgICB9Cj4gPiA+ICsKPiA+ID4gKyAgICB9Cj4gPiA+ICsK PiA+ID4gKyAgICAvLyBDb3B5IHRoZSBmdWxseSBjb21wb3NlZCBnYXRld2F5IHBhdGggaW50byBp cGZzX2dhdGV3YXlfZmlsZS4KPiA+ID4gKyAgICBpZiAoc25wcmludGYoaXBmc19nYXRld2F5X2Zp bGUsIHNpemVvZihpcGZzX2dhdGV3YXlfZmlsZSksCj4gPiA+ICIlc2dhdGV3YXkiLAo+ID4gPiAr ICAgICAgICAgICAgICAgICBpcGZzX2Z1bGxfZGF0YV9mb2xkZXIpID49IHNpemVvZihpcGZzX2dh dGV3YXlfZmlsZSkpCj4gewo+ID4gPiArICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcs ICJUaGUgSVBGUyBnYXRld2F5IGZpbGUgcGF0aCBleGNlZWRzCj4gIgo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgbWF4IHBhdGggbGVuZ3RoICglenUpXG4iLAo+ ID4gPiArICAgICAgICAgICAgICAgc2l6ZW9mKGlwZnNfZ2F0ZXdheV9maWxlKSk7Cj4gPiA+ICsg ICAgICAgIHJldCA9IEFWRVJST1IoRU5PRU5UKTsKPiA+ID4gKyAgICAgICAgZ290byBlcnI7Cj4g PiA+ICsgICAgfQo+ID4gPiArCj4gPiA+ICsgICAgLy8gR2V0IHRoZSBjb250ZW50cyBvZiB0aGUg Z2F0ZXdheSBmaWxlLgo+ID4gPiArICAgIGdhdGV3YXlfZmlsZSA9IGF2X2ZvcGVuX3V0ZjgoaXBm c19nYXRld2F5X2ZpbGUsICJyIik7Cj4gPiA+ICsgICAgaWYgKCFnYXRld2F5X2ZpbGUpIHsKPiA+ ID4gKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiVGhlIElQRlMgZ2F0ZXdheSBm aWxlIChmdWxsIHVyaToKPiAlcykKPiA+ID4gZG9lc24ndCBleGlzdC4gIgo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJcyB0aGUgZ2F0ZXdheSBlbmFibGVkP1xuIiwK PiA+ID4gKyAgICAgICAgICAgICAgIGlwZnNfZ2F0ZXdheV9maWxlKTsKPiA+ID4gKyAgICAgICAg cmV0ID0gQVZFUlJPUihFTk9FTlQpOwo+ID4gPiArICAgICAgICBnb3RvIGVycjsKPiA+ID4gKyAg ICB9Cj4gPiA+ICsKPiA+ID4gKyAgICAvLyBSZWFkIGEgc2luZ2xlIGxpbmUgKGZnZXRzIHN0b3Bz IGF0IG5ldyBsaW5lIG1hcmspLgo+ID4gPiArICAgIGlmICghZmdldHMoYy0+Z2F0ZXdheV9idWZm ZXIsIHNpemVvZihjLT5nYXRld2F5X2J1ZmZlcikgLSAxLAo+ID4gPiBnYXRld2F5X2ZpbGUpKSB7 Cj4gPiA+ICsgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJVbmFibGUgdG8gcmVhZCBm cm9tIGZpbGUgKGZ1bGwgdXJpOgo+ID4gPiAlcykuXG4iLAo+ID4gPiArICAgICAgICAgICAgIGlw ZnNfZ2F0ZXdheV9maWxlKTsKPiA+ID4gKyAgICAgIHJldCA9IEFWRVJST1IoRU5PRU5UKTsKPiA+ ID4gKyAgICAgIGdvdG8gZXJyOwo+ID4gPiArICAgIH0KPiA+ID4gKwo+ID4gPiArICAgIC8vIFJl cGxhY2UgZmlyc3Qgb2NjdXJlbmNlIG9mIGVuZCBvZiBsaW5lIHdpdGggXDAKPiA+ID4gKyAgICBj LT5nYXRld2F5X2J1ZmZlcltzdHJjc3BuKGMtPmdhdGV3YXlfYnVmZmVyLCAiXHJcbiIpXSA9IDA7 Cj4gPiA+ICsKPiA+ID4gKyAgICAvLyBJZiBzdHJsZW4gZmluZHMgYW55dGhpbmcgbG9uZ2VyIHRo ZW4gMCBjaGFyYWN0ZXJzIHRoZW4gd2UgaGF2ZQo+IGEKPiA+ID4gKyAgICAvLyBwb3RlbnRpYWwg Z2F0ZXdheSB1cmwuCj4gPiA+ICsgICAgaWYgKCpjLT5nYXRld2F5X2J1ZmZlciA9PSAnXDAnKSB7 Cj4gPiA+ICsgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSBJUEZTIGdhdGV3 YXkgZmlsZSAoZnVsbCB1cmk6Cj4gJXMpCj4gPiA+IGFwcGVhcnMgdG8gYmUgZW1wdHkuICIKPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSXMgdGhlIGdhdGV3YXkgc3Rh cnRlZD9cbiIsCj4gPiA+ICsgICAgICAgICAgICAgICBpcGZzX2dhdGV3YXlfZmlsZSk7Cj4gPiA+ ICsgICAgICAgIHJldCA9IEFWRVJST1IoRUlMU0VRKTsKPiA+ID4gKyAgICAgICAgZ290byBlcnI7 Cj4gPiA+ICsgICAgfSBlbHNlIHsKPiA+ID4gKyAgICAgICAgLy8gV2UncmUgZG9uZSwgdGhlIGMt PmdhdGV3YXlfYnVmZmVyIGhhcyBzb21ldGhpbmcgdGhhdCBsb29rcwo+ID4gPiB2YWxpZC4KPiA+ ID4gKyAgICAgICAgcmV0ID0gMTsKPiA+ID4gKyAgICAgICAgZ290byBlcnI7Cj4gPiA+ICsgICAg fQo+ID4gPiArCj4gPiA+ICtlcnI6Cj4gPiA+ICsgICAgaWYgKGdhdGV3YXlfZmlsZSkKPiA+ID4g KyAgICAgICAgZmNsb3NlKGdhdGV3YXlfZmlsZSk7Cj4gPiA+ICsKPiA+ID4gKyAgICByZXR1cm4g cmV0Owo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgaW50IHRyYW5zbGF0ZV9pcGZzX3Rv X2h0dHAoVVJMQ29udGV4dCAqaCwgY29uc3QgY2hhciAqdXJpLAo+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncywgQVZEaWN0aW9uYXJ5ICoqb3B0aW9ucykK PiA+ID4gK3sKPiA+ID4gKyAgICBjb25zdCBjaGFyICppcGZzX2NpZDsKPiA+ID4gKyAgICBjaGFy ICpmdWxsdXJpID0gTlVMTDsKPiA+ID4gKyAgICBpbnQgcmV0Owo+ID4gPiArICAgIElQRlNHYXRl d2F5Q29udGV4dCAqYyA9IGgtPnByaXZfZGF0YTsKPiA+ID4gKwo+ID4gPiArICAgIC8vIFRlc3Qg Zm9yIGlwZnM6Ly8sIGlwZnM6LCBpcG5zOi8vIGFuZCBpcG5zOi4gVGhpcyBwcmVmaXggaXMKPiA+ ID4gc3RyaXBwZWQgZnJvbQo+ID4gPiArICAgIC8vIHRoZSBzdHJpbmcgbGVhdmluZyBqdXN0IHRo ZSBDSUQgaW4gaXBmc19jaWQuCj4gPiA+ICsgICAgaW50IGlzX2lwZnMgPSBhdl9zdHJpc3RhcnQo dXJpLCAiaXBmczovLyIsICZpcGZzX2NpZCk7Cj4gPiA+ICsgICAgaW50IGlzX2lwbnMgPSBhdl9z dHJpc3RhcnQodXJpLCAiaXBuczovLyIsICZpcGZzX2NpZCk7Cj4gPiA+ICsKPiA+ID4gKyAgICAv LyBXZSBtdXN0IGhhdmUgZWl0aGVyIGlwbnMgb3IgaXBmcy4KPiA+ID4gKyAgICBpZiAoIWlzX2lw ZnMgJiYgIWlzX2lwbnMpIHsKPiA+ID4gKyAgICAgICAgcmV0ID0gQVZFUlJPUihFSU5WQUwpOwo+ ID4gPiArICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJVbnN1cHBvcnRlZCB1cmwg JXNcbiIsIHVyaSk7Cj4gPiA+ICsgICAgICAgIGdvdG8gZXJyOwo+ID4gPiArICAgIH0KPiA+ID4g Kwo+ID4gPiArICAgIC8vIElmIHRoZSBDSUQgaGFzIGEgbGVuZ3RoIGdyZWF0ZXIgdGhlbiAwIHRo ZW4gd2UgYXNzdW1lIHdlIGhhdmUgYQo+ID4gPiBwcm9wZXIgd29ya2luZyBvbmUuCj4gPiA+ICsg ICAgLy8gSXQgY291bGQgc3RpbGwgYmUgd3JvbmcgYnV0IGluIHRoYXQgY2FzZSB0aGUgZ2F0ZXdh eSBzaG91bGQKPiBzYXZlCj4gPiA+IHVzIGFuZAo+ID4gPiArICAgIC8vIHJ1dHVybiBhIDQwMyBl cnJvci4gVGhlIGh0dHAgcHJvdG9jb2wgaGFuZGxlcyB0aGlzLgo+ID4gPiArICAgIGlmIChzdHJs ZW4oaXBmc19jaWQpIDwgMSkgewo+ID4gPiArICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5J TkcsICJBIENJRCBtdXN0IGJlIHByb3ZpZGVkLlxuIik7Cj4gPiA+ICsgICAgICAgIHJldCA9IEFW RVJST1IoRUlMU0VRKTsKPiA+ID4gKyAgICAgICAgZ290byBlcnI7Cj4gPiA+ICsgICAgfQo+ID4g PiArCj4gPiA+ICsgICAgLy8gUG9wdWxhdGUgYy0+Z2F0ZXdheV9idWZmZXIgd2l0aCB3aGF0ZXZl ciBpcyBpbiBjLT5nYXRld2F5Cj4gPiA+ICsgICAgaWYgKGMtPmdhdGV3YXkgIT0gTlVMTCkgewo+ ID4gPiArICAgICAgICBpZiAoc25wcmludGYoYy0+Z2F0ZXdheV9idWZmZXIsIHNpemVvZihjLT5n YXRld2F5X2J1ZmZlciksCj4gIiVzIiwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIGMtPmdh dGV3YXkpID49IHNpemVvZihjLT5nYXRld2F5X2J1ZmZlcikpIHsKPiA+ID4gKyAgICAgICAgICAg IGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSAtZ2F0ZXdheSBwYXJhbWV0ZXIgaXMgdG9v Cj4gPiA+IGxvbmcuICIKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIldlIGFsbG93IGEgbWF4IG9mICV6dQo+ID4gPiBjaGFyYWN0ZXJzXG4iLAo+ID4gPiArICAg ICAgICAgICAgICAgICAgIHNpemVvZihjLT5nYXRld2F5X2J1ZmZlcikpOwo+ID4gPiArICAgICAg ICAgICAgcmV0ID0gQVZFUlJPUihFSU5WQUwpOwo+ID4gPiArICAgICAgICAgICAgZ290byBlcnI7 Cj4gPiA+ICsgICAgICAgIH0KPiA+ID4gKyAgICB9IGVsc2Ugewo+ID4gPiArICAgICAgICAvLyBQ b3B1bGF0ZSB0aGUgSVBGUyBnYXRld2F5IGlmIHdlIGhhdmUgYW55Lgo+ID4gPiArICAgICAgICAv LyBJZiBub3QsIGluZm9ybSB0aGUgdXNlciBob3cgdG8gcHJvcGVybHkgc2V0IG9uZS4KPiA+ID4g KyAgICAgICAgcmV0ID0gcG9wdWxhdGVfaXBmc19nYXRld2F5KGgpOwo+ID4gPiArCj4gPiA+ICsg ICAgICAgIGlmIChyZXQgPCAxKSB7Cj4gPiA+ICsgICAgICAgICAgICAvLyBXZSBmYWxsYmFjayBv biBkd2ViLmxpbmsgKG1hbmFnZWQgYnkgUHJvdG9jb2wgTGFicykuCj4gPiA+ICsgICAgICAgICAg ICBzbnByaW50ZihjLT5nYXRld2F5X2J1ZmZlciwgc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSwg Igo+ID4gPiBodHRwczovL2R3ZWIubGluayIpOwo+ID4gPiArCj4gPiA+ICsgICAgICAgICAgICBh dl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJJUEZTIGRvZXMgbm90IGFwcGVhciB0byBiZQo+ID4g PiBydW5uaW5nLiAiCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJZb3XigJlyZSBub3cgdXNpbmcgdGhlIHB1YmxpYwo+ID4gPiBnYXRld2F5IGF0IGR3ZWIubGlu ay5cbiIpOwo+ID4gPiArICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19JTkZPLCAiSW5zdGFs bGluZyBJUEZTIGxvY2FsbHkgaXMKPiA+ID4gcmVjb21tZW5kZWQgdG8gIgo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1wcm92ZSBwZXJmb3JtYW5jZSBhbmQKPiBy ZWxpYWJpbGl0eSwgIgo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi YW5kIG5vdCBzaGFyZSBhbGwgeW91ciBhY3Rpdml0eQo+IHdpdGgKPiA+ID4gYSBzaW5nbGUgSVBG UyBnYXRld2F5LlxuIgo+ID4gPiArICAgICAgICAgICAgICAgICAgICJUaGVyZSBhcmUgbXVsdGlw bGUgb3B0aW9ucyB0byBkZWZpbmUgdGhpcwo+IGdhdGV3YXkuXG4iCj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgIjEuIENhbGwgZmZtcGVnIHdpdGggYSBnYXRld2F5IHBhcmFtLCAiCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aXRob3V0IGEgdHJhaWxpbmcgc2xh c2g6IC1nYXRld2F5Cj4gPiA+IDx1cmw+LlxuIgo+ID4gPiArICAgICAgICAgICAgICAgICAgICIy LiBEZWZpbmUgYW4gJElQRlNfR0FURVdBWSBlbnZpcm9ubWVudCB2YXJpYWJsZQo+IHdpdGgKPiA+ ID4gdGhlICIKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZ1bGwg SFRUUCBVUkwgdG8gdGhlIGdhdGV3YXkgIgo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAid2l0aG91dCB0cmFpbGluZyBmb3J3YXJkIHNsYXNoLlxuIgo+ID4gPiArICAg ICAgICAgICAgICAgICAgICIzLiBEZWZpbmUgYW4gJElQRlNfUEFUSCBlbnZpcm9ubWVudCB2YXJp YWJsZSAiCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmQgcG9p bnQgaXQgdG8gdGhlIElQRlMgZGF0YQo+IHBhdGggIgo+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiLSB0aGlzIGlzIHR5cGljYWxseSB+Ly5pcGZzXG4iKTsKPiA+ID4g KyAgICAgICAgfQo+ID4gPiArICAgIH0KPiA+ID4gKwo+ID4gPiArICAgIC8vIFRlc3QgaWYgdGhl IGdhdGV3YXkgc3RhcnRzIHdpdGggZWl0aGVyIGh0dHA6Ly8gb3IgaHR0cHM6Ly8KPiA+ID4gKyAg ICBpZiAoYXZfc3RyaXN0YXJ0KGMtPmdhdGV3YXlfYnVmZmVyLCAiaHR0cDovLyIsIE5VTEwpID09 IDAKPiA+ID4gKyAgICAgICAgJiYgYXZfc3RyaXN0YXJ0KGMtPmdhdGV3YXlfYnVmZmVyLCAiaHR0 cHM6Ly8iLCBOVUxMKSA9PSAwKSB7Cj4gPiA+ICsgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FS TklORywgIlRoZSBnYXRld2F5IFVSTCBkaWRuJ3Qgc3RhcnQgd2l0aAo+ID4gPiBodHRwOi8vIG9y ICIKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cHM6Ly8gYW5k IGlzIHRoZXJlZm9yZQo+ID4gPiBpbnZhbGlkLlxuIik7Cj4gPiA+ICsgICAgICAgIHJldCA9IEFW RVJST1IoRUlMU0VRKTsKPiA+ID4gKyAgICAgICAgZ290byBlcnI7Cj4gPiA+ICsgICAgfQo+ID4g PiArCj4gPiA+ICsgICAgLy8gQ29uY2F0ZW5hdGUgdGhlIHVybC4KPiA+ID4gKyAgICAvLyBUaGlz IGVuZHMgdXAgd2l0aCBzb21ldGhpbmcgbGlrZToKPiBodHRwOi8vbG9jYWxob3N0OjgwODAvaXBm cy9RbS4uLgo+ID4gPiAuLgo+ID4gPiArICAgIC8vIFRoZSBmb3JtYXQgb2YgIiVzJXMlcyVzIiBp cyB0aGUgZm9sbG93aW5nOgo+ID4gPiArICAgIC8vIDFzdCAlcyA9IFRoZSBnYXRld2F5Lgo+ID4g PiArICAgIC8vIDJuZCAlcyA9IElmIHRoZSBnYXRld2F5IGRpZG4ndCBlbmQgaW4gYSBzbGFzaCwg YWRkIGEgIi8iLgo+ID4gPiBPdGhlcndpc2UgaXQncyBhbiBlbXB0eSBzdHJpbmcKPiA+ID4gKyAg ICAvLyAzcmQgJXMgPSBFaXRoZXIgaXBucy8gb3IgaXBmcy8uCj4gPiA+ICsgICAgLy8gNHRoICVz ID0gVGhlIElQRlMgQ0lEIChRbS4uLiwgYmFmeS4uLiwgLi4uKS4KPiA+ID4gKyAgICBmdWxsdXJp ID0gYXZfYXNwcmludGYoIiVzJXMlcyVzIiwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgYy0+Z2F0ZXdheV9idWZmZXIsCj4gPiA+ICsKPiAoYy0+Z2F0ZXdheV9idWZmZXJbc3RybGVu KGMtPmdhdGV3YXlfYnVmZmVyKSAtCj4gPiA+IDFdID09ICcvJykgPyAiIiA6ICIvIiwKPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzX2lwbnMpID8gImlwbnMvIiA6ICJpcGZzLyIs Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGlwZnNfY2lkKTsKPiA+ID4gKwo+ID4g PiArICAgIGlmICghZnVsbHVyaSkgewo+ID4gPiArICAgICAgYXZfbG9nKGgsIEFWX0xPR19FUlJP UiwgIkZhaWxlZCB0byBjb21wb3NlIHRoZSBVUkxcbiIpOwo+ID4gPiArICAgICAgcmV0ID0gQVZF UlJPUihFTk9NRU0pOwo+ID4gPiArICAgICAgZ290byBlcnI7Cj4gPiA+ICsgICAgfQo+ID4gPiAr Cj4gPiA+ICsgICAgLy8gUGFzcyB0aGUgVVJMIGJhY2sgdG8gRkZNcGVnJ3MgcHJvdG9jb2wgaGFu ZGxlci4KPiA+ID4gKyAgICByZXQgPSBmZnVybF9vcGVuX3doaXRlbGlzdCgmYy0+aW5uZXIsIGZ1 bGx1cmksIGZsYWdzLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoLT5p bnRlcnJ1cHRfY2FsbGJhY2ssIG9wdGlvbnMsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaC0+cHJvdG9jb2xfd2hpdGVsaXN0LAo+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGgtPnByb3RvY29sX2JsYWNrbGlzdCwgaCk7Cj4gPiA+ICsgICAgaWYgKHJl dCA8IDApIHsKPiA+ID4gKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiVW5hYmxl IHRvIG9wZW4gcmVzb3VyY2U6ICVzXG4iLAo+ID4gPiBmdWxsdXJpKTsKPiA+ID4gKyAgICAgICAg Z290byBlcnI7Cj4gPiA+ICsgICAgfQo+ID4gPiArCj4gPiA+ICtlcnI6Cj4gPiA+ICsgICAgYXZf ZnJlZShmdWxsdXJpKTsKPiA+ID4gKyAgICByZXR1cm4gcmV0Owo+ID4gPiArfQo+ID4gPiArCj4g PiA+ICtzdGF0aWMgaW50IGlwZnNfcmVhZChVUkxDb250ZXh0ICpoLCB1bnNpZ25lZCBjaGFyICpi dWYsIGludCBzaXplKQo+ID4gPiArewo+ID4gPiArICAgIElQRlNHYXRld2F5Q29udGV4dCAqYyA9 IGgtPnByaXZfZGF0YTsKPiA+ID4gKyAgICByZXR1cm4gZmZ1cmxfcmVhZChjLT5pbm5lciwgYnVm LCBzaXplKTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIGludDY0X3QgaXBmc19zZWVr KFVSTENvbnRleHQgKmgsIGludDY0X3QgcG9zLCBpbnQgd2hlbmNlKQo+ID4gPiArewo+ID4gPiAr ICAgIElQRlNHYXRld2F5Q29udGV4dCAqYyA9IGgtPnByaXZfZGF0YTsKPiA+ID4gKyAgICByZXR1 cm4gZmZ1cmxfc2VlayhjLT5pbm5lciwgcG9zLCB3aGVuY2UpOwo+ID4gPiArfQo+ID4gPiArCj4g PiA+ICtzdGF0aWMgaW50IGlwZnNfY2xvc2UoVVJMQ29udGV4dCAqaCkKPiA+ID4gK3sKPiA+ID4g KyAgICBJUEZTR2F0ZXdheUNvbnRleHQgKmMgPSBoLT5wcml2X2RhdGE7Cj4gPiA+ICsgICAgcmV0 dXJuIGZmdXJsX2Nsb3NlcCgmYy0+aW5uZXIpOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICsjZGVm aW5lIE9GRlNFVCh4KSBvZmZzZXRvZihJUEZTR2F0ZXdheUNvbnRleHQsIHgpCj4gPiA+ICsKPiA+ ID4gK3N0YXRpYyBjb25zdCBBVk9wdGlvbiBvcHRpb25zW10gPSB7Cj4gPiA+ICsgICAgeyJnYXRl d2F5IiwgIlRoZSBnYXRld2F5IHRvIGFzayBmb3IgSVBGUyBkYXRhLiIsIE9GRlNFVChnYXRld2F5 KSwKPiA+ID4gQVZfT1BUX1RZUEVfU1RSSU5HLCB7LnN0ciA9IE5VTEx9LCAwLCAwLCBBVl9PUFRf RkxBR19ERUNPRElOR19QQVJBTX0sCj4gPiA+ICsgICAge05VTEx9LAo+ID4gPiArfTsKPiA+ID4g Kwo+ID4gPiArc3RhdGljIGNvbnN0IEFWQ2xhc3MgaXBmc19jb250ZXh0X2NsYXNzID0gewo+ID4g PiArICAgIC5jbGFzc19uYW1lICAgPSAiSVBGUyIsCj4gPiA+ICsgICAgLml0ZW1fbmFtZSAgICA9 IGF2X2RlZmF1bHRfaXRlbV9uYW1lLAo+ID4gPiArICAgIC5vcHRpb24gICAgICAgPSBvcHRpb25z LAo+ID4gPiArICAgIC52ZXJzaW9uICAgICAgPSBMSUJBVlVUSUxfVkVSU0lPTl9JTlQsCj4gPiA+ ICt9Owo+ID4gPiArCj4gPiA+ICtjb25zdCBVUkxQcm90b2NvbCBmZl9pcGZzX3Byb3RvY29sID0g ewo+ID4gPiArICAgIC5uYW1lICAgICAgICAgICAgID0gImlwZnMiLAo+ID4gPiArICAgIC51cmxf b3BlbjIgICAgICAgID0gdHJhbnNsYXRlX2lwZnNfdG9faHR0cCwKPiA+ID4gKyAgICAudXJsX3Jl YWQgICAgICAgICA9IGlwZnNfcmVhZCwKPiA+ID4gKyAgICAudXJsX3NlZWsgICAgICAgICA9IGlw ZnNfc2VlaywKPiA+ID4gKyAgICAudXJsX2Nsb3NlICAgICAgICA9IGlwZnNfY2xvc2UsCj4gPiA+ ICsgICAgLnByaXZfZGF0YV9zaXplICAgPSBzaXplb2YoSVBGU0dhdGV3YXlDb250ZXh0KSwKPiA+ ID4gKyAgICAucHJpdl9kYXRhX2NsYXNzICA9ICZpcGZzX2NvbnRleHRfY2xhc3MsCj4gPiA+ICt9 Owo+ID4gPiArCj4gPiA+ICtjb25zdCBVUkxQcm90b2NvbCBmZl9pcG5zX3Byb3RvY29sID0gewo+ ID4gPiArICAgIC5uYW1lICAgICAgICAgICAgID0gImlwbnMiLAo+ID4gPiArICAgIC51cmxfb3Bl bjIgICAgICAgID0gdHJhbnNsYXRlX2lwZnNfdG9faHR0cCwKPiA+ID4gKyAgICAudXJsX3JlYWQg ICAgICAgICA9IGlwZnNfcmVhZCwKPiA+ID4gKyAgICAudXJsX3NlZWsgICAgICAgICA9IGlwZnNf c2VlaywKPiA+ID4gKyAgICAudXJsX2Nsb3NlICAgICAgICA9IGlwZnNfY2xvc2UsCj4gPiA+ICsg ICAgLnByaXZfZGF0YV9zaXplICAgPSBzaXplb2YoSVBGU0dhdGV3YXlDb250ZXh0KSwKPiA+ID4g KyAgICAucHJpdl9kYXRhX2NsYXNzICA9ICZpcGZzX2NvbnRleHRfY2xhc3MsCj4gPiA+ICt9Owo+ ID4gPiBkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvcHJvdG9jb2xzLmMgYi9saWJhdmZvcm1hdC9w cm90b2NvbHMuYwo+ID4gPiBpbmRleCBkMDc1NjNjZDBjLi42ZWU2MmE1OThhIDEwMDY0NAo+ID4g PiAtLS0gYS9saWJhdmZvcm1hdC9wcm90b2NvbHMuYwo+ID4gPiArKysgYi9saWJhdmZvcm1hdC9w cm90b2NvbHMuYwo+ID4gPiBAQCAtNzEsNiArNzEsOCBAQCBleHRlcm4gY29uc3QgVVJMUHJvdG9j b2wgZmZfbGlic3J0X3Byb3RvY29sOwo+ID4gPiAgZXh0ZXJuIGNvbnN0IFVSTFByb3RvY29sIGZm X2xpYnNzaF9wcm90b2NvbDsKPiA+ID4gIGV4dGVybiBjb25zdCBVUkxQcm90b2NvbCBmZl9saWJz bWJjbGllbnRfcHJvdG9jb2w7Cj4gPiA+ICBleHRlcm4gY29uc3QgVVJMUHJvdG9jb2wgZmZfbGli em1xX3Byb3RvY29sOwo+ID4gPiArZXh0ZXJuIGNvbnN0IFVSTFByb3RvY29sIGZmX2lwZnNfcHJv dG9jb2w7Cj4gPiA+ICtleHRlcm4gY29uc3QgVVJMUHJvdG9jb2wgZmZfaXBuc19wcm90b2NvbDsK PiA+ID4KPiA+ID4gICNpbmNsdWRlICJsaWJhdmZvcm1hdC9wcm90b2NvbF9saXN0LmMiCj4gPiA+ Cj4gPiA+IC0tCj4gPiA+IDIuMzUuMQo+ID4gPgo+ID4gPgo+ID4gUGluZywgZXZlbiB0aG91Z2gg dGhlIG1lc3NhZ2UgaXMganVzdCBoZXJlIGZvciBtZXJlIG1pbnV0ZXMuCj4gPgo+ID4gQXMgb2Yg dGhlIHZlcnkgZGF5IGknbSBub3cgc2VuZGluZyB1cGRhdGVkIHBhdGNoZXMgZm9yIHRoaXMgZm9y IGV4YWN0bHkgMgo+ID4gbW9udGhzLiBJIHN0YXJ0ZWQgb24gRmViLiAxc3QuCj4gPiBXaXRoIHRo ZSBsYXN0IHJvdW5kIG9mIGNoYW5nZXMgKFRoYW54IEFuZHJlYXMhKSBJIGZlZWwgcmVhbGx5IGNv bmZpZGVudAo+ID4gdGhhdCB0aGlzIGlzIG5vdyBhdCB0aGUgdmVyeSBsZWFzdCBnb29kIHF1YWxp dHkgY29kZSByZWFkeSBmb3IgcHJpbWUKPiB0aW1lIQo+ID4gSVBGUyBzdXBwb3J0IGlzIG5vdyBh bHNvIHdvcmtpbmcgYnkgZGVmYXVsdCwgZXZlbiB3aGVuIHlvdSBkb24ndCBoYXZlCj4gSVBGUwo+ ID4gYXQgYWxsIChpbiBoZXJlIHNpbmNlIGEgZmV3IHBhdGNoZXMgYWdvKS4KPiA+IFllYWgsIEkg ZmVlbCByZWFsbHkgZ29vZCBhYm91dCBpdCBub3chCj4gPgo+ID4gSSdkIHZlcnkgbXVjaCBhcHBy ZWNpYXRlIGl0IGlmIHRoaXMgY291bGQgZmluYWxseSBiZSBtZXJnZWQuIEkgcHJvbWlzZQo+IEkn bQo+ID4gc3RheWluZyBhcm91bmQgdG8gZml4IGJ1Z3MgaWYgdGhlcmUgYXJlIHN0aWxsIGJ1Z3Mg dG8gYmUgZml4ZWQgYW5kIHdpbGwKPiA+IHJlc3BvbmQgc3dpZnRseSA6KQo+ID4KPiA+IEJ1dC4u LiBJJ2QgcmVhbGx5IHJlYWxseSByZWFsbHkgbGlrZSB0byBiZSBkb25lIHdpdGggaXQgZm9yIG5v dy4KPiA+IEkgZG9uJ3Qga25vdyB3aGVuIGZmbXBlZyA1LjEgaXMgZ29pbmcgdG8gYmUgcmVsZWFz ZWQgYnV0IGhhdmluZyBJUEZTCj4gPiBzdXBwb3J0IGluIHRoZXJlIHdvdWxkIGJlIGFic29sdXRl bHkgYXdlc29tZSEgQW5kIHdvdWxkIGhlbHAgbWUgZ3JlYXRseQo+IGluCj4gPiBjb250aW51aW5n IHRoZSBkZXZlbG9wbWVudCB0byBzdXBwb3J0IElQRlMgaW4gbXB2LCBLT0RJIGFuZCBWTEMuCj4K PiBOb3QgYnVpbGRpbmcgb24gbWluZ3c2NAo+Cj4gQ0MgICAgICBsaWJhdmZvcm1hdC9pcGZzZ2F0 ZXdheS5vCj4gc3JjL2xpYmF2Zm9ybWF0L2lwZnNnYXRld2F5LmM6IEluIGZ1bmN0aW9uIOKAmHBv cHVsYXRlX2lwZnNfZ2F0ZXdheeKAmToKPiBzcmMvbGliYXZmb3JtYXQvaXBmc2dhdGV3YXkuYzo5 NjoyMDogZXJyb3I6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mCj4gZnVuY3Rpb24g4oCYd2luMzJf c3RhdOKAmTsgZGlkIHlvdSBtZWFuIOKAmHdzdGF04oCZPwo+IFstV2Vycm9yPWltcGxpY2l0LWZ1 bmN0aW9uLWRlY2xhcmF0aW9uXQo+ICAgICAgICAgIHN0YXRfcmV0ID0gd2luMzJfc3RhdChpcGZz X2Z1bGxfZGF0YV9mb2xkZXIsICZzdCk7Cj4gICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn5+ Cj4gICAgICAgICAgICAgICAgICAgICB3c3RhdAo+IGNjMTogc29tZSB3YXJuaW5ncyBiZWluZyB0 cmVhdGVkIGFzIGVycm9ycwo+IHNyYy9mZmJ1aWxkL2NvbW1vbi5tYWs6Nzg6IHJlY2lwZSBmb3Ig dGFyZ2V0ICdsaWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5vJwo+IGZhaWxlZAo+IG1ha2U6ICoqKiBb bGliYXZmb3JtYXQvaXBmc2dhdGV3YXkub10gRXJyb3IgMQo+Cj4gbWF5YmUgeW91IHJlbW92ZWQg c29tZSAjaW5jbHVkZSB0aGF0IHdhcyBhY3R1YWxseSBuZWVkZWQgPyAoaWYgdGhpcyBjb2RlCj4g ZGlkbnQKPiBjaGFuZWcgYmVjYXVzZSBpdCBkaWQgYnVpbGQgcHJldmlvc3VseSkKPgoKVWdoLi4u CgpZb3UgZm91bmQgYSBidXQgdGhhdCBuZWl0aGVyIEkgbm9yIHBhdGNod29yayBkaWRuJ3QgZmlu ZC4gTmljZSB3b3JrIG9uIHlvdXIKZW5kIDopCk5vdyBJJ20gbm90IGNvbXBpbGluZyBvbiBtaW5n dyBidXQgYXBwYXJlbnRseSBwYXRjaHdvcmsgaXNuJ3QgZWl0aGVyLiBJdApjdXJyZW50bHkgaGFz IDggYnVpbGRzIGZvciB0aGlzIHBhdGNoIHRoYXQgYWxsIHBhc3MganVzdCBmaW5lLgoKSSdsbCBz ZW5kIGEgVjEyIHdpdGhpbiBhIGZldyBob3VycyBvZiB0aGlzIG1haWwgdGhhdCBob3BlZnVsbHkg Zml4ZXMgaXQuCkl0J3MgYSBiaXQgb2YgYSBzaG90IGluIHRoZSBkYXJrIGFzIEkgZG9uJ3QgaGF2 ZSB3aW5kb3dzIG5vdCBtaW5ndyBoZXJlIHRvCnRlc3Qgc28gSSBob3BlIHlvdSBjb3VsZCBnaXZl IGl0IGEgY29tcGlsZSB0ZXN0IG9uIHlvdXIgZW5kLgoKCj4gdGh4Cj4KPgo+IFsuLi5dCj4KPiAt LQo+IE1pY2hhZWwgICAgIEdudVBHIGZpbmdlcnByaW50OiA5RkYyMTI4QjE0N0VGNjczMEJBREYx MzM2MTFFQzc4NzA0MEIwRkFCCj4KPiBUaGUgYnJhdmVzdCBhcmUgc3VyZWx5IHRob3NlIHdobyBo YXZlIHRoZSBjbGVhcmVzdCB2aXNpb24KPiBvZiB3aGF0IGlzIGJlZm9yZSB0aGVtLCBnbG9yeSBh bmQgZGFuZ2VyIGFsaWtlLCBhbmQgeWV0Cj4gbm90d2l0aHN0YW5kaW5nIGdvIG91dCB0byBtZWV0 IGl0LiAtLSBUaHVjeWRpZGVzCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KPiBmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0Cj4gZmZtcGVnLWRldmVsQGZm bXBlZy5vcmcKPiBodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2 ZWwKPgo+IFRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbAo+IGZmbXBl Zy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCj4K X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRl dmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5v cmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBs aW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGgg c3ViamVjdCAidW5zdWJzY3JpYmUiLgo=