From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 3FC101FF15E for ; Mon, 24 Nov 2025 09:30:59 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 2BB1B1A4CA; Mon, 24 Nov 2025 09:31:09 +0100 (CET) Date: Mon, 24 Nov 2025 09:29:59 +0100 From: Fabian =?iso-8859-1?q?Gr=FCnbichler?= To: Christian Ebner , Proxmox Backup Server development discussion , Thomas Lamprecht References: <20251122104118.205994-1-c.ebner@proxmox.com> <7393d75a-04be-4940-80c9-1f8e9781227a@proxmox.com> <1763971841.tk1259krov.astroid@yuna.none> In-Reply-To: MIME-Version: 1.0 User-Agent: astroid/0.17.0 (https://github.com/astroidmail/astroid) Message-Id: <1763972888.fq1bwvzgnc.astroid@yuna.none> X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1763972967899 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.041 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment T_SPF_HELO_TEMPERROR 0.01 SPF: test of HELO record failed (temperror) T_SPF_TEMPERROR 0.01 SPF: test of record failed (temperror) Subject: Re: [pbs-devel] [PATCH proxmox-backup] GC: s3: fix local marker cleanup for unreferenced, s3 only chunks X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Backup Server development discussion Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" T24gTm92ZW1iZXIgMjQsIDIwMjUgOToyMiBhbSwgQ2hyaXN0aWFuIEVibmVyIHdyb3RlOgo+IE9u IDExLzI0LzI1IDk6MTMgQU0sIEZhYmlhbiBHcsO8bmJpY2hsZXIgd3JvdGU6Cj4+IE9uIE5vdmVt YmVyIDI0LCAyMDI1IDg6MzUgYW0sIENocmlzdGlhbiBFYm5lciB3cm90ZToKPj4+IFRoYW5rcyBm b3IgdGFraW5nIGEgbG9vayBhdCB0aGlzIGFscmVhZHkhCj4+Pgo+Pj4gT24gMTEvMjIvMjUgMzo1 NSBQTSwgVGhvbWFzIExhbXByZWNodCB3cm90ZToKPj4+PiBBbSAyMi4xMS4yNSB1bSAxMTo0MSBz Y2hyaWViIENocmlzdGlhbiBFYm5lcjoKPj4+Pj4gSWYgYSBjaHVuayBvYmplY3QgaXMgbG9jYXRl ZCBvbiB0aGUgczMgb2JqZWN0IHN0b3JlIG9ubHksIG5vdCBiZWluZwo+Pj4+PiByZWZlcmVuY2Vk IGJ5IGFueSBpbmRleCBmaWxlIGFuZCBoYXZpbmcgbm8gbG9jYWwgbWFya2VyIGZpbGUgaXQgaXMK Pj4+Pj4gbWFya2VkIGZvciBjbGVhbnVwIGJ5IHByZXRlbmRpbmcgYW4gYXRpbWUgZXF1YWwgdG8g dGhlIHVuaXggZXBvY2guCj4+Pj4+Cj4+Pj4+IFdoaWxlIHRoaXMgd2lsbCBtYXJrIHRoZSBjaHVu ayBmb3IgZGVsZXRpb24gZnJvbSB0aGUgYmFja2VuZCBhbmQKPj4+Pj4gaW5jbHVkZSBpdCBpbiB0 aGUgZGVsZXRlIGxpc3QgZm9yIHRoZSBuZXh0IHMzIGRlbGV0ZSBvYmplY3RzIGNhbGwsIGl0Cj4+ Pj4+IGFsc28gd2lsbCBsZWFkIHRvIHRoZSBjaHVuayBtYXJrZXIgYW5kIExSVSBjYWNoZSBlbnRy eSBiZWluZyB0cmllZCB0bwo+Pj4+PiBjbGVhbiB1cCBsb2NhbGx5LCB3aGljaCBob3dldmVyIGZh aWxzIHNpbmNlIHRoZXJlIGlzIG5vIG1hcmtlciB0byBiZQo+Pj4+PiBjbGVhbmVkIHVwLgo+Pj4+ Pgo+Pj4+PiBJbiBvcmRlciB0byB0cmVhdCB0aGlzIGVkZ2UgY2FzZSB3aXRoIHRoZSBzYW1lIGNs ZWFudXAgbG9naWMsIHNpbXBseQo+Pj4+PiBpbnNlcnQgdGhlIG1hcmtlciBmaWxlIGlmIG5vdCBw cmVzZW50LCBmb3IgaXQgdG8gZ2V0IGNvcnJlY3RseQo+Pj4+PiBjbGVhbmVkIHVwIGFzIGV4cGVj dGVkIGFmdGVyd2FyZHMuIFRoaXMgc2hvdWxkIG5vdCBoYXBwZW4gdW5kZXIKPj4+Pj4gbm9ybWFs IGRhdGFzdG9yZSBvcGVyYXRpb24gYW55d2F5cywgbW9zdCBsaWtlbHkgdG8gYXBwZWFyIGFmdGVy Cj4+Pj4+IHJlLWNyZWF0aW9uIG9mIHRoZSBkYXRhc3RvcmUgZnJvbSBleGlzdGluZyBidWNrZXQg Y29udGVudHMgY29udGFpbmluZwo+Pj4+PiBzdWNoIHVucmVmZXJlbmNlZCBjaHVua3MuCj4+Pj4+ Cj4+Pj4+IEZpeGVzOiBodHRwczovL2ZvcnVtLnByb3htb3guY29tL3RocmVhZHMvMTc2NTY3Lwo+ Pj4+PiBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4gRWJuZXIgPGMuZWJuZXJAcHJveG1veC5jb20+ Cj4+Pj4+IC0tLQo+Pj4+PiAgICBwYnMtZGF0YXN0b3JlL3NyYy9kYXRhc3RvcmUucnMgfCA5ICsr KysrLS0tLQo+Pj4+PiAgICAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA0IGRlbGV0 aW9ucygtKQo+Pj4+Pgo+Pj4+PiBkaWZmIC0tZ2l0IGEvcGJzLWRhdGFzdG9yZS9zcmMvZGF0YXN0 b3JlLnJzIGIvcGJzLWRhdGFzdG9yZS9zcmMvZGF0YXN0b3JlLnJzCj4+Pj4+IGluZGV4IDY1Mjk5 Y2NhOS4uYTI0MzkyZDlmIDEwMDY0NAo+Pj4+PiAtLS0gYS9wYnMtZGF0YXN0b3JlL3NyYy9kYXRh c3RvcmUucnMKPj4+Pj4gKysrIGIvcGJzLWRhdGFzdG9yZS9zcmMvZGF0YXN0b3JlLnJzCj4+Pj4+ IEBAIC0xNzExLDExICsxNzExLDEyIEBAIGltcGwgRGF0YVN0b3JlIHsKPj4+Pj4gICAgICAgICAg ICAgICAgICAgICAgICBsZXQgYXRpbWUgPSBtYXRjaCBzdGQ6OmZzOjptZXRhZGF0YSgmY2h1bmtf cGF0aCkgewo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPayhzdGF0KSA9PiBzdGF0 LmFjY2Vzc2VkKCk/LAo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFcnIoZXJyKSBp ZiBlcnIua2luZCgpID09IHN0ZDo6aW86OkVycm9yS2luZDo6Tm90Rm91bmQgPT4gewo+Pj4+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2FmZSB7Cj4+Pj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8vIGNodW5rIHN0b3JlIGxvY2sgaGVsZAo+Pj4+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnNlcnQgbWFya2UgdW5jb25kaXRpb25hbGx5 LCBjbGVhbmVkIHVwIGFnYWluIGJlbG93IGlmIHJlcXVpcmVkCj4+Pj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuaW5uZXIuY2h1bmtfc3RvcmUucmVwbGFjZV9jaHVua193 aXRoX21hcmtlcigmZGlnZXN0KT87Cj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg fQo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5pbm5lci5jaHVu a19zdG9yZS5jbGVhcl9jaHVua19leHBlY3RlZF9tYXJrKCZkaWdlc3QpPyB7Cj4+Pj4+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2FmZSB7Cj4+Pj4+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvLyBjaHVuayBzdG9yZSBsb2NrIGhlbGQKPj4+Pj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5uZXIuY2h1bmtfc3RvcmUu cmVwbGFjZV9jaHVua193aXRoX21hcmtlcigmZGlnZXN0KT87Cj4+Pj4+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIH0KPj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBTeXN0ZW1UaW1lOjpub3coKQo+Pj4+Cj4+Pj4gV2h5IG5vdCBkcm9wIHRoYXQgd2hvbGUg YnJhbmNoIGluc3RlYWQsIGl0IGRvZXMgbm90IHJlYWxseSBtYWtlcyBzZW5zZSBJSVVDLgo+Pj4K Pj4+IE5vLCB0aGlzIGJyYW5jaCBpcyBuZWVkZWQuIFRoaXMgaXMgcmVxdWlyZWQgZm9yIGF2b2lk aW5nIEFQSSBjYWxscyB0bwo+Pj4gdGhlIHMzIGJhY2tlbmQgaW4gY2FzZSB0aGUgY2h1bmsgaXMg cmVmZXJlbmNlZCBieSBhbiBpbmRleCBmaWxlIGFzCj4+PiBkZXRlY3RlZCBkdXJpbmcgcGhhc2Ug MSwgYnV0IHRoZSBsb2NhbCBtYXJrZXIgZmlsZSBpcyBub3QgcHJlc2VudC4gSW4KPj4+IHRoYXQg Y2FzZSB3ZSBkbyBub3Qgd2FudCB0byBkaXJlY3RseSBjaGVjayB0aGUgZXhpc3RlbmNlIG9uIHRo ZSBiYWNrZW5kCj4+PiAod2hpY2ggd2UgbmVlZCB0byBtYWtlIHN1cmUgdG8gbm90IG1hcmsgYSBj aHVuayB3aGljaCBpcyBob3dldmVyIG5vdAo+Pj4gcHJlc2VudCBvbiB0aGUgYmFja2VuZCksIGJ1 dCBkZWZlciB0aGF0IGNoZWNrIHRvIHBoYXNlIDIsIHdoZXJlIHdlIGRvCj4+PiB0aGUgbGlzdGlu ZyBvZiBhbGwgY2h1bmtzIGFueXdheXMuIFRoaXMgaXMgZG9uZSBieSBmbGFnZ2luZyB0aGF0IGNo dW5rCj4+PiB2aWEgdGhlIDxkaWdlc3Q+LnVzaW5nIGZpbGUuCj4+Pgo+Pj4gSGVyZSwgaWYgdGhl IGNodW5rIGlzIGVuY291bnRlcmVkIGR1cmluZyBzMyBvYmplY3Qgc3RvcmUgbGlzdGluZywgYnV0 Cj4+PiB0aGUgbG9jYWwgZmlsZSBpcyBtaXNzaW5nLCB3ZSBjaGVjayBhbmQgY2xlYXIgdGhlIGNo dW5rIGV4cGVjdGVkIG1hcmtlciwKPj4+IHdoaWNoIGlmIHByZXNlbnQgdGVsbHMgdXMgdGhlIGNo dW5rIHN0aWxsIG5lZWRzIHRvIGJlIHVzZWQuIElmIG5vdCBpdCBpcwo+Pj4gc2FmZSB0byBjbGVh ciBpdCBmcm9tIHRoZSBiYWNrZW5kLgo+Pj4KPj4+Pgo+Pj4+IEFuZCBgcmVwbGFjZV9jaHVua193 aXRoX21hcmtlcmAgcmVwbGFjZXMgdGhlIGNodW5rIGZpbGUgZGlyZWN0bHkgKG5vIGV4dGVuc2lv bikgd2hlcmVhcwo+Pj4+IGBjbGVhcl9jaHVua19leHBlY3RlZF9tYXJrYCBjaGVja3MgdGhlIGNo dW5rLnVzaW5nIGZpbGUsIHNvIGRvZXMgeW91ciByZW9yZGVyaW5nIGV2ZW4KPj4+PiBjaGFuZ2Ug YW55dGhpbmcsIG9yIGlzIHRoZXJlIGEgYnVnIGluIGByZXBsYWNlX2NodW5rX3dpdGhfbWFya2Vy YD8KPj4+Cj4+PiBgcmVwbGFjZV9jaHVua193aXRoX21hcmtlcmAgcmVwbGFjZXMgYSBmdWxsIGNo dW5rIGZpbGUgd2l0aCBhbiBlbXB0eQo+Pj4gbWFya2VyLCBidXQgYWxzbyBjcmVhdGVzIHRoZSBl bXB0eSBtYXJrZXIgaWYgdGhlIG9yaWdpbmFsIGZpbGUgaXMgbm90Cj4+PiBwcmVzZW50LCBzbyBp biB0aGlzIHBhcnRpY3VsYXIgY2FzZSBpdCBpcyBhY3R1YWxseSB1c2VkIHRvIGNyZWF0ZSB0aGUK Pj4+IG1hcmtlciwgbm90IHRvIGV2aWN0IGNodW5rcyBmcm9tIGxvY2FsIGRhdGFzdG9yZSBjYWNo ZSBhcyB1bmRlciBub3JtYWwKPj4+IG9wZXJhdGlvbi4gSSBjYW4gc2VuZCBhIHBhdGNoIHRvIHJl bmFtZSB0aGF0IG1ldGhvZCB0byBtYWtlIHRoYXQgY2xlYXIuCj4+Pgo+Pj4+Cj4+Pj4gQW5kIGlu ZGVwZW5kZW50IG9mIHRoYXQsIHdvdWxkIGl0IGJlIGJldHRlciAobW9yZSBwZXJmb3JtYW50IGFu ZCBsZXNzIGNvbmZ1c2luZykgaWYKPj4+PiB3ZSBpZ25vcmUgdGhlICJub3QgcHJlc2VudCBpbiBM UlUgb3Igbm8gbWFya2VyIiBpbiB0aGF0IGVkZ2UgY2FzZSByYXRoZXIgdGhhbiBjcmVhdGluZwo+ Pj4+IGEgZmlsZSAoZG9pbmcgbW9yZSBJTykganVzdCB0byBkZWxldGUgdGhhdCB0aGVuIGFnYWlu Pwo+Pj4KPj4+IEkgY2FuIGRvIHRoYXQgYXMgd2VsbCBvZiBjb3Vyc2UgYnkgY2hlY2tpbmcgYSBm bGFnIGluIHRoZSByZW1vdmUKPj4+IGNhbGxiYWNrLiBJIG9wdGVkIGZvciBub3QgZG9pbmcgdGhh dCBob3dldmVyIHNpbmNlIGFib3ZlIGlzIGEgdmVyeQo+Pj4gdW5saWtlbHkgY2FzZSB0byBoYXBw ZW4sIGFzIHRoZSBzMyBiYWNrZW5kIGFuZCBsb2NhbCBkYXRhc3RvcmUgY2FjaGUKPj4+IHNob3Vs ZCBiZSBpbiBzeW5jIG1vc3Qgb2YgdGhlIHRpbWUuCj4+PiBBZGRpbmcgdGhhdCBjaGVjayB3b3Vs ZCBiZSBwZXJmb3JtZWQgZm9yIGVhY2ggY2h1bmsgYmVpbmcgcmVtb3ZlZCwgdGhpcwo+Pj4gb25s eSBvbmNlIGlmIHRoZSBjaHVuayBpcyBzdGlsbCBwcmVzZW50IG9uIHRoZSBiYWNrZW5kLCBidXQg bm90IG9uIHRoZQo+Pj4gbG9jYWwgZGF0YXN0b3JlIGNhY2hlLgo+Pj4KPj4+IFRoZSBhZGRpdGlv bmFsIElPIGlzIHRoZXJlZm9yZSBqdXN0ZmllZCBJTU8uCj4+Pgo+Pj4gSSBjb3VsZCBvZiBjb3Vy c2UgYWxzbyBnbyB0aGUgcm91dGUgb2YganVzdCBzZXR0aW5nIGEgYm9vbGVhbiBmbGFnIGFuZAo+ Pj4gY2hlY2tpbmcgdGhhdCBpbiB0aGUgY2FsbGJhY2s/Cj4+IAo+PiB3ZSBiYXNpY2FsbHkgYWxy ZWFkeSBoYXZlIHN1Y2ggYSBib29sZWFuIG1hcmtlciAtIHdlIHNldCBgYXRpbWVgIHRvIDAgaW4K Pj4gdGhpcyBjYXNlIChhbmQgb25seSB0aGlzIGNhc2UpLCBhbmQgd2UgY291bGQganVzdCBpZ25v cmUgdGhlIHJlbW92YWwKPj4gZXJyb3JzIHRoZW4/IHBvc3NpYmx5IGxpbWl0ZWQgdG8ganVzdCBp Z25vcmluZyBFTk9URk9VTkQ/Cj4gCj4gVGhhdCdzIGEgZ29vZCBpZGVhISBTbyBJIHdpbGwgcGVy Zm9ybSB0aGUgYWRkaXRpb25hbCBjaGVja3MgYmFzZWQgb24gdGhhdC4KCmFsdGVybmF0aXZlbHks IHNraXBwaW5nIGNvbmRfc3dlZXBfY2h1bmsgZW50aXJlbHkgd291bGQgYWxzbyB3b3JrICh0aGlz CmlzIHdpdGggYC13YCk6CgpkaWZmIC0tZ2l0IGEvcGJzLWRhdGFzdG9yZS9zcmMvZGF0YXN0b3Jl LnJzIGIvcGJzLWRhdGFzdG9yZS9zcmMvZGF0YXN0b3JlLnJzCmluZGV4IDY1Mjk5Y2NhOS4uYjlk ZWJkMmIxIDEwMDY0NAotLS0gYS9wYnMtZGF0YXN0b3JlL3NyYy9kYXRhc3RvcmUucnMKKysrIGIv cGJzLWRhdGFzdG9yZS9zcmMvZGF0YXN0b3JlLnJzCkBAIC0xNzA5LDIxICsxNzA5LDIyIEBAIGlt cGwgRGF0YVN0b3JlIHsKICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgbG9jYWwgbWFya2Vy cyAoY3JlYXRlZCBvciBhdGltZSB1cGRhdGVkIGR1cmluZyBwaGFzZTEpIGFuZAogICAgICAgICAg ICAgICAgICAgICAvLyBrZWVwIG9yIGRlbGV0ZSBjaHVuayBiYXNlZCBvbiB0aGF0LgogICAgICAg ICAgICAgICAgICAgICBsZXQgYXRpbWUgPSBtYXRjaCBzdGQ6OmZzOjptZXRhZGF0YSgmY2h1bmtf cGF0aCkgewotICAgICAgICAgICAgICAgICAgICAgICAgT2soc3RhdCkgPT4gc3RhdC5hY2Nlc3Nl ZCgpPywKKyAgICAgICAgICAgICAgICAgICAgICAgIE9rKHN0YXQpID0+IFNvbWUoc3RhdC5hY2Nl c3NlZCgpPyksCiAgICAgICAgICAgICAgICAgICAgICAgICBFcnIoZXJyKSBpZiBlcnIua2luZCgp ID09IHN0ZDo6aW86OkVycm9yS2luZDo6Tm90Rm91bmQgPT4gewogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlmIHNlbGYuaW5uZXIuY2h1bmtfc3RvcmUuY2xlYXJfY2h1bmtfZXhwZWN0ZWRf bWFyaygmZGlnZXN0KT8gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNhZmUg ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2h1bmsgc3RvcmUgbG9j ayBoZWxkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlubmVyLmNo dW5rX3N0b3JlLnJlcGxhY2VfY2h1bmtfd2l0aF9tYXJrZXIoJmRpZ2VzdCk/OwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFN5c3RlbVRpbWU6Om5vdygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUo U3lzdGVtVGltZTo6bm93KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmlsZSBub3QgZm91bmQsIGRlbGV0 ZSBieSBzZXR0aW5nIGF0aW1lIHRvIHVuaXggZXBvY2gKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU3lzdGVtVGltZTo6VU5JWF9FUE9DSAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvLyBGaWxlIG5vdCBmb3VuZCwgb25seSBkZWxldGUgZnJvbSBTMworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBOb25lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgRXJy KGVycikgPT4gcmV0dXJuIEVycihlcnIuaW50bygpKSwKICAgICAgICAgICAgICAgICAgICAgfTsK KyAgICAgICAgICAgICAgICAgICAgaWYgbGV0IFNvbWUoYXRpbWUpID0gYXRpbWUgewogICAgICAg ICAgICAgICAgICAgICAgICAgbGV0IGF0aW1lID0gYXRpbWUuZHVyYXRpb25fc2luY2UoU3lzdGVt VGltZTo6VU5JWF9FUE9DSCk/LmFzX3NlY3MoKSBhcyBpNjQ7CiAKICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2FmZSB7CkBAIC0xNzUyLDYgKzE3NTMsMTMgQEAgaW1wbCBEYXRhU3RvcmUgewog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICk/OwogICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IGFnZSBiYXNlZCBvbiBm aXJzdCBpbnNlcnRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlbGV0ZV9saXN0Lmlz X2VtcHR5KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZV9saXN0X2FnZSA9 IGVwb2NoX2k2NCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg ICAgICAgICAgZGVsZXRlX2xpc3QucHVzaCgoY29udGVudC5rZXksIF9jaHVua19ndWFyZCkpOwor ICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgY2h1bmtfY291bnQg Kz0gMTsKIAoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpwYnMtZGV2ZWwgbWFpbGluZyBsaXN0CnBicy1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQpodHRw czovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wYnMtZGV2ZWwK