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 637781FF17E for ; Thu, 11 Dec 2025 14:07:07 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 6AD0415AFE; Thu, 11 Dec 2025 14:07:48 +0100 (CET) From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?= To: pdm-devel@lists.proxmox.com Date: Thu, 11 Dec 2025 14:07:05 +0100 Message-ID: <20251211130710.2071983-4-f.gruenbichler@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251211130710.2071983-1-f.gruenbichler@proxmox.com> References: <20251211130710.2071983-1-f.gruenbichler@proxmox.com> MIME-Version: 1.0 X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1765458432876 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.047 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: [pdm-devel] [PATCH datacenter-manager 3/3] api: remote shell: make websocket proxy a worker task X-BeenThere: pdm-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Datacenter Manager development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Datacenter Manager development discussion Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pdm-devel-bounces@lists.proxmox.com Sender: "pdm-devel" c28gdGhhdCBlcnJvcnMgYW5kIHdhcm5pbmdzIGFyZSB2aXNpYmxlIHRvIHRoZSB1c2VyLCBhdCBs ZWFzdCBpbiB0aGUgdGFzawpsaXN0Li4gdGhlIHJlcXVlc3QgaGVyZSBpcyBtYWRlIGJ5IHh0ZXJt LmpzIGFzIHBhcnQgb2YgdXBncmFkaW5nIHRoZSBjb25uZWN0aW9uCnRvIGEgd2Vic29ja2V0LCBz byByZXR1cm5pbmcgdGhlIFVQSUQgaW4gYSBtZWFuaW5nZnVsIGZhc2hpb24gaXMgaGFyZC4uCgpT aWduZWQtb2ZmLWJ5OiBGYWJpYW4gR3LDvG5iaWNobGVyIDxmLmdydWVuYmljaGxlckBwcm94bW94 LmNvbT4KLS0tCgpOb3RlczoKICAgIGJlc3Qgdmlld2VkIHdpdGggYC13YCwgdGhlIGFjdHVhbCBj aGFuZ2UgaXMgcXVpdGUgc21hbGwuLgoKIHNlcnZlci9zcmMvYXBpL3JlbW90ZV9zaGVsbC5ycyB8 IDIwMiArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KIHVpL3NyYy90YXNrcy5ycyAg ICAgICAgICAgICAgICB8ICAgMSArCiAyIGZpbGVzIGNoYW5nZWQsIDEwMyBpbnNlcnRpb25zKCsp LCAxMDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc2VydmVyL3NyYy9hcGkvcmVtb3RlX3No ZWxsLnJzIGIvc2VydmVyL3NyYy9hcGkvcmVtb3RlX3NoZWxsLnJzCmluZGV4IDUyMDcwOTUuLmYx ZTFjYWIgMTAwNjQ0Ci0tLSBhL3NlcnZlci9zcmMvYXBpL3JlbW90ZV9zaGVsbC5ycworKysgYi9z ZXJ2ZXIvc3JjL2FwaS9yZW1vdGVfc2hlbGwucnMKQEAgLTE1OCwxMjIgKzE1OCwxMjQgQEAgZm4g dXBncmFkZV90b193ZWJzb2NrZXQoCiAKICAgICAgICAgbGV0IChtdXQgd3MsIHJlc3BvbnNlKSA9 IFdlYlNvY2tldDo6bmV3KHBhcnRzLmhlYWRlcnMuY2xvbmUoKSk/OwogCi0gICAgICAgIHByb3ht b3hfcmVzdF9zZXJ2ZXI6OnNwYXduX2ludGVybmFsX3Rhc2soYXN5bmMgbW92ZSB7Ci0gICAgICAg ICAgICBsZXQgaW5jb21pbmdfd3M6IFVwZ3JhZGVkID0KLSAgICAgICAgICAgICAgICBtYXRjaCBo eXBlcjo6dXBncmFkZTo6b24oUmVxdWVzdDo6ZnJvbV9wYXJ0cyhwYXJ0cywgcmVxX2JvZHkpKS5h d2FpdCB7Ci0gICAgICAgICAgICAgICAgICAgIE9rKHVwZ3JhZGVkKSA9PiB1cGdyYWRlZCwKLSAg ICAgICAgICAgICAgICAgICAgRXJyKGVycikgPT4gYmFpbCEoImZhaWxlZCB0byBwcm9jZXNzIGlu Y29taW5nIFdlYnNvY2tldCB1cGdyYWRlOiB7ZXJyfSIpLAorICAgICAgICAvLyBDYW4ndCByZXR1 cm4gVVBJRCBiZWNhdXNlIHRoZSByZXNwb25zZSBpcyB0aGUgV2Vic29ja2V0IHVwZ3JhZGUuLgor ICAgICAgICBsZXQgX3VwaWQgPSBwcm94bW94X3Jlc3Rfc2VydmVyOjpXb3JrZXJUYXNrOjpzcGF3 bigKKyAgICAgICAgICAgICJyZW1vdGVfc2hlbGwiLAorICAgICAgICAgICAgTm9uZSwKKyAgICAg ICAgICAgIGF1dGhfaWQudG9fc3RyaW5nKCksCisgICAgICAgICAgICB0cnVlLAorICAgICAgICAg ICAgYXN5bmMgbW92ZSB8X3dvcmtlcnwgeworICAgICAgICAgICAgICAgIGxldCBpbmNvbWluZ193 czogVXBncmFkZWQgPQorICAgICAgICAgICAgICAgICAgICBtYXRjaCBoeXBlcjo6dXBncmFkZTo6 b24oUmVxdWVzdDo6ZnJvbV9wYXJ0cyhwYXJ0cywgcmVxX2JvZHkpKS5hd2FpdCB7CisgICAgICAg ICAgICAgICAgICAgICAgICBPayh1cGdyYWRlZCkgPT4gdXBncmFkZWQsCisgICAgICAgICAgICAg ICAgICAgICAgICBFcnIoZXJyKSA9PiBiYWlsISgiZmFpbGVkIHRvIHByb2Nlc3MgaW5jb21pbmcg V2Vic29ja2V0IHVwZ3JhZGU6IHtlcnJ9IiksCisgICAgICAgICAgICAgICAgICAgIH07CisKKyAg ICAgICAgICAgICAgICBsZXQgKHJlbW90ZXMsIF9kaWdlc3QpID0gcGRtX2NvbmZpZzo6cmVtb3Rl czo6Y29uZmlnKCk/OworICAgICAgICAgICAgICAgIGxldCByZW1vdGUgPSBnZXRfcmVtb3RlKCZy ZW1vdGVzLCAmcmVtb3RlKT87CisgICAgICAgICAgICAgICAgbGV0ICh0aWNrZXQsIHBvcnQsIGVu ZHBvaW50LCBmaXJzdF9hcGlfdXJsKSA9IG1hdGNoIHJlbW90ZS50eSB7CisgICAgICAgICAgICAg ICAgICAgIFJlbW90ZVR5cGU6OlB2ZSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICBsZXQg Y2FjaGUgPSBjcmF0ZTo6cmVtb3RlX2NhY2hlOjpSZW1vdGVNYXBwaW5nQ2FjaGU6OmdldCgpOwor ICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVuZHBvaW50ID0gbWF0Y2ggY2FjaGUuaW5mb19i eV9ub2RlX25hbWUoJnJlbW90ZS5pZCwgJm5vZGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBTb21lKGluZm8pIGlmIGluZm8ucmVhY2hhYmxlID0+IFNvbWUoaW5mby5ob3N0bmFtZS5j bG9uZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfID0+IE5vbmUsCisgICAgICAg ICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJhd19jbGll bnQgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyYXRlOjpjb25uZWN0aW9uOjptYWtl X3Jhd19jbGllbnQocmVtb3RlLCBlbmRwb2ludC5hc19kZXJlZigpKT87CisgICAgICAgICAgICAg ICAgICAgICAgICBsZXQgYXBpX3VybCA9IHJhd19jbGllbnQuYXBpX3VybCgpLmNsb25lKCk7Cisg ICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHZlID0gUHZlQ2xpZW50SW1wbCgqcmF3X2NsaWVu dCk7CisgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHZlX3Rlcm1fdGlja2V0ID0gcHZlCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLm5vZGVfc2hlbGxfdGVybXByb3h5KAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmbm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcHZlX2FwaV90eXBlczo6Tm9kZVNoZWxsVGVybXByb3h5IHsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNtZDogTm9uZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNtZF9vcHRzOiBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAuYXdhaXQ/OworICAgICAgICAgICAgICAgICAgICAgICAgKAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHB2ZV90ZXJtX3RpY2tldC50aWNrZXQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcHZlX3Rlcm1fdGlja2V0LnBvcnQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZW5kcG9pbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShh cGlfdXJsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgICAgICBSZW1vdGVUeXBlOjpQYnMgPT4geworICAgICAgICAgICAg ICAgICAgICAgICAgbGV0IHBicyA9IGNyYXRlOjpjb25uZWN0aW9uOjptYWtlX3Bic19jbGllbnQo JnJlbW90ZSk/OworICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBic190ZXJtX3RpY2tldCA9 IHBicy5ub2RlX3NoZWxsX3Rlcm1wcm94eSgpLmF3YWl0PzsKKyAgICAgICAgICAgICAgICAgICAg ICAgICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYnNfdGVybV90aWNrZXQudGlja2V0 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBic190ZXJtX3RpY2tldC5wb3J0IGFzIGk2 NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICBsZXQgKHJlbW90ZXMs IF9kaWdlc3QpID0gcGRtX2NvbmZpZzo6cmVtb3Rlczo6Y29uZmlnKCk/OwotICAgICAgICAgICAg bGV0IHJlbW90ZSA9IGdldF9yZW1vdGUoJnJlbW90ZXMsICZyZW1vdGUpPzsKLSAgICAgICAgICAg IGxldCAodGlja2V0LCBwb3J0LCBlbmRwb2ludCwgZmlyc3RfYXBpX3VybCkgPSBtYXRjaCByZW1v dGUudHkgewotICAgICAgICAgICAgICAgIFJlbW90ZVR5cGU6OlB2ZSA9PiB7Ci0gICAgICAgICAg ICAgICAgICAgIGxldCBjYWNoZSA9IGNyYXRlOjpyZW1vdGVfY2FjaGU6OlJlbW90ZU1hcHBpbmdD YWNoZTo6Z2V0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGxldCBlbmRwb2ludCA9IG1hdGNoIGNh Y2hlLmluZm9fYnlfbm9kZV9uYW1lKCZyZW1vdGUuaWQsICZub2RlKSB7Ci0gICAgICAgICAgICAg ICAgICAgICAgICBTb21lKGluZm8pIGlmIGluZm8ucmVhY2hhYmxlID0+IFNvbWUoaW5mby5ob3N0 bmFtZS5jbG9uZSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIF8gPT4gTm9uZSwKLSAgICAg ICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICAgICAgbGV0IHJhd19jbGllbnQgPQot ICAgICAgICAgICAgICAgICAgICAgICAgY3JhdGU6OmNvbm5lY3Rpb246Om1ha2VfcmF3X2NsaWVu dChyZW1vdGUsIGVuZHBvaW50LmFzX2RlcmVmKCkpPzsKLSAgICAgICAgICAgICAgICAgICAgbGV0 IGFwaV91cmwgPSByYXdfY2xpZW50LmFwaV91cmwoKS5jbG9uZSgpOwotICAgICAgICAgICAgICAg ICAgICBsZXQgcHZlID0gUHZlQ2xpZW50SW1wbCgqcmF3X2NsaWVudCk7Ci0gICAgICAgICAgICAg ICAgICAgIGxldCBwdmVfdGVybV90aWNrZXQgPSBwdmUKLSAgICAgICAgICAgICAgICAgICAgICAg IC5ub2RlX3NoZWxsX3Rlcm1wcm94eSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbm9k ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdmVfYXBpX3R5cGVzOjpOb2RlU2hlbGxU ZXJtcHJveHkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWQ6IE5vbmUsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZF9vcHRzOiBOb25lLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAg ICAgICAgICAgICAgICAgICAuYXdhaXQ/OwotICAgICAgICAgICAgICAgICAgICAoCi0gICAgICAg ICAgICAgICAgICAgICAgICBwdmVfdGVybV90aWNrZXQudGlja2V0LAotICAgICAgICAgICAgICAg ICAgICAgICAgcHZlX3Rlcm1fdGlja2V0LnBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBl bmRwb2ludCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUoYXBpX3VybCksCi0gICAgICAg ICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBsZXQgcmF3X2NsaWVudCA9IGNyYXRlOjpj b25uZWN0aW9uOjptYWtlX3Jhd19jbGllbnQocmVtb3RlLCBlbmRwb2ludC5hc19kZXJlZigpKT87 CisgICAgICAgICAgICAgICAgbGV0IHdzX2tleSA9IHByb3htb3hfc3lzOjpsaW51eDo6cmFuZG9t X2RhdGEoMTYpPzsKKyAgICAgICAgICAgICAgICBsZXQgd3Nfa2V5ID0gcHJveG1veF9iYXNlNjQ6 OmVuY29kZSgmd3Nfa2V5KTsKKworICAgICAgICAgICAgICAgIC8vIGVuc3VyZSByZXF1ZXN0IGFi b3ZlIGFuZCBiZWxvdyBlbmQgdXAgYXQgdGhlIHNhbWUgbm9kZQorICAgICAgICAgICAgICAgIGxl dCBhcGlfdXJsID0gcmF3X2NsaWVudC5hcGlfdXJsKCkuY2xvbmUoKTsKKyAgICAgICAgICAgICAg ICBpZiBmaXJzdF9hcGlfdXJsLmlzX3NvbWUoKSAmJiBmaXJzdF9hcGlfdXJsLmFzX3JlZigpICE9 IFNvbWUoJmFwaV91cmwpIHsKKyAgICAgICAgICAgICAgICAgICAgYmFpbCEoInRlcm1wcm94eSBh bmQgdm5jd2Vic29ja2V0IEFQSSBjYWxscyBtdXN0IGJlIG1hZGUgdG8gdGhlIHNhbWUgbm9kZS4u Iik7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFJlbW90ZVR5cGU6OlBicyA9 PiB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCBwYnMgPSBjcmF0ZTo6Y29ubmVjdGlvbjo6bWFr ZV9wYnNfY2xpZW50KCZyZW1vdGUpPzsKLSAgICAgICAgICAgICAgICAgICAgbGV0IHBic190ZXJt X3RpY2tldCA9IHBicy5ub2RlX3NoZWxsX3Rlcm1wcm94eSgpLmF3YWl0PzsKLSAgICAgICAgICAg ICAgICAgICAgKAotICAgICAgICAgICAgICAgICAgICAgICAgcGJzX3Rlcm1fdGlja2V0LnRpY2tl dCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHBic190ZXJtX3RpY2tldC5wb3J0IGFzIGk2NCwK LSAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICBO b25lLAotICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgbGV0IGFwaV91cmwg PSBhcGlfdXJsLmludG9fcGFydHMoKTsKKworICAgICAgICAgICAgICAgIGxldCBtdXQgYnVpbGRl ciA9IGh0dHA6OnVyaTo6QnVpbGRlcjo6bmV3KCk7CisgICAgICAgICAgICAgICAgaWYgbGV0IFNv bWUoc2NoZW1lKSA9IGFwaV91cmwuc2NoZW1lIHsKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRl ciA9IGJ1aWxkZXIuc2NoZW1lKHNjaGVtZSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAg ICAgfTsKKyAgICAgICAgICAgICAgICBpZiBsZXQgU29tZShhdXRob3JpdHkpID0gYXBpX3VybC5h dXRob3JpdHkgeworICAgICAgICAgICAgICAgICAgICBidWlsZGVyID0gYnVpbGRlci5hdXRob3Jp dHkoYXV0aG9yaXR5KQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBsZXQgYXBp X3BhdGggPSBBcGlQYXRoQnVpbGRlcjo6bmV3KGZvcm1hdCEoIi9hcGkyL2pzb24vbm9kZXMve25v ZGV9L3ZuY3dlYnNvY2tldCIpKQorICAgICAgICAgICAgICAgICAgICAuYXJnKCJ2bmN0aWNrZXQi LCB0aWNrZXQuY2xvbmUoKSkKKyAgICAgICAgICAgICAgICAgICAgLmFyZygicG9ydCIsIHBvcnQp CisgICAgICAgICAgICAgICAgICAgIC5idWlsZCgpOworICAgICAgICAgICAgICAgIGxldCB1cmkg PSBidWlsZGVyCisgICAgICAgICAgICAgICAgICAgIC5wYXRoX2FuZF9xdWVyeShhcGlfcGF0aCkK KyAgICAgICAgICAgICAgICAgICAgLmJ1aWxkKCkKKyAgICAgICAgICAgICAgICAgICAgLm1hcF9l cnIofGVycnwgZm9ybWF0X2VyciEoImZhaWxlZCB0byBidWlsZCBVcmkgLSB7ZXJyfSIpKT87CiAK LSAgICAgICAgICAgIGxldCByYXdfY2xpZW50ID0gY3JhdGU6OmNvbm5lY3Rpb246Om1ha2VfcmF3 X2NsaWVudChyZW1vdGUsIGVuZHBvaW50LmFzX2RlcmVmKCkpPzsKLSAgICAgICAgICAgIGxldCB3 c19rZXkgPSBwcm94bW94X3N5czo6bGludXg6OnJhbmRvbV9kYXRhKDE2KT87Ci0gICAgICAgICAg ICBsZXQgd3Nfa2V5ID0gcHJveG1veF9iYXNlNjQ6OmVuY29kZSgmd3Nfa2V5KTsKKyAgICAgICAg ICAgICAgICBsZXQgYXV0aCA9IHJhd19jbGllbnQubG9naW5fYXV0aCgpPzsKKyAgICAgICAgICAg ICAgICBsZXQgcmVxID0gUmVxdWVzdDo6YnVpbGRlcigpCisgICAgICAgICAgICAgICAgICAgIC5t ZXRob2QoTWV0aG9kOjpHRVQpCisgICAgICAgICAgICAgICAgICAgIC51cmkodXJpKQorICAgICAg ICAgICAgICAgICAgICAuaGVhZGVyKFVQR1JBREUsICJ3ZWJzb2NrZXQiKQorICAgICAgICAgICAg ICAgICAgICAuaGVhZGVyKFNFQ19XRUJTT0NLRVRfVkVSU0lPTiwgIjEzIikKKyAgICAgICAgICAg ICAgICAgICAgLmhlYWRlcihTRUNfV0VCU09DS0VUX0tFWSwgd3Nfa2V5KTsKIAotICAgICAgICAg ICAgLy8gZW5zdXJlIHJlcXVlc3QgYWJvdmUgYW5kIGJlbG93IGVuZCB1cCBhdCB0aGUgc2FtZSBu b2RlCi0gICAgICAgICAgICBsZXQgYXBpX3VybCA9IHJhd19jbGllbnQuYXBpX3VybCgpLmNsb25l KCk7Ci0gICAgICAgICAgICBpZiBmaXJzdF9hcGlfdXJsLmlzX3NvbWUoKSAmJiBmaXJzdF9hcGlf dXJsLmFzX3JlZigpICE9IFNvbWUoJmFwaV91cmwpIHsKLSAgICAgICAgICAgICAgICBiYWlsISgi dGVybXByb3h5IGFuZCB2bmN3ZWJzb2NrZXQgQVBJIGNhbGxzIG11c3QgYmUgbWFkZSB0byB0aGUg c2FtZSBub2RlLi4iKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGxldCBhcGlfdXJsID0g YXBpX3VybC5pbnRvX3BhcnRzKCk7CisgICAgICAgICAgICAgICAgbGV0IHJlcSA9IGF1dGguc2V0 X2F1dGhfaGVhZGVycyhyZXEpLmJvZHkoQm9keTo6ZW1wdHkoKSk/OwogCi0gICAgICAgICAgICBs ZXQgbXV0IGJ1aWxkZXIgPSBodHRwOjp1cmk6OkJ1aWxkZXI6Om5ldygpOwotICAgICAgICAgICAg aWYgbGV0IFNvbWUoc2NoZW1lKSA9IGFwaV91cmwuc2NoZW1lIHsKLSAgICAgICAgICAgICAgICBi dWlsZGVyID0gYnVpbGRlci5zY2hlbWUoc2NoZW1lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg ICAgIGlmIGxldCBTb21lKGF1dGhvcml0eSkgPSBhcGlfdXJsLmF1dGhvcml0eSB7Ci0gICAgICAg ICAgICAgICAgYnVpbGRlciA9IGJ1aWxkZXIuYXV0aG9yaXR5KGF1dGhvcml0eSkKLSAgICAgICAg ICAgIH0KLSAgICAgICAgICAgIGxldCBhcGlfcGF0aCA9IEFwaVBhdGhCdWlsZGVyOjpuZXcoZm9y bWF0ISgiL2FwaTIvanNvbi9ub2Rlcy97bm9kZX0vdm5jd2Vic29ja2V0IikpCi0gICAgICAgICAg ICAgICAgLmFyZygidm5jdGlja2V0IiwgdGlja2V0LmNsb25lKCkpCi0gICAgICAgICAgICAgICAg LmFyZygicG9ydCIsIHBvcnQpCi0gICAgICAgICAgICAgICAgLmJ1aWxkKCk7Ci0gICAgICAgICAg ICBsZXQgdXJpID0gYnVpbGRlcgotICAgICAgICAgICAgICAgIC5wYXRoX2FuZF9xdWVyeShhcGlf cGF0aCkKLSAgICAgICAgICAgICAgICAuYnVpbGQoKQotICAgICAgICAgICAgICAgIC5tYXBfZXJy KHxlcnJ8IGZvcm1hdF9lcnIhKCJmYWlsZWQgdG8gYnVpbGQgVXJpIC0ge2Vycn0iKSk/OworICAg ICAgICAgICAgICAgIGxldCByZXMgPSByYXdfY2xpZW50Lmh0dHBfY2xpZW50KCkucmVxdWVzdChy ZXEpLmF3YWl0PzsKKyAgICAgICAgICAgICAgICBpZiByZXMuc3RhdHVzKCkgIT0gU3RhdHVzQ29k ZTo6U1dJVENISU5HX1BST1RPQ09MUyB7CisgICAgICAgICAgICAgICAgICAgIGJhaWwhKCJzZXJ2 ZXIgZGlkbid0IHVwZ3JhZGU6IHt9IiwgcmVzLnN0YXR1cygpKTsKKyAgICAgICAgICAgICAgICB9 CiAKLSAgICAgICAgICAgIGxldCBhdXRoID0gcmF3X2NsaWVudC5sb2dpbl9hdXRoKCk/OwotICAg ICAgICAgICAgbGV0IHJlcSA9IFJlcXVlc3Q6OmJ1aWxkZXIoKQotICAgICAgICAgICAgICAgIC5t ZXRob2QoTWV0aG9kOjpHRVQpCi0gICAgICAgICAgICAgICAgLnVyaSh1cmkpCi0gICAgICAgICAg ICAgICAgLmhlYWRlcihVUEdSQURFLCAid2Vic29ja2V0IikKLSAgICAgICAgICAgICAgICAuaGVh ZGVyKFNFQ19XRUJTT0NLRVRfVkVSU0lPTiwgIjEzIikKLSAgICAgICAgICAgICAgICAuaGVhZGVy KFNFQ19XRUJTT0NLRVRfS0VZLCB3c19rZXkpOworICAgICAgICAgICAgICAgIGxldCBwdmVfd3Mg PSBoeXBlcjo6dXBncmFkZTo6b24ocmVzKQorICAgICAgICAgICAgICAgICAgICAuYXdhaXQKKyAg ICAgICAgICAgICAgICAgICAgLm1hcF9lcnIofGVycnwgZm9ybWF0X2VyciEoImZhaWxlZCB0byB1 cGdyYWRlIC0ge30iLCBlcnIpKT87CiAKLSAgICAgICAgICAgIGxldCByZXEgPSBhdXRoLnNldF9h dXRoX2hlYWRlcnMocmVxKS5ib2R5KEJvZHk6OmVtcHR5KCkpPzsKKyAgICAgICAgICAgICAgICBs ZXQgdXNlcm5hbWUgPSBpZiBsZXQgcHJveG1veF9jbGllbnQ6OkF1dGhlbnRpY2F0aW9uS2luZDo6 VG9rZW4ocmVmIHRva2VuKSA9ICphdXRoIHsKKyAgICAgICAgICAgICAgICAgICAgdG9rZW4udXNl cmlkLmNsb25lKCkKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg ICBiYWlsISgic2hlbGwgbm90IHN1cHBvcnRlZCB3aXRoIHRpY2tldC1iYXNlZCBhdXRoZW50aWNh dGlvbiIpCisgICAgICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgbGV0IHJlcyA9IHJhd19j bGllbnQuaHR0cF9jbGllbnQoKS5yZXF1ZXN0KHJlcSkuYXdhaXQ/OwotICAgICAgICAgICAgaWYg cmVzLnN0YXR1cygpICE9IFN0YXR1c0NvZGU6OlNXSVRDSElOR19QUk9UT0NPTFMgewotICAgICAg ICAgICAgICAgIGJhaWwhKCJzZXJ2ZXIgZGlkbid0IHVwZ3JhZGU6IHt9IiwgcmVzLnN0YXR1cygp KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBsZXQgcHJlYW1ibGUgPSBmb3JtYXQh KCJ7dXNlcm5hbWV9Ont0aWNrZXR9XG4iLCB0aWNrZXQgPSB0aWNrZXQpOworICAgICAgICAgICAg ICAgIHdzLm1hc2sgPSBTb21lKFswLCAwLCAwLCAwXSk7CiAKLSAgICAgICAgICAgIGxldCBwdmVf d3MgPSBoeXBlcjo6dXBncmFkZTo6b24ocmVzKQotICAgICAgICAgICAgICAgIC5hd2FpdAotICAg ICAgICAgICAgICAgIC5tYXBfZXJyKHxlcnJ8IGZvcm1hdF9lcnIhKCJmYWlsZWQgdG8gdXBncmFk ZSAtIHt9IiwgZXJyKSk/OwotCi0gICAgICAgICAgICBsZXQgdXNlcm5hbWUgPSBpZiBsZXQgcHJv eG1veF9jbGllbnQ6OkF1dGhlbnRpY2F0aW9uS2luZDo6VG9rZW4ocmVmIHRva2VuKSA9ICphdXRo IHsKLSAgICAgICAgICAgICAgICB0b2tlbi51c2VyaWQuY2xvbmUoKQotICAgICAgICAgICAgfSBl bHNlIHsKLSAgICAgICAgICAgICAgICBiYWlsISgic2hlbGwgbm90IHN1cHBvcnRlZCB3aXRoIHRp Y2tldC1iYXNlZCBhdXRoZW50aWNhdGlvbiIpCi0gICAgICAgICAgICB9OwotCi0gICAgICAgICAg ICBsZXQgcHJlYW1ibGUgPSBmb3JtYXQhKCJ7dXNlcm5hbWV9Ont0aWNrZXR9XG4iLCB0aWNrZXQg PSB0aWNrZXQpOwotICAgICAgICAgICAgd3MubWFzayA9IFNvbWUoWzAsIDAsIDAsIDBdKTsKLQot ICAgICAgICAgICAgaWYgbGV0IEVycihlcnIpID0gd3MKLSAgICAgICAgICAgICAgICAucHJveHlf Y29ubmVjdGlvbigKKyAgICAgICAgICAgICAgICB3cy5wcm94eV9jb25uZWN0aW9uKAogICAgICAg ICAgICAgICAgICAgICBUb2tpb0lvOjpuZXcoaW5jb21pbmdfd3MpLAogICAgICAgICAgICAgICAg ICAgICBUb2tpb0lvOjpuZXcocHZlX3dzKSwKICAgICAgICAgICAgICAgICAgICAgcHJlYW1ibGUu YXNfYnl0ZXMoKSwKICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgLmF3YWl0Ci0g ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbG9nOjp3YXJuISgiZXJyb3Igd2hpbGUgY29w eWluZyBiZXR3ZWVuIHdlYnNvY2tldHM6IHtlcnI6P30iKTsKLSAgICAgICAgICAgIH0KLQotICAg ICAgICAgICAgT2soKCkpCi0gICAgICAgIH0pOworICAgICAgICAgICAgICAgIC5tYXBfZXJyKHxl cnJ8IGZvcm1hdF9lcnIhKCJlcnJvciB3aGlsZSBjb3B5aW5nIGJldHdlZW4gd2Vic29ja2V0czog e2Vycjo/fSIpKQorICAgICAgICAgICAgfSwKKyAgICAgICAgKT87CiAKICAgICAgICAgT2socmVz cG9uc2UpCiAgICAgfQpkaWZmIC0tZ2l0IGEvdWkvc3JjL3Rhc2tzLnJzIGIvdWkvc3JjL3Rhc2tz LnJzCmluZGV4IDBmOWE5YWEuLmE2NDRkNWIgMTAwNjQ0Ci0tLSBhL3VpL3NyYy90YXNrcy5ycwor KysgYi91aS9zcmMvdGFza3MucnMKQEAgLTEwNSw2ICsxMDUsNyBAQCBwdWIgZm4gcmVnaXN0ZXJf cHZlX3Rhc2tzKCkgewogICAgIHJlZ2lzdGVyX3Rhc2tfZGVzY3JpcHRpb24oInZ6dW1vdW50Iiwg KCJDVCIsIHRyISgiVW5tb3VudCIpKSk7CiAgICAgcmVnaXN0ZXJfdGFza19kZXNjcmlwdGlvbigi emZzY3JlYXRlIiwgKHRyISgiWkZTIFN0b3JhZ2UiKSwgdHIhKCJDcmVhdGUiKSkpOwogICAgIHJl Z2lzdGVyX3Rhc2tfZGVzY3JpcHRpb24oInpmc3JlbW92ZSIsICgiWkZTIFBvb2wiLCB0ciEoIlJl bW92ZSIpKSk7CisgICAgcmVnaXN0ZXJfdGFza19kZXNjcmlwdGlvbigicmVtb3RlX3NoZWxsIiwg dHIhKCJSZW1vdGUgbm9kZSBzaGVsbCIpKTsKIH0KIAogLy8vIEZvcm1hdCBhIFVQSUQgdGhhdCBp cyBlaXRoZXIgW2BSZW1vdGVVcGlkYF0gb3IgYSBbYFVQSURgXQotLSAKMi40Ny4zCgoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnBkbS1kZXZlbCBtYWls aW5nIGxpc3QKcGRtLWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8vbGlzdHMucHJveG1v eC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3BkbS1kZXZlbAo=