From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <pbs-devel-bounces@lists.proxmox.com>
Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9])
	by lore.proxmox.com (Postfix) with ESMTPS id 704791FF15C
	for <inbox@lore.proxmox.com>; Fri,  4 Apr 2025 20:02:22 +0200 (CEST)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id BB96839B1;
	Fri,  4 Apr 2025 20:02:09 +0200 (CEST)
Mime-Version: 1.0
Date: Fri, 04 Apr 2025 20:02:04 +0200
Message-Id: <D8Y1V8BY8F6I.25I1HV13SAN63@proxmox.com>
To: "Proxmox Backup Server development discussion"
 <pbs-devel@lists.proxmox.com>
From: "Max Carrara" <m.carrara@proxmox.com>
X-Mailer: aerc 0.18.2-0-ge037c095a049
References: <20250404134936.425392-1-c.ebner@proxmox.com>
 <20250404134936.425392-5-c.ebner@proxmox.com>
In-Reply-To: <20250404134936.425392-5-c.ebner@proxmox.com>
X-SPAM-LEVEL: Spam detection results:  0
 AWL 0.080 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: [pbs-devel] [PATCH v4 proxmox-backup 4/7] fix #4182: server:
 sync: allow pulling groups concurrently
X-BeenThere: pbs-devel@lists.proxmox.com
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Proxmox Backup Server development discussion
 <pbs-devel.lists.proxmox.com>
List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pbs-devel>, 
 <mailto:pbs-devel-request@lists.proxmox.com?subject=unsubscribe>
List-Archive: <http://lists.proxmox.com/pipermail/pbs-devel/>
List-Post: <mailto:pbs-devel@lists.proxmox.com>
List-Help: <mailto:pbs-devel-request@lists.proxmox.com?subject=help>
List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel>, 
 <mailto:pbs-devel-request@lists.proxmox.com?subject=subscribe>
Reply-To: Proxmox Backup Server development discussion
 <pbs-devel@lists.proxmox.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: pbs-devel-bounces@lists.proxmox.com
Sender: "pbs-devel" <pbs-devel-bounces@lists.proxmox.com>

T24gRnJpIEFwciA0LCAyMDI1IGF0IDM6NDkgUE0gQ0VTVCwgQ2hyaXN0aWFuIEVibmVyIHdyb3Rl
Ogo+IEN1cnJlbnRseSwgYSBzeW5jIGpvYiBzZXF1ZW50aWFsbHkgcHVsbHMgdGhlIGJhY2t1cCBn
cm91cHMgYW5kIHRoZQo+IHNuYXBzaG90cyBjb250YWluZWQgd2l0aGluIHRoZW0sIHRoZXJlZm9y
ZSBiZWluZyBsaW1pdGVkIGluIGRvd25sb2FkCj4gc3BlZWQgYnkgdGhlIGh0dHAyIGNvbm5lY3Rp
b24gb2YgdGhlIHNvdXJjZSByZWFkZXIgaW5zdGFuY2UgaW4gY2FzZQo+IG9mIHJlbW90ZSBzeW5j
cy4gSGlnaCBsYXRlbmN5IG5ldHdvcmtzIHN1ZmZlciBmcm9tIGxpbWl0ZWQgZG93bmxvYWQKPiBz
cGVlZC4KPgo+IEltcHJvdmUgdGhlIHRocm91Z2hwdXQgYnkgYWxsb3dpbmcgdG8gcHVsbCB1cCB0
byBhIGNvbmZpZ3VyZWQgbnVtYmVyCj4gb2YgYmFja3VwIGdyb3VwcyBjb25jdXJyZW50bHksIGJ5
IGNyZWF0aW5nIHRhc2tzIGNvbm5lY3RpbmcgYW5kCj4gcHVsbGluZyBmcm9tIHRoZSByZW1vdGUg
c291cmNlIGluIHBhcmFsbGVsLgo+Cj4gTWFrZSB0aGUgZXJyb3IgaGFuZGxpbmcgYW5kIGFjY291
bnRpbmcgbG9naWMgZm9yIGVhY2ggZ3JvdXAgcHVsbAo+IHJldXNhYmxlIGJ5IG1vdmluZyBpdCBp
bnRvIGl0cyBvd24gaGVscGVyIGZ1bmN0aW9uLCByZXR1cm5pbmcgdGhlCj4gZnV0dXJlLgo+Cj4g
VGhlIHN0b3JlIHByb2dyZXNzIGlzIHBsYWNlZCBiZWhpbmQgYW4gYXRvbWljIHJlZmVyZW5jZSBj
b3VudGVkIG11dGV4Cj4gdG8gYWxsb3cgZm9yIGNvbmN1cnJlbnQgYWNjZXNzIG9mIHN0YXR1cyB1
cGRhdGVzLgoKWWVhaCwgc28uLi4gSSd2ZSBnb3Qgc29tZSB0aG91Z2h0cyBhYm91dCB0aGlzOgoK
Rmlyc3Qgb2YgYWxsLCBJIHRoaW5rIHRoYXQgdGhhdCdzICpmaW5lKiBoZXJlLCBhcyB0aGUKYEFy
YzxNdXRleDxTdG9yZVByb2dyZXNzPj5gIHByb2JhYmx5IGlzbid0IGdvaW5nIHRvIGZhY2UgdGhh
dCBtdWNoIGxvY2sKY29udGVudGlvbiBvciBzb21ldGhpbmcgYW55d2F5LiBTbyB0byBnZXQgdGhh
dCBvdXQgb2YgdGhlIHdheSwgSU1PIHdlCmNhbiBrZWVwIHRoYXQgaGVyZSBhcyBpdCBpcyByaWdo
dCBub3cuCgpCdXQgaW4gdGhlIGZ1dHVyZSBJIGRvIHRoaW5rIHRoYXQgd2Ugc2hvdWxkIGNoZWNr
IHRoZSBsb2NhdGlvbnMgd2hlcmUgd2UKaGF2ZSB0aGF0IGtpbmQgb2YgY29uY3VycmVudCBkYXRh
IGFjY2VzcyAvIG1vZGlmaWNhdGlvbiwgYmVjYXVzZSBJIGZlZWwKdGhlIGFtb3VudCBvZiBtdXRl
eGVzIGlzIG9ubHkgZ29pbmcgdG8gY29udGludWUgZ3Jvd2luZy4gVGhhdCdzIG5vdCBhCmJhZCB0
aGluZyBwZXIgc2UsIGJ1dCBpdCBkb2VzIGNvbWUgd2l0aCBhIGZldyByaXNrcyAvIGRyYXdiYWNr
cyAoZS5nLgpoaWdoZXIgcmlzayBmb3IgZGVhZGxvY2tzKS4KCldpdGhvdXQgZ29pbmcgdG8gZGVl
cCBpbnRvIHRoZSB3aG9sZSAiaG93IHRvIGF2b2lkIGRlYWRsb2NrcyIgZGlzY3Vzc2lvbgphbmQg
b3RoZXIgdGhpbmdzLCBoZXJlJ3MgYW4gYWx0ZXJuYXRpdmUgSSB3YW50IHRvIHByb3Bvc2UgdGhh
dCBjb3VsZApwZXJoYXBzIGJlIGRvbmUgaW4gKG9yIGFzIHBhcnQgb2YgYSkgZGlmZmVyZW50IHNl
cmllcywgc2luY2UgaXQncyBhIGJpdApvdXQgb2Ygc2NvcGUgZm9yIHRoaXMgb25lIGhlcmUuIChU
aG91Z2gsIGlmIHlvdSBkbyB3YW5uYSBkbyBpdCBpbiB0aGlzCm9uZSwgSSBjZXJ0YWlubHkgd29u
J3QgY29tcGxhaW4hKQoKRmlyc3QsIHNpbmNlIGBTdG9yZVByb2dyZXNzYCBvbmx5IGNvbnRhaW5z
IGZvdXIgYHVzaXplYHMsIGl0IHNob3VsZCBiZQpmYWlybHkgZWFzeSB0byBjb252ZXJ0IHRoZSBv
bmVzIGJlaW5nIG1vZGlmaWVkIGludG8gYEF0b21pY1VzaXplYHMgYW5kCnBlcmhhcHMgYWRkIGhl
bHBlciBtZXRob2RzIHRvIGluY3JlYXNlIHRoZWlyIHJlc3BlY3RpdmUgdmFsdWVzOwpzb21ldGhp
bmcgbGlrZSB0aGlzOgoKICAgICNbZGVyaXZlKERlYnVnLCBEZWZhdWx0KV0KICAgIC8vLyBUcmFj
a2VyIGZvciBwcm9ncmVzcyBvZiBvcGVyYXRpb25zIGl0ZXJhdGluZyBvdmVyIGBEYXRhc3RvcmVg
IGNvbnRlbnRzLgogICAgcHViIHN0cnVjdCBTdG9yZVByb2dyZXNzIHsKICAgICAgICAvLy8gQ29t
cGxldGVkIGdyb3VwcwogICAgICAgIHB1YiBkb25lX2dyb3VwczogQXRvbWljVXNpemUsCiAgICAg
ICAgLy8vIFRvdGFsIGdyb3VwcwogICAgICAgIHB1YiB0b3RhbF9ncm91cHM6IHU2NCwKICAgICAg
ICAvLy8gQ29tcGxldGVkIHNuYXBzaG90cyB3aXRoaW4gY3VycmVudCBncm91cAogICAgICAgIHB1
YiBkb25lX3NuYXBzaG90czogQXRvbWljVXNpemUsCiAgICAgICAgLy8vIFRvdGFsIHNuYXBzaG90
cyBpbiBjdXJyZW50IGdyb3VwCiAgICAgICAgcHViIGdyb3VwX3NuYXBzaG90czogdTY0LAogICAg
fQogICAgCiAgICAvLyBbLi4uXQogICAgCiAgICBpbXBsIFN0b3JlUHJvZ3Jlc3MgewogICAgICAg
IHB1YiBmbiBhZGRfZG9uZV9ncm91cCgmc2VsZikgewogICAgICAgICAgICBsZXQgXyA9IHNlbGYu
ZG9uZV9ncm91cHMuZmV0Y2hfYWRkKDEsIE9yZGVyaW5nOjpSZWxheGVkKTsKICAgICAgICB9CiAg
ICAKICAgICAgICAvLyBbLi4uXQogICAgfQoKKG9mIGNvdXJzZSwgd2hhdCBpdCBhbGwgc2hvdWxk
IGxvb2sgbGlrZSBpbiBkZXRhaWwgaXMgdXAgdG8gYmlrZXNoZWRkaW5nIDpQKQoKU29tZXRoaW5n
IGxpa2UgdGhhdCB3b3VsZCBwcm9iYWJseSBiZSBuaWNlciBoZXJlLCBiZWNhdXNlOgoKLSBZb3Ug
d29uJ3QgbmVlZCB0byB3cmFwIGBTdG9yZVByb2dyZXNzYCB3aXRoaW4gYW4gYEFyYzxNdXRleDxU
Pj5gCiAgYW55bW9yZSAtLSBhIHNoYXJlZCByZWZlcmVuY2UgaXMgZW5vdWdoLCBzaW5jZSAuLi4K
LSBPcGVyYXRpb25zIG9uIGF0b21pY3MgdGFrZSAmc2VsZiAodGhhdCdzIHRoZSB3aG9sZSBwb2lu
dCBvZiB0aGVtIG9mYyA7cCApCgpUaGlzIG1lYW5zIHRoYXQ6Ci0gQ2xvbmluZyBhbiBgQXJjPFQ+
YCBpcyBub3QgbmVjZXNzYXJ5IGFueW1vcmUKICAtLT4gc2hvdWxkIGJlIGFwcHJveC4gdHdvIGF0
b21pYyBvcHMgbGVzcyB0aW1lcyB0aGUgYW1vdW50IG9mIGBBcmNgcyB1c2VkCiAgICAgIChvbiBj
cmVhdGUvY2xvbmUgYW5kIGRyb3AgZm9yIGVhY2ggYEFyY2ApCi0gTG9ja2luZyB0aGUgYE11dGV4
PFQ+YCBpcyBhbHNvIG5vdCBuZWNlc3NhcnkgYW55bW9yZSwgd2hpY2ggbWVhbnMKICAtLT4gc2hv
dWxkIGJlIHR3byBhdG9taWMgb3BzIGxlc3MgZm9yIGVhY2ggY2FsbCB0byBgLmxvY2soKWAKICAg
ICAgKGFjcXVpcmUgYW5kIHJlbGVhc2UpCgpJbiB0dXJuLCB0aGlzIGlzIHJlcGxhY2VkIGJ5IGEg
c2luZ2xlIGF0b21pYyBjYWxsIHdpdGgKYE9yZGVyaW5nOjpSZWxheGVkYCAod2hpY2ggaXMgZmlu
ZSBmb3IgY291bnRlcnMgWzBdKS4gU28sIHNvbWV0aGluZyBsaWtlCgogICAgcHJvZ3Jlc3MubG9j
aygpLnVud3JhcCgpLmRvbmVfZ3JvdXBzICs9IDE7Cgp3b3VsZCBqdXN0IGJlY29tZQoKICAgIHBy
b2dyZXNzLmFkZF9kb25lX2dyb3VwKCk7Cgp3aGljaCBpcyBhbHNvIHF1aXRlIG5lYXQuCgpOb3Rl
IGhvd2V2ZXIgdGhhdCB3ZSBtaWdodCBoYXZlIHRvIHNwbGl0IHRoYXQgc3RydWN0IGludG8gYSAi
bG9jYWwiIGFuZAoic2hhcmVkIiB2ZXJzaW9uIG9yIHdoYXRldmVyIGluIG9yZGVyIHRvIGFkYXB0
IGl0IGFsbCB0byB0aGUgY3VycmVudApjb2RlIChhIGxvY2FsbHktdXNlZCBzdHJ1Y3Qgb2ZjIGRv
ZXNuJ3QgbmVlZCBhdG9taWNzKS4KCkFnYWluLCBJIHRoaW5rIHdoYXQgeW91J3JlIGRvaW5nIGhl
cmUgaXMgcGVyZmVjdGx5IGZpbmU7IEkganVzdCB0aGluawp0aGF0IHdlIHNob3VsZCBoYXZlIGEg
bG9vayBhdCBhbGwgb2YgdGhvc2UgY29uY3VycmVudCBkYXRhIGFjY2Vzc2VzIGFuZApzZWUgd2hl
dGhlciB3ZSBjYW4gc2xpbSBzb21lIHN0dWZmIGRvd24gb3IgcGVyaGFwcyBoYXZlIHNvbWUga2lu
ZCBvZgpzdGF0aWNhbGx5IGVuZm9yY2VkIG11dGV4IG9yZGVyaW5nIGZvciBkZWFkbG9jayBwcmV2
ZW50aW9uIFsxXS4KClswXTogaHR0cHM6Ly9kb2MucnVzdC1sYW5nLm9yZy9ub21pY29uL2F0b21p
Y3MuaHRtbCNyZWxheGVkClsxXTogaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1CYTdm
YWp0NGwxTQoKPgo+IExpbmsgdG8gaXNzdWUgaW4gYnVndHJhY2tlcjoKPiBodHRwczovL2J1Z3pp
bGxhLnByb3htb3guY29tL3Nob3dfYnVnLmNnaT9pZD00MTgyCgpTaG91bGQgYmU6CgpGaXhlczog
aHR0cHM6Ly9idWd6aWxsYS5wcm94bW94LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NDE4MgoKLi4ganVk
Z2luZyBmcm9tIG91ciByZWNlbnQgaGlzdG9yeSBhdCBsZWFzdC4gQ2FuIGJlIGFkYXB0ZWQgd2hl
bgphcHBseWluZyB0aGUgcGF0Y2gsIHRob3VnaC4KCj4KPiBTaWduZWQtb2ZmLWJ5OiBDaHJpc3Rp
YW4gRWJuZXIgPGMuZWJuZXJAcHJveG1veC5jb20+Cj4gLS0tCj4gY2hhbmdlcyBzaW5jZSB2ZXJz
aW9uIDM6Cj4gLSByZWJhc2VkIG9udG8gY3VycmVudCBtYXN0ZXIKPgo+ICBwYnMtZGF0YXN0b3Jl
L3NyYy9zdG9yZV9wcm9ncmVzcy5ycyB8ICAgMiArLQo+ICBzcmMvc2VydmVyL3B1bGwucnMgICAg
ICAgICAgICAgICAgICB8IDExMSArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCj4gIDIgZmls
ZXMgY2hhbmdlZCwgNzIgaW5zZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0t
Z2l0IGEvcGJzLWRhdGFzdG9yZS9zcmMvc3RvcmVfcHJvZ3Jlc3MucnMgYi9wYnMtZGF0YXN0b3Jl
L3NyYy9zdG9yZV9wcm9ncmVzcy5ycwo+IGluZGV4IGEzMmJiOWE5ZC4uOGFmYTYwYWNlIDEwMDY0
NAo+IC0tLSBhL3Bicy1kYXRhc3RvcmUvc3JjL3N0b3JlX3Byb2dyZXNzLnJzCj4gKysrIGIvcGJz
LWRhdGFzdG9yZS9zcmMvc3RvcmVfcHJvZ3Jlc3MucnMKPiBAQCAtMSw0ICsxLDQgQEAKPiAtI1tk
ZXJpdmUoRGVidWcsIERlZmF1bHQpXQo+ICsjW2Rlcml2ZShDbG9uZSwgRGVidWcsIERlZmF1bHQp
XQo+ICAvLy8gVHJhY2tlciBmb3IgcHJvZ3Jlc3Mgb2Ygb3BlcmF0aW9ucyBpdGVyYXRpbmcgb3Zl
ciBgRGF0YXN0b3JlYCBjb250ZW50cy4KPiAgcHViIHN0cnVjdCBTdG9yZVByb2dyZXNzIHsKPiAg
ICAgIC8vLyBDb21wbGV0ZWQgZ3JvdXBzCj4gZGlmZiAtLWdpdCBhL3NyYy9zZXJ2ZXIvcHVsbC5y
cyBiL3NyYy9zZXJ2ZXIvcHVsbC5ycwo+IGluZGV4IDQ2YzNkOGRjNS4uYTQ4NDk1N2NlIDEwMDY0
NAo+IC0tLSBhL3NyYy9zZXJ2ZXIvcHVsbC5ycwo+ICsrKyBiL3NyYy9zZXJ2ZXIvcHVsbC5ycwo+
IEBAIC03LDYgKzcsOCBAQCB1c2Ugc3RkOjpzeW5jOjp7QXJjLCBNdXRleH07Cj4gIHVzZSBzdGQ6
OnRpbWU6OlN5c3RlbVRpbWU7Cj4gIAo+ICB1c2UgYW55aG93Ojp7YmFpbCwgZm9ybWF0X2Vyciwg
RXJyb3J9Owo+ICt1c2UgZnV0dXJlczo6c3RyZWFtOjpGdXR1cmVzVW5vcmRlcmVkOwo+ICt1c2Ug
ZnV0dXJlczo6U3RyZWFtRXh0Owo+ICB1c2UgcHJveG1veF9odW1hbl9ieXRlOjpIdW1hbkJ5dGU7
Cj4gIHVzZSB0cmFjaW5nOjppbmZvOwo+ICAKPiBAQCAtNTEyLDcgKzUxNCw3IEBAIGFzeW5jIGZu
IHB1bGxfZ3JvdXAoCj4gICAgICBwYXJhbXM6ICZQdWxsUGFyYW1ldGVycywKPiAgICAgIHNvdXJj
ZV9uYW1lc3BhY2U6ICZCYWNrdXBOYW1lc3BhY2UsCj4gICAgICBncm91cDogJkJhY2t1cEdyb3Vw
LAo+IC0gICAgcHJvZ3Jlc3M6ICZtdXQgU3RvcmVQcm9ncmVzcywKPiArICAgIHN0b3JlX3Byb2dy
ZXNzOiBBcmM8TXV0ZXg8U3RvcmVQcm9ncmVzcz4+LAo+ICApIC0+IFJlc3VsdDxTeW5jU3RhdHMs
IEVycm9yPiB7Cj4gICAgICBsZXQgbXV0IGFscmVhZHlfc3luY2VkX3NraXBfaW5mbyA9IFNraXBJ
bmZvOjpuZXcoU2tpcFJlYXNvbjo6QWxyZWFkeVN5bmNlZCk7Cj4gICAgICBsZXQgbXV0IHRyYW5z
ZmVyX2xhc3Rfc2tpcF9pbmZvID0gU2tpcEluZm86Om5ldyhTa2lwUmVhc29uOjpUcmFuc2Zlckxh
c3QpOwo+IEBAIC02MDEsNyArNjAzLDggQEAgYXN5bmMgZm4gcHVsbF9ncm91cCgKPiAgICAgIC8v
IHN0YXJ0IHdpdGggNjU1MzYgY2h1bmtzICh1cCB0byAyNTYgR2lCKQo+ICAgICAgbGV0IGRvd25s
b2FkZWRfY2h1bmtzID0gQXJjOjpuZXcoTXV0ZXg6Om5ldyhIYXNoU2V0Ojp3aXRoX2NhcGFjaXR5
KDEwMjQgKiA2NCkpKTsKPiAgCj4gLSAgICBwcm9ncmVzcy5ncm91cF9zbmFwc2hvdHMgPSBsaXN0
LmxlbigpIGFzIHU2NDsKPiArICAgIGxldCBtdXQgbG9jYWxfcHJvZ3Jlc3MgPSBzdG9yZV9wcm9n
cmVzcy5sb2NrKCkudW53cmFwKCkuY2xvbmUoKTsKPiArICAgIGxvY2FsX3Byb2dyZXNzLmdyb3Vw
X3NuYXBzaG90cyA9IGxpc3QubGVuKCkgYXMgdTY0Owo+ICAKPiAgICAgIGxldCBtdXQgc3luY19z
dGF0cyA9IFN5bmNTdGF0czo6ZGVmYXVsdCgpOwo+ICAKPiBAQCAtNjE4LDggKzYyMSwxMSBAQCBh
c3luYyBmbiBwdWxsX2dyb3VwKAo+ICAgICAgICAgIGxldCByZXN1bHQgPQo+ICAgICAgICAgICAg
ICBwdWxsX3NuYXBzaG90X2Zyb20ocmVhZGVyLCAmdG9fc25hcHNob3QsIGRvd25sb2FkZWRfY2h1
bmtzLmNsb25lKCksIGNvcnJ1cHQpLmF3YWl0Owo+ICAKPiAtICAgICAgICBwcm9ncmVzcy5kb25l
X3NuYXBzaG90cyA9IHBvcyBhcyB1NjQgKyAxOwo+IC0gICAgICAgIGluZm8hKCJwZXJjZW50YWdl
IGRvbmU6IHtwcm9ncmVzc30iKTsKPiArICAgICAgICBzdG9yZV9wcm9ncmVzcy5sb2NrKCkudW53
cmFwKCkuZG9uZV9zbmFwc2hvdHMgKz0gMTsKPiArICAgICAgICAvLyBVcGRhdGUgZG9uZSBncm91
cHMgcHJvZ3Jlc3MgYnkgb3RoZXIgcGFyYWxsZWwgcnVubmluZyBwdWxscwo+ICsgICAgICAgIGxv
Y2FsX3Byb2dyZXNzLmRvbmVfZ3JvdXBzID0gc3RvcmVfcHJvZ3Jlc3MubG9jaygpLnVud3JhcCgp
LmRvbmVfZ3JvdXBzOwo+ICsgICAgICAgIGxvY2FsX3Byb2dyZXNzLmRvbmVfc25hcHNob3RzID0g
cG9zIGFzIHU2NCArIDE7Cj4gKyAgICAgICAgaW5mbyEoIlBlcmNlbnRhZ2UgZG9uZToge2xvY2Fs
X3Byb2dyZXNzfSIpOwo+ICAKPiAgICAgICAgICBsZXQgc3RhdHMgPSByZXN1bHQ/OyAvLyBzdG9w
IG9uIGVycm9yCj4gICAgICAgICAgc3luY19zdGF0cy5hZGQoc3RhdHMpOwo+IEBAIC04NjMsNiAr
ODY5LDQ4IEBAIHB1YihjcmF0ZSkgYXN5bmMgZm4gcHVsbF9zdG9yZShtdXQgcGFyYW1zOiBQdWxs
UGFyYW1ldGVycykgLT4gUmVzdWx0PFN5bmNTdGF0cywKPiAgICAgIE9rKHN5bmNfc3RhdHMpCj4g
IH0KPiAgCj4gK2FzeW5jIGZuIHB1bGxfZ3JvdXBfZG8oCj4gKyAgICBwYXJhbXM6ICZQdWxsUGFy
YW1ldGVycywKPiArICAgIGdyb3VwOiAmQmFja3VwR3JvdXAsCj4gKyAgICBuYW1lc3BhY2U6ICZC
YWNrdXBOYW1lc3BhY2UsCj4gKyAgICB0YXJnZXRfbmFtZXNwYWNlOiAmQmFja3VwTmFtZXNwYWNl
LAo+ICsgICAgcHJvZ3Jlc3M6IEFyYzxNdXRleDxTdG9yZVByb2dyZXNzPj4sCj4gKykgLT4gUmVz
dWx0PFN5bmNTdGF0cywgKCk+IHsKPiArICAgIGxldCAob3duZXIsIF9sb2NrX2d1YXJkKSA9Cj4g
KyAgICAgICAgbWF0Y2ggcGFyYW1zCj4gKyAgICAgICAgICAgIC50YXJnZXQKPiArICAgICAgICAg
ICAgLnN0b3JlCj4gKyAgICAgICAgICAgIC5jcmVhdGVfbG9ja2VkX2JhY2t1cF9ncm91cCh0YXJn
ZXRfbmFtZXNwYWNlLCBncm91cCwgJnBhcmFtcy5vd25lcikKPiArICAgICAgICB7Cj4gKyAgICAg
ICAgICAgIE9rKHJlc3VsdCkgPT4gcmVzdWx0LAo+ICsgICAgICAgICAgICBFcnIoZXJyKSA9PiB7
Cj4gKyAgICAgICAgICAgICAgICBpbmZvISgic3luYyBncm91cCB7Z3JvdXB9IGZhaWxlZCAtIGdy
b3VwIGxvY2sgZmFpbGVkOiB7ZXJyfSIpOwo+ICsgICAgICAgICAgICAgICAgaW5mbyEoImNyZWF0
ZV9sb2NrZWRfYmFja3VwX2dyb3VwIGZhaWxlZCIpOwoKU2luY2UgYSBsb3Qgb2YgdGhlIHN1cnJv
dW5kaW5nIGNvZGUgYWxyZWFkeSBkb2VzIGl0IGl0J3MgZmluZSBJIGd1ZXNzLApidXQuLi4gd2h5
IGRvIHdlIHVzZSBgaW5mbyFgIGV2ZXJ5d2hlcmUgaGVyZSBmb3IgZXJyb3JzPyBJcyB0aGVyZSBh
bnkKcmVhc29uIGluIHBhcnRpY3VsYXI/IPCfmIUgCgo+ICsgICAgICAgICAgICAgICAgcmV0dXJu
IEVycigoKSk7Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICB9Owo+ICsKPiArICAgIGlmIHBh
cmFtcy5vd25lciAhPSBvd25lciB7Cj4gKyAgICAgICAgLy8gb25seSB0aGUgb3duZXIgaXMgYWxs
b3dlZCB0byBjcmVhdGUgYWRkaXRpb25hbCBzbmFwc2hvdHMKPiArICAgICAgICBpbmZvISgKPiAr
ICAgICAgICAgICAgInN5bmMgZ3JvdXAge2dyb3VwfSBmYWlsZWQgLSBvd25lciBjaGVjayBmYWls
ZWQgKHt9ICE9IHtvd25lcn0pIiwKPiArICAgICAgICAgICAgcGFyYW1zLm93bmVyLAo+ICsgICAg
ICAgICk7Cj4gKyAgICAgICAgcmV0dXJuIEVycigoKSk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgbWF0
Y2ggcHVsbF9ncm91cChwYXJhbXMsIG5hbWVzcGFjZSwgZ3JvdXAsIHByb2dyZXNzLmNsb25lKCkp
LmF3YWl0IHsKPiArICAgICAgICBPayhzeW5jX3N0YXRzKSA9PiB7Cj4gKyAgICAgICAgICAgIHBy
b2dyZXNzLmxvY2soKS51bndyYXAoKS5kb25lX2dyb3VwcyArPSAxOwo+ICsgICAgICAgICAgICBP
ayhzeW5jX3N0YXRzKQo+ICsgICAgICAgIH0KPiArICAgICAgICBFcnIoZXJyKSA9PiB7Cj4gKyAg
ICAgICAgICAgIGluZm8hKCJzeW5jIGdyb3VwIHtncm91cH0gZmFpbGVkIC0ge2Vycn0iKTsKPiAr
ICAgICAgICAgICAgRXJyKCgpKQo+ICsgICAgICAgIH0KPiArICAgIH0KPiArfQo+ICsKPiAgLy8v
IFB1bGxzIGEgbmFtZXNwYWNlIGFjY29yZGluZyB0byBgcGFyYW1zYC4KPiAgLy8vCj4gIC8vLyBQ
dWxsaW5nIGEgbmFtZXNwYWNlIGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dpbmcgc3RlcHM6Cj4gQEAg
LTkwMSw0OCArOTQ5LDI5IEBAIHB1YihjcmF0ZSkgYXN5bmMgZm4gcHVsbF9ucygKPiAgICAgICAg
ICBuZXdfZ3JvdXBzLmluc2VydChncm91cC5jbG9uZSgpKTsKPiAgICAgIH0KPiAgCj4gLSAgICBs
ZXQgbXV0IHByb2dyZXNzID0gU3RvcmVQcm9ncmVzczo6bmV3KGxpc3QubGVuKCkgYXMgdTY0KTsK
PiArICAgIGxldCBwcm9ncmVzcyA9IEFyYzo6bmV3KE11dGV4OjpuZXcoU3RvcmVQcm9ncmVzczo6
bmV3KGxpc3QubGVuKCkgYXMgdTY0KSkpOwo+ICAgICAgbGV0IG11dCBzeW5jX3N0YXRzID0gU3lu
Y1N0YXRzOjpkZWZhdWx0KCk7Cj4gIAo+ICAgICAgbGV0IHRhcmdldF9ucyA9IG5hbWVzcGFjZS5t
YXBfcHJlZml4KCZwYXJhbXMuc291cmNlLmdldF9ucygpLCAmcGFyYW1zLnRhcmdldC5ucyk/Owo+
ICAKPiAtICAgIGZvciAoZG9uZSwgZ3JvdXApIGluIGxpc3QuaW50b19pdGVyKCkuZW51bWVyYXRl
KCkgewo+IC0gICAgICAgIHByb2dyZXNzLmRvbmVfZ3JvdXBzID0gZG9uZSBhcyB1NjQ7Cj4gLSAg
ICAgICAgcHJvZ3Jlc3MuZG9uZV9zbmFwc2hvdHMgPSAwOwo+IC0gICAgICAgIHByb2dyZXNzLmdy
b3VwX3NuYXBzaG90cyA9IDA7Cj4gKyAgICBsZXQgbXV0IHB1bGxlciA9IEZ1dHVyZXNVbm9yZGVy
ZWQ6Om5ldygpOwo+ICsgICAgbGV0IG11dCBncm91cF9mdXR1cmVzX2l0ZXIgPSBsaXN0Cj4gKyAg
ICAgICAgLml0ZXIoKQo+ICsgICAgICAgIC5tYXAofGdyb3VwfCBwdWxsX2dyb3VwX2RvKHBhcmFt
cywgZ3JvdXAsIG5hbWVzcGFjZSwgJnRhcmdldF9ucywgcHJvZ3Jlc3MuY2xvbmUoKSkpOwo+ICAK
PiAtICAgICAgICBsZXQgKG93bmVyLCBfbG9ja19ndWFyZCkgPQo+IC0gICAgICAgICAgICBtYXRj
aCBwYXJhbXMKPiAtICAgICAgICAgICAgICAgIC50YXJnZXQKPiAtICAgICAgICAgICAgICAgIC5z
dG9yZQo+IC0gICAgICAgICAgICAgICAgLmNyZWF0ZV9sb2NrZWRfYmFja3VwX2dyb3VwKCZ0YXJn
ZXRfbnMsICZncm91cCwgJnBhcmFtcy5vd25lcikKPiAtICAgICAgICAgICAgewo+IC0gICAgICAg
ICAgICAgICAgT2socmVzdWx0KSA9PiByZXN1bHQsCj4gLSAgICAgICAgICAgICAgICBFcnIoZXJy
KSA9PiB7Cj4gLSAgICAgICAgICAgICAgICAgICAgaW5mbyEoInN5bmMgZ3JvdXAge30gZmFpbGVk
IC0gZ3JvdXAgbG9jayBmYWlsZWQ6IHtlcnJ9IiwgJmdyb3VwKTsKPiAtICAgICAgICAgICAgICAg
ICAgICBlcnJvcnMgPSB0cnVlOwo+IC0gICAgICAgICAgICAgICAgICAgIC8vIGRvIG5vdCBzdG9w
IGhlcmUsIGluc3RlYWQgY29udGludWUKPiAtICAgICAgICAgICAgICAgICAgICBpbmZvISgiY3Jl
YXRlX2xvY2tlZF9iYWNrdXBfZ3JvdXAgZmFpbGVkIik7Cj4gLSAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7Cj4gLSAgICAgICAgICAgICAgICB9Cj4gLSAgICAgICAgICAgIH07Cj4gKyAgICBm
b3IgXyBpbiAwLi5wYXJhbXMucGFyYWxsZWxfZ3JvdXBzLnVud3JhcF9vcigxKSB7Cj4gKyAgICAg
ICAgaWYgbGV0IFNvbWUoZnV0dXJlKSA9IGdyb3VwX2Z1dHVyZXNfaXRlci5uZXh0KCkgewo+ICsg
ICAgICAgICAgICBwdWxsZXIucHVzaChmdXR1cmUpOwo+ICsgICAgICAgIH0KPiArICAgIH0KPiAg
Cj4gLSAgICAgICAgLy8gcGVybWlzc2lvbiBjaGVjawo+IC0gICAgICAgIGlmIHBhcmFtcy5vd25l
ciAhPSBvd25lciB7Cj4gLSAgICAgICAgICAgIC8vIG9ubHkgdGhlIG93bmVyIGlzIGFsbG93ZWQg
dG8gY3JlYXRlIGFkZGl0aW9uYWwgc25hcHNob3RzCj4gLSAgICAgICAgICAgIGluZm8hKAo+IC0g
ICAgICAgICAgICAgICAgInN5bmMgZ3JvdXAge30gZmFpbGVkIC0gb3duZXIgY2hlY2sgZmFpbGVk
ICh7fSAhPSB7b3duZXJ9KSIsCj4gLSAgICAgICAgICAgICAgICAmZ3JvdXAsIHBhcmFtcy5vd25l
cgo+IC0gICAgICAgICAgICApOwo+IC0gICAgICAgICAgICBlcnJvcnMgPSB0cnVlOyAvLyBkbyBu
b3Qgc3RvcCBoZXJlLCBpbnN0ZWFkIGNvbnRpbnVlCj4gLSAgICAgICAgfSBlbHNlIHsKPiAtICAg
ICAgICAgICAgbWF0Y2ggcHVsbF9ncm91cChwYXJhbXMsIG5hbWVzcGFjZSwgJmdyb3VwLCAmbXV0
IHByb2dyZXNzKS5hd2FpdCB7Cj4gLSAgICAgICAgICAgICAgICBPayhzdGF0cykgPT4gc3luY19z
dGF0cy5hZGQoc3RhdHMpLAo+IC0gICAgICAgICAgICAgICAgRXJyKGVycikgPT4gewo+IC0gICAg
ICAgICAgICAgICAgICAgIGluZm8hKCJzeW5jIGdyb3VwIHt9IGZhaWxlZCAtIHtlcnJ9IiwgJmdy
b3VwKTsKPiAtICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPSB0cnVlOyAvLyBkbyBub3Qgc3Rv
cCBoZXJlLCBpbnN0ZWFkIGNvbnRpbnVlCj4gLSAgICAgICAgICAgICAgICB9Cj4gLSAgICAgICAg
ICAgIH0KPiArICAgIHdoaWxlIGxldCBTb21lKHJlc3VsdCkgPSBwdWxsZXIubmV4dCgpLmF3YWl0
IHsKPiArICAgICAgICBtYXRjaCByZXN1bHQgewo+ICsgICAgICAgICAgICBPayhzdGF0cykgPT4g
c3luY19zdGF0cy5hZGQoc3RhdHMpLAo+ICsgICAgICAgICAgICBFcnIoKCkpID0+IGVycm9ycyB8
PSB0cnVlLAo+ICsgICAgICAgIH07Cj4gKyAgICAgICAgaWYgbGV0IFNvbWUoZnV0dXJlKSA9IGdy
b3VwX2Z1dHVyZXNfaXRlci5uZXh0KCkgewo+ICsgICAgICAgICAgICBwdWxsZXIucHVzaChmdXR1
cmUpOwo+ICAgICAgICAgIH0KPiAgICAgIH0KPiAgCj4gQEAgLTk5OCw1ICsxMDI3LDcgQEAgcHVi
KGNyYXRlKSBhc3luYyBmbiBwdWxsX25zKAo+ICAgICAgICAgIH07Cj4gICAgICB9Cj4gIAo+ICsg
ICAgbGV0IHByb2dyZXNzID0gcHJvZ3Jlc3MubG9jaygpLnVud3JhcCgpLmNsb25lKCk7Cj4gKwo+
ICAgICAgT2soKHByb2dyZXNzLCBzeW5jX3N0YXRzLCBlcnJvcnMpKQo+ICB9CgoKCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnBicy1kZXZlbCBtYWlsaW5n
IGxpc3QKcGJzLWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8vbGlzdHMucHJveG1veC5j
b20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3Bicy1kZXZlbAo=