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 70E0D1FF3A0 for ; Thu, 13 Jun 2024 11:27:09 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 591691D67A; Thu, 13 Jun 2024 11:27:46 +0200 (CEST) Mime-Version: 1.0 Date: Thu, 13 Jun 2024 11:27:42 +0200 Message-Id: To: "Proxmox VE development discussion" From: "Max Carrara" X-Mailer: aerc 0.17.0-72-g6a84f1331f1c References: <20240604092850.126083-1-m.carrara@proxmox.com> <20240604092850.126083-4-m.carrara@proxmox.com> <1718102096.jr51lrt2bo.astroid@yuna.none> In-Reply-To: <1718102096.jr51lrt2bo.astroid@yuna.none> X-SPAM-LEVEL: Spam detection results: 0 AWL -0.366 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 SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record T_SCC_BODY_TEXT_LINE -0.01 - Subject: Re: [pve-devel] [PATCH v1 pve-common 3/3] section config: clean up parser logic X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" T24gVHVlIEp1biAxMSwgMjAyNCBhdCAxMjo0NiBQTSBDRVNULCBGYWJpYW4gR3LDvG5iaWNobGVy IHdyb3RlOgo+IE9uIEp1bmUgNCwgMjAyNCAxMToyOCBhbSwgTWF4IENhcnJhcmEgd3JvdGU6Cj4g PiBJbiBvcmRlciB0byBtYWtlIHRoZSBwYXJzZXIgc29tZXdoYXQgbW9yZSBtYWludGFpbmFibGUg aW4gdGhlIGZ1dHVyZSwKPiA+IHRoaXMgY29tbWl0IGNsZWFucyB1cCBpdHMgbG9naWMgYW5kIG1h a2VzIGl0cyBjb250cm9sIGZsb3cgZWFzaWVyIHRvCj4gPiBmb2xsb3cuCj4KPiBpdCBhbHNvIG1p eGVzIGRlZXBlciBjaGFuZ2VzIHdpdGggdGhpbmdzIGxpa2UgdmFyaWFibGUgcmVuYW1pbmcsIHdo aWNoCj4gbWFrZXMgaXQgdW5uZWNlc3NhcmlseSBoYXJkIHRvIHJldmlldy4uCgpTaG91bGQndmUg bWVudGlvbmVkIHRoYXQ7IG1lYSBjdWxwYS4gV2lsbCBzZWUgaWYgSSBjYW4gcmV0YWluIHRoZSBv bGQKbmFtZXMsIG90aGVyd2lzZSB3aWxsIG1lbnRpb24gLyBsaXN0IHRoZSByZW5hbWVkIHZhcmlh Ymxlcy4KCj4KPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogTWF4IENhcnJhcmEgPG0uY2FycmFyYUBw cm94bW94LmNvbT4KPiA+IC0tLQo+ID4gIHNyYy9QVkUvU2VjdGlvbkNvbmZpZy5wbSB8IDE4OSAr KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+ICAxIGZpbGUgY2hhbmdl ZCwgOTggaW5zZXJ0aW9ucygrKSwgOTEgZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQg YS9zcmMvUFZFL1NlY3Rpb25Db25maWcucG0gYi9zcmMvUFZFL1NlY3Rpb25Db25maWcucG0KPiA+ IGluZGV4IGE2YjAxODMuLjMwZmFhYTQgMTAwNjQ0Cj4gPiAtLS0gYS9zcmMvUFZFL1NlY3Rpb25D b25maWcucG0KPiA+ICsrKyBiL3NyYy9QVkUvU2VjdGlvbkNvbmZpZy5wbQo+ID4gQEAgLTEwMTQs MjUgKzEwMTQsMjYgQEAgVGhlIGVycm9yLgo+ID4gIHN1YiBwYXJzZV9jb25maWcgewo+ID4gICAg ICBteSAoJGNsYXNzLCAkZmlsZW5hbWUsICRyYXcsICRhbGxvd191bmtub3duKSA9IEBfOwo+ID4g IAo+ID4gLSAgICBteSAkcGRhdGEgPSAkY2xhc3MtPnByaXZhdGUoKTsKPiA+ICsgICAgaWYgKCFk ZWZpbmVkKCRyYXcpKSB7Cj4gPiArCXJldHVybiB7Cj4gPiArCSAgICBpZHMgPT4ge30sCj4gPiAr CSAgICBvcmRlciA9PiB7fSwKPiA+ICsJICAgIGRpZ2VzdCA9PiBEaWdlc3Q6OlNIQTo6c2hhMV9o ZXgoJycpLAo+ID4gKwl9Owo+ID4gKyAgICB9Cj4gPiArCj4gPiArICAgIG15ICRyZV9iZWdpbnNf d2l0aF9jb21tZW50ID0gcXIvXlxzKiMvOwo+ID4gKyAgICBteSAkcmVfa3ZfcGFpciA9IHFyL15c cysgIChcUyspICAoXHMrICguKlxTKSApPyAgXHMqJC94Owo+Cj4gSSBhbSBub3Qgc3VyZSB0aGlz IGlzIHJlYWxseSBtb3JlIHJlYWRhYmxlPyBlc3BlY2lhbGx5IGluIGEgUkUgdGhhdCBpcwo+IGJh c2ljYWxseSBvbmx5IGNvbmNlcm5lZCB3aXRoIHdoaXRlc3BhY2UuLiBhbmQgZm9yIGEgUkUgdGhh dCBpcyBvbmx5Cj4gdXNlZCBvbmNlLi4KCkkgbWVhbiBJIGNvdWxkIGRyb3AgdGhlIGB4YCBmbGFn IGlmIHlvdSdkIGxpa2UsIGp1c3QgdGhvdWdodCB0aGF0IGl0CndvdWxkIG1ha2UgaXQgYSBsaXR0 bGUgZWFzaWVyIHRvIHBhcnNlLi4uIFRob3VnaCwgdGhlIHJlYXNvbiB3aHkgSSdtCnBlcnNvbmFs bHkgYSBmYW4gb2YgYXNzaWduaW5nIHJlZ2V4ZXMgdG8gdmFyaWFibGVzIGlzIGJlY2F1c2UgaXQg bWFrZXMKdGhlIGNvZGUgbW9yZSBleHByZXNzaXZlIElNTy4gSWYgc29tZW9uZSB3aG8gdXN1YWxs eSBkb2Vzbid0IGRlYWwgd2l0aApyZWdleGVzIGhhcyB0byByZWFkIHRoaXMgY29kZSwgdGhlIHZh cmlhYmxlIG5hbWUgZGVzY3JpYmVzIHdoYXQgdGhlCnJlZ2V4IGRvZXMuIFRoYXQncyBtYWlubHkg dGhlIHJlYXNvbiB3aHkgSSBwdXQgaXQgdGhlcmUuCgo+Cj4gPiAgCj4gPiAgICAgIG15ICRpZHMg PSB7fTsKPiA+ICAgICAgbXkgJG9yZGVyID0ge307Cj4gPiAtCj4gPiAtICAgICRyYXcgPSAnJyBp ZiAhZGVmaW5lZCgkcmF3KTsKPiA+IC0KPiA+ICAgICAgbXkgJGRpZ2VzdCA9IERpZ2VzdDo6U0hB OjpzaGExX2hleCgkcmF3KTsKPiA+ICAKPiA+IC0gICAgbXkgJHByaSA9IDE7Cj4gPiArICAgIG15 ICRjdXJyZW50X29yZGVyID0gMTsKPgo+IHRoaXMgaXMgYWN0dWFsbHkgYSB3b3JzZSBuYW1lIHRo YW4gYmVmb3JlLiB0aGlzIHdvdWxkIGJlIHNvbWV0aGluZyBsaWtlCj4gY3VycmVudF9pbmRleD8g Y3VycmVudF9wb3NpdGlvbj8gc2VjdGlvbl9ubz8KCkhtLCBhZ3JlZWQgLSB0aG9zZSBhcmUgYWN0 dWFsbHkgYmV0dGVyLiBXaWxsIGluY29ycG9yYXRlIGluIHYyLCB0aGFua3MhCgo+Cj4gPiArICAg IG15ICRsaW5lX25vID0gMDsKPiA+ICAKPiA+IC0gICAgbXkgJGxpbmVubyA9IDA7Cj4gPiAgICAg IG15IEBsaW5lcyA9IHNwbGl0KC9cbi8sICRyYXcpOwo+ID4gLSAgICBteSAkbmV4dGxpbmUgPSBz dWIgewo+ID4gLQl3aGlsZSAoZGVmaW5lZChteSAkbGluZSA9IHNoaWZ0IEBsaW5lcykpIHsKPiA+ IC0JICAgICRsaW5lbm8rKzsKPiA+IC0JICAgIHJldHVybiAkbGluZSBpZiAoJGxpbmUgIX4gL15c cyojLyk7Cj4gPiAtCX0KPiA+IC0gICAgfTsKPiA+ICsgICAgbXkgQGVycm9yczsKPgo+IHdoYXQg ZG8gd2UgZ2FpbiBmcm9tIHRoaXM/CgpNeSBpbnRlbnRpb24gaGVyZSB3YXMgdG8gd29yayBvbiB0 aGUgYXJyYXkgZGlyZWN0bHkgYW5kIHRoZW4gcmV0dXJuIGl0CmFzIGEgcmVmZXJlbmNlIGJlbG93 IChpZiB0aGVyZSBhcmUgYW55IGVycm9ycykgcmF0aGVyIHRoYW4gd29ya2luZyB3aXRoCmEgcmVm ZXJlbmNlIGZyb20gdGhlIGdldC1nbywgaGF2aW5nIHRvIGRlcmVmIHdoZW5ldmVyIHRoZXJlJ3Mg YSBgcHVzaGAuCgpJIGd1ZXNzIGl0J3MgbW9yZSBhIHBlcnNvbmFsIHByZWZlcmVuY2Ugb2YgbWlu ZSwgSSBqdXN0IGZpbmQgaXQgYmV0dGVyCnRvIHdvcmsgd2l0aC4gQ2FuIGtlZXAgdGhlIGFycmF5 IHJlZiBpbiB2MiB0aG91Z2gsIGRvZXNuJ3QgbWF0dGVyIHRoYXQKbXVjaC4gOlAKCj4KPiA+ICAK PiA+ICAgICAgbXkgJGlzX2FycmF5ID0gc3ViIHsKPiA+ICAJbXkgKCR0eXBlLCAka2V5KSA9IEBf Owo+ID4gQEAgLTEwNDMsMTA2ICsxMDQ0LDExMiBAQCBzdWIgcGFyc2VfY29uZmlnIHsKPiA+ICAJ cmV0dXJuICRzY2hlbWEtPnt0eXBlfSBlcSAnYXJyYXknOwo+ID4gICAgICB9Owo+ID4gIAo+ID4g LSAgICBteSAkZXJyb3JzID0gW107Cj4gPiAtICAgIHdoaWxlIChAbGluZXMpIHsKPiA+IC0JbXkg JGxpbmUgPSAkbmV4dGxpbmUtPigpOwo+ID4gKyAgICBteSAkZ2V0X25leHRfbGluZSA9IHN1YiB7 Cj4gPiArCXdoaWxlIChzY2FsYXIoQGxpbmVzKSkgewo+ID4gKwkgICAgbXkgJGxpbmUgPSBzaGlm dChAbGluZXMpOwo+ID4gKwkgICAgJGxpbmVfbm8rKzsKPiA+ICsKPiA+ICsJICAgIG5leHQgaWYg KCRsaW5lID1+IG0vJHJlX2JlZ2luc193aXRoX2NvbW1lbnQvKTsKPiA+ICsKPiA+ICsJICAgIHJl dHVybiAkbGluZTsKPiA+ICsJfQo+ID4gKwo+ID4gKwlyZXR1cm4gdW5kZWY7Cj4gPiArICAgIH07 Cj4gPiArCj4gPiArICAgIG15ICRza2lwX3RvX25leHRfZW1wdHlfbGluZSA9IHN1YiB7Cj4gPiAr CXdoaWxlICgkZ2V0X25leHRfbGluZS0+KCkgbmUgJycpIHt9Cj4gPiArICAgIH07Cj4gPiArCj4g PiArICAgIHdoaWxlIChkZWZpbmVkKG15ICRsaW5lID0gJGdldF9uZXh0X2xpbmUtPigpKSkgewo+ ID4gIAluZXh0IGlmICEkbGluZTsKPiA+ICAKPiA+IC0JbXkgJGVycnByZWZpeCA9ICJmaWxlICRm aWxlbmFtZSBsaW5lICRsaW5lbm8iOwo+ID4gKwlteSAkZXJycHJlZml4ID0gImZpbGUgJGZpbGVu YW1lIGxpbmUgJGxpbmVfbm8iOwo+ID4gIAo+ID4gLQlteSAoJHR5cGUsICRzZWN0aW9uSWQsICRl cnJtc2csICRjb25maWcpID0gJGNsYXNzLT5wYXJzZV9zZWN0aW9uX2hlYWRlcigkbGluZSk7Cj4g PiAtCWlmICgkY29uZmlnKSB7Cj4gPiAtCSAgICBteSAkc2tpcCA9IDA7Cj4gPiAtCSAgICBteSAk dW5rbm93biA9IDA7Cj4gPiArCW15ICgkdHlwZSwgJHNlY3Rpb25faWQsICRlcnJtc2csICRjb25m aWcpID0gJGNsYXNzLT5wYXJzZV9zZWN0aW9uX2hlYWRlcigkbGluZSk7Cj4gPiAgCj4gPiAtCSAg ICBteSAkcGx1Z2luOwo+ID4gKwlpZiAoIWRlZmluZWQoJGNvbmZpZykpIHsKPiA+ICsJICAgIHdh cm4gIiRlcnJwcmVmaXggLSBpZ25vcmUgY29uZmlnIGxpbmU6ICRsaW5lXG4iOwo+ID4gKwkgICAg bmV4dDsKPiA+ICsJfQo+ID4gIAo+ID4gLQkgICAgaWYgKCRlcnJtc2cpIHsKPiA+IC0JCSRza2lw ID0gMTsKPiA+IC0JCWNob21wICRlcnJtc2c7Cj4gPiAtCQl3YXJuICIkZXJycHJlZml4IChza2lw IHNlY3Rpb24gJyRzZWN0aW9uSWQnKTogJGVycm1zZ1xuIjsKPiA+IC0JICAgIH0gZWxzaWYgKCEk dHlwZSkgewo+ID4gLQkJJHNraXAgPSAxOwo+ID4gLQkJd2FybiAiJGVycnByZWZpeCAoc2tpcCBz ZWN0aW9uICckc2VjdGlvbklkJyk6IG1pc3NpbmcgdHlwZSAtIGludGVybmFsIGVycm9yXG4iOwo+ ID4gLQkgICAgfSBlbHNlIHsKPiA+IC0JCWlmICghKCRwbHVnaW4gPSAkcGRhdGEtPntwbHVnaW5z fS0+eyR0eXBlfSkpIHsKPiA+IC0JCSAgICBpZiAoJGFsbG93X3Vua25vd24pIHsKPiA+IC0JCQkk dW5rbm93biA9IDE7Cj4gPiAtCQkgICAgfSBlbHNlIHsKPiA+IC0JCQkkc2tpcCA9IDE7Cj4gPiAt CQkJd2FybiAiJGVycnByZWZpeCAoc2tpcCBzZWN0aW9uICckc2VjdGlvbklkJyk6IHVuc3VwcG9y dGVkIHR5cGUgJyR0eXBlJ1xuIjsKPiA+IC0JCSAgICB9Cj4gPiAtCQl9Cj4gPiAtCSAgICB9Cj4g PiArCWlmICgkZXJybXNnKSB7Cj4gPiArCSAgICBjaG9tcCAkZXJybXNnOwo+ID4gKwkgICAgd2Fy biAiJGVycnByZWZpeCAoc2tpcCBzZWN0aW9uICckc2VjdGlvbl9pZCcpOiAkZXJybXNnXG4iOwo+ ID4gKwkgICAgJHNraXBfdG9fbmV4dF9lbXB0eV9saW5lLT4oKTsKPiA+ICsJICAgIG5leHQ7Cj4g PiArCX0KPiA+ICsKPiA+ICsJaWYgKCEkdHlwZSkgewo+ID4gKwkgICAgd2FybiAiJGVycnByZWZp eCAoc2tpcCBzZWN0aW9uICckc2VjdGlvbl9pZCcpOiBtaXNzaW5nIHR5cGUgLSBpbnRlcm5hbCBl cnJvclxuIjsKPiA+ICsJICAgICRza2lwX3RvX25leHRfZW1wdHlfbGluZS0+KCk7Cj4gPiArCSAg ICBuZXh0Owo+ID4gKwl9Cj4gPiArCj4gPiArCW15ICRwbHVnaW4gPSBldmFsIHsgJGNsYXNzLT5s b29rdXAoJHR5cGUpIH07Cj4gPiArCW15ICRpc191bmtub3duX3R5cGUgPSBkZWZpbmVkKCRAKSAm JiAkQCBuZSAnJzsKPiA+ICsKPiA+ICsJaWYgKCRpc191bmtub3duX3R5cGUgJiYgISRhbGxvd191 bmtub3duKSB7Cj4gPiArCSAgICB3YXJuICIkZXJycHJlZml4IChza2lwIHNlY3Rpb24gJyRzZWN0 aW9uX2lkJyk6IHVuc3VwcG9ydGVkIHR5cGUgJyR0eXBlJ1xuIjsKPiA+ICsJICAgICRza2lwX3Rv X25leHRfZW1wdHlfbGluZS0+KCk7Cj4gPiArCSAgICBuZXh0Owo+ID4gKwl9Cj4gPiArCj4gPiAr CSMgUGFyc2Uga3YtcGFpcnMgb2Ygc2VjdGlvbiAtIHdpbGwgZ28gb24gdW50aWwgZW1wdHkgbGlu ZSBpcyBlbmNvdW50ZXJlZAo+ID4gKwl3aGlsZSAobXkgJHNlY3Rpb25fbGluZSA9ICRnZXRfbmV4 dF9saW5lLT4oKSkgewo+ID4gKwkgICAgaWYgKCRzZWN0aW9uX2xpbmUgPX4gbS8kcmVfa3ZfcGFp ci8pIHsKPiA+ICsJCW15ICgka2V5LCAkdmFsdWUpID0gKCQxLCAkMyk7Cj4gPiAgCj4gPiAtCSAg ICB3aGlsZSAoJGxpbmUgPSAkbmV4dGxpbmUtPigpKSB7Cj4gPiAtCQluZXh0IGlmICRza2lwOwo+ ID4gLQo+ID4gLQkJJGVycnByZWZpeCA9ICJmaWxlICRmaWxlbmFtZSBsaW5lICRsaW5lbm8iOwo+ ID4gLQo+ID4gLQkJaWYgKCRsaW5lID1+IG0vXlxzKyhcUyspKFxzKyguKlxTKSk/XHMqJC8pIHsK PiA+IC0JCSAgICBteSAoJGssICR2KSA9ICgkMSwgJDMpOwo+ID4gLQo+ID4gLQkJICAgIGV2YWwg ewo+ID4gLQkJCWlmICgkdW5rbm93bikgewo+ID4gLQkJCSAgICBpZiAoIWRlZmluZWQoJGNvbmZp Zy0+eyRrfSkpIHsKPiA+IC0JCQkJJGNvbmZpZy0+eyRrfSA9ICR2Owo+ID4gLQkJCSAgICB9IGVs c2Ugewo+ID4gLQkJCQlpZiAoIXJlZigkY29uZmlnLT57JGt9KSkgewo+ID4gLQkJCQkgICAgJGNv bmZpZy0+eyRrfSA9IFskY29uZmlnLT57JGt9XTsKPiA+IC0JCQkJfQo+ID4gLQkJCQlwdXNoICRj b25maWctPnska30tPkAqLCAkdjsKPiA+IC0JCQkgICAgfQo+ID4gLQkJCX0gZWxzaWYgKCRpc19h cnJheS0+KCR0eXBlLCAkaykpIHsKPiA+IC0JCQkgICAgJHYgPSAkcGx1Z2luLT5jaGVja192YWx1 ZSgkdHlwZSwgJGssICR2LCAkc2VjdGlvbklkKTsKPiA+IC0JCQkgICAgJGNvbmZpZy0+eyRrfSA9 IFtdIGlmICFkZWZpbmVkKCRjb25maWctPnska30pOwo+ID4gLQkJCSAgICBwdXNoICRjb25maWct Pnska30tPkAqLCAkdjsKPiA+ICsJCWV2YWwgewo+ID4gKwkJICAgIGlmICgkaXNfdW5rbm93bl90 eXBlKSB7Cj4gPiArCQkJaWYgKCFkZWZpbmVkKCRjb25maWctPnska2V5fSkpIHsKPiA+ICsJCQkg ICAgJGNvbmZpZy0+eyRrZXl9ID0gJHZhbHVlOwo+ID4gIAkJCX0gZWxzZSB7Cj4gPiAtCQkJICAg IGRpZSAiZHVwbGljYXRlIGF0dHJpYnV0ZVxuIiBpZiBkZWZpbmVkKCRjb25maWctPnska30pOwo+ ID4gLQkJCSAgICAkdiA9ICRwbHVnaW4tPmNoZWNrX3ZhbHVlKCR0eXBlLCAkaywgJHYsICRzZWN0 aW9uSWQpOwo+ID4gLQkJCSAgICAkY29uZmlnLT57JGt9ID0gJHY7Cj4gPiArCQkJICAgICRjb25m aWctPnska2V5fSA9IFskY29uZmlnLT57JGtleX1dIGlmICFyZWYoJGNvbmZpZy0+eyRrZXl9KTsK PiA+ICsJCQkgICAgcHVzaCAkY29uZmlnLT57JGtleX0tPkAqLCAkdmFsdWU7Cj4gPiAgCQkJfQo+ ID4gLQkJICAgIH07Cj4gPiAtCQkgICAgaWYgKG15ICRlcnIgPSAkQCkgewo+ID4gLQkJCXdhcm4g IiRlcnJwcmVmaXggKHNlY3Rpb24gJyRzZWN0aW9uSWQnKSAtIHVuYWJsZSB0byBwYXJzZSB2YWx1 ZSBvZiAnJGsnOiAkZXJyIjsKPiA+IC0JCQlwdXNoICRlcnJvcnMtPkAqLCB7Cj4gPiAtCQkJICAg IGNvbnRleHQgPT4gJGVycnByZWZpeCwKPiA+IC0JCQkgICAgc2VjdGlvbiA9PiAkc2VjdGlvbklk LAo+ID4gLQkJCSAgICBrZXkgPT4gJGssCj4gPiAtCQkJICAgIGVyciA9PiAkZXJyLAo+ID4gLQkJ CX07Cj4gPiArCQkgICAgfSBlbHNpZiAoJGlzX2FycmF5LT4oJHR5cGUsICRrZXkpKSB7Cj4gPiAr CQkJJHZhbHVlID0gJHBsdWdpbi0+Y2hlY2tfdmFsdWUoJHR5cGUsICRrZXksICR2YWx1ZSwgJHNl Y3Rpb25faWQpOwo+ID4gKwkJCSRjb25maWctPnska2V5fSA9IFtdIGlmICFkZWZpbmVkKCRjb25m aWctPnska2V5fSk7Cj4gPiArCQkJcHVzaCAkY29uZmlnLT57JGtleX0tPkAqLCAkdmFsdWU7Cj4g PiArCQkgICAgfSBlbHNlIHsKPiA+ICsJCQlkaWUgImR1cGxpY2F0ZSBhdHRyaWJ1dGVcbiIgaWYg ZGVmaW5lZCgkY29uZmlnLT57JGtleX0pOwo+ID4gKwkJCSR2YWx1ZSA9ICRwbHVnaW4tPmNoZWNr X3ZhbHVlKCR0eXBlLCAka2V5LCAkdmFsdWUsICRzZWN0aW9uX2lkKTsKPiA+ICsJCQkkY29uZmln LT57JGtleX0gPSAkdmFsdWU7Cj4gPiAgCQkgICAgfQo+ID4gLQo+ID4gLQkJfSBlbHNlIHsKPiA+ IC0JCSAgICB3YXJuICIkZXJycHJlZml4IChzZWN0aW9uICckc2VjdGlvbklkJykgLSBpZ25vcmUg Y29uZmlnIGxpbmU6ICRsaW5lXG4iOwo+ID4gKwkJfTsKPiA+ICsJCWlmIChteSAkZXJyID0gJEAp IHsKPiA+ICsJCSAgICB3YXJuICIkZXJycHJlZml4IChzZWN0aW9uICckc2VjdGlvbl9pZCcpIC0g dW5hYmxlIHRvIHBhcnNlIHZhbHVlIG9mICcka2V5JzogJGVyciI7Cj4gPiArCQkgICAgcHVzaCBA ZXJyb3JzLCB7Cj4gPiArCQkJY29udGV4dCA9PiAkZXJycHJlZml4LAo+ID4gKwkJCXNlY3Rpb24g PT4gJHNlY3Rpb25faWQsCj4gPiArCQkJa2V5ID0+ICRrZXksCj4gPiArCQkJZXJyID0+ICRlcnIs Cj4gPiArCQkgICAgfTsKPiA+ICAJCX0KPiA+ICAJICAgIH0KPiA+ICsJfQo+ID4gIAo+ID4gLQkg ICAgaWYgKCR1bmtub3duKSB7Cj4gPiAtCQkkY29uZmlnLT57dHlwZX0gPSAkdHlwZTsKPiA+IC0J CSRpZHMtPnskc2VjdGlvbklkfSA9ICRjb25maWc7Cj4gPiAtCQkkb3JkZXItPnskc2VjdGlvbklk fSA9ICRwcmkrKzsKPiA+IC0JICAgIH0gZWxzaWYgKCEkc2tpcCAmJiAkdHlwZSAmJiAkcGx1Z2lu ICYmICRjb25maWcpIHsKPiA+IC0JCSRjb25maWctPnt0eXBlfSA9ICR0eXBlOwo+ID4gLQkJaWYg KCEkdW5rbm93bikgewo+ID4gLQkJICAgICRjb25maWcgPSBldmFsIHsgJGNvbmZpZyA9ICRwbHVn aW4tPmNoZWNrX2NvbmZpZygkc2VjdGlvbklkLCAkY29uZmlnLCAxLCAxKTsgfTsKPiA+IC0JCSAg ICB3YXJuICIkZXJycHJlZml4IChza2lwIHNlY3Rpb24gJyRzZWN0aW9uSWQnKTogJEAiIGlmICRA Owo+ID4gLQkJfQo+ID4gLQkJJGlkcy0+eyRzZWN0aW9uSWR9ID0gJGNvbmZpZzsKPiA+IC0JCSRv cmRlci0+eyRzZWN0aW9uSWR9ID0gJHByaSsrOwo+ID4gKwlpZiAoJGlzX3Vua25vd25fdHlwZSB8 fCAoJHR5cGUgJiYgJHBsdWdpbiAmJiAkY29uZmlnKSkgewo+ID4gKwkgICAgJGNvbmZpZy0+e3R5 cGV9ID0gJHR5cGU7Cj4gPiArCj4gPiArCSAgICBpZiAoISRpc191bmtub3duX3R5cGUpIHsKPiA+ ICsJCSRjb25maWcgPSBldmFsIHsgJGNvbmZpZyA9ICRwbHVnaW4tPmNoZWNrX2NvbmZpZygkc2Vj dGlvbl9pZCwgJGNvbmZpZywgMSwgMSk7IH07Cj4gPiArCQl3YXJuICIkZXJycHJlZml4IChza2lw IHNlY3Rpb24gJyRzZWN0aW9uX2lkJyk6ICRAIiBpZiAkQDsKPiA+ICAJICAgIH0KPiA+ICAKPiA+ IC0JfSBlbHNlIHsKPiA+IC0JICAgIHdhcm4gIiRlcnJwcmVmaXggLSBpZ25vcmUgY29uZmlnIGxp bmU6ICRsaW5lXG4iOwo+ID4gKwkgICAgJGlkcy0+eyRzZWN0aW9uX2lkfSA9ICRjb25maWc7Cj4g PiArCSAgICAkb3JkZXItPnskc2VjdGlvbl9pZH0gPSAkY3VycmVudF9vcmRlcisrOwo+ID4gIAl9 Cj4gPiAgICAgIH0KPiA+ICAKPiA+ICAgICAgbXkgJGNmZyA9IHsKPiA+ICAJaWRzID0+ICRpZHMs Cj4gPiAgCW9yZGVyID0+ICRvcmRlciwKPiA+IC0JZGlnZXN0ID0+ICRkaWdlc3QKPiA+ICsJZGln ZXN0ID0+ICRkaWdlc3QsCj4gPiAgICAgIH07Cj4gPiAtICAgICRjZmctPntlcnJvcnN9ID0gJGVy cm9ycyBpZiBzY2FsYXIoJGVycm9ycy0+QCopID4gMDsKPiA+ICsKPiA+ICsgICAgJGNmZy0+e2Vy cm9yc30gPSBcQGVycm9ycyBpZiBzY2FsYXIoQGVycm9ycykgPiAwOwo+ID4gIAo+ID4gICAgICBy ZXR1cm4gJGNmZzsKPiA+ICB9Cj4gPiAtLSAKPiA+IDIuMzkuMgo+ID4gCj4gPiAKPiA+IAo+ID4g X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+IHB2ZS1k ZXZlbCBtYWlsaW5nIGxpc3QKPiA+IHB2ZS1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQo+ID4gaHR0 cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcHZlLWRldmVs Cj4gPiAKPiA+IAo+ID4gCj4KPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCj4gcHZlLWRldmVsIG1haWxpbmcgbGlzdAo+IHB2ZS1kZXZlbEBsaXN0cy5w cm94bW94LmNvbQo+IGh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xp c3RpbmZvL3B2ZS1kZXZlbAoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpwdmUtZGV2ZWwgbWFpbGluZyBsaXN0CnB2ZS1kZXZlbEBsaXN0cy5wcm94bW94 LmNvbQpodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9w dmUtZGV2ZWwK