From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26834 invoked by alias); 9 Jul 2012 17:30:39 -0000 Received: (qmail 26815 invoked by uid 22791); 9 Jul 2012 17:30:36 -0000 X-SWARE-Spam-Status: No, hits=-4.3 required=5.0 tests=AWL,BAYES_05,KHOP_RCVD_UNTRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_NO,RCVD_IN_HOSTKARMA_W,RCVD_IN_HOSTKARMA_WL,SPF_NEUTRAL X-Spam-Check-By: sourceware.org Received: from va3ehsobe001.messaging.microsoft.com (HELO va3outboundpool.messaging.microsoft.com) (216.32.180.11) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 09 Jul 2012 17:30:22 +0000 Received: from mail167-va3-R.bigfish.com (10.7.14.235) by VA3EHSOBE012.bigfish.com (10.7.40.62) with Microsoft SMTP Server id 14.1.225.23; Mon, 9 Jul 2012 17:28:03 +0000 Received: from mail167-va3 (localhost [127.0.0.1]) by mail167-va3-R.bigfish.com (Postfix) with ESMTP id 5552F360337 for ; Mon, 9 Jul 2012 17:28:03 +0000 (UTC) X-Forefront-Antispam-Report: CIP:157.55.9.135;KIP:(null);UIP:(null);IPV:NLI;H:DB3PRD0104HT009.eurprd01.prod.exchangelabs.com;RD:none;EFVD:NLI X-SpamScore: -11 X-BigFish: PS-11(zf7Izc89bh8f9Rc857h4015Izz1202hzz8275dhz2ei2a8h668h839h8e3hf0ah34h) Received-SPF: neutral (mail167-va3: 157.55.9.135 is neither permitted nor denied by domain of warwick.ac.uk) client-ip=157.55.9.135; envelope-from=S.A.Mason@warwick.ac.uk; helo=DB3PRD0104HT009.eurprd01.prod.exchangelabs.com ;angelabs.com ; Received: from mail167-va3 (localhost.localdomain [127.0.0.1]) by mail167-va3 (MessageSwitch) id 1341854881674335_24757; Mon, 9 Jul 2012 17:28:01 +0000 (UTC) Received: from VA3EHSMHS010.bigfish.com (unknown [10.7.14.251]) by mail167-va3.bigfish.com (Postfix) with ESMTP id 9E3A5201B1 for ; Mon, 9 Jul 2012 17:28:01 +0000 (UTC) Received: from DB3PRD0104HT009.eurprd01.prod.exchangelabs.com (157.55.9.135) by VA3EHSMHS010.bigfish.com (10.7.99.20) with Microsoft SMTP Server (TLS) id 14.1.225.23; Mon, 9 Jul 2012 17:27:59 +0000 Received: from mail-ob0-f169.google.com (209.85.214.169) by pod51002.outlook.com (10.3.186.103) with Microsoft SMTP Server (TLS) id 14.15.86.1; Mon, 9 Jul 2012 17:30:13 +0000 Received: by obhx4 with SMTP id x4so18646464obh.0 for ; Mon, 09 Jul 2012 10:30:09 -0700 (PDT) Received: by 10.182.164.10 with SMTP id ym10mr37373748obb.75.1341855009707; Mon, 09 Jul 2012 10:30:09 -0700 (PDT) MIME-Version: 1.0 Received: by 10.76.76.196 with HTTP; Mon, 9 Jul 2012 10:29:48 -0700 (PDT) In-Reply-To: References: From: Sam Mason Date: Mon, 09 Jul 2012 17:30:00 -0000 Message-ID: Subject: Fwd: log probability density functions (PDFs) To: Content-Type: multipart/mixed; boundary="e89a8f2344753195ce04c468f7de" X-OriginatorOrg: warwick.ac.uk Mailing-List: contact gsl-discuss-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gsl-discuss-owner@sourceware.org X-SW-Source: 2012-q3/txt/msg00000.txt.bz2 --e89a8f2344753195ce04c468f7de Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Content-length: 1186 Hi, I sent the following message to the help-gsl list a while ago, but haven't received a reply... Is this sort of contribution useful to the project? Thanks, Sam ---------- Forwarded message ---------- From: Sam Mason Date: 15 June 2012 17:59 To: help-gsl@gnu.org Hi, I sent a message to this a couple of months ago enquiring about the availability of log-density functions. =C2=A0I've been using my own versions of these since then, and thought it would be good to send them back to the community. I've gone through most of the distributions and added in code calculating their log-densities. =C2=A0I've copied the naming and layout convention of the dirichlet distribution; which already had the gsl_ran_dirichlet_pdf() and gsl_ran_dirichlet_lnpdf() functions. =C2=A0I've not updated the docs yet, as I wanted to gage interest first. The code compiles and the tests run successfully on my computer. =C2=A0I've also used the test code as a mini-benchmark, and the changed code takes basically the same amount of time to execute (median =3D 1.0038 times GSL 1.15, 95%CI=3D1.0009-1.0064). Let me know what would make this more useful. =C2=A0Sam --e89a8f2344753195ce04c468f7de Content-Type: application/octet-stream; name="log-pdfs-v1.patch" Content-Disposition: attachment; filename="log-pdfs-v1.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h3hhxtjn0 Content-length: 44124 ZGlmZiAtdSBnc2wtMS4xNS9yYW5kaXN0L2JldGEuYyBnc2wtc2FtL3JhbmRp c3QvYmV0YS5jCi0tLSBnc2wtMS4xNS9yYW5kaXN0L2JldGEuYwkyMDEwLTEy LTI2IDE3OjU3OjA4LjAwMDAwMDAwMCArMDAwMAorKysgZ3NsLXNhbS9yYW5k aXN0L2JldGEuYwkyMDEyLTA2LTE1IDE1OjU1OjU3LjAwMDAwMDAwMCArMDEw MApAQCAtNDIsOSArNDIsMTUgQEAKIGRvdWJsZQogZ3NsX3Jhbl9iZXRhX3Bk ZiAoY29uc3QgZG91YmxlIHgsIGNvbnN0IGRvdWJsZSBhLCBjb25zdCBkb3Vi bGUgYikKIHsKKyAgcmV0dXJuIGV4cChnc2xfcmFuX2JldGFfbG5wZGYgKHgs IGEsIGIpKTsKK30KKworZG91YmxlCitnc2xfcmFuX2JldGFfbG5wZGYgKGNv bnN0IGRvdWJsZSB4LCBjb25zdCBkb3VibGUgYSwgY29uc3QgZG91YmxlIGIp Cit7CiAgIGlmICh4IDwgMCB8fCB4ID4gMSkKICAgICB7Ci0gICAgICByZXR1 cm4gMCA7CisgICAgICByZXR1cm4gR1NMX05FR0lORjsKICAgICB9CiAgIGVs c2UgCiAgICAgewpAQCAtNTQsMjAgKzYwLDEzIEBACiAgICAgICBkb3VibGUg Z2EgPSBnc2xfc2ZfbG5nYW1tYSAoYSk7CiAgICAgICBkb3VibGUgZ2IgPSBn c2xfc2ZfbG5nYW1tYSAoYik7CiAgICAgICAKLSAgICAgIGlmICh4ID09IDAu MCB8fCB4ID09IDEuMCkgCi0gICAgICAgIHsKLQkgIGlmIChhID4gMS4wICYm IGIgPiAxLjApCi0JICAgIHsKLQkgICAgICBwID0gMC4wOwotCSAgICB9Ci0J ICBlbHNlCi0JICAgIHsKLQkgICAgICBwID0gZXhwIChnYWIgLSBnYSAtIGdi KSAqIHBvdyAoeCwgYSAtIDEpICogcG93ICgxIC0geCwgYiAtIDEpOwotCSAg ICB9Ci0gICAgICAgIH0KKyAgICAgIGlmICgoeCA9PSAwLjAgfHwgeCA9PSAx LjApICYmIGEgPiAxLjAgJiYgYiA+IDEuMCkKKwl7CisJICBwID0gR1NMX05F R0lORjsKKwl9CiAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICBw ID0gZXhwIChnYWIgLSBnYSAtIGdiICsgbG9nKHgpICogKGEgLSAxKSAgKyBs b2cxcCgteCkgKiAoYiAtIDEpKTsKKyAgICAgICAgICBwID0gZ2FiIC0gZ2Eg LSBnYiArIGxvZyAoeCkgKiAoYSAtIDEpICsgbG9nMXAgKC14KSAqIChiIC0g MSk7CiAgICAgICAgIH0KIAogICAgICAgcmV0dXJuIHA7CmRpZmYgLXUgZ3Ns LTEuMTUvcmFuZGlzdC9iaWdhdXNzLmMgZ3NsLXNhbS9yYW5kaXN0L2JpZ2F1 c3MuYwotLS0gZ3NsLTEuMTUvcmFuZGlzdC9iaWdhdXNzLmMJMjAxMC0xMi0y NiAxNzo1NzowOC4wMDAwMDAwMDAgKzAwMDAKKysrIGdzbC1zYW0vcmFuZGlz dC9iaWdhdXNzLmMJMjAxMi0wNi0xNSAxMzozODoyMS4wMDAwMDAwMDAgKzAx MDAKQEAgLTYxLDEwICs2MSwxOCBAQAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBkb3VibGUgc2lnbWFfeCwgY29uc3QgZG91Ymxl IHNpZ21hX3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGRvdWJsZSByaG8pCiB7CisgIHJldHVybiBleHAgKGdzbF9yYW5fYml2 YXJpYXRlX2dhdXNzaWFuX2xucGRmICh4LCB5LCBzaWdtYV94LCBzaWdtYV95 LCByaG8pKTsKK30KKworZG91YmxlCitnc2xfcmFuX2JpdmFyaWF0ZV9nYXVz c2lhbl9sbnBkZiAoY29uc3QgZG91YmxlIHgsIGNvbnN0IGRvdWJsZSB5LCAK KwkJCQkgIGNvbnN0IGRvdWJsZSBzaWdtYV94LCBjb25zdCBkb3VibGUgc2ln bWFfeSwKKwkJCQkgIGNvbnN0IGRvdWJsZSByaG8pCit7CiAgIGRvdWJsZSB1 ID0geCAvIHNpZ21hX3ggOwogICBkb3VibGUgdiA9IHkgLyBzaWdtYV95IDsK ICAgZG91YmxlIGMgPSAxIC0gcmhvKnJobyA7Ci0gIGRvdWJsZSBwID0gKDEg LyAoMiAqIE1fUEkgKiBzaWdtYV94ICogc2lnbWFfeSAqIHNxcnQoYykpKSAK LSAgICAqIGV4cCAoLSh1ICogdSAtIDIgKiByaG8gKiB1ICogdiArIHYgKiB2 KSAvICgyICogYykpOworICBkb3VibGUgcCA9IC1sb2coMiAqIE1fUEkgKiBz aWdtYV94ICogc2lnbWFfeSAqIHNxcnQoYykpCisgICAgLSAodSAqIHUgLSAy ICogcmhvICogdSAqIHYgKyB2ICogdikgLyAoMiAqIGMpOwogICByZXR1cm4g cDsKIH0KZGlmZiAtdSBnc2wtMS4xNS9yYW5kaXN0L2Jpbm9taWFsLmMgZ3Ns LXNhbS9yYW5kaXN0L2Jpbm9taWFsLmMKLS0tIGdzbC0xLjE1L3JhbmRpc3Qv Ymlub21pYWwuYwkyMDEwLTEyLTI2IDE3OjU3OjA4LjAwMDAwMDAwMCArMDAw MAorKysgZ3NsLXNhbS9yYW5kaXN0L2Jpbm9taWFsLmMJMjAxMi0wNi0xNSAx NjoyMToxNy4wMDAwMDAwMDAgKzAxMDAKQEAgLTIzLDYgKzIzLDcgQEAKICNp bmNsdWRlIDxnc2wvZ3NsX3JuZy5oPgogI2luY2x1ZGUgPGdzbC9nc2xfcmFu ZGlzdC5oPgogI2luY2x1ZGUgPGdzbC9nc2xfc2ZfZ2FtbWEuaD4KKyNpbmNs dWRlIDxnc2wvZ3NsX21hdGguaD4KIAogLyogVGhlIGJpbm9taWFsIGRpc3Ry aWJ1dGlvbiBoYXMgdGhlIGZvcm0sCiAKQEAgLTcyLDkgKzczLDE2IEBACiBn c2xfcmFuX2Jpbm9taWFsX3BkZiAoY29uc3QgdW5zaWduZWQgaW50IGssIGNv bnN0IGRvdWJsZSBwLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVu c2lnbmVkIGludCBuKQogeworICByZXR1cm4gZXhwIChnc2xfcmFuX2Jpbm9t aWFsX2xucGRmIChrLCBwLCBuKSk7Cit9CisKK2RvdWJsZQorZ3NsX3Jhbl9i aW5vbWlhbF9sbnBkZiAoY29uc3QgdW5zaWduZWQgaW50IGssIGNvbnN0IGRv dWJsZSBwLAorCQkJY29uc3QgdW5zaWduZWQgaW50IG4pCit7CiAgIGlmIChr ID4gbikKICAgICB7Ci0gICAgICByZXR1cm4gMDsKKyAgICAgIHJldHVybiBH U0xfTkVHSU5GOwogICAgIH0KICAgZWxzZQogICAgIHsKQEAgLTgyLDE3ICs5 MCwxNiBAQAogCiAgICAgICBpZiAocCA9PSAwKSAKICAgICAgICAgewotICAg ICAgICAgIFAgPSAoayA9PSAwKSA/IDEgOiAwOworICAgICAgICAgIFAgPSAo ayA9PSAwKSA/IDAgOiBHU0xfTkVHSU5GOwogICAgICAgICB9CiAgICAgICBl bHNlIGlmIChwID09IDEpCiAgICAgICAgIHsKLSAgICAgICAgICBQID0gKGsg PT0gbikgPyAxIDogMDsKKyAgICAgICAgICBQID0gKGsgPT0gbikgPyAwIDog R1NMX05FR0lORjsKICAgICAgICAgfQogICAgICAgZWxzZQogICAgICAgICB7 CiAgICAgICAgICAgZG91YmxlIGxuX0NuayA9IGdzbF9zZl9sbmNob29zZSAo biwgayk7CiAgICAgICAgICAgUCA9IGxuX0NuayArIGsgKiBsb2cgKHApICsg KG4gLSBrKSAqIGxvZzFwICgtcCk7Ci0gICAgICAgICAgUCA9IGV4cCAoUCk7 CiAgICAgICAgIH0KIAogICAgICAgcmV0dXJuIFA7CmRpZmYgLXUgZ3NsLTEu MTUvcmFuZGlzdC9jYXVjaHkuYyBnc2wtc2FtL3JhbmRpc3QvY2F1Y2h5LmMK LS0tIGdzbC0xLjE1L3JhbmRpc3QvY2F1Y2h5LmMJMjAxMC0xMi0yNiAxNzo1 NzowOC4wMDAwMDAwMDAgKzAwMDAKKysrIGdzbC1zYW0vcmFuZGlzdC9jYXVj aHkuYwkyMDEyLTA2LTE1IDE1OjAwOjA3LjAwMDAwMDAwMCArMDEwMApAQCAt NDUsNyArNDUsMTMgQEAKIGRvdWJsZQogZ3NsX3Jhbl9jYXVjaHlfcGRmIChj b25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIGEpCiB7CisgIHJldHVybiBl eHAgKGdzbF9yYW5fY2F1Y2h5X2xucGRmICh4LCBhKSk7Cit9CisKK2RvdWJs ZQorZ3NsX3Jhbl9jYXVjaHlfbG5wZGYgKGNvbnN0IGRvdWJsZSB4LCBjb25z dCBkb3VibGUgYSkKK3sKICAgZG91YmxlIHUgPSB4IC8gYTsKLSAgZG91Ymxl IHAgPSAoMSAvIChNX1BJICogYSkpIC8gKDEgKyB1ICogdSk7CisgIGRvdWJs ZSBwID0gLWxvZyhNX1BJICogYSkgLSBsb2cxcCh1ICogdSk7CiAgIHJldHVy biBwOwogfQpkaWZmIC11IGdzbC0xLjE1L3JhbmRpc3QvY2hpc3EuYyBnc2wt c2FtL3JhbmRpc3QvY2hpc3EuYwotLS0gZ3NsLTEuMTUvcmFuZGlzdC9jaGlz cS5jCTIwMTAtMTItMjYgMTc6NTc6MDguMDAwMDAwMDAwICswMDAwCisrKyBn c2wtc2FtL3JhbmRpc3QvY2hpc3EuYwkyMDEyLTA2LTE1IDE2OjIxOjIzLjAw MDAwMDAwMCArMDEwMApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgPGdz bC9nc2xfc2ZfZ2FtbWEuaD4KICNpbmNsdWRlIDxnc2wvZ3NsX3JuZy5oPgog I2luY2x1ZGUgPGdzbC9nc2xfcmFuZGlzdC5oPgorI2luY2x1ZGUgPGdzbC9n c2xfbWF0aC5oPgogCiAvKiBUaGUgY2hpc3EgZGlzdHJpYnV0aW9uIGhhcyB0 aGUgZm9ybQogCkBAIC0zOSwyMiArNDAsMjggQEAKIGRvdWJsZQogZ3NsX3Jh bl9jaGlzcV9wZGYgKGNvbnN0IGRvdWJsZSB4LCBjb25zdCBkb3VibGUgbnUp CiB7CisgIHJldHVybiBleHAgKGdzbF9yYW5fY2hpc3FfbG5wZGYgKHgsIG51 KSk7Cit9CisKK2RvdWJsZQorZ3NsX3Jhbl9jaGlzcV9sbnBkZiAoY29uc3Qg ZG91YmxlIHgsIGNvbnN0IGRvdWJsZSBudSkKK3sKICAgaWYgKHggPCAwKQog ICAgIHsKLSAgICAgIHJldHVybiAwIDsKKyAgICAgIHJldHVybiBHU0xfTkVH SU5GIDsKICAgICB9CiAgIGVsc2UKICAgICB7CiAgICAgICBpZihudSA9PSAy LjApCiAgICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gZXhwKC14LzIuMCkg LyAyLjA7CisgICAgICAgICAgcmV0dXJuICgteC8yLjApIC0gbG9nICgyLjAp OwogICAgICAgICB9CiAgICAgICBlbHNlCiAgICAgICAgIHsKICAgICAgICAg ICBkb3VibGUgcDsKICAgICAgICAgICBkb3VibGUgbG5nYW1tYSA9IGdzbF9z Zl9sbmdhbW1hIChudSAvIDIpOwogCi0gICAgICAgICAgcCA9IGV4cCAoKG51 IC8gMiAtIDEpICogbG9nICh4LzIpIC0geC8yIC0gbG5nYW1tYSkgLyAyOwor ICAgICAgICAgIHAgPSAobnUgLyAyIC0gMSkgKiBsb2cgKHgvMikgLSB4LzIg LSBsbmdhbW1hIC0gbG9nICgyLjApOwogICAgICAgICAgIHJldHVybiBwOwog ICAgICAgICB9CiAgICAgfQpkaWZmIC11IGdzbC0xLjE1L3JhbmRpc3QvZXJs YW5nLmMgZ3NsLXNhbS9yYW5kaXN0L2VybGFuZy5jCi0tLSBnc2wtMS4xNS9y YW5kaXN0L2VybGFuZy5jCTIwMTAtMTItMjYgMTc6NTc6MDguMDAwMDAwMDAw ICswMDAwCisrKyBnc2wtc2FtL3JhbmRpc3QvZXJsYW5nLmMJMjAxMi0wNi0x NSAxNjoyMTo1My4wMDAwMDAwMDAgKzAxMDAKQEAgLTIyLDYgKzIyLDcgQEAK ICNpbmNsdWRlIDxnc2wvZ3NsX3NmX2dhbW1hLmg+CiAjaW5jbHVkZSA8Z3Ns L2dzbF9ybmcuaD4KICNpbmNsdWRlIDxnc2wvZ3NsX3JhbmRpc3QuaD4KKyNp bmNsdWRlIDxnc2wvZ3NsX21hdGguaD4KIAogLyogVGhlIHN1bSBvZiBOIHNh bXBsZXMgZnJvbSBhbiBleHBvbmVudGlhbCBkaXN0cmlidXRpb24gZ2l2ZXMg YW4KICAgIEVybGFuZyBkaXN0cmlidXRpb24KQEAgLTM5LDE2ICs0MCwyMiBA QAogZG91YmxlCiBnc2xfcmFuX2VybGFuZ19wZGYgKGNvbnN0IGRvdWJsZSB4 LCBjb25zdCBkb3VibGUgYSwgY29uc3QgZG91YmxlIG4pCiB7CisgIHJldHVy biBleHAgKGdzbF9yYW5fZXJsYW5nX2xucGRmICh4LCBhLCBuKSk7Cit9CisK K2RvdWJsZQorZ3NsX3Jhbl9lcmxhbmdfbG5wZGYgKGNvbnN0IGRvdWJsZSB4 LCBjb25zdCBkb3VibGUgYSwgY29uc3QgZG91YmxlIG4pCit7CiAgIGlmICh4 IDw9IDApIAogICAgIHsKLSAgICAgIHJldHVybiAwIDsKKyAgICAgIHJldHVy biBHU0xfTkVHSU5GIDsKICAgICB9CiAgIGVsc2UKICAgICB7CiAgICAgICBk b3VibGUgcDsKICAgICAgIGRvdWJsZSBsbmdhbW1hID0gZ3NsX3NmX2xuZ2Ft bWEgKG4pOwogCi0gICAgICBwID0gZXhwICgobiAtIDEpICogbG9nICh4L2Ep IC0geC9hIC0gbG5nYW1tYSkgLyBhOworICAgICAgcCA9IChuIC0gMSkgKiBs b2cgKHgvYSkgLSB4L2EgLSBsbmdhbW1hIC0gbG9nIChhKTsKICAgICAgIHJl dHVybiBwOwogICAgIH0KIH0KZGlmZiAtdSBnc2wtMS4xNS9yYW5kaXN0L2V4 cG9uZW50aWFsLmMgZ3NsLXNhbS9yYW5kaXN0L2V4cG9uZW50aWFsLmMKLS0t IGdzbC0xLjE1L3JhbmRpc3QvZXhwb25lbnRpYWwuYwkyMDEwLTEyLTI2IDE3 OjU3OjA4LjAwMDAwMDAwMCArMDAwMAorKysgZ3NsLXNhbS9yYW5kaXN0L2V4 cG9uZW50aWFsLmMJMjAxMi0wNi0xNSAxNjowMjo0MS4wMDAwMDAwMDAgKzAx MDAKQEAgLTQwLDEzICs0MCwxOSBAQAogZG91YmxlCiBnc2xfcmFuX2V4cG9u ZW50aWFsX3BkZiAoY29uc3QgZG91YmxlIHgsIGNvbnN0IGRvdWJsZSBtdSkK IHsKKyAgcmV0dXJuIGV4cCAoZ3NsX3Jhbl9leHBvbmVudGlhbF9sbnBkZiAo eCwgbXUpKTsKK30KKworZG91YmxlCitnc2xfcmFuX2V4cG9uZW50aWFsX2xu cGRmIChjb25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIG11KQorewogICBp ZiAoeCA8IDApCiAgICAgewotICAgICAgcmV0dXJuIDAgOworICAgICAgcmV0 dXJuIEdTTF9ORUdJTkYgOwogICAgIH0KICAgZWxzZQogICAgIHsKLSAgICAg IGRvdWJsZSBwID0gZXhwICgteC9tdSkvbXU7CisgICAgICBkb3VibGUgcCA9 ICgteC9tdSkgLSBsb2cgKG11KTsKICAgICAgIAogICAgICAgcmV0dXJuIHA7 CiAgICAgfQpkaWZmIC11IGdzbC0xLjE1L3JhbmRpc3QvZXhwcG93LmMgZ3Ns LXNhbS9yYW5kaXN0L2V4cHBvdy5jCi0tLSBnc2wtMS4xNS9yYW5kaXN0L2V4 cHBvdy5jCTIwMTAtMTItMjYgMTc6NTc6MDguMDAwMDAwMDAwICswMDAwCisr KyBnc2wtc2FtL3JhbmRpc3QvZXhwcG93LmMJMjAxMi0wNi0xNSAxNDo1OTox OS4wMDAwMDAwMDAgKzAxMDAKQEAgLTExNSw4ICsxMTUsMTQgQEAKIGRvdWJs ZQogZ3NsX3Jhbl9leHBwb3dfcGRmIChjb25zdCBkb3VibGUgeCwgY29uc3Qg ZG91YmxlIGEsIGNvbnN0IGRvdWJsZSBiKQogeworICByZXR1cm4gZXhwIChn c2xfcmFuX2V4cHBvd19sbnBkZiAoeCwgYSwgYikpOworfQorCitkb3VibGUK K2dzbF9yYW5fZXhwcG93X2xucGRmIChjb25zdCBkb3VibGUgeCwgY29uc3Qg ZG91YmxlIGEsIGNvbnN0IGRvdWJsZSBiKQorewogICBkb3VibGUgcDsKICAg ZG91YmxlIGxuZ2FtbWEgPSBnc2xfc2ZfbG5nYW1tYSAoMSArIDEgLyBiKTsK LSAgcCA9ICgxIC8gKDIgKiBhKSkgKiBleHAgKC1wb3cgKGZhYnMgKHggLyBh KSwgYikgLSBsbmdhbW1hKTsKKyAgcCA9IC1sb2coMiAqIGEpICsgKC1wb3cg KGZhYnMgKHggLyBhKSwgYikgLSBsbmdhbW1hKTsKICAgcmV0dXJuIHA7CiB9 CmRpZmYgLXUgZ3NsLTEuMTUvcmFuZGlzdC9mZGlzdC5jIGdzbC1zYW0vcmFu ZGlzdC9mZGlzdC5jCi0tLSBnc2wtMS4xNS9yYW5kaXN0L2ZkaXN0LmMJMjAx MC0xMi0yNiAxNzo1NzowOC4wMDAwMDAwMDAgKzAwMDAKKysrIGdzbC1zYW0v cmFuZGlzdC9mZGlzdC5jCTIwMTItMDYtMTUgMTY6MjI6MDEuMDAwMDAwMDAw ICswMTAwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSA8Z3NsL2dzbF9z Zl9nYW1tYS5oPgogI2luY2x1ZGUgPGdzbC9nc2xfcm5nLmg+CiAjaW5jbHVk ZSA8Z3NsL2dzbF9yYW5kaXN0Lmg+CisjaW5jbHVkZSA8Z3NsL2dzbF9tYXRo Lmg+CiAKIC8qIFRoZSBGIGRpc3RyaWJ1dGlvbiBoYXMgdGhlIGZvcm0KIApA QCAtNDYsOSArNDcsMTUgQEAKIGRvdWJsZQogZ3NsX3Jhbl9mZGlzdF9wZGYg KGNvbnN0IGRvdWJsZSB4LCBjb25zdCBkb3VibGUgbnUxLCBjb25zdCBkb3Vi bGUgbnUyKQogeworICByZXR1cm4gZXhwIChnc2xfcmFuX2ZkaXN0X2xucGRm ICh4LCBudTEsIG51MikpOworfQorCitkb3VibGUKK2dzbF9yYW5fZmRpc3Rf bG5wZGYgKGNvbnN0IGRvdWJsZSB4LCBjb25zdCBkb3VibGUgbnUxLCBjb25z dCBkb3VibGUgbnUyKQorewogICBpZiAoeCA8IDApCiAgICAgewotICAgICAg cmV0dXJuIDAgOworICAgICAgcmV0dXJuIEdTTF9ORUdJTkYgOwogICAgIH0K ICAgZWxzZQogICAgIHsKQEAgLTU5LDkgKzY2LDggQEAKICAgICAgIGRvdWJs ZSBsZzEgPSBnc2xfc2ZfbG5nYW1tYSAobnUxIC8gMik7CiAgICAgICBkb3Vi bGUgbGcyID0gZ3NsX3NmX2xuZ2FtbWEgKG51MiAvIDIpOwogCi0gICAgICBw ID0KLQlleHAgKGxnbGcgKyBsZzEyIC0gbGcxIC0gbGcyICsgKG51MSAvIDIg LSAxKSAqIGxvZyAoeCkgLQotCSAgICAgKChudTEgKyBudTIpIC8gMikgKiBs b2cgKG51MiArIG51MSAqIHgpKTsKKyAgICAgIHAgPSAobGdsZyArIGxnMTIg LSBsZzEgLSBsZzIgKyAobnUxIC8gMiAtIDEpICogbG9nICh4KSAtCisJICAg KChudTEgKyBudTIpIC8gMikgKiBsb2cgKG51MiArIG51MSAqIHgpKTsKIAog ICAgICAgcmV0dXJuIHA7CiAgICAgfQpkaWZmIC11IGdzbC0xLjE1L3JhbmRp c3QvZmxhdC5jIGdzbC1zYW0vcmFuZGlzdC9mbGF0LmMKLS0tIGdzbC0xLjE1 L3JhbmRpc3QvZmxhdC5jCTIwMTAtMTItMjYgMTc6NTc6MDguMDAwMDAwMDAw ICswMDAwCisrKyBnc2wtc2FtL3JhbmRpc3QvZmxhdC5jCTIwMTItMDYtMTUg MTY6MjI6MDguMDAwMDAwMDAwICswMTAwCkBAIC0yMSw2ICsyMSw3IEBACiAj aW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPGdzbC9nc2xfcm5nLmg+CiAj aW5jbHVkZSA8Z3NsL2dzbF9yYW5kaXN0Lmg+CisjaW5jbHVkZSA8Z3NsL2dz bF9tYXRoLmg+CiAKIC8qIFRoaXMgaXMgdGhlIHVuaWZvcm0gZGlzdHJpYnV0 aW9uIGluIHRoZSByYW5nZSBbYSwgYikKIApAQCAtNDIsMTIgKzQzLDE4IEBA CiBkb3VibGUKIGdzbF9yYW5fZmxhdF9wZGYgKGRvdWJsZSB4LCBjb25zdCBk b3VibGUgYSwgY29uc3QgZG91YmxlIGIpCiB7CisgIHJldHVybiBleHAgKGdz bF9yYW5fZmxhdF9sbnBkZiAoeCwgYSwgYikpOworfQorCitkb3VibGUKK2dz bF9yYW5fZmxhdF9sbnBkZiAoZG91YmxlIHgsIGNvbnN0IGRvdWJsZSBhLCBj b25zdCBkb3VibGUgYikKK3sKICAgaWYgKHggPCBiICYmIHggPj0gYSkKICAg ICB7Ci0gICAgICByZXR1cm4gMSAvIChiIC0gYSk7CisgICAgICByZXR1cm4g LWxvZyAoYiAtIGEpOwogICAgIH0KICAgZWxzZQogICAgIHsKLSAgICAgIHJl dHVybiAwOworICAgICAgcmV0dXJuIEdTTF9ORUdJTkY7CiAgICAgfQogfQpk aWZmIC11IGdzbC0xLjE1L3JhbmRpc3QvZ2FtbWEuYyBnc2wtc2FtL3JhbmRp c3QvZ2FtbWEuYwotLS0gZ3NsLTEuMTUvcmFuZGlzdC9nYW1tYS5jCTIwMTAt MTItMjYgMTc6NTc6MDguMDAwMDAwMDAwICswMDAwCisrKyBnc2wtc2FtL3Jh bmRpc3QvZ2FtbWEuYwkyMDEyLTA2LTE1IDEyOjM0OjM0LjAwMDAwMDAwMCAr MDEwMApAQCAtMTUwLDI2ICsxNTAsMzIgQEAKIGRvdWJsZQogZ3NsX3Jhbl9n YW1tYV9wZGYgKGNvbnN0IGRvdWJsZSB4LCBjb25zdCBkb3VibGUgYSwgY29u c3QgZG91YmxlIGIpCiB7CisgIHJldHVybiBleHAgKGdzbF9yYW5fZ2FtbWFf bG5wZGYgKHgsIGEsIGIpKTsKK30KKworZG91YmxlCitnc2xfcmFuX2dhbW1h X2xucGRmIChjb25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIGEsIGNvbnN0 IGRvdWJsZSBiKQorewogICBpZiAoeCA8IDApCiAgICAgewotICAgICAgcmV0 dXJuIDAgOworICAgICAgcmV0dXJuIEdTTF9ORUdJTkYgOwogICAgIH0KICAg ZWxzZSBpZiAoeCA9PSAwKQogICAgIHsKICAgICAgIGlmIChhID09IDEpCi0g ICAgICAgIHJldHVybiAxL2IgOworICAgICAgICByZXR1cm4gLWxvZyhiKSA7 CiAgICAgICBlbHNlCi0gICAgICAgIHJldHVybiAwIDsKKyAgICAgICAgcmV0 dXJuIEdTTF9ORUdJTkYgOwogICAgIH0KICAgZWxzZSBpZiAoYSA9PSAxKQog ICAgIHsKLSAgICAgIHJldHVybiBleHAoLXgvYikvYiA7CisgICAgICByZXR1 cm4gKC14L2IpIC0gbG9nKGIpIDsKICAgICB9CiAgIGVsc2UgCiAgICAgewog ICAgICAgZG91YmxlIHA7CiAgICAgICBkb3VibGUgbG5nYW1tYSA9IGdzbF9z Zl9sbmdhbW1hIChhKTsKLSAgICAgIHAgPSBleHAgKChhIC0gMSkgKiBsb2cg KHgvYikgLSB4L2IgLSBsbmdhbW1hKS9iOworICAgICAgcCA9IChhIC0gMSkg KiBsb2cgKHgvYikgLSB4L2IgLSBsbmdhbW1hIC0gbG9nIChiKTsKICAgICAg IHJldHVybiBwOwogICAgIH0KIH0KZGlmZiAtdSBnc2wtMS4xNS9yYW5kaXN0 L2dhdXNzLmMgZ3NsLXNhbS9yYW5kaXN0L2dhdXNzLmMKLS0tIGdzbC0xLjE1 L3JhbmRpc3QvZ2F1c3MuYwkyMDEwLTEyLTI2IDE3OjU3OjA4LjAwMDAwMDAw MCArMDAwMAorKysgZ3NsLXNhbS9yYW5kaXN0L2dhdXNzLmMJMjAxMi0wNi0x NSAxMzozMTo0OC4wMDAwMDAwMDAgKzAxMDAKQEAgLTExOCw4ICsxMTgsMTQg QEAKIGRvdWJsZQogZ3NsX3Jhbl9nYXVzc2lhbl9wZGYgKGNvbnN0IGRvdWJs ZSB4LCBjb25zdCBkb3VibGUgc2lnbWEpCiB7CisgIHJldHVybiBleHAgKGdz bF9yYW5fZ2F1c3NpYW5fbG5wZGYgKHgsIHNpZ21hKSk7Cit9CisKK2RvdWJs ZQorZ3NsX3Jhbl9nYXVzc2lhbl9sbnBkZiAoY29uc3QgZG91YmxlIHgsIGNv bnN0IGRvdWJsZSBzaWdtYSkKK3sKICAgZG91YmxlIHUgPSB4IC8gZmFicyAo c2lnbWEpOwotICBkb3VibGUgcCA9ICgxIC8gKHNxcnQgKDIgKiBNX1BJKSAq IGZhYnMgKHNpZ21hKSkpICogZXhwICgtdSAqIHUgLyAyKTsKKyAgZG91Ymxl IHAgPSAtbG9nKHNxcnQgKDIgKiBNX1BJKSAqIGZhYnMgKHNpZ21hKSkgKyAo LXUgKiB1IC8gMik7CiAgIHJldHVybiBwOwogfQogCkBAIC0xMzYsOCArMTQy LDEzIEBACiB9CiAKIGRvdWJsZQotZ3NsX3Jhbl91Z2F1c3NpYW5fcGRmIChj b25zdCBkb3VibGUgeCkKK2dzbF9yYW5fdWdhdXNzaWFuX2xucGRmIChjb25z dCBkb3VibGUgeCkKIHsKLSAgcmV0dXJuIGdzbF9yYW5fZ2F1c3NpYW5fcGRm ICh4LCAxLjApOworICByZXR1cm4gZ3NsX3Jhbl9nYXVzc2lhbl9sbnBkZiAo eCwgMS4wKTsKIH0KIAorZG91YmxlCitnc2xfcmFuX3VnYXVzc2lhbl9wZGYg KGNvbnN0IGRvdWJsZSB4KQoreworICByZXR1cm4gZXhwIChnc2xfcmFuX2dh dXNzaWFuX2xucGRmICh4LCAxLjApKTsKK30KZGlmZiAtdSBnc2wtMS4xNS9y YW5kaXN0L2dhdXNzdGFpbC5jIGdzbC1zYW0vcmFuZGlzdC9nYXVzc3RhaWwu YwotLS0gZ3NsLTEuMTUvcmFuZGlzdC9nYXVzc3RhaWwuYwkyMDEwLTEyLTI2 IDE3OjU3OjA4LjAwMDAwMDAwMCArMDAwMAorKysgZ3NsLXNhbS9yYW5kaXN0 L2dhdXNzdGFpbC5jCTIwMTItMDYtMTUgMTM6MzQ6MDcuMDAwMDAwMDAwICsw MTAwCkBAIC03NSw5ICs3NSwxNSBAQAogZG91YmxlCiBnc2xfcmFuX2dhdXNz aWFuX3RhaWxfcGRmIChjb25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIGEs IGNvbnN0IGRvdWJsZSBzaWdtYSkKIHsKKyAgcmV0dXJuIGV4cCAoZ3NsX3Jh bl9nYXVzc2lhbl90YWlsX2xucGRmICh4LCBhLCBzaWdtYSkpOworfQorCitk b3VibGUKK2dzbF9yYW5fZ2F1c3NpYW5fdGFpbF9sbnBkZiAoY29uc3QgZG91 YmxlIHgsIGNvbnN0IGRvdWJsZSBhLCBjb25zdCBkb3VibGUgc2lnbWEpCit7 CiAgIGlmICh4IDwgYSkKICAgICB7Ci0gICAgICByZXR1cm4gMDsKKyAgICAg IHJldHVybiBHU0xfTkVHSU5GOwogICAgIH0KICAgZWxzZQogICAgIHsKQEAg LTg4LDcgKzk0LDcgQEAKIAogICAgICAgTiA9IDAuNSAqIGY7CiAKLSAgICAg IHAgPSAoMSAvIChOICogc3FydCAoMiAqIE1fUEkpICogc2lnbWEpKSAqIGV4 cCAoLXUgKiB1IC8gMik7CisgICAgICBwID0gLWxvZyhOICogc3FydCAoMiAq IE1fUEkpICogc2lnbWEpICsgKC11ICogdSAvIDIpOwogCiAgICAgICByZXR1 cm4gcDsKICAgICB9CkBAIC0xMDMsNSArMTA5LDExIEBACiBkb3VibGUKIGdz bF9yYW5fdWdhdXNzaWFuX3RhaWxfcGRmIChjb25zdCBkb3VibGUgeCwgY29u c3QgZG91YmxlIGEpCiB7Ci0gIHJldHVybiBnc2xfcmFuX2dhdXNzaWFuX3Rh aWxfcGRmICh4LCBhLCAxLjApIDsKKyAgcmV0dXJuIGV4cCAoZ3NsX3Jhbl9n YXVzc2lhbl90YWlsX2xucGRmICh4LCBhLCAxLjApKSA7Cit9CisKK2RvdWJs ZQorZ3NsX3Jhbl91Z2F1c3NpYW5fdGFpbF9sbnBkZiAoY29uc3QgZG91Ymxl IHgsIGNvbnN0IGRvdWJsZSBhKQoreworICByZXR1cm4gZ3NsX3Jhbl9nYXVz c2lhbl90YWlsX2xucGRmICh4LCBhLCAxLjApIDsKIH0KZGlmZiAtdSBnc2wt MS4xNS9yYW5kaXN0L2dlb21ldHJpYy5jIGdzbC1zYW0vcmFuZGlzdC9nZW9t ZXRyaWMuYwotLS0gZ3NsLTEuMTUvcmFuZGlzdC9nZW9tZXRyaWMuYwkyMDEw LTEyLTI2IDE3OjU3OjA4LjAwMDAwMDAwMCArMDAwMAorKysgZ3NsLXNhbS9y YW5kaXN0L2dlb21ldHJpYy5jCTIwMTItMDYtMTUgMTY6MjI6MTguMDAwMDAw MDAwICswMTAwCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSA8bWF0aC5o PgogI2luY2x1ZGUgPGdzbC9nc2xfcm5nLmg+CiAjaW5jbHVkZSA8Z3NsL2dz bF9yYW5kaXN0Lmg+CisjaW5jbHVkZSA8Z3NsL2dzbF9tYXRoLmg+CiAKIC8q IEdlb21ldHJpYyBkaXN0cmlidXRpb24gKGJlcm5vdWxsaSB0cmlhbCB3aXRo IHByb2JhYmlsaXR5IHApIAogCkBAIC01MSwxNyArNTIsMjMgQEAKIGRvdWJs ZQogZ3NsX3Jhbl9nZW9tZXRyaWNfcGRmIChjb25zdCB1bnNpZ25lZCBpbnQg aywgY29uc3QgZG91YmxlIHApCiB7CisgIHJldHVybiBleHAgKGdzbF9yYW5f Z2VvbWV0cmljX2xucGRmIChrLCBwKSk7Cit9CisKK2RvdWJsZQorZ3NsX3Jh bl9nZW9tZXRyaWNfbG5wZGYgKGNvbnN0IHVuc2lnbmVkIGludCBrLCBjb25z dCBkb3VibGUgcCkKK3sKICAgaWYgKGsgPT0gMCkKICAgICB7Ci0gICAgICBy ZXR1cm4gMCA7CisgICAgICByZXR1cm4gR1NMX05FR0lORiA7CiAgICAgfQog ICBlbHNlIGlmIChrID09IDEpCiAgICAgewotICAgICAgcmV0dXJuIHAgOwor ICAgICAgcmV0dXJuIGxvZyAocCkgOwogICAgIH0KICAgZWxzZQogICAgIHsK LSAgICAgIGRvdWJsZSBQID0gcCAqIHBvdyAoMSAtIHAsIGsgLSAxLjApOwor ICAgICAgZG91YmxlIFAgPSBsb2cgKHApICsgbG9nMXAgKC1wKSAqIChrIC0g MS4wKTsKICAgICAgIHJldHVybiBQOwogICAgIH0KIH0KZGlmZiAtdSBnc2wt MS4xNS9yYW5kaXN0L2dzbF9yYW5kaXN0LmggZ3NsLXNhbS9yYW5kaXN0L2dz bF9yYW5kaXN0LmgKLS0tIGdzbC0xLjE1L3JhbmRpc3QvZ3NsX3JhbmRpc3Qu aAkyMDEwLTEyLTI2IDE3OjU3OjA4LjAwMDAwMDAwMCArMDAwMAorKysgZ3Ns LXNhbS9yYW5kaXN0L2dzbF9yYW5kaXN0LmgJMjAxMi0wNi0xNSAxNTo0OToy MS4wMDAwMDAwMDAgKzAxMDAKQEAgLTM4LDIzICszOCwyOSBAQAogCiBkb3Vi bGUgZ3NsX3Jhbl9iZXRhIChjb25zdCBnc2xfcm5nICogciwgY29uc3QgZG91 YmxlIGEsIGNvbnN0IGRvdWJsZSBiKTsKIGRvdWJsZSBnc2xfcmFuX2JldGFf cGRmIChjb25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIGEsIGNvbnN0IGRv dWJsZSBiKTsKK2RvdWJsZSBnc2xfcmFuX2JldGFfbG5wZGYgKGNvbnN0IGRv dWJsZSB4LCBjb25zdCBkb3VibGUgYSwgY29uc3QgZG91YmxlIGIpOwogCiB1 bnNpZ25lZCBpbnQgZ3NsX3Jhbl9iaW5vbWlhbCAoY29uc3QgZ3NsX3JuZyAq IHIsIGRvdWJsZSBwLCB1bnNpZ25lZCBpbnQgbik7CiB1bnNpZ25lZCBpbnQg Z3NsX3Jhbl9iaW5vbWlhbF9rbnV0aCAoY29uc3QgZ3NsX3JuZyAqIHIsIGRv dWJsZSBwLCB1bnNpZ25lZCBpbnQgbik7CiB1bnNpZ25lZCBpbnQgZ3NsX3Jh bl9iaW5vbWlhbF90cGUgKGNvbnN0IGdzbF9ybmcgKiByLCBkb3VibGUgcCwg dW5zaWduZWQgaW50IG4pOwogZG91YmxlIGdzbF9yYW5fYmlub21pYWxfcGRm IChjb25zdCB1bnNpZ25lZCBpbnQgaywgY29uc3QgZG91YmxlIHAsIGNvbnN0 IHVuc2lnbmVkIGludCBuKTsKK2RvdWJsZSBnc2xfcmFuX2Jpbm9taWFsX2xu cGRmIChjb25zdCB1bnNpZ25lZCBpbnQgaywgY29uc3QgZG91YmxlIHAsIGNv bnN0IHVuc2lnbmVkIGludCBuKTsKIAogZG91YmxlIGdzbF9yYW5fZXhwb25l bnRpYWwgKGNvbnN0IGdzbF9ybmcgKiByLCBjb25zdCBkb3VibGUgbXUpOwog ZG91YmxlIGdzbF9yYW5fZXhwb25lbnRpYWxfcGRmIChjb25zdCBkb3VibGUg eCwgY29uc3QgZG91YmxlIG11KTsKK2RvdWJsZSBnc2xfcmFuX2V4cG9uZW50 aWFsX2xucGRmIChjb25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIG11KTsK IAogZG91YmxlIGdzbF9yYW5fZXhwcG93IChjb25zdCBnc2xfcm5nICogciwg Y29uc3QgZG91YmxlIGEsIGNvbnN0IGRvdWJsZSBiKTsKIGRvdWJsZSBnc2xf cmFuX2V4cHBvd19wZGYgKGNvbnN0IGRvdWJsZSB4LCBjb25zdCBkb3VibGUg YSwgY29uc3QgZG91YmxlIGIpOworZG91YmxlIGdzbF9yYW5fZXhwcG93X2xu cGRmIChjb25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIGEsIGNvbnN0IGRv dWJsZSBiKTsKIAogZG91YmxlIGdzbF9yYW5fY2F1Y2h5IChjb25zdCBnc2xf cm5nICogciwgY29uc3QgZG91YmxlIGEpOwogZG91YmxlIGdzbF9yYW5fY2F1 Y2h5X3BkZiAoY29uc3QgZG91YmxlIHgsIGNvbnN0IGRvdWJsZSBhKTsKK2Rv dWJsZSBnc2xfcmFuX2NhdWNoeV9sbnBkZiAoY29uc3QgZG91YmxlIHgsIGNv bnN0IGRvdWJsZSBhKTsKIAogZG91YmxlIGdzbF9yYW5fY2hpc3EgKGNvbnN0 IGdzbF9ybmcgKiByLCBjb25zdCBkb3VibGUgbnUpOwogZG91YmxlIGdzbF9y YW5fY2hpc3FfcGRmIChjb25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIG51 KTsKK2RvdWJsZSBnc2xfcmFuX2NoaXNxX2xucGRmIChjb25zdCBkb3VibGUg eCwgY29uc3QgZG91YmxlIG51KTsKIAogdm9pZCBnc2xfcmFuX2RpcmljaGxl dCAoY29uc3QgZ3NsX3JuZyAqIHIsIGNvbnN0IHNpemVfdCBLLCBjb25zdCBk b3VibGUgYWxwaGFbXSwgZG91YmxlIHRoZXRhW10pOwogZG91YmxlIGdzbF9y YW5fZGlyaWNobGV0X3BkZiAoY29uc3Qgc2l6ZV90IEssIGNvbnN0IGRvdWJs ZSBhbHBoYVtdLCBjb25zdCBkb3VibGUgdGhldGFbXSk7CkBAIC02MiwxNiAr NjgsMjAgQEAKIAogZG91YmxlIGdzbF9yYW5fZXJsYW5nIChjb25zdCBnc2xf cm5nICogciwgY29uc3QgZG91YmxlIGEsIGNvbnN0IGRvdWJsZSBuKTsKIGRv dWJsZSBnc2xfcmFuX2VybGFuZ19wZGYgKGNvbnN0IGRvdWJsZSB4LCBjb25z dCBkb3VibGUgYSwgY29uc3QgZG91YmxlIG4pOworZG91YmxlIGdzbF9yYW5f ZXJsYW5nX2xucGRmIChjb25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIGEs IGNvbnN0IGRvdWJsZSBuKTsKIAogZG91YmxlIGdzbF9yYW5fZmRpc3QgKGNv bnN0IGdzbF9ybmcgKiByLCBjb25zdCBkb3VibGUgbnUxLCBjb25zdCBkb3Vi bGUgbnUyKTsKIGRvdWJsZSBnc2xfcmFuX2ZkaXN0X3BkZiAoY29uc3QgZG91 YmxlIHgsIGNvbnN0IGRvdWJsZSBudTEsIGNvbnN0IGRvdWJsZSBudTIpOwor ZG91YmxlIGdzbF9yYW5fZmRpc3RfbG5wZGYgKGNvbnN0IGRvdWJsZSB4LCBj b25zdCBkb3VibGUgbnUxLCBjb25zdCBkb3VibGUgbnUyKTsKIAogZG91Ymxl IGdzbF9yYW5fZmxhdCAoY29uc3QgZ3NsX3JuZyAqIHIsIGNvbnN0IGRvdWJs ZSBhLCBjb25zdCBkb3VibGUgYik7CiBkb3VibGUgZ3NsX3Jhbl9mbGF0X3Bk ZiAoZG91YmxlIHgsIGNvbnN0IGRvdWJsZSBhLCBjb25zdCBkb3VibGUgYik7 Citkb3VibGUgZ3NsX3Jhbl9mbGF0X2xucGRmIChkb3VibGUgeCwgY29uc3Qg ZG91YmxlIGEsIGNvbnN0IGRvdWJsZSBiKTsKIAogZG91YmxlIGdzbF9yYW5f Z2FtbWEgKGNvbnN0IGdzbF9ybmcgKiByLCBjb25zdCBkb3VibGUgYSwgY29u c3QgZG91YmxlIGIpOwogZG91YmxlIGdzbF9yYW5fZ2FtbWFfaW50IChjb25z dCBnc2xfcm5nICogciwgY29uc3QgdW5zaWduZWQgaW50IGEpOwogZG91Ymxl IGdzbF9yYW5fZ2FtbWFfcGRmIChjb25zdCBkb3VibGUgeCwgY29uc3QgZG91 YmxlIGEsIGNvbnN0IGRvdWJsZSBiKTsKK2RvdWJsZSBnc2xfcmFuX2dhbW1h X2xucGRmIChjb25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIGEsIGNvbnN0 IGRvdWJsZSBiKTsKIGRvdWJsZSBnc2xfcmFuX2dhbW1hX210IChjb25zdCBn c2xfcm5nICogciwgY29uc3QgZG91YmxlIGEsIGNvbnN0IGRvdWJsZSBiKTsK IGRvdWJsZSBnc2xfcmFuX2dhbW1hX2tudXRoIChjb25zdCBnc2xfcm5nICog ciwgY29uc3QgZG91YmxlIGEsIGNvbnN0IGRvdWJsZSBiKTsKIApAQCAtNzks NDMgKzg5LDU1IEBACiBkb3VibGUgZ3NsX3Jhbl9nYXVzc2lhbl9yYXRpb19t ZXRob2QgKGNvbnN0IGdzbF9ybmcgKiByLCBjb25zdCBkb3VibGUgc2lnbWEp OwogZG91YmxlIGdzbF9yYW5fZ2F1c3NpYW5femlnZ3VyYXQgKGNvbnN0IGdz bF9ybmcgKiByLCBjb25zdCBkb3VibGUgc2lnbWEpOwogZG91YmxlIGdzbF9y YW5fZ2F1c3NpYW5fcGRmIChjb25zdCBkb3VibGUgeCwgY29uc3QgZG91Ymxl IHNpZ21hKTsKK2RvdWJsZSBnc2xfcmFuX2dhdXNzaWFuX2xucGRmIChjb25z dCBkb3VibGUgeCwgY29uc3QgZG91YmxlIHNpZ21hKTsKIAogZG91YmxlIGdz bF9yYW5fdWdhdXNzaWFuIChjb25zdCBnc2xfcm5nICogcik7CiBkb3VibGUg Z3NsX3Jhbl91Z2F1c3NpYW5fcmF0aW9fbWV0aG9kIChjb25zdCBnc2xfcm5n ICogcik7CiBkb3VibGUgZ3NsX3Jhbl91Z2F1c3NpYW5fcGRmIChjb25zdCBk b3VibGUgeCk7Citkb3VibGUgZ3NsX3Jhbl91Z2F1c3NpYW5fbG5wZGYgKGNv bnN0IGRvdWJsZSB4KTsKIAogZG91YmxlIGdzbF9yYW5fZ2F1c3NpYW5fdGFp bCAoY29uc3QgZ3NsX3JuZyAqIHIsIGNvbnN0IGRvdWJsZSBhLCBjb25zdCBk b3VibGUgc2lnbWEpOwogZG91YmxlIGdzbF9yYW5fZ2F1c3NpYW5fdGFpbF9w ZGYgKGNvbnN0IGRvdWJsZSB4LCBjb25zdCBkb3VibGUgYSwgY29uc3QgZG91 YmxlIHNpZ21hKTsKK2RvdWJsZSBnc2xfcmFuX2dhdXNzaWFuX3RhaWxfbG5w ZGYgKGNvbnN0IGRvdWJsZSB4LCBjb25zdCBkb3VibGUgYSwgY29uc3QgZG91 YmxlIHNpZ21hKTsKIAogZG91YmxlIGdzbF9yYW5fdWdhdXNzaWFuX3RhaWwg KGNvbnN0IGdzbF9ybmcgKiByLCBjb25zdCBkb3VibGUgYSk7CiBkb3VibGUg Z3NsX3Jhbl91Z2F1c3NpYW5fdGFpbF9wZGYgKGNvbnN0IGRvdWJsZSB4LCBj b25zdCBkb3VibGUgYSk7Citkb3VibGUgZ3NsX3Jhbl91Z2F1c3NpYW5fdGFp bF9sbnBkZiAoY29uc3QgZG91YmxlIHgsIGNvbnN0IGRvdWJsZSBhKTsKIAog dm9pZCBnc2xfcmFuX2JpdmFyaWF0ZV9nYXVzc2lhbiAoY29uc3QgZ3NsX3Ju ZyAqIHIsIGRvdWJsZSBzaWdtYV94LCBkb3VibGUgc2lnbWFfeSwgZG91Ymxl IHJobywgZG91YmxlICp4LCBkb3VibGUgKnkpOwogZG91YmxlIGdzbF9yYW5f Yml2YXJpYXRlX2dhdXNzaWFuX3BkZiAoY29uc3QgZG91YmxlIHgsIGNvbnN0 IGRvdWJsZSB5LCBjb25zdCBkb3VibGUgc2lnbWFfeCwgY29uc3QgZG91Ymxl IHNpZ21hX3ksIGNvbnN0IGRvdWJsZSByaG8pOworZG91YmxlIGdzbF9yYW5f Yml2YXJpYXRlX2dhdXNzaWFuX2xucGRmIChjb25zdCBkb3VibGUgeCwgY29u c3QgZG91YmxlIHksIGNvbnN0IGRvdWJsZSBzaWdtYV94LCBjb25zdCBkb3Vi bGUgc2lnbWFfeSwgY29uc3QgZG91YmxlIHJobyk7CiAKIGRvdWJsZSBnc2xf cmFuX2xhbmRhdSAoY29uc3QgZ3NsX3JuZyAqIHIpOwogZG91YmxlIGdzbF9y YW5fbGFuZGF1X3BkZiAoY29uc3QgZG91YmxlIHgpOwogCiB1bnNpZ25lZCBp bnQgZ3NsX3Jhbl9nZW9tZXRyaWMgKGNvbnN0IGdzbF9ybmcgKiByLCBjb25z dCBkb3VibGUgcCk7CiBkb3VibGUgZ3NsX3Jhbl9nZW9tZXRyaWNfcGRmIChj b25zdCB1bnNpZ25lZCBpbnQgaywgY29uc3QgZG91YmxlIHApOworZG91Ymxl IGdzbF9yYW5fZ2VvbWV0cmljX2xucGRmIChjb25zdCB1bnNpZ25lZCBpbnQg aywgY29uc3QgZG91YmxlIHApOwogCiB1bnNpZ25lZCBpbnQgZ3NsX3Jhbl9o eXBlcmdlb21ldHJpYyAoY29uc3QgZ3NsX3JuZyAqIHIsIHVuc2lnbmVkIGlu dCBuMSwgdW5zaWduZWQgaW50IG4yLCB1bnNpZ25lZCBpbnQgdCk7CiBkb3Vi bGUgZ3NsX3Jhbl9oeXBlcmdlb21ldHJpY19wZGYgKGNvbnN0IHVuc2lnbmVk IGludCBrLCBjb25zdCB1bnNpZ25lZCBpbnQgbjEsIGNvbnN0IHVuc2lnbmVk IGludCBuMiwgdW5zaWduZWQgaW50IHQpOworZG91YmxlIGdzbF9yYW5faHlw ZXJnZW9tZXRyaWNfbG5wZGYgKGNvbnN0IHVuc2lnbmVkIGludCBrLCBjb25z dCB1bnNpZ25lZCBpbnQgbjEsIGNvbnN0IHVuc2lnbmVkIGludCBuMiwgdW5z aWduZWQgaW50IHQpOwogCiBkb3VibGUgZ3NsX3Jhbl9ndW1iZWwxIChjb25z dCBnc2xfcm5nICogciwgY29uc3QgZG91YmxlIGEsIGNvbnN0IGRvdWJsZSBi KTsKIGRvdWJsZSBnc2xfcmFuX2d1bWJlbDFfcGRmIChjb25zdCBkb3VibGUg eCwgY29uc3QgZG91YmxlIGEsIGNvbnN0IGRvdWJsZSBiKTsKK2RvdWJsZSBn c2xfcmFuX2d1bWJlbDFfbG5wZGYgKGNvbnN0IGRvdWJsZSB4LCBjb25zdCBk b3VibGUgYSwgY29uc3QgZG91YmxlIGIpOwogCiBkb3VibGUgZ3NsX3Jhbl9n dW1iZWwyIChjb25zdCBnc2xfcm5nICogciwgY29uc3QgZG91YmxlIGEsIGNv bnN0IGRvdWJsZSBiKTsKIGRvdWJsZSBnc2xfcmFuX2d1bWJlbDJfcGRmIChj b25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIGEsIGNvbnN0IGRvdWJsZSBi KTsKK2RvdWJsZSBnc2xfcmFuX2d1bWJlbDJfbG5wZGYgKGNvbnN0IGRvdWJs ZSB4LCBjb25zdCBkb3VibGUgYSwgY29uc3QgZG91YmxlIGIpOwogCiBkb3Vi bGUgZ3NsX3Jhbl9sb2dpc3RpYyAoY29uc3QgZ3NsX3JuZyAqIHIsIGNvbnN0 IGRvdWJsZSBhKTsKIGRvdWJsZSBnc2xfcmFuX2xvZ2lzdGljX3BkZiAoY29u c3QgZG91YmxlIHgsIGNvbnN0IGRvdWJsZSBhKTsKK2RvdWJsZSBnc2xfcmFu X2xvZ2lzdGljX2xucGRmIChjb25zdCBkb3VibGUgeCwgY29uc3QgZG91Ymxl IGEpOwogCiBkb3VibGUgZ3NsX3Jhbl9sb2dub3JtYWwgKGNvbnN0IGdzbF9y bmcgKiByLCBjb25zdCBkb3VibGUgemV0YSwgY29uc3QgZG91YmxlIHNpZ21h KTsKIGRvdWJsZSBnc2xfcmFuX2xvZ25vcm1hbF9wZGYgKGNvbnN0IGRvdWJs ZSB4LCBjb25zdCBkb3VibGUgemV0YSwgY29uc3QgZG91YmxlIHNpZ21hKTsK K2RvdWJsZSBnc2xfcmFuX2xvZ25vcm1hbF9sbnBkZiAoY29uc3QgZG91Ymxl IHgsIGNvbnN0IGRvdWJsZSB6ZXRhLCBjb25zdCBkb3VibGUgc2lnbWEpOwog CiB1bnNpZ25lZCBpbnQgZ3NsX3Jhbl9sb2dhcml0aG1pYyAoY29uc3QgZ3Ns X3JuZyAqIHIsIGNvbnN0IGRvdWJsZSBwKTsKIGRvdWJsZSBnc2xfcmFuX2xv Z2FyaXRobWljX3BkZiAoY29uc3QgdW5zaWduZWQgaW50IGssIGNvbnN0IGRv dWJsZSBwKTsKK2RvdWJsZSBnc2xfcmFuX2xvZ2FyaXRobWljX2xucGRmIChj b25zdCB1bnNpZ25lZCBpbnQgaywgY29uc3QgZG91YmxlIHApOwogCiB2b2lk IGdzbF9yYW5fbXVsdGlub21pYWwgKGNvbnN0IGdzbF9ybmcgKiByLCBjb25z dCBzaXplX3QgSywKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg dW5zaWduZWQgaW50IE4sIGNvbnN0IGRvdWJsZSBwW10sCkBAIC0xMjgsMzUg KzE1MCw0NCBAQAogCiB1bnNpZ25lZCBpbnQgZ3NsX3Jhbl9uZWdhdGl2ZV9i aW5vbWlhbCAoY29uc3QgZ3NsX3JuZyAqIHIsIGRvdWJsZSBwLCBkb3VibGUg bik7CiBkb3VibGUgZ3NsX3Jhbl9uZWdhdGl2ZV9iaW5vbWlhbF9wZGYgKGNv bnN0IHVuc2lnbmVkIGludCBrLCBjb25zdCBkb3VibGUgcCwgZG91YmxlIG4p OworZG91YmxlIGdzbF9yYW5fbmVnYXRpdmVfYmlub21pYWxfbG5wZGYgKGNv bnN0IHVuc2lnbmVkIGludCBrLCBjb25zdCBkb3VibGUgcCwgZG91YmxlIG4p OwogCiB1bnNpZ25lZCBpbnQgZ3NsX3Jhbl9wYXNjYWwgKGNvbnN0IGdzbF9y bmcgKiByLCBkb3VibGUgcCwgdW5zaWduZWQgaW50IG4pOwogZG91YmxlIGdz bF9yYW5fcGFzY2FsX3BkZiAoY29uc3QgdW5zaWduZWQgaW50IGssIGNvbnN0 IGRvdWJsZSBwLCB1bnNpZ25lZCBpbnQgbik7Citkb3VibGUgZ3NsX3Jhbl9w YXNjYWxfbG5wZGYgKGNvbnN0IHVuc2lnbmVkIGludCBrLCBjb25zdCBkb3Vi bGUgcCwgdW5zaWduZWQgaW50IG4pOwogCiBkb3VibGUgZ3NsX3Jhbl9wYXJl dG8gKGNvbnN0IGdzbF9ybmcgKiByLCBkb3VibGUgYSwgY29uc3QgZG91Ymxl IGIpOwogZG91YmxlIGdzbF9yYW5fcGFyZXRvX3BkZiAoY29uc3QgZG91Ymxl IHgsIGNvbnN0IGRvdWJsZSBhLCBjb25zdCBkb3VibGUgYik7Citkb3VibGUg Z3NsX3Jhbl9wYXJldG9fbG5wZGYgKGNvbnN0IGRvdWJsZSB4LCBjb25zdCBk b3VibGUgYSwgY29uc3QgZG91YmxlIGIpOwogCiB1bnNpZ25lZCBpbnQgZ3Ns X3Jhbl9wb2lzc29uIChjb25zdCBnc2xfcm5nICogciwgZG91YmxlIG11KTsK IHZvaWQgZ3NsX3Jhbl9wb2lzc29uX2FycmF5IChjb25zdCBnc2xfcm5nICog ciwgc2l6ZV90IG4sIHVuc2lnbmVkIGludCBhcnJheVtdLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRvdWJsZSBtdSk7CiBkb3VibGUgZ3NsX3Jh bl9wb2lzc29uX3BkZiAoY29uc3QgdW5zaWduZWQgaW50IGssIGNvbnN0IGRv dWJsZSBtdSk7Citkb3VibGUgZ3NsX3Jhbl9wb2lzc29uX2xucGRmIChjb25z dCB1bnNpZ25lZCBpbnQgaywgY29uc3QgZG91YmxlIG11KTsKIAogZG91Ymxl IGdzbF9yYW5fcmF5bGVpZ2ggKGNvbnN0IGdzbF9ybmcgKiByLCBjb25zdCBk b3VibGUgc2lnbWEpOwogZG91YmxlIGdzbF9yYW5fcmF5bGVpZ2hfcGRmIChj b25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIHNpZ21hKTsKK2RvdWJsZSBn c2xfcmFuX3JheWxlaWdoX2xucGRmIChjb25zdCBkb3VibGUgeCwgY29uc3Qg ZG91YmxlIHNpZ21hKTsKIAogZG91YmxlIGdzbF9yYW5fcmF5bGVpZ2hfdGFp bCAoY29uc3QgZ3NsX3JuZyAqIHIsIGNvbnN0IGRvdWJsZSBhLCBjb25zdCBk b3VibGUgc2lnbWEpOwogZG91YmxlIGdzbF9yYW5fcmF5bGVpZ2hfdGFpbF9w ZGYgKGNvbnN0IGRvdWJsZSB4LCBjb25zdCBkb3VibGUgYSwgY29uc3QgZG91 YmxlIHNpZ21hKTsKK2RvdWJsZSBnc2xfcmFuX3JheWxlaWdoX3RhaWxfbG5w ZGYgKGNvbnN0IGRvdWJsZSB4LCBjb25zdCBkb3VibGUgYSwgY29uc3QgZG91 YmxlIHNpZ21hKTsKIAogZG91YmxlIGdzbF9yYW5fdGRpc3QgKGNvbnN0IGdz bF9ybmcgKiByLCBjb25zdCBkb3VibGUgbnUpOwogZG91YmxlIGdzbF9yYW5f dGRpc3RfcGRmIChjb25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIG51KTsK K2RvdWJsZSBnc2xfcmFuX3RkaXN0X2xucGRmIChjb25zdCBkb3VibGUgeCwg Y29uc3QgZG91YmxlIG51KTsKIAogZG91YmxlIGdzbF9yYW5fbGFwbGFjZSAo Y29uc3QgZ3NsX3JuZyAqIHIsIGNvbnN0IGRvdWJsZSBhKTsKIGRvdWJsZSBn c2xfcmFuX2xhcGxhY2VfcGRmIChjb25zdCBkb3VibGUgeCwgY29uc3QgZG91 YmxlIGEpOworZG91YmxlIGdzbF9yYW5fbGFwbGFjZV9sbnBkZiAoY29uc3Qg ZG91YmxlIHgsIGNvbnN0IGRvdWJsZSBhKTsKIAogZG91YmxlIGdzbF9yYW5f bGV2eSAoY29uc3QgZ3NsX3JuZyAqIHIsIGNvbnN0IGRvdWJsZSBjLCBjb25z dCBkb3VibGUgYWxwaGEpOwogZG91YmxlIGdzbF9yYW5fbGV2eV9za2V3IChj b25zdCBnc2xfcm5nICogciwgY29uc3QgZG91YmxlIGMsIGNvbnN0IGRvdWJs ZSBhbHBoYSwgY29uc3QgZG91YmxlIGJldGEpOwogCiBkb3VibGUgZ3NsX3Jh bl93ZWlidWxsIChjb25zdCBnc2xfcm5nICogciwgY29uc3QgZG91YmxlIGEs IGNvbnN0IGRvdWJsZSBiKTsKIGRvdWJsZSBnc2xfcmFuX3dlaWJ1bGxfcGRm IChjb25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIGEsIGNvbnN0IGRvdWJs ZSBiKTsKK2RvdWJsZSBnc2xfcmFuX3dlaWJ1bGxfbG5wZGYgKGNvbnN0IGRv dWJsZSB4LCBjb25zdCBkb3VibGUgYSwgY29uc3QgZG91YmxlIGIpOwogCiB2 b2lkIGdzbF9yYW5fZGlyXzJkIChjb25zdCBnc2xfcm5nICogciwgZG91Ymxl ICogeCwgZG91YmxlICogeSk7CiB2b2lkIGdzbF9yYW5fZGlyXzJkX3RyaWdf bWV0aG9kIChjb25zdCBnc2xfcm5nICogciwgZG91YmxlICogeCwgZG91Ymxl ICogeSk7CmRpZmYgLXUgZ3NsLTEuMTUvcmFuZGlzdC9ndW1iZWwuYyBnc2wt c2FtL3JhbmRpc3QvZ3VtYmVsLmMKLS0tIGdzbC0xLjE1L3JhbmRpc3QvZ3Vt YmVsLmMJMjAxMC0xMi0yNiAxNzo1NzowOC4wMDAwMDAwMDAgKzAwMDAKKysr IGdzbC1zYW0vcmFuZGlzdC9ndW1iZWwuYwkyMDEyLTA2LTE1IDE2OjIyOjI5 LjAwMDAwMDAwMCArMDEwMApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUg PG1hdGguaD4KICNpbmNsdWRlIDxnc2wvZ3NsX3JuZy5oPgogI2luY2x1ZGUg PGdzbC9nc2xfcmFuZGlzdC5oPgorI2luY2x1ZGUgPGdzbC9nc2xfbWF0aC5o PgogCiAvKiBUaGUgVHlwZSBJIEd1bWJlbCBkaXN0cmlidXRpb24gaGFzIHRo ZSBmb3JtLAogCkBAIC00NSw3ICs0NiwxMyBAQAogZG91YmxlCiBnc2xfcmFu X2d1bWJlbDFfcGRmIChjb25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIGEs IGNvbnN0IGRvdWJsZSBiKQogewotICBkb3VibGUgcCA9IGEgKiBiICogIGV4 cCAoLShiICogZXhwKC1hICogeCkgKyBhICogeCkpOworICByZXR1cm4gZXhw IChnc2xfcmFuX2d1bWJlbDFfbG5wZGYgKHgsIGEsIGIpKTsKK30KKworZG91 YmxlCitnc2xfcmFuX2d1bWJlbDFfbG5wZGYgKGNvbnN0IGRvdWJsZSB4LCBj b25zdCBkb3VibGUgYSwgY29uc3QgZG91YmxlIGIpCit7CisgIGRvdWJsZSBw ID0gbG9nKGEpICsgbG9nKGIpIC0gKGIgKiBleHAoLWEgKiB4KSArIGEgKiB4 KTsKICAgcmV0dXJuIHA7CiB9CiAKQEAgLTYyLDEzICs2OSwxOSBAQAogZG91 YmxlCiBnc2xfcmFuX2d1bWJlbDJfcGRmIChjb25zdCBkb3VibGUgeCwgY29u c3QgZG91YmxlIGEsIGNvbnN0IGRvdWJsZSBiKQogeworICByZXR1cm4gZXhw IChnc2xfcmFuX2d1bWJlbDJfbG5wZGYgKHgsIGEsIGIpKTsKK30KKworZG91 YmxlCitnc2xfcmFuX2d1bWJlbDJfbG5wZGYgKGNvbnN0IGRvdWJsZSB4LCBj b25zdCBkb3VibGUgYSwgY29uc3QgZG91YmxlIGIpCit7CiAgIGlmICh4IDw9 IDApCiAgICAgewotICAgICAgcmV0dXJuIDAgOworICAgICAgcmV0dXJuIEdT TF9ORUdJTkYgOwogICAgIH0KICAgZWxzZQogICAgIHsKLSAgICAgIGRvdWJs ZSBwID0gYiAqIGEgKiAgcG93KHgsLShhKzEpKSAqIGV4cCAoLWIgKiBwb3co eCwgLWEpKTsKKyAgICAgIGRvdWJsZSBwID0gbG9nKGIpICsgbG9nKGEpIC0g bG9nKHgpICogKGErMSkgLSAoYiAqIHBvdyh4LCAtYSkpOwogICAgICAgcmV0 dXJuIHA7CiAgICAgfQogfQpkaWZmIC11IGdzbC0xLjE1L3JhbmRpc3QvaHlw ZXJnLmMgZ3NsLXNhbS9yYW5kaXN0L2h5cGVyZy5jCi0tLSBnc2wtMS4xNS9y YW5kaXN0L2h5cGVyZy5jCTIwMTAtMTItMjYgMTc6NTc6MDguMDAwMDAwMDAw ICswMDAwCisrKyBnc2wtc2FtL3JhbmRpc3QvaHlwZXJnLmMJMjAxMi0wNi0x NSAxNjoyMjozOS4wMDAwMDAwMDAgKzAxMDAKQEAgLTIyLDYgKzIyLDcgQEAK ICNpbmNsdWRlIDxnc2wvZ3NsX3JuZy5oPgogI2luY2x1ZGUgPGdzbC9nc2xf cmFuZGlzdC5oPgogI2luY2x1ZGUgPGdzbC9nc2xfc2ZfZ2FtbWEuaD4KKyNp bmNsdWRlIDxnc2wvZ3NsX21hdGguaD4KIAogLyogVGhlIGh5cGVyZ2VvbWV0 cmljIGRpc3RyaWJ1dGlvbiBoYXMgdGhlIGZvcm0sCiAKQEAgLTk2LDYgKzk3 LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5z aWduZWQgaW50IG4yLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgdCkKIHsKKyAgcmV0dXJuIGV4cCAoZ3NsX3Jhbl9oeXBl cmdlb21ldHJpY19sbnBkZiAoaywgbjEsIG4yLCB0KSk7Cit9CisKK2RvdWJs ZQorZ3NsX3Jhbl9oeXBlcmdlb21ldHJpY19sbnBkZiAoY29uc3QgdW5zaWdu ZWQgaW50IGssIAorCQkJICAgICAgY29uc3QgdW5zaWduZWQgaW50IG4xLCAK KwkJCSAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBuMiwgCisJCQkgICAgICB1 bnNpZ25lZCBpbnQgdCkKK3sKICAgaWYgKHQgPiBuMSArIG4yKQogICAgIHsK ICAgICAgIHQgPSBuMSArIG4yIDsKQEAgLTEwMywxMSArMTEzLDExIEBACiAK ICAgaWYgKGsgPiBuMSB8fCBrID4gdCkKICAgICB7Ci0gICAgICByZXR1cm4g MCA7CisgICAgICByZXR1cm4gR1NMX05FR0lORiA7CiAgICAgfQogICBlbHNl IGlmICh0ID4gbjIgJiYgayArIG4yIDwgdCApCiAgICAgewotICAgICAgcmV0 dXJuIDAgOworICAgICAgcmV0dXJuIEdTTF9ORUdJTkYgOwogICAgIH0KICAg ZWxzZSAKICAgICB7CkBAIC0xMTcsNyArMTI3LDcgQEAKICAgICAgIGRvdWJs ZSBjMiA9IGdzbF9zZl9sbmNob29zZShuMix0LWspOwogICAgICAgZG91Ymxl IGMzID0gZ3NsX3NmX2xuY2hvb3NlKG4xK24yLHQpOwogCi0gICAgICBwID0g ZXhwKGMxICsgYzIgLSBjMykgOworICAgICAgcCA9IGMxICsgYzIgLSBjMyA7 CiAKICAgICAgIHJldHVybiBwOwogICAgIH0KZGlmZiAtdSBnc2wtMS4xNS9y YW5kaXN0L2xhcGxhY2UuYyBnc2wtc2FtL3JhbmRpc3QvbGFwbGFjZS5jCi0t LSBnc2wtMS4xNS9yYW5kaXN0L2xhcGxhY2UuYwkyMDEwLTEyLTI2IDE3OjU3 OjA4LjAwMDAwMDAwMCArMDAwMAorKysgZ3NsLXNhbS9yYW5kaXN0L2xhcGxh Y2UuYwkyMDEyLTA2LTE1IDE2OjIyOjU5LjAwMDAwMDAwMCArMDEwMApAQCAt NTEsNyArNTEsMTQgQEAKIGRvdWJsZQogZ3NsX3Jhbl9sYXBsYWNlX3BkZiAo Y29uc3QgZG91YmxlIHgsIGNvbnN0IGRvdWJsZSBhKQogewotICBkb3VibGUg cCA9ICgxLygyKmEpKSAqIGV4cCAoLWZhYnMgKHgpL2EpOworICByZXR1cm4g ZXhwIChnc2xfcmFuX2xhcGxhY2VfbG5wZGYgKHgsIGEpKTsKK30KKworZG91 YmxlCitnc2xfcmFuX2xhcGxhY2VfbG5wZGYgKGNvbnN0IGRvdWJsZSB4LCBj b25zdCBkb3VibGUgYSkKK3sKKyAgZG91YmxlIHAgPSAtbG9nKDIqYSkgLSAo ZmFicyAoeCkvYSk7CisKICAgcmV0dXJuIHA7CiB9CiAKZGlmZiAtdSBnc2wt MS4xNS9yYW5kaXN0L2xvZ2FyaXRobWljLmMgZ3NsLXNhbS9yYW5kaXN0L2xv Z2FyaXRobWljLmMKLS0tIGdzbC0xLjE1L3JhbmRpc3QvbG9nYXJpdGhtaWMu YwkyMDEwLTEyLTI2IDE3OjU3OjA4LjAwMDAwMDAwMCArMDAwMAorKysgZ3Ns LXNhbS9yYW5kaXN0L2xvZ2FyaXRobWljLmMJMjAxMi0wNi0xNSAxNjoyMzox OC4wMDAwMDAwMDAgKzAxMDAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRl IDxtYXRoLmg+CiAjaW5jbHVkZSA8Z3NsL2dzbF9ybmcuaD4KICNpbmNsdWRl IDxnc2wvZ3NsX3JhbmRpc3QuaD4KKyNpbmNsdWRlIDxnc2wvZ3NsX21hdGgu aD4KIAogLyogTG9nYXJpdGhtaWMgZGlzdHJpYnV0aW9uIAogCkBAIC02NCwx MyArNjUsMTkgQEAKIGRvdWJsZQogZ3NsX3Jhbl9sb2dhcml0aG1pY19wZGYg KGNvbnN0IHVuc2lnbmVkIGludCBrLCBjb25zdCBkb3VibGUgcCkKIHsKKyAg cmV0dXJuIGV4cCAoZ3NsX3Jhbl9sb2dhcml0aG1pY19sbnBkZiAoaywgcCkp OworfQorCitkb3VibGUKK2dzbF9yYW5fbG9nYXJpdGhtaWNfbG5wZGYgKGNv bnN0IHVuc2lnbmVkIGludCBrLCBjb25zdCBkb3VibGUgcCkKK3sKICAgaWYg KGsgPT0gMCkKICAgICB7Ci0gICAgICByZXR1cm4gMCA7CisgICAgICByZXR1 cm4gR1NMX05FR0lORiA7CiAgICAgfQogICBlbHNlIAogICAgIHsKLSAgICAg IGRvdWJsZSBQID0gcG93KHAsIChkb3VibGUpaykgLyAoZG91YmxlKSBrIC8g bG9nKDEvKDEtcCkpIDsKKyAgICAgIGRvdWJsZSBQID0gbG9nKHApICogayAt IGxvZyhrKSAtIGxvZygtbG9nMXAoLXApKSA7CiAgICAgICByZXR1cm4gUDsK ICAgICB9CiB9CmRpZmYgLXUgZ3NsLTEuMTUvcmFuZGlzdC9sb2dpc3RpYy5j IGdzbC1zYW0vcmFuZGlzdC9sb2dpc3RpYy5jCi0tLSBnc2wtMS4xNS9yYW5k aXN0L2xvZ2lzdGljLmMJMjAxMC0xMi0yNiAxNzo1NzowOC4wMDAwMDAwMDAg KzAwMDAKKysrIGdzbC1zYW0vcmFuZGlzdC9sb2dpc3RpYy5jCTIwMTItMDYt MTUgMTQ6MjA6MDMuMDAwMDAwMDAwICswMTAwCkBAIC00Nyw3ICs0NywxMyBA QAogZG91YmxlCiBnc2xfcmFuX2xvZ2lzdGljX3BkZiAoY29uc3QgZG91Ymxl IHgsIGNvbnN0IGRvdWJsZSBhKQogewotICBkb3VibGUgdSA9IGV4cCAoLWZh YnMoeCkvYSk7Ci0gIGRvdWJsZSBwID0gdSAvIChmYWJzKGEpICogKDEgKyB1 KSAqICgxICsgdSkpOworICByZXR1cm4gZXhwIChnc2xfcmFuX2xvZ2lzdGlj X2xucGRmICh4LCBhKSk7Cit9CisKK2RvdWJsZQorZ3NsX3Jhbl9sb2dpc3Rp Y19sbnBkZiAoY29uc3QgZG91YmxlIHgsIGNvbnN0IGRvdWJsZSBhKQorewor ICBkb3VibGUgdSA9IC1mYWJzKHgpL2E7CisgIGRvdWJsZSBwID0gdSAtIChs b2coZmFicyhhKSkgKyBsb2cxcCAoZXhwICh1KSkgKiAyKTsKICAgcmV0dXJu IHA7CiB9CmRpZmYgLXUgZ3NsLTEuMTUvcmFuZGlzdC9sb2dub3JtYWwuYyBn c2wtc2FtL3JhbmRpc3QvbG9nbm9ybWFsLmMKLS0tIGdzbC0xLjE1L3JhbmRp c3QvbG9nbm9ybWFsLmMJMjAxMC0xMi0yNiAxNzo1NzowOC4wMDAwMDAwMDAg KzAwMDAKKysrIGdzbC1zYW0vcmFuZGlzdC9sb2dub3JtYWwuYwkyMDEyLTA2 LTE1IDE2OjE0OjUzLjAwMDAwMDAwMCArMDEwMApAQCAtNTcsMTQgKzU3LDIw IEBACiBkb3VibGUKIGdzbF9yYW5fbG9nbm9ybWFsX3BkZiAoY29uc3QgZG91 YmxlIHgsIGNvbnN0IGRvdWJsZSB6ZXRhLCBjb25zdCBkb3VibGUgc2lnbWEp CiB7CisgIHJldHVybiBleHAgKGdzbF9yYW5fbG9nbm9ybWFsX2xucGRmICh4 LCB6ZXRhLCBzaWdtYSkpOworfQorCitkb3VibGUKK2dzbF9yYW5fbG9nbm9y bWFsX2xucGRmIChjb25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIHpldGEs IGNvbnN0IGRvdWJsZSBzaWdtYSkKK3sKICAgaWYgKHggPD0gMCkKICAgICB7 Ci0gICAgICByZXR1cm4gMCA7CisgICAgICByZXR1cm4gR1NMX05FR0lORiA7 CiAgICAgfQogICBlbHNlCiAgICAgewogICAgICAgZG91YmxlIHUgPSAobG9n ICh4KSAtIHpldGEpL3NpZ21hOwotICAgICAgZG91YmxlIHAgPSAxIC8gKHgg KiBmYWJzKHNpZ21hKSAqIHNxcnQgKDIgKiBNX1BJKSkgKiBleHAgKC0odSAq IHUpIC8yKTsKKyAgICAgIGRvdWJsZSBwID0gLWxvZyh4ICogZmFicyhzaWdt YSkgKiBzcXJ0ICgyICogTV9QSSkpIC0gKHUgKiB1KSAvIDI7CiAgICAgICBy ZXR1cm4gcDsKICAgICB9CiB9CmRpZmYgLXUgZ3NsLTEuMTUvcmFuZGlzdC9u Ymlub21pYWwuYyBnc2wtc2FtL3JhbmRpc3QvbmJpbm9taWFsLmMKLS0tIGdz bC0xLjE1L3JhbmRpc3QvbmJpbm9taWFsLmMJMjAxMC0xMi0yNiAxNzo1Nzow OC4wMDAwMDAwMDAgKzAwMDAKKysrIGdzbC1zYW0vcmFuZGlzdC9uYmlub21p YWwuYwkyMDEyLTA2LTE1IDE0OjQ2OjMyLjAwMDAwMDAwMCArMDEwMApAQCAt NDIsMTMgKzQyLDE5IEBACiBkb3VibGUKIGdzbF9yYW5fbmVnYXRpdmVfYmlu b21pYWxfcGRmIChjb25zdCB1bnNpZ25lZCBpbnQgaywgY29uc3QgZG91Ymxl IHAsIGRvdWJsZSBuKQogeworICByZXR1cm4gZXhwKCBnc2xfcmFuX25lZ2F0 aXZlX2Jpbm9taWFsX2xucGRmIChrLCBwLCBuKSk7Cit9CisKK2RvdWJsZQor Z3NsX3Jhbl9uZWdhdGl2ZV9iaW5vbWlhbF9sbnBkZiAoY29uc3QgdW5zaWdu ZWQgaW50IGssIGNvbnN0IGRvdWJsZSBwLCBkb3VibGUgbikKK3sKICAgZG91 YmxlIFA7CiAKICAgZG91YmxlIGYgPSBnc2xfc2ZfbG5nYW1tYSAoayArIG4p IDsKICAgZG91YmxlIGEgPSBnc2xfc2ZfbG5nYW1tYSAobikgOwogICBkb3Vi bGUgYiA9IGdzbF9zZl9sbmdhbW1hIChrICsgMS4wKSA7CiAKLSAgUCA9IGV4 cChmLWEtYikgKiBwb3cgKHAsIG4pICogcG93ICgxIC0gcCwgKGRvdWJsZSlr KTsKKyAgUCA9IChmLWEtYikgKyBsb2cgKHApICogbiArIGxvZzFwICgtcCkg KiBrOwogICAKICAgcmV0dXJuIFA7CiB9CmRpZmYgLXUgZ3NsLTEuMTUvcmFu ZGlzdC9wYXJldG8uYyBnc2wtc2FtL3JhbmRpc3QvcGFyZXRvLmMKLS0tIGdz bC0xLjE1L3JhbmRpc3QvcGFyZXRvLmMJMjAxMC0xMi0yNiAxNzo1NzowOC4w MDAwMDAwMDAgKzAwMDAKKysrIGdzbC1zYW0vcmFuZGlzdC9wYXJldG8uYwky MDEyLTA2LTE1IDE2OjIzOjI2LjAwMDAwMDAwMCArMDEwMApAQCAtMjEsNiAr MjEsNyBAQAogI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDxnc2wvZ3Ns X3JuZy5oPgogI2luY2x1ZGUgPGdzbC9nc2xfcmFuZGlzdC5oPgorI2luY2x1 ZGUgPGdzbC9nc2xfbWF0aC5oPgogCiAvKiBUaGUgUGFyZXRvIGRpc3RyaWJ1 dGlvbiBoYXMgdGhlIGZvcm0sCiAKQEAgLTQxLDE0ICs0MiwyMSBAQAogZG91 YmxlCiBnc2xfcmFuX3BhcmV0b19wZGYgKGNvbnN0IGRvdWJsZSB4LCBjb25z dCBkb3VibGUgYSwgY29uc3QgZG91YmxlIGIpCiB7CisgIHJldHVybiBleHAg KGdzbF9yYW5fcGFyZXRvX2xucGRmICh4LCBhLCBiKSk7Cit9CisKK2RvdWJs ZQorZ3NsX3Jhbl9wYXJldG9fbG5wZGYgKGNvbnN0IGRvdWJsZSB4LCBjb25z dCBkb3VibGUgYSwgY29uc3QgZG91YmxlIGIpCit7CiAgIGlmICh4ID49IGIp CiAgICAgewotICAgICAgZG91YmxlIHAgPSAoYS9iKSAvIHBvdyAoeC9iLCBh ICsgMSk7CisgICAgICBkb3VibGUgbGIgPSBsb2coYik7CisgICAgICBkb3Vi bGUgcCA9IChsb2coYSkgLSBsYikgLSAobG9nICh4KSAtIGxiKSAqIChhICsg MSk7CiAgICAgICByZXR1cm4gcDsKICAgICB9CiAgIGVsc2UKICAgICB7Ci0g ICAgICByZXR1cm4gMDsKKyAgICAgIHJldHVybiBHU0xfTkVHSU5GOwogICAg IH0KIH0KIApkaWZmIC11IGdzbC0xLjE1L3JhbmRpc3QvcGFzY2FsLmMgZ3Ns LXNhbS9yYW5kaXN0L3Bhc2NhbC5jCi0tLSBnc2wtMS4xNS9yYW5kaXN0L3Bh c2NhbC5jCTIwMTAtMTItMjYgMTc6NTc6MDguMDAwMDAwMDAwICswMDAwCisr KyBnc2wtc2FtL3JhbmRpc3QvcGFzY2FsLmMJMjAxMi0wNi0xNSAxNDo0OToy Ny4wMDAwMDAwMDAgKzAxMDAKQEAgLTQ1LDYgKzQ1LDExIEBACiBkb3VibGUK IGdzbF9yYW5fcGFzY2FsX3BkZiAoY29uc3QgdW5zaWduZWQgaW50IGssIGNv bnN0IGRvdWJsZSBwLCB1bnNpZ25lZCBpbnQgbikKIHsKLSAgZG91YmxlIFAg PSBnc2xfcmFuX25lZ2F0aXZlX2Jpbm9taWFsX3BkZiAoaywgcCwgKGRvdWJs ZSkgbik7Ci0gIHJldHVybiBQOworICByZXR1cm4gZXhwIChnc2xfcmFuX25l Z2F0aXZlX2Jpbm9taWFsX2xucGRmIChrLCBwLCAoZG91YmxlKSBuKSk7Cit9 CisKK2RvdWJsZQorZ3NsX3Jhbl9wYXNjYWxfbG5wZGYgKGNvbnN0IHVuc2ln bmVkIGludCBrLCBjb25zdCBkb3VibGUgcCwgdW5zaWduZWQgaW50IG4pCit7 CisgIHJldHVybiBnc2xfcmFuX25lZ2F0aXZlX2Jpbm9taWFsX2xucGRmIChr LCBwLCAoZG91YmxlKSBuKTsKIH0KZGlmZiAtdSBnc2wtMS4xNS9yYW5kaXN0 L3BvaXNzb24uYyBnc2wtc2FtL3JhbmRpc3QvcG9pc3Nvbi5jCi0tLSBnc2wt MS4xNS9yYW5kaXN0L3BvaXNzb24uYwkyMDEwLTEyLTI2IDE3OjU3OjA4LjAw MDAwMDAwMCArMDAwMAorKysgZ3NsLXNhbS9yYW5kaXN0L3BvaXNzb24uYwky MDEyLTA2LTE1IDE0OjU3OjI2LjAwMDAwMDAwMCArMDEwMApAQCAtODUsOSAr ODUsMTUgQEAKIGRvdWJsZQogZ3NsX3Jhbl9wb2lzc29uX3BkZiAoY29uc3Qg dW5zaWduZWQgaW50IGssIGNvbnN0IGRvdWJsZSBtdSkKIHsKKyAgcmV0dXJu IGV4cChnc2xfcmFuX3BvaXNzb25fbG5wZGYgKGssIG11KSk7Cit9CisKK2Rv dWJsZQorZ3NsX3Jhbl9wb2lzc29uX2xucGRmIChjb25zdCB1bnNpZ25lZCBp bnQgaywgY29uc3QgZG91YmxlIG11KQorewogICBkb3VibGUgcDsKICAgZG91 YmxlIGxmID0gZ3NsX3NmX2xuZmFjdCAoayk7IAogCi0gIHAgPSBleHAgKGxv ZyAobXUpICogayAtIGxmIC0gbXUpOworICBwID0gbG9nIChtdSkgKiBrIC0g bGYgLSBtdTsKICAgcmV0dXJuIHA7CiB9CmRpZmYgLXUgZ3NsLTEuMTUvcmFu ZGlzdC9yYXlsZWlnaC5jIGdzbC1zYW0vcmFuZGlzdC9yYXlsZWlnaC5jCi0t LSBnc2wtMS4xNS9yYW5kaXN0L3JheWxlaWdoLmMJMjAxMC0xMi0yNiAxNzo1 NzowOC4wMDAwMDAwMDAgKzAwMDAKKysrIGdzbC1zYW0vcmFuZGlzdC9yYXls ZWlnaC5jCTIwMTItMDYtMTUgMTY6MjM6MzQuMDAwMDAwMDAwICswMTAwCkBA IC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUg PGdzbC9nc2xfcm5nLmg+CiAjaW5jbHVkZSA8Z3NsL2dzbF9yYW5kaXN0Lmg+ CisjaW5jbHVkZSA8Z3NsL2dzbF9tYXRoLmg+CiAKIC8qIFRoZSBSYXlsZWln aCBkaXN0cmlidXRpb24gaGFzIHRoZSBmb3JtCiAKQEAgLTM5LDE0ICs0MCwy MCBAQAogZG91YmxlCiBnc2xfcmFuX3JheWxlaWdoX3BkZiAoY29uc3QgZG91 YmxlIHgsIGNvbnN0IGRvdWJsZSBzaWdtYSkKIHsKKyAgcmV0dXJuIGV4cCAo Z3NsX3Jhbl9yYXlsZWlnaF9sbnBkZiAoeCwgc2lnbWEpKTsKK30KKworZG91 YmxlCitnc2xfcmFuX3JheWxlaWdoX2xucGRmIChjb25zdCBkb3VibGUgeCwg Y29uc3QgZG91YmxlIHNpZ21hKQorewogICBpZiAoeCA8IDApCiAgICAgewot ICAgICAgcmV0dXJuIDAgOworICAgICAgcmV0dXJuIEdTTF9ORUdJTkYgOwog ICAgIH0KICAgZWxzZQogICAgIHsKICAgICAgIGRvdWJsZSB1ID0geCAvIHNp Z21hIDsKLSAgICAgIGRvdWJsZSBwID0gKHUgLyBzaWdtYSkgKiBleHAoLXUg KiB1IC8gMi4wKSA7CisgICAgICBkb3VibGUgcCA9IGxvZyh1IC8gc2lnbWEp IC0gKHUgKiB1IC8gMi4wKSA7CiAgICAgICAKICAgICAgIHJldHVybiBwOwog ICAgIH0KQEAgLTY5LDE3ICs3NiwyMyBAQAogZG91YmxlCiBnc2xfcmFuX3Jh eWxlaWdoX3RhaWxfcGRmIChjb25zdCBkb3VibGUgeCwgY29uc3QgZG91Ymxl IGEsIGNvbnN0IGRvdWJsZSBzaWdtYSkKIHsKKyAgcmV0dXJuIGV4cCAoZ3Ns X3Jhbl9yYXlsZWlnaF90YWlsX2xucGRmICh4LCBhLCBzaWdtYSkpOworfQor Citkb3VibGUKK2dzbF9yYW5fcmF5bGVpZ2hfdGFpbF9sbnBkZiAoY29uc3Qg ZG91YmxlIHgsIGNvbnN0IGRvdWJsZSBhLCBjb25zdCBkb3VibGUgc2lnbWEp Cit7CiAgIGlmICh4IDwgYSkKICAgICB7Ci0gICAgICByZXR1cm4gMCA7Cisg ICAgICByZXR1cm4gR1NMX05FR0lORiA7CiAgICAgfQogICBlbHNlCiAgICAg ewogICAgICAgZG91YmxlIHUgPSB4IC8gc2lnbWEgOwogICAgICAgZG91Ymxl IHYgPSBhIC8gc2lnbWEgOwogCi0gICAgICBkb3VibGUgcCA9ICh1IC8gc2ln bWEpICogZXhwKCh2ICsgdSkgKiAodiAtIHUpIC8gMi4wKSA7Ci0gICAgICAK KyAgICAgIGRvdWJsZSBwID0gbG9nKHUgLyBzaWdtYSkgKyAoKHYgKyB1KSAq ICh2IC0gdSkgLyAyLjApIDsKKwogICAgICAgcmV0dXJuIHA7CiAgICAgfQog fQpkaWZmIC11IGdzbC0xLjE1L3JhbmRpc3QvdGRpc3QuYyBnc2wtc2FtL3Jh bmRpc3QvdGRpc3QuYwotLS0gZ3NsLTEuMTUvcmFuZGlzdC90ZGlzdC5jCTIw MTAtMTItMjYgMTc6NTc6MDguMDAwMDAwMDAwICswMDAwCisrKyBnc2wtc2Ft L3JhbmRpc3QvdGRpc3QuYwkyMDEyLTA2LTE1IDE3OjE4OjAwLjAwMDAwMDAw MCArMDEwMApAQCAtNjcsMTMgKzY3LDIwIEBACiBkb3VibGUKIGdzbF9yYW5f dGRpc3RfcGRmIChjb25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIG51KQog eworICByZXR1cm4gZXhwIChnc2xfcmFuX3RkaXN0X2xucGRmICh4LCBudSkp OworfQorCitkb3VibGUKK2dzbF9yYW5fdGRpc3RfbG5wZGYgKGNvbnN0IGRv dWJsZSB4LCBjb25zdCBkb3VibGUgbnUpCit7CiAgIGRvdWJsZSBwOwogCiAg IGRvdWJsZSBsZzEgPSBnc2xfc2ZfbG5nYW1tYSAobnUgLyAyKTsKICAgZG91 YmxlIGxnMiA9IGdzbF9zZl9sbmdhbW1hICgobnUgKyAxKSAvIDIpOworICAK KyAgcCA9ICgoKGxnMiAtIGxnMSkgLSBsb2coc3FydCAoTV9QSSAqIG51KSkp CisgICAgICAgKyBsb2cxcCAoeCAqIHggLyBudSkgKiAoKC0xIC0gbnUpIC8g MikpOwogCi0gIHAgPSAoKGV4cCAobGcyIC0gbGcxKSAvIHNxcnQgKE1fUEkg KiBudSkpIAotICAgICAgICogcG93ICgoMSArIHggKiB4IC8gbnUpLCAtKG51 ICsgMSkgLyAyKSk7CiAgIHJldHVybiBwOwogfQogCmRpZmYgLXUgZ3NsLTEu MTUvcmFuZGlzdC93ZWlidWxsLmMgZ3NsLXNhbS9yYW5kaXN0L3dlaWJ1bGwu YwotLS0gZ3NsLTEuMTUvcmFuZGlzdC93ZWlidWxsLmMJMjAxMC0xMi0yNiAx Nzo1NzowOC4wMDAwMDAwMDAgKzAwMDAKKysrIGdzbC1zYW0vcmFuZGlzdC93 ZWlidWxsLmMJMjAxMi0wNi0xNSAxNjoyMzo0Ni4wMDAwMDAwMDAgKzAxMDAK QEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVk ZSA8Z3NsL2dzbF9ybmcuaD4KICNpbmNsdWRlIDxnc2wvZ3NsX3JhbmRpc3Qu aD4KKyNpbmNsdWRlIDxnc2wvZ3NsX21hdGguaD4KIAogLyogVGhlIFdlaWJ1 bGwgZGlzdHJpYnV0aW9uIGhhcyB0aGUgZm9ybSwKIApAQCAtNDEsMjQgKzQy LDMwIEBACiBkb3VibGUKIGdzbF9yYW5fd2VpYnVsbF9wZGYgKGNvbnN0IGRv dWJsZSB4LCBjb25zdCBkb3VibGUgYSwgY29uc3QgZG91YmxlIGIpCiB7Cisg IHJldHVybiBleHAgKGdzbF9yYW5fd2VpYnVsbF9sbnBkZiAoeCwgYSwgYikp OworfQorCitkb3VibGUKK2dzbF9yYW5fd2VpYnVsbF9sbnBkZiAoY29uc3Qg ZG91YmxlIHgsIGNvbnN0IGRvdWJsZSBhLCBjb25zdCBkb3VibGUgYikKK3sK ICAgaWYgKHggPCAwKQogICAgIHsKLSAgICAgIHJldHVybiAwIDsKKyAgICAg IHJldHVybiBHU0xfTkVHSU5GIDsKICAgICB9CiAgIGVsc2UgaWYgKHggPT0g MCkKICAgICB7CiAgICAgICBpZiAoYiA9PSAxKQotICAgICAgICByZXR1cm4g MS9hIDsKKyAgICAgICAgcmV0dXJuIC1sb2coYSkgOwogICAgICAgZWxzZQot ICAgICAgICByZXR1cm4gMCA7CisgICAgICAgIHJldHVybiBHU0xfTkVHSU5G IDsKICAgICB9CiAgIGVsc2UgaWYgKGIgPT0gMSkKICAgICB7Ci0gICAgICBy ZXR1cm4gZXhwKC14L2EpL2EgOworICAgICAgcmV0dXJuICgteC9hKSAtIGxv ZyhhKSA7CiAgICAgfQogICBlbHNlCiAgICAgewotICAgICAgZG91YmxlIHAg PSAoYi9hKSAqIGV4cCAoLXBvdyAoeC9hLCBiKSArIChiIC0gMSkgKiBsb2cg KHgvYSkpOworICAgICAgZG91YmxlIHAgPSBsb2coYi9hKSArICgtcG93ICh4 L2EsIGIpICsgKGIgLSAxKSAqIGxvZyAoeC9hKSk7CiAgICAgICByZXR1cm4g cDsKICAgICB9CiB9Cg== --e89a8f2344753195ce04c468f7de--