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 430704255F for ; Fri, 18 Mar 2022 15:00:33 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id AC97568B09B; Fri, 18 Mar 2022 17:00:31 +0200 (EET) Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com [209.85.221.50]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id ED55068AC80 for ; Fri, 18 Mar 2022 17:00:25 +0200 (EET) Received: by mail-wr1-f50.google.com with SMTP id x15so12065574wru.13 for ; Fri, 18 Mar 2022 08:00:25 -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=H3cg7/cxsxaVNQltLVj1kquIdVFvk3sgdOG5sgxdcog=; b=LEb7IqrcbiSUXPH1We8cMIM97Y2RL+/j3u16QktmRgL1GQQUmFk8B26fPoO1GAV3aW vD2W+b4ZFLqwSbYoGAxP4aZNpawSKcnChJfEJuFalB/Aj1zLiD+1EvhIYdCgzzZk3h3n 6DysnKT/BwQodMnKm6D2khCQ9xGNNUvISJFAxhfszn38oWrkbtzAbrQYl4Jl/kLDxiFQ f88tjrV+7G/hvBplbyeEN6TppjYfmyuGb30xmn3khG+wbnCvHM+2XA3w0tPuEy1fzjUi fx6l4wAq2pvPdkRVEDrr2fm3hesLuttN5zAFNxgX7rfsLsh89HwGITG2kNxpMvldNu7u 31VA== 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=H3cg7/cxsxaVNQltLVj1kquIdVFvk3sgdOG5sgxdcog=; b=gif95RZbCnEppvudesIwHjMPl8kC08I+Jy3FRNkbzCrCK4mTRkSYQyqEw3VWkS7ZJ5 x/2FeTWMGJk/DFt5G654LTsG4ne1KDmgqEck1Bpqdq8ze/Yzrd7nIrff7koa4c3oK7sz kWu+5/cR6OowW6ien3lEV6yl0RaMF67orT7q7G8G5y8BWWhE/5rOYBO7weJcZeV6ZbDv nlu6b4LoJTWZeXcBb/4CrGNVjqkpWTP5wkRQQjMj/8O601t2wsBLiBpmRfLQCqfsVsUQ dglypt96wmHUIqTWJDSY0rxoL7hN6wY5vbS/Azr5Rnmfk2LpfnlVfGkGMszlHG4bmznL aG9w== X-Gm-Message-State: AOAM532j9VBz1N+e1/8YvRVX7nYCq/GfJKwRSKsVMehGd8qm52/R8K2B DvVpXRmFIU4fs24ZGKtPChihhUKm6sxMlM4s6ED+i1JB X-Google-Smtp-Source: ABdhPJyEOVrOl1dr2HsvTzCZSN95xPbg1nmB8YzQdotOuoZu2f5SHs04GPfluGTsvZMw8MJilzc9FfMEKecg7Uz0ENs= X-Received: by 2002:adf:9d8f:0:b0:1f1:e72e:72c with SMTP id p15-20020adf9d8f000000b001f1e72e072cmr8168004wre.561.1647615624762; Fri, 18 Mar 2022 08:00:24 -0700 (PDT) MIME-Version: 1.0 References: <20220318145005.241414-1-markg85@gmail.com> <20220318145005.241414-2-markg85@gmail.com> In-Reply-To: <20220318145005.241414-2-markg85@gmail.com> From: Mark Gaiser Date: Fri, 18 Mar 2022 15:59:37 +0100 Message-ID: To: FFmpeg development discussions and patches , michael@niedermayer.cc X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH v9 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: T24gRnJpLCBNYXIgMTgsIDIwMjIgYXQgMzo1MCBQTSBNYXJrIEdhaXNlciA8bWFya2c4NUBnbWFp bC5jb20+IHdyb3RlOgoKPiBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3I6Cj4gLSBmZnBsYXkg aXBmczovLzxjaWQ+Cj4gLSBmZnBsYXkgaXBuczovLzxjaWQ+Cj4KPiBJUEZTIGRhdGEgY2FuIGJl IHBsYXllZCBmcm9tIHNvIGNhbGxlZCAiaXBmcyBnYXRld2F5cyIuCj4gQSBnYXRld2F5IGlzIGVz c2VudGlhbGx5IGEgd2Vic2VydmVyIHRoYXQgZ2l2ZXMgYWNjZXNzIHRvIHRoZQo+IGRpc3RyaWJ1 dGVkIElQRlMgbmV0d29yay4KPgo+IFRoaXMgcHJvdG9jb2wgc3VwcG9ydCAoaXBmcyBhbmQgaXBu cykgdGhlcmVmb3JlIHRyYW5zbGF0ZXMKPiBpcGZzOi8vIGFuZCBpcG5zOi8vIHRvIGEgaHR0cDov LyB1cmwuIFRoaXMgcmVzdWx0aW5nIHVybCBpcwo+IHRoZW4gaGFuZGxlZCBieSB0aGUgaHR0cCBw cm90b2NvbC4gSXQgY291bGQgYWxzbyBiZSBodHRwcwo+IGRlcGVuZGluZyBvbiB0aGUgZ2F0ZXdh eSBwcm92aWRlZC4KPgo+IFRvIHVzZSB0aGlzIHByb3RvY29sLCBhIGdhdGV3YXkgbXVzdCBiZSBw cm92aWRlZC4KPiBJZiB5b3UgZG8gbm90aGluZyBpdCB3aWxsIHRyeSB0byBmaW5kIGl0IGluIHlv dXIKPiAkSE9NRS8uaXBmcy9nYXRld2F5IGZpbGUuIFRoZSB3YXlzIHRvIHNldCBpdCBtYW51YWxs eSBhcmU6Cj4gMS4gRGVmaW5lIGEgLWdhdGV3YXkgPHVybD4gdG8gdGhlIGdhdGV3YXkuCj4gMi4g RGVmaW5lICRJUEZTX0dBVEVXQVkgd2l0aCB0aGUgZnVsbCBodHRwIGxpbmsgdG8gdGhlIGdhdGV3 YXkuCj4gMy4gRGVmaW5lICRJUEZTX1BBVEggYW5kIHBvaW50IGl0IHRvIHRoZSBJUEZTIGRhdGEg cGF0aC4KPiA0LiBIYXZlIElQRlMgcnVubmluZyBpbiB5b3VyIGxvY2FsIHVzZXIgZm9sZGVyICh1 bmRlciAkSE9NRS8uaXBmcykuCj4KPiBTaWduZWQtb2ZmLWJ5OiBNYXJrIEdhaXNlciA8bWFya2c4 NUBnbWFpbC5jb20+Cj4gLS0tCj4gIGNvbmZpZ3VyZSAgICAgICAgICAgICAgICAgfCAgIDIgKwo+ ICBkb2MvcHJvdG9jb2xzLnRleGkgICAgICAgIHwgIDMwICsrKysKPiAgbGliYXZmb3JtYXQvTWFr ZWZpbGUgICAgICB8ICAgMiArCj4gIGxpYmF2Zm9ybWF0L2lwZnNnYXRld2F5LmMgfCAzMTAgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgbGliYXZmb3JtYXQvcHJvdG9j b2xzLmMgICB8ICAgMiArCj4gIDUgZmlsZXMgY2hhbmdlZCwgMzQ2IGluc2VydGlvbnMoKykKPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Zm9ybWF0L2lwZnNnYXRld2F5LmMKPgo+IGRpZmYgLS1n aXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKPiBpbmRleCA1YjE5YTM1ZjU5Li42ZmYwOWU3OTc0 IDEwMDc1NQo+IC0tLSBhL2NvbmZpZ3VyZQo+ICsrKyBiL2NvbmZpZ3VyZQo+IEBAIC0zNTg1LDYg KzM1ODUsOCBAQCB1ZHBfcHJvdG9jb2xfc2VsZWN0PSJuZXR3b3JrIgo+ICB1ZHBsaXRlX3Byb3Rv Y29sX3NlbGVjdD0ibmV0d29yayIKPiAgdW5peF9wcm90b2NvbF9kZXBzPSJzeXNfdW5faCIKPiAg dW5peF9wcm90b2NvbF9zZWxlY3Q9Im5ldHdvcmsiCj4gK2lwZnNfcHJvdG9jb2xfc2VsZWN0PSJo dHRwc19wcm90b2NvbCIKPiAraXBuc19wcm90b2NvbF9zZWxlY3Q9Imh0dHBzX3Byb3RvY29sIgo+ Cj4gICMgZXh0ZXJuYWwgbGlicmFyeSBwcm90b2NvbHMKPiAgbGliYW1xcF9wcm90b2NvbF9kZXBz PSJsaWJyYWJiaXRtcSIKPiBkaWZmIC0tZ2l0IGEvZG9jL3Byb3RvY29scy50ZXhpIGIvZG9jL3By b3RvY29scy50ZXhpCj4gaW5kZXggZDIwN2RmMGI1Mi4uN2M5YzBhNDgwOCAxMDA2NDQKPiAtLS0g YS9kb2MvcHJvdG9jb2xzLnRleGkKPiArKysgYi9kb2MvcHJvdG9jb2xzLnRleGkKPiBAQCAtMjAy NSw1ICsyMDI1LDM1IEBAIGRlY29kaW5nIGVycm9ycy4KPgo+ICBAZW5kIHRhYmxlCj4KPiArQHNl Y3Rpb24gaXBmcwo+ICsKPiArSW50ZXJQbGFuZXRhcnkgRmlsZSBTeXN0ZW0gKElQRlMpIHByb3Rv Y29sIHN1cHBvcnQuIE9uZSBjYW4gYWNjZXNzIGZpbGVzCj4gc3RvcmVkCj4gK29uIHRoZSBJUEZT IG5ldHdvcmsgdGhyb3VnaCBzbyBjYWxsZWQgZ2F0ZXdheXMuIFRob3NlIGFyZSBodHRwKHMpCj4g ZW5kcG9pbnRzLgo+ICtUaGlzIHByb3RvY29sIHdyYXBzIHRoZSBJUEZTIG5hdGl2ZSBwcm90b2Nv bHMgKGlwZnM6Ly8gYW5kIGlwbnM6Ly8pIHRvIGJlCj4gc2VuZAo+ICt0byBzdWNoIGEgZ2F0ZXdh eS4gVXNlcnMgY2FuIChhbmQgc2hvdWxkKSBob3N0IHRoZWlyIG93biBub2RlIHdoaWNoIG1lYW5z Cj4gdGhpcwo+ICtwcm90b2NvbCB3aWxsIHVzZSB5b3VyIGxvY2FsIG1hY2hpbmUgZ2F0ZXdheSB0 byBhY2Nlc3MgZmlsZXMgb24gdGhlIElQRlMKPiBuZXR3b3JrLgo+ICsKPiArSWYgYSB1c2VyIGRv ZXNuJ3QgaGF2ZSBhIG5vZGUgb2YgdGhlaXIgb3duIHRoZW4gdGhlIHB1YmxpYyBnYXRld2F5Cj4g ZHdlYi5saW5rIGlzCj4gK3VzZWQgYnkgZGVmYXVsdC4KPiArCj4gK1lvdSBjYW4gdXNlIHRoaXMg cHJvdG9jb2wgaW4gMiB3YXlzLiBVc2luZyBJUEZTOgo+ICtAZXhhbXBsZQo+ICtmZnBsYXkgaXBm czovL1FtYkd0SmcyM3NraHZGbXU5bUppZVBWQnloZnp1NXJ3bzc0TUVrVkRZQW1GNVQKPiArQGVu ZCBleGFtcGxlCj4gKwo+ICtPciB0aGUgSVBOUyBwcm90b2NvbCAoSVBOUyBpcyBtdXRhYmxlIElQ RlMpOgo+ICtAZXhhbXBsZQo+ICtmZnBsYXkgaXBuczovL1FtYkd0SmcyM3NraHZGbXU5bUppZVBW QnloZnp1NXJ3bzc0TUVrVkRZQW1GNVQKPiArQGVuZCBleGFtcGxlCj4gKwo+ICtZb3UgY2FuIGFs c28gY2hhbmdlIHRoZSBnYXRld2F5IHRvIGJlIHVzZWQ6Cj4gKwo+ICtAdGFibGUgQG9wdGlvbgo+ ICsKPiArQGl0ZW0gZ2F0ZXdheQo+ICtEZWZpbmVzIHRoZSBnYXRld2F5IHRvIHVzZS4gV2hlbiBu b3RoaW5nIGlzIHByb3ZpZGVkIHRoZSBwcm90b2NvbCB3aWxsCj4gZmlyc3QgdHJ5Cj4gK3lvdXIg bG9jYWwgZ2F0ZXdheS4gSWYgdGhhdCBmYWlscyBkd2ViLmxpbmsgd2lsbCBiZSB1c2VkLgo+ICsK PiArQGVuZCB0YWJsZQo+Cj4gIEBjIG1hbiBlbmQgUFJPVE9DT0xTCj4gZGlmZiAtLWdpdCBhL2xp YmF2Zm9ybWF0L01ha2VmaWxlIGIvbGliYXZmb3JtYXQvTWFrZWZpbGUKPiBpbmRleCAzZGM2YTQ3 OWNjLi40ZWRjZTg0MjBmIDEwMDY0NAo+IC0tLSBhL2xpYmF2Zm9ybWF0L01ha2VmaWxlCj4gKysr IGIvbGliYXZmb3JtYXQvTWFrZWZpbGUKPiBAQCAtNjU2LDYgKzY1Niw4IEBAIE9CSlMtJChDT05G SUdfU1JUUF9QUk9UT0NPTCkgICAgICAgICAgICAgKz0KPiBzcnRwcHJvdG8ubyBzcnRwLm8KPiAg T0JKUy0kKENPTkZJR19TVUJGSUxFX1BST1RPQ09MKSAgICAgICAgICArPSBzdWJmaWxlLm8KPiAg T0JKUy0kKENPTkZJR19URUVfUFJPVE9DT0wpICAgICAgICAgICAgICArPSB0ZWVwcm90by5vIHRl ZV9jb21tb24ubwo+ICBPQkpTLSQoQ09ORklHX1RDUF9QUk9UT0NPTCkgICAgICAgICAgICAgICs9 IHRjcC5vCj4gK09CSlMtJChDT05GSUdfSVBGU19QUk9UT0NPTCkgICAgICAgICAgICAgKz0gaXBm c2dhdGV3YXkubwo+ICtPQkpTLSQoQ09ORklHX0lQTlNfUFJPVE9DT0wpICAgICAgICAgICAgICs9 IGlwZnNnYXRld2F5Lm8KPiAgVExTLU9CSlMtJChDT05GSUdfR05VVExTKSAgICAgICAgICAgICAg ICArPSB0bHNfZ251dGxzLm8KPiAgVExTLU9CSlMtJChDT05GSUdfTElCVExTKSAgICAgICAgICAg ICAgICArPSB0bHNfbGlidGxzLm8KPiAgVExTLU9CSlMtJChDT05GSUdfTUJFRFRMUykgICAgICAg ICAgICAgICArPSB0bHNfbWJlZHRscy5vCj4gZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L2lwZnNn YXRld2F5LmMgYi9saWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQKPiBpbmRleCAwMDAwMDAwMDAwLi4yYjI5MDVkMmMyCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBi L2xpYmF2Zm9ybWF0L2lwZnNnYXRld2F5LmMKPiBAQCAtMCwwICsxLDMxMCBAQAo+ICsvKgo+ICsg KiBJUEZTIGFuZCBJUE5TIHByb3RvY29sIHN1cHBvcnQgdGhyb3VnaCBJUEZTIEdhdGV3YXkuCj4g KyAqIENvcHlyaWdodCAoYykgMjAyMiBNYXJrIEdhaXNlcgo+ICsgKgo+ICsgKiBUaGlzIGZpbGUg aXMgcGFydCBvZiBGRm1wZWcuCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiArICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsgKiBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKPiArICogdmVy c2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQo+ICsgKiBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsgKiBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg UHVibGljCj4gKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8g dGhlIEZyZWUgU29mdHdhcmUKPiArICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry ZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQQo+IDAyMTEwLTEzMDEgVVNBCj4gKyAqLwo+ICsK PiArI2luY2x1ZGUgImF2Zm9ybWF0LmgiCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvYXZhc3NlcnQu aCIKPiArI2luY2x1ZGUgImxpYmF2dXRpbC9hdnN0cmluZy5oIgo+ICsjaW5jbHVkZSAibGliYXZ1 dGlsL2ludGVybmFsLmgiCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvb3B0LmgiCj4gKyNpbmNsdWRl ICJsaWJhdnV0aWwvdHJlZS5oIgo+ICsjaW5jbHVkZSA8ZmNudGwuaD4KPiArI2lmIEhBVkVfSU9f SAo+ICsjaW5jbHVkZSA8aW8uaD4KPiArI2VuZGlmCj4gKyNpZiBIQVZFX1VOSVNURF9ICj4gKyNp bmNsdWRlIDx1bmlzdGQuaD4KPiArI2VuZGlmCj4gKyNpbmNsdWRlICJvc19zdXBwb3J0LmgiCj4g KyNpbmNsdWRlICJ1cmwuaCIKPiArI2luY2x1ZGUgPHN0ZGxpYi5oPgo+ICsjaW5jbHVkZSA8c3lz L3N0YXQuaD4KPiArCj4gK3R5cGVkZWYgc3RydWN0IElQRlNHYXRld2F5Q29udGV4dCB7Cj4gKyAg ICBBVkNsYXNzICpjbGFzczsKPiArICAgIFVSTENvbnRleHQgKmlubmVyOwo+ICsgICAgLy8gSXMg ZmlsbGVkIGJ5IHRoZSAtZ2F0ZXdheSBhcmd1bWVudCBhbmQgbm90IGNoYW5nZWQgYWZ0ZXIuCj4g KyAgICBjaGFyICpnYXRld2F5Owo+ICsgICAgLy8gSWYgdGhlIGFib3ZlIGdhdGV3YXkgaXMgbm9u IG51bGwsIGl0IHdpbGwgYmUgY29waWVkIGludG8gdGhpcwo+IGJ1ZmZlci4KPiArICAgIC8vIEVs c2UgdGhpcyBidWZmZXIgd2lsbCBjb250YWluIHRoZSBhdXRvIGRldGVjdGVkIGdhdGV3YXkuCj4g KyAgICAvLyBJbiBlaXRoZXIgY2FzZSwgdGhlIGdhdGV3YXkgdG8gdXNlIHdpbGwgYmUgaW4gdGhp cyBidWZmZXIuCj4gKyAgICBjaGFyIGdhdGV3YXlfYnVmZmVyW1BBVEhfTUFYXTsKPiArfSBJUEZT R2F0ZXdheUNvbnRleHQ7Cj4gKwo+ICsvLyBBIGJlc3QtZWZmb3J0IHdheSB0byBmaW5kIHRoZSBJ UEZTIGdhdGV3YXkuCj4gKy8vIE9ubHkgdGhlIG1vc3QgYXBwcm9waWF0ZSBnYXRld2F5IGlzIHNl dC4gSXQncyBub3QgYWN0dWFsbHkgcmVxdWVzdGVkCj4gKy8vIChodHRwIGNhbGwpIHRvIHByZXZl bnQgYSBwb3RlbnRpYWwgc2xvd2Rvd24gaW4gc3RhcnR1cC4gQSBwb3RlbnRpYWwKPiB0aW1lb3V0 Cj4gKy8vIGlzIGhhbmRsZWQgYnkgdGhlIEhUVFAgcHJvdG9jb2wuCj4gK3N0YXRpYyBpbnQgcG9w dWxhdGVfaXBmc19nYXRld2F5KFVSTENvbnRleHQgKmgpCj4gK3sKPiArICAgIElQRlNHYXRld2F5 Q29udGV4dCAqYyA9IGgtPnByaXZfZGF0YTsKPiArICAgIGNoYXIgaXBmc19mdWxsX2RhdGFfZm9s ZGVyW1BBVEhfTUFYXTsKPiArICAgIGNoYXIgaXBmc19nYXRld2F5X2ZpbGVbUEFUSF9NQVhdOwo+ ICsgICAgc3RydWN0IHN0YXQgc3Q7Cj4gKyAgICBpbnQgc3RhdF9yZXQgPSAwOwo+ICsgICAgaW50 IHJldCA9IEFWRVJST1IoRUlOVkFMKTsKPiArICAgIEZJTEUgKmdhdGV3YXlfZmlsZSA9IE5VTEw7 Cj4gKwo+ICsgICAgLy8gVGVzdCAkSVBGU19HQVRFV0FZLgo+ICsgICAgaWYgKGdldGVudigiSVBG U19HQVRFV0FZIikgIT0gTlVMTCkgewo+ICsgICAgICAgIGlmIChzbnByaW50ZihjLT5nYXRld2F5 X2J1ZmZlciwgc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSwgIiVzIiwKPiArICAgICAgICAgICAg ICAgICAgICAgZ2V0ZW52KCJJUEZTX0dBVEVXQVkiKSkgPj0KPiBzaXplb2YoYy0+Z2F0ZXdheV9i dWZmZXIpKSB7Cj4gKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSBJ UEZTX0dBVEVXQVkgZW52aXJvbm1lbnQKPiB2YXJpYWJsZSBleGNlZWRzIHRoZSBtYXhpbXVtIGxl bmd0aC4gV2UgYWxsb3cgYSBtYXggb2YgJXp1IGNoYXJhY3RlcnNcbiIsCj4gc2l6ZW9mKGMtPmdh dGV3YXlfYnVmZmVyKSk7Cj4gKyAgICAgICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKPiAr ICAgICAgICAgICAgZ290byBlcnI7Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICByZXQgPSAx Owo+ICsgICAgICAgIGdvdG8gZXJyOwo+ICsgICAgfSBlbHNlCj4gKyAgICAgICAgYXZfbG9nKGgs IEFWX0xPR19ERUJVRywgIiRJUEZTX0dBVEVXQVkgaXMgZW1wdHkuXG4iKTsKPiArCj4gKyAgICAv LyBXZSBuZWVkIHRvIGtub3cgdGhlIElQRlMgZm9sZGVyIHRvIC0gZXZlbnR1YWxseSAtIHJlYWQg dGhlCj4gY29udGVudHMgb2YKPiArICAgIC8vIHRoZSAiZ2F0ZXdheSIgZmlsZSB3aGljaCB3b3Vs ZCB0ZWxsIHVzIHRoZSBnYXRld2F5IHRvIHVzZS4KPiArICAgIGlmIChnZXRlbnYoIklQRlNfUEFU SCIpID09IE5VTEwpIHsKPiArICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0RFQlVHLCAiJElQRlNf UEFUSCBpcyBlbXB0eS5cbiIpOwo+ICsKPiArICAgICAgICAvLyBUcnkgdmlhIHRoZSBob21lIGZv bGRlci4KPiArICAgICAgICBpZiAoZ2V0ZW52KCJIT01FIikgPT0gTlVMTCkgewo+ICsgICAgICAg ICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICIkSE9NRSBhcHBlYXJzIHRvIGJlIGVtcHR5 LlxuIik7Cj4gKyAgICAgICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKPiArICAgICAgICAg ICAgZ290byBlcnI7Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICAvLyBWZXJpZnkgdGhlIGNv bXBvc2VkIHBhdGggZml0cy4KPiArICAgICAgICBpZiAoc25wcmludGYoaXBmc19mdWxsX2RhdGFf Zm9sZGVyLCBzaXplb2YoaXBmc19mdWxsX2RhdGFfZm9sZGVyKSwKPiArICAgICAgICAgICAgICAg ICAgICAgIiVzLy5pcGZzLyIsIGdldGVudigiSE9NRSIpKSA+PQo+IHNpemVvZihpcGZzX2Z1bGxf ZGF0YV9mb2xkZXIpKSB7Cj4gKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywg IlRoZSBJUEZTIGRhdGEgcGF0aCBleGNlZWRzIHRoZSBtYXgKPiBwYXRoIGxlbmd0aCAoJXp1KVxu Iiwgc2l6ZW9mKGlwZnNfZnVsbF9kYXRhX2ZvbGRlcikpOwo+ICsgICAgICAgICAgICByZXQgPSBB VkVSUk9SKEVJTlZBTCk7Cj4gKyAgICAgICAgICAgIGdvdG8gZXJyOwo+ICsgICAgICAgIH0KPiAr Cj4gKyAgICAgICAgLy8gU3RhdCB0aGUgZm9sZGVyLgo+ICsgICAgICAgIC8vIEl0IHNob3VsZCBl eGlzdCBpbiBhIGRlZmF1bHQgSVBGUyBzZXR1cCB3aGVuIHJ1biBhcyBsb2NhbCB1c2VyLgo+ICsj aWZuZGVmIF9XSU4zMgo+ICsgICAgICAgIHN0YXRfcmV0ID0gc3RhdChpcGZzX2Z1bGxfZGF0YV9m b2xkZXIsICZzdCk7Cj4gKyNlbHNlCj4gKyAgICAgICAgc3RhdF9yZXQgPSB3aW4zMl9zdGF0KGlw ZnNfZnVsbF9kYXRhX2ZvbGRlciwgJnN0KTsKPiArI2VuZGlmCj4gKyAgICAgICAgaWYgKHN0YXRf cmV0IDwgMCkgewo+ICsgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0lORk8sICJVbmFibGUg dG8gZmluZCBJUEZTIGZvbGRlci4gV2UKPiB0cmllZDpcbiIpOwo+ICsgICAgICAgICAgICBhdl9s b2coaCwgQVZfTE9HX0lORk8sICItICRJUEZTX1BBVEgsIHdoaWNoIHdhcyBlbXB0eS5cbiIpOwo+ ICsgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0lORk8sICItICRIT01FLy5pcGZzIChmdWxs IHVyaTogJXMpIHdoaWNoCj4gZG9lc24ndCBleGlzdC5cbiIsIGlwZnNfZnVsbF9kYXRhX2ZvbGRl cik7Cj4gKyAgICAgICAgICAgIHJldCA9IEFWRVJST1IoRU5PRU5UKTsKPiArICAgICAgICAgICAg Z290byBlcnI7Cj4gKyAgICAgICAgfQo+ICsgICAgfSBlbHNlIHsKPiArICAgICAgICBpZiAoc25w cmludGYoaXBmc19mdWxsX2RhdGFfZm9sZGVyLAo+IHNpemVvZihpcGZzX2Z1bGxfZGF0YV9mb2xk ZXIpLCAiJXMiLAo+ICsgICAgICAgICAgICAgICAgIGdldGVudigiSVBGU19QQVRIIikpID49IHNp emVvZihpcGZzX2Z1bGxfZGF0YV9mb2xkZXIpKSB7Cj4gKyAgICAgICAgICAgIGF2X2xvZyhoLCBB Vl9MT0dfV0FSTklORywgIlRoZSBJUEZTX1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUKPiBleGNl ZWRzIHRoZSBtYXhpbXVtIGxlbmd0aC4gV2UgYWxsb3cgYSBtYXggb2YgJXp1IGNoYXJhY3RlcnNc biIsCj4gc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSk7Cj4gKyAgICAgICAgICAgIHJldCA9IEFW RVJST1IoRUlOVkFMKTsKPiArICAgICAgICAgICAgZ290byBlcnI7Cj4gKyAgICAgICAgfQo+ICsK PiArICAgIH0KPiArCj4gKyAgICAvLyBDb3B5IHRoZSBmdWxseSBjb21wb3NlZCBnYXRld2F5IHBh dGggaW50byBpcGZzX2dhdGV3YXlfZmlsZS4KPiArICAgIGlmIChzbnByaW50ZihpcGZzX2dhdGV3 YXlfZmlsZSwgc2l6ZW9mKGlwZnNfZ2F0ZXdheV9maWxlKSwKPiAiJXNnYXRld2F5IiwKPiArICAg ICAgICAgICAgICAgICBpcGZzX2Z1bGxfZGF0YV9mb2xkZXIpID49IHNpemVvZihpcGZzX2dhdGV3 YXlfZmlsZSkpIHsKPiArICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJUaGUgSVBG UyBnYXRld2F5IGZpbGUgcGF0aCBleGNlZWRzIHRoZQo+IG1heCBwYXRoIGxlbmd0aCAoJXp1KVxu Iiwgc2l6ZW9mKGlwZnNfZ2F0ZXdheV9maWxlKSk7Cj4gKyAgICAgICAgcmV0ID0gQVZFUlJPUihF Tk9FTlQpOwo+ICsgICAgICAgIGdvdG8gZXJyOwo+ICsgICAgfQo+ICsKPiArICAgIC8vIEdldCB0 aGUgY29udGVudHMgb2YgdGhlIGdhdGV3YXkgZmlsZS4KPiArICAgIGdhdGV3YXlfZmlsZSA9IGF2 X2ZvcGVuX3V0ZjgoaXBmc19nYXRld2F5X2ZpbGUsICJyIik7Cj4gKyAgICBpZiAoIWdhdGV3YXlf ZmlsZSkgewo+ICsgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSBJUEZTIGdh dGV3YXkgZmlsZSAoZnVsbCB1cmk6ICVzKQo+IGRvZXNuJ3QgZXhpc3QuIElzIHRoZSBnYXRld2F5 IGVuYWJsZWQ/XG4iLCBpcGZzX2dhdGV3YXlfZmlsZSk7Cj4gKyAgICAgICAgcmV0ID0gQVZFUlJP UihFTk9FTlQpOwo+ICsgICAgICAgIGdvdG8gZXJyOwo+ICsgICAgfQo+ICsKPiArICAgIC8vIFJl YWQgYSBzaW5nbGUgbGluZSAoZmdldHMgc3RvcHMgYXQgbmV3IGxpbmUgbWFyaykuCj4gKyAgICBm Z2V0cyhjLT5nYXRld2F5X2J1ZmZlciwgc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSAtIDEsIGdh dGV3YXlfZmlsZSk7Cj4gKwo+ICsgICAgLy8gUmVwbGFjZSB0aGUgbGFzdCBjaGFyIHdpdGggXDAK PiArICAgIGMtPmdhdGV3YXlfYnVmZmVyW3NpemVvZihjLT5nYXRld2F5X2J1ZmZlcikgLSAxXSA9 IDA7Cj4gKwo+ICsgICAgLy8gUmVwbGFjZSBmaXJzdCBvY2N1cmVuY2Ugb2YgZW5kIG9mIGxpbmUg d2l0aCBcMAo+ICsgICAgYy0+Z2F0ZXdheV9idWZmZXJbc3RyY3NwbihjLT5nYXRld2F5X2J1ZmZl ciwgIlxyIildID0gMDsKPiArICAgIGMtPmdhdGV3YXlfYnVmZmVyW3N0cmNzcG4oYy0+Z2F0ZXdh eV9idWZmZXIsICJcbiIpXSA9IDA7Cj4gKwo+ICsgICAgLy8gSWYgc3RybGVuIGZpbmRzIGFueXRo aW5nIGxvbmdlciB0aGVuIDAgY2hhcmFjdGVycyB0aGVuIHdlIGhhdmUgYQo+ICsgICAgLy8gcG90 ZW50aWFsIGdhdGV3YXkgdXJsLgo+ICsgICAgaWYgKHN0cmxlbihjLT5nYXRld2F5X2J1ZmZlcikg PCAxKSB7Cj4gKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiVGhlIElQRlMgZ2F0 ZXdheSBmaWxlIChmdWxsIHVyaTogJXMpCj4gYXBwZWFycyB0byBiZSBlbXB0eS4gSXMgdGhlIGdh dGV3YXkgc3RhcnRlZD9cbiIsIGlwZnNfZ2F0ZXdheV9maWxlKTsKPiArICAgICAgICByZXQgPSBB VkVSUk9SKEVJTFNFUSk7Cj4gKyAgICAgICAgZ290byBlcnI7Cj4gKyAgICB9IGVsc2Ugewo+ICsg ICAgICAgIC8vIFdlJ3JlIGRvbmUsIHRoZSBjLT5nYXRld2F5X2J1ZmZlciBoYXMgc29tZXRoaW5n IHRoYXQgbG9va3MKPiB2YWxpZC4KPiArICAgICAgICByZXQgPSAxOwo+ICsgICAgICAgIGdvdG8g ZXJyOwo+ICsgICAgfQo+ICsKPiArZXJyOgo+ICsgICAgaWYgKGdhdGV3YXlfZmlsZSkKPiArICAg ICAgICBmY2xvc2UoZ2F0ZXdheV9maWxlKTsKPiArCj4gKyAgICByZXR1cm4gcmV0Owo+ICt9Cj4g Kwo+ICtzdGF0aWMgaW50IHRyYW5zbGF0ZV9pcGZzX3RvX2h0dHAoVVJMQ29udGV4dCAqaCwgY29u c3QgY2hhciAqdXJpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZs YWdzLCBBVkRpY3Rpb25hcnkgKipvcHRpb25zKQo+ICt7Cj4gKyAgICBjb25zdCBjaGFyICppcGZz X2NpZDsKPiArICAgIGNoYXIgKmZ1bGx1cmkgPSBOVUxMOwo+ICsgICAgaW50IHJldDsKPiArICAg IElQRlNHYXRld2F5Q29udGV4dCAqYyA9IGgtPnByaXZfZGF0YTsKPiArCj4gKyAgICAvLyBUZXN0 IGZvciBpcGZzOi8vLCBpcGZzOiwgaXBuczovLyBhbmQgaXBuczouIFRoaXMgcHJlZml4IGlzCj4g c3RyaXBwZWQgZnJvbQo+ICsgICAgLy8gdGhlIHN0cmluZyBsZWF2aW5nIGp1c3QgdGhlIENJRCBp biBpcGZzX2NpZC4KPiArICAgIGludCBpc19pcGZzID0gYXZfc3RyaXN0YXJ0KHVyaSwgImlwZnM6 Ly8iLCAmaXBmc19jaWQpOwo+ICsgICAgaW50IGlzX2lwbnMgPSBhdl9zdHJpc3RhcnQodXJpLCAi aXBuczovLyIsICZpcGZzX2NpZCk7Cj4gKwo+ICsgICAgLy8gV2UgbXVzdCBoYXZlIGVpdGhlciBp cG5zIG9yIGlwZnMuCj4gKyAgICBpZiAoIWlzX2lwZnMgJiYgIWlzX2lwbnMpIHsKPiArICAgICAg ICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7Cj4gKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJO SU5HLCAiVW5zdXBwb3J0ZWQgdXJsICVzXG4iLCB1cmkpOwo+ICsgICAgICAgIGdvdG8gZXJyOwo+ ICsgICAgfQo+ICsKPiArICAgIC8vIElmIHRoZSBDSUQgaGFzIGEgbGVuZ3RoIGdyZWF0ZXIgdGhl biAwIHRoZW4gd2UgYXNzdW1lIHdlIGhhdmUgYQo+IHByb3BlciB3b3JraW5nIG9uZS4KPiArICAg IC8vIEl0IGNvdWxkIHN0aWxsIGJlIHdyb25nIGJ1dCBpbiB0aGF0IGNhc2UgdGhlIGdhdGV3YXkg c2hvdWxkIHNhdmUKPiB1cyBhbmQKPiArICAgIC8vIHJ1dHVybiBhIDQwMyBlcnJvci4gVGhlIGh0 dHAgcHJvdG9jb2wgaGFuZGxlcyB0aGlzLgo+ICsgICAgaWYgKHN0cmxlbihpcGZzX2NpZCkgPCAx KSB7Cj4gKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiQSBDSUQgbXVzdCBiZSBw cm92aWRlZC5cbiIpOwo+ICsgICAgICAgIHJldCA9IEFWRVJST1IoRUlMU0VRKTsKPiArICAgICAg ICBnb3RvIGVycjsKPiArICAgIH0KPiArCj4gKyAgICAvLyBQb3B1bGF0ZSBjLT5nYXRld2F5X2J1 ZmZlciB3aXRoIHdoYXRldmVyIGlzIGluIGMtPmdhdGV3YXkKPiArICAgIGlmIChjLT5nYXRld2F5 ICE9IE5VTEwpIHsKPiArICAgICAgICBpZiAoc25wcmludGYoYy0+Z2F0ZXdheV9idWZmZXIsIHNp emVvZihjLT5nYXRld2F5X2J1ZmZlciksICIlcyIsCj4gKyAgICAgICAgICAgICAgICAgICAgIGMt PmdhdGV3YXkpID49IHNpemVvZihjLT5nYXRld2F5X2J1ZmZlcikpIHsKPiArICAgICAgICAgICAg YXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiVGhlIC1nYXRld2F5IHBhcmFtZXRlciBpcyB0b28K PiBsb25nLiBXZSBhbGxvdyBhIG1heCBvZiAlenUgY2hhcmFjdGVyc1xuIiwgc2l6ZW9mKGMtPmdh dGV3YXlfYnVmZmVyKSk7Cj4gKyAgICAgICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKPiAr ICAgICAgICAgICAgZ290byBlcnI7Cj4gKyAgICAgICAgfQo+ICsgICAgfSBlbHNlIHsKPiArICAg ICAgICAvLyBQb3B1bGF0ZSB0aGUgSVBGUyBnYXRld2F5IGlmIHdlIGhhdmUgYW55Lgo+ICsgICAg ICAgIC8vIElmIG5vdCwgaW5mb3JtIHRoZSB1c2VyIGhvdyB0byBwcm9wZXJseSBzZXQgb25lLgo+ ICsgICAgICAgIHJldCA9IHBvcHVsYXRlX2lwZnNfZ2F0ZXdheShoKTsKPiArCj4gKyAgICAgICAg aWYgKHJldCA8IDEpIHsKPiArICAgICAgICAgICAgLy8gV2UgZmFsbGJhY2sgb24gZHdlYi5saW5r IChtYW5hZ2VkIGJ5IFByb3RvY29sIExhYnMpLgo+ICsgICAgICAgICAgICBzbnByaW50ZihjLT5n YXRld2F5X2J1ZmZlciwgc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSwgIgo+IGh0dHBzOi8vZHdl Yi5saW5rIik7Cj4KCkp1c3QgdG8gbWFrZSB0aGlzIHBhcnQgY2xlYXIuCkkndmUgYmVlbiBob2xk aW5nIG9mZiBzZW5kaW5nIHRoaXMgcGF0Y2ggdGlsbCBJIHJlY2VpdmVkIGFuZCBPSyBmcm9tClBy b3RvY29sIExhYnMgKHRoZXkgbWFpbnRhaW4gdGhpcyBnYXRld2F5IGFuZCBJUEZTKS4KVGhleSBh cHByb3ZlIGhhdmluZyB0aGlzIGZhbGxiYWNrIGdhdGV3YXkgaW4gdGhlIGZmbXBlZyBjb2RlYmFz ZS4KClRoaXMgYWxzbyBtZWFucyB0aGF0LCBzdGFydGluZyBmcm9tIHRoaXMgcGF0Y2gsICJmZnBs YXkgaXBmczovLzxjaWQ+IiB3aWxsCmp1c3Qgd29yayBvbiBhbnkgcGxhdGZvcm0gd2hlcmUgZmZt cGVnIHJ1bnMgYW5kIHRoaXMgcHJvdG9jb2wgaXMgZW5hYmxlZCEKVGhhdCdzIGh1Z2UhCgpPdGhl ciB0aGFuIHRoYXQgaXQncyBpbXBsZW1lbnRlZCBleGFjdGx5IGFzIHByZXZpb3VzbHkgZGlzY3Vz c2VkIGluIHRoZSBWOApzZXJpZXMuCgorCj4gKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0df V0FSTklORywgIklQRlMgZG9lcyBub3QgYXBwZWFyIHRvIGJlCj4gcnVubmluZy4gWW914oCZcmUg bm93IHVzaW5nIHRoZSBwdWJsaWMgZ2F0ZXdheSBhdCBkd2ViLmxpbmsuXG4iKTsKPiArICAgICAg ICAgICAgYXZfbG9nKGgsIEFWX0xPR19JTkZPLCAiSW5zdGFsbGluZyBJUEZTIGxvY2FsbHkgaXMK PiByZWNvbW1lbmRlZCB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIGFuZCByZWxpYWJpbGl0eSwgYW5k IG5vdCBzaGFyZSBhbGwgeW91cgo+IGFjdGl2aXR5IHdpdGggYSBzaW5nbGUgSVBGUyBnYXRld2F5 LlxuIik7Cj4gKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfSU5GTywgIlRoZXJlIGFyZSBt dWx0aXBsZSBvcHRpb25zIHRvIGRlZmluZQo+IHRoaXMgZ2F0ZXdheS5cbiIpOwo+ICsgICAgICAg ICAgICBhdl9sb2coaCwgQVZfTE9HX0lORk8sICIxLiBDYWxsIGZmbXBlZyB3aXRoIGEgZ2F0ZXdh eSBwYXJhbSwKPiB3aXRob3V0IGEgdHJhaWxpbmcgc2xhc2g6IC1nYXRld2F5IDx1cmw+LlxuIik7 Cj4gKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfSU5GTywgIjIuIERlZmluZSBhbiAkSVBG U19HQVRFV0FZCj4gZW52aXJvbm1lbnQgdmFyaWFibGUgd2l0aCB0aGUgZnVsbCBIVFRQIFVSTCB0 byB0aGUgZ2F0ZXdheSB3aXRob3V0IHRyYWlsaW5nCj4gZm9yd2FyZCBzbGFzaC5cbiIpOwo+ICsg ICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0lORk8sICIzLiBEZWZpbmUgYW4gJElQRlNfUEFU SCBlbnZpcm9ubWVudAo+IHZhcmlhYmxlIGFuZCBwb2ludCBpdCB0byB0aGUgSVBGUyBkYXRhIHBh dGggLSB0aGlzIGlzIHR5cGljYWxseSB+Ly5pcGZzXG4iKTsKPiArICAgICAgICB9Cj4gKyAgICB9 Cj4gKwo+ICsgICAgLy8gVGVzdCBpZiB0aGUgZ2F0ZXdheSBzdGFydHMgd2l0aCBlaXRoZXIgaHR0 cDovLyBvciBodHRwczovLwo+ICsgICAgaWYgKGF2X3N0cmlzdGFydChjLT5nYXRld2F5X2J1ZmZl ciwgImh0dHA6Ly8iLCBOVUxMKSA9PSAwCj4gKyAgICAgICAgJiYgYXZfc3RyaXN0YXJ0KGMtPmdh dGV3YXlfYnVmZmVyLCAiaHR0cHM6Ly8iLCBOVUxMKSA9PSAwKSB7Cj4gKyAgICAgICAgYXZfbG9n KGgsIEFWX0xPR19XQVJOSU5HLCAiVGhlIGdhdGV3YXkgVVJMIGRpZG4ndCBzdGFydCB3aXRoCj4g aHR0cDovLyBvciBodHRwczovLyBhbmQgaXMgdGhlcmVmb3JlIGludmFsaWQuXG4iKTsKPiArICAg ICAgICByZXQgPSBBVkVSUk9SKEVJTFNFUSk7Cj4gKyAgICAgICAgZ290byBlcnI7Cj4gKyAgICB9 Cj4gKwo+ICsgICAgLy8gQ29uY2F0ZW5hdGUgdGhlIHVybC4KPiArICAgIC8vIFRoaXMgZW5kcyB1 cCB3aXRoIHNvbWV0aGluZyBsaWtlOiBodHRwOi8vbG9jYWxob3N0OjgwODAvaXBmcy9RbS4uLgo+ IC4uCj4gKyAgICAvLyBUaGUgZm9ybWF0IG9mICIlcyVzJXMlcyIgaXMgdGhlIGZvbGxvd2luZzoK PiArICAgIC8vIDFzdCAlcyA9IFRoZSBnYXRld2F5Lgo+ICsgICAgLy8gMm5kICVzID0gSWYgdGhl IGdhdGV3YXkgZGlkbid0IGVuZCBpbiBhIHNsYXNoLCBhZGQgYSAiLyIuCj4gT3RoZXJ3aXNlIGl0 J3MgYW4gZW1wdHkgc3RyaW5nCj4gKyAgICAvLyAzcmQgJXMgPSBFaXRoZXIgaXBucy8gb3IgaXBm cy8uCj4gKyAgICAvLyA0dGggJXMgPSBUaGUgSVBGUyBDSUQgKFFtLi4uLCBiYWZ5Li4uLCAuLi4p Lgo+ICsgICAgZnVsbHVyaSA9IGF2X2FzcHJpbnRmKCIlcyVzJXMlcyIsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgYy0+Z2F0ZXdheV9idWZmZXIsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgKGMtPmdhdGV3YXlfYnVmZmVyW3N0cmxlbihjLT5nYXRld2F5X2J1ZmZlcikgLQo+IDFd ID09ICcvJykgPyAiIiA6ICIvIiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNfaXBu cykgPyAiaXBucy8iIDogImlwZnMvIiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICBpcGZz X2NpZCk7Cj4gKwo+ICsgICAgLy8gUGFzcyB0aGUgVVJMIGJhY2sgdG8gRkZNcGVnJ3MgcHJvdG9j b2wgaGFuZGxlci4KPiArICAgIGlmICgocmV0ID0gZmZ1cmxfb3Blbl93aGl0ZWxpc3QoJmMtPmlu bmVyLCBmdWxsdXJpLCBmbGFncywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJmgtPmludGVycnVwdF9jYWxsYmFjaywgb3B0aW9ucywKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaC0+cHJvdG9jb2xfd2hpdGVsaXN0LAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBoLT5wcm90b2NvbF9ibGFja2xpc3QsIGgpKQo+ICsgICAg ICAgIDwgMCkgewo+ICsgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlVuYWJsZSB0 byBvcGVuIHJlc291cmNlOiAlc1xuIiwKPiBmdWxsdXJpKTsKPiArICAgICAgICBnb3RvIGVycjsK PiArICAgIH0KPiArCj4gK2VycjoKPiArICAgIGF2X2ZyZWUoZnVsbHVyaSk7Cj4gKyAgICByZXR1 cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGlwZnNfcmVhZChVUkxDb250ZXh0ICpoLCB1 bnNpZ25lZCBjaGFyICpidWYsIGludCBzaXplKQo+ICt7Cj4gKyAgICBJUEZTR2F0ZXdheUNvbnRl eHQgKmMgPSBoLT5wcml2X2RhdGE7Cj4gKyAgICByZXR1cm4gZmZ1cmxfcmVhZChjLT5pbm5lciwg YnVmLCBzaXplKTsKPiArfQo+ICsKPiArc3RhdGljIGludDY0X3QgaXBmc19zZWVrKFVSTENvbnRl eHQgKmgsIGludDY0X3QgcG9zLCBpbnQgd2hlbmNlKQo+ICt7Cj4gKyAgICBJUEZTR2F0ZXdheUNv bnRleHQgKmMgPSBoLT5wcml2X2RhdGE7Cj4gKyAgICByZXR1cm4gZmZ1cmxfc2VlayhjLT5pbm5l ciwgcG9zLCB3aGVuY2UpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGlwZnNfY2xvc2UoVVJMQ29u dGV4dCAqaCkKPiArewo+ICsgICAgSVBGU0dhdGV3YXlDb250ZXh0ICpjID0gaC0+cHJpdl9kYXRh Owo+ICsgICAgYXZfZnJlZShjLT5nYXRld2F5KTsKPiArICAgIHJldHVybiBmZnVybF9jbG9zZXAo JmMtPmlubmVyKTsKPiArfQo+ICsKPiArI2RlZmluZSBPRkZTRVQoeCkgb2Zmc2V0b2YoSVBGU0dh dGV3YXlDb250ZXh0LCB4KQo+ICsKPiArc3RhdGljIGNvbnN0IEFWT3B0aW9uIG9wdGlvbnNbXSA9 IHsKPiArICAgIHsiZ2F0ZXdheSIsICJUaGUgZ2F0ZXdheSB0byBhc2sgZm9yIElQRlMgZGF0YS4i LCBPRkZTRVQoZ2F0ZXdheSksCj4gQVZfT1BUX1RZUEVfU1RSSU5HLCB7LnN0ciA9IE5VTEx9LCAw LCAwLCBBVl9PUFRfRkxBR19ERUNPRElOR19QQVJBTX0sCj4gKyAgICB7TlVMTH0sCj4gK307Cj4g Kwo+ICtzdGF0aWMgY29uc3QgQVZDbGFzcyBpcGZzX2NvbnRleHRfY2xhc3MgPSB7Cj4gKyAgICAu Y2xhc3NfbmFtZSAgID0gIklQRlMiLAo+ICsgICAgLml0ZW1fbmFtZSAgICA9IGF2X2RlZmF1bHRf aXRlbV9uYW1lLAo+ICsgICAgLm9wdGlvbiAgICAgICA9IG9wdGlvbnMsCj4gKyAgICAudmVyc2lv biAgICAgID0gTElCQVZVVElMX1ZFUlNJT05fSU5ULAo+ICt9Owo+ICsKPiArY29uc3QgVVJMUHJv dG9jb2wgZmZfaXBmc19wcm90b2NvbCA9IHsKPiArICAgIC5uYW1lICAgICAgICAgICAgID0gImlw ZnMiLAo+ICsgICAgLnVybF9vcGVuMiAgICAgICAgPSB0cmFuc2xhdGVfaXBmc190b19odHRwLAo+ ICsgICAgLnVybF9yZWFkICAgICAgICAgPSBpcGZzX3JlYWQsCj4gKyAgICAudXJsX3NlZWsgICAg ICAgICA9IGlwZnNfc2VlaywKPiArICAgIC51cmxfY2xvc2UgICAgICAgID0gaXBmc19jbG9zZSwK PiArICAgIC5wcml2X2RhdGFfc2l6ZSAgID0gc2l6ZW9mKElQRlNHYXRld2F5Q29udGV4dCksCj4g KyAgICAucHJpdl9kYXRhX2NsYXNzICA9ICZpcGZzX2NvbnRleHRfY2xhc3MsCj4gK307Cj4gKwo+ ICtjb25zdCBVUkxQcm90b2NvbCBmZl9pcG5zX3Byb3RvY29sID0gewo+ICsgICAgLm5hbWUgICAg ICAgICAgICAgPSAiaXBucyIsCj4gKyAgICAudXJsX29wZW4yICAgICAgICA9IHRyYW5zbGF0ZV9p cGZzX3RvX2h0dHAsCj4gKyAgICAudXJsX3JlYWQgICAgICAgICA9IGlwZnNfcmVhZCwKPiArICAg IC51cmxfc2VlayAgICAgICAgID0gaXBmc19zZWVrLAo+ICsgICAgLnVybF9jbG9zZSAgICAgICAg PSBpcGZzX2Nsb3NlLAo+ICsgICAgLnByaXZfZGF0YV9zaXplICAgPSBzaXplb2YoSVBGU0dhdGV3 YXlDb250ZXh0KSwKPiArICAgIC5wcml2X2RhdGFfY2xhc3MgID0gJmlwZnNfY29udGV4dF9jbGFz cywKPiArfTsKPiBkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvcHJvdG9jb2xzLmMgYi9saWJhdmZv cm1hdC9wcm90b2NvbHMuYwo+IGluZGV4IDk0OGZhZTQxMWYuLjY3NWI2ODRiZDMgMTAwNjQ0Cj4g LS0tIGEvbGliYXZmb3JtYXQvcHJvdG9jb2xzLmMKPiArKysgYi9saWJhdmZvcm1hdC9wcm90b2Nv bHMuYwo+IEBAIC03Myw2ICs3Myw4IEBAIGV4dGVybiBjb25zdCBVUkxQcm90b2NvbCBmZl9saWJz cnRfcHJvdG9jb2w7Cj4gIGV4dGVybiBjb25zdCBVUkxQcm90b2NvbCBmZl9saWJzc2hfcHJvdG9j b2w7Cj4gIGV4dGVybiBjb25zdCBVUkxQcm90b2NvbCBmZl9saWJzbWJjbGllbnRfcHJvdG9jb2w7 Cj4gIGV4dGVybiBjb25zdCBVUkxQcm90b2NvbCBmZl9saWJ6bXFfcHJvdG9jb2w7Cj4gK2V4dGVy biBjb25zdCBVUkxQcm90b2NvbCBmZl9pcGZzX3Byb3RvY29sOwo+ICtleHRlcm4gY29uc3QgVVJM UHJvdG9jb2wgZmZfaXBuc19wcm90b2NvbDsKPgo+ICAjaW5jbHVkZSAibGliYXZmb3JtYXQvcHJv dG9jb2xfbGlzdC5jIgo+Cj4gLS0KPiAyLjM1LjEKPgo+Cl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVn LWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZt cGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZt cGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K