From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <pbs-devel-bounces@lists.proxmox.com> Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 8181F1FF16E for <inbox@lore.proxmox.com>; Mon, 12 May 2025 09:48:13 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id EED9F366F9; Mon, 12 May 2025 09:48:33 +0200 (CEST) Message-ID: <8c214e1c-9878-41e6-a988-706eab6601a1@proxmox.com> Date: Mon, 12 May 2025 09:47:59 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: Proxmox Backup Server development discussion <pbs-devel@lists.proxmox.com>, =?UTF-8?Q?Fabian_Gr=C3=BCnbichler?= <f.gruenbichler@proxmox.com> References: <20250508130555.494782-1-c.ebner@proxmox.com> <20250508130555.494782-11-c.ebner@proxmox.com> <1746793154.56dzxckyhs.astroid@yuna.none> Content-Language: en-US, de-DE From: Christian Ebner <c.ebner@proxmox.com> In-Reply-To: <1746793154.56dzxckyhs.astroid@yuna.none> X-SPAM-LEVEL: Spam detection results: 0 AWL -0.372 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_ASCII_DIVIDERS 0.8 Email that uses ascii formatting dividers and possible spam tricks KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [proxmox.com, datastore.rs, namespace.rs, pull.rs] Subject: Re: [pbs-devel] [RFC v2 proxmox-backup 10/21] datastore: mark namespace as trash instead of deleting it X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion <pbs-devel.lists.proxmox.com> List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pbs-devel>, <mailto:pbs-devel-request@lists.proxmox.com?subject=unsubscribe> List-Archive: <http://lists.proxmox.com/pipermail/pbs-devel/> List-Post: <mailto:pbs-devel@lists.proxmox.com> List-Help: <mailto:pbs-devel-request@lists.proxmox.com?subject=help> List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel>, <mailto:pbs-devel-request@lists.proxmox.com?subject=subscribe> Reply-To: Proxmox Backup Server development discussion <pbs-devel@lists.proxmox.com> Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" <pbs-devel-bounces@lists.proxmox.com> T24gNS85LzI1IDE0OjI3LCBGYWJpYW4gR3LDvG5iaWNobGVyIHdyb3RlOgo+IE9uIE1heSA4LCAy MDI1IDM6MDUgcG0sIENocmlzdGlhbiBFYm5lciB3cm90ZToKPj4gQXMgZm9yIGJhY2t1cCBzbmFw c2hvdHMgYW5kIGdyb3VwcywgbWFyayB0aGUgbmFtZXNwYWNlIGFzIHRyYXNoCj4+IGluc3RlYWQg b2YgcmVtb3ZpbmcgaXQgYW5kIHRoZSBjb250ZW50cyByaWdodCBhd2F5LCBpZiB0aGUgdHJhc2gK Pj4gc2hvdWxkIG5vdCBiZSBieXBhc3NlZC4KPj4KPj4gQWN0dWFsIHJlbW92YWwgb2YgdGhlIGhp cmFyY2hpY2FsIGZvbGRlciBzdHJ1Y3R1cmUgaGFzIHRvIGJlIHRha2VuCj4+IGNhcmUgb2YgYnkg dGhlIGdhcmJhZ2UgY29sbGVjdGlvbi4KPj4KPj4gSW4gb3JkZXIgdG8gYXZvaWQgcmFjZXMgZHVy aW5nIHJlbW92YWwsIGZpcnN0IG1hcmsgdGhlIG5hbWVzcGFjZXMgYXMKPj4gdHJhc2ggcGVuZGlu ZywgbWFyayB0aGUgc25hcHNob3RzIGFuZCBncm91cHMgYXMgdHJhc2ggYW5kIG9ubHkgYWZ0ZXIK Pj4gcmVuYW1lIHRoZSBwZW5kaW5nIG1hcmtlciBmaWxlIHRvIHRoZSB0cmFzaCBtYXJrZXIgZmls ZS4gQnkgdGhpcywKPj4gY29uY3VycmVudCBiYWNrdXBzIGNhbiByZW1vdmUgdGhlIHRyYXNoIHBl bmRpbmcgbWFya2VyIHRvIGF2b2lkIHRoZQo+PiBuYW1lc3BhY2UgYmVpbmcgdHJhc2hlZC4KPj4K Pj4gT24gcmUtY3JlYXRpb24gb2YgYSB0cmFzaGVkIG5hbWVzcGFjZSByZW1vdmUgdGhlIG1hcmtl ciBmaWxlIG9uIGl0c2VsZgo+PiBhbmQgYW55IHBhcmVudCBjb21wb25lbnQgZnJvbSBkZWVwZXN0 IHRvIHNoYWxsb3dlc3QuIEFzIHRyYXNoaW5nIGEgZnVsbAo+PiBuYW1lc3BhY2UgY2FuIGFsc28g c2V0IHRoZSB0cmFzaCBwZW5kaW5nIHN0YXRlIGZvciByZWN1cnNpdmUgbmFtZXNwYWNlCj4+IGNs ZWFudXAsIHJlbW92ZSBlbmNvdW50ZXJzIG9mIHRoYXQgbWFya2VyIGZpbGUgYXMgd2VsbCB0byBh dm9pZCB0aGUKPj4gbmFtZXNwYWNlIG9yIGl0cyBwYXJlbnQgYmVpbmcgdHJhc2hlZC4KPiAKPiB0 aGlzIGlzIGZhaXJseSBpbnZvbHZlZCBzaW5jZSB3ZSBkb24ndCBoYXZlIGxvY2tzIG9uIG5hbWVz cGFjZXMuLgo+IAo+IHNob3VsZCB3ZSBoYXZlIHRoZW0gZm9yIGNyZWF0aW9uL3JlbW92YWwvdHJh c2hpbmcvdW50cmFzaGluZz8KClRoYXQgaXMgd2hhdCBJIGRpZCB0cnkgdG8gYXZvaWQgYXQgYWxs IGNvc3Qgd2l0aCB0aGUgdHdvLW1hcmtlciAKYXBwcm9hY2gsIGFzIGxvY2tpbmcgdGhlIG5hbWVz cGFjZSBtaWdodCBiZSByYXRoZXIgaW52YXNpdmUuIEJ1dCBpZiB0aGF0IApkb2VzIG5vdCB3b3Jr IG91dCBhcyBpbnRlbmRlZCwgSSBzZWUgbm8gb3RoZXIgd2F5IGFzIHRvIGFkZCBleGNsdXNpdmUg CmxvY2tpbmcgZm9yIG5hbWVzcGFjZXMgYXMgd2VsbCwgeWVzLgoKPiAKPiBJIGFzc3VtZSB0aG9z ZSBhcmUgZmFpcmx5IHJhcmUgb2NjdXJyZW5jZXMsIEkgaGF2ZW4ndCB5ZXQgYW5hbHl6ZWQgdGhl Cj4gaW50ZXJhY3Rpb25zIGhlcmUgdG8gc2VlIHdoZXRoZXIgdGhlIHR3by1tYXJrZXIgYXBwcm9h Y2ggaXMgYWN0dWFsbHkKPiByYWNlLWZyZWUuLgo+IAo+IE9UT0gsIGRvIHdlIHJlYWxseSBuZWVk IHRvIChiZSBhYmxlIHRvKSB0cmFzaCBuYW1lc3BhY2VzPwoKWWVzLCBJIHRoaW5rIHdlIGRvIG5l ZWQgdGhhdCBhcyB3ZWxsIHNpbmNlIHRoZSBkYXRhc3RvcmUncyBoaWVyYXJjaHkgCnNob3VsZCBy ZW1haW4gaW4gcGxhY2UsIGFuZCB0aGUgbmFtZXNwYWNlIGl0ZXJhdG9yIHJlcXVpcmVzIGEgd2F5 IHRvIApkaXN0aW5ndWlzaCBiZXR3ZWVuIGEgbmFtZXNwYWNlIHdoaWNoIGhhcyBiZWVuIHRyYXNo ZWQvZGVsZXRlZCBhbmQgYSAKbmFtZXNwYWNlIHdoaWNoIGhhcyBub3QsIGJ1dCBtaWdodCBjb250 YWluIHRyYXNoZWQgaXRlbXMuIE90aGVyd2lzZSBhIAp1c2VyIHJlcXVlc3RpbmcgdG8gZm9yZ2V0 IGEgbmFtZXNwYWNlLCBzdGlsbCBzZWVzIHRoZSAoZW1wdHkgYXMgb25seSAKdHJhc2hlZCBjb250 ZW50cykgbmFtZXNwYWNlIHRyZWUgYWZ0ZXIgdGhlIG9wZXJhdGlvbi4gV2hpY2ggd291bGQgYmUg CnJhdGhlciB1bmV4cGVjdGVkPwoKPiAKPj4KPj4gU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEVi bmVyIDxjLmVibmVyQHByb3htb3guY29tPgo+PiAtLS0KPj4gICBwYnMtZGF0YXN0b3JlL3NyYy9k YXRhc3RvcmUucnMgfCAxMzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCj4+ICAg c3JjL2FwaTIvYWRtaW4vbmFtZXNwYWNlLnJzICAgIHwgICAyICstCj4+ICAgc3JjL3NlcnZlci9w dWxsLnJzICAgICAgICAgICAgIHwgICAyICstCj4+ICAgMyBmaWxlcyBjaGFuZ2VkLCAxMjMgaW5z ZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9wYnMtZGF0YXN0 b3JlL3NyYy9kYXRhc3RvcmUucnMgYi9wYnMtZGF0YXN0b3JlL3NyYy9kYXRhc3RvcmUucnMKPj4g aW5kZXggMDIzYTZhMTJlLi5iMWQ4MWUxOTkgMTAwNjQ0Cj4+IC0tLSBhL3Bicy1kYXRhc3RvcmUv c3JjL2RhdGFzdG9yZS5ycwo+PiArKysgYi9wYnMtZGF0YXN0b3JlL3NyYy9kYXRhc3RvcmUucnMK Pj4gQEAgLTI4LDcgKzI4LDkgQEAgdXNlIHBic19hcGlfdHlwZXM6OnsKPj4gICB9Owo+PiAgIHVz ZSBwYnNfY29uZmlnOjpCYWNrdXBMb2NrR3VhcmQ7Cj4+ICAgCj4+IC11c2UgY3JhdGU6OmJhY2t1 cF9pbmZvOjp7QmFja3VwRGlyLCBCYWNrdXBHcm91cCwgQmFja3VwSW5mbywgTGlzdEJhY2t1cEZp bHRlciwgT0xEX0xPQ0tJTkd9Owo+PiArdXNlIGNyYXRlOjpiYWNrdXBfaW5mbzo6ewo+PiArICAg IEJhY2t1cERpciwgQmFja3VwR3JvdXAsIEJhY2t1cEluZm8sIExpc3RCYWNrdXBGaWx0ZXIsIE9M RF9MT0NLSU5HLCBUUkFTSF9NQVJLRVJfRklMRU5BTUUsCj4+ICt9Owo+PiAgIHVzZSBjcmF0ZTo6 Y2h1bmtfc3RvcmU6OkNodW5rU3RvcmU7Cj4+ICAgdXNlIGNyYXRlOjpkeW5hbWljX2luZGV4Ojp7 RHluYW1pY0luZGV4UmVhZGVyLCBEeW5hbWljSW5kZXhXcml0ZXJ9Owo+PiAgIHVzZSBjcmF0ZTo6 Zml4ZWRfaW5kZXg6OntGaXhlZEluZGV4UmVhZGVyLCBGaXhlZEluZGV4V3JpdGVyfTsKPj4gQEAg LTQyLDYgKzQ0LDggQEAgdXNlIGNyYXRlOjpEYXRhQmxvYjsKPj4gICBzdGF0aWMgREFUQVNUT1JF X01BUDogTGF6eUxvY2s8TXV0ZXg8SGFzaE1hcDxTdHJpbmcsIEFyYzxEYXRhU3RvcmVJbXBsPj4+ PiA9Cj4+ICAgICAgIExhenlMb2NrOjpuZXcofHwgTXV0ZXg6Om5ldyhIYXNoTWFwOjpuZXcoKSkp Owo+PiAgIAo+PiArY29uc3QgVFJBU0hfUEVORElOR19NQVJLRVJfRklMRU5BTUU6ICZzdHIgPSAi LnBlbmRpbmciOwo+PiArCj4+ICAgLy8vIGNoZWNrcyBpZiBhdXRoX2lkIGlzIG93bmVyLCBvciwg aWYgb3duZXIgaXMgYSB0b2tlbiwgaWYKPj4gICAvLy8gYXV0aF9pZCBpcyB0aGUgdXNlciBvZiB0 aGUgdG9rZW4KPj4gICBwdWIgZm4gY2hlY2tfYmFja3VwX293bmVyKG93bmVyOiAmQXV0aGlkLCBh dXRoX2lkOiAmQXV0aGlkKSAtPiBSZXN1bHQ8KCksIEVycm9yPiB7Cj4+IEBAIC01NTQsNiArNTU4 LDcgQEAgaW1wbCBEYXRhU3RvcmUgewo+PiAgICAgICAgICAgbnNfZnVsbF9wYXRoLnB1c2gobnMu cGF0aCgpKTsKPj4gICAKPj4gICAgICAgICAgIHN0ZDo6ZnM6OmNyZWF0ZV9kaXJfYWxsKG5zX2Z1 bGxfcGF0aCk/Owo+PiArICAgICAgICBzZWxmLnVudHJhc2hfbmFtZXNwYWNlKCZucyk/Owo+PiAg IAo+PiAgICAgICAgICAgT2sobnMpCj4+ICAgICAgIH0KPj4gQEAgLTU2NSw2ICs1NzAsMzQgQEAg aW1wbCBEYXRhU3RvcmUgewo+PiAgICAgICAgICAgcGF0aC5leGlzdHMoKQo+PiAgICAgICB9Cj4+ ICAgCj4+ICsgICAgLy8vIFJlbW92ZSB0aGUgbmFtZXNwYWNlIGFuZCBhbGwgaXQncyBwYXJlbnQg Y29tcG9uZW50cyBmcm9tIHRoZSB0cmFzaCBieSByZW1vdmluZyB0aGUgdHJhc2ggb3IKPj4gKyAg ICAvLy8gdHJhc2gtcGVuZGluZyBtYXJrZXIgZmlsZSBmb3IgZWFjaCBuYW1lc3BhY2UgbGV2ZWwg ZnJvbSBkZWVwZXN0IHRvIHNoYWxsb3dlc3QuIE1pc3NpbmcgZmlsZXMKPj4gKyAgICAvLy8gYXJl IGlnbm9yZWQuCj4+ICsgICAgcHViIGZuIHVudHJhc2hfbmFtZXNwYWNlKCZzZWxmLCBuYW1lc3Bh Y2U6ICZCYWNrdXBOYW1lc3BhY2UpIC0+IFJlc3VsdDwoKSwgRXJyb3I+IHsKPj4gKyAgICAgICAg bGV0IG11dCBuYW1lc3BhY2UgPSBuYW1lc3BhY2UuY2xvbmUoKTsKPj4gKyAgICAgICAgd2hpbGUg bmFtZXNwYWNlLmRlcHRoKCkgPiAwIHsKPj4gKyAgICAgICAgICAgIGxldCBtdXQgdHJhc2hfZmls ZV9wYXRoID0gc2VsZi5iYXNlX3BhdGgoKTsKPj4gKyAgICAgICAgICAgIHRyYXNoX2ZpbGVfcGF0 aC5wdXNoKG5hbWVzcGFjZS5wYXRoKCkpOwo+PiArICAgICAgICAgICAgbGV0IG11dCBwZW5kaW5n X2ZpbGVfcGF0aCA9IHRyYXNoX2ZpbGVfcGF0aC5jbG9uZSgpOwo+PiArICAgICAgICAgICAgcGVu ZGluZ19maWxlX3BhdGgucHVzaChUUkFTSF9QRU5ESU5HX01BUktFUl9GSUxFTkFNRSk7Cj4+ICsg ICAgICAgICAgICBpZiBsZXQgRXJyKGVycikgPSBzdGQ6OmZzOjpyZW1vdmVfZmlsZSgmcGVuZGlu Z19maWxlX3BhdGgpIHsKPj4gKyAgICAgICAgICAgICAgICAvLyBpZ25vcmUgbm90IGZvdW5kLCBl aXRoZXIgbm90IHRyYXNoZWQgb3IgdW4tdHJhc2hlZCBieSBjb25jdXJyZW50IG9wZXJhdGlvbgo+ PiArICAgICAgICAgICAgICAgIGlmIGVyci5raW5kKCkgIT0gc3RkOjppbzo6RXJyb3JLaW5kOjpO b3RGb3VuZCB7Cj4+ICsgICAgICAgICAgICAgICAgICAgIGJhaWwhKCJmYWlsZWQgdG8gcmVtb3Zl IHRyYXNoLXBlbmRpbmcgZmlsZSB7dHJhc2hfZmlsZV9wYXRoOj99OiB7ZXJyfSIpOwo+PiArICAg ICAgICAgICAgICAgIH0KPj4gKyAgICAgICAgICAgIH0KPj4gKyAgICAgICAgICAgIHRyYXNoX2Zp bGVfcGF0aC5wdXNoKFRSQVNIX01BUktFUl9GSUxFTkFNRSk7Cj4+ICsgICAgICAgICAgICBpZiBs ZXQgRXJyKGVycikgPSBzdGQ6OmZzOjpyZW1vdmVfZmlsZSgmdHJhc2hfZmlsZV9wYXRoKSB7Cj4+ ICsgICAgICAgICAgICAgICAgLy8gaWdub3JlIG5vdCBmb3VuZCwgZWl0aGVyIG5vdCB0cmFzaGVk IG9yIHVuLXRyYXNoZWQgYnkgY29uY3VycmVudCBvcGVyYXRpb24KPj4gKyAgICAgICAgICAgICAg ICBpZiBlcnIua2luZCgpICE9IHN0ZDo6aW86OkVycm9yS2luZDo6Tm90Rm91bmQgewo+PiArICAg ICAgICAgICAgICAgICAgICBiYWlsISgiZmFpbGVkIHRvIHJlbW92ZSB0cmFzaCBmaWxlIHt0cmFz aF9maWxlX3BhdGg6P306IHtlcnJ9Iik7Cj4+ICsgICAgICAgICAgICAgICAgfQo+PiArICAgICAg ICAgICAgfQo+PiArICAgICAgICAgICAgbmFtZXNwYWNlLnBvcCgpOwo+PiArICAgICAgICB9Cj4+ ICsgICAgICAgIE9rKCgpKQo+PiArICAgIH0KPj4gKwo+PiAgICAgICAvLy8gUmVtb3ZlIGFsbCBi YWNrdXAgZ3JvdXBzIG9mIGEgc2luZ2xlIG5hbWVzcGFjZSBsZXZlbCBidXQgbm90IHRoZSBuYW1l c3BhY2UgaXRzZWxmLgo+PiAgICAgICAvLy8KPj4gICAgICAgLy8vIERvZXMgKm5vdCogZGVzY2Vu ZHMgaW50byBjaGlsZC1uYW1lc3BhY2VzIGFuZCBkb2Vzbid0IHJlbW9lcyB0aGUgbmFtZXNwYWNl IGl0c2VsZiBlaXRoZXIuCj4+IEBAIC01NzQsNiArNjA3LDcgQEAgaW1wbCBEYXRhU3RvcmUgewo+ PiAgICAgICBwdWIgZm4gcmVtb3ZlX25hbWVzcGFjZV9ncm91cHMoCj4+ICAgICAgICAgICBzZWxm OiAmQXJjPFNlbGY+LAo+PiAgICAgICAgICAgbnM6ICZCYWNrdXBOYW1lc3BhY2UsCj4+ICsgICAg ICAgIHNraXBfdHJhc2g6IGJvb2wsCj4+ICAgICAgICkgLT4gUmVzdWx0PChib29sLCBCYWNrdXBH cm91cERlbGV0ZVN0YXRzKSwgRXJyb3I+IHsKPj4gICAgICAgICAgIC8vIEZJWE1FOiBsb2NraW5n PyBUaGUgc2luZ2xlIGdyb3Vwcy9zbmFwc2hvdHMgYXJlIGFscmVhZHkgcHJvdGVjdGVkLCBzbyBt YXkgbm90IGJlCj4+ICAgICAgICAgICAvLyBuZWNlc3NhcnkgKGRlcGVuZHMgb24gd2hhdCB3ZSBh bGwgYWxsb3cgdG8gZG8gd2l0aCBuYW1lc3BhY2VzKQo+PiBAQCAtNTgzLDIwICs2MTcsMjIgQEAg aW1wbCBEYXRhU3RvcmUgewo+PiAgICAgICAgICAgbGV0IG11dCBzdGF0cyA9IEJhY2t1cEdyb3Vw RGVsZXRlU3RhdHM6OmRlZmF1bHQoKTsKPj4gICAKPj4gICAgICAgICAgIGZvciBncm91cCBpbiBz ZWxmLml0ZXJfYmFja3VwX2dyb3Vwcyhucy50b19vd25lZCgpKT8gewo+PiAtICAgICAgICAgICAg bGV0IGRlbGV0ZV9zdGF0cyA9IGdyb3VwPy5kZXN0cm95KHRydWUpPzsKPj4gKyAgICAgICAgICAg IGxldCBkZWxldGVfc3RhdHMgPSBncm91cD8uZGVzdHJveShza2lwX3RyYXNoKT87Cj4+ICAgICAg ICAgICAgICAgc3RhdHMuYWRkKCZkZWxldGVfc3RhdHMpOwo+PiAgICAgICAgICAgICAgIHJlbW92 ZWRfYWxsX2dyb3VwcyA9IHJlbW92ZWRfYWxsX2dyb3VwcyAmJiBkZWxldGVfc3RhdHMuYWxsX3Jl bW92ZWQoKTsKPj4gICAgICAgICAgIH0KPj4gICAKPj4gLSAgICAgICAgbGV0IGJhc2VfZmlsZSA9 IHN0ZDo6ZnM6OkZpbGU6Om9wZW4oc2VsZi5iYXNlX3BhdGgoKSk/Owo+PiAtICAgICAgICBsZXQg YmFzZV9mZCA9IGJhc2VfZmlsZS5hc19yYXdfZmQoKTsKPj4gLSAgICAgICAgZm9yIHR5IGluIEJh Y2t1cFR5cGU6Oml0ZXIoKSB7Cj4+IC0gICAgICAgICAgICBsZXQgbXV0IHR5X2RpciA9IG5zLnBh dGgoKTsKPj4gLSAgICAgICAgICAgIHR5X2Rpci5wdXNoKHR5LnRvX3N0cmluZygpKTsKPj4gLSAg ICAgICAgICAgIC8vIGJlc3QgZWZmb3J0IG9ubHksIGJ1dCB3ZSBwcm9iYWJseSBzaG91bGQgbG9n IHRoZSBlcnJvcgo+PiAtICAgICAgICAgICAgaWYgbGV0IEVycihlcnIpID0gdW5saW5rYXQoU29t ZShiYXNlX2ZkKSwgJnR5X2RpciwgVW5saW5rYXRGbGFnczo6UmVtb3ZlRGlyKSB7Cj4+IC0gICAg ICAgICAgICAgICAgaWYgZXJyICE9IG5peDo6ZXJybm86OkVycm5vOjpFTk9FTlQgewo+PiAtICAg ICAgICAgICAgICAgICAgICBsb2c6OmVycm9yISgiZmFpbGVkIHRvIHJlbW92ZSBiYWNrdXAgdHlw ZSB7dHl9IGluIHtuc30gLSB7ZXJyfSIpOwo+PiArICAgICAgICBpZiBza2lwX3RyYXNoIHsKPj4g KyAgICAgICAgICAgIGxldCBiYXNlX2ZpbGUgPSBzdGQ6OmZzOjpGaWxlOjpvcGVuKHNlbGYuYmFz ZV9wYXRoKCkpPzsKPj4gKyAgICAgICAgICAgIGxldCBiYXNlX2ZkID0gYmFzZV9maWxlLmFzX3Jh d19mZCgpOwo+PiArICAgICAgICAgICAgZm9yIHR5IGluIEJhY2t1cFR5cGU6Oml0ZXIoKSB7Cj4+ ICsgICAgICAgICAgICAgICAgbGV0IG11dCB0eV9kaXIgPSBucy5wYXRoKCk7Cj4+ICsgICAgICAg ICAgICAgICAgdHlfZGlyLnB1c2godHkudG9fc3RyaW5nKCkpOwo+PiArICAgICAgICAgICAgICAg IC8vIGJlc3QgZWZmb3J0IG9ubHksIGJ1dCB3ZSBwcm9iYWJseSBzaG91bGQgbG9nIHRoZSBlcnJv cgo+PiArICAgICAgICAgICAgICAgIGlmIGxldCBFcnIoZXJyKSA9IHVubGlua2F0KFNvbWUoYmFz ZV9mZCksICZ0eV9kaXIsIFVubGlua2F0RmxhZ3M6OlJlbW92ZURpcikgewo+PiArICAgICAgICAg ICAgICAgICAgICBpZiBlcnIgIT0gbml4OjplcnJubzo6RXJybm86OkVOT0VOVCB7Cj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICBsb2c6OmVycm9yISgiZmFpbGVkIHRvIHJlbW92ZSBiYWNrdXAg dHlwZSB7dHl9IGluIHtuc30gLSB7ZXJyfSIpOwo+PiArICAgICAgICAgICAgICAgICAgICB9Cj4+ ICAgICAgICAgICAgICAgICAgIH0KPj4gICAgICAgICAgICAgICB9Cj4+ICAgICAgICAgICB9Cj4+ IEBAIC02MTMsNiArNjQ5LDcgQEAgaW1wbCBEYXRhU3RvcmUgewo+PiAgICAgICAgICAgc2VsZjog JkFyYzxTZWxmPiwKPj4gICAgICAgICAgIG5zOiAmQmFja3VwTmFtZXNwYWNlLAo+PiAgICAgICAg ICAgZGVsZXRlX2dyb3VwczogYm9vbCwKPj4gKyAgICAgICAgc2tpcF90cmFzaDogYm9vbCwKPj4g ICAgICAgKSAtPiBSZXN1bHQ8KGJvb2wsIEJhY2t1cEdyb3VwRGVsZXRlU3RhdHMpLCBFcnJvcj4g ewo+PiAgICAgICAgICAgbGV0IHN0b3JlID0gc2VsZi5uYW1lKCk7Cj4+ICAgICAgICAgICBsZXQg bXV0IHJlbW92ZWRfYWxsX3JlcXVlc3RlZCA9IHRydWU7Cj4+IEBAIC02MjAsMTYgKzY1Nyw2OCBA QCBpbXBsIERhdGFTdG9yZSB7Cj4+ICAgICAgICAgICBpZiBkZWxldGVfZ3JvdXBzIHsKPj4gICAg ICAgICAgICAgICBsb2c6OmluZm8hKCJyZW1vdmluZyB3aG9sZSBuYW1lc3BhY2UgcmVjdXJzaXZl bHkgYmVsb3cge3N0b3JlfTove25zfSIsKTsKPj4gICAgICAgICAgICAgICBmb3IgbnMgaW4gc2Vs Zi5yZWN1cnNpdmVfaXRlcl9iYWNrdXBfbnMobnMudG9fb3duZWQoKSwgTmFtZXNwYWNlTGlzdEZp bHRlcjo6QWN0aXZlKT8gewo+PiAtICAgICAgICAgICAgICAgIGxldCAocmVtb3ZlZF9uc19ncm91 cHMsIGRlbGV0ZV9zdGF0cykgPSBzZWxmLnJlbW92ZV9uYW1lc3BhY2VfZ3JvdXBzKCZucz8pPzsK Pj4gKyAgICAgICAgICAgICAgICBsZXQgbmFtZXNwYWNlID0gbnM/Owo+PiArCj4+ICsgICAgICAg ICAgICAgICAgaWYgIXNraXBfdHJhc2ggewo+PiArICAgICAgICAgICAgICAgICAgICBsZXQgbXV0 IHBhdGggPSBzZWxmLmJhc2VfcGF0aCgpOwo+PiArICAgICAgICAgICAgICAgICAgICBwYXRoLnB1 c2gobmFtZXNwYWNlLnBhdGgoKSk7Cj4+ICsgICAgICAgICAgICAgICAgICAgIHBhdGgucHVzaChU UkFTSF9QRU5ESU5HX01BUktFUl9GSUxFTkFNRSk7Cj4+ICsgICAgICAgICAgICAgICAgICAgIGlm IGxldCBFcnIoZXJyKSA9IHN0ZDo6ZnM6OkZpbGU6OmNyZWF0ZSgmcGF0aCkgewo+IAo+IHBlbmRp bmcgbWFya2VyIGNyZWF0ZWQgaGVyZSBpZmYgZGVsZXRlX2dyb3VwcyAmJiAhc2tpcF90cmFzaAo+ IAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXJyLmtpbmQoKSAhPSBzdGQ6OmlvOjpF cnJvcktpbmQ6OkFscmVhZHlFeGlzdHMgewo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJldHVybiBFcnIoZXJyKS5jb250ZXh0KCJmYWlsZWQgdG8gc2V0IHRyYXNoIHBlbmRpbmcgbWFy a2VyIGZpbGUiKTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIH0KPj4gKyAgICAgICAgICAg ICAgICAgICAgfQo+PiArICAgICAgICAgICAgICAgIH0KPj4gKwo+PiArICAgICAgICAgICAgICAg IGxldCAocmVtb3ZlZF9uc19ncm91cHMsIGRlbGV0ZV9zdGF0cykgPQo+PiArICAgICAgICAgICAg ICAgICAgICBzZWxmLnJlbW92ZV9uYW1lc3BhY2VfZ3JvdXBzKCZuYW1lc3BhY2UsIHNraXBfdHJh c2gpPzsKPj4gICAgICAgICAgICAgICAgICAgc3RhdHMuYWRkKCZkZWxldGVfc3RhdHMpOwo+PiAg ICAgICAgICAgICAgICAgICByZW1vdmVkX2FsbF9yZXF1ZXN0ZWQgPSByZW1vdmVkX2FsbF9yZXF1 ZXN0ZWQgJiYgcmVtb3ZlZF9uc19ncm91cHM7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgICBpZiAh c2tpcF90cmFzaCAmJiAhcmVtb3ZlZF9uc19ncm91cHMgewo+PiArICAgICAgICAgICAgICAgICAg ICBzZWxmLnVudHJhc2hfbmFtZXNwYWNlKCZuYW1lc3BhY2UpPzsKPj4gKyAgICAgICAgICAgICAg ICB9Cj4+ICAgICAgICAgICAgICAgfQo+PiAgICAgICAgICAgfSBlbHNlIHsKPj4gICAgICAgICAg ICAgICBsb2c6OmluZm8hKCJwcnVuaW5nIGVtcHR5IG5hbWVzcGFjZSByZWN1cnNpdmVseSBiZWxv dyB7c3RvcmV9Oi97bnN9Iik7Cj4+ICAgICAgICAgICB9Cj4+ICAgCj4+IC0gICAgICAgIHJlbW92 ZWRfYWxsX3JlcXVlc3RlZCA9Cj4+IC0gICAgICAgICAgICByZW1vdmVkX2FsbF9yZXF1ZXN0ZWQg JiYgc2VsZi5kZXN0cm95X25hbWVzcGFjZV9yZWN1cnNpdmUobnMsIGRlbGV0ZV9ncm91cHMpPzsK Pj4gKyAgICAgICAgaWYgc2tpcF90cmFzaCB7Cj4+ICsgICAgICAgICAgICByZW1vdmVkX2FsbF9y ZXF1ZXN0ZWQgPQo+PiArICAgICAgICAgICAgICAgIHJlbW92ZWRfYWxsX3JlcXVlc3RlZCAmJiBz ZWxmLmRlc3Ryb3lfbmFtZXNwYWNlX3JlY3Vyc2l2ZShucywgZGVsZXRlX2dyb3Vwcyk/Owo+PiAr ICAgICAgICAgICAgcmV0dXJuIE9rKChyZW1vdmVkX2FsbF9yZXF1ZXN0ZWQsIHN0YXRzKSk7Cj4g Cj4gZWFybHkgcmV0dXJuIGhlcmUgaWZmIHNraXBfdHJhc2gKPiAKPj4gKyAgICAgICAgfQo+PiAr Cj4+ICsgICAgICAgIGxldCBtdXQgY2hpbGRyZW4gPSBzZWxmCj4+ICsgICAgICAgICAgICAucmVj dXJzaXZlX2l0ZXJfYmFja3VwX25zKG5zLnRvX293bmVkKCksIE5hbWVzcGFjZUxpc3RGaWx0ZXI6 OkFjdGl2ZSk/Cj4+ICsgICAgICAgICAgICAuY29sbGVjdDo6PFJlc3VsdDxWZWM8QmFja3VwTmFt ZXNwYWNlPiwgRXJyb3I+PigpPzsKPj4gKwo+PiArICAgICAgICBjaGlsZHJlbi5zb3J0X2J5X2tl eSh8Ynwgc3RkOjpjbXA6OlJldmVyc2UoYi5kZXB0aCgpKSk7Cj4+ICsKPj4gKyAgICAgICAgbGV0 IG11dCBhbGxfdHJhc2hlZCA9IHRydWU7Cj4+ICsgICAgICAgIGZvciBucyBpbiBjaGlsZHJlbi5p dGVyKCkgewo+PiArICAgICAgICAgICAgbGV0IG11dCBuc19kaXIgPSBucy5wYXRoKCk7Cj4+ICsg ICAgICAgICAgICBuc19kaXIucHVzaCgibnMiKTsKPj4gKwo+PiArICAgICAgICAgICAgaWYgIW5z LmlzX3Jvb3QoKSB7Cj4+ICsgICAgICAgICAgICAgICAgbGV0IG11dCBwYXRoID0gc2VsZi5iYXNl X3BhdGgoKTsKPj4gKyAgICAgICAgICAgICAgICBwYXRoLnB1c2gobnMucGF0aCgpKTsKPj4gKwo+ PiArICAgICAgICAgICAgICAgIGxldCBwZW5kaW5nX3BhdGggPSBwYXRoLmpvaW4oVFJBU0hfUEVO RElOR19NQVJLRVJfRklMRU5BTUUpOwo+PiArICAgICAgICAgICAgICAgIHBhdGgucHVzaChUUkFT SF9NQVJLRVJfRklMRU5BTUUpOwo+PiArICAgICAgICAgICAgICAgIGlmIGxldCBFcnIoZXJyKSA9 IHN0ZDo6ZnM6OnJlbmFtZShwZW5kaW5nX3BhdGgsIHBhdGgpIHsKPiAKPiBwZW5kaW5nIG1hcmtl ciBhc3N1bWVkIHRvIGV4aXN0IGhlcmUgaWZmICFza2lwX3RyYXNoCj4gCj4+ICsgICAgICAgICAg ICAgICAgICAgIGlmIGVyci5raW5kKCkgPT0gc3RkOjppbzo6RXJyb3JLaW5kOjpOb3RGb3VuZCB7 Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICBhbGxfdHJhc2hlZCA9IGZhbHNlOwo+PiArICAg ICAgICAgICAgICAgICAgICB9IGVsc2Ugewo+PiArICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIEVycihlcnIpLmNvbnRleHQoIlJlbmFtaW5nIHBlbmRpbmcgbWFya2VyIHRvIHRyYXNoIG1h cmtlciBmYWlsZWQiKTsKPj4gKyAgICAgICAgICAgICAgICAgICAgfQo+PiArICAgICAgICAgICAg ICAgIH0KPj4gKyAgICAgICAgICAgIH0KPj4gKyAgICAgICAgfQo+PiArCj4+ICsgICAgICAgIGlm ICFhbGxfdHJhc2hlZCB7Cj4+ICsgICAgICAgICAgICBiYWlsISgiZmFpbGVkIHRvIHBydW5lIG5h bWVzcGFjZSwgbm90IGVtcHR5Iik7Cj4gCj4gd3JvbmcgZXJyb3IgcmV0dXJuZWQgYXMgYSByZXN1 bHQuLgoKQWggZ29vZCBjYXRjaCEgSW5kZWVkIHRoZSBsb2dpYyBkb2VzIG5vdCB3b3JrIHdoZW4g YGRlbGV0ZV9ncm91cHNgIGFuZCAKYHNraXBfdHJhc2hgIGlzIGZhbHNlLCBhbmQgdGhlIG5hbWVz cGFjZSB0byBkZWxldGUgYmVpbmcgZW1wdHkuIFdpbGwgZml4IAp0aGlzIGluIGFuIHVwY29taW5n IGl0ZXJhdGlvbiBvZiB0aGUgcGF0Y2hlcy4KCj4gCj4+ICsgICAgICAgIH0KPj4gICAKPj4gICAg ICAgICAgIE9rKChyZW1vdmVkX2FsbF9yZXF1ZXN0ZWQsIHN0YXRzKSkKPj4gICAgICAgfQo+PiBA QCAtNjU3LDYgKzc0NiwyNCBAQCBpbXBsIERhdGFTdG9yZSB7Cj4+ICAgICAgICAgICAgICAgbGV0 IF8gPSB1bmxpbmthdChTb21lKGJhc2VfZmQpLCAmbnNfZGlyLCBVbmxpbmthdEZsYWdzOjpSZW1v dmVEaXIpOwo+PiAgIAo+PiAgICAgICAgICAgICAgIGlmICFucy5pc19yb290KCkgewo+PiArICAg ICAgICAgICAgICAgIGxldCByZWxfdHJhc2hfcGF0aCA9IG5zLnBhdGgoKS5qb2luKFRSQVNIX01B UktFUl9GSUxFTkFNRSk7Cj4+ICsgICAgICAgICAgICAgICAgaWYgbGV0IEVycihlcnIpID0KPj4g KyAgICAgICAgICAgICAgICAgICAgdW5saW5rYXQoU29tZShiYXNlX2ZkKSwgJnJlbF90cmFzaF9w YXRoLCBVbmxpbmthdEZsYWdzOjpOb1JlbW92ZURpcikKPj4gKyAgICAgICAgICAgICAgICB7Cj4+ ICsgICAgICAgICAgICAgICAgICAgIGlmIGVyciAhPSBuaXg6OmVycm5vOjpFcnJubzo6RU5PRU5U IHsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJhaWwhKCJyZW1vdmluZyB0aGUgdHJhc2gg ZmlsZSAne3JlbF90cmFzaF9wYXRoOj99JyBmYWlsZWQgLSB7ZXJyfSIpCj4+ICsgICAgICAgICAg ICAgICAgICAgIH0KPj4gKyAgICAgICAgICAgICAgICB9Cj4+ICsgICAgICAgICAgICAgICAgbGV0 IHJlbF9wZW5kaW5nX3BhdGggPSBucy5wYXRoKCkuam9pbihUUkFTSF9QRU5ESU5HX01BUktFUl9G SUxFTkFNRSk7Cj4+ICsgICAgICAgICAgICAgICAgaWYgbGV0IEVycihlcnIpID0KPj4gKyAgICAg ICAgICAgICAgICAgICAgdW5saW5rYXQoU29tZShiYXNlX2ZkKSwgJnJlbF9wZW5kaW5nX3BhdGgs IFVubGlua2F0RmxhZ3M6Ok5vUmVtb3ZlRGlyKQo+PiArICAgICAgICAgICAgICAgIHsKPj4gKyAg ICAgICAgICAgICAgICAgICAgaWYgZXJyICE9IG5peDo6ZXJybm86OkVycm5vOjpFTk9FTlQgewo+ PiArICAgICAgICAgICAgICAgICAgICAgICAgYmFpbCEoCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgInJlbW92aW5nIHRoZSB0cmFzaCBwZW5kaW5nIGZpbGUgJ3tyZWxfcGVuZGluZ19w YXRoOj99JyBmYWlsZWQgLSB7ZXJyfSIKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICkKPj4g KyAgICAgICAgICAgICAgICAgICAgfQo+PiArICAgICAgICAgICAgICAgIH0KPj4gICAgICAgICAg ICAgICAgICAgbWF0Y2ggdW5saW5rYXQoU29tZShiYXNlX2ZkKSwgJm5zLnBhdGgoKSwgVW5saW5r YXRGbGFnczo6UmVtb3ZlRGlyKSB7Cj4+ICAgICAgICAgICAgICAgICAgICAgICBPaygoKSkgPT4g bG9nOjpkZWJ1ZyEoInJlbW92ZWQgbmFtZXNwYWNlIHtuc30iKSwKPj4gICAgICAgICAgICAgICAg ICAgICAgIEVycihuaXg6OmVycm5vOjpFcnJubzo6RU5PRU5UKSA9PiB7Cj4+IGRpZmYgLS1naXQg YS9zcmMvYXBpMi9hZG1pbi9uYW1lc3BhY2UucnMgYi9zcmMvYXBpMi9hZG1pbi9uYW1lc3BhY2Uu cnMKPj4gaW5kZXggZTU0NjM1MjRhLi5hMTJkOTc4ODMgMTAwNjQ0Cj4+IC0tLSBhL3NyYy9hcGky L2FkbWluL25hbWVzcGFjZS5ycwo+PiArKysgYi9zcmMvYXBpMi9hZG1pbi9uYW1lc3BhY2UucnMK Pj4gQEAgLTE2Niw3ICsxNjYsNyBAQCBwdWIgZm4gZGVsZXRlX25hbWVzcGFjZSgKPj4gICAKPj4g ICAgICAgbGV0IGRhdGFzdG9yZSA9IERhdGFTdG9yZTo6bG9va3VwX2RhdGFzdG9yZSgmc3RvcmUs IFNvbWUoT3BlcmF0aW9uOjpXcml0ZSkpPzsKPj4gICAKPj4gLSAgICBsZXQgKHJlbW92ZWRfYWxs LCBzdGF0cykgPSBkYXRhc3RvcmUucmVtb3ZlX25hbWVzcGFjZV9yZWN1cnNpdmUoJm5zLCBkZWxl dGVfZ3JvdXBzKT87Cj4+ICsgICAgbGV0IChyZW1vdmVkX2FsbCwgc3RhdHMpID0gZGF0YXN0b3Jl LnJlbW92ZV9uYW1lc3BhY2VfcmVjdXJzaXZlKCZucywgZGVsZXRlX2dyb3VwcywgdHJ1ZSk/Owo+ PiAgICAgICBpZiAhcmVtb3ZlZF9hbGwgewo+PiAgICAgICAgICAgbGV0IGVycl9tc2cgPSBpZiBk ZWxldGVfZ3JvdXBzIHsKPj4gICAgICAgICAgICAgICBpZiBkYXRhc3RvcmUub2xkX2xvY2tpbmco KSB7Cj4+IGRpZmYgLS1naXQgYS9zcmMvc2VydmVyL3B1bGwucnMgYi9zcmMvc2VydmVyL3B1bGwu cnMKPj4gaW5kZXggZDNjNmZjZjZhLi5hNjBjY2JmMTAgMTAwNjQ0Cj4+IC0tLSBhL3NyYy9zZXJ2 ZXIvcHVsbC5ycwo+PiArKysgYi9zcmMvc2VydmVyL3B1bGwucnMKPj4gQEAgLTcyOSw3ICs3Mjks NyBAQCBmbiBjaGVja19hbmRfcmVtb3ZlX25zKHBhcmFtczogJlB1bGxQYXJhbWV0ZXJzLCBsb2Nh bF9uczogJkJhY2t1cE5hbWVzcGFjZSkgLT4gUgo+PiAgICAgICBsZXQgKHJlbW92ZWRfYWxsLCBf ZGVsZXRlX3N0YXRzKSA9IHBhcmFtcwo+PiAgICAgICAgICAgLnRhcmdldAo+PiAgICAgICAgICAg LnN0b3JlCj4+IC0gICAgICAgIC5yZW1vdmVfbmFtZXNwYWNlX3JlY3Vyc2l2ZShsb2NhbF9ucywg dHJ1ZSk/Owo+PiArICAgICAgICAucmVtb3ZlX25hbWVzcGFjZV9yZWN1cnNpdmUobG9jYWxfbnMs IHRydWUsIHRydWUpPzsKPj4gICAKPj4gICAgICAgT2socmVtb3ZlZF9hbGwpCj4+ICAgfQo+PiAt LSAKPj4gMi4zOS41Cj4+Cj4+Cj4+Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCj4+IHBicy1kZXZlbCBtYWlsaW5nIGxpc3QKPj4gcGJzLWRldmVsQGxp c3RzLnByb3htb3guY29tCj4+IGh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWls bWFuL2xpc3RpbmZvL3Bicy1kZXZlbAo+Pgo+Pgo+Pgo+IAo+IAo+IF9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gcGJzLWRldmVsIG1haWxpbmcgbGlzdAo+ IHBicy1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQo+IGh0dHBzOi8vbGlzdHMucHJveG1veC5jb20v Y2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3Bicy1kZXZlbAo+IAo+IAoKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpwYnMtZGV2ZWwgbWFpbGluZyBsaXN0 CnBicy1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQpodHRwczovL2xpc3RzLnByb3htb3guY29tL2Nn aS1iaW4vbWFpbG1hbi9saXN0aW5mby9wYnMtZGV2ZWwK