~crc_/retroforth

9be4e94b8dce249d4c0f09f7f1894934d534f425 — crc a month ago 0365996
add more of the aa: and as: words

FossilOrigin-Name: fac3068928898bb268834b5eb5ad1d34c4e6db8a5bb7119d2ab730dd485934e0
2 files changed, 166 insertions(+), 117 deletions(-)

M interface/future.retro
M vm/nga-c/image.c
M interface/future.retro => interface/future.retro +45 -11
@@ 1,3 1,16 @@
# New Words

This contains a variety of words from my more recent systems.

Notes:

`aa:` is a new set of array words. These will be replacing the
existing set in the future.

`as:` is a new set of string words. These will be replacing the
existing set in the future. (In the current system, strings are
null terminated. The `as` strings are length-prefixed instead.)

~~~
:gc (q-) &Heap swap v:preserve ;



@@ 104,6 117,26 @@
:as:trim (s-s) as:trim-left as:trim-right ;

:sigil:" (s-a) here [ dup s:length comma &comma s:for-each ] dip ; immediate

:aa:for-each (aq-) a:for-each ;
:as:for-each (sq-) a:for-each ;

:aa:hash (a-n) #5381 swap [ swap #33 n:mul n:add ] aa:for-each ;
:as:hash (s-n) aa:hash ;

:aa:eq? (aa-f) aa:hash swap aa:hash eq? ;
:aa:-eq? (aa-f) aa:hash swap aa:hash -eq? ;
:as:eq? (ss-f) aa:eq? ;
:as:-eq? (ss-f) aa:-eq? ;

:aa:dup here [ dup aa:length comma &comma a:for-each ] dip ;
:as:dup aa:dup ;

:as:temp ;
:as:keep ;

:as:to-upper (s-s) [ as:dup &c:to-upper as:map as:temp ] gc ;
:as:to-lower (s-s) [ as:dup &c:to-lower as:map as:temp ] gc ;
~~~

  a:append        aa-a    Create a new array with the contents of a1


@@ 111,14 144,14 @@
  a:chop  a-a     Remove last item from an array
* a:contains?     an-f    True if array contains n. False otherwise
  a:copy  sd-     Copy array from s to d
  a:dup   a-a     Make a copy of an array
  a:eq?   aa-f    Compare two arrays for equality
  a:-eq?  aa-f    Compare two arrays for inequality
* a:dup   a-a     Make a copy of an array
* a:eq?   aa-f    Compare two arrays for equality
* a:-eq?  aa-f    Compare two arrays for inequality
* a:fetch an-v    Fetch value stored at index n in array
  a:filter        aq-a    Run q once for each value in a. If it returns
  a:first a-n     Return the first value in an array
  a:for-each      aq-     Run q once for each value in the array. Pushes
  a:hash  a-n     Return the hash of an array
* a:for-each      aq-     Run q once for each value in the array. Pushes
* a:hash  a-n     Return the hash of an array
* a:indices       av-a    Return array of indices for v in source array
* a:index av-n    Return first index of n in a
  a:last  a-n     Return the last value in an array


@@ 142,9 175,9 @@
  s:chop  s-s     Remove last item from a string
* s:contains?     sc-f    True if string contains c. False otherwise
  s:copy  sd-     Copy string s to memory at d
  s:dup   s-s     Make a copy of string
  s:eq?   ss-f    Compare two strings for equality
  s:-eq?  ss-f    Compare two strings for inequality
* s:dup   s-s     Make a copy of string
* s:eq?   ss-f    Compare two strings for equality
* s:-eq?  ss-f    Compare two strings for inequality
  s:evaluate      s-?     Interpret each token in a string
* s:fetch sn-c    Return character at index n in the string
* s:filter        sq-s    Run q once for each value in s If it returns


@@ 152,7 185,7 @@
  s:for-each      sq-     Run q once for each character in s. Pushes
  s:get/line      '-s     Read a line of input until enter is
  s:get/token     -s      Read a string from the keyboard ending when
  s:hash  s-n     Return the hash of the string
* s:hash  s-n     Return the hash of the string
* s:index/c       sc-f    True if string contains c, false otherwise
  s:keep  s-s     Move string to here, allocating space and returning
  s:last  s-c     Return the last character in a string


@@ 168,9 201,10 @@
* s:store csn-    Store character into string at index n
  s:temp  s-s     Put a copy of a string in the temporary buffers.
* s:th    sn-a    Given a string and index, return the address
  s:to-lower      s-s     Make all characters in string lowercase
* s:to-lower      s-s     Make all characters in string lowercase
  s:to-n  s-n     Convert a string to a number
  s:to-upper      s-s     Make all characters in a string uppercase
* s:to-upper      s-s     Make all characters in a string uppercase
* s:trim  s-s     Trim both leading and trailing whitespace from a string
* s:trim-right    s-s     Trim trailing whitespace from a string
* s:trim-left     s-s     Trim leading whitespace from a string


M vm/nga-c/image.c => vm/nga-c/image.c +121 -106
@@ 10,8 10,8 @@
#define CELL_MAX LLONG_MAX - 1
#endif
#endif
CELL ngaImageCells = 26411;
CELL ngaImage[] = { 1793,25920,26366,26410,202301,415,387,1247,1535,0,11116,0,10,1,10,2,10,3,10,
CELL ngaImageCells = 26708;
CELL ngaImage[] = { 1793,26217,26663,26707,202301,415,387,1247,1535,0,11116,0,10,1,10,2,10,3,10,
                       4,10,5,10,6,10,7,10,8,10,11,10,12,10,13,10,14,10,15,10,
                       16,10,17,10,18,10,19,10,20,10,21,10,22,10,23,10,24,10,25,68223234,
                       1,2575,85000450,1,656912,163,180,268505089,65,64,285281281,0,65,2063,10,101384453,0,9,10,68485378,


@@ 20,8 20,8 @@ CELL ngaImage[] = { 1793,25920,26366,26410,202301,415,387,1247,1535,0,11116,0,10
                       1,251790353,101777669,1,17565186,109,524545,113,66,167838467,-1,134287105,3,61,659457,3,459023,130,2049,58,
                       25,2049,130,1793,137,2049,137,117506307,0,130,0,524545,28,135,168820993,0,149,1642241,149,134283523,
                       13,135,1793,130,524545,2049,130,1793,130,16846593,149,163,180,1793,66,16846593,149,135,180,1793,
                       66,7,10,659713,1,659713,2,659713,3,659713,4,659713,5,1793,26175,17108737,3,2,524559,130,
                       2049,130,2049,130,524545,0,130,524545,0,130,2049,144,1048838,2,1642241,10,7,25156,1247,167841793,
                       66,7,10,659713,1,659713,2,659713,3,659713,4,659713,5,1793,26472,17108737,3,2,524559,130,
                       2049,130,2049,130,524545,0,130,524545,0,130,2049,144,1048838,2,1642241,10,7,25453,1247,167841793,
                       216,11,17826049,0,216,2,15,25,524546,190,134287105,217,118,2305,218,459023,226,134287361,217,221,
                       659201,216,10,659969,7,2049,58,25,17694978,58,242,9,84152833,48,319750404,241,117507601,244,184618754,45,
                       25,16974851,-1,168886532,1,134284289,1,257,134284289,0,244,660227,32,0,0,115,105,103,105,108,


@@ 170,7 170,7 @@ CELL ngaImage[] = { 1793,25920,26366,26410,202301,415,387,1247,1535,0,11116,0,10
                       110,58,105,110,99,0,659713,1,10,3114,3139,168,16180,210720197721,110,58,100,101,99,0,
                       659969,1,10,3128,3158,168,16180,8246617666422322998,110,58,98,101,116,119,101,101,110,63,0,67503109,
                       1793,3166,67503109,67503109,2049,3106,10,1,3161,2049,2241,11,10,3142,3187,168,16180,249861296566813883,83,99,
                       111,112,101,76,105,115,116,0,26268,26322,10,3172,3198,168,16180,5864091,123,123,0,2049,
                       111,112,101,76,105,115,116,0,26565,26619,10,3172,3198,168,16180,5864091,123,123,0,2049,
                       1576,2,1,3187,2049,61,16,10,3190,3225,168,16180,-6305314778776785742,45,45,45,114,101,118,101,
                       97,108,45,45,45,0,2049,1576,1,3187,2049,3125,16,10,3207,3241,168,16180,5864159,125,
                       125,0,1,3187,2049,58,4,15,11,1793,3255,3841,3187,4097,2,10,1,3250,1793,3281,


@@ 1231,104 1231,119 @@ CELL ngaImage[] = { 1793,25920,26366,26410,202301,415,387,1247,1535,0,11116,0,10
                       21,10,1,24330,2049,2372,2049,24267,2049,24290,10,1,24323,9,10,24293,24367,168,0,229459687702255,
                       97,115,58,116,114,105,109,0,2049,24311,2049,24161,10,24354,24385,180,0,229482595734745,115,105,
                       103,105,108,58,34,0,2049,1977,1793,24399,2,2049,104,2049,16979,1,16979,2049,4741,10,
                       1,24389,2049,2229,10,24372,24422,168,0,-3527051417241377258,98,108,111,99,107,58,105,110,118,111,
                       107,101,0,1,3,2049,10655,2049,10636,10,24372,24445,168,0,8246131600073141446,98,108,111,99,107,
                       58,114,101,97,100,0,1,0,2049,24422,10,24429,24467,168,0,-4578818303223200395,98,108,111,99,
                       107,58,119,114,105,116,101,0,1,1,2049,24422,10,24450,24492,168,0,-4036225629868593021,98,108,
                       111,99,107,58,115,101,116,45,102,105,108,101,0,1,2,2049,24422,10,24472,24510,
                       168,0,229480770855518,115,58,115,112,108,105,116,0,2049,7184,10,24497,24536,168,0,6119006473764520940,115,
                       58,115,112,108,105,116,45,111,110,45,115,116,114,105,110,103,0,2049,7218,10,
                       24513,24561,168,0,-2157201768052001381,115,58,99,111,110,116,97,105,110,115,45,99,104,97,114,
                       63,0,2049,4857,10,24539,24588,168,0,-6456228026363444588,115,58,99,111,110,116,97,105,110,115,
                       45,115,116,114,105,110,103,63,0,2049,5286,10,24564,24615,168,0,-3160266536000611262,97,58,99,
                       111,110,116,97,105,110,115,45,115,116,114,105,110,103,63,0,2049,9003,10,24591,
                       24634,168,0,8246014626430519194,97,58,105,110,100,101,120,45,111,102,0,2049,9195,10,24618,24660,
                       168,0,-5025353456659034242,97,58,105,110,100,101,120,45,111,102,45,115,116,114,105,110,103,
                       0,2049,9320,10,24637,24679,168,0,8246850033149754348,115,58,105,110,100,101,120,45,111,102,0,
                       2049,4779,10,24663,24705,168,0,-94300875658333296,115,58,105,110,100,101,120,45,111,102,45,115,
                       116,114,105,110,103,0,2049,5069,10,24682,24724,168,0,8246228896775126019,100,111,117,98,108,101,
                       58,118,97,114,0,2049,2075,4,2049,130,2049,130,10,24708,24750,168,0,-3421095308458227740,100,111,
                       117,98,108,101,58,102,101,116,99,104,0,2049,58,4,15,10,24732,24773,168,0,
                       -3421095308442276665,100,111,117,98,108,101,58,115,116,111,114,101,0,1,19,2049,2229,2049,61,
                       16,10,24755,24799,168,0,-3421095308461432127,100,111,117,98,108,101,58,99,111,110,115,116,0,
                       2049,24724,1,24750,2049,8460,10,24781,24823,168,0,-4575607512064199915,100,111,117,98,108,101,58,115,
                       119,97,112,0,67503109,5,67503109,6,10,24806,24844,168,0,8246228896775106679,100,111,117,98,108,101,
                       58,100,105,112,0,67503109,67503109,5,5,8,6,6,10,24828,24868,168,0,8246228896775123014,100,111,
                       117,98,108,101,58,115,105,112,0,1,2217,2049,2229,2049,24844,10,24852,24891,168,0,
                       8246632143337714634,109,101,109,58,105,110,118,111,107,101,0,1,15,2049,10655,2049,10636,10,24875,
                       0,156,0,210667451248,65,76,76,79,67,0,24898,1,156,0,6384048135,70,82,69,69,0,
                       24909,2,156,0,210689088690,83,84,79,82,69,0,24919,3,156,0,210673137615,70,69,84,67,
                       72,0,24930,4,156,0,6952683137271,82,69,83,73,90,69,0,24852,24968,168,0,249897943727936361,109,
                       101,109,58,97,108,108,111,99,0,1,0,2049,24891,10,24953,24988,168,0,249897943749573803,109,
                       101,109,58,115,116,111,114,101,0,1,2,2049,24891,10,24973,25008,168,0,249897943733622728,109,
                       101,109,58,102,101,116,99,104,0,1,3,2049,24891,10,24993,25027,168,0,7572664961638592,109,
                       101,109,58,102,114,101,101,0,1,1,2049,24891,10,25013,25048,168,0,8246632143679146032,109,101,
                       109,58,114,101,115,105,122,101,0,1,4,2049,24891,10,25032,25068,168,0,249897943730056489,109,
                       101,109,58,99,101,108,108,43,0,1,8,19,17,10,25053,25095,168,0,1050530996183190288,109,
                       101,109,58,102,101,116,99,104,45,100,111,117,98,108,101,0,2,1,1,2049,
                       25068,15,5,2049,25008,6,10,25073,25128,168,0,1730340976492540563,109,101,109,58,115,116,111,114,
                       101,45,100,111,117,98,108,101,0,5,5,2049,2217,1,1,2049,25068,6,2049,24988,
                       6,2049,24988,10,25106,25152,168,25939,193470948,84,73,66,0,1,7,15,10,25143,25172,168,
                       25939,8246457295145463473,105,109,97,103,101,58,115,97,118,101,0,1,1000,2049,10655,2049,10636,10,
                       25156,25190,168,0,210711039690,101,100,105,116,63,0,2,1793,25197,1,8,11,10,1,25193,
                       1793,25205,1,127,11,10,1,25201,2049,2255,22,10,25179,25223,168,0,6953539406400,103,97,116,
                       104,101,114,0,2049,25190,1,17,1,4134,2049,66,10,25211,25243,168,0,210709415765,99,121,
                       99,108,101,0,2049,10985,2049,2217,4,8,2049,2644,25,3,2049,25223,1,25243,7,10,
                       25156,25276,168,25939,-4557881830897049127,112,97,114,115,101,45,117,110,116,105,108,0,1793,25288,2049,
                       4451,2049,4234,2049,25243,771,2049,4096,10,1,25278,2049,4260,10,25259,25304,168,25939,210726130610,115,
                       58,103,101,116,0,1793,25326,1793,25312,1,13,11,10,1,25308,1793,25320,1,10,11,
                       10,1,25316,2049,2255,22,10,1,25306,2049,25276,10,25293,25342,168,25939,210708950412,99,108,101,
                       97,114,0,2049,4472,92,94,91,50,74,92,94,91,48,59,48,72,0,1,25344,
                       2049,8246,2049,10761,10,25331,25376,156,25939,6952575930081,78,111,69,99,104,111,0,0,25364,25386,
                       156,0,193454829,69,79,84,0,0,25377,25401,156,0,7571133383038306,73,103,110,111,114,105,110,
                       103,0,0,25387,25417,168,0,249892406716047873,105,103,110,111,114,105,110,103,63,0,3841,25401,
                       10,25402,25433,168,0,229486327000139,118,101,114,115,105,111,110,0,3841,4,1,100,20,10,
                       25420,25450,168,0,210710254026,100,111,110,101,63,0,2,4097,25386,1793,25459,1,13,11,10,
                       1,25455,1793,25467,1,10,11,10,1,25463,1793,25475,1,32,11,10,1,25471,2049,2298,
                       22,22,10,25439,25492,168,0,6385195044,101,111,108,63,0,3841,25386,1793,25500,1,13,11,
                       10,1,25496,1793,25508,1,10,11,10,1,25504,2049,2255,22,10,25482,25526,168,0,6954126150804,
                       118,97,108,105,100,63,0,2,2049,104,2049,2812,10,25514,25547,168,0,249883998779477802,99,104,
                       101,99,107,45,101,111,102,0,2,1793,25554,1,-1,11,10,1,25550,1793,25562,1,
                       4,11,10,1,25558,2049,2255,22,1793,25572,2049,11052,10,1,25569,9,10,25532,25584,168,
                       0,5863258,98,115,0,2049,4212,1,2,2049,2675,1793,25596,2049,4160,3,10,1,25592,9,
                       2049,4160,3,10,25576,25617,168,0,7572242387256805,99,104,101,99,107,45,98,115,0,2,1793,
                       25624,1,8,11,10,1,25620,1793,25632,1,127,11,10,1,25628,2049,2255,22,1793,25642,
                       2049,25584,10,1,25639,9,10,25603,25657,168,0,210708806723,99,104,101,99,107,0,2049,25547,
                       2049,25617,10,25646,25677,168,0,249883994190734226,99,104,97,114,97,99,116,101,114,0,2049,10985,
                       2,2049,4134,10,25662,25695,168,0,6953366942559,98,117,102,102,101,114,0,1793,25705,2049,25152,
                       2049,4234,8,2049,4096,10,1,25697,2049,4260,10,25683,25726,168,0,8246863741238799215,114,101,97,100,
                       45,116,111,107,101,110,0,1793,25742,1793,25737,2049,25677,2049,25657,2049,25450,10,1,25730,
                       2049,2397,10,1,25728,2049,25695,2049,4587,10,25710,25760,168,0,210716150453,105,110,112,117,116,
                       0,2049,25726,2049,25526,10,25749,25778,168,0,229479082815460,112,114,111,99,101,115,115,0,2049,
                       25417,1793,25796,771,2049,25492,1793,25792,1,25401,2049,3931,10,1,25787,9,10,1,25782,2049,
                       2862,1,415,1,17,2049,66,10,25364,25815,180,25939,5861507,47,47,0,2049,15624,1,25401,
                       2049,3916,10,25807,25834,168,25939,6953343520347,98,97,110,110,101,114,0,2049,25433,2049,4472,82,
                       69,84,82,79,32,49,50,32,40,37,110,46,37,110,41,92,110,0,1,25838,
                       2049,8246,2049,10761,2049,10837,2049,1545,2049,10837,18,2049,1545,2049,4472,37,110,32,77,97,
                       120,44,32,37,110,32,85,115,101,100,44,32,37,110,32,70,114,101,101,92,
                       110,0,1,25874,2049,8246,2049,10761,10,25822,25920,168,25939,6953744547860,108,105,115,116,101,110,
                       0,3841,25376,1793,25927,2049,25834,10,1,25924,2049,74,2049,25760,2049,25778,1,25931,7,10,
                       105,110,116,101,114,102,97,99,101,47,114,101,116,114,111,45,117,110,105,120,
                       46,114,101,116,114,111,0,25908,25979,156,0,229441520490121,83,111,117,114,99,101,115,0,
                       1,26216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                       0,0,0,0,0,0,0,0,25966,26119,168,0,6953711201841,107,110,111,119,110,63,0,
                       2,1,25979,2049,9003,10,26107,26136,168,0,210716136861,105,110,100,101,120,0,1,25979,4,
                       2049,9320,1,25979,4,2049,9140,10,26125,26159,168,0,6953974036516,114,101,99,111,114,100,0,
                       2049,4500,2,1,25979,2049,3864,3841,25979,1,25979,17,16,10,1793,26214,2049,15559,2049,26119,
                       1793,26184,2049,26136,10,1,26181,1793,26191,2049,26159,10,1,26188,2049,66,1793,26204,1,192,
                       1,2,17,8,10,1,26197,2049,2229,2049,1576,2049,186,16,10,1,26175,100,105,99,
                       116,45,119,111,114,100,115,45,108,105,115,116,105,110,103,46,102,111,114,116,
                       104,0,25908,26254,168,26216,229461403550098,100,58,119,111,114,100,115,0,1793,26263,2049,190,2049,
                       10761,2049,10731,10,1,26256,2049,8491,10,26241,26286,168,26216,-3502157631813457253,100,58,119,111,114,100,
                       115,45,119,105,116,104,0,2049,1977,2049,5573,1793,26317,2049,190,2,2049,1977,2049,5286,
                       1793,26306,2049,10761,2049,10731,10,1,26301,1793,26312,3,10,1,26310,2049,66,10,1,26292,
                       2049,8491,10,26268,26343,168,26216,2818131571306626127,100,105,115,112,108,97,121,45,105,102,45,108,
                       101,102,116,0,2,2049,1977,2049,5519,1793,26355,2049,10761,2049,10731,10,1,26350,1793,26361,
                       3,10,1,26359,2049,66,10,26268,26394,168,26216,2947807019553410009,100,58,119,111,114,100,115,45,
                       98,101,103,105,110,110,105,110,103,45,119,105,116,104,0,2049,1977,2049,5573,1793,
                       26405,2049,190,2049,26343,10,1,26400,2049,8491,10,0 };
                       1,24389,2049,2229,10,24372,24421,168,0,-4580934813069104890,97,97,58,102,111,114,45,101,97,99,
                       104,0,2049,8681,10,24404,24441,168,0,-4580099406349869736,97,115,58,102,111,114,45,101,97,99,
                       104,0,2049,8681,10,24424,24457,168,0,229458982815749,97,97,58,104,97,115,104,0,1,5381,
                       4,1793,24470,4,1,33,2049,16924,2049,16898,10,1,24462,2049,24421,10,24444,24488,168,0,
                       229459687252823,97,115,58,104,97,115,104,0,2049,24457,10,24475,24503,168,0,6953302506774,97,97,58,
                       101,113,63,0,2049,24457,4,2049,24457,11,10,24491,24523,168,0,229458980699715,97,97,58,45,
                       101,113,63,0,2049,24457,4,2049,24457,12,10,24510,24542,168,0,6953323853352,97,115,58,101,
                       113,63,0,2049,24503,10,24530,24558,168,0,229459685136789,97,115,58,45,101,113,63,0,2049,
                       24523,10,24545,24573,168,0,6953302505866,97,97,58,100,117,112,0,2049,1977,1793,24587,2,2049,
                       23865,2049,16979,1,16979,2049,8681,10,1,24577,2049,2229,10,24561,24604,168,0,6953323852444,97,115,
                       58,100,117,112,0,2049,24573,10,24592,24620,168,0,229459687688233,97,115,58,116,101,109,112,
                       0,10,24607,24634,168,0,229459687364536,97,115,58,107,101,101,112,0,10,24621,24652,168,0,
                       -4580098812306212145,97,115,58,116,111,45,117,112,112,101,114,0,1793,24663,2049,24604,1,6804,2049,
                       23343,2049,24620,10,1,24654,2049,17004,10,24635,24685,168,0,-4580098812316913748,97,115,58,116,111,45,
                       108,111,119,101,114,0,1793,24696,2049,24604,1,6829,2049,23343,2049,24620,10,1,24687,2049,
                       17004,10,24668,24719,168,0,-3527051417241377258,98,108,111,99,107,58,105,110,118,111,107,101,0,
                       1,3,2049,10655,2049,10636,10,24668,24742,168,0,8246131600073141446,98,108,111,99,107,58,114,101,
                       97,100,0,1,0,2049,24719,10,24726,24764,168,0,-4578818303223200395,98,108,111,99,107,58,119,
                       114,105,116,101,0,1,1,2049,24719,10,24747,24789,168,0,-4036225629868593021,98,108,111,99,107,
                       58,115,101,116,45,102,105,108,101,0,1,2,2049,24719,10,24769,24807,168,0,229480770855518,
                       115,58,115,112,108,105,116,0,2049,7184,10,24794,24833,168,0,6119006473764520940,115,58,115,112,
                       108,105,116,45,111,110,45,115,116,114,105,110,103,0,2049,7218,10,24810,24858,168,
                       0,-2157201768052001381,115,58,99,111,110,116,97,105,110,115,45,99,104,97,114,63,0,2049,
                       4857,10,24836,24885,168,0,-6456228026363444588,115,58,99,111,110,116,97,105,110,115,45,115,116,
                       114,105,110,103,63,0,2049,5286,10,24861,24912,168,0,-3160266536000611262,97,58,99,111,110,116,
                       97,105,110,115,45,115,116,114,105,110,103,63,0,2049,9003,10,24888,24931,168,0,
                       8246014626430519194,97,58,105,110,100,101,120,45,111,102,0,2049,9195,10,24915,24957,168,0,-5025353456659034242,
                       97,58,105,110,100,101,120,45,111,102,45,115,116,114,105,110,103,0,2049,9320,
                       10,24934,24976,168,0,8246850033149754348,115,58,105,110,100,101,120,45,111,102,0,2049,4779,10,
                       24960,25002,168,0,-94300875658333296,115,58,105,110,100,101,120,45,111,102,45,115,116,114,105,
                       110,103,0,2049,5069,10,24979,25021,168,0,8246228896775126019,100,111,117,98,108,101,58,118,97,
                       114,0,2049,2075,4,2049,130,2049,130,10,25005,25047,168,0,-3421095308458227740,100,111,117,98,108,
                       101,58,102,101,116,99,104,0,2049,58,4,15,10,25029,25070,168,0,-3421095308442276665,100,111,
                       117,98,108,101,58,115,116,111,114,101,0,1,19,2049,2229,2049,61,16,10,25052,
                       25096,168,0,-3421095308461432127,100,111,117,98,108,101,58,99,111,110,115,116,0,2049,25021,1,
                       25047,2049,8460,10,25078,25120,168,0,-4575607512064199915,100,111,117,98,108,101,58,115,119,97,112,
                       0,67503109,5,67503109,6,10,25103,25141,168,0,8246228896775106679,100,111,117,98,108,101,58,100,105,
                       112,0,67503109,67503109,5,5,8,6,6,10,25125,25165,168,0,8246228896775123014,100,111,117,98,108,
                       101,58,115,105,112,0,1,2217,2049,2229,2049,25141,10,25149,25188,168,0,8246632143337714634,109,101,
                       109,58,105,110,118,111,107,101,0,1,15,2049,10655,2049,10636,10,25172,0,156,0,
                       210667451248,65,76,76,79,67,0,25195,1,156,0,6384048135,70,82,69,69,0,25206,2,156,
                       0,210689088690,83,84,79,82,69,0,25216,3,156,0,210673137615,70,69,84,67,72,0,25227,
                       4,156,0,6952683137271,82,69,83,73,90,69,0,25149,25265,168,0,249897943727936361,109,101,109,58,
                       97,108,108,111,99,0,1,0,2049,25188,10,25250,25285,168,0,249897943749573803,109,101,109,58,
                       115,116,111,114,101,0,1,2,2049,25188,10,25270,25305,168,0,249897943733622728,109,101,109,58,
                       102,101,116,99,104,0,1,3,2049,25188,10,25290,25324,168,0,7572664961638592,109,101,109,58,
                       102,114,101,101,0,1,1,2049,25188,10,25310,25345,168,0,8246632143679146032,109,101,109,58,114,
                       101,115,105,122,101,0,1,4,2049,25188,10,25329,25365,168,0,249897943730056489,109,101,109,58,
                       99,101,108,108,43,0,1,8,19,17,10,25350,25392,168,0,1050530996183190288,109,101,109,58,
                       102,101,116,99,104,45,100,111,117,98,108,101,0,2,1,1,2049,25365,15,5,
                       2049,25305,6,10,25370,25425,168,0,1730340976492540563,109,101,109,58,115,116,111,114,101,45,100,
                       111,117,98,108,101,0,5,5,2049,2217,1,1,2049,25365,6,2049,25285,6,2049,25285,
                       10,25403,25449,168,26236,193470948,84,73,66,0,1,7,15,10,25440,25469,168,26236,8246457295145463473,105,
                       109,97,103,101,58,115,97,118,101,0,1,1000,2049,10655,2049,10636,10,25453,25487,168,
                       0,210711039690,101,100,105,116,63,0,2,1793,25494,1,8,11,10,1,25490,1793,25502,1,
                       127,11,10,1,25498,2049,2255,22,10,25476,25520,168,0,6953539406400,103,97,116,104,101,114,
                       0,2049,25487,1,17,1,4134,2049,66,10,25508,25540,168,0,210709415765,99,121,99,108,101,
                       0,2049,10985,2049,2217,4,8,2049,2644,25,3,2049,25520,1,25540,7,10,25453,25573,168,
                       26236,-4557881830897049127,112,97,114,115,101,45,117,110,116,105,108,0,1793,25585,2049,4451,2049,4234,
                       2049,25540,771,2049,4096,10,1,25575,2049,4260,10,25556,25601,168,26236,210726130610,115,58,103,101,
                       116,0,1793,25623,1793,25609,1,13,11,10,1,25605,1793,25617,1,10,11,10,1,25613,
                       2049,2255,22,10,1,25603,2049,25573,10,25590,25639,168,26236,210708950412,99,108,101,97,114,0,
                       2049,4472,92,94,91,50,74,92,94,91,48,59,48,72,0,1,25641,2049,8246,2049,
                       10761,10,25628,25673,156,26236,6952575930081,78,111,69,99,104,111,0,0,25661,25683,156,0,193454829,
                       69,79,84,0,0,25674,25698,156,0,7571133383038306,73,103,110,111,114,105,110,103,0,0,
                       25684,25714,168,0,249892406716047873,105,103,110,111,114,105,110,103,63,0,3841,25698,10,25699,25730,
                       168,0,229486327000139,118,101,114,115,105,111,110,0,3841,4,1,100,20,10,25717,25747,168,
                       0,210710254026,100,111,110,101,63,0,2,4097,25683,1793,25756,1,13,11,10,1,25752,1793,
                       25764,1,10,11,10,1,25760,1793,25772,1,32,11,10,1,25768,2049,2298,22,22,10,
                       25736,25789,168,0,6385195044,101,111,108,63,0,3841,25683,1793,25797,1,13,11,10,1,25793,
                       1793,25805,1,10,11,10,1,25801,2049,2255,22,10,25779,25823,168,0,6954126150804,118,97,108,
                       105,100,63,0,2,2049,104,2049,2812,10,25811,25844,168,0,249883998779477802,99,104,101,99,107,
                       45,101,111,102,0,2,1793,25851,1,-1,11,10,1,25847,1793,25859,1,4,11,10,
                       1,25855,2049,2255,22,1793,25869,2049,11052,10,1,25866,9,10,25829,25881,168,0,5863258,98,
                       115,0,2049,4212,1,2,2049,2675,1793,25893,2049,4160,3,10,1,25889,9,2049,4160,3,
                       10,25873,25914,168,0,7572242387256805,99,104,101,99,107,45,98,115,0,2,1793,25921,1,8,
                       11,10,1,25917,1793,25929,1,127,11,10,1,25925,2049,2255,22,1793,25939,2049,25881,10,
                       1,25936,9,10,25900,25954,168,0,210708806723,99,104,101,99,107,0,2049,25844,2049,25914,10,
                       25943,25974,168,0,249883994190734226,99,104,97,114,97,99,116,101,114,0,2049,10985,2,2049,4134,
                       10,25959,25992,168,0,6953366942559,98,117,102,102,101,114,0,1793,26002,2049,25449,2049,4234,8,
                       2049,4096,10,1,25994,2049,4260,10,25980,26023,168,0,8246863741238799215,114,101,97,100,45,116,111,
                       107,101,110,0,1793,26039,1793,26034,2049,25974,2049,25954,2049,25747,10,1,26027,2049,2397,10,
                       1,26025,2049,25992,2049,4587,10,26007,26057,168,0,210716150453,105,110,112,117,116,0,2049,26023,
                       2049,25823,10,26046,26075,168,0,229479082815460,112,114,111,99,101,115,115,0,2049,25714,1793,26093,
                       771,2049,25789,1793,26089,1,25698,2049,3931,10,1,26084,9,10,1,26079,2049,2862,1,415,
                       1,17,2049,66,10,25661,26112,180,26236,5861507,47,47,0,2049,15624,1,25698,2049,3916,10,
                       26104,26131,168,26236,6953343520347,98,97,110,110,101,114,0,2049,25730,2049,4472,82,69,84,82,
                       79,32,49,50,32,40,37,110,46,37,110,41,92,110,0,1,26135,2049,8246,2049,
                       10761,2049,10837,2049,1545,2049,10837,18,2049,1545,2049,4472,37,110,32,77,97,120,44,32,
                       37,110,32,85,115,101,100,44,32,37,110,32,70,114,101,101,92,110,0,1,
                       26171,2049,8246,2049,10761,10,26119,26217,168,26236,6953744547860,108,105,115,116,101,110,0,3841,25673,
                       1793,26224,2049,26131,10,1,26221,2049,74,2049,26057,2049,26075,1,26228,7,10,105,110,116,
                       101,114,102,97,99,101,47,114,101,116,114,111,45,117,110,105,120,46,114,101,
                       116,114,111,0,26205,26276,156,0,229441520490121,83,111,117,114,99,101,115,0,1,26513,0,
                       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                       0,0,0,0,0,26263,26416,168,0,6953711201841,107,110,111,119,110,63,0,2,1,26276,
                       2049,9003,10,26404,26433,168,0,210716136861,105,110,100,101,120,0,1,26276,4,2049,9320,1,
                       26276,4,2049,9140,10,26422,26456,168,0,6953974036516,114,101,99,111,114,100,0,2049,4500,2,
                       1,26276,2049,3864,3841,26276,1,26276,17,16,10,1793,26511,2049,15559,2049,26416,1793,26481,2049,
                       26433,10,1,26478,1793,26488,2049,26456,10,1,26485,2049,66,1793,26501,1,192,1,2,17,
                       8,10,1,26494,2049,2229,2049,1576,2049,186,16,10,1,26472,100,105,99,116,45,119,
                       111,114,100,115,45,108,105,115,116,105,110,103,46,102,111,114,116,104,0,26205,
                       26551,168,26513,229461403550098,100,58,119,111,114,100,115,0,1793,26560,2049,190,2049,10761,2049,10731,
                       10,1,26553,2049,8491,10,26538,26583,168,26513,-3502157631813457253,100,58,119,111,114,100,115,45,119,
                       105,116,104,0,2049,1977,2049,5573,1793,26614,2049,190,2,2049,1977,2049,5286,1793,26603,2049,
                       10761,2049,10731,10,1,26598,1793,26609,3,10,1,26607,2049,66,10,1,26589,2049,8491,10,
                       26565,26640,168,26513,2818131571306626127,100,105,115,112,108,97,121,45,105,102,45,108,101,102,116,
                       0,2,2049,1977,2049,5519,1793,26652,2049,10761,2049,10731,10,1,26647,1793,26658,3,10,1,
                       26656,2049,66,10,26565,26691,168,26513,2947807019553410009,100,58,119,111,114,100,115,45,98,101,103,
                       105,110,110,105,110,103,45,119,105,116,104,0,2049,1977,2049,5573,1793,26702,2049,190,
                       2049,26640,10,1,26697,2049,8491,10,0 };