From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: Re: [PATCH IGT v2 4/6] tests/kms_frontbuffer_tracking: Refactor to use IGT PSR library functions Date: Fri, 30 Jun 2017 18:10:51 -0300 Message-ID: <1498857051.22381.6.camel@intel.com> References: <1498849944-26404-1-git-send-email-jim.bride@linux.intel.com> <1498849944-26404-5-git-send-email-jim.bride@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8C0276E1A3 for ; Fri, 30 Jun 2017 21:10:58 +0000 (UTC) In-Reply-To: <1498849944-26404-5-git-send-email-jim.bride@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jim Bride , intel-gfx@lists.freedesktop.org Cc: Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org RW0gU2V4LCAyMDE3LTA2LTMwIMOgcyAxMjoxMiAtMDcwMCwgSmltIEJyaWRlIGVzY3JldmV1Ogo+ IHYyOiAqIE1pbm9yIGZ1bmN0aW9uYWwgdHdlYWtzIGFuZCBidWcgZml4ZXMKPiDCoMKgwqDCoCog UmViYXNlCj4gCj4gQ2M6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4KPiBD YzogUGF1bG8gWmFub25pIDxwYXVsby5yLnphbm9uaUBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1i eTogSmltIEJyaWRlIDxqaW0uYnJpZGVAbGludXguaW50ZWwuY29tPgo+IC0tLQo+IMKgdGVzdHMv a21zX2Zyb250YnVmZmVyX3RyYWNraW5nLmMgfCAxMTkgKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0tCj4gLS0tLS0tLS0tLS0tCj4gwqAxIGZpbGUgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwg MTAwIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS90ZXN0cy9rbXNfZnJvbnRidWZmZXJf dHJhY2tpbmcuYwo+IGIvdGVzdHMva21zX2Zyb250YnVmZmVyX3RyYWNraW5nLmMKPiBpbmRleCBj MjRlNGE4Li4zYThiNzU0IDEwMDY0NAo+IC0tLSBhL3Rlc3RzL2ttc19mcm9udGJ1ZmZlcl90cmFj a2luZy5jCj4gKysrIGIvdGVzdHMva21zX2Zyb250YnVmZmVyX3RyYWNraW5nLmMKPiBAQCAtMTgz LDcgKzE4Myw3IEBAIHN0cnVjdCB7Cj4gwqB9Owo+IMKgCj4gwqAKPiAtI2RlZmluZSBTSU5LX0NS Q19TSVpFIDEyCj4gKyNkZWZpbmUgU0lOS19DUkNfU0laRSA2Cj4gwqB0eXBlZGVmIHN0cnVjdCB7 Cj4gwqAJY2hhciBkYXRhW1NJTktfQ1JDX1NJWkVdOwo+IMKgfSBzaW5rX2NyY190Owo+IEBAIC0z MjcsMjggKzMyNyw2IEBAIGRybU1vZGVNb2RlSW5mbyBzdGRfMTAyNF9tb2RlID0gewo+IMKgCS5u YW1lID0gIkN1c3RvbSAxMDI0eDc2OCIsCj4gwqB9Owo+IMKgCj4gLXN0YXRpYyBkcm1Nb2RlTW9k ZUluZm9QdHIKPiBnZXRfY29ubmVjdG9yX3NtYWxsZXN0X21vZGUoZHJtTW9kZUNvbm5lY3RvclB0 ciBjKQo+IC17Cj4gLQlpbnQgaTsKPiAtCWRybU1vZGVNb2RlSW5mb1B0ciBzbWFsbGVzdCA9IE5V TEw7Cj4gLQo+IC0JZm9yIChpID0gMDsgaSA8IGMtPmNvdW50X21vZGVzOyBpKyspIHsKPiAtCQlk cm1Nb2RlTW9kZUluZm9QdHIgbW9kZSA9ICZjLT5tb2Rlc1tpXTsKPiAtCj4gLQkJaWYgKCFzbWFs bGVzdCkKPiAtCQkJc21hbGxlc3QgPSBtb2RlOwo+IC0KPiAtCQlpZiAobW9kZS0+aGRpc3BsYXkg KiBtb2RlLT52ZGlzcGxheSA8Cj4gLQkJwqDCoMKgwqBzbWFsbGVzdC0+aGRpc3BsYXkgKiBzbWFs bGVzdC0+dmRpc3BsYXkpCj4gLQkJCXNtYWxsZXN0ID0gbW9kZTsKPiAtCX0KPiAtCj4gLQlpZiAo Yy0+Y29ubmVjdG9yX3R5cGUgPT0gRFJNX01PREVfQ09OTkVDVE9SX2VEUCkKPiAtCQlzbWFsbGVz dCA9ICZzdGRfMTAyNF9tb2RlOwo+IC0KPiAtCXJldHVybiBzbWFsbGVzdDsKPiAtfQo+IC0KPiDC oHN0YXRpYyBkcm1Nb2RlQ29ubmVjdG9yUHRyIGdldF9jb25uZWN0b3IodWludDMyX3QgaWQpCj4g wqB7Cj4gwqAJaW50IGk7Cj4gQEAgLTQyMSwzMCArMzk5LDYgQEAgc3RhdGljIHZvaWQgaW5pdF9t b2RlX3BhcmFtcyhzdHJ1Y3QKPiBtb2Rlc2V0X3BhcmFtcyAqcGFyYW1zLCB1aW50MzJfdCBjcnRj X2lkLAo+IMKgCXBhcmFtcy0+c3ByaXRlLmggPSA2NDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgYm9v bCBjb25uZWN0b3JfZ2V0X21vZGUoZHJtTW9kZUNvbm5lY3RvclB0ciBjLAo+IGRybU1vZGVNb2Rl SW5mb1B0ciAqbW9kZSkKPiAtewo+IC0JKm1vZGUgPSBOVUxMOwo+IC0KPiAtCWlmIChjLT5jb25u ZWN0aW9uICE9IERSTV9NT0RFX0NPTk5FQ1RFRCB8fCAhYy0+Y291bnRfbW9kZXMpCj4gLQkJcmV0 dXJuIGZhbHNlOwo+IC0KPiAtCWlmIChjLT5jb25uZWN0b3JfdHlwZSA9PSBEUk1fTU9ERV9DT05O RUNUT1JfZURQICYmCj4gb3B0Lm5vX2VkcCkKPiAtCQlyZXR1cm4gZmFsc2U7Cj4gLQo+IC0JaWYg KG9wdC5zbWFsbF9tb2RlcykKPiAtCQkqbW9kZSA9IGdldF9jb25uZWN0b3Jfc21hbGxlc3RfbW9k ZShjKTsKPiAtCWVsc2UKPiAtCQkqbW9kZSA9ICZjLT5tb2Rlc1swXTsKPiAtCj4gLQnCoC8qIE9u IEhTVyB0aGUgQ1JDIFdBIGlzIHNvIGF3ZnVsIHRoYXQgaXQgbWFrZXMgeW91IHRoaW5rCj4gZXZl cnl0aGluZyBpcwo+IC0JwqDCoCogYnVnZ2VkLiAqLwo+IC0JaWYgKElTX0hBU1dFTEwoaW50ZWxf Z2V0X2RybV9kZXZpZChkcm0uZmQpKSAmJgo+IC0JwqDCoMKgwqBjLT5jb25uZWN0b3JfdHlwZSA9 PSBEUk1fTU9ERV9DT05ORUNUT1JfZURQKQo+IC0JCSptb2RlID0gJnN0ZF8xMDI0X21vZGU7Cj4g LQo+IC0JcmV0dXJuIHRydWU7Cj4gLX0KPiAtCj4gwqBzdGF0aWMgYm9vbCBjb25uZWN0b3Jfc3Vw cG9ydHNfcGlwZV9hKGRybU1vZGVDb25uZWN0b3JQdHIgY29ubmVjdG9yKQo+IMKgewo+IMKgCWlu dCBpOwo+IEBAIC00NzMsNyArNDI3LDcgQEAgc3RhdGljIGJvb2wgZmluZF9jb25uZWN0b3IoYm9v bCBlZHBfb25seSwgYm9vbAo+IHBpcGVfYSwgdWludDMyX3QgZm9yYmlkZGVuX2lkLAo+IMKgCQkJ Y29udGludWU7Cj4gwqAJCWlmIChjLT5jb25uZWN0b3JfaWQgPT0gZm9yYmlkZGVuX2lkKQo+IMKg CQkJY29udGludWU7Cj4gLQkJaWYgKCFjb25uZWN0b3JfZ2V0X21vZGUoYywgJm1vZGUpKQo+ICsJ CWlmICghaWd0X3Bzcl9maW5kX2dvb2RfbW9kZShjLCAmbW9kZSkpCj4gwqAJCQljb250aW51ZTsK PiDCoAo+IMKgCQkqcmV0X2Nvbm5lY3RvciA9IGM7Cj4gQEAgLTgwNCwyMyArNzU4LDYgQEAgc3Rh dGljIHZvaWQgZmJjX3ByaW50X3N0YXR1cyh2b2lkKQo+IMKgCWlndF9pbmZvKCJGQkMgc3RhdHVz OlxuJXNcbiIsIGJ1Zik7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGJvb2wgcHNyX2lzX2VuYWJsZWQo dm9pZCkKPiAtewo+IC0JY2hhciBidWZbMjU2XTsKPiAtCj4gLQlkZWJ1Z2ZzX3JlYWQoImk5MTVf ZWRwX3Bzcl9zdGF0dXMiLCBidWYpOwo+IC0JcmV0dXJuIHN0cnN0cihidWYsICJcbkFjdGl2ZTog eWVzXG4iKSAmJgo+IC0JwqDCoMKgwqDCoMKgwqBzdHJzdHIoYnVmLCAiXG5IVyBFbmFibGVkICYg QWN0aXZlIGJpdDogeWVzXG4iKTsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQgcHNyX3ByaW50X3N0 YXR1cyh2b2lkKQo+IC17Cj4gLQljaGFyIGJ1ZlsyNTZdOwo+IC0KPiAtCWRlYnVnZnNfcmVhZCgi aTkxNV9lZHBfcHNyX3N0YXR1cyIsIGJ1Zik7Cj4gLQlpZ3RfaW5mbygiUFNSIHN0YXR1czpcbiVz XG4iLCBidWYpOwo+IC19Cj4gLQo+IMKgc3RhdGljIHN0cnVjdCB0aW1lc3BlYyBmYmNfZ2V0X2xh c3RfYWN0aW9uKHZvaWQpCj4gwqB7Cj4gwqAJc3RydWN0IHRpbWVzcGVjIHJldCA9IHsgMCwgMCB9 Owo+IEBAIC05MjYsNDQgKzg2MywzMSBAQCBzdGF0aWMgYm9vbCBmYmNfd2FpdF91bnRpbF9lbmFi bGVkKHZvaWQpCj4gwqAJcmV0dXJuIGlndF93YWl0KGZiY19pc19lbmFibGVkKCksIDIwMDAsIDEp Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBib29sIHBzcl93YWl0X3VudGlsX2VuYWJsZWQodm9pZCkK PiAtewo+IC0JcmV0dXJuIGlndF93YWl0KHBzcl9pc19lbmFibGVkKCksIDUwMDAsIDEpOwoKQ2hh bmdpbmcgdGhlIHRpbWVvdXQgZnJvbSA1cyB0byAxMHMgaXMgZ29pbmcgdG8gc2lnbmlmaWNhbnRs eSBpbmNyZWFzZQp0aGUgcnVudGltZSBmb3Iga21zX2Zyb250YnVmZmVyX3RyYWNraW5nLgoKPiAt fQo+IC0KPiDCoCNkZWZpbmUgZmJjX2VuYWJsZSgpIGlndF9zZXRfbW9kdWxlX3BhcmFtX2ludCgi ZW5hYmxlX2ZiYyIsIDEpCj4gwqAjZGVmaW5lIGZiY19kaXNhYmxlKCkgaWd0X3NldF9tb2R1bGVf cGFyYW1faW50KCJlbmFibGVfZmJjIiwgMCkKPiAtI2RlZmluZSBwc3JfZW5hYmxlKCkgaWd0X3Nl dF9tb2R1bGVfcGFyYW1faW50KCJlbmFibGVfcHNyIiwgMSkKPiAtI2RlZmluZSBwc3JfZGlzYWJs ZSgpIGlndF9zZXRfbW9kdWxlX3BhcmFtX2ludCgiZW5hYmxlX3BzciIsIDApCj4gwqAKPiDCoHN0 YXRpYyB2b2lkIGdldF9zaW5rX2NyYyhzaW5rX2NyY190ICpjcmMsIGJvb2wgbWFuZGF0b3J5KQo+ IMKgewo+IC0JaW50IHJjLCBlcnJub187Cj4gKwlpbnQgcmM7Cj4gwqAKPiDCoAlpZiAoIXNpbmtf Y3JjLnN1cHBvcnRlZCkgewo+IMKgCQltZW1jcHkoY3JjLCAidW5zdXBwb3J0ZWQhIiwgU0lOS19D UkNfU0laRSk7Cj4gwqAJCXJldHVybjsKPiDCoAl9Cj4gwqAKPiAtCWxzZWVrKHNpbmtfY3JjLmZk LCAwLCBTRUVLX1NFVCk7Cj4gLQo+IC0JcmMgPSByZWFkKHNpbmtfY3JjLmZkLCBjcmMtPmRhdGEs IFNJTktfQ1JDX1NJWkUpOwo+IC0JZXJybm9fID0gZXJybm87Cj4gLQo+IC0JaWYgKHJjID09IC0x ICYmIGVycm5vXyA9PSBFTk9UVFkpIHsKPiArCXJjID0gaWd0X3Bzcl9nZXRfc2lua19jcmMoc2lu a19jcmMuZmQsIGNyYy0+ZGF0YSk7Cj4gKwlpZiAocmMgPT0gRU5PVFRZKSB7Cj4gwqAJCWlndF9p bmZvKCJTaW5rIENSQyBub3Qgc3VwcG9ydGVkOiBwYW5lbCBkb2Vzbid0Cj4gc3VwcG9ydCBpdFxu Iik7Cj4gwqAJCXNpbmtfY3JjLnN1cHBvcnRlZCA9IGZhbHNlOwo+IC0JfSBlbHNlIGlmIChyYyA9 PSAtMSAmJiBlcnJub18gPT0gRVRJTUVET1VUKSB7Cj4gLQkJaWYgKHNpbmtfY3JjLnJlbGlhYmxl KSB7Cj4gLQkJCWlndF9pbmZvKCJTaW5rIENSQyBpcyB1bnJlbGlhYmxlIG9uIHRoaXMKPiBtYWNo aW5lLlxuIik7Cj4gKwl9IGVsc2UgaWYgKHJjID09IEVUSU1FRE9VVCkgewo+ICsJCWlmIChzaW5r X2NyYy5yZWxpYWJsZSnCoAo+IMKgCQkJc2lua19jcmMucmVsaWFibGUgPSBmYWxzZTsKPiAtCQl9 Cj4gKwkJCj4gwqAKPiDCoAkJaWYgKG1hbmRhdG9yeSkKPiDCoAkJCWlndF9za2lwKCJTaW5rIENS QyBpcyB1bnJlbGlhYmxlIG9uIHRoaXMKPiBtYWNoaW5lLlxuIik7Cj4gwqAJfSBlbHNlIHsKPiAt CQlpZ3RfYXNzZXJ0X2YocmMgIT0gLTEsICJVbmV4cGVjdGVkIGVycm9yOiAlZFxuIiwKPiBlcnJu b18pOwo+IC0JCWlndF9hc3NlcnQocmMgPT0gU0lOS19DUkNfU0laRSk7Cj4gKwkJaWd0X2Fzc2Vy dF9mKHJjID09IDAsICJVbmV4cGVjdGVkIGVycm9yOiAlZFxuIiwgcmMpOwo+IMKgCX0KPiDCoH0K PiDCoAo+IEBAIC0xMTgwLDcgKzExMDQsNyBAQCBzdGF0aWMgdm9pZCBkaXNhYmxlX2ZlYXR1cmVz KGNvbnN0IHN0cnVjdAo+IHRlc3RfbW9kZSAqdCkKPiDCoAkJcmV0dXJuOwo+IMKgCj4gwqAJZmJj X2Rpc2FibGUoKTsKPiAtCXBzcl9kaXNhYmxlKCk7Cj4gKwlpZ3RfcHNyX2Rpc2FibGUoKTsKPiDC oH0KPiDCoAo+IMKgc3RhdGljIHZvaWQgKmJ1c3lfdGhyZWFkX2Z1bmModm9pZCAqZGF0YSkKPiBA QCAtMTQzMiw3ICsxMzU2LDcgQEAgc3RhdGljIHZvaWQgc2V0dXBfc2lua19jcmModm9pZCkKPiDC oAlmaWxsX2ZiX3JlZ2lvbigmcHJpbV9tb2RlX3BhcmFtcy5mYiwgQ09MT1JfUFJJTV9CRyk7Cj4g wqAJc2V0X21vZGVfZm9yX3BhcmFtcygmcHJpbV9tb2RlX3BhcmFtcyk7Cj4gwqAKPiAtCXNpbmtf Y3JjLmZkID0gb3BlbmF0KGRybS5kZWJ1Z2ZzLCAiaTkxNV9zaW5rX2NyY19lRFAxIiwKPiBPX1JE T05MWSk7Cj4gKwlzaW5rX2NyYy5mZCA9IGlndF9wc3Jfb3Blbl9zaW5rX2NyYyhkcm0uZGVidWdm cyk7Cj4gwqAJaWd0X2Fzc2VydF9sdGUoMCwgc2lua19jcmMuZmQpOwo+IMKgCj4gwqAJLyogRG8g YSBmaXJzdCByZWFkIHRvIHRyeSB0byBkZXRlY3QgaWYgaXQncyBzdXBwb3J0ZWQuICovCj4gQEAg LTE1NDcsMTQgKzE0NzEsNiBAQCBzdGF0aWMgdm9pZCB0ZWFyZG93bl9mYmModm9pZCkKPiDCoHsK PiDCoH0KPiDCoAo+IC1zdGF0aWMgYm9vbCBwc3Jfc2lua19oYXNfc3VwcG9ydCh2b2lkKQo+IC17 Cj4gLQljaGFyIGJ1ZlsyNTZdOwo+IC0KPiAtCWRlYnVnZnNfcmVhZCgiaTkxNV9lZHBfcHNyX3N0 YXR1cyIsIGJ1Zik7Cj4gLQlyZXR1cm4gc3Ryc3RyKGJ1ZiwgIlNpbmtfU3VwcG9ydDogeWVzXG4i KTsKPiAtfQo+IC0KPiDCoHN0YXRpYyB2b2lkIHNldHVwX3Bzcih2b2lkKQo+IMKgewo+IMKgCWlm IChnZXRfY29ubmVjdG9yKHByaW1fbW9kZV9wYXJhbXMuY29ubmVjdG9yX2lkKS0KPiA+Y29ubmVj dG9yX3R5cGUgIT0KPiBAQCAtMTU2Myw3ICsxNDc5LDcgQEAgc3RhdGljIHZvaWQgc2V0dXBfcHNy KHZvaWQpCj4gwqAJCXJldHVybjsKPiDCoAl9Cj4gwqAKPiAtCWlmICghcHNyX3NpbmtfaGFzX3N1 cHBvcnQoKSkgewo+ICsJaWYgKCFpZ3RfcHNyX3Npbmtfc3VwcG9ydChkcm0uZmQpKSB7Cj4gwqAJ CWlndF9pbmZvKCJDYW4ndCB0ZXN0IFBTUjogbm90IHN1cHBvcnRlZCBieQo+IHNpbmsuXG4iKTsK PiDCoAkJcmV0dXJuOwo+IMKgCX0KPiBAQCAtMTcxNywxMiArMTYzMywxNSBAQCBzdGF0aWMgaW50 IGFkanVzdF9hc3NlcnRpb25fZmxhZ3MoY29uc3QKPiBzdHJ1Y3QgdGVzdF9tb2RlICp0LCBpbnQg ZmxhZ3MpCj4gwqAJfQkJCQkJCQkJCj4gXAo+IMKgCQkJCQkJCQkJCj4gXAo+IMKgCWlmIChmbGFn c18gJiBBU1NFUlRfUFNSX0VOQUJMRUQpIHsJCQkJCj4gXAo+IC0JCWlmICghcHNyX3dhaXRfdW50 aWxfZW5hYmxlZCgpKSB7CQkJCj4gXAo+IC0JCQlwc3JfcHJpbnRfc3RhdHVzKCk7CQkJCQo+IFwK PiArCQlpZiAoIWlndF9wc3JfYXdhaXRfc3RhdHVzKGRybS5mZCwgdHJ1ZSkpIHsJCgo+IAlcCj4g KwkJCWlndF9wc3JfcHJpbnRfc3RhdHVzKGRybS5mZCk7CQkKPiAJXAo+IMKgCQkJaWd0X2Fzc2Vy dF9mKGZhbHNlLCAiUFNSIGRpc2FibGVkXG4iKTsJCj4gCVwKPiDCoAkJfQkJCQkJCQkKPiBcCj4g wqAJfSBlbHNlIGlmIChmbGFnc18gJiBBU1NFUlRfUFNSX0RJU0FCTEVEKSB7CQkJCj4gXAo+IC0J CWlndF9hc3NlcnQoIXBzcl93YWl0X3VudGlsX2VuYWJsZWQoKSk7CQkKPiAJXAo+ICsJCWlmICgh aWd0X3Bzcl9hd2FpdF9zdGF0dXMoZHJtLmZkLCBmYWxzZSkpIHsJCgpUaGVyZSdzIGEgZGlmZmVy ZW5jZSBiZXR3ZWVuICJ3YWl0IHVudGlsIGRpc2FibGVkIiBhbmQgIndhaXQgdW50aWwKZW5hYmxl ZCIuIElmIHdlJ3JlIGV4cGVjdGluZyBQU1IgdG8gYmUgZGlzYWJsZWQgYW5kIHdlIGNhbGwKd2Fp dF91bnRpbF9lbmFibGVkKCksIHdlIGd1YXJhbnRlZSB0aGF0IFBTUiBpcyBnb2luZyB0byBiZSBk aXNhYmxlZApkdXJpbmcgdGhlIHdob2xlIHRpbWVvdXQuIEFuZCB0aGF0J3MgdGhlIHBvaW50OiBn dWFyYW50ZWUgdGhhdCBQU1IKc3RheXMgZGlzYWJsZWQgZHVyaW5nIHRoZSBlbnRpcmUgdGltZSwg aS5lLiwgbm90aGluZyBlbmFibGVzIGl0IGF0IGFueQpwb2ludCBpbiB0aGUgbmV4dCAkdGltZW91 dCBzZWNvbmRzLiBJdCBjb3VsZCBiZSB0aGUgY2FzZSB0aGF0IFBTUiBnb3QKZGlzYWJsZWQgYW5k IHRoZW4gcmUtZW5hYmxlZCBkdWUgdG8gc29tZSBkZWxheWVkIHdvcmsgZnVuY3Rpb24sIGFuZCB3 ZQp3YW50IHRvIHByZXZlbnQgdGhhdCBieSBzdGF5aW5nIHRoZSB3aG9sZSB0aW1lb3V0IHJlLWNo ZWNraW5nIGl0cwpzdGF0dXMuCgpTbyBoZXJlLCBpZiB3ZSBqdXN0IGFzc2VydCB0aGF0IFBTUiBn b3QgZGlzYWJsZWQgYXQgc29tZSBwb2ludCBkdXJpbmcKdGhlIHRpbWVvdXQsIHdlJ3JlIGNoYW5n aW5nIHRoZSBiZWhhdmlvciBvZiB0aGUgdGVzdCBhbmQgd2UncmUgbG9zaW5nCnRoZSBvcmlnaW5h bCBwdXJwb3NlIG9mIHRoZSBhc3NlcnRpb24uCgo+IAlcCj4gKwkJCWlndF9wc3JfcHJpbnRfc3Rh dHVzKGRybS5mZCk7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gwqDCoMKgwqBcCj4g KwkJCWlndF9hc3NlcnRfZihmYWxzZSwgIlBTUiBlbmFibGVkXG4iKTsJCj4gCVwKPiArCQl9CQkJ CQkJCQo+IFwKPiDCoAl9CQkJCQkJCQkKPiBcCj4gwqB9IHdoaWxlICgwKQo+IMKgCj4gQEAgLTE4 MjIsNyArMTc0MSw3IEBAIHN0YXRpYyB2b2lkIGVuYWJsZV9mZWF0dXJlc19mb3JfdGVzdChjb25z dAo+IHN0cnVjdCB0ZXN0X21vZGUgKnQpCj4gwqAJaWYgKHQtPmZlYXR1cmUgJiBGRUFUVVJFX0ZC QykKPiDCoAkJZmJjX2VuYWJsZSgpOwo+IMKgCWlmICh0LT5mZWF0dXJlICYgRkVBVFVSRV9QU1Ip Cj4gLQkJcHNyX2VuYWJsZSgpOwo+ICsJCWlndF9wc3JfZW5hYmxlKCk7Cj4gwqB9Cj4gwqAKPiDC oHN0YXRpYyB2b2lkIGNoZWNrX3Rlc3RfcmVxdWlyZW1lbnRzKGNvbnN0IHN0cnVjdCB0ZXN0X21v ZGUgKnQpCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=