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 816C81FF15F for ; Mon, 2 Dec 2024 14:00:40 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 4DB5B17B38; Mon, 2 Dec 2024 14:00:46 +0100 (CET) Mime-Version: 1.0 Date: Mon, 02 Dec 2024 14:00:08 +0100 Message-Id: To: "Shannon Sterz" , From: "Shannon Sterz" X-Mailer: aerc 0.18.2-0-ge037c095a049-dirty References: <20241129105321.143877-1-s.sterz@proxmox.com> In-Reply-To: <20241129105321.143877-1-s.sterz@proxmox.com> X-SPAM-LEVEL: Spam detection results: 0 AWL -0.038 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 proxmox 1/4] sendmail: add sendmail crate 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" U3VwZXJzZWVkZWQtYnk6IGh0dHBzOi8vbG9yZS5wcm94bW94LmNvbS9wYnMtZGV2ZWwvMjAyNDEy MDIxMjU4NTkuMTkxNDU1LTEtcy5zdGVyekBwcm94bW94LmNvbS8KCk9uIEZyaSBOb3YgMjksIDIw MjQgYXQgMTE6NTMgQU0gQ0VULCBTaGFubm9uIFN0ZXJ6IHdyb3RlOgo+IGFkZCB0aGUgYHByb3ht b3gtc2VuZG1haWxgIGNyYXRlIHRoYXQgbWFrZXMgaXQgZWFzaWVyIHRvIHNlbmQgbWFpbHMgdmlh Cj4gdGhlIGBzZW5kbWFpbGAgdXRpbGl0eS4gZmVhdHVyZXMgaW5jbHVkZToKPgo+IC0gbXVsdGlw YXJ0L2FsdGVybmF0aXZlIHN1cHBvcnQgZm9yIGh0bWwrcGxhaW4gdGV4dCBtYWlscwo+IC0gbXVs aXRwYXJ0L21peGVkIHN1cHBvcnQgZm9yIG1haWxzIHdpdGggYXR0YWNobWVudHMKPiAtIGF1dG9t YXRpYyBuZXN0aW5nIG9mIG11bHRpcGFydC9hbHRlcm5hdGl2ZSBhbmQgbXVsdGlwYXJ0L21peGVk IHBhcnRzCj4gLSBtYXNraW5nIHJlY2lwaWVudHMgdG8gYXZvaWQgZGlzY2xvc2luZyB0aGVtIHRv IGV2ZXJ5b25lCj4gLSBlbmNvZGluZyBTdWJqZWN0LCBUbywgRnJvbSwgYW5kIGF0dGFjaG1lbnQg ZmlsZSBuYW1lcyBjb3JyZWN0bHkKPiAtIGFkZGluZyBhbiBgQXV0by1TdWJtaXR0ZWRgIGhlYWRl ciB0byBhdm9pZCB0cmlnZ2VyaW5nIGF1dG9tYXRlZCBtYWlscwo+Cj4gYWxzbyBpbmNsdWRlcyBz ZXZlcmFsIHRlc3RzIHRvIGVuc3VyZSB0aGF0IG1haWxzIGFyZSBmb3JtYXR0ZWQKPiBjb3JyZWN0 bHkuCj4KPiBTaWduZWQtb2ZmLWJ5OiBTaGFubm9uIFN0ZXJ6IDxzLnN0ZXJ6QHByb3htb3guY29t Pgo+IC0tLQo+ICBDYXJnby50b21sICAgICAgICAgICAgICAgICAgfCAgIDIgKwo+ICBwcm94bW94 LXNlbmRtYWlsL0NhcmdvLnRvbWwgfCAgMTYgKwo+ICBwcm94bW94LXNlbmRtYWlsL3NyYy9saWIu cnMgfCA2NjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIDMgZmlsZXMg Y2hhbmdlZCwgNjgyIGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHByb3htb3gt c2VuZG1haWwvQ2FyZ28udG9tbAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgcHJveG1veC1zZW5kbWFp bC9zcmMvbGliLnJzCj4KPiBkaWZmIC0tZ2l0IGEvQ2FyZ28udG9tbCBiL0NhcmdvLnRvbWwKPiBp bmRleCA4NGZiZTk3OS4uYjYyZmNkNTAgMTAwNjQ0Cj4gLS0tIGEvQ2FyZ28udG9tbAo+ICsrKyBi L0NhcmdvLnRvbWwKPiBAQCAtMzMsNiArMzMsNyBAQCBtZW1iZXJzID0gWwo+ICAgICAgInByb3ht b3gtcnJkLWFwaS10eXBlcyIsCj4gICAgICAicHJveG1veC1zY2hlbWEiLAo+ICAgICAgInByb3ht b3gtc2VjdGlvbi1jb25maWciLAo+ICsgICAgInByb3htb3gtc2VuZG1haWwiLAo+ICAgICAgInBy b3htb3gtc2VyZGUiLAo+ICAgICAgInByb3htb3gtc2hhcmVkLWNhY2hlIiwKPiAgICAgICJwcm94 bW94LXNoYXJlZC1tZW1vcnkiLAo+IEBAIC0xMzgsNiArMTM5LDcgQEAgcHJveG1veC1yZXN0LXNl cnZlciA9IHsgdmVyc2lvbiA9ICIwLjguMCIsIHBhdGggPSAicHJveG1veC1yZXN0LXNlcnZlciIg fQo+ICBwcm94bW94LXJvdXRlciA9IHsgdmVyc2lvbiA9ICIzLjAuMCIsIHBhdGggPSAicHJveG1v eC1yb3V0ZXIiIH0KPiAgcHJveG1veC1zY2hlbWEgPSB7IHZlcnNpb24gPSAiMy4xLjIiLCBwYXRo ID0gInByb3htb3gtc2NoZW1hIiB9Cj4gIHByb3htb3gtc2VjdGlvbi1jb25maWcgPSB7IHZlcnNp b24gPSAiMi4xLjAiLCBwYXRoID0gInByb3htb3gtc2VjdGlvbi1jb25maWciIH0KPiArcHJveG1v eC1zZW5kbWFpbCA9IHsgdmVyc2lvbiA9ICIwLjEuMCIsIHBhdGggPSAicHJveG1veC1zZW5kbWFp bCIgfQo+ICBwcm94bW94LXNlcmRlID0geyB2ZXJzaW9uID0gIjAuMS4xIiwgcGF0aCA9ICJwcm94 bW94LXNlcmRlIiwgZmVhdHVyZXMgPSBbICJzZXJkZV9qc29uIiBdIH0KPiAgcHJveG1veC1zaGFy ZWQtbWVtb3J5ID0geyB2ZXJzaW9uID0gIjAuMy4wIiwgcGF0aCA9ICJwcm94bW94LXNoYXJlZC1t ZW1vcnkiIH0KPiAgcHJveG1veC1zb3J0YWJsZS1tYWNybyA9IHsgdmVyc2lvbiA9ICIwLjEuMyIs IHBhdGggPSAicHJveG1veC1zb3J0YWJsZS1tYWNybyIgfQo+IGRpZmYgLS1naXQgYS9wcm94bW94 LXNlbmRtYWlsL0NhcmdvLnRvbWwgYi9wcm94bW94LXNlbmRtYWlsL0NhcmdvLnRvbWwKPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi43OTBiMzI0Ygo+IC0tLSAvZGV2L251 bGwKPiArKysgYi9wcm94bW94LXNlbmRtYWlsL0NhcmdvLnRvbWwKPiBAQCAtMCwwICsxLDE2IEBA Cj4gK1twYWNrYWdlXQo+ICtuYW1lID0gInByb3htb3gtc2VuZG1haWwiCj4gK3ZlcnNpb24gPSAi MC4xLjAiCj4gK2F1dGhvcnMud29ya3NwYWNlID0gdHJ1ZQo+ICtlZGl0aW9uLndvcmtzcGFjZSA9 IHRydWUKPiArbGljZW5zZS53b3Jrc3BhY2UgPSB0cnVlCj4gK3JlcG9zaXRvcnkud29ya3NwYWNl ID0gdHJ1ZQo+ICtob21lcGFnZS53b3Jrc3BhY2UgPSB0cnVlCj4gK2V4Y2x1ZGUud29ya3NwYWNl ID0gdHJ1ZQo+ICtydXN0LXZlcnNpb24ud29ya3NwYWNlID0gdHJ1ZQo+ICsKPiArW2RlcGVuZGVu Y2llc10KPiArYW55aG93ID0geyB3b3Jrc3BhY2UgPSB0cnVlIH0KPiArYmFzZTY0ID0geyB3b3Jr c3BhY2UgPSB0cnVlIH0KPiArcGVyY2VudC1lbmNvZGluZyA9IHsgd29ya3NwYWNlID0gdHJ1ZSB9 Cj4gK3Byb3htb3gtdGltZSA9IHsgd29ya3NwYWNlID0gdHJ1ZSB9Cj4gZGlmZiAtLWdpdCBhL3By b3htb3gtc2VuZG1haWwvc3JjL2xpYi5ycyBiL3Byb3htb3gtc2VuZG1haWwvc3JjL2xpYi5ycwo+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAuLmM5N2MzMTg2Cj4gLS0tIC9k ZXYvbnVsbAo+ICsrKyBiL3Byb3htb3gtc2VuZG1haWwvc3JjL2xpYi5ycwo+IEBAIC0wLDAgKzEs NjY0IEBACj4gKy8vIQo+ICsvLyEgVGhpcyBsaWJyYXJ5IGltcGxlbWVudHMgdGhlIFtgTWFpbGBd IHRyYWl0IHdoaWNoIG1ha2VzIGl0IGVhc3kgdG8gc2VuZCBlbWFpbHMgd2l0aCBhdHRhY2htZW50 cwo+ICsvLyEgYW5kIGFsdGVybmF0aXZlIGh0bWwgcGFydHMgdG8gb25lIG9yIG11bHRpcGxlIHJl Y2VpdmVycyB2aWEgYGBzZW5kbWFpbGBgLgo+ICsvLyEKPiArCj4gK3VzZSBzdGQ6OmlvOjpXcml0 ZTsKPiArdXNlIHN0ZDo6cHJvY2Vzczo6e0NvbW1hbmQsIFN0ZGlvfTsKPiArCj4gK3VzZSBhbnlo b3c6OntiYWlsLCBDb250ZXh0LCBFcnJvcn07Cj4gK3VzZSBwZXJjZW50X2VuY29kaW5nOjp7dXRm OF9wZXJjZW50X2VuY29kZSwgQXNjaWlTZXQsIENPTlRST0xTfTsKPiArCj4gKy8vIENoYXJhY3Rl cnMgaW4gdGhpcyBzZXQgd2lsbCBiZSBlbmNvZGVkLCBzbyByZXByb2R1Y2UgdGhlIGludmVyc2Ug b2YgdGhlIHNldCBkZXNjcmliZWQgYnkgUkZDNTk4Nwo+ICsvLyBTZWN0aW9uIDMuMi4xIGBhdHRy LWNoYXJgLCBhcyB0aGF0IGRlc2NyaWJlcyBhbGwgY2hhcmFjdGVycyB0aGF0ICoqZG9uJ3QqKiBu ZWVkIGVuY29kaW5nOgo+ICsvLwo+ICsvLyBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2Rv Yy9odG1sL3JmYzU5ODcjc2VjdGlvbi0zLjIuMQo+ICsvLwo+ICsvLyBgQ09OVFJPTFNgIGNvbnRh aW5zIGFsbCBjb250cm9sIGNoYXJhY3RlcnMgMHgwMCAtIDB4MWYgYW5kIDB4N2YgYXMgd2VsbCBh cyBhbGwgbm9uLWFzY2lpCj4gKy8vIGNoYXJhY3RlcnMsIHNvIHdlIG5lZWQgdG8gYWRkIGFsbCBj aGFyYWN0ZXJzIGhlcmUgdGhhdCBhcmVuJ3QgZGVzY3JpYmVkIGluIGBhdHRyLWNoYXJgIHRoYXQg YXJlCj4gKy8vIGluIHRoZSByYW5nZSAweDIwLTB4N2UKPiArY29uc3QgUkZDNTk4N1NFVDogJkFz Y2lpU2V0ID0gJkNPTlRST0xTCj4gKyAgICAuYWRkKGInICcpCj4gKyAgICAuYWRkKGInIicpCj4g KyAgICAuYWRkKGInJScpCj4gKyAgICAuYWRkKGInJicpCj4gKyAgICAuYWRkKGInXCcnKQo+ICsg ICAgLmFkZChiJygnKQo+ICsgICAgLmFkZChiJyknKQo+ICsgICAgLmFkZChiJyonKQo+ICsgICAg LmFkZChiJywnKQo+ICsgICAgLmFkZChiJy8nKQo+ICsgICAgLmFkZChiJzonKQo+ICsgICAgLmFk ZChiJzsnKQo+ICsgICAgLmFkZChiJzwnKQo+ICsgICAgLmFkZChiJz0nKQo+ICsgICAgLmFkZChi Jz4nKQo+ICsgICAgLmFkZChiJz8nKQo+ICsgICAgLmFkZChiJ0AnKQo+ICsgICAgLmFkZChiJ1sn KQo+ICsgICAgLmFkZChiJ1xcJykKPiArICAgIC5hZGQoYiddJykKPiArICAgIC5hZGQoYid7JykK PiArICAgIC5hZGQoYid9Jyk7Cj4gKwo+ICtzdHJ1Y3QgUmVjaXBpZW50IHsKPiArICAgIG5hbWU6 IE9wdGlvbjxTdHJpbmc+LAo+ICsgICAgZW1haWw6IFN0cmluZywKPiArfQo+ICsKPiArc3RydWN0 IEF0dGFjaG1lbnQ8J2E+IHsKPiArICAgIGZpbGVuYW1lOiBTdHJpbmcsCj4gKyAgICBtaW1lOiBT dHJpbmcsCj4gKyAgICBjb250ZW50OiAmJ2EgW3U4XSwKPiArfQo+ICsKPiArcHViIHN0cnVjdCBN YWlsPCdhPiB7Cj4gKyAgICBtYWlsX2F1dGhvcjogU3RyaW5nLAo+ICsgICAgbWFpbF9mcm9tOiBT dHJpbmcsCj4gKyAgICBzdWJqZWN0OiBTdHJpbmcsCj4gKyAgICB0bzogVmVjPFJlY2lwaWVudD4s Cj4gKyAgICBib2R5X3R4dDogU3RyaW5nLAo+ICsgICAgYm9keV9odG1sOiBPcHRpb248U3RyaW5n PiwKPiArICAgIGF0dGFjaG1lbnRzOiBWZWM8QXR0YWNobWVudDwnYT4+LAo+ICt9Cj4gKwo+ICtp bXBsPCdhPiBNYWlsPCdhPiB7Cj4gKyAgICAvLy8gQ3JlYXRlcyBhIG5ldyBtYWlsIHdpdGggYSBt YWlsIGF1dGhvciwgZnJvbSBhZGRyZXNzLCBzdWJqZWN0IGxpbmUgYW5kIGEgcGxhaW4gdGV4dCBi b2R5Lgo+ICsgICAgLy8vCj4gKyAgICAvLy8gTm90ZTogSWYgdGhlIGF1dGhvcidzIG5hbWUgb3Ig dGhlIHN1YmplY3QgbGluZSBjb250YWlucyBVVEYtOCBjaGFyYWN0ZXJzIHRoZXkgd2lsbCBiZQo+ ICsgICAgLy8vIGFwcHJvcHJpYXRlbGx5IGVuY29kZWQuCj4gKyAgICBwdWIgZm4gbmV3KG1haWxf YXV0aG9yOiAmc3RyLCBtYWlsX2Zyb206ICZzdHIsIHN1YmplY3Q6ICZzdHIsIGJvZHlfdHh0OiAm c3RyKSAtPiBTZWxmIHsKPiArICAgICAgICBTZWxmIHsKPiArICAgICAgICAgICAgbWFpbF9hdXRo b3I6IG1haWxfYXV0aG9yLnRvX3N0cmluZygpLAo+ICsgICAgICAgICAgICBtYWlsX2Zyb206IG1h aWxfZnJvbS50b19zdHJpbmcoKSwKPiArICAgICAgICAgICAgc3ViamVjdDogc3ViamVjdC50b19z dHJpbmcoKSwKPiArICAgICAgICAgICAgdG86IFZlYzo6bmV3KCksCj4gKyAgICAgICAgICAgIGJv ZHlfdHh0OiBib2R5X3R4dC50b19zdHJpbmcoKSwKPiArICAgICAgICAgICAgYm9keV9odG1sOiBO b25lLAo+ICsgICAgICAgICAgICBhdHRhY2htZW50czogVmVjOjpuZXcoKSwKPiArICAgICAgICB9 Cj4gKyAgICB9Cj4gKwo+ICsgICAgLy8vIEFkZHMgYSByZWNpcGllbnQgdG8gdGhlIG1haWwgd2l0 aG91dCBzcGVjaWZ5aW5nIGEgbmFtZSBzZXBhcmF0ZWx5Lgo+ICsgICAgLy8vCj4gKyAgICAvLy8g Tm90ZTogTm8gZm9ybWF0dGluZyBvciBlbmNvZGluZyB3aWxsIGJlIGRvbmUgaGVyZSwgdGhlIHZh bHVlIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBgVG86YAo+ICsgICAgLy8vIGhlYWRlciBkaXJlY3Rs eS4KPiArICAgIHB1YiBmbiBhZGRfcmVjaXBpZW50KCZtdXQgc2VsZiwgZW1haWw6ICZzdHIpIHsK PiArICAgICAgICBzZWxmLnRvLnB1c2goUmVjaXBpZW50IHsKPiArICAgICAgICAgICAgbmFtZTog Tm9uZSwKPiArICAgICAgICAgICAgZW1haWw6IGVtYWlsLnRvX3N0cmluZygpLAo+ICsgICAgICAg IH0pOwo+ICsgICAgfQo+ICsKPiArICAgIC8vLyBCdWlsZGVyLXBhdHRlcm4gbWV0aG9kIHRvIGNv bnZlbmllbnRseSBhZGQgYSByZWNpcGllbnQgdG8gYW4gZW1haWwgd2l0aG91dCBzcGVjaWZ5aW5n IGEKPiArICAgIC8vLyBuYW1lIHNlcGFyYXRlbHkuCj4gKyAgICAvLy8KPiArICAgIC8vLyBOb3Rl OiBObyBmb3JtYXR0aW5nIG9yIGVuY29kaW5nIHdpbGwgYmUgZG9uZSBoZXJlLCB0aGUgdmFsdWUg d2lsbCBiZSBwYXNzZWQgdG8gdGhlIGBUbzpgCj4gKyAgICAvLy8gaGVhZGVyIGRpcmVjdGx5Lgo+ ICsgICAgcHViIGZuIHdpdGhfcmVjaXBpZW50KG11dCBzZWxmLCBlbWFpbDogJnN0cikgLT4gU2Vs ZiB7Cj4gKyAgICAgICAgc2VsZi5hZGRfcmVjaXBpZW50KGVtYWlsKTsKPiArICAgICAgICBzZWxm Cj4gKyAgICB9Cj4gKwo+ICsgICAgLy8vIEFkZHMgYSByZWNpcGllbnQgdG8gdGhlIG1haWwgd2l0 aCBhIG5hbWUuCj4gKyAgICAvLy8KPiArICAgIC8vLyBOb3RlczoKPiArICAgIC8vLwo+ICsgICAg Ly8vIC0gSWYgdGhlIG5hbWUgY29udGFpbnMgVVRGLTggY2hhcmFjdGVycyBpdCB3aWxsIGJlIGVu Y29kZWQuIFRoZW4gdGhlIHBvc3NpYmx5IGVuY29kZWQgbmFtZQo+ICsgICAgLy8vICAgYW5kIG5v bi1lbmNvZGVkIGVtYWlsIGFkZHJlc3Mgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGBUbzpgIGhlYWRl ciBpbiB0aGlzIGZvcm1hdDoKPiArICAgIC8vLyAgIGB7ZW5jb2RlZF9uYW1lfSA8e2VtYWlsfT5g Cj4gKyAgICAvLy8gLSBJZiBtdWx0aXBsZSByZWNlaXZlcnMgYXJlIHNwZWNpZmllZCwgdGhleSB3 aWxsIGJlIG1hc2tlZCBzbyBhcyBub3QgdG8gZGlzY2xvc2UgdGhlbSB0bwo+ICsgICAgLy8vICAg b3RoZXIgcmVjZWl2ZXJzLgo+ICsgICAgcHViIGZuIGFkZF9yZWNpcGllbnRfYW5kX25hbWUoJm11 dCBzZWxmLCBuYW1lOiAmc3RyLCBlbWFpbDogJnN0cikgewo+ICsgICAgICAgIHNlbGYudG8ucHVz aChSZWNpcGllbnQgewo+ICsgICAgICAgICAgICBuYW1lOiBTb21lKG5hbWUudG9fc3RyaW5nKCkp LAo+ICsgICAgICAgICAgICBlbWFpbDogZW1haWwudG9fc3RyaW5nKCksCj4gKyAgICAgICAgfSk7 Cj4gKyAgICB9Cj4gKwo+ICsgICAgLy8vIEJ1aWxkZXItc3R5bGUgbWV0aG9kIHRvIGNvbnZlbmll bnRseSBhZGQgYSByZWNpZXBpZW50IHdpdGggYSBuYW1lIHRvIGFuIGVtYWlsLgo+ICsgICAgLy8v Cj4gKyAgICAvLy8gTm90ZXM6Cj4gKyAgICAvLy8KPiArICAgIC8vLyAtIElmIHRoZSBuYW1lIGNv bnRhaW5zIFVURi04IGNoYXJhY3RlcnMgaXQgd2lsbCBiZSBlbmNvZGVkLiBUaGVuIHRoZSBwb3Nz aWJseSBlbmNvZGVkIG5hbWUKPiArICAgIC8vLyAgIGFuZCBub24tZW5jb2RlZCBlbWFpbCBhZGRy ZXNzIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBgVG86YCBoZWFkZXIgaW4gdGhpcyBmb3JtYXQ6Cj4g KyAgICAvLy8gICBge2VuY29kZWRfbmFtZX0gPHtlbWFpbH0+YAo+ICsgICAgLy8vIC0gSWYgbXVs dGlwbGUgcmVjZWl2ZXJzIGFyZSBzcGVjaWZpZWQsIHRoZXkgd2lsbCBiZSBtYXNrZWQgc28gYXMg bm90IHRvIGRpc2Nsb3NlIHRoZW0gdG8KPiArICAgIC8vLyAgIG90aGVyIHJlY2VpdmVycy4KPiAr ICAgIHB1YiBmbiB3aXRoX3JlY2lwaWVudF9hbmRfbmFtZShtdXQgc2VsZiwgbmFtZTogJnN0ciwg ZW1haWw6ICZzdHIpIC0+IFNlbGYgewo+ICsgICAgICAgIHNlbGYuYWRkX3JlY2lwaWVudF9hbmRf bmFtZShuYW1lLCBlbWFpbCk7Cj4gKyAgICAgICAgc2VsZgo+ICsgICAgfQo+ICsKPiArICAgIC8v LyBBZGRzIGFuIGF0dGFjaG1lbnQgd2l0aCBhIHNwZWNpZmllZCBmaWxlIG5hbWUgYW5kIG1pbWUt dHlwZSB0byBhbiBlbWFpbC4KPiArICAgIC8vLwo+ICsgICAgLy8vIE5vdGU6IEFkZGluZyBhdHRh Y2hlbWVudHMgdHJpZ2dlcnMgYG11bHRpcGFydC9taXhlZGAgbW9kZS4KPiArICAgIHB1YiBmbiBh ZGRfYXR0YWNobWVudCgmbXV0IHNlbGYsIGZpbGVuYW1lOiAmc3RyLCBtaW1lX3R5cGU6ICZzdHIs IGNvbnRlbnQ6ICYnYSBbdThdKSB7Cj4gKyAgICAgICAgc2VsZi5hdHRhY2htZW50cy5wdXNoKEF0 dGFjaG1lbnQgewo+ICsgICAgICAgICAgICBmaWxlbmFtZTogZmlsZW5hbWUudG9fc3RyaW5nKCks Cj4gKyAgICAgICAgICAgIG1pbWU6IG1pbWVfdHlwZS50b19zdHJpbmcoKSwKPiArICAgICAgICAg ICAgY29udGVudCwKPiArICAgICAgICB9KTsKPiArICAgIH0KPiArCj4gKyAgICAvLy8gQnVpbGRl ci1zdHlsZSBtZXRob2QgdG8gY29udmVuaWVudGx5IGFkZCBhbiBhdHRhY2htZW50IHdpdGggYSBz cGVjaWZpYyBmaWxlbmFtZSBhbmQKPiArICAgIC8vLyBtaW1lLXR5cGUgdG8gYW4gZW1haWwuCj4g KyAgICAvLy8KPiArICAgIC8vLyBOb3RlOiBBZGRpbmcgYXR0YWNoZW1lbnRzIHRyaWdnZXJzIGBt dWx0aXBhcnQvbWl4ZWRgIG1vZGUuCj4gKyAgICBwdWIgZm4gd2l0aF9hdHRhY2htZW50KG11dCBz ZWxmLCBmaWxlbmFtZTogJnN0ciwgbWltZV90eXBlOiAmc3RyLCBjb250ZW50OiAmJ2EgW3U4XSkg LT4gU2VsZiB7Cj4gKyAgICAgICAgc2VsZi5hZGRfYXR0YWNobWVudChmaWxlbmFtZSwgbWltZV90 eXBlLCBjb250ZW50KTsKPiArICAgICAgICBzZWxmCj4gKyAgICB9Cj4gKwo+ICsgICAgLy8vIFNl dCBhbiBhbHRlcm5hdGl2ZSBIVE1MIHBhcnQuCj4gKyAgICAvLy8KPiArICAgIC8vLyBOb3RlOiBU aGlzIHRyaWdnZXJzIGBtdWx0aXBhcnQvYWx0ZXJuYXRpdmVgIG1vZGUuIElmIGJvdGggYW4gSFRN TCBwYXJ0IGFuZCBhdCBsZWFzdCBvbmUKPiArICAgIC8vLyBhdHRhY2hlbWVudCBhcmUgc3BlY2lm aWVkLCB0aGUgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWAgcGFydCB3aWxsIGJlIG5lc3RlZCB3aXRo aW4gdGhlIGZpcnN0Cj4gKyAgICAvLy8gYG11bHRpcGFydC9taXhlZGAgcGFydC4gVGhpcyBzaG91 bGQgZW5zdXJlIHRoYXQgdGhlIEhUTUwgaXMgZGlzcGxheWVkIHByb3Blcmx5IGJ5IGNsaWVudCdz Cj4gKyAgICAvLy8gdGhhdCBwcmlvcml0aXplIGl0IG92ZXIgdGhlIHBsYWluIHRleHQgcGFydCAo c2hvdWxkIGJlIHRoZSBkZWZhdWx0IGZvciBtb3N0IGNsaWVudHMpIHdoaWxlCj4gKyAgICAvLy8g YWxzbyBwcm9wZXJseSBkaXNwbGF5aW5nIHRoZSBhdHRhY2htZW50cy4KPiArICAgIHB1YiBmbiBz ZXRfaHRtbF9hbHQoJm11dCBzZWxmLCBib2R5X2h0bWw6ICZzdHIpIHsKPiArICAgICAgICBzZWxm LmJvZHlfaHRtbC5yZXBsYWNlKGJvZHlfaHRtbC50b19zdHJpbmcoKSk7Cj4gKyAgICB9Cj4gKwo+ ICsgICAgLy8vIEJ1aWxkZXItc3R5bGUgbWV0aG9kIHRvIGFkZCBhbiBhbHRlcm5hdGl2ZSBIVE1M IHBhcnQuCj4gKyAgICAvLy8KPiArICAgIC8vLyBOb3RlOiBUaGlzIHRyaWdnZXJzIGBtdWx0aXBh cnQvYWx0ZXJuYXRpdmVgIG1vZGUuIElmIGJvdGggYW4gSFRNTCBwYXJ0IGFuZCBhdCBsZWFzdCBv bmUKPiArICAgIC8vLyBhdHRhY2hlbWVudCBhcmUgc3BlY2lmaWVkLCB0aGUgYG11bHRpcGFydC9h bHRlcm5hdGl2ZWAgcGFydCB3aWxsIGJlIG5lc3RlZCB3aXRoaW4gdGhlIGZpcnN0Cj4gKyAgICAv Ly8gYG11bHRpcGFydC9taXhlZGAgcGFydC4gVGhpcyBzaG91bGQgZW5zdXJlIHRoYXQgdGhlIEhU TUwgaXMgZGlzcGxheWVkIHByb3Blcmx5IGJ5IGNsaWVudCdzCj4gKyAgICAvLy8gdGhhdCBwcmlv cml0aXplIGl0IG92ZXIgdGhlIHBsYWluIHRleHQgcGFydCAoc2hvdWxkIGJlIHRoZSBkZWZhdWx0 IGZvciBtb3N0IGNsaWVudHMpIHdoaWxlCj4gKyAgICAvLy8gYWxzbyBwcm9wZXJseSBkaXNwbGF5 aW5nIHRoZSBhdHRhY2htZW50cy4KPiArICAgIHB1YiBmbiB3aXRoX2h0bWxfYWx0KG11dCBzZWxm LCBib2R5X2h0bWw6ICZzdHIpIC0+IFNlbGYgewo+ICsgICAgICAgIHNlbGYuc2V0X2h0bWxfYWx0 KGJvZHlfaHRtbCk7Cj4gKyAgICAgICAgc2VsZgo+ICsgICAgfQo+ICsKPiArICAgIC8vLyBTZW5k cyB0aGUgZW1haWwuIFRoaXMgd2lsbCBmYWlsIGlmIG5vIHJlY2llcGllbnQncyBoYXZlIGJlZW4g YWRkZWQuCj4gKyAgICAvLy8KPiArICAgIC8vLyBOb3RlOiBBbiBgQXV0by1TdWJtaXR0ZWQ6IGF1 dG8tZ2VuZXJhdGVkYCBoZWFkZXIgaXMgYWRkZWQgdG8gYXZvaWQgdHJpZ2dlcmluZyBPT08gYW5k Cj4gKyAgICAvLy8gc2ltaWxhciBtYWlscy4KPiArICAgIHB1YiBmbiBzZW5kKCZzZWxmKSAtPiBS ZXN1bHQ8KCksIEVycm9yPiB7Cj4gKyAgICAgICAgaWYgc2VsZi50by5pc19lbXB0eSgpIHsKPiAr ICAgICAgICAgICAgYmFpbCEoIm5vIHJlY2lwaWVudHMgcHJvdmlkZWQgZm9yIHRoZSBtYWlsLCBj YW5ub3Qgc2VuZCBpdC4iKTsKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIGxldCBub3cgPSBw cm94bW94X3RpbWU6OmVwb2NoX2k2NCgpOwo+ICsgICAgICAgIGxldCBib2R5ID0gc2VsZi5mb3Jt YXRfbWFpbChub3cpPzsKPiArCj4gKyAgICAgICAgbGV0IG11dCBzZW5kbWFpbF9wcm9jZXNzID0g Q29tbWFuZDo6bmV3KCIvdXNyL3NiaW4vc2VuZG1haWwiKQo+ICsgICAgICAgICAgICAuYXJnKCIt QiIpCj4gKyAgICAgICAgICAgIC5hcmcoIjhCSVRNSU1FIikKPiArICAgICAgICAgICAgLmFyZygi LWYiKQo+ICsgICAgICAgICAgICAuYXJnKCZzZWxmLm1haWxfZnJvbSkKPiArICAgICAgICAgICAg LmFyZygiLS0iKQo+ICsgICAgICAgICAgICAuYXJncyhzZWxmLnRvLml0ZXIoKS5tYXAofHB8ICZw LmVtYWlsKS5jb2xsZWN0Ojo8VmVjPCZTdHJpbmc+PigpKQo+ICsgICAgICAgICAgICAuc3RkaW4o U3RkaW86OnBpcGVkKCkpCj4gKyAgICAgICAgICAgIC5zcGF3bigpCj4gKyAgICAgICAgICAgIC53 aXRoX2NvbnRleHQofHwgImNvdWxkIG5vdCBzcGF3biBzZW5kbWFpbCBwcm9jZXNzIik/Owo+ICsK PiArICAgICAgICBzZW5kbWFpbF9wcm9jZXNzCj4gKyAgICAgICAgICAgIC5zdGRpbgo+ICsgICAg ICAgICAgICAuYXNfcmVmKCkKPiArICAgICAgICAgICAgLnVud3JhcCgpCj4gKyAgICAgICAgICAg IC53cml0ZV9hbGwoYm9keS5hc19ieXRlcygpKQo+ICsgICAgICAgICAgICAud2l0aF9jb250ZXh0 KHx8ICJjb3VsZG4ndCB3cml0ZSB0byBzZW5kbWFpbCBzdGRpbiIpPzsKPiArCj4gKyAgICAgICAg c2VuZG1haWxfcHJvY2Vzcwo+ICsgICAgICAgICAgICAud2FpdCgpCj4gKyAgICAgICAgICAgIC53 aXRoX2NvbnRleHQofHwgInNlbmRtYWlsIGRpZCBub3QgZXhpdCBzdWNjZXNzZnVsbHkiKT87Cj4g Kwo+ICsgICAgICAgIE9rKCgpKQo+ICsgICAgfQo+ICsKPiArICAgIGZuIGZvcm1hdF9tYWlsKCZz ZWxmLCBub3c6IGk2NCkgLT4gUmVzdWx0PFN0cmluZywgRXJyb3I+IHsKPiArICAgICAgICBsZXQg bXV0IGJvZHkgPSBTdHJpbmc6Om5ldygpOwo+ICsgICAgICAgIGxldCBmaWxlX2JvdW5kYXJ5ID0g Zm9ybWF0ISgiLS0tLV89X05leHRQYXJ0XzAwMV97fSIsIG5vdyk7Cj4gKyAgICAgICAgbGV0IGh0 bWxfYm91bmRhcnkgPSBmb3JtYXQhKCItLS0tXz1fTmV4dFBhcnRfMDAyX3t9Iiwgbm93KTsKPiAr Cj4gKyAgICAgICAgbGV0IHRvID0gaWYgc2VsZi50by5sZW4oKSA+IDEgewo+ICsgICAgICAgICAg ICAvLyBkb24ndCBkaXNjbG9zZSBhbGwgcmVjaXBpZW50cyBpZiB0aGUgbWFpbCBnb2VzIG91dCB0 byBtdWx0aXBsZQo+ICsgICAgICAgICAgICAmUmVjaXBpZW50IHsKPiArICAgICAgICAgICAgICAg IG5hbWU6IFNvbWUoIlVuZGlzY2xvc2VkIi50b19zdHJpbmcoKSksCj4gKyAgICAgICAgICAgICAg ICBlbWFpbDogIm5vcmVwbHkiLnRvX3N0cmluZygpLAo+ICsgICAgICAgICAgICB9Cj4gKyAgICAg ICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgc2VsZi50bwo+ICsgICAgICAgICAgICAgICAgLmZp cnN0KCkKPiArICAgICAgICAgICAgICAgIC5leHBlY3QoInRoZSBjaGVja3MgYmVmb3JlIG1ha2Ug c3VyZSB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcmVjaXBpZW50IikKPiArICAgICAgICB9Owo+ICsK PiArICAgICAgICBpZiAhc2VsZi5hdHRhY2htZW50cy5pc19lbXB0eSgpIHsKPiArICAgICAgICAg ICAgYm9keS5wdXNoX3N0cigiQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7XG4iKTsKPiAr ICAgICAgICAgICAgYm9keS5wdXNoX3N0cigmZm9ybWF0ISgiXHRib3VuZGFyeT1cIntmaWxlX2Jv dW5kYXJ5fVwiXG4iKSk7Cj4gKyAgICAgICAgICAgIGJvZHkucHVzaF9zdHIoIk1JTUUtVmVyc2lv bjogMS4wXG4iKTsKPiArICAgICAgICB9IGVsc2UgaWYgc2VsZi5ib2R5X2h0bWwuaXNfc29tZSgp IHsKPiArICAgICAgICAgICAgYm9keS5wdXNoX3N0cigiQ29udGVudC1UeXBlOiBtdWx0aXBhcnQv YWx0ZXJuYXRpdmU7XG4iKTsKPiArICAgICAgICAgICAgYm9keS5wdXNoX3N0cigmZm9ybWF0ISgi XHRib3VuZGFyeT1cIntodG1sX2JvdW5kYXJ5fVwiXG4iKSk7Cj4gKyAgICAgICAgICAgIGJvZHku cHVzaF9zdHIoIk1JTUUtVmVyc2lvbjogMS4wXG4iKTsKPiArICAgICAgICB9IGVsc2UgaWYgIXNl bGYuc3ViamVjdC5pc19hc2NpaSgpCj4gKyAgICAgICAgICAgIHx8ICFzZWxmLm1haWxfYXV0aG9y LmlzX2FzY2lpKCkKPiArICAgICAgICAgICAgfHwgIXRvLm5hbWUuYXNfcmVmKCkubWFwKHx0fCB0 LmlzX2FzY2lpKCkpLnVud3JhcF9vcih0cnVlKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAg Ym9keS5wdXNoX3N0cigiTUlNRS1WZXJzaW9uOiAxLjBcbiIpOwo+ICsgICAgICAgIH0KPiArCj4g KyAgICAgICAgbGV0IHN1YmplY3QgPSBpZiAhc2VsZi5zdWJqZWN0LmlzX2FzY2lpKCkgewo+ICsg ICAgICAgICAgICBmb3JtYXQhKCJTdWJqZWN0OiA9P3V0Zi04P0I/e30/PVxuIiwgYmFzZTY0Ojpl bmNvZGUoJnNlbGYuc3ViamVjdCkpCj4gKyAgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAg Zm9ybWF0ISgiU3ViamVjdDoge31cbiIsIHNlbGYuc3ViamVjdCkKPiArICAgICAgICB9Owo+ICsK PiArICAgICAgICBib2R5LnB1c2hfc3RyKCZzdWJqZWN0KTsKPiArCj4gKyAgICAgICAgbGV0IGZy b20gPSBpZiAhc2VsZi5tYWlsX2F1dGhvci5pc19hc2NpaSgpIHsKPiArICAgICAgICAgICAgZm9y bWF0ISgKPiArICAgICAgICAgICAgICAgICJGcm9tOiA9P3V0Zi04P0I/e30/PSA8e30+XG4iLAo+ ICsgICAgICAgICAgICAgICAgYmFzZTY0OjplbmNvZGUoJnNlbGYubWFpbF9hdXRob3IpLAo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYWlsX2Zyb20KPiArICAgICAgICAgICAgKQo+ICsgICAgICAg IH0gZWxzZSB7Cj4gKyAgICAgICAgICAgIGZvcm1hdCEoIkZyb206IHt9IDx7fT5cbiIsIHNlbGYu bWFpbF9hdXRob3IsIHNlbGYubWFpbF9mcm9tKQo+ICsgICAgICAgIH07Cj4gKwo+ICsgICAgICAg IGJvZHkucHVzaF9zdHIoJmZyb20pOwo+ICsKPiArICAgICAgICBsZXQgdG8gPSBpZiBsZXQgU29t ZShuYW1lKSA9ICZ0by5uYW1lIHsKPiArICAgICAgICAgICAgaWYgIW5hbWUuaXNfYXNjaWkoKSB7 Cj4gKyAgICAgICAgICAgICAgICBmb3JtYXQhKCJUbzogPT91dGYtOD9CP3t9Pz0gPHt9PlxuIiwg YmFzZTY0OjplbmNvZGUoJm5hbWUpLCB0by5lbWFpbCkKPiArICAgICAgICAgICAgfSBlbHNlIHsK PiArICAgICAgICAgICAgICAgIGZvcm1hdCEoIlRvOiB7fSA8e30+XG4iLCBuYW1lLCB0by5lbWFp bCkKPiArICAgICAgICAgICAgfQo+ICsgICAgICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgICAgIGZv cm1hdCEoIlRvOiB7fVxuIiwgdG8uZW1haWwpCj4gKyAgICAgICAgfTsKPiArCj4gKyAgICAgICAg Ym9keS5wdXNoX3N0cigmdG8pOwo+ICsKPiArICAgICAgICBsZXQgcmZjMjgyMl9kYXRlID0gcHJv eG1veF90aW1lOjplcG9jaF90b19yZmMyODIyKG5vdykKPiArICAgICAgICAgICAgLndpdGhfY29u dGV4dCh8fCAiY291bGQgbm90IGNvbnZlcnQgZXBvY2ggdG8gcmZjMjgyMiBkYXRlIik/Owo+ICsg ICAgICAgIGJvZHkucHVzaF9zdHIoJmZvcm1hdCEoIkRhdGU6IHtyZmMyODIyX2RhdGV9XG4iKSk7 Cj4gKyAgICAgICAgYm9keS5wdXNoX3N0cigiQXV0by1TdWJtaXR0ZWQ6IGF1dG8tZ2VuZXJhdGVk O1xuIik7Cj4gKwo+ICsgICAgICAgIGlmIHNlbGYuYm9keV9odG1sLmlzX3NvbWUoKSAmJiAhc2Vs Zi5hdHRhY2htZW50cy5pc19lbXB0eSgpIHsKPiArICAgICAgICAgICAgYm9keS5wdXNoX3N0cigi XG5UaGlzIGlzIGEgbXVsdGktcGFydCBtZXNzYWdlIGluIE1JTUUgZm9ybWF0LlxuIik7Cj4gKyAg ICAgICAgICAgIGJvZHkucHVzaF9zdHIoJmZvcm1hdCEoIlxuLS17ZmlsZV9ib3VuZGFyeX1cbiIp KTsKPiArICAgICAgICAgICAgYm9keS5wdXNoX3N0cigmZm9ybWF0ISgKPiArICAgICAgICAgICAg ICAgICJDb250ZW50LVR5cGU6IG11bHRpcGFydC9hbHRlcm5hdGl2ZTsgYm91bmRhcnk9XCJ7aHRt bF9ib3VuZGFyeX1cIlxuIgo+ICsgICAgICAgICAgICApKTsKPiArICAgICAgICAgICAgYm9keS5w dXNoX3N0cigiTUlNRS1WZXJzaW9uOiAxLjBcbiIpOwo+ICsgICAgICAgICAgICBib2R5LnB1c2hf c3RyKCZmb3JtYXQhKCJcbi0te2h0bWxfYm91bmRhcnl9XG4iKSk7Cj4gKyAgICAgICAgfSBlbHNl IGlmIHNlbGYuYm9keV9odG1sLmlzX3NvbWUoKSB7Cj4gKyAgICAgICAgICAgIGJvZHkucHVzaF9z dHIoIlxuVGhpcyBpcyBhIG11bHRpLXBhcnQgbWVzc2FnZSBpbiBNSU1FIGZvcm1hdC5cbiIpOwo+ ICsgICAgICAgICAgICBib2R5LnB1c2hfc3RyKCZmb3JtYXQhKCJcbi0te2h0bWxfYm91bmRhcnl9 XG4iKSk7Cj4gKyAgICAgICAgfSBlbHNlIGlmIHNlbGYuYm9keV9odG1sLmlzX25vbmUoKSAmJiAh c2VsZi5hdHRhY2htZW50cy5pc19lbXB0eSgpIHsKPiArICAgICAgICAgICAgYm9keS5wdXNoX3N0 cigiXG5UaGlzIGlzIGEgbXVsdGktcGFydCBtZXNzYWdlIGluIE1JTUUgZm9ybWF0LlxuIik7Cj4g KyAgICAgICAgICAgIGJvZHkucHVzaF9zdHIoJmZvcm1hdCEoIlxuLS17ZmlsZV9ib3VuZGFyeX1c biIpKTsKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIGJvZHkucHVzaF9zdHIoIkNvbnRlbnQt VHlwZTogdGV4dC9wbGFpbjtcbiIpOwo+ICsgICAgICAgIGJvZHkucHVzaF9zdHIoIlx0Y2hhcnNl dD1cIlVURi04XCJcbiIpOwo+ICsgICAgICAgIGJvZHkucHVzaF9zdHIoIkNvbnRlbnQtVHJhbnNm ZXItRW5jb2Rpbmc6IDhiaXRcblxuIik7Cj4gKyAgICAgICAgYm9keS5wdXNoX3N0cigmc2VsZi5i b2R5X3R4dCk7Cj4gKwo+ICsgICAgICAgIGlmIGxldCBTb21lKGh0bWwpID0gJnNlbGYuYm9keV9o dG1sIHsKPiArICAgICAgICAgICAgYm9keS5wdXNoX3N0cigmZm9ybWF0ISgiXG4tLXtodG1sX2Jv dW5kYXJ5fVxuIikpOwo+ICsgICAgICAgICAgICBib2R5LnB1c2hfc3RyKCJDb250ZW50LVR5cGU6 IHRleHQvaHRtbDtcbiIpOwo+ICsgICAgICAgICAgICBib2R5LnB1c2hfc3RyKCJcdGNoYXJzZXQ9 XCJVVEYtOFwiXG4iKTsKPiArICAgICAgICAgICAgYm9keS5wdXNoX3N0cigiQ29udGVudC1UcmFu c2Zlci1FbmNvZGluZzogOGJpdFxuXG4iKTsKPiArICAgICAgICAgICAgYm9keS5wdXNoX3N0ciho dG1sKTsKPiArICAgICAgICAgICAgYm9keS5wdXNoX3N0cigmZm9ybWF0ISgiXG4tLXtodG1sX2Jv dW5kYXJ5fS0tIikpOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgZm9yIGF0dGFjaG1lbnQg aW4gJnNlbGYuYXR0YWNobWVudHMgewo+ICsgICAgICAgICAgICBsZXQgZmlsZW5hbWUgPSAmYXR0 YWNobWVudC5maWxlbmFtZTsKPiArCj4gKyAgICAgICAgICAgIGJvZHkucHVzaF9zdHIoJmZvcm1h dCEoIlxuLS17ZmlsZV9ib3VuZGFyeX1cbiIpKTsKPiArICAgICAgICAgICAgYm9keS5wdXNoX3N0 cigmZm9ybWF0ISgKPiArICAgICAgICAgICAgICAgICJDb250ZW50LVR5cGU6IHt9OyBuYW1lPVwi e2ZpbGVuYW1lfVwiXG4iLAo+ICsgICAgICAgICAgICAgICAgYXR0YWNobWVudC5taW1lCj4gKyAg ICAgICAgICAgICkpOwo+ICsKPiArICAgICAgICAgICAgLy8gYm90aCBgZmlsZW5hbWVgIGFuZCBg ZmlsZW5hbWUqYCBhcmUgaW5jbHVkZWQgZm9yIGFkZGl0aW9uYWwgY29tcGF0YWJpbGl0eQo+ICsg ICAgICAgICAgICBib2R5LnB1c2hfc3RyKCZmb3JtYXQhKAo+ICsgICAgICAgICAgICAgICAgIkNv bnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwie2ZpbGVuYW1lfVwiOyBm aWxlbmFtZSo9VVRGLTgnJ3t9XG4iLAo+ICsgICAgICAgICAgICAgICAgdXRmOF9wZXJjZW50X2Vu Y29kZShmaWxlbmFtZSwgUkZDNTk4N1NFVCkKPiArICAgICAgICAgICAgKSk7Cj4gKyAgICAgICAg ICAgIGJvZHkucHVzaF9zdHIoIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NFxuXG4i KTsKPiArCj4gKyAgICAgICAgICAgIC8vIHdyYXAgdGhlIGJhc2U2NCBzdHJpbmcgZXZlcnkgNzIg Y2hhcmFjdGVycy4gdGhpcyBpbXByb3ZlcyBjb21wYXRhYmlsaXR5Cj4gKyAgICAgICAgICAgIGxl dCBiYXNlNjQgPSBiYXNlNjQ6OmVuY29kZShhdHRhY2htZW50LmNvbnRlbnQpCj4gKyAgICAgICAg ICAgICAgICAuY2hhcnMoKQo+ICsgICAgICAgICAgICAgICAgLmVudW1lcmF0ZSgpCj4gKyAgICAg ICAgICAgICAgICAuZmxhdF9tYXAofChpLCBjKXwgewo+ICsgICAgICAgICAgICAgICAgICAgIGlm IGkgIT0gMCAmJiBpICUgNzIgPT0gMCB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUo J1xuJykKPiArICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewo+ICsgICAgICAgICAgICAgICAg ICAgICAgICBOb25lCj4gKyAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAg ICAgIC5pbnRvX2l0ZXIoKQo+ICsgICAgICAgICAgICAgICAgICAgIC5jaGFpbihzdGQ6Oml0ZXI6 Om9uY2UoYykpCj4gKyAgICAgICAgICAgICAgICB9KQo+ICsgICAgICAgICAgICAgICAgLmNvbGxl Y3Q6OjxTdHJpbmc+KCk7Cj4gKyAgICAgICAgICAgIGJvZHkucHVzaF9zdHIoJmJhc2U2NCk7Cj4g KyAgICAgICAgfQo+ICsKPiArICAgICAgICBpZiAhc2VsZi5hdHRhY2htZW50cy5pc19lbXB0eSgp IHsKPiArICAgICAgICAgICAgYm9keS5wdXNoX3N0cigmZm9ybWF0ISgiXG4tLXtmaWxlX2JvdW5k YXJ5fS0tIikpOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgT2soYm9keSkKPiArICAgIH0K PiArfQo+ICsKPiArI1tjZmcodGVzdCldCj4gK21vZCB0ZXN0IHsKPiArICAgIHVzZSBzdXBlcjo6 KjsKPiArCj4gKyAgICAjW3Rlc3RdCj4gKyAgICBmbiBlbWFpbF93aXRob3V0X3JlY2lwaWVudHNf ZmFpbHMoKSB7Cj4gKyAgICAgICAgbGV0IHJlc3VsdCA9IE1haWw6Om5ldygiU2VuZGVyIiwgIm1h aWxAZXhhbXBsZS5jb20iLCAiaGkiLCAiYm9keSIpLnNlbmQoKTsKPiArICAgICAgICBhc3NlcnQh KHJlc3VsdC5pc19lcnIoKSk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgI1t0ZXN0XQo+ICsgICAgZm4g c2ltcGxlX2FzY2lpX3RleHRfbWFpbCgpIHsKPiArICAgICAgICBsZXQgbWFpbCA9IE1haWw6Om5l dygKPiArICAgICAgICAgICAgIlNlbmRlciBOYW1lIiwKPiArICAgICAgICAgICAgIm1haWxmcm9t QGV4YW1wbGUuY29tIiwKPiArICAgICAgICAgICAgIlN1YmplY3QgTGluZSIsCj4gKyAgICAgICAg ICAgICJUaGlzIGlzIGp1c3QgYXNjaWkgdGV4dC5cbk5vdGhpbmcgdG9vIHNwZWNpYWwuIiwKPiAr ICAgICAgICApCj4gKyAgICAgICAgLndpdGhfcmVjaXBpZW50X2FuZF9uYW1lKCJSZWNlaXZlciBO YW1lIiwgInJlY2VpdmVyQGV4YW1wbGUuY29tIik7Cj4gKwo+ICsgICAgICAgIGxldCBib2R5ID0g bWFpbC5mb3JtYXRfbWFpbCgwKS5leHBlY3QoImNvdWxkIG5vdCBmb3JtYXQgbWFpbCIpOwo+ICsK PiArICAgICAgICBhc3NlcnRfZXEhKAo+ICsgICAgICAgICAgICBib2R5LAo+ICsgICAgICAgICAg ICByIyJTdWJqZWN0OiBTdWJqZWN0IExpbmUKPiArRnJvbTogU2VuZGVyIE5hbWUgPG1haWxmcm9t QGV4YW1wbGUuY29tPgo+ICtUbzogUmVjZWl2ZXIgTmFtZSA8cmVjZWl2ZXJAZXhhbXBsZS5jb20+ Cj4gK0RhdGU6IFRodSwgMDEgSmFuIDE5NzAgMDE6MDA6MDAgKzAxMDAKPiArQXV0by1TdWJtaXR0 ZWQ6IGF1dG8tZ2VuZXJhdGVkOwo+ICtDb250ZW50LVR5cGU6IHRleHQvcGxhaW47Cj4gKwljaGFy c2V0PSJVVEYtOCIKPiArQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAo+ICsKPiArVGhp cyBpcyBqdXN0IGFzY2lpIHRleHQuCj4gK05vdGhpbmcgdG9vIHNwZWNpYWwuIiMKPiArICAgICAg ICApCj4gKyAgICB9Cj4gKwo+ICsgICAgI1t0ZXN0XQo+ICsgICAgZm4gbXVsdGlwbGVfcmVjZWl2 ZXJfcmVkYWN0aW9uKCkgewo+ICsgICAgICAgIGxldCBtYWlsID0gTWFpbDo6bmV3KAo+ICsgICAg ICAgICAgICAiU2VuZGVyIE5hbWUiLAo+ICsgICAgICAgICAgICAibWFpbGZyb21AZXhhbXBsZS5j b20iLAo+ICsgICAgICAgICAgICAiU3ViamVjdCBMaW5lIiwKPiArICAgICAgICAgICAgIlRoaXMg aXMganVzdCBhc2NpaSB0ZXh0LlxuTm90aGluZyB0b28gc3BlY2lhbC4iLAo+ICsgICAgICAgICkK PiArICAgICAgICAud2l0aF9yZWNpcGllbnRfYW5kX25hbWUoIlJlY2VpdmVyIE5hbWUiLCAicmVj ZWl2ZXJAZXhhbXBsZS5jb20iKQo+ICsgICAgICAgIC53aXRoX3JlY2lwaWVudCgidHdvQGV4YW1w bGUuY29tIik7Cj4gKwo+ICsgICAgICAgIGxldCBib2R5ID0gbWFpbC5mb3JtYXRfbWFpbCgwKS5l eHBlY3QoImNvdWxkIG5vdCBmb3JtYXQgbWFpbCIpOwo+ICsKPiArICAgICAgICBhc3NlcnRfZXEh KAo+ICsgICAgICAgICAgICBib2R5LAo+ICsgICAgICAgICAgICByIyJTdWJqZWN0OiBTdWJqZWN0 IExpbmUKPiArRnJvbTogU2VuZGVyIE5hbWUgPG1haWxmcm9tQGV4YW1wbGUuY29tPgo+ICtUbzog VW5kaXNjbG9zZWQgPG5vcmVwbHk+Cj4gK0RhdGU6IFRodSwgMDEgSmFuIDE5NzAgMDE6MDA6MDAg KzAxMDAKPiArQXV0by1TdWJtaXR0ZWQ6IGF1dG8tZ2VuZXJhdGVkOwo+ICtDb250ZW50LVR5cGU6 IHRleHQvcGxhaW47Cj4gKwljaGFyc2V0PSJVVEYtOCIKPiArQ29udGVudC1UcmFuc2Zlci1FbmNv ZGluZzogOGJpdAo+ICsKPiArVGhpcyBpcyBqdXN0IGFzY2lpIHRleHQuCj4gK05vdGhpbmcgdG9v IHNwZWNpYWwuIiMKPiArICAgICAgICApCj4gKyAgICB9Cj4gKwo+ICsgICAgI1t0ZXN0XQo+ICsg ICAgZm4gc2ltcGxlX3V0ZjhfdGV4dF9tYWlsKCkgewo+ICsgICAgICAgIGxldCBtYWlsID0gTWFp bDo6bmV3KAo+ICsgICAgICAgICAgICAiVVRGLTggU2VuZGVyIE5hbWUg8J+TpyIsCj4gKyAgICAg ICAgICAgICJkaWZmZXJlbnRmcm9tQGV4YW1wbGUuY29tIiwKPiArICAgICAgICAgICAgIlN1Ympl Y3QgTGluZSDwn6eRIiwKPiArICAgICAgICAgICAgIlRoaXMgdXRmLTggZW1haWwgc2hvdWxkIGhh bmRsZSBlbW9qaXNcbvCfp5Hwn5OnXG5hbmQgd2VpcmQgZ2VybWFuIGNoYXJhY3RlcnM6IMO2w6TD vMOfXG5hbmQgbW9yZS4iLAo+ICsgICAgICAgICkKPiArICAgICAgICAud2l0aF9yZWNpcGllbnRf YW5kX25hbWUoIlJlY2VpdmVyIE5hbWXwn5OpIiwgInJlY2VpdmVyQGV4YW1wbGUuY29tIik7Cj4g Kwo+ICsgICAgICAgIGxldCBib2R5ID0gbWFpbC5mb3JtYXRfbWFpbCgxNzMyODA2MjUxKS5leHBl Y3QoImNvdWxkIG5vdCBmb3JtYXQgbWFpbCIpOwo+ICsKPiArICAgICAgICBhc3NlcnRfZXEhKAo+ ICsgICAgICAgICAgICBib2R5LAo+ICsgICAgICAgICAgICByIyJNSU1FLVZlcnNpb246IDEuMAo+ ICtTdWJqZWN0OiA9P3V0Zi04P0I/VTNWaWFtVmpkQ0JNYVc1bElQQ2ZwNUU9Pz0KPiArRnJvbTog PT91dGYtOD9CP1ZWUkdMVGdnVTJWdVpHVnlJRTVoYldVZzhKK1Rwdz09Pz0gPGRpZmZlcmVudGZy b21AZXhhbXBsZS5jb20+Cj4gK1RvOiA9P3V0Zi04P0I/VW1WalpXbDJaWElnVG1GdFpmQ2ZrNms9 Pz0gPHJlY2VpdmVyQGV4YW1wbGUuY29tPgo+ICtEYXRlOiBUaHUsIDI4IE5vdiAyMDI0IDE2OjA0 OjExICswMTAwCj4gK0F1dG8tU3VibWl0dGVkOiBhdXRvLWdlbmVyYXRlZDsKPiArQ29udGVudC1U eXBlOiB0ZXh0L3BsYWluOwo+ICsJY2hhcnNldD0iVVRGLTgiCj4gK0NvbnRlbnQtVHJhbnNmZXIt RW5jb2Rpbmc6IDhiaXQKPiArCj4gK1RoaXMgdXRmLTggZW1haWwgc2hvdWxkIGhhbmRsZSBlbW9q aXMKPiAr8J+nkfCfk6cKPiArYW5kIHdlaXJkIGdlcm1hbiBjaGFyYWN0ZXJzOiDDtsOkw7zDnwo+ ICthbmQgbW9yZS4iIwo+ICsgICAgICAgICkKPiArICAgIH0KPiArCj4gKyAgICAjW3Rlc3RdCj4g KyAgICBmbiBtdWx0aXBhcnRfaHRtbF9hbHRlcm5hdGl2ZSgpIHsKPiArICAgICAgICBsZXQgbWFp bCA9IE1haWw6Om5ldygKPiArICAgICAgICAgICAgIlNlbmRlciBOYW1lIiwKPiArICAgICAgICAg ICAgImZyb21AZXhhbXBsZS5jb20iLAo+ICsgICAgICAgICAgICAiU3ViamVjdCBMaW5lIiwKPiAr ICAgICAgICAgICAgIkxvcmVtIElwc3VtIERvbG9yIFNpdFxuQW1ldCIsCj4gKyAgICAgICAgKQo+ ICsgICAgICAgIC53aXRoX3JlY2lwaWVudCgicmVjZWl2ZXJAZXhhbXBsZS5jb20iKQo+ICsgICAg ICAgIC53aXRoX2h0bWxfYWx0KCI8aHRtbCBsYW5nPVwiZGUtYXRcIj48aGVhZD48L2hlYWQ+PGJv ZHk+XG5cdDxwcmU+XG5cdFx0TG9yZW0gSXBzdW0gRG9sb3IgU2l0IEFtZXRcblx0PC9wcmU+XG48 L2JvZHk+PC9odG1sPiIpOwo+ICsgICAgICAgIGxldCBib2R5ID0gbWFpbC5mb3JtYXRfbWFpbCgx NzMyODA2MjUxKS5leHBlY3QoImNvdWxkIG5vdCBmb3JtYXQgbWFpbCIpOwo+ICsgICAgICAgIGFz c2VydF9lcSEoCj4gKyAgICAgICAgICAgIGJvZHksCj4gKyAgICAgICAgICAgIHIjIkNvbnRlbnQt VHlwZTogbXVsdGlwYXJ0L2FsdGVybmF0aXZlOwo+ICsJYm91bmRhcnk9Ii0tLS1fPV9OZXh0UGFy dF8wMDJfMTczMjgwNjI1MSIKPiArTUlNRS1WZXJzaW9uOiAxLjAKPiArU3ViamVjdDogU3ViamVj dCBMaW5lCj4gK0Zyb206IFNlbmRlciBOYW1lIDxmcm9tQGV4YW1wbGUuY29tPgo+ICtUbzogcmVj ZWl2ZXJAZXhhbXBsZS5jb20KPiArRGF0ZTogVGh1LCAyOCBOb3YgMjAyNCAxNjowNDoxMSArMDEw MAo+ICtBdXRvLVN1Ym1pdHRlZDogYXV0by1nZW5lcmF0ZWQ7Cj4gKwo+ICtUaGlzIGlzIGEgbXVs dGktcGFydCBtZXNzYWdlIGluIE1JTUUgZm9ybWF0Lgo+ICsKPiArLS0tLS0tXz1fTmV4dFBhcnRf MDAyXzE3MzI4MDYyNTEKPiArQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOwo+ICsJY2hhcnNldD0i VVRGLTgiCj4gK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKPiArCj4gK0xvcmVtIElw c3VtIERvbG9yIFNpdAo+ICtBbWV0Cj4gKy0tLS0tLV89X05leHRQYXJ0XzAwMl8xNzMyODA2MjUx Cj4gK0NvbnRlbnQtVHlwZTogdGV4dC9odG1sOwo+ICsJY2hhcnNldD0iVVRGLTgiCj4gK0NvbnRl bnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKPiArCj4gKzxodG1sIGxhbmc9ImRlLWF0Ij48aGVh ZD48L2hlYWQ+PGJvZHk+Cj4gKwk8cHJlPgo+ICsJCUxvcmVtIElwc3VtIERvbG9yIFNpdCBBbWV0 Cj4gKwk8L3ByZT4KPiArPC9ib2R5PjwvaHRtbD4KPiArLS0tLS0tXz1fTmV4dFBhcnRfMDAyXzE3 MzI4MDYyNTEtLSIjCj4gKyAgICAgICAgKQo+ICsgICAgfQo+ICsKPiArICAgICNbdGVzdF0KPiAr ICAgIGZuIG11bHRpcGFydF9wbGFpbl90ZXh0X2F0dGFjaG1lbnRzX21peGVkKCkgewo+ICsgICAg ICAgIGxldCBiaW46IFt1ODsgNjJdID0gWwo+ICsgICAgICAgICAgICAweGRlLCAweGFkLCAweGJl LCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAweGVmLCAw eGRlLCAweGFkLAo+ICsgICAgICAgICAgICAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAw eGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLAo+ICsg ICAgICAgICAgICAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAweGVm LCAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLAo+ICsgICAgICAgICAgICAweGRl LCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAw eGJlLCAweGVmLCAweGRlLCAweGFkLAo+ICsgICAgICAgICAgICAweGJlLCAweGVmLCAweGRlLCAw eGFkLCAweGJlLCAweGVmLAo+ICsgICAgICAgIF07Cj4gKwo+ICsgICAgICAgIGxldCBtYWlsID0g TWFpbDo6bmV3KAo+ICsgICAgICAgICAgICAiU2VuZGVyIE5hbWUiLAo+ICsgICAgICAgICAgICAi ZnJvbUBleGFtcGxlLmNvbSIsCj4gKyAgICAgICAgICAgICJTdWJqZWN0IExpbmUiLAo+ICsgICAg ICAgICAgICAiTG9yZW0gSXBzdW0gRG9sb3IgU2l0XG5BbWV0IiwKPiArICAgICAgICApCj4gKyAg ICAgICAgLndpdGhfcmVjaXBpZW50X2FuZF9uYW1lKCJSZWNlaXZlciBOYW1lIiwgInJlY2VpdmVy QGV4YW1wbGUuY29tIikKPiArICAgICAgICAud2l0aF9hdHRhY2htZW50KCJkZWFkYmVlZi5iaW4i LCAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwgJmJpbik7Cj4gKwo+ICsgICAgICAgIGxldCBi b2R5ID0gbWFpbC5mb3JtYXRfbWFpbCgxNzMyODA2MjUxKS5leHBlY3QoImNvdWxkIG5vdCBmb3Jt YXQgbWFpbCIpOwo+ICsgICAgICAgIGFzc2VydF9lcSEoCj4gKyAgICAgICAgICAgIGJvZHksCj4g KyAgICAgICAgICAgIHIjIkNvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L21peGVkOwo+ICsJYm91bmRh cnk9Ii0tLS1fPV9OZXh0UGFydF8wMDFfMTczMjgwNjI1MSIKPiArTUlNRS1WZXJzaW9uOiAxLjAK PiArU3ViamVjdDogU3ViamVjdCBMaW5lCj4gK0Zyb206IFNlbmRlciBOYW1lIDxmcm9tQGV4YW1w bGUuY29tPgo+ICtUbzogUmVjZWl2ZXIgTmFtZSA8cmVjZWl2ZXJAZXhhbXBsZS5jb20+Cj4gK0Rh dGU6IFRodSwgMjggTm92IDIwMjQgMTY6MDQ6MTEgKzAxMDAKPiArQXV0by1TdWJtaXR0ZWQ6IGF1 dG8tZ2VuZXJhdGVkOwo+ICsKPiArVGhpcyBpcyBhIG11bHRpLXBhcnQgbWVzc2FnZSBpbiBNSU1F IGZvcm1hdC4KPiArCj4gKy0tLS0tLV89X05leHRQYXJ0XzAwMV8xNzMyODA2MjUxCj4gK0NvbnRl bnQtVHlwZTogdGV4dC9wbGFpbjsKPiArCWNoYXJzZXQ9IlVURi04Igo+ICtDb250ZW50LVRyYW5z ZmVyLUVuY29kaW5nOiA4Yml0Cj4gKwo+ICtMb3JlbSBJcHN1bSBEb2xvciBTaXQKPiArQW1ldAo+ ICstLS0tLS1fPV9OZXh0UGFydF8wMDFfMTczMjgwNjI1MQo+ICtDb250ZW50LVR5cGU6IGFwcGxp Y2F0aW9uL29jdGV0LXN0cmVhbTsgbmFtZT0iZGVhZGJlZWYuYmluIgo+ICtDb250ZW50LURpc3Bv c2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0iZGVhZGJlZWYuYmluIjsgZmlsZW5hbWUqPVVU Ri04JydkZWFkYmVlZi5iaW4KPiArQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0Cj4g Kwo+ICszcTIrNzk2dHZ1L2VyYjd2M3EzZXJiN3YzcTIrNzk2dHZ1L2VyZDZ0dnUvZXJiN3YzcTIr Nzk2dDNxMis3OTZ0dnUvZXJiN3YKPiArM3EyKzc5NnR2dTg9Cj4gKy0tLS0tLV89X05leHRQYXJ0 XzAwMV8xNzMyODA2MjUxLS0iIwo+ICsgICAgICAgICkKPiArICAgIH0KPiArCj4gKyAgICAjW3Rl c3RdCj4gKyAgICBmbiBtdWx0aXBhcnRfcGxhaW5fdGV4dF9odG1sX2FsdGVybmF0aXZlX2F0dGFj aG1lbnRzKCkgewo+ICsgICAgICAgIGxldCBiaW46IFt1ODsgNjJdID0gWwo+ICsgICAgICAgICAg ICAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAw eGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLAo+ICsgICAgICAgICAgICAweGRlLCAweGFkLCAw eGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAweGVm LCAweGRlLCAweGFkLAo+ICsgICAgICAgICAgICAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRl LCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLAo+ ICsgICAgICAgICAgICAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAw eGVmLCAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLAo+ICsgICAgICAgICAgICAw eGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAweGVmLAo+ICsgICAgICAgIF07Cj4gKwo+ICsg ICAgICAgIGxldCBtYWlsID0gTWFpbDo6bmV3KAo+ICsgICAgICAgICAgICAiU2VuZGVyIE5hbWUi LAo+ICsgICAgICAgICAgICAiZnJvbUBleGFtcGxlLmNvbSIsCj4gKyAgICAgICAgICAgICJTdWJq ZWN0IExpbmUiLAo+ICsgICAgICAgICAgICAiTG9yZW0gSXBzdW0gRG9sb3IgU2l0XG5BbWV0IiwK PiArICAgICAgICApCj4gKyAgICAgICAgLndpdGhfcmVjaXBpZW50X2FuZF9uYW1lKCJSZWNlaXZl ciBOYW1lIiwgInJlY2VpdmVyQGV4YW1wbGUuY29tIikKPiArICAgICAgICAud2l0aF9hdHRhY2ht ZW50KCJkZWFkYmVlZi5iaW4iLCAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwgJmJpbikKPiAr ICAgICAgICAud2l0aF9hdHRhY2htZW50KCLwn5CE8J+SgC5iaW4iLCAiaW1hZ2UvYm1wIiwgJmJp bikKPiArICAgICAgICAud2l0aF9odG1sX2FsdCgiPGh0bWwgbGFuZz1cImRlLWF0XCI+PGhlYWQ+ PC9oZWFkPjxib2R5PlxuXHQ8cHJlPlxuXHRcdExvcmVtIElwc3VtIERvbG9yIFNpdCBBbWV0XG5c dDwvcHJlPlxuPC9ib2R5PjwvaHRtbD4iKTsKPiArCj4gKyAgICAgICAgbGV0IGJvZHkgPSBtYWls LmZvcm1hdF9tYWlsKDE3MzI4MDYyNTEpLmV4cGVjdCgiY291bGQgbm90IGZvcm1hdCBtYWlsIik7 Cj4gKwo+ICsgICAgICAgIGFzc2VydF9lcSEoCj4gKyAgICAgICAgICAgIGJvZHksCj4gKyAgICAg ICAgICAgIHIjIkNvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L21peGVkOwo+ICsJYm91bmRhcnk9Ii0t LS1fPV9OZXh0UGFydF8wMDFfMTczMjgwNjI1MSIKPiArTUlNRS1WZXJzaW9uOiAxLjAKPiArU3Vi amVjdDogU3ViamVjdCBMaW5lCj4gK0Zyb206IFNlbmRlciBOYW1lIDxmcm9tQGV4YW1wbGUuY29t Pgo+ICtUbzogUmVjZWl2ZXIgTmFtZSA8cmVjZWl2ZXJAZXhhbXBsZS5jb20+Cj4gK0RhdGU6IFRo dSwgMjggTm92IDIwMjQgMTY6MDQ6MTEgKzAxMDAKPiArQXV0by1TdWJtaXR0ZWQ6IGF1dG8tZ2Vu ZXJhdGVkOwo+ICsKPiArVGhpcyBpcyBhIG11bHRpLXBhcnQgbWVzc2FnZSBpbiBNSU1FIGZvcm1h dC4KPiArCj4gKy0tLS0tLV89X05leHRQYXJ0XzAwMV8xNzMyODA2MjUxCj4gK0NvbnRlbnQtVHlw ZTogbXVsdGlwYXJ0L2FsdGVybmF0aXZlOyBib3VuZGFyeT0iLS0tLV89X05leHRQYXJ0XzAwMl8x NzMyODA2MjUxIgo+ICtNSU1FLVZlcnNpb246IDEuMAo+ICsKPiArLS0tLS0tXz1fTmV4dFBhcnRf MDAyXzE3MzI4MDYyNTEKPiArQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOwo+ICsJY2hhcnNldD0i VVRGLTgiCj4gK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKPiArCj4gK0xvcmVtIElw c3VtIERvbG9yIFNpdAo+ICtBbWV0Cj4gKy0tLS0tLV89X05leHRQYXJ0XzAwMl8xNzMyODA2MjUx Cj4gK0NvbnRlbnQtVHlwZTogdGV4dC9odG1sOwo+ICsJY2hhcnNldD0iVVRGLTgiCj4gK0NvbnRl bnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKPiArCj4gKzxodG1sIGxhbmc9ImRlLWF0Ij48aGVh ZD48L2hlYWQ+PGJvZHk+Cj4gKwk8cHJlPgo+ICsJCUxvcmVtIElwc3VtIERvbG9yIFNpdCBBbWV0 Cj4gKwk8L3ByZT4KPiArPC9ib2R5PjwvaHRtbD4KPiArLS0tLS0tXz1fTmV4dFBhcnRfMDAyXzE3 MzI4MDYyNTEtLQo+ICstLS0tLS1fPV9OZXh0UGFydF8wMDFfMTczMjgwNjI1MQo+ICtDb250ZW50 LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTsgbmFtZT0iZGVhZGJlZWYuYmluIgo+ICtD b250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0iZGVhZGJlZWYuYmluIjsg ZmlsZW5hbWUqPVVURi04JydkZWFkYmVlZi5iaW4KPiArQ29udGVudC1UcmFuc2Zlci1FbmNvZGlu ZzogYmFzZTY0Cj4gKwo+ICszcTIrNzk2dHZ1L2VyYjd2M3EzZXJiN3YzcTIrNzk2dHZ1L2VyZDZ0 dnUvZXJiN3YzcTIrNzk2dDNxMis3OTZ0dnUvZXJiN3YKPiArM3EyKzc5NnR2dTg9Cj4gKy0tLS0t LV89X05leHRQYXJ0XzAwMV8xNzMyODA2MjUxCj4gK0NvbnRlbnQtVHlwZTogaW1hZ2UvYm1wOyBu YW1lPSLwn5CE8J+SgC5iaW4iCj4gK0NvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZp bGVuYW1lPSLwn5CE8J+SgC5iaW4iOyBmaWxlbmFtZSo9VVRGLTgnJyVGMCU5RiU5MCU4NCVGMCU5 RiU5MiU4MC5iaW4KPiArQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0Cj4gKwo+ICsz cTIrNzk2dHZ1L2VyYjd2M3EzZXJiN3YzcTIrNzk2dHZ1L2VyZDZ0dnUvZXJiN3YzcTIrNzk2dDNx Mis3OTZ0dnUvZXJiN3YKPiArM3EyKzc5NnR2dTg9Cj4gKy0tLS0tLV89X05leHRQYXJ0XzAwMV8x NzMyODA2MjUxLS0iIwo+ICsgICAgICAgICkKPiArICAgIH0KPiArCj4gKyAgICAjW3Rlc3RdCj4g KyAgICBmbiB0ZXN0X2Zvcm1hdF9tYWlsX211bHRpcGFydCgpIHsKPiArICAgICAgICBsZXQgbWFp bCA9IE1haWw6Om5ldygKPiArICAgICAgICAgICAgIkZyZWQgT29iYXIiLAo+ICsgICAgICAgICAg ICAiZm9vYmFyQGV4YW1wbGUuY29tIiwKPiArICAgICAgICAgICAgIlRoaXMgaXMgdGhlIHN1Ympl Y3QiLAo+ICsgICAgICAgICAgICAiVGhpcyBpcyB0aGUgcGxhaW4gYm9keSIsCj4gKyAgICAgICAg KQo+ICsgICAgICAgIC53aXRoX3JlY2lwaWVudF9hbmRfbmFtZSgiVG9ueSBFc3QiLCAidGVzdEBl eGFtcGxlLmNvbSIpCj4gKyAgICAgICAgLndpdGhfaHRtbF9hbHQoIjxib2R5PlRoaXMgaXMgdGhl IEhUTUwgYm9keTwvYm9keT4iKTsKPiArCj4gKyAgICAgICAgbGV0IGJvZHkgPSBtYWlsLmZvcm1h dF9tYWlsKDE3MTg5Nzc4NTApLmV4cGVjdCgiY291bGQgbm90IGZvcm1hdCBtYWlsIik7Cj4gKwo+ ICsgICAgICAgIGFzc2VydF9lcSEoCj4gKyAgICAgICAgICAgIGJvZHksCj4gKyAgICAgICAgICAg IHIjIkNvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L2FsdGVybmF0aXZlOwo+ICsJYm91bmRhcnk9Ii0t LS1fPV9OZXh0UGFydF8wMDJfMTcxODk3Nzg1MCIKPiArTUlNRS1WZXJzaW9uOiAxLjAKPiArU3Vi amVjdDogVGhpcyBpcyB0aGUgc3ViamVjdAo+ICtGcm9tOiBGcmVkIE9vYmFyIDxmb29iYXJAZXhh bXBsZS5jb20+Cj4gK1RvOiBUb255IEVzdCA8dGVzdEBleGFtcGxlLmNvbT4KPiArRGF0ZTogRnJp LCAyMSBKdW4gMjAyNCAxNTo1MDo1MCArMDIwMAo+ICtBdXRvLVN1Ym1pdHRlZDogYXV0by1nZW5l cmF0ZWQ7Cj4gKwo+ICtUaGlzIGlzIGEgbXVsdGktcGFydCBtZXNzYWdlIGluIE1JTUUgZm9ybWF0 Lgo+ICsKPiArLS0tLS0tXz1fTmV4dFBhcnRfMDAyXzE3MTg5Nzc4NTAKPiArQ29udGVudC1UeXBl OiB0ZXh0L3BsYWluOwo+ICsJY2hhcnNldD0iVVRGLTgiCj4gK0NvbnRlbnQtVHJhbnNmZXItRW5j b2Rpbmc6IDhiaXQKPiArCj4gK1RoaXMgaXMgdGhlIHBsYWluIGJvZHkKPiArLS0tLS0tXz1fTmV4 dFBhcnRfMDAyXzE3MTg5Nzc4NTAKPiArQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7Cj4gKwljaGFy c2V0PSJVVEYtOCIKPiArQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAo+ICsKPiArPGJv ZHk+VGhpcyBpcyB0aGUgSFRNTCBib2R5PC9ib2R5Pgo+ICstLS0tLS1fPV9OZXh0UGFydF8wMDJf MTcxODk3Nzg1MC0tIiMKPiArICAgICAgICApOwo+ICsgICAgfQo+ICt9CgoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnBicy1kZXZlbCBtYWlsaW5nIGxp c3QKcGJzLWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8vbGlzdHMucHJveG1veC5jb20v Y2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3Bicy1kZXZlbAo=