From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH v8 12/15] xen/arm: move arch specific grant table bits into grant_table.c Date: Wed, 20 Sep 2017 08:34:27 +0200 Message-ID: <20170920063430.9105-13-jgross@suse.com> References: <20170920063430.9105-1-jgross@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1duYav-0003OV-Sm for xen-devel@lists.xenproject.org; Wed, 20 Sep 2017 06:34:49 +0000 In-Reply-To: <20170920063430.9105-1-jgross@suse.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Juergen Gross , sstabellini@kernel.org, wei.liu2@citrix.com, George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, tim@xen.org, julien.grall@arm.com, jbeulich@suse.com, dgdegra@tycho.nsa.gov List-Id: xen-devel@lists.xenproject.org SW5zdGVhZCBvZiBhdHRhY2hpbmcgdGhlIEFSTSBzcGVjaWZpYyBncmFudCB0YWJsZSBkYXRhIHRv IHRoZSBkb21haW4Kc3RydWN0dXJlIGFkZCBpdCB0byBzdHJ1Y3QgZ3JhbnRfdGFibGUuIEFkZCB0 aGUgbmVlZGVkIGFyY2ggZnVuY3Rpb25zCnRvIHRoZSBhc20tKi9ncmFudF90YWJsZS5oIGluY2x1 ZGVzLgoKU2lnbmVkLW9mZi1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgpSZXZp ZXdlZC1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KLS0tClY3Ogot IHJlLWFkZCAjaW5jbHVkZSA8YXNtL2dyYW50LXRhYmxlLmg+IGluIGdyYW50X3RhYmxlLmggKEp1 bGllbiBHcmFsbCkKLS0tCiB4ZW4vYXJjaC9hcm0vZG9tYWluLmMgICAgICAgICAgICAgfCAgMiAt LQogeGVuL2NvbW1vbi9ncmFudF90YWJsZS5jICAgICAgICAgIHwgMjYgKysrKysrKysrKysrKysr KysrKy0tLS0tLS0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vZG9tYWluLmggICAgICB8ICAxIC0KIHhl bi9pbmNsdWRlL2FzbS1hcm0vZ3JhbnRfdGFibGUuaCB8IDI2ICsrKysrKysrKysrKysrKysrKyst LS0tLS0tCiB4ZW4vaW5jbHVkZS9hc20teDg2L2dyYW50X3RhYmxlLmggfCAxMiArKysrKysrLS0t LS0KIHhlbi9pbmNsdWRlL3hlbi9ncmFudF90YWJsZS5oICAgICB8ICAyICsrCiA2IGZpbGVzIGNo YW5nZWQsIDQ3IGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL2FybS9kb21haW4uYyBiL3hlbi9hcmNoL2FybS9kb21haW4uYwppbmRleCA3ODRhZTM5 MmNmLi5lMzlhNzk4ODVjIDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vZG9tYWluLmMKKysrIGIv eGVuL2FyY2gvYXJtL2RvbWFpbi5jCkBAIC00ODYsMTMgKzQ4NiwxMSBAQCBzdHJ1Y3QgZG9tYWlu ICphbGxvY19kb21haW5fc3RydWN0KHZvaWQpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAg Y2xlYXJfcGFnZShkKTsKLSAgICBkLT5hcmNoLmdyYW50X3RhYmxlX2dmbiA9IHh6YWxsb2NfYXJy YXkoZ2ZuX3QsIG1heF9ncmFudF9mcmFtZXMpOwogICAgIHJldHVybiBkOwogfQogCiB2b2lkIGZy ZWVfZG9tYWluX3N0cnVjdChzdHJ1Y3QgZG9tYWluICpkKQogewotICAgIHhmcmVlKGQtPmFyY2gu Z3JhbnRfdGFibGVfZ2ZuKTsKICAgICBmcmVlX3hlbmhlYXBfcGFnZShkKTsKIH0KIApkaWZmIC0t Z2l0IGEveGVuL2NvbW1vbi9ncmFudF90YWJsZS5jIGIveGVuL2NvbW1vbi9ncmFudF90YWJsZS5j CmluZGV4IGY2Njk0MDU1MWUuLjI2ZjlhMzI2NTYgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vZ3Jh bnRfdGFibGUuYworKysgYi94ZW4vY29tbW9uL2dyYW50X3RhYmxlLmMKQEAgLTcyLDYgKzcyLDgg QEAgc3RydWN0IGdyYW50X3RhYmxlIHsKICAgICBzdHJ1Y3QgYWN0aXZlX2dyYW50X2VudHJ5ICoq YWN0aXZlOwogICAgIC8qIE1hcHBpbmcgdHJhY2tpbmcgdGFibGUgcGVyIHZjcHUuICovCiAgICAg c3RydWN0IGdyYW50X21hcHBpbmcgKiptYXB0cmFjazsKKworICAgIHN0cnVjdCBncmFudF90YWJs ZV9hcmNoIGFyY2g7CiB9OwogCiAjaWZuZGVmIERFRkFVTFRfTUFYX05SX0dSQU5UX0ZSQU1FUyAv KiB0byBhbGxvdyBhcmNoIHRvIG92ZXJyaWRlICovCkBAIC0xNjU4LDYgKzE2NjAsOCBAQCBnbnR0 YWJfdW5wb3B1bGF0ZV9zdGF0dXNfZnJhbWVzKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBncmFu dF90YWJsZSAqZ3QpCiBzdGF0aWMgaW50CiBncmFudF90YWJsZV9pbml0KHN0cnVjdCBncmFudF90 YWJsZSAqZ3QpCiB7CisgICAgaW50IHJldCA9IC1FTk9NRU07CisKICAgICBpZiAoIGd0LT5hY3Rp dmUgKQogICAgICAgICByZXR1cm4gLUVCVVNZOwogCkBAIC0xNjY1LDM0ICsxNjY5LDQwIEBAIGdy YW50X3RhYmxlX2luaXQoc3RydWN0IGdyYW50X3RhYmxlICpndCkKICAgICBndC0+YWN0aXZlID0g eHphbGxvY19hcnJheShzdHJ1Y3QgYWN0aXZlX2dyYW50X2VudHJ5ICosCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbWF4X25yX2FjdGl2ZV9ncmFudF9mcmFtZXMpOwogICAgIGlmICgg Z3QtPmFjdGl2ZSA9PSBOVUxMICkKLSAgICAgICAgZ290byBub19tZW07CisgICAgICAgIGdvdG8g b3V0OwogCiAgICAgLyogVHJhY2tpbmcgb2YgbWFwcGVkIGZvcmVpZ24gZnJhbWVzIHRhYmxlICov CiAgICAgZ3QtPm1hcHRyYWNrID0gdnphbGxvYyhtYXhfbWFwdHJhY2tfZnJhbWVzICogc2l6ZW9m KCpndC0+bWFwdHJhY2spKTsKICAgICBpZiAoIGd0LT5tYXB0cmFjayA9PSBOVUxMICkKLSAgICAg ICAgZ290byBub19tZW07CisgICAgICAgIGdvdG8gb3V0OwogCiAgICAgLyogU2hhcmVkIGdyYW50 IHRhYmxlLiAqLwogICAgIGd0LT5zaGFyZWRfcmF3ID0geHphbGxvY19hcnJheSh2b2lkICosIG1h eF9ncmFudF9mcmFtZXMpOwogICAgIGlmICggZ3QtPnNoYXJlZF9yYXcgPT0gTlVMTCApCi0gICAg ICAgIGdvdG8gbm9fbWVtOworICAgICAgICBnb3RvIG91dDsKIAogICAgIC8qIFN0YXR1cyBwYWdl cyBmb3IgZ3JhbnQgdGFibGUgLSBmb3IgdmVyc2lvbiAyICovCiAgICAgZ3QtPnN0YXR1cyA9IHh6 YWxsb2NfYXJyYXkoZ3JhbnRfc3RhdHVzX3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBncmFudF90b19zdGF0dXNfZnJhbWVzKG1heF9ncmFudF9mcmFtZXMpKTsKICAgICBpZiAo IGd0LT5zdGF0dXMgPT0gTlVMTCApCi0gICAgICAgIGdvdG8gbm9fbWVtOworICAgICAgICBnb3Rv IG91dDsKKworICAgIHJldCA9IGdudHRhYl9pbml0X2FyY2goZ3QpOworICAgIGlmICggcmV0ICkK KyAgICAgICAgZ290byBvdXQ7CiAKICAgICByZXR1cm4gMDsKIAotIG5vX21lbToKKyBvdXQ6Cisg ICAgeGZyZWUoZ3QtPnN0YXR1cyk7CisgICAgZ3QtPnN0YXR1cyA9IE5VTEw7CiAgICAgeGZyZWUo Z3QtPnNoYXJlZF9yYXcpOwogICAgIGd0LT5zaGFyZWRfcmF3ID0gTlVMTDsKICAgICB2ZnJlZShn dC0+bWFwdHJhY2spOwogICAgIGd0LT5tYXB0cmFjayA9IE5VTEw7CiAgICAgeGZyZWUoZ3QtPmFj dGl2ZSk7CiAgICAgZ3QtPmFjdGl2ZSA9IE5VTEw7Ci0gICAgcmV0dXJuIC1FTk9NRU07CisgICAg cmV0dXJuIHJldDsKIH0KIAogLyoKQEAgLTM2MDMsNiArMzYxMyw4IEBAIGdyYW50X3RhYmxlX2Rl c3Ryb3koCiAgICAgaWYgKCB0ID09IE5VTEwgKQogICAgICAgICByZXR1cm47CiAKKyAgICBnbnR0 YWJfZGVzdHJveV9hcmNoKHQpOworCiAgICAgZm9yICggaSA9IDA7IGkgPCBucl9ncmFudF9mcmFt ZXModCk7IGkrKyApCiAgICAgICAgIGZyZWVfeGVuaGVhcF9wYWdlKHQtPnNoYXJlZF9yYXdbaV0p OwogICAgIHhmcmVlKHQtPnNoYXJlZF9yYXcpOwpAQCAtMzcyOSw3ICszNzQxLDcgQEAgaW50IGdu dHRhYl9tYXBfZnJhbWUoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBpZHgsIGdmbl90 IGdmbiwKICAgICB9CiAKICAgICBpZiAoICFyYyApCi0gICAgICAgIGdudHRhYl9zZXRfZnJhbWVf Z2ZuKGQsIGlkeCwgZ2ZuKTsKKyAgICAgICAgZ250dGFiX3NldF9mcmFtZV9nZm4oZ3QsIGlkeCwg Z2ZuKTsKIAogICAgIGdyYW50X3dyaXRlX3VubG9jayhndCk7CiAKZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL2FzbS1hcm0vZG9tYWluLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL2RvbWFpbi5oCmlu ZGV4IGIxNzRjNjUwODAuLmNlOWI2YTQwMzIgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS1h cm0vZG9tYWluLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9kb21haW4uaApAQCAtNTAsNyAr NTAsNiBAQCBzdHJ1Y3QgYXJjaF9kb21haW4KICAgICBzdHJ1Y3QgcDJtX2RvbWFpbiBwMm07CiAK ICAgICBzdHJ1Y3QgaHZtX2RvbWFpbiBodm1fZG9tYWluOwotICAgIGdmbl90ICpncmFudF90YWJs ZV9nZm47CiAKICAgICBzdHJ1Y3Qgdm1taW8gdm1taW87CiAKZGlmZiAtLWdpdCBhL3hlbi9pbmNs dWRlL2FzbS1hcm0vZ3JhbnRfdGFibGUuaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ3JhbnRfdGFi bGUuaAppbmRleCAwYTI0OGE3NjVhLi4wODcwYjViNzgyIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVk ZS9hc20tYXJtL2dyYW50X3RhYmxlLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9ncmFudF90 YWJsZS5oCkBAIC02LDYgKzYsMTAgQEAKIAogI2RlZmluZSBJTklUSUFMX05SX0dSQU5UX0ZSQU1F UyA0CiAKK3N0cnVjdCBncmFudF90YWJsZV9hcmNoIHsKKyAgICBnZm5fdCAqZ2ZuOworfTsKKwog dm9pZCBnbnR0YWJfY2xlYXJfZmxhZyh1bnNpZ25lZCBsb25nIG5yLCB1aW50MTZfdCAqYWRkcik7 CiBpbnQgY3JlYXRlX2dyYW50X2hvc3RfbWFwcGluZyh1bnNpZ25lZCBsb25nIGdwYWRkciwKICAg ICAgICAgdW5zaWduZWQgbG9uZyBtZm4sIHVuc2lnbmVkIGludCBmbGFncywgdW5zaWduZWQgaW50 CkBAIC0yMiwxMSArMjYsMTkgQEAgc3RhdGljIGlubGluZSBpbnQgcmVwbGFjZV9ncmFudF9zdXBw b3J0ZWQodm9pZCkKICAgICByZXR1cm4gMTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGdudHRh Yl9zZXRfZnJhbWVfZ2ZuKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgaWR4LAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmbl90IGdmbikKLXsKLSAgICBk LT5hcmNoLmdyYW50X3RhYmxlX2dmbltpZHhdID0gZ2ZuOwotfQorI2RlZmluZSBnbnR0YWJfaW5p dF9hcmNoKGd0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK KyAgICAoICgoZ3QpLT5hcmNoLmdmbiA9IHh6YWxsb2NfYXJyYXkoZ2ZuX3QsIG1heF9ncmFudF9m cmFtZXMpKSA9PSAwICAgICBcCisgICAgICA/IDAgOiAtRU5PTUVNICkKKworI2RlZmluZSBnbnR0 YWJfZGVzdHJveV9hcmNoKGd0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHhmcmVlKChndCktPmFyY2guZ2ZuKTsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUg KCAwICkKKworI2RlZmluZSBnbnR0YWJfc2V0X2ZyYW1lX2dmbihndCwgaWR4LCBnZm4pICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIChn dCktPmFyY2guZ2ZuW2lkeF0gPSBnZm47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorICAgIH0gd2hpbGUgKCAwICkKIAogI2RlZmluZSBnbnR0YWJfY3JlYXRlX3NoYXJl ZF9wYWdlKGQsIHQsIGkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBkbyB7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCkBAIC0zNiw4ICs0OCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBnbnR0YWJfc2V0 X2ZyYW1lX2dmbihzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGlkeCwKICAgICB9IHdo aWxlICggMCApCiAKICNkZWZpbmUgZ250dGFiX3NoYXJlZF9nbWZuKGQsIHQsIGkpICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKCAoKGkgPj0gbnJfZ3JhbnRfZnJh bWVzKGQtPmdyYW50X3RhYmxlKSkgJiYgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAo aSA8IG1heF9ncmFudF9mcmFtZXMpKSA/IDAgOiBnZm5feChkLT5hcmNoLmdyYW50X3RhYmxlX2dm bltpXSkpCisgICAgKCAoKGkgPj0gbnJfZ3JhbnRfZnJhbWVzKHQpKSAmJiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgIChpIDwgbWF4X2dyYW50X2ZyYW1lcykp ID8gMCA6IGdmbl94KHQtPmFyY2guZ2ZuW2ldKSkKIAogI2RlZmluZSBnbnR0YWJfbmVlZF9pb21t dV9tYXBwaW5nKGQpICAgICAgICAgICAgICAgICAgICBcCiAgICAgKGlzX2RvbWFpbl9kaXJlY3Rf bWFwcGVkKGQpICYmIG5lZWRfaW9tbXUoZCkpCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20t eDg2L2dyYW50X3RhYmxlLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2dyYW50X3RhYmxlLmgKaW5k ZXggYzg2NTk5OWEzMy4uMWI5M2M1NzIwZCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4 Ni9ncmFudF90YWJsZS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvZ3JhbnRfdGFibGUuaApA QCAtMTQsNiArMTQsOSBAQAogCiAjZGVmaW5lIElOSVRJQUxfTlJfR1JBTlRfRlJBTUVTIDQKIAor c3RydWN0IGdyYW50X3RhYmxlX2FyY2ggeworfTsKKwogLyoKICAqIENhbGxlciBtdXN0IG93biBj YWxsZXIncyBCSUdMT0NLLCBpcyByZXNwb25zaWJsZSBmb3IgZmx1c2hpbmcgdGhlIFRMQiwgYW5k CiAgKiBtdXN0IGhvbGQgYSByZWZlcmVuY2UgdG8gdGhlIHBhZ2UuCkBAIC0zNiw2ICszOSwxMCBA QCBzdGF0aWMgaW5saW5lIGludCByZXBsYWNlX2dyYW50X2hvc3RfbWFwcGluZyh1aW50NjRfdCBh ZGRyLCB1bnNpZ25lZCBsb25nIGZyYW1lLAogICAgIHJldHVybiByZXBsYWNlX2dyYW50X3B2X21h cHBpbmcoYWRkciwgZnJhbWUsIG5ld19hZGRyLCBmbGFncyk7CiB9CiAKKyNkZWZpbmUgZ250dGFi X2luaXRfYXJjaChndCkgMAorI2RlZmluZSBnbnR0YWJfZGVzdHJveV9hcmNoKGd0KSBkbyB7fSB3 aGlsZSAoIDAgKQorI2RlZmluZSBnbnR0YWJfc2V0X2ZyYW1lX2dmbihndCwgaWR4LCBnZm4pIGRv IHt9IHdoaWxlICggMCApCisKICNkZWZpbmUgZ250dGFiX2NyZWF0ZV9zaGFyZWRfcGFnZShkLCB0 LCBpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgZG8geyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog ICAgICAgICBzaGFyZV94ZW5fcGFnZV93aXRoX2d1ZXN0KCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKQEAgLTc1LDExICs4Miw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBn bnR0YWJfY2xlYXJfZmxhZyh1bnNpZ25lZCBpbnQgbnIsIHVpbnQxNl90ICpzdCkKICAgICBhc20g dm9sYXRpbGUgKCJsb2NrIGJ0cncgJXcxLCUwIiA6ICI9bSIgKCpzdCkgOiAiSXIiIChuciksICJt IiAoKnN0KSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBnbnR0YWJfc2V0X2ZyYW1lX2dmbihz dHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGlkeCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnZm5fdCBnZm4pCi17Ci19Ci0KIC8qIEZvcmVpZ24gbWFwcGlu Z3Mgb2YgSEhWTS1ndWVzdCBwYWdlcyBkbyBub3QgbW9kaWZ5IHRoZSB0eXBlIGNvdW50LiAqLwog I2RlZmluZSBnbnR0YWJfaG9zdF9tYXBwaW5nX2dldF9wYWdlX3R5cGUocm8sIGxkLCByZCkgICBc CiAgICAgKCEocm8pICYmICgoKGxkKSA9PSAocmQpKSB8fCAhcGFnaW5nX21vZGVfZXh0ZXJuYWwo cmQpKSkKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9ncmFudF90YWJsZS5oIGIveGVuL2lu Y2x1ZGUveGVuL2dyYW50X3RhYmxlLmgKaW5kZXggZGYxMWIzMTI2NC4uZDJiZDI0MTZjNCAxMDA2 NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL2dyYW50X3RhYmxlLmgKKysrIGIveGVuL2luY2x1ZGUv eGVuL2dyYW50X3RhYmxlLmgKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlIDxhc20vcGFnZS5o PgogI2luY2x1ZGUgPGFzbS9ncmFudF90YWJsZS5oPgogCitzdHJ1Y3QgZ3JhbnRfdGFibGU7CisK IC8qIFRoZSBtYXhpbXVtIHNpemUgb2YgYSBncmFudCB0YWJsZS4gKi8KIGV4dGVybiB1bnNpZ25l ZCBpbnQgbWF4X2dyYW50X2ZyYW1lczsKIAotLSAKMi4xMi4zCgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4t ZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==