From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <pve-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 458D51FF15C for <inbox@lore.proxmox.com>; Fri, 4 Apr 2025 17:46:23 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 9FD39364F4; Fri, 4 Apr 2025 17:46:09 +0200 (CEST) Date: Fri, 4 Apr 2025 17:45:35 +0200 From: Gabriel Goller <g.goller@proxmox.com> To: Christoph Heiss <c.heiss@proxmox.com> Message-ID: <t4keh3httllbyvgtolbiwqvxwkhjo5htuixhfrs4lsqlrxrc67@exow74p4qhir> Mail-Followup-To: Christoph Heiss <c.heiss@proxmox.com>, Proxmox VE development discussion <pve-devel@lists.proxmox.com> References: <20250328171340.885413-1-g.goller@proxmox.com> <20250328171340.885413-50-g.goller@proxmox.com> <D8WW2HAVN0E1.1SEMKA8CUSXRQ@proxmox.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <D8WW2HAVN0E1.1SEMKA8CUSXRQ@proxmox.com> User-Agent: NeoMutt/20241002-35-39f9a6 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.024 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 SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pve-devel] [PATCH pve-manager 5/7] fabrics: add NodeEdit components X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion <pve-devel.lists.proxmox.com> List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe> List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/> List-Post: <mailto:pve-devel@lists.proxmox.com> List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help> List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe> Reply-To: Proxmox VE development discussion <pve-devel@lists.proxmox.com> Cc: Proxmox VE development discussion <pve-devel@lists.proxmox.com> Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com> T24gMDMuMDQuMjAyNSAxMToxNiwgQ2hyaXN0b3BoIEhlaXNzIHdyb3RlOgo+T24gRnJpIE1hciAy OCwgMjAyNSBhdCA2OjEzIFBNIENFVCwgR2FicmllbCBHb2xsZXIgd3JvdGU6Cj5bLi5dCj4+IGRp ZmYgLS1naXQgYS93d3cvbWFuYWdlcjYvc2RuL2ZhYnJpY3Mvb3BlbmZhYnJpYy9Ob2RlRWRpdC5q cyBiL3d3dy9tYW5hZ2VyNi9zZG4vZmFicmljcy9vcGVuZmFicmljL05vZGVFZGl0LmpzCj4+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uZjJkMjA0YzIyNTQyCj4+ IC0tLSAvZGV2L251bGwKPj4gKysrIGIvd3d3L21hbmFnZXI2L3Nkbi9mYWJyaWNzL29wZW5mYWJy aWMvTm9kZUVkaXQuanMKPj4gQEAgLTAsMCArMSwyMDUgQEAKPj4gK0V4dC5kZWZpbmUoJ1BWRS5z ZG4uRmFicmljLk9wZW5GYWJyaWMuTm9kZS5JbnB1dFBhbmVsJywgewo+PiArICAgIGV4dGVuZDog J1Byb3htb3gucGFuZWwuSW5wdXRQYW5lbCcsCj4+ICsKPj4gKyAgICB2aWV3TW9kZWw6IHt9LAo+ PiArCj4+ICsgICAgaXNDcmVhdGU6IHVuZGVmaW5lZCwKPj4gKyAgICBsb2FkQ2x1c3RlckludGVy ZmFjZXM6IHVuZGVmaW5lZCwKPj4gKwo+PiArICAgIGludGVyZmFjZV9zZWxlY3RvcjogdW5kZWZp bmVkLAo+PiArICAgIG5vZGVfbm90X2FjY2Vzc2libGVfd2FybmluZzogdW5kZWZpbmVkLAo+Cj5B bGwgbmV3IHZhcmlhYmxlcyBzaG91bGQgYmUgY2FtZWxDYXNlIFswXSBoZXJlIHRvbywgYXMgbm90 ZWQgaW4gYSBsYXRlcgo+cGF0Y2guCj4KPlswXSBodHRwczovL3B2ZS5wcm94bW94LmNvbS93aWtp L0phdmFzY3JpcHRfU3R5bGVfR3VpZGUjQ2FzaW5nCgpEb25lLCBJIGhvcGUgSSBkaWRuJ3QgbWlz cyBhbnl0aGluZy4KCj4+ICsKPlsuLl0KPj4gKyAgICBpbml0Q29tcG9uZW50OiBmdW5jdGlvbigp IHsKPj4gKwlsZXQgbWUgPSB0aGlzOwo+PiArCW1lLmludGVyZmFjZV9zZWxlY3RvciA9IEV4dC5j cmVhdGUoJ1BWRS5zZG4uRmFicmljLk9wZW5GYWJyaWMuSW50ZXJmYWNlUGFuZWwnLCB7Cj4+ICsJ ICAgIG5hbWU6ICdpbnRlcmZhY2VzJywKPj4gKwkgICAgcGFyZW50Q2xhc3M6IG1lLmlzQ3JlYXRl ID8gbWUgOiB1bmRlZmluZWQsCj4+ICsJfSk7Cj4+ICsJbWUuaXRlbXMgPSBbCj4+ICsJICAgIHsK Pj4gKwkJeHR5cGU6ICdwdmVOb2RlU2VsZWN0b3InLAo+PiArCQlyZWZlcmVuY2U6ICdub2Rlc2Vs ZWN0b3InLAo+PiArCQlmaWVsZExhYmVsOiBnZXR0ZXh0KCdOb2RlJyksCj4+ICsJCWxhYmVsV2lk dGg6IDEyMCwKPj4gKwkJbmFtZTogJ25vZGUnLAo+PiArCQlhbGxvd0JsYW5rOiBmYWxzZSwKPj4g KwkJZGlzYWJsZWQ6ICFtZS5pc0NyZWF0ZSwKPj4gKwkJb25saW5lVmFsaWRhdG9yOiBtZS5pc0Ny ZWF0ZSwKPj4gKwkJYXV0b1NlbGVjdDogbWUuaXNDcmVhdGUsCj4+ICsJCWxpc3RlbmVyczogewo+ PiArCQkgICAgY2hhbmdlOiBmdW5jdGlvbihmLCB2YWx1ZSkgewo+PiArCQkJaWYgKG1lLmlzQ3Jl YXRlKSB7Cj4+ICsJCQkgICAgbWUubG9hZENsdXN0ZXJJbnRlcmZhY2VzKHZhbHVlLCAocmVzdWx0 KSA9PiB7Cj4+ICsJCQkJbWUuc2V0VmFsdWVzKHsgbmV0d29ya19pbnRlcmZhY2VzOiByZXN1bHQg fSk7Cj4+ICsJCQkgICAgfSk7Cj4+ICsJCQl9Cj4+ICsJCSAgICB9LAo+PiArCQl9LAo+PiArCQls aXN0Q29uZmlnOiB7Cj4+ICsJCSAgICBjb2x1bW5zOiBbCj4+ICsJCQl7Cj4+ICsJCQkgICAgaGVh ZGVyOiBnZXR0ZXh0KCdOb2RlJyksCj4+ICsJCQkgICAgZGF0YUluZGV4OiAnbm9kZScsCj4+ICsJ CQkgICAgc29ydGFibGU6IHRydWUsCj4+ICsJCQkgICAgaGlkZWFibGU6IGZhbHNlLAo+PiArCQkJ ICAgIGZsZXg6IDEsCj4+ICsJCQl9LAo+PiArCQkgICAgXSwKPj4gKwkJfSwKPgo+Rm9yIHRoZSBu b2RlIHNlbGVjdG9yLCBpdCB3b3VsZCBiZSBncmVhdCBpZiBleGlzdGluZyBub2RlcyBjb3VsZCBi ZQo+ZXhjbHVkZWQgZnJvbSB0aGUgZHJvcGRvd24uIEl0IGlzbid0IHBvc3NpYmxlIGFueXdheSBh bmQgdGhyb3dzIGFuIGVycm9yCj5vbiBzdWJtaXQsIHNvIGV4Y2x1ZGluZyB0aGVtIGhlcmUgd291 bGQgYmUgZ29vZCBVWC4KPgo+VGhlIGBhbGxvd2VkTm9kZXNgIGFuZC9vciBgZGlzYWxsb3dlZE5v ZGVzYCBwcm9wZXJ0aWVzIG9uIHRoZQo+c2VsZWN0b3IgY2FuIGJlIHVzZWQgZm9yIHRoaXMuCgpZ ZXAsIGltcGxlbWVudGVkIHRoaXMuCgo+Cj4+ICsKPj4gKwkgICAgfSwKPj4gKwkgICAgbWUubm9k ZV9ub3RfYWNjZXNzaWJsZV93YXJuaW5nLAo+PiArCSAgICB7Cj4+ICsJCXh0eXBlOiAndGV4dGZp ZWxkJywKPj4gKwkJZmllbGRMYWJlbDogZ2V0dGV4dCgnTG9vcGJhY2sgSVAnKSwKPj4gKwkJbGFi ZWxXaWR0aDogMTIwLAo+PiArCQluYW1lOiAncm91dGVyX2lkJywKPj4gKwkJYWxsb3dCbGFuazog ZmFsc2UsCj4+ICsJICAgIH0sCj4KPkhlcmUsIHRoZSB1c2VyLXZpc2libGUgbmFtZSBpcyAnTG9v cGJhY2sgSVAnLCBpbnRlcm5hbGx5IGl0IGlzIG5hbWVkCj4nUm91dGVyIElEJy4gSW4gdGhlIGRv Y3VtZW50YXRpb24sICdSb3V0ZXItSUQnIGlzIHVzZWQgdG9vIGluIHRoZQo+YXNzb2NpYXRlZCBk b2N1bWVudGF0aW9uLgo+Cj5QZXJoYXBzIGp1c3Qgc2V0dGxlIG9uIFJvdXRlci1JRD8gQXMgbG9u ZyBhcyBpdCBpcyBleHBsYWluZWQgaW4gdGhlCj5kb2N1bWVudGF0aW9uIChtYXliZSBhbHNvIGFk ZCBhIHRvb2x0aXA/KSwgSSB3b3VsZG4ndCB1c2UgYSBzZXBhcmF0ZQo+bmFtZSBJTUhPLgoKV2Ug Y2hvc2UgJ0xvb3BiYWNrIElQJyBhcyB0aGUgdXNlci1mYWNpbmcgdGVybS4gSW50ZXJuYWxseSBp dCdzIHN0aWxsCnJvdXRlci1pZC4KCj4KPj4gKwkgICAgbWUuaW50ZXJmYWNlX3NlbGVjdG9yLAo+ PiArCV07Cj4+ICsJbWUuY2FsbFBhcmVudCgpOwo+PiArICAgIH0sCj4+ICt9KTsKPj4gKwo+PiAr RXh0LmRlZmluZSgnUFZFLnNkbi5GYWJyaWMuT3BlbkZhYnJpYy5Ob2RlLkVkaXQnLCB7Cj4+ICsg ICAgZXh0ZW5kOiAnUHJveG1veC53aW5kb3cuRWRpdCcsCj4+ICsgICAgeHR5cGU6ICdwdmVTRE5G YWJyaWNBZGROb2RlJywKPlsuLl0KPj4gKwo+PiArICAgIGluaXRDb21wb25lbnQ6IGZ1bmN0aW9u KCkgewo+PiArCWxldCBtZSA9IHRoaXM7Cj4+ICsKPj4gKwltZS5ub2RlX25vdF9hY2Nlc3NpYmxl X3dhcm5pbmcgPSBFeHQuY3JlYXRlKCdQcm94bW94LmZvcm0uZmllbGQuRGlzcGxheUVkaXQnLCB7 Cj4+ICsJICAgIHVzZXJDbHM6ICdwbXgtaGludCcsCj4+ICsJICAgIHZhbHVlOiBnZXR0ZXh0KCdU aGUgbm9kZSBpcyBub3QgYWNjZXNzaWJsZS4nKSwKPj4gKwkgICAgaGlkZGVuOiB0cnVlLAo+PiAr CX0pOwo+PiArCj4+ICsJbGV0IGlwYW5lbCA9IEV4dC5jcmVhdGUoJ1BWRS5zZG4uRmFicmljLk9w ZW5GYWJyaWMuTm9kZS5JbnB1dFBhbmVsJywgewo+PiArCSAgICBub2RlX25vdF9hY2Nlc3NpYmxl X3dhcm5pbmc6IG1lLm5vZGVfbm90X2FjY2Vzc2libGVfd2FybmluZywKPj4gKwkgICAgaXNDcmVh dGU6IG1lLmlzQ3JlYXRlLAo+PiArCSAgICBsb2FkQ2x1c3RlckludGVyZmFjZXM6IG1lLmxvYWRD bHVzdGVySW50ZXJmYWNlcywKPj4gKwl9KTsKPj4gKwo+PiArCUV4dC5hcHBseShtZSwgewo+PiAr CSAgICBzdWJqZWN0OiBnZXR0ZXh0KCdOb2RlJyksCj4KPkNhbiBiZSBtb3ZlZCB0byBhIGRpcmVj dCBtZW1iZXIgYXNzaWdubWVudCBvdXRzaWRlIG9mIGluaXRDb21wb25lbnQoKS4KCkRvbmUuCgo+ PiArCSAgICBpdGVtczogW2lwYW5lbF0sCj4+ICsJfSk7Cj4+ICsKPj4gKwltZS5jYWxsUGFyZW50 KCk7Cj4+ICsKPj4gKwlpZiAoIW1lLmlzQ3JlYXRlKSB7Cj4+ICsJICAgIG1lLmxvYWRBbGxBdmFp bGFibGVOb2RlcygoYWxsTm9kZXMpID0+IHsKPj4gKwkJaWYgKGFsbE5vZGVzLnNvbWUoaSA9PiBp Lm5hbWUgPT09IG1lLm5vZGUpKSB7Cj4+ICsJCSAgICBtZS5sb2FkQ2x1c3RlckludGVyZmFjZXMo bWUubm9kZSwgKGNsdXN0ZXJSZXN1bHQpID0+IHsKPj4gKwkJCW1lLmxvYWRGYWJyaWNJbnRlcmZh Y2VzKG1lLmZhYnJpYywgbWUubm9kZSwgKGZhYnJpY1Jlc3VsdCkgPT4gewo+PiArCQkJICAgIGZh YnJpY1Jlc3VsdC5pbnRlcmZhY2UgPSBmYWJyaWNSZXN1bHQuaW50ZXJmYWNlCj4+ICsJCQkJLm1h cChpID0+IFBWRS5QYXJzZXIucGFyc2VQcm9wZXJ0eVN0cmluZyhpKSk7Cj4+ICsKPj4gKwkJCSAg ICBsZXQgZGF0YSA9IHsKPj4gKwkJCQlub2RlOiBmYWJyaWNSZXN1bHQsCj4+ICsJCQkJbmV0d29y a19pbnRlcmZhY2VzOiBjbHVzdGVyUmVzdWx0LAo+PiArCQkJICAgIH07Cj4+ICsKPj4gKwkJCSAg ICBpcGFuZWwuc2V0VmFsdWVzKGRhdGEpOwo+PiArCQkJfSk7Cj4+ICsJCSAgICB9KTsKPgo+bml0 OiBwZXJoYXBzIG1vdmUgc29tZSBvZiB0aGlzIGludG8gZnVuY3Rpb25zPyBUaGlzIGlzIHByZXR0 eSBkZWVwbHkKPm5lc3RlZCBhdCB0aGlzIHBvaW50LiBXb3VsZCBtYWtlIGl0IGRlZmluaXRlbHkg bW9yZSByZWFkYWJsZS4KCkhtbSBkZWJhdGFibGUgSSBndWVzc+KAlEkgZmluZCB0aGlzIHF1aXRl IG9rIHJlYWRhYmxlLCB5b3UgZ2V0IGEgc2Vuc2Ugb2YKd2hhdCBnZXRzIGRvbmUgYWZ0ZXIgd2hh dC4KCkV2ZW4gaWYgd2Ugc3BsaXQgdGhpcyB1cCBpbiBmdW5jdGlvbiwgdGhlIGNvbnRyb2wgZmxv dyB3aWxsIGJlIGhhcmRlciB0bwpzZWUgSU1PLgoKPj4gKwkJfSBlbHNlIHsKPj4gKwkJICAgIG1l Lm5vZGVfbm90X2FjY2Vzc2libGVfd2FybmluZy5zZXRIaWRkZW4oZmFsc2UpOwo+PiArCQkgICAg Ly8gSWYgdGhlIG5vZGUgaXMgbm90IGN1cnJlbnRseSBpbiB0aGUgY2x1c3RlciBhbmQgbm90IGF2 YWlsYWJsZSAod2UgY2FuJ3QgZ2V0IGl0J3MgaW50ZXJmYWNlcykuCj4+ICsJCSAgICBtZS5sb2Fk RmFicmljSW50ZXJmYWNlcyhtZS5mYWJyaWMsIG1lLm5vZGUsIChmYWJyaWNSZXN1bHQpID0+IHsK Pj4gKwkJCWZhYnJpY1Jlc3VsdC5pbnRlcmZhY2UgPSBmYWJyaWNSZXN1bHQuaW50ZXJmYWNlCj4+ ICsJCQkgICAgLm1hcChpID0+IFBWRS5QYXJzZXIucGFyc2VQcm9wZXJ0eVN0cmluZyhpKSk7Cj4+ ICsKPj4gKwkJCWxldCBkYXRhID0gewo+PiArCQkJICAgIG5vZGU6IGZhYnJpY1Jlc3VsdCwKPj4g KwkJCX07Cj4+ICsKPj4gKwkJCWlwYW5lbC5zZXRWYWx1ZXMoZGF0YSk7Cj4+ICsJCSAgICB9KTsK Pj4gKwkJfQo+PiArCSAgICB9KTsKPgo+U2VlbXMgb2RkbHkgc2ltaWxhciB0byB0aGUgYWJvdmUs IGNvdWxkIHRoaXMgYmUgc2ltcGxpZmllZC9hYnN0cmFjdGVkIGEKPmJpdCBvdmVyIGJvdGg/IElm IGl0cyBmZWFzaWJsZSwgb2YgY291cnNlLgoKSSB0aGluayB0aGF0IHdpbGwgbWFrZSBpdCBtb3Jl IGNvbXBsaWNhdGVkLCB0aGlzIGNsZWFybHkgc2VwYXJhdGVzIHRoZQoiY29ubmVjdGVkIiBhbmQg dGhlICJ1bmNvbm5lY3RlZCIgbm9kZS4KCj4+ICsJfQo+PiArCj4+ICsJaWYgKG1lLmlzQ3JlYXRl KSB7Cj4+ICsJICAgIG1lLm1ldGhvZCA9ICdQT1NUJzsKPj4gKwl9IGVsc2Ugewo+PiArCSAgICBt ZS5tZXRob2QgPSAnUFVUJzsKPj4gKwl9Cj4+ICsgICAgfSwKPj4gK30pOwo+PiArCj4+IGRpZmYg LS1naXQgYS93d3cvbWFuYWdlcjYvc2RuL2ZhYnJpY3Mvb3NwZi9Ob2RlRWRpdC5qcyBiL3d3dy9t YW5hZ2VyNi9zZG4vZmFicmljcy9vc3BmL05vZGVFZGl0LmpzCj4+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0Cj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uZDAyMjI3MmI1NDI4Cj4+IC0tLSAvZGV2L251bGwK Pj4gKysrIGIvd3d3L21hbmFnZXI2L3Nkbi9mYWJyaWNzL29zcGYvTm9kZUVkaXQuanMKPj4gQEAg LTAsMCArMSwyMDcgQEAKPj4gK0V4dC5kZWZpbmUoJ1BWRS5zZG4uRmFicmljLk9zcGYuTm9kZS5J bnB1dFBhbmVsJywgewo+PiArICAgIGV4dGVuZDogJ1Byb3htb3gucGFuZWwuSW5wdXRQYW5lbCcs Cj5bLi5dCj4+ICsKPj4gK0V4dC5kZWZpbmUoJ1BWRS5zZG4uRmFicmljLk9zcGYuTm9kZS5FZGl0 Jywgewo+Cj5PdmVyYWxsLCBzZWVtcyB0aGlzIGNvbXBvbmVudCBpcyBtb3N0bHkgdGhlIHNhbWUg YXMgdGhlIHJlc3BlY3RpdmUKPk9wZW5GYWJyaWMgY291bnRlcnBhcnQgLSBtYXliZSBhIGNvbW1v biBwYXJlbnQgRXh0SlMgY29tcG9uZW50IGNhbiBiZQo+Y3JlYXRlZD8KClllcCwgZmFjdG9yZWQg b3V0IHRoZSBOb2RlRWRpdCBhbmQgRmFicmljRWRpdCBmb3IgT3BlbkZhYnJpYyBhbmQgT1NQRiBz bwp3ZSBoYXZlIHRvIGNvbW1vbiBjb21wb25lbnRzLgoKPlsuLl0KPj4gKwo+PiArICAgIGluaXRD b21wb25lbnQ6IGZ1bmN0aW9uKCkgewo+PiArCWxldCBtZSA9IHRoaXM7Cj4+ICsKPj4gKwltZS5u b2RlX25vdF9hY2Nlc3NpYmxlX3dhcm5pbmcgPSBFeHQuY3JlYXRlKCdQcm94bW94LmZvcm0uZmll bGQuRGlzcGxheUVkaXQnLCB7Cj4+ICsJICAgIHVzZXJDbHM6ICdwbXgtaGludCcsCj4+ICsJICAg IHZhbHVlOiBnZXR0ZXh0KCdUaGUgbm9kZSBpcyBub3QgYWNjZXNzaWJsZS4nKSwKPj4gKwkgICAg aGlkZGVuOiB0cnVlLAo+PiArCX0pOwo+PiArCj4+ICsKPj4gKwlsZXQgaXBhbmVsID0gRXh0LmNy ZWF0ZSgnUFZFLnNkbi5GYWJyaWMuT3NwZi5Ob2RlLklucHV0UGFuZWwnLCB7Cj4+ICsJICAgIGlu dGVyZmFjZV9zZWxlY3RvcjogbWUuaW50ZXJmYWNlX3NlbGVjdG9yLAo+PiArCSAgICBub2RlX25v dF9hY2Nlc3NpYmxlX3dhcm5pbmc6IG1lLm5vZGVfbm90X2FjY2Vzc2libGVfd2FybmluZywKPj4g KwkgICAgaXNDcmVhdGU6IG1lLmlzQ3JlYXRlLAo+PiArCSAgICBsb2FkQ2x1c3RlckludGVyZmFj ZXM6IG1lLmxvYWRDbHVzdGVySW50ZXJmYWNlcywKPj4gKwl9KTsKPj4gKwo+PiArCUV4dC5hcHBs eShtZSwgewo+PiArCSAgICBzdWJqZWN0OiBnZXR0ZXh0KCdOb2RlJyksCj4+ICsJICAgIGl0ZW1z OiBbaXBhbmVsXSwKPj4gKwl9KTsKPj4gKwo+PiArCW1lLmNhbGxQYXJlbnQoKTsKPj4gKwo+PiAr CWlmICghbWUuaXNDcmVhdGUpIHsKPj4gKwkgICAgbWUubG9hZEFsbEF2YWlsYWJsZU5vZGVzKChh bGxOb2RlcykgPT4gewo+PiArCQlpZiAoYWxsTm9kZXMuc29tZShpID0+IGkubmFtZSA9PT0gbWUu bm9kZSkpIHsKPj4gKwkJICAgIG1lLmxvYWRDbHVzdGVySW50ZXJmYWNlcyhtZS5ub2RlLCAoY2x1 c3RlclJlc3VsdCkgPT4gewo+PiArCQkJbWUubG9hZEZhYnJpY0ludGVyZmFjZXMobWUuZmFicmlj LCBtZS5ub2RlLCAoZmFicmljUmVzdWx0KSA9PiB7Cj4+ICsJCQkgICAgZmFicmljUmVzdWx0Lmlu dGVyZmFjZSA9IGZhYnJpY1Jlc3VsdC5pbnRlcmZhY2UKPj4gKwkJCQkubWFwKGkgPT4gUFZFLlBh cnNlci5wYXJzZVByb3BlcnR5U3RyaW5nKGkpKTsKPj4gKwo+PiArCQkJICAgIGxldCBkYXRhID0g ewo+PiArCQkJCW5vZGU6IGZhYnJpY1Jlc3VsdCwKPj4gKwkJCQluZXR3b3JrX2ludGVyZmFjZXM6 IGNsdXN0ZXJSZXN1bHQsCj4+ICsJCQkgICAgfTsKPj4gKwo+PiArCQkJICAgIGlwYW5lbC5zZXRW YWx1ZXMoZGF0YSk7Cj4+ICsJCQl9KTsKPj4gKwkJICAgIH0pOwo+PiArCQl9IGVsc2Ugewo+PiAr CQkgICAgbWUubm9kZV9ub3RfYWNjZXNzaWJsZV93YXJuaW5nLnNldEhpZGRlbihmYWxzZSk7Cj4+ ICsJCSAgICAvLyBJZiB0aGUgbm9kZSBpcyBub3QgY3VycmVudGx5IGluIHRoZSBjbHVzdGVyIGFu ZCBub3QgYXZhaWxhYmxlICh3ZSBjYW4ndCBnZXQgaXQncyBpbnRlcmZhY2VzKS4KPj4gKwkJCW1l LmxvYWRGYWJyaWNJbnRlcmZhY2VzKG1lLmZhYnJpYywgbWUubm9kZSwgKGZhYnJpY1Jlc3VsdCkg PT4gewo+Cj5uaXQ6IHdyb25nIGluZGVudGF0aW9uIDpeKQoKRml4ZWQgOikKClRoYW5rcyBmb3Ig dGhlIHJldmlldyEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpwdmUtZGV2ZWwgbWFpbGluZyBsaXN0CnB2ZS1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQpo dHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wdmUtZGV2 ZWwK