From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: martin rudalics Newsgroups: gmane.emacs.devel Subject: Resize mini windows Date: Thu, 07 Mar 2019 14:46:12 +0100 Message-ID: <5C8120A4.5030005@gmx.at> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------030100060603090909030806" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="256484"; mail-complaints-to="usenet@blaine.gmane.org" To: emacs-devel Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Mar 07 14:47:22 2019 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1h1tMn-0014ZL-NF for ged-emacs-devel@m.gmane.org; Thu, 07 Mar 2019 14:47:22 +0100 Original-Received: from localhost ([127.0.0.1]:52022 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h1tMm-0001ud-LP for ged-emacs-devel@m.gmane.org; Thu, 07 Mar 2019 08:47:20 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:35689) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h1tLt-0001uC-Jc for emacs-devel@gnu.org; Thu, 07 Mar 2019 08:46:27 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1h1tLr-0003sA-Jj for emacs-devel@gnu.org; Thu, 07 Mar 2019 08:46:25 -0500 Original-Received: from mout.gmx.net ([212.227.15.18]:51167) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1h1tLr-0003qC-5s for emacs-devel@gnu.org; Thu, 07 Mar 2019 08:46:23 -0500 Original-Received: from [192.168.1.101] ([212.95.5.145]) by mail.gmx.com (mrgmx002 [212.227.17.190]) with ESMTPSA (Nemesis) id 0MEnX8-1hHpmY1AGw-00G1XO for ; Thu, 07 Mar 2019 14:46:20 +0100 X-Provags-ID: V03:K1:6EPB4SKaDE7bOKMnepIUp+8jRcC31d5qQz/OPgEUugr/uJWHEmf WPUvp/QNqM8xz6AypiiZfFlweWzM9Q6AT+DSHtd6Wb4YsAJ9u7p931MFN7i59PdkBn3bohm j1/FVCGOHznmk2i1fiUtMCRH0WT45qS4o8cadkpiPJ6LUF7d5RpkYlWbLlNvN5LzjWxI6ku thc5MQ9aWBStVO+qrQdLQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:JmgDN2GhjbQ=:82f3DVj7OIzHwQbKHIHSHZ Z/Xssmz6I0Cy3bSisArVeKzliAPk9jNKqSpDNXmGLZKnbu4SModAyy+PEEjayZaeENMtoMvKF qk6HmMthw4Hi9u70IWpjDP4Ox7bcg6Gz4PEaE4cAnsn7jmaIDk+HKteAQrpODroFqLxzuFExs gjXjLu25ZyxK/XwFmugXyKrxfrXT0KtdZkPw91FBedyHdvXrlnvjukcsIMO5sdttQD+n/AJdy u2JfGZrVqYQIqCH+Ea0TQAS5UB2xjd+zkp2ysk4apfUryvLCU0c7WpL2BfWjLaORDwxLNdysa T0L46MTyj0SKpdYOM3UqHgpyhWz7LQJK+xDbqd9F8gJMOe05mGgQWj/92zYynh1jzj8GJLtj5 MRJqhqfOgps214YcU2O50ol2TVa24fsZ2pkzAbpsihaSm36FX6FH0xEY1HMUV6JNU0GU+dShA jXuNgERo/1fFLbkN9M+vSH9t5QCMqv2/EVbULHvuw6xdrfNbqmGHXOvJ7jUmhLSnLdq8zTIzv S+wfPKjy5k+3TQx2qCEVmQqUjb0uTqZeuHQs9dZfi5Vss72vVej05//zCukdYUnfQuMFvfauv KszhvkDBRldnVCxQ7RiIHWDA4UXsEwmczLkSYHzBPBVZ6oKj/tfsFiY1GZtHM/EYXG3aD7gXL oEJUfCDwJt8qeIemiK6iAn1SnjFYbmw+brslk3mCU0aAJJCkNWFbwLIEs/YFWHmtecIO5ePbM Hloexct5gMXMLRjLCOU4+6Z6Q7Sw4YHT35nRApE31xLvVAnzd01pfjLHnqvg6U6Cz3rAAVFW X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 212.227.15.18 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:233885 Archived-At: This is a multi-part message in MIME format. --------------030100060603090909030806 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit The attached patch does the following: - Move some of the minibuffer resize code from xdisp.c to window.c and provide a common subroutine for automatic and manual resizing there. - Remove the PIXELWISE argument from some of these functions since resizing minibuffer windows never rounds. - Provide a new option called 'resize-mini-frames' which allows to automatically resize minibuffer-only frames according to the size of text they display. If there are no objections, I intend to install in a few days. Thanks for your attention, martin --------------030100060603090909030806 Content-Type: text/plain; charset=windows-1252; name="resize_mini_windows.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="resize_mini_windows.diff" ZGlmZiAtLWdpdCBhL2xpc3AvY3VzLXN0YXJ0LmVsIGIvbGlzcC9jdXMtc3RhcnQuZWwKaW5k ZXggNDRjZTI5Mi4uOWI5YTQ2YiAxMDA2NDQKLS0tIGEvbGlzcC9jdXMtc3RhcnQuZWwKKysr IGIvbGlzcC9jdXMtc3RhcnQuZWwKQEAgLTMxNCw3ICszMTQsMTMgQEAgbWluaWJ1ZmZlci1w cm9tcHQtcHJvcGVydGllcy0tc2V0dGVyCiAJCQkJCSAgICAob3RoZXIgOnRhZyAiaGlkZGVu IGJ5IGtleXByZXNzIiAxKSkKIAkJCSAgICAgICIyMi4xIikKIAkgICAgIChtYWtlLXBvaW50 ZXItaW52aXNpYmxlIG1vdXNlIGJvb2xlYW4gIjIzLjIiKQotCSAgICAgKG1lbnUtYmFyLW1v ZGUgZnJhbWVzIGJvb2xlYW4gbmlsCisgICAgICAgICAgICAgKHJlc2l6ZS1taW5pLWZyYW1l cworICAgICAgICAgICAgICBmcmFtZXMgKGNob2ljZQorICAgICAgICAgICAgICAgICAgICAg IChjb25zdCA6dGFnICJOZXZlciIgbmlsKQorICAgICAgICAgICAgICAgICAgICAgIChjb25z dCA6dGFnICJVc2UgJ2ZpdC1mcmFtZS10by1idWZmZXInIiB0KQorICAgICAgICAgICAgICAg ICAgICAgIChmdW5jdGlvbiA6dGFnICJVc2VyLWRlZmluZWQgZnVuY3Rpb24iKSkKKyAgICAg ICAgICAgICAgICIyNy4xIikKKyAgICAgICAgICAgICAobWVudS1iYXItbW9kZSBmcmFtZXMg Ym9vbGVhbiBuaWwKIAkJCSAgICA7OyBGSVhNRT8KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA7OyA6aW5pdGlhbGl6ZSBjdXN0b20taW5pdGlhbGl6ZS1kZWZhdWx0CiAJCQkgICAg OnNldCBjdXN0b20tc2V0LW1pbm9yLW1vZGUpCmRpZmYgLS1naXQgYS9saXNwL3dpbmRvdy5l bCBiL2xpc3Avd2luZG93LmVsCmluZGV4IDM5ZjRmYTEuLjkwYTJkMGYgMTAwNjQ0Ci0tLSBh L2xpc3Avd2luZG93LmVsCisrKyBiL2xpc3Avd2luZG93LmVsCkBAIC0yNzUzLDcgKzI3NTMs NyBAQCB3aW5kb3ctLXJlc2l6ZS1taW5pLXdpbmRvdwogICAgICAgOzsgU2FuaXRpemUgREVM VEEuCiAgICAgICAoY29uZAogICAgICAgICgoPD0gKCsgaGVpZ2h0IGRlbHRhKSAwKQotCShz ZXRxIGRlbHRhICgtIChmcmFtZS1jaGFyLWhlaWdodCAod2luZG93LWZyYW1lIHdpbmRvdykp IGhlaWdodCkpKQorCShzZXRxIGRlbHRhICgtIChmcmFtZS1jaGFyLWhlaWdodCBmcmFtZSkg aGVpZ2h0KSkpCiAgICAgICAgKCg+IGRlbHRhIG1pbi1kZWx0YSkKIAkoc2V0cSBkZWx0YSBt aW4tZGVsdGEpKSkKIApAQCAtMzM4MSw2ICszMzgxLDEyIEBAIHdpbmRvdy0tcmVzaXplLXJv b3Qtd2luZG93LXZlcnRpY2FsbHkKIAkgcGl4ZWwtZGVsdGEKICAgICAgICAoLyBwaXhlbC1k ZWx0YSAoZnJhbWUtY2hhci1oZWlnaHQgZnJhbWUpKSkpKQogCisoZGVmdW4gd2luZG93LS1y ZXNpemUtbWluaS1mcmFtZSAoZnJhbWUpCisgICJSZXNpemUgbWluaWJ1ZmZlci1vbmx5IGZy YW1lIEZSQU1FLiIKKyAgKGlmIChmdW5jdGlvbnAgcmVzaXplLW1pbmktZnJhbWVzKQorICAg ICAgKGZ1bmNhbGwgcmVzaXplLW1pbmktZnJhbWVzIGZyYW1lKQorICAgIChmaXQtZnJhbWUt dG8tYnVmZmVyIGZyYW1lIG5pbCBuaWwgbmlsIG5pbCAndmVydGljYWxseSkpKQorCiAoZGVm dW4gd2luZG93LS1zYW5pdGl6ZS13aW5kb3ctc2l6ZXMgKGhvcml6b250YWwpCiAgICJBc3Nl cnQgdGhhdCBhbGwgd2luZG93cyBvbiBzZWxlY3RlZCBmcmFtZSBhcmUgbGFyZ2UgZW5vdWdo LgogSWYgbmVjZXNzYXJ5IGFuZCBwb3NzaWJsZSwgbWFrZSBzdXJlIHRoYXQgZXZlcnkgd2lu ZG93IG9uIGZyYW1lCmRpZmYgLS1naXQgYS9zcmMvZnJhbWUuYyBiL3NyYy9mcmFtZS5jCmlu ZGV4IDEyMTk1NjkuLmExOTRjNDggMTAwNjQ0Ci0tLSBhL3NyYy9mcmFtZS5jCisrKyBiL3Ny Yy9mcmFtZS5jCkBAIC02MDQ1LDYgKzYwNDUsMTkgQEAgZWl0aGVyIGN1c3RvbWl6ZSBpdCAo c2VlIHRoZSBpbmZvIG5vZGUgYEVhc3kgQ3VzdG9taXphdGlvbicpCiAKIFRoaXMgdmFyaWFi bGUgaXMgbG9jYWwgdG8gdGhlIGN1cnJlbnQgdGVybWluYWwgYW5kIGNhbm5vdCBiZSBidWZm ZXItbG9jYWwuICAqLyk7CiAKKyAgREVGVkFSX0xJU1AgKCJyZXNpemUtbWluaS1mcmFtZXMi LCByZXNpemVfbWluaV9mcmFtZXMsCisgICAgZG9jOiAvKiBOb24tbmlsIG1lYW5zIHJlc2l6 ZSBtaW5pYnVmZmVyLW9ubHkgZnJhbWVzIGF1dG9tYXRpY2FsbHkuCitJZiB0aGlzIGlzIG5p bCwgZG8gbm90IHJlc2l6ZSBtaW5pYnVmZmVyLW9ubHkgZnJhbWVzIGF1dG9tYXRpY2FsbHku CisKK0lmIHRoaXMgaXMgYSBmdW5jdGlvbiwgY2FsbCB0aGF0IGZ1bmN0aW9uIHdpdGggdGhl IG1pbmlidWZmZXItb25seQorZnJhbWUgdGhhdCBzaGFsbCBiZSByZXNpemVkIGFzIHNvbGUg YXJndW1lbnQuICBUaGUgYnVmZmVyIG9mIHRoZSByb290Cit3aW5kb3cgb2YgdGhhdCBmcmFt ZSBpcyB0aGUgYnVmZmVyIHdob3NlIHRleHQgd2lsbCBiZSBldmVudHVhbGx5IHNob3duCitp biB0aGUgbWluaWJ1ZmZlciB3aW5kb3cuCisKK0FueSBvdGhlciBub24tbmlsIHZhbHVlIG1l YW5zIHRvIHJlc2l6ZSBtaW5pYnVmZmVyLW9ubHkgZnJhbWVzIGJ5CitjYWxsaW5nIGBmaXQt ZnJhbWUtdG8tYnVmZmVyJyB3aXRoIHRoZSBPTkxZIGFyZ3VtZW50ICd2ZXJ0aWNhbGx5Jy4g ICovKTsKKyAgcmVzaXplX21pbmlfZnJhbWVzID0gUW5pbDsKKwogICBERUZWQVJfTElTUCAo ImZvY3VzLWZvbGxvd3MtbW91c2UiLCBmb2N1c19mb2xsb3dzX21vdXNlLAogCSAgICAgICBk b2M6IC8qIE5vbi1uaWwgaWYgd2luZG93IHN5c3RlbSBjaGFuZ2VzIGZvY3VzIHdoZW4geW91 IG1vdmUgdGhlIG1vdXNlLgogWW91IHNob3VsZCBzZXQgdGhpcyB2YXJpYWJsZSB0byB0ZWxs IEVtYWNzIGhvdyB5b3VyIHdpbmRvdyBtYW5hZ2VyCmRpZmYgLS1naXQgYS9zcmMvd2luZG93 LmMgYi9zcmMvd2luZG93LmMKaW5kZXggODU0M2NiZi4uMzc1NDIyMCAxMDA2NDQKLS0tIGEv c3JjL3dpbmRvdy5jCisrKyBiL3NyYy93aW5kb3cuYwpAQCAtNTEzNCwxMTggKzUxMzQsMTEx IEBAIFNJREUgdCAob3IgYHJpZ2h0Jykgc3BlY2lmaWVzIHRoYXQgdGhlIG5ldyB3aW5kb3cg c2hhbGwgYmUgbG9jYXRlZCBvbgogCQkJUmVzaXppbmcgTWluaS1XaW5kb3dzCiAgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovCiAKLS8qIEdyb3cgbWluaS13aW5kb3cgVyBieSBERUxUQSBsaW5lcywg REVMVEEgPj0gMCwgb3IgYXMgbXVjaCBhcyB3ZQotICAgY2FuLiAgKi8KKy8qKgorICogcmVz aXplX21pbmlfd2luZG93X2FwcGx5OgorICoKKyAqIEFzc2lnbiBuZXcgd2luZG93IHNpemVz IGFmdGVyIHJlc2l6aW5nIGEgbWluaSB3aW5kb3cgVyBieSBERUxUQQorICogcGl4ZWxzLiAg Tm8gZXJyb3IgY2hlY2tpbmcgcGVyZm9ybWVkLgorICAqLworc3RhdGljIHZvaWQKK3Jlc2l6 ZV9taW5pX3dpbmRvd19hcHBseSAoc3RydWN0IHdpbmRvdyAqdywgaW50IGRlbHRhKQorewor ICBzdHJ1Y3QgZnJhbWUgKmYgPSBYRlJBTUUgKHctPmZyYW1lKTsKKyAgTGlzcF9PYmplY3Qg cm9vdCA9IEZSQU1FX1JPT1RfV0lORE9XIChmKTsKKyAgc3RydWN0IHdpbmRvdyAqciA9IFhX SU5ET1cgKHJvb3QpOworCisgIGJsb2NrX2lucHV0ICgpOworICB3LT5waXhlbF9oZWlnaHQg PSB3LT5waXhlbF9oZWlnaHQgKyBkZWx0YTsKKyAgdy0+dG90YWxfbGluZXMgPSB3LT5waXhl bF9oZWlnaHQgLyBGUkFNRV9MSU5FX0hFSUdIVCAoZik7CisKKyAgd2luZG93X3Jlc2l6ZV9h cHBseSAociwgZmFsc2UpOworCisgIHctPnBpeGVsX3RvcCA9IHItPnBpeGVsX3RvcCArIHIt PnBpeGVsX2hlaWdodDsKKyAgdy0+dG9wX2xpbmUgPSByLT50b3BfbGluZSArIHItPnRvdGFs X2xpbmVzOworCisgIC8qIEVuZm9yY2UgZnVsbCByZWRpc3BsYXkgb2YgdGhlIGZyYW1lLiAg Ki8KKyAgLyogRklYTUU6IFNob3VsZG4ndCBzb21lIG9mIHRoZSBjYWxsZXIgZG8gaXQ/ICAq LworICBmc2V0X3JlZGlzcGxheSAoZik7CisgIGFkanVzdF9mcmFtZV9nbHlwaHMgKGYpOwor ICB1bmJsb2NrX2lucHV0ICgpOworfQorCisvKioKKyAqIGdyb3dfbWluaV93aW5kb3c6Cisg KgorICogR3JvdyBtaW5pLXdpbmRvdyBXIGJ5IERFTFRBIHBpeGVscy4gIElmIERFTFRBIGlz IG5lZ2F0aXZlLCB0aGlzIG1heQorICogc2hyaW5rIHRoZSBtaW5pYnVmZmVyIHdpbmRvdyB0 byB0aGUgbWluaW11bSBoZWlnaHQgdG8gZGlzcGxheSBvbmUKKyAqIGxpbmUgb2YgdGV4dC4K KyAqLwogdm9pZAotZ3Jvd19taW5pX3dpbmRvdyAoc3RydWN0IHdpbmRvdyAqdywgaW50IGRl bHRhLCBib29sIHBpeGVsd2lzZSkKK2dyb3dfbWluaV93aW5kb3cgKHN0cnVjdCB3aW5kb3cg KncsIGludCBkZWx0YSkKIHsKICAgc3RydWN0IGZyYW1lICpmID0gWEZSQU1FICh3LT5mcmFt ZSk7Ci0gIHN0cnVjdCB3aW5kb3cgKnI7Ci0gIExpc3BfT2JqZWN0IHJvb3QsIGhlaWdodDsK LSAgaW50IGxpbmVfaGVpZ2h0LCBwaXhlbF9oZWlnaHQ7CisgIGludCBvbGRfaGVpZ2h0ID0g V0lORE9XX1BJWEVMX0hFSUdIVCAodyk7CisgIGludCBtaW5faGVpZ2h0ID0gRlJBTUVfTElO RV9IRUlHSFQgKGYpOwogCiAgIGVhc3NlcnQgKE1JTklfV0lORE9XX1AgKHcpKTsKLSAgZWFz c2VydCAoZGVsdGEgPj0gMCk7CiAKLSAgaWYgKGRlbHRhID4gMCkKLSAgICB7Ci0gICAgICBy b290ID0gRlJBTUVfUk9PVF9XSU5ET1cgKGYpOwotICAgICAgciA9IFhXSU5ET1cgKHJvb3Qp OwotICAgICAgaGVpZ2h0ID0gY2FsbDMgKFF3aW5kb3dfX3Jlc2l6ZV9yb290X3dpbmRvd192 ZXJ0aWNhbGx5LAotCQkgICAgICByb290LCBtYWtlX2ZpeG51bSAoLSBkZWx0YSksIHBpeGVs d2lzZSA/IFF0IDogUW5pbCk7Ci0gICAgICBpZiAoRklYTlVNUCAoaGVpZ2h0KSAmJiB3aW5k b3dfcmVzaXplX2NoZWNrIChyLCBmYWxzZSkpCi0JewotCSAgYmxvY2tfaW5wdXQgKCk7Ci0J ICB3aW5kb3dfcmVzaXplX2FwcGx5IChyLCBmYWxzZSk7CisgIGlmIChvbGRfaGVpZ2h0ICsg ZGVsdGEgPCBtaW5faGVpZ2h0KQorICAgIC8qIE5ldmVyIHNocmluayBtaW5pLXdpbmRvdyB0 byBsZXNzIHRoYW4gaXRzIG1pbmltdW0KKyAgICAgICBoZWlnaHQuICAqLworICAgIGRlbHRh ID0gb2xkX2hlaWdodCA+IG1pbl9oZWlnaHQgPyBtaW5faGVpZ2h0IC0gb2xkX2hlaWdodCA6 IDA7CiAKLQkgIGlmIChwaXhlbHdpc2UpCi0JICAgIHsKLQkgICAgICBwaXhlbF9oZWlnaHQg PSBtaW4gKC1YRklYTlVNIChoZWlnaHQpLCBJTlRfTUFYIC0gdy0+cGl4ZWxfaGVpZ2h0KTsK LQkgICAgICBsaW5lX2hlaWdodCA9IHBpeGVsX2hlaWdodCAvIEZSQU1FX0xJTkVfSEVJR0hU IChmKTsKLQkgICAgfQotCSAgZWxzZQotCSAgICB7Ci0JICAgICAgbGluZV9oZWlnaHQgPSBt aW4gKC1YRklYTlVNIChoZWlnaHQpLAotCQkJCSAoKElOVF9NQVggLSB3LT5waXhlbF9oZWln aHQpCi0JCQkJICAvIEZSQU1FX0xJTkVfSEVJR0hUIChmKSkpOwotCSAgICAgIHBpeGVsX2hl aWdodCA9IGxpbmVfaGVpZ2h0ICogRlJBTUVfTElORV9IRUlHSFQgKGYpOwotCSAgICB9Cisg IGlmIChkZWx0YSAhPSAwKQorICAgIHsKKyAgICAgIExpc3BfT2JqZWN0IHJvb3QgPSBGUkFN RV9ST09UX1dJTkRPVyAoZik7CisgICAgICBzdHJ1Y3Qgd2luZG93ICpyID0gWFdJTkRPVyAo cm9vdCk7CisgICAgICBMaXNwX09iamVjdCBncm93OwogCi0JICAvKiBHcm93IHRoZSBtaW5p LXdpbmRvdy4gICovCi0JICB3LT5waXhlbF90b3AgPSByLT5waXhlbF90b3AgKyByLT5waXhl bF9oZWlnaHQ7Ci0JICB3LT50b3BfbGluZSA9IHItPnRvcF9saW5lICsgci0+dG90YWxfbGlu ZXM7Ci0JICAvKiBNYWtlIHN1cmUgdGhlIG1pbmktd2luZG93IGhhcyBhbHdheXMgYXQgbGVh c3Qgb25lIGxpbmUuICAqLwotCSAgdy0+cGl4ZWxfaGVpZ2h0ID0gbWF4ICh3LT5waXhlbF9o ZWlnaHQgKyBwaXhlbF9oZWlnaHQsCi0JCQkJIEZSQU1FX0xJTkVfSEVJR0hUIChmKSk7Ci0J ICB3LT50b3RhbF9saW5lcyA9IG1heCAody0+dG90YWxfbGluZXMgKyBsaW5lX2hlaWdodCwg MSk7Ci0KLQkgIC8qIEVuZm9yY2UgZnVsbCByZWRpc3BsYXkgb2YgdGhlIGZyYW1lLiAgKi8K LQkgIC8qIEZJWE1FOiBTaG91bGRuJ3Qgd2luZG93LS1yZXNpemUtcm9vdC13aW5kb3ctdmVy dGljYWxseSBkbyBpdD8gICovCi0JICBmc2V0X3JlZGlzcGxheSAoZik7Ci0JICBhZGp1c3Rf ZnJhbWVfZ2x5cGhzIChmKTsKLQkgIHVuYmxvY2tfaW5wdXQgKCk7Ci0JfQotICAgICAgZWxz ZQotCWVycm9yICgiRmFpbGVkIHRvIGdyb3cgbWluaWJ1ZmZlciB3aW5kb3ciKTsKKyAgICAg IEZSQU1FX1dJTkRPV1NfRlJPWkVOIChmKSA9IHRydWU7CisgICAgICBncm93ID0gY2FsbDMg KFF3aW5kb3dfX3Jlc2l6ZV9yb290X3dpbmRvd192ZXJ0aWNhbGx5LAorCQkgICAgcm9vdCwg bWFrZV9maXhudW0gKC0gZGVsdGEpLCBRdCk7CiAKKyAgICAgIGlmIChGSVhOVU1QIChncm93 KSAmJiB3aW5kb3dfcmVzaXplX2NoZWNrIChyLCBmYWxzZSkpCisJcmVzaXplX21pbmlfd2lu ZG93X2FwcGx5ICh3LCAtWEZJWE5VTSAoZ3JvdykpOwogICAgIH0KIH0KIAotLyogU2hyaW5r IG1pbmktd2luZG93IFcgdG8gb25lIGxpbmUuICAqLworLyoqCisgKiBzaHJpbmtfbWluaV93 aW5kb3c6CisgKgorICogU2hyaW5rIG1pbmktd2luZG93IFcgdG8gdGhlIG1pbmltdW0gaGVp Z2h0IG5lZWRlZCB0byBkaXNwbGF5IG9uZQorICogbGluZSBvZiB0ZXh0LgorICovCiB2b2lk Ci1zaHJpbmtfbWluaV93aW5kb3cgKHN0cnVjdCB3aW5kb3cgKncsIGJvb2wgcGl4ZWx3aXNl KQorc2hyaW5rX21pbmlfd2luZG93IChzdHJ1Y3Qgd2luZG93ICp3KQogewogICBzdHJ1Y3Qg ZnJhbWUgKmYgPSBYRlJBTUUgKHctPmZyYW1lKTsKLSAgc3RydWN0IHdpbmRvdyAqcjsKLSAg TGlzcF9PYmplY3Qgcm9vdCwgZGVsdGE7Ci0gIEVNQUNTX0lOVCBoZWlnaHQsIHVuaXQ7Cisg IGludCBkZWx0YSA9IFdJTkRPV19QSVhFTF9IRUlHSFQgKHcpIC0gRlJBTUVfTElORV9IRUlH SFQgKGYpOwogCiAgIGVhc3NlcnQgKE1JTklfV0lORE9XX1AgKHcpKTsKIAotICBoZWlnaHQg PSBwaXhlbHdpc2UgPyB3LT5waXhlbF9oZWlnaHQgOiB3LT50b3RhbF9saW5lczsKLSAgdW5p dCA9IHBpeGVsd2lzZSA/IEZSQU1FX0xJTkVfSEVJR0hUIChmKSA6IDE7Ci0gIGlmIChoZWln aHQgPiB1bml0KQorICBpZiAoZGVsdGEgPiAwKQogICAgIHsKLSAgICAgIHJvb3QgPSBGUkFN RV9ST09UX1dJTkRPVyAoZik7Ci0gICAgICByID0gWFdJTkRPVyAocm9vdCk7Ci0gICAgICBk ZWx0YSA9IGNhbGwzIChRd2luZG93X19yZXNpemVfcm9vdF93aW5kb3dfdmVydGljYWxseSwK LQkJICAgICByb290LCBtYWtlX2ZpeG51bSAoaGVpZ2h0IC0gdW5pdCksCi0JCSAgICAgcGl4 ZWx3aXNlID8gUXQgOiBRbmlsKTsKLSAgICAgIGlmIChGSVhOVU1QIChkZWx0YSkgJiYgd2lu ZG93X3Jlc2l6ZV9jaGVjayAociwgZmFsc2UpKQotCXsKLQkgIGJsb2NrX2lucHV0ICgpOwot CSAgd2luZG93X3Jlc2l6ZV9hcHBseSAociwgZmFsc2UpOwotCi0JICAvKiBTaHJpbmsgdGhl IG1pbmktd2luZG93LiAgKi8KLQkgIHctPnRvcF9saW5lID0gci0+dG9wX2xpbmUgKyByLT50 b3RhbF9saW5lczsKLQkgIHctPnRvdGFsX2xpbmVzID0gMTsKLQkgIHctPnBpeGVsX3RvcCA9 IHItPnBpeGVsX3RvcCArIHItPnBpeGVsX2hlaWdodDsKLQkgIHctPnBpeGVsX2hlaWdodCA9 IEZSQU1FX0xJTkVfSEVJR0hUIChmKTsKLQkgIC8qIEVuZm9yY2UgZnVsbCByZWRpc3BsYXkg b2YgdGhlIGZyYW1lLiAgKi8KLQkgIC8qIEZJWE1FOiBTaG91bGRuJ3Qgd2luZG93LS1yZXNp emUtcm9vdC13aW5kb3ctdmVydGljYWxseSBkbyBpdD8gICovCi0JICBmc2V0X3JlZGlzcGxh eSAoZik7Ci0JICBhZGp1c3RfZnJhbWVfZ2x5cGhzIChmKTsKLQkgIHVuYmxvY2tfaW5wdXQg KCk7Ci0JfQotICAgICAgLyogSWYgdGhlIGFib3ZlIGZhaWxlZCBmb3Igd2hhdGV2ZXIgc3Ry YW5nZSByZWFzb24gd2UgbXVzdCBtYWtlIGEKLQkgb25lIHdpbmRvdyBmcmFtZSBoZXJlLiAg VGhlIHNhbWUgcm91dGluZSB3aWxsIGJlIG5lZWRlZCB3aGVuCi0JIHNocmlua2luZyB0aGUg ZnJhbWUgKGFuZCBwcm9iYWJseSB3aGVuIG1ha2luZyB0aGUgaW5pdGlhbAotCSAqc2NyYXRj aCogd2luZG93KS4gIEZvciB0aGUgbW9tZW50IGxlYXZlIHRoaW5ncyBhcyB0aGV5IGFyZS4g ICovCi0gICAgICBlbHNlCi0JZXJyb3IgKCJGYWlsZWQgdG8gc2hyaW5rIG1pbmlidWZmZXIg d2luZG93Iik7CisgICAgICBMaXNwX09iamVjdCByb290ID0gRlJBTUVfUk9PVF9XSU5ET1cg KGYpOworICAgICAgc3RydWN0IHdpbmRvdyAqciA9IFhXSU5ET1cgKHJvb3QpOworICAgICAg TGlzcF9PYmplY3QgZ3JvdzsKKworICAgICAgRlJBTUVfV0lORE9XU19GUk9aRU4gKGYpID0g ZmFsc2U7CisgICAgICBncm93ID0gY2FsbDMgKFF3aW5kb3dfX3Jlc2l6ZV9yb290X3dpbmRv d192ZXJ0aWNhbGx5LAorCQkgICAgcm9vdCwgbWFrZV9maXhudW0gKGRlbHRhKSwgUXQpOwor CisgICAgICBpZiAoRklYTlVNUCAoZ3JvdykgJiYgd2luZG93X3Jlc2l6ZV9jaGVjayAociwg ZmFsc2UpKQorCXJlc2l6ZV9taW5pX3dpbmRvd19hcHBseSAodywgLVhGSVhOVU0gKGdyb3cp KTsKICAgICB9CiB9CiAKLURFRlVOICgicmVzaXplLW1pbmktd2luZG93LWludGVybmFsIiwg RnJlc2l6ZV9taW5pX3dpbmRvd19pbnRlcm5hbCwgU3Jlc2l6ZV9taW5pX3dpbmRvd19pbnRl cm5hbCwgMSwgMSwgMCwKLSAgICAgICBkb2M6IC8qIFJlc2l6ZSBtaW5pYnVmZmVyIHdpbmRv dyBXSU5ET1cuICAqLykKK0RFRlVOICgicmVzaXplLW1pbmktd2luZG93LWludGVybmFsIiwg RnJlc2l6ZV9taW5pX3dpbmRvd19pbnRlcm5hbCwKKyAgICAgICBTcmVzaXplX21pbmlfd2lu ZG93X2ludGVybmFsLCAxLCAxLCAwLAorICAgICAgIGRvYzogLyogUmVzaXplIG1pbmkgd2lu ZG93IFdJTkRPVy4gICovKQogICAgICAoTGlzcF9PYmplY3Qgd2luZG93KQogewogICBzdHJ1 Y3Qgd2luZG93ICp3ID0gWFdJTkRPVyAod2luZG93KTsKICAgc3RydWN0IHdpbmRvdyAqcjsK ICAgc3RydWN0IGZyYW1lICpmOwotICBpbnQgaGVpZ2h0OworICBpbnQgb2xkX2hlaWdodCwg ZGVsdGE7CiAKLSAgQ0hFQ0tfV0lORE9XICh3aW5kb3cpOworICBDSEVDS19MSVZFX1dJTkRP VyAod2luZG93KTsKICAgZiA9IFhGUkFNRSAody0+ZnJhbWUpOwogCiAgIGlmICghRVEgKEZS QU1FX01JTklCVUZfV0lORE9XIChYRlJBTUUgKHctPmZyYW1lKSksIHdpbmRvdykpCkBAIC01 MjU0LDI2ICs1MjQ3LDE4IEBAIFNJREUgdCAob3IgYHJpZ2h0Jykgc3BlY2lmaWVzIHRoYXQg dGhlIG5ldyB3aW5kb3cgc2hhbGwgYmUgbG9jYXRlZCBvbgogICAgIGVycm9yICgiQ2Fubm90 IHJlc2l6ZSBhIG1pbmlidWZmZXItb25seSBmcmFtZSIpOwogCiAgIHIgPSBYV0lORE9XIChG UkFNRV9ST09UX1dJTkRPVyAoZikpOwotICBoZWlnaHQgPSByLT5waXhlbF9oZWlnaHQgKyB3 LT5waXhlbF9oZWlnaHQ7CisgIG9sZF9oZWlnaHQgPSByLT5waXhlbF9oZWlnaHQgKyB3LT5w aXhlbF9oZWlnaHQ7CisgIGRlbHRhID0gWEZJWE5VTSAody0+bmV3X3BpeGVsKSAtIHctPnBp eGVsX2hlaWdodDsKICAgaWYgKHdpbmRvd19yZXNpemVfY2hlY2sgKHIsIGZhbHNlKQogICAg ICAgJiYgWEZJWE5VTSAody0+bmV3X3BpeGVsKSA+IDAKLSAgICAgICYmIGhlaWdodCA9PSBY RklYTlVNIChyLT5uZXdfcGl4ZWwpICsgWEZJWE5VTSAody0+bmV3X3BpeGVsKSkKKyAgICAg ICYmIG9sZF9oZWlnaHQgPT0gWEZJWE5VTSAoci0+bmV3X3BpeGVsKSArIFhGSVhOVU0gKHct Pm5ld19waXhlbCkpCiAgICAgewotICAgICAgYmxvY2tfaW5wdXQgKCk7Ci0gICAgICB3aW5k b3dfcmVzaXplX2FwcGx5IChyLCBmYWxzZSk7Ci0KLSAgICAgIHctPnBpeGVsX2hlaWdodCA9 IFhGSVhOQVQgKHctPm5ld19waXhlbCk7Ci0gICAgICB3LT50b3RhbF9saW5lcyA9IHctPnBp eGVsX2hlaWdodCAvIEZSQU1FX0xJTkVfSEVJR0hUIChmKTsKLSAgICAgIHctPnBpeGVsX3Rv cCA9IHItPnBpeGVsX3RvcCArIHItPnBpeGVsX2hlaWdodDsKLSAgICAgIHctPnRvcF9saW5l ID0gci0+dG9wX2xpbmUgKyByLT50b3RhbF9saW5lczsKKyAgICAgIHJlc2l6ZV9taW5pX3dp bmRvd19hcHBseSAodywgZGVsdGEpOwogCi0gICAgICBmc2V0X3JlZGlzcGxheSAoZik7Ci0g ICAgICBhZGp1c3RfZnJhbWVfZ2x5cGhzIChmKTsKLSAgICAgIHVuYmxvY2tfaW5wdXQgKCk7 CiAgICAgICByZXR1cm4gUXQ7CiAgICAgfQogICBlbHNlCi0gICAgZXJyb3IgKCJGYWlsZWQg dG8gcmVzaXplIG1pbmlidWZmZXIgd2luZG93Iik7CisgICAgZXJyb3IgKCJDYW5ub3QgcmVz aXplIG1pbmkgd2luZG93Iik7CiB9CiAMCiAvKiBNYXJrIHdpbmRvdyBjdXJzb3JzIG9mZiBm b3IgYWxsIHdpbmRvd3MgaW4gdGhlIHdpbmRvdyB0cmVlIHJvb3RlZApAQCAtODAxMiw2ICs3 OTk3LDcgQEAgc3RhdGljIHZvaWQgaW5pdF93aW5kb3dfb25jZV9mb3JfcGR1bXBlciAodm9p ZCkKICAgREVGU1lNIChRd2luZG93X19yZXNpemVfcm9vdF93aW5kb3csICJ3aW5kb3ctLXJl c2l6ZS1yb290LXdpbmRvdyIpOwogICBERUZTWU0gKFF3aW5kb3dfX3Jlc2l6ZV9yb290X3dp bmRvd192ZXJ0aWNhbGx5LAogCSAgIndpbmRvdy0tcmVzaXplLXJvb3Qtd2luZG93LXZlcnRp Y2FsbHkiKTsKKyAgREVGU1lNIChRd2luZG93X19yZXNpemVfbWluaV9mcmFtZSwgIndpbmRv dy0tcmVzaXplLW1pbmktZnJhbWUiKTsKICAgREVGU1lNIChRd2luZG93X19zYW5pdGl6ZV93 aW5kb3dfc2l6ZXMsICJ3aW5kb3ctLXNhbml0aXplLXdpbmRvdy1zaXplcyIpOwogICBERUZT WU0gKFF3aW5kb3dfX3BpeGVsX3RvX3RvdGFsLCAid2luZG93LS1waXhlbC10by10b3RhbCIp OwogICBERUZTWU0gKFFzYWZlLCAic2FmZSIpOwpkaWZmIC0tZ2l0IGEvc3JjL3dpbmRvdy5o IGIvc3JjL3dpbmRvdy5oCmluZGV4IGQ4MTZiYjEuLmI0NTAxNzMgMTAwNjQ0Ci0tLSBhL3Ny Yy93aW5kb3cuaAorKysgYi9zcmMvd2luZG93LmgKQEAgLTEwNjMsOCArMTA2Myw4IEBAIGV4 dGVybiBMaXNwX09iamVjdCB3aW5kb3dfZnJvbV9jb29yZGluYXRlcyAoc3RydWN0IGZyYW1l ICosIGludCwgaW50LAogZXh0ZXJuIHZvaWQgcmVzaXplX2ZyYW1lX3dpbmRvd3MgKHN0cnVj dCBmcmFtZSAqLCBpbnQsIGJvb2wsIGJvb2wpOwogZXh0ZXJuIHZvaWQgcmVzdG9yZV93aW5k b3dfY29uZmlndXJhdGlvbiAoTGlzcF9PYmplY3QpOwogZXh0ZXJuIHZvaWQgZGVsZXRlX2Fs bF9jaGlsZF93aW5kb3dzIChMaXNwX09iamVjdCk7Ci1leHRlcm4gdm9pZCBncm93X21pbmlf d2luZG93IChzdHJ1Y3Qgd2luZG93ICosIGludCwgYm9vbCk7Ci1leHRlcm4gdm9pZCBzaHJp bmtfbWluaV93aW5kb3cgKHN0cnVjdCB3aW5kb3cgKiwgYm9vbCk7CitleHRlcm4gdm9pZCBn cm93X21pbmlfd2luZG93IChzdHJ1Y3Qgd2luZG93ICosIGludCk7CitleHRlcm4gdm9pZCBz aHJpbmtfbWluaV93aW5kb3cgKHN0cnVjdCB3aW5kb3cgKik7CiBleHRlcm4gaW50IHdpbmRv d19yZWxhdGl2ZV94X2Nvb3JkIChzdHJ1Y3Qgd2luZG93ICosIGVudW0gd2luZG93X3BhcnQs IGludCk7CiAKIHZvaWQgcnVuX3dpbmRvd19jaGFuZ2VfZnVuY3Rpb25zICh2b2lkKTsKZGlm ZiAtLWdpdCBhL3NyYy94ZGlzcC5jIGIvc3JjL3hkaXNwLmMKaW5kZXggNmNlYjVjOS4uOTUz Y2Y3ZiAxMDA2NDQKLS0tIGEvc3JjL3hkaXNwLmMKKysrIGIvc3JjL3hkaXNwLmMKQEAgLTEx MjU5LDE1ICsxMTI1OSwxMCBAQCBzdGF0aWMgdm9pZCBBVFRSSUJVVEVfRk9STUFUX1BSSU5U RiAoMSwgMCkKIHJlc2l6ZV9taW5pX3dpbmRvdyAoc3RydWN0IHdpbmRvdyAqdywgYm9vbCBl eGFjdF9wKQogewogICBzdHJ1Y3QgZnJhbWUgKmYgPSBYRlJBTUUgKHctPmZyYW1lKTsKLSAg Ym9vbCB3aW5kb3dfaGVpZ2h0X2NoYW5nZWRfcCA9IGZhbHNlOworICBpbnQgb2xkX2hlaWdo dCA9IFdJTkRPV19QSVhFTF9IRUlHSFQgKHcpOwogCiAgIGVhc3NlcnQgKE1JTklfV0lORE9X X1AgKHcpKTsKIAotICAvKiBCeSBkZWZhdWx0LCBzdGFydCBkaXNwbGF5IGF0IHRoZSBiZWdp bm5pbmcuICAqLwotICBzZXRfbWFya2VyX2JvdGggKHctPnN0YXJ0LCB3LT5jb250ZW50cywK LQkJICAgQlVGX0JFR1YgKFhCVUZGRVIgKHctPmNvbnRlbnRzKSksCi0JCSAgIEJVRl9CRUdW X0JZVEUgKFhCVUZGRVIgKHctPmNvbnRlbnRzKSkpOwotCiAgIC8qIERvbid0IHJlc2l6ZSB3 aW5kb3dzIHdoaWxlIHJlZGlzcGxheWluZyBhIHdpbmRvdzsgaXQgd291bGQKICAgICAgY29u ZnVzZSByZWRpc3BsYXkgZnVuY3Rpb25zIHdoZW4gdGhlIHNpemUgb2YgdGhlIHdpbmRvdyB0 aGV5IGFyZQogICAgICBkaXNwbGF5aW5nIGNoYW5nZXMgZnJvbSB1bmRlciB0aGVtLiAgU3Vj aCBhIHJlc2l6aW5nIGNhbiBoYXBwZW4sCkBAIC0xMTI3OCwxOSArMTEyNzMsMzAgQEAgc3Rh dGljIHZvaWQgQVRUUklCVVRFX0ZPUk1BVF9QUklOVEYgKDEsIDApCiAgICAgcmV0dXJuIGZh bHNlOwogCiAgIC8qIE5pbCBtZWFucyBkb24ndCB0cnkgdG8gcmVzaXplLiAgKi8KLSAgaWYg KE5JTFAgKFZyZXNpemVfbWluaV93aW5kb3dzKQorICBpZiAoKE5JTFAgKFZyZXNpemVfbWlu aV93aW5kb3dzKQorICAgICAgICYmIChOSUxQIChyZXNpemVfbWluaV9mcmFtZXMpIHx8ICFG UkFNRV9NSU5JQlVGX09OTFlfUCAoZikpKQogICAgICAgfHwgKEZSQU1FX1hfUCAoZikgJiYg RlJBTUVfWF9PVVRQVVQgKGYpID09IE5VTEwpKQogICAgIHJldHVybiBmYWxzZTsKIAotICBp ZiAoIUZSQU1FX01JTklCVUZfT05MWV9QIChmKSkKKyAgLyogQnkgZGVmYXVsdCwgc3RhcnQg ZGlzcGxheSBhdCB0aGUgYmVnaW5uaW5nLiAgKi8KKyAgc2V0X21hcmtlcl9ib3RoICh3LT5z dGFydCwgdy0+Y29udGVudHMsCisJCSAgIEJVRl9CRUdWIChYQlVGRkVSICh3LT5jb250ZW50 cykpLAorCQkgICBCVUZfQkVHVl9CWVRFIChYQlVGRkVSICh3LT5jb250ZW50cykpKTsKKwor ICBpZiAoRlJBTUVfTUlOSUJVRl9PTkxZX1AgKGYpKQorICAgIHsKKyAgICAgIGlmICghTklM UCAocmVzaXplX21pbmlfZnJhbWVzKSkKKwlzYWZlX2NhbGwxIChRd2luZG93X19yZXNpemVf bWluaV9mcmFtZSwgV0lORE9XX0ZSQU1FICh3KSk7CisgICAgfQorICBlbHNlCiAgICAgewog ICAgICAgc3RydWN0IGl0IGl0OwotICAgICAgaW50IHRvdGFsX2hlaWdodCA9IChXSU5ET1df UElYRUxfSEVJR0hUIChYV0lORE9XIChGUkFNRV9ST09UX1dJTkRPVyAoZikpKQotCQkJICAr IFdJTkRPV19QSVhFTF9IRUlHSFQgKHcpKTsKKyAgICAgIGludCBvbGRfaGVpZ2h0ID0gV0lO RE9XX1BJWEVMX0hFSUdIVCAodyk7CiAgICAgICBpbnQgdW5pdCA9IEZSQU1FX0xJTkVfSEVJ R0hUIChmKTsKICAgICAgIGludCBoZWlnaHQsIG1heF9oZWlnaHQ7CiAgICAgICBzdHJ1Y3Qg dGV4dF9wb3Mgc3RhcnQ7CiAgICAgICBzdHJ1Y3QgYnVmZmVyICpvbGRfY3VycmVudF9idWZm ZXIgPSBOVUxMOworICAgICAgaW50IHdpbmRvd3NfaGVpZ2h0ID0gRlJBTUVfV0lORE9XU19I RUlHSFQgKGYpOwogCiAgICAgICBpZiAoY3VycmVudF9idWZmZXIgIT0gWEJVRkZFUiAody0+ Y29udGVudHMpKQogCXsKQEAgLTExMzAyLDE0ICsxMTMwOCwxNCBAQCBzdGF0aWMgdm9pZCBB VFRSSUJVVEVfRk9STUFUX1BSSU5URiAoMSwgMCkKIAogICAgICAgLyogQ29tcHV0ZSB0aGUg bWF4LiBudW1iZXIgb2YgbGluZXMgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyLiAgKi8KICAgICAg IGlmIChGTE9BVFAgKFZtYXhfbWluaV93aW5kb3dfaGVpZ2h0KSkKLQltYXhfaGVpZ2h0ID0g WEZMT0FUX0RBVEEgKFZtYXhfbWluaV93aW5kb3dfaGVpZ2h0KSAqIHRvdGFsX2hlaWdodDsK KwltYXhfaGVpZ2h0ID0gWEZMT0FUX0RBVEEgKFZtYXhfbWluaV93aW5kb3dfaGVpZ2h0KSAq IHdpbmRvd3NfaGVpZ2h0OwogICAgICAgZWxzZSBpZiAoRklYTlVNUCAoVm1heF9taW5pX3dp bmRvd19oZWlnaHQpKQogCW1heF9oZWlnaHQgPSBYRklYTlVNIChWbWF4X21pbmlfd2luZG93 X2hlaWdodCkgKiB1bml0OwogICAgICAgZWxzZQotCW1heF9oZWlnaHQgPSB0b3RhbF9oZWln aHQgLyA0OworCW1heF9oZWlnaHQgPSB3aW5kb3dzX2hlaWdodCAvIDQ7CiAKICAgICAgIC8q IENvcnJlY3QgdGhhdCBtYXguIGhlaWdodCBpZiBpdCdzIGJvZ3VzLiAgKi8KLSAgICAgIG1h eF9oZWlnaHQgPSBjbGlwX3RvX2JvdW5kcyAodW5pdCwgbWF4X2hlaWdodCwgdG90YWxfaGVp Z2h0KTsKKyAgICAgIG1heF9oZWlnaHQgPSBjbGlwX3RvX2JvdW5kcyAodW5pdCwgbWF4X2hl aWdodCwgd2luZG93c19oZWlnaHQpOwogCiAgICAgICAvKiBGaW5kIG91dCB0aGUgaGVpZ2h0 IG9mIHRoZSB0ZXh0IGluIHRoZSB3aW5kb3cuICAqLwogICAgICAgaWYgKGl0LmxpbmVfd3Jh cCA9PSBUUlVOQ0FURSkKQEAgLTExMzM1LDYzICsxMTM0MSwyNyBAQCBzdGF0aWMgdm9pZCBB VFRSSUJVVEVfRk9STUFUX1BSSU5URiAoMSwgMCkKIAl9CiAgICAgICBlbHNlCiAJU0VUX1RF WFRfUE9TIChzdGFydCwgQkVHViwgQkVHVl9CWVRFKTsKKwogICAgICAgU0VUX01BUktFUl9G Uk9NX1RFWFRfUE9TICh3LT5zdGFydCwgc3RhcnQpOwogCiAgICAgICBpZiAoRVEgKFZyZXNp emVfbWluaV93aW5kb3dzLCBRZ3Jvd19vbmx5KSkKIAl7CiAJICAvKiBMZXQgaXQgZ3JvdyBv bmx5LCB1bnRpbCB3ZSBkaXNwbGF5IGFuIGVtcHR5IG1lc3NhZ2UsIGluIHdoaWNoCiAJICAg ICBjYXNlIHRoZSB3aW5kb3cgc2hyaW5rcyBhZ2Fpbi4gICovCi0JICBpZiAoaGVpZ2h0ID4g V0lORE9XX1BJWEVMX0hFSUdIVCAodykpCi0JICAgIHsKLQkgICAgICBpbnQgb2xkX2hlaWdo dCA9IFdJTkRPV19QSVhFTF9IRUlHSFQgKHcpOwotCi0JICAgICAgRlJBTUVfV0lORE9XU19G Uk9aRU4gKGYpID0gdHJ1ZTsKLQkgICAgICBncm93X21pbmlfd2luZG93ICh3LCBoZWlnaHQg LSBXSU5ET1dfUElYRUxfSEVJR0hUICh3KSwgdHJ1ZSk7Ci0JICAgICAgd2luZG93X2hlaWdo dF9jaGFuZ2VkX3AgPSBXSU5ET1dfUElYRUxfSEVJR0hUICh3KSAhPSBvbGRfaGVpZ2h0Owot CSAgICB9Ci0JICBlbHNlIGlmIChoZWlnaHQgPCBXSU5ET1dfUElYRUxfSEVJR0hUICh3KQot CQkgICAmJiAoZXhhY3RfcCB8fCBCRUdWID09IFpWKSkKLQkgICAgewotCSAgICAgIGludCBv bGRfaGVpZ2h0ID0gV0lORE9XX1BJWEVMX0hFSUdIVCAodyk7Ci0KLQkgICAgICBGUkFNRV9X SU5ET1dTX0ZST1pFTiAoZikgPSBmYWxzZTsKLQkgICAgICBzaHJpbmtfbWluaV93aW5kb3cg KHcsIHRydWUpOwotCSAgICAgIHdpbmRvd19oZWlnaHRfY2hhbmdlZF9wID0gV0lORE9XX1BJ WEVMX0hFSUdIVCAodykgIT0gb2xkX2hlaWdodDsKLQkgICAgfQotCX0KLSAgICAgIGVsc2UK LQl7Ci0JICAvKiBBbHdheXMgcmVzaXplIHRvIGV4YWN0IHNpemUgbmVlZGVkLiAgKi8KLQkg IGlmIChoZWlnaHQgPiBXSU5ET1dfUElYRUxfSEVJR0hUICh3KSkKLQkgICAgewotCSAgICAg IGludCBvbGRfaGVpZ2h0ID0gV0lORE9XX1BJWEVMX0hFSUdIVCAodyk7Ci0KLQkgICAgICBG UkFNRV9XSU5ET1dTX0ZST1pFTiAoZikgPSB0cnVlOwotCSAgICAgIGdyb3dfbWluaV93aW5k b3cgKHcsIGhlaWdodCAtIFdJTkRPV19QSVhFTF9IRUlHSFQgKHcpLCB0cnVlKTsKLQkgICAg ICB3aW5kb3dfaGVpZ2h0X2NoYW5nZWRfcCA9IFdJTkRPV19QSVhFTF9IRUlHSFQgKHcpICE9 IG9sZF9oZWlnaHQ7Ci0JICAgIH0KLQkgIGVsc2UgaWYgKGhlaWdodCA8IFdJTkRPV19QSVhF TF9IRUlHSFQgKHcpKQotCSAgICB7Ci0JICAgICAgaW50IG9sZF9oZWlnaHQgPSBXSU5ET1df UElYRUxfSEVJR0hUICh3KTsKLQotCSAgICAgIEZSQU1FX1dJTkRPV1NfRlJPWkVOIChmKSA9 IGZhbHNlOwotCSAgICAgIHNocmlua19taW5pX3dpbmRvdyAodywgdHJ1ZSk7Ci0KLQkgICAg ICBpZiAoaGVpZ2h0KQotCQl7Ci0JCSAgRlJBTUVfV0lORE9XU19GUk9aRU4gKGYpID0gdHJ1 ZTsKLQkJICBncm93X21pbmlfd2luZG93ICh3LCBoZWlnaHQgLSBXSU5ET1dfUElYRUxfSEVJ R0hUICh3KSwgdHJ1ZSk7Ci0JCX0KLQotCSAgICAgIHdpbmRvd19oZWlnaHRfY2hhbmdlZF9w ID0gV0lORE9XX1BJWEVMX0hFSUdIVCAodykgIT0gb2xkX2hlaWdodDsKLQkgICAgfQorCSAg aWYgKGhlaWdodCA+IG9sZF9oZWlnaHQpCisJICAgIGdyb3dfbWluaV93aW5kb3cgKHcsIGhl aWdodCAtIG9sZF9oZWlnaHQpOworCSAgZWxzZSBpZiAoaGVpZ2h0IDwgb2xkX2hlaWdodCAm JiAoZXhhY3RfcCB8fCBCRUdWID09IFpWKSkKKwkgICAgc2hyaW5rX21pbmlfd2luZG93ICh3 KTsKIAl9CisgICAgICBlbHNlIGlmIChoZWlnaHQgIT0gb2xkX2hlaWdodCkKKwkvKiBBbHdh eXMgcmVzaXplIHRvIGV4YWN0IHNpemUgbmVlZGVkLiAgKi8KKwlncm93X21pbmlfd2luZG93 ICh3LCBoZWlnaHQgLSBvbGRfaGVpZ2h0KTsKIAogICAgICAgaWYgKG9sZF9jdXJyZW50X2J1 ZmZlcikKIAlzZXRfYnVmZmVyX2ludGVybmFsIChvbGRfY3VycmVudF9idWZmZXIpOwogICAg IH0KIAotICByZXR1cm4gd2luZG93X2hlaWdodF9jaGFuZ2VkX3A7CisgIHJldHVybiBXSU5E T1dfUElYRUxfSEVJR0hUICh3KSAhPSBvbGRfaGVpZ2h0OwogfQogCiAKCg== --------------030100060603090909030806--