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 799761FF163 for ; Thu, 7 Nov 2024 10:18:30 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 4122D1C6EF; Thu, 7 Nov 2024 10:18:41 +0100 (CET) Message-ID: <9bcf24f5-14aa-4170-b663-fd25486bd78a@proxmox.com> Date: Thu, 7 Nov 2024 10:18:02 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: =?UTF-8?Q?Fabian_Gr=C3=BCnbichler?= , pbs-devel@lists.proxmox.com References: <20241031121519.434337-1-c.ebner@proxmox.com> <20241031121519.434337-16-c.ebner@proxmox.com> <173090583969.79072.15737271044931374423@yuna.proxmox.com> Content-Language: en-US, de-DE From: Christian Ebner In-Reply-To: <173090583969.79072.15737271044931374423@yuna.proxmox.com> X-SPAM-LEVEL: Spam detection results: 0 AWL -0.371 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 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. 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 v6 proxmox-backup 15/29] api: push: implement endpoint for sync in push direction 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" T24gMTEvNi8yNCAxNjoxMCwgRmFiaWFuIEdyw7xuYmljaGxlciB3cm90ZToKPiBRdW90aW5nIENo cmlzdGlhbiBFYm5lciAoMjAyNC0xMC0zMSAxMzoxNTowNSkKPj4gRXhwb3NlIHRoZSBzeW5jIGpv YiBpbiBwdXNoIGRpcmVjdGlvbiB2aWEgYSBkZWRpY2F0ZWQgQVBJIGVuZHBvaW50LAo+PiBhbmFs b2dvdXMgdG8gdGhlIHB1bGwgZGlyZWN0aW9uLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBDaHJpc3Rp YW4gRWJuZXIgPGMuZWJuZXJAcHJveG1veC5jb20+Cj4+IC0tLQo+PiBjaGFuZ2VzIHNpbmNlIHZl cnNpb24gNToKPj4gLSBBdm9pZCBkb3VibGUgZGVzZXJpYWxpemF0aW9uIGZvciBiYWNrdXAgbmFt ZXNwYWNlcwo+PiAtIERyb3AgVHJ5RnJvbTwmU3luY0pvYkNvbmZpZz4gZm9yIFB1c2hQYXJhbWV0 ZXJzIGltcGwsIGFzIGNvbnN0cnVjdGluZwo+PiAgICB0aGVtIHJlcXVpcmVzIGFuIGFwaSBjYWxs IHRvIGZldGNoIHRoZSByZW1vdGUgYXBpIHZlcnNpb24gbm93Cj4+Cj4+ICAgc3JjL2FwaTIvbW9k LnJzICB8ICAgMiArCj4+ICAgc3JjL2FwaTIvcHVzaC5ycyB8IDE4MyArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+PiAgIDIgZmlsZXMgY2hhbmdlZCwgMTg1 IGluc2VydGlvbnMoKykKPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2FwaTIvcHVzaC5ycwo+ Pgo+PiBkaWZmIC0tZ2l0IGEvc3JjL2FwaTIvbW9kLnJzIGIvc3JjL2FwaTIvbW9kLnJzCj4+IGlu ZGV4IGE4M2U0YzIwNS4uMDM1OTYzMjZiIDEwMDY0NAo+PiAtLS0gYS9zcmMvYXBpMi9tb2QucnMK Pj4gKysrIGIvc3JjL2FwaTIvbW9kLnJzCj4+IEBAIC0xMiw2ICsxMiw3IEBAIHB1YiBtb2QgaGVs cGVyczsKPj4gICBwdWIgbW9kIG5vZGU7Cj4+ICAgcHViIG1vZCBwaW5nOwo+PiAgIHB1YiBtb2Qg cHVsbDsKPj4gK3B1YiBtb2QgcHVzaDsKPj4gICBwdWIgbW9kIHJlYWRlcjsKPj4gICBwdWIgbW9k IHN0YXR1czsKPj4gICBwdWIgbW9kIHRhcGU7Cj4+IEBAIC0yOSw2ICszMCw3IEBAIGNvbnN0IFNV QkRJUlM6IFN1YmRpck1hcCA9ICZzb3J0ZWQhKFsKPj4gICAgICAgKCJub2RlcyIsICZub2RlOjpS T1VURVIpLAo+PiAgICAgICAoInBpbmciLCAmcGluZzo6Uk9VVEVSKSwKPj4gICAgICAgKCJwdWxs IiwgJnB1bGw6OlJPVVRFUiksCj4+ICsgICAgKCJwdXNoIiwgJnB1c2g6OlJPVVRFUiksCj4+ICAg ICAgICgicmVhZGVyIiwgJnJlYWRlcjo6Uk9VVEVSKSwKPj4gICAgICAgKCJzdGF0dXMiLCAmc3Rh dHVzOjpST1VURVIpLAo+PiAgICAgICAoInRhcGUiLCAmdGFwZTo6Uk9VVEVSKSwKPj4gZGlmZiAt LWdpdCBhL3NyYy9hcGkyL3B1c2gucnMgYi9zcmMvYXBpMi9wdXNoLnJzCj4+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAwMC4uMjhmNDQxN2QxCj4+IC0tLSAvZGV2L251bGwK Pj4gKysrIGIvc3JjL2FwaTIvcHVzaC5ycwo+PiBAQCAtMCwwICsxLDE4MyBAQAo+PiArdXNlIGFu eWhvdzo6e2Zvcm1hdF9lcnIsIEVycm9yfTsKPj4gK3VzZSBmdXR1cmVzOjp7ZnV0dXJlOjpGdXR1 cmVFeHQsIHNlbGVjdH07Cj4+ICt1c2UgdHJhY2luZzo6aW5mbzsKPj4gKwo+PiArdXNlIHBic19h cGlfdHlwZXM6OnsKPj4gKyAgICBBdXRoaWQsIEJhY2t1cE5hbWVzcGFjZSwgR3JvdXBGaWx0ZXIs IFJhdGVMaW1pdENvbmZpZywgREFUQVNUT1JFX1NDSEVNQSwKPj4gKyAgICBHUk9VUF9GSUxURVJf TElTVF9TQ0hFTUEsIE5TX01BWF9ERVBUSF9SRURVQ0VEX1NDSEVNQSwgUFJJVl9EQVRBU1RPUkVf UkVBRCwKPj4gKyAgICBQUklWX1JFTU9URV9EQVRBU1RPUkVfQkFDS1VQLCBQUklWX1JFTU9URV9E QVRBU1RPUkVfUFJVTkUsIFJFTU9URV9JRF9TQ0hFTUEsCj4+ICsgICAgUkVNT1ZFX1ZBTklTSEVE X0JBQ0tVUFNfU0NIRU1BLCBUUkFOU0ZFUl9MQVNUX1NDSEVNQSwKPj4gK307Cj4+ICt1c2UgcHJv eG1veF9yZXN0X3NlcnZlcjo6V29ya2VyVGFzazsKPj4gK3VzZSBwcm94bW94X3JvdXRlcjo6e1Bl cm1pc3Npb24sIFJvdXRlciwgUnBjRW52aXJvbm1lbnR9Owo+PiArdXNlIHByb3htb3hfc2NoZW1h OjphcGk7Cj4+ICsKPj4gK3VzZSBwYnNfY29uZmlnOjpDYWNoZWRVc2VySW5mbzsKPj4gKwo+PiAr dXNlIGNyYXRlOjpzZXJ2ZXI6OnB1c2g6OntwdXNoX3N0b3JlLCBQdXNoUGFyYW1ldGVyc307Cj4+ ICsKPj4gKy8vLyBDaGVjayBpZiB0aGUgcHJvdmlkZWQgdXNlciBpcyBhbGxvd2VkIHRvIHJlYWQg ZnJvbSB0aGUgbG9jYWwgc291cmNlIGFuZCBhY3Qgb24gdGhlIHJlbW90ZQo+PiArLy8vIHRhcmdl dCBmb3IgcHVzaGluZyBjb250ZW50Cj4+ICtwdWIgZm4gY2hlY2tfcHVzaF9wcml2cygKPiAKPiBu b3QgdXNlZCBhbnl3aGVyZSBleGNlcHQgaGVyZSwgY291bGQgYmUgcHJpdmF0ZT8KCkFja2VkIQoK PiAKPj4gKyAgICBhdXRoX2lkOiAmQXV0aGlkLAo+PiArICAgIHN0b3JlOiAmc3RyLAo+PiArICAg IG5hbWVzcGFjZTogJkJhY2t1cE5hbWVzcGFjZSwKPj4gKyAgICByZW1vdGU6ICZzdHIsCj4+ICsg ICAgcmVtb3RlX3N0b3JlOiAmc3RyLAo+PiArICAgIHJlbW90ZV9uczogT3B0aW9uPCZCYWNrdXBO YW1lc3BhY2U+LAo+IAo+IHNpbmNlIHdlIGRvbid0IGFjdHVhbGx5IG5lZWQgdG8gc3VwcG9ydCBu b3Qgc2V0dGluZyB0aGUgcm9vdCBuYW1lc3BhY2UsIHRoZQo+IE9wdGlvbiBoZXJlIGNhbiBnbyBh d2F5Li4KCgpBY2tlZCEKCj4gCj4+ICsgICAgZGVsZXRlOiBib29sLAo+PiArKSAtPiBSZXN1bHQ8 KCksIEVycm9yPiB7Cj4+ICsgICAgbGV0IHVzZXJfaW5mbyA9IENhY2hlZFVzZXJJbmZvOjpuZXco KT87Cj4+ICsKPj4gKyAgICBsZXQgdGFyZ2V0X2FjbF9wYXRoID0gbWF0Y2ggcmVtb3RlX25zIHsK Pj4gKyAgICAgICAgU29tZShucykgPT4gbnMucmVtb3RlX2FjbF9wYXRoKHJlbW90ZSwgcmVtb3Rl X3N0b3JlKSwKPj4gKyAgICAgICAgTm9uZSA9PiB2ZWMhWyJyZW1vdGUiLCByZW1vdGUsIHJlbW90 ZV9zdG9yZV0sCj4+ICsgICAgfTsKPiAKPiB3aGljaCBtYWtlcyB0aGlzIHNpbXBsZXIKPiAKPj4g Kwo+PiArICAgIC8vIENoZWNrIHVzZXIgaXMgYWxsb3dlZCB0byBiYWNrdXAgdG8gcmVtb3RlLzxy ZW1vdGU+LzxkYXRhc3RvcmU+LzxuYW1lc3BhY2U+Cj4+ICsgICAgdXNlcl9pbmZvLmNoZWNrX3By aXZzKAo+PiArICAgICAgICBhdXRoX2lkLAo+PiArICAgICAgICAmdGFyZ2V0X2FjbF9wYXRoLAo+ PiArICAgICAgICBQUklWX1JFTU9URV9EQVRBU1RPUkVfQkFDS1VQLAo+PiArICAgICAgICBmYWxz ZSwKPj4gKyAgICApPzsKPj4gKwo+PiArICAgIGlmIGRlbGV0ZSB7Cj4+ICsgICAgICAgIC8vIENo ZWNrIHVzZXIgaXMgYWxsb3dlZCB0byBwcnVuZSByZW1vdGUgZGF0YXN0b3JlCj4+ICsgICAgICAg IHVzZXJfaW5mby5jaGVja19wcml2cygKPj4gKyAgICAgICAgICAgIGF1dGhfaWQsCj4+ICsgICAg ICAgICAgICAmdGFyZ2V0X2FjbF9wYXRoLAo+PiArICAgICAgICAgICAgUFJJVl9SRU1PVEVfREFU QVNUT1JFX1BSVU5FLAo+PiArICAgICAgICAgICAgZmFsc2UsCj4+ICsgICAgICAgICk/Owo+PiAr ICAgIH0KPj4gKwo+PiArICAgIC8vIENoZWNrIHVzZXIgaXMgYWxsb3dlZCB0byByZWFkIHNvdXJj ZSBkYXRhc3RvcmUKPj4gKyAgICB1c2VyX2luZm8uY2hlY2tfcHJpdnMoCj4+ICsgICAgICAgIGF1 dGhfaWQsCj4+ICsgICAgICAgICZuYW1lc3BhY2UuYWNsX3BhdGgoc3RvcmUpLAo+PiArICAgICAg ICBQUklWX0RBVEFTVE9SRV9SRUFELAo+IAo+IGlzbid0IHRoaXMgdG9vIHJlc3RyaWN0aXZlPyBz aG91bGQgYmUgUFJJVl9EQVRBU1RPUkVfQkFDS1VQICpvciogUkVBRD8KPiAKPiB0aGUgcHVzaCB0 YXNrIHdpbGwgdGhlbiBmaWx0ZXIgdGhlIGxvY2FsIG5hbWVzcGFjZXMvYmFja3VwIGdyb3Vwcy8u LiBieSB3aGF0Cj4gdGhlIHVzZXIgaXMgYWxsb3dlZCB0byBzZWUuLgoKQWdyZWVkLCBleHRlbmRl ZCB0aGUgY2hlY2sgdG8gYWxzbyBhbGxvdyBpZiB1c2VyIGhhcyBQUklWX0RBVEFTVE9SRV9CQUNL VVAKCj4gCj4+ICsgICAgICAgIGZhbHNlLAo+PiArICAgICk/Owo+PiArCj4+ICsgICAgT2soKCkp Cj4+ICt9Cj4+ICsKPj4gKyNbYXBpKAo+PiArICAgIGlucHV0OiB7Cj4+ICsgICAgICAgIHByb3Bl cnRpZXM6IHsKPj4gKyAgICAgICAgICAgIHN0b3JlOiB7Cj4+ICsgICAgICAgICAgICAgICAgc2No ZW1hOiBEQVRBU1RPUkVfU0NIRU1BLAo+PiArICAgICAgICAgICAgfSwKPj4gKyAgICAgICAgICAg IG5zOiB7Cj4+ICsgICAgICAgICAgICAgICAgdHlwZTogQmFja3VwTmFtZXNwYWNlLAo+PiArICAg ICAgICAgICAgICAgIG9wdGlvbmFsOiB0cnVlLAo+PiArICAgICAgICAgICAgfSwKPj4gKyAgICAg ICAgICAgIHJlbW90ZTogewo+PiArICAgICAgICAgICAgICAgIHNjaGVtYTogUkVNT1RFX0lEX1ND SEVNQSwKPj4gKyAgICAgICAgICAgIH0sCj4+ICsgICAgICAgICAgICAicmVtb3RlLXN0b3JlIjog ewo+PiArICAgICAgICAgICAgICAgIHNjaGVtYTogREFUQVNUT1JFX1NDSEVNQSwKPj4gKyAgICAg ICAgICAgIH0sCj4+ICsgICAgICAgICAgICAicmVtb3RlLW5zIjogewo+PiArICAgICAgICAgICAg ICAgIHR5cGU6IEJhY2t1cE5hbWVzcGFjZSwKPj4gKyAgICAgICAgICAgICAgICBvcHRpb25hbDog dHJ1ZSwKPj4gKyAgICAgICAgICAgIH0sCj4+ICsgICAgICAgICAgICAicmVtb3ZlLXZhbmlzaGVk Ijogewo+PiArICAgICAgICAgICAgICAgIHNjaGVtYTogUkVNT1ZFX1ZBTklTSEVEX0JBQ0tVUFNf U0NIRU1BLAo+PiArICAgICAgICAgICAgICAgIG9wdGlvbmFsOiB0cnVlLAo+PiArICAgICAgICAg ICAgfSwKPj4gKyAgICAgICAgICAgICJtYXgtZGVwdGgiOiB7Cj4+ICsgICAgICAgICAgICAgICAg c2NoZW1hOiBOU19NQVhfREVQVEhfUkVEVUNFRF9TQ0hFTUEsCj4+ICsgICAgICAgICAgICAgICAg b3B0aW9uYWw6IHRydWUsCj4+ICsgICAgICAgICAgICB9LAo+PiArICAgICAgICAgICAgImdyb3Vw LWZpbHRlciI6IHsKPj4gKyAgICAgICAgICAgICAgICBzY2hlbWE6IEdST1VQX0ZJTFRFUl9MSVNU X1NDSEVNQSwKPj4gKyAgICAgICAgICAgICAgICBvcHRpb25hbDogdHJ1ZSwKPj4gKyAgICAgICAg ICAgIH0sCj4+ICsgICAgICAgICAgICBsaW1pdDogewo+PiArICAgICAgICAgICAgICAgIHR5cGU6 IFJhdGVMaW1pdENvbmZpZywKPj4gKyAgICAgICAgICAgICAgICBmbGF0dGVuOiB0cnVlLAo+PiAr ICAgICAgICAgICAgfSwKPj4gKyAgICAgICAgICAgICJ0cmFuc2Zlci1sYXN0Ijogewo+PiArICAg ICAgICAgICAgICAgIHNjaGVtYTogVFJBTlNGRVJfTEFTVF9TQ0hFTUEsCj4+ICsgICAgICAgICAg ICAgICAgb3B0aW9uYWw6IHRydWUsCj4+ICsgICAgICAgICAgICB9LAo+PiArICAgICAgICB9LAo+ PiArICAgIH0sCj4+ICsgICAgYWNjZXNzOiB7Cj4+ICsgICAgICAgIGRlc2NyaXB0aW9uOiByIyMj IlRoZSB1c2VyIG5lZWRzIFJlbW90ZS5CYWNrdXAgcHJpdmlsZWdlIG9uICcvcmVtb3RlL3tyZW1v dGV9L3tyZW1vdGUtc3RvcmV9Jwo+PiArYW5kIG5lZWRzIHRvIG93biB0aGUgYmFja3VwIGdyb3Vw LiBEYXRhc3RvcmUuUmVhZCBpcyByZXF1aXJlZCBvbiAnL2RhdGFzdG9yZS97c3RvcmV9Jy4KPj4g K1RoZSBkZWxldGUgZmxhZyBhZGRpdGlvbmFsbHkgcmVxdWlyZXMgdGhlIFJlbW90ZS5QcnVuZSBw cml2aWxlZ2Ugb24gJy9yZW1vdGUve3JlbW90ZX0ve3JlbW90ZS1zdG9yZX0nLgo+IAo+IHRoaXMg aXMgcGFydGx5IHdyb25nIGFuZC9vciB3ZWlyZGx5IHBocmFzZWQgOykgbWF5YmUgc29tZXRoaW5n IGxpa2UKPiAKPiBUaGUgdXNlciBuZWVkcyAoYXQgbGVhc3QpIFJlbW90ZS5EYXRhc3RvcmVCYWNr dXAgb24gJy9yZW1vdGUve3JlbW90ZX0ve3JlbW90ZS1zdG9yZX1bL3tyZW1vdGUtbnN9XScsIGFu ZCBlaXRoZXIgRGF0YXN0b3JlLkJhY2t1cCBvciBEYXRhc3RvcmUuUmVhZCBvbiAnL2RhdGFzdG9y ZS97c3RvcmV9Wy97bnN9XScuIFRoZSAncmVtb3ZlLXZhbmlzaGVkJyBwYXJhbWV0ZXIgbWlnaHQg cmVxdWlyZSBhZGRpdGlvbmFsIHByaXZpbGVnZXMuCgpZZWFoLCB0aGF0IHdhcyBpbmRlZWQgbm90 IGFkYXB0ZWQgYW5kIGlzIGZyb20gYSBwcmV2aW91cyBpdGVyYXRpb24sIAphZGFwdGVkIHRvIHlv dXIgc3VnZ2VzdGlvbnMuCgo+IAo+PiArIiMjIywKPj4gKyAgICAgICAgcGVybWlzc2lvbjogJlBl cm1pc3Npb246OkFueWJvZHksCj4+ICsgICAgfSwKPj4gKyldCj4+ICsvLy8gUHVzaCBzdG9yZSB0 byBvdGhlciByZXBvc2l0b3J5Cj4+ICsjW2FsbG93KGNsaXBweTo6dG9vX21hbnlfYXJndW1lbnRz KV0KPj4gK2FzeW5jIGZuIHB1c2goCj4+ICsgICAgc3RvcmU6IFN0cmluZywKPj4gKyAgICBuczog T3B0aW9uPEJhY2t1cE5hbWVzcGFjZT4sCj4+ICsgICAgcmVtb3RlOiBTdHJpbmcsCj4+ICsgICAg cmVtb3RlX3N0b3JlOiBTdHJpbmcsCj4+ICsgICAgcmVtb3RlX25zOiBPcHRpb248QmFja3VwTmFt ZXNwYWNlPiwKPj4gKyAgICByZW1vdmVfdmFuaXNoZWQ6IE9wdGlvbjxib29sPiwKPj4gKyAgICBt YXhfZGVwdGg6IE9wdGlvbjx1c2l6ZT4sCj4+ICsgICAgZ3JvdXBfZmlsdGVyOiBPcHRpb248VmVj PEdyb3VwRmlsdGVyPj4sCj4+ICsgICAgbGltaXQ6IFJhdGVMaW1pdENvbmZpZywKPj4gKyAgICB0 cmFuc2Zlcl9sYXN0OiBPcHRpb248dXNpemU+LAo+PiArICAgIHJwY2VudjogJm11dCBkeW4gUnBj RW52aXJvbm1lbnQsCj4+ICspIC0+IFJlc3VsdDxTdHJpbmcsIEVycm9yPiB7Cj4+ICsgICAgbGV0 IGF1dGhfaWQ6IEF1dGhpZCA9IHJwY2Vudi5nZXRfYXV0aF9pZCgpLnVud3JhcCgpLnBhcnNlKCk/ Owo+PiArICAgIGxldCBkZWxldGUgPSByZW1vdmVfdmFuaXNoZWQudW53cmFwX29yKGZhbHNlKTsK Pj4gKyAgICBsZXQgbnMgPSBucy51bndyYXBfb3JfZGVmYXVsdCgpOwo+IAo+IHRoaXMgY291bGQg YWxzbyBiZSBkb25lIGZvciByZW1vdGVfbnMKCkFja2VkIQoKPiAKPj4gKwo+PiArICAgIGNoZWNr X3B1c2hfcHJpdnMoCj4+ICsgICAgICAgICZhdXRoX2lkLAo+PiArICAgICAgICAmc3RvcmUsCj4+ ICsgICAgICAgICZucywKPj4gKyAgICAgICAgJnJlbW90ZSwKPj4gKyAgICAgICAgJnJlbW90ZV9z dG9yZSwKPj4gKyAgICAgICAgcmVtb3RlX25zLmFzX3JlZigpLAo+PiArICAgICAgICBkZWxldGUs Cj4+ICsgICAgKT87Cj4+ICsKPj4gKyAgICBsZXQgcHVzaF9wYXJhbXMgPSBQdXNoUGFyYW1ldGVy czo6bmV3KAo+PiArICAgICAgICAmc3RvcmUsCj4+ICsgICAgICAgIG5zLAo+PiArICAgICAgICAm cmVtb3RlLAo+PiArICAgICAgICAmcmVtb3RlX3N0b3JlLAo+PiArICAgICAgICByZW1vdGVfbnMu dW53cmFwX29yX2RlZmF1bHQoKSwKPiAKPiBzaW5jZSB3ZSB1bndyYXAgaXQgaGVyZSBhbnl3YXkg OykKCkFja2VkIQoKPiAKPj4gKyAgICAgICAgYXV0aF9pZC5jbG9uZSgpLAo+PiArICAgICAgICBy ZW1vdmVfdmFuaXNoZWQsCj4+ICsgICAgICAgIG1heF9kZXB0aCwKPj4gKyAgICAgICAgZ3JvdXBf ZmlsdGVyLAo+PiArICAgICAgICBsaW1pdCwKPj4gKyAgICAgICAgdHJhbnNmZXJfbGFzdCwKPj4g KyAgICApCj4+ICsgICAgLmF3YWl0PzsKPj4gKwo+PiArICAgIGxldCB1cGlkX3N0ciA9IFdvcmtl clRhc2s6OnNwYXduKAo+PiArICAgICAgICAic3luYyIsCj4+ICsgICAgICAgIFNvbWUoc3RvcmUu Y2xvbmUoKSksCj4+ICsgICAgICAgIGF1dGhfaWQudG9fc3RyaW5nKCksCj4+ICsgICAgICAgIHRy dWUsCj4+ICsgICAgICAgIG1vdmUgfHdvcmtlcnwgYXN5bmMgbW92ZSB7Cj4+ICsgICAgICAgICAg ICBpbmZvISgicHVzaCBkYXRhc3RvcmUgJ3tzdG9yZX0nIHRvICd7cmVtb3RlfS97cmVtb3RlX3N0 b3JlfSciKTsKPiAKPiB0aGlzIGlzIGEgYml0IHJlZHVuZGFudCAoYW5kIGluY29tcGxldGUpLCB0 aGUgcHVzaCBvdXRwdXQgd2lsbCBjb250YWluIHRoaXMKPiBjb3JyZWN0bHkgZXh0ZW5kZWQgd2l0 aCBuYW1lc3BhY2UgaW5mb3JtYXRpb24uLgoKT2theSwgYWdyZWVkLiBSZW1vdmVkIHRoaXMgYW5k IHRoZSBsb2cgb3V0cHV0IGJlbG93LgoKPiAKPj4gKwo+PiArICAgICAgICAgICAgbGV0IHB1c2hf ZnV0dXJlID0gcHVzaF9zdG9yZShwdXNoX3BhcmFtcyk7Cj4+ICsgICAgICAgICAgICAoc2VsZWN0 ISB7Cj4+ICsgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHB1c2hfZnV0dXJlLmZ1c2UoKSA9PiBz dWNjZXNzLAo+PiArICAgICAgICAgICAgICAgIGFib3J0ID0gd29ya2VyLmFib3J0X2Z1dHVyZSgp Lm1hcCh8X3wgRXJyKGZvcm1hdF9lcnIhKCJwdXNoIGFib3J0ZWQiKSkpID0+IGFib3J0LAo+PiAr ICAgICAgICAgICAgfSk/Owo+PiArCj4+ICsgICAgICAgICAgICBpbmZvISgicHVzaCBkYXRhc3Rv cmUgJ3tzdG9yZX0nIGVuZCIpOwo+IAo+IHNhbWUgaGVyZQo+IAo+PiArCj4+ICsgICAgICAgICAg ICBPaygoKSkKPj4gKyAgICAgICAgfSwKPj4gKyAgICApPzsKPj4gKwo+PiArICAgIE9rKHVwaWRf c3RyKQo+PiArfQo+PiArCj4+ICtwdWIgY29uc3QgUk9VVEVSOiBSb3V0ZXIgPSBSb3V0ZXI6Om5l dygpLnBvc3QoJkFQSV9NRVRIT0RfUFVTSCk7Cj4+IC0tIAo+PiAyLjM5LjUKPj4KPj4KPj4KPj4g X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gcGJzLWRl dmVsIG1haWxpbmcgbGlzdAo+PiBwYnMtZGV2ZWxAbGlzdHMucHJveG1veC5jb20KPj4gaHR0cHM6 Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcGJzLWRldmVsCj4+ Cj4+Cj4gUmV0dXJuLVBhdGg6IDxmLmdydWVuYmljaGxlckBwcm94bW94LmNvbT4KPiBEZWxpdmVy ZWQtVG86IGMuZWJuZXJAcHJveG1veC5jb20KPiBSZWNlaXZlZDogZnJvbSByb25qYS5taXRzLmxh bgo+IAlieSByb25qYS5taXRzLmxhbiB3aXRoIExNVFAKPiAJaWQgQU5XMUVFbUpLMmYzYVFBQXh4 YlRKQQo+IAkoZW52ZWxvcGUtZnJvbSA8Zi5ncnVlbmJpY2hsZXJAcHJveG1veC5jb20+KQo+IAlm b3IgPGMuZWJuZXJAcHJveG1veC5jb20+OyBXZWQsIDA2IE5vdiAyMDI0IDE2OjIwOjQxICswMTAw Cj4gUmVjZWl2ZWQ6IGZyb20gbG9jYWxob3N0ICh1bmtub3duIFsxOTIuMTY4LjE2LjM3XSkKPiAJ Ynkgcm9uamEubWl0cy5sYW4gKFBvc3RmaXgpIHdpdGggRVNNVFBTQSBpZCAzNjQ3MEY2NDkxMjsK PiAJV2VkLCAgNiBOb3YgMjAyNCAxNjoyMDo0MSArMDEwMCAoQ0VUKQo+IENvbnRlbnQtVHlwZTog dGV4dC9wbGFpbjsgY2hhcnNldD10Zi04Igo+IE1JTUUtVmVyc2lvbjogMS4wCj4gQ29udGVudC1U cmFuc2Zlci1FbmNvZGluZzogcXVvdGVkLXByaW50YWJsZQo+IEluLVJlcGx5LVRvOiA8MjAyNDEw MzExMjE1MTkuNDM0MzM3LTIwLWMuZWJuZXJAcHJveG1veC5jb20+Cj4gUmVmZXJlbmNlczogPDIw MjQxMDMxMTIxNTE5LjQzNDMzNy0xLWMuZWJuZXJAcHJveG1veC5jb20+IDwyMDI0MTAzMTEyMTUx OS40MzQzMzctMjAtYy5lYm5lckBwcm94bW94LmNvbT4KPiBTdWJqZWN0OiBSZTogW3Bicy1kZXZl bF0gW1BBVENIIHY2IHByb3htb3gtYmFja3VwIDE5LzI5XSBhcGk6IHN5bmMgam9iczogZXhwb3Nl IG9wdGlvbmFsIGBzeW5jLWRpcmVjdGlvbmAgcGFyYW1ldGVyCj4gRnJvbTogRmFiaWFuID10Zi04 P3E/R3LDvG5iaWNobGVyPz0gPGYuZ3J1ZW5iaWNobGVyQHByb3htb3guY29tPgo+IFRvOiBDaHJp c3RpYW4gRWJuZXIgPGMuZWJuZXJAcHJveG1veC5jb20+LCBwYnMtZGV2ZWxAbGlzdHMucHJveG1v eC5jb20KPiBEYXRlOiBXZWQsIDA2IE5vdiAyMDI0IDE2OjIwOjM1ICswMTAwCj4gTWVzc2FnZS1J RDogPDE3MzA5MDY0MzUxOS43OTA3Mi4yOTIzNDEzNzUzMTI5NzE1NzYyQHl1bmEucHJveG1veC5j b20+Cj4gVXNlci1BZ2VudDogYWxvdC8wLjEwCj4gCj4gUXVvdGluZyBDaHJpc3RpYW4gRWJuZXIg KDIwMjQtMTAtMzEgMTM6MTU6MDkpCj4+IEV4cG9zZXMgYW5kIHN3aXRjaCB0aGUgY29uZmlnIHR5 cGUgZm9yIHN5bmMgam9iIG9wZXJhdGlvbnMgYmFzZWQKPj4gb24gdGhlIGBzeW5jLWRpcmVjdGlv bmAgcGFyYW1ldGVyLCBleHBvc2VkIG9uIHJlcXVpcmVkIGFwaSBlbmRwb2ludHMuCj4+Cj4+IElm IG5vdCBzZXQsIHRoZSBkZWZhdWx0IGNvbmZpZyB0eXBlIGlzIGBzeW5jYCBhbmQgdGhlIGRlZmF1 bHQgc3luYwo+PiBkaXJlY3Rpb24gaXMgYHB1bGxgIGZvciBmdWxsIGJhY2t3YXJkcyBjb21wYXRp YmlsaXR5LiBXaGVuZXZlcgo+PiBwb3NzaWJsZSwgZGV0ZXJpbW5lIHRoZSBzeW5jIGRpcmVjdGlv biBhbmQgY29uZmlnIHR5cGUgZnJvbSB0aGUgc3luYwo+IAo+IHR5cG8gImRldGVybWluZSIKPiAK Pj4gam9iIGNvbmZpZyBkaXJlY3RseSByYXRoZXIgdGhhbiByZXF1aXJpbmcgaXQgYXMgb3B0aW9u YWwgYXBpCj4+IHBhcmFtZXRlci4KPj4KPj4gRnVydGhlciwgZXh0ZW5kIHJlYWQgYW5kIG1vZGlm eSBhY2Nlc3MgY2hlY2tzIGJ5IHN5bmMgZGlyZWN0aW9uIHRvCj4+IGNvbmRpdGlvbmFsbHkgY2hl Y2sgZm9yIHRoZSByZXF1aXJlZCBwZXJtaXNzaW9ucyBpbiBwdWxsIGFuZCBwdXNoCj4+IGRpcmVj dGlvbi4KPj4KPj4gU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEVibmVyIDxjLmVibmVyQHByb3ht b3guY29tPgo+PiAtLS0KPj4gY2hhbmdlcyBzaW5jZSB2ZXJzaW9uIDU6Cj4+IC0gU3F1YXNoZWQg cGVybWlzc2lvbiBjaGVjayBwYXRjaGVzIGludG8gdGhpcyBvbmUsIGFzIHRoZXkgbWFrZSBub3Qg bXVjaAo+PiAgICBzZW5zZSB3aXRob3V0IHRoaXMKPj4gLSBPbmx5IGV4cG9zZSBvcHRpb25hbCBz eW5jLWRpcmVjdGlvbiBwYXJhbWV0ZXIgZm9yIGFwaSBlbmRwb2ludHMgd2hpY2gKPj4gICAgcmVx dWlyZSB0aGVtLCB1c2UgdGhlIGpvYiBjb25maWcgdG8gZGV0ZXJtaW5lIHN5bmMtZGlyZWN0aW9u IGFuZC9vcgo+PiAgICBjb25maWctdHlwZSBvdGhlcndpc2UuCj4+Cj4+ICAgc3JjL2FwaTIvYWRt aW4vc3luYy5ycyAgICAgICAgICAgICAgIHwgIDM0ICsrLS0KPj4gICBzcmMvYXBpMi9jb25maWcv ZGF0YXN0b3JlLnJzICAgICAgICAgfCAgMTEgKy0KPj4gICBzcmMvYXBpMi9jb25maWcvbm90aWZp Y2F0aW9ucy9tb2QucnMgfCAgMTkgKy0KPj4gICBzcmMvYXBpMi9jb25maWcvc3luYy5ycyAgICAg ICAgICAgICAgfCAyODAgKysrKysrKysrKysrKysrKysrKystLS0tLS0tCj4+ICAgc3JjL2Jpbi9w cm94bW94LWJhY2t1cC1wcm94eS5ycyAgICAgIHwgIDExICstCj4+ICAgNSBmaWxlcyBjaGFuZ2Vk LCAyNjEgaW5zZXJ0aW9ucygrKSwgOTQgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9z cmMvYXBpMi9hZG1pbi9zeW5jLnJzIGIvc3JjL2FwaTIvYWRtaW4vc3luYy5ycwo+PiBpbmRleCBi ZTMyNDU2NGMuLjhhMjQyYjFjMyAxMDA2NDQKPj4gLS0tIGEvc3JjL2FwaTIvYWRtaW4vc3luYy5y cwo+PiArKysgYi9zcmMvYXBpMi9hZG1pbi9zeW5jLnJzCj4+IEBAIC0xLDYgKzEsNyBAQAo+PiAg IC8vISBEYXRhc3RvcmUgU3luY2hyb25pemF0aW9uIEpvYiBNYW5hZ2VtZW50Cj4+ICAgCj4+ICAg dXNlIGFueWhvdzo6e2JhaWwsIGZvcm1hdF9lcnIsIEVycm9yfTsKPj4gK3VzZSBzZXJkZTo6RGVz ZXJpYWxpemU7Cj4+ICAgdXNlIHNlcmRlX2pzb246OlZhbHVlOwo+PiAgIAo+PiAgIHVzZSBwcm94 bW94X3JvdXRlcjo6ewo+PiBAQCAtMjksNiArMzAsMTAgQEAgdXNlIGNyYXRlOjp7Cj4+ICAgICAg ICAgICAgICAgICAgIHNjaGVtYTogREFUQVNUT1JFX1NDSEVNQSwKPj4gICAgICAgICAgICAgICAg ICAgb3B0aW9uYWw6IHRydWUsCj4+ICAgICAgICAgICAgICAgfSwKPj4gKyAgICAgICAgICAgICJz eW5jLWRpcmVjdGlvbiI6IHsKPj4gKyAgICAgICAgICAgICAgICB0eXBlOiBTeW5jRGlyZWN0aW9u LAo+PiArICAgICAgICAgICAgICAgIG9wdGlvbmFsOiB0cnVlLAo+PiArICAgICAgICAgICAgfSwK Pj4gICAgICAgICAgIH0sCj4+ICAgICAgIH0sCj4+ICAgICAgIHJldHVybnM6IHsKPj4gQEAgLTQ0 LDYgKzQ5LDcgQEAgdXNlIGNyYXRlOjp7Cj4+ICAgLy8vIExpc3QgYWxsIHN5bmMgam9icwo+PiAg IHB1YiBmbiBsaXN0X3N5bmNfam9icygKPj4gICAgICAgc3RvcmU6IE9wdGlvbjxTdHJpbmc+LAo+ PiArICAgIHN5bmNfZGlyZWN0aW9uOiBPcHRpb248U3luY0RpcmVjdGlvbj4sCj4+ICAgICAgIF9w YXJhbTogVmFsdWUsCj4+ICAgICAgIHJwY2VudjogJm11dCBkeW4gUnBjRW52aXJvbm1lbnQsCj4+ ICAgKSAtPiBSZXN1bHQ8VmVjPFN5bmNKb2JTdGF0dXM+LCBFcnJvcj4gewo+PiBAQCAtNTIsOCAr NTgsOSBAQCBwdWIgZm4gbGlzdF9zeW5jX2pvYnMoCj4+ICAgCj4+ICAgICAgIGxldCAoY29uZmln LCBkaWdlc3QpID0gc3luYzo6Y29uZmlnKCk/Owo+PiAgIAo+PiArICAgIGxldCBzeW5jX2RpcmVj dGlvbiA9IHN5bmNfZGlyZWN0aW9uLnVud3JhcF9vcl9kZWZhdWx0KCk7Cj4+ICAgICAgIGxldCBq b2JfY29uZmlnX2l0ZXIgPSBjb25maWcKPj4gLSAgICAgICAgLmNvbnZlcnRfdG9fdHlwZWRfYXJy YXkoInN5bmMiKT8KPj4gKyAgICAgICAgLmNvbnZlcnRfdG9fdHlwZWRfYXJyYXkoc3luY19kaXJl Y3Rpb24uYXNfY29uZmlnX3R5cGVfc3RyKCkpPwo+PiAgICAgICAgICAgLmludG9faXRlcigpCj4+ ICAgICAgICAgICAuZmlsdGVyKHxqb2I6ICZTeW5jSm9iQ29uZmlnfCB7Cj4+ICAgICAgICAgICAg ICAgaWYgbGV0IFNvbWUoc3RvcmUpID0gJnN0b3JlIHsKPj4gQEAgLTYyLDcgKzY5LDkgQEAgcHVi IGZuIGxpc3Rfc3luY19qb2JzKAo+PiAgICAgICAgICAgICAgICAgICB0cnVlCj4+ICAgICAgICAg ICAgICAgfQo+PiAgICAgICAgICAgfSkKPj4gLSAgICAgICAgLmZpbHRlcih8am9iOiAmU3luY0pv YkNvbmZpZ3wgY2hlY2tfc3luY19qb2JfcmVhZF9hY2Nlc3MoJnVzZXJfaW5mbywgJmF1dGhfaWQs IGpvYikpOwo+PiArICAgICAgICAuZmlsdGVyKHxqb2I6ICZTeW5jSm9iQ29uZmlnfCB7Cj4+ICsg ICAgICAgICAgICBjaGVja19zeW5jX2pvYl9yZWFkX2FjY2VzcygmdXNlcl9pbmZvLCAmYXV0aF9p ZCwgam9iLCBzeW5jX2RpcmVjdGlvbikKPj4gKyAgICAgICAgfSk7Cj4+ICAgCj4+ICAgICAgIGxl dCBtdXQgbGlzdCA9IFZlYzo6bmV3KCk7Cj4+ICAgCj4+IEBAIC0xMDYsMjQgKzExNSwyMyBAQCBw dWIgZm4gcnVuX3N5bmNfam9iKAo+PiAgICAgICBsZXQgdXNlcl9pbmZvID0gQ2FjaGVkVXNlcklu Zm86Om5ldygpPzsKPj4gICAKPj4gICAgICAgbGV0IChjb25maWcsIF9kaWdlc3QpID0gc3luYzo6 Y29uZmlnKCk/Owo+PiAtICAgIGxldCBzeW5jX2pvYjogU3luY0pvYkNvbmZpZyA9IGNvbmZpZy5s b29rdXAoInN5bmMiLCAmaWQpPzsKPj4gKyAgICBsZXQgKGNvbmZpZ190eXBlLCBjb25maWdfc2Vj dGlvbikgPSBjb25maWcKPj4gKyAgICAgICAgLnNlY3Rpb25zCj4+ICsgICAgICAgIC5nZXQoJmlk KQo+PiArICAgICAgICAub2tfb3JfZWxzZSh8fCBmb3JtYXRfZXJyISgiTm8gc3luYyBqb2Igd2l0 aCBpZCAne2lkfScgZm91bmQgaW4gY29uZmlnIikpPzsKPj4gKwo+PiArICAgIGxldCBzeW5jX2Rp cmVjdGlvbiA9IFN5bmNEaXJlY3Rpb246OmZyb21fY29uZmlnX3R5cGVfc3RyKGNvbmZpZ190eXBl KT87Cj4+ICsgICAgbGV0IHN5bmNfam9iID0gU3luY0pvYkNvbmZpZzo6ZGVzZXJpYWxpemUoY29u ZmlnX3NlY3Rpb24pPzsKPj4gICAKPj4gLSAgICBpZiAhY2hlY2tfc3luY19qb2JfbW9kaWZ5X2Fj Y2VzcygmdXNlcl9pbmZvLCAmYXV0aF9pZCwgJnN5bmNfam9iKSB7Cj4+IC0gICAgICAgIGJhaWwh KCJwZXJtaXNzaW9uIGNoZWNrIGZhaWxlZCIpOwo+PiArICAgIGlmICFjaGVja19zeW5jX2pvYl9t b2RpZnlfYWNjZXNzKCZ1c2VyX2luZm8sICZhdXRoX2lkLCAmc3luY19qb2IsIHN5bmNfZGlyZWN0 aW9uKSB7Cj4+ICsgICAgICAgIGJhaWwhKCJwZXJtaXNzaW9uIGNoZWNrIGZhaWxlZCwgJ3thdXRo X2lkfScgaXMgbWlzc2luZyBhY2Nlc3MiKTsKPj4gICAgICAgfQo+PiAgIAo+PiAgICAgICBsZXQg am9iID0gSm9iOjpuZXcoInN5bmNqb2IiLCAmaWQpPzsKPj4gICAKPj4gICAgICAgbGV0IHRvX3N0 ZG91dCA9IHJwY2Vudi5lbnZfdHlwZSgpID09IFJwY0Vudmlyb25tZW50VHlwZTo6Q0xJOwo+PiAg IAo+PiAtICAgIGxldCB1cGlkX3N0ciA9IGRvX3N5bmNfam9iKAo+PiAtICAgICAgICBqb2IsCj4+ IC0gICAgICAgIHN5bmNfam9iLAo+PiAtICAgICAgICAmYXV0aF9pZCwKPj4gLSAgICAgICAgTm9u ZSwKPj4gLSAgICAgICAgU3luY0RpcmVjdGlvbjo6UHVsbCwKPj4gLSAgICAgICAgdG9fc3Rkb3V0 LAo+PiAtICAgICk/Owo+PiArICAgIGxldCB1cGlkX3N0ciA9IGRvX3N5bmNfam9iKGpvYiwgc3lu Y19qb2IsICZhdXRoX2lkLCBOb25lLCBzeW5jX2RpcmVjdGlvbiwgdG9fc3Rkb3V0KT87Cj4+ICAg Cj4+ICAgICAgIE9rKHVwaWRfc3RyKQo+PiAgIH0KPj4gZGlmZiAtLWdpdCBhL3NyYy9hcGkyL2Nv bmZpZy9kYXRhc3RvcmUucnMgYi9zcmMvYXBpMi9jb25maWcvZGF0YXN0b3JlLnJzCj4+IGluZGV4 IGNhNmVkZjA1YS4uYzE1MWVkYTEwIDEwMDY0NAo+PiAtLS0gYS9zcmMvYXBpMi9jb25maWcvZGF0 YXN0b3JlLnJzCj4+ICsrKyBiL3NyYy9hcGkyL2NvbmZpZy9kYXRhc3RvcmUucnMKPj4gQEAgLTEz LDggKzEzLDkgQEAgdXNlIHByb3htb3hfdXVpZDo6VXVpZDsKPj4gICAKPj4gICB1c2UgcGJzX2Fw aV90eXBlczo6ewo+PiAgICAgICBBdXRoaWQsIERhdGFTdG9yZUNvbmZpZywgRGF0YVN0b3JlQ29u ZmlnVXBkYXRlciwgRGF0YXN0b3JlTm90aWZ5LCBEYXRhc3RvcmVUdW5pbmcsIEtlZXBPcHRpb25z LAo+PiAtICAgIE1haW50ZW5hbmNlTW9kZSwgUHJ1bmVKb2JDb25maWcsIFBydW5lSm9iT3B0aW9u cywgREFUQVNUT1JFX1NDSEVNQSwgUFJJVl9EQVRBU1RPUkVfQUxMT0NBVEUsCj4+IC0gICAgUFJJ Vl9EQVRBU1RPUkVfQVVESVQsIFBSSVZfREFUQVNUT1JFX01PRElGWSwgUFJPWE1PWF9DT05GSUdf RElHRVNUX1NDSEVNQSwgVVBJRF9TQ0hFTUEsCj4+ICsgICAgTWFpbnRlbmFuY2VNb2RlLCBQcnVu ZUpvYkNvbmZpZywgUHJ1bmVKb2JPcHRpb25zLCBTeW5jRGlyZWN0aW9uLCBEQVRBU1RPUkVfU0NI RU1BLAo+PiArICAgIFBSSVZfREFUQVNUT1JFX0FMTE9DQVRFLCBQUklWX0RBVEFTVE9SRV9BVURJ VCwgUFJJVl9EQVRBU1RPUkVfTU9ESUZZLAo+PiArICAgIFBST1hNT1hfQ09ORklHX0RJR0VTVF9T Q0hFTUEsIFVQSURfU0NIRU1BLAo+PiAgIH07Cj4+ICAgdXNlIHBic19jb25maWc6OkJhY2t1cExv Y2tHdWFyZDsKPj4gICB1c2UgcGJzX2RhdGFzdG9yZTo6Y2h1bmtfc3RvcmU6OkNodW5rU3RvcmU7 Cj4+IEBAIC00OTgsOCArNDk5LDEwIEBAIHB1YiBhc3luYyBmbiBkZWxldGVfZGF0YXN0b3JlKAo+ PiAgICAgICAgICAgZm9yIGpvYiBpbiBsaXN0X3ZlcmlmaWNhdGlvbl9qb2JzKFNvbWUobmFtZS5j bG9uZSgpKSwgVmFsdWU6Ok51bGwsIHJwY2Vudik/IHsKPj4gICAgICAgICAgICAgICBkZWxldGVf dmVyaWZpY2F0aW9uX2pvYihqb2IuY29uZmlnLmlkLCBOb25lLCBycGNlbnYpPwo+PiAgICAgICAg ICAgfQo+PiAtICAgICAgICBmb3Igam9iIGluIGxpc3Rfc3luY19qb2JzKFNvbWUobmFtZS5jbG9u ZSgpKSwgVmFsdWU6Ok51bGwsIHJwY2Vudik/IHsKPj4gLSAgICAgICAgICAgIGRlbGV0ZV9zeW5j X2pvYihqb2IuY29uZmlnLmlkLCBOb25lLCBycGNlbnYpPwo+PiArICAgICAgICBmb3IgZGlyZWN0 aW9uIGluIFtTeW5jRGlyZWN0aW9uOjpQdWxsLCBTeW5jRGlyZWN0aW9uOjpQdXNoXSB7Cj4+ICsg ICAgICAgICAgICBmb3Igam9iIGluIGxpc3Rfc3luY19qb2JzKFNvbWUobmFtZS5jbG9uZSgpKSwg U29tZShkaXJlY3Rpb24pLCBWYWx1ZTo6TnVsbCwgcnBjZW52KT8gewo+PiArICAgICAgICAgICAg ICAgIGRlbGV0ZV9zeW5jX2pvYihqb2IuY29uZmlnLmlkLCBOb25lLCBycGNlbnYpPwo+PiArICAg ICAgICAgICAgfQo+PiAgICAgICAgICAgfQo+PiAgICAgICAgICAgZm9yIGpvYiBpbiBsaXN0X3By dW5lX2pvYnMoU29tZShuYW1lLmNsb25lKCkpLCBWYWx1ZTo6TnVsbCwgcnBjZW52KT8gewo+PiAg ICAgICAgICAgICAgIGRlbGV0ZV9wcnVuZV9qb2Ioam9iLmNvbmZpZy5pZCwgTm9uZSwgcnBjZW52 KT8KPj4gZGlmZiAtLWdpdCBhL3NyYy9hcGkyL2NvbmZpZy9ub3RpZmljYXRpb25zL21vZC5ycyBi L3NyYy9hcGkyL2NvbmZpZy9ub3RpZmljYXRpb25zL21vZC5ycwo+PiBpbmRleCBkZmU4MmVkMDMu LjMxYzQ4NTFjMSAxMDA2NDQKPj4gLS0tIGEvc3JjL2FwaTIvY29uZmlnL25vdGlmaWNhdGlvbnMv bW9kLnJzCj4+ICsrKyBiL3NyYy9hcGkyL2NvbmZpZy9ub3RpZmljYXRpb25zL21vZC5ycwo+PiBA QCAtOSw3ICs5LDcgQEAgdXNlIHByb3htb3hfc2NoZW1hOjphcGk7Cj4+ICAgdXNlIHByb3htb3hf c29ydGFibGVfbWFjcm86OnNvcnRhYmxlOwo+PiAgIAo+PiAgIHVzZSBjcmF0ZTo6YXBpMjo6YWRt aW46OmRhdGFzdG9yZTo6Z2V0X2RhdGFzdG9yZV9saXN0Owo+PiAtdXNlIHBic19hcGlfdHlwZXM6 OlBSSVZfU1lTX0FVRElUOwo+PiArdXNlIHBic19hcGlfdHlwZXM6OntTeW5jRGlyZWN0aW9uLCBQ UklWX1NZU19BVURJVH07Cj4+ICAgCj4+ICAgdXNlIGNyYXRlOjphcGkyOjphZG1pbjo6cHJ1bmU6 Omxpc3RfcHJ1bmVfam9iczsKPj4gICB1c2UgY3JhdGU6OmFwaTI6OmFkbWluOjpzeW5jOjpsaXN0 X3N5bmNfam9iczsKPj4gQEAgLTE1NCwxMyArMTU0LDE1IEBAIHB1YiBmbiBnZXRfdmFsdWVzKAo+ PiAgICAgICAgICAgfSk7Cj4+ICAgICAgIH0KPj4gICAKPj4gLSAgICBsZXQgc3luY19qb2JzID0g bGlzdF9zeW5jX2pvYnMoTm9uZSwgcGFyYW0uY2xvbmUoKSwgcnBjZW52KT87Cj4+IC0gICAgZm9y IGpvYiBpbiBzeW5jX2pvYnMgewo+PiAtICAgICAgICB2YWx1ZXMucHVzaChNYXRjaGFibGVWYWx1 ZSB7Cj4+IC0gICAgICAgICAgICBmaWVsZDogImpvYi1pZCIuaW50bygpLAo+PiAtICAgICAgICAg ICAgdmFsdWU6IGpvYi5jb25maWcuaWQsCj4+IC0gICAgICAgICAgICBjb21tZW50OiBqb2IuY29u ZmlnLmNvbW1lbnQsCj4+IC0gICAgICAgIH0pOwo+PiArICAgIGZvciBkaXJlY3Rpb24gaW4gW1N5 bmNEaXJlY3Rpb246OlB1bGwsIFN5bmNEaXJlY3Rpb246OlB1c2hdIHsKPj4gKyAgICAgICAgbGV0 IHN5bmNfam9icyA9IGxpc3Rfc3luY19qb2JzKE5vbmUsIFNvbWUoZGlyZWN0aW9uKSwgcGFyYW0u Y2xvbmUoKSwgcnBjZW52KT87Cj4+ICsgICAgICAgIGZvciBqb2IgaW4gc3luY19qb2JzIHsKPj4g KyAgICAgICAgICAgIHZhbHVlcy5wdXNoKE1hdGNoYWJsZVZhbHVlIHsKPj4gKyAgICAgICAgICAg ICAgICBmaWVsZDogImpvYi1pZCIuaW50bygpLAo+PiArICAgICAgICAgICAgICAgIHZhbHVlOiBq b2IuY29uZmlnLmlkLAo+PiArICAgICAgICAgICAgICAgIGNvbW1lbnQ6IGpvYi5jb25maWcuY29t bWVudCwKPj4gKyAgICAgICAgICAgIH0pOwo+PiArICAgICAgICB9Cj4+ICAgICAgIH0KPj4gICAK Pj4gICAgICAgbGV0IHZlcmlmeV9qb2JzID0gbGlzdF92ZXJpZmljYXRpb25fam9icyhOb25lLCBw YXJhbS5jbG9uZSgpLCBycGNlbnYpPzsKPj4gQEAgLTE4NCw2ICsxODYsNyBAQCBwdWIgZm4gZ2V0 X3ZhbHVlcygKPj4gICAgICAgICAgICJwYWNrYWdlLXVwZGF0ZXMiLAo+PiAgICAgICAgICAgInBy dW5lIiwKPj4gICAgICAgICAgICJzeW5jIiwKPj4gKyAgICAgICAgInN5bmMtcHVzaCIsCj4+ICAg ICAgICAgICAic3lzdGVtLW1haWwiLAo+PiAgICAgICAgICAgInRhcGUtYmFja3VwIiwKPj4gICAg ICAgICAgICJ0YXBlLWxvYWQiLAo+PiBkaWZmIC0tZ2l0IGEvc3JjL2FwaTIvY29uZmlnL3N5bmMu cnMgYi9zcmMvYXBpMi9jb25maWcvc3luYy5ycwo+PiBpbmRleCAzOTYzMDQ5ZTkuLjJmMzJhYWNj YiAxMDA2NDQKPj4gLS0tIGEvc3JjL2FwaTIvY29uZmlnL3N5bmMucnMKPj4gKysrIGIvc3JjL2Fw aTIvY29uZmlnL3N5bmMucnMKPj4gQEAgLTEsNiArMSw3IEBACj4+ICAgdXNlIDo6c2VyZGU6OntE ZXNlcmlhbGl6ZSwgU2VyaWFsaXplfTsKPj4gICB1c2UgYW55aG93Ojp7YmFpbCwgRXJyb3J9Owo+ PiAgIHVzZSBoZXg6OkZyb21IZXg7Cj4+ICt1c2UgcGJzX2FwaV90eXBlczo6U3luY0RpcmVjdGlv bjsKPj4gICB1c2Ugc2VyZGVfanNvbjo6VmFsdWU7Cj4+ICAgCj4+ICAgdXNlIHByb3htb3hfcm91 dGVyOjp7aHR0cF9iYWlsLCBQZXJtaXNzaW9uLCBSb3V0ZXIsIFJwY0Vudmlyb25tZW50fTsKPj4g QEAgLTgsOCArOSw5IEBAIHVzZSBwcm94bW94X3NjaGVtYTo6e2FwaSwgcGFyYW1fYmFpbH07Cj4+ ICAgCj4+ICAgdXNlIHBic19hcGlfdHlwZXM6OnsKPj4gICAgICAgQXV0aGlkLCBTeW5jSm9iQ29u ZmlnLCBTeW5jSm9iQ29uZmlnVXBkYXRlciwgSk9CX0lEX1NDSEVNQSwgUFJJVl9EQVRBU1RPUkVf QVVESVQsCj4+IC0gICAgUFJJVl9EQVRBU1RPUkVfQkFDS1VQLCBQUklWX0RBVEFTVE9SRV9NT0RJ RlksIFBSSVZfREFUQVNUT1JFX1BSVU5FLCBQUklWX1JFTU9URV9BVURJVCwKPj4gLSAgICBQUklW X1JFTU9URV9SRUFELCBQUk9YTU9YX0NPTkZJR19ESUdFU1RfU0NIRU1BLAo+PiArICAgIFBSSVZf REFUQVNUT1JFX0JBQ0tVUCwgUFJJVl9EQVRBU1RPUkVfTU9ESUZZLCBQUklWX0RBVEFTVE9SRV9Q UlVORSwgUFJJVl9EQVRBU1RPUkVfUkVBRCwKPj4gKyAgICBQUklWX1JFTU9URV9BVURJVCwgUFJJ Vl9SRU1PVEVfREFUQVNUT1JFX0JBQ0tVUCwgUFJJVl9SRU1PVEVfREFUQVNUT1JFX01PRElGWSwK Pj4gKyAgICBQUklWX1JFTU9URV9EQVRBU1RPUkVfUFJVTkUsIFBSSVZfUkVNT1RFX1JFQUQsIFBS T1hNT1hfQ09ORklHX0RJR0VTVF9TQ0hFTUEsCj4+ICAgfTsKPj4gICB1c2UgcGJzX2NvbmZpZzo6 c3luYzsKPj4gICAKPj4gQEAgLTIwLDE4ICsyMiwzNSBAQCBwdWIgZm4gY2hlY2tfc3luY19qb2Jf cmVhZF9hY2Nlc3MoCj4+ICAgICAgIHVzZXJfaW5mbzogJkNhY2hlZFVzZXJJbmZvLAo+PiAgICAg ICBhdXRoX2lkOiAmQXV0aGlkLAo+PiAgICAgICBqb2I6ICZTeW5jSm9iQ29uZmlnLAo+PiArICAg IHN5bmNfZGlyZWN0aW9uOiBTeW5jRGlyZWN0aW9uLAo+PiAgICkgLT4gYm9vbCB7Cj4+ICsgICAg Ly8gY2hlY2sgZm9yIGF1ZGl0IGFjY2VzcyBvbiBkYXRhc3RvcmUvbmFtZXNwYWNlLCBhcHBsaWVz IGZvciBwdWxsIGFuZCBwdXNoIGRpcmVjdGlvbgo+PiAgICAgICBsZXQgbnNfYW5jaG9yX3ByaXZz ID0gdXNlcl9pbmZvLmxvb2t1cF9wcml2cyhhdXRoX2lkLCAmam9iLmFjbF9wYXRoKCkpOwo+PiAg ICAgICBpZiBuc19hbmNob3JfcHJpdnMgJiBQUklWX0RBVEFTVE9SRV9BVURJVCA9PSAwIHsKPj4g ICAgICAgICAgIHJldHVybiBmYWxzZTsKPj4gICAgICAgfQo+PiAgIAo+PiAtICAgIGlmIGxldCBT b21lKHJlbW90ZSkgPSAmam9iLnJlbW90ZSB7Cj4+IC0gICAgICAgIGxldCByZW1vdGVfcHJpdnMg PSB1c2VyX2luZm8ubG9va3VwX3ByaXZzKGF1dGhfaWQsICZbInJlbW90ZSIsIHJlbW90ZV0pOwo+ PiAtICAgICAgICByZW1vdGVfcHJpdnMgJiBQUklWX1JFTU9URV9BVURJVCAhPSAwCj4+IC0gICAg fSBlbHNlIHsKPj4gLSAgICAgICAgbGV0IHNvdXJjZV9kc19wcml2cyA9IHVzZXJfaW5mby5sb29r dXBfcHJpdnMoYXV0aF9pZCwgJlsiZGF0YXN0b3JlIiwgJmpvYi5yZW1vdGVfc3RvcmVdKTsKPj4g LSAgICAgICAgc291cmNlX2RzX3ByaXZzICYgUFJJVl9EQVRBU1RPUkVfQVVESVQgIT0gMAo+PiAr ICAgIG1hdGNoIHN5bmNfZGlyZWN0aW9uIHsKPj4gKyAgICAgICAgU3luY0RpcmVjdGlvbjo6UHVs bCA9PiB7Cj4+ICsgICAgICAgICAgICBpZiBsZXQgU29tZShyZW1vdGUpID0gJmpvYi5yZW1vdGUg ewo+PiArICAgICAgICAgICAgICAgIGxldCByZW1vdGVfcHJpdnMgPSB1c2VyX2luZm8ubG9va3Vw X3ByaXZzKGF1dGhfaWQsICZbInJlbW90ZSIsIHJlbW90ZV0pOwo+PiArICAgICAgICAgICAgICAg IHJlbW90ZV9wcml2cyAmIFBSSVZfUkVNT1RFX0FVRElUICE9IDAKPj4gKyAgICAgICAgICAgIH0g ZWxzZSB7Cj4+ICsgICAgICAgICAgICAgICAgbGV0IHNvdXJjZV9kc19wcml2cyA9Cj4+ICsgICAg ICAgICAgICAgICAgICAgIHVzZXJfaW5mby5sb29rdXBfcHJpdnMoYXV0aF9pZCwgJlsiZGF0YXN0 b3JlIiwgJmpvYi5yZW1vdGVfc3RvcmVdKTsKPj4gKyAgICAgICAgICAgICAgICBzb3VyY2VfZHNf cHJpdnMgJiBQUklWX0RBVEFTVE9SRV9BVURJVCAhPSAwCj4+ICsgICAgICAgICAgICB9Cj4+ICsg ICAgICAgIH0KPj4gKyAgICAgICAgU3luY0RpcmVjdGlvbjo6UHVzaCA9PiB7Cj4+ICsgICAgICAg ICAgICAvLyBjaGVjayBmb3IgYXVkaXQgYWNjZXNzIG9uIHJlbW90ZS9kYXRhc3RvcmUvbmFtZXNw YWNlCj4+ICsgICAgICAgICAgICBpZiBsZXQgU29tZSh0YXJnZXRfYWNsX3BhdGgpID0gam9iLnJl bW90ZV9hY2xfcGF0aCgpIHsKPj4gKyAgICAgICAgICAgICAgICBsZXQgcmVtb3RlX3ByaXZzID0g dXNlcl9pbmZvLmxvb2t1cF9wcml2cyhhdXRoX2lkLCAmdGFyZ2V0X2FjbF9wYXRoKTsKPj4gKyAg ICAgICAgICAgICAgICByZW1vdGVfcHJpdnMgJiBQUklWX1JFTU9URV9BVURJVCAhPSAwCj4gCj4g dGhlIG90aGVyIHR3byBjaGVja3MgYWJvdmUgY2hlY2sgdGhlIHNvdXJjZSBzaWRlLCB0aGlzIGNo ZWNrcyB0aGUgdGhlIHRhcmdldAo+IHNpZGUuLiBzaG91bGQgd2UgY2hlY2sgYm90aCBoZXJlPwo+ IAo+PiArICAgICAgICAgICAgfSBlbHNlIHsKPj4gKyAgICAgICAgICAgICAgICAvLyBSZW1vdGUg bXVzdCBhbHdheXMgYmUgcHJlc2VudCBmb3Igc3luYyBpbiBwdXNoIGRpcmVjdGlvbiwgZmFpbCBv dGhlcndpc2UKPj4gKyAgICAgICAgICAgICAgICBmYWxzZQo+PiArICAgICAgICAgICAgfQo+PiAr ICAgICAgICB9Cj4+ICAgICAgIH0KPj4gICB9Cj4+ICAgCj4+IEBAIC00Myw0MSArNjIsOTMgQEAg Zm4gaXNfY29ycmVjdF9vd25lcihhdXRoX2lkOiAmQXV0aGlkLCBqb2I6ICZTeW5jSm9iQ29uZmln KSAtPiBib29sIHsKPj4gICAgICAgfQo+PiAgIH0KPj4gICAKPj4gLS8vLyBjaGVja3Mgd2hldGhl ciB1c2VyIGNhbiBydW4gdGhlIGNvcnJlc3BvbmRpbmcgcHVsbCBqb2IKPj4gKy8vLyBjaGVja3Mg d2hldGhlciB1c2VyIGNhbiBydW4gdGhlIGNvcnJlc3BvbmRpbmcgc3luYyBqb2IsIGRlcGVuZGlu ZyBvbiBzeW5jIGRpcmVjdGlvbgo+PiAgIC8vLwo+PiAtLy8vIG5hbWVzcGFjZSBjcmVhdGlvbi9k ZWxldGlvbiBBQ0wgYW5kIGJhY2t1cCBncm91cCBvd25lcnNoaXAgY2hlY2tzIGhhcHBlbiBpbiB0 aGUgcHVsbCBjb2RlIGRpcmVjdGx5Lgo+PiArLy8vIG5hbWVzcGFjZSBjcmVhdGlvbi9kZWxldGlv biBBQ0wgYW5kIGJhY2t1cCBncm91cCBvd25lcnNoaXAgY2hlY2tzIGhhcHBlbiBpbiB0aGUgcHVs bC9wdXNoIGNvZGUKPj4gKy8vLyBkaXJlY3RseS4KPj4gICAvLy8gcmVtb3RlIHNpZGUgY2hlY2tz L2ZpbHRlcnMgcmVtb3RlIGRhdGFzdG9yZS9uYW1lc3BhY2UvZ3JvdXAgYWNjZXNzLgo+PiAgIHB1 YiBmbiBjaGVja19zeW5jX2pvYl9tb2RpZnlfYWNjZXNzKAo+PiAgICAgICB1c2VyX2luZm86ICZD YWNoZWRVc2VySW5mbywKPj4gICAgICAgYXV0aF9pZDogJkF1dGhpZCwKPj4gICAgICAgam9iOiAm U3luY0pvYkNvbmZpZywKPj4gKyAgICBzeW5jX2RpcmVjdGlvbjogU3luY0RpcmVjdGlvbiwKPj4g ICApIC0+IGJvb2wgewo+PiAtICAgIGxldCBuc19hbmNob3JfcHJpdnMgPSB1c2VyX2luZm8ubG9v a3VwX3ByaXZzKGF1dGhfaWQsICZqb2IuYWNsX3BhdGgoKSk7Cj4+IC0gICAgaWYgbnNfYW5jaG9y X3ByaXZzICYgUFJJVl9EQVRBU1RPUkVfQkFDS1VQID09IDAgfHwgbnNfYW5jaG9yX3ByaXZzICYg UFJJVl9EQVRBU1RPUkVfQVVESVQgPT0gMCB7Cj4+IC0gICAgICAgIHJldHVybiBmYWxzZTsKPj4g LSAgICB9Cj4+ICsgICAgbWF0Y2ggc3luY19kaXJlY3Rpb24gewo+PiArICAgICAgICBTeW5jRGly ZWN0aW9uOjpQdWxsID0+IHsKPj4gKyAgICAgICAgICAgIGxldCBuc19hbmNob3JfcHJpdnMgPSB1 c2VyX2luZm8ubG9va3VwX3ByaXZzKGF1dGhfaWQsICZqb2IuYWNsX3BhdGgoKSk7Cj4+ICsgICAg ICAgICAgICBpZiBuc19hbmNob3JfcHJpdnMgJiBQUklWX0RBVEFTVE9SRV9CQUNLVVAgPT0gMAo+ PiArICAgICAgICAgICAgICAgIHx8IG5zX2FuY2hvcl9wcml2cyAmIFBSSVZfREFUQVNUT1JFX0FV RElUID09IDAKPj4gKyAgICAgICAgICAgIHsKPj4gKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs c2U7Cj4+ICsgICAgICAgICAgICB9Cj4+ICsKPj4gKyAgICAgICAgICAgIGlmIGxldCBTb21lKHRy dWUpID0gam9iLnJlbW92ZV92YW5pc2hlZCB7Cj4+ICsgICAgICAgICAgICAgICAgaWYgbnNfYW5j aG9yX3ByaXZzICYgUFJJVl9EQVRBU1RPUkVfUFJVTkUgPT0gMCB7Cj4+ICsgICAgICAgICAgICAg ICAgICAgIHJldHVybiBmYWxzZTsKPj4gKyAgICAgICAgICAgICAgICB9Cj4+ICsgICAgICAgICAg ICB9Cj4+ICAgCj4+IC0gICAgaWYgbGV0IFNvbWUodHJ1ZSkgPSBqb2IucmVtb3ZlX3ZhbmlzaGVk IHsKPj4gLSAgICAgICAgaWYgbnNfYW5jaG9yX3ByaXZzICYgUFJJVl9EQVRBU1RPUkVfUFJVTkUg PT0gMCB7Cj4+IC0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4+ICsgICAgICAgICAgICAvLyBz YW1lIHBlcm1pc3Npb24gYXMgY2hhbmdpbmcgb3duZXJzaGlwIGFmdGVyIHN5bmNpbmcKPj4gKyAg ICAgICAgICAgIGlmICFpc19jb3JyZWN0X293bmVyKGF1dGhfaWQsIGpvYikgJiYgbnNfYW5jaG9y X3ByaXZzICYgUFJJVl9EQVRBU1RPUkVfTU9ESUZZID09IDAgewo+PiArICAgICAgICAgICAgICAg IHJldHVybiBmYWxzZTsKPj4gKyAgICAgICAgICAgIH0KPj4gKwo+PiArICAgICAgICAgICAgaWYg bGV0IFNvbWUocmVtb3RlKSA9ICZqb2IucmVtb3RlIHsKPj4gKyAgICAgICAgICAgICAgICBsZXQg cmVtb3RlX3ByaXZzID0KPj4gKyAgICAgICAgICAgICAgICAgICAgdXNlcl9pbmZvLmxvb2t1cF9w cml2cyhhdXRoX2lkLCAmWyJyZW1vdGUiLCByZW1vdGUsICZqb2IucmVtb3RlX3N0b3JlXSk7Cj4+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHJlbW90ZV9wcml2cyAmIFBSSVZfUkVNT1RFX1JFQUQg IT0gMDsKPj4gKyAgICAgICAgICAgIH0KPj4gKyAgICAgICAgICAgIHRydWUKPj4gICAgICAgICAg IH0KPj4gLSAgICB9Cj4+ICsgICAgICAgIFN5bmNEaXJlY3Rpb246OlB1c2ggPT4gewo+PiArICAg ICAgICAgICAgLy8gUmVtb3RlIG11c3QgYWx3YXlzIGJlIHByZXNlbnQgZm9yIHN5bmMgaW4gcHVz aCBkaXJlY3Rpb24sIGZhaWwgb3RoZXJ3aXNlCj4+ICsgICAgICAgICAgICBsZXQgdGFyZ2V0X3By aXZzID0gaWYgbGV0IFNvbWUodGFyZ2V0X2FjbF9wYXRoKSA9IGpvYi5yZW1vdGVfYWNsX3BhdGgo KSB7Cj4+ICsgICAgICAgICAgICAgICAgdXNlcl9pbmZvLmxvb2t1cF9wcml2cyhhdXRoX2lkLCAm dGFyZ2V0X2FjbF9wYXRoKQo+PiArICAgICAgICAgICAgfSBlbHNlIHsKPj4gKyAgICAgICAgICAg ICAgICByZXR1cm4gZmFsc2U7Cj4+ICsgICAgICAgICAgICB9Owo+PiArCj4+ICsgICAgICAgICAg ICAvLyBjaGVjayB1c2VyIGlzIGFsbG93ZWQgdG8gY3JlYXRlIGJhY2t1cHMgb24gcmVtb3RlIGRh dGFzdG9yZQo+PiArICAgICAgICAgICAgaWYgdGFyZ2V0X3ByaXZzICYgUFJJVl9SRU1PVEVfREFU QVNUT1JFX0JBQ0tVUCA9PSAwIHsKPj4gKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4+ ICsgICAgICAgICAgICB9Cj4+ICAgCj4+IC0gICAgLy8gc2FtZSBwZXJtaXNzaW9uIGFzIGNoYW5n aW5nIG93bmVyc2hpcCBhZnRlciBzeW5jaW5nCj4+IC0gICAgaWYgIWlzX2NvcnJlY3Rfb3duZXIo YXV0aF9pZCwgam9iKSAmJiBuc19hbmNob3JfcHJpdnMgJiBQUklWX0RBVEFTVE9SRV9NT0RJRlkg PT0gMCB7Cj4+IC0gICAgICAgIHJldHVybiBmYWxzZTsKPj4gLSAgICB9Cj4+ICsgICAgICAgICAg ICBpZiBsZXQgU29tZSh0cnVlKSA9IGpvYi5yZW1vdmVfdmFuaXNoZWQgewo+PiArICAgICAgICAg ICAgICAgIC8vIGNoZWNrIHVzZXIgaXMgYWxsb3dlZCB0byBwcnVuZSBiYWNrdXAgc25hcHNob3Rz IG9uIHJlbW90ZSBkYXRhc3RvcmUKPj4gKyAgICAgICAgICAgICAgICBpZiB0YXJnZXRfcHJpdnMg JiBQUklWX1JFTU9URV9EQVRBU1RPUkVfUFJVTkUgPT0gMCB7Cj4+ICsgICAgICAgICAgICAgICAg ICAgIHJldHVybiBmYWxzZTsKPj4gKyAgICAgICAgICAgICAgICB9Cj4+ICsgICAgICAgICAgICB9 Cj4+ICsKPj4gKyAgICAgICAgICAgIC8vIGNoZWNrIHVzZXIgaXMgbm90IHRoZSBvd25lciBvZiB0 aGUgc3luYyBqb2IsIGJ1dCBoYXMgcmVtb3RlIGRhdGFzdG9yZSBtb2RpZnkgcGVybWlzc2lvbnMK Pj4gKyAgICAgICAgICAgIGlmICFpc19jb3JyZWN0X293bmVyKGF1dGhfaWQsIGpvYikgJiYgdGFy Z2V0X3ByaXZzICYgUFJJVl9SRU1PVEVfREFUQVNUT1JFX01PRElGWSA9PSAwIHsKPj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4+ICsgICAgICAgICAgICB9Cj4gCj4gaXNuJ3QgdGhp cyB3cm9uZz8gaWYgSSBhbSBtb2RpZnlpbmcvcnVubmluZyBhIHN5bmMgam9iICJvd25lZCIgYnkg c29tZWJvZHkKPiBlbHNlLCB0aGVuIEkgbmVlZCB0byBoYXZlIERhdGFzdG9yZS5SZWFkIG9yIERh dGFzdG9yZS5Nb2RpZnkgb24gdGhlICpsb2NhbCoKPiBzb3VyY2UgZGF0YXN0b3JlK25hbWVzcGFj ZS4uIGVsc2UgSSBjb3VsZCB1c2Ugc3VjaCBhIHN5bmMgam9iIHRvIGV4ZmlsdHJhdGUKPiBiYWNr dXBzIEkgd291bGRuJ3Qgb3RoZXJ3aXNlIGhhdmUgYWNjZXNzIHRvLi4KPiAKPj4gKwo+PiArICAg ICAgICAgICAgLy8gY2hlY2sgdXNlciBpcyBhbGxvd2VkIHRvIHJlYWQgZnJvbSAobG9jYWwpIHNv dXJjZSBkYXRhc3RvcmUvbmFtZXNwYWNlCj4+ICsgICAgICAgICAgICBsZXQgc291cmNlX3ByaXZz ID0gdXNlcl9pbmZvLmxvb2t1cF9wcml2cyhhdXRoX2lkLCAmam9iLmFjbF9wYXRoKCkpOwo+PiAr ICAgICAgICAgICAgaWYgc291cmNlX3ByaXZzICYgUFJJVl9EQVRBU1RPUkVfQVVESVQgPT0gMCB7 Cj4+ICsgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+PiArICAgICAgICAgICAgfQo+PiAg IAo+PiAtICAgIGlmIGxldCBTb21lKHJlbW90ZSkgPSAmam9iLnJlbW90ZSB7Cj4+IC0gICAgICAg IGxldCByZW1vdGVfcHJpdnMgPSB1c2VyX2luZm8ubG9va3VwX3ByaXZzKGF1dGhfaWQsICZbInJl bW90ZSIsIHJlbW90ZSwgJmpvYi5yZW1vdGVfc3RvcmVdKTsKPj4gLSAgICAgICAgcmV0dXJuIHJl bW90ZV9wcml2cyAmIFBSSVZfUkVNT1RFX1JFQUQgIT0gMDsKPj4gKyAgICAgICAgICAgIC8vIGNo ZWNrIGZvciBlaXRoZXIgZGF0YXN0b3JlIHJlYWQgb3IgZGF0YXN0b3JlIGJhY2t1cCBhY2Nlc3MK Pj4gKyAgICAgICAgICAgIC8vICh0aGUgbGF0ZXIgaW1wbHlpbmcgcmVhZCBhY2Nlc3MgZm9yIG93 bmVkIHNuYXBzaG90IGdyb3VwcykKPj4gKyAgICAgICAgICAgIGlmIHNvdXJjZV9wcml2cyAmIFBS SVZfREFUQVNUT1JFX1JFQUQgIT0gMCB7Cj4+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7 Cj4+ICsgICAgICAgICAgICB9Cj4+ICsgICAgICAgICAgICBzb3VyY2VfcHJpdnMgJiBQUklWX0RB VEFTVE9SRV9CQUNLVVAgIT0gMAo+PiArICAgICAgICB9Cj4+ICAgICAgIH0KPj4gLSAgICB0cnVl Cj4+ICAgfQo+PiAgIAo+PiAgICNbYXBpKAo+PiAgICAgICBpbnB1dDogewo+PiAtICAgICAgICBw cm9wZXJ0aWVzOiB7fSwKPj4gKyAgICAgICAgcHJvcGVydGllczogewo+PiArICAgICAgICAgICAg InN5bmMtZGlyZWN0aW9uIjogewo+PiArICAgICAgICAgICAgICAgIHR5cGU6IFN5bmNEaXJlY3Rp b24sCj4+ICsgICAgICAgICAgICAgICAgb3B0aW9uYWw6IHRydWUsCj4+ICsgICAgICAgICAgICB9 LAo+PiArICAgICAgICB9LAo+PiAgICAgICB9LAo+PiAgICAgICByZXR1cm5zOiB7Cj4+ICAgICAg ICAgICBkZXNjcmlwdGlvbjogIkxpc3QgY29uZmlndXJlZCBqb2JzLiIsCj4+IEBAIC05Miw2ICsx NjMsNyBAQCBwdWIgZm4gY2hlY2tfc3luY19qb2JfbW9kaWZ5X2FjY2VzcygKPj4gICAvLy8gTGlz dCBhbGwgc3luYyBqb2JzCj4+ICAgcHViIGZuIGxpc3Rfc3luY19qb2JzKAo+PiAgICAgICBfcGFy YW06IFZhbHVlLAo+PiArICAgIHN5bmNfZGlyZWN0aW9uOiBPcHRpb248U3luY0RpcmVjdGlvbj4s Cj4+ICAgICAgIHJwY2VudjogJm11dCBkeW4gUnBjRW52aXJvbm1lbnQsCj4+ICAgKSAtPiBSZXN1 bHQ8VmVjPFN5bmNKb2JDb25maWc+LCBFcnJvcj4gewo+PiAgICAgICBsZXQgYXV0aF9pZDogQXV0 aGlkID0gcnBjZW52LmdldF9hdXRoX2lkKCkudW53cmFwKCkucGFyc2UoKT87Cj4+IEBAIC05OSwx MyArMTcxLDE2IEBAIHB1YiBmbiBsaXN0X3N5bmNfam9icygKPj4gICAKPj4gICAgICAgbGV0IChj b25maWcsIGRpZ2VzdCkgPSBzeW5jOjpjb25maWcoKT87Cj4+ICAgCj4+IC0gICAgbGV0IGxpc3Qg PSBjb25maWcuY29udmVydF90b190eXBlZF9hcnJheSgic3luYyIpPzsKPj4gKyAgICBsZXQgc3lu Y19kaXJlY3Rpb24gPSBzeW5jX2RpcmVjdGlvbi51bndyYXBfb3JfZGVmYXVsdCgpOwo+PiArICAg IGxldCBsaXN0ID0gY29uZmlnLmNvbnZlcnRfdG9fdHlwZWRfYXJyYXkoc3luY19kaXJlY3Rpb24u YXNfY29uZmlnX3R5cGVfc3RyKCkpPzsKPj4gICAKPj4gICAgICAgcnBjZW52WyJkaWdlc3QiXSA9 IGhleDo6ZW5jb2RlKGRpZ2VzdCkuaW50bygpOwo+PiAgIAo+PiAgICAgICBsZXQgbGlzdCA9IGxp c3QKPj4gICAgICAgICAgIC5pbnRvX2l0ZXIoKQo+PiAtICAgICAgICAuZmlsdGVyKHxzeW5jX2pv YnwgY2hlY2tfc3luY19qb2JfcmVhZF9hY2Nlc3MoJnVzZXJfaW5mbywgJmF1dGhfaWQsIHN5bmNf am9iKSkKPj4gKyAgICAgICAgLmZpbHRlcih8c3luY19qb2J8IHsKPj4gKyAgICAgICAgICAgIGNo ZWNrX3N5bmNfam9iX3JlYWRfYWNjZXNzKCZ1c2VyX2luZm8sICZhdXRoX2lkLCBzeW5jX2pvYiwg c3luY19kaXJlY3Rpb24pCj4+ICsgICAgICAgIH0pCj4+ICAgICAgICAgICAuY29sbGVjdCgpOwo+ PiAgICAgICBPayhsaXN0KQo+PiAgIH0KPj4gQEAgLTExOCw2ICsxOTMsMTAgQEAgcHViIGZuIGxp c3Rfc3luY19qb2JzKAo+PiAgICAgICAgICAgICAgICAgICB0eXBlOiBTeW5jSm9iQ29uZmlnLAo+ PiAgICAgICAgICAgICAgICAgICBmbGF0dGVuOiB0cnVlLAo+PiAgICAgICAgICAgICAgIH0sCj4+ ICsgICAgICAgICAgICAic3luYy1kaXJlY3Rpb24iOiB7Cj4+ICsgICAgICAgICAgICAgICAgdHlw ZTogU3luY0RpcmVjdGlvbiwKPj4gKyAgICAgICAgICAgICAgICBvcHRpb25hbDogdHJ1ZSwKPj4g KyAgICAgICAgICAgIH0sCj4+ICAgICAgICAgICB9LAo+PiAgICAgICB9LAo+PiAgICAgICBhY2Nl c3M6IHsKPj4gQEAgLTEyOCwxNCArMjA3LDE2IEBAIHB1YiBmbiBsaXN0X3N5bmNfam9icygKPj4g ICAvLy8gQ3JlYXRlIGEgbmV3IHN5bmMgam9iLgo+PiAgIHB1YiBmbiBjcmVhdGVfc3luY19qb2Io Cj4+ICAgICAgIGNvbmZpZzogU3luY0pvYkNvbmZpZywKPj4gKyAgICBzeW5jX2RpcmVjdGlvbjog T3B0aW9uPFN5bmNEaXJlY3Rpb24+LAo+PiAgICAgICBycGNlbnY6ICZtdXQgZHluIFJwY0Vudmly b25tZW50LAo+PiAgICkgLT4gUmVzdWx0PCgpLCBFcnJvcj4gewo+PiAgICAgICBsZXQgYXV0aF9p ZDogQXV0aGlkID0gcnBjZW52LmdldF9hdXRoX2lkKCkudW53cmFwKCkucGFyc2UoKT87Cj4+ICAg ICAgIGxldCB1c2VyX2luZm8gPSBDYWNoZWRVc2VySW5mbzo6bmV3KCk/Owo+PiArICAgIGxldCBz eW5jX2RpcmVjdGlvbiA9IHN5bmNfZGlyZWN0aW9uLnVud3JhcF9vcl9kZWZhdWx0KCk7Cj4+ICAg Cj4+ICAgICAgIGxldCBfbG9jayA9IHN5bmM6OmxvY2tfY29uZmlnKCk/Owo+PiAgIAo+PiAtICAg IGlmICFjaGVja19zeW5jX2pvYl9tb2RpZnlfYWNjZXNzKCZ1c2VyX2luZm8sICZhdXRoX2lkLCAm Y29uZmlnKSB7Cj4+ICsgICAgaWYgIWNoZWNrX3N5bmNfam9iX21vZGlmeV9hY2Nlc3MoJnVzZXJf aW5mbywgJmF1dGhfaWQsICZjb25maWcsIHN5bmNfZGlyZWN0aW9uKSB7Cj4+ICAgICAgICAgICBi YWlsISgicGVybWlzc2lvbiBjaGVjayBmYWlsZWQiKTsKPj4gICAgICAgfQo+PiAgIAo+PiBAQCAt MTU4LDcgKzIzOSw3IEBAIHB1YiBmbiBjcmVhdGVfc3luY19qb2IoCj4+ICAgICAgICAgICBwYXJh bV9iYWlsISgiaWQiLCAiam9iICd7fScgYWxyZWFkeSBleGlzdHMuIiwgY29uZmlnLmlkKTsKPj4g ICAgICAgfQo+PiAgIAo+PiAtICAgIHNlY3Rpb25fY29uZmlnLnNldF9kYXRhKCZjb25maWcuaWQs ICJzeW5jIiwgJmNvbmZpZyk/Owo+PiArICAgIHNlY3Rpb25fY29uZmlnLnNldF9kYXRhKCZjb25m aWcuaWQsIHN5bmNfZGlyZWN0aW9uLmFzX2NvbmZpZ190eXBlX3N0cigpLCAmY29uZmlnKT87Cj4+ ICAgCj4+ICAgICAgIHN5bmM6OnNhdmVfY29uZmlnKCZzZWN0aW9uX2NvbmZpZyk/Owo+PiAgIAo+ PiBAQCAtMTg4LDggKzI2OSwxNyBAQCBwdWIgZm4gcmVhZF9zeW5jX2pvYihpZDogU3RyaW5nLCBy cGNlbnY6ICZtdXQgZHluIFJwY0Vudmlyb25tZW50KSAtPiBSZXN1bHQ8U3luYwo+PiAgIAo+PiAg ICAgICBsZXQgKGNvbmZpZywgZGlnZXN0KSA9IHN5bmM6OmNvbmZpZygpPzsKPj4gICAKPj4gLSAg ICBsZXQgc3luY19qb2IgPSBjb25maWcubG9va3VwKCJzeW5jIiwgJmlkKT87Cj4+IC0gICAgaWYg IWNoZWNrX3N5bmNfam9iX3JlYWRfYWNjZXNzKCZ1c2VyX2luZm8sICZhdXRoX2lkLCAmc3luY19q b2IpIHsKPj4gKyAgICBsZXQgKHN5bmNfam9iLCBzeW5jX2RpcmVjdGlvbikgPQo+PiArICAgICAg ICBpZiBsZXQgU29tZSgoY29uZmlnX3R5cGUsIGNvbmZpZ19zZWN0aW9uKSkgPSBjb25maWcuc2Vj dGlvbnMuZ2V0KCZpZCkgewo+PiArICAgICAgICAgICAgKAo+PiArICAgICAgICAgICAgICAgIFN5 bmNKb2JDb25maWc6OmRlc2VyaWFsaXplKGNvbmZpZ19zZWN0aW9uKT8sCj4+ICsgICAgICAgICAg ICAgICAgU3luY0RpcmVjdGlvbjo6ZnJvbV9jb25maWdfdHlwZV9zdHIoY29uZmlnX3R5cGUpPywK Pj4gKyAgICAgICAgICAgICkKPj4gKyAgICAgICAgfSBlbHNlIHsKPj4gKyAgICAgICAgICAgIGh0 dHBfYmFpbCEoTk9UX0ZPVU5ELCAiam9iICd7aWR9JyBkb2VzIG5vdCBleGlzdC4iKQo+PiArICAg ICAgICB9Owo+PiArCj4+ICsgICAgaWYgIWNoZWNrX3N5bmNfam9iX3JlYWRfYWNjZXNzKCZ1c2Vy X2luZm8sICZhdXRoX2lkLCAmc3luY19qb2IsIHN5bmNfZGlyZWN0aW9uKSB7Cj4+ICAgICAgICAg ICBiYWlsISgicGVybWlzc2lvbiBjaGVjayBmYWlsZWQiKTsKPj4gICAgICAgfQo+PiAgIAo+PiBA QCAtMjg0LDcgKzM3NCwxNSBAQCBwdWIgZm4gdXBkYXRlX3N5bmNfam9iKAo+PiAgICAgICAgICAg Y3JhdGU6OnRvb2xzOjpkZXRlY3RfbW9kaWZpZWRfY29uZmlndXJhdGlvbl9maWxlKCZkaWdlc3Qs ICZleHBlY3RlZF9kaWdlc3QpPzsKPj4gICAgICAgfQo+PiAgIAo+PiAtICAgIGxldCBtdXQgZGF0 YTogU3luY0pvYkNvbmZpZyA9IGNvbmZpZy5sb29rdXAoInN5bmMiLCAmaWQpPzsKPj4gKyAgICBs ZXQgKG11dCBkYXRhLCBzeW5jX2RpcmVjdGlvbikgPQo+PiArICAgICAgICBpZiBsZXQgU29tZSgo Y29uZmlnX3R5cGUsIGNvbmZpZ19zZWN0aW9uKSkgPSBjb25maWcuc2VjdGlvbnMuZ2V0KCZpZCkg ewo+PiArICAgICAgICAgICAgKAo+PiArICAgICAgICAgICAgICAgIFN5bmNKb2JDb25maWc6OmRl c2VyaWFsaXplKGNvbmZpZ19zZWN0aW9uKT8sCj4+ICsgICAgICAgICAgICAgICAgU3luY0RpcmVj dGlvbjo6ZnJvbV9jb25maWdfdHlwZV9zdHIoY29uZmlnX3R5cGUpPywKPj4gKyAgICAgICAgICAg ICkKPj4gKyAgICAgICAgfSBlbHNlIHsKPj4gKyAgICAgICAgICAgIGh0dHBfYmFpbCEoTk9UX0ZP VU5ELCAiam9iICd7aWR9JyBkb2VzIG5vdCBleGlzdC4iKQo+PiArICAgICAgICB9Owo+PiAgIAo+ PiAgICAgICBpZiBsZXQgU29tZShkZWxldGUpID0gZGVsZXRlIHsKPj4gICAgICAgICAgIGZvciBk ZWxldGVfcHJvcCBpbiBkZWxldGUgewo+PiBAQCAtNDA1LDExICs1MDMsMTEgQEAgcHViIGZuIHVw ZGF0ZV9zeW5jX2pvYigKPj4gICAgICAgICAgIH0KPj4gICAgICAgfQo+PiAgIAo+PiAtICAgIGlm ICFjaGVja19zeW5jX2pvYl9tb2RpZnlfYWNjZXNzKCZ1c2VyX2luZm8sICZhdXRoX2lkLCAmZGF0 YSkgewo+PiArICAgIGlmICFjaGVja19zeW5jX2pvYl9tb2RpZnlfYWNjZXNzKCZ1c2VyX2luZm8s ICZhdXRoX2lkLCAmZGF0YSwgc3luY19kaXJlY3Rpb24pIHsKPj4gICAgICAgICAgIGJhaWwhKCJw ZXJtaXNzaW9uIGNoZWNrIGZhaWxlZCIpOwo+PiAgICAgICB9Cj4+ICAgCj4+IC0gICAgY29uZmln LnNldF9kYXRhKCZpZCwgInN5bmMiLCAmZGF0YSk/Owo+PiArICAgIGNvbmZpZy5zZXRfZGF0YSgm aWQsIHN5bmNfZGlyZWN0aW9uLmFzX2NvbmZpZ190eXBlX3N0cigpLCAmZGF0YSk/Owo+PiAgIAo+ PiAgICAgICBzeW5jOjpzYXZlX2NvbmZpZygmY29uZmlnKT87Cj4+ICAgCj4+IEBAIC00NTYsMTcg KzU1NCwxNiBAQCBwdWIgZm4gZGVsZXRlX3N5bmNfam9iKAo+PiAgICAgICAgICAgY3JhdGU6OnRv b2xzOjpkZXRlY3RfbW9kaWZpZWRfY29uZmlndXJhdGlvbl9maWxlKCZkaWdlc3QsICZleHBlY3Rl ZF9kaWdlc3QpPzsKPj4gICAgICAgfQo+PiAgIAo+PiAtICAgIG1hdGNoIGNvbmZpZy5sb29rdXAo InN5bmMiLCAmaWQpIHsKPj4gLSAgICAgICAgT2soam9iKSA9PiB7Cj4+IC0gICAgICAgICAgICBp ZiAhY2hlY2tfc3luY19qb2JfbW9kaWZ5X2FjY2VzcygmdXNlcl9pbmZvLCAmYXV0aF9pZCwgJmpv Yikgewo+PiAtICAgICAgICAgICAgICAgIGJhaWwhKCJwZXJtaXNzaW9uIGNoZWNrIGZhaWxlZCIp Owo+PiAtICAgICAgICAgICAgfQo+PiAtICAgICAgICAgICAgY29uZmlnLnNlY3Rpb25zLnJlbW92 ZSgmaWQpOwo+PiAtICAgICAgICB9Cj4+IC0gICAgICAgIEVycihfKSA9PiB7Cj4+IC0gICAgICAg ICAgICBodHRwX2JhaWwhKE5PVF9GT1VORCwgImpvYiAne30nIGRvZXMgbm90IGV4aXN0LiIsIGlk KQo+PiArICAgIGlmIGxldCBTb21lKChjb25maWdfdHlwZSwgY29uZmlnX3NlY3Rpb24pKSA9IGNv bmZpZy5zZWN0aW9ucy5nZXQoJmlkKSB7Cj4+ICsgICAgICAgIGxldCBzeW5jX2RpcmVjdGlvbiA9 IFN5bmNEaXJlY3Rpb246OmZyb21fY29uZmlnX3R5cGVfc3RyKGNvbmZpZ190eXBlKT87Cj4+ICsg ICAgICAgIGxldCBqb2IgPSBTeW5jSm9iQ29uZmlnOjpkZXNlcmlhbGl6ZShjb25maWdfc2VjdGlv bik/Owo+PiArICAgICAgICBpZiAhY2hlY2tfc3luY19qb2JfbW9kaWZ5X2FjY2VzcygmdXNlcl9p bmZvLCAmYXV0aF9pZCwgJmpvYiwgc3luY19kaXJlY3Rpb24pIHsKPj4gKyAgICAgICAgICAgIGJh aWwhKCJwZXJtaXNzaW9uIGNoZWNrIGZhaWxlZCIpOwo+PiAgICAgICAgICAgfQo+PiAtICAgIH07 Cj4+ICsgICAgICAgIGNvbmZpZy5zZWN0aW9ucy5yZW1vdmUoJmlkKTsKPj4gKyAgICB9IGVsc2Ug ewo+PiArICAgICAgICBodHRwX2JhaWwhKE5PVF9GT1VORCwgImpvYiAne30nIGRvZXMgbm90IGV4 aXN0LiIsIGlkKQo+PiArICAgIH0KPj4gICAKPj4gICAgICAgc3luYzo6c2F2ZV9jb25maWcoJmNv bmZpZyk/Owo+PiAgIAo+PiBAQCAtNTM2LDM5ICs2MzMsNjcgQEAgYWNsOjE6L3JlbW90ZS9yZW1v dGUxL3JlbW90ZXN0b3JlMTp3cml0ZUBwYnM6UmVtb3RlU3luY09wZXJhdG9yCj4+ICAgICAgIH07 Cj4+ICAgCj4+ICAgICAgIC8vIHNob3VsZCB3b3JrIHdpdGhvdXQgQUNMcwo+PiAtICAgIGFzc2Vy dCEoY2hlY2tfc3luY19qb2JfcmVhZF9hY2Nlc3MoJnVzZXJfaW5mbywgcm9vdF9hdXRoX2lkLCAm am9iKSk7Cj4+IC0gICAgYXNzZXJ0IShjaGVja19zeW5jX2pvYl9tb2RpZnlfYWNjZXNzKCZ1c2Vy X2luZm8sIHJvb3RfYXV0aF9pZCwgJmpvYikpOwo+PiArICAgIGFzc2VydCEoY2hlY2tfc3luY19q b2JfcmVhZF9hY2Nlc3MoCj4+ICsgICAgICAgICZ1c2VyX2luZm8sCj4+ICsgICAgICAgIHJvb3Rf YXV0aF9pZCwKPj4gKyAgICAgICAgJmpvYiwKPj4gKyAgICAgICAgU3luY0RpcmVjdGlvbjo6UHVs bCwKPj4gKyAgICApKTsKPj4gKyAgICBhc3NlcnQhKGNoZWNrX3N5bmNfam9iX21vZGlmeV9hY2Nl c3MoCj4+ICsgICAgICAgICZ1c2VyX2luZm8sCj4+ICsgICAgICAgIHJvb3RfYXV0aF9pZCwKPj4g KyAgICAgICAgJmpvYiwKPj4gKyAgICAgICAgU3luY0RpcmVjdGlvbjo6UHVsbCwKPj4gKyAgICAp KTsKPj4gICAKPj4gICAgICAgLy8gdXNlciB3aXRob3V0IHBlcm1pc3Npb25zIG11c3QgZmFpbAo+ PiAgICAgICBhc3NlcnQhKCFjaGVja19zeW5jX2pvYl9yZWFkX2FjY2VzcygKPj4gICAgICAgICAg ICZ1c2VyX2luZm8sCj4+ICAgICAgICAgICAmbm9fcGVybV9hdXRoX2lkLAo+PiAtICAgICAgICAm am9iCj4+ICsgICAgICAgICZqb2IsCj4+ICsgICAgICAgIFN5bmNEaXJlY3Rpb246OlB1bGwsCj4+ ICAgICAgICkpOwo+PiAgICAgICBhc3NlcnQhKCFjaGVja19zeW5jX2pvYl9tb2RpZnlfYWNjZXNz KAo+PiAgICAgICAgICAgJnVzZXJfaW5mbywKPj4gICAgICAgICAgICZub19wZXJtX2F1dGhfaWQs Cj4+IC0gICAgICAgICZqb2IKPj4gKyAgICAgICAgJmpvYiwKPj4gKyAgICAgICAgU3luY0RpcmVj dGlvbjo6UHVsbCwKPj4gICAgICAgKSk7Cj4+ICAgCj4+ICAgICAgIC8vIHJlYWRpbmcgd2l0aG91 dCBwcm9wZXIgcmVhZCBwZXJtaXNzaW9ucyBvbiBlaXRoZXIgcmVtb3RlIG9yIGxvY2FsIG11c3Qg ZmFpbAo+PiAtICAgIGFzc2VydCEoIWNoZWNrX3N5bmNfam9iX3JlYWRfYWNjZXNzKCZ1c2VyX2lu Zm8sICZyZWFkX2F1dGhfaWQsICZqb2IpKTsKPj4gKyAgICBhc3NlcnQhKCFjaGVja19zeW5jX2pv Yl9yZWFkX2FjY2VzcygKPj4gKyAgICAgICAgJnVzZXJfaW5mbywKPj4gKyAgICAgICAgJnJlYWRf YXV0aF9pZCwKPj4gKyAgICAgICAgJmpvYiwKPj4gKyAgICAgICAgU3luY0RpcmVjdGlvbjo6UHVs bCwKPj4gKyAgICApKTsKPj4gICAKPj4gICAgICAgLy8gcmVhZGluZyB3aXRob3V0IHByb3BlciBy ZWFkIHBlcm1pc3Npb25zIG9uIGxvY2FsIGVuZCBtdXN0IGZhaWwKPj4gICAgICAgam9iLnJlbW90 ZSA9IFNvbWUoInJlbW90ZTEiLnRvX3N0cmluZygpKTsKPj4gLSAgICBhc3NlcnQhKCFjaGVja19z eW5jX2pvYl9yZWFkX2FjY2VzcygmdXNlcl9pbmZvLCAmcmVhZF9hdXRoX2lkLCAmam9iKSk7Cj4+ ICsgICAgYXNzZXJ0ISghY2hlY2tfc3luY19qb2JfcmVhZF9hY2Nlc3MoCj4+ICsgICAgICAgICZ1 c2VyX2luZm8sCj4+ICsgICAgICAgICZyZWFkX2F1dGhfaWQsCj4+ICsgICAgICAgICZqb2IsCj4+ ICsgICAgICAgIFN5bmNEaXJlY3Rpb246OlB1bGwsCj4+ICsgICAgKSk7Cj4+ICAgCj4+ICAgICAg IC8vIHJlYWRpbmcgd2l0aG91dCBwcm9wZXIgcmVhZCBwZXJtaXNzaW9ucyBvbiByZW1vdGUgZW5k IG11c3QgZmFpbAo+PiAgICAgICBqb2IucmVtb3RlID0gU29tZSgicmVtb3RlMCIudG9fc3RyaW5n KCkpOwo+PiAgICAgICBqb2Iuc3RvcmUgPSAibG9jYWxzdG9yZTEiLnRvX3N0cmluZygpOwo+PiAt ICAgIGFzc2VydCEoIWNoZWNrX3N5bmNfam9iX3JlYWRfYWNjZXNzKCZ1c2VyX2luZm8sICZyZWFk X2F1dGhfaWQsICZqb2IpKTsKPj4gKyAgICBhc3NlcnQhKCFjaGVja19zeW5jX2pvYl9yZWFkX2Fj Y2VzcygKPj4gKyAgICAgICAgJnVzZXJfaW5mbywKPj4gKyAgICAgICAgJnJlYWRfYXV0aF9pZCwK Pj4gKyAgICAgICAgJmpvYiwKPj4gKyAgICAgICAgU3luY0RpcmVjdGlvbjo6UHVsbCwKPj4gKyAg ICApKTsKPj4gICAKPj4gICAgICAgLy8gd3JpdGluZyB3aXRob3V0IHByb3BlciB3cml0ZSBwZXJt aXNzaW9ucyBvbiBlaXRoZXIgZW5kIG11c3QgZmFpbAo+PiAgICAgICBqb2Iuc3RvcmUgPSAibG9j YWxzdG9yZTAiLnRvX3N0cmluZygpOwo+PiAgICAgICBhc3NlcnQhKCFjaGVja19zeW5jX2pvYl9t b2RpZnlfYWNjZXNzKAo+PiAgICAgICAgICAgJnVzZXJfaW5mbywKPj4gICAgICAgICAgICZ3cml0 ZV9hdXRoX2lkLAo+PiAtICAgICAgICAmam9iCj4+ICsgICAgICAgICZqb2IsCj4+ICsgICAgICAg IFN5bmNEaXJlY3Rpb246OlB1bGwsCj4+ICAgICAgICkpOwo+PiAgIAo+PiAgICAgICAvLyB3cml0 aW5nIHdpdGhvdXQgcHJvcGVyIHdyaXRlIHBlcm1pc3Npb25zIG9uIGxvY2FsIGVuZCBtdXN0IGZh aWwKPj4gQEAgLTU4MCwzOSArNzA1LDU0IEBAIGFjbDoxOi9yZW1vdGUvcmVtb3RlMS9yZW1vdGVz dG9yZTE6d3JpdGVAcGJzOlJlbW90ZVN5bmNPcGVyYXRvcgo+PiAgICAgICBhc3NlcnQhKCFjaGVj a19zeW5jX2pvYl9tb2RpZnlfYWNjZXNzKAo+PiAgICAgICAgICAgJnVzZXJfaW5mbywKPj4gICAg ICAgICAgICZ3cml0ZV9hdXRoX2lkLAo+PiAtICAgICAgICAmam9iCj4+ICsgICAgICAgICZqb2Is Cj4+ICsgICAgICAgIFN5bmNEaXJlY3Rpb246OlB1bGwsCj4+ICAgICAgICkpOwo+PiAgIAo+PiAg ICAgICAvLyByZXNldCByZW1vdGUgdG8gb25lIHdoZXJlIHVzZXJzIGhhdmUgYWNjZXNzCj4+ICAg ICAgIGpvYi5yZW1vdGUgPSBTb21lKCJyZW1vdGUxIi50b19zdHJpbmcoKSk7Cj4+ICAgCj4+ICAg ICAgIC8vIHVzZXIgd2l0aCByZWFkIHBlcm1pc3Npb24gY2FuIG9ubHkgcmVhZCwgYnV0IG5vdCBt b2RpZnkvcnVuCj4+IC0gICAgYXNzZXJ0IShjaGVja19zeW5jX2pvYl9yZWFkX2FjY2VzcygmdXNl cl9pbmZvLCAmcmVhZF9hdXRoX2lkLCAmam9iKSk7Cj4+ICsgICAgYXNzZXJ0IShjaGVja19zeW5j X2pvYl9yZWFkX2FjY2VzcygKPj4gKyAgICAgICAgJnVzZXJfaW5mbywKPj4gKyAgICAgICAgJnJl YWRfYXV0aF9pZCwKPj4gKyAgICAgICAgJmpvYiwKPj4gKyAgICAgICAgU3luY0RpcmVjdGlvbjo6 UHVsbCwKPj4gKyAgICApKTsKPj4gICAgICAgam9iLm93bmVyID0gU29tZShyZWFkX2F1dGhfaWQu Y2xvbmUoKSk7Cj4+ICAgICAgIGFzc2VydCEoIWNoZWNrX3N5bmNfam9iX21vZGlmeV9hY2Nlc3Mo Cj4+ICAgICAgICAgICAmdXNlcl9pbmZvLAo+PiAgICAgICAgICAgJnJlYWRfYXV0aF9pZCwKPj4g LSAgICAgICAgJmpvYgo+PiArICAgICAgICAmam9iLAo+PiArICAgICAgICBTeW5jRGlyZWN0aW9u OjpQdWxsLAo+PiAgICAgICApKTsKPj4gICAgICAgam9iLm93bmVyID0gTm9uZTsKPj4gICAgICAg YXNzZXJ0ISghY2hlY2tfc3luY19qb2JfbW9kaWZ5X2FjY2VzcygKPj4gICAgICAgICAgICZ1c2Vy X2luZm8sCj4+ICAgICAgICAgICAmcmVhZF9hdXRoX2lkLAo+PiAtICAgICAgICAmam9iCj4+ICsg ICAgICAgICZqb2IsCj4+ICsgICAgICAgIFN5bmNEaXJlY3Rpb246OlB1bGwsCj4+ICAgICAgICkp Owo+PiAgICAgICBqb2Iub3duZXIgPSBTb21lKHdyaXRlX2F1dGhfaWQuY2xvbmUoKSk7Cj4+ICAg ICAgIGFzc2VydCEoIWNoZWNrX3N5bmNfam9iX21vZGlmeV9hY2Nlc3MoCj4+ICAgICAgICAgICAm dXNlcl9pbmZvLAo+PiAgICAgICAgICAgJnJlYWRfYXV0aF9pZCwKPj4gLSAgICAgICAgJmpvYgo+ PiArICAgICAgICAmam9iLAo+PiArICAgICAgICBTeW5jRGlyZWN0aW9uOjpQdWxsLAo+PiAgICAg ICApKTsKPj4gICAKPj4gICAgICAgLy8gdXNlciB3aXRoIHNpbXBsZSB3cml0ZSBwZXJtaXNzaW9u IGNhbiBtb2RpZnkvcnVuCj4+IC0gICAgYXNzZXJ0IShjaGVja19zeW5jX2pvYl9yZWFkX2FjY2Vz cygmdXNlcl9pbmZvLCAmd3JpdGVfYXV0aF9pZCwgJmpvYikpOwo+PiArICAgIGFzc2VydCEoY2hl Y2tfc3luY19qb2JfcmVhZF9hY2Nlc3MoCj4+ICsgICAgICAgICZ1c2VyX2luZm8sCj4+ICsgICAg ICAgICZ3cml0ZV9hdXRoX2lkLAo+PiArICAgICAgICAmam9iLAo+PiArICAgICAgICBTeW5jRGly ZWN0aW9uOjpQdWxsLAo+PiArICAgICkpOwo+PiAgICAgICBhc3NlcnQhKGNoZWNrX3N5bmNfam9i X21vZGlmeV9hY2Nlc3MoCj4+ICAgICAgICAgICAmdXNlcl9pbmZvLAo+PiAgICAgICAgICAgJndy aXRlX2F1dGhfaWQsCj4+IC0gICAgICAgICZqb2IKPj4gKyAgICAgICAgJmpvYiwKPj4gKyAgICAg ICAgU3luY0RpcmVjdGlvbjo6UHVsbCwKPj4gICAgICAgKSk7Cj4+ICAgCj4+ICAgICAgIC8vIGJ1 dCBjYW4ndCBtb2RpZnkvcnVuIHdpdGggZGVsZXRpb24KPj4gQEAgLTYyMCw3ICs3NjAsOCBAQCBh Y2w6MTovcmVtb3RlL3JlbW90ZTEvcmVtb3Rlc3RvcmUxOndyaXRlQHBiczpSZW1vdGVTeW5jT3Bl cmF0b3IKPj4gICAgICAgYXNzZXJ0ISghY2hlY2tfc3luY19qb2JfbW9kaWZ5X2FjY2VzcygKPj4g ICAgICAgICAgICZ1c2VyX2luZm8sCj4+ICAgICAgICAgICAmd3JpdGVfYXV0aF9pZCwKPj4gLSAg ICAgICAgJmpvYgo+PiArICAgICAgICAmam9iLAo+PiArICAgICAgICBTeW5jRGlyZWN0aW9uOjpQ dWxsLAo+PiAgICAgICApKTsKPj4gICAKPj4gICAgICAgLy8gdW5sZXNzIHRoZXkgaGF2ZSBEYXRh c3RvcmUuUHJ1bmUgYXMgd2VsbAo+PiBAQCAtNjI4LDcgKzc2OSw4IEBAIGFjbDoxOi9yZW1vdGUv cmVtb3RlMS9yZW1vdGVzdG9yZTE6d3JpdGVAcGJzOlJlbW90ZVN5bmNPcGVyYXRvcgo+PiAgICAg ICBhc3NlcnQhKGNoZWNrX3N5bmNfam9iX21vZGlmeV9hY2Nlc3MoCj4+ICAgICAgICAgICAmdXNl cl9pbmZvLAo+PiAgICAgICAgICAgJndyaXRlX2F1dGhfaWQsCj4+IC0gICAgICAgICZqb2IKPj4g KyAgICAgICAgJmpvYiwKPj4gKyAgICAgICAgU3luY0RpcmVjdGlvbjo6UHVsbCwKPj4gICAgICAg KSk7Cj4+ICAgCj4+ICAgICAgIC8vIGNoYW5naW5nIG93bmVyIGlzIG5vdCBwb3NzaWJsZQo+PiBA QCAtNjM2LDcgKzc3OCw4IEBAIGFjbDoxOi9yZW1vdGUvcmVtb3RlMS9yZW1vdGVzdG9yZTE6d3Jp dGVAcGJzOlJlbW90ZVN5bmNPcGVyYXRvcgo+PiAgICAgICBhc3NlcnQhKCFjaGVja19zeW5jX2pv Yl9tb2RpZnlfYWNjZXNzKAo+PiAgICAgICAgICAgJnVzZXJfaW5mbywKPj4gICAgICAgICAgICZ3 cml0ZV9hdXRoX2lkLAo+PiAtICAgICAgICAmam9iCj4+ICsgICAgICAgICZqb2IsCj4+ICsgICAg ICAgIFN5bmNEaXJlY3Rpb246OlB1bGwsCj4+ICAgICAgICkpOwo+PiAgIAo+PiAgICAgICAvLyBh bHNvIG5vdCB0byB0aGUgZGVmYXVsdCAncm9vdEBwYW0nCj4+IEBAIC02NDQsNyArNzg3LDggQEAg YWNsOjE6L3JlbW90ZS9yZW1vdGUxL3JlbW90ZXN0b3JlMTp3cml0ZUBwYnM6UmVtb3RlU3luY09w ZXJhdG9yCj4+ICAgICAgIGFzc2VydCEoIWNoZWNrX3N5bmNfam9iX21vZGlmeV9hY2Nlc3MoCj4+ ICAgICAgICAgICAmdXNlcl9pbmZvLAo+PiAgICAgICAgICAgJndyaXRlX2F1dGhfaWQsCj4+IC0g ICAgICAgICZqb2IKPj4gKyAgICAgICAgJmpvYiwKPj4gKyAgICAgICAgU3luY0RpcmVjdGlvbjo6 UHVsbCwKPj4gICAgICAgKSk7Cj4+ICAgCj4+ICAgICAgIC8vIHVubGVzcyB0aGV5IGhhdmUgRGF0 YXN0b3JlLk1vZGlmeSBhcyB3ZWxsCj4+IEBAIC02NTMsMTMgKzc5NywxNSBAQCBhY2w6MTovcmVt b3RlL3JlbW90ZTEvcmVtb3Rlc3RvcmUxOndyaXRlQHBiczpSZW1vdGVTeW5jT3BlcmF0b3IKPj4g ICAgICAgYXNzZXJ0IShjaGVja19zeW5jX2pvYl9tb2RpZnlfYWNjZXNzKAo+PiAgICAgICAgICAg JnVzZXJfaW5mbywKPj4gICAgICAgICAgICZ3cml0ZV9hdXRoX2lkLAo+PiAtICAgICAgICAmam9i Cj4+ICsgICAgICAgICZqb2IsCj4+ICsgICAgICAgIFN5bmNEaXJlY3Rpb246OlB1bGwsCj4+ICAg ICAgICkpOwo+PiAgICAgICBqb2Iub3duZXIgPSBOb25lOwo+PiAgICAgICBhc3NlcnQhKGNoZWNr X3N5bmNfam9iX21vZGlmeV9hY2Nlc3MoCj4+ICAgICAgICAgICAmdXNlcl9pbmZvLAo+PiAgICAg ICAgICAgJndyaXRlX2F1dGhfaWQsCj4+IC0gICAgICAgICZqb2IKPj4gKyAgICAgICAgJmpvYiwK Pj4gKyAgICAgICAgU3luY0RpcmVjdGlvbjo6UHVsbCwKPj4gICAgICAgKSk7Cj4+ICAgCj4+ICAg ICAgIE9rKCgpKQo+PiBkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wcm94bW94LWJhY2t1cC1wcm94eS5y cyBiL3NyYy9iaW4vcHJveG1veC1iYWNrdXAtcHJveHkucnMKPj4gaW5kZXggNmYxOWEzZmJkLi43 MDI4MzUxMGQgMTAwNjQ0Cj4+IC0tLSBhL3NyYy9iaW4vcHJveG1veC1iYWNrdXAtcHJveHkucnMK Pj4gKysrIGIvc3JjL2Jpbi9wcm94bW94LWJhY2t1cC1wcm94eS5ycwo+PiBAQCAtNTg5LDcgKzU4 OSwxNCBAQCBhc3luYyBmbiBzY2hlZHVsZV9kYXRhc3RvcmVfc3luY19qb2JzKCkgewo+PiAgICAg ICAgICAgT2soKGNvbmZpZywgX2RpZ2VzdCkpID0+IGNvbmZpZywKPj4gICAgICAgfTsKPj4gICAK Pj4gLSAgICBmb3IgKGpvYl9pZCwgKF8sIGpvYl9jb25maWcpKSBpbiBjb25maWcuc2VjdGlvbnMg ewo+PiArICAgIGZvciAoam9iX2lkLCAoam9iX3R5cGUsIGpvYl9jb25maWcpKSBpbiBjb25maWcu c2VjdGlvbnMgewo+PiArICAgICAgICBsZXQgc3luY19kaXJlY3Rpb24gPSBtYXRjaCBTeW5jRGly ZWN0aW9uOjpmcm9tX2NvbmZpZ190eXBlX3N0cigmam9iX3R5cGUpIHsKPj4gKyAgICAgICAgICAg IE9rKGRpcmVjdGlvbikgPT4gZGlyZWN0aW9uLAo+PiArICAgICAgICAgICAgRXJyKGVycikgPT4g ewo+PiArICAgICAgICAgICAgICAgIGVwcmludGxuISgidW5leHBlY3RlZCBjb25maWcgdHlwZSBp biBzeW5jIGpvYiBjb25maWcgLSB7ZXJyfSIpOwo+PiArICAgICAgICAgICAgICAgIGNvbnRpbnVl Owo+PiArICAgICAgICAgICAgfQo+PiArICAgICAgICB9Owo+PiAgICAgICAgICAgbGV0IGpvYl9j b25maWc6IFN5bmNKb2JDb25maWcgPSBtYXRjaCBzZXJkZV9qc29uOjpmcm9tX3ZhbHVlKGpvYl9j b25maWcpIHsKPj4gICAgICAgICAgICAgICBPayhjKSA9PiBjLAo+PiAgICAgICAgICAgICAgIEVy cihlcnIpID0+IHsKPj4gQEAgLTYxNiw3ICs2MjMsNyBAQCBhc3luYyBmbiBzY2hlZHVsZV9kYXRh c3RvcmVfc3luY19qb2JzKCkgewo+PiAgICAgICAgICAgICAgICAgICBqb2JfY29uZmlnLAo+PiAg ICAgICAgICAgICAgICAgICAmYXV0aF9pZCwKPj4gICAgICAgICAgICAgICAgICAgU29tZShldmVu dF9zdHIpLAo+PiAtICAgICAgICAgICAgICAgIFN5bmNEaXJlY3Rpb246OlB1bGwsCj4+ICsgICAg ICAgICAgICAgICAgc3luY19kaXJlY3Rpb24sCj4+ICAgICAgICAgICAgICAgICAgIGZhbHNlLAo+ PiAgICAgICAgICAgICAgICkgewo+PiAgICAgICAgICAgICAgICAgICBlcHJpbnRsbiEoInVuYWJs ZSB0byBzdGFydCBkYXRhc3RvcmUgc3luYyBqb2Ige2pvYl9pZH0gLSB7ZXJyfSIpOwo+PiAtLSAK Pj4gMi4zOS41Cj4+Cj4+Cj4+Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCj4+IHBicy1kZXZlbCBtYWlsaW5nIGxpc3QKPj4gcGJzLWRldmVsQGxpc3Rz LnByb3htb3guY29tCj4+IGh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFu L2xpc3RpbmZvL3Bicy1kZXZlbAo+Pgo+PgoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpwYnMtZGV2ZWwgbWFpbGluZyBsaXN0CnBicy1kZXZlbEBsaXN0 cy5wcm94bW94LmNvbQpodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9s aXN0aW5mby9wYnMtZGV2ZWwK