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 BABE64B549 for ; Fri, 7 Jun 2024 22:07:56 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DCBF368D82E; Sat, 8 Jun 2024 01:07:53 +0300 (EEST) Received: from mail-vs1-f43.google.com (mail-vs1-f43.google.com [209.85.217.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3B5D868D82E for ; Sat, 8 Jun 2024 01:07:47 +0300 (EEST) Received: by mail-vs1-f43.google.com with SMTP id ada2fe7eead31-48bc3314cddso949361137.1 for ; Fri, 07 Jun 2024 15:07:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717798065; x=1718402865; darn=ffmpeg.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Nr1FAd5YCfQgPcE8CkRBYvzBREps2IX7N8zbJQOo2sM=; b=gRlTvou9G/P/gdb9GVgJ6v75077LKUVEeJ6qnUOJeBO4tYoQYvGuv+VdBcET7KfrFS XLBZSESs15rhVK6G3zmI+UtCvDD+er8jpdkeYeqHWafEF2ZWndj2w1Gnb4v+ygdoGFaR fFT36JIqOwVHf42N2ZVsKAMyTz7mSK/42vUqXOr8pLhZZTUhY7bZFmZJTGfvhooD/XMl ik1kQ2cK7jjZhirApY6kzYQ1J4i8UMFSGKvxr9V5KdJZklplSRCi6FZd94P38Krxe21E qhsDW02Ki/TJhFgXf2mp6wMbUphVrotDovY/BzH3ZrfKFUbQhwYLAdtWbmY+uyii1oJ+ ZZjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717798065; x=1718402865; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Nr1FAd5YCfQgPcE8CkRBYvzBREps2IX7N8zbJQOo2sM=; b=i4dtcgqUBPzIoEjpP6JMZOUZtCIvRw3leK6WvNEzICMKpudRFBgbzXi1qaWtPFiSc4 JEjVBVSQd4soIbRlsp1OzPXXxN+y58e4JsrA550Kb68OrdWjdTa52fKDr61iUSPu8EWy 9nGzgyynG3Puu+ya2QvURWd1xl6z4ZmtZoAPEJCLtEi5tZlRghi9bSqJ3t46bhN++iLS JzGDvJ3QxvyUQPdWgalmSU/jNjOgXt1mmQWOd4pGJ89XjJkxoKYJowq18ngN/ePW7QQr DxT7+R2ZXdgyqSpgLMMlj28eC0YyyEKFLaGajvPCiQXJ5lGbfKPPKhP0gZRVVv5jBSHO 29LA== X-Gm-Message-State: AOJu0YzC68KrFfaWWzSVqoYC8YuYF6EME5LRmPXYX6zLZyR+mehIHBvP JUgcxYRwofv7a6KGwuSSMLqwnLEUjSNPiu4YoQVUnVGp/aRwSPwVDuo8y6+g6mjWXc04MMC3vvG otsPxzeg1sNJ6KDwUKcOh9ppJwULq0Q== X-Google-Smtp-Source: AGHT+IG619UtCeraR5PJiIcO3T64ADUz9ADSeQxRDtr+21MDMVlC857dwk+/M8eHDTaF/Rz6S2FFIB88IT3hDkvdGt4= X-Received: by 2002:a05:6102:824:b0:48c:224:d36b with SMTP id ada2fe7eead31-48c277e4a2bmr3644512137.31.1717798065192; Fri, 07 Jun 2024 15:07:45 -0700 (PDT) MIME-Version: 1.0 References: <20240607174718.18539-1-marcus@marcusspencer.xyz> In-Reply-To: From: Paul B Mahol Date: Sat, 8 Jun 2024 00:07:30 +0200 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH v10] avcodec: add farbfeld encoder, decoder and demuxer 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: Lynne 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: T24gRnJpLCBKdW4gNywgMjAyNCBhdCAxMDo1OeKAr1BNIEx5bm5lIHZpYSBmZm1wZWctZGV2ZWwg PApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZz4gd3JvdGU6Cgo+IE9uIDA3LzA2LzIwMjQgMjI6MjIs IFBhdWwgQiBNYWhvbCB3cm90ZToKPiA+IE9uIEZyaSwgSnVuIDcsIDIwMjQgYXQgODoxMuKAr1BN IEx5bm5lIHZpYSBmZm1wZWctZGV2ZWwgPAo+ID4gZmZtcGVnLWRldmVsQGZmbXBlZy5vcmc+IHdy b3RlOgo+ID4KPiA+PiBPbiAwNy8wNi8yMDI0IDE5OjQ3LCBNYXJjdXMgQiBTcGVuY2VyIHdyb3Rl Ogo+ID4+PiBmYXJiZmVsZCBpcyBhbiB1bmNvbXByZXNzZWQgaW1hZ2UgZm9ybWF0IHRoYXQgaXMg YSBwYXJ0IG9mIHN1Y2tsZXNzCj4gPj4+IHRvb2xzIChodHRwczovL3Rvb2xzLnN1Y2tsZXNzLm9y ZykuCj4gPj4+Cj4gPj4+IEl0cyBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZSBhdCBodHRwczov L3Rvb2xzLnN1Y2tsZXNzLm9yZy9mYXJiZmVsZC4KPiA+Pj4KPiA+Pj4gQWRkIHN1cHBvcnQgZm9y IHRoaXMgaW1hZ2UgZm9ybWF0IGluIGF2Y29kZWMgYW5kIGF2Zm9ybWF0LCBhbmQgdXBkYXRlCj4g Pj4gdGhlIGltYWdlMgo+ID4+PiBmb3JtYXQgYWNjb3JkaW5nbHkuCj4gPj4+Cj4gPj4+IFNpZ25l ZC1vZmYtYnk6IE1hcmN1cyBCIFNwZW5jZXIgPG1hcmN1c0BtYXJjdXNzcGVuY2VyLnh5ej4KPiA+ Pj4gLS0tCj4gPj4+ICAgIENoYW5nZWxvZyAgICAgICAgICAgICAgICAgfCAgMSArCj4gPj4+ICAg IGRvYy9nZW5lcmFsX2NvbnRlbnRzLnRleGkgfCAgMiArCj4gPj4+ICAgIGxpYmF2Y29kZWMvTWFr ZWZpbGUgICAgICAgfCAgMiArCj4gPj4+ICAgIGxpYmF2Y29kZWMvYWxsY29kZWNzLmMgICAgfCAg MiArCj4gPj4+ICAgIGxpYmF2Y29kZWMvY29kZWNfZGVzYy5jICAgfCAgNyArKysKPiA+Pj4gICAg bGliYXZjb2RlYy9jb2RlY19pZC5oICAgICB8ICAxICsKPiA+Pj4gICAgbGliYXZjb2RlYy9mYXJi ZmVsZGRlYy5jICB8IDgyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4+PiAg ICBsaWJhdmNvZGVjL2ZhcmJmZWxkZW5jLmMgIHwgOTYKPiArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKPiA+Pj4gICAgbGliYXZjb2RlYy92ZXJzaW9uLmggICAgICB8ICA0 ICstCj4gPj4+ICAgIGxpYmF2Zm9ybWF0L01ha2VmaWxlICAgICAgfCAgMSArCj4gPj4+ICAgIGxp YmF2Zm9ybWF0L2FsbGZvcm1hdHMuYyAgfCAgMSArCj4gPj4+ICAgIGxpYmF2Zm9ybWF0L2ltZzIu YyAgICAgICAgfCAgMSArCj4gPj4+ICAgIGxpYmF2Zm9ybWF0L2ltZzJkZWMuYyAgICAgfCAxNiAr KysrKysrCj4gPj4+ICAgIGxpYmF2Zm9ybWF0L2ltZzJlbmMuYyAgICAgfCAgMiArLQo+ID4+PiAg ICBsaWJhdmZvcm1hdC92ZXJzaW9uLmggICAgIHwgIDQgKy0KPiA+Pj4gICAgMTUgZmlsZXMgY2hh bmdlZCwgMjE3IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCj4gPj4+ICAgIGNyZWF0ZSBt b2RlIDEwMDY0NCBsaWJhdmNvZGVjL2ZhcmJmZWxkZGVjLmMKPiA+Pj4gICAgY3JlYXRlIG1vZGUg MTAwNjQ0IGxpYmF2Y29kZWMvZmFyYmZlbGRlbmMuYwo+ID4+Pgo+ID4+PiBkaWZmIC0tZ2l0IGEv Q2hhbmdlbG9nIGIvQ2hhbmdlbG9nCj4gPj4+IGluZGV4IDAzZDZiMjlhZDguLjEwMmM3MThmZmMg MTAwNjQ0Cj4gPj4+IC0tLSBhL0NoYW5nZWxvZwo+ID4+PiArKysgYi9DaGFuZ2Vsb2cKPiA+Pj4g QEAgLTEyLDYgKzEyLDcgQEAgdmVyc2lvbiA8bmV4dD46Cj4gPj4+ICAgIC0gcXN2X3BhcmFtcyBv cHRpb24gYWRkZWQgZm9yIFFTViBlbmNvZGVycwo+ID4+PiAgICAtIFZWQyBkZWNvZGVyIGNvbXBh dGlibGUgd2l0aCBEVkIgdGVzdCBjb250ZW50Cj4gPj4+ICAgIC0geEhFLUFBQyBkZWNvZGVyCj4g Pj4+ICstIGZhcmJmZWxkIGVuY29kZXIsIGRlY29kZXIgYW5kIGRlbXV4ZXIKPiA+Pj4KPiA+Pj4K PiA+Pj4gICAgdmVyc2lvbiA3LjA6Cj4gPj4+IGRpZmYgLS1naXQgYS9kb2MvZ2VuZXJhbF9jb250 ZW50cy50ZXhpIGIvZG9jL2dlbmVyYWxfY29udGVudHMudGV4aQo+ID4+PiBpbmRleCBlN2NmNGY4 MjM5Li5mYWIzMDYxMGE0IDEwMDY0NAo+ID4+PiAtLS0gYS9kb2MvZ2VuZXJhbF9jb250ZW50cy50 ZXhpCj4gPj4+ICsrKyBiL2RvYy9nZW5lcmFsX2NvbnRlbnRzLnRleGkKPiA+Pj4gQEAgLTg1Myw2 ICs4NTMsOCBAQCBmb2xsb3dpbmcgaW1hZ2UgZm9ybWF0cyBhcmUgc3VwcG9ydGVkOgo+ID4+PiAg ICAgICAgQHRhYiBYIFBpeE1hcCBpbWFnZSBmb3JtYXQKPiA+Pj4gICAgQGl0ZW0gWFdEICBAdGFi IFggQHRhYiBYCj4gPj4+ICAgICAgICBAdGFiIFggV2luZG93IER1bXAgaW1hZ2UgZm9ybWF0Cj4g Pj4+ICtAaXRlbSBGRiAgICAgICAgICAgQHRhYiBYIEB0YWIgWAo+ID4+PiArICAgIEB0YWIgZmFy YmZlbGQgdW5jb21wcmVzc2VkIGltYWdlIGZvcm1hdAo+ID4+PiAgICBAZW5kIG11bHRpdGFibGUK PiA+Pj4KPiA+Pj4gICAgQGNvZGV7WH0gbWVhbnMgdGhhdCB0aGUgZmVhdHVyZSBpbiB0aGF0IGNv bHVtbiAoZW5jb2RpbmcgLyBkZWNvZGluZykKPiA+PiBpcyBzdXBwb3J0ZWQuCj4gPj4+IGRpZmYg LS1naXQgYS9saWJhdmNvZGVjL01ha2VmaWxlIGIvbGliYXZjb2RlYy9NYWtlZmlsZQo+ID4+PiBp bmRleCA4YWI0Mzk4YjZjLi4wOGEzZDM5YWYwIDEwMDY0NAo+ID4+PiAtLS0gYS9saWJhdmNvZGVj L01ha2VmaWxlCj4gPj4+ICsrKyBiL2xpYmF2Y29kZWMvTWFrZWZpbGUKPiA+Pj4gQEAgLTM1Niw2 ICszNTYsOCBAQCBPQkpTLSQoQ09ORklHX0VTQ0FQRTEzMF9ERUNPREVSKSAgICAgICArPQo+IGVz Y2FwZTEzMC5vCj4gPj4+ICAgIE9CSlMtJChDT05GSUdfRVZSQ19ERUNPREVSKSAgICAgICAgICAg ICs9IGV2cmNkZWMubyBhY2VscF92ZWN0b3JzLm8KPiA+PiBsc3Aubwo+ID4+PiAgICBPQkpTLSQo Q09ORklHX0VYUl9ERUNPREVSKSAgICAgICAgICAgICArPSBleHIubyBleHJkc3Aubwo+IGhhbGYy ZmxvYXQubwo+ID4+PiAgICBPQkpTLSQoQ09ORklHX0VYUl9FTkNPREVSKSAgICAgICAgICAgICAr PSBleHJlbmMubyBmbG9hdDJoYWxmLm8KPiA+Pj4gK09CSlMtJChDT05GSUdfRkFSQkZFTERfREVD T0RFUikgICAgICAgICs9IGZhcmJmZWxkZGVjLm8KPiA+Pj4gK09CSlMtJChDT05GSUdfRkFSQkZF TERfRU5DT0RFUikgICAgICAgICs9IGZhcmJmZWxkZW5jLm8KPiA+Pj4gICAgT0JKUy0kKENPTkZJ R19GQVNUQVVESU9fREVDT0RFUikgICAgICAgKz0gZmFzdGF1ZGlvLm8KPiA+Pj4gICAgT0JKUy0k KENPTkZJR19GRlYxX0RFQ09ERVIpICAgICAgICAgICAgKz0gZmZ2MWRlYy5vIGZmdjEubwo+ID4+ PiAgICBPQkpTLSQoQ09ORklHX0ZGVjFfRU5DT0RFUikgICAgICAgICAgICArPSBmZnYxZW5jLm8g ZmZ2MS5vCj4gPj4+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2FsbGNvZGVjcy5jIGIvbGliYXZj b2RlYy9hbGxjb2RlY3MuYwo+ID4+PiBpbmRleCBiMTAyYTgwNjllLi45ZjllZGE4ZWM2IDEwMDY0 NAo+ID4+PiAtLS0gYS9saWJhdmNvZGVjL2FsbGNvZGVjcy5jCj4gPj4+ICsrKyBiL2xpYmF2Y29k ZWMvYWxsY29kZWNzLmMKPiA+Pj4gQEAgLTExNSw2ICsxMTUsOCBAQCBleHRlcm4gY29uc3QgRkZD b2RlYyBmZl9lc2NhcGUxMjRfZGVjb2RlcjsKPiA+Pj4gICAgZXh0ZXJuIGNvbnN0IEZGQ29kZWMg ZmZfZXNjYXBlMTMwX2RlY29kZXI7Cj4gPj4+ICAgIGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX2V4 cl9lbmNvZGVyOwo+ID4+PiAgICBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9leHJfZGVjb2RlcjsK PiA+Pj4gK2V4dGVybiBjb25zdCBGRkNvZGVjIGZmX2ZhcmJmZWxkX2RlY29kZXI7Cj4gPj4+ICtl eHRlcm4gY29uc3QgRkZDb2RlYyBmZl9mYXJiZmVsZF9lbmNvZGVyOwo+ID4+PiAgICBleHRlcm4g Y29uc3QgRkZDb2RlYyBmZl9mZnYxX2VuY29kZXI7Cj4gPj4+ICAgIGV4dGVybiBjb25zdCBGRkNv ZGVjIGZmX2ZmdjFfZGVjb2RlcjsKPiA+Pj4gICAgZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfZmZ2 aHVmZl9lbmNvZGVyOwo+ID4+PiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9jb2RlY19kZXNjLmMg Yi9saWJhdmNvZGVjL2NvZGVjX2Rlc2MuYwo+ID4+PiBpbmRleCBhMjhlZjY4MDYxLi4zM2RiZDJj ZTk0IDEwMDY0NAo+ID4+PiAtLS0gYS9saWJhdmNvZGVjL2NvZGVjX2Rlc2MuYwo+ID4+PiArKysg Yi9saWJhdmNvZGVjL2NvZGVjX2Rlc2MuYwo+ID4+PiBAQCAtMTk1OSw2ICsxOTU5LDEzIEBAIHN0 YXRpYyBjb25zdCBBVkNvZGVjRGVzY3JpcHRvcgo+ID4+IGNvZGVjX2Rlc2NyaXB0b3JzW10gPSB7 Cj4gPj4+ICAgICAgICAgICAgLmxvbmdfbmFtZSA9IE5VTExfSUZfQ09ORklHX1NNQUxMKCJMRUFE IE1DTVAiKSwKPiA+Pj4gICAgICAgICAgICAucHJvcHMgICAgID0gQVZfQ09ERUNfUFJPUF9JTlRS QV9PTkxZIHwgQVZfQ09ERUNfUFJPUF9MT1NTWSwKPiA+Pj4gICAgICAgIH0sCj4gPj4+ICsgICAg ewo+ID4+PiArICAgICAgICAuaWQgICAgICAgID0gQVZfQ09ERUNfSURfRkFSQkZFTEQsCj4gPj4+ ICsgICAgICAgIC50eXBlICAgICAgPSBBVk1FRElBX1RZUEVfVklERU8sCj4gPj4+ICsgICAgICAg IC5uYW1lICAgICAgPSAiZmFyYmZlbGQiLAo+ID4+PiArICAgICAgICAubG9uZ19uYW1lID0gTlVM TF9JRl9DT05GSUdfU01BTEwoImZhcmJmZWxkIHVuY29tcHJlc3NlZAo+ID4+IGltYWdlIiksCj4g Pj4+ICsgICAgICAgIC5wcm9wcyAgICAgPSBBVl9DT0RFQ19QUk9QX0lOVFJBX09OTFkgfAo+IEFW X0NPREVDX1BST1BfTE9TU0xFU1MsCj4gPj4+ICsgICAgfSwKPiA+Pj4KPiA+Pj4gICAgICAgIC8q IHZhcmlvdXMgUENNICJjb2RlY3MiICovCj4gPj4+ICAgICAgICB7Cj4gPj4+IGRpZmYgLS1naXQg YS9saWJhdmNvZGVjL2NvZGVjX2lkLmggYi9saWJhdmNvZGVjL2NvZGVjX2lkLmgKPiA+Pj4gaW5k ZXggMGFiMWUzNGE2MS4uZDRiMGQyM2Y3ZSAxMDA2NDQKPiA+Pj4gLS0tIGEvbGliYXZjb2RlYy9j b2RlY19pZC5oCj4gPj4+ICsrKyBiL2xpYmF2Y29kZWMvY29kZWNfaWQuaAo+ID4+PiBAQCAtMzIy LDYgKzMyMiw3IEBAIGVudW0gQVZDb2RlY0lEIHsKPiA+Pj4gICAgICAgIEFWX0NPREVDX0lEX1JU VjEsCj4gPj4+ICAgICAgICBBVl9DT0RFQ19JRF9WTUlYLAo+ID4+PiAgICAgICAgQVZfQ09ERUNf SURfTEVBRCwKPiA+Pj4gKyAgICBBVl9DT0RFQ19JRF9GQVJCRkVMRCwKPiA+Pj4KPiA+Pj4gICAg ICAgIC8qIHZhcmlvdXMgUENNICJjb2RlY3MiICovCj4gPj4+ICAgICAgICBBVl9DT0RFQ19JRF9G SVJTVF9BVURJTyA9IDB4MTAwMDAsICAgICAvLy88IEEgZHVtbXkgaWQgcG9pbnRpbmcKPiBhdAo+ ID4+IHRoZSBzdGFydCBvZiBhdWRpbyBjb2RlY3MKPiA+Pj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29k ZWMvZmFyYmZlbGRkZWMuYyBiL2xpYmF2Y29kZWMvZmFyYmZlbGRkZWMuYwo+ID4+PiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+ID4+PiBpbmRleCAwMDAwMDAwMDAwLi5iNTY3MjcyMjVjCj4gPj4+IC0t LSAvZGV2L251bGwKPiA+Pj4gKysrIGIvbGliYXZjb2RlYy9mYXJiZmVsZGRlYy5jCj4gPj4+IEBA IC0wLDAgKzEsODIgQEAKPiA+Pj4gKy8qCj4gPj4+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjQgTWFy Y3VzIEIgU3BlbmNlciA8bWFyY3VzQG1hcmN1c3NwZW5jZXIueHl6Pgo+ID4+PiArICoKPiA+Pj4g KyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkg cGVyc29uCj4gPj4gb2J0YWluaW5nIGEgY29weQo+ID4+PiArICogb2YgdGhpcyBzb2Z0d2FyZSBh bmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKPiA+PiDigJxTb2Z0d2FyZeKA nSksIHRvCj4gPj4+ICsgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u LCBpbmNsdWRpbmcgd2l0aG91dAo+ID4+IGxpbWl0YXRpb24gdGhlCj4gPj4+ICsgKiByaWdodHMg dG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLAo+IHN1Ymxp Y2Vuc2UsCj4gPj4gYW5kL29yCj4gPj4+ICsgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUs IGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ID4+IFNvZnR3YXJlIGlzCj4gPj4+ ICsgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp b25zOgo+ID4+PiArICoKPiA+Pj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0 aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCj4gPj4gaW5jbHVkZWQgaW4KPiA+Pj4gKyAq IGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgo+ID4+ PiArICoKPiA+Pj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCDigJxBUyBJU+KAnSwgV0lU SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKPiA+PiBFWFBSRVNTIE9SCj4gPj4+ICsgKiBJTVBM SUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCj4gPj4g TUVSQ0hBTlRBQklMSVRZLAo+ID4+PiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQKPiA+PiBTSEFMTCBUSEUKPiA+Pj4g KyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s IERBTUFHRVMgT1IKPiA+PiBPVEhFUgo+ID4+PiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFO IEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCj4gPj4gQVJJU0lORwo+ID4+ PiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFIFVTRSBPUiBPVEhFUgo+ID4+IERFQUxJTkdTCj4gPj4+ICsgKiBJTiBUSEUgU09GVFdBUkUu Cj4gPj4+ICsgKi8KPiA+Pj4gKwo+ID4+PiArI2luY2x1ZGUgImF2Y29kZWMuaCIKPiA+Pj4gKyNp bmNsdWRlICJieXRlc3RyZWFtLmgiCj4gPj4+ICsjaW5jbHVkZSAiY29kZWNfaW50ZXJuYWwuaCIK PiA+Pj4gKyNpbmNsdWRlICJkZWNvZGUuaCIKPiA+Pj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvaW1n dXRpbHMuaCIKPiA+Pj4gKyNpbmNsdWRlICJ0aHJlYWQuaCIKPiA+Pj4gKwo+ID4+PiArc3RhdGlj IGludCBmYXJiZmVsZF9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmN0eCwgQVZGcmFtZSAq cCwKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqZ290X2ZyYW1l LCBBVlBhY2tldCAqcGt0KQo+ID4+PiArewo+ID4+PiArICAgIGludCB3aWR0aCwgaGVpZ2h0Owo+ ID4+PiArICAgIEdldEJ5dGVDb250ZXh0IGc7Cj4gPj4+ICsgICAgaW50IHJldDsKPiA+Pj4gKwo+ ID4+PiArICAgIGJ5dGVzdHJlYW0yX2luaXQoJmcsIHBrdC0+ZGF0YSwgcGt0LT5zaXplKTsKPiA+ Pj4gKyAgICBieXRlc3RyZWFtMl9za2lwKCZnLCA4KTsKPiA+Pj4gKwo+ID4+PiArICAgIHdpZHRo ICA9IGJ5dGVzdHJlYW0yX2dldF9iZTMyKCZnKTsKPiA+Pj4gKyAgICBoZWlnaHQgPSBieXRlc3Ry ZWFtMl9nZXRfYmUzMigmZyk7Cj4gPj4+ICsKPiA+Pj4gKyAgICBpZiAoKHJldCA9IGZmX3NldF9k aW1lbnNpb25zKGN0eCwgd2lkdGgsIGhlaWdodCkpIDwgMCkKPiA+Pj4gKyAgICAgICAgcmV0dXJu IHJldDsKPiA+Pj4gKwo+ID4+PiArICAgIGN0eC0+cGl4X2ZtdCA9IEFWX1BJWF9GTVRfUkdCQTY0 QkU7Cj4gPj4+ICsKPiA+Pj4gKyAgICBpZiAoY3R4LT5za2lwX2ZyYW1lID49IEFWRElTQ0FSRF9B TEwpCj4gPj4+ICsgICAgICAgIHJldHVybiBwa3QtPnNpemU7Cj4gPj4+ICsKPiA+Pj4gKyAgICBp ZiAoKHJldCA9IGZmX3RocmVhZF9nZXRfYnVmZmVyKGN0eCwgcCwgMCkpIDwgMCkKPiA+Pj4gKyAg ICAgICAgcmV0dXJuIHJldDsKPiA+Pj4gKwo+ID4+PiArICAgIGlmICgocmV0ID0gYXZfaW1hZ2Vf Z2V0X2J1ZmZlcl9zaXplKGN0eC0+cGl4X2ZtdCwgd2lkdGgsIGhlaWdodCwKPiA+PiAxKSkgPCAw KQo+ID4+PiArICAgICAgICByZXR1cm4gcmV0Owo+ID4+PiArCj4gPj4+ICsgICAgaWYgKGJ5dGVz dHJlYW0yX2dldF9ieXRlc19sZWZ0KCZnKSA8IHJldCkKPiA+Pj4gKyAgICAgICAgcmV0dXJuIEFW RVJST1JfSU5WQUxJRERBVEE7Cj4gPj4+ICsKPiA+Pj4gKyAgICBhdl9pbWFnZV9maWxsX2FycmF5 cygKPiA+Pj4gKyAgICAgICAgcC0+ZGF0YSwKPiA+Pj4gKyAgICAgICAgcC0+bGluZXNpemUsCj4g Pj4+ICsgICAgICAgIGcuYnVmZmVyLAo+ID4+PiArICAgICAgICBjdHgtPnBpeF9mbXQsCj4gPj4+ ICsgICAgICAgIHdpZHRoLAo+ID4+PiArICAgICAgICBoZWlnaHQsCj4gPj4+ICsgICAgICAgIDEK PiA+Pj4gKyAgICApOwo+ID4+PiArCj4gPj4+ICsgICAgKmdvdF9mcmFtZSA9IDE7Cj4gPj4+ICsK PiA+Pj4gKyAgICByZXR1cm4gcGt0LT5zaXplOwo+ID4+PiArfQo+ID4+PiArCj4gPj4+ICtjb25z dCBGRkNvZGVjIGZmX2ZhcmJmZWxkX2RlY29kZXIgPSB7Cj4gPj4+ICsgICAgLnAubmFtZSAgICAg ICAgID0gImZhcmJmZWxkIiwKPiA+Pj4gKyAgICBDT0RFQ19MT05HX05BTUUoImZhcmJmZWxkIHVu Y29tcHJlc3NlZCBpbWFnZSIpLAo+ID4+PiArICAgIC5wLnR5cGUgICAgICAgICA9IEFWTUVESUFf VFlQRV9WSURFTywKPiA+Pj4gKyAgICAucC5pZCAgICAgICAgICAgPSBBVl9DT0RFQ19JRF9GQVJC RkVMRCwKPiA+Pj4gKyAgICAucC5jYXBhYmlsaXRpZXMgPSBBVl9DT0RFQ19DQVBfRFIxIHwgQVZf Q09ERUNfQ0FQX0ZSQU1FX1RIUkVBRFMsCj4gPj4+ICsgICAgRkZfQ09ERUNfREVDT0RFX0NCKGZh cmJmZWxkX2RlY29kZV9mcmFtZSksCj4gPj4+ICt9Owo+ID4+PiBkaWZmIC0tZ2l0IGEvbGliYXZj b2RlYy9mYXJiZmVsZGVuYy5jIGIvbGliYXZjb2RlYy9mYXJiZmVsZGVuYy5jCj4gPj4+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0Cj4gPj4+IGluZGV4IDAwMDAwMDAwMDAuLjI4MDEzMjQ4NTIKPiA+Pj4g LS0tIC9kZXYvbnVsbAo+ID4+PiArKysgYi9saWJhdmNvZGVjL2ZhcmJmZWxkZW5jLmMKPiA+Pj4g QEAgLTAsMCArMSw5NiBAQAo+ID4+PiArLyoKPiA+Pj4gKyAqIENvcHlyaWdodCAoYykgMjAyNCBN YXJjdXMgQiBTcGVuY2VyIDxtYXJjdXNAbWFyY3Vzc3BlbmNlci54eXo+Cj4gPj4+ICsgKgo+ID4+ PiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu eSBwZXJzb24KPiA+PiBvYnRhaW5pbmcgYSBjb3B5Cj4gPj4+ICsgKiBvZiB0aGlzIHNvZnR3YXJl IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQo+ID4+IOKAnFNvZnR3YXJl 4oCdKSwgdG8KPiA+Pj4gKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp b24sIGluY2x1ZGluZyB3aXRob3V0Cj4gPj4gbGltaXRhdGlvbiB0aGUKPiA+Pj4gKyAqIHJpZ2h0 cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsCj4gc3Vi bGljZW5zZSwKPiA+PiBhbmQvb3IKPiA+Pj4gKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2Fy ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gPj4gU29mdHdhcmUgaXMKPiA+ Pj4gKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnM6Cj4gPj4+ICsgKgo+ID4+PiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5k IHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKPiA+PiBpbmNsdWRlZCBpbgo+ID4+PiAr ICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCj4g Pj4+ICsgKgo+ID4+PiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIOKAnEFTIElT4oCdLCBX SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAo+ID4+IEVYUFJFU1MgT1IKPiA+Pj4gKyAqIElN UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKPiA+ PiBNRVJDSEFOVEFCSUxJVFksCj4gPj4+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVAo+ID4+IFNIQUxMIFRIRQo+ID4+ PiArICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJ TSwgREFNQUdFUyBPUgo+ID4+IE9USEVSCj4gPj4+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g QU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKPiA+PiBBUklTSU5HCj4g Pj4+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP UiBUSEUgVVNFIE9SIE9USEVSCj4gPj4gREVBTElOR1MKPiA+Pj4gKyAqIElOIFRIRSBTT0ZUV0FS RS4KPiA+Pj4gKyAqLwo+ID4+PiArCj4gPj4+ICsjaW5jbHVkZSAiYXZjb2RlYy5oIgo+ID4+PiAr I2luY2x1ZGUgImJ5dGVzdHJlYW0uaCIKPiA+Pj4gKyNpbmNsdWRlICJjb2RlY19pbnRlcm5hbC5o Igo+ID4+PiArI2luY2x1ZGUgImVuY29kZS5oIgo+ID4+PiArI2luY2x1ZGUgImxpYmF2dXRpbC9p bWd1dGlscy5oIgo+ID4+PiArCj4gPj4+ICsjZGVmaW5lIEhFQURFUl9TSVpFIDE2Cj4gPj4+ICsj ZGVmaW5lIFBMQU5FX0NPVU5UIDQgLy8gcmVxdWlyZWQgYnkgYXZfaW1hZ2VfY29weV90b19idWZm ZXIKPiA+Pj4gKwo+ID4+PiArc3RhdGljIGludCBmYXJiZmVsZF9lbmNvZGVfZnJhbWUoQVZDb2Rl Y0NvbnRleHQgKmN0eCwgQVZQYWNrZXQgKnBrdCwKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IEFWRnJhbWUgKnAsIGludCAqZ290X3BhY2tldCkKPiA+Pj4gK3sK PiA+Pj4gKyAgICBpbnQgcmF3X2ltZ19zaXplID0gYXZfaW1hZ2VfZ2V0X2J1ZmZlcl9zaXplKAo+ ID4+PiArICAgICAgICBwLT5mb3JtYXQsCj4gPj4+ICsgICAgICAgIHAtPndpZHRoLAo+ID4+PiAr ICAgICAgICBwLT5oZWlnaHQsCj4gPj4+ICsgICAgICAgIDEKPiA+Pj4gKyAgICApOwo+ID4+PiAr ICAgIGNvbnN0IHVpbnQ4X3QgKnBsYW5lc1s0XTsKPiA+Pj4gKyAgICBpbnQ2NF90IGJ1Zl9zaXpl Owo+ID4+PiArICAgIHVpbnQ4X3QgKmJ1ZjsKPiA+Pj4gKyAgICBpbnQgcmV0Owo+ID4+PiArCj4g Pj4+ICsgICAgaWYgKHJhd19pbWdfc2l6ZSA8IDApCj4gPj4+ICsgICAgICAgIHJldHVybiByYXdf aW1nX3NpemU7Cj4gPj4+ICsKPiA+Pj4gKyNpZiBJTlRfTUFYID4gSU5UNjRfTUFYIC0gSEVBREVS X1NJWkUKPiA+Pj4gKyAgICBpZiAocmF3X2ltZ19zaXplID4gSU5UNjRfTUFYIC0gSEVBREVSX1NJ WkUpCj4gPj4+ICsgICAgICAgIHJldHVybiBBVkVSUk9SKEVSQU5HRSk7Cj4gPj4+ICsjZW5kaWYK PiA+Pj4gKwo+ID4+PiArICAgIGJ1Zl9zaXplID0gKGludDY0X3QpcmF3X2ltZ19zaXplICsgSEVB REVSX1NJWkU7Cj4gPj4+ICsKPiA+Pj4gKyAgICBpZiAoKHJldCA9IGZmX2dldF9lbmNvZGVfYnVm ZmVyKGN0eCwgcGt0LCBidWZfc2l6ZSwgMCkpIDwgMCkKPiA+Pj4gKyAgICAgICAgcmV0dXJuIHJl dDsKPiA+Pj4gKwo+ID4+PiArICAgIGJ1ZiA9IHBrdC0+ZGF0YTsKPiA+Pj4gKwo+ID4+PiArICAg IGJ5dGVzdHJlYW1fcHV0X2J1ZmZlcigmYnVmLCAiZmFyYmZlbGQiLCA4KTsKPiA+Pj4gKwo+ID4+ PiArICAgIGJ5dGVzdHJlYW1fcHV0X2JlMzIoJmJ1ZiwgY3R4LT53aWR0aCk7Cj4gPj4+ICsgICAg Ynl0ZXN0cmVhbV9wdXRfYmUzMigmYnVmLCBjdHgtPmhlaWdodCk7Cj4gPj4+ICsKPiA+Pj4gKyAg ICBmb3IgKGludCBpID0gMDsgaSA8IFBMQU5FX0NPVU5UOyArK2kpCj4gPj4+ICsgICAgICAgIHBs YW5lc1tpXSA9IHAtPmRhdGFbaV07Cj4gPj4+ICsKPiA+Pj4gKyAgICBhdl9pbWFnZV9jb3B5X3Rv X2J1ZmZlcigKPiA+Pj4gKyAgICAgICAgYnVmLAo+ID4+PiArICAgICAgICByYXdfaW1nX3NpemUs Cj4gPj4+ICsgICAgICAgIHBsYW5lcywKPiA+Pj4gKyAgICAgICAgcC0+bGluZXNpemUsCj4gPj4+ ICsgICAgICAgIHAtPmZvcm1hdCwKPiA+Pj4gKyAgICAgICAgcC0+d2lkdGgsCj4gPj4+ICsgICAg ICAgIHAtPmhlaWdodCwKPiA+Pj4gKyAgICAgICAgMQo+ID4+PiArICAgICk7Cj4gPj4+ICsKPiA+ Pj4gKyAgICAqZ290X3BhY2tldCA9IDE7Cj4gPj4+ICsKPiA+Pj4gKyAgICByZXR1cm4gMDsKPiA+ Pj4gK30KPiA+Pj4gKwo+ID4+PiArY29uc3QgRkZDb2RlYyBmZl9mYXJiZmVsZF9lbmNvZGVyID0g ewo+ID4+PiArICAgIC5wLm5hbWUgICAgICAgICA9ICJmYXJiZmVsZCIsCj4gPj4+ICsgICAgQ09E RUNfTE9OR19OQU1FKCJmYXJiZmVsZCB1bmNvbXByZXNzZWQgaW1hZ2UiKSwKPiA+Pj4gKyAgICAu cC50eXBlICAgICAgICAgPSBBVk1FRElBX1RZUEVfVklERU8sCj4gPj4+ICsgICAgLnAuaWQgICAg ICAgICAgID0gQVZfQ09ERUNfSURfRkFSQkZFTEQsCj4gPj4+ICsgICAgLnAuY2FwYWJpbGl0aWVz ID0gQVZfQ09ERUNfQ0FQX0RSMSB8IEFWX0NPREVDX0NBUF9GUkFNRV9USFJFQURTLAo+ID4+PiAr ICAgIEZGX0NPREVDX0VOQ09ERV9DQihmYXJiZmVsZF9lbmNvZGVfZnJhbWUpLAo+ID4+PiArICAg IC5wLnBpeF9mbXRzICAgICA9IChjb25zdCBlbnVtIEFWUGl4ZWxGb3JtYXRbXSl7Cj4gPj4+ICsg ICAgICAgIEFWX1BJWF9GTVRfUkdCQTY0QkUsCj4gPj4+ICsgICAgICAgIEFWX1BJWF9GTVRfTk9O RQo+ID4+PiArICAgIH0sCj4gPj4+ICt9Owo+ID4+PiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92 ZXJzaW9uLmggYi9saWJhdmNvZGVjL3ZlcnNpb24uaAo+ID4+PiBpbmRleCAzOWRiZWMwMjA4Li43 YWNiMjYxYmIzIDEwMDY0NAo+ID4+PiAtLS0gYS9saWJhdmNvZGVjL3ZlcnNpb24uaAo+ID4+PiAr KysgYi9saWJhdmNvZGVjL3ZlcnNpb24uaAo+ID4+PiBAQCAtMjksOCArMjksOCBAQAo+ID4+Pgo+ ID4+PiAgICAjaW5jbHVkZSAidmVyc2lvbl9tYWpvci5oIgo+ID4+Pgo+ID4+PiAtI2RlZmluZSBM SUJBVkNPREVDX1ZFUlNJT05fTUlOT1IgICA2Cj4gPj4+IC0jZGVmaW5lIExJQkFWQ09ERUNfVkVS U0lPTl9NSUNSTyAxMDEKPiA+Pj4gKyNkZWZpbmUgTElCQVZDT0RFQ19WRVJTSU9OX01JTk9SICAg Nwo+ID4+PiArI2RlZmluZSBMSUJBVkNPREVDX1ZFUlNJT05fTUlDUk8gMTAwCj4gPj4+Cj4gPj4+ ICAgICNkZWZpbmUgTElCQVZDT0RFQ19WRVJTSU9OX0lOVAo+ID4+IEFWX1ZFUlNJT05fSU5UKExJ QkFWQ09ERUNfVkVSU0lPTl9NQUpPUiwgXAo+ID4+Pgo+ID4+IExJQkFWQ09ERUNfVkVSU0lPTl9N SU5PUiwgXAo+ID4+PiBkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvTWFrZWZpbGUgYi9saWJhdmZv cm1hdC9NYWtlZmlsZQo+ID4+PiBpbmRleCAxYzRkOWRlY2NkLi41ODhhMDk3MTQ5IDEwMDY0NAo+ ID4+PiAtLS0gYS9saWJhdmZvcm1hdC9NYWtlZmlsZQo+ID4+PiArKysgYi9saWJhdmZvcm1hdC9N YWtlZmlsZQo+ID4+PiBAQCAtMjg0LDYgKzI4NCw3IEBAIE9CSlMtJChDT05GSUdfSU1BR0VfQ1JJ X1BJUEVfREVNVVhFUikgICAgICs9Cj4gPj4gaW1nMmRlYy5vIGltZzIubwo+ID4+PiAgICBPQkpT LSQoQ09ORklHX0lNQUdFX0REU19QSVBFX0RFTVVYRVIpICAgICArPSBpbWcyZGVjLm8gaW1nMi5v Cj4gPj4+ICAgIE9CSlMtJChDT05GSUdfSU1BR0VfRFBYX1BJUEVfREVNVVhFUikgICAgICs9IGlt ZzJkZWMubyBpbWcyLm8KPiA+Pj4gICAgT0JKUy0kKENPTkZJR19JTUFHRV9FWFJfUElQRV9ERU1V WEVSKSAgICAgKz0gaW1nMmRlYy5vIGltZzIubwo+ID4+PiArT0JKUy0kKENPTkZJR19JTUFHRV9G QVJCRkVMRF9QSVBFX0RFTVVYRVIpKz0gaW1nMmRlYy5vIGltZzIubwo+ID4+PiAgICBPQkpTLSQo Q09ORklHX0lNQUdFX0dFTV9QSVBFX0RFTVVYRVIpICAgICArPSBpbWcyZGVjLm8gaW1nMi5vCj4g Pj4+ICAgIE9CSlMtJChDT05GSUdfSU1BR0VfR0lGX1BJUEVfREVNVVhFUikgICAgICs9IGltZzJk ZWMubyBpbWcyLm8KPiA+Pj4gICAgT0JKUy0kKENPTkZJR19JTUFHRV9IRFJfUElQRV9ERU1VWEVS KSAgICAgKz0gaW1nMmRlYy5vIGltZzIubwo+ID4+PiBkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQv YWxsZm9ybWF0cy5jIGIvbGliYXZmb3JtYXQvYWxsZm9ybWF0cy5jCj4gPj4+IGluZGV4IDMwNWZh NDY1MzIuLjY5MDBlZTgxOTkgMTAwNjQ0Cj4gPj4+IC0tLSBhL2xpYmF2Zm9ybWF0L2FsbGZvcm1h dHMuYwo+ID4+PiArKysgYi9saWJhdmZvcm1hdC9hbGxmb3JtYXRzLmMKPiA+Pj4gQEAgLTUzNyw2 ICs1MzcsNyBAQCBleHRlcm4gY29uc3QgRkZJbnB1dEZvcm1hdAo+ID4+IGZmX2ltYWdlX2NyaV9w aXBlX2RlbXV4ZXI7Cj4gPj4+ICAgIGV4dGVybiBjb25zdCBGRklucHV0Rm9ybWF0ICBmZl9pbWFn ZV9kZHNfcGlwZV9kZW11eGVyOwo+ID4+PiAgICBleHRlcm4gY29uc3QgRkZJbnB1dEZvcm1hdCAg ZmZfaW1hZ2VfZHB4X3BpcGVfZGVtdXhlcjsKPiA+Pj4gICAgZXh0ZXJuIGNvbnN0IEZGSW5wdXRG b3JtYXQgIGZmX2ltYWdlX2V4cl9waXBlX2RlbXV4ZXI7Cj4gPj4+ICtleHRlcm4gY29uc3QgRkZJ bnB1dEZvcm1hdCAgZmZfaW1hZ2VfZmFyYmZlbGRfcGlwZV9kZW11eGVyOwo+ID4+PiAgICBleHRl cm4gY29uc3QgRkZJbnB1dEZvcm1hdCAgZmZfaW1hZ2VfZ2VtX3BpcGVfZGVtdXhlcjsKPiA+Pj4g ICAgZXh0ZXJuIGNvbnN0IEZGSW5wdXRGb3JtYXQgIGZmX2ltYWdlX2dpZl9waXBlX2RlbXV4ZXI7 Cj4gPj4+ICAgIGV4dGVybiBjb25zdCBGRklucHV0Rm9ybWF0ICBmZl9pbWFnZV9oZHJfcGlwZV9k ZW11eGVyOwo+ID4+PiBkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvaW1nMi5jIGIvbGliYXZmb3Jt YXQvaW1nMi5jCj4gPj4+IGluZGV4IDk5ODE4NjdmODIuLjc3ZWRjN2ZmOWIgMTAwNjQ0Cj4gPj4+ IC0tLSBhL2xpYmF2Zm9ybWF0L2ltZzIuYwo+ID4+PiArKysgYi9saWJhdmZvcm1hdC9pbWcyLmMK PiA+Pj4gQEAgLTk1LDYgKzk1LDcgQEAKPiA+Pj4gICAgICAgIFRBRyhRT0ksICAgICAgICAgICAg IHFvaSAgICAgICkgXAo+ID4+PiAgICAgICAgVEFHKFJBRElBTkNFX0hEUiwgICAgaGRyICAgICAg KSBcCj4gPj4+ICAgICAgICBUQUcoV0JNUCwgICAgICAgICAgICB3Ym1wICAgICApIFwKPiA+Pj4g KyAgICBUQUcoRkFSQkZFTEQsICAgICAgICBmZiAgICAgICApIFwKPiA+Pj4gICAgICAgIFRBRyhO T05FLCAgICAgICAgICAgICAgICAgICAgICkKPiA+Pj4KPiA+Pj4gICAgI2RlZmluZSBMRU5HVEhf Q0hFQ0soQ09ERUNJRCwgU1RSKSBcCj4gPj4+IGRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9pbWcy ZGVjLmMgYi9saWJhdmZvcm1hdC9pbWcyZGVjLmMKPiA+Pj4gaW5kZXggYTQwNjc1ZDQzNC4uNzAw OTFjNzBmMiAxMDA2NDQKPiA+Pj4gLS0tIGEvbGliYXZmb3JtYXQvaW1nMmRlYy5jCj4gPj4+ICsr KyBiL2xpYmF2Zm9ybWF0L2ltZzJkZWMuYwo+ID4+PiBAQCAtMTIwNSw2ICsxMjA1LDIxIEBAIHN0 YXRpYyBpbnQgdmJuX3Byb2JlKGNvbnN0IEFWUHJvYmVEYXRhICpwKQo+ID4+PiAgICAgICAgcmV0 dXJuIDA7Cj4gPj4+ICAgIH0KPiA+Pj4KPiA+Pj4gK3N0YXRpYyBpbnQgZmFyYmZlbGRfcHJvYmUo Y29uc3QgQVZQcm9iZURhdGEgKnApCj4gPj4+ICt7Cj4gPj4+ICsgICAgaWYgKHAtPmJ1Zl9zaXpl IDwgMTYpCj4gPj4+ICsgICAgICAgIHJldHVybiAwOwo+ID4+PiArCj4gPj4+ICsgICAgaWYgKG1l bWNtcChwLT5idWYsICJmYXJiZmVsZCIsIDgpKQo+ID4+PiArICAgICAgICByZXR1cm4gMDsKPiA+ Pj4gKwo+ID4+PiArICAgIC8vIGNoZWNrIGlmIHdpZHRoIG9yIGhlaWdodCBpcyB6ZXJvCj4gPj4+ ICsgICAgaWYgKEFWX1JCMzIocC0+YnVmICsgOCkgPT0gMCB8fCBBVl9SQjMyKHAtPmJ1ZiArIDEy KSA9PSAwKQo+ID4+PiArICAgICAgICByZXR1cm4gMDsKPiA+Pj4gKwo+ID4+PiArICAgIHJldHVy biBBVlBST0JFX1NDT1JFX01BWCAtIDE7Cj4gPj4+ICt9Cj4gPj4+ICsKPiA+Pj4gICAgI2RlZmlu ZSBJTUFHRUFVVE9fREVNVVhFUl8wKGltZ25hbWUsIGNvZGVjaWQpCj4gPj4+ICAgICNkZWZpbmUg SU1BR0VBVVRPX0RFTVVYRVJfMShpbWduYW1lLCBjb2RlY2lkKVwKPiA+Pj4gICAgY29uc3QgRkZJ bnB1dEZvcm1hdCBmZl9pbWFnZV8gIyMgaW1nbmFtZSAjIyBfcGlwZV9kZW11eGVyID0ge1wKPiA+ Pj4gQEAgLTEyMzQsNiArMTI0OSw3IEBAIElNQUdFQVVUT19ERU1VWEVSKGNyaSwgICAgICAgQ1JJ KQo+ID4+PiAgICBJTUFHRUFVVE9fREVNVVhFUihkZHMsICAgICAgIEREUykKPiA+Pj4gICAgSU1B R0VBVVRPX0RFTVVYRVIoZHB4LCAgICAgICBEUFgpCj4gPj4+ICAgIElNQUdFQVVUT19ERU1VWEVS KGV4ciwgICAgICAgRVhSKQo+ID4+PiArSU1BR0VBVVRPX0RFTVVYRVIoZmFyYmZlbGQsICBGQVJC RkVMRCkKPiA+Pj4gICAgSU1BR0VBVVRPX0RFTVVYRVIoZ2VtLCAgICAgICBHRU0pCj4gPj4+ICAg IElNQUdFQVVUT19ERU1VWEVSKGdpZiwgICAgICAgR0lGKQo+ID4+PiAgICBJTUFHRUFVVE9fREVN VVhFUl9FWFQoaGRyLCAgIFJBRElBTkNFX0hEUiwgSERSKQo+ID4+PiBkaWZmIC0tZ2l0IGEvbGli YXZmb3JtYXQvaW1nMmVuYy5jIGIvbGliYXZmb3JtYXQvaW1nMmVuYy5jCj4gPj4+IGluZGV4IDUy NmExMWU1ZWUuLjEzMzU1YTZmYWQgMTAwNjQ0Cj4gPj4+IC0tLSBhL2xpYmF2Zm9ybWF0L2ltZzJl bmMuYwo+ID4+PiArKysgYi9saWJhdmZvcm1hdC9pbWcyZW5jLmMKPiA+Pj4gQEAgLTI3Niw3ICsy NzYsNyBAQCBjb25zdCBGRk91dHB1dEZvcm1hdCBmZl9pbWFnZTJfbXV4ZXIgPSB7Cj4gPj4+ICAg ICAgICAucC5sb25nX25hbWUgICAgPSBOVUxMX0lGX0NPTkZJR19TTUFMTCgiaW1hZ2UyIHNlcXVl bmNlIiksCj4gPj4+ICAgICAgICAucC5leHRlbnNpb25zICAgPQo+ID4+ICJibXAsZHB4LGV4cixq bHMsanBlZyxqcGcsanhsLGxqcGcscGFtLHBibSxwY3gscGZtLHBnbSxwZ215dXYscGhtLCIKPiA+ Pj4KPiA+PiAgICJwbmcscHBtLHNnaSx0Z2EsdGlmLHRpZmYsanAyLGoyYyxqMmsseHdkLHN1bixy YXMscnMsaW0xLGltOCwiCj4gPj4+IC0KPiA+PiAiaW0yNCxzdW5yYXMsdmJuLHhibSx4ZmFjZSxw aXgseSxhdmlmLHFvaSxoZHIsd2JtcCIsCj4gPj4+ICsKPiA+PiAiaW0yNCxzdW5yYXMsdmJuLHhi bSx4ZmFjZSxwaXgseSxhdmlmLHFvaSxoZHIsd2JtcCxmZiIsCj4gPj4+ICAgICAgICAucHJpdl9k YXRhX3NpemUgPSBzaXplb2YoVmlkZW9NdXhEYXRhKSwKPiA+Pj4gICAgICAgIC5wLnZpZGVvX2Nv ZGVjICA9IEFWX0NPREVDX0lEX01KUEVHLAo+ID4+PiAgICAgICAgLndyaXRlX2hlYWRlciAgID0g d3JpdGVfaGVhZGVyLAo+ID4+PiBkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvdmVyc2lvbi5oIGIv bGliYXZmb3JtYXQvdmVyc2lvbi5oCj4gPj4+IGluZGV4IDQ2ODdjZDg1N2MuLmFmN2QwYTEwMjQg MTAwNjQ0Cj4gPj4+IC0tLSBhL2xpYmF2Zm9ybWF0L3ZlcnNpb24uaAo+ID4+PiArKysgYi9saWJh dmZvcm1hdC92ZXJzaW9uLmgKPiA+Pj4gQEAgLTMxLDggKzMxLDggQEAKPiA+Pj4KPiA+Pj4gICAg I2luY2x1ZGUgInZlcnNpb25fbWFqb3IuaCIKPiA+Pj4KPiA+Pj4gLSNkZWZpbmUgTElCQVZGT1JN QVRfVkVSU0lPTl9NSU5PUiAgIDMKPiA+Pj4gLSNkZWZpbmUgTElCQVZGT1JNQVRfVkVSU0lPTl9N SUNSTyAxMDQKPiA+Pj4gKyNkZWZpbmUgTElCQVZGT1JNQVRfVkVSU0lPTl9NSU5PUiAgIDQKPiA+ Pj4gKyNkZWZpbmUgTElCQVZGT1JNQVRfVkVSU0lPTl9NSUNSTyAxMDAKPiA+Pj4KPiA+Pj4gICAg I2RlZmluZSBMSUJBVkZPUk1BVF9WRVJTSU9OX0lOVAo+ID4+IEFWX1ZFUlNJT05fSU5UKExJQkFW Rk9STUFUX1ZFUlNJT05fTUFKT1IsIFwKPiA+Pj4KPiA+PiBMSUJBVkZPUk1BVF9WRVJTSU9OX01J Tk9SLCBcCj4gPj4KPiA+PiBTaW5jZSB0aGUgImNvZGVjIiBpcyBlc3NlbnRpYWxseSBqdXN0IHJh dyBkYXRhLCB5b3Ugc2hvdWxkIGp1c3QgbWFrZSB0aGUKPiA+PiBkZW11eGVyIG91dHB1dCBuYXRp dmUgUkdCQTY0LCBhbmQgdGhlIG11eGVyIGFjY2VwdCBSR0JBNjQuIFRoZXJlJ3Mgbm8KPiA+PiBy ZWFzb24gdG8gaGF2ZSB0aGlzIGFzIGEgY29kZWMsIHNpbmNlIHRoZSBoZWFkZXIgZmllbGQgaXMg Y29tcGxldGVseQo+ID4+IHJlZHVuZGFudCB3aXRoIHRoZSBmaWVsZHMgYW4gQVZGcmFtZSBjb250 YWlucy4KPiA+Pgo+ID4+IFBsdXMsIHlvdSBhdm9pZCBhbGwgY29waWVzIGVudGlyZWx5IGluIHRo aXMgd2F5Lgo+ID4+Cj4gPgo+ID4gQnV0IGVhY2ggc2luZ2xlIGZyYW1lIGhhdmUgaGVhZGVyIGFu ZCBkaW1lbnNpb25zIGluIGl0Lgo+ID4gQWxzbyBwaXBlIGRlbXV4ZXIgd2lsbCBuZWVkIHBhcnNl ciwgaXRzIHRyaXZpYWwgdG8gd3JpdGUgb25lIGZvciB0aGlzCj4gPiBmb3JtYXQuCj4KPiBOb3Ro aW5nIGhlcmUgcmVxdWlyZXMgYSBjb2RlYy4gV3JhcHBlZCBhZnJhbWVzIGhhdmUgYSBkaW1lbnNp b24gb24gYQo+IHBlci1mcmFtZSBiYXNpcywgYW5kIHRoZSBsYXZmIGZyYW1ld29yayBjYW4gZGVh bCB3aXRoIHBpcGluZyBhcyBlYWNoCj4gZnJhbWUgY2FycmllcyBpZGVudGlmaWNhdGlvbi4KPgoK WWVzLCBpdHMgYmFzaWMgcmF3IGZvcm1hdCB3aXRoIHNvbWUgaGVhZGVycywgbm8gY29tcHJlc3Np b24gb2YgYW55IHNvcnQuCgpTbyBpdCBzaG91bGQgY29weSBmdW5jdGlvbmFsaXR5IG9mIHl1djRt cGVncGlwZSBtdXhlci9kZW11eGVyLgoKV3JhcHBlZCBhdmZyYW1lcyBjYW4gbm90IGJlIHVzZWQg YXMgdGhhdCBpcyBoYWNrIGF0IGxlYXN0IGluIGN1cnJlbnQKaW1wbGVtZW50YXRpb24uCgoKPiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGZmbXBlZy1k ZXZlbCBtYWlsaW5nIGxpc3QKPiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwo+IGh0dHBzOi8vZmZt cGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAo+Cj4gVG8gdW5zdWJzY3JpYmUs IHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCj4gZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVn Lm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4KPgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBl Zy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Zm bXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZm bXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIu Cg==