From: Thomas Garnier Subject: [PATCH v1 27/27] x86/kaslr: Add option to extend KASLR range from 1GB to 3GB Date: Wed, 11 Oct 2017 13:30:27 -0700 Message-ID: <20171011203027.11248-28-thgarnie@google.com> References: <20171011203027.11248-1-thgarnie@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: linux-arch@vger.kernel.org, kvm@vger.kernel.org, linux-pm@vger.kernel.org, x86@kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, linux-sparse@vger.kernel.org, linux-crypto@vger.kernel.org, kernel-hardening@lists.openwall.com, xen-devel@lists.xenproject.org To: Herbert Xu , "David S . Miller" , Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , Peter Zijlstra , Josh Poimboeuf , Arnd Bergmann , Thomas Garnier , Kees Cook , Andrey Ryabinin , Matthias Kaehlcke , Tom Lendacky , Andy Lutomirski , "Kirill A . Shutemov" , Borislav Petkov , "Rafael J . Wysocki" , Len Brown , Pavel Machek , Juergen Gross , Chris Wright , Alok Kataria , Rusty Russell , Tejun Heo In-Reply-To: <20171011203027.11248-1-thgarnie@google.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" List-Id: linux-crypto.vger.kernel.org QWRkIGEgbmV3IENPTkZJR19SQU5ET01JWkVfQkFTRV9MQVJHRSBvcHRpb24gdG8gYmVuZWZpdCBm cm9tIFBJRQpzdXBwb3J0LiBJdCBpbmNyZWFzZXMgdGhlIEtBU0xSIHJhbmdlIGZyb20gMUdCIHRv IDNHQi4gVGhlIG5ldyByYW5nZQpzdGFycyBhdCAweGZmZmZmZmZmMDAwMDAwMDAganVzdCBhYm92 ZSB0aGUgRUZJIG1lbW9yeSByZWdpb24uIFRoaXMKb3B0aW9uIGlzIG9mZiBieSBkZWZhdWx0LgoK VGhlIGJvb3QgY29kZSBpcyBhZGFwdGVkIHRvIGNyZWF0ZSB0aGUgYXBwcm9wcmlhdGUgcGFnZSB0 YWJsZSBzcGFubmluZwp0aHJlZSBQVUQgcGFnZXMuCgpUaGUgcmVsb2NhdGlvbiB0YWJsZSB1c2Vz IDY0LWJpdCBpbnRlZ2VycyBnZW5lcmF0ZWQgd2l0aCB0aGUgdXBkYXRlZApyZWxvY2F0aW9uIHRv b2wgd2l0aCB0aGUgbGFyZ2UtcmVsb2Mgb3B0aW9uLgoKU2lnbmVkLW9mZi1ieTogVGhvbWFzIEdh cm5pZXIgPHRoZ2FybmllQGdvb2dsZS5jb20+Ci0tLQogYXJjaC94ODYvS2NvbmZpZyAgICAgICAg ICAgICAgICAgICAgIHwgMjEgKysrKysrKysrKysrKysrKysrKysrCiBhcmNoL3g4Ni9ib290L2Nv bXByZXNzZWQvTWFrZWZpbGUgICAgfCAgNSArKysrKwogYXJjaC94ODYvYm9vdC9jb21wcmVzc2Vk L21pc2MuYyAgICAgIHwgMTAgKysrKysrKysrLQogYXJjaC94ODYvaW5jbHVkZS9hc20vcGFnZV82 NF90eXBlcy5oIHwgIDkgKysrKysrKysrCiBhcmNoL3g4Ni9rZXJuZWwvaGVhZDY0LmMgICAgICAg ICAgICAgfCAxNSArKysrKysrKysrKystLS0KIGFyY2gveDg2L2tlcm5lbC9oZWFkXzY0LlMgICAg ICAgICAgICB8IDExICsrKysrKysrKystCiA2IGZpbGVzIGNoYW5nZWQsIDY2IGluc2VydGlvbnMo KyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvS2NvbmZpZyBiL2FyY2gv eDg2L0tjb25maWcKaW5kZXggYmJkMjhhNDZhYjU1Li41NDYyN2RkMDYzNDggMTAwNjQ0Ci0tLSBh L2FyY2gveDg2L0tjb25maWcKKysrIGIvYXJjaC94ODYvS2NvbmZpZwpAQCAtMjE1NSw2ICsyMTU1 LDI3IEBAIGNvbmZpZyBYODZfUElFCiAJc2VsZWN0IERZTkFNSUNfTU9EVUxFX0JBU0UKIAlzZWxl Y3QgTU9EVUxFX1JFTF9DUkNTIGlmIE1PRFZFUlNJT05TCiAKK2NvbmZpZyBSQU5ET01JWkVfQkFT RV9MQVJHRQorCWJvb2wgIkluY3JlYXNlIHRoZSByYW5kb21pemF0aW9uIHJhbmdlIG9mIHRoZSBr ZXJuZWwgaW1hZ2UiCisJZGVwZW5kcyBvbiBYODZfNjQgJiYgUkFORE9NSVpFX0JBU0UKKwlzZWxl Y3QgWDg2X1BJRQorCXNlbGVjdCBYODZfTU9EVUxFX1BMVFMgaWYgTU9EVUxFUworCWRlZmF1bHQg bgorCS0tLWhlbHAtLS0KKwkgIEJ1aWxkIHRoZSBrZXJuZWwgYXMgYSBQb3NpdGlvbiBJbmRlcGVu ZGVudCBFeGVjdXRhYmxlIChQSUUpIGFuZAorCSAgaW5jcmVhc2UgdGhlIGF2YWlsYWJsZSByYW5k b21pemF0aW9uIHJhbmdlIGZyb20gMUdCIHRvIDNHQi4KKworCSAgVGhpcyBvcHRpb24gaW1wYWN0 cyBwZXJmb3JtYW5jZSBvbiBrZXJuZWwgQ1BVIGludGVuc2l2ZSB3b3JrbG9hZHMgdXAKKwkgIHRv IDEwJSBkdWUgdG8gUElFIGdlbmVyYXRlZCBjb2RlLiBJbXBhY3Qgb24gdXNlci1tb2RlIHByb2Nl c3NlcyBhbmQKKwkgIHR5cGljYWwgdXNhZ2Ugd291bGQgYmUgc2lnbmlmaWNhbnRseSBsZXNzICgw LjUwJSB3aGVuIHlvdSBidWlsZCB0aGUKKwkgIGtlcm5lbCkuCisKKwkgIFRoZSBrZXJuZWwgYW5k IG1vZHVsZXMgd2lsbCBnZW5lcmF0ZSBzbGlnaHRseSBtb3JlIGFzc2VtYmx5ICgxIHRvIDIlCisJ ICBpbmNyZWFzZSBvbiB0aGUgLnRleHQgc2VjdGlvbnMpLiBUaGUgdm1saW51eCBiaW5hcnkgd2ls bCBiZQorCSAgc2lnbmlmaWNhbnRseSBzbWFsbGVyIGR1ZSB0byBsZXNzIHJlbG9jYXRpb25zLgor CisJICBJZiB1bnN1cmUgc2F5IE4KKwogY29uZmlnIEhPVFBMVUdfQ1BVCiAJYm9vbCAiU3VwcG9y dCBmb3IgaG90LXBsdWdnYWJsZSBDUFVzIgogCWRlcGVuZHMgb24gU01QCmRpZmYgLS1naXQgYS9h cmNoL3g4Ni9ib290L2NvbXByZXNzZWQvTWFrZWZpbGUgYi9hcmNoL3g4Ni9ib290L2NvbXByZXNz ZWQvTWFrZWZpbGUKaW5kZXggOGE5NTgyNzRiNTRjLi45NGRmZWU1YTdjZDIgMTAwNjQ0Ci0tLSBh L2FyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9NYWtlZmlsZQorKysgYi9hcmNoL3g4Ni9ib290L2Nv bXByZXNzZWQvTWFrZWZpbGUKQEAgLTExMiw3ICsxMTIsMTIgQEAgJChvYmopL3ZtbGludXguYmlu OiB2bWxpbnV4IEZPUkNFCiAKIHRhcmdldHMgKz0gJChwYXRzdWJzdCAkKG9iaikvJSwlLCQodm1s aW51eC1vYmpzLXkpKSB2bWxpbnV4LmJpbi5hbGwgdm1saW51eC5yZWxvY3MKIAorIyBMYXJnZSBy YW5kb21pemF0aW9uIHJlcXVpcmUgYmlnZ2VyIHJlbG9jYXRpb24gdGFibGUKK2lmZXEgKCQoQ09O RklHX1JBTkRPTUlaRV9CQVNFX0xBUkdFKSx5KQorQ01EX1JFTE9DUyA9IGFyY2gveDg2L3Rvb2xz L3JlbG9jcyAtLWxhcmdlLXJlbG9jCitlbHNlCiBDTURfUkVMT0NTID0gYXJjaC94ODYvdG9vbHMv cmVsb2NzCitlbmRpZgogcXVpZXRfY21kX3JlbG9jcyA9IFJFTE9DUyAgJEAKICAgICAgIGNtZF9y ZWxvY3MgPSAkKENNRF9SRUxPQ1MpICQ8ID4gJEA7JChDTURfUkVMT0NTKSAtLWFicy1yZWxvY3Mg JDwKICQob2JqKS92bWxpbnV4LnJlbG9jczogdm1saW51eCBGT1JDRQpkaWZmIC0tZ2l0IGEvYXJj aC94ODYvYm9vdC9jb21wcmVzc2VkL21pc2MuYyBiL2FyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9t aXNjLmMKaW5kZXggYzE0MjE3Y2QwMTU1Li5jMWFjOWYyZTI4M2QgMTAwNjQ0Ci0tLSBhL2FyY2gv eDg2L2Jvb3QvY29tcHJlc3NlZC9taXNjLmMKKysrIGIvYXJjaC94ODYvYm9vdC9jb21wcmVzc2Vk L21pc2MuYwpAQCAtMTY5LDEwICsxNjksMTggQEAgdm9pZCBfX3B1dGhleCh1bnNpZ25lZCBsb25n IHZhbHVlKQogfQogCiAjaWYgQ09ORklHX1g4Nl9ORUVEX1JFTE9DUworCisvKiBMYXJnZSByYW5k b21pemF0aW9uIGdvIGxvd2VyIHRoYW4gLTJHIGFuZCB1c2UgbGFyZ2UgcmVsb2NhdGlvbiB0YWJs ZSAqLworI2lmZGVmIENPTkZJR19SQU5ET01JWkVfQkFTRV9MQVJHRQordHlwZWRlZiBsb25nIHJl bF90OworI2Vsc2UKK3R5cGVkZWYgaW50IHJlbF90OworI2VuZGlmCisKIHN0YXRpYyB2b2lkIGhh bmRsZV9yZWxvY2F0aW9ucyh2b2lkICpvdXRwdXQsIHVuc2lnbmVkIGxvbmcgb3V0cHV0X2xlbiwK IAkJCSAgICAgICB1bnNpZ25lZCBsb25nIHZpcnRfYWRkcikKIHsKLQlpbnQgKnJlbG9jOworCXJl bF90ICpyZWxvYzsKIAl1bnNpZ25lZCBsb25nIGRlbHRhLCBtYXAsIHB0cjsKIAl1bnNpZ25lZCBs b25nIG1pbl9hZGRyID0gKHVuc2lnbmVkIGxvbmcpb3V0cHV0OwogCXVuc2lnbmVkIGxvbmcgbWF4 X2FkZHIgPSBtaW5fYWRkciArIChWT19fX2Jzc19zdGFydCAtIFZPX190ZXh0KTsKZGlmZiAtLWdp dCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhZ2VfNjRfdHlwZXMuaCBiL2FyY2gveDg2L2luY2x1 ZGUvYXNtL3BhZ2VfNjRfdHlwZXMuaAppbmRleCAzZjVmMDhiMDEwZDAuLjZiNjVmODQ2ZGQ2NCAx MDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vcGFnZV82NF90eXBlcy5oCisrKyBiL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL3BhZ2VfNjRfdHlwZXMuaApAQCAtNDgsNyArNDgsMTEgQEAKICNk ZWZpbmUgX19QQUdFX09GRlNFVCAgICAgICAgICAgX19QQUdFX09GRlNFVF9CQVNFCiAjZW5kaWYg LyogQ09ORklHX1JBTkRPTUlaRV9NRU1PUlkgKi8KIAorI2lmZGVmIENPTkZJR19SQU5ET01JWkVf QkFTRV9MQVJHRQorI2RlZmluZSBfX1NUQVJUX0tFUk5FTF9tYXAJX0FDKDB4ZmZmZmZmZmYwMDAw MDAwMCwgVUwpCisjZWxzZQogI2RlZmluZSBfX1NUQVJUX0tFUk5FTF9tYXAJX0FDKDB4ZmZmZmZm ZmY4MDAwMDAwMCwgVUwpCisjZW5kaWYgLyogQ09ORklHX1JBTkRPTUlaRV9CQVNFX0xBUkdFICov CiAKIC8qIFNlZSBEb2N1bWVudGF0aW9uL3g4Ni94ODZfNjQvbW0udHh0IGZvciBhIGRlc2NyaXB0 aW9uIG9mIHRoZSBtZW1vcnkgbWFwLiAqLwogI2lmZGVmIENPTkZJR19YODZfNUxFVkVMCkBAIC02 NSw5ICs2OSwxNCBAQAogICogNTEyTWlCIGJ5IGRlZmF1bHQsIGxlYXZpbmcgMS41R2lCIGZvciBt b2R1bGVzIG9uY2UgdGhlIHBhZ2UgdGFibGVzCiAgKiBhcmUgZnVsbHkgc2V0IHVwLiBJZiBrZXJu ZWwgQVNMUiBpcyBjb25maWd1cmVkLCBpdCBjYW4gZXh0ZW5kIHRoZQogICoga2VybmVsIHBhZ2Ug dGFibGUgbWFwcGluZywgcmVkdWNpbmcgdGhlIHNpemUgb2YgdGhlIG1vZHVsZXMgYXJlYS4KKyAq IE9uIFBJRSwgd2UgcmVsb2NhdGUgdGhlIGJpbmFyeSAyRyBsb3dlciBzbyBhZGQgdGhpcyBleHRy YSBzcGFjZS4KICAqLwogI2lmIGRlZmluZWQoQ09ORklHX1JBTkRPTUlaRV9CQVNFKQorI2lmZGVm IENPTkZJR19SQU5ET01JWkVfQkFTRV9MQVJHRQorI2RlZmluZSBLRVJORUxfSU1BR0VfU0laRQko X0FDKDMsIFVMKSAqIDEwMjQgKiAxMDI0ICogMTAyNCkKKyNlbHNlCiAjZGVmaW5lIEtFUk5FTF9J TUFHRV9TSVpFCSgxMDI0ICogMTAyNCAqIDEwMjQpCisjZW5kaWYKICNlbHNlCiAjZGVmaW5lIEtF Uk5FTF9JTUFHRV9TSVpFCSg1MTIgKiAxMDI0ICogMTAyNCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEv YXJjaC94ODYva2VybmVsL2hlYWQ2NC5jIGIvYXJjaC94ODYva2VybmVsL2hlYWQ2NC5jCmluZGV4 IGI2MzYzZjBkMTFhNy4uZDYwM2QwZjVhNDBhIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwv aGVhZDY0LmMKKysrIGIvYXJjaC94ODYva2VybmVsL2hlYWQ2NC5jCkBAIC0zOSw2ICszOSw3IEBA IHN0YXRpYyB1bnNpZ25lZCBpbnQgX19pbml0ZGF0YSBuZXh0X2Vhcmx5X3BndDsKIHBtZHZhbF90 IGVhcmx5X3BtZF9mbGFncyA9IF9fUEFHRV9LRVJORUxfTEFSR0UgJiB+KF9QQUdFX0dMT0JBTCB8 IF9QQUdFX05YKTsKIAogI2RlZmluZSBfX2hlYWQJX19zZWN0aW9uKC5oZWFkLnRleHQpCisjZGVm aW5lIHB1ZF9jb3VudCh4KSAgICgoKHggKyAoUFVEX1NJWkUgLSAxKSkgJiB+KFBVRF9TSVpFIC0g MSkpID4+IFBVRF9TSElGVCkKIAogc3RhdGljIHZvaWQgX19oZWFkICpmaXh1cF9wb2ludGVyKHZv aWQgKnB0ciwgdW5zaWduZWQgbG9uZyBwaHlzYWRkcikKIHsKQEAgLTU2LDYgKzU3LDggQEAgdW5z aWduZWQgbG9uZyBfX2hlYWQgbm90cmFjZSBfX3N0YXJ0dXBfNjQodW5zaWduZWQgbG9uZyBwaHlz YWRkciwKIHsKIAl1bnNpZ25lZCBsb25nIGxvYWRfZGVsdGEsICpwOwogCXVuc2lnbmVkIGxvbmcg cGd0YWJsZV9mbGFnczsKKwl1bnNpZ25lZCBsb25nIGxldmVsM19rZXJuZWxfc3RhcnQsIGxldmVs M19rZXJuZWxfY291bnQ7CisJdW5zaWduZWQgbG9uZyBsZXZlbDNfZml4bWFwX3N0YXJ0OwogCXBn ZHZhbF90ICpwZ2Q7CiAJcDRkdmFsX3QgKnA0ZDsKIAlwdWR2YWxfdCAqcHVkOwpAQCAtODMsNiAr ODYsMTEgQEAgdW5zaWduZWQgbG9uZyBfX2hlYWQgbm90cmFjZSBfX3N0YXJ0dXBfNjQodW5zaWdu ZWQgbG9uZyBwaHlzYWRkciwKIAkvKiBJbmNsdWRlIHRoZSBTTUUgZW5jcnlwdGlvbiBtYXNrIGlu IHRoZSBmaXh1cCB2YWx1ZSAqLwogCWxvYWRfZGVsdGEgKz0gc21lX2dldF9tZV9tYXNrKCk7CiAK KwkvKiBMb29rIGF0IHRoZSByYW5kb21pemF0aW9uIHNwcmVhZCB0byBhZGFwdCBwYWdlIHRhYmxl IHVzZWQgKi8KKwlsZXZlbDNfa2VybmVsX3N0YXJ0ID0gcHVkX2luZGV4KF9fU1RBUlRfS0VSTkVM X21hcCk7CisJbGV2ZWwzX2tlcm5lbF9jb3VudCA9IHB1ZF9jb3VudChLRVJORUxfSU1BR0VfU0la RSk7CisJbGV2ZWwzX2ZpeG1hcF9zdGFydCA9IGxldmVsM19rZXJuZWxfc3RhcnQgKyBsZXZlbDNf a2VybmVsX2NvdW50OworCiAJLyogRml4dXAgdGhlIHBoeXNpY2FsIGFkZHJlc3NlcyBpbiB0aGUg cGFnZSB0YWJsZSAqLwogCiAJcGdkID0gZml4dXBfcG9pbnRlcigmZWFybHlfdG9wX3BndCwgcGh5 c2FkZHIpOwpAQCAtOTQsOCArMTAyLDkgQEAgdW5zaWduZWQgbG9uZyBfX2hlYWQgbm90cmFjZSBf X3N0YXJ0dXBfNjQodW5zaWduZWQgbG9uZyBwaHlzYWRkciwKIAl9CiAKIAlwdWQgPSBmaXh1cF9w b2ludGVyKCZsZXZlbDNfa2VybmVsX3BndCwgcGh5c2FkZHIpOwotCXB1ZFs1MTBdICs9IGxvYWRf ZGVsdGE7Ci0JcHVkWzUxMV0gKz0gbG9hZF9kZWx0YTsKKwlmb3IgKGkgPSAwOyBpIDwgbGV2ZWwz X2tlcm5lbF9jb3VudDsgaSsrKQorCQlwdWRbbGV2ZWwzX2tlcm5lbF9zdGFydCArIGldICs9IGxv YWRfZGVsdGE7CisJcHVkW2xldmVsM19maXhtYXBfc3RhcnRdICs9IGxvYWRfZGVsdGE7CiAKIAlw bWQgPSBmaXh1cF9wb2ludGVyKGxldmVsMl9maXhtYXBfcGd0LCBwaHlzYWRkcik7CiAJcG1kWzUw Nl0gKz0gbG9hZF9kZWx0YTsKQEAgLTE1MCw3ICsxNTksNyBAQCB1bnNpZ25lZCBsb25nIF9faGVh ZCBub3RyYWNlIF9fc3RhcnR1cF82NCh1bnNpZ25lZCBsb25nIHBoeXNhZGRyLAogCSAqLwogCiAJ cG1kID0gZml4dXBfcG9pbnRlcihsZXZlbDJfa2VybmVsX3BndCwgcGh5c2FkZHIpOwotCWZvciAo aSA9IDA7IGkgPCBQVFJTX1BFUl9QTUQ7IGkrKykgeworCWZvciAoaSA9IDA7IGkgPCBQVFJTX1BF Ul9QTUQgKiBsZXZlbDNfa2VybmVsX2NvdW50OyBpKyspIHsKIAkJaWYgKHBtZFtpXSAmIF9QQUdF X1BSRVNFTlQpCiAJCQlwbWRbaV0gKz0gbG9hZF9kZWx0YTsKIAl9CmRpZmYgLS1naXQgYS9hcmNo L3g4Ni9rZXJuZWwvaGVhZF82NC5TIGIvYXJjaC94ODYva2VybmVsL2hlYWRfNjQuUwppbmRleCBk ZjUxOThlMzEwZmMuLjc5MThmZmVmYzljOSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2hl YWRfNjQuUworKysgYi9hcmNoL3g4Ni9rZXJuZWwvaGVhZF82NC5TCkBAIC0zOSwxMSArMzksMTUg QEAKIAogI2RlZmluZSBwNGRfaW5kZXgoeCkJKCgoeCkgPj4gUDREX1NISUZUKSAmIChQVFJTX1BF Ul9QNEQtMSkpCiAjZGVmaW5lIHB1ZF9pbmRleCh4KQkoKCh4KSA+PiBQVURfU0hJRlQpICYgKFBU UlNfUEVSX1BVRC0xKSkKKyNkZWZpbmUgcHVkX2NvdW50KHgpICAgKCgoeCArIChQVURfU0laRSAt IDEpKSAmIH4oUFVEX1NJWkUgLSAxKSkgPj4gUFVEX1NISUZUKQogCiBQR0RfUEFHRV9PRkZTRVQg PSBwZ2RfaW5kZXgoX19QQUdFX09GRlNFVF9CQVNFKQogUEdEX1NUQVJUX0tFUk5FTCA9IHBnZF9p bmRleChfX1NUQVJUX0tFUk5FTF9tYXApCiBMM19TVEFSVF9LRVJORUwgPSBwdWRfaW5kZXgoX19T VEFSVF9LRVJORUxfbWFwKQogCisvKiBBZGFwdCBwYWdlIHRhYmxlIEwzIHNwYWNlIGJhc2VkIG9u IHJhbmdlIG9mIHJhbmRvbWl6YXRpb24gKi8KK0wzX0tFUk5FTF9FTlRSWV9DT1VOVCA9IHB1ZF9j b3VudChLRVJORUxfSU1BR0VfU0laRSkKKwogCS50ZXh0CiAJX19IRUFECiAJLmNvZGU2NApAQCAt NDEzLDcgKzQxNywxMiBAQCBORVhUX1BBR0UobGV2ZWw0X2tlcm5lbF9wZ3QpCiBORVhUX1BBR0Uo bGV2ZWwzX2tlcm5lbF9wZ3QpCiAJLmZpbGwJTDNfU1RBUlRfS0VSTkVMLDgsMAogCS8qICgyXjQ4 LSgyKjEwMjQqMTAyNCoxMDI0KS0oKDJeMzkpKjUxMSkpLygyXjMwKSA9IDUxMCAqLwotCS5xdWFk CWxldmVsMl9rZXJuZWxfcGd0IC0gX19TVEFSVF9LRVJORUxfbWFwICsgX0tFUk5QR19UQUJMRV9O T0VOQworCWkgPSAwCisJLnJlcHQJTDNfS0VSTkVMX0VOVFJZX0NPVU5UCisJLnF1YWQJbGV2ZWwy X2tlcm5lbF9wZ3QgLSBfX1NUQVJUX0tFUk5FTF9tYXAgKyBfS0VSTlBHX1RBQkxFX05PRU5DIFwK KwkJKyBQQUdFX1NJWkUqaQorCWkgPSBpICsgMQorCS5lbmRyCiAJLnF1YWQJbGV2ZWwyX2ZpeG1h cF9wZ3QgLSBfX1NUQVJUX0tFUk5FTF9tYXAgKyBfUEFHRV9UQUJMRV9OT0VOQwogCiBORVhUX1BB R0UobGV2ZWwyX2tlcm5lbF9wZ3QpCi0tIAoyLjE1LjAucmMwLjI3MS5nMzZiNjY5ZWRjYy1nb29n CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRl dmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhl bi5vcmcveGVuLWRldmVsCg==