From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH RFC v2 04/12] x86: revert 5784de3e2067ed73efc2fe42e62831e8ae7f46c4 Date: Mon, 22 Jan 2018 13:32:48 +0100 Message-ID: <20180122123256.1431-5-jgross@suse.com> References: <20180122123256.1431-1-jgross@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1edbJO-0000bo-FU for xen-devel@lists.xenproject.org; Mon, 22 Jan 2018 12:34:54 +0000 In-Reply-To: <20180122123256.1431-1-jgross@suse.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Juergen Gross , wei.liu2@citrix.com, George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, dfaggioli@suse.com, jbeulich@suse.com List-Id: xen-devel@lists.xenproject.org UmV2ZXJ0IHBhdGNoICJ4ODY6IE1lbHRkb3duIGJhbmQtYWlkIGFnYWluc3QgbWFsaWNpb3VzIDY0 LWJpdCBQVgpndWVzdHMiIGluIG9yZGVyIHRvIHByZXBhcmUgZm9yIGEgZmluYWwgTWVsdGRvd24g bWl0aWdhdGlvbi4KClNpZ25lZC1vZmYtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNv bT4KLS0tCiB4ZW4vYXJjaC94ODYvZG9tYWluLmMgICAgICAgICAgICAgIHwgICA1IC0KIHhlbi9h cmNoL3g4Ni9tbS5jICAgICAgICAgICAgICAgICAgfCAgMjEgLS0tLQogeGVuL2FyY2gveDg2L3Nt cGJvb3QuYyAgICAgICAgICAgICB8IDIwMCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiB4ZW4vYXJjaC94ODYveDg2XzY0L2FzbS1vZmZzZXRzLmMgIHwgICAyIC0KIHhlbi9h cmNoL3g4Ni94ODZfNjQvY29tcGF0L2VudHJ5LlMgfCAgMTEgLS0KIHhlbi9hcmNoL3g4Ni94ODZf NjQvZW50cnkuUyAgICAgICAgfCAxNDkgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB4ZW4v aW5jbHVkZS9hc20teDg2L2FzbV9kZWZucy5oICAgIHwgIDMwIC0tLS0tLQogeGVuL2luY2x1ZGUv YXNtLXg4Ni9jdXJyZW50LmggICAgICB8ICAxMiAtLS0KIHhlbi9pbmNsdWRlL2FzbS14ODYvcHJv Y2Vzc29yLmggICAgfCAgIDEgLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni94ODZfNjQvcGFnZS5oICB8 ICAgNSArLQogMTAgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA0MzAgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2RvbWFpbi5jIGIveGVuL2FyY2gveDg2L2Rv bWFpbi5jCmluZGV4IDg1ODlkODU2YmUuLmRhMWJmMWE5N2IgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNo L3g4Ni9kb21haW4uYworKysgYi94ZW4vYXJjaC94ODYvZG9tYWluLmMKQEAgLTE1MTEsOSArMTUx MSw2IEBAIHZvaWQgcGFyYXZpcnRfY3R4dF9zd2l0Y2hfdG8oc3RydWN0IHZjcHUgKnYpCiB7CiAg ICAgdW5zaWduZWQgbG9uZyBjcjQ7CiAKLSAgICB0aGlzX2NwdShyb290X3BndClbcm9vdF90YWJs ZV9vZmZzZXQoUEVSRE9NQUlOX1ZJUlRfU1RBUlQpXSA9Ci0gICAgICAgIGw0ZV9mcm9tX3BhZ2Uo di0+ZG9tYWluLT5hcmNoLnBlcmRvbWFpbl9sM19wZywgX19QQUdFX0hZUEVSVklTT1JfUlcpOwot CiAgICAgY3I0ID0gcHZfZ3Vlc3RfY3I0X3RvX3JlYWxfY3I0KHYpOwogICAgIGlmICggdW5saWtl bHkoY3I0ICE9IHJlYWRfY3I0KCkpICkKICAgICAgICAgd3JpdGVfY3I0KGNyNCk7CkBAIC0xNjg1 LDggKzE2ODIsNiBAQCB2b2lkIGNvbnRleHRfc3dpdGNoKHN0cnVjdCB2Y3B1ICpwcmV2LCBzdHJ1 Y3QgdmNwdSAqbmV4dCkKIAogICAgIEFTU0VSVChsb2NhbF9pcnFfaXNfZW5hYmxlZCgpKTsKIAot ICAgIGdldF9jcHVfaW5mbygpLT54ZW5fY3IzID0gMDsKLQogICAgIGNwdW1hc2tfY29weSgmZGly dHlfbWFzaywgbmV4dC0+dmNwdV9kaXJ0eV9jcHVtYXNrKTsKICAgICAvKiBBbGxvdyBhdCBtb3N0 IG9uZSBDUFUgYXQgYSB0aW1lIHRvIGJlIGRpcnR5LiAqLwogICAgIEFTU0VSVChjcHVtYXNrX3dl aWdodCgmZGlydHlfbWFzaykgPD0gMSk7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0uYyBi L3hlbi9hcmNoL3g4Ni9tbS5jCmluZGV4IGM4M2Y1MjI0YzEuLjc0Y2RiNmUxNGQgMTAwNjQ0Ci0t LSBhL3hlbi9hcmNoL3g4Ni9tbS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS5jCkBAIC0zNDg5LDcg KzM0ODksNiBAQCBsb25nIGRvX21tdV91cGRhdGUoCiAgICAgc3RydWN0IHZjcHUgKmN1cnIgPSBj dXJyZW50LCAqdiA9IGN1cnI7CiAgICAgc3RydWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFpbiwgKnB0 X293bmVyID0gZCwgKnBnX293bmVyOwogICAgIG1mbl90IG1hcF9tZm4gPSBJTlZBTElEX01GTjsK LSAgICBib29sIHN5bmNfZ3Vlc3QgPSBmYWxzZTsKICAgICB1aW50MzJfdCB4c21fbmVlZGVkID0g MDsKICAgICB1aW50MzJfdCB4c21fY2hlY2tlZCA9IDA7CiAgICAgaW50IHJjID0gcHV0X29sZF9n dWVzdF90YWJsZShjdXJyKTsKQEAgLTM2NTMsOCArMzY1Miw2IEBAIGxvbmcgZG9fbW11X3VwZGF0 ZSgKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBy YyA9IG1vZF9sNF9lbnRyeSh2YSwgbDRlX2Zyb21faW50cHRlKHJlcS52YWwpLCBtZm4sCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZCA9PSBNTVVfUFRfVVBEQVRFX1BS RVNFUlZFX0FELCB2KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCAhcmMgKQotICAgICAgICAg ICAgICAgICAgICAgICAgc3luY19ndWVzdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGJy ZWFrOwogCiAgICAgICAgICAgICAgICAgY2FzZSBQR1Rfd3JpdGFibGVfcGFnZToKQEAgLTM3NTks MjQgKzM3NTYsNiBAQCBsb25nIGRvX21tdV91cGRhdGUoCiAgICAgaWYgKCB2YSApCiAgICAgICAg IHVubWFwX2RvbWFpbl9wYWdlKHZhKTsKIAotICAgIGlmICggc3luY19ndWVzdCApCi0gICAgewot ICAgICAgICAvKgotICAgICAgICAgKiBGb3JjZSBvdGhlciB2Q1BVLXMgb2YgdGhlIGFmZmVjdGVk IGd1ZXN0IHRvIHBpY2sgdXAgTDQgZW50cnkKLSAgICAgICAgICogY2hhbmdlcyAoaWYgYW55KS4g SXNzdWUgYSBmbHVzaCBJUEkgd2l0aCBlbXB0eSBvcGVyYXRpb24gbWFzayB0bwotICAgICAgICAg KiBmYWNpbGl0YXRlIHRoaXMgKGluY2x1ZGluZyBvdXJzZWx2ZXMgd2FpdGluZyBmb3IgdGhlIElQ SSB0bwotICAgICAgICAgKiBhY3R1YWxseSBoYXZlIGFycml2ZWQpLiBVdGlsaXplIHRoZSBmYWN0 IHRoYXQgRkxVU0hfVkFfVkFMSUQgaXMKLSAgICAgICAgICogbWVhbmluZ2xlc3Mgd2l0aG91dCBG TFVTSF9DQUNIRSwgYnV0IHdpbGwgYWxsb3cgdG8gcGFzcyB0aGUgbm8tb3AKLSAgICAgICAgICog Y2hlY2sgaW4gZmx1c2hfYXJlYV9tYXNrKCkuCi0gICAgICAgICAqLwotICAgICAgICB1bnNpZ25l ZCBpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOwotICAgICAgICBjcHVtYXNrX3QgKm1hc2sg PSBwZXJfY3B1KHNjcmF0Y2hfY3B1bWFzaywgY3B1KTsKLQotICAgICAgICBjcHVtYXNrX2FuZG5v dChtYXNrLCBwdF9vd25lci0+ZG9tYWluX2RpcnR5X2NwdW1hc2ssIGNwdW1hc2tfb2YoY3B1KSk7 Ci0gICAgICAgIGlmICggIWNwdW1hc2tfZW1wdHkobWFzaykgKQotICAgICAgICAgICAgZmx1c2hf YXJlYV9tYXNrKG1hc2ssIFpFUk9fQkxPQ0tfUFRSLCBGTFVTSF9WQV9WQUxJRCk7Ci0gICAgfQot CiAgICAgcGVyZmNfYWRkKG51bV9wYWdlX3VwZGF0ZXMsIGkpOwogCiAgb3V0OgpkaWZmIC0tZ2l0 IGEveGVuL2FyY2gveDg2L3NtcGJvb3QuYyBiL3hlbi9hcmNoL3g4Ni9zbXBib290LmMKaW5kZXgg MzdhN2U1OTc2MC4uZWViYzRlODUyOCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3NtcGJvb3Qu YworKysgYi94ZW4vYXJjaC94ODYvc21wYm9vdC5jCkBAIC0zMjgsOSArMzI4LDYgQEAgdm9pZCBz dGFydF9zZWNvbmRhcnkodm9pZCAqdW51c2VkKQogICAgICAqLwogICAgIHNwaW5fZGVidWdfZGlz YWJsZSgpOwogCi0gICAgZ2V0X2NwdV9pbmZvKCktPnhlbl9jcjMgPSAwOwotICAgIGdldF9jcHVf aW5mbygpLT5wdl9jcjMgPSBfX3BhKHRoaXNfY3B1KHJvb3RfcGd0KSk7Ci0KICAgICBsb2FkX3N5 c3RlbV90YWJsZXMoKTsKIAogICAgIC8qIEZ1bGwgZXhjZXB0aW9uIHN1cHBvcnQgZnJvbSBoZXJl IG9uIGluLiAqLwpAQCAtNjQwLDE4NyArNjM3LDYgQEAgdm9pZCBjcHVfZXhpdF9jbGVhcih1bnNp Z25lZCBpbnQgY3B1KQogICAgIHNldF9jcHVfc3RhdGUoQ1BVX1NUQVRFX0RFQUQpOwogfQogCi1z dGF0aWMgaW50IGNsb25lX21hcHBpbmcoY29uc3Qgdm9pZCAqcHRyLCByb290X3BnZW50cnlfdCAq cnB0KQotewotICAgIHVuc2lnbmVkIGxvbmcgbGluZWFyID0gKHVuc2lnbmVkIGxvbmcpcHRyLCBw Zm47Ci0gICAgdW5zaWduZWQgaW50IGZsYWdzOwotICAgIGwzX3BnZW50cnlfdCAqcGwzZSA9IGw0 ZV90b19sM2UoaWRsZV9wZ190YWJsZVtyb290X3RhYmxlX29mZnNldChsaW5lYXIpXSkgKwotICAg ICAgICAgICAgICAgICAgICAgICAgIGwzX3RhYmxlX29mZnNldChsaW5lYXIpOwotICAgIGwyX3Bn ZW50cnlfdCAqcGwyZTsKLSAgICBsMV9wZ2VudHJ5X3QgKnBsMWU7Ci0KLSAgICBpZiAoIGxpbmVh ciA8IERJUkVDVE1BUF9WSVJUX1NUQVJUICkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBmbGFn cyA9IGwzZV9nZXRfZmxhZ3MoKnBsM2UpOwotICAgIEFTU0VSVChmbGFncyAmIF9QQUdFX1BSRVNF TlQpOwotICAgIGlmICggZmxhZ3MgJiBfUEFHRV9QU0UgKQotICAgIHsKLSAgICAgICAgcGZuID0g KGwzZV9nZXRfcGZuKCpwbDNlKSAmIH4oKDFVTCA8PCAoMiAqIFBBR0VUQUJMRV9PUkRFUikpIC0g MSkpIHwKLSAgICAgICAgICAgICAgKFBGTl9ET1dOKGxpbmVhcikgJiAoKDFVTCA8PCAoMiAqIFBB R0VUQUJMRV9PUkRFUikpIC0gMSkpOwotICAgICAgICBmbGFncyAmPSB+X1BBR0VfUFNFOwotICAg IH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBwbDJlID0gbDNlX3RvX2wyZSgqcGwzZSkgKyBs Ml90YWJsZV9vZmZzZXQobGluZWFyKTsKLSAgICAgICAgZmxhZ3MgPSBsMmVfZ2V0X2ZsYWdzKCpw bDJlKTsKLSAgICAgICAgQVNTRVJUKGZsYWdzICYgX1BBR0VfUFJFU0VOVCk7Ci0gICAgICAgIGlm ICggZmxhZ3MgJiBfUEFHRV9QU0UgKQotICAgICAgICB7Ci0gICAgICAgICAgICBwZm4gPSAobDJl X2dldF9wZm4oKnBsMmUpICYgfigoMVVMIDw8IFBBR0VUQUJMRV9PUkRFUikgLSAxKSkgfAotICAg ICAgICAgICAgICAgICAgKFBGTl9ET1dOKGxpbmVhcikgJiAoKDFVTCA8PCBQQUdFVEFCTEVfT1JE RVIpIC0gMSkpOwotICAgICAgICAgICAgZmxhZ3MgJj0gfl9QQUdFX1BTRTsKLSAgICAgICAgfQot ICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHBsMWUgPSBsMmVfdG9fbDFlKCpw bDJlKSArIGwxX3RhYmxlX29mZnNldChsaW5lYXIpOwotICAgICAgICAgICAgZmxhZ3MgPSBsMWVf Z2V0X2ZsYWdzKCpwbDFlKTsKLSAgICAgICAgICAgIGlmICggIShmbGFncyAmIF9QQUdFX1BSRVNF TlQpICkKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIHBmbiA9IGwxZV9n ZXRfcGZuKCpwbDFlKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICggIShyb290X2dldF9m bGFncyhycHRbcm9vdF90YWJsZV9vZmZzZXQobGluZWFyKV0pICYgX1BBR0VfUFJFU0VOVCkgKQot ICAgIHsKLSAgICAgICAgcGwzZSA9IGFsbG9jX3hlbl9wYWdldGFibGUoKTsKLSAgICAgICAgaWYg KCAhcGwzZSApCi0gICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKLSAgICAgICAgY2xlYXJfcGFn ZShwbDNlKTsKLSAgICAgICAgbDRlX3dyaXRlKCZycHRbcm9vdF90YWJsZV9vZmZzZXQobGluZWFy KV0sCi0gICAgICAgICAgICAgICAgICBsNGVfZnJvbV9wYWRkcihfX3BhKHBsM2UpLCBfX1BBR0Vf SFlQRVJWSVNPUikpOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHBsM2UgPSBsNGVfdG9fbDNl KHJwdFtyb290X3RhYmxlX29mZnNldChsaW5lYXIpXSk7Ci0KLSAgICBwbDNlICs9IGwzX3RhYmxl X29mZnNldChsaW5lYXIpOwotCi0gICAgaWYgKCAhKGwzZV9nZXRfZmxhZ3MoKnBsM2UpICYgX1BB R0VfUFJFU0VOVCkgKQotICAgIHsKLSAgICAgICAgcGwyZSA9IGFsbG9jX3hlbl9wYWdldGFibGUo KTsKLSAgICAgICAgaWYgKCAhcGwyZSApCi0gICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKLSAg ICAgICAgY2xlYXJfcGFnZShwbDJlKTsKLSAgICAgICAgbDNlX3dyaXRlKHBsM2UsIGwzZV9mcm9t X3BhZGRyKF9fcGEocGwyZSksIF9fUEFHRV9IWVBFUlZJU09SKSk7Ci0gICAgfQotICAgIGVsc2UK LSAgICB7Ci0gICAgICAgIEFTU0VSVCghKGwzZV9nZXRfZmxhZ3MoKnBsM2UpICYgX1BBR0VfUFNF KSk7Ci0gICAgICAgIHBsMmUgPSBsM2VfdG9fbDJlKCpwbDNlKTsKLSAgICB9Ci0KLSAgICBwbDJl ICs9IGwyX3RhYmxlX29mZnNldChsaW5lYXIpOwotCi0gICAgaWYgKCAhKGwyZV9nZXRfZmxhZ3Mo KnBsMmUpICYgX1BBR0VfUFJFU0VOVCkgKQotICAgIHsKLSAgICAgICAgcGwxZSA9IGFsbG9jX3hl bl9wYWdldGFibGUoKTsKLSAgICAgICAgaWYgKCAhcGwxZSApCi0gICAgICAgICAgICByZXR1cm4g LUVOT01FTTsKLSAgICAgICAgY2xlYXJfcGFnZShwbDFlKTsKLSAgICAgICAgbDJlX3dyaXRlKHBs MmUsIGwyZV9mcm9tX3BhZGRyKF9fcGEocGwxZSksIF9fUEFHRV9IWVBFUlZJU09SKSk7Ci0gICAg fQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghKGwyZV9nZXRfZmxhZ3MoKnBsMmUp ICYgX1BBR0VfUFNFKSk7Ci0gICAgICAgIHBsMWUgPSBsMmVfdG9fbDFlKCpwbDJlKTsKLSAgICB9 Ci0KLSAgICBwbDFlICs9IGwxX3RhYmxlX29mZnNldChsaW5lYXIpOwotCi0gICAgaWYgKCBsMWVf Z2V0X2ZsYWdzKCpwbDFlKSAmIF9QQUdFX1BSRVNFTlQgKQotICAgIHsKLSAgICAgICAgQVNTRVJU KGwxZV9nZXRfcGZuKCpwbDFlKSA9PSBwZm4pOwotICAgICAgICBBU1NFUlQobDFlX2dldF9mbGFn cygqcGwxZSkgPT0gZmxhZ3MpOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIGwxZV93cml0ZShw bDFlLCBsMWVfZnJvbV9wZm4ocGZuLCBmbGFncykpOwotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLURF RklORV9QRVJfQ1BVKHJvb3RfcGdlbnRyeV90ICosIHJvb3RfcGd0KTsKLQotc3RhdGljIGludCBz ZXR1cF9jcHVfcm9vdF9wZ3QodW5zaWduZWQgaW50IGNwdSkKLXsKLSAgICByb290X3BnZW50cnlf dCAqcnB0ID0gYWxsb2NfeGVuX3BhZ2V0YWJsZSgpOwotICAgIHVuc2lnbmVkIGludCBvZmY7Ci0g ICAgaW50IHJjOwotCi0gICAgaWYgKCAhcnB0ICkKLSAgICAgICAgcmV0dXJuIC1FTk9NRU07Ci0K LSAgICBjbGVhcl9wYWdlKHJwdCk7Ci0gICAgcGVyX2NwdShyb290X3BndCwgY3B1KSA9IHJwdDsK LQotICAgIHJwdFtyb290X3RhYmxlX29mZnNldChST19NUFRfVklSVF9TVEFSVCldID0KLSAgICAg ICAgaWRsZV9wZ190YWJsZVtyb290X3RhYmxlX29mZnNldChST19NUFRfVklSVF9TVEFSVCldOwot ICAgIC8qIFNIX0xJTkVBUl9QVCBpbnNlcnRlZCB0b2dldGhlciB3aXRoIGd1ZXN0IG1hcHBpbmdz LiAqLwotICAgIC8qIFBFUkRPTUFJTiBpbnNlcnRlZCBkdXJpbmcgY29udGV4dCBzd2l0Y2guICov Ci0gICAgcnB0W3Jvb3RfdGFibGVfb2Zmc2V0KFhFTl9WSVJUX1NUQVJUKV0gPQotICAgICAgICBp ZGxlX3BnX3RhYmxlW3Jvb3RfdGFibGVfb2Zmc2V0KFhFTl9WSVJUX1NUQVJUKV07Ci0KLSAgICAv KiBJbnN0YWxsIGRpcmVjdCBtYXAgcGFnZSB0YWJsZSBlbnRyaWVzIGZvciBzdGFjaywgSURULCBh bmQgVFNTLiAqLwotICAgIGZvciAoIG9mZiA9IHJjID0gMDsgIXJjICYmIG9mZiA8IFNUQUNLX1NJ WkU7IG9mZiArPSBQQUdFX1NJWkUgKQotICAgICAgICByYyA9IGNsb25lX21hcHBpbmcoX192YShf X3BhKHN0YWNrX2Jhc2VbY3B1XSkpICsgb2ZmLCBycHQpOwotCi0gICAgaWYgKCAhcmMgKQotICAg ICAgICByYyA9IGNsb25lX21hcHBpbmcoaWR0X3RhYmxlc1tjcHVdLCBycHQpOwotICAgIGlmICgg IXJjICkKLSAgICAgICAgcmMgPSBjbG9uZV9tYXBwaW5nKCZwZXJfY3B1KGluaXRfdHNzLCBjcHUp LCBycHQpOwotCi0gICAgcmV0dXJuIHJjOwotfQotCi1zdGF0aWMgdm9pZCBjbGVhbnVwX2NwdV9y b290X3BndCh1bnNpZ25lZCBpbnQgY3B1KQotewotICAgIHJvb3RfcGdlbnRyeV90ICpycHQgPSBw ZXJfY3B1KHJvb3RfcGd0LCBjcHUpOwotICAgIHVuc2lnbmVkIGludCByOwotCi0gICAgaWYgKCAh cnB0ICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcGVyX2NwdShyb290X3BndCwgY3B1KSA9IE5V TEw7Ci0KLSAgICBmb3IgKCByID0gcm9vdF90YWJsZV9vZmZzZXQoRElSRUNUTUFQX1ZJUlRfU1RB UlQpOwotICAgICAgICAgIHIgPCByb290X3RhYmxlX29mZnNldChIWVBFUlZJU09SX1ZJUlRfRU5E KTsgKytyICkKLSAgICB7Ci0gICAgICAgIGwzX3BnZW50cnlfdCAqbDN0OwotICAgICAgICB1bnNp Z25lZCBpbnQgaTM7Ci0KLSAgICAgICAgaWYgKCAhKHJvb3RfZ2V0X2ZsYWdzKHJwdFtyXSkgJiBf UEFHRV9QUkVTRU5UKSApCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBsM3QgPSBs NGVfdG9fbDNlKHJwdFtyXSk7Ci0KLSAgICAgICAgZm9yICggaTMgPSAwOyBpMyA8IEwzX1BBR0VU QUJMRV9FTlRSSUVTOyArK2kzICkKLSAgICAgICAgewotICAgICAgICAgICAgbDJfcGdlbnRyeV90 ICpsMnQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQgaTI7Ci0KLSAgICAgICAgICAgIGlmICgg IShsM2VfZ2V0X2ZsYWdzKGwzdFtpM10pICYgX1BBR0VfUFJFU0VOVCkgKQotICAgICAgICAgICAg ICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBBU1NFUlQoIShsM2VfZ2V0X2ZsYWdzKGwzdFtp M10pICYgX1BBR0VfUFNFKSk7Ci0gICAgICAgICAgICBsMnQgPSBsM2VfdG9fbDJlKGwzdFtpM10p OwotCi0gICAgICAgICAgICBmb3IgKCBpMiA9IDA7IGkyIDwgTDJfUEFHRVRBQkxFX0VOVFJJRVM7 ICsraTIgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICggIShsMmVfZ2V0X2Zs YWdzKGwydFtpMl0pICYgX1BBR0VfUFJFU0VOVCkgKQotICAgICAgICAgICAgICAgICAgICBjb250 aW51ZTsKLQotICAgICAgICAgICAgICAgIEFTU0VSVCghKGwyZV9nZXRfZmxhZ3MobDJ0W2kyXSkg JiBfUEFHRV9QU0UpKTsKLSAgICAgICAgICAgICAgICBmcmVlX3hlbl9wYWdldGFibGUobDJlX3Rv X2wxZShsMnRbaTJdKSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZyZWVfeGVuX3Bh Z2V0YWJsZShsMnQpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnJlZV94ZW5fcGFnZXRhYmxlKGwz dCk7Ci0gICAgfQotCi0gICAgZnJlZV94ZW5fcGFnZXRhYmxlKHJwdCk7Ci19Ci0KIHN0YXRpYyB2 b2lkIGNwdV9zbXBib290X2ZyZWUodW5zaWduZWQgaW50IGNwdSkKIHsKICAgICB1bnNpZ25lZCBp bnQgb3JkZXIsIHNvY2tldCA9IGNwdV90b19zb2NrZXQoY3B1KTsKQEAgLTg1OSw4ICs2NzUsNiBA QCBzdGF0aWMgdm9pZCBjcHVfc21wYm9vdF9mcmVlKHVuc2lnbmVkIGludCBjcHUpCiAgICAgICAg ICAgICBmcmVlX2RvbWhlYXBfcGFnZShtZm5fdG9fcGFnZShtZm4pKTsKICAgICB9CiAKLSAgICBj bGVhbnVwX2NwdV9yb290X3BndChjcHUpOwotCiAgICAgb3JkZXIgPSBnZXRfb3JkZXJfZnJvbV9w YWdlcyhOUl9SRVNFUlZFRF9HRFRfUEFHRVMpOwogICAgIGZyZWVfeGVuaGVhcF9wYWdlcyhwZXJf Y3B1KGdkdF90YWJsZSwgY3B1KSwgb3JkZXIpOwogCkBAIC05MTUsMTEgKzcyOSw2IEBAIHN0YXRp YyBpbnQgY3B1X3NtcGJvb3RfYWxsb2ModW5zaWduZWQgaW50IGNwdSkKICAgICBtZW1jcHkoaWR0 X3RhYmxlc1tjcHVdLCBpZHRfdGFibGUsIElEVF9FTlRSSUVTICogc2l6ZW9mKGlkdF9lbnRyeV90 KSk7CiAgICAgZGlzYWJsZV9lYWNoX2lzdChpZHRfdGFibGVzW2NwdV0pOwogCi0gICAgcmMgPSBz ZXR1cF9jcHVfcm9vdF9wZ3QoY3B1KTsKLSAgICBpZiAoIHJjICkKLSAgICAgICAgZ290byBvdXQ7 Ci0gICAgcmMgPSAtRU5PTUVNOwotCiAgICAgZm9yICggc3R1Yl9wYWdlID0gMCwgaSA9IGNwdSAm IH4oU1RVQlNfUEVSX1BBR0UgLSAxKTsKICAgICAgICAgICBpIDwgbnJfY3B1X2lkcyAmJiBpIDw9 IChjcHUgfCAoU1RVQlNfUEVSX1BBR0UgLSAxKSk7ICsraSApCiAgICAgICAgIGlmICggY3B1X29u bGluZShpKSAmJiBjcHVfdG9fbm9kZShpKSA9PSBub2RlICkKQEAgLTk3OSw4ICs3ODgsNiBAQCBz dGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGNwdV9zbXBib290X25mYiA9IHsKIAogdm9pZCBf X2luaXQgc21wX3ByZXBhcmVfY3B1cyh1bnNpZ25lZCBpbnQgbWF4X2NwdXMpCiB7Ci0gICAgaW50 IHJjOwotCiAgICAgcmVnaXN0ZXJfY3B1X25vdGlmaWVyKCZjcHVfc21wYm9vdF9uZmIpOwogCiAg ICAgbXRycl9hcHNfc3luY19iZWdpbigpOwpAQCAtOTk0LDExICs4MDEsNiBAQCB2b2lkIF9faW5p dCBzbXBfcHJlcGFyZV9jcHVzKHVuc2lnbmVkIGludCBtYXhfY3B1cykKIAogICAgIHN0YWNrX2Jh c2VbMF0gPSBzdGFja19zdGFydDsKIAotICAgIHJjID0gc2V0dXBfY3B1X3Jvb3RfcGd0KDApOwot ICAgIGlmICggcmMgKQotICAgICAgICBwYW5pYygiRXJyb3IgJWQgc2V0dGluZyB1cCBQViByb290 IHBhZ2UgdGFibGVcbiIsIHJjKTsKLSAgICBnZXRfY3B1X2luZm8oKS0+cHZfY3IzID0gX19wYShw ZXJfY3B1KHJvb3RfcGd0LCAwKSk7Ci0KICAgICBzZXRfbnJfc29ja2V0cygpOwogCiAgICAgc29j a2V0X2NwdW1hc2sgPSB4emFsbG9jX2FycmF5KGNwdW1hc2tfdCAqLCBucl9zb2NrZXRzKTsKQEAg LTEwNjcsOCArODY5LDYgQEAgdm9pZCBfX2luaXQgc21wX3ByZXBhcmVfYm9vdF9jcHUodm9pZCkK ICNpZiBOUl9DUFVTID4gMiAqIEJJVFNfUEVSX0xPTkcKICAgICBwZXJfY3B1KHNjcmF0Y2hfY3B1 bWFzaywgY3B1KSA9ICZzY3JhdGNoX2NwdTBtYXNrOwogI2VuZGlmCi0KLSAgICBnZXRfY3B1X2lu Zm8oKS0+eGVuX2NyMyA9IDA7CiB9CiAKIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS94ZW4vYXJj aC94ODYveDg2XzY0L2FzbS1vZmZzZXRzLmMgYi94ZW4vYXJjaC94ODYveDg2XzY0L2FzbS1vZmZz ZXRzLmMKaW5kZXggYjFhNDMxMDk3NC4uZTEzNmFmNmI5OSAxMDA2NDQKLS0tIGEveGVuL2FyY2gv eDg2L3g4Nl82NC9hc20tb2Zmc2V0cy5jCisrKyBiL3hlbi9hcmNoL3g4Ni94ODZfNjQvYXNtLW9m ZnNldHMuYwpAQCAtMTM3LDggKzEzNyw2IEBAIHZvaWQgX19kdW1teV9fKHZvaWQpCiAgICAgT0ZG U0VUKENQVUlORk9fcHJvY2Vzc29yX2lkLCBzdHJ1Y3QgY3B1X2luZm8sIHByb2Nlc3Nvcl9pZCk7 CiAgICAgT0ZGU0VUKENQVUlORk9fY3VycmVudF92Y3B1LCBzdHJ1Y3QgY3B1X2luZm8sIGN1cnJl bnRfdmNwdSk7CiAgICAgT0ZGU0VUKENQVUlORk9fY3I0LCBzdHJ1Y3QgY3B1X2luZm8sIGNyNCk7 Ci0gICAgT0ZGU0VUKENQVUlORk9feGVuX2NyMywgc3RydWN0IGNwdV9pbmZvLCB4ZW5fY3IzKTsK LSAgICBPRkZTRVQoQ1BVSU5GT19wdl9jcjMsIHN0cnVjdCBjcHVfaW5mbywgcHZfY3IzKTsKICAg ICBERUZJTkUoQ1BVSU5GT19zaXplb2YsIHNpemVvZihzdHJ1Y3QgY3B1X2luZm8pKTsKICAgICBC TEFOSygpOwogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveDg2XzY0L2NvbXBhdC9lbnRyeS5T IGIveGVuL2FyY2gveDg2L3g4Nl82NC9jb21wYXQvZW50cnkuUwppbmRleCBlNjY4ZjAwYzM2Li4z ZmVhNTRlZTlkIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYveDg2XzY0L2NvbXBhdC9lbnRyeS5T CisrKyBiL3hlbi9hcmNoL3g4Ni94ODZfNjQvY29tcGF0L2VudHJ5LlMKQEAgLTE5OSwxNyArMTk5 LDYgQEAgRU5UUlkoY3N0YXJfZW50ZXIpCiAgICAgICAgIHB1c2hxICQwCiAgICAgICAgIG1vdmwg ICRUUkFQX3N5c2NhbGwsIDQoJXJzcCkKICAgICAgICAgU0FWRV9BTEwKLQotICAgICAgICBHRVRf U1RBQ0tfRU5EKGJ4KQotICAgICAgICBtb3YgICBTVEFDS19DUFVJTkZPX0ZJRUxEKHhlbl9jcjMp KCVyYngpLCAlcmN4Ci0gICAgICAgIG5lZyAgICVyY3gKLSAgICAgICAganogICAgLkxjc3Rhcl9j cjNfb2theQotICAgICAgICBtb3YgICAlcmN4LCBTVEFDS19DUFVJTkZPX0ZJRUxEKHhlbl9jcjMp KCVyYngpCi0gICAgICAgIG5lZyAgICVyY3gKLSAgICAgICAgd3JpdGVfY3IzIHJjeCwgcmRpLCBy c2kKLSAgICAgICAgbW92cSAgJDAsIFNUQUNLX0NQVUlORk9fRklFTEQoeGVuX2NyMykoJXJieCkK LS5MY3N0YXJfY3IzX29rYXk6Ci0KICAgICAgICAgR0VUX0NVUlJFTlQoYngpCiAgICAgICAgIG1v dnEgIFZDUFVfZG9tYWluKCVyYngpLCVyY3gKICAgICAgICAgY21wYiAgJDAsRE9NQUlOX2lzXzMy Yml0X3B2KCVyY3gpCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveDg2XzY0L2VudHJ5LlMgYi94 ZW4vYXJjaC94ODYveDg2XzY0L2VudHJ5LlMKaW5kZXggZjc1M2ViNGMwMi4uY2JkNzNmNmMyMiAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl82NC9lbnRyeS5TCisrKyBiL3hlbi9hcmNoL3g4 Ni94ODZfNjQvZW50cnkuUwpAQCAtMzcsMzIgKzM3LDYgQEAgRU5UUlkoc3dpdGNoX3RvX2tlcm5l bCkKIC8qICVyYng6IHN0cnVjdCB2Y3B1LCBpbnRlcnJ1cHRzIGRpc2FibGVkICovCiByZXN0b3Jl X2FsbF9ndWVzdDoKICAgICAgICAgQVNTRVJUX0lOVEVSUlVQVFNfRElTQUJMRUQKLQotICAgICAg ICAvKiBDb3B5IGd1ZXN0IG1hcHBpbmdzIGFuZCBzd2l0Y2ggdG8gcGVyLUNQVSByb290IHBhZ2Ug dGFibGUuICovCi0gICAgICAgIG1vdiAgICVjcjMsICVyOQotICAgICAgICBHRVRfU1RBQ0tfRU5E KGR4KQotICAgICAgICBtb3YgICBTVEFDS19DUFVJTkZPX0ZJRUxEKHB2X2NyMykoJXJkeCksICVy ZGkKLSAgICAgICAgbW92YWJzICRQQUREUl9NQVNLICYgUEFHRV9NQVNLLCAlcnNpCi0gICAgICAg IG1vdmFicyAkRElSRUNUTUFQX1ZJUlRfU1RBUlQsICVyY3gKLSAgICAgICAgbW92ICAgJXJkaSwg JXJheAotICAgICAgICBhbmQgICAlcnNpLCAlcmRpCi0gICAgICAgIGFuZCAgICVyOSwgJXJzaQot ICAgICAgICBhZGQgICAlcmN4LCAlcmRpCi0gICAgICAgIGFkZCAgICVyY3gsICVyc2kKLSAgICAg ICAgbW92ICAgJFJPT1RfUEFHRVRBQkxFX0ZJUlNUX1hFTl9TTE9ULCAlZWN4Ci0gICAgICAgIG1v diAgIHJvb3RfdGFibGVfb2Zmc2V0KFNIX0xJTkVBUl9QVF9WSVJUX1NUQVJUKSo4KCVyc2kpLCAl cjgKLSAgICAgICAgbW92ICAgJXI4LCByb290X3RhYmxlX29mZnNldChTSF9MSU5FQVJfUFRfVklS VF9TVEFSVCkqOCglcmRpKQotICAgICAgICByZXAgbW92c3EKLSAgICAgICAgbW92ICAgJFJPT1Rf UEFHRVRBQkxFX0VOVFJJRVMgLSBcCi0gICAgICAgICAgICAgICBST09UX1BBR0VUQUJMRV9MQVNU X1hFTl9TTE9UIC0gMSwgJWVjeAotICAgICAgICBzdWIgICAkKFJPT1RfUEFHRVRBQkxFX0ZJUlNU X1hFTl9TTE9UIC0gXAotICAgICAgICAgICAgICAgIFJPT1RfUEFHRVRBQkxFX0xBU1RfWEVOX1NM T1QgLSAxKSAqIDgsICVyc2kKLSAgICAgICAgc3ViICAgJChST09UX1BBR0VUQUJMRV9GSVJTVF9Y RU5fU0xPVCAtIFwKLSAgICAgICAgICAgICAgICBST09UX1BBR0VUQUJMRV9MQVNUX1hFTl9TTE9U IC0gMSkgKiA4LCAlcmRpCi0gICAgICAgIHJlcCBtb3ZzcQotICAgICAgICBtb3YgICAlcjksIFNU QUNLX0NQVUlORk9fRklFTEQoeGVuX2NyMykoJXJkeCkKLSAgICAgICAgd3JpdGVfY3IzIHJheCwg cmRpLCByc2kKLQogICAgICAgICBSRVNUT1JFX0FMTAogICAgICAgICB0ZXN0dyAkVFJBUF9zeXNj YWxsLDQoJXJzcCkKICAgICAgICAganogICAgaXJldF9leGl0X3RvX2d1ZXN0CkBAIC05NywyMiAr NzEsNiBAQCBpcmV0X2V4aXRfdG9fZ3Vlc3Q6CiAgICAgICAgIEFMSUdOCiAvKiBObyBzcGVjaWFs IHJlZ2lzdGVyIGFzc3VtcHRpb25zLiAqLwogcmVzdG9yZV9hbGxfeGVuOgotICAgICAgICAvKgot ICAgICAgICAgKiBDaGVjayB3aGV0aGVyIHdlIG5lZWQgdG8gc3dpdGNoIHRvIHRoZSBwZXItQ1BV IHBhZ2UgdGFibGVzLCBpbgotICAgICAgICAgKiBjYXNlIHdlIHJldHVybiB0byBsYXRlIFBWIGV4 aXQgY29kZSAoZnJvbSBhbiBOTUkgb3IgI01DKS4KLSAgICAgICAgICovCi0gICAgICAgIEdFVF9T VEFDS19FTkQoYXgpCi0gICAgICAgIG1vdiAgIFNUQUNLX0NQVUlORk9fRklFTEQoeGVuX2NyMyko JXJheCksICVyZHgKLSAgICAgICAgbW92ICAgU1RBQ0tfQ1BVSU5GT19GSUVMRChwdl9jcjMpKCVy YXgpLCAlcmF4Ci0gICAgICAgIHRlc3QgICVyZHgsICVyZHgKLSAgICAgICAgLyoKLSAgICAgICAg ICogSWRlYWxseSB0aGUgY29uZGl0aW9uIHdvdWxkIGJlICJuc3oiLCBidXQgc3VjaCBkb2Vzbid0 IGV4aXN0LAotICAgICAgICAgKiBzbyAiZyIgd2lsbCBoYXZlIHRvIGRvLgotICAgICAgICAgKi8K LVVOTElLRUxZX1NUQVJUKGcsIGV4aXRfY3IzKQotICAgICAgICB3cml0ZV9jcjMgcmF4LCByZGks IHJzaQotVU5MSUtFTFlfRU5EKGV4aXRfY3IzKQotCiAgICAgICAgIFJFU1RPUkVfQUxMIGFkaj04 CiAgICAgICAgIGlyZXRxCiAKQEAgLTE0MiwxOCArMTAwLDcgQEAgRU5UUlkobHN0YXJfZW50ZXIp CiAgICAgICAgIHB1c2hxICQwCiAgICAgICAgIG1vdmwgICRUUkFQX3N5c2NhbGwsIDQoJXJzcCkK ICAgICAgICAgU0FWRV9BTEwKLQotICAgICAgICBHRVRfU1RBQ0tfRU5EKGJ4KQotICAgICAgICBt b3YgICBTVEFDS19DUFVJTkZPX0ZJRUxEKHhlbl9jcjMpKCVyYngpLCAlcmN4Ci0gICAgICAgIG5l ZyAgICVyY3gKLSAgICAgICAganogICAgLkxsc3Rhcl9jcjNfb2theQotICAgICAgICBtb3YgICAl cmN4LCBTVEFDS19DUFVJTkZPX0ZJRUxEKHhlbl9jcjMpKCVyYngpCi0gICAgICAgIG5lZyAgICVy Y3gKLSAgICAgICAgd3JpdGVfY3IzIHJjeCwgcmRpLCByc2kKLSAgICAgICAgbW92cSAgJDAsIFNU QUNLX0NQVUlORk9fRklFTEQoeGVuX2NyMykoJXJieCkKLS5MbHN0YXJfY3IzX29rYXk6Ci0KLSAg ICAgICAgX19HRVRfQ1VSUkVOVChieCkKKyAgICAgICAgR0VUX0NVUlJFTlQoYngpCiAgICAgICAg IHRlc3RiICRURl9rZXJuZWxfbW9kZSxWQ1BVX3RocmVhZF9mbGFncyglcmJ4KQogICAgICAgICBq eiAgICBzd2l0Y2hfdG9fa2VybmVsCiAKQEAgLTI0NSwxOCArMTkyLDcgQEAgR0xPQkFMKHN5c2Vu dGVyX2VmbGFnc19zYXZlZCkKICAgICAgICAgcHVzaHEgJDAKICAgICAgICAgbW92bCAgJFRSQVBf c3lzY2FsbCwgNCglcnNwKQogICAgICAgICBTQVZFX0FMTAotCi0gICAgICAgIEdFVF9TVEFDS19F TkQoYngpCi0gICAgICAgIG1vdiAgIFNUQUNLX0NQVUlORk9fRklFTEQoeGVuX2NyMykoJXJieCks ICVyY3gKLSAgICAgICAgbmVnICAgJXJjeAotICAgICAgICBqeiAgICAuTHN5c2VfY3IzX29rYXkK LSAgICAgICAgbW92ICAgJXJjeCwgU1RBQ0tfQ1BVSU5GT19GSUVMRCh4ZW5fY3IzKSglcmJ4KQot ICAgICAgICBuZWcgICAlcmN4Ci0gICAgICAgIHdyaXRlX2NyMyByY3gsIHJkaSwgcnNpCi0gICAg ICAgIG1vdnEgICQwLCBTVEFDS19DUFVJTkZPX0ZJRUxEKHhlbl9jcjMpKCVyYngpCi0uTHN5c2Vf Y3IzX29rYXk6Ci0KLSAgICAgICAgX19HRVRfQ1VSUkVOVChieCkKKyAgICAgICAgR0VUX0NVUlJF TlQoYngpCiAgICAgICAgIGNtcGIgICQwLFZDUFVfc3lzZW50ZXJfZGlzYWJsZXNfZXZlbnRzKCVy YngpCiAgICAgICAgIG1vdnEgIFZDUFVfc3lzZW50ZXJfYWRkciglcmJ4KSwlcmF4CiAgICAgICAg IHNldG5lICVjbApAQCAtMjkyLDIzICsyMjgsMTMgQEAgRU5UUlkoaW50ODBfZGlyZWN0X3RyYXAp CiAgICAgICAgIG1vdmwgICQweDgwLCA0KCVyc3ApCiAgICAgICAgIFNBVkVfQUxMCiAKLSAgICAg ICAgR0VUX1NUQUNLX0VORChieCkKLSAgICAgICAgbW92ICAgU1RBQ0tfQ1BVSU5GT19GSUVMRCh4 ZW5fY3IzKSglcmJ4KSwgJXJjeAotICAgICAgICBuZWcgICAlcmN4Ci0gICAgICAgIGp6ICAgIC5M aW50ODBfY3IzX29rYXkKLSAgICAgICAgbW92ICAgJXJjeCwgU1RBQ0tfQ1BVSU5GT19GSUVMRCh4 ZW5fY3IzKSglcmJ4KQotICAgICAgICBuZWcgICAlcmN4Ci0gICAgICAgIHdyaXRlX2NyMyByY3gs IHJkaSwgcnNpCi0gICAgICAgIG1vdnEgICQwLCBTVEFDS19DUFVJTkZPX0ZJRUxEKHhlbl9jcjMp KCVyYngpCi0uTGludDgwX2NyM19va2F5OgotCiAgICAgICAgIGNtcGIgICQwLHVudHJ1c3RlZF9t c2koJXJpcCkKIFVOTElLRUxZX1NUQVJUKG5lLCBtc2lfY2hlY2spCiAgICAgICAgIG1vdmwgICQw eDgwLCVlZGkKICAgICAgICAgY2FsbCAgY2hlY2tfZm9yX3VuZXhwZWN0ZWRfbXNpCiBVTkxJS0VM WV9FTkQobXNpX2NoZWNrKQogCi0gICAgICAgIF9fR0VUX0NVUlJFTlQoYngpCisgICAgICAgIEdF VF9DVVJSRU5UKGJ4KQogCiAgICAgICAgIC8qIENoZWNrIHRoYXQgdGhlIGNhbGxiYWNrIGlzIG5v bi1udWxsLiAqLwogICAgICAgICBsZWFxICBWQ1BVX2ludDgwX2JvdW5jZSglcmJ4KSwlcmR4CkBA IC00NjUsMjcgKzM5MSw5IEBAIEVOVFJZKGRvbV9jcmFzaF9zeW5jX2V4dGFibGUpCiAKIEVOVFJZ KGNvbW1vbl9pbnRlcnJ1cHQpCiAgICAgICAgIFNBVkVfQUxMIENMQUMKLQotICAgICAgICBHRVRf U1RBQ0tfRU5EKDE0KQotICAgICAgICBtb3YgICBTVEFDS19DUFVJTkZPX0ZJRUxEKHhlbl9jcjMp KCVyMTQpLCAlcmN4Ci0gICAgICAgIG1vdiAgICVyY3gsICVyMTUKLSAgICAgICAgbmVnICAgJXJj eAotICAgICAgICBqeiAgICAuTGludHJfY3IzX29rYXkKLSAgICAgICAgam5zICAgLkxpbnRyX2Ny M19sb2FkCi0gICAgICAgIG1vdiAgICVyY3gsIFNUQUNLX0NQVUlORk9fRklFTEQoeGVuX2NyMyko JXIxNCkKLSAgICAgICAgbmVnICAgJXJjeAotLkxpbnRyX2NyM19sb2FkOgotICAgICAgICB3cml0 ZV9jcjMgcmN4LCByZGksIHJzaQotICAgICAgICB4b3IgICAlZWN4LCAlZWN4Ci0gICAgICAgIG1v diAgICVyY3gsIFNUQUNLX0NQVUlORk9fRklFTEQoeGVuX2NyMykoJXIxNCkKLSAgICAgICAgdGVz dGIgJDMsIFVSRUdTX2NzKCVyc3ApCi0gICAgICAgIGNtb3ZueiAlcmN4LCAlcjE1Ci0uTGludHJf Y3IzX29rYXk6Ci0KICAgICAgICAgQ1I0X1BWMzJfUkVTVE9SRQogICAgICAgICBtb3ZxICVyc3As JXJkaQogICAgICAgICBjYWxscSBkb19JUlEKLSAgICAgICAgbW92ICAgJXIxNSwgU1RBQ0tfQ1BV SU5GT19GSUVMRCh4ZW5fY3IzKSglcjE0KQogICAgICAgICBqbXAgcmV0X2Zyb21faW50cgogCiAv KiBObyBzcGVjaWFsIHJlZ2lzdGVyIGFzc3VtcHRpb25zLiAqLwpAQCAtNTAzLDIzICs0MTEsNiBA QCBFTlRSWShwYWdlX2ZhdWx0KQogLyogTm8gc3BlY2lhbCByZWdpc3RlciBhc3N1bXB0aW9ucy4g Ki8KIEdMT0JBTChoYW5kbGVfZXhjZXB0aW9uKQogICAgICAgICBTQVZFX0FMTCBDTEFDCi0KLSAg ICAgICAgR0VUX1NUQUNLX0VORCgxNCkKLSAgICAgICAgbW92ICAgU1RBQ0tfQ1BVSU5GT19GSUVM RCh4ZW5fY3IzKSglcjE0KSwgJXJjeAotICAgICAgICBtb3YgICAlcmN4LCAlcjE1Ci0gICAgICAg IG5lZyAgICVyY3gKLSAgICAgICAganogICAgLkx4Y3B0X2NyM19va2F5Ci0gICAgICAgIGpucyAg IC5MeGNwdF9jcjNfbG9hZAotICAgICAgICBtb3YgICAlcmN4LCBTVEFDS19DUFVJTkZPX0ZJRUxE KHhlbl9jcjMpKCVyMTQpCi0gICAgICAgIG5lZyAgICVyY3gKLS5MeGNwdF9jcjNfbG9hZDoKLSAg ICAgICAgd3JpdGVfY3IzIHJjeCwgcmRpLCByc2kKLSAgICAgICAgeG9yICAgJWVjeCwgJWVjeAot ICAgICAgICBtb3YgICAlcmN4LCBTVEFDS19DUFVJTkZPX0ZJRUxEKHhlbl9jcjMpKCVyMTQpCi0g ICAgICAgIHRlc3RiICQzLCBVUkVHU19jcyglcnNwKQotICAgICAgICBjbW92bnogJXJjeCwgJXIx NQotLkx4Y3B0X2NyM19va2F5OgotCiBoYW5kbGVfZXhjZXB0aW9uX3NhdmVkOgogICAgICAgICBH RVRfQ1VSUkVOVChieCkKICAgICAgICAgdGVzdGIgJFg4Nl9FRkxBR1NfSUY+PjgsVVJFR1NfZWZs YWdzKzEoJXJzcCkKQEAgLTU4NSw3ICs0NzYsNiBAQCBoYW5kbGVfZXhjZXB0aW9uX3NhdmVkOgog ICAgICAgICBQRVJGQ19JTkNSKGV4Y2VwdGlvbnMsICVyYXgsICVyYngpCiAgICAgICAgIG1vdiAg ICglcmR4LCAlcmF4LCA4KSwgJXJkeAogICAgICAgICBJTkRJUkVDVF9DQUxMICVyZHgKLSAgICAg ICAgbW92ICAgJXIxNSwgU1RBQ0tfQ1BVSU5GT19GSUVMRCh4ZW5fY3IzKSglcjE0KQogICAgICAg ICB0ZXN0YiAkMyxVUkVHU19jcyglcnNwKQogICAgICAgICBqeiAgICByZXN0b3JlX2FsbF94ZW4K ICAgICAgICAgbGVhcSAgVkNQVV90cmFwX2JvdW5jZSglcmJ4KSwlcmR4CkBAIC02MTgsNyArNTA4 LDYgQEAgZXhjZXB0aW9uX3dpdGhfaW50c19kaXNhYmxlZDoKICAgICAgICAgcmVwOyAgbW92c3Eg ICAgICAgICAgICAgICAgICAgICAjIG1ha2Ugcm9vbSBmb3IgZWMvZXYKIDE6ICAgICAgbW92cSAg VVJFR1NfZXJyb3JfY29kZSglcnNwKSwlcmF4ICMgZWMvZXYKICAgICAgICAgbW92cSAgJXJheCxV UkVHU19rZXJuZWxfc2l6ZW9mKCVyc3ApCi0gICAgICAgIG1vdiAgICVyMTUsIFNUQUNLX0NQVUlO Rk9fRklFTEQoeGVuX2NyMykoJXIxNCkKICAgICAgICAgam1wICAgcmVzdG9yZV9hbGxfeGVuICAg ICAgICAgICAjIHJldHVybiB0byBmaXh1cCBjb2RlCiAKIC8qIE5vIHNwZWNpYWwgcmVnaXN0ZXIg YXNzdW1wdGlvbnMuICovCkBAIC02OTcsMTcgKzU4Niw2IEBAIEVOVFJZKGRvdWJsZV9mYXVsdCkK ICAgICAgICAgbW92bCAgJFRSQVBfZG91YmxlX2ZhdWx0LDQoJXJzcCkKICAgICAgICAgLyogU2V0 IEFDIHRvIHJlZHVjZSBjaGFuY2Ugb2YgZnVydGhlciBTTUFQIGZhdWx0cyAqLwogICAgICAgICBT QVZFX0FMTCBTVEFDCi0KLSAgICAgICAgR0VUX1NUQUNLX0VORChieCkKLSAgICAgICAgbW92ICAg U1RBQ0tfQ1BVSU5GT19GSUVMRCh4ZW5fY3IzKSglcmJ4KSwgJXJieAotICAgICAgICB0ZXN0ICAl cmJ4LCAlcmJ4Ci0gICAgICAgIGp6ICAgIC5MZGJsZl9jcjNfb2theQotICAgICAgICBqbnMgICAu TGRibGZfY3IzX2xvYWQKLSAgICAgICAgbmVnICAgJXJieAotLkxkYmxmX2NyM19sb2FkOgotICAg ICAgICB3cml0ZV9jcjMgcmJ4LCByZGksIHJzaQotLkxkYmxmX2NyM19va2F5OgotCiAgICAgICAg IG1vdnEgICVyc3AsJXJkaQogICAgICAgICBjYWxsICBkb19kb3VibGVfZmF1bHQKICAgICAgICAg QlVHICAgLyogZG9fZG91YmxlX2ZhdWx0KCkgc2hvdWxkbid0IHJldHVybi4gKi8KQEAgLTcyNiwy OCArNjA0LDEwIEBAIEVOVFJZKG5taSkKICAgICAgICAgbW92bCAgJFRSQVBfbm1pLDQoJXJzcCkK IGhhbmRsZV9pc3RfZXhjZXB0aW9uOgogICAgICAgICBTQVZFX0FMTCBDTEFDCi0KLSAgICAgICAg R0VUX1NUQUNLX0VORCgxNCkKLSAgICAgICAgbW92ICAgU1RBQ0tfQ1BVSU5GT19GSUVMRCh4ZW5f Y3IzKSglcjE0KSwgJXJjeAotICAgICAgICBtb3YgICAlcmN4LCAlcjE1Ci0gICAgICAgIG5lZyAg ICVyY3gKLSAgICAgICAganogICAgLkxpc3RfY3IzX29rYXkKLSAgICAgICAgam5zICAgLkxpc3Rf Y3IzX2xvYWQKLSAgICAgICAgbW92ICAgJXJjeCwgU1RBQ0tfQ1BVSU5GT19GSUVMRCh4ZW5fY3Iz KSglcjE0KQotICAgICAgICBuZWcgICAlcmN4Ci0uTGlzdF9jcjNfbG9hZDoKLSAgICAgICAgd3Jp dGVfY3IzIHJjeCwgcmRpLCByc2kKLSAgICAgICAgbW92cSAgJDAsIFNUQUNLX0NQVUlORk9fRklF TEQoeGVuX2NyMykoJXIxNCkKLS5MaXN0X2NyM19va2F5OgotCiAgICAgICAgIENSNF9QVjMyX1JF U1RPUkUKICAgICAgICAgdGVzdGIgJDMsVVJFR1NfY3MoJXJzcCkKICAgICAgICAganogICAgMWYK LSAgICAgICAgLyoKLSAgICAgICAgICogSW50ZXJydXB0ZWQgZ3Vlc3QgY29udGV4dC4gQ2xlYXIg dGhlIHJlc3RvcmUgdmFsdWUgZm9yIHhlbl9jcjMKLSAgICAgICAgICogYW5kIGNvcHkgdGhlIGNv bnRleHQgdG8gc3RhY2sgYm90dG9tLgotICAgICAgICAgKi8KLSAgICAgICAgeG9yICAgJXIxNSwg JXIxNQorICAgICAgICAvKiBJbnRlcnJ1cHRlZCBndWVzdCBjb250ZXh0LiBDb3B5IHRoZSBjb250 ZXh0IHRvIHN0YWNrIGJvdHRvbS4gKi8KICAgICAgICAgR0VUX0NQVUlORk9fRklFTEQoZ3Vlc3Rf Y3B1X3VzZXJfcmVncyxkaSkKICAgICAgICAgbW92cSAgJXJzcCwlcnNpCiAgICAgICAgIG1vdmwg ICRVUkVHU19rZXJuZWxfc2l6ZW9mLzgsJWVjeApAQCAtNzU4LDcgKzYxOCw2IEBAIGhhbmRsZV9p c3RfZXhjZXB0aW9uOgogICAgICAgICBsZWFxICBleGNlcHRpb25fdGFibGUoJXJpcCksJXJkeAog ICAgICAgICBtb3YgICAoJXJkeCwgJXJheCwgOCksICVyZHgKICAgICAgICAgSU5ESVJFQ1RfQ0FM TCAlcmR4Ci0gICAgICAgIG1vdiAgICVyMTUsIFNUQUNLX0NQVUlORk9fRklFTEQoeGVuX2NyMyko JXIxNCkKICAgICAgICAgY21wYiAgJFRSQVBfbm1pLFVSRUdTX2VudHJ5X3ZlY3RvciglcnNwKQog ICAgICAgICBqbmUgICByZXRfZnJvbV9pbnRyCiAKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2Fz bS14ODYvYXNtX2RlZm5zLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2FzbV9kZWZucy5oCmluZGV4 IGQyZDkxY2ExZmEuLmFlOWZlZjc0NTAgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYv YXNtX2RlZm5zLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9hc21fZGVmbnMuaApAQCAtMTAx LDMwICsxMDEsOSBAQCB2b2lkIHJldF9mcm9tX2ludHIodm9pZCk7CiAgICAgICAgIFVOTElLRUxZ X0RPTkUobXAsIHRhZyk7ICAgXAogICAgICAgICBfX1VOTElLRUxZX0VORCh0YWcpCiAKLSAgICAg ICAgLmVxdSAuTHJheCwgMAotICAgICAgICAuZXF1IC5McmN4LCAxCi0gICAgICAgIC5lcXUgLkxy ZHgsIDIKLSAgICAgICAgLmVxdSAuTHJieCwgMwotICAgICAgICAuZXF1IC5McnNwLCA0Ci0gICAg ICAgIC5lcXUgLkxyYnAsIDUKLSAgICAgICAgLmVxdSAuTHJzaSwgNgotICAgICAgICAuZXF1IC5M cmRpLCA3Ci0gICAgICAgIC5lcXUgLkxyOCwgIDgKLSAgICAgICAgLmVxdSAuTHI5LCAgOQotICAg ICAgICAuZXF1IC5McjEwLCAxMAotICAgICAgICAuZXF1IC5McjExLCAxMQotICAgICAgICAuZXF1 IC5McjEyLCAxMgotICAgICAgICAuZXF1IC5McjEzLCAxMwotICAgICAgICAuZXF1IC5McjE0LCAx NAotICAgICAgICAuZXF1IC5McjE1LCAxNQotCiAjZGVmaW5lIFNUQUNLX0NQVUlORk9fRklFTEQo ZmllbGQpICgxIC0gQ1BVSU5GT19zaXplb2YgKyBDUFVJTkZPXyMjZmllbGQpCiAjZGVmaW5lIEdF VF9TVEFDS19FTkQocmVnKSAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgLmlmIC5M ciMjcmVnID4gODsgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBtb3ZxICRTVEFD S19TSVpFLTEsICVyIyNyZWc7ICAgICAgICAgICAgICBcCi0gICAgICAgIC5lbHNlOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgbW92bCAkU1RBQ0tfU0laRS0x LCAlZSMjcmVnOyAgICAgICAgICAgICAgXAotICAgICAgICAuZW5kaWY7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIG9ycSAgJXJzcCwgJXIjI3JlZwogCiAjZGVm aW5lIEdFVF9DUFVJTkZPX0ZJRUxEKGZpZWxkLCByZWcpICAgICAgICAgICAgIFwKQEAgLTIwNiwx NSArMTg1LDYgQEAgdm9pZCByZXRfZnJvbV9pbnRyKHZvaWQpOwogI2RlZmluZSBBU01fU1RBQyBB U01fQUMoU1RBQykKICNkZWZpbmUgQVNNX0NMQUMgQVNNX0FDKENMQUMpCiAKLS5tYWNybyB3cml0 ZV9jcjMgdmFsOnJlcSwgdG1wMTpyZXEsIHRtcDI6cmVxCi0gICAgICAgIG1vdiAgICVjcjQsICVc dG1wMQotICAgICAgICBtb3YgICAlXHRtcDEsICVcdG1wMgotICAgICAgICBhbmQgICAkflg4Nl9D UjRfUEdFLCAlXHRtcDEKLSAgICAgICAgbW92ICAgJVx0bXAxLCAlY3I0Ci0gICAgICAgIG1vdiAg ICVcdmFsLCAlY3IzCi0gICAgICAgIG1vdiAgICVcdG1wMiwgJWNyNAotLmVuZG0KLQogI2RlZmlu ZSBDUjRfUFYzMl9SRVNUT1JFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKICAgICAgICAgNjY3OiBBU01fTk9QNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCiAgICAgICAgIC5wdXNoc2VjdGlvbiAuYWx0aW5zdHJfcmVwbGFj ZW1lbnQsICJheCI7ICAgICAgICAgICAgICAgICAgXApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUv YXNtLXg4Ni9jdXJyZW50LmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2N1cnJlbnQuaAppbmRleCBi OTI5YzQ4Yzg1Li44OTg0OTkyOWViIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2N1 cnJlbnQuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2N1cnJlbnQuaApAQCAtNDEsMTggKzQx LDYgQEAgc3RydWN0IGNwdV9pbmZvIHsKICAgICBzdHJ1Y3QgdmNwdSAqY3VycmVudF92Y3B1Owog ICAgIHVuc2lnbmVkIGxvbmcgcGVyX2NwdV9vZmZzZXQ7CiAgICAgdW5zaWduZWQgbG9uZyBjcjQ7 Ci0gICAgLyoKLSAgICAgKiBPZiB0aGUgdHdvIGZvbGxvd2luZyBmaWVsZHMgdGhlIGxhdHRlciBp cyBiZWluZyBzZXQgdG8gdGhlIENSMyB2YWx1ZQotICAgICAqIHRvIGJlIHVzZWQgb24gdGhlIGdp dmVuIHBDUFUgZm9yIGxvYWRpbmcgd2hlbmV2ZXIgNjQtYml0IFBWIGd1ZXN0Ci0gICAgICogY29u dGV4dCBpcyBiZWluZyBlbnRlcmVkLiBUaGUgdmFsdWUgbmV2ZXIgY2hhbmdlcyBvbmNlIHNldC4K LSAgICAgKiBUaGUgZm9ybWVyIGlzIHRoZSB2YWx1ZSB0byByZXN0b3JlIHdoZW4gcmUtZW50ZXJp bmcgWGVuLCBpZiBhbnkuIElPVwotICAgICAqIGl0cyB2YWx1ZSBiZWluZyB6ZXJvIG1lYW5zIHRo ZXJlJ3Mgbm90aGluZyB0byByZXN0b3JlLiBIb3dldmVyLCBpdHMKLSAgICAgKiB2YWx1ZSBjYW4g YWxzbyBiZSBuZWdhdGl2ZSwgaW5kaWNhdGluZyB0byB0aGUgZXhpdC10by1YZW4gY29kZSB0aGF0 Ci0gICAgICogcmVzdG9yaW5nIGlzIG5vdCBuZWNlc3NhcnksIGJ1dCBhbGxvd2luZyBhbnkgbmVz dGVkIGVudHJ5IGNvZGUgcGF0aHMKLSAgICAgKiB0byBzdGlsbCBrbm93IHRoZSB2YWx1ZSB0byBw dXQgYmFjayBpbnRvIENSMy4KLSAgICAgKi8KLSAgICB1bnNpZ25lZCBsb25nIHhlbl9jcjM7Ci0g ICAgdW5zaWduZWQgbG9uZyBwdl9jcjM7CiAgICAgLyogZ2V0X3N0YWNrX2JvdHRvbSgpIG11c3Qg YmUgMTYtYnl0ZSBhbGlnbmVkICovCiB9OwogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20t eDg2L3Byb2Nlc3Nvci5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wcm9jZXNzb3IuaAppbmRleCBl OGMyZjAyZTk5Li43OGUxN2E0NmZhIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3By b2Nlc3Nvci5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcHJvY2Vzc29yLmgKQEAgLTQzNyw3 ICs0MzcsNiBAQCBleHRlcm4gaWR0X2VudHJ5X3QgaWR0X3RhYmxlW107CiBleHRlcm4gaWR0X2Vu dHJ5X3QgKmlkdF90YWJsZXNbXTsKIAogREVDTEFSRV9QRVJfQ1BVKHN0cnVjdCB0c3Nfc3RydWN0 LCBpbml0X3Rzcyk7Ci1ERUNMQVJFX1BFUl9DUFUocm9vdF9wZ2VudHJ5X3QgKiwgcm9vdF9wZ3Qp OwogCiBleHRlcm4gdm9pZCBpbml0X2ludDgwX2RpcmVjdF90cmFwKHN0cnVjdCB2Y3B1ICp2KTsK IApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni94ODZfNjQvcGFnZS5oIGIveGVuL2lu Y2x1ZGUvYXNtLXg4Ni94ODZfNjQvcGFnZS5oCmluZGV4IDA1YTAzMzQ4OTMuLjZmYjdjZDU1NTMg MTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYveDg2XzY0L3BhZ2UuaAorKysgYi94ZW4v aW5jbHVkZS9hc20teDg2L3g4Nl82NC9wYWdlLmgKQEAgLTI0LDggKzI0LDggQEAKIC8qIFRoZXNl IGFyZSBhcmNoaXRlY3R1cmFsIGxpbWl0cy4gQ3VycmVudCBDUFVzIHN1cHBvcnQgb25seSA0MC1i aXQgcGh5cy4gKi8KICNkZWZpbmUgUEFERFJfQklUUyAgICAgICAgICAgICAgNTIKICNkZWZpbmUg VkFERFJfQklUUyAgICAgICAgICAgICAgNDgKLSNkZWZpbmUgUEFERFJfTUFTSyAgICAgICAgICAg ICAgKChfQUMoMSxVTCkgPDwgUEFERFJfQklUUykgLSAxKQotI2RlZmluZSBWQUREUl9NQVNLICAg ICAgICAgICAgICAoKF9BQygxLFVMKSA8PCBWQUREUl9CSVRTKSAtIDEpCisjZGVmaW5lIFBBRERS X01BU0sgICAgICAgICAgICAgICgoMVVMIDw8IFBBRERSX0JJVFMpLTEpCisjZGVmaW5lIFZBRERS X01BU0sgICAgICAgICAgICAgICgoMVVMIDw8IFZBRERSX0JJVFMpLTEpCiAKICNkZWZpbmUgVkFE RFJfVE9QX0JJVCAgICAgICAgICAgKDFVTCA8PCAoVkFERFJfQklUUyAtIDEpKQogI2RlZmluZSBD QU5PTklDQUxfTUFTSyAgICAgICAgICAofjBVTCAmIH5WQUREUl9NQVNLKQpAQCAtMTA3LDcgKzEw Nyw2IEBAIHR5cGVkZWYgbDRfcGdlbnRyeV90IHJvb3RfcGdlbnRyeV90OwogICAgICAgOiAoKChf cykgPCBST09UX1BBR0VUQUJMRV9GSVJTVF9YRU5fU0xPVCkgfHwgIFwKICAgICAgICAgICgoX3Mp ID4gUk9PVF9QQUdFVEFCTEVfTEFTVF9YRU5fU0xPVCkpKQogCi0jZGVmaW5lIHJvb3RfdGFibGVf b2Zmc2V0ICAgICAgICAgbDRfdGFibGVfb2Zmc2V0CiAjZGVmaW5lIHJvb3RfZ2V0X3BmbiAgICAg ICAgICAgICAgbDRlX2dldF9wZm4KICNkZWZpbmUgcm9vdF9nZXRfZmxhZ3MgICAgICAgICAgICBs NGVfZ2V0X2ZsYWdzCiAjZGVmaW5lIHJvb3RfZ2V0X2ludHB0ZSAgICAgICAgICAgbDRlX2dldF9p bnRwdGUKLS0gCjIuMTMuNgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2pl Y3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4t ZGV2ZWw=