From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Stuart D. Herring" Newsgroups: gmane.emacs.devel Subject: Re: "Emacs 21" Date: Fri, 27 Oct 2006 15:15:39 -0700 (PDT) Message-ID: <37546.128.165.123.18.1161987339.squirrel@webmail.lanl.gov> References: <35344.128.165.123.18.1160155315.squirrel@webmail.lanl.gov> <39197.128.165.123.18.1160518428.squirrel@webmail.lanl.gov> Reply-To: herring@lanl.gov NNTP-Posting-Host: main.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed;boundary="----=_20061027151539_81061" X-Trace: sea.gmane.org 1161987410 24602 80.91.229.2 (27 Oct 2006 22:16:50 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Fri, 27 Oct 2006 22:16:50 +0000 (UTC) Cc: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Oct 28 00:16:47 2006 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by ciao.gmane.org with esmtp (Exim 4.43) id 1GdZzy-000410-5Z for ged-emacs-devel@m.gmane.org; Sat, 28 Oct 2006 00:16:44 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1GdZzn-0000Wc-Up for ged-emacs-devel@m.gmane.org; Fri, 27 Oct 2006 18:16:12 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1GdZzN-0000NN-U9 for emacs-devel@gnu.org; Fri, 27 Oct 2006 18:15:45 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1GdZzM-0000M1-LJ for emacs-devel@gnu.org; Fri, 27 Oct 2006 18:15:45 -0400 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1GdZzM-0000Lp-Ei for emacs-devel@gnu.org; Fri, 27 Oct 2006 18:15:44 -0400 Original-Received: from [192.65.95.54] (helo=mailwasher-b.lanl.gov) by monty-python.gnu.org with esmtp (Exim 4.52) id 1GdZzK-0000TX-5f; Fri, 27 Oct 2006 18:15:43 -0400 Original-Received: from mailrelay3.lanl.gov (mailrelay3.lanl.gov [128.165.4.104]) by mailwasher-b.lanl.gov (8.13.8/8.13.8/(ccn-5)) with ESMTP id k9RMFdOV026936; Fri, 27 Oct 2006 16:15:40 -0600 Original-Received: from webmail1.lanl.gov (webmail1.lanl.gov [128.165.4.106]) by mailrelay3.lanl.gov (8.13.8/8.13.8/(ccn-5)) with ESMTP id k9RMFdmn026925; Fri, 27 Oct 2006 16:15:39 -0600 Original-Received: from webmail1.lanl.gov (localhost.localdomain [127.0.0.1]) by webmail1.lanl.gov (8.12.11.20060308/8.12.11) with ESMTP id k9RMFdX1025663; Fri, 27 Oct 2006 16:15:39 -0600 Original-Received: (from apache@localhost) by webmail1.lanl.gov (8.12.11.20060308/8.12.11/Submit) id k9RMFdV4025661; Fri, 27 Oct 2006 15:15:39 -0700 X-Authentication-Warning: webmail1.lanl.gov: apache set sender to herring@lanl.gov using -f Original-Received: from 128.165.123.18 (SquirrelMail authenticated user 196434) by webmail.lanl.gov with HTTP; Fri, 27 Oct 2006 15:15:39 -0700 (PDT) In-Reply-To: Original-To: "Richard Stallman" User-Agent: SquirrelMail/1.4.6-7.el3.7lanl X-Priority: 3 (Normal) Importance: Normal X-PMX-Version: 4.7.1.128075 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:61257 Archived-At: ------=_20061027151539_81061 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit > For a beginner learning Lisp on Emacs 22, talking about old Emacs > versions is a digression. Digressions interfere with communication. > Unless there is some special important reason I can't envision, > it is better to eliminate everything about old versions. > [snip] > Each of these examples serves an educational purpose. > So each should be updated so as to serve its purpose well > in a world where Emacs 22 is being used. OK, here's the (long) patch for the Lisp Introduction to do all that. In lieu of a description, here's a ChangeLog entry for it: 2006-10-27 Stuart D. Herring * emacs-lisp-intro.texi (Top): remove menu entry for "Complete zap-to-char". (Top, Emacs Initialization): remove version reference for X colors. (Making Errors, Void Function, Void Variable) (Wrong Type of Argument, debug, debug-on-entry): remove discussion of Emacs 20 error reporting. (else): make impossible outcome obvious. (Review): use `emacs-major-version' instead of `emacs-version'. Document `='. (Finding More): remove discussion of old `describe-function' behavior. (Finding More, fwd-para summary, lengths-list-file) (lengths-list-many-files, Files List): use 22.1 instead of 21.0.100 as a dummy version number. (mark-whole-buffer overview): use version 22 `mark-whole-buffer'. (Body of mark-whole-buffer): update call to `push-mark'. Merge paragraphs describing `push-mark' call to include 21 information. (zap-to-char): remove discussion of version 19 function, and the description of error-handling in `kill-region'. Include function source in node. Remove "Complete zap-to-char" menu item. (Complete zap-to-char): delete node. (zap-to-char interactive): simplify discussion of "*" in the interactive spec, omitting version 19 bug. (search-forward): simplify discussion of character/string distinction. (kill-region): merge version 21 information. (Recursive Definition Parts): use `when' in recursive template. (Recursion with list): remove Emacs 20 instructions. (Recursion with list, Every, recursive-graph-body-print): use `when' instead of `if'+`progn'. (lengths-list-file): remove Emacs 19 commentary, old path Texinfo comment. (Files List): use @dots instead of ".." directory in example list. (Simple Extension): clean up testing of Emacs version and minor mode calls, and rewrite motivation for version-specific customization (Mode Line): don't mention that :eval was new in 21. (debug-on-entry): rewrite motivation for deliberate debugging. Davis -- This product is sold by volume, not by mass. If it appears too dense or too sparse, it is because mass-energy conversion has occurred during shipping. ------=_20061027151539_81061 Content-Type: application/octet-stream; name="lispintro.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="lispintro.patch" KioqIGVtYWNzLWxpc3AtaW50cm8udGV4aS5+MS40Mi5+CTIwMDYtMDgtMjEgMTI6NTM6NTkuMDAw MDAwMDAwIC0wNjAwCi0tLSBlbWFjcy1saXNwLWludHJvLnRleGkJMjAwNi0xMC0yNyAxNDowMjoz MC4wMDAwMDAwMDAgLTA2MDAKKioqKioqKioqKioqKioqCioqKiA1MjcsNTMzICoqKioKICAKICBA Y29kZXt6YXAtdG8tY2hhcn0KICAKLSAqIENvbXBsZXRlIHphcC10by1jaGFyOjogICAgICAgIFRo ZSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbi4KICAqIHphcC10by1jaGFyIGludGVyYWN0aXZlOjog ICAgIEEgdGhyZWUgcGFydCBpbnRlcmFjdGl2ZSBleHByZXNzaW9uLgogICogemFwLXRvLWNoYXIg Ym9keTo6ICAgICAgICAgICAgQSBzaG9ydCBvdmVydmlldy4KICAqIHNlYXJjaC1mb3J3YXJkOjog ICAgICAgICAgICAgIEhvdyB0byBzZWFyY2ggZm9yIGEgc3RyaW5nLgotLS0gNTI3LDUzMiAtLS0t CioqKioqKioqKioqKioqKgoqKiogNzA3LDcxMyAqKioqCiAgKiBMb2FkaW5nIEZpbGVzOjogICAg ICAgICAgICAgICBMb2FkIChpLmUuLCBldmFsdWF0ZSkgZmlsZXMgYXV0b21hdGljYWxseS4KICAq IEF1dG9sb2FkOjogICAgICAgICAgICAgICAgICAgIE1ha2UgZnVuY3Rpb25zIGF2YWlsYWJsZS4K ICAqIFNpbXBsZSBFeHRlbnNpb246OiAgICAgICAgICAgIERlZmluZSBhIGZ1bmN0aW9uOyBiaW5k IGl0IHRvIGEga2V5LgohICogWDExIENvbG9yczo6ICAgICAgICAgICAgICAgICAgQ29sb3JzIGlu IHZlcnNpb24gMTkgaW4gWC4KICAqIE1pc2NlbGxhbmVvdXM6OgogICogTW9kZSBMaW5lOjogICAg ICAgICAgICAgICAgICAgSG93IHRvIGN1c3RvbWl6ZSB5b3VyIG1vZGUgbGluZS4KICAKLS0tIDcw Niw3MTIgLS0tLQogICogTG9hZGluZyBGaWxlczo6ICAgICAgICAgICAgICAgTG9hZCAoaS5lLiwg ZXZhbHVhdGUpIGZpbGVzIGF1dG9tYXRpY2FsbHkuCiAgKiBBdXRvbG9hZDo6ICAgICAgICAgICAg ICAgICAgICBNYWtlIGZ1bmN0aW9ucyBhdmFpbGFibGUuCiAgKiBTaW1wbGUgRXh0ZW5zaW9uOjog ICAgICAgICAgICBEZWZpbmUgYSBmdW5jdGlvbjsgYmluZCBpdCB0byBhIGtleS4KISAqIFgxMSBD b2xvcnM6OiAgICAgICAgICAgICAgICAgIFNldHRpbmcgY29sb3JzIHRvIHVzZSBpbiBYLgogICog TWlzY2VsbGFuZW91czo6CiAgKiBNb2RlIExpbmU6OiAgICAgICAgICAgICAgICAgICBIb3cgdG8g Y3VzdG9taXplIHlvdXIgbW9kZSBsaW5lLgogIAoqKioqKioqKioqKioqKioKKioqIDEzNzYsMTM5 MSAqKioqCiAgKHRoaXMgaXMgYW4gdW5xdW90ZWQgbGlzdCkKICBAZW5kIHNtYWxsZXhhbXBsZQog IAotIEBub2luZGVudAotIFdoYXQgeW91IHNlZSBkZXBlbmRzIG9uIHdoaWNoIHZlcnNpb24gb2Yg RW1hY3MgeW91IGFyZSBydW5uaW5nLiAgR05VCi0gRW1hY3MgdmVyc2lvbiAyMSBwcm92aWRlcyBt b3JlIGluZm9ybWF0aW9uIHRoYW4gdmVyc2lvbiAyMCBhbmQgYmVmb3JlLgotIEZpcnN0LCB0aGUg bW9yZSByZWNlbnQgcmVzdWx0IG9mIGdlbmVyYXRpbmcgYW4gZXJyb3I7IHRoZW4gdGhlCi0gZWFy bGllciwgdmVyc2lvbiAyMCByZXN1bHQuCi0gCiAgQG5lZWQgMTI1MAogIEBub2luZGVudAohIElu IEdOVSBFbWFjcyB2ZXJzaW9uIDIxLCBhIEBmaWxleypCYWNrdHJhY2UqfSB3aW5kb3cgd2lsbCBv cGVuIHVwIGFuZAohIHlvdSB3aWxsIHNlZSB0aGUgZm9sbG93aW5nIGluIGl0OgogIAogIEBzbWFs bGV4YW1wbGUKICBAZ3JvdXAKLS0tIDEzNzUsMTM4NCAtLS0tCiAgKHRoaXMgaXMgYW4gdW5xdW90 ZWQgbGlzdCkKICBAZW5kIHNtYWxsZXhhbXBsZQogIAogIEBuZWVkIDEyNTAKICBAbm9pbmRlbnQK ISBBIEBmaWxleypCYWNrdHJhY2UqfSB3aW5kb3cgd2lsbCBvcGVuIHVwIGFuZCB5b3Ugd2lsbCBz ZWUgdGhlCiEgZm9sbG93aW5nIGluIGl0OgogIAogIEBzbWFsbGV4YW1wbGUKICBAZ3JvdXAKKioq KioqKioqKioqKioqCioqKiAxNDY0LDE0OTQgKioqKgogIGhhdmUgYSBzZXQgb2YgaW5zdHJ1Y3Rp b25zIGZvciB0aGUgY29tcHV0ZXIgdG8gb2JleSBhbmQgdGhvc2UKICBpbnN0cnVjdGlvbnMgbXVz dCBiZSB0byBhZGQgdGhlIG51bWJlcnMgdGhhdCBmb2xsb3cgdGhlIEBjb2Rleyt9LgogIAotIEBu ZWVkIDEyNTAKLSBJbiBHTlUgRW1hY3MgdmVyc2lvbiAyMCwgYW5kIGluIGVhcmxpZXIgdmVyc2lv bnMsIHlvdSB3aWxsIHNlZSBvbmx5Ci0gb25lIGxpbmUgb2YgZXJyb3IgbWVzc2FnZTsgaXQgd2ls bCBhcHBlYXIgaW4gdGhlIGVjaG8gYXJlYSBhbmQgbG9vawotIGxpa2UgdGhpczoKLSAKLSBAc21h bGxleGFtcGxlCi0gU3ltYm9sJ3MgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyB2b2lkOkA6IHRoaXMK LSBAZW5kIHNtYWxsZXhhbXBsZQotIAotIEBub2luZGVudAotIChBbHNvLCB5b3VyIHRlcm1pbmFs IG1heSBiZWVwIGF0IHlvdS0tLXNvbWUgZG8sIHNvbWUgZG9uJ3Q7IGFuZCBvdGhlcnMKLSBibGlu ay4gIFRoaXMgaXMganVzdCBhIGRldmljZSB0byBnZXQgeW91ciBhdHRlbnRpb24uKSAgVGhlIG1l c3NhZ2UgZ29lcwotIGF3YXkgYXMgc29vbiBhcyB5b3UgdHlwZSBhbm90aGVyIGtleSwgZXZlbiBq dXN0IHRvIG1vdmUgdGhlIGN1cnNvci4KLSAKLSBXZSBrbm93IHRoZSBtZWFuaW5nIG9mIHRoZSB3 b3JkIEBzYW1we1N5bWJvbH0uICBJdCByZWZlcnMgdG8gdGhlIGZpcnN0Ci0gYXRvbSBvZiB0aGUg bGlzdCwgdGhlIHdvcmQgQHNhbXB7dGhpc30uICBUaGUgd29yZCBAc2FtcHtmdW5jdGlvbn0KLSBy ZWZlcnMgdG8gdGhlIGluc3RydWN0aW9ucyB0aGF0IHRlbGwgdGhlIGNvbXB1dGVyIHdoYXQgdG8g ZG8uCi0gKFRlY2huaWNhbGx5LCB0aGUgc3ltYm9sIHRlbGxzIHRoZSBjb21wdXRlciB3aGVyZSB0 byBmaW5kIHRoZQotIGluc3RydWN0aW9ucywgYnV0IHRoaXMgaXMgYSBjb21wbGljYXRpb24gd2Ug Y2FuIGlnbm9yZSBmb3IgdGhlCi0gbW9tZW50LikKLSAKLSBUaGUgZXJyb3IgbWVzc2FnZSBjYW4g YmUgdW5kZXJzdG9vZDogQHNhbXB7U3ltYm9sJ3MgZnVuY3Rpb24KLSBkZWZpbml0aW9uIGlzIHZv aWQ6QDogdGhpc30uICBUaGUgc3ltYm9sICh0aGF0IGlzLCB0aGUgd29yZAotIEBzYW1we3RoaXN9 KSBsYWNrcyBpbnN0cnVjdGlvbnMgZm9yIHRoZSBjb21wdXRlciB0byBjYXJyeSBvdXQuCi0gCiAg QG5vZGUgTmFtZXMgJiBEZWZpbml0aW9ucywgTGlzcCBJbnRlcnByZXRlciwgTWFraW5nIEVycm9y cywgTGlzdCBQcm9jZXNzaW5nCiAgQGNvbW1lbnQgIG5vZGUtbmFtZSwgIG5leHQsICBwcmV2aW91 cywgIHVwCiAgQHNlY3Rpb24gU3ltYm9sIE5hbWVzIGFuZCBGdW5jdGlvbiBEZWZpbml0aW9ucwot LS0gMTQ1NywxNDYyIC0tLS0KKioqKioqKioqKioqKioqCioqKiAxODA1LDE4MTIgKioqKgogIAog IEBuZWVkIDEyNTAKICBAbm9pbmRlbnQKISBJbiBHTlUgRW1hY3MgdmVyc2lvbiAyMSwgeW91IHdp bGwgY3JlYXRlIGEgQGZpbGV7KkJhY2t0cmFjZSp9IGJ1ZmZlcgohIHRoYXQgc2F5czoKICAKICBA c21hbGxleGFtcGxlCiAgQGdyb3VwCi0tLSAxNzczLDE3NzkgLS0tLQogIAogIEBuZWVkIDEyNTAK ICBAbm9pbmRlbnQKISBZb3Ugd2lsbCBjcmVhdGUgYSBAZmlsZXsqQmFja3RyYWNlKn0gYnVmZmVy IHRoYXQgc2F5cwogIAogIEBzbWFsbGV4YW1wbGUKICBAZ3JvdXAKKioqKioqKioqKioqKioqCioq KiAxODI1LDE4NDEgKioqKgogIChSZW1lbWJlciwgdG8gcXVpdCB0aGUgZGVidWdnZXIgYW5kIG1h a2UgdGhlIGRlYnVnZ2VyIHdpbmRvdyBnbyBhd2F5LAogIHR5cGUgQGtiZHtxfSBpbiB0aGUgQGZp bGV7KkJhY2t0cmFjZSp9IGJ1ZmZlci4pCiAgCi0gQG5lZWQgODAwCi0gSW4gR05VIEVtYWNzIDIw IGFuZCBiZWZvcmUsIHlvdSB3aWxsIHByb2R1Y2UgYW4gZXJyb3IgbWVzc2FnZSB0aGF0IHNheXM6 Ci0gCi0gQHNtYWxsZXhhbXBsZQotIFN5bWJvbCdzIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgdm9p ZDpAOiBmaWxsLWNvbHVtbgotIEBlbmQgc21hbGxleGFtcGxlCi0gCi0gQG5vaW5kZW50Ci0gKFRo ZSBtZXNzYWdlIHdpbGwgZ28gYXdheSBhd2F5IGFzIHNvb24gYXMgeW91IG1vdmUgdGhlIGN1cnNv ciBvciB0eXBlCi0gYW5vdGhlciBrZXkuKQotIAogIEBub2RlIFZvaWQgVmFyaWFibGUsICAsIFZv aWQgRnVuY3Rpb24sIFZhcmlhYmxlcwogIEBjb21tZW50ICBub2RlLW5hbWUsICBuZXh0LCAgcHJl dmlvdXMsICB1cAogIEBzdWJzZWN0aW9uIEVycm9yIE1lc3NhZ2UgZm9yIGEgU3ltYm9sIFdpdGhv dXQgYSBWYWx1ZQotLS0gMTc5MiwxNzk3IC0tLS0KKioqKioqKioqKioqKioqCioqKiAxODU0LDE4 NjEgKioqKgogIAogIEBuZWVkIDE1MDAKICBAbm9pbmRlbnQKISBJbiBHTlUgRW1hY3MgMjEsIHlv dSB3aWxsIGNyZWF0ZSBhIEBmaWxleypCYWNrdHJhY2UqfSBidWZmZXIgdGhhdAohIHNheXM6CiAg CiAgQHNtYWxsZXhhbXBsZQogIEBncm91cAotLS0gMTgxMCwxODE2IC0tLS0KICAKICBAbmVlZCAx NTAwCiAgQG5vaW5kZW50CiEgWW91IHdpbGwgY3JlYXRlIGEgQGZpbGV7KkJhY2t0cmFjZSp9IGJ1 ZmZlciB0aGF0IHNheXMKICAKICBAc21hbGxleGFtcGxlCiAgQGdyb3VwCioqKioqKioqKioqKioq KgoqKiogMTg5MSwxOTA2ICoqKioKICBkZWZpbml0aW9uLCB0aGUgZXJyb3IgbWVzc2FnZSByZXBv cnRlZCB0aGF0IHRoZSBzeW1ib2wncyB2YWx1ZSBhcyBhCiAgdmFyaWFibGUgd2FzIHZvaWQuCiAg Ci0gQG5lZWQgODAwCi0gSW4gR05VIEVtYWNzIHZlcnNpb24gMjAgYW5kIGJlZm9yZSwgeW91ciBl cnJvciBtZXNzYWdlIHdpbGwgc2F5OgotIAotIEBleGFtcGxlCi0gU3ltYm9sJ3MgdmFsdWUgYXMg dmFyaWFibGUgaXMgdm9pZDpAOiArCi0gQGVuZCBleGFtcGxlCi0gCi0gQG5vaW5kZW50Ci0gVGhl IG1lYW5pbmcgaXMgdGhlIHNhbWUgYXMgaW4gR05VIEVtYWNzIDIxLgotIAogIEBub2RlIEFyZ3Vt ZW50cywgc2V0ICYgc2V0cSwgVmFyaWFibGVzLCBMaXN0IFByb2Nlc3NpbmcKICBAY29tbWVudCAg bm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3VzLCAgdXAKICBAc2VjdGlvbiBBcmd1bWVudHMKLS0t IDE4NDYsMTg1MSAtLS0tCioqKioqKioqKioqKioqKgoqKiogMjE4MCwyMTk2ICoqKioKICB3b3Vs ZCBoYXZlIGJlZW4gYSBudW1iZXIsIHN1Y2ggYXMgMzcsIHJhdGhlciB0aGFuIGEgc3ltYm9sIGxp a2UKICBAY29kZXtoZWxsb30uICBCdXQgdGhlbiB5b3Ugd291bGQgbm90IGhhdmUgZ290IHRoZSBl cnJvciBtZXNzYWdlLgogIAotIEBuZWVkIDEyNTAKLSBJbiBHTlUgRW1hY3MgdmVyc2lvbiAyMCBh bmQgYmVmb3JlLCB0aGUgZWNobyBhcmVhIGRpc3BsYXlzIGFuIGVycm9yCi0gbWVzc2FnZSB0aGF0 IHNheXM6Ci0gCi0gQHNtYWxsZXhhbXBsZQotIFdyb25nIHR5cGUgYXJndW1lbnQ6QDogbnVtYmVy LW9yLW1hcmtlci1wLCBoZWxsbwotIEBlbmQgc21hbGxleGFtcGxlCi0gCi0gVGhpcyBzYXlzLCBp biBkaWZmZXJlbnQgd29yZHMsIHRoZSBzYW1lIGFzIHRoZSB0b3AgbGluZSBvZiB0aGUKLSBAZmls ZXsqQmFja3RyYWNlKn0gYnVmZmVyLgotIAogIEBub2RlIG1lc3NhZ2UsICAsIFdyb25nIFR5cGUg b2YgQXJndW1lbnQsIEFyZ3VtZW50cwogIEBjb21tZW50ICBub2RlLW5hbWUsICBuZXh0LCAgcHJl dmlvdXMsICB1cAogIEBzdWJzZWN0aW9uIFRoZSBAY29kZXttZXNzYWdlfSBGdW5jdGlvbgotLS0g MjEyNSwyMTMwIC0tLS0KKioqKioqKioqKioqKioqCioqKiA0MDMyLDQwMzggKioqKgogIEBzbWFs bGV4YW1wbGUKICBAZ3JvdXAKICAoaWYgKD4gNCA1KSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOyBAcntpZi1wYXJ0fQohICAgICAobWVzc2FnZSAiNSBpcyBncmVhdGVyIHRoYW4gNCEiKSAg ICA7IEBye3RoZW4tcGFydH0KICAgIChtZXNzYWdlICI0IGlzIG5vdCBncmVhdGVyIHRoYW4gNSEi KSkgOyBAcntlbHNlLXBhcnR9CiAgQGVuZCBncm91cAogIEBlbmQgc21hbGxleGFtcGxlCi0tLSAz OTY2LDM5NzIgLS0tLQogIEBzbWFsbGV4YW1wbGUKICBAZ3JvdXAKICAoaWYgKD4gNCA1KSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOyBAcntpZi1wYXJ0fQohICAgICAobWVzc2FnZSAiNCBp cyBncmVhdGVyIHRoYW4gNT8hIikgICA7IEBye3RoZW4tcGFydH0KICAgIChtZXNzYWdlICI0IGlz IG5vdCBncmVhdGVyIHRoYW4gNSEiKSkgOyBAcntlbHNlLXBhcnR9CiAgQGVuZCBncm91cAogIEBl bmQgc21hbGxleGFtcGxlCioqKioqKioqKioqKioqKgoqKiogNDQyOSw0NDM3ICoqKioKICAKICBA c21hbGxleGFtcGxlCiAgQGdyb3VwCiEgKGlmIChzdHJpbmctZXF1YWwKISAgICAgIChudW1iZXIt dG8tc3RyaW5nIDIxKQohICAgICAgKHN1YnN0cmluZyAoZW1hY3MtdmVyc2lvbikgMTAgMTIpKQog ICAgICAobWVzc2FnZSAiVGhpcyBpcyB2ZXJzaW9uIDIxIEVtYWNzIikKICAgIChtZXNzYWdlICJU aGlzIGlzIG5vdCB2ZXJzaW9uIDIxIEVtYWNzIikpCiAgQGVuZCBncm91cAotLS0gNDM2Myw0MzY5 IC0tLS0KICAKICBAc21hbGxleGFtcGxlCiAgQGdyb3VwCiEgKGlmICg9IGVtYWNzLW1ham9yLXZl cnNpb24gMjEpCiAgICAgIChtZXNzYWdlICJUaGlzIGlzIHZlcnNpb24gMjEgRW1hY3MiKQogICAg KG1lc3NhZ2UgIlRoaXMgaXMgbm90IHZlcnNpb24gMjEgRW1hY3MiKSkKICBAZW5kIGdyb3VwCioq KioqKioqKioqKioqKgoqKiogNDQ1Miw0NDY0ICoqKioKICBAaXRlbXggPgogIEBpdGVteCA8PQog IEBpdGVteCA+PQogIFRoZSBAY29kZXs8fSBmdW5jdGlvbiB0ZXN0cyB3aGV0aGVyIGl0cyBmaXJz dCBhcmd1bWVudCBpcyBzbWFsbGVyIHRoYW4KISBpdHMgc2Vjb25kIGFyZ3VtZW50LiAgQSBjb3Jy ZXNwb25kaW5nIGZ1bmN0aW9uLCBAY29kZXs+fSwgdGVzdHMgd2hldGhlcgohIHRoZSBmaXJzdCBh cmd1bWVudCBpcyBncmVhdGVyIHRoYW4gdGhlIHNlY29uZC4gIExpa2V3aXNlLCBAY29kZXs8PX0K ISB0ZXN0cyB3aGV0aGVyIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwg dG8gdGhlIHNlY29uZCBhbmQKISBAY29kZXs+PX0gdGVzdHMgd2hldGhlciB0aGUgZmlyc3QgYXJn dW1lbnQgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvCiEgdGhlIHNlY29uZC4gIEluIGFsbCBj YXNlcywgYm90aCBhcmd1bWVudHMgbXVzdCBiZSBudW1iZXJzIG9yIG1hcmtlcnMKISAobWFya2Vy cyBpbmRpY2F0ZSBwb3NpdGlvbnMgaW4gYnVmZmVycykuCiAgCiAgQGl0ZW0gc3RyaW5nPAogIEBp dGVteCBzdHJpbmctbGVzc3AKLS0tIDQzODQsNDM5OCAtLS0tCiAgQGl0ZW14ID4KICBAaXRlbXgg PD0KICBAaXRlbXggPj0KKyBAaXRlbXggPQogIFRoZSBAY29kZXs8fSBmdW5jdGlvbiB0ZXN0cyB3 aGV0aGVyIGl0cyBmaXJzdCBhcmd1bWVudCBpcyBzbWFsbGVyIHRoYW4KISBpdHMgc2Vjb25kIGFy Z3VtZW50LiAgQSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9uLCBAY29kZXs+fSwgdGVzdHMKISB3aGV0 aGVyIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBncmVhdGVyIHRoYW4gdGhlIHNlY29uZC4gIExpa2V3 aXNlLAohIEBjb2Rlezw9fSB0ZXN0cyB3aGV0aGVyIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBsZXNz IHRoYW4gb3IgZXF1YWwgdG8KISB0aGUgc2Vjb25kIGFuZCBAY29kZXs+PX0gdGVzdHMgd2hldGhl ciB0aGUgZmlyc3QgYXJndW1lbnQgaXMgZ3JlYXRlcgohIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHNl Y29uZC4gIEZpbmFsbHksIEBjb2Rlez19IHRlc3RzIHdoZXRoZXIgdGhlCiEgYXJndW1lbnRzIGFy ZSBudW1lcmljYWxseSBlcXVhbC4gIEluIGFsbCBjYXNlcywgYm90aCBhcmd1bWVudHMgbXVzdCBi ZQohIG51bWJlcnMgb3IgbWFya2VycyAobWFya2VycyBpbmRpY2F0ZSBwb3NpdGlvbnMgaW4gYnVm ZmVycykuCiAgCiAgQGl0ZW0gc3RyaW5nPAogIEBpdGVteCBzdHJpbmctbGVzc3AKKioqKioqKioq KioqKioqCioqKiA0NTkxLDQ2MDIgKioqKgogIHRoZW4gQGtleXtSRVR9KS4KICAKICBAY2luZGV4 IEZpbmQgc291cmNlIG9mIGZ1bmN0aW9uCiEgSW4gdmVyc2lvbnMgMjAgYW5kIGhpZ2hlciwgd2hl biBhIGZ1bmN0aW9uIGlzIHdyaXR0ZW4gaW4gRW1hY3MgTGlzcCwKISBAY29kZXtkZXNjcmliZS1m dW5jdGlvbn0gd2lsbCBhbHNvIHRlbGwgeW91IHRoZSBsb2NhdGlvbiBvZiB0aGUKISBmdW5jdGlv biBkZWZpbml0aW9uLiAgSWYgeW91IG1vdmUgcG9pbnQgb3ZlciB0aGUgZmlsZSBuYW1lIGFuZCBw cmVzcwohIHRoZSBAa2V5e1JFVH0ga2V5LCB3aGljaCBpbiB0aGlzIGNhc2UgbWVhbnMgQGNvZGV7 aGVscC1mb2xsb3d9IHJhdGhlcgohIHRoYW4gYHJldHVybicgb3IgYGVudGVyJywgRW1hY3Mgd2ls bCB0YWtlIHlvdSBkaXJlY3RseSB0byB0aGUgZnVuY3Rpb24KISBkZWZpbml0aW9uLgogIAogIE1v cmUgZ2VuZXJhbGx5LCBpZiB5b3Ugd2FudCB0byBzZWUgYSBmdW5jdGlvbiBpbiBpdHMgb3JpZ2lu YWwgc291cmNlCiAgZmlsZSwgeW91IGNhbiB1c2UgdGhlIEBjb2Rle2ZpbmQtdGFnc30gZnVuY3Rp b24gdG8ganVtcCB0byBpdC4KLS0tIDQ1MjUsNDUzNSAtLS0tCiAgdGhlbiBAa2V5e1JFVH0pLgog IAogIEBjaW5kZXggRmluZCBzb3VyY2Ugb2YgZnVuY3Rpb24KISBXaGVuIGEgZnVuY3Rpb24gaXMg d3JpdHRlbiBpbiBFbWFjcyBMaXNwLCBAY29kZXtkZXNjcmliZS1mdW5jdGlvbn0KISB3aWxsIGFs c28gdGVsbCB5b3UgdGhlIGxvY2F0aW9uIG9mIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgSWYg eW91CiEgbW92ZSBwb2ludCBvdmVyIHRoZSBmaWxlIG5hbWUgYW5kIHByZXNzIHRoZSBAa2V5e1JF VH0ga2V5LCB3aGljaCBpbgohIHRoaXMgY2FzZSBtZWFucyBAY29kZXtoZWxwLWZvbGxvd30gcmF0 aGVyIHRoYW4gYHJldHVybicgb3IgYGVudGVyJywKISBFbWFjcyB3aWxsIHRha2UgeW91IGRpcmVj dGx5IHRvIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLgogIAogIE1vcmUgZ2VuZXJhbGx5LCBpZiB5 b3Ugd2FudCB0byBzZWUgYSBmdW5jdGlvbiBpbiBpdHMgb3JpZ2luYWwgc291cmNlCiAgZmlsZSwg eW91IGNhbiB1c2UgdGhlIEBjb2Rle2ZpbmQtdGFnc30gZnVuY3Rpb24gdG8ganVtcCB0byBpdC4K KioqKioqKioqKioqKioqCioqKiA0NjE5LDQ2MjUgKioqKgogIEBrZXl7UkVUfX0uICAoT24gc29t ZSBrZXlib2FyZHMsIHRoZSBAa2V5e01FVEF9IGtleSBpcyBsYWJlbGxlZAogIEBrZXl7QUxUfS4p CiAgCiEgQGMgISEhIDIxLjAuMTAwIHRhZ3MgdGFibGUgbG9jYXRpb24gaW4gdGhpcyBwYXJhZ3Jh cGgKICBAY2luZGV4IFRBR1MgdGFibGUsIHNwZWNpZnlpbmcKICBAZmluZGV4IGZpbmQtdGFncwog IERlcGVuZGluZyBvbiBob3cgdGhlIGluaXRpYWwgZGVmYXVsdCB2YWx1ZXMgb2YgeW91ciBjb3B5 IG9mIEVtYWNzIGFyZQotLS0gNDU1Miw0NTU4IC0tLS0KICBAa2V5e1JFVH19LiAgKE9uIHNvbWUg a2V5Ym9hcmRzLCB0aGUgQGtleXtNRVRBfSBrZXkgaXMgbGFiZWxsZWQKICBAa2V5e0FMVH0uKQog IAohIEBjICEhISAyMi4xIHRhZ3MgdGFibGUgbG9jYXRpb24gaW4gdGhpcyBwYXJhZ3JhcGgKICBA Y2luZGV4IFRBR1MgdGFibGUsIHNwZWNpZnlpbmcKICBAZmluZGV4IGZpbmQtdGFncwogIERlcGVu ZGluZyBvbiBob3cgdGhlIGluaXRpYWwgZGVmYXVsdCB2YWx1ZXMgb2YgeW91ciBjb3B5IG9mIEVt YWNzIGFyZQoqKioqKioqKioqKioqKioKKioqIDQ2MjksNDYzNSAqKioqCiAgaWYgaXQgaGFzIGFs cmVhZHkgYmVlbiBjcmVhdGVkIGZvciB5b3UsIHdpbGwgYmUgaW4gYSBzdWJkaXJlY3Rvcnkgb2YK ICB0aGUgQGZpbGV7L3Vzci9sb2NhbC9zaGFyZS9lbWFjcy99IGRpcmVjdG9yeTsgdGh1cyB5b3Ug d291bGQgdXNlIHRoZQogIEBjb2Rle00teCB2aXNpdC10YWdzLXRhYmxlfSBjb21tYW5kIGFuZCBz cGVjaWZ5IGEgcGF0aG5hbWUgc3VjaCBhcwohIEBmaWxley91c3IvbG9jYWwvc2hhcmUvZW1hY3Mv MjEuMC4xMDAvbGlzcC9UQUdTfSBvcgogIEBmaWxley91c3IvbG9jYWwvc3JjL2VtYWNzL3NyYy9U QUdTfS4gIElmIHRoZSB0YWdzIHRhYmxlIGhhcwogIG5vdCBhbHJlYWR5IGJlZW4gY3JlYXRlZCwg eW91IHdpbGwgaGF2ZSB0byBjcmVhdGUgaXQgeW91cnNlbGYuCiAgCi0tLSA0NTYyLDQ1NjggLS0t LQogIGlmIGl0IGhhcyBhbHJlYWR5IGJlZW4gY3JlYXRlZCBmb3IgeW91LCB3aWxsIGJlIGluIGEg c3ViZGlyZWN0b3J5IG9mCiAgdGhlIEBmaWxley91c3IvbG9jYWwvc2hhcmUvZW1hY3MvfSBkaXJl Y3Rvcnk7IHRodXMgeW91IHdvdWxkIHVzZSB0aGUKICBAY29kZXtNLXggdmlzaXQtdGFncy10YWJs ZX0gY29tbWFuZCBhbmQgc3BlY2lmeSBhIHBhdGhuYW1lIHN1Y2ggYXMKISBAZmlsZXsvdXNyL2xv Y2FsL3NoYXJlL2VtYWNzLzIyLjEvbGlzcC9UQUdTfSBvcgogIEBmaWxley91c3IvbG9jYWwvc3Jj L2VtYWNzL3NyYy9UQUdTfS4gIElmIHRoZSB0YWdzIHRhYmxlIGhhcwogIG5vdCBhbHJlYWR5IGJl ZW4gY3JlYXRlZCwgeW91IHdpbGwgaGF2ZSB0byBjcmVhdGUgaXQgeW91cnNlbGYuCiAgCioqKioq KioqKioqKioqKgoqKiogNDgxOCw0ODMyICoqKioKICBAZW5kIGlmbm90dGV4CiAgCiAgQG5lZWQg MTI1MAohIEluIEdOVSBFbWFjcyAyMCwgdGhlIGNvZGUgZm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlv biBsb29rcyBsaWtlIHRoaXM6CiAgCiAgQHNtYWxsZXhhbXBsZQogIEBncm91cAogIChkZWZ1biBt YXJrLXdob2xlLWJ1ZmZlciAoKQohICAgIlB1dCBwb2ludCBhdCBiZWdpbm5pbmcgYW5kIG1hcmsg YXQgZW5kIG9mIGJ1ZmZlci4iCiAgICAoaW50ZXJhY3RpdmUpCiAgICAocHVzaC1tYXJrIChwb2lu dCkpCiEgICAocHVzaC1tYXJrIChwb2ludC1tYXgpKQogICAgKGdvdG8tY2hhciAocG9pbnQtbWlu KSkpCiAgQGVuZCBncm91cAogIEBlbmQgc21hbGxleGFtcGxlCi0tLSA0NzUxLDQ3NjggLS0tLQog IEBlbmQgaWZub3R0ZXgKICAKICBAbmVlZCAxMjUwCiEgSW4gR05VIEVtYWNzIDIyLCB0aGUgY29k ZSBmb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uIGxvb2tzIGxpa2UgdGhpczoKICAKICBAc21hbGxl eGFtcGxlCiAgQGdyb3VwCiAgKGRlZnVuIG1hcmstd2hvbGUtYnVmZmVyICgpCiEgICAiUHV0IHBv aW50IGF0IGJlZ2lubmluZyBhbmQgbWFyayBhdCBlbmQgb2YgYnVmZmVyLgohIFlvdSBwcm9iYWJs eSBzaG91bGQgbm90IHVzZSB0aGlzIGZ1bmN0aW9uIGluIExpc3AgcHJvZ3JhbXM7CiEgaXQgaXMg dXN1YWxseSBhIG1pc3Rha2UgZm9yIGEgTGlzcCBmdW5jdGlvbiB0byB1c2UgYW55IHN1YnJvdXRp bmUKISB0aGF0IHVzZXMgb3Igc2V0cyB0aGUgbWFyay4iCiAgICAoaW50ZXJhY3RpdmUpCiAgICAo cHVzaC1tYXJrIChwb2ludCkpCiEgICAocHVzaC1tYXJrIChwb2ludC1tYXgpIG5pbCB0KQogICAg KGdvdG8tY2hhciAocG9pbnQtbWluKSkpCiAgQGVuZCBncm91cAogIEBlbmQgc21hbGxleGFtcGxl CioqKioqKioqKioqKioqKgoqKiogNDg2Niw0ODcyICoqKioKICBAc21hbGxleGFtcGxlCiAgQGdy b3VwCiAgKHB1c2gtbWFyayAocG9pbnQpKQohIChwdXNoLW1hcmsgKHBvaW50LW1heCkpCiAgKGdv dG8tY2hhciAocG9pbnQtbWluKSkKICBAZW5kIGdyb3VwCiAgQGVuZCBzbWFsbGV4YW1wbGUKLS0t IDQ4MDIsNDgwOCAtLS0tCiAgQHNtYWxsZXhhbXBsZQogIEBncm91cAogIChwdXNoLW1hcmsgKHBv aW50KSkKISAocHVzaC1tYXJrIChwb2ludC1tYXgpIG5pbCB0KQogIChnb3RvLWNoYXIgKHBvaW50 LW1pbikpCiAgQGVuZCBncm91cAogIEBlbmQgc21hbGxleGFtcGxlCioqKioqKioqKioqKioqKgoq KiogNDg4OSw0OTIyICoqKioKICBsaW5lIGNhdXNlcyBFbWFjcyB0byBkZXRlcm1pbmUgdGhlIHBv c2l0aW9uIG9mIHBvaW50IGFuZCBzZXQgYSBtYXJrCiAgdGhlcmUuCiAgCiEgVGhlIG5leHQgbGlu ZSBvZiBAY29kZXttYXJrLXdob2xlLWJ1ZmZlcn0gaXMgQGNvZGV7KHB1c2gtbWFyayAocG9pbnQt bWF4KX0uCiEgVGhpcyBleHByZXNzaW9uIHNldHMgYSBtYXJrIGF0IHRoZSBwb2ludCBpbiB0aGUg YnVmZmVyCiEgdGhhdCBoYXMgdGhlIGhpZ2hlc3QgbnVtYmVyLiAgVGhpcyB3aWxsIGJlIHRoZSBl bmQgb2YgdGhlIGJ1ZmZlciAob3IsCiEgaWYgdGhlIGJ1ZmZlciBpcyBuYXJyb3dlZCwgdGhlIGVu ZCBvZiB0aGUgYWNjZXNzaWJsZSBwb3J0aW9uIG9mIHRoZQohIGJ1ZmZlci4gIEB4cmVme05hcnJv d2luZyAmIFdpZGVuaW5nLCAsIE5hcnJvd2luZyBhbmQgV2lkZW5pbmd9LCBmb3IKISBtb3JlIGFi b3V0IG5hcnJvd2luZy4pICBBZnRlciB0aGlzIG1hcmsgaGFzIGJlZW4gc2V0LCB0aGUgcHJldmlv dXMKISBtYXJrLCB0aGUgb25lIHNldCBhdCBwb2ludCwgaXMgbm8gbG9uZ2VyIHNldCwgYnV0IEVt YWNzIHJlbWVtYmVycyBpdHMKISBwb3NpdGlvbiwganVzdCBhcyBhbGwgb3RoZXIgcmVjZW50IG1h cmtzIGFyZSBhbHdheXMgcmVtZW1iZXJlZC4gIFRoaXMKISBtZWFucyB0aGF0IHlvdSBjYW4sIGlm IHlvdSB3aXNoLCBnbyBiYWNrIHRvIHRoYXQgcG9zaXRpb24gYnkgdHlwaW5nCiEgQGtiZHtDLXUg Qy1Aa2V5e1NQQ319IHR3aWNlLgohIAohIChJbiBHTlUgRW1hY3MgMjEsIHRoZSBAY29kZXsocHVz aC1tYXJrIChwb2ludC1tYXgpfSBpcyBzbGlnaHRseSBtb3JlCiEgY29tcGxpY2F0ZWQgdGhhbiBz aG93biBoZXJlLiAgVGhlIGxpbmUgcmVhZHMKISAKISBAc21hbGxleGFtcGxlCiEgKHB1c2gtbWFy ayAocG9pbnQtbWF4KSBuaWwgdCkKISBAZW5kIHNtYWxsZXhhbXBsZQohIAohIEBub2luZGVudAoh IChUaGUgZXhwcmVzc2lvbiB3b3JrcyBuZWFybHkgdGhlIHNhbWUgYXMgYmVmb3JlLiAgSXQgc2V0 cyBhIG1hcmsgYXQKISB0aGUgaGlnaGVzdCBudW1iZXJlZCBwbGFjZSBpbiB0aGUgYnVmZmVyIHRo YXQgaXQgY2FuLiAgSG93ZXZlciwgaW4KISB0aGlzIHZlcnNpb24sIEBjb2Rle3B1c2gtbWFya30g aGFzIHR3byBhZGRpdGlvbmFsIGFyZ3VtZW50cy4gIFRoZQohIHNlY29uZCBhcmd1bWVudCB0byBA Y29kZXtwdXNoLW1hcmt9IGlzIEBjb2Rle25pbH0uICBUaGlzIHRlbGxzIHRoZQohIGZ1bmN0aW9u IGl0IEBlbXBoe3Nob3VsZH0gZGlzcGxheSBhIG1lc3NhZ2UgdGhhdCBzYXlzIGBNYXJrIHNldCcg d2hlbgohIGl0IHB1c2hlcyB0aGUgbWFyay4gIFRoZSB0aGlyZCBhcmd1bWVudCBpcyBAY29kZXt0 fS4gIFRoaXMgdGVsbHMKICBAY29kZXtwdXNoLW1hcmt9IHRvIGFjdGl2YXRlIHRoZSBtYXJrIHdo ZW4gVHJhbnNpZW50IE1hcmsgbW9kZSBpcwogIHR1cm5lZCBvbi4gIFRyYW5zaWVudCBNYXJrIG1v ZGUgaGlnaGxpZ2h0cyB0aGUgY3VycmVudGx5IGFjdGl2ZQohIHJlZ2lvbi4gIEl0IGlzIHVzdWFs bHkgdHVybmVkIG9mZi4pCiAgCiAgRmluYWxseSwgdGhlIGxhc3QgbGluZSBvZiB0aGUgZnVuY3Rp b24gaXMgQGNvZGV7KGdvdG8tY2hhcgogIChwb2ludC1taW4pKSl9LiAgVGhpcyBpcyB3cml0dGVu IGV4YWN0bHkgdGhlIHNhbWUgd2F5IGFzIGl0IGlzIHdyaXR0ZW4KLS0tIDQ4MjUsNDg0NyAtLS0t CiAgbGluZSBjYXVzZXMgRW1hY3MgdG8gZGV0ZXJtaW5lIHRoZSBwb3NpdGlvbiBvZiBwb2ludCBh bmQgc2V0IGEgbWFyawogIHRoZXJlLgogIAohIFRoZSBuZXh0IGxpbmUgb2YgQGNvZGV7bWFyay13 aG9sZS1idWZmZXJ9IGlzIEBjb2RleyhwdXNoLW1hcmsKISAocG9pbnQtbWF4KSBuaWwgdCl9LiAg VGhpcyBleHByZXNzaW9uIHNldHMgYSBtYXJrIGF0IHRoZSBwb2ludCBpbiB0aGUKISBidWZmZXIg dGhhdCBoYXMgdGhlIGhpZ2hlc3QgbnVtYmVyLiAgVGhpcyB3aWxsIGJlIHRoZSBlbmQgb2YgdGhl CiEgYnVmZmVyIChvciwgaWYgdGhlIGJ1ZmZlciBpcyBuYXJyb3dlZCwgdGhlIGVuZCBvZiB0aGUg YWNjZXNzaWJsZQohIHBvcnRpb24gb2YgdGhlIGJ1ZmZlci4gIEB4cmVme05hcnJvd2luZyAmIFdp ZGVuaW5nLCAsIE5hcnJvd2luZyBhbmQKISBXaWRlbmluZ30sIGZvciBtb3JlIGFib3V0IG5hcnJv d2luZy4pICBBZnRlciB0aGlzIG1hcmsgaGFzIGJlZW4gc2V0LAohIHRoZSBwcmV2aW91cyBtYXJr LCB0aGUgb25lIHNldCBhdCBwb2ludCwgaXMgbm8gbG9uZ2VyIHNldCwgYnV0IEVtYWNzCiEgcmVt ZW1iZXJzIGl0cyBwb3NpdGlvbiwganVzdCBhcyBhbGwgb3RoZXIgcmVjZW50IG1hcmtzIGFyZSBh bHdheXMKISByZW1lbWJlcmVkLiAgVGhpcyBtZWFucyB0aGF0IHlvdSBjYW4sIGlmIHlvdSB3aXNo LCBnbyBiYWNrIHRvIHRoYXQKISBwb3NpdGlvbiBieSB0eXBpbmcgQGtiZHtDLXUgQy1Aa2V5e1NQ Q319IHR3aWNlLiAgV2UgYWxzbyBzZWUgaGVyZSB0aGF0CiEgQGNvZGV7cHVzaC1tYXJrfSBoYXMg dHdvIGFkZGl0aW9uYWwsIG9wdGlvbmFsIGFyZ3VtZW50cy4gIFRoZSBzZWNvbmQKISBhcmd1bWVu dCB0byBAY29kZXtwdXNoLW1hcmt9IGlzIEBjb2Rle25pbH0uICBUaGlzIHRlbGxzIHRoZSBmdW5j dGlvbgohIGl0LCBhcyBpcyB0aGUgZGVmYXVsdCwgQGVtcGh7c2hvdWxkfSBkaXNwbGF5IHRoZSBt ZXNzYWdlIGBNYXJrIHNldCcgdG8KISB0aGUgdXNlci4gIFRoZSB0aGlyZCBhcmd1bWVudCBpcyBA Y29kZXt0fS4gIFRoaXMgdGVsbHMKICBAY29kZXtwdXNoLW1hcmt9IHRvIGFjdGl2YXRlIHRoZSBt YXJrIHdoZW4gVHJhbnNpZW50IE1hcmsgbW9kZSBpcwogIHR1cm5lZCBvbi4gIFRyYW5zaWVudCBN YXJrIG1vZGUgaGlnaGxpZ2h0cyB0aGUgY3VycmVudGx5IGFjdGl2ZQohIHJlZ2lvbi4gIEl0IGlz IHVzdWFsbHkgdHVybmVkIG9mZi4KICAKICBGaW5hbGx5LCB0aGUgbGFzdCBsaW5lIG9mIHRoZSBm dW5jdGlvbiBpcyBAY29kZXsoZ290by1jaGFyCiAgKHBvaW50LW1pbikpKX0uICBUaGlzIGlzIHdy aXR0ZW4gZXhhY3RseSB0aGUgc2FtZSB3YXkgYXMgaXQgaXMgd3JpdHRlbgoqKioqKioqKioqKioq KioKKioqIDcyMzgsNzI4MyAqKioqCiAgQHNlY3Rpb24gQGNvZGV7emFwLXRvLWNoYXJ9CiAgQGZp bmRleCB6YXAtdG8tY2hhcgogIAohIFRoZSBAY29kZXt6YXAtdG8tY2hhcn0gZnVuY3Rpb24gYmFy ZWx5IGNoYW5nZWQgYmV0d2VlbiBHTlUgRW1hY3MKISB2ZXJzaW9uIDE5IGFuZCBHTlUgRW1hY3Mg dmVyc2lvbiAyMS4gIEhvd2V2ZXIsIEBjb2Rle3phcC10by1jaGFyfQohIGNhbGxzIGFub3RoZXIg ZnVuY3Rpb24sIEBjb2Rle2tpbGwtcmVnaW9ufSwgd2hpY2ggZW5qb3llZCBhIG1ham9yIHJld3Jp dGUKISBvbiB0aGUgd2F5IHRvIHZlcnNpb24gMjEuCiEgCiEgVGhlIEBjb2Rle2tpbGwtcmVnaW9u fSBmdW5jdGlvbiBpbiBFbWFjcyAxOSBpcyBjb21wbGV4LCBidXQgZG9lcyBub3QKISB1c2UgY29k ZSB0aGF0IGlzIGltcG9ydGFudCBhdCB0aGlzIHRpbWUuICBXZSB3aWxsIHNraXAgaXQuCiEgCiEg VGhlIEBjb2Rle2tpbGwtcmVnaW9ufSBmdW5jdGlvbiBpbiBFbWFjcyAyMSBpcyBlYXNpZXIgdG8g cmVhZCB0aGFuIHRoZQohIHNhbWUgZnVuY3Rpb24gaW4gRW1hY3MgMTkgYW5kIGludHJvZHVjZXMg YSB2ZXJ5IGltcG9ydGFudCBjb25jZXB0LAohIHRoYXQgb2YgZXJyb3IgaGFuZGxpbmcuICBXZSB3 aWxsIHdhbGsgdGhyb3VnaCB0aGUgZnVuY3Rpb24uCiEgCiEgQnV0IGZpcnN0LCBsZXQgdXMgbG9v ayBhdCB0aGUgaW50ZXJhY3RpdmUgQGNvZGV7emFwLXRvLWNoYXJ9IGZ1bmN0aW9uLgohIAohIEBt ZW51CiEgKiBDb21wbGV0ZSB6YXAtdG8tY2hhcjo6ICAgICAgICBUaGUgY29tcGxldGUgaW1wbGVt ZW50YXRpb24uCiEgKiB6YXAtdG8tY2hhciBpbnRlcmFjdGl2ZTo6ICAgICBBIHRocmVlIHBhcnQg aW50ZXJhY3RpdmUgZXhwcmVzc2lvbi4KISAqIHphcC10by1jaGFyIGJvZHk6OiAgICAgICAgICAg IEEgc2hvcnQgb3ZlcnZpZXcuCiEgKiBzZWFyY2gtZm9yd2FyZDo6ICAgICAgICAgICAgICBIb3cg dG8gc2VhcmNoIGZvciBhIHN0cmluZy4KISAqIHByb2duOjogICAgICAgICAgICAgICAgICAgICAg IFRoZSBAY29kZXtwcm9nbn0gc3BlY2lhbCBmb3JtLgohICogU3VtbWluZyB1cCB6YXAtdG8tY2hh cjo6ICAgICAgVXNpbmcgQGNvZGV7cG9pbnR9IGFuZCBAY29kZXtzZWFyY2gtZm9yd2FyZH0uCiEg QGVuZCBtZW51CiEgCiEgQG5vZGUgQ29tcGxldGUgemFwLXRvLWNoYXIsIHphcC10by1jaGFyIGlu dGVyYWN0aXZlLCB6YXAtdG8tY2hhciwgemFwLXRvLWNoYXIKISBAaWZub3R0ZXgKISBAdW5udW1i ZXJlZHN1YnNlYyBUaGUgQ29tcGxldGUgQGNvZGV7emFwLXRvLWNoYXJ9IEltcGxlbWVudGF0aW9u CiEgQGVuZCBpZm5vdHRleAohIAohIFRoZSBHTlUgRW1hY3MgdmVyc2lvbiAxOSBhbmQgdmVyc2lv biAyMSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlCiEgQGNvZGV7emFwLXRvLWNoYXJ9IGZ1bmN0aW9u IGFyZSBuZWFybHkgaWRlbnRpY2FsIGluIGZvcm0sIGFuZCB0aGV5CiEgd29yayBhbGlrZS4gIFRo ZSBmdW5jdGlvbiByZW1vdmVzIHRoZSB0ZXh0IGluIHRoZSByZWdpb24gYmV0d2VlbiB0aGUKISBs b2NhdGlvbiBvZiB0aGUgY3Vyc29yIChpLmUuLCBvZiBwb2ludCkgdXAgdG8gYW5kIGluY2x1ZGlu ZyB0aGUgbmV4dAohIG9jY3VycmVuY2Ugb2YgYSBzcGVjaWZpZWQgY2hhcmFjdGVyLiAgVGhlIHRl eHQgdGhhdCBAY29kZXt6YXAtdG8tY2hhcn0KISByZW1vdmVzIGlzIHB1dCBpbiB0aGUga2lsbCBy aW5nOyBhbmQgaXQgY2FuIGJlIHJldHJpZXZlZCBmcm9tIHRoZSBraWxsCiEgcmluZyBieSB0eXBp bmcgQGtiZHtDLXl9IChAY29kZXt5YW5rfSkuICBJZiB0aGUgY29tbWFuZCBpcyBnaXZlbiBhbgoh IGFyZ3VtZW50LCBpdCByZW1vdmVzIHRleHQgdGhyb3VnaCB0aGF0IG51bWJlciBvZiBvY2N1cnJl bmNlcy4gIFRodXMsCiEgaWYgdGhlIGN1cnNvciB3ZXJlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhp cyBzZW50ZW5jZSBhbmQgdGhlIGNoYXJhY3RlcgohIHdlcmUgQHNhbXB7c30sIEBzYW1we1RodXN9 IHdvdWxkIGJlIHJlbW92ZWQuICBJZiB0aGUgYXJndW1lbnQgd2VyZQohIHR3bywgQHNhbXB7VGh1 cywgaWYgdGhlIGN1cnN9IHdvdWxkIGJlIHJlbW92ZWQsIHVwIHRvIGFuZCBpbmNsdWRpbmcKISB0 aGUgQHNhbXB7c30gaW4gQHNhbXB7Y3Vyc29yfS4KICAKICBJZiB0aGUgc3BlY2lmaWVkIGNoYXJh Y3RlciBpcyBub3QgZm91bmQsIEBjb2Rle3phcC10by1jaGFyfSB3aWxsIHNheQogIGBgU2VhcmNo IGZhaWxlZCcnLCB0ZWxsIHlvdSB0aGUgY2hhcmFjdGVyIHlvdSB0eXBlZCwgYW5kIG5vdCByZW1v dmUKLS0tIDcxNjMsNzE3OCAtLS0tCiAgQHNlY3Rpb24gQGNvZGV7emFwLXRvLWNoYXJ9CiAgQGZp bmRleCB6YXAtdG8tY2hhcgogIAohIFRoZSBAY29kZXt6YXAtdG8tY2hhcn0gZnVuY3Rpb24gcmVt b3ZlcyB0aGUgdGV4dCBpbiB0aGUgcmVnaW9uIGJldHdlZW4KISB0aGUgbG9jYXRpb24gb2YgdGhl IGN1cnNvciAoaS5lLiwgb2YgcG9pbnQpIHVwIHRvIGFuZCBpbmNsdWRpbmcgdGhlCiEgbmV4dCBv Y2N1cnJlbmNlIG9mIGEgc3BlY2lmaWVkIGNoYXJhY3Rlci4gIFRoZSB0ZXh0IHRoYXQKISBAY29k ZXt6YXAtdG8tY2hhcn0gcmVtb3ZlcyBpcyBwdXQgaW4gdGhlIGtpbGwgcmluZzsgYW5kIGl0IGNh biBiZQohIHJldHJpZXZlZCBmcm9tIHRoZSBraWxsIHJpbmcgYnkgdHlwaW5nIEBrYmR7Qy15fSAo QGNvZGV7eWFua30pLiAgSWYKISB0aGUgY29tbWFuZCBpcyBnaXZlbiBhbiBhcmd1bWVudCwgaXQg cmVtb3ZlcyB0ZXh0IHRocm91Z2ggdGhhdCBudW1iZXIKISBvZiBvY2N1cnJlbmNlcy4gIFRodXMs IGlmIHRoZSBjdXJzb3Igd2VyZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoaXMKISBzZW50ZW5jZSBh bmQgdGhlIGNoYXJhY3RlciB3ZXJlIEBzYW1we3N9LCBAc2FtcHtUaHVzfSB3b3VsZCBiZQohIHJl bW92ZWQuICBJZiB0aGUgYXJndW1lbnQgd2VyZSB0d28sIEBzYW1we1RodXMsIGlmIHRoZSBjdXJz fSB3b3VsZCBiZQohIHJlbW92ZWQsIHVwIHRvIGFuZCBpbmNsdWRpbmcgdGhlIEBzYW1we3N9IGlu IEBzYW1we2N1cnNvcn0uCiAgCiAgSWYgdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIgaXMgbm90IGZv dW5kLCBAY29kZXt6YXAtdG8tY2hhcn0gd2lsbCBzYXkKICBgYFNlYXJjaCBmYWlsZWQnJywgdGVs bCB5b3UgdGhlIGNoYXJhY3RlciB5b3UgdHlwZWQsIGFuZCBub3QgcmVtb3ZlCioqKioqKioqKioq KioqKgoqKiogNzI4OSw3Mjk1ICoqKioKICBkZWxldGlvbiBjb21tYW5kLgogIAogIEBuZWVkIDgw MAohIEhlcmUgaXMgdGhlIGNvbXBsZXRlIHRleHQgb2YgdGhlIHZlcnNpb24gMTkgaW1wbGVtZW50 YXRpb24gb2YgdGhlIGZ1bmN0aW9uOgogIAogIEBjIHYgMTkKICBAc21hbGxleGFtcGxlCi0tLSA3 MTg0LDcxOTMgLS0tLQogIGRlbGV0aW9uIGNvbW1hbmQuCiAgCiAgQG5lZWQgODAwCiEgSGVyZSBp cyB0aGUgY29tcGxldGUgdGV4dCBvZiB0aGUgdmVyc2lvbiAxOSBpbXBsZW1lbnRhdGlvbiBvZiB0 aGUKISBmdW5jdGlvbiwgd2hpY2ggaXMgc29tZXdoYXQgc2ltcGxlciB0aGFuIG1vcmUgcmVjZW50 IHZlcnNpb25zIGJ1dAohIGNvbnRhaW5zIGFsbCBlc3NlbnRpYWwgYmVoYXZpb3IuICBGb2xsb3dp bmcgc2VjdGlvbnMgd2lsbCBkaXNjdXNzCiEgcG9ydGlvbnMgb2YgdGhlIGZ1bmN0aW9uIGRlZmlu aXRpb24gaW4gZGV0YWlsLgogIAogIEBjIHYgMTkKICBAc21hbGxleGFtcGxlCioqKioqKioqKioq KioqKgoqKiogNzMwNiw3MzExICoqKioKLS0tIDcyMDQsNzIxNyAtLS0tCiAgQGVuZCBncm91cAog IEBlbmQgc21hbGxleGFtcGxlCiAgCisgQG1lbnUKKyAqIHphcC10by1jaGFyIGludGVyYWN0aXZl OjogICAgIEEgdGhyZWUgcGFydCBpbnRlcmFjdGl2ZSBleHByZXNzaW9uLgorICogemFwLXRvLWNo YXIgYm9keTo6ICAgICAgICAgICAgQSBzaG9ydCBvdmVydmlldy4KKyAqIHNlYXJjaC1mb3J3YXJk OjogICAgICAgICAgICAgIEhvdyB0byBzZWFyY2ggZm9yIGEgc3RyaW5nLgorICogcHJvZ246OiAg ICAgICAgICAgICAgICAgICAgICAgVGhlIEBjb2Rle3Byb2dufSBzcGVjaWFsIGZvcm0uCisgKiBT dW1taW5nIHVwIHphcC10by1jaGFyOjogICAgICBVc2luZyBAY29kZXtwb2ludH0gYW5kIEBjb2Rl e3NlYXJjaC1mb3J3YXJkfS4KKyBAZW5kIG1lbnUKKyAKICBAbm9kZSB6YXAtdG8tY2hhciBpbnRl cmFjdGl2ZSwgemFwLXRvLWNoYXIgYm9keSwgQ29tcGxldGUgemFwLXRvLWNoYXIsIHphcC10by1j aGFyCiAgQGNvbW1lbnQgIG5vZGUtbmFtZSwgIG5leHQsICBwcmV2aW91cywgIHVwCiAgQHN1YnNl Y3Rpb24gVGhlIEBjb2Rle2ludGVyYWN0aXZlfSBFeHByZXNzaW9uCioqKioqKioqKioqKioqKgoq KiogNzMyNSw3MzU2ICoqKioKICByZW1vdmUgdGV4dCwgYW5kIHlvdSB3aWxsIHJlY2VpdmUgYSBt ZXNzYWdlIHRoYXQgc2F5cyBgYEJ1ZmZlciBpcwogIHJlYWQtb25seScnOyB5b3VyIHRlcm1pbmFs IG1heSBiZWVwIGF0IHlvdSBhcyB3ZWxsLgogIAohIFRoZSB2ZXJzaW9uIDIxIGltcGxlbWVudGF0 aW9uIGRvZXMgbm90IGhhdmUgdGhlIGFzdGVyaXNrLCBAc2FtcHsqfS4gIFRoZQohIGZ1bmN0aW9u IHdvcmtzIHRoZSBzYW1lIGFzIGluIHZlcnNpb24gMTk6IGluIGJvdGggY2FzZXMsIGl0IGNhbm5v dAohIHJlbW92ZSB0ZXh0IGZyb20gYSByZWFkLW9ubHkgYnVmZmVyIGJ1dCB0aGUgZnVuY3Rpb24g ZG9lcyBjb3B5IHRoZQohIHRleHQgdGhhdCB3b3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCB0byB0aGUg a2lsbCByaW5nLiAgQWxzbywgaW4gYm90aAohIGNhc2VzLCB5b3Ugc2VlIGFuIGVycm9yIG1lc3Nh Z2UuCiEgCiEgSG93ZXZlciwgdGhlIHZlcnNpb24gMTkgaW1wbGVtZW50YXRpb24gY29waWVzIHRl eHQgZnJvbSBhIHJlYWQtb25seQohIGJ1ZmZlciBvbmx5IGJlY2F1c2Ugb2YgYSBtaXN0YWtlIGlu IHRoZSBpbXBsZW1lbnRhdGlvbiBvZgohIEBjb2Rle2ludGVyYWN0aXZlfS4gIEFjY29yZGluZyB0 byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IKISBAY29kZXtpbnRlcmFjdGl2ZX0sIHRoZSBhc3Rlcmlz aywgQHNhbXB7Kn0sIHNob3VsZCBwcmV2ZW50IHRoZQohIEBjb2Rle3phcC10by1jaGFyfSBmdW5j dGlvbiBmcm9tIGRvaW5nIGFueXRoaW5nIGF0IGFsbCB3aGVuIHRoZSBidWZmZXIKISBpcyByZWFk IG9ubHkuICBJbiB2ZXJzaW9uIDE5LCB0aGUgZnVuY3Rpb24gc2hvdWxkIG5vdCBjb3B5IHRoZSB0 ZXh0IHRvCiEgdGhlIGtpbGwgcmluZy4gIEl0IGlzIGEgYnVnIHRoYXQgaXQgZG9lcy4KISAKISBJ biB2ZXJzaW9uIDIxLCB0aGUgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gY29weSB0aGUgdGV4dCB0 byB0aGUga2lsbAohIHJpbmc7IG1vcmVvdmVyLCBAY29kZXtpbnRlcmFjdGl2ZX0gaXMgaW1wbGVt ZW50ZWQgY29ycmVjdGx5LiAgU28gdGhlCiEgYXN0ZXJpc2ssIEBzYW1weyp9LCBoYWQgdG8gYmUg cmVtb3ZlZCBmcm9tIHRoZSBpbnRlcmFjdGl2ZQohIHNwZWNpZmljYXRpb24uICBIb3dldmVyLCBp ZiB5b3UgaW5zZXJ0IGFuIEBzYW1weyp9IHlvdXJzZWxmIGFuZAohIGV2YWx1YXRlIHRoZSBmdW5j dGlvbiBkZWZpbml0aW9uLCB0aGVuIHRoZSBuZXh0IHRpbWUgeW91IHJ1biB0aGUKISBAY29kZXt6 YXAtdG8tY2hhcn0gZnVuY3Rpb24gb24gYSByZWFkLW9ubHkgYnVmZmVyLCB5b3Ugd2lsbCBub3Qg Y29weQohIGFueSB0ZXh0LgohIAohIFRoYXQgY2hhbmdlIGFzaWRlLCBhbmQgYSBjaGFuZ2UgdG8g dGhlIGRvY3VtZW50YXRpb24sIHRoZSB0d28gdmVyc2lvbnMKISBvZiB0aGUgIEBjb2Rle3phcC10 by1jaGFyfSBmdW5jdGlvbiBhcmUgaWRlbnRpY2FsLgohIAohIExldCB1cyBjb250aW51ZSB3aXRo IHRoZSBpbnRlcmFjdGl2ZSBzcGVjaWZpY2F0aW9uLgogIAogIFRoZSBzZWNvbmQgcGFydCBvZiBA Y29kZXsiKnBcbmNaYXAgdG8gY2hhcjpAOiAifSBpcyB0aGUgQHNhbXB7cH0uCiAgVGhpcyBwYXJ0 IGlzIHNlcGFyYXRlZCBmcm9tIHRoZSBuZXh0IHBhcnQgYnkgYSBuZXdsaW5lLCBAc2FtcHtcbn0u Ci0tLSA3MjMxLDcyMzkgLS0tLQogIHJlbW92ZSB0ZXh0LCBhbmQgeW91IHdpbGwgcmVjZWl2ZSBh IG1lc3NhZ2UgdGhhdCBzYXlzIGBgQnVmZmVyIGlzCiAgcmVhZC1vbmx5Jyc7IHlvdXIgdGVybWlu YWwgbWF5IGJlZXAgYXQgeW91IGFzIHdlbGwuCiAgCiEgKE1vcmUgcmVjZW50IGltcGxlbWVudGF0 aW9ucyBkbyBub3QgaGF2ZSB0aGUgYXN0ZXJpc2sgdG8gYWxsb3cgY29weWluZwohIHRleHQgZnJv bSBhIHJlYWQtb25seSBidWZmZXI7IHRoZSB0ZXh0IGlzIG5vdCBkZWxldGVkIHNpbmNlIGl0IGlz CiEgcmVhZC1vbmx5LCBidXQgaXQgaXMgc3RpbGwgcHV0IG9uIHRoZSBraWxsIHJpbmcuKQogIAog IFRoZSBzZWNvbmQgcGFydCBvZiBAY29kZXsiKnBcbmNaYXAgdG8gY2hhcjpAOiAifSBpcyB0aGUg QHNhbXB7cH0uCiAgVGhpcyBwYXJ0IGlzIHNlcGFyYXRlZCBmcm9tIHRoZSBuZXh0IHBhcnQgYnkg YSBuZXdsaW5lLCBAc2FtcHtcbn0uCioqKioqKioqKioqKioqKgoqKiogNzQyMiw3NDM0ICoqKioK ICBzdHJpbmcsIHN1Y2ggYXMgQHNhbXB7InoifS4KICAKICBBcyBpdCBoYXBwZW5zLCB0aGUgYXJn dW1lbnQgcGFzc2VkIHRvIEBjb2Rle3phcC10by1jaGFyfSBpcyBhIHNpbmdsZQohIGNoYXJhY3Rl ci4gIEJlY2F1c2Ugb2YgdGhlIHdheSBjb21wdXRlcnMgYXJlIGJ1aWx0LCB0aGUgTGlzcAohIGlu dGVycHJldGVyIG1heSB0cmVhdCBhIHNpbmdsZSBjaGFyYWN0ZXIgYXMgYmVpbmcgZGlmZmVyZW50 IGZyb20gYQohIHN0cmluZyBvZiBjaGFyYWN0ZXJzLiAgSW5zaWRlIHRoZSBjb21wdXRlciwgYSBz aW5nbGUgY2hhcmFjdGVyIGhhcyBhCiEgZGlmZmVyZW50IGVsZWN0cm9uaWMgZm9ybWF0IHRoYW4g YSBzdHJpbmcgb2Ygb25lIGNoYXJhY3Rlci4gIChBIHNpbmdsZQohIGNoYXJhY3RlciBjYW4gb2Z0 ZW4gYmUgcmVjb3JkZWQgaW4gdGhlIGNvbXB1dGVyIHVzaW5nIGV4YWN0bHkgb25lCiEgYnl0ZTsg YnV0IGEgc3RyaW5nIG1heSBiZSBsb25nZXIsIGFuZCB0aGUgY29tcHV0ZXIgbmVlZHMgdG8gYmUg cmVhZHkKISBmb3IgdGhpcy4pICBTaW5jZSB0aGUgQGNvZGV7c2VhcmNoLWZvcndhcmR9IGZ1bmN0 aW9uIHNlYXJjaGVzIGZvciBhCiAgc3RyaW5nLCB0aGUgY2hhcmFjdGVyIHRoYXQgdGhlIEBjb2Rl e3phcC10by1jaGFyfSBmdW5jdGlvbiByZWNlaXZlcyBhcwogIGl0cyBhcmd1bWVudCBtdXN0IGJl IGNvbnZlcnRlZCBpbnNpZGUgdGhlIGNvbXB1dGVyIGZyb20gb25lIGZvcm1hdCB0bwogIHRoZSBv dGhlcjsgb3RoZXJ3aXNlIHRoZSBAY29kZXtzZWFyY2gtZm9yd2FyZH0gZnVuY3Rpb24gd2lsbCBm YWlsLgotLS0gNzMwNSw3MzE0IC0tLS0KICBzdHJpbmcsIHN1Y2ggYXMgQHNhbXB7InoifS4KICAK ICBBcyBpdCBoYXBwZW5zLCB0aGUgYXJndW1lbnQgcGFzc2VkIHRvIEBjb2Rle3phcC10by1jaGFy fSBpcyBhIHNpbmdsZQohIGNoYXJhY3Rlci4gIFRoZSBMaXNwIGludGVycHJldGVyIHRyZWF0cyBz aW5nbGUgY2hhcmFjdGVycyBhcyBiZWluZwohIGRpZmZlcmVudCBmcm9tIHN0cmluZ3Mgb2YgY2hh cmFjdGVycywgc2luY2UgdGhlIGZvcm1lciBhcmUgYWx3YXlzIG9uZQohIGNoYXJhY3RlciBidXQg dGhlIGxhdHRlciBjYW4gZWFjaCBoYXZlIGRpZmZlcmVudCBudW1iZXJzIG9mCiEgY2hhcmFjdGVy cy4gIFNpbmNlIHRoZSBAY29kZXtzZWFyY2gtZm9yd2FyZH0gZnVuY3Rpb24gc2VhcmNoZXMgZm9y IGEKICBzdHJpbmcsIHRoZSBjaGFyYWN0ZXIgdGhhdCB0aGUgQGNvZGV7emFwLXRvLWNoYXJ9IGZ1 bmN0aW9uIHJlY2VpdmVzIGFzCiAgaXRzIGFyZ3VtZW50IG11c3QgYmUgY29udmVydGVkIGluc2lk ZSB0aGUgY29tcHV0ZXIgZnJvbSBvbmUgZm9ybWF0IHRvCiAgdGhlIG90aGVyOyBvdGhlcndpc2Ug dGhlIEBjb2Rle3NlYXJjaC1mb3J3YXJkfSBmdW5jdGlvbiB3aWxsIGZhaWwuCioqKioqKioqKioq KioqKgoqKiogNzUzMyw3NTQ0ICoqKioKICBAZmluZGV4IGtpbGwtcmVnaW9uCiAgCiAgVGhlIEBj b2Rle3phcC10by1jaGFyfSBmdW5jdGlvbiB1c2VzIHRoZSBAY29kZXtraWxsLXJlZ2lvbn0gZnVu Y3Rpb24uCiEgVGhpcyBmdW5jdGlvbiBjbGlwcyB0ZXh0IGZyb20gYSByZWdpb24gYW5kIGNvcGll cyB0aGF0IHRleHQgdG8KISB0aGUga2lsbCByaW5nLCBmcm9tIHdoaWNoIGl0IG1heSBiZSByZXRy aWV2ZWQuCiEgCiEgVGhlIEVtYWNzIDIxIHZlcnNpb24gb2YgdGhhdCBmdW5jdGlvbiB1c2VzIEBj b2Rle2NvbmRpdGlvbi1jYXNlfSBhbmQKISBAY29kZXtjb3B5LXJlZ2lvbi1hcy1raWxsfSwgYm90 aCBvZiB3aGljaCB3ZSB3aWxsIGV4cGxhaW4uCiEgQGNvZGV7Y29uZGl0aW9uLWNhc2V9IGlzIGFu IGltcG9ydGFudCBzcGVjaWFsIGZvcm0uCiAgCiAgSW4gZXNzZW5jZSwgdGhlIEBjb2Rle2tpbGwt cmVnaW9ufSBmdW5jdGlvbiBjYWxscwogIEBjb2Rle2NvbmRpdGlvbi1jYXNlfSwgd2hpY2ggdGFr ZXMgdGhyZWUgYXJndW1lbnRzLiAgSW4gdGhpcyBmdW5jdGlvbiwKLS0tIDc0MTMsNzQyMiAtLS0t CiAgQGZpbmRleCBraWxsLXJlZ2lvbgogIAogIFRoZSBAY29kZXt6YXAtdG8tY2hhcn0gZnVuY3Rp b24gdXNlcyB0aGUgQGNvZGV7a2lsbC1yZWdpb259IGZ1bmN0aW9uLgohIFRoaXMgZnVuY3Rpb24g Y2xpcHMgdGV4dCBmcm9tIGEgcmVnaW9uIGFuZCBjb3BpZXMgdGhhdCB0ZXh0IHRvIHRoZQohIGtp bGwgcmluZywgZnJvbSB3aGljaCBpdCBtYXkgYmUgcmV0cmlldmVkLiAgSXQgYWxzbyB1c2VzCiEg QGNvZGV7Y29uZGl0aW9uLWNhc2V9IGFuZCBAY29kZXtjb3B5LXJlZ2lvbi1hcy1raWxsfSwgYm90 aCBvZiB3aGljaCB3ZQohIHdpbGwgZXhwbGFpbi4gIEBjb2Rle2NvbmRpdGlvbi1jYXNlfSBpcyBh biBpbXBvcnRhbnQgc3BlY2lhbCBmb3JtLgogIAogIEluIGVzc2VuY2UsIHRoZSBAY29kZXtraWxs LXJlZ2lvbn0gZnVuY3Rpb24gY2FsbHMKICBAY29kZXtjb25kaXRpb24tY2FzZX0sIHdoaWNoIHRh a2VzIHRocmVlIGFyZ3VtZW50cy4gIEluIHRoaXMgZnVuY3Rpb24sCioqKioqKioqKioqKioqKgoq KiogMTA2MzYsMTA2NDIgKioqKgogIEBncm91cAogIChkZWZ1biBAdmFye25hbWUtb2YtcmVjdXJz aXZlLWZ1bmN0aW9ufSAoQHZhcnthcmd1bWVudC1saXN0fSkKICAgICJAdmFye2RvY3VtZW50YXRp b259QGRvdHN7fSIKISAgIChpZiBAdmFye2RvLWFnYWluLXRlc3R9CiAgICAgIEB2YXJ7Ym9keX1A ZG90c3t9CiAgICAgIChAdmFye25hbWUtb2YtcmVjdXJzaXZlLWZ1bmN0aW9ufQogICAgICAgICAg IEB2YXJ7bmV4dC1zdGVwLWV4cHJlc3Npb259KSkpCi0tLSAxMDUxNCwxMDUyMCAtLS0tCiAgQGdy b3VwCiAgKGRlZnVuIEB2YXJ7bmFtZS1vZi1yZWN1cnNpdmUtZnVuY3Rpb259IChAdmFye2FyZ3Vt ZW50LWxpc3R9KQogICAgIkB2YXJ7ZG9jdW1lbnRhdGlvbn1AZG90c3t9IgohICAgKHdoZW4gQHZh cntkby1hZ2Fpbi10ZXN0fQogICAgICBAdmFye2JvZHl9QGRvdHN7fQogICAgICAoQHZhcntuYW1l LW9mLXJlY3Vyc2l2ZS1mdW5jdGlvbn0KICAgICAgICAgICBAdmFye25leHQtc3RlcC1leHByZXNz aW9ufSkpKQoqKioqKioqKioqKioqKioKKioqIDEwNjY4LDEwNjg3ICoqKioKICBvZiBudW1iZXJz IGNhbiBiZSB3cml0dGVuIHJlY3Vyc2l2ZWx5LiAgSGVyZSBpcyB0aGUgY29kZSwgaW5jbHVkaW5n CiAgYW4gZXhwcmVzc2lvbiB0byBzZXQgdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZSBAY29kZXth bmltYWxzfSB0byBhIGxpc3QuCiAgCiEgSWYgeW91IGFyZSB1c2luZyBFbWFjcyAyMCBvciBiZWZv cmUsIHRoaXMgZXhhbXBsZSBtdXN0IGJlIGNvcGllZCB0bwohIHRoZSBAZmlsZXsqc2NyYXRjaCp9 IGJ1ZmZlciBhbmQgZWFjaCBleHByZXNzaW9uIG11c3QgYmUgZXZhbHVhdGVkCiEgdGhlcmUuICBV c2UgQGtiZHtDLXUgQy14IEMtZX0gdG8gZXZhbHVhdGUgdGhlCiEgQGNvZGV7KHByaW50LWVsZW1l bnRzLXJlY3Vyc2l2ZWx5IGFuaW1hbHMpfSBleHByZXNzaW9uIHNvIHRoYXQgdGhlCiEgcmVzdWx0 cyBhcmUgcHJpbnRlZCBpbiB0aGUgYnVmZmVyOyBvdGhlcndpc2UgdGhlIExpc3AgaW50ZXJwcmV0 ZXIgd2lsbAohIHRyeSB0byBzcXVlZXplIHRoZSByZXN1bHRzIGludG8gdGhlIG9uZSBsaW5lIG9m IHRoZSBlY2hvIGFyZWEuCiAgCiAgQWxzbywgcGxhY2UgeW91ciBjdXJzb3IgaW1tZWRpYXRlbHkg YWZ0ZXIgdGhlIGxhc3QgY2xvc2luZyBwYXJlbnRoZXNpcwogIG9mIHRoZSBAY29kZXtwcmludC1l bGVtZW50cy1yZWN1cnNpdmVseX0gZnVuY3Rpb24sIGJlZm9yZSB0aGUgY29tbWVudC4KICBPdGhl cndpc2UsIHRoZSBMaXNwIGludGVycHJldGVyIHdpbGwgdHJ5IHRvIGV2YWx1YXRlIHRoZSBjb21t ZW50LgogIAotIElmIHlvdSBhcmUgdXNpbmcgRW1hY3MgMjEgb3IgbGF0ZXIsIHlvdSBjYW4gZXZh bHVhdGUgdGhpcyBleHByZXNzaW9uCi0gZGlyZWN0bHkgaW4gSW5mby4KLSAKICBAZmluZGV4IHBy aW50LWVsZW1lbnRzLXJlY3Vyc2l2ZWx5CiAgQHNtYWxsZXhhbXBsZQogIEBncm91cAotLS0gMTA1 NDYsMTA1NjEgLS0tLQogIG9mIG51bWJlcnMgY2FuIGJlIHdyaXR0ZW4gcmVjdXJzaXZlbHkuICBI ZXJlIGlzIHRoZSBjb2RlLCBpbmNsdWRpbmcKICBhbiBleHByZXNzaW9uIHRvIHNldCB0aGUgdmFs dWUgb2YgdGhlIHZhcmlhYmxlIEBjb2Rle2FuaW1hbHN9IHRvIGEgbGlzdC4KICAKISBJbiBFbWFj cywgeW91IGNhbiBldmFsdWF0ZSB0aGVzZSBleHByZXNzaW9ucyBkaXJlY3RseSBpbiBJbmZvLiAg VXNlCiEgQGtiZHtDLXUgQy14IEMtZX0gdG8gZXZhbHVhdGUgdGhlIEBjb2RleyhwcmludC1lbGVt ZW50cy1yZWN1cnNpdmVseQohIGFuaW1hbHMpfSBleHByZXNzaW9uIHNvIHRoYXQgdGhlIHJlc3Vs dHMgYXJlIHByaW50ZWQgaW4gdGhlIGJ1ZmZlcjsKISBvdGhlcndpc2UgdGhlIExpc3AgaW50ZXJw cmV0ZXIgd2lsbCB0cnkgdG8gc3F1ZWV6ZSB0aGUgcmVzdWx0cyBpbnRvCiEgdGhlIG9uZSBsaW5l IG9mIHRoZSBlY2hvIGFyZWEuCiAgCiAgQWxzbywgcGxhY2UgeW91ciBjdXJzb3IgaW1tZWRpYXRl bHkgYWZ0ZXIgdGhlIGxhc3QgY2xvc2luZyBwYXJlbnRoZXNpcwogIG9mIHRoZSBAY29kZXtwcmlu dC1lbGVtZW50cy1yZWN1cnNpdmVseX0gZnVuY3Rpb24sIGJlZm9yZSB0aGUgY29tbWVudC4KICBP dGhlcndpc2UsIHRoZSBMaXNwIGludGVycHJldGVyIHdpbGwgdHJ5IHRvIGV2YWx1YXRlIHRoZSBj b21tZW50LgogIAogIEBmaW5kZXggcHJpbnQtZWxlbWVudHMtcmVjdXJzaXZlbHkKICBAc21hbGxl eGFtcGxlCiAgQGdyb3VwCioqKioqKioqKioqKioqKgoqKiogMTA2OTAsMTA3MDAgKioqKgogIChk ZWZ1biBwcmludC1lbGVtZW50cy1yZWN1cnNpdmVseSAobGlzdCkKICAgICJQcmludCBlYWNoIGVs ZW1lbnQgb2YgTElTVCBvbiBhIGxpbmUgb2YgaXRzIG93bi4KICBVc2VzIHJlY3Vyc2lvbi4iCiEg ICAoaWYgbGlzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgQHJ7ZG8tYWdhaW4tdGVz dH0KISAgICAgICAocHJvZ24KISAgICAgICAgIChwcmludCAoY2FyIGxpc3QpKSAgICAgICAgICAg ICAgOyBAcntib2R5fQohICAgICAgICAgKHByaW50LWVsZW1lbnRzLXJlY3Vyc2l2ZWx5ICAgICA7 IEBye3JlY3Vyc2l2ZSBjYWxsfQohICAgICAgICAgIChjZHIgbGlzdCkpKSkpICAgICAgICAgICAg ICAgICA7IEBye25leHQtc3RlcC1leHByZXNzaW9ufQogIAogIChwcmludC1lbGVtZW50cy1yZWN1 cnNpdmVseSBhbmltYWxzKQogIEBlbmQgZ3JvdXAKLS0tIDEwNTY0LDEwNTczIC0tLS0KICAoZGVm dW4gcHJpbnQtZWxlbWVudHMtcmVjdXJzaXZlbHkgKGxpc3QpCiAgICAiUHJpbnQgZWFjaCBlbGVt ZW50IG9mIExJU1Qgb24gYSBsaW5lIG9mIGl0cyBvd24uCiAgVXNlcyByZWN1cnNpb24uIgohICAg KHdoZW4gbGlzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IEBye2RvLWFnYWluLXRlc3R9 CiEgICAgIChwcmludCAoY2FyIGxpc3QpKSAgICAgICAgICAgICAgICAgIDsgQHJ7Ym9keX0KISAg ICAgKHByaW50LWVsZW1lbnRzLXJlY3Vyc2l2ZWx5ICAgICAgICAgOyBAcntyZWN1cnNpdmUgY2Fs bH0KISAgICAgIChjZHIgbGlzdCkpKSkpICAgICAgICAgICAgICAgICAgICAgOyBAcntuZXh0LXN0 ZXAtZXhwcmVzc2lvbn0KICAKICAocHJpbnQtZWxlbWVudHMtcmVjdXJzaXZlbHkgYW5pbWFscykK ICBAZW5kIGdyb3VwCioqKioqKioqKioqKioqKgoqKiogMTA3MTYsMTA3MjIgKioqKgogIGFzc2Vt YmxpZXMgYSBzZWNvbmQgcm9ib3QgYW5kIHRlbGxzIGl0IHdoYXQgdG8gZG87IHRoZSBzZWNvbmQg cm9ib3QgaXMKICBhIGRpZmZlcmVudCBpbmRpdmlkdWFsIGZyb20gdGhlIGZpcnN0LCBidXQgaXMg dGhlIHNhbWUgbW9kZWwuCiAgCiEgV2hlbiB0aGUgc2Vjb25kIGV2YWx1YXRpb24gb2NjdXJzLCB0 aGUgQGNvZGV7aWZ9IGV4cHJlc3Npb24gaXMKICBldmFsdWF0ZWQgYW5kIGlmIHRydWUsIHByaW50 cyB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgbGlzdCBpdAogIHJlY2VpdmVzIGFzIGl0cyBhcmd1 bWVudCAod2hpY2ggaXMgdGhlIHNlY29uZCBlbGVtZW50IG9mIHRoZSBvcmlnaW5hbAogIGxpc3Qp LiAgVGhlbiB0aGUgZnVuY3Rpb24gYGNhbGxzIGl0c2VsZicgd2l0aCB0aGUgQHNje2Nkcn0gb2Yg dGhlIGxpc3QKLS0tIDEwNTg5LDEwNTk1IC0tLS0KICBhc3NlbWJsaWVzIGEgc2Vjb25kIHJvYm90 IGFuZCB0ZWxscyBpdCB3aGF0IHRvIGRvOyB0aGUgc2Vjb25kIHJvYm90IGlzCiAgYSBkaWZmZXJl bnQgaW5kaXZpZHVhbCBmcm9tIHRoZSBmaXJzdCwgYnV0IGlzIHRoZSBzYW1lIG1vZGVsLgogIAoh IFdoZW4gdGhlIHNlY29uZCBldmFsdWF0aW9uIG9jY3VycywgdGhlIEBjb2Rle3doZW59IGV4cHJl c3Npb24gaXMKICBldmFsdWF0ZWQgYW5kIGlmIHRydWUsIHByaW50cyB0aGUgZmlyc3QgZWxlbWVu dCBvZiB0aGUgbGlzdCBpdAogIHJlY2VpdmVzIGFzIGl0cyBhcmd1bWVudCAod2hpY2ggaXMgdGhl IHNlY29uZCBlbGVtZW50IG9mIHRoZSBvcmlnaW5hbAogIGxpc3QpLiAgVGhlbiB0aGUgZnVuY3Rp b24gYGNhbGxzIGl0c2VsZicgd2l0aCB0aGUgQHNje2Nkcn0gb2YgdGhlIGxpc3QKKioqKioqKioq KioqKioqCioqKiAxMDczMywxMDc0MiAqKioqCiAgd29ya3Mgb24gYSBzaG9ydGVyIGxpc3QuCiAg CiAgRXZlbnR1YWxseSwgdGhlIGZ1bmN0aW9uIGludm9rZXMgaXRzZWxmIG9uIGFuIGVtcHR5IGxp c3QuICBJdCBjcmVhdGVzCiEgYSBuZXcgaW5zdGFuY2Ugd2hvc2UgYXJndW1lbnQgaXMgQGNvZGV7 bmlsfS4gIFRoZSBjb25kaXRpb25hbCBleHByZXNzaW9uCiEgdGVzdHMgdGhlIHZhbHVlIG9mIEBj b2Rle2xpc3R9LiAgU2luY2UgdGhlIHZhbHVlIG9mIEBjb2Rle2xpc3R9IGlzCiEgQGNvZGV7bmls fSwgdGhlIEBjb2Rle2lmfSBleHByZXNzaW9uIHRlc3RzIGZhbHNlIHNvIHRoZSB0aGVuLXBhcnQg aXMKISBub3QgZXZhbHVhdGVkLiAgVGhlIGZ1bmN0aW9uIGFzIGEgd2hvbGUgdGhlbiByZXR1cm5z IEBjb2Rle25pbH0uCiAgCiAgQG5lZWQgMTIwMAogIFdoZW4geW91IGV2YWx1YXRlIEBjb2Rleyhw cmludC1lbGVtZW50cy1yZWN1cnNpdmVseSBhbmltYWxzKX0gaW4gdGhlCi0tLSAxMDYwNiwxMDYx NiAtLS0tCiAgd29ya3Mgb24gYSBzaG9ydGVyIGxpc3QuCiAgCiAgRXZlbnR1YWxseSwgdGhlIGZ1 bmN0aW9uIGludm9rZXMgaXRzZWxmIG9uIGFuIGVtcHR5IGxpc3QuICBJdCBjcmVhdGVzCiEgYSBu ZXcgaW5zdGFuY2Ugd2hvc2UgYXJndW1lbnQgaXMgQGNvZGV7bmlsfS4gIFRoZSBjb25kaXRpb25h bAohIGV4cHJlc3Npb24gdGVzdHMgdGhlIHZhbHVlIG9mIEBjb2Rle2xpc3R9LiAgU2luY2UgdGhl IHZhbHVlIG9mCiEgQGNvZGV7bGlzdH0gaXMgQGNvZGV7bmlsfSwgdGhlIEBjb2Rle3doZW59IGV4 cHJlc3Npb24gdGVzdHMgZmFsc2Ugc28KISB0aGUgdGhlbi1wYXJ0IGlzIG5vdCBldmFsdWF0ZWQu ICBUaGUgZnVuY3Rpb24gYXMgYSB3aG9sZSB0aGVuIHJldHVybnMKISBAY29kZXtuaWx9LgogIAog IEBuZWVkIDEyMDAKICBXaGVuIHlvdSBldmFsdWF0ZSBAY29kZXsocHJpbnQtZWxlbWVudHMtcmVj dXJzaXZlbHkgYW5pbWFscyl9IGluIHRoZQoqKioqKioqKioqKioqKioKKioqIDExMTE0LDExMTI0 ICoqKioKICAoZGVmdW4gcHJpbnQtZWxlbWVudHMtcmVjdXJzaXZlbHkgKGxpc3QpCiAgICAiUHJp bnQgZWFjaCBlbGVtZW50IG9mIExJU1Qgb24gYSBsaW5lIG9mIGl0cyBvd24uCiAgVXNlcyByZWN1 cnNpb24uIgohICAgKGlmIGxpc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IEBye2Rv LWFnYWluLXRlc3R9CiEgICAgICAgKHByb2duCiEgICAgICAgICAocHJpbnQgKGNhciBsaXN0KSkg ICAgICAgICAgICAgIDsgQHJ7Ym9keX0KISAgICAgICAgIChwcmludC1lbGVtZW50cy1yZWN1cnNp dmVseSAgICAgOyBAcntyZWN1cnNpdmUgY2FsbH0KISAgICAgICAgICAoY2RyIGxpc3QpKSkpKSAg ICAgICAgICAgICAgICAgOyBAcntuZXh0LXN0ZXAtZXhwcmVzc2lvbn0KICAKICAocHJpbnQtZWxl bWVudHMtcmVjdXJzaXZlbHkgYW5pbWFscykKICBAZW5kIGdyb3VwCi0tLSAxMDk4OCwxMDk5NyAt LS0tCiAgKGRlZnVuIHByaW50LWVsZW1lbnRzLXJlY3Vyc2l2ZWx5IChsaXN0KQogICAgIlByaW50 IGVhY2ggZWxlbWVudCBvZiBMSVNUIG9uIGEgbGluZSBvZiBpdHMgb3duLgogIFVzZXMgcmVjdXJz aW9uLiIKISAgICh3aGVuIGxpc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBAcntkby1h Z2Fpbi10ZXN0fQohICAgICAocHJpbnQgKGNhciBsaXN0KSkgICAgICAgICAgICAgICAgICA7IEBy e2JvZHl9CiEgICAgIChwcmludC1lbGVtZW50cy1yZWN1cnNpdmVseSAgICAgICAgIDsgQHJ7cmVj dXJzaXZlIGNhbGx9CiEgICAgICAoY2RyIGxpc3QpKSkpICAgICAgICAgICAgICAgICAgICAgIDsg QHJ7bmV4dC1zdGVwLWV4cHJlc3Npb259CiAgCiAgKHByaW50LWVsZW1lbnRzLXJlY3Vyc2l2ZWx5 IGFuaW1hbHMpCiAgQGVuZCBncm91cAoqKioqKioqKioqKioqKioKKioqIDEyNjMxLDEyNjQzICoq KioKICB5b3VyIHNvdXJjZXMhICBXaXRob3V0IHRoZW0sIHlvdSBhcmUgbGlrZSBhIHBlcnNvbiB3 aG8gdHJpZXMgdG8gZHJpdmUKICBhIGNhciB3aXRoIGhpcyBleWVzIHNodXQhKQogIAohIEBjICEh ISBhZ2FpbiwgMjEuMC4xMDAgdGFncyB0YWJsZSBsb2NhdGlvbiBpbiB0aGlzIHBhcmFncmFwaAog IE9yIC0tIGEgZ29vZCBoYWJpdCB0byBnZXQgaW50byAtLSB5b3UgY2FuIHR5cGUgQGtiZHtNLS59 CiAgKEBjb2Rle2ZpbmQtdGFnfSkgYW5kIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiB3aGVuIHBy b21wdGVkIGZvciBpdC4KICBUaGlzIHdpbGwgdGFrZSB5b3UgZGlyZWN0bHkgdG8gdGhlIHNvdXJj ZS4gIElmIHRoZSBAY29kZXtmaW5kLXRhZ30KICBmdW5jdGlvbiBmaXJzdCBhc2tzIHlvdSBmb3Ig dGhlIG5hbWUgb2YgYSBAZmlsZXtUQUdTfSB0YWJsZSwgZ2l2ZSBpdAogIHRoZSBuYW1lIG9mIHRo ZSBAZmlsZXtUQUdTfSBmaWxlIHN1Y2ggYXMKISBAZmlsZXsvdXNyL2xvY2FsL3NoYXJlL2VtYWNz LzIxLjAuMTAwL2xpc3AvVEFHU30uICAoVGhlIGV4YWN0IHBhdGggdG8geW91cgogIEBmaWxle1RB R1N9IGZpbGUgZGVwZW5kcyBvbiBob3cgeW91ciBjb3B5IG9mIEVtYWNzIHdhcyBpbnN0YWxsZWQu KQogIAogIFlvdSBjYW4gYWxzbyBjcmVhdGUgeW91ciBvd24gQGZpbGV7VEFHU30gZmlsZSBmb3Ig ZGlyZWN0b3JpZXMgdGhhdAotLS0gMTI1MDQsMTI1MTYgLS0tLQogIHlvdXIgc291cmNlcyEgIFdp dGhvdXQgdGhlbSwgeW91IGFyZSBsaWtlIGEgcGVyc29uIHdobyB0cmllcyB0byBkcml2ZQogIGEg Y2FyIHdpdGggaGlzIGV5ZXMgc2h1dCEpCiAgCiEgQGMgISEhIGFnYWluLCAyMi4xIHRhZ3MgdGFi bGUgbG9jYXRpb24gaW4gdGhpcyBwYXJhZ3JhcGgKICBPciAtLSBhIGdvb2QgaGFiaXQgdG8gZ2V0 IGludG8gLS0geW91IGNhbiB0eXBlIEBrYmR7TS0ufQogIChAY29kZXtmaW5kLXRhZ30pIGFuZCB0 aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gd2hlbiBwcm9tcHRlZCBmb3IgaXQuCiAgVGhpcyB3aWxs IHRha2UgeW91IGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UuICBJZiB0aGUgQGNvZGV7ZmluZC10YWd9 CiAgZnVuY3Rpb24gZmlyc3QgYXNrcyB5b3UgZm9yIHRoZSBuYW1lIG9mIGEgQGZpbGV7VEFHU30g dGFibGUsIGdpdmUgaXQKICB0aGUgbmFtZSBvZiB0aGUgQGZpbGV7VEFHU30gZmlsZSBzdWNoIGFz CiEgQGZpbGV7L3Vzci9sb2NhbC9zaGFyZS9lbWFjcy8yMi4xL2xpc3AvVEFHU30uICAoVGhlIGV4 YWN0IHBhdGggdG8geW91cgogIEBmaWxle1RBR1N9IGZpbGUgZGVwZW5kcyBvbiBob3cgeW91ciBj b3B5IG9mIEVtYWNzIHdhcyBpbnN0YWxsZWQuKQogIAogIFlvdSBjYW4gYWxzbyBjcmVhdGUgeW91 ciBvd24gQGZpbGV7VEFHU30gZmlsZSBmb3IgZGlyZWN0b3JpZXMgdGhhdAoqKioqKioqKioqKioq KioKKioqIDE0MzQ1LDE0MzUyICoqKioKICBkZWZpbml0aW9uIGFuZCBjb25zdHJ1Y3RzIGEgbGVu Z3RocycgbGlzdCBjb250YWluaW5nIHRoZSBpbmZvcm1hdGlvbi4KICAKICBFbWFjcyBraWxscyB0 aGUgYnVmZmVyIGFmdGVyIHdvcmtpbmcgdGhyb3VnaCBpdC4gIFRoaXMgaXMgdG8gc2F2ZQohIHNw YWNlIGluc2lkZSBvZiBFbWFjcy4gIE15IHZlcnNpb24gb2YgRW1hY3MgMTkgY29udGFpbmVkIG92 ZXIgMzAwCiEgc291cmNlIGZpbGVzIG9mIGludGVyZXN0OyBFbWFjcyAyMSBjb250YWlucyBvdmVy IDgwMCBzb3VyY2UgZmlsZXMuCiAgQW5vdGhlciBmdW5jdGlvbiB3aWxsIGFwcGx5IEBjb2Rle2xl bmd0aHMtbGlzdC1maWxlfSB0byBlYWNoIG9mIHRoZQogIGZpbGVzLgogIAotLS0gMTQyMTgsMTQy MjQgLS0tLQogIGRlZmluaXRpb24gYW5kIGNvbnN0cnVjdHMgYSBsZW5ndGhzJyBsaXN0IGNvbnRh aW5pbmcgdGhlIGluZm9ybWF0aW9uLgogIAogIEVtYWNzIGtpbGxzIHRoZSBidWZmZXIgYWZ0ZXIg d29ya2luZyB0aHJvdWdoIGl0LiAgVGhpcyBpcyB0byBzYXZlCiEgc3BhY2UgaW5zaWRlIG9mIEVt YWNzOyBFbWFjcyAyMSBjb250YWluZWQgb3ZlciA4MDAgc291cmNlIGZpbGVzLgogIEFub3RoZXIg ZnVuY3Rpb24gd2lsbCBhcHBseSBAY29kZXtsZW5ndGhzLWxpc3QtZmlsZX0gdG8gZWFjaCBvZiB0 aGUKICBmaWxlcy4KICAKKioqKioqKioqKioqKioqCioqKiAxNDM1OCwxNDM3OCAqKioqCiAgcGxh Y2UgeW91ciBjdXJzb3IgYWZ0ZXIgdGhlIGZvbGxvd2luZyBleHByZXNzaW9uIGFuZCB0eXBlIEBr YmR7Qy14CiAgQy1lfSAoQGNvZGV7ZXZhbC1sYXN0LXNleHB9KS4KICAKISBAYyAhISEgMjEuMC4x MDAgbGlzcCBzb3VyY2VzIGxvY2F0aW9uIGhlcmUKICBAc21hbGxleGFtcGxlCiAgKGxlbmd0aHMt bGlzdC1maWxlCiEgICIvdXNyL2xvY2FsL3NoYXJlL2VtYWNzLzIxLjAuMTAwL2xpc3AvZW1hY3Mt bGlzcC9kZWJ1Zy5lbCIpCiAgQGVuZCBzbWFsbGV4YW1wbGUKICAKLSBAYyB3YXM6IChsZW5ndGhz LWxpc3QtZmlsZSAiLi4vbGlzcC9kZWJ1Zy5lbCIpCi0gQGMgISEhICBhcyBvZiAyMSwgSW5mbyBm aWxlIGlzIGluCi0gQGMgL3Vzci9zaGFyZS9pbmZvL2VtYWNzLWxpc3AtaW50cm8uaW5mby5negot IEBjIGJ1dCBkZWJ1Zy5lbCBpcyBpbiAgL3Vzci9sb2NhbC9zaGFyZS9lbWFjcy8yMS4wLjEwMC9s aXNwL2VtYWNzLWxpc3AvZGVidWcuZWwKLSAKICBAbm9pbmRlbnQKICAoWW91IG1heSBuZWVkIHRv IGNoYW5nZSB0aGUgcGF0aG5hbWUgb2YgdGhlIGZpbGU7IHRoZSBvbmUgaGVyZSB3b3JrZWQKISB3 aXRoIEdOVSBFbWFjcyB2ZXJzaW9uIDIxLjAuMTAwLiAgVG8gY2hhbmdlIHRoZSBleHByZXNzaW9u LCBjb3B5IGl0IHRvCiEgdGhlIEBmaWxleypzY3JhdGNoKn0gYnVmZmVyIGFuZCBlZGl0IGl0Lgog IAogIEBuZWVkIDEyMDAKICBAbm9pbmRlbnQKLS0tIDE0MjMwLDE0MjQ1IC0tLS0KICBwbGFjZSB5 b3VyIGN1cnNvciBhZnRlciB0aGUgZm9sbG93aW5nIGV4cHJlc3Npb24gYW5kIHR5cGUgQGtiZHtD LXgKICBDLWV9IChAY29kZXtldmFsLWxhc3Qtc2V4cH0pLgogIAohIEBjICEhISAyMi4xIGxpc3Ag c291cmNlcyBsb2NhdGlvbiBoZXJlCiAgQHNtYWxsZXhhbXBsZQogIChsZW5ndGhzLWxpc3QtZmls ZQohICAiL3Vzci9sb2NhbC9zaGFyZS9lbWFjcy8yMi4xL2xpc3AvZW1hY3MtbGlzcC9kZWJ1Zy5l bCIpCiAgQGVuZCBzbWFsbGV4YW1wbGUKICAKICBAbm9pbmRlbnQKICAoWW91IG1heSBuZWVkIHRv IGNoYW5nZSB0aGUgcGF0aG5hbWUgb2YgdGhlIGZpbGU7IHRoZSBvbmUgaGVyZSB3b3JrZWQKISB3 aXRoIEdOVSBFbWFjcyB2ZXJzaW9uIDIyLjEuICBUbyBjaGFuZ2UgdGhlIGV4cHJlc3Npb24sIGNv cHkgaXQgdG8KISB0aGUgQGZpbGV7KnNjcmF0Y2gqfSBidWZmZXIgYW5kIGVkaXQgaXQuKQogIAog IEBuZWVkIDEyMDAKICBAbm9pbmRlbnQKKioqKioqKioqKioqKioqCioqKiAxNDM5NSwxNDQxMSAq KioqCiAgKDc3IDk1IDg1IDg3IDEzMSA4OSA1MCAyNSA0NCA0NCA2OCAzNSA2NCA0NSAxNyAzNCAx NjcgNDU3KQogIEBlbmQgc21hbGxleGFtcGxlCiAgCi0gQG5lZWQgMTUwMAotIChVc2luZyBteSBv bGQgbWFjaGluZSwgdGhlIHZlcnNpb24gMTkgbGVuZ3RocycgbGlzdCBmb3IgQGZpbGV7ZGVidWcu ZWx9Ci0gdG9vayBzZXZlbiBzZWNvbmRzIHRvIHByb2R1Y2UgYW5kIGxvb2tlZCBsaWtlIHRoaXM6 Ci0gCi0gQHNtYWxsZXhhbXBsZQotICg3NSA0MSA4MCA2MiAyMCA0NSA0NCA2OCA0NSAxMiAzNCAy MzUpCi0gQGVuZCBzbWFsbGV4YW1wbGUKLSAKLSAoVGhlIG5ld2VyIHZlcnNpb24gb2YgIEBmaWxl e2RlYnVnLmVsfSBjb250YWlucyBtb3JlIGRlZnVucyB0aGFuIHRoZQotIGVhcmxpZXIgb25lOyBh bmQgbXkgbmV3IG1hY2hpbmUgaXMgbXVjaCBmYXN0ZXIgdGhhbiB0aGUgb2xkIG9uZS4pCi0gCiAg Tm90ZSB0aGF0IHRoZSBsZW5ndGggb2YgdGhlIGxhc3QgZGVmaW5pdGlvbiBpbiB0aGUgZmlsZSBp cyBmaXJzdCBpbgogIHRoZSBsaXN0LgogIAotLS0gMTQyNjIsMTQyNjcgLS0tLQoqKioqKioqKioq KioqKioKKioqIDE0NDk5LDE0NTA5ICoqKioKICBuYW1lIHRvIHRoZSBhYnNvbHV0ZSwgbG9uZywg cGF0aCBuYW1lIGZvcm0gb2YgdGhlIGRpcmVjdG9yeSBpbiB3aGljaAogIHRoZSBmdW5jdGlvbiBp cyBjYWxsZWQuCiAgCiEgQGMgISEhIDIxLjAuMTAwIGxpc3Agc291cmNlcyBsb2NhdGlvbiBoZXJl CiAgQG5lZWQgMTUwMAogIFRodXMsIGlmIEBjb2Rle2V4cGFuZC1maWxlLW5hbWV9IGlzIGNhbGxl ZCBvbiBAY29kZXtkZWJ1Zy5lbH0gd2hlbgogIEVtYWNzIGlzIHZpc2l0aW5nIHRoZQohIEBmaWxl ey91c3IvbG9jYWwvc2hhcmUvZW1hY3MvMjEuMC4xMDAvbGlzcC9lbWFjcy1saXNwL30gZGlyZWN0 b3J5LAogIAogIEBzbWFsbGV4YW1wbGUKICBkZWJ1Zy5lbAotLS0gMTQzNTUsMTQzNjUgLS0tLQog IG5hbWUgdG8gdGhlIGFic29sdXRlLCBsb25nLCBwYXRoIG5hbWUgZm9ybSBvZiB0aGUgZGlyZWN0 b3J5IGluIHdoaWNoCiAgdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC4KICAKISBAYyAhISEgMjIuMSBs aXNwIHNvdXJjZXMgbG9jYXRpb24gaGVyZQogIEBuZWVkIDE1MDAKICBUaHVzLCBpZiBAY29kZXtl eHBhbmQtZmlsZS1uYW1lfSBpcyBjYWxsZWQgb24gQGNvZGV7ZGVidWcuZWx9IHdoZW4KICBFbWFj cyBpcyB2aXNpdGluZyB0aGUKISBAZmlsZXsvdXNyL2xvY2FsL3NoYXJlL2VtYWNzLzIyLjEvbGlz cC9lbWFjcy1saXNwL30gZGlyZWN0b3J5LAogIAogIEBzbWFsbGV4YW1wbGUKICBkZWJ1Zy5lbAoq KioqKioqKioqKioqKioKKioqIDE0NTEzLDE0NTIxICoqKioKICBAbm9pbmRlbnQKICBiZWNvbWVz CiAgCiEgQGMgISEhIDIxLjAuMTAwIGxpc3Agc291cmNlcyBsb2NhdGlvbiBoZXJlCiAgQHNtYWxs ZXhhbXBsZQohIC91c3IvbG9jYWwvc2hhcmUvZW1hY3MvMjEuMC4xMDAvbGlzcC9lbWFjcy1saXNw L2RlYnVnLmVsCiAgQGVuZCBzbWFsbGV4YW1wbGUKICAKICBUaGUgb25seSBvdGhlciBuZXcgZWxl bWVudCBvZiB0aGlzIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgdGhlIGFzIHlldAotLS0gMTQzNjks MTQzNzcgLS0tLQogIEBub2luZGVudAogIGJlY29tZXMKICAKISBAYyAhISEgMjIuMSBsaXNwIHNv dXJjZXMgbG9jYXRpb24gaGVyZQogIEBzbWFsbGV4YW1wbGUKISAvdXNyL2xvY2FsL3NoYXJlL2Vt YWNzLzIyLjEvbGlzcC9lbWFjcy1saXNwL2RlYnVnLmVsCiAgQGVuZCBzbWFsbGV4YW1wbGUKICAK ICBUaGUgb25seSBvdGhlciBuZXcgZWxlbWVudCBvZiB0aGlzIGZ1bmN0aW9uIGRlZmluaXRpb24g aXMgdGhlIGFzIHlldAoqKioqKioqKioqKioqKioKKioqIDE0Nzc5LDE0Nzg3ICoqKioKICAKICBA c21hbGxleGFtcGxlCiAgQGdyb3VwCiEgKCIuLi9saXNwL21hY3Jvcy5lbCIKISAgIi4uL2xpc3Av bWFpbC9ybWFpbC5lbCIKISAgIi4uL2xpc3AvbWFrZXN1bS5lbCIpCiAgQGVuZCBncm91cAogIEBl bmQgc21hbGxleGFtcGxlCiAgCi0tLSAxNDYzNSwxNDY0MyAtLS0tCiAgCiAgQHNtYWxsZXhhbXBs ZQogIEBncm91cAohICgiQGRvdHN7fS9saXNwL21hY3Jvcy5lbCIKISAgIkBkb3Rze30vbGlzcC9t YWlsL3JtYWlsLmVsIgohICAiQGRvdHN7fS9saXNwL21ha2VzdW0uZWwiKQogIEBlbmQgZ3JvdXAK ICBAZW5kIHNtYWxsZXhhbXBsZQogIAoqKioqKioqKioqKioqKioKKioqIDE0OTA5LDE0OTE1ICoq KioKICAgIDs7IEFsdGhvdWdoIHRoZSBmdW5jdGlvbiB3aWxsIGJlIHVzZWQgbm9uLWludGVyYWN0 aXZlbHksCiAgICA7OyBpdCB3aWxsIGJlIGVhc2llciB0byB0ZXN0IGlmIHdlIG1ha2UgaXQgaW50 ZXJhY3RpdmUuCiAgICA7OyBUaGUgZGlyZWN0b3J5IHdpbGwgaGF2ZSBhIG5hbWUgc3VjaCBhcwoh ICAgOzsgICIvdXNyL2xvY2FsL3NoYXJlL2VtYWNzLzIxLjAuMTAwL2xpc3AvIgogICAgKGludGVy YWN0aXZlICJERGlyZWN0b3J5IG5hbWU6ICIpCiAgQGVuZCBncm91cAogIEBncm91cAotLS0gMTQ3 NjUsMTQ3NzEgLS0tLQogICAgOzsgQWx0aG91Z2ggdGhlIGZ1bmN0aW9uIHdpbGwgYmUgdXNlZCBu b24taW50ZXJhY3RpdmVseSwKICAgIDs7IGl0IHdpbGwgYmUgZWFzaWVyIHRvIHRlc3QgaWYgd2Ug bWFrZSBpdCBpbnRlcmFjdGl2ZS4KICAgIDs7IFRoZSBkaXJlY3Rvcnkgd2lsbCBoYXZlIGEgbmFt ZSBzdWNoIGFzCiEgICA7OyAgIi91c3IvbG9jYWwvc2hhcmUvZW1hY3MvMjIuMS9saXNwLyIKICAg IChpbnRlcmFjdGl2ZSAiRERpcmVjdG9yeSBuYW1lOiAiKQogIEBlbmQgZ3JvdXAKICBAZ3JvdXAK KioqKioqKioqKioqKioqCioqKiAxNTg5MiwxNTg5OCAqKioqCiAgCiAgVGhlIHJlY3Vyc2l2ZSBm dW5jdGlvbiBpcyBhIGxpdHRsZSBtb3JlIGRpZmZpY3VsdC4gIEl0IGhhcyBmb3VyIHBhcnRzOgog IHRoZSBgZG8tYWdhaW4tdGVzdCcsIHRoZSBwcmludGluZyBjb2RlLCB0aGUgcmVjdXJzaXZlIGNh bGwsIGFuZCB0aGUKISBgbmV4dC1zdGVwLWV4cHJlc3Npb24nLiAgVGhlIGBkby1hZ2Fpbi10ZXN0 JyBpcyBhbiBAY29kZXtpZn0KICBleHByZXNzaW9uIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRo ZSBAY29kZXtudW1iZXJzLWxpc3R9IGNvbnRhaW5zCiAgYW55IHJlbWFpbmluZyBlbGVtZW50czsg aWYgaXQgZG9lcywgdGhlIGZ1bmN0aW9uIHByaW50cyBvbmUgY29sdW1uIG9mCiAgdGhlIGdyYXBo IHVzaW5nIHRoZSBwcmludGluZyBjb2RlIGFuZCBjYWxscyBpdHNlbGYgYWdhaW4uICBUaGUKLS0t IDE1NzQ4LDE1NzU0IC0tLS0KICAKICBUaGUgcmVjdXJzaXZlIGZ1bmN0aW9uIGlzIGEgbGl0dGxl IG1vcmUgZGlmZmljdWx0LiAgSXQgaGFzIGZvdXIgcGFydHM6CiAgdGhlIGBkby1hZ2Fpbi10ZXN0 JywgdGhlIHByaW50aW5nIGNvZGUsIHRoZSByZWN1cnNpdmUgY2FsbCwgYW5kIHRoZQohIGBuZXh0 LXN0ZXAtZXhwcmVzc2lvbicuICBUaGUgYGRvLWFnYWluLXRlc3QnIGlzIGFuIEBjb2Rle3doZW59 CiAgZXhwcmVzc2lvbiB0aGF0IGRldGVybWluZXMgd2hldGhlciB0aGUgQGNvZGV7bnVtYmVycy1s aXN0fSBjb250YWlucwogIGFueSByZW1haW5pbmcgZWxlbWVudHM7IGlmIGl0IGRvZXMsIHRoZSBm dW5jdGlvbiBwcmludHMgb25lIGNvbHVtbiBvZgogIHRoZSBncmFwaCB1c2luZyB0aGUgcHJpbnRp bmcgY29kZSBhbmQgY2FsbHMgaXRzZWxmIGFnYWluLiAgVGhlCioqKioqKioqKioqKioqKgoqKiog MTU5MDksMTU5MjYgKioqKgogIEBlbmQgZ3JvdXAKICAKICBAZ3JvdXAKISAgIChpZiBudW1iZXJz LWxpc3QKISAgICAgICAocHJvZ24KISAgICAgICAgIChzZXRxIGZyb20tcG9zaXRpb24gKHBvaW50 KSkKISAgICAgICAgIChpbnNlcnQtcmVjdGFuZ2xlCiEgICAgICAgICAgKGNvbHVtbi1vZi1ncmFw aCBoZWlnaHQgKGNhciBudW1iZXJzLWxpc3QpKSkKICBAZW5kIGdyb3VwCiAgQGdyb3VwCiEgICAg ICAgICAoZ290by1jaGFyIGZyb20tcG9zaXRpb24pCiEgICAgICAgICAoZm9yd2FyZC1jaGFyIHN5 bWJvbC13aWR0aCkKISAgICAgICAgIChzaXQtZm9yIDApICAgICA7IEBye0RyYXcgZ3JhcGggY29s dW1uIGJ5IGNvbHVtbi59CiEgICAgICAgICAocmVjdXJzaXZlLWdyYXBoLWJvZHktcHJpbnQtaW50 ZXJuYWwKISAgICAgICAgICAoY2RyIG51bWJlcnMtbGlzdCkgaGVpZ2h0IHN5bWJvbC13aWR0aCkp KSkKICBAZW5kIGdyb3VwCiAgQGVuZCBzbWFsbGV4YW1wbGUKICAKLS0tIDE1NzY1LDE1NzgxIC0t LS0KICBAZW5kIGdyb3VwCiAgCiAgQGdyb3VwCiEgICAod2hlbiBudW1iZXJzLWxpc3QKISAgICAg KHNldHEgZnJvbS1wb3NpdGlvbiAocG9pbnQpKQohICAgICAoaW5zZXJ0LXJlY3RhbmdsZQohICAg ICAgKGNvbHVtbi1vZi1ncmFwaCBoZWlnaHQgKGNhciBudW1iZXJzLWxpc3QpKSkKICBAZW5kIGdy b3VwCiAgQGdyb3VwCiEgICAgIChnb3RvLWNoYXIgZnJvbS1wb3NpdGlvbikKISAgICAgKGZvcndh cmQtY2hhciBzeW1ib2wtd2lkdGgpCiEgICAgIChzaXQtZm9yIDApICAgICA7IEBye0RyYXcgZ3Jh cGggY29sdW1uIGJ5IGNvbHVtbi59CiEgICAgIChyZWN1cnNpdmUtZ3JhcGgtYm9keS1wcmludC1p bnRlcm5hbAohICAgICAgKGNkciBudW1iZXJzLWxpc3QpIGhlaWdodCBzeW1ib2wtd2lkdGgpKSkK ICBAZW5kIGdyb3VwCiAgQGVuZCBzbWFsbGV4YW1wbGUKICAKKioqKioqKioqKioqKioqCioqKiAx NTk5NCwxNjAwMCAqKioqCiAgKiBMb2FkaW5nIEZpbGVzOjogICAgICAgICAgICAgICBMb2FkIChp LmUuLCBldmFsdWF0ZSkgZmlsZXMgYXV0b21hdGljYWxseS4KICAqIEF1dG9sb2FkOjogICAgICAg ICAgICAgICAgICAgIE1ha2UgZnVuY3Rpb25zIGF2YWlsYWJsZS4KICAqIFNpbXBsZSBFeHRlbnNp b246OiAgICAgICAgICAgIERlZmluZSBhIGZ1bmN0aW9uOyBiaW5kIGl0IHRvIGEga2V5LgohICog WDExIENvbG9yczo6ICAgICAgICAgICAgICAgICAgQ29sb3JzIGluIHZlcnNpb24gMTkgaW4gWC4K ICAqIE1pc2NlbGxhbmVvdXM6OgogICogTW9kZSBMaW5lOjogICAgICAgICAgICAgICAgICAgSG93 IHRvIGN1c3RvbWl6ZSB5b3VyIG1vZGUgbGluZS4KICBAZW5kIG1lbnUKLS0tIDE1ODQ5LDE1ODU1 IC0tLS0KICAqIExvYWRpbmcgRmlsZXM6OiAgICAgICAgICAgICAgIExvYWQgKGkuZS4sIGV2YWx1 YXRlKSBmaWxlcyBhdXRvbWF0aWNhbGx5LgogICogQXV0b2xvYWQ6OiAgICAgICAgICAgICAgICAg ICAgTWFrZSBmdW5jdGlvbnMgYXZhaWxhYmxlLgogICogU2ltcGxlIEV4dGVuc2lvbjo6ICAgICAg ICAgICAgRGVmaW5lIGEgZnVuY3Rpb247IGJpbmQgaXQgdG8gYSBrZXkuCiEgKiBYMTEgQ29sb3Jz OjogICAgICAgICAgICAgICAgICBTZXR0aW5nIGNvbG9ycyB0byB1c2UgaW4gWC4KICAqIE1pc2Nl bGxhbmVvdXM6OgogICogTW9kZSBMaW5lOjogICAgICAgICAgICAgICAgICAgSG93IHRvIGN1c3Rv bWl6ZSB5b3VyIG1vZGUgbGluZS4KICBAZW5kIG1lbnUKKioqKioqKioqKioqKioqCioqKiAxNjkx NiwxNjk5MSAqKioqCiAgQGNpbmRleCBDb25kaXRpb25hbCAndHdpeHQgdHdvIHZlcnNpb25zIG9m IEVtYWNzCiAgQGNpbmRleCBWZXJzaW9uIG9mIEVtYWNzLCBjaG9vc2luZwogIEBjaW5kZXggRW1h Y3MgdmVyc2lvbiwgY2hvb3NpbmcKISBJZiB5b3UgcnVuIHR3byB2ZXJzaW9ucyBvZiBHTlUgRW1h Y3MsIHN1Y2ggYXMgdmVyc2lvbnMgMjAgYW5kIDIxLCBhbmQKICB1c2Ugb25lIEBmaWxley5lbWFj c30gZmlsZSwgeW91IGNhbiBzZWxlY3Qgd2hpY2ggY29kZSB0byBldmFsdWF0ZSB3aXRoCiEgdGhl IGZvbGxvd2luZyBjb25kaXRpb25hbDoKICAKICBAc21hbGxleGFtcGxlCiAgQGdyb3VwCiEgKGNv bmQKISAgKChzdHJpbmctZXF1YWwgKG51bWJlci10by1zdHJpbmcgMjApIChzdWJzdHJpbmcgKGVt YWNzLXZlcnNpb24pIDEwIDEyKSkKISAgIDs7IGV2YWx1YXRlIHZlcnNpb24gMjAgY29kZQogICAg KCBAZG90c3t9ICkpCi0gICgoc3RyaW5nLWVxdWFsIChudW1iZXItdG8tc3RyaW5nIDIxKSAoc3Vi c3RyaW5nIChlbWFjcy12ZXJzaW9uKSAxMCAxMikpCi0gICA7OyBldmFsdWF0ZSB2ZXJzaW9uIDIx IGNvZGUKLSAgICggQGRvdHN7fSApKSkKICBAZW5kIGdyb3VwCiAgQGVuZCBzbWFsbGV4YW1wbGUK ICAKISBGb3IgZXhhbXBsZSwgaW4gY29udHJhc3QgdG8gdmVyc2lvbiAyMCwgdmVyc2lvbiAyMSBi bGlua3MgaXRzIGN1cnNvcgohIGJ5IGRlZmF1bHQuICBJIGhhdGUgc3VjaCBibGlua2luZywgYXMg d2VsbCBhcyBzb21lIG90aGVyIGZlYXR1cmVzIGluCiEgdmVyc2lvbiAyMSwgc28gSSBwbGFjZWQg dGhlIGZvbGxvd2luZyBpbiBteSBAZmlsZXsuZW1hY3N9CiEgZmlsZUBmb290bm90ZXtXaGVuIEkg c3RhcnQgaW5zdGFuY2VzIG9mIEVtYWNzIHRoYXQgZG8gbm90IGxvYWQgbXkKISBAZmlsZXsuZW1h Y3N9IGZpbGUgb3IgYW55IHNpdGUgZmlsZSwgSSBhbHNvIHR1cm4gb2ZmIGJsaW5raW5nOgohIAoh IEBzbWFsbGV4YW1wbGUKISBlbWFjcyAtcSAtLW5vLXNpdGUtZmlsZSAtZXZhbCAnKGJsaW5rLWN1 cnNvci1tb2RlIG5pbCknCiEgQGVuZCBzbWFsbGV4YW1wbGUKISB9OgogIAogIEBzbWFsbGV4YW1w bGUKICBAZ3JvdXAKISAoaWYgKHN0cmluZy1lcXVhbCAiMjEiIChzdWJzdHJpbmcgKGVtYWNzLXZl cnNpb24pIDEwIDEyKSkKISAgICAgKHByb2duCiEgICAgICAgKGJsaW5rLWN1cnNvci1tb2RlIDAp CiEgICAgICAgOzsgSW5zZXJ0IG5ld2xpbmUgd2hlbiB5b3UgcHJlc3MgYEMtbicgKG5leHQtbGlu ZSkKISAgICAgICA7OyBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIKISAgICAgICAoc2V0cSBuZXh0 LWxpbmUtYWRkLW5ld2xpbmVzIHQpCiAgQGVuZCBncm91cAogIEBncm91cAohICAgICAgIDs7IFR1 cm4gb24gaW1hZ2Ugdmlld2luZwohICAgICAgIChhdXRvLWltYWdlLWZpbGUtbW9kZSB0KQogIEBl bmQgZ3JvdXAKICBAZ3JvdXAKISAgICAgICA7OyBUdXJuIG9uIG1lbnUgYmFyICh0aGlzIGJhciBo YXMgdGV4dCkKISAgICAgICA7OyAoVXNlIG51bWVyaWMgYXJndW1lbnQgdG8gdHVybiBvbikKISAg ICAgICAobWVudS1iYXItbW9kZSAxKQogIEBlbmQgZ3JvdXAKICBAZ3JvdXAKISAgICAgICA7OyBU dXJuIG9mZiB0b29sIGJhciAodGhpcyBiYXIgaGFzIGljb25zKQohICAgICAgIDs7IChVc2UgbnVt ZXJpYyBhcmd1bWVudCB0byB0dXJuIG9uKQohICAgICAgICh0b29sLWJhci1tb2RlIG5pbCkKICBA ZW5kIGdyb3VwCiAgQGdyb3VwCiEgICAgICAgOzsgVHVybiBvZmYgdG9vbHRpcCBtb2RlIGZvciB0 b29sIGJhcgohICAgICAgIDs7IChUaGlzIG1vZGUgY2F1c2VzIGljb24gZXhwbGFuYXRpb25zIHRv IHBvcCB1cCkKISAgICAgICA7OyAoVXNlIG51bWVyaWMgYXJndW1lbnQgdG8gdHVybiBvbikKISAg ICAgICAodG9vbHRpcC1tb2RlIG5pbCkKISAgICAgICA7OyBJZiB0b29sdGlwcyB0dXJuZWQgb24s IG1ha2UgdGlwcyBhcHBlYXIgcHJvbXB0bHkKISAgICAgICAoc2V0cSB0b29sdGlwLWRlbGF5IDAu MSkgIDsgZGVmYXVsdCBpcyBvbmUgc2Vjb25kCiEgICAgICAgICkpCiAgQGVuZCBncm91cAogIEBl bmQgc21hbGxleGFtcGxlCiAgCi0gQG5vaW5kZW50Ci0gKFlvdSB3aWxsIG5vdGUgdGhhdCBpbnN0 ZWFkIG9mIHR5cGluZyBAY29kZXsobnVtYmVyLXRvLXN0cmluZyAyMSl9LCBJCi0gZGVjaWRlZCB0 byBzYXZlIHR5cGluZyBhbmQgd3JvdGUgYDIxJyBhcyBhIHN0cmluZywgQGNvZGV7IjIxIn0sIHJh dGhlcgotIHRoYW4gY29udmVydCBpdCBmcm9tIGFuIGludGVnZXIgdG8gYSBzdHJpbmcuICBJbiB0 aGlzIGluc3RhbmNlLCB0aGlzCi0gZXhwcmVzc2lvbiBpcyBiZXR0ZXIgdGhhbiB0aGUgbG9uZ2Vy LCBidXQgbW9yZSBnZW5lcmFsCi0gQGNvZGV7KG51bWJlci10by1zdHJpbmcgMjEpfS4gIEhvd2V2 ZXIsIGlmIHlvdSBkbyBub3Qga25vdyBhaGVhZCBvZgotIHRpbWUgd2hhdCB0eXBlIG9mIGluZm9y bWF0aW9uIHdpbGwgYmUgcmV0dXJuZWQsIHRoZW4gdGhlCi0gQGNvZGV7bnVtYmVyLXRvLXN0cmlu Z30gZnVuY3Rpb24gd2lsbCBiZSBuZWVkZWQuKQotIAogIEBub2RlIFgxMSBDb2xvcnMsIE1pc2Nl bGxhbmVvdXMsIFNpbXBsZSBFeHRlbnNpb24sIEVtYWNzIEluaXRpYWxpemF0aW9uCiAgQHNlY3Rp b24gWDExIENvbG9ycwogIAotLS0gMTY3NzEsMTY4MjUgLS0tLQogIEBjaW5kZXggQ29uZGl0aW9u YWwgJ3R3aXh0IHR3byB2ZXJzaW9ucyBvZiBFbWFjcwogIEBjaW5kZXggVmVyc2lvbiBvZiBFbWFj cywgY2hvb3NpbmcKICBAY2luZGV4IEVtYWNzIHZlcnNpb24sIGNob29zaW5nCiEgSWYgeW91IHJ1 biBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBHTlUgRW1hY3MsIHN1Y2ggYXMgdmVyc2lvbnMgMjAgYW5k IDIxLCBhbmQKICB1c2Ugb25lIEBmaWxley5lbWFjc30gZmlsZSwgeW91IGNhbiBzZWxlY3Qgd2hp Y2ggY29kZSB0byBldmFsdWF0ZSB3aXRoCiEgYSBjb25kaXRpb25hbCBsaWtlIHRoZSBmb2xsb3dp bmc6CiAgCiAgQHNtYWxsZXhhbXBsZQogIEBncm91cAohIChpZiAoPCBlbWFjcy1tYWpvci12ZXJz aW9uIDIxKQohICAgICA7OyBjb2RlIGZvciB2ZXJzaW9ucyAyMCBhbmQgYmVmb3JlCiEgICAgICgg QGRvdHN7fSApCiEgICA7OyBjb2RlIGZvciB2ZXJzaW9ucyAyMSBhbmQgbmV3ZXIKICAgICggQGRv dHN7fSApKQogIEBlbmQgZ3JvdXAKICBAZW5kIHNtYWxsZXhhbXBsZQogIAohIEZvciBleGFtcGxl LCBzdGFydGluZyBpbiB2ZXJzaW9uIDIxLCB0aGUgY3Vyc29yIGJsaW5rcyBieSBkZWZhdWx0LiAg SQohIGRvbid0IGxpa2UgdGhhdCBmZWF0dXJlLCBidXQgSSBkbyBsaWtlIHZpZXdpbmcgaW1hZ2Ug ZmlsZXMgYXMgaW1hZ2VzLAohIHdoaWNoIGlzIGFsc28gbmV3IGluIDIxIGJ1dCBkaXNhYmxlZCBi eSBkZWZhdWx0LiAgVG8gb2J0YWluIGp1c3QgdGhlCiEgZmVhdHVyZXMgSSBsaWtlLCBJIHBsYWNl ZCB0aGUgZm9sbG93aW5nIGluIG15IEBmaWxley5lbWFjc30gZmlsZToKICAKICBAc21hbGxleGFt cGxlCiAgQGdyb3VwCiEgKHdoZW4gKD49IGVtYWNzLW1ham9yLXZlcnNpb24gMjEpCiEgICAoYmxp bmstY3Vyc29yLW1vZGUgMCkKISAgIDs7IEluc2VydCBuZXdsaW5lIHdoZW4geW91IHByZXNzIGBD LW4nIChuZXh0LWxpbmUpCiEgICA7OyBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIKISAgIChzZXRx IG5leHQtbGluZS1hZGQtbmV3bGluZXMgdCkKICBAZW5kIGdyb3VwCiAgQGdyb3VwCiEgICA7OyBU dXJuIG9uIGltYWdlIHZpZXdpbmcKISAgIChhdXRvLWltYWdlLWZpbGUtbW9kZSAxKQogIEBlbmQg Z3JvdXAKICBAZ3JvdXAKISAgIDs7IFR1cm4gb24gbWVudSBiYXIgKHRoaXMgYmFyIGhhcyB0ZXh0 KQohICAgKG1lbnUtYmFyLW1vZGUgMSkKICBAZW5kIGdyb3VwCiAgQGdyb3VwCiEgICA7OyBUdXJu IG9mZiB0b29sIGJhciAodGhpcyBiYXIgaGFzIGljb25zKQohICAgKHRvb2wtYmFyLW1vZGUgMCkK ICBAZW5kIGdyb3VwCiAgQGdyb3VwCiEgICA7OyBUdXJuIG9mZiB0b29sdGlwIG1vZGUgZm9yIHRv b2wgYmFyCiEgICA7OyAoVGhpcyBtb2RlIGNhdXNlcyBpY29uIGV4cGxhbmF0aW9ucyB0byBwb3Ag dXApCiEgICAodG9vbHRpcC1tb2RlIDApCiEgICA7OyBJZiB0b29sdGlwcyB0dXJuZWQgb24sIG1h a2UgdGlwcyBhcHBlYXIgcHJvbXB0bHkKISAgIChzZXRxIHRvb2x0aXAtZGVsYXkgMC4xKSAgOyBk ZWZhdWx0IGlzIG9uZSBzZWNvbmQKISAgICApKQogIEBlbmQgZ3JvdXAKICBAZW5kIHNtYWxsZXhh bXBsZQogIAogIEBub2RlIFgxMSBDb2xvcnMsIE1pc2NlbGxhbmVvdXMsIFNpbXBsZSBFeHRlbnNp b24sIEVtYWNzIEluaXRpYWxpemF0aW9uCiAgQHNlY3Rpb24gWDExIENvbG9ycwogIAoqKioqKioq KioqKioqKioKKioqIDE3MzQ0LDE3MzU2ICoqKioKICBjaGFyYWN0ZXJzOyB0aGlzIGxlbmd0aCB3 b3JrcyB3ZWxsIGluIGEgdHlwaWNhbCA4MCBjb2x1bW4gd2lkZQogIHdpbmRvdy4pCiAgCiEgQGNv ZGV7OmV2YWx9IGlzIGEgbmV3IGZlYXR1cmUgaW4gR05VIEVtYWNzIHZlcnNpb24gMjEuICBJdCBz YXlzIHRvCiEgZXZhbHVhdGUgdGhlIGZvbGxvd2luZyBmb3JtIGFuZCB1c2UgdGhlIHJlc3VsdCBh cyBhIHN0cmluZyB0byBkaXNwbGF5LgohIEluIHRoaXMgY2FzZSwgdGhlIGV4cHJlc3Npb24gZGlz cGxheXMgdGhlIGZpcnN0IGNvbXBvbmVudCBvZiB0aGUgZnVsbAohIHN5c3RlbSBuYW1lLiAgVGhl IGVuZCBvZiB0aGUgZmlyc3QgY29tcG9uZW50IGlzIGEgQHNhbXB7Ln0gKGBwZXJpb2QnKSwKISBz byBJIHVzZSB0aGUgQGNvZGV7c3RyaW5nLW1hdGNofSBmdW5jdGlvbiB0byB0ZWxsIG1lIHRoZSBs ZW5ndGggb2YgdGhlCiEgZmlyc3QgY29tcG9uZW50LiAgVGhlIHN1YnN0cmluZyBmcm9tIHRoZSB6 ZXJvdGggY2hhcmFjdGVyIHRvIHRoYXQKISBsZW5ndGggaXMgdGhlIG5hbWUgb2YgdGhlIG1hY2hp bmUuCiAgCiAgQG5lZWQgMTI1MAogIFRoaXMgaXMgdGhlIGV4cHJlc3Npb246Ci0tLSAxNzE3OCwx NzE4OSAtLS0tCiAgY2hhcmFjdGVyczsgdGhpcyBsZW5ndGggd29ya3Mgd2VsbCBpbiBhIHR5cGlj YWwgODAgY29sdW1uIHdpZGUKICB3aW5kb3cuKQogIAohIEBjb2RlezpldmFsfSBzYXlzIHRvIGV2 YWx1YXRlIHRoZSBmb2xsb3dpbmcgZm9ybSBhbmQgdXNlIHRoZSByZXN1bHQgYXMKISBhIHN0cmlu ZyB0byBkaXNwbGF5LiAgSW4gdGhpcyBjYXNlLCB0aGUgZXhwcmVzc2lvbiBkaXNwbGF5cyB0aGUg Zmlyc3QKISBjb21wb25lbnQgb2YgdGhlIGZ1bGwgc3lzdGVtIG5hbWUuICBUaGUgZW5kIG9mIHRo ZSBmaXJzdCBjb21wb25lbnQgaXMKISBhIEBzYW1wey59IChgcGVyaW9kJyksIHNvIEkgdXNlIHRo ZSBAY29kZXtzdHJpbmctbWF0Y2h9IGZ1bmN0aW9uIHRvCiEgdGVsbCBtZSB0aGUgbGVuZ3RoIG9m IHRoZSBmaXJzdCBjb21wb25lbnQuICBUaGUgc3Vic3RyaW5nIGZyb20gdGhlCiEgemVyb3RoIGNo YXJhY3RlciB0byB0aGF0IGxlbmd0aCBpcyB0aGUgbmFtZSBvZiB0aGUgbWFjaGluZS4KICAKICBA bmVlZCAxMjUwCiAgVGhpcyBpcyB0aGUgZXhwcmVzc2lvbjoKKioqKioqKioqKioqKioqCioqKiAx NzQ3OSwxNzUwMiAqKioqCiAgdGVsbCB5b3Ugd2hhdCB5b3UgbmVlZCB0byBrbm93IHRvIGNvcnJl Y3QgdGhlIGRlZmluaXRpb24uICBUaGUKICBmdW5jdGlvbiBAY29kZXsxPX0gaXMgYHZvaWQnLgog IAotIEBuZWVkIDgwMAotIEluIEdOVSBFbWFjcyAyMCBhbmQgYmVmb3JlLCB5b3Ugd2lsbCBzZWU6 Ci0gCi0gQHNtYWxsZXhhbXBsZQotIFN5bWJvbCdzIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgdm9p ZDpAOiAxPQotIEBlbmQgc21hbGxleGFtcGxlCi0gCi0gQG5vaW5kZW50Ci0gd2hpY2ggaGFzIHRo ZSBzYW1lIG1lYW5pbmcgYXMgdGhlIEBmaWxleypCYWNrdHJhY2UqfSBidWZmZXIgbGluZSBpbgot IHZlcnNpb24gMjEuCi0gCiAgSG93ZXZlciwgc3VwcG9zZSB5b3UgYXJlIG5vdCBxdWl0ZSBjZXJ0 YWluIHdoYXQgaXMgZ29pbmcgb24/CiAgWW91IGNhbiByZWFkIHRoZSBjb21wbGV0ZSBiYWNrdHJh Y2UuCiAgCi0gSW4gdGhpcyBjYXNlLCB5b3UgbmVlZCB0byBydW4gR05VIEVtYWNzIDIxLCB3aGlj aCBhdXRvbWF0aWNhbGx5IHN0YXJ0cwotIHRoZSBkZWJ1Z2dlciB0aGF0IHB1dHMgeW91IGluIHRo ZSBAZmlsZXsqQmFja3RyYWNlKn0gYnVmZmVyOyBvciBlbHNlLAotIHlvdSBuZWVkIHRvIHN0YXJ0 IHRoZSBkZWJ1Z2dlciBtYW51YWxseSBhcyBkZXNjcmliZWQgYmVsb3cuCi0gCiAgUmVhZCB0aGUg QGZpbGV7KkJhY2t0cmFjZSp9IGJ1ZmZlciBmcm9tIHRoZSBib3R0b20gdXA7IGl0IHRlbGxzIHlv dQogIHdoYXQgRW1hY3MgZGlkIHRoYXQgbGVkIHRvIHRoZSBlcnJvci4gIEVtYWNzIG1hZGUgYW4g aW50ZXJhY3RpdmUgY2FsbAogIHRvIEBrYmR7Qy14IEMtZX0gKEBjb2Rle2V2YWwtbGFzdC1zZXhw fSksIHdoaWNoIGxlZCB0byB0aGUgZXZhbHVhdGlvbgotLS0gMTczMTIsMTczMjAgLS0tLQoqKioq KioqKioqKioqKioKKioqIDE3NTM1LDE3NTUxICoqKioKICBAc2VjdGlvbiBAY29kZXtkZWJ1Zy1v bi1lbnRyeX0KICBAZmluZGV4IGRlYnVnLW9uLWVudHJ5CiAgCiEgR05VIEVtYWNzIDIxIHN0YXJ0 cyB0aGUgZGVidWdnZXIgYXV0b21hdGljYWxseSB3aGVuIHlvdXIgZnVuY3Rpb24gaGFzCiEgYW4g ZXJyb3IuICBHTlUgRW1hY3MgdmVyc2lvbiAyMCBhbmQgYmVmb3JlIGRpZCBub3Q7IGl0IHNpbXBs eQohIHByZXNlbnRlZCB5b3Ugd2l0aCBhbiBlcnJvciBtZXNzYWdlLiAgWW91IGhhZCB0byBzdGFy dCB0aGUgZGVidWdnZXIKISBtYW51YWxseS4KISAKISBZb3UgY2FuIHN0YXJ0IHRoZSBkZWJ1Z2dl ciBtYW51YWxseSBmb3IgYWxsIHZlcnNpb25zIG9mIEVtYWNzOyB0aGUKISBhZHZhbnRhZ2UgaXMg dGhhdCB0aGUgZGVidWdnZXIgcnVucyBldmVuIGlmIHlvdSBkbyBub3QgaGF2ZSBhIGJ1ZyBpbgoh IHlvdXIgY29kZS4gIFNvbWV0aW1lcyB5b3VyIGNvZGUgd2lsbCBiZSBmcmVlIG9mIGJ1Z3MhCiAg CiEgWW91IGNhbiBlbnRlciB0aGUgZGVidWdnZXIgd2hlbiB5b3UgY2FsbCB0aGUgZnVuY3Rpb24g YnkgY2FsbGluZwohIEBjb2Rle2RlYnVnLW9uLWVudHJ5fS4KICAKICBAbmVlZCAxMjUwCiAgQG5v aW5kZW50Ci0tLSAxNzM1MywxNzM2NSAtLS0tCiAgQHNlY3Rpb24gQGNvZGV7ZGVidWctb24tZW50 cnl9CiAgQGZpbmRleCBkZWJ1Zy1vbi1lbnRyeQogIAohIEVtYWNzIHN0YXJ0cyB0aGUgZGVidWdn ZXIgYXV0b21hdGljYWxseSB3aGVuIHlvdXIgZnVuY3Rpb24gZW5jb3VudGVycwohIGFuIGVycm9y LiAgWW91IGNhbiBhc2sgZm9yIEVtYWNzIHRvIHN0YXJ0IHRoZSBkZWJ1Z2dlciBhdCBvdGhlciB0 aW1lczsKISB0aGlzIGNhbiBoZWxwIHlvdSB1bmRlcnN0YW5kIHRoZSBiZWhhdmlvciBvZiB5b3Vy IGNvZGUgd2hldGhlciBpdAohIGZhaWxzIG9yIG5vdC4KICAKISBZb3UgY2FuIGFycmFuZ2UgdG8g ZW50ZXIgdGhlIGRlYnVnZ2VyIHdoZW4geW91IGNhbGwgdGhlIGZ1bmN0aW9uIGJ5CiEgY2FsbGlu ZyBAY29kZXtkZWJ1Zy1vbi1lbnRyeX0uCiAgCiAgQG5lZWQgMTI1MAogIEBub2luZGVudAoqKioq KioqKioqKioqKioKKioqIDE3NTY0LDE3NTcyICoqKioKICBAZW5kIHNtYWxsZXhhbXBsZQogIAog IEBub2luZGVudAohIEFsbCB2ZXJzaW9ucyBvZiBFbWFjcyB3aWxsIGNyZWF0ZSBhIEBmaWxleypC YWNrdHJhY2UqfSBidWZmZXIgYW5kIHRlbGwKISB5b3UgdGhhdCBpdCBpcyBiZWdpbm5pbmcgdG8g ZXZhbHVhdGUgdGhlIEBjb2Rle3RyaWFuZ2xlLWJ1Z2dlZH0KISBmdW5jdGlvbjoKICAKICBAc21h bGxleGFtcGxlCiAgQGdyb3VwCi0tLSAxNzM3OCwxNzM4NSAtLS0tCiAgQGVuZCBzbWFsbGV4YW1w bGUKICAKICBAbm9pbmRlbnQKISBFbWFjcyB3aWxsIGNyZWF0ZSBhIEBmaWxleypCYWNrdHJhY2Uq fSBidWZmZXIgYW5kIHRlbGwgeW91IHRoYXQgaXQgaXMKISBiZWdpbm5pbmcgdG8gZXZhbHVhdGUg dGhlIEBjb2Rle3RyaWFuZ2xlLWJ1Z2dlZH0gZnVuY3Rpb246CiAgCiAgQHNtYWxsZXhhbXBsZQog IEBncm91cAo= ------=_20061027151539_81061 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel ------=_20061027151539_81061--