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 0FE211FF16F for <inbox@lore.proxmox.com>; Tue, 29 Apr 2025 10:37:21 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 824406AA9; Tue, 29 Apr 2025 10:37:30 +0200 (CEST) Message-ID: <bdea044b-68fb-45b8-b7c4-23b9fdd52d06@proxmox.com> Date: Tue, 29 Apr 2025 10:37:26 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Daniel Kral <d.kral@proxmox.com> To: Fiona Ebner <f.ebner@proxmox.com>, Proxmox VE development discussion <pve-devel@lists.proxmox.com>, =?UTF-8?Q?Fabian_Gr=C3=BCnbichler?= <f.gruenbichler@proxmox.com> References: <20250325151254.193177-1-d.kral@proxmox.com> <20250325151254.193177-7-d.kral@proxmox.com> <1743672047.yfgqapvf7h.astroid@yuna.none> <123e823b-c283-4090-9bf0-9bce777eb670@proxmox.com> <9a47259a-2ffd-4e43-a45c-fa4f9a7c2ee8@proxmox.com> Content-Language: en-US In-Reply-To: <9a47259a-2ffd-4e43-a45c-fa4f9a7c2ee8@proxmox.com> X-SPAM-LEVEL: Spam detection results: 0 AWL 0.011 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 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 Subject: Re: [pve-devel] [PATCH ha-manager 05/15] rules: add colocation rule plugin 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> 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> QWdyZWUgd2l0aCBhbGwgaGVyZSwgYnV0IEkgcHJvcG9zZSB0byByZW1vdmUgdGhlIG1lcmdpbmcg Zm9yIGFueSAKY29sb2NhdGlvbiBydWxlcyBpbiB0aGUgbGFzdCBjb21tZW50LCBpZiB0aGVyZSdz IG5vdGhpbmcgc3BlYWtpbmcgCmFnYWluc3QgaXQuCgpPbiA0LzI1LzI1IDE2OjA2LCBGaW9uYSBF Ym5lciB3cm90ZToKPiBBbSAxMS4wNC4yNSB1bSAxMzowNCBzY2hyaWViIERhbmllbCBLcmFsOgo+ PiBPbiA0LzMvMjUgMTQ6MTYsIEZhYmlhbiBHcsO8bmJpY2hsZXIgd3JvdGU6Cj4+PiBPbiBNYXJj aCAyNSwgMjAyNSA0OjEyIHBtLCBEYW5pZWwgS3JhbCB3cm90ZToKPj4+PiArc3ViIGNoZWNrX3Nl cnZpY2VzX2NvdW50IHsKPj4+PiArwqDCoMKgIG15ICgkcnVsZXMpID0gQF87Cj4+Pj4gKwo+Pj4+ ICvCoMKgwqAgbXkgJGNvbmZsaWN0cyA9IFtdOwo+Pj4+ICsKPj4+PiArwqDCoMKgIGZvcmVhY2hf Y29sb2NhdGlvbl9ydWxlKCRydWxlcywgc3ViIHsKPj4+PiArwqDCoMKgIG15ICgkcnVsZSwgJHJ1 bGVpZCkgPSBAXzsKPj4+PiArCj4+Pj4gK8KgwqDCoCBwdXNoIEAkY29uZmxpY3RzLCAkcnVsZWlk IGlmIChzY2FsYXIoa2V5cyAleyRydWxlLT57c2VydmljZXN9fSkKPj4+PiA8IDIpOwo+Pj4+ICvC oMKgwqAgfSk7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgcmV0dXJuICRjb25mbGljdHM7Cj4+Pj4gK30K Pj4+Cj4+PiBpcyB0aGlzIHJlYWxseSBhbiBpc3N1ZT8gYSBjb2xvY2F0aW9uIHJ1bGUgd2l0aCBh IHNpbmdsZSBzZXJ2aWNlIGlzIGp1c3QKPj4+IGEgbm9wPyB0aGVyZSdzIGN1cnJlbnRseSBubyBj bGVhbnVwIEFGQUlDVCBpZiBhIHJlc291cmNlIGlzIHJlbW92ZWQsIGJ1dAo+Pgo+PiBZb3UncmUg cmlnaHQsIEFGQUlDUyB0aG9zZSBhcmUgYSBub29wIHdoZW4gc2VsZWN0aW5nIHRoZSBzZXJ2aWNl IG5vZGUuIEkKPj4gZ3Vlc3MgSSB3YXMgYSBsaXR0bGUgcGVkYW50aWMgLyBvdmVycHJvdGVjdGl2 ZSBoZXJlIGFib3V0IHdoaWNoIHJ1bGVzCj4+IG1ha2Ugc2Vuc2UgaW4gZ2VuZXJhbCBpbnN0ZWFk IG9mIHdoYXQgdGhlIGFsZ29yaXRobSBkb2VzIGluIHRoZSBlbmQuCj4+Cj4+IEFuZCBnb29kIHBv aW50IGFib3V0IGhhbmRsaW5nIHdoZW4gcmVzb3VyY2VzIGFyZSByZW1vdmVkLCBhZGRpbmcgdGhh dCB0bwo+PiBkZWxldGVfc2VydmljZV9mcm9tX2NvbmZpZyBjb21lcyByaWdodCBvbiBteSBUT0RP IGxpc3QgZm9yIHRoZSB2MSEKPj4KPj4+IGlmIHdlIGFkZCB0aGF0IHBhcnQgKHdlIG1heWJlIHNo b3VsZD8pIHRoZW4gb25lIGNhbiBlYXNpbHkgZW5kIHVwIGluIGEKPj4+IHNpdHVhdGlvbiB3aGVy ZSBhIHJ1bGUgdGVtcG9yYXJpbHkgY29udGFpbnMgYSBzaW5nbGUgb3Igbm8gc2VydmljZT8KPj4K Pj4gSG0sIHllcywgZXNwZWNpYWxseSBpZiB3ZSBhZGQgcG9vbHMvdGFncyBhdCBhIGxhdGVyIHBv aW50IHRvIHNlbGVjdAo+PiBzZXJ2aWNlcyBmb3IgdGhlIHJ1bGUsIHRoZW4gdGhpcyBjb3VsZCBo YXBwZW4gdmVyeSBlYXNpbHkuIEJ1dCBhcyB5b3UKPj4gYWxyZWFkeSBtZW50aW9uZWQsIHRob3Nl IHR3byBjYXNlcyB3b3VsZCBiZSBub29wcyB0b28uCj4+Cj4+IE5ldmVydGhlbGVzcywgc2hvdWxk IHdlIGRyb3AgdGhpcz8gSSB0aGluayBpdCBjb3VsZCBiZW5lZml0IHVzZXJzIGluCj4+IGlkZW50 aWZ5aW5nIHRoYXQgc29tZSBydWxlcyBtaWdodCBub3QgZG8gc29tZXRoaW5nIHRoZXkgd2FudGVk IGFuZCBnaXZlCj4+IHRoZW0gYSByZWFzb24gd2h5LCBpLmUuIHRoZXJlJ3Mgb25seSBvbmUgc2Vy dmljZSBpbiB0aGVyZSwgYnV0IGF0IHRoZQo+PiBzYW1lIHRpbWUgaXQgY291bGQgYmUgYSBsaXR0 bGUgbm9pc3kgaWYgdGhlcmUgYXJlIGEgbG90IG9mIGFmZmVjdGVkIHJ1bGVzLgo+IAo+IEknZCBz dGlsbCBrZWVwIHJ1bGVzIHRoYXQgZW5kIHVwIHdpdGggb25seSBvbmUgc2VydmljZSBhcm91bmQs IGJ1dCBtYXliZQo+ICh0ZW1wb3JhcmlseSkgZGlzYWJsZSB0aGVtLiBBbmQvb3Igd2UgY291bGQg YWxzbyBhZGQgYSBzcGVjaWFsCj4gIm5vLWVmZmVjdCIgbWFya2VyIGxpa2UgdGhlICJjb25mbGlj dCIgb25lIHByb3Bvc2VkIGluIG15IG90aGVyIGFuc3dlcj8KPiBUaGVuIGEgdXNlciBjb3VsZCBl bmFibGUvbWFrZSB0aGUgcnVsZSBlZmZlY3RpdmUgYWdhaW4gYnkgYWRkaW5nIGEgbmV3Cj4gc2Vy dmljZSB0byBpdC4KClllcywgSSB0aGluayB0aGUgJ2NvbmZsaWN0Jy8naW5lZmZlY3RpdmUnIHN0 YXRlcyBhcmUgbXVjaCBtb3JlIAp1c2VyLWZyaWVuZGx5IG9wcG9zZWQgdG8gZHJvcHBpbmcgdGhl bSBhbmQgb25seSBtYWtpbmcgdGhlc2UgZGVjaXNpb25zIApleHBsaWNpdCBpbiB0aGUgbG9nLiBJ J2xsIGFkZCB0aGF0IHRvIHRoZSB2MSEKCj4gCj4+Pj4gKwo+Pj4+ICs9aGVhZDMgY2hlY2tfcG9z aXRpdmVfaW50cmFuc2l0aXZpdHkoJHJ1bGVzKQo+Pj4+ICsKPj4+PiArUmV0dXJucyBhIGxpc3Qg b2YgY29uZmxpY3RzIGNhdXNlZCBieSB0cmFuc2l0aXZlIHBvc2l0aXZlIGNvbG9jYXRpb24KPj4+ PiBydWxlcwo+Pj4+ICtkZWZpbmVkIGluIEM8JHJ1bGVzPi4KPj4+PiArCj4+Pj4gK1RyYW5zaXRp dmUgcG9zaXRpdmUgY29sb2NhdGlvbiBydWxlcyBleGlzdCwgaWYgdGhlcmUgYXJlIGF0IGxlYXN0 Cj4+Pj4gdHdvIHBvc2l0aXZlCj4+Pj4gK2NvbG9jYXRpb24gcnVsZXMgd2l0aCB0aGUgc2FtZSBz dHJpY3RuZXNzLCB3aGljaCBwdXQgYXQgbGVhc3QgdGhlCj4+Pj4gc2FtZSB0d28KPj4+PiArc2Vy dmljZXMgaW4gcmVsYXRpb24uIFRoaXMgbWVhbnMsIHRoYXQgdGhlc2UgcnVsZXMgY2FuIGJlIG1l cmdlZAo+Pj4+IHRvZ2V0aGVyLgo+Pj4+ICsKPj4+PiArSWYgdGhlcmUgYXJlIG5vIGNvbmZsaWN0 cywgdGhlIHJldHVybmVkIGxpc3QgaXMgZW1wdHkuCj4+Pgo+Pj4gVGhlIHRlcm1pbm9sb2d5IGhl cmUgaXMgcXVpdCBjb25mdXNpbmcgLSBjb25mbGljdCBtZWFuaW5nIHRoYXQgdHdvIHJ1bGVzCj4+ PiBhcmUgInRyYW5zaXRpdmUiIGFuZCB0aHVzIG1lcmdlYWJsZSAod2hpY2ggaXMgZ29vZCwgY2F1 c2UgaXQgbWFrZXMKPj4+IHRoaW5ncyBlYXNpZXIgdG8gaGFuZGxlPykgaXMgcXVpdGUgd2VpcmQs IGFzICJjb25mbGljdCIgaXMgYSByYXRoZXIKPj4+IG5lZ2F0aXZlIHRlcm0uLgo+Pj4KPj4+IHRo ZXJlJ3Mgb25seSBhIHNpbmdsZSBjYWxsIHNpdGUgaW4gdGhlIHNhbWUgbW9kdWxlLCBtYXliZSB3 ZSBjb3VsZCBqdXN0Cj4+PiByZW5hbWUgdGhpcyBpbnRvICJmaW5kX21lcmdlYWJsZV9wb3NpdGl2 ZV9ydWxlaWRzIiwgc2ltaWxhciB0byB0aGUKPj4+IHZhcmlhYmxlIHdoZXJlIHRoZSByZXN1bHQg aXMgc3RvcmVkPwo+Pgo+PiBZZWFoLCBJIHdhcyBwcm9iYWJseSB0byBrZWVuIG9uIHRoZSBgJGNv bmZsaWN0ID0gY2hlY2tfc29tZXRoaW5nKC4uLilgCj4+IHBhdHRlcm4gaGVyZSwgYnV0IGl0IHdv dWxkIGJlIG11Y2ggbW9yZSByZWFkYWJsZSB3aXRoIGEgc2ltcGxlciBuYW1lLAo+PiBJJ2xsIGNo YW5nZSB0aGF0IGZvciB0aGUgdjEhCj4+Cj4+IC0tLS0tCj4+Cj4+IEFkIHdoeTogSSdsbCBhbHNv IGFkZCBzb21lIGRvY3VtZW50YXRpb24gYWJvdXQgdGhlIHJhdGlvbmFsZSB3aHkgdGhpcyBpcwo+ PiBuZWVkZWQgaW4gdGhlIGZpcnN0IHBsYWNlLgo+Pgo+PiBUaGUgbWFpbiByZWFzb24gd2FzIGJl Y2F1c2UgdGhlIGxhdHRlciBydWxlIGNoZWNrCj4+ICdjaGVja19pbm5lcl9jb25zaXN0ZW5jeScg ZGVwZW5kcyBvbiB0aGUgZmFjdCB0aGF0IHRoZSBwb3NpdGl2ZQo+PiBjb2xvY2F0aW9uIHJ1bGVz IGhhdmUgYmVlbiBtZXJnZWQgYWxyZWFkeSwgYXMgaXQgYXNzdW1lcyB0aGF0IGVhY2gKPj4gcG9z aXRpdmUgY29sb2NhdGlvbiBydWxlIGhhcyBhbGwgb2YgdGhlIHNlcnZpY2VzIGluIHRoZXJlLCB3 aGljaCBhcmUKPj4gcG9zaXRpdmVseSBjb2xvY2F0ZWQuIElmIGl0IHdlcmVuJ3Qgc28sIGl0IHdv dWxkbid0IGRldGVjdCB0aGF0IHRoZQo+PiBmb2xsb3dpbmcgdGhyZWUgcnVsZXMgYXJlIGluY29u c2lzdGVudCB3aXRoIGVhY2ggb3RoZXI6Cj4+Cj4+IGNvbG9jYXRpb246IHN0aWNrLXRvZ2V0aGVy MQo+PiAgwqDCoMKgIHNlcnZpY2VzIHZtOjEwMSx2bToxMDQKPj4gIMKgwqDCoCBhZmZpbml0eSB0 b2dldGhlcgo+PiAgwqDCoMKgIHN0cmljdCAxCj4+Cj4+IGNvbG9jYXRpb246IHN0aWNrLXRvZ2V0 aGVyMgo+PiAgwqDCoMKgIHNlcnZpY2VzIHZtOjEwNCx2bToxMDIKPj4gIMKgwqDCoCBhZmZpbml0 eSB0b2dldGhlcgo+PiAgwqDCoMKgIHN0cmljdCAxCj4+Cj4+IGNvbG9jYXRpb246IGtlZXAtYXBh cnQKPj4gIMKgwqDCoCBzZXJ2aWNlcyB2bToxMDEsdm06MTAyLHZtOjEwMwo+PiAgwqDCoMKgIGFm ZmluaXR5IHNlcGFyYXRlCj4+ICDCoMKgwqAgc3RyaWN0IDEKPj4KPj4gVGhpcyByZWR1Y2VzIHRo ZSBjb21wbGV4aXR5IG9mIHRoZSBsb2dpYyBhIGxpdHRsZSBpbgo+PiAnY2hlY2tfaW5uZXJfY29u c2lzdGVuY3knIGFzIHRoZXJlIGl0IGRvZXNuJ3QgaGF2ZSB0byBoYW5kbGUgdGhpcwo+PiBzcGVj aWFsIGNhc2UgYXMgJ3N0aWNrLXRvZ2V0aGVyMScgYW5kICdzdGljay10b2dldGhlcjInIGFyZSBh bHJlYWR5Cj4+IG1lcmdlZCBpbiB0byBvbmUgYW5kIGl0IGlzIGVhc2lseSBhcHBhcmVudCB0aGF0 IHZtIDEwMSBhbmQgdm0gMTAyIGNhbm5vdAo+PiBiZSBjb2xvY2F0ZWQgYW5kIG5vbi1jb2xvY2F0 ZWQgYXQgdGhlIHNhbWUgdGltZS4KPj4KPj4gLS0tLS0KPj4KPj4gQWxzbywgSSB3YXMgY3VyaW91 cyBhYm91dCBob3cgdGhhdCB3b3VsZCB3b3JrIG91dCBmb3IgdGhlIGNhc2Ugd2hlcmUgYQo+PiBu ZWdhdGl2ZSBjb2xvY2F0aW9uIHJ1bGUgd2FzIGRlZmluZWQgZm9yIHRocmVlIG5vZGVzIHdpdGgg dGhvc2UgcnVsZXMKPj4gc3BsaXQgaW50byB0aHJlZSBydWxlcyAoZXNzZW50aWFsbHkgYSBjeWNs ZSBkZXBlbmRlbmNlKS4gVGhpcyBzaG91bGQgaW4KPj4gdGhlb3J5IGhhdmUgdGhlIHNhbWUgc2Vt YW50aWNzIGFzIHRoZSBhYm92ZSBydWxlIHNldDoKPj4KPj4gY29sb2NhdGlvbjogc3RpY2stdG9n ZXRoZXIxCj4+ICDCoMKgwqAgc2VydmljZXMgdm06MTAxLHZtOjEwNAo+PiAgwqDCoMKgIGFmZmlu aXR5IHRvZ2V0aGVyCj4+ICDCoMKgwqAgc3RyaWN0IDEKPj4KPj4gY29sb2NhdGlvbjogc3RpY2st dG9nZXRoZXIyCj4+ICDCoMKgwqAgc2VydmljZXMgdm06MTA0LHZtOjEwMgo+PiAgwqDCoMKgIGFm ZmluaXR5IHRvZ2V0aGVyCj4+ICDCoMKgwqAgc3RyaWN0IDEKPj4KPj4gY29sb2NhdGlvbjogdmVy eS1sb25lbHktc2VydmljZXMxCj4+ICDCoMKgwqAgc2VydmljZXMgdm06MTAxLHZtOjEwMgo+PiAg wqDCoMKgIGFmZmluaXR5IHNlcGFyYXRlCj4+ICDCoMKgwqAgc3RyaWN0IDEKPj4KPj4gY29sb2Nh dGlvbjogdmVyeS1sb25lbHktc2VydmljZXMyCj4+ICDCoMKgwqAgc2VydmljZXMgdm06MTAyLHZt OjEwMwo+PiAgwqDCoMKgIGFmZmluaXR5IHNlcGFyYXRlCj4+ICDCoMKgwqAgc3RyaWN0IDEKPj4K Pj4gY29sb2NhdGlvbjogdmVyeS1sb25lbHktc2VydmljZXMzCj4+ICDCoMKgwqAgc2VydmljZXMg dm06MTAxLHZtOjEwMwo+PiAgwqDCoMKgIGFmZmluaXR5IHNlcGFyYXRlCj4+ICDCoMKgwqAgc3Ry aWN0IDEKPj4KPj4gV2l0aG91dCB0aGUgbWVyZ2Ugb2YgcG9zaXRpdmUgcnVsZXMsICdjaGVja19p bm5lcl9jb25zaXN0ZW5jeScgd291bGQKPj4gYWdhaW4gbm90IGRldGVjdCB0aGUgaW5jb25zaXN0 ZW5jeSBoZXJlLiBCdXQgd2l0aCB0aGUgbWVyZ2UgY29ycmVjdGx5Cj4+IGFwcGxpZWQgYmVmb3Jl IGNoZWNraW5nIHRoZSBjb25zaXN0ZW5jeSwgdGhpcyB3b3VsZCBiZSByZXNvbHZlZCBhbmQgdGhl Cj4+IGVmZmVjdGl2ZSBydWxlIHNldCB3b3VsZCBiZToKPiAKPiBJIHN1cHBvc2UgdGhlIGVmZmVj dGl2ZSBydWxlIHNldCB3b3VsZCBzdGlsbCBhbHNvIGNvbnRhaW4gdGhlIHR3bwo+ICd0b2dldGhl cicgcnVsZXMsIG9yPwoKTm8sIGhlcmUgaXQgd291bGQgbm90LiBJIGZvdW5kIGl0IHdvdWxkIGJl IG1vc3QgZmFpciBvciByZWFzb25hYmxlIHRoYXQgCmlmIGEgcG9zaXRpdmUgYW5kIGEgbmVnYXRp dmUgY29sb2NhdGlvbiBydWxlIGNvbnRyYWRpY3QgZWFjaCBvdGhlciB0byAKZHJvcCBib3RoIG9m IHRoZW0uIEhlcmUgdGhlIGNvbmZsaWN0cyBhcmUKCnN0aWNrLXRvZ2V0aGVyMSAtLSB2ZXJ5LWxv bmVseS1zZXJ2aWNlczEKc3RpY2stdG9nZXRoZXIyIC0tIHZlcnktbG9uZWx5LXNlcnZpY2VzMQoK c28gYWxsIHRocmVlIG9mIHRoZW0gd2lsbCBiZSBkcm9wcGVkIGZyb20gdGhlIHJ1bGUgc2V0LgoK U2VlaW5nIHRoaXMgYWdhaW4gaGVyZSwgc3VjaCBjYXNlcyBkZWZpbml0ZWx5IGJlbmVmaXQgZnJv bSB0aGUgaW1tZWRpYXRlIApyZXNwb25zZSB3aXRoIHRoZSAnY29uZmxpY3QnLydpbmVmZmVjdGl2 ZScgc3RhdGUgdG8gc2hvdyB1c2VycyB0aGF0IAp0aG9zZSB3b24ndCBiZSBhcHBsaWVkIGluc3Rl YWQgb2Ygb25seSBsb2dnaW5nIGl0LgoKPiAKPj4KPj4gY29sb2NhdGlvbjogdmVyeS1sb25lbHkt c2VydmljZXMyCj4+ICDCoMKgwqAgc2VydmljZXMgdm06MTAyLHZtOjEwMwo+PiAgwqDCoMKgIGFm ZmluaXR5IHNlcGFyYXRlCj4+ICDCoMKgwqAgc3RyaWN0IDEKPj4KPj4gY29sb2NhdGlvbjogdmVy eS1sb25lbHktc2VydmljZXMzCj4+ICDCoMKgwqAgc2VydmljZXMgdm06MTAxLHZtOjEwMwo+PiAg wqDCoMKgIGFmZmluaXR5IHNlcGFyYXRlCj4+ICDCoMKgwqAgc3RyaWN0IDEKPj4KPj4gSXQgY291 bGQgYmUgYXJndWVkLCB0aGF0IHRoZSBuZWdhdGl2ZSBjb2xvY2F0aW9uIHJ1bGVzIHNob3VsZCBi ZSBtZXJnZWQKPj4gaW4gYSBzaW1pbGFyIG1hbm5lciBoZXJlLCBhcyB0aGVyZSdzIG5vdyBhICJl ZmZlY3RpdmUiIGRpZmZlcmVuY2UgaW4gdGhlCj4+IHNlbWFudGljcyBvZiB0aGUgYWJvdmUgcnVs ZSBzZXRzLCBhcyB0aGUgbmVnYXRpdmUgY29sb2NhdGlvbiBydWxlCj4+IGJldHdlZW4gdm0gMTAx IGFuZCB2bSAxMDMgYW5kIHZtIDEwMiBhbmQgdm0gMTAzIHJlbWFpbnMuCj4+Cj4+IFdoYXQgZG8g eW91IHRoaW5rPwo+IAo+IEkgZG9uJ3QgdGhpbmsgdGhlcmUncyBhIHBhcnRpY3VsYXIgbmVlZCB0 byBhbHNvIG1lcmdlIG5lZ2F0aXZlIHJ1bGVzCj4gYmV0d2VlbiBzZXJ2aWNlcyAod2hlbiB0aGV5 IGZvcm0gYSBjb21wbGV0ZSBncmFwaCkuIEl0IHdvbid0IG1ha2UgYQo+IGRpZmZlcmVuY2UgaWYg dGhlcmUgYXJlIG5vIGNvbmZsaWN0cyB3aXRoIHBvc2l0aXZlIHJ1bGVzIGFuZCBpbiBlZGdlCj4g Y2FzZXMgd2hlbiB0aGVyZSBhcmUgY29uZmxpY3RzICh3aGljaCB1c3VhbGx5IGdldHMgY2F1Z2h0 IHdoaWxlIGVkaXRpbmcKPiB0aGUgcnVsZXMpLCBpdCdzIGJldHRlciB0byBkcm9wIGZld2VyIHJ1 bGVzLCBzbyBub3QgbWVyZ2luZyBpcyBhbgo+IGFkdmFudGFnZS4gT3IgZG8geW91IGhhdmUgYSBw YXJ0aWN1bGFyIGFkdmFudGFnZSBpbiBmYXZvciBvZiBtZXJnaW5nIGluCj4gbWluZD8KClllcywg SSB0aGluayBzbyB0b28uCgpUaGVyZSdzIHF1aXRlIHRoZSBzZW1hbnRpYyBkaWZmZXJlbmNlIGJl dHdlZW4gcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIApjb2xvY2F0aW9uIHJ1bGVzIGhlcmUuICJDb25u ZWN0ZWQiIHBvc2l0aXZlIGNvbG9jYXRpb24gcmVsYXRpb25zaGlwcyAKKHN0cmljdCBvbmVzIGlu IHBhcnRpY3VsYXIpIG11c3QgYmUgY28tbG9jYXRlZCBpbiB0aGUgZW5kIGFueXdheSwgc28gaXQg Cm1ha2VzIHNlbnNlIHRvIG1lcmdlIHRoZW0uIE5lZ2F0aXZlIGNvbG9jYXRpb24gcmVsYXRpb25z aGlwcyBtdXN0IGJlIApkZWZpbmVkIGluIGEgImNpcmN1bGFyIiB3YXkgYW5kIG1pZ2h0IGp1c3Qg aGFwcGVuIGJ5IGNvaW5jaWRlbmNlIGZvciAKc21hbGwgc2NlbmFyaW9zLgoKQnV0IG9uZSB0aGlu ZyB0aGF0IGp1c3Qgc3RydWNrIG1lIGlzIHRoYXQgd2hhdCBpZiB0aGUgdXNlciBpbnRlbnRpb25h bGx5IAp3cm90ZSB0aGVtIGFzIHNlcGFyYXRlIHJ1bGVzPyBUaGVuIGl0IG1pZ2h0IGJlIGNvbmZ1 c2luZyB0aGF0IGFsbCBydWxlcyAKYXJlIGRyb3BwZWQgYW5kIG5vdCBqdXN0IHRoZSBtaW5pbWFs IGFtb3VudCB0aGF0IGNvbnRyYWRpY3Qgb3RoZXIgCnJ1bGVzLi4uIFRoZW4gY2hlY2tfaW5uZXJf Y29uc2lzdGVuY3koKSB3b3VsZCBqdXN0IGRyb3AgdGhlIG1pbmltYWwgCmFtb3VudCBvZiBydWxl cyB0aGF0IG5lZWQgdG8gYmUgZHJvcHBlZCBhcyBpbiB0aGUgYWJvdmUgZXhhbXBsZS4KCkl0IHdv dWxkIGJlIGEgc29mdGVyIGludGVycHJldGF0aW9uIG9mIHRoZSBydWxlcyBpbmRlZWQsIGJ1dCBp dCBtaWdodCAKYmVuZWZpdCB0aGUgdXNlciBpbiB0aGUgZW5kIGFuZCBtYWtlIHRoaW5ncyBlYXNp ZXIgdG8gZm9sbG93IGZyb20gdGhlIAp1c2VyIHBlcnNwZWN0aXZlLiBJZiB0aGVyZSdzIG5vIG9w cG9zaXRpb24gdG8gdGhhdCwgSSdkIHRlbmQgdG8gZHJvcCB0aGUgCm1lcmdpbmcgZm9yIGFueSBy dWxlcyBhZnRlciBhbGwuCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KcHZlLWRldmVsIG1haWxpbmcgbGlzdApwdmUtZGV2ZWxAbGlzdHMucHJveG1veC5j b20KaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcHZl LWRldmVsCg==