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 EB8261FF16B for ; Tue, 29 Jul 2025 11:43:16 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id DB8BBC8D9; Tue, 29 Jul 2025 11:44:41 +0200 (CEST) Mime-Version: 1.0 Date: Tue, 29 Jul 2025 11:44:05 +0200 Message-Id: From: "Lukas Wagner" To: "Proxmox VE development discussion" , "Aaron Lauterer" X-Mailer: aerc 0.20.1-0-g2ecb8770224a References: <20250726010626.1496866-1-a.lauterer@proxmox.com> <20250726010626.1496866-5-a.lauterer@proxmox.com> In-Reply-To: <20250726010626.1496866-5-a.lauterer@proxmox.com> X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1753782236518 X-SPAM-LEVEL: Spam detection results: 0 AWL -1.380 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 KAM_MAILER 2 Automated Mailer Tag Left in Email SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pve-devel] [PATCH cluster v4 1/2] status: introduce new pve-{type}- rrd and metric format X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Cc: pve-devel Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" SGV5IEFhcm9uLAoKc29tZSBub3RlcyBpbmxpbmUuCgpUaGUgbWVtb3J5IGxlYWtzIEkgbWVudGlv bmVkIHNob3VsZCBiZSBmaXhlZCBiZWZvcmUgdGhpcyBnb2VzIGluIChzaW5jZQp0aGlzIGlzIGlu IHRoZSBsb25nLXJ1bm5pbmcgcG14Y2ZzIHByb2Nlc3MpLCBldmVyeXRoaW5nIGVsc2UgY291bGQg YWxzbwpoYXBwZW4gYXMgYSBmb2xsb3d1cC4gSSdtIG5vdCBzdXBlciBmYW1pbGlhciB3aXRoIHRo aXMgY29kZSwgc28gdGhlcmUKbWlnaHQgYmUgdGhpbmdzIHRoYXQgSSd2ZSBtaXNzZWQuCgpPbiBT YXQgSnVsIDI2LCAyMDI1IGF0IDM6MDUgQU0gQ0VTVCwgQWFyb24gTGF1dGVyZXIgd3JvdGU6Cj4g V2l0aCBQVkU5IG5vdyB3ZSBoYXZlIGFkZGl0aW9uYWwgZmllbGRzIGluIHRoZSBtZXRyaWNzIHRo YXQgYXJlCj4gY29sbGVjdGVkIGFuZCBkaXN0cmlidXRlZCBpbiB0aGUgY2x1c3Rlci4gVGhlIG5l dyBmaWVsZHMvY29sdW1ucyBhcmUKPiBhZGRlZCBhdCB0aGUgZW5kIG9mIHRoZSBleGlzdGluZyBv bmVzLiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIGZvciBQVkU4Cj4gaW5zdGFsbGF0aW9ucyB0byBz dGlsbCB1c2UgdGhlbSBieSBjdXR0aW5nIHRoZSBuZXcgYWRkaXRpb25hbCBkYXRhLgo+Cj4gVG8g bWFrZSBpdCBtb3JlIGZ1dHVyZSBwcm9vZiwgdGhlIGZvcm1hdCBvZiB0aGUga2V5cyBmb3IgZWFj aCBtZXRyaWNzCj4gYXJlIG5vdyBjaGFuZ2VkOgo+Cj4gT2xkIHByZSBQVkU5OiAgcHZle3ZlcnNp b259LXt0eXBlfS97aWR9Cj4gTm93IHdpdGggUFZFOTogcHZlLXt0eXBlfS17dmVyc2lvbn0ve2lk fQo+Cj4gVGhpcyB3YXkgd2UgaGF2ZSBhbiBlYXNpZXIgdGltZSB0byBoYW5kbGUgbmV3IHZlcnNp b25zIGluIHRoZSBmdXR1cmUgYXMKPiB3ZSBpbml0aWFsbHkgb25seSBuZWVkIHRvIGNoZWNrIGZv ciBgcHZlLXt0eXBlfS1gLiBJZiB3ZSBrbm93IHRoZQo+IHZlcnNpb24sIHdlIGNhbiBoYW5kbGUg aXQgYWNjb3JkaW5nbHk7IGUuZy4gcGFkIGlmIG9sZGVyIGZvcm1hdCB3aXRoCj4gbWlzc2luZyBk YXRhLiBJZiB3ZSBkb24ndCBrbm93IHRoZSB2ZXJzaW9uLCBpdCBtdXN0IGJlIGEgbmV3ZXIgb25l IGFuZAo+IHdlIGN1dCB0aGUgZGF0YSBzdHJlYW0gYXQgdGhlIGxlbmd0aCB3ZSBuZWVkIGZvciB0 aGUgY3VycmVudCB2ZXJzaW9uLgo+Cj4gVGhpcyBtZWFucyBvZiBjb3Vyc2UgdGhhdCB0byBhdm9p ZCBhIGJyZWFraW5nIGNoYW5nZSwgd2UgY2FuIG9ubHkgYWRkCj4gbmV3IGNvbHVtbnMgaWYgbmVl ZGVkLCBidXQgbm90IHJlbW92ZSBhbnkhIEJ1dCB3YWl0aW5nIGZvciBhIGJyZWFraW5nCj4gY2hh bmdlIHVudGlsIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UgaXMgYSB3b3J0aHkgdHJhZGUtb2ZmIGlm IGl0IGFsbG93cwo+IHVzIHRvIGV4cGFuZCB0aGUgZm9ybWF0IGluIGJldHdlZW4gaWYgbmVlZGVk Lgo+Cj4gVGhlICdycmRfc2tpcF9kYXRhJyBmdW5jdGlvbiBnb3QgYSBuZXcgcGFyYW1ldGVyIGRl ZmluaW5nIHRoZSBzZXBhdGFyaW5nCj4gY2hhcmFjdGVyLiBUaGlzIHRoZW4gbWFrZXMgaXQgcG9z c2libGUgdG8gdXNlIGl0IGFsc28gdG8gZGV0ZXJtaW5lIHdoaWNoCj4gcGFydCBvZiB0aGUga2V5 IHN0cmluZyBpcyB0aGUgdmVyc2lvbi90eXBlIGFuZCB3aGljaCBvbmUgaXMgdGhlIGFjdHVhbAo+ IHJlc291cmNlIGlkZW50aWZpZXIuCj4KPiBXZSBhZGQgc2V2ZXJhbCBuZXcgY29sdW1ucyB0byBu b2RlcyBhbmQgVk1zIChndWVzdCkgUlJEcy4gU2VlIGZ1dGhlcgo+IGRvd24gZm9yIGRldGFpbHMu IEFkZGl0aW9uYWxseSB3ZSBjaGFuZ2UgdGhlIFJSQSBkZWZpbml0aW9ucyBvbiBob3cgd2UKPiBh Z2dyZWdhdGUgdGhlIGRhdGEgdG8gbWF0Y2ggaG93IHdlIGRvIGl0IGZvciB0aGUgUHJveG1veCBC YWNrdXAgU2VydmVyCj4gWzBdLgo+Cj4gVGhlIG1pZ3JhdGlvbiBvZiBhbiBleGlzdGluZyBpbnN0 YWxsYXRpb24gaXMgaGFuZGxlZCBieSBhIGRlZGljYXRlZAo+IHRvb2wuIE9ubHkgb25jZSB0aGF0 IGhhcyBoYXBwZW5lZCwgd2lsbCB3ZSBzdG9yZSBkYXRhIGluIHRoZSBuZXcKPiBmb3JtYXQuCj4g VGhpcyBsZWF2ZXMgdXMgd2l0aCBhIGZldyBjYXNlcyB0byBoYW5kbGU6Cj4KPiAgIGRhdGEgcmVj diDihpIgICAgICAgICAgb2xkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Cj4g ICDihpMgcnJkIGZpbGVzCj4gIC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgIG5vbmUgICAgICAg IHwgY2hlY2sgaWYgZGlyZWN0b3JpZXMgZXhpc3RzOgo+ICAgICAgICAgICAgICAgfCAgICAgbmVp dGhlciBvbGQgb3IgbmV3IC0+IG5ldwo+IAkgICAgICB8ICAgICBuZXcgICAgICAgICAgICAgICAg LT4gbmV3Cj4gCSAgICAgIHwgICAgIG9sZCBvbmx5ICAgICAgICAgICAtPiBvbGQKPiAtLS0tLS0t LS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQo+ICAgb25seSBvbGQgICAgfCB1c2Ugb2xkIGZpbGUgYXMgaXMgICAg ICAgIHwgY3V0IG5ldyBjb2x1bW5zIGFuZCB1c2Ugb2xkIGZpbGUKPiAtLS0tLS0tLS0tLS0tLXwt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQo+ICAgbmV3IHByZXNlbnQgfCBwYWQgZGF0YSB0byBtYXRjaCBuZXcgZm10IHwgdXNl IG5ldyBmaWxlIGFzIGlzIGFuZCBwYXNzIGRhdGEKPgo+IFRvIGhhbmRsZSB0aGUgcGFkZGluZyB3 ZSB1c2UgYSBidWZmZXIuIEN1dHRpbmcgY2FuIGJlIGhhbmRsZWQgYXMgd2UKPiBhbHJlYWR5IGRv IGl0IGluIHRoZSBzdGFibGUvYm9va3dvcm0gKFBWRTgpIGJyYW5jaCBieSBpbnRyb2R1Y2luZyBh IG51bGwKPiB0ZXJtaW5hdG9yIGluIHRoZSBvcmlnaW5hbCBzdHJpbmcgYXQgdGhlIGVuZCBvZiB0 aGUgZXhwZWN0ZWQgY29sdW1ucy4KPgo+IFdlIGFkZCB0aGUgZm9sbG93aW5nIG5ldyBjb2x1bW5z Ogo+Cj4gTm9kZXM6Cj4gKiBtZW1mcmVlCj4gKiBhcmNzaXplCj4gKiBwcmVzc3VyZXM6Cj4gICAq IGNwdSBzb21lCj4gICAqIGlvIHNvbWUKPiAgICogaW8gZnVsbAo+ICAgKiBtZW0gc29tZQo+ICAg KiBtZW0gZnVsbAo+Cj4gVk1zOgo+ICogbWVtaG9zdCAobWVtb3J5IGNvbnN1bXB0aW9uIG9mIGFs bCBwcm9jZXNzZXMgaW4gdGhlIGd1ZXN0cyBjZ3JvdXAsIGhvc3QgdmlldykKPiAqIHByZXNzdXJl czoKPiAgICogY3B1IHNvbWUKPiAgICogY3B1IGZ1bGwKPiAgICogaW8gc29tZQo+ICAgKiBpbyBm dWxsCj4gICAqIG1lbSBzb21lCj4gICAqIG1lbSBmdWxsCj4KPiBbMF0gaHR0cHM6Ly9naXQucHJv eG1veC5jb20vP3A9cHJveG1veC1iYWNrdXAuZ2l0O2E9YmxvYjtmPXNyYy9zZXJ2ZXIvbWV0cmlj X2NvbGxlY3Rpb24vcnJkLnJzO2g9ZWQzOWNjOTRlZTA1NjkyNGI3YWRiYzIxYjg0YzAyMDk0Nzhi Y2Y0MjtoYj1kYzMyNDcxNmE2ODhhNjdkNzAwZmExMzM3MjU3NDBhYzVkMzc5NWNlI2w3Ngo+Cj4g U2lnbmVkLW9mZi1ieTogQWFyb24gTGF1dGVyZXIgPGEubGF1dGVyZXJAcHJveG1veC5jb20+Cj4g LS0tCj4gIHNyYy9wbXhjZnMvc3RhdHVzLmMgfCAyNjEgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDIzNiBpbnNlcnRpb25zKCsp LCAyNSBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9zcmMvcG14Y2ZzL3N0YXR1cy5jIGIv c3JjL3BteGNmcy9zdGF0dXMuYwo+IGluZGV4IGU2YjU3OGIuLmVhZWYxMmMgMTAwNjQ0Cj4gLS0t IGEvc3JjL3BteGNmcy9zdGF0dXMuYwo+ICsrKyBiL3NyYy9wbXhjZnMvc3RhdHVzLmMKPiBAQCAt MTA5Niw2ICsxMDk2LDkgQEAga3ZlbnRyeV9oYXNoX3NldChHSGFzaFRhYmxlICprdmhhc2gsIGNv bnN0IGNoYXIgKmtleSwgZ2NvbnN0cG9pbnRlciBkYXRhLCBzaXplX3QKPiAgICAgIHJldHVybiBU UlVFOwo+ICB9Cj4gIAo+ICsvLyBXZSBjcmVhdGUgdGhlIFJSRCBmaWxlcyB3aXRoIGEgNjAgc2Vj b25kIHN0ZXBzaXplLCB0aGVyZWZvcmUsIFJSQSB0aW1lc3RlcHMKPiArLy8gYXJlIGFsd3lzIHBl ciA2MCBzZWNvbmRzLiBUaGVzZSA2MCBzZWNvbmRzIGFyZSB1c3VhbGx5IHNob3dpbmcgdXAgaW4g b3RoZXIKPiArLy8gY29kZSBwYXRocyB3aGVyZSB3ZSBpbnRlcmFjdCB3aXRoIFJSRCBkYXRhIQo+ ICBzdGF0aWMgY29uc3QgY2hhciAqcnJkX2RlZl9ub2RlW10gPSB7Cj4gICAgICAiRFM6bG9hZGF2 ZzpHQVVHRToxMjA6MDpVIiwKPiAgICAgICJEUzptYXhjcHU6R0FVR0U6MTIwOjA6VSIsCj4gQEAg LTExMjQsNiArMTEyNywzOSBAQCBzdGF0aWMgY29uc3QgY2hhciAqcnJkX2RlZl9ub2RlW10gPSB7 Cj4gICAgICBOVUxMLAo+ICB9Owo+ICAKPiArc3RhdGljIGNvbnN0IGNoYXIgKnJyZF9kZWZfbm9k ZV9wdmU5XzBbXSA9IHsKPiArICAgICJEUzpsb2FkYXZnOkdBVUdFOjEyMDowOlUiLAo+ICsgICAg IkRTOm1heGNwdTpHQVVHRToxMjA6MDpVIiwKPiArICAgICJEUzpjcHU6R0FVR0U6MTIwOjA6VSIs Cj4gKyAgICAiRFM6aW93YWl0OkdBVUdFOjEyMDowOlUiLAo+ICsgICAgIkRTOm1lbXRvdGFsOkdB VUdFOjEyMDowOlUiLAo+ICsgICAgIkRTOm1lbXVzZWQ6R0FVR0U6MTIwOjA6VSIsCj4gKyAgICAi RFM6c3dhcHRvdGFsOkdBVUdFOjEyMDowOlUiLAo+ICsgICAgIkRTOnN3YXB1c2VkOkdBVUdFOjEy MDowOlUiLAo+ICsgICAgIkRTOnJvb3R0b3RhbDpHQVVHRToxMjA6MDpVIiwKPiArICAgICJEUzpy b290dXNlZDpHQVVHRToxMjA6MDpVIiwKPiArICAgICJEUzpuZXRpbjpERVJJVkU6MTIwOjA6VSIs Cj4gKyAgICAiRFM6bmV0b3V0OkRFUklWRToxMjA6MDpVIiwKPiArICAgICJEUzptZW1mcmVlOkdB VUdFOjEyMDowOlUiLAo+ICsgICAgIkRTOmFyY3NpemU6R0FVR0U6MTIwOjA6VSIsCj4gKyAgICAi RFM6cHJlc3N1cmVjcHVzb21lOkdBVUdFOjEyMDowOlUiLAo+ICsgICAgIkRTOnByZXNzdXJlaW9z b21lOkdBVUdFOjEyMDowOlUiLAo+ICsgICAgIkRTOnByZXNzdXJlaW9mdWxsOkdBVUdFOjEyMDow OlUiLAo+ICsgICAgIkRTOnByZXNzdXJlbWVtb3J5c29tZTpHQVVHRToxMjA6MDpVIiwKPiArICAg ICJEUzpwcmVzc3VyZW1lbW9yeWZ1bGw6R0FVR0U6MTIwOjA6VSIsCj4gKwo+ICsgICAgIlJSQTpB VkVSQUdFOjAuNToxOjE0NDAiLCAgICAvLyAxIG1pbiAqIDE0NDAgPT4gMSBkYXkKPiArICAgICJS UkE6QVZFUkFHRTowLjU6MzA6MTQ0MCIsICAgLy8gMzAgbWluICogMTQ0MCA9PiAzMCBkYXkKPiAr ICAgICJSUkE6QVZFUkFHRTowLjU6MzYwOjE0NDAiLCAgLy8gNiBob3VycyAqIDE0NDAgPT4gMzYw IGRheSB+MSB5ZWFyCj4gKyAgICAiUlJBOkFWRVJBR0U6MC41OjEwMDgwOjU3MCIsIC8vIDEgd2Vl ayAqIDU3MCA9PiB+MTAgeWVhcnMKPiArCj4gKyAgICAiUlJBOk1BWDowLjU6MToxNDQwIiwgICAg Ly8gMSBtaW4gKiAxNDQwID0+IDEgZGF5Cj4gKyAgICAiUlJBOk1BWDowLjU6MzA6MTQ0MCIsICAg Ly8gMzAgbWluICogMTQ0MCA9PiAzMCBkYXkKPiArICAgICJSUkE6TUFYOjAuNTozNjA6MTQ0MCIs ICAvLyA2IGhvdXJzICogMTQ0MCA9PiAzNjAgZGF5IH4xIHllYXIKPiArICAgICJSUkE6TUFYOjAu NToxMDA4MDo1NzAiLCAvLyAxIHdlZWsgKiA1NzAgPT4gfjEwIHllYXJzCj4gKyAgICBOVUxMLAo+ ICt9Owo+ICsKPiAgc3RhdGljIGNvbnN0IGNoYXIgKnJyZF9kZWZfdm1bXSA9IHsKPiAgICAgICJE UzptYXhjcHU6R0FVR0U6MTIwOjA6VSIsCj4gICAgICAiRFM6Y3B1OkdBVUdFOjEyMDowOlUiLAo+ IEBAIC0xMTQ5LDYgKzExODUsMzYgQEAgc3RhdGljIGNvbnN0IGNoYXIgKnJyZF9kZWZfdm1bXSA9 IHsKPiAgICAgICJSUkE6TUFYOjAuNToxMDA4MDo3MCIsIC8vIDcgZGF5IG1heCAtIG9ueSB5ZWFy Cj4gICAgICBOVUxMLAo+ICB9Owo+ICtzdGF0aWMgY29uc3QgY2hhciAqcnJkX2RlZl92bV9wdmU5 XzBbXSA9IHsKPiArICAgICJEUzptYXhjcHU6R0FVR0U6MTIwOjA6VSIsCj4gKyAgICAiRFM6Y3B1 OkdBVUdFOjEyMDowOlUiLAo+ICsgICAgIkRTOm1heG1lbTpHQVVHRToxMjA6MDpVIiwKPiArICAg ICJEUzptZW06R0FVR0U6MTIwOjA6VSIsCj4gKyAgICAiRFM6bWF4ZGlzazpHQVVHRToxMjA6MDpV IiwKPiArICAgICJEUzpkaXNrOkdBVUdFOjEyMDowOlUiLAo+ICsgICAgIkRTOm5ldGluOkRFUklW RToxMjA6MDpVIiwKPiArICAgICJEUzpuZXRvdXQ6REVSSVZFOjEyMDowOlUiLAo+ICsgICAgIkRT OmRpc2tyZWFkOkRFUklWRToxMjA6MDpVIiwKPiArICAgICJEUzpkaXNrd3JpdGU6REVSSVZFOjEy MDowOlUiLAo+ICsgICAgIkRTOm1lbWhvc3Q6R0FVR0U6MTIwOjA6VSIsCj4gKyAgICAiRFM6cHJl c3N1cmVjcHVzb21lOkdBVUdFOjEyMDowOlUiLAo+ICsgICAgIkRTOnByZXNzdXJlY3B1ZnVsbDpH QVVHRToxMjA6MDpVIiwKPiArICAgICJEUzpwcmVzc3VyZWlvc29tZTpHQVVHRToxMjA6MDpVIiwK PiArICAgICJEUzpwcmVzc3VyZWlvZnVsbDpHQVVHRToxMjA6MDpVIiwKPiArICAgICJEUzpwcmVz c3VyZW1lbW9yeXNvbWU6R0FVR0U6MTIwOjA6VSIsCj4gKyAgICAiRFM6cHJlc3N1cmVtZW1vcnlm dWxsOkdBVUdFOjEyMDowOlUiLAo+ICsKPiArICAgICJSUkE6QVZFUkFHRTowLjU6MToxNDQwIiwg ICAgLy8gMSBtaW4gKiAxNDQwID0+IDEgZGF5Cj4gKyAgICAiUlJBOkFWRVJBR0U6MC41OjMwOjE0 NDAiLCAgIC8vIDMwIG1pbiAqIDE0NDAgPT4gMzAgZGF5Cj4gKyAgICAiUlJBOkFWRVJBR0U6MC41 OjM2MDoxNDQwIiwgIC8vIDYgaG91cnMgKiAxNDQwID0+IDM2MCBkYXkgfjEgeWVhcgo+ICsgICAg IlJSQTpBVkVSQUdFOjAuNToxMDA4MDo1NzAiLCAvLyAxIHdlZWsgKiA1NzAgPT4gfjEwIHllYXJz Cj4gKwo+ICsgICAgIlJSQTpNQVg6MC41OjE6MTQ0MCIsICAgIC8vIDEgbWluICogMTQ0MCA9PiAx IGRheQo+ICsgICAgIlJSQTpNQVg6MC41OjMwOjE0NDAiLCAgIC8vIDMwIG1pbiAqIDE0NDAgPT4g MzAgZGF5Cj4gKyAgICAiUlJBOk1BWDowLjU6MzYwOjE0NDAiLCAgLy8gNiBob3VycyAqIDE0NDAg PT4gMzYwIGRheSB+MSB5ZWFyCj4gKyAgICAiUlJBOk1BWDowLjU6MTAwODA6NTcwIiwgLy8gMSB3 ZWVrICogNTcwID0+IH4xMCB5ZWFycwo+ICsgICAgTlVMTCwKPiArfTsKPiAgCj4gIHN0YXRpYyBj b25zdCBjaGFyICpycmRfZGVmX3N0b3JhZ2VbXSA9IHsKPiAgICAgICJEUzp0b3RhbDpHQVVHRTox MjA6MDpVIiwKPiBAQCAtMTE2OCw4ICsxMjM0LDMwIEBAIHN0YXRpYyBjb25zdCBjaGFyICpycmRf ZGVmX3N0b3JhZ2VbXSA9IHsKPiAgICAgIE5VTEwsCj4gIH07Cj4gIAo+ICtzdGF0aWMgY29uc3Qg Y2hhciAqcnJkX2RlZl9zdG9yYWdlX3B2ZTlfMFtdID0gewo+ICsgICAgIkRTOnRvdGFsOkdBVUdF OjEyMDowOlUiLAo+ICsgICAgIkRTOnVzZWQ6R0FVR0U6MTIwOjA6VSIsCj4gKwo+ICsgICAgIlJS QTpBVkVSQUdFOjAuNToxOjE0NDAiLCAgICAvLyAxIG1pbiAqIDE0NDAgPT4gMSBkYXkKPiArICAg ICJSUkE6QVZFUkFHRTowLjU6MzA6MTQ0MCIsICAgLy8gMzAgbWluICogMTQ0MCA9PiAzMCBkYXkK PiArICAgICJSUkE6QVZFUkFHRTowLjU6MzYwOjE0NDAiLCAgLy8gNiBob3VycyAqIDE0NDAgPT4g MzYwIGRheSB+MSB5ZWFyCj4gKyAgICAiUlJBOkFWRVJBR0U6MC41OjEwMDgwOjU3MCIsIC8vIDEg d2VlayAqIDU3MCA9PiB+MTAgeWVhcnMKPiArCj4gKyAgICAiUlJBOk1BWDowLjU6MToxNDQwIiwg ICAgLy8gMSBtaW4gKiAxNDQwID0+IDEgZGF5Cj4gKyAgICAiUlJBOk1BWDowLjU6MzA6MTQ0MCIs ICAgLy8gMzAgbWluICogMTQ0MCA9PiAzMCBkYXkKPiArICAgICJSUkE6TUFYOjAuNTozNjA6MTQ0 MCIsICAvLyA2IGhvdXJzICogMTQ0MCA9PiAzNjAgZGF5IH4xIHllYXIKPiArICAgICJSUkE6TUFY OjAuNToxMDA4MDo1NzAiLCAvLyAxIHdlZWsgKiA1NzAgPT4gfjEwIHllYXJzCj4gKyAgICBOVUxM LAo+ICt9OwoKTm90IGltcG9ydGFudCByaWdodCBub3csIGJ1dCB0aGUgbWlncmF0aW9uIHRvb2wg YW5kIHRoaXMKc2hvdWxkIHByb2JhYmx5IHVzZSB0aGUgc2FtZSBzb3VyY2Ugb2YgdGhlIHNjaGVt YSBkZWZpbml0aW9uIChlLmcuIHZpYQpwdXR0aW5nIHRoaXMgaW50byBhIGhlYWRlciBmaWxlIHdo aWNoIGlzIHRoZW4gc2hhcmVkIGluIHNvbWUgd2F5CihzdWJtb2R1bGU/KSkKCj4gKwo+ICAjZGVm aW5lIFJSRERJUiAiL3Zhci9saWIvcnJkY2FjaGVkL2RiIgo+ICAKPiArLy8gQSA0ayBidWZmZXIg c2hvdWxkIGJlIHBsZW50eSB0byB0ZW1wb3JhcmlseSBzdG9yZSBSUkQgZGF0YS4gNjQgYml0IGlu dGVnZXJzIGFyZSAyMCBjaGFycyBsb25nLAo+ICsvLyBwbHVzIHRoZSBzZXBhcmF0b3IgY2hhcjog KDQwOTYtMSkvMjF+MTk1IGNvbHVtbnMgVGhpcyBidWZmZXIgaXMgb25seSB1c2VkIGluIHRoZQo+ ICsvLyBgdXBkYXRlX3JyZF9kYXRhYCBmdW5jdGlvbi4gSXQgaXMgc2FmZSB0byB1c2UgYXMgdGhl IGNhbGxpbmcgc2l0ZXMgZ2V0IHRoZSBnbG9iYWwgbXV0ZXg6Cj4gKy8vIHJyZF91cGRhdGVfZGF0 YSAtPiBycmRlbnRyeV9oYXNoX3NldCAtPiBjZnNfc3RhdHVzX3NldCAvIGFuZCBjZnNfa3ZzdG9y ZV9ub2RlX3NldAo+ICtzdGF0aWMgY2hhciBycmRfZm9ybWF0X3VwZGF0ZV9idWZmZXJbNDA5Nl07 CgpNYXliZSBJJ20gbWlzc2luZyBzb21ldGhpbmcsIGJ1dCBzaW5jZSB0aGlzIGlzIG9ubHkgdXNl ZCBpbiB0aGUKdXBkYXRlX3JyZF9kYXRhIGZ1bmN0aW9uLCBpcyB0aGVyZSBhbnkgcmVhc29uIHdo eSB0aGlzIHN0YXRpY2FsbHkKYWxsb2NhdGVkIGFuZCBub3QganVzdCBtYWxsb2MnZCBhcyBuZWVk ZWQ/Cgo+ICsKPiAgc3RhdGljIHZvaWQgY3JlYXRlX3JyZF9maWxlKGNvbnN0IGNoYXIgKmZpbGVu YW1lLCBpbnQgYXJnY291bnQsIGNvbnN0IGNoYXIgKnJyZGRlZltdKSB7Cj4gICAgICAvKiBzdGFy dCBhdCBkYXkgYm91bmRhcnkgKi8KPiAgICAgIHRpbWVfdCBjdGltZTsKPiBAQCAtMTIyOSw2ICsx MzE3LDggQEAgc3RhdGljIHZvaWQgdXBkYXRlX3JyZF9kYXRhKGNvbnN0IGNoYXIgKmtleSwgZ2Nv bnN0cG9pbnRlciBkYXRhLCBzaXplX3QgbGVuKSB7Cj4gIAo+ICAgICAgaW50IHNraXAgPSAwOyAv LyBjb2x1bW5zIHRvIHNraXAgYXQgYmVnaW5uaW5nLiBUaGV5IGNvbnRhaW4gbm9uLWFyY2hpdmFi bGUgZGF0YSwgbGlrZSB1cHRpbWUsCj4gICAgICAgICAgICAgICAgICAgIC8vIHN0YXR1cywgaXMg Z3Vlc3QgYSB0ZW1wbGF0ZSBhbmQgc3VjaC4KPiArICAgIGludCBwYWRkaW5nID0gMDsgLy8gaG93 IG1hbnkgY29sdW1ucyBuZWVkIHRvIGJlIGFkZGVkIHdpdGggIlUiIGlmIHdlIGdldCBhbiBvbGQg Zm9ybWF0IHRoYXQgaXMKPiArICAgICAgICAgICAgICAgICAgICAgLy8gbWlzc2luZyBjb2x1bW5z IGF0IHRoZSBlbmQuCj4gICAgICBpbnQga2VlcF9jb2x1bW5zID0gMDsgLy8gaG93IG1hbnkgY29s dW1ucyBkbyB3ZSB3YW50IHRvIGtlZXAgKGFmdGVyIGluaXRpYWwgc2tpcCkgaW4gY2FzZSB3ZSBn ZXQKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb3JlIGNvbHVtbnMgdGhhbiBuZWVk ZWQgZnJvbSBhIG5ld2VyIGZvcm1hdAo+ICAKPiBAQCAtMTI0MywyMCArMTMzMyw2MCBAQCBzdGF0 aWMgdm9pZCB1cGRhdGVfcnJkX2RhdGEoY29uc3QgY2hhciAqa2V5LCBnY29uc3Rwb2ludGVyIGRh dGEsIHNpemVfdCBsZW4pIHsKPiAgICAgICAgICAgICAgZ290byBrZXllcnJvcjsKPiAgICAgICAg ICB9Cj4gIAo+IC0gICAgICAgIHNraXAgPSAyOyAvLyBmaXJzdCB0d28gY29sdW1ucyBhcmUgbGl2 ZSBkYXRhIHRoYXQgaXNuJ3QgYXJjaGl2ZWQKPiArICAgICAgICBmaWxlbmFtZSA9IGdfc3RyZHVw X3ByaW50ZihSUkRESVIgIi9wdmUtbm9kZS05LjAvJXMiLCBub2RlKTsKPiArICAgICAgICBjaGFy ICpmaWxlbmFtZV9wdmUyID0gZ19zdHJkdXBfcHJpbnRmKFJSRERJUiAiL3B2ZTItbm9kZS8lcyIs IG5vZGUpOwo+ICAKPiAtICAgICAgICBpZiAoc3RybmNtcChrZXksICJwdmUtbm9kZS0iLCA5KSA9 PSAwKSB7CgpCdHcsIHlvdSBjYW4gc2FmZWx5IHVzZSBgc3RyY21wYCBpZiB0aGUgdGhpbmcgeW91 IGFyZSBjb21wYXJpbmcgdG8gaXMgYQpzdHJpbmcgbGl0ZXJhbCwgc2luY2UgdGhlc2UgYXJlIGd1 YXJhbnRlZWQgdG8gYmUgTlVMTC10ZXJtaW5hdGVkLiBJCndvdWxkIGV2ZW4gYXJndWUgaXRzIGJl dHRlciB0aGF0IHVzaW5nIGBzdHJuY21wYCwgc2luY2UgdGhlcmUgaXMgbm8KY2hhbmNlIG9mIG1p c2NvdW50aW5nIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBsaXRlcmFsICh3aGljaCBpcyBhbHNv CmhhcmQgdG8gc3BvdCBpbiBjb2RlIHJldmlldykuCgpBcHBsaWVzIHRvIHRoZSBvdGhlciBpbnN0 YW5jZXMgd2hlcmUgeW91IGRvIHRoZSBzYW1lIGFzIHdlbGwuCgpPZiBjb3Vyc2UsIGlmICpib3Ro KiBhcmd1bWVudHMgYXJlIGEgcG9pbnRlciB3aXRoIGNvbnRlbnQgdGhhdCBtaWdodCBub3QKYmUg TlVMTC10ZXJtaW5hdGVkLCB5b3UgYXJlIHN0aWxsIHJlcXVpcmVkIHRvIHVzZSBgc3RybmxlbmAg b2YgYXZvaWQKYnVmZmVyIG92ZXJydW5zLgoKCgoKPiAtICAgICAgICAgICAga2VlcF9jb2x1bW5z ID0gMTI7IC8vIHB2ZTItbm9kZSBmb3JtYXQgdXNlcyAxMiBjb2x1bW5zCj4gKyAgICAgICAgaW50 IHVzZV9wdmUyX2ZpbGUgPSAwOwo+ICsKPiArICAgICAgICAvLyBjaGVjayBleGlzdGluZyBycmQg ZmlsZXMgYW5kIGRpcmVjdG9yaWVzCj4gKyAgICAgICAgaWYgKGdfZmlsZV90ZXN0KGZpbGVuYW1l LCBHX0ZJTEVfVEVTVF9FWElTVFMpKSB7Cj4gKyAgICAgICAgICAgIC8vIHB2ZS1ub2RlLTkuMCBm aWxlIGV4aXN0cywgd2UgdXNlIHRoYXQKPiArICAgICAgICAgICAgLy8gVE9ETzogZ2V0IGNvbmRp dGlvbnMgc28sIHRoYXQgd2UgZG8gbm90IGhhdmUgdGhpcyBlbXB0eSBicmFuY2gKPiArICAgICAg ICB9IGVsc2UgaWYgKGdfZmlsZV90ZXN0KGZpbGVuYW1lX3B2ZTIsIEdfRklMRV9URVNUX0VYSVNU UykpIHsKPiArICAgICAgICAgICAgLy8gb2xkIGZpbGUgZXhpc3RzLCB1c2UgaXQKPiArICAgICAg ICAgICAgdXNlX3B2ZTJfZmlsZSA9IDE7Cj4gKyAgICAgICAgICAgIGZpbGVuYW1lID0gZ19zdHJk dXBfcHJpbnRmKCIlcyIsIGZpbGVuYW1lX3B2ZTIpOwoKCllvdSBhcmUgbGVha2luZyBtZW1vcnkg aGVyZSwgYGZpbGVuYW1lYCBhbHJlYWR5IGhhcyBhIHBvaW50ZXIgdG8KYWxsb2NhdGVkIG1lbW9y eSB0aGF0IHlvdSBhcmUgb3ZlcndyaXRpbmcuCgo+ICsgICAgICAgIH0gZWxzZSB7Cj4gKyAgICAg ICAgICAgIC8vIG5laXRoZXIgZmlsZSBleGlzdHMsIGNoZWNrIGZvciBkaXJlY3RvcmllcyB0byBk ZWNpZGUgYW5kIGNyZWF0ZSBmaWxlCj4gKyAgICAgICAgICAgIGNoYXIgKmRpcl9wdmUyID0gZ19z dHJkdXBfcHJpbnRmKFJSRERJUiAiL3B2ZTItbm9kZSIpOwo+ICsgICAgICAgICAgICBjaGFyICpk aXJfcHZlOTAgPSBnX3N0cmR1cF9wcmludGYoUlJERElSICIvcHZlLW5vZGUtOS4wIik7Cj4gKwo+ ICsgICAgICAgICAgICBpZiAoZ19maWxlX3Rlc3QoZGlyX3B2ZTkwLCBHX0ZJTEVfVEVTVF9JU19E SVIpKSB7Cj4gKwo+ICsgICAgICAgICAgICAgICAgaW50IGFyZ2NvdW50ID0gc2l6ZW9mKHJyZF9k ZWZfbm9kZV9wdmU5XzApIC8gc2l6ZW9mKHZvaWQgKikgLSAxOwo+ICsgICAgICAgICAgICAgICAg Y3JlYXRlX3JyZF9maWxlKGZpbGVuYW1lLCBhcmdjb3VudCwgcnJkX2RlZl9ub2RlX3B2ZTlfMCk7 Cj4gKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZ19maWxlX3Rlc3QoZGlyX3B2ZTIsIEdfRklMRV9U RVNUX0lTX0RJUikpIHsKPiArICAgICAgICAgICAgICAgIHVzZV9wdmUyX2ZpbGUgPSAxOwo+ICsK PiArICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gZ19zdHJkdXBfcHJpbnRmKCIlcyIsIGZpbGVu YW1lX3B2ZTIpOwoKU2FtZSBoZXJlCgo+ICsKPiArICAgICAgICAgICAgICAgIGludCBhcmdjb3Vu dCA9IHNpemVvZihycmRfZGVmX25vZGUpIC8gc2l6ZW9mKHZvaWQgKikgLSAxOwo+ICsgICAgICAg ICAgICAgICAgY3JlYXRlX3JyZF9maWxlKGZpbGVuYW1lLCBhcmdjb3VudCwgcnJkX2RlZl9ub2Rl KTsKPiArICAgICAgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAgIC8vIG5vIGRpciBl eGlzdHMgeWV0LCB1c2UgbmV3IHB2ZS1ub2RlLTkuMAo+ICsgICAgICAgICAgICAgICAgbWtkaXIo UlJERElSICIvcHZlLW5vZGUtOS4wIiwgMDc1NSk7CgpQcmUtZXhpc3RpbmcsIGJ1dCBta2RpciBy ZXR1cm5zIGFuIGVycm9yIGNvZGUgdGhhdCBzaG91bGQgYmUgY2hlY2tlZAoKPiArCj4gKyAgICAg ICAgICAgICAgICBpbnQgYXJnY291bnQgPSBzaXplb2YocnJkX2RlZl9ub2RlX3B2ZTlfMCkgLyBz aXplb2Yodm9pZCAqKSAtIDE7Cj4gKyAgICAgICAgICAgICAgICBjcmVhdGVfcnJkX2ZpbGUoZmls ZW5hbWUsIGFyZ2NvdW50LCBycmRfZGVmX25vZGVfcHZlOV8wKTsKPiArICAgICAgICAgICAgfQo+ ICsgICAgICAgICAgICBnX2ZyZWUoZGlyX3B2ZTIpOwo+ICsgICAgICAgICAgICBnX2ZyZWUoZGly X3B2ZTkwKTsKPiAgICAgICAgICB9Cj4gIAo+IC0gICAgICAgIGZpbGVuYW1lID0gZ19zdHJkdXBf cHJpbnRmKFJSRERJUiAiL3B2ZTItbm9kZS8lcyIsIG5vZGUpOwo+ICsgICAgICAgIHNraXAgPSAy OyAvLyBmaXJzdCB0d28gY29sdW1ucyBhcmUgbGl2ZSBkYXRhIHRoYXQgaXNuJ3QgYXJjaGl2ZWQK PiAgCj4gLSAgICAgICAgaWYgKCFnX2ZpbGVfdGVzdChmaWxlbmFtZSwgR19GSUxFX1RFU1RfRVhJ U1RTKSkgewo+IC0gICAgICAgICAgICBta2RpcihSUkRESVIgIi9wdmUyLW5vZGUiLCAwNzU1KTsK PiAtICAgICAgICAgICAgaW50IGFyZ2NvdW50ID0gc2l6ZW9mKHJyZF9kZWZfbm9kZSkgLyBzaXpl b2Yodm9pZCAqKSAtIDE7Cj4gLSAgICAgICAgICAgIGNyZWF0ZV9ycmRfZmlsZShmaWxlbmFtZSwg YXJnY291bnQsIHJyZF9kZWZfbm9kZSk7Cj4gKyAgICAgICAgaWYgKHN0cm5jbXAoa2V5LCAicHZl Mi1ub2RlLyIsIDEwKSA9PSAwICYmICF1c2VfcHZlMl9maWxlKSB7Cj4gKyAgICAgICAgICAgIHBh ZGRpbmcgPSA3OyAvLyBwdmUtbm9kZS05LjAgaGFzIDcgbW9yZSBjb2x1bW5zIHRoYW4gcHZlMi1u b2RlCj4gKyAgICAgICAgfSBlbHNlIGlmIChzdHJuY21wKGtleSwgInB2ZS1ub2RlLSIsIDkpID09 IDAgJiYgdXNlX3B2ZTJfZmlsZSkgewo+ICsgICAgICAgICAgICBrZWVwX2NvbHVtbnMgPSAxMjsg Ly8gcHZlMi1ub2RlIGZvcm1hdCB1c2VzIDEyIGNvbHVtbnMKPiArICAgICAgICB9IGVsc2UgaWYg KHN0cm5jbXAoa2V5LCAicHZlLW5vZGUtOS4wLyIsIDEzKSAhPSAwKSB7Cj4gKyAgICAgICAgICAg IC8vIHdlIHJlY2VpdmVkIGFuIHVua25vd24gZm9ybWF0LCBleHBlY3RhdGlvbiBpcyBpdCBpcyBu ZXdlciBhbmQgaGFzIG1vcmUgY29sdW1ucwo+ICsgICAgICAgICAgICAvLyB0aGFuIHdlIGNhbiBj dXJyZW50bHkgaGFuZGxlCj4gKyAgICAgICAgICAgIGtlZXBfY29sdW1ucyA9IDE5OyAvLyBwdmUt bm9kZS05LjAgZm9ybWF0IHVzZXMgMTkgY29sdW1ucwoKSSB0aGluayB0aGVzZSBtYWdpYyBudW1i ZXJzIHNob3VsZCBiZSBjb25zdGFudHMsIGUuZy4KICAjZGVmaW5lIFBWRV9OT0RFXzlfMF9DT0xV TU5fQ09VTlQgKDE5KQoKYmVzdCBkZWZpbmVkIG5leHQgdG8gcnJkX2RlZl9ub2RlX3B2ZTlfMCwg c28gdGhhdCBpdCBpcyBlYXN5IHRvCmNyb3NzLWNoZWNrIHdpdGggdGhlIHJyZCBzY2hlbWEgZGVm aW5pdGlvbi4KCj4gICAgICAgICAgfQo+ICAKPiArICAgICAgICBnX2ZyZWUoZmlsZW5hbWVfcHZl Mik7Cj4gKwo+ICAgICAgfSBlbHNlIGlmIChzdHJuY21wKGtleSwgInB2ZTIuMy12bS8iLCAxMCkg PT0gMCB8fCBzdHJuY21wKGtleSwgInB2ZS12bS0iLCA3KSA9PSAwKSB7Cj4gIAo+ICAgICAgICAg IGNvbnN0IGNoYXIgKnZtaWQgPSBycmRfc2tpcF9kYXRhKGtleSwgMSwgJy8nKTsKPiBAQCAtMTI2 OSwyMCArMTM5OSw2MCBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfcnJkX2RhdGEoY29uc3QgY2hhciAq a2V5LCBnY29uc3Rwb2ludGVyIGRhdGEsIHNpemVfdCBsZW4pIHsKPiAgICAgICAgICAgICAgZ290 byBrZXllcnJvcjsKPiAgICAgICAgICB9Cj4gIAo+IC0gICAgICAgIHNraXAgPSA0OyAvLyBmaXJz dCA0IGNvbHVtbnMgYXJlIGxpdmUgZGF0YSB0aGF0IGlzbid0IGFyY2hpdmVkCj4gKyAgICAgICAg ZmlsZW5hbWUgPSBnX3N0cmR1cF9wcmludGYoUlJERElSICIvcHZlLXZtLTkuMC8lcyIsIHZtaWQp Owo+ICsgICAgICAgIGNoYXIgKmZpbGVuYW1lX3B2ZTIgPSBnX3N0cmR1cF9wcmludGYoUlJERElS ICIvJXMvJXMiLCAicHZlMi12bSIsIHZtaWQpOwo+ICsKPiArICAgICAgICBpbnQgdXNlX3B2ZTJf ZmlsZSA9IDA7Cj4gKwo+ICsgICAgICAgIC8vIGNoZWNrIGV4aXN0aW5nIHJyZCBmaWxlcyBhbmQg ZGlyZWN0b3JpZXMKPiArICAgICAgICBpZiAoZ19maWxlX3Rlc3QoZmlsZW5hbWUsIEdfRklMRV9U RVNUX0VYSVNUUykpIHsKPiArICAgICAgICAgICAgLy8gcHZlLXZtLTkuMCBmaWxlIGV4aXN0cywg d2UgdXNlIHRoYXQKPiArICAgICAgICAgICAgLy8gVE9ETzogZ2V0IGNvbmRpdGlvbnMgc28sIHRo YXQgd2UgZG8gbm90IGhhdmUgdGhpcyBlbXB0eSBicmFuY2gKPiArICAgICAgICB9IGVsc2UgaWYg KGdfZmlsZV90ZXN0KGZpbGVuYW1lX3B2ZTIsIEdfRklMRV9URVNUX0VYSVNUUykpIHsKPiArICAg ICAgICAgICAgLy8gb2xkIGZpbGUgZXhpc3RzLCB1c2UgaXQKPiArICAgICAgICAgICAgdXNlX3B2 ZTJfZmlsZSA9IDE7Cj4gKyAgICAgICAgICAgIGZpbGVuYW1lID0gZ19zdHJkdXBfcHJpbnRmKCIl cyIsIGZpbGVuYW1lX3B2ZTIpOwoKU2FtZSBoZXJlCgo+ICsgICAgICAgIH0gZWxzZSB7Cj4gKyAg ICAgICAgICAgIC8vIG5laXRoZXIgZmlsZSBleGlzdHMsIGNoZWNrIGZvciBkaXJlY3RvcmllcyB0 byBkZWNpZGUgYW5kIGNyZWF0ZSBmaWxlCj4gKyAgICAgICAgICAgIGNoYXIgKmRpcl9wdmUyID0g Z19zdHJkdXBfcHJpbnRmKFJSRERJUiAiL3B2ZTItdm0iKTsKPiArICAgICAgICAgICAgY2hhciAq ZGlyX3B2ZTkwID0gZ19zdHJkdXBfcHJpbnRmKFJSRERJUiAiL3B2ZS12bS05LjAiKTsKPiArCj4g KyAgICAgICAgICAgIGlmIChnX2ZpbGVfdGVzdChkaXJfcHZlOTAsIEdfRklMRV9URVNUX0lTX0RJ UikpIHsKPiAgCj4gLSAgICAgICAgaWYgKHN0cm5jbXAoa2V5LCAicHZlLXZtLSIsIDcpID09IDAp IHsKPiAtICAgICAgICAgICAga2VlcF9jb2x1bW5zID0gMTA7IC8vIHB2ZTIuMy12bSBmb3JtYXQg dXNlcyAxMCBkYXRhIGNvbHVtbnMKPiArICAgICAgICAgICAgICAgIGludCBhcmdjb3VudCA9IHNp emVvZihycmRfZGVmX3ZtX3B2ZTlfMCkgLyBzaXplb2Yodm9pZCAqKSAtIDE7Cj4gKyAgICAgICAg ICAgICAgICBjcmVhdGVfcnJkX2ZpbGUoZmlsZW5hbWUsIGFyZ2NvdW50LCBycmRfZGVmX3ZtX3B2 ZTlfMCk7Cj4gKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZ19maWxlX3Rlc3QoZGlyX3B2ZTIsIEdf RklMRV9URVNUX0lTX0RJUikpIHsKPiArICAgICAgICAgICAgICAgIHVzZV9wdmUyX2ZpbGUgPSAx Owo+ICsKPiArICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gZ19zdHJkdXBfcHJpbnRmKCIlcyIs IGZpbGVuYW1lX3B2ZTIpOwoKU2FtZSBoZXJlCgo+ICsKPiArICAgICAgICAgICAgICAgIGludCBh cmdjb3VudCA9IHNpemVvZihycmRfZGVmX3ZtKSAvIHNpemVvZih2b2lkICopIC0gMTsKPiArICAg ICAgICAgICAgICAgIGNyZWF0ZV9ycmRfZmlsZShmaWxlbmFtZSwgYXJnY291bnQsIHJyZF9kZWZf dm0pOwo+ICsgICAgICAgICAgICB9IGVsc2Ugewo+ICsgICAgICAgICAgICAgICAgLy8gbm8gZGly IGV4aXN0cyB5ZXQsIHVzZSBuZXcgcHZlLXZtLTkuMAo+ICsgICAgICAgICAgICAgICAgbWtkaXIo UlJERElSICIvcHZlLXZtLTkuMCIsIDA3NTUpOwo+ICsKPiArICAgICAgICAgICAgICAgIGludCBh cmdjb3VudCA9IHNpemVvZihycmRfZGVmX3ZtX3B2ZTlfMCkgLyBzaXplb2Yodm9pZCAqKSAtIDE7 Cj4gKyAgICAgICAgICAgICAgICBjcmVhdGVfcnJkX2ZpbGUoZmlsZW5hbWUsIGFyZ2NvdW50LCBy cmRfZGVmX3ZtX3B2ZTlfMCk7Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgZ19mcmVl KGRpcl9wdmUyKTsKPiArICAgICAgICAgICAgZ19mcmVlKGRpcl9wdmU5MCk7Cj4gICAgICAgICAg fQo+ICAKPiAtICAgICAgICBmaWxlbmFtZSA9IGdfc3RyZHVwX3ByaW50ZihSUkRESVIgIi8lcy8l cyIsICJwdmUyLXZtIiwgdm1pZCk7Cj4gKyAgICAgICAgc2tpcCA9IDQ7IC8vIGZpcnN0IDQgY29s dW1ucyBhcmUgbGl2ZSBkYXRhIHRoYXQgaXNuJ3QgYXJjaGl2ZWQKPiAgCj4gLSAgICAgICAgaWYg KCFnX2ZpbGVfdGVzdChmaWxlbmFtZSwgR19GSUxFX1RFU1RfRVhJU1RTKSkgewo+IC0gICAgICAg ICAgICBta2RpcihSUkRESVIgIi9wdmUyLXZtIiwgMDc1NSk7Cj4gLSAgICAgICAgICAgIGludCBh cmdjb3VudCA9IHNpemVvZihycmRfZGVmX3ZtKSAvIHNpemVvZih2b2lkICopIC0gMTsKPiAtICAg ICAgICAgICAgY3JlYXRlX3JyZF9maWxlKGZpbGVuYW1lLCBhcmdjb3VudCwgcnJkX2RlZl92bSk7 Cj4gKyAgICAgICAgaWYgKHN0cm5jbXAoa2V5LCAicHZlMi4zLXZtLyIsIDEwKSA9PSAwICYmICF1 c2VfcHZlMl9maWxlKSB7Cj4gKyAgICAgICAgICAgIHBhZGRpbmcgPSA3OyAvLyBwdmUtdm0tOS4w IGhhcyA3IG1vcmUgY29sdW1ucyB0aGFuIHB2ZTIuMy12bQo+ICsgICAgICAgIH0gZWxzZSBpZiAo c3RybmNtcChrZXksICJwdmUtdm0tIiwgNykgPT0gMCAmJiB1c2VfcHZlMl9maWxlKSB7Cj4gKyAg ICAgICAgICAgIGtlZXBfY29sdW1ucyA9IDEwOyAvLyBwdmUyLjMtdm0gZm9ybWF0IHVzZXMgMTAg Y29sdW1ucwo+ICsgICAgICAgIH0gZWxzZSBpZiAoc3RybmNtcChrZXksICJwdmUtdm0tOS4wLyIs IDExKSAhPSAwKSB7Cj4gKyAgICAgICAgICAgIC8vIHdlIHJlY2VpdmVkIGFuIHVua25vd24gZm9y bWF0LCBleHBlY3RhdGlvbiBpcyBpdCBpcyBuZXdlciBhbmQgaGFzIG1vcmUgY29sdW1ucwo+ICsg ICAgICAgICAgICAvLyB0aGFuIHdlIGNhbiBjdXJyZW50bHkgaGFuZGxlCj4gKyAgICAgICAgICAg IGtlZXBfY29sdW1ucyA9IDE3OyAvLyBwdmUtdm0tOS4wIGZvcm1hdCB1c2VzIDE5IGNvbHVtbnMK PiAgICAgICAgICB9Cj4gIAo+ICsgICAgICAgIGdfZnJlZShmaWxlbmFtZV9wdmUyKTsKPiArCj4g ICAgICB9IGVsc2UgaWYgKHN0cm5jbXAoa2V5LCAicHZlMi1zdG9yYWdlLyIsIDEzKSA9PSAwIHx8 IHN0cm5jbXAoa2V5LCAicHZlLXN0b3JhZ2UtIiwgMTIpID09IDApIHsKPiAgICAgICAgICBjb25z dCBjaGFyICpub2RlID0gcnJkX3NraXBfZGF0YShrZXksIDEsICcvJyk7IC8vIHdpbGwgY29udGFp biB7bm9kZX0ve3N0b3JhZ2V9Cj4gIAo+IEBAIC0xMzAwLDE4ICsxNDcwLDUwIEBAIHN0YXRpYyB2 b2lkIHVwZGF0ZV9ycmRfZGF0YShjb25zdCBjaGFyICprZXksIGdjb25zdHBvaW50ZXIgZGF0YSwg c2l6ZV90IGxlbikgewo+ICAgICAgICAgICAgICBnb3RvIGtleWVycm9yOwo+ICAgICAgICAgIH0K PiAgCj4gLSAgICAgICAgZmlsZW5hbWUgPSBnX3N0cmR1cF9wcmludGYoUlJERElSICIvcHZlMi1z dG9yYWdlLyVzIiwgbm9kZSk7Cj4gKyAgICAgICAgZmlsZW5hbWUgPSBnX3N0cmR1cF9wcmludGYo UlJERElSICIvcHZlLXN0b3JhZ2UtOS4wLyVzIiwgbm9kZSk7Cj4gKyAgICAgICAgY2hhciAqZmls ZW5hbWVfcHZlMiA9IGdfc3RyZHVwX3ByaW50ZihSUkRESVIgIi8lcy8lcyIsICJwdmUyLXN0b3Jh Z2UiLCBub2RlKTsKPiArCj4gKyAgICAgICAgLy8gY2hlY2sgZXhpc3RpbmcgcnJkIGZpbGVzIGFu ZCBkaXJlY3Rvcmllcwo+ICsgICAgICAgIGlmIChnX2ZpbGVfdGVzdChmaWxlbmFtZSwgR19GSUxF X1RFU1RfRVhJU1RTKSkgewo+ICsgICAgICAgICAgICAvLyBwdmUtc3RvcmFnZS05LjAgZmlsZSBl eGlzdHMsIHdlIHVzZSB0aGF0Cj4gKyAgICAgICAgICAgIC8vIFRPRE86IGdldCBjb25kaXRpb25z IHNvLCB0aGF0IHdlIGRvIG5vdCBoYXZlIHRoaXMgZW1wdHkgYnJhbmNoCj4gKyAgICAgICAgfSBl bHNlIGlmIChnX2ZpbGVfdGVzdChmaWxlbmFtZV9wdmUyLCBHX0ZJTEVfVEVTVF9FWElTVFMpKSB7 Cj4gKyAgICAgICAgICAgIC8vIG9sZCBmaWxlIGV4aXN0cywgdXNlIGl0Cj4gKyAgICAgICAgICAg IGZpbGVuYW1lID0gZ19zdHJkdXBfcHJpbnRmKCIlcyIsIGZpbGVuYW1lX3B2ZTIpOwoKU2FtZSBo ZXJlCgo+ICsgICAgICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgICAgIC8vIG5laXRoZXIgZmlsZSBl eGlzdHMsIGNoZWNrIGZvciBkaXJlY3RvcmllcyB0byBkZWNpZGUgYW5kIGNyZWF0ZSBmaWxlCj4g KyAgICAgICAgICAgIGNoYXIgKmRpcl9wdmUyID0gZ19zdHJkdXBfcHJpbnRmKFJSRERJUiAiL3B2 ZTItc3RvcmFnZSIpOwo+ICsgICAgICAgICAgICBjaGFyICpkaXJfcHZlOTAgPSBnX3N0cmR1cF9w cmludGYoUlJERElSICIvcHZlLXN0b3JhZ2UtOS4wIik7Cj4gKwo+ICsgICAgICAgICAgICBpZiAo Z19maWxlX3Rlc3QoZGlyX3B2ZTkwLCBHX0ZJTEVfVEVTVF9JU19ESVIpKSB7Cj4gKwo+ICsgICAg ICAgICAgICAgICAgaW50IGFyZ2NvdW50ID0gc2l6ZW9mKHJyZF9kZWZfc3RvcmFnZV9wdmU5XzAp IC8gc2l6ZW9mKHZvaWQgKikgLSAxOwo+ICsgICAgICAgICAgICAgICAgY3JlYXRlX3JyZF9maWxl KGZpbGVuYW1lLCBhcmdjb3VudCwgcnJkX2RlZl9zdG9yYWdlX3B2ZTlfMCk7Cj4gKyAgICAgICAg ICAgIH0gZWxzZSBpZiAoZ19maWxlX3Rlc3QoZGlyX3B2ZTIsIEdfRklMRV9URVNUX0lTX0RJUikp IHsKPiArICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gZ19zdHJkdXBfcHJpbnRmKCIlcyIsIGZp bGVuYW1lX3B2ZTIpOwoKU2FtZSBoZXJlCgo+ICAKPiAtICAgICAgICBpZiAoIWdfZmlsZV90ZXN0 KGZpbGVuYW1lLCBHX0ZJTEVfVEVTVF9FWElTVFMpKSB7Cj4gLSAgICAgICAgICAgIG1rZGlyKFJS RERJUiAiL3B2ZTItc3RvcmFnZSIsIDA3NTUpOwo+IC0gICAgICAgICAgICBjaGFyICpkaXIgPSBn X3BhdGhfZ2V0X2Rpcm5hbWUoZmlsZW5hbWUpOwo+IC0gICAgICAgICAgICBta2RpcihkaXIsIDA3 NTUpOwo+IC0gICAgICAgICAgICBnX2ZyZWUoZGlyKTsKPiArICAgICAgICAgICAgICAgIGludCBh cmdjb3VudCA9IHNpemVvZihycmRfZGVmX3N0b3JhZ2UpIC8gc2l6ZW9mKHZvaWQgKikgLSAxOwo+ ICsgICAgICAgICAgICAgICAgY3JlYXRlX3JyZF9maWxlKGZpbGVuYW1lLCBhcmdjb3VudCwgcnJk X2RlZl9zdG9yYWdlKTsKPiArICAgICAgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAg IC8vIG5vIGRpciBleGlzdHMgeWV0LCB1c2UgbmV3IHB2ZS1zdG9yYWdlLTkuMAo+ICsgICAgICAg ICAgICAgICAgbWtkaXIoUlJERElSICIvcHZlLXN0b3JhZ2UtOS4wIiwgMDc1NSk7Cj4gIAo+IC0g ICAgICAgICAgICBpbnQgYXJnY291bnQgPSBzaXplb2YocnJkX2RlZl9zdG9yYWdlKSAvIHNpemVv Zih2b2lkICopIC0gMTsKPiAtICAgICAgICAgICAgY3JlYXRlX3JyZF9maWxlKGZpbGVuYW1lLCBh cmdjb3VudCwgcnJkX2RlZl9zdG9yYWdlKTsKPiArICAgICAgICAgICAgICAgIGludCBhcmdjb3Vu dCA9IHNpemVvZihycmRfZGVmX3N0b3JhZ2VfcHZlOV8wKSAvIHNpemVvZih2b2lkICopIC0gMTsK PiArICAgICAgICAgICAgICAgIGNyZWF0ZV9ycmRfZmlsZShmaWxlbmFtZSwgYXJnY291bnQsIHJy ZF9kZWZfc3RvcmFnZV9wdmU5XzApOwo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgIGdf ZnJlZShkaXJfcHZlMik7Cj4gKyAgICAgICAgICAgIGdfZnJlZShkaXJfcHZlOTApOwo+ICAgICAg ICAgIH0KPiAgCj4gKyAgICAgICAgLy8gYWN0dWFsIGRhdGEgY29sdW1ucyBkaWRuJ3QgY2hhbmdl IGJldHdlZW4gcHZlMi1zdG9yYWdlIGFuZCBwdmUtc3RvcmFnZS05LjAKPiArICAgICAgICBpZiAo c3RybmNtcChrZXksICJwdmUtc3RvcmFnZS0iLCAxMikgPT0gMCAmJiBzdHJuY21wKGtleSwgInB2 ZS1zdG9yYWdlLTkuMC8iLCAxNikgIT0gMCkgewo+ICsgICAgICAgICAgICAvLyB3ZSByZWNlaXZl ZCBhbiB1bmtub3duIGZvcm1hdCwgZXhwZWN0YXRpb24gaXMgaXQgaXMgbmV3ZXIgYW5kIGhhcyBt b3JlIGNvbHVtbnMKPiArICAgICAgICAgICAgLy8gdGhhbiB3ZSBjYW4gY3VycmVudGx5IGhhbmRs ZQo+ICsgICAgICAgICAgICBrZWVwX2NvbHVtbnMgPSAyOyAvLyBwdmUtc3RvcmFnZS05LjAgZm9y bWF0IHVzZXMgMiBjb2x1bW5zCj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICBnX2ZyZWUoZmls ZW5hbWVfcHZlMik7Cj4gKwo+ICAgICAgfSBlbHNlIHsKPiAgICAgICAgICBnb3RvIGtleWVycm9y Owo+ICAgICAgfQo+IEBAIC0xMzI1LDcgKzE1MjcsMTYgQEAgc3RhdGljIHZvaWQgdXBkYXRlX3Jy ZF9kYXRhKGNvbnN0IGNoYXIgKmtleSwgZ2NvbnN0cG9pbnRlciBkYXRhLCBzaXplX3QgbGVuKSB7 Cj4gICAgICAgICAgKihjdXQgLSAxKSA9IDA7IC8vIHRlcm1pbmF0ZSBzdHJpbmcgYnkgcmVwbGFj aW5nIGNvbG9uIGZyb20gZmllbGQgc2VwYXJhdG9yIHdpdGggemVyby4KPiAgICAgIH0KPiAgCj4g LSAgICBjb25zdCBjaGFyICp1cGRhdGVfYXJnc1tdID0ge2RwLCBOVUxMfTsKPiArICAgIGNvbnN0 IGNoYXIgKnVwZGF0ZV9hcmdzW10gPSB7TlVMTCwgTlVMTH07Cj4gKyAgICBpZiAocGFkZGluZykg ewo+ICsgICAgICAgIC8vIGFkZCBwYWRkaW5nICJVIiBjb2x1bW5zIHRvIGRhdGEgc3RyaW5nCj4g KyAgICAgICAgY2hhciAqcGFkc3JjID0KPiArICAgICAgICAgICAgIjpVOlU6VTpVOlU6VTpVOlU6 VTpVOlU6VTpVOlU6VTpVOlU6VTpVOlU6VTpVOlU6VTpVIjsgLy8gY2FuIHBhZCB1cCB0byAyNSBj b2x1bW5zCj4gKyAgICAgICAgZ19zbnByaW50ZihycmRfZm9ybWF0X3VwZGF0ZV9idWZmZXIsIDEw MjQgKiA0LCAiJXMlLipzIiwgZHAsIHBhZGRpbmcgKiAyLCBwYWRzcmMpOwo+ICsgICAgICAgIHVw ZGF0ZV9hcmdzWzBdID0gcnJkX2Zvcm1hdF91cGRhdGVfYnVmZmVyOwo+ICsgICAgfSBlbHNlIHsK PiArICAgICAgICB1cGRhdGVfYXJnc1swXSA9IGRwOwo+ICsgICAgfQo+ICAKPiAgICAgIGlmICh1 c2VfZGFlbW9uKSB7Cj4gICAgICAgICAgaW50IHN0YXR1czsKCgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KcHZlLWRldmVsIG1haWxpbmcgbGlzdApwdmUt ZGV2ZWxAbGlzdHMucHJveG1veC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmlu L21haWxtYW4vbGlzdGluZm8vcHZlLWRldmVsCg==