Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp3284343ybz; Sun, 3 May 2020 23:07:48 -0700 (PDT) X-Google-Smtp-Source: APiQypKaWXetKMC42E/+8k1qbH7Z7Jr8p49ColnW50nNLfLu2KuyXcYTfy4d20X8h1eE8ccZZEZk X-Received: by 2002:a17:906:81d7:: with SMTP id e23mr12483696ejx.309.1588572468761; Sun, 03 May 2020 23:07:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588572468; cv=none; d=google.com; s=arc-20160816; b=Q8edOi+2HLtzQWlq7Jol7nQK8+UdPybJxQ+SqrjHiNhpxDvYZ2rWrdO9cdz1d7RkXX WyYFc09/iDWclDJpQW4Zt/6HtH2cAg+oSn05IY9XmNRbVW+jhITobVLYOfRyyuxSWGK6 nQOkGYe3DKUiinC4BDp0xs78T6QOwRaVUsTChOdYrqNlhMo18Uo+TITxGO1BWl3dlKcT KHIucKdH8r8w9VrTZ5YF+SlbajCrjaDcUvb9XHBq09vuHtNRVd89IpsF9+UJxDP6/K8U GY0gYjY9xFmFdj8VLODD+zeTve6Kgs/Z1vTinRB+dYjObXP4IsiQDLlJUw5Biv9uBPek FPjw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from; bh=GiJa0+whWbFzthtalCF7tD7fO8+1LIjjNUyR9j9eiH0=; b=S+qdb12kdGZjz9hXoXDPLiqsZ8JnxtJ9PhVaZeN+/VaIDM+BiEFNqsVApRQJdxl+sV pwjLkhbAiIMZQdzxetGR71Fu3vnFcdygIB0/2jWqSxbBAF5Nh3MbDD+0qkDSrh8DAB2H dDmJ5NK/nnymaD/opLOmbKpG4Qw/gqRzx16OPWArx0hF/mYJ6ujt+/G7ksIYtcSvw7vE ycaM/TSuUmc6rVpjyy3pxZVZ27n429/fhzaCSvxxP/ymzkc5p8H5A/MWv0aLced71ATs nt60il4J3GEhyoHOZ1vbmcv7jvbB4NypEDSluYAij4G3J2QVJC3YYRUDj4YaL/+scPU5 YYsw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id eb5si7431526edb.145.2020.05.03.23.07.25; Sun, 03 May 2020 23:07:48 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726913AbgEDFya (ORCPT + 99 others); Mon, 4 May 2020 01:54:30 -0400 Received: from mailgate1.rohmeurope.com ([87.129.152.131]:49832 "EHLO mailgate1.rohmeurope.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725859AbgEDFya (ORCPT ); Mon, 4 May 2020 01:54:30 -0400 X-AuditID: c0a8fbf4-489ff70000004419-6a-5eafae119174 Received: from smtp.reu.rohmeu.com (will-cas002.reu.rohmeu.com [192.168.251.178]) by mailgate1.rohmeurope.com (Symantec Messaging Gateway) with SMTP id EF.48.17433.11EAFAE5; Mon, 4 May 2020 07:54:25 +0200 (CEST) Received: from WILL-MAIL001.REu.RohmEu.com ([fe80::2915:304f:d22c:c6ba]) by WILL-CAS002.REu.RohmEu.com ([fe80::fc24:4cbc:e287:8659%12]) with mapi id 14.03.0487.000; Mon, 4 May 2020 07:54:14 +0200 From: "Vaittinen, Matti" To: "davidgow@google.com" CC: "brendanhiggins@google.com" , "linux-clk@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "sboyd@kernel.org" , "mturquette@baylibre.com" , "kunit-dev@googlegroups.com" Subject: Re: [PATCH/RFC] clk: gate: Add some kunit test suites Thread-Topic: [PATCH/RFC] clk: gate: Add some kunit test suites Thread-Index: AQHWDVm00wvp7tx1MEWH9xzyZOyZGKh4aF6AgBcVE4CAB/c2gA== Date: Mon, 4 May 2020 05:54:14 +0000 Message-ID: <300c532bba46f4f963c3a6d80bf8f22261e44f56.camel@fi.rohmeurope.com> References: <20200408035637.110858-1-sboyd@kernel.org> In-Reply-To: Accept-Language: en-US, de-DE Content-Language: de-DE X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [62.78.225.252] Content-Type: text/plain; charset="utf-8" Content-ID: <5E26E30648DF774BA2FA45D57B7D9492@de.rohmeurope.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupkk+LIzCtJLcpLzFFi42I5sOL3Jl3BdevjDA590bO4eGMys8WJjRtY LJbM2Mhm8bHnHqvF5V1z2CwunnK1+HdtI4sDu8f7G63sHgs2lXrsmXiSzWPTqk42j8+b5AJY o7htkhJLyoIz0/P07RK4M05/KitY08JUsejbbtYGxit/GbsYOTkkBEwk3l68AWRzcQgJXGOU +HfxLwuEc5xRouXmfeYuRg4ONgEbia6b7CANIgL6Ep9aephAapgFrjBJXFjRAzZJWMBO4sOL S8wQRfYSC07vYIOwnSRuvFjHBGKzCKhI/Np0jBVkJq+An0TrYVOIXUcYJSbfWMgCUsMpEChx 8Md2MJtRQFais+EdWC+zgLjEpmffWSGuFpBYsuc8M4QtKvHy8T+ouKLE9u/rWEDmMwtoSqzf pQ/R6iCxcc9qNghbUWJK90OwX3gFBCVOznzCMoFRbBaSDbMQumch6Z6FpHsWku4FjKyrGCVy EzNz0hNLUg31ilJL9YryM3KBVHJ+7iZGSKR+2cH4/5DnIUYmDsZDjJIcTEqivLLZ6+OE+JLy UyozEosz4otKc1KLDzFKcDArifDuaAHK8aYkVlalFuXDpKQ5WJTEedUfTowVEgDZlZ2aWpBa BJOV4eBQkuA1XwPUKFiUmp5akZaZU4KQZuLgBBnOJSVSnJqXklqUWFqSEQ9KIPHFwBQCkuIB 2rsHpJ23uCAxFygK0XqK0ZBjwsu5i5g5Ns9dCiSPgEghlrz8vFQpcV6VVUANAiANGaV5cOte MYpzMCoJ8x4BGccDTN9w014BLWICWqT1bx3IopJEhJRUA6PkqVnqmt7xa6OM+bRL5y64UWgS ubWgwKjmZafZ72b75oBl59X/3WeyTngY7TjF5lr64+5Ylh92V+MPSGn6LmKaeI5DL/JUsqFw /zufD3Oyn9UftVqbfFRCaqJp9fxV09lbww0+v3dZ9D9hj9Lt/jiVR7zTp/L3Pqm4/0I89eMF p8WFalOjXymxFGckGmoxFxUnAgBTB9YjnAMAAA== Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGVsbG8gRGF2aWQsICYgQWxsDQoNClRoaXMgcmV2aWV3IGFuZCBtYWlsIGlzIG1vcmUgZm9yIHBv aW50aW5nIG91dCB0aGUgZG93bnNpZGVzIG9mIFVUcy4gSQ0KYW0gbm90IGRlbWFuZGluZyBhbnkg Y2hhbmdlcywgdGhlc2UgY29tbWVudHMgY2FuIGJlIHNlZW4gYXMgJ25pdCdzLg0KDQpPbiBXZWQs IDIwMjAtMDQtMjkgYXQgMTI6MTUgKzA4MDAsIERhdmlkIEdvdyB3cm90ZToNCj4gT24gVHVlLCBB cHIgMTQsIDIwMjAgYXQgNzo0NiBQTSBWYWl0dGluZW4sIE1hdHRpDQo+IDxNYXR0aS5WYWl0dGlu ZW5AZmkucm9obWV1cm9wZS5jb20+IHdyb3RlOg0KPiA+IEhlbGxvIFN0ZXBoZW4gJiBBbGwsDQo+ ID4gDQo+ID4gUHJvbG9ndWU6DQo+ID4gDQo+ID4gSSBoYXZlIGJlZW4gdHJhdW1hdGl6ZWQgaW4g dGhlIHBhc3QgLSBieSB1bml0IHRlc3RzIDopIFRodXMgSSBhbQ0KPiA+IGFsd2F5cw0KPiA+IGEg Yml0IGp1bXB5IHdoZW4gSSBzZWUgcGVvcGxlIGFkZGluZyBVVHMuIEkgYWx3YXlzIHNlZSB0aGUg aW5lcnRpYQ0KPiA+IFVUcw0KPiA+IGFkZCB0byBkZXZlbG9wbWVudCAtIHdoZW4gcGVvcGxlIGNo YW5nZSBhbnl0aGluZyB0aGV5IG11c3QgYWxzbw0KPiA+IGNoYW5nZQ0KPiA+IGltcGFjdGVkIFVU cyAtIGFuZCBldmVyeSB1bm5lY2Vzc2FyeSBVVCBjYXNlIGlzIGFjdHVhbGx5IGJ1cmRlbi4gSQ0K PiA+IHdhcw0KPiA+IG9uY2UgYnVyaWVkIHVuZGVyIHN1Y2ggYnVyZGVuLi4gQmFjayBhdCB0aG9z ZSB0aW1lcyBJIHF1aXRlIG9mdGVuDQo+ID4gZm91bmQNCj4gPiBteXNlbGYgd29uZGVyaW5nIHdo eSBJIHNwZW5kIHR3byBkYXlzIGZpeGluZyBVVCBjYXNlcyBhZnRlciBJIGRpZCBhDQo+ID4gbmVj ZXNzYXJ5IGNvZGUgY2hhbmdlIHdoaWNoIHRvb2sgbWF5YmUgMTAgbWludXRlcy4gUGxlYXNlIHNl ZSBteQ0KPiA+IGNvbW1lbnRzIGtub3dpbmcgdGhpcyBoaXN0b3J5IGFuZCBkbyB5b3VyIGRlY2lz aW9ucyBiYXNlZCBvbiBsZXNzDQo+ID4gYmlhc2VkIC0gYnJpZ2h0ZXIgdW5kZXJzdGFuZGluZyA6 XQ0KPiA+IA0KPiA+IA0KPiANCj4gSGV5IE1hdHRpLA0KPiANCj4gQXMgc29tZW9uZSB3aG8ncyBk ZWZpbml0ZWx5IHdhc3RlZCBhIGxvdCBvZiB0aW1lIGZpeGluZw0KPiBwb29ybHktdGhvdWdodC10 aHJvdWdoIHRlc3RzLCBidXQgd2hvIGlzIG5ldmVydGhlbGVzcyB3b3JraW5nDQo+IGVudGh1c2lh c3RpY2FsbHkgb24gS1VuaXQsIEkgd2FudGVkIHRvIHJlc3BvbmQgcXVpY2tseSBoZXJlLg0KDQpJ IGFwcHJlY2lhdGUgeW91ciByZXBseS4gQW5kIEkgYXBwcmVjaWF0ZSB5b3VyIChhbmQgb3RoZXJz KSB3b3JrIG9uDQpLVWluaXQuIEkgZG9uJ3QgdGhpbmsgVVRzIGFyZSBiYWQuIEkgYmVsaWV2ZSBV VHMgYXJlIGdyZWF0IGFuZA0KcG93ZXJmdWxsIHRvb2wgLSB3aGVuIHVzZWQgb24gc3BlY2lmaWMg b2NjYXNpb25zLiBCdXQgVVRzIGRlZmluaXRlbHkNCmFyZSAiZG91YmxlLWVkZ2VkIHN3b3JkIiAt IHlvdSBjYW4gaGl0IHlvdXIgb3duIGxlZy4NCg0KPiBDZXJ0YWlubHksIHRoZSBnb2FsIGlzIG5v dCB0byByZWR1Y2UgZGV2ZWxvcG1lbnQgdmVsb2NpdHksIHRob3VnaCBpdA0KPiBpcyByZWRpc3Ry aWJ1dGVkIGEgYml0OiBob3BlZnVsbHkgdGhlIGV4dHJhIHRpbWUgc3BlbnQgdXBkYXRpbmcgdGVz dHMNCj4gd2lsbCBiZSBtb3JlIHRoYW4gcGFpZCBiYWNrIGluIGlkZW50aWZ5aW5nIGFuZCBmaXhp bmcgYnVncyBlYXJsaWVyLA0KPiBhcw0KPiB3ZWxsIGFzIG1ha2luZyB0ZXN0aW5nIG9uZSdzIG93 biBjaGFuZ2VzIHNpbXBsZXIuIE9ubHkgdGltZSB3aWxsIHRlbGwNCj4gaWYgd2UncmUgcmlnaHQg b3Igbm90LCBidXQgaWYgdGhleSB0dXJuIG91dCB0byBjYXVzZSBtb3JlIHByb2JsZW1zDQo+IHRo YW4gdGhleSBzb2x2ZSB3ZSBjYW4gYWx3YXlzIGFkanVzdCBvciByZW1vdmUgdGhlbS4gSSByZW1h aW4NCj4gb3B0aW1pc3RpYywgdGhvdWdoLg0KDQpGaXhpbmcgYW5kIGlkZW50aWZ5aW5nIGJ1Z3Mg aXMgZGVmaW5pdGVseSAidGhlIHRoaW5nIiBpbiBVVHMuIEJ1dCB3aGF0DQpjb21lcyB0byB3ZWln aGluZyB0aGUgYmVuZWZpdHMgb2YgVVRzIFZzLiBkb3duc2lkZXMgLSB0aGF0J3MgaGFyZC4NCkZp cnN0IHRoaW5nIG9uIHRoYXQgZnJvbnQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29zdCBvZiBVVHMu IEFuZCBpbiBteQ0KZXhwZXJpZW5jZSAtIG1hbnkgcGVvcGxlIHVuZGVyZXN0aW1hdGUgdGhhdC4g SXQncyBlYXN5IHRvbyBzZWUgdGhpbmdzDQpibGFjayAmIHdoaXRlIGFuZCB0aGluayBVVHMgYXJl IG9ubHkgZ29vZCAtIHdoaWNoIGlzIG5vdCB0cnVlLg0KDQpVVCBjYXNlcyBhcmUgY29kZSB3aGlj aCBtdXN0IGJlIG1haW50YWluZWQgYXMgYW55IGNvZGUuIEFuZCB3ZSBtdXN0DQpuZXZlciBhZGQg Y29kZSB3aGljaCBpcyBub3QgYmVuZWZpY2lhbCBhcyBtYWludGFpbmluZyBpdCBpcyB3b3JrLiBX ZSBkbw0KY29uc3RhbnRseSB3b3JrIHRvIGRlY3JlYXNlIGFtb3VudCBvZiBjb2RlIHRvIGJlIG1h aW50YW5lZCAtIFVUcyBhcmUgbm8NCmV4Y2VwdGlvbiAtIGFsbCBjb2RlIGlzIGEgYnVyZGVuLiBV bm5lY2Vzc2FyeSBjb2RlIGlzIGJ1cmRlbiB3aXRoIG5vDQpwdXJwb3NlLiBBbmQgVVRzIGhhdmUg bm8gb3RoZXIgcHVycG9zZSBidXQgdG8gcG9pbnQgb3V0IG1pc3Rha2VzLiBPbmx5DQpnb29kIHRl c3QgaXMgYSB0ZXN0IHRoYXQgaXMgZmFpbGluZyBhbmQgcG9pbnRpbmcgb3V0IGEgYnVnIHdoaWNo IHdvdWxkDQpoYXZlIG90aGVyd2lzZSBnb25lIHVubm90aWNlZC4gUGFzc2luZyB0ZXN0IGlzIGEg d2FzdGUuDQoNClNvIGtleSB0aGluZyB3aGVuIGNvbnNpZGVyaW5nIGlmIGFkZGluZyBhIHRlc3Qg aXMgYmVuZWZpY2lhbCBpcyB3aGV0aGVyDQp0aGUgdGVzdCBpcyBsaWtlbHkgdG8gcG9pbnQgb3V0 IGEgYnVnIChpbiBlYXJseSBwaGFzZSkuIEEgYnVnIHRoYXQNCndvdWxkIG90aGVyd2lzZSBoYXZl IGdvbmUgdGhyb3VnaCB1bm5vdGljZWQuDQoNCj4gSSBkbyB0aGluayB0aGF0IHRoZXNlIHRlc3Rz IGFyZSB1bmxpa2VseSB0byBpbmNyZWFzZSB0aGUgYnVyZGVuIG9uDQo+IGRldmVsb3BlcnMgbXVj aDoNCg0KQWxsIGNvZGUgd2hpY2ggdXNlcyBrZXJuZWwgQVBJcyBpcyBpbmNyZWFzaW5nIGJ1cmRl biBmb3Igc29tZW9uZSB3aG8NCm5lZWRzIHRvIGNoYW5nZSB0aGUgQVBJLiBNdWNoIGNhbiBiZSBk aXNjdXNzZWQgOykNCg0KPiAgdGhleSBzZWVtIG1vc3RseSB0byB0ZXN0IGludGVyZmFjZXMgYW5k IGJlaGF2aW91cg0KPiB3aGljaCBpcyB1c2VkIHF1aXRlIGEgYml0IGVsc2V3aGVyZSBpbiB0aGUg a2VybmVsOiBjaGFuZ2VzIHRoYXQgYnJlYWsNCj4gdGhlbSBzZWVtIGxpa2VseSB0byBiZSByZWFz b25hYmx5IGRpc3J1cHRpdmUgYW55d2F5LCBzbyB0aGVzZSB0ZXN0cw0KPiBhcmVuJ3QgZ29pbmcg dG8gYWRkIHRvbyBtdWNoIHRvIHRoYXQgb3ZlcmFsbCwNCg0KVGhpcyBzdGF0ZW1lbnQgaXMgdmFs aWQgZm9yIGFsbW9zdCBhbGwgZXhwb3J0ZWQga2VybmVsIEFQSXMgLSB5ZXQNCmFkZGluZyB0ZXN0 cyBmb3IgYWxsIEFQSXMgaXMgZGVmaW5pdGVseSBhIGJhZCBpZGVhLiBUaGUgZWZmb3J0IGlzDQpj dW11bGF0aXZlLiBXZSBzaG91bGQgbmV2ZXIgYWRkIG5ldyBjb2RlIGp1c3QgYmVjYXVzZSBtYWlu dGVuYW5jZQ0KZWZmb3J0IGlzIHJlbGF0aXZlbHkgc21hbGwuIFdlIG11c3Qgb25seSBhZGQgY29k ZSBpZiBpdCBhZGRzIHZhbHVlLg0KDQo+ICBhbmQgbWF5IHVsdGltYXRlbHkgbWFrZQ0KPiB0aGlu Z3MgYSBiaXQgc2ltcGxlciBieSBoZWxwaW5nIHRvIGRvY3VtZW50IGFuZCB2ZXJpZnkgdGhlIGNo YW5nZXMuDQoNClllcy4gRGVmaW5pdGVseS4gQnV0IHdlIG11c3QgbmV2ZXIgZGVueSB0aGF0IGFs bCBhZGRlZCAodGVzdCkgY29kZSBhZGRzDQp3b3JrLiBBbmQgZG8gd2VpZ2hpbmcgcHJvcyBhbiBj b25zIG9ubHkgYWZ0ZXIgdGhhdC4gRGFuZ2VyIG9mIFVUcyBpcw0KdGhhdCB3ZSBkb24ndCBhZG1p dCB0aGUgY29ucy4NCg0KPiBBIGZldyBvdGhlciBub3RlcyBpbmxpbmU6DQo+IA0KPiA+IE9uIFR1 ZSwgMjAyMC0wNC0wNyBhdCAyMDo1NiAtMDcwMCwgU3RlcGhlbiBCb3lkIHdyb3RlOg0KPiA+ID4g VGVzdCB2YXJpb3VzIHBhcnRzIG9mIHRoZSBjbGsgZ2F0ZSBpbXBsZW1lbnRhdGlvbiB3aXRoIHRo ZSBrdW5pdA0KPiA+ID4gdGVzdGluZw0KPiA+ID4gZnJhbWV3b3JrLg0KPiA+ID4gDQo+ID4gPiBD YzogQnJlbmRhbiBIaWdnaW5zIDxicmVuZGFuaGlnZ2luc0Bnb29nbGUuY29tPg0KPiA+ID4gQ2M6 IDxrdW5pdC1kZXZAZ29vZ2xlZ3JvdXBzLmNvbT4NCj4gPiA+IFNpZ25lZC1vZmYtYnk6IFN0ZXBo ZW4gQm95ZCA8c2JveWRAa2VybmVsLm9yZz4NCj4gPiA+IC0tLQ0KPiA+ID4gDQo+ID4gPiBUaGlz IHBhdGNoIGlzIG9uIHRvcCBvZiB0aGlzIHNlcmllc1sxXSB0aGF0IGFsbG93cyB0aGUgY2xrDQo+ ID4gPiBmcmFtZXdvcmsgdG8gYmUgc2VsZWN0ZWQgYnkgS2NvbmZpZyBsYW5ndWFnZS4NCj4gPiA+ IA0KPiA+ID4gWzFdDQo+ID4gPiBodHRwczovL2xvcmUua2VybmVsLm9yZy9yLzIwMjAwNDA1MDI1 MTIzLjE1NDY4OC0xLXNib3lkQGtlcm5lbC5vcmcNCj4gPiA+IA0KPiA+ID4gIGRyaXZlcnMvY2xr L0tjb25maWcgICAgICAgICB8ICAgOCArDQo+ID4gPiAgZHJpdmVycy9jbGsvTWFrZWZpbGUgICAg ICAgIHwgICAxICsNCj4gPiA+ICBkcml2ZXJzL2Nsay9jbGstZ2F0ZS10ZXN0LmMgfCA0ODENCj4g PiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ID4gIDMgZmlsZXMg Y2hhbmdlZCwgNDkwIGluc2VydGlvbnMoKykNCj4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9jbGsvY2xrLWdhdGUtdGVzdC5jDQo+ID4gPiANCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2Nsay9LY29uZmlnIGIvZHJpdmVycy9jbGsvS2NvbmZpZw0KPiA+ID4gaW5kZXggNmVhMDYz MWUzOTU2Li42NjE5MzY3M2JjZGYgMTAwNjQ0DQo+ID4gPiAtLS0gYS9kcml2ZXJzL2Nsay9LY29u ZmlnDQo+ID4gPiArKysgYi9kcml2ZXJzL2Nsay9LY29uZmlnDQo+ID4gPiBAQCAtMzc3LDQgKzM3 NywxMiBAQCBzb3VyY2UgImRyaXZlcnMvY2xrL3RpL0tjb25maWciDQo+ID4gPiAgc291cmNlICJk cml2ZXJzL2Nsay91bmlwaGllci9LY29uZmlnIg0KPiA+ID4gIHNvdXJjZSAiZHJpdmVycy9jbGsv enlucW1wL0tjb25maWciDQo+ID4gPiANCj4gPiA+ICsjIEt1bml0IHRlc3QgY2FzZXMNCj4gPiA+ ICtjb25maWcgQ0xLX0dBVEVfVEVTVA0KPiA+ID4gKyAgICAgdHJpc3RhdGUgIkJhc2ljIGdhdGUg dHlwZSBLdW5pdCB0ZXN0Ig0KPiA+ID4gKyAgICAgZGVwZW5kcyBvbiBLVU5JVA0KPiA+ID4gKyAg ICAgZGVmYXVsdCBLVU5JVA0KPiA+ID4gKyAgICAgaGVscA0KPiA+ID4gKyAgICAgICBLdW5pdCB0 ZXN0IGZvciB0aGUgYmFzaWMgY2xrIGdhdGUgdHlwZS4NCj4gPiA+ICsNCj4gPiA+ICBlbmRpZg0K PiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2xrL01ha2VmaWxlIGIvZHJpdmVycy9jbGsvTWFr ZWZpbGUNCj4gPiA+IGluZGV4IGY0MTY5Y2MyZmQzMS4uMDc4NTA5Mjg4MGZkIDEwMDY0NA0KPiA+ ID4gLS0tIGEvZHJpdmVycy9jbGsvTWFrZWZpbGUNCj4gPiA+ICsrKyBiL2RyaXZlcnMvY2xrL01h a2VmaWxlDQo+ID4gPiBAQCAtNyw2ICs3LDcgQEAgb2JqLSQoQ09ORklHX0NPTU1PTl9DTEspICAg ICAgKz0gY2xrLWRpdmlkZXIubw0KPiA+ID4gIG9iai0kKENPTkZJR19DT01NT05fQ0xLKSAgICAg Kz0gY2xrLWZpeGVkLWZhY3Rvci5vDQo+ID4gPiAgb2JqLSQoQ09ORklHX0NPTU1PTl9DTEspICAg ICArPSBjbGstZml4ZWQtcmF0ZS5vDQo+ID4gPiAgb2JqLSQoQ09ORklHX0NPTU1PTl9DTEspICAg ICArPSBjbGstZ2F0ZS5vDQo+ID4gPiArb2JqLSQoQ09ORklHX0NMS19HQVRFX1RFU1QpICArPSBj bGstZ2F0ZS10ZXN0Lm8NCj4gPiA+ICBvYmotJChDT05GSUdfQ09NTU9OX0NMSykgICAgICs9IGNs ay1tdWx0aXBsaWVyLm8NCj4gPiA+ICBvYmotJChDT05GSUdfQ09NTU9OX0NMSykgICAgICs9IGNs ay1tdXgubw0KPiA+ID4gIG9iai0kKENPTkZJR19DT01NT05fQ0xLKSAgICAgKz0gY2xrLWNvbXBv c2l0ZS5vDQo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9jbGsvY2xrLWdhdGUtdGVzdC5jIGIv ZHJpdmVycy9jbGsvY2xrLWdhdGUtDQo+ID4gPiB0ZXN0LmMNCj4gPiA+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+ID4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLmIxZDZjMjFlOTY5OA0KPiA+ID4gLS0t IC9kZXYvbnVsbA0KPiA+ID4gKysrIGIvZHJpdmVycy9jbGsvY2xrLWdhdGUtdGVzdC5jDQo+ID4g PiBAQCAtMCwwICsxLDQ4MSBAQA0KPiA+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wDQo+ID4gPiArLyoNCj4gPiA+ICsgKiBLVW5pdCB0ZXN0IGZvciBjbGsgZ2F0ZSBiYXNp YyB0eXBlDQo+ID4gPiArICovDQo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPg0KPiA+ID4g KyNpbmNsdWRlIDxsaW51eC9jbGstcHJvdmlkZXIuaD4NCj4gPiA+ICsjaW5jbHVkZSA8bGludXgv cGxhdGZvcm1fZGV2aWNlLmg+DQo+ID4gPiArDQo+ID4gPiArI2luY2x1ZGUgPGt1bml0L3Rlc3Qu aD4NCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgdm9pZCBjbGtfZ2F0ZV9yZWdpc3Rlcl90ZXN0X2Rl dihzdHJ1Y3Qga3VuaXQgKnRlc3QpDQo+ID4gPiArew0KPiA+ID4gKyAgICAgc3RydWN0IGNsa19o dyAqcmV0Ow0KPiA+ID4gKyAgICAgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjsNCj4gPiA+ ICsNCj4gPiA+ICsgICAgIHBkZXYgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfc2ltcGxlKCJ0 ZXN0X2dhdGVfZGV2aWNlIiwNCj4gPiA+IC0xLA0KPiA+ID4gTlVMTCwgMCk7DQo+ID4gPiArICAg ICBLVU5JVF9BU1NFUlRfTk9UX0VSUl9PUl9OVUxMKHRlc3QsIHBkZXYpOw0KPiA+ID4gKw0KPiA+ ID4gKyAgICAgcmV0ID0gY2xrX2h3X3JlZ2lzdGVyX2dhdGUoJnBkZXYtPmRldiwgInRlc3RfZ2F0 ZSIsIE5VTEwsDQo+ID4gPiAwLA0KPiA+ID4gTlVMTCwNCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDAsIDAsIE5VTEwpOw0KPiA+ID4gKyAgICAgS1VOSVRfRVhQRUNUX05P VF9FUlJfT1JfTlVMTCh0ZXN0LCByZXQpOw0KPiA+ID4gKyAgICAgS1VOSVRfRVhQRUNUX1NUUkVR KHRlc3QsICJ0ZXN0X2dhdGUiLA0KPiA+ID4gY2xrX2h3X2dldF9uYW1lKHJldCkpOw0KPiA+ID4g KyAgICAgS1VOSVRfRVhQRUNUX0VRKHRlc3QsIDBVTCwgY2xrX2h3X2dldF9mbGFncyhyZXQpKTsN Cj4gPiA+ICsNCj4gPiA+ICsgICAgIGNsa19od191bnJlZ2lzdGVyX2dhdGUocmV0KTsNCj4gPiA+ ICsgICAgIHBsYXRmb3JtX2RldmljZV9wdXQocGRldik7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ ID4gK3N0YXRpYyB2b2lkIGNsa19nYXRlX3JlZ2lzdGVyX3Rlc3RfcGFyZW50X25hbWVzKHN0cnVj dCBrdW5pdA0KPiA+ID4gKnRlc3QpDQo+ID4gPiArew0KPiA+ID4gKyAgICAgc3RydWN0IGNsa19o dyAqcGFyZW50Ow0KPiA+ID4gKyAgICAgc3RydWN0IGNsa19odyAqcmV0Ow0KPiA+ID4gKw0KPiA+ ID4gKyAgICAgcGFyZW50ID0gY2xrX2h3X3JlZ2lzdGVyX2ZpeGVkX3JhdGUoTlVMTCwgInRlc3Rf cGFyZW50IiwNCj4gPiA+IE5VTEwsDQo+ID4gPiAwLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMTAwMDAwMCk7DQo+ID4gPiArICAgICBLVU5JVF9BU1NF UlRfTk9UX0VSUl9PUl9OVUxMKHRlc3QsIHBhcmVudCk7DQo+ID4gPiArDQo+ID4gPiArICAgICBy ZXQgPSBjbGtfaHdfcmVnaXN0ZXJfZ2F0ZShOVUxMLCAidGVzdF9nYXRlIiwNCj4gPiA+ICJ0ZXN0 X3BhcmVudCIsIDAsDQo+ID4gPiBOVUxMLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMCwgMCwgTlVMTCk7DQo+ID4gPiArICAgICBLVU5JVF9BU1NFUlRfTk9UX0VSUl9P Ul9OVUxMKHRlc3QsIHJldCk7DQo+ID4gPiArICAgICBLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3Qs IHBhcmVudCwgY2xrX2h3X2dldF9wYXJlbnQocmV0KSk7DQo+ID4gPiArDQo+ID4gPiArICAgICBj bGtfaHdfdW5yZWdpc3Rlcl9nYXRlKHJldCk7DQo+ID4gPiArICAgICBjbGtfaHdfdW5yZWdpc3Rl cl9maXhlZF9yYXRlKHBhcmVudCk7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyB2 b2lkIGNsa19nYXRlX3JlZ2lzdGVyX3Rlc3RfcGFyZW50X2RhdGEoc3RydWN0IGt1bml0DQo+ID4g PiAqdGVzdCkNCj4gPiA+ICt7DQo+ID4gPiArICAgICBzdHJ1Y3QgY2xrX2h3ICpwYXJlbnQ7DQo+ ID4gPiArICAgICBzdHJ1Y3QgY2xrX2h3ICpyZXQ7DQo+ID4gPiArICAgICBzdHJ1Y3QgY2xrX3Bh cmVudF9kYXRhIHBkYXRhID0geyB9Ow0KPiA+ID4gKw0KPiA+ID4gKyAgICAgcGFyZW50ID0gY2xr X2h3X3JlZ2lzdGVyX2ZpeGVkX3JhdGUoTlVMTCwgInRlc3RfcGFyZW50IiwNCj4gPiA+IE5VTEws DQo+ID4gPiAwLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMTAwMDAwMCk7DQo+ID4gPiArICAgICBLVU5JVF9BU1NFUlRfTk9UX0VSUl9PUl9OVUxMKHRl c3QsIHBhcmVudCk7DQo+ID4gPiArICAgICBwZGF0YS5odyA9IHBhcmVudDsNCj4gPiA+ICsNCj4g PiA+ICsgICAgIHJldCA9IGNsa19od19yZWdpc3Rlcl9nYXRlX3BhcmVudF9kYXRhKE5VTEwsICJ0 ZXN0X2dhdGUiLA0KPiA+ID4gJnBkYXRhLCAwLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwgMCwgTlVMTCk7DQo+ID4gPiArICAgICBL VU5JVF9BU1NFUlRfTk9UX0VSUl9PUl9OVUxMKHRlc3QsIHJldCk7DQo+ID4gPiArICAgICBLVU5J VF9FWFBFQ1RfUFRSX0VRKHRlc3QsIHBhcmVudCwgY2xrX2h3X2dldF9wYXJlbnQocmV0KSk7DQo+ ID4gPiArDQo+ID4gPiArICAgICBjbGtfaHdfdW5yZWdpc3Rlcl9nYXRlKHJldCk7DQo+ID4gPiAr ICAgICBjbGtfaHdfdW5yZWdpc3Rlcl9maXhlZF9yYXRlKHBhcmVudCk7DQo+ID4gPiArfQ0KPiA+ ID4gKw0KPiA+ID4gK3N0YXRpYyB2b2lkIGNsa19nYXRlX3JlZ2lzdGVyX3Rlc3RfcGFyZW50X2Rh dGFfbGVnYWN5KHN0cnVjdA0KPiA+ID4ga3VuaXQNCj4gPiA+ICp0ZXN0KQ0KPiA+ID4gK3sNCj4g PiA+ICsgICAgIHN0cnVjdCBjbGtfaHcgKnBhcmVudDsNCj4gPiA+ICsgICAgIHN0cnVjdCBjbGtf aHcgKnJldDsNCj4gPiA+ICsgICAgIHN0cnVjdCBjbGtfcGFyZW50X2RhdGEgcGRhdGEgPSB7IH07 DQo+ID4gPiArDQo+ID4gPiArICAgICBwYXJlbnQgPSBjbGtfaHdfcmVnaXN0ZXJfZml4ZWRfcmF0 ZShOVUxMLCAidGVzdF9wYXJlbnQiLA0KPiA+ID4gTlVMTCwNCj4gPiA+IDAsDQo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDAwMDAwKTsNCj4gPiA+ICsg ICAgIEtVTklUX0FTU0VSVF9OT1RfRVJSX09SX05VTEwodGVzdCwgcGFyZW50KTsNCj4gPiA+ICsg ICAgIHBkYXRhLm5hbWUgPSAidGVzdF9wYXJlbnQiOw0KPiA+ID4gKw0KPiA+ID4gKyAgICAgcmV0 ID0gY2xrX2h3X3JlZ2lzdGVyX2dhdGVfcGFyZW50X2RhdGEoTlVMTCwgInRlc3RfZ2F0ZSIsDQo+ ID4gPiAmcGRhdGEsIDAsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBOVUxMLCAwLCAwLCBOVUxMKTsNCj4gPiA+ICsgICAgIEtVTklUX0FTU0VSVF9O T1RfRVJSX09SX05VTEwodGVzdCwgcmV0KTsNCj4gPiA+ICsgICAgIEtVTklUX0VYUEVDVF9QVFJf RVEodGVzdCwgcGFyZW50LCBjbGtfaHdfZ2V0X3BhcmVudChyZXQpKTsNCj4gPiA+ICsNCj4gPiA+ ICsgICAgIGNsa19od191bnJlZ2lzdGVyX2dhdGUocmV0KTsNCj4gPiA+ICsgICAgIGNsa19od191 bnJlZ2lzdGVyX2ZpeGVkX3JhdGUocGFyZW50KTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiAr c3RhdGljIHZvaWQgY2xrX2dhdGVfcmVnaXN0ZXJfdGVzdF9wYXJlbnRfaHcoc3RydWN0IGt1bml0 ICp0ZXN0KQ0KPiA+ID4gK3sNCj4gPiA+ICsgICAgIHN0cnVjdCBjbGtfaHcgKnBhcmVudDsNCj4g PiA+ICsgICAgIHN0cnVjdCBjbGtfaHcgKnJldDsNCj4gPiA+ICsNCj4gPiA+ICsgICAgIHBhcmVu dCA9IGNsa19od19yZWdpc3Rlcl9maXhlZF9yYXRlKE5VTEwsICJ0ZXN0X3BhcmVudCIsDQo+ID4g PiBOVUxMLA0KPiA+ID4gMCwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDEwMDAwMDApOw0KPiA+ID4gKyAgICAgS1VOSVRfQVNTRVJUX05PVF9FUlJfT1Jf TlVMTCh0ZXN0LCBwYXJlbnQpOw0KPiA+ID4gKw0KPiA+ID4gKyAgICAgcmV0ID0gY2xrX2h3X3Jl Z2lzdGVyX2dhdGVfcGFyZW50X2h3KE5VTEwsICJ0ZXN0X2dhdGUiLA0KPiA+ID4gcGFyZW50LA0K PiA+ID4gMCwgTlVMTCwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAwLCAwLCBOVUxMKTsNCj4gPiA+ICsgICAgIEtVTklUX0FTU0VSVF9OT1RfRVJSX09S X05VTEwodGVzdCwgcmV0KTsNCj4gPiA+ICsgICAgIEtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwg cGFyZW50LCBjbGtfaHdfZ2V0X3BhcmVudChyZXQpKTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgIGNs a19od191bnJlZ2lzdGVyX2dhdGUocmV0KTsNCj4gPiA+ICsgICAgIGNsa19od191bnJlZ2lzdGVy X2ZpeGVkX3JhdGUocGFyZW50KTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIHZv aWQgY2xrX2dhdGVfcmVnaXN0ZXJfdGVzdF9oaXdvcmRfaW52YWxpZChzdHJ1Y3Qga3VuaXQNCj4g PiA+ICp0ZXN0KQ0KPiA+ID4gK3sNCj4gPiA+ICsgICAgIHN0cnVjdCBjbGtfaHcgKnJldDsNCj4g PiA+ICsNCj4gPiA+ICsgICAgIHJldCA9IGNsa19od19yZWdpc3Rlcl9nYXRlKE5VTEwsICJ0ZXN0 X2dhdGUiLCBOVUxMLCAwLA0KPiA+ID4gTlVMTCwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDIwLCBDTEtfR0FURV9ISVdPUkRfTUFTSywgTlVMTCk7DQo+ID4gPiArDQo+ ID4gPiArICAgICBLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBJU19FUlIocmV0KSk7DQo+ID4gPiAr fQ0KPiA+IA0KPiA+IERvIHdlIHJlYWxseSBuZWVkIGFsbCB0aGVzZSByZWdpc3RyYXRpb24gdGVz dHM/IEkgZ3Vlc3MgbW9zdCBvZiB0aGUNCj4gPiBjb2RlIHBhdGggd291bGQgYmUgdGVzdGVkIGJ5 IGp1c3Qgb25lIG9mIHRoZXNlIC0gaG93IG11Y2ggdmFsdWUgd2UNCj4gPiBhZGQNCj4gPiBieSBh ZGRpbmcgcmVzdCBvZiB0aGUgcmVnaXN0cmF0aW9uIGNhc2VzPyAoanVzdCB3b25kZXJpbmcpDQo+ ID4gDQo+IA0KPiBUaGUgYWR2YW50YWdlIG9mIGhhdmluZyBtdWx0aXBsZSB0ZXN0cyBoZXJlIGlz IHRoYXQgaXQncyByZWFsbHkNCj4gb2J2aW91cyBpZiBqdXN0IG9uZSBvZiB0aGVzZSBmdW5jdGlv biBicmVha3M6IHRoYXQncyBwcm9iYWJseSBub3QNCj4gZW5vcm1vdXNseSBsaWtlbHksDQoNCk15 IHBvaW50IGV4YWN0bHkuDQoNCj4gIGJ1dCB0aGVyZSdzIGFsc28gbm90IG11Y2ggb2YgYSBjb3N0 IHRvIGhhdmluZyB0aGVtDQoNCkFuZCB0aGlzIGlzIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBlcXVh dGlvbi4gQW5kIEkgbGVhdmUgdGhpcyBlc3RpbWF0aW9uDQp0byBvdGhlcnMgLSBJIGp1c3Qgd2Fu dCB0byBwb2ludCBvdXQgdGhhdCBpbWJhbGFuY2UgaW4gdGhpcyBlcXVhdGlvbiBpcw0Kd2hhdCB1 c3VhbGx5IGxlYWRzIHRvIHdyaXRpbmcgZXhjZXNzaXZlIGFtb3VudHMgb2YgdGVzdHMgLSB3aGlj aA0KZXZlbnR1YWxseSBqdXN0IGhpbmRlcnMgZGV2ZWxvcG1lbnQgd2l0aCBsaXR0bGUgb3Igbm8g YmVuZWZpdHMuIEJ1dCBhcw0KSSBzYWlkLCBJIHdpbGwgbGVhdmUgdGhpcyB0byBzbWFydGVyIGd1 eXMgdG8gZXZhbHVhdGUuIEp1c3Qgd2FudGVkIHRvDQpwb2ludCBvdXQgdGhhdCB0aGlzIHNob3Vs ZCBiZSBjb25zaWRlcmVkIDopDQoNCj4g4oCUIHRoZXNlIHRlc3Qgd291bGQgcnVuIHByZXR0eSBx dWlja2x5LCBhbmQgd291bGRuJ3QgYmUgdG9vIGV4cGVuc2l2ZQ0KPiB0byBjaGFuZ2UgaW4gdGhl IHVubGlrZWx5IGV2ZW50IHRoYXQgd2FzIG5lY2Vzc2FyeS4NCj4gDQo+ID4gPiArDQo+ID4gPiAr c3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIGNsa19nYXRlX3JlZ2lzdGVyX3Rlc3RfY2FzZXNbXSA9 IHsNCj4gPiA+ICsgICAgIEtVTklUX0NBU0UoY2xrX2dhdGVfcmVnaXN0ZXJfdGVzdF9kZXYpLA0K PiA+ID4gKyAgICAgS1VOSVRfQ0FTRShjbGtfZ2F0ZV9yZWdpc3Rlcl90ZXN0X3BhcmVudF9uYW1l cyksDQo+ID4gPiArICAgICBLVU5JVF9DQVNFKGNsa19nYXRlX3JlZ2lzdGVyX3Rlc3RfcGFyZW50 X2RhdGEpLA0KPiA+ID4gKyAgICAgS1VOSVRfQ0FTRShjbGtfZ2F0ZV9yZWdpc3Rlcl90ZXN0X3Bh cmVudF9kYXRhX2xlZ2FjeSksDQo+ID4gPiArICAgICBLVU5JVF9DQVNFKGNsa19nYXRlX3JlZ2lz dGVyX3Rlc3RfcGFyZW50X2h3KSwNCj4gPiA+ICsgICAgIEtVTklUX0NBU0UoY2xrX2dhdGVfcmVn aXN0ZXJfdGVzdF9oaXdvcmRfaW52YWxpZCksDQo+ID4gPiArICAgICB7fQ0KPiA+ID4gK307DQo+ ID4gPiArDQo+ID4gPiArc3RhdGljIHN0cnVjdCBrdW5pdF9zdWl0ZSBjbGtfZ2F0ZV9yZWdpc3Rl cl90ZXN0X3N1aXRlID0gew0KPiA+ID4gKyAgICAgLm5hbWUgPSAiY2xrLWdhdGUtcmVnaXN0ZXIt dGVzdCIsDQo+ID4gPiArICAgICAudGVzdF9jYXNlcyA9IGNsa19nYXRlX3JlZ2lzdGVyX3Rlc3Rf Y2FzZXMsDQo+ID4gPiArfTsNCj4gPiA+ICsNCj4gPiA+ICtzdHJ1Y3QgY2xrX2dhdGVfdGVzdF9j b250ZXh0IHsNCj4gPiA+ICsgICAgIHZvaWQgX19pb21lbSAqZmFrZV9tZW07DQo+ID4gPiArICAg ICBzdHJ1Y3QgY2xrX2h3ICpodzsNCj4gPiA+ICsgICAgIHN0cnVjdCBjbGtfaHcgKnBhcmVudDsN Cj4gPiA+ICsgICAgIHUzMiBmYWtlX3JlZzsgLyogS2VlcCBhdCBlbmQsIEtBU0FOIGNhbiBkZXRl Y3Qgb3V0IG9mDQo+ID4gPiBib3VuZHMgKi8NCj4gPiA+ICt9Ow0KPiA+ID4gKw0KPiA+ID4gK3N0 YXRpYyBzdHJ1Y3QgY2xrX2dhdGVfdGVzdF9jb250ZXh0DQo+ID4gPiAqY2xrX2dhdGVfdGVzdF9h bGxvY19jdHgoc3RydWN0DQo+ID4gPiBrdW5pdCAqdGVzdCkNCj4gPiA+ICt7DQo+ID4gPiArICAg ICBzdHJ1Y3QgY2xrX2dhdGVfdGVzdF9jb250ZXh0ICpjdHg7DQo+ID4gPiArDQo+ID4gPiArICAg ICB0ZXN0LT5wcml2ID0gY3R4ID0ga3phbGxvYyhzaXplb2YoKmN0eCksIEdGUF9LRVJORUwpOw0K PiA+ID4gKyAgICAgS1VOSVRfQVNTRVJUX05PVF9FUlJfT1JfTlVMTCh0ZXN0LCBjdHgpOw0KPiA+ ID4gKyAgICAgY3R4LT5mYWtlX21lbSA9ICh2b2lkIF9fZm9yY2UgX19pb21lbSAqKSZjdHgtPmZh a2VfcmVnOw0KPiA+ID4gKw0KPiA+ID4gKyAgICAgcmV0dXJuIGN0eDsNCj4gPiA+ICt9DQo+ID4g PiArDQo+ID4gPiArc3RhdGljIHZvaWQgY2xrX2dhdGVfdGVzdF9wYXJlbnRfcmF0ZShzdHJ1Y3Qg a3VuaXQgKnRlc3QpDQo+ID4gPiArew0KPiA+ID4gKyAgICAgc3RydWN0IGNsa19nYXRlX3Rlc3Rf Y29udGV4dCAqY3R4ID0gdGVzdC0+cHJpdjsNCj4gPiA+ICsgICAgIHN0cnVjdCBjbGtfaHcgKnBh cmVudCA9IGN0eC0+cGFyZW50Ow0KPiA+ID4gKyAgICAgc3RydWN0IGNsa19odyAqaHcgPSBjdHgt Pmh3Ow0KPiA+ID4gKyAgICAgdW5zaWduZWQgbG9uZyBwcmF0ZSA9IGNsa19od19nZXRfcmF0ZShw YXJlbnQpOw0KPiA+ID4gKyAgICAgdW5zaWduZWQgbG9uZyByYXRlID0gY2xrX2h3X2dldF9yYXRl KGh3KTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgIEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBwcmF0ZSwg cmF0ZSk7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyB2b2lkIGNsa19nYXRlX3Rl c3RfZW5hYmxlKHN0cnVjdCBrdW5pdCAqdGVzdCkNCj4gPiA+ICt7DQo+ID4gPiArICAgICBzdHJ1 Y3QgY2xrX2dhdGVfdGVzdF9jb250ZXh0ICpjdHggPSB0ZXN0LT5wcml2Ow0KPiA+ID4gKyAgICAg c3RydWN0IGNsa19odyAqcGFyZW50ID0gY3R4LT5wYXJlbnQ7DQo+ID4gPiArICAgICBzdHJ1Y3Qg Y2xrX2h3ICpodyA9IGN0eC0+aHc7DQo+ID4gPiArICAgICBzdHJ1Y3QgY2xrICpjbGsgPSBody0+ Y2xrOw0KPiA+ID4gKyAgICAgaW50IHJldDsNCj4gPiA+ICsgICAgIHUzMiBlbmFibGVfdmFsID0g QklUKDUpOw0KPiA+ID4gKw0KPiA+ID4gKyAgICAgcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGNs ayk7DQo+ID4gPiArICAgICBLVU5JVF9BU1NFUlRfRVEodGVzdCwgcmV0LCAwKTsNCj4gPiA+ICsN Cj4gPiA+ICsgICAgIEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBlbmFibGVfdmFsLCBjdHgtPmZha2Vf cmVnKTsNCj4gPiA+ICsgICAgIEtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIGNsa19od19pc19lbmFi bGVkKGh3KSk7DQo+ID4gPiArICAgICBLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBjbGtfaHdfaXNf cHJlcGFyZWQoaHcpKTsNCj4gPiA+ICsgICAgIEtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIGNsa19o d19pc19lbmFibGVkKHBhcmVudCkpOw0KPiA+ID4gKyAgICAgS1VOSVRfRVhQRUNUX1RSVUUodGVz dCwgY2xrX2h3X2lzX3ByZXBhcmVkKHBhcmVudCkpOw0KPiA+ID4gK30NCj4gPiANCj4gPiBJcyB0 aGlzIHJlYWxseSBuZWNlc3Nhcnk/IFdvdWxkbid0IG1vc3Qgb2YgdGhpcyBiZSB0ZXN0ZWQgYnkN Cj4gPiBjbGtfZ2F0ZV90ZXN0X2Rpc2FibGUoKT8NCj4gPiANCj4gDQo+IFdoaWxlIF9lbmFibGUg YW5kIF9kaXNhYmxlIGFyZSBsaWtlbHkgcHJldHR5IHNpbWlsYXIsIGhhdmluZyBib3RoDQo+IHRl c3RzIGhlcmUgd291bGQgY2F0Y2ggdGhpbmdzIGxpa2UgY29weS1wYXN0ZSBidWdzIGZyb20gb25l IHRvIHRoZQ0KPiBvdGhlciwgd2hpY2ggaXMgcHJvYmFibHkgd29ydGggdGhlIGV4dHJhIHRlc3Qu IFBhcnRpY3VsYXJseSBnaXZlbg0KPiB0aGF0DQo+IGJhc2ljYWxseSBhbGwgb2YgdGhlIGZ1bmN0 aW9ucyB0ZXN0ZWQgYXJlIGFjdHVhbGx5IGRpZmZlcmVudA0KPiBmdW5jdGlvbnMuDQoNClRoZSBk aXNhYmxlIHRlc3QgYWxyZWFkeSBkb2VzIHRoZSBlbmFibGUuIEp1c3QgYWRkaW5nIGFub3RoZXIg c2V0IG9mDQpzdGF0ZSBjaGVja3MgYmVmb3JlIGRpc2FibGUgd291bGQgdmVyaWZ5IHdob2xlIHRo aW5nLCByaWdodD8gU28sIGlmIEkNCmFtIG5vdCBtaXN0YWtlbiB0aGVuIC0gYnkgbWluaW11bSAt IHRoZXNlIGNvdWxkIGJlIHRlc3RlZCBhdCBvbmUgZ28uDQooSWYgYmVpbmcgYmVuZWZpY2lhbCBh dCBhbGwpLg0KDQo+ID4gPiArDQo+ID4gPiArc3RhdGljIHZvaWQgY2xrX2dhdGVfdGVzdF9kaXNh YmxlKHN0cnVjdCBrdW5pdCAqdGVzdCkNCj4gPiA+ICt7DQo+ID4gPiArICAgICBzdHJ1Y3QgY2xr X2dhdGVfdGVzdF9jb250ZXh0ICpjdHggPSB0ZXN0LT5wcml2Ow0KPiA+ID4gKyAgICAgc3RydWN0 IGNsa19odyAqcGFyZW50ID0gY3R4LT5wYXJlbnQ7DQo+ID4gPiArICAgICBzdHJ1Y3QgY2xrX2h3 ICpodyA9IGN0eC0+aHc7DQo+ID4gPiArICAgICBzdHJ1Y3QgY2xrICpjbGsgPSBody0+Y2xrOw0K PiA+ID4gKyAgICAgaW50IHJldDsNCj4gPiA+ICsgICAgIHUzMiBlbmFibGVfdmFsID0gQklUKDUp Ow0KPiA+ID4gKyAgICAgdTMyIGRpc2FibGVfdmFsID0gMDsNCj4gPiA+ICsNCj4gPiA+ICsgICAg IHJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShjbGspOw0KPiA+ID4gKyAgICAgS1VOSVRfQVNTRVJU X0VRKHRlc3QsIHJldCwgMCk7DQo+ID4gPiArICAgICBLVU5JVF9BU1NFUlRfRVEodGVzdCwgZW5h YmxlX3ZhbCwgY3R4LT5mYWtlX3JlZyk7DQo+ID4gPiArDQo+ID4gPiArICAgICBjbGtfZGlzYWJs ZV91bnByZXBhcmUoY2xrKTsNCj4gPiA+ICsgICAgIEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBkaXNh YmxlX3ZhbCwgY3R4LT5mYWtlX3JlZyk7DQo+ID4gPiArICAgICBLVU5JVF9FWFBFQ1RfRkFMU0Uo dGVzdCwgY2xrX2h3X2lzX2VuYWJsZWQoaHcpKTsNCj4gPiA+ICsgICAgIEtVTklUX0VYUEVDVF9G QUxTRSh0ZXN0LCBjbGtfaHdfaXNfcHJlcGFyZWQoaHcpKTsNCj4gPiA+ICsgICAgIEtVTklUX0VY UEVDVF9GQUxTRSh0ZXN0LCBjbGtfaHdfaXNfZW5hYmxlZChwYXJlbnQpKTsNCj4gPiA+ICsgICAg IEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBjbGtfaHdfaXNfcHJlcGFyZWQocGFyZW50KSk7DQo+ ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBjbGtfZ2F0 ZV90ZXN0X2Nhc2VzW10gPSB7DQo+ID4gPiArICAgICBLVU5JVF9DQVNFKGNsa19nYXRlX3Rlc3Rf cGFyZW50X3JhdGUpLA0KPiA+ID4gKyAgICAgS1VOSVRfQ0FTRShjbGtfZ2F0ZV90ZXN0X2VuYWJs ZSksDQo+ID4gPiArICAgICBLVU5JVF9DQVNFKGNsa19nYXRlX3Rlc3RfZGlzYWJsZSksDQo+ID4g PiArICAgICB7fQ0KPiA+ID4gK307DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIGludCBjbGtfZ2F0 ZV90ZXN0X2luaXQoc3RydWN0IGt1bml0ICp0ZXN0KQ0KPiA+ID4gK3sNCj4gPiA+ICsgICAgIHN0 cnVjdCBjbGtfaHcgKnBhcmVudDsNCj4gPiA+ICsgICAgIHN0cnVjdCBjbGtfaHcgKmh3Ow0KPiA+ ID4gKyAgICAgc3RydWN0IGNsa19nYXRlX3Rlc3RfY29udGV4dCAqY3R4Ow0KPiA+ID4gKw0KPiA+ ID4gKyAgICAgY3R4ID0gY2xrX2dhdGVfdGVzdF9hbGxvY19jdHgodGVzdCk7DQo+ID4gPiArICAg ICBwYXJlbnQgPSBjbGtfaHdfcmVnaXN0ZXJfZml4ZWRfcmF0ZShOVUxMLCAidGVzdF9wYXJlbnQi LA0KPiA+ID4gTlVMTCwNCj4gPiA+IDAsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAyMDAwMDAwKTsNCj4gPiA+ICsgICAgIEtVTklUX0FTU0VSVF9OT1Rf RVJSX09SX05VTEwodGVzdCwgcGFyZW50KTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgIGh3ID0gY2xr X2h3X3JlZ2lzdGVyX2dhdGVfcGFyZW50X2h3KE5VTEwsICJ0ZXN0X2dhdGUiLA0KPiA+ID4gcGFy ZW50LA0KPiA+ID4gMCwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGN0eC0+ZmFrZV9tZW0sIDUsIDAsDQo+ID4gPiBOVUxMKTsNCj4gPiA+ICsgICAgIEtV TklUX0FTU0VSVF9OT1RfRVJSX09SX05VTEwodGVzdCwgaHcpOw0KPiA+ID4gKw0KPiA+ID4gKyAg ICAgY3R4LT5odyA9IGh3Ow0KPiA+ID4gKyAgICAgY3R4LT5wYXJlbnQgPSBwYXJlbnQ7DQo+ID4g PiArDQo+ID4gPiArICAgICByZXR1cm4gMDsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArc3Rh dGljIHZvaWQgY2xrX2dhdGVfdGVzdF9leGl0KHN0cnVjdCBrdW5pdCAqdGVzdCkNCj4gPiA+ICt7 DQo+ID4gPiArICAgICBzdHJ1Y3QgY2xrX2dhdGVfdGVzdF9jb250ZXh0ICpjdHggPSB0ZXN0LT5w cml2Ow0KPiA+ID4gKw0KPiA+ID4gKyAgICAgY2xrX2h3X3VucmVnaXN0ZXJfZ2F0ZShjdHgtPmh3 KTsNCj4gPiA+ICsgICAgIGNsa19od191bnJlZ2lzdGVyX2ZpeGVkX3JhdGUoY3R4LT5wYXJlbnQp Ow0KPiA+ID4gKyAgICAga2ZyZWUoY3R4KTsNCj4gPiA+ICt9DQo+ID4gDQo+ID4gQXJlbid0IHRo ZXNlIGluaXQgYW5kIGV4aXQgYWN0dWFsbHkgY292ZXJpbmcgc29tZSBvZiB0aGUgdGhpbmdzDQo+ ID4gdGVzdGVkDQo+ID4gaW4gY2xrX2dhdGVfcmVnaXN0ZXJfdGVzdF9jYXNlcz8gUGVyaGFwcyB3 ZSBjb3VsZCByZWR1Y2Ugc29tZSB0ZXN0cw0KPiA+IG9yDQo+ID4gdXNlIHNvbWUgdGVzdCBmdW5j dGlvbnMgYXMgaW5pdC9leGl0Pw0KPiA+IA0KPiANCj4gTG9naWNhbGx5LCB0aGVzZSBpbml0L2V4 aXQgZnVuY3Rpb25zIGFyZSBub3Qgc3VwcG9zZWQgdG8gYmUgdGVzdGluZw0KPiBhbnl0aGluZyBp biBhbmQgb2YgdGhlbXNlbHZlcywganVzdCBzZXR0aW5nIHVwIHRoZSBlbnZpcm9ubWVudCBmb3IN Cj4gb3RoZXIgdGVzdHMuDQo+IEkgZG8gbGlrZSB0aGUgaWRlYSBvZiByZWR1Y2luZyBjb2RlIGR1 cGxpY2F0aW9uIGJ5LCBzYXksIG1vdmluZyBzb21lDQo+IG9mIHRoZSBjb2RlIGludG8gYSBzZXBh cmF0ZSBoZWxwZXIgZnVuY3Rpb24uIEknbSBhIGxpdHRsZSB3YXJ5IG9mDQo+IGFjdHVhbGx5IHVz aW5nIHRoZSBzYW1lIGZ1bmN0aW9uIGFzIGFuIGluaXQgZnVuY3Rpb24gYXMgYSB0ZXN0OiB0aGF0 DQo+IHNlZW1zIG1vcmUgY29uZnVzaW5nIHRoYW4gdGhlIGR1cGxpY2F0aW9uIHRvIG1lLCBidXQg dGhhdCdzIGp1c3QNCj4gcGVyc29uYWwgcHJlZmVyZW5jZSwgSSB0aGluay4NCj4gDQo+ID4gPiAr DQo+ID4gPiArc3RhdGljIHN0cnVjdCBrdW5pdF9zdWl0ZSBjbGtfZ2F0ZV90ZXN0X3N1aXRlID0g ew0KPiA+ID4gKyAgICAgLm5hbWUgPSAiY2xrLWdhdGUtdGVzdCIsDQo+ID4gPiArICAgICAuaW5p dCA9IGNsa19nYXRlX3Rlc3RfaW5pdCwNCj4gPiA+ICsgICAgIC5leGl0ID0gY2xrX2dhdGVfdGVz dF9leGl0LA0KPiA+ID4gKyAgICAgLnRlc3RfY2FzZXMgPSBjbGtfZ2F0ZV90ZXN0X2Nhc2VzLA0K PiA+ID4gK307DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIHZvaWQgY2xrX2dhdGVfdGVzdF9pbnZl cnRfZW5hYmxlKHN0cnVjdCBrdW5pdCAqdGVzdCkNCj4gPiA+ICt7DQo+ID4gPiArICAgICBzdHJ1 Y3QgY2xrX2dhdGVfdGVzdF9jb250ZXh0ICpjdHggPSB0ZXN0LT5wcml2Ow0KPiA+ID4gKyAgICAg c3RydWN0IGNsa19odyAqcGFyZW50ID0gY3R4LT5wYXJlbnQ7DQo+ID4gPiArICAgICBzdHJ1Y3Qg Y2xrX2h3ICpodyA9IGN0eC0+aHc7DQo+ID4gPiArICAgICBzdHJ1Y3QgY2xrICpjbGsgPSBody0+ Y2xrOw0KPiA+ID4gKyAgICAgaW50IHJldDsNCj4gPiA+ICsgICAgIHUzMiBlbmFibGVfdmFsID0g MDsNCj4gPiA+ICsNCj4gPiA+ICsgICAgIHJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShjbGspOw0K PiA+ID4gKyAgICAgS1VOSVRfQVNTRVJUX0VRKHRlc3QsIHJldCwgMCk7DQo+ID4gPiArDQo+ID4g PiArICAgICBLVU5JVF9FWFBFQ1RfRVEodGVzdCwgZW5hYmxlX3ZhbCwgY3R4LT5mYWtlX3JlZyk7 DQo+ID4gPiArICAgICBLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBjbGtfaHdfaXNfZW5hYmxlZCho dykpOw0KPiA+ID4gKyAgICAgS1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgY2xrX2h3X2lzX3ByZXBh cmVkKGh3KSk7DQo+ID4gPiArICAgICBLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBjbGtfaHdfaXNf ZW5hYmxlZChwYXJlbnQpKTsNCj4gPiA+ICsgICAgIEtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIGNs a19od19pc19wcmVwYXJlZChwYXJlbnQpKTsNCj4gPiA+ICt9DQo+ID4gDQo+ID4gSXMgdGhpcyBy ZWFsbHkgYWRkaW5nIHZhbHVlIGFmdGVyIGNsa19nYXRlX3Rlc3RfaW52ZXJ0X2Rpc2FibGUoKQ0K PiA+IGhhcw0KPiA+IHBhc3NlZD8NCj4gPiANCj4gPiArDQo+ID4gPiArc3RhdGljIHZvaWQgY2xr X2dhdGVfdGVzdF9pbnZlcnRfZGlzYWJsZShzdHJ1Y3Qga3VuaXQgKnRlc3QpDQo+ID4gPiArew0K PiA+ID4gKyAgICAgc3RydWN0IGNsa19nYXRlX3Rlc3RfY29udGV4dCAqY3R4ID0gdGVzdC0+cHJp djsNCj4gPiA+ICsgICAgIHN0cnVjdCBjbGtfaHcgKnBhcmVudCA9IGN0eC0+cGFyZW50Ow0KPiA+ ID4gKyAgICAgc3RydWN0IGNsa19odyAqaHcgPSBjdHgtPmh3Ow0KPiA+ID4gKyAgICAgc3RydWN0 IGNsayAqY2xrID0gaHctPmNsazsNCj4gPiA+ICsgICAgIGludCByZXQ7DQo+ID4gPiArICAgICB1 MzIgZW5hYmxlX3ZhbCA9IDA7DQo+ID4gPiArICAgICB1MzIgZGlzYWJsZV92YWwgPSBCSVQoMTUp Ow0KPiA+ID4gKw0KPiA+ID4gKyAgICAgcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGNsayk7DQo+ ID4gPiArICAgICBLVU5JVF9BU1NFUlRfRVEodGVzdCwgcmV0LCAwKTsNCj4gPiA+ICsgICAgIEtV TklUX0FTU0VSVF9FUSh0ZXN0LCBlbmFibGVfdmFsLCBjdHgtPmZha2VfcmVnKTsNCj4gPiA+ICsN Cj4gPiA+ICsgICAgIGNsa19kaXNhYmxlX3VucHJlcGFyZShjbGspOw0KPiA+ID4gKyAgICAgS1VO SVRfRVhQRUNUX0VRKHRlc3QsIGRpc2FibGVfdmFsLCBjdHgtPmZha2VfcmVnKTsNCj4gPiA+ICsg ICAgIEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBjbGtfaHdfaXNfZW5hYmxlZChodykpOw0KPiA+ ID4gKyAgICAgS1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIGNsa19od19pc19wcmVwYXJlZChodykp Ow0KPiA+ID4gKyAgICAgS1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIGNsa19od19pc19lbmFibGVk KHBhcmVudCkpOw0KPiA+ID4gKyAgICAgS1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIGNsa19od19p c19wcmVwYXJlZChwYXJlbnQpKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIHN0 cnVjdCBrdW5pdF9jYXNlIGNsa19nYXRlX3Rlc3RfaW52ZXJ0X2Nhc2VzW10gPSB7DQo+ID4gPiAr ICAgICBLVU5JVF9DQVNFKGNsa19nYXRlX3Rlc3RfaW52ZXJ0X2VuYWJsZSksDQo+ID4gPiArICAg ICBLVU5JVF9DQVNFKGNsa19nYXRlX3Rlc3RfaW52ZXJ0X2Rpc2FibGUpLA0KPiA+ID4gKyAgICAg e30NCj4gPiA+ICt9Ow0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBpbnQgY2xrX2dhdGVfdGVzdF9p bnZlcnRfaW5pdChzdHJ1Y3Qga3VuaXQgKnRlc3QpDQo+ID4gPiArew0KPiA+ID4gKyAgICAgc3Ry dWN0IGNsa19odyAqcGFyZW50Ow0KPiA+ID4gKyAgICAgc3RydWN0IGNsa19odyAqaHc7DQo+ID4g PiArICAgICBzdHJ1Y3QgY2xrX2dhdGVfdGVzdF9jb250ZXh0ICpjdHg7DQo+ID4gPiArDQo+ID4g PiArICAgICBjdHggPSBjbGtfZ2F0ZV90ZXN0X2FsbG9jX2N0eCh0ZXN0KTsNCj4gPiA+ICsgICAg IHBhcmVudCA9IGNsa19od19yZWdpc3Rlcl9maXhlZF9yYXRlKE5VTEwsICJ0ZXN0X3BhcmVudCIs DQo+ID4gPiBOVUxMLA0KPiA+ID4gMCwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDIwMDAwMDApOw0KPiA+ID4gKyAgICAgS1VOSVRfQVNTRVJUX05PVF9F UlJfT1JfTlVMTCh0ZXN0LCBwYXJlbnQpOw0KPiA+ID4gKw0KPiA+ID4gKyAgICAgY3R4LT5mYWtl X3JlZyA9IEJJVCgxNSk7IC8qIERlZmF1bHQgdG8gb2ZmICovDQo+ID4gPiArICAgICBodyA9IGNs a19od19yZWdpc3Rlcl9nYXRlX3BhcmVudF9odyhOVUxMLCAidGVzdF9nYXRlIiwNCj4gPiA+IHBh cmVudCwNCj4gPiA+IDAsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjdHgtPmZha2VfbWVtLCAxNSwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIENMS19HQVRFX1NFVF9UT19ESVNBQkxFDQo+ID4gPiAsDQo+ID4g PiBOVUxMKTsNCj4gPiA+ICsgICAgIEtVTklUX0FTU0VSVF9OT1RfRVJSX09SX05VTEwodGVzdCwg aHcpOw0KPiA+ID4gKw0KPiA+ID4gKyAgICAgY3R4LT5odyA9IGh3Ow0KPiA+ID4gKyAgICAgY3R4 LT5wYXJlbnQgPSBwYXJlbnQ7DQo+ID4gPiArDQo+ID4gPiArICAgICByZXR1cm4gMDsNCj4gPiA+ ICt9DQo+ID4gDQo+ID4gQXJlbid0IHRoZXNlIGluaXQgYW5kIGV4aXQgYWN0dWFsbHkgY292ZXJp bmcgc29tZSBvZiB0aGUgdGhpbmdzDQo+ID4gdGVzdGVkDQo+ID4gaW4gY2xrX2dhdGVfcmVnaXN0 ZXJfdGVzdF9jYXNlcz8gUGVyaGFwcyB3ZSBjb3VsZCByZWR1Y2Ugc29tZSB0ZXN0cw0KPiA+IG9y DQo+ID4gdXNlIHNvbWUgdGVzdCBmdW5jdGlvbnMgYXMgaW5pdC9leGl0Pw0KPiANCj4gQXMgYWJv dmUsIEkgcGVyc29uYWxseSBsaWtlIGhhdmluZyB0aGUgdGVzdCB2ZXJzaW9ucyBhcyB3ZWxsLCBh cyBpdA0KPiBlbnN1cmVzIHRoYXQgdGhlcmUncyBhdCBsZWFzdCBvbmUgdGVzdCBzaG93aW5nIHRo ZSBmYWlsdXJlIGluIGl0cw0KPiBhY3R1YWwgdGVzdCBmdW5jdGlvbi4gQnV0IHJldXNpbmcgdGhl IGFjdHVhbCBjb2RlIHdvdWxkbid0IGJlIGENCj4gcHJvYmxlbSwgYW5kIGlzIHByb2JhYmx5IGp1 c3QgYSBtYXR0ZXIgb2YgdGFzdGUuDQo+IA0KPiA+IEkgc3RvcHBlZCByZXZpZXdpbmcgaGVyZSAt IEkgdGhpbmsgeW91IGtub3cgd2hhdCBJIHdhcyB1cC10byBhbmQNCj4gPiB5b3UNCj4gPiBhcmUg dGhlIGJlc3QgZXhwZXJ0cyB0byBldmFsdWF0ZSB3aGV0aGVyIHRoZXJlIGlzIHNvbWV0aGluZyB0 bw0KPiA+IHNxdWFzaC9kcm9wIGFsc28gaW4gdGhlIHJlc3Qgb2YgdGhlIHRlc3RzIDopDQo+ID4g DQo+ID4gDQo+ID4gRXBpbG9ndWU6DQo+ID4gDQo+ID4gSW4gZ2VuZXJhbCwgSSB3b3VsZCBiZSB2 ZXJ5IGNhcmVmdWwgd2hlbiBhZGRpbmcgVVQtY29kZSBhbmQgSSB3b3VsZA0KPiA+IHRyeQ0KPiA+ IHRvIG1pbmltaXplIHRoZSByZXF1aXJlZCB0ZXN0IGNoYW5nZXMgd2hlbiBmb3IgZXhhbXBsZSBv bmUgb2YgdGhlDQo+ID4gY2xrDQo+ID4gQVBJcyByZXF1aXJlIGEgY2hhbmdlLiAoSSBrbm93LCB0 aGUgdGVzdCBjaGFuZ2VzIGFyZSBsZWFzdCB0aGluZyB0bw0KPiA+IHdvcnJ5IGlmIHRoZXNlIEFQ SXMgbmVlZCBjaGFuZ2UgLSBidXQgZWZmb3J0IGlzIHN0aWxsIGN1bXVsYXRpdmUNCj4gPiBhbmQg aWYNCj4gPiB3ZSBjYW4gYXZvaWQgc29tZSAtIHdlIHNob3VsZCkuDQo+ID4gDQo+ID4gSSBkb24n dCBtZWFuIHRvIGJlIGRpc3Jlc3BlY3RmdWwuIEkga25vdyBteSBwbGFjZSBpbiB0aGUgZm9vZC1j aGFpbiANCj4gPiA6cA0KPiA+IEJlc2lkZXMsIEkgaGF2ZSBzZWVuIHRoZSBncmVhdCB3b3JrIFN0 ZXBoZW4gaGFzIGJlZW4gZG9pbmcgd2l0aCBjbGsNCj4gPiAtDQo+ID4gYW5kIEkgYmVsaWV2ZSBo ZSBrbm93cyB3aGF0IGhlIGlzIGRvaW5nLiBCdXQgc29tZXRpbWVzIGxpdHRsZQ0KPiA+IHBva2lu Zw0KPiA+IGNhbiBpbnZva2UgbmV3IHRob3VnaHRzIDpncmluOiBZb3UgY2FuIGlnbm9yZSBteSBj b21tZW50cyBpZiB0aGV5DQo+ID4gbWFrZQ0KPiA+IG5vIHNlbnNlIHRvIHlvdS4NCj4gPiANCj4g PiBCZXN0IFJlZ2FyZHMNCj4gPiAgIC0tTWF0dGkNCj4gDQo+IFdoaWxlIEkgb2J2aW91c2x5IHNp dCBtb3JlIG9uIHRoZSAieWVzIiBzaWRlIG9mIHRoZSB1bml0LXRlc3RpbmcNCj4gZmVuY2UsIHlv dSd2ZSBkZWZpbml0ZWx5IHJhaXNlZCBzb21lIGludGVyZXN0aW5nIHBvaW50cy4gUGVyc29uYWxs eSwNCj4gSSdkIHJlYWxseSBsaWtlIHRvIHNlZSB0aGlzIHRlc3QgZ28gaW4gKHdoZXRoZXIgYXMt aXMsIG9yIHdpdGggbWlub3INCj4gYWRqdXN0bWVudHMpLCBidXQgd3JpdGluZyB1cCBhIEtVbml0 ICJ0ZXN0aW5nIHN0eWxlIGd1aWRlIiBvciBzaW1pbGFyDQo+IGlzIG9uIG15IHRvLWRvIGxpc3Qs IGFuZCBJJ20gZGVmaW5pdGVseSBnb2luZyB0byB3YW50IHRvIHRoaW5rIG1vcmUNCj4gYWJvdXQg aG93IGJlc3QgdG8gaGFuZGxlIHNvbWUgb2YgdGhlc2Ugc2l0dWF0aW9ucyAoYW5kIGJldHRlcg0K PiBhcnRpY3VsYXRlIHdoeSkuDQoNCkkgdGhpbmsgdGhpcyB3YXMgbW9yZSBvZiBteSBwb2ludCB0 aGFuIHRyeWluZyB0byBkZW1hbmQgYWN0dWFsIGNoYW5nZXMNCmhlcmUuIFRoYW5rIHlvdSBmb3Ig Y29uc2lkZXJpbmcgdGhpcyEgOikgSXQgaXMgaW1wb3J0YW50IHRvIGFkbWl0IHRoYXQNCl9hbGxf IGNvZGUsIHdoZXRoZXIgdGVzdCBvciBpbXBsZW1lbnRhdGlvbiwgcmVxdWlyZSB3b3JrIGFuZA0K bWFpbnRlbmFuY2UgYW5kIHNsb3cgZG93biBkZXZlbG9wbWVudC4gV2Ugc2hvdWxkIF9hbHdheXNf IGNvbnNpZGVyIGlmDQphZGRpbmcgYSB0ZXN0IGlzIGFjdHVhbGx5IG5lZWRlZCBvciBpZiB3ZSBj b3VsZCBkbyBpdCBzbyB0aGF0IGNvZGUNCmNoYW5nZSByZXF1aXJlIGxlc3MgdGVzdCBjaGFuZ2Vz Lg0KDQpJZiBJIGhhZCBhbGwgdGhlIHBvd2VyIGluIHRoZSB3b3JsZCBJIHdvdWxkIG5ldmVyIGFk ZCBhIHRlc3QgZm9yIGNvZGUNCndoaWNoIGlzIGNsZWFuIGFuZCBzaW1wbGUuIEl0IGlzIGxpa2Vs eSB0byBub3QgYmUgYmVuZWZpY2lhbC4gSSB3b3VsZA0KbW9zdGx5IHV0aWxpemUgVVRzIGF0IHNw b3RzIHdoZXJlIHRoZSBsb2dpYyBpcyBzb21ld2hhdCBjb21wbGV4IGFuZA0KbWFraW5nIGEgYnVn IGlzIGxpa2VseS4gVVRzIGRvIGdyZWF0IGpvYiBmb3IgZXhhbXBsZSBhdCB2ZXJpZnlpbmcgZGF0 YQ0KcGFyc2luZyBmdW5jdGlvbnMgKEkndmUgdm9sdW50YXJpbHkgdGVzdGVkIGJ1bmNoIG9mIG5l dGxpbmsgbWVzc2FnZQ0KcGFyc2luZyBjb2RlIHdpdGggVVRzIGluIHNvbWUgcHJvamVjdHMuIEkg YWxzbyBhZGRlZCB0ZXN0cyBmb3INCmxpbmVhcl9yYW5nZXMgaGVscGVycyBpbiBzZXJpZXMgSSBy ZWNlbnRseSBzdWJtaXR0ZWQuKSBCdXQgVVRzIGFyZSBtb3JlDQpvZiBhIHdhc3RlIHdoZW4gYWRk ZWQgY2FyZWxlc3NseS4gSSBob3BlIHRoZSBVVCBkb2N1bWVudGF0aW9uIHdvdWxkDQphbHNvIGNv dmVyIHRoYXQgZnJvbnQuDQoNClRoYW5rcyBmb3Igb3BlbiBkaXNjdXNzaW9uIQ0KDQpZb3VycywN Ci0tTWF0dGkNCg==