From ac8990d5195312fa7c71966bdfaa925905902ca8 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 28 Sep 2011 20:20:05 -0600 Subject: [PATCH] add `date*' and `exn:fail:syntax:unbound' The `date*' structure type is an extension of `date' with `nanosecond' and `time-zone-name' fields. The `seconds->date' function now accepts a real and returns a `date*'. The fractional part of its argument goes into the `nanosecond' field. --- collects/racket/private/kernstruct.rkt | 44 ++ collects/racket/private/serialize.rkt | 13 +- collects/scribblings/reference/exns.scrbl | 6 + .../scribblings/reference/serialization.scrbl | 22 +- collects/scribblings/reference/time.scrbl | 26 +- collects/tests/racket/date.rktl | 36 +- collects/tests/racket/namespac.rktl | 2 + collects/tests/racket/serialize.rktl | 1 + collects/tests/racket/structlib.rktl | 8 +- doc/release-notes/racket/HISTORY.txt | 6 + src/racket/Makefile.in | 6 +- src/racket/sconfig.h | 17 + src/racket/src/compenv.c | 12 +- src/racket/src/compile.c | 2 +- src/racket/src/cstartup.inc | 620 +++++++++--------- src/racket/src/error.c | 25 +- src/racket/src/fun.c | 42 +- src/racket/src/makeexn | 14 +- src/racket/src/number.c | 11 +- src/racket/src/schexn.h | 26 +- src/racket/src/schminc.h | 2 +- src/racket/src/schpriv.h | 6 + src/racket/src/schvers.h | 4 +- src/racket/src/struct.c | 61 +- 24 files changed, 624 insertions(+), 388 deletions(-) diff --git a/collects/racket/private/kernstruct.rkt b/collects/racket/private/kernstruct.rkt index d4d7b7bbef..14401db4ab 100644 --- a/collects/racket/private/kernstruct.rkt +++ b/collects/racket/private/kernstruct.rkt @@ -193,6 +193,24 @@ '(#f #f #f) (quote-syntax exn:fail))) (λ () (quote-syntax kernel:exn:fail:syntax))))) + (begin + (#%require + (rename '#%kernel kernel:exn:fail:syntax:unbound exn:fail:syntax:unbound)) + (define make-exn:fail:syntax:unbound kernel:exn:fail:syntax:unbound) + (define-syntax exn:fail:syntax:unbound + (make-self-ctr-struct-info + (λ () + (list + (quote-syntax struct:exn:fail:syntax:unbound) + (quote-syntax make-exn:fail:syntax:unbound) + (quote-syntax exn:fail:syntax:unbound?) + (list + (quote-syntax exn:fail:syntax-exprs) + (quote-syntax exn-continuation-marks) + (quote-syntax exn-message)) + '(#f #f #f) + (quote-syntax exn:fail:syntax))) + (λ () (quote-syntax kernel:exn:fail:syntax:unbound))))) (begin (#%require (rename '#%kernel kernel:exn:fail:read exn:fail:read)) (define make-exn:fail:read kernel:exn:fail:read) @@ -422,6 +440,32 @@ '(#f #f #f #f #f #f #f #f #f #f) #t)) (λ () (quote-syntax kernel:date))))) + (begin + (#%require (rename '#%kernel kernel:date* date*)) + (define make-date* kernel:date*) + (define-syntax date* + (make-self-ctr-struct-info + (λ () + (list + (quote-syntax struct:date*) + (quote-syntax make-date*) + (quote-syntax date*?) + (list + (quote-syntax date*-time-zone-name) + (quote-syntax date*-nanosecond) + (quote-syntax date-time-zone-offset) + (quote-syntax date-dst?) + (quote-syntax date-year-day) + (quote-syntax date-week-day) + (quote-syntax date-year) + (quote-syntax date-month) + (quote-syntax date-day) + (quote-syntax date-hour) + (quote-syntax date-minute) + (quote-syntax date-second)) + '(#f #f #f #f #f #f #f #f #f #f #f #f) + #t)) + (λ () (quote-syntax kernel:date*))))) (begin (#%require (rename '#%kernel kernel:srcloc srcloc)) (define make-srcloc kernel:srcloc) diff --git a/collects/racket/private/serialize.rkt b/collects/racket/private/serialize.rkt index bd632a18b7..ba67869371 100644 --- a/collects/racket/private/serialize.rkt +++ b/collects/racket/private/serialize.rkt @@ -1,6 +1,7 @@ (module serialize racket/base (require syntax/modcollapse unstable/struct + racket/list "serialize-structs.rkt") ;; This module implements the core serializer. The syntactic @@ -229,8 +230,10 @@ (loop (mcdr v))] [(box? v) (loop (unbox v))] + [(date*? v) + (for-each loop (take (struct->list v) 12))] [(date? v) - (for-each loop (struct->list v))] + (for-each loop (take (struct->list v) 10))] [(hash? v) (hash-for-each v (lambda (k v) (loop k) @@ -316,9 +319,12 @@ (hash-map v (lambda (k v) (cons (loop k) (loop v))))))] + [(date*? v) + (cons 'date* + (map (serial #t) (take (struct->list v) 12)))] [(date? v) (cons 'date - (map (serial #t) (struct->list v)))] + (map (serial #t) (take (struct->list v) 10)))] [(arity-at-least? v) (cons 'arity-at-least ((serial #t) (arity-at-least-value v)))] @@ -381,7 +387,7 @@ [main-serialized (serialize-one v share #t mod-map mod-map-cache)] [mod-map-l (map car (sort (hash-map mod-map cons) (lambda (a b) (< (cdr a) (cdr b)))))]) - (list '(2) ;; serialization-format version + (list '(3) ;; serialization-format version (hash-count mod-map) (map (lambda (v) (if (symbol-interned? (cdr v)) v @@ -482,6 +488,7 @@ (make-immutable-hash al) (make-immutable-hasheqv al)))))] [(date) (apply make-date (map loop (cdr v)))] + [(date*) (apply make-date* (map loop (cdr v)))] [(arity-at-least) (make-arity-at-least (loop (cdr v)))] [(mpi) (module-path-index-join (loop (cadr v)) (loop (cddr v)))] diff --git a/collects/scribblings/reference/exns.scrbl b/collects/scribblings/reference/exns.scrbl index c82487dfaa..b5745f5df9 100644 --- a/collects/scribblings/reference/exns.scrbl +++ b/collects/scribblings/reference/exns.scrbl @@ -494,6 +494,12 @@ Raised for a syntax error that is not a @racket[read] error. The @racket[exprs] indicate the relevant source expressions, least-specific to most-specific.} +@defstruct[(exn:fail:syntax:unbound exn:fail:syntax) () + #:inspector #f]{ + +Raised by @racket[#%top] or @racket[set!] for an +unbound identifier within a module.} + @defstruct[(exn:fail:read exn:fail) ([srclocs (listof srcloc?)]) #:inspector #f]{ diff --git a/collects/scribblings/reference/serialization.scrbl b/collects/scribblings/reference/serialization.scrbl index 677a3a62a8..abc885da70 100644 --- a/collects/scribblings/reference/serialization.scrbl +++ b/collects/scribblings/reference/serialization.scrbl @@ -47,7 +47,7 @@ The following kinds of values are serializable: @item{@tech{pairs}, @tech{mutable pairs}, @tech{vectors}, @tech{box}es, @tech{hash tables}, and @tech{sets};} - @item{@racket[date] and @racket[arity-at-least] structures; and} + @item{@racket[date], @racket[date*], and @racket[arity-at-least] structures; and} @item{@tech{module path index} values.} @@ -83,11 +83,12 @@ elements: @itemize[ - @item{An optional list @racket['(1)] or @racket['(2)] that represents + @item{An optional list @racket['(1)], @racket['(2)], or @racket['(3)] that represents the version of the serialization format. If the first element of a representation is not a list, then the version is - @racket[0]. Version 1 adds support for mutable pairs, and - version 2 adds support for @tech{unreadable symbols}.} + @racket[0]. Version 1 adds support for mutable pairs, + version 2 adds support for @tech{unreadable symbols}, + and version 3 adds support for @racket[date*] structures.} @item{A non-negative exact integer @racket[_s-count] that represents the number of distinct structure types represented in the @@ -155,6 +156,11 @@ elements: @item{no symbols --- @racket[(make-hasheq)]} ]} + @item{@racket['date*] for a @racket[date*] structure, which + fails on deserialization (since dates are immutable; + this case does not appear in output generated by + @racket[serialize]);} + @item{@racket['date] for a @racket[date] structure, which fails on deserialization (since dates are immutable; this case does not appear in output generated by @@ -162,12 +168,12 @@ elements: @item{@racket['arity-at-least] for an @racket[arity-at-least] structure, which fails on - deserialization (since dates are immutable; this + deserialization (since arity-at-least are immutable; this case does not appear in output generated by @racket[serialize]); or} @item{@racket['mpi] for a @tech{module path index}, which - fails on deserialization (since dates are immutable; + fails on deserialization (since a module path index is immutable; this case does not appear in output generated by @racket[serialize]).} @@ -273,6 +279,10 @@ elements: hash-table key and the @racket[cdr] is a serial for the corresponding value.} + @item{a pair whose @racket[car] is @racket['date*] and whose + @racket[cdr] is a list of serials; it represents a + @racket[date*] structure.} + @item{a pair whose @racket[car] is @racket['date] and whose @racket[cdr] is a list of serials; it represents a @racket[date] structure.} diff --git a/collects/scribblings/reference/time.scrbl b/collects/scribblings/reference/time.scrbl index 7deeda36eb..e5ee5b569e 100644 --- a/collects/scribblings/reference/time.scrbl +++ b/collects/scribblings/reference/time.scrbl @@ -14,13 +14,14 @@ The value of @racket[(current-seconds)] increases as time passes seconds can be compared with a time returned by @racket[file-or-directory-modify-seconds].} -@defproc[(seconds->date [secs-n exact-integer?] +@defproc[(seconds->date [secs-n real?] [local-time? any/c #t]) date?]{ Takes @racket[secs-n], a platform-specific time in seconds returned by -@racket[current-seconds] or @racket[file-or-directory-modify-seconds], -and returns an instance of the @racket[date] structure type. If +@racket[current-seconds], @racket[current-inexact-milliseconds], +or @racket[file-or-directory-modify-seconds], +and returns an instance of the @racket[date*] structure type. If @racket[secs-n] is too small or large, the @exnraise[exn:fail]. The resulting @racket[date] reflects the time according to the local @@ -59,6 +60,9 @@ daylight-saving adjustment (e.g., Pacific Daylight Time is the @racket[dst?] and @racket[time-zone-offset] fields are @racket[#f] and @racket[0], respectively. +The @racket[date] constructor accepts any value for @racket[dst?] +and converts any non-@racket[#f] value to @racket[#t]. + The value produced for the @racket[time-zone-offset] field tends to be sensitive to the value of the @envvar{TZ} environment variable, especially on Unix platforms; consult the system documentation @@ -67,6 +71,20 @@ especially on Unix platforms; consult the system documentation See also the @racketmodname[racket/date] library.} +@defstruct[(date* date) ([nanosecond (integer-in 0 999999999)] + [time-zone-name (and/c string? immutable?)])]{ + +Extends @racket[date] with a time zone name, such as @racket["MDT"], +@racket["Mountain Daylight Time"], or @racket["UTC"]. + +When a @racket[date*] record is generated by @racket[seconds->date] +with @racket[#f] as the second argument, then the +@racket[time-zone-name] field is @racket["UTC"]. + +The @racket[date*] constructor accepts a mutable string for +@racket[time-zone-name] and converts it to an immutable one.} + + @defproc[(current-milliseconds) exact-integer?]{ Returns the current ``time'' in @tech{fixnum} milliseconds (possibly @@ -143,7 +161,7 @@ result is the result of @racket[expr].} @note-lib-only[racket/date] -@defproc[(current-date) date?]{ +@defproc[(current-date) date*?]{ An abbreviation for @racket[(seconds->date (current-seconds))].} diff --git a/collects/tests/racket/date.rktl b/collects/tests/racket/date.rktl index 8a503821ca..74bee73e4b 100644 --- a/collects/tests/racket/date.rktl +++ b/collects/tests/racket/date.rktl @@ -23,6 +23,14 @@ (test 0 find-seconds 0 0 0 1 1 1970 #f) (test 32416215 find-seconds 15 30 4 11 1 1971 #f) +(let* ([s (current-seconds)] + [d1 (seconds->date s)] + [d2 (seconds->date (+ s 1/100000000))]) + (test 0 date*-nanosecond d1) + (test 10 date*-nanosecond d2) + (test (date*-time-zone-name d1) date*-time-zone-name d2) + (test (struct-copy date d1) values (struct-copy date d2))) + ; date->string (let* ([secs (find-seconds 1 2 3 4 5 2006)] [d-some-tz (seconds->date secs)] @@ -64,15 +72,25 @@ (err/rt-test (find-seconds 0 0 0 1 1 1490) exn:fail?) (err/rt-test (find-seconds 0 0 0 1 1 2890) exn:fail?)) -;; 1990 April 1 was start of daylight savings: -(test-find 0 0 1 1 4 1990) ; ok -(let ([s (find-seconds 1 0 3 1 4 1990)]) ; ok - (when (date-dst? (seconds->date s)) - ;; We have daylight savings here; 2:01 AM doesn't exist - (err/rt-test (find-seconds 0 1 2 1 4 1990) exn:fail?) - ;; This date is ambiguous; find-seconds should find - ;; one of the two possible values, though: - (test-find 0 30 1 27 10 1996))) +;; Daylight saving checks: + +;; March 13 was start of daylight saving in most of the US for 2011. +;; Check whether we seem to be in a US time zone with daylight saving: +(let ([d1 (seconds->date (find-seconds 0 0 1 13 1 2011))] + [d2 (seconds->date (find-seconds 0 0 1 13 5 2011))]) + (when (and (not (date-dst? d1)) + (>= -10800 (date-time-zone-offset d1) -28800) + (date-dst? d2) + (>= -14400 (date-time-zone-offset d2) -25200)) + ;; It looks like we have US daylight saving: + (test-find 0 0 1 13 3 2011) ; ok + (let ([s (find-seconds 1 0 3 13 3 2011)]) ; ok + ;; Since we have daylight savings here; 2:01 AM doesn't exist + (err/rt-test (find-seconds 0 1 2 13 3 2011) exn:fail?) + ;; During the end of DST in 2010, + ;; this date is ambiguous; find-seconds should find + ;; one of the two possible values, though: + (test-find 0 30 1 7 11 2010)))) ;; bug fixes (test "JD 12" julian/scalinger->string 12) diff --git a/collects/tests/racket/namespac.rktl b/collects/tests/racket/namespac.rktl index 168556d3ce..996b85a5ef 100644 --- a/collects/tests/racket/namespac.rktl +++ b/collects/tests/racket/namespac.rktl @@ -40,6 +40,7 @@ (mkp "arity-at-least") (mkp "srcloc") (mkp "date") + (mkp "date*") (mkp "exn") (mkp "exn:fail") (mkp "exn:fail:contract") @@ -49,6 +50,7 @@ (mkp "exn:fail:contract:continuation") (mkp "exn:fail:contract:variable") (mkp "exn:fail:syntax") + (mkp "exn:fail:syntax:unbound") (mkp "exn:fail:read") (mkp "exn:fail:read:eof") (mkp "exn:fail:read:non-char") diff --git a/collects/tests/racket/serialize.rktl b/collects/tests/racket/serialize.rktl index 9a4e027c5e..98366db103 100644 --- a/collects/tests/racket/serialize.rktl +++ b/collects/tests/racket/serialize.rktl @@ -123,6 +123,7 @@ (test-ser null) (test-ser (current-directory)) (test-ser (seconds->date (current-seconds))) +(test-ser (struct-copy date (seconds->date (current-seconds)))) ; not date* (test-ser (procedure-arity (lambda (x . y) 10))) (test-ser (make-immutable-hasheq '((1 . a) (2 . b)))) (test-ser (make-immutable-hasheqv '((1 . a) (2 . b)))) diff --git a/collects/tests/racket/structlib.rktl b/collects/tests/racket/structlib.rktl index fc07a821a8..0bc13c80d3 100644 --- a/collects/tests/racket/structlib.rktl +++ b/collects/tests/racket/structlib.rktl @@ -7,10 +7,10 @@ (let* ([now (seconds->date (current-seconds))] [v (modulo (add1 (date-second now)) 60)]) - (test #t equal? now (copy-struct date now)) - (test #f equal? now (copy-struct date now (date-second v))) - (test v date-second (copy-struct date now (date-second v))) - (test (date-year now) date-year (copy-struct date now (date-second v)))) + (test #t equal? now (copy-struct date* now)) + (test #f equal? now (copy-struct date* now (date-second v))) + (test v date-second (copy-struct date* now (date-second v))) + (test (date-year now) date-year (copy-struct date* now (date-second v)))) (err/rt-test (copy-struct date 10)) (err/rt-test (copy-struct date 10 (date-second 0))) diff --git a/doc/release-notes/racket/HISTORY.txt b/doc/release-notes/racket/HISTORY.txt index 84c69b9e60..8f93f281f1 100644 --- a/doc/release-notes/racket/HISTORY.txt +++ b/doc/release-notes/racket/HISTORY.txt @@ -1,3 +1,9 @@ +Version 5.1.3.11 +Added exn:fail:syntax:unbound +Added date*, which extends date to include nanoseconds and a + time zone name +Changed seconds->date to accept a real number return a date* + Version 5.1.3.10 Added variable-reference->module-declare-inspector, which allows a macro or other syntax tool to get the enclosing module's diff --git a/src/racket/Makefile.in b/src/racket/Makefile.in index dc7ff79a73..2b15377d3b 100644 --- a/src/racket/Makefile.in +++ b/src/racket/Makefile.in @@ -215,7 +215,7 @@ starter: mzstart.exe exn: $(MAKE) $(srcdir)/src/schexn.h - $(MAKE) $(collectsdir)/scheme/private/kernstruct.rkt + $(MAKE) $(collectsdir)/racket/private/kernstruct.rkt STARTUPDEST = startup.inc CSTARTUPDEST = cstartup.inc @@ -240,8 +240,8 @@ headers: $(srcdir)/src/schexn.h: $(srcdir)/src/makeexn $(RACKET) -um $(srcdir)/src/makeexn > $(srcdir)/src/schexn.h -$(collectsdir)/scheme/private/kernstruct.rkt: $(srcdir)/src/makeexn - $(RACKET) -um $(srcdir)/src/makeexn kernstruct $(collectsdir)/scheme/private/kernstruct.rkt +$(collectsdir)/racket/private/kernstruct.rkt: $(srcdir)/src/makeexn + $(RACKET) -um $(srcdir)/src/makeexn kernstruct $(collectsdir)/racket/private/kernstruct.rkt $(srcdir)/src/$(STARTUPDEST): $(srcdir)/src/startup.rktl $(srcdir)/src/sstoinct.rkt $(RACKET) -cu $(srcdir)/src/sstoinct.rkt < $(srcdir)/src/startup.rktl > $(srcdir)/src/$(STARTUPDEST) diff --git a/src/racket/sconfig.h b/src/racket/sconfig.h index 2764e12562..54775fb230 100644 --- a/src/racket/sconfig.h +++ b/src/racket/sconfig.h @@ -69,6 +69,7 @@ # define UNISTD_INCLUDE # define USE_TM_GMTOFF_FIELD +# define USE_TM_ZONE_FIELD # define FLAGS_ALREADY_SET @@ -102,12 +103,14 @@ # undef USE_FLOCK_FOR_FILE_LOCKS # define USE_FCNTL_AND_FORK_FOR_FILE_LOCKS # define USE_TIMEZONE_AND_ALTZONE_VAR +# define USE_TZNAME_VAR # define USE_NULL_TO_DISCONNECT_UDP # else /* SunOS4 */ # define SCHEME_PLATFORM_LIBRARY_SUBPATH "sparc-sunos4" # define SIGSET_IS_SIGNAL # define USE_TM_GMTOFF_FIELD +# define USE_TM_ZONE_FIELD # define NO_STRERROR_AVAILABLE # define USE_ON_EXIT_FOR_ATEXIT # endif @@ -146,6 +149,7 @@ # define USE_FCNTL_O_NONBLOCK # define USE_TIMEZONE_VAR_W_DLS +# define USE_TZNAME_VAR # define FLAGS_ALREADY_SET @@ -208,6 +212,7 @@ # define USE_DYNAMIC_FDSET_SIZE # define USE_TIMEZONE_VAR_W_DLS +# define USE_TZNAME_VAR # define MZ_TCP_LISTEN_IPV6_ONLY_SOCKOPT @@ -257,6 +262,7 @@ # define SIGSET_IS_SIGNAL # define USE_TM_GMTOFF_FIELD +# define USE_TM_ZONE_FIELD #if defined(__alpha__) # define USE_DIVIDE_MAKE_INFINITY @@ -308,6 +314,7 @@ # define REGISTER_POOR_MACHINE # define USE_TM_GMTOFF_FIELD +# define USE_TM_ZONE_FIELD #if defined(__x86_64__) # define MZ_USE_JIT_X86_64 @@ -374,6 +381,7 @@ # define SIGSET_IS_SIGNAL # define USE_TM_GMTOFF_FIELD +# define USE_TM_ZONE_FIELD # define MZ_JIT_USE_MPROTECT @@ -401,6 +409,7 @@ # define USE_FCNTL_O_NONBLOCK # define USE_TIMEZONE_AND_ALTZONE_VAR +# define USE_TZNAME_VAR # define FLAGS_ALREADY_SET @@ -464,6 +473,7 @@ # define USE_ULIMIT # define USE_TIMEZONE_VAR_W_DLS +# define USE_TZNAME_VAR # define FLAGS_ALREADY_SET @@ -526,6 +536,7 @@ # define TIME_SYNTAX # define USE_FTIME # define USE_TIMEZONE_VAR_W_DLS +# define USE_TZNAME_VAR # define WINDOWS_GET_PROCESS_TIMES # define GETENV_FUNCTION # define DIR_FUNCTION @@ -720,6 +731,7 @@ # define SIGSET_IS_SIGNAL # define USE_TM_GMTOFF_FIELD +# define USE_TM_ZONE_FIELD # define USE_UNDERSCORE_SETJMP @@ -762,6 +774,7 @@ # define SIGSET_IS_SIGNAL # define USE_TM_GMTOFF_FIELD +# define USE_TM_ZONE_FIELD # define USE_UNDERSCORE_SETJMP @@ -985,6 +998,10 @@ daylight savings is in effect. USE_TM_GMTOFF_FIELD gets timezone offset from the tm_gmtoff field of the tm struct. */ + + /* USE_TZNAME_VAR gets the timezone name from a tzname global. + USE_TM_ZONE_FIELD gets the timezone name from a tm_zone field + of the tm struct. */ /*******************/ diff --git a/src/racket/src/compenv.c b/src/racket/src/compenv.c index 51302dcc99..9bf196b9cd 100644 --- a/src/racket/src/compenv.c +++ b/src/racket/src/compenv.c @@ -1862,10 +1862,10 @@ scheme_lookup_binding(Scheme_Object *find_id, Scheme_Comp_Env *env, int flags, if (genv->module && (genv->disallow_unbound > 0)) { /* Free identifier. Maybe don't continue. */ if (flags & (SCHEME_SETTING | SCHEME_REFERENCING)) { - scheme_wrong_syntax(((flags & SCHEME_SETTING) - ? scheme_set_stx_string - : scheme_var_ref_string), - NULL, src_find_id, "unbound identifier in module"); + scheme_unbound_syntax(((flags & SCHEME_SETTING) + ? scheme_set_stx_string + : scheme_var_ref_string), + NULL, src_find_id, "unbound identifier in module"); return NULL; } if (flags & SCHEME_NULL_FOR_UNBOUND) @@ -1928,10 +1928,10 @@ scheme_lookup_binding(Scheme_Object *find_id, Scheme_Comp_Env *env, int flags, && (genv->module && (genv->disallow_unbound > 0))) { /* Check for set! of unbound identifier: */ if (!scheme_lookup_in_table(genv->toplevel, (const char *)find_global_id)) { - scheme_wrong_syntax(((flags & SCHEME_SETTING) + scheme_unbound_syntax(((flags & SCHEME_SETTING) ? scheme_set_stx_string : scheme_var_ref_string), - NULL, src_find_id, "unbound identifier in module"); + NULL, src_find_id, "unbound identifier in module"); return NULL; } } diff --git a/src/racket/src/compile.c b/src/racket/src/compile.c index 75597045cc..efde6257aa 100644 --- a/src/racket/src/compile.c +++ b/src/racket/src/compile.c @@ -5182,7 +5182,7 @@ int scheme_check_top_identifier_bound(Scheme_Object *c, Scheme_Env *genv, int di reason = "unbound identifier in module"; else reason = "unbound identifier in module (in phase %d)"; - scheme_wrong_syntax(scheme_expand_stx_string, NULL, c, reason, genv->phase); + scheme_unbound_syntax(scheme_expand_stx_string, NULL, c, reason, genv->phase); } } } diff --git a/src/racket/src/cstartup.inc b/src/racket/src/cstartup.inc index 360bcc5977..540686c3bf 100644 --- a/src/racket/src/cstartup.inc +++ b/src/racket/src/cstartup.inc @@ -1,43 +1,43 @@ { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,49,46,51,46,49,48,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,49,46,51,46,49,49,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,51,0,0,0,1,0,0,10,0,13,0, -17,0,22,0,29,0,42,0,49,0,54,0,59,0,63,0,70,0,73,0,82, +20,0,24,0,29,0,32,0,37,0,50,0,57,0,64,0,68,0,73,0,82, 0,85,0,91,0,105,0,119,0,122,0,128,0,132,0,134,0,145,0,147,0, 161,0,168,0,190,0,192,0,206,0,17,1,46,1,57,1,68,1,93,1,126, 1,159,1,218,1,17,2,95,2,150,2,155,2,175,2,68,3,88,3,140,3, 206,3,95,4,237,4,34,5,45,5,124,5,0,0,83,7,0,0,69,35,37, -109,105,110,45,115,116,120,29,11,11,63,108,101,116,64,99,111,110,100,66,117, -110,108,101,115,115,72,112,97,114,97,109,101,116,101,114,105,122,101,66,100,101, -102,105,110,101,64,119,104,101,110,64,108,101,116,42,63,97,110,100,66,108,101, -116,114,101,99,62,111,114,68,104,101,114,101,45,115,116,120,29,11,11,65,113, +109,105,110,45,115,116,120,29,11,11,66,100,101,102,105,110,101,63,97,110,100, +64,108,101,116,42,62,111,114,64,99,111,110,100,72,112,97,114,97,109,101,116, +101,114,105,122,101,66,108,101,116,114,101,99,66,117,110,108,101,115,115,63,108, +101,116,64,119,104,101,110,68,104,101,114,101,45,115,116,120,29,11,11,65,113, 117,111,116,101,29,94,2,15,68,35,37,107,101,114,110,101,108,11,29,94,2, 15,68,35,37,112,97,114,97,109,122,11,62,105,102,65,98,101,103,105,110,63, 115,116,120,61,115,70,108,101,116,45,118,97,108,117,101,115,61,120,73,108,101, 116,114,101,99,45,118,97,108,117,101,115,66,108,97,109,98,100,97,1,20,112, 97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,61,118, -73,100,101,102,105,110,101,45,118,97,108,117,101,115,97,36,11,8,240,83,76, +73,100,101,102,105,110,101,45,118,97,108,117,101,115,97,36,11,8,240,85,76, 0,0,95,159,2,17,36,36,159,2,16,36,36,159,2,16,36,36,16,20,2, -3,2,2,2,5,2,2,2,7,2,2,2,6,2,2,2,8,2,2,2,9, -2,2,2,10,2,2,2,4,2,2,2,11,2,2,2,12,2,2,97,37,11, -8,240,83,76,0,0,93,159,2,16,36,37,16,2,2,13,161,2,2,37,2, -13,2,2,2,13,96,38,11,8,240,83,76,0,0,16,0,96,11,11,8,240, -83,76,0,0,16,0,18,98,64,104,101,114,101,13,16,5,36,2,14,2,2, +3,2,2,2,6,2,2,2,4,2,2,2,5,2,2,2,9,2,2,2,7, +2,2,2,8,2,2,2,10,2,2,2,11,2,2,2,12,2,2,97,37,11, +8,240,85,76,0,0,93,159,2,16,36,37,16,2,2,13,161,2,2,37,2, +13,2,2,2,13,96,38,11,8,240,85,76,0,0,16,0,96,11,11,8,240, +85,76,0,0,16,0,18,98,64,104,101,114,101,13,16,5,36,2,14,2,2, 11,11,8,32,8,31,8,30,8,29,27,248,22,155,4,195,249,22,148,4,80, 158,39,36,251,22,83,2,18,248,22,98,199,12,249,22,73,2,19,248,22,100, 201,27,248,22,155,4,195,249,22,148,4,80,158,39,36,251,22,83,2,18,248, 22,98,199,249,22,73,2,19,248,22,100,201,12,27,248,22,75,248,22,155,4, 196,28,248,22,81,193,20,14,159,37,36,37,28,248,22,81,248,22,75,194,248, 22,74,193,249,22,148,4,80,158,39,36,251,22,83,2,18,248,22,74,199,249, -22,73,2,10,248,22,75,201,11,18,100,10,13,16,5,36,2,14,2,2,11, +22,73,2,4,248,22,75,201,11,18,100,10,13,16,5,36,2,14,2,2,11, 11,8,32,8,31,8,30,8,29,16,4,11,11,2,20,3,1,8,101,110,118, -49,52,55,51,57,16,4,11,11,2,21,3,1,8,101,110,118,49,52,55,52, -48,27,248,22,75,248,22,155,4,196,28,248,22,81,193,20,14,159,37,36,37, +49,52,57,55,48,16,4,11,11,2,21,3,1,8,101,110,118,49,52,57,55, +49,27,248,22,75,248,22,155,4,196,28,248,22,81,193,20,14,159,37,36,37, 28,248,22,81,248,22,75,194,248,22,74,193,249,22,148,4,80,158,39,36,250, 22,83,2,22,248,22,83,249,22,83,248,22,83,2,23,248,22,74,201,251,22, -83,2,18,2,23,2,23,249,22,73,2,12,248,22,75,204,18,100,11,13,16, +83,2,18,2,23,2,23,249,22,73,2,6,248,22,75,204,18,100,11,13,16, 5,36,2,14,2,2,11,11,8,32,8,31,8,30,8,29,16,4,11,11,2, -20,3,1,8,101,110,118,49,52,55,52,50,16,4,11,11,2,21,3,1,8, -101,110,118,49,52,55,52,51,248,22,155,4,193,27,248,22,155,4,194,249,22, +20,3,1,8,101,110,118,49,52,57,55,51,16,4,11,11,2,21,3,1,8, +101,110,118,49,52,57,55,52,248,22,155,4,193,27,248,22,155,4,194,249,22, 73,248,22,83,248,22,74,196,248,22,75,195,27,248,22,75,248,22,155,4,23, 197,1,249,22,148,4,80,158,39,36,28,248,22,58,248,22,149,4,248,22,74, 23,198,2,27,249,22,2,32,0,88,163,8,36,37,43,11,9,222,33,40,248, @@ -51,7 +51,7 @@ 88,163,8,36,37,47,11,9,222,33,43,248,22,155,4,248,22,74,201,248,22, 75,198,27,248,22,75,248,22,155,4,196,27,248,22,155,4,248,22,74,195,249, 22,148,4,80,158,40,36,28,248,22,81,195,250,22,84,2,22,9,248,22,75, -199,250,22,83,2,3,248,22,83,248,22,74,199,250,22,84,2,9,248,22,75, +199,250,22,83,2,11,248,22,83,248,22,74,199,250,22,84,2,5,248,22,75, 201,248,22,75,202,27,248,22,75,248,22,155,4,23,197,1,27,249,22,1,22, 87,249,22,2,22,155,4,248,22,155,4,248,22,74,199,248,22,175,4,249,22, 148,4,80,158,41,36,251,22,83,1,22,119,105,116,104,45,99,111,110,116,105, @@ -62,13 +62,13 @@ 22,75,204,27,248,22,75,248,22,155,4,196,28,248,22,81,193,20,14,159,37, 36,37,249,22,148,4,80,158,39,36,27,248,22,155,4,248,22,74,197,28,249, 22,141,9,62,61,62,248,22,149,4,248,22,98,196,250,22,83,2,22,248,22, -83,249,22,83,21,93,2,27,248,22,74,199,250,22,84,2,4,249,22,83,2, +83,249,22,83,21,93,2,27,248,22,74,199,250,22,84,2,7,249,22,83,2, 27,249,22,83,248,22,107,203,2,27,248,22,75,202,251,22,83,2,18,28,249, 22,141,9,248,22,149,4,248,22,74,200,64,101,108,115,101,10,248,22,74,197, -250,22,84,2,22,9,248,22,75,200,249,22,73,2,4,248,22,75,202,99,13, +250,22,84,2,22,9,248,22,75,200,249,22,73,2,7,248,22,75,202,99,13, 16,5,36,2,14,2,2,11,11,8,32,8,31,8,30,8,29,16,4,11,11, -2,20,3,1,8,101,110,118,49,52,55,54,53,16,4,11,11,2,21,3,1, -8,101,110,118,49,52,55,54,54,18,158,94,10,64,118,111,105,100,8,48,27, +2,20,3,1,8,101,110,118,49,52,57,57,54,16,4,11,11,2,21,3,1, +8,101,110,118,49,52,57,57,55,18,158,94,10,64,118,111,105,100,8,48,27, 248,22,75,248,22,155,4,196,249,22,148,4,80,158,39,36,28,248,22,58,248, 22,149,4,248,22,74,197,250,22,83,2,28,248,22,83,248,22,74,199,248,22, 98,198,27,248,22,149,4,248,22,74,197,250,22,83,2,28,248,22,83,248,22, @@ -81,25 +81,25 @@ 16,1,2,13,37,11,11,11,16,0,16,0,16,0,36,36,11,12,11,11,16, 0,16,0,16,0,36,36,16,11,16,5,11,20,15,16,2,20,14,159,36,36, 37,80,158,36,36,36,20,112,159,36,16,1,2,13,16,1,33,33,10,16,5, -2,5,88,163,8,36,37,53,37,9,223,0,33,34,36,20,112,159,36,16,1, -2,13,16,0,11,16,5,2,8,88,163,8,36,37,53,37,9,223,0,33,35, -36,20,112,159,36,16,1,2,13,16,0,11,16,5,2,10,88,163,8,36,37, +2,10,88,163,8,36,37,53,37,9,223,0,33,34,36,20,112,159,36,16,1, +2,13,16,0,11,16,5,2,12,88,163,8,36,37,53,37,9,223,0,33,35, +36,20,112,159,36,16,1,2,13,16,0,11,16,5,2,4,88,163,8,36,37, 53,37,9,223,0,33,36,36,20,112,159,36,16,1,2,13,16,1,33,37,11, -16,5,2,12,88,163,8,36,37,56,37,9,223,0,33,38,36,20,112,159,36, -16,1,2,13,16,1,33,39,11,16,5,2,3,88,163,8,36,37,58,37,9, -223,0,33,42,36,20,112,159,36,16,1,2,13,16,0,11,16,5,2,11,88, +16,5,2,6,88,163,8,36,37,56,37,9,223,0,33,38,36,20,112,159,36, +16,1,2,13,16,1,33,39,11,16,5,2,11,88,163,8,36,37,58,37,9, +223,0,33,42,36,20,112,159,36,16,1,2,13,16,0,11,16,5,2,9,88, 163,8,36,37,53,37,9,223,0,33,44,36,20,112,159,36,16,1,2,13,16, -0,11,16,5,2,9,88,163,8,36,37,54,37,9,223,0,33,45,36,20,112, -159,36,16,1,2,13,16,0,11,16,5,2,6,88,163,8,36,37,56,37,9, -223,0,33,46,36,20,112,159,36,16,1,2,13,16,0,11,16,5,2,4,88, +0,11,16,5,2,5,88,163,8,36,37,54,37,9,223,0,33,45,36,20,112, +159,36,16,1,2,13,16,0,11,16,5,2,8,88,163,8,36,37,56,37,9, +223,0,33,46,36,20,112,159,36,16,1,2,13,16,0,11,16,5,2,7,88, 163,8,36,37,58,37,9,223,0,33,47,36,20,112,159,36,16,1,2,13,16, -1,33,49,11,16,5,2,7,88,163,8,36,37,54,37,9,223,0,33,50,36, +1,33,49,11,16,5,2,3,88,163,8,36,37,54,37,9,223,0,33,50,36, 20,112,159,36,16,1,2,13,16,0,11,16,0,94,2,16,2,17,93,2,16, 9,9,36,0}; EVAL_ONE_SIZED_STR((char *)expr, 2019); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,49,46,51,46,49,48,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,49,46,51,46,49,49,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,109,0,0,0,1,0,0,8,0,21,0, 26,0,43,0,65,0,94,0,109,0,127,0,143,0,157,0,179,0,195,0,212, 0,234,0,245,0,251,0,4,1,11,1,18,1,30,1,46,1,70,1,102,1, @@ -150,187 +150,187 @@ 11,11,80,76,84,67,79,76,76,69,67,84,83,6,0,0,6,0,0,69,97, 100,100,111,110,45,100,105,114,6,8,8,99,111,108,108,101,99,116,115,27,20, 13,159,80,159,37,51,37,250,80,159,40,52,37,249,22,27,11,80,159,42,51, -37,22,187,13,10,248,22,191,5,23,196,2,28,248,22,190,6,23,194,2,12, +37,22,131,14,10,248,22,191,5,23,196,2,28,248,22,190,6,23,194,2,12, 86,94,248,22,149,9,23,194,1,27,20,13,159,80,159,38,51,37,250,80,159, -41,52,37,249,22,27,11,80,159,43,51,37,22,187,13,10,248,22,191,5,23, +41,52,37,249,22,27,11,80,159,43,51,37,22,131,14,10,248,22,191,5,23, 197,2,28,248,22,190,6,23,194,2,12,86,94,248,22,149,9,23,194,1,27, 20,13,159,80,159,39,51,37,250,80,159,42,52,37,249,22,27,11,80,159,44, -51,37,22,187,13,10,248,22,191,5,23,198,2,28,248,22,190,6,23,194,2, +51,37,22,131,14,10,248,22,191,5,23,198,2,28,248,22,190,6,23,194,2, 12,86,94,248,22,149,9,23,194,1,248,80,159,40,8,31,39,197,28,248,22, -81,23,195,2,9,27,248,22,74,23,196,2,27,28,248,22,173,14,23,195,2, -23,194,1,28,248,22,172,14,23,195,2,249,22,174,14,23,196,1,250,80,159, -43,39,39,248,22,189,14,2,31,11,10,250,80,159,41,39,39,248,22,189,14, -2,31,23,197,1,10,28,23,193,2,249,22,73,248,22,176,14,249,22,174,14, -23,198,1,247,22,190,14,27,248,22,75,23,200,1,28,248,22,81,23,194,2, -9,27,248,22,74,23,195,2,27,28,248,22,173,14,23,195,2,23,194,1,28, -248,22,172,14,23,195,2,249,22,174,14,23,196,1,250,80,159,48,39,39,248, -22,189,14,2,31,11,10,250,80,159,46,39,39,248,22,189,14,2,31,23,197, -1,10,28,23,193,2,249,22,73,248,22,176,14,249,22,174,14,23,198,1,247, -22,190,14,248,80,159,46,8,30,39,248,22,75,23,199,1,86,94,23,193,1, +81,23,195,2,9,27,248,22,74,23,196,2,27,28,248,22,181,14,23,195,2, +23,194,1,28,248,22,180,14,23,195,2,249,22,182,14,23,196,1,250,80,159, +43,39,39,248,22,133,15,2,31,11,10,250,80,159,41,39,39,248,22,133,15, +2,31,23,197,1,10,28,23,193,2,249,22,73,248,22,184,14,249,22,182,14, +23,198,1,247,22,134,15,27,248,22,75,23,200,1,28,248,22,81,23,194,2, +9,27,248,22,74,23,195,2,27,28,248,22,181,14,23,195,2,23,194,1,28, +248,22,180,14,23,195,2,249,22,182,14,23,196,1,250,80,159,48,39,39,248, +22,133,15,2,31,11,10,250,80,159,46,39,39,248,22,133,15,2,31,23,197, +1,10,28,23,193,2,249,22,73,248,22,184,14,249,22,182,14,23,198,1,247, +22,134,15,248,80,159,46,8,30,39,248,22,75,23,199,1,86,94,23,193,1, 248,80,159,44,8,30,39,248,22,75,23,197,1,86,94,23,193,1,27,248,22, 75,23,198,1,28,248,22,81,23,194,2,9,27,248,22,74,23,195,2,27,28, -248,22,173,14,23,195,2,23,194,1,28,248,22,172,14,23,195,2,249,22,174, -14,23,196,1,250,80,159,46,39,39,248,22,189,14,2,31,11,10,250,80,159, -44,39,39,248,22,189,14,2,31,23,197,1,10,28,23,193,2,249,22,73,248, -22,176,14,249,22,174,14,23,198,1,247,22,190,14,248,80,159,44,8,30,39, +248,22,181,14,23,195,2,23,194,1,28,248,22,180,14,23,195,2,249,22,182, +14,23,196,1,250,80,159,46,39,39,248,22,133,15,2,31,11,10,250,80,159, +44,39,39,248,22,133,15,2,31,23,197,1,10,28,23,193,2,249,22,73,248, +22,184,14,249,22,182,14,23,198,1,247,22,134,15,248,80,159,44,8,30,39, 248,22,75,23,199,1,248,80,159,42,8,30,39,248,22,75,196,28,248,22,81, -23,195,2,9,27,248,22,74,23,196,2,27,28,248,22,173,14,23,195,2,23, -194,1,28,248,22,172,14,23,195,2,249,22,174,14,23,196,1,250,80,159,43, -39,39,248,22,189,14,2,31,11,10,250,80,159,41,39,39,248,22,189,14,2, -31,23,197,1,10,28,23,193,2,249,22,73,248,22,176,14,249,22,174,14,23, -198,1,247,22,190,14,248,80,159,41,8,29,39,248,22,75,23,200,1,248,80, +23,195,2,9,27,248,22,74,23,196,2,27,28,248,22,181,14,23,195,2,23, +194,1,28,248,22,180,14,23,195,2,249,22,182,14,23,196,1,250,80,159,43, +39,39,248,22,133,15,2,31,11,10,250,80,159,41,39,39,248,22,133,15,2, +31,23,197,1,10,28,23,193,2,249,22,73,248,22,184,14,249,22,182,14,23, +198,1,247,22,134,15,248,80,159,41,8,29,39,248,22,75,23,200,1,248,80, 159,39,8,29,39,248,22,75,197,28,248,22,81,23,195,2,9,27,248,22,74, -23,196,2,27,28,248,22,173,14,23,195,2,23,194,1,28,248,22,172,14,23, -195,2,249,22,174,14,23,196,1,250,80,159,43,39,39,248,22,189,14,2,31, -11,10,250,80,159,41,39,39,248,22,189,14,2,31,23,197,1,10,28,23,193, -2,249,22,73,248,22,176,14,249,22,174,14,23,198,1,247,22,190,14,248,80, +23,196,2,27,28,248,22,181,14,23,195,2,23,194,1,28,248,22,180,14,23, +195,2,249,22,182,14,23,196,1,250,80,159,43,39,39,248,22,133,15,2,31, +11,10,250,80,159,41,39,39,248,22,133,15,2,31,23,197,1,10,28,23,193, +2,249,22,73,248,22,184,14,249,22,182,14,23,198,1,247,22,134,15,248,80, 159,41,8,28,39,248,22,75,23,200,1,248,80,159,39,8,28,39,248,22,75, -197,27,248,22,149,14,23,195,2,28,23,193,2,192,86,94,23,193,1,28,248, -22,131,7,23,195,2,27,248,22,171,14,195,28,192,192,248,22,172,14,195,11, -86,94,28,28,248,22,150,14,23,195,2,10,28,248,22,149,14,23,195,2,10, -28,248,22,131,7,23,195,2,28,248,22,171,14,23,195,2,10,248,22,172,14, +197,27,248,22,157,14,23,195,2,28,23,193,2,192,86,94,23,193,1,28,248, +22,131,7,23,195,2,27,248,22,179,14,195,28,192,192,248,22,180,14,195,11, +86,94,28,28,248,22,158,14,23,195,2,10,28,248,22,157,14,23,195,2,10, +28,248,22,131,7,23,195,2,28,248,22,179,14,23,195,2,10,248,22,180,14, 23,195,2,11,12,250,22,177,9,76,110,111,114,109,97,108,45,112,97,116,104, 45,99,97,115,101,6,42,42,112,97,116,104,32,40,102,111,114,32,97,110,121, 32,115,121,115,116,101,109,41,32,111,114,32,118,97,108,105,100,45,112,97,116, -104,32,115,116,114,105,110,103,23,197,2,28,28,248,22,150,14,23,195,2,249, -22,141,9,248,22,151,14,23,197,2,2,32,249,22,141,9,247,22,153,8,2, -32,27,28,248,22,131,7,23,196,2,23,195,2,248,22,143,8,248,22,154,14, -23,197,2,28,249,22,141,15,0,21,35,114,120,34,94,91,92,92,93,91,92, +104,32,115,116,114,105,110,103,23,197,2,28,28,248,22,158,14,23,195,2,249, +22,141,9,248,22,159,14,23,197,2,2,32,249,22,141,9,247,22,153,8,2, +32,27,28,248,22,131,7,23,196,2,23,195,2,248,22,143,8,248,22,162,14, +23,197,2,28,249,22,149,15,0,21,35,114,120,34,94,91,92,92,93,91,92, 92,93,91,63,93,91,92,92,93,34,23,195,2,28,248,22,131,7,195,248,22, -157,14,195,194,27,248,22,170,7,23,195,1,249,22,158,14,248,22,146,8,250, -22,149,15,0,6,35,114,120,34,47,34,28,249,22,141,15,0,22,35,114,120, +165,14,195,194,27,248,22,170,7,23,195,1,249,22,166,14,248,22,146,8,250, +22,157,15,0,6,35,114,120,34,47,34,28,249,22,149,15,0,22,35,114,120, 34,91,47,92,92,93,91,46,32,93,43,91,47,92,92,93,42,36,34,23,201, -2,23,199,1,250,22,149,15,0,19,35,114,120,34,91,32,46,93,43,40,91, +2,23,199,1,250,22,157,15,0,19,35,114,120,34,91,32,46,93,43,40,91, 47,92,92,93,42,41,36,34,23,202,1,6,2,2,92,49,80,159,44,37,38, -2,32,28,248,22,131,7,194,248,22,157,14,194,193,32,56,88,163,8,36,39, +2,32,28,248,22,131,7,194,248,22,165,14,194,193,32,56,88,163,8,36,39, 53,11,70,102,111,117,110,100,45,101,120,101,99,222,33,59,32,57,88,163,8, -36,40,58,11,64,110,101,120,116,222,33,58,27,248,22,175,14,23,196,2,28, -249,22,143,9,23,195,2,23,197,1,11,28,248,22,171,14,23,194,2,27,249, -22,167,14,23,197,1,23,196,1,28,23,197,2,90,159,39,11,89,161,39,36, -11,248,22,170,14,23,197,2,86,95,23,195,1,23,194,1,27,28,23,202,2, -27,248,22,175,14,23,199,2,28,249,22,143,9,23,195,2,23,200,2,11,28, -248,22,171,14,23,194,2,250,2,56,23,205,2,23,206,2,249,22,167,14,23, +36,40,58,11,64,110,101,120,116,222,33,58,27,248,22,183,14,23,196,2,28, +249,22,143,9,23,195,2,23,197,1,11,28,248,22,179,14,23,194,2,27,249, +22,175,14,23,197,1,23,196,1,28,23,197,2,90,159,39,11,89,161,39,36, +11,248,22,178,14,23,197,2,86,95,23,195,1,23,194,1,27,28,23,202,2, +27,248,22,183,14,23,199,2,28,249,22,143,9,23,195,2,23,200,2,11,28, +248,22,179,14,23,194,2,250,2,56,23,205,2,23,206,2,249,22,175,14,23, 200,2,23,198,1,250,2,56,23,205,2,23,206,2,23,196,1,11,28,23,193, -2,192,86,94,23,193,1,27,28,248,22,149,14,23,196,2,27,249,22,167,14, -23,198,2,23,205,2,28,28,248,22,162,14,193,10,248,22,161,14,193,192,11, -11,28,23,193,2,192,86,94,23,193,1,28,23,203,2,11,27,248,22,175,14, -23,200,2,28,249,22,143,9,23,195,2,23,201,1,11,28,248,22,171,14,23, -194,2,250,2,56,23,206,1,23,207,1,249,22,167,14,23,201,1,23,198,1, +2,192,86,94,23,193,1,27,28,248,22,157,14,23,196,2,27,249,22,175,14, +23,198,2,23,205,2,28,28,248,22,170,14,193,10,248,22,169,14,193,192,11, +11,28,23,193,2,192,86,94,23,193,1,28,23,203,2,11,27,248,22,183,14, +23,200,2,28,249,22,143,9,23,195,2,23,201,1,11,28,248,22,179,14,23, +194,2,250,2,56,23,206,1,23,207,1,249,22,175,14,23,201,1,23,198,1, 250,2,56,205,206,195,192,86,94,23,194,1,28,23,196,2,90,159,39,11,89, -161,39,36,11,248,22,170,14,23,197,2,86,95,23,195,1,23,194,1,27,28, -23,201,2,27,248,22,175,14,23,199,2,28,249,22,143,9,23,195,2,23,200, -2,11,28,248,22,171,14,23,194,2,250,2,56,23,204,2,23,205,2,249,22, -167,14,23,200,2,23,198,1,250,2,56,23,204,2,23,205,2,23,196,1,11, -28,23,193,2,192,86,94,23,193,1,27,28,248,22,149,14,23,196,2,27,249, -22,167,14,23,198,2,23,204,2,28,28,248,22,162,14,193,10,248,22,161,14, +161,39,36,11,248,22,178,14,23,197,2,86,95,23,195,1,23,194,1,27,28, +23,201,2,27,248,22,183,14,23,199,2,28,249,22,143,9,23,195,2,23,200, +2,11,28,248,22,179,14,23,194,2,250,2,56,23,204,2,23,205,2,249,22, +175,14,23,200,2,23,198,1,250,2,56,23,204,2,23,205,2,23,196,1,11, +28,23,193,2,192,86,94,23,193,1,27,28,248,22,157,14,23,196,2,27,249, +22,175,14,23,198,2,23,204,2,28,28,248,22,170,14,193,10,248,22,169,14, 193,192,11,11,28,23,193,2,192,86,94,23,193,1,28,23,202,2,11,27,248, -22,175,14,23,200,2,28,249,22,143,9,23,195,2,23,201,1,11,28,248,22, -171,14,23,194,2,250,2,56,23,205,1,23,206,1,249,22,167,14,23,201,1, +22,183,14,23,200,2,28,249,22,143,9,23,195,2,23,201,1,11,28,248,22, +179,14,23,194,2,250,2,56,23,205,1,23,206,1,249,22,175,14,23,201,1, 23,198,1,250,2,56,204,205,195,192,28,23,193,2,90,159,39,11,89,161,39, -36,11,248,22,170,14,23,199,2,86,95,23,195,1,23,194,1,27,28,23,198, +36,11,248,22,178,14,23,199,2,86,95,23,195,1,23,194,1,27,28,23,198, 2,251,2,57,23,198,2,23,203,2,23,201,2,23,202,2,11,28,23,193,2, -192,86,94,23,193,1,27,28,248,22,149,14,195,27,249,22,167,14,197,200,28, -28,248,22,162,14,193,10,248,22,161,14,193,192,11,11,28,192,192,28,198,11, +192,86,94,23,193,1,27,28,248,22,157,14,195,27,249,22,175,14,197,200,28, +28,248,22,170,14,193,10,248,22,169,14,193,192,11,11,28,192,192,28,198,11, 251,2,57,198,203,201,202,194,32,60,88,163,8,36,40,58,11,2,30,222,33, -61,28,248,22,81,23,197,2,11,27,248,22,174,14,248,22,74,23,199,2,27, -249,22,167,14,23,196,1,23,197,2,28,248,22,161,14,23,194,2,250,2,56, +61,28,248,22,81,23,197,2,11,27,248,22,182,14,248,22,74,23,199,2,27, +249,22,175,14,23,196,1,23,197,2,28,248,22,169,14,23,194,2,250,2,56, 198,199,195,86,94,23,193,1,27,248,22,75,23,200,1,28,248,22,81,23,194, -2,11,27,248,22,174,14,248,22,74,23,196,2,27,249,22,167,14,23,196,1, -23,200,2,28,248,22,161,14,23,194,2,250,2,56,201,202,195,86,94,23,193, -1,27,248,22,75,23,197,1,28,248,22,81,23,194,2,11,27,248,22,174,14, -248,22,74,195,27,249,22,167,14,23,196,1,202,28,248,22,161,14,193,250,2, -56,204,205,195,251,2,60,204,205,206,248,22,75,199,86,95,28,28,248,22,149, -14,23,195,2,10,28,248,22,131,7,23,195,2,28,248,22,171,14,23,195,2, -10,248,22,172,14,23,195,2,11,12,250,22,177,9,2,5,6,25,25,112,97, +2,11,27,248,22,182,14,248,22,74,23,196,2,27,249,22,175,14,23,196,1, +23,200,2,28,248,22,169,14,23,194,2,250,2,56,201,202,195,86,94,23,193, +1,27,248,22,75,23,197,1,28,248,22,81,23,194,2,11,27,248,22,182,14, +248,22,74,195,27,249,22,175,14,23,196,1,202,28,248,22,169,14,193,250,2, +56,204,205,195,251,2,60,204,205,206,248,22,75,199,86,95,28,28,248,22,157, +14,23,195,2,10,28,248,22,131,7,23,195,2,28,248,22,179,14,23,195,2, +10,248,22,180,14,23,195,2,11,12,250,22,177,9,2,5,6,25,25,112,97, 116,104,32,111,114,32,115,116,114,105,110,103,32,40,115,97,110,115,32,110,117, -108,41,23,197,2,28,28,23,195,2,28,28,248,22,149,14,23,196,2,10,28, -248,22,131,7,23,196,2,28,248,22,171,14,23,196,2,10,248,22,172,14,23, -196,2,11,248,22,171,14,23,196,2,11,10,12,250,22,177,9,2,5,6,29, +108,41,23,197,2,28,28,23,195,2,28,28,248,22,157,14,23,196,2,10,28, +248,22,131,7,23,196,2,28,248,22,179,14,23,196,2,10,248,22,180,14,23, +196,2,11,248,22,179,14,23,196,2,11,10,12,250,22,177,9,2,5,6,29, 29,35,102,32,111,114,32,114,101,108,97,116,105,118,101,32,112,97,116,104,32, -111,114,32,115,116,114,105,110,103,23,198,2,28,28,248,22,171,14,23,195,2, -90,159,39,11,89,161,39,36,11,248,22,170,14,23,198,2,249,22,141,9,194, +111,114,32,115,116,114,105,110,103,23,198,2,28,28,248,22,179,14,23,195,2, +90,159,39,11,89,161,39,36,11,248,22,178,14,23,198,2,249,22,141,9,194, 2,33,11,27,248,22,151,8,6,4,4,80,65,84,72,27,28,23,194,2,27, 249,80,158,41,40,23,197,1,9,28,249,22,141,9,247,22,153,8,2,32,249, -22,73,248,22,158,14,5,1,46,194,192,86,94,23,194,1,9,28,248,22,81, -23,194,2,11,27,248,22,174,14,248,22,74,23,196,2,27,249,22,167,14,23, -196,1,23,200,2,28,248,22,161,14,23,194,2,250,2,56,201,202,195,86,94, +22,73,248,22,166,14,5,1,46,194,192,86,94,23,194,1,9,28,248,22,81, +23,194,2,11,27,248,22,182,14,248,22,74,23,196,2,27,249,22,175,14,23, +196,1,23,200,2,28,248,22,169,14,23,194,2,250,2,56,201,202,195,86,94, 23,193,1,27,248,22,75,23,197,1,28,248,22,81,23,194,2,11,27,248,22, -174,14,248,22,74,23,196,2,27,249,22,167,14,23,196,1,23,203,2,28,248, -22,161,14,23,194,2,250,2,56,204,205,195,86,94,23,193,1,27,248,22,75, -23,197,1,28,248,22,81,23,194,2,11,27,248,22,174,14,248,22,74,195,27, -249,22,167,14,23,196,1,205,28,248,22,161,14,193,250,2,56,23,15,23,16, -195,251,2,60,23,15,23,16,23,17,248,22,75,199,27,248,22,174,14,23,196, -1,28,248,22,161,14,193,250,2,56,198,199,195,11,250,80,159,39,39,39,196, +182,14,248,22,74,23,196,2,27,249,22,175,14,23,196,1,23,203,2,28,248, +22,169,14,23,194,2,250,2,56,204,205,195,86,94,23,193,1,27,248,22,75, +23,197,1,28,248,22,81,23,194,2,11,27,248,22,182,14,248,22,74,195,27, +249,22,175,14,23,196,1,205,28,248,22,169,14,193,250,2,56,23,15,23,16, +195,251,2,60,23,15,23,16,23,17,248,22,75,199,27,248,22,182,14,23,196, +1,28,248,22,169,14,193,250,2,56,198,199,195,11,250,80,159,39,39,39,196, 197,11,250,80,159,39,39,39,196,11,11,32,65,88,163,8,36,39,57,11,2, -30,222,33,67,0,8,35,114,120,35,34,92,34,34,27,249,22,137,15,23,197, +30,222,33,67,0,8,35,114,120,35,34,92,34,34,27,249,22,145,15,23,197, 2,23,198,2,28,23,193,2,86,94,23,196,1,27,248,22,98,23,195,2,27, -27,248,22,107,23,197,1,27,249,22,137,15,23,201,2,23,196,2,28,23,193, +27,248,22,107,23,197,1,27,249,22,145,15,23,201,2,23,196,2,28,23,193, 2,86,94,23,194,1,27,248,22,98,23,195,2,27,250,2,65,23,203,2,23, 204,1,248,22,107,23,199,1,28,249,22,128,8,23,196,2,2,34,249,22,87, -23,202,2,194,249,22,73,248,22,158,14,28,249,22,141,9,247,22,153,8,2, -32,250,22,149,15,2,66,23,200,1,2,35,23,197,1,194,86,95,23,199,1, +23,202,2,194,249,22,73,248,22,166,14,28,249,22,141,9,247,22,153,8,2, +32,250,22,157,15,2,66,23,200,1,2,35,23,197,1,194,86,95,23,199,1, 23,193,1,28,249,22,128,8,23,196,2,2,34,249,22,87,23,200,2,9,249, -22,73,248,22,158,14,28,249,22,141,9,247,22,153,8,2,32,250,22,149,15, +22,73,248,22,166,14,28,249,22,141,9,247,22,153,8,2,32,250,22,157,15, 2,66,23,200,1,2,35,23,197,1,9,28,249,22,128,8,23,196,2,2,34, -249,22,87,197,194,86,94,23,196,1,249,22,73,248,22,158,14,28,249,22,141, -9,247,22,153,8,2,32,250,22,149,15,2,66,23,200,1,2,35,23,197,1, +249,22,87,197,194,86,94,23,196,1,249,22,73,248,22,166,14,28,249,22,141, +9,247,22,153,8,2,32,250,22,157,15,2,66,23,200,1,2,35,23,197,1, 194,86,94,23,193,1,28,249,22,128,8,23,198,2,2,34,249,22,87,195,9, -86,94,23,194,1,249,22,73,248,22,158,14,28,249,22,141,9,247,22,153,8, -2,32,250,22,149,15,2,66,23,202,1,2,35,23,199,1,9,86,95,28,28, +86,94,23,194,1,249,22,73,248,22,166,14,28,249,22,141,9,247,22,153,8, +2,32,250,22,157,15,2,66,23,202,1,2,35,23,199,1,9,86,95,28,28, 248,22,184,7,194,10,248,22,131,7,194,12,250,22,177,9,2,6,6,21,21, 98,121,116,101,32,115,116,114,105,110,103,32,111,114,32,115,116,114,105,110,103, -196,28,28,248,22,82,195,249,22,4,22,149,14,196,11,12,250,22,177,9,2, +196,28,28,248,22,82,195,249,22,4,22,157,14,196,11,12,250,22,177,9,2, 6,6,13,13,108,105,115,116,32,111,102,32,112,97,116,104,115,197,250,2,65, -197,195,28,248,22,131,7,197,248,22,145,8,197,196,86,94,28,28,248,22,149, -14,23,195,2,10,28,248,22,131,7,23,195,2,28,248,22,171,14,23,195,2, -10,248,22,172,14,23,195,2,11,12,250,22,177,9,23,196,2,2,36,23,197, -2,28,248,22,171,14,23,195,2,12,248,22,163,12,249,22,169,11,248,22,160, +197,195,28,248,22,131,7,197,248,22,145,8,197,196,86,94,28,28,248,22,157, +14,23,195,2,10,28,248,22,131,7,23,195,2,28,248,22,179,14,23,195,2, +10,248,22,180,14,23,195,2,11,12,250,22,177,9,23,196,2,2,36,23,197, +2,28,248,22,179,14,23,195,2,12,248,22,171,12,249,22,174,11,248,22,160, 7,250,22,179,7,2,37,23,200,1,23,201,1,247,22,23,86,94,28,28,248, -22,149,14,23,195,2,10,28,248,22,131,7,23,195,2,28,248,22,171,14,23, -195,2,10,248,22,172,14,23,195,2,11,12,250,22,177,9,23,196,2,2,36, -23,197,2,28,248,22,171,14,23,195,2,12,248,22,163,12,249,22,169,11,248, +22,157,14,23,195,2,10,28,248,22,131,7,23,195,2,28,248,22,179,14,23, +195,2,10,248,22,180,14,23,195,2,11,12,250,22,177,9,23,196,2,2,36, +23,197,2,28,248,22,179,14,23,195,2,12,248,22,171,12,249,22,174,11,248, 22,160,7,250,22,179,7,2,37,23,200,1,23,201,1,247,22,23,86,94,86, -94,28,28,248,22,149,14,23,195,2,10,28,248,22,131,7,23,195,2,28,248, -22,171,14,23,195,2,10,248,22,172,14,23,195,2,11,12,250,22,177,9,195, -2,36,23,197,2,28,248,22,171,14,23,195,2,12,248,22,163,12,249,22,169, +94,28,28,248,22,157,14,23,195,2,10,28,248,22,131,7,23,195,2,28,248, +22,179,14,23,195,2,10,248,22,180,14,23,195,2,11,12,250,22,177,9,195, +2,36,23,197,2,28,248,22,179,14,23,195,2,12,248,22,171,12,249,22,174, 11,248,22,160,7,250,22,179,7,2,37,199,23,201,1,247,22,23,249,22,3, -88,163,8,36,37,50,11,9,223,2,33,70,196,86,94,28,28,248,22,149,14, -23,194,2,10,28,248,22,131,7,23,194,2,28,248,22,171,14,23,194,2,10, -248,22,172,14,23,194,2,11,12,250,22,177,9,2,9,2,36,23,196,2,28, -248,22,171,14,23,194,2,12,248,22,163,12,249,22,169,11,248,22,160,7,250, -22,179,7,2,37,2,9,23,200,1,247,22,23,248,22,163,12,249,22,138,12, -23,196,1,247,22,23,86,94,86,94,86,94,28,28,248,22,149,14,194,10,28, -248,22,131,7,194,28,248,22,171,14,194,10,248,22,172,14,194,11,12,250,22, -177,9,2,9,2,36,196,28,248,22,171,14,194,12,248,22,163,12,249,22,169, +88,163,8,36,37,50,11,9,223,2,33,70,196,86,94,28,28,248,22,157,14, +23,194,2,10,28,248,22,131,7,23,194,2,28,248,22,179,14,23,194,2,10, +248,22,180,14,23,194,2,11,12,250,22,177,9,2,9,2,36,23,196,2,28, +248,22,179,14,23,194,2,12,248,22,171,12,249,22,174,11,248,22,160,7,250, +22,179,7,2,37,2,9,23,200,1,247,22,23,248,22,171,12,249,22,146,12, +23,196,1,247,22,23,86,94,86,94,86,94,28,28,248,22,157,14,194,10,28, +248,22,131,7,194,28,248,22,179,14,194,10,248,22,180,14,194,11,12,250,22, +177,9,2,9,2,36,196,28,248,22,179,14,194,12,248,22,171,12,249,22,174, 11,248,22,160,7,250,22,179,7,2,37,2,9,200,247,22,23,249,22,3,32, 0,88,163,8,36,37,49,11,9,222,33,72,196,252,80,158,41,44,2,9,32, 0,88,163,8,36,37,45,11,9,222,33,73,198,199,11,86,94,28,28,248,22, -149,14,23,194,2,10,28,248,22,131,7,23,194,2,28,248,22,171,14,23,194, -2,10,248,22,172,14,23,194,2,11,12,250,22,177,9,2,11,2,36,23,196, -2,28,248,22,171,14,23,194,2,12,248,22,163,12,249,22,169,11,248,22,160, -7,250,22,179,7,2,37,2,11,23,200,1,247,22,23,248,22,163,12,249,22, -138,12,23,196,1,247,22,23,86,95,86,94,28,28,248,22,149,14,194,10,28, -248,22,131,7,194,28,248,22,171,14,194,10,248,22,172,14,194,11,12,250,22, -177,9,2,11,2,36,196,28,248,22,171,14,194,12,248,22,163,12,249,22,169, +157,14,23,194,2,10,28,248,22,131,7,23,194,2,28,248,22,179,14,23,194, +2,10,248,22,180,14,23,194,2,11,12,250,22,177,9,2,11,2,36,23,196, +2,28,248,22,179,14,23,194,2,12,248,22,171,12,249,22,174,11,248,22,160, +7,250,22,179,7,2,37,2,11,23,200,1,247,22,23,248,22,171,12,249,22, +146,12,23,196,1,247,22,23,86,95,86,94,28,28,248,22,157,14,194,10,28, +248,22,131,7,194,28,248,22,179,14,194,10,248,22,180,14,194,11,12,250,22, +177,9,2,11,2,36,196,28,248,22,179,14,194,12,248,22,171,12,249,22,174, 11,248,22,160,7,250,22,179,7,2,37,2,11,200,247,22,23,86,94,86,94, -28,28,248,22,149,14,23,196,2,10,28,248,22,131,7,23,196,2,28,248,22, -171,14,23,196,2,10,248,22,172,14,23,196,2,11,12,250,22,177,9,2,11, -2,36,23,198,2,28,248,22,171,14,23,196,2,12,248,22,163,12,249,22,169, +28,28,248,22,157,14,23,196,2,10,28,248,22,131,7,23,196,2,28,248,22, +179,14,23,196,2,10,248,22,180,14,23,196,2,11,12,250,22,177,9,2,11, +2,36,23,198,2,28,248,22,179,14,23,196,2,12,248,22,171,12,249,22,174, 11,248,22,160,7,250,22,179,7,2,37,2,11,23,202,2,247,22,23,249,22, -3,32,0,88,163,8,36,37,49,11,9,222,33,75,23,198,2,249,22,167,14, +3,32,0,88,163,8,36,37,49,11,9,222,33,75,23,198,2,249,22,175,14, 252,80,158,43,44,2,11,32,0,88,163,8,36,37,45,11,9,222,33,76,23, -202,1,23,203,1,200,195,0,6,45,105,110,102,46,48,27,248,22,189,14,2, -38,27,28,248,22,172,14,23,195,2,193,20,13,159,80,159,38,51,37,250,80, -159,41,52,37,249,22,27,11,80,159,43,51,37,22,190,14,248,22,189,14,68, -111,114,105,103,45,100,105,114,27,248,22,189,14,2,31,250,80,159,42,39,39, -23,196,1,23,198,1,11,28,192,250,22,167,14,195,6,6,6,99,111,110,102, +202,1,23,203,1,200,195,0,6,45,105,110,102,46,48,27,248,22,133,15,2, +38,27,28,248,22,180,14,23,195,2,193,20,13,159,80,159,38,51,37,250,80, +159,41,52,37,249,22,27,11,80,159,43,51,37,22,134,15,248,22,133,15,68, +111,114,105,103,45,100,105,114,27,248,22,133,15,2,31,250,80,159,42,39,39, +23,196,1,23,198,1,11,28,192,250,22,175,14,195,6,6,6,99,111,110,102, 105,103,6,10,10,108,105,110,107,115,46,114,107,116,100,11,86,94,27,247,22, 132,10,28,249,22,189,9,23,195,2,2,39,251,22,128,10,23,197,1,2,39, 250,22,179,7,2,40,28,23,202,1,80,159,46,46,38,80,159,46,49,38,248, -22,161,11,23,205,1,247,22,23,12,248,193,247,22,133,2,2,78,86,95,27, +22,166,11,23,205,1,247,22,23,12,248,193,247,22,133,2,2,78,86,95,27, 247,22,132,10,28,249,22,189,9,23,195,2,2,39,251,22,128,10,23,197,1, 2,39,250,22,179,7,2,40,28,202,80,159,47,46,38,80,159,47,49,38,248, -22,161,11,23,206,1,247,22,23,12,28,192,28,194,86,94,20,18,159,11,80, +22,166,11,23,206,1,247,22,23,12,28,192,28,194,86,94,20,18,159,11,80, 158,39,47,247,22,133,2,20,18,159,11,80,158,39,48,192,86,94,20,18,159, 11,80,158,39,53,247,22,133,2,20,18,159,11,80,158,39,54,192,12,248,194, 247,22,133,2,20,20,94,248,22,191,5,23,194,2,28,248,22,190,6,248,22, @@ -339,62 +339,62 @@ 110,248,22,179,5,193,28,248,22,82,23,194,2,28,28,249,22,184,3,38,248, 22,86,23,196,2,10,249,22,184,3,39,248,22,86,23,196,2,28,28,248,22, 131,7,248,22,74,23,195,2,10,249,22,141,9,64,114,111,111,116,248,22,74, -23,196,2,28,27,248,22,98,194,28,248,22,149,14,23,194,2,10,28,248,22, -131,7,23,194,2,28,248,22,171,14,23,194,2,10,248,22,172,14,23,194,1, -11,27,248,22,81,248,22,100,195,28,192,192,248,22,150,15,248,22,107,195,11, +23,196,2,28,27,248,22,98,194,28,248,22,157,14,23,194,2,10,28,248,22, +131,7,23,194,2,28,248,22,179,14,23,194,2,10,248,22,180,14,23,194,1, +11,27,248,22,81,248,22,100,195,28,192,192,248,22,158,15,248,22,107,195,11, 11,11,11,250,22,151,2,196,197,249,22,73,197,200,28,28,248,22,81,248,22, -100,23,197,2,10,249,22,141,15,248,22,107,23,198,2,247,22,149,8,27,248, -22,176,14,249,22,174,14,248,22,98,23,200,2,23,198,1,28,248,22,58,248, +100,23,197,2,10,249,22,149,15,248,22,107,23,198,2,247,22,149,8,27,248, +22,184,14,249,22,182,14,248,22,98,23,200,2,23,198,1,28,248,22,58,248, 22,74,23,198,2,86,94,23,196,1,86,94,28,250,22,153,2,196,11,11,12, 250,22,151,2,196,11,9,249,22,157,2,195,88,163,8,36,38,50,11,9,224, 3,2,33,86,27,248,22,61,248,22,74,23,199,1,250,22,151,2,23,198,2, 23,196,2,249,22,73,248,22,125,23,200,1,250,22,153,2,23,203,1,23,201, 1,9,12,250,22,151,2,195,196,248,22,88,198,20,13,159,80,159,37,56,37, -88,163,36,37,54,8,128,144,9,225,1,0,2,33,80,27,250,22,184,14,28, +88,163,36,37,54,8,128,144,9,225,1,0,2,33,80,27,250,22,128,15,28, 23,197,2,80,159,41,46,38,80,159,41,49,38,11,32,0,88,163,8,36,36, 41,11,9,222,33,81,28,249,22,186,3,23,195,2,28,23,196,2,80,158,40, 48,80,158,40,54,20,13,159,80,159,38,56,37,20,20,94,88,163,36,37,55, 8,240,0,60,6,0,9,226,2,1,3,0,33,82,23,196,1,20,13,159,80, 159,38,51,37,26,29,80,159,8,31,52,37,249,22,27,11,80,159,8,33,51, -37,22,183,13,10,22,184,13,10,22,185,13,10,22,188,13,10,22,187,13,10, -22,189,13,10,22,186,13,10,22,190,13,10,22,191,13,10,22,128,14,10,22, -129,14,10,22,130,14,10,22,131,14,11,22,181,13,11,27,249,22,170,5,28, +37,22,191,13,10,22,128,14,10,22,129,14,10,22,132,14,10,22,131,14,10, +22,133,14,10,22,130,14,10,22,134,14,10,22,135,14,10,22,136,14,10,22, +137,14,10,22,138,14,10,22,139,14,11,22,189,13,11,27,249,22,170,5,28, 196,80,159,41,46,38,80,159,41,49,38,66,98,105,110,97,114,121,27,250,22, 40,22,31,88,163,8,36,36,44,11,9,223,4,33,83,20,20,94,88,163,36, 36,43,11,9,223,4,33,84,23,197,1,86,94,28,28,248,22,82,23,194,2, 249,22,4,32,0,88,163,8,36,37,45,11,9,222,33,85,23,195,2,11,12, 248,22,174,9,6,18,18,105,108,108,45,102,111,114,109,101,100,32,99,111,110, 116,101,110,116,27,247,22,133,2,27,90,159,39,11,89,161,39,36,11,248,22, -170,14,28,201,80,159,46,46,38,80,159,46,49,38,192,86,96,249,22,3,20, +178,14,28,201,80,159,46,46,38,80,159,46,49,38,192,86,96,249,22,3,20, 20,94,88,163,8,36,37,54,11,9,224,2,3,33,87,23,195,1,23,197,1, 249,22,157,2,195,88,163,8,36,38,48,11,9,223,3,33,88,28,197,86,94, 20,18,159,11,80,158,42,47,193,20,18,159,11,80,158,42,48,196,86,94,20, 18,159,11,80,158,42,53,193,20,18,159,11,80,158,42,54,196,193,28,193,80, 158,38,47,80,158,38,53,248,22,9,88,163,8,32,37,8,40,8,240,0,188, 23,0,9,224,1,2,33,89,0,7,35,114,120,34,47,43,34,28,248,22,131, -7,23,195,2,27,249,22,139,15,2,91,196,28,192,28,249,22,184,3,248,22, +7,23,195,2,27,249,22,147,15,2,91,196,28,192,28,249,22,184,3,248,22, 97,195,248,22,174,3,248,22,134,7,198,249,22,7,250,22,153,7,199,36,248, 22,97,198,197,249,22,7,250,22,153,7,199,36,248,22,97,198,249,22,73,249, 22,153,7,200,248,22,99,199,199,249,22,7,196,197,90,159,39,11,89,161,39, -36,11,248,22,170,14,23,198,1,86,94,23,195,1,28,249,22,141,9,23,195, +36,11,248,22,178,14,23,198,1,86,94,23,195,1,28,249,22,141,9,23,195, 2,2,33,249,22,7,195,199,27,249,22,73,23,197,1,23,201,1,28,248,22, -131,7,23,195,2,27,249,22,139,15,2,91,196,28,192,28,249,22,184,3,248, +131,7,23,195,2,27,249,22,147,15,2,91,196,28,192,28,249,22,184,3,248, 22,97,195,248,22,174,3,248,22,134,7,198,249,22,7,250,22,153,7,199,36, 248,22,97,198,195,249,22,7,250,22,153,7,199,36,248,22,97,198,249,22,73, 249,22,153,7,200,248,22,99,199,197,249,22,7,196,195,90,159,39,11,89,161, -39,36,11,248,22,170,14,23,198,1,28,249,22,141,9,194,2,33,249,22,7, +39,36,11,248,22,178,14,23,198,1,28,249,22,141,9,194,2,33,249,22,7, 195,197,249,80,159,45,57,39,194,249,22,73,197,199,32,93,88,163,36,44,8, 36,11,65,99,108,111,111,112,222,33,98,32,94,88,163,8,36,37,55,11,2, 30,222,33,95,28,248,22,81,248,22,75,23,195,2,248,22,83,27,248,22,74, -23,196,1,28,248,22,149,14,23,194,2,248,22,153,14,23,194,1,192,250,22, -84,27,248,22,74,23,198,2,28,248,22,149,14,23,194,2,248,22,153,14,23, +23,196,1,28,248,22,157,14,23,194,2,248,22,161,14,23,194,1,192,250,22, +84,27,248,22,74,23,198,2,28,248,22,157,14,23,194,2,248,22,161,14,23, 194,1,192,2,41,27,248,22,75,23,198,1,28,248,22,81,248,22,75,23,195, -2,248,22,83,27,248,22,74,23,196,1,28,248,22,149,14,23,194,2,248,22, -153,14,23,194,1,192,250,22,84,27,248,22,74,23,198,2,28,248,22,149,14, -23,194,2,248,22,153,14,23,194,1,192,2,41,27,248,22,75,23,198,1,28, +2,248,22,83,27,248,22,74,23,196,1,28,248,22,157,14,23,194,2,248,22, +161,14,23,194,1,192,250,22,84,27,248,22,74,23,198,2,28,248,22,157,14, +23,194,2,248,22,161,14,23,194,1,192,2,41,27,248,22,75,23,198,1,28, 248,22,81,248,22,75,23,195,2,248,22,83,27,248,22,74,23,196,1,28,248, -22,149,14,23,194,2,248,22,153,14,23,194,1,192,250,22,84,27,248,22,74, -23,198,2,28,248,22,149,14,23,194,2,248,22,153,14,23,194,1,192,2,41, +22,157,14,23,194,2,248,22,161,14,23,194,1,192,250,22,84,27,248,22,74, +23,198,2,28,248,22,157,14,23,194,2,248,22,161,14,23,194,1,192,2,41, 248,2,94,248,22,75,23,198,1,32,96,88,163,8,36,38,57,11,66,102,105, 108,116,101,114,222,33,97,28,248,22,81,23,195,2,9,28,248,23,194,2,248, 22,74,23,196,2,249,22,73,248,22,74,23,197,2,27,248,22,75,23,198,1, @@ -435,25 +435,25 @@ 2,94,23,199,2,248,23,199,1,252,22,179,7,6,44,44,126,97,58,32,99, 111,108,108,101,99,116,105,111,110,32,110,111,116,32,102,111,117,110,100,58,32, 126,115,32,105,110,32,97,110,121,32,111,102,58,32,126,115,126,97,23,203,1, -28,248,22,81,23,203,1,28,248,22,149,14,23,202,2,248,22,153,14,23,202, -1,23,201,1,250,22,154,7,28,248,22,149,14,23,205,2,248,22,153,14,23, +28,248,22,81,23,203,1,28,248,22,157,14,23,202,2,248,22,161,14,23,202, +1,23,201,1,250,22,154,7,28,248,22,157,14,23,205,2,248,22,161,14,23, 205,1,23,204,1,6,1,1,47,23,202,2,28,248,22,81,23,201,2,9,28, -248,22,149,14,248,22,74,23,202,2,249,22,73,248,22,74,23,203,2,27,248, -22,75,23,204,2,28,248,22,81,23,194,2,9,28,248,22,149,14,248,22,74, +248,22,157,14,248,22,74,23,202,2,249,22,73,248,22,74,23,203,2,27,248, +22,75,23,204,2,28,248,22,81,23,194,2,9,28,248,22,157,14,248,22,74, 23,195,2,249,22,73,248,22,74,23,196,2,27,248,22,75,23,197,1,28,248, -22,81,23,194,2,9,28,248,22,149,14,248,22,74,23,195,2,249,22,73,248, -22,74,23,196,2,249,2,96,22,149,14,248,22,75,23,198,1,249,2,96,22, -149,14,248,22,75,23,196,1,27,248,22,75,23,195,1,28,248,22,81,23,194, -2,9,28,248,22,149,14,248,22,74,23,195,2,249,22,73,248,22,74,23,196, -2,249,2,96,22,149,14,248,22,75,23,198,1,249,2,96,22,149,14,248,22, +22,81,23,194,2,9,28,248,22,157,14,248,22,74,23,195,2,249,22,73,248, +22,74,23,196,2,249,2,96,22,157,14,248,22,75,23,198,1,249,2,96,22, +157,14,248,22,75,23,196,1,27,248,22,75,23,195,1,28,248,22,81,23,194, +2,9,28,248,22,157,14,248,22,74,23,195,2,249,22,73,248,22,74,23,196, +2,249,2,96,22,157,14,248,22,75,23,198,1,249,2,96,22,157,14,248,22, 75,23,196,1,27,248,22,75,23,202,2,28,248,22,81,23,194,2,9,28,248, -22,149,14,248,22,74,23,195,2,249,22,73,248,22,74,23,196,2,27,248,22, -75,23,197,1,28,248,22,81,23,194,2,9,28,248,22,149,14,248,22,74,23, -195,2,249,22,73,248,22,74,23,196,2,249,2,96,22,149,14,248,22,75,23, -198,1,249,2,96,22,149,14,248,22,75,23,196,1,27,248,22,75,23,195,1, -28,248,22,81,23,194,2,9,28,248,22,149,14,248,22,74,23,195,2,249,22, -73,248,22,74,23,196,2,249,2,96,22,149,14,248,22,75,23,198,1,249,2, -96,22,149,14,248,22,75,23,196,1,28,249,22,5,22,127,23,202,2,250,22, +22,157,14,248,22,74,23,195,2,249,22,73,248,22,74,23,196,2,27,248,22, +75,23,197,1,28,248,22,81,23,194,2,9,28,248,22,157,14,248,22,74,23, +195,2,249,22,73,248,22,74,23,196,2,249,2,96,22,157,14,248,22,75,23, +198,1,249,2,96,22,157,14,248,22,75,23,196,1,27,248,22,75,23,195,1, +28,248,22,81,23,194,2,9,28,248,22,157,14,248,22,74,23,195,2,249,22, +73,248,22,74,23,196,2,249,2,96,22,157,14,248,22,75,23,198,1,249,2, +96,22,157,14,248,22,75,23,196,1,28,249,22,5,22,127,23,202,2,250,22, 179,7,6,21,21,32,111,114,58,32,126,115,32,105,110,32,97,110,121,32,111, 102,58,32,126,115,23,202,1,249,22,2,22,128,2,28,248,22,81,23,206,2, 86,94,23,205,1,9,28,248,22,127,248,22,74,23,207,2,249,22,73,248,22, @@ -472,71 +472,71 @@ 194,2,9,28,248,22,127,248,22,74,23,195,2,249,22,73,248,22,74,23,196, 2,249,2,96,22,127,248,22,75,23,198,1,249,2,96,22,127,248,22,75,23, 196,1,86,94,23,199,1,6,0,0,27,248,22,74,23,201,2,27,28,248,22, -149,14,23,195,2,249,22,167,14,23,196,1,23,198,2,248,22,128,2,23,195, -1,28,28,248,22,149,14,248,22,74,23,203,2,248,22,162,14,23,194,2,10, -27,250,22,1,22,167,14,23,197,1,23,201,2,28,28,248,22,81,23,199,2, -10,248,22,162,14,23,194,2,28,23,201,2,28,28,248,22,161,14,249,22,167, -14,195,203,10,27,28,248,22,149,14,202,248,22,153,14,202,201,27,248,22,134, +157,14,23,195,2,249,22,175,14,23,196,1,23,198,2,248,22,128,2,23,195, +1,28,28,248,22,157,14,248,22,74,23,203,2,248,22,170,14,23,194,2,10, +27,250,22,1,22,175,14,23,197,1,23,201,2,28,28,248,22,81,23,199,2, +10,248,22,170,14,23,194,2,28,23,201,2,28,28,248,22,169,14,249,22,175, +14,195,203,10,27,28,248,22,157,14,202,248,22,161,14,202,201,27,248,22,134, 7,23,195,2,27,28,249,22,188,3,23,196,2,40,28,249,22,137,7,6,4, 4,46,114,107,116,249,22,153,7,23,199,2,249,22,176,3,23,200,2,40,249, 22,154,7,250,22,153,7,23,200,1,36,249,22,176,3,23,201,1,40,6,3, -3,46,115,115,86,95,23,195,1,23,194,1,11,11,28,23,193,2,248,22,161, -14,249,22,167,14,198,23,196,1,11,192,26,8,2,93,203,204,205,206,23,15, +3,46,115,115,86,95,23,195,1,23,194,1,11,11,28,23,193,2,248,22,169, +14,249,22,175,14,198,23,196,1,11,192,26,8,2,93,203,204,205,206,23,15, 23,16,248,22,75,23,18,28,23,18,23,18,200,192,26,8,2,93,203,204,205, 206,23,15,23,16,248,22,75,23,18,23,18,26,8,2,93,202,203,204,205,206, 23,15,248,22,75,23,17,23,17,90,159,38,11,89,161,38,36,11,249,80,159, -40,57,39,23,200,1,23,201,1,27,248,22,61,28,248,22,149,14,195,248,22, -153,14,195,194,27,247,22,130,15,27,250,22,87,28,23,197,2,28,247,22,129, +40,57,39,23,200,1,23,201,1,27,248,22,61,28,248,22,157,14,195,248,22, +161,14,195,194,27,247,22,138,15,27,250,22,87,28,23,197,2,28,247,22,137, 15,27,248,80,159,46,55,39,10,27,250,22,153,2,23,197,2,23,203,2,11, 28,23,193,2,192,86,94,23,193,1,250,22,153,2,23,197,1,11,9,9,9, 28,23,197,1,28,80,159,44,49,38,27,248,80,159,46,55,39,11,27,250,22, 153,2,23,197,2,23,203,1,11,28,23,193,2,192,86,94,23,193,1,250,22, -153,2,23,197,1,11,9,86,94,23,198,1,9,9,247,22,191,14,26,8,2, -93,200,203,204,206,23,15,23,18,200,11,86,95,28,28,248,22,150,14,23,194, -2,10,28,248,22,149,14,23,194,2,10,28,248,22,131,7,23,194,2,28,248, -22,171,14,23,194,2,10,248,22,172,14,23,194,2,11,12,252,22,177,9,23, +153,2,23,197,1,11,9,86,94,23,198,1,9,9,247,22,135,15,26,8,2, +93,200,203,204,206,23,15,23,18,200,11,86,95,28,28,248,22,158,14,23,194, +2,10,28,248,22,157,14,23,194,2,10,28,248,22,131,7,23,194,2,28,248, +22,179,14,23,194,2,10,248,22,180,14,23,194,2,11,12,252,22,177,9,23, 200,2,2,42,36,23,198,2,23,199,2,28,28,248,22,131,7,23,195,2,10, 248,22,184,7,23,195,2,86,94,23,194,1,12,252,22,177,9,23,200,2,2, -43,37,23,198,2,23,199,1,90,159,39,11,89,161,39,36,11,248,22,170,14, +43,37,23,198,2,23,199,1,90,159,39,11,89,161,39,36,11,248,22,178,14, 23,197,2,86,94,23,195,1,86,94,28,192,12,250,22,178,9,23,201,1,2, 44,23,199,1,249,22,7,194,195,90,159,38,11,89,161,38,36,11,86,95,28, -28,248,22,150,14,23,196,2,10,28,248,22,149,14,23,196,2,10,28,248,22, -131,7,23,196,2,28,248,22,171,14,23,196,2,10,248,22,172,14,23,196,2, +28,248,22,158,14,23,196,2,10,28,248,22,157,14,23,196,2,10,28,248,22, +131,7,23,196,2,28,248,22,179,14,23,196,2,10,248,22,180,14,23,196,2, 11,12,252,22,177,9,2,25,2,42,36,23,200,2,23,201,2,28,28,248,22, 131,7,23,197,2,10,248,22,184,7,23,197,2,12,252,22,177,9,2,25,2, -43,37,23,200,2,23,201,2,90,159,39,11,89,161,39,36,11,248,22,170,14, +43,37,23,200,2,23,201,2,90,159,39,11,89,161,39,36,11,248,22,178,14, 23,199,2,86,94,23,195,1,86,94,28,192,12,250,22,178,9,2,25,2,44, -23,201,2,249,22,7,194,195,27,249,22,159,14,250,22,148,15,0,20,35,114, -120,35,34,40,63,58,91,46,93,91,94,46,93,42,124,41,36,34,248,22,155, +23,201,2,249,22,7,194,195,27,249,22,167,14,250,22,156,15,0,20,35,114, +120,35,34,40,63,58,91,46,93,91,94,46,93,42,124,41,36,34,248,22,163, 14,23,201,1,28,248,22,131,7,23,203,2,249,22,146,8,23,204,1,8,63, -23,202,1,28,248,22,150,14,23,199,2,248,22,151,14,23,199,1,86,94,23, -198,1,247,22,152,14,28,248,22,149,14,194,249,22,167,14,195,194,192,90,159, -38,11,89,161,38,36,11,86,95,28,28,248,22,150,14,23,196,2,10,28,248, -22,149,14,23,196,2,10,28,248,22,131,7,23,196,2,28,248,22,171,14,23, -196,2,10,248,22,172,14,23,196,2,11,12,252,22,177,9,2,26,2,42,36, +23,202,1,28,248,22,158,14,23,199,2,248,22,159,14,23,199,1,86,94,23, +198,1,247,22,160,14,28,248,22,157,14,194,249,22,175,14,195,194,192,90,159, +38,11,89,161,38,36,11,86,95,28,28,248,22,158,14,23,196,2,10,28,248, +22,157,14,23,196,2,10,28,248,22,131,7,23,196,2,28,248,22,179,14,23, +196,2,10,248,22,180,14,23,196,2,11,12,252,22,177,9,2,26,2,42,36, 23,200,2,23,201,2,28,28,248,22,131,7,23,197,2,10,248,22,184,7,23, 197,2,12,252,22,177,9,2,26,2,43,37,23,200,2,23,201,2,90,159,39, -11,89,161,39,36,11,248,22,170,14,23,199,2,86,94,23,195,1,86,94,28, +11,89,161,39,36,11,248,22,178,14,23,199,2,86,94,23,195,1,86,94,28, 192,12,250,22,178,9,2,26,2,44,23,201,2,249,22,7,194,195,27,249,22, -159,14,249,22,132,8,250,22,149,15,0,9,35,114,120,35,34,91,46,93,34, -248,22,155,14,23,203,1,6,1,1,95,28,248,22,131,7,23,202,2,249,22, -146,8,23,203,1,8,63,23,201,1,28,248,22,150,14,23,199,2,248,22,151, -14,23,199,1,86,94,23,198,1,247,22,152,14,28,248,22,149,14,194,249,22, -167,14,195,194,192,249,247,22,159,5,194,11,27,247,22,129,15,249,80,159,39, +167,14,249,22,132,8,250,22,157,15,0,9,35,114,120,35,34,91,46,93,34, +248,22,163,14,23,203,1,6,1,1,95,28,248,22,131,7,23,202,2,249,22, +146,8,23,203,1,8,63,23,201,1,28,248,22,158,14,23,199,2,248,22,159, +14,23,199,1,86,94,23,198,1,247,22,160,14,28,248,22,157,14,194,249,22, +175,14,195,194,192,249,247,22,159,5,194,11,27,247,22,137,15,249,80,159,39, 40,38,28,23,195,2,27,248,22,151,8,2,45,28,192,192,2,46,2,47,27, -28,23,196,1,250,22,167,14,248,22,189,14,2,48,247,22,149,8,2,49,11, -27,248,80,159,42,8,28,39,250,22,87,9,248,22,83,248,22,189,14,2,38, -9,28,193,249,22,73,195,194,192,27,247,22,129,15,249,80,159,39,40,38,28, +28,23,196,1,250,22,175,14,248,22,133,15,2,48,247,22,149,8,2,49,11, +27,248,80,159,42,8,28,39,250,22,87,9,248,22,83,248,22,133,15,2,38, +9,28,193,249,22,73,195,194,192,27,247,22,137,15,249,80,159,39,40,38,28, 23,195,2,27,248,22,151,8,2,45,28,192,192,2,46,2,47,27,28,23,196, -1,250,22,167,14,248,22,189,14,2,48,247,22,149,8,2,49,11,27,248,80, -159,42,8,29,39,250,22,87,23,203,1,248,22,83,248,22,189,14,2,38,9, -28,193,249,22,73,195,194,192,27,247,22,129,15,249,80,159,39,40,38,28,23, +1,250,22,175,14,248,22,133,15,2,48,247,22,149,8,2,49,11,27,248,80, +159,42,8,29,39,250,22,87,23,203,1,248,22,83,248,22,133,15,2,38,9, +28,193,249,22,73,195,194,192,27,247,22,137,15,249,80,159,39,40,38,28,23, 195,2,27,248,22,151,8,2,45,28,192,192,2,46,2,47,27,28,23,196,1, -250,22,167,14,248,22,189,14,2,48,247,22,149,8,2,49,11,27,248,80,159, -42,8,30,39,250,22,87,23,203,1,248,22,83,248,22,189,14,2,38,23,204, +250,22,175,14,248,22,133,15,2,48,247,22,149,8,2,49,11,27,248,80,159, +42,8,30,39,250,22,87,23,203,1,248,22,83,248,22,133,15,2,38,23,204, 1,28,193,249,22,73,195,194,192,86,94,249,22,184,6,247,22,155,5,195,248, 22,146,6,249,22,128,4,36,249,22,176,3,197,198,27,28,23,197,2,86,95, -23,196,1,23,195,1,23,197,1,86,94,23,197,1,27,248,22,189,14,2,31, +23,196,1,23,195,1,23,197,1,86,94,23,197,1,27,248,22,133,15,2,31, 27,250,80,159,42,39,39,23,197,1,11,11,27,248,22,131,4,23,199,1,27, 28,23,194,2,23,194,1,86,94,23,194,1,36,27,248,22,131,4,23,202,1, 27,28,23,194,2,23,194,1,86,94,23,194,1,36,249,22,186,5,23,199,1, @@ -568,7 +568,7 @@ 36,37,54,38,2,4,223,0,33,55,80,159,36,38,37,20,15,16,2,20,25, 96,2,5,88,163,8,36,39,8,24,52,9,223,0,33,62,88,163,36,38,47, 44,9,223,0,33,63,88,163,36,37,46,44,9,223,0,33,64,80,159,36,39, -37,20,15,16,2,27,248,22,133,15,248,22,145,8,27,28,249,22,141,9,247, +37,20,15,16,2,27,248,22,141,15,248,22,145,8,27,28,249,22,141,9,247, 22,153,8,2,32,6,1,1,59,6,1,1,58,250,22,179,7,6,14,14,40, 91,94,126,97,93,42,41,126,97,40,46,42,41,23,196,2,23,196,1,88,163, 8,36,38,48,11,2,6,223,0,33,68,80,159,36,40,37,20,15,16,2,32, @@ -576,7 +576,7 @@ 2,32,0,88,163,8,36,39,51,11,2,8,222,33,71,80,159,36,42,37,20, 15,16,2,88,163,45,38,51,8,128,4,2,9,223,0,33,74,80,159,36,43, 37,20,15,16,2,88,163,45,39,52,8,128,4,2,11,223,0,33,77,80,159, -36,45,37,20,15,16,2,248,22,189,14,70,108,105,110,107,115,45,102,105,108, +36,45,37,20,15,16,2,248,22,133,15,70,108,105,110,107,115,45,102,105,108, 101,80,159,36,46,37,20,15,16,2,247,22,133,2,80,158,36,47,20,15,16, 2,2,78,80,158,36,48,20,15,16,2,248,80,159,37,50,37,88,163,36,36, 49,8,240,8,128,1,0,9,223,1,33,79,80,159,36,49,37,20,15,16,2, @@ -599,7 +599,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 10421); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,49,46,51,46,49,48,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,49,46,51,46,49,49,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,12,0,0,0,1,0,0,15,0,40,0, 57,0,75,0,97,0,120,0,140,0,162,0,169,0,176,0,183,0,0,0,175, 1,0,0,74,35,37,112,108,97,99,101,45,115,116,114,117,99,116,1,23,115, @@ -617,7 +617,7 @@ 11,11,16,5,2,3,2,7,2,8,2,4,2,2,16,5,11,11,11,11,11, 16,5,2,3,2,7,2,8,2,4,2,2,41,41,37,12,11,11,16,0,16, 0,16,0,36,36,11,12,11,11,16,0,16,0,16,0,36,36,16,2,20,15, -16,6,253,22,177,10,2,3,11,38,36,11,248,22,83,249,22,73,22,165,10, +16,6,253,22,182,10,2,3,11,38,36,11,248,22,83,249,22,73,22,170,10, 88,163,36,37,45,44,9,223,9,33,9,80,159,36,36,37,80,159,36,37,37, 80,159,36,38,37,80,159,36,39,37,80,159,36,40,37,20,15,16,3,249,22, 7,88,163,36,37,45,44,9,223,2,33,10,88,163,36,37,45,44,9,223,2, @@ -626,7 +626,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 497); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,49,46,51,46,49,48,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,49,46,51,46,49,49,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,65,0,0,0,1,0,0,7,0,18,0, 45,0,51,0,64,0,73,0,80,0,102,0,124,0,150,0,158,0,170,0,185, 0,201,0,219,0,239,0,251,0,11,1,34,1,46,1,77,1,84,1,89,1, @@ -654,48 +654,48 @@ 109,101,5,3,46,122,111,5,3,46,122,111,6,6,6,110,97,116,105,118,101, 64,108,111,111,112,63,108,105,98,67,105,103,110,111,114,101,100,249,22,14,195, 80,159,38,49,38,249,80,159,38,52,39,195,10,90,159,39,11,89,161,39,36, -11,248,22,170,14,197,86,95,23,195,1,23,193,1,28,249,22,137,15,0,11, -35,114,120,34,91,46,93,115,115,36,34,248,22,154,14,23,197,1,249,80,159, +11,248,22,178,14,197,86,95,23,195,1,23,193,1,28,249,22,145,15,0,11, +35,114,120,34,91,46,93,115,115,36,34,248,22,162,14,23,197,1,249,80,159, 41,56,39,198,5,4,46,114,107,116,196,27,28,23,195,2,28,249,22,141,9, 23,197,2,80,158,39,50,86,94,23,195,1,80,158,37,51,27,248,22,138,5, -23,197,2,28,248,22,149,14,23,194,2,90,159,39,11,89,161,39,36,11,248, -22,170,14,23,197,1,86,95,20,18,159,11,80,158,41,50,198,20,18,159,11, +23,197,2,28,248,22,157,14,23,194,2,90,159,39,11,89,161,39,36,11,248, +22,178,14,23,197,1,86,95,20,18,159,11,80,158,41,50,198,20,18,159,11, 80,158,41,51,192,192,11,11,28,23,193,2,192,86,94,23,193,1,27,247,22, -160,5,28,192,192,247,22,190,14,250,22,167,14,23,197,1,23,199,1,249,80, -159,43,39,39,23,198,1,2,26,250,22,167,14,23,197,1,23,199,1,249,80, -159,43,39,39,23,198,1,2,27,252,22,167,14,23,199,1,23,201,1,2,28, -247,22,154,8,249,80,159,45,39,39,23,200,1,80,159,45,36,38,252,22,167, +160,5,28,192,192,247,22,134,15,250,22,175,14,23,197,1,23,199,1,249,80, +159,43,39,39,23,198,1,2,26,250,22,175,14,23,197,1,23,199,1,249,80, +159,43,39,39,23,198,1,2,27,252,22,175,14,23,199,1,23,201,1,2,28, +247,22,154,8,249,80,159,45,39,39,23,200,1,80,159,45,36,38,252,22,175, 14,23,199,1,23,201,1,2,28,247,22,154,8,249,80,159,45,39,39,23,200, -1,80,159,45,36,38,27,252,22,167,14,23,200,1,23,202,1,2,28,247,22, -154,8,249,80,159,46,39,39,23,201,1,80,159,46,36,38,27,250,22,184,14, +1,80,159,45,36,38,27,252,22,175,14,23,200,1,23,202,1,2,28,247,22, +154,8,249,80,159,46,39,39,23,201,1,80,159,46,36,38,27,250,22,128,15, 196,11,32,0,88,163,8,36,36,41,11,9,222,11,28,192,249,22,73,195,194, -11,27,252,22,167,14,23,200,1,23,202,1,2,28,247,22,154,8,249,80,159, -46,39,39,23,201,1,80,159,46,36,38,27,250,22,184,14,196,11,32,0,88, -163,8,36,36,41,11,9,222,11,28,192,249,22,73,195,194,11,27,250,22,167, +11,27,252,22,175,14,23,200,1,23,202,1,2,28,247,22,154,8,249,80,159, +46,39,39,23,201,1,80,159,46,36,38,27,250,22,128,15,196,11,32,0,88, +163,8,36,36,41,11,9,222,11,28,192,249,22,73,195,194,11,27,250,22,175, 14,23,198,1,23,200,1,249,80,159,44,39,39,23,199,1,2,26,27,250,22, -184,14,196,11,32,0,88,163,8,36,36,41,11,9,222,11,28,192,249,22,73, -195,194,11,27,250,22,167,14,23,198,1,23,200,1,249,80,159,44,39,39,23, -199,1,2,27,27,250,22,184,14,196,11,32,0,88,163,8,36,36,41,11,9, +128,15,196,11,32,0,88,163,8,36,36,41,11,9,222,11,28,192,249,22,73, +195,194,11,27,250,22,175,14,23,198,1,23,200,1,249,80,159,44,39,39,23, +199,1,2,27,27,250,22,128,15,196,11,32,0,88,163,8,36,36,41,11,9, 222,11,28,192,249,22,73,195,194,11,86,94,28,248,80,159,37,38,39,23,195, 2,12,250,22,177,9,77,108,111,97,100,47,117,115,101,45,99,111,109,112,105, 108,101,100,6,25,25,112,97,116,104,32,111,114,32,118,97,108,105,100,45,112, 97,116,104,32,115,116,114,105,110,103,23,197,2,90,159,46,11,89,161,37,36, -11,28,248,22,173,14,23,205,2,23,204,2,27,247,22,160,5,28,23,193,2, -249,22,174,14,23,207,2,23,195,1,23,205,2,89,161,39,37,11,248,22,170, +11,28,248,22,181,14,23,205,2,23,204,2,27,247,22,160,5,28,23,193,2, +249,22,182,14,23,207,2,23,195,1,23,205,2,89,161,39,37,11,248,22,178, 14,23,205,1,86,94,23,196,1,89,161,38,40,11,28,23,205,2,27,248,22, -154,14,23,197,2,27,248,22,189,7,23,195,2,28,28,249,22,188,3,23,195, +162,14,23,197,2,27,248,22,189,7,23,195,2,28,28,249,22,188,3,23,195, 2,40,249,22,128,8,5,4,46,114,107,116,249,22,131,8,23,198,2,249,22, -176,3,23,199,2,40,11,249,22,7,23,199,2,248,22,158,14,249,22,132,8, +176,3,23,199,2,40,11,249,22,7,23,199,2,248,22,166,14,249,22,132,8, 250,22,131,8,23,202,1,36,249,22,176,3,23,203,1,40,5,3,46,115,115, 249,22,7,23,199,2,11,249,22,7,23,197,2,11,89,161,37,42,11,28,249, -22,141,9,23,199,2,23,197,2,23,193,2,249,22,167,14,23,196,2,23,199, +22,141,9,23,199,2,23,197,2,23,193,2,249,22,175,14,23,196,2,23,199, 2,89,161,37,43,11,28,23,198,2,28,249,22,141,9,23,200,2,23,197,1, -23,193,1,86,94,23,193,1,249,22,167,14,23,196,2,23,200,2,86,94,23, +23,193,1,86,94,23,193,1,249,22,175,14,23,196,2,23,200,2,86,94,23, 195,1,11,89,161,37,44,11,28,249,22,141,9,23,196,2,68,114,101,108,97, 116,105,118,101,86,94,23,194,1,2,25,23,194,1,89,161,37,45,11,247,22, -128,15,27,250,22,184,14,23,203,2,11,32,0,88,163,8,36,36,41,11,9, +136,15,27,250,22,128,15,23,203,2,11,32,0,88,163,8,36,36,41,11,9, 222,11,27,28,23,194,2,249,22,73,23,203,2,23,196,1,86,94,23,194,1, -11,27,28,23,203,2,28,23,194,2,11,27,250,22,184,14,23,207,2,11,32, +11,27,28,23,203,2,28,23,194,2,11,27,250,22,128,15,23,207,2,11,32, 0,88,163,8,36,36,41,11,9,222,11,28,192,249,22,73,23,206,2,194,11, 11,27,28,23,195,2,23,195,2,23,194,2,27,88,163,36,37,50,44,62,122, 111,225,15,13,9,33,36,27,88,163,36,37,50,44,66,97,108,116,45,122,111, @@ -710,8 +710,8 @@ 201,1,23,200,1,23,199,1,23,198,1,23,196,1,23,195,1,23,194,1,20, 13,159,80,159,57,40,37,250,80,159,8,24,41,37,249,22,27,11,80,159,8, 26,40,37,22,181,4,11,20,13,159,80,159,57,40,37,250,80,159,8,24,41, -37,249,22,27,11,80,159,8,26,40,37,22,160,5,28,248,22,149,14,23,216, -2,23,215,1,86,94,23,215,1,247,22,190,14,249,247,22,132,15,248,22,74, +37,249,22,27,11,80,159,8,26,40,37,22,160,5,28,248,22,157,14,23,216, +2,23,215,1,86,94,23,215,1,247,22,134,15,249,247,22,140,15,248,22,74, 195,23,25,86,94,23,193,1,27,28,23,195,2,28,23,197,1,27,249,22,5, 88,163,8,36,37,53,45,9,225,25,23,20,33,41,23,217,2,27,28,23,204, 2,11,193,28,192,192,28,193,28,203,28,249,22,188,3,248,22,75,196,248,22, @@ -720,8 +720,8 @@ 1,23,195,1,20,13,159,80,159,58,40,37,250,80,159,8,25,41,37,249,22, 27,11,80,159,8,27,40,37,22,181,4,23,215,1,20,13,159,80,159,58,40, 37,250,80,159,8,25,41,37,249,22,27,11,80,159,8,27,40,37,22,160,5, -28,248,22,149,14,23,217,2,23,216,1,86,94,23,216,1,247,22,190,14,249, -247,22,132,15,248,22,74,195,23,26,86,94,23,193,1,27,28,23,197,2,28, +28,248,22,157,14,23,217,2,23,216,1,86,94,23,216,1,247,22,134,15,249, +247,22,140,15,248,22,74,195,23,26,86,94,23,193,1,27,28,23,197,2,28, 23,201,1,27,249,22,5,20,20,94,88,163,8,36,37,51,44,9,225,26,24, 20,33,42,23,213,1,23,218,2,27,28,23,204,2,11,193,28,192,192,28,193, 28,23,204,2,28,249,22,188,3,248,22,75,196,248,22,75,23,207,2,193,11, @@ -729,8 +729,8 @@ 215,1,23,213,1,23,212,1,23,211,1,23,202,1,23,200,1,23,197,1,23, 196,1,20,13,159,80,159,59,40,37,250,80,159,8,26,41,37,249,22,27,11, 80,159,8,28,40,37,22,181,4,11,20,13,159,80,159,59,40,37,250,80,159, -8,26,41,37,249,22,27,11,80,159,8,28,40,37,22,160,5,28,248,22,149, -14,23,218,2,23,217,1,86,94,23,217,1,247,22,190,14,249,247,22,158,5, +8,26,41,37,249,22,27,11,80,159,8,28,40,37,22,160,5,28,248,22,157, +14,23,218,2,23,217,1,86,94,23,217,1,247,22,134,15,249,247,22,158,5, 248,22,74,195,23,27,86,94,23,193,1,27,28,23,197,1,28,23,201,1,27, 249,22,5,20,20,94,88,163,8,36,37,51,44,9,225,27,25,22,33,43,23, 215,1,23,219,1,27,28,23,205,2,11,193,28,192,192,28,193,28,204,28,249, @@ -739,26 +739,26 @@ 1,20,13,159,80,159,8,24,40,37,250,80,159,8,27,41,37,249,22,27,11, 80,159,8,29,40,37,22,181,4,23,217,1,20,13,159,80,159,8,24,40,37, 250,80,159,8,27,41,37,249,22,27,11,80,159,8,29,40,37,22,160,5,28, -248,22,149,14,23,219,2,23,218,1,86,94,23,218,1,247,22,190,14,249,247, +248,22,157,14,23,219,2,23,218,1,86,94,23,218,1,247,22,134,15,249,247, 22,158,5,248,22,74,195,23,28,86,94,23,193,1,27,28,23,199,2,86,94, 23,215,1,23,214,1,86,94,23,214,1,23,215,1,20,13,159,80,159,8,25, 40,37,250,80,159,8,28,41,37,249,22,27,11,80,159,8,30,40,37,22,181, 4,28,23,30,28,23,202,1,11,195,86,94,23,202,1,11,20,13,159,80,159, 8,25,40,37,250,80,159,8,28,41,37,249,22,27,11,80,159,8,30,40,37, -22,160,5,28,248,22,149,14,23,220,2,23,219,1,86,94,23,219,1,247,22, -190,14,249,247,22,158,5,194,23,29,27,249,22,161,8,80,159,39,45,38,249, +22,160,5,28,248,22,157,14,23,220,2,23,219,1,86,94,23,219,1,247,22, +134,15,249,247,22,158,5,194,23,29,27,249,22,161,8,80,159,39,45,38,249, 22,183,3,248,22,179,3,248,22,166,2,200,8,128,8,27,28,193,248,22,169, 2,194,11,28,192,27,249,22,96,198,195,28,192,248,22,75,193,11,11,27,249, 22,183,3,248,22,179,3,248,22,166,2,198,8,128,8,27,249,22,161,8,80, 159,40,45,38,195,27,28,193,248,22,169,2,194,11,250,22,162,8,80,159,42, 45,38,197,248,22,168,2,249,22,73,249,22,73,204,205,28,198,198,9,0,17, 35,114,120,34,94,40,46,42,63,41,47,40,46,42,41,36,34,32,48,88,163, -8,36,37,59,11,2,29,222,33,49,27,249,22,137,15,2,47,23,196,2,28, +8,36,37,59,11,2,29,222,33,49,27,249,22,145,15,2,47,23,196,2,28, 23,193,2,86,94,23,194,1,249,22,73,248,22,98,23,196,2,27,248,22,107, -23,197,1,27,249,22,137,15,2,47,23,196,2,28,23,193,2,86,94,23,194, -1,249,22,73,248,22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,137, +23,197,1,27,249,22,145,15,2,47,23,196,2,28,23,193,2,86,94,23,194, +1,249,22,73,248,22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,145, 15,2,47,23,196,2,28,23,193,2,86,94,23,194,1,249,22,73,248,22,98, -23,196,2,27,248,22,107,23,197,1,27,249,22,137,15,2,47,23,196,2,28, +23,196,2,27,248,22,107,23,197,1,27,249,22,145,15,2,47,23,196,2,28, 23,193,2,86,94,23,194,1,249,22,73,248,22,98,23,196,2,248,2,48,248, 22,107,23,197,1,248,22,83,194,248,22,83,194,248,22,83,194,248,22,83,194, 32,50,88,163,36,37,55,11,2,29,222,33,51,28,248,22,81,248,22,75,23, @@ -768,12 +768,12 @@ 23,195,2,249,22,7,9,248,22,74,195,90,159,38,11,89,161,38,36,11,248, 2,50,248,22,75,196,249,22,7,249,22,73,248,22,74,199,196,195,249,22,7, 249,22,73,248,22,74,199,196,195,249,22,7,249,22,73,248,22,74,199,196,195, -27,27,249,22,137,15,2,47,23,197,2,28,23,193,2,86,94,23,195,1,249, -22,73,248,22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,137,15,2, +27,27,249,22,145,15,2,47,23,197,2,28,23,193,2,86,94,23,195,1,249, +22,73,248,22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,145,15,2, 47,23,196,2,28,23,193,2,86,94,23,194,1,249,22,73,248,22,98,23,196, -2,27,248,22,107,23,197,1,27,249,22,137,15,2,47,23,196,2,28,23,193, +2,27,248,22,107,23,197,1,27,249,22,145,15,2,47,23,196,2,28,23,193, 2,86,94,23,194,1,249,22,73,248,22,98,23,196,2,27,248,22,107,23,197, -1,27,249,22,137,15,2,47,23,196,2,28,23,193,2,86,94,23,194,1,249, +1,27,249,22,145,15,2,47,23,196,2,28,23,193,2,86,94,23,194,1,249, 22,73,248,22,98,23,196,2,248,2,48,248,22,107,23,197,1,248,22,83,194, 248,22,83,194,248,22,83,194,248,22,83,195,28,23,195,1,192,28,248,22,81, 248,22,75,23,195,2,249,22,7,9,248,22,74,195,27,248,22,75,194,90,159, @@ -785,9 +785,9 @@ 74,200,196,195,86,95,28,248,22,136,5,195,12,250,22,177,9,2,21,6,20, 20,114,101,115,111,108,118,101,100,45,109,111,100,117,108,101,45,112,97,116,104, 197,28,24,193,2,248,24,194,1,195,86,94,23,193,1,12,27,250,22,153,2, -80,159,41,43,38,248,22,162,15,247,22,191,12,11,27,28,23,194,2,193,86, +80,159,41,43,38,248,22,170,15,247,22,135,13,11,27,28,23,194,2,193,86, 94,23,194,1,27,247,22,133,2,86,94,250,22,151,2,80,159,43,43,38,248, -22,162,15,247,22,191,12,195,192,250,22,151,2,195,199,66,97,116,116,97,99, +22,170,15,247,22,135,13,195,192,250,22,151,2,195,199,66,97,116,116,97,99, 104,251,211,197,198,199,10,28,192,250,22,176,9,11,196,195,248,22,174,9,194, 28,249,22,137,7,194,6,1,1,46,2,25,28,249,22,137,7,194,6,2,2, 46,46,62,117,112,192,32,57,88,163,8,36,37,50,11,67,115,115,45,62,114, @@ -799,10 +799,10 @@ 108,101,32,105,110,32,108,111,97,100,105,110,103,32,97,116,32,126,46,115,58, 32,126,46,115,23,200,1,249,22,2,22,75,248,22,88,249,22,73,23,206,1, 23,202,1,12,12,247,192,20,13,159,80,159,41,48,38,249,22,73,249,22,73, -248,22,162,15,247,22,191,12,23,200,1,23,195,1,20,13,159,80,159,41,40, +248,22,170,15,247,22,135,13,23,200,1,23,195,1,20,13,159,80,159,41,40, 37,250,80,159,44,41,37,249,22,27,11,80,159,46,40,37,22,180,4,23,197, -1,249,247,22,159,5,23,199,1,248,22,61,248,22,153,14,23,199,1,86,94, -28,28,248,22,149,14,23,196,2,10,248,22,144,5,23,196,2,12,28,23,197, +1,249,247,22,159,5,23,199,1,248,22,61,248,22,161,14,23,199,1,86,94, +28,28,248,22,157,14,23,196,2,10,248,22,144,5,23,196,2,12,28,23,197, 2,250,22,176,9,11,6,15,15,98,97,100,32,109,111,100,117,108,101,32,112, 97,116,104,23,200,2,250,22,177,9,2,21,6,19,19,109,111,100,117,108,101, 45,112,97,116,104,32,111,114,32,112,97,116,104,23,198,2,28,28,248,22,71, @@ -815,57 +815,57 @@ 111,108,118,101,114,12,252,212,199,200,201,202,80,158,42,53,86,94,23,193,1, 27,88,163,8,36,37,46,11,79,115,104,111,119,45,99,111,108,108,101,99,116, 105,111,110,45,101,114,114,223,5,33,55,27,28,248,22,58,23,198,2,27,248, -80,159,41,46,39,249,22,73,23,201,2,247,22,191,14,28,23,193,2,192,86, +80,159,41,46,39,249,22,73,23,201,2,247,22,135,15,28,23,193,2,192,86, 94,23,193,1,90,159,38,11,89,161,38,36,11,249,80,159,44,52,39,248,22, 64,23,203,2,11,27,28,248,22,81,23,195,2,6,8,8,109,97,105,110,46, 114,107,116,249,22,154,7,23,197,2,6,4,4,46,114,107,116,27,252,80,159, 49,57,39,2,21,23,204,1,28,248,22,81,23,201,2,23,201,1,86,94,23, 201,1,248,22,74,23,201,2,28,248,22,81,23,201,2,86,94,23,200,1,9, -248,22,75,23,201,1,23,199,2,249,22,167,14,23,195,1,23,196,1,28,248, +248,22,75,23,201,1,23,199,2,249,22,175,14,23,195,1,23,196,1,28,248, 22,131,7,23,198,2,86,94,23,194,1,27,248,80,159,41,8,26,39,23,200, 2,27,248,80,159,42,46,39,249,22,73,23,202,2,23,197,2,28,23,193,2, 192,86,94,23,193,1,90,159,38,11,89,161,38,36,11,249,80,159,45,52,39, -23,203,2,11,250,22,1,22,167,14,23,199,1,249,22,87,249,22,2,32,0, +23,203,2,11,250,22,1,22,175,14,23,199,1,249,22,87,249,22,2,32,0, 88,163,8,36,37,44,11,9,222,33,56,23,200,1,248,22,83,248,2,57,23, -201,1,28,248,22,149,14,23,198,2,86,94,23,194,1,28,248,22,172,14,23, -198,2,248,80,159,40,8,27,39,248,22,176,14,23,199,2,248,22,83,6,26, +201,1,28,248,22,157,14,23,198,2,86,94,23,194,1,28,248,22,180,14,23, +198,2,248,80,159,40,8,27,39,248,22,184,14,23,199,2,248,22,83,6,26, 26,32,40,97,32,112,97,116,104,32,109,117,115,116,32,98,101,32,97,98,115, 111,108,117,116,101,41,28,249,22,141,9,248,22,74,23,200,2,2,30,27,248, -80,159,41,46,39,249,22,73,23,201,2,247,22,191,14,28,23,193,2,192,86, +80,159,41,46,39,249,22,73,23,201,2,247,22,135,15,28,23,193,2,192,86, 94,23,193,1,90,159,39,11,89,161,38,36,11,249,80,159,45,52,39,248,22, 98,23,204,2,11,89,161,37,38,11,28,248,22,81,248,22,100,23,203,2,28, -248,22,81,23,194,2,249,22,141,15,0,8,35,114,120,34,91,46,93,34,23, +248,22,81,23,194,2,249,22,149,15,0,8,35,114,120,34,91,46,93,34,23, 196,2,11,10,27,28,23,196,2,248,2,57,23,196,2,28,248,22,81,23,195, -2,6,8,8,109,97,105,110,46,114,107,116,28,249,22,141,15,0,8,35,114, +2,6,8,8,109,97,105,110,46,114,107,116,28,249,22,149,15,0,8,35,114, 120,34,91,46,93,34,23,197,2,248,2,57,23,196,2,249,22,154,7,23,197, 2,6,4,4,46,114,107,116,27,28,23,197,1,86,94,23,196,1,249,22,87, 28,248,22,81,248,22,100,23,207,2,21,93,6,5,5,109,122,108,105,98,249, 22,1,22,87,249,22,2,80,159,51,8,28,39,248,22,100,23,210,2,23,197, 1,28,248,22,81,23,196,2,86,94,23,195,1,248,22,83,23,197,1,86,94, 23,196,1,23,195,1,27,252,80,159,51,57,39,2,21,23,206,1,248,22,74, -23,200,2,248,22,75,23,200,1,23,200,2,249,22,167,14,23,195,1,23,197, +23,200,2,248,22,75,23,200,1,23,200,2,249,22,175,14,23,195,1,23,197, 1,28,249,22,141,9,248,22,74,23,200,2,64,102,105,108,101,248,80,159,40, -8,27,39,248,22,176,14,249,22,174,14,248,22,178,14,248,22,98,23,203,2, -248,80,159,44,8,26,39,23,203,2,12,86,94,28,28,248,22,149,14,23,194, +8,27,39,248,22,184,14,249,22,182,14,248,22,186,14,248,22,98,23,203,2, +248,80,159,44,8,26,39,23,203,2,12,86,94,28,28,248,22,157,14,23,194, 2,10,248,22,156,8,23,194,2,86,94,23,199,1,12,28,23,199,2,250,22, 176,9,67,114,101,113,117,105,114,101,249,22,179,7,6,17,17,98,97,100,32, 109,111,100,117,108,101,32,112,97,116,104,126,97,28,23,198,2,248,22,74,23, 199,2,6,0,0,23,202,1,86,94,23,199,1,250,22,177,9,2,21,249,22, 179,7,6,13,13,109,111,100,117,108,101,32,112,97,116,104,126,97,28,23,198, 2,248,22,74,23,199,2,6,0,0,23,200,2,27,28,248,22,156,8,23,195, -2,249,22,161,8,23,196,2,36,249,22,176,14,248,22,177,14,23,197,2,11, +2,249,22,161,8,23,196,2,36,249,22,184,14,248,22,185,14,23,197,2,11, 27,28,248,22,156,8,23,196,2,249,22,161,8,23,197,2,37,248,80,159,42, 58,39,23,195,2,90,159,39,11,89,161,39,36,11,28,248,22,156,8,23,199, -2,250,22,7,2,31,249,22,161,8,23,203,2,38,2,31,248,22,170,14,23, +2,250,22,7,2,31,249,22,161,8,23,203,2,38,2,31,248,22,178,14,23, 198,2,86,95,23,195,1,23,193,1,27,28,248,22,156,8,23,200,2,249,22, 161,8,23,201,2,39,249,80,159,47,56,39,23,197,2,5,0,27,28,248,22, 156,8,23,201,2,249,22,161,8,23,202,2,40,248,22,137,5,23,200,2,27, -27,250,22,153,2,80,159,51,43,38,248,22,162,15,247,22,191,12,11,28,23, +27,250,22,153,2,80,159,51,43,38,248,22,170,15,247,22,135,13,11,28,23, 193,2,192,86,94,23,193,1,27,247,22,133,2,86,94,250,22,151,2,80,159, -52,43,38,248,22,162,15,247,22,191,12,195,192,86,95,28,23,208,1,27,250, +52,43,38,248,22,170,15,247,22,135,13,195,192,86,95,28,23,208,1,27,250, 22,153,2,23,197,2,197,11,28,23,193,1,12,86,94,27,27,28,248,22,17, 80,159,51,49,38,80,159,50,49,38,247,22,19,251,22,27,11,80,159,54,48, -38,9,23,197,1,27,248,22,162,15,247,22,191,12,86,94,249,22,3,20,20, +38,9,23,197,1,27,248,22,170,15,247,22,135,13,86,94,249,22,3,20,20, 94,88,163,8,36,37,55,11,9,226,12,11,2,3,33,59,23,195,1,23,196, 2,248,28,248,22,17,80,159,52,49,38,32,0,88,163,36,37,42,11,9,222, 33,60,80,159,51,8,29,39,20,20,94,88,163,36,36,52,8,176,64,9,228, @@ -874,14 +874,14 @@ 22,58,23,206,2,10,28,248,22,71,23,206,2,249,22,141,9,248,22,74,23, 208,2,2,30,11,27,28,248,22,131,7,23,207,2,249,22,73,23,208,1,248, 80,159,51,8,26,39,23,210,1,86,94,23,207,1,249,22,73,23,208,1,247, -22,191,14,27,249,22,183,3,248,22,179,3,248,22,166,2,23,198,2,8,128, +22,135,15,27,249,22,183,3,248,22,179,3,248,22,166,2,23,198,2,8,128, 8,27,249,22,161,8,80,159,52,45,38,23,196,2,27,28,23,194,2,248,22, 169,2,23,195,1,86,94,23,194,1,11,250,22,162,8,80,159,54,45,38,23, 198,1,248,22,168,2,249,22,73,249,22,73,23,204,1,252,22,158,8,23,217, 1,23,216,1,23,214,1,23,212,1,23,18,28,23,199,2,23,199,1,86,94, 23,199,1,9,12,193,86,96,20,18,159,11,80,158,36,53,248,80,159,37,8, 25,37,249,22,27,11,80,159,39,55,37,248,22,179,4,80,159,37,54,38,248, -22,159,5,80,159,37,37,39,248,22,182,13,80,159,37,42,39,20,18,159,11, +22,159,5,80,159,37,37,39,248,22,190,13,80,159,37,42,39,20,18,159,11, 80,158,36,53,248,80,159,37,8,25,37,249,22,27,11,80,159,39,55,37,159, 36,20,112,159,36,16,1,11,16,0,20,26,141,2,1,2,1,29,11,11,11, 11,11,10,38,80,158,36,36,20,112,159,40,16,26,2,2,2,3,30,2,5, @@ -927,7 +927,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 6253); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,49,46,51,46,49,48,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,49,46,51,46,49,49,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,11,0,0,0,1,0,0,10,0,16,0, 29,0,44,0,58,0,78,0,90,0,104,0,118,0,170,0,0,0,94,1,0, 0,69,35,37,98,117,105,108,116,105,110,65,113,117,111,116,101,29,94,2,2, @@ -935,7 +935,7 @@ 114,107,11,29,94,2,2,68,35,37,112,97,114,97,109,122,11,29,94,2,2, 74,35,37,112,108,97,99,101,45,115,116,114,117,99,116,11,29,94,2,2,66, 35,37,98,111,111,116,11,29,94,2,2,68,35,37,101,120,112,111,98,115,11, -29,94,2,2,68,35,37,107,101,114,110,101,108,11,97,36,11,8,240,11,78, +29,94,2,2,68,35,37,107,101,114,110,101,108,11,97,36,11,8,240,13,78, 0,0,100,159,2,3,36,36,159,2,4,36,36,159,2,5,36,36,159,2,6, 36,36,159,2,7,36,36,159,2,8,36,36,159,2,9,36,36,159,2,9,36, 36,16,0,159,36,20,112,159,36,16,1,11,16,0,20,26,141,2,1,2,1, diff --git a/src/racket/src/error.c b/src/racket/src/error.c index 98d5d34ea6..5a21e5d24e 100644 --- a/src/racket/src/error.c +++ b/src/racket/src/error.c @@ -1619,7 +1619,8 @@ static void do_wrong_syntax(const char *where, Scheme_Object *detail_form, Scheme_Object *form, char *s, intptr_t slen, - Scheme_Object *extra_sources) + Scheme_Object *extra_sources, + int exn_kind) { intptr_t len, vlen, dvlen, blen, plen; char *buffer; @@ -1775,7 +1776,7 @@ static void do_wrong_syntax(const char *where, form = scheme_make_pair(form, extra_sources); } - scheme_raise_exn(MZEXN_FAIL_SYNTAX, + scheme_raise_exn(exn_kind, form, "%t", buffer, blen); } @@ -1799,7 +1800,23 @@ void scheme_wrong_syntax(const char *where, HIDE_FROM_XFORM(va_end(args)); } - do_wrong_syntax(where, detail_form, form, s, slen, scheme_null); + do_wrong_syntax(where, detail_form, form, s, slen, scheme_null, MZEXN_FAIL_SYNTAX); +} + +void scheme_unbound_syntax(const char *where, + Scheme_Object *detail_form, + Scheme_Object *form, + const char *detail, ...) +{ + char *s; + intptr_t slen; + GC_CAN_IGNORE va_list args; + + HIDE_FROM_XFORM(va_start(args, detail)); + slen = sch_vsprintf(NULL, 0, detail, args, &s); + HIDE_FROM_XFORM(va_end(args)); + + do_wrong_syntax(where, detail_form, form, s, slen, scheme_null, MZEXN_FAIL_SYNTAX_UNBOUND); } void scheme_wrong_syntax_with_more_sources(const char *where, @@ -1822,7 +1839,7 @@ void scheme_wrong_syntax_with_more_sources(const char *where, HIDE_FROM_XFORM(va_end(args)); } - do_wrong_syntax(where, detail_form, form, s, slen, extra_sources); + do_wrong_syntax(where, detail_form, form, s, slen, extra_sources, MZEXN_FAIL_SYNTAX); } void scheme_wrong_rator(Scheme_Object *rator, int argc, Scheme_Object **argv) diff --git a/src/racket/src/fun.c b/src/racket/src/fun.c index e174bebea5..742b710ad6 100644 --- a/src/racket/src/fun.c +++ b/src/racket/src/fun.c @@ -8224,12 +8224,13 @@ static Scheme_Object *seconds_to_date(int argc, Scheme_Object **argv) # endif #endif CHECK_TIME_T now; - Scheme_Object *p[10], *secs; + char *tzn; + Scheme_Object *p[12], *secs, *nsecs, *zname; secs = argv[0]; - if (!SCHEME_INTP(secs) && !SCHEME_BIGNUMP(secs)) { - scheme_wrong_type("seconds->date", "exact integer", 0, argc, argv); + if (!SCHEME_REALP(secs)) { + scheme_wrong_type("seconds->date", "real", 0, argc, argv); return NULL; } @@ -8238,6 +8239,22 @@ static Scheme_Object *seconds_to_date(int argc, Scheme_Object **argv) else get_gmt = 0; + if (SCHEME_INTP(secs) || SCHEME_BIGNUMP(secs)) { + nsecs = scheme_make_integer(0); + } else { + nsecs = secs; + p[0] = secs; + secs = scheme_floor(1, p); + nsecs = scheme_bin_minus(nsecs, secs); + nsecs = scheme_bin_mult(nsecs, scheme_make_integer(1000000000)); + p[0] = nsecs; + nsecs = scheme_floor(1, p); + p[0] = nsecs; + nsecs = scheme_inexact_to_exact(1, p); + p[0] = secs; + secs = scheme_inexact_to_exact(1, p); + } + if (scheme_get_time_val(secs, &lnow) && ((UNBUNDLE_TIME_TYPE)(now = (CHECK_TIME_T)lnow)) == lnow) { int success; @@ -8359,10 +8376,23 @@ static Scheme_Object *seconds_to_date(int argc, Scheme_Object **argv) # ifdef USE_TM_GMTOFF_FIELD tzoffset = localTime->tm_gmtoff; # endif - } +# ifdef USE_TZNAME_VAR + tzn = MSC_IZE(tzname)[localTime->tm_isdst]; +# elif defined(USE_TM_ZONE_FIELD) + tzn = localTime->tm_zone; +# else + tzn = NULL; +# endif + } else + tzn = "UTC"; #endif + if (!tzn) + tzn = "?"; + zname = scheme_make_utf8_string(tzn); + SCHEME_SET_IMMUTABLE(zname); + p[0] = scheme_make_integer(sec); p[1] = scheme_make_integer(min); p[2] = scheme_make_integer(hour); @@ -8373,8 +8403,10 @@ static Scheme_Object *seconds_to_date(int argc, Scheme_Object **argv) p[7] = scheme_make_integer(yday); p[8] = dst ? scheme_true : scheme_false; p[9] = scheme_make_integer(tzoffset); + p[10] = nsecs; + p[11] = zname; - return scheme_make_struct_instance(scheme_date, 10, p); + return scheme_make_struct_instance(scheme_date, 12, p); } } diff --git a/src/racket/src/makeexn b/src/racket/src/makeexn index 18522c6a1d..61868a833c 100755 --- a/src/racket/src/makeexn +++ b/src/racket/src/makeexn @@ -7,7 +7,8 @@ else fi |# -#lang at-exp scheme +#lang at-exp racket/base +(require racket/pretty) (provide main) (define (main [arg #f] [filename #f]) @@ -41,11 +42,13 @@ propeties (the latter in curly braces), strings are contracts/comments. (continuation [] "attempt to cross a continuation barrier") (variable [variable_field_check (id "symbol" "the variable's identifier")] - "unbound/not-yet-defined global or module variable")) + "not-yet-defined global or module variable")) (syntax [syntax_field_check (exprs "immutable list of syntax objects" "illegal expression(s)") {exn:source scheme_source_property |scheme_make_prim(extract_syntax_locations)|}] - "syntax error, but not a \\scmfirst{read} error") + "syntax error, but not a \\scmfirst{read} error" + (unbound [] + "unbound module variable")) (read [read_field_check (srclocs "immutable list of \\scmk{srcloc}s (see \\SecRef{linecol})" "source location(s) of error") {exn:source scheme_source_property |scheme_make_prim(extract_read_locations)|}] @@ -238,6 +241,9 @@ Not an exception in the above sense: '((arity-at-least (arity-at-least-value) #t) (date (date-time-zone-offset date-dst? date-year-day date-week-day date-year date-month date-day date-hour date-minute date-second) #t) + (date* (date*-time-zone-name date*-nanosecond + date-time-zone-offset date-dst? date-year-day date-week-day date-year + date-month date-day date-hour date-minute date-second) #t) (srcloc (srcloc-span srcloc-position srcloc-column srcloc-line srcloc-source) #t)))) (with-output-to-file filename #:exists 'replace @@ -245,7 +251,7 @@ Not an exception in the above sense: (printf ";; This file was generated by makeexn\n") (printf ";;----------------------------------------------------------------------\n") (printf ";; record for static info produced by structs defined in c\n") - (pretty-print (append preamble exceptions structs))))) + (pretty-write (append preamble exceptions structs))))) (define (print-header) @(compose output list){ diff --git a/src/racket/src/number.c b/src/racket/src/number.c index ce387bc2d5..fb934b182f 100644 --- a/src/racket/src/number.c +++ b/src/racket/src/number.c @@ -77,7 +77,6 @@ static Scheme_Object *bitwise_bit_field (int argc, Scheme_Object *argv[]); static Scheme_Object *integer_length (int argc, Scheme_Object *argv[]); static Scheme_Object *gcd (int argc, Scheme_Object *argv[]); static Scheme_Object *lcm (int argc, Scheme_Object *argv[]); -static Scheme_Object *floor_prim (int argc, Scheme_Object *argv[]); static Scheme_Object *ceiling (int argc, Scheme_Object *argv[]); static Scheme_Object *sch_truncate (int argc, Scheme_Object *argv[]); static Scheme_Object *sch_round (int argc, Scheme_Object *argv[]); @@ -452,7 +451,7 @@ scheme_init_number (Scheme_Env *env) 0, -1, 1), env); scheme_add_global_constant("floor", - scheme_make_folding_prim(floor_prim, + scheme_make_folding_prim(scheme_floor, "floor", 1, 1, 1), env); @@ -1626,8 +1625,8 @@ bin_lcm (Scheme_Object *n1, Scheme_Object *n2) return scheme_abs(1, &ret); } -static Scheme_Object * -floor_prim (int argc, Scheme_Object *argv[]) +Scheme_Object * +scheme_floor (int argc, Scheme_Object *argv[]) { Scheme_Object *o = argv[0]; Scheme_Type t; @@ -2402,10 +2401,10 @@ Scheme_Object *do_int_sqrt (const char *name, int argc, Scheme_Object *argv[], i v = scheme_sqrt(1, &v); if (SCHEME_COMPLEXP(v)) { v = scheme_complex_imaginary_part(v); - v = floor_prim(1, &v); + v = scheme_floor(1, &v); v = scheme_make_complex(scheme_make_integer(0), v); } else - v = floor_prim(1, &v); + v = scheme_floor(1, &v); if (w_rem) { rem = scheme_bin_minus(rem, scheme_bin_mult(v, v)); diff --git a/src/racket/src/schexn.h b/src/racket/src/schexn.h index c9c5439a8f..2a22e42f11 100644 --- a/src/racket/src/schexn.h +++ b/src/racket/src/schexn.h @@ -11,6 +11,7 @@ enum { MZEXN_FAIL_CONTRACT_CONTINUATION, MZEXN_FAIL_CONTRACT_VARIABLE, MZEXN_FAIL_SYNTAX, + MZEXN_FAIL_SYNTAX_UNBOUND, MZEXN_FAIL_READ, MZEXN_FAIL_READ_EOF, MZEXN_FAIL_READ_NON_CHAR, @@ -31,7 +32,7 @@ enum { #define MZEXN_MAXARGS 3 #ifdef GLOBAL_EXN_ARRAY -READ_ONLY static exn_rec exn_table[] = { +static exn_rec exn_table[] = { { 2, NULL, NULL, 0, NULL, -1 }, { 2, NULL, NULL, 0, NULL, 0 }, { 2, NULL, NULL, 0, NULL, 1 }, @@ -41,12 +42,13 @@ READ_ONLY static exn_rec exn_table[] = { { 2, NULL, NULL, 0, NULL, 2 }, { 3, NULL, NULL, 0, NULL, 2 }, { 3, NULL, NULL, 0, NULL, 1 }, + { 3, NULL, NULL, 0, NULL, 8 }, { 3, NULL, NULL, 0, NULL, 1 }, - { 3, NULL, NULL, 0, NULL, 9 }, - { 3, NULL, NULL, 0, NULL, 9 }, + { 3, NULL, NULL, 0, NULL, 10 }, + { 3, NULL, NULL, 0, NULL, 10 }, { 2, NULL, NULL, 0, NULL, 1 }, - { 2, NULL, NULL, 0, NULL, 12 }, - { 2, NULL, NULL, 0, NULL, 12 }, + { 2, NULL, NULL, 0, NULL, 13 }, + { 2, NULL, NULL, 0, NULL, 13 }, { 2, NULL, NULL, 0, NULL, 1 }, { 2, NULL, NULL, 0, NULL, 1 }, { 2, NULL, NULL, 0, NULL, 1 }, @@ -54,7 +56,7 @@ READ_ONLY static exn_rec exn_table[] = { { 3, NULL, NULL, 0, NULL, 0 } }; #else -READ_ONLY static exn_rec *exn_table; +static exn_rec *exn_table; #endif #endif @@ -72,6 +74,7 @@ READ_ONLY static exn_rec *exn_table; exn_table[MZEXN_FAIL_CONTRACT_CONTINUATION].args = 2; exn_table[MZEXN_FAIL_CONTRACT_VARIABLE].args = 3; exn_table[MZEXN_FAIL_SYNTAX].args = 3; + exn_table[MZEXN_FAIL_SYNTAX_UNBOUND].args = 3; exn_table[MZEXN_FAIL_READ].args = 3; exn_table[MZEXN_FAIL_READ_EOF].args = 3; exn_table[MZEXN_FAIL_READ_NON_CHAR].args = 3; @@ -88,11 +91,11 @@ READ_ONLY static exn_rec *exn_table; #endif #ifdef _MZEXN_DECL_FIELDS - READ_ONLY static const char *MZEXN_FIELDS[2] = { "message", "continuation-marks" }; - READ_ONLY static const char *MZEXN_FAIL_CONTRACT_VARIABLE_FIELDS[1] = { "id" }; - READ_ONLY static const char *MZEXN_FAIL_SYNTAX_FIELDS[1] = { "exprs" }; - READ_ONLY static const char *MZEXN_FAIL_READ_FIELDS[1] = { "srclocs" }; - READ_ONLY static const char *MZEXN_BREAK_FIELDS[1] = { "continuation" }; + static const char *MZEXN_FIELDS[2] = { "message", "continuation-marks" }; + static const char *MZEXN_FAIL_CONTRACT_VARIABLE_FIELDS[1] = { "id" }; + static const char *MZEXN_FAIL_SYNTAX_FIELDS[1] = { "exprs" }; + static const char *MZEXN_FAIL_READ_FIELDS[1] = { "srclocs" }; + static const char *MZEXN_BREAK_FIELDS[1] = { "continuation" }; #endif #ifdef _MZEXN_DECL_PROPS @@ -110,6 +113,7 @@ READ_ONLY static exn_rec *exn_table; SETUP_STRUCT(MZEXN_FAIL_CONTRACT_CONTINUATION, EXN_PARENT(MZEXN_FAIL_CONTRACT), "exn:fail:contract:continuation", 0, NULL, scheme_null, NULL) SETUP_STRUCT(MZEXN_FAIL_CONTRACT_VARIABLE, EXN_PARENT(MZEXN_FAIL_CONTRACT), "exn:fail:contract:variable", 1, MZEXN_FAIL_CONTRACT_VARIABLE_FIELDS, scheme_null, scheme_make_prim(variable_field_check)) SETUP_STRUCT(MZEXN_FAIL_SYNTAX, EXN_PARENT(MZEXN_FAIL), "exn:fail:syntax", 1, MZEXN_FAIL_SYNTAX_FIELDS, MZEXN_FAIL_SYNTAX_PROPS, scheme_make_prim(syntax_field_check)) + SETUP_STRUCT(MZEXN_FAIL_SYNTAX_UNBOUND, EXN_PARENT(MZEXN_FAIL_SYNTAX), "exn:fail:syntax:unbound", 0, NULL, scheme_null, NULL) SETUP_STRUCT(MZEXN_FAIL_READ, EXN_PARENT(MZEXN_FAIL), "exn:fail:read", 1, MZEXN_FAIL_READ_FIELDS, MZEXN_FAIL_READ_PROPS, scheme_make_prim(read_field_check)) SETUP_STRUCT(MZEXN_FAIL_READ_EOF, EXN_PARENT(MZEXN_FAIL_READ), "exn:fail:read:eof", 0, NULL, scheme_null, NULL) SETUP_STRUCT(MZEXN_FAIL_READ_NON_CHAR, EXN_PARENT(MZEXN_FAIL_READ), "exn:fail:read:non-char", 0, NULL, scheme_null, NULL) diff --git a/src/racket/src/schminc.h b/src/racket/src/schminc.h index 50063a6139..1ed428b37d 100644 --- a/src/racket/src/schminc.h +++ b/src/racket/src/schminc.h @@ -13,7 +13,7 @@ #define USE_COMPILED_STARTUP 1 -#define EXPECTED_PRIM_COUNT 1035 +#define EXPECTED_PRIM_COUNT 1043 #define EXPECTED_UNSAFE_COUNT 78 #define EXPECTED_FLFXNUM_COUNT 68 #define EXPECTED_FUTURES_COUNT 11 diff --git a/src/racket/src/schpriv.h b/src/racket/src/schpriv.h index c76bb215f5..f78bd7c9b5 100644 --- a/src/racket/src/schpriv.h +++ b/src/racket/src/schpriv.h @@ -1995,6 +1995,8 @@ Scheme_Object *scheme_bitwise_and(int argc, Scheme_Object *argv[]); int scheme_exact_p(Scheme_Object *n); int scheme_nonneg_exact_p(Scheme_Object *n); +Scheme_Object *scheme_floor(int argc, Scheme_Object *argv[]); + #ifdef TIME_TYPE_IS_UNSIGNED # define scheme_make_integer_value_from_time(t) scheme_make_integer_value_from_unsigned((uintptr_t)t) # define scheme_get_time_val(o, v) scheme_get_unsigned_int_val(o, v) @@ -3218,6 +3220,10 @@ void scheme_wrong_syntax(const char *where, Scheme_Object *local_form, Scheme_Object *form, const char *detail, ...); +void scheme_unbound_syntax(const char *where, + Scheme_Object *local_form, + Scheme_Object *form, + const char *detail, ...); void scheme_wrong_syntax_with_more_sources(const char *where, Scheme_Object *detail_form, Scheme_Object *form, diff --git a/src/racket/src/schvers.h b/src/racket/src/schvers.h index d38c7e414d..d9326cf70b 100644 --- a/src/racket/src/schvers.h +++ b/src/racket/src/schvers.h @@ -13,12 +13,12 @@ consistently.) */ -#define MZSCHEME_VERSION "5.1.3.10" +#define MZSCHEME_VERSION "5.1.3.11" #define MZSCHEME_VERSION_X 5 #define MZSCHEME_VERSION_Y 1 #define MZSCHEME_VERSION_Z 3 -#define MZSCHEME_VERSION_W 10 +#define MZSCHEME_VERSION_W 11 #define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y) #define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W) diff --git a/src/racket/src/struct.c b/src/racket/src/struct.c index 74cd5f6ce0..0055ccfb4a 100644 --- a/src/racket/src/struct.c +++ b/src/racket/src/struct.c @@ -158,6 +158,7 @@ Scheme_Object *special_comment_p(int argc, Scheme_Object **argv); static Scheme_Object *check_arity_at_least_fields(int argc, Scheme_Object **argv); static Scheme_Object *check_date_fields(int argc, Scheme_Object **argv); +static Scheme_Object *check_date_star_fields(int argc, Scheme_Object **argv); static Scheme_Object *check_location_fields(int argc, Scheme_Object **argv); static Scheme_Object *check_exn_source_property_value_ok(int argc, Scheme_Object *argv[]); @@ -227,6 +228,7 @@ scheme_init_struct (Scheme_Env *env) READ_ONLY static const char *date_fields[10] = { "second", "minute", "hour", "day", "month", "year", "week-day", "year-day", "dst?", "time-zone-offset" }; + READ_ONLY static const char *date_star_fields[2] = { "nanosecond", "time-zone-name" }; #endif READ_ONLY static const char *location_fields[10] = { "source", "line", "column", "position", "span" }; @@ -268,6 +270,22 @@ scheme_init_struct (Scheme_Env *env) env); } + scheme_date = scheme_make_struct_type_from_string("date*", scheme_date, 2, NULL, + scheme_make_prim(check_date_star_fields), 1); + + ts_names = scheme_make_struct_names_from_array("date*", + 2, date_star_fields, + BUILTIN_STRUCT_FLAGS, &ts_count); + + ts_values = scheme_make_struct_values(scheme_date, ts_names, ts_count, + BUILTIN_STRUCT_FLAGS); + + for (i = 0; i < ts_count - 1; i++) { + scheme_add_global_constant(scheme_symbol_val(ts_names[i]), ts_values[i], + env); + } + + #endif /* Add location structure: */ @@ -5015,39 +5033,64 @@ static Scheme_Object *check_date_fields(int argc, Scheme_Object **argv) a = argv[0]; if (!SCHEME_INTP(a) || (SCHEME_INT_VAL(a) < 0) || (SCHEME_INT_VAL(a) > 61)) - scheme_wrong_field_type(argv[10], "integer in [0, 61]", a); + scheme_wrong_field_type(argv[10], "exact integer in [0, 61]", a); a = argv[1]; if (!SCHEME_INTP(a) || (SCHEME_INT_VAL(a) < 0) || (SCHEME_INT_VAL(a) > 59)) - scheme_wrong_field_type(argv[10], "integer in [0, 59]", a); + scheme_wrong_field_type(argv[10], "exact integer in [0, 59]", a); a = argv[2]; if (!SCHEME_INTP(a) || (SCHEME_INT_VAL(a) < 0) || (SCHEME_INT_VAL(a) > 23)) - scheme_wrong_field_type(argv[10], "integer in [0, 23]", a); + scheme_wrong_field_type(argv[10], "exact integer in [0, 23]", a); a = argv[3]; if (!SCHEME_INTP(a) || (SCHEME_INT_VAL(a) < 1) || (SCHEME_INT_VAL(a) > 31)) - scheme_wrong_field_type(argv[10], "integer in [1, 31]", a); + scheme_wrong_field_type(argv[10], "exact integer in [1, 31]", a); a = argv[4]; if (!SCHEME_INTP(a) || (SCHEME_INT_VAL(a) < 1) || (SCHEME_INT_VAL(a) > 12)) - scheme_wrong_field_type(argv[10], "integer in [1, 12]", a); + scheme_wrong_field_type(argv[10], "exact integer in [1, 12]", a); a = argv[5]; if (!SCHEME_INTP(a) && !SCHEME_BIGNUMP(a)) scheme_wrong_field_type(argv[10], "exact integer", a); a = argv[6]; if (!SCHEME_INTP(a) || (SCHEME_INT_VAL(a) < 0) || (SCHEME_INT_VAL(a) > 6)) - scheme_wrong_field_type(argv[10], "integer in [0, 6]", a); + scheme_wrong_field_type(argv[10], "exact integer in [0, 6]", a); a = argv[7]; if (!SCHEME_INTP(a) || (SCHEME_INT_VAL(a) < 0) || (SCHEME_INT_VAL(a) > 365)) - scheme_wrong_field_type(argv[10], "integer in [0, 365]", a); + scheme_wrong_field_type(argv[10], "exact integer in [0, 365]", a); a = argv[9]; if (!SCHEME_INTP(a) && !SCHEME_BIGNUMP(a)) scheme_wrong_field_type(argv[10], "exact integer", a); - /* Normalize dst? boolean: */ + /* Normalize dst? boolean: */ memcpy(args, argv, sizeof(Scheme_Object *) * 10); args[8] = (SCHEME_TRUEP(argv[8]) ? scheme_true : scheme_false); - + return scheme_values(10, args); } +static Scheme_Object *check_date_star_fields(int argc, Scheme_Object **argv) +{ + Scheme_Object *args[12], *a; + + a = argv[10]; + if (!SCHEME_INTP(a) || (SCHEME_INT_VAL(a) < 0) + || (SCHEME_INT_VAL(a) > 999999999)) + scheme_wrong_field_type(argv[12], "exact integer in [0, 999999999]", a); + + a = argv[11]; + if (!SCHEME_CHAR_STRINGP(a)) + scheme_wrong_field_type(argv[12], "string", a); + + memcpy(args, argv, sizeof(Scheme_Object *) * 12); + if (!SCHEME_IMMUTABLEP(argv[11])) { + a = argv[11]; + a = scheme_make_immutable_sized_char_string(SCHEME_CHAR_STR_VAL(a), + SCHEME_CHAR_STRLEN_VAL(a), + 1); + args[11] = a; + } + + return scheme_values(12, args); +} + /*========================================================================*/ /* special-comment struct */ /*========================================================================*/