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 054351FF13B for ; Tue, 13 Jan 2026 17:53:49 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 45F91202E1; Tue, 13 Jan 2026 17:53:52 +0100 (CET) Message-ID: <6a1c96d8-6d6a-4f70-8fd6-5acb99a12942@proxmox.com> Date: Tue, 13 Jan 2026 17:53:15 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: Proxmox Backup Server development discussion , =?UTF-8?Q?Fabian_Gr=C3=BCnbichler?= References: <20260108112629.189670-1-s.rufinatscha@proxmox.com> <20260108112629.189670-9-s.rufinatscha@proxmox.com> <1768309751.cha53x6agk.astroid@yuna.none> Content-Language: en-US From: Samuel Rufinatscha In-Reply-To: <1768309751.cha53x6agk.astroid@yuna.none> X-SPAM-LEVEL: Spam detection results: 0 AWL -0.156 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_ASCII_DIVIDERS 0.8 Email that uses ascii formatting dividers and possible spam tricks 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-backup v5 4/5] acme: change API impls to use proxmox-acme-api handlers 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" T24gMS8xMy8yNiAyOjQ1IFBNLCBGYWJpYW4gR3LDvG5iaWNobGVyIHdyb3RlOgo+IE9uIEphbnVh cnkgOCwgMjAyNiAxMjoyNiBwbSwgU2FtdWVsIFJ1ZmluYXRzY2hhIHdyb3RlOgo+PiBQQlMgY3Vy cmVudGx5IHVzZXMgaXRzIG93biBBQ01FIGNsaWVudCBhbmQgQVBJIGxvZ2ljLCB3aGlsZSBQRE0g dXNlcyB0aGUKPj4gZmFjdG9yZWQgb3V0IHByb3htb3gtYWNtZSBhbmQgcHJveG1veC1hY21lLWFw aSBjcmF0ZXMuIFRoaXMgZHVwbGljYXRpb24KPj4gcmlza3MgZGlmZmVyZW5jZXMgaW4gYmVoYXZp b3VyIGFuZCByZXF1aXJlcyBBQ01FIG1haW50ZW5hbmNlIGluIHR3bwo+PiBwbGFjZXMuIFRoaXMg cGF0Y2ggaXMgcGFydCBvZiBhIHNlcmllcyB0byBtb3ZlIFBCUyBvdmVyIHRvIHRoZSBzaGFyZWQK Pj4gQUNNRSBzdGFjay4KPj4KPj4gQ2hhbmdlczoKPj4gLSBSZXBsYWNlIGFwaTIvY29uZmlnL2Fj bWUucnMgQVBJIGxvZ2ljIHdpdGggcHJveG1veC1hY21lLWFwaSBoYW5kbGVycy4KPj4gLSBEcm9w IGxvY2FsIGNhY2hpbmcgYW5kIGhlbHBlciB0eXBlcyB0aGF0IGR1cGxpY2F0ZSBwcm94bW94LWFj bWUtYXBpLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBTYW11ZWwgUnVmaW5hdHNjaGEgPHMucnVmaW5h dHNjaGFAcHJveG1veC5jb20+Cj4+IC0tLQo+PiAgIHNyYy9hcGkyL2NvbmZpZy9hY21lLnJzICAg ICAgICAgICAgICAgIHwgMzc4ICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4gICBzcmMvYXBp Mi90eXBlcy9hY21lLnJzICAgICAgICAgICAgICAgICB8ICAxNiAtLQo+PiAgIHNyYy9iaW4vcHJv eG1veF9iYWNrdXBfbWFuYWdlci9hY21lLnJzIHwgICA2ICstCj4+ICAgc3JjL2NvbmZpZy9hY21l L21vZC5ycyAgICAgICAgICAgICAgICAgfCAgNDQgKy0tCj4+ICAgNCBmaWxlcyBjaGFuZ2VkLCAz MyBpbnNlcnRpb25zKCspLCA0MTEgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9zcmMv YXBpMi9jb25maWcvYWNtZS5ycyBiL3NyYy9hcGkyL2NvbmZpZy9hY21lLnJzCj4+IGluZGV4IDg5 OGYwNmRkLi4zMzE0NDMwYyAxMDA2NDQKPj4gLS0tIGEvc3JjL2FwaTIvY29uZmlnL2FjbWUucnMK Pj4gKysrIGIvc3JjL2FwaTIvY29uZmlnL2FjbWUucnMKPj4gQEAgLTEsMjkgKzEsMTggQEAKPj4g LXVzZSBzdGQ6OmZzOwo+PiAtdXNlIHN0ZDo6b3BzOjpDb250cm9sRmxvdzsKPj4gLXVzZSBzdGQ6 OnBhdGg6OlBhdGg7Cj4gCj4gbml0OiB0aGlzIG9uZSBpcyBhY3R1YWxseSBzdGlsbCB1c2VkIGJl bG93CgpBaCwgSSBzZWUgOikgR29vZCBmaW5kIQoKPiAKPj4gLXVzZSBzdGQ6OnN5bmM6OntBcmMs IExhenlMb2NrLCBNdXRleH07Cj4+IC11c2Ugc3RkOjp0aW1lOjpTeXN0ZW1UaW1lOwo+PiAtCj4+ IC11c2UgYW55aG93Ojp7YmFpbCwgZm9ybWF0X2VyciwgRXJyb3J9Owo+PiAtdXNlIGhleDo6RnJv bUhleDsKPj4gLXVzZSBzZXJkZTo6e0Rlc2VyaWFsaXplLCBTZXJpYWxpemV9Owo+PiAtdXNlIHNl cmRlX2pzb246Ontqc29uLCBWYWx1ZX07Cj4+IC11c2UgdHJhY2luZzo6e2luZm8sIHdhcm59Owo+ PiArdXNlIGFueWhvdzo6RXJyb3I7Cj4+ICt1c2UgdHJhY2luZzo6aW5mbzsKPj4gICAKPj4gICB1 c2UgcGJzX2FwaV90eXBlczo6e0F1dGhpZCwgUFJJVl9TWVNfTU9ESUZZfTsKPj4gLXVzZSBwcm94 bW94X2FjbWU6OmFzeW5jX2NsaWVudDo6QWNtZUNsaWVudDsKPj4gLXVzZSBwcm94bW94X2FjbWU6 OnR5cGVzOjpBY2NvdW50RGF0YSBhcyBBY21lQWNjb3VudERhdGE7Cj4+IC11c2UgcHJveG1veF9h Y21lX2FwaTo6QWNtZUFjY291bnROYW1lOwo+PiArdXNlIHByb3htb3hfYWNtZV9hcGk6OnsKPj4g KyAgICBBY2NvdW50RW50cnksIEFjY291bnRJbmZvLCBBY21lQWNjb3VudE5hbWUsIEFjbWVDaGFs bGVuZ2VTY2hlbWEsIENoYWxsZW5nZVNjaGVtYVdyYXBwZXIsCj4+ICsgICAgRGVsZXRhYmxlUGx1 Z2luUHJvcGVydHksIERuc1BsdWdpbkNvcmUsIERuc1BsdWdpbkNvcmVVcGRhdGVyLCBLbm93bkFj bWVEaXJlY3RvcnksIFBsdWdpbkNvbmZpZywKPj4gKyAgICBERUZBVUxUX0FDTUVfRElSRUNUT1JZ X0VOVFJZLCBQTFVHSU5fSURfU0NIRU1BLAo+PiArfTsKPj4gK3VzZSBwcm94bW94X2NvbmZpZ19k aWdlc3Q6OkNvbmZpZ0RpZ2VzdDsKPj4gICB1c2UgcHJveG1veF9yZXN0X3NlcnZlcjo6V29ya2Vy VGFzazsKPj4gICB1c2UgcHJveG1veF9yb3V0ZXI6OnsKPj4gICAgICAgaHR0cF9iYWlsLCBsaXN0 X3N1YmRpcnNfYXBpX21ldGhvZCwgUGVybWlzc2lvbiwgUm91dGVyLCBScGNFbnZpcm9ubWVudCwg U3ViZGlyTWFwLAo+PiAgIH07Cj4+IC11c2UgcHJveG1veF9zY2hlbWE6OnthcGksIHBhcmFtX2Jh aWx9Owo+PiAtCj4+IC11c2UgY3JhdGU6OmFwaTI6OnR5cGVzOjp7QWNtZUNoYWxsZW5nZVNjaGVt YSwgS25vd25BY21lRGlyZWN0b3J5fTsKPj4gLXVzZSBjcmF0ZTo6Y29uZmlnOjphY21lOjpwbHVn aW46OnsKPj4gLSAgICBzZWxmLCBEbnNQbHVnaW4sIERuc1BsdWdpbkNvcmUsIERuc1BsdWdpbkNv cmVVcGRhdGVyLCBQTFVHSU5fSURfU0NIRU1BLAo+PiAtfTsKPj4gK3VzZSBwcm94bW94X3NjaGVt YTo6YXBpOwo+PiAgIAo+PiAgIHB1YihjcmF0ZSkgY29uc3QgUk9VVEVSOiBSb3V0ZXIgPSBSb3V0 ZXI6Om5ldygpCj4+ICAgICAgIC5nZXQoJmxpc3Rfc3ViZGlyc19hcGlfbWV0aG9kIShTVUJESVJT KSkKPj4gQEAgLTY1LDE5ICs1NCw2IEBAIGNvbnN0IFBMVUdJTl9JVEVNX1JPVVRFUjogUm91dGVy ID0gUm91dGVyOjpuZXcoKQo+PiAgICAgICAucHV0KCZBUElfTUVUSE9EX1VQREFURV9QTFVHSU4p Cj4+ICAgICAgIC5kZWxldGUoJkFQSV9NRVRIT0RfREVMRVRFX1BMVUdJTik7Cj4+ICAgCj4+IC0j W2FwaSgKPj4gLSAgICBwcm9wZXJ0aWVzOiB7Cj4+IC0gICAgICAgIG5hbWU6IHsgdHlwZTogQWNt ZUFjY291bnROYW1lIH0sCj4+IC0gICAgfSwKPj4gLSldCj4+IC0vLy8gQW4gQUNNRSBBY2NvdW50 IGVudHJ5Lgo+PiAtLy8vCj4+IC0vLy8gQ3VycmVudGx5IG9ubHkgY29udGFpbnMgYSAnbmFtZScg cHJvcGVydHkuCj4+IC0jW2Rlcml2ZShTZXJpYWxpemUpXQo+PiAtcHViIHN0cnVjdCBBY2NvdW50 RW50cnkgewo+PiAtICAgIG5hbWU6IEFjbWVBY2NvdW50TmFtZSwKPj4gLX0KPj4gLQo+PiAgICNb YXBpKAo+PiAgICAgICBhY2Nlc3M6IHsKPj4gICAgICAgICAgIHBlcm1pc3Npb246ICZQZXJtaXNz aW9uOjpQcml2aWxlZ2UoJlsic3lzdGVtIiwgImNlcnRpZmljYXRlcyJdLCBQUklWX1NZU19NT0RJ RlksIGZhbHNlKSwKPj4gQEAgLTkxLDQwICs2Nyw3IEBAIHB1YiBzdHJ1Y3QgQWNjb3VudEVudHJ5 IHsKPj4gICApXQo+PiAgIC8vLyBMaXN0IEFDTUUgYWNjb3VudHMuCj4+ICAgcHViIGZuIGxpc3Rf YWNjb3VudHMoKSAtPiBSZXN1bHQ8VmVjPEFjY291bnRFbnRyeT4sIEVycm9yPiB7Cj4+IC0gICAg bGV0IG11dCBlbnRyaWVzID0gVmVjOjpuZXcoKTsKPj4gLSAgICBjcmF0ZTo6Y29uZmlnOjphY21l Ojpmb3JlYWNoX2FjbWVfYWNjb3VudCh8bmFtZXwgewo+PiAtICAgICAgICBlbnRyaWVzLnB1c2go QWNjb3VudEVudHJ5IHsgbmFtZSB9KTsKPj4gLSAgICAgICAgQ29udHJvbEZsb3c6OkNvbnRpbnVl KCgpKQo+PiAtICAgIH0pPzsKPj4gLSAgICBPayhlbnRyaWVzKQo+PiAtfQo+PiAtCj4+IC0jW2Fw aSgKPj4gLSAgICBwcm9wZXJ0aWVzOiB7Cj4+IC0gICAgICAgIGFjY291bnQ6IHsgdHlwZTogT2Jq ZWN0LCBwcm9wZXJ0aWVzOiB7fSwgYWRkaXRpb25hbF9wcm9wZXJ0aWVzOiB0cnVlIH0sCj4+IC0g ICAgICAgIHRvczogewo+PiAtICAgICAgICAgICAgdHlwZTogU3RyaW5nLAo+PiAtICAgICAgICAg ICAgb3B0aW9uYWw6IHRydWUsCj4+IC0gICAgICAgIH0sCj4+IC0gICAgfSwKPj4gLSldCj4+IC0v Ly8gQUNNRSBBY2NvdW50IGluZm9ybWF0aW9uLgo+PiAtLy8vCj4+IC0vLy8gVGhpcyBpcyB3aGF0 IHdlIHJldHVybiB2aWEgdGhlIEFQSS4KPj4gLSNbZGVyaXZlKFNlcmlhbGl6ZSldCj4+IC1wdWIg c3RydWN0IEFjY291bnRJbmZvIHsKPj4gLSAgICAvLy8gUmF3IGFjY291bnQgZGF0YS4KPj4gLSAg ICBhY2NvdW50OiBBY21lQWNjb3VudERhdGEsCj4+IC0KPj4gLSAgICAvLy8gVGhlIEFDTUUgZGly ZWN0b3J5IFVSTCB0aGUgYWNjb3VudCB3YXMgY3JlYXRlZCBhdC4KPj4gLSAgICBkaXJlY3Rvcnk6 IFN0cmluZywKPj4gLQo+PiAtICAgIC8vLyBUaGUgYWNjb3VudCdzIG93biBVUkwgd2l0aGluIHRo ZSBBQ01FIGRpcmVjdG9yeS4KPj4gLSAgICBsb2NhdGlvbjogU3RyaW5nLAo+PiAtCj4+IC0gICAg Ly8vIFRoZSBUb1MgVVJMLCBpZiB0aGUgdXNlciBhZ3JlZWQgdG8gb25lLgo+PiAtICAgICNbc2Vy ZGUoc2tpcF9zZXJpYWxpemluZ19pZiA9ICJPcHRpb246OmlzX25vbmUiKV0KPj4gLSAgICB0b3M6 IE9wdGlvbjxTdHJpbmc+LAo+PiArICAgIHByb3htb3hfYWNtZV9hcGk6Omxpc3RfYWNjb3VudHMo KQo+PiAgIH0KPj4gICAKPj4gICAjW2FwaSgKPj4gQEAgLTE0MSwyMyArODQsNyBAQCBwdWIgc3Ry dWN0IEFjY291bnRJbmZvIHsKPj4gICApXQo+PiAgIC8vLyBSZXR1cm4gZXhpc3RpbmcgQUNNRSBh Y2NvdW50IGluZm9ybWF0aW9uLgo+PiAgIHB1YiBhc3luYyBmbiBnZXRfYWNjb3VudChuYW1lOiBB Y21lQWNjb3VudE5hbWUpIC0+IFJlc3VsdDxBY2NvdW50SW5mbywgRXJyb3I+IHsKPj4gLSAgICBs ZXQgYWNjb3VudF9pbmZvID0gcHJveG1veF9hY21lX2FwaTo6Z2V0X2FjY291bnQobmFtZSkuYXdh aXQ/Owo+PiAtCj4+IC0gICAgT2soQWNjb3VudEluZm8gewo+PiAtICAgICAgICBsb2NhdGlvbjog YWNjb3VudF9pbmZvLmxvY2F0aW9uLAo+PiAtICAgICAgICB0b3M6IGFjY291bnRfaW5mby50b3Ms Cj4+IC0gICAgICAgIGRpcmVjdG9yeTogYWNjb3VudF9pbmZvLmRpcmVjdG9yeSwKPj4gLSAgICAg ICAgYWNjb3VudDogQWNtZUFjY291bnREYXRhIHsKPj4gLSAgICAgICAgICAgIG9ubHlfcmV0dXJu X2V4aXN0aW5nOiBmYWxzZSwgLy8gZG9uJ3QgYWN0dWFsbHkgd3JpdGUgdGhpcyBvdXQgaW4gY2Fz ZSBpdCdzIHNldAo+PiAtICAgICAgICAgICAgLi5hY2NvdW50X2luZm8uYWNjb3VudAo+PiAtICAg ICAgICB9LAo+PiAtICAgIH0pCj4+IC19Cj4+IC0KPj4gLWZuIGFjY291bnRfY29udGFjdF9mcm9t X3N0cmluZyhzOiAmc3RyKSAtPiBWZWM8U3RyaW5nPiB7Cj4+IC0gICAgcy5zcGxpdCgmWycgJywg JzsnLCAnLCcsICdcMCddWy4uXSkKPj4gLSAgICAgICAgLm1hcCh8c3wgZm9ybWF0ISgibWFpbHRv OntzfSIpKQo+PiAtICAgICAgICAuY29sbGVjdCgpCj4+ICsgICAgcHJveG1veF9hY21lX2FwaTo6 Z2V0X2FjY291bnQobmFtZSkuYXdhaXQKPj4gICB9Cj4+ICAgCj4+ICAgI1thcGkoCj4+IEBAIC0y MjIsMTUgKzE0OSwxMSBAQCBmbiByZWdpc3Rlcl9hY2NvdW50KAo+PiAgICAgICAgICAgKTsKPj4g ICAgICAgfQo+PiAgIAo+PiAtICAgIGlmIFBhdGg6Om5ldygmY3JhdGU6OmNvbmZpZzo6YWNtZTo6 YWNjb3VudF9wYXRoKCZuYW1lKSkuZXhpc3RzKCkgewo+PiArICAgIGlmIHN0ZDo6cGF0aDo6UGF0 aDo6bmV3KCZwcm94bW94X2FjbWVfYXBpOjphY2NvdW50X2NvbmZpZ19maWxlbmFtZSgmbmFtZSkp LmV4aXN0cygpIHsKPiAKPiBoZXJlIF4KPiAKPj4gICAgICAgICAgIGh0dHBfYmFpbCEoQkFEX1JF UVVFU1QsICJhY2NvdW50IHt9IGFscmVhZHkgZXhpc3RzIiwgbmFtZSk7Cj4+ICAgICAgIH0KPj4g ICAKPj4gLSAgICBsZXQgZGlyZWN0b3J5ID0gZGlyZWN0b3J5LnVud3JhcF9vcl9lbHNlKHx8IHsK Pj4gLSAgICAgICAgY3JhdGU6OmNvbmZpZzo6YWNtZTo6REVGQVVMVF9BQ01FX0RJUkVDVE9SWV9F TlRSWQo+PiAtICAgICAgICAgICAgLnVybAo+PiAtICAgICAgICAgICAgLnRvX293bmVkKCkKPj4g LSAgICB9KTsKPj4gKyAgICBsZXQgZGlyZWN0b3J5ID0gZGlyZWN0b3J5LnVud3JhcF9vcl9lbHNl KHx8IERFRkFVTFRfQUNNRV9ESVJFQ1RPUllfRU5UUlkudXJsLnRvX3N0cmluZygpKTsKPj4gICAK Pj4gICAgICAgV29ya2VyVGFzazo6c3Bhd24oCj4+ICAgICAgICAgICAiYWNtZS1yZWdpc3RlciIs Cj4+IEBAIC0yODYsMTcgKzIwOSw3IEBAIHB1YiBmbiB1cGRhdGVfYWNjb3VudCgKPj4gICAgICAg ICAgIGF1dGhfaWQudG9fc3RyaW5nKCksCj4+ICAgICAgICAgICB0cnVlLAo+PiAgICAgICAgICAg bW92ZSB8X3dvcmtlcnwgYXN5bmMgbW92ZSB7Cj4+IC0gICAgICAgICAgICBsZXQgZGF0YSA9IG1h dGNoIGNvbnRhY3Qgewo+PiAtICAgICAgICAgICAgICAgIFNvbWUoZGF0YSkgPT4ganNvbiEoewo+ PiAtICAgICAgICAgICAgICAgICAgICAiY29udGFjdCI6IGFjY291bnRfY29udGFjdF9mcm9tX3N0 cmluZygmZGF0YSksCj4+IC0gICAgICAgICAgICAgICAgfSksCj4+IC0gICAgICAgICAgICAgICAg Tm9uZSA9PiBqc29uISh7fSksCj4+IC0gICAgICAgICAgICB9Owo+PiAtCj4+IC0gICAgICAgICAg ICBwcm94bW94X2FjbWVfYXBpOjpsb2FkX2NsaWVudF93aXRoX2FjY291bnQoJm5hbWUpCj4+IC0g ICAgICAgICAgICAgICAgLmF3YWl0Pwo+PiAtICAgICAgICAgICAgICAgIC51cGRhdGVfYWNjb3Vu dCgmZGF0YSkKPj4gLSAgICAgICAgICAgICAgICAuYXdhaXQ/Owo+PiArICAgICAgICAgICAgcHJv eG1veF9hY21lX2FwaTo6dXBkYXRlX2FjY291bnQoJm5hbWUsIGNvbnRhY3QpLmF3YWl0PzsKPj4g ICAKPj4gICAgICAgICAgICAgICBPaygoKSkKPj4gICAgICAgICAgIH0sCj4+IEBAIC0zMzQsMTgg KzI0Nyw4IEBAIHB1YiBmbiBkZWFjdGl2YXRlX2FjY291bnQoCj4+ICAgICAgICAgICBhdXRoX2lk LnRvX3N0cmluZygpLAo+PiAgICAgICAgICAgdHJ1ZSwKPj4gICAgICAgICAgIG1vdmUgfF93b3Jr ZXJ8IGFzeW5jIG1vdmUgewo+PiAtICAgICAgICAgICAgbWF0Y2ggcHJveG1veF9hY21lX2FwaTo6 bG9hZF9jbGllbnRfd2l0aF9hY2NvdW50KCZuYW1lKQo+PiAtICAgICAgICAgICAgICAgIC5hd2Fp dD8KPj4gLSAgICAgICAgICAgICAgICAudXBkYXRlX2FjY291bnQoJmpzb24hKHsic3RhdHVzIjog ImRlYWN0aXZhdGVkIn0pKQo+PiAtICAgICAgICAgICAgICAgIC5hd2FpdAo+PiAtICAgICAgICAg ICAgewo+PiAtICAgICAgICAgICAgICAgIE9rKF9hY2NvdW50KSA9PiAoKSwKPj4gLSAgICAgICAg ICAgICAgICBFcnIoZXJyKSBpZiAhZm9yY2UgPT4gcmV0dXJuIEVycihlcnIpLAo+PiAtICAgICAg ICAgICAgICAgIEVycihlcnIpID0+IHsKPj4gLSAgICAgICAgICAgICAgICAgICAgd2FybiEoImVy cm9yIGRlYWN0aXZhdGluZyBhY2NvdW50IHtuYW1lfSwgcHJvY2VlZGluZyBhbnl3YXkgLSB7ZXJy fSIpOwo+PiAtICAgICAgICAgICAgICAgIH0KPj4gLSAgICAgICAgICAgIH0KPj4gLSAgICAgICAg ICAgIGNyYXRlOjpjb25maWc6OmFjbWU6Om1hcmtfYWNjb3VudF9kZWFjdGl2YXRlZCgmbmFtZSk/ Owo+PiArICAgICAgICAgICAgcHJveG1veF9hY21lX2FwaTo6ZGVhY3RpdmF0ZV9hY2NvdW50KCZu YW1lLCBmb3JjZSkuYXdhaXQ/Owo+PiArCj4+ICAgICAgICAgICAgICAgT2soKCkpCj4+ICAgICAg ICAgICB9LAo+PiAgICAgICApCj4+IEBAIC0zNzIsMTUgKzI3NSw3IEBAIHB1YiBmbiBkZWFjdGl2 YXRlX2FjY291bnQoCj4+ICAgKV0KPj4gICAvLy8gR2V0IHRoZSBUZXJtcyBvZiBTZXJ2aWNlIFVS TCBmb3IgYW4gQUNNRSBkaXJlY3RvcnkuCj4+ICAgYXN5bmMgZm4gZ2V0X3RvcyhkaXJlY3Rvcnk6 IE9wdGlvbjxTdHJpbmc+KSAtPiBSZXN1bHQ8T3B0aW9uPFN0cmluZz4sIEVycm9yPiB7Cj4+IC0g ICAgbGV0IGRpcmVjdG9yeSA9IGRpcmVjdG9yeS51bndyYXBfb3JfZWxzZSh8fCB7Cj4+IC0gICAg ICAgIGNyYXRlOjpjb25maWc6OmFjbWU6OkRFRkFVTFRfQUNNRV9ESVJFQ1RPUllfRU5UUlkKPj4g LSAgICAgICAgICAgIC51cmwKPj4gLSAgICAgICAgICAgIC50b19vd25lZCgpCj4+IC0gICAgfSk7 Cj4+IC0gICAgT2soQWNtZUNsaWVudDo6bmV3KGRpcmVjdG9yeSkKPj4gLSAgICAgICAgLnRlcm1z X29mX3NlcnZpY2VfdXJsKCkKPj4gLSAgICAgICAgLmF3YWl0Pwo+PiAtICAgICAgICAubWFwKHN0 cjo6dG9fb3duZWQpKQo+PiArICAgIHByb3htb3hfYWNtZV9hcGk6OmdldF90b3MoZGlyZWN0b3J5 KS5hd2FpdAo+PiAgIH0KPj4gICAKPj4gICAjW2FwaSgKPj4gQEAgLTM5NSw1MiArMjkwLDcgQEAg YXN5bmMgZm4gZ2V0X3RvcyhkaXJlY3Rvcnk6IE9wdGlvbjxTdHJpbmc+KSAtPiBSZXN1bHQ8T3B0 aW9uPFN0cmluZz4sIEVycm9yPiB7Cj4+ICAgKV0KPj4gICAvLy8gR2V0IG5hbWVkIGtub3duIEFD TUUgZGlyZWN0b3J5IGVuZHBvaW50cy4KPj4gICBmbiBnZXRfZGlyZWN0b3JpZXMoKSAtPiBSZXN1 bHQ8JidzdGF0aWMgW0tub3duQWNtZURpcmVjdG9yeV0sIEVycm9yPiB7Cj4+IC0gICAgT2soY3Jh dGU6OmNvbmZpZzo6YWNtZTo6S05PV05fQUNNRV9ESVJFQ1RPUklFUykKPj4gLX0KPj4gLQo+PiAt Ly8vIFdyYXBwZXIgZm9yIGVmZmljaWVudCBBcmMgdXNlIHdoZW4gcmV0dXJuaW5nIHRoZSBBQ01F IGNoYWxsZW5nZS1wbHVnaW4gc2NoZW1hIGZvciBzZXJpYWxpemluZwo+PiAtc3RydWN0IENoYWxs ZW5nZVNjaGVtYVdyYXBwZXIgewo+PiAtICAgIGlubmVyOiBBcmM8VmVjPEFjbWVDaGFsbGVuZ2VT Y2hlbWE+PiwKPj4gLX0KPj4gLQo+PiAtaW1wbCBTZXJpYWxpemUgZm9yIENoYWxsZW5nZVNjaGVt YVdyYXBwZXIgewo+PiAtICAgIGZuIHNlcmlhbGl6ZTxTPigmc2VsZiwgc2VyaWFsaXplcjogUykg LT4gUmVzdWx0PFM6Ok9rLCBTOjpFcnJvcj4KPj4gLSAgICB3aGVyZQo+PiAtICAgICAgICBTOiBz ZXJkZTo6U2VyaWFsaXplciwKPj4gLSAgICB7Cj4+IC0gICAgICAgIHNlbGYuaW5uZXIuc2VyaWFs aXplKHNlcmlhbGl6ZXIpCj4+IC0gICAgfQo+PiAtfQo+PiAtCj4+IC1zdHJ1Y3QgQ2FjaGVkU2No ZW1hIHsKPj4gLSAgICBzY2hlbWE6IEFyYzxWZWM8QWNtZUNoYWxsZW5nZVNjaGVtYT4+LAo+PiAt ICAgIGNhY2hlZF9tdGltZTogU3lzdGVtVGltZSwKPj4gLX0KPj4gLQo+PiAtZm4gZ2V0X2NhY2hl ZF9jaGFsbGVuZ2Vfc2NoZW1hcygpIC0+IFJlc3VsdDxDaGFsbGVuZ2VTY2hlbWFXcmFwcGVyLCBF cnJvcj4gewo+PiAtICAgIHN0YXRpYyBDQUNIRTogTGF6eUxvY2s8TXV0ZXg8T3B0aW9uPENhY2hl ZFNjaGVtYT4+PiA9IExhenlMb2NrOjpuZXcofHwgTXV0ZXg6Om5ldyhOb25lKSk7Cj4+IC0KPj4g LSAgICAvLyB0aGUgYWN0dWFsIGxvYWRpbmcgY29kZQo+PiAtICAgIGxldCBtdXQgbGFzdCA9IENB Q0hFLmxvY2soKS51bndyYXAoKTsKPj4gLQo+PiAtICAgIGxldCBhY3R1YWxfbXRpbWUgPSBmczo6 bWV0YWRhdGEoY3JhdGU6OmNvbmZpZzo6YWNtZTo6QUNNRV9ETlNfU0NIRU1BX0ZOKT8ubW9kaWZp ZWQoKT87Cj4+IC0KPj4gLSAgICBsZXQgc2NoZW1hID0gbWF0Y2ggJipsYXN0IHsKPj4gLSAgICAg ICAgU29tZShDYWNoZWRTY2hlbWEgewo+PiAtICAgICAgICAgICAgc2NoZW1hLAo+PiAtICAgICAg ICAgICAgY2FjaGVkX210aW1lLAo+PiAtICAgICAgICB9KSBpZiAqY2FjaGVkX210aW1lID49IGFj dHVhbF9tdGltZSA9PiBzY2hlbWEuY2xvbmUoKSwKPj4gLSAgICAgICAgXyA9PiB7Cj4+IC0gICAg ICAgICAgICBsZXQgbmV3X3NjaGVtYSA9IEFyYzo6bmV3KGNyYXRlOjpjb25maWc6OmFjbWU6Omxv YWRfZG5zX2NoYWxsZW5nZV9zY2hlbWEoKT8pOwo+PiAtICAgICAgICAgICAgKmxhc3QgPSBTb21l KENhY2hlZFNjaGVtYSB7Cj4+IC0gICAgICAgICAgICAgICAgc2NoZW1hOiBBcmM6OmNsb25lKCZu ZXdfc2NoZW1hKSwKPj4gLSAgICAgICAgICAgICAgICBjYWNoZWRfbXRpbWU6IGFjdHVhbF9tdGlt ZSwKPj4gLSAgICAgICAgICAgIH0pOwo+PiAtICAgICAgICAgICAgbmV3X3NjaGVtYQo+PiAtICAg ICAgICB9Cj4+IC0gICAgfTsKPj4gLQo+PiAtICAgIE9rKENoYWxsZW5nZVNjaGVtYVdyYXBwZXIg eyBpbm5lcjogc2NoZW1hIH0pCj4+ICsgICAgT2socHJveG1veF9hY21lX2FwaTo6S05PV05fQUNN RV9ESVJFQ1RPUklFUykKPj4gICB9Cj4+ICAgCj4+ICAgI1thcGkoCj4+IEBAIC00NTUsNjkgKzMw NSw3IEBAIGZuIGdldF9jYWNoZWRfY2hhbGxlbmdlX3NjaGVtYXMoKSAtPiBSZXN1bHQ8Q2hhbGxl bmdlU2NoZW1hV3JhcHBlciwgRXJyb3I+IHsKPj4gICApXQo+PiAgIC8vLyBHZXQgbmFtZWQga25v d24gQUNNRSBkaXJlY3RvcnkgZW5kcG9pbnRzLgo+PiAgIGZuIGdldF9jaGFsbGVuZ2Vfc2NoZW1h KCkgLT4gUmVzdWx0PENoYWxsZW5nZVNjaGVtYVdyYXBwZXIsIEVycm9yPiB7Cj4+IC0gICAgZ2V0 X2NhY2hlZF9jaGFsbGVuZ2Vfc2NoZW1hcygpCj4+IC19Cj4+IC0KPj4gLSNbYXBpXQo+PiAtI1tk ZXJpdmUoRGVmYXVsdCwgRGVzZXJpYWxpemUsIFNlcmlhbGl6ZSldCj4+IC0jW3NlcmRlKHJlbmFt ZV9hbGwgPSAia2ViYWItY2FzZSIpXQo+PiAtLy8vIFRoZSBBUEkncyBmb3JtYXQgaXMgaW5oZXJp dGVkIGZyb20gUFZFL1BNRzoKPj4gLXB1YiBzdHJ1Y3QgUGx1Z2luQ29uZmlnIHsKPj4gLSAgICAv Ly8gUGx1Z2luIElELgo+PiAtICAgIHBsdWdpbjogU3RyaW5nLAo+PiAtCj4+IC0gICAgLy8vIFBs dWdpbiB0eXBlLgo+PiAtICAgICNbc2VyZGUocmVuYW1lID0gInR5cGUiKV0KPj4gLSAgICB0eTog U3RyaW5nLAo+PiAtCj4+IC0gICAgLy8vIEROUyBBcGkgbmFtZS4KPj4gLSAgICAjW3NlcmRlKHNr aXBfc2VyaWFsaXppbmdfaWYgPSAiT3B0aW9uOjppc19ub25lIiwgZGVmYXVsdCldCj4+IC0gICAg YXBpOiBPcHRpb248U3RyaW5nPiwKPj4gLQo+PiAtICAgIC8vLyBQbHVnaW4gY29uZmlndXJhdGlv biBkYXRhLgo+PiAtICAgICNbc2VyZGUoc2tpcF9zZXJpYWxpemluZ19pZiA9ICJPcHRpb246Omlz X25vbmUiLCBkZWZhdWx0KV0KPj4gLSAgICBkYXRhOiBPcHRpb248U3RyaW5nPiwKPj4gLQo+PiAt ICAgIC8vLyBFeHRyYSBkZWxheSBpbiBzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIHJlcXVlc3Rpbmcg dmFsaWRhdGlvbi4KPj4gLSAgICAvLy8KPj4gLSAgICAvLy8gQWxsb3dzIHRvIGNvcGUgd2l0aCBs b25nIFRUTCBvZiBETlMgcmVjb3Jkcy4KPj4gLSAgICAjW3NlcmRlKHNraXBfc2VyaWFsaXppbmdf aWYgPSAiT3B0aW9uOjppc19ub25lIiwgZGVmYXVsdCldCj4+IC0gICAgdmFsaWRhdGlvbl9kZWxh eTogT3B0aW9uPHUzMj4sCj4+IC0KPj4gLSAgICAvLy8gRmxhZyB0byBkaXNhYmxlIHRoZSBjb25m aWcuCj4+IC0gICAgI1tzZXJkZShza2lwX3NlcmlhbGl6aW5nX2lmID0gIk9wdGlvbjo6aXNfbm9u ZSIsIGRlZmF1bHQpXQo+PiAtICAgIGRpc2FibGU6IE9wdGlvbjxib29sPiwKPj4gLX0KPj4gLQo+ PiAtLy8gU2VlIFBNRy9QVkUncyAkbW9kaWZ5X2NmZ19mb3JfYXBpIHN1Ygo+PiAtZm4gbW9kaWZ5 X2NmZ19mb3JfYXBpKGlkOiAmc3RyLCB0eTogJnN0ciwgZGF0YTogJlZhbHVlKSAtPiBQbHVnaW5D b25maWcgewo+PiAtICAgIGxldCBtdXQgZW50cnkgPSBkYXRhLmNsb25lKCk7Cj4+IC0KPj4gLSAg ICBsZXQgb2JqID0gZW50cnkuYXNfb2JqZWN0X211dCgpLnVud3JhcCgpOwo+PiAtICAgIG9iai5y ZW1vdmUoImlkIik7Cj4+IC0gICAgb2JqLmluc2VydCgicGx1Z2luIi50b19zdHJpbmcoKSwgVmFs dWU6OlN0cmluZyhpZC50b19vd25lZCgpKSk7Cj4+IC0gICAgb2JqLmluc2VydCgidHlwZSIudG9f c3RyaW5nKCksIFZhbHVlOjpTdHJpbmcodHkudG9fb3duZWQoKSkpOwo+PiAtCj4+IC0gICAgLy8g RklYTUU6IFRoaXMgbmVlZHMgdG8gZ28gb25jZSB0aGUgYFVwZGF0ZXJgIGlzIGZpeGVkLgo+PiAt ICAgIC8vIE5vbmUgb2YgdGhlc2Ugc2hvdWxkIGJlIGFibGUgdG8gZmFpbCB1bmxlc3MgdGhlIHVz ZXIgY2hhbmdlZCB0aGUgZmlsZXMgYnkgaGFuZCwgaW4gd2hpY2gKPj4gLSAgICAvLyBjYXNlIHdl IGxlYXZlIHRoZSB1bm1vZGlmaWVkIHN0cmluZyBpbiB0aGUgVmFsdWUgZm9yIG5vdy4gVGhpcyB3 aWxsIGJlIGhhbmRsZWQgd2l0aCBhbiBlcnJvcgo+PiAtICAgIC8vIGxhdGVyLgo+PiAtICAgIGlm IGxldCBTb21lKFZhbHVlOjpTdHJpbmcocmVmIG11dCBkYXRhKSkgPSBvYmouZ2V0X211dCgiZGF0 YSIpIHsKPj4gLSAgICAgICAgaWYgbGV0IE9rKG5ldykgPSBwcm94bW94X2Jhc2U2NDo6dXJsOjpk ZWNvZGVfbm9fcGFkKCZkYXRhKSB7Cj4+IC0gICAgICAgICAgICBpZiBsZXQgT2sodXRmOCkgPSBT dHJpbmc6OmZyb21fdXRmOChuZXcpIHsKPj4gLSAgICAgICAgICAgICAgICAqZGF0YSA9IHV0Zjg7 Cj4+IC0gICAgICAgICAgICB9Cj4+IC0gICAgICAgIH0KPj4gLSAgICB9Cj4+IC0KPj4gLSAgICAv LyBQVkUvUE1HIGRvIHRoaXMgZXhwbGljaXRseSBmb3IgQUNNRSBwbHVnaW5zLi4uCj4+IC0gICAg Ly8gb2JqLmluc2VydCgiZGlnZXN0Ii50b19zdHJpbmcoKSwgVmFsdWU6OlN0cmluZyhkaWdlc3Qu Y2xvbmUoKSkpOwo+PiAtCj4+IC0gICAgc2VyZGVfanNvbjo6ZnJvbV92YWx1ZShlbnRyeSkudW53 cmFwX29yX2Vsc2UofF98IFBsdWdpbkNvbmZpZyB7Cj4+IC0gICAgICAgIHBsdWdpbjogIipFcnJv cioiLnRvX3N0cmluZygpLAo+PiAtICAgICAgICB0eTogIipFcnJvcioiLnRvX3N0cmluZygpLAo+ PiAtICAgICAgICAuLkRlZmF1bHQ6OmRlZmF1bHQoKQo+PiAtICAgIH0pCj4+ICsgICAgcHJveG1v eF9hY21lX2FwaTo6Z2V0X2NhY2hlZF9jaGFsbGVuZ2Vfc2NoZW1hcygpCj4+ICAgfQo+PiAgIAo+ PiAgICNbYXBpKAo+PiBAQCAtNTMzLDEyICszMjEsNyBAQCBmbiBtb2RpZnlfY2ZnX2Zvcl9hcGko aWQ6ICZzdHIsIHR5OiAmc3RyLCBkYXRhOiAmVmFsdWUpIC0+IFBsdWdpbkNvbmZpZyB7Cj4+ICAg KV0KPj4gICAvLy8gTGlzdCBBQ01FIGNoYWxsZW5nZSBwbHVnaW5zLgo+PiAgIHB1YiBmbiBsaXN0 X3BsdWdpbnMocnBjZW52OiAmbXV0IGR5biBScGNFbnZpcm9ubWVudCkgLT4gUmVzdWx0PFZlYzxQ bHVnaW5Db25maWc+LCBFcnJvcj4gewo+PiAtICAgIGxldCAocGx1Z2lucywgZGlnZXN0KSA9IHBs dWdpbjo6Y29uZmlnKCk/Owo+PiAtICAgIHJwY2VudlsiZGlnZXN0Il0gPSBoZXg6OmVuY29kZShk aWdlc3QpLmludG8oKTsKPj4gLSAgICBPayhwbHVnaW5zCj4+IC0gICAgICAgIC5pdGVyKCkKPj4g LSAgICAgICAgLm1hcCh8KGlkLCAodHksIGRhdGEpKXwgbW9kaWZ5X2NmZ19mb3JfYXBpKGlkLCB0 eSwgZGF0YSkpCj4+IC0gICAgICAgIC5jb2xsZWN0KCkpCj4+ICsgICAgcHJveG1veF9hY21lX2Fw aTo6bGlzdF9wbHVnaW5zKHJwY2VudikKPj4gICB9Cj4+ICAgCj4+ICAgI1thcGkoCj4+IEBAIC01 NTUsMTMgKzMzOCw3IEBAIHB1YiBmbiBsaXN0X3BsdWdpbnMocnBjZW52OiAmbXV0IGR5biBScGNF bnZpcm9ubWVudCkgLT4gUmVzdWx0PFZlYzxQbHVnaW5Db25maWc+Cj4+ICAgKV0KPj4gICAvLy8g TGlzdCBBQ01FIGNoYWxsZW5nZSBwbHVnaW5zLgo+PiAgIHB1YiBmbiBnZXRfcGx1Z2luKGlkOiBT dHJpbmcsIHJwY2VudjogJm11dCBkeW4gUnBjRW52aXJvbm1lbnQpIC0+IFJlc3VsdDxQbHVnaW5D b25maWcsIEVycm9yPiB7Cj4+IC0gICAgbGV0IChwbHVnaW5zLCBkaWdlc3QpID0gcGx1Z2luOjpj b25maWcoKT87Cj4+IC0gICAgcnBjZW52WyJkaWdlc3QiXSA9IGhleDo6ZW5jb2RlKGRpZ2VzdCku aW50bygpOwo+PiAtCj4+IC0gICAgbWF0Y2ggcGx1Z2lucy5nZXQoJmlkKSB7Cj4+IC0gICAgICAg IFNvbWUoKHR5LCBkYXRhKSkgPT4gT2sobW9kaWZ5X2NmZ19mb3JfYXBpKCZpZCwgdHksIGRhdGEp KSwKPj4gLSAgICAgICAgTm9uZSA9PiBodHRwX2JhaWwhKE5PVF9GT1VORCwgIm5vIHN1Y2ggcGx1 Z2luIiksCj4+IC0gICAgfQo+PiArICAgIHByb3htb3hfYWNtZV9hcGk6OmdldF9wbHVnaW4oaWQs IHJwY2VudikKPj4gICB9Cj4+ICAgCj4+ICAgLy8gQ3VycmVudGx5IHdlIG9ubHkgaGF2ZSAidGhl IiBzdGFuZGFsb25lIHBsdWdpbiBhbmQgRE5TIHBsdWdpbnMgc28gd2UgY2FuIGp1c3QgZmxhdHRl biBhCj4+IEBAIC01OTMsMzAgKzM3MCw3IEBAIHB1YiBmbiBnZXRfcGx1Z2luKGlkOiBTdHJpbmcs IHJwY2VudjogJm11dCBkeW4gUnBjRW52aXJvbm1lbnQpIC0+IFJlc3VsdDxQbHVnaW5DCj4+ICAg KV0KPj4gICAvLy8gQWRkIEFDTUUgcGx1Z2luIGNvbmZpZ3VyYXRpb24uCj4+ICAgcHViIGZuIGFk ZF9wbHVnaW4ociN0eXBlOiBTdHJpbmcsIGNvcmU6IERuc1BsdWdpbkNvcmUsIGRhdGE6IFN0cmlu ZykgLT4gUmVzdWx0PCgpLCBFcnJvcj4gewo+PiAtICAgIC8vIEN1cnJlbnRseSB3ZSBvbmx5IHN1 cHBvcnQgRE5TIHBsdWdpbnMgYW5kIHRoZSBzdGFuZGFsb25lIHBsdWdpbiBpcyAiZml4ZWQiOgo+ PiAtICAgIGlmIHIjdHlwZSAhPSAiZG5zIiB7Cj4+IC0gICAgICAgIHBhcmFtX2JhaWwhKCJ0eXBl IiwgImludmFsaWQgQUNNRSBwbHVnaW4gdHlwZTogezo/fSIsIHIjdHlwZSk7Cj4+IC0gICAgfQo+ PiAtCj4+IC0gICAgbGV0IGRhdGEgPSBTdHJpbmc6OmZyb21fdXRmOChwcm94bW94X2Jhc2U2NDo6 ZGVjb2RlKGRhdGEpPykKPj4gLSAgICAgICAgLm1hcF9lcnIofF98IGZvcm1hdF9lcnIhKCJkYXRh IG11c3QgYmUgdmFsaWQgVVRGLTgiKSk/Owo+PiAtCj4+IC0gICAgbGV0IGlkID0gY29yZS5pZC5j bG9uZSgpOwo+PiAtCj4+IC0gICAgbGV0IF9sb2NrID0gcGx1Z2luOjpsb2NrKCk/Owo+PiAtCj4+ IC0gICAgbGV0IChtdXQgcGx1Z2lucywgX2RpZ2VzdCkgPSBwbHVnaW46OmNvbmZpZygpPzsKPj4g LSAgICBpZiBwbHVnaW5zLmNvbnRhaW5zX2tleSgmaWQpIHsKPj4gLSAgICAgICAgcGFyYW1fYmFp bCEoImlkIiwgIkFDTUUgcGx1Z2luIElEIHs6P30gYWxyZWFkeSBleGlzdHMiLCBpZCk7Cj4+IC0g ICAgfQo+PiAtCj4+IC0gICAgbGV0IHBsdWdpbiA9IHNlcmRlX2pzb246OnRvX3ZhbHVlKERuc1Bs dWdpbiB7IGNvcmUsIGRhdGEgfSk/Owo+PiAtCj4+IC0gICAgcGx1Z2lucy5pbnNlcnQoaWQsIHIj dHlwZSwgcGx1Z2luKTsKPj4gLQo+PiAtICAgIHBsdWdpbjo6c2F2ZV9jb25maWcoJnBsdWdpbnMp PzsKPj4gLQo+PiAtICAgIE9rKCgpKQo+PiArICAgIHByb3htb3hfYWNtZV9hcGk6OmFkZF9wbHVn aW4ociN0eXBlLCBjb3JlLCBkYXRhKQo+PiAgIH0KPj4gICAKPj4gICAjW2FwaSgKPj4gQEAgLTYz MiwyNiArMzg2LDcgQEAgcHViIGZuIGFkZF9wbHVnaW4ociN0eXBlOiBTdHJpbmcsIGNvcmU6IERu c1BsdWdpbkNvcmUsIGRhdGE6IFN0cmluZykgLT4gUmVzdWx0PCgKPj4gICApXQo+PiAgIC8vLyBE ZWxldGUgYW4gQUNNRSBwbHVnaW4gY29uZmlndXJhdGlvbi4KPj4gICBwdWIgZm4gZGVsZXRlX3Bs dWdpbihpZDogU3RyaW5nKSAtPiBSZXN1bHQ8KCksIEVycm9yPiB7Cj4+IC0gICAgbGV0IF9sb2Nr ID0gcGx1Z2luOjpsb2NrKCk/Owo+PiAtCj4+IC0gICAgbGV0IChtdXQgcGx1Z2lucywgX2RpZ2Vz dCkgPSBwbHVnaW46OmNvbmZpZygpPzsKPj4gLSAgICBpZiBwbHVnaW5zLnJlbW92ZSgmaWQpLmlz X25vbmUoKSB7Cj4+IC0gICAgICAgIGh0dHBfYmFpbCEoTk9UX0ZPVU5ELCAibm8gc3VjaCBwbHVn aW4iKTsKPj4gLSAgICB9Cj4+IC0gICAgcGx1Z2luOjpzYXZlX2NvbmZpZygmcGx1Z2lucyk/Owo+ PiAtCj4+IC0gICAgT2soKCkpCj4+IC19Cj4+IC0KPj4gLSNbYXBpKCldCj4+IC0jW2Rlcml2ZShT ZXJpYWxpemUsIERlc2VyaWFsaXplKV0KPj4gLSNbc2VyZGUocmVuYW1lX2FsbCA9ICJrZWJhYi1j YXNlIildCj4+IC0vLy8gRGVsZXRhYmxlIHByb3BlcnR5IG5hbWUKPj4gLXB1YiBlbnVtIERlbGV0 YWJsZVByb3BlcnR5IHsKPj4gLSAgICAvLy8gRGVsZXRlIHRoZSBkaXNhYmxlIHByb3BlcnR5Cj4+ IC0gICAgRGlzYWJsZSwKPj4gLSAgICAvLy8gRGVsZXRlIHRoZSB2YWxpZGF0aW9uLWRlbGF5IHBy b3BlcnR5Cj4+IC0gICAgVmFsaWRhdGlvbkRlbGF5LAo+PiArICAgIHByb3htb3hfYWNtZV9hcGk6 OmRlbGV0ZV9wbHVnaW4oaWQpCj4+ICAgfQo+PiAgIAo+PiAgICNbYXBpKAo+PiBAQCAtNjczLDEy ICs0MDgsMTIgQEAgcHViIGVudW0gRGVsZXRhYmxlUHJvcGVydHkgewo+PiAgICAgICAgICAgICAg ICAgICB0eXBlOiBBcnJheSwKPj4gICAgICAgICAgICAgICAgICAgb3B0aW9uYWw6IHRydWUsCj4+ ICAgICAgICAgICAgICAgICAgIGl0ZW1zOiB7Cj4+IC0gICAgICAgICAgICAgICAgICAgIHR5cGU6 IERlbGV0YWJsZVByb3BlcnR5LAo+PiArICAgICAgICAgICAgICAgICAgICB0eXBlOiBEZWxldGFi bGVQbHVnaW5Qcm9wZXJ0eSwKPj4gICAgICAgICAgICAgICAgICAgfQo+PiAgICAgICAgICAgICAg IH0sCj4+ICAgICAgICAgICAgICAgZGlnZXN0OiB7Cj4+IC0gICAgICAgICAgICAgICAgZGVzY3Jp cHRpb246ICJEaWdlc3QgdG8gcHJvdGVjdCBhZ2FpbnN0IGNvbmN1cnJlbnQgdXBkYXRlcyIsCj4+ ICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsOiB0cnVlLAo+PiArICAgICAgICAgICAgICAgIHR5 cGU6IENvbmZpZ0RpZ2VzdCwKPj4gICAgICAgICAgICAgICB9LAo+PiAgICAgICAgICAgfSwKPj4g ICAgICAgfSwKPj4gQEAgLTY5Miw2NSArNDI3LDggQEAgcHViIGZuIHVwZGF0ZV9wbHVnaW4oCj4+ ICAgICAgIGlkOiBTdHJpbmcsCj4+ICAgICAgIHVwZGF0ZTogRG5zUGx1Z2luQ29yZVVwZGF0ZXIs Cj4+ICAgICAgIGRhdGE6IE9wdGlvbjxTdHJpbmc+LAo+PiAtICAgIGRlbGV0ZTogT3B0aW9uPFZl YzxEZWxldGFibGVQcm9wZXJ0eT4+LAo+PiAtICAgIGRpZ2VzdDogT3B0aW9uPFN0cmluZz4sCj4+ ICsgICAgZGVsZXRlOiBPcHRpb248VmVjPERlbGV0YWJsZVBsdWdpblByb3BlcnR5Pj4sCj4+ICsg ICAgZGlnZXN0OiBPcHRpb248Q29uZmlnRGlnZXN0PiwKPj4gICApIC0+IFJlc3VsdDwoKSwgRXJy b3I+IHsKPj4gLSAgICBsZXQgZGF0YSA9IGRhdGEKPj4gLSAgICAgICAgLmFzX2RlcmVmKCkKPj4g LSAgICAgICAgLm1hcChwcm94bW94X2Jhc2U2NDo6ZGVjb2RlKQo+PiAtICAgICAgICAudHJhbnNw b3NlKCk/Cj4+IC0gICAgICAgIC5tYXAoU3RyaW5nOjpmcm9tX3V0ZjgpCj4+IC0gICAgICAgIC50 cmFuc3Bvc2UoKQo+PiAtICAgICAgICAubWFwX2Vycih8X3wgZm9ybWF0X2VyciEoImRhdGEgbXVz dCBiZSB2YWxpZCBVVEYtOCIpKT87Cj4+IC0KPj4gLSAgICBsZXQgX2xvY2sgPSBwbHVnaW46Omxv Y2soKT87Cj4+IC0KPj4gLSAgICBsZXQgKG11dCBwbHVnaW5zLCBleHBlY3RlZF9kaWdlc3QpID0g cGx1Z2luOjpjb25maWcoKT87Cj4+IC0KPj4gLSAgICBpZiBsZXQgU29tZShkaWdlc3QpID0gZGln ZXN0IHsKPj4gLSAgICAgICAgbGV0IGRpZ2VzdCA9IDxbdTg7IDMyXT46OmZyb21faGV4KGRpZ2Vz dCk/Owo+PiAtICAgICAgICBjcmF0ZTo6dG9vbHM6OmRldGVjdF9tb2RpZmllZF9jb25maWd1cmF0 aW9uX2ZpbGUoJmRpZ2VzdCwgJmV4cGVjdGVkX2RpZ2VzdCk/Owo+PiAtICAgIH0KPj4gLQo+PiAt ICAgIG1hdGNoIHBsdWdpbnMuZ2V0X211dCgmaWQpIHsKPj4gLSAgICAgICAgU29tZSgodHksIHJl ZiBtdXQgZW50cnkpKSA9PiB7Cj4+IC0gICAgICAgICAgICBpZiB0eSAhPSAiZG5zIiB7Cj4+IC0g ICAgICAgICAgICAgICAgYmFpbCEoImNhbm5vdCB1cGRhdGUgcGx1Z2luIG9mIHR5cGUgezo/fSIs IHR5KTsKPj4gLSAgICAgICAgICAgIH0KPj4gLQo+PiAtICAgICAgICAgICAgbGV0IG11dCBwbHVn aW4gPSBEbnNQbHVnaW46OmRlc2VyaWFsaXplKCYqZW50cnkpPzsKPj4gLQo+PiAtICAgICAgICAg ICAgaWYgbGV0IFNvbWUoZGVsZXRlKSA9IGRlbGV0ZSB7Cj4+IC0gICAgICAgICAgICAgICAgZm9y IGRlbGV0ZV9wcm9wIGluIGRlbGV0ZSB7Cj4+IC0gICAgICAgICAgICAgICAgICAgIG1hdGNoIGRl bGV0ZV9wcm9wIHsKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgIERlbGV0YWJsZVByb3BlcnR5 OjpWYWxpZGF0aW9uRGVsYXkgPT4gewo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBs dWdpbi5jb3JlLnZhbGlkYXRpb25fZGVsYXkgPSBOb25lOwo+PiAtICAgICAgICAgICAgICAgICAg ICAgICAgfQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgRGVsZXRhYmxlUHJvcGVydHk6OkRp c2FibGUgPT4gewo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdWdpbi5jb3JlLmRp c2FibGUgPSBOb25lOwo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgfQo+PiAtICAgICAgICAg ICAgICAgICAgICB9Cj4+IC0gICAgICAgICAgICAgICAgfQo+PiAtICAgICAgICAgICAgfQo+PiAt ICAgICAgICAgICAgaWYgbGV0IFNvbWUoZGF0YSkgPSBkYXRhIHsKPj4gLSAgICAgICAgICAgICAg ICBwbHVnaW4uZGF0YSA9IGRhdGE7Cj4+IC0gICAgICAgICAgICB9Cj4+IC0gICAgICAgICAgICBp ZiBsZXQgU29tZShhcGkpID0gdXBkYXRlLmFwaSB7Cj4+IC0gICAgICAgICAgICAgICAgcGx1Z2lu LmNvcmUuYXBpID0gYXBpOwo+PiAtICAgICAgICAgICAgfQo+PiAtICAgICAgICAgICAgaWYgdXBk YXRlLnZhbGlkYXRpb25fZGVsYXkuaXNfc29tZSgpIHsKPj4gLSAgICAgICAgICAgICAgICBwbHVn aW4uY29yZS52YWxpZGF0aW9uX2RlbGF5ID0gdXBkYXRlLnZhbGlkYXRpb25fZGVsYXk7Cj4+IC0g ICAgICAgICAgICB9Cj4+IC0gICAgICAgICAgICBpZiB1cGRhdGUuZGlzYWJsZS5pc19zb21lKCkg ewo+PiAtICAgICAgICAgICAgICAgIHBsdWdpbi5jb3JlLmRpc2FibGUgPSB1cGRhdGUuZGlzYWJs ZTsKPj4gLSAgICAgICAgICAgIH0KPj4gLQo+PiAtICAgICAgICAgICAgKmVudHJ5ID0gc2VyZGVf anNvbjo6dG9fdmFsdWUocGx1Z2luKT87Cj4+IC0gICAgICAgIH0KPj4gLSAgICAgICAgTm9uZSA9 PiBodHRwX2JhaWwhKE5PVF9GT1VORCwgIm5vIHN1Y2ggcGx1Z2luIiksCj4+IC0gICAgfQo+PiAt Cj4+IC0gICAgcGx1Z2luOjpzYXZlX2NvbmZpZygmcGx1Z2lucyk/Owo+PiAtCj4+IC0gICAgT2so KCkpCj4+ICsgICAgcHJveG1veF9hY21lX2FwaTo6dXBkYXRlX3BsdWdpbihpZCwgdXBkYXRlLCBk YXRhLCBkZWxldGUsIGRpZ2VzdCkKPj4gICB9Cj4+IGRpZmYgLS1naXQgYS9zcmMvYXBpMi90eXBl cy9hY21lLnJzIGIvc3JjL2FwaTIvdHlwZXMvYWNtZS5ycwo+PiBpbmRleCA2NDE3NWFmZi4uMGZm NDk2YjYgMTAwNjQ0Cj4+IC0tLSBhL3NyYy9hcGkyL3R5cGVzL2FjbWUucnMKPj4gKysrIGIvc3Jj L2FwaTIvdHlwZXMvYWNtZS5ycwo+PiBAQCAtNDMsMjIgKzQzLDYgQEAgcHViIGNvbnN0IEFDTUVf RE9NQUlOX1BST1BFUlRZX1NDSEVNQTogU2NoZW1hID0KPj4gICAgICAgICAgIC5mb3JtYXQoJkFw aVN0cmluZ0Zvcm1hdDo6UHJvcGVydHlTdHJpbmcoJkFjbWVEb21haW46OkFQSV9TQ0hFTUEpKQo+ PiAgICAgICAgICAgLnNjaGVtYSgpOwo+PiAgIAo+PiAtI1thcGkoCj4+IC0gICAgcHJvcGVydGll czogewo+PiAtICAgICAgICBuYW1lOiB7IHR5cGU6IFN0cmluZyB9LAo+PiAtICAgICAgICB1cmw6 IHsgdHlwZTogU3RyaW5nIH0sCj4+IC0gICAgfSwKPj4gLSldCj4+IC0vLy8gQW4gQUNNRSBkaXJl Y3RvcnkgZW5kcG9pbnQgd2l0aCBhIG5hbWUgYW5kIFVSTC4KPj4gLSNbZGVyaXZlKFNlcmlhbGl6 ZSldCj4+IC1wdWIgc3RydWN0IEtub3duQWNtZURpcmVjdG9yeSB7Cj4+IC0gICAgLy8vIFRoZSBB Q01FIGRpcmVjdG9yeSdzIG5hbWUuCj4+IC0gICAgcHViIG5hbWU6ICYnc3RhdGljIHN0ciwKPj4g LQo+PiAtICAgIC8vLyBUaGUgQUNNRSBkaXJlY3RvcnkncyBlbmRwb2ludCBVUkwuCj4+IC0gICAg cHViIHVybDogJidzdGF0aWMgc3RyLAo+PiAtfQo+PiAtCj4+ICAgI1thcGkoCj4+ICAgICAgIHBy b3BlcnRpZXM6IHsKPj4gICAgICAgICAgIHNjaGVtYTogewo+PiBkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wcm94bW94X2JhY2t1cF9tYW5hZ2VyL2FjbWUucnMgYi9zcmMvYmluL3Byb3htb3hfYmFja3Vw X21hbmFnZXIvYWNtZS5ycwo+PiBpbmRleCA2ZWQ2MTU2MC4uZDExZDc0OTggMTAwNjQ0Cj4+IC0t LSBhL3NyYy9iaW4vcHJveG1veF9iYWNrdXBfbWFuYWdlci9hY21lLnJzCj4+ICsrKyBiL3NyYy9i aW4vcHJveG1veF9iYWNrdXBfbWFuYWdlci9hY21lLnJzCj4+IEBAIC00LDE0ICs0LDEyIEBAIHVz ZSBhbnlob3c6OntiYWlsLCBFcnJvcn07Cj4+ICAgdXNlIHNlcmRlX2pzb246OlZhbHVlOwo+PiAg IAo+PiAgIHVzZSBwcm94bW94X2FjbWU6OmFzeW5jX2NsaWVudDo6QWNtZUNsaWVudDsKPj4gLXVz ZSBwcm94bW94X2FjbWVfYXBpOjpBY21lQWNjb3VudE5hbWU7Cj4+ICt1c2UgcHJveG1veF9hY21l X2FwaTo6e0FjbWVBY2NvdW50TmFtZSwgRG5zUGx1Z2luQ29yZSwgS05PV05fQUNNRV9ESVJFQ1RP UklFU307Cj4+ICAgdXNlIHByb3htb3hfcm91dGVyOjp7Y2xpOjoqLCBBcGlIYW5kbGVyLCBScGNF bnZpcm9ubWVudH07Cj4+ICAgdXNlIHByb3htb3hfc2NoZW1hOjphcGk7Cj4+ICAgdXNlIHByb3ht b3hfc3lzOjpmczo6ZmlsZV9nZXRfY29udGVudHM7Cj4+ICAgCj4+ICAgdXNlIHByb3htb3hfYmFj a3VwOjphcGkyOwo+PiAtdXNlIHByb3htb3hfYmFja3VwOjpjb25maWc6OmFjbWU6OnBsdWdpbjo6 RG5zUGx1Z2luQ29yZTsKPj4gLXVzZSBwcm94bW94X2JhY2t1cDo6Y29uZmlnOjphY21lOjpLTk9X Tl9BQ01FX0RJUkVDVE9SSUVTOwo+PiAgIAo+PiAgIHB1YiBmbiBhY21lX21nbXRfY2xpKCkgLT4g Q29tbWFuZExpbmVJbnRlcmZhY2Ugewo+PiAgICAgICBsZXQgY21kX2RlZiA9IENsaUNvbW1hbmRN YXA6Om5ldygpCj4+IEBAIC0xMjIsNyArMTIwLDcgQEAgYXN5bmMgZm4gcmVnaXN0ZXJfYWNjb3Vu dCgKPj4gICAKPj4gICAgICAgICAgICAgICAgICAgbWF0Y2ggaW5wdXQudHJpbSgpLnBhcnNlOjo8 dXNpemU+KCkgewo+PiAgICAgICAgICAgICAgICAgICAgICAgT2sobikgaWYgbiA8IEtOT1dOX0FD TUVfRElSRUNUT1JJRVMubGVuKCkgPT4gewo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgYnJl YWsgKEtOT1dOX0FDTUVfRElSRUNUT1JJRVNbbl0udXJsLnRvX293bmVkKCksIGZhbHNlKTsKPj4g KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIChLTk9XTl9BQ01FX0RJUkVDVE9SSUVTW25d LnVybC50b19zdHJpbmcoKSwgZmFsc2UpOwo+PiAgICAgICAgICAgICAgICAgICAgICAgfQo+PiAg ICAgICAgICAgICAgICAgICAgICAgT2sobikgaWYgbiA9PSBLTk9XTl9BQ01FX0RJUkVDVE9SSUVT LmxlbigpID0+IHsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC5jbGVhcigpOwo+ PiBkaWZmIC0tZ2l0IGEvc3JjL2NvbmZpZy9hY21lL21vZC5ycyBiL3NyYy9jb25maWcvYWNtZS9t b2QucnMKPj4gaW5kZXggZTQ2MzljNTMuLjAxYWI2MjIzIDEwMDY0NAo+PiAtLS0gYS9zcmMvY29u ZmlnL2FjbWUvbW9kLnJzCj4+ICsrKyBiL3NyYy9jb25maWcvYWNtZS9tb2QucnMKPj4gQEAgLTEs MTYgKzEsMTUgQEAKPj4gICB1c2Ugc3RkOjpjb2xsZWN0aW9uczo6SGFzaE1hcDsKPj4gICB1c2Ug c3RkOjpvcHM6OkNvbnRyb2xGbG93Owo+PiAtdXNlIHN0ZDo6cGF0aDo6UGF0aDsKPj4gICAKPj4g LXVzZSBhbnlob3c6OntiYWlsLCBmb3JtYXRfZXJyLCBFcnJvcn07Cj4+ICt1c2UgYW55aG93OjpF cnJvcjsKPj4gICB1c2Ugc2VyZGVfanNvbjo6VmFsdWU7Cj4+ICAgCj4+ICAgdXNlIHBic19hcGlf dHlwZXM6OlBST1hNT1hfU0FGRV9JRF9SRUdFWDsKPj4gLXVzZSBwcm94bW94X2FjbWVfYXBpOjpB Y21lQWNjb3VudE5hbWU7Cj4+ICt1c2UgcHJveG1veF9hY21lX2FwaTo6e0FjbWVBY2NvdW50TmFt ZSwgS25vd25BY21lRGlyZWN0b3J5LCBLTk9XTl9BQ01FX0RJUkVDVE9SSUVTfTsKPj4gICB1c2Ug cHJveG1veF9zeXM6OmVycm9yOjpTeXNFcnJvcjsKPj4gICB1c2UgcHJveG1veF9zeXM6OmZzOjp7 ZmlsZV9yZWFkX3N0cmluZywgQ3JlYXRlT3B0aW9uc307Cj4+ICAgCj4+IC11c2UgY3JhdGU6OmFw aTI6OnR5cGVzOjp7QWNtZUNoYWxsZW5nZVNjaGVtYSwgS25vd25BY21lRGlyZWN0b3J5fTsKPj4g K3VzZSBjcmF0ZTo6YXBpMjo6dHlwZXM6OkFjbWVDaGFsbGVuZ2VTY2hlbWE7Cj4+ICAgCj4+ICAg cHViKGNyYXRlKSBjb25zdCBBQ01FX0RJUjogJnN0ciA9IHBic19idWlsZGNmZzo6Y29uZmlnZGly ISgiL2FjbWUiKTsKPj4gICBwdWIoY3JhdGUpIGNvbnN0IEFDTUVfQUNDT1VOVF9ESVI6ICZzdHIg PSBwYnNfYnVpbGRjZmc6OmNvbmZpZ2RpciEoIi9hY21lL2FjY291bnRzIik7Cj4+IEBAIC0zNSwy MyArMzQsOCBAQCBwdWIoY3JhdGUpIGZuIG1ha2VfYWNtZV9kaXIoKSAtPiBSZXN1bHQ8KCksIEVy cm9yPiB7Cj4+ICAgICAgIGNyZWF0ZV9hY21lX3N1YmRpcihBQ01FX0RJUikKPj4gICB9Cj4+ICAg Cj4+IC1wdWIgY29uc3QgS05PV05fQUNNRV9ESVJFQ1RPUklFUzogJltLbm93bkFjbWVEaXJlY3Rv cnldID0gJlsKPj4gLSAgICBLbm93bkFjbWVEaXJlY3Rvcnkgewo+PiAtICAgICAgICBuYW1lOiAi TGV0J3MgRW5jcnlwdCBWMiIsCj4+IC0gICAgICAgIHVybDogImh0dHBzOi8vYWNtZS12MDIuYXBp LmxldHNlbmNyeXB0Lm9yZy9kaXJlY3RvcnkiLAo+PiAtICAgIH0sCj4+IC0gICAgS25vd25BY21l RGlyZWN0b3J5IHsKPj4gLSAgICAgICAgbmFtZTogIkxldCdzIEVuY3J5cHQgVjIgU3RhZ2luZyIs Cj4+IC0gICAgICAgIHVybDogImh0dHBzOi8vYWNtZS1zdGFnaW5nLXYwMi5hcGkubGV0c2VuY3J5 cHQub3JnL2RpcmVjdG9yeSIsCj4+IC0gICAgfSwKPj4gLV07Cj4+IC0KPj4gICBwdWIgY29uc3Qg REVGQVVMVF9BQ01FX0RJUkVDVE9SWV9FTlRSWTogJktub3duQWNtZURpcmVjdG9yeSA9ICZLTk9X Tl9BQ01FX0RJUkVDVE9SSUVTWzBdOwo+PiAgIAo+PiAtcHViIGZuIGFjY291bnRfcGF0aChuYW1l OiAmc3RyKSAtPiBTdHJpbmcgewo+PiAtICAgIGZvcm1hdCEoIntBQ01FX0FDQ09VTlRfRElSfS97 bmFtZX0iKQo+PiAtfQo+PiAtCj4+ICAgcHViIGZuIGZvcmVhY2hfYWNtZV9hY2NvdW50PEY+KG11 dCBmdW5jOiBGKSAtPiBSZXN1bHQ8KCksIEVycm9yPgo+PiAgIHdoZXJlCj4+ICAgICAgIEY6IEZu TXV0KEFjbWVBY2NvdW50TmFtZSkgLT4gQ29udHJvbEZsb3c8UmVzdWx0PCgpLCBFcnJvcj4+LAo+ PiBAQCAtODIsMjggKzY2LDYgQEAgd2hlcmUKPj4gICAgICAgfQo+PiAgIH0KPj4gICAKPj4gLXB1 YiBmbiBtYXJrX2FjY291bnRfZGVhY3RpdmF0ZWQobmFtZTogJnN0cikgLT4gUmVzdWx0PCgpLCBF cnJvcj4gewo+PiAtICAgIGxldCBmcm9tID0gYWNjb3VudF9wYXRoKG5hbWUpOwo+PiAtICAgIGZv ciBpIGluIDAuLjEwMCB7Cj4+IC0gICAgICAgIGxldCB0byA9IGFjY291bnRfcGF0aCgmZm9ybWF0 ISgiX2RlYWN0aXZhdGVkX3tuYW1lfV97aX0iKSk7Cj4+IC0gICAgICAgIGlmICFQYXRoOjpuZXco JnRvKS5leGlzdHMoKSB7Cj4+IC0gICAgICAgICAgICByZXR1cm4gc3RkOjpmczo6cmVuYW1lKCZm cm9tLCAmdG8pLm1hcF9lcnIofGVycnwgewo+PiAtICAgICAgICAgICAgICAgIGZvcm1hdF9lcnIh KAo+PiAtICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIG1vdmUgYWNjb3VudCBwYXRoIHs6 P30gdG8gezo/fSAtIHt9IiwKPj4gLSAgICAgICAgICAgICAgICAgICAgZnJvbSwKPj4gLSAgICAg ICAgICAgICAgICAgICAgdG8sCj4+IC0gICAgICAgICAgICAgICAgICAgIGVycgo+PiAtICAgICAg ICAgICAgICAgICkKPj4gLSAgICAgICAgICAgIH0pOwo+PiAtICAgICAgICB9Cj4+IC0gICAgfQo+ PiAtICAgIGJhaWwhKAo+PiAtICAgICAgICAiTm8gZnJlZSBzbG90IHRvIHJlbmFtZSBkZWFjdGl2 YXRlZCBhY2NvdW50IHs6P30sIHBsZWFzZSBjbGVhbnVwIHs6P30iLAo+PiAtICAgICAgICBmcm9t LAo+PiAtICAgICAgICBBQ01FX0FDQ09VTlRfRElSCj4+IC0gICAgKTsKPj4gLX0KPj4gLQo+PiAg IHB1YiBmbiBsb2FkX2Ruc19jaGFsbGVuZ2Vfc2NoZW1hKCkgLT4gUmVzdWx0PFZlYzxBY21lQ2hh bGxlbmdlU2NoZW1hPiwgRXJyb3I+IHsKPj4gICAgICAgbGV0IHJhdyA9IGZpbGVfcmVhZF9zdHJp bmcoQUNNRV9ETlNfU0NIRU1BX0ZOKT87Cj4+ICAgICAgIGxldCBzY2hlbWFzOiBzZXJkZV9qc29u OjpNYXA8U3RyaW5nLCBWYWx1ZT4gPSBzZXJkZV9qc29uOjpmcm9tX3N0cigmcmF3KT87Cj4+IC0t IAo+PiAyLjQ3LjMKPj4KPj4KPj4KPj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KPj4gcGJzLWRldmVsIG1haWxpbmcgbGlzdAo+PiBwYnMtZGV2ZWxAbGlz dHMucHJveG1veC5jb20KPj4gaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxt YW4vbGlzdGluZm8vcGJzLWRldmVsCj4+Cj4+Cj4+Cj4gCj4gCj4gX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBwYnMtZGV2ZWwgbWFpbGluZyBsaXN0Cj4g cGJzLWRldmVsQGxpc3RzLnByb3htb3guY29tCj4gaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9j Z2ktYmluL21haWxtYW4vbGlzdGluZm8vcGJzLWRldmVsCj4gCj4gCgoKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnBicy1kZXZlbCBtYWlsaW5nIGxpc3QK cGJzLWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dp LWJpbi9tYWlsbWFuL2xpc3RpbmZvL3Bicy1kZXZlbAo=