From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gerd Hoffmann Subject: [PATCH v2 3/4] qxl: hook monitors_config updates into crtc, not encoder. Date: Fri, 20 Apr 2018 09:19:03 +0200 Message-ID: <20180420071904.24276-4-kraxel@redhat.com> References: <20180420071904.24276-1-kraxel@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by gabe.freedesktop.org (Postfix) with ESMTPS id 669916E139 for ; Fri, 20 Apr 2018 07:19:09 +0000 (UTC) In-Reply-To: <20180420071904.24276-1-kraxel@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: David Airlie , David Airlie , Gerd Hoffmann , open list , "open list:DRM DRIVER FOR QXL VIRTUAL GPU" List-Id: dri-devel@lists.freedesktop.org VGhlIGVuY29kZXIgY2FsbGJhY2tzIGFyZSBvbmx5IGNhbGxlZCBpbiBjYXNlIHRoZSB2aWRlbyBt b2RlIGNoYW5nZXMuClNvIGFueSBsYXlvdXQgY2hhbmdlcyB3aXRob3V0IG1vZGUgY2hhbmdlcyB3 aWxsIGdvIHVubm90aWNlZC4KCkFkZCBxeGxfY3J0Y191cGRhdGVfbW9uaXRvcnNfY29uZmlnKCks IGJhc2VkIG9uIHRoZSBvbGQKcXhsX3dyaXRlX21vbml0b3JzX2NvbmZpZ19mb3JfZW5jb2Rlcigp IGZ1bmN0aW9uLiAgSG9vayBpdCBpbnRvIHRoZQplbmFibGUsIGRpc2FibGUgYW5kIGZsdXNoIGF0 b21pYyBjcnRjIGNhbGxiYWNrcy4gIFJlbW92ZSBtb25pdG9yc19jb25maWcKdXBkYXRlcyBmcm9t IGFsbCBvdGhlciBwbGFjZXMuCgpGaXhlczogaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3No b3dfYnVnLmNnaT9pZD0xNTQ0MzIyClNpZ25lZC1vZmYtYnk6IEdlcmQgSG9mZm1hbm4gPGtyYXhl bEByZWRoYXQuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX2NtZC5jICAgICB8ICAg MiArCiBkcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9kaXNwbGF5LmMgfCAxNTYgKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgNjYgaW5zZXJ0aW9u cygrKSwgOTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3F4bC9x eGxfY21kLmMgYi9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9jbWQuYwppbmRleCA4NTBmOGQ3ZDM3 Li45NWRiMjBmMjE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9jbWQuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9jbWQuYwpAQCAtMzcxLDYgKzM3MSw3IEBAIHZv aWQgcXhsX2lvX2ZsdXNoX3N1cmZhY2VzKHN0cnVjdCBxeGxfZGV2aWNlICpxZGV2KQogdm9pZCBx eGxfaW9fZGVzdHJveV9wcmltYXJ5KHN0cnVjdCBxeGxfZGV2aWNlICpxZGV2KQogewogCXdhaXRf Zm9yX2lvX2NtZChxZGV2LCAwLCBRWExfSU9fREVTVFJPWV9QUklNQVJZX0FTWU5DKTsKKwlxZGV2 LT5wcmltYXJ5X2NyZWF0ZWQgPSBmYWxzZTsKIH0KIAogdm9pZCBxeGxfaW9fY3JlYXRlX3ByaW1h cnkoc3RydWN0IHF4bF9kZXZpY2UgKnFkZXYsCkBAIC0zOTYsNiArMzk3LDcgQEAgdm9pZCBxeGxf aW9fY3JlYXRlX3ByaW1hcnkoc3RydWN0IHF4bF9kZXZpY2UgKnFkZXYsCiAJY3JlYXRlLT50eXBl ID0gUVhMX1NVUkZfVFlQRV9QUklNQVJZOwogCiAJd2FpdF9mb3JfaW9fY21kKHFkZXYsIDAsIFFY TF9JT19DUkVBVEVfUFJJTUFSWV9BU1lOQyk7CisJcWRldi0+cHJpbWFyeV9jcmVhdGVkID0gdHJ1 ZTsKIH0KIAogdm9pZCBxeGxfaW9fbWVtc2xvdF9hZGQoc3RydWN0IHF4bF9kZXZpY2UgKnFkZXYs IHVpbnQ4X3QgaWQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9kaXNwbGF5 LmMgYi9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9kaXNwbGF5LmMKaW5kZXggNjhkYjRkMTk2NS4u MDZlZTAwYjQ4NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZGlzcGxheS5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX2Rpc3BsYXkuYwpAQCAtMjgxLDYgKzI4MSw2 NiBAQCBzdGF0aWMgdm9pZCBxeGxfc2VuZF9tb25pdG9yc19jb25maWcoc3RydWN0IHF4bF9kZXZp Y2UgKnFkZXYpCiAJcXhsX2lvX21vbml0b3JzX2NvbmZpZyhxZGV2KTsKIH0KIAorc3RhdGljIHZv aWQgcXhsX2NydGNfdXBkYXRlX21vbml0b3JzX2NvbmZpZyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMs CisJCQkJCSAgICBjb25zdCBjaGFyICpyZWFzb24pCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IGNydGMtPmRldjsKKwlzdHJ1Y3QgcXhsX2RldmljZSAqcWRldiA9IGRldi0+ZGV2X3ByaXZh dGU7CisJc3RydWN0IHF4bF9jcnRjICpxY3J0YyA9IHRvX3F4bF9jcnRjKGNydGMpOworCXN0cnVj dCBxeGxfaGVhZCBoZWFkOworCWludCBvbGRjb3VudCwgaSA9IHFjcnRjLT5pbmRleDsKKworCWlm ICghcWRldi0+cHJpbWFyeV9jcmVhdGVkKSB7CisJCURSTV9ERUJVR19LTVMoIm5vIHByaW1hcnkg c3VyZmFjZSwgc2tpcCAoJXMpXG4iLCByZWFzb24pOworCQlyZXR1cm47CisJfQorCisJaWYgKCFx ZGV2LT5tb25pdG9yc19jb25maWcgfHwKKwkgICAgcWRldi0+bW9uaXRvcnNfY29uZmlnLT5tYXhf YWxsb3dlZCA8PSBpKQorCQlyZXR1cm47CisKKwloZWFkLmlkID0gaTsKKwloZWFkLmZsYWdzID0g MDsKKwlvbGRjb3VudCA9IHFkZXYtPm1vbml0b3JzX2NvbmZpZy0+Y291bnQ7CisJaWYgKGNydGMt PnN0YXRlLT5hY3RpdmUpIHsKKwkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSAmY3J0 Yy0+bW9kZTsKKwkJaGVhZC53aWR0aCA9IG1vZGUtPmhkaXNwbGF5OworCQloZWFkLmhlaWdodCA9 IG1vZGUtPnZkaXNwbGF5OworCQloZWFkLnggPSBjcnRjLT54OworCQloZWFkLnkgPSBjcnRjLT55 OworCQlpZiAocWRldi0+bW9uaXRvcnNfY29uZmlnLT5jb3VudCA8IGkgKyAxKQorCQkJcWRldi0+ bW9uaXRvcnNfY29uZmlnLT5jb3VudCA9IGkgKyAxOworCX0gZWxzZSBpZiAoaSA+IDApIHsKKwkJ aGVhZC53aWR0aCA9IDA7CisJCWhlYWQuaGVpZ2h0ID0gMDsKKwkJaGVhZC54ID0gMDsKKwkJaGVh ZC55ID0gMDsKKwkJaWYgKHFkZXYtPm1vbml0b3JzX2NvbmZpZy0+Y291bnQgPT0gaSArIDEpCisJ CQlxZGV2LT5tb25pdG9yc19jb25maWctPmNvdW50ID0gaTsKKwl9IGVsc2UgeworCQlEUk1fREVC VUdfS01TKCJpbmFjdGl2ZSBoZWFkIDAsIHNraXAgKCVzKVxuIiwgcmVhc29uKTsKKwkJcmV0dXJu OworCX0KKworCWlmIChoZWFkLndpZHRoICA9PSBxZGV2LT5tb25pdG9yc19jb25maWctPmhlYWRz W2ldLndpZHRoICAmJgorCSAgICBoZWFkLmhlaWdodCA9PSBxZGV2LT5tb25pdG9yc19jb25maWct PmhlYWRzW2ldLmhlaWdodCAmJgorCSAgICBoZWFkLnggICAgICA9PSBxZGV2LT5tb25pdG9yc19j b25maWctPmhlYWRzW2ldLnggICAgICAmJgorCSAgICBoZWFkLnkgICAgICA9PSBxZGV2LT5tb25p dG9yc19jb25maWctPmhlYWRzW2ldLnkgICAgICAmJgorCSAgICBvbGRjb3VudCAgICA9PSBxZGV2 LT5tb25pdG9yc19jb25maWctPmNvdW50KQorCQlyZXR1cm47CisKKwlEUk1fREVCVUdfS01TKCJo ZWFkICVkLCAlZHglZCwgYXQgKyVkKyVkLCAlcyAoJXMpXG4iLAorCQkgICAgICBpLCBoZWFkLndp ZHRoLCBoZWFkLmhlaWdodCwgaGVhZC54LCBoZWFkLnksCisJCSAgICAgIGNydGMtPnN0YXRlLT5h Y3RpdmUgPyAib24iIDogIm9mZiIsIHJlYXNvbik7CisJaWYgKG9sZGNvdW50ICE9IHFkZXYtPm1v bml0b3JzX2NvbmZpZy0+Y291bnQpCisJCURSTV9ERUJVR19LTVMoImFjdGl2ZSBoZWFkcyAlZCAt PiAlZCAoJWQgdG90YWwpXG4iLAorCQkJICAgICAgb2xkY291bnQsIHFkZXYtPm1vbml0b3JzX2Nv bmZpZy0+Y291bnQsCisJCQkgICAgICBxZGV2LT5tb25pdG9yc19jb25maWctPm1heF9hbGxvd2Vk KTsKKworCXFkZXYtPm1vbml0b3JzX2NvbmZpZy0+aGVhZHNbaV0gPSBoZWFkOworCXF4bF9zZW5k X21vbml0b3JzX2NvbmZpZyhxZGV2KTsKK30KKwogc3RhdGljIHZvaWQgcXhsX2NydGNfYXRvbWlj X2ZsdXNoKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJCQkgIHN0cnVjdCBkcm1fY3J0Y19zdGF0 ZSAqb2xkX2NydGNfc3RhdGUpCiB7CkBAIC0yOTYsNiArMzU2LDggQEAgc3RhdGljIHZvaWQgcXhs X2NydGNfYXRvbWljX2ZsdXNoKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJZHJtX2NydGNfc2Vu ZF92YmxhbmtfZXZlbnQoY3J0YywgZXZlbnQpOwogCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZk ZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsKIAl9CisKKwlxeGxfY3J0Y191cGRhdGVfbW9uaXRvcnNf Y29uZmlnKGNydGMsICJmbHVzaCIpOwogfQogCiBzdGF0aWMgdm9pZCBxeGxfY3J0Y19kZXN0cm95 KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKQEAgLTQwMSw1NSArNDYzLDIwIEBAIHN0YXRpYyBib29s IHF4bF9jcnRjX21vZGVfZml4dXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCXJldHVybiB0cnVl OwogfQogCi1zdGF0aWMgdm9pZCBxeGxfbW9uaXRvcnNfY29uZmlnX3NldChzdHJ1Y3QgcXhsX2Rl dmljZSAqcWRldiwKLQkJCQkgICAgaW50IGluZGV4LAotCQkJCSAgICB1bnNpZ25lZCB4LCB1bnNp Z25lZCB5LAotCQkJCSAgICB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LAotCQkJCSAg ICB1bnNpZ25lZCBzdXJmX2lkKQotewotCURSTV9ERUJVR19LTVMoIiVkOiVkeCVkKyVkKyVkXG4i LCBpbmRleCwgd2lkdGgsIGhlaWdodCwgeCwgeSk7Ci0JcWRldi0+bW9uaXRvcnNfY29uZmlnLT5o ZWFkc1tpbmRleF0ueCA9IHg7Ci0JcWRldi0+bW9uaXRvcnNfY29uZmlnLT5oZWFkc1tpbmRleF0u eSA9IHk7Ci0JcWRldi0+bW9uaXRvcnNfY29uZmlnLT5oZWFkc1tpbmRleF0ud2lkdGggPSB3aWR0 aDsKLQlxZGV2LT5tb25pdG9yc19jb25maWctPmhlYWRzW2luZGV4XS5oZWlnaHQgPSBoZWlnaHQ7 Ci0JcWRldi0+bW9uaXRvcnNfY29uZmlnLT5oZWFkc1tpbmRleF0uc3VyZmFjZV9pZCA9IHN1cmZf aWQ7Ci0KLX0KLQotc3RhdGljIHZvaWQgcXhsX21vZGVfc2V0X25vZmIoc3RydWN0IGRybV9jcnRj ICpjcnRjKQotewotCXN0cnVjdCBxeGxfZGV2aWNlICpxZGV2ID0gY3J0Yy0+ZGV2LT5kZXZfcHJp dmF0ZTsKLQlzdHJ1Y3QgcXhsX2NydGMgKnFjcnRjID0gdG9fcXhsX2NydGMoY3J0Yyk7Ci0Jc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSAmY3J0Yy0+bW9kZTsKLQotCURSTV9ERUJVRygi TW9kZSBzZXQgKCVkLCVkKVxuIiwKLQkJICBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXkp OwotCi0JcXhsX21vbml0b3JzX2NvbmZpZ19zZXQocWRldiwgcWNydGMtPmluZGV4LCAwLCAwLAot CQkJCW1vZGUtPmhkaXNwbGF5LAltb2RlLT52ZGlzcGxheSwgMCk7Ci0KLX0KLQogc3RhdGljIHZv aWQgcXhsX2NydGNfYXRvbWljX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCQkJICAg c3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfc3RhdGUpCiB7Ci0JRFJNX0RFQlVHKCJcbiIpOwor CXF4bF9jcnRjX3VwZGF0ZV9tb25pdG9yc19jb25maWcoY3J0YywgImVuYWJsZSIpOwogfQogCiBz dGF0aWMgdm9pZCBxeGxfY3J0Y19hdG9taWNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMs CiAJCQkJICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX3N0YXRlKQogewotCXN0cnVjdCBx eGxfY3J0YyAqcWNydGMgPSB0b19xeGxfY3J0YyhjcnRjKTsKLQlzdHJ1Y3QgcXhsX2RldmljZSAq cWRldiA9IGNydGMtPmRldi0+ZGV2X3ByaXZhdGU7Ci0KLQlxeGxfbW9uaXRvcnNfY29uZmlnX3Nl dChxZGV2LCBxY3J0Yy0+aW5kZXgsIDAsIDAsIDAsIDAsIDApOwotCi0JcXhsX3NlbmRfbW9uaXRv cnNfY29uZmlnKHFkZXYpOworCXF4bF9jcnRjX3VwZGF0ZV9tb25pdG9yc19jb25maWcoY3J0Yywg ImRpc2FibGUiKTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVu Y3MgcXhsX2NydGNfaGVscGVyX2Z1bmNzID0gewogCS5tb2RlX2ZpeHVwID0gcXhsX2NydGNfbW9k ZV9maXh1cCwKLQkubW9kZV9zZXRfbm9mYiA9IHF4bF9tb2RlX3NldF9ub2ZiLAogCS5hdG9taWNf Zmx1c2ggPSBxeGxfY3J0Y19hdG9taWNfZmx1c2gsCiAJLmF0b21pY19lbmFibGUgPSBxeGxfY3J0 Y19hdG9taWNfZW5hYmxlLAogCS5hdG9taWNfZGlzYWJsZSA9IHF4bF9jcnRjX2F0b21pY19kaXNh YmxlLApAQCAtOTM5LDYxICs5NjYsOCBAQCBzdGF0aWMgdm9pZCBxeGxfZW5jX3ByZXBhcmUoc3Ry dWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQogCURSTV9ERUJVRygiXG4iKTsKIH0KIAotc3RhdGlj IHZvaWQgcXhsX3dyaXRlX21vbml0b3JzX2NvbmZpZ19mb3JfZW5jb2RlcihzdHJ1Y3QgcXhsX2Rl dmljZSAqcWRldiwKLQkJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQotewotCWludCBpOwot CXN0cnVjdCBxeGxfb3V0cHV0ICpvdXRwdXQgPSBkcm1fZW5jb2Rlcl90b19xeGxfb3V0cHV0KGVu Y29kZXIpOwotCXN0cnVjdCBxeGxfaGVhZCAqaGVhZDsKLQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqbW9kZTsKLQotCUJVR19PTighZW5jb2Rlcik7Ci0JLyogVE9ETzogdWdseSwgZG8gYmV0dGVy ICovCi0JaSA9IG91dHB1dC0+aW5kZXg7Ci0JaWYgKCFxZGV2LT5tb25pdG9yc19jb25maWcgfHwK LQkgICAgcWRldi0+bW9uaXRvcnNfY29uZmlnLT5tYXhfYWxsb3dlZCA8PSBpKSB7Ci0JCURSTV9F UlJPUigKLQkJImhlYWQgbnVtYmVyIHRvbyBsYXJnZSBvciBtaXNzaW5nIG1vbml0b3JzIGNvbmZp ZzogJXAsICVkIiwKLQkJcWRldi0+bW9uaXRvcnNfY29uZmlnLAotCQlxZGV2LT5tb25pdG9yc19j b25maWcgPwotCQkJcWRldi0+bW9uaXRvcnNfY29uZmlnLT5tYXhfYWxsb3dlZCA6IC0xKTsKLQkJ cmV0dXJuOwotCX0KLQlpZiAoIWVuY29kZXItPmNydGMpIHsKLQkJRFJNX0VSUk9SKCJtaXNzaW5n IGNydGMgb24gZW5jb2RlciAlcFxuIiwgZW5jb2Rlcik7Ci0JCXJldHVybjsKLQl9Ci0JaWYgKGkg IT0gMCkKLQkJRFJNX0RFQlVHKCJtaXNzaW5nIGZvciBtdWx0aXBsZSBtb25pdG9yczogbm8gaGVh ZCBob2xlc1xuIik7Ci0JaGVhZCA9ICZxZGV2LT5tb25pdG9yc19jb25maWctPmhlYWRzW2ldOwot CWhlYWQtPmlkID0gaTsKLQlpZiAoZW5jb2Rlci0+Y3J0Yy0+ZW5hYmxlZCkgewotCQltb2RlID0g JmVuY29kZXItPmNydGMtPm1vZGU7Ci0JCWhlYWQtPndpZHRoID0gbW9kZS0+aGRpc3BsYXk7Ci0J CWhlYWQtPmhlaWdodCA9IG1vZGUtPnZkaXNwbGF5OwotCQloZWFkLT54ID0gZW5jb2Rlci0+Y3J0 Yy0+eDsKLQkJaGVhZC0+eSA9IGVuY29kZXItPmNydGMtPnk7Ci0JCWlmIChxZGV2LT5tb25pdG9y c19jb25maWctPmNvdW50IDwgaSArIDEpCi0JCQlxZGV2LT5tb25pdG9yc19jb25maWctPmNvdW50 ID0gaSArIDE7Ci0JfSBlbHNlIHsKLQkJaGVhZC0+d2lkdGggPSAwOwotCQloZWFkLT5oZWlnaHQg PSAwOwotCQloZWFkLT54ID0gMDsKLQkJaGVhZC0+eSA9IDA7Ci0JfQotCURSTV9ERUJVR19LTVMo InNldHRpbmcgaGVhZCAlZCB0byArJWQrJWQgJWR4JWQgb3V0IG9mICVkXG4iLAotCQkgICAgICBp LCBoZWFkLT54LCBoZWFkLT55LCBoZWFkLT53aWR0aCwgaGVhZC0+aGVpZ2h0LCBxZGV2LT5tb25p dG9yc19jb25maWctPmNvdW50KTsKLQloZWFkLT5mbGFncyA9IDA7Ci0JLyogVE9ETyAtIHNvbWV3 aGVyZSBlbHNlIHRvIGNhbGwgdGhpcyBmb3IgbXVsdGlwbGUgbW9uaXRvcnMKLQkgKiAoY29uZmln X2NvbW1pdD8pICovCi0JcXhsX3NlbmRfbW9uaXRvcnNfY29uZmlnKHFkZXYpOwotfQotCiBzdGF0 aWMgdm9pZCBxeGxfZW5jX2NvbW1pdChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiB7Ci0J c3RydWN0IHF4bF9kZXZpY2UgKnFkZXYgPSBlbmNvZGVyLT5kZXYtPmRldl9wcml2YXRlOwotCi0J cXhsX3dyaXRlX21vbml0b3JzX2NvbmZpZ19mb3JfZW5jb2RlcihxZGV2LCBlbmNvZGVyKTsKIAlE Uk1fREVCVUcoIlxuIik7CiB9CiAKQEAgLTEwODAsOCArMTA1NCw2IEBAIHN0YXRpYyBlbnVtIGRy bV9jb25uZWN0b3Jfc3RhdHVzIHF4bF9jb25uX2RldGVjdCgKIAkJICAgICBxeGxfaGVhZF9lbmFi bGVkKCZxZGV2LT5jbGllbnRfbW9uaXRvcnNfY29uZmlnLT5oZWFkc1tvdXRwdXQtPmluZGV4XSk7 CiAKIAlEUk1fREVCVUcoIiMlZCBjb25uZWN0ZWQ6ICVkXG4iLCBvdXRwdXQtPmluZGV4LCBjb25u ZWN0ZWQpOwotCWlmICghY29ubmVjdGVkKQotCQlxeGxfbW9uaXRvcnNfY29uZmlnX3NldChxZGV2 LCBvdXRwdXQtPmluZGV4LCAwLCAwLCAwLCAwLCAwKTsKIAogCXJldHVybiBjb25uZWN0ZWQgPyBj b25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZAogCQkJIDogY29ubmVjdG9yX3N0YXR1c19kaXNjb25u ZWN0ZWQ7Ci0tIAoyLjkuMwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJp LWRldmVsCg==