From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= Subject: [RFC PATCH v6 32/92] kvm: introspection: add KVMI_GET_PAGE_ACCESS Date: Fri, 9 Aug 2019 18:59:47 +0300 Message-ID: <20190809160047.8319-33-alazar@bitdefender.com> References: <20190809160047.8319-1-alazar@bitdefender.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190809160047.8319-1-alazar@bitdefender.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: virtualization-bounces@lists.linux-foundation.org Errors-To: virtualization-bounces@lists.linux-foundation.org To: kvm@vger.kernel.org Cc: Tamas K Lengyel , Weijiang Yang , Yu C , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= , Jan Kiszka , =?UTF-8?q?Samuel=20Laur=C3=A9n?= , Konrad Rzeszutek Wilk , virtualization@lists.linux-foundation.org, =?UTF-8?q?Adalbert=20Laz=C4=83r?= , linux-mm@kvack.org, Patrick Colp , Mathieu Tarral , Stefan Hajnoczi , Paolo Bonzini , Zhang@mail.linuxfoundation.org, =?UTF-8?q?Mihai=20Don=C8=9Bu?= List-Id: virtualization@lists.linuxfoundation.org RnJvbTogTWloYWkgRG9uyJt1IDxtZG9udHVAYml0ZGVmZW5kZXIuY29tPgoKUmV0dXJucyB0aGUg c3B0ZSBhY2Nlc3MgYml0cyAocnd4KSBmb3IgYW4gYXJyYXkgb2YgZ3Vlc3QgcGh5c2ljYWwKYWRk cmVzc2VzLgoKSXQgZG9lcyB0aGlzIGJ5IGNoZWNraW5nIHRoZSByYWRpeCB0cmVlIGluIHdoaWNo IG9ubHkgdGhlIHNwdGUgYml0cwoiZW5mb3JjZWQiIGJ5IHRoZSBpbnRyb3NwZWN0aW9uIHRvb2wg YXJlIHNhdmVkLiBUaGlzIGluZm9ybWF0aW9uIHNob3VsZAphbHJlYWR5IGJlIGtub3duIGJ5IHRo ZSB0b29sLiBOb3QgdG8gbWVudGlvbiB0aGF0IHRoZSBLVk1JX0VWRU5UX1BGCmV2ZW50cyBhcmUg c2VudCBvbmx5IGZvciBFUFQgdmlvbGF0aW9uIGNhdXNlZCBieSB0aGVzZSByZXN0cmljdGlvbnMu ClNvLCB3ZSBtaWdodCBkcm9wIHRoaXMgY29tbWFuZC4KClNpZ25lZC1vZmYtYnk6IE1paGFpIERv bsibdSA8bWRvbnR1QGJpdGRlZmVuZGVyLmNvbT4KU2lnbmVkLW9mZi1ieTogQWRhbGJlcnQgTGF6 xINyIDxhbGF6YXJAYml0ZGVmZW5kZXIuY29tPgotLS0KIERvY3VtZW50YXRpb24vdmlydHVhbC9r dm0va3ZtaS5yc3QgfCA1NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGFyY2gveDg2 L2t2bS9rdm1pLmMgICAgICAgICAgICAgICAgfCA0MSArKysrKysrKysrKysrKysrKysrKysrKwog aW5jbHVkZS91YXBpL2xpbnV4L2t2bWkuaCAgICAgICAgICB8IDExICsrKysrKwogdmlydC9rdm0v a3ZtaS5jICAgICAgICAgICAgICAgICAgICB8ICA5ICsrKysrCiB2aXJ0L2t2bS9rdm1pX2ludC5o ICAgICAgICAgICAgICAgIHwgIDYgKysrKwogdmlydC9rdm0va3ZtaV9tc2cuYyAgICAgICAgICAg ICAgICB8IDE3ICsrKysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgMTM4IGluc2VydGlvbnMoKykK CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL2t2bWkucnN0IGIvRG9jdW1l bnRhdGlvbi92aXJ0dWFsL2t2bS9rdm1pLnJzdAppbmRleCAwZmM1MWI1N2IxZTguLmMyN2ZlYTcz Y2NmYiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9rdm1pLnJzdAorKysg Yi9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL2t2bWkucnN0CkBAIC01MDksNiArNTA5LDYwIEBA IGJ5IHRoZSAqS1ZNSV9DT05UUk9MX1ZNX0VWRU5UUyogY29tbWFuZC4KICogLUtWTV9FUEVSTSAt IHRoZSBhY2Nlc3MgaXMgcmVzdHJpY3RlZCBieSB0aGUgaG9zdAogKiAtS1ZNX0VPUE5PVFNVUFAg LSBvbmUgdGhlIGV2ZW50cyBjYW4ndCBiZSBpbnRlcmNlcHRlZCBpbiB0aGUgY3VycmVudCBzZXR1 cAogCis5LiBLVk1JX0dFVF9QQUdFX0FDQ0VTUworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor OkFyY2hpdGVjdHVyZXM6IGFsbAorOlZlcnNpb25zOiA+PSAxCis6UGFyYW1ldGVyczoKKworOjoK KworCXN0cnVjdCBrdm1pX2dldF9wYWdlX2FjY2VzcyB7CisJCV9fdTE2IHZpZXc7CisJCV9fdTE2 IGNvdW50OworCQlfX3UzMiBwYWRkaW5nOworCQlfX3U2NCBncGFbMF07CisJfTsKKworOlJldHVy bnM6CisKKzo6CisKKwlzdHJ1Y3Qga3ZtaV9lcnJvcl9jb2RlOworCXN0cnVjdCBrdm1pX2dldF9w YWdlX2FjY2Vzc19yZXBseSB7CisJCV9fdTggYWNjZXNzWzBdOworCX07CisKK1JldHVybnMgdGhl IHNwdGUgYWNjZXNzIGJpdHMgKHJ3eCkgZm9yIGFuIGFycmF5IG9mIGBgY291bnRgYCBndWVzdAor cGh5c2ljYWwgYWRkcmVzc2VzLgorCitUaGUgdmFsaWQgYWNjZXNzIGJpdHMgZm9yICpLVk1JX0dF VF9QQUdFX0FDQ0VTUyogYW5kICpLVk1JX1NFVF9QQUdFX0FDQ0VTUyoKK2FyZTo6CisKKwlLVk1J X1BBR0VfQUNDRVNTX1IKKwlLVk1JX1BBR0VfQUNDRVNTX1cKKwlLVk1JX1BBR0VfQUNDRVNTX1gK KworQnkgZGVmYXVsdCwgZm9yIGFueSBndWVzdCBwaHlzaWNhbCBhZGRyZXNzLCB0aGUgcmV0dXJu ZWQgYWNjZXNzIG1vZGUgd2lsbAorYmUgJ3J3eCcgKGFsbCB0aGUgYWJvdmUgYml0cykuIElmIHRo ZSBpbnRyb3NwZWN0aW9uIHRvb2wgbXVzdCBwcmV2ZW50Cit0aGUgY29kZSBleGVjdXRpb24gZnJv bSBhIGd1ZXN0IHBhZ2UsIGZvciBleGFtcGxlLCBpdCBzaG91bGQgdXNlIHRoZQorS1ZNSV9TRVRf UEFHRV9BQ0NFU1MgY29tbWFuZCB0byBzZXQgdGhlICdydycgYml0cyBmb3IgYW55IGd1ZXN0IHBo eXNpY2FsCithZGRyZXNzZXMgY29udGFpbmVkIGluIHRoYXQgcGFnZS4gT2YgY291cnNlLCBpbiBv cmRlciB0byByZWNlaXZlCitwYWdlIGZhdWx0IGV2ZW50cyB3aGVuIHRoZXNlIHZpb2xhdGlvbnMg dGFrZSBwbGFjZSwgdGhlIEtWTUlfQ09OVFJPTF9FVkVOVFMKK2NvbW1hbmQgbXVzdCBiZSB1c2Vk IHRvIGVuYWJsZSB0aGlzIHR5cGUgb2YgZXZlbnQgKEtWTUlfRVZFTlRfUEYpLgorCitPbiBJbnRl bCBoYXJkd2FyZSB3aXRoIG11bHRpcGxlIEVQVCB2aWV3cywgdGhlIGBgdmlld2BgIGFyZ3VtZW50 IHNlbGVjdHMgdGhlCitFUFQgdmlldyAoMCBpcyBwcmltYXJ5KS4gT24gYWxsIG90aGVyIGhhcmR3 YXJlIGl0IG11c3QgYmUgemVyby4KKworOkVycm9yczoKKworKiAtS1ZNX0VJTlZBTCAtIHRoZSBz ZWxlY3RlZCBTUFQgdmlldyBpcyBpbnZhbGlkCisqIC1LVk1fRUlOVkFMIC0gcGFkZGluZyBpcyBu b3QgemVybworKiAtS1ZNX0VPUE5PVFNVUFAgLSBhIFNQVCB2aWV3IHdhcyBzZWxlY3RlZCBidXQg dGhlIGhhcmR3YXJlIGRvZXNuJ3Qgc3VwcG9ydCBpdAorKiAtS1ZNX0VBR0FJTiAtIHRoZSBzZWxl Y3RlZCB2Q1BVIGNhbid0IGJlIGludHJvc3BlY3RlZCB5ZXQKKyogLUtWTV9FTk9NRU0gLSBub3Qg ZW5vdWdoIG1lbW9yeSB0byBhbGxvY2F0ZSB0aGUgcmVwbHkKKwogRXZlbnRzCiA9PT09PT0KIApk aWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL2t2bWkuYyBiL2FyY2gveDg2L2t2bS9rdm1pLmMKaW5k ZXggMTIxODE5ZjljNDg3Li41OWNmMzMxMjdiNGIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9r dm1pLmMKKysrIGIvYXJjaC94ODYva3ZtL2t2bWkuYwpAQCAtMTgzLDMgKzE4Myw0NCBAQCB2b2lk IGt2bWlfYXJjaF91cGRhdGVfcGFnZV90cmFja2luZyhzdHJ1Y3Qga3ZtICprdm0sCiAJCX0KIAl9 CiB9CisKK2ludCBrdm1pX2FyY2hfY21kX2dldF9wYWdlX2FjY2VzcyhzdHJ1Y3Qga3ZtaSAqaWt2 bSwKKwkJCQkgIGNvbnN0IHN0cnVjdCBrdm1pX21zZ19oZHIgKm1zZywKKwkJCQkgIGNvbnN0IHN0 cnVjdCBrdm1pX2dldF9wYWdlX2FjY2VzcyAqcmVxLAorCQkJCSAgc3RydWN0IGt2bWlfZ2V0X3Bh Z2VfYWNjZXNzX3JlcGx5ICoqZGVzdCwKKwkJCQkgIHNpemVfdCAqZGVzdF9zaXplKQoreworCXN0 cnVjdCBrdm1pX2dldF9wYWdlX2FjY2Vzc19yZXBseSAqcnBsID0gTlVMTDsKKwlzaXplX3QgcnBs X3NpemUgPSAwOworCXNpemVfdCBrLCBuID0gcmVxLT5jb3VudDsKKwlpbnQgZWMgPSAwOworCisJ aWYgKHJlcS0+cGFkZGluZykKKwkJcmV0dXJuIC1LVk1fRUlOVkFMOworCisJaWYgKG1zZy0+c2l6 ZSA8IHNpemVvZigqcmVxKSArIHJlcS0+Y291bnQgKiBzaXplb2YocmVxLT5ncGFbMF0pKQorCQly ZXR1cm4gLUtWTV9FSU5WQUw7CisKKwlpZiAocmVxLT52aWV3ICE9IDApCS8qIFRPRE8gKi8KKwkJ cmV0dXJuIC1LVk1fRU9QTk9UU1VQUDsKKworCXJwbF9zaXplID0gc2l6ZW9mKCpycGwpICsgc2l6 ZW9mKHJwbC0+YWNjZXNzWzBdKSAqIG47CisJcnBsID0ga3ZtaV9tc2dfYWxsb2NfY2hlY2socnBs X3NpemUpOworCWlmICghcnBsKQorCQlyZXR1cm4gLUtWTV9FTk9NRU07CisKKwlmb3IgKGsgPSAw OyBrIDwgbiAmJiBlYyA9PSAwOyBrKyspCisJCWVjID0ga3ZtaV9jbWRfZ2V0X3BhZ2VfYWNjZXNz KGlrdm0sIHJlcS0+Z3BhW2tdLAorCQkJCQkgICAgICAmcnBsLT5hY2Nlc3Nba10pOworCisJaWYg KGVjKSB7CisJCWt2bWlfbXNnX2ZyZWUocnBsKTsKKwkJcmV0dXJuIGVjOworCX0KKworCSpkZXN0 ID0gcnBsOworCSpkZXN0X3NpemUgPSBycGxfc2l6ZTsKKworCXJldHVybiAwOworfQorCmRpZmYg LS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgva3ZtaS5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2 bWkuaAppbmRleCA0MGE1YzMwNGMyNmYuLjA0NzQzNmEwYmRjMCAxMDA2NDQKLS0tIGEvaW5jbHVk ZS91YXBpL2xpbnV4L2t2bWkuaAorKysgYi9pbmNsdWRlL3VhcGkvbGludXgva3ZtaS5oCkBAIC0x MTYsNiArMTE2LDE3IEBAIHN0cnVjdCBrdm1pX2dldF9ndWVzdF9pbmZvX3JlcGx5IHsKIAlfX3Uz MiBwYWRkaW5nWzNdOwogfTsKIAorc3RydWN0IGt2bWlfZ2V0X3BhZ2VfYWNjZXNzIHsKKwlfX3Ux NiB2aWV3OworCV9fdTE2IGNvdW50OworCV9fdTMyIHBhZGRpbmc7CisJX191NjQgZ3BhWzBdOwor fTsKKworc3RydWN0IGt2bWlfZ2V0X3BhZ2VfYWNjZXNzX3JlcGx5IHsKKwlfX3U4IGFjY2Vzc1sw XTsKK307CisKIHN0cnVjdCBrdm1pX2dldF92Y3B1X2luZm9fcmVwbHkgewogCV9fdTY0IHRzY19z cGVlZDsKIH07CmRpZmYgLS1naXQgYS92aXJ0L2t2bS9rdm1pLmMgYi92aXJ0L2t2bS9rdm1pLmMK aW5kZXggMDI2NDExNWE3ZjRkLi4yMDUwNWU0YzRiNWYgMTAwNjQ0Ci0tLSBhL3ZpcnQva3ZtL2t2 bWkuYworKysgYi92aXJ0L2t2bS9rdm1pLmMKQEAgLTEwNzIsNiArMTA3MiwxNSBAQCB2b2lkIGt2 bWlfaGFuZGxlX3JlcXVlc3RzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAlrdm1pX3B1dCh2Y3B1 LT5rdm0pOwogfQogCitpbnQga3ZtaV9jbWRfZ2V0X3BhZ2VfYWNjZXNzKHN0cnVjdCBrdm1pICpp a3ZtLCB1NjQgZ3BhLCB1OCAqYWNjZXNzKQoreworCWdmbl90IGdmbiA9IGdwYV90b19nZm4oZ3Bh KTsKKworCWt2bWlfZ2V0X2dmbl9hY2Nlc3MoaWt2bSwgZ2ZuLCBhY2Nlc3MpOworCisJcmV0dXJu IDA7Cit9CisKIGludCBrdm1pX2NtZF9jb250cm9sX2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZj cHUsIHVuc2lnbmVkIGludCBldmVudF9pZCwKIAkJCSAgICBib29sIGVuYWJsZSkKIHsKZGlmZiAt LWdpdCBhL3ZpcnQva3ZtL2t2bWlfaW50LmggYi92aXJ0L2t2bS9rdm1pX2ludC5oCmluZGV4IGQ0 NzhkOWEyZTc2OS4uMDBkYzVjZjcyZjg4IDEwMDY0NAotLS0gYS92aXJ0L2t2bS9rdm1pX2ludC5o CisrKyBiL3ZpcnQva3ZtL2t2bWlfaW50LmgKQEAgLTE1OSw2ICsxNTksNyBAQCBpbnQga3ZtaV9t c2dfc2VuZF91bmhvb2soc3RydWN0IGt2bWkgKmlrdm0pOwogdm9pZCAqa3ZtaV9tc2dfYWxsb2Mo dm9pZCk7CiB2b2lkICprdm1pX21zZ19hbGxvY19jaGVjayhzaXplX3Qgc2l6ZSk7CiB2b2lkIGt2 bWlfbXNnX2ZyZWUodm9pZCAqYWRkcik7CitpbnQga3ZtaV9jbWRfZ2V0X3BhZ2VfYWNjZXNzKHN0 cnVjdCBrdm1pICppa3ZtLCB1NjQgZ3BhLCB1OCAqYWNjZXNzKTsKIGludCBrdm1pX2NtZF9jb250 cm9sX2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBldmVudF9pZCwK IAkJCSAgICBib29sIGVuYWJsZSk7CiBpbnQga3ZtaV9jbWRfY29udHJvbF92bV9ldmVudHMoc3Ry dWN0IGt2bWkgKmlrdm0sIHVuc2lnbmVkIGludCBldmVudF9pZCwKQEAgLTE3NCw2ICsxNzUsMTEg QEAgdm9pZCBrdm1pX2hhbmRsZV9jb21tb25fZXZlbnRfYWN0aW9ucyhzdHJ1Y3Qga3ZtX3ZjcHUg KnZjcHUsIHUzMiBhY3Rpb24sCiB2b2lkIGt2bWlfYXJjaF91cGRhdGVfcGFnZV90cmFja2luZyhz dHJ1Y3Qga3ZtICprdm0sCiAJCQkJICAgIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKnNsb3QsCiAJ CQkJICAgIHN0cnVjdCBrdm1pX21lbV9hY2Nlc3MgKm0pOworaW50IGt2bWlfYXJjaF9jbWRfZ2V0 X3BhZ2VfYWNjZXNzKHN0cnVjdCBrdm1pICppa3ZtLAorCQkJCSAgY29uc3Qgc3RydWN0IGt2bWlf bXNnX2hkciAqbXNnLAorCQkJCSAgY29uc3Qgc3RydWN0IGt2bWlfZ2V0X3BhZ2VfYWNjZXNzICpy ZXEsCisJCQkJICBzdHJ1Y3Qga3ZtaV9nZXRfcGFnZV9hY2Nlc3NfcmVwbHkgKipkZXN0LAorCQkJ CSAgc2l6ZV90ICpkZXN0X3NpemUpOwogdm9pZCBrdm1pX2FyY2hfc2V0dXBfZXZlbnQoc3RydWN0 IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtaV9ldmVudCAqZXYpOwogYm9vbCBrdm1pX2FyY2hf cGZfZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsIGd2YV90IGd2YSwKIAkJ CXU4IGFjY2Vzcyk7CmRpZmYgLS1naXQgYS92aXJ0L2t2bS9rdm1pX21zZy5jIGIvdmlydC9rdm0v a3ZtaV9tc2cuYwppbmRleCAwNjQyMzU2ZDRlMDQuLjA5YWQxNzQ3OWFiYiAxMDA2NDQKLS0tIGEv dmlydC9rdm0va3ZtaV9tc2cuYworKysgYi92aXJ0L2t2bS9rdm1pX21zZy5jCkBAIC0yOSw2ICsy OSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBtc2dfSURzW10gPSB7CiAJW0tWTUlfRVZF TlRdICAgICAgICAgICAgICAgICA9ICJLVk1JX0VWRU5UIiwKIAlbS1ZNSV9FVkVOVF9SRVBMWV0g ICAgICAgICAgID0gIktWTUlfRVZFTlRfUkVQTFkiLAogCVtLVk1JX0dFVF9HVUVTVF9JTkZPXSAg ICAgICAgPSAiS1ZNSV9HRVRfR1VFU1RfSU5GTyIsCisJW0tWTUlfR0VUX1BBR0VfQUNDRVNTXSAg ICAgICA9ICJLVk1JX0dFVF9QQUdFX0FDQ0VTUyIsCiAJW0tWTUlfR0VUX1ZDUFVfSU5GT10gICAg ICAgICA9ICJLVk1JX0dFVF9WQ1BVX0lORk8iLAogCVtLVk1JX0dFVF9WRVJTSU9OXSAgICAgICAg ICAgPSAiS1ZNSV9HRVRfVkVSU0lPTiIsCiB9OwpAQCAtMzIzLDYgKzMyNCwyMSBAQCBzdGF0aWMg aW50IGhhbmRsZV9jb250cm9sX2NtZF9yZXNwb25zZShzdHJ1Y3Qga3ZtaSAqaWt2bSwKIAlyZXR1 cm4gZXJyOwogfQogCitzdGF0aWMgaW50IGhhbmRsZV9nZXRfcGFnZV9hY2Nlc3Moc3RydWN0IGt2 bWkgKmlrdm0sCisJCQkJICBjb25zdCBzdHJ1Y3Qga3ZtaV9tc2dfaGRyICptc2csCisJCQkJICBj b25zdCB2b2lkICpyZXEpCit7CisJc3RydWN0IGt2bWlfZ2V0X3BhZ2VfYWNjZXNzX3JlcGx5ICpy cGwgPSBOVUxMOworCXNpemVfdCBycGxfc2l6ZSA9IDA7CisJaW50IGVyciwgZWM7CisKKwllYyA9 IGt2bWlfYXJjaF9jbWRfZ2V0X3BhZ2VfYWNjZXNzKGlrdm0sIG1zZywgcmVxLCAmcnBsLCAmcnBs X3NpemUpOworCisJZXJyID0ga3ZtaV9tc2dfdm1fbWF5YmVfcmVwbHkoaWt2bSwgbXNnLCBlYywg cnBsLCBycGxfc2l6ZSk7CisJa3ZtaV9tc2dfZnJlZShycGwpOworCXJldHVybiBlcnI7Cit9CisK IHN0YXRpYyBib29sIGludmFsaWRfdmNwdV9oZHIoY29uc3Qgc3RydWN0IGt2bWlfdmNwdV9oZHIg KmhkcikKIHsKIAlyZXR1cm4gaGRyLT5wYWRkaW5nMSB8fCBoZHItPnBhZGRpbmcyOwpAQCAtMzM4 LDYgKzM1NCw3IEBAIHN0YXRpYyBpbnQoKmNvbnN0IG1zZ192bVtdKShzdHJ1Y3Qga3ZtaSAqLCBj b25zdCBzdHJ1Y3Qga3ZtaV9tc2dfaGRyICosCiAJW0tWTUlfQ09OVFJPTF9DTURfUkVTUE9OU0Vd ICA9IGhhbmRsZV9jb250cm9sX2NtZF9yZXNwb25zZSwKIAlbS1ZNSV9DT05UUk9MX1ZNX0VWRU5U U10gICAgID0gaGFuZGxlX2NvbnRyb2xfdm1fZXZlbnRzLAogCVtLVk1JX0dFVF9HVUVTVF9JTkZP XSAgICAgICAgPSBoYW5kbGVfZ2V0X2d1ZXN0X2luZm8sCisJW0tWTUlfR0VUX1BBR0VfQUNDRVNT XSAgICAgICA9IGhhbmRsZV9nZXRfcGFnZV9hY2Nlc3MsCiAJW0tWTUlfR0VUX1ZFUlNJT05dICAg ICAgICAgICA9IGhhbmRsZV9nZXRfdmVyc2lvbiwKIH07CiAKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KVmlydHVhbGl6YXRpb24gbWFpbGluZyBsaXN0ClZp cnR1YWxpemF0aW9uQGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnCmh0dHBzOi8vbGlzdHMubGlu dXhmb3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3ZpcnR1YWxpemF0aW9u