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 AC63340BFC for ; Sun, 5 Mar 2023 19:25:15 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4576B6898AA; Sun, 5 Mar 2023 21:25:11 +0200 (EET) Received: from iq.passwd.hu (iq.passwd.hu [217.27.212.140]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DC5986898AA for ; Sun, 5 Mar 2023 21:25:04 +0200 (EET) Received: from localhost (localhost [127.0.0.1]) by iq.passwd.hu (Postfix) with ESMTP id A65B5E8818 for ; Sun, 5 Mar 2023 20:25:04 +0100 (CET) X-Virus-Scanned: amavisd-new at passwd.hu Received: from iq.passwd.hu ([127.0.0.1]) by localhost (iq.passwd.hu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id dqM56kD58N_T for ; Sun, 5 Mar 2023 20:25:02 +0100 (CET) Received: from iq (iq [217.27.212.140]) by iq.passwd.hu (Postfix) with ESMTPS id E4F6BE7F7F for ; Sun, 5 Mar 2023 20:25:01 +0100 (CET) Date: Sun, 5 Mar 2023 20:25:01 +0100 (CET) From: Marton Balint To: FFmpeg development discussions and patches In-Reply-To: <_QxagD9_kAfB0Pl4W8zwTIf_YA0Ys4JPYP6LEJ2XV-U1bDi9d1qamUyperdrJrkSgVd5t5OiEGeoV-iaNTaaA7XbRtC8Q9a0OTGq6-EP_WQ=@protonmail.com> Message-ID: <3a7b5b2a-9a99-52bd-aaf5-a718bee2883@passwd.hu> References: <_QxagD9_kAfB0Pl4W8zwTIf_YA0Ys4JPYP6LEJ2XV-U1bDi9d1qamUyperdrJrkSgVd5t5OiEGeoV-iaNTaaA7XbRtC8Q9a0OTGq6-EP_WQ=@protonmail.com> MIME-Version: 1.0 Content-ID: <33822b7b-598a-b5d4-e6df-6e7f322c2927@passwd.hu> X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] Subject: [PATCH v4] avformat: Add support for embedding cover art in Ogg files 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: CgpPbiBTYXQsIDQgTWFyIDIwMjMsIFpzb2x0IFZhZMOhc3ogd3JvdGU6Cgo+IFNpZ25lZC1vZmYt Ynk6IFpzb2x0IFZhZGFzeiA8enNvbHRfdmFkYXN6QHByb3Rvbm1haWwuY29tPgo+IC0tLQo+IGxp YmF2Zm9ybWF0L2ZsYWNfcGljdHVyZS5jIHwgMTMyICsrKysrKysrKysrKysrKysrKysrKysKPiBs aWJhdmZvcm1hdC9mbGFjX3BpY3R1cmUuaCB8ICAgNSArCj4gbGliYXZmb3JtYXQvZmxhY2VuYy5j ICAgICAgfCAgOTAgKy0tLS0tLS0tLS0tLS0tCj4gbGliYXZmb3JtYXQvb2dnZW5jLmMgICAgICAg fCAyMTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQo+IDQgZmlsZXMgY2hh bmdlZCwgMzE5IGluc2VydGlvbnMoKyksIDEyNSBkZWxldGlvbnMoLSkKCkNhbiB5b3Ugc3BsaXQg dGhpcyBpbnRvIHR3byBwYXRjaGVzPyBPbmUgZmFjdG9yaXplcyBmbGFjX3dyaXRlX3BpY3R1cmUs IApidXQgY29udGFpbnMgbm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHksIHRoZSBvdGhlciBhZGRz IHRoZSBhY3R1YWwgc3VwcG9ydCAKdG8gb2dnLgoKVGhhbmtzLApNYXJ0b24KCj4KPiBkaWZmIC0t Z2l0IGEvbGliYXZmb3JtYXQvZmxhY19waWN0dXJlLmMgYi9saWJhdmZvcm1hdC9mbGFjX3BpY3R1 cmUuYwo+IGluZGV4IGIzM2ZlZTc1YjQuLjMwMTUyYTJiYTkgMTAwNjQ0Cj4gLS0tIGEvbGliYXZm b3JtYXQvZmxhY19waWN0dXJlLmMKPiArKysgYi9saWJhdmZvcm1hdC9mbGFjX3BpY3R1cmUuYwo+ IEBAIC0yMCw2ICsyMCw5IEBACj4gICovCj4KPiAjaW5jbHVkZSAibGliYXZ1dGlsL2ludHJlYWR3 cml0ZS5oIgo+ICsjaW5jbHVkZSAibGliYXZ1dGlsL2F2c3RyaW5nLmgiCj4gKyNpbmNsdWRlICJs aWJhdnV0aWwvYmFzZTY0LmgiCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvcGl4ZGVzYy5oIgo+ICNp bmNsdWRlICJsaWJhdmNvZGVjL2J5dGVzdHJlYW0uaCIKPiAjaW5jbHVkZSAibGliYXZjb2RlYy9w bmcuaCIKPiAjaW5jbHVkZSAiYXZmb3JtYXQuaCIKPiBAQCAtMTg4LDMgKzE5MSwxMzIgQEAgZmFp bDoKPgo+ICAgICByZXR1cm4gcmV0Owo+IH0KPiArCj4gK2ludCBmZl9mbGFjX3dyaXRlX3BpY3R1 cmUoc3RydWN0IEFWRm9ybWF0Q29udGV4dCAqcywKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgaXNvZ2csCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgKmF0dGFj aGVkX3R5cGVzLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhdWRpb19zdHJlYW1f aWR4LCAvLyB1bnVzZWQgaWYgIWlzb2dnCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgQVZQ YWNrZXQgKnBrdCkKPiArewo+ICsgICAgQVZJT0NvbnRleHQgKnBiID0gcy0+cGI7Cj4gKyAgICBj b25zdCBBVlBpeEZtdERlc2NyaXB0b3IgKnBpeGRlc2M7Cj4gKyAgICBjb25zdCBDb2RlY01pbWUg Km1pbWUgPSBmZl9pZDN2Ml9taW1lX3RhZ3M7Cj4gKyAgICBBVkRpY3Rpb25hcnlFbnRyeSAqZTsK PiArICAgIGNvbnN0IGNoYXIgKm1pbWV0eXBlID0gTlVMTCwgKmRlc2MgPSAiIjsKPiArICAgIGNv bnN0IEFWU3RyZWFtICpzdCA9IHMtPnN0cmVhbXNbcGt0LT5zdHJlYW1faW5kZXhdOwo+ICsgICAg aW50IGksIG1pbWVsZW4sIGRlc2NsZW4sIHR5cGUgPSAwLCBibG9ja2xlbjsKPiArCj4gKyAgICBp ZiAoIXBrdC0+ZGF0YSkKPiArICAgICAgICByZXR1cm4gMDsKPiArCj4gKyAgICB3aGlsZSAobWlt ZS0+aWQgIT0gQVZfQ09ERUNfSURfTk9ORSkgewo+ICsgICAgICAgIGlmIChtaW1lLT5pZCA9PSBz dC0+Y29kZWNwYXItPmNvZGVjX2lkKSB7Cj4gKyAgICAgICAgICAgIG1pbWV0eXBlID0gbWltZS0+ c3RyOwo+ICsgICAgICAgICAgICBicmVhazsKPiArICAgICAgICB9Cj4gKyAgICAgICAgbWltZSsr Owo+ICsgICAgfQo+ICsgICAgaWYgKCFtaW1ldHlwZSkgewo+ICsgICAgICAgIGF2X2xvZyhzLCBB Vl9MT0dfRVJST1IsICJObyBtaW1ldHlwZSBpcyBrbm93biBmb3Igc3RyZWFtICVkLCBjYW5ub3Qg Igo+ICsgICAgICAgICAgICAgICAid3JpdGUgYW4gYXR0YWNoZWQgcGljdHVyZS5cbiIsIHN0LT5p bmRleCk7Cj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKPiArICAgIH0KPiArICAg IG1pbWVsZW4gPSBzdHJsZW4obWltZXR5cGUpOwo+ICsKPiArICAgIC8qIGdldCB0aGUgcGljdHVy ZSB0eXBlICovCj4gKyAgICBlID0gYXZfZGljdF9nZXQoc3QtPm1ldGFkYXRhLCAiY29tbWVudCIs IE5VTEwsIDApOwo+ICsgICAgZm9yIChpID0gMDsgZSAmJiBpIDwgRkZfQVJSQVlfRUxFTVMoZmZf aWQzdjJfcGljdHVyZV90eXBlcyk7IGkrKykgewo+ICsgICAgICAgIGlmICghYXZfc3RyY2FzZWNt cChlLT52YWx1ZSwgZmZfaWQzdjJfcGljdHVyZV90eXBlc1tpXSkpIHsKPiArICAgICAgICAgICAg dHlwZSA9IGk7Cj4gKyAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgIH0KPiArICAgIH0KPiAr Cj4gKyAgICBpZiAoKCgqYXR0YWNoZWRfdHlwZXMpICYgKDEgPDwgdHlwZSkpICYgMHg2KSB7Cj4g KyAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgIkR1cGxpY2F0ZSBhdHRhY2htZW50IGZv ciB0eXBlICclcydcbiIsIGZmX2lkM3YyX3BpY3R1cmVfdHlwZXNbdHlwZV0pOwo+ICsgICAgICAg IHJldHVybiBBVkVSUk9SKEVJTlZBTCk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKHR5cGUgPT0g MSAmJiAoc3QtPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9QTkcgfHwKPiArICAg ICAgICAgICAgICAgICAgICAgIHN0LT5jb2RlY3Bhci0+d2lkdGggIT0gMzIgfHwKPiArICAgICAg ICAgICAgICAgICAgICAgIHN0LT5jb2RlY3Bhci0+aGVpZ2h0ICE9IDMyKSkgewo+ICsgICAgICAg IGF2X2xvZyhzLCBBVl9MT0dfRVJST1IsICJGaWxlIGljb24gYXR0YWNobWVudCBtdXN0IGJlIGEg MzJ4MzIgUE5HIik7Cj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKPiArICAgIH0K PiArCj4gKyAgICAqYXR0YWNoZWRfdHlwZXMgfD0gKDEgPDwgdHlwZSk7Cj4gKwo+ICsgICAgLyog Z2V0IHRoZSBkZXNjcmlwdGlvbiAqLwo+ICsgICAgaWYgKChlID0gYXZfZGljdF9nZXQoc3QtPm1l dGFkYXRhLCAidGl0bGUiLCBOVUxMLCAwKSkpCj4gKyAgICAgICAgZGVzYyA9IGUtPnZhbHVlOwo+ ICsgICAgZGVzY2xlbiA9IHN0cmxlbihkZXNjKTsKPiArCj4gKyAgICBibG9ja2xlbiA9IDQgKyA0 ICsgbWltZWxlbiArIDQgKyBkZXNjbGVuICsgNCArIDQgKyA0ICsgNCArIDQgKyBwa3QtPnNpemU7 Cj4gKyAgICBpZiAoYmxvY2tsZW4gPj0gMTw8MjQpIHsKPiArICAgICAgICBhdl9sb2cocywgQVZf TE9HX0VSUk9SLCAiUGljdHVyZSBibG9jayB0b28gYmlnICVkID49ICVkXG4iLCBibG9ja2xlbiwg MTw8MjQpOwo+ICsgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7Cj4gKyAgICB9Cj4gKwo+ ICsgICAgaWYoIWlzb2dnKSB7Cj4gKyAgICAgICAgYXZpb193OChwYiwgMHgwNik7Cj4gKyAgICAg ICAgYXZpb193YjI0KHBiLCBibG9ja2xlbik7Cj4gKwo+ICsgICAgICAgIGF2aW9fd2IzMihwYiwg dHlwZSk7Cj4gKwo+ICsgICAgICAgIGF2aW9fd2IzMihwYiwgbWltZWxlbik7Cj4gKyAgICAgICAg YXZpb193cml0ZShwYiwgbWltZXR5cGUsIG1pbWVsZW4pOwo+ICsKPiArICAgICAgICBhdmlvX3di MzIocGIsIGRlc2NsZW4pOwo+ICsgICAgICAgIGF2aW9fd3JpdGUocGIsIGRlc2MsIGRlc2NsZW4p Owo+ICsKPiArICAgICAgICBhdmlvX3diMzIocGIsIHN0LT5jb2RlY3Bhci0+d2lkdGgpOwo+ICsg ICAgICAgIGF2aW9fd2IzMihwYiwgc3QtPmNvZGVjcGFyLT5oZWlnaHQpOwo+ICsgICAgICAgIGlm ICgocGl4ZGVzYyA9IGF2X3BpeF9mbXRfZGVzY19nZXQoc3QtPmNvZGVjcGFyLT5mb3JtYXQpKSkK PiArICAgICAgICAgICAgYXZpb193YjMyKHBiLCBhdl9nZXRfYml0c19wZXJfcGl4ZWwocGl4ZGVz YykpOwo+ICsgICAgICAgIGVsc2UKPiArICAgICAgICAgICAgYXZpb193YjMyKHBiLCAwKTsKPiAr ICAgICAgICBhdmlvX3diMzIocGIsIDApOwo+ICsKPiArICAgICAgICBhdmlvX3diMzIocGIsIHBr dC0+c2l6ZSk7Cj4gKyAgICAgICAgYXZpb193cml0ZShwYiwgcGt0LT5kYXRhLCBwa3QtPnNpemUp Owo+ICsgICAgfSBlbHNlIHsKPiArICAgICAgICB1aW50OF90ICptZXRhZGF0YV9ibG9ja19waWN0 dXJlLCAqcHRyOwo+ICsgICAgICAgIGludCBlbmNvZGVkX2xlbiwgcmV0Owo+ICsgICAgICAgIGNo YXIgKmVuY29kZWQ7Cj4gKyAgICAgICAgQVZTdHJlYW0gKmF1ZGlvX3N0cmVhbSA9IHMtPnN0cmVh bXNbYXVkaW9fc3RyZWFtX2lkeF07Cj4gKwo+ICsgICAgICAgIG1ldGFkYXRhX2Jsb2NrX3BpY3R1 cmUgPSBhdl9tYWxsb2N6KGJsb2NrbGVuKTsKPiArICAgICAgICBwdHIgPSBtZXRhZGF0YV9ibG9j a19waWN0dXJlOwo+ICsgICAgICAgIGJ5dGVzdHJlYW1fcHV0X2JlMzIoJnB0ciwgdHlwZSk7Cj4g Kwo+ICsgICAgICAgIGJ5dGVzdHJlYW1fcHV0X2JlMzIoJnB0ciwgbWltZWxlbik7Cj4gKyAgICAg ICAgYnl0ZXN0cmVhbV9wdXRfYnVmZmVyKCZwdHIsIG1pbWV0eXBlLCBtaW1lbGVuKTsKPiArCj4g KyAgICAgICAgYnl0ZXN0cmVhbV9wdXRfYmUzMigmcHRyLCBkZXNjbGVuKTsKPiArICAgICAgICBi eXRlc3RyZWFtX3B1dF9idWZmZXIoJnB0ciwgZGVzYywgZGVzY2xlbik7Cj4gKwo+ICsgICAgICAg IGJ5dGVzdHJlYW1fcHV0X2JlMzIoJnB0ciwgc3QtPmNvZGVjcGFyLT53aWR0aCk7Cj4gKyAgICAg ICAgYnl0ZXN0cmVhbV9wdXRfYmUzMigmcHRyLCBzdC0+Y29kZWNwYXItPmhlaWdodCk7Cj4gKyAg ICAgICAgaWYgKChwaXhkZXNjID0gYXZfcGl4X2ZtdF9kZXNjX2dldChzdC0+Y29kZWNwYXItPmZv cm1hdCkpKQo+ICsgICAgICAgICAgICBieXRlc3RyZWFtX3B1dF9iZTMyKCZwdHIsIGF2X2dldF9i aXRzX3Blcl9waXhlbChwaXhkZXNjKSk7Cj4gKyAgICAgICAgZWxzZQo+ICsgICAgICAgICAgICBi eXRlc3RyZWFtX3B1dF9iZTMyKCZwdHIsIDApOwo+ICsgICAgICAgIGJ5dGVzdHJlYW1fcHV0X2Jl MzIoJnB0ciwgMCk7Cj4gKwo+ICsgICAgICAgIGJ5dGVzdHJlYW1fcHV0X2JlMzIoJnB0ciwgcGt0 LT5zaXplKTsKPiArICAgICAgICBieXRlc3RyZWFtX3B1dF9idWZmZXIoJnB0ciwgcGt0LT5kYXRh LCBwa3QtPnNpemUpOwo+ICsKPiArICAgICAgICBlbmNvZGVkX2xlbiA9IEFWX0JBU0U2NF9TSVpF KGJsb2NrbGVuKTsKPiArICAgICAgICBlbmNvZGVkID0gYXZfbWFsbG9jeihlbmNvZGVkX2xlbik7 Cj4gKyAgICAgICAgYXZfYmFzZTY0X2VuY29kZShlbmNvZGVkLCBlbmNvZGVkX2xlbiwgbWV0YWRh dGFfYmxvY2tfcGljdHVyZSwgYmxvY2tsZW4pOwo+ICsgICAgICAgIGF2X2ZyZWUobWV0YWRhdGFf YmxvY2tfcGljdHVyZSk7Cj4gKwo+ICsgICAgICAgIHJldCA9IGF2X2RpY3Rfc2V0KCZhdWRpb19z dHJlYW0tPm1ldGFkYXRhLCAiTUVUQURBVEFfQkxPQ0tfUElDVFVSRSIsIGVuY29kZWQsIDApOwo+ ICsgICAgICAgIGF2X2ZyZWUoZW5jb2RlZCk7Cj4gKyAgICAgICAgYXZfcGFja2V0X3VucmVmKHBr dCk7Cj4gKwo+ICsgICAgICAgIGlmIChyZXQgPCAwKQo+ICsgICAgICAgICAgICByZXR1cm4gcmV0 Owo+ICsgICAgfQo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvbGliYXZmb3Jt YXQvZmxhY19waWN0dXJlLmggYi9saWJhdmZvcm1hdC9mbGFjX3BpY3R1cmUuaAo+IGluZGV4IGRi MDc0ZTUzMWQuLmVmYTExYWVlMzIgMTAwNjQ0Cj4gLS0tIGEvbGliYXZmb3JtYXQvZmxhY19waWN0 dXJlLmgKPiArKysgYi9saWJhdmZvcm1hdC9mbGFjX3BpY3R1cmUuaAo+IEBAIC0zOSw1ICszOSwx MCBAQAo+ICAqLwo+IGludCBmZl9mbGFjX3BhcnNlX3BpY3R1cmUoQVZGb3JtYXRDb250ZXh0ICpz LCB1aW50OF90ICoqYnVmLCBpbnQgYnVmX3NpemUsCj4gICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgdHJ1bmNhdGVfd29ya2Fyb3VuZCk7Cj4gK2ludCBmZl9mbGFjX3dyaXRlX3BpY3R1cmUo c3RydWN0IEFWRm9ybWF0Q29udGV4dCAqcywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgaXNvZ2csCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgKmF0dGFjaGVk X3R5cGVzLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhdWRpb19zdHJlYW1faWR4 LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIEFWUGFja2V0ICpwa3QpOwo+Cj4gI2VuZGlm IC8qIEFWRk9STUFUX0ZMQUNfUElDVFVSRV9IICovCj4gZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0 L2ZsYWNlbmMuYyBiL2xpYmF2Zm9ybWF0L2ZsYWNlbmMuYwo+IGluZGV4IGE4YmVlYzc3NTAuLjc5 NzBjMjUzMWQgMTAwNjQ0Cj4gLS0tIGEvbGliYXZmb3JtYXQvZmxhY2VuYy5jCj4gKysrIGIvbGli YXZmb3JtYXQvZmxhY2VuYy5jCj4gQEAgLTMzLDYgKzMzLDcgQEAKPiAjaW5jbHVkZSAibXV4Lmgi Cj4gI2luY2x1ZGUgInZlcnNpb24uaCIKPiAjaW5jbHVkZSAidm9yYmlzY29tbWVudC5oIgo+ICsj aW5jbHVkZSAiZmxhY19waWN0dXJlLmgiCj4KPgo+IHR5cGVkZWYgc3RydWN0IEZsYWNNdXhlckNv bnRleHQgewo+IEBAIC03OSw5NCArODAsOSBAQCBzdGF0aWMgaW50IGZsYWNfd3JpdGVfYmxvY2tf Y29tbWVudChBVklPQ29udGV4dCAqcGIsIEFWRGljdGlvbmFyeSAqKm0sCj4gICAgIHJldHVybiAw Owo+IH0KPgo+IC1zdGF0aWMgaW50IGZsYWNfd3JpdGVfcGljdHVyZShzdHJ1Y3QgQVZGb3JtYXRD b250ZXh0ICpzLCBBVlBhY2tldCAqcGt0KQo+IC17Cj4gLSAgICBGbGFjTXV4ZXJDb250ZXh0ICpj ID0gcy0+cHJpdl9kYXRhOwo+IC0gICAgQVZJT0NvbnRleHQgKnBiID0gcy0+cGI7Cj4gLSAgICBj b25zdCBBVlBpeEZtdERlc2NyaXB0b3IgKnBpeGRlc2M7Cj4gLSAgICBjb25zdCBDb2RlY01pbWUg Km1pbWUgPSBmZl9pZDN2Ml9taW1lX3RhZ3M7Cj4gLSAgICBBVkRpY3Rpb25hcnlFbnRyeSAqZTsK PiAtICAgIGNvbnN0IGNoYXIgKm1pbWV0eXBlID0gTlVMTCwgKmRlc2MgPSAiIjsKPiAtICAgIGNv bnN0IEFWU3RyZWFtICpzdCA9IHMtPnN0cmVhbXNbcGt0LT5zdHJlYW1faW5kZXhdOwo+IC0gICAg aW50IGksIG1pbWVsZW4sIGRlc2NsZW4sIHR5cGUgPSAwLCBibG9ja2xlbjsKPiAtCj4gLSAgICBp ZiAoIXBrdC0+ZGF0YSkKPiAtICAgICAgICByZXR1cm4gMDsKPiAtCj4gLSAgICB3aGlsZSAobWlt ZS0+aWQgIT0gQVZfQ09ERUNfSURfTk9ORSkgewo+IC0gICAgICAgIGlmIChtaW1lLT5pZCA9PSBz dC0+Y29kZWNwYXItPmNvZGVjX2lkKSB7Cj4gLSAgICAgICAgICAgIG1pbWV0eXBlID0gbWltZS0+ c3RyOwo+IC0gICAgICAgICAgICBicmVhazsKPiAtICAgICAgICB9Cj4gLSAgICAgICAgbWltZSsr Owo+IC0gICAgfQo+IC0gICAgaWYgKCFtaW1ldHlwZSkgewo+IC0gICAgICAgIGF2X2xvZyhzLCBB Vl9MT0dfRVJST1IsICJObyBtaW1ldHlwZSBpcyBrbm93biBmb3Igc3RyZWFtICVkLCBjYW5ub3Qg Igo+IC0gICAgICAgICAgICAgICAid3JpdGUgYW4gYXR0YWNoZWQgcGljdHVyZS5cbiIsIHN0LT5p bmRleCk7Cj4gLSAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKPiAtICAgIH0KPiAtICAg IG1pbWVsZW4gPSBzdHJsZW4obWltZXR5cGUpOwo+IC0KPiAtICAgIC8qIGdldCB0aGUgcGljdHVy ZSB0eXBlICovCj4gLSAgICBlID0gYXZfZGljdF9nZXQoc3QtPm1ldGFkYXRhLCAiY29tbWVudCIs IE5VTEwsIDApOwo+IC0gICAgZm9yIChpID0gMDsgZSAmJiBpIDwgRkZfQVJSQVlfRUxFTVMoZmZf aWQzdjJfcGljdHVyZV90eXBlcyk7IGkrKykgewo+IC0gICAgICAgIGlmICghYXZfc3RyY2FzZWNt cChlLT52YWx1ZSwgZmZfaWQzdjJfcGljdHVyZV90eXBlc1tpXSkpIHsKPiAtICAgICAgICAgICAg dHlwZSA9IGk7Cj4gLSAgICAgICAgICAgIGJyZWFrOwo+IC0gICAgICAgIH0KPiAtICAgIH0KPiAt Cj4gLSAgICBpZiAoKGMtPmF0dGFjaGVkX3R5cGVzICYgKDEgPDwgdHlwZSkpICYgMHg2KSB7Cj4g LSAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgIkR1cGxpY2F0ZSBhdHRhY2htZW50IGZv ciB0eXBlICclcydcbiIsIGZmX2lkM3YyX3BpY3R1cmVfdHlwZXNbdHlwZV0pOwo+IC0gICAgICAg IHJldHVybiBBVkVSUk9SKEVJTlZBTCk7Cj4gLSAgICB9Cj4gLQo+IC0gICAgaWYgKHR5cGUgPT0g MSAmJiAoc3QtPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9QTkcgfHwKPiAtICAg ICAgICAgICAgICAgICAgICAgIHN0LT5jb2RlY3Bhci0+d2lkdGggIT0gMzIgfHwKPiAtICAgICAg ICAgICAgICAgICAgICAgIHN0LT5jb2RlY3Bhci0+aGVpZ2h0ICE9IDMyKSkgewo+IC0gICAgICAg IGF2X2xvZyhzLCBBVl9MT0dfRVJST1IsICJGaWxlIGljb24gYXR0YWNobWVudCBtdXN0IGJlIGEg MzJ4MzIgUE5HIik7Cj4gLSAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKPiAtICAgIH0K PiAtCj4gLSAgICBjLT5hdHRhY2hlZF90eXBlcyB8PSAoMSA8PCB0eXBlKTsKPiAtCj4gLSAgICAv KiBnZXQgdGhlIGRlc2NyaXB0aW9uICovCj4gLSAgICBpZiAoKGUgPSBhdl9kaWN0X2dldChzdC0+ bWV0YWRhdGEsICJ0aXRsZSIsIE5VTEwsIDApKSkKPiAtICAgICAgICBkZXNjID0gZS0+dmFsdWU7 Cj4gLSAgICBkZXNjbGVuID0gc3RybGVuKGRlc2MpOwo+IC0KPiAtICAgIGJsb2NrbGVuID0gNCAr IDQgKyBtaW1lbGVuICsgNCArIGRlc2NsZW4gKyA0ICsgNCArIDQgKyA0ICsgNCArIHBrdC0+c2l6 ZTsKPiAtICAgIGlmIChibG9ja2xlbiA+PSAxPDwyNCkgewo+IC0gICAgICAgIGF2X2xvZyhzLCBB Vl9MT0dfRVJST1IsICJQaWN0dXJlIGJsb2NrIHRvbyBiaWcgJWQgPj0gJWRcbiIsIGJsb2NrbGVu LCAxPDwyNCk7Cj4gLSAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKPiAtICAgIH0KPiAt Cj4gLSAgICBhdmlvX3c4KHBiLCAweDA2KTsKPiAtICAgIGF2aW9fd2IyNChwYiwgYmxvY2tsZW4p Owo+IC0KPiAtICAgIGF2aW9fd2IzMihwYiwgdHlwZSk7Cj4gLQo+IC0gICAgYXZpb193YjMyKHBi LCBtaW1lbGVuKTsKPiAtICAgIGF2aW9fd3JpdGUocGIsIG1pbWV0eXBlLCBtaW1lbGVuKTsKPiAt Cj4gLSAgICBhdmlvX3diMzIocGIsIGRlc2NsZW4pOwo+IC0gICAgYXZpb193cml0ZShwYiwgZGVz YywgZGVzY2xlbik7Cj4gLQo+IC0gICAgYXZpb193YjMyKHBiLCBzdC0+Y29kZWNwYXItPndpZHRo KTsKPiAtICAgIGF2aW9fd2IzMihwYiwgc3QtPmNvZGVjcGFyLT5oZWlnaHQpOwo+IC0gICAgaWYg KChwaXhkZXNjID0gYXZfcGl4X2ZtdF9kZXNjX2dldChzdC0+Y29kZWNwYXItPmZvcm1hdCkpKQo+ IC0gICAgICAgIGF2aW9fd2IzMihwYiwgYXZfZ2V0X2JpdHNfcGVyX3BpeGVsKHBpeGRlc2MpKTsK PiAtICAgIGVsc2UKPiAtICAgICAgICBhdmlvX3diMzIocGIsIDApOwo+IC0gICAgYXZpb193YjMy KHBiLCAwKTsKPiAtCj4gLSAgICBhdmlvX3diMzIocGIsIHBrdC0+c2l6ZSk7Cj4gLSAgICBhdmlv X3dyaXRlKHBiLCBwa3QtPmRhdGEsIHBrdC0+c2l6ZSk7Cj4gLSAgICByZXR1cm4gMDsKPiAtfQo+ IC0KPiBzdGF0aWMgaW50IGZsYWNfZmluaXNoX2hlYWRlcihzdHJ1Y3QgQVZGb3JtYXRDb250ZXh0 ICpzKQo+IHsKPiArICAgIEZsYWNNdXhlckNvbnRleHQgKmMgPSBzLT5wcml2X2RhdGE7Cj4gICAg IGludCBpLCByZXQsIHBhZGRpbmcgPSBzLT5tZXRhZGF0YV9oZWFkZXJfcGFkZGluZzsKPiAgICAg aWYgKHBhZGRpbmcgPCAwKQo+ICAgICAgICAgcGFkZGluZyA9IDgxOTI7Cj4gQEAgLTE3OSw3ICs5 NSw3IEBAIHN0YXRpYyBpbnQgZmxhY19maW5pc2hfaGVhZGVyKHN0cnVjdCBBVkZvcm1hdENvbnRl eHQgKnMpCj4gICAgICAgICBBVlBhY2tldCAqcGt0ID0gc3QtPnByaXZfZGF0YTsKPiAgICAgICAg IGlmICghcGt0KQo+ICAgICAgICAgICAgIGNvbnRpbnVlOwo+IC0gICAgICAgIHJldCA9IGZsYWNf d3JpdGVfcGljdHVyZShzLCBwa3QpOwo+ICsgICAgICAgIHJldCA9IGZmX2ZsYWNfd3JpdGVfcGlj dHVyZShzLCAwLCAmYy0+YXR0YWNoZWRfdHlwZXMsIC0xLCBwa3QpOwo+ICAgICAgICAgYXZfcGFj a2V0X3VucmVmKHBrdCk7Cj4gICAgICAgICBpZiAocmV0IDwgMCAmJiAocy0+ZXJyb3JfcmVjb2du aXRpb24gJiBBVl9FRl9FWFBMT0RFKSkKPiAgICAgICAgICAgICByZXR1cm4gcmV0Owo+IGRpZmYg LS1naXQgYS9saWJhdmZvcm1hdC9vZ2dlbmMuYyBiL2xpYmF2Zm9ybWF0L29nZ2VuYy5jCj4gaW5k ZXggMmU1ODJkMDc1NC4uNjgwNGMzZjFkZCAxMDA2NDQKPiAtLS0gYS9saWJhdmZvcm1hdC9vZ2dl bmMuYwo+ICsrKyBiL2xpYmF2Zm9ybWF0L29nZ2VuYy5jCj4gQEAgLTIzLDE5ICsyMywyOCBAQAo+ Cj4gI2luY2x1ZGUgPHN0ZGludC5oPgo+Cj4gKyNpbmNsdWRlICJsaWJhdmNvZGVjL2NvZGVjX2lk LmgiCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvYXZ1dGlsLmgiCj4gI2luY2x1ZGUgImxpYmF2dXRp bC9jcmMuaCIKPiArI2luY2x1ZGUgImxpYmF2dXRpbC9sb2cuaCIKPiAjaW5jbHVkZSAibGliYXZ1 dGlsL21hdGhlbWF0aWNzLmgiCj4gI2luY2x1ZGUgImxpYmF2dXRpbC9vcHQuaCIKPiAjaW5jbHVk ZSAibGliYXZ1dGlsL3JhbmRvbV9zZWVkLmgiCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvcGl4ZGVz Yy5oIgo+ICsjaW5jbHVkZSAibGliYXZ1dGlsL2F2c3RyaW5nLmgiCj4gKyNpbmNsdWRlICJsaWJh dnV0aWwvYmFzZTY0LmgiCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvYnN3YXAuaCIKPiAjaW5jbHVk ZSAibGliYXZjb2RlYy94aXBoLmgiCj4gI2luY2x1ZGUgImxpYmF2Y29kZWMvYnl0ZXN0cmVhbS5o Igo+ICNpbmNsdWRlICJsaWJhdmNvZGVjL2ZsYWMuaCIKPiAjaW5jbHVkZSAiYXZmb3JtYXQuaCIK PiArI2luY2x1ZGUgImlkM3YyLmgiCj4gI2luY2x1ZGUgImF2aW9faW50ZXJuYWwuaCIKPiAjaW5j bHVkZSAiaW50ZXJuYWwuaCIKPiAjaW5jbHVkZSAibXV4LmgiCj4gI2luY2x1ZGUgInZlcnNpb24u aCIKPiAjaW5jbHVkZSAidm9yYmlzY29tbWVudC5oIgo+ICsjaW5jbHVkZSAiZmxhY19waWN0dXJl LmgiCj4KPiAjZGVmaW5lIE1BWF9QQUdFX1NJWkUgNjUwMjUKPgo+IEBAIC03OCw2ICs4NywxMSBA QCB0eXBlZGVmIHN0cnVjdCBPR0dDb250ZXh0IHsKPiAgICAgaW50IHByZWZfc2l6ZTsgLy8vPCBw cmVmZXJyZWQgcGFnZSBzaXplICgwID0+IGZpbGwgYWxsIHNlZ21lbnRzKQo+ICAgICBpbnQ2NF90 IHByZWZfZHVyYXRpb247ICAgICAgLy8vPCBwcmVmZXJyZWQgcGFnZSBkdXJhdGlvbiAoMCA9PiBm aWxsIGFsbCBzZWdtZW50cykKPiAgICAgaW50IHNlcmlhbF9vZmZzZXQ7Cj4gKwo+ICsgICAgUGFj a2V0TGlzdCBxdWV1ZTsKPiArICAgIGludCBhdWRpb19zdHJlYW1faWR4Owo+ICsgICAgaW50IHdh aXRpbmdfcGljczsKPiArICAgIHVuc2lnbmVkIGF0dGFjaGVkX3R5cGVzOwo+IH0gT0dHQ29udGV4 dDsKPgo+ICNkZWZpbmUgT0ZGU0VUKHgpIG9mZnNldG9mKE9HR0NvbnRleHQsIHgpCj4gQEAgLTQ2 OSwxMiArNDgzLDE0IEBAIHN0YXRpYyB2b2lkIG9nZ193cml0ZV9wYWdlcyhBVkZvcm1hdENvbnRl eHQgKnMsIGludCBmbHVzaCkKPiAgICAgb2dnLT5wYWdlX2xpc3QgPSBwOwo+IH0KPgo+IC1zdGF0 aWMgaW50IG9nZ19pbml0KEFWRm9ybWF0Q29udGV4dCAqcykKPiArc3RhdGljIGludCBvZ2dfZmlu aXNoX2luaXQoQVZGb3JtYXRDb250ZXh0ICpzKQo+IHsKPiAgICAgT0dHQ29udGV4dCAqb2dnID0g cy0+cHJpdl9kYXRhOwo+ICAgICBPR0dTdHJlYW1Db250ZXh0ICpvZ2dzdHJlYW0gPSBOVUxMOwo+ ICAgICBpbnQgaSwgajsKPgo+ICsgICAgb2dnLT53YWl0aW5nX3BpY3MgPSAwOwo+ICsKPiAgICAg aWYgKG9nZy0+cHJlZl9zaXplKQo+ICAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19XQVJOSU5HLCAi VGhlIHBhZ2VzaXplIG9wdGlvbiBpcyBkZXByZWNhdGVkXG4iKTsKPgo+IEBAIC00ODIsMjkgKzQ5 OCwxMCBAQCBzdGF0aWMgaW50IG9nZ19pbml0KEFWRm9ybWF0Q29udGV4dCAqcykKPiAgICAgICAg IEFWU3RyZWFtICpzdCA9IHMtPnN0cmVhbXNbaV07Cj4gICAgICAgICB1bnNpZ25lZCBzZXJpYWxf bnVtID0gaSArIG9nZy0+c2VyaWFsX29mZnNldDsKPgo+IC0gICAgICAgIGlmIChzdC0+Y29kZWNw YXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX0FVRElPKSB7Cj4gLSAgICAgICAgICAgIGlm IChzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX09QVVMpCj4gLSAgICAgICAg ICAgICAgICAvKiBPcHVzIHJlcXVpcmVzIGEgZml4ZWQgNDhrSHogY2xvY2sgKi8KPiAtICAgICAg ICAgICAgICAgIGF2cHJpdl9zZXRfcHRzX2luZm8oc3QsIDY0LCAxLCA0ODAwMCk7Cj4gLSAgICAg ICAgICAgIGVsc2UKPiAtICAgICAgICAgICAgICAgIGF2cHJpdl9zZXRfcHRzX2luZm8oc3QsIDY0 LCAxLCBzdC0+Y29kZWNwYXItPnNhbXBsZV9yYXRlKTsKPiAtICAgICAgICB9Cj4gLQo+IC0gICAg ICAgIGlmIChzdC0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX1ZPUkJJUyAmJgo+ IC0gICAgICAgICAgICBzdC0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX1RIRU9S QSAmJgo+IC0gICAgICAgICAgICBzdC0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lE X1NQRUVYICAmJgo+IC0gICAgICAgICAgICBzdC0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NP REVDX0lEX0ZMQUMgICAmJgo+IC0gICAgICAgICAgICBzdC0+Y29kZWNwYXItPmNvZGVjX2lkICE9 IEFWX0NPREVDX0lEX09QVVMgICAmJgo+IC0gICAgICAgICAgICBzdC0+Y29kZWNwYXItPmNvZGVj X2lkICE9IEFWX0NPREVDX0lEX1ZQOCkgewo+IC0gICAgICAgICAgICBhdl9sb2cocywgQVZfTE9H X0VSUk9SLCAiVW5zdXBwb3J0ZWQgY29kZWMgaWQgaW4gc3RyZWFtICVkXG4iLCBpKTsKPiAtICAg ICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKPiAtICAgICAgICB9Cj4gKyAgICAgICAg aWYoc3QtPmNvZGVjcGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9WSURFTyAmJgo+ICsg ICAgICAgICAgIChzdC0+ZGlzcG9zaXRpb24gJiBBVl9ESVNQT1NJVElPTl9BVFRBQ0hFRF9QSUMp KQo+ICsgICAgICAgICAgICBjb250aW51ZTsKPgo+IC0gICAgICAgIGlmICgoIXN0LT5jb2RlY3Bh ci0+ZXh0cmFkYXRhIHx8ICFzdC0+Y29kZWNwYXItPmV4dHJhZGF0YV9zaXplKSAmJgo+IC0gICAg ICAgICAgICBzdC0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX1ZQOCkgewo+IC0g ICAgICAgICAgICBhdl9sb2cocywgQVZfTE9HX0VSUk9SLCAiTm8gZXh0cmFkYXRhIHByZXNlbnRc biIpOwo+IC0gICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiAtICAgICAg ICB9Cj4gICAgICAgICBvZ2dzdHJlYW0gPSBhdl9tYWxsb2N6KHNpemVvZigqb2dnc3RyZWFtKSk7 Cj4gICAgICAgICBpZiAoIW9nZ3N0cmVhbSkKPiAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihF Tk9NRU0pOwo+IEBAIC01MTUsOCArNTEyLDExIEBAIHN0YXRpYyBpbnQgb2dnX2luaXQoQVZGb3Jt YXRDb250ZXh0ICpzKQo+ICAgICAgICAgICAgIGRvIHsKPiAgICAgICAgICAgICAgICAgc2VyaWFs X251bSA9IGF2X2dldF9yYW5kb21fc2VlZCgpOwo+ICAgICAgICAgICAgICAgICBmb3IgKGogPSAw OyBqIDwgaTsgaisrKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgLy8gTlVMTCBmb3IgYXR0YWNo ZWRfcGljCj4gICAgICAgICAgICAgICAgICAgICBPR0dTdHJlYW1Db250ZXh0ICpzYyA9IHMtPnN0 cmVhbXNbal0tPnByaXZfZGF0YTsKPiAtICAgICAgICAgICAgICAgICAgICBpZiAoc2VyaWFsX251 bSA9PSBzYy0+c2VyaWFsX251bSkKPiArICAgICAgICAgICAgICAgICAgICBpZighc2MpCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ICsgICAgICAgICAgICAgICAgICAgIGVs c2UgaWYgKHNlcmlhbF9udW0gPT0gc2MtPnNlcmlhbF9udW0pCj4gICAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7Cj4gICAgICAgICAgICAgICAgIH0KPiAgICAgICAgICAgICB9IHdoaWxlIChq IDwgaSk7Cj4gQEAgLTU2Myw5ICs1NjMsOSBAQCBzdGF0aWMgaW50IG9nZ19pbml0KEFWRm9ybWF0 Q29udGV4dCAqcykKPiAgICAgICAgICAgICBpbnQgZnJhbWluZ19iaXQgPSBzdC0+Y29kZWNwYXIt PmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZPUkJJUyA/IDEgOiAwOwo+Cj4gICAgICAgICAgICAg aWYgKGF2cHJpdl9zcGxpdF94aXBoX2hlYWRlcnMoc3QtPmNvZGVjcGFyLT5leHRyYWRhdGEsIHN0 LT5jb2RlY3Bhci0+ZXh0cmFkYXRhX3NpemUsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WT1JCSVMg PyAzMCA6IDQyLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25z dCB1aW50OF90Kiopb2dnc3RyZWFtLT5oZWFkZXIsIG9nZ3N0cmVhbS0+aGVhZGVyX2xlbikgPCAw KSB7Cj4gLSAgICAgICAgICAgICAgICBhdl9sb2cocywgQVZfTE9HX0VSUk9SLCAiRXh0cmFkYXRh IGNvcnJ1cHRlZFxuIik7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVk9SQklTID8gMzAgOiA0 MiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHVp bnQ4X3QqKilvZ2dzdHJlYW0tPmhlYWRlciwgb2dnc3RyZWFtLT5oZWFkZXJfbGVuKSA8IDApIHsK PiArICAgICAgICAgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfRVJST1IsICJFeHRyYWRhdGEgY29y cnVwdGVkIGZvciBzdHJlYW0gIyVkXG4iLCBpKTsKPiAgICAgICAgICAgICAgICAgb2dnc3RyZWFt LT5oZWFkZXJbMV0gPSBOVUxMOwo+ICAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZB TElEREFUQTsKPiAgICAgICAgICAgICB9Cj4gQEAgLTYwMiwxMyArNjAyLDY3IEBAIHN0YXRpYyBp bnQgb2dnX2luaXQoQVZGb3JtYXRDb250ZXh0ICpzKQo+ICAgICByZXR1cm4gMDsKPiB9Cj4KPiAt c3RhdGljIGludCBvZ2dfd3JpdGVfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCAqcykKPiArc3RhdGlj IGludCBvZ2dfaW5pdChBVkZvcm1hdENvbnRleHQgKnMpCj4gK3sKPiArICAgIE9HR0NvbnRleHQg Km9nZyA9IHMtPnByaXZfZGF0YTsKPiArICAgIGludCBpOwo+ICsKPiArICAgIG9nZy0+d2FpdGlu Z19waWNzID0gMDsKPiArICAgIG9nZy0+YXR0YWNoZWRfdHlwZXMgPSAwOwo+ICsKPiArICAgIGlm IChvZ2ctPnByZWZfc2l6ZSkKPiArICAgICAgICBhdl9sb2cocywgQVZfTE9HX1dBUk5JTkcsICJU aGUgcGFnZXNpemUgb3B0aW9uIGlzIGRlcHJlY2F0ZWRcbiIpOwo+ICsKPiArICAgIGZvciAoaSA9 IDA7IGkgPCBzLT5uYl9zdHJlYW1zOyBpKyspIHsKPiArICAgICAgICBBVlN0cmVhbSAqc3QgPSBz LT5zdHJlYW1zW2ldOwo+ICsKPiArICAgICAgICBpZiAoc3QtPmNvZGVjcGFyLT5jb2RlY190eXBl ID09IEFWTUVESUFfVFlQRV9BVURJTykgewo+ICsgICAgICAgICAgICBvZ2ctPmF1ZGlvX3N0cmVh bV9pZHggPSBpOwo+ICsgICAgICAgICAgICBpZiAoc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBB Vl9DT0RFQ19JRF9PUFVTKQo+ICsgICAgICAgICAgICAgICAgLyogT3B1cyByZXF1aXJlcyBhIGZp eGVkIDQ4a0h6IGNsb2NrICovCj4gKyAgICAgICAgICAgICAgICBhdnByaXZfc2V0X3B0c19pbmZv KHN0LCA2NCwgMSwgNDgwMDApOwo+ICsgICAgICAgICAgICBlbHNlCj4gKyAgICAgICAgICAgICAg ICBhdnByaXZfc2V0X3B0c19pbmZvKHN0LCA2NCwgMSwgc3QtPmNvZGVjcGFyLT5zYW1wbGVfcmF0 ZSk7Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICBpZiAoc3QtPmNvZGVjcGFyLT5jb2RlY19p ZCAhPSBBVl9DT0RFQ19JRF9WT1JCSVMgJiYKPiArICAgICAgICAgICAgc3QtPmNvZGVjcGFyLT5j b2RlY19pZCAhPSBBVl9DT0RFQ19JRF9USEVPUkEgJiYKPiArICAgICAgICAgICAgc3QtPmNvZGVj cGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9TUEVFWCAgJiYKPiArICAgICAgICAgICAgc3Qt PmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9GTEFDICAgJiYKPiArICAgICAgICAg ICAgc3QtPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9PUFVTICAgJiYKPiArICAg ICAgICAgICAgc3QtPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9WUDggICAgJiYK PiArICAgICAgICAgICAgc3QtPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9QTkcg ICAgJiYKPiArICAgICAgICAgICAgc3QtPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19J RF9NSlBFRykgewo+ICsgICAgICAgICAgICBhdl9sb2cocywgQVZfTE9HX0VSUk9SLCAiVW5zdXBw b3J0ZWQgY29kZWMgaWQgaW4gc3RyZWFtICVkXG4iLCBpKTsKPiArICAgICAgICAgICAgcmV0dXJu IEFWRVJST1IoRUlOVkFMKTsKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIGlmICgoIXN0LT5j b2RlY3Bhci0+ZXh0cmFkYXRhIHx8ICFzdC0+Y29kZWNwYXItPmV4dHJhZGF0YV9zaXplKSAmJgo+ ICsgICAgICAgICAgICBzdC0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX1ZQOCAm Jgo+ICsgICAgICAgICAgICBzdC0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX1BO RyAmJgo+ICsgICAgICAgICAgICBzdC0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lE X01KUEVHKSB7Cj4gKyAgICAgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfRVJST1IsICJObyBleHRy YWRhdGEgcHJlc2VudFxuIik7Cj4gKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSURE QVRBOwo+ICsgICAgICAgIH0KPiArICAgICAgICBpZiAoc3QtPmNvZGVjcGFyLT5jb2RlY190eXBl ID09IEFWTUVESUFfVFlQRV9WSURFTyAmJgo+ICsgICAgICAgICAgICAoc3QtPmRpc3Bvc2l0aW9u ICYgQVZfRElTUE9TSVRJT05fQVRUQUNIRURfUElDKSkKPiArICAgICAgICAgICAgb2dnLT53YWl0 aW5nX3BpY3MrKzsKPiArICAgIH0KPiArCj4gKyAgICBpZiAoIW9nZy0+d2FpdGluZ19waWNzKQo+ ICsgICAgICAgIHJldHVybiBvZ2dfZmluaXNoX2luaXQocyk7Cj4gKyAgICByZXR1cm4gMDsKPiAr fQo+ICsKPiArc3RhdGljIGludCBvZ2dfZmluaXNoX2hlYWRlcihBVkZvcm1hdENvbnRleHQgKnMp Cj4gewo+ICAgICBPR0dTdHJlYW1Db250ZXh0ICpvZ2dzdHJlYW0gPSBOVUxMOwo+ICAgICBpbnQg aSwgajsKPgo+ICAgICBmb3IgKGogPSAwOyBqIDwgcy0+bmJfc3RyZWFtczsgaisrKSB7Cj4gICAg ICAgICBvZ2dzdHJlYW0gPSBzLT5zdHJlYW1zW2pdLT5wcml2X2RhdGE7Cj4gKyAgICAgICAgaWYo IW9nZ3N0cmVhbSkKPiArICAgICAgICAgICAgY29udGludWU7Cj4gICAgICAgICBvZ2dfYnVmZmVy X2RhdGEocywgcy0+c3RyZWFtc1tqXSwgb2dnc3RyZWFtLT5oZWFkZXJbMF0sCj4gICAgICAgICAg ICAgICAgICAgICAgICAgb2dnc3RyZWFtLT5oZWFkZXJfbGVuWzBdLCAwLCAxKTsKPiAgICAgICAg IG9nZ3N0cmVhbS0+cGFnZS5mbGFncyB8PSAyOyAvLyBib3MKPiBAQCAtNjE3LDYgKzY3MSw4IEBA IHN0YXRpYyBpbnQgb2dnX3dyaXRlX2hlYWRlcihBVkZvcm1hdENvbnRleHQgKnMpCj4gICAgIGZv ciAoaiA9IDA7IGogPCBzLT5uYl9zdHJlYW1zOyBqKyspIHsKPiAgICAgICAgIEFWU3RyZWFtICpz dCA9IHMtPnN0cmVhbXNbal07Cj4gICAgICAgICBvZ2dzdHJlYW0gPSBzdC0+cHJpdl9kYXRhOwo+ ICsgICAgICAgIGlmKCFvZ2dzdHJlYW0pCj4gKyAgICAgICAgICAgIGNvbnRpbnVlOwo+ICAgICAg ICAgZm9yIChpID0gMTsgaSA8IDM7IGkrKykgewo+ICAgICAgICAgICAgIGlmIChvZ2dzdHJlYW0t PmhlYWRlcl9sZW5baV0pCj4gICAgICAgICAgICAgICAgIG9nZ19idWZmZXJfZGF0YShzLCBzdCwg b2dnc3RyZWFtLT5oZWFkZXJbaV0sCj4gQEAgLTYzMiw2ICs2ODgsMTQgQEAgc3RhdGljIGludCBv Z2dfd3JpdGVfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCAqcykKPiAgICAgcmV0dXJuIDA7Cj4gfQo+ Cj4gK3N0YXRpYyBpbnQgb2dnX3dyaXRlX2hlYWRlcihBVkZvcm1hdENvbnRleHQgKnMpCj4gK3sK PiArICAgIE9HR0NvbnRleHQgKm9nZyA9IHMtPnByaXZfZGF0YTsKPiArICAgIGlmICghb2dnLT53 YWl0aW5nX3BpY3MpCj4gKyAgICAgICAgcmV0dXJuIG9nZ19maW5pc2hfaGVhZGVyKHMpOwo+ICsg ICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gc3RhdGljIGludCBvZ2dfd3JpdGVfcGFja2V0X2ludGVy bmFsKEFWRm9ybWF0Q29udGV4dCAqcywgQVZQYWNrZXQgKnBrdCkKPiB7Cj4gICAgIEFWU3RyZWFt ICpzdCA9IHMtPnN0cmVhbXNbcGt0LT5zdHJlYW1faW5kZXhdOwo+IEBAIC02ODQsMjAgKzc0OCw5 MiBAQCBzdGF0aWMgaW50IG9nZ193cml0ZV9wYWNrZXRfaW50ZXJuYWwoQVZGb3JtYXRDb250ZXh0 ICpzLCBBVlBhY2tldCAqcGt0KQo+ICAgICByZXR1cm4gMDsKPiB9Cj4KPiArc3RhdGljIGludCBv Z2dfcXVldWVfZmx1c2goQVZGb3JtYXRDb250ZXh0ICpzKQo+ICt7Cj4gKyAgICBPR0dDb250ZXh0 ICpjID0gcy0+cHJpdl9kYXRhOwo+ICsgICAgQVZQYWNrZXQgKmNvbnN0IHBrdCA9IGZmZm9ybWF0 Y29udGV4dChzKS0+cGt0Owo+ICsgICAgaW50IHJldCwgd3JpdGUgPSAxOwo+ICsgICAgcmV0ID0g b2dnX2ZpbmlzaF9pbml0KHMpOwo+ICsgICAgaWYgKHJldCA8IDApCj4gKyAgICAgICAgd3JpdGUg PSAwOwo+ICsgICAgcmV0ID0gb2dnX2ZpbmlzaF9oZWFkZXIocyk7Cj4gKyAgICBpZiAocmV0IDwg MCkKPiArICAgICAgICB3cml0ZSA9IDA7Cj4gKwo+ICsgICAgd2hpbGUgKGMtPnF1ZXVlLmhlYWQp IHsKPiArICAgICAgICBhdnByaXZfcGFja2V0X2xpc3RfZ2V0KCZjLT5xdWV1ZSwgcGt0KTsKPiAr ICAgICAgICBpZiAod3JpdGUgJiYgKHJldCA9IG9nZ193cml0ZV9wYWNrZXRfaW50ZXJuYWwocywg cGt0KSkgPCAwKQo+ICsgICAgICAgICAgICB3cml0ZSA9IDA7Cj4gKyAgICAgICAgYXZfcGFja2V0 X3VucmVmKHBrdCk7Cj4gKyAgICB9Cj4gKyAgICByZXR1cm4gcmV0Owo+ICt9Cj4gKwo+IHN0YXRp YyBpbnQgb2dnX3dyaXRlX3BhY2tldChBVkZvcm1hdENvbnRleHQgKnMsIEFWUGFja2V0ICpwa3Qp Cj4gewo+IC0gICAgaW50IGk7Cj4gKyAgICBPR0dDb250ZXh0ICpjID0gcy0+cHJpdl9kYXRhOwo+ ICsgICAgaW50IGksIHJldDsKPiArCj4gKyAgICBpZiAocGt0KSB7Cj4gKyAgICAgICAgaWYgKHBr dC0+c3RyZWFtX2luZGV4ID09IGMtPmF1ZGlvX3N0cmVhbV9pZHgpIHsKPiArICAgICAgICAgICAg aWYgKGMtPndhaXRpbmdfcGljcykgewo+ICsgICAgICAgICAgICAgICAgLyogYnVmZmVyIGF1ZGlv IHBhY2tldHMgdW50aWwgd2UgZ2V0IGFsbCB0aGUgcGljdHVyZXMgKi8KPiArICAgICAgICAgICAg ICAgIHJldCA9IGF2cHJpdl9wYWNrZXRfbGlzdF9wdXQoJmMtPnF1ZXVlLCBwa3QsIE5VTEwsIDAp Owo+ICsgICAgICAgICAgICAgICAgaWYgKHJldCA8IDApIHsKPiArICAgICAgICAgICAgICAgICAg ICBhdl9sb2cocywgQVZfTE9HX0VSUk9SLCAiT3V0IG9mIG1lbW9yeSBpbiBwYWNrZXQgcXVldWU7 IHNraXBwaW5nIGF0dGFjaGVkIHBpY3R1cmVzXG4iKTsKPiArICAgICAgICAgICAgICAgICAgICBj LT53YWl0aW5nX3BpY3MgPSAwOwo+ICsgICAgICAgICAgICAgICAgICAgIHJldCA9IG9nZ19xdWV1 ZV9mbHVzaChzKTsKPiArICAgICAgICAgICAgICAgICAgICBpZiAocmV0IDwgMCkKPiArICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiArICAgICAgICAgICAgICAgICAgICByZXR1 cm4gcGt0LT5zaXplID8gb2dnX3dyaXRlX3BhY2tldF9pbnRlcm5hbChzLCBwa3QpIDogMDsKPiAr ICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgfSBlbHNlCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gcGt0LT5zaXplID8gb2dnX3dyaXRlX3BhY2tldF9pbnRlcm5hbChzLCBwa3QpIDog MDsKPiArICAgICAgICB9IGVsc2Ugewo+ICsgICAgICAgICAgICBBVlN0cmVhbSAqc3QgPSBzLT5z dHJlYW1zW3BrdC0+c3RyZWFtX2luZGV4XTsKPgo+IC0gICAgaWYgKHBrdCkKPiAtICAgICAgICBy ZXR1cm4gcGt0LT5zaXplID8gb2dnX3dyaXRlX3BhY2tldF9pbnRlcm5hbChzLCBwa3QpIDogMDsK PiArICAgICAgICAgICAgaWYgKCFjLT53YWl0aW5nX3BpY3MgfHwKPiArICAgICAgICAgICAgICAg ICEoc3QtPmRpc3Bvc2l0aW9uICYgQVZfRElTUE9TSVRJT05fQVRUQUNIRURfUElDKSkKPiArICAg ICAgICAgICAgICAgIHJldHVybiAwOwo+Cj4gLSAgICBmb3IgKGkgPSAwOyBpIDwgcy0+bmJfc3Ry ZWFtczsgaSsrKSB7Cj4gLSAgICAgICAgT0dHU3RyZWFtQ29udGV4dCAqb2dnc3RyZWFtID0gcy0+ c3RyZWFtc1tpXS0+cHJpdl9kYXRhOwo+IC0gICAgICAgIGlmIChvZ2dzdHJlYW0tPnBhZ2Uuc2Vn bWVudHNfY291bnQpCj4gLSAgICAgICAgICAgIG9nZ19idWZmZXJfcGFnZShzLCBvZ2dzdHJlYW0p Owo+IC0gICAgfQo+ICsgICAgICAgICAgICAvKiB3YXJuIG9ubHkgb25jZSBmb3IgZWFjaCBzdHJl YW0gKi8KPiArICAgICAgICAgICAgaWYgKHN0LT5uYl9mcmFtZXMgPT0gMSkgewo+ICsgICAgICAg ICAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19XQVJOSU5HLCAiR290IG1vcmUgdGhhbiBvbmUgcGlj dHVyZSBpbiBzdHJlYW0gJWQsIgo+ICsgICAgICAgICAgICAgICAgICAgICAgICIgaWdub3Jpbmcu XG4iLCBwa3QtPnN0cmVhbV9pbmRleCk7Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICAgICAg aWYgKHN0LT5uYl9mcmFtZXMgPj0gMSkgewo+ICsgICAgICAgICAgICAgICAgYXZfbG9nKHMsIEFW X0xPR19XQVJOSU5HLCAiQXR0YWNoZWQgcGljdHVyZSBtdXN0IG5vdCBoYXZlIG1vcmUgdGhhbiBv bmUgZnJhbWUuXG4iKTsKPiArICAgICAgICAgICAgICAgIHJldHVybiAwOwo+ICsgICAgICAgICAg ICB9Cj4KPiAtICAgIG9nZ193cml0ZV9wYWdlcyhzLCAyKTsKPiArICAgICAgICAgICAgLy9zdC0+ cHJpdl9kYXRhID0gYXZfcGFja2V0X2Nsb25lKHBrdCk7Cj4gKyAgICAgICAgICAgIC8vaWYgKCFz dC0+cHJpdl9kYXRhKQo+ICsgICAgICAgICAgICAvLyAgICBhdl9sb2cocywgQVZfTE9HX0VSUk9S LCAiT3V0IG9mIG1lbW9yeSBxdWV1ZWluZyBhbiBhdHRhY2hlZCBwaWN0dXJlOyBza2lwcGluZ1xu Iik7Cj4gKyAgICAgICAgICAgIHJldCA9IGZmX2ZsYWNfd3JpdGVfcGljdHVyZShzLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZjLT5hdHRhY2hlZF90eXBlcywKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMtPmF1ZGlvX3N0cmVhbV9pZHgsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa3QpOwo+ICsgICAgICAgICAg ICBpZiAocmV0IDwgMCkgewo+ICsgICAgICAgICAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJP UiwgIkZhaWxlZCB0byBwcm9jZXNzIGF0dGFjaGVkIHBpY3R1cmUuXG4iKTsKPiArICAgICAgICAg ICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgYy0+d2Fp dGluZ19waWNzLS07Cj4gKwo+ICsgICAgICAgICAgICAvKiBmbHVzaCB0aGUgYnVmZmVyZWQgYXVk aW8gcGFja2V0cyAqLwo+ICsgICAgICAgICAgICBpZiAoIWMtPndhaXRpbmdfcGljcyAmJgo+ICsg ICAgICAgICAgICAgICAgKHJldCA9IG9nZ19xdWV1ZV9mbHVzaChzKSkgPCAwKQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHJldDsKPiArICAgICAgICB9Cj4gKyAgICB9IGVsc2Ugewo+ICsgICAg ICAgIGZvciAoaSA9IDA7IGkgPCBzLT5uYl9zdHJlYW1zOyBpKyspIHsKPiArICAgICAgICAgICAg T0dHU3RyZWFtQ29udGV4dCAqb2dnc3RyZWFtID0gcy0+c3RyZWFtc1tpXS0+cHJpdl9kYXRhOwo+ ICsgICAgICAgICAgICBpZiAob2dnc3RyZWFtLT5wYWdlLnNlZ21lbnRzX2NvdW50KQo+ICsgICAg ICAgICAgICAgICAgb2dnX2J1ZmZlcl9wYWdlKHMsIG9nZ3N0cmVhbSk7Cj4gKyAgICAgICAgfQo+ ICsKPiArICAgICAgICBvZ2dfd3JpdGVfcGFnZXMocywgMik7Cj4gKyAgICB9Cj4gICAgIHJldHVy biAxOwo+IH0KPgo+IEBAIC03MDgsNiArODQ0LDggQEAgc3RhdGljIGludCBvZ2dfd3JpdGVfdHJh aWxlcihBVkZvcm1hdENvbnRleHQgKnMpCj4gICAgIC8qIGZsdXNoIGN1cnJlbnQgcGFnZSBpZiBu ZWVkZWQgKi8KPiAgICAgZm9yIChpID0gMDsgaSA8IHMtPm5iX3N0cmVhbXM7IGkrKykgewo+ICAg ICAgICAgT0dHU3RyZWFtQ29udGV4dCAqb2dnc3RyZWFtID0gcy0+c3RyZWFtc1tpXS0+cHJpdl9k YXRhOwo+ICsgICAgICAgIGlmKCFvZ2dzdHJlYW0pCj4gKyAgICAgICAgICAgIGNvbnRpbnVlOwo+ Cj4gICAgICAgICBpZiAob2dnc3RyZWFtLT5wYWdlLnNpemUgPiAwKQo+ICAgICAgICAgICAgIG9n Z19idWZmZXJfcGFnZShzLCBvZ2dzdHJlYW0pOwo+IEBAIC03MzUsNyArODczLDkgQEAgc3RhdGlj IHZvaWQgb2dnX2ZyZWUoQVZGb3JtYXRDb250ZXh0ICpzKQo+ICAgICAgICAgICAgIHN0LT5jb2Rl Y3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA4KSB7Cj4gICAgICAgICAgICAgYXZfZnJl ZXAoJm9nZ3N0cmVhbS0+aGVhZGVyWzBdKTsKPiAgICAgICAgIH0KPiAtICAgICAgICBhdl9mcmVl cCgmb2dnc3RyZWFtLT5oZWFkZXJbMV0pOwo+ICsgICAgICAgIGlmIChzdC0+Y29kZWNwYXItPmNv ZGVjX2lkICE9IEFWX0NPREVDX0lEX1BORyAmJgo+ICsgICAgICAgICAgICBzdC0+Y29kZWNwYXIt PmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX01KUEVHKQo+ICsgICAgICAgICAgICBhdl9mcmVlcCgm b2dnc3RyZWFtLT5oZWFkZXJbMV0pOwo+ICAgICB9Cj4KPiAgICAgd2hpbGUgKHApIHsKPiBAQCAt ODQxLDYgKzk4MSw3IEBAIGNvbnN0IEZGT3V0cHV0Rm9ybWF0IGZmX29wdXNfbXV4ZXIgPSB7Cj4g ICAgIC5wLmV4dGVuc2lvbnMgICAgICA9ICJvcHVzIiwKPiAgICAgLnByaXZfZGF0YV9zaXplICAg ID0gc2l6ZW9mKE9HR0NvbnRleHQpLAo+ICAgICAucC5hdWRpb19jb2RlYyAgICAgPSBBVl9DT0RF Q19JRF9PUFVTLAo+ICsgICAgLnAudmlkZW9fY29kZWMgICAgICAgPSBBVl9DT0RFQ19JRF9QTkcs Cj4gICAgIC5pbml0ICAgICAgICAgICAgICA9IG9nZ19pbml0LAo+ICAgICAud3JpdGVfaGVhZGVy ICAgICAgPSBvZ2dfd3JpdGVfaGVhZGVyLAo+ICAgICAud3JpdGVfcGFja2V0ICAgICAgPSBvZ2df d3JpdGVfcGFja2V0LAo+IC0tIAo+IDIuMzQuMQo+Cj4KPiBfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwo+IGZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKPiBm Zm1wZWctZGV2ZWxAZmZtcGVnLm9yZwo+IGh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ZmbXBlZy1kZXZlbAo+Cj4gVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9y IGVtYWlsCj4gZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVu c3Vic2NyaWJlIi4KPgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0 dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJz Y3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZm bXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==