diff --git a/pkgs/base/info.rkt b/pkgs/base/info.rkt index 2a86c55b16..df9bad6d22 100644 --- a/pkgs/base/info.rkt +++ b/pkgs/base/info.rkt @@ -12,7 +12,7 @@ (define collection 'multi) -(define version "6.1.1.4") +(define version "6.1.1.5") (define deps `("racket-lib" ["racket" #:version ,version])) diff --git a/pkgs/racket-pkgs/racket-doc/scribblings/reference/chaperones.scrbl b/pkgs/racket-pkgs/racket-doc/scribblings/reference/chaperones.scrbl index f2b9417287..d76a47ac71 100644 --- a/pkgs/racket-pkgs/racket-doc/scribblings/reference/chaperones.scrbl +++ b/pkgs/racket-pkgs/racket-doc/scribblings/reference/chaperones.scrbl @@ -216,6 +216,28 @@ mark during the call to @racket[wrapper-proc] (which allows tail-calls of impersonators with respect to wrapping impersonators to be detected within @racket[wrapper-proc]).} +@defproc[(impersonate-procedure* [proc procedure?] + [wrapper-proc (or/c procedure? #f)] + [prop impersonator-property?] + [prop-val any] ... ...) + (and/c procedure? impersonator?)]{ + +Like @racket[impersonate-procedure], except that @racket[wrapper-proc] +receives an additional argument before all other arguments. The +additional argument is the procedure @racket[_orig-proc] that was +original applied. + +If the result of @racket[impersonate-procedure*] is applied directly, +then @racket[_orig-proc] is that result. If the result is further +impersonated before being applied, however, @racket[_orig-proc] is the +further impersonator. + +An @racket[_orig-proc] argument might be useful so that +@racket[wrapper-proc] can extract @tech{impersonator properties} +that are overridden by further impersonators, for example. + +@history[#:added "6.1.1.5"]} + @defproc[(impersonate-struct [v any/c] [orig-proc (or/c struct-accessor-procedure? @@ -583,6 +605,19 @@ chaperone procedure (i.e., not counting optional arguments that were not supplied). The arguments must be ordered according to the sorted order of the supplied arguments' keywords.} + +@defproc[(chaperone-procedure* [proc procedure?] + [wrapper-proc (or/c procedure? #f)] + [prop impersonator-property?] + [prop-val any] ... ...) + (and/c procedure? chaperone?)]{ + +Like @racket[chaperone-procedure], but @racket[wrapper-proc] receives +an extra argument as with @racket[impersonate-procedure*]. + +@history[#:added "6.1.1.5"]} + + @defproc[(chaperone-struct [v any/c] [orig-proc (or/c struct-accessor-procedure? struct-mutator-procedure? diff --git a/pkgs/racket-pkgs/racket-test/tests/racket/chaperone.rktl b/pkgs/racket-pkgs/racket-test/tests/racket/chaperone.rktl index 346e36ce06..eaa7fb5545 100644 --- a/pkgs/racket-pkgs/racket-test/tests/racket/chaperone.rktl +++ b/pkgs/racket-pkgs/racket-test/tests/racket/chaperone.rktl @@ -13,10 +13,10 @@ (test #t impersonator? a) (chaperone? a)) -(define-syntax-rule (as-chaperone-or-impersonator ([orig impersonator] ...) body ...) +(define-syntax-rule (as-chaperone-or-impersonator ([orig impersonator ...] ...) body ...) (for-each (lambda (orig ...) body ...) - (list orig impersonator) ...)) + (list orig impersonator ...) ...)) ;; ---------------------------------------- @@ -59,14 +59,24 @@ (let* ([p (lambda (x) x)] [p1 (impersonate-procedure p (lambda (y) y))] - [p2 (chaperone-procedure p1 (lambda (y) y))]) + [p2 (chaperone-procedure p1 (lambda (y) y))] + [p1* (impersonate-procedure* p (lambda (self y) y))] + [p2* (chaperone-procedure* p1 (lambda (self y) y))]) (test #t impersonator-of? p2 p) (test #t impersonator-of? p2 p1) (test #t impersonator? p1) (test #f chaperone? p1) (test #t chaperone? p2) (test #f chaperone-of? p2 p) - (test #t chaperone-of? p2 p1)) + (test #t chaperone-of? p2 p1) + + (test #t impersonator-of? p2* p) + (test #t impersonator-of? p2* p1) + (test #t impersonator? p1*) + (test #f chaperone? p1*) + (test #t chaperone? p2*) + (test #f chaperone-of? p2* p) + (test #t chaperone-of? p2* p1)) ;; ---------------------------------------- @@ -211,14 +221,30 @@ (test #t chaperone?/impersonator (chaperone-procedure (lambda (x) x) (lambda (y) y))) (test #t impersonator? (impersonate-procedure (lambda (x) x) (lambda (y) y))) +(test #t impersonator? (impersonate-procedure* (lambda (x) x) (lambda (self y) y))) (test #t procedure? (chaperone-procedure (lambda (x) x) (lambda (y) y))) +(test #t procedure? (chaperone-procedure* (lambda (x) x) (lambda (self y) y))) (test #t procedure? (impersonate-procedure (lambda (x) x) (lambda (y) y))) +(test #t procedure? (impersonate-procedure* (lambda (x) x) (lambda (self y) y))) (test #t (lambda (x) (procedure? x)) (chaperone-procedure (lambda (x) x) (lambda (y) y))) (test #t (lambda (x) (procedure? x)) (impersonate-procedure (lambda (x) x) (lambda (y) y))) (err/rt-test (chaperone-procedure (lambda (x) x) (lambda (y z) y))) (err/rt-test (impersonate-procedure (lambda (x) x) (lambda (y z) y))) (err/rt-test (chaperone-procedure (case-lambda [() 0] [(x) x]) (lambda (y) y))) (err/rt-test (impersonate-procedure (case-lambda [() 0] [(x) x]) (lambda (y) y))) +(err/rt-test (chaperone-procedure (case-lambda [() 0] [(x) x]) (lambda (y) y))) +(err/rt-test (impersonate-procedure (case-lambda [() 0] [(x) x]) (lambda (y) y))) +(err/rt-test (chaperone-procedure* (lambda (x) x) (lambda (y) y))) +(err/rt-test (impersonate-procedure* (lambda (x) x) (lambda (y) y))) +(err/rt-test (chaperone-procedure* (lambda (x) x) (lambda (self z y) y))) +(err/rt-test (impersonate-procedure* (lambda (x) x) (lambda (self z y) y))) +(err/rt-test (chaperone-procedure* (case-lambda [() 0] [(x) x]) (lambda (self y) y))) +(err/rt-test (chaperone-procedure* (case-lambda [() 0] [(x) x]) (case-lambda [() 0] [(self y) y]))) +(err/rt-test (impersonate-procedure* (case-lambda [() 0] [(x) x]) (case-lambda [() 0] [(self y) y]))) +(err/rt-test (chaperone-procedure* (case-lambda [() 0] [(x) x]) (case-lambda [(self) 0] [(self z y) y]))) +(err/rt-test (impersonate-procedure* (case-lambda [() 0] [(x) x]) (case-lambda [(self) 0] [(self z y) y]))) +(test #t procedure? (chaperone-procedure* (case-lambda [() 0] [(x) x]) (case-lambda [(self) 0] [(self y) y]))) +(test #t procedure? (impersonate-procedure* (case-lambda [() 0] [(x) x]) (case-lambda [(self) 0] [(self y) y]))) (test 88 (impersonate-procedure (lambda (x) x) (lambda (y) 88)) 10) (err/rt-test ((chaperone-procedure (lambda (x) x) (lambda (y) 88)) 10)) @@ -226,9 +252,52 @@ (test 89 (impersonate-procedure (lambda (x) x) (lambda (y) (values (lambda (z) 89) y))) 10) (err/rt-test ((chaperone-procedure (lambda (x) x) (lambda (y) (values (lambda (z) 89) y))) 10)) +(test 88 (impersonate-procedure* (lambda (x) x) (lambda (self y) 88)) 10) +(letrec ([final (impersonate-procedure* + (impersonate-procedure + (impersonate-procedure* (lambda (x) x) + (lambda (self y) + (test #t eq? self final) + (add1 y))) + (lambda (y) + (add1 y))) + (lambda (self y) + (test #t eq? self final) + (add1 y)))]) + (test 13 final 10)) +(letrec ([final (impersonate-procedure* + (impersonate-procedure + (impersonate-procedure* (lambda (x) x) + (lambda (self y) + (test #t eq? self final) + (values list (add1 y)))) + (lambda (y) + (values list (add1 y)))) + (lambda (self y) + (test #t eq? self final) + (values list (add1 y))))]) + (test '(((13))) final 10)) + +(define (chaperone-procedure** a b) + (chaperone-procedure* a (lambda (self . args) + (apply b args)))) +(define (impersonate-procedure** a b) + (impersonate-procedure* a (lambda (self . args) + (apply b args)))) +(define (chaperone-procedure**/kw a b) + (chaperone-procedure* a (make-keyword-procedure + (lambda (kws kw-args self . args) + (keyword-apply b kws kw-args args))))) +(define (impersonate-procedure**/kw a b) + (impersonate-procedure* a (make-keyword-procedure + (lambda (kws kw-args self . args) + (keyword-apply b kws kw-args args))))) + ;; Single argument, no post filter: (as-chaperone-or-impersonator - ([chaperone-procedure impersonate-procedure]) + ([chaperone-procedure impersonate-procedure + chaperone-procedure** + impersonate-procedure**]) (let* ([f (lambda (x) (list x x))] [in #f] [f2 (chaperone-procedure @@ -243,7 +312,9 @@ ;; Multiple arguments, no post filter: (as-chaperone-or-impersonator - ([chaperone-procedure impersonate-procedure]) + ([chaperone-procedure impersonate-procedure + chaperone-procedure** + impersonate-procedure**]) (let* ([f (lambda (x y) (list x y))] [in #f] [f2 (chaperone-procedure @@ -258,7 +329,9 @@ ;; Single argument, post filter on single value: (as-chaperone-or-impersonator - ([chaperone-procedure impersonate-procedure]) + ([chaperone-procedure impersonate-procedure + chaperone-procedure** + impersonate-procedure**]) (let* ([f (lambda (x) (list x x))] [in #f] [out #f] @@ -279,7 +352,9 @@ ;; Multiple arguments, post filter on multiple values: (as-chaperone-or-impersonator - ([chaperone-procedure impersonate-procedure]) + ([chaperone-procedure impersonate-procedure + chaperone-procedure** + impersonate-procedure**]) (let* ([f (lambda (x y z) (values y (list x z)))] [in #f] [out #f] @@ -300,7 +375,9 @@ ;; Optional keyword arguments: (as-chaperone-or-impersonator - ([chaperone-procedure impersonate-procedure]) + ([chaperone-procedure impersonate-procedure + chaperone-procedure**/kw + impersonate-procedure**/kw]) (let* ([f (lambda (x #:a [a 'a] #:b [b 'b]) (list x a b))] [in #f] [f2 (chaperone-procedure @@ -327,7 +404,9 @@ ;; Optional keyword arguments with result chaperone: (as-chaperone-or-impersonator - ([chaperone-procedure impersonate-procedure]) + ([chaperone-procedure impersonate-procedure + chaperone-procedure**/kw + impersonate-procedure**/kw]) (let* ([f (lambda (x #:a [a 'a] #:b [b 'b]) (list x a b))] [in #f] [out #f] @@ -360,7 +439,9 @@ ;; Required keyword arguments: (as-chaperone-or-impersonator - ([chaperone-procedure impersonate-procedure]) + ([chaperone-procedure impersonate-procedure + chaperone-procedure**/kw + impersonate-procedure**/kw]) (let* ([f (lambda (x #:a [a 'a] #:b b) (list x a b))] [in #f] [f2 (chaperone-procedure @@ -387,7 +468,9 @@ ;; Required keyword arguments: (as-chaperone-or-impersonator - ([chaperone-procedure impersonate-procedure]) + ([chaperone-procedure impersonate-procedure + chaperone-procedure**/kw + impersonate-procedure**/kw]) (let* ([f (lambda (x #:a [a 'a] #:b b) (list x a b))] [in #f] [out #f] diff --git a/racket/collects/racket/private/kw.rkt b/racket/collects/racket/private/kw.rkt index 1a850be38a..7598635132 100644 --- a/racket/collects/racket/private/kw.rkt +++ b/racket/collects/racket/private/kw.rkt @@ -27,6 +27,8 @@ new:procedure-rename new:chaperone-procedure new:impersonate-procedure + new:chaperone-procedure* + new:impersonate-procedure* (for-syntax kw-expander? kw-expander-impl kw-expander-proc syntax-procedure-alias-property syntax-procedure-converted-arguments-property)) @@ -1522,18 +1524,30 @@ procedure-rename)) (define new:chaperone-procedure - (let ([chaperone-procedure + (let ([chaperone-procedure (lambda (proc wrap-proc . props) - (do-chaperone-procedure #f chaperone-procedure 'chaperone-procedure proc wrap-proc props))]) + (do-chaperone-procedure #f #f chaperone-procedure 'chaperone-procedure proc wrap-proc props))]) chaperone-procedure)) (define new:impersonate-procedure - (let ([impersonate-procedure + (let ([impersonate-procedure (lambda (proc wrap-proc . props) - (do-chaperone-procedure #t impersonate-procedure 'impersonate-procedure proc wrap-proc props))]) + (do-chaperone-procedure #t #f impersonate-procedure 'impersonate-procedure proc wrap-proc props))]) impersonate-procedure)) - (define (do-chaperone-procedure is-impersonator? chaperone-procedure name proc wrap-proc props) + (define new:chaperone-procedure* + (let ([chaperone-procedure* + (lambda (proc wrap-proc . props) + (do-chaperone-procedure #f #t chaperone-procedure* 'chaperone-procedure proc wrap-proc props))]) + chaperone-procedure*)) + + (define new:impersonate-procedure* + (let ([impersonate-procedure* + (lambda (proc wrap-proc . props) + (do-chaperone-procedure #t #t impersonate-procedure* 'impersonate-procedure proc wrap-proc props))]) + impersonate-procedure*)) + + (define (do-chaperone-procedure is-impersonator? self-arg? chaperone-procedure name proc wrap-proc props) (let ([n-proc (normalize-proc proc)] [n-wrap-proc (normalize-proc wrap-proc)]) (if (or (not (keyword-procedure? n-proc)) @@ -1550,20 +1564,21 @@ (apply chaperone-procedure proc wrap-proc props) (let-values ([(a) (procedure-arity proc)] [(b) (procedure-arity wrap-proc)] + [(d) (if self-arg? 1 0)] [(a-req a-allow) (procedure-keywords proc)] [(b-req b-allow) (procedure-keywords wrap-proc)]) (define (includes? a b) (cond [(number? b) (cond - [(number? a) (= b a)] + [(number? a) (= b (+ a d))] [(arity-at-least? a) - (b . >= . (arity-at-least-value a))] + (b . >= . (+ (arity-at-least-value a) d))] [else (ormap (lambda (a) (includes? a b)) a)])] [(arity-at-least? b) (cond [(number? a) #f] [(arity-at-least? a) - ((arity-at-least-value b) . >= . (arity-at-least-value a))] + ((arity-at-least-value b) . >= . (+ (arity-at-least-value a) d))] [else (ormap (lambda (a) (includes? b a)) a)])] [else (andmap (lambda (b) (includes? a b)) b)])) @@ -1586,54 +1601,61 @@ "original procedure" proc)) (let*-values ([(kw-chaperone) (let ([p (keyword-procedure-proc n-wrap-proc)]) - (case-lambda - [(kws args . rest) - (call-with-values (lambda () (apply p kws args rest)) - (lambda results - (let* ([len (length results)] - [alen (length rest)]) - (unless (<= (+ alen 1) len (+ alen 2)) - (raise-arguments-error - '|keyword procedure chaperone| - "wrong number of results from wrapper procedure" - "expected minimum number of results" (+ alen 1) - "expected maximum number of results" (+ alen 2) - "received number of results" len - "wrapper procedure" wrap-proc)) - (let ([extra? (= len (+ alen 2))]) - (let ([new-args ((if extra? cadr car) results)]) - (unless (and (list? new-args) - (= (length new-args) (length args))) - (raise-arguments-error - '|keyword procedure chaperone| - (format - "expected a list of keyword-argument values as first result~a from wrapper procedure" - (if (= len alen) - "" - " (after the result-wrapper procedure)")) - "first result" new-args - "wrapper procedure" wrap-proc)) - (for-each - (lambda (kw new-arg arg) - (unless is-impersonator? - (unless (chaperone-of? new-arg arg) - (raise-arguments-error - '|keyword procedure chaperone| - (format - "~a keyword result is not a chaperone of original argument from chaperoning procedure" - kw) - "result" new-arg - "wrapper procedure" wrap-proc)))) - kws - new-args - args)) - (if extra? - (apply values (car results) kws (cdr results)) - (apply values kws results))))))] - ;; The following case exists only to make sure that the arity of - ;; any procedure passed to `make-keyword-args' is covered - ;; bu this procedure's arity. - [other (error "shouldn't get here")]))] + ;; `extra-arg ...` will be `self-proc` if `self-arg?`: + (define-syntax gen-wrapper + (syntax-rules () + [(_ extra-arg ...) + (case-lambda + [(extra-arg ... kws args . rest) + (call-with-values (lambda () (apply p kws args extra-arg ... rest)) + (lambda results + (let* ([len (length results)] + [alen (length rest)]) + (unless (<= (+ alen 1) len (+ alen 2)) + (raise-arguments-error + '|keyword procedure chaperone| + "wrong number of results from wrapper procedure" + "expected minimum number of results" (+ alen 1) + "expected maximum number of results" (+ alen 2) + "received number of results" len + "wrapper procedure" wrap-proc)) + (let ([extra? (= len (+ alen 2))]) + (let ([new-args ((if extra? cadr car) results)]) + (unless (and (list? new-args) + (= (length new-args) (length args))) + (raise-arguments-error + '|keyword procedure chaperone| + (format + "expected a list of keyword-argument values as first result~a from wrapper procedure" + (if (= len alen) + "" + " (after the result-wrapper procedure)")) + "first result" new-args + "wrapper procedure" wrap-proc)) + (for-each + (lambda (kw new-arg arg) + (unless is-impersonator? + (unless (chaperone-of? new-arg arg) + (raise-arguments-error + '|keyword procedure chaperone| + (format + "~a keyword result is not a chaperone of original argument from chaperoning procedure" + kw) + "result" new-arg + "wrapper procedure" wrap-proc)))) + kws + new-args + args)) + (if extra? + (apply values (car results) kws (cdr results)) + (apply values kws results))))))] + ;; The following case exists only to make sure that the arity of + ;; any procedure passed to `make-keyword-args' is covered + ;; by this procedure's arity. + [other (error "shouldn't get here")])])) + (if self-arg? + (gen-wrapper self-proc) + (gen-wrapper)))] [(new-proc chap-accessor) (let wrap ([proc proc] [n-proc n-proc]) (cond @@ -1664,16 +1686,24 @@ (chaperone-procedure proc (make-keyword-procedure - (lambda (kws kw-args self . args) - ;; Chain to `kw-chaperone', pulling out the self - ;; argument, and then putting it back: - (define len (length args)) - (call-with-values - (lambda () (apply kw-chaperone kws kw-args args)) - (lambda results - (if (= (length results) (add1 len)) - (apply values (car results) self (cdr results)) - (apply values (car results) (cadr results) self (cddr results)))))))))) + (let () + ;; `extra-arg ...` will be `self-proc` if `self-arg?`: + (define-syntax gen-proc + (syntax-rules () + [(_ extra-arg ...) + (lambda (extra-arg ... kws kw-args self . args) + ;; Chain to `kw-chaperone', pulling out the self + ;; argument, and then putting it back: + (define len (length args)) + (call-with-values + (lambda () (apply kw-chaperone extra-arg ... kws kw-args args)) + (lambda results + (if (= (length results) (add1 len)) + (apply values (car results) self (cdr results)) + (apply values (car results) (cadr results) self (cddr results))))))])) + (if self-arg? + (gen-proc proc-self) + (gen-proc))))))) new-procedure-ref)])] [(okp? n-proc) (values @@ -1721,7 +1751,7 @@ new-proc (apply chaperone-struct new-proc ;; chaperone-struct insists on having at least one selector: - chap-accessor (lambda (s v) v) + chap-accessor #f props))))))) (define (normalize-proc proc) diff --git a/racket/collects/racket/private/pre-base.rkt b/racket/collects/racket/private/pre-base.rkt index cb913ae63d..8819acf0ce 100644 --- a/racket/collects/racket/private/pre-base.rkt +++ b/racket/collects/racket/private/pre-base.rkt @@ -175,12 +175,15 @@ (rename new:procedure-rename procedure-rename) (rename new:chaperone-procedure chaperone-procedure) (rename new:impersonate-procedure impersonate-procedure) + (rename new:chaperone-procedure* chaperone-procedure*) + (rename new:impersonate-procedure* impersonate-procedure*) (rename new:collection-path collection-path) (rename new:collection-file-path collection-file-path) (all-from-except '#%kernel lambda λ #%app #%module-begin apply prop:procedure procedure-arity procedure-reduce-arity raise-arity-error procedure->method procedure-rename chaperone-procedure impersonate-procedure + chaperone-procedure* impersonate-procedure* assq assv assoc prop:incomplete-arity prop:method-arity-error) (all-from "reqprov.rkt") diff --git a/racket/src/racket/include/scheme.h b/racket/src/racket/include/scheme.h index 6de06b078e..0ecf446408 100644 --- a/racket/src/racket/include/scheme.h +++ b/racket/src/racket/include/scheme.h @@ -1214,6 +1214,10 @@ typedef struct Scheme_Thread { } k; } ku; + /* To pass the current procedure from one chaperone + layer to the next: */ + Scheme_Object *self_for_proc_chaperone; + short suspend_break; short external_break; diff --git a/racket/src/racket/src/cstartup.inc b/racket/src/racket/src/cstartup.inc index f0ae56c93f..43498eb202 100644 --- a/racket/src/racket/src/cstartup.inc +++ b/racket/src/racket/src/cstartup.inc @@ -1,13 +1,13 @@ { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,54,46,49,46,49,46,52,84,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,54,46,49,46,49,46,53,84,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,14,0, -27,0,32,0,37,0,42,0,45,0,52,0,56,0,60,0,67,0,74,0,83, +19,0,24,0,37,0,42,0,45,0,52,0,56,0,60,0,67,0,74,0,83, 0,87,0,93,0,107,0,121,0,124,0,130,0,134,0,136,0,147,0,149,0, 163,0,170,0,192,0,194,0,208,0,19,1,48,1,59,1,70,1,96,1,129, 1,162,1,224,1,24,2,105,2,161,2,166,2,187,2,84,3,105,3,158,3, -225,3,114,4,2,5,56,5,67,5,150,5,0,0,115,7,0,0,69,35,37, -109,105,110,45,115,116,120,29,11,11,11,72,112,97,114,97,109,101,116,101,114, -105,122,101,64,99,111,110,100,64,119,104,101,110,64,108,101,116,42,62,111,114, +227,3,117,4,7,5,61,5,72,5,155,5,0,0,120,7,0,0,69,35,37, +109,105,110,45,115,116,120,29,11,11,11,64,99,111,110,100,64,119,104,101,110, +72,112,97,114,97,109,101,116,101,114,105,122,101,64,108,101,116,42,62,111,114, 66,117,110,108,101,115,115,63,108,101,116,63,97,110,100,66,100,101,102,105,110, 101,66,108,101,116,114,101,99,68,104,101,114,101,45,115,116,120,29,11,11,11, 65,113,117,111,116,101,29,94,2,15,68,35,37,107,101,114,110,101,108,11,29, @@ -16,91 +16,91 @@ 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, -236,88,0,0,95,144,2,17,36,36,144,2,16,36,36,144,2,16,36,36,16, +19,89,0,0,95,144,2,17,36,36,144,2,16,36,36,144,2,16,36,36,16, 20,2,3,2,2,2,4,2,2,2,5,2,2,2,6,2,2,2,7,2,2, 2,8,2,2,2,9,2,2,2,10,2,2,2,11,2,2,2,12,2,2,97, -37,11,8,240,236,88,0,0,93,144,2,16,36,37,16,2,2,13,146,2,2, -37,2,13,2,2,2,13,96,11,11,8,240,236,88,0,0,16,0,96,38,11, -8,240,236,88,0,0,16,0,18,98,64,104,101,114,101,13,16,6,36,2,14, -2,2,11,11,11,8,32,8,31,8,30,8,29,27,248,22,164,4,195,249,22, -157,4,80,143,39,36,251,22,90,2,18,248,22,102,199,12,249,22,80,2,19, -248,22,104,201,27,248,22,164,4,195,249,22,157,4,80,143,39,36,251,22,90, -2,18,248,22,102,199,249,22,80,2,19,248,22,104,201,12,27,248,22,82,248, -22,164,4,196,28,248,22,88,193,20,14,144,37,36,37,28,248,22,88,248,22, -82,194,248,22,156,20,193,249,22,157,4,80,143,39,36,251,22,90,2,18,248, -22,156,20,199,249,22,80,2,10,248,22,157,20,201,11,18,100,10,13,16,6, +37,11,8,240,19,89,0,0,93,144,2,16,36,37,16,2,2,13,146,2,2, +37,2,13,2,2,2,13,96,11,11,8,240,19,89,0,0,16,0,96,38,11, +8,240,19,89,0,0,16,0,18,98,64,104,101,114,101,13,16,6,36,2,14, +2,2,11,11,11,8,32,8,31,8,30,8,29,27,248,22,166,4,195,249,22, +159,4,80,143,39,36,251,22,92,2,18,248,22,104,199,12,249,22,82,2,19, +248,22,106,201,27,248,22,166,4,195,249,22,159,4,80,143,39,36,251,22,92, +2,18,248,22,104,199,249,22,82,2,19,248,22,106,201,12,27,248,22,84,248, +22,166,4,196,28,248,22,90,193,20,14,144,37,36,37,28,248,22,90,248,22, +84,194,248,22,158,20,193,249,22,159,4,80,143,39,36,251,22,92,2,18,248, +22,158,20,199,249,22,82,2,10,248,22,159,20,201,11,18,100,10,13,16,6, 36,2,14,2,2,11,11,11,8,32,8,31,8,30,8,29,16,4,11,11,2, -20,3,1,8,101,110,118,49,55,56,56,56,16,4,11,11,2,21,3,1,8, -101,110,118,49,55,56,56,57,27,248,22,82,248,22,164,4,196,28,248,22,88, -193,20,14,144,37,36,37,28,248,22,88,248,22,82,194,248,22,156,20,193,249, -22,157,4,80,143,39,36,250,22,90,2,22,248,22,90,249,22,90,248,22,90, -2,23,248,22,156,20,201,251,22,90,2,18,2,23,2,23,249,22,80,2,7, -248,22,157,20,204,18,100,11,13,16,6,36,2,14,2,2,11,11,11,8,32, -8,31,8,30,8,29,16,4,11,11,2,20,3,1,8,101,110,118,49,55,56, -57,49,16,4,11,11,2,21,3,1,8,101,110,118,49,55,56,57,50,248,22, -164,4,193,27,248,22,164,4,194,249,22,80,248,22,90,248,22,81,196,248,22, -157,20,195,27,248,22,82,248,22,164,4,23,197,1,249,22,157,4,80,143,39, -36,28,248,22,64,248,22,158,4,248,22,81,23,198,2,27,249,22,2,32,0, -88,148,8,36,37,43,11,9,222,33,40,248,22,164,4,248,22,102,23,200,2, -250,22,90,2,24,248,22,90,249,22,90,248,22,90,248,22,156,20,23,204,2, -250,22,91,2,25,249,22,2,22,81,23,204,2,248,22,104,23,206,2,249,22, -80,248,22,156,20,23,202,1,249,22,2,22,102,23,200,1,250,22,91,2,22, -249,22,2,32,0,88,148,8,36,37,47,11,9,222,33,41,248,22,164,4,248, -22,156,20,201,248,22,157,20,198,27,248,22,164,4,194,249,22,80,248,22,90, -248,22,81,196,248,22,157,20,195,27,248,22,82,248,22,164,4,23,197,1,249, -22,157,4,80,143,39,36,250,22,91,2,24,249,22,2,32,0,88,148,8,36, -37,47,11,9,222,33,43,248,22,164,4,248,22,81,201,248,22,157,20,198,27, -248,22,82,248,22,164,4,196,27,248,22,164,4,248,22,81,195,249,22,157,4, -80,143,40,36,28,248,22,88,195,250,22,91,2,22,9,248,22,82,199,250,22, -90,2,9,248,22,90,248,22,81,199,250,22,91,2,6,248,22,157,20,201,248, -22,82,202,27,248,22,82,248,22,164,4,23,197,1,27,249,22,1,22,94,249, -22,2,22,164,4,248,22,164,4,248,22,81,199,248,22,185,4,249,22,157,4, -80,143,41,36,251,22,90,1,22,119,105,116,104,45,99,111,110,116,105,110,117, -97,116,105,111,110,45,109,97,114,107,2,26,250,22,91,1,23,101,120,116,101, -110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,21,95, -1,27,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114,107,45,115, -101,116,45,102,105,114,115,116,11,2,26,202,250,22,91,2,22,9,248,22,82, -204,27,248,22,82,248,22,164,4,196,28,248,22,88,193,20,14,144,37,36,37, -249,22,157,4,80,143,39,36,27,248,22,164,4,248,22,81,197,28,249,22,168, -9,62,61,62,248,22,158,4,248,22,102,196,250,22,90,2,22,248,22,90,249, -22,90,21,93,2,27,248,22,81,199,250,22,91,2,4,249,22,90,2,27,249, -22,90,248,22,111,203,2,27,248,22,82,202,251,22,90,2,18,28,249,22,168, -9,248,22,158,4,248,22,81,200,64,101,108,115,101,10,248,22,156,20,197,250, -22,91,2,22,9,248,22,157,20,200,249,22,80,2,4,248,22,82,202,99,13, -16,6,36,2,14,2,2,11,11,11,8,32,8,31,8,30,8,29,16,4,11, -11,2,20,3,1,8,101,110,118,49,55,57,49,52,16,4,11,11,2,21,3, -1,8,101,110,118,49,55,57,49,53,18,143,94,10,64,118,111,105,100,8,48, -27,248,22,82,248,22,164,4,196,249,22,157,4,80,143,39,36,28,248,22,64, -248,22,158,4,248,22,81,197,250,22,90,2,28,248,22,90,248,22,156,20,199, -248,22,102,198,27,248,22,158,4,248,22,156,20,197,250,22,90,2,28,248,22, -90,248,22,81,197,250,22,91,2,25,248,22,157,20,199,248,22,157,20,202,144, -36,20,114,144,36,16,1,11,16,0,20,26,15,58,9,2,1,2,1,2,2, -11,9,9,11,11,11,10,36,80,143,36,36,20,114,144,36,16,0,16,0,38, -39,36,16,0,36,16,0,36,11,11,11,16,10,2,3,2,4,2,5,2,6, -2,7,2,8,2,9,2,10,2,11,2,12,16,10,11,11,11,11,11,11,11, -11,11,11,16,10,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10, -2,11,2,12,36,46,37,16,0,36,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,144,36,36,37,80,143,36,36,36,20,114,144,36,16, -1,2,13,16,1,33,33,10,16,5,2,8,88,148,8,36,37,53,37,9,223, -0,33,34,36,20,114,144,36,16,1,2,13,16,0,11,16,5,2,5,88,148, -8,36,37,53,37,9,223,0,33,35,36,20,114,144,36,16,1,2,13,16,0, -11,16,5,2,10,88,148,8,36,37,53,37,9,223,0,33,36,36,20,114,144, -36,16,1,2,13,16,1,33,37,11,16,5,2,7,88,148,8,36,37,56,37, -9,223,0,33,38,36,20,114,144,36,16,1,2,13,16,1,33,39,11,16,5, -2,9,88,148,8,36,37,58,37,9,223,0,33,42,36,20,114,144,36,16,1, -2,13,16,0,11,16,5,2,12,88,148,8,36,37,53,37,9,223,0,33,44, -36,20,114,144,36,16,1,2,13,16,0,11,16,5,2,6,88,148,8,36,37, -54,37,9,223,0,33,45,36,20,114,144,36,16,1,2,13,16,0,11,16,5, -2,3,88,148,8,36,37,56,37,9,223,0,33,46,36,20,114,144,36,16,1, -2,13,16,0,11,16,5,2,4,88,148,8,36,37,58,37,9,223,0,33,47, -36,20,114,144,36,16,1,2,13,16,1,33,49,11,16,5,2,11,88,148,8, -36,37,54,37,9,223,0,33,50,36,20,114,144,36,16,1,2,13,16,0,11, -16,0,94,2,16,2,17,93,2,16,9,9,36,9,0}; - EVAL_ONE_SIZED_STR((char *)expr, 2051); +20,3,1,8,101,110,118,49,55,57,52,53,16,4,11,11,2,21,3,1,8, +101,110,118,49,55,57,52,54,27,248,22,84,248,22,166,4,196,28,248,22,90, +193,20,14,144,37,36,37,28,248,22,90,248,22,84,194,248,22,158,20,193,249, +22,159,4,80,143,39,36,250,22,92,2,22,248,22,92,249,22,92,248,22,92, +2,23,248,22,158,20,201,251,22,92,2,18,2,23,2,23,249,22,82,2,7, +248,22,159,20,204,18,100,11,13,16,6,36,2,14,2,2,11,11,11,8,32, +8,31,8,30,8,29,16,4,11,11,2,20,3,1,8,101,110,118,49,55,57, +52,56,16,4,11,11,2,21,3,1,8,101,110,118,49,55,57,52,57,248,22, +166,4,193,27,248,22,166,4,194,249,22,82,248,22,92,248,22,83,196,248,22, +159,20,195,27,248,22,84,248,22,166,4,23,197,1,249,22,159,4,80,143,39, +36,28,248,22,66,248,22,160,4,248,22,83,23,198,2,27,249,22,2,32,0, +88,148,8,36,37,43,11,9,222,33,40,248,22,166,4,248,22,104,23,200,2, +250,22,92,2,24,248,22,92,249,22,92,248,22,92,248,22,158,20,23,204,2, +250,22,93,2,25,249,22,2,22,83,23,204,2,248,22,106,23,206,2,249,22, +82,248,22,158,20,23,202,1,249,22,2,22,104,23,200,1,250,22,93,2,22, +249,22,2,32,0,88,148,8,36,37,47,11,9,222,33,41,248,22,166,4,248, +22,158,20,201,248,22,159,20,198,27,248,22,166,4,194,249,22,82,248,22,92, +248,22,83,196,248,22,159,20,195,27,248,22,84,248,22,166,4,23,197,1,249, +22,159,4,80,143,39,36,250,22,93,2,24,249,22,2,32,0,88,148,8,36, +37,47,11,9,222,33,43,248,22,166,4,248,22,83,201,248,22,159,20,198,27, +248,22,84,248,22,166,4,196,27,248,22,166,4,248,22,83,195,249,22,159,4, +80,143,40,36,28,248,22,90,195,250,22,93,2,22,9,248,22,159,20,199,250, +22,92,2,9,248,22,92,248,22,83,199,250,22,93,2,6,248,22,159,20,201, +248,22,159,20,202,27,248,22,84,248,22,166,4,23,197,1,27,249,22,1,22, +96,249,22,2,22,166,4,248,22,166,4,248,22,83,199,248,22,187,4,249,22, +159,4,80,143,41,36,251,22,92,1,22,119,105,116,104,45,99,111,110,116,105, +110,117,97,116,105,111,110,45,109,97,114,107,2,26,250,22,93,1,23,101,120, +116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110, +21,95,1,27,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114,107, +45,115,101,116,45,102,105,114,115,116,11,2,26,202,250,22,93,2,22,9,248, +22,159,20,204,27,248,22,84,248,22,166,4,196,28,248,22,90,193,20,14,144, +37,36,37,249,22,159,4,80,143,39,36,27,248,22,166,4,248,22,83,197,28, +249,22,170,9,62,61,62,248,22,160,4,248,22,104,196,250,22,92,2,22,248, +22,92,249,22,92,21,93,2,27,248,22,83,199,250,22,93,2,3,249,22,92, +2,27,249,22,92,248,22,113,203,2,27,248,22,159,20,202,251,22,92,2,18, +28,249,22,170,9,248,22,160,4,248,22,83,200,64,101,108,115,101,10,248,22, +158,20,197,250,22,93,2,22,9,248,22,159,20,200,249,22,82,2,3,248,22, +159,20,202,99,13,16,6,36,2,14,2,2,11,11,11,8,32,8,31,8,30, +8,29,16,4,11,11,2,20,3,1,8,101,110,118,49,55,57,55,49,16,4, +11,11,2,21,3,1,8,101,110,118,49,55,57,55,50,18,143,94,10,64,118, +111,105,100,8,48,27,248,22,84,248,22,166,4,196,249,22,159,4,80,143,39, +36,28,248,22,66,248,22,160,4,248,22,83,197,250,22,92,2,28,248,22,92, +248,22,158,20,199,248,22,104,198,27,248,22,160,4,248,22,158,20,197,250,22, +92,2,28,248,22,92,248,22,83,197,250,22,93,2,25,248,22,159,20,199,248, +22,159,20,202,144,36,20,114,144,36,16,1,11,16,0,20,26,15,58,9,2, +1,2,1,2,2,11,9,9,11,11,11,10,36,80,143,36,36,20,114,144,36, +16,0,16,0,38,39,36,16,0,36,16,0,36,11,11,11,16,10,2,3,2, +4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,16,10,11,11, +11,11,11,11,11,11,11,11,16,10,2,3,2,4,2,5,2,6,2,7,2, +8,2,9,2,10,2,11,2,12,36,46,37,16,0,36,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,144,36,36,37,80,143,36,36,36, +20,114,144,36,16,1,2,13,16,1,33,33,10,16,5,2,8,88,148,8,36, +37,53,37,9,223,0,33,34,36,20,114,144,36,16,1,2,13,16,0,11,16, +5,2,4,88,148,8,36,37,53,37,9,223,0,33,35,36,20,114,144,36,16, +1,2,13,16,0,11,16,5,2,10,88,148,8,36,37,53,37,9,223,0,33, +36,36,20,114,144,36,16,1,2,13,16,1,33,37,11,16,5,2,7,88,148, +8,36,37,56,37,9,223,0,33,38,36,20,114,144,36,16,1,2,13,16,1, +33,39,11,16,5,2,9,88,148,8,36,37,58,37,9,223,0,33,42,36,20, +114,144,36,16,1,2,13,16,0,11,16,5,2,12,88,148,8,36,37,53,37, +9,223,0,33,44,36,20,114,144,36,16,1,2,13,16,0,11,16,5,2,6, +88,148,8,36,37,54,37,9,223,0,33,45,36,20,114,144,36,16,1,2,13, +16,0,11,16,5,2,5,88,148,8,36,37,56,37,9,223,0,33,46,36,20, +114,144,36,16,1,2,13,16,0,11,16,5,2,3,88,148,8,36,37,58,37, +9,223,0,33,47,36,20,114,144,36,16,1,2,13,16,1,33,49,11,16,5, +2,11,88,148,8,36,37,54,37,9,223,0,33,50,36,20,114,144,36,16,1, +2,13,16,0,11,16,0,94,2,16,2,17,93,2,16,9,9,36,9,0}; + EVAL_ONE_SIZED_STR((char *)expr, 2056); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,54,46,49,46,49,46,52,84,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,54,46,49,46,49,46,53,84,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,193,0,0,0,1,0,0,8,0,21,0, 26,0,43,0,55,0,77,0,106,0,150,0,156,0,165,0,172,0,187,0,205, 0,217,0,233,0,247,0,13,1,32,1,39,1,73,1,90,1,107,1,130,1, @@ -110,17 +110,17 @@ 3,255,3,9,4,18,4,29,4,47,4,60,4,70,4,80,4,86,4,91,4, 103,4,106,4,110,4,115,4,158,4,171,4,174,4,198,4,237,4,244,4,1, 5,23,5,34,5,64,5,87,5,95,5,119,5,140,5,84,6,114,6,195,9, -218,9,235,9,159,11,6,12,20,12,220,12,192,14,201,14,210,14,224,14,234, -14,11,16,114,16,227,16,44,17,117,17,221,17,250,17,65,18,203,18,18,19, -231,19,93,20,106,20,224,20,237,20,76,21,143,21,156,21,167,21,63,22,181, -22,225,22,80,23,158,25,182,25,44,26,124,27,131,27,183,27,197,27,187,28, -203,28,58,29,217,29,224,29,100,31,177,31,194,31,94,32,114,32,174,32,181, -32,41,33,95,33,114,33,64,34,80,34,40,35,28,36,65,36,74,36,151,37, -252,39,12,40,79,40,100,40,120,40,140,40,197,40,164,43,130,44,146,44,117, -45,175,45,208,45,84,46,243,46,3,47,100,47,117,47,195,49,246,51,6,52, -236,53,168,54,170,54,196,54,212,54,228,54,69,55,136,56,68,57,83,57,92, -57,99,57,159,58,219,59,81,60,113,63,242,63,117,64,55,66,5,67,47,67, -155,67,0,0,92,75,0,0,67,35,37,117,116,105,108,115,72,112,97,116,104, +218,9,235,9,159,11,6,12,20,12,224,12,200,14,209,14,218,14,232,14,242, +14,19,16,122,16,235,16,52,17,125,17,229,17,2,18,73,18,211,18,26,19, +239,19,101,20,114,20,232,20,245,20,84,21,151,21,164,21,175,21,71,22,189, +22,233,22,88,23,166,25,190,25,52,26,132,27,139,27,191,27,205,27,195,28, +211,28,66,29,225,29,232,29,108,31,185,31,202,31,102,32,122,32,182,32,189, +32,49,33,103,33,122,33,72,34,88,34,48,35,37,36,74,36,83,36,160,37, +5,40,21,40,88,40,109,40,129,40,149,40,206,40,174,43,140,44,156,44,127, +45,185,45,218,45,94,46,253,46,13,47,110,47,127,47,205,49,0,52,16,52, +246,53,178,54,180,54,206,54,222,54,238,54,79,55,146,56,78,57,93,57,102, +57,109,57,175,58,241,59,103,60,149,63,22,64,153,64,97,66,47,67,89,67, +197,67,0,0,134,75,0,0,67,35,37,117,116,105,108,115,72,112,97,116,104, 45,115,116,114,105,110,103,63,64,98,115,98,115,76,110,111,114,109,97,108,45, 99,97,115,101,45,112,97,116,104,71,114,101,114,111,111,116,45,112,97,116,104, 1,20,102,105,110,100,45,101,120,101,99,117,116,97,98,108,101,45,112,97,116, @@ -183,766 +183,768 @@ 111,116,32,112,97,116,104,58,32,66,102,105,110,105,115,104,5,11,80,76,84, 67,79,76,76,69,67,84,83,1,20,99,111,108,108,101,99,116,115,45,115,101, 97,114,99,104,45,100,105,114,115,6,8,8,99,111,108,108,101,99,116,115,27, -248,22,171,15,194,28,192,192,28,248,22,152,7,194,27,248,22,130,16,195,28, -192,192,248,22,131,16,195,11,0,21,35,114,120,34,94,91,92,92,93,91,92, +248,22,173,15,194,28,192,192,28,248,22,154,7,194,27,248,22,132,16,195,28, +192,192,248,22,133,16,195,11,0,21,35,114,120,34,94,91,92,92,93,91,92, 92,93,91,63,93,91,92,92,93,34,0,6,35,114,120,34,47,34,0,22,35, 114,120,34,91,47,92,92,93,91,46,32,93,43,91,47,92,92,93,42,36,34, 0,19,35,114,120,34,91,32,46,93,43,40,91,47,92,92,93,42,41,36,34, -86,94,28,28,248,22,172,15,23,195,2,10,28,248,22,171,15,23,195,2,10, -28,248,22,152,7,23,195,2,28,248,22,130,16,23,195,2,10,248,22,131,16, -23,195,2,11,12,250,22,178,11,2,42,2,43,23,197,2,28,28,248,22,172, -15,23,195,2,249,22,168,9,248,22,173,15,23,197,2,2,44,249,22,168,9, -247,22,179,8,2,44,27,28,248,22,152,7,23,196,2,23,195,2,248,22,164, -8,248,22,176,15,23,197,2,28,249,22,167,16,2,80,23,195,2,28,248,22, -152,7,195,248,22,179,15,195,194,27,248,22,191,7,23,195,1,249,22,180,15, -248,22,167,8,250,22,175,16,2,81,28,249,22,167,16,2,82,23,201,2,23, -199,1,250,22,175,16,2,83,23,202,1,2,45,80,144,44,37,38,2,44,28, -248,22,152,7,194,248,22,179,15,194,193,0,28,35,114,120,34,94,92,92,92, +86,94,28,28,248,22,174,15,23,195,2,10,28,248,22,173,15,23,195,2,10, +28,248,22,154,7,23,195,2,28,248,22,132,16,23,195,2,10,248,22,133,16, +23,195,2,11,12,250,22,180,11,2,42,2,43,23,197,2,28,28,248,22,174, +15,23,195,2,249,22,170,9,248,22,175,15,23,197,2,2,44,249,22,170,9, +247,22,181,8,2,44,27,28,248,22,154,7,23,196,2,23,195,2,248,22,166, +8,248,22,178,15,23,197,2,28,249,22,169,16,2,80,23,195,2,28,248,22, +154,7,195,248,22,181,15,195,194,27,248,22,129,8,23,195,1,249,22,182,15, +248,22,169,8,250,22,177,16,2,81,28,249,22,169,16,2,82,23,201,2,23, +199,1,250,22,177,16,2,83,23,202,1,2,45,80,144,44,37,38,2,44,28, +248,22,154,7,194,248,22,181,15,194,193,0,28,35,114,120,34,94,92,92,92, 92,92,92,92,92,91,63,93,92,92,92,92,85,78,67,92,92,92,92,34,86, -95,28,28,28,248,22,171,15,23,195,2,10,28,248,22,152,7,23,195,2,28, -248,22,130,16,23,195,2,10,248,22,131,16,23,195,2,11,10,248,22,172,15, -23,195,2,12,252,22,178,11,2,5,2,46,36,23,199,2,23,200,2,28,28, -28,248,22,171,15,23,196,2,10,28,248,22,152,7,23,196,2,28,248,22,130, -16,23,196,2,10,248,22,131,16,23,196,2,11,10,248,22,172,15,23,196,2, -12,252,22,178,11,2,5,2,46,37,23,199,2,23,200,2,27,28,248,22,172, -15,23,196,2,248,22,173,15,23,196,2,247,22,174,15,86,95,28,28,248,22, -132,16,23,196,2,10,249,22,168,9,247,22,174,15,23,195,2,12,253,22,180, +95,28,28,28,248,22,173,15,23,195,2,10,28,248,22,154,7,23,195,2,28, +248,22,132,16,23,195,2,10,248,22,133,16,23,195,2,11,10,248,22,174,15, +23,195,2,12,252,22,180,11,2,5,2,46,36,23,199,2,23,200,2,28,28, +28,248,22,173,15,23,196,2,10,28,248,22,154,7,23,196,2,28,248,22,132, +16,23,196,2,10,248,22,133,16,23,196,2,11,10,248,22,174,15,23,196,2, +12,252,22,180,11,2,5,2,46,37,23,199,2,23,200,2,27,28,248,22,174, +15,23,196,2,248,22,175,15,23,196,2,247,22,176,15,86,95,28,28,248,22, +134,16,23,196,2,10,249,22,170,9,247,22,176,15,23,195,2,12,253,22,182, 11,2,5,6,54,54,112,97,116,104,32,105,115,32,110,111,116,32,99,111,109, 112,108,101,116,101,32,97,110,100,32,110,111,116,32,116,104,101,32,112,108,97, 116,102,111,114,109,39,115,32,99,111,110,118,101,110,116,105,111,110,2,47,23, 201,2,6,24,24,112,108,97,116,102,111,114,109,32,99,111,110,118,101,110,116, -105,111,110,32,116,121,112,101,247,22,174,15,28,249,22,168,9,28,248,22,172, -15,23,199,2,248,22,173,15,23,199,2,247,22,174,15,23,195,2,12,253,22, -180,11,2,5,6,37,37,103,105,118,101,110,32,112,97,116,104,115,32,117,115, +105,111,110,32,116,121,112,101,247,22,176,15,28,249,22,170,9,28,248,22,174, +15,23,199,2,248,22,175,15,23,199,2,247,22,176,15,23,195,2,12,253,22, +182,11,2,5,6,37,37,103,105,118,101,110,32,112,97,116,104,115,32,117,115, 101,32,100,105,102,102,101,114,101,110,116,32,99,111,110,118,101,110,116,105,111, 110,115,2,47,23,201,2,6,9,9,114,111,111,116,32,112,97,116,104,23,202, -2,27,27,248,22,136,16,28,248,22,132,16,23,199,2,23,198,1,248,22,133, -16,23,199,1,86,94,28,28,248,22,172,15,23,194,2,10,28,248,22,171,15, -23,194,2,10,28,248,22,152,7,23,194,2,28,248,22,130,16,23,194,2,10, -248,22,131,16,23,194,2,11,12,250,22,178,11,2,42,2,43,23,196,2,28, -28,248,22,172,15,23,194,2,249,22,168,9,248,22,173,15,23,196,2,2,44, -249,22,168,9,247,22,179,8,2,44,27,28,248,22,152,7,23,195,2,23,194, -2,248,22,164,8,248,22,176,15,23,196,2,28,249,22,167,16,2,80,23,195, -2,28,248,22,152,7,194,248,22,179,15,194,193,27,248,22,191,7,23,195,1, -249,22,180,15,248,22,167,8,250,22,175,16,2,81,28,249,22,167,16,2,82, -23,201,2,23,199,1,250,22,175,16,2,83,23,202,1,2,45,80,144,47,37, -38,2,44,28,248,22,152,7,193,248,22,179,15,193,192,27,248,22,176,15,23, -195,2,28,249,22,168,9,23,197,2,64,117,110,105,120,28,249,22,149,8,194, -5,1,47,28,248,22,172,15,198,197,248,22,179,15,198,249,22,189,15,199,249, -22,180,15,249,22,152,8,248,22,176,15,200,37,198,28,249,22,168,9,23,197, -2,2,44,249,22,189,15,23,200,1,249,22,180,15,28,249,22,167,16,0,27, +2,27,27,248,22,138,16,28,248,22,134,16,23,199,2,23,198,1,248,22,135, +16,23,199,1,86,94,28,28,248,22,174,15,23,194,2,10,28,248,22,173,15, +23,194,2,10,28,248,22,154,7,23,194,2,28,248,22,132,16,23,194,2,10, +248,22,133,16,23,194,2,11,12,250,22,180,11,2,42,2,43,23,196,2,28, +28,248,22,174,15,23,194,2,249,22,170,9,248,22,175,15,23,196,2,2,44, +249,22,170,9,247,22,181,8,2,44,27,28,248,22,154,7,23,195,2,23,194, +2,248,22,166,8,248,22,178,15,23,196,2,28,249,22,169,16,2,80,23,195, +2,28,248,22,154,7,194,248,22,181,15,194,193,27,248,22,129,8,23,195,1, +249,22,182,15,248,22,169,8,250,22,177,16,2,81,28,249,22,169,16,2,82, +23,201,2,23,199,1,250,22,177,16,2,83,23,202,1,2,45,80,144,47,37, +38,2,44,28,248,22,154,7,193,248,22,181,15,193,192,27,248,22,178,15,23, +195,2,28,249,22,170,9,23,197,2,64,117,110,105,120,28,249,22,151,8,194, +5,1,47,28,248,22,174,15,198,197,248,22,181,15,198,249,22,191,15,199,249, +22,182,15,249,22,154,8,248,22,178,15,200,37,198,28,249,22,170,9,23,197, +2,2,44,249,22,191,15,23,200,1,249,22,182,15,28,249,22,169,16,0,27, 35,114,120,34,94,92,92,92,92,92,92,92,92,91,63,93,92,92,92,92,91, -97,45,122,93,58,34,23,199,2,251,22,153,8,2,48,250,22,152,8,203,40, -41,5,1,92,249,22,152,8,202,42,28,249,22,167,16,2,85,23,199,2,249, -22,153,8,2,48,249,22,152,8,200,40,28,249,22,167,16,2,85,23,199,2, -249,22,153,8,2,48,249,22,152,8,200,40,28,249,22,167,16,0,14,35,114, -120,34,94,92,92,92,92,92,92,92,92,34,23,199,2,249,22,153,8,5,4, -85,78,67,92,249,22,152,8,200,38,28,249,22,167,16,0,12,35,114,120,34, -94,91,97,45,122,93,58,34,198,249,22,153,8,250,22,152,8,201,36,37,249, -22,152,8,200,38,12,198,12,32,87,88,148,8,36,39,53,11,70,102,111,117, +97,45,122,93,58,34,23,199,2,251,22,155,8,2,48,250,22,154,8,203,40, +41,5,1,92,249,22,154,8,202,42,28,249,22,169,16,2,85,23,199,2,249, +22,155,8,2,48,249,22,154,8,200,40,28,249,22,169,16,2,85,23,199,2, +249,22,155,8,2,48,249,22,154,8,200,40,28,249,22,169,16,0,14,35,114, +120,34,94,92,92,92,92,92,92,92,92,34,23,199,2,249,22,155,8,5,4, +85,78,67,92,249,22,154,8,200,38,28,249,22,169,16,0,12,35,114,120,34, +94,91,97,45,122,93,58,34,198,249,22,155,8,250,22,154,8,201,36,37,249, +22,154,8,200,38,12,198,12,32,87,88,148,8,36,39,53,11,70,102,111,117, 110,100,45,101,120,101,99,222,33,90,32,88,88,148,8,36,40,58,11,64,110, -101,120,116,222,33,89,27,248,22,134,16,23,196,2,28,249,22,170,9,23,195, -2,23,197,1,11,28,248,22,130,16,23,194,2,27,249,22,189,15,23,197,1, -23,196,1,28,23,197,2,90,144,39,11,89,146,39,36,11,248,22,128,16,23, -197,2,86,95,23,195,1,23,194,1,27,28,23,202,2,27,248,22,134,16,23, -199,2,28,249,22,170,9,23,195,2,23,200,2,11,28,248,22,130,16,23,194, -2,250,2,87,23,205,2,23,206,2,249,22,189,15,23,200,2,23,198,1,250, +101,120,116,222,33,89,27,248,22,136,16,23,196,2,28,249,22,172,9,23,195, +2,23,197,1,11,28,248,22,132,16,23,194,2,27,249,22,191,15,23,197,1, +23,196,1,28,23,197,2,90,144,39,11,89,146,39,36,11,248,22,130,16,23, +197,2,86,95,23,195,1,23,194,1,27,28,23,202,2,27,248,22,136,16,23, +199,2,28,249,22,172,9,23,195,2,23,200,2,11,28,248,22,132,16,23,194, +2,250,2,87,23,205,2,23,206,2,249,22,191,15,23,200,2,23,198,1,250, 2,87,23,205,2,23,206,2,23,196,1,11,28,23,193,2,192,86,94,23,193, -1,27,28,248,22,171,15,23,196,2,27,249,22,189,15,23,198,2,23,205,2, -28,28,248,22,184,15,193,10,248,22,183,15,193,192,11,11,28,23,193,2,192, -86,94,23,193,1,28,23,203,2,11,27,248,22,134,16,23,200,2,28,249,22, -170,9,194,23,201,1,11,28,248,22,130,16,193,250,2,87,205,206,249,22,189, +1,27,28,248,22,173,15,23,196,2,27,249,22,191,15,23,198,2,23,205,2, +28,28,248,22,186,15,193,10,248,22,185,15,193,192,11,11,28,23,193,2,192, +86,94,23,193,1,28,23,203,2,11,27,248,22,136,16,23,200,2,28,249,22, +172,9,194,23,201,1,11,28,248,22,132,16,193,250,2,87,205,206,249,22,191, 15,200,197,250,2,87,205,206,195,192,86,94,23,194,1,28,23,196,2,90,144, -39,11,89,146,39,36,11,248,22,128,16,23,197,2,86,95,23,195,1,23,194, -1,27,28,23,201,2,27,248,22,134,16,23,199,2,28,249,22,170,9,23,195, -2,23,200,2,11,28,248,22,130,16,23,194,2,250,2,87,23,204,2,23,205, -2,249,22,189,15,23,200,2,23,198,1,250,2,87,23,204,2,23,205,2,23, -196,1,11,28,23,193,2,192,86,94,23,193,1,27,28,248,22,171,15,23,196, -2,27,249,22,189,15,23,198,2,23,204,2,28,28,248,22,184,15,193,10,248, -22,183,15,193,192,11,11,28,23,193,2,192,86,94,23,193,1,28,23,202,2, -11,27,248,22,134,16,23,200,2,28,249,22,170,9,194,23,201,1,11,28,248, -22,130,16,193,250,2,87,204,205,249,22,189,15,200,197,250,2,87,204,205,195, -192,28,23,193,2,90,144,39,11,89,146,39,36,11,248,22,128,16,23,199,2, +39,11,89,146,39,36,11,248,22,130,16,23,197,2,86,95,23,195,1,23,194, +1,27,28,23,201,2,27,248,22,136,16,23,199,2,28,249,22,172,9,23,195, +2,23,200,2,11,28,248,22,132,16,23,194,2,250,2,87,23,204,2,23,205, +2,249,22,191,15,23,200,2,23,198,1,250,2,87,23,204,2,23,205,2,23, +196,1,11,28,23,193,2,192,86,94,23,193,1,27,28,248,22,173,15,23,196, +2,27,249,22,191,15,23,198,2,23,204,2,28,28,248,22,186,15,193,10,248, +22,185,15,193,192,11,11,28,23,193,2,192,86,94,23,193,1,28,23,202,2, +11,27,248,22,136,16,23,200,2,28,249,22,172,9,194,23,201,1,11,28,248, +22,132,16,193,250,2,87,204,205,249,22,191,15,200,197,250,2,87,204,205,195, +192,28,23,193,2,90,144,39,11,89,146,39,36,11,248,22,130,16,23,199,2, 86,95,23,195,1,23,194,1,27,28,23,198,2,251,2,88,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,171,15,195,27,249,22,189,15,197,200,28,28,248,22,184,15,193,10,248,22, -183,15,193,192,11,11,28,192,192,28,198,11,251,2,88,198,203,201,202,194,32, -91,88,148,8,36,40,57,11,2,51,222,33,92,28,248,22,88,23,197,2,11, -27,249,22,189,15,248,22,133,16,248,22,81,23,201,2,23,196,2,28,248,22, -183,15,23,194,2,250,2,87,197,198,195,86,94,23,193,1,27,248,22,82,23, -199,1,28,248,22,88,23,194,2,11,27,249,22,189,15,248,22,133,16,248,22, -81,23,198,2,23,198,2,28,248,22,183,15,23,194,2,250,2,87,199,200,195, -86,94,23,193,1,27,248,22,82,23,196,1,28,248,22,88,23,194,2,11,27, -249,22,189,15,248,22,133,16,248,22,81,23,198,2,23,200,2,28,248,22,183, -15,23,194,2,250,2,87,201,202,195,86,94,23,193,1,27,248,22,82,23,196, -1,28,248,22,88,23,194,2,11,27,249,22,189,15,248,22,133,16,248,22,81, -197,201,28,248,22,183,15,193,250,2,87,203,204,195,251,2,91,203,204,205,248, -22,82,198,86,95,28,28,248,22,171,15,23,195,2,10,28,248,22,152,7,23, -195,2,28,248,22,130,16,23,195,2,10,248,22,131,16,23,195,2,11,12,250, -22,178,11,2,6,2,49,23,197,2,28,28,23,195,2,28,28,248,22,171,15, -23,196,2,10,28,248,22,152,7,23,196,2,28,248,22,130,16,23,196,2,10, -248,22,131,16,23,196,2,11,248,22,130,16,23,196,2,11,10,12,250,22,178, -11,2,6,6,45,45,40,111,114,47,99,32,35,102,32,40,97,110,100,47,99, -32,112,97,116,104,45,115,116,114,105,110,103,63,32,114,101,108,97,116,105,118, -101,45,112,97,116,104,63,41,41,23,198,2,28,28,248,22,130,16,23,195,2, -90,144,39,11,89,146,39,36,11,248,22,128,16,23,198,2,249,22,168,9,194, -2,50,11,27,249,22,174,8,247,22,173,8,5,4,80,65,84,72,27,28,23, -194,2,249,80,143,40,41,249,22,164,8,23,198,1,7,63,9,86,94,23,194, -1,9,27,28,249,22,168,9,247,22,179,8,2,44,249,22,80,248,22,180,15, -5,1,46,23,196,1,23,194,1,28,248,22,88,23,194,2,11,27,249,22,189, -15,248,22,133,16,248,22,81,23,198,2,23,200,2,28,248,22,183,15,23,194, -2,250,2,87,201,202,195,86,94,23,193,1,27,248,22,82,23,196,1,28,248, -22,88,23,194,2,11,27,249,22,189,15,248,22,133,16,248,22,81,23,198,2, -23,202,2,28,248,22,183,15,23,194,2,250,2,87,203,204,195,86,94,23,193, -1,27,248,22,82,23,196,1,28,248,22,88,23,194,2,11,27,249,22,189,15, -248,22,133,16,248,22,81,23,198,2,23,204,2,28,248,22,183,15,23,194,2, -250,2,87,205,206,195,86,94,23,193,1,27,248,22,82,23,196,1,28,248,22, -88,23,194,2,11,27,249,22,189,15,248,22,133,16,248,22,81,197,205,28,248, -22,183,15,193,250,2,87,23,15,23,16,195,251,2,91,23,15,23,16,23,17, -248,22,82,198,27,248,22,133,16,23,196,1,28,248,22,183,15,193,250,2,87, -198,199,195,11,250,80,144,39,40,39,196,197,11,250,80,144,39,40,39,196,11, -11,32,96,88,148,8,36,39,57,11,2,51,222,33,98,0,8,35,114,120,35, -34,92,34,34,27,249,22,163,16,23,197,2,23,198,2,28,23,193,2,86,94, -23,196,1,27,248,22,102,23,195,2,27,27,248,22,111,23,197,1,27,249,22, -163,16,23,201,2,23,196,2,28,23,193,2,86,94,23,194,1,27,248,22,102, -23,195,2,27,250,2,96,23,203,2,23,204,1,248,22,111,23,199,1,28,249, -22,149,8,23,196,2,2,52,249,22,94,23,202,2,194,249,22,80,248,22,180, -15,28,249,22,168,9,247,22,179,8,2,44,250,22,175,16,2,97,23,200,1, -2,52,196,194,86,95,23,199,1,23,193,1,28,249,22,149,8,23,196,2,2, -52,249,22,94,23,200,2,9,249,22,80,248,22,180,15,28,249,22,168,9,247, -22,179,8,2,44,250,22,175,16,2,97,23,200,1,2,52,196,9,28,249,22, -149,8,23,196,2,2,52,249,22,94,197,194,86,94,23,196,1,249,22,80,248, -22,180,15,28,249,22,168,9,247,22,179,8,2,44,250,22,175,16,2,97,23, -200,1,2,52,196,194,86,94,23,193,1,28,249,22,149,8,23,198,2,2,52, -249,22,94,195,9,86,94,23,194,1,249,22,80,248,22,180,15,28,249,22,168, -9,247,22,179,8,2,44,250,22,175,16,2,97,23,202,1,2,52,198,9,86, -95,28,28,248,22,141,8,194,10,248,22,152,7,194,12,250,22,178,11,2,7, -6,21,21,40,111,114,47,99,32,98,121,116,101,115,63,32,115,116,114,105,110, -103,63,41,196,28,28,248,22,89,195,249,22,4,22,171,15,196,11,12,250,22, -178,11,2,7,6,14,14,40,108,105,115,116,111,102,32,112,97,116,104,63,41, -197,250,2,96,197,195,28,248,22,152,7,197,248,22,166,8,197,196,28,28,248, -22,0,23,195,2,249,22,50,23,196,2,36,11,20,13,144,80,144,36,43,37, -26,29,80,144,8,29,44,37,249,22,33,11,80,144,8,31,43,37,22,141,15, -10,22,142,15,10,22,143,15,10,22,146,15,10,22,145,15,11,22,147,15,10, -22,144,15,10,22,148,15,10,22,149,15,10,22,150,15,10,22,151,15,10,22, -152,15,11,22,153,15,10,22,139,15,11,247,23,194,1,250,22,178,11,2,8, -2,53,23,197,1,86,94,28,28,248,22,171,15,23,195,2,10,28,248,22,152, -7,23,195,2,28,248,22,130,16,23,195,2,10,248,22,131,16,23,195,2,11, -12,250,22,178,11,23,196,2,2,49,23,197,2,28,248,22,130,16,23,195,2, -12,251,22,180,11,23,197,1,2,54,2,47,23,198,1,86,94,28,28,248,22, -171,15,23,195,2,10,28,248,22,152,7,23,195,2,28,248,22,130,16,23,195, -2,10,248,22,131,16,23,195,2,11,12,250,22,178,11,23,196,2,2,49,23, -197,2,28,248,22,130,16,23,195,2,12,251,22,180,11,23,197,1,2,54,2, -47,23,198,1,86,94,86,94,28,28,248,22,171,15,23,195,2,10,28,248,22, -152,7,23,195,2,28,248,22,130,16,23,195,2,10,248,22,131,16,23,195,2, -11,12,250,22,178,11,23,196,2,2,49,23,197,2,28,248,22,130,16,23,195, -2,86,94,23,194,1,12,251,22,180,11,23,197,2,2,54,2,47,23,198,1, -249,22,3,20,20,94,88,148,8,36,37,47,11,9,223,2,33,102,23,195,1, -23,197,1,28,28,248,22,0,23,195,2,249,22,50,23,196,2,37,11,12,250, -22,178,11,23,196,1,2,55,23,197,1,86,94,28,28,248,22,171,15,23,194, -2,10,28,248,22,152,7,23,194,2,28,248,22,130,16,23,194,2,10,248,22, -131,16,23,194,2,11,12,250,22,178,11,2,15,2,49,23,196,2,28,248,22, -130,16,23,194,2,12,251,22,180,11,2,15,2,54,2,47,23,197,1,86,95, -86,94,86,94,28,28,248,22,171,15,23,196,2,10,28,248,22,152,7,23,196, -2,28,248,22,130,16,23,196,2,10,248,22,131,16,23,196,2,11,12,250,22, -178,11,2,15,2,49,23,198,2,28,248,22,130,16,23,196,2,12,251,22,180, -11,2,15,2,54,2,47,23,199,2,249,22,3,32,0,88,148,8,36,37,46, -11,9,222,33,105,23,198,2,28,28,248,22,0,23,195,2,249,22,50,23,196, -2,37,11,12,250,22,178,11,2,15,2,55,23,197,2,252,80,143,41,49,23, -199,1,23,200,1,23,201,1,11,11,86,94,28,28,248,22,171,15,23,194,2, -10,28,248,22,152,7,23,194,2,28,248,22,130,16,23,194,2,10,248,22,131, -16,23,194,2,11,12,250,22,178,11,2,17,2,49,23,196,2,28,248,22,130, -16,23,194,2,12,251,22,180,11,2,17,2,54,2,47,23,197,1,86,96,86, -94,28,28,248,22,171,15,23,197,2,10,28,248,22,152,7,23,197,2,28,248, -22,130,16,23,197,2,10,248,22,131,16,23,197,2,11,12,250,22,178,11,2, -17,2,49,23,199,2,28,248,22,130,16,23,197,2,12,251,22,180,11,2,17, -2,54,2,47,23,200,2,86,94,86,94,28,28,248,22,171,15,23,198,2,10, -28,248,22,152,7,23,198,2,28,248,22,130,16,23,198,2,10,248,22,131,16, -23,198,2,11,12,250,22,178,11,2,17,2,49,23,200,2,28,248,22,130,16, -23,198,2,12,251,22,180,11,2,17,2,54,2,47,23,201,2,249,22,3,32, -0,88,148,8,36,37,46,11,9,222,33,107,23,200,2,28,28,248,22,0,23, -195,2,249,22,50,23,196,2,37,11,12,250,22,178,11,2,17,2,55,23,197, -2,252,80,143,41,49,23,199,1,23,202,1,23,203,1,23,201,1,23,200,1, -27,248,22,148,16,2,56,28,248,22,132,16,23,194,2,248,22,135,16,23,194, -1,28,248,22,131,16,23,194,2,90,144,39,11,89,146,39,36,11,248,22,128, -16,249,22,133,16,250,80,144,46,40,39,248,22,148,16,2,57,11,11,248,22, -148,16,2,58,86,95,23,195,1,23,194,1,248,22,135,16,249,22,133,16,23, -199,1,23,196,1,27,250,80,144,41,40,39,248,22,148,16,2,57,23,197,1, -10,28,23,193,2,248,22,135,16,23,194,1,11,249,80,144,38,52,37,36,80, -144,38,8,40,39,27,248,22,148,16,2,59,28,248,22,132,16,23,194,2,248, -22,135,16,23,194,1,28,248,22,131,16,23,194,2,90,144,39,11,89,146,39, -36,11,248,22,128,16,249,22,133,16,250,80,144,46,40,39,248,22,148,16,2, -57,11,11,248,22,148,16,2,58,86,95,23,195,1,23,194,1,248,22,135,16, -249,22,133,16,23,199,1,23,196,1,27,250,80,144,41,40,39,248,22,148,16, -2,57,23,197,1,10,28,23,193,2,248,22,135,16,23,194,1,11,249,80,144, -38,52,37,37,80,144,38,8,41,39,27,20,13,144,80,144,37,43,37,26,29, -80,144,8,30,44,37,249,22,33,11,80,144,8,32,43,37,22,141,15,10,22, -142,15,10,22,143,15,10,22,146,15,10,22,145,15,11,22,147,15,10,22,144, -15,10,22,148,15,10,22,149,15,10,22,150,15,10,22,151,15,10,22,152,15, -11,22,153,15,10,22,139,15,11,247,22,147,6,28,248,22,149,2,193,192,11, -27,28,23,195,2,249,22,189,15,23,197,1,6,11,11,99,111,110,102,105,103, -46,114,107,116,100,86,94,23,195,1,11,27,28,23,194,2,28,248,22,183,15, -23,195,2,249,22,139,6,23,196,1,80,144,40,8,42,39,11,11,28,192,192, -21,17,1,0,250,22,158,2,23,196,1,2,60,247,22,170,8,250,22,158,2, -195,2,60,247,22,170,8,28,248,22,152,7,23,195,2,27,248,22,179,15,23, -196,1,28,248,22,132,16,23,194,2,192,249,22,133,16,23,195,1,27,247,80, -144,40,51,39,28,23,193,2,192,86,94,23,193,1,247,22,149,16,28,248,22, -141,8,23,195,2,27,248,22,180,15,23,196,1,28,248,22,132,16,23,194,2, -192,249,22,133,16,23,195,1,27,247,80,144,40,51,39,28,23,193,2,192,86, -94,23,193,1,247,22,149,16,28,248,22,171,15,23,195,2,28,248,22,132,16, -23,195,2,193,249,22,133,16,23,196,1,27,247,80,144,39,51,39,28,23,193, -2,192,86,94,23,193,1,247,22,149,16,193,27,248,22,148,16,2,56,28,248, -22,132,16,23,194,2,248,22,135,16,23,194,1,28,248,22,131,16,23,194,2, -90,144,39,11,89,146,39,36,11,248,22,128,16,249,22,133,16,250,80,144,46, -40,39,248,22,148,16,2,57,11,11,248,22,148,16,2,58,86,95,23,195,1, -23,194,1,248,22,135,16,249,22,133,16,23,199,1,23,196,1,27,250,80,144, -41,40,39,248,22,148,16,2,57,23,197,1,10,28,23,193,2,248,22,135,16, -23,194,1,11,28,248,22,132,16,23,195,2,193,249,22,133,16,23,196,1,27, -249,80,144,41,52,37,36,80,144,41,8,43,39,28,23,193,2,192,86,94,23, -193,1,247,22,149,16,28,248,22,132,16,23,195,2,248,22,135,16,23,195,1, -28,248,22,131,16,23,195,2,90,144,39,11,89,146,39,36,11,248,22,128,16, -249,22,133,16,250,80,144,45,40,39,248,22,148,16,2,57,11,11,248,22,148, -16,2,58,86,95,23,195,1,23,194,1,248,22,135,16,249,22,133,16,23,200, -1,23,196,1,27,250,80,144,40,40,39,248,22,148,16,2,57,23,198,1,10, -28,23,193,2,248,22,135,16,23,194,1,11,28,248,22,88,23,196,2,9,28, -248,22,81,23,196,2,249,22,80,27,248,22,156,20,23,199,2,28,248,22,152, -7,23,194,2,27,248,22,179,15,23,195,1,28,248,22,132,16,23,194,2,192, -249,22,133,16,23,195,1,27,247,80,144,43,51,39,28,23,193,2,192,86,94, -23,193,1,247,22,149,16,28,248,22,141,8,23,194,2,27,248,22,180,15,23, -195,1,28,248,22,132,16,23,194,2,192,249,22,133,16,23,195,1,27,247,80, -144,43,51,39,28,23,193,2,192,86,94,23,193,1,247,22,149,16,28,248,22, -171,15,23,194,2,28,248,22,132,16,23,194,2,192,249,22,133,16,23,195,1, -27,247,80,144,42,51,39,28,23,193,2,192,86,94,23,193,1,247,22,149,16, -192,27,248,22,157,20,23,199,1,28,248,22,88,23,194,2,9,28,248,22,81, -23,194,2,249,22,80,248,80,144,42,57,39,248,22,156,20,23,197,2,27,248, -22,157,20,23,197,1,28,248,22,88,23,194,2,9,28,248,22,81,23,194,2, -249,22,80,248,80,144,45,57,39,248,22,156,20,23,197,2,249,80,144,46,8, -44,39,23,204,1,248,22,157,20,23,198,1,249,22,94,23,202,2,249,80,144, -46,8,44,39,23,204,1,248,22,157,20,23,198,1,249,22,94,23,199,2,27, -248,22,157,20,23,197,1,28,248,22,88,23,194,2,9,28,248,22,81,23,194, -2,249,22,80,248,80,144,45,57,39,248,22,156,20,23,197,2,249,80,144,46, -8,44,39,23,204,1,248,22,157,20,23,198,1,249,22,94,23,202,2,249,80, -144,46,8,44,39,23,204,1,248,22,157,20,23,198,1,249,22,94,23,196,2, -27,248,22,157,20,23,199,1,28,248,22,88,23,194,2,9,28,248,22,81,23, -194,2,249,22,80,248,80,144,42,57,39,248,22,156,20,23,197,2,27,248,22, -157,20,23,197,1,28,248,22,88,23,194,2,9,28,248,22,81,23,194,2,249, -22,80,248,80,144,45,57,39,248,22,156,20,23,197,2,249,80,144,46,8,44, -39,23,204,1,248,22,157,20,23,198,1,249,22,94,23,202,2,249,80,144,46, -8,44,39,23,204,1,248,22,157,20,23,198,1,249,22,94,23,199,2,27,248, -22,157,20,23,197,1,28,248,22,88,23,194,2,9,28,248,22,81,23,194,2, -249,22,80,248,80,144,45,57,39,248,22,156,20,23,197,2,249,80,144,46,8, -44,39,23,204,1,248,22,157,20,23,198,1,249,22,94,23,202,2,249,80,144, -46,8,44,39,23,204,1,248,22,157,20,23,198,1,27,250,22,158,2,23,198, -1,23,199,1,11,28,192,249,80,144,39,8,44,39,198,194,196,27,248,22,148, -16,2,59,28,248,22,132,16,23,194,2,248,22,135,16,23,194,1,28,248,22, -131,16,23,194,2,90,144,39,11,89,146,39,36,11,248,22,128,16,249,22,133, -16,250,80,144,46,40,39,248,22,148,16,2,57,11,11,248,22,148,16,2,58, -86,95,23,195,1,23,194,1,248,22,135,16,249,22,133,16,23,199,1,23,196, -1,27,250,80,144,41,40,39,248,22,148,16,2,57,23,197,1,10,28,23,193, -2,248,22,135,16,23,194,1,11,27,248,80,144,38,55,39,249,80,144,40,52, -37,37,80,144,40,8,45,39,27,27,250,22,158,2,23,198,2,70,108,105,110, -107,115,45,102,105,108,101,11,27,28,23,194,2,23,194,1,86,94,23,194,1, -249,22,189,15,27,250,22,158,2,23,202,2,69,115,104,97,114,101,45,100,105, -114,11,28,192,192,249,22,189,15,62,117,112,6,5,5,115,104,97,114,101,2, -61,28,248,22,152,7,23,194,2,27,248,22,179,15,23,195,1,28,248,22,132, -16,23,194,2,192,249,22,133,16,23,195,1,27,247,80,144,44,51,39,28,23, -193,2,192,86,94,23,193,1,247,22,149,16,28,248,22,141,8,23,194,2,27, -248,22,180,15,23,195,1,28,248,22,132,16,23,194,2,192,249,22,133,16,23, -195,1,27,247,80,144,44,51,39,28,23,193,2,192,86,94,23,193,1,247,22, -149,16,28,248,22,171,15,23,194,2,28,248,22,132,16,23,194,2,192,249,22, -133,16,23,195,1,27,247,80,144,43,51,39,28,23,193,2,192,86,94,23,193, -1,247,22,149,16,192,250,22,94,248,22,90,11,28,247,22,155,16,28,247,22, -156,16,248,22,90,250,22,189,15,248,22,148,16,2,62,250,22,158,2,23,204, -2,2,60,247,22,170,8,2,61,9,9,28,247,22,156,16,250,80,144,44,59, -39,23,200,1,78,108,105,110,107,115,45,115,101,97,114,99,104,45,102,105,108, -101,115,248,22,90,23,200,1,9,248,22,170,13,23,194,1,249,22,16,80,144, -38,8,26,38,28,248,22,190,12,23,197,2,86,94,23,196,1,32,0,88,148, -8,36,36,41,11,9,222,11,20,20,94,88,148,8,36,36,43,11,9,223,3, -33,125,23,196,1,32,127,88,148,36,37,56,11,2,51,222,33,128,2,90,144, -39,11,89,146,39,36,11,248,22,128,16,23,197,1,86,95,23,195,1,23,194, -1,28,248,22,171,15,23,194,2,28,248,22,184,15,23,194,2,249,22,144,6, +22,173,15,195,27,249,22,191,15,197,200,28,28,248,22,186,15,193,10,248,22, +185,15,193,192,11,11,28,192,192,28,198,11,251,2,88,198,203,201,202,194,32, +91,88,148,8,36,40,57,11,2,51,222,33,92,28,248,22,90,23,197,2,11, +27,249,22,191,15,248,22,135,16,248,22,83,23,201,2,23,196,2,28,248,22, +185,15,23,194,2,250,2,87,197,198,195,86,94,23,193,1,27,248,22,159,20, +23,199,1,28,248,22,90,23,194,2,11,27,249,22,191,15,248,22,135,16,248, +22,83,23,198,2,23,198,2,28,248,22,185,15,23,194,2,250,2,87,199,200, +195,86,94,23,193,1,27,248,22,159,20,23,196,1,28,248,22,90,23,194,2, +11,27,249,22,191,15,248,22,135,16,248,22,83,23,198,2,23,200,2,28,248, +22,185,15,23,194,2,250,2,87,201,202,195,86,94,23,193,1,27,248,22,159, +20,23,196,1,28,248,22,90,23,194,2,11,27,249,22,191,15,248,22,135,16, +248,22,83,197,201,28,248,22,185,15,193,250,2,87,203,204,195,251,2,91,203, +204,205,248,22,159,20,198,86,95,28,28,248,22,173,15,23,195,2,10,28,248, +22,154,7,23,195,2,28,248,22,132,16,23,195,2,10,248,22,133,16,23,195, +2,11,12,250,22,180,11,2,6,2,49,23,197,2,28,28,23,195,2,28,28, +248,22,173,15,23,196,2,10,28,248,22,154,7,23,196,2,28,248,22,132,16, +23,196,2,10,248,22,133,16,23,196,2,11,248,22,132,16,23,196,2,11,10, +12,250,22,180,11,2,6,6,45,45,40,111,114,47,99,32,35,102,32,40,97, +110,100,47,99,32,112,97,116,104,45,115,116,114,105,110,103,63,32,114,101,108, +97,116,105,118,101,45,112,97,116,104,63,41,41,23,198,2,28,28,248,22,132, +16,23,195,2,90,144,39,11,89,146,39,36,11,248,22,130,16,23,198,2,249, +22,170,9,194,2,50,11,27,249,22,176,8,247,22,175,8,5,4,80,65,84, +72,27,28,23,194,2,249,80,143,40,41,249,22,166,8,23,198,1,7,63,9, +86,94,23,194,1,9,27,28,249,22,170,9,247,22,181,8,2,44,249,22,82, +248,22,182,15,5,1,46,23,196,1,23,194,1,28,248,22,90,23,194,2,11, +27,249,22,191,15,248,22,135,16,248,22,83,23,198,2,23,200,2,28,248,22, +185,15,23,194,2,250,2,87,201,202,195,86,94,23,193,1,27,248,22,159,20, +23,196,1,28,248,22,90,23,194,2,11,27,249,22,191,15,248,22,135,16,248, +22,83,23,198,2,23,202,2,28,248,22,185,15,23,194,2,250,2,87,203,204, +195,86,94,23,193,1,27,248,22,159,20,23,196,1,28,248,22,90,23,194,2, +11,27,249,22,191,15,248,22,135,16,248,22,83,23,198,2,23,204,2,28,248, +22,185,15,23,194,2,250,2,87,205,206,195,86,94,23,193,1,27,248,22,159, +20,23,196,1,28,248,22,90,23,194,2,11,27,249,22,191,15,248,22,135,16, +248,22,83,197,205,28,248,22,185,15,193,250,2,87,23,15,23,16,195,251,2, +91,23,15,23,16,23,17,248,22,159,20,198,27,248,22,135,16,23,196,1,28, +248,22,185,15,193,250,2,87,198,199,195,11,250,80,144,39,40,39,196,197,11, +250,80,144,39,40,39,196,11,11,32,96,88,148,8,36,39,57,11,2,51,222, +33,98,0,8,35,114,120,35,34,92,34,34,27,249,22,165,16,23,197,2,23, +198,2,28,23,193,2,86,94,23,196,1,27,248,22,104,23,195,2,27,27,248, +22,113,23,197,1,27,249,22,165,16,23,201,2,23,196,2,28,23,193,2,86, +94,23,194,1,27,248,22,104,23,195,2,27,250,2,96,23,203,2,23,204,1, +248,22,113,23,199,1,28,249,22,151,8,23,196,2,2,52,249,22,96,23,202, +2,194,249,22,82,248,22,182,15,28,249,22,170,9,247,22,181,8,2,44,250, +22,177,16,2,97,23,200,1,2,52,196,194,86,95,23,199,1,23,193,1,28, +249,22,151,8,23,196,2,2,52,249,22,96,23,200,2,9,249,22,82,248,22, +182,15,28,249,22,170,9,247,22,181,8,2,44,250,22,177,16,2,97,23,200, +1,2,52,196,9,28,249,22,151,8,23,196,2,2,52,249,22,96,197,194,86, +94,23,196,1,249,22,82,248,22,182,15,28,249,22,170,9,247,22,181,8,2, +44,250,22,177,16,2,97,23,200,1,2,52,196,194,86,94,23,193,1,28,249, +22,151,8,23,198,2,2,52,249,22,96,195,9,86,94,23,194,1,249,22,82, +248,22,182,15,28,249,22,170,9,247,22,181,8,2,44,250,22,177,16,2,97, +23,202,1,2,52,198,9,86,95,28,28,248,22,143,8,194,10,248,22,154,7, +194,12,250,22,180,11,2,7,6,21,21,40,111,114,47,99,32,98,121,116,101, +115,63,32,115,116,114,105,110,103,63,41,196,28,28,248,22,91,195,249,22,4, +22,173,15,196,11,12,250,22,180,11,2,7,6,14,14,40,108,105,115,116,111, +102,32,112,97,116,104,63,41,197,250,2,96,197,195,28,248,22,154,7,197,248, +22,168,8,197,196,28,28,248,22,0,23,195,2,249,22,50,23,196,2,36,11, +20,13,144,80,144,36,43,37,26,29,80,144,8,29,44,37,249,22,33,11,80, +144,8,31,43,37,22,143,15,10,22,144,15,10,22,145,15,10,22,148,15,10, +22,147,15,11,22,149,15,10,22,146,15,10,22,150,15,10,22,151,15,10,22, +152,15,10,22,153,15,10,22,154,15,11,22,155,15,10,22,141,15,11,247,23, +194,1,250,22,180,11,2,8,2,53,23,197,1,86,94,28,28,248,22,173,15, +23,195,2,10,28,248,22,154,7,23,195,2,28,248,22,132,16,23,195,2,10, +248,22,133,16,23,195,2,11,12,250,22,180,11,23,196,2,2,49,23,197,2, +28,248,22,132,16,23,195,2,12,251,22,182,11,23,197,1,2,54,2,47,23, +198,1,86,94,28,28,248,22,173,15,23,195,2,10,28,248,22,154,7,23,195, +2,28,248,22,132,16,23,195,2,10,248,22,133,16,23,195,2,11,12,250,22, +180,11,23,196,2,2,49,23,197,2,28,248,22,132,16,23,195,2,12,251,22, +182,11,23,197,1,2,54,2,47,23,198,1,86,94,86,94,28,28,248,22,173, +15,23,195,2,10,28,248,22,154,7,23,195,2,28,248,22,132,16,23,195,2, +10,248,22,133,16,23,195,2,11,12,250,22,180,11,23,196,2,2,49,23,197, +2,28,248,22,132,16,23,195,2,86,94,23,194,1,12,251,22,182,11,23,197, +2,2,54,2,47,23,198,1,249,22,3,20,20,94,88,148,8,36,37,47,11, +9,223,2,33,102,23,195,1,23,197,1,28,28,248,22,0,23,195,2,249,22, +50,23,196,2,37,11,12,250,22,180,11,23,196,1,2,55,23,197,1,86,94, +28,28,248,22,173,15,23,194,2,10,28,248,22,154,7,23,194,2,28,248,22, +132,16,23,194,2,10,248,22,133,16,23,194,2,11,12,250,22,180,11,2,15, +2,49,23,196,2,28,248,22,132,16,23,194,2,12,251,22,182,11,2,15,2, +54,2,47,23,197,1,86,95,86,94,86,94,28,28,248,22,173,15,23,196,2, +10,28,248,22,154,7,23,196,2,28,248,22,132,16,23,196,2,10,248,22,133, +16,23,196,2,11,12,250,22,180,11,2,15,2,49,23,198,2,28,248,22,132, +16,23,196,2,12,251,22,182,11,2,15,2,54,2,47,23,199,2,249,22,3, +32,0,88,148,8,36,37,46,11,9,222,33,105,23,198,2,28,28,248,22,0, +23,195,2,249,22,50,23,196,2,37,11,12,250,22,180,11,2,15,2,55,23, +197,2,252,80,143,41,49,23,199,1,23,200,1,23,201,1,11,11,86,94,28, +28,248,22,173,15,23,194,2,10,28,248,22,154,7,23,194,2,28,248,22,132, +16,23,194,2,10,248,22,133,16,23,194,2,11,12,250,22,180,11,2,17,2, +49,23,196,2,28,248,22,132,16,23,194,2,12,251,22,182,11,2,17,2,54, +2,47,23,197,1,86,96,86,94,28,28,248,22,173,15,23,197,2,10,28,248, +22,154,7,23,197,2,28,248,22,132,16,23,197,2,10,248,22,133,16,23,197, +2,11,12,250,22,180,11,2,17,2,49,23,199,2,28,248,22,132,16,23,197, +2,12,251,22,182,11,2,17,2,54,2,47,23,200,2,86,94,86,94,28,28, +248,22,173,15,23,198,2,10,28,248,22,154,7,23,198,2,28,248,22,132,16, +23,198,2,10,248,22,133,16,23,198,2,11,12,250,22,180,11,2,17,2,49, +23,200,2,28,248,22,132,16,23,198,2,12,251,22,182,11,2,17,2,54,2, +47,23,201,2,249,22,3,32,0,88,148,8,36,37,46,11,9,222,33,107,23, +200,2,28,28,248,22,0,23,195,2,249,22,50,23,196,2,37,11,12,250,22, +180,11,2,17,2,55,23,197,2,252,80,143,41,49,23,199,1,23,202,1,23, +203,1,23,201,1,23,200,1,27,248,22,150,16,2,56,28,248,22,134,16,23, +194,2,248,22,137,16,23,194,1,28,248,22,133,16,23,194,2,90,144,39,11, +89,146,39,36,11,248,22,130,16,249,22,135,16,250,80,144,46,40,39,248,22, +150,16,2,57,11,11,248,22,150,16,2,58,86,95,23,195,1,23,194,1,248, +22,137,16,249,22,135,16,23,199,1,23,196,1,27,250,80,144,41,40,39,248, +22,150,16,2,57,23,197,1,10,28,23,193,2,248,22,137,16,23,194,1,11, +249,80,144,38,52,37,36,80,144,38,8,40,39,27,248,22,150,16,2,59,28, +248,22,134,16,23,194,2,248,22,137,16,23,194,1,28,248,22,133,16,23,194, +2,90,144,39,11,89,146,39,36,11,248,22,130,16,249,22,135,16,250,80,144, +46,40,39,248,22,150,16,2,57,11,11,248,22,150,16,2,58,86,95,23,195, +1,23,194,1,248,22,137,16,249,22,135,16,23,199,1,23,196,1,27,250,80, +144,41,40,39,248,22,150,16,2,57,23,197,1,10,28,23,193,2,248,22,137, +16,23,194,1,11,249,80,144,38,52,37,37,80,144,38,8,41,39,27,20,13, +144,80,144,37,43,37,26,29,80,144,8,30,44,37,249,22,33,11,80,144,8, +32,43,37,22,143,15,10,22,144,15,10,22,145,15,10,22,148,15,10,22,147, +15,11,22,149,15,10,22,146,15,10,22,150,15,10,22,151,15,10,22,152,15, +10,22,153,15,10,22,154,15,11,22,155,15,10,22,141,15,11,247,22,149,6, +28,248,22,151,2,193,192,11,27,28,23,195,2,249,22,191,15,23,197,1,6, +11,11,99,111,110,102,105,103,46,114,107,116,100,86,94,23,195,1,11,27,28, +23,194,2,28,248,22,185,15,23,195,2,249,22,141,6,23,196,1,80,144,40, +8,42,39,11,11,28,192,192,21,17,1,0,250,22,160,2,23,196,1,2,60, +247,22,172,8,250,22,160,2,195,2,60,247,22,172,8,28,248,22,154,7,23, +195,2,27,248,22,181,15,23,196,1,28,248,22,134,16,23,194,2,192,249,22, +135,16,23,195,1,27,247,80,144,40,51,39,28,23,193,2,192,86,94,23,193, +1,247,22,151,16,28,248,22,143,8,23,195,2,27,248,22,182,15,23,196,1, +28,248,22,134,16,23,194,2,192,249,22,135,16,23,195,1,27,247,80,144,40, +51,39,28,23,193,2,192,86,94,23,193,1,247,22,151,16,28,248,22,173,15, +23,195,2,28,248,22,134,16,23,195,2,193,249,22,135,16,23,196,1,27,247, +80,144,39,51,39,28,23,193,2,192,86,94,23,193,1,247,22,151,16,193,27, +248,22,150,16,2,56,28,248,22,134,16,23,194,2,248,22,137,16,23,194,1, +28,248,22,133,16,23,194,2,90,144,39,11,89,146,39,36,11,248,22,130,16, +249,22,135,16,250,80,144,46,40,39,248,22,150,16,2,57,11,11,248,22,150, +16,2,58,86,95,23,195,1,23,194,1,248,22,137,16,249,22,135,16,23,199, +1,23,196,1,27,250,80,144,41,40,39,248,22,150,16,2,57,23,197,1,10, +28,23,193,2,248,22,137,16,23,194,1,11,28,248,22,134,16,23,195,2,193, +249,22,135,16,23,196,1,27,249,80,144,41,52,37,36,80,144,41,8,43,39, +28,23,193,2,192,86,94,23,193,1,247,22,151,16,28,248,22,134,16,23,195, +2,248,22,137,16,23,195,1,28,248,22,133,16,23,195,2,90,144,39,11,89, +146,39,36,11,248,22,130,16,249,22,135,16,250,80,144,45,40,39,248,22,150, +16,2,57,11,11,248,22,150,16,2,58,86,95,23,195,1,23,194,1,248,22, +137,16,249,22,135,16,23,200,1,23,196,1,27,250,80,144,40,40,39,248,22, +150,16,2,57,23,198,1,10,28,23,193,2,248,22,137,16,23,194,1,11,28, +248,22,90,23,196,2,9,28,248,22,83,23,196,2,249,22,82,27,248,22,158, +20,23,199,2,28,248,22,154,7,23,194,2,27,248,22,181,15,23,195,1,28, +248,22,134,16,23,194,2,192,249,22,135,16,23,195,1,27,247,80,144,43,51, +39,28,23,193,2,192,86,94,23,193,1,247,22,151,16,28,248,22,143,8,23, +194,2,27,248,22,182,15,23,195,1,28,248,22,134,16,23,194,2,192,249,22, +135,16,23,195,1,27,247,80,144,43,51,39,28,23,193,2,192,86,94,23,193, +1,247,22,151,16,28,248,22,173,15,23,194,2,28,248,22,134,16,23,194,2, +192,249,22,135,16,23,195,1,27,247,80,144,42,51,39,28,23,193,2,192,86, +94,23,193,1,247,22,151,16,192,27,248,22,159,20,23,199,1,28,248,22,90, +23,194,2,9,28,248,22,83,23,194,2,249,22,82,248,80,144,42,57,39,248, +22,158,20,23,197,2,27,248,22,159,20,23,197,1,28,248,22,90,23,194,2, +9,28,248,22,83,23,194,2,249,22,82,248,80,144,45,57,39,248,22,158,20, +23,197,2,249,80,144,46,8,44,39,23,204,1,248,22,159,20,23,198,1,249, +22,96,23,202,2,249,80,144,46,8,44,39,23,204,1,248,22,159,20,23,198, +1,249,22,96,23,199,2,27,248,22,159,20,23,197,1,28,248,22,90,23,194, +2,9,28,248,22,83,23,194,2,249,22,82,248,80,144,45,57,39,248,22,158, +20,23,197,2,249,80,144,46,8,44,39,23,204,1,248,22,159,20,23,198,1, +249,22,96,23,202,2,249,80,144,46,8,44,39,23,204,1,248,22,159,20,23, +198,1,249,22,96,23,196,2,27,248,22,159,20,23,199,1,28,248,22,90,23, +194,2,9,28,248,22,83,23,194,2,249,22,82,248,80,144,42,57,39,248,22, +158,20,23,197,2,27,248,22,159,20,23,197,1,28,248,22,90,23,194,2,9, +28,248,22,83,23,194,2,249,22,82,248,80,144,45,57,39,248,22,158,20,23, +197,2,249,80,144,46,8,44,39,23,204,1,248,22,159,20,23,198,1,249,22, +96,23,202,2,249,80,144,46,8,44,39,23,204,1,248,22,159,20,23,198,1, +249,22,96,23,199,2,27,248,22,159,20,23,197,1,28,248,22,90,23,194,2, +9,28,248,22,83,23,194,2,249,22,82,248,80,144,45,57,39,248,22,158,20, +23,197,2,249,80,144,46,8,44,39,23,204,1,248,22,159,20,23,198,1,249, +22,96,23,202,2,249,80,144,46,8,44,39,23,204,1,248,22,159,20,23,198, +1,27,250,22,160,2,23,198,1,23,199,1,11,28,192,249,80,144,39,8,44, +39,198,194,196,27,248,22,150,16,2,59,28,248,22,134,16,23,194,2,248,22, +137,16,23,194,1,28,248,22,133,16,23,194,2,90,144,39,11,89,146,39,36, +11,248,22,130,16,249,22,135,16,250,80,144,46,40,39,248,22,150,16,2,57, +11,11,248,22,150,16,2,58,86,95,23,195,1,23,194,1,248,22,137,16,249, +22,135,16,23,199,1,23,196,1,27,250,80,144,41,40,39,248,22,150,16,2, +57,23,197,1,10,28,23,193,2,248,22,137,16,23,194,1,11,27,248,80,144, +38,55,39,249,80,144,40,52,37,37,80,144,40,8,45,39,27,27,250,22,160, +2,23,198,2,70,108,105,110,107,115,45,102,105,108,101,11,27,28,23,194,2, +23,194,1,86,94,23,194,1,249,22,191,15,27,250,22,160,2,23,202,2,69, +115,104,97,114,101,45,100,105,114,11,28,192,192,249,22,191,15,62,117,112,6, +5,5,115,104,97,114,101,2,61,28,248,22,154,7,23,194,2,27,248,22,181, +15,23,195,1,28,248,22,134,16,23,194,2,192,249,22,135,16,23,195,1,27, +247,80,144,44,51,39,28,23,193,2,192,86,94,23,193,1,247,22,151,16,28, +248,22,143,8,23,194,2,27,248,22,182,15,23,195,1,28,248,22,134,16,23, +194,2,192,249,22,135,16,23,195,1,27,247,80,144,44,51,39,28,23,193,2, +192,86,94,23,193,1,247,22,151,16,28,248,22,173,15,23,194,2,28,248,22, +134,16,23,194,2,192,249,22,135,16,23,195,1,27,247,80,144,43,51,39,28, +23,193,2,192,86,94,23,193,1,247,22,151,16,192,250,22,96,248,22,92,11, +28,247,22,157,16,28,247,22,158,16,248,22,92,250,22,191,15,248,22,150,16, +2,62,250,22,160,2,23,204,2,2,60,247,22,172,8,2,61,9,9,28,247, +22,158,16,250,80,144,44,59,39,23,200,1,78,108,105,110,107,115,45,115,101, +97,114,99,104,45,102,105,108,101,115,248,22,92,23,200,1,9,248,22,172,13, +23,194,1,249,22,16,80,144,38,8,26,38,28,248,22,128,13,23,197,2,86, +94,23,196,1,32,0,88,148,8,36,36,41,11,9,222,11,20,20,94,88,148, +8,36,36,43,11,9,223,3,33,125,23,196,1,32,127,88,148,36,37,56,11, +2,51,222,33,128,2,90,144,39,11,89,146,39,36,11,248,22,130,16,23,197, +1,86,95,23,195,1,23,194,1,28,248,22,173,15,23,194,2,28,248,22,186, +15,23,194,2,249,22,146,6,23,195,1,32,0,88,148,8,36,36,41,11,9, +222,11,90,144,39,11,89,146,39,36,11,248,22,130,16,23,197,1,86,95,23, +195,1,23,194,1,28,248,22,173,15,23,194,2,28,248,22,186,15,23,194,2, +249,22,146,6,23,195,1,32,0,88,148,8,36,36,41,11,9,222,11,90,144, +39,11,89,146,39,36,11,248,22,130,16,23,197,1,86,95,23,195,1,23,194, +1,28,248,22,173,15,23,194,2,28,248,22,186,15,23,194,2,249,22,146,6, 23,195,1,32,0,88,148,8,36,36,41,11,9,222,11,90,144,39,11,89,146, -39,36,11,248,22,128,16,23,197,1,86,95,23,195,1,23,194,1,28,248,22, -171,15,23,194,2,28,248,22,184,15,23,194,2,249,22,144,6,23,195,1,32, -0,88,148,8,36,36,41,11,9,222,11,90,144,39,11,89,146,39,36,11,248, -22,128,16,23,197,1,86,95,23,195,1,23,194,1,28,248,22,171,15,23,194, -2,28,248,22,184,15,23,194,2,249,22,144,6,23,195,1,32,0,88,148,8, -36,36,41,11,9,222,11,90,144,39,11,89,146,39,36,11,248,22,128,16,23, -197,1,86,95,23,195,1,23,194,1,28,248,22,171,15,23,194,2,28,248,22, -184,15,23,194,2,249,22,144,6,23,195,1,32,0,88,148,8,36,36,41,11, -9,222,11,248,2,127,23,194,1,11,11,11,11,32,129,2,88,148,8,36,37, -55,11,2,51,222,33,130,2,27,249,22,162,6,8,128,128,23,196,2,28,248, -22,147,7,23,194,2,9,249,22,80,23,195,1,27,249,22,162,6,8,128,128, -23,199,2,28,248,22,147,7,23,194,2,9,249,22,80,23,195,1,27,249,22, -162,6,8,128,128,23,202,2,28,248,22,147,7,23,194,2,9,249,22,80,23, -195,1,27,249,22,162,6,8,128,128,23,205,2,28,248,22,147,7,23,194,2, -9,249,22,80,23,195,1,248,2,129,2,23,206,1,27,249,22,162,6,8,128, -128,23,196,2,28,248,22,141,8,23,194,2,28,249,22,132,4,248,22,146,8, -23,196,2,8,128,128,249,22,1,22,153,8,249,22,80,23,197,1,27,249,22, -162,6,8,128,128,23,201,2,28,248,22,147,7,23,194,2,9,249,22,80,23, -195,1,27,249,22,162,6,8,128,128,23,204,2,28,248,22,147,7,23,194,2, -9,249,22,80,23,195,1,27,249,22,162,6,8,128,128,23,207,2,28,248,22, -147,7,23,194,2,9,249,22,80,23,195,1,27,249,22,162,6,8,128,128,23, -210,2,28,248,22,147,7,23,194,2,9,249,22,80,23,195,1,248,2,129,2, -23,211,1,192,192,248,22,132,6,23,194,1,20,13,144,80,144,37,8,28,37, -80,144,37,8,46,39,27,28,249,22,188,8,248,22,179,8,2,63,38,90,144, -39,11,89,146,39,36,11,248,22,128,16,23,198,2,86,95,23,195,1,23,194, -1,28,248,22,171,15,23,194,2,28,248,22,184,15,23,194,2,249,22,144,6, +39,36,11,248,22,130,16,23,197,1,86,95,23,195,1,23,194,1,28,248,22, +173,15,23,194,2,28,248,22,186,15,23,194,2,249,22,146,6,23,195,1,32, +0,88,148,8,36,36,41,11,9,222,11,248,2,127,23,194,1,11,11,11,11, +32,129,2,88,148,8,36,37,55,11,2,51,222,33,130,2,27,249,22,164,6, +8,128,128,23,196,2,28,248,22,149,7,23,194,2,9,249,22,82,23,195,1, +27,249,22,164,6,8,128,128,23,199,2,28,248,22,149,7,23,194,2,9,249, +22,82,23,195,1,27,249,22,164,6,8,128,128,23,202,2,28,248,22,149,7, +23,194,2,9,249,22,82,23,195,1,27,249,22,164,6,8,128,128,23,205,2, +28,248,22,149,7,23,194,2,9,249,22,82,23,195,1,248,2,129,2,23,206, +1,27,249,22,164,6,8,128,128,23,196,2,28,248,22,143,8,23,194,2,28, +249,22,134,4,248,22,148,8,23,196,2,8,128,128,249,22,1,22,155,8,249, +22,82,23,197,1,27,249,22,164,6,8,128,128,23,201,2,28,248,22,149,7, +23,194,2,9,249,22,82,23,195,1,27,249,22,164,6,8,128,128,23,204,2, +28,248,22,149,7,23,194,2,9,249,22,82,23,195,1,27,249,22,164,6,8, +128,128,23,207,2,28,248,22,149,7,23,194,2,9,249,22,82,23,195,1,27, +249,22,164,6,8,128,128,23,210,2,28,248,22,149,7,23,194,2,9,249,22, +82,23,195,1,248,2,129,2,23,211,1,192,192,248,22,134,6,23,194,1,20, +13,144,80,144,37,8,28,37,80,144,37,8,46,39,27,28,249,22,190,8,248, +22,181,8,2,63,38,90,144,39,11,89,146,39,36,11,248,22,130,16,23,198, +2,86,95,23,195,1,23,194,1,28,248,22,173,15,23,194,2,28,248,22,186, +15,23,194,2,249,22,146,6,23,195,1,32,0,88,148,8,36,36,41,11,9, +222,11,90,144,39,11,89,146,39,36,11,248,22,130,16,23,197,1,86,95,23, +195,1,23,194,1,28,248,22,173,15,23,194,2,28,248,22,186,15,23,194,2, +249,22,146,6,23,195,1,32,0,88,148,8,36,36,41,11,9,222,11,90,144, +39,11,89,146,39,36,11,248,22,130,16,23,197,1,86,95,23,195,1,23,194, +1,28,248,22,173,15,23,194,2,28,248,22,186,15,23,194,2,249,22,146,6, 23,195,1,32,0,88,148,8,36,36,41,11,9,222,11,90,144,39,11,89,146, -39,36,11,248,22,128,16,23,197,1,86,95,23,195,1,23,194,1,28,248,22, -171,15,23,194,2,28,248,22,184,15,23,194,2,249,22,144,6,23,195,1,32, -0,88,148,8,36,36,41,11,9,222,11,90,144,39,11,89,146,39,36,11,248, -22,128,16,23,197,1,86,95,23,195,1,23,194,1,28,248,22,171,15,23,194, -2,28,248,22,184,15,23,194,2,249,22,144,6,23,195,1,32,0,88,148,8, -36,36,41,11,9,222,11,90,144,39,11,89,146,39,36,11,248,22,128,16,23, -197,1,86,95,23,195,1,23,194,1,28,248,22,171,15,23,194,2,28,248,22, -184,15,23,194,2,249,22,144,6,23,195,1,32,0,88,148,8,36,36,41,11, -9,222,11,248,2,127,23,194,1,11,11,11,11,11,28,248,22,183,15,23,195, -2,27,28,249,22,188,8,248,22,179,8,2,63,38,249,22,144,6,23,197,2, -32,0,88,148,8,36,36,41,11,9,222,11,11,86,94,28,23,194,2,248,22, -146,6,23,195,1,86,94,23,194,1,12,249,22,80,27,248,22,187,5,23,199, -1,250,22,46,22,37,88,148,36,36,8,24,11,9,223,3,33,131,2,20,20, -94,88,148,36,36,43,11,9,223,3,33,132,2,23,196,1,194,249,22,80,11, -194,28,28,23,195,2,28,248,22,82,23,196,2,248,22,166,9,249,22,172,14, -36,248,22,157,20,23,199,2,11,11,194,86,94,23,195,1,249,22,14,20,20, -94,88,148,8,32,36,58,16,4,36,8,128,80,8,240,0,64,0,0,36,9, -224,2,3,33,133,2,23,196,1,80,144,38,8,26,38,27,248,22,166,9,194, -28,192,192,248,22,166,9,248,22,81,195,86,95,28,248,22,147,12,23,198,2, -27,247,22,139,12,28,249,22,129,12,23,195,2,2,64,251,22,135,12,23,197, -1,2,64,250,22,136,8,6,42,42,101,114,114,111,114,32,114,101,97,100,105, -110,103,32,99,111,108,108,101,99,116,105,111,110,32,108,105,110,107,115,32,102, -105,108,101,32,126,115,58,32,126,97,23,203,2,248,22,143,12,23,206,2,247, -22,29,12,12,28,23,193,2,250,22,156,2,80,144,42,8,25,38,23,198,1, -249,22,80,21,17,0,0,23,198,1,86,95,23,195,1,23,193,1,12,28,248, -22,147,12,23,198,2,86,94,23,197,1,248,23,195,1,247,22,138,2,196,88, -148,36,37,55,8,240,0,0,0,2,9,226,0,2,1,3,33,136,2,20,20, -94,248,22,147,6,23,194,2,28,248,22,147,7,248,22,147,6,23,195,1,12, -248,22,174,11,6,30,30,101,120,112,101,99,116,101,100,32,97,32,115,105,110, -103,108,101,32,83,45,101,120,112,114,101,115,115,105,111,110,248,22,132,6,23, -194,1,28,248,22,89,193,28,28,249,22,128,4,38,248,22,93,195,10,249,22, -128,4,39,248,22,93,195,28,28,248,22,152,7,248,22,81,194,10,28,249,22, -168,9,2,65,248,22,156,20,195,10,249,22,168,9,2,66,248,22,156,20,195, -28,27,248,22,102,194,28,248,22,171,15,193,10,28,248,22,152,7,193,28,248, -22,130,16,193,10,248,22,131,16,193,11,27,248,22,88,248,22,104,195,28,192, -192,248,22,176,16,248,22,111,195,11,11,11,11,28,248,22,184,15,249,22,189, -15,23,196,2,23,198,2,27,248,22,68,248,22,175,15,23,198,1,250,22,156, -2,23,198,2,23,196,2,249,22,80,23,199,1,250,22,158,2,23,203,1,23, -201,1,9,12,250,22,156,2,23,197,1,23,198,1,249,22,80,23,198,1,23, -201,1,28,28,248,22,88,248,22,104,23,197,2,10,249,22,167,16,248,22,111, -23,198,2,247,22,170,8,27,248,22,135,16,249,22,133,16,248,22,102,23,200, -2,23,198,1,28,249,22,168,9,248,22,81,23,199,2,2,66,86,94,23,196, -1,249,22,3,20,20,94,88,148,8,36,37,53,11,9,224,3,2,33,141,2, -23,196,1,248,22,138,16,23,196,1,28,249,22,168,9,248,22,156,20,23,199, -2,2,65,86,94,23,196,1,86,94,28,250,22,158,2,23,197,2,11,11,12, -250,22,156,2,23,197,2,11,9,249,22,164,2,23,196,2,20,20,95,88,148, -8,36,38,50,11,9,224,3,2,33,142,2,23,195,1,23,196,1,27,248,22, -68,248,22,156,20,23,199,1,250,22,156,2,23,198,2,23,196,2,249,22,80, -248,22,129,2,23,200,1,250,22,158,2,23,203,1,23,201,1,9,12,250,22, -156,2,23,196,1,23,197,1,248,22,95,23,199,1,27,28,28,23,194,2,248, -22,166,9,248,22,81,23,196,2,10,9,27,249,22,187,5,23,198,2,66,98, -105,110,97,114,121,250,22,46,22,37,88,148,8,36,36,44,11,9,223,3,33, -138,2,20,20,94,88,148,36,36,43,11,9,223,3,33,139,2,23,196,1,86, -94,28,28,248,22,89,23,194,2,249,22,4,32,0,88,148,8,36,37,45,11, -9,222,33,140,2,23,195,2,11,12,248,22,174,11,6,18,18,105,108,108,45, -102,111,114,109,101,100,32,99,111,110,116,101,110,116,27,247,22,138,2,27,90, -144,39,11,89,146,39,36,11,248,22,128,16,23,201,2,192,86,96,249,22,3, -20,20,94,88,148,8,36,37,54,11,9,224,2,3,33,143,2,23,195,1,23, -197,1,249,22,164,2,195,88,148,8,36,38,48,11,9,223,3,33,144,2,250, -22,156,2,80,144,44,8,25,38,23,200,1,249,22,80,23,201,1,198,193,20, -13,144,80,144,37,8,28,37,250,80,144,40,8,47,39,23,198,2,23,196,2, -11,27,250,22,158,2,80,144,41,8,25,38,23,197,2,21,143,11,17,0,0, -27,248,22,81,23,195,2,27,249,80,144,42,8,27,39,23,198,2,23,196,2, -28,249,22,170,9,23,195,2,23,196,1,248,22,82,195,86,94,23,195,1,20, -13,144,80,144,40,8,28,37,250,80,144,43,8,47,39,23,201,1,23,199,2, -23,196,2,27,20,20,95,88,148,8,36,36,52,8,240,0,0,0,2,9,225, -5,4,1,33,145,2,23,194,1,23,197,1,28,249,22,50,23,195,2,36,20, -13,144,80,144,41,43,37,26,29,80,144,8,34,44,37,249,22,33,11,80,144, -8,36,43,37,22,141,15,10,22,142,15,10,22,143,15,10,22,146,15,10,22, -145,15,11,22,147,15,10,22,144,15,10,22,148,15,10,22,149,15,10,22,150, -15,10,22,151,15,10,22,152,15,11,22,153,15,10,22,139,15,11,247,23,193, -1,250,22,178,11,2,8,2,53,23,196,1,248,22,8,20,20,94,88,148,36, -37,8,43,16,4,8,128,6,8,128,104,8,240,0,128,0,0,36,9,224,1, -2,33,146,2,23,195,1,0,7,35,114,120,34,47,43,34,28,248,22,152,7, -23,195,2,27,249,22,165,16,2,148,2,23,197,2,28,23,193,2,28,249,22, -128,4,248,22,101,23,196,2,248,22,182,3,248,22,155,7,23,199,2,249,22, -7,250,22,174,7,23,200,1,36,248,22,101,23,199,1,23,198,1,249,22,7, -250,22,174,7,23,200,2,36,248,22,101,23,199,2,249,22,80,249,22,174,7, -23,201,1,248,22,103,23,200,1,23,200,1,249,22,7,23,197,1,23,198,1, -90,144,39,11,89,146,39,36,11,248,22,128,16,23,198,1,86,94,23,195,1, -28,249,22,168,9,23,195,2,2,50,86,94,23,193,1,249,22,7,23,196,1, -23,200,1,27,249,22,80,23,197,1,23,201,1,28,248,22,152,7,23,195,2, -27,249,22,165,16,2,148,2,23,197,2,28,23,193,2,28,249,22,128,4,248, -22,101,23,196,2,248,22,182,3,248,22,155,7,23,199,2,249,22,7,250,22, -174,7,23,200,1,36,248,22,101,23,199,1,23,196,1,249,22,7,250,22,174, -7,23,200,2,36,248,22,101,23,199,2,249,22,80,249,22,174,7,23,201,1, -248,22,103,23,200,1,23,198,1,249,22,7,23,197,1,23,196,1,90,144,39, -11,89,146,39,36,11,248,22,128,16,23,198,1,86,94,23,195,1,28,249,22, -168,9,23,195,2,2,50,86,94,23,193,1,249,22,7,23,196,1,23,198,1, -249,80,144,45,8,31,39,194,249,22,80,197,199,28,248,22,88,23,196,2,9, -28,248,22,81,23,196,2,28,248,22,149,2,248,22,156,20,23,197,2,250,22, -94,249,22,2,22,129,2,250,22,158,2,248,22,156,20,23,204,2,23,202,2, -9,250,22,158,2,248,22,156,20,23,202,2,11,9,27,248,22,157,20,23,200, -1,28,248,22,88,23,194,2,9,28,248,22,81,23,194,2,28,248,22,149,2, -248,22,156,20,23,195,2,250,22,94,249,22,2,22,129,2,250,22,158,2,248, -22,156,20,23,202,2,23,206,2,9,250,22,158,2,248,22,156,20,23,200,2, -11,9,249,80,144,45,8,48,39,23,203,1,248,22,157,20,23,199,1,27,248, -80,144,42,8,30,39,248,22,156,20,23,196,2,250,22,94,250,22,158,2,23, -199,2,23,205,2,9,250,22,158,2,23,199,1,11,9,249,80,144,46,8,48, -39,23,204,1,248,22,157,20,23,200,1,249,22,94,247,22,151,16,249,80,144, -44,8,48,39,23,202,1,248,22,157,20,23,198,1,27,248,80,144,38,8,30, -39,248,22,156,20,23,198,2,250,22,94,250,22,158,2,23,199,2,23,201,2, -9,250,22,158,2,23,199,1,11,9,27,248,22,157,20,23,201,1,28,248,22, -88,23,194,2,9,28,248,22,81,23,194,2,28,248,22,149,2,248,22,156,20, -23,195,2,250,22,94,249,22,2,22,129,2,250,22,158,2,248,22,156,20,23, -202,2,23,207,2,9,250,22,158,2,248,22,156,20,23,200,2,11,9,249,80, -144,46,8,48,39,23,204,1,248,22,157,20,23,199,1,27,248,80,144,43,8, -30,39,248,22,156,20,23,196,2,250,22,94,250,22,158,2,23,199,2,23,206, -2,9,250,22,158,2,23,199,1,11,9,249,80,144,47,8,48,39,23,205,1, -248,22,157,20,23,200,1,249,22,94,247,22,151,16,249,80,144,45,8,48,39, -23,203,1,248,22,157,20,23,198,1,249,22,94,247,22,151,16,27,248,22,157, -20,23,199,1,28,248,22,88,23,194,2,9,28,248,22,81,23,194,2,28,248, -22,149,2,248,22,156,20,23,195,2,250,22,94,249,22,2,22,129,2,250,22, -158,2,248,22,156,20,23,202,2,23,205,2,9,250,22,158,2,248,22,156,20, -23,200,2,11,9,249,80,144,44,8,48,39,23,202,1,248,22,157,20,23,199, -1,27,248,80,144,41,8,30,39,248,22,156,20,23,196,2,250,22,94,250,22, -158,2,23,199,2,23,204,2,9,250,22,158,2,23,199,1,11,9,249,80,144, -45,8,48,39,23,203,1,248,22,157,20,23,200,1,249,22,94,247,22,151,16, -249,80,144,43,8,48,39,23,201,1,248,22,157,20,23,198,1,32,151,2,88, -148,8,36,37,47,11,2,51,222,33,152,2,28,248,22,88,248,22,82,23,195, -2,248,22,90,27,248,22,156,20,195,28,248,22,171,15,193,248,22,175,15,193, -192,250,22,91,27,248,22,156,20,23,198,2,28,248,22,171,15,193,248,22,175, -15,193,192,2,68,248,2,151,2,248,22,157,20,23,198,1,250,22,136,8,6, -7,7,10,32,126,97,32,126,97,6,1,1,32,23,196,1,249,22,136,8,6, -6,6,10,32,32,32,126,97,248,22,132,2,23,196,1,32,155,2,88,148,36, -38,48,11,66,102,105,108,116,101,114,222,33,156,2,28,248,22,88,23,195,2, -9,28,248,23,194,2,248,22,81,23,196,2,249,22,80,248,22,156,20,23,197, -2,249,2,155,2,23,197,1,248,22,157,20,23,199,1,249,2,155,2,23,195, -1,248,22,157,20,23,197,1,28,248,22,88,23,201,2,86,95,23,200,1,23, -199,1,28,23,201,2,28,197,249,22,189,15,202,199,200,27,28,248,22,88,23, -198,2,2,67,249,22,1,22,175,7,248,2,151,2,23,200,2,248,23,199,1, -251,22,136,8,6,70,70,99,111,108,108,101,99,116,105,111,110,32,110,111,116, -32,102,111,117,110,100,10,32,32,99,111,108,108,101,99,116,105,111,110,58,32, -126,115,10,32,32,105,110,32,99,111,108,108,101,99,116,105,111,110,32,100,105, -114,101,99,116,111,114,105,101,115,58,126,97,126,97,28,248,22,88,23,203,1, -28,248,22,171,15,23,202,2,248,22,175,15,23,202,1,23,201,1,250,22,175, -7,28,248,22,171,15,23,205,2,248,22,175,15,23,205,1,23,204,1,2,68, -23,201,2,249,22,1,22,175,7,249,22,2,32,0,88,148,8,36,37,45,11, -9,222,33,153,2,27,248,22,93,23,206,2,27,248,22,93,247,22,151,16,28, -249,22,129,4,249,22,184,3,23,198,2,23,197,2,41,23,206,2,249,22,94, -247,22,151,16,248,22,90,249,22,136,8,6,50,50,46,46,46,32,91,126,97, -32,97,100,100,105,116,105,111,110,97,108,32,108,105,110,107,101,100,32,97,110, -100,32,112,97,99,107,97,103,101,32,100,105,114,101,99,116,111,114,105,101,115, -93,249,22,184,3,23,201,1,23,200,1,28,249,22,5,22,131,2,23,202,2, -250,22,136,8,6,49,49,10,32,32,32,115,117,98,45,99,111,108,108,101,99, -116,105,111,110,58,32,126,115,10,32,32,105,110,32,112,97,114,101,110,116,32, -100,105,114,101,99,116,111,114,105,101,115,58,126,97,23,201,1,249,22,1,22, -175,7,249,22,2,32,0,88,148,8,36,37,45,11,9,222,33,154,2,249,2, -155,2,22,131,2,23,209,1,86,95,23,200,1,23,198,1,2,67,27,248,22, -81,23,202,2,27,28,248,22,171,15,23,195,2,249,22,189,15,23,196,1,23, -199,2,248,22,132,2,23,195,1,28,28,248,22,171,15,248,22,81,23,204,2, -248,22,184,15,23,194,2,10,27,250,22,1,22,189,15,23,197,1,23,202,2, -28,28,248,22,88,23,200,2,10,248,22,184,15,23,194,2,28,23,201,2,28, -28,250,80,144,42,8,32,39,195,203,204,10,27,28,248,22,171,15,202,248,22, -175,15,202,201,19,248,22,155,7,23,195,2,27,28,249,22,132,4,23,196,4, -40,28,249,22,158,7,6,4,4,46,114,107,116,249,22,174,7,23,199,2,249, -22,184,3,23,200,4,40,249,22,175,7,250,22,174,7,23,200,1,36,249,22, -184,3,23,201,4,40,6,3,3,46,115,115,86,94,23,195,1,11,11,28,23, -193,2,250,80,144,45,8,32,39,198,23,196,1,23,15,11,2,28,200,249,22, -189,15,194,202,192,26,8,80,144,47,8,49,39,204,205,206,23,15,23,16,23, -17,248,22,157,20,23,19,28,23,19,23,19,200,28,200,249,22,189,15,194,202, -192,26,8,80,144,47,8,49,39,204,205,206,23,15,23,16,23,17,248,22,157, -20,23,19,23,19,26,8,80,144,46,8,49,39,203,204,205,206,23,15,23,16, -248,22,157,20,23,18,23,18,90,144,38,11,89,146,38,36,11,249,80,144,40, -8,31,39,23,199,1,23,200,1,27,248,22,68,28,248,22,171,15,195,248,22, -175,15,195,194,27,27,247,22,152,16,28,248,22,88,23,194,2,9,28,248,22, -81,23,194,2,28,248,22,149,2,248,22,156,20,23,195,2,250,22,94,249,22, -2,22,129,2,250,22,158,2,248,22,156,20,23,202,2,23,203,2,9,250,22, -158,2,248,22,156,20,23,200,2,11,9,249,80,144,46,8,48,39,23,200,1, -248,22,157,20,23,199,1,27,248,80,144,43,8,30,39,248,22,156,20,23,196, -2,250,22,94,250,22,158,2,23,199,2,23,202,2,9,250,22,158,2,23,199, -1,11,9,249,80,144,47,8,48,39,23,201,1,248,22,157,20,23,200,1,249, -22,94,247,22,151,16,249,80,144,45,8,48,39,23,199,1,248,22,157,20,23, -198,1,26,8,80,144,48,8,49,39,200,202,203,205,23,16,23,17,200,11,32, -159,2,88,148,8,36,39,56,11,2,51,222,33,160,2,28,248,22,133,4,23, -196,2,86,94,23,195,1,19,248,22,146,8,23,195,2,19,248,22,146,8,23, -196,2,249,22,181,15,27,251,22,153,8,250,22,152,8,23,205,2,36,23,204, -4,2,52,249,22,152,8,23,204,1,23,202,4,2,69,28,248,22,133,4,248, -22,146,8,23,195,2,86,94,23,193,1,251,22,180,11,2,38,2,70,2,71, -202,192,28,248,22,172,15,198,248,22,173,15,198,247,22,174,15,2,2,27,248, -22,182,3,23,197,1,28,249,22,168,9,8,46,249,22,147,8,23,198,2,23, -197,2,27,248,22,181,3,23,195,2,249,22,181,15,27,251,22,153,8,250,22, -152,8,23,205,2,36,23,204,1,2,72,249,22,152,8,23,204,1,23,202,1, -2,69,28,248,22,133,4,248,22,146,8,23,195,2,86,94,23,193,1,251,22, -180,11,2,38,2,70,2,71,202,192,28,248,22,172,15,198,248,22,173,15,198, -247,22,174,15,250,2,159,2,196,197,195,248,22,183,15,27,250,22,189,15,23, -200,1,23,202,1,23,199,1,28,249,22,168,9,23,197,2,64,115,97,109,101, -192,28,248,22,130,16,23,196,2,249,22,189,15,194,196,249,80,144,43,39,39, -23,195,1,23,197,1,249,22,5,20,20,96,88,148,36,37,51,44,9,226,5, -4,2,6,33,161,2,23,199,1,23,195,1,23,197,1,23,196,1,27,248,22, -183,15,249,22,189,15,23,198,2,23,199,2,28,23,193,2,192,86,94,23,193, -1,28,23,197,1,27,90,144,38,11,89,146,38,36,11,250,80,144,43,8,34, -39,23,202,2,2,69,2,38,27,248,22,177,15,23,196,1,27,250,2,159,2, -23,197,2,23,204,1,248,22,146,8,23,198,1,28,248,22,172,15,195,249,22, -189,15,196,194,192,27,247,22,153,16,249,22,5,20,20,96,88,148,36,37,48, -44,9,226,5,6,2,3,33,162,2,23,196,1,23,195,1,23,199,1,247,22, -154,16,11,86,95,28,28,248,22,172,15,23,194,2,10,28,248,22,171,15,23, -194,2,10,28,248,22,152,7,23,194,2,28,248,22,130,16,23,194,2,10,248, -22,131,16,23,194,2,11,12,252,22,178,11,23,200,2,2,43,36,23,198,2, -23,199,2,28,28,248,22,152,7,23,195,2,10,248,22,141,8,23,195,2,86, -94,23,194,1,12,252,22,178,11,23,200,2,2,73,37,23,198,2,23,199,1, -90,144,39,11,89,146,39,36,11,248,22,128,16,23,197,2,86,94,23,195,1, -86,94,28,23,193,2,86,95,23,198,1,23,196,1,12,250,22,181,11,23,201, -1,2,74,23,199,1,249,22,7,23,195,1,23,196,1,32,165,2,88,148,8, -36,43,58,11,2,75,222,33,166,2,249,22,181,15,27,251,22,153,8,250,22, -152,8,23,203,2,36,23,207,1,23,205,1,249,23,203,1,23,202,1,23,208, -1,28,248,22,152,7,23,204,2,249,22,167,8,23,205,1,8,63,23,203,1, -28,248,22,133,4,248,22,146,8,23,195,2,86,94,23,193,1,251,22,180,11, -2,38,2,70,2,71,201,192,28,248,22,172,15,197,248,22,173,15,197,247,22, -174,15,32,167,2,88,148,8,36,42,8,24,11,2,51,222,33,168,2,28,248, -22,133,4,23,199,2,86,95,23,198,1,23,194,1,19,248,22,146,8,23,195, -2,19,248,22,146,8,23,196,2,249,22,181,15,27,251,22,153,8,250,22,152, -8,23,205,2,36,23,204,4,2,52,249,23,206,1,23,204,1,23,202,4,28, -248,22,152,7,23,207,2,249,22,167,8,23,208,1,8,63,23,206,1,28,248, -22,133,4,248,22,146,8,23,195,2,86,94,23,193,1,251,22,180,11,2,38, -2,70,2,71,204,192,28,248,22,172,15,200,248,22,173,15,200,247,22,174,15, -2,2,27,248,22,182,3,23,200,1,28,249,22,168,9,8,46,249,22,147,8, -23,198,2,23,197,2,27,248,22,181,3,23,195,2,249,22,181,15,27,251,22, -153,8,250,22,152,8,23,205,2,36,23,204,1,23,203,1,249,23,206,1,23, -204,1,23,202,1,28,248,22,152,7,23,207,2,249,22,167,8,23,208,1,8, -63,23,206,1,28,248,22,133,4,248,22,146,8,23,195,2,86,94,23,193,1, -251,22,180,11,2,38,2,70,2,71,204,192,28,248,22,172,15,200,248,22,173, -15,200,247,22,174,15,28,248,22,133,4,23,194,2,86,95,23,195,1,23,193, -1,19,248,22,146,8,23,196,2,19,248,22,146,8,23,197,2,249,22,181,15, -27,251,22,153,8,250,22,152,8,23,206,2,36,23,204,4,2,52,249,23,207, -1,23,205,1,23,202,4,28,248,22,152,7,23,208,2,249,22,167,8,23,209, -1,8,63,23,207,1,28,248,22,133,4,248,22,146,8,23,195,2,86,94,23, -193,1,251,22,180,11,2,38,2,70,2,71,205,192,28,248,22,172,15,201,248, -22,173,15,201,247,22,174,15,2,2,27,248,22,182,3,23,195,1,28,249,22, -168,9,8,46,249,22,147,8,23,199,2,23,197,2,27,248,22,181,3,23,195, -2,249,22,181,15,27,251,22,153,8,250,22,152,8,23,206,2,36,23,204,1, -23,204,1,249,23,207,1,23,205,1,23,202,1,28,248,22,152,7,23,208,2, -249,22,167,8,23,209,1,8,63,23,207,1,28,248,22,133,4,248,22,146,8, -23,195,2,86,94,23,193,1,251,22,180,11,2,38,2,70,2,71,205,192,28, -248,22,172,15,201,248,22,173,15,201,247,22,174,15,28,248,22,133,4,193,254, -2,165,2,201,203,204,205,248,22,146,8,202,2,52,248,22,146,8,202,27,248, -22,182,3,194,28,249,22,168,9,8,46,249,22,147,8,199,196,254,2,165,2, -202,204,205,206,199,203,248,22,181,3,200,253,2,167,2,201,202,203,204,205,198, -90,144,38,11,89,146,38,36,11,86,95,28,28,248,22,172,15,23,199,2,10, -28,248,22,171,15,23,199,2,10,28,248,22,152,7,23,199,2,28,248,22,130, -16,23,199,2,10,248,22,131,16,23,199,2,11,12,252,22,178,11,23,200,2, -2,43,36,23,203,2,23,204,2,28,28,248,22,152,7,23,200,2,10,248,22, -141,8,23,200,2,12,252,22,178,11,23,200,2,2,73,37,23,203,2,23,204, -2,90,144,39,11,89,146,39,36,11,248,22,128,16,23,202,2,86,94,23,195, -1,86,94,28,192,12,250,22,181,11,23,201,1,2,74,23,204,2,249,22,7, -194,195,27,248,22,177,15,23,196,1,27,19,248,22,146,8,23,196,2,28,248, -22,133,4,23,194,4,86,94,23,199,1,19,248,22,146,8,23,197,2,19,248, -22,146,8,23,198,2,249,22,181,15,27,251,22,153,8,250,22,152,8,23,207, -2,36,23,204,4,2,52,249,23,211,1,23,206,1,23,202,4,28,248,22,152, -7,23,212,2,249,22,167,8,23,213,1,8,63,23,211,1,28,248,22,133,4, -248,22,146,8,23,195,2,86,94,23,193,1,251,22,180,11,2,38,2,70,2, -71,23,17,192,28,248,22,172,15,205,248,22,173,15,205,247,22,174,15,2,2, -27,248,22,182,3,23,195,4,28,249,22,168,9,8,46,249,22,147,8,23,200, -2,23,197,2,27,248,22,181,3,23,195,2,249,22,181,15,27,251,22,153,8, -250,22,152,8,23,207,2,36,23,204,1,23,208,1,249,23,211,1,23,206,1, -23,202,1,28,248,22,152,7,23,212,2,249,22,167,8,23,213,1,8,63,23, -211,1,28,248,22,133,4,248,22,146,8,23,195,2,86,94,23,193,1,251,22, -180,11,2,38,2,70,2,71,23,17,192,28,248,22,172,15,205,248,22,173,15, -205,247,22,174,15,28,248,22,133,4,23,194,2,86,95,23,200,1,23,193,1, -254,2,165,2,23,203,2,23,208,1,23,209,1,23,210,1,248,22,146,8,23, -204,2,2,52,248,22,146,8,23,204,1,27,248,22,182,3,23,195,1,28,249, -22,168,9,8,46,249,22,147,8,23,201,2,23,197,2,254,2,165,2,23,204, -1,23,209,1,23,210,1,23,211,1,23,200,2,23,208,1,248,22,181,3,23, -201,1,253,2,167,2,23,203,1,23,207,1,23,208,1,23,209,1,23,210,1, -23,199,1,2,28,248,22,172,15,195,249,22,189,15,196,194,192,32,170,2,88, -148,8,36,40,58,11,2,51,222,33,171,2,28,248,22,133,4,23,197,2,86, -94,23,196,1,19,248,22,146,8,23,195,2,35,248,22,146,8,23,196,2,249, -22,181,15,27,251,22,153,8,250,22,152,8,23,205,1,36,23,204,4,2,52, -2,52,28,248,22,152,7,23,205,2,249,22,167,8,23,206,1,8,63,23,204, -1,28,248,22,133,4,248,22,146,8,23,195,2,86,94,23,193,1,251,22,180, -11,2,38,2,70,2,71,202,192,28,248,22,172,15,198,248,22,173,15,198,247, -22,174,15,2,27,248,22,182,3,23,198,1,28,249,22,168,9,8,46,249,22, -147,8,23,198,2,23,197,2,35,248,22,181,3,23,195,2,249,22,181,15,27, -251,22,153,8,250,22,152,8,23,205,1,36,23,204,1,2,52,2,52,28,248, -22,152,7,23,205,2,249,22,167,8,23,206,1,8,63,23,204,1,28,248,22, -133,4,248,22,146,8,23,195,2,86,94,23,193,1,251,22,180,11,2,38,2, -70,2,71,202,192,28,248,22,172,15,198,248,22,173,15,198,247,22,174,15,28, -248,22,133,4,23,194,2,86,94,23,193,1,19,248,22,146,8,23,196,2,35, -248,22,146,8,23,197,2,249,22,181,15,27,251,22,153,8,250,22,152,8,23, -206,1,36,23,204,4,2,52,2,52,28,248,22,152,7,23,206,2,249,22,167, -8,23,207,1,8,63,23,205,1,28,248,22,133,4,248,22,146,8,23,195,2, -86,94,23,193,1,251,22,180,11,2,38,2,70,2,71,203,192,28,248,22,172, -15,199,248,22,173,15,199,247,22,174,15,2,27,248,22,182,3,23,195,1,28, -249,22,168,9,8,46,249,22,147,8,23,199,2,23,197,2,35,248,22,181,3, -23,195,2,249,22,181,15,27,251,22,153,8,250,22,152,8,23,206,1,36,23, -204,1,2,52,2,52,28,248,22,152,7,23,206,2,249,22,167,8,23,207,1, -8,63,23,205,1,28,248,22,133,4,248,22,146,8,23,195,2,86,94,23,193, -1,251,22,180,11,2,38,2,70,2,71,203,192,28,248,22,172,15,199,248,22, -173,15,199,247,22,174,15,251,2,170,2,198,199,200,196,90,144,38,11,89,146, -38,36,11,86,95,28,28,248,22,172,15,23,196,2,10,28,248,22,171,15,23, -196,2,10,28,248,22,152,7,23,196,2,28,248,22,130,16,23,196,2,10,248, -22,131,16,23,196,2,11,12,252,22,178,11,2,38,2,43,36,23,200,2,23, -201,2,28,28,248,22,152,7,23,197,2,10,248,22,141,8,23,197,2,12,252, -22,178,11,2,38,2,73,37,23,200,2,23,201,2,90,144,39,11,89,146,39, -36,11,248,22,128,16,23,199,2,86,94,23,195,1,86,94,28,192,12,250,22, -181,11,2,38,2,74,23,201,2,249,22,7,194,195,27,248,22,177,15,23,196, -1,27,251,2,170,2,23,198,2,23,201,1,23,202,1,248,22,146,8,23,199, -1,28,248,22,172,15,195,249,22,189,15,196,194,192,2,52,252,80,143,41,8, -35,2,38,2,52,32,0,88,148,8,36,38,43,11,9,222,33,173,2,198,199, -32,175,2,88,148,8,36,40,57,11,2,51,222,33,178,2,32,176,2,88,148, -8,36,42,57,11,2,75,222,33,177,2,249,22,181,15,27,251,22,153,8,250, -22,152,8,23,203,2,36,23,206,1,23,204,1,249,22,152,8,23,202,1,23, -207,1,28,248,22,152,7,23,203,2,249,22,167,8,23,204,1,8,63,23,202, -1,28,248,22,133,4,248,22,146,8,23,195,2,86,94,23,193,1,251,22,180, -11,2,38,2,70,2,71,200,192,28,248,22,172,15,196,248,22,173,15,196,247, -22,174,15,28,248,22,133,4,23,197,2,86,94,23,196,1,19,248,22,146,8, -23,195,2,19,248,22,146,8,23,196,2,249,22,181,15,27,251,22,153,8,250, -22,152,8,23,205,2,36,23,204,4,2,52,249,22,152,8,23,204,1,23,202, -4,28,248,22,152,7,23,205,2,249,22,167,8,23,206,1,8,63,23,204,1, -28,248,22,133,4,248,22,146,8,23,195,2,86,94,23,193,1,251,22,180,11, -2,38,2,70,2,71,202,192,28,248,22,172,15,198,248,22,173,15,198,247,22, -174,15,2,2,27,248,22,182,3,23,198,1,28,249,22,168,9,8,46,249,22, -147,8,23,198,2,23,197,2,27,248,22,181,3,23,195,2,249,22,181,15,27, -251,22,153,8,250,22,152,8,23,205,2,36,23,204,1,2,72,249,22,152,8, -23,204,1,23,202,1,28,248,22,152,7,23,205,2,249,22,167,8,23,206,1, -8,63,23,204,1,28,248,22,133,4,248,22,146,8,23,195,2,86,94,23,193, -1,251,22,180,11,2,38,2,70,2,71,202,192,28,248,22,172,15,198,248,22, -173,15,198,247,22,174,15,28,248,22,133,4,193,253,2,176,2,199,200,201,248, -22,146,8,200,2,52,248,22,146,8,200,27,248,22,182,3,194,28,249,22,168, -9,8,46,249,22,147,8,198,196,253,2,176,2,200,201,202,198,2,72,248,22, -181,3,199,251,2,175,2,198,199,200,196,90,144,38,11,89,146,38,36,11,86, -95,28,28,248,22,172,15,23,196,2,10,28,248,22,171,15,23,196,2,10,28, -248,22,152,7,23,196,2,28,248,22,130,16,23,196,2,10,248,22,131,16,23, -196,2,11,12,252,22,178,11,2,38,2,43,36,23,200,2,23,201,2,28,28, -248,22,152,7,23,197,2,10,248,22,141,8,23,197,2,12,252,22,178,11,2, -38,2,73,37,23,200,2,23,201,2,90,144,39,11,89,146,39,36,11,248,22, -128,16,23,199,2,86,94,23,195,1,86,94,28,192,12,250,22,181,11,2,38, -2,74,23,201,2,249,22,7,194,195,27,248,22,177,15,23,196,1,27,251,2, -175,2,23,198,2,23,201,1,23,202,1,248,22,146,8,23,199,1,28,248,22, -172,15,195,249,22,189,15,196,194,192,252,80,143,41,8,35,2,38,2,72,22, -152,8,198,199,249,247,22,175,5,23,195,1,11,249,247,22,175,5,194,11,28, -248,22,88,23,195,2,9,27,27,248,22,81,23,197,2,28,248,22,132,16,23, -194,2,248,22,135,16,23,194,1,28,248,22,131,16,23,194,2,90,144,39,11, -89,146,39,36,11,248,22,128,16,249,22,133,16,250,80,144,47,40,39,248,22, -148,16,2,57,11,11,248,22,148,16,2,58,86,95,23,195,1,23,194,1,248, -22,135,16,249,22,133,16,23,199,1,23,196,1,27,250,80,144,42,40,39,248, -22,148,16,2,57,23,197,1,10,28,23,193,2,248,22,135,16,23,194,1,11, -28,23,193,2,249,22,80,248,22,135,16,249,22,133,16,23,198,1,247,22,149, -16,27,248,22,82,23,199,1,28,248,22,88,23,194,2,9,27,248,80,144,42, -53,39,248,22,81,23,196,2,28,23,193,2,249,22,80,248,22,135,16,249,22, -133,16,23,198,1,247,22,149,16,248,80,144,44,8,50,39,248,22,82,23,198, -1,86,94,23,193,1,248,80,144,42,8,50,39,248,22,82,23,196,1,86,94, -23,193,1,27,248,22,82,23,197,1,28,248,22,88,23,194,2,9,27,248,80, -144,40,53,39,248,22,81,23,196,2,28,23,193,2,249,22,80,248,22,135,16, -249,22,133,16,23,198,1,247,22,149,16,248,80,144,42,8,50,39,248,22,82, -23,198,1,86,94,23,193,1,248,80,144,40,8,50,39,248,22,82,23,196,1, -28,248,22,88,23,195,2,9,27,27,248,22,81,23,197,2,28,248,22,132,16, -23,194,2,248,22,135,16,23,194,1,28,248,22,131,16,23,194,2,90,144,39, -11,89,146,39,36,11,248,22,128,16,249,22,133,16,250,80,144,47,40,39,248, -22,148,16,2,57,11,11,248,22,148,16,2,58,86,95,23,195,1,23,194,1, -248,22,135,16,249,22,133,16,23,199,1,23,196,1,27,250,80,144,42,40,39, -248,22,148,16,2,57,23,197,1,10,28,23,193,2,248,22,135,16,23,194,1, -11,28,23,193,2,249,22,80,248,22,135,16,249,22,133,16,23,198,1,247,22, -149,16,27,248,22,82,23,199,1,28,248,22,88,23,194,2,9,27,248,80,144, -42,53,39,248,22,81,23,196,2,28,23,193,2,249,22,80,248,22,135,16,249, -22,133,16,23,198,1,247,22,149,16,248,80,144,44,8,51,39,248,22,82,23, -198,1,86,94,23,193,1,248,80,144,42,8,51,39,248,22,82,23,196,1,86, -94,23,193,1,27,248,22,82,23,197,1,28,248,22,88,23,194,2,9,27,248, -80,144,40,53,39,248,22,81,23,196,2,28,23,193,2,249,22,80,248,22,135, -16,249,22,133,16,23,198,1,247,22,149,16,248,80,144,42,8,51,39,248,22, -82,23,198,1,86,94,23,193,1,248,80,144,40,8,51,39,248,22,82,23,196, -1,27,248,22,148,16,2,59,28,248,22,132,16,23,194,2,248,22,135,16,23, -194,1,28,248,22,131,16,23,194,2,90,144,39,11,89,146,39,36,11,248,22, -128,16,249,22,133,16,250,80,144,46,40,39,248,22,148,16,2,57,11,11,248, -22,148,16,2,58,86,95,23,195,1,23,194,1,248,22,135,16,249,22,133,16, -23,199,1,23,196,1,27,250,80,144,41,40,39,248,22,148,16,2,57,23,197, -1,10,28,23,193,2,248,22,135,16,23,194,1,11,28,248,22,88,23,195,2, -9,27,27,248,22,81,23,197,2,28,248,22,132,16,23,194,2,248,22,135,16, -23,194,1,28,248,22,131,16,23,194,2,90,144,39,11,89,146,39,36,11,248, -22,128,16,249,22,133,16,250,80,144,47,40,39,248,22,148,16,2,57,11,11, -248,22,148,16,2,58,86,95,23,195,1,23,194,1,248,22,135,16,249,22,133, -16,23,199,1,23,196,1,27,250,80,144,42,40,39,248,22,148,16,2,57,23, -197,1,10,28,23,193,2,248,22,135,16,23,194,1,11,28,23,193,2,249,22, -80,248,22,135,16,249,22,133,16,23,198,1,247,22,149,16,27,248,22,82,23, -199,1,28,248,22,88,23,194,2,9,27,27,248,22,81,23,196,2,28,248,22, -132,16,23,194,2,248,22,135,16,23,194,1,28,248,22,131,16,23,194,2,90, -144,39,11,89,146,39,36,11,248,22,128,16,249,22,133,16,250,80,144,51,40, -39,248,22,148,16,2,57,11,11,248,22,148,16,2,58,86,95,23,195,1,23, -194,1,248,22,135,16,249,22,133,16,23,199,1,23,196,1,27,250,80,144,46, -40,39,248,22,148,16,2,57,23,197,1,10,28,23,193,2,248,22,135,16,23, -194,1,11,28,23,193,2,249,22,80,248,22,135,16,249,22,133,16,23,198,1, -247,22,149,16,27,248,22,82,23,198,1,28,248,22,88,23,194,2,9,27,248, -80,144,46,53,39,248,22,81,23,196,2,28,23,193,2,249,22,80,248,22,135, -16,249,22,133,16,23,198,1,247,22,149,16,248,80,144,48,8,53,39,248,22, -82,23,198,1,86,94,23,193,1,248,80,144,46,8,53,39,248,22,82,23,196, -1,86,94,23,193,1,27,248,22,82,23,196,1,28,248,22,88,23,194,2,9, -27,248,80,144,44,53,39,248,22,81,23,196,2,28,23,193,2,249,22,80,248, -22,135,16,249,22,133,16,23,198,1,247,22,149,16,248,80,144,46,8,53,39, -248,22,82,23,198,1,86,94,23,193,1,248,80,144,44,8,53,39,248,22,82, -23,196,1,86,94,23,193,1,27,248,22,82,23,197,1,28,248,22,88,23,194, -2,9,27,27,248,22,81,23,196,2,28,248,22,132,16,23,194,2,248,22,135, -16,23,194,1,28,248,22,131,16,23,194,2,90,144,39,11,89,146,39,36,11, -248,22,128,16,249,22,133,16,250,80,144,49,40,39,248,22,148,16,2,57,11, -11,248,22,148,16,2,58,86,95,23,195,1,23,194,1,248,22,135,16,249,22, -133,16,23,199,1,23,196,1,27,250,80,144,44,40,39,248,22,148,16,2,57, -23,197,1,10,28,23,193,2,248,22,135,16,23,194,1,11,28,23,193,2,249, -22,80,248,22,135,16,249,22,133,16,23,198,1,247,22,149,16,27,248,22,82, -23,198,1,28,248,22,88,23,194,2,9,27,248,80,144,44,53,39,248,22,81, -23,196,2,28,23,193,2,249,22,80,248,22,135,16,249,22,133,16,23,198,1, -247,22,149,16,248,80,144,46,8,53,39,248,22,82,23,198,1,86,94,23,193, -1,248,80,144,44,8,53,39,248,22,82,23,196,1,86,94,23,193,1,27,248, -22,82,23,196,1,28,248,22,88,23,194,2,9,27,248,80,144,42,53,39,248, -22,81,23,196,2,28,23,193,2,249,22,80,248,22,135,16,249,22,133,16,23, -198,1,247,22,149,16,248,80,144,44,8,53,39,248,22,82,23,198,1,86,94, -23,193,1,248,80,144,42,8,53,39,248,22,82,23,196,1,27,247,22,155,16, -27,248,80,144,39,55,39,247,80,144,39,54,39,249,80,144,40,41,38,28,23, -196,2,27,249,22,174,8,247,22,173,8,2,76,28,192,249,22,164,8,194,7, -63,2,67,2,67,250,80,144,43,59,39,23,198,2,2,77,27,28,23,200,1, -250,22,189,15,248,22,148,16,2,62,250,22,158,2,23,205,1,2,60,247,22, -170,8,2,78,86,94,23,199,1,11,27,248,80,144,46,8,50,39,250,22,94, -9,248,22,90,248,22,148,16,2,56,9,28,193,249,22,80,195,194,192,27,247, -22,155,16,27,248,80,144,39,55,39,247,80,144,39,54,39,249,80,144,40,41, -38,28,23,196,2,27,249,22,174,8,247,22,173,8,2,76,28,192,249,22,164, -8,194,7,63,2,67,2,67,250,80,144,43,59,39,23,198,2,2,77,27,28, -23,200,1,250,22,189,15,248,22,148,16,2,62,250,22,158,2,23,205,1,2, -60,247,22,170,8,2,78,86,94,23,199,1,11,27,248,80,144,46,8,51,39, -250,22,94,23,207,1,248,22,90,248,22,148,16,2,56,9,28,193,249,22,80, -195,194,192,27,247,22,155,16,27,248,80,144,39,55,39,249,80,144,41,52,37, -37,80,144,41,8,52,39,249,80,144,40,41,38,28,23,196,2,27,249,22,174, -8,247,22,173,8,2,76,28,192,249,22,164,8,194,7,63,2,67,2,67,250, -80,144,43,59,39,23,198,2,2,77,27,28,23,200,1,250,22,189,15,248,22, -148,16,2,62,250,22,158,2,23,205,1,2,60,247,22,170,8,2,78,86,94, -23,199,1,11,27,27,250,22,94,23,207,1,248,22,90,248,22,148,16,2,56, -23,208,1,28,248,22,88,23,194,2,9,27,27,248,22,81,23,196,2,28,248, -22,132,16,23,194,2,248,22,135,16,23,194,1,28,248,22,131,16,23,194,2, -90,144,39,11,89,146,39,36,11,248,22,128,16,249,22,133,16,250,80,144,57, -40,39,248,22,148,16,2,57,11,11,248,22,148,16,2,58,86,95,23,195,1, -23,194,1,248,22,135,16,249,22,133,16,23,199,1,23,196,1,27,250,80,144, -52,40,39,248,22,148,16,2,57,23,197,1,10,28,23,193,2,248,22,135,16, -23,194,1,11,28,23,193,2,249,22,80,248,22,135,16,249,22,133,16,23,198, -1,247,22,149,16,27,248,22,82,23,198,1,28,248,22,88,23,194,2,9,27, -248,80,144,52,53,39,248,22,81,23,196,2,28,23,193,2,249,22,80,248,22, -135,16,249,22,133,16,23,198,1,247,22,149,16,248,80,144,54,8,53,39,248, -22,82,23,198,1,86,94,23,193,1,248,80,144,52,8,53,39,248,22,82,23, -196,1,86,94,23,193,1,27,248,22,82,23,196,1,28,248,22,88,23,194,2, -9,27,248,80,144,50,53,39,248,22,81,23,196,2,28,23,193,2,249,22,80, -248,22,135,16,249,22,133,16,23,198,1,247,22,149,16,248,80,144,52,8,53, -39,248,22,82,23,198,1,86,94,23,193,1,248,80,144,50,8,53,39,248,22, -82,23,196,1,28,193,249,22,80,195,194,192,27,20,13,144,80,144,37,43,37, -26,9,80,144,46,44,37,249,22,33,11,80,144,48,43,37,22,145,15,10,22, -152,15,10,22,153,15,10,22,154,15,10,248,22,147,6,23,196,2,28,248,22, -147,7,23,194,2,12,86,94,248,22,176,9,23,194,1,27,20,13,144,80,144, -38,43,37,26,9,80,144,47,44,37,249,22,33,11,80,144,49,43,37,22,145, -15,10,22,152,15,10,22,153,15,10,22,154,15,10,248,22,147,6,23,197,2, -28,248,22,147,7,23,194,2,12,86,94,248,22,176,9,23,194,1,27,20,13, +39,36,11,248,22,130,16,23,197,1,86,95,23,195,1,23,194,1,28,248,22, +173,15,23,194,2,28,248,22,186,15,23,194,2,249,22,146,6,23,195,1,32, +0,88,148,8,36,36,41,11,9,222,11,248,2,127,23,194,1,11,11,11,11, +11,28,248,22,185,15,23,195,2,27,28,249,22,190,8,248,22,181,8,2,63, +38,249,22,146,6,23,197,2,32,0,88,148,8,36,36,41,11,9,222,11,11, +86,94,28,23,194,2,248,22,148,6,23,195,1,86,94,23,194,1,12,249,22, +82,27,248,22,189,5,23,199,1,250,22,46,22,37,88,148,36,36,8,24,11, +9,223,3,33,131,2,20,20,94,88,148,36,36,43,11,9,223,3,33,132,2, +23,196,1,194,249,22,82,11,194,28,28,23,195,2,28,248,22,84,23,196,2, +248,22,168,9,249,22,174,14,36,248,22,159,20,23,199,2,11,11,194,86,94, +23,195,1,249,22,14,20,20,94,88,148,8,32,36,58,16,4,36,8,128,80, +8,240,0,64,0,0,36,9,224,2,3,33,133,2,23,196,1,80,144,38,8, +26,38,27,248,22,168,9,194,28,192,192,248,22,168,9,248,22,83,195,86,95, +28,248,22,149,12,23,198,2,27,247,22,141,12,28,249,22,131,12,23,195,2, +2,64,251,22,137,12,23,197,1,2,64,250,22,138,8,6,42,42,101,114,114, +111,114,32,114,101,97,100,105,110,103,32,99,111,108,108,101,99,116,105,111,110, +32,108,105,110,107,115,32,102,105,108,101,32,126,115,58,32,126,97,23,203,2, +248,22,145,12,23,206,2,247,22,29,12,12,28,23,193,2,250,22,158,2,80, +144,42,8,25,38,23,198,1,249,22,82,21,17,0,0,23,198,1,86,95,23, +195,1,23,193,1,12,28,248,22,149,12,23,198,2,86,94,23,197,1,248,23, +195,1,247,22,140,2,196,88,148,36,37,55,8,240,0,0,0,2,9,226,0, +2,1,3,33,136,2,20,20,94,248,22,149,6,23,194,2,28,248,22,149,7, +248,22,149,6,23,195,1,12,248,22,176,11,6,30,30,101,120,112,101,99,116, +101,100,32,97,32,115,105,110,103,108,101,32,83,45,101,120,112,114,101,115,115, +105,111,110,248,22,134,6,23,194,1,28,248,22,91,193,28,28,249,22,130,4, +38,248,22,95,195,10,249,22,130,4,39,248,22,95,195,28,28,248,22,154,7, +248,22,83,194,10,28,249,22,170,9,2,65,248,22,158,20,195,10,249,22,170, +9,2,66,248,22,158,20,195,28,27,248,22,104,194,28,248,22,173,15,193,10, +28,248,22,154,7,193,28,248,22,132,16,193,10,248,22,133,16,193,11,27,248, +22,90,248,22,106,195,28,192,192,248,22,178,16,248,22,113,195,11,11,11,11, +28,248,22,186,15,249,22,191,15,23,196,2,23,198,2,27,248,22,70,248,22, +177,15,23,198,1,250,22,158,2,23,198,2,23,196,2,249,22,82,23,199,1, +250,22,160,2,23,203,1,23,201,1,9,12,250,22,158,2,23,197,1,23,198, +1,249,22,82,23,198,1,23,201,1,28,28,248,22,90,248,22,106,23,197,2, +10,249,22,169,16,248,22,113,23,198,2,247,22,172,8,27,248,22,137,16,249, +22,135,16,248,22,104,23,200,2,23,198,1,28,249,22,170,9,248,22,83,23, +199,2,2,66,86,94,23,196,1,249,22,3,20,20,94,88,148,8,36,37,53, +11,9,224,3,2,33,141,2,23,196,1,248,22,140,16,23,196,1,28,249,22, +170,9,248,22,158,20,23,199,2,2,65,86,94,23,196,1,86,94,28,250,22, +160,2,23,197,2,11,11,12,250,22,158,2,23,197,2,11,9,249,22,166,2, +23,196,2,20,20,95,88,148,8,36,38,50,11,9,224,3,2,33,142,2,23, +195,1,23,196,1,27,248,22,70,248,22,158,20,23,199,1,250,22,158,2,23, +198,2,23,196,2,249,22,82,248,22,131,2,23,200,1,250,22,160,2,23,203, +1,23,201,1,9,12,250,22,158,2,23,196,1,23,197,1,248,22,97,23,199, +1,27,28,28,23,194,2,248,22,168,9,248,22,83,23,196,2,10,9,27,249, +22,189,5,23,198,2,66,98,105,110,97,114,121,250,22,46,22,37,88,148,8, +36,36,44,11,9,223,3,33,138,2,20,20,94,88,148,36,36,43,11,9,223, +3,33,139,2,23,196,1,86,94,28,28,248,22,91,23,194,2,249,22,4,32, +0,88,148,8,36,37,45,11,9,222,33,140,2,23,195,2,11,12,248,22,176, +11,6,18,18,105,108,108,45,102,111,114,109,101,100,32,99,111,110,116,101,110, +116,27,247,22,140,2,27,90,144,39,11,89,146,39,36,11,248,22,130,16,23, +201,2,192,86,96,249,22,3,20,20,94,88,148,8,36,37,54,11,9,224,2, +3,33,143,2,23,195,1,23,197,1,249,22,166,2,195,88,148,8,36,38,48, +11,9,223,3,33,144,2,250,22,158,2,80,144,44,8,25,38,23,200,1,249, +22,82,23,201,1,198,193,20,13,144,80,144,37,8,28,37,250,80,144,40,8, +47,39,23,198,2,23,196,2,11,27,250,22,160,2,80,144,41,8,25,38,23, +197,2,21,143,11,17,0,0,27,248,22,83,23,195,2,27,249,80,144,42,8, +27,39,23,198,2,23,196,2,28,249,22,172,9,23,195,2,23,196,1,248,22, +159,20,195,86,94,23,195,1,20,13,144,80,144,40,8,28,37,250,80,144,43, +8,47,39,23,201,1,23,199,2,23,196,2,27,20,20,95,88,148,8,36,36, +52,8,240,0,0,0,2,9,225,5,4,1,33,145,2,23,194,1,23,197,1, +28,249,22,50,23,195,2,36,20,13,144,80,144,41,43,37,26,29,80,144,8, +34,44,37,249,22,33,11,80,144,8,36,43,37,22,143,15,10,22,144,15,10, +22,145,15,10,22,148,15,10,22,147,15,11,22,149,15,10,22,146,15,10,22, +150,15,10,22,151,15,10,22,152,15,10,22,153,15,10,22,154,15,11,22,155, +15,10,22,141,15,11,247,23,193,1,250,22,180,11,2,8,2,53,23,196,1, +248,22,8,20,20,94,88,148,36,37,8,43,16,4,8,128,6,8,128,104,8, +240,0,128,0,0,36,9,224,1,2,33,146,2,23,195,1,0,7,35,114,120, +34,47,43,34,28,248,22,154,7,23,195,2,27,249,22,167,16,2,148,2,23, +197,2,28,23,193,2,28,249,22,130,4,248,22,103,23,196,2,248,22,184,3, +248,22,157,7,23,199,2,249,22,7,250,22,176,7,23,200,1,36,248,22,103, +23,199,1,23,198,1,249,22,7,250,22,176,7,23,200,2,36,248,22,103,23, +199,2,249,22,82,249,22,176,7,23,201,1,248,22,105,23,200,1,23,200,1, +249,22,7,23,197,1,23,198,1,90,144,39,11,89,146,39,36,11,248,22,130, +16,23,198,1,86,94,23,195,1,28,249,22,170,9,23,195,2,2,50,86,94, +23,193,1,249,22,7,23,196,1,23,200,1,27,249,22,82,23,197,1,23,201, +1,28,248,22,154,7,23,195,2,27,249,22,167,16,2,148,2,23,197,2,28, +23,193,2,28,249,22,130,4,248,22,103,23,196,2,248,22,184,3,248,22,157, +7,23,199,2,249,22,7,250,22,176,7,23,200,1,36,248,22,103,23,199,1, +23,196,1,249,22,7,250,22,176,7,23,200,2,36,248,22,103,23,199,2,249, +22,82,249,22,176,7,23,201,1,248,22,105,23,200,1,23,198,1,249,22,7, +23,197,1,23,196,1,90,144,39,11,89,146,39,36,11,248,22,130,16,23,198, +1,86,94,23,195,1,28,249,22,170,9,23,195,2,2,50,86,94,23,193,1, +249,22,7,23,196,1,23,198,1,249,80,144,45,8,31,39,194,249,22,82,197, +199,28,248,22,90,23,196,2,9,28,248,22,83,23,196,2,28,248,22,151,2, +248,22,158,20,23,197,2,250,22,96,249,22,2,22,131,2,250,22,160,2,248, +22,158,20,23,204,2,23,202,2,9,250,22,160,2,248,22,158,20,23,202,2, +11,9,27,248,22,159,20,23,200,1,28,248,22,90,23,194,2,9,28,248,22, +83,23,194,2,28,248,22,151,2,248,22,158,20,23,195,2,250,22,96,249,22, +2,22,131,2,250,22,160,2,248,22,158,20,23,202,2,23,206,2,9,250,22, +160,2,248,22,158,20,23,200,2,11,9,249,80,144,45,8,48,39,23,203,1, +248,22,159,20,23,199,1,27,248,80,144,42,8,30,39,248,22,158,20,23,196, +2,250,22,96,250,22,160,2,23,199,2,23,205,2,9,250,22,160,2,23,199, +1,11,9,249,80,144,46,8,48,39,23,204,1,248,22,159,20,23,200,1,249, +22,96,247,22,153,16,249,80,144,44,8,48,39,23,202,1,248,22,159,20,23, +198,1,27,248,80,144,38,8,30,39,248,22,158,20,23,198,2,250,22,96,250, +22,160,2,23,199,2,23,201,2,9,250,22,160,2,23,199,1,11,9,27,248, +22,159,20,23,201,1,28,248,22,90,23,194,2,9,28,248,22,83,23,194,2, +28,248,22,151,2,248,22,158,20,23,195,2,250,22,96,249,22,2,22,131,2, +250,22,160,2,248,22,158,20,23,202,2,23,207,2,9,250,22,160,2,248,22, +158,20,23,200,2,11,9,249,80,144,46,8,48,39,23,204,1,248,22,159,20, +23,199,1,27,248,80,144,43,8,30,39,248,22,158,20,23,196,2,250,22,96, +250,22,160,2,23,199,2,23,206,2,9,250,22,160,2,23,199,1,11,9,249, +80,144,47,8,48,39,23,205,1,248,22,159,20,23,200,1,249,22,96,247,22, +153,16,249,80,144,45,8,48,39,23,203,1,248,22,159,20,23,198,1,249,22, +96,247,22,153,16,27,248,22,159,20,23,199,1,28,248,22,90,23,194,2,9, +28,248,22,83,23,194,2,28,248,22,151,2,248,22,158,20,23,195,2,250,22, +96,249,22,2,22,131,2,250,22,160,2,248,22,158,20,23,202,2,23,205,2, +9,250,22,160,2,248,22,158,20,23,200,2,11,9,249,80,144,44,8,48,39, +23,202,1,248,22,159,20,23,199,1,27,248,80,144,41,8,30,39,248,22,158, +20,23,196,2,250,22,96,250,22,160,2,23,199,2,23,204,2,9,250,22,160, +2,23,199,1,11,9,249,80,144,45,8,48,39,23,203,1,248,22,159,20,23, +200,1,249,22,96,247,22,153,16,249,80,144,43,8,48,39,23,201,1,248,22, +159,20,23,198,1,32,151,2,88,148,8,36,37,47,11,2,51,222,33,152,2, +28,248,22,90,248,22,84,23,195,2,248,22,92,27,248,22,158,20,195,28,248, +22,173,15,193,248,22,177,15,193,192,250,22,93,27,248,22,158,20,23,198,2, +28,248,22,173,15,193,248,22,177,15,193,192,2,68,248,2,151,2,248,22,159, +20,23,198,1,250,22,138,8,6,7,7,10,32,126,97,32,126,97,6,1,1, +32,23,196,1,249,22,138,8,6,6,6,10,32,32,32,126,97,248,22,134,2, +23,196,1,32,155,2,88,148,36,38,48,11,66,102,105,108,116,101,114,222,33, +156,2,28,248,22,90,23,195,2,9,28,248,23,194,2,248,22,83,23,196,2, +249,22,82,248,22,158,20,23,197,2,249,2,155,2,23,197,1,248,22,159,20, +23,199,1,249,2,155,2,23,195,1,248,22,159,20,23,197,1,28,248,22,90, +23,201,2,86,95,23,200,1,23,199,1,28,23,201,2,28,197,249,22,191,15, +202,199,200,27,28,248,22,90,23,198,2,2,67,249,22,1,22,177,7,248,2, +151,2,23,200,2,248,23,199,1,251,22,138,8,6,70,70,99,111,108,108,101, +99,116,105,111,110,32,110,111,116,32,102,111,117,110,100,10,32,32,99,111,108, +108,101,99,116,105,111,110,58,32,126,115,10,32,32,105,110,32,99,111,108,108, +101,99,116,105,111,110,32,100,105,114,101,99,116,111,114,105,101,115,58,126,97, +126,97,28,248,22,90,23,203,1,28,248,22,173,15,23,202,2,248,22,177,15, +23,202,1,23,201,1,250,22,177,7,28,248,22,173,15,23,205,2,248,22,177, +15,23,205,1,23,204,1,2,68,23,201,2,249,22,1,22,177,7,249,22,2, +32,0,88,148,8,36,37,45,11,9,222,33,153,2,27,248,22,95,23,206,2, +27,248,22,95,247,22,153,16,28,249,22,131,4,249,22,186,3,23,198,2,23, +197,2,41,23,206,2,249,22,96,247,22,153,16,248,22,92,249,22,138,8,6, +50,50,46,46,46,32,91,126,97,32,97,100,100,105,116,105,111,110,97,108,32, +108,105,110,107,101,100,32,97,110,100,32,112,97,99,107,97,103,101,32,100,105, +114,101,99,116,111,114,105,101,115,93,249,22,186,3,23,201,1,23,200,1,28, +249,22,5,22,133,2,23,202,2,250,22,138,8,6,49,49,10,32,32,32,115, +117,98,45,99,111,108,108,101,99,116,105,111,110,58,32,126,115,10,32,32,105, +110,32,112,97,114,101,110,116,32,100,105,114,101,99,116,111,114,105,101,115,58, +126,97,23,201,1,249,22,1,22,177,7,249,22,2,32,0,88,148,8,36,37, +45,11,9,222,33,154,2,249,2,155,2,22,133,2,23,209,1,86,95,23,200, +1,23,198,1,2,67,27,248,22,83,23,202,2,27,28,248,22,173,15,23,195, +2,249,22,191,15,23,196,1,23,199,2,248,22,134,2,23,195,1,28,28,248, +22,173,15,248,22,158,20,23,204,2,248,22,186,15,23,194,2,10,27,250,22, +1,22,191,15,23,197,1,23,202,2,28,28,248,22,90,23,200,2,10,248,22, +186,15,23,194,2,28,23,201,2,28,28,250,80,144,42,8,32,39,195,203,204, +10,27,28,248,22,173,15,202,248,22,177,15,202,201,19,248,22,157,7,23,195, +2,27,28,249,22,134,4,23,196,4,40,28,249,22,160,7,6,4,4,46,114, +107,116,249,22,176,7,23,199,2,249,22,186,3,23,200,4,40,249,22,177,7, +250,22,176,7,23,200,1,36,249,22,186,3,23,201,4,40,6,3,3,46,115, +115,86,94,23,195,1,11,11,28,23,193,2,250,80,144,45,8,32,39,198,23, +196,1,23,15,11,2,28,200,249,22,191,15,194,202,192,26,8,80,144,47,8, +49,39,204,205,206,23,15,23,16,23,17,248,22,159,20,23,19,28,23,19,23, +19,200,28,200,249,22,191,15,194,202,192,26,8,80,144,47,8,49,39,204,205, +206,23,15,23,16,23,17,248,22,159,20,23,19,23,19,26,8,80,144,46,8, +49,39,203,204,205,206,23,15,23,16,248,22,159,20,23,18,23,18,90,144,38, +11,89,146,38,36,11,249,80,144,40,8,31,39,23,199,1,23,200,1,27,248, +22,70,28,248,22,173,15,195,248,22,177,15,195,194,27,27,247,22,154,16,28, +248,22,90,23,194,2,9,28,248,22,83,23,194,2,28,248,22,151,2,248,22, +158,20,23,195,2,250,22,96,249,22,2,22,131,2,250,22,160,2,248,22,158, +20,23,202,2,23,203,2,9,250,22,160,2,248,22,158,20,23,200,2,11,9, +249,80,144,46,8,48,39,23,200,1,248,22,159,20,23,199,1,27,248,80,144, +43,8,30,39,248,22,158,20,23,196,2,250,22,96,250,22,160,2,23,199,2, +23,202,2,9,250,22,160,2,23,199,1,11,9,249,80,144,47,8,48,39,23, +201,1,248,22,159,20,23,200,1,249,22,96,247,22,153,16,249,80,144,45,8, +48,39,23,199,1,248,22,159,20,23,198,1,26,8,80,144,48,8,49,39,200, +202,203,205,23,16,23,17,200,11,32,159,2,88,148,8,36,39,56,11,2,51, +222,33,160,2,28,248,22,135,4,23,196,2,86,94,23,195,1,19,248,22,148, +8,23,195,2,19,248,22,148,8,23,196,2,249,22,183,15,27,251,22,155,8, +250,22,154,8,23,205,2,36,23,204,4,2,52,249,22,154,8,23,204,1,23, +202,4,2,69,28,248,22,135,4,248,22,148,8,23,195,2,86,94,23,193,1, +251,22,182,11,2,38,2,70,2,71,202,192,28,248,22,174,15,198,248,22,175, +15,198,247,22,176,15,2,2,27,248,22,184,3,23,197,1,28,249,22,170,9, +8,46,249,22,149,8,23,198,2,23,197,2,27,248,22,183,3,23,195,2,249, +22,183,15,27,251,22,155,8,250,22,154,8,23,205,2,36,23,204,1,2,72, +249,22,154,8,23,204,1,23,202,1,2,69,28,248,22,135,4,248,22,148,8, +23,195,2,86,94,23,193,1,251,22,182,11,2,38,2,70,2,71,202,192,28, +248,22,174,15,198,248,22,175,15,198,247,22,176,15,250,2,159,2,196,197,195, +248,22,185,15,27,250,22,191,15,23,200,1,23,202,1,23,199,1,28,249,22, +170,9,23,197,2,64,115,97,109,101,192,28,248,22,132,16,23,196,2,249,22, +191,15,194,196,249,80,144,43,39,39,23,195,1,23,197,1,249,22,5,20,20, +96,88,148,36,37,51,44,9,226,5,4,2,6,33,161,2,23,199,1,23,195, +1,23,197,1,23,196,1,27,248,22,185,15,249,22,191,15,23,198,2,23,199, +2,28,23,193,2,192,86,94,23,193,1,28,23,197,1,27,90,144,38,11,89, +146,38,36,11,250,80,144,43,8,34,39,23,202,2,2,69,2,38,27,248,22, +179,15,23,196,1,27,250,2,159,2,23,197,2,23,204,1,248,22,148,8,23, +198,1,28,248,22,174,15,195,249,22,191,15,196,194,192,27,247,22,155,16,249, +22,5,20,20,96,88,148,36,37,48,44,9,226,5,6,2,3,33,162,2,23, +196,1,23,195,1,23,199,1,247,22,156,16,11,86,95,28,28,248,22,174,15, +23,194,2,10,28,248,22,173,15,23,194,2,10,28,248,22,154,7,23,194,2, +28,248,22,132,16,23,194,2,10,248,22,133,16,23,194,2,11,12,252,22,180, +11,23,200,2,2,43,36,23,198,2,23,199,2,28,28,248,22,154,7,23,195, +2,10,248,22,143,8,23,195,2,86,94,23,194,1,12,252,22,180,11,23,200, +2,2,73,37,23,198,2,23,199,1,90,144,39,11,89,146,39,36,11,248,22, +130,16,23,197,2,86,94,23,195,1,86,94,28,23,193,2,86,95,23,198,1, +23,196,1,12,250,22,183,11,23,201,1,2,74,23,199,1,249,22,7,23,195, +1,23,196,1,32,165,2,88,148,8,36,43,58,11,2,75,222,33,166,2,249, +22,183,15,27,251,22,155,8,250,22,154,8,23,203,2,36,23,207,1,23,205, +1,249,23,203,1,23,202,1,23,208,1,28,248,22,154,7,23,204,2,249,22, +169,8,23,205,1,8,63,23,203,1,28,248,22,135,4,248,22,148,8,23,195, +2,86,94,23,193,1,251,22,182,11,2,38,2,70,2,71,201,192,28,248,22, +174,15,197,248,22,175,15,197,247,22,176,15,32,167,2,88,148,8,36,42,8, +24,11,2,51,222,33,168,2,28,248,22,135,4,23,199,2,86,95,23,198,1, +23,194,1,19,248,22,148,8,23,195,2,19,248,22,148,8,23,196,2,249,22, +183,15,27,251,22,155,8,250,22,154,8,23,205,2,36,23,204,4,2,52,249, +23,206,1,23,204,1,23,202,4,28,248,22,154,7,23,207,2,249,22,169,8, +23,208,1,8,63,23,206,1,28,248,22,135,4,248,22,148,8,23,195,2,86, +94,23,193,1,251,22,182,11,2,38,2,70,2,71,204,192,28,248,22,174,15, +200,248,22,175,15,200,247,22,176,15,2,2,27,248,22,184,3,23,200,1,28, +249,22,170,9,8,46,249,22,149,8,23,198,2,23,197,2,27,248,22,183,3, +23,195,2,249,22,183,15,27,251,22,155,8,250,22,154,8,23,205,2,36,23, +204,1,23,203,1,249,23,206,1,23,204,1,23,202,1,28,248,22,154,7,23, +207,2,249,22,169,8,23,208,1,8,63,23,206,1,28,248,22,135,4,248,22, +148,8,23,195,2,86,94,23,193,1,251,22,182,11,2,38,2,70,2,71,204, +192,28,248,22,174,15,200,248,22,175,15,200,247,22,176,15,28,248,22,135,4, +23,194,2,86,95,23,195,1,23,193,1,19,248,22,148,8,23,196,2,19,248, +22,148,8,23,197,2,249,22,183,15,27,251,22,155,8,250,22,154,8,23,206, +2,36,23,204,4,2,52,249,23,207,1,23,205,1,23,202,4,28,248,22,154, +7,23,208,2,249,22,169,8,23,209,1,8,63,23,207,1,28,248,22,135,4, +248,22,148,8,23,195,2,86,94,23,193,1,251,22,182,11,2,38,2,70,2, +71,205,192,28,248,22,174,15,201,248,22,175,15,201,247,22,176,15,2,2,27, +248,22,184,3,23,195,1,28,249,22,170,9,8,46,249,22,149,8,23,199,2, +23,197,2,27,248,22,183,3,23,195,2,249,22,183,15,27,251,22,155,8,250, +22,154,8,23,206,2,36,23,204,1,23,204,1,249,23,207,1,23,205,1,23, +202,1,28,248,22,154,7,23,208,2,249,22,169,8,23,209,1,8,63,23,207, +1,28,248,22,135,4,248,22,148,8,23,195,2,86,94,23,193,1,251,22,182, +11,2,38,2,70,2,71,205,192,28,248,22,174,15,201,248,22,175,15,201,247, +22,176,15,28,248,22,135,4,193,254,2,165,2,201,203,204,205,248,22,148,8, +202,2,52,248,22,148,8,202,27,248,22,184,3,194,28,249,22,170,9,8,46, +249,22,149,8,199,196,254,2,165,2,202,204,205,206,199,203,248,22,183,3,200, +253,2,167,2,201,202,203,204,205,198,90,144,38,11,89,146,38,36,11,86,95, +28,28,248,22,174,15,23,199,2,10,28,248,22,173,15,23,199,2,10,28,248, +22,154,7,23,199,2,28,248,22,132,16,23,199,2,10,248,22,133,16,23,199, +2,11,12,252,22,180,11,23,200,2,2,43,36,23,203,2,23,204,2,28,28, +248,22,154,7,23,200,2,10,248,22,143,8,23,200,2,12,252,22,180,11,23, +200,2,2,73,37,23,203,2,23,204,2,90,144,39,11,89,146,39,36,11,248, +22,130,16,23,202,2,86,94,23,195,1,86,94,28,192,12,250,22,183,11,23, +201,1,2,74,23,204,2,249,22,7,194,195,27,248,22,179,15,23,196,1,27, +19,248,22,148,8,23,196,2,28,248,22,135,4,23,194,4,86,94,23,199,1, +19,248,22,148,8,23,197,2,19,248,22,148,8,23,198,2,249,22,183,15,27, +251,22,155,8,250,22,154,8,23,207,2,36,23,204,4,2,52,249,23,211,1, +23,206,1,23,202,4,28,248,22,154,7,23,212,2,249,22,169,8,23,213,1, +8,63,23,211,1,28,248,22,135,4,248,22,148,8,23,195,2,86,94,23,193, +1,251,22,182,11,2,38,2,70,2,71,23,17,192,28,248,22,174,15,205,248, +22,175,15,205,247,22,176,15,2,2,27,248,22,184,3,23,195,4,28,249,22, +170,9,8,46,249,22,149,8,23,200,2,23,197,2,27,248,22,183,3,23,195, +2,249,22,183,15,27,251,22,155,8,250,22,154,8,23,207,2,36,23,204,1, +23,208,1,249,23,211,1,23,206,1,23,202,1,28,248,22,154,7,23,212,2, +249,22,169,8,23,213,1,8,63,23,211,1,28,248,22,135,4,248,22,148,8, +23,195,2,86,94,23,193,1,251,22,182,11,2,38,2,70,2,71,23,17,192, +28,248,22,174,15,205,248,22,175,15,205,247,22,176,15,28,248,22,135,4,23, +194,2,86,95,23,200,1,23,193,1,254,2,165,2,23,203,2,23,208,1,23, +209,1,23,210,1,248,22,148,8,23,204,2,2,52,248,22,148,8,23,204,1, +27,248,22,184,3,23,195,1,28,249,22,170,9,8,46,249,22,149,8,23,201, +2,23,197,2,254,2,165,2,23,204,1,23,209,1,23,210,1,23,211,1,23, +200,2,23,208,1,248,22,183,3,23,201,1,253,2,167,2,23,203,1,23,207, +1,23,208,1,23,209,1,23,210,1,23,199,1,2,28,248,22,174,15,195,249, +22,191,15,196,194,192,32,170,2,88,148,8,36,40,58,11,2,51,222,33,171, +2,28,248,22,135,4,23,197,2,86,94,23,196,1,19,248,22,148,8,23,195, +2,35,248,22,148,8,23,196,2,249,22,183,15,27,251,22,155,8,250,22,154, +8,23,205,1,36,23,204,4,2,52,2,52,28,248,22,154,7,23,205,2,249, +22,169,8,23,206,1,8,63,23,204,1,28,248,22,135,4,248,22,148,8,23, +195,2,86,94,23,193,1,251,22,182,11,2,38,2,70,2,71,202,192,28,248, +22,174,15,198,248,22,175,15,198,247,22,176,15,2,27,248,22,184,3,23,198, +1,28,249,22,170,9,8,46,249,22,149,8,23,198,2,23,197,2,35,248,22, +183,3,23,195,2,249,22,183,15,27,251,22,155,8,250,22,154,8,23,205,1, +36,23,204,1,2,52,2,52,28,248,22,154,7,23,205,2,249,22,169,8,23, +206,1,8,63,23,204,1,28,248,22,135,4,248,22,148,8,23,195,2,86,94, +23,193,1,251,22,182,11,2,38,2,70,2,71,202,192,28,248,22,174,15,198, +248,22,175,15,198,247,22,176,15,28,248,22,135,4,23,194,2,86,94,23,193, +1,19,248,22,148,8,23,196,2,35,248,22,148,8,23,197,2,249,22,183,15, +27,251,22,155,8,250,22,154,8,23,206,1,36,23,204,4,2,52,2,52,28, +248,22,154,7,23,206,2,249,22,169,8,23,207,1,8,63,23,205,1,28,248, +22,135,4,248,22,148,8,23,195,2,86,94,23,193,1,251,22,182,11,2,38, +2,70,2,71,203,192,28,248,22,174,15,199,248,22,175,15,199,247,22,176,15, +2,27,248,22,184,3,23,195,1,28,249,22,170,9,8,46,249,22,149,8,23, +199,2,23,197,2,35,248,22,183,3,23,195,2,249,22,183,15,27,251,22,155, +8,250,22,154,8,23,206,1,36,23,204,1,2,52,2,52,28,248,22,154,7, +23,206,2,249,22,169,8,23,207,1,8,63,23,205,1,28,248,22,135,4,248, +22,148,8,23,195,2,86,94,23,193,1,251,22,182,11,2,38,2,70,2,71, +203,192,28,248,22,174,15,199,248,22,175,15,199,247,22,176,15,251,2,170,2, +198,199,200,196,90,144,38,11,89,146,38,36,11,86,95,28,28,248,22,174,15, +23,196,2,10,28,248,22,173,15,23,196,2,10,28,248,22,154,7,23,196,2, +28,248,22,132,16,23,196,2,10,248,22,133,16,23,196,2,11,12,252,22,180, +11,2,38,2,43,36,23,200,2,23,201,2,28,28,248,22,154,7,23,197,2, +10,248,22,143,8,23,197,2,12,252,22,180,11,2,38,2,73,37,23,200,2, +23,201,2,90,144,39,11,89,146,39,36,11,248,22,130,16,23,199,2,86,94, +23,195,1,86,94,28,192,12,250,22,183,11,2,38,2,74,23,201,2,249,22, +7,194,195,27,248,22,179,15,23,196,1,27,251,2,170,2,23,198,2,23,201, +1,23,202,1,248,22,148,8,23,199,1,28,248,22,174,15,195,249,22,191,15, +196,194,192,2,52,252,80,143,41,8,35,2,38,2,52,32,0,88,148,8,36, +38,43,11,9,222,33,173,2,198,199,32,175,2,88,148,8,36,40,57,11,2, +51,222,33,178,2,32,176,2,88,148,8,36,42,57,11,2,75,222,33,177,2, +249,22,183,15,27,251,22,155,8,250,22,154,8,23,203,2,36,23,206,1,23, +204,1,249,22,154,8,23,202,1,23,207,1,28,248,22,154,7,23,203,2,249, +22,169,8,23,204,1,8,63,23,202,1,28,248,22,135,4,248,22,148,8,23, +195,2,86,94,23,193,1,251,22,182,11,2,38,2,70,2,71,200,192,28,248, +22,174,15,196,248,22,175,15,196,247,22,176,15,28,248,22,135,4,23,197,2, +86,94,23,196,1,19,248,22,148,8,23,195,2,19,248,22,148,8,23,196,2, +249,22,183,15,27,251,22,155,8,250,22,154,8,23,205,2,36,23,204,4,2, +52,249,22,154,8,23,204,1,23,202,4,28,248,22,154,7,23,205,2,249,22, +169,8,23,206,1,8,63,23,204,1,28,248,22,135,4,248,22,148,8,23,195, +2,86,94,23,193,1,251,22,182,11,2,38,2,70,2,71,202,192,28,248,22, +174,15,198,248,22,175,15,198,247,22,176,15,2,2,27,248,22,184,3,23,198, +1,28,249,22,170,9,8,46,249,22,149,8,23,198,2,23,197,2,27,248,22, +183,3,23,195,2,249,22,183,15,27,251,22,155,8,250,22,154,8,23,205,2, +36,23,204,1,2,72,249,22,154,8,23,204,1,23,202,1,28,248,22,154,7, +23,205,2,249,22,169,8,23,206,1,8,63,23,204,1,28,248,22,135,4,248, +22,148,8,23,195,2,86,94,23,193,1,251,22,182,11,2,38,2,70,2,71, +202,192,28,248,22,174,15,198,248,22,175,15,198,247,22,176,15,28,248,22,135, +4,193,253,2,176,2,199,200,201,248,22,148,8,200,2,52,248,22,148,8,200, +27,248,22,184,3,194,28,249,22,170,9,8,46,249,22,149,8,198,196,253,2, +176,2,200,201,202,198,2,72,248,22,183,3,199,251,2,175,2,198,199,200,196, +90,144,38,11,89,146,38,36,11,86,95,28,28,248,22,174,15,23,196,2,10, +28,248,22,173,15,23,196,2,10,28,248,22,154,7,23,196,2,28,248,22,132, +16,23,196,2,10,248,22,133,16,23,196,2,11,12,252,22,180,11,2,38,2, +43,36,23,200,2,23,201,2,28,28,248,22,154,7,23,197,2,10,248,22,143, +8,23,197,2,12,252,22,180,11,2,38,2,73,37,23,200,2,23,201,2,90, +144,39,11,89,146,39,36,11,248,22,130,16,23,199,2,86,94,23,195,1,86, +94,28,192,12,250,22,183,11,2,38,2,74,23,201,2,249,22,7,194,195,27, +248,22,179,15,23,196,1,27,251,2,175,2,23,198,2,23,201,1,23,202,1, +248,22,148,8,23,199,1,28,248,22,174,15,195,249,22,191,15,196,194,192,252, +80,143,41,8,35,2,38,2,72,22,154,8,198,199,249,247,22,177,5,23,195, +1,11,249,247,22,177,5,194,11,28,248,22,90,23,195,2,9,27,27,248,22, +83,23,197,2,28,248,22,134,16,23,194,2,248,22,137,16,23,194,1,28,248, +22,133,16,23,194,2,90,144,39,11,89,146,39,36,11,248,22,130,16,249,22, +135,16,250,80,144,47,40,39,248,22,150,16,2,57,11,11,248,22,150,16,2, +58,86,95,23,195,1,23,194,1,248,22,137,16,249,22,135,16,23,199,1,23, +196,1,27,250,80,144,42,40,39,248,22,150,16,2,57,23,197,1,10,28,23, +193,2,248,22,137,16,23,194,1,11,28,23,193,2,249,22,82,248,22,137,16, +249,22,135,16,23,198,1,247,22,151,16,27,248,22,159,20,23,199,1,28,248, +22,90,23,194,2,9,27,248,80,144,42,53,39,248,22,83,23,196,2,28,23, +193,2,249,22,82,248,22,137,16,249,22,135,16,23,198,1,247,22,151,16,248, +80,144,44,8,50,39,248,22,159,20,23,198,1,86,94,23,193,1,248,80,144, +42,8,50,39,248,22,159,20,23,196,1,86,94,23,193,1,27,248,22,159,20, +23,197,1,28,248,22,90,23,194,2,9,27,248,80,144,40,53,39,248,22,83, +23,196,2,28,23,193,2,249,22,82,248,22,137,16,249,22,135,16,23,198,1, +247,22,151,16,248,80,144,42,8,50,39,248,22,159,20,23,198,1,86,94,23, +193,1,248,80,144,40,8,50,39,248,22,159,20,23,196,1,28,248,22,90,23, +195,2,9,27,27,248,22,83,23,197,2,28,248,22,134,16,23,194,2,248,22, +137,16,23,194,1,28,248,22,133,16,23,194,2,90,144,39,11,89,146,39,36, +11,248,22,130,16,249,22,135,16,250,80,144,47,40,39,248,22,150,16,2,57, +11,11,248,22,150,16,2,58,86,95,23,195,1,23,194,1,248,22,137,16,249, +22,135,16,23,199,1,23,196,1,27,250,80,144,42,40,39,248,22,150,16,2, +57,23,197,1,10,28,23,193,2,248,22,137,16,23,194,1,11,28,23,193,2, +249,22,82,248,22,137,16,249,22,135,16,23,198,1,247,22,151,16,27,248,22, +159,20,23,199,1,28,248,22,90,23,194,2,9,27,248,80,144,42,53,39,248, +22,83,23,196,2,28,23,193,2,249,22,82,248,22,137,16,249,22,135,16,23, +198,1,247,22,151,16,248,80,144,44,8,51,39,248,22,159,20,23,198,1,86, +94,23,193,1,248,80,144,42,8,51,39,248,22,159,20,23,196,1,86,94,23, +193,1,27,248,22,159,20,23,197,1,28,248,22,90,23,194,2,9,27,248,80, +144,40,53,39,248,22,83,23,196,2,28,23,193,2,249,22,82,248,22,137,16, +249,22,135,16,23,198,1,247,22,151,16,248,80,144,42,8,51,39,248,22,159, +20,23,198,1,86,94,23,193,1,248,80,144,40,8,51,39,248,22,159,20,23, +196,1,27,248,22,150,16,2,59,28,248,22,134,16,23,194,2,248,22,137,16, +23,194,1,28,248,22,133,16,23,194,2,90,144,39,11,89,146,39,36,11,248, +22,130,16,249,22,135,16,250,80,144,46,40,39,248,22,150,16,2,57,11,11, +248,22,150,16,2,58,86,95,23,195,1,23,194,1,248,22,137,16,249,22,135, +16,23,199,1,23,196,1,27,250,80,144,41,40,39,248,22,150,16,2,57,23, +197,1,10,28,23,193,2,248,22,137,16,23,194,1,11,28,248,22,90,23,195, +2,9,27,27,248,22,83,23,197,2,28,248,22,134,16,23,194,2,248,22,137, +16,23,194,1,28,248,22,133,16,23,194,2,90,144,39,11,89,146,39,36,11, +248,22,130,16,249,22,135,16,250,80,144,47,40,39,248,22,150,16,2,57,11, +11,248,22,150,16,2,58,86,95,23,195,1,23,194,1,248,22,137,16,249,22, +135,16,23,199,1,23,196,1,27,250,80,144,42,40,39,248,22,150,16,2,57, +23,197,1,10,28,23,193,2,248,22,137,16,23,194,1,11,28,23,193,2,249, +22,82,248,22,137,16,249,22,135,16,23,198,1,247,22,151,16,27,248,22,159, +20,23,199,1,28,248,22,90,23,194,2,9,27,27,248,22,83,23,196,2,28, +248,22,134,16,23,194,2,248,22,137,16,23,194,1,28,248,22,133,16,23,194, +2,90,144,39,11,89,146,39,36,11,248,22,130,16,249,22,135,16,250,80,144, +51,40,39,248,22,150,16,2,57,11,11,248,22,150,16,2,58,86,95,23,195, +1,23,194,1,248,22,137,16,249,22,135,16,23,199,1,23,196,1,27,250,80, +144,46,40,39,248,22,150,16,2,57,23,197,1,10,28,23,193,2,248,22,137, +16,23,194,1,11,28,23,193,2,249,22,82,248,22,137,16,249,22,135,16,23, +198,1,247,22,151,16,27,248,22,159,20,23,198,1,28,248,22,90,23,194,2, +9,27,248,80,144,46,53,39,248,22,83,23,196,2,28,23,193,2,249,22,82, +248,22,137,16,249,22,135,16,23,198,1,247,22,151,16,248,80,144,48,8,53, +39,248,22,159,20,23,198,1,86,94,23,193,1,248,80,144,46,8,53,39,248, +22,159,20,23,196,1,86,94,23,193,1,27,248,22,159,20,23,196,1,28,248, +22,90,23,194,2,9,27,248,80,144,44,53,39,248,22,83,23,196,2,28,23, +193,2,249,22,82,248,22,137,16,249,22,135,16,23,198,1,247,22,151,16,248, +80,144,46,8,53,39,248,22,159,20,23,198,1,86,94,23,193,1,248,80,144, +44,8,53,39,248,22,159,20,23,196,1,86,94,23,193,1,27,248,22,159,20, +23,197,1,28,248,22,90,23,194,2,9,27,27,248,22,83,23,196,2,28,248, +22,134,16,23,194,2,248,22,137,16,23,194,1,28,248,22,133,16,23,194,2, +90,144,39,11,89,146,39,36,11,248,22,130,16,249,22,135,16,250,80,144,49, +40,39,248,22,150,16,2,57,11,11,248,22,150,16,2,58,86,95,23,195,1, +23,194,1,248,22,137,16,249,22,135,16,23,199,1,23,196,1,27,250,80,144, +44,40,39,248,22,150,16,2,57,23,197,1,10,28,23,193,2,248,22,137,16, +23,194,1,11,28,23,193,2,249,22,82,248,22,137,16,249,22,135,16,23,198, +1,247,22,151,16,27,248,22,159,20,23,198,1,28,248,22,90,23,194,2,9, +27,248,80,144,44,53,39,248,22,83,23,196,2,28,23,193,2,249,22,82,248, +22,137,16,249,22,135,16,23,198,1,247,22,151,16,248,80,144,46,8,53,39, +248,22,159,20,23,198,1,86,94,23,193,1,248,80,144,44,8,53,39,248,22, +159,20,23,196,1,86,94,23,193,1,27,248,22,159,20,23,196,1,28,248,22, +90,23,194,2,9,27,248,80,144,42,53,39,248,22,83,23,196,2,28,23,193, +2,249,22,82,248,22,137,16,249,22,135,16,23,198,1,247,22,151,16,248,80, +144,44,8,53,39,248,22,159,20,23,198,1,86,94,23,193,1,248,80,144,42, +8,53,39,248,22,159,20,23,196,1,27,247,22,157,16,27,248,80,144,39,55, +39,247,80,144,39,54,39,249,80,144,40,41,38,28,23,196,2,27,249,22,176, +8,247,22,175,8,2,76,28,192,249,22,166,8,194,7,63,2,67,2,67,250, +80,144,43,59,39,23,198,2,2,77,27,28,23,200,1,250,22,191,15,248,22, +150,16,2,62,250,22,160,2,23,205,1,2,60,247,22,172,8,2,78,86,94, +23,199,1,11,27,248,80,144,46,8,50,39,250,22,96,9,248,22,92,248,22, +150,16,2,56,9,28,193,249,22,82,195,194,192,27,247,22,157,16,27,248,80, +144,39,55,39,247,80,144,39,54,39,249,80,144,40,41,38,28,23,196,2,27, +249,22,176,8,247,22,175,8,2,76,28,192,249,22,166,8,194,7,63,2,67, +2,67,250,80,144,43,59,39,23,198,2,2,77,27,28,23,200,1,250,22,191, +15,248,22,150,16,2,62,250,22,160,2,23,205,1,2,60,247,22,172,8,2, +78,86,94,23,199,1,11,27,248,80,144,46,8,51,39,250,22,96,23,207,1, +248,22,92,248,22,150,16,2,56,9,28,193,249,22,82,195,194,192,27,247,22, +157,16,27,248,80,144,39,55,39,249,80,144,41,52,37,37,80,144,41,8,52, +39,249,80,144,40,41,38,28,23,196,2,27,249,22,176,8,247,22,175,8,2, +76,28,192,249,22,166,8,194,7,63,2,67,2,67,250,80,144,43,59,39,23, +198,2,2,77,27,28,23,200,1,250,22,191,15,248,22,150,16,2,62,250,22, +160,2,23,205,1,2,60,247,22,172,8,2,78,86,94,23,199,1,11,27,27, +250,22,96,23,207,1,248,22,92,248,22,150,16,2,56,23,208,1,28,248,22, +90,23,194,2,9,27,27,248,22,83,23,196,2,28,248,22,134,16,23,194,2, +248,22,137,16,23,194,1,28,248,22,133,16,23,194,2,90,144,39,11,89,146, +39,36,11,248,22,130,16,249,22,135,16,250,80,144,57,40,39,248,22,150,16, +2,57,11,11,248,22,150,16,2,58,86,95,23,195,1,23,194,1,248,22,137, +16,249,22,135,16,23,199,1,23,196,1,27,250,80,144,52,40,39,248,22,150, +16,2,57,23,197,1,10,28,23,193,2,248,22,137,16,23,194,1,11,28,23, +193,2,249,22,82,248,22,137,16,249,22,135,16,23,198,1,247,22,151,16,27, +248,22,159,20,23,198,1,28,248,22,90,23,194,2,9,27,248,80,144,52,53, +39,248,22,83,23,196,2,28,23,193,2,249,22,82,248,22,137,16,249,22,135, +16,23,198,1,247,22,151,16,248,80,144,54,8,53,39,248,22,159,20,23,198, +1,86,94,23,193,1,248,80,144,52,8,53,39,248,22,159,20,23,196,1,86, +94,23,193,1,27,248,22,159,20,23,196,1,28,248,22,90,23,194,2,9,27, +248,80,144,50,53,39,248,22,83,23,196,2,28,23,193,2,249,22,82,248,22, +137,16,249,22,135,16,23,198,1,247,22,151,16,248,80,144,52,8,53,39,248, +22,159,20,23,198,1,86,94,23,193,1,248,80,144,50,8,53,39,248,22,159, +20,23,196,1,28,193,249,22,82,195,194,192,27,20,13,144,80,144,37,43,37, +26,9,80,144,46,44,37,249,22,33,11,80,144,48,43,37,22,147,15,10,22, +154,15,10,22,155,15,10,22,156,15,10,248,22,149,6,23,196,2,28,248,22, +149,7,23,194,2,12,86,94,248,22,178,9,23,194,1,27,20,13,144,80,144, +38,43,37,26,9,80,144,47,44,37,249,22,33,11,80,144,49,43,37,22,147, +15,10,22,154,15,10,22,155,15,10,22,156,15,10,248,22,149,6,23,197,2, +28,248,22,149,7,23,194,2,12,86,94,248,22,178,9,23,194,1,27,20,13, 144,80,144,39,43,37,26,9,80,144,48,44,37,249,22,33,11,80,144,50,43, -37,22,145,15,10,22,152,15,10,22,153,15,10,22,154,15,10,248,22,147,6, -23,198,2,28,248,22,147,7,23,194,2,12,86,94,248,22,176,9,23,194,1, -248,80,144,40,8,54,39,197,86,94,249,22,138,7,247,22,171,5,23,196,2, -248,22,162,6,249,22,136,4,36,249,22,184,3,28,23,198,2,23,198,1,86, -94,23,198,1,36,23,199,1,27,248,22,188,5,28,23,198,2,86,95,23,197, +37,22,147,15,10,22,154,15,10,22,155,15,10,22,156,15,10,248,22,149,6, +23,198,2,28,248,22,149,7,23,194,2,12,86,94,248,22,178,9,23,194,1, +248,80,144,40,8,54,39,197,86,94,249,22,140,7,247,22,173,5,23,196,2, +248,22,164,6,249,22,138,4,36,249,22,186,3,28,23,198,2,23,198,1,86, +94,23,198,1,36,23,199,1,27,248,22,190,5,28,23,198,2,86,95,23,197, 1,23,196,1,23,198,1,86,94,23,198,1,27,250,80,144,42,40,39,248,22, -148,16,2,57,11,11,27,248,22,139,4,23,199,1,27,28,23,194,2,23,194, -1,86,94,23,194,1,36,27,248,22,139,4,23,202,1,249,22,139,6,23,198, +150,16,2,57,11,11,27,248,22,141,4,23,199,1,27,28,23,194,2,23,194, +1,86,94,23,194,1,36,27,248,22,141,4,23,202,1,249,22,141,6,23,198, 1,20,20,95,88,148,8,36,36,48,11,9,224,3,2,33,191,2,23,195,1, 23,196,1,248,80,144,38,8,54,39,193,144,36,20,114,144,36,16,1,11,16, 0,20,26,15,53,9,2,1,2,1,29,11,11,11,11,9,9,11,11,11,10, @@ -964,14 +966,14 @@ 27,2,40,2,18,2,21,2,39,2,4,2,35,2,7,2,38,2,2,2,5, 53,53,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,51,20,15,16,2,32,0,88,148,8,36,37,45,11,2, -2,222,33,79,80,144,36,36,37,20,15,16,2,249,22,154,7,7,92,7,92, +2,222,33,79,80,144,36,36,37,20,15,16,2,249,22,156,7,7,92,7,92, 80,144,36,37,37,20,15,16,2,88,148,8,36,37,54,38,2,4,223,0,33, 84,80,144,36,38,37,20,15,16,2,88,148,8,36,38,58,38,2,5,223,0, 33,86,80,144,36,39,37,20,15,16,2,20,25,96,2,6,88,148,8,36,39, 8,24,8,32,9,223,0,33,93,88,148,8,36,38,47,52,9,223,0,33,94, 88,148,8,36,37,46,52,9,223,0,33,95,80,144,36,40,37,20,15,16,2, -27,248,22,159,16,248,22,166,8,27,28,249,22,168,9,247,22,179,8,2,44, -6,1,1,59,6,1,1,58,250,22,136,8,6,14,14,40,91,94,126,97,93, +27,248,22,161,16,248,22,168,8,27,28,249,22,170,9,247,22,181,8,2,44, +6,1,1,59,6,1,1,58,250,22,138,8,6,14,14,40,91,94,126,97,93, 42,41,126,97,40,46,42,41,23,196,2,23,196,1,88,148,8,36,38,48,11, 2,7,223,0,33,99,80,144,36,41,37,20,15,16,2,88,148,36,37,8,38, 8,128,6,2,8,223,0,33,100,80,144,36,42,37,20,15,16,2,32,0,88, @@ -1000,7 +1002,7 @@ 15,16,2,88,148,36,36,53,52,9,223,0,33,123,80,144,36,8,45,39,20, 15,16,2,88,148,8,36,36,54,16,4,8,240,0,128,0,0,8,137,2,8, 128,128,36,2,27,223,0,33,124,80,144,36,8,24,37,20,15,16,2,247,22, -140,2,80,144,36,8,25,37,20,15,16,2,248,22,18,65,115,116,97,109,112, +142,2,80,144,36,8,25,37,20,15,16,2,248,22,18,65,115,116,97,109,112, 80,144,36,8,26,37,20,15,16,2,88,148,36,37,46,8,240,0,0,0,4, 9,223,0,33,126,80,144,36,8,46,39,20,15,16,2,88,148,36,38,48,16, 4,36,8,128,80,8,240,0,64,0,0,36,2,30,223,0,33,134,2,80,144, @@ -1040,10 +1042,10 @@ 80,144,36,8,39,37,95,29,94,2,9,68,35,37,107,101,114,110,101,108,11, 29,94,2,9,69,35,37,109,105,110,45,115,116,120,11,2,19,9,9,9,36, 9,0}; - EVAL_ONE_SIZED_STR((char *)expr, 19720); + EVAL_ONE_SIZED_STR((char *)expr, 19762); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,54,46,49,46,49,46,52,84,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,54,46,49,46,49,46,53,84,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,14,0,0,0,1,0,0,15,0,40,0, 57,0,75,0,97,0,120,0,140,0,162,0,171,0,180,0,187,0,196,0,203, 0,0,0,231,1,0,0,74,35,37,112,108,97,99,101,45,115,116,114,117,99, @@ -1062,8 +1064,8 @@ 36,16,2,2,5,2,6,38,11,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,3,20,15,16,6,253,22,186,10,2,3,11,38,36,11, -248,22,90,249,22,80,22,173,10,88,148,36,37,45,44,9,223,9,33,9,80, +0,16,0,36,36,16,3,20,15,16,6,253,22,188,10,2,3,11,38,36,11, +248,22,92,249,22,82,22,175,10,88,148,36,37,45,44,9,223,9,33,9,80, 144,36,36,37,80,144,36,37,37,80,144,36,38,37,80,144,36,39,37,80,144, 36,40,37,20,15,16,2,20,27,143,88,148,36,37,45,44,9,223,0,33,10, 88,148,36,37,45,44,9,223,0,33,11,80,144,36,41,37,20,15,16,2,20, @@ -1073,7 +1075,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 557); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,54,46,49,46,49,46,52,84,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,54,46,49,46,49,46,53,84,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,102,0,0,0,1,0,0,7,0,18,0, 45,0,51,0,60,0,67,0,89,0,102,0,128,0,145,0,167,0,175,0,187, 0,202,0,218,0,236,0,0,1,12,1,28,1,51,1,75,1,87,1,118,1, @@ -1109,381 +1111,381 @@ 105,98,6,12,12,109,111,100,117,108,101,45,112,97,116,104,63,66,115,117,98, 109,111,100,6,2,2,46,46,6,1,1,46,64,102,105,108,101,66,112,108,97, 110,101,116,6,8,8,109,97,105,110,46,114,107,116,6,4,4,46,114,107,116, -67,105,103,110,111,114,101,100,27,252,22,189,15,28,249,22,168,9,23,201,2, -2,29,86,94,23,199,1,23,201,1,28,248,22,130,16,23,200,2,249,22,189, +67,105,103,110,111,114,101,100,27,252,22,191,15,28,249,22,170,9,23,201,2, +2,29,86,94,23,199,1,23,201,1,28,248,22,132,16,23,200,2,249,22,191, 15,23,203,1,23,201,1,249,80,144,47,42,39,23,203,1,23,201,1,23,203, -1,2,30,247,22,180,8,249,80,144,47,43,39,23,202,1,80,144,47,36,38, -27,250,22,143,16,196,11,32,0,88,148,8,36,36,41,11,9,222,11,28,192, -249,22,80,195,194,11,249,22,5,20,20,96,88,148,8,36,37,54,8,129,3, +1,2,30,247,22,182,8,249,80,144,47,43,39,23,202,1,80,144,47,36,38, +27,250,22,145,16,196,11,32,0,88,148,8,36,36,41,11,9,222,11,28,192, +249,22,82,195,194,11,249,22,5,20,20,96,88,148,8,36,37,54,8,129,3, 9,226,5,3,2,6,33,44,23,199,1,23,195,1,23,196,1,23,197,1,27, -252,22,189,15,28,249,22,168,9,23,201,2,2,29,86,94,23,199,1,23,201, -1,28,248,22,130,16,23,200,2,249,22,189,15,23,203,1,23,201,1,249,80, -144,47,42,39,23,203,1,23,201,1,23,203,1,2,30,247,22,180,8,249,80, -144,47,43,39,23,202,1,80,144,47,36,38,27,250,22,143,16,196,11,32,0, -88,148,8,36,36,41,11,9,222,11,28,192,249,22,80,195,194,11,249,22,5, +252,22,191,15,28,249,22,170,9,23,201,2,2,29,86,94,23,199,1,23,201, +1,28,248,22,132,16,23,200,2,249,22,191,15,23,203,1,23,201,1,249,80, +144,47,42,39,23,203,1,23,201,1,23,203,1,2,30,247,22,182,8,249,80, +144,47,43,39,23,202,1,80,144,47,36,38,27,250,22,145,16,196,11,32,0, +88,148,8,36,36,41,11,9,222,11,28,192,249,22,82,195,194,11,249,22,5, 20,20,96,88,148,8,36,37,54,8,129,3,9,226,5,3,2,6,33,46,23, -199,1,23,195,1,23,196,1,23,197,1,27,250,22,189,15,28,249,22,168,9, -23,199,2,2,29,86,94,23,197,1,23,199,1,28,248,22,130,16,23,198,2, -249,22,189,15,23,201,1,23,199,1,249,80,144,45,42,39,23,201,1,23,199, -1,23,201,1,249,80,144,45,43,39,23,200,1,2,31,27,250,22,143,16,196, -11,32,0,88,148,8,36,36,41,11,9,222,11,28,192,249,22,80,195,194,11, +199,1,23,195,1,23,196,1,23,197,1,27,250,22,191,15,28,249,22,170,9, +23,199,2,2,29,86,94,23,197,1,23,199,1,28,248,22,132,16,23,198,2, +249,22,191,15,23,201,1,23,199,1,249,80,144,45,42,39,23,201,1,23,199, +1,23,201,1,249,80,144,45,43,39,23,200,1,2,31,27,250,22,145,16,196, +11,32,0,88,148,8,36,36,41,11,9,222,11,28,192,249,22,82,195,194,11, 249,22,5,20,20,96,88,148,8,36,37,52,8,128,3,9,226,5,3,2,6, -33,48,23,199,1,23,195,1,23,196,1,23,197,1,27,250,22,189,15,28,249, -22,168,9,23,199,2,2,29,86,94,23,197,1,23,199,1,28,248,22,130,16, -23,198,2,249,22,189,15,23,201,1,23,199,1,249,80,144,45,42,39,23,201, +33,48,23,199,1,23,195,1,23,196,1,23,197,1,27,250,22,191,15,28,249, +22,170,9,23,199,2,2,29,86,94,23,197,1,23,199,1,28,248,22,132,16, +23,198,2,249,22,191,15,23,201,1,23,199,1,249,80,144,45,42,39,23,201, 1,23,199,1,23,201,1,249,80,144,45,43,39,23,200,1,2,31,27,250,22, -143,16,196,11,32,0,88,148,8,36,36,41,11,9,222,11,28,192,249,22,80, +145,16,196,11,32,0,88,148,8,36,36,41,11,9,222,11,28,192,249,22,82, 195,194,11,249,22,5,20,20,96,88,148,8,36,37,52,8,128,3,9,226,5, 3,2,6,33,50,23,199,1,23,195,1,23,196,1,23,197,1,86,95,28,248, -80,144,37,40,39,23,195,2,12,250,22,178,11,2,27,6,12,12,112,97,116, -104,45,115,116,114,105,110,103,63,23,197,2,28,28,23,195,2,28,248,22,64, -23,196,2,10,28,248,22,89,23,196,2,28,249,22,130,4,248,22,93,23,198, -2,37,28,28,248,22,64,248,22,81,23,197,2,10,248,22,166,9,248,22,156, -20,23,197,2,249,22,4,22,64,248,22,157,20,23,198,2,11,11,11,10,12, -250,22,178,11,2,27,6,71,71,40,111,114,47,99,32,35,102,32,115,121,109, +80,144,37,40,39,23,195,2,12,250,22,180,11,2,27,6,12,12,112,97,116, +104,45,115,116,114,105,110,103,63,23,197,2,28,28,23,195,2,28,248,22,66, +23,196,2,10,28,248,22,91,23,196,2,28,249,22,132,4,248,22,95,23,198, +2,37,28,28,248,22,66,248,22,83,23,197,2,10,248,22,168,9,248,22,158, +20,23,197,2,249,22,4,22,66,248,22,159,20,23,198,2,11,11,11,10,12, +250,22,180,11,2,27,6,71,71,40,111,114,47,99,32,35,102,32,115,121,109, 98,111,108,63,32,40,99,111,110,115,47,99,32,40,111,114,47,99,32,35,102, 32,115,121,109,98,111,108,63,41,32,40,110,111,110,45,101,109,112,116,121,45, 108,105,115,116,111,102,32,115,121,109,98,111,108,63,41,41,41,23,197,2,27, -28,23,196,2,247,22,190,4,11,27,28,23,194,2,250,22,158,2,80,143,41, -41,248,22,188,16,247,22,141,14,11,11,27,28,23,194,2,250,22,158,2,248, -22,82,23,198,2,23,198,2,11,11,28,23,193,2,86,96,23,197,1,23,195, +28,23,196,2,247,22,128,5,11,27,28,23,194,2,250,22,160,2,80,143,41, +41,248,22,190,16,247,22,143,14,11,11,27,28,23,194,2,250,22,160,2,248, +22,84,23,198,2,23,198,2,11,11,28,23,193,2,86,96,23,197,1,23,195, 1,23,194,1,20,13,144,80,144,39,38,37,250,80,144,42,39,37,249,22,33, -11,80,144,44,38,37,22,191,4,248,22,102,23,197,2,27,248,22,111,23,195, +11,80,144,44,38,37,22,129,5,248,22,104,23,197,2,27,248,22,113,23,195, 2,20,13,144,80,144,40,38,37,250,80,144,43,39,37,249,22,33,11,80,144, -45,38,37,22,176,5,28,248,22,171,15,23,197,2,23,196,1,86,94,23,196, -1,247,22,149,16,249,247,22,174,5,248,22,81,23,197,1,23,201,1,86,94, -23,193,1,90,144,47,11,89,146,37,36,11,28,248,22,132,16,23,209,2,23, -208,2,27,247,22,176,5,28,192,249,22,133,16,23,211,2,194,23,209,2,89, -146,39,37,11,248,22,128,16,23,209,1,86,94,23,196,1,89,146,38,40,11, -28,23,209,2,27,248,22,176,15,23,197,2,19,248,22,146,8,194,28,28,249, -22,132,4,23,195,4,40,249,22,149,8,2,28,249,22,152,8,197,249,22,184, -3,23,199,4,40,11,249,22,7,23,199,2,248,22,180,15,249,22,153,8,250, -22,152,8,201,36,249,22,184,3,23,203,4,40,5,3,46,115,115,249,22,7, -23,199,2,11,2,249,22,7,23,197,2,11,89,146,37,42,11,28,249,22,168, -9,23,199,2,23,197,2,23,193,2,249,22,189,15,23,196,2,23,199,2,89, -146,37,43,11,28,23,198,2,28,249,22,168,9,23,200,2,23,197,1,23,193, -1,86,94,23,193,1,249,22,189,15,23,196,2,23,200,2,86,94,23,195,1, -11,89,146,37,44,11,28,249,22,168,9,23,196,2,68,114,101,108,97,116,105, -118,101,86,94,23,194,1,2,29,23,194,1,89,146,37,45,11,247,22,153,16, -89,146,37,46,11,247,22,154,16,27,250,22,143,16,23,203,2,11,32,0,88, -148,8,36,36,41,11,9,222,11,27,28,23,194,2,249,22,80,23,203,2,23, +45,38,37,22,178,5,28,248,22,173,15,23,197,2,23,196,1,86,94,23,196, +1,247,22,151,16,249,247,22,176,5,248,22,83,23,197,1,23,201,1,86,94, +23,193,1,90,144,47,11,89,146,37,36,11,28,248,22,134,16,23,209,2,23, +208,2,27,247,22,178,5,28,192,249,22,135,16,23,211,2,194,23,209,2,89, +146,39,37,11,248,22,130,16,23,209,1,86,94,23,196,1,89,146,38,40,11, +28,23,209,2,27,248,22,178,15,23,197,2,19,248,22,148,8,194,28,28,249, +22,134,4,23,195,4,40,249,22,151,8,2,28,249,22,154,8,197,249,22,186, +3,23,199,4,40,11,249,22,7,23,199,2,248,22,182,15,249,22,155,8,250, +22,154,8,201,36,249,22,186,3,23,203,4,40,5,3,46,115,115,249,22,7, +23,199,2,11,2,249,22,7,23,197,2,11,89,146,37,42,11,28,249,22,170, +9,23,199,2,23,197,2,23,193,2,249,22,191,15,23,196,2,23,199,2,89, +146,37,43,11,28,23,198,2,28,249,22,170,9,23,200,2,23,197,1,23,193, +1,86,94,23,193,1,249,22,191,15,23,196,2,23,200,2,86,94,23,195,1, +11,89,146,37,44,11,28,249,22,170,9,23,196,2,68,114,101,108,97,116,105, +118,101,86,94,23,194,1,2,29,23,194,1,89,146,37,45,11,247,22,155,16, +89,146,37,46,11,247,22,156,16,27,250,22,145,16,23,203,2,11,32,0,88, +148,8,36,36,41,11,9,222,11,27,28,23,194,2,249,22,82,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, -143,16,23,207,2,11,32,0,88,148,8,36,36,41,11,9,222,11,28,192,249, -22,80,23,206,2,194,11,11,27,28,23,195,2,23,195,2,23,194,2,27,28, -23,196,2,23,196,2,248,22,166,9,23,196,2,27,28,23,204,2,28,23,196, -2,86,94,23,197,1,23,196,2,248,22,166,9,23,198,1,11,27,28,23,195, +145,16,23,207,2,11,32,0,88,148,8,36,36,41,11,9,222,11,28,192,249, +22,82,23,206,2,194,11,11,27,28,23,195,2,23,195,2,23,194,2,27,28, +23,196,2,23,196,2,248,22,168,9,23,196,2,27,28,23,204,2,28,23,196, +2,86,94,23,197,1,23,196,2,248,22,168,9,23,198,1,11,27,28,23,195, 2,27,249,22,5,88,148,36,37,48,8,129,3,9,226,24,19,18,14,33,45, 23,213,2,27,28,23,198,2,11,193,28,192,192,28,193,28,23,198,2,28,249, -22,132,4,248,22,82,196,248,22,82,23,201,2,193,11,11,11,11,28,23,193, +22,134,4,248,22,84,196,248,22,84,23,201,2,193,11,11,11,11,28,23,193, 2,86,105,23,213,1,23,212,1,23,210,1,23,209,1,23,207,1,23,206,1, 23,205,1,23,204,1,23,197,1,23,196,1,23,195,1,23,194,1,20,13,144, 80,144,57,38,37,250,80,144,8,24,39,37,249,22,33,11,80,144,8,26,38, -37,22,191,4,11,20,13,144,80,144,57,38,37,250,80,144,8,24,39,37,249, -22,33,11,80,144,8,26,38,37,22,176,5,28,248,22,171,15,23,212,2,23, -211,1,86,94,23,211,1,247,22,149,16,249,247,22,158,16,248,22,81,23,196, +37,22,129,5,11,20,13,144,80,144,57,38,37,250,80,144,8,24,39,37,249, +22,33,11,80,144,8,26,38,37,22,178,5,28,248,22,173,15,23,212,2,23, +211,1,86,94,23,211,1,247,22,151,16,249,247,22,160,16,248,22,83,23,196, 1,23,218,1,86,94,23,193,1,27,28,23,195,2,27,249,22,5,88,148,36, 37,48,8,129,3,9,226,25,20,19,16,33,47,23,214,2,27,28,23,200,2, -11,193,28,192,192,28,193,28,199,28,249,22,132,4,248,22,82,196,248,22,82, +11,193,28,192,192,28,193,28,199,28,249,22,134,4,248,22,84,196,248,22,84, 202,193,11,11,11,11,28,23,193,2,86,103,23,214,1,23,213,1,23,211,1, 23,210,1,23,207,1,23,206,1,23,205,1,23,197,1,23,196,1,23,195,1, 20,13,144,80,144,58,38,37,250,80,144,8,25,39,37,249,22,33,11,80,144, -8,27,38,37,22,191,4,23,211,1,20,13,144,80,144,58,38,37,250,80,144, -8,25,39,37,249,22,33,11,80,144,8,27,38,37,22,176,5,28,248,22,171, -15,23,213,2,23,212,1,86,94,23,212,1,247,22,149,16,249,247,22,158,16, -248,22,81,23,196,1,23,219,1,86,94,23,193,1,27,28,23,197,2,27,249, +8,27,38,37,22,129,5,23,211,1,20,13,144,80,144,58,38,37,250,80,144, +8,25,39,37,249,22,33,11,80,144,8,27,38,37,22,178,5,28,248,22,173, +15,23,213,2,23,212,1,86,94,23,212,1,247,22,151,16,249,247,22,160,16, +248,22,83,23,196,1,23,219,1,86,94,23,193,1,27,28,23,197,2,27,249, 22,5,20,20,94,88,148,36,37,48,8,128,3,9,226,26,21,20,16,33,49, 23,209,1,23,215,2,27,28,23,200,2,11,193,28,192,192,28,193,28,23,200, -2,28,249,22,132,4,248,22,82,196,248,22,82,23,203,2,193,11,11,11,86, +2,28,249,22,134,4,248,22,84,196,248,22,84,23,203,2,193,11,11,11,86, 94,23,206,1,11,28,23,193,2,86,101,23,212,1,23,211,1,23,209,1,23, -208,1,23,207,1,23,198,1,23,197,1,23,196,1,86,94,27,248,22,81,23, -195,2,28,23,215,2,250,22,156,2,248,22,82,23,219,1,23,219,1,250,22, -90,23,199,1,11,23,217,2,12,20,13,144,80,144,59,38,37,250,80,144,8, -26,39,37,249,22,33,11,80,144,8,28,38,37,22,191,4,11,20,13,144,80, +208,1,23,207,1,23,198,1,23,197,1,23,196,1,86,94,27,248,22,83,23, +195,2,28,23,215,2,250,22,158,2,248,22,84,23,219,1,23,219,1,250,22, +92,23,199,1,11,23,217,2,12,20,13,144,80,144,59,38,37,250,80,144,8, +26,39,37,249,22,33,11,80,144,8,28,38,37,22,129,5,11,20,13,144,80, 144,59,38,37,250,80,144,8,26,39,37,249,22,33,11,80,144,8,28,38,37, -22,176,5,28,248,22,171,15,23,214,2,23,213,1,86,94,23,213,1,247,22, -149,16,249,247,22,174,5,248,22,156,20,23,196,1,23,220,1,86,94,23,193, +22,178,5,28,248,22,173,15,23,214,2,23,213,1,86,94,23,213,1,247,22, +151,16,249,247,22,176,5,248,22,158,20,23,196,1,23,220,1,86,94,23,193, 1,27,28,23,197,1,27,249,22,5,20,20,95,88,148,36,37,48,8,128,3, 9,226,27,22,21,18,33,51,23,211,1,23,215,1,23,216,1,27,28,23,201, -2,11,193,28,192,192,28,193,28,200,28,249,22,132,4,248,22,82,196,248,22, -82,203,193,11,11,11,86,96,23,213,1,23,212,1,23,208,1,11,28,23,193, -2,86,95,23,209,1,23,198,1,86,94,27,248,22,81,23,195,2,28,23,216, -2,250,22,156,2,248,22,82,23,220,1,23,220,1,250,22,90,23,199,1,23, +2,11,193,28,192,192,28,193,28,200,28,249,22,134,4,248,22,84,196,248,22, +84,203,193,11,11,11,86,96,23,213,1,23,212,1,23,208,1,11,28,23,193, +2,86,95,23,209,1,23,198,1,86,94,27,248,22,83,23,195,2,28,23,216, +2,250,22,158,2,248,22,84,23,220,1,23,220,1,250,22,92,23,199,1,23, 217,2,23,218,2,12,20,13,144,80,144,8,24,38,37,250,80,144,8,27,39, -37,249,22,33,11,80,144,8,29,38,37,22,191,4,23,213,1,20,13,144,80, +37,249,22,33,11,80,144,8,29,38,37,22,129,5,23,213,1,20,13,144,80, 144,8,24,38,37,250,80,144,8,27,39,37,249,22,33,11,80,144,8,29,38, -37,22,176,5,28,248,22,171,15,23,215,2,23,214,1,86,94,23,214,1,247, -22,149,16,249,247,22,174,5,248,22,156,20,23,196,1,23,221,1,86,94,23, -193,1,28,28,248,22,78,23,220,2,248,22,156,20,23,220,2,10,27,28,23, +37,22,178,5,28,248,22,173,15,23,215,2,23,214,1,86,94,23,214,1,247, +22,151,16,249,247,22,176,5,248,22,158,20,23,196,1,23,221,1,86,94,23, +193,1,28,28,248,22,80,23,220,2,248,22,158,20,23,220,2,10,27,28,23, 199,2,86,94,23,211,1,23,210,1,86,94,23,210,1,23,211,1,28,28,248, -22,78,23,221,2,248,22,166,9,248,22,183,15,23,195,2,11,12,20,13,144, +22,80,23,221,2,248,22,168,9,248,22,185,15,23,195,2,11,12,20,13,144, 80,144,8,25,38,37,250,80,144,8,28,39,37,249,22,33,11,80,144,8,30, -38,37,22,191,4,28,23,223,2,28,23,202,1,11,23,196,2,86,94,23,202, +38,37,22,129,5,28,23,223,2,28,23,202,1,11,23,196,2,86,94,23,202, 1,11,20,13,144,80,144,8,25,38,37,250,80,144,8,28,39,37,249,22,33, -11,80,144,8,30,38,37,22,176,5,28,248,22,171,15,23,216,2,23,215,1, -86,94,23,215,1,247,22,149,16,249,247,22,174,5,23,195,1,23,222,1,12, -28,23,194,2,250,22,156,2,248,22,82,23,198,1,23,196,1,250,22,90,23, -201,1,23,202,1,23,203,1,12,27,249,22,188,8,80,144,39,47,38,249,22, -191,3,248,22,187,3,248,22,173,2,200,8,128,8,27,28,193,248,22,176,2, -194,11,28,192,27,249,22,100,198,195,28,192,248,22,82,193,11,11,27,249,22, -191,3,248,22,187,3,248,22,173,2,23,199,2,8,128,8,27,249,22,188,8, -80,144,40,47,38,23,196,2,250,22,189,8,80,144,41,47,38,23,197,1,248, -22,175,2,249,22,80,249,22,80,23,204,1,23,205,1,27,28,23,200,2,248, -22,176,2,200,11,28,192,192,9,32,56,88,149,8,38,39,51,11,2,32,36, +11,80,144,8,30,38,37,22,178,5,28,248,22,173,15,23,216,2,23,215,1, +86,94,23,215,1,247,22,151,16,249,247,22,176,5,23,195,1,23,222,1,12, +28,23,194,2,250,22,158,2,248,22,84,23,198,1,23,196,1,250,22,92,23, +201,1,23,202,1,23,203,1,12,27,249,22,190,8,80,144,39,47,38,249,22, +129,4,248,22,189,3,248,22,175,2,200,8,128,8,27,28,193,248,22,178,2, +194,11,28,192,27,249,22,102,198,195,28,192,248,22,84,193,11,11,27,249,22, +129,4,248,22,189,3,248,22,175,2,23,199,2,8,128,8,27,249,22,190,8, +80,144,40,47,38,23,196,2,250,22,191,8,80,144,41,47,38,23,197,1,248, +22,177,2,249,22,82,249,22,82,23,204,1,23,205,1,27,28,23,200,2,248, +22,178,2,200,11,28,192,192,9,32,56,88,149,8,38,39,51,11,2,32,36, 223,3,33,71,32,57,88,149,8,38,39,50,11,2,32,36,223,3,33,70,32, 58,88,148,8,36,37,50,11,2,33,222,33,69,32,59,88,149,8,38,39,50, -11,2,32,36,223,3,33,60,28,249,22,128,4,23,197,2,23,195,4,248,22, -90,194,28,249,22,135,9,7,47,249,22,156,7,23,198,2,23,199,2,249,22, -80,250,22,174,7,23,199,2,36,23,200,2,248,2,58,249,22,174,7,23,199, -1,248,22,181,3,23,201,1,250,2,59,23,196,4,196,248,22,181,3,198,32, +11,2,32,36,223,3,33,60,28,249,22,130,4,23,197,2,23,195,4,248,22, +92,194,28,249,22,137,9,7,47,249,22,158,7,23,198,2,23,199,2,249,22, +82,250,22,176,7,23,199,2,36,23,200,2,248,2,58,249,22,176,7,23,199, +1,248,22,183,3,23,201,1,250,2,59,23,196,4,196,248,22,183,3,198,32, 61,88,149,8,38,39,52,11,2,32,36,223,3,33,68,32,62,88,149,8,38, 39,51,11,2,32,36,223,3,33,65,32,63,88,149,8,38,39,50,11,2,32, -36,223,3,33,64,28,249,22,128,4,23,197,2,23,195,4,248,22,90,194,28, -249,22,135,9,7,47,249,22,156,7,23,198,2,23,199,2,249,22,80,250,22, -174,7,23,199,2,36,23,200,2,248,2,58,249,22,174,7,23,199,1,248,22, -181,3,23,201,1,250,2,63,23,196,4,196,248,22,181,3,198,28,249,22,128, -4,23,197,2,23,195,4,248,22,90,194,28,249,22,135,9,7,47,249,22,156, -7,23,198,2,23,199,2,249,22,80,250,22,174,7,23,199,2,36,23,200,2, -27,249,22,174,7,23,199,1,248,22,181,3,23,201,1,19,248,22,155,7,23, -195,2,250,2,63,23,196,4,23,197,1,36,2,27,248,22,181,3,23,197,1, -28,249,22,128,4,23,195,2,23,196,4,248,22,90,195,28,249,22,135,9,7, -47,249,22,156,7,23,199,2,23,197,2,249,22,80,250,22,174,7,23,200,2, -36,23,198,2,248,2,58,249,22,174,7,23,200,1,248,22,181,3,23,199,1, -250,2,62,23,197,4,197,248,22,181,3,196,32,66,88,149,8,38,39,50,11, -2,32,36,223,3,33,67,28,249,22,128,4,23,197,2,23,195,4,248,22,90, -194,28,249,22,135,9,7,47,249,22,156,7,23,198,2,23,199,2,249,22,80, -250,22,174,7,23,199,2,36,23,200,2,248,2,58,249,22,174,7,23,199,1, -248,22,181,3,23,201,1,250,2,66,23,196,4,196,248,22,181,3,198,28,249, -22,128,4,23,197,2,23,195,4,248,22,90,194,28,249,22,135,9,7,47,249, -22,156,7,23,198,2,23,199,2,249,22,80,250,22,174,7,23,199,2,36,23, -200,2,27,249,22,174,7,23,199,1,248,22,181,3,23,201,1,19,248,22,155, -7,23,195,2,250,2,62,23,196,4,23,197,1,36,2,27,248,22,181,3,23, -197,1,28,249,22,128,4,23,195,2,23,196,4,248,22,90,195,28,249,22,135, -9,7,47,249,22,156,7,23,199,2,23,197,2,249,22,80,250,22,174,7,23, -200,2,36,23,198,2,27,249,22,174,7,23,200,1,248,22,181,3,23,199,1, -19,248,22,155,7,23,195,2,250,2,66,23,196,4,23,197,1,36,2,27,248, -22,181,3,23,195,1,28,249,22,128,4,23,195,2,23,197,4,248,22,90,196, -28,249,22,135,9,7,47,249,22,156,7,23,200,2,23,197,2,249,22,80,250, -22,174,7,23,201,2,36,23,198,2,248,2,58,249,22,174,7,23,201,1,248, -22,181,3,23,199,1,250,2,61,23,198,4,198,248,22,181,3,196,19,248,22, -155,7,23,195,2,28,249,22,128,4,36,23,195,4,248,22,90,194,28,249,22, -135,9,7,47,249,22,156,7,23,198,2,36,249,22,80,250,22,174,7,23,199, -2,36,36,27,249,22,174,7,23,199,1,37,19,248,22,155,7,23,195,2,250, -2,59,23,196,4,23,197,1,36,2,28,249,22,128,4,37,23,195,4,248,22, -90,194,28,249,22,135,9,7,47,249,22,156,7,23,198,2,37,249,22,80,250, -22,174,7,23,199,2,36,37,248,2,58,249,22,174,7,23,199,1,38,250,2, -61,23,196,4,196,38,2,28,249,22,128,4,23,197,2,23,195,4,248,22,90, -194,28,249,22,135,9,7,47,249,22,156,7,23,198,2,23,199,2,249,22,80, -250,22,174,7,23,199,2,36,23,200,2,248,2,58,249,22,174,7,23,199,1, -248,22,181,3,23,201,1,250,2,57,23,196,4,196,248,22,181,3,198,28,249, -22,128,4,23,197,2,23,195,4,248,22,90,194,28,249,22,135,9,7,47,249, -22,156,7,23,198,2,23,199,2,249,22,80,250,22,174,7,23,199,2,36,23, -200,2,27,249,22,174,7,23,199,1,248,22,181,3,23,201,1,19,248,22,155, -7,23,195,2,250,2,57,23,196,4,23,197,1,36,2,27,248,22,181,3,23, -197,1,28,249,22,128,4,23,195,2,23,196,4,248,22,90,195,28,249,22,135, -9,7,47,249,22,156,7,23,199,2,23,197,2,249,22,80,250,22,174,7,23, -200,2,36,23,198,2,248,2,58,249,22,174,7,23,200,1,248,22,181,3,23, -199,1,250,2,56,23,197,4,197,248,22,181,3,196,32,72,88,148,36,37,55, -11,2,33,222,33,73,28,248,22,88,248,22,82,23,195,2,249,22,7,9,248, -22,156,20,23,196,1,90,144,38,11,89,146,38,36,11,27,248,22,157,20,23, -197,2,28,248,22,88,248,22,82,23,195,2,249,22,7,9,248,22,156,20,195, -90,144,38,11,89,146,38,36,11,27,248,22,157,20,196,28,248,22,88,248,22, -82,23,195,2,249,22,7,9,248,22,156,20,195,90,144,38,11,89,146,38,36, -11,248,2,72,248,22,157,20,196,249,22,7,249,22,80,248,22,156,20,199,196, -195,249,22,7,249,22,80,248,22,156,20,199,196,195,249,22,7,249,22,80,248, -22,156,20,23,200,1,23,197,1,23,196,1,27,19,248,22,155,7,23,196,2, -250,2,56,23,196,4,23,198,1,36,2,28,23,195,1,192,28,248,22,88,248, -22,82,23,195,2,249,22,7,9,248,22,156,20,23,196,1,27,248,22,157,20, -23,195,2,90,144,38,11,89,146,38,36,11,28,248,22,88,248,22,82,23,197, -2,249,22,7,9,248,22,156,20,23,198,1,27,248,22,157,20,23,197,2,90, -144,38,11,89,146,38,36,11,28,248,22,88,248,22,82,23,197,2,249,22,7, -9,248,22,156,20,197,90,144,38,11,89,146,38,36,11,248,2,72,248,22,157, -20,198,249,22,7,249,22,80,248,22,156,20,201,196,195,249,22,7,249,22,80, -248,22,156,20,23,203,1,196,195,249,22,7,249,22,80,248,22,156,20,23,201, -1,23,197,1,23,196,1,248,22,140,12,252,22,160,10,248,22,163,4,23,200, -2,248,22,159,4,23,200,2,248,22,160,4,23,200,2,248,22,161,4,23,200, -2,248,22,162,4,23,200,1,28,24,194,2,12,20,13,144,80,144,36,58,37, -80,143,36,56,89,146,37,37,10,249,22,129,5,21,94,2,34,6,19,19,112, +36,223,3,33,64,28,249,22,130,4,23,197,2,23,195,4,248,22,92,194,28, +249,22,137,9,7,47,249,22,158,7,23,198,2,23,199,2,249,22,82,250,22, +176,7,23,199,2,36,23,200,2,248,2,58,249,22,176,7,23,199,1,248,22, +183,3,23,201,1,250,2,63,23,196,4,196,248,22,183,3,198,28,249,22,130, +4,23,197,2,23,195,4,248,22,92,194,28,249,22,137,9,7,47,249,22,158, +7,23,198,2,23,199,2,249,22,82,250,22,176,7,23,199,2,36,23,200,2, +27,249,22,176,7,23,199,1,248,22,183,3,23,201,1,19,248,22,157,7,23, +195,2,250,2,63,23,196,4,23,197,1,36,2,27,248,22,183,3,23,197,1, +28,249,22,130,4,23,195,2,23,196,4,248,22,92,195,28,249,22,137,9,7, +47,249,22,158,7,23,199,2,23,197,2,249,22,82,250,22,176,7,23,200,2, +36,23,198,2,248,2,58,249,22,176,7,23,200,1,248,22,183,3,23,199,1, +250,2,62,23,197,4,197,248,22,183,3,196,32,66,88,149,8,38,39,50,11, +2,32,36,223,3,33,67,28,249,22,130,4,23,197,2,23,195,4,248,22,92, +194,28,249,22,137,9,7,47,249,22,158,7,23,198,2,23,199,2,249,22,82, +250,22,176,7,23,199,2,36,23,200,2,248,2,58,249,22,176,7,23,199,1, +248,22,183,3,23,201,1,250,2,66,23,196,4,196,248,22,183,3,198,28,249, +22,130,4,23,197,2,23,195,4,248,22,92,194,28,249,22,137,9,7,47,249, +22,158,7,23,198,2,23,199,2,249,22,82,250,22,176,7,23,199,2,36,23, +200,2,27,249,22,176,7,23,199,1,248,22,183,3,23,201,1,19,248,22,157, +7,23,195,2,250,2,62,23,196,4,23,197,1,36,2,27,248,22,183,3,23, +197,1,28,249,22,130,4,23,195,2,23,196,4,248,22,92,195,28,249,22,137, +9,7,47,249,22,158,7,23,199,2,23,197,2,249,22,82,250,22,176,7,23, +200,2,36,23,198,2,27,249,22,176,7,23,200,1,248,22,183,3,23,199,1, +19,248,22,157,7,23,195,2,250,2,66,23,196,4,23,197,1,36,2,27,248, +22,183,3,23,195,1,28,249,22,130,4,23,195,2,23,197,4,248,22,92,196, +28,249,22,137,9,7,47,249,22,158,7,23,200,2,23,197,2,249,22,82,250, +22,176,7,23,201,2,36,23,198,2,248,2,58,249,22,176,7,23,201,1,248, +22,183,3,23,199,1,250,2,61,23,198,4,198,248,22,183,3,196,19,248,22, +157,7,23,195,2,28,249,22,130,4,36,23,195,4,248,22,92,194,28,249,22, +137,9,7,47,249,22,158,7,23,198,2,36,249,22,82,250,22,176,7,23,199, +2,36,36,27,249,22,176,7,23,199,1,37,19,248,22,157,7,23,195,2,250, +2,59,23,196,4,23,197,1,36,2,28,249,22,130,4,37,23,195,4,248,22, +92,194,28,249,22,137,9,7,47,249,22,158,7,23,198,2,37,249,22,82,250, +22,176,7,23,199,2,36,37,248,2,58,249,22,176,7,23,199,1,38,250,2, +61,23,196,4,196,38,2,28,249,22,130,4,23,197,2,23,195,4,248,22,92, +194,28,249,22,137,9,7,47,249,22,158,7,23,198,2,23,199,2,249,22,82, +250,22,176,7,23,199,2,36,23,200,2,248,2,58,249,22,176,7,23,199,1, +248,22,183,3,23,201,1,250,2,57,23,196,4,196,248,22,183,3,198,28,249, +22,130,4,23,197,2,23,195,4,248,22,92,194,28,249,22,137,9,7,47,249, +22,158,7,23,198,2,23,199,2,249,22,82,250,22,176,7,23,199,2,36,23, +200,2,27,249,22,176,7,23,199,1,248,22,183,3,23,201,1,19,248,22,157, +7,23,195,2,250,2,57,23,196,4,23,197,1,36,2,27,248,22,183,3,23, +197,1,28,249,22,130,4,23,195,2,23,196,4,248,22,92,195,28,249,22,137, +9,7,47,249,22,158,7,23,199,2,23,197,2,249,22,82,250,22,176,7,23, +200,2,36,23,198,2,248,2,58,249,22,176,7,23,200,1,248,22,183,3,23, +199,1,250,2,56,23,197,4,197,248,22,183,3,196,32,72,88,148,36,37,55, +11,2,33,222,33,73,28,248,22,90,248,22,84,23,195,2,249,22,7,9,248, +22,158,20,23,196,1,90,144,38,11,89,146,38,36,11,27,248,22,159,20,23, +197,2,28,248,22,90,248,22,84,23,195,2,249,22,7,9,248,22,158,20,195, +90,144,38,11,89,146,38,36,11,27,248,22,159,20,196,28,248,22,90,248,22, +84,23,195,2,249,22,7,9,248,22,158,20,195,90,144,38,11,89,146,38,36, +11,248,2,72,248,22,159,20,196,249,22,7,249,22,82,248,22,158,20,199,196, +195,249,22,7,249,22,82,248,22,158,20,199,196,195,249,22,7,249,22,82,248, +22,158,20,23,200,1,23,197,1,23,196,1,27,19,248,22,157,7,23,196,2, +250,2,56,23,196,4,23,198,1,36,2,28,23,195,1,192,28,248,22,90,248, +22,84,23,195,2,249,22,7,9,248,22,158,20,23,196,1,27,248,22,159,20, +23,195,2,90,144,38,11,89,146,38,36,11,28,248,22,90,248,22,84,23,197, +2,249,22,7,9,248,22,158,20,23,198,1,27,248,22,159,20,23,197,2,90, +144,38,11,89,146,38,36,11,28,248,22,90,248,22,84,23,197,2,249,22,7, +9,248,22,158,20,197,90,144,38,11,89,146,38,36,11,248,2,72,248,22,159, +20,198,249,22,7,249,22,82,248,22,158,20,201,196,195,249,22,7,249,22,82, +248,22,158,20,23,203,1,196,195,249,22,7,249,22,82,248,22,158,20,23,201, +1,23,197,1,23,196,1,248,22,142,12,252,22,162,10,248,22,165,4,23,200, +2,248,22,161,4,23,200,2,248,22,162,4,23,200,2,248,22,163,4,23,200, +2,248,22,164,4,23,200,1,28,24,194,2,12,20,13,144,80,144,36,58,37, +80,143,36,56,89,146,37,37,10,249,22,131,5,21,94,2,34,6,19,19,112, 108,97,110,101,116,47,114,101,115,111,108,118,101,114,46,114,107,116,1,27,112, 108,97,110,101,116,45,109,111,100,117,108,101,45,110,97,109,101,45,114,101,115, -111,108,118,101,114,12,27,28,23,195,2,28,249,22,168,9,23,197,2,80,143, -39,52,86,94,23,195,1,80,143,37,53,27,248,22,152,5,23,197,2,27,28, -248,22,78,23,195,2,248,22,156,20,23,195,1,23,194,1,28,248,22,171,15, -23,194,2,90,144,39,11,89,146,39,36,11,248,22,128,16,23,197,1,86,95, +111,108,118,101,114,12,27,28,23,195,2,28,249,22,170,9,23,197,2,80,143, +39,52,86,94,23,195,1,80,143,37,53,27,248,22,154,5,23,197,2,27,28, +248,22,80,23,195,2,248,22,158,20,23,195,1,23,194,1,28,248,22,173,15, +23,194,2,90,144,39,11,89,146,39,36,11,248,22,130,16,23,197,1,86,95, 20,18,144,11,80,143,42,52,199,20,18,144,11,80,143,42,53,192,192,11,11, -28,23,193,2,192,86,94,23,193,1,27,247,22,176,5,28,23,193,2,192,86, -94,23,193,1,247,22,149,16,90,144,39,11,89,146,39,36,11,248,22,128,16, -23,198,2,86,95,23,195,1,23,193,1,28,249,22,163,16,0,11,35,114,120, -34,91,46,93,115,115,36,34,248,22,176,15,23,197,1,249,80,144,41,59,39, +28,23,193,2,192,86,94,23,193,1,27,247,22,178,5,28,23,193,2,192,86, +94,23,193,1,247,22,151,16,90,144,39,11,89,146,39,36,11,248,22,130,16, +23,198,2,86,95,23,195,1,23,193,1,28,249,22,165,16,0,11,35,114,120, +34,91,46,93,115,115,36,34,248,22,178,15,23,197,1,249,80,144,41,59,39, 23,199,1,2,28,196,249,80,144,38,54,39,195,10,249,22,14,23,196,1,80, -144,38,51,38,86,96,28,248,22,150,5,23,196,2,12,250,22,178,11,2,23, +144,38,51,38,86,96,28,248,22,152,5,23,196,2,12,250,22,180,11,2,23, 6,21,21,114,101,115,111,108,118,101,100,45,109,111,100,117,108,101,45,112,97, -116,104,63,23,198,2,28,28,23,196,2,248,22,142,14,23,197,2,10,12,250, -22,178,11,2,23,6,20,20,40,111,114,47,99,32,35,102,32,110,97,109,101, +116,104,63,23,198,2,28,28,23,196,2,248,22,144,14,23,197,2,10,12,250, +22,180,11,2,23,6,20,20,40,111,114,47,99,32,35,102,32,110,97,109,101, 115,112,97,99,101,63,41,23,199,2,28,24,193,2,248,24,194,1,23,196,2, -86,94,23,193,1,12,27,250,22,158,2,80,144,41,41,38,248,22,188,16,247, -22,141,14,11,27,28,23,194,2,23,194,1,86,94,23,194,1,27,249,22,80, -247,22,138,2,247,22,138,2,86,94,250,22,156,2,80,144,43,41,38,248,22, -188,16,247,22,141,14,195,192,86,94,250,22,156,2,248,22,81,23,197,2,23, -200,2,68,100,101,99,108,97,114,101,100,28,23,198,2,27,28,248,22,78,248, -22,152,5,23,200,2,248,22,151,5,248,22,81,248,22,152,5,23,201,1,23, -198,1,27,250,22,158,2,80,144,44,41,38,248,22,188,16,23,204,1,11,28, -23,193,2,27,250,22,158,2,248,22,82,23,198,1,23,198,2,11,28,23,193, -2,250,22,156,2,248,22,157,20,23,200,1,23,198,1,23,196,1,12,12,12, -86,94,251,22,135,12,247,22,139,12,65,101,114,114,111,114,6,69,69,100,101, +86,94,23,193,1,12,27,250,22,160,2,80,144,41,41,38,248,22,190,16,247, +22,143,14,11,27,28,23,194,2,23,194,1,86,94,23,194,1,27,249,22,82, +247,22,140,2,247,22,140,2,86,94,250,22,158,2,80,144,43,41,38,248,22, +190,16,247,22,143,14,195,192,86,94,250,22,158,2,248,22,83,23,197,2,23, +200,2,68,100,101,99,108,97,114,101,100,28,23,198,2,27,28,248,22,80,248, +22,154,5,23,200,2,248,22,153,5,248,22,83,248,22,154,5,23,201,1,23, +198,1,27,250,22,160,2,80,144,44,41,38,248,22,190,16,23,204,1,11,28, +23,193,2,27,250,22,160,2,248,22,84,23,198,1,23,198,2,11,28,23,193, +2,250,22,158,2,248,22,159,20,23,200,1,23,198,1,23,196,1,12,12,12, +86,94,251,22,137,12,247,22,141,12,65,101,114,114,111,114,6,69,69,100,101, 102,97,117,108,116,32,109,111,100,117,108,101,32,110,97,109,101,32,114,101,115, 111,108,118,101,114,32,99,97,108,108,101,100,32,119,105,116,104,32,116,104,114, 101,101,32,97,114,103,117,109,101,110,116,115,32,40,100,101,112,114,101,99,97, 116,101,100,41,11,251,24,197,1,23,198,1,23,199,1,23,200,1,10,32,83, 88,148,36,38,47,11,76,102,108,97,116,116,101,110,45,115,117,98,45,112,97, 116,104,222,33,86,32,84,88,148,36,40,54,11,2,33,222,33,85,28,248,22, -88,23,197,2,28,248,22,88,195,192,249,22,80,194,248,22,95,197,28,249,22, -170,9,248,22,81,23,199,2,2,37,28,248,22,88,23,196,2,86,95,23,196, -1,23,195,1,250,22,174,11,2,23,6,37,37,116,111,111,32,109,97,110,121, +90,23,197,2,28,248,22,90,195,192,249,22,82,194,248,22,97,197,28,249,22, +172,9,248,22,83,23,199,2,2,37,28,248,22,90,23,196,2,86,95,23,196, +1,23,195,1,250,22,176,11,2,23,6,37,37,116,111,111,32,109,97,110,121, 32,34,46,46,34,115,32,105,110,32,115,117,98,109,111,100,117,108,101,32,112, -97,116,104,58,32,126,46,115,250,22,91,2,36,28,249,22,170,9,23,201,2, -2,38,23,199,1,28,248,22,171,15,23,200,2,23,199,1,249,22,90,28,248, -22,64,23,202,2,2,4,2,39,23,201,1,23,200,1,251,2,84,196,197,248, -22,82,199,248,22,157,20,200,251,2,84,196,197,249,22,80,248,22,156,20,202, -200,248,22,157,20,200,251,2,84,196,197,9,197,27,250,22,175,7,27,28,23, -199,2,28,247,22,191,11,248,80,144,44,55,39,23,200,2,11,11,28,192,192, +97,116,104,58,32,126,46,115,250,22,93,2,36,28,249,22,172,9,23,201,2, +2,38,23,199,1,28,248,22,173,15,23,200,2,23,199,1,249,22,92,28,248, +22,66,23,202,2,2,4,2,39,23,201,1,23,200,1,251,2,84,196,197,248, +22,84,199,248,22,159,20,200,251,2,84,196,197,249,22,82,248,22,158,20,202, +200,248,22,159,20,200,251,2,84,196,197,9,197,27,250,22,177,7,27,28,23, +199,2,28,247,22,129,12,248,80,144,44,55,39,23,200,2,11,11,28,192,192, 6,29,29,115,116,97,110,100,97,114,100,45,109,111,100,117,108,101,45,110,97, -109,101,45,114,101,115,111,108,118,101,114,6,2,2,58,32,250,22,174,16,0, -7,35,114,120,34,92,110,34,23,203,1,249,22,136,8,6,23,23,10,32,32, +109,101,45,114,101,115,111,108,118,101,114,6,2,2,58,32,250,22,176,16,0, +7,35,114,120,34,92,110,34,23,203,1,249,22,138,8,6,23,23,10,32,32, 102,111,114,32,109,111,100,117,108,101,32,112,97,116,104,58,32,126,115,10,23, -202,2,248,22,170,13,28,23,196,2,251,22,178,12,23,198,1,247,22,29,248, -22,90,23,201,1,23,199,1,86,94,23,196,1,250,22,141,13,23,197,1,247, +202,2,248,22,172,13,28,23,196,2,251,22,180,12,23,198,1,247,22,29,248, +22,92,23,201,1,23,199,1,86,94,23,196,1,250,22,143,13,23,197,1,247, 22,29,23,198,1,32,88,88,148,8,36,37,50,11,67,115,115,45,62,114,107, -116,222,33,89,19,248,22,155,7,194,28,249,22,132,4,23,195,4,39,28,249, -22,168,9,7,46,249,22,156,7,197,249,22,184,3,23,199,4,39,28,28,249, -22,168,9,7,115,249,22,156,7,197,249,22,184,3,23,199,4,38,249,22,168, -9,7,115,249,22,156,7,197,249,22,184,3,23,199,4,37,11,249,22,175,7, -250,22,174,7,198,36,249,22,184,3,23,200,4,39,2,42,193,193,193,2,28, -249,22,158,7,194,2,38,2,29,28,249,22,158,7,194,2,37,62,117,112,192, +116,222,33,89,19,248,22,157,7,194,28,249,22,134,4,23,195,4,39,28,249, +22,170,9,7,46,249,22,158,7,197,249,22,186,3,23,199,4,39,28,28,249, +22,170,9,7,115,249,22,158,7,197,249,22,186,3,23,199,4,38,249,22,170, +9,7,115,249,22,158,7,197,249,22,186,3,23,199,4,37,11,249,22,177,7, +250,22,176,7,198,36,249,22,186,3,23,200,4,39,2,42,193,193,193,2,28, +249,22,160,7,194,2,38,2,29,28,249,22,160,7,194,2,37,62,117,112,192, 0,8,35,114,120,34,91,46,93,34,32,92,88,148,8,36,37,47,11,2,33, -222,33,93,28,248,22,88,23,194,2,9,250,22,91,6,4,4,10,32,32,32, -248,22,175,15,248,22,103,23,198,2,248,2,92,248,22,82,23,198,1,28,249, -22,170,9,248,22,82,23,200,2,23,197,1,28,249,22,168,9,248,22,156,20, -23,200,1,23,196,1,251,22,174,11,2,23,6,41,41,99,121,99,108,101,32, +222,33,93,28,248,22,90,23,194,2,9,250,22,93,6,4,4,10,32,32,32, +248,22,177,15,248,22,105,23,198,2,248,2,92,248,22,84,23,198,1,28,249, +22,172,9,248,22,84,23,200,2,23,197,1,28,249,22,170,9,248,22,158,20, +23,200,1,23,196,1,251,22,176,11,2,23,6,41,41,99,121,99,108,101,32, 105,110,32,108,111,97,100,105,110,103,10,32,32,97,116,32,112,97,116,104,58, 32,126,97,10,32,32,112,97,116,104,115,58,126,97,23,200,1,249,22,1,22, -175,7,248,2,92,248,22,95,23,201,1,12,12,247,23,193,1,250,22,157,4, -11,196,195,20,13,144,80,144,46,50,38,249,22,80,249,22,80,23,198,1,23, +177,7,248,2,92,248,22,97,23,201,1,12,12,247,23,193,1,250,22,159,4, +11,196,195,20,13,144,80,144,46,50,38,249,22,82,249,22,82,23,198,1,23, 202,1,23,195,1,20,13,144,80,144,46,38,37,252,80,144,51,39,37,249,22, -33,11,80,144,53,38,37,22,190,4,23,201,2,22,128,5,248,28,23,208,2, +33,11,80,144,53,38,37,22,128,5,23,201,2,22,130,5,248,28,23,208,2, 20,20,94,88,148,8,36,37,46,11,9,223,15,33,96,23,208,1,86,94,23, -208,1,22,7,28,248,22,64,23,207,2,23,206,1,28,28,248,22,78,23,207, -2,249,22,168,9,248,22,156,20,23,209,2,2,34,11,23,206,1,86,94,23, -206,1,28,248,22,150,5,23,203,2,27,248,22,152,5,23,204,2,28,248,22, -64,193,249,22,90,2,4,194,192,23,202,2,249,247,22,175,5,23,201,1,27, -248,22,68,248,22,175,15,23,202,1,28,23,204,2,28,250,22,158,2,248,22, -156,20,23,202,1,23,202,1,11,249,22,80,11,205,249,22,80,194,205,192,86, -96,28,248,22,160,5,23,196,2,12,28,248,22,155,4,23,198,2,250,22,176, +208,1,22,7,28,248,22,66,23,207,2,23,206,1,28,28,248,22,80,23,207, +2,249,22,170,9,248,22,158,20,23,209,2,2,34,11,23,206,1,86,94,23, +206,1,28,248,22,152,5,23,203,2,27,248,22,154,5,23,204,2,28,248,22, +66,193,249,22,92,2,4,194,192,23,202,2,249,247,22,177,5,23,201,1,27, +248,22,70,248,22,177,15,23,202,1,28,23,204,2,28,250,22,160,2,248,22, +158,20,23,202,1,23,202,1,11,249,22,82,11,205,249,22,82,194,205,192,86, +96,28,248,22,162,5,23,196,2,12,28,248,22,157,4,23,198,2,250,22,178, 11,11,6,15,15,98,97,100,32,109,111,100,117,108,101,32,112,97,116,104,23, -200,2,250,22,178,11,2,23,2,35,23,198,2,28,28,23,196,2,248,22,150, -5,23,197,2,10,12,250,22,178,11,2,23,6,31,31,40,111,114,47,99,32, +200,2,250,22,180,11,2,23,2,35,23,198,2,28,28,23,196,2,248,22,152, +5,23,197,2,10,12,250,22,180,11,2,23,6,31,31,40,111,114,47,99,32, 35,102,32,114,101,115,111,108,118,101,100,45,109,111,100,117,108,101,45,112,97, -116,104,63,41,23,199,2,28,28,23,197,2,248,22,155,4,23,198,2,10,12, -250,22,178,11,2,23,6,17,17,40,111,114,47,99,32,35,102,32,115,121,110, -116,97,120,63,41,23,200,2,28,28,248,22,78,23,196,2,249,22,168,9,248, -22,156,20,23,198,2,2,4,11,86,97,23,198,1,23,197,1,23,196,1,23, -193,1,248,22,151,5,248,22,102,23,197,1,28,28,248,22,78,23,196,2,28, -249,22,168,9,248,22,156,20,23,198,2,2,36,28,248,22,78,248,22,102,23, -197,2,249,22,168,9,248,22,106,23,198,2,2,4,11,11,11,86,97,23,198, -1,23,197,1,23,196,1,23,193,1,248,22,151,5,249,2,83,248,22,119,23, -199,2,248,22,104,23,199,1,28,28,248,22,78,23,196,2,28,249,22,168,9, -248,22,156,20,23,198,2,2,36,28,28,249,22,170,9,248,22,102,23,198,2, -2,38,10,249,22,170,9,248,22,102,23,198,2,2,37,28,23,196,2,27,248, -22,152,5,23,198,2,28,248,22,64,193,10,28,248,22,78,193,248,22,64,248, -22,156,20,194,11,11,11,11,11,86,96,23,198,1,23,197,1,23,193,1,27, -248,22,152,5,23,198,1,248,22,151,5,249,2,83,28,248,22,78,23,197,2, -248,22,156,20,23,197,2,23,196,2,27,28,249,22,170,9,248,22,102,23,203, -2,2,37,248,22,157,20,200,248,22,104,200,28,248,22,78,23,198,2,249,22, -94,248,22,157,20,199,194,192,28,28,248,22,78,23,196,2,249,22,168,9,248, -22,156,20,23,198,2,2,40,11,86,94,248,80,144,38,8,29,39,23,194,2, +116,104,63,41,23,199,2,28,28,23,197,2,248,22,157,4,23,198,2,10,12, +250,22,180,11,2,23,6,17,17,40,111,114,47,99,32,35,102,32,115,121,110, +116,97,120,63,41,23,200,2,28,28,248,22,80,23,196,2,249,22,170,9,248, +22,158,20,23,198,2,2,4,11,86,97,23,198,1,23,197,1,23,196,1,23, +193,1,248,22,153,5,248,22,104,23,197,1,28,28,248,22,80,23,196,2,28, +249,22,170,9,248,22,158,20,23,198,2,2,36,28,248,22,80,248,22,104,23, +197,2,249,22,170,9,248,22,108,23,198,2,2,4,11,11,11,86,97,23,198, +1,23,197,1,23,196,1,23,193,1,248,22,153,5,249,2,83,248,22,121,23, +199,2,248,22,106,23,199,1,28,28,248,22,80,23,196,2,28,249,22,170,9, +248,22,158,20,23,198,2,2,36,28,28,249,22,172,9,248,22,104,23,198,2, +2,38,10,249,22,172,9,248,22,104,23,198,2,2,37,28,23,196,2,27,248, +22,154,5,23,198,2,28,248,22,66,193,10,28,248,22,80,193,248,22,66,248, +22,158,20,194,11,11,11,11,11,86,96,23,198,1,23,197,1,23,193,1,27, +248,22,154,5,23,198,1,248,22,153,5,249,2,83,28,248,22,80,23,197,2, +248,22,158,20,23,197,2,23,196,2,27,28,249,22,172,9,248,22,104,23,203, +2,2,37,248,22,159,20,200,248,22,106,200,28,248,22,80,23,198,2,249,22, +96,248,22,159,20,199,194,192,28,28,248,22,80,23,196,2,249,22,170,9,248, +22,158,20,23,198,2,2,40,11,86,94,248,80,144,38,8,29,39,23,194,2, 253,24,199,1,23,201,1,23,202,1,23,203,1,23,204,1,11,80,143,43,56, -28,28,248,22,78,23,196,2,28,249,22,168,9,248,22,156,20,23,198,2,2, -36,28,248,22,78,248,22,102,23,197,2,249,22,168,9,248,22,106,23,198,2, +28,28,248,22,80,23,196,2,28,249,22,170,9,248,22,158,20,23,198,2,2, +36,28,248,22,80,248,22,104,23,197,2,249,22,170,9,248,22,108,23,198,2, 2,40,11,11,11,86,94,248,80,144,38,8,29,39,23,194,2,253,24,199,1, -248,22,102,23,202,2,23,202,1,23,203,1,23,204,1,248,22,104,23,202,1, +248,22,104,23,202,2,23,202,1,23,203,1,23,204,1,248,22,106,23,202,1, 80,143,43,56,86,94,23,193,1,27,88,148,8,36,37,54,8,240,0,0,8, 0,79,115,104,111,119,45,99,111,108,108,101,99,116,105,111,110,45,101,114,114, -225,2,5,3,33,87,27,28,248,22,78,23,198,2,28,249,22,168,9,2,36, -248,22,156,20,23,200,2,27,248,22,102,23,199,2,28,28,249,22,170,9,23, -195,2,2,38,10,249,22,170,9,23,195,2,2,37,86,94,23,193,1,28,23, -199,2,27,248,22,152,5,23,201,2,28,248,22,78,193,248,22,156,20,193,192, -250,22,174,11,2,23,6,45,45,110,111,32,98,97,115,101,32,112,97,116,104, +225,2,5,3,33,87,27,28,248,22,80,23,198,2,28,249,22,170,9,2,36, +248,22,158,20,23,200,2,27,248,22,104,23,199,2,28,28,249,22,172,9,23, +195,2,2,38,10,249,22,172,9,23,195,2,2,37,86,94,23,193,1,28,23, +199,2,27,248,22,154,5,23,201,2,28,248,22,80,193,248,22,158,20,193,192, +250,22,176,11,2,23,6,45,45,110,111,32,98,97,115,101,32,112,97,116,104, 32,102,111,114,32,114,101,108,97,116,105,118,101,32,115,117,98,109,111,100,117, 108,101,32,112,97,116,104,58,32,126,46,115,23,201,2,192,23,197,2,23,197, -2,27,28,248,22,78,23,199,2,28,249,22,168,9,2,36,248,22,156,20,23, -201,2,27,28,28,28,249,22,170,9,248,22,102,23,202,2,2,38,10,249,22, -170,9,248,22,102,23,202,2,2,37,23,200,2,11,27,248,22,152,5,23,202, -2,27,28,249,22,170,9,248,22,102,23,204,2,2,37,248,22,157,20,23,202, -1,248,22,104,23,202,1,28,248,22,78,23,195,2,249,2,83,248,22,156,20, -23,197,2,249,22,94,248,22,157,20,23,199,1,23,197,1,249,2,83,23,196, -1,23,195,1,249,2,83,2,38,28,249,22,170,9,248,22,102,23,204,2,2, -37,248,22,157,20,23,202,1,248,22,104,23,202,1,28,248,22,78,193,248,22, -157,20,193,11,11,11,27,28,248,22,64,23,196,2,27,248,80,144,43,48,39, -249,22,80,23,199,2,248,22,188,16,247,22,141,14,28,23,193,2,192,86,94, -23,193,1,90,144,38,11,89,146,38,36,11,249,80,144,46,54,39,248,22,71, -23,201,2,11,27,28,248,22,88,23,195,2,2,41,249,22,175,7,23,197,2, -2,42,252,80,144,50,8,24,39,23,205,1,28,248,22,88,23,200,2,23,200, -1,86,94,23,200,1,248,22,81,23,200,2,28,248,22,88,23,200,2,86,94, -23,199,1,9,248,22,82,23,200,1,23,198,1,10,28,248,22,152,7,23,196, +2,27,28,248,22,80,23,199,2,28,249,22,170,9,2,36,248,22,158,20,23, +201,2,27,28,28,28,249,22,172,9,248,22,104,23,202,2,2,38,10,249,22, +172,9,248,22,104,23,202,2,2,37,23,200,2,11,27,248,22,154,5,23,202, +2,27,28,249,22,172,9,248,22,104,23,204,2,2,37,248,22,159,20,23,202, +1,248,22,106,23,202,1,28,248,22,80,23,195,2,249,2,83,248,22,158,20, +23,197,2,249,22,96,248,22,159,20,23,199,1,23,197,1,249,2,83,23,196, +1,23,195,1,249,2,83,2,38,28,249,22,172,9,248,22,104,23,204,2,2, +37,248,22,159,20,23,202,1,248,22,106,23,202,1,28,248,22,80,193,248,22, +159,20,193,11,11,11,27,28,248,22,66,23,196,2,27,248,80,144,43,48,39, +249,22,82,23,199,2,248,22,190,16,247,22,143,14,28,23,193,2,192,86,94, +23,193,1,90,144,38,11,89,146,38,36,11,249,80,144,46,54,39,248,22,73, +23,201,2,11,27,28,248,22,90,23,195,2,2,41,249,22,177,7,23,197,2, +2,42,252,80,144,50,8,24,39,23,205,1,28,248,22,90,23,200,2,23,200, +1,86,94,23,200,1,248,22,83,23,200,2,28,248,22,90,23,200,2,86,94, +23,199,1,9,248,22,84,23,200,1,23,198,1,10,28,248,22,154,7,23,196, 2,86,94,23,196,1,27,248,80,144,43,8,30,39,23,202,2,27,248,80,144, -44,48,39,249,22,80,23,200,2,23,197,2,28,23,193,2,192,86,94,23,193, +44,48,39,249,22,82,23,200,2,23,197,2,28,23,193,2,192,86,94,23,193, 1,90,144,38,11,89,146,38,36,11,249,80,144,47,54,39,23,201,2,11,28, -248,22,88,23,194,2,86,94,23,193,1,249,22,189,15,23,198,1,248,2,88, -23,197,1,250,22,1,22,189,15,23,199,1,249,22,94,249,22,2,32,0,88, -148,8,36,37,44,11,9,222,33,90,23,200,1,248,22,90,248,2,88,23,201, -1,28,248,22,171,15,23,196,2,86,94,23,196,1,248,80,144,42,8,31,39, -248,22,135,16,28,248,22,132,16,23,198,2,23,197,2,249,22,133,16,23,199, -2,248,80,144,46,8,30,39,23,205,2,28,249,22,168,9,248,22,81,23,198, -2,2,34,27,248,80,144,43,48,39,249,22,80,23,199,2,248,22,188,16,247, -22,141,14,28,23,193,2,192,86,94,23,193,1,90,144,39,11,89,146,38,36, -11,249,80,144,47,54,39,248,22,102,23,202,2,11,89,146,37,38,11,28,248, -22,88,248,22,104,23,201,2,28,248,22,88,23,194,2,249,22,167,16,2,91, -23,196,2,11,10,27,28,23,196,2,248,2,88,23,196,2,28,248,22,88,23, -195,2,2,41,28,249,22,167,16,2,91,23,197,2,248,2,88,23,196,2,249, -22,175,7,23,197,2,2,42,27,28,23,197,1,86,94,23,196,1,249,22,94, -28,248,22,88,248,22,104,23,205,2,21,93,6,5,5,109,122,108,105,98,249, -22,1,22,94,249,22,2,80,144,53,8,32,39,248,22,104,23,208,2,23,197, -1,28,248,22,88,23,196,2,86,94,23,195,1,248,22,90,23,197,1,86,94, -23,196,1,23,195,1,252,80,144,52,8,24,39,23,207,1,248,22,81,23,199, -2,248,22,157,20,23,199,1,23,199,1,10,28,249,22,168,9,248,22,156,20, -23,198,2,2,39,248,80,144,42,8,31,39,248,22,135,16,249,22,133,16,248, -22,137,16,248,22,102,23,201,2,248,80,144,46,8,30,39,23,205,2,12,86, -94,28,28,248,22,171,15,23,194,2,10,248,22,183,8,23,194,2,12,28,23, -201,2,250,22,176,11,67,114,101,113,117,105,114,101,249,22,136,8,6,17,17, +248,22,90,23,194,2,86,94,23,193,1,249,22,191,15,23,198,1,248,2,88, +23,197,1,250,22,1,22,191,15,23,199,1,249,22,96,249,22,2,32,0,88, +148,8,36,37,44,11,9,222,33,90,23,200,1,248,22,92,248,2,88,23,201, +1,28,248,22,173,15,23,196,2,86,94,23,196,1,248,80,144,42,8,31,39, +248,22,137,16,28,248,22,134,16,23,198,2,23,197,2,249,22,135,16,23,199, +2,248,80,144,46,8,30,39,23,205,2,28,249,22,170,9,248,22,83,23,198, +2,2,34,27,248,80,144,43,48,39,249,22,82,23,199,2,248,22,190,16,247, +22,143,14,28,23,193,2,192,86,94,23,193,1,90,144,39,11,89,146,38,36, +11,249,80,144,47,54,39,248,22,104,23,202,2,11,89,146,37,38,11,28,248, +22,90,248,22,106,23,201,2,28,248,22,90,23,194,2,249,22,169,16,2,91, +23,196,2,11,10,27,28,23,196,2,248,2,88,23,196,2,28,248,22,90,23, +195,2,2,41,28,249,22,169,16,2,91,23,197,2,248,2,88,23,196,2,249, +22,177,7,23,197,2,2,42,27,28,23,197,1,86,94,23,196,1,249,22,96, +28,248,22,90,248,22,106,23,205,2,21,93,6,5,5,109,122,108,105,98,249, +22,1,22,96,249,22,2,80,144,53,8,32,39,248,22,106,23,208,2,23,197, +1,28,248,22,90,23,196,2,86,94,23,195,1,248,22,92,23,197,1,86,94, +23,196,1,23,195,1,252,80,144,52,8,24,39,23,207,1,248,22,83,23,199, +2,248,22,159,20,23,199,1,23,199,1,10,28,249,22,170,9,248,22,158,20, +23,198,2,2,39,248,80,144,42,8,31,39,248,22,137,16,249,22,135,16,248, +22,139,16,248,22,104,23,201,2,248,80,144,46,8,30,39,23,205,2,12,86, +94,28,28,248,22,173,15,23,194,2,10,248,22,185,8,23,194,2,12,28,23, +201,2,250,22,178,11,67,114,101,113,117,105,114,101,249,22,138,8,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,81,23,199,2,6,0,0,23,204,2,250,22,178,11,2,23,2,35,23, -198,2,27,28,248,22,183,8,23,195,2,249,22,188,8,23,196,2,36,249,22, -135,16,248,22,136,16,23,197,2,11,27,28,248,22,183,8,23,196,2,249,22, -188,8,23,197,2,37,248,80,144,44,8,25,39,23,195,2,90,144,39,11,89, -146,39,36,11,28,248,22,183,8,23,199,2,250,22,7,2,43,249,22,188,8, -23,203,2,38,2,43,248,22,128,16,23,198,2,86,95,23,195,1,23,193,1, -27,28,248,22,183,8,23,200,2,249,22,188,8,23,201,2,39,249,80,144,49, -59,39,23,197,2,5,0,27,28,248,22,183,8,23,201,2,249,22,188,8,23, -202,2,40,248,22,151,5,23,200,2,27,250,22,158,2,80,144,52,41,38,248, -22,188,16,247,22,141,14,11,27,28,23,194,2,23,194,1,86,94,23,194,1, -27,249,22,80,247,22,138,2,247,22,138,2,86,94,250,22,156,2,80,144,54, -41,38,248,22,188,16,247,22,141,14,195,192,27,28,23,204,2,248,22,151,5, -249,22,80,248,22,152,5,23,200,2,23,207,2,23,196,2,86,95,28,23,212, -2,28,250,22,158,2,248,22,81,23,198,2,195,11,86,96,23,211,1,23,204, +248,22,83,23,199,2,6,0,0,23,204,2,250,22,180,11,2,23,2,35,23, +198,2,27,28,248,22,185,8,23,195,2,249,22,190,8,23,196,2,36,249,22, +137,16,248,22,138,16,23,197,2,11,27,28,248,22,185,8,23,196,2,249,22, +190,8,23,197,2,37,248,80,144,44,8,25,39,23,195,2,90,144,39,11,89, +146,39,36,11,28,248,22,185,8,23,199,2,250,22,7,2,43,249,22,190,8, +23,203,2,38,2,43,248,22,130,16,23,198,2,86,95,23,195,1,23,193,1, +27,28,248,22,185,8,23,200,2,249,22,190,8,23,201,2,39,249,80,144,49, +59,39,23,197,2,5,0,27,28,248,22,185,8,23,201,2,249,22,190,8,23, +202,2,40,248,22,153,5,23,200,2,27,250,22,160,2,80,144,52,41,38,248, +22,190,16,247,22,143,14,11,27,28,23,194,2,23,194,1,86,94,23,194,1, +27,249,22,82,247,22,140,2,247,22,140,2,86,94,250,22,158,2,80,144,54, +41,38,248,22,190,16,247,22,143,14,195,192,27,28,23,204,2,248,22,153,5, +249,22,82,248,22,154,5,23,200,2,23,207,2,23,196,2,86,95,28,23,212, +2,28,250,22,160,2,248,22,83,23,198,2,195,11,86,96,23,211,1,23,204, 1,23,194,1,12,27,251,22,33,11,80,144,56,50,38,9,28,248,22,17,80, -144,57,51,38,80,144,56,51,38,247,22,19,27,248,22,188,16,247,22,141,14, +144,57,51,38,80,144,56,51,38,247,22,19,27,248,22,190,16,247,22,143,14, 86,94,249,22,3,88,148,8,36,37,54,11,9,226,13,12,2,3,33,94,23, 196,2,248,28,248,22,17,80,144,55,51,38,32,0,88,148,36,37,42,11,9, 222,33,95,80,144,54,8,33,39,20,20,98,88,148,36,36,8,25,8,240,12, 64,0,0,9,233,18,21,14,15,12,11,7,6,4,1,2,33,97,23,195,1, -23,194,1,23,197,1,23,207,1,23,214,1,12,28,28,248,22,183,8,23,204, -1,86,94,23,212,1,11,28,23,212,1,28,248,22,152,7,23,206,2,10,28, -248,22,64,23,206,2,10,28,248,22,78,23,206,2,249,22,168,9,248,22,156, -20,23,208,2,2,34,11,11,249,80,144,53,49,39,28,248,22,152,7,23,208, -2,249,22,80,23,209,1,248,80,144,56,8,30,39,23,215,1,86,94,23,212, -1,249,22,80,23,209,1,248,22,188,16,247,22,141,14,252,22,185,8,23,209, +23,194,1,23,197,1,23,207,1,23,214,1,12,28,28,248,22,185,8,23,204, +1,86,94,23,212,1,11,28,23,212,1,28,248,22,154,7,23,206,2,10,28, +248,22,66,23,206,2,10,28,248,22,80,23,206,2,249,22,170,9,248,22,158, +20,23,208,2,2,34,11,11,249,80,144,53,49,39,28,248,22,154,7,23,208, +2,249,22,82,23,209,1,248,80,144,56,8,30,39,23,215,1,86,94,23,212, +1,249,22,82,23,209,1,248,22,190,16,247,22,143,14,252,22,187,8,23,209, 1,23,208,1,23,206,1,23,204,1,23,203,1,12,192,86,96,20,18,144,11, 80,143,36,56,248,80,144,37,8,28,37,249,22,33,11,80,144,39,58,37,248, -22,189,4,80,144,37,57,38,248,22,175,5,80,144,37,37,39,248,22,140,15, +22,191,4,80,144,37,57,38,248,22,177,5,80,144,37,37,39,248,22,142,15, 80,144,37,45,39,20,18,144,11,80,143,36,56,248,80,144,37,8,28,37,249, 22,33,11,80,144,39,58,37,20,18,144,11,80,143,36,56,248,80,144,37,8, 28,37,249,22,33,11,80,144,39,58,37,144,36,20,114,144,36,16,1,11,16, @@ -1504,16 +1506,16 @@ 2,14,2,15,2,10,2,20,2,23,52,11,11,11,16,3,2,25,2,22,2, 26,16,3,11,11,11,16,3,2,25,2,22,2,26,39,39,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,24, -20,15,16,2,248,22,179,8,69,115,111,45,115,117,102,102,105,120,80,144,36, +20,15,16,2,248,22,181,8,69,115,111,45,115,117,102,102,105,120,80,144,36, 36,37,20,15,16,2,88,148,36,38,8,39,8,189,3,2,3,223,0,33,52, 80,144,36,37,37,20,15,16,2,32,0,88,148,8,36,41,52,11,2,10,222, 33,53,80,144,36,44,37,20,15,16,2,20,27,143,32,0,88,148,8,36,37, 42,11,2,11,222,192,32,0,88,148,8,36,37,42,11,2,11,222,192,80,144, -36,45,37,20,15,16,2,247,22,141,2,80,144,36,41,37,20,15,16,2,8, -128,8,80,144,36,46,37,20,15,16,2,249,22,184,8,8,128,8,11,80,144, +36,45,37,20,15,16,2,247,22,143,2,80,144,36,41,37,20,15,16,2,8, +128,8,80,144,36,46,37,20,15,16,2,249,22,186,8,8,128,8,11,80,144, 36,47,37,20,15,16,2,88,148,8,36,37,50,8,128,32,2,14,223,0,33, 54,80,144,36,48,37,20,15,16,2,88,148,8,36,38,54,8,128,32,2,15, -223,0,33,55,80,144,36,49,37,20,15,16,2,247,22,76,80,144,36,50,37, +223,0,33,55,80,144,36,49,37,20,15,16,2,247,22,78,80,144,36,50,37, 20,15,16,2,248,22,18,74,109,111,100,117,108,101,45,108,111,97,100,105,110, 103,80,144,36,51,37,20,15,16,2,11,80,143,36,52,20,15,16,2,11,80, 143,36,53,20,15,16,2,32,0,88,148,36,38,57,11,2,20,222,33,74,80, @@ -1540,7 +1542,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 9735); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,54,46,49,46,49,46,52,84,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,54,46,49,46,49,46,53,84,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,101,1,0, 0,69,35,37,98,117,105,108,116,105,110,65,113,117,111,116,101,29,94,2,2, @@ -1548,7 +1550,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,120,91, +29,94,2,2,68,35,37,107,101,114,110,101,108,11,97,36,11,8,240,159,91, 0,0,100,144,2,3,36,36,144,2,4,36,36,144,2,5,36,36,144,2,6, 36,36,144,2,7,36,36,144,2,8,36,36,144,2,9,36,36,144,2,9,36, 36,16,0,144,36,20,114,144,36,16,1,11,16,0,20,26,15,53,9,2,1, diff --git a/racket/src/racket/src/eval.c b/racket/src/racket/src/eval.c index d7bb626f9d..de0b3bc891 100644 --- a/racket/src/racket/src/eval.c +++ b/racket/src/racket/src/eval.c @@ -1377,6 +1377,8 @@ static Scheme_Object **evacuate_runstack(int num_rands, Scheme_Object **rands, S static Scheme_Object *do_eval_k_readjust_mark(void) { + Scheme_Thread *p = scheme_current_thread; + p->self_for_proc_chaperone = p->ku.k.p3; MZ_CONT_MARK_POS -= 2; /* undo increment in do_eval_stack_overflow() */ return do_eval_k(); } @@ -1405,6 +1407,9 @@ static Scheme_Object *do_eval_stack_overflow(Scheme_Object *obj, int num_rands, p->ku.k.p2 = (void *)rands; p->ku.k.i2 = get_value; + p->ku.k.p3 = p->self_for_proc_chaperone; + p->self_for_proc_chaperone = NULL; + /* In case we got here via scheme_force_value_same_mark(), in case overflow handling causes the thread to sleep, and in case another thread tries to get this thread's continuation marks: ensure tha diff --git a/racket/src/racket/src/fun.c b/racket/src/racket/src/fun.c index ef7cac6517..a9dfeb0a79 100644 --- a/racket/src/racket/src/fun.c +++ b/racket/src/racket/src/fun.c @@ -188,6 +188,8 @@ static Scheme_Object *procedure_to_method(int argc, Scheme_Object *argv[]); static Scheme_Object *procedure_equal_closure_p(int argc, Scheme_Object *argv[]); static Scheme_Object *chaperone_procedure(int argc, Scheme_Object *argv[]); static Scheme_Object *impersonate_procedure(int argc, Scheme_Object *argv[]); +static Scheme_Object *chaperone_procedure_star(int argc, Scheme_Object *argv[]); +static Scheme_Object *impersonate_procedure_star(int argc, Scheme_Object *argv[]); static Scheme_Object *primitive_p(int argc, Scheme_Object *argv[]); static Scheme_Object *primitive_closure_p(int argc, Scheme_Object *argv[]); static Scheme_Object *primitive_result_arity (int argc, Scheme_Object *argv[]); @@ -608,6 +610,16 @@ scheme_init_fun (Scheme_Env *env) "impersonate-procedure", 2, -1), env); + scheme_add_global_constant("chaperone-procedure*", + scheme_make_prim_w_arity(chaperone_procedure_star, + "chaperone-procedure*", + 2, -1), + env); + scheme_add_global_constant("impersonate-procedure*", + scheme_make_prim_w_arity(impersonate_procedure_star, + "impersonate-procedure*", + 2, -1), + env); scheme_add_global_constant("primitive?", scheme_make_folding_prim(primitive_p, @@ -3049,15 +3061,17 @@ static Scheme_Object *make_reduced_proc(Scheme_Object *proc, Scheme_Object *aty, return scheme_make_struct_instance(scheme_reduced_procedure_struct, 4, a); } -static int is_subarity(Scheme_Object *req, Scheme_Object *orig) +static int is_subarity(Scheme_Object *req, Scheme_Object *orig, int req_delta) { - Scheme_Object *oa, *ra, *ol, *lra, *ara, *prev, *pr, *tmp; + Scheme_Object *oa, *ra, *ol, *lra, *ara, *prev, *pr, *tmp, *rd; if (!SCHEME_PAIRP(orig) && !SCHEME_NULLP(orig)) orig = scheme_make_pair(orig, scheme_null); if (!SCHEME_PAIRP(req) && !SCHEME_NULLP(req)) req = scheme_make_pair(req, scheme_null); + rd = scheme_make_integer(req_delta); + while (!SCHEME_NULLP(req)) { ra = SCHEME_CAR(req); if (SCHEME_CHAPERONE_STRUCTP(ra) @@ -3075,12 +3089,12 @@ static int is_subarity(Scheme_Object *req, Scheme_Object *orig) oa = SCHEME_CAR(ol); if (SCHEME_INTP(ra) || SCHEME_BIGNUMP(ra)) { if (SCHEME_INTP(oa) || SCHEME_BIGNUMP(oa)) { - if (scheme_equal(ra, oa)) + if (scheme_equal(scheme_bin_plus(ra, rd), oa)) break; } else { /* orig is arity-at-least */ oa = ((Scheme_Structure *)oa)->slots[0]; - if (scheme_bin_lt_eq(oa, ra)) + if (scheme_bin_lt_eq(oa, scheme_bin_plus(ra, rd))) break; } } else { @@ -3100,10 +3114,10 @@ static int is_subarity(Scheme_Object *req, Scheme_Object *orig) /* check [lo, hi] vs oa: */ ara = SCHEME_CAR(lra); if (SCHEME_FALSEP(SCHEME_CDR(ara)) - || scheme_bin_lt_eq(oa, SCHEME_CDR(ara))) { - if (scheme_bin_gt_eq(oa, SCHEME_CAR(ara))) { + || scheme_bin_lt_eq(oa, scheme_bin_plus(SCHEME_CDR(ara), rd))) { + if (scheme_bin_gt_eq(oa, scheme_bin_plus(SCHEME_CAR(ara), rd))) { /* oa is in the range [lo, hi]: */ - if (scheme_equal(oa, SCHEME_CAR(ara))) { + if (scheme_equal(oa, scheme_bin_plus(SCHEME_CAR(ara), rd))) { /* the range is [oa, hi] */ if (at_least) { /* oa is arity-at least, so drop from here */ @@ -3112,7 +3126,7 @@ static int is_subarity(Scheme_Object *req, Scheme_Object *orig) else ra = scheme_null; } else { - if (scheme_equal(oa, SCHEME_CDR(ara))) { + if (scheme_equal(oa, scheme_bin_plus(SCHEME_CDR(ara), rd))) { /* the range is [oa, oa], so drop it */ if (prev) SCHEME_CDR(prev) = SCHEME_CDR(lra); @@ -3121,12 +3135,14 @@ static int is_subarity(Scheme_Object *req, Scheme_Object *orig) } else { /* change range to [ao+1, hi] */ tmp = scheme_bin_plus(oa, scheme_make_integer(1)); + tmp = scheme_bin_minus(tmp, rd); SCHEME_CAR(ara) = tmp; } } - } else if (scheme_equal(oa, SCHEME_CAR(ara))) { + } else if (scheme_equal(oa, scheme_bin_plus(SCHEME_CAR(ara), rd))) { /* the range is [lo, oa], where lo < oa */ tmp = scheme_bin_minus(oa, scheme_make_integer(1)); + tmp = scheme_bin_minus(tmp, rd); SCHEME_CDR(ara) = tmp; if (at_least) SCHEME_CDR(lra) = scheme_null; @@ -3134,13 +3150,16 @@ static int is_subarity(Scheme_Object *req, Scheme_Object *orig) /* split the range */ if (at_least) { tmp = scheme_bin_minus(oa, scheme_make_integer(1)); + tmp = scheme_bin_minus(tmp, rd); SCHEME_CDR(ara) = tmp; SCHEME_CDR(lra) = scheme_null; } else { - pr = scheme_make_pair(scheme_make_pair(scheme_bin_plus(oa, scheme_make_integer(1)), - SCHEME_CDR(ara)), + tmp = scheme_bin_plus(oa, scheme_make_integer(1)); + tmp = scheme_bin_minus(tmp, rd); + pr = scheme_make_pair(scheme_make_pair(tmp, SCHEME_CDR(ara)), SCHEME_CDR(lra)); tmp = scheme_bin_minus(oa, scheme_make_integer(1)); + tmp = scheme_bin_minus(tmp, rd); SCHEME_CDR(ara) = tmp; SCHEME_CDR(lra) = pr; } @@ -3227,7 +3246,7 @@ static Scheme_Object *procedure_reduce_arity(int argc, Scheme_Object *argv[]) orig = get_or_check_arity(argv[0], -1, NULL, 1); aty = clone_arity(argv[1], 0, -1); - if (!is_subarity(aty, orig)) { + if (!is_subarity(aty, orig, 0)) { scheme_contract_error("procedure-reduce-arity", "arity of procedure does not include requested arity", "procedure", 1, argv[0], @@ -3382,7 +3401,8 @@ static Scheme_Object *procedure_equal_closure_p(int argc, Scheme_Object *argv[]) } static Scheme_Object *do_chaperone_procedure(const char *name, const char *whating, - int is_impersonator, int argc, Scheme_Object *argv[]) + int is_impersonator, int pass_self, + int argc, Scheme_Object *argv[]) { Scheme_Chaperone *px; Scheme_Object *val = argv[0], *orig, *naya, *r, *app_mark; @@ -3402,12 +3422,13 @@ static Scheme_Object *do_chaperone_procedure(const char *name, const char *whati else { naya = get_or_check_arity(argv[1], -1, NULL, 1); - if (!is_subarity(orig, naya)) + if (!is_subarity(orig, naya, pass_self ? 1 : 0)) scheme_raise_exn(MZEXN_FAIL_CONTRACT, - "%s: arity of wrapper procedure does not cover arity of original procedure\n" + "%s: arity of wrapper procedure does not cover arity of original procedure%s\n" " wrapper: %V\n" " original: %V", name, + (pass_self ? " (adding an extra argument)": ""), argv[1], argv[0]); } @@ -3439,8 +3460,12 @@ static Scheme_Object *do_chaperone_procedure(const char *name, const char *whati px->prev = argv[0]; px->props = props; - /* put procedure with known-good arity (to speed checking) in a vector: */ - r = scheme_make_vector(3, scheme_make_integer(-1)); + /* Put the procedure along with known-good arity (to speed checking; + initialized to -1) in a vector. An odd-sized vector makes the + chaperone recognized as a procedure chaperone, and a size of 5 + (instead of 3) indicates that the wrapper procedure accepts a + "self" argument: */ + r = scheme_make_vector((pass_self ? 5 : 3), scheme_make_integer(-1)); SCHEME_VEC_ELS(r)[0] = argv[1]; SCHEME_VEC_ELS(r)[2] = app_mark; @@ -3456,12 +3481,22 @@ static Scheme_Object *do_chaperone_procedure(const char *name, const char *whati static Scheme_Object *chaperone_procedure(int argc, Scheme_Object *argv[]) { - return do_chaperone_procedure("chaperone-procedure", "chaperoning", 0, argc, argv); + return do_chaperone_procedure("chaperone-procedure", "chaperoning", 0, 0, argc, argv); } static Scheme_Object *impersonate_procedure(int argc, Scheme_Object *argv[]) { - return do_chaperone_procedure("impersonate-procedure", "impersonating", 1, argc, argv); + return do_chaperone_procedure("impersonate-procedure", "impersonating", 1, 0, argc, argv); +} + +static Scheme_Object *chaperone_procedure_star(int argc, Scheme_Object *argv[]) +{ + return do_chaperone_procedure("chaperone-procedure*", "chaperoning", 0, 1, argc, argv); +} + +static Scheme_Object *impersonate_procedure_star(int argc, Scheme_Object *argv[]) +{ + return do_chaperone_procedure("impersonate-procedure*", "impersonating", 1, 1, argc, argv); } static Scheme_Object *apply_chaperone_k(void) @@ -3539,11 +3574,12 @@ Scheme_Object *_scheme_apply_native(Scheme_Object *obj, int num_rands, Scheme_Ob #define MAX_QUICK_CHAP_ARGV 5 Scheme_Object *scheme_apply_chaperone(Scheme_Object *o, int argc, Scheme_Object **argv, Scheme_Object *auto_val, int checks) -/* checks & 0x2 => no tail; checks == 0x3 => no tail or multiple; */ +/* auto_val => no need to actually call the function (but handle further chaperoning); + checks & 0x2 => no tail; checks == 0x3 => no tail or multiple */ { const char *what; Scheme_Chaperone *px; - Scheme_Object *v, *a[1], *a2[MAX_QUICK_CHAP_ARGV], **argv2, *post, *result_v, *orig_obj, *app_mark; + Scheme_Object *v, *a[1], *a2[MAX_QUICK_CHAP_ARGV], **argv2, *post, *result_v, *orig_obj, *app_mark, *self_proc; int c, i, need_restore = 0; int need_pop_mark; Scheme_Cont_Frame_Data cframe; @@ -3575,6 +3611,15 @@ Scheme_Object *scheme_apply_chaperone(Scheme_Object *o, int argc, Scheme_Object } px = (Scheme_Chaperone *)o; + { + Scheme_Thread *p = scheme_current_thread; + self_proc = p->self_for_proc_chaperone; + if (self_proc) + p->self_for_proc_chaperone = NULL; + else + self_proc = o; + } + if (!(SCHEME_CHAPERONE_FLAGS(px) & SCHEME_CHAPERONE_IS_IMPERSONATOR)) what = "chaperone"; else @@ -3618,11 +3663,29 @@ Scheme_Object *scheme_apply_chaperone(Scheme_Object *o, int argc, Scheme_Object } else need_pop_mark = 0; + if (SCHEME_VEC_SIZE(px->redirects) > 3) { + /* wrapper wants the "self" argument */ + c = argc+1; + if (c <= MAX_QUICK_CHAP_ARGV) + argv2 = a2; + else + argv2 = MALLOC_N(Scheme_Object *, MAX_QUICK_CHAP_ARGV); + for (i = 0; i < argc; i++) { + argv2[i+1] = argv[i]; + } + argv2[0] = self_proc; + } else { + /* wrapper doesn't need the extra "self" argument */ + c = argc; + argv2 = argv; + } + v = SCHEME_VEC_ELS(px->redirects)[0]; if (SAME_TYPE(SCHEME_TYPE(v), scheme_native_closure_type)) - v = _apply_native(v, argc, argv); + v = _apply_native(v, c, argv2); else - v = _scheme_apply_multi(v, argc, argv); + v = _scheme_apply_multi(v, c, argv2); + if (v == SCHEME_MULTIPLE_VALUES) { GC_CAN_IGNORE Scheme_Thread *p = scheme_current_thread; c = p->ku.multiple.count; @@ -3700,6 +3763,10 @@ Scheme_Object *scheme_apply_chaperone(Scheme_Object *o, int argc, Scheme_Object /* No filter for the result, so tail call: */ if (app_mark) scheme_set_cont_mark(SCHEME_CAR(app_mark), SCHEME_CDR(app_mark)); + if (SCHEME_CHAPERONEP(px->prev)) { + /* commuincate `self_proc` to the next layer: */ + scheme_current_thread->self_for_proc_chaperone = self_proc; + } if (auto_val) { if (SCHEME_CHAPERONEP(px->prev)) return do_apply_chaperone(px->prev, c, argv2, auto_val, 0); @@ -3749,6 +3816,11 @@ Scheme_Object *scheme_apply_chaperone(Scheme_Object *o, int argc, Scheme_Object }else need_pop_mark = 0; + if (SCHEME_CHAPERONEP(px->prev)) { + /* commuincate `self_proc` to the next layer: */ + scheme_current_thread->self_for_proc_chaperone = self_proc; + } + if (auto_val) { if (SCHEME_CHAPERONEP(px->prev)) result_v = do_apply_chaperone(px->prev, argc, argv2, auto_val, 0); diff --git a/racket/src/racket/src/mzmark_type.inc b/racket/src/racket/src/mzmark_type.inc index a2f1d331d7..82574ed78b 100644 --- a/racket/src/racket/src/mzmark_type.inc +++ b/racket/src/racket/src/mzmark_type.inc @@ -1860,6 +1860,8 @@ static int thread_val_MARK(void *p, struct NewGC *gc) { gcMARK2(pr->ku.k.p3, gc); gcMARK2(pr->ku.k.p4, gc); gcMARK2(pr->ku.k.p5, gc); + + gcMARK2(pr->self_for_proc_chaperone, gc); gcMARK2(pr->list_stack, gc); @@ -1975,6 +1977,8 @@ static int thread_val_FIXUP(void *p, struct NewGC *gc) { gcFIXUP2(pr->ku.k.p3, gc); gcFIXUP2(pr->ku.k.p4, gc); gcFIXUP2(pr->ku.k.p5, gc); + + gcFIXUP2(pr->self_for_proc_chaperone, gc); gcFIXUP2(pr->list_stack, gc); diff --git a/racket/src/racket/src/mzmarksrc.c b/racket/src/racket/src/mzmarksrc.c index ac27ae525a..72794ce019 100644 --- a/racket/src/racket/src/mzmarksrc.c +++ b/racket/src/racket/src/mzmarksrc.c @@ -767,6 +767,8 @@ thread_val { gcMARK2(pr->ku.k.p3, gc); gcMARK2(pr->ku.k.p4, gc); gcMARK2(pr->ku.k.p5, gc); + + gcMARK2(pr->self_for_proc_chaperone, gc); gcMARK2(pr->list_stack, gc); diff --git a/racket/src/racket/src/schminc.h b/racket/src/racket/src/schminc.h index 05850d57a3..a8d86b6d76 100644 --- a/racket/src/racket/src/schminc.h +++ b/racket/src/racket/src/schminc.h @@ -12,9 +12,9 @@ finally, set EXPECTED_PRIM_COUNT to the right value and USE_COMPILED_STARTUP to 1 and `make' again. */ -#define USE_COMPILED_STARTUP 1 +#define USE_COMPILED_STARTUP 0 -#define EXPECTED_PRIM_COUNT 1127 +#define EXPECTED_PRIM_COUNT 1129 #define EXPECTED_UNSAFE_COUNT 106 #define EXPECTED_FLFXNUM_COUNT 69 #define EXPECTED_EXTFL_COUNT 45 diff --git a/racket/src/racket/src/schvers.h b/racket/src/racket/src/schvers.h index 064288d3b2..0b18a2bc6b 100644 --- a/racket/src/racket/src/schvers.h +++ b/racket/src/racket/src/schvers.h @@ -13,12 +13,12 @@ consistently.) */ -#define MZSCHEME_VERSION "6.1.1.4" +#define MZSCHEME_VERSION "6.1.1.5" #define MZSCHEME_VERSION_X 6 #define MZSCHEME_VERSION_Y 1 #define MZSCHEME_VERSION_Z 1 -#define MZSCHEME_VERSION_W 4 +#define MZSCHEME_VERSION_W 5 #define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y) #define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)