diff options
author | Pedro F. Giffuni <pfg@FreeBSD.org> | 2015-05-12 03:27:06 +0000 |
---|---|---|
committer | Pedro F. Giffuni <pfg@FreeBSD.org> | 2015-05-12 03:27:06 +0000 |
commit | f4e75c6395310fa4b119d3eaa9a4a9f8913df200 (patch) | |
tree | 2b015c205d81fa2431f0c36d7d9e903088a56d1c /softcore.c | |
parent | be98e1ae3decabdd852fbe6496166aaa9acfbf9e (diff) |
Notes
Diffstat (limited to 'softcore.c')
-rw-r--r-- | softcore.c | 3557 |
1 files changed, 2540 insertions, 1017 deletions
diff --git a/softcore.c b/softcore.c index 2e38728a49a98..af614f6a0f88c 100644 --- a/softcore.c +++ b/softcore.c @@ -1,1028 +1,2551 @@ -/******************************************************************* -** s o f t c o r e . c -** Forth Inspired Command Language - -** Words from CORE set written in FICL -** Author: John Sadler (john_sadler@alum.mit.edu) -** Created: 27 December 1997 -** Last update: Thu Jun 13 02:57:00 2002 -*******************************************************************/ /* -** DO NOT EDIT THIS FILE -- it is generated by softwords/softcore.py -** Make changes to the .fr files in ficl/softwords instead. -** This file contains definitions that are compiled into the -** system dictionary by the first virtual machine to be created. -** Created automagically by ficl/softwords/softcore.py -*/ -/* -** Copyright (c) 1997-2001 John Sadler (john_sadler@alum.mit.edu) -** All rights reserved. -** -** Get the latest Ficl release at http://ficl.sourceforge.net -** -** I am interested in hearing from anyone who uses ficl. If you have -** a problem, a success story, a defect, an enhancement request, or -** if you would like to contribute to the ficl release, please send -** contact me by email at the address above. +** Ficl softcore +** both uncompressed and Lempel-Ziv compressed versions. ** -** L I C E N S E and D I S C L A I M E R -** -** Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions -** are met: -** 1. Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** 2. Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in the -** documentation and/or other materials provided with the distribution. -** -** THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -** ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -** OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -** HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -** OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -** SUCH DAMAGE. -*/ - +** Generated 2003/05/05 12:42:30 +**/ #include "ficl.h" -static char softWords[] = -#if FICL_WANT_SOFTWORDS -/* -** ficl/softwords/softcore.fr -** FICL soft extensions -** John Sadler (john_sadler@alum.mit.edu) -** September, 1998 -*/ -/* -** Ficl USER variables -** See words.c for primitive def'n of USER -*/ - ".( loading ficl soft extensions ) cr " -#if FICL_WANT_USER - "variable nUser 0 nUser ! " - ": user " - "nUser dup @ user 1 swap +! ; " -#endif -/* -** ficl extras -*/ - ": empty depth 0 ?do drop loop ; " - ": cell- [ 1 cells ] literal - ; " - ": -rot 2 -roll ; " -/* -** CORE -*/ - ": abs " - "dup 0< if negate endif ; " - "decimal 32 constant bl " - ": space bl emit ; " - ": spaces 0 ?do space loop ; " - ": abort\" " - "state @ if " - "postpone if " - "postpone .\" " - "postpone cr " - "-2 " - "postpone literal " - "postpone throw " - "postpone endif " - "else " - "[char] \" parse " - "rot if " - "type " - "cr " - "-2 throw " - "else " - "2drop " - "endif " - "endif " - "; immediate " -/* -** CORE EXT -*/ - ".( loading CORE EXT words ) cr " - "0 constant false " - "false invert constant true " - ": <> = 0= ; " - ": 0<> 0= 0= ; " - ": compile, , ; " - ": convert char+ 65535 >number drop ; " - ": erase 0 fill ; " - "variable span " - ": expect accept span ! ; " - ": nip swap drop ; " - ": tuck swap over ; " - ": within over - >r - r> u< ; " -/* -** LOCAL EXT word set -*/ -#if FICL_WANT_LOCALS - ": locals| " - "begin " - "bl word count " - "dup 0= abort\" where's the delimiter??\" " - "over c@ " - "[char] | - over 1- or " - "while " - "(local) " - "repeat 2drop 0 0 (local) " - "; immediate " - ": local bl word count (local) ; immediate " - ": 2local bl word count (2local) ; immediate " - ": end-locals 0 0 (local) ; immediate " -#endif -/* -** TOOLS word set... -*/ - ": ? @ . ; " - ": dump " - "0 ?do " - "dup c@ . 1+ " - "i 7 and 7 = if cr endif " - "loop drop " - "; " -/* -** SEARCH+EXT words and ficl helpers -*/ - ".( loading SEARCH & SEARCH-EXT words ) cr " - ": brand-wordlist last-word >name drop wid-set-name ; " - ": ficl-named-wordlist " - "ficl-wordlist dup create , brand-wordlist does> @ ; " - ": wordlist " - "1 ficl-wordlist ; " - ": ficl-set-current " - "get-current swap set-current ; " - ": do-vocabulary " - "does> @ search> drop >search ; " - ": ficl-vocabulary " - "ficl-named-wordlist do-vocabulary ; " - ": vocabulary " - "1 ficl-vocabulary ; " - ": previous search> drop ; " - "1 ficl-named-wordlist hidden " - ": hide hidden dup >search ficl-set-current ; " - ": also " - "search> dup >search >search ; " - ": forth " - "search> drop " - "forth-wordlist >search ; " - ": only " - "-1 set-order ; " - "hide " - ": list-wid " - "dup wid-get-name " - "?dup if " - "type drop " - "else " - "drop .\" (unnamed wid) \" x. " - "endif cr " - "; " - "set-current " - ": order " - ".\" Search:\" cr " - "get-order 0 ?do 3 spaces list-wid loop cr " - ".\" Compile: \" get-current list-wid cr " - "; " - ": debug ' debug-xt ; immediate " - ": on-step .\" S: \" .s cr ; " - ": strdup " - "0 locals| addr2 length c-addr | end-locals " - "length 1 + allocate " - "0= if " - "to addr2 " - "c-addr addr2 length move " - "addr2 length 0 " - "else " - "0 -1 " - "endif " - "; " - ": strcat " - "0 locals| b-length b-u b-addr a-u a-addr | end-locals " - "b-u to b-length " - "b-addr a-addr a-u + b-length move " - "a-addr a-u b-length + " - "; " - ": strcpy " - "locals| b-u b-addr a-u a-addr | end-locals " - "a-addr 0 b-addr b-u strcat " - "; " - "previous " -/* -** E N D S O F T C O R E . F R -*/ -#if FICL_WANT_LOCALS -/* -** ficl/softwords/jhlocal.fr -** stack comment style local syntax... -*/ - ".( loading Johns-Hopkins locals ) cr " - "hide " - "0 constant zero " - ": ?-- " - "2dup s\" --\" compare 0= ; " - ": ?} " - "2dup s\" }\" compare 0= ; " - ": ?| " - "2dup s\" |\" compare 0= ; " - ": ?2loc " - "over dup c@ [char] 2 = " - "swap 1+ c@ [char] : = and " - "if " - "2 - swap char+ char+ swap " - "true " - "else " - "false " - "endif " - "; " - ": ?delim " - "?| if 2drop 1 exit endif " - "?-- if 2drop 2 exit endif " - "?} if 2drop 3 exit endif " - "dup 0= " - "if 2drop 4 exit endif " - "0 " - "; " - "set-current " - ": { " - "0 dup locals| locstate | " - "begin " - "parse-word " - "?delim dup to locstate " - "0= while " - "rot 1+ " - "repeat " - "0 ?do " - "?2loc if (2local) else (local) endif " - "loop " - "locstate 1 = if " - "begin " - "parse-word " - "?delim dup to locstate " - "0= while " - "?2loc if " - "postpone zero postpone zero (2local) " - "else " - "postpone zero (local) " - "endif " - "repeat " - "endif " - "0 0 (local) " - "locstate 2 = if " - "begin " - "parse-word " - "?delim dup to locstate " - "3 < while " - "locstate 0= if 2drop endif " - "repeat " - "endif " - "locstate 3 <> abort\" syntax error in { } local line\" " - "; immediate compile-only " - "previous " -#endif -/* -** ficl/softwords/marker.fr -** Ficl implementation of CORE EXT MARKER -*/ - ".( loading MARKER ) cr " - ": marker " - "create " - "get-current , " - "get-order dup , " - "0 ?do , loop " - "does> " - "0 set-order " - "dup body> >name drop " - "here - allot " - "dup @ " - "dup set-current forget-wid " - "cell+ dup @ swap " - "over cells + swap " - "0 ?do " - "dup @ dup " - ">search forget-wid " - "cell- " - "loop " - "drop " - "; " -/* -** -** Prefix words for ficl -** submitted by Larry Hastings, larry@hastings.org -** -*/ - "variable save-current " - ": start-prefixes get-current save-current ! <prefixes> set-current ; " - ": end-prefixes save-current @ set-current ; " - ": show-prefixes <prefixes> >search words search> drop ; " -#if (FICL_EXTENDED_PREFIX) - "start-prefixes " - ": \" postpone s\" ; immediate " - ": .( postpone .( ; immediate " -/* -** add 0b, 0o, 0d, and 0x as prefixes -** these temporarily shift the base to 2, 8, 10, and 16 respectively -** and consume the next number in the input stream, pushing/compiling -** as normal -*/ - ": 0b 2 __tempbase ; immediate " - ": 0o 8 __tempbase ; immediate " - "end-prefixes " -#endif -/* -** ficl/softwords/ifbrack.fr -** ANS conditional compile directives [if] [else] [then] -** Requires ficl 2.0 or greater... -*/ - "hide " - ": ?[if] " - "2dup s\" [if]\" compare-insensitive 0= " - "; " - ": ?[else] " - "2dup s\" [else]\" compare-insensitive 0= " - "; " - ": ?[then] " - "2dup s\" [then]\" compare-insensitive 0= >r " - "2dup s\" [endif]\" compare-insensitive 0= r> " - "or " - "; " - "set-current " - ": [else] " - "1 " - "begin " - "begin " - "parse-word dup while " - "?[if] if " - "2drop 1+ " - "else " - "?[else] if " - "2drop 1- dup if 1+ endif " - "else " - "?[then] if 2drop 1- else 2drop endif " - "endif " - "endif ?dup 0= if exit endif " - "repeat 2drop " - "refill 0= until " - "drop " - "; immediate " - ": [if] " - "0= if postpone [else] then ; immediate " - ": [then] ; immediate " - ": [endif] ; immediate " - "previous " -#if FICL_WANT_OOP -/* -** ficl/softwords/oo.fr -** F I C L O - O E X T E N S I O N S -** john sadler aug 1998 -*/ - ".( loading ficl O-O extensions ) cr " - "17 ficl-vocabulary oop " - "also oop definitions " - "user current-class " - "0 current-class ! " -/* -** L A T E B I N D I N G -*/ - ": parse-method " - "parse-word " - "postpone sliteral " - "; compile-only " - ": (lookup-method) { class 2:name -- class 0 | class xt 1 | class xt -1 } " - "class name class cell+ @ " - "search-wordlist " - "; " - ": lookup-method { class 2:name -- class xt } " - "class name (lookup-method) " - "0= if " - "name type .\" not found in \" " - "class body> >name type " - "cr abort " - "endif " - "; " - ": find-method-xt " - "parse-word lookup-method " - "; " - ": catch-method " - "lookup-method catch " - "; " - ": exec-method " - "lookup-method execute " - "; " - ": --> " - "state @ 0= if " - "find-method-xt execute " - "else " - "parse-method postpone exec-method " - "endif " - "; immediate " - ": c-> " - "state @ 0= if " - "find-method-xt catch " - "else " - "parse-method postpone catch-method " - "endif " - "; immediate " - ": method create does> body> >name lookup-method execute ; " -/* -** E A R L Y B I N D I N G -*/ - "1 ficl-named-wordlist instance-vars " - "instance-vars dup >search ficl-set-current " - ": => " - "drop find-method-xt compile, drop " - "; immediate compile-only " - ": my=> " - "current-class @ dup postpone => " - "; immediate compile-only " - ": my=[ " - "current-class @ " - "begin " - "parse-word 2dup " - "s\" ]\" compare while " - "lookup-method " - "dup compile, " - "dup ?object if " - "nip >body cell+ @ " - "else " - "drop " - "endif " - "repeat 2drop drop " - "; immediate compile-only " -/* -** I N S T A N C E V A R I A B L E S -*/ - ": do-instance-var " - "does> " - "nip @ + " - "; " - ": addr-units: " - "create over , + " - "do-instance-var " - "; " - ": chars: " - "chars addr-units: ; " - ": char: " - "1 chars: ; " - ": cells: " - "cells >r aligned r> addr-units: " - "; " - ": cell: " - "1 cells: ; " - ": do-aggregate " - "objectify " - "does> " - "2@ " - "2swap drop " - "+ swap " - "; " - ": obj: { offset class meta -- offset' } " - "create offset , class , " - "class meta --> get-size offset + " - "do-aggregate " - "; " - ": array: " - "locals| meta class nobjs offset | " - "create offset , class , " - "class meta --> get-size nobjs * offset + " - "do-aggregate " - "; " - ": ref: " - "locals| meta class offset | " - "create offset , class , " - "offset cell+ " - "does> " - "2@ " - "2swap drop + @ swap " - "; " -#if FICL_WANT_VCALL - ": vcall: " - "current-class @ 8 + dup @ dup 1+ rot ! " - "create , , " - "does> " - "nip 2@ vcall " - "; " - ": vcallr: 0x80000000 or vcall: ; " -#if FICL_WANT_FLOAT - ": vcallf: " - "0x80000000 or " - "current-class @ 8 + dup @ dup 1+ rot ! " - "create , , " - "does> " - "nip 2@ vcall f> " - "; " -#endif /* FLOAT */ -#endif /* VCALL */ - ": end-class " - "swap ! set-current " - "search> drop " - "; " - ": suspend-class end-class ; " - "set-current previous " - ": do-do-instance " - "s\" : .do-instance does> [ current-class @ ] literal ;\" " - "evaluate " - "; " -/* -** M E T A C L A S S -*/ - ":noname " - "wordlist " - "create " - "immediate " - "0 , " - "dup , " -#if FICL_WANT_VCALL - "4 cells , " -#else - "3 cells , " -#endif - "ficl-set-current " - "does> dup " - "; execute metaclass " - "metaclass drop cell+ @ brand-wordlist " - "metaclass drop current-class ! " - "do-do-instance " - "instance-vars >search " - "create .super " - "0 cells , do-instance-var " - "create .wid " - "1 cells , do-instance-var " -#if FICL_WANT_VCALL - "create .vtCount " - "2 cells , do-instance-var " - "create .size " - "3 cells , do-instance-var " -#else - "create .size " - "2 cells , do-instance-var " -#endif - ": get-size metaclass => .size @ ; " - ": get-wid metaclass => .wid @ ; " - ": get-super metaclass => .super @ ; " -#if FICL_WANT_VCALL - ": get-vtCount metaclass => .vtCount @ ; " - ": get-vtAdd metaclass => .vtCount ; " -#endif - ": instance " - "locals| meta parent | " - "create " - "here parent --> .do-instance " - "parent meta metaclass => get-size " - "allot " - "; " - ": array " - "locals| meta parent nobj | " - "create nobj " - "here parent --> .do-instance " - "parent meta metaclass => get-size " - "nobj * allot " - "; " - ": new " - "metaclass => instance --> init " - "; " - ": new-array " - "metaclass => array " - "--> array-init " - "; " - ": alloc " - "locals| meta class | " - "class meta metaclass => get-size allocate " - "abort\" allocate failed \" " - "class 2dup --> init " - "; " - ": alloc-array " - "locals| meta class nobj | " - "class meta metaclass => get-size " - "nobj * allocate " - "abort\" allocate failed \" " - "nobj over class --> array-init " - "class " - "; " - ": allot { 2:this -- 2:instance } " - "here " - "this my=> get-size allot " - "this drop 2dup --> init " - "; " - ": allot-array { nobj 2:this -- 2:instance } " - "here " - "this my=> get-size nobj * allot " - "this drop 2dup " - "nobj -rot --> array-init " - "; " - ": ref " - "drop create , , " - "does> 2@ " - "; " - ": resume-class { 2:this -- old-wid addr[size] size } " - "this --> .wid @ ficl-set-current " - "this --> .size dup @ " - "instance-vars >search " - "; " - ": sub " - "wordlist " - "locals| wid meta parent | " - "parent meta metaclass => get-wid " - "wid wid-set-super " - "create immediate " - "wid brand-wordlist " - "here current-class ! " - "parent , " - "wid , " -#if FICL_WANT_VCALL - "parent meta --> get-vtCount , " -#endif - "here parent meta --> get-size dup , " - "metaclass => .do-instance " - "wid ficl-set-current -rot " - "do-do-instance " - "instance-vars >search " - "; " - ": offset-of " - "drop find-method-xt nip >body @ ; " - ": id " - "drop body> >name ; " - ": methods " - "locals| meta class | " - "begin " - "class body> >name type .\" methods:\" cr " - "class meta --> get-wid >search words cr previous " - "class meta metaclass => get-super " - "dup to class " - "0= until cr " - "; " - ": pedigree " - "locals| meta class | " - "begin " - "class body> >name type space " - "class meta metaclass => get-super " - "dup to class " - "0= until cr " - "; " - ": see " - "metaclass => get-wid >search see previous ; " - ": debug " - "find-method-xt debug-xt ; " - "previous set-current " -/* -** META is a nickname for the address of METACLASS... -*/ - "metaclass drop " - "constant meta " -/* -** SUBCLASS is a nickname for a class's SUB method... -*/ - ": subclass --> sub ; " -#if FICL_WANT_VCALL - ": hasvtable 4 + ; immediate " -#endif -/* -** O B J E C T -*/ - ":noname " - "wordlist " - "create immediate " - "0 , " - "dup , " - "0 , " - "ficl-set-current " - "does> meta " - "; execute object " - "object drop cell+ @ brand-wordlist " - "object drop current-class ! " - "do-do-instance " - "instance-vars >search " - ": class " - "nip meta ; " - ": init " - "meta " - "metaclass => get-size " - "erase ; " - ": array-init " - "0 dup locals| &init &next class inst | " - "class s\" init\" lookup-method to &init " - "s\" next\" lookup-method to &next " - "drop " - "0 ?do " - "inst class 2dup " - "&init execute " - "&next execute drop to inst " - "loop " - "; " - ": free " - "drop free " - "abort\" free failed \" " - "; " - ": super " - "meta metaclass => get-super ; " - ": pedigree " - "object => class " - "metaclass => pedigree ; " - ": size " - "object => class " - "metaclass => get-size ; " - ": methods " - "object => class " - "metaclass => methods ; " - ": index " - "locals| class inst | " - "inst class " - "object => class " - "metaclass => get-size * " - "inst + class ; " - ": next " - "locals| class inst | " - "inst class " - "object => class " - "metaclass => get-size " - "inst + " - "class ; " - ": prev " - "locals| class inst | " - "inst class " - "object => class " - "metaclass => get-size " - "inst swap - " - "class ; " - ": debug " - "find-method-xt debug-xt ; " - "previous set-current " - "only definitions " - ": oo only also oop definitions ; " -#endif -#if (FICL_WANT_OOP) -/* -** ficl/softwords/classes.fr -** F I C L 2 . 0 C L A S S E S -*/ - ".( loading ficl utility classes ) cr " - "also oop definitions " - "object subclass c-ref " - "cell: .class " - "cell: .instance " - ": get " - "drop 2@ ; " - ": set " - "drop 2! ; " - "end-class " - "object subclass c-byte " - "char: .payload " - ": get drop c@ ; " - ": set drop c! ; " - "end-class " - "object subclass c-2byte " - "2 chars: .payload " - ": get drop w@ ; " - ": set drop w! ; " - "end-class " - "object subclass c-4byte " - "4 chars: .payload " - ": get drop q@ ; " - ": set drop q! ; " - "end-class " - "object subclass c-cell " - "cell: .payload " - ": get drop @ ; " - ": set drop ! ; " - "end-class " -/* -** C - P T R -*/ - "object subclass c-ptr " - "c-cell obj: .addr " - ": get-ptr " - "c-ptr => .addr " - "c-cell => get " - "; " - ": set-ptr " - "c-ptr => .addr " - "c-cell => set " - "; " - ": clr-ptr " - "0 -rot c-ptr => .addr c-cell => set " - "; " - ": ?null " - "c-ptr => get-ptr 0= " - "; " - ": inc-ptr " - "2dup 2dup " - "c-ptr => get-ptr -rot " - "--> @size + -rot " - "c-ptr => set-ptr " - "; " - ": dec-ptr " - "2dup 2dup " - "c-ptr => get-ptr -rot " - "--> @size - -rot " - "c-ptr => set-ptr " - "; " - ": index-ptr { index 2:this -- } " - "this --> get-ptr " - "this --> @size index * + " - "this --> set-ptr " - "; " - "end-class " -/* -** C - C E L L P T R -*/ - "c-ptr subclass c-cellPtr " - ": @size 2drop 1 cells ; " - ": get " - "c-ptr => get-ptr @ " - "; " - ": set " - "c-ptr => get-ptr ! " - "; " - "end-class " -/* -** C - 4 B Y T E P T R -*/ - "c-ptr subclass c-4bytePtr " - ": @size 2drop 4 ; " - ": get " - "c-ptr => get-ptr q@ " - "; " - ": set " - "c-ptr => get-ptr q! " - "; " - "end-class " -/* -** C - 2 B Y T E P T R -*/ - "c-ptr subclass c-2bytePtr " - ": @size 2drop 2 ; " - ": get " - "c-ptr => get-ptr w@ " - "; " - ": set " - "c-ptr => get-ptr w! " - "; " - "end-class " -/* -** C - B Y T E P T R -*/ - "c-ptr subclass c-bytePtr " - ": @size 2drop 1 ; " - ": get " - "c-ptr => get-ptr c@ " - "; " - ": set " - "c-ptr => get-ptr c! " - "; " - "end-class " - "previous definitions " -#endif -#if (FICL_WANT_OOP) -/* -** ficl/softwords/string.fr -*/ -/* -** C - S T R I N G -*/ - ".( loading ficl string class ) cr " - "also oop definitions " - "object subclass c-string " - "c-cell obj: .count " - "c-cell obj: .buflen " - "c-ptr obj: .buf " - "32 constant min-buf " - ": get-count my=[ .count get ] ; " - ": set-count my=[ .count set ] ; " - ": ?empty --> get-count 0= ; " - ": get-buflen my=[ .buflen get ] ; " - ": set-buflen my=[ .buflen set ] ; " - ": get-buf my=[ .buf get-ptr ] ; " - ": set-buf { ptr len 2:this -- } " - "ptr this my=[ .buf set-ptr ] " - "len this my=> set-buflen " - "; " - ": clr-buf " - "0 0 2over my=> set-buf " - "0 -rot my=> set-count " - "; " - ": free-buf { 2:this -- } " - "this my=> get-buf " - "?dup if " - "free " - "abort\" c-string free failed\" " - "this my=> clr-buf " - "endif " - "; " - ": size-buf { size 2:this -- } " - "size 0< abort\" need positive size for size-buf\" " - "size 0= if " - "this --> free-buf exit " - "endif " - "my=> min-buf size over / 1+ * chars to size " - "this --> get-buflen 0= " - "if " - "size allocate " - "abort\" out of memory\" " - "size this --> set-buf " - "size this --> set-buflen " - "exit " - "endif " - "size this --> get-buflen > if " - "this --> get-buf size resize " - "abort\" out of memory\" " - "size this --> set-buf " - "endif " - "; " - ": set { c-addr u 2:this -- } " - "u this --> size-buf " - "u this --> set-count " - "c-addr this --> get-buf u move " - "; " - ": get { 2:this -- c-addr u } " - "this --> get-buf " - "this --> get-count " - "; " - ": cat { c-addr u 2:this -- } " - "this --> get-count u + dup >r " - "this --> size-buf " - "c-addr this --> get-buf this --> get-count + u move " - "r> this --> set-count " - "; " - ": type { 2:this -- } " - "this --> ?empty if .\" (empty) \" exit endif " - "this --> .buf --> get-ptr " - "this --> .count --> get " - "type " - "; " - ": compare " - "--> get " - "2swap " - "--> get " - "2swap compare " - "; " - ": hashcode " - "--> get hash " - "; " - ": free 2dup --> free-buf object => free ; " - "end-class " - "c-string subclass c-hashstring " - "c-2byte obj: .hashcode " - ": set-hashcode { 2:this -- } " - "this --> super --> hashcode " - "this --> .hashcode --> set " - "; " - ": get-hashcode " - "--> .hashcode --> get " - "; " - ": set " - "2swap 2over --> super --> set " - "--> set-hashcode " - "; " - ": cat " - "2swap 2over --> super --> cat " - "--> set-hashcode " - "; " - "end-class " - "previous definitions " -#endif -#if FICL_WANT_FILE -/* -** -** File Access words for ficl -** submitted by Larry Hastings, larry@hastings.org -** -*/ - ": r/o 1 ; " - ": r/w 3 ; " - ": w/o 2 ; " - ": bin 8 or ; " - ": included " - "r/o bin open-file 0= if " - "locals| f | end-locals " - "f include-file " - "else " - "drop " - "endif " - "; " - ": include parse-word included ; " -#endif -#endif /* WANT_SOFTWORDS */ - "quit "; +static size_t ficlSoftcoreUncompressedSize = 25687; /* not including trailing null */ + +#if !FICL_WANT_LZ_SOFTCORE + +static char ficlSoftcoreUncompressed[] = + ": empty ( xn..x1 -- ) depth 0 ?do drop loop ;\n" + ": cell- ( addr -- addr ) [ 1 cells ] literal - ;\n" + ": -rot ( a b c -- c a b ) 2 -roll ;\n" + ": abs ( x -- x )\n" + "dup 0< if negate endif ;\n" + "decimal 32 constant bl\n" + ": space ( -- ) bl emit ;\n" + ": spaces ( n -- ) 0 ?do space loop ;\n" + ": abort\"\n" + "state @ if\n" + "postpone if\n" + "postpone .\"\n" + "postpone cr\n" + "-2\n" + "postpone literal\n" + "postpone throw\n" + "postpone endif\n" + "else\n" + "[char] \" parse\n" + "rot if\n" + "type\n" + "cr\n" + "-2 throw\n" + "else\n" + "2drop\n" + "endif\n" + "endif\n" + "; immediate\n" + ".( loading CORE EXT words ) cr\n" + "0 constant false\n" + "false invert constant true\n" + ": <> = 0= ;\n" + ": 0<> 0= 0= ;\n" + ": compile, , ;\n" + ": convert char+ 65535 >number drop ; \\ cribbed from DPANS A.6.2.0970\n" + ": erase ( addr u -- ) 0 fill ;\n" + "variable span\n" + ": expect ( c-addr u1 -- ) accept span ! ;\n" + ": nip ( y x -- x ) swap drop ;\n" + ": tuck ( y x -- x y x) swap over ;\n" + ": within ( test low high -- flag ) over - >r - r> u< ;\n" + ": ? ( addr -- ) @ . ;\n" + ": dump ( addr u -- )\n" + "0 ?do\n" + "dup c@ . 1+\n" + "i 7 and 7 = if cr endif\n" + "loop drop\n" + ";\n" + ".( loading SEARCH & SEARCH-EXT words ) cr\n" + ": brand-wordlist ( wid -- ) last-word >name drop wid-set-name ;\n" + ": ficl-named-wordlist \\ ( hash-size name -- ) run: ( -- wid )\n" + "ficl-wordlist dup create , brand-wordlist does> @ ;\n" + ": wordlist ( -- )\n" + "1 ficl-wordlist ;\n" + ": ficl-set-current ( wid -- old-wid )\n" + "get-current swap set-current ;\n" + ": do-vocabulary ( -- )\n" + "does> @ search> drop >search ;\n" + ": ficl-vocabulary ( nBuckets name -- )\n" + "ficl-named-wordlist do-vocabulary ;\n" + ": vocabulary ( name -- )\n" + "1 ficl-vocabulary ;\n" + ": previous ( -- ) search> drop ;\n" + "1 ficl-named-wordlist hidden\n" + ": hide hidden dup >search ficl-set-current ;\n" + ": also ( -- )\n" + "search> dup >search >search ;\n" + ": forth ( -- )\n" + "search> drop\n" + "forth-wordlist >search ;\n" + ": only ( -- )\n" + "-1 set-order ;\n" + "hide\n" + ": list-wid ( wid -- )\n" + "dup wid-get-name ( wid c-addr u )\n" + "?dup if\n" + "type drop\n" + "else\n" + "drop .\" (unnamed wid) \" x.\n" + "endif cr\n" + ";\n" + "set-current \\ stop hiding words\n" + ": order ( -- )\n" + ".\" Search:\" cr\n" + "get-order 0 ?do 3 spaces list-wid loop cr\n" + ".\" Compile: \" get-current list-wid cr\n" + ";\n" + ": debug ' debug-xt ; immediate\n" + ": on-step .\" S: \" .s-simple cr ;\n" + "previous \\ lose hidden words from search order\n" + "hide\n" + ": ?[if] ( c-addr u -- c-addr u flag )\n" + "2dup s\" [if]\" compare-insensitive 0=\n" + ";\n" + ": ?[else] ( c-addr u -- c-addr u flag )\n" + "2dup s\" [else]\" compare-insensitive 0=\n" + ";\n" + ": ?[then] ( c-addr u -- c-addr u flag )\n" + "2dup s\" [then]\" compare-insensitive 0= >r\n" + "2dup s\" [endif]\" compare-insensitive 0= r>\n" + "or\n" + ";\n" + "set-current\n" + ": [else] ( -- )\n" + "1 \\ ( level )\n" + "begin\n" + "begin\n" + "parse-word dup while \\ ( level addr len )\n" + "?[if] if \\ ( level addr len )\n" + "2drop 1+ \\ ( level )\n" + "else \\ ( level addr len )\n" + "?[else] if \\ ( level addr len )\n" + "2drop 1- dup if 1+ endif\n" + "else\n" + "?[then] if 2drop 1- else 2drop endif\n" + "endif\n" + "endif ?dup 0= if exit endif \\ level\n" + "repeat 2drop \\ level\n" + "refill 0= until \\ level\n" + "drop\n" + "; immediate\n" + ": [if] ( flag -- )\n" + "0= if postpone [else] then ; immediate\n" + ": [then] ( -- ) ; immediate\n" + ": [endif] ( -- ) ; immediate\n" + "previous\n" + "variable save-current\n" + ": start-prefixes get-current save-current ! <prefixes> set-current ;\n" + ": end-prefixes save-current @ set-current ;\n" + ": show-prefixes <prefixes> >search words search> drop ;\n" + "start-prefixes\n" + "S\" FICL_WANT_EXTENDED_PREFIX\" ENVIRONMENT? drop [if]\n" + ": \" postpone s\" ; immediate\n" + ": .( postpone .( ; immediate\n" + ": \\ postpone \\ ; immediate\n" + ": // postpone \\ ; immediate\n" + ": 0b 2 __tempbase ; immediate\n" + ": 0o 8 __tempbase ; immediate\n" + "[endif]\n" + ": 0d 10 __tempbase ; immediate\n" + ": 0x 16 __tempbase ; immediate\n" + "end-prefixes\n" + "S\" FICL_WANT_USER\" ENVIRONMENT? drop [if]\n" + "variable nUser 0 nUser !\n" + ": user \\ name ( -- )\n" + "nUser dup @ user 1 swap +! ;\n" + "[endif]\n" + "S\" FICL_WANT_LOCALS\" ENVIRONMENT? drop [if]\n" + ": locals| ( name...name | -- )\n" + "begin\n" + "bl word count\n" + "dup 0= abort\" where's the delimiter??\"\n" + "over c@\n" + "[char] | - over 1- or\n" + "while\n" + "(local)\n" + "repeat 2drop 0 0 (local)\n" + "; immediate\n" + ": local ( name -- ) bl word count (local) ; immediate\n" + ": 2local ( name -- ) bl word count (2local) ; immediate\n" + ": end-locals ( -- ) 0 0 (local) ; immediate\n" + ": strdup ( c-addr length -- c-addr2 length2 ior )\n" + "0 locals| addr2 length c-addr | end-locals\n" + "length 1 + allocate\n" + "0= if\n" + "to addr2\n" + "c-addr addr2 length move\n" + "addr2 length 0\n" + "else\n" + "0 -1\n" + "endif\n" + ";\n" + ": strcat ( 2:a 2:b -- 2:new-a )\n" + "0 locals| b-length b-u b-addr a-u a-addr | end-locals\n" + "b-u to b-length\n" + "b-addr a-addr a-u + b-length move\n" + "a-addr a-u b-length +\n" + ";\n" + ": strcpy ( 2:a 2:b -- 2:new-a )\n" + "locals| b-u b-addr a-u a-addr | end-locals\n" + "a-addr 0 b-addr b-u strcat\n" + ";\n" + "[endif]\n" + "S\" FICL_WANT_LOCALS\" ENVIRONMENT? drop [if]\n" + ".( loading Johns-Hopkins locals ) cr\n" + "hide\n" + ": compiled-zero ficlInstruction0 , ;\n" + ": compiled-float-zero ficlInstructionF0 , ;\n" + ": ?-- ( c-addr u -- c-addr u flag )\n" + "2dup s\" --\" compare 0= ;\n" + ": ?} ( c-addr u -- c-addr u flag )\n" + "2dup s\" }\" compare 0= ;\n" + ": ?| ( c-addr u -- c-addr u flag )\n" + "2dup s\" |\" compare 0= ;\n" + "1 constant local-is-double\n" + "2 constant local-is-float\n" + ": parse-local-prefix-flags ( c-addr u -- c-addr u flags )\n" + "0 0 0 locals| stop-loop colon-offset flags u c-addr |\n" + "c-addr c@ [char] : =\n" + "if\n" + "over over 0 exit\n" + "endif\n" + "u 0 do\n" + "c-addr i + c@\n" + "case\n" + "[char] 1 of flags local-is-double invert and to flags endof\n" + "[char] 2 of flags local-is-double or to flags endof\n" + "[char] d of flags local-is-double or to flags endof\n" + "[char] f of flags local-is-float or to flags endof\n" + "[char] i of flags local-is-float invert and to flags endof\n" + "[char] s of flags local-is-double invert and to flags endof\n" + "[char] : of i 1+ to colon-offset 1 to stop-loop endof\n" + "1 to stop-loop\n" + "endcase\n" + "stop-loop if leave endif\n" + "loop\n" + "colon-offset 0=\n" + "colon-offset u =\n" + "or\n" + "if\n" + "c-addr u 0 exit\n" + "endif\n" + "c-addr colon-offset +\n" + "u colon-offset -\n" + "flags\n" + ";\n" + ": ?delim ( c-addr u -- state | c-addr u 0 )\n" + "?| if 2drop 1 exit endif\n" + "?-- if 2drop 2 exit endif\n" + "?} if 2drop 3 exit endif\n" + "dup 0=\n" + "if 2drop 4 exit endif\n" + "0\n" + ";\n" + "set-current\n" + ": {\n" + "0 0 0 locals| flags local-state nLocals |\n" + "begin\n" + "parse-word ?delim dup to local-state\n" + "0= while\n" + "nLocals 1+ to nLocals\n" + "repeat\n" + "nLocals 0 ?do\n" + "parse-local-prefix-flags to flags\n" + "flags local-is-double and if\n" + "flags local-is-float and if (f2local) else (2local) endif\n" + "else\n" + "flags local-is-float and if (flocal) else (local) endif\n" + "endif\n" + "loop \\ ( )\n" + "local-state 1 = if\n" + "begin\n" + "parse-word\n" + "?delim dup to local-state\n" + "0= while\n" + "parse-local-prefix-flags to flags\n" + "flags local-is-double and if\n" + "flags local-is-float and if\n" + "compiled-float-zero compiled-float-zero (f2local)\n" + "else\n" + "compiled-zero compiled-zero (2local)\n" + "endif\n" + "else\n" + "flags local-is-float and if\n" + "compiled-float-zero (flocal)\n" + "else\n" + "compiled-zero (local)\n" + "endif\n" + "endif\n" + "repeat\n" + "endif\n" + "0 0 (local)\n" + "local-state 2 = if\n" + "begin\n" + "parse-word\n" + "?delim dup to local-state\n" + "3 < while\n" + "local-state 0= if 2drop endif\n" + "repeat\n" + "endif\n" + "local-state 3 <> abort\" syntax error in { } local line\"\n" + "; immediate compile-only\n" + "previous\n" + "[endif]\n" + ".( loading MARKER ) cr\n" + ": marker ( \"name\" -- )\n" + "create\n" + "get-current ,\n" + "get-order dup ,\n" + "0 ?do , loop\n" + "does>\n" + "0 set-order \\ clear search order\n" + "dup body> >name drop\n" + "here - allot \\ reset HERE to my xt-addr\n" + "dup @ ( pfa current-wid )\n" + "dup set-current forget-wid ( pfa )\n" + "cell+ dup @ swap ( count count-addr )\n" + "over cells + swap ( last-wid-addr count )\n" + "0 ?do\n" + "dup @ dup ( wid-addr wid wid )\n" + ">search forget-wid ( wid-addr )\n" + "cell-\n" + "loop\n" + "drop\n" + ";\n" + "S\" FICL_WANT_OOP\" ENVIRONMENT? drop [if]\n" + ".( loading ficl O-O extensions ) cr\n" + "17 ficl-vocabulary oop\n" + "also oop definitions\n" + "user current-class\n" + "0 current-class !\n" + ": parse-method \\ name run: ( -- c-addr u )\n" + "parse-word\n" + "postpone sliteral\n" + "; compile-only\n" + ": (lookup-method) { class 2:name -- class 0 | class xt 1 | class xt -1 }\n" + "class name class cell+ @ ( class c-addr u wid )\n" + "search-wordlist\n" + ";\n" + ": lookup-method { class 2:name -- class xt }\n" + "class name (lookup-method) ( 0 | xt 1 | xt -1 )\n" + "0= if\n" + "name type .\" not found in \"\n" + "class body> >name type\n" + "cr abort\n" + "endif\n" + ";\n" + ": find-method-xt \\ name ( class -- class xt )\n" + "parse-word lookup-method\n" + ";\n" + ": catch-method ( instance class c-addr u -- <method-signature> exc-flag )\n" + "lookup-method catch\n" + ";\n" + ": exec-method ( instance class c-addr u -- <method-signature> )\n" + "lookup-method execute\n" + ";\n" + ": --> ( instance class -- ??? )\n" + "state @ 0= if\n" + "find-method-xt execute\n" + "else\n" + "parse-method postpone exec-method\n" + "endif\n" + "; immediate\n" + ": c-> ( instance class -- ?? exc-flag )\n" + "state @ 0= if\n" + "find-method-xt catch\n" + "else\n" + "parse-method postpone catch-method\n" + "endif\n" + "; immediate\n" + ": method create does> body> >name lookup-method execute ;\n" + "1 ficl-named-wordlist instance-vars\n" + "instance-vars dup >search ficl-set-current\n" + ": => \\ c:( class meta -- ) run: ( -- ??? ) invokes compiled method\n" + "drop find-method-xt compile, drop\n" + "; immediate compile-only\n" + ": my=> \\ c:( -- ) run: ( -- ??? ) late bind compiled method of current-class\n" + "current-class @ dup postpone =>\n" + "; immediate compile-only\n" + ": my=[ \\ same as my=> , but binds a chain of methods\n" + "current-class @\n" + "begin\n" + "parse-word 2dup ( class c-addr u c-addr u )\n" + "s\" ]\" compare while ( class c-addr u )\n" + "lookup-method ( class xt )\n" + "dup compile, ( class xt )\n" + "dup ?object if \\ If object member, get new class. Otherwise assume same class\n" + "nip >body cell+ @ ( new-class )\n" + "else\n" + "drop ( class )\n" + "endif\n" + "repeat 2drop drop\n" + "; immediate compile-only\n" + ": do-instance-var\n" + "does> ( instance class addr[offset] -- addr[field] )\n" + "nip @ +\n" + ";\n" + ": addr-units: ( offset size \"name\" -- offset' )\n" + "create over , +\n" + "do-instance-var\n" + ";\n" + ": chars: \\ ( offset nCells \"name\" -- offset' ) Create n char member.\n" + "chars addr-units: ;\n" + ": char: \\ ( offset nCells \"name\" -- offset' ) Create 1 char member.\n" + "1 chars: ;\n" + ": cells: ( offset nCells \"name\" -- offset' )\n" + "cells >r aligned r> addr-units:\n" + ";\n" + ": cell: ( offset nCells \"name\" -- offset' )\n" + "1 cells: ;\n" + ": do-aggregate\n" + "objectify\n" + "does> ( instance class pfa -- a-instance a-class )\n" + "2@ ( inst class a-class a-offset )\n" + "2swap drop ( a-class a-offset inst )\n" + "+ swap ( a-inst a-class )\n" + ";\n" + ": obj: { offset class meta -- offset' } \\ \"name\"\n" + "create offset , class ,\n" + "class meta --> get-size offset +\n" + "do-aggregate\n" + ";\n" + ": array: ( offset n class meta \"name\" -- offset' )\n" + "locals| meta class nobjs offset |\n" + "create offset , class ,\n" + "class meta --> get-size nobjs * offset +\n" + "do-aggregate\n" + ";\n" + ": ref: ( offset class meta \"name\" -- offset' )\n" + "locals| meta class offset |\n" + "create offset , class ,\n" + "offset cell+\n" + "does> ( inst class pfa -- ptr-inst ptr-class )\n" + "2@ ( inst class ptr-class ptr-offset )\n" + "2swap drop + @ swap\n" + ";\n" + "S\" FICL_WANT_VCALL\" ENVIRONMENT? drop [if]\n" + ": vcall: ( paramcnt \"name\" -- )\n" + "current-class @ 8 + dup @ dup 1+ rot ! \\ Kludge fix to get to .vtCount before it's defined.\n" + "create , , \\ ( paramcnt index -- )\n" + "does> \\ ( inst class pfa -- ptr-inst ptr-class )\n" + "nip 2@ vcall \\ ( params offset inst class offset -- )\n" + ";\n" + ": vcallr: 0x80000000 or vcall: ; \\ Call with return address desired.\n" + "S\" FICL_WANT_FLOAT\" ENVIRONMENT? drop [if]\n" + ": vcallf: \\ ( paramcnt -<name>- f: r )\n" + "0x80000000 or\n" + "current-class @ 8 + dup @ dup 1+ rot ! \\ Kludge fix to get to .vtCount before it's defined.\n" + "create , , \\ ( paramcnt index -- )\n" + "does> \\ ( inst class pfa -- ptr-inst ptr-class )\n" + "nip 2@ vcall f> \\ ( params offset inst class offset -- f: r )\n" + ";\n" + "[endif] \\ FICL_WANT_FLOAT\n" + "[endif] \\ FICL_WANT_VCALL\n" + ": end-class ( old-wid addr[size] size -- )\n" + "swap ! set-current\n" + "search> drop \\ pop struct builder wordlist\n" + ";\n" + ": suspend-class ( old-wid addr[size] size -- ) end-class ;\n" + "set-current previous\n" + ": do-do-instance ( -- )\n" + "s\" : .do-instance does> [ current-class @ ] literal ;\"\n" + "evaluate\n" + ";\n" + ":noname\n" + "wordlist\n" + "create\n" + "immediate\n" + "0 , \\ NULL parent class\n" + "dup , \\ wid\n" + "[ S\" FICL_WANT_VCALL\" ENVIRONMENT? drop ] [if]\n" + "4 cells , \\ instance size\n" + "[else]\n" + "3 cells , \\ instance size\n" + "[endif]\n" + "ficl-set-current\n" + "does> dup\n" + "; execute metaclass\n" + "metaclass drop cell+ @ brand-wordlist\n" + "metaclass drop current-class !\n" + "do-do-instance\n" + "instance-vars >search\n" + "create .super ( class metaclass -- parent-class )\n" + "0 cells , do-instance-var\n" + "create .wid ( class metaclass -- wid ) \\ return wid of class\n" + "1 cells , do-instance-var\n" + "S\" FICL_WANT_VCALL\" ENVIRONMENT? drop [if]\n" + "create .vtCount \\ Number of VTABLE methods, if any\n" + "2 cells , do-instance-var\n" + "create .size ( class metaclass -- size ) \\ return class's payload size\n" + "3 cells , do-instance-var\n" + "[else]\n" + "create .size ( class metaclass -- size ) \\ return class's payload size\n" + "2 cells , do-instance-var\n" + "[endif]\n" + ": get-size metaclass => .size @ ;\n" + ": get-wid metaclass => .wid @ ;\n" + ": get-super metaclass => .super @ ;\n" + "S\" FICL_WANT_VCALL\" ENVIRONMENT? drop [if]\n" + ": get-vtCount metaclass => .vtCount @ ;\n" + ": get-vtAdd metaclass => .vtCount ;\n" + "[endif]\n" + ": instance ( class metaclass \"name\" -- instance class )\n" + "locals| meta parent |\n" + "create\n" + "here parent --> .do-instance \\ ( inst class )\n" + "parent meta metaclass => get-size\n" + "allot \\ allocate payload space\n" + ";\n" + ": array ( n class metaclass \"name\" -- n instance class )\n" + "locals| meta parent nobj |\n" + "create nobj\n" + "here parent --> .do-instance \\ ( nobj inst class )\n" + "parent meta metaclass => get-size\n" + "nobj * allot \\ allocate payload space\n" + ";\n" + ": new \\ ( class metaclass \"name\" -- )\n" + "metaclass => instance --> init\n" + ";\n" + ": new-array ( n class metaclass \"name\" -- )\n" + "metaclass => array\n" + "--> array-init\n" + ";\n" + ": alloc \\ ( class metaclass -- instance class )\n" + "locals| meta class |\n" + "class meta metaclass => get-size allocate ( -- addr fail-flag )\n" + "abort\" allocate failed \" ( -- addr )\n" + "class 2dup --> init\n" + ";\n" + ": alloc-array \\ ( n class metaclass -- instance class )\n" + "locals| meta class nobj |\n" + "class meta metaclass => get-size\n" + "nobj * allocate ( -- addr fail-flag )\n" + "abort\" allocate failed \" ( -- addr )\n" + "nobj over class --> array-init\n" + "class\n" + ";\n" + ": allot { 2:this -- 2:instance }\n" + "here ( instance-address )\n" + "this my=> get-size allot\n" + "this drop 2dup --> init\n" + ";\n" + ": allot-array { nobj 2:this -- 2:instance }\n" + "here ( instance-address )\n" + "this my=> get-size nobj * allot\n" + "this drop 2dup ( 2instance 2instance )\n" + "nobj -rot --> array-init\n" + ";\n" + ": ref ( instance-addr class metaclass \"name\" -- )\n" + "drop create , ,\n" + "does> 2@\n" + ";\n" + ": resume-class { 2:this -- old-wid addr[size] size }\n" + "this --> .wid @ ficl-set-current ( old-wid )\n" + "this --> .size dup @ ( old-wid addr[size] size )\n" + "instance-vars >search\n" + ";\n" + ": sub ( class metaclass \"name\" -- old-wid addr[size] size )\n" + "wordlist\n" + "locals| wid meta parent |\n" + "parent meta metaclass => get-wid\n" + "wid wid-set-super \\ set superclass\n" + "create immediate \\ get the subclass name\n" + "wid brand-wordlist \\ label the subclass wordlist\n" + "here current-class ! \\ prep for do-do-instance\n" + "parent , \\ save parent class\n" + "wid , \\ save wid\n" + "[ S\" FICL_WANT_VCALL\" ENVIRONMENT? drop ] [if]\n" + "parent meta --> get-vtCount ,\n" + "[endif]\n" + "here parent meta --> get-size dup , ( addr[size] size )\n" + "metaclass => .do-instance\n" + "wid ficl-set-current -rot\n" + "do-do-instance\n" + "instance-vars >search \\ push struct builder wordlist\n" + ";\n" + ": offset-of ( class metaclass \"name\" -- offset )\n" + "drop find-method-xt nip >body @ ;\n" + ": id ( class metaclass -- c-addr u )\n" + "drop body> >name ;\n" + ": methods \\ ( class meta -- )\n" + "locals| meta class |\n" + "begin\n" + "class body> >name type .\" methods:\" cr\n" + "class meta --> get-wid >search words cr previous\n" + "class meta metaclass => get-super\n" + "dup to class\n" + "0= until cr\n" + ";\n" + ": pedigree ( class meta -- )\n" + "locals| meta class |\n" + "begin\n" + "class body> >name type space\n" + "class meta metaclass => get-super\n" + "dup to class\n" + "0= until cr\n" + ";\n" + ": see ( class meta -- )\n" + "metaclass => get-wid >search see previous ;\n" + ": debug ( class meta -- )\n" + "find-method-xt debug-xt ;\n" + "previous set-current\n" + "metaclass drop\n" + "constant meta\n" + ": subclass --> sub ;\n" + "S\" FICL_WANT_VCALL\" ENVIRONMENT? drop [if]\n" + ": hasvtable 4 + ; immediate\n" + "[endif]\n" + ":noname\n" + "wordlist\n" + "create immediate\n" + "0 , \\ NULL parent class\n" + "dup , \\ wid\n" + "0 , \\ instance size\n" + "[ S\" FICL_WANT_VCALL\" ENVIRONMENT? drop ] [if]\n" + "0 , \\ .vtCount\n" + "[endif]\n" + "ficl-set-current\n" + "does> meta\n" + "; execute object\n" + "object drop cell+ @ brand-wordlist\n" + "object drop current-class !\n" + "do-do-instance\n" + "instance-vars >search\n" + ": class ( instance class -- class metaclass )\n" + "nip meta ;\n" + ": init ( instance class -- )\n" + "meta\n" + "metaclass => get-size ( inst size )\n" + "erase ;\n" + ": array-init ( nobj inst class -- )\n" + "0 dup locals| &init &next class inst |\n" + "class s\" init\" lookup-method to &init\n" + "s\" next\" lookup-method to &next\n" + "drop\n" + "0 ?do\n" + "inst class 2dup\n" + "&init execute\n" + "&next execute drop to inst\n" + "loop\n" + ";\n" + ": free \\ ( instance class -- )\n" + "drop free\n" + "abort\" free failed \"\n" + ";\n" + ": super ( instance class -- instance parent-class )\n" + "meta metaclass => get-super ;\n" + ": pedigree ( instance class -- )\n" + "object => class\n" + "metaclass => pedigree ;\n" + ": size ( instance class -- sizeof-instance )\n" + "object => class\n" + "metaclass => get-size ;\n" + ": methods ( instance class -- )\n" + "object => class\n" + "metaclass => methods ;\n" + ": index ( n instance class -- instance[n] class )\n" + "locals| class inst |\n" + "inst class\n" + "object => class\n" + "metaclass => get-size * ( n*size )\n" + "inst + class ;\n" + ": next ( instance[n] class -- instance[n+1] class )\n" + "locals| class inst |\n" + "inst class\n" + "object => class\n" + "metaclass => get-size\n" + "inst +\n" + "class ;\n" + ": prev ( instance[n] class -- instance[n-1] class )\n" + "locals| class inst |\n" + "inst class\n" + "object => class\n" + "metaclass => get-size\n" + "inst swap -\n" + "class ;\n" + ": debug ( 2this -- ?? )\n" + "find-method-xt debug-xt ;\n" + "previous set-current\n" + "only definitions\n" + ": oo only also oop definitions ;\n" + "[endif]\n" + "S\" FICL_WANT_OOP\" ENVIRONMENT? drop [if]\n" + ".( loading ficl utility classes ) cr\n" + "also oop definitions\n" + "object subclass c-ref\n" + "cell: .class\n" + "cell: .instance\n" + ": get ( inst class -- refinst refclass )\n" + "drop 2@ ;\n" + ": set ( refinst refclass inst class -- )\n" + "drop 2! ;\n" + "end-class\n" + "object subclass c-byte\n" + "char: .payload\n" + ": get drop c@ ;\n" + ": set drop c! ;\n" + "end-class\n" + "object subclass c-2byte\n" + "2 chars: .payload\n" + ": get drop w@ ;\n" + ": set drop w! ;\n" + "end-class\n" + "object subclass c-4byte\n" + "4 chars: .payload\n" + ": get drop q@ ;\n" + ": set drop q! ;\n" + "end-class\n" + "object subclass c-cell\n" + "cell: .payload\n" + ": get drop @ ;\n" + ": set drop ! ;\n" + "end-class\n" + "object subclass c-ptr\n" + "c-cell obj: .addr\n" + ": get-ptr ( inst class -- addr )\n" + "c-ptr => .addr\n" + "c-cell => get\n" + ";\n" + ": set-ptr ( addr inst class -- )\n" + "c-ptr => .addr\n" + "c-cell => set\n" + ";\n" + ": clr-ptr\n" + "0 -rot c-ptr => .addr c-cell => set\n" + ";\n" + ": ?null ( inst class -- flag )\n" + "c-ptr => get-ptr 0=\n" + ";\n" + ": inc-ptr ( inst class -- )\n" + "2dup 2dup ( i c i c i c )\n" + "c-ptr => get-ptr -rot ( i c addr i c )\n" + "--> @size + -rot ( addr' i c )\n" + "c-ptr => set-ptr\n" + ";\n" + ": dec-ptr ( inst class -- )\n" + "2dup 2dup ( i c i c i c )\n" + "c-ptr => get-ptr -rot ( i c addr i c )\n" + "--> @size - -rot ( addr' i c )\n" + "c-ptr => set-ptr\n" + ";\n" + ": index-ptr { index 2:this -- }\n" + "this --> get-ptr ( addr )\n" + "this --> @size index * + ( addr' )\n" + "this --> set-ptr\n" + ";\n" + "end-class\n" + "c-ptr subclass c-cellPtr\n" + ": @size 2drop 1 cells ;\n" + ": get ( inst class -- cell )\n" + "c-ptr => get-ptr @\n" + ";\n" + ": set ( value inst class -- )\n" + "c-ptr => get-ptr !\n" + ";\n" + "end-class\n" + "c-ptr subclass c-4bytePtr\n" + ": @size 2drop 4 ;\n" + ": get ( inst class -- value )\n" + "c-ptr => get-ptr q@\n" + ";\n" + ": set ( value inst class -- )\n" + "c-ptr => get-ptr q!\n" + ";\n" + "end-class\n" + "c-ptr subclass c-2bytePtr\n" + ": @size 2drop 2 ;\n" + ": get ( inst class -- value )\n" + "c-ptr => get-ptr w@\n" + ";\n" + ": set ( value inst class -- )\n" + "c-ptr => get-ptr w!\n" + ";\n" + "end-class\n" + "c-ptr subclass c-bytePtr\n" + ": @size 2drop 1 ;\n" + ": get ( inst class -- value )\n" + "c-ptr => get-ptr c@\n" + ";\n" + ": set ( value inst class -- )\n" + "c-ptr => get-ptr c!\n" + ";\n" + "end-class\n" + "previous definitions\n" + "[endif]\n" + "S\" FICL_WANT_OOP\" ENVIRONMENT? drop [if]\n" + ".( loading ficl string class ) cr\n" + "also oop definitions\n" + "object subclass c-string\n" + "c-cell obj: .count\n" + "c-cell obj: .buflen\n" + "c-ptr obj: .buf\n" + "32 constant min-buf\n" + ": get-count ( 2:this -- count ) my=[ .count get ] ;\n" + ": set-count ( count 2:this -- ) my=[ .count set ] ;\n" + ": ?empty ( 2:this -- flag ) --> get-count 0= ;\n" + ": get-buflen ( 2:this -- len ) my=[ .buflen get ] ;\n" + ": set-buflen ( len 2:this -- ) my=[ .buflen set ] ;\n" + ": get-buf ( 2:this -- ptr ) my=[ .buf get-ptr ] ;\n" + ": set-buf { ptr len 2:this -- }\n" + "ptr this my=[ .buf set-ptr ]\n" + "len this my=> set-buflen\n" + ";\n" + ": clr-buf ( 2:this -- )\n" + "0 0 2over my=> set-buf\n" + "0 -rot my=> set-count\n" + ";\n" + ": free-buf { 2:this -- }\n" + "this my=> get-buf\n" + "?dup if\n" + "free\n" + "abort\" c-string free failed\"\n" + "this my=> clr-buf\n" + "endif\n" + ";\n" + ": size-buf { size 2:this -- }\n" + "size 0< abort\" need positive size for size-buf\"\n" + "size 0= if\n" + "this --> free-buf exit\n" + "endif\n" + "my=> min-buf size over / 1+ * chars to size\n" + "this --> get-buflen 0=\n" + "if\n" + "size allocate\n" + "abort\" out of memory\"\n" + "size this --> set-buf\n" + "size this --> set-buflen\n" + "exit\n" + "endif\n" + "size this --> get-buflen > if\n" + "this --> get-buf size resize\n" + "abort\" out of memory\"\n" + "size this --> set-buf\n" + "endif\n" + ";\n" + ": set { c-addr u 2:this -- }\n" + "u this --> size-buf\n" + "u this --> set-count\n" + "c-addr this --> get-buf u move\n" + ";\n" + ": get { 2:this -- c-addr u }\n" + "this --> get-buf\n" + "this --> get-count\n" + ";\n" + ": cat { c-addr u 2:this -- }\n" + "this --> get-count u + dup >r\n" + "this --> size-buf\n" + "c-addr this --> get-buf this --> get-count + u move\n" + "r> this --> set-count\n" + ";\n" + ": type { 2:this -- }\n" + "this --> ?empty if .\" (empty) \" exit endif\n" + "this --> .buf --> get-ptr\n" + "this --> .count --> get\n" + "type\n" + ";\n" + ": compare ( 2string 2:this -- n )\n" + "--> get\n" + "2swap\n" + "--> get\n" + "2swap compare\n" + ";\n" + ": hashcode ( 2:this -- hashcode )\n" + "--> get hash\n" + ";\n" + ": free ( 2:this -- ) 2dup --> free-buf object => free ;\n" + "end-class\n" + "c-string subclass c-hashstring\n" + "c-2byte obj: .hashcode\n" + ": set-hashcode { 2:this -- }\n" + "this --> super --> hashcode\n" + "this --> .hashcode --> set\n" + ";\n" + ": get-hashcode ( 2:this -- hashcode )\n" + "--> .hashcode --> get\n" + ";\n" + ": set ( c-addr u 2:this -- )\n" + "2swap 2over --> super --> set\n" + "--> set-hashcode\n" + ";\n" + ": cat ( c-addr u 2:this -- )\n" + "2swap 2over --> super --> cat\n" + "--> set-hashcode\n" + ";\n" + "end-class\n" + "previous definitions\n" + "[endif]\n" + "S\" FICL_PLATFORM_OS\" ENVIRONMENT? drop S\" WIN32\" compare-insensitive 0= [if]\n" + ": GetProcAddress ( name-addr name-u hmodule -- address )\n" + "3 \\ argumentCount\n" + "0 \\ floatArgumentBitfield\n" + "2 \\ cstringArgumentBitfield\n" + "(get-proc-address) \\ functionAddress\n" + "[\n" + "multicall-calltype-function multicall-returntype-integer or literal \\ flags\n" + "]\n" + "multicall ;\n" + ": LoadLibrary ( name-addr name-u -- hmodule )\n" + "2 \\ argumentCount\n" + "0 \\ floatArgumentBitfield\n" + "1 \\ cstringArgumentBitfield\n" + "[\n" + "S\" LoadLibraryA\" kernel32.dll GetProcAddress literal \\ functionAddress\n" + "multicall-calltype-function multicall-returntype-integer or literal \\ flags\n" + "]\n" + "multicall ;\n" + ": FreeLibrary ( hmodule -- success )\n" + "1 \\ argumentCount\n" + "0 \\ floatArgumentBitfield\n" + "0 \\ cstringArgumentBitfield\n" + "[\n" + "S\" FreeLibrary\" kernel32.dll GetProcAddress literal \\ functionAddress\n" + "multicall-calltype-function multicall-returntype-integer or literal \\ flags\n" + "]\n" + "multicall ;\n" + ": DebugBreak ( -- )\n" + "0 \\ argumentCount\n" + "0 \\ floatArgumentBitfield\n" + "0 \\ cstringArgumentBitfield\n" + "[\n" + "S\" DebugBreak\" kernel32.dll GetProcAddress literal \\ functionAddress\n" + "multicall-calltype-function multicall-returntype-void or literal \\ flags\n" + "]\n" + "multicall ;\n" + ": OutputDebugString ( addr u -- )\n" + "2 \\ argumentCount\n" + "0 \\ floatArgumentBitfield\n" + "1 \\ cstringArgumentBitfield\n" + "[\n" + "S\" OutputDebugStringA\" kernel32.dll GetProcAddress literal \\ functionAddress\n" + "multicall-calltype-function multicall-returntype-void or literal \\ flags\n" + "]\n" + "multicall ;\n" + ": GetTickCount ( -- ticks )\n" + "0 \\ argumentCount\n" + "0 \\ floatArgumentBitfield\n" + "0 \\ cstringArgumentBitfield\n" + "[\n" + "S\" GetTickCount\" kernel32.dll GetProcAddress literal \\ functionAddress\n" + "multicall-calltype-function multicall-returntype-integer or literal \\ flags\n" + "]\n" + "multicall ;\n" + "S\" user32.dll\" LoadLibrary constant user32.dll\n" + ": MessageBox ( flags title-addr title-u body-addr body-u hwnd -- button )\n" + "6 \\ argumentCount\n" + "0 \\ floatArgumentBitfield\n" + "[\n" + "2 8 or literal \\ cstringArgumentBitfield\n" + "S\" MessageBoxA\" user32.dll GetProcAddress literal \\ functionAddress\n" + "multicall-calltype-function multicall-returntype-integer or literal \\ flags\n" + "]\n" + "multicall ;\n" + "0x00000000 constant MB_OK\n" + "0x00000001 constant MB_OKCANCEL\n" + "0x00000002 constant MB_ABORTRETRYIGNORE\n" + "0x00000003 constant MB_YESNOCANCEL\n" + "0x00000004 constant MB_YESNO\n" + "0x00000005 constant MB_RETRYCANCEL\n" + "0x00000010 constant MB_ICONHAND\n" + "0x00000020 constant MB_ICONQUESTION\n" + "0x00000030 constant MB_ICONEXCLAMATION\n" + "0x00000040 constant MB_ICONASTERISK\n" + "0x00000080 constant MB_USERICON\n" + "0x00000000 constant MB_DEFBUTTON1\n" + "0x00000100 constant MB_DEFBUTTON2\n" + "0x00000200 constant MB_DEFBUTTON3\n" + "0x00000300 constant MB_DEFBUTTON4\n" + "0x00000000 constant MB_APPLMODAL\n" + "0x00001000 constant MB_SYSTEMMODAL\n" + "0x00002000 constant MB_TASKMODAL\n" + "0x00004000 constant MB_HELP\n" + "0x00008000 constant MB_NOFOCUS\n" + "0x00010000 constant MB_SETFOREGROUND\n" + "0x00020000 constant MB_DEFAULT_DESKTOP_ONLY\n" + "0x00040000 constant MB_TOPMOST\n" + "0x00080000 constant MB_RIGHT\n" + "0x00100000 constant MB_RTLREADING\n" + "MB_ICONEXCLAMATION constant MB_ICONWARNING\n" + "MB_ICONHAND constant MB_ICONERROR\n" + "MB_ICONASTERISK constant MB_ICONINFORMATION\n" + "MB_ICONHAND constant MB_ICONSTOP\n" + "0x00200000 constant MB_SERVICE_NOTIFICATION\n" + "0x00040000 constant MB_SERVICE_NOTIFICATION\n" + "0x00040000 constant MB_SERVICE_NOTIFICATION_NT3X\n" + "0x0000000F constant MB_TYPEMASK\n" + "0x000000F0 constant MB_ICONMASK\n" + "0x00000F00 constant MB_DEFMASK\n" + "0x00003000 constant MB_MODEMASK\n" + "0x0000C000 constant MB_MISCMASK\n" + "1 constant IDOK\n" + "2 constant IDCANCEL\n" + "3 constant IDABORT\n" + "4 constant IDRETRY\n" + "5 constant IDIGNORE\n" + "6 constant IDYES\n" + "7 constant IDNO\n" + "8 constant IDCLOSE\n" + "9 constant IDHELP\n" + ": output-debug-string OutputDebugString ;\n" + ": debug-break DebugBreak ;\n" + ": uaddr->cstring { addr u | cstring -- cstring }\n" + "u 1+ allocate\n" + "0= if\n" + "to cstring\n" + "addr cstring u move\n" + "0 cstring u + c!\n" + "cstring\n" + "else\n" + "0\n" + "endif\n" + ";\n" + ": callnativeFunction { functionAddress popStack -- }\n" + "0 \\ floatArgumentBitfield\n" + "0 \\ cstringArgumentBitfield\n" + "functionAddress \\ functionAddress\n" + "[\n" + "multicall-calltype-function\n" + "multicall-returntype-integer or\n" + "multicall-reverse-arguments or\n" + "literal\n" + "]\n" + "multicall\n" + ";\n" + ": callcfunction 1 callnativeFunction ;\n" + ": callpascalfunction 0 callnativeFunction ;\n" + ": vcall { argumentCount index -- }\n" + "argumentCount 0x80000000 invert or \\ cleaned-up argumentCount\n" + "0 \\ cstringArgumentBitfield\n" + "0 \\ cstringFlags\n" + "index \\ index\n" + "argumentCount 0x80000000 and if multicall-returntype-integer else multicall-returntype-void endif\n" + "[\n" + "multicall-calltype-virtual-method\n" + "multicall-reverse-arguments or\n" + "literal\n" + "] or\n" + "multicall\n" + ";\n" + "[endif]\n" + "hide\n" + "0 constant zero\n" + ": ?-- s\" --\" compare 0= ;\n" + ": ?}} s\" }}\" compare 0= ;\n" + "set-current\n" + ": {{\n" + "0 dup locals| nLocs locstate |\n" + "begin\n" + "parse-word\n" + "?dup 0= abort\" Error: out of text without seeing }}\"\n" + "2dup 2dup ?-- -rot ?}} or 0=\n" + "while\n" + "nLocs 1+ to nLocs\n" + "repeat\n" + "?-- if 1 to locstate endif\n" + "nLocs 0 do\n" + "(local)\n" + "loop\n" + "locstate 1 = if\n" + "begin\n" + "parse-word\n" + "2dup ?}} 0=\n" + "while\n" + "postpone zero (local)\n" + "repeat\n" + "2drop\n" + "endif\n" + "0 0 (local)\n" + "; immediate compile-only\n" + "previous\n" + "S\" FICL_WANT_FILE\" ENVIRONMENT? drop [if]\n" + ": r/o 1 ;\n" + ": r/w 3 ;\n" + ": w/o 2 ;\n" + ": bin 8 or ;\n" + ": included\n" + "r/o bin open-file 0= if\n" + "include-file\n" + "else\n" + "drop\n" + "endif\n" + ";\n" + ": include parse-word included ;\n" + "[endif]\n" +; -void ficlCompileSoftCore(FICL_SYSTEM *pSys) +#else /* !FICL_WANT_LZ_SOFTCORE */ + +static unsigned char ficlSoftcoreCompressed[11490] = { + 0xfe, 0x00, 0x01, 0x66, 0xcd, 0xfd, 0x64, 0x57, + 0x1d, 0x08, 0x0c, 0xa6, 0xd3, 0x81, 0xd0, 0xf2, + 0x20, 0x14, 0x08, 0x0f, 0x06, 0xe1, 0x70, 0xb8, + 0xf0, 0x31, 0x10, 0x0b, 0x45, 0xa2, 0x01, 0x48, + 0x80, 0xc8, 0x65, 0x80, 0x20, 0x1a, 0x04, 0x03, + 0x01, 0x00, 0xfc, 0xc8, 0x6f, 0x80, 0xa8, 0x1c, + 0x8d, 0xe7, 0x01, 0x01, 0xb0, 0xdf, 0x02, 0x40, + 0x9d, 0x82, 0xa0, 0x00, 0x06, 0x33, 0x29, 0xb0, + 0xd9, 0x01, 0x20, 0x14, 0x08, 0x0c, 0x26, 0x48, + 0x11, 0x00, 0x82, 0x02, 0x21, 0x61, 0x81, 0xc8, + 0x8a, 0x44, 0x05, 0xb1, 0x04, 0x03, 0xc0, 0xc7, + 0x03, 0x10, 0xb9, 0x88, 0x0b, 0xb0, 0x26, 0x03, + 0x49, 0xd0, 0xca, 0x72, 0x30, 0x9b, 0x20, 0x20, + 0x02, 0x08, 0x16, 0x08, 0xb6, 0x04, 0x60, 0x74, + 0x81, 0xa8, 0x88, 0x0c, 0x50, 0x2f, 0x01, 0x04, + 0x04, 0x42, 0xc7, 0x06, 0x71, 0x94, 0x88, 0x06, + 0x50, 0x60, 0x13, 0x64, 0x16, 0x40, 0x77, 0x02, + 0xd0, 0xb0, 0x98, 0xa0, 0x9e, 0x02, 0x88, 0x04, + 0x80, 0x82, 0x02, 0x21, 0x78, 0x80, 0x98, 0x02, + 0x8c, 0x87, 0x58, 0x12, 0x80, 0xc0, 0x78, 0x20, + 0x34, 0x99, 0x84, 0x06, 0xe3, 0x29, 0x9c, 0xc3, + 0x05, 0x50, 0x10, 0x19, 0x4d, 0xc6, 0x48, 0x4d, + 0x84, 0xee, 0x12, 0x60, 0x65, 0x31, 0x9a, 0x4d, + 0xb0, 0x58, 0x09, 0x9c, 0x1e, 0x40, 0xc6, 0x6f, + 0x37, 0x1c, 0xce, 0x86, 0x13, 0x74, 0x19, 0x00, + 0xc4, 0x6c, 0x81, 0x68, 0x5c, 0xce, 0x06, 0x18, + 0x18, 0x00, 0x82, 0x01, 0x00, 0x2d, 0x80, 0x90, + 0x98, 0xa0, 0xb2, 0x06, 0x53, 0x6c, 0x15, 0x00, + 0x41, 0x02, 0xc1, 0x39, 0xc3, 0x1c, 0x4e, 0x70, + 0x07, 0x0b, 0x74, 0x04, 0x08, 0x61, 0x01, 0xd1, + 0xb9, 0xc3, 0x1c, 0x6d, 0x90, 0x28, 0x33, 0x09, + 0x88, 0xde, 0x72, 0x3a, 0x08, 0x81, 0x50, 0xbb, + 0x0b, 0xa4, 0x28, 0xc0, 0x81, 0x09, 0xa0, 0x85, + 0x1c, 0x0d, 0xf0, 0xbb, 0x03, 0x84, 0x2e, 0x40, + 0xcb, 0x11, 0x25, 0x10, 0x0b, 0xa2, 0x12, 0x07, + 0x08, 0x8b, 0x99, 0x8c, 0xe4, 0x0a, 0x16, 0x8c, + 0xa2, 0x2a, 0x86, 0xc8, 0x2a, 0x10, 0x2a, 0x22, + 0xc7, 0x74, 0x34, 0x40, 0x8c, 0x0e, 0xf1, 0x15, + 0x43, 0x2c, 0x29, 0x84, 0x15, 0x03, 0x10, 0x39, + 0x99, 0x41, 0x45, 0xb3, 0x19, 0xa0, 0xc2, 0x72, + 0x82, 0x88, 0x08, 0x84, 0x10, 0xc7, 0x03, 0x94, + 0x5b, 0x82, 0xe5, 0x06, 0x30, 0xb4, 0xc4, 0x50, + 0x0e, 0x87, 0x93, 0x84, 0x5b, 0xc0, 0xc7, 0x13, + 0x81, 0x10, 0x45, 0x5c, 0x8c, 0xb1, 0x6d, 0x11, + 0x94, 0x08, 0x84, 0x15, 0x16, 0x62, 0xb7, 0x45, + 0xa0, 0x47, 0x70, 0x9a, 0x03, 0x69, 0xb4, 0xcb, + 0x0a, 0x70, 0x30, 0xc1, 0x54, 0x01, 0x42, 0xe8, + 0x04, 0x01, 0xb0, 0xdf, 0x03, 0x80, 0x34, 0x9b, + 0x8c, 0xe2, 0x02, 0x19, 0x3c, 0xa4, 0x45, 0x10, + 0x11, 0x4b, 0x05, 0x41, 0x01, 0xde, 0x20, 0xc0, + 0x64, 0x82, 0x78, 0x0a, 0x62, 0x6c, 0x23, 0x08, + 0x5b, 0xa1, 0x9a, 0x0b, 0x00, 0x73, 0x8b, 0x78, + 0x19, 0xa3, 0xcc, 0x22, 0x08, 0xe1, 0x01, 0xda, + 0x0a, 0xc0, 0x74, 0x85, 0xba, 0x1d, 0x0e, 0x47, + 0x58, 0xb7, 0x80, 0xe8, 0x40, 0x3c, 0x1f, 0x08, + 0x07, 0xb0, 0x1b, 0x01, 0xec, 0x0a, 0xc6, 0x61, + 0x20, 0x80, 0x98, 0x48, 0x2c, 0xec, 0x66, 0xf8, + 0x01, 0x81, 0xa4, 0xd8, 0x65, 0x16, 0x08, 0x24, + 0x52, 0x03, 0xb9, 0x0f, 0x8d, 0xba, 0x3e, 0x64, + 0x68, 0x8b, 0xa0, 0x0a, 0xc4, 0x03, 0x61, 0xa8, + 0xd4, 0x66, 0x35, 0x10, 0x0f, 0x8d, 0xc7, 0x53, + 0x69, 0x8a, 0x0a, 0xc0, 0x20, 0x81, 0x10, 0xce, + 0xc4, 0x05, 0xc8, 0x9b, 0x05, 0xa4, 0xc5, 0x24, + 0x90, 0x32, 0x47, 0x90, 0x0e, 0x52, 0x23, 0x01, + 0x01, 0x10, 0xa0, 0x41, 0x27, 0x14, 0xc4, 0x04, + 0x11, 0x70, 0xd8, 0x5c, 0x32, 0x17, 0x0c, 0x07, + 0x23, 0x71, 0x84, 0x0b, 0x42, 0xcb, 0x05, 0x70, + 0x39, 0xc3, 0x28, 0x4c, 0x30, 0x39, 0x13, 0xac, + 0x3a, 0x4c, 0xcd, 0x22, 0x60, 0x36, 0x40, 0xac, + 0x2e, 0xd1, 0x74, 0x03, 0x4c, 0x21, 0x40, 0xd9, + 0x0a, 0x30, 0x39, 0xc3, 0x1c, 0x0d, 0xd2, 0x73, + 0x13, 0xc4, 0x62, 0x40, 0xc7, 0x06, 0x41, 0x31, + 0x8b, 0x64, 0xfc, 0x43, 0x18, 0x08, 0x11, 0x84, + 0xc7, 0x03, 0x00, 0x38, 0x41, 0x90, 0x0e, 0x72, + 0x9d, 0x09, 0x00, 0x86, 0x05, 0x63, 0x6e, 0x34, + 0xc0, 0x94, 0x05, 0x02, 0x08, 0x03, 0x01, 0xe2, + 0x11, 0x85, 0x20, 0x39, 0x9d, 0xcc, 0x30, 0x25, + 0x03, 0x24, 0x93, 0x86, 0x15, 0x00, 0x00, 0x3a, + 0x1d, 0x4c, 0x66, 0xb9, 0x68, 0x29, 0xe6, 0x01, + 0x20, 0x29, 0x96, 0xe9, 0x1b, 0xe3, 0xe6, 0x12, + 0x08, 0x16, 0x09, 0xde, 0x0a, 0x80, 0x68, 0x8e, + 0x10, 0x08, 0x20, 0x10, 0x07, 0x48, 0x71, 0x81, + 0xd2, 0x04, 0xc1, 0x77, 0x10, 0x4c, 0x48, 0x0c, + 0xf0, 0x1a, 0x01, 0x6c, 0x04, 0x80, 0xcc, 0x6c, + 0x30, 0xc7, 0x10, 0x05, 0x33, 0x05, 0x21, 0x6c, + 0x91, 0x00, 0xe5, 0x05, 0xa0, 0xb9, 0x48, 0x24, + 0x0e, 0xb0, 0x99, 0x01, 0xdc, 0x0b, 0x42, 0x7f, + 0x03, 0x54, 0x94, 0xc4, 0x40, 0x25, 0xd0, 0x2b, + 0x1b, 0x24, 0x91, 0xc0, 0xe1, 0x27, 0xb6, 0x05, + 0x40, 0x70, 0x61, 0x50, 0x94, 0x13, 0x1c, 0xd5, + 0x04, 0x62, 0x2b, 0x05, 0x1a, 0x44, 0x03, 0x78, + 0x1b, 0x81, 0xba, 0x4b, 0x80, 0x37, 0x90, 0x50, + 0x5a, 0x61, 0x38, 0x06, 0x38, 0x1d, 0x81, 0x96, + 0x2c, 0xe3, 0x6c, 0x81, 0x40, 0x99, 0x23, 0x3e, + 0x23, 0xb8, 0xdd, 0x29, 0x4c, 0x8a, 0x41, 0x29, + 0x10, 0xc9, 0x02, 0x01, 0x34, 0xeb, 0xca, 0x5b, + 0x1c, 0xb6, 0x9d, 0x41, 0xa4, 0x0e, 0x53, 0x85, + 0x09, 0x6c, 0x73, 0xc4, 0xd8, 0x69, 0x98, 0xd0, + 0x4a, 0x26, 0x1c, 0x16, 0x48, 0x08, 0x11, 0xb2, + 0x4f, 0x00, 0x74, 0x9e, 0xb0, 0xc8, 0x24, 0x8a, + 0x06, 0x18, 0xd9, 0x80, 0x82, 0x04, 0x43, 0x77, + 0x9f, 0x18, 0x0b, 0x62, 0xdc, 0x07, 0x41, 0x6c, + 0xfd, 0x86, 0x77, 0x02, 0xd0, 0xb3, 0x1a, 0x4c, + 0x70, 0x33, 0x03, 0x74, 0xfd, 0xc2, 0xc9, 0x3d, + 0x64, 0x2e, 0x40, 0x1c, 0x2d, 0x12, 0x78, 0x03, + 0x45, 0x00, 0xc0, 0xd2, 0x7a, 0x85, 0x18, 0x1b, + 0xa7, 0xee, 0x22, 0xd8, 0x09, 0x09, 0xc8, 0xea, + 0x6e, 0x80, 0x00, 0x0a, 0x20, 0x20, 0x27, 0x79, + 0xf1, 0x84, 0xa6, 0x3d, 0x40, 0x69, 0xa0, 0x98, + 0x5d, 0xe7, 0xb0, 0x66, 0x49, 0xbb, 0x09, 0xc8, + 0xcb, 0x0a, 0x11, 0x16, 0x4f, 0x41, 0xcc, 0x86, + 0xf8, 0x71, 0x80, 0xfa, 0x22, 0x01, 0x3b, 0x98, + 0x60, 0x9b, 0xe7, 0xb2, 0x72, 0xd9, 0xb5, 0x88, + 0xc6, 0x82, 0x04, 0x77, 0x9e, 0xc1, 0x8e, 0xe8, + 0x1c, 0x67, 0x3a, 0x02, 0x85, 0x8c, 0xea, 0x72, + 0xa3, 0x00, 0x1b, 0xa7, 0xbc, 0x96, 0xf3, 0x64, + 0xf5, 0x42, 0xd3, 0x44, 0x91, 0x33, 0xd2, 0xb5, + 0x2e, 0x72, 0xdf, 0x13, 0x9d, 0x2b, 0x52, 0x77, + 0x35, 0x91, 0x37, 0x8b, 0x4e, 0xc6, 0xf3, 0x1c, + 0x21, 0x40, 0xeb, 0x32, 0xa0, 0x39, 0x40, 0x18, + 0x45, 0xb3, 0x6b, 0x13, 0x25, 0x1e, 0x0a, 0xe7, + 0x46, 0x10, 0x39, 0x45, 0xc8, 0x07, 0xd0, 0x21, + 0x21, 0xf5, 0x42, 0x48, 0x41, 0x40, 0xd3, 0xbb, + 0x53, 0xc1, 0x4d, 0xc4, 0x29, 0x76, 0x85, 0x94, + 0xe9, 0x04, 0xf0, 0x37, 0x50, 0xd0, 0xc1, 0x54, + 0x11, 0x93, 0x25, 0x3b, 0x56, 0x77, 0x02, 0xd0, + 0xbb, 0x54, 0xa1, 0x6c, 0x35, 0x3f, 0x31, 0x8d, + 0x48, 0x5e, 0x77, 0x02, 0xd0, 0xb8, 0x51, 0x80, + 0x0e, 0xc6, 0x93, 0x79, 0xd6, 0x10, 0xe2, 0x2d, + 0x80, 0x90, 0x9c, 0xea, 0x14, 0xa3, 0xba, 0x49, + 0x19, 0xba, 0x82, 0xec, 0x68, 0x9f, 0x18, 0x19, + 0x21, 0x4a, 0x00, 0xa8, 0x00, 0x01, 0xa2, 0x7c, + 0x60, 0x65, 0xae, 0x71, 0x48, 0x21, 0x28, 0x23, + 0xea, 0x8b, 0x95, 0x9a, 0x95, 0x0e, 0x3b, 0x84, + 0x10, 0x9b, 0x0e, 0x70, 0x20, 0x01, 0x44, 0xda, + 0x48, 0xe7, 0x50, 0xa3, 0x3a, 0xd4, 0x51, 0x07, + 0xd5, 0x17, 0x53, 0x7c, 0x41, 0xc0, 0xd1, 0x60, + 0x97, 0xb9, 0x46, 0x80, 0x2c, 0xd6, 0x32, 0x11, + 0x6c, 0xf5, 0xce, 0x7d, 0x51, 0x74, 0xb7, 0x9b, + 0x8d, 0x94, 0xf8, 0x39, 0x6c, 0x03, 0xc0, 0xe7, + 0x40, 0x50, 0xb7, 0xc7, 0x44, 0x0c, 0xb3, 0x09, + 0x13, 0x45, 0x76, 0x42, 0x15, 0x00, 0x00, 0x36, + 0x4f, 0x70, 0x25, 0xb3, 0xe2, 0x11, 0x44, 0xf8, + 0x4e, 0x15, 0x09, 0x41, 0x3b, 0xd0, 0x04, 0x2c, + 0xf4, 0x05, 0x31, 0x44, 0xf8, 0x46, 0xc7, 0x2a, + 0xd2, 0x90, 0x42, 0x48, 0x07, 0xf0, 0x94, 0x13, + 0x4c, 0x61, 0x48, 0x41, 0x19, 0xe2, 0x36, 0x45, + 0xb8, 0x2c, 0x90, 0x23, 0x11, 0x74, 0x5e, 0x00, + 0x51, 0x43, 0xe0, 0x37, 0x50, 0x5c, 0x44, 0x13, + 0xe2, 0x09, 0x4c, 0x5d, 0xc2, 0xf0, 0x2e, 0x8d, + 0x11, 0x08, 0x22, 0x6e, 0x13, 0xbb, 0x08, 0x05, + 0xd2, 0x95, 0xe7, 0x5c, 0x86, 0x28, 0x1d, 0x20, + 0x48, 0x16, 0x89, 0xf1, 0x81, 0xa6, 0x38, 0x61, + 0x77, 0x8e, 0x80, 0x82, 0xac, 0xc8, 0x17, 0x2b, + 0x3d, 0x88, 0xa2, 0x6d, 0x24, 0x2e, 0x8b, 0xc0, + 0x14, 0xea, 0x14, 0x33, 0xa8, 0xbc, 0x01, 0x8e, + 0x27, 0x00, 0x67, 0xb3, 0xb1, 0xcc, 0x20, 0x3a, + 0x33, 0x38, 0x6f, 0x19, 0xb2, 0xd1, 0x26, 0x6c, + 0x81, 0x40, 0x98, 0xe2, 0x70, 0x02, 0xe8, 0xbc, + 0x01, 0x0e, 0x44, 0x64, 0x3a, 0x8b, 0xb8, 0x59, + 0xe9, 0x5a, 0x96, 0xcb, 0x44, 0x99, 0x8e, 0xde, + 0xe2, 0x3a, 0x80, 0xa8, 0x58, 0x8e, 0xb1, 0xc4, + 0x01, 0x3d, 0xe3, 0x08, 0x5a, 0x78, 0x86, 0xc8, + 0x48, 0x23, 0x62, 0x83, 0xab, 0x32, 0x84, 0xb6, + 0x17, 0x60, 0x65, 0xb6, 0xc0, 0xd4, 0xee, 0xda, + 0x22, 0xe3, 0x9d, 0x0b, 0x42, 0xda, 0x70, 0x94, + 0xc8, 0x58, 0xe6, 0x12, 0x27, 0x0a, 0xcd, 0x99, + 0x72, 0x04, 0xc1, 0x73, 0xae, 0xd9, 0xdd, 0xe3, + 0xa0, 0x36, 0x69, 0x2f, 0x89, 0xce, 0xa3, 0x04, + 0x6f, 0xb3, 0xd0, 0x82, 0xad, 0x02, 0x53, 0xf2, + 0xdc, 0x26, 0xc0, 0xbb, 0x2a, 0x94, 0x90, 0x41, + 0xb8, 0x45, 0xb2, 0x7e, 0x2b, 0x34, 0xca, 0x86, + 0x15, 0x19, 0xd0, 0x3a, 0xd3, 0x68, 0x24, 0x50, + 0x46, 0x03, 0x4e, 0x01, 0x00, 0x45, 0x22, 0x11, + 0xb0, 0xd1, 0x80, 0x05, 0xb1, 0xc2, 0x03, 0x9c, + 0x29, 0x40, 0xe7, 0x05, 0x40, 0x34, 0xc7, 0xcc, + 0x04, 0x12, 0x0d, 0x00, 0x54, 0xd0, 0x86, 0xb7, + 0x16, 0xc1, 0x2e, 0xe0, 0x1b, 0xee, 0xb8, 0x28, + 0x23, 0x2e, 0x14, 0x44, 0x45, 0x83, 0x2e, 0x3a, + 0x1a, 0x21, 0x4a, 0x05, 0xdc, 0x03, 0x7d, 0xd7, + 0x05, 0x04, 0x74, 0xc5, 0x10, 0x88, 0xb0, 0x65, + 0x52, 0x09, 0x9b, 0x80, 0x2b, 0x0e, 0x88, 0x6e, + 0x85, 0x38, 0x57, 0x71, 0xa7, 0x77, 0x21, 0xf0, + 0x2a, 0x20, 0xc0, 0x0a, 0xb7, 0xca, 0xc2, 0xa0, + 0x00, 0x05, 0xbc, 0x28, 0x18, 0xb6, 0x91, 0xe4, + 0x5c, 0x80, 0x38, 0x5b, 0x2b, 0x38, 0x06, 0x58, + 0x2c, 0x80, 0xa4, 0x15, 0x24, 0x90, 0x33, 0xc7, + 0x08, 0x01, 0x59, 0x49, 0x23, 0x84, 0x5e, 0xc4, + 0x5b, 0x3f, 0x01, 0xb2, 0x5a, 0x74, 0x4d, 0x12, + 0x26, 0x09, 0x06, 0x4f, 0x50, 0xc3, 0x03, 0x91, + 0x36, 0x57, 0x84, 0x25, 0x36, 0xbd, 0x02, 0xde, + 0x00, 0xc4, 0xd3, 0x09, 0xc0, 0x2e, 0x65, 0xae, + 0x46, 0x50, 0x22, 0x19, 0x8c, 0x8f, 0x40, 0xb9, + 0x93, 0xe4, 0xb2, 0xc7, 0xb4, 0x4b, 0x99, 0x6b, + 0xa3, 0x2e, 0x14, 0x46, 0xd3, 0x98, 0x6e, 0x16, + 0xd1, 0x68, 0x6d, 0x30, 0x9c, 0x01, 0x8c, 0x8f, + 0x40, 0xcb, 0x16, 0x74, 0x1f, 0xe2, 0x80, 0xad, + 0x30, 0x9c, 0x01, 0x96, 0x7b, 0x4c, 0xcb, 0x1e, + 0xd1, 0x19, 0x40, 0x88, 0x6c, 0xb1, 0xa4, 0x4b, + 0x2c, 0x29, 0x86, 0x7f, 0x09, 0x41, 0x9e, 0xc2, + 0x68, 0x4c, 0xa7, 0x88, 0x6c, 0x05, 0x96, 0x14, + 0xc3, 0x5c, 0xca, 0x01, 0x02, 0xa8, 0xc0, 0x07, + 0x0a, 0x30, 0x84, 0x83, 0x33, 0xa4, 0x5c, 0xd2, + 0x91, 0xd9, 0xa5, 0x1a, 0x23, 0x09, 0x05, 0x81, + 0xd6, 0x17, 0xc0, 0x69, 0x82, 0xc8, 0x17, 0x34, + 0xa4, 0x56, 0x49, 0xcf, 0x8c, 0x82, 0xf4, 0x0a, + 0x5b, 0xc0, 0x19, 0x19, 0xa6, 0x54, 0x22, 0xd9, + 0xb5, 0x8c, 0xf6, 0x13, 0x42, 0x70, 0x88, 0xb9, + 0x96, 0xf0, 0xa0, 0x47, 0x4c, 0x51, 0x04, 0x83, + 0x51, 0x6d, 0x74, 0xc5, 0x11, 0x4b, 0x60, 0x24, + 0x23, 0xbd, 0x46, 0x31, 0x97, 0x1f, 0x23, 0x20, + 0xd6, 0xd4, 0x5c, 0x2b, 0x36, 0x50, 0xa9, 0x49, + 0xa1, 0x86, 0x3e, 0x60, 0x2d, 0xc9, 0x1a, 0x1c, + 0xe1, 0x78, 0x07, 0x29, 0xf7, 0x01, 0xc3, 0x4d, + 0xc2, 0x78, 0x87, 0x18, 0x59, 0xe9, 0x98, 0xa6, + 0x1d, 0x8f, 0x20, 0x82, 0x58, 0xe0, 0x3c, 0xd9, + 0x89, 0x8f, 0xa9, 0xb6, 0xf6, 0x59, 0xea, 0x05, + 0xc3, 0x66, 0x46, 0x73, 0xda, 0x3a, 0x90, 0x29, + 0xb6, 0xf7, 0x33, 0x44, 0x56, 0x80, 0x5b, 0xb3, + 0x13, 0x9e, 0x6d, 0x59, 0x07, 0xd5, 0x17, 0x2b, + 0xbc, 0x74, 0x06, 0xe7, 0x5a, 0xb6, 0x39, 0xec, + 0xb1, 0x61, 0x45, 0x38, 0xbc, 0x01, 0x18, 0x92, + 0x43, 0x26, 0x17, 0xca, 0xf2, 0x65, 0x02, 0xa1, + 0x7e, 0x39, 0x61, 0x45, 0x27, 0x11, 0x08, 0xa4, + 0x42, 0xf9, 0x42, 0x39, 0x00, 0x46, 0x24, 0x96, + 0x22, 0xf0, 0x04, 0x52, 0x71, 0x58, 0x92, 0x52, + 0x27, 0x93, 0x89, 0xbb, 0xf1, 0x02, 0xa4, 0xd1, + 0x80, 0xc9, 0x02, 0x31, 0x2d, 0xe0, 0x0c, 0x21, + 0x57, 0x6d, 0x13, 0x84, 0x45, 0xcc, 0xe7, 0x17, + 0x80, 0x1d, 0xde, 0x7d, 0x65, 0xd0, 0x08, 0x03, + 0x84, 0x48, 0xce, 0x51, 0x79, 0xd6, 0xae, 0x6a, + 0xbd, 0x0b, 0x97, 0x9d, 0x69, 0x78, 0xbf, 0x8a, + 0x58, 0x30, 0x83, 0x50, 0x0c, 0x84, 0x05, 0xf2, + 0xfc, 0x15, 0x40, 0xda, 0x70, 0x31, 0x49, 0xe0, + 0x47, 0x7c, 0x7b, 0x63, 0x78, 0x80, 0x71, 0xc8, + 0xcb, 0x2d, 0xe3, 0xe0, 0x81, 0x52, 0x12, 0x0b, + 0x24, 0x12, 0x00, 0x61, 0xc8, 0xcc, 0xbc, 0x41, + 0x20, 0x06, 0xdc, 0x8c, 0xb3, 0x2e, 0xdc, 0x52, + 0x15, 0xbe, 0x15, 0xaa, 0xce, 0xc0, 0x0a, 0x5b, + 0xfd, 0xbb, 0xb4, 0xa5, 0x0c, 0xdc, 0x55, 0x8b, + 0x70, 0x1c, 0xa0, 0x36, 0x16, 0xee, 0xa4, 0x8c, + 0x86, 0x05, 0xa1, 0x75, 0xea, 0x50, 0x97, 0x28, + 0x64, 0x42, 0x89, 0xb4, 0x91, 0xbb, 0xa9, 0x23, + 0x64, 0x84, 0xa8, 0x50, 0x3a, 0xb2, 0x43, 0x19, + 0x6e, 0x90, 0xae, 0x58, 0xe2, 0x5b, 0xe6, 0x19, + 0x54, 0xf7, 0xc4, 0xa4, 0xc2, 0x79, 0x0c, 0x82, + 0x4c, 0xdf, 0x08, 0x51, 0x78, 0x01, 0x66, 0xca, + 0x78, 0x05, 0xb0, 0xe6, 0x7c, 0xab, 0xb9, 0x4b, + 0xa0, 0x18, 0x06, 0xe9, 0xfb, 0x89, 0xf2, 0x6d, + 0x24, 0x62, 0xca, 0x51, 0x1b, 0x23, 0x9c, 0x32, + 0x08, 0x5c, 0x01, 0xd7, 0x25, 0x01, 0x64, 0xd1, + 0xe9, 0x18, 0x62, 0x0a, 0x32, 0x0c, 0xb2, 0x01, + 0x96, 0x8c, 0x00, 0x27, 0x82, 0x78, 0x1d, 0x31, + 0x44, 0x02, 0x08, 0x0b, 0x01, 0xb2, 0x16, 0x00, + 0x69, 0x82, 0xa8, 0x4f, 0xc7, 0xf1, 0x09, 0x03, + 0x7c, 0xc1, 0xc4, 0xc6, 0x40, 0x8b, 0x81, 0x9f, + 0x20, 0xb4, 0x16, 0xf9, 0x83, 0x88, 0xc6, 0x97, + 0xe1, 0x72, 0x05, 0x65, 0x90, 0x61, 0x42, 0x8e, + 0xe0, 0x0c, 0xa7, 0x4b, 0x0c, 0x30, 0x80, 0xd8, + 0x4a, 0x3c, 0x7a, 0x53, 0xbb, 0xcf, 0xad, 0xb3, + 0xb8, 0x22, 0x20, 0xab, 0xc2, 0x48, 0x3b, 0xc6, + 0xb2, 0x0f, 0x1e, 0x14, 0x82, 0xf3, 0xcc, 0x32, + 0xf3, 0x5f, 0xcc, 0xbd, 0x19, 0x36, 0x59, 0xea, + 0x05, 0xb3, 0xb8, 0x23, 0x20, 0x86, 0x61, 0x4c, + 0x3c, 0xa4, 0x82, 0x0b, 0xcf, 0x31, 0xce, 0x40, + 0x20, 0x64, 0x84, 0xa8, 0x4a, 0x25, 0x56, 0x66, + 0xc8, 0x52, 0x81, 0x9e, 0x03, 0x21, 0x2d, 0xc0, + 0x99, 0x8c, 0xbe, 0x28, 0x53, 0x28, 0x4d, 0x01, + 0xbe, 0x08, 0x61, 0x0a, 0x80, 0xe0, 0x1b, 0x3b, + 0x82, 0x56, 0x1f, 0x91, 0x24, 0x82, 0x55, 0x85, + 0x7c, 0xf6, 0xc2, 0x42, 0xbe, 0x2a, 0x53, 0x1e, + 0xc2, 0x00, 0x82, 0x0b, 0x00, 0x6c, 0xa7, 0x80, + 0x5d, 0x22, 0xde, 0x03, 0x09, 0xc5, 0x88, 0x2a, + 0xe1, 0x40, 0x20, 0xf9, 0x08, 0xc2, 0xa5, 0x58, + 0x56, 0x1f, 0xa0, 0x29, 0xb6, 0x60, 0xc1, 0x0a, + 0xf9, 0xfa, 0xcc, 0x22, 0xd6, 0x43, 0x08, 0x08, + 0x00, 0xc6, 0x35, 0x06, 0x0a, 0xf8, 0x18, 0xd8, + 0xf4, 0xba, 0x12, 0x88, 0x3c, 0x00, 0xea, 0x0d, + 0x00, 0x32, 0x1d, 0x41, 0xa8, 0x05, 0xb0, 0x12, + 0x01, 0x90, 0xea, 0x13, 0xc0, 0x77, 0x95, 0x68, + 0x08, 0x3e, 0x66, 0xa6, 0x2f, 0x6e, 0x01, 0x97, + 0xe2, 0xe3, 0x62, 0x16, 0xca, 0x0c, 0x0c, 0x5f, + 0x84, 0x29, 0x6c, 0xa0, 0xc0, 0xc3, 0xf4, 0xd8, + 0xb1, 0x7f, 0x74, 0x2e, 0x90, 0x08, 0x03, 0x17, + 0xf3, 0x4a, 0x15, 0xfd, 0x13, 0xb0, 0xff, 0x28, + 0xc5, 0x7f, 0xb0, 0x43, 0x6f, 0xd5, 0xc6, 0x5b, + 0xfa, 0xf3, 0xb1, 0x7e, 0x5c, 0xc5, 0x7f, 0x60, + 0x3b, 0x85, 0x25, 0x04, 0x65, 0xf6, 0x09, 0x36, + 0x7d, 0x88, 0xee, 0xbf, 0x6b, 0xf3, 0x0c, 0x81, + 0x08, 0x61, 0xf4, 0x33, 0x31, 0x7c, 0xe0, 0x2e, + 0x7f, 0x03, 0x18, 0x57, 0x31, 0x7e, 0xad, 0xb1, + 0xd9, 0x17, 0x43, 0x09, 0x09, 0x46, 0xf3, 0x44, + 0x35, 0xc0, 0x5a, 0x48, 0x84, 0xa8, 0x1a, 0xee, + 0x5a, 0x12, 0x0e, 0xe5, 0x94, 0xa6, 0x03, 0x82, + 0x68, 0xab, 0x19, 0x18, 0xe1, 0xfa, 0x46, 0x41, + 0x6c, 0xc0, 0x80, 0xe5, 0x4d, 0x70, 0x33, 0x4b, + 0x78, 0x29, 0x30, 0xa6, 0x0b, 0x94, 0x6c, 0x40, + 0xe9, 0x45, 0xf0, 0x37, 0x42, 0x60, 0x05, 0x90, + 0xd8, 0x53, 0x20, 0xb6, 0x3a, 0xc0, 0x6f, 0x83, + 0x08, 0x0b, 0x7f, 0xab, 0x24, 0x6f, 0xea, 0x18, + 0xfe, 0x21, 0xc1, 0x28, 0xb4, 0x6f, 0xc8, 0x2d, + 0x1a, 0x12, 0xd1, 0x6d, 0xa3, 0xce, 0x41, 0x06, + 0x12, 0x9f, 0x9f, 0x6c, 0xa3, 0xf7, 0x5b, 0x28, + 0x8d, 0xf7, 0xf8, 0xb0, 0x7c, 0xb0, 0xb7, 0xdd, + 0x6c, 0x2c, 0x37, 0xcf, 0xc5, 0x34, 0xc6, 0x01, + 0x02, 0x73, 0xc7, 0xf8, 0x1b, 0xa1, 0xd6, 0x26, + 0x39, 0xe8, 0x00, 0xb6, 0x34, 0x80, 0x2d, 0x89, + 0xb8, 0x1d, 0x60, 0xb4, 0x10, 0xad, 0x24, 0x81, + 0x8f, 0xfc, 0xaf, 0x66, 0xf7, 0xe8, 0x82, 0xa6, + 0x78, 0x16, 0x1b, 0x7b, 0x89, 0xb3, 0xf9, 0xc3, + 0x70, 0xc6, 0x38, 0xcb, 0x61, 0x70, 0x27, 0x3a, + 0xc8, 0x69, 0xce, 0x1b, 0x23, 0x30, 0xa5, 0x48, + 0x5b, 0x36, 0x48, 0x57, 0x3a, 0x32, 0x84, 0xb6, + 0x96, 0x44, 0x6f, 0x83, 0x68, 0x1b, 0xa7, 0x8a, + 0x06, 0x63, 0x34, 0x53, 0x42, 0x41, 0xfb, 0x62, + 0x3a, 0xf2, 0x24, 0xe1, 0x53, 0xe7, 0x2b, 0x1c, + 0x20, 0x00, 0xb7, 0xb4, 0xa2, 0x1d, 0x42, 0xb0, + 0x01, 0x50, 0xb5, 0x0b, 0x7c, 0x08, 0x84, 0xdf, + 0x01, 0xd1, 0x18, 0x5d, 0x58, 0x61, 0x50, 0x9e, + 0x23, 0xad, 0x11, 0x82, 0xc9, 0x07, 0x30, 0x31, + 0xce, 0xc4, 0x8d, 0x3c, 0x5e, 0x0b, 0x1e, 0xc4, + 0x00, 0xc7, 0x98, 0x30, 0x85, 0x6c, 0x2c, 0xa6, + 0x30, 0x12, 0x03, 0x37, 0xdb, 0x4a, 0xd9, 0xf0, + 0xb6, 0x10, 0x41, 0xd4, 0x0e, 0xd3, 0x42, 0x03, + 0xa4, 0x11, 0xc6, 0xe9, 0xde, 0xe0, 0xb6, 0x7c, + 0xb0, 0x4c, 0xb0, 0x3a, 0x03, 0x7c, 0x12, 0x00, + 0xb7, 0xac, 0xf2, 0x19, 0x7f, 0x13, 0x0d, 0xf0, + 0x1d, 0x03, 0xa7, 0xf3, 0x26, 0xc9, 0xfc, 0xcf, + 0xb6, 0x7e, 0x61, 0xec, 0xdf, 0x5c, 0x8b, 0x37, + 0x5f, 0xc4, 0x41, 0xf9, 0x9b, 0xb4, 0xff, 0x36, + 0xed, 0x3f, 0x2a, 0xf3, 0x9f, 0xbb, 0xbe, 0xc3, + 0xee, 0xeb, 0x9d, 0x7a, 0xc8, 0x4d, 0x35, 0x32, + 0x13, 0xa4, 0x64, 0xc0, 0xc7, 0xe3, 0x75, 0x18, + 0xee, 0x44, 0x4e, 0x7e, 0x1b, 0x3b, 0x2f, 0xae, + 0x06, 0x63, 0xfe, 0xb5, 0x85, 0x49, 0x20, 0x2c, + 0x7e, 0x65, 0x13, 0x9f, 0x7d, 0x0e, 0xd3, 0x23, + 0x90, 0x36, 0x41, 0x30, 0x0e, 0xd0, 0x7f, 0x03, + 0x2d, 0x4f, 0x06, 0xd9, 0xfd, 0xa1, 0x31, 0xf7, + 0x81, 0x46, 0x13, 0x6c, 0x03, 0x1f, 0x74, 0x14, + 0xeb, 0xdf, 0x20, 0xb7, 0xc8, 0x1c, 0x0d, 0x31, + 0xd1, 0x03, 0x1c, 0x6f, 0x8c, 0x61, 0xdf, 0x05, + 0x31, 0xf7, 0x04, 0xad, 0xfd, 0x9c, 0x49, 0x5f, + 0x76, 0x82, 0xc7, 0xd8, 0xb5, 0x16, 0xc0, 0x54, + 0x0d, 0x9d, 0x3f, 0x08, 0x54, 0xc4, 0x86, 0xc9, + 0x8c, 0xe1, 0x10, 0x4b, 0x11, 0x8e, 0x75, 0xda, + 0x03, 0xa6, 0x1f, 0xc4, 0xc7, 0xf9, 0xc4, 0x14, + 0xc5, 0x60, 0x0f, 0x94, 0xa9, 0x49, 0x05, 0x34, + 0x90, 0x15, 0xbf, 0x71, 0x34, 0xd2, 0x3c, 0xc6, + 0x5f, 0xe6, 0x5b, 0xed, 0x1d, 0x90, 0x67, 0xfc, + 0xd5, 0x32, 0x52, 0x28, 0x61, 0x54, 0x59, 0x39, + 0xa7, 0xec, 0x14, 0x61, 0x34, 0xc7, 0xbd, 0xf2, + 0xcd, 0xac, 0xdd, 0x30, 0x4b, 0x9f, 0xd5, 0x06, + 0xdc, 0x4c, 0xc6, 0xc9, 0x1f, 0x26, 0x85, 0x03, + 0xff, 0x8f, 0x11, 0x92, 0x0e, 0xe1, 0x74, 0x88, + 0xe8, 0x1b, 0x3f, 0x96, 0x80, 0xa9, 0x58, 0x85, + 0xde, 0xff, 0x63, 0x6e, 0xfe, 0x11, 0x4c, 0x7c, + 0x50, 0x36, 0xef, 0xda, 0x10, 0x2a, 0x80, 0x44, + 0x0a, 0xfd, 0x29, 0x8c, 0x21, 0xba, 0x20, 0xad, + 0xf9, 0x5d, 0xd3, 0x97, 0xa5, 0x0a, 0xe4, 0x9d, + 0x18, 0x79, 0x34, 0x16, 0x98, 0x0d, 0x81, 0x9b, + 0xa3, 0x52, 0x61, 0xff, 0x20, 0xc8, 0x05, 0x06, + 0x6b, 0xfd, 0x19, 0x96, 0x5c, 0x22, 0x28, 0xff, + 0x91, 0xdb, 0xa6, 0x40, 0x76, 0x6f, 0xe0, 0xed, + 0xb3, 0xf8, 0x4a, 0x6c, 0xfe, 0x1a, 0xdb, 0xbb, + 0x42, 0x62, 0x09, 0x08, 0x08, 0xa7, 0x29, 0x44, + 0x2d, 0xf0, 0xc1, 0x0c, 0x77, 0x3c, 0x02, 0x09, + 0x5f, 0x85, 0x8a, 0x41, 0x2d, 0x0a, 0xf6, 0x3f, + 0xd9, 0x7d, 0xe5, 0xf7, 0x3f, 0x79, 0x7d, 0x9f, + 0xde, 0x55, 0x0a, 0xcb, 0xac, 0x98, 0xf2, 0xc3, + 0x12, 0x8f, 0x65, 0x18, 0x2a, 0x3f, 0xc3, 0x63, + 0xc8, 0xca, 0xd8, 0xf2, 0x16, 0xb2, 0x8f, 0xeb, + 0x1d, 0xbb, 0xd5, 0xdf, 0x20, 0xfb, 0xed, 0x4a, + 0x3d, 0x34, 0x50, 0xaf, 0xc9, 0x44, 0xa3, 0xf4, + 0x2c, 0x6e, 0x8b, 0x48, 0x9c, 0xbb, 0x76, 0x46, + 0x5e, 0x93, 0x10, 0x82, 0xb5, 0x08, 0x6c, 0xea, + 0x12, 0x4c, 0xbc, 0xfd, 0xf2, 0x0e, 0xa2, 0xb4, + 0xce, 0x4c, 0x00, 0x20, 0xa9, 0xf9, 0x1b, 0x39, + 0xf4, 0x93, 0x08, 0x9b, 0x8c, 0xca, 0x22, 0x89, + 0x72, 0xfc, 0x0a, 0x9b, 0x39, 0x9e, 0x93, 0x39, + 0x0f, 0x80, 0xfa, 0x97, 0xe6, 0x73, 0x3c, 0xc4, + 0xdc, 0x0c, 0x33, 0xa7, 0x03, 0x2c, 0x76, 0xc0, + 0xdf, 0x9b, 0xc0, 0xb7, 0x72, 0x44, 0x04, 0x18, + 0x62, 0x03, 0x65, 0x45, 0xc6, 0xd9, 0x48, 0x50, + 0x32, 0xd2, 0xe0, 0x07, 0x71, 0x2b, 0x41, 0x05, + 0xee, 0x4a, 0x5b, 0x14, 0x10, 0x36, 0x1e, 0x63, + 0x22, 0x85, 0xb9, 0xa0, 0x14, 0xba, 0xed, 0xe8, + 0x4d, 0x20, 0x94, 0x89, 0x73, 0x8b, 0x01, 0x05, + 0xdf, 0x46, 0x75, 0x5f, 0x40, 0x30, 0x9c, 0x8d, + 0x73, 0xa4, 0x09, 0x44, 0x9b, 0x00, 0xdd, 0x3b, + 0x40, 0x91, 0x43, 0xc8, 0x8c, 0x70, 0xa0, 0x03, + 0x0c, 0x36, 0x02, 0xcf, 0x17, 0xb4, 0x96, 0x7f, + 0xc8, 0x6d, 0xf1, 0xed, 0x03, 0x2c, 0xe7, 0x08, + 0x59, 0x55, 0x80, 0x9f, 0xe1, 0x6c, 0x04, 0x17, + 0x61, 0x03, 0x66, 0xaf, 0x84, 0xc8, 0x6f, 0x8b, + 0x80, 0x42, 0xa5, 0xc0, 0x07, 0x3f, 0xed, 0x9d, + 0x72, 0x7d, 0xa0, 0x6c, 0x8d, 0xb8, 0x48, 0x23, + 0x64, 0x56, 0xff, 0xe3, 0x08, 0x2a, 0x05, 0x62, + 0x62, 0x37, 0x99, 0x0f, 0x31, 0x9a, 0x0b, 0x74, + 0xd1, 0x44, 0xc9, 0x06, 0x51, 0x34, 0x4f, 0x68, + 0x24, 0x10, 0x7b, 0x03, 0x0d, 0x4f, 0x82, 0xe9, + 0x01, 0xe0, 0xb9, 0x44, 0x04, 0x0c, 0xb0, 0x10, + 0x02, 0x44, 0xba, 0x00, 0x8b, 0x5d, 0x71, 0x36, + 0xd8, 0x80, 0x0f, 0x10, 0xe8, 0x03, 0x0d, 0x31, + 0xc2, 0x15, 0x32, 0x52, 0x14, 0x41, 0x68, 0x0c, + 0xd5, 0x72, 0x03, 0x1c, 0x31, 0xc8, 0x5a, 0x77, + 0xb5, 0xe0, 0x08, 0x20, 0x84, 0x06, 0x4b, 0x98, + 0x89, 0x96, 0x19, 0xc8, 0x66, 0x8a, 0x28, 0x19, + 0xe1, 0x7e, 0x17, 0x7f, 0xf1, 0x84, 0xa3, 0xfa, + 0x23, 0x29, 0xa7, 0xc0, 0x19, 0x69, 0xbe, 0x02, + 0xb9, 0x71, 0x15, 0xce, 0x5d, 0x22, 0x28, 0x9f, + 0x39, 0x58, 0xe6, 0x8e, 0x22, 0xda, 0x33, 0x0c, + 0xa6, 0x6c, 0xe5, 0x65, 0xa5, 0xa0, 0x1c, 0xe9, + 0x5a, 0x17, 0x3f, 0xec, 0x91, 0xb2, 0x39, 0xc0, + 0x74, 0xfc, 0xc0, 0x8b, 0x74, 0x7e, 0x57, 0x58, + 0x36, 0x84, 0xa7, 0xe0, 0x44, 0x0a, 0x94, 0x91, + 0x19, 0x28, 0x42, 0x37, 0x7f, 0xee, 0x99, 0xdf, + 0xed, 0x81, 0x77, 0xfb, 0x40, 0xcf, 0xa1, 0x6a, + 0x56, 0x6f, 0xb8, 0x29, 0xdf, 0xf6, 0xa6, 0x29, + 0xfb, 0x58, 0xcb, 0x73, 0x46, 0x46, 0x4f, 0x7b, + 0x08, 0xee, 0x15, 0xec, 0x4f, 0x27, 0x94, 0x2b, + 0x3d, 0xf6, 0xea, 0xcf, 0x01, 0x9a, 0xb9, 0xa1, + 0x20, 0x27, 0x8b, 0x49, 0xf7, 0x81, 0x0b, 0xa4, + 0x05, 0x00, 0xe7, 0x5c, 0xa0, 0xb9, 0xd6, 0x7c, + 0x86, 0x23, 0x7a, 0xd8, 0x8c, 0xb4, 0xed, 0x23, + 0x90, 0xb1, 0x1d, 0x6c, 0x0a, 0x07, 0x2a, 0x6a, + 0x01, 0xbf, 0x22, 0x41, 0x61, 0x91, 0x68, 0x1b, + 0xff, 0xee, 0x22, 0x09, 0x36, 0x01, 0x9a, 0x47, + 0xc0, 0x69, 0xac, 0xc8, 0x9c, 0xee, 0xa0, 0x07, + 0x39, 0x36, 0x89, 0xd7, 0xd5, 0x44, 0x63, 0xf8, + 0x60, 0x5c, 0xe6, 0xee, 0x16, 0x3f, 0xf8, 0x28, + 0x82, 0x31, 0x02, 0x70, 0xb4, 0x60, 0xdb, 0x6d, + 0xbe, 0x06, 0x8f, 0x1d, 0x00, 0x82, 0x30, 0x05, + 0x72, 0x90, 0x30, 0x0e, 0xa2, 0xf6, 0x46, 0x3a, + 0xc6, 0x18, 0xa7, 0x6a, 0x2a, 0x70, 0x80, 0xa1, + 0xdb, 0x23, 0xfe, 0x26, 0x13, 0x64, 0x91, 0x42, + 0xc7, 0xd5, 0x25, 0x1d, 0x48, 0xb0, 0x4d, 0xe6, + 0xb8, 0xa3, 0x00, 0xb7, 0xf4, 0xe4, 0x29, 0xe8, + 0xb8, 0x58, 0xff, 0x1a, 0x33, 0x29, 0xc9, 0x01, + 0x86, 0x46, 0x04, 0x63, 0xfb, 0xe8, 0xcc, 0x32, + 0x08, 0x26, 0xcf, 0xb9, 0x89, 0xe3, 0x04, 0xc2, + 0x7c, 0xff, 0x9a, 0x0b, 0x62, 0x24, 0x07, 0xd9, + 0x89, 0x81, 0xb3, 0xeb, 0x02, 0x6e, 0x87, 0x58, + 0x98, 0xfe, 0x9a, 0x36, 0x3f, 0x05, 0x0d, 0x02, + 0x50, 0x62, 0x6c, 0xff, 0x80, 0xcb, 0x69, 0xd6, + 0x57, 0x7e, 0xe4, 0x0d, 0xcf, 0xac, 0x83, 0x2d, + 0x89, 0xf8, 0x9b, 0x2b, 0x18, 0x07, 0x49, 0x85, + 0x8d, 0xb3, 0xee, 0xca, 0x20, 0xfb, 0xbd, 0x9e, + 0x22, 0xdc, 0x07, 0xdf, 0xc8, 0xa8, 0xa3, 0xe7, + 0xed, 0x28, 0xfa, 0xa8, 0xde, 0x3e, 0xb6, 0x47, + 0x8f, 0xb0, 0x8c, 0xa6, 0x4c, 0xa5, 0x6e, 0x82, + 0x60, 0x9d, 0x0f, 0x31, 0x2a, 0x01, 0x00, 0xba, + 0x00, 0xc0, 0x6e, 0xe8, 0x68, 0x59, 0xa1, 0x8a, + 0x16, 0x4e, 0x10, 0x88, 0x8b, 0xe7, 0xe5, 0x62, + 0xe6, 0xf2, 0x5d, 0x3f, 0xae, 0x10, 0xa9, 0xe9, + 0x80, 0x82, 0x15, 0xa3, 0x0a, 0x93, 0x22, 0x19, + 0xa1, 0x08, 0x06, 0x4f, 0x3c, 0x14, 0xb7, 0xde, + 0x81, 0x5c, 0xfb, 0xc9, 0x48, 0x3c, 0xaa, 0x42, + 0xdf, 0xac, 0x24, 0xa7, 0x11, 0x8a, 0x6c, 0xf4, + 0xc2, 0x82, 0xa7, 0x4c, 0x36, 0x13, 0xa7, 0xbf, + 0x42, 0xdb, 0xe2, 0xe2, 0x14, 0x56, 0x10, 0x2e, + 0x74, 0x77, 0x0b, 0x1f, 0xaf, 0xce, 0x5b, 0x3b, + 0xa4, 0x1e, 0x7e, 0x44, 0xae, 0x66, 0x93, 0x3c, + 0x26, 0x80, 0xe9, 0x7f, 0xc0, 0x32, 0xed, 0x60, + 0x0c, 0xa7, 0x88, 0x95, 0x81, 0x9a, 0x75, 0x84, + 0x6c, 0xf6, 0x42, 0xd8, 0xff, 0x54, 0x20, 0xa8, + 0xdd, 0x89, 0x94, 0xf0, 0x65, 0x88, 0x38, 0x1b, + 0x7f, 0x43, 0xf2, 0xdf, 0xd0, 0xc8, 0xa7, 0xf5, + 0x4d, 0x65, 0xfd, 0xa0, 0x5d, 0x60, 0x22, 0x13, + 0xb8, 0x07, 0x84, 0xb4, 0x5b, 0xad, 0x90, 0x14, + 0x7d, 0x45, 0xc5, 0xb0, 0x07, 0x01, 0xf8, 0xfe, + 0x4e, 0xe0, 0x29, 0xb1, 0xb0, 0x58, 0x6d, 0xae, + 0x14, 0x0d, 0x43, 0x90, 0x2b, 0xda, 0x6d, 0x65, + 0xfd, 0xc9, 0x59, 0x62, 0x18, 0x27, 0x0e, 0x97, + 0x29, 0xc3, 0xaa, 0xa6, 0x65, 0xfa, 0x52, 0x02, + 0xa1, 0xde, 0x52, 0x08, 0x15, 0xa9, 0x8f, 0xf0, + 0x57, 0x20, 0xf7, 0x62, 0x5c, 0xfe, 0xf5, 0xa6, + 0x3f, 0x6e, 0x8d, 0x97, 0xef, 0x98, 0x63, 0xf3, + 0x32, 0x42, 0xbe, 0xf7, 0x26, 0xdf, 0x4a, 0x15, + 0xcb, 0x4a, 0x42, 0x20, 0xd3, 0xe8, 0xc8, 0x35, + 0x44, 0xa6, 0xcf, 0x61, 0xc8, 0x82, 0x52, 0x02, + 0x66, 0xdf, 0x48, 0x9b, 0xb4, 0x1e, 0x16, 0x4e, + 0x81, 0x9c, 0x83, 0xc0, 0xc6, 0x2d, 0x3b, 0x4a, + 0xa0, 0x21, 0x5f, 0xf2, 0x59, 0x04, 0x74, 0x04, + 0x7d, 0xb3, 0x33, 0x34, 0xee, 0xb4, 0x2e, 0x75, + 0xf9, 0x59, 0xee, 0x53, 0x80, 0xb9, 0x12, 0xe0, + 0x1d, 0x72, 0x68, 0xcd, 0xb2, 0xc0, 0x03, 0x0e, + 0x6d, 0xc6, 0x41, 0xbe, 0x54, 0x1f, 0xf9, 0xa4, + 0x44, 0x13, 0x26, 0x0b, 0x7e, 0x64, 0x40, 0xe7, + 0x10, 0xc3, 0x90, 0x75, 0xdc, 0xac, 0x90, 0xc6, + 0x13, 0x37, 0xb8, 0x1a, 0xdf, 0x0e, 0x81, 0x96, + 0x67, 0x6c, 0x87, 0x79, 0x15, 0xb1, 0xd6, 0x77, + 0x42, 0x7b, 0xf8, 0x03, 0x16, 0xfe, 0x2e, 0x4d, + 0x94, 0xcc, 0x13, 0x17, 0x34, 0x02, 0x41, 0xf8, + 0x96, 0x90, 0x49, 0xf8, 0x2c, 0x7b, 0x0d, 0x5b, + 0x1e, 0xc3, 0xd6, 0x81, 0x56, 0x41, 0xb8, 0x6d, + 0x04, 0xc7, 0xb9, 0x1f, 0x01, 0xdf, 0xde, 0xb6, + 0xb7, 0x63, 0xc0, 0xb9, 0xe4, 0xa4, 0x4c, 0x3e, + 0xfc, 0x0b, 0xcf, 0xba, 0xc2, 0x59, 0x91, 0x30, + 0x3a, 0xc4, 0xb0, 0x0c, 0x5c, 0x55, 0x0b, 0x9c, + 0x8c, 0x80, 0x41, 0x1c, 0x90, 0xb4, 0xe0, 0xf0, + 0x0d, 0xf2, 0x0a, 0x03, 0x6e, 0xb0, 0x46, 0xe7, + 0xf9, 0x27, 0x05, 0x53, 0x79, 0xe6, 0x59, 0xa6, + 0x23, 0x1e, 0xd1, 0x18, 0xc7, 0xa9, 0xa4, 0x39, + 0xc0, 0xf0, 0x0b, 0xb0, 0x3d, 0x43, 0xbd, 0x33, + 0x04, 0x41, 0xb1, 0x47, 0x94, 0xf1, 0x91, 0xa5, + 0x1b, 0xe4, 0x53, 0x24, 0x0c, 0x82, 0xc7, 0xe9, + 0x63, 0x14, 0x7f, 0x99, 0xc7, 0xe6, 0xf3, 0x11, + 0xab, 0x88, 0x20, 0x74, 0x97, 0x88, 0x97, 0x04, + 0x04, 0x98, 0xf8, 0x85, 0x8b, 0xfe, 0x23, 0x6d, + 0x32, 0x9b, 0x68, 0x64, 0x07, 0x2c, 0x02, 0x81, + 0x9e, 0x1a, 0xe1, 0x6e, 0x32, 0x9d, 0xf4, 0xa6, + 0x42, 0xec, 0xbe, 0x01, 0xd3, 0x06, 0xa1, 0x77, + 0x82, 0x18, 0x19, 0x7d, 0xfe, 0x17, 0x33, 0xae, + 0x08, 0x42, 0xe7, 0xa7, 0x63, 0x85, 0x66, 0x60, + 0x0e, 0x18, 0x0c, 0x03, 0x16, 0x01, 0x42, 0x41, + 0xa6, 0xc4, 0x37, 0x7f, 0x14, 0x05, 0xb9, 0xa5, + 0x21, 0x4d, 0x2e, 0x88, 0xc9, 0x33, 0xd1, 0x14, + 0x68, 0x10, 0xa5, 0x36, 0x57, 0x59, 0x04, 0xc8, + 0x08, 0xc9, 0xdf, 0x4e, 0xb2, 0x1b, 0xe1, 0x70, + 0x06, 0xee, 0x9c, 0x20, 0x2b, 0x9d, 0x64, 0x28, + 0xd9, 0x4b, 0x98, 0x60, 0x58, 0x15, 0xb8, 0x0b, + 0x11, 0x76, 0x55, 0x02, 0x61, 0xff, 0x80, 0x99, + 0x8d, 0x32, 0x8e, 0x03, 0x24, 0x0a, 0x00, 0x53, + 0xf5, 0x41, 0xa0, 0x49, 0x88, 0x27, 0x72, 0x79, + 0x0b, 0x0c, 0x00, 0x82, 0x5b, 0x7d, 0x80, 0x34, + 0x9d, 0x0e, 0x79, 0x1c, 0x13, 0x7c, 0x6b, 0x08, + 0xe6, 0x69, 0xa8, 0x50, 0x08, 0x2d, 0x9e, 0x86, + 0xf8, 0xcb, 0x0c, 0x9e, 0xd8, 0xe7, 0x20, 0xbd, + 0xc8, 0xcb, 0x24, 0x40, 0x16, 0x4f, 0xb8, 0xb4, + 0xef, 0x51, 0xe2, 0x68, 0x97, 0xe8, 0x4e, 0xa8, + 0x22, 0x36, 0xf8, 0xae, 0x91, 0xb8, 0x87, 0x78, + 0xe1, 0x91, 0x7e, 0xbe, 0x04, 0x04, 0x3e, 0x12, + 0x11, 0xbb, 0xf9, 0x43, 0x20, 0xf4, 0x41, 0x0b, + 0xa2, 0xec, 0x06, 0x8e, 0x35, 0x89, 0x87, 0xec, + 0xa9, 0x3b, 0xfd, 0x39, 0x4e, 0xbf, 0x51, 0xf6, + 0x5f, 0xd4, 0x28, 0xc7, 0xf5, 0x0c, 0x31, 0xfb, + 0x19, 0x8e, 0xf3, 0xce, 0x26, 0x5b, 0x7c, 0x84, + 0xeb, 0xeb, 0x5f, 0x27, 0xb5, 0x19, 0x5c, 0xec, + 0x5a, 0x07, 0x2b, 0x1e, 0x05, 0xa7, 0x3c, 0x80, + 0x65, 0x80, 0xf8, 0x1c, 0xaa, 0x7a, 0x16, 0x4f, + 0x63, 0x9c, 0x2b, 0xf6, 0x26, 0x3a, 0xf8, 0x67, + 0xc9, 0xe2, 0x60, 0x13, 0x1f, 0xc2, 0x98, 0xef, + 0xc5, 0xe4, 0x61, 0x33, 0x99, 0xe3, 0x22, 0x06, + 0x78, 0xf4, 0x09, 0xbf, 0xae, 0x43, 0x69, 0x33, + 0x54, 0x7c, 0x0c, 0x9e, 0x28, 0xa3, 0x85, 0x79, + 0x42, 0x5b, 0x5b, 0x50, 0x96, 0xe4, 0xe4, 0xec, + 0x3d, 0x9e, 0x39, 0x95, 0x71, 0x04, 0xd3, 0x92, + 0x10, 0x90, 0x77, 0xf0, 0xa5, 0xbf, 0xf8, 0x33, + 0x7c, 0x0b, 0x48, 0x53, 0xfd, 0xd0, 0x39, 0xd7, + 0x98, 0x4c, 0x9d, 0x7a, 0x23, 0x0f, 0xf8, 0x1c, + 0xd3, 0xfc, 0x41, 0x14, 0x82, 0xab, 0xce, 0x76, + 0x1e, 0xca, 0x8c, 0x83, 0xf3, 0xc8, 0x3b, 0x82, + 0x48, 0x5b, 0xf9, 0x9e, 0x03, 0xaa, 0x2c, 0x05, + 0xbe, 0x03, 0xc4, 0x63, 0xd7, 0x82, 0xdb, 0xfb, + 0xb0, 0x57, 0xd9, 0x0a, 0x04, 0x8a, 0x92, 0x23, + 0x0a, 0xee, 0x79, 0x99, 0xa0, 0x00, 0x32, 0xcb, + 0x84, 0x94, 0xb2, 0xe6, 0xc5, 0x6d, 0xd5, 0xb9, + 0x0f, 0xb9, 0x2e, 0x22, 0xde, 0xc5, 0x8d, 0xbf, + 0xaf, 0xe4, 0x2b, 0xed, 0x30, 0x98, 0x7d, 0xd0, + 0x73, 0xbe, 0xab, 0x89, 0xca, 0xd4, 0xc0, 0x79, + 0xf2, 0x8a, 0x88, 0x34, 0xe6, 0x92, 0x2e, 0xaa, + 0x45, 0xb2, 0x09, 0x85, 0x6d, 0xd2, 0x90, 0x98, + 0xed, 0x8c, 0x46, 0xfe, 0x08, 0x81, 0xcf, 0xa3, + 0x66, 0x7c, 0xfb, 0x1f, 0xdd, 0x3e, 0xc6, 0xd6, + 0xef, 0xe0, 0x8c, 0xab, 0xeb, 0x79, 0x72, 0x83, + 0x40, 0x0e, 0xb9, 0x72, 0x86, 0x3f, 0xaf, 0xfd, + 0x87, 0xeb, 0xed, 0x6f, 0xfb, 0x2f, 0x9b, 0xfd, + 0x10, 0x56, 0x5a, 0x09, 0x04, 0x2b, 0x80, 0x6a, + 0x20, 0xee, 0xfa, 0xdc, 0x0e, 0x9c, 0x2b, 0x03, + 0x4f, 0x7d, 0x44, 0xe1, 0xff, 0x70, 0xb1, 0xf7, + 0x7e, 0xae, 0x1f, 0xe4, 0x3b, 0x87, 0xf4, 0x42, + 0xdf, 0xdd, 0xb8, 0x95, 0xce, 0xcc, 0xa1, 0x54, + 0x47, 0x6a, 0xb1, 0x0c, 0x82, 0x4c, 0x26, 0x51, + 0x16, 0xe7, 0x42, 0x03, 0xb4, 0x07, 0x02, 0xd9, + 0x4c, 0xc1, 0x38, 0x40, 0xac, 0x0c, 0x26, 0xd3, + 0x1c, 0xa8, 0x42, 0x45, 0x28, 0x25, 0x3a, 0xe5, + 0xed, 0x87, 0x13, 0x74, 0x0b, 0x24, 0xe5, 0xce, + 0x63, 0x33, 0xa0, 0x39, 0x4b, 0x60, 0x24, 0x32, + 0x9f, 0x0a, 0x59, 0xb0, 0xea, 0x64, 0x92, 0xe0, + 0x08, 0x20, 0x46, 0x12, 0x08, 0x14, 0x85, 0x9e, + 0x59, 0x41, 0x74, 0x81, 0x10, 0x0b, 0x8e, 0xc7, + 0x42, 0x1c, 0xc9, 0xc6, 0xc5, 0x00, 0xa0, 0x37, + 0xca, 0x9c, 0x2d, 0x3b, 0x67, 0x03, 0x9d, 0x05, + 0x88, 0xca, 0x64, 0xde, 0x30, 0x5c, 0xaf, 0xa8, + 0x32, 0xc9, 0x24, 0x05, 0x73, 0xf0, 0x0a, 0x69, + 0x80, 0x40, 0x19, 0x63, 0x2e, 0x02, 0xd9, 0x01, + 0x89, 0x92, 0xf7, 0x03, 0x5c, 0xf6, 0x47, 0xcb, + 0x74, 0x8a, 0x66, 0xed, 0x12, 0x84, 0xca, 0x4c, + 0xe0, 0x76, 0xf9, 0x58, 0x88, 0x3f, 0x54, 0x77, + 0x3d, 0x69, 0x99, 0xa7, 0x91, 0xa8, 0x6f, 0xd6, + 0x09, 0x0b, 0x63, 0x38, 0x23, 0xbf, 0x7c, 0x19, + 0xca, 0x2f, 0x60, 0x30, 0x3c, 0x0e, 0x06, 0x03, + 0x0f, 0xff, 0x00, 0xc3, 0xff, 0x60, 0x20, 0x88, + 0xb8, 0x5d, 0xbd, 0xc4, 0x43, 0xb8, 0xde, 0x85, + 0x0f, 0xf5, 0xa2, 0x77, 0x9a, 0xe8, 0x1a, 0x23, + 0xd4, 0x17, 0x48, 0xbb, 0x01, 0xbb, 0x48, 0xe3, + 0x65, 0x9b, 0xa0, 0x59, 0x23, 0x22, 0x06, 0x98, + 0x1f, 0x01, 0x93, 0x5e, 0xa0, 0x53, 0x96, 0x7a, + 0x91, 0x89, 0x84, 0xf2, 0x09, 0x53, 0xd1, 0x1e, + 0x66, 0xd4, 0x21, 0x1c, 0x3d, 0x0a, 0x62, 0xd1, + 0xe4, 0x41, 0x84, 0x7d, 0x10, 0x80, 0x33, 0x75, + 0x80, 0x24, 0x12, 0x26, 0x0b, 0xc7, 0xdc, 0xd2, + 0x15, 0xe7, 0x3f, 0xb9, 0x79, 0xcf, 0xee, 0xbe, + 0x73, 0xf9, 0x67, 0x9c, 0xfe, 0x51, 0xd3, 0xbf, + 0xb6, 0x79, 0xce, 0x2c, 0xde, 0x38, 0x23, 0x87, + 0x9c, 0x3e, 0x41, 0xf0, 0x42, 0x9d, 0x82, 0x8b, + 0x73, 0x9d, 0x1a, 0xec, 0x10, 0x42, 0x8d, 0xea, + 0x96, 0x05, 0x7f, 0x9a, 0x4a, 0xdd, 0x17, 0x10, + 0x55, 0x06, 0xc2, 0xdd, 0x0e, 0x10, 0x31, 0xc7, + 0x6c, 0x65, 0x10, 0x16, 0x03, 0x65, 0x6a, 0xc2, + 0xd3, 0x06, 0x90, 0x30, 0xe2, 0x70, 0x4e, 0x78, + 0xd6, 0x0a, 0xee, 0x34, 0x08, 0x5b, 0xd2, 0x41, + 0x39, 0xc2, 0x14, 0x44, 0x30, 0x53, 0x50, 0x54, + 0x37, 0x08, 0x7d, 0x12, 0x42, 0x2e, 0x51, 0xf4, + 0x2e, 0x10, 0x34, 0x03, 0xa4, 0x6b, 0x00, 0xc7, + 0x6c, 0x70, 0xba, 0xc7, 0x74, 0x0c, 0x90, 0x6f, + 0x0b, 0xbc, 0x98, 0x14, 0xe7, 0x15, 0x60, 0x38, + 0x7e, 0x47, 0xef, 0x5f, 0x91, 0x21, 0x07, 0xda, + 0x10, 0x77, 0x21, 0x30, 0xba, 0x55, 0x34, 0xc4, + 0x07, 0x08, 0x8c, 0x81, 0xda, 0x1b, 0x00, 0x75, + 0x88, 0x48, 0x0e, 0xaf, 0x9c, 0x26, 0x4b, 0xe5, + 0xa0, 0x82, 0xb7, 0x84, 0x0a, 0xb5, 0x38, 0x4e, + 0xa4, 0xc0, 0x06, 0x4f, 0xf3, 0xa5, 0x92, 0x94, + 0x23, 0x5b, 0x87, 0x63, 0x50, 0x2d, 0x00, 0x02, + 0x08, 0x95, 0x14, 0x80, 0x77, 0x24, 0x00, 0x32, + 0xd3, 0x10, 0x0d, 0x87, 0x5d, 0x37, 0x15, 0xba, + 0x0f, 0x00, 0x61, 0x86, 0xb8, 0x02, 0xa3, 0x46, + 0x76, 0x3a, 0x2c, 0x8c, 0x2a, 0x77, 0x48, 0x30, + 0xe3, 0xd8, 0xd3, 0x8a, 0xbb, 0xd5, 0x01, 0x05, + 0x90, 0x44, 0xdd, 0x96, 0x72, 0x85, 0x52, 0x4c, + 0x45, 0x90, 0xa3, 0x0b, 0xbc, 0x57, 0x00, 0x15, + 0x5a, 0xd0, 0x29, 0xee, 0x9f, 0xee, 0x50, 0x35, + 0x0a, 0xee, 0xe9, 0x48, 0x69, 0x84, 0xa2, 0x10, + 0x70, 0x88, 0x4d, 0x32, 0x36, 0x33, 0x9d, 0xd4, + 0x82, 0x15, 0xe2, 0x80, 0x36, 0x40, 0x78, 0x0b, + 0xa0, 0xa1, 0x9f, 0xf7, 0xf2, 0xdd, 0xe0, 0x71, + 0x05, 0x50, 0x85, 0xec, 0x93, 0xa8, 0x1b, 0x24, + 0x18, 0x80, 0x15, 0x04, 0x90, 0x32, 0xce, 0xf0, + 0xad, 0xb4, 0x1e, 0x0b, 0x1d, 0x33, 0x86, 0xdb, + 0xff, 0x63, 0x10, 0x50, 0xf0, 0x6c, 0x70, 0x8f, + 0x2b, 0x14, 0x06, 0x40, 0xdd, 0x3a, 0x44, 0x05, + 0x7f, 0x69, 0xce, 0xb4, 0x99, 0x51, 0x0d, 0xb6, + 0x44, 0xc9, 0x64, 0x74, 0x05, 0x4e, 0x11, 0x87, + 0xd0, 0x5a, 0x20, 0x54, 0xc6, 0x4a, 0x5d, 0x5a, + 0x60, 0x38, 0x5a, 0x88, 0x25, 0x13, 0x94, 0x4b, + 0x1c, 0x43, 0x0c, 0xe1, 0xeb, 0x91, 0x96, 0xd6, + 0xb0, 0xc6, 0x1e, 0xf2, 0x3b, 0x25, 0x7a, 0x5a, + 0xc7, 0xfb, 0x42, 0xbb, 0xf5, 0x60, 0x25, 0x1f, + 0xb6, 0x93, 0xbf, 0x4f, 0xc2, 0x53, 0x0a, 0xa0, + 0xb9, 0x6e, 0x24, 0x8e, 0xfd, 0x30, 0x0b, 0x7c, + 0xf4, 0xc2, 0xd9, 0x3d, 0xb1, 0x18, 0xfe, 0xa6, + 0xea, 0x79, 0xfb, 0xfb, 0x96, 0x7e, 0xcc, 0xc7, + 0xf3, 0x22, 0xbb, 0x69, 0x48, 0xab, 0x9d, 0xf7, + 0x03, 0xad, 0x2a, 0xc4, 0x41, 0x36, 0xc0, 0xab, + 0x15, 0x08, 0x24, 0x22, 0x61, 0x16, 0x7b, 0x26, + 0x2c, 0xa4, 0x10, 0x98, 0x4d, 0xd3, 0x16, 0x01, + 0x97, 0xcc, 0x7e, 0xe7, 0x56, 0x81, 0x14, 0x7b, + 0x9a, 0x4e, 0x75, 0x4e, 0x11, 0x4f, 0xcb, 0xd0, + 0xc7, 0x02, 0x21, 0x13, 0xdb, 0x3c, 0x2c, 0x27, + 0x98, 0x23, 0x81, 0x86, 0x00, 0xe0, 0x73, 0xee, + 0xe0, 0x8c, 0xfd, 0xa1, 0x75, 0xbe, 0xe1, 0x11, + 0x8f, 0xf3, 0x1f, 0x73, 0xfc, 0xc7, 0xde, 0xa0, + 0x82, 0x03, 0x2f, 0xcc, 0x65, 0xbb, 0xaf, 0x63, + 0x3a, 0xb8, 0x72, 0x1b, 0x7b, 0x3e, 0x73, 0xd8, + 0x07, 0x80, 0xba, 0x90, 0xc3, 0x40, 0xa8, 0x88, + 0xd9, 0xe2, 0xfa, 0x17, 0x7d, 0xcc, 0x05, 0xb7, + 0xfb, 0xeb, 0x77, 0xdc, 0x30, 0x50, 0x3f, 0xc0, + 0x77, 0x3e, 0xea, 0x0d, 0xb7, 0xf7, 0xac, 0x75, + 0xee, 0x00, 0x90, 0x21, 0xf0, 0x15, 0x3c, 0x26, + 0x7d, 0xcb, 0x09, 0x88, 0x67, 0x88, 0x70, 0x5d, + 0xb1, 0x4a, 0x56, 0xdf, 0xb6, 0x2d, 0xdb, 0x11, + 0xe5, 0x40, 0xfb, 0x49, 0xdd, 0x8e, 0x84, 0x19, + 0x2a, 0x80, 0x83, 0xfb, 0x54, 0x3b, 0xf8, 0xda, + 0x5a, 0x77, 0x14, 0x86, 0x3e, 0x99, 0x34, 0x8a, + 0x74, 0x47, 0x69, 0x9a, 0x2b, 0x0a, 0x6c, 0x8e, + 0xc7, 0x0d, 0xe3, 0x11, 0xf3, 0x74, 0x26, 0x68, + 0x93, 0x40, 0x19, 0x77, 0x62, 0x62, 0xda, 0xe3, + 0x04, 0xbb, 0x64, 0x6a, 0x5c, 0xa7, 0xf3, 0x0a, + 0x63, 0x28, 0x26, 0x5f, 0x98, 0x14, 0x83, 0xd2, + 0xeb, 0x67, 0xac, 0x79, 0x42, 0xae, 0xae, 0x16, + 0xfe, 0xb1, 0x09, 0x87, 0xff, 0x01, 0x63, 0x84, + 0x18, 0x9c, 0x3b, 0x9c, 0x67, 0x0d, 0xff, 0x01, + 0x96, 0xb0, 0xc8, 0x20, 0x91, 0x88, 0x48, 0x3e, + 0x77, 0x86, 0xef, 0x9c, 0xfd, 0xcb, 0x4d, 0x02, + 0x6e, 0x8c, 0x80, 0x48, 0x2b, 0x0e, 0x76, 0xe8, + 0xc1, 0x04, 0x2b, 0xe5, 0xff, 0x6e, 0xfe, 0x60, + 0x9a, 0x7e, 0x55, 0xf2, 0x0f, 0x95, 0x29, 0xbb, + 0xf3, 0x02, 0x2a, 0xf9, 0x58, 0xdd, 0x3e, 0x47, + 0xc6, 0xe8, 0x90, 0x85, 0x73, 0xcc, 0x1b, 0x29, + 0xd7, 0xe2, 0x4f, 0x60, 0x18, 0x06, 0x98, 0xcb, + 0x18, 0xb6, 0x89, 0x01, 0x69, 0x8e, 0x38, 0x42, + 0xbf, 0x72, 0x52, 0xdf, 0x6c, 0x7c, 0xb7, 0xf6, + 0x6f, 0x61, 0xa1, 0x58, 0x82, 0xa7, 0xfc, 0x26, + 0x1a, 0x10, 0x88, 0xb7, 0xf6, 0x07, 0x61, 0xf3, + 0x88, 0x88, 0x3e, 0xcf, 0x22, 0xde, 0xe7, 0x79, + 0x8e, 0x00, 0x63, 0x7c, 0x9c, 0xea, 0x9b, 0x7c, + 0x0b, 0x22, 0x0f, 0x06, 0x9c, 0xa2, 0x1b, 0xa6, + 0x20, 0x95, 0x08, 0x1a, 0x73, 0xc6, 0x06, 0x68, + 0x09, 0x01, 0x9e, 0x09, 0xc1, 0x61, 0x81, 0x90, + 0x1c, 0x8e, 0x91, 0x00, 0x03, 0x0f, 0x79, 0xcc, + 0xcd, 0xfe, 0x40, 0xb2, 0xc8, 0x14, 0x04, 0x5f, + 0xd1, 0x49, 0x4c, 0xce, 0x0a, 0x65, 0x54, 0x11, + 0x16, 0xfb, 0xc1, 0x4c, 0x3d, 0xb1, 0x11, 0x6f, + 0x71, 0x88, 0xb9, 0xdc, 0x49, 0x96, 0xfc, 0xe3, + 0xed, 0x93, 0x4d, 0x31, 0x07, 0xcc, 0xfe, 0xcb, + 0xe0, 0xe5, 0x31, 0xfc, 0xb3, 0xec, 0x3f, 0x2c, + 0xdb, 0x77, 0x56, 0xc4, 0xdf, 0x01, 0xd1, 0x31, + 0xe6, 0x1c, 0xa7, 0xde, 0x61, 0x53, 0x1e, 0x0e, + 0xc6, 0x77, 0xe5, 0xb2, 0xba, 0x47, 0xcc, 0x26, + 0x43, 0xaa, 0x9f, 0x81, 0xa7, 0x2b, 0xe3, 0x32, + 0x1d, 0x45, 0x3c, 0xef, 0xbc, 0x55, 0x21, 0x44, + 0x4f, 0x4e, 0x5b, 0x52, 0x43, 0x14, 0x82, 0xbf, + 0xa2, 0x36, 0xd3, 0xcf, 0x9c, 0xdc, 0xe9, 0xfe, + 0x72, 0x32, 0x45, 0x80, 0x46, 0x5e, 0xad, 0x9b, + 0xa7, 0x66, 0xca, 0xf7, 0xcb, 0x62, 0x19, 0x7e, + 0x1f, 0xec, 0x3f, 0x87, 0xfb, 0x77, 0x35, 0x52, + 0x15, 0xf8, 0x06, 0x94, 0x50, 0x20, 0x0d, 0x30, + 0x7f, 0x31, 0x94, 0x1d, 0x4e, 0x53, 0xca, 0x12, + 0x16, 0xcd, 0x64, 0x45, 0xbd, 0x45, 0x83, 0x94, + 0x7f, 0x00, 0x41, 0xf0, 0xa6, 0x90, 0x72, 0x8b, + 0x4c, 0x97, 0xa8, 0x1b, 0x94, 0xd2, 0x0c, 0x15, + 0x00, 0x52, 0x19, 0x10, 0x23, 0x5e, 0x57, 0x3c, + 0x64, 0x81, 0x96, 0x03, 0x85, 0x7b, 0xf4, 0xb2, + 0x5b, 0xea, 0xf5, 0x57, 0xdf, 0x51, 0x90, 0xb7, + 0x5c, 0xa2, 0x77, 0xce, 0xa0, 0xd9, 0xae, 0x1e, + 0xd2, 0x0a, 0x9e, 0xa0, 0xa7, 0xfa, 0x69, 0x73, + 0x84, 0x08, 0x99, 0x24, 0xf2, 0x32, 0x8a, 0x8e, + 0x5c, 0xa6, 0xe8, 0x95, 0x3b, 0xaa, 0x38, 0xd8, + 0xb4, 0x31, 0xb6, 0xff, 0xd6, 0x5d, 0xde, 0xa0, + 0x06, 0x6c, 0x82, 0x69, 0x5d, 0xf2, 0x12, 0x52, + 0x0d, 0x01, 0x1d, 0xc3, 0x46, 0xfa, 0x77, 0xad, + 0xb8, 0x5d, 0xe8, 0xdc, 0x17, 0x7a, 0x35, 0x00, + 0xb6, 0x90, 0xc2, 0x73, 0xb5, 0xf0, 0xd7, 0x28, + 0xf4, 0x22, 0x0b, 0x59, 0x0d, 0x8e, 0xb1, 0x03, + 0x63, 0x80, 0x89, 0x1a, 0x6a, 0xbe, 0x62, 0x08, + 0xcf, 0x01, 0x9e, 0x35, 0x82, 0x68, 0xad, 0xe8, + 0x5d, 0x4c, 0x5c, 0x91, 0x2b, 0x0d, 0x4b, 0x44, + 0xd3, 0x42, 0x20, 0x31, 0x58, 0x7d, 0x64, 0x11, + 0x73, 0x03, 0x66, 0xfc, 0x00, 0xcb, 0x20, 0x10, + 0x3a, 0x7f, 0x4d, 0x4e, 0xf4, 0x48, 0x33, 0x46, + 0x5a, 0xc4, 0xc7, 0x60, 0xb6, 0x10, 0x50, 0x54, + 0x2e, 0x46, 0x58, 0x5b, 0x81, 0x9a, 0x41, 0xc1, + 0x64, 0xb0, 0x03, 0x1c, 0x29, 0xe4, 0x42, 0xcf, + 0xae, 0x89, 0x87, 0x93, 0x00, 0x20, 0xa7, 0x12, + 0xdd, 0xe7, 0x4a, 0x12, 0xcf, 0xf3, 0x19, 0xde, + 0x9b, 0xbf, 0x45, 0xa6, 0xeb, 0x9c, 0x32, 0x1a, + 0x92, 0xdc, 0x6f, 0x85, 0x9f, 0x05, 0x09, 0x2c, + 0xa7, 0xd1, 0xda, 0x31, 0x72, 0x96, 0xdf, 0xea, + 0xa9, 0xcf, 0xbf, 0x26, 0x2c, 0x82, 0x08, 0x58, + 0x7c, 0x02, 0xf6, 0xdb, 0xa9, 0x2d, 0x92, 0xa5, + 0x69, 0x77, 0x97, 0x68, 0x59, 0xbb, 0x2a, 0xe2, + 0xd8, 0x1a, 0x84, 0x2a, 0xa0, 0x5f, 0x72, 0x97, + 0x08, 0x08, 0x25, 0xce, 0x17, 0x53, 0x9c, 0x3e, + 0x40, 0xe7, 0x2e, 0x6c, 0xb7, 0xc2, 0x40, 0x65, + 0xb5, 0x58, 0x09, 0x47, 0x66, 0x74, 0xcd, 0x06, + 0xa1, 0x94, 0xf2, 0xa0, 0x8c, 0xd0, 0x07, 0x09, + 0x6d, 0x65, 0xc8, 0x5a, 0x78, 0xc4, 0x00, 0x5a, + 0x60, 0x6a, 0x03, 0xed, 0x14, 0x01, 0x93, 0x06, + 0x20, 0x40, 0xb4, 0xe0, 0xda, 0x69, 0xc3, 0x56, + 0x3e, 0x24, 0x91, 0xd7, 0x8c, 0x26, 0x62, 0xfe, + 0x68, 0x4f, 0xa8, 0xac, 0x06, 0xe8, 0x5b, 0x84, + 0x82, 0x04, 0xe2, 0x6d, 0xaa, 0x29, 0x08, 0x31, + 0x8c, 0xc2, 0x08, 0x03, 0x8d, 0xb3, 0x2e, 0x72, + 0x62, 0x32, 0x99, 0xe1, 0xd8, 0x00, 0xa8, 0x4d, + 0x91, 0x8b, 0xf6, 0x69, 0x74, 0x3c, 0xc8, 0x4c, + 0x04, 0x02, 0xe8, 0x0e, 0x01, 0xb6, 0x9e, 0x84, + 0x3a, 0x80, 0x90, 0x18, 0xe0, 0xd8, 0x16, 0xcf, + 0xd7, 0x24, 0xfa, 0xbe, 0xe7, 0x3e, 0xf6, 0xa9, + 0x5d, 0xe3, 0xa2, 0x17, 0x3d, 0xe7, 0x04, 0x82, + 0x43, 0x47, 0x63, 0xc8, 0xae, 0x9d, 0x67, 0x62, + 0x10, 0xa8, 0x16, 0x89, 0xd2, 0x09, 0x20, 0x63, + 0x93, 0xf8, 0xcc, 0x07, 0xbf, 0x26, 0x03, 0x71, + 0xd2, 0x30, 0x80, 0x20, 0xfc, 0xa0, 0x4e, 0xe2, + 0x44, 0x17, 0x09, 0x27, 0x85, 0x9e, 0x08, 0x40, + 0x65, 0xf9, 0x9f, 0xdb, 0x3e, 0x67, 0xf6, 0x5b, + 0x64, 0x15, 0x8f, 0xed, 0xdf, 0x64, 0xfb, 0x76, + 0x9c, 0xfe, 0xe7, 0x36, 0xde, 0x03, 0xc4, 0x83, + 0xb7, 0xe6, 0x73, 0xfa, 0x00, 0x5c, 0x22, 0x12, + 0x52, 0x08, 0x5b, 0x89, 0x90, 0xcb, 0x0a, 0x00, + 0x33, 0xf9, 0x82, 0x2c, 0xdd, 0xed, 0x63, 0x27, + 0xf6, 0x44, 0x5b, 0xde, 0x40, 0x9d, 0xd7, 0x48, + 0x0e, 0x5f, 0xc1, 0x2b, 0x9c, 0x10, 0x52, 0xdb, + 0x1f, 0xf5, 0x85, 0x18, 0xe2, 0x14, 0x07, 0x38, + 0x5b, 0x05, 0xd2, 0x3b, 0xa3, 0x0a, 0xd8, 0x50, + 0xd8, 0xf1, 0xb4, 0x77, 0x3d, 0x7e, 0x84, 0xee, + 0x5b, 0x5f, 0x20, 0xa4, 0x4a, 0x9a, 0x20, 0x34, + 0x07, 0x68, 0x33, 0x01, 0x8a, 0xf4, 0xc0, 0x20, + 0x89, 0x20, 0x0a, 0xe0, 0x74, 0x02, 0x08, 0x60, + 0xa1, 0x6e, 0x7a, 0x86, 0x6e, 0x84, 0xbc, 0xc8, + 0x21, 0x2f, 0xf0, 0xa8, 0x4b, 0xa8, 0xc2, 0x19, + 0x92, 0x20, 0x84, 0x1f, 0xd9, 0x21, 0x06, 0x93, + 0x08, 0x18, 0x0c, 0xba, 0x45, 0xc5, 0x0a, 0x85, + 0x7f, 0x5b, 0x7d, 0xc0, 0x23, 0xb8, 0x57, 0x1d, + 0xbe, 0xa0, 0xe0, 0x65, 0xe1, 0x38, 0x02, 0xbf, + 0xf2, 0x42, 0x08, 0x5a, 0x69, 0xbf, 0xfb, 0xaa, + 0x75, 0x85, 0xbf, 0xd8, 0x61, 0x6e, 0xf3, 0xa8, + 0x62, 0x94, 0xa2, 0x74, 0xae, 0x2d, 0xe1, 0x38, + 0x5b, 0x21, 0x56, 0xc2, 0x9a, 0x6a, 0x81, 0xa6, + 0x05, 0x40, 0x6d, 0x9c, 0xb0, 0x8e, 0xe6, 0x9e, + 0x36, 0x9c, 0x70, 0x09, 0xa7, 0xf9, 0x0f, 0x29, + 0x80, 0xe8, 0xc2, 0xab, 0x6f, 0x42, 0x89, 0xc5, + 0x91, 0xcf, 0x1b, 0xc4, 0x65, 0x9e, 0x90, 0x1c, + 0xf7, 0xb4, 0x46, 0x1a, 0x96, 0x1c, 0x82, 0x87, + 0x30, 0x2d, 0xa5, 0x30, 0x8c, 0x31, 0x1c, 0x36, + 0xc9, 0x87, 0x94, 0x9b, 0xf0, 0x23, 0x26, 0xa3, + 0x68, 0x1e, 0x26, 0x7c, 0x66, 0x99, 0x99, 0x89, + 0xf2, 0xa6, 0xa5, 0x73, 0x84, 0x10, 0x1a, 0x69, + 0x20, 0x12, 0x2f, 0xe8, 0x05, 0xbc, 0xd7, 0x20, + 0x70, 0x16, 0xc3, 0x00, 0x84, 0x1c, 0x29, 0x09, + 0x35, 0x1e, 0x06, 0xe7, 0x06, 0x20, 0x37, 0x7f, + 0x14, 0x24, 0x5f, 0xe0, 0x8b, 0x77, 0xeb, 0x42, + 0x15, 0xd4, 0x01, 0x98, 0x08, 0x07, 0xf0, 0x2a, + 0x00, 0x54, 0xb6, 0xd2, 0x65, 0x54, 0x40, 0x85, + 0x7e, 0x18, 0x8c, 0xbe, 0x54, 0x20, 0x57, 0xdf, + 0x88, 0xcb, 0xe4, 0x62, 0xb2, 0x40, 0xb0, 0x4e, + 0x9b, 0xc4, 0x03, 0x4c, 0x1b, 0x82, 0x15, 0xf8, + 0x50, 0xb8, 0x4b, 0xac, 0x6c, 0xdb, 0xd0, 0x12, + 0xe7, 0xb5, 0x2a, 0xc9, 0xa8, 0x51, 0xb9, 0x6e, + 0xb8, 0x01, 0x54, 0xbb, 0x2b, 0x36, 0xe8, 0x84, + 0xcd, 0x4b, 0xf2, 0x85, 0x5f, 0x48, 0x8e, 0x11, + 0x46, 0x09, 0x47, 0x97, 0x62, 0xd3, 0x1c, 0xb3, + 0x38, 0x48, 0x14, 0x65, 0xb1, 0xe9, 0x33, 0x6e, + 0xc8, 0x70, 0x41, 0xb3, 0xa6, 0xb4, 0xf9, 0x02, + 0x2d, 0xfd, 0x86, 0x21, 0xec, 0x26, 0xc0, 0xc7, + 0x53, 0xf1, 0xb6, 0xc2, 0x21, 0x4e, 0x1a, 0xfe, + 0x31, 0xdd, 0xcd, 0xc4, 0xd3, 0xe2, 0xc3, 0xb0, + 0xf7, 0x0d, 0x6e, 0x70, 0x03, 0x0b, 0x79, 0x9a, + 0x32, 0x28, 0x29, 0xfd, 0x5f, 0x19, 0xe0, 0x3a, + 0x63, 0xbc, 0xe7, 0x24, 0xa3, 0xec, 0x7f, 0x61, + 0xfb, 0x1b, 0x9b, 0x73, 0x26, 0x53, 0xb8, 0x57, + 0x0d, 0x93, 0x95, 0xc0, 0x20, 0x8b, 0xa0, 0x9a, + 0x7d, 0x8f, 0x75, 0xb3, 0x75, 0x7d, 0x00, 0xc7, + 0x0b, 0x46, 0xb1, 0xf6, 0xc5, 0x4d, 0x30, 0xdd, + 0x38, 0x57, 0xcf, 0xfe, 0xe7, 0x2d, 0x61, 0x15, + 0x44, 0x08, 0x45, 0x55, 0xfe, 0x49, 0x06, 0xd5, + 0x40, 0xc7, 0x00, 0x61, 0x9d, 0xc6, 0xf4, 0x6f, + 0x1c, 0xcb, 0x52, 0xdf, 0xe0, 0x4e, 0x5b, 0xf6, + 0xc5, 0x15, 0x8c, 0x7e, 0xd5, 0xf7, 0x3f, 0xb5, + 0x7c, 0x82, 0x08, 0xaa, 0x69, 0xfb, 0xb8, 0xc2, + 0xbe, 0xee, 0x87, 0x0c, 0x78, 0x04, 0x83, 0xee, + 0xff, 0x2d, 0xfb, 0xbf, 0xdb, 0xbd, 0xc3, 0xf7, + 0x3f, 0xbb, 0xc1, 0xcc, 0xee, 0x61, 0x8f, 0xe0, + 0x42, 0xbd, 0xd2, 0x86, 0x4c, 0xc0, 0x14, 0xca, + 0x5c, 0x66, 0x3f, 0xb2, 0xb8, 0x0a, 0x73, 0x05, + 0xf7, 0x5c, 0xc1, 0x31, 0xbc, 0xdc, 0x6c, 0x85, + 0x68, 0x19, 0x27, 0x5c, 0x06, 0x98, 0x4b, 0x85, + 0xa7, 0x30, 0xa1, 0x0a, 0xb7, 0xc8, 0x5b, 0xe4, + 0xc6, 0x06, 0xef, 0xf5, 0x05, 0x86, 0x21, 0xc0, + 0x6f, 0xff, 0x98, 0x5c, 0x3f, 0xc2, 0xa2, 0x08, + 0x16, 0x81, 0x6e, 0xc3, 0xc5, 0x53, 0xae, 0x5a, + 0x93, 0xc9, 0xe5, 0x0c, 0xbe, 0x5c, 0xba, 0x00, + 0x60, 0x6c, 0x37, 0xc4, 0x08, 0x0d, 0x26, 0xe8, + 0x85, 0x81, 0x9a, 0x7a, 0xa1, 0x20, 0xd2, 0x90, + 0x1a, 0x68, 0xe6, 0x07, 0x48, 0x1b, 0x81, 0x8e, + 0x01, 0xc2, 0x65, 0x85, 0x08, 0x48, 0x2e, 0xda, + 0x16, 0x1f, 0xc9, 0xc4, 0x2b, 0x46, 0x65, 0x73, + 0xa6, 0x19, 0x98, 0xe5, 0xda, 0x06, 0x53, 0x34, + 0x22, 0x00, 0xcb, 0x04, 0x40, 0x1d, 0x4e, 0x0c, + 0x0c, 0x74, 0x8c, 0x23, 0x2f, 0xfc, 0xc6, 0xd3, + 0x50, 0x53, 0x1d, 0x52, 0x34, 0x65, 0x1a, 0xf7, + 0x6b, 0x97, 0xc7, 0xc4, 0xe7, 0x1b, 0x50, 0x39, + 0x4b, 0x14, 0x0c, 0x70, 0x2d, 0x2b, 0x24, 0x7e, + 0xc6, 0x81, 0xc6, 0xf2, 0x32, 0xcd, 0x2c, 0x4e, + 0x5f, 0xdb, 0x73, 0x4e, 0xac, 0xda, 0xc9, 0x1c, + 0x81, 0x90, 0xd8, 0x9c, 0x2c, 0xb4, 0x45, 0x0b, + 0x1f, 0x48, 0x14, 0xe7, 0xf5, 0xd4, 0x31, 0x1e, + 0x71, 0x48, 0x16, 0x3c, 0x44, 0x81, 0xcb, 0xeb, + 0x81, 0x70, 0x83, 0x10, 0x1b, 0x3e, 0x0a, 0x10, + 0xaf, 0xb5, 0x11, 0x92, 0x4e, 0xe3, 0x40, 0xfc, + 0x69, 0xd9, 0x24, 0xce, 0x32, 0x1f, 0xd8, 0x74, + 0xcb, 0xf5, 0xe3, 0x32, 0x81, 0x00, 0x1a, 0x25, + 0xde, 0x13, 0xaf, 0xd6, 0x4d, 0xdf, 0xf5, 0x8d, + 0x77, 0xfa, 0xe7, 0x8d, 0x3e, 0xb6, 0x33, 0x4f, + 0xd6, 0x69, 0xc7, 0xeb, 0x0d, 0x71, 0xf8, 0x47, + 0x98, 0xf1, 0x24, 0x10, 0xaf, 0x32, 0x15, 0xc3, + 0xe1, 0x10, 0x40, 0xf8, 0x4b, 0x08, 0x7d, 0x75, + 0xd7, 0x0a, 0x2c, 0x00, 0x2b, 0xf5, 0x84, 0x20, + 0x83, 0xb8, 0x4e, 0xa3, 0x28, 0x06, 0x18, 0x11, + 0x84, 0x2b, 0xc4, 0x43, 0x2d, 0xff, 0x20, 0x48, + 0x3c, 0x3c, 0xe6, 0x18, 0x7d, 0x08, 0xa7, 0xf9, + 0xa1, 0x70, 0xff, 0x18, 0x4f, 0x62, 0xc8, 0x16, + 0x1f, 0xe8, 0x09, 0x8f, 0xf7, 0xc4, 0x3d, 0x83, + 0x88, 0xc2, 0xbc, 0x2a, 0x52, 0xdf, 0xe0, 0x11, + 0x86, 0x19, 0x02, 0x69, 0xc6, 0x83, 0x58, 0xff, + 0x81, 0x67, 0x3f, 0xe0, 0x15, 0x8c, 0xd8, 0x72, + 0xfb, 0x20, 0xcc, 0x20, 0xc2, 0x46, 0x3f, 0xc8, + 0x2c, 0x83, 0xfa, 0x10, 0x3f, 0x37, 0x1d, 0x7e, + 0x7a, 0x12, 0x8c, 0x33, 0xb5, 0x9a, 0x0a, 0x20, + 0x67, 0xfa, 0x92, 0x99, 0xfe, 0x54, 0x53, 0x01, + 0xec, 0x07, 0x86, 0xd3, 0x02, 0x80, 0x16, 0xfc, + 0x6e, 0x45, 0x3d, 0xf9, 0x03, 0x24, 0x2f, 0xc2, + 0x65, 0x0b, 0xa1, 0x14, 0x46, 0x60, 0x04, 0x06, + 0x3f, 0xfe, 0x08, 0x83, 0xff, 0x02, 0x29, 0xfd, + 0xa4, 0x0b, 0x7e, 0xc0, 0x22, 0x8f, 0xed, 0x0d, + 0x87, 0xe2, 0xa3, 0x20, 0xfe, 0xc8, 0x8b, 0x60, + 0x90, 0x14, 0x08, 0x1b, 0x8c, 0xaf, 0xfb, 0xc6, + 0x61, 0x80, 0xf0, 0x49, 0xff, 0x74, 0xe7, 0x3f, + 0x4c, 0x10, 0x2a, 0xa2, 0xe4, 0x63, 0xfb, 0x8f, + 0xca, 0x3e, 0xe3, 0xf7, 0x2f, 0xb8, 0xf0, 0xb7, + 0xee, 0x3f, 0x70, 0xfb, 0x89, 0x5a, 0x72, 0xba, + 0x22, 0xde, 0xfd, 0x89, 0xef, 0x2a, 0x25, 0x32, + 0x1d, 0x6b, 0xf4, 0xcf, 0xa0, 0xad, 0x79, 0x94, + 0xfb, 0xba, 0xc9, 0x61, 0xef, 0x21, 0x1d, 0x3f, + 0xcc, 0x64, 0x08, 0xbe, 0x0d, 0xa7, 0x22, 0xc3, + 0x2a, 0xa7, 0x58, 0x4a, 0x3d, 0xfa, 0x52, 0x9f, + 0xe1, 0xa1, 0xcf, 0xe0, 0x27, 0x65, 0xe0, 0xa9, + 0xd8, 0xfb, 0x0e, 0x37, 0x3e, 0x87, 0x31, 0x43, + 0xab, 0x01, 0x3a, 0xf5, 0x71, 0x4c, 0xa1, 0xb2, + 0x33, 0x1a, 0xc4, 0x0d, 0xce, 0x40, 0x23, 0x67, + 0xdb, 0xa4, 0x58, 0xfa, 0x58, 0x22, 0x9f, 0x02, + 0x41, 0x03, 0xac, 0x06, 0x20, 0x87, 0x40, 0x1d, + 0xa4, 0x3e, 0x07, 0x5f, 0xaf, 0x09, 0xcf, 0xac, + 0x74, 0x67, 0xe7, 0xd9, 0x48, 0x7e, 0xc1, 0xc3, + 0x4d, 0xba, 0x89, 0x43, 0xeb, 0xef, 0x34, 0xfb, + 0x2d, 0xdd, 0xbf, 0x12, 0x32, 0x9e, 0xb4, 0x41, + 0xc7, 0xec, 0x7f, 0x0a, 0xfe, 0x64, 0x08, 0x7d, + 0x85, 0xc3, 0x2f, 0xb1, 0x50, 0xcb, 0xec, 0x5f, + 0x63, 0xe6, 0x53, 0x9d, 0xfd, 0x8b, 0xf0, 0xaf, + 0xe6, 0x40, 0x87, 0xc4, 0x9c, 0x62, 0xf6, 0x2c, + 0xcc, 0x7d, 0x8b, 0xf6, 0x3e, 0x16, 0xb9, 0x8f, + 0xc5, 0x1f, 0x0a, 0xfe, 0x64, 0x08, 0x7b, 0x0e, + 0xb7, 0x08, 0xc5, 0x19, 0x93, 0x0b, 0x09, 0x5b, + 0xc3, 0xcf, 0xd1, 0x70, 0xf3, 0xc7, 0x3d, 0x4f, + 0x01, 0xa7, 0x0d, 0xa1, 0x63, 0x9a, 0xc9, 0x08, + 0x30, 0xf9, 0xf6, 0x2c, 0x3e, 0x19, 0xcf, 0xf8, + 0xe3, 0x0a, 0xd3, 0x12, 0xd8, 0xe4, 0x9c, 0x36, + 0x3d, 0x27, 0xa9, 0x88, 0xeb, 0xb1, 0xa0, 0x32, + 0xc0, 0xe8, 0x25, 0xba, 0x51, 0x13, 0x7f, 0xfb, + 0x4c, 0x14, 0x33, 0xc9, 0xb0, 0x5b, 0xe2, 0x3a, + 0x66, 0x9b, 0x69, 0x81, 0x8b, 0xfd, 0x81, 0x3a, + 0x82, 0x48, 0xd8, 0xe4, 0x14, 0x22, 0x0b, 0x98, + 0x04, 0xea, 0xe5, 0xe6, 0x63, 0xff, 0x70, 0xca, + 0x60, 0x32, 0x07, 0x91, 0xec, 0x6d, 0x40, 0x5d, + 0xfe, 0x02, 0x33, 0xe0, 0x84, 0x2b, 0xb8, 0x4a, + 0x31, 0x6f, 0xf3, 0x0c, 0xc7, 0xfc, 0x41, 0x99, + 0x6f, 0xe0, 0xe5, 0x3f, 0xcc, 0x5b, 0x9f, 0xf3, + 0x0e, 0x7e, 0x65, 0x36, 0xe6, 0x98, 0x0f, 0x3f, + 0x9b, 0x5b, 0x36, 0x9d, 0x06, 0x41, 0xbc, 0xd3, + 0x31, 0xfd, 0xe8, 0x66, 0x03, 0xde, 0x20, 0x18, + 0xb7, 0xe7, 0x04, 0x20, 0xfb, 0x42, 0x9b, 0x3f, + 0xe0, 0x12, 0x9f, 0xb5, 0x15, 0x8b, 0xfc, 0x24, + 0x67, 0xfb, 0x4a, 0xd8, 0xbf, 0x98, 0x66, 0xcf, + 0xe3, 0x04, 0xcb, 0xed, 0x4f, 0x62, 0xfd, 0x69, + 0x1c, 0xfe, 0x6a, 0x76, 0x7f, 0xcc, 0x10, 0x83, + 0xe0, 0x6a, 0x70, 0xc8, 0xd0, 0x4a, 0x7f, 0x36, + 0x82, 0x0c, 0x83, 0x19, 0x77, 0xf3, 0x4a, 0x20, + 0xd7, 0xe8, 0x1c, 0x31, 0xe4, 0x16, 0xcf, 0xcc, + 0xad, 0xf6, 0xc2, 0xa0, 0x74, 0x98, 0x28, 0x1d, + 0x2b, 0xd4, 0x26, 0xdf, 0xe0, 0x9d, 0xcf, 0xf8, + 0x26, 0x0a, 0xf9, 0x90, 0x9d, 0x3f, 0xc6, 0x53, + 0xef, 0xa8, 0xa4, 0x2b, 0x24, 0x06, 0x62, 0xfb, + 0xb3, 0x4a, 0x60, 0x46, 0x13, 0x09, 0x1c, 0x01, + 0xbc, 0xed, 0x2a, 0xf0, 0xb6, 0xff, 0x31, 0x21, + 0x58, 0xfb, 0x2b, 0x6f, 0xee, 0x0c, 0xc7, 0x04, + 0x81, 0x9d, 0xc9, 0x08, 0xa5, 0xbf, 0x60, 0x21, + 0x96, 0x98, 0xdc, 0xdb, 0xf8, 0x91, 0x33, 0xfe, + 0xf4, 0xa7, 0xf1, 0x60, 0x13, 0x4d, 0x8a, 0xc0, + 0xcd, 0x23, 0x34, 0xb1, 0xf6, 0x74, 0xa4, 0x12, + 0x2a, 0x49, 0x17, 0xf1, 0x12, 0xc7, 0xf5, 0xc2, + 0x05, 0x55, 0xdc, 0x61, 0x52, 0xae, 0x31, 0x6f, + 0xbc, 0x48, 0xe7, 0xa7, 0x61, 0x9d, 0x67, 0xbd, + 0x0e, 0x70, 0xbe, 0x11, 0x80, 0xf2, 0x1a, 0x60, + 0x62, 0x8e, 0xb0, 0xdb, 0xa3, 0x52, 0x06, 0x49, + 0x03, 0x01, 0xbe, 0x15, 0x00, 0x74, 0x34, 0xfc, + 0xc0, 0x04, 0x10, 0xa1, 0x1b, 0x34, 0x6f, 0x40, + 0x41, 0xfb, 0xe3, 0x11, 0x7f, 0x40, 0xa7, 0xbf, + 0x6b, 0x13, 0xa6, 0x6d, 0x0c, 0xcd, 0xf3, 0x13, + 0x32, 0x9e, 0x21, 0xf0, 0x16, 0x5f, 0xc4, 0x0d, + 0xb7, 0xd8, 0x42, 0x6d, 0xe9, 0xf1, 0x08, 0x20, + 0xb2, 0x36, 0xff, 0x6f, 0x88, 0xbf, 0x3f, 0xe0, + 0x2b, 0x99, 0x80, 0x58, 0xec, 0xa4, 0x22, 0x08, + 0x62, 0x85, 0xce, 0x76, 0xc2, 0x74, 0xcb, 0x5a, + 0x98, 0xbb, 0x5e, 0x43, 0x0c, 0x0a, 0x01, 0xa6, + 0xa6, 0x60, 0x73, 0x81, 0x00, 0x98, 0x6a, 0x5e, + 0x06, 0xf8, 0x2f, 0x01, 0xd2, 0x26, 0x47, 0x6f, + 0x86, 0xd8, 0x08, 0x23, 0xf0, 0x02, 0x08, 0x40, + 0x01, 0xb6, 0x24, 0x60, 0x79, 0xfb, 0x71, 0x5d, + 0x32, 0xca, 0xa6, 0x2e, 0x5b, 0x85, 0xcf, 0xfd, + 0x52, 0x6c, 0xe4, 0x70, 0x59, 0x7e, 0xb8, 0x87, + 0x3f, 0xe3, 0x2d, 0x9f, 0xa6, 0x48, 0x3e, 0xf9, + 0x0a, 0xd9, 0xfb, 0x02, 0x57, 0x38, 0xb3, 0x89, + 0xca, 0x8d, 0xa0, 0x69, 0x98, 0x18, 0x58, 0x7e, + 0xeb, 0xf3, 0xee, 0xfc, 0x1d, 0x97, 0xce, 0xe8, + 0x65, 0x80, 0x48, 0x1e, 0xe8, 0xb0, 0x16, 0x1b, + 0x38, 0x89, 0xd7, 0x0c, 0xeb, 0x75, 0xf9, 0xea, + 0x5a, 0x7c, 0xa2, 0x40, 0xaf, 0xf6, 0x29, 0x97, + 0xb8, 0x06, 0x63, 0xfe, 0x11, 0x1d, 0x3e, 0xc4, + 0xe7, 0x58, 0x31, 0x81, 0xbf, 0xaf, 0xa0, 0x0a, + 0xc5, 0x41, 0x9e, 0xf7, 0xae, 0xa2, 0xdf, 0xc7, + 0x95, 0xf7, 0xd2, 0xaf, 0x0a, 0xbf, 0x7a, 0xd8, + 0xfa, 0xbc, 0x76, 0x3f, 0x48, 0x00, 0x83, 0xea, + 0xd5, 0x74, 0xfe, 0x73, 0xc8, 0x3e, 0x6a, 0x02, + 0xb9, 0x48, 0x01, 0xd6, 0x50, 0x00, 0x3e, 0x9a, + 0xb0, 0x1d, 0x3e, 0x74, 0xf6, 0x3f, 0xa7, 0xd5, + 0xd3, 0xf7, 0x10, 0x2b, 0xf9, 0xd1, 0x9c, 0xa0, + 0x5c, 0x07, 0x4f, 0x82, 0xc0, 0xee, 0x06, 0xe1, + 0x74, 0x3c, 0x9c, 0x20, 0x0c, 0x07, 0xbb, 0x96, + 0x50, 0xff, 0x68, 0x24, 0x69, 0xde, 0xb0, 0x0b, + 0xa5, 0x04, 0x02, 0x8d, 0x9a, 0x0c, 0xa4, 0x41, + 0x27, 0x80, 0x32, 0xf5, 0xa8, 0x24, 0x1c, 0xf2, + 0x23, 0xa5, 0xc0, 0x4c, 0x5d, 0xbb, 0x01, 0x16, + 0xdb, 0xe1, 0x01, 0x5f, 0xe6, 0x43, 0x1e, 0xa5, + 0xc6, 0x5b, 0x6d, 0xc2, 0x05, 0x7e, 0x40, 0x41, + 0x55, 0x25, 0x1b, 0x7e, 0xb9, 0x00, 0xc3, 0x11, + 0xe0, 0x10, 0x46, 0xb8, 0x2e, 0x79, 0xe4, 0x21, + 0x95, 0xaa, 0x0e, 0xdd, 0x5c, 0x52, 0xb3, 0xd2, + 0xe4, 0x26, 0x51, 0x76, 0x10, 0x57, 0xfc, 0x96, + 0x41, 0xfc, 0x42, 0x85, 0x41, 0x44, 0x4d, 0x10, + 0x08, 0x03, 0x46, 0x7c, 0x00, 0xc9, 0xfb, 0x71, + 0x9d, 0x45, 0x90, 0xcd, 0x1f, 0xeb, 0x31, 0x4f, + 0xee, 0x0c, 0x41, 0xfd, 0x81, 0x05, 0x6f, 0x4c, + 0xc4, 0x1b, 0x8f, 0x59, 0x05, 0x46, 0x06, 0x5b, + 0xc8, 0x65, 0x37, 0xc1, 0x34, 0xec, 0xdb, 0xea, + 0x11, 0xdd, 0x99, 0xd6, 0xe7, 0x93, 0x42, 0x39, + 0xc7, 0x5d, 0x0d, 0x1f, 0x7b, 0x0b, 0x9e, 0x55, + 0xcc, 0x65, 0x26, 0xc1, 0x10, 0x4e, 0xe0, 0x8d, + 0x1f, 0x62, 0x28, 0x54, 0xfd, 0x08, 0xd1, 0xf5, + 0x33, 0x3d, 0xd6, 0xea, 0x8e, 0x74, 0x90, 0x03, + 0x2d, 0x2d, 0x02, 0x5b, 0x05, 0xf0, 0x34, 0x7f, + 0x1c, 0xce, 0x9e, 0x9d, 0x3b, 0x47, 0xc5, 0x8c, + 0x5b, 0x5c, 0xd2, 0x05, 0x67, 0x30, 0xcd, 0x1e, + 0xfd, 0xf9, 0xf7, 0xf0, 0x9a, 0xcf, 0x36, 0x04, + 0x10, 0x64, 0xc4, 0x25, 0xbc, 0xbf, 0x79, 0x4f, + 0xa5, 0x8a, 0x65, 0xa7, 0x91, 0x96, 0xfd, 0x95, + 0x6e, 0x73, 0x23, 0x09, 0x6d, 0x52, 0x8a, 0xd1, + 0xf2, 0x03, 0x1d, 0xf4, 0x6c, 0xa5, 0x1f, 0xb2, + 0xf9, 0x07, 0xc5, 0xd8, 0xc7, 0xb7, 0x60, 0x05, + 0x7e, 0xca, 0x2c, 0xb7, 0x70, 0xfb, 0x25, 0xdc, + 0x14, 0xa0, 0x4c, 0x20, 0x95, 0x08, 0xc4, 0xf2, + 0x91, 0x36, 0xed, 0x80, 0x53, 0xbb, 0x6c, 0x94, + 0xee, 0x92, 0x05, 0x72, 0x49, 0x3a, 0xfe, 0x60, + 0x22, 0xec, 0x49, 0x8b, 0x60, 0x7a, 0x16, 0x58, + 0x06, 0x01, 0xa7, 0x4d, 0x23, 0x30, 0xc4, 0x08, + 0x16, 0xee, 0x46, 0x23, 0xa1, 0x01, 0x1e, 0x06, + 0x40, 0x50, 0x82, 0xb0, 0x18, 0xc8, 0x32, 0x02, + 0x0b, 0x2c, 0x0d, 0x02, 0x51, 0xa4, 0x00, 0x30, + 0xeb, 0xa4, 0x05, 0xb2, 0x12, 0x1b, 0x77, 0xfd, + 0x84, 0xeb, 0xd9, 0x10, 0x36, 0xf6, 0x50, 0x0e, + 0xb7, 0x96, 0x01, 0x04, 0x7e, 0xca, 0xcb, 0x02, + 0x21, 0x99, 0x88, 0x0b, 0x91, 0xed, 0x03, 0x91, + 0x9c, 0xeb, 0xab, 0xd0, 0x37, 0x1d, 0x08, 0x77, + 0x64, 0x19, 0x87, 0xfb, 0x82, 0xcd, 0x07, 0x30, + 0xba, 0x10, 0x7f, 0xd2, 0x54, 0x2b, 0x5b, 0x81, + 0x98, 0xd3, 0x14, 0xc0, 0x32, 0x42, 0x94, 0x2b, + 0x90, 0x1a, 0x03, 0x9d, 0xbc, 0x86, 0x83, 0xfe, + 0x47, 0x14, 0x46, 0x40, 0x6e, 0x5a, 0x62, 0x01, + 0x6f, 0xe9, 0x0a, 0x53, 0xfb, 0x91, 0x3a, 0xc9, + 0x80, 0x0e, 0x96, 0x7b, 0x0a, 0x0f, 0xda, 0xc8, + 0x14, 0x5b, 0xcf, 0xa0, 0x1d, 0x4d, 0x96, 0x6a, + 0x03, 0x1e, 0x8e, 0x42, 0x5b, 0xff, 0xb1, 0x3a, + 0x70, 0xf8, 0x25, 0xbf, 0xdb, 0x31, 0x07, 0xf9, + 0x10, 0xe5, 0x00, 0xc0, 0x3a, 0x9c, 0xad, 0xb2, + 0x07, 0x9f, 0xf1, 0x05, 0xa6, 0xda, 0x40, 0x65, + 0x82, 0x08, 0x1c, 0xa2, 0x48, 0x07, 0x2b, 0x35, + 0x81, 0xa6, 0x04, 0x20, 0x72, 0xa0, 0x80, 0x08, + 0x3e, 0xc2, 0x26, 0x13, 0x3c, 0x14, 0x80, 0xbb, + 0xfb, 0x24, 0x10, 0x40, 0xa8, 0x49, 0x90, 0x13, + 0x0a, 0x61, 0xa4, 0xc5, 0xfd, 0xd0, 0x39, 0x5d, + 0x20, 0x4d, 0xdf, 0x01, 0x71, 0x6f, 0x29, 0x02, + 0xdb, 0xef, 0xe2, 0x14, 0xfc, 0xd4, 0x6c, 0x3f, + 0x09, 0xfb, 0x37, 0xc2, 0x46, 0x63, 0xf0, 0x9c, + 0xad, 0xd6, 0xa4, 0x49, 0x9f, 0x87, 0x42, 0x0d, + 0x66, 0xc0, 0xd7, 0x80, 0x30, 0x37, 0x40, 0x78, + 0x06, 0x63, 0x21, 0x71, 0x92, 0x0d, 0xa1, 0x47, + 0xf3, 0x53, 0x1b, 0x3e, 0x7a, 0x87, 0x5f, 0x72, + 0xb1, 0xb7, 0xdc, 0xff, 0x61, 0xf7, 0x3f, 0xd7, + 0x3d, 0xcf, 0x54, 0x6b, 0xce, 0x05, 0x33, 0xdc, + 0xe7, 0x68, 0xef, 0xca, 0x1c, 0xce, 0xa6, 0x38, + 0x04, 0x81, 0xcf, 0xbf, 0x22, 0x31, 0xef, 0xcf, + 0xdd, 0x3b, 0xf2, 0x73, 0x0f, 0x78, 0x79, 0x1b, + 0xf2, 0x08, 0x22, 0xf7, 0x8f, 0xdc, 0xbd, 0xe3, + 0xf6, 0xce, 0xec, 0x7d, 0xc3, 0xbb, 0x1f, 0x6c, + 0xee, 0xc2, 0x51, 0x0c, 0xb4, 0x8e, 0x03, 0x39, + 0x0a, 0x7a, 0xa0, 0x61, 0x35, 0xc0, 0x28, 0x25, + 0xb6, 0x4a, 0x22, 0xe7, 0x3e, 0xfe, 0xd3, 0xf0, + 0x2f, 0xb2, 0x77, 0xc8, 0x88, 0x9f, 0xa1, 0x39, + 0x17, 0x7d, 0x3e, 0xe5, 0xdf, 0x4f, 0xb6, 0x73, + 0x6f, 0xee, 0x15, 0xc0, 0x03, 0xb1, 0xbc, 0xd3, + 0x65, 0x50, 0x37, 0xf3, 0x7b, 0xe4, 0x04, 0xfb, + 0x68, 0x81, 0xc2, 0xd9, 0xc0, 0x44, 0xf8, 0x00, + 0x94, 0xe6, 0x56, 0x42, 0x88, 0x06, 0x11, 0xd7, + 0x58, 0xe5, 0x20, 0xdf, 0x9f, 0xd0, 0xb9, 0xd5, + 0xf6, 0xce, 0x75, 0x15, 0x3e, 0xcc, 0x80, 0x70, + 0xb3, 0x08, 0x11, 0x3d, 0x26, 0x25, 0x3d, 0xe6, + 0x10, 0x8b, 0x9c, 0x9f, 0x72, 0xe7, 0x27, 0xdb, + 0x37, 0x97, 0xf7, 0x0a, 0x58, 0x01, 0xd8, 0xde, + 0x69, 0xaa, 0x28, 0x1b, 0xf7, 0x9d, 0xf2, 0x0d, + 0x66, 0x05, 0x52, 0x43, 0xc0, 0x6b, 0xd8, 0x40, + 0xc8, 0x3b, 0xe8, 0x37, 0x49, 0x07, 0x81, 0xaf, + 0x5d, 0x22, 0x30, 0xd7, 0x4f, 0xdd, 0x39, 0xe1, + 0xf6, 0x5d, 0xf0, 0x19, 0x1e, 0x02, 0xe0, 0x54, + 0x8d, 0xb8, 0x1a, 0xf5, 0x42, 0x32, 0x2d, 0xf0, + 0x7d, 0xcb, 0x7c, 0x1f, 0x6c, 0xd6, 0x3f, 0xdc, + 0x35, 0x8f, 0xf6, 0xcd, 0x63, 0x9d, 0x4e, 0x1d, + 0x00, 0x75, 0x84, 0x58, 0x1c, 0xb6, 0x9e, 0x42, + 0x2d, 0x5d, 0x2d, 0x8e, 0x30, 0x06, 0x75, 0x83, + 0x50, 0x1c, 0xb6, 0x5c, 0x40, 0xa8, 0x0c, 0x01, + 0x37, 0x34, 0x01, 0x61, 0x81, 0x28, 0x10, 0x8d, + 0xe7, 0x88, 0x11, 0x85, 0x9b, 0x4e, 0xa2, 0x20, + 0x84, 0xb0, 0x1d, 0x22, 0x7a, 0x02, 0xda, 0xb9, + 0x11, 0xa4, 0xe9, 0x13, 0x20, 0x16, 0xd4, 0xb8, + 0x0c, 0x57, 0x27, 0x03, 0xcd, 0x48, 0x88, 0xc5, + 0x71, 0xd0, 0x3c, 0xe6, 0x04, 0x4e, 0xf0, 0x58, + 0x01, 0x04, 0x0e, 0x42, 0xc5, 0x44, 0xc0, 0x3a, + 0x68, 0x48, 0x25, 0x20, 0xa1, 0xb6, 0x61, 0x7e, + 0xe9, 0xa9, 0x84, 0x99, 0x08, 0x07, 0x19, 0xfb, + 0x63, 0x1e, 0x5d, 0xaa, 0xa7, 0x01, 0x80, 0x26, + 0xe3, 0xf8, 0x2c, 0x30, 0xd6, 0x02, 0x11, 0xbc, + 0xf1, 0xa7, 0x00, 0xba, 0xc4, 0x04, 0x0e, 0x5a, + 0x72, 0xfb, 0xae, 0x9c, 0xbe, 0xcd, 0x95, 0x9f, + 0xb3, 0xe5, 0x67, 0xe4, 0x10, 0x72, 0x01, 0x81, + 0xe0, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x03, 0x01, + 0x84, 0x75, 0x80, 0xc7, 0x02, 0x23, 0x26, 0x90, + 0xb0, 0x08, 0x04, 0xb8, 0xe2, 0x81, 0xe0, 0x60, + 0x30, 0x18, 0x0c, 0x06, 0x03, 0x01, 0x86, 0x64, + 0x00, 0xc7, 0x00, 0x83, 0x26, 0x90, 0xaf, 0xd4, + 0x04, 0xb2, 0x19, 0x04, 0x9c, 0x43, 0x22, 0x93, + 0x23, 0x4a, 0x07, 0x81, 0x80, 0xc0, 0x60, 0x30, + 0x18, 0x0c, 0x06, 0x18, 0x79, 0x03, 0x1d, 0xee, + 0x02, 0xe8, 0x61, 0x80, 0x70, 0x53, 0x48, 0x45, + 0xf2, 0x09, 0x0a, 0xf8, 0x80, 0x54, 0x29, 0x11, + 0x4a, 0x85, 0x22, 0xc9, 0x24, 0x8e, 0x4e, 0xbd, + 0xc8, 0x11, 0x62, 0xfa, 0x07, 0x81, 0x80, 0xc0, + 0x60, 0x30, 0x18, 0x0c, 0x06, 0x18, 0x25, 0x03, + 0x1d, 0xe4, 0x02, 0xe8, 0x61, 0x80, 0x40, 0x53, + 0x48, 0x45, 0xf2, 0xc9, 0x14, 0xa6, 0x4e, 0x27, + 0x90, 0xc8, 0x24, 0xe2, 0x19, 0x14, 0x99, 0x15, + 0xa0, 0x3c, 0x0c, 0x06, 0x03, 0x01, 0x80, 0xc0, + 0x60, 0x30, 0x1a, 0x54, 0xd0, 0x2d, 0xd1, 0xbc, + 0x03, 0x0c, 0x01, 0x42, 0x9a, 0x42, 0x2f, 0x96, + 0x48, 0xa5, 0x32, 0x71, 0x3e, 0x27, 0xa0, 0x78, + 0x18, 0x0c, 0x06, 0x03, 0x01, 0x80, 0xc0, 0x60, + 0x35, 0xa8, 0xb8, 0x5b, 0xa3, 0x3e, 0x06, 0x18, + 0x0d, 0x05, 0x34, 0x84, 0x5f, 0x29, 0x11, 0x4a, + 0x85, 0x22, 0xc9, 0x0c, 0x82, 0x4e, 0x21, 0x91, + 0x49, 0x91, 0x1a, 0x03, 0xc0, 0xc0, 0x60, 0x30, + 0x18, 0x0c, 0x06, 0x03, 0x18, 0x88, 0x81, 0x8e, + 0xe5, 0xa1, 0x74, 0x30, 0xd0, 0x1c, 0x29, 0xa4, + 0x22, 0xfd, 0xcc, 0x80, 0x9e, 0x4e, 0x24, 0x10, + 0x49, 0xc4, 0x48, 0x7d, 0x01, 0xe0, 0x60, 0x30, + 0x18, 0x0c, 0x06, 0x03, 0x01, 0x94, 0x3c, 0x40, + 0xc7, 0x70, 0xd0, 0xba, 0x18, 0x67, 0xce, 0x14, + 0xd2, 0x11, 0x7e, 0xe2, 0x40, 0x4f, 0x27, 0x14, + 0x4a, 0xa4, 0x52, 0x99, 0x50, 0x93, 0x71, 0xe0, + 0x05, 0x0c, 0x0f, 0x03, 0x01, 0x80, 0xc0, 0x60, + 0x30, 0x18, 0x0c, 0xe1, 0x9a, 0x06, 0x3b, 0x74, + 0x85, 0xd0, 0xc3, 0x3c, 0x30, 0xa6, 0x90, 0x8b, + 0xf6, 0xee, 0x02, 0x79, 0x38, 0x8a, 0x58, 0xb7, + 0x48, 0x10, 0x49, 0xb6, 0xea, 0x02, 0x4d, 0xbd, + 0xc0, 0x14, 0x30, 0x3c, 0x0c, 0x06, 0x03, 0x01, + 0x80, 0xc0, 0x60, 0x34, 0x85, 0x30, 0x18, 0xed, + 0x84, 0x17, 0x43, 0x0c, 0xe7, 0x02, 0x9a, 0x42, + 0x2f, 0xdb, 0x1c, 0x09, 0xe4, 0xe2, 0x09, 0x4c, + 0xa8, 0x45, 0x29, 0x12, 0x4a, 0x64, 0xb8, 0x45, + 0x81, 0xe0, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x03, + 0x01, 0xc4, 0x20, 0x80, 0xc7, 0x69, 0xe0, 0xba, + 0x18, 0x66, 0xf0, 0x14, 0xd2, 0x11, 0x7c, 0xaa, + 0x53, 0x22, 0x94, 0xad, 0x3e, 0x04, 0xf2, 0x74, + 0x1a, 0xc0, 0xf0, 0x30, 0x18, 0x0c, 0x06, 0x03, + 0x01, 0x80, 0xc2, 0x0c, 0x40, 0x63, 0xb3, 0xf0, + 0x5d, 0x0c, 0x33, 0x58, 0x0a, 0x69, 0x08, 0xbe, + 0x44, 0x22, 0x91, 0x88, 0x45, 0x52, 0xa1, 0x52, + 0xd2, 0x40, 0x31, 0x82, 0x48, 0x1e, 0x06, 0x03, + 0x01, 0x80, 0xc0, 0x60, 0x31, 0x18, 0x41, 0x00, + 0x0c, 0x76, 0x5c, 0x0b, 0xa1, 0x86, 0x66, 0xc1, + 0x4d, 0x21, 0x17, 0xc8, 0x84, 0x52, 0x31, 0x08, + 0xaa, 0x54, 0x2a, 0x59, 0xc0, 0x06, 0x50, 0x27, + 0x03, 0xc0, 0xc0, 0x60, 0x30, 0x18, 0x0c, 0x06, + 0x43, 0x08, 0x0f, 0x01, 0x8e, 0xc7, 0x41, 0x74, + 0x30, 0xcc, 0x50, 0x29, 0xa4, 0x22, 0xf9, 0x10, + 0x8a, 0x46, 0x21, 0x15, 0x4a, 0x85, 0x4b, 0x27, + 0x00, 0xce, 0x00, 0xa0, 0x78, 0x18, 0x0c, 0x06, + 0x03, 0x01, 0x80, 0xcc, 0x61, 0x01, 0x30, 0x31, + 0xd8, 0x60, 0x2e, 0x86, 0x19, 0x79, 0x05, 0x34, + 0x84, 0x5f, 0x22, 0x11, 0x48, 0xc4, 0x22, 0xa9, + 0x50, 0xa9, 0x62, 0xc0, 0x1a, 0x5a, 0x98, 0x0f, + 0x03, 0x01, 0x80, 0xc0, 0x60, 0x30, 0x18, 0x0c, + 0x2d, 0x3a, 0x06, 0x3a, 0xfb, 0x05, 0xd0, 0xc3, + 0x2d, 0x00, 0xa6, 0x90, 0x8b, 0xe4, 0x12, 0x85, + 0x7f, 0x40, 0x9a, 0x4f, 0x22, 0x10, 0x49, 0x96, + 0x85, 0x03, 0xc0, 0xc0, 0x60, 0x30, 0x18, 0x0c, + 0x46, 0x03, 0x0b, 0x3e, 0x01, 0x8e, 0xba, 0xa1, + 0x74, 0x30, 0xca, 0xbc, 0x29, 0xa4, 0x22, 0xf9, + 0x4c, 0xb2, 0x53, 0x2a, 0x11, 0x49, 0xa4, 0xd2, + 0x79, 0x10, 0x82, 0x4c, 0xb3, 0x10, 0x1e, 0x06, + 0x03, 0x01, 0x80, 0xc0, 0x64, 0x30, 0x18, 0x59, + 0x64, 0x0c, 0x75, 0xb2, 0x0b, 0xa1, 0x86, 0x51, + 0x81, 0x4d, 0x21, 0x17, 0xca, 0x84, 0x12, 0x99, + 0x2c, 0x9a, 0x4f, 0x22, 0x10, 0x49, 0x96, 0x41, + 0x03, 0xc0, 0xc0, 0x60, 0x30, 0x18, 0x0d, 0x06, + 0x03, 0x0b, 0x1c, 0x01, 0x8e, 0xb2, 0x21, 0x74, + 0x30, 0xc9, 0xac, 0x29, 0xa4, 0x22, 0xf9, 0x20, + 0x8a, 0x4c, 0x28, 0x58, 0x94, 0x0f, 0x03, 0x01, + 0x80, 0xc0, 0x60, 0x38, 0x18, 0x0c, 0x2c, 0x38, + 0x06, 0x3a, 0xba, 0x85, 0xd0, 0xc3, 0x24, 0xf0, + 0xa6, 0x90, 0x8b, 0xe4, 0xe2, 0x7d, 0x60, 0x00, + 0x86, 0x55, 0x29, 0xd8, 0x18, 0x0f, 0x03, 0x01, + 0x80, 0xc0, 0x62, 0x30, 0x18, 0x0c, 0x2b, 0xfa, + 0x06, 0x3a, 0xab, 0x05, 0xd0, 0xc3, 0x23, 0x00, + 0xa6, 0x90, 0x8b, 0xe5, 0x32, 0x2d, 0x58, 0x04, + 0x8a, 0x47, 0xab, 0x40, 0x15, 0x49, 0xc4, 0x4a, + 0xf0, 0x81, 0xe0, 0x60, 0x30, 0x18, 0x0c, 0x86, + 0x03, 0x01, 0x85, 0x76, 0x00, 0xc7, 0x53, 0x10, + 0xba, 0x18, 0x64, 0x16, 0x14, 0xd2, 0x11, 0x7c, + 0x88, 0x45, 0x23, 0x10, 0x4a, 0xa4, 0xc2, 0xa1, + 0x7c, 0x88, 0x45, 0x29, 0x92, 0xca, 0x84, 0xf2, + 0x85, 0x4c, 0xc0, 0x9c, 0x4c, 0x2c, 0xd6, 0xd4, + 0x0f, 0x03, 0x01, 0x80, 0xc0, 0x68, 0x30, 0x18, + 0x0c, 0x2b, 0x58, 0x06, 0x3a, 0x82, 0x85, 0xd0, + 0xc3, 0x1d, 0xf0, 0xa6, 0x90, 0x8b, 0xe5, 0x42, + 0x79, 0x40, 0x9b, 0x51, 0x30, 0x2a, 0x56, 0x58, + 0x0f, 0x03, 0x01, 0x80, 0xc0, 0x70, 0x30, 0x18, + 0x0c, 0x2b, 0x1a, 0x06, 0x3a, 0x73, 0x05, 0xd0, + 0xc3, 0x1c, 0x00, 0xa6, 0x90, 0x8b, 0xe5, 0x22, + 0x49, 0x1c, 0x90, 0x54, 0xab, 0xc8, 0x1e, 0x06, + 0x03, 0x01, 0x88, 0xc0, 0x60, 0x30, 0x18, 0x55, + 0xc0, 0x0c, 0x74, 0xc9, 0x0b, 0xa1, 0x86, 0x34, + 0x61, 0x4d, 0x21, 0x17, 0xca, 0x45, 0x42, 0x61, + 0x48, 0x8a, 0x41, 0x22, 0x53, 0xb8, 0x08, 0xe0, + 0xa2, 0x69, 0x08, 0xbf, 0x4c, 0x00, 0x27, 0x93, + 0x88, 0xa5, 0x8a, 0x5d, 0x81, 0x04, 0x9b, 0x4b, + 0xc0, 0x24, 0xd3, 0x24, 0x04, 0x10, 0xe8, 0x03, + 0x74, 0x9b, 0x80, 0xc3, 0x17, 0x90, 0xa6, 0x90, + 0x8b, 0xf4, 0xa4, 0x02, 0x79, 0x38, 0xae, 0x41, + 0x29, 0x13, 0xa9, 0x86, 0x04, 0x70, 0x51, 0x34, + 0x84, 0x5f, 0xa4, 0xa8, 0x13, 0xc9, 0xc4, 0x82, + 0x09, 0x38, 0x89, 0x24, 0x20, 0xb7, 0x49, 0x28, + 0x0c, 0x31, 0x55, 0x0a, 0x69, 0x08, 0xbf, 0x48, + 0x00, 0x27, 0x93, 0x88, 0xa5, 0x2a, 0x47, 0x81, + 0x48, 0x14, 0x4d, 0x21, 0x17, 0xe8, 0xe6, 0x04, + 0xf2, 0x71, 0x04, 0xa6, 0x54, 0x22, 0x94, 0x89, + 0x25, 0x32, 0x5c, 0x87, 0x02, 0xdd, 0x22, 0x40, + 0x30, 0xc4, 0xbc, 0x29, 0xa4, 0x22, 0xfd, 0x16, + 0x80, 0x9e, 0x4e, 0xa3, 0xe8, 0x11, 0xa8, 0xb8, + 0x14, 0x12, 0xa1, 0x26, 0x8c, 0x60, 0x0a, 0x26, + 0x90, 0x8b, 0xf4, 0x47, 0x02, 0x79, 0x38, 0x90, + 0x41, 0x27, 0x11, 0x23, 0xe8, 0x16, 0xe8, 0xfe, + 0x01, 0x86, 0x20, 0xe1, 0x4d, 0x21, 0x17, 0xe8, + 0x64, 0x04, 0xf2, 0x71, 0x4c, 0xa8, 0x4f, 0x28, + 0x52, 0xf4, 0x0f, 0x03, 0x01, 0x80, 0xc8, 0x60, + 0x30, 0x18, 0x0c, 0x29, 0x68, 0x06, 0x3a, 0x06, + 0x85, 0xd0, 0xc3, 0x0e, 0x70, 0xa6, 0x90, 0x8b, + 0xe5, 0x32, 0x29, 0x4a, 0x84, 0x40, 0x43, 0x22, + 0x97, 0xc9, 0xc4, 0xf2, 0xa1, 0x26, 0x80, 0xa1, + 0x41, 0x2a, 0x12, 0x68, 0x2c, 0x00, 0xa1, 0x81, + 0xe0, 0x60, 0x30, 0x18, 0x0d, 0x06, 0x03, 0x01, + 0x85, 0x22, 0x00, 0xc7, 0x3e, 0x10, 0xba, 0x18, + 0x61, 0x76, 0x14, 0xd2, 0x11, 0x7c, 0xa6, 0x45, + 0x29, 0x4f, 0xd8, 0x08, 0x64, 0x52, 0xf9, 0x38, + 0x9e, 0x54, 0x24, 0xcf, 0x64, 0x28, 0x25, 0x42, + 0x4c, 0xfa, 0x80, 0x14, 0x30, 0x3c, 0x0c, 0x06, + 0x03, 0x01, 0xa0, 0xc0, 0x60, 0x30, 0xa2, 0xe0, + 0x18, 0xe7, 0x6a, 0x17, 0x43, 0x0c, 0x23, 0xc2, + 0x9a, 0x42, 0x2f, 0x94, 0xc8, 0xa5, 0x29, 0xe5, + 0x01, 0x0c, 0x8a, 0x5f, 0x27, 0x13, 0xca, 0x84, + 0x99, 0xd6, 0x85, 0x04, 0xa8, 0x49, 0x9d, 0xf0, + 0x17, 0xe7, 0x7e, 0x03, 0x32, 0xc5, 0x0d, 0x00, + 0xf0, 0x30, 0x18, 0x0c, 0x06, 0x03, 0x01, 0x80, + 0xc0, 0x8d, 0x14, 0xb0, 0xb7, 0x45, 0x4c, 0x0c, + 0x30, 0x5e, 0x0a, 0x69, 0x08, 0xbe, 0x54, 0x2c, + 0x94, 0x08, 0xa4, 0xd2, 0x09, 0x4c, 0x97, 0x41, + 0x40, 0x3c, 0x0c, 0x06, 0x03, 0x01, 0x80, 0xc0, + 0x60, 0x46, 0xa0, 0x58, 0x18, 0xe6, 0xc8, 0x17, + 0x43, 0x0c, 0x0f, 0x82, 0x9a, 0x42, 0x2f, 0xcd, + 0xa4, 0x09, 0xf3, 0x7d, 0x02, 0x09, 0x4c, 0x97, + 0x3f, 0x40, 0x3c, 0x0c, 0x06, 0x03, 0x01, 0x80, + 0xc0, 0x8c, 0x30, 0x9f, 0x58, 0x18, 0xe6, 0x88, + 0x17, 0x43, 0x0c, 0x07, 0x82, 0x9a, 0x42, 0x2f, + 0x91, 0x08, 0xa4, 0x62, 0x69, 0x04, 0xa6, 0x4b, + 0x9e, 0xa8, 0x1e, 0x06, 0x03, 0x01, 0x80, 0xc0, + 0x66, 0x30, 0x18, 0x4f, 0x30, 0x0c, 0x73, 0x25, + 0x0b, 0xa1, 0x86, 0x08, 0xe1, 0x4d, 0x21, 0x17, + 0xc9, 0xa4, 0xf2, 0x21, 0x14, 0x9a, 0x41, 0x29, + 0x92, 0xe7, 0x6a, 0x07, 0x81, 0x80, 0xc0, 0x60, + 0x30, 0x21, 0x8c, 0x06, 0x13, 0xac, 0x03, 0x1c, + 0xc1, 0x42, 0xe8, 0x61, 0x81, 0x38, 0x53, 0x48, + 0x45, 0xf2, 0x69, 0x24, 0xa6, 0x43, 0x26, 0x90, + 0x4a, 0x64, 0xba, 0x53, 0x05, 0x8e, 0x5d, 0xc1, + 0x74, 0x30, 0xc0, 0x40, 0x29, 0x24, 0x42, 0x79, + 0x2e, 0x73, 0xe1, 0x63, 0x96, 0xf0, 0x5d, 0x0c, + 0x30, 0x00, 0x0a, 0x49, 0x10, 0x86, 0x41, 0x27, + 0x10, 0xc8, 0xa4, 0xc9, 0xaf, 0x85, 0x8e, 0x59, + 0x41, 0x74, 0x30, 0xc1, 0xdc, 0x29, 0x24, 0x42, + 0x09, 0x0a, 0x5a, 0xe0, 0x54, 0x05, 0x0d, 0x20, + 0xfc, 0x16, 0xe8, 0x43, 0x01, 0x86, 0x0c, 0x81, + 0x49, 0x22, 0x14, 0x88, 0xa5, 0x42, 0x91, 0x64, + 0x14, 0x35, 0x83, 0x58, 0x5b, 0xa0, 0xe6, 0x06, + 0x18, 0x28, 0x85, 0x24, 0x88, 0x49, 0x23, 0x93, + 0xa5, 0x60, 0x04, 0x50, 0x50, 0xda, 0x0a, 0xe1, + 0x6e, 0x82, 0xf8, 0x18, 0x60, 0x7a, 0x14, 0x92, + 0x21, 0x64, 0x8a, 0x53, 0x05, 0x0d, 0xe0, 0x8c, + 0x16, 0xe8, 0x27, 0x01, 0x86, 0x05, 0x81, 0x49, + 0x22, 0x13, 0x89, 0xe0, 0xa1, 0xc4, 0x0d, 0x82, + 0xdd, 0x03, 0xe0, 0x30, 0xc0, 0x70, 0x29, 0x24, + 0x49, 0x3b, 0x01, 0x3c, 0xa6, 0x45, 0x05, 0x0e, + 0x60, 0x46, 0x16, 0xe8, 0x15, 0x81, 0x86, 0x01, + 0x21, 0x49, 0x22, 0x12, 0x08, 0xa4, 0xc2, 0x84, + 0x04, 0x42, 0xde, 0x75, 0x3a, 0x1c, 0x0e, 0xb0, + 0xff, 0x03, 0x25, 0x72, 0x44, 0x5b, 0x00, 0xf2, + 0xa7, 0x9d, 0x4e, 0x87, 0x03, 0xa9, 0xd2, 0xb6, + 0xc3, 0x53, 0x85, 0x69, 0x0e, 0xe0, 0x5e, 0x16, + 0x4a, 0xd3, 0x08, 0xb6, 0x6f, 0xc0, 0x65, 0xad, + 0x28, 0x51, 0x2b, 0x34, 0x83, 0xb8, 0x0a, 0x05, + 0xd6, 0x2b, 0x02, 0x2d, 0x1f, 0x4b, 0x04, 0xa4, + 0x10, 0xbb, 0x03, 0x0c, 0x52, 0x08, 0xf9, 0x2a, + 0xe3, 0x10, 0x40, 0x10, 0x2c, 0x70, 0x61, 0x2b, + 0xe8, 0x2a, 0x25, 0xe0, 0x31, 0x15, 0xc9, 0x68, + 0x0d, 0x92, 0x79, 0x03, 0x1c, 0x59, 0xc0, 0xcb, + 0x26, 0xd0, 0x1e, 0x88, 0x23, 0x9c, 0x00, 0xa3, + 0xa1, 0xbe, 0x50, 0x46, 0x0a, 0x88, 0x58, 0xd8, + 0xe0, 0x66, 0x57, 0x59, 0x63, 0x01, 0xbe, 0x22, + 0xa0, 0x0a, 0x92, 0x40, 0x18, 0xe0, 0x44, 0x57, + 0x51, 0x00, 0xae, 0x04, 0xe0, 0x21, 0x80, 0x90, + 0x1c, 0xe0, 0x52, 0x46, 0x53, 0x64, 0x10, 0x00, + 0x14, 0x30, 0x8b, 0x48, 0x9a, 0x4c, 0xd1, 0x13, + 0x2b, 0x61, 0xb2, 0x3c, 0x40, 0x74, 0x8e, 0x00, + 0x51, 0xa5, 0x08, 0x67, 0xb9, 0x2a, 0x38, 0x80, + 0xe1, 0x18, 0x40, 0x29, 0x9d, 0x0c, 0x26, 0x3a, + 0x6e, 0x00, 0xb6, 0x03, 0x22, 0x30, 0x9f, 0x97, + 0xda, 0x63, 0xd7, 0x16, 0x69, 0x00, 0x30, 0x82, + 0x3d, 0xdf, 0x6c, 0x8f, 0x72, 0xc2, 0xa3, 0xdd, + 0xd0, 0xa8, 0xe7, 0x29, 0xda, 0x02, 0x60, 0x73, + 0x88, 0x80, 0x5c, 0xa2, 0x6a, 0x47, 0x38, 0xe7, + 0x84, 0x2a, 0x39, 0xe5, 0x0a, 0x8e, 0xba, 0x42, + 0xa0, 0x26, 0x46, 0xc3, 0x61, 0x8e, 0x31, 0x27, + 0x31, 0x80, 0x18, 0x5b, 0x0d, 0x90, 0xd2, 0x03, + 0xa4, 0x2c, 0x02, 0x8d, 0x17, 0x43, 0x1d, 0xc2, + 0xb8, 0x2c, 0x71, 0x59, 0x0b, 0x84, 0x0a, 0x40, + 0xc7, 0x15, 0x20, 0x33, 0x45, 0x74, 0xc6, 0x10, + 0x0c, 0x0b, 0x61, 0xb2, 0x14, 0xc0, 0x74, 0x84, + 0x20, 0x51, 0xa2, 0x90, 0x63, 0xb8, 0x41, 0x05, + 0xda, 0x2f, 0x43, 0x7b, 0x85, 0xab, 0x08, 0x20, + 0x18, 0x06, 0x43, 0x29, 0xe2, 0x12, 0x02, 0x7d, + 0x05, 0x42, 0x71, 0x64, 0x03, 0x03, 0xc0, 0xe0, + 0x60, 0x30, 0x18, 0x0c, 0x06, 0x03, 0x08, 0x49, + 0x81, 0xa4, 0xdd, 0x03, 0x90, 0x39, 0x1d, 0x22, + 0x40, 0x25, 0xc8, 0x0f, 0x01, 0xb2, 0x6d, 0x60, + 0x6e, 0x32, 0x99, 0x20, 0xa8, 0x07, 0x08, 0x36, + 0x45, 0x8e, 0x10, 0xd5, 0x30, 0x83, 0x52, 0x11, + 0xa1, 0xd0, 0x36, 0x93, 0x71, 0x90, 0xca, 0x78, + 0x81, 0x48, 0x5a, 0x4d, 0xc6, 0x43, 0x29, 0xe0, + 0x15, 0x02, 0x35, 0x90, 0x0c, 0x0f, 0x03, 0x81, + 0x80, 0xc0, 0x60, 0x30, 0x18, 0x0c, 0x20, 0x34, + 0x06, 0x13, 0x71, 0x90, 0x40, 0x69, 0x33, 0x42, + 0x2b, 0x8c, 0xa6, 0xc3, 0x9c, 0x34, 0x80, 0xdb, + 0x06, 0x89, 0x3b, 0x1b, 0xcd, 0x26, 0x41, 0x04, + 0x30, 0xc0, 0xc8, 0x69, 0x33, 0x40, 0xaa, 0x8e, + 0xc6, 0x93, 0x94, 0x0f, 0x00, 0xc3, 0x01, 0x90, + 0x36, 0xc0, 0xd4, 0x0d, 0x10, 0x8b, 0x00, 0x54, + 0x09, 0x14, 0xed, 0x03, 0x10, 0x39, 0xc1, 0x94, + 0x2e, 0x50, 0x82, 0x23, 0x9c, 0x09, 0x42, 0x15, + 0x02, 0x52, 0x85, 0x17, 0x60, 0x30, 0x10, 0xa8, + 0x15, 0x1c, 0x2a, 0x05, 0x40, 0x5b, 0x83, 0x00, + 0x19, 0x0d, 0x26, 0x68, 0x0b, 0x01, 0xa0, 0xd2, + 0x64, 0x32, 0xc1, 0x74, 0x2c, 0x70, 0xcf, 0x03, + 0x99, 0xd0, 0xc3, 0x04, 0xd0, 0x10, 0x1e, 0xa1, + 0x36, 0x06, 0xf8, 0x06, 0x84, 0xfe, 0x27, 0x62, + 0x22, 0x81, 0x28, 0x48, 0xa0, 0xbc, 0x06, 0xf3, + 0x69, 0xc2, 0x00, 0xc0, 0x65, 0x10, 0x0c, 0x07, + 0xb1, 0x0c, 0x19, 0xf9, 0xf4, 0xfb, 0x12, 0x10, + 0x11, 0x08, 0x0f, 0xa7, 0xd8, 0x30, 0x81, 0x8c, + 0xde, 0x6d, 0x38, 0x40, 0x50, 0x0c, 0xa2, 0x01, + 0x80, 0xf6, 0x1e, 0x41, 0x73, 0x83, 0x78, 0x0b, + 0x4c, 0x70, 0xbc, 0x03, 0x94, 0x02, 0x02, 0x15, + 0x0e, 0x60, 0x3d, 0x9e, 0xe0, 0x10, 0x16, 0x43, + 0xa9, 0xc2, 0x0c, 0xe0, 0x6f, 0x84, 0x20, 0x5c, + 0xcf, 0x82, 0x03, 0x74, 0x0d, 0x00, 0xc7, 0x05, + 0x90, 0xb7, 0xc0, 0x40, 0x2c, 0x30, 0x55, 0x01, + 0x01, 0xf0, 0x14, 0x62, 0x84, 0xd8, 0x1a, 0x4d, + 0xc0, 0xa3, 0x84, 0x09, 0x40, 0xe7, 0x06, 0xf0, + 0x3b, 0xc2, 0x50, 0x0c, 0x80, 0xa1, 0xfc, 0x30, + 0xc0, 0xe0, 0x20, 0x18, 0x0f, 0x61, 0xa4, 0x06, + 0x28, 0x43, 0x01, 0xd2, 0x00, 0x80, 0x45, 0x39, + 0x40, 0x84, 0x0e, 0x50, 0x9d, 0x03, 0x79, 0xd4, + 0xe9, 0x07, 0x60, 0x33, 0x08, 0x20, 0x44, 0x07, + 0x83, 0xa0, 0x80, 0xef, 0x01, 0xb0, 0x34, 0x42, + 0xf4, 0x0e, 0x90, 0xa2, 0x03, 0x29, 0x96, 0x1b, + 0xa1, 0x20, 0x3e, 0x9f, 0x44, 0x40, 0xa1, 0x94, + 0x23, 0x80, 0xe0, 0x20, 0x19, 0x42, 0x24, 0x0e, + 0x02, 0x01, 0xfc, 0x22, 0x42, 0x5b, 0x0f, 0xd0, + 0x3a, 0x08, 0x07, 0xe7, 0xd3, 0xec, 0x11, 0x04, + 0x60, 0x3d, 0x05, 0x1d, 0xcd, 0x06, 0x98, 0x38, + 0x80, 0x28, 0xdc, 0x4c, 0x87, 0x40, 0x1c, 0xc4, + 0x03, 0x11, 0x58, 0x80, 0xe8, 0x6f, 0x10, 0x1b, + 0x89, 0x90, 0xdc, 0x03, 0x98, 0x2a, 0x02, 0x60, + 0x70, 0x8a, 0xe0, 0x1d, 0x01, 0x43, 0xf8, 0x2b, + 0x85, 0xa4, 0xcc, 0x20, 0x82, 0xf0, 0x1d, 0x0d, + 0xf0, 0x16, 0x03, 0x7c, 0x21, 0xc2, 0xc3, 0x00, + 0x70, 0x10, 0x41, 0x64, 0x0c, 0x86, 0x93, 0x30, + 0x28, 0xdc, 0x4c, 0x85, 0xa0, 0x1c, 0xc4, 0x10, + 0x56, 0x03, 0x21, 0xbc, 0x14, 0x28, 0x82, 0xa8, + 0x18, 0xe0, 0x20, 0x02, 0x90, 0x54, 0x13, 0x80, + 0xde, 0x70, 0x05, 0x41, 0x24, 0x0c, 0x70, 0x60, + 0x03, 0x0c, 0x29, 0x00, 0x41, 0x02, 0x90, 0x1e, + 0x88, 0x0d, 0x26, 0x60, 0x51, 0x8a, 0x1c, 0xa0, + 0x69, 0x37, 0x02, 0x8e, 0x10, 0x00, 0x03, 0x9c, + 0x2e, 0x40, 0xef, 0x0d, 0xe0, 0x32, 0x02, 0x86, + 0x46, 0x43, 0xa9, 0xc0, 0x40, 0x3f, 0x3e, 0x9f, + 0x44, 0x03, 0x01, 0xe8, 0x28, 0xee, 0x68, 0x34, + 0x9b, 0x0c, 0xa0, 0xa3, 0x81, 0xbe, 0x05, 0xc0, + 0x70, 0x84, 0x00, 0x19, 0x44, 0x07, 0xa8, 0x28, + 0x01, 0xbe, 0x1d, 0x00, 0x6c, 0x82, 0xd8, 0x18, + 0x4d, 0x90, 0xe7, 0x03, 0x91, 0x96, 0x10, 0xe0, + 0x61, 0x87, 0x90, 0x0c, 0xa0, 0xa2, 0x06, 0xf3, + 0x80, 0x2a, 0x03, 0x00, 0x64, 0x34, 0x99, 0xa0, + 0x04, 0x13, 0x08, 0x64, 0x81, 0xb2, 0x07, 0x80, + 0x61, 0x36, 0x43, 0x20, 0x07, 0x62, 0x03, 0x49, + 0xb6, 0x00, 0x20, 0x64, 0x34, 0x98, 0x60, 0x72, + 0x02, 0x03, 0x19, 0xbc, 0xda, 0x70, 0x34, 0x9b, + 0x20, 0xb2, 0x06, 0xf3, 0x71, 0xb0, 0xf2, 0x0a, + 0x38, 0x40, 0x84, 0x0e, 0xd0, 0x32, 0x03, 0xac, + 0x0e, 0x00, 0xa6, 0x22, 0x10, 0x11, 0x89, 0x24, + 0x32, 0x61, 0x7c, 0xae, 0x41, 0x27, 0x15, 0x0b, + 0xe4, 0x62, 0x49, 0x30, 0x8a, 0x22, 0x10, 0x11, + 0x49, 0xc5, 0x62, 0x49, 0x48, 0x9e, 0x4e, 0x26, + 0x91, 0x49, 0xc5, 0x41, 0xf8, 0x82, 0x02, 0x40, + 0x6f, 0x38, 0x08, 0x0b, 0x66, 0x93, 0x34, 0x17, + 0x00, 0x74, 0x20, 0x39, 0x0b, 0xcd, 0xe2, 0x01, + 0x8c, 0x17, 0x86, 0xe4, 0x2f, 0x3b, 0x88, 0x06, + 0x70, 0x54, 0x1b, 0xb8, 0xbc, 0xde, 0x20, 0x19, + 0x41, 0x28, 0x6c, 0x50, 0x1e, 0x01, 0x00, 0xe2, + 0x04, 0x22, 0x3b, 0x81, 0xe8, 0x5a, 0x4d, 0xc6, + 0x33, 0x61, 0xd4, 0xc8, 0x65, 0x32, 0x02, 0x8e, + 0x42, 0xf3, 0x78, 0x80, 0xc5, 0x00, 0x40, 0x10, + 0x1b, 0xce, 0x10, 0x45, 0x01, 0x69, 0x98, 0xd2, + 0x6c, 0x32, 0x88, 0x06, 0x03, 0xd1, 0x01, 0xa4, + 0xcc, 0x0a, 0x34, 0x9b, 0x8c, 0x66, 0xc3, 0xa9, + 0x90, 0xca, 0x2d, 0x33, 0x1a, 0x4d, 0x86, 0x50, + 0x51, 0x94, 0xd8, 0x73, 0x32, 0x82, 0x8c, 0x87, + 0x23, 0x79, 0xc0, 0x15, 0x02, 0x00, 0x32, 0x1a, + 0x4c, 0xc0, 0xa1, 0xd8, 0x28, 0x74, 0x20, 0x34, + 0x9b, 0x8c, 0x66, 0xc3, 0xa9, 0x90, 0xca, 0x20, + 0x38, 0x40, 0x20, 0x0e, 0x66, 0x51, 0x69, 0xdc, + 0xde, 0x72, 0x32, 0x08, 0x0d, 0x26, 0xe3, 0x19, + 0xb0, 0xea, 0x64, 0x32, 0x99, 0x04, 0x03, 0xb0, + 0x51, 0x6c, 0xca, 0x6e, 0x32, 0x1a, 0x4c, 0xc5, + 0xd0, 0x50, + }; + +#endif /* !FICL_WANT_LZ_SOFTCORE */ + + +void ficlSystemCompileSoftCore(ficlSystem *system) { - FICL_VM *pVM = pSys->vmList; - CELL id = pVM->sourceID; - int ret = sizeof (softWords); - assert(pVM); - pVM->sourceID.i = -1; - ret = ficlExec(pVM, softWords); - pVM->sourceID = id; - if (ret == VM_ERREXIT) - assert(FALSE); + ficlVm *vm = system->vmList; + int returnValue; + ficlCell oldSourceID = vm->sourceId; + ficlString s; +#if FICL_WANT_LZ_SOFTCORE + char *ficlSoftcoreUncompressed = NULL; + size_t gotUncompressedSize = 0; + returnValue = ficlLzUncompress(ficlSoftcoreCompressed, (unsigned char **)&ficlSoftcoreUncompressed, &gotUncompressedSize); + FICL_VM_ASSERT(vm, returnValue == 0); + FICL_VM_ASSERT(vm, gotUncompressedSize == ficlSoftcoreUncompressedSize); +#endif /* FICL_WANT_LZ_SOFTCORE */ + vm->sourceId.i = -1; + FICL_STRING_SET_POINTER(s, (char *)(ficlSoftcoreUncompressed)); + FICL_STRING_SET_LENGTH(s, ficlSoftcoreUncompressedSize); + returnValue = ficlVmExecuteString(vm, s); + vm->sourceId = oldSourceID; +#if FICL_WANT_LZ_SOFTCORE + free(ficlSoftcoreUncompressed); +#endif /* FICL_WANT_LZ_SOFTCORE */ + FICL_VM_ASSERT(vm, returnValue != FICL_VM_STATUS_ERROR_EXIT); return; } - - +/* end-of-file */ |