From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v2 5/5] x86: Rework MSR_TSC_AUX handling from scratch. Date: Wed, 21 Feb 2018 11:36:15 +0000 Message-ID: <1519212975-10722-1-git-send-email-andrew.cooper3@citrix.com> References: <1519127923-23539-6-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1519127923-23539-6-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: Kevin Tian , Wei Liu , Jan Beulich , Andrew Cooper , Jun Nakajima , Boris Ostrovsky , Suravee Suthikulpanit , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org VGhlcmUgYXJlIG1hbnkgcHJvYmxlbXMgd2l0aCBNU1JfVFNDX0FVWCBoYW5kbGluZy4KClRvIGJl Z2luIHdpdGgsIHRoZSBSRFBJRCBpbnN0cnVjdGlvbiByZWFkcyBNU1JfVFNDX0FVWCwgYnV0IGl0 IGlzIG9ubHkgdGhlClJEVFNDUCBmZWF0dXJlIHdoaWNoIGVudW1lcmF0ZXMgdGhlIE1TUi4gIFRo ZXJlZm9yZSwgUkRQSUQgZnVuY3Rpb25hbGx5CmRlcGVuZHMgb24gUkRUU0NQLgoKRm9yIFBWIGd1 ZXN0cywgd2UgaGlkZSBSRFRTQ1AgYnV0IGFkdmVydGlzZSBSRFBJRC4gIFdlIGFsc28gc2lsZW50 bHkgZHJvcAp3cml0ZXMgdG8gTVNSX1RTQ19BVVgsIHdoaWNoIGlzIHZlcnkgYW50aXNvY2lhbC4g IFRoZXJlZm9yZSwgZW5hYmxlIFJEVFNDUCBmb3IKUFYgZ3Vlc3RzLCB3aGljaCBpbiB0dXJuIGFs bG93cyBSRFBJRCB0byB3b3JrLgoKVG8gc3VwcG9ydCBSRFRTQ1AgcHJvcGVybHkgZm9yIFBWIGd1 ZXN0cywgdGhlIE1TUl9UU0NfQVVYIGhhbmRsaW5nIGlzIG1vdmVkCmludG8gdGhlIGdlbmVyaWMg TVNSIHBvbGljeSBpbmZyYXN0cnVjdHVyZSwgYW5kIGJlY29tZXMgY29tbW9uLiAgT25lCmltcHJv dmVtZW50IGlzIHRoYXQgd2Ugd2lsbCBub3cgcmVqZWN0IGludmFsaWQgdmFsdWVzLCByYXRoZXIg dGhhbiBzaWxlbnRseQp0cnVuY2F0aW5nIGFuZCBhY2NlcHRpbmcgdGhlbS4gIFRoaXMgYWxzbyBj YXVzZXMgdGhlIGVtdWxhdG9yIHRvIHJlamVjdCBSRFRTQ1AKZm9yIGd1ZXN0cyB3aXRob3V0IHRo ZSBmZWF0dXJlcy4KCk9uZSBjb21wbGljYXRpb24gaXMgVFNDX01PREVfUFZSRFRTQ1AsIGluIHdo aWNoIFhlbiB0YWtlcyBjb250cm9sIG9mCk1TUl9UU0NfQVVYIGFuZCB0aGUgcmVwb3J0ZWQgdmFs dWUgaXMgYWN0dWFsbHkgdGhlIG1pZ3JhdGlvbiBpbmNhcm5hdGlvbi4gIFRoZQpwcmV2aW91cyBi ZWhhdmlvdXIgb2YgdGhpcyBtb2RlIHdhcyB0byBzaWxlbnRseSBkcm9wIHdyaXRlcywgYnV0IGFz IGl0IGlzIGEKYnJlYWsgaW4gdGhlIHg4NiBBQkkgdG8gc3RhcnQgd2l0aCwgc3dpdGNoIHRoZSBz ZW1hbnRpY3MgdG8gYmUgbW9yZSBzYW5lLCBhbmQKaGF2ZSBUU0NfTU9ERV9QVlJEVFNDUCBtYWtl IHRoZSBNU1IgcHJvcGVybHkgcmVhZC1vbmx5LgoKV2l0aCBQViBndWVzdHMgZ2V0dGluZyB0byB1 c2UgTVNSX1RTQ19BVVggcHJvcGVybHkgbm93LCB0aGUgTVNSIG5lZWRzCm1pZ3JhdGluZywgc28g aXQgaXMgbW92ZWQgaW50byB0aGUgY29tbW9uIE1TUiBsb2dpYyBmb3IgUFYgZ3Vlc3RzLiAgQ2Fy ZSBtdXN0CmJlIHRha2VuIGhvd2V2ZXIgdG8gYXZvaWQgc2VuZGluZyB0aGUgTVNSIGlmIFRTQ19N T0RFX1BWUkRUU0NQIGlzIGFjdGl2ZSwgYXMKdGhlIHJlY2VpdmluZyBzaWRlIHdpbGwgcmVqZWN0 IHRoZSBndWVzdF93cm1zcigpLiAgVGhlIEhWTSBzaWRlIGlzIHR3ZWFrZWQgYXMKd2VsbCB0byBv bmx5IHNlbmQvcmVjZWl2ZSBodm1faHdfY3B1Lm1zcl90c2NfYXV4IHdoZW4gdGhlIFRTQyBsb2dp YyBpc24ndCBpbgpjb250cm9sIG9mIHRoZSB2YWx1ZS4KCldoYXQgcmVtYWlucyBpcyB0aGF0IHRz Y19zZXRfaW5mbygpIG5lZWQgdG8gYnJvYWRjYXN0IGQtPmFyY2guaW5jYXJuYXRpb24gdG8KYWxs IHZDUFVzIE1TUiBibG9jayBpZiBpbiBUU0NfTU9ERV9QVlJEVFNDUCwgc28gdGhlIGNvbnRleHQg c3dpdGNoaW5nIGFuZAplbXVsYXRpb24gY29kZSBmdW5jdGlvbnMgY29ycmVjdGx5LgoKU2lnbmVk LW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KLS0tCkND OiBKYW4gQmV1bGljaCA8SkJldWxpY2hAc3VzZS5jb20+CkNDOiBKdW4gTmFrYWppbWEgPGp1bi5u YWthamltYUBpbnRlbC5jb20+CkNDOiBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4K Q0M6IEJvcmlzIE9zdHJvdnNreSA8Ym9yaXMub3N0cm92c2t5QG9yYWNsZS5jb20+CkNDOiBTdXJh dmVlIFN1dGhpa3VscGFuaXQgPHN1cmF2ZWUuc3V0aGlrdWxwYW5pdEBhbWQuY29tPgpDQzogV2Vp IExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KQ0M6IFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBh dUBjaXRyaXguY29tPgpDQzogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFj bGUuY29tPgoKdjI6CiAqIFNwZWxsaW5nIGNvcnJlY3Rpb25zIGluIHRoZSBjb21taXQgbWVzc2Fn ZQogKiBGaXggSFZNIG1pZ3JhdGlvbiBpc3N1ZXMKLS0tCiB4ZW4vYXJjaC94ODYvZG9tYWluLmMg ICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKy0tCiB4ZW4vYXJjaC94ODYvZG9tY3RsLmMgICAg ICAgICAgICAgICAgICAgICAgIHwgMTUgKysrKysrKysrKysrKystCiB4ZW4vYXJjaC94ODYvaHZt L2h2bS5jICAgICAgICAgICAgICAgICAgICAgIHwgMTkgKysrKysrLS0tLS0tLS0tLS0tLQogeGVu L2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMgICAgICAgICAgICAgICAgICB8ICA0ICsrLS0KIHhlbi9h cmNoL3g4Ni9odm0vdm14L3ZteC5jICAgICAgICAgICAgICAgICAgfCAgNCArKy0tCiB4ZW4vYXJj aC94ODYvbXNyLmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTYgKysrKysrKysrKysrKysr KwogeGVuL2FyY2gveDg2L3B2L2VtdWwtaW52LW9wLmMgICAgICAgICAgICAgICB8ICA0ICstLS0K IHhlbi9hcmNoL3g4Ni9wdi9lbXVsLXByaXYtb3AuYyAgICAgICAgICAgICAgfCAgNSAtLS0tLQog eGVuL2FyY2gveDg2L3RpbWUuYyAgICAgICAgICAgICAgICAgICAgICAgICB8IDExICsrKysrKysr KysrCiB4ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYyAgICAgIHwgIDEgKwog eGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaHZtLmggICAgICAgICAgICAgICB8ICA2IC0tLS0tLQog eGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdmNwdS5oICAgICAgICAgICAgICB8ICAxIC0KIHhlbi9p bmNsdWRlL2FzbS14ODYvbXNyLmggICAgICAgICAgICAgICAgICAgfCAgOSArKysrKysrKysKIHhl bi9pbmNsdWRlL3B1YmxpYy9hcmNoLXg4Ni9jcHVmZWF0dXJlc2V0LmggfCAgMiArLQogeGVuL2lu Y2x1ZGUvcHVibGljL2FyY2gteDg2L2h2bS9zYXZlLmggICAgICB8ICA1ICsrKysrCiB4ZW4vdG9v bHMvZ2VuLWNwdWlkLnB5ICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKysrCiAxNiBmaWxlcyBj aGFuZ2VkLCA3MiBpbnNlcnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvZG9tYWluLmMgYi94ZW4vYXJjaC94ODYvZG9tYWluLmMKaW5kZXggOWMzNTI3 Zi4uMTQ0ZDZmMCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2RvbWFpbi5jCisrKyBiL3hlbi9h cmNoL3g4Ni9kb21haW4uYwpAQCAtMTUzNCw4ICsxNTM0LDcgQEAgdm9pZCBwYXJhdmlydF9jdHh0 X3N3aXRjaF90byhzdHJ1Y3QgdmNwdSAqdikKICAgICAgICAgYWN0aXZhdGVfZGVidWdyZWdzKHYp OwogCiAgICAgaWYgKCBjcHVfaGFzX3JkdHNjcCApCi0gICAgICAgIHdybXNyX3RzY19hdXgodi0+ ZG9tYWluLT5hcmNoLnRzY19tb2RlID09IFRTQ19NT0RFX1BWUkRUU0NQCi0gICAgICAgICAgICAg ICAgICAgICAgPyB2LT5kb21haW4tPmFyY2guaW5jYXJuYXRpb24gOiAwKTsKKyAgICAgICAgd3Jt c3JfdHNjX2F1eCh2LT5hcmNoLm1zci0+dHNjX2F1eCk7CiB9CiAKIC8qIFVwZGF0ZSBwZXItVkNQ VSBndWVzdCBydW5zdGF0ZSBzaGFyZWQgbWVtb3J5IGFyZWEgKGlmIHJlZ2lzdGVyZWQpLiAqLwpk aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2RvbWN0bC5jIGIveGVuL2FyY2gveDg2L2RvbWN0bC5j CmluZGV4IDhmYmJmM2EuLjk3OWFmZGYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9kb21jdGwu YworKysgYi94ZW4vYXJjaC94ODYvZG9tY3RsLmMKQEAgLTEyNDksNiArMTI0OSw3IEBAIGxvbmcg YXJjaF9kb19kb21jdGwoCiAgICAgICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBtc3JzX3RvX3Nl bmRbXSA9IHsKICAgICAgICAgICAgIE1TUl9TUEVDX0NUUkwsCiAgICAgICAgICAgICBNU1JfSU5U RUxfTUlTQ19GRUFUVVJFU19FTkFCTEVTLAorICAgICAgICAgICAgTVNSX1RTQ19BVVgsCiAgICAg ICAgIH07CiAgICAgICAgIHVpbnQzMl90IG5yX21zcnMgPSBBUlJBWV9TSVpFKG1zcnNfdG9fc2Vu ZCk7CiAKQEAgLTEyODQsNyArMTI4NSwxOCBAQCBsb25nIGFyY2hfZG9fZG9tY3RsKAogICAgICAg ICAgICAgICAgIGZvciAoIGogPSAwOyBqIDwgQVJSQVlfU0laRShtc3JzX3RvX3NlbmQpOyArK2og KQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgdmFsOwot ICAgICAgICAgICAgICAgICAgICBpbnQgcmMgPSBndWVzdF9yZG1zcih2LCBtc3JzX3RvX3NlbmRb al0sICZ2YWwpOworICAgICAgICAgICAgICAgICAgICBpbnQgcmM7CisKKyAgICAgICAgICAgICAg ICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAgICogU2tpcCBNU1JfVFNDX0FVWCBpZiB1c2lu ZyBUU0NfTU9ERV9QVlJEVFNDUC4gIEluIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICogY2Fz ZSwgdGhlIE1TUiBpcyByZWFkLW9ubHksIGFuZCBzaG91bGQgYmUgcmVqZWN0ZWQgaWYKKyAgICAg ICAgICAgICAgICAgICAgICogc2VlbiBvbiB0aGUgcmVzdG9yZSBzaWRlLgorICAgICAgICAgICAg ICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgaWYgKCBtc3JzX3RvX3NlbmRbal0gPT0g TVNSX1RTQ19BVVggJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICBkLT5hcmNoLnRzY19tb2Rl ID09IFRTQ19NT0RFX1BWUkRUU0NQICkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl OworCisgICAgICAgICAgICAgICAgICAgIHJjID0gZ3Vlc3RfcmRtc3IodiwgbXNyc190b19zZW5k W2pdLCAmdmFsKTsKIAogICAgICAgICAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICAgICAg ICAgKiBJdCBpcyB0aGUgcHJvZ3JhbW1lcnMgcmVzcG9uc2liaWxpdHkgdG8gZW5zdXJlIHRoYXQK QEAgLTEzNzMsNiArMTM4NSw3IEBAIGxvbmcgYXJjaF9kb19kb21jdGwoCiAgICAgICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgIGNhc2UgTVNSX1NQRUNfQ1RSTDoKICAgICAgICAgICAgICAg ICBjYXNlIE1TUl9JTlRFTF9NSVNDX0ZFQVRVUkVTX0VOQUJMRVM6CisgICAgICAgICAgICAgICAg Y2FzZSBNU1JfVFNDX0FVWDoKICAgICAgICAgICAgICAgICAgICAgaWYgKCBndWVzdF93cm1zcih2 LCBtc3IuaW5kZXgsIG1zci52YWx1ZSkgIT0gWDg2RU1VTF9PS0FZICkKICAgICAgICAgICAgICAg ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCmluZGV4 IDA1Mzk1NTEuLmU0NWY2ZGYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKKysr IGIveGVuL2FyY2gveDg2L2h2bS9odm0uYwpAQCAtNzkyLDcgKzc5Miw5IEBAIHN0YXRpYyBpbnQg aHZtX3NhdmVfY3B1X2N0eHQoc3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3Qg KmgpCiAKICAgICAgICAgY3R4dC50c2MgPSBodm1fZ2V0X2d1ZXN0X3RzY19maXhlZCh2LCBkLT5h cmNoLmh2bV9kb21haW4uc3luY190c2MpOwogCi0gICAgICAgIGN0eHQubXNyX3RzY19hdXggPSBo dm1fbXNyX3RzY19hdXgodik7CisgICAgICAgIC8qIE9ubHkgc2VuZCBNU1JfVFNDX0FVWCBpZiBp dCBpc24ndCBiZWluZyBoYW5kbGVkIGJ5IHRoZSBUU0MgbG9naWMuICovCisgICAgICAgIGlmICgg ZC0+YXJjaC50c2NfbW9kZSAhPSBUU0NfTU9ERV9QVlJEVFNDUCApCisgICAgICAgICAgICBjdHh0 Lm1zcl90c2NfYXV4ID0gdi0+YXJjaC5tc3ItPnRzY19hdXg7CiAKICAgICAgICAgaHZtX2dldF9z ZWdtZW50X3JlZ2lzdGVyKHYsIHg4Nl9zZWdfaWR0ciwgJnNlZyk7CiAgICAgICAgIGN0eHQuaWR0 cl9saW1pdCA9IHNlZy5saW1pdDsKQEAgLTEwNDYsNyArMTA0OCw5IEBAIHN0YXRpYyBpbnQgaHZt X2xvYWRfY3B1X2N0eHQoc3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgp CiAgICAgaWYgKCBodm1fZnVuY3MudHNjX3NjYWxpbmcuc2V0dXAgKQogICAgICAgICBodm1fZnVu Y3MudHNjX3NjYWxpbmcuc2V0dXAodik7CiAKLSAgICB2LT5hcmNoLmh2bV92Y3B1Lm1zcl90c2Nf YXV4ID0gY3R4dC5tc3JfdHNjX2F1eDsKKyAgICAvKiBPbmx5IGFjY2VwdCBNU1JfVFNDX0FVWCBp ZiBpdCBpc24ndCBiZWluZyBoYW5kbGVkIGJ5IHRoZSBUU0MgbG9naWMuICovCisgICAgaWYgKCBk LT5hcmNoLnRzY19tb2RlICE9IFRTQ19NT0RFX1BWUkRUU0NQICkKKyAgICAgICAgdi0+YXJjaC5t c3ItPnRzY19hdXggPSBjdHh0Lm1zcl90c2NfYXV4OwogCiAgICAgaHZtX3NldF9ndWVzdF90c2Nf Zml4ZWQodiwgY3R4dC50c2MsIGQtPmFyY2guaHZtX2RvbWFpbi5zeW5jX3RzYyk7CiAKQEAgLTM0 MjQsMTAgKzM0MjgsNiBAQCBpbnQgaHZtX21zcl9yZWFkX2ludGVyY2VwdCh1bnNpZ25lZCBpbnQg bXNyLCB1aW50NjRfdCAqbXNyX2NvbnRlbnQpCiAgICAgICAgICptc3JfY29udGVudCA9IHYtPmFy Y2guaHZtX3ZjcHUubXNyX3RzY19hZGp1c3Q7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBN U1JfVFNDX0FVWDoKLSAgICAgICAgKm1zcl9jb250ZW50ID0gaHZtX21zcl90c2NfYXV4KHYpOwot ICAgICAgICBicmVhazsKLQogICAgIGNhc2UgTVNSX0lBMzJfQVBJQ0JBU0U6CiAgICAgICAgICpt c3JfY29udGVudCA9IHZjcHVfdmxhcGljKHYpLT5ody5hcGljX2Jhc2VfbXNyOwogICAgICAgICBi cmVhazsKQEAgLTM1NzUsMTMgKzM1NzUsNiBAQCBpbnQgaHZtX21zcl93cml0ZV9pbnRlcmNlcHQo dW5zaWduZWQgaW50IG1zciwgdWludDY0X3QgbXNyX2NvbnRlbnQsCiAgICAgICAgIGh2bV9zZXRf Z3Vlc3RfdHNjX2FkanVzdCh2LCBtc3JfY29udGVudCk7CiAgICAgICAgIGJyZWFrOwogCi0gICAg Y2FzZSBNU1JfVFNDX0FVWDoKLSAgICAgICAgdi0+YXJjaC5odm1fdmNwdS5tc3JfdHNjX2F1eCA9 ICh1aW50MzJfdCltc3JfY29udGVudDsKLSAgICAgICAgaWYgKCBjcHVfaGFzX3JkdHNjcAotICAg ICAgICAgICAgICYmICh2LT5kb21haW4tPmFyY2gudHNjX21vZGUgIT0gVFNDX01PREVfUFZSRFRT Q1ApICkKLSAgICAgICAgICAgIHdybXNyX3RzY19hdXgobXNyX2NvbnRlbnQpOwotICAgICAgICBi cmVhazsKLQogICAgIGNhc2UgTVNSX0lBMzJfQVBJQ0JBU0U6CiAgICAgICAgIGlmICggIXZsYXBp Y19tc3Jfc2V0KHZjcHVfdmxhcGljKHYpLCBtc3JfY29udGVudCkgKQogICAgICAgICAgICAgZ290 byBncF9mYXVsdDsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL3N2bS5jIGIveGVu L2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMKaW5kZXggZjUzZjQzMC4uOTQwNjYyNCAxMDA2NDQKLS0t IGEveGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9zdm0v c3ZtLmMKQEAgLTEwOTMsNyArMTA5Myw3IEBAIHN0YXRpYyB2b2lkIHN2bV9jdHh0X3N3aXRjaF90 byhzdHJ1Y3QgdmNwdSAqdikKICAgICBzdm1fdHNjX3JhdGlvX2xvYWQodik7CiAKICAgICBpZiAo IGNwdV9oYXNfcmR0c2NwICkKLSAgICAgICAgd3Jtc3JfdHNjX2F1eChodm1fbXNyX3RzY19hdXgo dikpOworICAgICAgICB3cm1zcl90c2NfYXV4KHYtPmFyY2gubXNyLT50c2NfYXV4KTsKIH0KIAog c3RhdGljIHZvaWQgbm9yZXR1cm4gc3ZtX2RvX3Jlc3VtZShzdHJ1Y3QgdmNwdSAqdikKQEAgLTI4 NDIsNyArMjg0Miw3IEBAIHZvaWQgc3ZtX3ZtZXhpdF9oYW5kbGVyKHN0cnVjdCBjcHVfdXNlcl9y ZWdzICpyZWdzKQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgVk1FWElUX1JEVFNDUDoKLSAg ICAgICAgcmVncy0+cmN4ID0gaHZtX21zcl90c2NfYXV4KHYpOworICAgICAgICByZWdzLT5yY3gg PSB2LT5hcmNoLm1zci0+dHNjX2F1eDsKICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCiAgICAg Y2FzZSBWTUVYSVRfUkRUU0M6CiAgICAgICAgIHN2bV92bWV4aXRfZG9fcmR0c2MocmVncyk7CmRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYyBiL3hlbi9hcmNoL3g4Ni9odm0v dm14L3ZteC5jCmluZGV4IDMxYWNiMGUuLjQ1ZmQ5YzUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4 Ni9odm0vdm14L3ZteC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jCkBAIC02MTgs NyArNjE4LDcgQEAgc3RhdGljIHZvaWQgdm14X3Jlc3RvcmVfZ3Vlc3RfbXNycyhzdHJ1Y3QgdmNw dSAqdikKICAgICB9CiAKICAgICBpZiAoIGNwdV9oYXNfcmR0c2NwICkKLSAgICAgICAgd3Jtc3Jf dHNjX2F1eChodm1fbXNyX3RzY19hdXgodikpOworICAgICAgICB3cm1zcl90c2NfYXV4KHYtPmFy Y2gubXNyLT50c2NfYXV4KTsKIH0KIAogdm9pZCB2bXhfdXBkYXRlX2NwdV9leGVjX2NvbnRyb2wo c3RydWN0IHZjcHUgKnYpCkBAIC0zODU4LDcgKzM4NTgsNyBAQCB2b2lkIHZteF92bWV4aXRfaGFu ZGxlcihzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAgICAgICAgdm14X2ludmxwZ19pbnRl cmNlcHQoZXhpdF9xdWFsaWZpY2F0aW9uKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBFWElU X1JFQVNPTl9SRFRTQ1A6Ci0gICAgICAgIHJlZ3MtPnJjeCA9IGh2bV9tc3JfdHNjX2F1eCh2KTsK KyAgICAgICAgcmVncy0+cmN4ID0gdi0+YXJjaC5tc3ItPnRzY19hdXg7CiAgICAgICAgIC8qIGZh bGwgdGhyb3VnaCAqLwogICAgIGNhc2UgRVhJVF9SRUFTT05fUkRUU0M6CiAgICAgICAgIHVwZGF0 ZV9ndWVzdF9laXAoKTsgLyogU2FmZTogUkRUU0MsIFJEVFNDUCAqLwpkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L21zci5jIGIveGVuL2FyY2gveDg2L21zci5jCmluZGV4IDhhZTNiNGUuLjhhOGNh ZDIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tc3IuYworKysgYi94ZW4vYXJjaC94ODYvbXNy LmMKQEAgLTE3NSw2ICsxNzUsMTMgQEAgaW50IGd1ZXN0X3JkbXNyKGNvbnN0IHN0cnVjdCB2Y3B1 ICp2LCB1aW50MzJfdCBtc3IsIHVpbnQ2NF90ICp2YWwpCiAgICAgICAgICAgICAgICBfTVNSX01J U0NfRkVBVFVSRVNfQ1BVSURfRkFVTFRJTkc7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBN U1JfVFNDX0FVWDoKKyAgICAgICAgaWYgKCAhY3AtPmV4dGQucmR0c2NwICkKKyAgICAgICAgICAg IGdvdG8gZ3BfZmF1bHQ7CisKKyAgICAgICAgKnZhbCA9IHZwLT50c2NfYXV4OworICAgICAgICBi cmVhazsKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBYODZFTVVMX1VOSEFORExFQUJM RTsKICAgICB9CkBAIC0yNTAsNiArMjU3LDE1IEBAIGludCBndWVzdF93cm1zcihzdHJ1Y3QgdmNw dSAqdiwgdWludDMyX3QgbXNyLCB1aW50NjRfdCB2YWwpCiAgICAgICAgIGJyZWFrOwogICAgIH0K IAorICAgIGNhc2UgTVNSX1RTQ19BVVg6CisgICAgICAgIGlmICggIWNwLT5leHRkLnJkdHNjcCB8 fCAgICAgICAgICAgICAgICAgICAgICAvKiBNU1IgYXZhaWxhYmxlPyAqLworICAgICAgICAgICAg IGQtPmFyY2gudHNjX21vZGUgPT0gVFNDX01PREVfUFZSRFRTQ1AgfHwgLyogTVNSIHJlYWQtb25s eT8gKi8KKyAgICAgICAgICAgICB2YWwgIT0gKHVpbnQzMl90KXZhbCApICAgICAgICAgICAgICAg ICAgIC8qIFJzdmQgYml0cyBzZXQ/ICovCisgICAgICAgICAgICBnb3RvIGdwX2ZhdWx0OworCisg ICAgICAgIHdybXNyX3RzY19hdXgodnAtPnRzY19hdXggPSB2YWwpOworICAgICAgICBicmVhazsK KwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBYODZFTVVMX1VOSEFORExFQUJMRTsKICAg ICB9CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcHYvZW11bC1pbnYtb3AuYyBiL3hlbi9hcmNo L3g4Ni9wdi9lbXVsLWludi1vcC5jCmluZGV4IGJlOTVhNWYuLmMwNzEzNzIgMTAwNjQ0Ci0tLSBh L3hlbi9hcmNoL3g4Ni9wdi9lbXVsLWludi1vcC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9wdi9lbXVs LWludi1vcC5jCkBAIC00Niw3ICs0Niw2IEBAIHN0YXRpYyBpbnQgZW11bGF0ZV9pbnZhbGlkX3Jk dHNjcChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAgICBjaGFyIG9wY29kZVszXTsKICAg ICB1bnNpZ25lZCBsb25nIGVpcCwgcmM7CiAgICAgc3RydWN0IHZjcHUgKnYgPSBjdXJyZW50Owot ICAgIGNvbnN0IHN0cnVjdCBkb21haW4gKmN1cnJkID0gdi0+ZG9tYWluOwogCiAgICAgZWlwID0g cmVncy0+cmlwOwogICAgIGlmICggKHJjID0gY29weV9mcm9tX3VzZXIob3Bjb2RlLCAoY2hhciAq KWVpcCwgc2l6ZW9mKG9wY29kZSkpKSAhPSAwICkKQEAgLTU5LDggKzU4LDcgQEAgc3RhdGljIGlu dCBlbXVsYXRlX2ludmFsaWRfcmR0c2NwKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogICAg IGVpcCArPSBzaXplb2Yob3Bjb2RlKTsKIAogICAgIG1zcl9zcGxpdChyZWdzLCBwdl9zb2Z0X3Jk dHNjKHYsIHJlZ3MpKTsKLSAgICByZWdzLT5yY3ggPSAoY3VycmQtPmFyY2gudHNjX21vZGUgPT0g VFNDX01PREVfUFZSRFRTQ1AKLSAgICAgICAgICAgICAgICAgPyBjdXJyZC0+YXJjaC5pbmNhcm5h dGlvbiA6IDApOworICAgIHJlZ3MtPnJjeCA9IHYtPmFyY2gubXNyLT50c2NfYXV4OwogCiAgICAg cHZfZW11bF9pbnN0cnVjdGlvbl9kb25lKHJlZ3MsIGVpcCk7CiAgICAgcmV0dXJuIEVYQ1JFVF9m YXVsdF9maXhlZDsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wdi9lbXVsLXByaXYtb3AuYyBi L3hlbi9hcmNoL3g4Ni9wdi9lbXVsLXByaXYtb3AuYwppbmRleCBmMjg4OGFiLi43ZTY0YzEwIDEw MDY0NAotLS0gYS94ZW4vYXJjaC94ODYvcHYvZW11bC1wcml2LW9wLmMKKysrIGIveGVuL2FyY2gv eDg2L3B2L2VtdWwtcHJpdi1vcC5jCkBAIC04ODAsMTEgKzg4MCw2IEBAIHN0YXRpYyBpbnQgcmVh ZF9tc3IodW5zaWduZWQgaW50IHJlZywgdWludDY0X3QgKnZhbCwKICAgICAgICAgKnZhbCA9IGN1 cnJkLT5hcmNoLnZ0c2MgPyBwdl9zb2Z0X3JkdHNjKGN1cnIsIGN0eHQtPnJlZ3MpIDogcmR0c2Mo KTsKICAgICAgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsKIAotICAgIGNhc2UgTVNSX1RTQ19BVVg6 Ci0gICAgICAgICp2YWwgPSAodWludDMyX3QpKGN1cnJkLT5hcmNoLnRzY19tb2RlID09IFRTQ19N T0RFX1BWUkRUU0NQCi0gICAgICAgICAgICAgICAgICAgICAgICAgID8gY3VycmQtPmFyY2guaW5j YXJuYXRpb24gOiAwKTsKLSAgICAgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsKLQogICAgIGNhc2Ug TVNSX0VGRVI6CiAgICAgICAgICp2YWwgPSByZWFkX2VmZXIoKTsKICAgICAgICAgaWYgKCBpc19w dl8zMmJpdF9kb21haW4oY3VycmQpICkKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni90aW1lLmMg Yi94ZW4vYXJjaC94ODYvdGltZS5jCmluZGV4IDFhNmZkZTYuLjM3ZDQ4N2MgMTAwNjQ0Ci0tLSBh L3hlbi9hcmNoL3g4Ni90aW1lLmMKKysrIGIveGVuL2FyY2gveDg2L3RpbWUuYwpAQCAtMjE3OCw3 ICsyMTc4LDE4IEBAIHZvaWQgdHNjX3NldF9pbmZvKHN0cnVjdCBkb21haW4gKmQsCiAgICAgICAg IH0KICAgICAgICAgYnJlYWs7CiAgICAgfQorCiAgICAgZC0+YXJjaC5pbmNhcm5hdGlvbiA9IGlu Y2FybmF0aW9uICsgMTsKKworICAgIGlmICggZC0+YXJjaC50c2NfbW9kZSA9PSBUU0NfTU9ERV9Q VlJEVFNDUCApCisgICAgeworICAgICAgICBzdHJ1Y3QgdmNwdSAqdjsKKworICAgICAgICAvKiBE aXN0cmlidXRlIGluY2FybmF0aW9uIGludG8gZWFjaCB2Y3B1J3MgTVNSX1RTQ19BVVguICovCisg ICAgICAgIGZvcl9lYWNoX3ZjcHUgKCBkLCB2ICkKKyAgICAgICAgICAgIHYtPmFyY2gubXNyLT50 c2NfYXV4ID0gZC0+YXJjaC5pbmNhcm5hdGlvbjsKKyAgICB9CisKICAgICBpZiAoIGlzX2h2bV9k b21haW4oZCkgKQogICAgIHsKICAgICAgICAgaWYgKCBodm1fdHNjX3NjYWxpbmdfc3VwcG9ydGVk ICYmICFkLT5hcmNoLnZ0c2MgKQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRl L3g4Nl9lbXVsYXRlLmMgYi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYwpp bmRleCA4NTM4M2VhLi5lZmI2MDAzIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYveDg2X2VtdWxh dGUveDg2X2VtdWxhdGUuYworKysgYi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxh dGUuYwpAQCAtNTE0MSw2ICs1MTQxLDcgQEAgeDg2X2VtdWxhdGUoCiAKICAgICAgICAgY2FzZSAw eGY5OiAvKiByZHRzY3AgKi8KICAgICAgICAgICAgIGZhaWxfaWYob3BzLT5yZWFkX21zciA9PSBO VUxMKTsKKyAgICAgICAgICAgIC8qIEdldHRpbmcgYSByZXN1bHQgaW1wbGllcyB2Y3B1X2hhc19y ZHRzY3AoKSAqLwogICAgICAgICAgICAgaWYgKCAocmMgPSBvcHMtPnJlYWRfbXNyKE1TUl9UU0Nf QVVYLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtc3JfdmFsLCBjdHh0 KSkgIT0gWDg2RU1VTF9PS0FZICkKICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CmRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9odm0uaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYv aHZtL2h2bS5oCmluZGV4IGRkM2RkNWYuLjc3MDhmZGYgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRl L2FzbS14ODYvaHZtL2h2bS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2h2bS5oCkBA IC01MTEsMTIgKzUxMSw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBodm1faW52YWxpZGF0ZV9yZWdz X2ZpZWxkcyhzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKIGludCBodm1faGFwX25lc3RlZF9w YWdlX2ZhdWx0KHBhZGRyX3QgZ3BhLCB1bnNpZ25lZCBsb25nIGdsYSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBucGZlYyBucGZlYyk7CiAKLSNkZWZpbmUgaHZtX21zcl90 c2NfYXV4KHYpICh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0gICAgc3RydWN0IGRvbWFpbiAqX19kID0gKHYpLT5kb21haW47ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIChfX2QtPmFyY2gudHNjX21vZGUgPT0gVFND X01PREVfUFZSRFRTQ1ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAg PyAodTMyKV9fZC0+YXJjaC5pbmNhcm5hdGlvbiA6ICh1MzIpKHYpLT5hcmNoLmh2bV92Y3B1Lm1z cl90c2NfYXV4OyBcCi19KQotCiBpbnQgaHZtX3gyYXBpY19tc3JfcmVhZChzdHJ1Y3QgdmNwdSAq diwgdW5zaWduZWQgaW50IG1zciwgdWludDY0X3QgKm1zcl9jb250ZW50KTsKIGludCBodm1feDJh cGljX21zcl93cml0ZShzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IG1zciwgdWludDY0X3Qg bXNyX2NvbnRlbnQpOwogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92Y3B1 LmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92Y3B1LmgKaW5kZXggZDkzMTY2Zi4uNjA0MjVm MyAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdmNwdS5oCisrKyBiL3hlbi9p bmNsdWRlL2FzbS14ODYvaHZtL3ZjcHUuaApAQCAtMTcwLDcgKzE3MCw2IEBAIHN0cnVjdCBodm1f dmNwdSB7CiAKICAgICBzdHJ1Y3QgaHZtX3ZjcHVfYXNpZCBuMWFzaWQ7CiAKLSAgICB1MzIgICAg ICAgICAgICAgICAgIG1zcl90c2NfYXV4OwogICAgIHU2NCAgICAgICAgICAgICAgICAgbXNyX3Rz Y19hZGp1c3Q7CiAgICAgdTY0ICAgICAgICAgICAgICAgICBtc3JfeHNzOwogCmRpZmYgLS1naXQg YS94ZW4vaW5jbHVkZS9hc20teDg2L21zci5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9tc3IuaApp bmRleCBhNTA3MmEyLi5jMTMzODhhIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L21z ci5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbXNyLmgKQEAgLTI1OCw2ICsyNTgsMTUgQEAg c3RydWN0IG1zcl92Y3B1X3BvbGljeQogICAgICAgICBib29sIGF2YWlsYWJsZTsgLyogVGhpcyBN U1IgaXMgbm9uLWFyY2hpdGVjdHVyYWwgKi8KICAgICAgICAgYm9vbCBjcHVpZF9mYXVsdGluZzsK ICAgICB9IG1pc2NfZmVhdHVyZXNfZW5hYmxlczsKKworICAgIC8qCisgICAgICogMHhjMDAwMDEw MyAtIE1TUl9UU0NfQVVYCisgICAgICoKKyAgICAgKiBVc3VhbGx5IGd1ZXN0IGNob3Nlbi4gIEhv d2V2ZXIsIHdoZW4gdXNpbmcgVFNDX01PREVfUFZSRFRTQ1AgdGhlIHZhbHVlCisgICAgICogaXMg WGVuLWNvbnRyb2xsZWQgYW5kIGlzIHRoZSBtaWdyYXRpb24gaW5jYXJuYXRpb24sIGF0IHdoaWNo IHBvaW50IHRoZQorICAgICAqIE1TUiBiZWNvbWVzIHJlYWQtb25seSB0byB0aGUgZ3Vlc3QuCisg ICAgICovCisgICAgdWludDMyX3QgdHNjX2F1eDsKIH07CiAKIHZvaWQgaW5pdF9ndWVzdF9tc3Jf cG9saWN5KHZvaWQpOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL2FyY2gteDg2L2Nw dWZlYXR1cmVzZXQuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLXg4Ni9jcHVmZWF0dXJlc2V0 LmgKaW5kZXggZmE4MWFmMS4uNzhmYTQ2NiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVibGlj L2FyY2gteDg2L2NwdWZlYXR1cmVzZXQuaAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC14 ODYvY3B1ZmVhdHVyZXNldC5oCkBAIC0xNTYsNyArMTU2LDcgQEAgWEVOX0NQVUZFQVRVUkUoTlgs ICAgICAgICAgICAgMiozMisyMCkgLypBICBFeGVjdXRlIERpc2FibGUgKi8KIFhFTl9DUFVGRUFU VVJFKE1NWEVYVCwgICAgICAgIDIqMzIrMjIpIC8qQSAgQU1EIE1NWCBleHRlbnNpb25zICovCiBY RU5fQ1BVRkVBVFVSRShGRlhTUiwgICAgICAgICAyKjMyKzI1KSAvKkEgIEZGWFNSIGluc3RydWN0 aW9uIG9wdGltaXphdGlvbnMgKi8KIFhFTl9DUFVGRUFUVVJFKFBBR0UxR0IsICAgICAgIDIqMzIr MjYpIC8qSCAgMUdiIGxhcmdlIHBhZ2Ugc3VwcG9ydCAqLwotWEVOX0NQVUZFQVRVUkUoUkRUU0NQ LCAgICAgICAgMiozMisyNykgLypTICBSRFRTQ1AgKi8KK1hFTl9DUFVGRUFUVVJFKFJEVFNDUCwg ICAgICAgIDIqMzIrMjcpIC8qQSAgUkRUU0NQICovCiBYRU5fQ1BVRkVBVFVSRShMTSwgICAgICAg ICAgICAyKjMyKzI5KSAvKkEgIExvbmcgTW9kZSAoeDg2LTY0KSAqLwogWEVOX0NQVUZFQVRVUkUo M0ROT1dFWFQsICAgICAgMiozMiszMCkgLypBICBBTUQgM0ROb3chIGV4dGVuc2lvbnMgKi8KIFhF Tl9DUFVGRUFUVVJFKDNETk9XLCAgICAgICAgIDIqMzIrMzEpIC8qQSAgM0ROb3chICovCmRpZmYg LS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC14ODYvaHZtL3NhdmUuaCBiL3hlbi9pbmNs dWRlL3B1YmxpYy9hcmNoLXg4Ni9odm0vc2F2ZS5oCmluZGV4IDQ2OTFkNGQuLjBkZjNlMjYgMTAw NjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLXg4Ni9odm0vc2F2ZS5oCisrKyBiL3hl bi9pbmNsdWRlL3B1YmxpYy9hcmNoLXg4Ni9odm0vc2F2ZS5oCkBAIC0xNDEsNiArMTQxLDExIEBA IHN0cnVjdCBodm1faHdfY3B1IHsKICAgICB1aW50NjRfdCBtc3JfY3N0YXI7CiAgICAgdWludDY0 X3QgbXNyX3N5c2NhbGxfbWFzazsKICAgICB1aW50NjRfdCBtc3JfZWZlcjsKKworICAgIC8qCisg ICAgICogU2luY2UgNC4xMSwgdGhpcyB2YWx1ZSBpcyB3cml0dGVuIGFzIDAgaWYgVFNDX01PREVf UFZSRFRTQ1AgaXMgYWN0aXZlLAorICAgICAqIGFuZCB0aGUgdmFsdWUgaXMgYWN0dWFsbHkgY29u dHJvbGxlZCBieSB0aGUgVFNDIGxvZ2ljLgorICAgICAqLwogICAgIHVpbnQ2NF90IG1zcl90c2Nf YXV4OwogCiAgICAgLyogZ3Vlc3QncyBpZGVhIG9mIHdoYXQgcmR0c2MoKSB3b3VsZCByZXR1cm4g Ki8KZGlmZiAtLWdpdCBhL3hlbi90b29scy9nZW4tY3B1aWQucHkgYi94ZW4vdG9vbHMvZ2VuLWNw dWlkLnB5CmluZGV4IDYxM2I5MDkuLjYwMWE3YTAgMTAwNzU1Ci0tLSBhL3hlbi90b29scy9nZW4t Y3B1aWQucHkKKysrIGIveGVuL3Rvb2xzL2dlbi1jcHVpZC5weQpAQCAtMjM1LDYgKzIzNSw5IEBA IGRlZiBjcnVuY2hfbnVtYmVycyhzdGF0ZSk6CiAgICAgICAgICMgYWJzZW5jZSBvZiBhbnkgZW5h YmxlZCB4c3RhdGUuCiAgICAgICAgIEFWWDogW0ZNQSwgRk1BNCwgRjE2QywgQVZYMiwgWE9QXSwK IAorICAgICAgICAjIE1TUl9UU0NfQVVYIGlzIGVudW1lcmF0ZWQgYnkgUkRUU0NQLCBidXQgUkRQ SUQgYWxzbyByZWFkcyBUU0NfQVVYLgorICAgICAgICBSRFRTQ1A6IFtSRFBJRF0sCisKICAgICAg ICAgIyBDWDE2IGlzIG9ubHkgZW5jb2RhYmxlIGluIExvbmcgTW9kZS4gIExBSEZfTE0gaW5kaWNh dGVzIHRoYXQgdGhlCiAgICAgICAgICMgU0FIRi9MQUhGIGluc3RydWN0aW9ucyBhcmUgcmVpbnRy b2R1Y2VkIGluIExvbmcgTW9kZS4gIDFHQgogICAgICAgICAjIHN1cGVycGFnZXMsIFBDSUQgYW5k IFBLVSBhcmUgb25seSBhdmFpbGFibGUgaW4gNCBsZXZlbCBwYWdpbmcuCi0tIAoyLjEuNAoKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBt YWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMu eGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=