From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: martin rudalics Newsgroups: gmane.emacs.bugs Subject: bug#23546: 25.1.50; scroll-restore-mode breaks comint-mode Date: Wed, 18 May 2016 09:01:22 +0200 Message-ID: <573C1342.1040408@gmx.at> References: <5738CD38.7030907@gmail.com> <573982E5.9020005@gmx.at> <573B58B9.50409@gmail.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------070208020304090709000404" X-Trace: ger.gmane.org 1463554970 19321 80.91.229.3 (18 May 2016 07:02:50 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 18 May 2016 07:02:50 +0000 (UTC) To: Dmitry Alexandrov <321942@gmail.com>, 23546@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed May 18 09:02:35 2016 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1b2vV4-0001Kg-6O for geb-bug-gnu-emacs@m.gmane.org; Wed, 18 May 2016 09:02:34 +0200 Original-Received: from localhost ([::1]:43312 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b2vUy-0002Ti-9P for geb-bug-gnu-emacs@m.gmane.org; Wed, 18 May 2016 03:02:28 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:43389) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b2vUh-0002Kg-Nh for bug-gnu-emacs@gnu.org; Wed, 18 May 2016 03:02:12 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b2vUZ-0001MU-3n for bug-gnu-emacs@gnu.org; Wed, 18 May 2016 03:02:08 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:44133) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b2vUZ-0001MQ-1F for bug-gnu-emacs@gnu.org; Wed, 18 May 2016 03:02:03 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1b2vUY-00065b-Rq for bug-gnu-emacs@gnu.org; Wed, 18 May 2016 03:02:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: martin rudalics Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 18 May 2016 07:02:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 23546 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 23546-submit@debbugs.gnu.org id=B23546.146355491623389 (code B ref 23546); Wed, 18 May 2016 07:02:02 +0000 Original-Received: (at 23546) by debbugs.gnu.org; 18 May 2016 07:01:56 +0000 Original-Received: from localhost ([127.0.0.1]:56469 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b2vUS-00065A-8R for submit@debbugs.gnu.org; Wed, 18 May 2016 03:01:56 -0400 Original-Received: from mout.gmx.net ([212.227.17.20]:56097) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b2vUQ-00064x-Bj for 23546@debbugs.gnu.org; Wed, 18 May 2016 03:01:54 -0400 Original-Received: from [192.168.1.100] ([212.95.7.115]) by mail.gmx.com (mrgmx102) with ESMTPSA (Nemesis) id 0MUm1o-1b47nT3mqy-00YApZ; Wed, 18 May 2016 09:01:48 +0200 In-Reply-To: <573B58B9.50409@gmail.com> X-Provags-ID: V03:K0:ghnd2/MF5GEZb/jiw02Y3PFH5FnM/9A6mAj+zmn9HxntDs9lgKM q+BtwYDn2tBvgCNcFFyfUrKOQb3bMzlT5GbixglYe+wNkksD28Yxhpr7Fy2Tfdbx2xncz7l s83bGc50XyoK1qkjk3rzxKibXYfRrf82F9fnn7ulcN09C01Svu9MvqTNtuG/qUsKMlu8Twk OJ5Aen68/85SQx0Oj71Kg== X-UI-Out-Filterresults: notjunk:1;V01:K0:P8DuXmYnmco=:t4Vk467Z1P7rMrGjoMiAuS yTcbkAgx1i4ckmPL+Ey0E1i9FngQfOVOUeX4u3OnTbToNTFiDRCeBfTwS5MkxCWdwD1F2D9Ei KD2E9iqtUlAuCYvkZhNB6JSTr1GoB0oksONBzlwTdgmwUwZg3lYXfVidKu7r5N3hHwTtGiSnd yMjZ9kKiiOyZaQ8N8YAMByFrytUhqrGQ5cmz81Tsom9P9cMP4lMpyfSzKjERxU+KZgo4FQJzS hekDUCPpu03u8tDra0x3VBFu2Dqeko2X71TDEPrwbCh1Y3fbhJgKliWHBc8bK9bviUsfVJTe+ dGNxXAkW2ug4acHVmZNUw9KErl0TBatH8/hOZKj2nqJ3lFW7bx/gpHnO5/LfQlYyGsz5jCiL9 aNvhJhvJsi503u4kTECoDUXuVKBLe3cBcNQNeQ9spW8P91wiO/6wDvF6WjZtvFBXZDi4C8zHf 2XYHHOeMJF8pqdOXpYCR9uK1CSdleYbcNz3F9taiN5z+QuIVb6r76GcdObfsm2wUUkYoIrGKc 6K+x8l3iEPRbCom7OFYTJVNoZa+j1fCiWTdakLbdk4oXePGuqRraUuiG/9+l2RI9VsglaYDfI T5pWeWjFIz7CGSznmcQCFKVtzh2y0RCHG1qbWvr2TnB2PrqhwSMYpk6zmdolkXYtAjBo0WouN cbq+OnN+jck9boIE/tcnxSUoc+HHGKo698YsnAwyG2KP/nGs4vCZ22yYST8twlt/gIBfMEB9H E5e6bV4rCdpY2YbxZtmaFkQFPx8wBA76Sx9ZdPnifdDYOWfxtGTFZ8AUjhk8VkbQAsYjKkE8 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:118377 Archived-At: This is a multi-part message in MIME format. --------------070208020304090709000404 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable >> Could you try with =E2=80=98comint-scroll-to-bottom-on-input=E2=80=99= set to 'this? >> That option apparently conflicts with =E2=80=98scroll-restore-jump-ba= ck=E2=80=99. > > Yes, this option does force any input to be typed at the > end-of-buffer, of course. However, the possibility to =E2=80=98C-r=E2= =80=99 back, > edit some command in-place and hit =E2=80=98RET=E2=80=99 =E2=80=94 i. = e. the possibility that > this option disables =E2=80=94 is exactly why I prefer shell-mode over= a > full-featured terminal emulator. I still don't understand what you need =E2=80=98scroll-restore-jump-back=E2= =80=99 for. But I have to admit that I don't even remember the purpose of that option well :-( >> I'm afraid that =E2=80=98scroll-restore-mode=E2=80=99 is too simplist= ic in this regard. > > Alas. I'll attach my latest version of =E2=80=98scroll-restore-mode=E2=80=99. = Please try it. If you confirm that this version works and doesn't break anything else, I can install the appropriate changes in the elpa version. Thanks, martin --------------070208020304090709000404 Content-Type: application/emacs-lisp; name="scroll-restore.el" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="scroll-restore.el" Ozs7IHNjcm9sbC1yZXN0b3JlLmVsIC0tLSByZXN0b3JlIG9yaWdpbmFsIHBvc2l0aW9uIGFm dGVyIHNjcm9sbGluZyAgLSotIGxleGljYWwtYmluZGluZzp0IC0qLQoKOzsgQ29weXJpZ2h0 IChDKSAyMDA3LDIwMTQgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgoKOzsgVGlt ZS1zdGFtcDogIjIwMTUtMDQtMDIgMDg6NDc6NTAgbWFydGluIgo7OyBBdXRob3I6IE1hcnRp biBSdWRhbGljcyA8cnVkYWxpY3NAZ214LmF0Pgo7OyBLZXl3b3Jkczogc2Nyb2xsaW5nCjs7 IFZlcnNpb246IDEuMAoKOzsgc2Nyb2xsLXJlc3RvcmUuZWwgaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo7OyBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQo7OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBv ciAoYXQgeW91ciBvcHRpb24pCjs7IGFueSBsYXRlciB2ZXJzaW9uLgoKOzsgc2Nyb2xsLXJl c3RvcmUuZWwgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKOzsgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCgo7OzsgQ29tbWVudGFyeToKCjs7IFNjcm9sbCBSZXN0b3JlIG1vZGUgaXMgYSBtaW5v ciBtb2RlIHRvIHJlc3RvcmUgdGhlIHBvc2l0aW9uIG9mCjs7IGB3aW5kb3ctcG9pbnQnIGlu IGEgc2VxdWVuY2Ugb2Ygc2Nyb2xsaW5nIGNvbW1hbmRzIHdoZW5ldmVyIHRoYXQKOzsgcG9z aXRpb24gaGFzIGdvbmUgb2ZmLXNjcmVlbiBhbmQgYmVjb21lcyB2aXNpYmxlIGFnYWluLiAg VGhlIHVzZXIKOzsgb3B0aW9uIGBzY3JvbGwtcmVzdG9yZS1jb21tYW5kcycgc3BlY2lmaWVz IHRoZSBzZXQgb2YgY29tbWFuZHMgdGhhdAo7OyBjb25zdGl0dXRlIHN1Y2ggYSBzZXF1ZW5j ZS4KCjs7IFRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBvcHRpb25zIGFyZSBwcm92aWRlZDoK Cjs7IC0gUHJvdmlkZSBhIGZ1bmN0aW9uIGBzY3JvbGwtcmVzdG9yZS1qdW1wLWJhY2snIHRv IGp1bXAgYmFjayB0byB0aGUKOzsgICBvcmlnaW5hbCBwb3NpdGlvbiBiZWZvcmUgdGhlIGN1 cnJlbnQgc2VxdWVuY2Ugb2Ygc2Nyb2xsaW5nCjs7ICAgY29tbWFuZHMuICBPcHRpb25hbGx5 LCBjYWxsIHRoYXQgZnVuY3Rpb24gYmVmb3JlIGV4ZWN1dGluZyBhCjs7ICAgbm9uLXNjcm9s bGluZyBjb21tYW5kLgoKOzsgLSBDaGFuZ2UgdGhlIGFwcGVhcmFuY2Ugb2YgdGhlIGN1cnNv ciBpbiB0aGUgc2VsZWN0ZWQgd2luZG93IHRvCjs7ICAgaW5kaWNhdGUgdGhhdCB0aGUgb3Jp Z2luYWwgcG9zaXRpb24gaXMgb2ZmLXNjcmVlbiwgc2VlCjs7ICAgYHNjcm9sbC1yZXN0b3Jl LWhhbmRsZS1jdXJzb3InLgoKOzsgT3B0aW9uYWxseSByZXN0b3JlIGBtYXJrJyBhbmQgdGhl IGByZWdpb24nIHdoZW4gcmVzdG9yaW5nIHRoZQo7OyBvcmlnaW5hbCBwb3NpdGlvbiBvZiBg d2luZG93LXBvaW50Jy4KCjs7IENhdmVhdHM6Cgo7OyAtIFNjcm9sbCBSZXN0b3JlIG1vZGUg ZG9lcyBub3QgaGFuZGxlIGBzd2l0Y2gtZnJhbWUnIGFuZAo7OyAgIGB2ZXJ0aWNhbC1zY3Jv bGwtYmFyJyBldmVudHMgZXhlY3V0ZWQgd2l0aGluIHRoZSBsb29wcyBpbgo7OyAgIGBtb3Vz ZS1zaG93LW1hcmsnIGFuZCBgc2Nyb2xsLWJhci1kcmFnJyAodGhlc2UgZG9uJ3QgY2FsbAo7 OyAgIGBwb3N0LWNvbW1hbmQtaG9vaycgYXMgbmVlZGVkIGJ5IFNjcm9sbCBSZXN0b3JlIG1v ZGUpLgoKOzsgLSBTY3JvbGwgUmVzdG9yZSBtb2RlIG1heSBkaXNyZWdhcmQgeW91ciBjdXN0 b21pemF0aW9ucyBvZgo7OyAgIGBzY3JvbGwtbWFyZ2luJy4gIEhhbmRsaW5nIGBzY3JvbGwt bWFyZ2luJyBvbiB0aGUgRWxpc3AgbGV2ZWwgaXMKOzsgICB0ZWRpb3VzIGFuZCBtaWdodCBu b3Qgd29yayBjb3JyZWN0bHkuCgo7OyAtIFNjcm9sbCBSZXN0b3JlIG1vZGUgc2hvdWxkIGhh bmRsZSBgbWFrZS1jdXJzb3ItbGluZS1mdWxseS12aXNpYmxlJwo7OyAgIGJ1dCB0aGVyZSBt aWdodCBiZSBwcm9ibGVtcy4KCjs7IC0gU2Nyb2xsIFJlc3RvcmUgbW9kZSBjYW4gaGFuZGxl IHJlZ2lvbiBhbmQgY3Vyc29yIG9ubHkgaW4gdGhlCjs7ICAgc2VsZWN0ZWQgd2luZG93LiAg VGhpcyBtYWtlcyBhIGRpZmZlcmVuY2Ugd2hlbiB5b3UgaGF2ZSBzZXQKOzsgICBgaGlnaGxp Z2h0LW5vbnNlbGVjdGVkLXdpbmRvd3MnIHRvIGEgbm9uLW5pbCB2YWx1ZS4KCjs7IC0gU2Ny b2xsIFJlc3RvcmUgbW9kZSBoYXMgbm90IGJlZW4gdGVzdGVkIHdpdGggZW11bGF0aW9uIG1v ZGVzIGxpa2UKOzsgICBgY3VhLW1vZGUnIG9yIGBwYy1zZWxlY3Rpb24tbW9kZScuICBJbiBw YXJ0aWN1bGFyLCB0aGUgZm9ybWVyJ3MKOzsgICBoYW5kbGluZyBvZiBgY3Vyc29yLXR5cGUn IGFuZCBgY3Vyc29yLWNvbG9yJyBtaWdodCBiZSBhZmZlY3RlZCBieQo7OyAgIFNjcm9sbCBS ZXN0b3JlIG1vZGUuIgoKOzsgLSBTY3JvbGwgUmVzdG9yZSBtb2RlIG1pZ2h0IGludGVyYWN0 IGJhZGx5IHdpdGggYGZvbGxvdy1tb2RlJy4gIEZvcgo7OyAgIGV4YW1wbGUsIHRoZSBsYXR0 ZXIgbWF5IGRlbGliZXJhdGVseSBzZWxlY3QgYSB3aW5kb3cgQSB3aGVuIHRoZQo7OyAgIG9y aWdpbmFsIHBvc2l0aW9uIG9mIGEgd2luZG93IEIgYXBwZWFycyBpbiBpdC4gIFRoaXMgd29u J3QgcmVzdG9yZQo7OyAgIHRoZSBhcHBlYXJhbmNlIG9mIHRoZSBjdXJzb3Igd2hlbiBTY3Jv bGwgUmVzdG9yZSBtb2RlIGhhbmRsZXMgaXQuCgoKOzs7IENvZGU6CgooZGVmZ3JvdXAgc2Ny b2xsLXJlc3RvcmUgbmlsCiAgIlJlc3RvcmUgb3JpZ2luYWwgYHdpbmRvdy1wb2ludCcgYWZ0 ZXIgc2Nyb2xsaW5nLiIKICA6dmVyc2lvbiAiMjMuMSIKICA6Z3JvdXAgJ3dpbmRvd3MpCgoo ZGVmdW4gc2Nyb2xsLXJlc3RvcmUtLXNldCAoc3ltYm9sIHZhbHVlKQogIChzZXQtZGVmYXVs dCBzeW1ib2wgdmFsdWUpCiAgKHdoZW4gKGFuZCAoYm91bmRwICdzY3JvbGwtcmVzdG9yZS1t b2RlKSBzY3JvbGwtcmVzdG9yZS1tb2RlKQogICAgKHNjcm9sbC1yZXN0b3JlLW1vZGUgLTEp CiAgICAoc2Nyb2xsLXJlc3RvcmUtbW9kZSAxKSkpCgooZGVmY3VzdG9tIHNjcm9sbC1yZXN0 b3JlLWNvbW1hbmRzCiAgOzsgRklYTUU6IEhvdyAnYm91dCB1c2luZyB0aGUgYHNjcm9sbC1j b21tYW5kJyBwcm9wZXJ0eT8gIFdlJ2xsIGhhdmUKICA7OyB0byBkaXNjdXNzIHRoaXMgd2l0 aCBKdXJpIHRvIG1ha2Ugc3VyZSBvdXJzIGRvbid0IGdldCBpbnRvIHRoZSB3YXkKICA7OyBv ZiBoaXMuICBGb3IgZXhhbXBsZSwgaXQgbWlnaHQgYmUgd3JvbmcgdG8gZ2l2ZQogIDs7IGBo YW5kbGUtc2VsZWN0LXdpbmRvdycgdGhlIGBzY3JvbGwtY29tbWFuZCcgcHJvcGVydHkuCiAg JyhoYW5kbGUtc2VsZWN0LXdpbmRvdyBoYW5kbGUtc3dpdGNoLWZyYW1lCiAgICBzY3JvbGwt dXAgc2Nyb2xsLWRvd24KICAgIHNjcm9sbC11cC1jb21tYW5kIHNjcm9sbC1kb3duLWNvbW1h bmQKICAgIHNjcm9sbC1iYXItdG9vbGtpdC1zY3JvbGwgbXdoZWVsLXNjcm9sbAogICAgc2Ny b2xsLW90aGVyLXdpbmRvdyBzY3JvbGwtb3RoZXItd2luZG93LWRvd24KICAgIHNjcm9sbC1i YXItc2Nyb2xsLXVwIHNjcm9sbC1iYXItc2Nyb2xsLWRvd24gc2Nyb2xsLWJhci1kcmFnKQog ICJTY3JvbGxpbmcgY29tbWFuZHMgcmVjb2duaXplZCBieSBTY3JvbGwgUmVzdG9yZSBtb2Rl LgpTY3JvbGwgUmVzdG9yZSBtb2RlIHRyaWVzIHRvIHJlc3RvcmUgdGhlIG9yaWdpbmFsIGB3 aW5kb3ctcG9pbnQnCmFmdGVyIGV4ZWN1dGluZyBhIHNlcXVlbmNlIG9mIGFueSBvZiB0aGVz ZSBjb21tYW5kcy4iCiAgOnR5cGUgJyhyZXBlYXQgc3ltYm9sKQogIDpzZXQgIycobGFtYmRh IChzeW1ib2wgdmFsdWUpCiAgICAgICAgICAgKHdoZW4gKGJvdW5kcCAnc2Nyb2xsLXJlc3Rv cmUtY29tbWFuZHMpCiAgICAgICAgICAgICAoZG9saXN0IChjbWQgc2Nyb2xsLXJlc3RvcmUt Y29tbWFuZHMpCiAgICAgICAgICAgICAgIChwdXQgY21kICdzY3JvbGwtcmVzdG9yZSBuaWwp KSkKICAgICAgICAgICAoc2V0LWRlZmF1bHQgc3ltYm9sIHZhbHVlKQogICAgICAgICAgIChk b2xpc3QgKGNtZCBzY3JvbGwtcmVzdG9yZS1jb21tYW5kcykKICAgICAgICAgICAgIChwdXQg Y21kICdzY3JvbGwtcmVzdG9yZSB0KSkpKQoKOzsgUmVjZW50ZXIuICBIYXJkbHkgdXNlZnVs Lgo7OyAoZGVmY3VzdG9tIHNjcm9sbC1yZXN0b3JlLXJlY2VudGVyIG5pbAo7OyAgICJOb24t bmlsIG1lYW5zIHNjcm9sbGluZyBiYWNrIHJlY2VudGVycyB0aGUgb3JpZ2luYWwgcG9zaXRp b24uCjs7IFNldHRpbmcgdGhpcyB0byBhIG5vbi1uaWwgdmFsdWUgY2FuIGJlIHVzZWZ1bCB0 byBkZXRlY3QgdGhlIG9yaWdpbmFsCjs7IHBvc2l0aW9uIG1vcmUgZWFzaWx5IGFuZCBjb2hl cmVudGx5IHdoZW4gc2Nyb2xsaW5nIGJhY2suIgo7OyAgIDp0eXBlICdib29sZWFuKQoKOzsg SnVtcCBiYWNrLgoKOzsgVGhlIGZvbGxvd2luZyBkb2Mtc3RyaW5nIGhhZCB0aGlzOgo7OyBZ b3UgcHJvYmFibHkgd2FudCB0byByZW1vdmUgY29tbWFuZHMgbGlrZSBgc2Nyb2xsLXVwJyBh bmQKOzsgYHNjcm9sbC1kb3duJyBmcm9tIGBzY3JvbGwtcmVzdG9yZS1jb21tYW5kcycgd2hl biBhY3RpdmF0aW5nIHRoaXMKOzsgb3B0aW9uLgo7OyBXaHk/CgooZGVmY3VzdG9tIHNjcm9s bC1yZXN0b3JlLWp1bXAtYmFjayBuaWwKICAiTm9uLW5pbCBtZWFucyBqdW1wIGJhY2sgdG8g b3JpZ2luYWwgcG9zaXRpb24gYWZ0ZXIgc2Nyb2xsaW5nLgpXaGVuIHRoaXMgb3B0aW9uIGlz IG5vbi1uaWwsIFNjcm9sbCBSZXN0b3JlIG1vZGUgcmVzZXRzCmB3aW5kb3ctcG9pbnQnIHRv IHRoZSBvcmlnaW5hbCBwb3NpdGlvbiB3aGVuIGEgc2VxdWVuY2Ugb2YKc2Nyb2xsaW5nIGNv bW1hbmRzIGhhcyBtb3ZlZCB0aGF0IHBvc2l0aW9uIG9mZi1zY3JlZW4gYW5kIGEKbm9uLXNj cm9sbGluZyBjb21tYW5kIHdpbGwgYmUgZXhlY3V0ZWQuCgpBbHRlcm5hdGl2ZWx5IHlvdSBt YXkgY29uc2lkZXIgYmluZGluZyB0aGUgY29tbWFuZApgc2Nyb2xsLXJlc3RvcmUtanVtcC1i YWNrJyB0byBhIGtleSBvZiB5b3VyIGNob2ljZS4iCiAgOnR5cGUgJ2Jvb2xlYW4KICA6c2V0 ICMnc2Nyb2xsLXJlc3RvcmUtLXNldCkKCjs7OyBDdXJzb3IgaGFuZGxpbmcuCihkZWZ2YXIg c2Nyb2xsLXJlc3RvcmUtYnVmZmVyIG5pbAogICJCdWZmZXIgZm9yIGBzY3JvbGwtcmVzdG9y ZS1jdXJzb3ItdHlwZScuIikKCjs7IE5vdGU6IG5pbCBpcyBhIHZhbGlkIGN1cnNvci10eXBl LgooZGVmdmFyIHNjcm9sbC1yZXN0b3JlLWJ1ZmZlci1jdXJzb3ItdHlwZSAnaW52YWxpZAog ICJPcmlnaW5hbCBjdXJzb3ItdHlwZSBvZiBgc2Nyb2xsLXJlc3RvcmUtYnVmZmVyJy4iKQoK KGRlZnZhciBzY3JvbGwtcmVzdG9yZS1mcmFtZSBuaWwKICAiRnJhbWUgZm9yIGBzY3JvbGwt cmVzdG9yZS1jdXJzb3ItY29sb3InLiIpCgooZGVmdmFyIHNjcm9sbC1yZXN0b3JlLWZyYW1l LWN1cnNvci1jb2xvciBuaWwKICAiT3JpZ2luYWwgY3Vyc29yLWNvbG9yIG9mIGBzY3JvbGwt cmVzdG9yZS1mcmFtZScuIikKCihkZWZjdXN0b20gc2Nyb2xsLXJlc3RvcmUtaGFuZGxlLWN1 cnNvciBuaWwKICAiTm9uLW5pbCBtZWFucyBTY3JvbGwgUmVzdG9yZSBtb2RlIG1heSBjaGFu Z2UgYXBwZWFyYW5jZSBvZiBjdXJzb3IuClNjcm9sbCBSZXN0b3JlIG1vZGUgY2FuIGNoYW5n ZSB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgY3Vyc29yIGluCnRoZSBzZWxlY3RlZCB3aW5kb3cg d2hpbGUgdGhlIG9yaWdpbmFsIHBvc2l0aW9uIGlzIG9mZi1zY3JlZW4uCkN1c3RvbWl6ZSBg c2Nyb2xsLXJlc3RvcmUtY3Vyc29yLXR5cGUnIHRvIGNoYW5nZSB0aGUgdHlwZSBvZiB0aGUK Y3Vyc29yIGFuZCBgc2Nyb2xsLXJlc3RvcmUtY3Vyc29yLWNvbG9yJyB0byBjaGFuZ2UgaXRz IGNvbG9yLiIKICA6dHlwZSAnKGNob2ljZQogICAgICAgICAgKGNvbnN0IDp0YWcgIk9mZiIg bmlsKQogICAgICAgICAgKGNvbnN0IDp0YWcgIkN1cnNvciB0eXBlIiB0eXBlKQogICAgICAg ICAgKGNvbnN0IDp0YWcgIkN1cnNvciBjb2xvciIgY29sb3IpCiAgICAgICAgICAoY29uc3Qg OnRhZyAiVHlwZSBhbmQgY29sb3IiIHQpKQogIDpzZXQgIydzY3JvbGwtcmVzdG9yZS0tc2V0 KQoKKGRlZmN1c3RvbSBzY3JvbGwtcmVzdG9yZS1jdXJzb3ItdHlwZSAnYm94CiAgIlR5cGUg b2YgY3Vyc29yIHdoZW4gb3JpZ2luYWwgcG9zaXRpb24gaXMgb2ZmLXNjcmVlbi4KQXBwbGll ZCBpZiBhbmQgb25seSBpZiBgc2Nyb2xsLXJlc3RvcmUtaGFuZGxlLWN1cnNvcicgaXMgZWl0 aGVyCid0eXBlIG9yIHQuCgpCZSBjYXJlZnVsIHdoZW4gYW5vdGhlciBhcHBsaWNhdGlvbiB1 c2VzIHRoYXQgdHlwZS4gIE90aGVyd2lzZSwKeW91IG1pZ2h0IGdldCB1bmV4cGVjdGVkIHJl c3VsdHMgd2hlbiBTY3JvbGwgUmVzdG9yZSBtb2RlIHJlc2V0cwp0aGUgY3Vyc29yIHR5cGUg dG8gaXRzIFwib3JpZ2luYWxcIiB2YWx1ZSBhZnRlciBhIHNlcXVlbmNlIG9mCnNjcm9sbGlu ZyBjb21tYW5kcyBhbmQgdGhlIGFwcGxpY2F0aW9uIGhhcyBjaGFuZ2VkIHRoZSBjdXJzb3IK dHlwZSBpbiBiZXR3ZWVuLgoKVG8gZ3VhcmQgYWdhaW5zdCB1bmV4cGVjdGVkIHJlc3VsdHMs IFNjcm9sbCBSZXN0b3JlIG1vZGUgZG9lcyBub3QKcmVzZXQgdGhlIHR5cGUgb2YgdGhlIGN1 cnNvciB3aGVuZXZlciBpdHMgdmFsdWUgZG9lcyBub3QgZXF1YWwKdGhlIHZhbHVlIG9mIHNj cm9sbC1yZXN0b3JlLWN1cnNvci10eXBlLiIKICA6dHlwZSAnKGNob2ljZQogICAgICAgICAg KGNvbnN0IDp0YWcgIk5vIGN1cnNvciIgbmlsKQogICAgICAgICAgKGNvbnN0IDp0YWcgIkZp bGxlZCBib3giIGJveCkKICAgICAgICAgIChjb25zdCA6dGFnICJIb2xsb3cgYm94IiBob2xs b3cpCiAgICAgICAgICAoY29uc3QgOnRhZyAiVmVydGljYWwgYmFyIiBiYXIpCiAgICAgICAg ICAoY29uc3QgOnRhZyAiSG9yaXpvbnRhbCBiYXIiIGhiYXIpKQogIDpzZXQgIydzY3JvbGwt cmVzdG9yZS0tc2V0KQoKKGRlZmN1c3RvbSBzY3JvbGwtcmVzdG9yZS1jdXJzb3ItY29sb3Ig IkRhcmtDeWFuIgogICJCYWNrZ3JvdW5kIGNvbG9yIG9mIGN1cnNvciB3aGVuIG9yaWdpbmFs IHBvc2l0aW9uIGlzIG9mZi1zY3JlZW4uCkFwcGxpZWQgaWYgYW5kIG9ubHkgaWYgYHNjcm9s bC1yZXN0b3JlLWhhbmRsZS1jdXJzb3InIGlzIGVpdGhlcgonY29sb3Igb3IgdC4KCk9ic2Vy dmUgdGhhdCB3aGVuIEVtYWNzIGNoYW5nZXMgdGhlIGNvbG9yIG9mIHRoZSBjdXJzb3IsIHRo ZQpjaGFuZ2UgYXBwbGllcyB0byBhbGwgd2luZG93cyBvbiB0aGUgYXNzb2NpYXRlZCBmcmFt ZS4KCkJlIGNhcmVmdWwgd2hlbiBhbm90aGVyIGFwcGxpY2F0aW9uIGlzIGFsbG93ZWQgdG8g Y2hhbmdlIHRoZQpjdXJzb3ItY29sb3IuICBPdGhlcndpc2UsIHlvdSBtaWdodCBnZXQgdW5l eHBlY3RlZCByZXN1bHRzIHdoZW4KU2Nyb2xsIFJlc3RvcmUgbW9kZSByZXNldHMgdGhlIGN1 cnNvciBjb2xvciB0byBpdHMgXCJvcmlnaW5hbFwiCnZhbHVlIGFuZCB0aGUgYXBwbGljYXRp b24gaGFzIGNoYW5nZWQgdGhlIGN1cnNvciBjb2xvciBpbgpiZXR3ZWVuLgoKVG8gZ3VhcmQg YWdhaW5zdCB1bmV4cGVjdGVkIHJlc3VsdHMgU2Nyb2xsIFJlc3RvcmUgbW9kZSBkb2VzIG5v dApyZXNldCB0aGUgY29sb3Igb2YgdGhlIGN1cnNvciB3aGVuZXZlciBpdHMgdmFsdWUgZG9l cyBub3QgZXF1YWwKdGhlIHZhbHVlIG9mIHNjcm9sbC1yZXN0b3JlLWN1cnNvci1jb2xvci4i CiAgOnR5cGUgJ2NvbG9yCiAgOnNldCAjJ3Njcm9sbC1yZXN0b3JlLS1zZXQpCgo7OzsgUmVn aW9uIGhhbmRsaW5nLgooZGVmY3VzdG9tIHNjcm9sbC1yZXN0b3JlLWhhbmRsZS1yZWdpb24g bmlsCiAgIk5vbi1uaWwgbWVhbnMgU2Nyb2xsIFJlc3RvcmUgbW9kZSBoYW5kbGVzIHRoZSBy ZWdpb24uClNjcm9sbCBSZXN0b3JlIGhhbmRsZXMgdGhlIHJlZ2lvbiBieSBzYXZpbmcgdGhl IG9sZCBtYXJrIHdoZW4gdGhlCm9sZCBwb3NpdGlvbiBvZiBgd2luZG93LXBvaW50JyBpcyBz Y3JvbGxlZCBvZmYtc2NyZWVuIGFuZApyZXN0b3JpbmcgdGhlIG1hcmsgd2hlbiByZXN0b3Jp bmcgYHdpbmRvdy1wb2ludCcuIgogIDp0eXBlICdib29sZWFuCiAgOnNldCAjJ3Njcm9sbC1y ZXN0b3JlLS1zZXQpCgo7OyBOb3RlOiBXZSBjYW4ndCB1c2UgYHBvaW50LWJlZm9yZS1zY3Jv bGwnIGZvciBvdXIgcHVycG9zZXMgYmVjYXVzZQo7OyB0aGF0IHZhcmlhYmxlIGlzIGJ1ZmZl ci1sb2NhbC4gIFdlIG5lZWQgYSB2YXJpYWJsZSB0aGF0IHJlY29yZGVkCjs7IGB3aW5kb3ct cG9pbnQnIGJlZm9yZSBhIHNlcXVlbmNlIG9mIHNjcm9sbCBvcGVyYXRpb25zLiAgQWxzbwo7 OyBgcG9pbnQtYmVmb3JlLXNjcm9sbCcgaXMgbm90IGhhbmRsZWQgYnkgbXdoZWVsLmVsIGFu ZCBzb21lIG90aGVyCjs7IGNvbW1hbmRzIHRoYXQgZG8gaW1wbGljaXQgc2Nyb2xsaW5nLiAg SGVuY2UsIHRoZSBvcmlnaW5hbCBwb3NpdGlvbiBpcwo7OyBoYW5kbGVkLCBhbW9uZyBvdGhl cnMsIGJ5IHRoZSBmb2xsb3dpbmcgYWxpc3QuCihkZWZ2YXIgc2Nyb2xsLXJlc3RvcmUtYWxp c3QgbmlsCiAgIkxpc3Qgb2YgPHdpbmRvdywgYnVmZmVyLCBwb2ludCwgb2ZmPiBxdWFkcnVw bGVzLgpgd2luZG93JyBpcyB0aGUgd2luZG93IGFmZmVjdGVkLCBgYnVmZmVyJyBpdHMgYnVm ZmVyLiAgYHBvcycgaXMKdGhlIG9yaWdpbmFsIHBvc2l0aW9uIG9mIGBwb2ludCcgaW4gdGhh dCB3aW5kb3cuICBgb2ZmJyBub24tbmlsCm1lYW5zIGBwb3MnIHdhcyBvZmYtc2NyZWVuIFwo ZGlkbid0IGFwcGVhciBpbiBgd2luZG93J1wpLiIpCgooZGVmdW4gc2Nyb2xsLXJlc3RvcmUt cHJlLWNvbW1hbmQgKCkKICAiU2Nyb2xsIFJlc3RvcmUncyBwcmUtY29tbWFuZCBmdW5jdGlv bi4iCiAgOzsgSGFuZGxlIGN1cnNvci10eXBlLgogICh3aGVuIChhbmQgc2Nyb2xsLXJlc3Rv cmUtYnVmZmVyCiAgICAgICAgICAgICAobm90IChlcSBzY3JvbGwtcmVzdG9yZS1idWZmZXIt Y3Vyc29yLXR5cGUgJ2ludmFsaWQpKQogICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZm ZXIgc2Nyb2xsLXJlc3RvcmUtYnVmZmVyCiAgICAgICAgICAgICAgIChlcSBjdXJzb3ItdHlw ZSBzY3JvbGwtcmVzdG9yZS1jdXJzb3ItdHlwZSkpKQogICAgKHdpdGgtY3VycmVudC1idWZm ZXIgc2Nyb2xsLXJlc3RvcmUtYnVmZmVyCiAgICAgIChzZXRxIGN1cnNvci10eXBlIHNjcm9s bC1yZXN0b3JlLWJ1ZmZlci1jdXJzb3ItdHlwZSkKICAgICAgKHNldHEgc2Nyb2xsLXJlc3Rv cmUtYnVmZmVyLWN1cnNvci10eXBlICdpbnZhbGlkKSkpCiAgOzsgSGFuZGxlIGN1cnNvci1j b2xvci4KICAod2hlbiAoYW5kIHNjcm9sbC1yZXN0b3JlLWZyYW1lIHNjcm9sbC1yZXN0b3Jl LWZyYW1lLWN1cnNvci1jb2xvcgogICAgICAgICAgICAgKGVxIChmcmFtZS1wYXJhbWV0ZXIg c2Nyb2xsLXJlc3RvcmUtZnJhbWUgJ2N1cnNvci1jb2xvcikKICAgICAgICAgICAgICAgICBz Y3JvbGwtcmVzdG9yZS1jdXJzb3ItY29sb3IpKQogICAgKGxldCAoKGZyYW1lIChzZWxlY3Rl ZC1mcmFtZSkpKQogICAgICAoc2VsZWN0LWZyYW1lIHNjcm9sbC1yZXN0b3JlLWZyYW1lKQog ICAgICAoc2V0LWN1cnNvci1jb2xvciBzY3JvbGwtcmVzdG9yZS1mcmFtZS1jdXJzb3ItY29s b3IpCiAgICAgIChzZXRxIHNjcm9sbC1yZXN0b3JlLWZyYW1lLWN1cnNvci1jb2xvciBuaWwp CiAgICAgIChzZWxlY3QtZnJhbWUgZnJhbWUpKSkKICA7OyBIYW5kbGUganVtcGluZy4KICAo d2hlbiAoYW5kIHNjcm9sbC1yZXN0b3JlLWp1bXAtYmFjawoJICAgICAob3IgKG5vdCAoc3lt Ym9scCB0aGlzLWNvbW1hbmQpKQoJCSAobm90IChnZXQgdGhpcy1jb21tYW5kICdzY3JvbGwt cmVzdG9yZSkpKSkKICAgIChsZXQgKChlbnRyeSAoYXNzcSAoc2VsZWN0ZWQtd2luZG93KSBz Y3JvbGwtcmVzdG9yZS1hbGlzdCkpKQogICAgICAod2hlbiBlbnRyeQogICAgICAgIChsZXQg KCh3aW5kb3cgKGNhciBlbnRyeSkpCiAgICAgICAgICAgICAgOzsgKGJ1ZmZlciAobnRoIDEg ZW50cnkpKQogICAgICAgICAgICAgIChwb3MgKG50aCAyIGVudHJ5KSkpCiAgICAgICAgICAo c2V0LXdpbmRvdy1wb2ludCB3aW5kb3cgcG9zKQogICAgICAgICAgOzsgV2UgYXJlIG9uLXNj cmVlbiBub3cuCiAgICAgICAgICAoc2V0Y2RyIChudGhjZHIgMiBlbnRyeSkgKGxpc3Qgbmls KSkpKSkpCiAgOzsgUGFyYW5vaWEuCiAgKHVubGVzcyAob3Igc2Nyb2xsLXJlc3RvcmUtanVt cC1iYWNrIHNjcm9sbC1yZXN0b3JlLWhhbmRsZS1yZWdpb24KICAgICAgICAgICAgICBzY3Jv bGwtcmVzdG9yZS1oYW5kbGUtY3Vyc29yKQogICAgOzsgU2hvdWxkIGJlIG5ldmVyIHJlYWNo ZWQuCiAgICAocmVtb3ZlLWhvb2sgJ3ByZS1jb21tYW5kLWhvb2sgJ3Njcm9sbC1yZXN0b3Jl LXByZS1jb21tYW5kKSkpCgooZGVmdW4gc2Nyb2xsLXJlc3RvcmUtcmVtb3ZlICgmb3B0aW9u YWwgYWxsKQogICJSZW1vdmUgc3RhbGUgZW50cmllcyBmcm9tIGBzY3JvbGwtcmVzdG9yZS1h bGlzdCcuCk9wdGlvbmFsIGFyZ3VtZW50IEFMTCBub24tbmlsIG1lYW5zIHJlbW92ZSB0aGVt IGFsbC4iCiAgKGRvbGlzdCAoZW50cnkgc2Nyb2xsLXJlc3RvcmUtYWxpc3QpCiAgICAobGV0 ICgod2luZG93IChjYXIgZW50cnkpKQogICAgICAgICAgKGJ1ZmZlciAobnRoIDEgZW50cnkp KQogICAgICAgICAgKHBvcyAobnRoIDIgZW50cnkpKSkKICAgICAgKHdoZW4gKG9yIGFsbCAo bm90ICh3aW5kb3ctbGl2ZS1wIHdpbmRvdykpCiAgICAgICAgICAgICAgICAobm90IChlcSAo d2luZG93LWJ1ZmZlciB3aW5kb3cpIGJ1ZmZlcikpCiAgICAgICAgICAgICAgICAobm90ICht YXJrZXJwIHBvcykpIChub3QgKG1hcmtlci1wb3NpdGlvbiBwb3MpKSkKICAgICAgICAod2hl biAobWFya2VycCBwb3MpCiAgICAgICAgICAoc2V0LW1hcmtlciBwb3MgbmlsKSkKICAgICAg ICAoc2V0cSBzY3JvbGwtcmVzdG9yZS1hbGlzdAogICAgICAgICAgICAgIChhc3NxLWRlbGV0 ZS1hbGwgd2luZG93IHNjcm9sbC1yZXN0b3JlLWFsaXN0KSkpKSkpCgooZGVmdW4gc2Nyb2xs LXJlc3RvcmUtYWRkICgpCiAgIkFkZCBuZXcgZW50cmllcyB0byBgc2Nyb2xsLXJlc3RvcmUt YWxpc3QnLiIKICAod2Fsay13aW5kb3dzCiAgIChsYW1iZGEgKHdpbmRvdykKICAgICAodW5s ZXNzIChhc3NxIHdpbmRvdyBzY3JvbGwtcmVzdG9yZS1hbGlzdCkKICAgICAgIChsZXQgKChi dWZmZXIgKHdpbmRvdy1idWZmZXIgd2luZG93KSkpCiAgICAgICAgICAgICAoc2V0cSBzY3Jv bGwtcmVzdG9yZS1hbGlzdAogICAgICAgICAgICAgICAgICAgKGNvbnMKICAgICAgICAgICAg ICAgICAgICAobGlzdAogICAgICAgICAgICAgICAgICAgICB3aW5kb3cgYnVmZmVyCiAgICAg ICAgICAgICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZmZlcgogICAgICAgICAg ICAgICAgICAgICAgIChjb3B5LW1hcmtlciAod2luZG93LXBvaW50IHdpbmRvdykpKQogICAg ICAgICAgICAgICAgICAgICBuaWwpCiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsLXJlc3Rv cmUtYWxpc3QpKSkpKQogICAnbm8tbWluaSB0KSkKCihkZWZ1biBzY3JvbGwtcmVzdG9yZS11 cGRhdGUgKGhvdyB3aW5kb3cgYnVmZmVyIF9wb3MpCiAgIlVwZGF0ZSB2YXJpb3VzIHRoaW5n cyBpbiBgc2Nyb2xsLXJlc3RvcmUtcG9zdC1jb21tYW5kJy4KSE9XIG11c3QgYmUgZWl0aGVy IG9uLW9mZiwgb24tb24sIG9mZi1vZmYsIG9mZi1vbiwgb3IgdC4gIFdJTkRPVwphbmQgQlVG RkVSIGFyZSBhZmZlY3RlZCB3aW5kb3cgYW5kIGJ1ZmZlci4gIF9QT1MgaXMgdGhlIG9yaWdp bmFsCnBvc2l0aW9uLiIKICAod2hlbiAoZXEgd2luZG93IChzZWxlY3RlZC13aW5kb3cpKQog ICAgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmZmVyCiAgICAgIDs7IEhhbmRsZSBjdXJzb3Iu CiAgICAgICh3aGVuIChhbmQgc2Nyb2xsLXJlc3RvcmUtaGFuZGxlLWN1cnNvcgogICAgICAg ICAgICAgICAgIChtZW1xIGhvdyAnKG9uLW9mZiBvZmYtb2ZmKSkKICAgICAgICAgICAgICAg ICA7OyBDaGFuZ2UgY3Vyc29yIGlmZiB0aGVyZSB3YXMgYSB2aXNpYmxlIGN1cnNvci4KICAg ICAgICAgICAgICAgICBjdXJzb3ItdHlwZSkKICAgICAgICAod2hlbiAobWVtcSBzY3JvbGwt cmVzdG9yZS1oYW5kbGUtY3Vyc29yICcodHlwZSB0KSkKICAgICAgICAgIChzZXRxIHNjcm9s bC1yZXN0b3JlLWJ1ZmZlciBidWZmZXIpCiAgICAgICAgICAoc2V0cSBzY3JvbGwtcmVzdG9y ZS1idWZmZXItY3Vyc29yLXR5cGUgY3Vyc29yLXR5cGUpCiAgICAgICAgICAoc2V0cSBjdXJz b3ItdHlwZSBzY3JvbGwtcmVzdG9yZS1jdXJzb3ItdHlwZSkpCiAgICAgICAgKHdoZW4gKG1l bXEgc2Nyb2xsLXJlc3RvcmUtaGFuZGxlLWN1cnNvciAnKGNvbG9yIHQpKQogICAgICAgICAg KHNldHEgc2Nyb2xsLXJlc3RvcmUtZnJhbWUgKHdpbmRvdy1mcmFtZSB3aW5kb3cpKQogICAg ICAgICAgKHNldHEgc2Nyb2xsLXJlc3RvcmUtZnJhbWUtY3Vyc29yLWNvbG9yCiAgICAgICAg ICAgICAgICAoZnJhbWUtcGFyYW1ldGVyIHNjcm9sbC1yZXN0b3JlLWZyYW1lICdjdXJzb3It Y29sb3IpKQogICAgICAgICAgKGxldCAoKGZyYW1lIChzZWxlY3RlZC1mcmFtZSkpKQogICAg ICAgICAgICAoc2VsZWN0LWZyYW1lIHNjcm9sbC1yZXN0b3JlLWZyYW1lKQogICAgICAgICAg ICAoc2V0LWN1cnNvci1jb2xvciBzY3JvbGwtcmVzdG9yZS1jdXJzb3ItY29sb3IpCiAgICAg ICAgICAgIChzZWxlY3QtZnJhbWUgZnJhbWUpKSkpKSkpCgooZGVmdW4gc2Nyb2xsLXJlc3Rv cmUtcG9zdC1jb21tYW5kICgpCiAgIlNjcm9sbCBSZXN0b3JlIG1vZGUgcG9zdC1jb21tYW5k IGZ1bmN0aW9uLiIKICAoc2Nyb2xsLXJlc3RvcmUtcmVtb3ZlKQogIChsZXQgKHJlY2VudGVy KQogICAgKGRvbGlzdCAoZW50cnkgc2Nyb2xsLXJlc3RvcmUtYWxpc3QpCiAgICAgIChsZXQg KCh3aW5kb3cgKGNhciBlbnRyeSkpCiAgICAgICAgICAgIChidWZmZXIgKG50aCAxIGVudHJ5 KSkKICAgICAgICAgICAgKHBvcyAobnRoIDIgZW50cnkpKQogICAgICAgICAgICAob2ZmIChu dGggMyBlbnRyeSkpKQogICAgICAgIChpZiAoYW5kIChzeW1ib2xwIHRoaXMtY29tbWFuZCkK CQkgKGdldCB0aGlzLWNvbW1hbmQgJ3Njcm9sbC1yZXN0b3JlKSkKICAgICAgICAgICAgOzsg QSBzY3JvbGwgcmVzdG9yZSBjb21tYW5kLgogICAgICAgICAgICAoaWYgb2ZmCiAgICAgICAg ICAgICAgICA7OyBgcG9zJyB3YXMgb2ZmLXNjcmVlbi4KICAgICAgICAgICAgICAgIChpZiAo cG9zLXZpc2libGUtaW4td2luZG93LXAgKG1hcmtlci1wb3NpdGlvbiBwb3MpIHdpbmRvdykK ICAgICAgICAgICAgICAgICAgICA7OyBgcG9zJyBpcyBvbi1zY3JlZW4gbm93LgogICAgICAg ICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAgICAgICAgOzsgTW92ZSBjdXJz b3IgdG8gb3JpZ2luYWwgcG9zaXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAoc2V0LXdp bmRvdy1wb2ludCB3aW5kb3cgcG9zKQogICAgICAgICAgICAgICAgICAgICAgOzsgUmVjZW50 ZXIgaWYgZGVzaXJlZC4KOzsgICAgICAgICAgICAgICAgICAgICAgICh3aGVuIChhbmQgc2Ny b2xsLXJlc3RvcmUtcmVjZW50ZXIKOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGVxIHdpbmRvdyAoc2VsZWN0ZWQtd2luZG93KSkpCjs7ICAgICAgICAgICAgICAgICAg ICAgICAgIChzZXRxIHJlY2VudGVyICgvICh3aW5kb3ctaGVpZ2h0IHdpbmRvdykgMikpKQog ICAgICAgICAgICAgICAgICAgICAgOzsgUmVjb3JkIG9uLXNjcmVlbiBzdGF0dXMuCiAgICAg ICAgICAgICAgICAgICAgICAoc2V0Y2RyIChudGhjZHIgMiBlbnRyeSkgKGxpc3QgbmlsKSkK ICAgICAgICAgICAgICAgICAgICAgIChzY3JvbGwtcmVzdG9yZS11cGRhdGUgJ29mZi1vbiB3 aW5kb3cgYnVmZmVyIHBvcykpCiAgICAgICAgICAgICAgICAgIDs7IGBwb3MnIGlzIHN0aWxs IG9mZi1zY3JlZW4KICAgICAgICAgICAgICAgICAgKHNjcm9sbC1yZXN0b3JlLXVwZGF0ZSAn b2ZmLW9mZiB3aW5kb3cgYnVmZmVyIHBvcykpCiAgICAgICAgICAgICAgOzsgYHBvcycgd2Fz IG9uLXNjcmVlbi4KICAgICAgICAgICAgICAoaWYgKHBvcy12aXNpYmxlLWluLXdpbmRvdy1w IHBvcyB3aW5kb3cpCiAgICAgICAgICAgICAgICAgIDs7IGBwb3MnIGlzIHN0aWxsIG9uLXNj cmVlbi4KICAgICAgICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAgICAgICAgOzsg T2NjYXNpb25hbGx5IEVtYWNzIGRlbGliZXJhdGVseSBjaGFuZ2VzCiAgICAgICAgICAgICAg ICAgICAgOzsgYHdpbmRvdy1wb2ludCcgZHVyaW5nIHNjcm9sbGluZyBldmVuIHdoZW4KICAg ICAgICAgICAgICAgICAgICA7OyBpdCdzIHZpc2libGUuICBNYXliZSB0aGlzIGlzIGR1ZSB0 bwogICAgICAgICAgICAgICAgICAgIDs7IGBtYWtlLWN1cnNvci1saW5lLWZ1bGx5LXZpc2li bGUnIG1heWJlIGR1ZSB0bwogICAgICAgICAgICAgICAgICAgIDs7IGBzY3JvbGwtbWFyZ2lu JyBtYXliZSBkdWUgdG8gc29tZXRoaW5nIGVsc2UuCiAgICAgICAgICAgICAgICAgICAgOzsg V2Ugb3ZlcnJpZGUgdGhhdCBiZWhhdmlvciBoZXJlLgogICAgICAgICAgICAgICAgICAgICh1 bmxlc3MgKD0gKHdpbmRvdy1wb2ludCkgcG9zKQogICAgICAgICAgICAgICAgICAgICAgKHNl dC13aW5kb3ctcG9pbnQgd2luZG93IHBvcykpCiAgICAgICAgICAgICAgICAgICAgKHNjcm9s bC1yZXN0b3JlLXVwZGF0ZSAnb24tb24gd2luZG93IGJ1ZmZlciBwb3MpKQogICAgICAgICAg ICAgICAgOzsgYHBvcycgbW92ZWQgb2ZmLXNjcmVlbi4KICAgICAgICAgICAgICAgIDs7IFJl Y29yZCBvZmYtc2NyZWVuIHN0YXRlLgogICAgICAgICAgICAgICAgKHNldGNkciAobnRoY2Ry IDIgZW50cnkpIChsaXN0IHQpKQogICAgICAgICAgICAgICAgKHNjcm9sbC1yZXN0b3JlLXVw ZGF0ZSAnb24tb2ZmIHdpbmRvdyBidWZmZXIgcG9zKSkpCiAgICAgICAgICA7OyBOb3QgYSBz Y3JvbGwtcmVzdG9yZSBjb21tYW5kLgogICAgICAgICAgKGxldCAoKHdpbmRvdy1wb2ludCAo d2luZG93LXBvaW50IHdpbmRvdykpKQogICAgICAgICAgICAgICAgICAod2hlbiAoYW5kIChl cSB3aW5kb3cgKHNlbGVjdGVkLXdpbmRvdykpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKG9yICgvPSB3aW5kb3ctcG9pbnQgcG9zKSBvZmYpKQogICAgICAgICAgICAgICAgICAg IDs7IFJlY29yZCBwb3NpdGlvbiBhbmQgb24tc2NyZWVuIHN0YXR1cy4KICAgICAgICAgICAg ICAgICAgICAoc2V0Y2RyCiAgICAgICAgICAgICAgICAgICAgIChudGhjZHIgMSBlbnRyeSkK ICAgICAgICAgICAgICAgICAgICAgKGxpc3QgKG1vdmUtbWFya2VyIHBvcyAod2luZG93LXBv aW50IHdpbmRvdykpIG5pbCkpKQogICAgICAgICAgICAgICAgICAoc2Nyb2xsLXJlc3RvcmUt dXBkYXRlIHQgd2luZG93IGJ1ZmZlciBwb3MpKSkpKQogICAgKHNjcm9sbC1yZXN0b3JlLWFk ZCkKICAgICh3aGVuIHJlY2VudGVyIChyZWNlbnRlciByZWNlbnRlcikpKSkKCihkZWZ1biBz Y3JvbGwtcmVzdG9yZS1wcmUtcmVkaXNwbGF5IChfd2luZG93cykKICAiU2Nyb2xsIFJlc3Rv cmUgbW9kZSBwb3N0LWNvbW1hbmQgZnVuY3Rpb24uIgogIChzY3JvbGwtcmVzdG9yZS1yZW1v dmUpCiAgKGxldCAocmVjZW50ZXIpCiAgICAoZG9saXN0IChlbnRyeSBzY3JvbGwtcmVzdG9y ZS1hbGlzdCkKICAgICAgKGxldCAoKHdpbmRvdyAoY2FyIGVudHJ5KSkKICAgICAgICAgICAg KGJ1ZmZlciAobnRoIDEgZW50cnkpKQogICAgICAgICAgICAocG9zIChudGggMiBlbnRyeSkp CiAgICAgICAgICAgIChvZmYgKG50aCAzIGVudHJ5KSkpCiAgICAgICAgKGlmIChhbmQgKHN5 bWJvbHAgbGFzdC1jb21tYW5kKQoJCSAoZ2V0IGxhc3QtY29tbWFuZCAnc2Nyb2xsLXJlc3Rv cmUpKQogICAgICAgICAgICA7OyBBIHNjcm9sbCByZXN0b3JlIGNvbW1hbmQuCiAgICAgICAg ICAgIChpZiBvZmYKICAgICAgICAgICAgICAgIDs7IGBwb3MnIHdhcyBvZmYtc2NyZWVuLgog ICAgICAgICAgICAgICAgKGlmIChwb3MtdmlzaWJsZS1pbi13aW5kb3ctcCAobWFya2VyLXBv c2l0aW9uIHBvcykgd2luZG93KQogICAgICAgICAgICAgICAgICAgIDs7IGBwb3MnIGlzIG9u LXNjcmVlbiBub3cuCiAgICAgICAgICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAg ICAgICAgICA7OyBNb3ZlIGN1cnNvciB0byBvcmlnaW5hbCBwb3NpdGlvbi4KICAgICAgICAg ICAgICAgICAgICAgIChzZXQtd2luZG93LXBvaW50IHdpbmRvdyBwb3MpCiAgICAgICAgICAg ICAgICAgICAgICA7OyBSZWNlbnRlciBpZiBkZXNpcmVkLgo7OyAgICAgICAgICAgICAgICAg ICAgICAgKHdoZW4gKGFuZCBzY3JvbGwtcmVzdG9yZS1yZWNlbnRlcgo7OyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoZXEgd2luZG93IChzZWxlY3RlZC13aW5kb3cpKSkK OzsgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgcmVjZW50ZXIgKC8gKHdpbmRvdy1o ZWlnaHQgd2luZG93KSAyKSkpCiAgICAgICAgICAgICAgICAgICAgICA7OyBSZWNvcmQgb24t c2NyZWVuIHN0YXR1cy4KICAgICAgICAgICAgICAgICAgICAgIChzZXRjZHIgKG50aGNkciAy IGVudHJ5KSAobGlzdCBuaWwpKQogICAgICAgICAgICAgICAgICAgICAgKHNjcm9sbC1yZXN0 b3JlLXVwZGF0ZSAnb2ZmLW9uIHdpbmRvdyBidWZmZXIgcG9zKSkKICAgICAgICAgICAgICAg ICAgOzsgYHBvcycgaXMgc3RpbGwgb2ZmLXNjcmVlbgogICAgICAgICAgICAgICAgICAoc2Ny b2xsLXJlc3RvcmUtdXBkYXRlICdvZmYtb2ZmIHdpbmRvdyBidWZmZXIgcG9zKSkKICAgICAg ICAgICAgICA7OyBgcG9zJyB3YXMgb24tc2NyZWVuLgogICAgICAgICAgICAgIChpZiAocG9z LXZpc2libGUtaW4td2luZG93LXAgcG9zIHdpbmRvdykKICAgICAgICAgICAgICAgICAgOzsg YHBvcycgaXMgc3RpbGwgb24tc2NyZWVuLgogICAgICAgICAgICAgICAgICAocHJvZ24KICAg ICAgICAgICAgICAgICAgICA7OyBPY2Nhc2lvbmFsbHkgRW1hY3MgZGVsaWJlcmF0ZWx5IGNo YW5nZXMKICAgICAgICAgICAgICAgICAgICA7OyBgd2luZG93LXBvaW50JyBkdXJpbmcgc2Ny b2xsaW5nIGV2ZW4gd2hlbgogICAgICAgICAgICAgICAgICAgIDs7IGl0J3MgdmlzaWJsZS4g IE1heWJlIHRoaXMgaXMgZHVlIHRvCiAgICAgICAgICAgICAgICAgICAgOzsgYG1ha2UtY3Vy c29yLWxpbmUtZnVsbHktdmlzaWJsZScgbWF5YmUgZHVlIHRvCiAgICAgICAgICAgICAgICAg ICAgOzsgYHNjcm9sbC1tYXJnaW4nIG1heWJlIGR1ZSB0byBzb21ldGhpbmcgZWxzZS4KICAg ICAgICAgICAgICAgICAgICA7OyBXZSBvdmVycmlkZSB0aGF0IGJlaGF2aW9yIGhlcmUuCiAg ICAgICAgICAgICAgICAgICAgKHVubGVzcyAoPSAod2luZG93LXBvaW50KSBwb3MpCiAgICAg ICAgICAgICAgICAgICAgICAoc2V0LXdpbmRvdy1wb2ludCB3aW5kb3cgcG9zKSkKICAgICAg ICAgICAgICAgICAgICAoc2Nyb2xsLXJlc3RvcmUtdXBkYXRlICdvbi1vbiB3aW5kb3cgYnVm ZmVyIHBvcykpCiAgICAgICAgICAgICAgICA7OyBgcG9zJyBtb3ZlZCBvZmYtc2NyZWVuLgog ICAgICAgICAgICAgICAgOzsgUmVjb3JkIG9mZi1zY3JlZW4gc3RhdGUuCiAgICAgICAgICAg ICAgICAoc2V0Y2RyIChudGhjZHIgMiBlbnRyeSkgKGxpc3QgdCkpCiAgICAgICAgICAgICAg ICAoc2Nyb2xsLXJlc3RvcmUtdXBkYXRlICdvbi1vZmYgd2luZG93IGJ1ZmZlciBwb3MpKSkK ICAgICAgICAgIDs7IE5vdCBhIHNjcm9sbC1yZXN0b3JlIGNvbW1hbmQuCiAgICAgICAgICAo bGV0ICgod2luZG93LXBvaW50ICh3aW5kb3ctcG9pbnQgd2luZG93KSkpCiAgICAgICAgICAg ICAgICAgICh3aGVuIChhbmQgKGVxIHdpbmRvdyAoc2VsZWN0ZWQtd2luZG93KSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAob3IgKC89IHdpbmRvdy1wb2ludCBwb3MpIG9mZikp CiAgICAgICAgICAgICAgICAgICAgOzsgUmVjb3JkIHBvc2l0aW9uIGFuZCBvbi1zY3JlZW4g c3RhdHVzLgogICAgICAgICAgICAgICAgICAgIChzZXRjZHIKICAgICAgICAgICAgICAgICAg ICAgKG50aGNkciAxIGVudHJ5KQogICAgICAgICAgICAgICAgICAgICAobGlzdCAobW92ZS1t YXJrZXIgcG9zICh3aW5kb3ctcG9pbnQgd2luZG93KSkgbmlsKSkpCiAgICAgICAgICAgICAg ICAgIChzY3JvbGwtcmVzdG9yZS11cGRhdGUgdCB3aW5kb3cgYnVmZmVyIHBvcykpKSkpCiAg ICAoc2Nyb2xsLXJlc3RvcmUtYWRkKQogICAgKHdoZW4gcmVjZW50ZXIgKHJlY2VudGVyIHJl Y2VudGVyKSkpKQoKKGRlZnVuIHNjcm9sbC1yZXN0b3JlLWp1bXAtYmFjayAoKQogICJKdW1w IGJhY2sgdG8gb3JpZ2luYWwgcG9zaXRpb24uClRoZSBvcmdpbmFsIHBvc2l0aW9uIGlzIHRo ZSB2YWx1ZSBvZiBgd2luZG93LXBvaW50JyBpbiB0aGUKc2VsZWN0ZWQgd2luZG93IGJlZm9y ZSB5b3Ugc3RhcnRlZCBzY3JvbGxpbmcuCgpUaGlzIGNvbW1hbmQgZG9lcyBub3QgcHVzaCB0 aGUgbWFyay4iCiAgKGludGVyYWN0aXZlKQogIChsZXQgKChlbnRyeSAoYXNzcSAoc2VsZWN0 ZWQtd2luZG93KSBzY3JvbGwtcmVzdG9yZS1hbGlzdCkpKQogICAgKGlmIGVudHJ5CiAgICAg ICAgKGdvdG8tY2hhciAobnRoIDIgZW50cnkpKQogICAgICAoZXJyb3IgIk5vIGp1bXAtYmFj ayBwb3NpdGlvbiBhdmFpbGFibGUiKSkpKQoKOzs7IyMjYXV0b2xvYWQKKGRlZmluZS1taW5v ci1tb2RlIHNjcm9sbC1yZXN0b3JlLW1vZGUKICAiVG9nZ2xlIFNjcm9sbCBSZXN0b3JlIG1v ZGUuCldpdGggYXJnLCB0dXJuIFNjcm9sbCBSZXN0b3JlIG1vZGUgb24gaWYgYXJnIGlzIHBv c2l0aXZlLCBvZmYKb3RoZXJ3aXNlLgoKSW4gU2Nyb2xsIFJlc3RvcmUgbW9kZSBFbWFjcyBh dHRlbXB0cyB0byByZXN0b3JlIHRoZSBvcmlnaW5hbApwb3NpdGlvbiB0aGF0IGV4aXN0ZWQg YmVmb3JlIGV4ZWN1dGluZyBhIHNlcXVlbmNlIG9mIHNjcm9sbGluZwpjb21tYW5kcyB3aGVu ZXZlciB0aGF0IHBvc2l0aW9uIGJlY29tZXMgdmlzaWJsZSBhZ2Fpbi4gIFRoZQpvcHRpb24g YHNjcm9sbC1yZXN0b3JlLWNvbW1hbmRzJyBwZXJtaXRzIHRvIHNwZWNpZnkgdGhlIHNldCBv Zgpjb21tYW5kcyB0aGF0IG1heSBjb25zdGl0dXRlIHN1Y2ggYSBzZXF1ZW5jZS4gIEluIGFk ZGl0aW9uIHRoaXMgbW9kZQpwcm92aWRlcyB0aGUgZm9sbG93aW5nIG9wdGlvbnM6CgotIEp1 bXAgYmFjayB0byB0aGUgb3JpZ2luYWwgcG9zaXRpb24gYmVmb3JlIGV4ZWN1dGluZyBhCiAg bm9uLXNjcm9sbGluZyBjb21tYW5kLCBzZWUgYHNjcm9sbC1yZXN0b3JlLWp1bXAtYmFjaycu CgotIENoYW5nZSB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgY3Vyc29yIGluIHRoZSBzZWxlY3Rl ZCB3aW5kb3cKICB3aGlsZSB0aGUgb3JpZ2luYWwgcG9zaXRpb24gaXMgb2ZmLXNjcmVlbiwg c2VlIHRoZSBvcHRpb24KICBgc2Nyb2xsLXJlc3RvcmUtaGFuZGxlLWN1cnNvcicuCgotIFJl c3RvcmUgbWFyayBhbmQgcmVnaW9uIHdoZW4gY29taW5nIG9uLXNjcmVlbiBhZ2Fpbiwgc2Vl IHRoZQogIG9wdGlvbiBgc2Nyb2xsLXJlc3RvcmUtaGFuZGxlLXJlZ2lvbicuIgogIDpnbG9i YWwgdAogIDpncm91cCAnc2Nyb2xsLXJlc3RvcmUKICA6aW5pdC12YWx1ZSBuaWwKICA6bGlu ayAnKGVtYWNzLWNvbW1lbnRhcnktbGluayAic2Nyb2xsLXJlc3RvcmUuZWwiKQogIChpZiBz Y3JvbGwtcmVzdG9yZS1tb2RlCiAgICAgIChwcm9nbgogICAgICAgIChzY3JvbGwtcmVzdG9y ZS1hZGQpCiAgICAgICAgKHdoZW4gKG9yIHNjcm9sbC1yZXN0b3JlLWp1bXAtYmFjayBzY3Jv bGwtcmVzdG9yZS1oYW5kbGUtcmVnaW9uCiAgICAgICAgICAgICAgICAgIHNjcm9sbC1yZXN0 b3JlLWhhbmRsZS1jdXJzb3IpCiAgICAgICAgICAoYWRkLWhvb2sgJ3ByZS1jb21tYW5kLWhv b2sgJ3Njcm9sbC1yZXN0b3JlLXByZS1jb21tYW5kKSkKCShpZiAoYm91bmRwICdwcmUtcmVk aXNwbGF5LWZ1bmN0aW9uKQoJICAgIChhZGQtZnVuY3Rpb24gOmJlZm9yZSBwcmUtcmVkaXNw bGF5LWZ1bmN0aW9uCgkJCSAgIydzY3JvbGwtcmVzdG9yZS1wcmUtcmVkaXNwbGF5KQoJICAo YWRkLWhvb2sgJ3Bvc3QtY29tbWFuZC1ob29rICdzY3JvbGwtcmVzdG9yZS1wb3N0LWNvbW1h bmQgdCkpKQogICAgKHNjcm9sbC1yZXN0b3JlLXJlbW92ZSAnYWxsKQogICAgKHJlbW92ZS1o b29rICdwcmUtY29tbWFuZC1ob29rICdzY3JvbGwtcmVzdG9yZS1wcmUtY29tbWFuZCkKICAg IChpZiAoYm91bmRwICdwcmUtcmVkaXNwbGF5LWZ1bmN0aW9uKQoJKHJlbW92ZS1mdW5jdGlv biBwcmUtcmVkaXNwbGF5LWZ1bmN0aW9uICdzY3JvbGwtcmVzdG9yZS1wcmUtcmVkaXNwbGF5 KQogICAgICAocmVtb3ZlLWhvb2sgJ3Bvc3QtY29tbWFuZC1ob29rICdzY3JvbGwtcmVzdG9y ZS1wb3N0LWNvbW1hbmQpKSkpCgoocHJvdmlkZSAnc2Nyb2xsLXJlc3RvcmUpCjs7OyBzY3Jv bGwtcmVzdG9yZS5lbCBlbmRzIGhlcmUK --------------070208020304090709000404--