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 29FA71FF13E for ; Fri, 23 Jan 2026 16:02:19 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 287E51080A; Fri, 23 Jan 2026 16:02:37 +0100 (CET) Message-ID: Date: Fri, 23 Jan 2026 16:01:59 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: Proxmox VE development discussion , Kefu Chai References: <20260106142440.2368585-1-k.chai@proxmox.com> <20260106142440.2368585-3-k.chai@proxmox.com> Content-Language: en-US From: Samuel Rufinatscha In-Reply-To: <20260106142440.2368585-3-k.chai@proxmox.com> X-SPAM-LEVEL: Spam detection results: 0 AWL 0.249 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pve-devel] [PATCH pve-cluster 02/15] pmxcfs-rs: add pmxcfs-config crate 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 Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" Y29tbWVudHMgaW5saW5lCgpPbiAxLzYvMjYgMzoyNSBQTSwgS2VmdSBDaGFpIHdyb3RlOgo+IEFk ZCBjb25maWd1cmF0aW9uIG1hbmFnZW1lbnQgY3JhdGUgdGhhdCBwcm92aWRlczoKPiAtIENvbmZp ZyBzdHJ1Y3QgZm9yIHJ1bnRpbWUgY29uZmlndXJhdGlvbgo+IC0gTm9kZSBob3N0bmFtZSwgSVAs IGFuZCBncm91cCBJRCB0cmFja2luZwo+IC0gRGVidWcgYW5kIGxvY2FsIG1vZGUgZmxhZ3MKPiAt IFRocmVhZC1zYWZlIGNvbmZpZ3VyYXRpb24gYWNjZXNzIHZpYSBwYXJraW5nX2xvdCBNdXRleAo+ IAo+IFRoaXMgaXMgYSBmb3VuZGF0aW9uYWwgY3JhdGUgd2l0aCBubyBpbnRlcm5hbCBkZXBlbmRl bmNpZXMsIG9ubHkKPiByZXF1aXJpbmcgcGFya2luZ19sb3QgZm9yIHN5bmNocm9uaXphdGlvbi4g T3RoZXIgY3JhdGVzIHdpbGwgdXNlCj4gdGhpcyBmb3IgYWNjZXNzaW5nIHJ1bnRpbWUgY29uZmln dXJhdGlvbi4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBLZWZ1IENoYWkgPGsuY2hhaUBwcm94bW94LmNv bT4KPiAtLS0KPiAgIHNyYy9wbXhjZnMtcnMvQ2FyZ28udG9tbCAgICAgICAgICAgICAgIHwgICAz ICstCj4gICBzcmMvcG14Y2ZzLXJzL3BteGNmcy1jb25maWcvQ2FyZ28udG9tbCB8ICAxNiArCj4g ICBzcmMvcG14Y2ZzLXJzL3BteGNmcy1jb25maWcvUkVBRE1FLm1kICB8IDEyNyArKysrKysrCj4g ICBzcmMvcG14Y2ZzLXJzL3BteGNmcy1jb25maWcvc3JjL2xpYi5ycyB8IDQ3MSArKysrKysrKysr KysrKysrKysrKysrKysrCj4gICA0IGZpbGVzIGNoYW5nZWQsIDYxNiBpbnNlcnRpb25zKCspLCAx IGRlbGV0aW9uKC0pCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3BteGNmcy1ycy9wbXhjZnMt Y29uZmlnL0NhcmdvLnRvbWwKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvcG14Y2ZzLXJzL3Bt eGNmcy1jb25maWcvUkVBRE1FLm1kCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3BteGNmcy1y cy9wbXhjZnMtY29uZmlnL3NyYy9saWIucnMKPiAKPiBkaWZmIC0tZ2l0IGEvc3JjL3BteGNmcy1y cy9DYXJnby50b21sIGIvc3JjL3BteGNmcy1ycy9DYXJnby50b21sCj4gaW5kZXggMTVkODhmNTIu LjI4ZTIwYmI3IDEwMDY0NAo+IC0tLSBhL3NyYy9wbXhjZnMtcnMvQ2FyZ28udG9tbAo+ICsrKyBi L3NyYy9wbXhjZnMtcnMvQ2FyZ28udG9tbAo+IEBAIC0xLDcgKzEsOCBAQAo+ICAgIyBXb3Jrc3Bh Y2Ugcm9vdCBmb3IgcG14Y2ZzIFJ1c3QgaW1wbGVtZW50YXRpb24KPiAgIFt3b3Jrc3BhY2VdCj4g ICBtZW1iZXJzID0gWwo+IC0gICAgInBteGNmcy1hcGktdHlwZXMiLCAjIFNoYXJlZCB0eXBlcyBh bmQgZXJyb3IgZGVmaW5pdGlvbnMKPiArICAgICJwbXhjZnMtYXBpLXR5cGVzIiwgICMgU2hhcmVk IHR5cGVzIGFuZCBlcnJvciBkZWZpbml0aW9ucwo+ICsgICAgInBteGNmcy1jb25maWciLCAgICAg IyBDb25maWd1cmF0aW9uIG1hbmFnZW1lbnQKPiAgIF0KPiAgIHJlc29sdmVyID0gIjIiCj4gICAK PiBkaWZmIC0tZ2l0IGEvc3JjL3BteGNmcy1ycy9wbXhjZnMtY29uZmlnL0NhcmdvLnRvbWwgYi9z cmMvcG14Y2ZzLXJzL3BteGNmcy1jb25maWcvQ2FyZ28udG9tbAo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0Cj4gaW5kZXggMDAwMDAwMDAuLmY1YTYwOTk1Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3Ny Yy9wbXhjZnMtcnMvcG14Y2ZzLWNvbmZpZy9DYXJnby50b21sCj4gQEAgLTAsMCArMSwxNiBAQAo+ ICtbcGFja2FnZV0KPiArbmFtZSA9ICJwbXhjZnMtY29uZmlnIgo+ICtkZXNjcmlwdGlvbiA9ICJD b25maWd1cmF0aW9uIG1hbmFnZW1lbnQgZm9yIHBteGNmcyIKPiArCj4gK3ZlcnNpb24ud29ya3Nw YWNlID0gdHJ1ZQo+ICtlZGl0aW9uLndvcmtzcGFjZSA9IHRydWUKPiArYXV0aG9ycy53b3Jrc3Bh Y2UgPSB0cnVlCj4gK2xpY2Vuc2Uud29ya3NwYWNlID0gdHJ1ZQo+ICtyZXBvc2l0b3J5Lndvcmtz cGFjZSA9IHRydWUKPiArCj4gK1tsaW50c10KPiArd29ya3NwYWNlID0gdHJ1ZQo+ICsKPiArW2Rl cGVuZGVuY2llc10KPiArIyBDb25jdXJyZW5jeSBwcmltaXRpdmVzCj4gK3BhcmtpbmdfbG90Lndv cmtzcGFjZSA9IHRydWUKPiBkaWZmIC0tZ2l0IGEvc3JjL3BteGNmcy1ycy9wbXhjZnMtY29uZmln L1JFQURNRS5tZCBiL3NyYy9wbXhjZnMtcnMvcG14Y2ZzLWNvbmZpZy9SRUFETUUubWQKPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi5jMDZiMjE3MAo+IC0tLSAvZGV2L251 bGwKPiArKysgYi9zcmMvcG14Y2ZzLXJzL3BteGNmcy1jb25maWcvUkVBRE1FLm1kCj4gQEAgLTAs MCArMSwxMjcgQEAKPiArIyBwbXhjZnMtY29uZmlnCj4gKwo+ICsqKkNvbmZpZ3VyYXRpb24gTWFu YWdlbWVudCoqIGFuZCAqKkNsdXN0ZXIgU2VydmljZXMqKiBmb3IgcG14Y2ZzLgo+ICsKPiArVGhp cyBjcmF0ZSBwcm92aWRlcyBjb25maWd1cmF0aW9uIHN0cnVjdHVyZXMgYW5kIGNsdXN0ZXIgaW50 ZWdyYXRpb24gc2VydmljZXMgaW5jbHVkaW5nIHF1b3J1bSB0cmFja2luZyBhbmQgY2x1c3RlciBj b25maWd1cmF0aW9uIG1vbml0b3JpbmcgdmlhIENvcm9zeW5jIEFQSXMuCj4gKwo+ICsjIyBPdmVy dmlldwo+ICsKPiArVGhpcyBjcmF0ZSBjb250YWluczoKPiArMS4gKipDb25maWcgc3RydWN0Kio6 IFJ1bnRpbWUgY29uZmlndXJhdGlvbiAobm9kZSBuYW1lLCBJUHMsIGZsYWdzKQo+ICsyLiBJbnRl Z3JhdGlvbiB3aXRoIENvcm9zeW5jIHNlcnZpY2VzICh0cmFja2VkIGluIG1haW4gcG14Y2ZzIGNy YXRlKToKPiArICAgLSAqKlF1b3J1bVNlcnZpY2UqKiAoYHBteGNmcy9zcmMvcXVvcnVtX3NlcnZp Y2UucnNgKSAtIFF1b3J1bSBtb25pdG9yaW5nCj4gKyAgIC0gKipDbHVzdGVyQ29uZmlnU2Vydmlj ZSoqIChgcG14Y2ZzL3NyYy9jbHVzdGVyX2NvbmZpZ19zZXJ2aWNlLnJzYCkgLSBDb25maWcgdHJh Y2tpbmcKClRoaXMgcGF0Y2ggb25seSBjb250YWlucyB0aGUgQ29uZmlnIHN0cnVjdCwgYnV0IG5v dCBDbHVzdGVyIFNlcnZpY2VzCm9yIFF1b3J1bVNlcnZpY2UsIHBsZWFzZSByZXZpc3QgY29tbWl0 IG1lc3NhZ2UgYW5kIFJFQURNRS4KCj4gKwo+ICsjIyBDb25maWcgU3RydWN0Cj4gKwo+ICtUaGUg YENvbmZpZ2Agc3RydWN0IGhvbGRzIGRhZW1vbi13aWRlIGNvbmZpZ3VyYXRpb24gaW5jbHVkaW5n IG5vZGUgaG9zdG5hbWUsIElQIGFkZHJlc3MsIHd3dy1kYXRhIGdyb3VwIElELCBkZWJ1ZyBmbGFn LCBsb2NhbCBtb2RlIGZsYWcsIGFuZCBjbHVzdGVyIG5hbWUuCj4gKwo+ICsjIyBDbHVzdGVyIFNl cnZpY2VzCj4gKwo+ICtUaGUgZm9sbG93aW5nIHNlcnZpY2VzIGFyZSBpbXBsZW1lbnRlZCBpbiB0 aGUgbWFpbiBwbXhjZnMgY3JhdGUgYnV0IGRvY3VtZW50ZWQgaGVyZSBmb3IgY29tcGxldGVuZXNz Lgo+ICsKPiArIyMjIFF1b3J1bVNlcnZpY2UKPiArCj4gKyoqQyBFcXVpdmFsZW50OioqIGBzcmMv cG14Y2ZzL3F1b3J1bS5jYCAtIGBzZXJ2aWNlX3F1b3J1bV9uZXcoKWAKPiArKipSdXN0IExvY2F0 aW9uOioqIGBzcmMvcG14Y2ZzLXJzL3BteGNmcy9zcmMvcXVvcnVtX3NlcnZpY2UucnNgCj4gKwo+ ICtNb25pdG9ycyBjbHVzdGVyIHF1b3J1bSBzdGF0dXMgdmlhIENvcm9zeW5jIHF1b3J1bSBBUEku Cj4gKwo+ICsjIyMjIEZlYXR1cmVzCj4gKy0gVHJhY2tzIHF1b3J1bSBzdGF0ZSAocXVvcmF0ZS9p bnF1b3JhdGUpCj4gKy0gTW9uaXRvcnMgbWVtYmVyIGxpc3QgY2hhbmdlcwo+ICstIEF1dG9tYXRp YyByZWNvbm5lY3Rpb24gb24gQ29yb3N5bmMgcmVzdGFydAo+ICstIFVwZGF0ZXMgYFN0YXR1c2Ag cXVvcnVtIGZsYWcKPiArCj4gKyMjIyMgQyB0byBSdXN0IE1hcHBpbmcKPiArCj4gK3wgQyBGdW5j dGlvbiB8IFJ1c3QgRXF1aXZhbGVudCB8IExvY2F0aW9uIHwKPiArfC0tLS0tLS0tLS0tfC0tLS0t LS0tLS0tLS0tLS0tfC0tLS0tLS0tLS18Cj4gK3wgYHNlcnZpY2VfcXVvcnVtX25ldygpYCB8IGBR dW9ydW1TZXJ2aWNlOjpuZXcoKWAgfCBxdW9ydW1fc2VydmljZS5ycyB8Cj4gK3wgYHNlcnZpY2Vf cXVvcnVtX2Rlc3Ryb3koKWAgfCAoRHJvcCB0cmFpdCAvIGZpbmFsaXplKSB8IEF1dG9tYXRpYyB8 Cj4gK3wgYHF1b3J1bV9ub3RpZmljYXRpb25fZm5gIHwgcXVvcnVtX25vdGlmaWNhdGlvbiBjbG9z dXJlIHwgcXVvcnVtX3NlcnZpY2UucnMgfAo+ICt8IGBub2RlbGlzdF9ub3RpZmljYXRpb25fZm5g IHwgbm9kZWxpc3Rfbm90aWZpY2F0aW9uIGNsb3N1cmUgfCBxdW9ydW1fc2VydmljZS5ycyB8Cj4g Kwo+ICsjIyMjIFF1b3J1bSBOb3RpZmljYXRpb25zCj4gKwo+ICtUaGUgc2VydmljZSBtb25pdG9y cyBxdW9ydW0gc3RhdGUgY2hhbmdlcyBhbmQgbWVtYmVyIGxpc3QgY2hhbmdlcywgdXBkYXRpbmcg dGhlIFN0YXR1cyBhY2NvcmRpbmdseS4KPiArCj4gKyMjIyBDbHVzdGVyQ29uZmlnU2VydmljZQo+ ICsKPiArKipDIEVxdWl2YWxlbnQ6KiogYHNyYy9wbXhjZnMvY29uZmRiLmNgIC0gYHNlcnZpY2Vf Y29uZmRiX25ldygpYAo+ICsqKlJ1c3QgTG9jYXRpb246KiogYHNyYy9wbXhjZnMtcnMvcG14Y2Zz L3NyYy9jbHVzdGVyX2NvbmZpZ19zZXJ2aWNlLnJzYAo+ICsKPiArTW9uaXRvcnMgQ29yb3N5bmMg Y2x1c3RlciBjb25maWd1cmF0aW9uIChjbWFwKSBhbmQgdHJhY2tzIG5vZGUgbWVtYmVyc2hpcC4K PiArCj4gKyMjIyMgRmVhdHVyZXMKPiArLSBNb25pdG9ycyBjbHVzdGVyIG1lbWJlcnNoaXAgdmlh IENvcm9zeW5jIGNtYXAgQVBJCj4gKy0gVHJhY2tzIG5vZGUgYWRkaXRpb25zL3JlbW92YWxzCj4g Ky0gUmVnaXN0ZXJzIG5vZGVzIGluIFN0YXR1cwo+ICstIEF1dG9tYXRpYyByZWNvbm5lY3Rpb24g b24gQ29yb3N5bmMgcmVzdGFydAo+ICsKPiArIyMjIyBDIHRvIFJ1c3QgTWFwcGluZwo+ICsKPiAr fCBDIEZ1bmN0aW9uIHwgUnVzdCBFcXVpdmFsZW50IHwgTG9jYXRpb24gfAo+ICt8LS0tLS0tLS0t LS18LS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLXwKPiArfCBgc2VydmljZV9jb25mZGJfbmV3 KClgIHwgYENsdXN0ZXJDb25maWdTZXJ2aWNlOjpuZXcoKWAgfCBjbHVzdGVyX2NvbmZpZ19zZXJ2 aWNlLnJzIHwKPiArfCBgc2VydmljZV9jb25mZGJfZGVzdHJveSgpYCB8IChEcm9wIHRyYWl0IC8g ZmluYWxpemUpIHwgQXV0b21hdGljIHwKPiArfCBgY29uZmRiX3RyYWNrX2ZuYCB8IChkaXJlY3Qg Y21hcCBxdWVyaWVzKSB8IERpZmZlcmVudCBhcHByb2FjaCB8Cj4gKwo+ICsjIyMjIENvbmZpZ3Vy YXRpb24gVHJhY2tpbmcKPiArCj4gK1RoZSBzZXJ2aWNlIG1vbml0b3JzOgo+ICstIGBub2RlbGlz dC5ub2RlLioubm9kZWlkYCAtIE5vZGUgSURzCj4gKy0gYG5vZGVsaXN0Lm5vZGUuKi5uYW1lYCAt IE5vZGUgbmFtZXMKPiArLSBgbm9kZWxpc3Qubm9kZS4qLnJpbmcqX2FkZHJgIC0gTm9kZSBJUCBh ZGRyZXNzZXMKPiArCj4gK1VwZGF0ZXMgYFN0YXR1c2Agd2l0aCBjdXJyZW50IGNsdXN0ZXIgbWVt YmVyc2hpcC4KPiArCj4gKyMjIEtleSBEaWZmZXJlbmNlcyBmcm9tIEMgSW1wbGVtZW50YXRpb24K PiArCj4gKyMjIyBDbHVzdGVyIENvbmZpZyBTZXJ2aWNlIEFQSQo+ICsKPiArKipDIFZlcnNpb24g KGNvbmZkYi5jKToqKgo+ICstIFVzZXMgZGVwcmVjYXRlZCBjb25mZGIgQVBJCj4gKy0gVHJhY2sg Y2hhbmdlcyB2aWEgY29uZmRiIG5vdGlmaWNhdGlvbnMKPiArCj4gKyoqUnVzdCBWZXJzaW9uOioq Cj4gKy0gVXNlcyBtb2Rlcm4gY21hcCBBUEkKPiArLSBEaXJlY3QgY21hcCBxdWVyaWVzCj4gKwo+ ICtCb3RoIHJlYWQgdGhlIHNhbWUgZGF0YSwgYnV0IFJ1c3QgdXNlcyB0aGUgbW9kZXJuIENvcm9z eW5jIEFQSS4KPiArCj4gKyMjIyBTZXJ2aWNlIEludGVncmF0aW9uCj4gKwo+ICsqKkMgVmVyc2lv bjoqKgo+ICstIHFiX2xvb3AgbWFuYWdlcyBsaWZlY3ljbGUKPiArCj4gKyoqUnVzdCBWZXJzaW9u OioqCj4gKy0gU2VydmljZSB0cmFpdCBhYnN0cmFjdHMgbGlmZWN5Y2xlCj4gKy0gU2VydmljZU1h bmFnZXIgaGFuZGxlcyByZXRyeQo+ICstIFRva2lvIGFzeW5jIGRpc3BhdGNoCj4gKwo+ICsjIyBL bm93biBJc3N1ZXMgLyBUT0RPcwo+ICsKPiArIyMjIENvbXBhdGliaWxpdHkKPiArLSAqKlF1b3J1 bSB0cmFja2luZyoqOiBDb21wYXRpYmxlIHdpdGggQyBpbXBsZW1lbnRhdGlvbgo+ICstICoqTm9k ZSByZWdpc3RyYXRpb24qKjogRXF1aXZhbGVudCBiZWhhdmlvcgo+ICstICoqY21hcCB2cyBjb25m ZGIqKjogUnVzdCB1c2VzIG1vZGVybiBjbWFwIEFQSSAoQyB1c2VzIGRlcHJlY2F0ZWQgY29uZmRi KQo+ICsKPiArIyMjIE1pc3NpbmcgRmVhdHVyZXMKPiArLSBOb25lIGlkZW50aWZpZWQKPiArCj4g KyMjIyBCZWhhdmlvcmFsIERpZmZlcmVuY2VzIChCZW5pZ24pCj4gKy0gKipBUEkgY2hvaWNlKio6 IFJ1c3QgdXNlcyBjbWFwLCBDIHVzZXMgY29uZmRiIChib3RoIHJlYWQgc2FtZSBkYXRhKQo+ICst ICoqTGlmZWN5Y2xlKio6IFJ1c3QgdXNlcyBTZXJ2aWNlIHRyYWl0LCBDIHVzZXMgbWFudWFsIGxp ZmVjeWNsZQo+ICsKPiArIyMgUmVmZXJlbmNlcwo+ICsKPiArIyMjIEMgSW1wbGVtZW50YXRpb24K PiArLSBgc3JjL3BteGNmcy9xdW9ydW0uY2AgLyBgcXVvcnVtLmhgIC0gUXVvcnVtIHNlcnZpY2UK PiArLSBgc3JjL3BteGNmcy9jb25mZGIuY2AgLyBgY29uZmRiLmhgIC0gQ2x1c3RlciBjb25maWcg c2VydmljZQo+ICsKPiArIyMjIFJlbGF0ZWQgQ3JhdGVzCj4gKy0gKipwbXhjZnMqKjogTWFpbiBk YWVtb24gd2l0aCBRdW9ydW1TZXJ2aWNlIGFuZCBDbHVzdGVyQ29uZmlnU2VydmljZQo+ICstICoq cG14Y2ZzLXN0YXR1cyoqOiBTdGF0dXMgdHJhY2tpbmcgdXBkYXRlZCBieSB0aGVzZSBzZXJ2aWNl cwo+ICstICoqcG14Y2ZzLXNlcnZpY2VzKio6IFNlcnZpY2UgZnJhbWV3b3JrIHVzZWQgYnkgYm90 aCBzZXJ2aWNlcwo+ICstICoqcnVzdC1jb3Jvc3luYyoqOiBDb3Jvc3luYyBGRkkgYmluZGluZ3MK PiBkaWZmIC0tZ2l0IGEvc3JjL3BteGNmcy1ycy9wbXhjZnMtY29uZmlnL3NyYy9saWIucnMgYi9z cmMvcG14Y2ZzLXJzL3BteGNmcy1jb25maWcvc3JjL2xpYi5ycwo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0Cj4gaW5kZXggMDAwMDAwMDAuLjVlMWVlMWIyCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3Ny Yy9wbXhjZnMtcnMvcG14Y2ZzLWNvbmZpZy9zcmMvbGliLnJzCj4gQEAgLTAsMCArMSw0NzEgQEAK PiArdXNlIHBhcmtpbmdfbG90OjpSd0xvY2s7Cj4gK3VzZSBzdGQ6OnN5bmM6OkFyYzsKPiArCj4g Ky8vLyBHbG9iYWwgY29uZmlndXJhdGlvbiBmb3IgcG14Y2ZzCj4gK3B1YiBzdHJ1Y3QgQ29uZmln IHsKPiArICAgIC8vLyBOb2RlIG5hbWUgKGhvc3RuYW1lIHdpdGhvdXQgZG9tYWluKQo+ICsgICAg cHViIG5vZGVuYW1lOiBTdHJpbmcsCj4gKwo+ICsgICAgLy8vIE5vZGUgSVAgYWRkcmVzcwo+ICsg ICAgcHViIG5vZGVfaXA6IFN0cmluZywKCkNvbnNpZGVyIHVzaW5nIHN0ZDo6bmV0OjpJcEFkZHIg KG9yIFNvY2tldEFkZHIgaWYgYSBwb3J0IGlzIHBhcnQgb2YgdGhlCnZhbHVlKS4gVGVzdHMgY3Vy cmVudGx5IG1peCBJUCB2cyBJUDpQT1JULCBzbyBpdOKAmXMgdW5jbGVhciB3aGF0IG5vZGVfaXAK aXMgc3VwcG9zZWQgdG8gcmVwcmVzZW50LgoKPiArCj4gKyAgICAvLy8gd3d3LWRhdGEgZ3JvdXAg SUQgZm9yIGZpbGUgcGVybWlzc2lvbnMKPiArICAgIHB1YiB3d3dfZGF0YV9naWQ6IHUzMiwKPiAr Cj4gKyAgICAvLy8gRGVidWcgbW9kZSBlbmFibGVkCj4gKyAgICBwdWIgZGVidWc6IGJvb2wsCj4g Kwo+ICsgICAgLy8vIEZvcmNlIGxvY2FsIG1vZGUgKG5vIGNsdXN0ZXJpbmcpCj4gKyAgICBwdWIg bG9jYWxfbW9kZTogYm9vbCwKPiArCj4gKyAgICAvLy8gQ2x1c3RlciBuYW1lIChDUEcgZ3JvdXAg bmFtZSkKPiArICAgIHB1YiBjbHVzdGVyX25hbWU6IFN0cmluZywKPiArCj4gKyAgICAvLy8gRGVi dWcgbGV2ZWwgKDAgPSBub3JtYWwsIDErID0gZGVidWcpIC0gbXV0YWJsZSBhdCBydW50aW1lCj4g KyAgICBkZWJ1Z19sZXZlbDogUndMb2NrPHU4PiwKCmluIHRoZSBjcmF0ZSBkb2NzIGl0IHNheXM6 IOKAnFRoZSBDb25maWcgc3RydWN0IHVzZXMgQXJjPEF0b21pY1U4PiBmb3IKZGVidWdfbGV2ZWzi gJ0gYnV0IHRoZSBpbXBsZW1lbnRhdGlvbiB1c2VzIHBhcmtpbmdfbG90OjpSd0xvY2s8dTg+LgpV bmxlc3Mgd2UgbmVlZCBsb2NrIGNvdXBsaW5nIHdpdGggb3RoZXIgZmllbGRzLCBBdG9taWNVOCB3 b3VsZCBsaWtlbHkKYmUgc3VmZmljaWVudCAoYW5kIGNoZWFwZXIpIGZvciBkZWJ1Z19sZXZlbC4g QWxzbyBwbGVhc2UgcmUtY2hlY2sgdGhlCmNvbW1pdCBtZXNzYWdlLCB3aGljaCBtZW50aW9ucyBw YXJraW5nX2xvdDo6TXV0ZXguCgo+ICt9Cj4gKwo+ICtpbXBsIENsb25lIGZvciBDb25maWcgewo+ ICsgICAgZm4gY2xvbmUoJnNlbGYpIC0+IFNlbGYgewo+ICsgICAgICAgIFNlbGYgewo+ICsgICAg ICAgICAgICBub2RlbmFtZTogc2VsZi5ub2RlbmFtZS5jbG9uZSgpLAo+ICsgICAgICAgICAgICBu b2RlX2lwOiBzZWxmLm5vZGVfaXAuY2xvbmUoKSwKPiArICAgICAgICAgICAgd3d3X2RhdGFfZ2lk OiBzZWxmLnd3d19kYXRhX2dpZCwKPiArICAgICAgICAgICAgZGVidWc6IHNlbGYuZGVidWcsCj4g KyAgICAgICAgICAgIGxvY2FsX21vZGU6IHNlbGYubG9jYWxfbW9kZSwKPiArICAgICAgICAgICAg Y2x1c3Rlcl9uYW1lOiBzZWxmLmNsdXN0ZXJfbmFtZS5jbG9uZSgpLAo+ICsgICAgICAgICAgICBk ZWJ1Z19sZXZlbDogUndMb2NrOjpuZXcoKnNlbGYuZGVidWdfbGV2ZWwucmVhZCgpKSwKPiArICAg ICAgICB9Cj4gKyAgICB9Cj4gK30KPiArCj4gK2ltcGwgc3RkOjpmbXQ6OkRlYnVnIGZvciBDb25m aWcgewo+ICsgICAgZm4gZm10KCZzZWxmLCBmOiAmbXV0IHN0ZDo6Zm10OjpGb3JtYXR0ZXI8J18+ KSAtPiBzdGQ6OmZtdDo6UmVzdWx0IHsKPiArICAgICAgICBmLmRlYnVnX3N0cnVjdCgiQ29uZmln IikKPiArICAgICAgICAgICAgLmZpZWxkKCJub2RlbmFtZSIsICZzZWxmLm5vZGVuYW1lKQo+ICsg ICAgICAgICAgICAuZmllbGQoIm5vZGVfaXAiLCAmc2VsZi5ub2RlX2lwKQo+ICsgICAgICAgICAg ICAuZmllbGQoInd3d19kYXRhX2dpZCIsICZzZWxmLnd3d19kYXRhX2dpZCkKPiArICAgICAgICAg ICAgLmZpZWxkKCJkZWJ1ZyIsICZzZWxmLmRlYnVnKQo+ICsgICAgICAgICAgICAuZmllbGQoImxv Y2FsX21vZGUiLCAmc2VsZi5sb2NhbF9tb2RlKQo+ICsgICAgICAgICAgICAuZmllbGQoImNsdXN0 ZXJfbmFtZSIsICZzZWxmLmNsdXN0ZXJfbmFtZSkKPiArICAgICAgICAgICAgLmZpZWxkKCJkZWJ1 Z19sZXZlbCIsICYqc2VsZi5kZWJ1Z19sZXZlbC5yZWFkKCkpCj4gKyAgICAgICAgICAgIC5maW5p c2goKQo+ICsgICAgfQo+ICt9Cj4gKwo+ICtpbXBsIENvbmZpZyB7Cj4gKyAgICBwdWIgZm4gbmV3 KAo+ICsgICAgICAgIG5vZGVuYW1lOiBTdHJpbmcsCj4gKyAgICAgICAgbm9kZV9pcDogU3RyaW5n LAo+ICsgICAgICAgIHd3d19kYXRhX2dpZDogdTMyLAo+ICsgICAgICAgIGRlYnVnOiBib29sLAo+ ICsgICAgICAgIGxvY2FsX21vZGU6IGJvb2wsCj4gKyAgICAgICAgY2x1c3Rlcl9uYW1lOiBTdHJp bmcsCj4gKyAgICApIC0+IEFyYzxTZWxmPiB7CgpUaGUgY29uc3RydWN0b3IgcmV0dXJucyBBcmM8 Q29uZmlnPgpJIHRoaW5rIHdlIGNvdWxkIGtlZXAgbmV3KCkgLT4gU2VsZiwgYW5kIHByb3ZpZGUg Y29udmVuaWVuY2UKY29uc3RydWN0b3Igc2hhcmVkKCkgLT4gQXJjPFNlbGY+LgpUaGlzIHdvdWxk IGFsbG93IGxvY2FsIHVzYWdlIChlLmcuIGZvciB0ZXN0cykgd2l0aG91dCBoZWFwIGFsbG9jYXRp b24Kb2YgdGhlIHN0cnVjdAoKPiArICAgICAgICBsZXQgZGVidWdfbGV2ZWwgPSBpZiBkZWJ1ZyB7 IDEgfSBlbHNlIHsgMCB9OwoKZGVidWdfbGV2ZWwgaXMgZGVyaXZlZCBmcm9tIGRlYnVnIGF0IGNy ZWF0aW9uIHRpbWUsIGJ1dCB0aGVyZWFmdGVyOgpzZXRfZGVidWdfbGV2ZWwoKSBkb2VzIG5vdCB1 cGRhdGUgZGVidWcgYW5kIGlzX2RlYnVnKCkgd291bGQgY29udGludWUKdG8gcmVmbGVjdCB0aGUg aW5pdGlhbCBmbGFnLCBub3QgdGhlIGVmZmVjdGl2ZSBkZWJ1ZyBsZXZlbAppc19kZWJ1ZygpIHNo b3VsZCBqdXN0IGJlIGEgaGVscGVyIHRoYXQgcmV0dXJucyBzZWxmLmRlYnVnX2xldmVsKCkgPiAw LgpUaGUgZGVidWcgZmllbGQgc2hvdWxkIHByb2JhYmx5IGJlIHJlbW92ZWQgZW50aXJlbHkuCgo+ ICsgICAgICAgIEFyYzo6bmV3KFNlbGYgewo+ICsgICAgICAgICAgICBub2RlbmFtZSwKPiArICAg ICAgICAgICAgbm9kZV9pcCwKPiArICAgICAgICAgICAgd3d3X2RhdGFfZ2lkLAo+ICsgICAgICAg ICAgICBkZWJ1ZywKPiArICAgICAgICAgICAgbG9jYWxfbW9kZSwKPiArICAgICAgICAgICAgY2x1 c3Rlcl9uYW1lLAo+ICsgICAgICAgICAgICBkZWJ1Z19sZXZlbDogUndMb2NrOjpuZXcoZGVidWdf bGV2ZWwpLAo+ICsgICAgICAgIH0pCj4gKyAgICB9Cj4gKwo+ICsgICAgcHViIGZuIGNsdXN0ZXJf bmFtZSgmc2VsZikgLT4gJnN0ciB7Cj4gKyAgICAgICAgJnNlbGYuY2x1c3Rlcl9uYW1lCj4gKyAg ICB9Cj4gKwo+ICsgICAgcHViIGZuIG5vZGVuYW1lKCZzZWxmKSAtPiAmc3RyIHsKPiArICAgICAg ICAmc2VsZi5ub2RlbmFtZQo+ICsgICAgfQo+ICsKPiArICAgIHB1YiBmbiBub2RlX2lwKCZzZWxm KSAtPiAmc3RyIHsKPiArICAgICAgICAmc2VsZi5ub2RlX2lwCj4gKyAgICB9Cj4gKwo+ICsgICAg cHViIGZuIHd3d19kYXRhX2dpZCgmc2VsZikgLT4gdTMyIHsKPiArICAgICAgICBzZWxmLnd3d19k YXRhX2dpZAo+ICsgICAgfQo+ICsKPiArICAgIHB1YiBmbiBpc19kZWJ1Zygmc2VsZikgLT4gYm9v bCB7Cj4gKyAgICAgICAgc2VsZi5kZWJ1Zwo+ICsgICAgfQo+ICsKPiArICAgIHB1YiBmbiBpc19s b2NhbF9tb2RlKCZzZWxmKSAtPiBib29sIHsKPiArICAgICAgICBzZWxmLmxvY2FsX21vZGUKPiAr ICAgIH0KPiArCj4gKyAgICAvLy8gR2V0IGN1cnJlbnQgZGVidWcgbGV2ZWwgKDAgPSBub3JtYWws IDErID0gZGVidWcpCj4gKyAgICBwdWIgZm4gZGVidWdfbGV2ZWwoJnNlbGYpIC0+IHU4IHsKPiAr ICAgICAgICAqc2VsZi5kZWJ1Z19sZXZlbC5yZWFkKCkKPiArICAgIH0KPiArCj4gKyAgICAvLy8g U2V0IGRlYnVnIGxldmVsICgwID0gbm9ybWFsLCAxKyA9IGRlYnVnKQo+ICsgICAgcHViIGZuIHNl dF9kZWJ1Z19sZXZlbCgmc2VsZiwgbGV2ZWw6IHU4KSB7Cj4gKyAgICAgICAgKnNlbGYuZGVidWdf bGV2ZWwud3JpdGUoKSA9IGxldmVsOwo+ICsgICAgfQoKUmlnaHQgbm93IG1vc3QgZmllbGRzIGFy ZSBwdWIgYnV0IGFsc28gZ2V0dGVycyBhcmUgZXhwb3NlZC4gVGhpcyB3aWxsCm1ha2UgaXQgaGFy ZGVyIHRvIGVuZm9yY2UgaW52YXJpYW50cy4KSSB3b3VsZCBzdWdnZXN0IHRvIG1ha2UgZmllbGRz IHByaXZhdGUgYW5kIGtlZXAgZ2V0dGVycywgb3Iga2VlcCBmaWVsZHMKcHVibGljIGFuZCBkcm9w IHRoZSBnZXR0ZXJzLgoKPiArfQo+ICsKPiArI1tjZmcodGVzdCldCj4gK21vZCB0ZXN0cyB7Cj4g KyAgICAvLyEgVW5pdCB0ZXN0cyBmb3IgQ29uZmlnIHN0cnVjdAo+ICsgICAgLy8hCj4gKyAgICAv LyEgVGhpcyB0ZXN0IG1vZHVsZSBwcm92aWRlcyBjb21wcmVoZW5zaXZlIGNvdmVyYWdlIGZvcjoK PiArICAgIC8vISAtIENvbmZpZ3VyYXRpb24gY3JlYXRpb24gYW5kIGluaXRpYWxpemF0aW9uCj4g KyAgICAvLyEgLSBHZXR0ZXIgbWV0aG9kcyBmb3IgYWxsIGNvbmZpZ3VyYXRpb24gZmllbGRzCj4g KyAgICAvLyEgLSBEZWJ1ZyBsZXZlbCBtdXRhdGlvbiBhbmQgdGhyZWFkIHNhZmV0eQo+ICsgICAg Ly8hIC0gQ29uY3VycmVudCBhY2Nlc3MgcGF0dGVybnMgKHJlYWRzIGFuZCB3cml0ZXMpCj4gKyAg ICAvLyEgLSBDbG9uZSBpbmRlcGVuZGVuY2UKPiArICAgIC8vISAtIERlYnVnIGZvcm1hdHRpbmcK PiArICAgIC8vISAtIEVkZ2UgY2FzZXMgKGVtcHR5IHN0cmluZ3MsIGxvbmcgc3RyaW5ncywgc3Bl Y2lhbCBjaGFyYWN0ZXJzLCB1bmljb2RlKQo+ICsgICAgLy8hCj4gKyAgICAvLyEgIyMgVGhyZWFk IFNhZmV0eQo+ICsgICAgLy8hCj4gKyAgICAvLyEgVGhlIENvbmZpZyBzdHJ1Y3QgdXNlcyBgQXJj PEF0b21pY1U4PmAgZm9yIGRlYnVnX2xldmVsIHRvIGFsbG93Cj4gKyAgICAvLyEgc2FmZSBjb25j dXJyZW50IHJlYWRzIGFuZCB3cml0ZXMuIFRlc3RzIHZlcmlmeToKPiArICAgIC8vISAtIDEwIHRo cmVhZHMgw5cgMTAwIG9wZXJhdGlvbnMgKGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9ucykKPiArICAg IC8vISAtIDIwIHRocmVhZHMgw5cgMTAwMCBvcGVyYXRpb25zIChjb25jdXJyZW50IHJlYWRzKQo+ ICsgICAgLy8hCj4gKyAgICAvLyEgIyMgRWRnZSBDYXNlcwo+ICsgICAgLy8hCj4gKyAgICAvLyEg VGVzdHMgY292ZXIgdmFyaW91cyBlZGdlIGNhc2VzIGluY2x1ZGluZzoKPiArICAgIC8vISAtIEVt cHR5IHN0cmluZ3MgZm9yIG5vZGUvY2x1c3RlciBuYW1lcwo+ICsgICAgLy8hIC0gTG9uZyBzdHJp bmdzICgxMDAwKyBjaGFyYWN0ZXJzKQo+ICsgICAgLy8hIC0gU3BlY2lhbCBjaGFyYWN0ZXJzIGlu IHN0cmluZ3MKPiArICAgIC8vISAtIFVuaWNvZGUgc3VwcG9ydCAoZW1vamksIG5vbi1BU0NJSSBj aGFyYWN0ZXJzKQo+ICsKPiArICAgIHVzZSBzdXBlcjo6KjsKPiArICAgIHVzZSBzdGQ6OnRocmVh ZDsKPiArCj4gKyAgICAvLyA9PT09PSBCYXNpYyBDb25zdHJ1Y3Rpb24gVGVzdHMgPT09PT0KPiAr Cj4gKyAgICAjW3Rlc3RdCj4gKyAgICBmbiB0ZXN0X2NvbmZpZ19jcmVhdGlvbigpIHsKPiArICAg ICAgICBsZXQgY29uZmlnID0gQ29uZmlnOjpuZXcoCj4gKyAgICAgICAgICAgICJub2RlMSIudG9f c3RyaW5nKCksCj4gKyAgICAgICAgICAgICIxOTIuMTY4LjEuMTAiLnRvX3N0cmluZygpLAo+ICsg ICAgICAgICAgICAzMywKPiArICAgICAgICAgICAgZmFsc2UsCj4gKyAgICAgICAgICAgIGZhbHNl LAo+ICsgICAgICAgICAgICAicG14Y2ZzIi50b19zdHJpbmcoKSwKPiArICAgICAgICApOwo+ICsK PiArICAgICAgICBhc3NlcnRfZXEhKGNvbmZpZy5ub2RlbmFtZSgpLCAibm9kZTEiKTsKPiArICAg ICAgICBhc3NlcnRfZXEhKGNvbmZpZy5ub2RlX2lwKCksICIxOTIuMTY4LjEuMTAiKTsKPiArICAg ICAgICBhc3NlcnRfZXEhKGNvbmZpZy53d3dfZGF0YV9naWQoKSwgMzMpOwo+ICsgICAgICAgIGFz c2VydCEoIWNvbmZpZy5pc19kZWJ1ZygpKTsKPiArICAgICAgICBhc3NlcnQhKCFjb25maWcuaXNf bG9jYWxfbW9kZSgpKTsKPiArICAgICAgICBhc3NlcnRfZXEhKGNvbmZpZy5jbHVzdGVyX25hbWUo KSwgInBteGNmcyIpOwo+ICsgICAgICAgIGFzc2VydF9lcSEoCj4gKyAgICAgICAgICAgIGNvbmZp Zy5kZWJ1Z19sZXZlbCgpLAo+ICsgICAgICAgICAgICAwLAo+ICsgICAgICAgICAgICAiRGVidWcg bGV2ZWwgc2hvdWxkIGJlIDAgd2hlbiBkZWJ1ZyBpcyBmYWxzZSIKPiArICAgICAgICApOwo+ICsg ICAgfQo+ICsKPiArICAgICNbdGVzdF0KPiArICAgIGZuIHRlc3RfY29uZmlnX2NyZWF0aW9uX3dp dGhfZGVidWcoKSB7Cj4gKyAgICAgICAgbGV0IGNvbmZpZyA9IENvbmZpZzo6bmV3KAo+ICsgICAg ICAgICAgICAibm9kZTIiLnRvX3N0cmluZygpLAo+ICsgICAgICAgICAgICAiMTAuMC4wLjUiLnRv X3N0cmluZygpLAo+ICsgICAgICAgICAgICAxMDAwLAo+ICsgICAgICAgICAgICB0cnVlLAo+ICsg ICAgICAgICAgICBmYWxzZSwKPiArICAgICAgICAgICAgInRlc3QtY2x1c3RlciIudG9fc3RyaW5n KCksCj4gKyAgICAgICAgKTsKPiArCj4gKyAgICAgICAgYXNzZXJ0IShjb25maWcuaXNfZGVidWco KSk7Cj4gKyAgICAgICAgYXNzZXJ0X2VxISgKPiArICAgICAgICAgICAgY29uZmlnLmRlYnVnX2xl dmVsKCksCj4gKyAgICAgICAgICAgIDEsCj4gKyAgICAgICAgICAgICJEZWJ1ZyBsZXZlbCBzaG91 bGQgYmUgMSB3aGVuIGRlYnVnIGlzIHRydWUiCj4gKyAgICAgICAgKTsKPiArICAgIH0KPiArCj4g KyAgICAjW3Rlc3RdCj4gKyAgICBmbiB0ZXN0X2NvbmZpZ19jcmVhdGlvbl9sb2NhbF9tb2RlKCkg ewo+ICsgICAgICAgIGxldCBjb25maWcgPSBDb25maWc6Om5ldygKPiArICAgICAgICAgICAgImxv Y2FsaG9zdCIudG9fc3RyaW5nKCksCj4gKyAgICAgICAgICAgICIxMjcuMC4wLjEiLnRvX3N0cmlu ZygpLAo+ICsgICAgICAgICAgICAzMywKPiArICAgICAgICAgICAgZmFsc2UsCj4gKyAgICAgICAg ICAgIHRydWUsCj4gKyAgICAgICAgICAgICJsb2NhbCIudG9fc3RyaW5nKCksCj4gKyAgICAgICAg KTsKPiArCj4gKyAgICAgICAgYXNzZXJ0IShjb25maWcuaXNfbG9jYWxfbW9kZSgpKTsKPiArICAg ICAgICBhc3NlcnQhKCFjb25maWcuaXNfZGVidWcoKSk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgLy8g PT09PT0gR2V0dGVyIFRlc3RzID09PT09Cj4gKwo+ICsgICAgI1t0ZXN0XQo+ICsgICAgZm4gdGVz dF9hbGxfZ2V0dGVycygpIHsKPiArICAgICAgICBsZXQgY29uZmlnID0gQ29uZmlnOjpuZXcoCj4g KyAgICAgICAgICAgICJ0ZXN0bm9kZSIudG9fc3RyaW5nKCksCj4gKyAgICAgICAgICAgICIxNzIu MTYuMC4xIi50b19zdHJpbmcoKSwKPiArICAgICAgICAgICAgOTk5LAo+ICsgICAgICAgICAgICB0 cnVlLAo+ICsgICAgICAgICAgICB0cnVlLAo+ICsgICAgICAgICAgICAibXktY2x1c3RlciIudG9f c3RyaW5nKCksCj4gKyAgICAgICAgKTsKPiArCj4gKyAgICAgICAgLy8gVGVzdCBhbGwgZ2V0dGVy IG1ldGhvZHMKPiArICAgICAgICBhc3NlcnRfZXEhKGNvbmZpZy5ub2RlbmFtZSgpLCAidGVzdG5v ZGUiKTsKPiArICAgICAgICBhc3NlcnRfZXEhKGNvbmZpZy5ub2RlX2lwKCksICIxNzIuMTYuMC4x Iik7Cj4gKyAgICAgICAgYXNzZXJ0X2VxIShjb25maWcud3d3X2RhdGFfZ2lkKCksIDk5OSk7Cj4g KyAgICAgICAgYXNzZXJ0IShjb25maWcuaXNfZGVidWcoKSk7Cj4gKyAgICAgICAgYXNzZXJ0IShj b25maWcuaXNfbG9jYWxfbW9kZSgpKTsKPiArICAgICAgICBhc3NlcnRfZXEhKGNvbmZpZy5jbHVz dGVyX25hbWUoKSwgIm15LWNsdXN0ZXIiKTsKPiArICAgICAgICBhc3NlcnRfZXEhKGNvbmZpZy5k ZWJ1Z19sZXZlbCgpLCAxKTsKPiArICAgIH0KPiArCj4gKyAgICAvLyA9PT09PSBEZWJ1ZyBMZXZl bCBNdXRhdGlvbiBUZXN0cyA9PT09PQo+ICsKPiArICAgICNbdGVzdF0KPiArICAgIGZuIHRlc3Rf ZGVidWdfbGV2ZWxfbXV0YXRpb24oKSB7Cj4gKyAgICAgICAgbGV0IGNvbmZpZyA9IENvbmZpZzo6 bmV3KAo+ICsgICAgICAgICAgICAibm9kZTEiLnRvX3N0cmluZygpLAo+ICsgICAgICAgICAgICAi MTkyLjE2OC4xLjEiLnRvX3N0cmluZygpLAo+ICsgICAgICAgICAgICAzMywKPiArICAgICAgICAg ICAgZmFsc2UsCj4gKyAgICAgICAgICAgIGZhbHNlLAo+ICsgICAgICAgICAgICAicG14Y2ZzIi50 b19zdHJpbmcoKSwKPiArICAgICAgICApOwo+ICsKPiArICAgICAgICBhc3NlcnRfZXEhKGNvbmZp Zy5kZWJ1Z19sZXZlbCgpLCAwKTsKPiArCj4gKyAgICAgICAgY29uZmlnLnNldF9kZWJ1Z19sZXZl bCgxKTsKPiArICAgICAgICBhc3NlcnRfZXEhKGNvbmZpZy5kZWJ1Z19sZXZlbCgpLCAxKTsKPiAr Cj4gKyAgICAgICAgY29uZmlnLnNldF9kZWJ1Z19sZXZlbCg1KTsKPiArICAgICAgICBhc3NlcnRf ZXEhKGNvbmZpZy5kZWJ1Z19sZXZlbCgpLCA1KTsKPiArCj4gKyAgICAgICAgY29uZmlnLnNldF9k ZWJ1Z19sZXZlbCgwKTsKPiArICAgICAgICBhc3NlcnRfZXEhKGNvbmZpZy5kZWJ1Z19sZXZlbCgp LCAwKTsKPiArICAgIH0KPiArCj4gKyAgICAjW3Rlc3RdCj4gKyAgICBmbiB0ZXN0X2RlYnVnX2xl dmVsX21heF92YWx1ZSgpIHsKPiArICAgICAgICBsZXQgY29uZmlnID0gQ29uZmlnOjpuZXcoCj4g KyAgICAgICAgICAgICJub2RlMSIudG9fc3RyaW5nKCksCj4gKyAgICAgICAgICAgICIxOTIuMTY4 LjEuMSIudG9fc3RyaW5nKCksCj4gKyAgICAgICAgICAgIDMzLAo+ICsgICAgICAgICAgICBmYWxz ZSwKPiArICAgICAgICAgICAgZmFsc2UsCj4gKyAgICAgICAgICAgICJwbXhjZnMiLnRvX3N0cmlu ZygpLAo+ICsgICAgICAgICk7Cj4gKwo+ICsgICAgICAgIGNvbmZpZy5zZXRfZGVidWdfbGV2ZWwo MjU1KTsKPiArICAgICAgICBhc3NlcnRfZXEhKGNvbmZpZy5kZWJ1Z19sZXZlbCgpLCAyNTUpOwo+ ICsKPiArICAgICAgICBjb25maWcuc2V0X2RlYnVnX2xldmVsKDApOwo+ICsgICAgICAgIGFzc2Vy dF9lcSEoY29uZmlnLmRlYnVnX2xldmVsKCksIDApOwo+ICsgICAgfQo+ICsKPiArICAgIC8vID09 PT09IFRocmVhZCBTYWZldHkgVGVzdHMgPT09PT0KPiArCj4gKyAgICAjW3Rlc3RdCj4gKyAgICBm biB0ZXN0X2RlYnVnX2xldmVsX3RocmVhZF9zYWZldHkoKSB7Cj4gKyAgICAgICAgbGV0IGNvbmZp ZyA9IENvbmZpZzo6bmV3KAo+ICsgICAgICAgICAgICAibm9kZTEiLnRvX3N0cmluZygpLAo+ICsg ICAgICAgICAgICAiMTkyLjE2OC4xLjEiLnRvX3N0cmluZygpLAo+ICsgICAgICAgICAgICAzMywK PiArICAgICAgICAgICAgZmFsc2UsCj4gKyAgICAgICAgICAgIGZhbHNlLAo+ICsgICAgICAgICAg ICAicG14Y2ZzIi50b19zdHJpbmcoKSwKPiArICAgICAgICApOwo+ICsKPiArICAgICAgICBsZXQg Y29uZmlnX2Nsb25lID0gQXJjOjpjbG9uZSgmY29uZmlnKTsKPiArCj4gKyAgICAgICAgLy8gU3Bh d24gbXVsdGlwbGUgdGhyZWFkcyB0aGF0IGNvbmN1cnJlbnRseSBtb2RpZnkgZGVidWcgbGV2ZWwK PiArICAgICAgICBsZXQgaGFuZGxlczogVmVjPF8+ID0gKDAuLjEwKQo+ICsgICAgICAgICAgICAu bWFwKHxpfCB7Cj4gKyAgICAgICAgICAgICAgICBsZXQgY2ZnID0gQXJjOjpjbG9uZSgmY29uZmln KTsKPiArICAgICAgICAgICAgICAgIHRocmVhZDo6c3Bhd24obW92ZSB8fCB7Cj4gKyAgICAgICAg ICAgICAgICAgICAgZm9yIF8gaW4gMC4uMTAwIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAg Y2ZnLnNldF9kZWJ1Z19sZXZlbChpKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgbGV0IF8g PSBjZmcuZGVidWdfbGV2ZWwoKTsKPiArICAgICAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAg ICAgICAgICB9KQo+ICsgICAgICAgICAgICB9KQo+ICsgICAgICAgICAgICAuY29sbGVjdCgpOwo+ ICsKPiArICAgICAgICAvLyBBbGwgdGhyZWFkcyBzaG91bGQgY29tcGxldGUgd2l0aG91dCBwYW5p Y2tpbmcKPiArICAgICAgICBmb3IgaGFuZGxlIGluIGhhbmRsZXMgewo+ICsgICAgICAgICAgICBo YW5kbGUuam9pbigpLnVud3JhcCgpOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgLy8gRmlu YWwgdmFsdWUgc2hvdWxkIGJlIG9uZSBvZiB0aGUgdmFsdWVzIHNldCBieSB0aHJlYWRzCj4gKyAg ICAgICAgbGV0IGZpbmFsX2xldmVsID0gY29uZmlnX2Nsb25lLmRlYnVnX2xldmVsKCk7Cj4gKyAg ICAgICAgYXNzZXJ0ISgKPiArICAgICAgICAgICAgZmluYWxfbGV2ZWwgPCAxMCwKPiArICAgICAg ICAgICAgIkRlYnVnIGxldmVsIHNob3VsZCBiZSA8IDEwLCBnb3Qge2ZpbmFsX2xldmVsfSIKPiAr ICAgICAgICApOwo+ICsgICAgfQo+ICsKPiArICAgICNbdGVzdF0KPiArICAgIGZuIHRlc3RfY29u Y3VycmVudF9yZWFkcygpIHsKPiArICAgICAgICBsZXQgY29uZmlnID0gQ29uZmlnOjpuZXcoCj4g KyAgICAgICAgICAgICJub2RlMSIudG9fc3RyaW5nKCksCj4gKyAgICAgICAgICAgICIxOTIuMTY4 LjEuMSIudG9fc3RyaW5nKCksCj4gKyAgICAgICAgICAgIDMzLAo+ICsgICAgICAgICAgICB0cnVl LAo+ICsgICAgICAgICAgICBmYWxzZSwKPiArICAgICAgICAgICAgInBteGNmcyIudG9fc3RyaW5n KCksCj4gKyAgICAgICAgKTsKPiArCj4gKyAgICAgICAgLy8gU3Bhd24gbXVsdGlwbGUgdGhyZWFk cyB0aGF0IGNvbmN1cnJlbnRseSByZWFkIGNvbmZpZwo+ICsgICAgICAgIGxldCBoYW5kbGVzOiBW ZWM8Xz4gPSAoMC4uMjApCj4gKyAgICAgICAgICAgIC5tYXAofF98IHsKPiArICAgICAgICAgICAg ICAgIGxldCBjZmcgPSBBcmM6OmNsb25lKCZjb25maWcpOwo+ICsgICAgICAgICAgICAgICAgdGhy ZWFkOjpzcGF3bihtb3ZlIHx8IHsKPiArICAgICAgICAgICAgICAgICAgICBmb3IgXyBpbiAwLi4x MDAwIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxIShjZmcubm9kZW5hbWUo KSwgIm5vZGUxIik7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcSEoY2ZnLm5v ZGVfaXAoKSwgIjE5Mi4xNjguMS4xIik7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2Vy dF9lcSEoY2ZnLnd3d19kYXRhX2dpZCgpLCAzMyk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAg IGFzc2VydCEoY2ZnLmlzX2RlYnVnKCkpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBhc3Nl cnQhKCFjZmcuaXNfbG9jYWxfbW9kZSgpKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgYXNz ZXJ0X2VxIShjZmcuY2x1c3Rlcl9uYW1lKCksICJwbXhjZnMiKTsKPiArICAgICAgICAgICAgICAg ICAgICB9Cj4gKyAgICAgICAgICAgICAgICB9KQo+ICsgICAgICAgICAgICB9KQo+ICsgICAgICAg ICAgICAuY29sbGVjdCgpOwo+ICsKPiArICAgICAgICBmb3IgaGFuZGxlIGluIGhhbmRsZXMgewo+ ICsgICAgICAgICAgICBoYW5kbGUuam9pbigpLnVud3JhcCgpOwo+ICsgICAgICAgIH0KPiArICAg IH0KPiArCj4gKyAgICAvLyA9PT09PSBDbG9uZSBUZXN0cyA9PT09PQo+ICsKPiArICAgICNbdGVz dF0KPiArICAgIGZuIHRlc3RfY29uZmlnX2Nsb25lKCkgewo+ICsgICAgICAgIGxldCBjb25maWcx ID0gQ29uZmlnOjpuZXcoCj4gKyAgICAgICAgICAgICJub2RlMSIudG9fc3RyaW5nKCksCj4gKyAg ICAgICAgICAgICIxOTIuMTY4LjEuMSIudG9fc3RyaW5nKCksCj4gKyAgICAgICAgICAgIDMzLAo+ ICsgICAgICAgICAgICB0cnVlLAo+ICsgICAgICAgICAgICBmYWxzZSwKPiArICAgICAgICAgICAg InBteGNmcyIudG9fc3RyaW5nKCksCj4gKyAgICAgICAgKTsKPiArCj4gKyAgICAgICAgY29uZmln MS5zZXRfZGVidWdfbGV2ZWwoNSk7Cj4gKwo+ICsgICAgICAgIGxldCBjb25maWcyID0gKCpjb25m aWcxKS5jbG9uZSgpOwo+ICsKPiArICAgICAgICAvLyBDbG9uZWQgY29uZmlnIHNob3VsZCBoYXZl IHNhbWUgdmFsdWVzCj4gKyAgICAgICAgYXNzZXJ0X2VxIShjb25maWcyLm5vZGVuYW1lKCksIGNv bmZpZzEubm9kZW5hbWUoKSk7Cj4gKyAgICAgICAgYXNzZXJ0X2VxIShjb25maWcyLm5vZGVfaXAo KSwgY29uZmlnMS5ub2RlX2lwKCkpOwo+ICsgICAgICAgIGFzc2VydF9lcSEoY29uZmlnMi53d3df ZGF0YV9naWQoKSwgY29uZmlnMS53d3dfZGF0YV9naWQoKSk7Cj4gKyAgICAgICAgYXNzZXJ0X2Vx IShjb25maWcyLmlzX2RlYnVnKCksIGNvbmZpZzEuaXNfZGVidWcoKSk7Cj4gKyAgICAgICAgYXNz ZXJ0X2VxIShjb25maWcyLmlzX2xvY2FsX21vZGUoKSwgY29uZmlnMS5pc19sb2NhbF9tb2RlKCkp Owo+ICsgICAgICAgIGFzc2VydF9lcSEoY29uZmlnMi5jbHVzdGVyX25hbWUoKSwgY29uZmlnMS5j bHVzdGVyX25hbWUoKSk7Cj4gKyAgICAgICAgYXNzZXJ0X2VxIShjb25maWcyLmRlYnVnX2xldmVs KCksIDUpOwo+ICsKPiArICAgICAgICAvLyBNb2RpZnlpbmcgb25lIHNob3VsZCBub3QgYWZmZWN0 IHRoZSBvdGhlcgo+ICsgICAgICAgIGNvbmZpZzIuc2V0X2RlYnVnX2xldmVsKDEwKTsKPiArICAg ICAgICBhc3NlcnRfZXEhKGNvbmZpZzEuZGVidWdfbGV2ZWwoKSwgNSk7Cj4gKyAgICAgICAgYXNz ZXJ0X2VxIShjb25maWcyLmRlYnVnX2xldmVsKCksIDEwKTsKPiArICAgIH0KPiArCj4gKyAgICAv LyA9PT09PSBEZWJ1ZyBGb3JtYXR0aW5nIFRlc3RzID09PT09Cj4gKwo+ICsgICAgI1t0ZXN0XQo+ ICsgICAgZm4gdGVzdF9kZWJ1Z19mb3JtYXQoKSB7Cj4gKyAgICAgICAgbGV0IGNvbmZpZyA9IENv bmZpZzo6bmV3KAo+ICsgICAgICAgICAgICAibm9kZTEiLnRvX3N0cmluZygpLAo+ICsgICAgICAg ICAgICAiMTkyLjE2OC4xLjEiLnRvX3N0cmluZygpLAo+ICsgICAgICAgICAgICAzMywKPiArICAg ICAgICAgICAgdHJ1ZSwKPiArICAgICAgICAgICAgZmFsc2UsCj4gKyAgICAgICAgICAgICJwbXhj ZnMiLnRvX3N0cmluZygpLAo+ICsgICAgICAgICk7Cj4gKwo+ICsgICAgICAgIGxldCBkZWJ1Z19z dHIgPSBmb3JtYXQhKCJ7Y29uZmlnOj99Iik7Cj4gKwo+ICsgICAgICAgIC8vIENoZWNrIHRoYXQg ZGVidWcgb3V0cHV0IGNvbnRhaW5zIGFsbCBmaWVsZHMKPiArICAgICAgICBhc3NlcnQhKGRlYnVn X3N0ci5jb250YWlucygiQ29uZmlnIikpOwo+ICsgICAgICAgIGFzc2VydCEoZGVidWdfc3RyLmNv bnRhaW5zKCJub2RlbmFtZSIpKTsKPiArICAgICAgICBhc3NlcnQhKGRlYnVnX3N0ci5jb250YWlu cygibm9kZTEiKSk7Cj4gKyAgICAgICAgYXNzZXJ0IShkZWJ1Z19zdHIuY29udGFpbnMoIm5vZGVf aXAiKSk7Cj4gKyAgICAgICAgYXNzZXJ0IShkZWJ1Z19zdHIuY29udGFpbnMoIjE5Mi4xNjguMS4x IikpOwo+ICsgICAgICAgIGFzc2VydCEoZGVidWdfc3RyLmNvbnRhaW5zKCJ3d3dfZGF0YV9naWQi KSk7Cj4gKyAgICAgICAgYXNzZXJ0IShkZWJ1Z19zdHIuY29udGFpbnMoIjMzIikpOwo+ICsgICAg ICAgIGFzc2VydCEoZGVidWdfc3RyLmNvbnRhaW5zKCJkZWJ1ZyIpKTsKPiArICAgICAgICBhc3Nl cnQhKGRlYnVnX3N0ci5jb250YWlucygidHJ1ZSIpKTsKPiArICAgICAgICBhc3NlcnQhKGRlYnVn X3N0ci5jb250YWlucygibG9jYWxfbW9kZSIpKTsKPiArICAgICAgICBhc3NlcnQhKGRlYnVnX3N0 ci5jb250YWlucygiZmFsc2UiKSk7Cj4gKyAgICAgICAgYXNzZXJ0IShkZWJ1Z19zdHIuY29udGFp bnMoImNsdXN0ZXJfbmFtZSIpKTsKPiArICAgICAgICBhc3NlcnQhKGRlYnVnX3N0ci5jb250YWlu cygicG14Y2ZzIikpOwo+ICsgICAgICAgIGFzc2VydCEoZGVidWdfc3RyLmNvbnRhaW5zKCJkZWJ1 Z19sZXZlbCIpKTsKPiArICAgIH0KPiArCj4gKyAgICAvLyA9PT09PSBFZGdlIENhc2VzIGFuZCBC b3VuZGFyeSBUZXN0cyA9PT09PQo+ICsKPiArICAgICNbdGVzdF0KPiArICAgIGZuIHRlc3RfZW1w dHlfc3RyaW5ncygpIHsKPiArICAgICAgICBsZXQgY29uZmlnID0gQ29uZmlnOjpuZXcoU3RyaW5n OjpuZXcoKSwgU3RyaW5nOjpuZXcoKSwgMCwgZmFsc2UsIGZhbHNlLCBTdHJpbmc6Om5ldygpKTsK PiArCj4gKyAgICAgICAgYXNzZXJ0X2VxIShjb25maWcubm9kZW5hbWUoKSwgIiIpOwo+ICsgICAg ICAgIGFzc2VydF9lcSEoY29uZmlnLm5vZGVfaXAoKSwgIiIpOwo+ICsgICAgICAgIGFzc2VydF9l cSEoY29uZmlnLmNsdXN0ZXJfbmFtZSgpLCAiIik7Cj4gKyAgICAgICAgYXNzZXJ0X2VxIShjb25m aWcud3d3X2RhdGFfZ2lkKCksIDApOwo+ICsgICAgfQo+ICsKPiArICAgICNbdGVzdF0KPiArICAg IGZuIHRlc3RfbG9uZ19zdHJpbmdzKCkgewo+ICsgICAgICAgIGxldCBsb25nX25hbWUgPSAiYSIu cmVwZWF0KDEwMDApOwo+ICsgICAgICAgIGxldCBsb25nX2lwID0gIjE5Mi4xNjguMS4iLnRvX3N0 cmluZygpICsgJiIxIi5yZXBlYXQoMTAwKTsKPiArICAgICAgICBsZXQgbG9uZ19jbHVzdGVyID0g ImNsdXN0ZXItIi50b19zdHJpbmcoKSArICYieCIucmVwZWF0KDUwMCk7Cj4gKwo+ICsgICAgICAg IGxldCBjb25maWcgPSBDb25maWc6Om5ldygKPiArICAgICAgICAgICAgbG9uZ19uYW1lLmNsb25l KCksCj4gKyAgICAgICAgICAgIGxvbmdfaXAuY2xvbmUoKSwKPiArICAgICAgICAgICAgdTMyOjpN QVgsCj4gKyAgICAgICAgICAgIHRydWUsCj4gKyAgICAgICAgICAgIHRydWUsCj4gKyAgICAgICAg ICAgIGxvbmdfY2x1c3Rlci5jbG9uZSgpLAo+ICsgICAgICAgICk7Cj4gKwo+ICsgICAgICAgIGFz c2VydF9lcSEoY29uZmlnLm5vZGVuYW1lKCksIGxvbmdfbmFtZSk7Cj4gKyAgICAgICAgYXNzZXJ0 X2VxIShjb25maWcubm9kZV9pcCgpLCBsb25nX2lwKTsKPiArICAgICAgICBhc3NlcnRfZXEhKGNv bmZpZy5jbHVzdGVyX25hbWUoKSwgbG9uZ19jbHVzdGVyKTsKPiArICAgICAgICBhc3NlcnRfZXEh KGNvbmZpZy53d3dfZGF0YV9naWQoKSwgdTMyOjpNQVgpOwo+ICsgICAgfQo+ICsKPiArICAgICNb dGVzdF0KPiArICAgIGZuIHRlc3Rfc3BlY2lhbF9jaGFyYWN0ZXJzX2luX3N0cmluZ3MoKSB7Cj4g KyAgICAgICAgbGV0IGNvbmZpZyA9IENvbmZpZzo6bmV3KAo+ICsgICAgICAgICAgICAibm9kZS0x X3Rlc3QubG9jYWwiLnRvX3N0cmluZygpLAo+ICsgICAgICAgICAgICAiMTkyLjE2OC4xLjEwOjgw MDYiLnRvX3N0cmluZygpLAo+ICsgICAgICAgICAgICAzMywKPiArICAgICAgICAgICAgZmFsc2Us Cj4gKyAgICAgICAgICAgIGZhbHNlLAo+ICsgICAgICAgICAgICAibXktY2x1c3Rlcl92Mi4wIi50 b19zdHJpbmcoKSwKPiArICAgICAgICApOwo+ICsKPiArICAgICAgICBhc3NlcnRfZXEhKGNvbmZp Zy5ub2RlbmFtZSgpLCAibm9kZS0xX3Rlc3QubG9jYWwiKTsKPiArICAgICAgICBhc3NlcnRfZXEh KGNvbmZpZy5ub2RlX2lwKCksICIxOTIuMTY4LjEuMTA6ODAwNiIpOwo+ICsgICAgICAgIGFzc2Vy dF9lcSEoY29uZmlnLmNsdXN0ZXJfbmFtZSgpLCAibXktY2x1c3Rlcl92Mi4wIik7Cj4gKyAgICB9 Cj4gKwo+ICsgICAgI1t0ZXN0XQo+ICsgICAgZm4gdGVzdF91bmljb2RlX2luX3N0cmluZ3MoKSB7 Cj4gKyAgICAgICAgbGV0IGNvbmZpZyA9IENvbmZpZzo6bmV3KAo+ICsgICAgICAgICAgICAi44OO 44O844OJMSIudG9fc3RyaW5nKCksCj4gKyAgICAgICAgICAgICI6OjEiLnRvX3N0cmluZygpLAo+ ICsgICAgICAgICAgICAzMywKPiArICAgICAgICAgICAgZmFsc2UsCj4gKyAgICAgICAgICAgIGZh bHNlLAo+ICsgICAgICAgICAgICAi6ZuG576kIi50b19zdHJpbmcoKSwKPiArICAgICAgICApOwo+ ICsKPiArICAgICAgICBhc3NlcnRfZXEhKGNvbmZpZy5ub2RlbmFtZSgpLCAi44OO44O844OJMSIp Owo+ICsgICAgICAgIGFzc2VydF9lcSEoY29uZmlnLm5vZGVfaXAoKSwgIjo6MSIpOwo+ICsgICAg ICAgIGFzc2VydF9lcSEoY29uZmlnLmNsdXN0ZXJfbmFtZSgpLCAi6ZuG576kIik7Cj4gKyAgICB9 Cj4gK30KCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K cHZlLWRldmVsIG1haWxpbmcgbGlzdApwdmUtZGV2ZWxAbGlzdHMucHJveG1veC5jb20KaHR0cHM6 Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcHZlLWRldmVsCg==