From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 3/3] drm/i915: Only grab correct forcewake for the engine with execlists Date: Thu, 7 Apr 2016 15:05:40 +0100 Message-ID: <1460037940-14094-3-git-send-email-tvrtko.ursulin@linux.intel.com> References: <1460037940-14094-1-git-send-email-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 282816E05D for ; Thu, 7 Apr 2016 14:06:21 +0000 (UTC) In-Reply-To: <1460037940-14094-1-git-send-email-tvrtko.ursulin@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: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClJhdGhlciB0 aGFuIGJsaW5kbHkgd2FraW5nIHVwIGFsbCBmb3JjZXdha2UgZG9tYWlucyBvbiBjb21tYW5kCnN1 Ym1pc3Npb24sIHdlIGNhbiB0ZWFjaCBlYWNoIGVuZ2luZSB3aGF0IGlzIChvciBhcmUpIHRoZSBj b3JyZWN0Cm9uZSB0byB0YWtlLgoKT24gcGxhdGZvcm1zIHdpdGggbXVsdGlwbGUgZm9yY2V3YWtl IGRvbWFpbnMgbGlrZSBWTFYsIENIViwgU0tMCmFuZCBCWFQsIHRoaXMgaGFzIHRoZSBwb3RlbnRp YWwgb2YgbG93ZXJpbmcgdGhlIEdQVSBhbmQgQ1BVCnBvd2VyIHVzZSBhbmQgc3VibWlzc2lvbiBs YXRlbmN5LgoKVG8gaW1wbGVtZW50IGl0IHdlIGFkZCB0d28gbmV3IGZ1bmN0aW9ucyBuYW1lZApp bnRlbF9yZWdfcmVhZF9md19kb21haW5zIGFuZCBpbnRlbF9yZWdfd3JpdGVfZndfZG9tYWlucywg d2hvc2UKcHVycG9zZSBpcyB0byBxdWVyeSB3aGljaCBmb3JjZXdha2UgZG9tYWlucyBuZWVkIHRv IGJlIHRha2VuCnRvIHJlYWQgb3Igd3JpdGUgYSBzcGVjaWZpYyByZWdpc3RlciB3aXRoIHJhdyBt bWlvIGFjY2Vzc29ycy4KClRoZXNlIGVuYWJsZXMgdGhlIGV4ZWNsaXN0cyBlbmdpbmUgc2V0dXAg IHRvIHF1ZXJ5IHdoaWNoCmZvcmNld2FrZSBkb21haW5zIGFyZSByZWxldmFudCBwZXIgZW5naW5l IG9uIHRoZSBjdXJyZW50bHkKcnVubmluZyBwbGF0Zm9ybS4KCnYyOgogICogS2VybmVsZG9jLgog ICogU3BsaXQgZnJvbSBpbnRlbF91bmNvcmUuYyBtYWNybyBleHRyYWN0aW9uLCBXQVJOX09OLAog ICAgbm8gd2FybnMgb24gb2xkIHBsYXRmb3Jtcy4gKENocmlzIFdpbHNvbikKClNpZ25lZC1vZmYt Ynk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CkNjOiBDaHJpcyBX aWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oICAgICAgICAgfCAgNiArKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2xyYy5jICAgICAgICB8IDE4ICsrKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuaCB8ICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jICAg ICB8IDkxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2Vk LCAxMTEgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAppbmRleCA0ZWJkM2ZmMDI4MDMuLjU1ZmVjNTA0YjE5ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCkBAIC02MzMsNiArNjMzLDEyIEBAIGVudW0gZm9yY2V3YWtlX2RvbWFpbnMgewogCQkJIEZP UkNFV0FLRV9NRURJQSkKIH07CiAKK2VudW0gZm9yY2V3YWtlX2RvbWFpbnMKK2ludGVsX3JlZ19y ZWFkX2Z3X2RvbWFpbnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpOTE1X3Jl Z190IHJlZyk7CisKK2VudW0gZm9yY2V3YWtlX2RvbWFpbnMKK2ludGVsX3JlZ193cml0ZV9md19k b21haW5zKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaTkxNV9yZWdfdCByZWcp OworCiBzdHJ1Y3QgaW50ZWxfdW5jb3JlX2Z1bmNzIHsKIAl2b2lkICgqZm9yY2Vfd2FrZV9nZXQp KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkJCQllbnVtIGZvcmNld2Fr ZV9kb21haW5zIGRvbWFpbnMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwppbmRleCBhMWRiNmEw MmNmMjMuLmNhYzM4N2YzOGNmNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfbHJjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKQEAgLTQxOCw2 ICs0MTgsNyBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfc3VibWl0X3JlcXVlc3RzKHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcnEwLAogCQkJCSAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcnExKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJx MC0+aTkxNTsKKwl1bnNpZ25lZCBpbnQgZndfZG9tYWlucyA9IHJxMC0+ZW5naW5lLT5md19kb21h aW5zX2Vsc3A7CiAKIAlleGVjbGlzdHNfdXBkYXRlX2NvbnRleHQocnEwKTsKIApAQCAtNDI1LDEx ICs0MjYsMTEgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX3N1Ym1pdF9yZXF1ZXN0cyhzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxMCwKIAkJZXhlY2xpc3RzX3VwZGF0ZV9jb250ZXh0KHJx MSk7CiAKIAlzcGluX2xvY2tfaXJxKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2spOwotCWludGVsX3Vu Y29yZV9mb3JjZXdha2VfZ2V0X19sb2NrZWQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOworCWlu dGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0X19sb2NrZWQoZGV2X3ByaXYsIGZ3X2RvbWFpbnMpOwog CiAJZXhlY2xpc3RzX2Vsc3Bfd3JpdGUocnEwLCBycTEpOwogCi0JaW50ZWxfdW5jb3JlX2ZvcmNl d2FrZV9wdXRfX2xvY2tlZChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7CisJaW50ZWxfdW5jb3Jl X2ZvcmNld2FrZV9wdXRfX2xvY2tlZChkZXZfcHJpdiwgZndfZG9tYWlucyk7CiAJc3Bpbl91bmxv Y2tfaXJxKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2spOwogfQogCkBAIC01NTIsNyArNTUzLDcgQEAg c3RhdGljIHZvaWQgaW50ZWxfbHJjX2lycV9oYW5kbGVyKHVuc2lnbmVkIGxvbmcgZGF0YSkKIAl1 bnNpZ25lZCBpbnQgY3NiX3JlYWQgPSAwLCBpOwogCXVuc2lnbmVkIGludCBzdWJtaXRfY29udGV4 dHMgPSAwOwogCi0JaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoZGV2X3ByaXYsIEZPUkNFV0FL RV9BTEwpOworCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KGRldl9wcml2LCBlbmdpbmUtPmZ3 X2RvbWFpbnNfY3NiKTsKIAogCXN0YXR1c19wb2ludGVyID0gSTkxNV9SRUFEX0ZXKFJJTkdfQ09O VEVYVF9TVEFUVVNfUFRSKGVuZ2luZSkpOwogCkBAIC01NzcsNyArNTc4LDcgQEAgc3RhdGljIHZv aWQgaW50ZWxfbHJjX2lycV9oYW5kbGVyKHVuc2lnbmVkIGxvbmcgZGF0YSkKIAkJICAgICAgX01B U0tFRF9GSUVMRChHRU44X0NTQl9SRUFEX1BUUl9NQVNLLAogCQkJCSAgICBlbmdpbmUtPm5leHRf Y29udGV4dF9zdGF0dXNfYnVmZmVyIDw8IDgpKTsKIAotCWludGVsX3VuY29yZV9mb3JjZXdha2Vf cHV0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1 dChkZXZfcHJpdiwgZW5naW5lLT5md19kb21haW5zX2NzYik7CiAKIAlzcGluX2xvY2soJmVuZ2lu ZS0+ZXhlY2xpc3RfbG9jayk7CiAKQEAgLTIwNzcsNyArMjA3OCw4IEBAIGxvZ2ljYWxfcmluZ19k ZWZhdWx0X2lycXMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1bnNpZ25lZCBzaGlm dCkKIHN0YXRpYyBpbnQKIGxvZ2ljYWxfcmluZ19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfY29udGV4 dCAqZGN0eCA9IHRvX2k5MTUoZGV2KS0+a2VybmVsX2NvbnRleHQ7CisJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOworCXN0cnVjdCBpbnRlbF9jb250ZXh0 ICpkY3R4ID0gZGV2X3ByaXYtPmtlcm5lbF9jb250ZXh0OwogCWludCByZXQ7CiAKIAkvKiBJbnRl bnRpb25hbGx5IGxlZnQgYmxhbmsuICovCkBAIC0yMDk5LDYgKzIxMDEsMTIgQEAgbG9naWNhbF9y aW5nX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQogCiAJbG9naWNhbF9yaW5nX2luaXRfcGxhdGZvcm1faW52YXJpYW50cyhlbmdpbmUp OwogCisJZW5naW5lLT5md19kb21haW5zX2Vsc3AgPQorCQlpbnRlbF9yZWdfd3JpdGVfZndfZG9t YWlucyhkZXZfcHJpdiwgUklOR19FTFNQKGVuZ2luZSkpOworCWVuZ2luZS0+ZndfZG9tYWluc19j c2IgPQorCQlpbnRlbF9yZWdfd3JpdGVfZndfZG9tYWlucyhkZXZfcHJpdiwKKwkJCQkJICAgUklO R19DT05URVhUX1NUQVRVU19QVFIoZW5naW5lKSk7CisKIAlyZXQgPSBpOTE1X2NtZF9wYXJzZXJf aW5pdF9yaW5nKGVuZ2luZSk7CiAJaWYgKHJldCkKIAkJZ290byBlcnJvcjsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAppbmRleCAxODA3NGFiNTVmNjEuLmZkMjQ4Y2RlNzE2 NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaApAQCAtMjcwLDYgKzI3 MCw3IEBAIHN0cnVjdCAgaW50ZWxfZW5naW5lX2NzIHsKIAlzcGlubG9ja190IGV4ZWNsaXN0X2xv Y2s7IC8qIHVzZWQgaW5zaWRlIHRhc2tsZXQsIHVzZSBzcGluX2xvY2tfYmggKi8KIAlzdHJ1Y3Qg bGlzdF9oZWFkIGV4ZWNsaXN0X3F1ZXVlOwogCXN0cnVjdCBsaXN0X2hlYWQgZXhlY2xpc3RfcmV0 aXJlZF9yZXFfbGlzdDsKKwl1bnNpZ25lZCBpbnQgZndfZG9tYWluc19lbHNwLCBmd19kb21haW5z X2NzYjsKIAl1bnNpZ25lZCBpbnQgbmV4dF9jb250ZXh0X3N0YXR1c19idWZmZXI7CiAJdW5zaWdu ZWQgaW50IGlkbGVfbGl0ZV9yZXN0b3JlX3dhOwogCWJvb2wgZGlzYWJsZV9saXRlX3Jlc3RvcmVf d2E7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCmluZGV4IGI3N2JkZjRhNDdmNi4uNTUw ZTQ4MGZlZGQ0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwpAQCAtMTc2NiwzICsx NzY2LDk0IEBAIGludGVsX3VuY29yZV9hcm1fdW5jbGFpbWVkX21taW9fZGV0ZWN0aW9uKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAogCXJldHVybiBmYWxzZTsKIH0KKworLyoq CisgKiBpbnRlbF9yZWdfcmVhZF9md19kb21haW5zIC0gd2hpY2ggZm9yY2V3YWtlIGRvbWFpbnMg YXJlIG5lZWRlZCB0byByZWFkIGEgcmVnaXN0ZXIKKyAqIEBkZXZfcHJpdjogcG9pbnRlciB0byBz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQorICogQHJlZzogcmVnaXN0ZXIgaW4gcXVlc3Rpb24KKyAq CisgKiBSZXR1cm5zIGEgc2V0IG9mIGZvcmNld2FrZSBkb21haW5zIHJlcXVpcmVkIHRvIGJlIHRh a2VuIHdpdGggZm9yIGV4YW1wbGUKKyAqIGludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0IGZvciB0 aGUgc3BlY2lmaWVkIHJlZ2lzdGVyIHRvIGJlIHJlYWRhYmxlIHdpdGggdGhlCisgKiByYXcgbW1p byBhY2Nlc3NvcnMuCisgKi8KK2VudW0gZm9yY2V3YWtlX2RvbWFpbnMKK2ludGVsX3JlZ19yZWFk X2Z3X2RvbWFpbnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpOTE1X3JlZ190 IHJlZykKK3sKKwllbnVtIGZvcmNld2FrZV9kb21haW5zIGZ3X2RvbWFpbnM7CisKKwlpZiAoaW50 ZWxfdmdwdV9hY3RpdmUoZGV2X3ByaXYtPmRldikpCisJCXJldHVybiAwOworCisJc3dpdGNoIChJ TlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuKSB7CisJY2FzZSA5OgorCQlmd19kb21haW5zID0gX19n ZW45X3JlZ19yZWFkX2Z3X2RvbWFpbnMoaTkxNV9tbWlvX3JlZ19vZmZzZXQocmVnKSk7CisJCWJy ZWFrOworCWNhc2UgODoKKwkJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQorCQkJZndfZG9t YWlucyA9IF9fY2h2X3JlZ19yZWFkX2Z3X2RvbWFpbnMoaTkxNV9tbWlvX3JlZ19vZmZzZXQocmVn KSk7CisJCWVsc2UKKwkJCWZ3X2RvbWFpbnMgPSBfX2dlbjZfcmVnX3JlYWRfZndfZG9tYWlucyhp OTE1X21taW9fcmVnX29mZnNldChyZWcpKTsKKwkJYnJlYWs7CisJY2FzZSA3OgorCWNhc2UgNjoK KwkJaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKQorCQkJZndfZG9tYWlucyA9IF9fdmx2X3Jl Z19yZWFkX2Z3X2RvbWFpbnMoaTkxNV9tbWlvX3JlZ19vZmZzZXQocmVnKSk7CisJCWVsc2UKKwkJ CWZ3X2RvbWFpbnMgPSBfX2dlbjZfcmVnX3JlYWRfZndfZG9tYWlucyhpOTE1X21taW9fcmVnX29m ZnNldChyZWcpKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJTUlTU0lOR19DQVNFKElOVEVMX0lO Rk8oZGV2X3ByaXYpLT5nZW4pOworCWNhc2UgNTogLyogZm9yY2V3YWtlIHdhcyBpbnRyb2R1Y2Vk IHdpdGggZ2VuNiAqLworCWNhc2UgNDoKKwljYXNlIDM6CisJY2FzZSAyOgorCQlyZXR1cm4gMDsK Kwl9CisKKwlXQVJOX09OKGZ3X2RvbWFpbnMgJiB+ZGV2X3ByaXYtPnVuY29yZS5md19kb21haW5z KTsKKworCXJldHVybiBmd19kb21haW5zOworfQorCisvKioKKyAqIGludGVsX3JlZ193cml0ZV9m d19kb21haW5zIC0gd2hpY2ggZm9yY2V3YWtlIGRvbWFpbnMgYXJlIG5lZWRlZCB0byB3cml0ZSBh IHJlZ2lzdGVyCisgKiBAZGV2X3ByaXY6IHBvaW50ZXIgdG8gc3RydWN0IGRybV9pOTE1X3ByaXZh dGUKKyAqIEByZWc6IHJlZ2lzdGVyIGluIHF1ZXN0aW9uCisgKgorICogUmV0dXJucyBhIHNldCBv ZiBmb3JjZXdha2UgZG9tYWlucyByZXF1aXJlZCB0byBiZSB0YWtlbiB3aXRoIGZvciBleGFtcGxl CisgKiBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldCBmb3IgdGhlIHNwZWNpZmllZCByZWdpc3Rl ciB0byBiZSB3cml0YWJsZSB3aXRoIHRoZQorICogcmF3IG1taW8gYWNjZXNzb3JzLgorICovCitl bnVtIGZvcmNld2FrZV9kb21haW5zCitpbnRlbF9yZWdfd3JpdGVfZndfZG9tYWlucyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGk5MTVfcmVnX3QgcmVnKQoreworCWVudW0gZm9y Y2V3YWtlX2RvbWFpbnMgZndfZG9tYWluczsKKworCWlmIChpbnRlbF92Z3B1X2FjdGl2ZShkZXZf cHJpdi0+ZGV2KSkKKwkJcmV0dXJuIDA7CisKKwlzd2l0Y2ggKElOVEVMX0lORk8oZGV2X3ByaXYp LT5nZW4pIHsKKwljYXNlIDk6CisJCWZ3X2RvbWFpbnMgPSBfX2dlbjlfcmVnX3dyaXRlX2Z3X2Rv bWFpbnMoaTkxNV9tbWlvX3JlZ19vZmZzZXQocmVnKSk7CisJCWJyZWFrOworCWNhc2UgODoKKwkJ aWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQorCQkJZndfZG9tYWlucyA9IF9fY2h2X3JlZ193 cml0ZV9md19kb21haW5zKGk5MTVfbW1pb19yZWdfb2Zmc2V0KHJlZykpOworCQllbHNlCisJCQlm d19kb21haW5zID0gX19nZW44X3JlZ193cml0ZV9md19kb21haW5zKGk5MTVfbW1pb19yZWdfb2Zm c2V0KHJlZykpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlNSVNTSU5HX0NBU0UoSU5URUxfSU5G TyhkZXZfcHJpdiktPmdlbik7CisJY2FzZSA3OgorCWNhc2UgNjoKKwljYXNlIDU6CisJY2FzZSA0 OgorCWNhc2UgMzoKKwljYXNlIDI6CisJCXJldHVybiAwOworCX0KKworCVdBUk5fT04oZndfZG9t YWlucyAmIH5kZXZfcHJpdi0+dW5jb3JlLmZ3X2RvbWFpbnMpOworCisJcmV0dXJuIGZ3X2RvbWFp bnM7Cit9Ci0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==