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 780011FF184 for ; Thu, 20 Nov 2025 15:51:03 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id ADD68BA41; Thu, 20 Nov 2025 15:51:07 +0100 (CET) From: Stefan Hanreich To: pbs-devel@lists.proxmox.com Date: Thu, 20 Nov 2025 15:50:12 +0100 Message-ID: <20251120145031.550340-5-s.hanreich@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251120145031.550340-1-s.hanreich@proxmox.com> References: <20251120145031.550340-1-s.hanreich@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.173 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 KAM_LAZY_DOMAIN_SECURITY 1 Sending domain does not have any anti-forgery methods RDNS_NONE 0.793 Delivered to internal network by a host with no rDNS SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_NONE 0.001 SPF: sender does not publish an SPF Record Subject: [pbs-devel] [PATCH proxmox 4/5] pve-api-types: add proxmox-fixed-string 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" VGhlIEZpeGVkU3RyaW5nIHR5cGUgaGFzIGJlZW4gbW92ZWQgaW50byBpdHMgb3duIGNyYXRlLCBz byBpdCBjYW4gYmUKc2hhcmVkIHdpdGggcGJzLWFwaS10eXBlcy4gRGVsZXRlIHRoZSBleGlzdGlu ZyBpbXBsZW1lbnRhdGlvbiBhbmQgdXNlCnRoZSBwcm94bW94LWZpeGVkLXN0cmluZyBjcmF0ZSBp bnN0ZWFkLiBObyBmdW5jdGlvbmFsIGNoYW5nZXMKaW50ZW5kZWQuCgpTaWduZWQtb2ZmLWJ5OiBT dGVmYW4gSGFucmVpY2ggPHMuaGFucmVpY2hAcHJveG1veC5jb20+Ci0tLQogcHZlLWFwaS10eXBl cy9DYXJnby50b21sICAgICAgICAgICAgICAgIHwgICAxICsKIHB2ZS1hcGktdHlwZXMvZGViaWFu L2NvbnRyb2wgICAgICAgICAgICB8ICAgMiArCiBwdmUtYXBpLXR5cGVzL3NyYy90eXBlcy9maXhl ZF9zdHJpbmcucnMgfCAyNzQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBwdmUtYXBpLXR5cGVz L3NyYy90eXBlcy9tb2QucnMgICAgICAgICAgfCAgIDMgKy0KIDQgZmlsZXMgY2hhbmdlZCwgNCBp bnNlcnRpb25zKCspLCAyNzYgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgcHZlLWFw aS10eXBlcy9zcmMvdHlwZXMvZml4ZWRfc3RyaW5nLnJzCgpkaWZmIC0tZ2l0IGEvcHZlLWFwaS10 eXBlcy9DYXJnby50b21sIGIvcHZlLWFwaS10eXBlcy9DYXJnby50b21sCmluZGV4IDAwODg3Nzdh Li45ODY3MTA3OSAxMDA2NDQKLS0tIGEvcHZlLWFwaS10eXBlcy9DYXJnby50b21sCisrKyBiL3B2 ZS1hcGktdHlwZXMvQ2FyZ28udG9tbApAQCAtMjIsNiArMjIsNyBAQCBzZXJkZV9qc29uLndvcmtz cGFjZSA9IHRydWUKIHNlcmRlX3BsYWluLndvcmtzcGFjZSA9IHRydWUKICMKIHByb3htb3gtYXBp LW1hY3JvLndvcmtzcGFjZSA9IHRydWUKK3Byb3htb3gtZml4ZWQtc3RyaW5nLndvcmtzcGFjZSA9 IHRydWUKIHByb3htb3gtc2VyZGUgPSB7IHdvcmtzcGFjZSA9IHRydWUsIGZlYXR1cmVzID0gWyAi cGVybCIgXSB9CiBwcm94bW94LXNjaGVtYSA9IHsgd29ya3NwYWNlID0gdHJ1ZSwgZmVhdHVyZXMg PSBbICJhcGktdHlwZXMiLCAiYXBpLW1hY3JvIiBdIH0KIApkaWZmIC0tZ2l0IGEvcHZlLWFwaS10 eXBlcy9kZWJpYW4vY29udHJvbCBiL3B2ZS1hcGktdHlwZXMvZGViaWFuL2NvbnRyb2wKaW5kZXgg NWU5Y2RiYzEuLmNhNDViNWFiIDEwMDY0NAotLS0gYS9wdmUtYXBpLXR5cGVzL2RlYmlhbi9jb250 cm9sCisrKyBiL3B2ZS1hcGktdHlwZXMvZGViaWFuL2NvbnRyb2wKQEAgLTksNiArOSw3IEBAIEJ1 aWxkLURlcGVuZHMtQXJjaDogY2FyZ286bmF0aXZlIDwhbm9jaGVjaz4sCiAgbGlicnVzdC1hbnlo b3ctMStkZWZhdWx0LWRldiA8IW5vY2hlY2s+LAogIGxpYnJ1c3QtYXN5bmMtdHJhaXQtMC4xK2Rl ZmF1bHQtZGV2IDwhbm9jaGVjaz4sCiAgbGlicnVzdC1wcm94bW94LWFwaS1tYWNyby0xK2RlZmF1 bHQtZGV2ICg+PSAxLjQuMy1+fikgPCFub2NoZWNrPiwKKyBsaWJydXN0LXByb3htb3gtZml4ZWQt c3RyaW5nLTAuMStkZWZhdWx0LWRldiA8IW5vY2hlY2s+LAogIGxpYnJ1c3QtcHJveG1veC1zY2hl bWEtNSthcGktbWFjcm8tZGV2ICg+PSA1LjAuMS1+fikgPCFub2NoZWNrPiwKICBsaWJydXN0LXBy b3htb3gtc2NoZW1hLTUrYXBpLXR5cGVzLWRldiAoPj0gNS4wLjEtfn4pIDwhbm9jaGVjaz4sCiAg bGlicnVzdC1wcm94bW94LXNjaGVtYS01K2RlZmF1bHQtZGV2ICg+PSA1LjAuMS1+fikgPCFub2No ZWNrPiwKQEAgLTM1LDYgKzM2LDcgQEAgRGVwZW5kczoKICBsaWJydXN0LWFueWhvdy0xK2RlZmF1 bHQtZGV2LAogIGxpYnJ1c3QtYXN5bmMtdHJhaXQtMC4xK2RlZmF1bHQtZGV2LAogIGxpYnJ1c3Qt cHJveG1veC1hcGktbWFjcm8tMStkZWZhdWx0LWRldiAoPj0gMS40LjMtfn4pLAorIGxpYnJ1c3Qt cHJveG1veC1maXhlZC1zdHJpbmctMC4xK2RlZmF1bHQtZGV2LAogIGxpYnJ1c3QtcHJveG1veC1z Y2hlbWEtNSthcGktbWFjcm8tZGV2ICg+PSA1LjAuMS1+fiksCiAgbGlicnVzdC1wcm94bW94LXNj aGVtYS01K2FwaS10eXBlcy1kZXYgKD49IDUuMC4xLX5+KSwKICBsaWJydXN0LXByb3htb3gtc2No ZW1hLTUrZGVmYXVsdC1kZXYgKD49IDUuMC4xLX5+KSwKZGlmZiAtLWdpdCBhL3B2ZS1hcGktdHlw ZXMvc3JjL3R5cGVzL2ZpeGVkX3N0cmluZy5ycyBiL3B2ZS1hcGktdHlwZXMvc3JjL3R5cGVzL2Zp eGVkX3N0cmluZy5ycwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcwZTEzMjcuLjAw MDAwMDAwCi0tLSBhL3B2ZS1hcGktdHlwZXMvc3JjL3R5cGVzL2ZpeGVkX3N0cmluZy5ycworKysg L2Rldi9udWxsCkBAIC0xLDI3NCArMCwwIEBACi11c2Ugc3RkOjpib3Jyb3c6OkJvcnJvdzsKLXVz ZSBzdGQ6OmNtcDo6T3JkZXJpbmc7Ci11c2Ugc3RkOjplcnJvcjo6RXJyb3I7Ci11c2Ugc3RkOjpm bXQ7Ci11c2Ugc3RkOjpvcHM6OkRlcmVmOwotdXNlIHN0ZDo6c3RyOjpGcm9tU3RyOwotCi11c2Ug c2VyZGU6OntEZXNlcmlhbGl6ZSwgU2VyaWFsaXplfTsKLQotLy8vIEVycm9yIHR5cGUgdXNlZCBi eSBjb25zdHJ1Y3RvcnMgb2YgW2BGaXhlZFN0cmluZ2BdCi0jW2Rlcml2ZShDbG9uZSwgQ29weSwg RGVidWcpXQotcHViIHN0cnVjdCBUb29Mb25nRXJyb3I7Ci0KLWltcGwgRXJyb3IgZm9yIFRvb0xv bmdFcnJvciB7fQotCi1pbXBsIGZtdDo6RGlzcGxheSBmb3IgVG9vTG9uZ0Vycm9yIHsKLSAgICBm biBmbXQoJnNlbGYsIGY6ICZtdXQgZm10OjpGb3JtYXR0ZXI8J18+KSAtPiBSZXN1bHQ8KCksIGZt dDo6RXJyb3I+IHsKLSAgICAgICAgZi53cml0ZV9zdHIoInN0cmluZyBpcyBsb25nZXIgdGhhbiAy MyBjaGFyYWN0ZXJzIikKLSAgICB9Ci19Ci0KLS8vLyBBbiBpbW11dGFibGUgc3RyaW5nIHR5cGUg d2l0aCBhIG1heGltdW0gc2l6ZSBvZiAyMyBieXRlcy4KLS8vLwotLy8vIEFmdGVyIGNvbnN0cnVj dGlvbiBpdCBpcyBndWFyYW50ZWVkIHRoYXQgaXRzIGNvbnRlbnRzIGFyZToKLS8vLyAqIHZhbGlk IHV0Zi04Ci0vLy8gKiBub3QgbG9uZ2VyIHRoYW4gMjMgY2hhcmFjdGVycwotLy8vCi0vLy8gRml4 ZWRTdHJpbmcgaXMgaW1tdXRhYmxlLCB0aGVyZWZvcmUgaXQgaXMgc3VmZmljaWVudCB0byB2YWxp ZGF0ZSB0aGUgaW52YXJpYW50cyBvbmx5IGF0Ci0vLy8gY29uc3RydWN0aW9uIHRpbWUgdG8gZ3Vh cmFudGVlIHRoYXQgdGhleSB3aWxsIGFsd2F5cyBob2xkIGR1cmluZyB0aGUgbGlmZWN5Y2xlIG9m IHRoZQotLy8vIHN0cnVjdC4KLSNbZGVyaXZlKENsb25lLCBDb3B5KV0KLXB1YiBzdHJ1Y3QgRml4 ZWRTdHJpbmcgewotICAgIGJ1ZjogW3U4OyAyM10sCi0gICAgbGVuOiB1OCwKLX0KLQotaW1wbCBG aXhlZFN0cmluZyB7Ci0gICAgLy8vIENyZWF0ZXMgYSBuZXcgRml4ZWRTdHJpbmcgaW5zdGFuY2Ug ZnJvbSBhIHN0ciByZWZlcmVuY2UuCi0gICAgLy8vCi0gICAgLy8vICMgRXJyb3JzCi0gICAgLy8v IFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gYW4gZXJyb3IgaWY6Ci0gICAgLy8vICogVGhlIHBh c3NlZCBzdHJpbmcgaXMgbG9uZ2VyIHRoYW4gMjMgYnl0ZXMKLSAgICBwdWIgZm4gbmV3KHZhbHVl OiAmc3RyKSAtPiBSZXN1bHQ8U2VsZiwgVG9vTG9uZ0Vycm9yPiB7Ci0gICAgICAgIGlmIHZhbHVl LmxlbigpID4gMjMgewotICAgICAgICAgICAgcmV0dXJuIEVycihUb29Mb25nRXJyb3IpOwotICAg ICAgICB9Ci0KLSAgICAgICAgbGV0IG11dCBidWYgPSBbMDsgMjNdOwotICAgICAgICBidWZbLi52 YWx1ZS5sZW4oKV0uY29weV9mcm9tX3NsaWNlKHZhbHVlLmFzX2J5dGVzKCkpOwotCi0gICAgICAg IE9rKFNlbGYgewotICAgICAgICAgICAgYnVmLAotICAgICAgICAgICAgLy8gU0FGRVRZOiBzZWxm LmxlbiBpcyBhdCBsZWFzdCAwIGFuZCBhdCBtb3N0IDIzLCB3aGljaCBmaXRzIGludG8gdTgKLSAg ICAgICAgICAgIGxlbjogdmFsdWUubGVuKCkgYXMgdTgsCi0gICAgICAgIH0pCi0gICAgfQotCi0g ICAgLy8vIFJldHVybnMgYSBzdHIgcmVmZXJlbmNlIHRvIHRoZSBzdG9yZWQgZGF0YQotICAgICNb aW5saW5lXQotICAgIHB1YiBmbiBhc19zdHIoJnNlbGYpIC0+ICZzdHIgewotICAgICAgICAvLyBT QUZFVFk6IHNlbGYuYnVmIG11c3QgYmUgYSB2YWxpZCB1dGYtOCBzdHJpbmcgYnkgY29uc3RydWN0 aW9uCi0gICAgICAgIHVuc2FmZSB7IHN0cjo6ZnJvbV91dGY4X3VuY2hlY2tlZChzZWxmLmFzX2J5 dGVzKCkpIH0KLSAgICB9Ci0KLSAgICAvLy8gUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgc2V0 IGJ5dGVzIGluIHRoZSBzdG9yZWQgYnVmZmVyCi0gICAgI1tpbmxpbmVdCi0gICAgcHViIGZuIGFz X2J5dGVzKCZzZWxmKSAtPiAmW3U4XSB7Ci0gICAgICAgIC8vIFNBRkVUWTogc2VsZi5sZW4gPj0g MCBhbmQgc2VsZi5sZW4gPD0gMjMgYnkgY29uc3RydWN0aW9uCi0gICAgICAgIHVuc2FmZSB7IHNl bGYuYnVmLmdldF91bmNoZWNrZWQoLi5zZWxmLmxlbiBhcyB1c2l6ZSkgfQotICAgIH0KLX0KLQot bWFjcm9fcnVsZXMhIGZvcndhcmRfaW1wbF90b19ieXRlcyB7Ci0gICAgKCQoJHRyYWl0OmlkZW50 IHskZm46aWRlbnQgLT4gJG91dDp0eSB9KSspID0+IHsKLSAgICAgICAgJCgKLSAgICAgICAgICAg IGltcGwgJHRyYWl0IGZvciBGaXhlZFN0cmluZyB7Ci0gICAgICAgICAgICAgICAgI1tpbmxpbmVd Ci0gICAgICAgICAgICAgICAgZm4gJGZuKCZzZWxmLCBvdGhlcjogJlNlbGYpIC0+ICRvdXQgewot ICAgICAgICAgICAgICAgICAgICA8W3U4XSBhcyAkdHJhaXQ+OjokZm4oc2VsZi5hc19ieXRlcygp LCBvdGhlci5hc19ieXRlcygpKQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAg ICAgICAgKSsKLSAgICB9OwotfQotCi1mb3J3YXJkX2ltcGxfdG9fYnl0ZXMhIHsKLSAgICBQYXJ0 aWFsRXEgeyBlcSAtPiBib29sIH0KLSAgICBQYXJ0aWFsT3JkIHsgcGFydGlhbF9jbXAgLT4gT3B0 aW9uPE9yZGVyaW5nPiB9Ci0gICAgT3JkIHsgY21wIC0+IE9yZGVyaW5nIH0KLX0KLQotbWFjcm9f cnVsZXMhIGZvcndhcmRfaW1wbF90b19zdHJfYmlkaXIgewotICAgICgkKCR0cmFpdDppZGVudCB7 JGZuOmlkZW50IC0+ICRvdXQ6dHkgfSkrKSA9PiB7Ci0gICAgICAgICQoCi0gICAgICAgICAgICBp bXBsICR0cmFpdDxzdHI+IGZvciBGaXhlZFN0cmluZyB7Ci0gICAgICAgICAgICAgICAgI1tpbmxp bmVdCi0gICAgICAgICAgICAgICAgZm4gJGZuKCZzZWxmLCBvdGhlcjogJnN0cikgLT4gJG91dCB7 Ci0gICAgICAgICAgICAgICAgICAgIDxzdHIgYXMgJHRyYWl0Pjo6JGZuKHNlbGYuYXNfc3RyKCks IG90aGVyKQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg aW1wbCAkdHJhaXQ8Rml4ZWRTdHJpbmc+IGZvciAmc3RyIHsKLSAgICAgICAgICAgICAgICAjW2lu bGluZV0KLSAgICAgICAgICAgICAgICBmbiAkZm4oJnNlbGYsIG90aGVyOiAmRml4ZWRTdHJpbmcp IC0+ICRvdXQgewotICAgICAgICAgICAgICAgICAgICA8c3RyIGFzICR0cmFpdD46OiRmbihzZWxm LCBvdGhlci5hc19zdHIoKSkKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg ICAgICkrCi0gICAgfTsKLX0KLQotZm9yd2FyZF9pbXBsX3RvX3N0cl9iaWRpciEgewotICAgIFBh cnRpYWxFcSB7IGVxIC0+IGJvb2wgfQotICAgIFBhcnRpYWxPcmQgeyBwYXJ0aWFsX2NtcCAtPiBP cHRpb248T3JkZXJpbmc+IH0KLX0KLQotaW1wbCBFcSBmb3IgRml4ZWRTdHJpbmcge30KLQotaW1w bCBmbXQ6OkRpc3BsYXkgZm9yIEZpeGVkU3RyaW5nIHsKLSAgICBmbiBmbXQoJnNlbGYsIGY6ICZt dXQgZm10OjpGb3JtYXR0ZXI8J18+KSAtPiBSZXN1bHQ8KCksIGZtdDo6RXJyb3I+IHsKLSAgICAg ICAgZm10OjpEaXNwbGF5OjpmbXQoc2VsZi5hc19zdHIoKSwgZikKLSAgICB9Ci19Ci0KLWltcGwg Zm10OjpEZWJ1ZyBmb3IgRml4ZWRTdHJpbmcgewotICAgIGZuIGZtdCgmc2VsZiwgZjogJm11dCBm bXQ6OkZvcm1hdHRlcjwnXz4pIC0+IFJlc3VsdDwoKSwgZm10OjpFcnJvcj4gewotICAgICAgICBm bXQ6OkRpc3BsYXk6OmZtdChzZWxmLmFzX3N0cigpLCBmKQotICAgIH0KLX0KLQotaW1wbCBEZXJl ZiBmb3IgRml4ZWRTdHJpbmcgewotICAgIHR5cGUgVGFyZ2V0ID0gc3RyOwotCi0gICAgZm4gZGVy ZWYoJnNlbGYpIC0+ICZzdHIgewotICAgICAgICBzZWxmLmFzX3N0cigpCi0gICAgfQotfQotCi1p bXBsIEFzUmVmPHN0cj4gZm9yIEZpeGVkU3RyaW5nIHsKLSAgICBmbiBhc19yZWYoJnNlbGYpIC0+ ICZzdHIgewotICAgICAgICBzZWxmLmFzX3N0cigpCi0gICAgfQotfQotCi1pbXBsIEFzUmVmPFt1 OF0+IGZvciBGaXhlZFN0cmluZyB7Ci0gICAgZm4gYXNfcmVmKCZzZWxmKSAtPiAmW3U4XSB7Ci0g ICAgICAgIHNlbGYuYXNfYnl0ZXMoKQotICAgIH0KLX0KLQotaW1wbCBCb3Jyb3c8c3RyPiBmb3Ig Rml4ZWRTdHJpbmcgewotICAgIGZuIGJvcnJvdygmc2VsZikgLT4gJnN0ciB7Ci0gICAgICAgIHNl bGYuYXNfc3RyKCkKLSAgICB9Ci19Ci0KLWltcGwgVHJ5RnJvbTxTdHJpbmc+IGZvciBGaXhlZFN0 cmluZyB7Ci0gICAgdHlwZSBFcnJvciA9IFRvb0xvbmdFcnJvcjsKLQotICAgIGZuIHRyeV9mcm9t KHZhbHVlOiBTdHJpbmcpIC0+IFJlc3VsdDxTZWxmLCBTZWxmOjpFcnJvcj4gewotICAgICAgICBG aXhlZFN0cmluZzo6bmV3KHZhbHVlLmFzX3N0cigpKQotICAgIH0KLX0KLQotaW1wbCBGcm9tU3Ry IGZvciBGaXhlZFN0cmluZyB7Ci0gICAgdHlwZSBFcnIgPSBUb29Mb25nRXJyb3I7Ci0KLSAgICBm biBmcm9tX3N0cih2YWx1ZTogJnN0cikgLT4gUmVzdWx0PFNlbGYsIFNlbGY6OkVycj4gewotICAg ICAgICBGaXhlZFN0cmluZzo6bmV3KHZhbHVlKQotICAgIH0KLX0KLQotaW1wbCBUcnlGcm9tPCZz dHI+IGZvciBGaXhlZFN0cmluZyB7Ci0gICAgdHlwZSBFcnJvciA9IFRvb0xvbmdFcnJvcjsKLQot ICAgIGZuIHRyeV9mcm9tKHZhbHVlOiAmc3RyKSAtPiBSZXN1bHQ8U2VsZiwgU2VsZjo6RXJyb3I+ IHsKLSAgICAgICAgRml4ZWRTdHJpbmc6Om5ldyh2YWx1ZSkKLSAgICB9Ci19Ci0KLWltcGwgU2Vy aWFsaXplIGZvciBGaXhlZFN0cmluZyB7Ci0gICAgZm4gc2VyaWFsaXplPFM+KCZzZWxmLCBzZXJp YWxpemVyOiBTKSAtPiBSZXN1bHQ8Uzo6T2ssIFM6OkVycm9yPgotICAgIHdoZXJlCi0gICAgICAg IFM6IHNlcmRlOjpTZXJpYWxpemVyLAotICAgIHsKLSAgICAgICAgc2VyaWFsaXplci5zZXJpYWxp emVfc3RyKHNlbGYuYXNfc3RyKCkpCi0gICAgfQotfQotCi1pbXBsPCdkZT4gRGVzZXJpYWxpemU8 J2RlPiBmb3IgRml4ZWRTdHJpbmcgewotICAgIGZuIGRlc2VyaWFsaXplPEQ+KGRlc2VyaWFsaXpl cjogRCkgLT4gUmVzdWx0PFNlbGYsIEQ6OkVycm9yPgotICAgIHdoZXJlCi0gICAgICAgIEQ6IHNl cmRlOjpEZXNlcmlhbGl6ZXI8J2RlPiwKLSAgICB7Ci0gICAgICAgIHN0cnVjdCBGaXhlZFN0cmlu Z1Zpc2l0b3I7Ci0KLSAgICAgICAgaW1wbDwnZGU+IHNlcmRlOjpkZTo6VmlzaXRvcjwnZGU+IGZv ciBGaXhlZFN0cmluZ1Zpc2l0b3IgewotICAgICAgICAgICAgdHlwZSBWYWx1ZSA9IEZpeGVkU3Ry aW5nOwotCi0gICAgICAgICAgICBmbiBleHBlY3RpbmcoJnNlbGYsIGY6ICZtdXQgZm10OjpGb3Jt YXR0ZXIpIC0+IHN0ZDo6Zm10OjpSZXN1bHQgewotICAgICAgICAgICAgICAgIGYud3JpdGVfc3Ry KCJhIHN0cmluZyB0aGF0IGlzIGF0IG1vc3QgMjMgYnl0ZXMgbG9uZyIpCi0gICAgICAgICAgICB9 Ci0KLSAgICAgICAgICAgIGZuIHZpc2l0X3N0cjxFPihzZWxmLCB2OiAmc3RyKSAtPiBSZXN1bHQ8 U2VsZjo6VmFsdWUsIEU+Ci0gICAgICAgICAgICB3aGVyZQotICAgICAgICAgICAgICAgIEU6IHNl cmRlOjpkZTo6RXJyb3IsCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdi50cnlfaW50 bygpLm1hcF9lcnIoRTo6Y3VzdG9tKQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAg ICAgZGVzZXJpYWxpemVyLmRlc2VyaWFsaXplX3N0cihGaXhlZFN0cmluZ1Zpc2l0b3IpCi0gICAg fQotfQotCi0jW2NmZyh0ZXN0KV0KLW1vZCB0ZXN0cyB7Ci0gICAgdXNlIHN1cGVyOjoqOwotCi0g ICAgdXNlIHNlcmRlX3BsYWluOwotCi0gICAgI1t0ZXN0XQotICAgIGZuIHRlc3RfY29uc3RydWN0 KCkgewotICAgICAgICBsZXQgZml4ZWRfc3RyaW5nID0gRml4ZWRTdHJpbmc6Om5ldygiIikuZXhw ZWN0KCJlbXB0eSBzdHJpbmcgaXMgdmFsaWQiKTsKLSAgICAgICAgYXNzZXJ0X2VxISgiIiwgZml4 ZWRfc3RyaW5nKTsKLQotICAgICAgICBsZXQgZml4ZWRfc3RyaW5nID0gRml4ZWRTdHJpbmc6Om5l dygiYSIpLmV4cGVjdCgidmFsaWQgc3RyaW5nIik7Ci0gICAgICAgIGFzc2VydF9lcSEoImEiLCBm aXhlZF9zdHJpbmcpOwotCi0gICAgICAgIGxldCBmaXhlZF9zdHJpbmcgPSBGaXhlZFN0cmluZzo6 bmV3KCLwn4yP8J+Mj/CfjI/wn4yP8J+MjyIpLmV4cGVjdCgidmFsaWQgc3RyaW5nIik7Ci0gICAg ICAgIGFzc2VydF9lcSEoIvCfjI/wn4yP8J+Mj/CfjI/wn4yPIiwgZml4ZWRfc3RyaW5nKTsKLQot ICAgICAgICBsZXQgZml4ZWRfc3RyaW5nID0KLSAgICAgICAgICAgIEZpeGVkU3RyaW5nOjpuZXco ImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIikuZXhwZWN0KCIyMyBjaGFyYWN0ZXJzIGFyZSBhbGxv d2VkIik7Ci0gICAgICAgIGFzc2VydF9lcSEoImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIiwgZml4 ZWRfc3RyaW5nKTsKLQotICAgICAgICBGaXhlZFN0cmluZzo6bmV3KCLwn4yP8J+Mj/CfjI/wn4yP 8J+Mj/CfjI8iKS5leHBlY3RfZXJyKCJzdHJpbmcgdG9vIGxvbmciKTsKLSAgICAgICAgRml4ZWRT dHJpbmc6Om5ldygiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIikuZXhwZWN0X2Vycigic3RyaW5n IHRvbyBsb25nIik7Ci0gICAgfQotCi0gICAgI1t0ZXN0XQotICAgIGZuIHRlc3Rfc2VyaWFsaXpl X2Rlc2VyaWFsaXplKCkgewotICAgICAgICBsZXQgdmFsaWRfc3RyaW5nID0gImFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhIjsKLQotICAgICAgICBsZXQgZml4ZWRfc3RyaW5nOiBGaXhlZFN0cmluZyA9 Ci0gICAgICAgICAgICBzZXJkZV9wbGFpbjo6ZnJvbV9zdHIoImFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhIikuZXhwZWN0KCJkZXNlcmlhbGl6YXRpb24gd29ya3MiKTsKLSAgICAgICAgYXNzZXJ0X2Vx ISh2YWxpZF9zdHJpbmcsIGZpeGVkX3N0cmluZyk7Ci0KLSAgICAgICAgbGV0IHNlcmlhbGl6ZWRf c3RyaW5nID0KLSAgICAgICAgICAgIHNlcmRlX3BsYWluOjp0b19zdHJpbmcoJmZpeGVkX3N0cmlu ZykuZXhwZWN0KCJjYW4gYmUgc2VyaWFsaXplZCBpbnRvIGEgc3RyaW5nIik7Ci0gICAgICAgIGFz c2VydF9lcSEodmFsaWRfc3RyaW5nLCBzZXJpYWxpemVkX3N0cmluZyk7Ci0KLSAgICAgICAgc2Vy ZGVfcGxhaW46OmZyb21fc3RyOjo8Rml4ZWRTdHJpbmc+KCJhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWEiKQotICAgICAgICAgICAgLmV4cGVjdF9lcnIoImNhbm5vdCBkZXNlcmlhbGl6ZSBzdHJpbmcg dGhhdCBpcyB0b28gbG9uZyIpOwotICAgIH0KLQotICAgICNbdGVzdF0KLSAgICBmbiB0ZXN0X29y ZCgpIHsKLSAgICAgICAgbGV0IGZpeGVkX3N0cmluZyA9IEZpeGVkU3RyaW5nOjpuZXcoImFiYyIp LmV4cGVjdCgidmFsaWQgc3RyaW5nIik7Ci0KLSAgICAgICAgYXNzZXJ0IShmaXhlZF9zdHJpbmcg PT0gZml4ZWRfc3RyaW5nKTsKLSAgICAgICAgYXNzZXJ0IShmaXhlZF9zdHJpbmcgPj0gZml4ZWRf c3RyaW5nKTsKLSAgICAgICAgYXNzZXJ0IShmaXhlZF9zdHJpbmcgPD0gZml4ZWRfc3RyaW5nKTsK LQotICAgICAgICBhc3NlcnQhKCJhYiIgPCBmaXhlZF9zdHJpbmcpOwotICAgICAgICBhc3NlcnQh KCJhYmMiID09IGZpeGVkX3N0cmluZyk7Ci0gICAgICAgIGFzc2VydCEoImFiY2QiID4gZml4ZWRf c3RyaW5nKTsKLQotICAgICAgICBsZXQgbGFyZ2VyX2ZpeGVkX3N0cmluZyA9IEZpeGVkU3RyaW5n OjpuZXcoImFiY2RlIikuZXhwZWN0KCJ2YWxpZCBzdHJpbmciKTsKLQotICAgICAgICBhc3NlcnQh KGxhcmdlcl9maXhlZF9zdHJpbmcgPiBmaXhlZF9zdHJpbmcpOwotICAgICAgICBhc3NlcnQhKGZp eGVkX3N0cmluZyA8IGxhcmdlcl9maXhlZF9zdHJpbmcpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBh L3B2ZS1hcGktdHlwZXMvc3JjL3R5cGVzL21vZC5ycyBiL3B2ZS1hcGktdHlwZXMvc3JjL3R5cGVz L21vZC5ycwppbmRleCA2MzIwOWQ4NC4uZTVlZWQ4MTcgMTAwNjQ0Ci0tLSBhL3B2ZS1hcGktdHlw ZXMvc3JjL3R5cGVzL21vZC5ycworKysgYi9wdmUtYXBpLXR5cGVzL3NyYy90eXBlcy9tb2QucnMK QEAgLTE3LDggKzE3LDcgQEAgcHViIG1vZCBhcnJheTsKIHB1YiBtb2Qgc3RyaW5nbGlzdDsKIHB1 YiBtb2QgdmVyaWZpZXJzOwogCi1tb2QgZml4ZWRfc3RyaW5nOwotcHViIHVzZSBmaXhlZF9zdHJp bmc6OntGaXhlZFN0cmluZywgVG9vTG9uZ0Vycm9yfTsKK3VzZSBwcm94bW94X2ZpeGVkX3N0cmlu Zzo6Rml4ZWRTdHJpbmc7CiAKIGluY2x1ZGUhKCIuLi9nZW5lcmF0ZWQvdHlwZXMucnMiKTsKIAot LSAKMi40Ny4zCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KcGJzLWRldmVsIG1haWxpbmcgbGlzdApwYnMtZGV2ZWxAbGlzdHMucHJveG1veC5jb20KaHR0 cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcGJzLWRldmVs Cg==