From mboxrd@z Thu Jan 1 00:00:00 1970 From: Amos Kong Subject: Re: [AUTOTEST][PATCH] Add ability to call autotest client tests from kvm tests like a subtest. Date: Tue, 26 Apr 2011 23:08:43 +0800 Message-ID: <20110426142813.GB7430@t400> References: <1303813351-7221-1-git-send-email-jzupka@redhat.com> Reply-To: Amos Kong Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: autotest@test.kernel.org, kvm@vger.kernel.org, kvm-autotest@redhat.com To: =?utf-8?B?SmnFmcOtIMW9dXBrYQ==?= Return-path: Content-Disposition: inline In-Reply-To: <1303813351-7221-1-git-send-email-jzupka@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: autotest-bounces@test.kernel.org Errors-To: autotest-bounces@test.kernel.org List-Id: kvm.vger.kernel.org T24gVHVlLCBBcHIgMjYsIDIwMTEgYXQgMTI6MjI6MzFQTSArMDIwMCwgSmnFmcOtIMW9dXBrYSB3 cm90ZToKPiBFeGFtcGxlIHJ1biBhdXRvdGVzdC9jbGllbnQvbmV0cGVyZjIgbGlrZSBhIHNlcnZl ci4KPiAKPiB0ZXN0LnJ1bnN1YnRlc3QoIm5ldHBlcmYyIiwgdGFnPSJzZXJ2ZXIiLCBzZXJ2ZXJf aXA9aG9zdF9pcCwKPiAgICAgICAgICAgICAgICAgY2xpZW50X2lwPWd1ZXN0X2lwLCByb2xlPSdz ZXJ2ZXInKQo+IAo+IENsaWVudCBwYXJ0IGlzIGNhbGxlZCBpbiBwYXJhbGVsIHRocmVhZCBvbiB2 aXJ0dWFsIG1hY2hpbmUuCj4gCj4gZ3Vlc3QgPSBrdm1fdXRpbHMuVGhyZWFkKGt2bV90ZXN0X3V0 aWxzLnJ1bl9hdXRvdGVzdCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgKHZtLCBzZXNzaW9u LCBjb250cm9sX3BhdGgsIGNvbnRyb2xfYXJncywKPiAgICAgICAgICAgICAgICAgICAgICAgICAg IHRpbWVvdXQsIG91dHB1dGRpciwgcGFyYW1zKSkKPiBndWVzdC5zdGFydCgpCj4gCj4gT24gdGhl IGd1ZXN0IGlzIHJlcXVpcmVkIHRvIGhhdmUgaW5zdGFsbGVkIHRoZSBwcm9ncmFtIG1wc3RhdCBm b3IgbmV0cGVydDIgdGVzdC4KPiBOZXRwZXJmMiB0ZXN0IHdpbGwgYmUgY2hhbmdlZCBvciB3aWxs IGJlIGNyZWF0ZWQgaW4gbmV3IHZlcnNpb24uCj4gCj4gVGhpcyBwYXRjaCBhcmUgbmVjZXNzYXJ5 IHRvIGF2b2lkIG9mIGNyZWF0aW9uIGRvdWJsZSB2ZXJzaW9uIG9mIHRlc3QuCj4gbmV0cGVyZiwg bXVsdGljYXN0LCBldGMuLgoKSXQncyBjb29sIQogCj4gU2lnbmVkLW9mZi1ieTogSmnFmcOtIMW9 dXBrYSA8anp1cGthQHJlZGhhdC5jb20+Cj4gLS0tCj4gIGNsaWVudC9iaW4vY2xpZW50X2xvZ2dp bmdfY29uZmlnLnB5ICAgIHwgICAgNSArLQo+ICBjbGllbnQvYmluL25ldC9uZXRfdXRpbHMucHkg ICAgICAgICAgICB8ICAgMTYgKysrKy0KPiAgY2xpZW50L2NvbW1vbl9saWIvYmFzZV9qb2IucHkg ICAgICAgICAgfCAgICAyICsKPiAgY2xpZW50L2NvbW1vbl9saWIvbG9nZ2luZ19jb25maWcucHkg ICAgfCAgICAzICstCj4gIGNsaWVudC9jb21tb25fbGliL3Rlc3QucHkgICAgICAgICAgICAgIHwg ICAyMSArKysrKystCj4gIGNsaWVudC90ZXN0cy9rdm0vaHRtbF9yZXBvcnQucHkgICAgICAgIHwg IDExNSArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQo+ICBjbGllbnQvdGVzdHMva3Zt L2t2bV90ZXN0X3V0aWxzLnB5ICAgICB8ICAgMTkgKysrKy0tCj4gIGNsaWVudC90ZXN0cy9rdm0v dGVzdHMvc3VidGVzdC5weSAgICAgIHwgICA0MyArKysrKysrKysrKysKPiAgY2xpZW50L3Rlc3Rz L2t2bS90ZXN0c19iYXNlLmNmZy5zYW1wbGUgfCAgIDEwICsrKy0KPiAgY2xpZW50L3Rlc3RzL25l dHBlcmYyL25ldHBlcmYyLnB5ICAgICAgfCAgICAzICstCj4gIDEwIGZpbGVzIGNoYW5nZWQsIDE3 MyBpbnNlcnRpb25zKCspLCA2NCBkZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGNs aWVudC90ZXN0cy9rdm0vdGVzdHMvc3VidGVzdC5weQo+IAo+IGRpZmYgLS1naXQgYS9jbGllbnQv YmluL2NsaWVudF9sb2dnaW5nX2NvbmZpZy5weSBiL2NsaWVudC9iaW4vY2xpZW50X2xvZ2dpbmdf Y29uZmlnLnB5Cj4gaW5kZXggYTU5YjA3OC4uMjhjMDA3ZCAxMDA2NDQKPiAtLS0gYS9jbGllbnQv YmluL2NsaWVudF9sb2dnaW5nX2NvbmZpZy5weQo+ICsrKyBiL2NsaWVudC9iaW4vY2xpZW50X2xv Z2dpbmdfY29uZmlnLnB5Cj4gQEAgLTEyLDggKzEyLDkgQEAgY2xhc3MgQ2xpZW50TG9nZ2luZ0Nv bmZpZyhsb2dnaW5nX2NvbmZpZy5Mb2dnaW5nQ29uZmlnKToKPiAgCj4gIAo+ICAgICAgZGVmIGNv bmZpZ3VyZV9sb2dnaW5nKHNlbGYsIHJlc3VsdHNfZGlyPU5vbmUsIHZlcmJvc2U9RmFsc2UpOgo+ IC0gICAgICAgIHN1cGVyKENsaWVudExvZ2dpbmdDb25maWcsIHNlbGYpLmNvbmZpZ3VyZV9sb2dn aW5nKHVzZV9jb25zb2xlPVRydWUsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyYm9zZT12ZXJib3NlKQo+ICsgICAgICAgIHN1 cGVyKENsaWVudExvZ2dpbmdDb25maWcsIHNlbGYpLmNvbmZpZ3VyZV9sb2dnaW5nKAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9jb25zb2xl PXNlbGYudXNlX2NvbnNvbGUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdmVyYm9zZT12ZXJib3NlKQo+ICAKPiAgICAgICAgICBpZiByZXN1bHRz X2RpcjoKPiAgICAgICAgICAgICAgbG9nX2RpciA9IG9zLnBhdGguam9pbihyZXN1bHRzX2Rpciwg J2RlYnVnJykKPiBkaWZmIC0tZ2l0IGEvY2xpZW50L2Jpbi9uZXQvbmV0X3V0aWxzLnB5IGIvY2xp ZW50L2Jpbi9uZXQvbmV0X3V0aWxzLnB5Cj4gaW5kZXggODY4OTU4Yy4uYWM5YjQ5NCAxMDA2NDQK PiAtLS0gYS9jbGllbnQvYmluL25ldC9uZXRfdXRpbHMucHkKPiArKysgYi9jbGllbnQvYmluL25l dC9uZXRfdXRpbHMucHkKPiBAQCAtNSw3ICs1LDcgQEAgVGhpcyBsaWJyYXJ5IGlzIHRvIHJlbGVh c2UgaW4gdGhlIHB1YmxpYyByZXBvc2l0b3J5Lgo+ICAKPiAgaW1wb3J0IGNvbW1hbmRzLCBvcywg cmUsIHNvY2tldCwgc3lzLCB0aW1lLCBzdHJ1Y3QKPiAgZnJvbSBhdXRvdGVzdF9saWIuY2xpZW50 LmNvbW1vbl9saWIgaW1wb3J0IGVycm9yCj4gLWltcG9ydCB1dGlscwo+ICtmcm9tIGF1dG90ZXN0 X2xpYi5jbGllbnQuY29tbW9uX2xpYiBpbXBvcnQgdXRpbHMKPiAgCj4gIFRJTUVPVVQgPSAxMCAj IFVzZWQgZm9yIHNvY2tldCB0aW1lb3V0IGFuZCBiYXJyaWVyIHRpbWVvdXQKPiAgCj4gQEAgLTI3 LDYgKzI3LDIwIEBAIGNsYXNzIG5ldHdvcmtfdXRpbHMob2JqZWN0KToKPiAgICAgICAgICB1dGls cy5zeXN0ZW0oJy9zYmluL2lmY29uZmlnIC1hJykKPiAgCj4gIAo+ICsgICAgZGVmIGdldF9jb3Jl c3BvbmRfbG9jYWxfaXAoc2VsZiwgcXVlcnlfaXAsIG5ldG1hc2s9IjI0Iik6Cj4gKyAgICAgICAg IiIiCj4gKyAgICAgICAgR2V0IGlwIGFkZHJlc3MgaW4gbG9jYWwgc3lzdGVtIHdoaWNoIGNhbiBj b21tdW5pY2F0ZSB3aXRoIHF1ZXJ0X2lwLgo+ICsKPiArICAgICAgICBAcGFyYW0gcXVlcnlfaXA6 IElQIG9mIGNsaWVudCB3aGljaCB3YW50IGNvbW11bmljYXRlIHdpdGggYXV0b3Rlc3QgbWFjaGlu ZS4KPiArICAgICAgICBAcmV0dXJuOiBJUCBhZGRyZXNzIHdoaWNoIGNhbiBjb21tdW5pY2F0ZSB3 aXRoIHF1ZXJ5X2lwCj4gKyAgICAgICAgIiIiCj4gKyAgICAgICAgaXAgPSB1dGlscy5zeXN0ZW1f b3V0cHV0KCJpcCBhZGRyIHNob3cgdG8gJXMvJXMiICUgKHF1ZXJ5X2lwLCBuZXRtYXNrKSkKPiAr ICAgICAgICBpcCA9IHJlLnNlYXJjaChyImluZXQgKFswLTkuXSopLyIsaXApCj4gKyAgICAgICAg aWYgaXAgaXMgTm9uZToKPiArICAgICAgICAgICAgcmV0dXJuIGlwCj4gKyAgICAgICAgcmV0dXJu IGlwLmdyb3VwKDEpCj4gKwo+ICsKPiAgICAgIGRlZiBkaXNhYmxlX2lwX2xvY2FsX2xvb3BiYWNr KHNlbGYsIGlnbm9yZV9zdGF0dXM9RmFsc2UpOgo+ICAgICAgICAgIHV0aWxzLnN5c3RlbSgiZWNo byAnMScgPiAvcHJvYy9zeXMvbmV0L2lwdjQvcm91dGUvbm9fbG9jYWxfbG9vcGJhY2siLAo+ICAg ICAgICAgICAgICAgICAgICAgICBpZ25vcmVfc3RhdHVzPWlnbm9yZV9zdGF0dXMpCj4gZGlmZiAt LWdpdCBhL2NsaWVudC9jb21tb25fbGliL2Jhc2Vfam9iLnB5IGIvY2xpZW50L2NvbW1vbl9saWIv YmFzZV9qb2IucHkKPiBpbmRleCA4NDNjMGU4Li5lZWY5ZWZjIDEwMDY0NAo+IC0tLSBhL2NsaWVu dC9jb21tb25fbGliL2Jhc2Vfam9iLnB5Cj4gKysrIGIvY2xpZW50L2NvbW1vbl9saWIvYmFzZV9q b2IucHkKPiBAQCAtMTExNyw2ICsxMTE3LDcgQEAgY2xhc3MgYmFzZV9qb2Iob2JqZWN0KToKPiAg ICAgICAgICB0YWdfcGFydHMgPSBbXQo+ICAKPiAgICAgICAgICAjIGJ1aWxkIHVwIHRoZSBwYXJ0 cyBvZiB0aGUgdGFnIHVzZWQgZm9yIHRoZSB0ZXN0IG5hbWUKPiArICAgICAgICBtYXN0ZXJfdGVz dHBhdGggPSBkYXJncy5nZXQoJ21hc3Rlcl90ZXN0cGF0aCcsICIiKQo+ICAgICAgICAgIGJhc2Vf dGFnID0gZGFyZ3MucG9wKCd0YWcnLCBOb25lKQo+ICAgICAgICAgIGlmIGJhc2VfdGFnOgo+ICAg ICAgICAgICAgICB0YWdfcGFydHMuYXBwZW5kKHN0cihiYXNlX3RhZykpCj4gQEAgLTExMzIsNiAr MTEzMyw3IEBAIGNsYXNzIGJhc2Vfam9iKG9iamVjdCk6Cj4gICAgICAgICAgaWYgc3ViZGlyX3Rh ZzoKPiAgICAgICAgICAgICAgdGFnX3BhcnRzLmFwcGVuZChzdWJkaXJfdGFnKQo+ICAgICAgICAg IHN1YmRpciA9ICcuJy5qb2luKFt0ZXN0bmFtZV0gKyB0YWdfcGFydHMpCj4gKyAgICAgICAgc3Vi ZGlyID0gb3MucGF0aC5qb2luKG1hc3Rlcl90ZXN0cGF0aCwgc3ViZGlyKQo+ICAgICAgICAgIHRh ZyA9ICcuJy5qb2luKHRhZ19wYXJ0cykKPiAgCj4gICAgICAgICAgcmV0dXJuIGZ1bGxfdGVzdG5h bWUsIHN1YmRpciwgdGFnCj4gZGlmZiAtLWdpdCBhL2NsaWVudC9jb21tb25fbGliL2xvZ2dpbmdf Y29uZmlnLnB5IGIvY2xpZW50L2NvbW1vbl9saWIvbG9nZ2luZ19jb25maWcucHkKPiBpbmRleCBh ZmU3NTRhLi45MTE0ZDdhIDEwMDY0NAo+IC0tLSBhL2NsaWVudC9jb21tb25fbGliL2xvZ2dpbmdf Y29uZmlnLnB5Cj4gKysrIGIvY2xpZW50L2NvbW1vbl9saWIvbG9nZ2luZ19jb25maWcucHkKPiBA QCAtMzIsOSArMzIsMTAgQEAgY2xhc3MgTG9nZ2luZ0NvbmZpZyhvYmplY3QpOgo+ICAgICAgICAg IGZtdD0nJShhc2N0aW1lKXMgJShsZXZlbG5hbWUpLTUuNXN8ICUobWVzc2FnZSlzJywKPiAgICAg ICAgICBkYXRlZm10PSclSDolTTolUycpCj4gIAo+IC0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgo+ ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIHVzZV9jb25zb2xlPVRydWUpOgo+ICAgICAgICAgIHNl bGYubG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQo+ICAgICAgICAgIHNlbGYuZ2xvYmFsX2xl dmVsID0gbG9nZ2luZy5ERUJVRwo+ICsgICAgICAgIHNlbGYudXNlX2NvbnNvbGUgPSB1c2VfY29u c29sZQo+ICAKPiAgCj4gICAgICBAY2xhc3NtZXRob2QKPiBkaWZmIC0tZ2l0IGEvY2xpZW50L2Nv bW1vbl9saWIvdGVzdC5weSBiL2NsaWVudC9jb21tb25fbGliL3Rlc3QucHkKPiBpbmRleCBjNTVk MjNiLi5iMWEwOTA0IDEwMDY0NAo+IC0tLSBhL2NsaWVudC9jb21tb25fbGliL3Rlc3QucHkKPiAr KysgYi9jbGllbnQvY29tbW9uX2xpYi90ZXN0LnB5Cj4gQEAgLTQ2NSw2ICs0NjUsMjQgQEAgY2xh c3MgYmFzZV90ZXN0KG9iamVjdCk6Cj4gICAgICAgICAgICAgICAgICBzZWxmLmpvYi5lbmFibGVf d2FybmluZ3MoIk5FVFdPUksiKQo+ICAKPiAgCj4gKyAgICBkZWYgcnVuc3VidGVzdChzZWxmLCB1 cmwsICphcmdzLCAqKmRhcmdzKToKPiArICAgICAgICAiIiIKPiArICAgICAgICBUaGlzIGNhbGwg c3VidGVzdCBpbiBydW5uaW5nIHRlc3QuCj4gKwo+ICsgICAgICAgIEBwYXJhbSB0ZXN0OiBQYXJl bnQgdGVzdC4KPiArICAgICAgICBAcGFyYW0gdXJsOiBVcmwgb2YgbmV3IHRlc3QuCj4gKyAgICAg ICAgQHBhcmFtIHRhZzogVGFnIGFkZGVkIHRvIHRlc3QgbmFtZS4KPiArICAgICAgICBAcGFyYW0g YXJnczogQXJncyBmb3Igc3VidGVzdC4KPiArICAgICAgICBAcGFyYW0gZGFyZ3M6IERpc3Rpb25h cnkgYXJncyBmb3Igc3VidGVzdC4KPiArICAgICAgICBAaXRlcmF0aW9uczogTnVtYmVyIG9mIGl0 ZXJhdGlvbiBvZiBzdWJ0ZXN0Lgo+ICsgICAgICAgIEBwcm9maWxlX2lubHk6IElmIHRydWUgbm90 IHByb2ZpbGUuCj4gKyAgICAgICAgIiIiCj4gKyAgICAgICAgZGFyZ3NbInByb2ZpbGVfb25seSJd ID0gZGFyZ3MuZ2V0KCJwcm9maWxlX29ubHkiLCBUcnVlKQo+ICsgICAgICAgIHRlc3RfYmFzZXBh dGggPSBzZWxmLm91dHB1dGRpcltsZW4oc2VsZi5qb2IucmVzdWx0ZGlyICsgIi8iKTpdCj4gKyAg ICAgICAgc2VsZi5qb2IucnVuX3Rlc3QodXJsLCBtYXN0ZXJfdGVzdHBhdGg9dGVzdF9iYXNlcGF0 aCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAqYXJncywgKipkYXJncykKPiArCj4gKwo+ ICBkZWYgX2dldF9ub25zdGFyX2FyZ3MoZnVuYyk6Cj4gICAgICAiIiJFeHRyYWN0IGFsbCB0aGUg KG5vcm1hbCkgZnVuY3Rpb24gcGFyYW1ldGVyIG5hbWVzLgo+ICAKPiBAQCAtNjU4LDcgKzY3Niw4 IEBAIGRlZiBydW50ZXN0KGpvYiwgdXJsLCB0YWcsIGFyZ3MsIGRhcmdzLAo+ICAgICAgICAgIGlm IG5vdCBiaW5kaXI6Cj4gICAgICAgICAgICAgIHJhaXNlIGVycm9yLlRlc3RFcnJvcih0ZXN0bmFt ZSArICc6IHRlc3QgZG9lcyBub3QgZXhpc3QnKQo+ICAKPiAtICAgIG91dHB1dGRpciA9IG9zLnBh dGguam9pbihqb2IucmVzdWx0ZGlyLCB0ZXN0bmFtZSkKPiArICAgIHN1YmRpciA9IG9zLnBhdGgu am9pbihkYXJncy5wb3AoJ21hc3Rlcl90ZXN0cGF0aCcsICIiKSwgdGVzdG5hbWUpCj4gKyAgICBv dXRwdXRkaXIgPSBvcy5wYXRoLmpvaW4oam9iLnJlc3VsdGRpciwgc3ViZGlyKQo+ICAgICAgaWYg dGFnOgo+ICAgICAgICAgIG91dHB1dGRpciArPSAnLicgKyB0YWcKPiAgCj4gZGlmZiAtLWdpdCBh L2NsaWVudC90ZXN0cy9rdm0vaHRtbF9yZXBvcnQucHkgYi9jbGllbnQvdGVzdHMva3ZtL2h0bWxf cmVwb3J0LnB5Cj4gaW5kZXggOGI0YjEwOS4uYmFjNDhiZCAxMDA3NTUKPiAtLS0gYS9jbGllbnQv dGVzdHMva3ZtL2h0bWxfcmVwb3J0LnB5Cj4gKysrIGIvY2xpZW50L3Rlc3RzL2t2bS9odG1sX3Jl cG9ydC5weQo+IEBAIC0xMzgwLDggKzEzODAsNiBAQCBmdW5jdGlvbiBwcm9jZXNzTGlzdCh1bCkg ewo+ICAjIyAgaW5wdXQgYW5kIGNyZWF0ZSBhIHNpbmdsZSBodG1sIGZvcm1hdHRlZCByZXN1bHQg cGFnZS4gICAgICAjIwo+ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+ICAKPiAtc3RpbWVsaXN0ID0gW10KPiAtCj4gIAo+ ICBkZWYgbWFrZV9odG1sX2ZpbGUobWV0YWRhdGEsIHJlc3VsdHMsIHRhZywgaG9zdCwgb3V0cHV0 X2ZpbGVfbmFtZSwgZGlybmFtZSk6Cj4gICAgICBodG1sX3ByZWZpeCA9ICIiIgo+IEBAIC0xNDI3 LDExICsxNDI1LDEyIEBAIHJldHVybiB0cnVlOwo+ICAgICAgdG90YWxfZmFpbGVkID0gMAo+ICAg ICAgdG90YWxfcGFzc2VkID0gMAo+ICAgICAgZm9yIHJlcyBpbiByZXN1bHRzOgo+IC0gICAgICAg IHRvdGFsX2V4ZWN1dGVkICs9IDEKPiAtICAgICAgICBpZiByZXNbJ3N0YXR1cyddID09ICdHT09E JzoKPiAtICAgICAgICAgICAgdG90YWxfcGFzc2VkICs9IDEKPiAtICAgICAgICBlbHNlOgo+IC0g ICAgICAgICAgICB0b3RhbF9mYWlsZWQgKz0gMQo+ICsgICAgICAgIGlmIHJlc3VsdHNbcmVzXVsy XSAhPSBOb25lOgo+ICsgICAgICAgICAgICB0b3RhbF9leGVjdXRlZCArPSAxCj4gKyAgICAgICAg ICAgIGlmIHJlc3VsdHNbcmVzXVsyXVsnc3RhdHVzJ10gPT0gJ0dPT0QnOgo+ICsgICAgICAgICAg ICAgICAgdG90YWxfcGFzc2VkICs9IDEKPiArICAgICAgICAgICAgZWxzZToKPiArICAgICAgICAg ICAgICAgIHRvdGFsX2ZhaWxlZCArPSAxCj4gICAgICBzdGF0X3N0ciA9ICdObyB0ZXN0IGNhc2Vz IGV4ZWN1dGVkJwo+ICAgICAgaWYgdG90YWxfZXhlY3V0ZWQgPiAwOgo+ICAgICAgICAgIGZhaWxl ZF9wZXJjdCA9IGludChmbG9hdCh0b3RhbF9mYWlsZWQpL2Zsb2F0KHRvdGFsX2V4ZWN1dGVkKSox MDApCj4gQEAgLTE0NjgsMzkgKzE0NjcsNDYgQEAgaWQ9InQxIiBjbGFzcz0ic3RhdHMgdGFibGUt YXV0b3NvcnQ6NCB0YWJsZS1hdXRvZmlsdGVyIHRhYmxlLXN0cmlwZWNsYXNzOmFsdGVybmEKPiAg PHRib2R5Pgo+ICAiIiIKPiAgICAgIHByaW50ID4+IG91dHB1dCwgcmVzdWx0X3RhYmxlX3ByZWZp eAo+IC0gICAgZm9yIHJlcyBpbiByZXN1bHRzOgo+IC0gICAgICAgIHByaW50ID4+IG91dHB1dCwg Jzx0cj4nCj4gLSAgICAgICAgcHJpbnQgPj4gb3V0cHV0LCAnPHRkIGFsaWduPSJsZWZ0Ij4lczwv dGQ+JyAlIHJlc1sndGltZSddCj4gLSAgICAgICAgcHJpbnQgPj4gb3V0cHV0LCAnPHRkIGFsaWdu PSJsZWZ0Ij4lczwvdGQ+JyAlIHJlc1sndGVzdGNhc2UnXQo+IC0gICAgICAgIGlmIHJlc1snc3Rh dHVzJ10gPT0gJ0dPT0QnOgo+IC0gICAgICAgICAgICBwcmludCA+PiBvdXRwdXQsICc8dGQgYWxp Z249XCJsZWZ0XCI+PGI+PGZvbnQgY29sb3I9IiMwMENDMDAiPlBBU1M8L2ZvbnQ+PC9iPjwvdGQ+ Jwo+IC0gICAgICAgIGVsaWYgcmVzWydzdGF0dXMnXSA9PSAnRkFJTCc6Cj4gLSAgICAgICAgICAg IHByaW50ID4+IG91dHB1dCwgJzx0ZCBhbGlnbj1cImxlZnRcIj48Yj48Zm9udCBjb2xvcj0icmVk Ij5GQUlMPC9mb250PjwvYj48L3RkPicKPiAtICAgICAgICBlbGlmIHJlc1snc3RhdHVzJ10gPT0g J0VSUk9SJzoKPiAtICAgICAgICAgICAgcHJpbnQgPj4gb3V0cHV0LCAnPHRkIGFsaWduPVwibGVm dFwiPjxiPjxmb250IGNvbG9yPSJyZWQiPkVSUk9SITwvZm9udD48L2I+PC90ZD4nCj4gLSAgICAg ICAgZWxzZToKPiAtICAgICAgICAgICAgcHJpbnQgPj4gb3V0cHV0LCAnPHRkIGFsaWduPVwibGVm dFwiPiVzPC90ZD4nICUgcmVzWydzdGF0dXMnXQo+IC0gICAgICAgICMgcHJpbnQgZXhlYyB0aW1l IChzZWNvbmRzKQo+IC0gICAgICAgIHByaW50ID4+IG91dHB1dCwgJzx0ZCBhbGlnbj0ibGVmdCI+ JXM8L3RkPicgJSByZXNbJ2V4ZWNfdGltZV9zZWMnXQo+IC0gICAgICAgICMgcHJpbnQgbG9nIG9u bHkgaWYgdGVzdCBmYWlsZWQuLgo+IC0gICAgICAgIGlmIHJlc1snbG9nJ106Cj4gLSAgICAgICAg ICAgICNjaG9wIGFsbCAnXG4nIGZyb20gbG9nIHRleHQgKHRvIHByZXZlbnQgaHRtbCBlcnJvcnMp Cj4gLSAgICAgICAgICAgIHJ4MSA9IHJlLmNvbXBpbGUoJyhccyspJykKPiAtICAgICAgICAgICAg bG9nX3RleHQgPSByeDEuc3ViKCcgJywgcmVzWydsb2cnXSkKPiAtCj4gLSAgICAgICAgICAgICMg YWxsb3cgb25seSBhLXpBLVowLTlfIGluIGh0bWwgdGl0bGUgbmFtZQo+IC0gICAgICAgICAgICAj IChkdWUgdG8gYnVnIGluIE1TLWV4cGxvcmVyKQo+IC0gICAgICAgICAgICByeDIgPSByZS5jb21w aWxlKCcoW15hLXpBLVpfMC05XSknKQo+IC0gICAgICAgICAgICB1cGRhdGVkX3RhZyA9IHJ4Mi5z dWIoJ18nLCByZXNbJ3RpdGxlJ10pCj4gLQo+IC0gICAgICAgICAgICBodG1sX2JvZHlfdGV4dCA9 ICc8aHRtbD48aGVhZD48dGl0bGU+JXM8L3RpdGxlPjwvaGVhZD48Ym9keT4lczwvYm9keT48L2h0 bWw+JyAlIChzdHIodXBkYXRlZF90YWcpLCBsb2dfdGV4dCkKPiAtICAgICAgICAgICAgcHJpbnQg Pj4gb3V0cHV0LCAnPHRkIGFsaWduPVwibGVmdFwiPjxBIEhSRUY9XCIjXCIgb25DbGljaz1cInBv cHVwKFwnJXNcJyxcJyVzXCcpXCI+SW5mbzwvQT48L3RkPicgJSAoc3RyKHVwZGF0ZWRfdGFnKSwg c3RyKGh0bWxfYm9keV90ZXh0KSkKPiAtICAgICAgICBlbHNlOgo+IC0gICAgICAgICAgICBwcmlu dCA+PiBvdXRwdXQsICc8dGQgYWxpZ249XCJsZWZ0XCI+PC90ZD4nCj4gLSAgICAgICAgIyBwcmlu dCBleGVjdXRpb24gdGltZQo+IC0gICAgICAgIHByaW50ID4+IG91dHB1dCwgJzx0ZCBhbGlnbj0i bGVmdCI+PEEgSFJFRj1cIiVzXCI+RGVidWc8L0E+PC90ZD4nICUgb3MucGF0aC5qb2luKGRpcm5h bWUsIHJlc1sndGl0bGUnXSwgImRlYnVnIikKPiArICAgIGRlZiBwcmludF9yZXN1bHQocmVzdWx0 LCBpbmRlbnQpOgo+ICsgICAgICAgIHdoaWxlIHJlc3VsdCAhPSBbXToKPiArICAgICAgICAgICAg ciA9IHJlc3VsdC5wb3AoMCkKPiArICAgICAgICAgICAgcHJpbnQgcgo+ICsgICAgICAgICAgICBy ZXMgPSByZXN1bHRzW3JdWzJdCj4gKyAgICAgICAgICAgIHByaW50ID4+IG91dHB1dCwgJzx0cj4n Cj4gKyAgICAgICAgICAgIHByaW50ID4+IG91dHB1dCwgJzx0ZCBhbGlnbj0ibGVmdCI+JXM8L3Rk PicgJSByZXNbJ3RpbWUnXQo+ICsgICAgICAgICAgICBwcmludCA+PiBvdXRwdXQsICc8dGQgYWxp Z249ImxlZnQiIHN0eWxlPSJwYWRkaW5nLWxlZnQ6JWRweCI+JXM8L3RkPicgJSAoaW5kZW50ICog MjAsIHJlc1sndGl0bGUnXSkKPiArICAgICAgICAgICAgaWYgcmVzWydzdGF0dXMnXSA9PSAnR09P RCc6Cj4gKyAgICAgICAgICAgICAgICBwcmludCA+PiBvdXRwdXQsICc8dGQgYWxpZ249XCJsZWZ0 XCI+PGI+PGZvbnQgY29sb3I9IiMwMENDMDAiPlBBU1M8L2ZvbnQ+PC9iPjwvdGQ+Jwo+ICsgICAg ICAgICAgICBlbGlmIHJlc1snc3RhdHVzJ10gPT0gJ0ZBSUwnOgo+ICsgICAgICAgICAgICAgICAg cHJpbnQgPj4gb3V0cHV0LCAnPHRkIGFsaWduPVwibGVmdFwiPjxiPjxmb250IGNvbG9yPSJyZWQi PkZBSUw8L2ZvbnQ+PC9iPjwvdGQ+Jwo+ICsgICAgICAgICAgICBlbGlmIHJlc1snc3RhdHVzJ10g PT0gJ0VSUk9SJzoKPiArICAgICAgICAgICAgICAgIHByaW50ID4+IG91dHB1dCwgJzx0ZCBhbGln bj1cImxlZnRcIj48Yj48Zm9udCBjb2xvcj0icmVkIj5FUlJPUiE8L2ZvbnQ+PC9iPjwvdGQ+Jwo+ ICsgICAgICAgICAgICBlbHNlOgo+ICsgICAgICAgICAgICAgICAgcHJpbnQgPj4gb3V0cHV0LCAn PHRkIGFsaWduPVwibGVmdFwiPiVzPC90ZD4nICUgcmVzWydzdGF0dXMnXQo+ICsgICAgICAgICAg ICAjIHByaW50IGV4ZWMgdGltZSAoc2Vjb25kcykKPiArICAgICAgICAgICAgcHJpbnQgPj4gb3V0 cHV0LCAnPHRkIGFsaWduPSJsZWZ0Ij4lczwvdGQ+JyAlIHJlc1snZXhlY190aW1lX3NlYyddCj4g KyAgICAgICAgICAgICMgcHJpbnQgbG9nIG9ubHkgaWYgdGVzdCBmYWlsZWQuLgo+ICsgICAgICAg ICAgICBpZiByZXNbJ2xvZyddOgo+ICsgICAgICAgICAgICAgICAgI2Nob3AgYWxsICdcbicgZnJv bSBsb2cgdGV4dCAodG8gcHJldmVudCBodG1sIGVycm9ycykKPiArICAgICAgICAgICAgICAgIHJ4 MSA9IHJlLmNvbXBpbGUoJyhccyspJykKPiArICAgICAgICAgICAgICAgIGxvZ190ZXh0ID0gcngx LnN1YignICcsIHJlc1snbG9nJ10pCj4gKwo+ICsgICAgICAgICAgICAgICAgIyBhbGxvdyBvbmx5 IGEtekEtWjAtOV8gaW4gaHRtbCB0aXRsZSBuYW1lCj4gKyAgICAgICAgICAgICAgICAjIChkdWUg dG8gYnVnIGluIE1TLWV4cGxvcmVyKQo+ICsgICAgICAgICAgICAgICAgcngyID0gcmUuY29tcGls ZSgnKFteYS16QS1aXzAtOV0pJykKPiArICAgICAgICAgICAgICAgIHVwZGF0ZWRfdGFnID0gcngy LnN1YignXycsIHJlc1sndGl0bGUnXSkKPiArCj4gKyAgICAgICAgICAgICAgICBodG1sX2JvZHlf dGV4dCA9ICc8aHRtbD48aGVhZD48dGl0bGU+JXM8L3RpdGxlPjwvaGVhZD48Ym9keT4lczwvYm9k eT48L2h0bWw+JyAlIChzdHIodXBkYXRlZF90YWcpLCBsb2dfdGV4dCkKPiArICAgICAgICAgICAg ICAgIHByaW50ID4+IG91dHB1dCwgJzx0ZCBhbGlnbj1cImxlZnRcIj48QSBIUkVGPVwiI1wiIG9u Q2xpY2s9XCJwb3B1cChcJyVzXCcsXCclc1wnKVwiPkluZm88L0E+PC90ZD4nICUgKHN0cih1cGRh dGVkX3RhZyksIHN0cihodG1sX2JvZHlfdGV4dCkpCj4gKyAgICAgICAgICAgIGVsc2U6Cj4gKyAg ICAgICAgICAgICAgICBwcmludCA+PiBvdXRwdXQsICc8dGQgYWxpZ249XCJsZWZ0XCI+PC90ZD4n Cj4gKyAgICAgICAgICAgICMgcHJpbnQgZXhlY3V0aW9uIHRpbWUKPiArICAgICAgICAgICAgcHJp bnQgPj4gb3V0cHV0LCAnPHRkIGFsaWduPSJsZWZ0Ij48QSBIUkVGPVwiJXNcIj5EZWJ1ZzwvQT48 L3RkPicgJSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgcmVzWydzdWJkaXInXSwgImRlYnVnIikKPiAr Cj4gKyAgICAgICAgICAgIHByaW50ID4+IG91dHB1dCwgJzwvdHI+Jwo+ICsgICAgICAgICAgICBw cmludF9yZXN1bHQocmVzdWx0c1tyXVsxXSwgaW5kZW50ICsgMSkKPiAgCj4gLSAgICAgICAgcHJp bnQgPj4gb3V0cHV0LCAnPC90cj4nCj4gKyAgICBwcmludF9yZXN1bHQocmVzdWx0c1siIl1bMV0s IDApCj4gICAgICBwcmludCA+PiBvdXRwdXQsICI8L3Rib2R5PjwvdGFibGU+Igo+ICAKPiAgCj4g QEAgLTE1MjgsMTUgKzE1MzQsMjAgQEAgaWQ9InQxIiBjbGFzcz0ic3RhdHMgdGFibGUtYXV0b3Nv cnQ6NCB0YWJsZS1hdXRvZmlsdGVyIHRhYmxlLXN0cmlwZWNsYXNzOmFsdGVybmEKPiAgICAgICAg ICBvdXRwdXQuY2xvc2UoKQo+ICAKPiAgCj4gLWRlZiBwYXJzZV9yZXN1bHQoZGlybmFtZSwgbGlu ZSk6Cj4gK2RlZiBwYXJzZV9yZXN1bHQoZGlybmFtZSwgbGluZSwgcmVzdWx0c19kYXRhKToKPiAg ICAgIHBhcnRzID0gbGluZS5zcGxpdCgpCj4gICAgICBpZiBsZW4ocGFydHMpIDwgNDoKPiAgICAg ICAgICByZXR1cm4gTm9uZQo+IC0gICAgZ2xvYmFsIHN0aW1lbGlzdAo+ICsgICAgZ2xvYmFsIHRl c3RzCj4gICAgICBpZiBwYXJ0c1swXSA9PSAnU1RBUlQnOgo+ICAgICAgICAgIHBhaXIgPSBwYXJ0 c1szXS5zcGxpdCgnPScpCj4gICAgICAgICAgc3RpbWUgPSBpbnQocGFpclsxXSkKPiAtICAgICAg ICBzdGltZWxpc3QuYXBwZW5kKHN0aW1lKQo+ICsgICAgICAgIHJlc3VsdHNfZGF0YVtwYXJ0c1sx XV0gPSBbc3RpbWUsIFtdLCBOb25lXQo+ICsgICAgICAgIHRyeToKPiArICAgICAgICAgICAgcGFy ZW50X3Rlc3QgPSByZS5maW5kYWxsKHIiLiovIiwgcGFydHNbMV0pWzBdWzotMV0KPiArICAgICAg ICAgICAgcmVzdWx0c19kYXRhW3BhcmVudF90ZXN0XVsxXS5hcHBlbmQocGFydHNbMV0pCj4gKyAg ICAgICAgZXhjZXB0IEluZGV4RXJyb3I6Cj4gKyAgICAgICAgICAgIHJlc3VsdHNfZGF0YVsiIl1b MV0uYXBwZW5kKHBhcnRzWzFdKQo+ICAKPiAgICAgIGVsaWYgKHBhcnRzWzBdID09ICdFTkQnKToK PiAgICAgICAgICByZXN1bHQgPSB7fQo+IEBAIC0xNTUzLDIxICsxNTY0LDI1IEBAIGRlZiBwYXJz ZV9yZXN1bHQoZGlybmFtZSwgbGluZSk6Cj4gICAgICAgICAgcmVzdWx0WydleGVjX3RpbWVfc2Vj J10gPSAnbmEnCj4gICAgICAgICAgdGFnID0gcGFydHNbM10KPiAgCj4gKyAgICAgICAgcmVzdWx0 WydzdWJkaXInXSA9IHBhcnRzWzJdCj4gICAgICAgICAgIyBhc3NpZ24gYWN0dWFsIHZhbHVlcwo+ ICAgICAgICAgIHJ4ID0gcmUuY29tcGlsZSgnXihcdyspXC4oLiopJCcpCj4gICAgICAgICAgbTEg PSByeC5maW5kYWxsKHBhcnRzWzNdKQo+IC0gICAgICAgIHJlc3VsdFsndGVzdGNhc2UnXSA9IG0x WzBdWzFdCj4gKyAgICAgICAgaWYgbGVuKG0xKToKPiArICAgICAgICAgICAgcmVzdWx0Wyd0ZXN0 Y2FzZSddID0gbTFbMF1bMV0KPiArICAgICAgICBlbHNlOgo+ICsgICAgICAgICAgICByZXN1bHRb J3Rlc3RjYXNlJ10gPSBwYXJ0c1szXQo+ICAgICAgICAgIHJlc3VsdFsndGl0bGUnXSA9IHN0cih0 YWcpCj4gICAgICAgICAgcmVzdWx0WydzdGF0dXMnXSA9IHBhcnRzWzFdCj4gICAgICAgICAgaWYg cmVzdWx0WydzdGF0dXMnXSAhPSAnR09PRCc6Cj4gICAgICAgICAgICAgIHJlc3VsdFsnbG9nJ10g PSBnZXRfZXhlY19sb2coZGlybmFtZSwgdGFnKQo+IC0gICAgICAgIGlmIGxlbihzdGltZWxpc3Qp PjA6Cj4gKyAgICAgICAgaWYgbGVuKHJlc3VsdHNfZGF0YSk+MDoKPiAgICAgICAgICAgICAgcGFp ciA9IHBhcnRzWzRdLnNwbGl0KCc9JykKPiAgICAgICAgICAgICAgZXRpbWUgPSBpbnQocGFpclsx XSkKPiAtICAgICAgICAgICAgc3RpbWUgPSBzdGltZWxpc3QucG9wKCkKPiArICAgICAgICAgICAg c3RpbWUgPSByZXN1bHRzX2RhdGFbcGFydHNbMl1dWzBdCj4gICAgICAgICAgICAgIHRvdGFsX2V4 ZWNfdGltZV9zZWMgPSBldGltZSAtIHN0aW1lCj4gICAgICAgICAgICAgIHJlc3VsdFsnZXhlY190 aW1lX3NlYyddID0gdG90YWxfZXhlY190aW1lX3NlYwo+IC0gICAgICAgIHJldHVybiByZXN1bHQK PiArICAgICAgICByZXN1bHRzX2RhdGFbcGFydHNbMl1dWzJdID0gcmVzdWx0Cj4gICAgICByZXR1 cm4gTm9uZQo+ICAKPiAgCj4gQEAgLTE2ODksMTYgKzE3MDQsMTUgQEAgZGVmIG1haW4oYXJndik6 Cj4gICAgICAgICAgICAgIGhvc3QgPSBnZXRfaW5mb19maWxlKCclcy9ob3N0bmFtZScgJSBzeXNp bmZvX2RpcikKPiAgICAgICAgICAgICAgcnggPSByZS5jb21waWxlKCdeXHMrW0VORHxTVEFSVF0u KiQnKQo+ICAgICAgICAgICAgICAjIGNyZWF0ZSB0aGUgcmVzdWx0cyBzZXQgZGljdAo+IC0gICAg ICAgICAgICByZXN1bHRzX2RhdGEgPSBbXQo+ICsgICAgICAgICAgICByZXN1bHRzX2RhdGEgPSB7 fQo+ICsgICAgICAgICAgICByZXN1bHRzX2RhdGFbIiJdID0gWzAsIFtdLCBOb25lXQo+ICAgICAg ICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzdGF0dXNfZmlsZV9uYW1lKToKPiAgICAgICAgICAg ICAgICAgIGYgPSBvcGVuKHN0YXR1c19maWxlX25hbWUsICJyIikKPiAgICAgICAgICAgICAgICAg IGxpbmVzID0gZi5yZWFkbGluZXMoKQo+ICAgICAgICAgICAgICAgICAgZi5jbG9zZSgpCj4gICAg ICAgICAgICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKPiAgICAgICAgICAgICAgICAgICAgICBp ZiByeC5tYXRjaChsaW5lKToKPiAtICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X2RpY3Qg PSBwYXJzZV9yZXN1bHQoZGlybmFtZSwgbGluZSkKPiAtICAgICAgICAgICAgICAgICAgICAgICAg aWYgcmVzdWx0X2RpY3Q6Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzX2Rh dGEuYXBwZW5kKHJlc3VsdF9kaWN0KQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZV9y ZXN1bHQoZGlybmFtZSwgbGluZSwgcmVzdWx0c19kYXRhKQo+ICAgICAgICAgICAgICAjIGNyZWF0 ZSB0aGUgbWV0YSBpbmZvIGRpY3QKPiAgICAgICAgICAgICAgbWV0YWxpc3QgPSB7Cj4gICAgICAg ICAgICAgICAgICAgICAgICAgICd1bmFtZSc6IGdldF9pbmZvX2ZpbGUoJyVzL3VuYW1lJyAlIHN5 c2luZm9fZGlyKSwKPiBAQCAtMTcxMSw3ICsxNzI1LDYgQEAgZGVmIG1haW4oYXJndik6Cj4gICAg ICAgICAgICAgICAgICAgICAgICAgICdkbWVzZyc6Z2V0X2luZm9fZmlsZSgnJXMvZG1lc2cnICUg c3lzaW5mb19kaXIpLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAna3ZtdmVyJzpnZXRfa3Zt X3ZlcnNpb24oZGlybmFtZSkKPiAgICAgICAgICAgICAgfQo+IC0KPiAgICAgICAgICAgICAgbWFr ZV9odG1sX2ZpbGUobWV0YWxpc3QsIHJlc3VsdHNfZGF0YSwgdGFnLCBob3N0LCBvdXRwdXRfZmls ZV9uYW1lLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sX3BhdGgpCj4gICAgICAg ICAgICAgIHN5cy5leGl0KDApCj4gZGlmZiAtLWdpdCBhL2NsaWVudC90ZXN0cy9rdm0va3ZtX3Rl c3RfdXRpbHMucHkgYi9jbGllbnQvdGVzdHMva3ZtL2t2bV90ZXN0X3V0aWxzLnB5Cj4gaW5kZXgg YjVjNGEyNC4uYzJjOTYxNSAxMDA2NDQKPiAtLS0gYS9jbGllbnQvdGVzdHMva3ZtL2t2bV90ZXN0 X3V0aWxzLnB5Cj4gKysrIGIvY2xpZW50L3Rlc3RzL2t2bS9rdm1fdGVzdF91dGlscy5weQo+IEBA IC00MjksMTMgKzQyOSwxNSBAQCBkZWYgZ2V0X21lbW9yeV9pbmZvKGx2bXMpOgo+ICAgICAgcmV0 dXJuIG1lbWluZm8KPiAgCj4gIAo+IC1kZWYgcnVuX2F1dG90ZXN0KHZtLCBzZXNzaW9uLCBjb250 cm9sX3BhdGgsIHRpbWVvdXQsIG91dHB1dGRpciwgcGFyYW1zKToKPiArZGVmIHJ1bl9hdXRvdGVz dCh2bSwgc2Vzc2lvbiwgY29udHJvbF9wYXRoLCBjb250cm9sX2FyZ3MsCj4gKyAgICAgICAgICAg ICAgICAgdGltZW91dCwgb3V0cHV0ZGlyLCBwYXJhbXMpOgo+ICAgICAgIiIiCj4gICAgICBSdW4g YW4gYXV0b3Rlc3QgY29udHJvbCBmaWxlIGluc2lkZSBhIGd1ZXN0IChsaW51eCBvbmx5IHV0aWxp dHkpLgo+ICAKPiAgICAgIEBwYXJhbSB2bTogVk0gb2JqZWN0Lgo+ICAgICAgQHBhcmFtIHNlc3Np b246IEEgc2hlbGwgc2Vzc2lvbiBvbiB0aGUgVk0gcHJvdmlkZWQuCj4gICAgICBAcGFyYW0gY29u dHJvbF9wYXRoOiBBIHBhdGggdG8gYW4gYXV0b3Rlc3QgY29udHJvbCBmaWxlLgo+ICsgICAgQHBh cmFtIGNvbnRyb2xfYXJnczogQW4gYXJndW1ldHMgZm9yIGNvbnRyb2wgZmlsZS4uCj4gICAgICBA cGFyYW0gdGltZW91dDogVGltZW91dCB1bmRlciB3aGljaCB0aGUgYXV0b3Rlc3QgY29udHJvbCBm aWxlIG11c3QgY29tcGxldGUuCj4gICAgICBAcGFyYW0gb3V0cHV0ZGlyOiBQYXRoIG9uIGhvc3Qg d2hlcmUgd2Ugc2hvdWxkIGNvcHkgdGhlIGd1ZXN0IGF1dG90ZXN0Cj4gICAgICAgICAgICAgIHJl c3VsdHMgdG8uCj4gQEAgLTU2MCw2ICs1NjIsMTAgQEAgZGVmIHJ1bl9hdXRvdGVzdCh2bSwgc2Vz c2lvbiwgY29udHJvbF9wYXRoLCB0aW1lb3V0LCBvdXRwdXRkaXIsIHBhcmFtcyk6Cj4gICAgICAg ICAgcGFzcwo+ICAgICAgdHJ5Ogo+ICAgICAgICAgIGJnID0gTm9uZQo+ICsgICAgICAgIGlmIGNv bnRyb2xfYXJncyAhPSBOb25lOgo+ICsgICAgICAgICAgICBjb250cm9sX2FyZ3MgPSAnIC1hICIn ICsgY29udHJvbF9hcmdzICsgJyInCj4gKyAgICAgICAgZWxzZToKPiArICAgICAgICAgICAgY29u dHJvbF9hcmdzID0gIiIKPiAgICAgICAgICB0cnk6Cj4gICAgICAgICAgICAgIGxvZ2dpbmcuaW5m bygiLS0tLS0tLS0tLS0tLS0tLSBUZXN0IG91dHB1dCAtLS0tLS0tLS0tLS0tLS0tIikKPiAgICAg ICAgICAgICAgaWYgbWlncmF0ZV9iYWNrZ3JvdW5kOgo+IEBAIC01NjcsNyArNTczLDggQEAgZGVm IHJ1bl9hdXRvdGVzdCh2bSwgc2Vzc2lvbiwgY29udHJvbF9wYXRoLCB0aW1lb3V0LCBvdXRwdXRk aXIsIHBhcmFtcyk6Cj4gICAgICAgICAgICAgICAgICBtaWdfcHJvdG9jb2wgPSBwYXJhbXMuZ2V0 KCJtaWdyYXRpb25fcHJvdG9jb2wiLCAidGNwIikKPiAgCj4gICAgICAgICAgICAgICAgICBiZyA9 IGt2bV91dGlscy5UaHJlYWQoc2Vzc2lvbi5jbWRfb3V0cHV0LAo+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGt3YXJncz17J2NtZCc6ICJiaW4vYXV0b3Rlc3QgY29udHJv bCIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzPXsnY21k JzogImJpbi9hdXRvdGVzdCBjb250cm9sIiArCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb250cm9sX2FyZ3MsCj4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAndGltZW91dCc6IHRpbWVvdXQsCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJpbnRfZnVuYyc6IGxvZ2dp bmcuaW5mb30pCj4gIAo+IEBAIC01NzgsOCArNTg1LDggQEAgZGVmIHJ1bl9hdXRvdGVzdCh2bSwg c2Vzc2lvbiwgY29udHJvbF9wYXRoLCB0aW1lb3V0LCBvdXRwdXRkaXIsIHBhcmFtcyk6Cj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaWdyYXRpb24gLi4uIikKPiAgICAgICAg ICAgICAgICAgICAgICB2bS5taWdyYXRlKHRpbWVvdXQ9bWlnX3RpbWVvdXQsIHByb3RvY29sPW1p Z19wcm90b2NvbCkKPiAgICAgICAgICAgICAgZWxzZToKPiAtICAgICAgICAgICAgICAgIHNlc3Np b24uY21kX291dHB1dCgiYmluL2F1dG90ZXN0IGNvbnRyb2wiLCB0aW1lb3V0PXRpbWVvdXQsCj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRfZnVuYz1sb2dnaW5nLmlu Zm8pCj4gKyAgICAgICAgICAgICAgICBzZXNzaW9uLmNtZF9vdXRwdXQoImJpbi9hdXRvdGVzdCBj b250cm9sIiArIGNvbnRyb2xfYXJncywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0aW1lb3V0PXRpbWVvdXQsIHByaW50X2Z1bmM9bG9nZ2luZy5pbmZvKQo+ICAgICAgICAg IGZpbmFsbHk6Cj4gICAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygiLS0tLS0tLS0tLS0tLSBFbmQg b2YgdGVzdCBvdXRwdXQgLS0tLS0tLS0tLS0tIikKPiAgICAgICAgICAgICAgaWYgbWlncmF0ZV9i YWNrZ3JvdW5kIGFuZCBiZzoKPiBAQCAtNjIzLDggKzYzMCw4IEBAIGRlZiBydW5fYXV0b3Rlc3Qo dm0sIHNlc3Npb24sIGNvbnRyb2xfcGF0aCwgdGltZW91dCwgb3V0cHV0ZGlyLCBwYXJhbXMpOgo+ ICAKPiAgZGVmIGdldF9sb3NzX3JhdGlvKG91dHB1dCk6Cj4gICAgICAiIiIKPiAtICAgIEdldCB0 aGUgcGFja2V0IGxvc3MgcmF0aW8gZnJvbSB0aGUgb3V0cHV0IG9mIHBpbmcKPiAtLgo+ICsgICAg R2V0IHRoZSBwYWNrZXQgbG9zcyByYXRpbyBmcm9tIHRoZSBvdXRwdXQgb2YgcGluZy4KPiArCj4g ICAgICBAcGFyYW0gb3V0cHV0OiBQaW5nIG91dHB1dC4KPiAgICAgICIiIgo+ICAgICAgdHJ5Ogo+ IGRpZmYgLS1naXQgYS9jbGllbnQvdGVzdHMva3ZtL3Rlc3RzL3N1YnRlc3QucHkgYi9jbGllbnQv dGVzdHMva3ZtL3Rlc3RzL3N1YnRlc3QucHkKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4 IDAwMDAwMDAuLjM4MDM5MGUKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvY2xpZW50L3Rlc3RzL2t2 bS90ZXN0cy9zdWJ0ZXN0LnB5Cj4gQEAgLTAsMCArMSw0MyBAQAo+ICtpbXBvcnQgb3MsIGxvZ2dp bmcKPiAraW1wb3J0IGt2bV90ZXN0X3V0aWxzLCBrdm1fdXRpbHMKPiArZnJvbSBhdXRvdGVzdF9s aWIuY2xpZW50LmJpbiBpbXBvcnQgam9iCj4gK2Zyb20gYXV0b3Rlc3RfbGliLmNsaWVudC5iaW4u bmV0IGltcG9ydCBuZXRfdXRpbHMKPiArCj4gKwo+ICtkZWYgcnVuX3N1YnRlc3QodGVzdCwgcGFy YW1zLCBlbnYpOgo+ICsgICAgIiIiCj4gKyAgICBSdW4gYW4gYXV0b3Rlc3QgdGVzdCBpbnNpZGUg YSBndWVzdCBhbmQgc3VidGVzdCBvbiBob3N0IHNpZGUuCj4gKyAgICBUaGlzIHRlc3Qgc2hvdWxk IGJlIHN1YnN0aXR1dGlvbiBuZXRwZXJmIHRlc3QgaW4ga3ZtLgo+ICsKPiArICAgIEBwYXJhbSB0 ZXN0OiBrdm0gdGVzdCBvYmplY3QuCj4gKyAgICBAcGFyYW0gcGFyYW1zOiBEaWN0aW9uYXJ5IHdp dGggdGVzdCBwYXJhbWV0ZXJzLgo+ICsgICAgQHBhcmFtIGVudjogRGljdGlvbmFyeSB3aXRoIHRo ZSB0ZXN0IGVudmlyb25tZW50Lgo+ICsgICAgIiIiCj4gKyAgICB2bSA9IGVudi5nZXRfdm0ocGFy YW1zWyJtYWluX3ZtIl0pCj4gKyAgICB2bS52ZXJpZnlfYWxpdmUoKQo+ICsgICAgdGltZW91dCA9 IGludChwYXJhbXMuZ2V0KCJsb2dpbl90aW1lb3V0IiwgMzYwKSkKPiArICAgIHNlc3Npb24gPSB2 bS53YWl0X2Zvcl9sb2dpbih0aW1lb3V0PXRpbWVvdXQpCj4gKwo+ICsgICAgIyBDb2xsZWN0IHRl c3QgcGFyYW1ldGVycwo+ICsgICAgdGltZW91dCA9IGludChwYXJhbXMuZ2V0KCJ0ZXN0X3RpbWVv dXQiLCAzMDApKQo+ICsgICAgY29udHJvbF9wYXRoID0gb3MucGF0aC5qb2luKHRlc3QuYmluZGly LCAiYXV0b3Rlc3RfY29udHJvbCIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cGFyYW1zLmdldCgidGVzdF9jb250cm9sX2ZpbGUiKSkKPiArICAgIGNvbnRyb2xfYXJncyA9IHBh cmFtcy5nZXQoInRlc3RfY29udHJvbF9hcmdzIikKPiArICAgIG91dHB1dGRpciA9IHRlc3Qub3V0 cHV0ZGlyCj4gKwo+ICsgICAgZ3Vlc3RfaXAgPSB2bS5nZXRfYWRkcmVzcygpCj4gKyAgICBob3N0 X2lwID0gbmV0X3V0aWxzLm5ldHdvcmsoKS5nZXRfY29yZXNwb25kX2xvY2FsX2lwKGd1ZXN0X2lw KQo+ICsgICAgaWYgbm90IGhvc3RfaXAgaXMgTm9uZToKPiArICAgICAgICBjb250cm9sX2FyZ3Mg PSBob3N0X2lwICsgIiAiICsgZ3Vlc3RfaXAKPiArCiAgICAgICAgICAgdHJ5OgoKICAgID4gKyAg ICAgICAgZ3Vlc3QgPSBrdm1fdXRpbHMuVGhyZWFkKGt2bV90ZXN0X3V0aWxzLnJ1bl9hdXRvdGVz dCwKICAgID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2bSwgc2Vzc2lvbiwg Y29udHJvbF9wYXRoLCBjb250cm9sX2FyZ3MsCiAgICA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGltZW91dCwgb3V0cHV0ZGlyLCBwYXJhbXMpKQogICAgPiArICAgICAgICBn dWVzdC5zdGFydCgpCiAgICA+ICsKICAgID4gKyAgICAgICAgdGVzdC5ydW5zdWJ0ZXN0KCJuZXRw ZXJmMiIsIHRhZz0ic2VydmVyIiwgc2VydmVyX2lwPWhvc3RfaXAsCiAgICA+ICsgICAgICAgICAg ICAgY2xpZW50X2lwPWd1ZXN0X2lwLCByb2xlPSdzZXJ2ZXInKQogICAgICAgICAgIGZpbmFsbHk6 CiAgICAgICAgICAgICAgIGd1ZXN0LmpvaW4oKQoKV2UgYWxzbyBuZWVkIG1ha2UgdGhlIHRlc3Qg aW4gaG9zdCBjYW4gYmUgY29uZmlndXJlZC4KCj4gKyAgICBlbHNlOgo+ICsgICAgICAgIGxvZ2dp bmcuZXJyb3IoIkhvc3QgY2Fubm90IGNvbW11bmljYXRlIHdpdGggY2xpZW50IGJ5Igo+ICsgICAg ICAgICAgICAgICAgICAgICAgIiBub3JtYWwgbmV0d29yayBjb25uZWN0aW9uLiIpCj4gXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCj4gZGlmZiAtLWdpdCBhL2NsaWVudC90ZXN0cy9rdm0vdGVz dHNfYmFzZS5jZmcuc2FtcGxlIGIvY2xpZW50L3Rlc3RzL2t2bS90ZXN0c19iYXNlLmNmZy5zYW1w bGUKPiBpbmRleCA1ZDI3NGY4Li5mOWVmYjRiIDEwMDY0NAo+IC0tLSBhL2NsaWVudC90ZXN0cy9r dm0vdGVzdHNfYmFzZS5jZmcuc2FtcGxlCj4gKysrIGIvY2xpZW50L3Rlc3RzL2t2bS90ZXN0c19i YXNlLmNmZy5zYW1wbGUKPiBAQCAtMjU1LDExICsyNTUsMTkgQEAgdmFyaWFudHM6Cj4gICAgICAg ICAgICAgICAgICB0ZXN0X2NvbnRyb2xfZmlsZSA9IHJ0Yy5jb250cm9sCj4gICAgICAgICAgICAg IC0gaW96b25lOgo+ICAgICAgICAgICAgICAgICAgdGVzdF9jb250cm9sX2ZpbGUgPSBpb3pvbmUu Y29udHJvbAo+IC0gICAgICAgICAgICAtIGZsYWlsOgo+ICsJCQktIGZsYWlsOgoKQSB0eXBvPyBw bGVhc2UgZG9uJ3QgdXNlIFx0IGZvciBpbmRlbnRhdGlvbi4KCj4gICAgICAgICAgICAgICAgICB0 ZXN0X2NvbnRyb2xfZmlsZSA9IGZsYWlsLmNvbnRyb2wKPiAgICAgICAgICAgICAgLSBzeXN0ZW10 YXA6Cj4gICAgICAgICAgICAgICAgICB0ZXN0X2NvbnRyb2xfZmlsZSA9IHN5c3RlbXRhcC5jb250 cm9sCj4gIAo+ICstIHN1YnRlc3Q6ICAgICBpbnN0YWxsIHNldHVwIHVuYXR0ZW5kZWRfaW5zdGFs bC5jZHJvbQo+ICsgICAgICAgIHR5cGUgPSBzdWJ0ZXN0Cj4gKyAgICAgICAgdGVzdF90aW1lb3V0 ID0gMTgwMAo+ICsgICAgICAgIHZhcmlhbnRzOgo+ICsgICAgICAgICAgICAtIG5ldHBlcmYyOgoK YXV0b3Rlc3Quc3VidGVzdC5uZXRwZXJmMgoKCj4gKyAgICAgICAgICAgICAgICB0ZXN0X2NvbnRy b2xfZmlsZSA9IG5ldHBlcmYyLmNvbnRyb2wKCm5vIG5ldHBlcmYyLmNvbnRyb2wgaW4gY2xpZW50 L3Rlc3RzL2t2bS9hdXRvdGVzdF9jb250cm9sLwpob3cgY2FuIHdlIGFzc2lnbiBob3N0L2d1ZXN0 IGlwIHRvIHRoaXMgY29udHJvbCBmaWxlPwoKPiArICAgICAgICAgICAgICAgIG5pY19tb2RlID0g dGFwCj4gKwo+ICAgICAgLSBsaW51eF9zMzogICAgIGluc3RhbGwgc2V0dXAgdW5hdHRlbmRlZF9p bnN0YWxsLmNkcm9tCj4gICAgICAgICAgb25seSBMaW51eAo+ICAgICAgICAgIHR5cGUgPSBsaW51 eF9zMwo+IGRpZmYgLS1naXQgYS9jbGllbnQvdGVzdHMvbmV0cGVyZjIvbmV0cGVyZjIucHkgYi9j bGllbnQvdGVzdHMvbmV0cGVyZjIvbmV0cGVyZjIucHkKPiBpbmRleCAxYjY1OWRkLi4yM2QyNWM1 IDEwMDY0NAo+IC0tLSBhL2NsaWVudC90ZXN0cy9uZXRwZXJmMi9uZXRwZXJmMi5weQo+ICsrKyBi L2NsaWVudC90ZXN0cy9uZXRwZXJmMi9uZXRwZXJmMi5weQo+IEBAIC0yLDYgKzIsNyBAQCBpbXBv cnQgb3MsIHRpbWUsIHJlLCBsb2dnaW5nCj4gIGZyb20gYXV0b3Rlc3RfbGliLmNsaWVudC5iaW4g aW1wb3J0IHRlc3QsIHV0aWxzCj4gIGZyb20gYXV0b3Rlc3RfbGliLmNsaWVudC5iaW4ubmV0IGlt cG9ydCBuZXRfdXRpbHMKPiAgZnJvbSBhdXRvdGVzdF9saWIuY2xpZW50LmNvbW1vbl9saWIgaW1w b3J0IGVycm9yCj4gK2Zyb20gYXV0b3Rlc3RfbGliLmNsaWVudC5jb21tb25fbGliIGltcG9ydCBi YXJyaWVyCj4gIAo+ICBNUFNUQVRfSVggPSAwCj4gIE5FVFBFUkZfSVggPSAxCj4gQEAgLTM2LDcg KzM3LDcgQEAgY2xhc3MgbmV0cGVyZjIodGVzdC50ZXN0KToKPiAgCj4gICAgICBkZWYgcnVuX29u Y2Uoc2VsZiwgc2VydmVyX2lwLCBjbGllbnRfaXAsIHJvbGUsIHRlc3QgPSAnVENQX1NUUkVBTScs Cj4gICAgICAgICAgICAgICAgICAgdGVzdF90aW1lID0gMTUsIHN0cmVhbV9saXN0ID0gWzFdLCB0 ZXN0X3NwZWNpZmljX2FyZ3MgPSAnJywKPiAtICAgICAgICAgICAgICAgICBjcHVfYWZmaW5pdHkg PSAnJywgZGV2ID0gJycsIGJpZGkgPSBGYWxzZSwgd2FpdF90aW1lID0gNSk6Cj4gKyAgICAgICAg ICAgICAgICAgY3B1X2FmZmluaXR5ID0gJycsIGRldiA9ICcnLCBiaWRpID0gRmFsc2UsIHdhaXRf dGltZSA9IDIpOgo+ICAgICAgICAgICIiIgo+ICAgICAgICAgIHNlcnZlcl9pcDogSVAgYWRkcmVz cyBvZiBob3N0IHJ1bm5pbmcgbmV0c2VydmVyCj4gICAgICAgICAgY2xpZW50X2lwOiBJUCBhZGRy ZXNzIG9mIGhvc3QgcnVubmluZyBuZXRwZXJmIGNsaWVudChzKQo+IC0tIAo+IDEuNy40LjQKPiAK CldoZW4gSSB0ZXN0IHRoaXMgcGF0Y2gsIGF1dG90ZXN0IGNvdWxkIG5vdCBmaW5pc2guCgouLi4u CjIxOjI1OjUzIERFQlVHfCBSdW5uaW5nICcvdXNyL2Jpbi9xZW11LWltZyBjaGVjayAvcm9vdC9S SEVMLVNlcnZlci02LjAtNjQtdmlydGlvLnFjb3cyJwoyMToyNTo1NCBERUJVR3wgUG9zdHByb2Nl c3NpbmcgVk0gJ3ZtMScuLi4KMjE6MjU6NTQgREVCVUd8IFRlcm1pbmF0aW5nIHNjcmVlbmR1bXAg dGhyZWFkLi4uCjIxOjI1OjU0IERFQlVHfCAna2VlcF9wcG1fZmlsZXMnIG5vdCBzcGVjaWZpZWQ7 IHJlbW92aW5nIGFsbCBQUE0gZmlsZXMgZnJvbSBkZWJ1ZyBkaXIuLi4KMjE6MjU6NTQgREVCVUd8 ICdrZWVwX3NjcmVlbmR1bXBzJyBub3Qgc3BlY2lmaWVkOyByZW1vdmluZyBzY3JlZW5kdW1wIGRp cnMuLi4KMjE6MjU6NTQgREVCVUd8ICdraWxsX3VucmVzcG9uc2l2ZV92bXMnIHNwZWNpZmllZDsg a2lsbGluZyBhbGwgVk1zIHRoYXQgZmFpbCB0byByZXNwb25kIHRvIGEgcmVtb3RlIGxvZ2luIHJl cXVlc3QuLi4KMjE6MjU6NTQgREVCVUd8IFRyeWluZyB0byBsb2dpbiB3aXRoIGNvbW1hbmQgJ3Nz aCAtbyBVc2VyS25vd25Ib3N0c0ZpbGU9L2Rldi9udWxsIC1vIFByZWZlcnJlZEF1dGhlbnRpY2F0 aW9ucz1wYXNzd29yZCAtcCAyMiByb290QDE5Mi4xNjguMzMuOTUnCjIxOjI1OjU3IERFQlVHfCBH b3QgJ0FyZSB5b3Ugc3VyZS4uLic7IHNlbmRpbmcgJ3llcycKMjE6MjU6NTcgREVCVUd8IEdvdCBw YXNzd29yZCBwcm9tcHQ7IHNlbmRpbmcgJ3JlZGhhdCcKMjE6MjU6NTggREVCVUd8IEdvdCBzaGVs bCBwcm9tcHQgLS0gbG9nZ2VkIGluCjIxOjI1OjU4IElORk8gfCBbJ2l0ZXJhdGlvbi4xJ10KMjE6 MjU6NTggSU5GTyB8IFRlc3QgZmluaXNoZWQgYWZ0ZXIgMSBpdGVyYXRpb25zLgpbaGFuZy4uLi5d Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkF1dG90ZXN0 IG1haWxpbmcgbGlzdApBdXRvdGVzdEB0ZXN0Lmtlcm5lbC5vcmcKaHR0cDovL3Rlc3Qua2VybmVs Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vYXV0b3Rlc3QK