From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Szwichtenberg, Radoslaw" Subject: Re: [PATCH i-g-t 1/5] Add support for subtest-specific documentation Date: Mon, 4 Sep 2017 08:42:58 +0000 Message-ID: <1504514576.21576.1.camel@intel.com> References: <1502360811-31640-1-git-send-email-petri.latvala@intel.com> <1502360811-31640-2-git-send-email-petri.latvala@intel.com> <20170811082015.7jrfo4pf5pm6ofke@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 67A4B892AE for ; Mon, 4 Sep 2017 08:43:02 +0000 (UTC) In-Reply-To: <20170811082015.7jrfo4pf5pm6ofke@phenom.ffwll.local> Content-Language: en-US Content-ID: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "daniel@ffwll.ch" , "Latvala, Petri" Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCAyMDE3LTA4LTExIGF0IDEwOjIwICswMjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOg0K PiBPbiBUaHUsIEF1ZyAxMCwgMjAxNyBhdCAwMToyNjo0N1BNICswMzAwLCBQZXRyaSBMYXR2YWxh IHdyb3RlOg0KPiA+IFRoZSBjdXJyZW50IGRvY3VtZW50YXRpb24gZm9yIHRlc3RzIGlzIGxpbWl0 ZWQgdG8gYSBzaW5nbGUgc3RyaW5nIHBlcg0KPiA+IHRlc3QgYmluYXJ5LiBUaGlzIHBhdGNoIGFk ZHMgc3VwcG9ydCBmb3IgZG9jdW1lbnRpbmcgaW5kaXZpZHVhbA0KPiA+IHN1YnRlc3RzLg0KPiA+ IA0KPiA+IFRoZSBzeW50YXggZm9yIHN1YnRlc3QgZG9jdW1lbnRhdGlvbiBpczoNCj4gPiANCj4g PiDCoMKgwqBpZ3RfZG9jdW1lbnRfc3VidGVzdCgiRnJvYiBrbm9icyB0byBzZWUgaWYgb25lIG9m IHRoZSAiDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgImNyb3NzYmVhbXMgd2lsbCBnbyBvdXQgb2Ygc2tldyBvbiB0aGUgIg0KPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCJ0cmVhZGxlLlxuIik7DQo+ ID4gwqDCoMKgaWd0X3N1YnRlc3QoImtub2ItZnJvYmJpbmctYXNrZXciKQ0KPiA+IMKgwqDCoMKg wqB0ZXN0X2Zyb2IoKTsNCj4gPiANCj4gPiBvciB3aXRoIGEgZm9ybWF0IHN0cmluZzoNCj4gPiAN Cj4gPiDCoCBmb3JfZXhhbXBsZV9sb29wKGUpIHsNCj4gPiDCoMKgwqDCoGlndF9kb2N1bWVudF9z dWJ0ZXN0X2YoIkZyb2IgJXMgdG8gc2VlIGlmIG9uZSBvZiB0aGUgIg0KPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCJjcm9zc2JlYW1zIHdp bGwgZ28gb3V0IG9mIHNrZXcgb24gdGhlICINCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAidHJlYWRsZS5cbiIsIGUtPnJlYWRhYmxlX25h bWUpOw0KPiA+IMKgwqDCoMKgaWd0X3N1YnRlc3RfZigiJXMtZnJvYi1hc2tldyIsIGUtPm5hbWUp DQo+ID4gwqDCoMKgwqDCoMKgdGVzdF9mcm9iKGUpOw0KPiA+IMKgIH0NCj4gDQo+IEknbSBub3Qg c29sZCBvbiB0aGlzIGxheW91dCBhdCBhbGwuIEV2ZXJ5d2hlcmUgZWxzZSB3aGVyZSB3ZSBkbyBp bi1saW5lDQo+IGNvZGUgZG9jdW1lbnRhdGlvbiBpdCBpcyB0aHJvdWdoIHNwZWNpYWxseSBmb3Jt YXR0ZWQgY29tbWVudHMuIFRoYXQgZ2l2ZXMNCj4geW91IGEgbG90IG9mIGZyZWVkb20gZm9yIHBs YWluLXRleHQgbGF5b3V0LCBpbiBjb21iaW5hdGlvbiB3aXRoIHNvbWUgbWlsZA0KPiBtYXJrdXAg KGd0ay1kb2MgZm9yIGlndCBhbmQgcnN0IGZvciBrZXJuZWwpIHRoYXQgcmVzdWx0IGluIGRvY3Mg d2hpY2ggYm90aA0KPiBsb29rIGdvb2QgaW4gdGhlIGNvZGUgYW5kIGxvb2sgZ29vZCByZW5kZXJl ZC4NCj4gDQo+IFRoaXMgaGVyZSBlc3NlbnRpYWxseSByZXN0cmljdHMgeW91IHRvIG9uZS1saW5l cnMsIGFuZCBhIG9uZS1saW5lciBjYW4ndA0KPiByZWFsbHkgZXhwbGFpbiB3aGF0IGEgbW9yZSBj b21wbGV4dCB0ZXN0IGRvZXMuDQpJIHNlY29uZCB0aGF0LiBGb3IgbWFueSBjYXNlcyBvbmUtbGlu ZXIgd2lsbCBkbyAtIGJ1dCB0aGVzZSBtb3JlIGNvbXBsaWNhdGVkDQpjYXNlcyBhcmUgcmVhbGx5 IHdvcnRoIHRoZSBlZmZvcnQgd2hlbiBkb2N1bWVudGluZy4NCj4gDQo+IElmIHdlIGltYWdpbmUg d2hhdCBlLmcuIFBhdWxvJ3MgdGVzdCBkb2N1bWVudGF0aW9uIGluDQo+IGttc19mcm9udGJ1ZmZl cl90cmFja2luZy5jIGxvb2tzIGxpa2UsIGl0J2xsIGJlIGJhZC4NCj4gDQo+IEkgdGhvdWdodCB0 aGUgdGVzdCBkb2N1bWVudGF0aW9uIHRoYXQgVGhvbWFzIFdvb2Qgd29ya2VkIG9uIChubyBpZGVh IGFib3V0DQo+IHN0YXR1cykgd291bGQgZ2l2ZSB1cyB0aGUgZnVsbCBwb3dlciBhbmQgZXhwcmVz c2l2ZW5lc3Mgb2YgZ3RrZG9jLCBidXQgZm9yDQo+IGJpbmFyaWVzLiBJIHRoaW5rIHRoYXQncyB3 aGF0IHdlIHdhbnQuDQo+IA0KPiBUaGVuIGZvciB0ZXN0Y2FzZXMgSSB0aGluayB3ZSBhZ2FpbiB3 YW50IHRvIGZvbGxvdyB0aGUgaW5saW5lDQo+IGRvY3VtZW50YXRpb24gc3R5bGUsIHBlcmhhcHMg d2l0aCBzb21ldGhpbmcgbGlrZSB0aGUgYmVsb3c6DQo+IA0KPiANCj4gCS8qKg0KPiAJICogSUdU LVN1YnRlc3Q6IHRlc3RzIHNvbWUgc3R1ZmYNCj4gCSAqDQo+IAkgKiBMb25nZXIgZXhwbGFuYXRp b24gb2YgdGVzdCBhcHByb2FjaCBhbmQgcmVzdWx0IGV2YWx1dGlvbi4NCj4gCSAqDQo+IAkgKiBN YXliZSBvdmVyIG11bHRpcGxlIHBhcmFncmFwaHMgd2l0aCBoZWFkbGluZXMgbGlrZSBDQVZFQVRT LCBvcg0KPiAJICogZXhwbGFpbmluZyBodyBidWdzIGFuZCBzdHVmZg0KPiAJICovDQo+IAlpZ3Rf c3VidGVzdCgiYmxhLWJsYS1zdWJ0ZXN0IikNCj4gDQo+IA0KPiBUaGVyZSdzIGFsc28gdGhlIHF1 ZXN0aW9uIG9mIGhvdyB0byBhc3NvY2lhdGUgYSBnaXZlbiBkb2MgZW50cnkgd2l0aCBtb3JlDQo+ IHRoZSBtdWx0aXBsZSBzdWJ0ZXN0IG5hbWVzIHRoYXQgaWd0X3N1YnRlc3RfZiBjYW4gZ2VuZXJh dGUsIGJ1dCBJIGd1ZXNzDQo+IHRoYXQgc2hvdWxkIGJlIHNvbHZlYWJsZS4NCkkgZG9uJ3QgdGhp bmsgaXRzIGV2ZW4gd29ydGggaGF2aW5nIHNhbWUgdGV4dCB3aXRoIGp1c3Qgc2luZ2xlIHdvcmRz IGNoYW5nZWQNCmdlbmVyYXRlZCBmb3IgZXZlcnkgc3VidGVzdCBpZiB0ZXN0IG5hbWUgZGVzY3Jp YmVzIHRoZSBkaWZmZXJlbmNlIChhbmQgSSBndWVzcw0KaW4gbWFueSBjYXNlcyB0aGF0IGlzIHdo YXQgd2UgaGF2ZSBub3cpLiBJdCB3b3VsZCBiZSBnb29kIHRvIGRvY3VtZW50IHN1Y2ggdGVzdHMN CmluIGdyb3Vwcy4NCg0KVGhhbmtzLA0KUmFkZWsNCj4gDQo+IEFueSwgaW4gbXkgb3BpbmlvbiBk b2N1bWVudGF0aW9uIGhhcyB0byBsb29rIHBsZWFzaW5nLCBib3RoIGluIGNvZGUgYW5kDQo+IHJl bmRlcmVkLCBvdGhlcndpc2UgcGVvcGxlIHdpbGwgbm90IGxvb2sgYXQgaXQsIG5vdCB3cml0ZSBp dCBhbmQgbm90DQo+IHVwZGF0ZSBpdC4gT3Igd29yc2UsIHRoZXkgc3RpY2sgdG8gd3JpdGluZyBm dWxsIGNvbW1lbnRzLCBiZWNhdXNlIHRoYXQncw0KPiB0aGUgb25seSB0aGluZyB0aGF0IGFsbG93 cyB0aGVtIHRvIGV4cHJlc3Mgd2hhdCB0aGV5IHdhbnQgdG8gZG9jdW1lbnQuDQo+IA0KPiBXZSBu ZWVkIHNvbWV0aGluZyBtdWNoIGJldHRlciBpbW8gdGhhbiB0aGlzIHBhdGNoIHNlcmllcyBmcm9t IHRoYXQgcG92Lg0KPiANCj4gVGhhbmtzLCBEYW5pZWwNCj4gDQo+ID4gVGhlIGRvY3VtZW50YXRp b24gY2Fubm90IGJlIGV4dHJhY3RlZCBmcm9tIGp1c3QgY29tbWVudHMsIGJlY2F1c2UNCj4gPiBh c3NvY2lhdGluZyB0aGVtIHdpdGggdGhlIGNvcnJlY3Qgc3VidGVzdCBuYW1lIHdpbGwgdGhlbiBy ZXF1aXJlIGRvaW5nDQo+ID4gcGF0dGVybiBtYXRjaGluZyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBn ZW5lcmF0b3IsIGZvciBzdWJ0ZXN0cyB3aGVyZQ0KPiA+IHRoZSBuYW1lIGlzIGdlbmVyYXRlZCBh dCBydW50aW1lIHVzaW5nIGlndF9zdWJ0ZXN0X2YuDQo+ID4gDQo+ID4gdjI6IFJlYmFzZSwgY2hh bmdlIGZ1bmN0aW9uIG5hbWUgaW4gY29tbWl0IG1lc3NhZ2UgdG8gbWF0Y2ggY29kZQ0KPiA+IA0K PiA+IHYzOiBGaXggY3VycmVudCBkb2N1bWVudGF0aW9uIHN0cmluZyB0cmFja2luZywgYWRkIG1p c3NpbmcgdmFfZW5kIChWaW5heSkNCj4gPiANCj4gPiB2NDogRml4IGJyYWluZmFydCBpbiBfX2ln dF9ydW5fc3VidGVzdA0KPiA+IA0KPiA+IFNpZ25lZC1vZmYtYnk6IFBldHJpIExhdHZhbGEgPHBl dHJpLmxhdHZhbGFAaW50ZWwuY29tPg0KPiA+IEFja2VkLWJ5OiBMZW8gTGkgPHN1bnBlbmcubGlA YW1kLmNvbT4NCj4gPiBBY2tlZC1ieTogQXJrYWRpdXN6IEhpbGVyIDxhcmthZGl1c3ouaGlsZXJA aW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+IMKgbGliL2lndF9hdXguY8KgwqB8wqDCoMKgOCArKy0t DQo+ID4gwqBsaWIvaWd0X2NvcmUuYyB8IDE0OSArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0NCj4gPiAtLS0NCj4gPiDCoGxpYi9pZ3RfY29yZS5o IHzCoMKgwqA2ICsrLQ0KPiA+IMKgMyBmaWxlcyBjaGFuZ2VkLCAxMjggaW5zZXJ0aW9ucygrKSwg MzUgZGVsZXRpb25zKC0pDQo+ID4gDQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9pZ3RfYXV4LmMgYi9s aWIvaWd0X2F1eC5jDQo+ID4gaW5kZXggZjQyOGYxNS4uZDU2ZjQxZiAxMDA2NDQNCj4gPiAtLS0g YS9saWIvaWd0X2F1eC5jDQo+ID4gKysrIGIvbGliL2lndF9hdXguYw0KPiA+IEBAIC0zMTEsNyAr MzExLDcgQEAgc3RhdGljIHZvaWQgc2lnX2hhbmRsZXIoaW50IGkpDQo+ID4gwqAgKi8NCj4gPiDC oHZvaWQgaWd0X2Zvcmtfc2lnbmFsX2hlbHBlcih2b2lkKQ0KPiA+IMKgew0KPiA+IC0JaWYgKGln dF9vbmx5X2xpc3Rfc3VidGVzdHMoKSkNCj4gPiArCWlmIChpZ3Rfb25seV9jb2xsZWN0X2RhdGEo KSkNCj4gPiDCoAkJcmV0dXJuOw0KPiA+IMKgDQo+ID4gwqAJLyogV2UgcGljayBTSUdDT05UIGFz IGl0IGlzIGEgInNhZmUiIHNpZ25hbCAtIGlmIHdlIHNlbmQgU0lHQ09OVCB0bw0KPiA+IEBAIC0z NDQsNyArMzQ0LDcgQEAgdm9pZCBpZ3RfZm9ya19zaWduYWxfaGVscGVyKHZvaWQpDQo+ID4gwqAg Ki8NCj4gPiDCoHZvaWQgaWd0X3N0b3Bfc2lnbmFsX2hlbHBlcih2b2lkKQ0KPiA+IMKgew0KPiA+ IC0JaWYgKGlndF9vbmx5X2xpc3Rfc3VidGVzdHMoKSkNCj4gPiArCWlmIChpZ3Rfb25seV9jb2xs ZWN0X2RhdGEoKSkNCj4gPiDCoAkJcmV0dXJuOw0KPiA+IMKgDQo+ID4gwqAJaWd0X3N0b3BfaGVs cGVyKCZzaWduYWxfaGVscGVyKTsNCj4gPiBAQCAtMzc1LDcgKzM3NSw3IEBAIHN0YXRpYyB2b2lk IF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSkNCj4gPiBzaHJpbmtfaGVscGVyX3Byb2Nlc3MoaW50 IGZkLCBwaWRfdCBwaWQpDQo+ID4gwqAgKi8NCj4gPiDCoHZvaWQgaWd0X2Zvcmtfc2hyaW5rX2hl bHBlcihpbnQgZHJtX2ZkKQ0KPiA+IMKgew0KPiA+IC0JYXNzZXJ0KCFpZ3Rfb25seV9saXN0X3N1 YnRlc3RzKCkpOw0KPiA+ICsJYXNzZXJ0KCFpZ3Rfb25seV9jb2xsZWN0X2RhdGEoKSk7DQo+ID4g wqAJaWd0X3JlcXVpcmUoaWd0X2Ryb3BfY2FjaGVzX2hhcyhkcm1fZmQsIERST1BfU0hSSU5LX0FM TCkpOw0KPiA+IMKgCWlndF9mb3JrX2hlbHBlcigmc2hyaW5rX2hlbHBlcikNCj4gPiDCoAkJc2hy aW5rX2hlbHBlcl9wcm9jZXNzKGRybV9mZCwgZ2V0cHBpZCgpKTsNCj4gPiBAQCAtNDczLDcgKzQ3 Myw3IEBAIHZvaWQgaWd0X3N0b3BfaGFuZ19kZXRlY3Rvcih2b2lkKQ0KPiA+IMKgI2Vsc2UNCj4g PiDCoHZvaWQgaWd0X2ZvcmtfaGFuZ19kZXRlY3RvcihpbnQgZmQpDQo+ID4gwqB7DQo+ID4gLQlp ZiAoaWd0X29ubHlfbGlzdF9zdWJ0ZXN0cygpKQ0KPiA+ICsJaWYgKGlndF9vbmx5X2NvbGxlY3Rf ZGF0YSgpKQ0KPiA+IMKgCQlyZXR1cm47DQo+ID4gwqB9DQo+ID4gwqANCj4gPiBkaWZmIC0tZ2l0 IGEvbGliL2lndF9jb3JlLmMgYi9saWIvaWd0X2NvcmUuYw0KPiA+IGluZGV4IGMwNDg4ZTkuLmYx MjZlZjggMTAwNjQ0DQo+ID4gLS0tIGEvbGliL2lndF9jb3JlLmMNCj4gPiArKysgYi9saWIvaWd0 X2NvcmUuYw0KPiA+IEBAIC05OSw3ICs5OSw3IEBADQo+ID4gwqAgKg0KPiA+IMKgICogVG8gYWxs b3cgdGhpcyBpLWctdCBwcm92aWRlcyAjaWd0X2ZpeHR1cmUgY29kZSBibG9ja3MgZm9yIHNldHVw IGNvZGUNCj4gPiBvdXRzaWRlDQo+ID4gwqAgKiBvZiBzdWJ0ZXN0cyBhbmQgYXV0b21hdGljYWxs eSBza2lwcyB0aGUgc3VidGVzdCBjb2RlIGJsb2NrcyB0aGVtc2VsdmVzLg0KPiA+IEZvcg0KPiA+ IC0gKiBzcGVjaWFsIGNhc2VzIGlndF9vbmx5X2xpc3Rfc3VidGVzdHMoKSBpcyBhbHNvIHByb3Zp ZGVkLiBGb3Igc2V0dXAgY29kZQ0KPiA+IG9ubHkNCj4gPiArICogc3BlY2lhbCBjYXNlcyBpZ3Rf b25seV9jb2xsZWN0X2RhdGEoKSBpcyBhbHNvIHByb3ZpZGVkLiBGb3Igc2V0dXAgY29kZQ0KPiA+ IG9ubHkNCj4gPiDCoCAqIHNoYXJlZCBieSBhIGdyb3VwIG9mIHN1YnRlc3QgZW5jYXBzdWxhdGUg dGhlICNpZ3RfZml4dHVyZSBibG9jayBhbmQgYWxsDQo+ID4gdGhlDQo+ID4gwqAgKiBzdWJ0ZXN0 ZXN0IGluIGEgI2lndF9zdWJ0ZXN0X2dyb3VwIGJsb2NrLg0KPiA+IMKgICoNCj4gPiBAQCAtMjUz LDkgKzI1Myw5IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgZXhpdF9oYW5kbGVyX2NvdW50Ow0KPiA+ IMKgY29uc3QgY2hhciAqaWd0X2ludGVyYWN0aXZlX2RlYnVnOw0KPiA+IMKgDQo+ID4gwqAvKiBz dWJ0ZXN0cyBoZWxwZXJzICovDQo+ID4gLXN0YXRpYyBib29sIGxpc3Rfc3VidGVzdHMgPSBmYWxz ZTsNCj4gPiAtc3RhdGljIGNoYXIgKnJ1bl9zaW5nbGVfc3VidGVzdCA9IE5VTEw7DQo+ID4gLXN0 YXRpYyBib29sIHJ1bl9zaW5nbGVfc3VidGVzdF9mb3VuZCA9IGZhbHNlOw0KPiA+ICtzdGF0aWMg Y2hhciAqc2luZ2xlX3N1YnRlc3QgPSBOVUxMOw0KPiA+ICtzdGF0aWMgYm9vbCBzaW5nbGVfc3Vi dGVzdF9mb3VuZCA9IGZhbHNlOw0KPiA+ICtzdGF0aWMgY2hhciAqY3VycmVudF9zdWJ0ZXN0X2Rv Y3VtZW50YXRpb24gPSBOVUxMOw0KPiA+IMKgc3RhdGljIGNvbnN0IGNoYXIgKmluX3N1YnRlc3Qg PSBOVUxMOw0KPiA+IMKgc3RhdGljIHN0cnVjdCB0aW1lc3BlYyBzdWJ0ZXN0X3RpbWU7DQo+ID4g wqBzdGF0aWMgY2xvY2tpZF90IGlndF9jbG9jayA9IChjbG9ja2lkX3QpLTE7DQo+ID4gQEAgLTI2 NSw2ICsyNjUsMTMgQEAgc3RhdGljIGJvb2wgaW5fYXRleGl0X2hhbmRsZXIgPSBmYWxzZTsNCj4g PiDCoHN0YXRpYyBlbnVtIHsNCj4gPiDCoAlDT05UID0gMCwgU0tJUCwgRkFJTA0KPiA+IMKgfSBz a2lwX3N1YnRlc3RzX2hlbmNlZm9ydGggPSBDT05UOw0KPiA+ICtzdGF0aWMgZW51bSB7DQo+ID4g KwlFWEVDVVRFX0FMTCwNCj4gPiArCUVYRUNVVEVfU0lOR0xFLA0KPiA+ICsJTElTVF9TVUJURVNU UywNCj4gPiArCURPQ1VNRU5ULA0KPiA+ICsJRE9DVU1FTlRfU0lOR0xFDQo+ID4gK30gcnVubW9k ZSA9IEVYRUNVVEVfQUxMOw0KPiA+IMKgDQo+ID4gwqBib29sIF9faWd0X3BsYWluX291dHB1dCA9 IGZhbHNlOw0KPiA+IMKgDQo+ID4gQEAgLTI3Nyw2ICsyODQsOCBAQCBib29sIHRlc3RfY2hpbGQ7 DQo+ID4gwqBlbnVtIHsNCj4gPiDCoCBPUFRfTElTVF9TVUJURVNUUywNCj4gPiDCoCBPUFRfUlVO X1NVQlRFU1QsDQo+ID4gKyBPUFRfRE9DX1NVQlRFU1RTLA0KPiA+ICsgT1BUX0RPQ19TSU5HTEVf U1VCVEVTVCwNCj4gPiDCoCBPUFRfREVTQ1JJUFRJT04sDQo+ID4gwqAgT1BUX0RFQlVHLA0KPiA+ IMKgIE9QVF9JTlRFUkFDVElWRV9ERUJVRywNCj4gPiBAQCAtNDY5LDcgKzQ3OCw3IEBAIGJvb2wg X19pZ3RfZml4dHVyZSh2b2lkKQ0KPiA+IMKgew0KPiA+IMKgCWFzc2VydCghaW5fZml4dHVyZSk7 DQo+ID4gwqANCj4gPiAtCWlmIChpZ3Rfb25seV9saXN0X3N1YnRlc3RzKCkpDQo+ID4gKwlpZiAo aWd0X29ubHlfY29sbGVjdF9kYXRhKCkpDQo+ID4gwqAJCXJldHVybiBmYWxzZTsNCj4gPiDCoA0K PiA+IMKgCWlmIChza2lwX3N1YnRlc3RzX2hlbmNlZm9ydGgpDQo+ID4gQEAgLTU2Myw3ICs1NzIs NyBAQCBzdGF0aWMgdm9pZCBsb3dfbWVtX2tpbGxlcl9kaXNhYmxlKGJvb2wgZGlzYWJsZSkNCj4g PiDCoGJvb2wgaWd0X2V4aXRfY2FsbGVkOw0KPiA+IMKgc3RhdGljIHZvaWQgY29tbW9uX2V4aXRf aGFuZGxlcihpbnQgc2lnKQ0KPiA+IMKgew0KPiA+IC0JaWYgKCFpZ3Rfb25seV9saXN0X3N1YnRl c3RzKCkpIHsNCj4gPiArCWlmICghaWd0X29ubHlfY29sbGVjdF9kYXRhKCkpIHsNCj4gPiDCoAkJ bG93X21lbV9raWxsZXJfZGlzYWJsZShmYWxzZSk7DQo+ID4gwqAJCWtpY2tfZmJjb24odHJ1ZSk7 DQo+ID4gwqAJfQ0KPiA+IEBAIC01ODMsNyArNTkyLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfdmVy c2lvbih2b2lkKQ0KPiA+IMKgew0KPiA+IMKgCXN0cnVjdCB1dHNuYW1lIHV0czsNCj4gPiDCoA0K PiA+IC0JaWYgKGxpc3Rfc3VidGVzdHMpDQo+ID4gKwlpZiAoaWd0X29ubHlfY29sbGVjdF9kYXRh KCkpDQo+ID4gwqAJCXJldHVybjsNCj4gPiDCoA0KPiA+IMKgCXVuYW1lKCZ1dHMpOw0KPiA+IEBA IC01OTksNiArNjA4LDggQEAgc3RhdGljIHZvaWQgcHJpbnRfdXNhZ2UoY29uc3QgY2hhciAqaGVs cF9zdHIsIGJvb2wNCj4gPiBvdXRwdXRfb25fc3RkZXJyKQ0KPiA+IMKgDQo+ID4gwqAJZnByaW50 ZihmLCAiVXNhZ2U6ICVzIFtPUFRJT05TXVxuIiwgY29tbWFuZF9zdHIpOw0KPiA+IMKgCWZwcmlu dGYoZiwgIsKgwqAtLWxpc3Qtc3VidGVzdHNcbiINCj4gPiArCQnCoMKgwqAiwqDCoC0tZG9jdW1l bnQtYWxsLXN1YnRlc3RzXG4iDQo+ID4gKwkJwqDCoMKgIsKgwqAtLWRvY3VtZW50LXN1YnRlc3Qg PHBhdHRlcm4+XG4iDQo+ID4gwqAJCcKgwqDCoCLCoMKgLS1ydW4tc3VidGVzdCA8cGF0dGVybj5c biINCj4gPiDCoAkJwqDCoMKgIsKgwqAtLWRlYnVnWz1sb2ctZG9tYWluXVxuIg0KPiA+IMKgCQnC oMKgwqAiwqDCoC0taW50ZXJhY3RpdmUtZGVidWdbPWRvbWFpbl1cbiINCj4gPiBAQCAtNzEwLDYg KzcyMSw4IEBAIHN0YXRpYyBpbnQgY29tbW9uX2luaXQoaW50ICphcmdjLCBjaGFyICoqYXJndiwN Cj4gPiDCoAlzdGF0aWMgc3RydWN0IG9wdGlvbiBsb25nX29wdGlvbnNbXSA9IHsNCj4gPiDCoAkJ eyJsaXN0LXN1YnRlc3RzIiwgMCwgMCwgT1BUX0xJU1RfU1VCVEVTVFN9LA0KPiA+IMKgCQl7InJ1 bi1zdWJ0ZXN0IiwgMSwgMCwgT1BUX1JVTl9TVUJURVNUfSwNCj4gPiArCQl7ImRvY3VtZW50LWFs bC1zdWJ0ZXN0cyIsIDAsIDAsIE9QVF9ET0NfU1VCVEVTVFN9LA0KPiA+ICsJCXsiZG9jdW1lbnQt c3VidGVzdCIsIDEsIDAsIE9QVF9ET0NfU0lOR0xFX1NVQlRFU1R9LA0KPiA+IMKgCQl7ImhlbHAt ZGVzY3JpcHRpb24iLCAwLCAwLCBPUFRfREVTQ1JJUFRJT059LA0KPiA+IMKgCQl7ImRlYnVnIiwg b3B0aW9uYWxfYXJndW1lbnQsIDAsIE9QVF9ERUJVR30sDQo+ID4gwqAJCXsiaW50ZXJhY3RpdmUt ZGVidWciLCBvcHRpb25hbF9hcmd1bWVudCwgMCwNCj4gPiBPUFRfSU5URVJBQ1RJVkVfREVCVUd9 LA0KPiA+IEBAIC04MDAsMTIgKzgxMywyNCBAQCBzdGF0aWMgaW50IGNvbW1vbl9pbml0KGludCAq YXJnYywgY2hhciAqKmFyZ3YsDQo+ID4gwqAJCQkJaWd0X2xvZ19kb21haW5fZmlsdGVyID0gc3Ry ZHVwKG9wdGFyZyk7DQo+ID4gwqAJCQlicmVhazsNCj4gPiDCoAkJY2FzZSBPUFRfTElTVF9TVUJU RVNUUzoNCj4gPiAtCQkJaWYgKCFydW5fc2luZ2xlX3N1YnRlc3QpDQo+ID4gLQkJCQlsaXN0X3N1 YnRlc3RzID0gdHJ1ZTsNCj4gPiArCQkJaWYgKHJ1bm1vZGUgPT0gRVhFQ1VURV9BTEwpDQo+ID4g KwkJCQlydW5tb2RlID0gTElTVF9TVUJURVNUUzsNCj4gPiDCoAkJCWJyZWFrOw0KPiA+IMKgCQlj YXNlIE9QVF9SVU5fU1VCVEVTVDoNCj4gPiAtCQkJaWYgKCFsaXN0X3N1YnRlc3RzKQ0KPiA+IC0J CQkJcnVuX3NpbmdsZV9zdWJ0ZXN0ID0gc3RyZHVwKG9wdGFyZyk7DQo+ID4gKwkJCWlmIChydW5t b2RlID09IEVYRUNVVEVfQUxMKSB7DQo+ID4gKwkJCQlydW5tb2RlID0gRVhFQ1VURV9TSU5HTEU7 DQo+ID4gKwkJCQlzaW5nbGVfc3VidGVzdCA9IHN0cmR1cChvcHRhcmcpOw0KPiA+ICsJCQl9DQo+ ID4gKwkJCWJyZWFrOw0KPiA+ICsJCWNhc2UgT1BUX0RPQ19TVUJURVNUUzoNCj4gPiArCQkJaWYg KHJ1bm1vZGUgPT0gRVhFQ1VURV9BTEwpDQo+ID4gKwkJCQlydW5tb2RlID0gRE9DVU1FTlQ7DQo+ ID4gKwkJCWJyZWFrOw0KPiA+ICsJCWNhc2UgT1BUX0RPQ19TSU5HTEVfU1VCVEVTVDoNCj4gPiAr CQkJaWYgKHJ1bm1vZGUgPT0gRVhFQ1VURV9BTEwpIHsNCj4gPiArCQkJCXJ1bm1vZGUgPSBET0NV TUVOVF9TSU5HTEU7DQo+ID4gKwkJCQlzaW5nbGVfc3VidGVzdCA9IHN0cmR1cChvcHRhcmcpOw0K PiA+ICsJCQl9DQo+ID4gwqAJCQlicmVhazsNCj4gPiDCoAkJY2FzZSBPUFRfREVTQ1JJUFRJT046 DQo+ID4gwqAJCQlwcmludF90ZXN0X2Rlc2NyaXB0aW9uKCk7DQo+ID4gQEAgLTgzNywxMSArODYy LDExIEBAIG91dDoNCj4gPiDCoAkvKiBleGl0IGltbWVkaWF0ZWx5IGlmIHRoaXMgdGVzdCBoYXMg bm8gc3VidGVzdHMgYW5kIGEgc3VidGVzdCBvcg0KPiA+IHRoZQ0KPiA+IMKgCcKgKiBsaXN0IG9m IHN1YnRlc3RzIGhhcyBiZWVuIHJlcXVlc3RlZCAqLw0KPiA+IMKgCWlmICghdGVzdF93aXRoX3N1 YnRlc3RzKSB7DQo+ID4gLQkJaWYgKHJ1bl9zaW5nbGVfc3VidGVzdCkgew0KPiA+IC0JCQlpZ3Rf d2FybigiVW5rbm93biBzdWJ0ZXN0OiAlc1xuIiwNCj4gPiBydW5fc2luZ2xlX3N1YnRlc3QpOw0K PiA+ICsJCWlmIChydW5tb2RlID09IEVYRUNVVEVfU0lOR0xFIHx8IHJ1bm1vZGUgPT0NCj4gPiBE T0NVTUVOVF9TSU5HTEUpIHsNCj4gPiArCQkJaWd0X3dhcm4oIlVua25vd24gc3VidGVzdDogJXNc biIsIHNpbmdsZV9zdWJ0ZXN0KTsNCj4gPiDCoAkJCWV4aXQoSUdUX0VYSVRfSU5WQUxJRCk7DQo+ ID4gwqAJCX0NCj4gPiAtCQlpZiAobGlzdF9zdWJ0ZXN0cykNCj4gPiArCQlpZiAocnVubW9kZSA9 PSBMSVNUX1NVQlRFU1RTIHx8IHJ1bm1vZGUgPT0gRE9DVU1FTlQpDQo+ID4gwqAJCQlleGl0KElH VF9FWElUX0lOVkFMSUQpOw0KPiA+IMKgCX0NCj4gPiDCoA0KPiA+IEBAIC04NDksNyArODc0LDcg QEAgb3V0Og0KPiA+IMKgCQkvKiBleGl0IHdpdGggbm8gZXJyb3IgZm9yIC1oLy0taGVscCAqLw0K PiA+IMKgCQlleGl0KHJldCA9PSAtMSA/IDAgOiBJR1RfRVhJVF9JTlZBTElEKTsNCj4gPiDCoA0K PiA+IC0JaWYgKCFsaXN0X3N1YnRlc3RzKSB7DQo+ID4gKwlpZiAoIWlndF9vbmx5X2NvbGxlY3Rf ZGF0YSgpKSB7DQo+ID4gwqAJCWtpY2tfZmJjb24oZmFsc2UpOw0KPiA+IMKgCQlrbXNnKEtFUk5f SU5GTyAiW0lHVF0gJXM6IGV4ZWN1dGluZ1xuIiwgY29tbWFuZF9zdHIpOw0KPiA+IMKgCQlwcmlu dF92ZXJzaW9uKCk7DQo+ID4gQEAgLTk1NywxNiArOTgyLDM4IEBAIGJvb2wgX19pZ3RfcnVuX3N1 YnRlc3QoY29uc3QgY2hhciAqc3VidGVzdF9uYW1lKQ0KPiA+IMKgCQkJaWd0X2V4aXQoKTsNCj4g PiDCoAkJfQ0KPiA+IMKgDQo+ID4gLQlpZiAobGlzdF9zdWJ0ZXN0cykgew0KPiA+ICsJaWYgKHJ1 bm1vZGUgPT0gTElTVF9TVUJURVNUUykgew0KPiA+IMKgCQlwcmludGYoIiVzXG4iLCBzdWJ0ZXN0 X25hbWUpOw0KPiA+IMKgCQlyZXR1cm4gZmFsc2U7DQo+ID4gwqAJfQ0KPiA+IMKgDQo+ID4gLQlp ZiAocnVuX3NpbmdsZV9zdWJ0ZXN0KSB7DQo+ID4gLQkJaWYgKHV3aWxkbWF0KHN1YnRlc3RfbmFt ZSwgcnVuX3NpbmdsZV9zdWJ0ZXN0KSA9PSAwKQ0KPiA+ICsJaWYgKHJ1bm1vZGUgPT0gRE9DVU1F TlQpIHsNCj4gPiArCQlpZiAoY3VycmVudF9zdWJ0ZXN0X2RvY3VtZW50YXRpb24pIHsNCj4gPiAr CQkJcHJpbnRmKCIlczpcblxuIiwgc3VidGVzdF9uYW1lKTsNCj4gPiArCQkJcHJpbnRmKCIlcyIs IGN1cnJlbnRfc3VidGVzdF9kb2N1bWVudGF0aW9uKTsNCj4gPiArCQkJZnJlZShjdXJyZW50X3N1 YnRlc3RfZG9jdW1lbnRhdGlvbik7DQo+ID4gKwkJCWN1cnJlbnRfc3VidGVzdF9kb2N1bWVudGF0 aW9uID0gTlVMTDsNCj4gPiArCQl9DQo+ID4gKwkJcmV0dXJuIGZhbHNlOw0KPiA+ICsJfQ0KPiA+ ICsNCj4gPiArCWlmIChydW5tb2RlID09IEVYRUNVVEVfU0lOR0xFIHx8IHJ1bm1vZGUgPT0gRE9D VU1FTlRfU0lOR0xFKSB7DQo+ID4gKwkJYm9vbCBzdG9wID0gcnVubW9kZSA9PSBET0NVTUVOVF9T SU5HTEU7DQo+ID4gKw0KPiA+ICsJCWlmICh1d2lsZG1hdChzdWJ0ZXN0X25hbWUsIHNpbmdsZV9z dWJ0ZXN0KSkgew0KPiA+ICsJCQlzaW5nbGVfc3VidGVzdF9mb3VuZCA9IHRydWU7DQo+ID4gKw0K PiA+ICsJCQlpZiAocnVubW9kZSA9PSBET0NVTUVOVF9TSU5HTEUgJiYNCj4gPiBjdXJyZW50X3N1 YnRlc3RfZG9jdW1lbnRhdGlvbikNCj4gPiArCQkJCXByaW50ZigiJXMiLA0KPiA+IGN1cnJlbnRf c3VidGVzdF9kb2N1bWVudGF0aW9uKTsNCj4gPiArCQl9IGVsc2Ugew0KPiA+ICsJCQlzdG9wID0g dHJ1ZTsNCj4gPiArCQl9DQo+ID4gKw0KPiA+ICsJCWZyZWUoY3VycmVudF9zdWJ0ZXN0X2RvY3Vt ZW50YXRpb24pOw0KPiA+ICsJCWN1cnJlbnRfc3VidGVzdF9kb2N1bWVudGF0aW9uID0gTlVMTDsN Cj4gPiArDQo+ID4gKwkJaWYgKHN0b3ApDQo+ID4gwqAJCQlyZXR1cm4gZmFsc2U7DQo+ID4gLQkJ ZWxzZQ0KPiA+IC0JCQlydW5fc2luZ2xlX3N1YnRlc3RfZm91bmQgPSB0cnVlOw0KPiA+IMKgCX0N Cj4gPiDCoA0KPiA+IMKgCWlmIChza2lwX3N1YnRlc3RzX2hlbmNlZm9ydGgpIHsNCj4gPiBAQCAt OTgzLDEwICsxMDMwLDUyIEBAIGJvb2wgX19pZ3RfcnVuX3N1YnRlc3QoY29uc3QgY2hhciAqc3Vi dGVzdF9uYW1lKQ0KPiA+IMKgCV9pZ3RfbG9nX2J1ZmZlcl9yZXNldCgpOw0KPiA+IMKgDQo+ID4g wqAJZ2V0dGltZSgmc3VidGVzdF90aW1lKTsNCj4gPiArDQo+ID4gwqAJcmV0dXJuIChpbl9zdWJ0 ZXN0ID0gc3VidGVzdF9uYW1lKTsNCj4gPiDCoH0NCj4gPiDCoA0KPiA+IMKgLyoqDQo+ID4gKyAq IGlndF9kb2N1bWVudF9zdWJ0ZXN0Og0KPiA+ICsgKiBAZG9jdW1lbnRhdGlvbjogZG9jdW1lbnRh dGlvbiBmb3IgdGhlIG5leHQgc3VidGVzdA0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9u IHNldHMgdGhlIGRvY3VtZW50YXRpb24gc3RyaW5nIGZvciB0aGUgbmV4dCBvY2N1cnJpbmcNCj4g PiBzdWJ0ZXN0Lg0KPiA+ICsgKi8NCj4gPiArdm9pZCBpZ3RfZG9jdW1lbnRfc3VidGVzdChjb25z dCBjaGFyICpkb2N1bWVudGF0aW9uKQ0KPiA+ICt7DQo+ID4gKwlpZiAocnVubW9kZSA9PSBET0NV TUVOVCB8fCBydW5tb2RlID09IERPQ1VNRU5UX1NJTkdMRSkgew0KPiA+ICsJCWZyZWUoY3VycmVu dF9zdWJ0ZXN0X2RvY3VtZW50YXRpb24pOw0KPiA+ICsJCWN1cnJlbnRfc3VidGVzdF9kb2N1bWVu dGF0aW9uID0gc3RyZHVwKGRvY3VtZW50YXRpb24pOw0KPiA+ICsJfQ0KPiA+ICt9DQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICogaWd0X2RvY3VtZW50X3N1YnRlc3RfZjoNCj4gPiArICogQGRvY3Vt ZW50YXRpb246IERvY3VtZW50YXRpb24gZm9yIHRoZSBuZXh0IHN1YnRlc3QNCj4gPiArICogQC4u LjogZm9ybWF0IHN0cmluZyBhbmQgb3B0aW9uYWwgYXJndW1lbnRzDQo+ID4gKyAqDQo+ID4gKyAq IFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgZG9jdW1lbnRhdGlvbiBzdHJpbmcgZm9yIHRoZSBuZXh0 IG9jY3VycmluZw0KPiA+IHN1YnRlc3QuDQo+ID4gKyAqDQo+ID4gKyAqIExpa2UgaWd0X2RvY3Vt ZW50X3N1YnRlc3QoKSwgYnV0IGFsc28gYWNjZXB0cyBhIHByaW50ZiBmb3JtYXQNCj4gPiArICog c3RyaW5nIGluc3RlYWQgb2YgYSBzdGF0aWMgc3RyaW5nLg0KPiA+ICsgKi8NCj4gPiArX19hdHRy aWJ1dGVfXygoZm9ybWF0KHByaW50ZiwgMSwgMikpKQ0KPiA+ICt2b2lkIGlndF9kb2N1bWVudF9z dWJ0ZXN0X2YoY29uc3QgY2hhciAqZG9jdW1lbnRhdGlvbiwgLi4uKQ0KPiA+ICt7DQo+ID4gKwlp bnQgZXJyOw0KPiA+ICsJdmFfbGlzdCBhcmdzOw0KPiA+ICsNCj4gPiArCWlmIChydW5tb2RlID09 IERPQ1VNRU5UIHx8IHJ1bm1vZGUgPT0gRE9DVU1FTlRfU0lOR0xFKSB7DQo+ID4gKwkJZnJlZShj dXJyZW50X3N1YnRlc3RfZG9jdW1lbnRhdGlvbik7DQo+ID4gKwkJdmFfc3RhcnQoYXJncywgZG9j dW1lbnRhdGlvbik7DQo+ID4gKwkJZXJyID0gdmFzcHJpbnRmKCZjdXJyZW50X3N1YnRlc3RfZG9j dW1lbnRhdGlvbiwNCj4gPiBkb2N1bWVudGF0aW9uLCBhcmdzKTsNCj4gPiArCQl2YV9lbmQoYXJn cyk7DQo+ID4gKwkJaWYgKGVyciA8IDApDQo+ID4gKwkJCWN1cnJlbnRfc3VidGVzdF9kb2N1bWVu dGF0aW9uID0gTlVMTDsNCj4gPiArCX0NCj4gPiArfQ0KPiA+ICsNCj4gPiArDQo+ID4gKy8qKg0K PiA+IMKgICogaWd0X3N1YnRlc3RfbmFtZToNCj4gPiDCoCAqDQo+ID4gwqAgKiBSZXR1cm5zOiBU aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IGV4ZWN1dGVkIHN1YnRlc3Qgb3IgTlVMTCBpZiBjYWxs ZWQNCj4gPiBmcm9tDQo+ID4gQEAgLTk5OCwxNCArMTA4NywxNCBAQCBjb25zdCBjaGFyICppZ3Rf c3VidGVzdF9uYW1lKHZvaWQpDQo+ID4gwqB9DQo+ID4gwqANCj4gPiDCoC8qKg0KPiA+IC0gKiBp Z3Rfb25seV9saXN0X3N1YnRlc3RzOg0KPiA+ICsgKiBpZ3Rfb25seV9jb2xsZWN0X2RhdGE6DQo+ ID4gwqAgKg0KPiA+IC0gKiBSZXR1cm5zOiBSZXR1cm5zIHRydWUgaWYgb25seSBzdWJ0ZXN0IHNo b3VsZCBiZSBsaXN0ZWQgYW5kIGFueSBzZXR1cA0KPiA+IGNvZGUNCj4gPiArICogUmV0dXJuczog UmV0dXJucyB0cnVlIGlmIHRoZSBydW5uaW5nIG1vZGUgaXMgb25seSBjb2xsZWN0aW5nIGRhdGEg YW5kDQo+ID4gYW55IHNldHVwIGNvZGUNCj4gPiDCoCAqIG11c3QgYmUgc2tpcHBlZCwgZmFsc2Ug b3RoZXJ3aXNlLg0KPiA+IMKgICovDQo+ID4gLWJvb2wgaWd0X29ubHlfbGlzdF9zdWJ0ZXN0cyh2 b2lkKQ0KPiA+ICtib29sIGlndF9vbmx5X2NvbGxlY3RfZGF0YSh2b2lkKQ0KPiA+IMKgew0KPiA+ IC0JcmV0dXJuIGxpc3Rfc3VidGVzdHM7DQo+ID4gKwlyZXR1cm4gcnVubW9kZSAhPSBFWEVDVVRF X0FMTCAmJiBydW5tb2RlICE9IEVYRUNVVEVfU0lOR0xFOw0KPiA+IMKgfQ0KPiA+IMKgDQo+ID4g wqB2b2lkIF9faWd0X3N1YnRlc3RfZ3JvdXBfc2F2ZShpbnQgKnNhdmUpDQo+ID4gQEAgLTEwNTks NyArMTE0OCw3IEBAIHZvaWQgaWd0X3NraXAoY29uc3QgY2hhciAqZiwgLi4uKQ0KPiA+IMKgDQo+ ID4gwqAJYXNzZXJ0KCF0ZXN0X2NoaWxkKTsNCj4gPiDCoA0KPiA+IC0JaWYgKCFpZ3Rfb25seV9s aXN0X3N1YnRlc3RzKCkpIHsNCj4gPiArCWlmICghaWd0X29ubHlfY29sbGVjdF9kYXRhKCkpIHsN Cj4gPiDCoAkJdmFfc3RhcnQoYXJncywgZik7DQo+ID4gwqAJCXZwcmludGYoZiwgYXJncyk7DQo+ ID4gwqAJCXZhX2VuZChhcmdzKTsNCj4gPiBAQCAtMTQ0MywxMiArMTUzMiwxMiBAQCB2b2lkIGln dF9leGl0KHZvaWQpDQo+ID4gwqAJCWdfa2V5X2ZpbGVfZnJlZShpZ3Rfa2V5X2ZpbGUpOw0KPiA+ IMKgI2VuZGlmDQo+ID4gwqANCj4gPiAtCWlmIChydW5fc2luZ2xlX3N1YnRlc3QgJiYgIXJ1bl9z aW5nbGVfc3VidGVzdF9mb3VuZCkgew0KPiA+IC0JCWlndF93YXJuKCJVbmtub3duIHN1YnRlc3Q6 ICVzXG4iLCBydW5fc2luZ2xlX3N1YnRlc3QpOw0KPiA+ICsJaWYgKHNpbmdsZV9zdWJ0ZXN0ICYm ICFzaW5nbGVfc3VidGVzdF9mb3VuZCkgew0KPiA+ICsJCWlndF93YXJuKCJVbmtub3duIHN1YnRl c3Q6ICVzXG4iLCBzaW5nbGVfc3VidGVzdCk7DQo+ID4gwqAJCWV4aXQoSUdUX0VYSVRfSU5WQUxJ RCk7DQo+ID4gwqAJfQ0KPiA+IMKgDQo+ID4gLQlpZiAoaWd0X29ubHlfbGlzdF9zdWJ0ZXN0cygp KQ0KPiA+ICsJaWYgKGlndF9vbmx5X2NvbGxlY3RfZGF0YSgpKQ0KPiA+IMKgCQlleGl0KElHVF9F WElUX1NVQ0NFU1MpOw0KPiA+IMKgDQo+ID4gwqAJLyogQ2FsbGluZyB0aGlzIHdpdGhvdXQgY2Fs bGluZyBvbmUgb2YgdGhlIGFib3ZlIGlzIGEgZmFpbHVyZSAqLw0KPiA+IEBAIC0yMDEyLDcgKzIx MDEsNyBAQCBib29sIGlndF9ydW5faW5fc2ltdWxhdGlvbih2b2lkKQ0KPiA+IMKgICovDQo+ID4g wqB2b2lkIGlndF9za2lwX29uX3NpbXVsYXRpb24odm9pZCkNCj4gPiDCoHsNCj4gPiAtCWlmIChp Z3Rfb25seV9saXN0X3N1YnRlc3RzKCkpDQo+ID4gKwlpZiAoaWd0X29ubHlfY29sbGVjdF9kYXRh KCkpDQo+ID4gwqAJCXJldHVybjsNCj4gPiDCoA0KPiA+IMKgCWlmICghaW5fZml4dHVyZSAmJiAh aW5fc3VidGVzdCkgew0KPiA+IEBAIC0yMDg3LDcgKzIxNzYsNyBAQCB2b2lkIGlndF92bG9nKGNv bnN0IGNoYXIgKmRvbWFpbiwgZW51bSBpZ3RfbG9nX2xldmVsDQo+ID4gbGV2ZWwsIGNvbnN0IGNo YXIgKmZvcm1hdCwNCj4gPiDCoAlwcm9ncmFtX25hbWUgPSBjb21tYW5kX3N0cjsNCj4gPiDCoCNl bmRpZg0KPiA+IMKgDQo+ID4gLQlpZiAobGlzdF9zdWJ0ZXN0cyAmJiBsZXZlbCA8PSBJR1RfTE9H X1dBUk4pDQo+ID4gKwlpZiAoaWd0X29ubHlfY29sbGVjdF9kYXRhKCkgJiYgbGV2ZWwgPD0gSUdU X0xPR19XQVJOKQ0KPiA+IMKgCQlyZXR1cm47DQo+ID4gwqANCj4gPiDCoAlpZiAodmFzcHJpbnRm KCZsaW5lLCBmb3JtYXQsIGFyZ3MpID09IC0xKQ0KPiA+IGRpZmYgLS1naXQgYS9saWIvaWd0X2Nv cmUuaCBiL2xpYi9pZ3RfY29yZS5oDQo+ID4gaW5kZXggMTYxOWE5ZC4uMjc1ZTQ2NyAxMDA2NDQN Cj4gPiAtLS0gYS9saWIvaWd0X2NvcmUuaA0KPiA+ICsrKyBiL2xpYi9pZ3RfY29yZS5oDQo+ID4g QEAgLTE5Nyw4ICsxOTcsMTIgQEAgYm9vbCBfX2lndF9ydW5fc3VidGVzdChjb25zdCBjaGFyICpz dWJ0ZXN0X25hbWUpOw0KPiA+IMKgI2RlZmluZSBpZ3Rfc3VidGVzdF9mKGYuLi4pIFwNCj4gPiDC oAlfX2lndF9zdWJ0ZXN0X2YoaWd0X3Rva2VuY2F0KF9fdG1wY2hhciwgX19MSU5FX18pLCBmKQ0K PiA+IMKgDQo+ID4gK3ZvaWQgaWd0X2RvY3VtZW50X3N1YnRlc3QoY29uc3QgY2hhciAqZG9jdW1l bnRhdGlvbik7DQo+ID4gK19fYXR0cmlidXRlX18oKGZvcm1hdChwcmludGYsIDEsIDIpKSkNCj4g PiArdm9pZCBpZ3RfZG9jdW1lbnRfc3VidGVzdF9mKGNvbnN0IGNoYXIgKmRvY3VtZW50YXRpb24s IC4uLik7DQo+ID4gKw0KPiA+IMKgY29uc3QgY2hhciAqaWd0X3N1YnRlc3RfbmFtZSh2b2lkKTsN Cj4gPiAtYm9vbCBpZ3Rfb25seV9saXN0X3N1YnRlc3RzKHZvaWQpOw0KPiA+ICtib29sIGlndF9v bmx5X2NvbGxlY3RfZGF0YSh2b2lkKTsNCj4gPiDCoA0KPiA+IMKgdm9pZCBfX2lndF9zdWJ0ZXN0 X2dyb3VwX3NhdmUoaW50ICopOw0KPiA+IMKgdm9pZCBfX2lndF9zdWJ0ZXN0X2dyb3VwX3Jlc3Rv cmUoaW50KTsNCj4gPiAtLcKgDQo+ID4gMi45LjMNCj4gPiANCj4gPiBfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiA+IEludGVsLWdmeCBtYWlsaW5nIGxp c3QNCj4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnDQo+ID4gaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngNCj4gDQo+IApfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFp bGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK