From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from smtp5-g21.free.fr ([212.27.42.5]:49427 "EHLO smtp5-g21.free.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753653Ab1BOJWr (ORCPT ); Tue, 15 Feb 2011 04:22:47 -0500 Date: Tue, 15 Feb 2011 10:26:26 +0100 From: Jean-Francois Moine To: Linux Media Mailing List , Hans de Goede Subject: [PATCH] v4l-utils: Add the JPEG Lite decoding function Message-ID: <20110215102626.3e8e83d3@tele> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="MP_/4iDeWfKibmEB3lEIq2aq1ve" List-ID: Sender: --MP_/4iDeWfKibmEB3lEIq2aq1ve Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Hi Hans, I got the permission to relicense the JPEG Lite decoding to the LGPL. If you want to test the nw80x driver, get the gspca tarball from my web page (2.12.12). I added your webcam which should directly work (p35u - chip nw801). Best regards. --=20 Ken ar c'henta=C3=B1 | ** Breizh ha Linux atav! ** Jef | http://moinejf.free.fr/ --MP_/4iDeWfKibmEB3lEIq2aq1ve Content-Type: application/octet-stream; name=jpgl.pat Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=jpgl.pat djRsLXV0aWxzOiBBZGQgdGhlIEpQRUcgTGl0ZSBkZWNvZGluZyBmdW5jdGlvbgoKSlBFRyBMaXRl IGltYWdlcyBhcmUgY3JlYXRlZCBieSB0aGUgRGl2SU8gbnc4MHggY2hpcHMuCgpTaWduZWQtb2Zm LWJ5OiBKZWFuLUZyYW7Dp29pcyBNb2luZSA8bW9pbmVqZkBmcmVlLmZyPgoKZGlmZiAtLWdpdCBh L2luY2x1ZGUvbGludXgvdmlkZW9kZXYyLmggYi9pbmNsdWRlL2xpbnV4L3ZpZGVvZGV2Mi5oCmlu ZGV4IGI3M2ZlMjAuLjUxNzg4YTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvdmlkZW9kZXYy LmgKKysrIGIvaW5jbHVkZS9saW51eC92aWRlb2RldjIuaApAQCAtMzQwLDYgKzM0MCw3IEBAIHN0 cnVjdCB2NGwyX3BpeF9mb3JtYXQgewogI2RlZmluZSBWNEwyX1BJWF9GTVRfSlBFRyAgICAgdjRs Ml9mb3VyY2MoJ0onLCAnUCcsICdFJywgJ0cnKSAvKiBKRklGIEpQRUcgICAgICovCiAjZGVmaW5l IFY0TDJfUElYX0ZNVF9EViAgICAgICB2NGwyX2ZvdXJjYygnZCcsICd2JywgJ3MnLCAnZCcpIC8q IDEzOTQgICAgICAgICAgKi8KICNkZWZpbmUgVjRMMl9QSVhfRk1UX01QRUcgICAgIHY0bDJfZm91 cmNjKCdNJywgJ1AnLCAnRScsICdHJykgLyogTVBFRy0xLzIvNCAgICAqLworI2RlZmluZSBWNEwy X1BJWF9GTVRfSlBHTCAgICAgdjRsMl9mb3VyY2MoJ0onLCAnUCcsICdHJywgJ0wnKSAvKiBKUEVH IExpdGUgICAgICovCiAKIC8qICBWZW5kb3Itc3BlY2lmaWMgZm9ybWF0cyAgICovCiAjZGVmaW5l IFY0TDJfUElYX0ZNVF9DUElBMSAgICB2NGwyX2ZvdXJjYygnQycsICdQJywgJ0knLCAnQScpIC8q IGNwaWExIFlVViAqLwpkaWZmIC0tZ2l0IGEvbGliL2xpYnY0bGNvbnZlcnQvTWFrZWZpbGUgYi9s aWIvbGlidjRsY29udmVydC9NYWtlZmlsZQppbmRleCA5M2U1ZmU4Li41MDNmMTM0IDEwMDY0NAot LS0gYS9saWIvbGlidjRsY29udmVydC9NYWtlZmlsZQorKysgYi9saWIvbGlidjRsY29udmVydC9N YWtlZmlsZQpAQCAtMTIsNyArMTIsNyBAQCBlbmRpZgogQ09OVkVSVF9PQkpTICA9IGxpYnY0bGNv bnZlcnQubyB0aW55anBlZy5vIHNuOWMxMHgubyBzbjljMjB4Lm8gcGFjMjA3Lm8gXAogCQltcjk3 MzEwYS5vIGZsaXAubyBjcm9wLm8gamlkY3RmbHQubyBzcGNhNTYxLWRlY29tcHJlc3MubyBcCiAJ CXJnYnl1di5vIHNuOWMyMDI4LWRlY29tcC5vIHNwY2E1MDEubyBzcTkwNWMubyBiYXllci5vIGht MTIubyBcCi0JCXN0djA2ODAubyBjcGlhMS5vIFwKKwkJc3R2MDY4MC5vIGNwaWExLm8ganBnbC5v IFwKIAkJY29udHJvbC9saWJ2NGxjb250cm9sLm8gcHJvY2Vzc2luZy9saWJ2NGxwcm9jZXNzaW5n Lm8gXAogCQlwcm9jZXNzaW5nL3doaXRlYmFsYW5jZS5vIHByb2Nlc3NpbmcvYXV0b2dhaW4ubyBc CiAJCXByb2Nlc3NpbmcvZ2FtbWEubyBoZWxwZXIubwpkaWZmIC0tZ2l0IGEvbGliL2xpYnY0bGNv bnZlcnQvanBnbC5jIGIvbGliL2xpYnY0bGNvbnZlcnQvanBnbC5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjIxNDI5MjkKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvbGlidjRs Y29udmVydC9qcGdsLmMKQEAgLTAsMCArMSw3MjggQEAKKy8qCisgKiBJbXBsZW1lbnRhdGlvbiBv ZiBKUEVHIExpdGUgZGVjb2RpbmcgYWxnb3JpdGhtCisgKgorICogQXV0aG9yICYgQ29weXJpZ2h0 IChjKSAyMDAzIDogU3lsdmFpbiBNdW5hdXQgPG53OHh4IF1hdFsgMjQ2dE50LmNvbT4KKyAqCisg KiB2NGwgbGlicmFyeSBhZGFwdGF0aW9uOiBKZWFuLUZyYW7Dp29pcyBNb2luZSA8bW9pbmVqZkBm cmVlLmZyPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9u KQorICogYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8g dGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2Ft YnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorCisgKiBOb3RlIHRoaXMgY29kZSB3YXMgb3JpZ2luYWxs eSBsaWNlbnNlZCB1bmRlciB0aGUgR05VIEdQTCBpbnN0ZWFkIG9mIHRoZQorICogR05VIExHUEws IGl0cyBsaWNlbnNlIGhhcyBiZWVuIGNoYW5nZWQgd2l0aCBwZXJtaXNzaW9uLCBzZWUgdGhlIHBl cm1pc3Npb24KKyAqIG1haWwgYXQgdGhlIGVuZCBvZiB0aGlzIGZpbGUuCisgKi8KKworLyogT3Jp Z2luYWwgV2ViU2l0ZTogbnc4MDIuc291cmNlZm9yZ2UubmV0ICovCisKKyNpbmNsdWRlIDxzdGRs aWIuaD4KKyNpbmNsdWRlICJsaWJ2NGxjb252ZXJ0LXByaXYuaCIKKworI2RlZmluZSBSSU5HX1FV RVVFX0FEVkFOQ0VfSU5ERVgocnEsaW5kLG4pIChycSktPmluZCA9ICgocnEpLT5pbmQgKyAobikp CisjZGVmaW5lIFJJTkdfUVVFVUVfREVRVUVVRV9CWVRFUyhycSxuKSBSSU5HX1FVRVVFX0FEVkFO Q0VfSU5ERVgocnEscmksbikKKyNkZWZpbmUgUklOR19RVUVVRV9QRUVLKHJxLG9mcykgKChycSkt PnF1ZXVlWygob2ZzKSArIChycSktPnJpKV0pCisKK3N0cnVjdCBSaW5nUXVldWUgeworCWNvbnN0 IHVuc2lnbmVkIGNoYXIgKnF1ZXVlOworCWludCBsZW5ndGg7CisJaW50IHJpOworfTsKKworLyog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorICogUmluZ1F1ZXVlIGJpdCByZWFkZXIKKyAqID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKyAqIEFsbCB3aGF0IGlzIG5lZWRlZCB0byByZWFkIGJpdCBieSBuaXQgZnJv bSB0aGUgUmluZ1F1ZXVlIHB1bXAgCisgKiBwcm92aWRlZCBieSB1c2J2aWRlbworICogQ3JpdGlj YWwgcGFydCBhcmUgbWFjcm8gYW5kIG5vdCBmdW5jdGlvbnMgdG8gc3BlZWQgdGhpbmdzIHVwCisg KiBSZW06IERhdGEgYXJlIHJlYWQgZnJvbSB0aGUgUmluZ1F1ZXVlIGFzIGlmIHRoZXkgd2VyZSAx NmJpdHMgTGl0dGxlIEVuZGlhbgorICogICAgICB3b3Jkcy4gTW9zdCBTaWduaWZpY2FudHMgQml0 cyBhcmUgb3V0cHV0ZWQgZmlyc3QuCisgKi8KKworLyogU3RydWN0dXJlIHVzZWQgdG8gc3RvcmUg d2hhdCB3ZSBuZWVkLiAqLworLyogKFdlIG1heSBuZWVkIG11bHRpcGxlIHNpbXVsdGFuZW91cyBp bnN0YW5jZSBmcm9tIHNldmVyYWwgY2FtKSAqLworc3RydWN0IHJxQml0UmVhZGVyIHsKKwlpbnQg Y3VyX2JpdDsKKwl1bnNpZ25lZCBpbnQgY3VyX2RhdGE7CisJc3RydWN0IFJpbmdRdWV1ZSAqcnE7 Cit9OworCitzdGF0aWMgaW5saW5lIHZvaWQgcnFCUl9pbml0KCBzdHJ1Y3QgcnFCaXRSZWFkZXIg KmJyLCBzdHJ1Y3QgUmluZ1F1ZXVlICpycSApCit7CisJYnItPmN1cl9iaXQgPSAxNjsKKwlici0+ Y3VyX2RhdGEgPQorCQlSSU5HX1FVRVVFX1BFRUsoIHJxLCAyICkgICAgICAgIHwKKwkJUklOR19R VUVVRV9QRUVLKCBycSwgMyApIDw8IDggICB8CisJCVJJTkdfUVVFVUVfUEVFSyggcnEsIDAgKSA8 PCAxNiAgfAorCQlSSU5HX1FVRVVFX1BFRUsoIHJxLCAxICkgPDwgMjQgIDsKKwlSSU5HX1FVRVVF X0RFUVVFVUVfQllURVMoIHJxLCAyICk7CisJYnItPnJxID0gcnE7Cit9CisKKyNkZWZpbmUgcnFC Ul9wZWVrQml0cyhicixuKSAoIGJyLT5jdXJfZGF0YSA+PiAoMzItbikgKQorCisjZGVmaW5lIHJx QlJfZmx1c2hCaXRzKGJyLG4pIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKyAgICAgICAgYnItPmN1cl9kYXRhIDw8PSBuOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoIChici0+Y3VyX2JpdCAtPSBuKSA8PSAwICkg eyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBici0+Y3VyX2RhdGEg fD0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAg ICAgICBSSU5HX1FVRVVFX1BFRUsoIGJyLT5ycSwgMiApIDw8IC1ici0+Y3VyX2JpdCAgfCAgICAg XAorICAgICAgICAgICAgICAgIFJJTkdfUVVFVUVfUEVFSyggYnItPnJxLCAzICkgPDwgKDggLSBi ci0+Y3VyX2JpdCk7ICBcCisgICAgICAgICAgICBSSU5HX1FVRVVFX0RFUVVFVUVfQllURVMoIGJy LT5ycSwgMiApOyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGJyLT5jdXJfYml0ICs9 IDE2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CisJfSB3aGlsZSAoMCkKKworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogUmVhbCBKUEVHIExp dGUgc3R1ZmYKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqCisgKiBQcmVjb21wdXRlZCB0YWJs ZXMKKyAqIFRoZXNlcyBhcmUgY29tcHV0ZWQgYXQgaW5pdCB0aW1lIHRvIG1ha2UgcmVhbC10aW1l IG9wZXJhdGlvbnMgZmFzdGVyLgorICogSXQgdGFrZXMgc29tZSBzcGFjZSAoIGFib3V0IDlrICku IEJ1dCBiZWxpZXZlIG1lIGl0IHdvcnRoIGl0ICEKKyAqLworCisvKiBWYXJpYWJsZSBMZW5naHQg Q29kaW5nIHJlbGF0ZWQgdGFibGVzLCB1c2VkIGZvciBBQyBjb2VmZmljaWVudCBkZWNvZGluZwor ICogVE9ETyBDaGVjayB0aGF0IDcgYml0cyBpcyBlbm91Z2ggISAqLworc3RhdGljIHNpZ25lZCBj aGFyIHZsY1RibF9sZW5bMTw8MTBdOwkvKiBNZWFuaW5nZnVsIGJpdCBjb3VudCAqLworc3RhdGlj IHNpZ25lZCBjaGFyIHZsY1RibF9ydW5bMTw8MTBdOwkvKiBSdW4gKi8KK3N0YXRpYyBzaWduZWQg Y2hhciB2bGNUYmxfYW1wWzE8PDEwXTsJLyogQW1wbGl0dWRlICh3aXRob3V0IHRoZSBzaWduKSAq LworCisvKiBZVVYtPlJHQiBjb252ZXJzaW9uIHRhYmxlICovCitzdGF0aWMgaW50IHl1dlRibF95 WzI1Nl07CitzdGF0aWMgaW50IHl1dlRibF91MVsyNTZdOworc3RhdGljIGludCB5dXZUYmxfdTJb MjU2XTsKK3N0YXRpYyBpbnQgeXV2VGJsX3YxWzI1Nl07CitzdGF0aWMgaW50IHl1dlRibF92Mlsy NTZdOworCisvKiBDbGFtcGluZyB0YWJsZSAqLworI2RlZmluZSBTQUZFX0NMQU1QCisjaWZkZWYg U0FGRV9DTEFNUAorc3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFyIGNsYW1wKGludCB4KSB7CisJ aWYgKHggPiAyNTUpCisJCXJldHVybiAyNTU7CisJaWYgKHggPCAwKQorCQlyZXR1cm4gMDsKKwly ZXR1cm4geDsKK30KKyNkZWZpbmUgY2xhbXBfYWRqdXN0KHgpIGNsYW1wKHgrMTI4KQorI2Vsc2UK KyNkZWZpbmUgY2xhbXAoeCkgY2xhbXBUYmxbKHgpKzUxMl0KKyNkZWZpbmUgY2xhbXBfYWRqdXN0 KHgpIGNsYW1wVGJsWyh4KSs2NDBdCitzdGF0aWMgY2hhciBjbGFtcFRibFsxMjgwXTsKKyNlbmRp ZgorCisvKiBDb2RlIHRvIGluaXRpYWxpemUgdGhvc2UgdGFibGVzICovCitzdGF0aWMgdm9pZCB2 bGNUYmxfaW5pdCh2b2lkKQoreworCS8qIEJhc2VzIHRhYmxlcyB1c2VkIHRvIGNvbXB1dGUgdGhl IGJpZ2dlciBvbmUKKwkgKiBUbyB1bmRlcnN0YW5kcyB0aGVzZXMsIGxvb2sgYXQgdGhlIFZMQyBk b2MgaW4gdGhlCisJICogVVMgcGF0ZW50IGRvY3VtZW50LiAqLworCisJc3RhdGljIGNvbnN0IGlu dCB2bGNfbnVtID0gMjg7CisJc3RhdGljIGNvbnN0IGludCB2bGNfbGVuW10gPQorCQl7IDIsIDIs IDMsIDMsIDQsIDUsIDUsIDYsIDYsIDYsIDYsIDcsIDcsIDcsIDcsIDcsCisJCSAgOCAsOCAsOCAs OSwgOSwgOSwgMTAsIDEwLCAxMCwgMTAsIDEwLCAxMCB9OworCXN0YXRpYyBjb25zdCBpbnQgdmxj X3J1bltdID0KKwkJeyAwLCAwLCAwLCAxLCAwLCAyLCAzLCAxLCAwLCA0LCAwLCA1LCAxLCAwLCAt MSwgLTIsCisJCSAgMiwgNiwgMCwgMywgMSwgMCwgMSwgMCwgNywgMiwgMCwgOCB9OworCXN0YXRp YyBjb25zdCBpbnQgdmxjX2FtcFtdID0KKwkJeyAwLCAxLCAyLCAxLCAzLCAxLCAxLCAyLCA0LCAx ICw1ICwxICwzICw2LCAtMSwgLTIsCisJCSAgMiwgMSwgNywgMiwgNCwgOCwgNSwgOSwgMSAsMywg MTAsIDEgfTsKKwlzdGF0aWMgY29uc3QgaW50IHZsY19jb2RbXSA9CisJCXsgMHgwMDAsIDB4MDAy LCAweDAwMywgMHgwMDYsIDB4MDBFLCAweDAwOCwgMHgwMEIsIDB4MDEyLAorCQkgIDB4MDE0LCAw eDAzRCwgMHgwM0UsIDB4MDc4LCAweDA3OSwgMHgwN0UsIDB4MDI2LCAweDAyNywKKwkJICAweDA1 NCwgMHgwNTcsIDB4MEZGLCAweDBBQSwgMHgwQUMsIDB4MUZDLCAweDE1NiwgMHgxNTcsCisJCSAg MHgxNUEsIDB4MTVCLCAweDNGQSwgMHgzRkIgfTsKKwkKKwkvKiBWYXJzICovCisJaW50IGksajsK KworCS8qIE1haW4gZmlsbGluZyBsb29wICovCisJZm9yICggaT0wIDsgaTwoMTw8MTApIDsgaSsr ICkgeworCisJCS8qIEZpbmQgdGhlIG1hdGNoaW5nIG9uZSAqLworCQlmb3IgKCBqPTAgOyBqPHZs Y19udW0gOyBqKysgKSB7CisJCQlpZiAoIChpID4+ICgxMC12bGNfbGVuW2pdKSkgPT0gdmxjX2Nv ZFtqXSApIHsKKwkJCQlpZiAoIHZsY19ydW5bal0gPj0gMCApCisJCQkJCWlmICggdmxjX2FtcFtq XSAhPSAwICkKKwkJCQkJCXZsY1RibF9sZW5baV0gPSB2bGNfbGVuW2pdICsgMTsKKwkJCQkJZWxz ZQorCQkJCQkJdmxjVGJsX2xlbltpXSA9IHZsY19sZW5bal07IC8qIEVPQiAqLworCQkJCWVsc2UK KwkJCQkJdmxjVGJsX2xlbltpXSA9IDE2OworCQkJCXZsY1RibF9ydW5baV0gPSB2bGNfcnVuW2pd OworCQkJCXZsY1RibF9hbXBbaV0gPSB2bGNfYW1wW2pdOworCQkJCWJyZWFrOworCQkJfQorCQl9 CisJfQorfQorCitzdGF0aWMgdm9pZCB5dXZUYmxfaW5pdCh2b2lkKQoreworCS8qIFRoZXNlIHRh YmxlcyBhcmUganVzdCBwcmUtbXVsdGlwbGllZCBhbmQgcHJlLW9mZnNldGVkCisJICogWVVWIGJ5 IHRoZSBib29rCisJICogUiA9IDEuMTY0ICogKFktMTYpICsgMS41OTYgKiAoVS0xMjgpCisJICog RyA9IDEuMTY0ICogKFktMTYpIC0gMC44MTMgKiAoVS0xMjgpIC0gMC4zOTEgKiAoVi0xMjgpCisJ ICogQiA9IDEuMTY0ICogKFktMTYpICAgICAgICAgICAgICAgICAgICsgMi4wMTggKiAoVi0xMjgp ICovCisKKwlpbnQgaTsKKworCS8qIFdlIHVzZSBmaXhlZCBwb2ludCA8PCAxNiAqLworCWZvciAo IGk9MCA7IGkgPCAyNTYgOyBpKysgKSB7CisJCXl1dlRibF95W2ldICA9ICA3NjI4NCAqIChpLSAx Nik7CisJCXl1dlRibF91MVtpXSA9IDEwNDU5NSAqIChpLTEyOCk7CisJCXl1dlRibF91MltpXSA9 ICA1MzI4MSAqIChpLTEyOCk7CisJCXl1dlRibF92MVtpXSA9ICAyNTYyNSAqIChpLTEyOCk7IAor CQl5dXZUYmxfdjJbaV0gPSAxMzIyNTIgKiAoaS0xMjgpOworCX0KK30KKworI2lmbmRlZiBTQUZF X0NMQU1QCitzdGF0aWMgdm9pZCBjbGFtcFRibF9pbml0KHZvaWQpCit7CisJLyogSW5zdGVhZCBv ZiBkb2luZyBpZiguLi4pIHRvIHRlc3QgZm9yIG92ZXJyYW5nZSwgd2UgdXNlCisJICogYSBjbGFt cGluZyB0YWJsZSAqLworCQorCWludCBpOworCisJZm9yIChpPTAgOyBpIDwgNTEyIDsgaSsrKQor CQljbGFtcFRibFtpXSA9IDA7CisJZm9yIChpPTUxMiA7IGkgPCA3NjggOyBpKysgKQorCQljbGFt cFRibFtpXSA9IGkgLSA1MTI7CisJZm9yIChpPTc2OCA7IGkgPCAxMjgwIDsgaSsrICkKKwkJY2xh bXBUYmxbaV0gPSAyNTU7CisKK30KKyNlbmRpZgorCisvKgorICogSW50ZXJuYWwgaGVscGVycwor ICovCisKK3N0YXRpYyBpbmxpbmUgaW50IHJlYWRBQyggc3RydWN0IHJxQml0UmVhZGVyICpiciwg aW50ICpydW4sIGludCAqYW1wICkKK3sKKwkvKiBWYXJzICovCisJdW5zaWduZWQgaW50IGNvZDsK KworCS8qIEdldCAxNiBiaXRzICovCisJY29kID0gcnFCUl9wZWVrQml0cyhiciwxNik7CisKKwkv KiBMb29rdXAgaW4gdGhlIHRhYmxlICovCisJKnJ1biA9IHZsY1RibF9ydW5bY29kPj42XTsKKwkq YW1wID0gdmxjVGJsX2FtcFtjb2Q+PjZdOworCXJxQlJfZmx1c2hCaXRzKGJyLHZsY1RibF9sZW5b Y29kPj42XSk7CisKKwlpZiAoKmFtcCA+IDApIHsKKworCQkvKiBOb3JtYWwgc3R1ZmYsIGp1c3Qg Y29ycmVjdCB0aGUgc2lnbiAqLworCQlpZiAoY29kICYgKDB4MTAwMDAgPj4gdmxjVGJsX2xlbltj b2Q+PjZdKSkKKwkJCSphbXAgPSAtICphbXA7CisJfSBlbHNlIHsKKworCQkvKiBIYW5kbGUgc3Bl Y2lhbCBjYXNlcyAqLworCQlpZiAoISphbXApCisJCQlyZXR1cm4gMDsKKwkJaWYgKCphbXAgPT0g LTEpIHsKKworCQkJLyogMDEwMDExMHNycnJhYWFhYSAqLworCQkJKnJ1biA9ICggY29kID4+IDUg KSAmIDB4MDc7CisJCQkqYW1wID0gKCBjb2QgJiAweDEwMCkgPworCQkJCS0oY29kJjB4MUYpIDog KGNvZCYweDFGKTsKKwkJfSBlbHNlIHsKKworCQkJLyogMDEwMDExMXNycnJyYWFhYSAqLworCQkJ KnJ1biA9ICggY29kID4+IDQgKSAmIDB4MEY7CisJCQkqYW1wID0gKCBjb2QgJiAweDEwMCkgPwor CQkJCS0oY29kJjB4MEYpIDogKGNvZCYweDBGKTsKKwkJfQorCX0KKworCXJldHVybiAxOworfQor CisKKyNkZWZpbmUgaURDVF9jb2x1bW4oYjAsYjEsYjIsYjMpIGRvIHsJXAorCWludCB0MCx0MSx0 Mix0MzsgICAgICAgICAgICAgICAgICAgIFwKKwkJCQkJXAorCXQwID0gKCBiMSArIGIzICkgPDwg NTsgICAgICAgICAgICAgIFwKKwl0MiA9IHQwIC0gKGIzIDw8IDQpOyAgICAgICAgICAgICAgICBc CisJdDMgPSAoYjEgKiAgNDcpIC0gdDA7ICAgICAgICAgICAgICAgXAorCXQwID0gYjAgKyBiMjsg ICAgICAgICAgICAgICAgICAgICAgIFwKKwl0MSA9IGIwIC0gYjI7ICAgICAgICAgICAgICAgICAg ICAgICBcCisJCQkJCVwKKwliMCA9ICggdDAgKyB0MiApOyAgICAgICAgICAgICAgICAgICBcCisJ YjEgPSAoIHQxICsgdDMgKTsgICAgICAgICAgICAgICAgICAgXAorCWIzID0gKCB0MCAtIHQyICk7 ICAgICAgICAgICAgICAgICAgIFwKKwliMiA9ICggdDEgLSB0MyApOyAgICAgICAgICAgICAgICAg ICBcCit9IHdoaWxlICgwKQorCisjZGVmaW5lIGlEQ1RfbGluZShiMCxiMSxiMixiMykgZG8gewkJ XAorCWludCB0MCx0MSx0Mix0MyxibTAsYm0yOyAgICAgICAgICAgIFwKKwkJCQkJXAorCWJtMCA9 IGIwIDw8IDc7ICAgICAgICAgICAgICAgICAgICAgIFwKKwlibTIgPSBiMiA8PCA3OyAgICAgICAg ICAgICAgICAgICAgICBcCisJCQkJCVwKKwl0MCA9IGJtMCArIGJtMjsgICAgICAgICAgICAgICAg ICAgICBcCisJdDEgPSBibTAgLSBibTI7ICAgICAgICAgICAgICAgICAgICAgXAorCXQyID0gYjEg KiAxODMgKyBiMyAqICA4NjsgICAgICAgICAgIFwKKwl0MyA9IGIxICogIDg2IC0gYjMgKiAxODM7 ICAgICAgICAgICBcCisJCQkJCVwKKwliMCA9ICggdDAgKyB0MiApID4+IDIyOyAgICAgICAgICAg ICBcCisJYjEgPSAoIHQxICsgdDMgKSA+PiAyMjsgICAgICAgICAgICAgXAorCWIzID0gKCB0MCAt IHQyICkgPj4gMjI7ICAgICAgICAgICAgIFwKKwliMiA9ICggdDEgLSB0MyApID4+IDIyOyAgICAg ICAgICAgICBcCit9IHdoaWxlICgwKQorCisvKiBEZWNvZGUgYSBibG9jaworICogQmFzaWMgb3Bz IDogZ2V0IHRoZSBEQyAtIGdldCB0aGUgQUNzIC0gZGVaaWdaYWcgLSBkZVdlaWdodGluZyAtIAor ICogICAgICAgICAgICAgZGVRdWFudGl6YXRpb24gLSBpRENUCisgKiBIZXJlIHRoZXkgYXJlIGEg bGl0dGxlIG1peGVkLXVwIHRvIHNwZWVkIGFsbCB0aGlzIHVwLgorICovCitzdGF0aWMgaW5saW5l IGludCBkZWNvZGVCbG9jayggc3RydWN0IHJxQml0UmVhZGVyICpiciwgaW50ICpibG9jaywgaW50 ICpkYyApCit7CisJLyogVGFibGVzIHVzZWQgZm9yIGJsb2NrIGRlY29kaW5nICovCisJCisJCS8q IGRlWmlnWmFnIHRhYmxlCisJCSAqCisJCSAqIFppZ1phZzogZWFjaCBvZiB0aGUgY29lZmZpY2ll bnQgb2YgdGhlIERDVCB0cmFuc2Zvcm1lZCA0eDQKKwkJICogICAgICAgICBtYXRyaXggaXMgdGFr ZW4gaW4gYSBjZXJ0YWluIG9yZGVyIHRvIG1ha2UgYSBsaW5lYXIKKwkJICogICAgICAgICBhcnJh eSB3aXRoIHRoZSBoaWdoIGZyZXF1ZW5jeSBBQyBhdCB0aGUgZW5kCisJCSAqCisJCSAqIC8gMCAg MSAgNSAgNiBcICAgIC4KKwkJICogfCAyICA0ICA3IDEyIHwgICAgVGhpcyBpcyB0aGUgb3JkZXIg dGFrZW4uIFdlIG11c3QgZGVaaWdaYWcKKwkJICogfCAzICA4IDExIDEzIHwgICAgdG8gcmVjb25z dGl0dXRlIHRoZSBvcmlnaW5hbCBtYXRyaXgKKwkJICogXCA5IDEwIDE0IDE1IC8KKwkJICovCisJ c3RhdGljIGNvbnN0IGludCBpWmlnWmFnVGJsWzE2XSA9CisJCXsgMCwgMSwgNCwgOCwgNSwgMiwg MywgNiwgIDksMTIsIDEzLCAxMCwgNywgMTEsIDE0LCAxNSB9OworCisJCS8qIGRlUXVhbnRpemF0 aW9uLCBkZVdlaWdodGluZyAmIGlEQ1QgcHJlbXVsdGlwbHkgKi8KKwkKKwkJLyoKKwkJICogV2Vp Z2h0aW5nIDogRWFjaCBEQ1QgY29lZmZpY2llbnQgaXMgd2VpZ2h0ZWQgYnkgYSBjZXJ0YWluIGZh Y3Rvci4gV2UKKwkJICogICAgICAgICAgICAgbXVzdCBjb21wZW5zYXRlIGZvciB0aGlzIHRvIHJl YnVpbHQgdGhlIG9yaWdpbmFsIERDVCBtYXRyaXguCisJCSAqCisJCSAqIFF1YW50aXphdGlvbjog QWNjb3JkaW5nIHRvIHRoZSByZWFkIFEgZmFjdG9yLCBEQ1QgY29lZmZpY2llbnQgYXJlCisJCSAq ICAgICAgICAgICAgICAgcXVhbnRpemVkLiBXZSBuZWVkIHRvIGNvbXBlbnNhdGUgZm9yIHRoaXMu IAorCQkgKgorCQkgKiBpRENUIHByZW11bHRpcGx5OiBTaW5jZSBmb3IgdGhlIGZpcnN0IGlEQ1Qg cGFzcyAoIGNvbHVtbiApLCB3ZSdsbCBuZWVkCisJCSAqICAgICAgICAgICAgICAgICAgIHRvIGRv IHNvbWUgbXVsdGlwbGljYXRpb24sIHRoZSBvbmVzIHRoYXQgd2UgY2FuCisJCSAqICAgICAgICAg ICAgICAgICAgIGludGVncmF0ZSBoZXJlLCB3ZSBkby4KKwkJICoKKwkJICogUmVtOiAtIFRoZSBm YWN0b3JzIGFyZSBoZXJlIHByZXNlbnRlZCBpbiB0aGUgWmlnWmFnZWQgb3JkZXIsCisJCSAqICAg ICAgYmVjYXVzZSB3ZSB3aWxsIG5lZWQgdGhvc2UgQkVGT1JFIHRoZSBkZVppZ1phZworCQkgKiAg ICAgIC0gRm9yIG1vcmUgaW5mb3JtYXRpb25zLCBjb25zdWx0IGpwZ2xfdGJsLmMsIGl0J3MgdGhl IGxpdHRsZQorCQkgKiAgICAgIHByb2cgdGhhdCBjb21wdXRlcyB0aGlzIHRhYmxlCisJCSAqLwor CXN0YXRpYyBjb25zdCBpbnQgaVFXVGJsWzRdWzE2XSA9IHsKKwkJeyAgMzI3NjgsICAxNzgwOCwg ICAgNzk0LCAgMTg2MTgsICAgIDg1MCwgIDE4NjE4LCAgNDMxMTUsICAgMTgyOCwKKwkJICAgNDA5 NjAsICAgMTkyNCwgICAyMDg5LCAgNDU1MTEsICAgMjA4OSwgIDQ5NjQ4LCAgIDIyMTYsICAgMjUy MSB9LAorCQl7ICAzMjc2OCwgIDM1NjE3LCAgIDE1ODksICAzNzIzNiwgICAxNzAwLCAgMzcyMzYs ICA4NjIzMSwgICAzNjU2LAorCQkgICA4MTkyMCwgICAzODQ5LCAgIDQxNzksICA5MTAyMiwgICA0 MTc5LCAgOTkyOTYsICAgNDQzMiwgICA1MDQzIH0sCisJCXsgIDMyNzY4LCAgNzEyMzQsICAgMzE3 OSwgIDc0NDcyLCAgIDM0MDEsICA3NDQ3MiwgMTcyNDYzLCAgIDczMTMsCisJCSAgMTYzODQwLCAg IDc2OTgsICAgODM1OCwgMTgyMDQ0LCAgIDgzNTgsIDE5ODU5MywgICA4ODY1LCAgMTAwODcgfSwK KwkJeyAgMzI3NjgsIDE0MjQ2OSwgICA2MzU5LCAxNDg5NDUsICAgNjgwMywgMTQ4OTQ1LCAzNDQ5 MjYsICAxNDYyNywKKwkJICAzMjc2ODAsICAxNTM5NywgIDE2NzE2LCAzNjQwODgsICAxNjcxNiwg Mzk3MTg3LCAgMTc3MzAsICAyMDE3NSB9CisJfTsJCisKKwkvKiBWYXJzICovCisJaW50IGhkcjsK KwlpbnQgKmVmZl9pUVdUYmw7CisJaW50IGNjLCBydW4sIGFtcDsKKworCS8qIFJlYWQgJiBEZWNv ZGUgdGhlIGJsb2NrIGhlYWRlciAoIFEsIFQsIERDICkgKi8KKwloZHIgPSBycUJSX3BlZWtCaXRz KGJyLDExKTsKKworCWlmIChoZHIgJiAweDEwMCkgeworCQkvKiBEaWZmZXJlbnRpYWwgbW9kZSAq LworCQlpZiAoaGRyICYgMHg4MCkKKwkJCSpkYyArPSAoIGhkciA+PiAzICkgfCB+MHhGOworCQll bHNlCisJCQkqZGMgKz0gKCBoZHIgPj4gMyApICYgMHhGOworCisJCS8qIEZsdXNoIHRoZSBoZWFk ZXIgYml0cyAqLworCQlycUJSX2ZsdXNoQml0cyhiciw4KTsKKwl9IGVsc2UgeworCQkvKiBEaXJl Y3QgbW9kZSAqLworCQlpZiAoIGhkciAmIDB4ODAgKQorCQkJKmRjID0gaGRyIHwgfjB4N0Y7CisJ CWVsc2UKKwkJCSpkYyA9IGhkciAmIDB4N0Y7CisJCQkKKwkJLyogRmx1c2ggdGhlIGhlYWRlciBi aXRzICovCisJCXJxQlJfZmx1c2hCaXRzKGJyLDExKTsKKwl9CisKKwkvKiBDbGVhciB0aGUgYmxv Y2sgJiBzdG9yZSBEQyAoIHdpdGggcHJlLW11bHRpcGx5ICkgKi8KKwlibG9ja1swXSA9ICpkYyA8 PCAxNTsKKwlibG9ja1sxXSA9IDB4MDA7CisJYmxvY2tbMl0gPSAweDAwOworCWJsb2NrWzNdID0g MHgwMDsKKwlibG9ja1s0XSA9IDB4MDA7CisJYmxvY2tbNV0gPSAweDAwOworCWJsb2NrWzZdID0g MHgwMDsKKwlibG9ja1s3XSA9IDB4MDA7CisJYmxvY2tbOF0gPSAweDAwOworCWJsb2NrWzldID0g MHgwMDsKKwlibG9ja1sxMF0gPSAweDAwOworCWJsb2NrWzExXSA9IDB4MDA7CisJYmxvY2tbMTJd ID0gMHgwMDsKKwlibG9ja1sxM10gPSAweDAwOworCWJsb2NrWzE0XSA9IDB4MDA7CisJYmxvY2tb MTVdID0gMHgwMDsKKwkKKwkvKiBSZWFkIHRoZSBBQyBjb2VmZmljaWVudHMKKwkgKiBhdCB0aGUg c2FtZSB0aW1lLCBkZVppZ1phZywgZGVRdWFudGl6YXRpb24sIGRlV2VpZ2h0aW5nICYgaURDVCBw cmVtdWx0aXBseQorCSAqLworCWVmZl9pUVdUYmwgPSAoaW50KikgaVFXVGJsW2hkcj4+OV07CisJ Y2MgPSAwOworCQorCXdoaWxlICggcmVhZEFDKGJyLCZydW4sJmFtcCkgKSB7CisJCWNjICs9IHJ1 biArIDE7CisJCWlmICggY2MgPiAxNSApCisJCQlyZXR1cm4gLTE7CisJCWJsb2NrW2laaWdaYWdU YmxbY2NdXSA9IGFtcCAqIGVmZl9pUVdUYmxbY2NdOworCX0KKwkKKwkvKiBEbyB0aGUgY29sdW1u IGlEQ1QgKCB3aGF0J3MgbGVmdCB0byBkbyApICovCisJaURDVF9jb2x1bW4oYmxvY2tbMF0sIGJs b2NrWzRdLCBibG9ja1s4XSwgYmxvY2tbMTJdKTsKKwlpRENUX2NvbHVtbihibG9ja1sxXSwgYmxv Y2tbNV0sIGJsb2NrWzldLCBibG9ja1sxM10pOworCWlEQ1RfY29sdW1uKGJsb2NrWzJdLCBibG9j a1s2XSwgYmxvY2tbMTBdLCBibG9ja1sxNF0pOworCWlEQ1RfY29sdW1uKGJsb2NrWzNdLCBibG9j a1s3XSwgYmxvY2tbMTFdLCBibG9ja1sxNV0pOworCQorCS8qIERvIHRoZSBsaW5lIGlEQ1QgKCBj b21wbGV0ZSBvbmUgaGVyZSApICovCisJaURDVF9saW5lKGJsb2NrWzBdLCBibG9ja1sxXSwgYmxv Y2tbMl0sIGJsb2NrWzNdKTsKKwlpRENUX2xpbmUoYmxvY2tbNF0sIGJsb2NrWzVdLCBibG9ja1s2 XSwgYmxvY2tbN10pOworCWlEQ1RfbGluZShibG9ja1s4XSwgYmxvY2tbOV0sIGJsb2NrWzEwXSwg YmxvY2tbMTFdKTsKKwlpRENUX2xpbmUoYmxvY2tbMTJdLCBibG9ja1sxM10sIGJsb2NrWzE0XSwg YmxvY2tbMTVdKTsKKworCXJldHVybiAhKGhkciAmIDB4NzAwKTsKK30KKworaW50IGpwZ2xfZGVj b2RlKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucCwgaW50IHNyY19zaXplLAorCQl1bnNpZ25lZCBp bnQgZGVzdF9waXhfZm10LCB1bnNpZ25lZCBjaGFyICpmYiwKKwkJaW50IGltZ193aWR0aCwgaW50 IGltZ19oZWlnaHQpCit7CisJLyogVmFycyAqLworCXN0cnVjdCBSaW5nUXVldWUgcnE7CisJc3Ry dWN0IHJxQml0UmVhZGVyIGJyOworCisJaW50IHJvdywgY29sOwkvKiBSb3cgJiBDb2x1bW4gaW4g dGhlIGltYWdlICovCisKKwlpbnQgeCx5OworCWludCBibG9ja19pZHg7CisKKwl1bnNpZ25lZCBj aGFyICpZbGluZV9iYXNlcHRyLCAqVWxpbmVfYmFzZXB0ciwgKlZsaW5lX2Jhc2VwdHI7CisJdW5z aWduZWQgY2hhciAqWWxpbmUsICpVbGluZSwgKlZsaW5lOworCWludCBZbGluZV9iYXNlb2ZzLCBV VmxpbmVfYmFzZW9mczsKKworCWludCBkY195LCBkY191LCBkY192OwkvKiBEQyBDb2VmZmljaWVu dHMgKi8KKwlpbnQgYmxvY2tfeVsxNio0XTsJCS8qIFkgYmxvY2tzICovCisJaW50IGJsb2NrX3Vb MTZdOwkJLyogVSBibG9jayAqLworCWludCBibG9ja192WzE2XTsJCS8qIFYgYmxvY2sgKi8KKwor CXVuc2lnbmVkIGNoYXIgKm1haW5idWZmZXI7CisKKwlpbnQgeWMsdWMsdmM7CisKKwkvKiBpbml0 IHRoZSBkZWNvZGVyICovCisJaWYgKHl1dlRibF95WzBdID09IDApIHsKKwkJdmxjVGJsX2luaXQo KTsKKwkJeXV2VGJsX2luaXQoKTsKKyNpZm5kZWYgU0FGRV9DTEFNUAorCQljbGFtcFRibF9pbml0 KCk7CisjZW5kaWYKKwl9CisKKwlpbWdfaGVpZ2h0IC89IDQ7CisKKwkvKiBQcmVwYXJlIGEgYml0 LWJ5LWJpdCByZWFkZXIgKi8KKwlycS5xdWV1ZSA9IGlucDsKKwlycS5sZW5ndGggPSBzcmNfc2l6 ZTsKKwlycS5yaSA9IDA7CisJcnFCUl9pbml0KCZiciwgJnJxKTsKKworCS8qIEFsbG9jYXRlIGEg YmlnIGJ1ZmZlciAmIHNldHVwIHBvaW50ZXJzICovCisJc3dpdGNoIChkZXN0X3BpeF9mbXQpIHsK KwlkZWZhdWx0OgorLyoJY2FzZSBWNEwyX1BJWF9GTVRfUkdCMjQ6ICovCisvKgljYXNlIFY0TDJf UElYX0ZNVF9CR1IyNDogKi8KKwkJbWFpbmJ1ZmZlciA9IG1hbGxvYyg0ICogKGltZ193aWR0aCAr IChpbWdfd2lkdGggPj4gMSkgKyAyKSk7CisJCisJCVlsaW5lX2Jhc2VwdHIgPSBtYWluYnVmZmVy OworCQlVbGluZV9iYXNlcHRyID0gbWFpbmJ1ZmZlciArICg0ICogaW1nX3dpZHRoKTsKKwkJVmxp bmVfYmFzZXB0ciA9IFVsaW5lX2Jhc2VwdHIgKyAoaW1nX3dpZHRoICsgNCk7CisJCWJyZWFrOwor CWNhc2UgVjRMMl9QSVhfRk1UX1lVVjQyMDoKKwkJbWFpbmJ1ZmZlciA9IE5VTEw7CisJCVlsaW5l X2Jhc2VwdHIgPSBmYjsKKwkJVWxpbmVfYmFzZXB0ciA9IGZiICsgaW1nX3dpZHRoICogaW1nX2hl aWdodCAqIDE2OworCQlWbGluZV9iYXNlcHRyID0gVWxpbmVfYmFzZXB0ciArIGltZ193aWR0aCAq IGltZ19oZWlnaHQgKiA0OworCQlicmVhazsKKwljYXNlIFY0TDJfUElYX0ZNVF9ZVlU0MjA6CisJ CW1haW5idWZmZXIgPSBOVUxMOworCQlZbGluZV9iYXNlcHRyID0gZmI7CisJCVZsaW5lX2Jhc2Vw dHIgPSBmYiArIGltZ193aWR0aCAqIGltZ19oZWlnaHQgKiAxNjsKKwkJVWxpbmVfYmFzZXB0ciA9 IFZsaW5lX2Jhc2VwdHIgKyBpbWdfd2lkdGggKiBpbWdfaGVpZ2h0ICogNDsKKwkJYnJlYWs7CisJ fQorCisJWWxpbmVfYmFzZW9mcyA9IGltZ193aWR0aCAtIDQ7CisJVVZsaW5lX2Jhc2VvZnMgPSAo aW1nX3dpZHRoID4+IDIpIC0gMzsKKworCS8qIFByb2Nlc3MgNCBsaW5lcyBhdCBhIHRpbWUgKCBv bmUgYmxvY2sgaGVpZ2h0ICkgKi8KKwlmb3IgKCByb3c9MCA7IHJvdzxpbWdfaGVpZ2h0IDsgcm93 KysgKSB7CisJCS8qIExpbmUgc3RhcnQgcmVzZXQgREMgKi8KKwkJZGNfeSA9IGRjX3UgPSBkY192 ID0gMDsKKworCQkvKiBQcm9jZXNzIDE2IGNvbHVtbnMgYXQgYSB0aW1lICggNCBibG9jayB3aWR0 aCApICovCisJCWZvciAoIGNvbD0wIDsgY29sPGltZ193aWR0aCA7IGNvbCs9MTYgKSB7CisJCQkv KiBEZWNvZGUgYmxvY2tzCisJCQkgKiBCbG9jayBvcmRlciA6IFkgWSBZIFkgViBVICggV2h5IFYg YmVmb3JlIFUgPworCQkJICogdGhhdCBqdXN0IGRlcGVuZHMgd2hhdCB5b3UgY2FsbCBVJlYgLi4u IEkgdG9vayB0aGUKKwkJCSAqICdieS10aGUtYm9vaycgbmFtZXMgYW5kIHRoYXQgbWFrZSBWIGFu ZCB0aGVuIFUsCisJCQkgKiAuLi4ganVzdCBhc2sgdGhlIERpdklPIGZvbGtzIDspICkKKwkJCSAq LworCQkJaWYgKCBkZWNvZGVCbG9jaygmYnIsIGJsb2NrX3ksICZkY195KSAmJiAoIWNvbCkgKQor LyoJCQkJcmV0dXJuOwkJICogQmFkIGJsb2NrLCBzbyBiYWQgZnJhbWUgLi4uICovCisJCQkJOwor CisJCQlkZWNvZGVCbG9jaygmYnIsIGJsb2NrX3kgKyAxNiwgJmRjX3kpOworCQkJZGVjb2RlQmxv Y2soJmJyLCBibG9ja195ICsgMzIsICZkY195KTsKKwkJCWRlY29kZUJsb2NrKCZiciwgYmxvY2tf eSArIDQ4LCAmZGNfeSk7CisJCQlkZWNvZGVCbG9jaygmYnIsIGJsb2NrX3YsICZkY192KTsKKwkJ CWRlY29kZUJsb2NrKCZiciwgYmxvY2tfdSwgJmRjX3UpOworCQkJCisJCQkvKiBDb3B5IGRhdGEg dG8gdGVtcG9yYXJ5IGJ1ZmZlcnMgKCB0byBtYWtlIGEgY29tcGxldGUgbGluZSApICovCisJCQli bG9ja19pZHggPSAwOworCQkJWWxpbmUgPSBZbGluZV9iYXNlcHRyICsgY29sOworCQkJVWxpbmUg PSBVbGluZV9iYXNlcHRyICsgKGNvbCA+PiAyKTsKKwkJCVZsaW5lID0gVmxpbmVfYmFzZXB0ciAr IChjb2wgPj4gMik7CisKKwkJCWZvciAoIHk9MCA7IHk8NCA7IHkrKykgeworCQkJCS8qIFNjYW4g bGluZSAqLworCQkJCWZvciAoIHg9MCA7IHg8NCA7IHgrKyApIHsKKwkJCQkJLyogWSBibG9jayAq LworCQkJCQlZbGluZVsgMF0gPSBjbGFtcF9hZGp1c3QoYmxvY2tfeVtibG9ja19pZHggICBdKTsK KwkJCQkJWWxpbmVbIDRdID0gY2xhbXBfYWRqdXN0KGJsb2NrX3lbYmxvY2tfaWR4KzE2XSk7CisJ CQkJCVlsaW5lWyA4XSA9IGNsYW1wX2FkanVzdChibG9ja195W2Jsb2NrX2lkeCszMl0pOworCQkJ CQlZbGluZVsxMl0gPSBjbGFtcF9hZGp1c3QoYmxvY2tfeVtibG9ja19pZHgrNDhdKTsKKworCQkJ CQkvKiBVIGJsb2NrICovCisJCQkJCSpVbGluZSA9IGNsYW1wX2FkanVzdChibG9ja191W2Jsb2Nr X2lkeF0pOworCisJCQkJCS8qIFYgYmxvY2sgKi8KKwkJCQkJKlZsaW5lID0gY2xhbXBfYWRqdXN0 KGJsb2NrX3ZbYmxvY2tfaWR4XSk7CisKKwkJCQkJLyogQWp1c3QgcG9pbnRlcnMgJiBpbmRleCAq LworCQkJCQlibG9ja19pZHgrKzsKKwkJCQkJWWxpbmUrKzsKKwkJCQkJVWxpbmUrKzsKKwkJCQkJ VmxpbmUrKzsKKwkJCQl9CisKKwkJCQkvKiBBZGp1c3QgcG9pbnRlcnMgKi8KKwkJCQlZbGluZSAr PSBZbGluZV9iYXNlb2ZzOworCQkJCVVsaW5lICs9IFVWbGluZV9iYXNlb2ZzOworCQkJCVZsaW5l ICs9IFVWbGluZV9iYXNlb2ZzOworCQkJfQorCQl9CisKKwkJLyogSGFuZGxlIGludGVycG9sYXRp b24gc3BlY2lhbCBjYXNlICggYXQgdGhlIGVuZCBvZiB0aGUgbGluZXMgKSAqLworCQlVbGluZSA9 IFVsaW5lX2Jhc2VwdHIgKyAoVVZsaW5lX2Jhc2VvZnMrMik7CisJCVZsaW5lID0gVmxpbmVfYmFz ZXB0ciArIChVVmxpbmVfYmFzZW9mcysyKTsKKwkJZm9yICggeT0wIDsgeTw0IDsgeSsrICkgewor CQkJLyogQ29weSB0aGUgbGFzdCBwaXhlbCAqLworCQkJVWxpbmVbMV0gPSBVbGluZVswXTsKKwkJ CVZsaW5lWzFdID0gVmxpbmVbMF07CisJCisJCQkvKiBBZGp1c3QgcHRyICovCisJCQlVbGluZSAr PSBVVmxpbmVfYmFzZW9mcys0OwkKKwkJCVZsaW5lICs9IFVWbGluZV9iYXNlb2ZzKzQ7CQorCQl9 CisKKwkJLyogV2UgaGF2ZSA0IGNvbXBsZXRlIGxpbmVzLCBzbyB0ZW1wYnVmZmVyPFlVVj4gLT4g ZnJhbWVidWZmZXI8UkdCPgorCQkgKiBHbyBsaW5lIGJ5IGxpbmUgKi8KKworCQlzd2l0Y2ggKGRl c3RfcGl4X2ZtdCkgeworCQljYXNlIFY0TDJfUElYX0ZNVF9SR0IyNDoKKwkJICAgIFlsaW5lID0g WWxpbmVfYmFzZXB0cjsKKwkJICAgIFVsaW5lID0gVWxpbmVfYmFzZXB0cjsKKwkJICAgIFZsaW5l ID0gVmxpbmVfYmFzZXB0cjsKKwkJICAgIGZvciAoIHk9MCA7IHk8NCA7IHkrKyApIHsKKwkJCS8q IFByb2Nlc3MgNCBwaXhlbCBhdCBhIHRpbWUgdG8gaGFuZGxlIGludGVycG9sYXRpb24KKwkJCSAq IGZvciBVICYgViB2YWx1ZXMgKi8KKwkJCWZvciAoIHg9MCA7IHg8aW1nX3dpZHRoIDsgeCs9NCAp IHsKKwkJCQkvKiBGaXJzdCBwaXhlbCAqLworCQkJCXljID0geXV2VGJsX3lbKihZbGluZSsrKV07 CisJCQkJdWMgPSBVbGluZVswXTsKKwkJCQl2YyA9IFZsaW5lWzBdOworCisJCQkJKihmYisrKSA9 IGNsYW1wKCggeWMgKyB5dXZUYmxfdTFbdWNdICkgPj4gMTYpOworCQkJCSooZmIrKykgPSBjbGFt cCgoIHljIC0geXV2VGJsX3UyW3VjXSAtIHl1dlRibF92MVt2Y10gKSA+PiAxNik7CisJCQkJKihm YisrKSA9IGNsYW1wKCggeWMgKyB5dXZUYmxfdjJbdmNdICkgPj4gMTYpOworCisJCQkJLyogU2Vj b25kIHBpeGVsICovCisJCQkJeWMgPSB5dXZUYmxfeVsqKFlsaW5lKyspXTsKKwkJCQl1YyA9ICgg MypVbGluZVswXSArIFVsaW5lWzFdICkgPj4gMjsKKwkJCQl2YyA9ICggMypWbGluZVswXSArIFZs aW5lWzFdICkgPj4gMjsKKwkJCQkKKwkJCQkqKGZiKyspID0gY2xhbXAoKCB5YyArIHl1dlRibF91 MVt1Y10gKSA+PiAxNik7CisJCQkJKihmYisrKSA9IGNsYW1wKCggeWMgLSB5dXZUYmxfdTJbdWNd IC0geXV2VGJsX3YxW3ZjXSApID4+IDE2KTsKKwkJCQkqKGZiKyspID0gY2xhbXAoKCB5YyArIHl1 dlRibF92Mlt2Y10gKSA+PiAxNik7CisKKwkJCQkvKiBUaGlyZCBwaXhlbCAqLworCQkJCXljID0g eXV2VGJsX3lbKihZbGluZSsrKV07CisJCQkJdWMgPSAoIFVsaW5lWzBdICsgVWxpbmVbMV0gKSA+ PiAxOworCQkJCXZjID0gKCBWbGluZVswXSArIFZsaW5lWzFdICkgPj4gMTsKKworCQkJCSooZmIr KykgPSBjbGFtcCgoIHljICsgeXV2VGJsX3UxW3VjXSApID4+IDE2KTsKKwkJCQkqKGZiKyspID0g Y2xhbXAoKCB5YyAtIHl1dlRibF91Mlt1Y10gLSB5dXZUYmxfdjFbdmNdICkgPj4gMTYpOworCQkJ CSooZmIrKykgPSBjbGFtcCgoIHljICsgeXV2VGJsX3YyW3ZjXSApID4+IDE2KTsKKworCQkJCS8q IEZvdXJ0aCBwaXhlbCAqLworCQkJCXljID0geXV2VGJsX3lbKihZbGluZSsrKV07CisJCQkJdWMg PSAoIFVsaW5lWzBdICsgMypVbGluZVsxXSApID4+IDI7CisJCQkJdmMgPSAoIFZsaW5lWzBdICsg MypWbGluZVsxXSApID4+IDI7CisKKwkJCQkqKGZiKyspID0gY2xhbXAoKCB5YyArIHl1dlRibF91 MVt1Y10gKSA+PiAxNik7CisJCQkJKihmYisrKSA9IGNsYW1wKCggeWMgLSB5dXZUYmxfdTJbdWNd IC0geXV2VGJsX3YxW3ZjXSApID4+IDE2KTsKKwkJCQkqKGZiKyspID0gY2xhbXAoKCB5YyArIHl1 dlRibF92Mlt2Y10gKSA+PiAxNik7CisKKwkJCQkvKiBBZGp1c3QgcG9pbnRlcnMgKi8KKwkJCQlV bGluZSsrOworCQkJCVZsaW5lKys7CisJCQl9CisJCQkJCisJCQkvKiBBZGp1c3QgcG9pbnRlcnMg Ki8KKwkJCVVsaW5lKys7CisJCQlWbGluZSsrOworCQkgICAgfQorCQkgICAgYnJlYWs7CisJCWNh c2UgVjRMMl9QSVhfRk1UX0JHUjI0OgorCQkgICAgWWxpbmUgPSBZbGluZV9iYXNlcHRyOworCQkg ICAgVWxpbmUgPSBVbGluZV9iYXNlcHRyOworCQkgICAgVmxpbmUgPSBWbGluZV9iYXNlcHRyOwor CQkgICAgZm9yICggeT0wIDsgeTw0IDsgeSsrICkgeworCQkJLyogUHJvY2VzcyA0IHBpeGVsIGF0 IGEgdGltZSB0byBoYW5kbGUgaW50ZXJwb2xhdGlvbgorCQkJICogZm9yIFUgJiBWIHZhbHVlcyAq LworCQkJZm9yICggeD0wIDsgeDxpbWdfd2lkdGggOyB4Kz00ICkgeworCQkJCS8qIEZpcnN0IHBp eGVsICovCisJCQkJeWMgPSB5dXZUYmxfeVsqKFlsaW5lKyspXTsKKwkJCQl1YyA9IFVsaW5lWzBd OworCQkJCXZjID0gVmxpbmVbMF07CisKKwkJCQkqKGZiKyspID0gY2xhbXAoKCB5YyArIHl1dlRi bF92Mlt2Y10gKSA+PiAxNik7CisJCQkJKihmYisrKSA9IGNsYW1wKCggeWMgLSB5dXZUYmxfdTJb dWNdIC0geXV2VGJsX3YxW3ZjXSApID4+IDE2KTsKKwkJCQkqKGZiKyspID0gY2xhbXAoKCB5YyAr IHl1dlRibF91MVt1Y10gKSA+PiAxNik7CisKKwkJCQkvKiBTZWNvbmQgcGl4ZWwgKi8KKwkJCQl5 YyA9IHl1dlRibF95WyooWWxpbmUrKyldOworCQkJCXVjID0gKCAzKlVsaW5lWzBdICsgVWxpbmVb MV0gKSA+PiAyOworCQkJCXZjID0gKCAzKlZsaW5lWzBdICsgVmxpbmVbMV0gKSA+PiAyOworCQkJ CQorCQkJCSooZmIrKykgPSBjbGFtcCgoIHljICsgeXV2VGJsX3YyW3ZjXSApID4+IDE2KTsKKwkJ CQkqKGZiKyspID0gY2xhbXAoKCB5YyAtIHl1dlRibF91Mlt1Y10gLSB5dXZUYmxfdjFbdmNdICkg Pj4gMTYpOworCQkJCSooZmIrKykgPSBjbGFtcCgoIHljICsgeXV2VGJsX3UxW3VjXSApID4+IDE2 KTsKKworCQkJCS8qIFRoaXJkIHBpeGVsICovCisJCQkJeWMgPSB5dXZUYmxfeVsqKFlsaW5lKysp XTsKKwkJCQl1YyA9ICggVWxpbmVbMF0gKyBVbGluZVsxXSApID4+IDE7CisJCQkJdmMgPSAoIFZs aW5lWzBdICsgVmxpbmVbMV0gKSA+PiAxOworCisJCQkJKihmYisrKSA9IGNsYW1wKCggeWMgKyB5 dXZUYmxfdjJbdmNdICkgPj4gMTYpOworCQkJCSooZmIrKykgPSBjbGFtcCgoIHljIC0geXV2VGJs X3UyW3VjXSAtIHl1dlRibF92MVt2Y10gKSA+PiAxNik7CisJCQkJKihmYisrKSA9IGNsYW1wKCgg eWMgKyB5dXZUYmxfdTFbdWNdICkgPj4gMTYpOworCisJCQkJLyogRm91cnRoIHBpeGVsICovCisJ CQkJeWMgPSB5dXZUYmxfeVsqKFlsaW5lKyspXTsKKwkJCQl1YyA9ICggVWxpbmVbMF0gKyAzKlVs aW5lWzFdICkgPj4gMjsKKwkJCQl2YyA9ICggVmxpbmVbMF0gKyAzKlZsaW5lWzFdICkgPj4gMjsK KworCQkJCSooZmIrKykgPSBjbGFtcCgoIHljICsgeXV2VGJsX3YyW3ZjXSApID4+IDE2KTsKKwkJ CQkqKGZiKyspID0gY2xhbXAoKCB5YyAtIHl1dlRibF91Mlt1Y10gLSB5dXZUYmxfdjFbdmNdICkg Pj4gMTYpOworCQkJCSooZmIrKykgPSBjbGFtcCgoIHljICsgeXV2VGJsX3UxW3VjXSApID4+IDE2 KTsKKworCQkJCS8qIEFkanVzdCBwb2ludGVycyAqLworCQkJCVVsaW5lKys7CisJCQkJVmxpbmUr KzsKKwkJCX0KKwkJCQkKKwkJCS8qIEFkanVzdCBwb2ludGVycyAqLworCQkJVWxpbmUrKzsKKwkJ CVZsaW5lKys7CisJCSAgICB9CisJCSAgICBicmVhazsKKwkJY2FzZSBWNEwyX1BJWF9GTVRfWVVW NDIwOgorCQljYXNlIFY0TDJfUElYX0ZNVF9ZVlU0MjA6CisJCSAgICBZbGluZV9iYXNlcHRyICs9 IGltZ193aWR0aCAqIDQ7CisJCSAgICBVbGluZV9iYXNlcHRyICs9IGltZ193aWR0aDsKKwkJICAg IFZsaW5lX2Jhc2VwdHIgKz0gaW1nX3dpZHRoOworCQkgICAgYnJlYWs7CisJCX0KKwl9CisKKwkv KiBGcmVlIG91ciBidWZmZXIgKi8KKwlpZiAobWFpbmJ1ZmZlciAhPSBOVUxMKQorCQlmcmVlKG1h aW5idWZmZXIpOworCisJcmV0dXJuIDA7Cit9CisKKy8qCitSZXR1cm4tUGF0aDogdG50QDI0NnRO dC5jb20KK1JlY2VpdmVkOiBmcm9tIHppbWJyYTE2LWUzLnByaXYucHJveGFkLm5ldCAoTEhMTwor IHppbWJyYTE2LWUzLnByaXYucHJveGFkLm5ldCkgKDE3Mi4yMC4yNDMuMTY2KSBieQorIHppbWJy YTE2LWUzLnByaXYucHJveGFkLm5ldCB3aXRoIExNVFA7IE1vbiwgMTQgRmViIDIwMTEgMjE6MTA6 MzggKzAxMDAKKyAoQ0VUKQorUmVjZWl2ZWQ6IGZyb20gbWFpbHJlbGF5MDExLmlzcC5iZWxnYWNv bS5iZSAobXgyNi1nMjYucHJpdi5wcm94YWQubmV0IFsxNzIuMjAuMjQzLjk2XSkKKwlieSB6aW1i cmExNi1lMy5wcml2LnByb3hhZC5uZXQgKFBvc3RmaXgpIHdpdGggRVNNVFAgaWQgMUE2NjExNTdD NUIKKwlmb3IgPG1vaW5lamZAZnJlZS5mcj47IE1vbiwgMTQgRmViIDIwMTEgMjE6MTA6MzggKzAx MDAgKENFVCkKK1JlY2VpdmVkOiBmcm9tIG1haWxyZWxheTAxMS5pc3AuYmVsZ2Fjb20uYmUgKFsx OTUuMjM4LjYuMTc4XSkKKwlieSBteDEtZzIwLmZyZWUuZnIgKE1YcHJveHkpIGZvciBtb2luZWpm QGZyZWUuZnIgOworCU1vbiwgMTQgRmViIDIwMTEgMjE6MTA6MzYgKzAxMDAgKENFVCkKK1gtUHJv WGFELVNDOiBzdGF0ZT1IQU0gc2NvcmU9MAorWC1CZWxnYWNvbS1EeW5hbWljOiB5ZXMKK1gtSXJv blBvcnQtQW50aS1TcGFtLUZpbHRlcmVkOiB0cnVlCitYLUlyb25Qb3J0LUFudGktU3BhbS1SZXN1 bHQ6IEFwSUJBS3NhV1UxWFE1VzIvMmRzYjJKaGJBQU1oQkhPRXBBNWdTZUJhWUZZZGdTTGZ3CitS ZWNlaXZlZDogZnJvbSAxODIuMTQ5LTY3LTg3LmFkc2wtZHluLmlzcC5iZWxnYWNvbS5iZSAoSEVM TyBbMTAuMC4wLjEyOV0pIChbODcuNjcuMTQ5LjE4Ml0pCisgIGJ5IHJlbGF5LnNreW5ldC5iZSB3 aXRoIEVTTVRQOyAxNCBGZWIgMjAxMSAyMToxMDozNiArMDEwMAorTWVzc2FnZS1JRDogPDRENTk4 QzdDLjcwODAzMDdAMjQ2dE50LmNvbT4KK0RhdGU6IE1vbiwgMTQgRmViIDIwMTEgMjE6MTE6NDAg KzAxMDAKK0Zyb206IFN5bHZhaW4gTXVuYXV0IDx0bnRAMjQ2dE50LmNvbT4KK1VzZXItQWdlbnQ6 IE1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IHg4Nl82NDsgZW4tVVM7IHJ2OjEuOS4yLjEzKSBH ZWNrby8yMDEwMTIxOSBMaWdodG5pbmcvMS4wYjNwcmUgVGh1bmRlcmJpcmQvMy4xLjcKK01JTUUt VmVyc2lvbjogMS4wCitUbzogSmVhbi1GcmFuY29pcyBNb2luZSA8bW9pbmVqZkBmcmVlLmZyPgor Q0M6IEtqZWxsIENsYWVzc29uIDxrZXlzb25AdXNlcnMuc291cmNlZm9yZ2UubmV0PgorU3ViamVj dDogUmU6IG53ODB4IGFzIGEgZ3NwY2Egc3ViZHJpdgorUmVmZXJlbmNlczogPDIwMTEwMjA5MjA0 MjA4LjRiMTlkZjg4QHRlbGU+CTw0RDUzQjNCRi45MDUwOTA4QDI0NnROdC5jb20+IDwyMDExMDIx NDIwNTEwNy4xOGMyOTMwM0B0ZWxlPgorSW4tUmVwbHktVG86IDwyMDExMDIxNDIwNTEwNy4xOGMy OTMwM0B0ZWxlPgorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250 ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0CisKKwlbc25pcF0KKz4gTWF5IEkgaGF2ZSB5b3Vy IHBlcm1pc3Npb24gdG8gcmVsaWNlbnNlIHlvdXIgSlBFRyBMaXRlIGRlY29tcHJlc3Npb24KKz4g Y29kZSB1bmRlciB0aGUgTEdQTCAodmVyc2lvbiAyIG9yIGxhdGVyKT8gIAorCitZZXMsIHN1cmUu CisKKyIiIgorSSBoZXJlYnkgYWxsb3cgdGhlIG53ODB4IGRyaXZlciBjb2RlLCBpbmNsdWRpbmcg dGhlIGpwZWcgbGl0ZSBkZWNvZGluZworcm91dGluZXMsIHRvIGJlIHVzZWQgYW5kIGRpc3RyaWJ1 dGVkIHVuZGVyIHRoZSBMR1BMIHYyIG9yIGxhdGVyLgorIiIiCisJW3NuaXBdCitDaGVlcnMsCisK KyAgICBTeWx2YWluCisgKi8KZGlmZiAtLWdpdCBhL2xpYi9saWJ2NGxjb252ZXJ0L2xpYnY0bGNv bnZlcnQtcHJpdi5oIGIvbGliL2xpYnY0bGNvbnZlcnQvbGlidjRsY29udmVydC1wcml2LmgKaW5k ZXggZDhmZTg5OS4uMzBkMWNmZSAxMDA2NDQKLS0tIGEvbGliL2xpYnY0bGNvbnZlcnQvbGlidjRs Y29udmVydC1wcml2LmgKKysrIGIvbGliL2xpYnY0bGNvbnZlcnQvbGlidjRsY29udmVydC1wcml2 LmgKQEAgLTIyMiw0ICsyMjIsOCBAQCBpbnQgdjRsY29udmVydF9oZWxwZXJfZGVjb21wcmVzcyhz dHJ1Y3QgdjRsY29udmVydF9kYXRhICpkYXRhLAogCiB2b2lkIHY0bGNvbnZlcnRfaGVscGVyX2Ns ZWFudXAoc3RydWN0IHY0bGNvbnZlcnRfZGF0YSAqZGF0YSk7CiAKK2ludCBqcGdsX2RlY29kZShj b25zdCB1bnNpZ25lZCBjaGFyICppbnAsIGludCBzcmNfc2l6ZSwKKwkJdW5zaWduZWQgaW50IGRl c3RfcGl4X2ZtdCwgdW5zaWduZWQgY2hhciAqZmIsCisJCWludCBpbWdfd2lkdGgsIGludCBpbWdf aGVpZ2h0KTsKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9saWIvbGlidjRsY29udmVydC9saWJ2NGxj b252ZXJ0LmMgYi9saWIvbGlidjRsY29udmVydC9saWJ2NGxjb252ZXJ0LmMKaW5kZXggMGQ4YjI5 Zi4uYzEwZmQ4NiAxMDA2NDQKLS0tIGEvbGliL2xpYnY0bGNvbnZlcnQvbGlidjRsY29udmVydC5j CisrKyBiL2xpYi9saWJ2NGxjb252ZXJ0L2xpYnY0bGNvbnZlcnQuYwpAQCAtNjQwLDYgKzY0MCwx MCBAQCBzdGF0aWMgaW50IHY0bGNvbnZlcnRfY29udmVydF9waXhmbXQoc3RydWN0IHY0bGNvbnZl cnRfZGF0YSAqZGF0YSwKIAkJCXJlc3VsdCA9IC0xOwogCQl9CiAJCWJyZWFrOworCWNhc2UgVjRM Ml9QSVhfRk1UX0pQR0w6CisJCXJlc3VsdCA9IGpwZ2xfZGVjb2RlKHNyYywgc3JjX3NpemUsCisJ CQkJCWRlc3RfcGl4X2ZtdCwgZGVzdCwgd2lkdGgsIGhlaWdodCk7CisJCWJyZWFrOwogCiAJCS8q IEN1c3RvbSBjYW0gc3BlY2lmaWMgWVVWIGZvcm1hdHMgKi8KIAljYXNlIFY0TDJfUElYX0ZNVF9T UENBNTAxOgo= --MP_/4iDeWfKibmEB3lEIq2aq1ve--