From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <pve-devel-bounces@lists.proxmox.com> Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 7879D1FF164 for <inbox@lore.proxmox.com>; Fri, 14 Feb 2025 14:41:13 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 8B04B1AF71; Fri, 14 Feb 2025 14:40:36 +0100 (CET) From: Gabriel Goller <g.goller@proxmox.com> To: pve-devel@lists.proxmox.com Date: Fri, 14 Feb 2025 14:39:42 +0100 Message-Id: <20250214133951.344500-3-g.goller@proxmox.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250214133951.344500-1-g.goller@proxmox.com> References: <20250214133951.344500-1-g.goller@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.031 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: [pve-devel] [PATCH proxmox-ve-rs 02/11] add proxmox-frr crate with frr types X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion <pve-devel.lists.proxmox.com> List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe> List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/> List-Post: <mailto:pve-devel@lists.proxmox.com> List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help> List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe> Reply-To: Proxmox VE development discussion <pve-devel@lists.proxmox.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com> VGhpcyBjcmF0ZSBjb250YWlucyB0eXBlcyB0aGF0IHJlcHJlc2VudCB0aGUgZnJyIGNvbmZpZy4g Rm9yIGV4YW1wbGUgaXQKY29udGFpbnMgYSBgUm91dGVyYCBhbmQgYEludGVyZmFjZWAgc3RydWN0 LiBUaGlzIEZyci1SZXByZXNlbnRhdGlvbiBjYW4KdGhlbiBiZSBjb252ZXJ0ZWQgdG8gdGhlIHJl YWwgZnJyIGNvbmZpZy4KCkNvLWF1dGhvcmVkLWJ5OiBTdGVmYW4gSGFucmVpY2ggPHMuaGFucmVp Y2hAcHJveG1veC5jb20+ClNpZ25lZC1vZmYtYnk6IEdhYnJpZWwgR29sbGVyIDxnLmdvbGxlckBw cm94bW94LmNvbT4KLS0tCiBDYXJnby50b21sICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBw cm94bW94LWZyci9DYXJnby50b21sICAgICAgICB8ICAyNSArKysrCiBwcm94bW94LWZyci9zcmMv Y29tbW9uLnJzICAgICB8ICA1NCArKysrKysrKwogcHJveG1veC1mcnIvc3JjL2xpYi5ycyAgICAg ICAgfCAyMjMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogcHJveG1veC1mcnIv c3JjL29wZW5mYWJyaWMucnMgfCAxMzcgKysrKysrKysrKysrKysrKysrKysrCiBwcm94bW94LWZy ci9zcmMvb3NwZi5ycyAgICAgICB8IDE0OCArKysrKysrKysrKysrKysrKysrKysrCiA2IGZpbGVz IGNoYW5nZWQsIDU4OCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgcHJveG1veC1m cnIvQ2FyZ28udG9tbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHByb3htb3gtZnJyL3NyYy9jb21tb24u cnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwcm94bW94LWZyci9zcmMvbGliLnJzCiBjcmVhdGUgbW9k ZSAxMDA2NDQgcHJveG1veC1mcnIvc3JjL29wZW5mYWJyaWMucnMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBwcm94bW94LWZyci9zcmMvb3NwZi5ycwoKZGlmZiAtLWdpdCBhL0NhcmdvLnRvbWwgYi9DYXJn by50b21sCmluZGV4IGU0NTJjOTMxZTc4Yy4uZmZkYTEyMzNiMTdhIDEwMDY0NAotLS0gYS9DYXJn by50b21sCisrKyBiL0NhcmdvLnRvbWwKQEAgLTEsNiArMSw3IEBACiBbd29ya3NwYWNlXQogbWVt YmVycyA9IFsKICAgICAicHJveG1veC12ZS1jb25maWciLAorICAgICJwcm94bW94LWZyciIsCiAg ICAgInByb3htb3gtbmV0d29yay10eXBlcyIsCiBdCiBleGNsdWRlID0gWwpkaWZmIC0tZ2l0IGEv cHJveG1veC1mcnIvQ2FyZ28udG9tbCBiL3Byb3htb3gtZnJyL0NhcmdvLnRvbWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iZWE4YTBmOGJhYjMKLS0tIC9kZXYvbnVs bAorKysgYi9wcm94bW94LWZyci9DYXJnby50b21sCkBAIC0wLDAgKzEsMjUgQEAKK1twYWNrYWdl XQorbmFtZSA9ICJwcm94bW94LWZyciIKK3ZlcnNpb24gPSAiMC4xLjAiCithdXRob3JzLndvcmtz cGFjZSA9IHRydWUKK2VkaXRpb24ud29ya3NwYWNlID0gdHJ1ZQorbGljZW5zZS53b3Jrc3BhY2Ug PSB0cnVlCitob21lcGFnZS53b3Jrc3BhY2UgPSB0cnVlCitleGNsdWRlLndvcmtzcGFjZSA9IHRy dWUKK3J1c3QtdmVyc2lvbi53b3Jrc3BhY2UgPSB0cnVlCisKK1tkZXBlbmRlbmNpZXNdCit0aGlz ZXJyb3IgPSB7IHdvcmtzcGFjZSA9IHRydWUgfQorYW55aG93ID0gIjEiCit0cmFjaW5nID0gIjAu MSIKKworc2VyZGUgPSB7IHdvcmtzcGFjZSA9IHRydWUsIGZlYXR1cmVzID0gWyAiZGVyaXZlIiBd IH0KK3NlcmRlX3dpdGggPSB7IHdvcmtzcGFjZSA9IHRydWUgfQoraXRvYSA9ICIxLjAuOSIKKwor cHJveG1veC12ZS1jb25maWcgPSB7IHBhdGggPSAiLi4vcHJveG1veC12ZS1jb25maWciLCBvcHRp b25hbCA9IHRydWUgfQorcHJveG1veC1zZWN0aW9uLWNvbmZpZyA9IHsgd29ya3NwYWNlID0gdHJ1 ZSwgb3B0aW9uYWwgPSB0cnVlIH0KK3Byb3htb3gtbmV0d29yay10eXBlcyA9IHsgcGF0aCA9ICIu Li9wcm94bW94LW5ldHdvcmstdHlwZXMvIiB9CisKK1tmZWF0dXJlc10KK2NvbmZpZy1leHQgPSBb ImRlcDpwcm94bW94LXZlLWNvbmZpZyIsICJkZXA6cHJveG1veC1zZWN0aW9uLWNvbmZpZyIgXQpk aWZmIC0tZ2l0IGEvcHJveG1veC1mcnIvc3JjL2NvbW1vbi5ycyBiL3Byb3htb3gtZnJyL3NyYy9j b21tb24ucnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wZDk5YmI0 ZGE2ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9wcm94bW94LWZyci9zcmMvY29tbW9uLnJzCkBAIC0w LDAgKzEsNTQgQEAKK3VzZSBzdGQ6OntmbXQ6OkRpc3BsYXksIHN0cjo6RnJvbVN0cn07CisKK3Vz ZSBzZXJkZV93aXRoOjp7RGVzZXJpYWxpemVGcm9tU3RyLCBTZXJpYWxpemVEaXNwbGF5fTsKK3Vz ZSB0aGlzZXJyb3I6OkVycm9yOworCisjW2Rlcml2ZShFcnJvciwgRGVidWcpXQorcHViIGVudW0g RnJyV29yZEVycm9yIHsKKyAgICAjW2Vycm9yKCJ3b3JkIGlzIGVtcHR5IildCisgICAgSXNFbXB0 eSwKKyAgICAjW2Vycm9yKCJ3b3JkIGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVyIildCisgICAg SW52YWxpZENoYXJhY3RlciwKK30KKworI1tkZXJpdmUoQ2xvbmUsIERlYnVnLCBQYXJ0aWFsRXEs IEVxLCBIYXNoLCBEZXNlcmlhbGl6ZUZyb21TdHIsIFNlcmlhbGl6ZURpc3BsYXkpXQorcHViIHN0 cnVjdCBGcnJXb3JkKFN0cmluZyk7CisKK2ltcGwgRnJyV29yZCB7CisgICAgcHViIGZuIG5ldyhu YW1lOiBTdHJpbmcpIC0+IFJlc3VsdDxTZWxmLCBGcnJXb3JkRXJyb3I+IHsKKyAgICAgICAgaWYg bmFtZS5pc19lbXB0eSgpIHsKKyAgICAgICAgICAgIHJldHVybiBFcnIoRnJyV29yZEVycm9yOjpJ c0VtcHR5KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIG5hbWUKKyAgICAgICAgICAgIC5hc19i eXRlcygpCisgICAgICAgICAgICAuaXRlcigpCisgICAgICAgICAgICAuYW55KHxjfCAhYy5pc19h c2NpaSgpIHx8IGMuaXNfYXNjaWlfd2hpdGVzcGFjZSgpKQorICAgICAgICB7CisgICAgICAgICAg ICByZXR1cm4gRXJyKEZycldvcmRFcnJvcjo6SW52YWxpZENoYXJhY3Rlcik7CisgICAgICAgIH0K KworICAgICAgICBPayhTZWxmKG5hbWUpKQorICAgIH0KK30KKworaW1wbCBGcm9tU3RyIGZvciBG cnJXb3JkIHsKKyAgICB0eXBlIEVyciA9IEZycldvcmRFcnJvcjsKKworICAgIGZuIGZyb21fc3Ry KHM6ICZzdHIpIC0+IFJlc3VsdDxTZWxmLCBTZWxmOjpFcnI+IHsKKyAgICAgICAgRnJyV29yZDo6 bmV3KHMudG9fc3RyaW5nKCkpCisgICAgfQorfQorCitpbXBsIERpc3BsYXkgZm9yIEZycldvcmQg eworICAgIGZuIGZtdCgmc2VsZiwgZjogJm11dCBzdGQ6OmZtdDo6Rm9ybWF0dGVyPCdfPikgLT4g c3RkOjpmbXQ6OlJlc3VsdCB7CisgICAgICAgIHNlbGYuMC5mbXQoZikKKyAgICB9Cit9CisKK2lt cGwgQXNSZWY8c3RyPiBmb3IgRnJyV29yZCB7CisgICAgZm4gYXNfcmVmKCZzZWxmKSAtPiAmc3Ry IHsKKyAgICAgICAgJnNlbGYuMAorICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvcHJveG1veC1mcnIv c3JjL2xpYi5ycyBiL3Byb3htb3gtZnJyL3NyYy9saWIucnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwLi5jZWVmODI5OTk2MTkKLS0tIC9kZXYvbnVsbAorKysgYi9wcm94 bW94LWZyci9zcmMvbGliLnJzCkBAIC0wLDAgKzEsMjIzIEBACitwdWIgbW9kIGNvbW1vbjsKK3B1 YiBtb2Qgb3BlbmZhYnJpYzsKK3B1YiBtb2Qgb3NwZjsKKwordXNlIHN0ZDo6e2NvbGxlY3Rpb25z Ojp7aGFzaF9tYXA6OkVudHJ5LCBIYXNoTWFwfSwgZm10OjpEaXNwbGF5LCBzdHI6OkZyb21TdHJ9 OworCit1c2UgY29tbW9uOjp7RnJyV29yZCwgRnJyV29yZEVycm9yfTsKK3VzZSBwcm94bW94X3Zl X2NvbmZpZzo6c2RuOjpmYWJyaWM6OmNvbW1vbjo6SG9zdG5hbWU7CisjW2NmZyhmZWF0dXJlID0g ImNvbmZpZy1leHQiKV0KK3VzZSBwcm94bW94X3ZlX2NvbmZpZzo6c2RuOjpmYWJyaWM6OkZhYnJp Y0NvbmZpZzsKKwordXNlIHNlcmRlOjp7RGVzZXJpYWxpemUsIFNlcmlhbGl6ZX07Cit1c2Ugc2Vy ZGVfd2l0aDo6e0Rlc2VyaWFsaXplRnJvbVN0ciwgU2VyaWFsaXplRGlzcGxheX07Cit1c2UgdGhp c2Vycm9yOjpFcnJvcjsKKworI1tkZXJpdmUoRXJyb3IsIERlYnVnKV0KK3B1YiBlbnVtIFJvdXRl ck5hbWVFcnJvciB7CisgICAgI1tlcnJvcigiaW52YWxpZCBuYW1lIildCisgICAgSW52YWxpZE5h bWUsCisgICAgI1tlcnJvcigiaW52YWxpZCBmcnIgd29yZCIpXQorICAgIEZycldvcmRFcnJvcigj W2Zyb21dIEZycldvcmRFcnJvciksCit9CisKKyNbZGVyaXZlKENsb25lLCBEZWJ1ZywgUGFydGlh bEVxLCBFcSwgSGFzaCwgRGVzZXJpYWxpemUsIFNlcmlhbGl6ZSldCitwdWIgZW51bSBSb3V0ZXIg eworICAgIE9wZW5GYWJyaWMob3BlbmZhYnJpYzo6T3BlbkZhYnJpY1JvdXRlciksCisgICAgT3Nw Zihvc3BmOjpPc3BmUm91dGVyKSwKK30KKworaW1wbCBGcm9tPG9wZW5mYWJyaWM6Ok9wZW5GYWJy aWNSb3V0ZXI+IGZvciBSb3V0ZXIgeworICAgIGZuIGZyb20odmFsdWU6IG9wZW5mYWJyaWM6Ok9w ZW5GYWJyaWNSb3V0ZXIpIC0+IFNlbGYgeworICAgICAgICBSb3V0ZXI6Ok9wZW5GYWJyaWModmFs dWUpCisgICAgfQorfQorCisjW2Rlcml2ZShDbG9uZSwgRGVidWcsIFBhcnRpYWxFcSwgRXEsIEhh c2gsIERlc2VyaWFsaXplRnJvbVN0ciwgU2VyaWFsaXplRGlzcGxheSldCitwdWIgZW51bSBSb3V0 ZXJOYW1lIHsKKyAgICBPcGVuRmFicmljKG9wZW5mYWJyaWM6Ok9wZW5GYWJyaWNSb3V0ZXJOYW1l KSwKKyAgICBPc3BmKG9zcGY6Ok9zcGZSb3V0ZXJOYW1lKSwKK30KKworaW1wbCBGcm9tPG9wZW5m YWJyaWM6Ok9wZW5GYWJyaWNSb3V0ZXJOYW1lPiBmb3IgUm91dGVyTmFtZSB7CisgICAgZm4gZnJv bSh2YWx1ZTogb3BlbmZhYnJpYzo6T3BlbkZhYnJpY1JvdXRlck5hbWUpIC0+IFNlbGYgeworICAg ICAgICBTZWxmOjpPcGVuRmFicmljKHZhbHVlKQorICAgIH0KK30KKworaW1wbCBEaXNwbGF5IGZv ciBSb3V0ZXJOYW1lIHsKKyAgICBmbiBmbXQoJnNlbGYsIGY6ICZtdXQgc3RkOjpmbXQ6OkZvcm1h dHRlcjwnXz4pIC0+IHN0ZDo6Zm10OjpSZXN1bHQgeworICAgICAgICBtYXRjaCBzZWxmIHsKKyAg ICAgICAgICAgIFNlbGY6Ok9wZW5GYWJyaWMocikgPT4gci5mbXQoZiksCisgICAgICAgICAgICBT ZWxmOjpPc3BmKHIpID0+IHIuZm10KGYpLAorICAgICAgICB9CisgICAgfQorfQorCitpbXBsIEZy b21TdHIgZm9yIFJvdXRlck5hbWUgeworICAgIHR5cGUgRXJyID0gUm91dGVyTmFtZUVycm9yOwor CisgICAgZm4gZnJvbV9zdHIoczogJnN0cikgLT4gUmVzdWx0PFNlbGYsIFNlbGY6OkVycj4gewor ICAgICAgICBpZiBsZXQgT2socm91dGVyKSA9IHMucGFyc2UoKSB7CisgICAgICAgICAgICByZXR1 cm4gT2soU2VsZjo6T3BlbkZhYnJpYyhyb3V0ZXIpKTsKKyAgICAgICAgfQorCisgICAgICAgIEVy cihSb3V0ZXJOYW1lRXJyb3I6OkludmFsaWROYW1lKQorICAgIH0KK30KKworLy8vIFRoZSBpbnRl cmZhY2UgbmFtZSBpcyB0aGUgc2FtZSBvbiBvc3BmIGFuZCBvcGVuZmFicmljLCBidXQgaXQgaXMg YW4gZW51bSBzbyB3ZSBjYW4gaGF2ZSB0d28KKy8vLyBkaWZmZXJlbnQgZW50cmllcyBpbiB0aGUg aGFzaG1hcC4gVGhpcyBhbGxvd3MgdXMgdG8gaGF2ZSBhbiBpbnRlcmZhY2UgaW4gYW4gb3NwZiBh bmQgb3BlbmZhYnJpYworLy8vIGZhYnJpYy4KKyNbZGVyaXZlKENsb25lLCBEZWJ1ZywgUGFydGlh bEVxLCBFcSwgRGVzZXJpYWxpemUsIFNlcmlhbGl6ZSwgSGFzaCldCitwdWIgZW51bSBJbnRlcmZh Y2VOYW1lIHsKKyAgICBPcGVuRmFicmljKEZycldvcmQpLAorICAgIE9zcGYoRnJyV29yZCksCit9 CisKK2ltcGwgRGlzcGxheSBmb3IgSW50ZXJmYWNlTmFtZSB7CisgICAgZm4gZm10KCZzZWxmLCBm OiAmbXV0IHN0ZDo6Zm10OjpGb3JtYXR0ZXI8J18+KSAtPiBzdGQ6OmZtdDo6UmVzdWx0IHsKKyAg ICAgICAgbWF0Y2ggc2VsZiB7CisgICAgICAgICAgICBJbnRlcmZhY2VOYW1lOjpPcGVuRmFicmlj KGZycl93b3JkKSA9PiBmcnJfd29yZC5mbXQoZiksCisgICAgICAgICAgICBJbnRlcmZhY2VOYW1l OjpPc3BmKGZycl93b3JkKSA9PiBmcnJfd29yZC5mbXQoZiksCisgICAgICAgIH0KKyAgICAgICAg CisgICAgfQorfQorCisjW2Rlcml2ZShDbG9uZSwgRGVidWcsIFBhcnRpYWxFcSwgRXEsIERlc2Vy aWFsaXplLCBTZXJpYWxpemUpXQorcHViIGVudW0gSW50ZXJmYWNlIHsKKyAgICBPcGVuRmFicmlj KG9wZW5mYWJyaWM6Ok9wZW5GYWJyaWNJbnRlcmZhY2UpLAorICAgIE9zcGYob3NwZjo6T3NwZklu dGVyZmFjZSksCit9CisKK2ltcGwgRnJvbTxvcGVuZmFicmljOjpPcGVuRmFicmljSW50ZXJmYWNl PiBmb3IgSW50ZXJmYWNlIHsKKyAgICBmbiBmcm9tKHZhbHVlOiBvcGVuZmFicmljOjpPcGVuRmFi cmljSW50ZXJmYWNlKSAtPiBTZWxmIHsKKyAgICAgICAgU2VsZjo6T3BlbkZhYnJpYyh2YWx1ZSkK KyAgICB9Cit9CisKK2ltcGwgRnJvbTxvc3BmOjpPc3BmSW50ZXJmYWNlPiBmb3IgSW50ZXJmYWNl IHsKKyAgICBmbiBmcm9tKHZhbHVlOiBvc3BmOjpPc3BmSW50ZXJmYWNlKSAtPiBTZWxmIHsKKyAg ICAgICAgU2VsZjo6T3NwZih2YWx1ZSkKKyAgICB9Cit9CisKKyNbZGVyaXZlKENsb25lLCBEZWJ1 ZywgUGFydGlhbEVxLCBFcSwgRGVmYXVsdCwgRGVzZXJpYWxpemUsIFNlcmlhbGl6ZSldCitwdWIg c3RydWN0IEZyckNvbmZpZyB7CisgICAgcm91dGVyOiBIYXNoTWFwPFJvdXRlck5hbWUsIFJvdXRl cj4sCisgICAgaW50ZXJmYWNlczogSGFzaE1hcDxJbnRlcmZhY2VOYW1lLCBJbnRlcmZhY2U+LAor fQorCitpbXBsIEZyckNvbmZpZyB7CisgICAgcHViIGZuIG5ldygpIC0+IFNlbGYgeworICAgICAg ICBTZWxmOjpkZWZhdWx0KCkKKyAgICB9CisKKyAgICAjW2NmZyhmZWF0dXJlID0gImNvbmZpZy1l eHQiKV0KKyAgICBwdWIgZm4gYnVpbGRlcigpIC0+IEZyckNvbmZpZ0J1aWxkZXIgeworICAgICAg ICBGcnJDb25maWdCdWlsZGVyOjpkZWZhdWx0KCkKKyAgICB9CisKKyAgICBwdWIgZm4gcm91dGVy KCZzZWxmKSAtPiBpbXBsIEl0ZXJhdG9yPEl0ZW0gPSAoJlJvdXRlck5hbWUsICZSb3V0ZXIpPiAr ICdfIHsKKyAgICAgICAgc2VsZi5yb3V0ZXIuaXRlcigpCisgICAgfQorCisgICAgcHViIGZuIGlu dGVyZmFjZXMoJnNlbGYpIC0+IGltcGwgSXRlcmF0b3I8SXRlbSA9ICgmSW50ZXJmYWNlTmFtZSwg JkludGVyZmFjZSk+ICsgJ18geworICAgICAgICBzZWxmLmludGVyZmFjZXMuaXRlcigpCisgICAg fQorfQorCisjW2Rlcml2ZShEZWZhdWx0KV0KKyNbY2ZnKGZlYXR1cmUgPSAiY29uZmlnLWV4dCIp XQorcHViIHN0cnVjdCBGcnJDb25maWdCdWlsZGVyIHsKKyAgICBmYWJyaWNzOiBGYWJyaWNDb25m aWcsCisgICAgLy9iZ3A6IE9wdGlvbjxpbnRlcm5hbDo6QmdwQ29uZmlnPgorfQorCisjW2NmZyhm ZWF0dXJlID0gImNvbmZpZy1leHQiKV0KK2ltcGwgRnJyQ29uZmlnQnVpbGRlciB7CisgICAgcHVi IGZuIGFkZF9mYWJyaWNzKG11dCBzZWxmLCBmYWJyaWM6IEZhYnJpY0NvbmZpZykgLT4gRnJyQ29u ZmlnQnVpbGRlciB7CisgICAgICAgIHNlbGYuZmFicmljcyA9IGZhYnJpYzsKKyAgICAgICAgc2Vs ZgorICAgIH0KKworICAgIHB1YiBmbiBidWlsZChzZWxmLCBjdXJyZW50X25vZGU6ICZzdHIpIC0+ IFJlc3VsdDxGcnJDb25maWcsIGFueWhvdzo6RXJyb3I+IHsKKyAgICAgICAgbGV0IG11dCByb3V0 ZXI6IEhhc2hNYXA8Um91dGVyTmFtZSwgUm91dGVyPiA9IEhhc2hNYXA6Om5ldygpOworICAgICAg ICBsZXQgbXV0IGludGVyZmFjZXM6IEhhc2hNYXA8SW50ZXJmYWNlTmFtZSwgSW50ZXJmYWNlPiA9 IEhhc2hNYXA6Om5ldygpOworCisgICAgICAgIGlmIGxldCBTb21lKG9wZW5mYWJyaWMpID0gc2Vs Zi5mYWJyaWNzLm9wZW5mYWJyaWMoKSB7CisgICAgICAgICAgICAvLyBvcGVuZmFicmljCisgICAg ICAgICAgICBvcGVuZmFicmljCisgICAgICAgICAgICAgICAgLmZhYnJpY3MoKQorICAgICAgICAg ICAgICAgIC5pdGVyKCkKKyAgICAgICAgICAgICAgICAudHJ5X2Zvcl9lYWNoKHwoZmFicmljX2lk LCBmYWJyaWNfY29uZmlnKXwgeworICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZV9jb25maWcg PSBmYWJyaWNfY29uZmlnLm5vZGVzKCkuZ2V0KCZIb3N0bmFtZTo6bmV3KGN1cnJlbnRfbm9kZSkp OworICAgICAgICAgICAgICAgICAgICBpZiBsZXQgU29tZShub2RlX2NvbmZpZykgPSBub2RlX2Nv bmZpZyB7CisgICAgICAgICAgICAgICAgICAgICAgICBsZXQgb2ZyID0gb3BlbmZhYnJpYzo6T3Bl bkZhYnJpY1JvdXRlcjo6ZnJvbSgoZmFicmljX2NvbmZpZywgbm9kZV9jb25maWcpKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgIGxldCByb3V0ZXJfaXRlbSA9IFJvdXRlcjo6T3BlbkZhYnJpYyhv ZnIpOworICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJvdXRlcl9uYW1lID0gUm91dGVyTmFt ZTo6T3BlbkZhYnJpYygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuZmFicmljOjpP cGVuRmFicmljUm91dGVyTmFtZTo6dHJ5X2Zyb20oZmFicmljX2lkKT8sCisgICAgICAgICAgICAg ICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyLmluc2VydChyb3V0 ZXJfbmFtZS5jbG9uZSgpLCByb3V0ZXJfaXRlbSk7CisgICAgICAgICAgICAgICAgICAgICAgICBu b2RlX2NvbmZpZy5pbnRlcmZhY2VzKCkudHJ5X2Zvcl9lYWNoKHxpbnRlcmZhY2V8IHsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsZXQgbXV0IG9wZW5mYWJyaWNfaW50ZXJmYWNlOiBvcGVu ZmFicmljOjpPcGVuRmFicmljSW50ZXJmYWNlID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGZhYnJpY19pZCwgaW50ZXJmYWNlKS50cnlfaW50bygpPzsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvLyBJZiBubyBzcGVjaWZpYyBoZWxsb19pbnRlcnZhbCBpcyBzZXQsIGdl dCBkZWZhdWx0IG9uZSBmcm9tIGZhYnJpYworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v IGNvbmZpZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG9wZW5mYWJyaWNfaW50ZXJm YWNlLmhlbGxvX2ludGVydmFsKCkuaXNfbm9uZSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgb3BlbmZhYnJpY19pbnRlcmZhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC5zZXRfaGVsbG9faW50ZXJ2YWwoZmFicmljX2NvbmZpZy5oZWxsb19pbnRlcnZh bCgpLmNsb25lKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsZXQgaW50ZXJmYWNlX25hbWUgPSBJbnRlcmZhY2VOYW1lOjpPcGVu RmFicmljKEZycldvcmQ6OmZyb21fc3RyKGludGVyZmFjZS5uYW1lKCkpPyk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLy8gT3BlbmZhYnJpYyBkb2Vzbid0IGFsbG93IGFuIGludGVyZmFj ZSB0byBiZSBpbiBtdWx0aXBsZSBvcGVuZmFicmljCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLy8gZmFicmljcy4gRnJyIHdpbGwganVzdCBpZ25vcmUgaXQgYW5kIHRha2UgdGhlIGZpcnN0 IG9uZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBsZXQgRW50cnk6OlZhY2FudChl KSA9IGludGVyZmFjZXMuZW50cnkoaW50ZXJmYWNlX25hbWUpIHsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZS5pbnNlcnQob3BlbmZhYnJpY19pbnRlcmZhY2UuaW50bygpKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0cmFjaW5nOjp3YXJuISgiQW4gaW50ZXJmYWNlIGNhbm5vdCBiZSBpbiBtdWx0 aXBsZSBvcGVuZmFicmljIGZhYnJpY3MiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2s6OjwoKSwgYW55aG93OjpFcnJvcj4oKCkp CisgICAgICAgICAgICAgICAgICAgICAgICB9KT87CisgICAgICAgICAgICAgICAgICAgIH0gZWxz ZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0cmFjaW5nOjp3YXJuISgibm8gbm9kZSBjb25m aWd1cmF0aW9uIGZvciBmYWJyaWMgXCJ7ZmFicmljX2lkfVwiIOKAkyB0aGlzIGZhYnJpYyBpcyBu b3QgY29uZmlndXJlZCBmb3IgdGhpcyBub2RlLiIpOworICAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIE9rOjo8KCksIGFueWhvdzo6RXJyb3I+KCgpKTsKKyAgICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgICAgICBPaygoKSkKKyAgICAgICAgICAgICAgICB9KT87CisgICAg ICAgIH0KKyAgICAgICAgaWYgbGV0IFNvbWUob3NwZikgPSBzZWxmLmZhYnJpY3Mub3NwZigpIHsK KyAgICAgICAgICAgIC8vIG9zcGYKKyAgICAgICAgICAgIG9zcGYuZmFicmljcygpCisgICAgICAg ICAgICAgICAgLml0ZXIoKQorICAgICAgICAgICAgICAgIC50cnlfZm9yX2VhY2gofChmYWJyaWNf aWQsIGZhYnJpY19jb25maWcpfCB7CisgICAgICAgICAgICAgICAgICAgIGxldCBub2RlX2NvbmZp ZyA9IGZhYnJpY19jb25maWcubm9kZXMoKS5nZXQoJkhvc3RuYW1lOjpuZXcoY3VycmVudF9ub2Rl KSk7CisgICAgICAgICAgICAgICAgICAgIGlmIGxldCBTb21lKG5vZGVfY29uZmlnKSA9IG5vZGVf Y29uZmlnIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvc3BmX3JvdXRlciA9IG9zcGY6 Ok9zcGZSb3V0ZXI6OmZyb20oKGZhYnJpY19jb25maWcsIG5vZGVfY29uZmlnKSk7CisgICAgICAg ICAgICAgICAgICAgICAgICBsZXQgcm91dGVyX2l0ZW0gPSBSb3V0ZXI6Ok9zcGYob3NwZl9yb3V0 ZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJvdXRlcl9uYW1lID0gUm91dGVyTmFt ZTo6T3NwZihvc3BmOjpPc3BmUm91dGVyTmFtZTo6ZnJvbShvc3BmOjpBcmVhOjp0cnlfZnJvbShm YWJyaWNfaWQpPykpOworICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyLmluc2VydChyb3V0 ZXJfbmFtZS5jbG9uZSgpLCByb3V0ZXJfaXRlbSk7CisgICAgICAgICAgICAgICAgICAgICAgICBu b2RlX2NvbmZpZy5pbnRlcmZhY2VzKCkudHJ5X2Zvcl9lYWNoKHxpbnRlcmZhY2V8IHsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3NwZl9pbnRlcmZhY2U6IG9zcGY6Ok9zcGZJbnRl cmZhY2UgPSAoZmFicmljX2lkLCBpbnRlcmZhY2UpLnRyeV9pbnRvKCk/OworCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGV0IGludGVyZmFjZV9uYW1lID0gSW50ZXJmYWNlTmFtZTo6T3Nw ZihGcnJXb3JkOjpmcm9tX3N0cihpbnRlcmZhY2UubmFtZSgpKT8pOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8vIE9zcGYgb25seSBhbGxvd3Mgb25lIGFyZWEgcGVyIGludGVyZmFjZSwg c28gb25lIGludGVyZmFjZSBjYW5ub3QgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAv LyBpbiB0d28gYXJlYXMgKGZhYnJpY3MpLiBUaG91Z2ggZXZlbiBpZiB0aGlzIGhhcHBlbnMsIGl0 IGlzIG5vdCBhIGJpZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByb2JsZW0gYXMg ZnJyIGZpbHRlcnMgaXQgb3V0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxldCBF bnRyeTo6VmFjYW50KGUpID0gaW50ZXJmYWNlcy5lbnRyeShpbnRlcmZhY2VfbmFtZSkgeworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmluc2VydChvc3BmX2ludGVyZmFjZS5pbnRv KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRyYWNpbmc6Ondhcm4hKCJBbiBpbnRlcmZhY2UgY2Fubm90IGJl IGluIG11bHRpcGxlIG9zcGYgYXJlYXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2s6OjwoKSwgYW55aG93OjpFcnJvcj4oKCkp CisgICAgICAgICAgICAgICAgICAgICAgICB9KT87CisgICAgICAgICAgICAgICAgICAgIH0gZWxz ZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0cmFjaW5nOjp3YXJuISgibm8gbm9kZSBjb25m aWd1cmF0aW9uIGZvciBmYWJyaWMgXCJ7ZmFicmljX2lkfVwiIOKAkyB0aGlzIGZhYnJpYyBpcyBu b3QgY29uZmlndXJlZCBmb3IgdGhpcyBub2RlLiIpOworICAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIE9rOjo8KCksIGFueWhvdzo6RXJyb3I+KCgpKTsgCisgICAgICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICAgICAgT2soKCkpCisgICAgICAgICAgICAgICAgfSk/OworICAg ICAgICB9CisgICAgICAgIE9rKEZyckNvbmZpZyB7IHJvdXRlciwgaW50ZXJmYWNlcyB9KQorICAg IH0KK30KZGlmZiAtLWdpdCBhL3Byb3htb3gtZnJyL3NyYy9vcGVuZmFicmljLnJzIGIvcHJveG1v eC1mcnIvc3JjL29wZW5mYWJyaWMucnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi4xMmNmYzYxMjM2Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9wcm94bW94LWZyci9zcmMv b3BlbmZhYnJpYy5ycwpAQCAtMCwwICsxLDEzNyBAQAordXNlIHN0ZDo6Zm10OjpEZWJ1ZzsKK3Vz ZSBzdGQ6OntmbXQ6OkRpc3BsYXksIHN0cjo6RnJvbVN0cn07CisKK3VzZSBwcm94bW94X25ldHdv cmtfdHlwZXM6Om5ldDo6TmV0OwordXNlIHNlcmRlOjp7RGVzZXJpYWxpemUsIFNlcmlhbGl6ZX07 Cit1c2Ugc2VyZGVfd2l0aDo6e0Rlc2VyaWFsaXplRnJvbVN0ciwgU2VyaWFsaXplRGlzcGxheX07 CisKKyNbY2ZnKGZlYXR1cmUgPSAiY29uZmlnLWV4dCIpXQordXNlIHByb3htb3hfdmVfY29uZmln OjpzZG46OmZhYnJpYzo6b3BlbmZhYnJpYzo6e3NlbGYsIGludGVybmFsfTsKK3VzZSB0aGlzZXJy b3I6OkVycm9yOworCit1c2UgY3JhdGU6OmNvbW1vbjo6RnJyV29yZDsKK3VzZSBjcmF0ZTo6Um91 dGVyTmFtZUVycm9yOworCisjW2Rlcml2ZShDbG9uZSwgRGVidWcsIFBhcnRpYWxFcSwgRXEsIEhh c2gsIERlc2VyaWFsaXplRnJvbVN0ciwgU2VyaWFsaXplRGlzcGxheSldCitwdWIgc3RydWN0IE9w ZW5GYWJyaWNSb3V0ZXJOYW1lKEZycldvcmQpOworCitpbXBsIEZyb208RnJyV29yZD4gZm9yIE9w ZW5GYWJyaWNSb3V0ZXJOYW1lIHsKKyAgICBmbiBmcm9tKHZhbHVlOiBGcnJXb3JkKSAtPiBTZWxm IHsKKyAgICAgICAgU2VsZih2YWx1ZSkKKyAgICB9Cit9CisKK2ltcGwgT3BlbkZhYnJpY1JvdXRl ck5hbWUgeworICAgIHB1YiBmbiBuZXcobmFtZTogRnJyV29yZCkgLT4gU2VsZiB7CisgICAgICAg IFNlbGYobmFtZSkKKyAgICB9Cit9CisKK2ltcGwgRnJvbVN0ciBmb3IgT3BlbkZhYnJpY1JvdXRl ck5hbWUgeworICAgIHR5cGUgRXJyID0gUm91dGVyTmFtZUVycm9yOworCisgICAgZm4gZnJvbV9z dHIoczogJnN0cikgLT4gUmVzdWx0PFNlbGYsIFNlbGY6OkVycj4geworICAgICAgICBpZiBsZXQg U29tZShuYW1lKSA9IHMuc3RyaXBfcHJlZml4KCJvcGVuZmFicmljICIpIHsKKyAgICAgICAgICAg IHJldHVybiBPayhTZWxmOjpuZXcoCisgICAgICAgICAgICAgICAgRnJyV29yZDo6ZnJvbV9zdHIo bmFtZSkubWFwX2Vycih8X3wgUm91dGVyTmFtZUVycm9yOjpJbnZhbGlkTmFtZSk/LAorICAgICAg ICAgICAgKSk7CisgICAgICAgIH0KKworICAgICAgICBFcnIoUm91dGVyTmFtZUVycm9yOjpJbnZh bGlkTmFtZSkKKyAgICB9Cit9CisKK2ltcGwgRGlzcGxheSBmb3IgT3BlbkZhYnJpY1JvdXRlck5h bWUgeworICAgIGZuIGZtdCgmc2VsZiwgZjogJm11dCBzdGQ6OmZtdDo6Rm9ybWF0dGVyPCdfPikg LT4gc3RkOjpmbXQ6OlJlc3VsdCB7CisgICAgICAgIHdyaXRlIShmLCAib3BlbmZhYnJpYyB7fSIs IHNlbGYuMCkKKyAgICB9Cit9CisKKyNbZGVyaXZlKENsb25lLCBEZWJ1ZywgUGFydGlhbEVxLCBF cSwgSGFzaCwgRGVzZXJpYWxpemUsIFNlcmlhbGl6ZSldCitwdWIgc3RydWN0IE9wZW5GYWJyaWNS b3V0ZXIgeworICAgIG5ldDogTmV0LAorfQorCitpbXBsIE9wZW5GYWJyaWNSb3V0ZXIgeworICAg IHB1YiBmbiBuZXcobmV0OiBOZXQpIC0+IFNlbGYgeworICAgICAgICBTZWxmIHsKKyAgICAgICAg ICAgIG5ldCwKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YiBmbiBuZXQoJnNlbGYpIC0+ICZO ZXQgeworICAgICAgICAmc2VsZi5uZXQKKyAgICB9Cit9CisKKyNbZGVyaXZlKENsb25lLCBEZWJ1 ZywgUGFydGlhbEVxLCBFcSwgSGFzaCwgRGVzZXJpYWxpemUsIFNlcmlhbGl6ZSldCitwdWIgc3Ry dWN0IE9wZW5GYWJyaWNJbnRlcmZhY2UgeworICAgIC8vIE5vdGU6IGFuIGludGVyZmFjZSBjYW4g b25seSBiZSBhIHBhcnQgb2YgYSBzaW5nbGUgZmFicmljIChzbyBubyB2ZWMgbmVlZGVkIGhlcmUp CisgICAgZmFicmljX2lkOiBPcGVuRmFicmljUm91dGVyTmFtZSwKKyAgICBwYXNzaXZlOiBPcHRp b248Ym9vbD4sCisgICAgaGVsbG9faW50ZXJ2YWw6IE9wdGlvbjxvcGVuZmFicmljOjpIZWxsb0lu dGVydmFsPiwKKyAgICBjc25wX2ludGVydmFsOiBPcHRpb248b3BlbmZhYnJpYzo6Q3NucEludGVy dmFsPiwKKyAgICBoZWxsb19tdWx0aXBsaWVyOiBPcHRpb248b3BlbmZhYnJpYzo6SGVsbG9NdWx0 aXBsaWVyPiwKK30KKworaW1wbCBPcGVuRmFicmljSW50ZXJmYWNlIHsKKyAgICBwdWIgZm4gZmFi cmljX2lkKCZzZWxmKSAtPiAmT3BlbkZhYnJpY1JvdXRlck5hbWUgeworICAgICAgICAmc2VsZi5m YWJyaWNfaWQKKyAgICB9CisgICAgcHViIGZuIHBhc3NpdmUoJnNlbGYpIC0+ICZPcHRpb248Ym9v bD4geworICAgICAgICAmc2VsZi5wYXNzaXZlCisgICAgfQorICAgIHB1YiBmbiBoZWxsb19pbnRl cnZhbCgmc2VsZikgLT4gJk9wdGlvbjxvcGVuZmFicmljOjpIZWxsb0ludGVydmFsPiB7CisgICAg ICAgICZzZWxmLmhlbGxvX2ludGVydmFsCisgICAgfQorICAgIHB1YiBmbiBjc25wX2ludGVydmFs KCZzZWxmKSAtPiAmT3B0aW9uPG9wZW5mYWJyaWM6OkNzbnBJbnRlcnZhbD4geworICAgICAgICAm c2VsZi5jc25wX2ludGVydmFsCisgICAgfQorICAgIHB1YiBmbiBoZWxsb19tdWx0aXBsaWVyKCZz ZWxmKSAtPiAmT3B0aW9uPG9wZW5mYWJyaWM6OkhlbGxvTXVsdGlwbGllcj4geworICAgICAgICAm c2VsZi5oZWxsb19tdWx0aXBsaWVyCisgICAgfQorICAgIHB1YiBmbiBzZXRfaGVsbG9faW50ZXJ2 YWwoJm11dCBzZWxmLCBpbnRlcnZhbDogT3B0aW9uPG9wZW5mYWJyaWM6OkhlbGxvSW50ZXJ2YWw+ KSB7CisgICAgICAgIHNlbGYuaGVsbG9faW50ZXJ2YWwgPSBpbnRlcnZhbDsKKyAgICB9Cit9CisK KyNbZGVyaXZlKEVycm9yLCBEZWJ1ZyldCitwdWIgZW51bSBPcGVuRmFicmljSW50ZXJmYWNlRXJy b3IgeworICAgICNbZXJyb3IoIlVua25vd24gZXJyb3IgY29udmVydGluZyB0byBPcGVuRmFicmlj SW50ZXJmYWNlIildCisgICAgVW5rbm93bkVycm9yLAorICAgICNbZXJyb3IoIkVycm9yIGNvbnZl cnRpbmcgcm91dGVyIG5hbWUiKV0KKyAgICBSb3V0ZXJOYW1lRXJyb3IoI1tmcm9tXSBSb3V0ZXJO YW1lRXJyb3IpLAorfQorCisjW2NmZyhmZWF0dXJlID0gImNvbmZpZy1leHQiKV0KK2ltcGwgVHJ5 RnJvbTwoJmludGVybmFsOjpGYWJyaWNJZCwgJmludGVybmFsOjpJbnRlcmZhY2UpPiBmb3IgT3Bl bkZhYnJpY0ludGVyZmFjZSB7CisgICAgdHlwZSBFcnJvciA9IE9wZW5GYWJyaWNJbnRlcmZhY2VF cnJvcjsKKworICAgIGZuIHRyeV9mcm9tKHZhbHVlOiAoJmludGVybmFsOjpGYWJyaWNJZCwgJmlu dGVybmFsOjpJbnRlcmZhY2UpKSAtPiBSZXN1bHQ8U2VsZiwgU2VsZjo6RXJyb3I+IHsKKyAgICAg ICAgT2soU2VsZiB7CisgICAgICAgICAgICBmYWJyaWNfaWQ6IE9wZW5GYWJyaWNSb3V0ZXJOYW1l Ojp0cnlfZnJvbSh2YWx1ZS4wKT8sCisgICAgICAgICAgICBwYXNzaXZlOiB2YWx1ZS4xLnBhc3Np dmUoKSwKKyAgICAgICAgICAgIGhlbGxvX2ludGVydmFsOiB2YWx1ZS4xLmhlbGxvX2ludGVydmFs KCkuY2xvbmUoKSwKKyAgICAgICAgICAgIGNzbnBfaW50ZXJ2YWw6IHZhbHVlLjEuY3NucF9pbnRl cnZhbCgpLmNsb25lKCksCisgICAgICAgICAgICBoZWxsb19tdWx0aXBsaWVyOiB2YWx1ZS4xLmhl bGxvX211bHRpcGxpZXIoKS5jbG9uZSgpLAorICAgICAgICB9KQorICAgIH0KK30KKworI1tjZmco ZmVhdHVyZSA9ICJjb25maWctZXh0IildCitpbXBsIFRyeUZyb208JmludGVybmFsOjpGYWJyaWNJ ZD4gZm9yIE9wZW5GYWJyaWNSb3V0ZXJOYW1lIHsKKyAgICB0eXBlIEVycm9yID0gUm91dGVyTmFt ZUVycm9yOworCisgICAgZm4gdHJ5X2Zyb20odmFsdWU6ICZpbnRlcm5hbDo6RmFicmljSWQpIC0+ IFJlc3VsdDxTZWxmLCBTZWxmOjpFcnJvcj4geworICAgICAgICBPayhPcGVuRmFicmljUm91dGVy TmFtZTo6bmV3KEZycldvcmQ6Om5ldyh2YWx1ZS50b19zdHJpbmcoKSk/KSkKKyAgICB9Cit9CisK KyNbY2ZnKGZlYXR1cmUgPSAiY29uZmlnLWV4dCIpXQoraW1wbCBGcm9tPCgmaW50ZXJuYWw6OkZh YnJpY0NvbmZpZywgJmludGVybmFsOjpOb2RlQ29uZmlnKT4gZm9yIE9wZW5GYWJyaWNSb3V0ZXIg eworICAgIGZuIGZyb20odmFsdWU6ICgmaW50ZXJuYWw6OkZhYnJpY0NvbmZpZywgJmludGVybmFs OjpOb2RlQ29uZmlnKSkgLT4gU2VsZiB7CisgICAgICAgIFNlbGYgeworICAgICAgICAgICAgbmV0 OiB2YWx1ZS4xLm5ldCgpLnRvX293bmVkKCksCisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1n aXQgYS9wcm94bW94LWZyci9zcmMvb3NwZi5ycyBiL3Byb3htb3gtZnJyL3NyYy9vc3BmLnJzCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTE0ZWYyYzU1YzI3Ci0tLSAv ZGV2L251bGwKKysrIGIvcHJveG1veC1mcnIvc3JjL29zcGYucnMKQEAgLTAsMCArMSwxNDggQEAK K3VzZSBzdGQ6OmZtdDo6RGVidWc7Cit1c2Ugc3RkOjpuZXQ6OklwdjRBZGRyOwordXNlIHN0ZDo6 e2ZtdDo6RGlzcGxheSwgc3RyOjpGcm9tU3RyfTsKKwordXNlIHNlcmRlOjp7RGVzZXJpYWxpemUs IFNlcmlhbGl6ZX07CisKKyNbY2ZnKGZlYXR1cmUgPSAiY29uZmlnLWV4dCIpXQordXNlIHByb3ht b3hfdmVfY29uZmlnOjpzZG46OmZhYnJpYzo6b3NwZjo6aW50ZXJuYWw7Cit1c2UgdGhpc2Vycm9y OjpFcnJvcjsKKwordXNlIGNyYXRlOjpjb21tb246OntGcnJXb3JkLCBGcnJXb3JkRXJyb3J9Owor CisvLy8gVGhlIG5hbWUgb2YgdGhlIG9zcGYgZnJyIHJvdXRlci4gVGhlcmUgaXMgb25seSBvbmUg b3NwZiBmYWJyaWMgcG9zc2libGUgaW4gZnJyIChpZ25vcmluZworLy8vIG11bHRpcGxlIGludm9j YXRpb25zIG9mIHRoZSBvc3BmZCBkYWVtb24pIGFuZCB0aGUgc2VwYXJhdGlvbiBpcyBkb25lIHdp dGggYXJlYXMuIFN0aWxsLAorLy8vIGRpZmZlcmVudCBhcmVhcyBoYXZlIHRoZSBzYW1lIGZyciBy b3V0ZXIsIHNvIHRoZSBuYW1lIG9mIHRoZSByb3V0ZXIgaXMganVzdCAib3NwZiIgaW4gInJvdXRl cgorLy8vIG9zcGYiLiBUaGlzIHR5cGUgc3RpbGwgY29udGFpbnMgdGhlIEFyZWEgc28gdGhhdCB3 ZSBjYW4gaW5zZXJ0IGl0IGluIHRoZSBIYXNobWFwLgorI1tkZXJpdmUoQ2xvbmUsIERlYnVnLCBQ YXJ0aWFsRXEsIEVxLCBIYXNoLCBEZXNlcmlhbGl6ZSwgU2VyaWFsaXplKV0KK3B1YiBzdHJ1Y3Qg T3NwZlJvdXRlck5hbWUoQXJlYSk7CisKK2ltcGwgRnJvbTxBcmVhPiBmb3IgT3NwZlJvdXRlck5h bWUgeworICAgIGZuIGZyb20odmFsdWU6IEFyZWEpIC0+IFNlbGYgeworICAgICAgICBTZWxmKHZh bHVlKQorICAgIH0KK30KKworaW1wbCBEaXNwbGF5IGZvciBPc3BmUm91dGVyTmFtZSB7CisgICAg Zm4gZm10KCZzZWxmLCBmOiAmbXV0IHN0ZDo6Zm10OjpGb3JtYXR0ZXI8J18+KSAtPiBzdGQ6OmZt dDo6UmVzdWx0IHsKKyAgICAgICAgd3JpdGUhKGYsICJvc3BmIikKKyAgICB9Cit9CisKKyNbZGVy aXZlKEVycm9yLCBEZWJ1ZyldCitwdWIgZW51bSBBcmVhUGFyc2luZ0Vycm9yIHsKKyAgICAjW2Vy cm9yKCJJbnZhbGlkIGFyZWEgaWRlbml0aWZpZXIuIEFyZWEgbXVzdCBiZSBhIG51bWJlciBvciBh biBpcHY0IGFkZHJlc3MuIildCisgICAgSW52YWxpZEFyZWEsCisgICAgI1tlcnJvcigiSW52YWxp ZCBhcmVhIGlkZW5pdGlmaWVyLiBNaXNzaW5nICdhcmVhJyBwcmVmaXguIildCisgICAgTWlzc2lu Z1ByZWZpeCwKKyAgICAjW2Vycm9yKCJFcnJvciBwYXJzaW5nIHRvIEZycldvcmQiKV0KKyAgICBG cnJXb3JkRXJyb3IoI1tmcm9tXSBGcnJXb3JkRXJyb3IpLAorfQorCisvLy8gVGhlIE9TUEYgQXJl YS4gTW9zdCBjb21tb25seSwgdGhpcyBpcyBqdXN0IGEgbnVtYmVyLCBlLmcuIDUsIGJ1dCBzb21l dGltZXMgYWxzbyBhCisvLy8gcHNldWRvLWlwYWRkcmVzcywgZS5nLiAwLjAuMC4wCisjW2Rlcml2 ZShDbG9uZSwgRGVidWcsIFBhcnRpYWxFcSwgRXEsIEhhc2gsIERlc2VyaWFsaXplLCBTZXJpYWxp emUpXQorcHViIHN0cnVjdCBBcmVhKEZycldvcmQpOworCitpbXBsIFRyeUZyb208RnJyV29yZD4g Zm9yIEFyZWEgeworICAgIHR5cGUgRXJyb3IgPSBBcmVhUGFyc2luZ0Vycm9yOworCisgICAgZm4g dHJ5X2Zyb20odmFsdWU6IEZycldvcmQpIC0+IFJlc3VsdDxTZWxmLCBTZWxmOjpFcnJvcj4gewor ICAgICAgICBBcmVhOjpuZXcodmFsdWUpCisgICAgfQorfQorCitpbXBsIEFyZWEgeworICAgIHB1 YiBmbiBuZXcobmFtZTogRnJyV29yZCkgLT4gUmVzdWx0PFNlbGYsIEFyZWFQYXJzaW5nRXJyb3I+ IHsKKyAgICAgICAgaWYgbmFtZS5hc19yZWYoKS5wYXJzZTo6PGkzMj4oKS5pc19vaygpIHx8IG5h bWUuYXNfcmVmKCkucGFyc2U6OjxJcHY0QWRkcj4oKS5pc19vaygpIHsKKyAgICAgICAgICAgIE9r KFNlbGYobmFtZSkpCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBFcnIoQXJlYVBhcnNp bmdFcnJvcjo6SW52YWxpZEFyZWEpCisgICAgICAgIH0KKyAgICB9Cit9CisKK2ltcGwgRnJvbVN0 ciBmb3IgQXJlYSB7CisgICAgdHlwZSBFcnIgPSBBcmVhUGFyc2luZ0Vycm9yOworCisgICAgZm4g ZnJvbV9zdHIoczogJnN0cikgLT4gUmVzdWx0PFNlbGYsIFNlbGY6OkVycj4geworICAgICAgICBp ZiBsZXQgU29tZShuYW1lKSA9IHMuc3RyaXBfcHJlZml4KCJhcmVhICIpIHsKKyAgICAgICAgICAg IHJldHVybiBTZWxmOjpuZXcoRnJyV29yZDo6ZnJvbV9zdHIobmFtZSkubWFwX2Vycih8X3wgQXJl YVBhcnNpbmdFcnJvcjo6SW52YWxpZEFyZWEpPyk7CisgICAgICAgIH0KKworICAgICAgICBFcnIo QXJlYVBhcnNpbmdFcnJvcjo6TWlzc2luZ1ByZWZpeCkKKyAgICB9Cit9CisKK2ltcGwgRGlzcGxh eSBmb3IgQXJlYSB7CisgICAgZm4gZm10KCZzZWxmLCBmOiAmbXV0IHN0ZDo6Zm10OjpGb3JtYXR0 ZXI8J18+KSAtPiBzdGQ6OmZtdDo6UmVzdWx0IHsKKyAgICAgICAgd3JpdGUhKGYsICJhcmVhIHt9 Iiwgc2VsZi4wKQorICAgIH0KK30KKworI1tkZXJpdmUoQ2xvbmUsIERlYnVnLCBQYXJ0aWFsRXEs IEVxLCBIYXNoLCBEZXNlcmlhbGl6ZSwgU2VyaWFsaXplKV0KK3B1YiBzdHJ1Y3QgT3NwZlJvdXRl ciB7CisgICAgcm91dGVyX2lkOiBJcHY0QWRkciwKK30KKworaW1wbCBPc3BmUm91dGVyIHsKKyAg ICBwdWIgZm4gbmV3KHJvdXRlcl9pZDogSXB2NEFkZHIpIC0+IFNlbGYgeworICAgICAgICBTZWxm IHsgcm91dGVyX2lkIH0KKyAgICB9CisKKyAgICBwdWIgZm4gcm91dGVyX2lkKCZzZWxmKSAtPiAm SXB2NEFkZHIgeworICAgICAgICAmc2VsZi5yb3V0ZXJfaWQKKyAgICB9Cit9CisKKyNbZGVyaXZl KEVycm9yLCBEZWJ1ZyldCitwdWIgZW51bSBPc3BmSW50ZXJmYWNlUGFyc2luZ0Vycm9yIHsKKyAg ICAjW2Vycm9yKCJFcnJvciBwYXJzaW5nIGFyZWEiKV0KKyAgICBBcmVhUGFyc2luZ0Vycm9yKCNb ZnJvbV0gQXJlYVBhcnNpbmdFcnJvcikKK30KKworI1tkZXJpdmUoQ2xvbmUsIERlYnVnLCBQYXJ0 aWFsRXEsIEVxLCBIYXNoLCBEZXNlcmlhbGl6ZSwgU2VyaWFsaXplKV0KK3B1YiBzdHJ1Y3QgT3Nw ZkludGVyZmFjZSB7CisgICAgLy8gTm90ZTogYW4gaW50ZXJmYWNlIGNhbiBvbmx5IGJlIGEgcGFy dCBvZiBhIHNpbmdsZSBhcmVhKHNvIG5vIHZlYyBuZWVkZWQgaGVyZSkKKyAgICBhcmVhOiBBcmVh LAorICAgIHBhc3NpdmU6IE9wdGlvbjxib29sPiwKK30KKworaW1wbCBPc3BmSW50ZXJmYWNlIHsK KyAgICBwdWIgZm4gYXJlYSgmc2VsZikgLT4gJkFyZWEgeworICAgICAgICAmc2VsZi5hcmVhCisg ICAgfQorICAgIHB1YiBmbiBwYXNzaXZlKCZzZWxmKSAtPiAmT3B0aW9uPGJvb2w+IHsKKyAgICAg ICAgJnNlbGYucGFzc2l2ZQorICAgIH0KK30KKworI1tjZmcoZmVhdHVyZSA9ICJjb25maWctZXh0 IildCitpbXBsIFRyeUZyb208KCZpbnRlcm5hbDo6QXJlYSwgJmludGVybmFsOjpJbnRlcmZhY2Up PiBmb3IgT3NwZkludGVyZmFjZSB7CisgICAgdHlwZSBFcnJvciA9IE9zcGZJbnRlcmZhY2VQYXJz aW5nRXJyb3I7CisKKyAgICBmbiB0cnlfZnJvbSh2YWx1ZTogKCZpbnRlcm5hbDo6QXJlYSwgJmlu dGVybmFsOjpJbnRlcmZhY2UpKSAtPiBSZXN1bHQ8U2VsZiwgU2VsZjo6RXJyb3I+IHsKKyAgICAg ICAgT2soU2VsZiB7CisgICAgICAgICAgICBhcmVhOiBBcmVhOjp0cnlfZnJvbSh2YWx1ZS4wKT8s CisgICAgICAgICAgICBwYXNzaXZlOiB2YWx1ZS4xLnBhc3NpdmUoKSwKKyAgICAgICAgfSkKKyAg ICB9Cit9CisKKyNbY2ZnKGZlYXR1cmUgPSAiY29uZmlnLWV4dCIpXQoraW1wbCBUcnlGcm9tPCZp bnRlcm5hbDo6QXJlYT4gZm9yIEFyZWEgeworICAgIHR5cGUgRXJyb3IgPSBBcmVhUGFyc2luZ0Vy cm9yOworCisgICAgZm4gdHJ5X2Zyb20odmFsdWU6ICZpbnRlcm5hbDo6QXJlYSkgLT4gUmVzdWx0 PFNlbGYsIFNlbGY6OkVycm9yPiB7CisgICAgICAgIEFyZWE6Om5ldyhGcnJXb3JkOjpuZXcodmFs dWUudG9fc3RyaW5nKCkpPykKKyAgICB9Cit9CisKKyNbY2ZnKGZlYXR1cmUgPSAiY29uZmlnLWV4 dCIpXQoraW1wbCBGcm9tPCgmaW50ZXJuYWw6OkZhYnJpY0NvbmZpZywgJmludGVybmFsOjpOb2Rl Q29uZmlnKT4gZm9yIE9zcGZSb3V0ZXIgeworICAgIGZuIGZyb20odmFsdWU6ICgmaW50ZXJuYWw6 OkZhYnJpY0NvbmZpZywgJmludGVybmFsOjpOb2RlQ29uZmlnKSkgLT4gU2VsZiB7CisgICAgICAg IFNlbGYgeworICAgICAgICAgICAgcm91dGVyX2lkOiB2YWx1ZS4xLnJvdXRlcl9pZCwKKyAgICAg ICAgfQorICAgIH0KK30KLS0gCjIuMzkuNQoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpwdmUtZGV2ZWwgbWFpbGluZyBsaXN0CnB2ZS1kZXZlbEBsaXN0 cy5wcm94bW94LmNvbQpodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9s aXN0aW5mby9wdmUtZGV2ZWwK