diff --git a/uppsrc/Esc/srcdoc.tpp/Esc_en-us.tpp b/uppsrc/Esc/srcdoc.tpp/Esc_en-us.tpp index 6ff64d423..71f7b052b 100644 --- a/uppsrc/Esc/srcdoc.tpp/Esc_en-us.tpp +++ b/uppsrc/Esc/srcdoc.tpp/Esc_en-us.tpp @@ -1,234 +1,244 @@ topic "Esc scripting language"; [b133;a83;*+117 $$1,0#31310162474203024125188417583966:subtitle] -[b83;*+150 $$2,0#07864147445237544204411237157677:title] +[H4;b83;*+150 $$2,0#07864147445237544204411237157677:title] [l321;C@5;1 $$3,3#20902679421464641399138805415013:code] +[b42;a42;ph2 $$4,4#45413000475342174754091244180557:text] +[a83;*6 $$5,5#B3A4428F1E67450ED340E28F681B00E8:caption] [2 $$0,0#00000000000000000000000000000000:Default] [{_}%EN-US -[s0; [*R8 Esc scripting language]&] +[s5; Esc scripting language&] +[s2; Table of contents&] [s0; &] -[s0; Esc is a simple scripting language intended for embedding in +[s0; [^topic`:`/`/Esc`/srcdoc`/Esc`_en`-us`#1^ 1. Introduction]&] +[s0; [^topic`:`/`/Esc`/srcdoc`/Esc`_en`-us`#2^ 2. Value types]&] +[s0; [^topic`:`/`/Esc`/srcdoc`/Esc`_en`-us`#2`_1^ 2.1 Voids]&] +[s0; [^topic`:`/`/Esc`/srcdoc`/Esc`_en`-us`#2`_2^ 2.2 Numbers]&] +[s0; [^topic`:`/`/Esc`/srcdoc`/Esc`_en`-us`#2`_3^ 2.3 Arrays]&] +[s0; [^topic`:`/`/Esc`/srcdoc`/Esc`_en`-us`#2`_4^ 2.4 Maps]&] +[s0; [^topic`:`/`/Esc`/srcdoc`/Esc`_en`-us`#2`_5^ 2.5 Lambdas]&] +[s0; [^topic`:`/`/Esc`/srcdoc`/Esc`_en`-us`#3^ 3. Variables and contexts]&] +[s0; [^topic`:`/`/Esc`/srcdoc`/Esc`_en`-us`#4^ 4. Expressions]&] +[s0; [^topic`:`/`/Esc`/srcdoc`/Esc`_en`-us`#5^ 5. Statements]&] +[s0; [^topic`:`/`/Esc`/srcdoc`/Esc`_en`-us`#6^ 6. Standard library]&] +[s0; &] +[s2;:1: 1. Introduction&] +[s4; Esc is a simple scripting language intended for embedding in Ultimate`+`+ applications.&] -[s0; &] -[s0; It is typeless, value oriented language with simple interfacing +[s4; It is typeless, value oriented language with simple interfacing with C`+`+/U`+`+ code. It is very simple yet quite complete language.&] -[s0; &] -[s2; Value types&] -[s1; voids&] -[s0; All variables have void value before assigned any other value. +[s2;:2: 2. Value types&] +[s1;:2`_1: 2.1 Voids&] +[s4; All variables have void value before assigned any other value. Void type has single value&] [s0; &] [s3; void&] [s0; &] -[s0; and expression can be tested for voidness using [@(128.0.255) is`_void] +[s4; and expression can be tested for voidness using [@(128.0.255) is`_void] function.&] -[s1; numbers&] -[s0; Number is floating point number (corresponding to C type double). +[s1;:2`_2: 2.2 Numbers&] +[s4; Number is floating point number (corresponding to C type double). Examples of number literals:&] [s0; &] [s3; 1&] [s3; 1.123&] [s3; 1.123e`-96&] -[s3; 0x123-|-|[@4 // hexadecimal]&] -[s3; 0123 -|-|[@4 // octal]&] -[s3; 0b10100100-|-|[@4 // binary]&] -[s3; `'x`'-|-|-|[@4 // character code]&] +[s3; 0x123 [@4 // hexadecimal]&] +[s3; 0123 [@4 // octal]&] +[s3; 0b10100100 [@4 // binary]&] +[s3; `'x`' [@4 // character code]&] [s0; &] -[s0; Esc supports common C`-like operations for number values.&] -[s1; arrays&] -[s0; Arrays are ordered random access sequences of other Esc values +[s4; Esc supports common C`-like operations for number values.&] +[s1;:2`_3: 2.3 Arrays&] +[s4; Arrays are ordered random access sequences of other Esc values (nested arrays included). Array values are specified using [@(128.0.255) `[`]] brackets:&] [s0; &] -[s3; `[`]-|-|-|-|[@4 // empty array]&] +[s3; `[`] [@4 // empty array]&] [s3; `[ 1, 2, 3, 4, 5 `]&] -[s3; `[ 1, `[2, 3`], 4 `]-|-|[@4 // array contains nested array]&] -[s3; `"Hello`"-|-|-|[@4 // equivalent to `[`'H`', `'e`', `'l`', `'l`', -`'o`'`]]&] -[s3; `[ 1, 2, 3 `* alfa `]-|[@4 // expressions can be used as well]&] +[s3; `[ 1, `[2, 3`], 4 `] [@4 // array contains nested array]&] +[s3; `"Hello`" [@4 // equivalent to `[`'H`', `'e`', `'l`', +`'l`', `'o`'`]]&] +[s3; `[ 1, 2, 3 `* alfa `] [@4 // expressions can be used as well]&] [s0; &] -[s0; Number of elements in the array can be retrieved by standard +[s4; Number of elements in the array can be retrieved by standard function [*C count].&] -[s0; &] -[s0; Accessing elements of arrays is provided by subscript [@(128.0.255) `[ +[s4; Accessing elements of arrays is provided by subscript [@(128.0.255) `[ `]] operator:&] [s0; &] [s3; a`[0`]&] [s3; a`[1`] `= 3&] [s0; &] -[s0; First element of array corresponds to index [@(128.0.255) `[0`]].&] -[s0; &] -[s0; Negative indexes are allowed and designate elements from the +[s4; First element of array corresponds to index [@(128.0.255) `[0`]].&] +[s4; Negative indexes are allowed and designate elements from the end of array: [@(128.0.255) `[`-1`]] is last element of array, [@(128.0.255) `[`-2`]] last but one etc.&] [s0; &] [s3; a`[`-1`]&] [s0; &] -[s0; is equivalent to&] +[s4; is equivalent to&] [s0; &] [s3; a`[count(a) `- 1`]&] [s0; &] -[s0; When index is used for the r`-value (standing on the right side +[s4; When index is used for the r`-value (standing on the right side of [@(128.0.255) `=]), index is range checked. For l`-value, if non`-negative index designates element past the of the array, array is expanded with void values to create this element.&] -[s0; &] -[s0; `"Empty`" index [@(128.0.255) `[`]] designates element past last +[s4; `"Empty`" index [@(128.0.255) `[`]] designates element past last and can be used to add elements to the array:&] [s0; &] [s3; x`[`] `= item&] [s0; &] -[s0; is equivalent to&] +[s4; is equivalent to&] [s0; &] [s3; x`[count(x)`] `= item&] [s0; &] -[s0; Range of element in array can be obtained or changed using slices:&] +[s4; Range of element in array can be obtained or changed using slices:&] [s0; &] [s3; array`[pos, count`]&] [s0; &] -[s0; designates array slice of [/ count] elements starting with [/ pos] +[s4; designates array slice of [/ count] elements starting with [/ pos] element.&] [s0; &] [s3; x`[start:end`]&] [s0; &] -[s0; designates array slice of [/ end `- start] elements starting with +[s4; designates array slice of [/ end `- start] elements starting with [/ start] .&] -[s0; &] -[s0; Parts of slices can be ommited&] +[s4; Parts of slices can be omitted&] [s0; &] [s3; array`[pos,`]&] -[s0; or&] +[s4; or&] [s3; array`[pos:`]&] [s0; &] -[s0; is equivalent to&] +[s4; is equivalent to&] [s0; &] [s3; array`[pos : count(array)`]&] [s0; &] -[s0; and&] +[s4; and&] [s0; &] [s3; array`[,count`]&] -[s0; or&] +[s4; or&] [s3; array`[:count`]&] [s0; &] -[s0; is equivalent to&] +[s4; is equivalent to&] [s0; &] [s3; array`[0, count`]&] [s0; &] -[s0; When slices are used as l`-value, corresponding part of the +[s4; When slices are used as l`-value, corresponding part of the array is replaced:&] [s0; &] [s3; s `= `"1234`";&] -[s3; s`[1: `-1`] `= `"xXx`";-|[@4 // s is now `"1xXx4`"]&] +[s3; s`[1: `-1`] `= `"xXx`"; [@4 // s is now `"1xXx4`"]&] [s0; &] -[s0; Several operators can be applied to arrays&] +[s4; Several operators can be applied to arrays&] [s0; &] [s3; array1 `+ array2&] [s0; &] -[s0; concatenates two arrays,&] +[s4; concatenates two arrays,&] [s0; &] [s3; array `* number&] [s3; number `* array&] [s0; &] -[s0; repeats array number times.&] +[s4; repeats array number times.&] [s0; &] [s3; array `+`= array1&] [s0; &] -[s0; is equivalent to&] +[s4; is equivalent to&] [s0; &] [s3; array `= array `+ array1&] [s0; &] -[s0; also&] +[s4; also&] [s0; &] [s3; array << array1 << array2 << array3&] [s0; &] -[s0; is equivalent to&] +[s4; is equivalent to&] [s0; &] [s3; array `= array `+ array1 `+ array2 `+ array3&] [s0; &] -[s0; Esc allows [/ void] value on the right side of array concatenation +[s4; Esc allows [/ void] value on the right side of array concatenation expression `- in such cases, operator has no effect.&] -[s1; maps&] -[s0; Maps contain key`-value pairs as entries. Normal subscripts +[s1;:2`_4: 2.4 Maps&] +[s4; Maps contain key`-value pairs as entries. Normal subscripts [@(128.0.255) `[`]] are used to access map entries:&] [s0; &] [s3; map`[key`] `= value&] [s0; &] -[s0; All entries in map that are not assigned a non`-void value have +[s4; All entries in map that are not assigned a non`-void value have void value. This way assigning void to the map key can be considered as removing entry from the map&] [s0; &] [s3; map`[key`] `= void&] [s0; &] -[s0; and testing entry for being void can be considered as test -of key presence in map:&] +[s4; and testing entry for being void can be considered as test of +key presence in map:&] [s0;C &] [s3; if(is`_void(map`[key`])) `{ ... `}&] [s0; &] -[s0; As the special exception, when a void value appears before an +[s4; As the special exception, when a void value appears before an l`-value [@(128.0.255) `[`]], it is changed to the empty map:&] [s0; &] -[s3; x `= void; // x is void&] -[s3; x`[key`] `= value; // x is now map&] +[s3; x `= void; [@4 // x is void]&] +[s3; x`[key`] `= value; [@4 // x is now map]&] [s0; &] -[s0; Maps are also used to create compound data structures. To make +[s4; Maps are also used to create compound data structures. To make this job easier, special [/ .field] syntax is supported:&] [s0; &] [s3; x.field `= value;&] [s0; &] -[s0; is equivalent to&] +[s4; is equivalent to&] [s0; &] [s3; x`[`"field`"`] `= value;&] [s0; &] [s0; Map values can also be specified using `{`} braces:&] [s0; &] -[s3; `{`} // empty map&] +[s3; `{`} [@4 // empty map]&] [s3; `{ `"alfa`":10, `"beta`":20, 20:`"40`" `}&] -[s3; `{ 2 `* a : `"100`" `} // map values can contain expressions&] -[s1; lambdas&] -[s0; Lambdas represent executable Esc code. Lambda values are introduced +[s3; `{ 2 `* a : `"100`" `} [@4 // map values can contain +expressions]&] +[s0; &] +[s1;:2`_5: 2.5 Lambdas&] +[s4; Lambdas represent executable Esc code. Lambda values are introduced using [@(128.0.255) `@] character:&] [s0; &] [s3; `@(x) `{ return 2 `* x; `}&] [s0; &] -[s0; Assigning lambda value to variable is equivalent to defining +[s4; Assigning lambda value to variable is equivalent to defining a function:&] [s0; &] [s3; :foo `= `@(x) `{ return 2 `* x; `};-|[@4 // defines global function foo]&] [s0; &] -[s0; If lambda argument is preceded with [@(128.0.255) `&] character, +[s4; If lambda argument is preceded with [@(128.0.255) `&] character, it designates input`-output argument (other arguments are input only).&] -[s0; &] -[s0; [*@(128.0.255) ... ]at the end of the argument list allows variable +[s4; [@(128.0.255) ...] at the end of the argument list allows variable number of arguments to be present. In that case, additional parameters are passed in [/ argv] variable of type array.&] [s0; &] [s3; :sum `= `@(...) `{ s `= 0; for(i in argv) s `+`= argv`[i`]; `}&] [s0; &] -[s0; Parameters can have default values separated by [@(128.0.255) `=]:&] +[s4; Parameters can have default values separated by [@(128.0.255) `=]:&] [s0; &] [s3; :bar `= `@(x `= 0) `{ ... `}&] [s0; &] -[s0; To make life easier, alternative form of function definition +[s4; To make life easier, alternative form of function definition is available:&] [s0; &] [s3; #:foo(x) `{ return 2 `* x; `}&] -[s2;i150;O9; Variables and contexts&] [s0; &] -[s0; Variable names in Esc follow C principles (are case sensitive, +[s2;i150;O9;:3: 3. Variables and contexts&] +[s4; Variable names in Esc follow C principles (are case sensitive, start with alphabetic character or [@(128.0.255) `_] and can contain alphabetic characters, [@(128.0.255) `_] and numbers).&] -[s0; &] -[s0; Esc distinguishes three types of variables contexts using [*@(128.0.255) .] +[s4; Esc distinguishes three types of variables contexts using [*@(128.0.255) .] and [*@(128.0.255) :] characters:&] [s0; &] [s3; var-|-|[@4 // local]&] [s3; .var-|-|[@4 // instance]&] [s3; :var-|-|[@4 // global]&] [s0; &] -[s0; Local variables are specific to function, global variables are +[s4; Local variables are specific to function, global variables are shared among all functions. Instance variables &] -[s0; represent map values (keys designate variable names) of map +[s4; represent map values (keys designate variable names) of map whose lambda value is invoked, or can be forced using binary [@(128.0.255) !] bind operator:&] [s0; &] @@ -238,28 +248,26 @@ whose lambda value is invoked, or can be forced using binary [s3; var1.x `= 0;&] [s3; var.Next()! var1;-|-|[@4 // var1.x is now 1]&] [s0; &] -[s0; To make programmer`'s life easier, one exception applies concerning +[s4; To make programmer`'s life easier, one exception applies concerning context `- when invoking lambda from local variable and lambda is not present in it, instance and global contexts (in this order) are tried as well:&] [s0; &] [s3; beta(x)&] -[s3; &] -[s0; Tries to get lambda form local [/ beta] variable first, then (if +[s0; &] +[s4; Tries to get lambda form local [/ beta] variable first, then (if no lambda found) from instance [/ beta ]variable and finally (if still no lambda) from global [/ beta]. Of course, [*@(128.0.255) .] and [*@(128.0.255) :] can still be used to designate context:&] [s0; &] -[s3; :beta(x)-|-|-|-|[@4 // calls global beta even if local or instance -beta is present]&] +[s3; :beta(x) [@4 // calls global beta even if local or instance beta +is present]&] [s0; &] -[s2; Expressions&] -[s0; &] -[s0; When expressions are used as logical values, void, zero number +[s2;:4: 4. Expressions&] +[s4; When expressions are used as logical values, void, zero number and map or array with zero elements represent [/ false], other values are [/ true.]&] -[s0;/ &] -[s0; In following table, thick lines divide operators with the same +[s4; In following table, thick lines divide operators with the same priority, with topmost items having the highest priority:&] [s0; &] [ {{4468:5532h1;@(216) [s0; Operator] @@ -368,7 +376,7 @@ just skipped.] :: [s0; Same as [C l`-number `= l`-number % number].]}}&] [s0; &] [s0; &] -[s2; Statements&] +[s2;:5: 5. Statements&] [s0; &] [ {{4508:5492h1;@(216) [s0; Statement] :: [s0; Comments] @@ -428,7 +436,7 @@ case and default exists, does nothing.] :: [s0; [*C #:][/C name][*C (][/C args][*C ) `{ ... `}]] :: [s0; Same as [C :][/C name][C `= `@(][/C args][C ) `{ ... `};]]}}&] [s0; &] -[s2; [3 Standard library]&] +[s2;:6: 6. Standard library&] [s0;3 &] [ {{2479:7521h1;@(216) [s0; Function] :: [s0; Comments] diff --git a/uppsrc/Esc/srcdoc.tpp/Esc_en-us.tppi b/uppsrc/Esc/srcdoc.tpp/Esc_en-us.tppi index 1d246633e..6c69b9293 100644 --- a/uppsrc/Esc/srcdoc.tpp/Esc_en-us.tppi +++ b/uppsrc/Esc/srcdoc.tpp/Esc_en-us.tppi @@ -1,23 +1,24 @@ TITLE("Esc scripting language") COMPRESSED -120,156,173,59,13,115,219,54,178,127,5,113,174,141,156,200,178,40,201,31,145,210,94,122,110,122,231,153,54,237,52,109,239,205,104,120,37,68,65,18,107,138,84,9,202,150,95,210,247,219,223,238,226,131,32,68,49,118,114,109,167,150,8,236,7,246,123,23,212,116,22,12,135,19,126,57,156,60,127,17,4,23,236,111,127,11,186,253,167,195,96,24,244,131,243,193,232,98,52,232,15,251,131,81,48,56,11,46,47,71,193,197,217,229,240,229,249,249,88,110,103,101,82,166,34,156,206,20,232,89,31,64,7,0,218,191,184,60,31,5,0,56,58,27,12,47,206,70,128,96,52,10,2,248,28,156,93,156,95,92,140,53,92,58,28,4,147,171,215,103,147,0,0,135,221,225,211,65,255,101,127,112,126,241,114,52,8,70,231,240,111,48,124,249,50,24,94,94,246,207,70,128,61,24,142,227,124,14,112,3,216,222,71,58,31,249,103,252,173,88,240,109,90,134,211,247,191,255,245,197,155,183,39,191,190,99,83,217,159,176,233,243,159,47,217,27,25,51,25,23,201,166,76,178,37,75, -121,182,220,242,165,8,191,12,105,139,254,131,155,18,201,56,147,201,122,147,138,6,0,150,100,165,200,230,98,206,22,121,193,196,122,38,230,115,92,79,50,246,107,90,38,107,94,138,232,69,244,130,241,205,38,77,98,94,38,121,38,123,117,34,215,37,210,40,239,55,34,21,82,118,217,45,79,183,130,229,69,34,0,245,188,162,116,151,148,43,195,8,82,45,22,60,70,82,244,252,10,169,156,254,74,180,80,76,61,141,246,86,20,247,6,232,94,148,236,207,109,82,10,216,129,15,224,131,65,238,178,52,152,176,223,136,5,100,73,226,147,96,194,110,243,100,46,245,166,111,210,20,152,44,18,62,3,134,217,138,223,10,90,214,140,207,4,72,66,48,46,101,178,204,128,127,158,221,179,188,92,137,66,173,247,216,111,184,23,113,3,168,4,222,178,37,240,70,107,14,19,67,69,178,46,41,158,205,153,216,109,10,16,19,200,145,197,60,3,106,172,20,178,212,242,71,144,12,86,217,22,209,178,233,235,78,48,184,236,245,123,131,179,179,99,144,70,244,59,110,8,217,98,155,197,168, -137,158,62,92,182,5,189,21,230,120,111,233,27,10,111,145,230,156,180,189,201,65,224,122,27,235,196,121,1,44,108,242,140,52,93,230,236,74,29,103,158,111,65,34,199,61,246,102,199,81,190,146,229,11,3,148,130,216,11,158,202,113,253,140,129,249,219,3,255,112,63,139,232,228,229,185,126,208,223,193,131,147,15,39,31,166,175,71,236,244,148,173,196,142,207,69,12,198,149,134,102,11,236,96,206,150,60,46,157,197,25,184,114,31,255,115,118,204,146,140,23,247,102,75,244,108,23,61,195,85,187,30,175,120,193,99,96,154,204,169,193,47,228,118,179,201,139,82,162,49,173,65,27,87,209,73,154,220,128,225,110,224,160,100,231,164,18,125,126,210,175,52,2,231,69,193,239,173,57,209,23,120,134,70,63,23,5,232,178,0,77,231,107,198,227,24,149,41,197,159,91,145,197,74,158,202,148,144,1,133,146,117,50,165,127,133,19,60,35,78,183,224,143,160,6,66,108,182,33,122,185,1,169,45,18,216,220,100,31,209,52,10,67,54,131,83,223,136,210,87,20,46,42,249,88,9, -137,245,166,188,87,100,173,24,167,44,232,178,65,151,13,187,108,212,101,103,44,170,175,68,83,92,139,66,88,101,10,159,198,69,88,64,146,89,201,19,16,156,123,36,139,225,232,95,34,77,243,232,168,206,4,56,52,156,16,66,5,26,34,112,249,236,95,209,51,32,244,76,168,63,105,237,79,30,61,131,51,238,49,203,162,231,140,167,11,78,60,25,196,214,207,164,113,180,173,68,158,36,187,3,62,60,131,208,62,3,250,129,32,182,6,110,80,17,12,84,101,78,166,48,20,162,132,176,118,11,104,102,16,149,74,208,50,47,230,214,29,33,48,95,129,12,182,89,25,122,33,242,27,50,4,84,153,69,15,164,140,198,37,219,20,249,109,50,215,104,183,51,21,166,247,212,203,80,191,202,60,243,194,211,47,143,166,125,171,44,248,18,68,33,139,190,98,195,58,31,223,37,133,44,13,15,150,5,86,5,4,137,90,72,32,31,236,246,168,3,122,255,88,111,197,18,60,229,86,40,8,109,164,28,148,124,71,113,115,206,230,2,131,40,228,144,234,220,139,2,28,3,5,11,89,199, -114,48,222,55,229,147,0,79,11,178,73,121,3,203,221,6,128,1,2,208,238,217,22,118,102,64,162,140,123,123,98,34,204,245,115,0,149,154,29,238,193,144,82,59,28,232,156,176,61,232,127,175,68,166,101,150,72,101,100,24,56,240,140,69,116,162,146,74,135,140,5,13,32,87,102,85,36,203,85,9,201,99,46,240,76,222,97,190,10,143,187,21,70,8,38,144,61,227,149,0,191,158,247,216,119,128,59,213,120,97,23,68,232,60,139,78,178,154,42,42,193,75,43,186,13,74,6,73,3,61,107,216,93,109,1,40,129,221,134,83,33,64,249,184,74,136,100,18,113,33,80,139,229,42,177,8,61,91,136,142,222,96,60,137,142,14,152,15,42,231,16,87,164,52,180,23,215,81,129,42,159,207,43,195,129,239,150,109,207,248,119,136,30,205,29,146,212,250,49,170,221,25,213,238,142,15,33,248,153,164,95,5,6,140,11,181,152,144,207,48,230,1,195,160,23,72,58,176,219,132,103,9,21,147,240,3,49,193,70,211,77,14,149,18,209,246,205,201,17,146,162,67,104,200,74,78, -117,116,169,132,2,102,85,148,182,136,130,13,128,55,108,210,144,58,44,109,31,131,231,61,138,40,122,42,24,62,1,183,209,214,27,60,195,248,137,23,42,220,41,113,88,177,173,215,32,236,249,65,225,88,14,243,98,111,113,252,72,7,182,128,108,204,180,43,227,163,99,31,13,152,96,35,100,183,174,40,159,163,113,163,30,31,196,83,255,128,17,80,76,209,2,195,160,106,82,87,229,248,245,34,110,3,66,174,57,54,5,14,177,73,121,44,230,158,5,74,52,244,232,8,42,174,81,116,52,49,15,33,101,140,25,197,70,181,188,251,159,29,172,218,116,74,105,42,203,239,16,16,150,0,210,227,248,29,164,69,40,16,109,126,178,138,166,206,65,251,179,91,54,185,130,8,24,182,24,248,105,80,199,10,21,5,52,29,66,89,102,121,103,80,116,27,112,96,17,160,138,53,253,84,87,110,88,27,224,122,29,49,200,6,34,154,177,118,189,21,250,29,33,253,140,161,112,191,0,161,40,86,31,173,101,102,64,237,33,61,28,80,86,55,194,189,122,101,164,99,62,13,236,167,225,127, -131,141,74,234,246,147,135,23,235,84,74,232,18,29,92,117,31,186,191,107,202,99,182,12,212,74,195,162,200,105,120,32,136,64,244,148,219,120,5,198,33,5,68,64,99,45,212,74,101,57,19,139,133,136,75,83,102,175,249,198,88,203,15,240,209,212,151,236,70,220,155,196,186,225,80,210,160,103,192,185,161,52,147,61,246,54,47,160,177,168,202,40,217,152,138,172,83,161,89,170,50,29,168,25,44,158,199,192,74,52,69,162,228,27,126,171,167,59,74,13,138,39,68,76,229,138,151,68,37,203,75,167,153,84,217,218,105,55,189,246,179,199,126,193,28,123,7,98,84,64,232,221,180,172,243,31,226,6,86,140,119,129,72,80,248,133,10,15,133,88,67,33,137,101,38,48,115,95,213,90,0,212,122,162,189,78,149,178,49,54,166,14,50,208,210,76,88,118,26,233,35,4,218,1,50,136,90,199,174,71,11,68,139,244,202,112,144,44,58,166,161,237,84,220,28,131,126,222,179,94,175,199,162,191,60,17,75,58,9,181,64,160,94,177,139,197,6,237,171,203,238,48,86,114,183,133, -135,144,35,56,152,133,105,229,51,27,55,155,108,1,138,40,26,53,152,228,173,5,173,218,163,138,115,155,70,141,196,38,24,23,169,66,51,242,83,73,182,110,40,213,46,140,158,117,69,24,187,86,101,179,204,173,69,234,114,11,199,28,144,29,160,142,230,37,135,244,90,108,227,114,91,160,145,255,146,3,170,27,93,144,253,145,207,152,224,50,17,69,215,202,7,188,181,7,157,98,10,254,42,239,193,107,136,3,221,242,238,101,132,157,218,90,241,252,200,26,42,58,34,248,232,200,61,247,222,57,77,57,137,150,67,167,157,237,119,180,209,251,232,47,106,97,247,124,144,86,108,215,170,229,72,207,33,37,97,243,23,29,141,3,72,167,209,209,76,148,248,101,0,95,6,253,113,116,52,234,67,81,170,204,73,237,31,80,78,128,90,0,114,89,95,45,34,230,117,157,69,19,108,156,70,82,135,165,148,175,103,115,110,34,211,247,234,27,102,20,178,120,104,86,118,34,222,150,56,93,162,248,169,198,89,106,155,219,205,39,224,86,249,124,27,31,106,231,95,135,213,16,195,23,198,107, -168,88,241,40,208,144,110,139,76,157,104,55,105,112,26,19,66,82,135,60,90,152,153,127,237,41,23,74,193,69,66,32,220,54,182,30,245,241,34,207,169,72,56,200,69,85,55,16,54,56,240,50,205,103,96,150,182,85,6,20,94,1,113,189,48,76,242,98,185,85,165,54,118,198,2,4,100,186,18,79,66,95,58,18,34,47,118,202,216,36,219,108,203,232,36,223,150,240,183,66,217,81,243,23,243,221,104,98,67,29,99,122,127,236,21,175,211,231,53,138,24,152,66,94,186,253,171,170,184,52,246,52,193,70,70,229,75,43,225,204,206,22,42,170,37,89,191,54,152,30,187,206,84,190,192,172,216,197,182,39,65,33,129,188,160,174,227,107,1,199,83,140,66,183,132,17,2,172,114,138,51,151,229,109,88,145,65,94,112,138,71,57,216,43,98,198,114,187,214,26,131,35,144,206,168,10,132,29,16,33,59,137,106,106,150,183,199,248,88,149,58,203,219,104,154,68,225,190,77,253,84,177,132,110,66,249,107,174,38,213,198,186,165,64,190,75,53,207,216,235,109,125,107,154,241,194, -88,19,241,116,48,5,152,160,151,38,11,97,3,30,79,129,149,76,245,190,112,150,53,202,193,90,153,178,101,250,136,99,240,91,158,164,40,43,143,131,167,104,208,109,14,53,152,36,193,89,127,242,227,75,156,44,155,185,49,245,171,16,35,196,174,148,117,62,127,179,154,7,65,81,65,128,97,96,145,163,93,176,43,208,122,146,197,9,205,87,59,168,84,84,58,136,12,242,40,30,162,171,218,40,101,239,60,221,172,56,196,179,36,118,230,153,144,135,61,153,254,30,218,238,217,68,173,38,72,185,55,53,209,128,122,126,236,27,63,114,61,79,168,6,216,38,114,133,21,248,170,16,122,174,142,114,174,134,232,70,16,38,146,121,110,163,200,120,79,199,142,247,250,209,30,48,59,67,194,52,143,171,105,112,175,190,150,100,56,90,137,133,89,30,215,151,85,220,241,66,205,247,136,207,225,222,153,173,198,232,154,198,126,186,38,108,121,91,129,107,172,119,214,57,70,201,180,138,106,18,61,89,177,227,128,84,29,135,206,15,78,162,233,64,177,32,157,49,217,109,205,116,142,81,200,184, -251,110,149,75,81,143,225,9,26,214,109,126,35,230,93,154,60,168,114,12,60,160,202,39,106,68,238,233,252,73,136,207,231,135,230,136,192,64,79,185,225,196,121,242,22,116,171,125,84,121,231,14,47,106,40,210,123,187,58,199,147,218,124,87,225,211,213,79,192,194,106,123,112,128,78,231,248,9,45,79,234,88,2,7,77,216,28,23,54,69,190,132,216,180,22,69,244,76,214,163,4,77,3,77,201,168,91,82,178,218,24,130,7,202,74,27,48,182,40,119,106,158,7,178,117,18,39,149,210,105,205,110,200,166,245,50,113,86,154,128,142,46,159,148,93,107,155,180,83,155,146,245,148,14,13,152,1,144,46,13,142,201,178,176,131,176,35,106,79,51,88,214,64,144,210,223,204,209,169,229,0,147,93,138,210,178,138,81,80,177,10,89,2,193,156,44,177,192,9,112,23,179,86,6,28,224,240,176,2,131,74,243,88,29,212,50,174,17,176,176,118,104,8,170,96,246,247,132,0,194,3,120,128,69,163,17,232,195,26,250,61,246,227,2,7,29,5,166,183,7,7,7,48,105,133,221, -25,9,86,174,162,5,185,151,77,148,152,188,187,14,16,70,106,139,16,58,145,184,69,45,47,180,160,192,131,236,153,105,89,149,30,168,76,215,216,6,16,20,235,229,160,55,178,113,111,29,106,115,155,124,153,40,219,65,183,239,82,199,208,101,255,43,138,220,148,7,40,3,116,245,188,208,93,52,37,0,218,97,39,110,85,8,1,193,46,160,134,22,208,188,56,119,147,138,38,172,65,167,32,122,154,241,83,91,96,101,58,7,209,173,31,42,19,237,32,137,111,192,85,176,68,155,39,183,212,198,219,1,14,113,64,77,23,4,35,76,91,121,145,148,247,93,253,60,223,172,115,168,118,112,98,74,151,168,132,21,54,175,146,229,10,219,64,179,223,81,16,123,255,126,52,58,191,28,159,157,13,7,171,96,242,186,51,8,206,143,213,157,246,143,154,106,56,30,171,7,87,249,154,14,13,15,254,243,122,160,47,190,79,175,80,70,33,222,179,68,211,16,191,66,252,84,95,195,208,130,218,94,131,113,146,20,238,233,217,85,23,73,143,112,168,62,201,110,120,135,167,229,52,240,192,125, -216,222,160,184,105,19,182,56,117,84,234,142,203,225,136,198,223,123,60,169,187,60,51,67,6,190,54,185,84,133,201,244,84,131,124,4,175,154,174,226,131,46,163,7,106,22,220,76,72,141,111,237,132,86,201,65,207,103,27,39,201,15,38,62,166,239,80,252,182,82,118,47,210,12,101,168,233,8,142,46,81,14,146,235,238,159,205,212,226,222,206,113,139,20,28,29,42,16,26,181,218,99,71,246,38,235,193,199,62,204,135,175,157,143,240,81,41,194,31,70,247,234,220,168,128,74,56,59,161,34,186,148,244,245,184,34,112,77,53,0,17,208,251,29,183,21,165,86,54,65,246,156,22,139,134,1,230,158,81,119,49,96,236,93,10,65,51,17,231,170,112,213,17,17,71,63,14,1,213,223,162,237,118,212,232,44,193,196,112,155,112,8,226,228,82,84,189,132,84,168,62,7,46,210,69,120,220,123,232,209,216,19,166,221,72,215,117,45,71,237,170,66,7,30,84,219,81,218,53,198,245,137,63,147,105,96,141,158,57,220,40,26,184,167,28,14,79,131,179,106,39,22,71,116,136,52, -58,81,225,221,218,14,174,158,68,39,222,170,131,53,46,148,219,156,206,133,249,104,223,193,208,67,44,34,217,175,83,84,24,125,116,191,82,1,184,78,178,173,172,159,37,250,191,198,253,255,72,160,101,190,75,164,121,195,134,110,145,106,128,79,8,142,216,168,192,190,215,217,13,74,160,30,20,121,84,64,169,0,108,51,150,84,249,170,203,250,42,97,33,17,207,38,172,52,172,144,28,135,243,86,81,192,22,250,39,200,67,209,73,98,68,199,232,22,12,158,88,9,186,239,177,184,50,116,213,86,115,106,236,254,92,1,57,140,56,92,216,93,10,208,242,243,51,245,144,142,211,79,159,131,133,134,234,202,1,234,1,180,53,133,69,223,56,120,250,60,64,197,87,214,15,208,113,39,246,173,172,186,48,93,248,211,102,240,111,33,221,203,86,192,47,14,208,205,231,219,52,255,152,0,95,52,138,230,202,189,207,177,242,249,168,4,94,52,115,242,141,30,148,28,62,2,164,154,70,200,119,219,89,137,157,167,6,246,15,2,86,226,156,229,213,171,135,159,133,133,80,164,98,132,50,24, -186,236,30,43,7,234,138,171,199,44,116,46,243,192,75,36,232,242,35,66,48,92,236,29,101,149,44,160,246,23,139,242,176,24,190,254,186,13,150,238,112,154,196,80,35,255,16,135,248,250,33,155,94,65,215,247,16,92,222,54,183,50,220,64,55,34,33,148,171,236,166,55,52,89,145,171,69,87,137,141,169,220,176,223,182,197,50,223,138,167,190,233,48,231,174,249,123,178,87,33,86,25,241,87,6,159,23,119,223,252,185,229,41,148,216,13,7,119,192,159,28,128,190,206,132,11,223,162,251,232,203,102,77,252,67,13,24,160,117,105,241,192,255,180,194,238,242,162,5,246,67,43,172,15,234,138,236,75,195,243,129,84,133,60,99,61,68,253,112,53,82,209,73,74,66,5,148,205,171,199,216,219,11,252,134,241,187,203,254,216,2,140,188,73,54,27,49,63,204,194,7,195,254,1,22,128,253,6,14,176,117,251,92,6,24,113,240,119,34,238,62,25,59,79,106,113,204,206,155,171,254,21,90,246,12,90,252,76,96,173,132,210,246,91,91,203,206,94,26,175,153,110,163,8,212,189, -132,169,46,60,211,173,7,95,26,71,55,57,147,45,173,43,8,36,87,125,214,55,218,97,91,153,225,160,223,139,141,53,252,230,101,130,175,220,47,47,12,80,59,137,147,207,32,113,242,48,18,207,63,131,196,243,7,145,56,253,116,10,167,15,34,240,197,167,19,248,162,34,240,151,119,103,160,167,54,239,74,176,84,42,166,235,211,136,179,254,229,248,108,244,210,159,70,216,237,237,227,8,96,123,226,68,99,186,153,148,6,180,126,216,202,123,66,31,204,113,185,235,18,7,121,178,209,183,176,236,125,207,76,179,169,217,35,92,250,178,164,158,103,232,222,184,137,25,128,72,22,29,221,59,107,207,215,173,151,135,188,49,66,124,30,74,167,13,18,16,105,31,71,81,117,182,53,178,119,171,36,21,143,59,204,247,121,190,233,85,26,166,73,159,40,112,104,106,70,117,56,48,81,111,27,208,192,192,160,53,209,185,126,240,121,222,114,198,195,236,61,144,159,220,76,143,105,96,171,222,233,82,77,196,227,57,197,155,62,221,90,39,222,32,201,101,173,107,250,111,221,60,105,126,157,83, -157,124,56,36,91,237,170,78,85,164,104,161,193,155,135,135,164,130,58,139,222,59,219,246,200,120,104,244,186,195,104,125,221,245,136,218,249,235,41,42,201,220,244,242,233,135,109,36,160,82,32,206,153,246,158,191,210,211,31,151,56,208,118,79,128,255,236,1,98,239,123,220,38,166,189,201,214,199,207,110,230,161,15,60,249,53,254,22,164,84,247,129,249,118,185,50,163,210,174,243,206,18,93,108,185,99,64,114,94,255,237,39,253,174,141,234,140,20,99,117,163,197,41,127,146,185,181,195,59,40,123,148,205,23,250,109,163,20,60,232,80,92,154,21,130,223,56,113,133,111,37,190,125,188,75,74,115,211,145,137,130,6,217,132,37,47,152,4,70,227,213,33,124,106,181,227,20,53,237,209,230,7,14,219,85,127,168,182,211,11,103,105,170,111,125,109,90,194,153,21,78,223,181,52,42,76,93,43,2,201,244,155,7,4,90,31,206,235,151,66,129,125,122,110,238,227,213,5,143,125,225,14,207,45,75,169,95,205,215,91,164,243,26,2,108,23,9,221,39,172,145,111,186,24,67,56, -23,64,225,232,66,224,19,84,151,226,46,79,103,220,68,246,74,66,99,71,129,74,192,184,203,11,165,138,130,179,85,255,2,206,232,100,31,228,169,170,24,112,114,215,56,76,180,111,18,52,141,100,13,160,114,210,232,181,11,93,3,158,212,3,201,211,222,103,80,53,151,14,159,72,122,252,89,164,199,143,36,93,171,166,160,140,154,14,49,81,169,95,189,164,201,172,48,191,192,234,79,134,186,162,26,140,46,94,142,47,206,6,129,87,81,125,167,175,200,63,90,80,225,75,129,170,154,83,140,237,252,124,105,166,107,1,90,55,184,202,46,84,63,113,84,64,135,6,140,26,51,197,217,71,34,214,63,148,104,197,11,209,239,145,88,105,218,222,138,147,94,141,124,12,82,117,169,120,24,167,73,54,78,213,221,128,83,71,32,51,161,44,176,144,164,187,215,59,208,186,164,27,201,58,222,50,143,126,151,101,1,97,160,149,91,205,39,55,239,92,219,209,48,253,84,130,224,171,103,254,72,83,147,105,53,12,168,25,111,69,65,225,77,147,232,40,180,199,38,205,40,112,63,193,216,36, -188,135,241,90,9,151,133,86,184,133,22,82,223,220,31,193,150,93,221,254,204,150,96,111,75,102,76,201,108,169,222,12,115,127,22,70,47,5,212,222,226,114,48,144,217,52,192,87,47,31,19,56,189,52,210,144,112,189,107,0,76,210,29,175,2,216,51,8,37,75,245,86,175,52,111,164,116,232,173,5,250,165,176,172,210,16,87,191,153,156,62,215,212,66,231,85,26,107,149,244,43,169,204,190,249,233,221,178,40,192,135,51,165,47,190,31,200,22,30,225,19,152,194,223,115,118,26,184,208,191,243,212,122,0,225,171,223,106,245,123,189,225,224,226,252,194,67,130,191,144,144,162,86,240,53,31,78,239,156,87,35,66,175,8,201,139,242,1,104,36,189,235,123,8,9,73,234,129,88,212,230,166,159,71,30,64,126,45,191,133,2,230,163,90,164,248,133,122,179,191,28,141,142,230,252,62,58,194,247,120,215,240,108,21,29,81,241,17,29,221,11,94,192,23,84,96,75,140,187,150,191,36,235,79,163,171,70,110,154,52,212,91,165,80,159,87,249,182,80,159,218,57,91,11,122,137, -174,133,185,127,138,242,221,189,98,176,129,167,120,91,20,244,10,110,162,44,214,186,240,127,141,53,207,136,146,172,30,246,156,210,63,206,229,193,53,200,255,7,215,120,27,82,222,134,149,183,162,133,197,129,54,85,183,71,157,237,111,5,6,86,109,199,58,188,8,52,14,47,242,86,188,188,21,49,111,197,44,118,155,131,107,105,190,108,91,11,250,109,88,7,109,160,135,23,229,159,69,121,88,128,179,150,197,77,126,167,214,102,80,166,187,106,2,102,124,71,252,183,128,22,232,70,253,34,2,156,5,254,71,35,241,234,69,202,170,244,12,195,255,7,178,158,191,110, +120,156,173,59,137,118,219,70,146,191,210,150,39,49,101,83,20,193,67,7,232,100,237,40,206,70,239,37,78,222,56,201,236,123,124,176,1,130,77,18,99,16,96,208,128,68,173,237,253,246,173,170,62,208,0,65,136,146,199,115,136,68,119,29,93,119,85,131,211,153,51,28,78,130,139,225,228,249,11,199,57,103,255,248,135,211,237,63,29,58,67,167,239,156,13,70,231,163,65,127,216,31,140,156,193,216,185,184,24,57,231,227,139,225,229,217,153,43,138,89,30,229,49,247,166,63,143,38,51,9,61,238,3,244,0,160,251,231,23,103,35,7,96,71,227,193,240,124,60,2,28,163,145,227,192,103,103,124,126,118,126,238,42,208,120,56,112,38,87,175,198,19,7,0,135,221,225,211,65,255,178,63,56,59,191,28,13,156,209,25,252,199,25,94,94,58,195,139,139,254,120,4,216,157,161,27,166,115,128,155,141,6,147,0,254,183,89,13,0,112,212,29,61,29,193,134,97,191,223,31,157,143,135,0,124,14,127,71,253,75,103,0,100,1,120,12,20,249,54,247,166,116,204,51,128,25, +119,199,79,127,24,190,6,206,46,126,114,222,156,157,143,198,253,55,63,14,71,253,55,240,253,236,194,249,161,223,127,115,225,134,193,38,143,210,196,155,34,149,62,158,235,158,127,238,143,124,17,20,49,16,250,244,225,203,55,111,222,158,252,249,142,77,197,120,194,222,136,144,137,48,139,0,95,178,100,113,144,44,139,96,201,191,245,166,98,48,97,127,4,179,152,179,116,193,194,52,201,121,146,11,124,222,159,48,245,103,250,62,79,55,81,232,187,254,169,127,10,136,252,83,145,133,243,52,148,95,62,240,196,63,41,132,255,212,121,207,156,30,187,78,242,44,157,23,33,241,253,48,4,131,247,108,208,99,127,5,113,193,89,126,183,225,66,195,227,191,67,113,248,31,28,68,227,176,191,210,104,254,72,12,196,200,128,189,45,214,51,158,61,18,199,16,113,12,217,235,44,11,238,30,137,98,132,40,70,236,215,96,243,72,4,99,68,48,102,191,4,235,217,60,16,15,212,6,28,96,136,218,200,34,180,14,193,130,100,46,237,99,155,63,20,21,28,100,212,99,111,182,155,140,11,1, +118,241,80,120,56,199,184,199,222,229,65,206,215,104,158,15,4,63,123,207,206,8,60,153,7,217,156,197,209,44,11,178,59,207,50,242,193,196,117,220,186,245,226,194,72,122,78,4,199,103,34,90,111,192,77,118,189,136,69,232,53,115,62,103,139,52,99,28,140,102,62,199,245,40,97,127,198,121,180,6,182,253,23,254,11,22,108,54,113,20,6,136,91,244,20,246,235,28,145,163,181,131,140,69,151,221,144,245,167,89,4,231,4,132,134,196,109,148,175,52,7,72,46,91,4,33,210,160,231,87,136,254,244,79,34,130,241,169,167,208,222,240,236,78,3,221,241,156,253,93,68,57,135,29,248,0,62,104,228,61,37,130,129,91,243,63,124,238,192,115,240,41,183,244,41,197,249,235,56,6,110,181,117,172,130,27,206,110,96,89,157,96,198,65,22,156,5,160,239,101,2,7,9,146,59,150,230,43,158,201,245,30,161,34,42,0,42,128,201,100,9,76,210,154,165,151,225,132,112,90,79,128,48,26,34,55,182,196,194,32,1,106,44,231,34,87,26,64,144,4,86,89,129,104,217,244, +85,199,25,92,244,250,189,193,120,124,12,98,241,63,224,6,143,45,138,132,244,220,43,143,73,18,48,142,175,232,201,111,40,207,69,156,6,164,249,77,10,58,96,137,92,232,132,105,6,204,108,210,132,180,158,167,236,74,30,108,158,22,32,155,99,180,252,0,69,46,48,196,42,160,24,52,145,5,177,112,171,167,117,244,223,30,228,42,251,51,247,79,46,207,212,131,254,22,30,48,249,111,250,106,196,78,79,217,138,111,131,57,15,193,214,98,79,239,42,55,233,93,105,152,91,235,51,200,175,125,252,175,89,159,69,137,118,12,216,224,63,219,250,207,88,13,69,184,10,178,32,4,222,201,208,188,170,102,40,201,20,155,77,154,229,2,205,108,13,234,185,242,79,226,232,35,152,244,6,206,75,166,79,58,82,98,32,133,11,75,3,67,215,10,155,218,210,232,11,11,50,116,140,57,207,64,205,25,24,65,186,102,65,24,162,158,5,255,187,224,73,40,5,44,173,12,89,145,200,89,39,145,166,17,72,52,81,18,198,5,56,43,232,133,16,235,109,136,94,108,64,134,139,8,54,55, +153,142,63,245,61,143,65,240,8,63,242,188,174,57,92,100,245,127,74,104,124,189,201,239,36,125,35,220,41,115,186,108,208,101,195,46,27,117,217,152,249,213,21,127,138,107,190,7,171,140,16,43,84,132,132,226,112,16,129,40,237,163,25,4,71,63,243,56,78,253,163,38,78,32,4,192,121,33,184,160,157,2,207,207,126,246,159,1,181,103,92,254,137,43,127,82,255,25,156,120,135,99,230,63,103,65,188,8,144,49,141,183,140,237,218,33,11,129,140,9,118,11,204,212,236,68,121,20,40,11,162,30,69,116,140,149,160,55,125,60,137,33,227,57,196,193,27,64,51,131,48,166,195,183,118,91,54,125,126,5,130,40,146,220,211,193,244,53,153,3,42,206,224,5,26,90,239,130,109,178,244,38,154,43,124,197,76,70,242,29,37,51,212,178,52,215,52,171,105,57,240,167,125,163,41,248,226,128,8,252,239,216,176,122,190,159,162,76,228,154,7,195,2,43,227,132,64,233,71,144,50,182,59,212,1,189,57,207,91,190,4,151,185,225,114,171,178,209,0,116,123,75,17,117,206,230, +28,195,43,228,151,242,192,139,12,252,2,69,9,25,201,144,118,119,45,249,196,193,99,130,80,226,160,129,215,110,3,192,0,1,104,247,172,128,157,9,144,200,195,222,142,124,8,115,85,30,64,165,98,120,59,48,164,198,78,0,116,78,216,14,244,191,86,60,81,194,138,132,52,43,140,32,120,198,204,63,145,233,166,67,230,129,154,79,165,33,101,209,114,149,67,90,153,83,93,91,59,204,119,222,113,183,196,8,177,4,18,108,184,226,224,214,243,30,251,9,112,199,10,47,236,130,136,157,66,29,145,84,84,81,10,94,24,209,109,80,50,72,26,232,25,83,238,42,213,163,4,182,155,128,138,4,74,217,101,170,36,91,8,51,142,90,204,87,145,65,168,141,192,63,122,131,225,3,220,185,217,96,80,43,251,216,33,109,81,225,102,249,36,144,11,230,243,210,98,224,187,225,183,102,238,91,138,106,96,224,144,173,214,15,209,233,86,235,116,123,188,15,193,63,73,236,101,12,192,16,80,113,255,116,134,49,14,24,6,133,64,218,129,221,58,44,11,40,163,120,61,0,19,172,63,221, +164,80,69,17,237,186,29,89,66,146,116,8,13,153,199,169,10,36,165,80,192,158,178,220,20,88,176,1,240,122,21,213,84,14,75,219,93,112,185,7,17,69,23,5,139,39,224,54,218,106,131,182,136,223,131,76,70,54,41,7,35,175,117,148,67,50,216,43,21,201,26,192,167,217,206,162,251,64,151,53,128,204,101,202,121,241,209,113,29,13,216,94,35,100,215,210,80,3,71,110,163,2,15,226,169,191,71,251,20,69,148,192,48,140,234,244,84,186,122,181,140,219,128,144,43,174,76,161,130,111,226,32,228,243,154,233,9,180,112,255,8,10,174,145,127,52,209,15,33,59,184,140,162,161,92,222,254,207,22,86,117,198,164,132,148,164,183,8,7,43,0,88,99,248,29,100,62,168,16,77,38,50,122,166,54,66,249,177,41,147,106,114,112,24,246,27,248,105,80,197,10,149,3,116,32,92,90,100,126,171,81,116,27,112,96,154,151,101,154,122,170,106,54,204,254,184,94,69,12,162,129,16,166,173,92,109,133,230,71,85,119,59,184,95,128,76,36,171,15,86,50,211,160,230,144,53, +28,80,87,55,194,189,124,169,165,163,63,13,204,167,225,127,130,141,82,234,230,83,13,47,214,165,148,193,5,58,182,108,68,84,207,215,148,184,76,185,167,148,134,117,143,213,251,64,240,128,168,41,138,112,5,198,33,56,68,62,109,45,212,85,37,41,227,139,5,15,115,171,192,30,185,102,168,160,88,194,143,186,162,100,31,249,157,206,169,155,0,202,24,116,17,144,0,212,97,162,199,222,166,25,52,24,101,233,36,26,147,145,241,46,52,80,89,160,175,131,141,198,82,115,29,88,241,167,72,148,156,164,222,255,169,54,83,129,226,89,17,83,190,10,114,162,146,164,185,213,97,202,68,109,245,160,181,158,180,199,254,192,244,122,11,2,149,64,232,230,180,172,50,32,226,6,86,180,159,129,72,80,13,153,140,19,25,95,67,241,136,165,37,48,115,87,150,89,0,212,122,162,198,246,21,155,85,11,23,168,107,198,13,55,141,228,17,2,13,2,249,67,245,99,187,163,228,161,36,122,165,25,136,22,29,221,228,118,74,102,142,65,61,159,88,175,215,99,254,151,154,132,5,29,132,122, +31,208,46,223,134,156,166,142,93,118,139,49,51,176,219,122,136,61,60,0,171,208,237,125,98,226,103,147,41,64,249,68,115,8,157,189,149,156,101,59,84,114,110,242,168,22,216,164,218,180,80,149,70,174,82,38,220,170,201,76,42,91,49,170,2,246,90,60,37,51,151,5,180,72,141,129,170,194,11,103,34,144,53,160,162,14,242,0,242,109,86,132,121,145,161,205,255,145,2,174,143,170,52,251,119,58,99,60,16,17,207,186,70,94,224,198,61,104,25,99,112,100,113,7,78,68,44,168,46,120,39,83,108,229,214,146,241,7,22,85,254,17,193,251,71,246,225,173,93,125,58,167,46,44,209,146,232,180,179,221,214,214,255,228,127,161,94,118,199,37,105,229,158,127,149,198,86,203,154,96,33,159,97,111,232,31,185,14,164,98,255,104,198,115,252,50,128,47,131,190,235,31,141,250,80,201,74,19,148,251,7,148,80,160,142,128,68,216,151,139,251,200,173,171,71,211,49,139,239,14,22,203,120,55,118,237,25,168,146,179,250,134,73,139,124,9,26,160,45,15,139,156,230,224,24,162, +229,20,77,110,179,7,4,145,154,15,238,155,16,188,242,202,9,73,93,172,175,160,24,198,3,67,91,91,100,137,60,247,118,210,224,142,58,54,197,22,121,180,85,61,109,219,49,19,168,50,23,17,129,4,166,61,174,81,119,23,105,74,101,200,94,46,38,39,159,149,152,9,27,28,120,25,167,51,48,112,211,112,3,138,154,79,93,47,52,147,65,182,44,100,21,143,109,54,7,1,233,78,167,38,161,111,45,9,81,124,176,42,228,40,217,20,185,127,146,22,57,252,45,81,118,228,72,71,127,215,154,216,80,23,26,223,29,235,186,184,74,9,66,29,228,162,220,238,133,101,45,167,176,198,17,246,70,50,21,27,201,38,102,50,81,82,203,201,127,148,161,224,136,88,38,32,76,184,93,236,164,34,20,14,200,9,42,198,96,205,225,88,146,65,104,192,48,198,128,125,78,113,108,179,188,241,74,50,200,11,78,8,41,189,215,234,35,87,20,107,165,41,56,2,233,138,234,75,216,1,49,183,19,201,62,105,121,115,140,143,101,21,181,188,241,167,145,239,237,218,210,239,37,75,232,48, +148,16,231,242,134,72,91,181,224,200,119,46,135,34,59,125,114,221,138,102,65,166,173,136,120,218,155,84,116,216,140,163,5,55,33,51,136,129,149,68,246,209,112,150,53,202,193,88,151,180,97,250,136,227,246,155,32,138,81,86,53,14,158,162,33,31,224,72,131,73,228,140,251,147,223,46,39,238,208,221,127,145,161,184,253,203,232,31,196,69,117,6,6,129,69,138,214,193,174,64,247,81,18,70,52,193,237,160,106,81,245,32,56,200,207,120,148,174,236,207,164,181,7,241,102,21,64,204,139,66,107,84,10,249,189,38,217,15,158,105,203,117,20,107,130,20,59,115,24,5,40,237,84,24,211,71,118,231,17,21,21,69,36,86,88,219,175,50,174,198,248,40,230,114,82,175,143,174,3,216,243,170,215,72,252,181,167,174,229,180,245,116,1,152,79,62,155,216,17,167,97,57,98,238,85,215,162,4,167,52,33,215,203,110,117,89,134,155,90,132,249,5,241,89,220,91,83,218,16,61,83,155,79,87,71,171,218,86,224,26,11,168,117,138,193,49,46,131,153,64,71,150,236,88,32,101, +47,163,210,130,149,113,58,80,114,8,107,226,118,83,177,153,99,20,50,238,190,93,165,130,87,67,119,132,22,117,147,126,228,243,46,205,50,100,125,7,14,80,166,17,57,121,175,41,251,137,135,207,231,251,102,145,192,64,79,122,225,196,122,242,22,116,171,92,84,58,231,22,175,133,40,192,215,118,117,142,39,40,125,35,127,137,79,213,79,14,243,202,237,206,30,58,157,227,39,180,60,169,98,113,44,52,94,115,88,216,100,233,18,66,211,154,103,254,51,81,13,18,52,88,212,53,168,106,118,201,106,67,136,29,40,43,101,192,216,252,220,202,209,32,200,214,202,151,84,154,199,21,187,33,155,86,203,196,89,174,227,57,250,122,148,119,141,109,210,78,101,74,198,83,58,52,157,6,64,186,126,56,38,203,194,142,196,204,183,107,154,193,154,7,98,84,237,232,212,194,128,201,46,121,110,88,197,32,40,89,133,36,129,96,86,146,88,224,20,185,139,73,43,1,14,112,14,89,130,65,169,122,44,15,106,24,87,8,152,87,57,52,196,84,48,251,59,66,0,225,1,60,192,160,81,8, +212,97,53,253,30,251,13,223,3,40,50,204,110,7,7,7,48,105,137,221,26,50,150,174,162,4,185,147,76,164,152,204,213,18,48,106,138,14,58,10,191,65,245,46,148,132,192,117,204,97,105,89,150,26,168,197,218,93,46,244,184,213,251,102,123,6,100,95,85,84,6,65,233,50,146,54,131,238,222,165,134,163,203,254,151,103,169,174,10,240,236,232,226,105,166,250,114,138,248,180,195,204,238,202,208,1,2,93,64,241,205,161,11,178,46,62,37,77,88,131,22,131,247,244,252,235,58,81,201,134,46,16,81,121,168,247,40,252,8,174,129,149,216,60,186,161,129,128,25,5,17,101,234,218,32,248,96,126,74,179,40,191,235,170,231,233,102,157,66,113,131,51,87,186,153,37,172,176,121,21,45,87,216,71,234,253,150,66,216,167,79,163,209,217,133,59,30,15,7,43,103,242,170,51,112,206,64,51,184,250,155,162,234,185,174,124,112,149,174,229,53,188,235,190,127,53,144,207,166,167,87,212,7,224,165,140,63,245,240,43,196,75,249,213,243,12,168,105,78,176,50,3,41,224,158,158, +89,181,145,244,8,135,108,172,204,134,119,120,218,128,70,39,184,15,251,33,20,51,109,194,158,168,138,74,222,138,89,28,209,0,125,135,39,121,11,168,167,208,192,215,38,21,178,14,153,158,42,144,123,240,202,249,44,62,232,50,122,32,167,201,205,132,228,0,216,204,120,165,28,212,132,183,113,22,125,48,113,151,190,67,173,219,74,217,190,117,211,148,161,132,35,56,186,127,217,75,174,187,123,54,101,64,245,157,110,139,20,44,29,74,16,154,217,154,99,251,158,174,135,15,62,246,126,62,234,218,185,135,143,82,17,245,169,118,175,202,141,12,160,132,179,227,73,162,75,65,95,143,75,2,215,148,243,137,128,218,111,185,45,207,149,178,9,178,103,117,82,52,61,208,119,147,170,105,1,99,239,82,232,153,241,48,149,21,170,10,132,56,59,178,8,200,54,22,109,183,35,71,111,17,38,130,155,40,128,160,77,46,69,213,138,71,21,233,115,224,34,94,120,199,189,67,143,198,158,48,229,70,170,142,107,57,106,87,22,54,240,160,220,142,210,174,48,174,78,252,149,76,3,107,244,204, +226,70,210,192,61,249,112,120,234,140,203,157,88,12,209,33,98,255,68,134,117,99,59,184,122,226,159,212,86,45,172,97,38,221,230,116,206,245,71,243,58,135,154,130,17,201,126,149,162,196,88,71,247,39,21,124,235,40,41,68,245,44,254,255,53,238,255,33,130,206,248,54,18,250,253,29,186,135,170,0,62,33,56,98,163,4,251,69,101,53,40,121,122,80,212,81,193,36,3,176,201,84,66,230,169,46,235,203,68,133,68,106,54,97,164,97,132,100,57,92,109,21,5,108,160,127,135,60,228,159,68,90,116,140,238,209,224,137,145,160,253,74,140,45,67,91,109,21,167,198,102,207,22,144,197,136,197,133,217,37,1,13,63,255,164,150,209,114,250,233,115,176,80,79,94,94,64,29,128,182,38,177,168,187,139,154,62,247,80,169,43,235,87,104,176,35,243,178,87,85,152,54,252,105,51,248,143,144,238,69,43,224,55,123,232,166,243,34,78,239,19,224,139,70,209,92,217,55,67,70,62,247,74,224,69,51,39,175,213,92,100,255,17,32,213,52,66,190,43,102,57,118,154,10,184,126, +16,176,18,235,44,47,95,30,126,22,230,65,81,138,17,74,99,232,178,59,172,28,168,11,46,31,51,207,186,21,4,47,17,160,203,123,132,160,185,216,57,202,42,90,64,173,207,23,249,126,49,124,255,125,27,44,221,6,53,137,161,66,254,16,135,248,254,144,77,47,161,203,59,4,87,109,155,93,25,110,160,251,16,16,202,101,118,83,27,154,172,200,214,162,173,196,198,84,174,217,111,219,98,152,111,197,83,221,180,159,115,219,252,107,178,151,33,86,26,241,119,26,95,45,238,190,249,187,8,98,40,177,27,14,110,129,63,217,3,125,157,112,27,190,69,247,254,183,205,154,248,65,14,20,160,101,105,241,192,247,173,176,219,52,107,129,253,220,10,91,7,181,69,246,173,230,121,79,170,66,158,177,30,162,254,183,28,161,168,36,37,160,2,74,230,229,99,236,229,57,126,195,248,221,101,255,46,0,70,124,140,54,27,62,223,207,194,103,205,254,30,22,128,253,6,14,176,101,251,90,6,24,113,240,95,68,220,126,226,90,79,42,113,204,140,151,203,190,21,90,244,4,90,250,132,99, +173,132,210,174,183,180,134,157,157,52,94,49,221,70,17,200,235,7,93,93,212,76,183,26,124,105,250,220,228,76,166,180,46,33,144,92,249,89,221,141,123,109,101,134,133,126,39,54,86,240,235,215,18,190,179,191,188,208,64,237,36,78,190,130,196,201,97,36,158,127,5,137,231,7,145,56,125,60,133,211,131,8,124,243,120,2,223,148,4,190,216,243,249,114,88,51,118,171,47,247,87,103,18,227,254,133,59,30,93,214,103,18,102,123,251,80,2,152,159,88,49,153,110,43,133,6,173,30,185,244,33,175,14,102,57,222,117,142,227,59,209,232,97,88,252,126,98,186,229,84,236,17,46,117,67,82,205,54,116,221,220,196,12,64,68,139,142,234,160,149,255,171,6,172,134,188,49,78,124,29,74,171,25,226,16,111,31,70,81,246,183,21,178,183,171,40,230,15,59,204,47,105,186,177,12,130,198,124,60,195,81,169,30,212,225,216,68,190,180,64,99,3,141,86,199,232,234,193,231,105,203,25,247,179,119,32,63,169,158,25,211,152,86,190,34,38,91,137,135,115,138,215,123,170,193,142, +106,227,36,155,181,174,238,194,85,11,165,248,181,78,117,242,121,159,108,149,195,90,181,145,164,133,6,175,31,238,147,10,234,204,255,100,109,219,33,83,67,163,214,45,70,171,235,182,71,84,206,95,77,84,81,98,39,153,199,31,182,145,128,76,132,56,109,218,121,254,82,205,128,108,226,64,219,62,1,254,219,1,196,14,248,184,77,76,59,243,173,251,207,174,167,162,7,158,252,26,127,92,146,203,91,192,180,88,174,244,192,180,107,189,249,68,215,89,246,48,144,156,183,254,14,149,122,101,71,246,71,146,177,170,209,226,108,63,74,236,10,226,29,20,63,210,230,51,245,210,82,12,30,180,47,46,205,50,30,124,180,226,74,80,8,124,139,121,27,229,250,126,35,225,25,141,179,9,75,154,49,1,140,134,171,125,248,228,106,199,42,109,218,163,205,175,1,108,151,93,162,220,78,175,173,197,177,186,228,53,105,9,39,87,56,131,87,210,40,49,117,141,8,132,126,221,128,64,171,35,122,245,142,41,176,79,207,245,37,188,188,214,49,47,240,225,185,69,46,212,187,253,106,139,176,222, +61,128,237,60,162,219,132,53,242,77,215,97,8,103,3,72,28,93,8,124,156,170,83,220,85,211,89,160,35,123,41,33,215,82,160,20,48,238,170,133,82,73,193,218,170,126,110,170,117,178,11,242,84,214,13,56,191,107,28,41,154,215,7,154,6,179,26,80,58,169,255,202,134,174,0,79,170,129,228,105,239,43,168,234,171,135,71,146,118,191,138,180,251,64,210,95,170,239,60,184,103,110,211,79,29,229,158,161,170,169,6,163,243,75,247,124,60,112,106,53,213,79,234,106,252,222,146,10,223,46,148,85,157,100,109,91,207,152,122,202,230,160,125,131,179,108,61,249,11,74,9,180,111,208,168,48,83,164,125,32,98,245,91,139,86,188,16,255,30,136,149,166,238,173,56,233,29,203,135,32,149,151,138,251,113,234,116,99,85,223,13,56,85,12,210,147,202,12,75,73,186,115,189,5,165,11,186,145,172,226,205,83,255,131,200,51,8,4,173,220,42,62,3,253,22,183,25,17,211,143,46,8,190,124,86,31,109,42,50,173,134,1,85,227,13,207,40,192,41,18,29,137,246,88,39,26, +9,94,79,49,38,13,239,96,188,150,194,101,158,17,110,166,132,212,215,247,72,176,101,91,181,63,189,197,217,217,146,104,83,210,91,202,23,194,236,159,148,209,203,0,149,151,183,44,12,100,54,13,240,229,75,204,4,78,47,139,52,164,220,218,117,0,166,233,78,173,6,216,49,8,41,75,249,122,176,208,111,162,116,232,109,5,250,33,178,40,19,81,32,127,127,57,125,174,168,121,214,43,52,198,42,233,135,86,137,121,101,180,118,219,34,1,15,103,74,93,124,31,200,22,30,225,17,76,225,47,66,59,13,92,168,95,138,42,61,128,240,229,207,189,250,189,222,112,112,126,118,94,67,130,191,185,16,188,82,242,53,31,78,237,156,151,163,194,90,25,146,102,249,1,104,4,189,36,188,15,9,73,234,64,44,114,115,211,111,42,247,32,191,22,63,66,9,115,175,22,41,126,161,222,204,111,78,253,163,121,112,231,31,225,203,189,107,120,182,242,143,168,252,240,143,238,120,144,193,23,84,96,75,140,187,22,127,68,235,199,209,149,163,55,69,26,42,174,156,203,207,171,180,200,228,167, +118,206,214,156,222,154,107,97,238,191,121,254,238,78,50,216,192,83,88,100,25,189,113,27,73,139,53,46,252,31,99,173,102,68,81,82,13,123,86,241,31,166,98,239,26,164,255,189,107,65,27,210,160,13,107,208,138,22,22,7,202,84,237,46,117,182,187,21,24,88,181,29,107,255,34,208,216,191,24,180,226,13,90,17,7,173,152,249,118,179,119,45,78,151,109,107,78,191,13,235,160,13,116,255,162,248,59,203,247,11,112,214,178,184,73,111,229,218,12,10,117,91,77,192,76,221,17,255,197,161,9,250,40,127,75,1,206,2,255,71,163,241,242,5,202,178,248,244,188,255,7,68,250,225,220,