From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: [PATCH v2 45/49] drm/omap: Add support for drm_bridge Date: Fri, 11 Jan 2019 05:51:16 +0200 Message-ID: <20190111035120.20668-46-laurent.pinchart@ideasonboard.com> References: <20190111035120.20668-1-laurent.pinchart@ideasonboard.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by gabe.freedesktop.org (Postfix) with ESMTPS id 49F526F528 for ; Fri, 11 Jan 2019 03:52:03 +0000 (UTC) In-Reply-To: <20190111035120.20668-1-laurent.pinchart@ideasonboard.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: Tomi Valkeinen List-Id: dri-devel@lists.freedesktop.org SG9vayB1cCBkcm1fYnJpZGdlIHN1cHBvcnQgaW4gdGhlIG9tYXBkcm0gZHJpdmVyLiBEZXNwaXRl IHRoZSByZWNlbnQKZXh0ZW5zaXZlIHByZXBhcmF0aW9uIHdvcmssIHRoaXMgaXMgYSByYXRoZXIg aW50cnVzaXZlIGNoYW5nZSwgYXMgdGhlCm1hbmFnZW1lbnQgb2Ygb3V0cHV0cyBuZWVkcyB0byBi ZSBhZGFwdGVkIHRocm91Z2ggdGhlIGRyaXZlciB0byBoYW5kbGUKYm90aCBvbWFwX2Rzc19kZXZp Y2UgYW5kIGRybV9icmlkZ2UuCgpDb25uZWN0b3IgY3JlYXRpb24gaXMgc2tpcHBlZCB3aGVuIHVz aW5nIGEgZHJtX2JyaWRnZSwgYXMgdGhlIGJyaWRnZQpjcmVhdGVzIHRoZSBjb25uZWN0b3IgaW50 ZXJuYWxseS4gVGhpcyBjcmVhdGVzIGlzc3VlcyB3aXRoIHN5c3RlbXMgdGhhdApzcGxpdCBjb25u ZWN0b3Igb3BlcmF0aW9ucyAoc3VjaCBhcyBtb2RlcyByZXRyaWV2YWwgYW5kIGhvdC1wbHVnCmRl dGVjdGlvbikgYWNyb3NzIGRpZmZlcmVudCBicmlkZ2VzLiBUaGVzZSBzeXN0ZW1zIGNhbid0IGJl IHN1cHBvcnRlZAp1c2luZyBkcm1fYnJpZGdlIGZvciBub3cgKHRoZWlyIHN1cHBvcnQgdGhyb3Vn aCB0aGUgb21hcF9kc3NfZGV2aWNlCmluZnJhc3RydWN0dXJlIGlzIG5vdCBhZmZlY3RlZCksIHRo aXMgd2lsbCBiZSBmaXhlZCBpbiBzdWJzZXF1ZW50CmNoYW5nZXMuCgpTaWduZWQtb2ZmLWJ5OiBM YXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+ClJldmll d2VkLWJ5OiBTZWJhc3RpYW4gUmVpY2hlbCA8c2ViYXN0aWFuLnJlaWNoZWxAY29sbGFib3JhLmNv bT4KLS0tCkNoYW5nZXMgc2luY2UgdjE6CgotIEZpeCB0eXBvIGluIGZ1bmN0aW9uIG5hbWUgKHVw ZGF0YSAtPiB1cGRhdGUpCi0tLQogZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vZHNzL2Jhc2UuYyAg ICAgICB8IDI3ICsrKysrKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL2Rzcy9vbWFwZHNz LmggICAgfCAgMSArCiBkcml2ZXJzL2dwdS9kcm0vb21hcGRybS9kc3Mvb3V0cHV0LmMgICAgIHwg MjEgKysrKystLS0KIGRyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfY29ubmVjdG9yLmMgfCAx NiArKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfY29ubmVjdG9yLmggfCAgMSAt CiBkcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2NydGMuYyAgICAgIHwgIDIgKy0KIGRyaXZl cnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfZHJ2LmMgICAgICAgfCA2OSArKysrKysrKysrKysrKysr Ky0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfZW5jb2Rlci5jICAgfCA2OSAr KysrKysrKysrKysrKy0tLS0tLS0tLS0KIDggZmlsZXMgY2hhbmdlZCwgMTQ1IGluc2VydGlvbnMo KyksIDYxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJt L2Rzcy9iYXNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9kc3MvYmFzZS5jCmluZGV4IDgx ZWEwZjU1Y2Q3NS4uMDljOWYyOTcxYWEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vb21h cGRybS9kc3MvYmFzZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL2Rzcy9iYXNlLmMK QEAgLTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgogI2luY2x1ZGUgPGxp bnV4L29mLmg+CiAjaW5jbHVkZSA8bGludXgvb2ZfZ3JhcGguaD4KKyNpbmNsdWRlIDxsaW51eC9w bGF0Zm9ybV9kZXZpY2UuaD4KIAogI2luY2x1ZGUgImRzcy5oIgogI2luY2x1ZGUgIm9tYXBkc3Mu aCIKQEAgLTE1Niw3ICsxNTcsNyBAQCBzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpvbWFwZHNzX2Rl dmljZV9uZXh0X291dHB1dChzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpmcm9tKQogCQkJZ290byBk b25lOwogCQl9CiAKLQkJaWYgKGRzc2Rldi0+aWQgJiYgZHNzZGV2LT5uZXh0KQorCQlpZiAoZHNz ZGV2LT5pZCAmJiAoZHNzZGV2LT5uZXh0IHx8IGRzc2Rldi0+YnJpZGdlKSkKIAkJCWdvdG8gZG9u ZTsKIAl9CiAKQEAgLTE4NCw3ICsxODUsMTggQEAgaW50IG9tYXBkc3NfZGV2aWNlX2Nvbm5lY3Qo c3RydWN0IGRzc19kZXZpY2UgKmRzcywKIHsKIAlpbnQgcmV0OwogCi0JZGV2X2RiZyhkc3QtPmRl diwgImNvbm5lY3RcbiIpOworCWRldl9kYmcoJmRzcy0+cGRldi0+ZGV2LCAiY29ubmVjdCglcywg JXMpXG4iLAorCQlzcmMgPyBkZXZfbmFtZShzcmMtPmRldikgOiAiTlVMTCIsCisJCWRzdCA/IGRl dl9uYW1lKGRzdC0+ZGV2KSA6ICJOVUxMIik7CisKKwlpZiAoIWRzdCkgeworCQkvKgorCQkgKiBU aGUgZGVzdGluYXRpb24gaXMgTlVMTCB3aGVuIHRoZSBzb3VyY2UgaXMgY29ubmVjdGVkIHRvIGEK KwkJICogYnJpZGdlIGluc3RlYWQgb2YgYSBEU1MgZGV2aWNlLiBTdG9wIGhlcmUsIHdlIHdpbGwg YXR0YWNoIHRoZQorCQkgKiBicmlkZ2UgbGF0ZXIgd2hlbiB3ZSB3aWxsIGhhdmUgYSBEUk0gZW5j b2Rlci4KKwkJICovCisJCXJldHVybiBzcmMgJiYgc3JjLT5icmlkZ2UgPyAwIDogLUVJTlZBTDsK Kwl9CiAKIAlpZiAob21hcGRzc19kZXZpY2VfaXNfY29ubmVjdGVkKGRzdCkpCiAJCXJldHVybiAt RUJVU1k7CkBAIC0yMDQsNyArMjE2LDE2IEBAIEVYUE9SVF9TWU1CT0xfR1BMKG9tYXBkc3NfZGV2 aWNlX2Nvbm5lY3QpOwogdm9pZCBvbWFwZHNzX2RldmljZV9kaXNjb25uZWN0KHN0cnVjdCBvbWFw X2Rzc19kZXZpY2UgKnNyYywKIAkJCSAgICAgICBzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3Qp CiB7Ci0JZGV2X2RiZyhkc3QtPmRldiwgImRpc2Nvbm5lY3RcbiIpOworCXN0cnVjdCBkc3NfZGV2 aWNlICpkc3MgPSBzcmMgPyBzcmMtPmRzcyA6IGRzdC0+ZHNzOworCisJZGV2X2RiZygmZHNzLT5w ZGV2LT5kZXYsICJkaXNjb25uZWN0KCVzLCAlcylcbiIsCisJCXNyYyA/IGRldl9uYW1lKHNyYy0+ ZGV2KSA6ICJOVUxMIiwKKwkJZHN0ID8gZGV2X25hbWUoZHN0LT5kZXYpIDogIk5VTEwiKTsKKwor CWlmICghZHN0KSB7CisJCVdBUk5fT04oIXNyYy0+YnJpZGdlKTsKKwkJcmV0dXJuOworCX0KIAog CWlmICghZHN0LT5pZCAmJiAhb21hcGRzc19kZXZpY2VfaXNfY29ubmVjdGVkKGRzdCkpIHsKIAkJ V0FSTl9PTighZHN0LT5kaXNwbGF5KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9vbWFw ZHJtL2Rzcy9vbWFwZHNzLmggYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9kc3Mvb21hcGRzcy5o CmluZGV4IGFiNTQ2N2ExZTkyYy4uZjQ3ZTliOTQyODhmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vb21hcGRybS9kc3Mvb21hcGRzcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJt L2Rzcy9vbWFwZHNzLmgKQEAgLTQxMCw2ICs0MTAsNyBAQCBzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNl IHsKIAogCXN0cnVjdCBkc3NfZGV2aWNlICpkc3M7CiAJc3RydWN0IG9tYXBfZHNzX2RldmljZSAq bmV4dDsKKwlzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlOwogCiAJc3RydWN0IGxpc3RfaGVhZCBs aXN0OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9kc3Mvb3V0cHV0LmMg Yi9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9kc3Mvb3V0cHV0LmMKaW5kZXggZjI1ZWNmZDI2NTM0 Li4yYTUzMDI1YzJmZGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL2Rzcy9v dXRwdXQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9kc3Mvb3V0cHV0LmMKQEAgLTIw LDI1ICsyMCwzNCBAQAogI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgogI2luY2x1 ZGUgPGxpbnV4L3NsYWIuaD4KICNpbmNsdWRlIDxsaW51eC9vZi5oPgorI2luY2x1ZGUgPGxpbnV4 L29mX2dyYXBoLmg+CiAKICNpbmNsdWRlICJkc3MuaCIKICNpbmNsdWRlICJvbWFwZHNzLmgiCiAK IGludCBvbWFwZHNzX2RldmljZV9pbml0X291dHB1dChzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpv dXQpCiB7Ci0Jb3V0LT5uZXh0ID0gb21hcGRzc19vZl9maW5kX2Nvbm5lY3RlZF9kZXZpY2Uob3V0 LT5kZXYtPm9mX25vZGUsIDApOwotCWlmIChJU19FUlIob3V0LT5uZXh0KSkgewotCQlpZiAoUFRS X0VSUihvdXQtPm5leHQpICE9IC1FUFJPQkVfREVGRVIpCi0JCQlkZXZfZXJyKG91dC0+ZGV2LCAi ZmFpbGVkIHRvIGZpbmQgdmlkZW8gc2lua1xuIik7Ci0JCXJldHVybiBQVFJfRVJSKG91dC0+bmV4 dCk7CisJc3RydWN0IGRldmljZV9ub2RlICpyZW1vdGVfbm9kZTsKKworCXJlbW90ZV9ub2RlID0g b2ZfZ3JhcGhfZ2V0X3JlbW90ZV9ub2RlKG91dC0+ZGV2LT5vZl9ub2RlLCAwLCAwKTsKKwlpZiAo IXJlbW90ZV9ub2RlKSB7CisJCWRldl9kYmcob3V0LT5kZXYsICJmYWlsZWQgdG8gZmluZCB2aWRl byBzaW5rXG4iKTsKKwkJcmV0dXJuIDA7CiAJfQogCisJb3V0LT5uZXh0ID0gb21hcGRzc19maW5k X2RldmljZV9ieV9ub2RlKHJlbW90ZV9ub2RlKTsKKwlvdXQtPmJyaWRnZSA9IG9mX2RybV9maW5k X2JyaWRnZShyZW1vdGVfbm9kZSk7CisKKwlvZl9ub2RlX3B1dChyZW1vdGVfbm9kZSk7CisKIAlp ZiAob3V0LT5uZXh0ICYmIG91dC0+dHlwZSAhPSBvdXQtPm5leHQtPnR5cGUpIHsKIAkJZGV2X2Vy cihvdXQtPmRldiwgIm91dHB1dCB0eXBlIGFuZCBkaXNwbGF5IHR5cGUgZG9uJ3QgbWF0Y2hcbiIp OworCQlvbWFwZHNzX2RldmljZV9wdXQob3V0LT5uZXh0KTsKKwkJb3V0LT5uZXh0ID0gTlVMTDsK IAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JcmV0dXJuIDA7CisJcmV0dXJuIG91dC0+bmV4dCB8 fCBvdXQtPmJyaWRnZSA/IDAgOiAtRVBST0JFX0RFRkVSOwogfQogRVhQT1JUX1NZTUJPTChvbWFw ZHNzX2RldmljZV9pbml0X291dHB1dCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9v bWFwZHJtL29tYXBfY29ubmVjdG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2Nv bm5lY3Rvci5jCmluZGV4IDQ4NzYwM2M1NmIwOC4uZjUyOGJhYTgwMTE0IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2Nvbm5lY3Rvci5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9vbWFwZHJtL29tYXBfY29ubmVjdG9yLmMKQEAgLTMwNCw5ICszMDQsMTYgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcyBvbWFwX2Nvbm5lY3Rvcl9o ZWxwZXJfZnVuY3MgPSB7CiAJLm1vZGVfdmFsaWQgPSBvbWFwX2Nvbm5lY3Rvcl9tb2RlX3ZhbGlk LAogfTsKIAotc3RhdGljIGludCBvbWFwX2Nvbm5lY3Rvcl9nZXRfdHlwZShzdHJ1Y3Qgb21hcF9k c3NfZGV2aWNlICpkaXNwbGF5KQorc3RhdGljIGludCBvbWFwX2Nvbm5lY3Rvcl9nZXRfdHlwZShz dHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpvdXRwdXQpCiB7Ci0Jc3dpdGNoIChkaXNwbGF5LT50eXBl KSB7CisJc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZGlzcGxheTsKKwllbnVtIG9tYXBfZGlzcGxh eV90eXBlIHR5cGU7CisKKwlkaXNwbGF5ID0gb21hcGRzc19kaXNwbGF5X2dldChvdXRwdXQpOwor CXR5cGUgPSBkaXNwbGF5LT50eXBlOworCW9tYXBkc3NfZGV2aWNlX3B1dChkaXNwbGF5KTsKKwor CXN3aXRjaCAodHlwZSkgewogCWNhc2UgT01BUF9ESVNQTEFZX1RZUEVfSERNSToKIAkJcmV0dXJu IERSTV9NT0RFX0NPTk5FQ1RPUl9IRE1JQTsKIAljYXNlIE9NQVBfRElTUExBWV9UWVBFX0RWSToK QEAgLTMyOSwxNCArMzM2LDEzIEBAIHN0YXRpYyBpbnQgb21hcF9jb25uZWN0b3JfZ2V0X3R5cGUo c3RydWN0IG9tYXBfZHNzX2RldmljZSAqZGlzcGxheSkKIC8qIGluaXRpYWxpemUgY29ubmVjdG9y ICovCiBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqb21hcF9jb25uZWN0b3JfaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAogCQkJCQkgIHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKm91dHB1dCwKLQkJ CQkJICBzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkaXNwbGF5LAogCQkJCQkgIHN0cnVjdCBkcm1f ZW5jb2RlciAqZW5jb2RlcikKIHsKIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0g TlVMTDsKIAlzdHJ1Y3Qgb21hcF9jb25uZWN0b3IgKm9tYXBfY29ubmVjdG9yOwogCXN0cnVjdCBv bWFwX2Rzc19kZXZpY2UgKmRzc2RldjsKIAotCURCRygiJXMiLCBkaXNwbGF5LT5uYW1lKTsKKwlE QkcoIiVzIiwgb3V0cHV0LT5uYW1lKTsKIAogCW9tYXBfY29ubmVjdG9yID0ga3phbGxvYyhzaXpl b2YoKm9tYXBfY29ubmVjdG9yKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFvbWFwX2Nvbm5lY3RvcikK QEAgLTM0OSw3ICszNTUsNyBAQCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqb21hcF9jb25uZWN0b3Jf aW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWNvbm5lY3Rvci0+ZG91Ymxlc2Nhbl9hbGxv d2VkID0gMDsKIAogCWRybV9jb25uZWN0b3JfaW5pdChkZXYsIGNvbm5lY3RvciwgJm9tYXBfY29u bmVjdG9yX2Z1bmNzLAotCQkJICAgb21hcF9jb25uZWN0b3JfZ2V0X3R5cGUoZGlzcGxheSkpOwor CQkJICAgb21hcF9jb25uZWN0b3JfZ2V0X3R5cGUob3V0cHV0KSk7CiAJZHJtX2Nvbm5lY3Rvcl9o ZWxwZXJfYWRkKGNvbm5lY3RvciwgJm9tYXBfY29ubmVjdG9yX2hlbHBlcl9mdW5jcyk7CiAKIAkv KgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9jb25uZWN0b3IuaCBi L2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfY29ubmVjdG9yLmgKaW5kZXggNmI3ZDRkOTVl MzJiLi42MDgwODUyMTkzMzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29t YXBfY29ubmVjdG9yLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9jb25uZWN0 b3IuaApAQCAtMzEsNyArMzEsNiBAQCBzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlOwogCiBzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqb21hcF9jb25uZWN0b3JfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAogCQkJCQkgIHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKm91dHB1dCwKLQkJCQkJICBzdHJ1Y3Qg b21hcF9kc3NfZGV2aWNlICpkaXNwbGF5LAogCQkJCQkgIHN0cnVjdCBkcm1fZW5jb2RlciAqZW5j b2Rlcik7CiBib29sIG9tYXBfY29ubmVjdG9yX2dldF9oZG1pX21vZGUoc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3Rvcik7CiB2b2lkIG9tYXBfY29ubmVjdG9yX2VuYWJsZV9ocGQoc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvcik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v b21hcGRybS9vbWFwX2NydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfY3J0Yy5j CmluZGV4IDBjZWEzODI0ZDNhNi4uNDQ4NjE1MmZkNmNjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vb21hcGRybS9vbWFwX2NydGMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9v bWFwX2NydGMuYwpAQCAtNjcxLDcgKzY3MSw3IEBAIHN0cnVjdCBkcm1fY3J0YyAqb21hcF9jcnRj X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkJJm9tYXBfY3J0Y19mdW5jcywgTlVM TCk7CiAJaWYgKHJldCA8IDApIHsKIAkJZGV2X2VycihkZXYtPmRldiwgIiVzKCk6IGNvdWxkIG5v dCBpbml0IGNydGMgZm9yOiAlc1xuIiwKLQkJCV9fZnVuY19fLCBwaXBlLT5kaXNwbGF5LT5uYW1l KTsKKwkJCV9fZnVuY19fLCBwaXBlLT5vdXRwdXQtPm5hbWUpOwogCQlrZnJlZShvbWFwX2NydGMp OwogCQlyZXR1cm4gRVJSX1BUUihyZXQpOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9vbWFwZHJtL29tYXBfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2Rydi5j CmluZGV4IDZiOTFmNDRlNWE2MC4uMzVjNDY2OWRjNjlkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vb21hcGRybS9vbWFwX2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29t YXBfZHJ2LmMKQEAgLTE0MCw5ICsxNDAsNyBAQCBzdGF0aWMgdm9pZCBvbWFwX2Rpc2Nvbm5lY3Rf cGlwZWxpbmVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2KQogCQlvbWFwZHNzX2RldmljZV9kaXNj b25uZWN0KE5VTEwsIHBpcGUtPm91dHB1dCk7CiAKIAkJb21hcGRzc19kZXZpY2VfcHV0KHBpcGUt Pm91dHB1dCk7Ci0JCW9tYXBkc3NfZGV2aWNlX3B1dChwaXBlLT5kaXNwbGF5KTsKIAkJcGlwZS0+ b3V0cHV0ID0gTlVMTDsKLQkJcGlwZS0+ZGlzcGxheSA9IE5VTEw7CiAJfQogCiAJbWVtc2V0KCZw cml2LT5jaGFubmVscywgMCwgc2l6ZW9mKHByaXYtPmNoYW5uZWxzKSk7CkBAIC0xNjksNyArMTY3 LDYgQEAgc3RhdGljIGludCBvbWFwX2Nvbm5lY3RfcGlwZWxpbmVzKHN0cnVjdCBkcm1fZGV2aWNl ICpkZGV2KQogCiAJCQlwaXBlID0gJnByaXYtPnBpcGVzW3ByaXYtPm51bV9waXBlcysrXTsKIAkJ CXBpcGUtPm91dHB1dCA9IG9tYXBkc3NfZGV2aWNlX2dldChvdXRwdXQpOwotCQkJcGlwZS0+ZGlz cGxheSA9IG9tYXBkc3NfZGlzcGxheV9nZXQob3V0cHV0KTsKIAogCQkJaWYgKHByaXYtPm51bV9w aXBlcyA9PSBBUlJBWV9TSVpFKHByaXYtPnBpcGVzKSkgewogCQkJCS8qIFRvIGJhbGFuY2UgdGhl ICdmb3JfZWFjaF9kc3Nfb3V0cHV0JyBsb29wICovCkBAIC0yMDcsNiArMjA0LDI4IEBAIHN0YXRp YyBpbnQgb21hcF9tb2Rlc2V0X2luaXRfcHJvcGVydGllcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IG9tYXBfZGlzcGxheV9pZChzdHJ1Y3Qgb21h cF9kc3NfZGV2aWNlICpvdXRwdXQpCit7CisJc3RydWN0IGRldmljZV9ub2RlICpub2RlID0gTlVM TDsKKworCWlmIChvdXRwdXQtPm5leHQpIHsKKwkJc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZGlz cGxheTsKKworCQlkaXNwbGF5ID0gb21hcGRzc19kaXNwbGF5X2dldChvdXRwdXQpOworCQlub2Rl ID0gZGlzcGxheS0+ZGV2LT5vZl9ub2RlOworCQlvbWFwZHNzX2RldmljZV9wdXQoZGlzcGxheSk7 CisJfSBlbHNlIHsKKwkJc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSA9IG91dHB1dC0+YnJpZGdl OworCisJCXdoaWxlIChicmlkZ2UtPm5leHQpCisJCQlicmlkZ2UgPSBicmlkZ2UtPm5leHQ7CisK KwkJbm9kZSA9IGJyaWRnZS0+b2Zfbm9kZTsKKwl9CisKKwlyZXR1cm4gbm9kZSA/IG9mX2FsaWFz X2dldF9pZChub2RlLCAiZGlzcGxheSIpIDogLUVOT0RFVjsKK30KKwogc3RhdGljIGludCBvbWFw X21vZGVzZXRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewogCXN0cnVjdCBvbWFwX2Ry bV9wcml2YXRlICpwcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKQEAgLTI2Miw3ICsyODEsMTAgQEAg c3RhdGljIGludCBvbWFwX21vZGVzZXRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQlw cml2LT5wbGFuZXNbcHJpdi0+bnVtX3BsYW5lcysrXSA9IHBsYW5lOwogCX0KIAotCS8qIENyZWF0 ZSB0aGUgZW5jb2RlcnMgYW5kIGdldCB0aGUgcGlwZWxpbmVzIGFsaWFzZXMuICovCisJLyoKKwkg KiBDcmVhdGUgdGhlIGVuY29kZXJzLCBhdHRhY2ggdGhlIGJyaWRnZXMgYW5kIGdldCB0aGUgcGlw ZWxpbmUgYWxpYXMKKwkgKiBJRHMuCisJICovCiAJZm9yIChpID0gMDsgaSA8IHByaXYtPm51bV9w aXBlczsgaSsrKSB7CiAJCXN0cnVjdCBvbWFwX2RybV9waXBlbGluZSAqcGlwZSA9ICZwcml2LT5w aXBlc1tpXTsKIAkJaW50IGlkOwpAQCAtMjcxLDcgKzI5MywxNCBAQCBzdGF0aWMgaW50IG9tYXBf bW9kZXNldF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCWlmICghcGlwZS0+ZW5jb2Rl cikKIAkJCXJldHVybiAtRU5PTUVNOwogCi0JCWlkID0gb2ZfYWxpYXNfZ2V0X2lkKHBpcGUtPmRp c3BsYXktPmRldi0+b2Zfbm9kZSwgImRpc3BsYXkiKTsKKwkJaWYgKHBpcGUtPm91dHB1dC0+YnJp ZGdlKSB7CisJCQlyZXQgPSBkcm1fYnJpZGdlX2F0dGFjaChwaXBlLT5lbmNvZGVyLAorCQkJCQkJ cGlwZS0+b3V0cHV0LT5icmlkZ2UsIE5VTEwpOworCQkJaWYgKHJldCA8IDApCisJCQkJcmV0dXJu IHJldDsKKwkJfQorCisJCWlkID0gb21hcF9kaXNwbGF5X2lkKHBpcGUtPm91dHB1dCk7CiAJCXBp cGUtPmFsaWFzX2lkID0gaWQgPj0gMCA/IGlkIDogaTsKIAl9CiAKQEAgLTI5NywxNiArMzI2LDE2 IEBAIHN0YXRpYyBpbnQgb21hcF9tb2Rlc2V0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikK IAlmb3IgKGkgPSAwOyBpIDwgcHJpdi0+bnVtX3BpcGVzOyBpKyspIHsKIAkJc3RydWN0IG9tYXBf ZHJtX3BpcGVsaW5lICpwaXBlID0gJnByaXYtPnBpcGVzW2ldOwogCQlzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuY29kZXIgPSBwaXBlLT5lbmNvZGVyOwotCQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yOwogCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7CiAKLQkJY29ubmVjdG9yID0gb21hcF9j b25uZWN0b3JfaW5pdChkZXYsIHBpcGUtPm91dHB1dCwKLQkJCQkJCXBpcGUtPmRpc3BsYXksIGVu Y29kZXIpOwotCQlpZiAoIWNvbm5lY3RvcikKLQkJCXJldHVybiAtRU5PTUVNOworCQlpZiAoIXBp cGUtPm91dHB1dC0+YnJpZGdlKSB7CisJCQlwaXBlLT5jb25uZWN0b3IgPSBvbWFwX2Nvbm5lY3Rv cl9pbml0KGRldiwgcGlwZS0+b3V0cHV0LAorCQkJCQkJCSAgICAgIGVuY29kZXIpOworCQkJaWYg KCFwaXBlLT5jb25uZWN0b3IpCisJCQkJcmV0dXJuIC1FTk9NRU07CiAKLQkJZHJtX2Nvbm5lY3Rv cl9hdHRhY2hfZW5jb2Rlcihjb25uZWN0b3IsIGVuY29kZXIpOwotCQlwaXBlLT5jb25uZWN0b3Ig PSBjb25uZWN0b3I7CisJCQlkcm1fY29ubmVjdG9yX2F0dGFjaF9lbmNvZGVyKHBpcGUtPmNvbm5l Y3RvciwgZW5jb2Rlcik7CisJCX0KIAogCQljcnRjID0gb21hcF9jcnRjX2luaXQoZGV2LCBwaXBl LCBwcml2LT5wbGFuZXNbaV0pOwogCQlpZiAoSVNfRVJSKGNydGMpKQpAQCAtMzUwLDEwICszNzks MTIgQEAgc3RhdGljIGludCBvbWFwX21vZGVzZXRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQogc3RhdGljIHZvaWQgb21hcF9tb2Rlc2V0X2VuYWJsZV9leHRlcm5hbF9ocGQoc3RydWN0IGRy bV9kZXZpY2UgKmRkZXYpCiB7CiAJc3RydWN0IG9tYXBfZHJtX3ByaXZhdGUgKnByaXYgPSBkZGV2 LT5kZXZfcHJpdmF0ZTsKLQlpbnQgaTsKKwl1bnNpZ25lZCBpbnQgaTsKIAotCWZvciAoaSA9IDA7 IGkgPCBwcml2LT5udW1fcGlwZXM7IGkrKykKLQkJb21hcF9jb25uZWN0b3JfZW5hYmxlX2hwZChw cml2LT5waXBlc1tpXS5jb25uZWN0b3IpOworCWZvciAoaSA9IDA7IGkgPCBwcml2LT5udW1fcGlw ZXM7IGkrKykgeworCQlpZiAocHJpdi0+cGlwZXNbaV0uY29ubmVjdG9yKQorCQkJb21hcF9jb25u ZWN0b3JfZW5hYmxlX2hwZChwcml2LT5waXBlc1tpXS5jb25uZWN0b3IpOworCX0KIH0KIAogLyoK QEAgLTM2MiwxMCArMzkzLDEyIEBAIHN0YXRpYyB2b2lkIG9tYXBfbW9kZXNldF9lbmFibGVfZXh0 ZXJuYWxfaHBkKHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2KQogc3RhdGljIHZvaWQgb21hcF9tb2Rl c2V0X2Rpc2FibGVfZXh0ZXJuYWxfaHBkKHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2KQogewogCXN0 cnVjdCBvbWFwX2RybV9wcml2YXRlICpwcml2ID0gZGRldi0+ZGV2X3ByaXZhdGU7Ci0JaW50IGk7 CisJdW5zaWduZWQgaW50IGk7CiAKLQlmb3IgKGkgPSAwOyBpIDwgcHJpdi0+bnVtX3BpcGVzOyBp KyspCi0JCW9tYXBfY29ubmVjdG9yX2Rpc2FibGVfaHBkKHByaXYtPnBpcGVzW2ldLmNvbm5lY3Rv cik7CisJZm9yIChpID0gMDsgaSA8IHByaXYtPm51bV9waXBlczsgaSsrKSB7CisJCWlmIChwcml2 LT5waXBlc1tpXS5jb25uZWN0b3IpCisJCQlvbWFwX2Nvbm5lY3Rvcl9kaXNhYmxlX2hwZChwcml2 LT5waXBlc1tpXS5jb25uZWN0b3IpOworCX0KIH0KIAogLyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9vbWFwZHJtL29tYXBfZW5jb2Rlci5jIGIvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0v b21hcF9lbmNvZGVyLmMKaW5kZXggZTcxZDM1OWE4ZjA3Li43NmY5NGNjMGMwY2YgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfZW5jb2Rlci5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9vbWFwZHJtL29tYXBfZW5jb2Rlci5jCkBAIC01MSw2ICs1MSwzNCBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2Z1bmNzIG9tYXBfZW5jb2Rlcl9mdW5jcyA9IHsKIAku ZGVzdHJveSA9IG9tYXBfZW5jb2Rlcl9kZXN0cm95LAogfTsKIAorc3RhdGljIHZvaWQgb21hcF9l bmNvZGVyX3VwZGF0ZV92aWRlb21vZGVfZmxhZ3Moc3RydWN0IHZpZGVvbW9kZSAqdm0sCisJCQkJ CQl1MzIgYnVzX2ZsYWdzKQoreworCWlmICghKHZtLT5mbGFncyAmIChESVNQTEFZX0ZMQUdTX0RF X0xPVyB8CisJCQkgICBESVNQTEFZX0ZMQUdTX0RFX0hJR0gpKSkgeworCQlpZiAoYnVzX2ZsYWdz ICYgRFJNX0JVU19GTEFHX0RFX0xPVykKKwkJCXZtLT5mbGFncyB8PSBESVNQTEFZX0ZMQUdTX0RF X0xPVzsKKwkJZWxzZSBpZiAoYnVzX2ZsYWdzICYgRFJNX0JVU19GTEFHX0RFX0hJR0gpCisJCQl2 bS0+ZmxhZ3MgfD0gRElTUExBWV9GTEFHU19ERV9ISUdIOworCX0KKworCWlmICghKHZtLT5mbGFn cyAmIChESVNQTEFZX0ZMQUdTX1BJWERBVEFfUE9TRURHRSB8CisJCQkgICBESVNQTEFZX0ZMQUdT X1BJWERBVEFfTkVHRURHRSkpKSB7CisJCWlmIChidXNfZmxhZ3MgJiBEUk1fQlVTX0ZMQUdfUElY REFUQV9EUklWRV9QT1NFREdFKQorCQkJdm0tPmZsYWdzIHw9IERJU1BMQVlfRkxBR1NfUElYREFU QV9QT1NFREdFOworCQllbHNlIGlmIChidXNfZmxhZ3MgJiBEUk1fQlVTX0ZMQUdfUElYREFUQV9E UklWRV9ORUdFREdFKQorCQkJdm0tPmZsYWdzIHw9IERJU1BMQVlfRkxBR1NfUElYREFUQV9ORUdF REdFOworCX0KKworCWlmICghKHZtLT5mbGFncyAmIChESVNQTEFZX0ZMQUdTX1NZTkNfUE9TRURH RSB8CisJCQkgICBESVNQTEFZX0ZMQUdTX1NZTkNfTkVHRURHRSkpKSB7CisJCWlmIChidXNfZmxh Z3MgJiBEUk1fQlVTX0ZMQUdfU1lOQ19EUklWRV9QT1NFREdFKQorCQkJdm0tPmZsYWdzIHw9IERJ U1BMQVlfRkxBR1NfU1lOQ19QT1NFREdFOworCQllbHNlIGlmIChidXNfZmxhZ3MgJiBEUk1fQlVT X0ZMQUdfU1lOQ19EUklWRV9ORUdFREdFKQorCQkJdm0tPmZsYWdzIHw9IERJU1BMQVlfRkxBR1Nf U1lOQ19ORUdFREdFOworCX0KK30KKwogc3RhdGljIHZvaWQgb21hcF9lbmNvZGVyX2hkbWlfbW9k ZV9zZXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAogCQkJCSAgICAgICBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSkKIHsKQEAgLTg3LDcgKzExNSw5IEBAIHN0YXRp YyB2b2lkIG9tYXBfZW5jb2Rlcl9tb2RlX3NldChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIs CiAJCQkJICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSkKIHsKIAlzdHJ1 Y3Qgb21hcF9lbmNvZGVyICpvbWFwX2VuY29kZXIgPSB0b19vbWFwX2VuY29kZXIoZW5jb2Rlcik7 CisJc3RydWN0IG9tYXBfZHNzX2RldmljZSAqb3V0cHV0ID0gb21hcF9lbmNvZGVyLT5vdXRwdXQ7 CiAJc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2OworCXN0cnVjdCBkcm1fYnJpZGdlICpi cmlkZ2U7CiAJc3RydWN0IHZpZGVvbW9kZSB2bSA9IHsgMCB9OwogCiAJZHJtX2Rpc3BsYXlfbW9k ZV90b192aWRlb21vZGUoYWRqdXN0ZWRfbW9kZSwgJnZtKTsKQEAgLTEwMSw0NCArMTMxLDI5IEBA IHN0YXRpYyB2b2lkIG9tYXBfZW5jb2Rlcl9tb2RlX3NldChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVu Y29kZXIsCiAJICoKIAkgKiBBIGJldHRlciBzb2x1dGlvbiBpcyB0byB1c2UgRFJNJ3MgYnVzLWZs YWdzIHRocm91Z2ggdGhlIHdob2xlIGRyaXZlci4KIAkgKi8KLQlmb3IgKGRzc2RldiA9IG9tYXBf ZW5jb2Rlci0+b3V0cHV0OyBkc3NkZXY7IGRzc2RldiA9IGRzc2Rldi0+bmV4dCkgewotCQl1bnNp Z25lZCBsb25nIGJ1c19mbGFncyA9IGRzc2Rldi0+YnVzX2ZsYWdzOwotCi0JCWlmICghKHZtLmZs YWdzICYgKERJU1BMQVlfRkxBR1NfREVfTE9XIHwKLQkJCQkgIERJU1BMQVlfRkxBR1NfREVfSElH SCkpKSB7Ci0JCQlpZiAoYnVzX2ZsYWdzICYgRFJNX0JVU19GTEFHX0RFX0xPVykKLQkJCQl2bS5m bGFncyB8PSBESVNQTEFZX0ZMQUdTX0RFX0xPVzsKLQkJCWVsc2UgaWYgKGJ1c19mbGFncyAmIERS TV9CVVNfRkxBR19ERV9ISUdIKQotCQkJCXZtLmZsYWdzIHw9IERJU1BMQVlfRkxBR1NfREVfSElH SDsKLQkJfQorCWZvciAoZHNzZGV2ID0gb3V0cHV0OyBkc3NkZXY7IGRzc2RldiA9IGRzc2Rldi0+ bmV4dCkKKwkJb21hcF9lbmNvZGVyX3VwZGF0ZV92aWRlb21vZGVfZmxhZ3MoJnZtLCBkc3NkZXYt PmJ1c19mbGFncyk7CiAKLQkJaWYgKCEodm0uZmxhZ3MgJiAoRElTUExBWV9GTEFHU19QSVhEQVRB X1BPU0VER0UgfAotCQkJCSAgRElTUExBWV9GTEFHU19QSVhEQVRBX05FR0VER0UpKSkgewotCQkJ aWYgKGJ1c19mbGFncyAmIERSTV9CVVNfRkxBR19QSVhEQVRBX0RSSVZFX1BPU0VER0UpCi0JCQkJ dm0uZmxhZ3MgfD0gRElTUExBWV9GTEFHU19QSVhEQVRBX1BPU0VER0U7Ci0JCQllbHNlIGlmIChi dXNfZmxhZ3MgJiBEUk1fQlVTX0ZMQUdfUElYREFUQV9EUklWRV9ORUdFREdFKQotCQkJCXZtLmZs YWdzIHw9IERJU1BMQVlfRkxBR1NfUElYREFUQV9ORUdFREdFOwotCQl9CisJZm9yIChicmlkZ2Ug PSBvdXRwdXQtPmJyaWRnZTsgYnJpZGdlOyBicmlkZ2UgPSBicmlkZ2UtPm5leHQpIHsKKwkJdTMy IGJ1c19mbGFnczsKIAotCQlpZiAoISh2bS5mbGFncyAmIChESVNQTEFZX0ZMQUdTX1NZTkNfUE9T RURHRSB8Ci0JCQkJICBESVNQTEFZX0ZMQUdTX1NZTkNfTkVHRURHRSkpKSB7Ci0JCQlpZiAoYnVz X2ZsYWdzICYgRFJNX0JVU19GTEFHX1NZTkNfRFJJVkVfUE9TRURHRSkKLQkJCQl2bS5mbGFncyB8 PSBESVNQTEFZX0ZMQUdTX1NZTkNfUE9TRURHRTsKLQkJCWVsc2UgaWYgKGJ1c19mbGFncyAmIERS TV9CVVNfRkxBR19TWU5DX0RSSVZFX05FR0VER0UpCi0JCQkJdm0uZmxhZ3MgfD0gRElTUExBWV9G TEFHU19TWU5DX05FR0VER0U7Ci0JCX0KKwkJaWYgKCFicmlkZ2UtPnRpbWluZ3MpCisJCQljb250 aW51ZTsKKworCQlidXNfZmxhZ3MgPSBicmlkZ2UtPnRpbWluZ3MtPmlucHV0X2J1c19mbGFnczsK KwkJb21hcF9lbmNvZGVyX3VwZGF0ZV92aWRlb21vZGVfZmxhZ3MoJnZtLCBidXNfZmxhZ3MpOwog CX0KIAogCS8qIFNldCB0aW1pbmdzIGZvciBhbGwgZGV2aWNlcyBpbiB0aGUgZGlzcGxheSBwaXBl bGluZS4gKi8KLQlkc3NfbWdyX3NldF90aW1pbmdzKG9tYXBfZW5jb2Rlci0+b3V0cHV0LCAmdm0p OworCWRzc19tZ3Jfc2V0X3RpbWluZ3Mob3V0cHV0LCAmdm0pOwogCi0JZm9yIChkc3NkZXYgPSBv bWFwX2VuY29kZXItPm91dHB1dDsgZHNzZGV2OyBkc3NkZXYgPSBkc3NkZXYtPm5leHQpIHsKKwlm b3IgKGRzc2RldiA9IG91dHB1dDsgZHNzZGV2OyBkc3NkZXYgPSBkc3NkZXYtPm5leHQpIHsKIAkJ aWYgKGRzc2Rldi0+b3BzLT5zZXRfdGltaW5ncykKIAkJCWRzc2Rldi0+b3BzLT5zZXRfdGltaW5n cyhkc3NkZXYsIGFkanVzdGVkX21vZGUpOwogCX0KIAogCS8qIFNldCB0aGUgSERNSSBtb2RlIGFu ZCBIRE1JIGluZm9mcmFtZSBpZiBhcHBsaWNhYmxlLiAqLwotCWlmIChvbWFwX2VuY29kZXItPm91 dHB1dC0+dHlwZSA9PSBPTUFQX0RJU1BMQVlfVFlQRV9IRE1JKQorCWlmIChvdXRwdXQtPnR5cGUg PT0gT01BUF9ESVNQTEFZX1RZUEVfSERNSSkKIAkJb21hcF9lbmNvZGVyX2hkbWlfbW9kZV9zZXQo ZW5jb2RlciwgYWRqdXN0ZWRfbW9kZSk7CiB9CiAKLS0gClJlZ2FyZHMsCgpMYXVyZW50IFBpbmNo YXJ0CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmkt ZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK