From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v7 33/49] x86emul: support AVX512F gather insns Date: Wed, 19 Dec 2018 07:57:26 -0700 Message-ID: <5C1A5C5602000078002079F5@prv1-mh.provo.novell.com> References: <5B6BF83602000078001DC548@prv1-mh.provo.novell.com> <5C1A52ED0200007800207865@prv1-mh.provo.novell.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] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gZdHy-0006va-2i for xen-devel@lists.xenproject.org; Wed, 19 Dec 2018 14:57:34 +0000 In-Reply-To: <5C1A52ED0200007800207865@prv1-mh.provo.novell.com> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel Cc: George Dunlap , Andrew Cooper , Wei Liu , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org VGhpcyByZXF1aXJlcyBnZXR0aW5nIG1vZHJtX3JlZyBhbmQgc2liX2luZGV4IHNldCBjb3JyZWN0 bHkgaW4gdGhlIEVWRVgKY2FzZSwgdG8gYWNjb3VudCBmb3IgdGhlIGhpZ2ggMTYgW1hZWl1NTSBy ZWdpc3RlcnMuIEV4dGVuZCB0aGUKYWRqdXN0bWVudHMgdG8gbW9kcm1fcm0gYXMgd2VsbCwgc3Vj aCB0aGF0IHg4Nl9pbnNuX21vZHJtKCkgd291bGQKY29ycmVjdGx5IHJlcG9ydCByZWdpc3RlciBu dW1iZXJzICh0aGlzIHdhcyBhIGxhdGVudCBpc3N1ZSBvbmx5IGFzIHdlCmRvbid0IGN1cnJlbnRs eSBoYXZlIGNhbGxlcnMgb2YgdGhhdCBmdW5jdGlvbiB3aGljaCB3b3VsZCBjYXJlIGFib3V0IGFu CkVWRVggY2FzZSkuIFRoZSBhZGp1c3RtZW50IGluIHR1cm4gcmVxdWlyZXMgZHJvcHBpbmcgdGhl IGFzc2VydGlvbiBmcm9tCmRlY29kZV9ncHIoKSwgYXMgd2Ugbm93IG5lZWQgdG8gYWN0aXZlbHkg bWFzayBvZmYgdGhlIGhpZ2ggYml0IHdoZW4gYQpHUFIgaXMgbWVhbnQuIF9kZWNvZGVfZ3ByKCkg aW52b2NhdGlvbnMgYWxzbyBuZWVkIHNsaWdodCBhZGp1c3RtZW50cywKd2hlbiBpbnZva2VkIGlu IGdlbmVyaWMgY29kZSBhaGVhZCBvZiB0aGUgbWFpbiBzd2l0Y2goKS4gQWxsIG90aGVyIHVzZXMK b2YgbW9kcm1fcmVnIGFuZCBtb2RybV9ybSBhbHJlYWR5IGdldCBzdWl0YWJseSBtYXNrZWQgd2hl cmUgbmVjZXNzYXJ5LgoKVGhlcmUgd2FzIGFsc28gYW4gZW5jb2RpbmcgbWlzdGFrZSBpbiB0aGUg RVZFWCBEaXNwOCB0ZXN0IGNvZGUsIHdoaWNoCndhcyBiZW5pZ24gKGR1ZSB0byAlcmR4IGdldHRp bmcgc2V0IHRvIHplcm8pIHRvIGFsbCBub24tdlNJQiB0ZXN0cyBhcyBpdAptaXN0YWtlbmx5IGVu Y29kZWQgPGRpc3A4PiglcmR4LCVyZHgpIGluc3RlYWQgb2YgPGRpc3A4PiglcmR4LCVyaXopLiBJ bgp0aGUgdlNJQiBjYXNlIHRoaXMgbWVhbnQgPGRpc3A4PiglcmR4LCV6bW0yKSBpbnN0ZWFkIG9m IHRoZSBpbnRlbmRlZAo8ZGlzcDg+KCVyZHgsJXptbTQpLgoKTGlrZXdpc2UgdGhlIGFjY2VzcyBj b3VudCBjaGVjayB3YXNuJ3QgZW50aXJlbHkgY29ycmVjdCBmb3IgdGhlIFMvRwpjYXNlOiBJbiB0 aGUgcXVhZC13b3JkLWluZGV4IGJ1dCBkd29yZC1kYXRhIGNhc2Ugb25seSBoYWxmIHRoZSBudW1i ZXIKb2YgZnVsbCB2ZWN0b3IgZWxlbWVudHMgZ2V0IGFjY2Vzc2VkLgoKQXMgYW4gdW5yZWxhdGVk IGNoYW5nZSBpbiB0aGUgbWFpbiB0ZXN0IGhhcm5lc3Mgc291cmNlIGZpbGUgZGlzdGluZ3Vpc2gK dGhlICJuL2EiIG1lc3NhZ2VzIGJ5IGJpdG5lc3MuCgpTaWduZWQtb2ZmLWJ5OiBKYW4gQmV1bGlj aCA8amJldWxpY2hAc3VzZS5jb20+Ci0tLQp2NzogRml4IEJ5dGVPcCByZWdpc3RlciBkZWNvZGUu IFJlLWJhc2UuCnY2OiBOZXcuCgotLS0gYS90b29scy90ZXN0cy94ODZfZW11bGF0b3IvTWFrZWZp bGUKKysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL01ha2VmaWxlCkBAIC0yMSw3ICsyMSw3 IEBAIENGTEFHUyArPSAkKENGTEFHU194ZW5pbmNsdWRlKQogCiBTSU1EIDo9IDNkbm93IHNzZSBz c2UyIHNzZTQgYXZ4IGF2eDIgeG9wIGF2eDUxMmYgYXZ4NTEyYncgYXZ4NTEyZHEgYXZ4NTEyZXIK IEZNQSA6PSBmbWE0IGZtYQotU0cgOj0gYXZ4Mi1zZworU0cgOj0gYXZ4Mi1zZyBhdng1MTJmLXNn IGF2eDUxMnZsLXNnCiBURVNUQ0FTRVMgOj0gYmxvd2Zpc2ggJChTSU1EKSAkKEZNQSkgJChTRykK IAogT1BNQVNLIDo9IGF2eDUxMmYgYXZ4NTEyZHEgYXZ4NTEyYncKQEAgLTY5LDYgKzY5LDE0IEBA IHhvcC1mbHRzIDo9ICQoYXZ4LWZsdHMpCiBhdng1MTJmLXZlY3MgOj0gNjQgMTYgMzIKIGF2eDUx MmYtaW50cyA6PSA0IDgKIGF2eDUxMmYtZmx0cyA6PSA0IDgKK2F2eDUxMmYtc2ctdmVjcyA6PSA2 NAorYXZ4NTEyZi1zZy1pZHhzIDo9IDQgOAorYXZ4NTEyZi1zZy1pbnRzIDo9ICQoYXZ4NTEyZi1p bnRzKQorYXZ4NTEyZi1zZy1mbHRzIDo9ICQoYXZ4NTEyZi1mbHRzKQorYXZ4NTEydmwtc2ctdmVj cyA6PSAxNiAzMgorYXZ4NTEydmwtc2ctaWR4cyA6PSAkKGF2eDUxMmYtc2ctaWR4cykKK2F2eDUx MnZsLXNnLWludHMgOj0gJChhdng1MTJmLWludHMpCithdng1MTJ2bC1zZy1mbHRzIDo9ICQoYXZ4 NTEyZi1mbHRzKQogYXZ4NTEyYnctdmVjcyA6PSAkKGF2eDUxMmYtdmVjcykKIGF2eDUxMmJ3LWlu dHMgOj0gMSAyCiBhdng1MTJidy1mbHRzIDo9Ci0tLSBhL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRv ci9ldmV4LWRpc3A4LmMKKysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL2V2ZXgtZGlzcDgu YwpAQCAtMTc2LDYgKzE3Niw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdGVzdCBhdng1MTJmX2Fs bFtdID0KICAgICBJTlNOKGZubXN1YjIxMywgICAgNjYsIDBmMzgsIGFmLCAgICBlbCwgICAgIHNk LCBlbCksCiAgICAgSU5TTihmbm1zdWIyMzEsICAgIDY2LCAwZjM4LCBiZSwgICAgdmwsICAgICBz ZCwgdmwpLAogICAgIElOU04oZm5tc3ViMjMxLCAgICA2NiwgMGYzOCwgYmYsICAgIGVsLCAgICAg c2QsIGVsKSwKKyAgICBJTlNOKGdhdGhlcmQsICAgICAgNjYsIDBmMzgsIDkyLCAgICB2bCwgICAg IHNkLCBlbCksCisgICAgSU5TTihnYXRoZXJxLCAgICAgIDY2LCAwZjM4LCA5MywgICAgdmwsICAg ICBzZCwgZWwpLAogICAgIElOU04oZ2V0ZXhwLCAgICAgICA2NiwgMGYzOCwgNDIsICAgIHZsLCAg ICAgc2QsIHZsKSwKICAgICBJTlNOKGdldGV4cCwgICAgICAgNjYsIDBmMzgsIDQzLCAgICBlbCwg ICAgIHNkLCBlbCksCiAgICAgSU5TTihnZXRtYW50LCAgICAgIDY2LCAwZjNhLCAyNiwgICAgdmws ICAgICBzZCwgdmwpLApAQCAtMjI5LDYgKzIzMSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdGVz dCBhdng1MTJmX2FsbFtdID0KICAgICBJTlNOKHBlcm10MiwgICAgICAgNjYsIDBmMzgsIDdlLCAg ICB2bCwgICAgIGRxLCB2bCksCiAgICAgSU5TTihwZXJtdDIsICAgICAgIDY2LCAwZjM4LCA3Ziwg ICAgdmwsICAgICBzZCwgdmwpLAogICAgIElOU04ocGV4cGFuZCwgICAgICA2NiwgMGYzOCwgODks ICAgIHZsLCAgICAgZHEsIGVsKSwKKyAgICBJTlNOKHBnYXRoZXJkLCAgICAgNjYsIDBmMzgsIDkw LCAgICB2bCwgICAgIGRxLCBlbCksCisgICAgSU5TTihwZ2F0aGVycSwgICAgIDY2LCAwZjM4LCA5 MSwgICAgdmwsICAgICBkcSwgZWwpLAogICAgIElOU04ocG1heHMsICAgICAgICA2NiwgMGYzOCwg M2QsICAgIHZsLCAgICAgZHEsIHZsKSwKICAgICBJTlNOKHBtYXh1LCAgICAgICAgNjYsIDBmMzgs IDNmLCAgICB2bCwgICAgIGRxLCB2bCksCiAgICAgSU5TTihwbWlucywgICAgICAgIDY2LCAwZjM4 LCAzOSwgICAgdmwsICAgICBkcSwgdmwpLApAQCAtNjk4LDcgKzcwMiw3IEBAIHN0YXRpYyB2b2lk IHRlc3Rfb25lKGNvbnN0IHN0cnVjdCB0ZXN0ICoKICAgICBpbnN0clszXSA9IGV2ZXgucmF3WzJd OwogICAgIGluc3RyWzRdID0gdGVzdC0+b3BjOwogICAgIGluc3RyWzVdID0gMHg0NCB8ICh0ZXN0 LT5leHQgPDwgMyk7IC8qIE1vZFIvTSAqLwotICAgIGluc3RyWzZdID0gMHgxMjsgLyogU0lCOiBi YXNlIHJEWCwgaW5kZXggbm9uZSAvIHhNTTQgKi8KKyAgICBpbnN0cls2XSA9IDB4MjI7IC8qIFNJ QjogYmFzZSByRFgsIGluZGV4IG5vbmUgLyB4TU00ICovCiAgICAgaW5zdHJbN10gPSAxOyAvKiBE aXNwOCAqLwogICAgIGluc3RyWzhdID0gMDsgLyogaW1tZWRpYXRlLCBpZiBhbnkgKi8KIApAQCAt NzE4LDcgKzcyMiw4IEBAIHN0YXRpYyB2b2lkIHRlc3Rfb25lKGNvbnN0IHN0cnVjdCB0ZXN0ICoK ICAgICAgICAgIGlmICggYWNjZXNzZWRbaV0gKQogICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAg ICBmb3IgKCA7IGkgPCAodGVzdC0+c2NhbGUgPT0gU0NfdmwgPyB2c3ogOiBlc3opICsgKHNnID8g ZXN6IDogdnN6KTsgKytpICkKLSAgICAgICAgIGlmICggYWNjZXNzZWRbaV0gIT0gKHNnID8gdnN6 IC8gZXN6IDogMSkgKQorICAgICAgICAgaWYgKCBhY2Nlc3NlZFtpXSAhPSAoc2cgPyAodnN6IC8g ZXN6KSA+PiAodGVzdC0+b3BjICYgMSAmICFldmV4LncpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA6IDEpICkKICAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgZm9yICggOyBp IDwgQVJSQVlfU0laRShhY2Nlc3NlZCk7ICsraSApCiAgICAgICAgICBpZiAoIGFjY2Vzc2VkW2ld ICkKLS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3NpbWQtc2cuYworKysgYi90b29scy90 ZXN0cy94ODZfZW11bGF0b3Ivc2ltZC1zZy5jCkBAIC0zNSwxMyArMzUsNzggQEAgdHlwZWRlZiBs b25nIGxvbmcgX19hdHRyaWJ1dGVfXygodmVjdG9yXwogI2RlZmluZSBJVEVNX0NPVU5UIChWRUNf U0laRSAvIEVMRU1fU0laRSA8IElWRUNfU0laRSAvIElEWF9TSVpFID8gXAogICAgICAgICAgICAg ICAgICAgICBWRUNfU0laRSAvIEVMRU1fU0laRSA6IElWRUNfU0laRSAvIElEWF9TSVpFKQogCi0j aWYgVkVDX1NJWkUgPT0gMTYKLSMgZGVmaW5lIHRvX2Jvb2woY21wKSBfX2J1aWx0aW5faWEzMl9w dGVzdGMxMjgoY21wLCAodmVjX3Qpe30gPT0gMCkKLSNlbHNlCi0jIGRlZmluZSB0b19ib29sKGNt cCkgX19idWlsdGluX2lhMzJfcHRlc3RjMjU2KGNtcCwgKHZlY190KXt9ID09IDApCi0jZW5kaWYK KyNpZiBkZWZpbmVkKF9fQVZYNTEyRl9fKQorIyBkZWZpbmUgQUxMX1RSVUUgKH4wVUxMID4+ICg2 NCAtIEVMRU1fQ09VTlQpKQorIyBpZiBFTEVNX1NJWkUgPT0gNAorIyAgaWYgSURYX1NJWkUgPT0g NCB8fCBkZWZpbmVkKF9fQVZYNTEyVkxfXykKKyMgICBkZWZpbmUgdG9fbWFzayhtc2spIEIocHRl c3RtZCwgLCAodnNpX3QpKG1zayksICh2c2lfdCkobXNrKSwgfjApCisjICAgZGVmaW5lIGVxKHgs IHkpIChCKHBjbXBlcWQsIF9tYXNrLCAodnNpX3QpKHgpLCAodnNpX3QpKHkpLCAtMSkgPT0gQUxM X1RSVUUpCisjICBlbHNlCisjICAgZGVmaW5lIHdpZGVuKHgpIF9fYnVpbHRpbl9pYTMyX3Btb3Z6 eGRxNTEyX21hc2soKHZzaV90KSh4KSwgKGlkaV90KXt9LCB+MCkKKyMgICBkZWZpbmUgdG9fbWFz ayhtc2spIF9fYnVpbHRpbl9pYTMyX3B0ZXN0bXE1MTIod2lkZW4obXNrKSwgd2lkZW4obXNrKSwg fjApCisjICAgZGVmaW5lIGVxKHgsIHkpIChfX2J1aWx0aW5faWEzMl9wY21wZXFxNTEyX21hc2so d2lkZW4oeCksIHdpZGVuKHkpLCB+MCkgPT0gQUxMX1RSVUUpCisjICBlbmRpZgorIyAgZGVmaW5l IEJHXyhkdCwgaXQsIHJlZywgbWVtLCBpZHgsIG1zaywgc2NsKSBcCisgICAgX19idWlsdGluX2lh MzJfZ2F0aGVyIyNpdCMjZHQocmVnLCBtZW0sIGlkeCwgdG9fbWFzayhtc2spLCBzY2wpCisjIGVs c2UKKyMgIGRlZmluZSBlcSh4LCB5KSAoQihwY21wZXFxLCBfbWFzaywgKHZkaV90KSh4KSwgKHZk aV90KSh5KSwgLTEpID09IEFMTF9UUlVFKQorIyAgZGVmaW5lIEJHXyhkdCwgaXQsIHJlZywgbWVt LCBpZHgsIG1zaywgc2NsKSBcCisgICAgX19idWlsdGluX2lhMzJfZ2F0aGVyIyNpdCMjZHQocmVn LCBtZW0sIGlkeCwgQihwdGVzdG1xLCAsICh2ZGlfdCkobXNrKSwgKHZkaV90KShtc2spLCB+MCks IHNjbCkKKyMgZW5kaWYKKy8qCisgKiBJbnN0ZWFkIG9mIHJlcGxpY2F0aW5nIHRoZSBtYWluIElE WF9TSVpFIGNvbmRpdGlvbmFsIGJlbG93IHRocmVlIHRpbWVzLCB1c2UKKyAqIGEgZG91YmxlIGxh eWVyIG9mIG1hY3JvIGludm9jYXRpb25zLCBhbGxvd2luZyBmb3Igc3Vic3RpdHV0aW9uIG9mIHRo ZQorICogcmVzcGVjdGl2ZSByZWxldmFudCBtYWNybyBhcmd1bWVudCB0b2tlbnMuCisgKi8KKyMg ZGVmaW5lIEJHKGR0LCBpdCwgcmVnLCBtZW0sIGlkeCwgbXNrLCBzY2wpIEJHXyhkdCwgaXQsIHJl ZywgbWVtLCBpZHgsIG1zaywgc2NsKQorIyBpZiBWRUNfTUFYIDwgNjQKKy8qCisgKiBUaGUgc3Vi LTUxMi1iaXQgYnVpbHQtaW5zIGhhdmUgYW4gZXh0cmEgIjMiIGluZml4LCBwcmVzdW1hYmx5IGJl Y2F1c2UgdGhlCisgKiA1MTItYml0IG5hbWVzIHdlcmUgY2hvc2VuIHdpdGhvdXQgdGhlIEFWWDUx MlZMIGV4dGVuc2lvbiBpbiBtaW5kIChhbmQgaGVuY2UKKyAqIG1ha2luZyB0aGUgbGF0dGVyIGNv bGxpZGUgd2l0aCB0aGUgQVZYMiBvbmVzKS4KKyAqLworIyAgZGVmaW5lIHNpIDNzaQorIyAgZGVm aW5lIGRpIDNkaQorIyBlbmRpZgorIyBpZiBWRUNfTUFYID09IDE2CisjICBkZWZpbmUgdjhkZiB2 MmRmCisjICBkZWZpbmUgdjhkaSB2MmRpCisjICBkZWZpbmUgdjE2c2YgdjRzZgorIyAgZGVmaW5l IHYxNnNpIHY0c2kKKyMgZWxpZiBWRUNfTUFYID09IDMyCisjICBkZWZpbmUgdjhkZiB2NGRmCisj ICBkZWZpbmUgdjhkaSB2NGRpCisjICBkZWZpbmUgdjE2c2YgdjhzZgorIyAgZGVmaW5lIHYxNnNp IHY4c2kKKyMgZW5kaWYKKyMgaWYgSURYX1NJWkUgPT0gNAorIyAgaWYgSU5UX1NJWkUgPT0gNAor IyAgIGRlZmluZSBnYXRoZXIocmVnLCBtZW0sIGlkeCwgbXNrLCBzY2wpIEJHKHYxNnNpLCBzaSwg cmVnLCBtZW0sIGlkeCwgbXNrLCBzY2wpCisjICBlbGlmIElOVF9TSVpFID09IDgKKyMgICBkZWZp bmUgZ2F0aGVyKHJlZywgbWVtLCBpZHgsIG1zaywgc2NsKSAodmVjX3QpKEJHKHY4ZGksIHNpLCAo dmRpX3QpKHJlZyksIG1lbSwgaWR4LCBtc2ssIHNjbCkpCisjICBlbGlmIEZMT0FUX1NJWkUgPT0g NAorIyAgIGRlZmluZSBnYXRoZXIocmVnLCBtZW0sIGlkeCwgbXNrLCBzY2wpIEJHKHYxNnNmLCBz aSwgcmVnLCBtZW0sIGlkeCwgbXNrLCBzY2wpCisjICBlbGlmIEZMT0FUX1NJWkUgPT0gOAorIyAg IGRlZmluZSBnYXRoZXIocmVnLCBtZW0sIGlkeCwgbXNrLCBzY2wpIEJHKHY4ZGYsIHNpLCByZWcs IG1lbSwgaWR4LCBtc2ssIHNjbCkKKyMgIGVuZGlmCisjIGVsaWYgSURYX1NJWkUgPT0gOAorIyAg aWYgSU5UX1NJWkUgPT0gNAorIyAgIGRlZmluZSBnYXRoZXIocmVnLCBtZW0sIGlkeCwgbXNrLCBz Y2wpIEJHKHYxNnNpLCBkaSwgcmVnLCBtZW0sIChpZGlfdCkoaWR4KSwgbXNrLCBzY2wpCisjICBl bGlmIElOVF9TSVpFID09IDgKKyMgICBkZWZpbmUgZ2F0aGVyKHJlZywgbWVtLCBpZHgsIG1zaywg c2NsKSAodmVjX3QpKEJHKHY4ZGksIGRpLCAodmRpX3QpKHJlZyksIG1lbSwgKGlkaV90KShpZHgp LCBtc2ssIHNjbCkpCisjICBlbGlmIEZMT0FUX1NJWkUgPT0gNAorIyAgIGRlZmluZSBnYXRoZXIo cmVnLCBtZW0sIGlkeCwgbXNrLCBzY2wpIEJHKHYxNnNmLCBkaSwgcmVnLCBtZW0sIChpZGlfdCko aWR4KSwgbXNrLCBzY2wpCisjICBlbGlmIEZMT0FUX1NJWkUgPT0gOAorIyAgIGRlZmluZSBnYXRo ZXIocmVnLCBtZW0sIGlkeCwgbXNrLCBzY2wpIEJHKHY4ZGYsIGRpLCByZWcsIG1lbSwgKGlkaV90 KShpZHgpLCBtc2ssIHNjbCkKKyMgIGVuZGlmCisjIGVuZGlmCisjZWxpZiBkZWZpbmVkKF9fQVZY Ml9fKQorIyBpZiBWRUNfU0laRSA9PSAxNgorIyAgZGVmaW5lIHRvX2Jvb2woY21wKSBfX2J1aWx0 aW5faWEzMl9wdGVzdGMxMjgoY21wLCAodmVjX3Qpe30gPT0gMCkKKyMgZWxzZQorIyAgZGVmaW5l IHRvX2Jvb2woY21wKSBfX2J1aWx0aW5faWEzMl9wdGVzdGMyNTYoY21wLCAodmVjX3Qpe30gPT0g MCkKKyMgZW5kaWYKIAotI2lmIGRlZmluZWQoX19BVlgyX18pCiAjIGlmIFZFQ19NQVggPT0gMTYK ICMgIGlmIElEWF9TSVpFID09IDQKICMgICBpZiBJTlRfU0laRSA9PSA0CkBAIC0xMTEsNiArMTc2 LDEwIEBAIHR5cGVkZWYgbG9uZyBsb25nIF9fYXR0cmlidXRlX18oKHZlY3Rvcl8KICMgZW5kaWYK ICNlbmRpZgogCisjaWZuZGVmIGVxCisjIGRlZmluZSBlcSh4LCB5KSB0b19ib29sKCh4KSA9PSAo eSkpCisjZW5kaWYKKwogI2RlZmluZSBHTFVFXyh4LCB5KSB4ICMjIHkKICNkZWZpbmUgR0xVRSh4 LCB5KSBHTFVFXyh4LCB5KQogCkBAIC0xMTksNiArMTg4LDcgQEAgdHlwZWRlZiBsb25nIGxvbmcg X19hdHRyaWJ1dGVfXygodmVjdG9yXwogI2RlZmluZSBQVVQ4KG4pICBQVVQ0KG4pLCAgIFBVVDQo KG4pICsgIDQpCiAjZGVmaW5lIFBVVDE2KG4pIFBVVDgobiksICAgUFVUOCgobikgKyAgOCkKICNk ZWZpbmUgUFVUMzIobikgUFVUMTYobiksIFBVVDE2KChuKSArIDE2KQorI2RlZmluZSBQVVQ2NChu KSBQVVQzMihuKSwgUFVUMzIoKG4pICsgMzIpCiAKIGNvbnN0IHR5cGVvZigodmVjX3Qpe31bMF0p IGFycmF5W10gPSB7CiAgICAgR0xVRShQVVQsIFZFQ19NQVgpKDEpLApAQCAtMTc0LDcgKzI0NCw3 IEBAIGludCBzZ190ZXN0KHZvaWQpCiAKICAgICB5ID0gZ2F0aGVyKGZ1bGwsIGFycmF5ICsgSVRF TV9DT1VOVCwgLWlkeCwgZnVsbCwgRUxFTV9TSVpFKTsKICNpZiBJVEVNX0NPVU5UID09IEVMRU1f Q09VTlQKLSAgICBpZiAoICF0b19ib29sKHkgPT0geCAtIDEpICkKKyAgICBpZiAoICFlcSh5LCB4 IC0gMSkgKQogICAgICAgICByZXR1cm4gX19MSU5FX187CiAjZWxzZQogICAgIGZvciAoIGkgPSAw OyBpIDwgSVRFTV9DT1VOVDsgKytpICkKLS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3Rl c3RfeDg2X2VtdWxhdG9yLmMKKysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3Rlc3RfeDg2 X2VtdWxhdG9yLmMKQEAgLTIyLDYgKzIyLDggQEAgYXNtICggIi5wdXNoc2VjdGlvbiAudGVzdCwg XCJheFwiLCBAcHJvZwogI2luY2x1ZGUgImF2eDUxMmRxLW9wbWFzay5oIgogI2luY2x1ZGUgImF2 eDUxMmJ3LW9wbWFzay5oIgogI2luY2x1ZGUgImF2eDUxMmYuaCIKKyNpbmNsdWRlICJhdng1MTJm LXNnLmgiCisjaW5jbHVkZSAiYXZ4NTEydmwtc2cuaCIKICNpbmNsdWRlICJhdng1MTJidy5oIgog I2luY2x1ZGUgImF2eDUxMmRxLmgiCiAjaW5jbHVkZSAiYXZ4NTEyZXIuaCIKQEAgLTkwLDExICs5 MiwxMyBAQCBzdGF0aWMgYm9vbCBzaW1kX2NoZWNrX2F2eDUxMmYodm9pZCkKICAgICByZXR1cm4g Y3B1X2hhc19hdng1MTJmOwogfQogI2RlZmluZSBzaW1kX2NoZWNrX2F2eDUxMmZfb3BtYXNrIHNp bWRfY2hlY2tfYXZ4NTEyZgorI2RlZmluZSBzaW1kX2NoZWNrX2F2eDUxMmZfc2cgc2ltZF9jaGVj a19hdng1MTJmCiAKIHN0YXRpYyBib29sIHNpbWRfY2hlY2tfYXZ4NTEyZl92bCh2b2lkKQogewog ICAgIHJldHVybiBjcHVfaGFzX2F2eDUxMmYgJiYgY3B1X2hhc19hdng1MTJ2bDsKIH0KKyNkZWZp bmUgc2ltZF9jaGVja19hdng1MTJ2bF9zZyBzaW1kX2NoZWNrX2F2eDUxMmZfdmwKIAogc3RhdGlj IGJvb2wgc2ltZF9jaGVja19hdng1MTJkcSh2b2lkKQogewpAQCAtMjkxLDYgKzI5NSwxNCBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IHsKICAgICBTSU1EKEFWWDUxMkYgdTMyeDE2LCAgICAgIGF2eDUx MmYsICAgICAgNjR1NCksCiAgICAgU0lNRChBVlg1MTJGIHM2NHg4LCAgICAgICBhdng1MTJmLCAg ICAgIDY0aTgpLAogICAgIFNJTUQoQVZYNTEyRiB1NjR4OCwgICAgICAgYXZ4NTEyZiwgICAgICA2 NHU4KSwKKyAgICBTSU1EKEFWWDUxMkYgUy9HIGYzMlsxNngzMl0sIGF2eDUxMmZfc2csIDY0eDRm NCksCisgICAgU0lNRChBVlg1MTJGIFMvRyBmNjRbIDh4MzJdLCBhdng1MTJmX3NnLCA2NHg0Zjgp LAorICAgIFNJTUQoQVZYNTEyRiBTL0cgZjMyWyA4eDY0XSwgYXZ4NTEyZl9zZywgNjR4OGY0KSwK KyAgICBTSU1EKEFWWDUxMkYgUy9HIGY2NFsgOHg2NF0sIGF2eDUxMmZfc2csIDY0eDhmOCksCisg ICAgU0lNRChBVlg1MTJGIFMvRyBpMzJbMTZ4MzJdLCBhdng1MTJmX3NnLCA2NHg0aTQpLAorICAg IFNJTUQoQVZYNTEyRiBTL0cgaTY0WyA4eDMyXSwgYXZ4NTEyZl9zZywgNjR4NGk4KSwKKyAgICBT SU1EKEFWWDUxMkYgUy9HIGkzMlsgOHg2NF0sIGF2eDUxMmZfc2csIDY0eDhpNCksCisgICAgU0lN RChBVlg1MTJGIFMvRyBpNjRbIDh4NjRdLCBhdng1MTJmX3NnLCA2NHg4aTgpLAogICAgIEFWWDUx MlZMKFZMIGYzMng0LCAgICAgICAgYXZ4NTEyZiwgICAgICAxNmY0KSwKICAgICBBVlg1MTJWTChW TCBmNjR4MiwgICAgICAgIGF2eDUxMmYsICAgICAgMTZmOCksCiAgICAgQVZYNTEyVkwoVkwgZjMy eDgsICAgICAgICBhdng1MTJmLCAgICAgIDMyZjQpLApAQCAtMzAzLDYgKzMxNSwyMiBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IHsKICAgICBBVlg1MTJWTChWTCB1NjR4MiwgICAgICAgIGF2eDUxMmYs ICAgICAgMTZ1OCksCiAgICAgQVZYNTEyVkwoVkwgczY0eDQsICAgICAgICBhdng1MTJmLCAgICAg IDMyaTgpLAogICAgIEFWWDUxMlZMKFZMIHU2NHg0LCAgICAgICAgYXZ4NTEyZiwgICAgICAzMnU4 KSwKKyAgICBTSU1EKEFWWDUxMlZMIFMvRyBmMzJbNHgzMl0sIGF2eDUxMnZsX3NnLCAxNng0ZjQp LAorICAgIFNJTUQoQVZYNTEyVkwgUy9HIGY2NFsyeDMyXSwgYXZ4NTEydmxfc2csIDE2eDRmOCks CisgICAgU0lNRChBVlg1MTJWTCBTL0cgZjMyWzJ4NjRdLCBhdng1MTJ2bF9zZywgMTZ4OGY0KSwK KyAgICBTSU1EKEFWWDUxMlZMIFMvRyBmNjRbMng2NF0sIGF2eDUxMnZsX3NnLCAxNng4ZjgpLAor ICAgIFNJTUQoQVZYNTEyVkwgUy9HIGYzMls4eDMyXSwgYXZ4NTEydmxfc2csIDMyeDRmNCksCisg ICAgU0lNRChBVlg1MTJWTCBTL0cgZjY0WzR4MzJdLCBhdng1MTJ2bF9zZywgMzJ4NGY4KSwKKyAg ICBTSU1EKEFWWDUxMlZMIFMvRyBmMzJbNHg2NF0sIGF2eDUxMnZsX3NnLCAzMng4ZjQpLAorICAg IFNJTUQoQVZYNTEyVkwgUy9HIGY2NFs0eDY0XSwgYXZ4NTEydmxfc2csIDMyeDhmOCksCisgICAg U0lNRChBVlg1MTJWTCBTL0cgaTMyWzR4MzJdLCBhdng1MTJ2bF9zZywgMTZ4NGk0KSwKKyAgICBT SU1EKEFWWDUxMlZMIFMvRyBpNjRbMngzMl0sIGF2eDUxMnZsX3NnLCAxNng0aTgpLAorICAgIFNJ TUQoQVZYNTEyVkwgUy9HIGkzMlsyeDY0XSwgYXZ4NTEydmxfc2csIDE2eDhpNCksCisgICAgU0lN RChBVlg1MTJWTCBTL0cgaTY0WzJ4NjRdLCBhdng1MTJ2bF9zZywgMTZ4OGk4KSwKKyAgICBTSU1E KEFWWDUxMlZMIFMvRyBpMzJbOHgzMl0sIGF2eDUxMnZsX3NnLCAzMng0aTQpLAorICAgIFNJTUQo QVZYNTEyVkwgUy9HIGk2NFs0eDMyXSwgYXZ4NTEydmxfc2csIDMyeDRpOCksCisgICAgU0lNRChB Vlg1MTJWTCBTL0cgaTMyWzR4NjRdLCBhdng1MTJ2bF9zZywgMzJ4OGk0KSwKKyAgICBTSU1EKEFW WDUxMlZMIFMvRyBpNjRbNHg2NF0sIGF2eDUxMnZsX3NnLCAzMng4aTgpLAogICAgIFNJTUQoQVZY NTEyQlcgczh4NjQsICAgICBhdng1MTJidywgICAgICA2NGkxKSwKICAgICBTSU1EKEFWWDUxMkJX IHU4eDY0LCAgICAgYXZ4NTEyYncsICAgICAgNjR1MSksCiAgICAgU0lNRChBVlg1MTJCVyBzMTZ4 MzIsICAgIGF2eDUxMmJ3LCAgICAgIDY0aTIpLApAQCAtNDI2MCw3ICs0Mjg4LDcgQEAgaW50IG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAgICAgICAgIGlmICggIWJsb2JzW2pdLnNpemUg KQogICAgICAgICB7Ci0gICAgICAgICAgICBwcmludGYoIiUtMzlzIG4vYVxuIiwgYmxvYnNbal0u bmFtZSk7CisgICAgICAgICAgICBwcmludGYoIiUtMzlzIG4vYSAoJXUtYml0KVxuIiwgYmxvYnNb al0ubmFtZSwgYmxvYnNbal0uYml0bmVzcyk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg ICAgfQogCi0tLSBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jCisrKyBi L3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jCkBAIC00OTksNyArNDk5LDcg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBleHQwZjM4X3RhYmxlIHsKICAgICBbMHg4Y10gPSB7IC5z aW1kX3NpemUgPSBzaW1kX3BhY2tlZF9pbnQgfSwKICAgICBbMHg4ZF0gPSB7IC5zaW1kX3NpemUg PSBzaW1kX3BhY2tlZF9pbnQsIC5kOHMgPSBkOHNfdmwgfSwKICAgICBbMHg4ZV0gPSB7IC5zaW1k X3NpemUgPSBzaW1kX3BhY2tlZF9pbnQsIC50b19tZW0gPSAxIH0sCi0gICAgWzB4OTAgLi4uIDB4 OTNdID0geyAuc2ltZF9zaXplID0gc2ltZF9vdGhlciwgLnZzaWIgPSAxIH0sCisgICAgWzB4OTAg Li4uIDB4OTNdID0geyAuc2ltZF9zaXplID0gc2ltZF9vdGhlciwgLnZzaWIgPSAxLCAuZDhzID0g ZDhzX2RxIH0sCiAgICAgWzB4OTYgLi4uIDB4OThdID0geyAuc2ltZF9zaXplID0gc2ltZF9wYWNr ZWRfZnAsIC5kOHMgPSBkOHNfdmwgfSwKICAgICBbMHg5OV0gPSB7IC5zaW1kX3NpemUgPSBzaW1k X3NjYWxhcl92ZXh3LCAuZDhzID0gZDhzX2RxIH0sCiAgICAgWzB4OWFdID0geyAuc2ltZF9zaXpl ID0gc2ltZF9wYWNrZWRfZnAsIC5kOHMgPSBkOHNfdmwgfSwKQEAgLTMwNTQsNyArMzA1NCw4IEBA IHg4Nl9kZWNvZGUoCiAKICAgICAgICAgZCAmPSB+TW9kUk07CiAjdW5kZWYgTW9kUk0gLyogT25s eSBpdHMgYWxpYXNlcyBhcmUgdmFsaWQgdG8gdXNlIGZyb20gaGVyZSBvbi4gKi8KLSAgICAgICAg bW9kcm1fcmVnID0gKChyZXhfcHJlZml4ICYgNCkgPDwgMSkgfCAoKG1vZHJtICYgMHgzOCkgPj4g Myk7CisgICAgICAgIG1vZHJtX3JlZyA9ICgocmV4X3ByZWZpeCAmIDQpIDw8IDEpIHwgKChtb2Ry bSAmIDB4MzgpID4+IDMpIHwKKyAgICAgICAgICAgICAgICAgICAgKChldmV4X2VuY29kZWQoKSAm JiAhZXZleC5SKSA8PCA0KTsKICAgICAgICAgbW9kcm1fcm0gID0gbW9kcm0gJiAweDA3OwogCiAg ICAgICAgIC8qCkBAIC0zMjI0LDcgKzMyMjUsOCBAQCB4ODZfZGVjb2RlKAogICAgICAgICBpZiAo IG1vZHJtX21vZCA9PSAzICkKICAgICAgICAgewogICAgICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0 aW9uX2lmKGQgJiB2U0lCLCBFWENfVUQpOwotICAgICAgICAgICAgbW9kcm1fcm0gfD0gKHJleF9w cmVmaXggJiAxKSA8PCAzOworICAgICAgICAgICAgbW9kcm1fcm0gfD0gKChyZXhfcHJlZml4ICYg MSkgPDwgMykgfAorICAgICAgICAgICAgICAgICAgICAgICAgKGV2ZXhfZW5jb2RlZCgpICYmICFl dmV4LngpIDw8IDQ7CiAgICAgICAgICAgICBlYS50eXBlID0gT1BfUkVHOwogICAgICAgICB9CiAg ICAgICAgIGVsc2UgaWYgKCBhZF9ieXRlcyA9PSAyICkKQEAgLTMyODksNyArMzI5MSwxMCBAQCB4 ODZfZGVjb2RlKAogCiAgICAgICAgICAgICAgICAgc3RhdGUtPnNpYl9pbmRleCA9ICgoc2liID4+ IDMpICYgNykgfCAoKHJleF9wcmVmaXggPDwgMikgJiA4KTsKICAgICAgICAgICAgICAgICBzdGF0 ZS0+c2liX3NjYWxlID0gKHNpYiA+PiA2KSAmIDM7Ci0gICAgICAgICAgICAgICAgaWYgKCBzdGF0 ZS0+c2liX2luZGV4ICE9IDQgJiYgIShkICYgdlNJQikgKQorICAgICAgICAgICAgICAgIGlmICgg dW5saWtlbHkoZCAmIHZTSUIpICkKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUtPnNpYl9pbmRl eCB8PSAobW9kZV82NGJpdCgpICYmIGV2ZXhfZW5jb2RlZCgpICYmCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICFldmV4LlJYKSA8PCA0OworICAgICAgICAgICAgICAg IGVsc2UgaWYgKCBzdGF0ZS0+c2liX2luZGV4ICE9IDQgKQogICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICAgZWEubWVtLm9mZiA9ICpkZWNvZGVfZ3ByKHN0YXRlLT5yZWdzLCBz dGF0ZS0+c2liX2luZGV4KTsKICAgICAgICAgICAgICAgICAgICAgZWEubWVtLm9mZiA8PD0gc3Rh dGUtPnNpYl9zY2FsZTsKQEAgLTM1OTIsNyArMzU5Nyw3IEBAIHg4Nl9lbXVsYXRlKAogICAgIGdl bmVyYXRlX2V4Y2VwdGlvbl9pZihzdGF0ZS0+bm90XzY0Yml0ICYmIG1vZGVfNjRiaXQoKSwgRVhD X1VEKTsKIAogICAgIGlmICggZWEudHlwZSA9PSBPUF9SRUcgKQotICAgICAgICBlYS5yZWcgPSBf ZGVjb2RlX2dwcigmX3JlZ3MsIG1vZHJtX3JtLCAoZCAmIEJ5dGVPcCkgJiYgIXJleF9wcmVmaXgp OworICAgICAgICBlYS5yZWcgPSBfZGVjb2RlX2dwcigmX3JlZ3MsIG1vZHJtX3JtLCAoZCAmIEJ5 dGVPcCkgJiYgIXJleF9wcmVmaXggJiYgIXZleC5vcGN4KTsKIAogICAgIG1lbXNldChtbXZhbHAs IDB4YWEgLyogYXJiaXRyYXJ5ICovLCBzaXplb2YoKm1tdmFscCkpOwogCkBAIC0zNjA2LDcgKzM2 MTEsNyBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgc3JjLnR5cGUgPSBPUF9SRUc7CiAgICAgICAg IGlmICggZCAmIEJ5dGVPcCApCiAgICAgICAgIHsKLSAgICAgICAgICAgIHNyYy5yZWcgPSBfZGVj b2RlX2dwcigmX3JlZ3MsIG1vZHJtX3JlZywgIXJleF9wcmVmaXgpOworICAgICAgICAgICAgc3Jj LnJlZyA9IF9kZWNvZGVfZ3ByKCZfcmVncywgbW9kcm1fcmVnLCAhcmV4X3ByZWZpeCAmJiAhdmV4 Lm9wY3gpOwogICAgICAgICAgICAgc3JjLnZhbCA9ICoodWludDhfdCAqKXNyYy5yZWc7CiAgICAg ICAgICAgICBzcmMuYnl0ZXMgPSAxOwogICAgICAgICB9CkBAIC0zNzA0LDcgKzM3MDksNyBAQCB4 ODZfZW11bGF0ZSgKICAgICAgICAgZHN0LnR5cGUgPSBPUF9SRUc7CiAgICAgICAgIGlmICggZCAm IEJ5dGVPcCApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGRzdC5yZWcgPSBfZGVjb2RlX2dwcigm X3JlZ3MsIG1vZHJtX3JlZywgIXJleF9wcmVmaXgpOworICAgICAgICAgICAgZHN0LnJlZyA9IF9k ZWNvZGVfZ3ByKCZfcmVncywgbW9kcm1fcmVnLCAhcmV4X3ByZWZpeCAmJiAhdmV4Lm9wY3gpOwog ICAgICAgICAgICAgZHN0LnZhbCA9ICoodWludDhfdCAqKWRzdC5yZWc7CiAgICAgICAgICAgICBk c3QuYnl0ZXMgPSAxOwogICAgICAgICB9CkBAIC05MTA4LDYgKzkxMTMsMTMwIEBAIHg4Nl9lbXVs YXRlKAogICAgICAgICBwdXRfc3R1YihzdHViKTsKIAogICAgICAgICBzdGF0ZS0+c2ltZF9zaXpl ID0gc2ltZF9ub25lOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFg4NkVNVUxf T1BDX0VWRVhfNjYoMHgwZjM4LCAweDkwKTogLyogdnBnYXRoZXJke2QscX0gbWVtLFt4eXpdbW17 a30gKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhfNjYoMHgwZjM4LCAweDkxKTogLyogdnBn YXRoZXJxe2QscX0gbWVtLFt4eXpdbW17a30gKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhf NjYoMHgwZjM4LCAweDkyKTogLyogdmdhdGhlcmRwe3MsZH0gbWVtLFt4eXpdbW17a30gKi8KKyAg ICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhfNjYoMHgwZjM4LCAweDkzKTogLyogdmdhdGhlcnFwe3Ms ZH0gbWVtLFt4eXpdbW17a30gKi8KKyAgICB7CisgICAgICAgIHR5cGVvZihldmV4KSAqcGV2ZXg7 CisgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgIGludDMyX3QgZHdbMTZdOworICAgICAgICAg ICAgaW50NjRfdCBxd1s4XTsKKyAgICAgICAgfSBpbmRleDsKKyAgICAgICAgYm9vbCBkb25lID0g ZmFsc2U7CisKKyAgICAgICAgQVNTRVJUKGVhLnR5cGUgPT0gT1BfTUVNKTsKKyAgICAgICAgZ2Vu ZXJhdGVfZXhjZXB0aW9uX2lmKCghZXZleC5vcG1zayB8fCBldmV4LmJycyB8fCBldmV4LnogfHwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmV4LnJlZyAhPSAweGYgfHwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RybV9yZWcgPT0gc3RhdGUtPnNpYl9pbmRleCks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWENfVUQpOworICAgICAgICBhdng1MTJf dmxlbl9jaGVjayhmYWxzZSk7CisgICAgICAgIGhvc3RfYW5kX3ZjcHVfbXVzdF9oYXZlKGF2eDUx MmYpOworICAgICAgICBnZXRfZnB1KFg4NkVNVUxfRlBVX3ptbSk7CisKKyAgICAgICAgLyogUmVh ZCBkZXN0aW5hdGlvbiBhbmQgaW5kZXggcmVnaXN0ZXJzLiAqLworICAgICAgICBvcGMgPSBpbml0 X2V2ZXgoc3R1Yik7CisgICAgICAgIHBldmV4ID0gY29weV9FVkVYKG9wYywgZXZleCk7CisgICAg ICAgIHBldmV4LT5vcGN4ID0gdmV4XzBmOworICAgICAgICBvcGNbMF0gPSAweDdmOyAvKiB2bW92 ZHFhezMyLDY0fSAqLworICAgICAgICAvKgorICAgICAgICAgKiBUaGUgcmVnaXN0ZXIgd3JpdGVi YWNrIGJlbG93IGhhcyB0byByZXRhaW4gbWFza2VkLW9mZiBlbGVtZW50cywgYnV0CisgICAgICAg ICAqIG5lZWRzIHRvIGNsZWFyIHVwcGVyIHBvcnRpb25zIGluIHRoZSBpbmRleC13aWRlci10aGFu LWRhdGEgY2FzZXMuCisgICAgICAgICAqIFRoZXJlZm9yZSByZWFkIChhbmQgd3JpdGUgYmVsb3cp IHRoZSBmdWxsIHJlZ2lzdGVyLiBUaGUgYWx0ZXJuYXRpdmUKKyAgICAgICAgICogd291bGQgaGF2 ZSBiZWVuIHRvIGZpZGRsZSB3aXRoIHRoZSBtYXNrIHJlZ2lzdGVyIHVzZWQuCisgICAgICAgICAq LworICAgICAgICBwZXZleC0+b3Btc2sgPSAwOworICAgICAgICAvKiBVc2UgKCVyYXgpIGFzIGRl c3RpbmF0aW9uIGFuZCBtb2RybV9yZWcgYXMgc291cmNlLiAqLworICAgICAgICBwZXZleC0+YiA9 IDE7CisgICAgICAgIG9wY1sxXSA9IChtb2RybV9yZWcgJiA3KSA8PCAzOworICAgICAgICBwZXZl eC0+UlggPSAxOworICAgICAgICBvcGNbMl0gPSAweGMzOworCisgICAgICAgIGludm9rZV9zdHVi KCIiLCAiIiwgIj1tIiAoKm1tdmFscCkgOiAiYSIgKG1tdmFscCkpOworCisgICAgICAgIHBldmV4 LT5wZnggPSB2ZXhfZjM7IC8qIHZtb3ZkcXV7MzIsNjR9ICovCisgICAgICAgIHBldmV4LT53ID0g YiAmIDE7CisgICAgICAgIC8qIFN3aXRjaCB0byBzaWJfaW5kZXggYXMgc291cmNlLiAqLworICAg ICAgICBwZXZleC0+ciA9ICFtb2RlXzY0Yml0KCkgfHwgIShzdGF0ZS0+c2liX2luZGV4ICYgMHgw OCk7CisgICAgICAgIHBldmV4LT5SID0gIW1vZGVfNjRiaXQoKSB8fCAhKHN0YXRlLT5zaWJfaW5k ZXggJiAweDEwKTsKKyAgICAgICAgb3BjWzFdID0gKHN0YXRlLT5zaWJfaW5kZXggJiA3KSA8PCAz OworCisgICAgICAgIGludm9rZV9zdHViKCIiLCAiIiwgIj1tIiAoaW5kZXgpIDogImEiICgmaW5k ZXgpKTsKKyAgICAgICAgcHV0X3N0dWIoc3R1Yik7CisKKyAgICAgICAgLyogQ2xlYXIgdW50b3Vj aGVkIHBhcnRzIG9mIHRoZSBkZXN0aW5hdGlvbiBhbmQgbWFzayB2YWx1ZXMuICovCisgICAgICAg IG4gPSAxIDw8ICgyICsgZXZleC5sciAtICgoYiAmIDEpIHwgZXZleC53KSk7CisgICAgICAgIG9w X2J5dGVzID0gNCA8PCBldmV4Lnc7CisgICAgICAgIG1lbXNldCgodm9pZCAqKW1tdmFscCArIG4g KiBvcF9ieXRlcywgMCwgNjQgLSBuICogb3BfYnl0ZXMpOworICAgICAgICBvcF9tYXNrICY9ICgx IDw8IG4pIC0gMTsKKworICAgICAgICBmb3IgKCBpID0gMDsgb3BfbWFzazsgKytpICkKKyAgICAg ICAgeworICAgICAgICAgICAgc2lnbmVkIGxvbmcgaWR4ID0gYiAmIDEgPyBpbmRleC5xd1tpXSA6 IGluZGV4LmR3W2ldOworCisgICAgICAgICAgICBpZiAoICEob3BfbWFzayAmICgxIDw8IGkpKSAp CisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHJjID0gb3BzLT5yZWFk KGVhLm1lbS5zZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVuY2F0ZV9lYShlYS5t ZW0ub2ZmICsgKGlkeCA8PCBzdGF0ZS0+c2liX3NjYWxlKSksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAodm9pZCAqKW1tdmFscCArIGkgKiBvcF9ieXRlcywgb3BfYnl0ZXMsIGN0eHQpOwor ICAgICAgICAgICAgaWYgKCByYyAhPSBYODZFTVVMX09LQVkgKQorICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogSWYgd2UndmUgbWFkZSBzb21lIHBy b2dyZXNzIGFuZCB0aGUgYWNjZXNzIGRpZCBub3QgZmF1bHQsCisgICAgICAgICAgICAgICAgICog Zm9yY2UgYSByZXRyeSBpbnN0ZWFkLiBUaGlzIGlzIGZvciBleGFtcGxlIG5lY2Vzc2FyeSB0bwor ICAgICAgICAgICAgICAgICAqIGNvcGUgd2l0aCB0aGUgbGltaXRlZCBjYXBhY2l0eSBvZiBIVk0n cyBNTUlPIGNhY2hlLgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIGlmICgg cmMgIT0gWDg2RU1VTF9FWENFUFRJT04gJiYgZG9uZSApCisgICAgICAgICAgICAgICAgICAgIHJj ID0gWDg2RU1VTF9SRVRSWTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K KworICAgICAgICAgICAgb3BfbWFzayAmPSB+KDEgPDwgaSk7CisgICAgICAgICAgICBkb25lID0g dHJ1ZTsKKworI2lmZGVmIF9fWEVOX18KKyAgICAgICAgICAgIGlmICggb3BfbWFzayAmJiBsb2Nh bF9ldmVudHNfbmVlZF9kZWxpdmVyeSgpICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ICByYyA9IFg4NkVNVUxfUkVUUlk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg ICB9CisjZW5kaWYKKyAgICAgICAgfQorCisgICAgICAgIC8qIFdyaXRlIGRlc3RpbmF0aW9uIGFu ZCBtYXNrIHJlZ2lzdGVycy4gKi8KKyAgICAgICAgb3BjID0gaW5pdF9ldmV4KHN0dWIpOworICAg ICAgICBwZXZleCA9IGNvcHlfRVZFWChvcGMsIGV2ZXgpOworICAgICAgICBwZXZleC0+b3BjeCA9 IHZleF8wZjsKKyAgICAgICAgb3BjWzBdID0gMHg2ZjsgLyogdm1vdmRxYXszMiw2NH0gKi8KKyAg ICAgICAgcGV2ZXgtPm9wbXNrID0gMDsKKyAgICAgICAgLyogVXNlIG1vZHJtX3JlZyBhcyBkZXN0 aW5hdGlvbiBhbmQgKCVyYXgpIGFzIHNvdXJjZS4gKi8KKyAgICAgICAgcGV2ZXgtPmIgPSAxOwor ICAgICAgICBvcGNbMV0gPSAobW9kcm1fcmVnICYgNykgPDwgMzsKKyAgICAgICAgcGV2ZXgtPlJY ID0gMTsKKyAgICAgICAgb3BjWzJdID0gMHhjMzsKKworICAgICAgICBpbnZva2Vfc3R1YigiIiwg IiIsICIrbSIgKCptbXZhbHApIDogImEiIChtbXZhbHApKTsKKworICAgICAgICAvKgorICAgICAg ICAgKiBrbW92dzogVGhpcyBpcyBWRVgtZW5jb2RlZCwgc28gd2UgY2FuJ3QgdXNlIHBldmV4LiBB dm9pZCBjb3B5X1ZFWCgpIGV0YworICAgICAgICAgKiBhcyB3ZWxsLCBzaW5jZSB3ZSBjYW4gZWFz aWx5IHVzZSB0aGUgMi1ieXRlIFZFWCBmb3JtIGhlcmUuCisgICAgICAgICAqLworICAgICAgICBv cGMgLT0gRVZFWF9QRlhfQllURVM7CisgICAgICAgIG9wY1swXSA9IDB4YzU7CisgICAgICAgIG9w Y1sxXSA9IDB4Zjg7CisgICAgICAgIG9wY1syXSA9IDB4OTA7CisgICAgICAgIC8qIFVzZSAoJXJh eCkgYXMgc291cmNlLiAqLworICAgICAgICBvcGNbM10gPSBldmV4Lm9wbXNrIDw8IDM7CisgICAg ICAgIG9wY1s0XSA9IDB4YzM7CisKKyAgICAgICAgaW52b2tlX3N0dWIoIiIsICIiLCAiK20iIChv cF9tYXNrKSA6ICJhIiAoJm9wX21hc2spKTsKKyAgICAgICAgcHV0X3N0dWIoc3R1Yik7CisKKyAg ICAgICAgc3RhdGUtPnNpbWRfc2l6ZSA9IHNpbWRfbm9uZTsKICAgICAgICAgYnJlYWs7CiAgICAg fQogCi0tLSBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5oCisrKyBiL3hl bi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5oCkBAIC02NTYsOSArNjU2LDYgQEAg c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nICpkZWNvZGVfZ3ByKAogICAgIEJVSUxEX0JVR19P TihBUlJBWV9TSVpFKGNwdV91c2VyX3JlZ3NfZ3ByX29mZnNldHMpICYKICAgICAgICAgICAgICAg ICAgKEFSUkFZX1NJWkUoY3B1X3VzZXJfcmVnc19ncHJfb2Zmc2V0cykgLSAxKSk7CiAKLSAgICBB U1NFUlQobW9kcm0gPCBBUlJBWV9TSVpFKGNwdV91c2VyX3JlZ3NfZ3ByX29mZnNldHMpKTsKLQot ICAgIC8qIEZvciBzYWZldHkgaW4gcmVsZWFzZSBidWlsZHMuICBEZWJ1ZyBidWlsZHMgd2lsbCBo aXQgdGhlIEFTU0VSVCgpICovCiAgICAgbW9kcm0gJj0gQVJSQVlfU0laRShjcHVfdXNlcl9yZWdz X2dwcl9vZmZzZXRzKSAtIDE7CiAKICAgICByZXR1cm4gKHZvaWQgKilyZWdzICsgY3B1X3VzZXJf cmVnc19ncHJfb2Zmc2V0c1ttb2RybV07CgoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0 cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlz dGluZm8veGVuLWRldmVs