From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 90A081FF2C6 for ; Wed, 10 Jul 2024 16:58:30 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 2C69BDFFD; Wed, 10 Jul 2024 16:58:54 +0200 (CEST) Message-ID: <3ffd859e-7ddb-4e56-8a4e-04a1475d0e25@proxmox.com> Date: Wed, 10 Jul 2024 16:57:49 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: pbs-devel@lists.proxmox.com References: <20240710092008.25271-1-f.schauer@proxmox.com> <20240710092008.25271-3-f.schauer@proxmox.com> <1720613235.4f6jsbkwyr.astroid@yuna.none> From: Filip Schauer In-Reply-To: <1720613235.4f6jsbkwyr.astroid@yuna.none> X-SPAM-LEVEL: Spam detection results: 0 AWL -0.459 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 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, main.rs, vma2pbs.rs] Subject: Re: [pbs-devel] [PATCH vma-to-pbs v2 2/2] add support for notes and logs X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Backup Server development discussion Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" U3VwZXJzZWRlZCBieToKaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9waXBlcm1haWwvcGJzLWRl dmVsLzIwMjQtSnVseS8wMTAxNTkuaHRtbAoKT24gMTAvMDcvMjAyNCAxNDoxOCwgRmFiaWFuIEdy w7xuYmljaGxlciB3cm90ZToKPiBPbiBKdWx5IDEwLCAyMDI0IDExOjIwIGFtLCBGaWxpcCBTY2hh dWVyIHdyb3RlOgo+PiBBbGxvdyB0aGUgdXNlciB0byBzcGVjaWZ5IGEgbm90ZXMgZmlsZSBhbmQg YSBsb2cgZmlsZSB0byBhc3NvY2lhdGUgd2l0aAo+PiB0aGUgYmFja3VwCj4+Cj4+IFNpZ25lZC1v ZmYtYnk6IEZpbGlwIFNjaGF1ZXIgPGYuc2NoYXVlckBwcm94bW94LmNvbT4KPj4gLS0tCj4+IFVz ZSB0aGUgcHJveG1veC1iYWNrdXAgY3JhdGVzIGZyb20gdGhlIHByb3htb3gtYmFja3VwLXFlbXUg c3VibW9kdWxlLAo+PiBiZWNhdXNlIGEgc2VwZXJhdGUgcHJveG1veC1iYWNrdXAgc3VibW9kdWxl IGxlYWRzIHRvICJwYWNrYWdlIGNvbGxpc2lvbgo+PiBpbiB0aGUgbG9ja2ZpbGUiCj4+Cj4+ICAg Q2FyZ28udG9tbCAgICAgfCAgIDggKysrCj4+ICAgc3JjL21haW4ucnMgICAgfCAgMTYgKysrKysr Cj4+ICAgc3JjL3ZtYTJwYnMucnMgfCAxMzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0tLQo+PiAgIDMgZmlsZXMgY2hhbmdlZCwgMTQ2IGluc2VydGlvbnMo KyksIDEwIGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvQ2FyZ28udG9tbCBiL0Nhcmdv LnRvbWwKPj4gaW5kZXggMDExMTM2Mi4uYzYyYjVlMCAxMDA2NDQKPj4gLS0tIGEvQ2FyZ28udG9t bAo+PiArKysgYi9DYXJnby50b21sCj4+IEBAIC03LDE0ICs3LDIyIEBAIGVkaXRpb24gPSAiMjAy MSIKPj4gICBbZGVwZW5kZW5jaWVzXQo+PiAgIGFueWhvdyA9ICIxLjAiCj4+ICAgYmluY29kZSA9 ICIxLjMiCj4+ICtoeXBlciA9ICIwLjE0LjUiCj4+ICAgcGljby1hcmdzID0gIjAuNCIKPj4gICBt ZDUgPSAiMC43LjAiCj4+ICAgc2NvcGVndWFyZCA9ICIxLjEuMCIKPj4gICBzZXJkZSA9ICIxLjAi Cj4+ICtzZXJkZV9qc29uID0gIjEuMCIKPj4gICBzZXJkZS1iaWctYXJyYXkgPSAiMC40LjEiCj4+ ICAgCj4+ICtwcm94bW94LWFzeW5jID0gIjAuNCIKPj4gICBwcm94bW94LWlvID0gIjEuMC4xIgo+ PiAgIHByb3htb3gtc3lzID0gIjAuNS4wIgo+PiAgIHByb3htb3gtdGltZSA9ICIyIgo+PiAgIAo+ PiArcGJzLWFwaS10eXBlcyA9IHsgcGF0aCA9ICJzdWJtb2R1bGVzL3Byb3htb3gtYmFja3VwLXFl bXUvc3VibW9kdWxlcy9wcm94bW94LWJhY2t1cC9wYnMtYXBpLXR5cGVzIiB9Cj4+ICtwYnMtY2xp ZW50ID0geyBwYXRoID0gInN1Ym1vZHVsZXMvcHJveG1veC1iYWNrdXAtcWVtdS9zdWJtb2R1bGVz L3Byb3htb3gtYmFja3VwL3Bicy1jbGllbnQiIH0KPj4gK3Bicy1kYXRhc3RvcmUgPSB7IHBhdGgg PSAic3VibW9kdWxlcy9wcm94bW94LWJhY2t1cC1xZW11L3N1Ym1vZHVsZXMvcHJveG1veC1iYWNr dXAvcGJzLWRhdGFzdG9yZSIgfQo+PiArcGJzLWtleS1jb25maWcgPSB7IHBhdGggPSAic3VibW9k dWxlcy9wcm94bW94LWJhY2t1cC1xZW11L3N1Ym1vZHVsZXMvcHJveG1veC1iYWNrdXAvcGJzLWtl eS1jb25maWciIH0KPj4gK3Bicy10b29scyA9IHsgcGF0aCA9ICJzdWJtb2R1bGVzL3Byb3htb3gt YmFja3VwLXFlbXUvc3VibW9kdWxlcy9wcm94bW94LWJhY2t1cC9wYnMtdG9vbHMiIH0KPj4gICBw cm94bW94LWJhY2t1cC1xZW11ID0geyBwYXRoID0gInN1Ym1vZHVsZXMvcHJveG1veC1iYWNrdXAt cWVtdSIgfQo+PiBkaWZmIC0tZ2l0IGEvc3JjL21haW4ucnMgYi9zcmMvbWFpbi5ycwo+PiBpbmRl eCAyNjUzZDNlLi5kZTc4OWMxIDEwMDY0NAo+PiAtLS0gYS9zcmMvbWFpbi5ycwo+PiArKysgYi9z cmMvbWFpbi5ycwo+PiBAQCAtMzcsNiArMzcsMTAgQEAgT3B0aW9uczoKPj4gICAgICAgICAgICAg UGFzc3dvcmQgZmlsZQo+PiAgICAgICAgIC0ta2V5LXBhc3N3b3JkLWZpbGUgPEtFWV9QQVNTV09S RF9GSUxFPgo+PiAgICAgICAgICAgICBLZXkgcGFzc3dvcmQgZmlsZQo+PiArICAgICAgWy0tbm90 ZXMtZmlsZSA8Tk9URVNfRklMRT5dCj4+ICsgICAgICAgICAgRmlsZSBjb250YWluaW5nIGEgY29t bWVudC9ub3Rlcwo+PiArICAgICAgWy0tbG9nLWZpbGUgPExPR19GSUxFPl0KPj4gKyAgICAgICAg ICBMb2cgZmlsZQo+PiAgICAgLWgsIC0taGVscAo+PiAgICAgICAgICAgICBQcmludCBoZWxwCj4+ ICAgICAtViwgLS12ZXJzaW9uCj4+IEBAIC05Myw2ICs5Nyw4IEBAIGZuIHBhcnNlX2FyZ3MoKSAt PiBSZXN1bHQ8QmFja3VwVm1hVG9QYnNBcmdzLCBFcnJvcj4gewo+PiAgICAgICBsZXQgZW5jcnlw dCA9IGFyZ3MuY29udGFpbnMoWyItZSIsICItLWVuY3J5cHQiXSk7Cj4+ICAgICAgIGxldCBwYXNz d29yZF9maWxlOiBPcHRpb248T3NTdHJpbmc+ID0gYXJncy5vcHRfdmFsdWVfZnJvbV9zdHIoIi0t cGFzc3dvcmQtZmlsZSIpPzsKPj4gICAgICAgbGV0IGtleV9wYXNzd29yZF9maWxlOiBPcHRpb248 T3NTdHJpbmc+ID0gYXJncy5vcHRfdmFsdWVfZnJvbV9zdHIoIi0ta2V5LXBhc3N3b3JkLWZpbGUi KT87Cj4+ICsgICAgbGV0IG5vdGVzX2ZpbGU6IE9wdGlvbjxPc1N0cmluZz4gPSBhcmdzLm9wdF92 YWx1ZV9mcm9tX3N0cigiLS1ub3Rlcy1maWxlIik/Owo+PiArICAgIGxldCBsb2dfZmlsZV9wYXRo OiBPcHRpb248T3NTdHJpbmc+ID0gYXJncy5vcHRfdmFsdWVfZnJvbV9zdHIoIi0tbG9nLWZpbGUi KT87Cj4+ICAgCj4+ICAgICAgIG1hdGNoIChlbmNyeXB0LCBrZXlmaWxlLmlzX3NvbWUoKSkgewo+ PiAgICAgICAgICAgKHRydWUsIGZhbHNlKSA9PiBiYWlsISgiLS1lbmNyeXB0IHJlcXVpcmVzIGEg LS1rZXlmaWxlISIpLAo+PiBAQCAtMTcwLDYgKzE3NiwxNCBAQCBmbiBwYXJzZV9hcmdzKCkgLT4g UmVzdWx0PEJhY2t1cFZtYVRvUGJzQXJncywgRXJyb3I+IHsKPj4gICAgICAgICAgIE5vbmUKPj4g ICAgICAgfTsKPj4gICAKPj4gKyAgICBsZXQgbm90ZXMgPSBpZiBsZXQgU29tZShub3Rlc19maWxl KSA9IG5vdGVzX2ZpbGUgewo+PiArICAgICAgICBsZXQgbm90ZXMgPSBzdGQ6OmZzOjpyZWFkX3Rv X3N0cmluZyhub3Rlc19maWxlKS5jb250ZXh0KCJDb3VsZCBub3QgcmVhZCBub3RlcyBmaWxlIik/ Owo+PiArCj4+ICsgICAgICAgIFNvbWUobm90ZXMpCj4+ICsgICAgfSBlbHNlIHsKPj4gKyAgICAg ICAgTm9uZQo+PiArICAgIH07Cj4+ICsKPj4gICAgICAgbGV0IG9wdGlvbnMgPSBCYWNrdXBWbWFU b1Bic0FyZ3Mgewo+PiAgICAgICAgICAgdm1hX2ZpbGVfcGF0aDogdm1hX2ZpbGVfcGF0aC5jbG9u ZWQoKSwKPj4gICAgICAgICAgIHBic19yZXBvc2l0b3J5LAo+PiBAQCAtMTgzLDYgKzE5Nyw4IEBA IGZuIHBhcnNlX2FyZ3MoKSAtPiBSZXN1bHQ8QmFja3VwVm1hVG9QYnNBcmdzLCBFcnJvcj4gewo+ PiAgICAgICAgICAgZmluZ2VycHJpbnQsCj4+ICAgICAgICAgICBjb21wcmVzcywKPj4gICAgICAg ICAgIGVuY3J5cHQsCj4+ICsgICAgICAgIG5vdGVzLAo+PiArICAgICAgICBsb2dfZmlsZV9wYXRo LAo+PiAgICAgICB9Owo+PiAgIAo+PiAgICAgICBPayhvcHRpb25zKQo+PiBkaWZmIC0tZ2l0IGEv c3JjL3ZtYTJwYnMucnMgYi9zcmMvdm1hMnBicy5ycwo+PiBpbmRleCAxOTljZjUwLi5lYWFkMDJl IDEwMDY0NAo+PiAtLS0gYS9zcmMvdm1hMnBicy5ycwo+PiArKysgYi9zcmMvdm1hMnBicy5ycwo+ PiBAQCAtOCw2ICs4LDEyIEBAIHVzZSBzdGQ6OnB0cjsKPj4gICB1c2Ugc3RkOjp0aW1lOjpTeXN0 ZW1UaW1lOwo+PiAgIAo+PiAgIHVzZSBhbnlob3c6Onthbnlob3csIGJhaWwsIEVycm9yfTsKPj4g K3VzZSBwYnNfYXBpX3R5cGVzOjp7QmFja3VwRGlyLCBCYWNrdXBOYW1lc3BhY2UsIEJhY2t1cFR5 cGV9Owo+PiArdXNlIHBic19jbGllbnQ6Ont0b29sczo6Y29ubmVjdCwgQmFja3VwUmVwb3NpdG9y eSwgSHR0cENsaWVudH07Cj4+ICt1c2UgcGJzX2RhdGFzdG9yZTo6RGF0YUJsb2I7Cj4+ICt1c2Ug cGJzX2tleV9jb25maWc6OmRlY3J5cHRfa2V5Owo+PiArdXNlIHBic190b29sczo6Y3J5cHRfY29u ZmlnOjpDcnlwdENvbmZpZzsKPj4gK3VzZSBwcm94bW94X2FzeW5jOjpydW50aW1lOjpibG9ja19v bjsKPj4gICB1c2UgcHJveG1veF9iYWNrdXBfcWVtdTo6ewo+PiAgICAgICBjYXBpX3R5cGVzOjpQ cm94bW94QmFja3VwSGFuZGxlLCBwcm94bW94X2JhY2t1cF9hZGRfY29uZmlnLCBwcm94bW94X2Jh Y2t1cF9jbG9zZV9pbWFnZSwKPj4gICAgICAgcHJveG1veF9iYWNrdXBfY29ubmVjdCwgcHJveG1v eF9iYWNrdXBfZGlzY29ubmVjdCwgcHJveG1veF9iYWNrdXBfZmluaXNoLAo+PiBAQCAtMTYsNiAr MjIsNyBAQCB1c2UgcHJveG1veF9iYWNrdXBfcWVtdTo6ewo+PiAgIH07Cj4+ICAgdXNlIHByb3ht b3hfdGltZTo6ZXBvY2hfdG9fcmZjMzMzOTsKPj4gICB1c2Ugc2NvcGVndWFyZDo6ZGVmZXI7Cj4+ ICt1c2Ugc2VyZGVfanNvbjo6VmFsdWU7Cj4+ICAgCj4+ICAgdXNlIGNyYXRlOjp2bWE6OlZtYVJl YWRlcjsKPj4gICAKPj4gQEAgLTM0LDYgKzQxLDggQEAgcHViIHN0cnVjdCBCYWNrdXBWbWFUb1Bi c0FyZ3Mgewo+PiAgICAgICBwdWIgZmluZ2VycHJpbnQ6IFN0cmluZywKPj4gICAgICAgcHViIGNv bXByZXNzOiBib29sLAo+PiAgICAgICBwdWIgZW5jcnlwdDogYm9vbCwKPj4gKyAgICBwdWIgbm90 ZXM6IE9wdGlvbjxTdHJpbmc+LAo+PiArICAgIHB1YiBsb2dfZmlsZV9wYXRoOiBPcHRpb248T3NT dHJpbmc+LAo+PiAgIH0KPj4gICAKPj4gICAjW2Rlcml2ZShDb3B5LCBDbG9uZSldCj4+IEBAIC01 Miw3ICs2MSw3IEBAIGZuIGhhbmRsZV9wYnNfZXJyb3IocGJzX2VycjogKm11dCBjX2NoYXIsIGZ1 bmN0aW9uX25hbWU6ICZzdHIpIC0+IFJlc3VsdDwoKSwgRXJyCj4+ICAgICAgIGJhaWwhKCJ7ZnVu Y3Rpb25fbmFtZX0gZmFpbGVkOiB7cGJzX2Vycl9zdHJ9Iik7Cj4+ICAgfQo+PiAgIAo+PiAtZm4g Y3JlYXRlX3Bic19iYWNrdXBfdGFzayhhcmdzOiBCYWNrdXBWbWFUb1Bic0FyZ3MpIC0+IFJlc3Vs dDwqbXV0IFByb3htb3hCYWNrdXBIYW5kbGUsIEVycm9yPiB7Cj4+ICtmbiBjcmVhdGVfcGJzX2Jh Y2t1cF90YXNrKGFyZ3M6ICZCYWNrdXBWbWFUb1Bic0FyZ3MpIC0+IFJlc3VsdDwqbXV0IFByb3ht b3hCYWNrdXBIYW5kbGUsIEVycm9yPiB7Cj4gdGhpcwo+Cj4+ICAgICAgIHByaW50bG4hKCJQQlMg cmVwb3NpdG9yeToge30iLCBhcmdzLnBic19yZXBvc2l0b3J5KTsKPj4gICAgICAgaWYgbGV0IFNv bWUobnMpID0gJmFyZ3MubmFtZXNwYWNlIHsKPj4gICAgICAgICAgIHByaW50bG4hKCJQQlMgbmFt ZXNwYWNlOiB7fSIsIG5zKTsKPj4gQEAgLTY1LDIyICs3NCwzMSBAQCBmbiBjcmVhdGVfcGJzX2Jh Y2t1cF90YXNrKGFyZ3M6IEJhY2t1cFZtYVRvUGJzQXJncykgLT4gUmVzdWx0PCptdXQgUHJveG1v eEJhY2t1cAo+PiAgIAo+PiAgICAgICBsZXQgbXV0IHBic19lcnI6ICptdXQgY19jaGFyID0gcHRy OjpudWxsX211dCgpOwo+PiAgIAo+PiAtICAgIGxldCBwYnNfcmVwb3NpdG9yeV9jc3RyID0gQ1N0 cmluZzo6bmV3KGFyZ3MucGJzX3JlcG9zaXRvcnkpPzsKPj4gLSAgICBsZXQgbnNfY3N0ciA9IENT dHJpbmc6Om5ldyhhcmdzLm5hbWVzcGFjZS51bndyYXBfb3IoIiIudG9fc3RyaW5nKCkpKT87Cj4+ IC0gICAgbGV0IGJhY2t1cF9pZF9jc3RyID0gQ1N0cmluZzo6bmV3KGFyZ3MuYmFja3VwX2lkKT87 Cj4+IC0gICAgbGV0IHBic19wYXNzd29yZF9jc3RyID0gQ1N0cmluZzo6bmV3KGFyZ3MucGJzX3Bh c3N3b3JkKT87Cj4+IC0gICAgbGV0IGZpbmdlcnByaW50X2NzdHIgPSBDU3RyaW5nOjpuZXcoYXJn cy5maW5nZXJwcmludCk/Owo+PiAtICAgIGxldCBrZXlmaWxlX2NzdHIgPSBhcmdzLmtleWZpbGUu bWFwKHx2fCBDU3RyaW5nOjpuZXcodikudW53cmFwKCkpOwo+PiArICAgIGxldCBwYnNfcmVwb3Np dG9yeV9jc3RyID0gQ1N0cmluZzo6bmV3KGFyZ3MucGJzX3JlcG9zaXRvcnkuYXNfc3RyKCkpPzsK Pj4gKyAgICBsZXQgbnNfY3N0ciA9IENTdHJpbmc6Om5ldyhhcmdzLm5hbWVzcGFjZS5hc19kZXJl ZigpLnVud3JhcF9vcigiIikpPzsKPj4gKyAgICBsZXQgYmFja3VwX2lkX2NzdHIgPSBDU3RyaW5n OjpuZXcoYXJncy5iYWNrdXBfaWQuYXNfc3RyKCkpPzsKPj4gKyAgICBsZXQgcGJzX3Bhc3N3b3Jk X2NzdHIgPSBDU3RyaW5nOjpuZXcoYXJncy5wYnNfcGFzc3dvcmQuYXNfc3RyKCkpPzsKPj4gKyAg ICBsZXQgZmluZ2VycHJpbnRfY3N0ciA9IENTdHJpbmc6Om5ldyhhcmdzLmZpbmdlcnByaW50LmFz X3N0cigpKT87Cj4+ICsgICAgbGV0IGtleWZpbGVfY3N0ciA9IGFyZ3MKPj4gKyAgICAgICAgLmtl eWZpbGUKPj4gKyAgICAgICAgLmFzX3JlZigpCj4+ICsgICAgICAgIC5tYXAofHZ8IENTdHJpbmc6 Om5ldyh2LmFzX3N0cigpKS51bndyYXAoKSk7Cj4gYW5kIHRoZXNlCj4KPj4gICAgICAgbGV0IGtl eWZpbGVfcHRyID0ga2V5ZmlsZV9jc3RyCj4+ICAgICAgICAgICAuYXNfcmVmKCkKPj4gICAgICAg ICAgIC5tYXAofHZ8IHYuYXNfcHRyKCkpCj4+ICAgICAgICAgICAudW53cmFwX29yKHB0cjo6bnVs bCgpKTsKPj4gLSAgICBsZXQga2V5X3Bhc3N3b3JkX2NzdHIgPSBhcmdzLmtleV9wYXNzd29yZC5t YXAofHZ8IENTdHJpbmc6Om5ldyh2KS51bndyYXAoKSk7Cj4+ICsgICAgbGV0IGtleV9wYXNzd29y ZF9jc3RyID0gYXJncwo+PiArICAgICAgICAua2V5X3Bhc3N3b3JkCj4+ICsgICAgICAgIC5hc19y ZWYoKQo+PiArICAgICAgICAubWFwKHx2fCBDU3RyaW5nOjpuZXcodi5hc19zdHIoKSkudW53cmFw KCkpOwo+IGFuZCB0aGlzCj4KPj4gICAgICAgbGV0IGtleV9wYXNzd29yZF9wdHIgPSBrZXlfcGFz c3dvcmRfY3N0cgo+PiAgICAgICAgICAgLmFzX3JlZigpCj4+ICAgICAgICAgICAubWFwKHx2fCB2 LmFzX3B0cigpKQo+PiAgICAgICAgICAgLnVud3JhcF9vcihwdHI6Om51bGwoKSk7Cj4+IC0gICAg bGV0IG1hc3Rlcl9rZXlmaWxlX2NzdHIgPSBhcmdzLm1hc3Rlcl9rZXlmaWxlLm1hcCh8dnwgQ1N0 cmluZzo6bmV3KHYpLnVud3JhcCgpKTsKPj4gKyAgICBsZXQgbWFzdGVyX2tleWZpbGVfY3N0ciA9 IGFyZ3MKPj4gKyAgICAgICAgLm1hc3Rlcl9rZXlmaWxlCj4+ICsgICAgICAgIC5hc19yZWYoKQo+ PiArICAgICAgICAubWFwKHx2fCBDU3RyaW5nOjpuZXcodi5hc19zdHIoKSkudW53cmFwKCkpOwo+ IGFuZCB0aGlzCj4KPiBzZWVtIGtpbmRhIHVucmVsYXRlZD8gc29tZSBzb3J0IG9mIGNsaXBweS9m b3JtYXQgZml4IHBhdGNoIHRoYXQgc2hvdWxkCj4gYmUgc3BsaXQgb3V0IG1heWJlPyBhaCwgaXQn cyBiZWNhdXNlIHlvdSBuZWVkIHRvIHBhc3MgdGhlIGFyZ3MgdG8KPiBhbm90aGVyIGhlbHBlciBm dXJ0aGVyIGJlbG93Li4gdGhhdCBjb3VsZCBiZSBzcGxpdCBpbnRvIGl0J3Mgb3duIHBhdGNoCj4g dG8gY2xlYXJsIHNlcGFyYXRlIHRoZSBpbnRlcmZhY2UgY2hhbmdlIGFuZCB0aGUgcmVzdC4uCj4K Pj4gICAgICAgbGV0IG1hc3Rlcl9rZXlmaWxlX3B0ciA9IG1hc3Rlcl9rZXlmaWxlX2NzdHIKPj4g ICAgICAgICAgIC5hc19yZWYoKQo+PiAgICAgICAgICAgLm1hcCh8dnwgdi5hc19wdHIoKSkKPj4g QEAgLTM0Myw2ICszNjEsOTggQEAgd2hlcmUKPj4gICAgICAgT2soKCkpCj4+ICAgfQo+PiAgIAo+ PiArZm4gdXBsb2FkX2xvZ19hbmRfbm90ZXMoYXJnczogJkJhY2t1cFZtYVRvUGJzQXJncykgLT4g UmVzdWx0PCgpLCBFcnJvcj4gewo+PiArICAgIGlmIGFyZ3MubG9nX2ZpbGVfcGF0aC5pc19ub25l KCkgfHwgYXJncy5ub3Rlcy5pc19ub25lKCkgewo+PiArICAgICAgICByZXR1cm4gT2soKCkpOwo+ PiArICAgIH0KPj4gKwo+PiArICAgIGxldCByZXBvOiBCYWNrdXBSZXBvc2l0b3J5ID0gYXJncy5w YnNfcmVwb3NpdG9yeS5wYXJzZSgpPzsKPj4gKyAgICBzdGQ6OmVudjo6c2V0X3ZhcigiUEJTX1BB U1NXT1JEIiwgJmFyZ3MucGJzX3Bhc3N3b3JkKTsKPj4gKyAgICBsZXQgY2xpZW50ID0gY29ubmVj dCgmcmVwbyk/Owo+IHdoeSBub3QganVzdCBjcmVhdGUgdGhlIGNsaWVudCBkaXJlY3RseSAoSHR0 cENMaWVudDo6bmV3KCkpLCB0aGVuIHlvdQo+IGRvbid0IG5lZWQgdG8gc2V0IGFuIGVudiB2YXJp YWJsZSBoZXJlIHRoYXQgbWlnaHQgbGVhayB0aGUgcGFzc3dvcmQuLgo+Cj4+ICsgICAgbGV0IGJh Y2t1cF9kaXIgPSBCYWNrdXBEaXI6OmZyb20oKEJhY2t1cFR5cGU6OlZtLCBhcmdzLmJhY2t1cF9p ZC5jbG9uZSgpLCBhcmdzLmJhY2t1cF90aW1lKSk7Cj4+ICsKPj4gKyAgICBsZXQgbmFtZXNwYWNl ID0gbWF0Y2ggJmFyZ3MubmFtZXNwYWNlIHsKPj4gKyAgICAgICAgU29tZShuYW1lc3BhY2UpID0+ IEJhY2t1cE5hbWVzcGFjZTo6bmV3KG5hbWVzcGFjZSk/LAo+PiArICAgICAgICBOb25lID0+IEJh Y2t1cE5hbWVzcGFjZTo6cm9vdCgpLAo+PiArICAgIH07Cj4+ICsKPj4gKyAgICBsZXQgbXV0IHJl cXVlc3RfYXJncyA9IHNlcmRlX2pzb246OnRvX3ZhbHVlKGJhY2t1cF9kaXIpPzsKPj4gKyAgICBp ZiAhbmFtZXNwYWNlLmlzX3Jvb3QoKSB7Cj4+ICsgICAgICAgIHJlcXVlc3RfYXJnc1sibnMiXSA9 IHNlcmRlX2pzb246OnRvX3ZhbHVlKG5hbWVzcGFjZSk/Owo+PiArICAgIH0KPiBldmVyeXRoaW5n IHVwIHRvIGhlcmUgY291bGQgYmUgYSBoZWxwZXIgdG8gZ2V0IGEgY2xpZW50Li4KPgo+PiArCj4+ ICsgICAgdXBsb2FkX2xvZygmY2xpZW50LCBhcmdzLCAmcmVwbywgcmVxdWVzdF9hcmdzLmNsb25l KCkpPzsKPj4gKyAgICB1cGxvYWRfbm90ZXMoJmNsaWVudCwgYXJncywgJnJlcG8sIHJlcXVlc3Rf YXJncyk/Owo+PiArCj4+ICsgICAgT2soKCkpCj4+ICt9Cj4+ICsKPj4gK2ZuIHVwbG9hZF9sb2co Cj4+ICsgICAgY2xpZW50OiAmSHR0cENsaWVudCwKPj4gKyAgICBhcmdzOiAmQmFja3VwVm1hVG9Q YnNBcmdzLAo+PiArICAgIHJlcG86ICZCYWNrdXBSZXBvc2l0b3J5LAo+PiArICAgIHJlcXVlc3Rf YXJnczogVmFsdWUsCj4+ICspIC0+IFJlc3VsdDwoKSwgRXJyb3I+IHsKPj4gKyAgICBpZiBsZXQg U29tZShsb2dfZmlsZV9wYXRoKSA9ICZhcmdzLmxvZ19maWxlX3BhdGggewo+PiArICAgICAgICBs ZXQgcGF0aCA9IGZvcm1hdCEoCj4+ICsgICAgICAgICAgICAiYXBpMi9qc29uL2FkbWluL2RhdGFz dG9yZS97fS91cGxvYWQtYmFja3VwLWxvZyIsCj4+ICsgICAgICAgICAgICByZXBvLnN0b3JlKCkK Pj4gKyAgICAgICAgKTsKPj4gKwo+PiArICAgICAgICBsZXQgZGF0YSA9IHN0ZDo6ZnM6OnJlYWQo bG9nX2ZpbGVfcGF0aCk/Owo+PiArCj4+ICsgICAgICAgIGxldCBibG9iID0gaWYgYXJncy5lbmNy eXB0IHsKPj4gKyAgICAgICAgICAgIGxldCBjcnlwdF9jb25maWcgPSBtYXRjaCAmYXJncy5rZXlm aWxlIHsKPj4gKyAgICAgICAgICAgICAgICBOb25lID0+IE5vbmUsCj4+ICsgICAgICAgICAgICAg ICAgU29tZShrZXlmaWxlKSA9PiB7Cj4+ICsgICAgICAgICAgICAgICAgICAgIGxldCBrZXkgPSBz dGQ6OmZzOjpyZWFkKGtleWZpbGUpPzsKPj4gKyAgICAgICAgICAgICAgICAgICAgbGV0IChrZXks IF9jcmVhdGVkLCBfKSA9IGRlY3J5cHRfa2V5KCZrZXksICZ8fCAtPiBSZXN1bHQ8VmVjPHU4Piwg RXJyb3I+IHsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoICZhcmdzLmtleV9wYXNz d29yZCB7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShrZXlfcGFzc3dvcmQp ID0+IE9rKGtleV9wYXNzd29yZC5jbG9uZSgpLmludG9fYnl0ZXMoKSksCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTm9uZSA9PiBiYWlsISgibm8ga2V5IHBhc3N3b3JkIHByb3ZpZGVk IiksCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICB9Cj4+ICsgICAgICAgICAgICAgICAgICAg IH0pPzsKPj4gKyAgICAgICAgICAgICAgICAgICAgbGV0IGNyeXB0X2NvbmZpZyA9IENyeXB0Q29u ZmlnOjpuZXcoa2V5KT87Cj4+ICsgICAgICAgICAgICAgICAgICAgIFNvbWUoY3J5cHRfY29uZmln KQo+PiArICAgICAgICAgICAgICAgIH0KPj4gKyAgICAgICAgICAgIH07Cj4+ICsKPj4gKyAgICAg ICAgICAgIERhdGFCbG9iOjplbmNvZGUoJmRhdGEsIGNyeXB0X2NvbmZpZy5hc19yZWYoKSwgYXJn cy5jb21wcmVzcyk/Cj4+ICsgICAgICAgIH0gZWxzZSB7Cj4+ICsgICAgICAgICAgICAvLyBmaXht ZTogaG93dG8gc2lnbiBsb2c/Cj4+ICsgICAgICAgICAgICBEYXRhQmxvYjo6ZW5jb2RlKCZkYXRh LCBOb25lLCBhcmdzLmNvbXByZXNzKT8KPj4gKyAgICAgICAgfTsKPj4gKwo+PiArICAgICAgICBs ZXQgYm9keSA9IGh5cGVyOjpCb2R5Ojpmcm9tKGJsb2IuaW50b19pbm5lcigpKTsKPj4gKwo+PiAr ICAgICAgICBibG9ja19vbihhc3luYyB7Cj4+ICsgICAgICAgICAgICBjbGllbnQKPj4gKyAgICAg ICAgICAgICAgICAudXBsb2FkKCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLCBib2R5LCAmcGF0 aCwgU29tZShyZXF1ZXN0X2FyZ3MpKQo+PiArICAgICAgICAgICAgICAgIC5hd2FpdAo+PiArICAg ICAgICAgICAgICAgIC51bndyYXAoKTsKPj4gKyAgICAgICAgfSk7Cj4+ICsgICAgfQo+PiArCj4+ ICsgICAgT2soKCkpCj4+ICt9Cj4+ICsKPj4gK2ZuIHVwbG9hZF9ub3RlcygKPj4gKyAgICBjbGll bnQ6ICZIdHRwQ2xpZW50LAo+PiArICAgIGFyZ3M6ICZCYWNrdXBWbWFUb1Bic0FyZ3MsCj4+ICsg ICAgcmVwbzogJkJhY2t1cFJlcG9zaXRvcnksCj4+ICsgICAgbXV0IHJlcXVlc3RfYXJnczogVmFs dWUsCj4+ICspIC0+IFJlc3VsdDwoKSwgRXJyb3I+IHsKPj4gKyAgICBpZiBsZXQgU29tZShub3Rl cykgPSAmYXJncy5ub3RlcyB7Cj4+ICsgICAgICAgIHJlcXVlc3RfYXJnc1sibm90ZXMiXSA9IFZh bHVlOjpmcm9tKG5vdGVzLmFzX3N0cigpKTsKPj4gKyAgICAgICAgbGV0IHBhdGggPSBmb3JtYXQh KCJhcGkyL2pzb24vYWRtaW4vZGF0YXN0b3JlL3t9L25vdGVzIiwgcmVwby5zdG9yZSgpKTsKPj4g KyAgICAgICAgYmxvY2tfb24oYXN5bmMgewo+PiArICAgICAgICAgICAgY2xpZW50LnB1dCgmcGF0 aCwgU29tZShyZXF1ZXN0X2FyZ3MpKS5hd2FpdC51bndyYXAoKTsKPj4gKyAgICAgICAgfSk7Cj4+ ICsgICAgfQo+PiArCj4+ICsgICAgT2soKCkpCj4+ICt9Cj4+ICsKPj4gICBwdWIgZm4gYmFja3Vw X3ZtYV90b19wYnMoYXJnczogQmFja3VwVm1hVG9QYnNBcmdzKSAtPiBSZXN1bHQ8KCksIEVycm9y PiB7Cj4+ICAgICAgIGxldCB2bWFfZmlsZTogQm94PGR5biBCdWZSZWFkPiA9IG1hdGNoICZhcmdz LnZtYV9maWxlX3BhdGggewo+PiAgICAgICAgICAgU29tZSh2bWFfZmlsZV9wYXRoKSA9PiBtYXRj aCBGaWxlOjpvcGVuKHZtYV9maWxlX3BhdGgpIHsKPj4gQEAgLTM1Myw3ICs0NjMsNyBAQCBwdWIg Zm4gYmFja3VwX3ZtYV90b19wYnMoYXJnczogQmFja3VwVm1hVG9QYnNBcmdzKSAtPiBSZXN1bHQ8 KCksIEVycm9yPiB7Cj4+ICAgICAgIH07Cj4+ICAgICAgIGxldCB2bWFfcmVhZGVyID0gVm1hUmVh ZGVyOjpuZXcodm1hX2ZpbGUpPzsKPj4gICAKPj4gLSAgICBsZXQgcGJzID0gY3JlYXRlX3Bic19i YWNrdXBfdGFzayhhcmdzKT87Cj4+ICsgICAgbGV0IHBicyA9IGNyZWF0ZV9wYnNfYmFja3VwX3Rh c2soJmFyZ3MpPzsKPj4gICAKPj4gICAgICAgZGVmZXIhIHsKPj4gICAgICAgICAgIHByb3htb3hf YmFja3VwX2Rpc2Nvbm5lY3QocGJzKTsKPj4gQEAgLTM3Nyw2ICs0ODcsOCBAQCBwdWIgZm4gYmFj a3VwX3ZtYV90b19wYnMoYXJnczogQmFja3VwVm1hVG9QYnNBcmdzKSAtPiBSZXN1bHQ8KCksIEVy cm9yPiB7Cj4+ICAgICAgICAgICBoYW5kbGVfcGJzX2Vycm9yKHBic19lcnIsICJwcm94bW94X2Jh Y2t1cF9maW5pc2giKT87Cj4+ICAgICAgIH0KPj4gICAKPiBjb3VsZG4ndCB3ZSBqdXN0IGNoZWNr IGhlcmUgaWYgd2UgbmVlZCB0byB1cGxvYWQgbG9ncyBvciBub3RlcywgYW5kIHRoZW4KPiBkbyBz b21ldGhpbmcgbGlrZToKPgo+IGxldCAoY2xpZW50LCByZXF1ZXN0X2FyZ3MpID0gY2xpZW50X2hl bHBlcigmYXJncyk/Owo+IGlmIChhcmdzLm5vdGVzX2ZpbGUuaXNfc29tZSgpKSB7Cj4gICAgc2V0 X25vdGVzKCZjbGllbnQsIC4uKT87Cj4gfQo+IGlmIChhcmdzLmxvZ19maWxlX3BhdGguaXNfc29t ZSgpKSB7Cj4gICAgdXBsb2FkX2xvZygmY2xpZW50LCAuLik/Owo+IH0KPgo+PiArICAgIHVwbG9h ZF9sb2dfYW5kX25vdGVzKCZhcmdzKT87Cj4+ICsKPj4gICAgICAgbGV0IHRyYW5zZmVyX2R1cmF0 aW9uID0gU3lzdGVtVGltZTo6bm93KCkuZHVyYXRpb25fc2luY2Uoc3RhcnRfdHJhbnNmZXJfdGlt ZSk/Owo+PiAgICAgICBsZXQgdG90YWxfc2Vjb25kcyA9IHRyYW5zZmVyX2R1cmF0aW9uLmFzX3Nl Y3MoKTsKPj4gICAgICAgbGV0IG1pbnV0ZXMgPSB0b3RhbF9zZWNvbmRzIC8gNjA7Cj4+IC0tIAo+ PiAyLjM5LjIKPj4KPj4KPj4KPj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KPj4gcGJzLWRldmVsIG1haWxpbmcgbGlzdAo+PiBwYnMtZGV2ZWxAbGlzdHMu cHJveG1veC5jb20KPj4gaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4v bGlzdGluZm8vcGJzLWRldmVsCj4+Cj4+Cj4+Cj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwo+IHBicy1kZXZlbCBtYWlsaW5nIGxpc3QKPiBwYnMtZGV2 ZWxAbGlzdHMucHJveG1veC5jb20KPiBodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4v bWFpbG1hbi9saXN0aW5mby9wYnMtZGV2ZWwKPgo+CgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KcGJzLWRldmVsIG1haWxpbmcgbGlzdApwYnMtZGV2ZWxA bGlzdHMucHJveG1veC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxt YW4vbGlzdGluZm8vcGJzLWRldmVsCg==