From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v2 09/17] x86emul: support AVX2 gather insns Date: Thu, 14 Sep 2017 09:17:05 -0600 Message-ID: <59BAB991020000780017B39F@prv-mh.provo.novell.com> References: <59BAB38A020000780017B34E@prv-mh.provo.novell.com> <59BAB38A020000780017B34E@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dsVtB-0003Pq-3J for xen-devel@lists.xenproject.org; Thu, 14 Sep 2017 15:17:13 +0000 In-Reply-To: <59BAB38A020000780017B34E@prv-mh.provo.novell.com> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel Cc: George Dunlap , Andrew Cooper List-Id: xen-devel@lists.xenproject.org U2lnbmVkLW9mZi1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgoKLS0tIGEvdG9v bHMvdGVzdHMveDg2X2VtdWxhdG9yL01ha2VmaWxlCisrKyBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVs YXRvci9NYWtlZmlsZQpAQCAtMTMsNyArMTMsOCBAQCBydW46ICQoVEFSR0VUKQogCiBTSU1EIDo9 IHNzZSBzc2UyIHNzZTQgYXZ4IGF2eDIKIEZNQSA6PSBmbWE0IGZtYQotVEVTVENBU0VTIDo9IGJs b3dmaXNoICQoU0lNRCkgJChGTUEpCitTRyA6PSBhdngyLXNnCitURVNUQ0FTRVMgOj0gYmxvd2Zp c2ggJChTSU1EKSAkKEZNQSkgJChTRykKIAogYmxvd2Zpc2gtY2ZsYWdzIDo9ICIiCiBibG93Zmlz aC1jZmxhZ3MteDg2XzMyIDo9ICItbW5vLWFjY3VtdWxhdGUtb3V0Z29pbmctYXJncyAtRHN0YXRp Yz0iCkBAIC0zOSw2ICs0MCwxMCBAQCBmbWEtZmx0cyA6PSAkKGF2eC1mbHRzKQogYXZ4Mi12ZWNz IDo9ICQoYXZ4LXZlY3MpCiBhdngyLWludHMgOj0gMSAyIDQgOAogYXZ4Mi1mbHRzIDo9IDQgOAor YXZ4Mi1zZy12ZWNzIDo9ICQoYXZ4Mi12ZWNzKQorYXZ4Mi1zZy1pZHhzIDo9IDQgOAorYXZ4Mi1z Zy1pbnRzIDo9IDQgOAorYXZ4Mi1zZy1mbHRzIDo9IDQgOAogCiAjIEZvciBBVlggYW5kIGxhdGVy LCBoYXZlIHRoZSBjb21waWxlciBhdm9pZCBYTU0wIHRvIHdpZGVuIGNvdmVyYWdlIG9mCiAjIHRo ZSBWRVgudnZ2diBjaGVja3MgaW4gdGhlIGVtdWxhdG9yLgpAQCAtNTUsOCArNjAsMTggQEAgJCgx KS1jZmxhZ3MgOj0gXAogCSQoZm9yZWFjaCBmbHQsJCgkKDEpLWZsdHMpLCBcCiAJICAiLURfZiQo Zmx0KSAtbSQoMSkgJChjYWxsIG5vbi1zc2UsJCgxKSkgLW1mcG1hdGg9c3NlIC1PcyAtREZMT0FU X1NJWkU9JChmbHQpIikKIGVuZGVmCitkZWZpbmUgc2ltZC1zZy1kZWZzCiskKDEpLWNmbGFncyA6 PSBcCisJJChmb3JlYWNoIHZlYywkKCQoMSktdmVjcyksIFwKKwkgICQoZm9yZWFjaCBpZHgsJCgk KDEpLWlkeHMpLCBcCisJICAgJChmb3JlYWNoIGludCwkKCQoMSktaW50cyksIFwKKwkgICAgICIt RF8kKHZlYyl4JChpZHgpaSQoaW50KSAtbSQoMTotc2c9KSAkKGNhbGwgbm9uLXNzZSwkKDEpKSAt T3MgLURWRUNfTUFYPSQodmVjKSAtRElEWF9TSVpFPSQoaWR4KSAtRElOVF9TSVpFPSQoaW50KSIp IFwKKwkgICAkKGZvcmVhY2ggZmx0LCQoJCgxKS1mbHRzKSwgXAorCSAgICAgIi1EXyQodmVjKXgk KGlkeClmJChmbHQpIC1tJCgxOi1zZz0pICQoY2FsbCBub24tc3NlLCQoMSkpIC1PcyAtRFZFQ19N QVg9JCh2ZWMpIC1ESURYX1NJWkU9JChpZHgpIC1ERkxPQVRfU0laRT0kKGZsdCkiKSkpCitlbmRl ZgogCiAkKGZvcmVhY2ggZmxhdm9yLCQoU0lNRCkgJChGTUEpLCQoZXZhbCAkKGNhbGwgc2ltZC1k ZWZzLCQoZmxhdm9yKSkpKQorJChmb3JlYWNoIGZsYXZvciwkKFNHKSwkKGV2YWwgJChjYWxsIHNp bWQtc2ctZGVmcywkKGZsYXZvcikpKSkKIAogJChhZGRzdWZmaXggLmgsJChURVNUQ0FTRVMpKTog JS5oOiAlLmMgdGVzdGNhc2UubWsgTWFrZWZpbGUKIAlybSAtZiAkQC5uZXcgJCouYmluCkBAIC03 OCw3ICs5MywxMCBAQCAkKGFkZHN1ZmZpeCAuYywkKFNJTUQpKToKICQoYWRkc3VmZml4IC5jLCQo Rk1BKSk6CiAJbG4gLXNmIHNpbWQtZm1hLmMgJEAKIAotJChhZGRzdWZmaXggLm8sJChTSU1EKSAk KEZNQSkpOiBzaW1kLmgKKyQoYWRkc3VmZml4IC5jLCQoU0cpKToKKwlsbiAtc2Ygc2ltZC1zZy5j ICRACisKKyQoYWRkc3VmZml4IC5vLCQoU0lNRCkgJChGTUEpICQoU0cpKTogc2ltZC5oCiAKICQo VEFSR0VUKTogeDg2X2VtdWxhdGUubyB0ZXN0X3g4Nl9lbXVsYXRvci5vCiAJJChIT1NUQ0MpIC1v ICRAICReCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3NpbWQt c2cuYwpAQCAtMCwwICsxLDIwOSBAQAorI2lmZGVmIElOVF9TSVpFCisjIGRlZmluZSBFTEVNX1NJ WkUgSU5UX1NJWkUKKyNlbHNlCisjIGRlZmluZSBFTEVNX1NJWkUgRkxPQVRfU0laRQorI2VuZGlm CisKKyNkZWZpbmUgVkVDX1NJWkUgKElEWF9TSVpFIDw9IEVMRU1fU0laRSA/IFZFQ19NQVggXAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogVkVDX01BWCAqIEVMRU1f U0laRSAvIElEWF9TSVpFKQorI2lmIFZFQ19TSVpFIDwgMTYKKyMgdW5kZWYgVkVDX1NJWkUKKyMg ZGVmaW5lIFZFQ19TSVpFIDE2CisjZW5kaWYKKworI2luY2x1ZGUgInNpbWQuaCIKKworRU5UUlko c2dfdGVzdCk7CisKKyN1bmRlZiBNT0RFCisjaWYgSURYX1NJWkUgPT0gNAorIyBkZWZpbmUgTU9E RSBTSQorI2VsaWYgSURYX1NJWkUgPT0gOAorIyBkZWZpbmUgTU9ERSBESQorI2VuZGlmCisKKyNk ZWZpbmUgSVZFQ19TSVpFIChFTEVNX1NJWkUgPD0gSURYX1NJWkUgPyBWRUNfTUFYIFwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBWRUNfTUFYICogSURYX1NJWkUg LyBFTEVNX1NJWkUpCisjaWYgSVZFQ19TSVpFIDwgMTYKKyMgdW5kZWYgSVZFQ19TSVpFCisjIGRl ZmluZSBJVkVDX1NJWkUgMTYKKyNlbmRpZgorCit0eXBlZGVmIHNpZ25lZCBpbnQgX19hdHRyaWJ1 dGVfXygobW9kZShNT0RFKSwgdmVjdG9yX3NpemUoSVZFQ19TSVpFKSkpIGlkeF90OwordHlwZWRl ZiBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoSVZFQ19TSVpFKSkpIGlkaV90 OworCisjZGVmaW5lIElURU1fQ09VTlQgKFZFQ19TSVpFIC8gRUxFTV9TSVpFIDwgSVZFQ19TSVpF IC8gSURYX1NJWkUgPyBcCisgICAgICAgICAgICAgICAgICAgIFZFQ19TSVpFIC8gRUxFTV9TSVpF IDogSVZFQ19TSVpFIC8gSURYX1NJWkUpCisKKyNpZiBWRUNfU0laRSA9PSAxNgorIyBkZWZpbmUg dG9fYm9vbChjbXApIF9fYnVpbHRpbl9pYTMyX3B0ZXN0YzEyOChjbXAsICh2ZWNfdCl7fSA9PSAw KQorI2Vsc2UKKyMgZGVmaW5lIHRvX2Jvb2woY21wKSBfX2J1aWx0aW5faWEzMl9wdGVzdGMyNTYo Y21wLCAodmVjX3Qpe30gPT0gMCkKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX0FWWDJfXykKKyMg aWYgVkVDX01BWCA9PSAxNgorIyAgaWYgSURYX1NJWkUgPT0gNAorIyAgIGlmIElOVF9TSVpFID09 IDQKKyMgICAgZGVmaW5lIGdhdGhlciBfX2J1aWx0aW5faWEzMl9nYXRoZXJzaXY0c2kKKyMgICBl bGlmIElOVF9TSVpFID09IDgKKyMgICAgZGVmaW5lIGdhdGhlcihyZWcsIG1lbSwgaWR4LCBtc2ss IHNjbCkgXAorICAgICAgICAgICAgKHZlY190KShfX2J1aWx0aW5faWEzMl9nYXRoZXJzaXYyZGko KHZkaV90KShyZWcpLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoY29uc3Qgdm9pZCAqKShtZW0pLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpZHgsICh2ZGlfdCkobXNrKSwgc2NsKSkKKyMgICBlbGlm IEZMT0FUX1NJWkUgPT0gNAorIyAgICBkZWZpbmUgZ2F0aGVyIF9fYnVpbHRpbl9pYTMyX2dhdGhl cnNpdjRzZgorIyAgIGVsaWYgRkxPQVRfU0laRSA9PSA4CisjICAgIGRlZmluZSBnYXRoZXIgX19i dWlsdGluX2lhMzJfZ2F0aGVyc2l2MmRmCisjICAgZW5kaWYKKyMgIGVsaWYgSURYX1NJWkUgPT0g OAorIyAgIGlmIElOVF9TSVpFID09IDQKKyMgICAgZGVmaW5lIGdhdGhlcihyZWcsIG1lbSwgaWR4 LCBtc2ssIHNjbCkgXAorICAgICAgICAgICAgX19idWlsdGluX2lhMzJfZ2F0aGVyZGl2NHNpKHJl ZywgbWVtLCAodmRpX3QpKGlkeCksIG1zaywgc2NsKQorIyAgIGVsaWYgSU5UX1NJWkUgPT0gOAor IyAgICBkZWZpbmUgZ2F0aGVyKHJlZywgbWVtLCBpZHgsIG1zaywgc2NsKSBcCisgICAgICAgICAg ICAodmVjX3QpKF9fYnVpbHRpbl9pYTMyX2dhdGhlcmRpdjJkaSgodmRpX3QpKHJlZyksIFwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCB2b2lk ICopKG1lbSksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICh2ZGlfdCkoaWR4KSwgKHZkaV90KShtc2spLCBcCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzY2wpKQorIyAgIGVsaWYgRkxPQVRfU0laRSA9PSA0 CisjICAgIGRlZmluZSBnYXRoZXIocmVnLCBtZW0sIGlkeCwgbXNrLCBzY2wpIFwKKyAgICAgICAg ICAgIF9fYnVpbHRpbl9pYTMyX2dhdGhlcmRpdjRzZihyZWcsIG1lbSwgKHZkaV90KShpZHgpLCBt c2ssIHNjbCkKKyMgICBlbGlmIEZMT0FUX1NJWkUgPT0gOAorIyAgICBkZWZpbmUgZ2F0aGVyKHJl ZywgbWVtLCBpZHgsIG1zaywgc2NsKSBcCisgICAgICAgICAgICBfX2J1aWx0aW5faWEzMl9nYXRo ZXJkaXYyZGYocmVnLCBtZW0sICh2ZGlfdCkoaWR4KSwgbXNrLCBzY2wpCisjICAgZW5kaWYKKyMg IGVuZGlmCisjIGVsaWYgVkVDX01BWCA9PSAzMgorIyAgaWYgSURYX1NJWkUgPT0gNAorIyAgIGlm IElOVF9TSVpFID09IDQKKyMgICAgZGVmaW5lIGdhdGhlciBfX2J1aWx0aW5faWEzMl9nYXRoZXJz aXY4c2kKKyMgICBlbGlmIElOVF9TSVpFID09IDgKKyMgICAgZGVmaW5lIGdhdGhlcihyZWcsIG1l bSwgaWR4LCBtc2ssIHNjbCkgXAorICAgICAgICAgICAgKHZlY190KShfX2J1aWx0aW5faWEzMl9n YXRoZXJzaXY0ZGkoKHZkaV90KShyZWcpLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoY29uc3Qgdm9pZCAqKShtZW0pLCBcCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZHgsICh2ZGlfdCkobXNrKSwgc2Ns KSkKKworIyAgIGVsaWYgRkxPQVRfU0laRSA9PSA0CisjICAgIGRlZmluZSBnYXRoZXIgX19idWls dGluX2lhMzJfZ2F0aGVyc2l2OHNmCisjICAgZWxpZiBGTE9BVF9TSVpFID09IDgKKyMgICAgZGVm aW5lIGdhdGhlciBfX2J1aWx0aW5faWEzMl9nYXRoZXJzaXY0ZGYKKyMgICBlbmRpZgorIyAgZWxp ZiBJRFhfU0laRSA9PSA4CisjICAgaWYgSU5UX1NJWkUgPT0gNAorIyAgICBkZWZpbmUgZ2F0aGVy KHJlZywgbWVtLCBpZHgsIG1zaywgc2NsKSBcCisgICAgICAgICAgICBfX2J1aWx0aW5faWEzMl9n YXRoZXJkaXY0c2kyNTYocmVnLCBtZW0sIChpZGlfdCkoaWR4KSwgbXNrLCBzY2wpCisjICAgZWxp ZiBJTlRfU0laRSA9PSA4CisjICAgIGRlZmluZSBnYXRoZXIocmVnLCBtZW0sIGlkeCwgbXNrLCBz Y2wpIFwKKyAgICAgICAgICAgICh2ZWNfdCkoX19idWlsdGluX2lhMzJfZ2F0aGVyZGl2NGRpKCh2 ZGlfdCkocmVnKSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGNvbnN0IHZvaWQgKikobWVtKSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHZkaV90KShpZHgpLCAodmRpX3QpKG1zayksIFwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjbCkpCisKKyMgICBl bGlmIEZMT0FUX1NJWkUgPT0gNAorIyAgICBkZWZpbmUgZ2F0aGVyKHJlZywgbWVtLCBpZHgsIG1z aywgc2NsKSBcCisgICAgICAgICAgICBfX2J1aWx0aW5faWEzMl9nYXRoZXJkaXY0c2YyNTYocmVn LCBtZW0sIChpZGlfdCkoaWR4KSwgbXNrLCBzY2wpCisjICAgZWxpZiBGTE9BVF9TSVpFID09IDgK KyMgICAgZGVmaW5lIGdhdGhlcihyZWcsIG1lbSwgaWR4LCBtc2ssIHNjbCkgXAorICAgICAgICAg ICAgX19idWlsdGluX2lhMzJfZ2F0aGVyZGl2NGRmKHJlZywgbWVtLCAodmRpX3QpKGlkeCksIG1z aywgc2NsKQorIyAgIGVuZGlmCisjICBlbmRpZgorIyBlbmRpZgorI2VuZGlmCisKKyNkZWZpbmUg R0xVRV8oeCwgeSkgeCAjIyB5CisjZGVmaW5lIEdMVUUoeCwgeSkgR0xVRV8oeCwgeSkKKworI2Rl ZmluZSBQVVQyKG4pICAgICAgKG4pLCAgICAgICAgKG4pICsgIDEKKyNkZWZpbmUgUFVUNChuKSAg UFVUMihuKSwgICBQVVQyKChuKSArICAyKQorI2RlZmluZSBQVVQ4KG4pICBQVVQ0KG4pLCAgIFBV VDQoKG4pICsgIDQpCisjZGVmaW5lIFBVVDE2KG4pIFBVVDgobiksICAgUFVUOCgobikgKyAgOCkK KyNkZWZpbmUgUFVUMzIobikgUFVUMTYobiksIFBVVDE2KChuKSArIDE2KQorCitjb25zdCB0eXBl b2YoKHZlY190KXt9WzBdKSBhcnJheVtdID0geworICAgIEdMVUUoUFVULCBWRUNfTUFYKSgxKSwK KyAgICBHTFVFKFBVVCwgVkVDX01BWCkoVkVDX01BWCArIDEpCit9OworCitpbnQgc2dfdGVzdCh2 b2lkKQoreworICAgIHVuc2lnbmVkIGludCBpOworICAgIHZlY190IHgsIHksIGZ1bGwgPSAodmVj X3Qpe30gPT0gMDsKKyAgICBpZHhfdCBpZHgsIGludjsKKworICAgIGZvciAoIGkgPSAwOyBpIDwg SVZFQ19TSVpFIC8gSURYX1NJWkU7ICsraSApCisgICAgeworICAgICAgICBpZHhbaV0gPSBpICsg MTsKKyAgICAgICAgaW52W2ldID0gSVRFTV9DT1VOVCAtIGk7CisgICAgfQorCisgICAgdG91Y2go aWR4KTsKKyAgICB0b3VjaChpbnYpOworCisgICAgeCA9IGdhdGhlcihmdWxsLCBhcnJheSwgKGlk eF90KXt9LCBmdWxsLCAxKTsKKyAgICBmb3IgKCBpID0gMDsgaSA8IElURU1fQ09VTlQ7ICsraSAp CisgICAgICAgIGlmICggeFtpXSAhPSAxICkKKyAgICAgICAgICAgIHJldHVybiBfX0xJTkVfXzsK KyAgICBmb3IgKCA7IGkgPCBFTEVNX0NPVU5UOyArK2kgKQorICAgICAgICBpZiAoIHhbaV0gKQor ICAgICAgICAgICAgcmV0dXJuIF9fTElORV9fOworCisgICAgeCA9IGdhdGhlcihmdWxsLCBhcnJh eSwgaWR4LCBmdWxsLCBFTEVNX1NJWkUpOworICAgIGZvciAoIGkgPSAwOyBpIDwgSVRFTV9DT1VO VDsgKytpICkKKyAgICAgICAgaWYgKCB4W2ldICE9IGkgKyAyICkKKyAgICAgICAgICAgIHJldHVy biBfX0xJTkVfXzsKKyAgICBmb3IgKCA7IGkgPCBFTEVNX0NPVU5UOyArK2kgKQorICAgICAgICBp ZiAoIHhbaV0gKQorICAgICAgICAgICAgcmV0dXJuIF9fTElORV9fOworCisgICAgeCA9IGdhdGhl cihmdWxsLCBhcnJheSwgaWR4ICogRUxFTV9TSVpFLCBmdWxsLCAyKTsKKyAgICBmb3IgKCBpID0g MDsgaSA8IElURU1fQ09VTlQ7ICsraSApCisgICAgICAgIGlmICggeFtpXSAhPSBpICogMiArIDMg KQorICAgICAgICAgICAgcmV0dXJuIF9fTElORV9fOworICAgIGZvciAoIDsgaSA8IEVMRU1fQ09V TlQ7ICsraSApCisgICAgICAgIGlmICggeFtpXSApCisgICAgICAgICAgICByZXR1cm4gX19MSU5F X187CisKKyAgICB4ID0gZ2F0aGVyKGZ1bGwsIGFycmF5LCBpbnYsIGZ1bGwsIEVMRU1fU0laRSk7 CisgICAgZm9yICggaSA9IDA7IGkgPCBJVEVNX0NPVU5UOyArK2kgKQorICAgICAgICBpZiAoIHhb aV0gIT0gaW52W2ldICsgMSApCisgICAgICAgICAgICByZXR1cm4gX19MSU5FX187CisgICAgZm9y ICggOyBpIDwgRUxFTV9DT1VOVDsgKytpICkKKyAgICAgICAgaWYgKCB4W2ldICkKKyAgICAgICAg ICAgIHJldHVybiBfX0xJTkVfXzsKKworICAgIHkgPSBnYXRoZXIoZnVsbCwgYXJyYXkgKyBJVEVN X0NPVU5ULCAtaWR4LCBmdWxsLCBFTEVNX1NJWkUpOworI2lmIElURU1fQ09VTlQgPT0gRUxFTV9D T1VOVAorICAgIGlmICggIXRvX2Jvb2woeSA9PSB4IC0gMSkgKQorICAgICAgICByZXR1cm4gX19M SU5FX187CisjZWxzZQorICAgIGZvciAoIGkgPSAwOyBpIDwgSVRFTV9DT1VOVDsgKytpICkKKyAg ICAgICAgaWYgKCB5W2ldICE9IHhbaV0gLSAxICkKKyAgICAgICAgICAgIHJldHVybiBfX0xJTkVf XzsKKyAgICBmb3IgKCA7IGkgPCBFTEVNX0NPVU5UOyArK2kgKQorICAgICAgICBpZiAoIHlbaV0g KQorICAgICAgICAgICAgcmV0dXJuIF9fTElORV9fOworI2VuZGlmCisKKyNpZiBFTEVNX1NJWkUg PiAxCisgICAgeCA9IGdhdGhlcihmdWxsLCBhcnJheSwgaW52ICogMiwgZnVsbCwgRUxFTV9TSVpF IC8gMik7CisgICAgZm9yICggaSA9IDA7IGkgPCBJVEVNX0NPVU5UOyArK2kgKQorICAgICAgICBp ZiAoIHhbaV0gIT0gaW52W2ldICsgMSApCisgICAgICAgICAgICByZXR1cm4gX19MSU5FX187Cisg ICAgZm9yICggOyBpIDwgRUxFTV9DT1VOVDsgKytpICkKKyAgICAgICAgaWYgKCB4W2ldICkKKyAg ICAgICAgICAgIHJldHVybiBfX0xJTkVfXzsKKworIyBpZiBFTEVNX1NJWkUgPT0gSURYX1NJWkUK KyAgICB5ID0gZ2F0aGVyKHgsIGFycmF5LCBpZHgsIChpZHggJiBpbnYpICE9IDAsIEVMRU1fU0la RSk7CisgICAgZm9yICggaSA9IDA7IGkgPCBJVEVNX0NPVU5UOyArK2kgKQorICAgICAgICBpZiAo IHlbaV0gIT0gKChpICsgMSkgJiAoSVRFTV9DT1VOVCAtIGkpID8gaWR4IDogaW52KVtpXSArIDEg KQorICAgICAgICAgICAgcmV0dXJuIF9fTElORV9fOworICAgIGZvciAoIDsgaSA8IEVMRU1fQ09V TlQ7ICsraSApCisgICAgICAgIGlmICggeVtpXSApCisgICAgICAgICAgICByZXR1cm4gX19MSU5F X187CisjIGVuZGlmCisjZW5kaWYKKworICAgIHJldHVybiAwOworfQotLS0gYS90b29scy90ZXN0 cy94ODZfZW11bGF0b3IvdGVzdF94ODZfZW11bGF0b3IuYworKysgYi90b29scy90ZXN0cy94ODZf ZW11bGF0b3IvdGVzdF94ODZfZW11bGF0b3IuYwpAQCAtMTIsNiArMTIsNyBAQAogI2luY2x1ZGUg ImZtYTQuaCIKICNpbmNsdWRlICJmbWEuaCIKICNpbmNsdWRlICJhdngyLmgiCisjaW5jbHVkZSAi YXZ4Mi1zZy5oIgogCiAjZGVmaW5lIHZlcmJvc2UgZmFsc2UgLyogU3dpdGNoIHRvIHRydWUgZm9y IGZhciBtb3JlIGxvZ2dpbmcuICovCiAKQEAgLTYwLDYgKzYxLDcgQEAgc3RhdGljIGJvb2wgc2lt ZF9jaGVja19hdngyKHZvaWQpCiB7CiAgICAgcmV0dXJuIGNwdV9oYXNfYXZ4MjsKIH0KKyNkZWZp bmUgc2ltZF9jaGVja19hdngyX3NnIHNpbWRfY2hlY2tfYXZ4MgogCiBzdGF0aWMgdm9pZCBzaW1k X3NldF9yZWdzKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogewpAQCAtMTczLDYgKzE3NSwy MiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHsKICAgICBTSU1EKEFWWDIgdTMyeDgsICAgICAgICAg ICAgIGF2eDIsICAgICAgMzJ1NCksCiAgICAgU0lNRChBVlgyIHM2NHg0LCAgICAgICAgICAgICBh dngyLCAgICAgIDMyaTgpLAogICAgIFNJTUQoQVZYMiB1NjR4NCwgICAgICAgICAgICAgYXZ4Miwg ICAgICAzMnU4KSwKKyAgICBTSU1EKEFWWDIgUy9HIGYzMls0eDMyXSwgIGF2eDJfc2csICAgIDE2 eDRmNCksCisgICAgU0lNRChBVlgyIFMvRyBmNjRbMngzMl0sICBhdngyX3NnLCAgICAxNng0Zjgp LAorICAgIFNJTUQoQVZYMiBTL0cgZjMyWzJ4NjRdLCAgYXZ4Ml9zZywgICAgMTZ4OGY0KSwKKyAg ICBTSU1EKEFWWDIgUy9HIGY2NFsyeDY0XSwgIGF2eDJfc2csICAgIDE2eDhmOCksCisgICAgU0lN RChBVlgyIFMvRyBmMzJbOHgzMl0sICBhdngyX3NnLCAgICAzMng0ZjQpLAorICAgIFNJTUQoQVZY MiBTL0cgZjY0WzR4MzJdLCAgYXZ4Ml9zZywgICAgMzJ4NGY4KSwKKyAgICBTSU1EKEFWWDIgUy9H IGYzMls0eDY0XSwgIGF2eDJfc2csICAgIDMyeDhmNCksCisgICAgU0lNRChBVlgyIFMvRyBmNjRb NHg2NF0sICBhdngyX3NnLCAgICAzMng4ZjgpLAorICAgIFNJTUQoQVZYMiBTL0cgaTMyWzR4MzJd LCAgYXZ4Ml9zZywgICAgMTZ4NGk0KSwKKyAgICBTSU1EKEFWWDIgUy9HIGk2NFsyeDMyXSwgIGF2 eDJfc2csICAgIDE2eDRpOCksCisgICAgU0lNRChBVlgyIFMvRyBpMzJbMng2NF0sICBhdngyX3Nn LCAgICAxNng4aTQpLAorICAgIFNJTUQoQVZYMiBTL0cgaTY0WzJ4NjRdLCAgYXZ4Ml9zZywgICAg MTZ4OGk4KSwKKyAgICBTSU1EKEFWWDIgUy9HIGkzMls4eDMyXSwgIGF2eDJfc2csICAgIDMyeDRp NCksCisgICAgU0lNRChBVlgyIFMvRyBpNjRbNHgzMl0sICBhdngyX3NnLCAgICAzMng0aTgpLAor ICAgIFNJTUQoQVZYMiBTL0cgaTMyWzR4NjRdLCAgYXZ4Ml9zZywgICAgMzJ4OGk0KSwKKyAgICBT SU1EKEFWWDIgUy9HIGk2NFs0eDY0XSwgIGF2eDJfc2csICAgIDMyeDhpOCksCiAjdW5kZWYgU0lN RF8KICN1bmRlZiBTSU1ECiB9OwotLS0gYS94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2Vt dWxhdGUuYworKysgYi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYwpAQCAt MzkxLDYgKzM5MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgewogICAgIFsweDc4IC4uLiAweDc5 XSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfb3RoZXIsIC50d29fb3AgPSAxIH0sCiAgICAgWzB4OGNd ID0geyAuc2ltZF9zaXplID0gc2ltZF9vdGhlciB9LAogICAgIFsweDhlXSA9IHsgLnNpbWRfc2l6 ZSA9IHNpbWRfb3RoZXIsIC50b19tZW0gPSAxIH0sCisgICAgWzB4OTAgLi4uIDB4OTNdID0geyAu c2ltZF9zaXplID0gc2ltZF9vdGhlciwgLnZzaWIgPSAxIH0sCiAgICAgWzB4OTYgLi4uIDB4OWZd ID0geyAuc2ltZF9zaXplID0gc2ltZF9wYWNrZWRfZnAgfSwKICAgICBbMHhhNiAuLi4gMHhhZl0g PSB7IC5zaW1kX3NpemUgPSBzaW1kX3BhY2tlZF9mcCB9LAogICAgIFsweGI2IC4uLiAweGJmXSA9 IHsgLnNpbWRfc2l6ZSA9IHNpbWRfcGFja2VkX2ZwIH0sCkBAIC01OTgsNiArNTk5LDcgQEAgc3Ry dWN0IHg4Nl9lbXVsYXRlX3N0YXRlIHsKICAgICAgICAgZXh0XzhmMGEsCiAgICAgfSBleHQ7CiAg ICAgdWludDhfdCBtb2RybSwgbW9kcm1fbW9kLCBtb2RybV9yZWcsIG1vZHJtX3JtOworICAgIHVp bnQ4X3Qgc2liX2luZGV4LCBzaWJfc2NhbGU7CiAgICAgdWludDhfdCByZXhfcHJlZml4OwogICAg IGJvb2wgbG9ja19wcmVmaXg7CiAgICAgYm9vbCBub3RfNjRiaXQ7IC8qIEluc3RydWN0aW9uIG5v dCBhdmFpbGFibGUgaW4gNjRiaXQuICovCkBAIC0yNDA5LDcgKzI0MTEsNyBAQCB4ODZfZGVjb2Rl KAogICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0LAogICAgIGNvbnN0IHN0cnVjdCB4 ODZfZW11bGF0ZV9vcHMgICpvcHMpCiB7Ci0gICAgdWludDhfdCBiLCBkLCBzaWIsIHNpYl9pbmRl eCwgc2liX2Jhc2U7CisgICAgdWludDhfdCBiLCBkOwogICAgIHVuc2lnbmVkIGludCBkZWZfb3Bf Ynl0ZXMsIGRlZl9hZF9ieXRlcywgb3Bjb2RlOwogICAgIGVudW0geDg2X3NlZ21lbnQgb3ZlcnJp ZGVfc2VnID0geDg2X3NlZ19ub25lOwogICAgIGJvb2wgcGNfcmVsID0gZmFsc2U7CkBAIC0yNzQz LDYgKzI3NDUsNyBAQCB4ODZfZGVjb2RlKAogCiAgICAgICAgIGlmICggbW9kcm1fbW9kID09IDMg KQogICAgICAgICB7CisgICAgICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoZCAmIHZTSUIs IEVYQ19VRCk7CiAgICAgICAgICAgICBtb2RybV9ybSB8PSAocmV4X3ByZWZpeCAmIDEpIDw8IDM7 CiAgICAgICAgICAgICBlYS50eXBlID0gT1BfUkVHOwogICAgICAgICB9CkBAIC0yODAzLDEzICsy ODA2LDE3IEBAIHg4Nl9kZWNvZGUoCiAgICAgICAgICAgICBlYS50eXBlID0gT1BfTUVNOwogICAg ICAgICAgICAgaWYgKCBtb2RybV9ybSA9PSA0ICkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAg ICAgICBzaWIgPSBpbnNuX2ZldGNoX3R5cGUodWludDhfdCk7Ci0gICAgICAgICAgICAgICAgc2li X2luZGV4ID0gKChzaWIgPj4gMykgJiA3KSB8ICgocmV4X3ByZWZpeCA8PCAyKSAmIDgpOwotICAg ICAgICAgICAgICAgIHNpYl9iYXNlICA9IChzaWIgJiA3KSB8ICgocmV4X3ByZWZpeCA8PCAzKSAm IDgpOwotICAgICAgICAgICAgICAgIGlmICggc2liX2luZGV4ICE9IDQgJiYgIShkICYgdlNJQikg KQotICAgICAgICAgICAgICAgICAgICBlYS5tZW0ub2ZmID0gKihsb25nICopZGVjb2RlX3JlZ2lz dGVyKHNpYl9pbmRleCwKKyAgICAgICAgICAgICAgICB1aW50OF90IHNpYiA9IGluc25fZmV0Y2hf dHlwZSh1aW50OF90KTsKKyAgICAgICAgICAgICAgICB1aW50OF90IHNpYl9iYXNlID0gKHNpYiAm IDcpIHwgKChyZXhfcHJlZml4IDw8IDMpICYgOCk7CisKKyAgICAgICAgICAgICAgICBzdGF0ZS0+ c2liX2luZGV4ID0gKChzaWIgPj4gMykgJiA3KSB8ICgocmV4X3ByZWZpeCA8PCAyKSAmIDgpOwor ICAgICAgICAgICAgICAgIHN0YXRlLT5zaWJfc2NhbGUgPSAoc2liID4+IDYpICYgMzsKKyAgICAg ICAgICAgICAgICBpZiAoIHN0YXRlLT5zaWJfaW5kZXggIT0gNCAmJiAhKGQgJiB2U0lCKSApCisg ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBlYS5tZW0ub2ZmID0gKihsb25n ICopZGVjb2RlX3JlZ2lzdGVyKHN0YXRlLT5zaWJfaW5kZXgsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPnJlZ3MsIDApOwot ICAgICAgICAgICAgICAgIGVhLm1lbS5vZmYgPDw9IChzaWIgPj4gNikgJiAzOworICAgICAgICAg ICAgICAgICAgICBlYS5tZW0ub2ZmIDw8PSBzdGF0ZS0+c2liX3NjYWxlOworICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgICAgICBpZiAoIChtb2RybV9tb2QgPT0gMCkgJiYgKChzaWJfYmFz ZSAmIDcpID09IDUpICkKICAgICAgICAgICAgICAgICAgICAgZWEubWVtLm9mZiArPSBpbnNuX2Zl dGNoX3R5cGUoaW50MzJfdCk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIHNpYl9iYXNlID09 IDQgKQpAQCAtNzQ2Myw2ICs3NDcwLDExMCBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgYnJlYWs7 CiAgICAgfQogCisgICAgY2FzZSBYODZFTVVMX09QQ19WRVhfNjYoMHgwZjM4LCAweDkwKTogLyog dnBnYXRoZXJke2QscX0ge3gseX1tbSxtZW0se3gseX1tbSAqLworICAgIGNhc2UgWDg2RU1VTF9P UENfVkVYXzY2KDB4MGYzOCwgMHg5MSk6IC8qIHZwZ2F0aGVycXtkLHF9IHt4LHl9bW0sbWVtLHt4 LHl9bW0gKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BDX1ZFWF82NigweDBmMzgsIDB4OTIpOiAvKiB2 Z2F0aGVyZHB7cyxkfSB7eCx5fW1tLG1lbSx7eCx5fW1tICovCisgICAgY2FzZSBYODZFTVVMX09Q Q19WRVhfNjYoMHgwZjM4LCAweDkzKTogLyogdmdhdGhlcnFwe3MsZH0ge3gseX1tbSxtZW0se3gs eX1tbSAqLworICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IG1hc2tfcmVnID0gfnZleC5yZWcg JiAobW9kZV82NGJpdCgpID8gMHhmIDogNyk7CisgICAgICAgIHR5cGVvZih2ZXgpICpwdmV4Owor ICAgICAgICB1bmlvbiB7CisgICAgICAgICAgICBpbnQzMl90IGR3WzhdOworICAgICAgICAgICAg aW50NjRfdCBxd1s0XTsKKyAgICAgICAgfSBpbmRleCwgbWFzazsKKworICAgICAgICBBU1NFUlQo ZWEudHlwZSA9PSBPUF9NRU0pOworICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYobW9kcm1f cmVnID09IHN0YXRlLT5zaWJfaW5kZXggfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1vZHJtX3JlZyA9PSBtYXNrX3JlZyB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RhdGUtPnNpYl9pbmRleCA9PSBtYXNrX3JlZywgRVhDX1VEKTsKKyAgICAgICAgZ2VuZXJhdGVf ZXhjZXB0aW9uX2lmKCFjcHVfaGFzX2F2eCwgRVhDX1VEKTsKKyAgICAgICAgdmNwdV9tdXN0X2hh dmUoYXZ4Mik7CisgICAgICAgIGdldF9mcHUoWDg2RU1VTF9GUFVfeW1tLCAmZmljKTsKKworICAg ICAgICAvKiBSZWFkIGRlc3RpbmF0aW9uLCBpbmRleCwgYW5kIG1hc2sgcmVnaXN0ZXJzLiAqLwor ICAgICAgICBvcGMgPSBpbml0X3ByZWZpeGVzKHN0dWIpOworICAgICAgICBwdmV4ID0gY29weV9W RVgob3BjLCB2ZXgpOworICAgICAgICBwdmV4LT5vcGN4ID0gdmV4XzBmOworICAgICAgICBvcGNb MF0gPSAweDdmOyAvKiB2bW92ZHFhICovCisgICAgICAgIC8qIFVzZSAoJXJheCkgYXMgZGVzdGlu YXRpb24gYW5kIG1vZHJtX3JlZyBhcyBzb3VyY2UuICovCisgICAgICAgIHB2ZXgtPnIgPSAhbW9k ZV82NGJpdCgpIHx8ICEobW9kcm1fcmVnICYgOCk7CisgICAgICAgIHB2ZXgtPmIgPSAxOworICAg ICAgICBvcGNbMV0gPSAobW9kcm1fcmVnICYgNykgPDwgMzsKKyAgICAgICAgcHZleC0+cmVnID0g MHhmOworICAgICAgICBvcGNbMl0gPSAweGMzOworCisgICAgICAgIGludm9rZV9zdHViKCIiLCAi IiwgIj1tIiAoKm1tdmFscCkgOiAiYSIgKG1tdmFscCkpOworCisgICAgICAgIHB2ZXgtPnBmeCA9 IHZleF9mMzsgLyogdm1vdmRxdSAqLworICAgICAgICAvKiBTd2l0Y2ggdG8gc2liX2luZGV4IGFz IHNvdXJjZS4gKi8KKyAgICAgICAgcHZleC0+ciA9ICFtb2RlXzY0Yml0KCkgfHwgIShzdGF0ZS0+ c2liX2luZGV4ICYgOCk7CisgICAgICAgIG9wY1sxXSA9IChzdGF0ZS0+c2liX2luZGV4ICYgNykg PDwgMzsKKworICAgICAgICBpbnZva2Vfc3R1YigiIiwgIiIsICI9bSIgKGluZGV4KSA6ICJhIiAo JmluZGV4KSk7CisKKyAgICAgICAgLyogU3dpdGNoIHRvIG1hc2tfcmVnIGFzIHNvdXJjZS4gKi8K KyAgICAgICAgcHZleC0+ciA9ICFtb2RlXzY0Yml0KCkgfHwgIShtYXNrX3JlZyAmIDgpOworICAg ICAgICBvcGNbMV0gPSAobWFza19yZWcgJiA3KSA8PCAzOworCisgICAgICAgIGludm9rZV9zdHVi KCIiLCAiIiwgIj1tIiAobWFzaykgOiAiYSIgKCZtYXNrKSk7CisgICAgICAgIHB1dF9zdHViKHN0 dWIpOworCisgICAgICAgIC8qIENsZWFyIHVudG91Y2hlZCBwYXJ0cyBvZiB0aGUgZGVzdGluYXRp b24gYW5kIG1hc2sgdmFsdWVzLiAqLworICAgICAgICBuID0gMSA8PCAoMiArIHZleC5sIC0gKChi ICYgMSkgfCB2ZXgudykpOworICAgICAgICBvcF9ieXRlcyA9IDQgPDwgdmV4Lnc7CisgICAgICAg IG1lbXNldCgodm9pZCAqKW1tdmFscCArIG4gKiBvcF9ieXRlcywgMCwgMzIgLSBuICogb3BfYnl0 ZXMpOworICAgICAgICBtZW1zZXQoKHZvaWQgKikmbWFzayArIG4gKiBvcF9ieXRlcywgMCwgMzIg LSBuICogb3BfYnl0ZXMpOworCisgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgbiAmJiByYyA9PSBY ODZFTVVMX09LQVk7ICsraSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICggKHZleC53ID8g bWFzay5xd1tpXSA6IG1hc2suZHdbaV0pIDwgMCApCisgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgc2lnbmVkIGxvbmcgaWR4ID0gYiAmIDEgPyBpbmRleC5xd1tpXSA6IGluZGV4LmR3W2ld OworCisgICAgICAgICAgICAgICAgcmMgPSBvcHMtPnJlYWQoZWEubWVtLnNlZywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBlYS5tZW0ub2ZmICsgKGlkeCA8PCBzdGF0ZS0+c2liX3Nj YWxlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKW1tdmFscCArIGkg KiBvcF9ieXRlcywgb3BfYnl0ZXMsIGN0eHQpOworICAgICAgICAgICAgICAgIGlmICggcmMgIT0g WDg2RU1VTF9PS0FZICkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyNpZmRlZiBfX1hF Tl9fCisgICAgICAgICAgICAgICAgaWYgKCBpICsgMSA8IG4gJiYgbG9jYWxfZXZlbnRzX25lZWRf ZGVsaXZlcnkoKSApCisgICAgICAgICAgICAgICAgICAgIHJjID0gWDg2RU1VTF9SRVRSWTsKKyNl bmRpZgorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIHZleC53ICkKKyAgICAgICAg ICAgICAgICBtYXNrLnF3W2ldID0gMDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg ICBtYXNrLmR3W2ldID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFdyaXRlIGRlc3RpbmF0 aW9uIGFuZCBtYXNrIHJlZ2lzdGVycy4gKi8KKyAgICAgICAgb3BjID0gaW5pdF9wcmVmaXhlcyhz dHViKTsKKyAgICAgICAgcHZleCA9IGNvcHlfVkVYKG9wYywgdmV4KTsKKyAgICAgICAgcHZleC0+ b3BjeCA9IHZleF8wZjsKKyAgICAgICAgb3BjWzBdID0gMHg2ZjsgLyogdm1vdmRxYSAqLworICAg ICAgICAvKiBVc2UgbW9kcm1fcmVnIGFzIGRlc3RpbmF0aW9uIGFuZCAoJXJheCkgYXMgc291cmNl LiAqLworICAgICAgICBwdmV4LT5yID0gIW1vZGVfNjRiaXQoKSB8fCAhKG1vZHJtX3JlZyAmIDgp OworICAgICAgICBwdmV4LT5iID0gMTsKKyAgICAgICAgb3BjWzFdID0gKG1vZHJtX3JlZyAmIDcp IDw8IDM7CisgICAgICAgIHB2ZXgtPnJlZyA9IDB4ZjsKKyAgICAgICAgb3BjWzJdID0gMHhjMzsK KworICAgICAgICBpbnZva2Vfc3R1YigiIiwgIiIsICIrbSIgKCptbXZhbHApIDogImEiIChtbXZh bHApKTsKKworICAgICAgICBwdmV4LT5wZnggPSB2ZXhfZjM7IC8qIHZtb3ZkcXUgKi8KKyAgICAg ICAgLyogU3dpdGNoIHRvIG1hc2tfcmVnIGFzIGRlc3RpbmF0aW9uLiAqLworICAgICAgICBwdmV4 LT5yID0gIW1vZGVfNjRiaXQoKSB8fCAhKG1hc2tfcmVnICYgOCk7CisgICAgICAgIG9wY1sxXSA9 IChtYXNrX3JlZyAmIDcpIDw8IDM7CisKKyAgICAgICAgaW52b2tlX3N0dWIoIiIsICIiLCAiK20i IChtYXNrKSA6ICJhIiAoJm1hc2spKTsKKyAgICAgICAgcHV0X3N0dWIoc3R1Yik7CisKKyAgICAg ICAgc3RhdGUtPnNpbWRfc2l6ZSA9IHNpbWRfbm9uZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor CiAgICAgY2FzZSBYODZFTVVMX09QQ19WRVhfNjYoMHgwZjM4LCAweDk2KTogLyogdmZtYWRkc3Vi MTMycHtzLGR9IHt4LHl9bW0vbWVtLHt4LHl9bW0se3gseX1tbSAqLwogICAgIGNhc2UgWDg2RU1V TF9PUENfVkVYXzY2KDB4MGYzOCwgMHg5Nyk6IC8qIHZmbXN1YmFkZDEzMnB7cyxkfSB7eCx5fW1t L21lbSx7eCx5fW1tLHt4LHl9bW0gKi8KICAgICBjYXNlIFg4NkVNVUxfT1BDX1ZFWF82NigweDBm MzgsIDB4OTgpOiAvKiB2Zm1hZGQxMzJwe3MsZH0ge3gseX1tbS9tZW0se3gseX1tbSx7eCx5fW1t ICovCi0tLSBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni94 ODZfZW11bGF0ZS5jCkBAIC0xMCw2ICsxMCw3IEBACiAgKi8KIAogI2luY2x1ZGUgPHhlbi9kb21h aW5fcGFnZS5oPgorI2luY2x1ZGUgPHhlbi9ldmVudC5oPgogI2luY2x1ZGUgPGFzbS94ODZfZW11 bGF0ZS5oPgogI2luY2x1ZGUgPGFzbS9hc21fZGVmbnMuaD4gLyogbWFya19yZWdzX2RpcnR5KCkg Ki8KICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+IC8qIGN1cnJlbnRfY3B1X2luZm8gKi8KCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg==