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=