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 510E81FF15C for ; Fri, 14 Nov 2025 12:18:30 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 7CAE9F61A; Fri, 14 Nov 2025 12:18:45 +0100 (CET) From: Daniel Kral To: pve-devel@lists.proxmox.com Date: Fri, 14 Nov 2025 12:17:06 +0100 Message-ID: <20251114111828.160294-9-d.kral@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251114111828.160294-1-d.kral@proxmox.com> References: <20251114111828.160294-1-d.kral@proxmox.com> MIME-Version: 1.0 X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1763119087014 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.016 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: [pve-devel] [PATCH ha-manager v4 08/21] rules: make plugins register transformers instead of plugin_transform 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" UmVwbGFjZXMgdGhlIHJ1bGUgcGx1Z2lucycgcGx1Z2luX3RyYW5zZm9ybSguLi4pIG1ldGhvZCBi eSBhCnJlZ2lzdGVyX3RyYW5zZm9ybSguLi4pIGNhbGwgZm9yIGVhY2ggZGVjbGFyZWQgcnVsZSB0 cmFuc2Zvcm1lciB0byBtYWtlCnRoZWlyIGludGVyZmFjZSBtb3JlIHNpbWlsYXIgdG8gdGhlIG9u ZSBmb3IgcnVsZSBwbHVnaW4gY2hlY2tzLgoKU2lnbmVkLW9mZi1ieTogRGFuaWVsIEtyYWwgPGQu a3JhbEBwcm94bW94LmNvbT4KUmV2aWV3ZWQtYnk6IE1pY2hhZWwgS8O2cHBsIDxtLmtvZXBwbEBw cm94bW94LmNvbT4KVGVzdGVkLWJ5OiBNaWNoYWVsIEvDtnBwbCA8bS5rb2VwcGxAcHJveG1veC5j b20+Ci0tLQogc3JjL1BWRS9IQS9SdWxlcy5wbSAgICAgICAgICAgICAgICAgIHwgODUgKysrKysr KysrKysrKysrKysrKystLS0tLS0tLQogc3JjL1BWRS9IQS9SdWxlcy9SZXNvdXJjZUFmZmluaXR5 LnBtIHwgMjIgKysrLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA3MSBpbnNlcnRpb25zKCspLCAzNiBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvUFZFL0hBL1J1bGVzLnBtIGIvc3JjL1BWRS9I QS9SdWxlcy5wbQppbmRleCBjODFiMTUyNS4uYTA3NWZlYWMgMTAwNjQ0Ci0tLSBhL3NyYy9QVkUv SEEvUnVsZXMucG0KKysrIGIvc3JjL1BWRS9IQS9SdWxlcy5wbQpAQCAtMzIsNiArMzIsMTIgQEAg dGhlIGZlYXNpYmlsaXR5IGJldHdlZW4gcnVsZXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQgYW5kIGJl dHdlZW4gcnVsZXMgb2YKIGRpZmZlcmVudCB0eXBlcywgYW5kIHBydW5lIHRoZSBydWxlIHNldCBp biBzdWNoIGEgd2F5LCB0aGF0IGl0IGJlY29tZXMgZmVhc2libGUKIGFnYWluLCB3aGlsZSBtaW5p bWl6aW5nIHRoZSBhbW91bnQgb2YgcnVsZXMgdGhhdCBuZWVkIHRvIGJlIHBydW5lZC4KIAorTW9y ZSBzbywgdGhlIHJ1bGVzIGdpdmVuIGJ5IHRoZSBjb25maWcgZmlsZSBtaWdodCBub3QgYmUgaW4g dGhlIGJlc3QgZm9ybWF0IHRvCitiZSB1c2VkIGludGVybmFsbHkgb3IgZG9lcyBub3QgY29udGFp biB0aGUgaW1wbGljaXRseSBzdGF0ZWQgcnVsZXMsIHdoaWNoIGFyZQoraW5kdWNlZCBieSB0aGUg cmVsYXRpb25zaGlwIGJldHdlZW4gZGlmZmVyZW50IHJ1bGVzLiBUaGVyZWZvcmUsIHRoaXMgcGFj a2FnZQorYWxzbyBwcm92aWRlcyB0aGUgY2FwYWJpbGl0eSB0byBDPEw8cmVnaXN0ZXIgdHJhbnNm b3Jtc3wvUkVHSVNURVJJTkcgVFJBTlNGT1JNUz4+Cit0byBpbXBsZW1lbnQgdGhlc2UgaW50ZXJu YWwgcnVsZSB0cmFuc2Zvcm1hdGlvbnMuCisKIFRoaXMgcGFja2FnZXMgaW5oZXJpdHMgaXRzIGNv bmZpZy1yZWxhdGVkIG1ldGhvZHMgZnJvbSBDPEw8UFZFOjpTZWN0aW9uQ29uZmlnPj4KIGFuZCB0 aGVyZWZvcmUgcnVsZSBwbHVnaW5zIG5lZWQgdG8gaW1wbGVtZW50IG1ldGhvZHMgZnJvbSB0aGVy ZSBhcyB3ZWxsLgogCkBAIC05MCw2ICs5NiwyOCBAQCBhbmQgYmxhbWVzIHRoZXNlIGVycm9ycyBv biB0aGUgSTxjb21tZW50PiBwcm9wZXJ0eToKICAgICAgICAgfQogICAgICk7CiAKKz1oZWFkMiBS RUdJU1RFUklORyBUUkFOU0ZPUk1TCisKK1J1bGUgdHJhbnNmb3JtcyBhcmUgdXNlZCBmb3IgdHJh bnNmb3JtaW5nIHRoZSBydWxlIHNldCBpbiBzdWNoIGEgd2F5IHRoYXQKK3RoZSBydWxlcyBwcm92 aWRlZCBieSB0aGUgcnVsZXMgY29uZmlnIGFyZSBlYXNpZXIgdG8gd29yayB3aXRoIChmb3IgZXhh bXBsZSwKK3RyYW5zZm9ybWluZyBydWxlcyBpbnRvIGVxdWl2YWxlbnQgZm9ybXMpIG9yIG1ha2Ug dGhlIHJ1bGUgc2V0IG1vcmUgY29tcGxldGUKKyhlLmcuIGV4cGxpY2l0bHkgY3JlYXRlIHNlbWFu dGljYWxseSBpbXBsaWNpdCBydWxlcykuCisKK0M8TDw8IFJlZ2lzdGVyaW5nIHRyYW5zZm9ybXN8 LyRjbGFzcy0+cmVnaXN0ZXJfdHJhbnNmb3JtKC4uLikgPj4+IGlzIHRoZSBzYW1lCithcyBmb3Ig cmVnaXN0ZXJpbmcgY2hlY2tzLiBGb2xsb3dpbmcgdXAgb24gdGhlIGV4YW1wbGUgZnJvbSB0aGF0 IHNlY3Rpb24sIHRoZQorZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgYSBwb3NzaWJsZSBydWxlIHBs dWdpbidzIHRyYW5zZm9ybSwgd2hpY2ggcmVtb3ZlcyB0aGUKK0k8Y29tbWVudD4gcHJvcGVydHkg ZnJvbSBlYWNoIHJ1bGU6CisKKyAgICBfX1BBQ0tBR0VfXy0+cmVnaXN0ZXJfdHJhbnNmb3JtZXIo CisgICAgICAgIHN1YiB7CisgICAgICAgICAgICBteSAoJHJ1bGVzLCAkYXJncykgPSBAXzsKKwor ICAgICAgICAgICAgZm9yIG15ICRydWxlaWQgKGtleXMgJGFyZ3MtPntjdXN0b21fcnVsZXN9LT4l KikgeworICAgICAgICAgICAgICAgIGRlbGV0ZSAkcnVsZXMtPntpZHN9LT57JHJ1bGVpZH0tPntj b21tZW50fTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICk7CisKID1oZWFkMSBNRVRI T0RTCiAKID1jdXQKQEAgLTI0NiwxMCArMjc0LDExIEBAIHN1YiBzZXRfcnVsZV9kZWZhdWx0cyA6 IHByb3RvdHlwZSgkJCkgewogICAgIH0KIH0KIAotIyBSdWxlIGNoZWNrcyBkZWZpbml0aW9uIGFu ZCBtZXRob2RzCisjIFJ1bGUgY2hlY2tzIGFuZCB0cmFuc2Zvcm1zIGRlZmluaXRpb24gYW5kIG1l dGhvZHMKIAogbXkgJHR5cGVzID0gW107CiBteSAkY2hlY2tkZWY7CitteSAkdHJhbnNmb3JtZGVm OwogCiBzdWIgcmVnaXN0ZXIgewogICAgIG15ICgkY2xhc3MpID0gQF87CkBAIC0yNzksNiArMzA4 LDIzIEBAIHN1YiByZWdpc3Rlcl9jaGVjayA6IHByb3RvdHlwZSgkJCQpIHsKICAgICBdOwogfQog Cis9aGVhZDMgJGNsYXNzLT5yZWdpc3Rlcl90cmFuc2Zvcm0oLi4uKQorCis9aGVhZDMgJGNsYXNz LT5yZWdpc3Rlcl90cmFuc2Zvcm0oJHRyYW5zZm9ybV9mdW5jKQorCitVc2VkIHRvIHJlZ2lzdGVy IHJ1bGUgdHJhbnNmb3JtZXJzIGZvciBhIHJ1bGUgcGx1Z2luLgorCis9Y3V0CisKK3N1YiByZWdp c3Rlcl90cmFuc2Zvcm0gOiBwcm90b3R5cGUoJCQpIHsKKyAgICBteSAoJGNsYXNzLCAkdHJhbnNm b3JtX2Z1bmMpID0gQF87CisKKyAgICBteSAkdHlwZSA9IGV2YWwgeyAkY2xhc3MtPnR5cGUoKSB9 OworICAgICR0eXBlID0gJ2dsb2JhbCcgaWYgJEA7CisKKyAgICBwdXNoICR0cmFuc2Zvcm1kZWYt PnskdHlwZX0tPkAqLCAkdHJhbnNmb3JtX2Z1bmM7Cit9CisKID1oZWFkMyAkY2xhc3MtPmdldF9w bHVnaW5fY2hlY2tfYXJndW1lbnRzKC4uLikKIAogPWhlYWQzICRjbGFzcy0+Z2V0X3BsdWdpbl9j aGVja19hcmd1bWVudHMoJHJ1bGVzKQpAQCAtMjg3LDYgKzMzMyw3IEBAIEI8T1BUSU9OQUw6PiBD YW4gYmUgaW1wbGVtZW50ZWQgaW4gdGhlIEk8cnVsZSBwbHVnaW4+LgogCiBSZXR1cm5zIGEgaGFz aCwgdXN1YWxseSBzdWJzZXRzIG9mIHJ1bGVzIHJlbGV2YW50IHRvIHRoZSBwbHVnaW4sIHdoaWNo IGFyZQogcGFzc2VkIHRvIHRoZSBwbHVnaW4ncyBDPEw8PCByZWdpc3RlcmVkIGNoZWNrc3wvJGNs YXNzLT5yZWdpc3Rlcl9jaGVjayguLi4pID4+PgorYW5kIEM8TDw8IHJlZ2lzdGVyZWQgdHJhbnNm b3Jtc3wvJGNsYXNzLT5yZWdpc3Rlcl90cmFuc2Zvcm0oLi4uKSA+Pj4KIHNvIHRoYXQgdGhlIGNy ZWF0aW9uIG9mIHRoZXNlIGNhbiBiZSBzaGFyZWQgaW5iZXR3ZWVuIHJ1bGUgY2hlY2sKIGltcGxl bWVudGF0aW9ucy4KIApAQCAtMzYwLDE4ICs0MDcsNiBAQCBzdWIgY2hlY2tfZmVhc2liaWxpdHkg OiBwcm90b3R5cGUoJCQkKSB7CiAgICAgcmV0dXJuICRnbG9iYWxfZXJyb3JzOwogfQogCi09aGVh ZDMgJGNsYXNzLT5wbHVnaW5fdHJhbnNmb3JtKCRydWxlcykKLQotQjxPUFRJT05BTDo+IENhbiBi ZSBpbXBsZW1lbnRlZCBpbiB0aGUgSTxydWxlIHBsdWdpbj4uCi0KLU1vZGlmaWVzIHRoZSBDPCRy dWxlcz4gdG8gYSBwbHVnaW4tc3BlY2lmaWMgY2Fub25pY2FsIGZvcm0uCi0KLT1jdXQKLQotc3Vi IHBsdWdpbl90cmFuc2Zvcm0gOiBwcm90b3R5cGUoJCQpIHsKLSAgICBteSAoJGNsYXNzLCAkcnVs ZXMpID0gQF87Ci19Ci0KID1oZWFkMyAkY2xhc3MtPnRyYW5zZm9ybSgkcnVsZXMsICRub2RlcykK IAogTW9kaWZpZXMgQzwkcnVsZXM+IHRvIGNvbnRhaW4gb25seSBmZWFzaWJsZSBydWxlcy4KQEAg LTM4MCw3ICs0MTUsOSBAQCBDPCRub2Rlcz4gaXMgYSBsaXN0IG9mIHRoZSBjb25maWd1cmVkIGNs dXN0ZXIgbm9kZXMuCiAKIFRoaXMgaXMgZG9uZSBieSBydW5uaW5nIGFsbCBjaGVja3MsIHdoaWNo IHdlcmUgcmVnaXN0ZXJlZCB3aXRoCiBDPEw8PCByZWdpc3Rlcl9jaGVjaygpfC8kY2xhc3MtPnJl Z2lzdGVyX2NoZWNrKC4uLikgPj4+IGFuZCByZW1vdmluZyBhbnkKLXJ1bGUsIHdoaWNoIG1ha2Vz IHRoZSBydWxlIHNldCBpbmZlYXNpYmxlLgorcnVsZSwgd2hpY2ggbWFrZXMgdGhlIHJ1bGUgc2V0 IGluZmVhc2libGUsIGFuZCBhZnRlcndhcmRzIHJ1bm5pbmcgYWxsCit0cmFuc2Zvcm1zIG9uIHRo ZSBmZWFzaWJsZSBydWxlIHNldCwgd2hpY2ggd2VyZSByZWdpc3RlcmVkIHdpdGgKK0M8TDw8IHJl Z2lzdGVyX3RyYW5zZm9ybSgpfC8kY2xhc3MtPnJlZ2lzdGVyX3RyYW5zZm9ybSguLi4pID4+Pi4K IAogUmV0dXJucyBhIGxpc3Qgb2YgbWVzc2FnZXMgd2l0aCB0aGUgcmVhc29ucyB3aHkgcnVsZXMg d2VyZSByZW1vdmVkLgogCkBAIC00MDUsMTMgKzQ0MiwxMyBAQCBzdWIgdHJhbnNmb3JtIDogcHJv dG90eXBlKCQkJCkgewogICAgICAgICB9CiAgICAgfQogCi0gICAgZm9yIG15ICR0eXBlIChAJHR5 cGVzKSB7Ci0gICAgICAgIG15ICRwbHVnaW4gPSAkY2xhc3MtPmxvb2t1cCgkdHlwZSk7Ci0gICAg ICAgIGV2YWwgeyAkcGx1Z2luLT5wbHVnaW5fdHJhbnNmb3JtKCRydWxlcykgfTsKLSAgICAgICAg bmV4dCBpZiAkQDsgIyBwbHVnaW4gZG9lc24ndCBpbXBsZW1lbnQgcGx1Z2luX3RyYW5zZm9ybSgu Li4pCi0gICAgfQorICAgIGZvciBteSAkdHlwZSAoQCR0eXBlcywgJ2dsb2JhbCcpIHsKKyAgICAg ICAgZm9yIG15ICR0cmFuc2Zvcm0gKCR0cmFuc2Zvcm1kZWYtPnskdHlwZX0tPkAqKSB7CisgICAg ICAgICAgICBteSAkZ2xvYmFsX2FyZ3MgPSAkY2xhc3MtPmdldF9jaGVja19hcmd1bWVudHMoJHJ1 bGVzKTsKIAotICAgICRjbGFzcy0+Z2xvYmFsX3RyYW5zZm9ybSgkcnVsZXMpOworICAgICAgICAg ICAgJHRyYW5zZm9ybS0+KCRydWxlcywgJGdsb2JhbF9hcmdzKTsKKyAgICAgICAgfQorICAgIH0K IAogICAgIHJldHVybiAkbWVzc2FnZXM7CiB9CkBAIC03NTAsMTYgKzc4NywxNCBAQCBzdWIgY3Jl YXRlX2ltcGxpY2l0X3Bvc2l0aXZlX3Jlc291cmNlX2FmZmluaXR5X25vZGVfYWZmaW5pdHlfcnVs ZXMgewogICAgIH0KIH0KIAotc3ViIGdsb2JhbF90cmFuc2Zvcm0gewotICAgIG15ICgkY2xhc3Ms ICRydWxlcykgPSBAXzsKLQotICAgIG15ICRhcmdzID0gJGNsYXNzLT5nZXRfY2hlY2tfYXJndW1l bnRzKCRydWxlcyk7CitfX1BBQ0tBR0VfXy0+cmVnaXN0ZXJfdHJhbnNmb3JtKHN1YiB7CisgICAg bXkgKCRydWxlcywgJGFyZ3MpID0gQF87CiAKICAgICBjcmVhdGVfaW1wbGljaXRfcG9zaXRpdmVf cmVzb3VyY2VfYWZmaW5pdHlfbm9kZV9hZmZpbml0eV9ydWxlcygKICAgICAgICAgJHJ1bGVzLAog ICAgICAgICAkYXJncy0+e3Bvc2l0aXZlX3J1bGVzfSwKICAgICAgICAgJGFyZ3MtPntub2RlX2Fm ZmluaXR5X3J1bGVzfSwKICAgICApOwotfQorfSk7CiAKIDE7CmRpZmYgLS1naXQgYS9zcmMvUFZF L0hBL1J1bGVzL1Jlc291cmNlQWZmaW5pdHkucG0gYi9zcmMvUFZFL0hBL1J1bGVzL1Jlc291cmNl QWZmaW5pdHkucG0KaW5kZXggODE5OThkNDUuLjRlZjQ5ZjJjIDEwMDY0NAotLS0gYS9zcmMvUFZF L0hBL1J1bGVzL1Jlc291cmNlQWZmaW5pdHkucG0KKysrIGIvc3JjL1BWRS9IQS9SdWxlcy9SZXNv dXJjZUFmZmluaXR5LnBtCkBAIC0yOTksNiArMjk5LDEyIEBAIHN1YiBtZXJnZV9jb25uZWN0ZWRf cG9zaXRpdmVfcmVzb3VyY2VfYWZmaW5pdHlfcnVsZXMgewogICAgIH0KIH0KIAorX19QQUNLQUdF X18tPnJlZ2lzdGVyX3RyYW5zZm9ybShzdWIgeworICAgIG15ICgkcnVsZXMsICRhcmdzKSA9IEBf OworCisgICAgbWVyZ2VfY29ubmVjdGVkX3Bvc2l0aXZlX3Jlc291cmNlX2FmZmluaXR5X3J1bGVz KCRydWxlcywgJGFyZ3MtPntwb3NpdGl2ZV9ydWxlc30pOworfSk7CisKICMgcmV0cmlldmUgdGhl IGV4aXN0aW5nIG5lZ2F0aXZlIHJlc291cmNlIGFmZmluaXR5IHJlbGF0aW9uc2hpcHMgZm9yIGFu eSBvZiB0aGUKICMgJHJlc291cmNlcyBpbiB0aGUgJG5lZ2F0aXZlX3J1bGVzOyByZXR1cm5zIGEg aGFzaCBtYXAsIHdoZXJlIHRoZSBrZXlzIGFyZSB0aGUKICMgcmVzb3VyY2VzIHRvIGJlIHNlcGFy YXRlZCBmcm9tIGFuZCB0aGUgdmFsdWVzIGFyZSBzdWJzZXRzIG9mIHRoZSAkcmVzb3VyY2VzCkBA IC0zODIsMjMgKzM4OCwxNyBAQCBzdWIgY3JlYXRlX2ltcGxpY2l0X25lZ2F0aXZlX3Jlc291cmNl X2FmZmluaXR5X3J1bGVzIHsKICAgICB9CiB9CiAKLXN1YiBwbHVnaW5fdHJhbnNmb3JtIHsKLSAg ICBteSAoJGNsYXNzLCAkcnVsZXMpID0gQF87CisjIG11c3QgY29tZSBhZnRlciBtZXJnaW5nIGNv bm5lY3RlZCBwb3NpdGl2ZSBydWxlcywgYmVjYXVzZSBvZiB0aGlzIGhlbHBlcnMKKyMgYXNzdW1w dGlvbnMgYWJvdXQgcmVzb3VyY2Ugc2V0cyBhbmQgaW50ZXItcmVzb3VyY2UgYWZmaW5pdHkgY29u c2lzdGVuY3kKK19fUEFDS0FHRV9fLT5yZWdpc3Rlcl90cmFuc2Zvcm0oc3ViIHsKKyAgICBteSAo JHJ1bGVzLCAkYXJncykgPSBAXzsKIAotICAgIG15ICRhcmdzID0gJGNsYXNzLT5nZXRfcGx1Z2lu X2NoZWNrX2FyZ3VtZW50cygkcnVsZXMpOwotCi0gICAgbWVyZ2VfY29ubmVjdGVkX3Bvc2l0aXZl X3Jlc291cmNlX2FmZmluaXR5X3J1bGVzKCRydWxlcywgJGFyZ3MtPntwb3NpdGl2ZV9ydWxlc30p OwotCi0gICAgJGFyZ3MgPSAkY2xhc3MtPmdldF9wbHVnaW5fY2hlY2tfYXJndW1lbnRzKCRydWxl cyk7Ci0KLSAgICAjIG11c3QgY29tZSBhZnRlciBtZXJnaW5nIGNvbm5lY3RlZCBwb3NpdGl2ZSBy dWxlcywgYmVjYXVzZSBvZiB0aGlzIGhlbHBlcnMKLSAgICAjIGFzc3VtcHRpb25zIGFib3V0IHJl c291cmNlIHNldHMgYW5kIGludGVyLXJlc291cmNlIGFmZmluaXR5IGNvbnNpc3RlbmN5CiAgICAg Y3JlYXRlX2ltcGxpY2l0X25lZ2F0aXZlX3Jlc291cmNlX2FmZmluaXR5X3J1bGVzKAogICAgICAg ICAkcnVsZXMsCiAgICAgICAgICRhcmdzLT57cG9zaXRpdmVfcnVsZXN9LAogICAgICAgICAkYXJn cy0+e25lZ2F0aXZlX3J1bGVzfSwKICAgICApOwotfQorfSk7CiAKID1oZWFkMSBSRVNPVVJDRSBB RkZJTklUWSBSVUxFIEhFTFBFUlMKIAotLSAKMi40Ny4zCgoKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCnB2ZS1kZXZlbCBtYWlsaW5nIGxpc3QKcHZlLWRl dmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9t YWlsbWFuL2xpc3RpbmZvL3B2ZS1kZXZlbAo=