From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Jan Nieuwenhuizen Newsgroups: gmane.emacs.devel Subject: update to latest bzr: Guile patches for GUD, compilation-mode Date: Sun, 10 Aug 2014 14:47:10 +0200 Organization: AvatarAcademy.nl Message-ID: <87fvh4341d.fsf@drakenvlieg.flower> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: ger.gmane.org 1407675011 26421 80.91.229.3 (10 Aug 2014 12:50:11 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 10 Aug 2014 12:50:11 +0000 (UTC) To: emacs-devel Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Aug 10 14:50:06 2014 Return-path: Envelope-to: ged-emacs-devel@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 1XGSZZ-00085s-Mz for ged-emacs-devel@m.gmane.org; Sun, 10 Aug 2014 14:50:06 +0200 Original-Received: from localhost ([::1]:59718 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XGSZZ-0006AC-3f for ged-emacs-devel@m.gmane.org; Sun, 10 Aug 2014 08:50:05 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:57120) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XGSZR-000699-Ft for emacs-devel@gnu.org; Sun, 10 Aug 2014 08:50:01 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XGSZJ-00050T-EW for emacs-devel@gnu.org; Sun, 10 Aug 2014 08:49:57 -0400 Original-Received: from smtp-vbr10.xs4all.nl ([194.109.24.30]:4083) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XGSZI-00050E-RW for emacs-devel@gnu.org; Sun, 10 Aug 2014 08:49:49 -0400 Original-Received: from drakenvlieg.flower.peder.onsbrabantnet.nl (static.kpn.net [92.70.116.82] (may be forged)) (authenticated bits=0) by smtp-vbr10.xs4all.nl (8.13.8/8.13.8) with ESMTP id s7AClBg9025081 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Sun, 10 Aug 2014 14:47:12 +0200 (CEST) (envelope-from janneke@gnu.org) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) X-Url: http://AvatarAcademy.nl X-Virus-Scanned: by XS4ALL Virus Scanner X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 194.109.24.30 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:173536 Archived-At: --=-=-= Content-Type: text/plain Hi, I have updated my patches (the ChangeLogs) against latest bzr. Hope that's helpful. Attached as bundles and GIT patches. Not sure what's most helpful for you; what we did in LibreOffice, was to send the ChangeLog bit verbatim and omit it from the patch and have the committer add it to the ChangeLog, as it "always" conflicts. Hope this helps, Greetings, Jan --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-Initial-Guile-REPL-guiler-debugger-support-for-GUD.patch >From 57e8a4b8957a66f5a6cffebc33c518fc0d45c1cf Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Mon, 4 Aug 2014 11:15:59 +0200 Subject: [PATCH 1/2] Initial Guile REPL (guiler) debugger support for GUD. * progmodes/gud.el (guiler): New function. Starts the Guile REPL; add Guile debugger support for GUD. --- lisp/ChangeLog | 5 +++ lisp/progmodes/gud.el | 89 ++++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 89 insertions(+), 5 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 3e39440..1637187 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2014-08-05 Jan Nieuwenhuizen + + * progmodes/gud.el (guiler): New function. Starts the Guile REPL; + add Guile debugger support for GUD. + 2014-08-09 Juri Linkov * vc/vc-annotate.el (vc-annotate-background-mode): Add :set diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el index c6fc944..09085f7 100644 --- a/lisp/progmodes/gud.el +++ b/lisp/progmodes/gud.el @@ -34,7 +34,8 @@ ;; and added a menu. Brian D. Carlstrom combined the IRIX ;; kluge with the gud-xdb-directories hack producing gud-dbx-directories. ;; Derek L. Davies added support for jdb (Java -;; debugger.) +;; debugger.) Jan Nieuwenhuizen added support for the Guile REPL (Guile +;; debugger). ;;; Code: @@ -140,7 +141,7 @@ Used to gray out relevant toolbar icons.") (display-graphic-p) (fboundp 'x-show-tip)) :visible (memq gud-minor-mode - '(gdbmi dbx sdb xdb pdb)) + '(gdbmi guiler dbx sdb xdb pdb)) :button (:toggle . gud-tooltip-mode)) ([refresh] "Refresh" . gud-refresh) ([run] menu-item "Run" gud-run @@ -170,11 +171,11 @@ Used to gray out relevant toolbar icons.") ([up] menu-item "Up Stack" gud-up :enable (not gud-running) :visible (memq gud-minor-mode - '(gdbmi gdb dbx xdb jdb pdb))) + '(gdbmi gdb guiler dbx xdb jdb pdb))) ([down] menu-item "Down Stack" gud-down :enable (not gud-running) :visible (memq gud-minor-mode - '(gdbmi gdb dbx xdb jdb pdb))) + '(gdbmi gdb guiler dbx xdb jdb pdb))) ([pp] menu-item "Print S-expression" gud-pp :enable (and (not gud-running) (bound-and-true-p gdb-active-process)) @@ -195,7 +196,7 @@ Used to gray out relevant toolbar icons.") ([finish] menu-item "Finish Function" gud-finish :enable (not gud-running) :visible (memq gud-minor-mode - '(gdbmi gdb xdb jdb pdb))) + '(gdbmi gdb guiler xdb jdb pdb))) ([stepi] menu-item "Step Instruction" gud-stepi :enable (not gud-running) :visible (memq gud-minor-mode '(gdbmi gdb dbx))) @@ -1704,6 +1705,83 @@ and source-file directory for your debugger." (run-hooks 'pdb-mode-hook)) ;; ====================================================================== +;; Guile REPL (guiler) functions + +;; History of argument lists passed to guiler. +(defvar gud-guiler-history nil) + +(defvar gud-guiler-lastfile nil) + +(defun gud-guiler-marker-filter (string) + (setq gud-marker-acc (if gud-marker-acc (concat gud-marker-acc string) string)) + + (let ((start 0)) + (while + (cond + ((string-match "^In \\(.*\\):" gud-marker-acc start) + (setq gud-guiler-lastfile (match-string 1 gud-marker-acc))) + ((string-match "^\\([^:\n]+\\):\\([0-9]+\\):\\([0-9]+\\):[^\n]*" + gud-marker-acc start) + (setq gud-guiler-lastfile (match-string 1 gud-marker-acc)) + (setq gud-last-frame + (cons gud-guiler-lastfile + (string-to-number (match-string 2 gud-marker-acc))))) + ((string-match "^[ ]*\\([0-9]+\\):\\([0-9]+\\) [^\n]*" + gud-marker-acc start) + (if gud-guiler-lastfile + (setq gud-last-frame + (cons gud-guiler-lastfile + (string-to-number (match-string 1 gud-marker-acc)))))) + ((string-match comint-prompt-regexp gud-marker-acc start) t) + ((string= (substring gud-marker-acc start) "") nil) + (t nil)) + (setq start (match-end 0))) + + ;; Search for the last incomplete line in this chunk + (while (string-match "\n" gud-marker-acc start) + (setq start (match-end 0))) + + ;; If we have an incomplete line, store it in gud-marker-acc. + (setq gud-marker-acc (substring gud-marker-acc (or start 0)))) + string) + + +(defcustom gud-guiler-command-name "guile" + "File name for executing the Guile debugger. +This should be an executable on your path, or an absolute file name." + :type 'string + :group 'gud) + +;;;###autoload +(defun guiler (command-line) + "Run guiler on program FILE in buffer `*gud-FILE*'. +The directory containing FILE becomes the initial working directory +and source-file directory for your debugger." + (interactive + (list (gud-query-cmdline 'guiler))) + + (gud-common-init command-line nil 'gud-guiler-marker-filter) + (setq-local gud-minor-mode 'guiler) + +;; FIXME: absolute file-names are not grokked yet by Guile's ,break-at-source +;; and relative file names only when relative to %load-path. +;; (gud-def gud-break ",break-at-source %d%f %l" "\C-b" "Set breakpoint at current line.") + (gud-def gud-break ",break-at-source %f %l" "\C-b" "Set breakpoint at current line.") +;; FIXME: remove breakpoint with file-line not yet supported by Guile +;; (gud-def gud-remove ",delete ---> %d%f:%l" "\C-d" "Remove breakpoint at current line") + (gud-def gud-step ",step" "\C-s" "Step one source line with display.") + (gud-def gud-next ",next" "\C-n" "Step one line (skip functions).") +;; (gud-def gud-cont "continue" "\C-r" "Continue with display.") + (gud-def gud-finish ",finish" "\C-f" "Finish executing current function.") + (gud-def gud-up ",up" "<" "Up one stack frame.") + (gud-def gud-down ",down" ">" "Down one stack frame.") + (gud-def gud-print "%e" "\C-p" "Evaluate Guile expression at point.") + + (setq comint-prompt-regexp "^scheme@([^>]+> ") + (setq paragraph-start comint-prompt-regexp) + (run-hooks 'guiler-mode-hook)) + +;; ====================================================================== ;; ;; JDB support. ;; @@ -3450,6 +3528,7 @@ With arg, dereference expr if ARG is positive, otherwise do not dereference." "Return a suitable command to print the expression EXPR." (pcase gud-minor-mode (`gdbmi (concat "-data-evaluate-expression \"" expr "\"")) + (`guiler expr) (`dbx (concat "print " expr)) ((or `xdb `pdb) (concat "p " expr)) (`sdb (concat expr "/")))) -- 1.9.1 --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0002-Support-Guile-backtraces-in-compilation-mode.patch >From f99a67e666c489c3579e71f3e60672aa6f657b38 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Fri, 8 Aug 2014 10:24:44 +0200 Subject: [PATCH 2/2] Support Guile backtraces in compilation mode. * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist): Add Guile regexpses. * etc/compilation.txt (file): Add Guile backtrace example. * test/automated/compile-tests.el (compile--test-error-line): Grok FILE being nil. Allows for Guile tests to pass. (compile-tests--test-regexps-data): Add Guile tests. --- etc/ChangeLog | 4 ++++ etc/compilation.txt | 20 ++++++++++++++++++++ lisp/ChangeLog | 5 +++++ lisp/progmodes/compile.el | 2 ++ test/ChangeLog | 6 ++++++ test/automated/compile-tests.el | 7 ++++++- 6 files changed, 43 insertions(+), 1 deletion(-) diff --git a/etc/ChangeLog b/etc/ChangeLog index a323a1f..7d92a5b 100644 --- a/etc/ChangeLog +++ b/etc/ChangeLog @@ -1,3 +1,7 @@ +2014-08-08 Jan Nieuwenhuizen + + * compilation.txt (file): Add Guile backtrace example. + 2014-08-09 Reuben Thomas * PROBLEMS: Remove msdos/is_exec.c and sigaction.c. diff --git a/etc/compilation.txt b/etc/compilation.txt index e835c57..919e4db 100644 --- a/etc/compilation.txt +++ b/etc/compilation.txt @@ -261,6 +261,26 @@ file:G:/cygwin/dev/build-myproj.xml:54: Compiler Adapter 'javac' can't be found. {standard input}:27041: Warning: end of file not at end of a line; newline inserted +* Guile backtrace, 2.0.11 + +symbols: guile-file, guile-line + +Backtrace: +In ice-9/boot-9.scm: + 157: 6 [catch #t # ...] +In unknown file: + ?: 5 [apply-smob/1 #] +In ice-9/boot-9.scm: + 63: 4 [call-with-prompt prompt0 ...] +In ice-9/eval.scm: + 432: 3 [eval # #] +In unknown file: + ?: 2 [eval (main (command-line)) #] +In /home/janneke/vc/guile/examples/gud-break.scm: +1038: 1 [main ("gud-break.scm")] +1033: 0 [stderr "~a:hello world\n" (# # #)] + + * Lucid Compiler, lcc 3.x symbol: lcc diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 1637187..66eed80 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2014-08-08 Jan Nieuwenhuizen + + * progmodes/compile.el (compilation-error-regexp-alist-alist): + Add Guile regexpses. + 2014-08-05 Jan Nieuwenhuizen * progmodes/gud.el (guiler): New function. Starts the Guile REPL; diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el index 000d719..5d3b687 100644 --- a/lisp/progmodes/compile.el +++ b/lisp/progmodes/compile.el @@ -477,6 +477,8 @@ File = \\(.+\\), Line = \\([0-9]+\\)\\(?:, Column = \\([0-9]+\\)\\)?" ;; "^\\([^ \t\r\n(]+\\) (\\([0-9]+\\):\\([0-9]+\\)) " 1 2 3) + (guile-file "^In \\(.+\\):\n" 1) + (guile-line "^ *\\([0-9]+\\): *\\([0-9]+\\)" nil 1 2) ) "Alist of values for `compilation-error-regexp-alist'.") diff --git a/test/ChangeLog b/test/ChangeLog index 9ca9353..98ff11e 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,3 +1,9 @@ +2014-08-08 Jan Nieuwenhuizen + + * automated/compile-tests.el (compile--test-error-line): Grok FILE + being nil. Allows for Guile tests to pass. + (compile-tests--test-regexps-data): Add Guile tests. + 2014-08-07 Glenn Morris * automated/Makefile.in (check-tar): Remove, hydra recipe does it now. diff --git a/test/automated/compile-tests.el b/test/automated/compile-tests.el index 6c169ee..e231331 100644 --- a/test/automated/compile-tests.el +++ b/test/automated/compile-tests.el @@ -190,6 +190,10 @@ 1 nil 54 "G:/cygwin/dev/build-myproj.xml") ("{standard input}:27041: Warning: end of file not at end of a line; newline inserted" 1 nil 27041 "{standard input}") + ;; Guile + ("In foo.scm:\n" 1 nil nil "foo.scm") + (" 63:4 [call-with-prompt prompt0 ...]" 1 4 63 nil) + ("1038: 1 [main (\"gud-break.scm\")]" 1 1 1038 nil) ;; lcc ("E, file.cc(35,52) Illegal operation on pointers" 1 52 35 "file.cc") ("W, file.cc(36,52) blah blah" 1 52 36 "file.cc") @@ -338,7 +342,8 @@ END-LINE, if that matched.") (setq end-line (cdr line) line (car line))) (and (equal (compilation--loc->col loc) col) (equal (compilation--loc->line loc) line) - (equal (caar (compilation--loc->file-struct loc)) file) + (or (not file) + (equal (caar (compilation--loc->file-struct loc)) file)) (or (null end-col) (equal (car (cadr (nth 2 (compilation--loc->file-struct loc)))) end-col)) -- 1.9.1 --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=1-Initial-guile-REPL-debugger-support-for-GUD.bundle Content-Transfer-Encoding: base64 IyBCYXphYXIgbWVyZ2UgZGlyZWN0aXZlIGZvcm1hdCAyIChCYXphYXIgMC45MCkKIyByZXZpc2lv bl9pZDogamFubmVrZUBnbnUub3JnLTIwMTQwODEwMTIwMDE2LWhoNDlmdGFmMnh2a3FpbzIKIyB0 YXJnZXRfYnJhbmNoOiAvaG9tZS9qYW5uZWtlL3ZjL2VtYWNzLmJ6ci90cnVuawojIHRlc3RhbWVu dF9zaGExOiBhNzYyMzFjMDczY2ZiNWM2ZDc2MGYzYWVmZTFkMjc2MzhhZjU5MGEwCiMgdGltZXN0 YW1wOiAyMDE0LTA4LTEwIDE0OjAxOjM2ICswMjAwCiMgYmFzZV9yZXZpc2lvbl9pZDogcnVkYWxp Y3NAZ214LmF0LTIwMTQwODEwMDgyNjI4LXlkMWYxN3B5d2FndGh4ZGYKIyAKIyBCZWdpbiBwYXRj aAo9PT0gbW9kaWZpZWQgZmlsZSAnbGlzcC9DaGFuZ2VMb2cnCi0tLSBsaXNwL0NoYW5nZUxvZwky MDE0LTA4LTA5IDIzOjU1OjM5ICswMDAwCisrKyBsaXNwL0NoYW5nZUxvZwkyMDE0LTA4LTEwIDEy OjAwOjE2ICswMDAwCkBAIC0xLDMgKzEsOCBAQAorMjAxNC0wOC0wNSAgSmFuIE5pZXV3ZW5odWl6 ZW4gIDxqYW5uZWtlQGdudS5vcmc+CisKKwkqIHByb2dtb2Rlcy9ndWQuZWwgKGd1aWxlcik6IE5l dyBmdW5jdGlvbi4gIFN0YXJ0cyB0aGUgR3VpbGUgUkVQTDsKKwlhZGQgR3VpbGUgZGVidWdnZXIg c3VwcG9ydCBmb3IgR1VELgorCQogMjAxNC0wOC0wOSAgSnVyaSBMaW5rb3YgIDxqdXJpQGp1cnRh Lm9yZz4KIAogCSogdmMvdmMtYW5ub3RhdGUuZWwgKHZjLWFubm90YXRlLWJhY2tncm91bmQtbW9k ZSk6IEFkZCA6c2V0Cgo9PT0gbW9kaWZpZWQgZmlsZSAnbGlzcC9wcm9nbW9kZXMvZ3VkLmVsJwot LS0gbGlzcC9wcm9nbW9kZXMvZ3VkLmVsCTIwMTQtMDItMTAgMDE6MzQ6MjIgKzAwMDAKKysrIGxp c3AvcHJvZ21vZGVzL2d1ZC5lbAkyMDE0LTA4LTEwIDEyOjAwOjE2ICswMDAwCkBAIC0zNCw3ICsz NCw4IEBACiA7OyBhbmQgYWRkZWQgYSBtZW51LiBCcmlhbiBELiBDYXJsc3Ryb20gPGJkY0BhaS5t aXQuZWR1PiBjb21iaW5lZCB0aGUgSVJJWAogOzsga2x1Z2Ugd2l0aCB0aGUgZ3VkLXhkYi1kaXJl Y3RvcmllcyBoYWNrIHByb2R1Y2luZyBndWQtZGJ4LWRpcmVjdG9yaWVzLgogOzsgRGVyZWsgTC4g RGF2aWVzIDxkZGF2aWVzQHdvcmxkLnN0ZC5jb20+IGFkZGVkIHN1cHBvcnQgZm9yIGpkYiAoSmF2 YQotOzsgZGVidWdnZXIuKQorOzsgZGVidWdnZXIuKSAgSmFuIE5pZXV3ZW5odWl6ZW4gYWRkZWQg c3VwcG9ydCBmb3IgdGhlIEd1aWxlIFJFUEwgKEd1aWxlCis7OyBkZWJ1Z2dlcikuCiAKIDs7OyBD b2RlOgogCkBAIC0xNDAsNyArMTQxLDcgQEAKIAkJCSAgICAgICAoZGlzcGxheS1ncmFwaGljLXAp CiAJCQkgICAgICAgKGZib3VuZHAgJ3gtc2hvdy10aXApKQogCQkgIDp2aXNpYmxlIChtZW1xIGd1 ZC1taW5vci1tb2RlCi0JCQkJJyhnZGJtaSBkYnggc2RiIHhkYiBwZGIpKQorCQkJCScoZ2RibWkg Z3VpbGVyIGRieCBzZGIgeGRiIHBkYikpCiAJICAgICAgICAgIDpidXR0b24gKDp0b2dnbGUgLiBn dWQtdG9vbHRpcC1tb2RlKSkKICAgICAoW3JlZnJlc2hdCSJSZWZyZXNoIiAuIGd1ZC1yZWZyZXNo KQogICAgIChbcnVuXQltZW51LWl0ZW0gIlJ1biIgZ3VkLXJ1bgpAQCAtMTcwLDExICsxNzEsMTEg QEAKICAgICAoW3VwXQltZW51LWl0ZW0gIlVwIFN0YWNrIiBndWQtdXAKIAkJICA6ZW5hYmxlIChu b3QgZ3VkLXJ1bm5pbmcpCiAJCSAgOnZpc2libGUgKG1lbXEgZ3VkLW1pbm9yLW1vZGUKLQkJCQkg JyhnZGJtaSBnZGIgZGJ4IHhkYiBqZGIgcGRiKSkpCisJCQkJICcoZ2RibWkgZ2RiIGd1aWxlciBk YnggeGRiIGpkYiBwZGIpKSkKICAgICAoW2Rvd25dCW1lbnUtaXRlbSAiRG93biBTdGFjayIgZ3Vk LWRvd24KIAkJICA6ZW5hYmxlIChub3QgZ3VkLXJ1bm5pbmcpCiAJCSAgOnZpc2libGUgKG1lbXEg Z3VkLW1pbm9yLW1vZGUKLQkJCQkgJyhnZGJtaSBnZGIgZGJ4IHhkYiBqZGIgcGRiKSkpCisJCQkJ ICcoZ2RibWkgZ2RiIGd1aWxlciBkYnggeGRiIGpkYiBwZGIpKSkKICAgICAoW3BwXQltZW51LWl0 ZW0gIlByaW50IFMtZXhwcmVzc2lvbiIgZ3VkLXBwCiAgICAgICAgICAgICAgICAgICA6ZW5hYmxl IChhbmQgKG5vdCBndWQtcnVubmluZykKIAkJCQkgIChib3VuZC1hbmQtdHJ1ZS1wIGdkYi1hY3Rp dmUtcHJvY2VzcykpCkBAIC0xOTUsNyArMTk2LDcgQEAKICAgICAoW2ZpbmlzaF0JbWVudS1pdGVt ICJGaW5pc2ggRnVuY3Rpb24iIGd1ZC1maW5pc2gKICAgICAgICAgICAgICAgICAgIDplbmFibGUg KG5vdCBndWQtcnVubmluZykKIAkJICA6dmlzaWJsZSAobWVtcSBndWQtbWlub3ItbW9kZQotCQkJ CSAnKGdkYm1pIGdkYiB4ZGIgamRiIHBkYikpKQorCQkJCSAnKGdkYm1pIGdkYiBndWlsZXIgeGRi IGpkYiBwZGIpKSkKICAgICAoW3N0ZXBpXQltZW51LWl0ZW0gIlN0ZXAgSW5zdHJ1Y3Rpb24iIGd1 ZC1zdGVwaQogICAgICAgICAgICAgICAgICAgOmVuYWJsZSAobm90IGd1ZC1ydW5uaW5nKQogCQkg IDp2aXNpYmxlIChtZW1xIGd1ZC1taW5vci1tb2RlICcoZ2RibWkgZ2RiIGRieCkpKQpAQCAtMTcw NCw2ICsxNzA1LDgzIEBACiAgIChydW4taG9va3MgJ3BkYi1tb2RlLWhvb2spKQogDAogOzsgPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorOzsgR3VpbGUgUkVQTCAoZ3VpbGVyKSBmdW5jdGlvbnMKKworOzsgSGlzdG9y eSBvZiBhcmd1bWVudCBsaXN0cyBwYXNzZWQgdG8gZ3VpbGVyLgorKGRlZnZhciBndWQtZ3VpbGVy LWhpc3RvcnkgbmlsKQorCisoZGVmdmFyIGd1ZC1ndWlsZXItbGFzdGZpbGUgbmlsKQorCisoZGVm dW4gZ3VkLWd1aWxlci1tYXJrZXItZmlsdGVyIChzdHJpbmcpCisgIChzZXRxIGd1ZC1tYXJrZXIt YWNjIChpZiBndWQtbWFya2VyLWFjYyAoY29uY2F0IGd1ZC1tYXJrZXItYWNjIHN0cmluZykgc3Ry aW5nKSkKKworICAobGV0ICgoc3RhcnQgMCkpCisgICAgKHdoaWxlCisJKGNvbmQKKwkgKChzdHJp bmctbWF0Y2ggIl5JbiBcXCguKlxcKToiIGd1ZC1tYXJrZXItYWNjIHN0YXJ0KQorICAgICAgICAg IChzZXRxIGd1ZC1ndWlsZXItbGFzdGZpbGUgKG1hdGNoLXN0cmluZyAxIGd1ZC1tYXJrZXItYWNj KSkpCisJICgoc3RyaW5nLW1hdGNoICJeXFwoW146XG5dK1xcKTpcXChbMC05XStcXCk6XFwoWzAt OV0rXFwpOlteXG5dKiIKKwkJCWd1ZC1tYXJrZXItYWNjIHN0YXJ0KQorICAgICAgICAgIChzZXRx IGd1ZC1ndWlsZXItbGFzdGZpbGUgKG1hdGNoLXN0cmluZyAxIGd1ZC1tYXJrZXItYWNjKSkKKyAg ICAgICAgICAoc2V0cSBndWQtbGFzdC1mcmFtZQorICAgICAgICAgICAgICAgIChjb25zIGd1ZC1n dWlsZXItbGFzdGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLXRvLW51bWJlciAo bWF0Y2gtc3RyaW5nIDIgZ3VkLW1hcmtlci1hY2MpKSkpKQorCSAoKHN0cmluZy1tYXRjaCAiXlsg XSpcXChbMC05XStcXCk6XFwoWzAtOV0rXFwpICBbXlxuXSoiCisJCQlndWQtbWFya2VyLWFjYyBz dGFydCkKKyAgICAgICAgICAoaWYgZ3VkLWd1aWxlci1sYXN0ZmlsZQorICAgICAgICAgICAgICAo c2V0cSBndWQtbGFzdC1mcmFtZQorICAgICAgICAgICAgICAgICAgICAoY29ucyBndWQtZ3VpbGVy LWxhc3RmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctdG8tbnVtYmVyICht YXRjaC1zdHJpbmcgMSBndWQtbWFya2VyLWFjYykpKSkpKQorCSAoKHN0cmluZy1tYXRjaCBjb21p bnQtcHJvbXB0LXJlZ2V4cCBndWQtbWFya2VyLWFjYyBzdGFydCkgdCkKKyAgICAgICAgICgoc3Ry aW5nPSAoc3Vic3RyaW5nIGd1ZC1tYXJrZXItYWNjIHN0YXJ0KSAiIikgbmlsKQorICAgICAgICAg KHQgbmlsKSkKKyAgICAgIChzZXRxIHN0YXJ0IChtYXRjaC1lbmQgMCkpKQorCisgICAgOzsgU2Vh cmNoIGZvciB0aGUgbGFzdCBpbmNvbXBsZXRlIGxpbmUgaW4gdGhpcyBjaHVuaworICAgICh3aGls ZSAoc3RyaW5nLW1hdGNoICJcbiIgZ3VkLW1hcmtlci1hY2Mgc3RhcnQpCisgICAgICAoc2V0cSBz dGFydCAobWF0Y2gtZW5kIDApKSkKKworICAgIDs7IElmIHdlIGhhdmUgYW4gaW5jb21wbGV0ZSBs aW5lLCBzdG9yZSBpdCBpbiBndWQtbWFya2VyLWFjYy4KKyAgICAoc2V0cSBndWQtbWFya2VyLWFj YyAoc3Vic3RyaW5nIGd1ZC1tYXJrZXItYWNjIChvciBzdGFydCAwKSkpKQorICBzdHJpbmcpCisK KworKGRlZmN1c3RvbSBndWQtZ3VpbGVyLWNvbW1hbmQtbmFtZSAiZ3VpbGUiCisgICJGaWxlIG5h bWUgZm9yIGV4ZWN1dGluZyB0aGUgR3VpbGUgZGVidWdnZXIuCitUaGlzIHNob3VsZCBiZSBhbiBl eGVjdXRhYmxlIG9uIHlvdXIgcGF0aCwgb3IgYW4gYWJzb2x1dGUgZmlsZSBuYW1lLiIKKyAgOnR5 cGUgJ3N0cmluZworICA6Z3JvdXAgJ2d1ZCkKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZ1biBndWls ZXIgKGNvbW1hbmQtbGluZSkKKyAgIlJ1biBndWlsZXIgb24gcHJvZ3JhbSBGSUxFIGluIGJ1ZmZl ciBgKmd1ZC1GSUxFKicuCitUaGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgRklMRSBiZWNvbWVzIHRo ZSBpbml0aWFsIHdvcmtpbmcgZGlyZWN0b3J5CithbmQgc291cmNlLWZpbGUgZGlyZWN0b3J5IGZv ciB5b3VyIGRlYnVnZ2VyLiIKKyAgKGludGVyYWN0aXZlCisgICAobGlzdCAoZ3VkLXF1ZXJ5LWNt ZGxpbmUgJ2d1aWxlcikpKQorCisgIChndWQtY29tbW9uLWluaXQgY29tbWFuZC1saW5lIG5pbCAn Z3VkLWd1aWxlci1tYXJrZXItZmlsdGVyKQorICAoc2V0cS1sb2NhbCBndWQtbWlub3ItbW9kZSAn Z3VpbGVyKQorCis7OyBGSVhNRTogYWJzb2x1dGUgZmlsZS1uYW1lcyBhcmUgbm90IGdyb2trZWQg eWV0IGJ5IEd1aWxlJ3MgLGJyZWFrLWF0LXNvdXJjZQorOzsgYW5kIHJlbGF0aXZlIGZpbGUgbmFt ZXMgb25seSB3aGVuIHJlbGF0aXZlIHRvICVsb2FkLXBhdGguCis7OyAgKGd1ZC1kZWYgZ3VkLWJy ZWFrICAiLGJyZWFrLWF0LXNvdXJjZSAlZCVmICVsIiAgIlxDLWIiICJTZXQgYnJlYWtwb2ludCBh dCBjdXJyZW50IGxpbmUuIikKKyAgKGd1ZC1kZWYgZ3VkLWJyZWFrICAiLGJyZWFrLWF0LXNvdXJj ZSAlZiAlbCIgICJcQy1iIiAiU2V0IGJyZWFrcG9pbnQgYXQgY3VycmVudCBsaW5lLiIpCis7OyBG SVhNRTogcmVtb3ZlIGJyZWFrcG9pbnQgd2l0aCBmaWxlLWxpbmUgbm90IHlldCBzdXBwb3J0ZWQg YnkgR3VpbGUKKzs7ICAoZ3VkLWRlZiBndWQtcmVtb3ZlICIsZGVsZXRlIC0tLT4gJWQlZjolbCIg ICJcQy1kIiAiUmVtb3ZlIGJyZWFrcG9pbnQgYXQgY3VycmVudCBsaW5lIikKKyAgKGd1ZC1kZWYg Z3VkLXN0ZXAgICAiLHN0ZXAiICAgICAgICAgIlxDLXMiICJTdGVwIG9uZSBzb3VyY2UgbGluZSB3 aXRoIGRpc3BsYXkuIikKKyAgKGd1ZC1kZWYgZ3VkLW5leHQgICAiLG5leHQiICAgICAgICAgIlxD LW4iICJTdGVwIG9uZSBsaW5lIChza2lwIGZ1bmN0aW9ucykuIikKKzs7ICAoZ3VkLWRlZiBndWQt Y29udCAgICJjb250aW51ZSIgICAgICJcQy1yIiAiQ29udGludWUgd2l0aCBkaXNwbGF5LiIpCisg IChndWQtZGVmIGd1ZC1maW5pc2ggIixmaW5pc2giICAgICAgICJcQy1mIiAiRmluaXNoIGV4ZWN1 dGluZyBjdXJyZW50IGZ1bmN0aW9uLiIpCisgIChndWQtZGVmIGd1ZC11cCAgICAgIix1cCIgICAg ICAgICAgICI8IiAiVXAgb25lIHN0YWNrIGZyYW1lLiIpCisgIChndWQtZGVmIGd1ZC1kb3duICAg Iixkb3duIiAgICAgICAgICI+IiAiRG93biBvbmUgc3RhY2sgZnJhbWUuIikKKyAgKGd1ZC1kZWYg Z3VkLXByaW50ICAiJWUiICAgICAgICAgICAgIlxDLXAiICJFdmFsdWF0ZSBHdWlsZSBleHByZXNz aW9uIGF0IHBvaW50LiIpCisKKyAgKHNldHEgY29taW50LXByb21wdC1yZWdleHAgIl5zY2hlbWVA KFtePl0rPiAiKQorICAoc2V0cSBwYXJhZ3JhcGgtc3RhcnQgY29taW50LXByb21wdC1yZWdleHAp CisgIChydW4taG9va3MgJ2d1aWxlci1tb2RlLWhvb2spKQorDAorOzsgPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQog OzsKIDs7IEpEQiBzdXBwb3J0LgogOzsKQEAgLTM0NTAsNiArMzUyOCw3IEBACiAgICJSZXR1cm4g YSBzdWl0YWJsZSBjb21tYW5kIHRvIHByaW50IHRoZSBleHByZXNzaW9uIEVYUFIuIgogICAocGNh c2UgZ3VkLW1pbm9yLW1vZGUKICAgICAoYGdkYm1pIChjb25jYXQgIi1kYXRhLWV2YWx1YXRlLWV4 cHJlc3Npb24gXCIiIGV4cHIgIlwiIikpCisgICAgKGBndWlsZXIgZXhwcikKICAgICAoYGRieCAo Y29uY2F0ICJwcmludCAiIGV4cHIpKQogICAgICgob3IgYHhkYiBgcGRiKSAoY29uY2F0ICJwICIg ZXhwcikpCiAgICAgKGBzZGIgKGNvbmNhdCBleHByICIvIikpKSkKCiMgQmVnaW4gYnVuZGxlCkl5 QkNZWHBoWVhJZ2NtVjJhWE5wYjI0Z1luVnVaR3hsSUhZMENpTUtRbHBvT1RGQldTWlRXZGpndnZn QUFCSmZnQUFRUUdGeFVCSUEKQUFDdjc5NFFJQUJrUlRhYWphbVF5R2pUYVJpRkdnQk1CQmt3UWhE bWFWbkg1cjloTUZReUo3RVV6VGhpdzRJeGMvbVFWcGV4YlBTMgo5eUxMVHhhRmJXdlhjTjJ6Y3lk T1F4cEQ2NTJhY1FDNGc0Wjk2akk1QmlwZ0tBQWlNNVp6NDVLZC80dTVJcHdvU0d4d1gzd0EK --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=2-Support-Guile-backtraces-in-compilation-mode.bundle Content-Transfer-Encoding: base64 IyBCYXphYXIgbWVyZ2UgZGlyZWN0aXZlIGZvcm1hdCAyIChCYXphYXIgMC45MCkKIyByZXZpc2lv bl9pZDogamFubmVrZUBnbnUub3JnLTIwMTQwODEwMTIwMDE2LWMzbWtjOXFpc3Z0ZHVydjAKIyB0 YXJnZXRfYnJhbmNoOiAvaG9tZS9qYW5uZWtlL3ZjL2VtYWNzLmJ6ci90cnVuawojIHRlc3RhbWVu dF9zaGExOiBmOWE2ZDZkZDkyZTk0YTg5YjNlYjk2YjU3YmE4ODJiOTBmZGEwNmEzCiMgdGltZXN0 YW1wOiAyMDE0LTA4LTEwIDE0OjAyOjAyICswMjAwCiMgYmFzZV9yZXZpc2lvbl9pZDogamFubmVr ZUBnbnUub3JnLTIwMTQwODEwMTIwMDE2LWhoNDlmdGFmMnh2a3FpbzIKIyAKIyBCZWdpbiBwYXRj aAo9PT0gbW9kaWZpZWQgZmlsZSAnZXRjL0NoYW5nZUxvZycKLS0tIGV0Yy9DaGFuZ2VMb2cJMjAx NC0wOC0wOSAxNjoxMjozMyArMDAwMAorKysgZXRjL0NoYW5nZUxvZwkyMDE0LTA4LTEwIDEyOjAw OjE2ICswMDAwCkBAIC0xLDMgKzEsNyBAQAorMjAxNC0wOC0wOCAgSmFuIE5pZXV3ZW5odWl6ZW4g IDxqYW5uZWtlQGdudS5vcmc+CisKKwkqIGNvbXBpbGF0aW9uLnR4dCAoZmlsZSk6IEFkZCBHdWls ZSBiYWNrdHJhY2UgZXhhbXBsZS4KKwogMjAxNC0wOC0wOSAgUmV1YmVuIFRob21hcyAgPHJydEBz YzNkLm9yZz4KIAogCSogUFJPQkxFTVM6IFJlbW92ZSBtc2Rvcy9pc19leGVjLmMgYW5kIHNpZ2Fj dGlvbi5jLgoKPT09IG1vZGlmaWVkIGZpbGUgJ2V0Yy9jb21waWxhdGlvbi50eHQnCi0tLSBldGMv Y29tcGlsYXRpb24udHh0CTIwMTQtMDEtMDEgMDc6NDM6MzQgKzAwMDAKKysrIGV0Yy9jb21waWxh dGlvbi50eHQJMjAxNC0wOC0xMCAxMjowMDoxNiArMDAwMApAQCAtMjYxLDYgKzI2MSwyNiBAQAog e3N0YW5kYXJkIGlucHV0fToyNzA0MTogV2FybmluZzogZW5kIG9mIGZpbGUgbm90IGF0IGVuZCBv ZiBhIGxpbmU7IG5ld2xpbmUgaW5zZXJ0ZWQKIAogCisqIEd1aWxlIGJhY2t0cmFjZSwgMi4wLjEx CisKK3N5bWJvbHM6IGd1aWxlLWZpbGUsIGd1aWxlLWxpbmUKKworQmFja3RyYWNlOgorSW4gaWNl LTkvYm9vdC05LnNjbToKKyAxNTc6IDYgW2NhdGNoICN0ICM8Y2F0Y2gtY2xvc3VyZSAxOTZlM2Uw PiAuLi5dCitJbiB1bmtub3duIGZpbGU6CisgICA/OiA1IFthcHBseS1zbW9iLzEgIzxjYXRjaC1j bG9zdXJlIDE5NmUzZTA+XQorSW4gaWNlLTkvYm9vdC05LnNjbToKKyAgNjM6IDQgW2NhbGwtd2l0 aC1wcm9tcHQgcHJvbXB0MCAuLi5dCitJbiBpY2UtOS9ldmFsLnNjbToKKyA0MzI6IDMgW2V2YWwg IyAjXQorSW4gdW5rbm93biBmaWxlOgorICAgPzogMiBbZXZhbCAobWFpbiAoY29tbWFuZC1saW5l KSkgIzxkaXJlY3RvcnkgKGd1ZC1icmVhaykgMTk2MjUxMD5dCitJbiAvaG9tZS9qYW5uZWtlL3Zj L2d1aWxlL2V4YW1wbGVzL2d1ZC1icmVhay5zY206CisxMDM4OiAxIFttYWluICgiZ3VkLWJyZWFr LnNjbSIpXQorMTAzMzogMCBbc3RkZXJyICJ+YTpoZWxsbyB3b3JsZFxuIiAoIyAjICMpXQorCisK ICogTHVjaWQgQ29tcGlsZXIsIGxjYyAzLngKIAogc3ltYm9sOiBsY2MKCj09PSBtb2RpZmllZCBm aWxlICdsaXNwL0NoYW5nZUxvZycKLS0tIGxpc3AvQ2hhbmdlTG9nCTIwMTQtMDgtMTAgMTI6MDA6 MTYgKzAwMDAKKysrIGxpc3AvQ2hhbmdlTG9nCTIwMTQtMDgtMTAgMTI6MDA6MTYgKzAwMDAKQEAg LTEsMyArMSw4IEBACisyMDE0LTA4LTA4ICBKYW4gTmlldXdlbmh1aXplbiAgPGphbm5la2VAZ251 Lm9yZz4KKworCSogcHJvZ21vZGVzL2NvbXBpbGUuZWwgKGNvbXBpbGF0aW9uLWVycm9yLXJlZ2V4 cC1hbGlzdC1hbGlzdCk6CisJQWRkIEd1aWxlIHJlZ2V4cHNlcy4KKwogMjAxNC0wOC0wNSAgSmFu IE5pZXV3ZW5odWl6ZW4gIDxqYW5uZWtlQGdudS5vcmc+CiAKIAkqIHByb2dtb2Rlcy9ndWQuZWwg KGd1aWxlcik6IE5ldyBmdW5jdGlvbi4gIFN0YXJ0cyB0aGUgR3VpbGUgUkVQTDsKCj09PSBtb2Rp ZmllZCBmaWxlICdsaXNwL3Byb2dtb2Rlcy9jb21waWxlLmVsJwotLS0gbGlzcC9wcm9nbW9kZXMv Y29tcGlsZS5lbAkyMDE0LTA1LTI5IDAzOjQ1OjI5ICswMDAwCisrKyBsaXNwL3Byb2dtb2Rlcy9j b21waWxlLmVsCTIwMTQtMDgtMTAgMTI6MDA6MTYgKzAwMDAKQEAgLTQ3Nyw2ICs0NzcsOCBAQAog ICAgICA7OwogICAgICAiXlxcKFteIFx0XHJcbihdK1xcKSAoXFwoWzAtOV0rXFwpOlxcKFswLTld K1xcKSkgIgogICAgICAxIDIgMykKKyAgICAoZ3VpbGUtZmlsZSAiXkluIFxcKC4rXFwpOlxuIiAx KQorICAgIChndWlsZS1saW5lICJeICpcXChbMC05XStcXCk6ICpcXChbMC05XStcXCkiIG5pbCAx IDIpCiAgICAgKQogICAiQWxpc3Qgb2YgdmFsdWVzIGZvciBgY29tcGlsYXRpb24tZXJyb3ItcmVn ZXhwLWFsaXN0Jy4iKQogCgo9PT0gbW9kaWZpZWQgZmlsZSAndGVzdC9DaGFuZ2VMb2cnCi0tLSB0 ZXN0L0NoYW5nZUxvZwkyMDE0LTA4LTA3IDAwOjA3OjMyICswMDAwCisrKyB0ZXN0L0NoYW5nZUxv ZwkyMDE0LTA4LTEwIDEyOjAwOjE2ICswMDAwCkBAIC0xLDMgKzEsOSBAQAorMjAxNC0wOC0wOCAg SmFuIE5pZXV3ZW5odWl6ZW4gIDxqYW5uZWtlQGdudS5vcmc+CisKKwkqIGF1dG9tYXRlZC9jb21w aWxlLXRlc3RzLmVsIChjb21waWxlLS10ZXN0LWVycm9yLWxpbmUpOiBHcm9rIEZJTEUKKwliZWlu ZyBuaWwuICBBbGxvd3MgZm9yIEd1aWxlIHRlc3RzIHRvIHBhc3MuCisJKGNvbXBpbGUtdGVzdHMt LXRlc3QtcmVnZXhwcy1kYXRhKTogQWRkIEd1aWxlIHRlc3RzLgorCiAyMDE0LTA4LTA3ICBHbGVu biBNb3JyaXMgIDxyZ21AZ251Lm9yZz4KIAogCSogYXV0b21hdGVkL01ha2VmaWxlLmluIChjaGVj ay10YXIpOiBSZW1vdmUsIGh5ZHJhIHJlY2lwZSBkb2VzIGl0IG5vdy4KCj09PSBtb2RpZmllZCBm aWxlICd0ZXN0L2F1dG9tYXRlZC9jb21waWxlLXRlc3RzLmVsJwotLS0gdGVzdC9hdXRvbWF0ZWQv Y29tcGlsZS10ZXN0cy5lbAkyMDE0LTAxLTAxIDA3OjQzOjM0ICswMDAwCisrKyB0ZXN0L2F1dG9t YXRlZC9jb21waWxlLXRlc3RzLmVsCTIwMTQtMDgtMTAgMTI6MDA6MTYgKzAwMDAKQEAgLTE5MCw2 ICsxOTAsMTAgQEAKICAgICAgMSBuaWwgNTQgIkc6L2N5Z3dpbi9kZXYvYnVpbGQtbXlwcm9qLnht bCIpCiAgICAgKCJ7c3RhbmRhcmQgaW5wdXR9OjI3MDQxOiBXYXJuaW5nOiBlbmQgb2YgZmlsZSBu b3QgYXQgZW5kIG9mIGEgbGluZTsgbmV3bGluZSBpbnNlcnRlZCIKICAgICAgMSBuaWwgMjcwNDEg IntzdGFuZGFyZCBpbnB1dH0iKQorICAgIDs7IEd1aWxlCisgICAgKCJJbiBmb28uc2NtOlxuIiAx IG5pbCBuaWwgImZvby5zY20iKQorICAgICgiICA2Mzo0IFtjYWxsLXdpdGgtcHJvbXB0IHByb21w dDAgLi4uXSIgMSA0IDYzIG5pbCkKKyAgICAoIjEwMzg6IDEgW21haW4gKFwiZ3VkLWJyZWFrLnNj bVwiKV0iIDEgMSAxMDM4IG5pbCkKICAgICA7OyBsY2MKICAgICAoIkUsIGZpbGUuY2MoMzUsNTIp IElsbGVnYWwgb3BlcmF0aW9uIG9uIHBvaW50ZXJzIiAxIDUyIDM1ICJmaWxlLmNjIikKICAgICAo IlcsIGZpbGUuY2MoMzYsNTIpIGJsYWggYmxhaCIgMSA1MiAzNiAiZmlsZS5jYyIpCkBAIC0zMzgs NyArMzQyLDggQEAKIAkgICAgKHNldHEgZW5kLWxpbmUgKGNkciBsaW5lKSBsaW5lIChjYXIgbGlu ZSkpKQogCShhbmQgKGVxdWFsIChjb21waWxhdGlvbi0tbG9jLT5jb2wgbG9jKSBjb2wpCiAJICAg ICAoZXF1YWwgKGNvbXBpbGF0aW9uLS1sb2MtPmxpbmUgbG9jKSBsaW5lKQotCSAgICAgKGVxdWFs IChjYWFyIChjb21waWxhdGlvbi0tbG9jLT5maWxlLXN0cnVjdCBsb2MpKSBmaWxlKQorCSAgICAg KG9yIChub3QgZmlsZSkgCisgICAgICAgICAgICAgICAgIChlcXVhbCAoY2FhciAoY29tcGlsYXRp b24tLWxvYy0+ZmlsZS1zdHJ1Y3QgbG9jKSkgZmlsZSkpCiAJICAgICAob3IgKG51bGwgZW5kLWNv bCkKIAkgICAgIAkgKGVxdWFsIChjYXIgKGNhZHIgKG50aCAyIChjb21waWxhdGlvbi0tbG9jLT5m aWxlLXN0cnVjdCBsb2MpKSkpCiAJICAgICAJCWVuZC1jb2wpKQoKIyBCZWdpbiBidW5kbGUKSXlC Q1lYcGhZWElnY21WMmFYTnBiMjRnWW5WdVpHeGxJSFkwQ2lNS1FscG9PVEZCV1NaVFdkamd2dmdB QUJKZmdBQVFRR0Z4VUJJQQpBQUN2Nzk0UUlBQmtSVGFhamFtUXlHalRhUmlGR2dCTUJCa3dRaERt YVZuSDVyOWhNRlF5SjdFVXpUaGl3NEl4Yy9tUVZwZXhiUFMyCjl5TExUeGFGYld2WGNOMnpjeWRP UXhwRDY1MmFjUUM0ZzRaOTZqSTVCaXBnS0FBaU01Wno0NUtkLzR1NUlwd29TR3h3WDN3QQo= --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable --=20 Jan Nieuwenhuizen | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar=C2=AE http://AvatarAcademy.nl= =20=20 --=-=-=--