From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Alin Soare Newsgroups: gmane.emacs.devel Subject: Tabs for console. Date: Fri, 3 Dec 2010 00:45:30 +0200 Message-ID: References: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=0015176f1376c91c8d0496752d57 X-Trace: dough.gmane.org 1291329980 10427 80.91.229.12 (2 Dec 2010 22:46:20 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Thu, 2 Dec 2010 22:46:20 +0000 (UTC) To: Emacs Dev Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Dec 02 23:46:16 2010 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1POHuT-0006v0-Rc for ged-emacs-devel@m.gmane.org; Thu, 02 Dec 2010 23:46:16 +0100 Original-Received: from localhost ([127.0.0.1]:39099 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1POHuS-0007zT-Ib for ged-emacs-devel@m.gmane.org; Thu, 02 Dec 2010 17:45:52 -0500 Original-Received: from [140.186.70.92] (port=50492 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1POHu9-0007ww-C0 for emacs-devel@gnu.org; Thu, 02 Dec 2010 17:45:35 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1POHu7-0006dS-2K for emacs-devel@gnu.org; Thu, 02 Dec 2010 17:45:33 -0500 Original-Received: from mail-yw0-f41.google.com ([209.85.213.41]:49309) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1POHu6-0006dA-Rp for emacs-devel@gnu.org; Thu, 02 Dec 2010 17:45:30 -0500 Original-Received: by ywk9 with SMTP id 9so249940ywk.0 for ; Thu, 02 Dec 2010 14:45:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:content-type; bh=CLbj5Qhg+I531LKeQudv+QOqJ1npmfknrJDYtdvy/7g=; b=Bo9TqUTzznfVgj3y6Xh6l72+qYwSTAEfRGMIxJ87TzGxkhpNpv9TxlkldoE4EssBUk J83ku2i/cqh3R60H02LKfzfXrTrVCHwhP6ezcyBZd76j6SvVf++ITsgt00aXSCAW37+s WcVUSIwqcQlS2UYdnZk9ykohmtNHhrxeVdBes= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=eiTTGc5PnN5faqJqee00n1G+xBa1hDxGnRtpXS/VJdNW0O2m1WR8j0zkGRJHCP8oWE 2nTno8Gm1Txv/iXMb4+ttPCBpkM9zybpMi9Pnimr43L0daXByOV0edcL57XnOIKoVEEf lgfbf6LP+fdV5e0e4maMrKP2X6yj4QfPkUTdg= Original-Received: by 10.151.100.6 with SMTP id c6mr2531958ybm.103.1291329930337; Thu, 02 Dec 2010 14:45:30 -0800 (PST) Original-Received: by 10.150.95.21 with HTTP; Thu, 2 Dec 2010 14:45:30 -0800 (PST) In-Reply-To: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:133328 Archived-At: --0015176f1376c91c8d0496752d57 Content-Type: multipart/alternative; boundary=0015176f1376c91c850496752d55 --0015176f1376c91c850496752d55 Content-Type: text/plain; charset=UTF-8 Here it is. I spent 2 weeks to learn git, in order to be able to work with emacs confortably, and now I am almost? expert in git LOL. A first functional version. It is difficult to believe, isn't it? Those who love the console will enjoy. It is the 3rd time when I restart the tabs from scratch, and the first time when I manage to get a result. The first time I started coding tabs as frames. Every frame had a list of frames, and those secondary frames appeared as tabs. I realized the idea was bad and gave up. The second try, I modified the Vframe_list. From a list of frames, I transformed it into a list of lists of frames. Every such list represented a group of tabs. Every frame had as tabs the frames from the same group with it. It worked, but to develop the idea should have been modified half of emacs! Next, I had the idea, after a discussion with Stefan Monnier that tabs must be implemented programmable. I attach you an example. Tabs that implement window configuration. The tabs are not finished. this is just the beginning. The programmable tabs should implement everything, from window configurations up to compilations and frames, and many more. In order to be able to implement tabs as frames, the frames functionality must be extended. Every tab should have its own environment (see the conflict of the variable cwc). Actor model of evaluation is good for this, but emacs does not have lexical scope yet. The code is not completed yet. I did not add comments yet. Please look over the code. I will send a commented version next days. Until then , I hope to receive your suggestion. Alin --0015176f1376c91c850496752d55 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

Here it is. I spent 2 weeks to learn git= , in order to be able to work with emacs confortably, and now I am almost? = expert in git LOL.

A first functional version. It is difficult to be= lieve, isn't it? Those who love the console will enjoy.

It is the 3rd time when I restart the tabs from scratch, and the first = time when I manage to get a result.

The first time I started coding = tabs as frames. Every frame had a list of frames, and those secondary frame= s appeared as tabs. I realized the idea was bad and gave up.

The second try, I modified the Vframe_list. From a list of frames, I tr= ansformed it into a list of lists of frames. Every such list represented a = group of tabs. Every frame had as tabs the frames from the same group with = it. It worked, but to develop the idea should have been modified half of em= acs!

Next, I had the idea, after a discussion with Stefan Monnier that tabs = must be implemented programmable.

I attach you an example. Tabs tha= t implement window configuration.

The tabs are not finished. this is= just the beginning.

The programmable tabs should implement everything, from window configur= ations up to compilations and frames, and many more.

In order to be = able to implement tabs as frames, the frames functionality must be extended= .

Every tab should have its own environment (see the conflict of the vari= able cwc). Actor model of evaluation is good for this, but emacs does not h= ave lexical scope yet.

The code is not completed yet. I did not add = comments yet.

Please look over the code. I will send a commented version next days. U= ntil then , I hope to receive your suggestion.
<= br>


Alin



--0015176f1376c91c850496752d55-- --0015176f1376c91c8d0496752d57 Content-Type: text/x-emacs-lisp; charset=US-ASCII; name="test-tabs.el" Content-Disposition: attachment; filename="test-tabs.el" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gh88go3g0 Cjs7IGV2YWx1YXRlIHRoaXMgZmlsZSBzZXhwIGFmdGVyIHNleHAgYW5kIGZvbGxvdyB0aGUgY29t bWVudHMuCgo7OyBzZXQgYSBtaW5pbWFsIGVudmlyb25tZW50Cihwcm9nbgogIChjdXN0b20tc2V0 LWZhY2VzCiAgICcoY3VycmVudC10YWItZmFjZSAoKHQgKCA6aW5oZXJpdCAnZGVmYXVsdC1mYWNl ICA6Zm9yZWdyb3VuZCAibGlnaHRibHVlIiA6Ym9sZCB0IDp1bmRlcmxpbmUgdCkpKSkKICAgJyhv ZGQtdGFiLWZhY2UgICAgKCh0ICggOmJhY2tncm91bmQgInJlZCIgICAgOmZvcmVncm91bmQgIndo aXRlIiApKSkpCiAgICcoZXZlbi10YWItZmFjZSAgICgodCAoIDpiYWNrZ3JvdW5kICJncmVlbiIg IDpmb3JlZ3JvdW5kICJibGFjayIpKSkpKQogIChzZXQtZnJhbWUtcGFyYW1ldGVyIChzZWxlY3Rl ZC1mcmFtZSkgJ3RhYi1iYXItbGluZXMgNCkKICAoc2V0LWZyYW1lLXBhcmFtZXRlciAoc2VsZWN0 ZWQtZnJhbWUpICdtZW51LWJhci1saW5lcyAwKSkKCjs7bWFrZSBhIGZldyB0YWJzIGZyb20gaW5k ZXggIzAgdXAgdG8gIzkKKGRvdGltZXMgKGkgMTApCiAgKG1ha2UtdGVybWluYWwtZnJhbWUgJygo dGFiIC4gdCkpKSkKCjs7IG1ha2UgYSB0YWIgIzEwIHRoYXQga2VlcHMgYSB3aW5kb3cgY29uZmln dXJhdGlvbi4gV2hlbiBpdCBpcyBjcmVhdGVkLAo7OyBpdCBtZW1vcmllcyB0aGUgY3VycmVudCB3 aW4gY29uZmlnLiBXaGVuIGl0IGlzIGFjdGl2YXRlZCwgaXQKOzsgcmVzdG9yZXMgdGhlIG1lbW9y aXplZCB3aW4gY29uZmlnCihtYWtlLXRlcm1pbmFsLWZyYW1lCiAnKCh0YWIgLiB0KQogICAodGFi OmluaXQgLiAobGFtYmRhICgpIChzZXRxIGN3Y2UgKGN1cnJlbnQtd2luZG93LWNvbmZpZ3VyYXRp b24pKSkpCiAgICh0YWI6YWN0aXZhdGUgLiAobGFtYmRhICgpIChzZXQtd2luZG93LWNvbmZpZ3Vy YXRpb24gY3djZSkpKQogICAodGFiOmRlYWN0aXZhdGUgLiAobGFtYmRhICgpIChtZXNzYWdlICJx cXEiKSkpKSkKCjs7IGNoYW5nZSB0aGUgd2luZG93IGNvbmZpZ3VyYXRpb24KKChsYW1iZGEgbmls CiAgIChzcGxpdC13aW5kb3ctdmVydGljYWxseSkKICAgKHNwbGl0LXdpbmRvdy12ZXJ0aWNhbGx5 KQogICAoc3BsaXQtd2luZG93LWhvcml6b250YWxseSkpKQogCjs7IG5vdyBhY3RpdmF0ZSB0aGUg dGFiIHRoYXQga2VlcHMgdGhlIG1lbW9yaXplZCB3aW4gY29uZmlnLiAgdGhpcwo7OyBmdW5jdGlv biBkaXNvdmVyZWQgYSBidWcgaW4gd2luZG93IGNvbmZpZ3VyYXRpb24gLiBMT0wuICBJZiB5b3UK OzsgY2hhbmdlIHRoZSB0YWItYmFyLWxpbmVzIG9yIG1lbnUtYmFyLWxpbmVzIGFmdGVyIGNyZWF0 aW5nIHRoZSB0YWIKOzsgIzEwIGFuZCBiZWZvcmUgYWN0aXZhdGluIGl0IGhlcmUsIGVtYWNzIGNy YXNoZXMuIExPTC4KKHNldC1mcmFtZS1wYXJhbWV0ZXIgKHNlbGVjdGVkLWZyYW1lKSAnY3VycmVu dC10YWIgMTApCgo7OyB0cnkgaXQ6IG5vdyB0cnkgdG8gY2hhbmdlIHRoZSB3aW5kb3cgY29uZmln LCBhY3RpdmF0ZSB0YWIgIzAsIGFuZAo7OyByZWFjdGl2YXRlIHRhYiAjMTAuCgo7OyBkdW1wIGZy YW1lIHBhcmFtcwoocHJvZ24KICAoc2V0cSAgZXZhbC1leHByZXNzaW9uLXByaW50LWxlbmd0aCA1 MDAwCgkgZXZhbC1leHByZXNzaW9uLXByaW50LWxldmVsICA1MDAwCgkgcHJpbnQtbGV2ZWwgNTAw MAoJICkKICAoZnJhbWUtcGFyYW1ldGVycykgKQoKOzsgdGhhdCdzIGFsbCBmb3Igbm93LgoKCgoK --0015176f1376c91c8d0496752d57 Content-Type: text/x-patch; charset=US-ASCII; name="0001-tabs-for-console.patch" Content-Disposition: attachment; filename="0001-tabs-for-console.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gh88h0dp1 RnJvbSAzZWNkYmIwYzg3OWViY2Y2ZDAxMTIxMWQxNGQ4OTM5Mjk5M2ZkNTAzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiByb290IDxyb290QGFsaW4uKG5vbmUpPgpEYXRlOiBUaHUsIDIg RGVjIDIwMTAgMjM6NTM6NDEgKzAyMDAKU3ViamVjdDogW1BBVENIXSB0YWJzIGZvciBjb25zb2xl CgotLS0KIHNyYy9kaXNwZXh0ZXJuLmggfCAgICAzICsKIHNyYy9mcmFtZS5jICAgICAgfCAgMjI0 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQog c3JjL2ZyYW1lLmggICAgICB8ICAgMjUgKysrKystCiBzcmMvd2luZG93LmMgICAgIHwgICAgNSAr CiBzcmMveGRpc3AuYyAgICAgIHwgICA3NiArKysrKysrKysrKysrKysrKysKIHNyYy94ZmFjZXMu YyAgICAgfCAgIDEwICsrKwogNiBmaWxlcyBjaGFuZ2VkLCAzMzMgaW5zZXJ0aW9ucygrKSwgMTAg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Rpc3BleHRlcm4uaCBiL3NyYy9kaXNwZXh0 ZXJuLmgKaW5kZXggNzQyNmMwMy4uMmE4NzA0NCAxMDA2NDQKLS0tIGEvc3JjL2Rpc3BleHRlcm4u aAorKysgYi9zcmMvZGlzcGV4dGVybi5oCkBAIC0xNjk3LDYgKzE2OTcsOSBAQCBlbnVtIGZhY2Vf aWQKICAgTU9VU0VfRkFDRV9JRCwKICAgTUVOVV9GQUNFX0lELAogICBWRVJUSUNBTF9CT1JERVJf RkFDRV9JRCwKKyAgQ1VSUkVOVF9UQUJfRkFDRV9JRCwKKyAgT0REX1RBQl9GQUNFX0lELAorICBF VkVOX1RBQl9GQUNFX0lELAogICBCQVNJQ19GQUNFX0lEX1NFTlRJTkVMCiB9OwogCmRpZmYgLS1n aXQgYS9zcmMvZnJhbWUuYyBiL3NyYy9mcmFtZS5jCmluZGV4IGJhNjc1YmUuLmEwMTIwNjYgMTAw NjQ0Ci0tLSBhL3NyYy9mcmFtZS5jCisrKyBiL3NyYy9mcmFtZS5jCkBAIC0xMTgsMTYgKzExOCwx OSBAQCBMaXNwX09iamVjdCBRd2luZG93X2lkOwogTGlzcF9PYmplY3QgUW91dGVyX3dpbmRvd19p ZDsKICNlbmRpZgogTGlzcF9PYmplY3QgUXBhcmVudF9pZDsKLUxpc3BfT2JqZWN0IFF0aXRsZSwg UW5hbWU7CitMaXNwX09iamVjdCBRdGl0bGUsIFFuYW1lLCBRdGFiX25hbWUsIFF0YWIsIFFjdXJy ZW50X3RhYjsKK0xpc3BfT2JqZWN0IFF0YWJfY29kZV9pbml0LCBRdGFiX2NvZGVfYWN0aXZhdGUs IFF0YWJfY29kZV9kZWFjdGl2YXRlOwogTGlzcF9PYmplY3QgUWV4cGxpY2l0X25hbWU7CiBMaXNw X09iamVjdCBRdW5zcGxpdHRhYmxlOwotTGlzcF9PYmplY3QgUW1lbnVfYmFyX2xpbmVzLCBRdG9v bF9iYXJfbGluZXMsIFF0b29sX2Jhcl9wb3NpdGlvbjsKK0xpc3BfT2JqZWN0IFFtZW51X2Jhcl9s aW5lcywgUXRvb2xfYmFyX2xpbmVzLCBRdG9vbF9iYXJfcG9zaXRpb24sIFF0YWJfYmFyX2xpbmVz OwogTGlzcF9PYmplY3QgVm1lbnVfYmFyX21vZGUsIFZ0b29sX2Jhcl9tb2RlOwogTGlzcF9PYmpl Y3QgUWxlZnRfZnJpbmdlLCBRcmlnaHRfZnJpbmdlOwogTGlzcF9PYmplY3QgUWJ1ZmZlcl9wcmVk aWNhdGUsIFFidWZmZXJfbGlzdCwgUWJ1cmllZF9idWZmZXJfbGlzdDsKIExpc3BfT2JqZWN0IFF0 dHlfY29sb3JfbW9kZTsKIExpc3BfT2JqZWN0IFF0dHksIFF0dHlfdHlwZTsKIAorTGlzcF9PYmpl Y3QgUXRhYl9hY3RpdmF0ZSwgUXRhYl9kZWFjdGl2YXRlLCBRdGFiX2luaXQ7CisKIExpc3BfT2Jq ZWN0IFFmdWxsc2NyZWVuLCBRZnVsbHdpZHRoLCBRZnVsbGhlaWdodCwgUWZ1bGxib3RoLCBRbWF4 aW1pemVkOwogTGlzcF9PYmplY3QgUXN0aWNreTsKIExpc3BfT2JqZWN0IFFmb250X2JhY2tlbmQ7 CkBAIC0xOTcsNiArMjAwLDE0NiBAQCBzZXRfbWVudV9iYXJfbGluZXMgKHN0cnVjdCBmcmFtZSAq ZiwgTGlzcF9PYmplY3QgdmFsdWUsIExpc3BfT2JqZWN0IG9sZHZhbCkKICAgICAgIGFkanVzdF9n bHlwaHMgKGYpOwogICAgIH0KIH0KKworLyogdGhpcyBpcyBpZGVudGljYWwgdG8gc2V0X21lbnVf YmFyX2xpbmVzXzEgKi8KK3N0YXRpYyB2b2lkCitzZXRfdGFiX2Jhcl9saW5lc18xICggTGlzcF9P YmplY3Qgd2luZG93LCBpbnQgbikKK3sKKyAgc3RydWN0IHdpbmRvdyAqdyA9IFhXSU5ET1cgKHdp bmRvdyk7CisKKyAgWFNFVEZBU1RJTlQgKHctPmxhc3RfbW9kaWZpZWQsIDApOworICBYU0VURkFT VElOVCAody0+dG9wX2xpbmUsIFhGQVNUSU5UICh3LT50b3BfbGluZSkgKyBuKTsKKyAgWFNFVEZB U1RJTlQgKHctPnRvdGFsX2xpbmVzLCBYRkFTVElOVCAody0+dG90YWxfbGluZXMpIC0gbik7CisK KyAgaWYgKElOVEVHRVJQICh3LT5vcmlnX3RvcF9saW5lKSkKKyAgICBYU0VURkFTVElOVCAody0+ b3JpZ190b3BfbGluZSwgWEZBU1RJTlQgKHctPm9yaWdfdG9wX2xpbmUpICsgbik7CisgIGlmIChJ TlRFR0VSUCAody0+b3JpZ190b3RhbF9saW5lcykpCisgICAgWFNFVEZBU1RJTlQgKHctPm9yaWdf dG90YWxfbGluZXMsIFhGQVNUSU5UICh3LT5vcmlnX3RvdGFsX2xpbmVzKSAtIG4pOworCisgIC8q IEhhbmRsZSBqdXN0IHRoZSB0b3AgY2hpbGQgaW4gYSB2ZXJ0aWNhbCBzcGxpdC4gICovCisgIGlm ICghTklMUCAody0+dmNoaWxkKSkKKyAgICBzZXRfdGFiX2Jhcl9saW5lc18xICh3LT52Y2hpbGQs IG4pOworCisgIC8qIEFkanVzdCBhbGwgY2hpbGRyZW4gaW4gYSBob3Jpem9udGFsIHNwbGl0LiAg Ki8KKyAgZm9yICh3aW5kb3cgPSB3LT5oY2hpbGQ7ICFOSUxQICh3aW5kb3cpOyB3aW5kb3cgPSB3 LT5uZXh0KQorICAgIHsKKyAgICAgIHcgPSBYV0lORE9XICh3aW5kb3cpOworICAgICAgc2V0X3Rh Yl9iYXJfbGluZXNfMSAod2luZG93LCBuKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitzZXRf dGFiX2Jhcl9saW5lcyAoc3RydWN0IGZyYW1lICpmLCBMaXNwX09iamVjdCB2YWx1ZSkKK3sKKyAg ICBpbnQgbmxpbmVzLCBvbGluZXMsIG1heGxpbmVzOworICAgIExpc3BfT2JqZWN0IGZyYW1lLCB0 YWIsIGR1bW15OworCisgICAgaWYgKEZSQU1FX01JTklCVUZfT05MWV9QIChmKSkKKwlyZXR1cm47 CisKKyAgICBYU0VURlJBTUUoZnJhbWUsIGYpOworCisgICAgaWYgKElOVEVHRVJQICh2YWx1ZSkp CisJbmxpbmVzID0gWElOVCAodmFsdWUpOworICAgIGVsc2UKKwlubGluZXMgPSAwOworCisgICAg bWF4bGluZXMgPSBGUkFNRV9MSU5FUyAoZikgLSAzIC0gLyogZWRpdGxpbmUgKyBtb2RlbGluZSAr IG1pbmlidWYgbGluZSA9IDMgKi8KKwlGUkFNRV9NRU5VX0JBUl9MSU5FUyAoZikgLQorCUZSQU1F X1RPT0xfQkFSX0xJTkVTIChmKTsKKworICAgIChubGluZXMgPiBtYXhsaW5lcykgJiYgKG5saW5l cyA9IG1heGxpbmVzKTsKKworICAgIHN0cnVjdCBmcmFtZSAqdGhpczsKKyAgICB0aGlzID0gWEZS QU1FKGZyYW1lKTsKKyAgICBvbGluZXMgPSBGUkFNRV9UQUJfQkFSX0xJTkVTICh0aGlzKTsKKyAg ICBpZiAobmxpbmVzICE9IG9saW5lcykKKyAgICB7CisJaWYgKEVRIChmcmFtZSwgc2VsZWN0ZWRf ZnJhbWUpKQorICAgICAgICAgICAgLyogcmVkaXNwbGF5IGlzIHJlcXVpcmVkIG9ubHkgd2hlbiBv bmUgY2hhbmdlcyB0aGUKKyAgICAgICAgICAgICAgIHNlbGVjdGVkIHRhYiAqLworICAgICAgICAg ICAgd2luZG93c19vcl9idWZmZXJzX2NoYW5nZWQrKzsKKwlGUkFNRV9XSU5ET1dfU0laRVNfQ0hB TkdFRCAodGhpcykgPSAxOworCUZSQU1FX1RBQl9CQVJfTElORVMgKHRoaXMpID0gbmxpbmVzOwor CXNldF90YWJfYmFyX2xpbmVzXzEgKHRoaXMtPnJvb3Rfd2luZG93LCBubGluZXMgLSBvbGluZXMp OworCWFkanVzdF9nbHlwaHMgKHRoaXMpOworICAgIH0KKworfQorCit2b2lkCithY3RpdmF0ZV90 YWIgKHN0cnVjdCBmcmFtZSAqZiwgaW50IHRhYl9pbmRleCkKK3sKKyAgICBMaXNwX09iamVjdCBh Y3RpdmF0ZWNvZGUsIHRhYjsKKworICAgIEZSQU1FX0NVUlJFTlRfVEFCIChmKSA9IHRhYl9pbmRl eDsKKworICAgIHRhYiA9IFhDRFIgKEFSRUYgKCBmLT50YWJfYmFyX2l0ZW1zLCBmLT5jdXJyZW50 X3RhYiApICkgOworICAgIAorICAgIGFjdGl2YXRlY29kZSA9IEZhc3NxIChRdGFiX2FjdGl2YXRl LCB0YWIpOworICAgIAorICAgIGlmICghIEVRIChRbmlsLCBhY3RpdmF0ZWNvZGUpKQorICAgIHsK KwlhY3RpdmF0ZWNvZGUgPSBYQ0RSIChhY3RpdmF0ZWNvZGUpOworCXJldHVybiAodm9pZCkgRmZ1 bmNhbGwgKDEsICZhY3RpdmF0ZWNvZGUpOworICAgIH0KKworfQorCit2b2lkCitkZWFjdGl2YXRl X3RhYiAoc3RydWN0IGZyYW1lICpmKQoreworICAgIExpc3BfT2JqZWN0IGRlYWN0aXZhdGVjb2Rl LCB0YWI7CisKKyAgICB0YWIgPSBYQ0RSIChBUkVGICggZi0+dGFiX2Jhcl9pdGVtcywgZi0+Y3Vy cmVudF90YWIgKSApIDsKKyAgICAKKyAgICBkZWFjdGl2YXRlY29kZSA9IEZhc3NxIChRdGFiX2Rl YWN0aXZhdGUsIHRhYik7CisgICAgCisgICAgaWYgKCEgRVEgKFFuaWwsIGRlYWN0aXZhdGVjb2Rl KSkKKyAgICB7CisJZGVhY3RpdmF0ZWNvZGUgPSBYQ0RSIChkZWFjdGl2YXRlY29kZSk7CisJcmV0 dXJuICh2b2lkKSBGZnVuY2FsbCAoMSwgJmRlYWN0aXZhdGVjb2RlKTsKKyAgICB9CisKK30KKwor dm9pZAorc2V0X2N1cnJlbnRfdGFiIChzdHJ1Y3QgZnJhbWUgKmYsIExpc3BfT2JqZWN0IHZhbHVl KQoreworICAgIGludCBvdGFiLCB0YWI7CisKKyAgICBpZiAoRlJBTUVfTUlOSUJVRl9PTkxZX1Ag KGYpKQorCXJldHVybjsKKworICAgIExpc3BfT2JqZWN0IGZyYW1lOworICAgIFhTRVRGUkFNRShm cmFtZSwgZik7CisKKyAgICBpZiAoSU5URUdFUlAgKHZhbHVlKSkKKwl0YWIgPSBYSU5UICh2YWx1 ZSk7CisgICAgZWxzZQorCXJldHVybiAodm9pZCkgZGVhY3RpdmF0ZV90YWIgKGYpOworCisgICAg b3RhYiA9IEZSQU1FX0NVUlJFTlRfVEFCIChmKTsKKworICAgIC8qIG5vIHRhZyBpcyBhY3RpdmUg Ki8KKyAgICBpZiAoQVNJWkUgKEZSQU1FX1RBQl9CQVJfSVRFTVMgKGYpKSA8PSB0YWIpCisJcmV0 dXJuICh2b2lkKSBkZWFjdGl2YXRlX3RhYiAoZik7CisgICAgCisgICAgaWYgKHRhYiAhPSBvdGFi KQorICAgIHsKKwlpZiAoRVEgKGZyYW1lLCBzZWxlY3RlZF9mcmFtZSkpCisgICAgICAgICAgICAv KiByZWRpc3BsYXkgaXMgcmVxdWlyZWQgb25seSB3aGVuIG9uZSBjaGFuZ2VzIHRoZQorICAgICAg ICAgICAgICAgc2VsZWN0ZWQgdGFiICovCisgICAgICAgICAgICB3aW5kb3dzX29yX2J1ZmZlcnNf Y2hhbmdlZCsrOworCUZSQU1FX1dJTkRPV19TSVpFU19DSEFOR0VEIChmKSA9IDE7CisJZGVhY3Rp dmF0ZV90YWIgKGYpOworCWFjdGl2YXRlX3RhYiAoZiwgdGFiKTsKKwlhZGp1c3RfZ2x5cGhzIChm KTsKKyAgICB9CisKK30KKworCiAMCiBMaXNwX09iamVjdCBWZnJhbWVfbGlzdDsKIApAQCAtMzQ4 LDYgKzQ5MSwxMCBAQCBtYWtlX2ZyYW1lIChpbnQgbWluaV9wKQogICBmLT5mb250X2RyaXZlcl9s aXN0ID0gTlVMTDsKICAgZi0+Zm9udF9kYXRhX2xpc3QgPSBOVUxMOwogCisgIGYtPnRhYl9iYXJf aXRlbXMgPSBRbmlsOworICBmLT5jdXJyZW50X3RhYiA9IDA7CisgIGYtPmxhc3RfdGFiID0gMDsK KwogICByb290X3dpbmRvdyA9IG1ha2Vfd2luZG93ICgpOwogICBpZiAobWluaV9wKQogICAgIHsK QEAgLTU3MCw3ICs3MTcsNiBAQCBtYWtlX2luaXRpYWxfZnJhbWUgKHZvaWQpCiAgIHJldHVybiBm OwogfQogCi0KIHN0cnVjdCBmcmFtZSAqCiBtYWtlX3Rlcm1pbmFsX2ZyYW1lIChzdHJ1Y3QgdGVy bWluYWwgKnRlcm1pbmFsKQogewpAQCAtNjUwLDYgKzc5Niw0NCBAQCBnZXRfZnV0dXJlX2ZyYW1l X3BhcmFtIChMaXNwX09iamVjdCBwYXJhbWV0ZXIsCiAgIHJldHVybiByZXN1bHQ7CiB9CiAKK0xp c3BfT2JqZWN0CithZGRfdGFiIChMaXNwX09iamVjdCBwYXJtcykKK3sKKyAgTGlzcF9PYmplY3Qg dGFiLCBpbml0Y29kZSwgYWN0aXZhdGVjb2RlLCBkZWFjdGl2YXRlY29kZTsKKworICBMaXNwX09i amVjdCB0YWJfb2JqZWN0WzRdOworCisKKyAgc3RydWN0IGZyYW1lICpzZiA9IFNFTEVDVEVEX0ZS QU1FICgpOworICBpZiAoc2YtPmxhc3RfdGFiID09IDEwMDApCisgICAgcmV0dXJuOworICBjaGFy IHRhYl9uYW1lW109IiB0YWIiOworCisgIGlmIChOSUxQIChzZi0+dGFiX2Jhcl9pdGVtcykpCisg ICAgc2YtPnRhYl9iYXJfaXRlbXMgPSBGbWFrZV92ZWN0b3IgKG1ha2VfbnVtYmVyICgxMDAwKSwg UW5pbCk7CisKKyAgYWN0aXZhdGVjb2RlID0gRmFzc3EgKFF0YWJfYWN0aXZhdGUsIHBhcm1zKTsK KyAgZGVhY3RpdmF0ZWNvZGUgPSBGYXNzcSAoUXRhYl9kZWFjdGl2YXRlLCBwYXJtcyk7CisKKyAg Ly90YWIgPSBGY29ucyAobWFrZV9zdHJpbmcgKHRhYl9uYW1lLCBzaXplb2YgKHRhYl9uYW1lKS0x KSwgUW5pbCk7CisgIHRhYl9vYmplY3RbMF0gPSBtYWtlX3N0cmluZyAodGFiX25hbWUsIHNpemVv ZiAodGFiX25hbWUpLTEpOworICB0YWJfb2JqZWN0WzFdID0gYWN0aXZhdGVjb2RlOworICB0YWJf b2JqZWN0WzJdID0gZGVhY3RpdmF0ZWNvZGU7CisgIHRhYiA9IEZsaXN0ICggMywgdGFiX29iamVj dCApOworCisgIEFTRVQgKHNmLT50YWJfYmFyX2l0ZW1zLCBzZi0+bGFzdF90YWIrKywgdGFiKTsK KworICBpbml0Y29kZSA9IEZhc3NxIChRdGFiX2luaXQsIHBhcm1zKTsKKworICBpZiAoISBFUSAo UW5pbCwgaW5pdGNvZGUpKQorICAgIHsKKyAgICAgIGluaXRjb2RlID0gWENEUiAoaW5pdGNvZGUp OworICAgICAgcmV0dXJuIEZmdW5jYWxsICgxLCAmaW5pdGNvZGUpOworICAgIH0KKworICByZXR1 cm4gUW5pbDsKK30KKwogREVGVU4gKCJtYWtlLXRlcm1pbmFsLWZyYW1lIiwgRm1ha2VfdGVybWlu YWxfZnJhbWUsIFNtYWtlX3Rlcm1pbmFsX2ZyYW1lLAogICAgICAgIDEsIDEsIDAsCiAgICAgICAg ZG9jOiAvKiBDcmVhdGUgYW4gYWRkaXRpb25hbCB0ZXJtaW5hbCBmcmFtZSwgcG9zc2libHkgb24g YW5vdGhlciB0ZXJtaW5hbC4KQEAgLTY3NCwxMCArODU4LDE3IEBAIGFmZmVjdHMgYWxsIGZyYW1l cyBvbiB0aGUgc2FtZSB0ZXJtaW5hbCBkZXZpY2UuICAqLykKICAgTGlzcF9PYmplY3QgZnJhbWUs IHRlbTsKICAgc3RydWN0IGZyYW1lICpzZiA9IFNFTEVDVEVEX0ZSQU1FICgpOwogCisgIExpc3Bf T2JqZWN0IHRhYjsKKworICB0YWIgPSBGYXNzcSAoUXRhYiwgcGFybXMpOworICBpZiAoISBFUSAo UW5pbCwgdGFiKSkKKyAgICAgIHJldHVybiBhZGRfdGFiIChwYXJtcyk7CisKKwogI2lmZGVmIE1T RE9TCiAgIGlmIChzZi0+b3V0cHV0X21ldGhvZCAhPSBvdXRwdXRfbXNkb3NfcmF3CiAgICAgICAm JiBzZi0+b3V0cHV0X21ldGhvZCAhPSBvdXRwdXRfdGVybWNhcCkKLSAgICBhYm9ydCAoKTsKKyAg ICAgIGFib3J0ICgpOwogI2Vsc2UgLyogbm90IE1TRE9TICovCiAKICNpZmRlZiBXSU5ET1dTTlQg ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUaGlzIHNob3VsZCB3b3JrIG5vdyEgKi8KQEAg LTIyODYsOSArMjQ3NywxMyBAQCBzdG9yZV9mcmFtZV9wYXJhbSAoc3RydWN0IGZyYW1lICpmLCBM aXNwX09iamVjdCBwcm9wLCBMaXNwX09iamVjdCB2YWwpCiAgIGlmICghIEZSQU1FX1dJTkRPV19Q IChmKSkKICAgICB7CiAgICAgICBpZiAoRVEgKHByb3AsIFFtZW51X2Jhcl9saW5lcykpCi0Jc2V0 X21lbnVfYmFyX2xpbmVzIChmLCB2YWwsIG1ha2VfbnVtYmVyIChGUkFNRV9NRU5VX0JBUl9MSU5F UyAoZikpKTsKKwkgIHNldF9tZW51X2Jhcl9saW5lcyAoZiwgdmFsLCBtYWtlX251bWJlciAoRlJB TUVfTUVOVV9CQVJfTElORVMgKGYpKSk7CisgICAgICBlbHNlIGlmIChFUSAocHJvcCwgUXRhYl9i YXJfbGluZXMpKQorCSAgc2V0X3RhYl9iYXJfbGluZXMgKGYsIHZhbCk7CiAgICAgICBlbHNlIGlm IChFUSAocHJvcCwgUW5hbWUpKQogCXNldF90ZXJtX2ZyYW1lX25hbWUgKGYsIHZhbCk7CisgICAg ICBlbHNlIGlmIChFUSAocHJvcCwgUWN1cnJlbnRfdGFiKSkKKyAgICAgIAlzZXRfY3VycmVudF90 YWIgKGYsIHZhbCk7CiAgICAgfQogCiAgIGlmIChFUSAocHJvcCwgUW1pbmlidWZmZXIpICYmIFdJ TkRPV1AgKHZhbCkpCkBAIC0yMzk0LDExICsyNTg5LDE0IEBAIElmIEZSQU1FIGlzIG9taXR0ZWQs IHJldHVybiBpbmZvcm1hdGlvbiBvbiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGZyYW1lLiAgKi8p CiAjZW5kaWYKICAgICB7CiAgICAgICAvKiBUaGlzIG91Z2h0IHRvIGJlIGNvcnJlY3QgaW4gZi0+ cGFyYW1fYWxpc3QgZm9yIGFuIFggZnJhbWUuICAqLwotICAgICAgTGlzcF9PYmplY3QgbGluZXM7 CisJTGlzcF9PYmplY3QgbGluZXMsIGl0ZW1zOwogICAgICAgWFNFVEZBU1RJTlQgKGxpbmVzLCBG UkFNRV9NRU5VX0JBUl9MSU5FUyAoZikpOwogICAgICAgc3RvcmVfaW5fYWxpc3QgKCZhbGlzdCwg UW1lbnVfYmFyX2xpbmVzLCBsaW5lcyk7CisgICAgICBYU0VURkFTVElOVCAobGluZXMsIEZSQU1F X1RBQl9CQVJfTElORVMgKGYpKTsKKyAgICAgIHN0b3JlX2luX2FsaXN0ICgmYWxpc3QsIFF0YWJf YmFyX2xpbmVzLCBsaW5lcyk7CisgICAgICBYU0VURkFTVElOVCAobGluZXMsIEZSQU1FX0NVUlJF TlRfVEFCIChmKSk7CisgICAgICBzdG9yZV9pbl9hbGlzdCAoJmFsaXN0LCBRY3VycmVudF90YWIs IGxpbmVzKTsKICAgICB9Ci0KICAgVU5HQ1BSTzsKICAgcmV0dXJuIGFsaXN0OwogfQpAQCAtMjgy Miw2ICszMDIwLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmcmFtZV9wYXJtX3RhYmxlIGZyYW1l X3Bhcm1zW10gPQogICB7Imljb24tdHlwZSIsCQkJJlFpY29uX3R5cGV9LAogICB7ImludGVybmFs LWJvcmRlci13aWR0aCIsCSZRaW50ZXJuYWxfYm9yZGVyX3dpZHRofSwKICAgeyJtZW51LWJhci1s aW5lcyIsCQkmUW1lbnVfYmFyX2xpbmVzfSwKKyAgeyJ0YWItYmFyLWxpbmVzIiwJCSZRdGFiX2Jh cl9saW5lc30sCisgIHsiY3VycmVudC10YWIiLAkJJlFjdXJyZW50X3RhYn0sCiAgIHsibW91c2Ut Y29sb3IiLAkJJlFtb3VzZV9jb2xvcn0sCiAgIHsibmFtZSIsCQkJJlFuYW1lfSwKICAgeyJzY3Jv bGwtYmFyLXdpZHRoIiwJCSZRc2Nyb2xsX2Jhcl93aWR0aH0sCkBAIC00NDQzLDYgKzQ2NDMsMTYg QEAgc3ltc19vZl9mcmFtZSAodm9pZCkKICAgUXRlcm1pbmFsX2xpdmVfcCA9IGludGVybl9jX3N0 cmluZyAoInRlcm1pbmFsLWxpdmUtcCIpOwogICBzdGF0aWNwcm8gKCZRdGVybWluYWxfbGl2ZV9w KTsKIAorICBRdGFiID0gaW50ZXJuX2Nfc3RyaW5nICgidGFiIik7CisgIHN0YXRpY3BybyAoJlF0 YWIpOworCisgIFF0YWJfYWN0aXZhdGUgPSBpbnRlcm5fY19zdHJpbmcgKCJ0YWI6YWN0aXZhdGUi KTsKKyAgc3RhdGljcHJvICgmUXRhYl9hY3RpdmF0ZSk7CisgIFF0YWJfZGVhY3RpdmF0ZSA9IGlu dGVybl9jX3N0cmluZyAoInRhYjpkZWFjdGl2YXRlIik7CisgIHN0YXRpY3BybyAoJlF0YWJfZGVh Y3RpdmF0ZSk7CisgIFF0YWJfaW5pdCA9IGludGVybl9jX3N0cmluZyAoInRhYjppbml0Iik7Cisg IHN0YXRpY3BybyAoJlF0YWJfaW5pdCk7CisKICNpZmRlZiBIQVZFX05TCiAgIFFuc19wYXJzZV9n ZW9tZXRyeSA9IGludGVybl9jX3N0cmluZyAoIm5zLXBhcnNlLWdlb21ldHJ5Iik7CiAgIHN0YXRp Y3BybyAoJlFuc19wYXJzZV9nZW9tZXRyeSk7CmRpZmYgLS1naXQgYS9zcmMvZnJhbWUuaCBiL3Ny Yy9mcmFtZS5oCmluZGV4IDMxZjYwMTcuLmI5MDg0YTIgMTAwNjQ0Ci0tLSBhL3NyYy9mcmFtZS5o CisrKyBiL3NyYy9mcmFtZS5oCkBAIC0xNzEsNiArMTcxLDEyIEBAIHN0cnVjdCBmcmFtZQogICAg ICBPbmx5IHRoZSBYIHRvb2xraXQgdmVyc2lvbiB1c2VzIHRoaXMuICAqLwogICBMaXNwX09iamVj dCBtZW51X2Jhcl92ZWN0b3I7CiAKKyAgICAvKgorICAgICAqIGEgbGlzdCB3aXRoIGNvbnNlcyBv ZiB0aGUgZm9ybSAoInN0cmluZ190YWJfbmFtZSIgLiAoYWxpc3RfdGFiX3BhcmFtZXRlcnMpKQor ICAgICAqLworICAgIExpc3BfT2JqZWN0IHRhYl9iYXJfaXRlbXM7CisKKwogICAvKiBQcmVkaWNh dGUgZm9yIHNlbGVjdGluZyBidWZmZXJzIGZvciBvdGhlci1idWZmZXIuICAqLwogICBMaXNwX09i amVjdCBidWZmZXJfcHJlZGljYXRlOwogCkBAIC0yMDMsNiArMjA5LDEzIEBAIHN0cnVjdCBmcmFt ZQogICAvKiBDYWNoZSBvZiByZWFsaXplZCBmYWNlcy4gICovCiAgIHN0cnVjdCBmYWNlX2NhY2hl ICpmYWNlX2NhY2hlOwogCisgICAgLyoKKyAgICAgIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBhY3Rp dmF0ZWQgdGFiLgorICAgICAqLworICAgIGludCBjdXJyZW50X3RhYjsKKworICAgIGludCBsYXN0 X3RhYjsKKwogICAvKiBOdW1iZXIgb2YgZWxlbWVudHMgaW4gYG1lbnVfYmFyX3ZlY3RvcicgdGhh dCBoYXZlIG1lYW5pbmdmdWwgZGF0YS4gICovCiAgIEVNQUNTX0lOVCBtZW51X2Jhcl9pdGVtc191 c2VkOwogCkBAIC0zNjAsNiArMzczLDggQEAgc3RydWN0IGZyYW1lCiAgIC8qIE51bWJlciBvZiBs aW5lcyBvZiBtZW51IGJhci4gICovCiAgIGludCBtZW51X2Jhcl9saW5lczsKIAorICAgIGludCB0 YWJfYmFyX2xpbmVzOworCiAjaWYgZGVmaW5lZCAoVVNFX1hfVE9PTEtJVCkgfHwgZGVmaW5lZCAo SEFWRV9OVEdVSSkgXAogICAgIHx8IGRlZmluZWQgKEhBVkVfTlMpIHx8IGRlZmluZWQgKFVTRV9H VEspCiAgIC8qIE5vbnplcm8gbWVhbnMgdXNpbmcgYSBtZW51IGJhciB0aGF0IGNvbWVzIGZyb20g dGhlIFggdG9vbGtpdC4gICovCkBAIC01OTAsNiArNjA1LDExIEBAIHR5cGVkZWYgc3RydWN0IGZy YW1lICpGUkFNRV9QVFI7CiAgICBUaGVzZSBsaW5lcyBhcmUgY291bnRlZCBpbiBGUkFNRV9MSU5F Uy4gICovCiAjZGVmaW5lIEZSQU1FX01FTlVfQkFSX0xJTkVTKGYpIChmKS0+bWVudV9iYXJfbGlu ZXMKIAorI2RlZmluZSBGUkFNRV9DVVJSRU5UX1RBQihmKSBmIC0+IGN1cnJlbnRfdGFiCisjZGVm aW5lIEZSQU1FX1RBQl9CQVJfSVRFTVMoZikgZiAtPiB0YWJfYmFyX2l0ZW1zCisjZGVmaW5lIEZS QU1FX1RBQl9CQVJfTElORVMoZikgZiAtPiB0YWJfYmFyX2xpbmVzCisKKwogLyogTm9uemVybyBp ZiB0aGlzIGZyYW1lIHNob3VsZCBkaXNwbGF5IGEgdG9vbCBiYXIKICAgIGluIGEgd2F5IHRoYXQg ZG9lcyBub3QgdXNlIGFueSB0ZXh0IGxpbmVzLiAgKi8KICNpZiBkZWZpbmVkIChVU0VfR1RLKSB8 fCBkZWZpbmVkIChIQVZFX05TKQpAQCAtNjA2LDcgKzYyNiw3IEBAIHR5cGVkZWYgc3RydWN0IGZy YW1lICpGUkFNRV9QVFI7CiAvKiBMaW5lcyBhYm92ZSB0aGUgdG9wLW1vc3Qgd2luZG93IGluIGZy YW1lIEYuICAqLwogCiAjZGVmaW5lIEZSQU1FX1RPUF9NQVJHSU4oRikgXAotICAgICAoRlJBTUVf TUVOVV9CQVJfTElORVMgKEYpICsgRlJBTUVfVE9PTF9CQVJfTElORVMgKEYpKQorICAgICAoRlJB TUVfTUVOVV9CQVJfTElORVMgKEYpICsgRlJBTUVfVE9PTF9CQVJfTElORVMgKEYpICsgRlJBTUVf VEFCX0JBUl9MSU5FUyhGKSkKIAogLyogUGl4ZWwgaGVpZ2h0IG9mIHRoZSB0b3AgbWFyZ2luIGFi b3ZlLiAgKi8KIApAQCAtODM1LDEwICs4NTUsOSBAQCB0eXBlZGVmIHN0cnVjdCBmcmFtZSAqRlJB TUVfUFRSOwogI2RlZmluZSBGT1JfRUFDSF9GUkFNRShsaXN0X3ZhciwgZnJhbWVfdmFyKQkJCVwK ICAgZm9yICgobGlzdF92YXIpID0gVmZyYW1lX2xpc3Q7CQkJCVwKICAgICAgICAoQ09OU1AgKGxp c3RfdmFyKQkJCQkJXAotCSYmIChmcmFtZV92YXIgPSBYQ0FSIChsaXN0X3ZhciksIDEpKTsJCVwK KwkmJiAoZnJhbWVfdmFyID0gWENBUiAobGlzdF92YXIpLCAxKSk7CQkJXAogICAgICAgIGxpc3Rf dmFyID0gWENEUiAobGlzdF92YXIpKQogCi0KIGV4dGVybiBMaXNwX09iamVjdCBRZnJhbWVwLCBR ZnJhbWVfbGl2ZV9wOwogZXh0ZXJuIExpc3BfT2JqZWN0IFF0dHksIFF0dHlfdHlwZTsKIGV4dGVy biBMaXNwX09iamVjdCBRdHR5X2NvbG9yX21vZGU7CmRpZmYgLS1naXQgYS9zcmMvd2luZG93LmMg Yi9zcmMvd2luZG93LmMKaW5kZXggYTJhMGM3OS4uNzA5NjQ4OCAxMDA2NDQKLS0tIGEvc3JjL3dp bmRvdy5jCisrKyBiL3NyYy93aW5kb3cuYwpAQCAtNTgzMiw2ICs1ODMyLDcgQEAgc3RydWN0IHNh dmVfd2luZG93X2RhdGEKIAogICAgIGludCBmcmFtZV9jb2xzLCBmcmFtZV9saW5lcywgZnJhbWVf bWVudV9iYXJfbGluZXM7CiAgICAgaW50IGZyYW1lX3Rvb2xfYmFyX2xpbmVzOworICAgIGludCBm cmFtZV90YWJfYmFyX2xpbmVzOwogICB9OwogCiAvKiBUaGlzIGlzIHNhdmVkIGFzIGEgTGlzcF9W ZWN0b3IgICovCkBAIC01OTYzLDYgKzU5NjQsNyBAQCB0aGUgcmV0dXJuIHZhbHVlIGlzIG5pbC4g IE90aGVyd2lzZSB0aGUgdmFsdWUgaXMgdC4gICovKQogICAgICAgaW50IHByZXZpb3VzX2ZyYW1l X2NvbHMgPSAgRlJBTUVfQ09MUyAgKGYpOwogICAgICAgaW50IHByZXZpb3VzX2ZyYW1lX21lbnVf YmFyX2xpbmVzID0gRlJBTUVfTUVOVV9CQVJfTElORVMgKGYpOwogICAgICAgaW50IHByZXZpb3Vz X2ZyYW1lX3Rvb2xfYmFyX2xpbmVzID0gRlJBTUVfVE9PTF9CQVJfTElORVMgKGYpOworICAgICAg aW50IHByZXZpb3VzX2ZyYW1lX3RhYl9iYXJfbGluZXMgPSBGUkFNRV9UQUJfQkFSX0xJTkVTIChm KTsKIAogICAgICAgLyogVGhlIG1vdXNlIGhpZ2hsaWdodGluZyBjb2RlIGNvdWxkIGdldCBzY3Jl d2VkIHVwCiAJIGlmIGl0IHJ1bnMgZHVyaW5nIHRoaXMuICAqLwpAQCAtNjQxNCw2ICs2NDE2LDcg QEAgcmVkaXJlY3Rpb24gKHNlZSBgcmVkaXJlY3QtZnJhbWUtZm9jdXMnKS4gICovKQogICBkYXRh LT5mcmFtZV9saW5lcyA9IEZSQU1FX0xJTkVTIChmKTsKICAgZGF0YS0+ZnJhbWVfbWVudV9iYXJf bGluZXMgPSBGUkFNRV9NRU5VX0JBUl9MSU5FUyAoZik7CiAgIGRhdGEtPmZyYW1lX3Rvb2xfYmFy X2xpbmVzID0gRlJBTUVfVE9PTF9CQVJfTElORVMgKGYpOworICBkYXRhLT5mcmFtZV90YWJfYmFy X2xpbmVzID0gRlJBTUVfVEFCX0JBUl9MSU5FUyAoZik7CiAgIGRhdGEtPnNlbGVjdGVkX2ZyYW1l ID0gc2VsZWN0ZWRfZnJhbWU7CiAgIGRhdGEtPmN1cnJlbnRfd2luZG93ID0gRlJBTUVfU0VMRUNU RURfV0lORE9XIChmKTsKICAgWFNFVEJVRkZFUiAoZGF0YS0+Y3VycmVudF9idWZmZXIsIGN1cnJl bnRfYnVmZmVyKTsKQEAgLTY5MTAsNiArNjkxMyw4IEBAIGNvbXBhcmVfd2luZG93X2NvbmZpZ3Vy YXRpb25zIChMaXNwX09iamVjdCBjMSwgTGlzcF9PYmplY3QgYzIsIGludCBpZ25vcmVfcG9zaXRp CiAgICAgcmV0dXJuIDA7CiAgIGlmIChkMS0+ZnJhbWVfbWVudV9iYXJfbGluZXMgIT0gZDItPmZy YW1lX21lbnVfYmFyX2xpbmVzKQogICAgIHJldHVybiAwOworICBpZiAoZDEtPmZyYW1lX3RhYl9i YXJfbGluZXMgIT0gZDItPmZyYW1lX3RhYl9iYXJfbGluZXMpCisgICAgcmV0dXJuIDA7CiAgIGlm ICghIEVRIChkMS0+c2VsZWN0ZWRfZnJhbWUsIGQyLT5zZWxlY3RlZF9mcmFtZSkpCiAgICAgcmV0 dXJuIDA7CiAgIC8qIERvbid0IGNvbXBhcmUgdGhlIGN1cnJlbnRfd2luZG93IGZpZWxkIGRpcmVj dGx5LgpkaWZmIC0tZ2l0IGEvc3JjL3hkaXNwLmMgYi9zcmMveGRpc3AuYwppbmRleCA3N2U5ZGIy Li4xODY1ZWIwIDEwMDY0NAotLS0gYS9zcmMveGRpc3AuYworKysgYi9zcmMveGRpc3AuYwpAQCAt MTA1OSw2ICsxMDU5LDggQEAgc3RhdGljIGludCBzdG9yZV9tb2RlX2xpbmVfc3RyaW5nIChjb25z dCBjaGFyICosIExpc3BfT2JqZWN0LCBpbnQsIGludCwgaW50LCBMaXMKIHN0YXRpYyBjb25zdCBj aGFyICpkZWNvZGVfbW9kZV9zcGVjIChzdHJ1Y3Qgd2luZG93ICosIGludCwgaW50LCBpbnQsCiAJ CQkJICAgICBMaXNwX09iamVjdCAqKTsKIHN0YXRpYyB2b2lkIGRpc3BsYXlfbWVudV9iYXIgKHN0 cnVjdCB3aW5kb3cgKik7CitzdGF0aWMgdm9pZCBkaXNwbGF5X3RhYl9iYXIgKHN0cnVjdCB3aW5k b3cgKncpOworCiBzdGF0aWMgaW50IGRpc3BsYXlfY291bnRfbGluZXMgKEVNQUNTX0lOVCwgRU1B Q1NfSU5ULCBFTUFDU19JTlQsIGludCwKIAkJCQlFTUFDU19JTlQgKik7CiBzdGF0aWMgaW50IGRp c3BsYXlfc3RyaW5nIChjb25zdCB1bnNpZ25lZCBjaGFyICosIExpc3BfT2JqZWN0LCBMaXNwX09i amVjdCwKQEAgLTE0NTc1LDYgKzE0NTc3LDcgQEAgcmVkaXNwbGF5X3dpbmRvdyAoTGlzcF9PYmpl Y3Qgd2luZG93LCBpbnQganVzdF90aGlzX29uZV9wKQogICAgICAgJiYgRVEgKEZSQU1FX1NFTEVD VEVEX1dJTkRPVyAoZiksIHdpbmRvdykpCiAgICAgewogICAgICAgaW50IHJlZGlzcGxheV9tZW51 X3AgPSAwOworICAgICAgaW50IHJlZGlzcGxheV90YWJfcCA9IDA7CiAgICAgICBpbnQgcmVkaXNw bGF5X3Rvb2xfYmFyX3AgPSAwOwogCiAgICAgICBpZiAoRlJBTUVfV0lORE9XX1AgKGYpKQpAQCAt MTQ1ODksOSArMTQ1OTIsMTQgQEAgcmVkaXNwbGF5X3dpbmRvdyAoTGlzcF9PYmplY3Qgd2luZG93 LCBpbnQganVzdF90aGlzX29uZV9wKQogICAgICAgZWxzZQogICAgICAgICByZWRpc3BsYXlfbWVu dV9wID0gRlJBTUVfTUVOVV9CQVJfTElORVMgKGYpID4gMDsKIAorICAgICAgcmVkaXNwbGF5X3Rh Yl9wID0gRlJBTUVfVEFCX0JBUl9MSU5FUyAoZikgPiAwOworCiAgICAgICBpZiAocmVkaXNwbGF5 X21lbnVfcCkKICAgICAgICAgZGlzcGxheV9tZW51X2JhciAodyk7CiAKKyAgICAgIGlmIChyZWRp c3BsYXlfdGFiX3ApCisJICBkaXNwbGF5X3RhYl9iYXIgKHcpOworCiAjaWZkZWYgSEFWRV9XSU5E T1dfU1lTVEVNCiAgICAgICBpZiAoRlJBTUVfV0lORE9XX1AgKGYpKQogICAgICAgICB7CkBAIC0x ODE3Niw2ICsxODE4NCw3NCBAQCBTZWUgYWxzbyBgYmlkaS1wYXJhZ3JhcGgtZGlyZWN0aW9uJy4g ICovKQogICAgIH0KIH0KIAordm9pZAorZGlzcGxheV90YWJfYmFyIChzdHJ1Y3Qgd2luZG93ICp3 KQoreworICAgIGNvbnN0IGludCB0YWJfbGVuZ3RoID0gMTA7CisKKyAgICBzdHJ1Y3QgZnJhbWUg KmZyID0gWEZSQU1FIChXSU5ET1dfRlJBTUUgKHcpKTsKKworICAgIHN0cnVjdCBpdCBpdDsKKyAg ICBpbnQgaW5kZXg7CisgICAgaW5pdF9pdGVyYXRvciAoJml0LCB3LCAtMSwgLTEsCisJCSAgIGZy LT5kZXNpcmVkX21hdHJpeC0+cm93cyArIEZSQU1FX01FTlVfQkFSX0xJTkVTIChmciksCisJCSAg IERFRkFVTFRfRkFDRV9JRCk7CisgICAgaXQuZmlyc3RfdmlzaWJsZV94ID0gMDsKKyAgICBpdC5s YXN0X3Zpc2libGVfeCA9IEZSQU1FX0NPTFMgKGZyKTsKKworICAvKiBDbGVhciBhbGwgcm93cyBv ZiB0aGUgbWVudSBiYXIuICAqLworICBmb3IgKGluZGV4ID0gMDsKKyAgICAgICBpbmRleCA8IEZS QU1FX1RBQl9CQVJfTElORVMgKGZyKTsKKyAgICAgICArK2luZGV4KQorICAgIHsKKyAgICAgIHN0 cnVjdCBnbHlwaF9yb3cgKnJvdyA9IGl0LmdseXBoX3JvdyArIGluZGV4OworICAgICAgY2xlYXJf Z2x5cGhfcm93IChyb3cpOworICAgICAgcm93LT5lbmFibGVkX3AgPSAxOworICAgICAgcm93LT5m dWxsX3dpZHRoX3AgPSAxOworICAgIH0KKworICBpbnQgaWk9MCwgb2Rkcm93PTAsIG9kZGNvbD0w OworICBMaXNwX09iamVjdCB0YWIsIHM7CisgIHdoaWxlICghTklMUCAodGFiID0gQVJFRiAoZnIt PnRhYl9iYXJfaXRlbXMsIGlpKSkpIAorICB7CisgICAgICBpZiAoaXQuIGhwb3MgKyB0YWJfbGVu Z3RoID4gRlJBTUVfQ09MUyAoZnIpKQorICAgICAgeworCSAgLyogRmlsbCBvdXQgdGhlIGxpbmUg d2l0aCBzcGFjZXMuICAqLworCSAgaXQuYmFzZV9mYWNlX2lkID0gREVGQVVMVF9GQUNFX0lEOwor CSAgd2hpbGUgKGl0LmN1cnJlbnRfeCA8IGl0Lmxhc3RfdmlzaWJsZV94KQorCSAgICAgIGRpc3Bs YXlfc3RyaW5nICgiICIsIFFuaWwsIFFuaWwsIDAsIDAsICAmaXQsIDEsIDAsIDAsIC0xKTsKKwor ICAJICBpZiAodW5peCA9PSAoaXQuY3VycmVudF95ICsgMSkpCisJICAgICAgb2RkY29sID0gaWkg JSAyOworCisJICBvZGRyb3cgPSAob2RkY29sKT8gKGlpJTIpIDogIW9kZHJvdzsKKworICAgICAg CSAgaXQuaHBvcyA9IGl0LmN1cnJlbnRfeCA9IDA7CisJICBpdC5jdXJyZW50X3kgKys7CisgICAg ICAJICArK2l0LnZwb3M7CisgICAgICAJICBpdC5nbHlwaF9yb3crKzsKKwkgIGlmIChpdC5jdXJy ZW50X3kgPiBGUkFNRV9UQUJfQkFSX0xJTkVTIChmcikpCisgICAgICAJICAgICAgYnJlYWs7Cisg ICAgICB9CisKKyAgICAgIGl0LmJhc2VfZmFjZV9pZCA9IChpaSA9PSBGUkFNRV9DVVJSRU5UX1RB QiAoZnIpKSA/IENVUlJFTlRfVEFCX0ZBQ0VfSUQgOgorICAgICAgCSAgIG9kZHJvdyA/IE9ERF9U QUJfRkFDRV9JRCA6CisgICAgICAJICBFVkVOX1RBQl9GQUNFX0lEOworICAgICAgCisgICAgICBp bnQgbGVuID0gU0NIQVJTIChYQ0FSKHRhYikpID4gdGFiX2xlbmd0aCA/IHRhYl9sZW5ndGg6IFND SEFSUyAoWENBUiAodGFiKSk7CisgICAgICBzID0gRnN1YnN0cmluZyAoWENBUiAodGFiKSwgbWFr ZV9udW1iZXIoMCksIG1ha2VfbnVtYmVyIChsZW4pKTsKKyAgICAgIGRpc3BsYXlfc3RyaW5nIChO VUxMLCBzLCBRbmlsLCAwLCAwLCAmaXQsIHRhYl9sZW5ndGgsIDAsIDAsIC0xKTsKKworICAgICAg b2Rkcm93ID0gISBvZGRyb3c7CisgICAgICBpaSsrOworICB9CisKKyAgCisgIC8qIENvbXB1dGUg dGhlIHRvdGFsIGhlaWdodCBvZiB0aGUgbGluZXMuICAqLworICBjb21wdXRlX2xpbmVfbWV0cmlj cyAoJml0KTsKKworfQorCiAKIAwKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpkaWZmIC0tZ2l0IGEvc3JjL3hm YWNlcy5jIGIvc3JjL3hmYWNlcy5jCmluZGV4IDVjN2NmZTYuLjNlMTRhNjQgMTAwNjQ0Ci0tLSBh L3NyYy94ZmFjZXMuYworKysgYi9zcmMveGZhY2VzLmMKQEAgLTM0OCw2ICszNDgsNyBAQCBMaXNw X09iamVjdCBRZnJhbWVfc2V0X2JhY2tncm91bmRfbW9kZTsKIExpc3BfT2JqZWN0IFFkZWZhdWx0 LCBRdG9vbF9iYXIsIFFyZWdpb24sIFFmcmluZ2U7CiBMaXNwX09iamVjdCBRaGVhZGVyX2xpbmUs IFFzY3JvbGxfYmFyLCBRY3Vyc29yLCBRYm9yZGVyLCBRbW91c2UsIFFtZW51OwogTGlzcF9PYmpl Y3QgUW1vZGVfbGluZV9pbmFjdGl2ZSwgUXZlcnRpY2FsX2JvcmRlcjsKK0xpc3BfT2JqZWN0IFFv ZGRfdGFiX2ZhY2UsIFFldmVuX3RhYl9mYWNlLCBRY3VycmVudF90YWJfZmFjZTsKIAogLyogVGhl IHN5bWJvbCBgZmFjZS1hbGlhcycuICBBIHN5bWJvbHMgaGF2aW5nIHRoYXQgcHJvcGVydHkgaXMg YW4KICAgIGFsaWFzIGZvciBhbm90aGVyIGZhY2UuICBWYWx1ZSBvZiB0aGUgcHJvcGVydHkgaXMg dGhlIG5hbWUgb2YKQEAgLTUzODksNiArNTM5MCw5IEBAIHJlYWxpemVfYmFzaWNfZmFjZXMgKHN0 cnVjdCBmcmFtZSAqZikKICAgICAgIHJlYWxpemVfbmFtZWRfZmFjZSAoZiwgUW1vdXNlLCBNT1VT RV9GQUNFX0lEKTsKICAgICAgIHJlYWxpemVfbmFtZWRfZmFjZSAoZiwgUW1lbnUsIE1FTlVfRkFD RV9JRCk7CiAgICAgICByZWFsaXplX25hbWVkX2ZhY2UgKGYsIFF2ZXJ0aWNhbF9ib3JkZXIsIFZF UlRJQ0FMX0JPUkRFUl9GQUNFX0lEKTsKKyAgICAgIHJlYWxpemVfbmFtZWRfZmFjZSAoZiwgUWN1 cnJlbnRfdGFiX2ZhY2UsIENVUlJFTlRfVEFCX0ZBQ0VfSUQpOworICAgICAgcmVhbGl6ZV9uYW1l ZF9mYWNlIChmLCBRb2RkX3RhYl9mYWNlLCBPRERfVEFCX0ZBQ0VfSUQpOworICAgICAgcmVhbGl6 ZV9uYW1lZF9mYWNlIChmLCBRZXZlbl90YWJfZmFjZSwgRVZFTl9UQUJfRkFDRV9JRCk7CiAKICAg ICAgIC8qIFJlZmxlY3QgY2hhbmdlcyBpbiB0aGUgYG1lbnUnIGZhY2UgaW4gbWVudSBiYXJzLiAg Ki8KICAgICAgIGlmIChGUkFNRV9GQUNFX0NBQ0hFIChmKS0+bWVudV9mYWNlX2NoYW5nZWRfcCkK QEAgLTY2NTksNiArNjY2MywxMiBAQCBzeW1zX29mX3hmYWNlcyAodm9pZCkKICAgc3RhdGljcHJv ICgmUW1vZGVfbGluZV9pbmFjdGl2ZSk7CiAgIFF2ZXJ0aWNhbF9ib3JkZXIgPSBpbnRlcm5fY19z dHJpbmcgKCJ2ZXJ0aWNhbC1ib3JkZXIiKTsKICAgc3RhdGljcHJvICgmUXZlcnRpY2FsX2JvcmRl cik7CisgIFFjdXJyZW50X3RhYl9mYWNlID0gaW50ZXJuICgiY3VycmVudC10YWItZmFjZSIpOwor ICBzdGF0aWNwcm8gKCZRY3VycmVudF90YWJfZmFjZSk7CisgIFFvZGRfdGFiX2ZhY2UgPSBpbnRl cm4gKCJvZGQtdGFiLWZhY2UiKTsKKyAgc3RhdGljcHJvICgmUW9kZF90YWJfZmFjZSk7CisgIFFl dmVuX3RhYl9mYWNlID0gaW50ZXJuICgiZXZlbi10YWItZmFjZSIpOworICBzdGF0aWNwcm8gKCZR ZXZlbl90YWJfZmFjZSk7CiAgIFF0dHlfY29sb3JfZGVzYyA9IGludGVybl9jX3N0cmluZyAoInR0 eS1jb2xvci1kZXNjIik7CiAgIHN0YXRpY3BybyAoJlF0dHlfY29sb3JfZGVzYyk7CiAgIFF0dHlf Y29sb3Jfc3RhbmRhcmRfdmFsdWVzID0gaW50ZXJuX2Nfc3RyaW5nICgidHR5LWNvbG9yLXN0YW5k YXJkLXZhbHVlcyIpOwotLSAKMS43LjEKCg== --0015176f1376c91c8d0496752d57--