From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH 2/2] igt/pm_rps: Add checks for freq = idle (RPn) in specific cases. Date: Tue, 01 Dec 2015 19:43:05 +0200 Message-ID: <1448991785.14710.49.camel@intel.com> References: <1447277879-4106-1-git-send-email-bob.j.paauwe@intel.com> <1448929399-24498-1-git-send-email-bob.j.paauwe@intel.com> <1448929399-24498-3-git-send-email-bob.j.paauwe@intel.com> <1448978215.14710.30.camel@intel.com> <20151201092208.0fc6724a@bpaauwe-desk.fm.intel.com> Reply-To: imre.deak@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 298F66E09E for ; Tue, 1 Dec 2015 09:43:08 -0800 (PST) In-Reply-To: <20151201092208.0fc6724a@bpaauwe-desk.fm.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Bob Paauwe Cc: intel-gfx List-Id: intel-gfx@lists.freedesktop.org T24gdGksIDIwMTUtMTItMDEgYXQgMDk6MjIgLTA4MDAsIEJvYiBQYWF1d2Ugd3JvdGU6Cj4gT24g VHVlLCAxIERlYyAyMDE1IDE1OjU2OjU1ICswMjAwCj4gSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50 ZWwuY29tPiB3cm90ZToKPiAKPiA+IE9uIG1hLCAyMDE1LTExLTMwIGF0IDE2OjIzIC0wODAwLCBC b2IgUGFhdXdlIHdyb3RlOgo+ID4gPiBOb3cgdGhhdCB0aGUgZnJlcXVlbmN5IGNhbiBkcm9wIGJl bG93IHRoZSB1c2VyIHNwZWNpZmllZCBtaW5pbXVtCj4gPiA+IHdoZW4KPiA+ID4gdGhlIGdwdSBp cyBpZGxlLCBhZGQgc29tZSBjaGVja2luZyB0byB2ZXJpZnkgdGhhdCBpdCByZWFsbHkgZG9lcwo+ ID4gPiBkcm9wCj4gPiA+IGRvd24gdG8gdGhlIFJQbiBmcmVxdWVuY3kgaW4gc3BlY2lmaWMgY2Fz ZXMuCj4gPiA+IAo+ID4gPiBUbyBkbyB0aGlzLCBtb2RpZnkgdGhlIG1haW4gdGVzdCBmbG93IHRv IHRha2UgdHdvICdjaGVjaycKPiA+ID4gcm91dGluZXMKPiA+ID4gaW5zdGVhZCBvZiBvbmUuIFdo ZW4gcnVubmluZyB0aGUgY29uZmlnLW1pbi1tYXgtaWRsZSBzdWJ0ZXN0IG1ha2UKPiA+ID4gdXNl IG9mIHRoZSBzZWNvbmQgY2hlY2sgcm91dGluZSB0byB2ZXJpZnkgdGhhdCB0aGUgZnJlcXVlbmN5 Cj4gPiA+IGRyb3BzCj4gPiA+IHRvIFJQbiBpbnN0ZWFkIG9mIHNpbXBseSA8PSB1c2VyIG1pbiBm cmVxdWVuY3kuwqDCoEZvciBhbGwgb3RoZXIKPiA+ID4gc3VidGVzdHMsIHVzZSB0aGUgb3JpZ2lu YWwgY2hlY2sgcm91dGluZXMgZm9yIGJvdGggY2hlY2tzLgo+ID4gPiAKPiA+ID4gU2lnbmVkLW9m Zi1ieTogQm9iIFBhYXV3ZSA8Ym9iLmoucGFhdXdlQGludGVsLmNvbT4KPiA+IAo+ID4gSSBkb24n dCBzZWUgdGhlIHBvaW50LiBUaGUgZnJlcXVlbmN5IHNob3VsZCBhbHdheXMgZHJvcCB0byB0aGUg aWRsZQo+ID4gZnJlcXVlbmN5IGlmIHRoZSBHUFUgaXMgaWRsZSwgaXQncyBub3QgZW5vdWdoIHRo YXQgaXQncyBiZWxvdyBNSU4tCj4gPiBmcmVxLiAKPiA+IFNvIHdoeSBkbyB3ZSBuZWVkIHNlcGFy YXRlIENVUi1mcmVxPD1NSU4tZnJlcSBhbmQgQ1VSLWZyZXE9PWlkbGUtCj4gPiBmcmVxCj4gPiBj aGVja3M/Cj4gCj4gSSBzdGFydGVkIGZyb20gdGhlIHByZW1pc2UgdGhhdCBpdCBzaG91bGQgYWx3 YXlzIGRyb3AgdG8gaWRsZSBidXQKPiB0aGF0J3MganVzdCBub3QgdGhlIGNhc2UuCgpJdCBpcyB0 aGUgY29ycmVjdCBwcmVtaXNlIGFuZCBpZiBpdCBkb2Vzbid0IGhvbGQgdGhlbiB0aGVyZSBpcyBh IHJlYWwKYnVnIGVpdGhlciBpbiB0aGUgdGVzdGNhc2Ugb3IgdGhlIGtlcm5lbCB3aGljaCBuZWVk cyB0byBiZSBhZGRyZXNzZWQKZGlmZmVyZW50bHkuIEkgaGF2ZW4ndCBmb3VuZCBhbnl0aGluZyBj b25jcmV0ZSBidXQgb25lIHN1c3BlY3QgaXMgdGhlCmxvZ2ljIHRoYXQgd2FpdHMgZm9yIHRoZSBH UFUgaWRsZSBjb25kaXRpb24sIG1heWJlIHRoZSB0aW1lb3V0CnZhbHVlwqBpZGxlX2NoZWNrKCkg b3IgdGhlIGhhcmQtY29kZWQgZHVyYXRpb24gaW4gZG9fbG9hZF9ncHUoKSBpcwppbmNvcnJlY3Qu IEluIGFueSBjYXNlIGxldCdzIG5vdCBwYXBlciBvdmVyIHRoaXMgaXNzdWUsIHRoZSB2ZXJ5IHJl YXNvbgp3ZSBoYXZlIHRlc3QgY2FzZXMgaXMgdG8gdW5jb3ZlciBzdWNoIGJ1Z3MuCgo+IFRoZSBt aW5fbWF4X2NvbmZpZygpIGZ1bmN0aW9uIGlzIHVzZWQgZm9yCj4gYm90aCB0aGUgaWRsZSBhbmQg bG9hZGVkIHN1YnRlc3RzLsKgwqBJZiB5b3UgdHJ5IHRvIGNoZWNrIGZvciBmcmVxPWlkbGUKPiB3 aGVuIGRvaW5nIHRoZSBsb2FkZWQgc3VidGVzdCBpdCB3aWxsIGZhaWwgc2luY2UgaXQgbmV2ZXIg Z29lcyBpZGxlLgo+IEV2ZW4gaW4gdGhlIGlkbGUgc3VidGVzdCB0aGVyZSBhcmUgY2FzZXMgd2hl cmUgaXQgZG9lc24ndCBkcm9wIGRvd24KPiB0bwo+IGlkbGUuIAoKVGhlIG9ubHkgcGxhY2Ugd2Ug c2hvdWxkIGNoZWNrIGZvciBmcmVxPT1pZGxlIGlzIGluIGlkbGVfY2hlY2soKSBhbmQKdGhhdCBv bmUgaXMgbm90IGNhbGxlZCBkdXJpbmcgdGhlIGxvYWRlZCBzdWJ0ZXN0LCBpdCB3b3VsZG4ndCBl dmVuIG1ha2UKc2Vuc2UgdG8gZG8gc28uIFNvIEknbSBub3Qgc3VyZSBob3cgdGhpcyBzdWJ0ZXN0 IGZhaWxzIGZvciB5b3UuwqAKCj4gSSBzdXBwb3NlIEkgY291bGQgZHVwbGljYXRlIG1pbl9tYXhf Y29uZmlnIGFuZCBoYXZlIGEKPiBtaW5fbWF4X2NvbmZpZ19pZGxlKCkgYW5kIG1pbl9tYXhfY29u aWZnX25vdF9pZGxlKCkgZm9yIHVzZSBieSB0aGUKPiBkaWZmZXJlbnQgc3VidGVzdHMuIAoKVGhl IHBvaW50IG9mIHRoZSAiY2hlY2siIGFyZ3VtZW50IG9mIG1pbl9tYXhfY29uZmlnKCkgaXMgdG8g ZGlzdGluZ3Vpc2gKYmV0d2VlbiB0aGUgaWRsZSBhbmQgbG9hZGVkIGNhc2VzLiBUaGUgY2hlY2sg ZnVuY3Rpb25zIHBhc3NlZCBpbiBrbm93CmFscmVhZHkgaWYgdGhleSBjYW4gZXhwZWN0IHRoZSBm cmVxdWVuY3kgdG8gcmVhY2ggdGhlIGlkbGUgZnJlcXVlbmN5Cm9yIG5vdC4KCj4gVGhlIHJlYWwg cHJvYmxlbSBpcyB0aGF0IHRoZSB0ZXN0IHdhcyBub3QgZGVzaWduZWQgdG8gaGFuZGxlIHRoZSBj YXNlCj4gd2hlcmUgdGhlIGZyZXEgY291bGQgZHJvcCBiZWxvdyBtaW4gYW5kIHByb2JhYmx5IG5l ZWRzIHRvIGJlCj4gcmUtZGVzaWduZWQuwqDCoEkndmUgYmVlbiB0cnlpbmcgdG8gZmluZCBhIHF1 aWNrIGZpeCB2cy4gYSBjb21wbGV0ZQo+IG92ZXJoYXVsIGFzIHRoaXMgaXNuJ3QgcmVhbGx5IGEg cHJpb3JpdHkgZm9yIG1lLgoKSSB0aGluayB3ZSBvbmx5IG5lZWQgeW91ciBmaXJzdCBwYXRjaCBh bmQgaWYgdGhlcmUgaXMgYW55IGZhaWx1cmUgYWZ0ZXIKdGhhdCB3ZSBoYXZlIHRvIHJvb3QgY2F1 c2UgdGhhdCBhbmQgZml4IGl0IHByb3Blcmx5LgoKLS1JbXJlCgo+IAo+ID4gCj4gPiA+IC0tLQo+ ID4gPiDCoHRlc3RzL3BtX3Jwcy5jIHwgNDcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLS0tLS0tCj4gPiA+IC0tLS0tCj4gPiA+IMKgMSBmaWxlIGNoYW5nZWQsIDM0IGluc2Vy dGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQo+ID4gPiAKPiA+ID4gZGlmZiAtLWdpdCBhL3Rlc3Rz L3BtX3Jwcy5jIGIvdGVzdHMvcG1fcnBzLmMKPiA+ID4gaW5kZXggZjkxOTYyNS4uOTYyMjVjZSAx MDA2NDQKPiA+ID4gLS0tIGEvdGVzdHMvcG1fcnBzLmMKPiA+ID4gKysrIGIvdGVzdHMvcG1fcnBz LmMKPiA+ID4gQEAgLTM2NCw3ICszNjQsNyBAQCBzdGF0aWMgaW50IGdldF9od19yb3VuZGVkX2Zy ZXEoaW50IHRhcmdldCkKPiA+ID4gwqAJcmV0dXJuIHJldDsKPiA+ID4gwqB9Cj4gPiA+IMKgCj4g PiA+IC1zdGF0aWMgdm9pZCBtaW5fbWF4X2NvbmZpZyh2b2lkICgqY2hlY2spKHZvaWQpLCBib29s IGxvYWRfZ3B1KQo+ID4gPiArc3RhdGljIHZvaWQgbWluX21heF9jb25maWcodm9pZCAoKmNoZWNr KSh2b2lkKSwgdm9pZAo+ID4gPiAoKmNoZWNrMikodm9pZCksIGJvb2wgbG9hZF9ncHUpCj4gPiA+ IMKgewo+ID4gPiDCoAlpbnQgZm1pZCA9IChvcmlnZnJlcXNbUlBuXSArIG9yaWdmcmVxc1tSUDBd KSAvIDI7Cj4gPiA+IMKgCj4gPiA+IEBAIC0zODQsNyArMzg0LDcgQEAgc3RhdGljIHZvaWQgbWlu X21heF9jb25maWcodm9pZAo+ID4gPiAoKmNoZWNrKSh2b2lkKSwKPiA+ID4gYm9vbCBsb2FkX2dw dSkKPiA+ID4gwqAJd3JpdGV2YWwoc3R1ZmZbTUFYXS5maWxwLCBvcmlnZnJlcXNbUlAwXSk7Cj4g PiA+IMKgCWlmIChsb2FkX2dwdSkKPiA+ID4gwqAJCWRvX2xvYWRfZ3B1KCk7Cj4gPiA+IC0JY2hl Y2soKTsKPiA+ID4gKwljaGVjazIoKTsKPiA+ID4gwqAKPiA+ID4gwqAJaWd0X2RlYnVnKCJcbklu Y3JlYXNlIG1pbiB0byBtaWRwb2ludC4uLlxuIik7Cj4gPiA+IMKgCXdyaXRldmFsKHN0dWZmW01J Tl0uZmlscCwgZm1pZCk7Cj4gPiA+IEBAIC00MTIsNyArNDEyLDcgQEAgc3RhdGljIHZvaWQgbWlu X21heF9jb25maWcodm9pZAo+ID4gPiAoKmNoZWNrKSh2b2lkKSwKPiA+ID4gYm9vbCBsb2FkX2dw dSkKPiA+ID4gwqAJd3JpdGV2YWwoc3R1ZmZbTUlOXS5maWxwLCBvcmlnZnJlcXNbUlBuXSk7Cj4g PiA+IMKgCWlmIChsb2FkX2dwdSkKPiA+ID4gwqAJCWRvX2xvYWRfZ3B1KCk7Cj4gPiA+IC0JY2hl Y2soKTsKPiA+ID4gKwljaGVjazIoKTsKPiA+ID4gwqAKPiA+ID4gwqAJaWd0X2RlYnVnKCJcbkRl Y3JlYXNlIG1pbiBiZWxvdyBSUG4gKGludmFsaWQpLi4uXG4iKTsKPiA+ID4gwqAJd3JpdGV2YWxf aW52YWwoc3R1ZmZbTUlOXS5maWxwLCAwKTsKPiA+ID4gQEAgLTQyMCwxMSArNDIwLDExIEBAIHN0 YXRpYyB2b2lkIG1pbl9tYXhfY29uZmlnKHZvaWQKPiA+ID4gKCpjaGVjaykodm9pZCksCj4gPiA+ IGJvb2wgbG9hZF9ncHUpCj4gPiA+IMKgCj4gPiA+IMKgCWlndF9kZWJ1ZygiXG5EZWNyZWFzZSBt YXggdG8gbWlkcG9pbnQuLi5cbiIpOwo+ID4gPiDCoAl3cml0ZXZhbChzdHVmZltNQVhdLmZpbHAs IGZtaWQpOwo+ID4gPiAtCWNoZWNrKCk7Cj4gPiA+ICsJY2hlY2syKCk7Cj4gPiA+IMKgCj4gPiA+ IMKgCWlndF9kZWJ1ZygiXG5EZWNyZWFzZSBtYXggdG8gUlBuLi4uXG4iKTsKPiA+ID4gwqAJd3Jp dGV2YWwoc3R1ZmZbTUFYXS5maWxwLCBvcmlnZnJlcXNbUlBuXSk7Cj4gPiA+IC0JY2hlY2soKTsK PiA+ID4gKwljaGVjazIoKTsKPiA+ID4gwqAKPiA+ID4gwqAJaWd0X2RlYnVnKCJcbkRlY3JlYXNl IG1heCBiZWxvdyBSUG4gKGludmFsaWQpLi4uXG4iKTsKPiA+ID4gwqAJd3JpdGV2YWxfaW52YWwo c3R1ZmZbTUFYXS5maWxwLCAwKTsKPiA+ID4gQEAgLTQzNiwxMSArNDM2LDExIEBAIHN0YXRpYyB2 b2lkIG1pbl9tYXhfY29uZmlnKHZvaWQKPiA+ID4gKCpjaGVjaykodm9pZCksCj4gPiA+IGJvb2wg bG9hZF9ncHUpCj4gPiA+IMKgCj4gPiA+IMKgCWlndF9kZWJ1ZygiXG5JbmNyZWFzZSBtYXggdG8g bWlkcG9pbnQuLi5cbiIpOwo+ID4gPiDCoAl3cml0ZXZhbChzdHVmZltNQVhdLmZpbHAsIGZtaWQp Owo+ID4gPiAtCWNoZWNrKCk7Cj4gPiA+ICsJY2hlY2syKCk7Cj4gPiA+IMKgCj4gPiA+IMKgCWln dF9kZWJ1ZygiXG5JbmNyZWFzZSBtYXggdG8gUlAwLi4uXG4iKTsKPiA+ID4gwqAJd3JpdGV2YWwo c3R1ZmZbTUFYXS5maWxwLCBvcmlnZnJlcXNbUlAwXSk7Cj4gPiA+IC0JY2hlY2soKTsKPiA+ID4g KwljaGVjazIoKTsKPiA+ID4gwqAKPiA+ID4gwqAJaWd0X2RlYnVnKCJcbkluY3JlYXNlIG1heCBh Ym92ZSBSUDAgKGludmFsaWQpLi4uXG4iKTsKPiA+ID4gwqAJd3JpdGV2YWxfaW52YWwoc3R1ZmZb TUFYXS5maWxwLCBvcmlnZnJlcXNbUlAwXSArIDEwMDApOwo+ID4gPiBAQCAtNDYxLDcgKzQ2MSw3 IEBAIHN0YXRpYyB2b2lkIGJhc2ljX2NoZWNrKHZvaWQpCj4gPiA+IMKgCj4gPiA+IMKgI2RlZmlu ZSBJRExFX1dBSVRfVElNRVNURVBfTVNFQyAxMDAKPiA+ID4gwqAjZGVmaW5lIElETEVfV0FJVF9U SU1FT1VUX01TRUMgMTAwMDAKPiA+ID4gLXN0YXRpYyB2b2lkIGlkbGVfY2hlY2sodm9pZCkKPiA+ ID4gK3N0YXRpYyB2b2lkIGlkbGVfY2hlY2tfbWluKHZvaWQpCj4gPiA+IMKgewo+ID4gPiDCoAlp bnQgZnJlcXNbTlVNRlJFUV07Cj4gPiA+IMKgCWludCB3YWl0ID0gMDsKPiA+ID4gQEAgLTQ4Miw2 ICs0ODIsMjcgQEAgc3RhdGljIHZvaWQgaWRsZV9jaGVjayh2b2lkKQo+ID4gPiDCoAlpZ3RfZGVi dWcoIlJlcXVpcmVkICVkIG1zZWMgdG8gcmVhY2ggY3VyPD1taW5cbiIsIHdhaXQpOwo+ID4gPiDC oH0KPiA+ID4gwqAKPiA+ID4gK3N0YXRpYyB2b2lkIGlkbGVfY2hlY2tfaWRsZSh2b2lkKQo+ID4g PiArewo+ID4gPiArCWludCBmcmVxc1tOVU1GUkVRXTsKPiA+ID4gKwlpbnQgd2FpdCA9IDA7Cj4g PiA+ICsKPiA+ID4gKwkvKiBNb25pdG9yIGZyZXF1ZW5jaWVzIHVudGlsIGN1ciBzZXR0bGVzIGRv d24gdG8gbWluLAo+ID4gPiB3aGljaAo+ID4gPiBzaG91bGQKPiA+ID4gKwnCoCogaGFwcGVuIHdp dGhpbiB0aGUgYWxsb3R0ZWQgdGltZSAqLwo+ID4gPiArCWRvIHsKPiA+ID4gKwkJcmVhZF9mcmVx cyhmcmVxcyk7Cj4gPiA+ICsJCWR1bXAoZnJlcXMpOwo+ID4gPiArCQljaGVja2l0KGZyZXFzKTsK PiA+ID4gKwkJaWYgKGZyZXFzW0NVUl0gPT0gZnJlcXNbUlBuXSkKPiA+ID4gKwkJCWJyZWFrOwo+ ID4gPiArCQl1c2xlZXAoMTAwMCAqIElETEVfV0FJVF9USU1FU1RFUF9NU0VDKTsKPiA+ID4gKwkJ d2FpdCArPSBJRExFX1dBSVRfVElNRVNURVBfTVNFQzsKPiA+ID4gKwl9IHdoaWxlICh3YWl0IDwg SURMRV9XQUlUX1RJTUVPVVRfTVNFQyk7Cj4gPiA+ICsKPiA+ID4gKwlpZ3RfYXNzZXJ0X2VxKGZy ZXFzW0NVUl0sIGZyZXFzW1JQbl0pOwo+ID4gPiArCWlndF9kZWJ1ZygiUmVxdWlyZWQgJWQgbXNl YyB0byByZWFjaCBjdXI9aWRsZVxuIiwgd2FpdCk7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gwqAj ZGVmaW5lIExPQURFRF9XQUlUX1RJTUVTVEVQX01TRUMgMTAwCj4gPiA+IMKgI2RlZmluZSBMT0FE RURfV0FJVF9USU1FT1VUX01TRUMgMzAwMAo+ID4gPiDCoHN0YXRpYyB2b2lkIGxvYWRlZF9jaGVj ayh2b2lkKQo+ID4gPiBAQCAtNTc3LDcgKzU5OCw3IEBAIHN0YXRpYyB2b2lkIHJlc2V0KHZvaWQp Cj4gPiA+IMKgCj4gPiA+IMKgCWlndF9kZWJ1ZygiUmVtb3ZpbmcgbG9hZC4uLlxuIik7Cj4gPiA+ IMKgCWxvYWRfaGVscGVyX3N0b3AoKTsKPiA+ID4gLQlpZGxlX2NoZWNrKCk7Cj4gPiA+ICsJaWRs ZV9jaGVja19taW4oKTsKPiA+ID4gwqB9Cj4gPiA+IMKgCj4gPiA+IMKgLyoKPiA+ID4gQEAgLTYz NSw3ICs2NTYsNyBAQCBzdGF0aWMgdm9pZCBibG9ja2luZyh2b2lkKQo+ID4gPiDCoAltYXRjaGl0 KHByZV9mcmVxcywgcG9zdF9mcmVxcyk7Cj4gPiA+IMKgCj4gPiA+IMKgCWlndF9kZWJ1ZygiUmVt b3ZpbmcgbG9hZC4uLlxuIik7Cj4gPiA+IC0JaWRsZV9jaGVjaygpOwo+ID4gPiArCWlkbGVfY2hl Y2tfbWluKCk7Cj4gPiA+IMKgfQo+ID4gPiDCoAo+ID4gPiDCoHN0YXRpYyB2b2lkIHBtX3Jwc19l eGl0X2hhbmRsZXIoaW50IHNpZykKPiA+ID4gQEAgLTY4NiwxNCArNzA3LDE0IEBAIGlndF9tYWlu Cj4gPiA+IMKgCX0KPiA+ID4gwqAKPiA+ID4gwqAJaWd0X3N1YnRlc3QoImJhc2ljLWFwaSIpCj4g PiA+IC0JCW1pbl9tYXhfY29uZmlnKGJhc2ljX2NoZWNrLCBmYWxzZSk7Cj4gPiA+ICsJCW1pbl9t YXhfY29uZmlnKGJhc2ljX2NoZWNrLCBiYXNpY19jaGVjaywgZmFsc2UpOwo+ID4gPiDCoAo+ID4g PiDCoAlpZ3Rfc3VidGVzdCgibWluLW1heC1jb25maWctaWRsZSIpCj4gPiA+IC0JCW1pbl9tYXhf Y29uZmlnKGlkbGVfY2hlY2ssIHRydWUpOwo+ID4gPiArCQltaW5fbWF4X2NvbmZpZyhpZGxlX2No ZWNrX21pbiwgaWRsZV9jaGVja19pZGxlLAo+ID4gPiB0cnVlKTsKPiA+ID4gwqAKPiA+ID4gwqAJ aWd0X3N1YnRlc3QoIm1pbi1tYXgtY29uZmlnLWxvYWRlZCIpIHsKPiA+ID4gwqAJCWxvYWRfaGVs cGVyX3J1bihISUdIKTsKPiA+ID4gLQkJbWluX21heF9jb25maWcobG9hZGVkX2NoZWNrLCBmYWxz ZSk7Cj4gPiA+ICsJCW1pbl9tYXhfY29uZmlnKGxvYWRlZF9jaGVjaywgbG9hZGVkX2NoZWNrLAo+ ID4gPiBmYWxzZSk7Cj4gPiA+IMKgCQlsb2FkX2hlbHBlcl9zdG9wKCk7Cj4gPiA+IMKgCX0KPiA+ ID4gwqAKPiAKPiAKPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK