From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: Re: [PATCH i-g-t] tests/kms_frontbuffer_tracking: convert macros to functions Date: Mon, 04 Sep 2017 15:09:10 -0300 Message-ID: <1504548550.2824.5.camel@intel.com> References: <1502702753-6147-1-git-send-email-daniel.vetter@ffwll.ch> <1504295078.28453.93.camel@intel.com> <20170904080019.z6b3wg2gebiwywn2@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id B8C8F6E43D for ; Mon, 4 Sep 2017 18:09:32 +0000 (UTC) In-Reply-To: <20170904080019.z6b3wg2gebiwywn2@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: Daniel Vetter , Intel Graphics Development , Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org RW0gU2VnLCAyMDE3LTA5LTA0IMOgcyAxMDowMCArMDIwMCwgRGFuaWVsIFZldHRlciBlc2NyZXZl dToKPiBPbiBGcmksIFNlcCAwMSwgMjAxNyBhdCAwNDo0NDozOFBNIC0wMzAwLCBQYXVsbyBaYW5v bmkgd3JvdGU6Cj4gPiBFbSBTZWcsIDIwMTctMDgtMTQgw6BzIDExOjI1ICswMjAwLCBEYW5pZWwg VmV0dGVyIGVzY3JldmV1Ogo+ID4gPiBNYWNyb3MgdGhhdCBzaG91bGQgYmUgQyBmdW5jdGlvbnMg YnV0IGFyZW4ndCBhcmUgcmVhbGx5IGhhcmQgdG8KPiA+ID4gcmVhZCBhbmQgY29uZnVzaW5nLiBD b252ZXJ0IHRoZW0gb3Zlci4KPiA+ID4gCj4gPiA+IHYyOiBDbGVhbiB1cCBjb21taXQgbWVzc2Fn ZSBhbmQga2VlcCBwcmludGluZyB0aGUgbGluZSBudW1iZXJzCj4gPiA+IChQYXVsbykuCj4gPiA+ IAo+ID4gPiB2MzogQWN0dWFsbHkgZ2l0IGFkZCAoc2lsbHkgbWUpLgo+ID4gPiAKPiA+ID4gQ2M6 IFBhdWxvIFphbm9uaSA8cGF1bG8uci56YW5vbmlAaW50ZWwuY29tPgo+ID4gPiBTaWduZWQtb2Zm LWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGludGVsLmNvbT4KPiA+IAo+ID4gVGhh bmtzIGZvciBkb2luZyB0aGF0LiBXb3JrcyBmb3IgbWUgdGhpcyB3YXk6Cj4gPiBSZXZpZXdlZC1i eTogUGF1bG8gWmFub25pIDxwYXVsby5yLnphbm9uaUBpbnRlbC5jb20+Cj4gCj4gVGhhbmtzLCBw dXNoZWQuCj4gCj4gPiBCdXQgSSdtIHN0aWxsIHdhaXRpbmcgZm9yIHRoZSBwYXRjaCB0aGF0IHJl bW92ZXMgdGhvc2UgYm9ndXMgbGluZQo+ID4gbnVtYmVycyBpbiBldmVyeSBlcnJvciBtZXNzYWdl IHdlIHByaW50IDopLgo+IAo+IEhtLCB3aGljaCBib2d1cyBsaW5lIG51bWJlcnMgd2hlcmU/CgpF dmVyeSBpZ3RfbG9nIG1lc3NhZ2UgaXMgc3RhcnRzIHdpdGg6CihrbXNfZnJvbnRidWZmZXJfdHJh Y2tpbmc6WFhYWCkgd2hlcmUgWFhYWCBpcyBhIG51bWJlciB0aGF0IG1lYW5zCm5vdGhpbmcgYnV0 IGxvb2tzIGxpa2UgYSBsaW5lIG51bWJlciwgZXhjZXB0IHRoYXQgdGhhdCBsaW5lIHVzdWFsbHkg aGFzCm5vdGhpbmcgdG8gZG8gd2l0aCB0aGUgbWVzc2FnZS4KCj4gLURhbmllbAo+ID4gCj4gPiA+ IC0tLQo+ID4gPiDCoHRlc3RzL2ttc19mcm9udGJ1ZmZlcl90cmFja2luZy5jIHwgMTcxICsrKysr KysrKysrKysrKysrKysrLS0tLS0KPiA+ID4gLS0tLQo+ID4gPiAtLS0tLS0tLS0tCj4gPiA+IMKg MSBmaWxlIGNoYW5nZWQsIDg5IGluc2VydGlvbnMoKyksIDgyIGRlbGV0aW9ucygtKQo+ID4gPiAK PiA+ID4gZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19mcm9udGJ1ZmZlcl90cmFja2luZy5jCj4gPiA+ IGIvdGVzdHMva21zX2Zyb250YnVmZmVyX3RyYWNraW5nLmMKPiA+ID4gaW5kZXggZTAzNTI0ZjFj NDViLi5hMDY4YzhhZmI2ZDggMTAwNjQ0Cj4gPiA+IC0tLSBhL3Rlc3RzL2ttc19mcm9udGJ1ZmZl cl90cmFja2luZy5jCj4gPiA+ICsrKyBiL3Rlc3RzL2ttc19mcm9udGJ1ZmZlcl90cmFja2luZy5j Cj4gPiA+IEBAIC0xNjc3LDg4ICsxNjc3LDk1IEBAIHN0YXRpYyBpbnQgYWRqdXN0X2Fzc2VydGlv bl9mbGFncyhjb25zdAo+ID4gPiBzdHJ1Y3QgdGVzdF9tb2RlICp0LCBpbnQgZmxhZ3MpCj4gPiA+ IMKgCXJldHVybiBmbGFnczsKPiA+ID4gwqB9Cj4gPiA+IMKgCj4gPiA+IC0jZGVmaW5lIGRvX2Ny Y19hc3NlcnRpb25zKGZsYWdzLCBtYW5kYXRvcnlfc2lua19jcmMpIGRvIHsJCj4gPiA+IAkKPiA+ ID4gXAo+ID4gPiAtCWludCBmbGFnc19fID0gKGZsYWdzKTsJCQkJCQo+ID4gPiAJXAo+ID4gPiAt CXN0cnVjdCBib3RoX2NyY3MgY3JjXzsJCQkJCQo+ID4gPiAJXAo+ID4gPiAtCQkJCQkJCQkJCj4g PiA+IFwKPiA+ID4gLQlpZiAoIW9wdC5jaGVja19jcmMgfHwgKGZsYWdzX18gJiBET05UX0FTU0VS VF9DUkMpKQkKPiA+ID4gCQo+ID4gPiBcCj4gPiA+IC0JCWJyZWFrOwkJCQkJCQo+ID4gPiAJXAo+ ID4gPiAtCQkJCQkJCQkJCj4gPiA+IFwKPiA+ID4gLQljb2xsZWN0X2NyY3MoJmNyY18sIG1hbmRh dG9yeV9zaW5rX2NyYyk7CQkJCj4gPiA+IFwKPiA+ID4gLQlwcmludF9jcmMoIkNhbGN1bGF0ZWQg Q1JDOiIsICZjcmNfKTsJCQkKPiA+ID4gCQo+ID4gPiBcCj4gPiA+IC0JCQkJCQkJCQkKPiA+ID4g XAo+ID4gPiAtCWlndF9hc3NlcnQod2FudGVkX2NyYyk7CQkJCQkKPiA+ID4gCVwKPiA+ID4gLQlp Z3RfYXNzZXJ0X2NyY19lcXVhbCgmY3JjXy5waXBlLCAmd2FudGVkX2NyYy0+cGlwZSk7CQo+ID4g PiAJCj4gPiA+IFwKPiA+ID4gLQlpZiAobWFuZGF0b3J5X3NpbmtfY3JjKQkJCQkJCj4gPiA+IAlc Cj4gPiA+IC0JCWFzc2VydF9zaW5rX2NyY19lcXVhbCgmY3JjXy5zaW5rLCAmd2FudGVkX2NyYy0K PiA+ID4gPiBzaW5rKTsJXAo+ID4gPiAKPiA+ID4gLQllbHNlIGlmIChzaW5rX2NyYy5yZWxpYWJs ZSAmJgkJCQkKPiA+ID4gCVwKPiA+ID4gLQkJwqAhc2lua19jcmNfZXF1YWwoJmNyY18uc2luaywg JndhbnRlZF9jcmMtPnNpbmspKQo+ID4gPiAJCj4gPiA+IFwKPiA+ID4gLQkJaWd0X2luZm8oIlNp bmsgQ1JDIGRpZmZlciwgYnV0IG5vdAo+ID4gPiByZXF1aXJlZFxuIik7wqAJCj4gPiA+IFwKPiA+ ID4gLX0gd2hpbGUgKDApCj4gPiA+IC0KPiA+ID4gLSNkZWZpbmUgZG9fc3RhdHVzX2Fzc2VydGlv bnMoZmxhZ3NfKSBkbyB7CQkJCj4gPiA+IAkKPiA+ID4gXAo+ID4gPiAtCWlmICghb3B0LmNoZWNr X3N0YXR1cykgewkJCQkJCj4gPiA+IFwKPiA+ID4gLQkJLyogTWFrZSBzdXJlIHdlIHNldHRsZSBi ZWZvcmUgY29udGludWluZy4gKi8JCj4gPiA+IAkKPiA+ID4gXAo+ID4gPiAtCQlzbGVlcCgxKTsJ CQkJCQo+ID4gPiAJCj4gPiA+IFwKPiA+ID4gLQkJYnJlYWs7CQkJCQkJCj4gPiA+IAlcCj4gPiA+ IC0JfQkJCQkJCQkKPiA+ID4gCQo+ID4gPiBcCj4gPiA+IC0JCQkJCQkJCQkKPiA+ID4gXAo+ID4g PiAtCWlmIChmbGFnc18gJiBBU1NFUlRfRkJDX0VOQUJMRUQpIHsJCQkKPiA+ID4gCQo+ID4gPiBc Cj4gPiA+IC0JCWlndF9yZXF1aXJlKCFmYmNfbm90X2Vub3VnaF9zdG9sZW4oKSk7CQkKPiA+ID4g CVwKPiA+ID4gLQkJaWd0X3JlcXVpcmUoIWZiY19zdHJpZGVfbm90X3N1cHBvcnRlZCgpKTsJCj4g PiA+IAkKPiA+ID4gXAo+ID4gPiAtCQlpZiAoIWZiY193YWl0X3VudGlsX2VuYWJsZWQoKSkgewkJ CQo+ID4gPiBcCj4gPiA+IC0JCQlmYmNfcHJpbnRfc3RhdHVzKCk7CQkJCj4gPiA+IAkKPiA+ID4g XAo+ID4gPiAtCQkJaWd0X2Fzc2VydF9mKGZhbHNlLCAiRkJDIGRpc2FibGVkXG4iKTsJCj4gPiA+ IAlcCj4gPiA+IC0JCX0JCQkJCQkKPiA+ID4gCQo+ID4gPiBcCj4gPiA+IC0JCQkJCQkJCQkKPiA+ ID4gXAo+ID4gPiAtCQlpZiAob3B0LmZiY19jaGVja19jb21wcmVzc2lvbikJCQkKPiA+ID4gCVwK PiA+ID4gLQkJCWlndF9hc3NlcnQoZmJjX3dhaXRfZm9yX2NvbXByZXNzaW9uKCkpOwkKPiA+ID4g CVwKPiA+ID4gLQl9IGVsc2UgaWYgKGZsYWdzXyAmIEFTU0VSVF9GQkNfRElTQUJMRUQpIHsJCQo+ ID4gPiAJCj4gPiA+IFwKPiA+ID4gLQkJaWd0X2Fzc2VydCghZmJjX3dhaXRfdW50aWxfZW5hYmxl ZCgpKTsJCQo+ID4gPiAJXAo+ID4gPiAtCX0JCQkJCQkJCj4gPiA+IAkKPiA+ID4gXAo+ID4gPiAt CQkJCQkJCQkJCj4gPiA+IFwKPiA+ID4gLQlpZiAoZmxhZ3NfICYgQVNTRVJUX1BTUl9FTkFCTEVE KSB7CQkJCj4gPiA+IAkKPiA+ID4gXAo+ID4gPiAtCQlpZiAoIXBzcl93YWl0X3VudGlsX2VuYWJs ZWQoKSkgewkJCQo+ID4gPiBcCj4gPiA+IC0JCQlwc3JfcHJpbnRfc3RhdHVzKCk7CQkJCj4gPiA+ IAkKPiA+ID4gXAo+ID4gPiAtCQkJaWd0X2Fzc2VydF9mKGZhbHNlLCAiUFNSIGRpc2FibGVkXG4i KTsJCj4gPiA+IAlcCj4gPiA+IC0JCX0JCQkJCQkKPiA+ID4gCQo+ID4gPiBcCj4gPiA+IC0JfSBl bHNlIGlmIChmbGFnc18gJiBBU1NFUlRfUFNSX0RJU0FCTEVEKSB7CQkKPiA+ID4gCQo+ID4gPiBc Cj4gPiA+IC0JCWlndF9hc3NlcnQoIXBzcl93YWl0X3VudGlsX2VuYWJsZWQoKSk7CQkKPiA+ID4g CVwKPiA+ID4gLQl9CQkJCQkJCQo+ID4gPiAJCj4gPiA+IFwKPiA+ID4gLX0gd2hpbGUgKDApCj4g PiA+IC0KPiA+ID4gLSNkZWZpbmUgZG9fYXNzZXJ0aW9ucyhmbGFncykgZG8gewkJCQkKPiA+ID4g CQo+ID4gPiBcCj4gPiA+IC0JaW50IGZsYWdzXyA9IGFkanVzdF9hc3NlcnRpb25fZmxhZ3ModCwg KGZsYWdzKSk7CQkKPiA+ID4gXAo+ID4gPiAtCWJvb2wgbWFuZGF0b3J5X3NpbmtfY3JjID0gdC0+ ZmVhdHVyZSAmIEZFQVRVUkVfUFNSOwkKPiA+ID4gCQo+ID4gPiBcCj4gPiA+IC0JCQkJCQkJCQkK PiA+ID4gXAo+ID4gPiAtCXdhaXRfdXNlcigyLCAiUGF1c2VkIGJlZm9yZSBhc3NlcnRpb25zLiIp OwkJCj4gPiA+IAkKPiA+ID4gXAo+ID4gPiAtCQkJCQkJCQkJCj4gPiA+IFwKPiA+ID4gLQkvKiBD aGVjayB0aGUgQ1JDIHRvIG1ha2Ugc3VyZSB0aGUgZHJhd2luZyBvcGVyYXRpb25zCj4gPiA+IHdv cmsJCj4gPiA+IFwKPiA+ID4gLQnCoCogaW1tZWRpYXRlbHksIGluZGVwZW5kZW50bHkgb2YgdGhl IGZlYXR1cmVzIGJlaW5nCj4gPiA+IGVuYWJsZWQuCj4gPiA+ICovCVwKPiA+ID4gLQlkb19jcmNf YXNzZXJ0aW9ucyhmbGFnc18sIG1hbmRhdG9yeV9zaW5rX2NyYyk7CQkKPiA+ID4gCVwKPiA+ID4g LQkJCQkJCQkJCQo+ID4gPiBcCj4gPiA+IC0JLyogTm93IHdlIGNhbiBmbHVzaCB0aGluZ3MgdG8g bWFrZSB0aGUgdGVzdCBmYXN0ZXIuICovCQo+ID4gPiAJXAo+ID4gPiAtCWRvX2ZsdXNoKHQpOwkJ CQkJCQo+ID4gPiAJCj4gPiA+IFwKPiA+ID4gLQkJCQkJCQkJCQo+ID4gPiBcCj4gPiA+IC0JZG9f c3RhdHVzX2Fzc2VydGlvbnMoZmxhZ3NfKTsJCQkJCj4gPiA+IAlcCj4gPiA+IC0JCQkJCQkJCQkK PiA+ID4gXAo+ID4gPiAtCS8qIENoZWNrIENSQyBhZ2FpbiB0byBtYWtlIHN1cmUgdGhlIGNvbXBy ZXNzZWQgc2NyZWVuIGlzCj4gPiA+IG9rLAo+ID4gPiAJXAo+ID4gPiAtCcKgKiBleGNlcHQgaWYg d2UncmUgbm90IGRyYXdpbmcgb24gdGhlIHByaW1hcnkgc2NyZWVuLiBPbgo+ID4gPiB0aGlzCVwK PiA+ID4gLQnCoCogY2FzZSwgdGhlIGZpcnN0IGNoZWNrIHNob3VsZCBiZSBlbm91Z2ggYW5kIGEg bmV3IENSQwo+ID4gPiBjaGVjawlcCj4gPiA+IC0JwqAqIHdvdWxkIG9ubHkgZGVsYXkgdGhlIHRl c3Qgc3VpdGUgd2hpbGUgYWRkaW5nIG5vIHZhbHVlCj4gPiA+IHRvCj4gPiA+IHRoZQlcCj4gPiA+ IC0JwqAqIHRlc3Qgc3VpdGUuICovCQkJCQkKPiA+ID4gCQo+ID4gPiBcCj4gPiA+IC0JaWYgKHQt PnNjcmVlbiA9PSBTQ1JFRU5fUFJJTSkJCQkJCj4gPiA+IAlcCj4gPiA+IC0JCWRvX2NyY19hc3Nl cnRpb25zKGZsYWdzXywgbWFuZGF0b3J5X3NpbmtfY3JjKTsJCj4gPiA+IAlcCj4gPiA+IC0JCQkJ CQkJCQkKPiA+ID4gXAo+ID4gPiAtCWlmIChmYmMuc3VwcG9ydHNfbGFzdF9hY3Rpb24gJiYKPiA+ ID4gb3B0LmZiY19jaGVja19sYXN0X2FjdGlvbikgewo+ID4gPiAJXAo+ID4gPiAtCQlpZiAoZmxh Z3NfICYgQVNTRVJUX0xBU1RfQUNUSU9OX0NIQU5HRUQpCQkKPiA+ID4gXAo+ID4gPiAtCQkJaWd0 X2Fzc2VydChmYmNfbGFzdF9hY3Rpb25fY2hhbmdlZCgpKTsJCj4gPiA+IAlcCj4gPiA+IC0JCWVs c2UgaWYgKGZsYWdzXyAmIEFTU0VSVF9OT19BQ1RJT05fQ0hBTkdFKQkKPiA+ID4gCQo+ID4gPiBc Cj4gPiA+IC0JCQlpZ3RfYXNzZXJ0KCFmYmNfbGFzdF9hY3Rpb25fY2hhbmdlZCgpKTsJCj4gPiA+ IAlcCj4gPiA+IC0JfQkJCQkJCQkKPiA+ID4gCQo+ID4gPiBcCj4gPiA+IC0JCQkJCQkJCQkKPiA+ ID4gXAo+ID4gPiAtCXdhaXRfdXNlcigxLCAiUGF1c2VkIGFmdGVyIGFzc2VydGlvbnMuIik7CQkK PiA+ID4gCQo+ID4gPiBcCj4gPiA+IC19IHdoaWxlICgwKQo+ID4gPiArc3RhdGljIHZvaWQgZG9f Y3JjX2Fzc2VydGlvbnMoaW50IGZsYWdzLCBib29sCj4gPiA+IG1hbmRhdG9yeV9zaW5rX2NyYykK PiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3QgYm90aF9jcmNzIGNyYzsKPiA+ID4gKwo+ID4gPiArCWlm ICghb3B0LmNoZWNrX2NyYyB8fCAoZmxhZ3MgJiBET05UX0FTU0VSVF9DUkMpKQo+ID4gPiArCQly ZXR1cm47Cj4gPiA+ICsKPiA+ID4gKwljb2xsZWN0X2NyY3MoJmNyYywgbWFuZGF0b3J5X3Npbmtf Y3JjKTsKPiA+ID4gKwlwcmludF9jcmMoIkNhbGN1bGF0ZWQgQ1JDOiIsICZjcmMpOwo+ID4gPiAr Cj4gPiA+ICsJaWd0X2Fzc2VydCh3YW50ZWRfY3JjKTsKPiA+ID4gKwlpZ3RfYXNzZXJ0X2NyY19l cXVhbCgmY3JjLnBpcGUsICZ3YW50ZWRfY3JjLT5waXBlKTsKPiA+ID4gKwlpZiAobWFuZGF0b3J5 X3NpbmtfY3JjKQo+ID4gPiArCQlhc3NlcnRfc2lua19jcmNfZXF1YWwoJmNyYy5zaW5rLCAmd2Fu dGVkX2NyYy0KPiA+ID4gPnNpbmspOwo+ID4gPiArCWVsc2UgaWYgKHNpbmtfY3JjLnJlbGlhYmxl ICYmCj4gPiA+ICsJCcKgIXNpbmtfY3JjX2VxdWFsKCZjcmMuc2luaywgJndhbnRlZF9jcmMtPnNp bmspKQo+ID4gPiArCQlpZ3RfaW5mbygiU2luayBDUkMgZGlmZmVyLCBidXQgbm90IHJlcXVpcmVk XG4iKTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIHZvaWQgZG9fc3RhdHVzX2Fzc2Vy dGlvbnMoaW50IGZsYWdzKQo+ID4gPiArewo+ID4gPiArCWlmICghb3B0LmNoZWNrX3N0YXR1cykg ewo+ID4gPiArCQkvKiBNYWtlIHN1cmUgd2Ugc2V0dGxlIGJlZm9yZSBjb250aW51aW5nLiAqLwo+ ID4gPiArCQlzbGVlcCgxKTsKPiA+ID4gKwkJcmV0dXJuOwo+ID4gPiArCX0KPiA+ID4gKwo+ID4g PiArCWlmIChmbGFncyAmIEFTU0VSVF9GQkNfRU5BQkxFRCkgewo+ID4gPiArCQlpZ3RfcmVxdWly ZSghZmJjX25vdF9lbm91Z2hfc3RvbGVuKCkpOwo+ID4gPiArCQlpZ3RfcmVxdWlyZSghZmJjX3N0 cmlkZV9ub3Rfc3VwcG9ydGVkKCkpOwo+ID4gPiArCQlpZiAoIWZiY193YWl0X3VudGlsX2VuYWJs ZWQoKSkgewo+ID4gPiArCQkJZmJjX3ByaW50X3N0YXR1cygpOwo+ID4gPiArCQkJaWd0X2Fzc2Vy dF9mKGZhbHNlLCAiRkJDIGRpc2FibGVkXG4iKTsKPiA+ID4gKwkJfQo+ID4gPiArCj4gPiA+ICsJ CWlmIChvcHQuZmJjX2NoZWNrX2NvbXByZXNzaW9uKQo+ID4gPiArCQkJaWd0X2Fzc2VydChmYmNf d2FpdF9mb3JfY29tcHJlc3Npb24oKSk7Cj4gPiA+ICsJfSBlbHNlIGlmIChmbGFncyAmIEFTU0VS VF9GQkNfRElTQUJMRUQpIHsKPiA+ID4gKwkJaWd0X2Fzc2VydCghZmJjX3dhaXRfdW50aWxfZW5h YmxlZCgpKTsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gKwlpZiAoZmxhZ3MgJiBBU1NFUlRfUFNS X0VOQUJMRUQpIHsKPiA+ID4gKwkJaWYgKCFwc3Jfd2FpdF91bnRpbF9lbmFibGVkKCkpIHsKPiA+ ID4gKwkJCXBzcl9wcmludF9zdGF0dXMoKTsKPiA+ID4gKwkJCWlndF9hc3NlcnRfZihmYWxzZSwg IlBTUiBkaXNhYmxlZFxuIik7Cj4gPiA+ICsJCX0KPiA+ID4gKwl9IGVsc2UgaWYgKGZsYWdzICYg QVNTRVJUX1BTUl9ESVNBQkxFRCkgewo+ID4gPiArCQlpZ3RfYXNzZXJ0KCFwc3Jfd2FpdF91bnRp bF9lbmFibGVkKCkpOwo+ID4gPiArCX0KPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIHZv aWQgX19kb19hc3NlcnRpb25zKGNvbnN0IHN0cnVjdCB0ZXN0X21vZGUgKnQsIGludAo+ID4gPiBm bGFncywKPiA+ID4gKwkJCcKgwqDCoMKgaW50IGxpbmUpCj4gPiA+ICt7Cj4gPiA+ICsJZmxhZ3Mg PSBhZGp1c3RfYXNzZXJ0aW9uX2ZsYWdzKHQsIGZsYWdzKTsKPiA+ID4gKwlib29sIG1hbmRhdG9y eV9zaW5rX2NyYyA9IHQtPmZlYXR1cmUgJiBGRUFUVVJFX1BTUjsKPiA+ID4gKwo+ID4gPiArCWln dF9kZWJ1ZygiY2hlY2tpbmcgYXNzZXJ0cyBpbiBsaW5lICVpXG4iLCBsaW5lKTsKPiA+ID4gKwo+ ID4gPiArCXdhaXRfdXNlcigyLCAiUGF1c2VkIGJlZm9yZSBhc3NlcnRpb25zLiIpOwo+ID4gPiAr Cj4gPiA+ICsJLyogQ2hlY2sgdGhlIENSQyB0byBtYWtlIHN1cmUgdGhlIGRyYXdpbmcgb3BlcmF0 aW9ucwo+ID4gPiB3b3JrCj4gPiA+ICsJwqAqIGltbWVkaWF0ZWx5LCBpbmRlcGVuZGVudGx5IG9m IHRoZSBmZWF0dXJlcyBiZWluZwo+ID4gPiBlbmFibGVkLgo+ID4gPiAqLwo+ID4gPiArCWRvX2Ny Y19hc3NlcnRpb25zKGZsYWdzLCBtYW5kYXRvcnlfc2lua19jcmMpOwo+ID4gPiArCj4gPiA+ICsJ LyogTm93IHdlIGNhbiBmbHVzaCB0aGluZ3MgdG8gbWFrZSB0aGUgdGVzdCBmYXN0ZXIuICovCj4g PiA+ICsJZG9fZmx1c2godCk7Cj4gPiA+ICsKPiA+ID4gKwlkb19zdGF0dXNfYXNzZXJ0aW9ucyhm bGFncyk7Cj4gPiA+ICsKPiA+ID4gKwkvKiBDaGVjayBDUkMgYWdhaW4gdG8gbWFrZSBzdXJlIHRo ZSBjb21wcmVzc2VkIHNjcmVlbiBpcwo+ID4gPiBvaywKPiA+ID4gKwnCoCogZXhjZXB0IGlmIHdl J3JlIG5vdCBkcmF3aW5nIG9uIHRoZSBwcmltYXJ5IHNjcmVlbi4gT24KPiA+ID4gdGhpcwo+ID4g PiArCcKgKiBjYXNlLCB0aGUgZmlyc3QgY2hlY2sgc2hvdWxkIGJlIGVub3VnaCBhbmQgYSBuZXcg Q1JDCj4gPiA+IGNoZWNrCj4gPiA+ICsJwqAqIHdvdWxkIG9ubHkgZGVsYXkgdGhlIHRlc3Qgc3Vp dGUgd2hpbGUgYWRkaW5nIG5vIHZhbHVlCj4gPiA+IHRvCj4gPiA+IHRoZQo+ID4gPiArCcKgKiB0 ZXN0IHN1aXRlLiAqLwo+ID4gPiArCWlmICh0LT5zY3JlZW4gPT0gU0NSRUVOX1BSSU0pCj4gPiA+ ICsJCWRvX2NyY19hc3NlcnRpb25zKGZsYWdzLCBtYW5kYXRvcnlfc2lua19jcmMpOwo+ID4gPiAr Cj4gPiA+ICsJaWYgKGZiYy5zdXBwb3J0c19sYXN0X2FjdGlvbiAmJgo+ID4gPiBvcHQuZmJjX2No ZWNrX2xhc3RfYWN0aW9uKSB7Cj4gPiA+ICsJCWlmIChmbGFncyAmIEFTU0VSVF9MQVNUX0FDVElP Tl9DSEFOR0VEKQo+ID4gPiArCQkJaWd0X2Fzc2VydChmYmNfbGFzdF9hY3Rpb25fY2hhbmdlZCgp KTsKPiA+ID4gKwkJZWxzZSBpZiAoZmxhZ3MgJiBBU1NFUlRfTk9fQUNUSU9OX0NIQU5HRSkKPiA+ ID4gKwkJCWlndF9hc3NlcnQoIWZiY19sYXN0X2FjdGlvbl9jaGFuZ2VkKCkpOwo+ID4gPiArCX0K PiA+ID4gKwo+ID4gPiArCXdhaXRfdXNlcigxLCAiUGF1c2VkIGFmdGVyIGFzc2VydGlvbnMuIik7 Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gKyNkZWZpbmUgZG9fYXNzZXJ0aW9ucyhfX2ZsYWdzKSBf X2RvX2Fzc2VydGlvbnModCwgKF9fZmxhZ3MpLAo+ID4gPiBfX0xJTkVfXykKPiA+ID4gwqAKPiA+ ID4gwqBzdGF0aWMgdm9pZCBlbmFibGVfcHJpbV9zY3JlZW5fYW5kX3dhaXQoY29uc3Qgc3RydWN0 IHRlc3RfbW9kZQo+ID4gPiAqdCkKPiA+ID4gwqB7Cj4gCj4gCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=