From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v3 13/28] xen/x86: Improvements to in-hypervisor cpuid sanity checks Date: Tue, 15 Mar 2016 15:35:09 +0000 Message-ID: <1458056124-8024-14-git-send-email-andrew.cooper3@citrix.com> References: <1458056124-8024-1-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: <1458056124-8024-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper , Jan Beulich List-Id: xen-devel@lists.xenproject.org Q3VycmVudGx5LCB7cHYsaHZtfV9jcHVpZCgpIGhhcyBhIGxhcmdlIHF1YW50aXR5IG9mIGVzc2Vu dGlhbGx5LXN0YXRpYyBsb2dpYwpmb3IgbW9kaWZ5aW5nIHRoZSBmZWF0dXJlcyB2aXNpYmxlIHRv IGEgZ3Vlc3QuICBBIGxvdCBvZiB0aGlzIGNhbiBiZSBzdWJzdW1lZApieSB7cHYsaHZtfV9mZWF0 dXJlbWFzaywgd2hpY2ggaWRlbnRpZnkgdGhlIGZlYXR1cmVzIGF2YWlsYWJsZSBvbiB0aGlzCmhh cmR3YXJlIHdoaWNoIGNvdWxkIGJlIGdpdmVuIHRvIGEgUFYgb3IgSFZNIGd1ZXN0LgoKVGhpcyBp cyBhIHN0ZXAgaW4gdGhlIGRpcmVjdGlvbiBvZiBmdWxsIHBlci1kb21haW4gY3B1aWQgcG9saWNp ZXMsIGJ1dCBsb3RzCm1vcmUgZGV2ZWxvcG1lbnQgaXMgbmVlZGVkIGZvciB0aGF0LiAgQXMgYSBy ZXN1bHQsIHRoZSBzdGF0aWMgY2hlY2tzIGFyZQpzaW1wbGlmaWVkLCBidXQgdGhlIGR5bmFtaWMg Y2hlY2tzIG5lZWQgdG8gcmVtYWluIGZvciBub3cuCgpBcyBhIHNpZGUgZWZmZWN0LCBzb21lIG9m IHRoZSBsb2dpYyBmb3Igc3BlY2lhbCBmZWF0dXJlcyBjYW4gYmUgaW1wcm92ZWQuCk9TWFNBVkUg YW5kIE9TUEtFIHdpbGwgYmUgYXV0b21hdGljYWxseSBjbGVhcmVkIGJlY2F1c2Ugb2YgYmVpbmcg YWJzZW50IGluIHRoZQpmZWF0dXJlbWFzay4gIFRoaXMgYWxsb3dzIHRoZSBmYXN0LWZvcndhcmQg bG9naWMgdG8gYmUgbW9yZSBzaW1wbGUuCgpJbiBhZGRpdGlvbiwgdGhlcmUgYXJlIHNvbWUgY29y cmVjdGlvbnMgdG8gdGhlIGV4aXN0aW5nIGxvZ2ljOgoKICogSGlkaW5nIFBTRTM2IG91dCBvZiBQ QUUgbW9kZSBpcyBhcmNoaXRlY3R1cmFsbHkgd3JvbmcuICBJdCB0dXJucyBvdXQgdGhhdAogICBp dCB3YXMgYSBidWdmaXggZm9yIHJ1bm5pbmcgSHlwZXJWIHVuZGVyIFhlbiwgd2hpY2ggd2FudGVk IHRvIHNlZSBQU0UzNgogICBldmVuIGFmdGVyIGNob29zaW5nIHRvIHVzZSBQQUUgcGFnaW5nLiAg UFNFMzYgaXMgbm90IHN1cHBvcnRlZCBieSBzaGFkb3cKICAgcGFnaW5nLCBzbyBpcyBoaWRkZW4g ZnJvbSBub24tSEFQIGd1ZXN0cywgYnV0IGlzIHN0aWxsIHZpc2libGUgZm9yIEhBUAogICBndWVz dHMuCiAqIENoYW5naW5nIHRoZSB2aXNpYmlsaXR5IG9mIFJEVFNDUCBiYXNlZCBvbiBob3N0IFRT QyBzdGFiaWxpdHkgb3IgdmlydHVhbAogICBUU0MgbW9kZSBpcyBib2d1cywgc28gZHJvcHBlZC4K ICogV2hlbiBlbXVsYXRpbmcgSW50ZWwgdG8gYSBndWVzdCwgdGhlIGNvbW1vbiBmZWF0dXJlcyBp biBlMWQgc2hvdWxkIGJlCiAgIGNsZWFyZWQuCiAqIFRoZSBBUElDIGJpdCBpbiBlMWQgKG9uIG5v bi1JbnRlbCkgaXMgYWxzbyBhIGZhc3QtZm9yd2FyZCBmcm9tIHRoZQogICBBUElDX0JBU0UgTVNS LgoKQXMgYSBzbWFsbCBpbXByb3ZlbWVudCwgdXNlIGNvbXBpbGVyLXZpc2libGUgJidzIGFuZCB8 J3MsIHJhdGhlciB0aGFuCntjbGVhcixzZXR9X2JpdCgpLgoKU2lnbmVkLW9mZi1ieTogQW5kcmV3 IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KLS0tCkNDOiBKYW4gQmV1bGljaCA8 SkJldWxpY2hAc3VzZS5jb20+Cgp2MzoKICogQmV0dGVyIGhhbmRsaW5nIG9mIHRoZSBjcm9zcy12 ZW5kb3IgY2FzZS4KICogSW1wcm92ZW1lbnRzIHRvIHRoZSBoYW5kbGluZyBvZiBzcGVjaWFsIGZl YXR1cmVzLgogKiBDb3JyZWN0IFBTRTM2IHRvIGJlaW5nIGEgSEFQLW9ubHkgZmVhdHVyZS4KICog WWV0IG1vcmUgT1NYU0FWRSBmaXhlcyBmb3IgUFYgZ3Vlc3RzLgoKdjI6CiAqIFJlaW5zdGF0ZSBz b21lIG9mIHRoZSBkeW5hbWljIGNoZWNrcyBmb3Igbm93LiAgRnV0dXJlIGRldmVsb3BtZW50IHdv cmsgd2lsbAogICBpbnN0YXRlIGEgY29tcGxldGUgcGVyLWRvbWFpbiBwb2xpY3kuCiAqIEZpeCBP U1hTQVZFIGhhbmRsaW5nIGZvciBQViBndWVzdHMuCi0tLQogeGVuL2FyY2gveDg2L2h2bS9odm0u YyB8ICA5MyArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni90cmFwcy5j ICAgfCAxNjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogMiBmaWxlcyBjaGFuZ2VkLCAxNDEgaW5zZXJ0aW9ucygrKSwgMTIxIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMgYi94ZW4vYXJjaC94ODYvaHZtL2h2 bS5jCmluZGV4IDc3MjM2ODAuLjhkZWRiZjEgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0v aHZtLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9odm0uYwpAQCAtNzEsNiArNzEsNyBAQAogI2lu Y2x1ZGUgPHB1YmxpYy9tZW1vcnkuaD4KICNpbmNsdWRlIDxwdWJsaWMvdm1fZXZlbnQuaD4KICNp bmNsdWRlIDxwdWJsaWMvYXJjaC14ODYvY3B1aWQuaD4KKyNpbmNsdWRlIDxhc20vY3B1aWQuaD4K IAogYm9vbF90IF9fcmVhZF9tb3N0bHkgaHZtX2VuYWJsZWQ7CiAKQEAgLTQ2NzgsNjIgKzQ2Nzks NTUgQEAgdm9pZCBodm1fY3B1aWQodW5zaWduZWQgaW50IGlucHV0LCB1bnNpZ25lZCBpbnQgKmVh eCwgdW5zaWduZWQgaW50ICplYngsCiAgICAgICAgIC8qIEZpeCB1cCBWTEFQSUMgZGV0YWlscy4g Ki8KICAgICAgICAgKmVieCAmPSAweDAwRkZGRkZGdTsKICAgICAgICAgKmVieCB8PSAodi0+dmNw dV9pZCAqIDIpIDw8IDI0OworCisgICAgICAgICplY3ggJj0gaHZtX2ZlYXR1cmVzZXRbRkVBVFVS RVNFVF8xY107CisgICAgICAgICplZHggJj0gaHZtX2ZlYXR1cmVzZXRbRkVBVFVSRVNFVF8xZF07 CisKKyAgICAgICAgLyogQVBJQyBleHBvc2VkIHRvIGd1ZXN0cywgYnV0IEZhc3QtZm9yd2FyZCBN U1JfQVBJQ19CQVNFLkVOIGJhY2sgaW4uICovCiAgICAgICAgIGlmICggdmxhcGljX2h3X2Rpc2Fi bGVkKHZjcHVfdmxhcGljKHYpKSApCi0gICAgICAgICAgICBfX2NsZWFyX2JpdChYODZfRkVBVFVS RV9BUElDICYgMzEsIGVkeCk7CisgICAgICAgICAgICAqZWR4ICY9IH5jcHVmZWF0X2JpdChYODZf RkVBVFVSRV9BUElDKTsKIAotICAgICAgICAvKiBGaXggdXAgT1NYU0FWRS4gKi8KLSAgICAgICAg aWYgKCAqZWN4ICYgY3B1ZmVhdF9tYXNrKFg4Nl9GRUFUVVJFX1hTQVZFKSAmJgotICAgICAgICAg ICAgICh2LT5hcmNoLmh2bV92Y3B1Lmd1ZXN0X2NyWzRdICYgWDg2X0NSNF9PU1hTQVZFKSApCisg ICAgICAgIC8qIE9TWFNBVkUgY2xlYXJlZCBieSBodm1fZmVhdHVyZXNldC4gIEZhc3QtZm9yd2Fy ZCBDUjQgYmFjayBpbi4gKi8KKyAgICAgICAgaWYgKCB2LT5hcmNoLmh2bV92Y3B1Lmd1ZXN0X2Ny WzRdICYgWDg2X0NSNF9PU1hTQVZFICkKICAgICAgICAgICAgICplY3ggfD0gY3B1ZmVhdF9tYXNr KFg4Nl9GRUFUVVJFX09TWFNBVkUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICAqZWN4ICY9 IH5jcHVmZWF0X21hc2soWDg2X0ZFQVRVUkVfT1NYU0FWRSk7CiAKLSAgICAgICAgLyogRG9uJ3Qg ZXhwb3NlIFBDSUQgdG8gbm9uLWhhcCBodm0uICovCisgICAgICAgIC8qIERvbid0IGV4cG9zZSBI QVAtb25seSBmZWF0dXJlcyB0byBub24taGFwIGd1ZXN0cy4gKi8KICAgICAgICAgaWYgKCAhaGFw X2VuYWJsZWQoZCkgKQorICAgICAgICB7CiAgICAgICAgICAgICAqZWN4ICY9IH5jcHVmZWF0X21h c2soWDg2X0ZFQVRVUkVfUENJRCk7Ci0KLSAgICAgICAgLyogT25seSBwcm92aWRlIFBTRTM2IHdo ZW4gZ3Vlc3QgcnVucyBpbiAzMmJpdCBQQUUgb3IgaW4gbG9uZyBtb2RlICovCi0gICAgICAgIGlm ICggIShodm1fcGFlX2VuYWJsZWQodikgfHwgaHZtX2xvbmdfbW9kZV9lbmFibGVkKHYpKSApCiAg ICAgICAgICAgICAqZWR4ICY9IH5jcHVmZWF0X21hc2soWDg2X0ZFQVRVUkVfUFNFMzYpOworICAg ICAgICB9CiAgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSAweDc6CiAgICAgICAgIGlmICggY291 bnQgPT0gMCApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICggIWNwdV9oYXNfc21lcCApCi0g ICAgICAgICAgICAgICAgKmVieCAmPSB+Y3B1ZmVhdF9tYXNrKFg4Nl9GRUFUVVJFX1NNRVApOwot Ci0gICAgICAgICAgICBpZiAoICFjcHVfaGFzX3NtYXAgKQotICAgICAgICAgICAgICAgICplYngg Jj0gfmNwdWZlYXRfbWFzayhYODZfRkVBVFVSRV9TTUFQKTsKKyAgICAgICAgICAgIC8qIEZvbGQg aG9zdCdzIEZEUF9FWENQX09OTFkgYW5kIE5PX0ZQVV9TRUwgaW50byBndWVzdCdzIHZpZXcuICov CisgICAgICAgICAgICAqZWJ4ICY9IChodm1fZmVhdHVyZXNldFtGRUFUVVJFU0VUXzdiMF0gJgor ICAgICAgICAgICAgICAgICAgICAgfnNwZWNpYWxfZmVhdHVyZXNbRkVBVFVSRVNFVF83YjBdKTsK KyAgICAgICAgICAgICplYnggfD0gKGhvc3RfZmVhdHVyZXNldFtGRUFUVVJFU0VUXzdiMF0gJgor ICAgICAgICAgICAgICAgICAgICAgc3BlY2lhbF9mZWF0dXJlc1tGRUFUVVJFU0VUXzdiMF0pOwog Ci0gICAgICAgICAgICAvKiBEb24ndCBleHBvc2UgTVBYIHRvIGh2bSB3aGVuIFZNWCBzdXBwb3J0 IGlzIG5vdCBhdmFpbGFibGUuICovCi0gICAgICAgICAgICBpZiAoICEodm14X3ZtZXhpdF9jb250 cm9sICYgVk1fRVhJVF9DTEVBUl9CTkRDRkdTKSB8fAotICAgICAgICAgICAgICAgICAhKHZteF92 bWVudHJ5X2NvbnRyb2wgJiBWTV9FTlRSWV9MT0FEX0JORENGR1MpICkKLSAgICAgICAgICAgICAg ICAqZWJ4ICY9IH5jcHVmZWF0X21hc2soWDg2X0ZFQVRVUkVfTVBYKTsKKyAgICAgICAgICAgICpl Y3ggJj0gaHZtX2ZlYXR1cmVzZXRbRkVBVFVSRVNFVF83YzBdOwogCisgICAgICAgICAgICAvKiBE b24ndCBleHBvc2UgSEFQLW9ubHkgZmVhdHVyZXMgdG8gbm9uLWhhcCBndWVzdHMuICovCiAgICAg ICAgICAgICBpZiAoICFoYXBfZW5hYmxlZChkKSApCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg ICAgICAgIC8qIERvbid0IGV4cG9zZSBJTlZQQ0lEIHRvIG5vbi1oYXAgaHZtLiAqLwogICAgICAg ICAgICAgICAgICAqZWJ4ICY9IH5jcHVmZWF0X21hc2soWDg2X0ZFQVRVUkVfSU5WUENJRCk7Ci0g ICAgICAgICAgICAgICAgIC8qIFg4Nl9GRUFUVVJFX1BLVSBpcyBub3QgeWV0IGltcGxlbWVudGVk IGZvciBzaGFkb3cgcGFnaW5nLiAqLwogICAgICAgICAgICAgICAgICAqZWN4ICY9IH5jcHVmZWF0 X21hc2soWDg2X0ZFQVRVUkVfUEtVKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYg KCAoKmVjeCAmIGNwdWZlYXRfbWFzayhYODZfRkVBVFVSRV9QS1UpKSAmJgotICAgICAgICAgICAg ICAgICAodi0+YXJjaC5odm1fdmNwdS5ndWVzdF9jcls0XSAmIFg4Nl9DUjRfUEtFKSApCisgICAg ICAgICAgICAvKiBPU1BLRSBjbGVhcmVkIGJ5IGh2bV9mZWF0dXJlc2V0LiAgRmFzdC1mb3J3YXJk IENSNCBiYWNrIGluLiAqLworICAgICAgICAgICAgaWYgKCB2LT5hcmNoLmh2bV92Y3B1Lmd1ZXN0 X2NyWzRdICYgWDg2X0NSNF9QS0UgKQogICAgICAgICAgICAgICAgICplY3ggfD0gY3B1ZmVhdF9t YXNrKFg4Nl9GRUFUVVJFX09TUEtFKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg ICAqZWN4ICY9IH5jcHVmZWF0X21hc2soWDg2X0ZFQVRVUkVfT1NQS0UpOwotCi0gICAgICAgICAg ICAvKiBEb24ndCBleHBvc2UgUENPTU1JVCB0byBodm0gd2hlbiBWTVggc3VwcG9ydCBpcyBub3Qg YXZhaWxhYmxlLiAqLwotICAgICAgICAgICAgaWYgKCAhY3B1X2hhc192bXhfcGNvbW1pdCApCi0g ICAgICAgICAgICAgICAgKmVieCAmPSB+Y3B1ZmVhdF9tYXNrKFg4Nl9GRUFUVVJFX1BDT01NSVQp OwogICAgICAgICB9Ci0KICAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIDB4YjoKICAgICAgICAg LyogRml4IHRoZSB4MkFQSUMgaWRlbnRpZmllci4gKi8KICAgICAgICAgKmVkeCA9IHYtPnZjcHVf aWQgKiAyOwogICAgICAgICBicmVhazsKKwogICAgIGNhc2UgMHhkOgogICAgICAgICAvKiBFQlgg dmFsdWUgb2YgbWFpbiBsZWFmIDAgZGVwZW5kcyBvbiBlbmFibGVkIHhzYXZlIGZlYXR1cmVzICov CiAgICAgICAgIGlmICggY291bnQgPT0gMCAmJiB2LT5hcmNoLnhjcjAgKSAKQEAgLTQ3NTAsOSAr NDc0NCwxMiBAQCB2b2lkIGh2bV9jcHVpZCh1bnNpZ25lZCBpbnQgaW5wdXQsIHVuc2lnbmVkIGlu dCAqZWF4LCB1bnNpZ25lZCBpbnQgKmVieCwKICAgICAgICAgICAgICAgICAgICAgKmVieCA9IF9l YXggKyBfZWJ4OwogICAgICAgICAgICAgfQogICAgICAgICB9CisKICAgICAgICAgaWYgKCBjb3Vu dCA9PSAxICkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCBjcHVfaGFzX3hzYXZlcyAmJiBj cHVfaGFzX3ZteF94c2F2ZXMgKQorICAgICAgICAgICAgKmVheCAmPSBodm1fZmVhdHVyZXNldFtG RUFUVVJFU0VUX0RhMV07CisKKyAgICAgICAgICAgIGlmICggKmVheCAmIGNwdWZlYXRfbWFzayhY ODZfRkVBVFVSRV9YU0FWRVMpICkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAqZWJ4 ID0gWFNUQVRFX0FSRUFfTUlOX1NJWkU7CiAgICAgICAgICAgICAgICAgaWYgKCB2LT5hcmNoLnhj cjAgfCB2LT5hcmNoLmh2bV92Y3B1Lm1zcl94c3MgKQpAQCAtNDc2NywyMCArNDc2NCwyNCBAQCB2 b2lkIGh2bV9jcHVpZCh1bnNpZ25lZCBpbnQgaW5wdXQsIHVuc2lnbmVkIGludCAqZWF4LCB1bnNp Z25lZCBpbnQgKmVieCwKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIDB4ODAwMDAwMDE6Ci0g ICAgICAgIC8qIFdlIGV4cG9zZSBSRFRTQ1AgZmVhdHVyZSB0byBndWVzdCBvbmx5IHdoZW4KLSAg ICAgICAgICAgdHNjX21vZGUgPT0gVFNDX01PREVfREVGQVVMVCBhbmQgaG9zdF90c2NfaXNfc2Fm ZSgpIHJldHVybnMgMSAqLwotICAgICAgICBpZiAoIGQtPmFyY2gudHNjX21vZGUgIT0gVFNDX01P REVfREVGQVVMVCB8fAotICAgICAgICAgICAgICFob3N0X3RzY19pc19zYWZlKCkgKQotICAgICAg ICAgICAgKmVkeCAmPSB+Y3B1ZmVhdF9tYXNrKFg4Nl9GRUFUVVJFX1JEVFNDUCk7Ci0gICAgICAg IC8qIEhpZGUgMUdCLXN1cGVycGFnZSBmZWF0dXJlIGlmIHdlIGNhbid0IGVtdWxhdGUgaXQuICov Ci0gICAgICAgIGlmICghaHZtX3BzZTFnYl9zdXBwb3J0ZWQoZCkpCi0gICAgICAgICAgICAqZWR4 ICY9IH5jcHVmZWF0X21hc2soWDg2X0ZFQVRVUkVfUEFHRTFHQik7Ci0gICAgICAgIC8qIE9ubHkg cHJvdmlkZSBQU0UzNiB3aGVuIGd1ZXN0IHJ1bnMgaW4gMzJiaXQgUEFFIG9yIGluIGxvbmcgbW9k ZSAqLwotICAgICAgICBpZiAoICEoaHZtX3BhZV9lbmFibGVkKHYpIHx8IGh2bV9sb25nX21vZGVf ZW5hYmxlZCh2KSkgKQotICAgICAgICAgICAgKmVkeCAmPSB+Y3B1ZmVhdF9tYXNrKFg4Nl9GRUFU VVJFX1BTRTM2KTsKLSAgICAgICAgLyogSGlkZSBkYXRhIGJyZWFrcG9pbnQgZXh0ZW5zaW9ucyBp ZiB0aGUgaGFyZHdhcmUgaGFzIG5vIHN1cHBvcnQuICovCi0gICAgICAgIGlmICggIWJvb3RfY3B1 X2hhcyhYODZfRkVBVFVSRV9EQkVYVCkgKQotICAgICAgICAgICAgKmVjeCAmPSB+Y3B1ZmVhdF9t YXNrKFg4Nl9GRUFUVVJFX0RCRVhUKTsKKyAgICAgICAgKmVjeCAmPSBodm1fZmVhdHVyZXNldFtG RUFUVVJFU0VUX2UxY107CisgICAgICAgICplZHggJj0gaHZtX2ZlYXR1cmVzZXRbRkVBVFVSRVNF VF9lMWRdOworCisgICAgICAgIC8qIElmIGVtdWxhdGluZyBJbnRlbCwgY2xlYXIgdGhlIGR1cGxp Y2F0ZWQgZmVhdHVyZXMgaW4gZTFkLiAqLworICAgICAgICBpZiAoIGQtPmFyY2gueDg2X3ZlbmRv ciA9PSBYODZfVkVORE9SX0lOVEVMICkKKyAgICAgICAgICAgICplZHggJj0gfkNQVUlEX0NPTU1P Tl8xRF9GRUFUVVJFUzsKKyAgICAgICAgLyogZmFzdC1mb3J3YXJkIE1TUl9BUElDX0JBU0UuRU4g aWYgaXQgaGFzbid0IGFscmVhZHkgYmVlbiBjbG9iYmVyZWQuICovCisgICAgICAgIGVsc2UgaWYg KCB2bGFwaWNfaHdfZGlzYWJsZWQodmNwdV92bGFwaWModikpICkKKyAgICAgICAgICAgICplZHgg Jj0gfmNwdWZlYXRfYml0KFg4Nl9GRUFUVVJFX0FQSUMpOworCisgICAgICAgIC8qIERvbid0IGV4 cG9zZSBIQVAtb25seSBmZWF0dXJlcyB0byBub24taGFwIGd1ZXN0cy4gKi8KKyAgICAgICAgaWYg KCAhaGFwX2VuYWJsZWQoZCkgKQorICAgICAgICAgICAgKmVkeCAmPSB+KGNwdWZlYXRfbWFzayhY ODZfRkVBVFVSRV9QQUdFMUdCKSB8CisgICAgICAgICAgICAgICAgICAgICAgY3B1ZmVhdF9tYXNr KFg4Nl9GRUFUVVJFX1BTRTM2KSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSAweDgwMDAw MDA3OgorICAgICAgICAqZWR4ICY9IGh2bV9mZWF0dXJlc2V0W0ZFQVRVUkVTRVRfZTdkXTsKICAg ICAgICAgYnJlYWs7CiAKICAgICBjYXNlIDB4ODAwMDAwMDg6CkBAIC00Nzk4LDYgKzQ3OTksOCBA QCB2b2lkIGh2bV9jcHVpZCh1bnNpZ25lZCBpbnQgaW5wdXQsIHVuc2lnbmVkIGludCAqZWF4LCB1 bnNpZ25lZCBpbnQgKmVieCwKICAgICAgICAgaHZtX2NwdWlkKDB4ODAwMDAwMDEsIE5VTEwsIE5V TEwsIE5VTEwsICZfZWR4KTsKICAgICAgICAgKmVheCA9ICgqZWF4ICYgfjB4ZmZmZjAwKSB8IChf ZWR4ICYgY3B1ZmVhdF9tYXNrKFg4Nl9GRUFUVVJFX0xNKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgID8gMHgzMDAwIDogMHgyMDAwKTsKKworICAgICAgICAqZWJ4ICY9IGh2 bV9mZWF0dXJlc2V0W0ZFQVRVUkVTRVRfZThiXTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpk aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3RyYXBzLmMgYi94ZW4vYXJjaC94ODYvdHJhcHMuYwpp bmRleCA2ZmJiMWNmLi5iMjMzYzM3IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvdHJhcHMuYwor KysgYi94ZW4vYXJjaC94ODYvdHJhcHMuYwpAQCAtNzMsNiArNzMsNyBAQAogI2luY2x1ZGUgPGFz bS9ocGV0Lmg+CiAjaW5jbHVkZSA8YXNtL3ZwbXUuaD4KICNpbmNsdWRlIDxwdWJsaWMvYXJjaC14 ODYvY3B1aWQuaD4KKyNpbmNsdWRlIDxhc20vY3B1aWQuaD4KICNpbmNsdWRlIDx4c20veHNtLmg+ CiAKIC8qCkBAIC05MzIsNjkgKzkzMyw4NiBAQCB2b2lkIHB2X2NwdWlkKHN0cnVjdCBjcHVfdXNl cl9yZWdzICpyZWdzKQogICAgIGVsc2UKICAgICAgICAgY3B1aWRfY291bnQobGVhZiwgc3VibGVh ZiwgJmEsICZiLCAmYywgJmQpOwogCi0gICAgaWYgKCAobGVhZiAmIDB4N2ZmZmZmZmYpID09IDB4 MDAwMDAwMDEgKQotICAgIHsKLSAgICAgICAgLyogTW9kaWZ5IEZlYXR1cmUgSW5mb3JtYXRpb24u ICovCi0gICAgICAgIGlmICggIWNwdV9oYXNfYXBpYyApCi0gICAgICAgICAgICBfX2NsZWFyX2Jp dChYODZfRkVBVFVSRV9BUElDLCAmZCk7Ci0KLSAgICAgICAgaWYgKCAhaXNfcHZoX2RvbWFpbihj dXJyZCkgKQotICAgICAgICB7Ci0gICAgICAgICAgICBfX2NsZWFyX2JpdChYODZfRkVBVFVSRV9Q U0UsICZkKTsKLSAgICAgICAgICAgIF9fY2xlYXJfYml0KFg4Nl9GRUFUVVJFX1BHRSwgJmQpOwot ICAgICAgICAgICAgX19jbGVhcl9iaXQoWDg2X0ZFQVRVUkVfUFNFMzYsICZkKTsKLSAgICAgICAg ICAgIF9fY2xlYXJfYml0KFg4Nl9GRUFUVVJFX1ZNRSwgJmQpOwotICAgICAgICB9Ci0gICAgfQot CiAgICAgc3dpdGNoICggbGVhZiApCiAgICAgewogICAgIGNhc2UgMHgwMDAwMDAwMToKLSAgICAg ICAgLyogTW9kaWZ5IEZlYXR1cmUgSW5mb3JtYXRpb24uICovCi0gICAgICAgIGlmICggIWNwdV9o YXNfc2VwICkKLSAgICAgICAgICAgIF9fY2xlYXJfYml0KFg4Nl9GRUFUVVJFX1NFUCwgJmQpOwot ICAgICAgICBfX2NsZWFyX2JpdChYODZfRkVBVFVSRV9EUywgJmQpOwotICAgICAgICBfX2NsZWFy X2JpdChYODZfRkVBVFVSRV9UTTEsICZkKTsKLSAgICAgICAgX19jbGVhcl9iaXQoWDg2X0ZFQVRV UkVfUEJFLCAmZCk7Ci0gICAgICAgIGlmICggaXNfcHZoX2RvbWFpbihjdXJyZCkgKQotICAgICAg ICAgICAgX19jbGVhcl9iaXQoWDg2X0ZFQVRVUkVfTVRSUiwgJmQpOwotCi0gICAgICAgIF9fY2xl YXJfYml0KFg4Nl9GRUFUVVJFX0RURVM2NCAlIDMyLCAmYyk7Ci0gICAgICAgIF9fY2xlYXJfYml0 KFg4Nl9GRUFUVVJFX01PTklUT1IgJSAzMiwgJmMpOwotICAgICAgICBfX2NsZWFyX2JpdChYODZf RkVBVFVSRV9EU0NQTCAlIDMyLCAmYyk7Ci0gICAgICAgIF9fY2xlYXJfYml0KFg4Nl9GRUFUVVJF X1ZNWCAlIDMyLCAmYyk7Ci0gICAgICAgIF9fY2xlYXJfYml0KFg4Nl9GRUFUVVJFX1NNWCAlIDMy LCAmYyk7Ci0gICAgICAgIF9fY2xlYXJfYml0KFg4Nl9GRUFUVVJFX1RNMiAlIDMyLCAmYyk7Cisg ICAgICAgIGMgJj0gcHZfZmVhdHVyZXNldFtGRUFUVVJFU0VUXzFjXTsKKyAgICAgICAgZCAmPSBw dl9mZWF0dXJlc2V0W0ZFQVRVUkVTRVRfMWRdOworCiAgICAgICAgIGlmICggaXNfcHZfMzJiaXRf ZG9tYWluKGN1cnJkKSApCi0gICAgICAgICAgICBfX2NsZWFyX2JpdChYODZfRkVBVFVSRV9DWDE2 ICUgMzIsICZjKTsKLSAgICAgICAgX19jbGVhcl9iaXQoWDg2X0ZFQVRVUkVfWFRQUiAlIDMyLCAm Yyk7Ci0gICAgICAgIF9fY2xlYXJfYml0KFg4Nl9GRUFUVVJFX1BEQ00gJSAzMiwgJmMpOwotICAg ICAgICBfX2NsZWFyX2JpdChYODZfRkVBVFVSRV9QQ0lEICUgMzIsICZjKTsKLSAgICAgICAgX19j bGVhcl9iaXQoWDg2X0ZFQVRVUkVfRENBICUgMzIsICZjKTsKLSAgICAgICAgaWYgKCAhY3B1X2hh c194c2F2ZSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIF9fY2xlYXJfYml0KFg4Nl9GRUFUVVJF X1hTQVZFICUgMzIsICZjKTsKLSAgICAgICAgICAgIF9fY2xlYXJfYml0KFg4Nl9GRUFUVVJFX0FW WCAlIDMyLCAmYyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCAhY3B1X2hhc19hcGljICkKLSAg ICAgICAgICAgX19jbGVhcl9iaXQoWDg2X0ZFQVRVUkVfWDJBUElDICUgMzIsICZjKTsKLSAgICAg ICAgX19zZXRfYml0KFg4Nl9GRUFUVVJFX0hZUEVSVklTT1IgJSAzMiwgJmMpOworICAgICAgICAg ICAgYyAmPSB+Y3B1ZmVhdF9tYXNrKFg4Nl9GRUFUVVJFX0NYMTYpOworCisgICAgICAgIC8qCisg ICAgICAgICAqICEhISBXYXJuaW5nIC0gT1NYU0FWRSBoYW5kbGluZyBmb3IgUFYgZ3Vlc3RzIGlz IG5vbi1hcmNoaXRlY3R1cmFsICEhIQorICAgICAgICAgKgorICAgICAgICAgKiBBcmNoaXRlY3R1 cmFsbHksIHRoZSBjb3JyZWN0IGNvZGUgaGVyZSBpcyBzaW1wbHk6CisgICAgICAgICAqCisgICAg ICAgICAqICAgaWYgKCBjdXJyLT5hcmNoLnB2X3ZjcHUuY3RybHJlZ1s0XSAmIFg4Nl9DUjRfT1NY U0FWRSApCisgICAgICAgICAqICAgICAgIGMgfD0gY3B1ZmVhdF9tYXNrKFg4Nl9GRUFUVVJFX09T WFNBVkUpOworICAgICAgICAgKgorICAgICAgICAgKiBIb3dldmVyIGJlY2F1c2Ugb2YgYnVncyBp biBYZW4gKGJlZm9yZSBjL3MgYmQxOTA4MGIsIE5vdiAyMDEwLCB0aGUKKyAgICAgICAgICogWFNB VkUgY3B1aWQgZmxhZyBsZWFrZWQgaW50byBndWVzdHMgZGVzcGl0ZSB0aGUgZmVhdHVyZSBub3Qg YmVpbmcKKyAgICAgICAgICogYXZpbGFibGUgZm9yIHVzZSksIGJ1Z2d5IHdvcmthcm91bmRzIHdo ZXJlIGludHJvZHVjZWQgdG8gTGludXggKGMvcworICAgICAgICAgKiA5NDdjY2Y5YywgYWxzbyBO b3YgMjAxMCkgd2hpY2ggcmVsaWVkIG9uIHRoZSBmYWN0IHRoYXQgWGVuIGFsc28KKyAgICAgICAg ICogaW5jb3JyZWN0bHkgbGVha2VkIE9TWFNBVkUgaW50byB0aGUgZ3Vlc3QuCisgICAgICAgICAq CisgICAgICAgICAqIEZ1cnRoZXJtb3JlLCBwcm92aWRpbmcgYXJjaGl0ZWN0dXJhbCBPU1hTQVZF IGJlaGF2aW91ciB0byBhIG1hbnkKKyAgICAgICAgICogTGludXggUFYgZ3Vlc3RzIHRyaWdnZXJl ZCBhIGZ1cnRoZXIga2VybmVsIGJ1ZyB3aGVuIHRoZSBmcHUgY29kZQorICAgICAgICAgKiBvYnNl cnZlcyB0aGF0IFhTQVZFT1BUIGlzIGF2YWlsYWJsZSwgYXNzdW1lcyB0aGF0IHhzYXZlIHN0YXRl IGhhZAorICAgICAgICAgKiBiZWVuIHNldCB1cCBmb3IgdGhlIHRhc2ssIGFuZCBmb2xsb3dzIGEg d2lsZCBwb2ludGVyLgorICAgICAgICAgKgorICAgICAgICAgKiBPbGRlciBMaW51eCBQVk9QUyBr ZXJuZWxzIGhvd2V2ZXIgZG8gcmVxdWlyZSBhcmNoaXRlY3RydWFsCisgICAgICAgICAqIGJlaGF2 aW91ci4gIFRoZXkgb2JzZXJ2ZSBYZW4ncyBsZWFrZWQgT1NYU0FWRSBhbmQgYXNzdW1lIHRoZXkg Y2FuCisgICAgICAgICAqIGFscmVhZHkgdXNlIFhTRVRCViwgZHlpbmcgd2l0aCBhICNVRCBiZWNh dXNlIHRoZSBzaGFkb3dlZAorICAgICAgICAgKiBDUjQuT1NYU0FWRSBpcyBjbGVhci4gIFRoaXMg YmVoYXZpb3VyIGhhcyBiZWVuIGFkanVzdGVkIGluIGFsbAorICAgICAgICAgKiBvYnNlcnZlZCBj YXNlcyB2aWEgc3RhYmxlIGJhY2twb3J0cyBvZiB0aGUgYWJvdmUgY2hhbmdlc2V0LgorICAgICAg ICAgKgorICAgICAgICAgKiBUaGVyZWZvcmUsIHRoZSBsZWFraW5nIG9mIFhlbidzIE9TWFNBVkUg c2V0dGluZyBoYXMgYmVjb21lIGEKKyAgICAgICAgICogZGVmYWN0byBwYXJ0IG9mIHRoZSBQViBB QkkgYW5kIGNhbid0IHJlYXNvbmFibHkgYmUgY29ycmVjdGVkLgorICAgICAgICAgKgorICAgICAg ICAgKiBUaGUgZm9sbG93aW5nIHNpdHVhdGlvbnMgYW5kIGxvZ2ljIG5vdyBhcHBsaWVzOgorICAg ICAgICAgKgorICAgICAgICAgKiAtIEhhcmR3YXJlIHdpdGhvdXQgQ1BVSUQgZmF1bHRpbmcgc3Vw cG9ydCBhbmQgbmF0aXZlIENQVUlEOgorICAgICAgICAgKiAgICBUaGVyZSBpcyBub3RoaW5nIFhl biBjYW4gZG8gaGVyZS4gIFRoZSBob3N0cyBYU0FWRSBmbGFnIHdpbGwKKyAgICAgICAgICogICAg bGVhayB0aHJvdWdoIGFuZCBYZW4ncyBPU1hTQVZFIGNob2ljZSB3aWxsIGxlYWsgdGhyb3VnaC4K KyAgICAgICAgICoKKyAgICAgICAgICogICAgSW4gdGhlIGNhc2UgdGhhdCB0aGUgZ3Vlc3Qga2Vy bmVsIGhhcyBub3Qgc2V0IHVwIE9TWFNBVkUsIG9ubHkKKyAgICAgICAgICogICAgU1NFIHdpbGwg YmUgc2V0IGluIHhjcjAsIGFuZCBndWVzdCB1c2Vyc3BhY2UgY2FuJ3QgZG8gdG9vIG11Y2gKKyAg ICAgICAgICogICAgZGFtYWdlIGl0c2VsZi4KKyAgICAgICAgICoKKyAgICAgICAgICogLSBFbmxp Z2h0ZW5lZCBDUFVJRCBvciBDUFVJRCBmYXVsdGluZyBhdmFpbGFibGU6CisgICAgICAgICAqICAg IFhlbiBjYW4gZnVsbHkgY29udHJvbCB3aGF0IGlzIHNlZW4gaGVyZS4gIEd1ZXN0IGtlcm5lbHMg bmVlZCB0bworICAgICAgICAgKiAgICBzZWUgdGhlIGxlYWtlZCBPU1hTQVZFLCBidXQgZ3Vlc3Qg dXNlcnNwYWNlIGlzIGdpdmVuCisgICAgICAgICAqICAgIGFyY2hpdGVjdHVyYWwgYmVoYXZpb3Vy LCB0byByZWZsZWN0IHRoZSBndWVzdCBrZXJuZWxzCisgICAgICAgICAqICAgIGludGVudGlvbnMu CisgICAgICAgICAqLworICAgICAgICAvKiBPU1hTQVZFIGNsZWFyZWQgYnkgcHZfZmVhdHVyZXNl dC4gIEZhc3QtZm9yd2FyZCBDUjQgYmFjayBpbi4gKi8KKyAgICAgICAgaWYgKCAoaXNfcHZfZG9t YWluKGN1cnJkKSAmJiBndWVzdF9rZXJuZWxfbW9kZShjdXJyLCByZWdzKSAmJgorICAgICAgICAg ICAgICAodGhpc19jcHUoY3I0KSAmIFg4Nl9DUjRfT1NYU0FWRSkpIHx8CisgICAgICAgICAgICAg KGN1cnItPmFyY2gucHZfdmNwdS5jdHJscmVnWzRdICYgWDg2X0NSNF9PU1hTQVZFKSApCisgICAg ICAgICAgICBjIHw9IGNwdWZlYXRfbWFzayhYODZfRkVBVFVSRV9PU1hTQVZFKTsKKworICAgICAg ICBjIHw9IGNwdWZlYXRfbWFzayhYODZfRkVBVFVSRV9IWVBFUlZJU09SKTsKICAgICAgICAgYnJl YWs7CiAKICAgICBjYXNlIDB4MDAwMDAwMDc6CiAgICAgICAgIGlmICggc3VibGVhZiA9PSAwICkK LSAgICAgICAgICAgIGIgJj0gKGNwdWZlYXRfbWFzayhYODZfRkVBVFVSRV9CTUkxKSB8Ci0gICAg ICAgICAgICAgICAgICBjcHVmZWF0X21hc2soWDg2X0ZFQVRVUkVfSExFKSAgfAotICAgICAgICAg ICAgICAgICAgY3B1ZmVhdF9tYXNrKFg4Nl9GRUFUVVJFX0FWWDIpIHwKLSAgICAgICAgICAgICAg ICAgIGNwdWZlYXRfbWFzayhYODZfRkVBVFVSRV9CTUkyKSB8Ci0gICAgICAgICAgICAgICAgICBj cHVmZWF0X21hc2soWDg2X0ZFQVRVUkVfRVJNUykgfAotICAgICAgICAgICAgICAgICAgY3B1ZmVh dF9tYXNrKFg4Nl9GRUFUVVJFX1JUTSkgIHwKLSAgICAgICAgICAgICAgICAgIGNwdWZlYXRfbWFz ayhYODZfRkVBVFVSRV9SRFNFRUQpICB8Ci0gICAgICAgICAgICAgICAgICBjcHVmZWF0X21hc2so WDg2X0ZFQVRVUkVfQURYKSAgfAotICAgICAgICAgICAgICAgICAgY3B1ZmVhdF9tYXNrKFg4Nl9G RUFUVVJFX0ZTR1NCQVNFKSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIC8qIEZvbGQgaG9zdCdz IEZEUF9FWENQX09OTFkgYW5kIE5PX0ZQVV9TRUwgaW50byBndWVzdCdzIHZpZXcuICovCisgICAg ICAgICAgICBiICY9IChwdl9mZWF0dXJlc2V0W0ZFQVRVUkVTRVRfN2IwXSAmCisgICAgICAgICAg ICAgICAgICB+c3BlY2lhbF9mZWF0dXJlc1tGRUFUVVJFU0VUXzdiMF0pOworICAgICAgICAgICAg YiB8PSAoaG9zdF9mZWF0dXJlc2V0W0ZFQVRVUkVTRVRfN2IwXSAmCisgICAgICAgICAgICAgICAg ICBzcGVjaWFsX2ZlYXR1cmVzW0ZFQVRVUkVTRVRfN2IwXSk7CisKKyAgICAgICAgICAgIGMgJj0g cHZfZmVhdHVyZXNldFtGRUFUVVJFU0VUXzdjMF07CisKKyAgICAgICAgICAgIC8qIE9TUEtFIGNs ZWFyZWQgYnkgcHZfZmVhdHVyZXNldC4gIEZhc3QtZm9yd2FyZCBDUjQgYmFjayBpbi4gKi8KKyAg ICAgICAgICAgIGlmICggY3Vyci0+YXJjaC5wdl92Y3B1LmN0cmxyZWdbNF0gJiBYODZfQ1I0X1BL RSApCisgICAgICAgICAgICAgICAgYyB8PSBjcHVmZWF0X21hc2soWDg2X0ZFQVRVUkVfT1NQS0Up OworICAgICAgICB9CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGIgPSAwOwotICAgICAgICBh ID0gYyA9IGQgPSAwOworICAgICAgICAgICAgYiA9IGMgPSAwOworICAgICAgICBhID0gZCA9IDA7 CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBYU1RBVEVfQ1BVSUQ6CkBAIC0xMDE3LDM3ICsx MDM1LDM2IEBAIHZvaWQgcHZfY3B1aWQoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiAgICAg ICAgIH0KIAogICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICBhICY9IChib290X2NwdV9kYXRh Lng4Nl9jYXBhYmlsaXR5W2NwdWZlYXRfd29yZChYODZfRkVBVFVSRV9YU0FWRU9QVCldICYKLSAg ICAgICAgICAgICAgICAgIH5jcHVmZWF0X21hc2soWDg2X0ZFQVRVUkVfWFNBVkVTKSk7CisgICAg ICAgICAgICBhICY9IHB2X2ZlYXR1cmVzZXRbRkVBVFVSRVNFVF9EYTFdOwogICAgICAgICAgICAg YiA9IGMgPSBkID0gMDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGJy ZWFrOwogCiAgICAgY2FzZSAweDgwMDAwMDAxOgotICAgICAgICAvKiBNb2RpZnkgRmVhdHVyZSBJ bmZvcm1hdGlvbi4gKi8KKyAgICAgICAgYyAmPSBwdl9mZWF0dXJlc2V0W0ZFQVRVUkVTRVRfZTFj XTsKKyAgICAgICAgZCAmPSBwdl9mZWF0dXJlc2V0W0ZFQVRVUkVTRVRfZTFkXTsKKworICAgICAg ICAvKiBJZiBlbXVsYXRpbmcgSW50ZWwsIGNsZWFyIHRoZSBkdXBsaWNhdGVkIGZlYXR1cmVzIGlu IGUxZC4gKi8KKyAgICAgICAgaWYgKCBjdXJyZC0+YXJjaC54ODZfdmVuZG9yID09IFg4Nl9WRU5E T1JfSU5URUwgKQorICAgICAgICAgICAgZCAmPSB+Q1BVSURfQ09NTU9OXzFEX0ZFQVRVUkVTOwor CiAgICAgICAgIGlmICggaXNfcHZfMzJiaXRfZG9tYWluKGN1cnJkKSApCiAgICAgICAgIHsKLSAg ICAgICAgICAgIF9fY2xlYXJfYml0KFg4Nl9GRUFUVVJFX0xNICUgMzIsICZkKTsKLSAgICAgICAg ICAgIF9fY2xlYXJfYml0KFg4Nl9GRUFUVVJFX0xBSEZfTE0gJSAzMiwgJmMpOworICAgICAgICAg ICAgZCAmPSB+Y3B1ZmVhdF9tYXNrKFg4Nl9GRUFUVVJFX0xNKTsKKyAgICAgICAgICAgIGMgJj0g fmNwdWZlYXRfbWFzayhYODZfRkVBVFVSRV9MQUhGX0xNKTsKKworICAgICAgICAgICAgaWYgKCBi b290X2NwdV9kYXRhLng4Nl92ZW5kb3IgIT0gWDg2X1ZFTkRPUl9BTUQgKQorICAgICAgICAgICAg ICAgIGQgJj0gfmNwdWZlYXRfbWFzayhYODZfRkVBVFVSRV9TWVNDQUxMKTsKICAgICAgICAgfQot ICAgICAgICBpZiAoIGlzX3B2XzMyYml0X2RvbWFpbihjdXJyZCkgJiYKLSAgICAgICAgICAgICBi b290X2NwdV9kYXRhLng4Nl92ZW5kb3IgIT0gWDg2X1ZFTkRPUl9BTUQgKQotICAgICAgICAgICAg X19jbGVhcl9iaXQoWDg2X0ZFQVRVUkVfU1lTQ0FMTCAlIDMyLCAmZCk7Ci0gICAgICAgIF9fY2xl YXJfYml0KFg4Nl9GRUFUVVJFX1BBR0UxR0IgJSAzMiwgJmQpOwotICAgICAgICBfX2NsZWFyX2Jp dChYODZfRkVBVFVSRV9SRFRTQ1AgJSAzMiwgJmQpOwotCi0gICAgICAgIF9fY2xlYXJfYml0KFg4 Nl9GRUFUVVJFX1NWTSAlIDMyLCAmYyk7Ci0gICAgICAgIGlmICggIWNwdV9oYXNfYXBpYyApCi0g ICAgICAgICAgIF9fY2xlYXJfYml0KFg4Nl9GRUFUVVJFX0VYVEFQSUMgJSAzMiwgJmMpOwotICAg ICAgICBfX2NsZWFyX2JpdChYODZfRkVBVFVSRV9PU1ZXICUgMzIsICZjKTsKLSAgICAgICAgX19j bGVhcl9iaXQoWDg2X0ZFQVRVUkVfSUJTICUgMzIsICZjKTsKLSAgICAgICAgX19jbGVhcl9iaXQo WDg2X0ZFQVRVUkVfU0tJTklUICUgMzIsICZjKTsKLSAgICAgICAgX19jbGVhcl9iaXQoWDg2X0ZF QVRVUkVfV0RUICUgMzIsICZjKTsKLSAgICAgICAgX19jbGVhcl9iaXQoWDg2X0ZFQVRVUkVfTFdQ ICUgMzIsICZjKTsKLSAgICAgICAgX19jbGVhcl9iaXQoWDg2X0ZFQVRVUkVfTk9ERUlEX01TUiAl IDMyLCAmYyk7Ci0gICAgICAgIF9fY2xlYXJfYml0KFg4Nl9GRUFUVVJFX1RPUE9FWFQgJSAzMiwg JmMpOwotICAgICAgICBfX2NsZWFyX2JpdChYODZfRkVBVFVSRV9NT05JVE9SWCAlIDMyLCAmYyk7 CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSAweDgwMDAwMDA3OgorICAgICAgICBkICY9IHB2 X2ZlYXR1cmVzZXRbRkVBVFVSRVNFVF9lN2RdOworICAgICAgICBicmVhazsKKworICAgIGNhc2Ug MHg4MDAwMDAwODoKKyAgICAgICAgYiAmPSBwdl9mZWF0dXJlc2V0W0ZFQVRVUkVTRVRfZThiXTsK ICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIDB4MDAwMDAwMGE6IC8qIEFyY2hpdGVjdHVyYWwg UGVyZm9ybWFuY2UgTW9uaXRvciBGZWF0dXJlcyAoSW50ZWwpICovCi0tIAoyLjEuNAoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWls aW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVu LWRldmVsCg==