Last active
March 12, 2026 04:49
-
-
Save guest271314/c3a15db95e8da80f368b681462972f6d to your computer and use it in GitHub Desktop.
Native Messaging with Uint8Array (non-JSON encoded)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| //! nm_assemblyscript_wasip1_bytes.js | |
| //! guest271314, 2-7-2026 | |
| //! Use case: | |
| //! Native Messaging with Uint8Array (non-JSON encoded) | |
| //! port.postMessage(new Uint8Array([255])) <=> | |
| //! port.onMessage.addListener((message)=>console.log(message)//Uint8Array([255])) | |
| //! https://issues.chromium.org/issues/40321352 | |
| //! https://issues.chromium.org/issues/40769448 | |
| //! Usage: | |
| //! Run in browser DevTools or | |
| //! node|deno -A|bun|js -m|d8 --module|tjs run nm_assemblyscript_wasip1_bytes.js | |
| //! Source: | |
| //! https://github.com/guest271314/native-messaging-assemblyscript/nm_assemblyscript.ts | |
| //! https://github.com/guest271314/native-messaging-assemblyscript/nm_assemblyscript.wasm | |
| var WASM_BYTES = new Uint8Array([0,97,115,109,1,0,0,0,1,62,11,96,1,127,1,127,96,2,127,127,0,96,1,127,0,96,2,127,127,1,127,96,0,0,96,3,127,127,127,1,127,96,4,127,127,127,127,1,127,96,3,127,127,127,0,96,0,1,127,96,3,127,127,126,0,96,4,127,127,127,127,0,2,103,3,22,119,97,115,105,95,115,110,97,112,115,104,111,116,95,112,114,101,118,105,101,119,49,8,102,100,95,119,114,105,116,101,0,6,22,119,97,115,105,95,115,110,97,112,115,104,111,116,95,112,114,101,118,105,101,119,49,9,112,114,111,99,95,101,120,105,116,0,2,22,119,97,115,105,95,115,110,97,112,115,104,111,116,95,112,114,101,118,105,101,119,49,7,102,100,95,114,101,97,100,0,6,3,50,49,1,0,5,5,0,1,1,0,0,0,4,1,1,7,2,2,0,1,1,9,4,8,0,3,3,3,0,0,1,1,2,2,4,4,0,10,3,3,0,8,0,2,3,3,7,5,2,4,0,5,3,1,0,1,6,68,13,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,156,158,2,11,127,1,65,0,11,7,26,3,4,109,97,105,110,0,50,6,109,101,109,111,114,121,2,0,6,95,115,116,97,114,116,0,35,12,2,182,1,10,131,53,49,9,0,32,0,32,1,54,2,0,11,13,0,32,0,65,20,107,40,2,16,65,1,118,11,183,2,1,3,127,32,0,32,1,65,1,116,106,33,3,32,2,33,1,3,64,32,0,32,3,73,4,64,32,0,47,1,0,34,4,65,128,1,73,4,127,32,1,32,4,58,0,0,32,1,65,1,106,5,32,4,65,128,16,73,4,127,32,1,32,4,65,6,118,65,192,1,114,32,4,65,63,113,65,128,1,114,65,8,116,114,59,1,0,32,1,65,2,106,5,32,4,65,128,184,3,73,32,0,65,2,106,32,3,73,113,32,4,65,128,240,3,113,65,128,176,3,70,113,4,64,32,0,47,1,2,34,5,65,128,248,3,113,65,128,184,3,70,4,64,32,1,32,4,65,255,7,113,65,10,116,65,128,128,4,106,32,5,65,255,7,113,114,34,4,65,63,113,65,128,1,114,65,24,116,32,4,65,6,118,65,63,113,65,128,1,114,65,16,116,114,32,4,65,12,118,65,63,113,65,128,1,114,65,8,116,114,32,4,65,18,118,65,240,1,114,114,54,2,0,32,1,65,4,106,33,1,32,0,65,4,106,33,0,12,5,11,11,32,1,32,4,65,12,118,65,224,1,114,32,4,65,6,118,65,63,113,65,128,1,114,65,8,116,114,59,1,0,32,1,32,4,65,63,113,65,128,1,114,58,0,2,32,1,65,3,106,11,11,33,1,32,0,65,2,106,33,0,12,1,11,11,32,1,32,2,107,11,28,0,2,64,2,64,35,0,65,3,107,14,3,1,1,1,0,11,0,11,32,0,32,1,32,2,16,5,11,82,0,32,0,65,10,79,65,1,106,32,0,65,144,206,0,79,65,3,106,32,0,65,232,7,79,106,32,0,65,228,0,73,27,32,0,65,192,132,61,79,65,6,106,32,0,65,128,148,235,220,3,79,65,8,106,32,0,65,128,194,215,47,79,106,32,0,65,128,173,226,4,73,27,32,0,65,160,141,6,73,27,11,9,0,32,0,32,1,54,2,4,11,9,0,32,0,32,1,54,2,8,11,16,0,32,0,32,0,16,8,32,0,32,0,16,9,32,0,11,10,0,32,0,40,2,4,65,124,113,11,10,0,32,0,40,2,4,65,3,113,11,80,1,2,127,65,192,3,16,18,65,144,1,16,18,65,128,2,16,18,65,32,16,18,35,5,34,1,16,11,33,0,3,64,32,0,32,1,71,4,64,32,0,16,12,65,3,71,4,64,65,0,65,192,2,65,160,1,65,16,16,38,0,11,32,0,65,20,106,16,34,32,0,16,11,33,0,12,1,11,11,11,17,0,32,0,32,0,40,2,4,65,124,113,32,1,114,16,8,11,17,0,32,0,32,1,32,0,40,2,4,65,3,113,114,16,8,11,38,1,1,127,32,1,40,2,8,33,3,32,0,32,1,32,2,114,16,8,32,0,32,3,16,9,32,3,32,0,16,15,32,1,32,0,16,9,11,198,1,1,2,127,32,0,35,6,70,4,64,32,0,40,2,8,34,1,69,4,64,65,0,65,192,2,65,148,1,65,30,16,38,0,11,32,1,36,6,11,2,64,32,0,16,11,34,1,69,4,64,32,0,40,2,8,69,32,0,65,156,158,2,73,113,69,4,64,65,0,65,192,2,65,128,1,65,18,16,38,0,11,12,1,11,32,0,40,2,8,34,2,69,4,64,65,0,65,192,2,65,132,1,65,16,16,38,0,11,32,1,32,2,16,9,32,2,32,1,16,15,11,35,7,33,1,32,0,40,2,12,34,2,65,2,77,4,127,65,1,5,32,2,65,128,30,40,2,0,75,4,64,65,192,3,65,128,4,65,21,65,28,16,38,0,11,32,2,65,2,116,65,132,30,106,40,2,0,65,32,113,11,33,2,32,0,32,1,35,8,69,65,2,32,2,27,16,16,11,35,0,32,0,69,4,64,15,11,32,0,65,20,107,34,0,16,12,35,8,70,4,64,32,0,16,17,35,4,65,1,106,36,4,11,11,13,0,32,0,40,2,0,65,124,113,65,4,106,11,135,2,1,4,127,32,1,40,2,0,34,3,65,1,113,69,4,64,65,0,65,208,4,65,140,2,65,14,16,38,0,11,32,3,65,124,113,34,3,65,12,73,4,64,65,0,65,208,4,65,142,2,65,14,16,38,0,11,32,3,65,128,2,73,4,127,32,3,65,4,118,5,65,31,65,252,255,255,255,3,32,3,32,3,65,252,255,255,255,3,79,27,34,3,103,107,34,4,65,7,107,33,2,32,3,32,4,65,4,107,118,65,16,115,11,34,4,65,16,73,32,2,65,23,73,113,69,4,64,65,0,65,208,4,65,156,2,65,14,16,38,0,11,32,1,40,2,8,33,5,32,1,40,2,4,34,3,4,64,32,3,32,5,16,9,11,32,5,4,64,32,5,32,3,16,8,11,32,1,32,0,32,2,65,4,116,32,4,106,65,2,116,106,34,1,40,2,96,70,4,64,32,1,32,5,54,2,96,32,5,69,4,64,32,0,32,2,65,2,116,106,34,1,40,2,4,65,126,32,4,119,113,33,3,32,1,32,3,54,2,4,32,3,69,4,64,32,0,32,0,40,2,0,65,126,32,2,119,113,16,3,11,11,11,11,188,3,1,5,127,32,1,69,4,64,65,0,65,208,4,65,201,1,65,14,16,38,0,11,32,1,40,2,0,34,3,65,1,113,69,4,64,65,0,65,208,4,65,203,1,65,14,16,38,0,11,32,1,65,4,106,32,1,40,2,0,65,124,113,106,34,4,40,2,0,34,2,65,1,113,4,64,32,0,32,4,16,20,32,1,32,3,65,4,106,32,2,65,124,113,106,34,3,16,3,32,1,65,4,106,32,1,40,2,0,65,124,113,106,34,4,40,2,0,33,2,11,32,3,65,2,113,4,64,32,1,65,4,107,40,2,0,34,1,40,2,0,34,6,65,1,113,69,4,64,65,0,65,208,4,65,221,1,65,16,16,38,0,11,32,0,32,1,16,20,32,1,32,6,65,4,106,32,3,65,124,113,106,34,3,16,3,11,32,4,32,2,65,2,114,16,3,32,3,65,124,113,34,2,65,12,73,4,64,65,0,65,208,4,65,233,1,65,14,16,38,0,11,32,4,32,1,65,4,106,32,2,106,71,4,64,65,0,65,208,4,65,234,1,65,14,16,38,0,11,32,4,65,4,107,32,1,54,2,0,32,2,65,128,2,73,4,127,32,2,65,4,118,5,65,31,65,252,255,255,255,3,32,2,32,2,65,252,255,255,255,3,79,27,34,2,103,107,34,3,65,7,107,33,5,32,2,32,3,65,4,107,118,65,16,115,11,34,2,65,16,73,32,5,65,23,73,113,69,4,64,65,0,65,208,4,65,251,1,65,14,16,38,0,11,32,0,32,5,65,4,116,32,2,106,65,2,116,106,40,2,96,33,3,32,1,65,0,16,8,32,1,32,3,16,9,32,3,4,64,32,3,32,1,16,8,11,32,0,32,5,65,4,116,32,2,106,65,2,116,106,32,1,54,2,96,32,0,32,0,40,2,0,65,1,32,5,116,114,16,3,32,0,32,5,65,2,116,106,34,0,32,0,40,2,4,65,1,32,2,116,114,54,2,4,11,202,1,1,3,127,32,2,32,1,173,84,4,64,65,0,65,208,4,65,254,2,65,14,16,38,0,11,32,1,65,19,106,65,112,113,65,4,107,33,1,32,0,40,2,160,12,34,3,4,64,32,3,65,4,106,32,1,75,4,64,65,0,65,208,4,65,133,3,65,16,16,38,0,11,32,1,65,16,107,34,5,32,3,70,4,64,32,3,40,2,0,33,4,32,5,33,1,11,5,32,0,65,164,12,106,32,1,75,4,64,65,0,65,208,4,65,146,3,65,5,16,38,0,11,11,32,2,167,65,112,113,32,1,107,34,3,65,20,73,4,64,15,11,32,1,32,4,65,2,113,32,3,65,8,107,34,3,65,1,114,114,16,3,32,1,65,0,16,8,32,1,65,0,16,9,32,1,65,4,106,32,3,106,34,3,65,2,16,3,32,0,32,3,54,2,160,12,32,0,32,1,16,21,11,150,1,1,2,127,63,0,34,0,65,0,76,4,127,65,1,32,0,107,64,0,65,0,72,5,65,0,11,4,64,0,11,65,160,158,2,65,0,16,3,65,192,170,2,65,0,54,2,0,3,64,32,1,65,23,73,4,64,32,1,65,2,116,65,160,158,2,106,65,0,54,2,4,65,0,33,0,3,64,32,0,65,16,73,4,64,32,1,65,4,116,32,0,106,65,2,116,65,160,158,2,106,65,0,54,2,96,32,0,65,1,106,33,0,12,1,11,11,32,1,65,1,106,33,1,12,1,11,11,65,160,158,2,65,196,170,2,63,0,172,66,16,134,16,22,65,160,158,2,36,10,11,156,3,1,3,127,2,64,2,64,2,64,2,64,35,3,14,3,0,1,2,3,11,65,1,36,3,65,0,36,4,16,13,35,7,36,6,35,4,15,11,35,8,69,33,1,35,6,16,11,33,0,3,64,32,0,35,7,71,4,64,32,0,36,6,32,0,16,12,32,1,71,4,64,32,0,32,1,16,14,65,0,36,4,32,0,65,20,106,16,34,35,4,15,11,32,0,16,11,33,0,12,1,11,11,65,0,36,4,16,13,35,6,16,11,35,7,70,4,64,35,11,33,0,3,64,32,0,65,156,158,2,73,4,64,32,0,40,2,0,16,18,32,0,65,4,106,33,0,12,1,11,11,35,6,16,11,33,0,3,64,32,0,35,7,71,4,64,32,0,16,12,32,1,71,4,64,32,0,32,1,16,14,32,0,65,20,106,16,34,11,32,0,16,11,33,0,12,1,11,11,35,9,33,0,35,7,36,9,32,0,36,7,32,1,36,8,32,0,16,11,36,6,65,2,36,3,11,35,4,15,11,35,6,34,0,35,7,71,4,64,32,0,16,11,36,6,32,0,16,12,35,8,69,71,4,64,65,0,65,192,2,65,229,1,65,20,16,38,0,11,32,0,65,156,158,2,73,4,64,32,0,65,0,16,8,32,0,65,0,16,9,5,35,1,32,0,16,19,107,36,1,32,0,65,4,106,34,1,65,156,158,2,79,4,64,35,10,69,4,64,16,23,11,35,10,32,1,65,4,107,33,0,32,1,65,15,113,65,1,32,1,27,4,127,65,1,5,32,0,40,2,0,65,1,113,11,4,64,65,0,65,208,4,65,178,4,65,3,16,38,0,11,32,0,32,0,40,2,0,65,1,114,16,3,32,0,16,21,11,11,65,10,15,11,35,7,35,7,16,8,35,7,35,7,16,9,65,0,36,3,11,65,0,11,29,0,32,0,65,1,65,27,32,0,103,107,116,106,65,1,107,32,0,32,0,65,254,255,255,255,1,73,27,11,189,1,1,2,127,32,1,65,128,2,73,4,127,32,1,65,4,118,5,65,31,32,1,16,25,34,1,103,107,34,3,65,7,107,33,2,32,1,32,3,65,4,107,118,65,16,115,11,34,1,65,16,73,32,2,65,23,73,113,69,4,64,65,0,65,208,4,65,206,2,65,14,16,38,0,11,32,0,32,2,65,2,116,106,40,2,4,65,127,32,1,116,113,34,1,4,127,32,0,32,1,104,32,2,65,4,116,106,65,2,116,106,40,2,96,5,32,0,40,2,0,65,127,32,2,65,1,106,116,113,34,1,4,127,32,0,32,1,104,34,1,65,2,116,106,40,2,4,34,2,69,4,64,65,0,65,208,4,65,219,2,65,18,16,38,0,11,32,0,32,2,104,32,1,65,4,116,106,65,2,116,106,40,2,96,5,65,0,11,11,11,212,2,1,3,127,32,1,65,252,255,255,255,3,75,4,64,65,128,2,65,208,4,65,205,3,65,29,16,38,0,11,32,0,65,12,32,1,65,19,106,65,112,113,65,4,107,32,1,65,12,77,27,34,1,16,26,34,2,69,4,64,32,1,65,128,2,79,4,127,32,1,16,25,5,32,1,11,33,2,63,0,34,3,32,2,65,4,32,0,40,2,160,12,32,3,65,16,116,65,4,107,71,116,106,65,255,255,3,106,65,128,128,124,113,65,16,118,34,2,32,2,32,3,72,27,64,0,65,0,72,4,64,32,2,64,0,65,0,72,4,64,0,11,11,32,0,32,3,65,16,116,63,0,172,66,16,134,16,22,32,0,32,1,16,26,34,2,69,4,64,65,0,65,208,4,65,243,3,65,16,16,38,0,11,11,32,1,32,2,40,2,0,65,124,113,75,4,64,65,0,65,208,4,65,245,3,65,14,16,38,0,11,32,0,32,2,16,20,32,2,40,2,0,33,3,32,1,65,4,106,65,15,113,4,64,65,0,65,208,4,65,233,2,65,14,16,38,0,11,32,3,65,124,113,32,1,107,34,4,65,16,79,4,64,32,2,32,1,32,3,65,2,113,114,16,3,32,2,65,4,106,32,1,106,34,1,32,4,65,4,107,65,1,114,16,3,32,0,32,1,16,21,5,32,2,32,3,65,126,113,16,3,32,2,65,4,106,32,2,40,2,0,65,124,113,106,34,0,32,0,40,2,0,65,125,113,16,3,11,32,2,11,170,1,1,1,127,32,0,65,236,255,255,255,3,79,4,64,65,128,2,65,192,2,65,133,2,65,31,16,38,0,11,35,1,35,2,79,4,64,2,64,65,128,16,33,2,3,64,32,2,16,24,107,33,2,35,3,69,4,64,35,1,173,66,200,1,126,66,228,0,128,167,65,128,8,106,36,2,12,2,11,32,2,65,0,74,13,0,11,35,1,35,1,35,2,107,65,128,8,73,65,10,116,106,36,2,11,11,35,10,69,4,64,16,23,11,35,10,32,0,65,16,106,16,27,34,2,32,1,54,2,12,32,2,32,0,54,2,16,32,2,35,9,35,8,16,16,35,1,32,2,16,19,106,36,1,32,2,65,20,106,34,1,65,0,32,0,252,11,0,32,1,11,10,0,32,0,65,20,107,40,2,16,11,250,4,0,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,32,0,65,255,255,3,113,14,77,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,11,65,240,5,15,11,65,160,6,15,11,65,192,6,15,11,65,224,6,15,11,65,144,7,15,11,65,192,7,15,11,65,240,7,15,11,65,144,8,15,11,65,192,8,15,11,65,224,8,15,11,65,128,9,15,11,65,160,9,15,11,65,208,9,15,11,65,240,9,15,11,65,160,10,15,11,65,208,10,15,11,65,128,11,15,11,65,160,11,15,11,65,208,11,15,11,65,240,11,15,11,65,144,12,15,11,65,176,12,15,11,65,208,12,15,11,65,240,12,15,11,65,160,13,15,11,65,192,13,15,11,65,224,13,15,11,65,144,14,15,11,65,176,14,15,11,65,208,14,15,11,65,240,14,15,11,65,144,15,15,11,65,176,15,15,11,65,208,15,15,11,65,240,15,15,11,65,144,16,15,11,65,192,16,15,11,65,240,16,15,11,65,160,17,15,11,65,208,17,15,11,65,128,18,15,11,65,176,18,15,11,65,208,18,15,11,65,240,18,15,11,65,144,19,15,11,65,176,19,15,11,65,208,19,15,11,65,240,19,15,11,65,144,20,15,11,65,176,20,15,11,65,208,20,15,11,65,128,21,15,11,65,160,21,15,11,65,192,21,15,11,65,240,21,15,11,65,144,22,15,11,65,192,22,15,11,65,240,22,15,11,65,160,23,15,11,65,192,23,15,11,65,224,23,15,11,65,128,24,15,11,65,176,24,15,11,65,224,24,15,11,65,128,25,15,11,65,160,25,15,11,65,192,25,15,11,65,240,25,15,11,65,160,26,15,11,65,192,26,15,11,65,224,26,15,11,65,128,27,15,11,65,160,27,15,11,65,192,27,15,11,65,240,27,15,11,65,144,28,15,11,65,176,28,15,11,65,224,28,11,82,0,32,1,69,4,64,15,11,32,0,69,4,64,65,0,65,192,2,65,167,2,65,14,16,38,0,11,32,1,65,20,107,34,1,16,12,35,8,70,4,64,32,0,65,20,107,16,12,34,0,35,8,69,70,4,64,32,1,16,17,5,35,3,65,1,70,32,0,65,3,70,113,4,64,32,1,16,17,11,11,11,11,15,0,32,0,32,1,54,2,0,32,0,32,1,16,31,11,9,0,32,0,40,2,0,16,18,11,59,0,2,64,2,64,2,64,2,64,2,64,2,64,2,64,32,0,65,8,107,40,2,0,14,6,0,1,2,3,4,5,6,11,15,11,15,11,15,11,32,0,16,33,15,11,32,0,16,33,15,11,32,0,16,33,15,11,0,11,50,0,35,12,4,64,15,11,65,1,36,12,63,0,65,16,116,65,156,158,2,107,65,1,118,36,2,65,240,2,16,10,36,5,65,144,3,16,10,36,7,65,160,4,16,10,36,9,16,50,11,26,0,35,11,65,156,30,72,4,64,65,176,158,2,65,224,158,2,65,1,65,1,16,38,0,11,11,66,0,35,11,65,8,107,36,11,16,36,35,11,66,0,55,3,0,35,11,32,0,54,2,0,35,11,65,0,54,2,4,35,11,65,8,107,36,11,16,36,35,11,66,0,55,3,0,35,11,65,8,106,36,11,35,11,65,8,106,36,11,32,0,69,69,11,171,2,1,1,127,35,11,65,4,107,36,11,16,36,35,11,65,0,54,2,0,65,0,65,12,16,3,65,12,66,225,196,189,147,199,206,142,16,55,3,0,35,11,32,0,54,2,0,32,0,16,37,4,127,35,11,32,0,54,2,0,32,0,16,4,33,4,65,3,36,0,32,0,32,4,65,19,16,6,65,19,106,5,65,19,11,34,0,65,160,210,185,131,2,54,2,0,32,0,65,4,106,33,0,35,11,32,1,54,2,0,32,1,16,37,4,64,35,11,32,1,54,2,0,32,1,16,4,33,4,65,3,36,0,32,1,32,4,32,0,16,6,32,0,106,33,0,11,32,0,65,40,58,0,0,32,2,16,7,34,1,32,0,65,1,106,106,33,0,3,64,32,0,65,1,107,34,0,32,2,65,10,112,65,48,106,58,0,0,32,2,65,10,110,34,2,13,0,11,32,0,32,1,106,34,0,65,58,58,0,0,32,3,16,7,34,1,32,0,65,1,106,106,33,0,3,64,32,0,65,1,107,34,0,32,3,65,10,112,65,48,106,58,0,0,32,3,65,10,110,34,3,13,0,11,32,0,32,1,106,34,0,65,169,20,59,1,0,65,0,32,0,65,10,107,16,8,65,2,65,0,65,1,65,8,16,0,26,65,255,1,16,1,35,11,65,4,106,36,11,11,131,1,1,1,127,35,11,65,4,107,36,11,16,36,35,11,65,0,54,2,0,35,11,32,0,54,2,0,32,1,65,0,72,32,0,16,29,34,2,32,1,73,114,4,64,65,192,3,65,144,5,65,134,1,65,7,16,38,0,11,65,192,5,32,0,32,1,106,54,2,0,65,196,5,32,2,32,1,107,54,2,0,65,0,65,192,5,65,1,65,200,5,16,2,34,0,65,255,255,3,113,4,64,32,0,16,30,65,144,5,65,139,1,65,14,16,38,0,11,65,200,5,40,2,0,35,11,65,4,106,36,11,11,174,1,1,1,127,35,11,65,12,107,36,11,16,36,35,11,66,0,55,3,0,35,11,65,0,54,2,8,35,11,65,12,65,4,16,28,34,2,54,2,0,35,11,32,2,54,2,4,32,2,65,0,16,32,35,11,32,2,54,2,4,32,2,65,0,16,8,35,11,32,2,54,2,4,32,2,65,0,16,9,35,11,32,0,54,2,4,32,0,16,29,32,1,73,32,1,65,252,255,255,255,3,75,114,4,64,65,144,1,65,144,29,65,25,65,7,16,38,0,11,35,11,32,2,54,2,4,35,11,32,0,54,2,8,32,2,32,0,16,32,35,11,32,2,54,2,4,32,2,32,0,16,8,35,11,32,2,54,2,4,32,2,32,1,16,9,35,11,65,12,106,36,11,32,2,11,81,1,1,127,35,11,65,8,107,36,11,16,36,35,11,66,0,55,3,0,2,64,2,64,2,64,35,0,65,1,107,14,3,1,1,2,0,11,0,11,35,11,32,0,54,2,0,32,0,16,29,33,1,11,35,11,65,0,54,2,0,35,11,32,0,54,2,4,32,0,32,1,16,40,35,11,65,8,106,36,11,11,204,1,1,3,127,35,11,65,16,107,36,11,16,36,35,11,66,0,55,3,0,35,11,66,0,55,3,8,35,11,65,4,16,51,34,1,54,2,0,35,11,32,1,54,2,4,32,1,65,0,16,39,26,35,11,32,1,54,2,4,65,1,36,0,35,11,32,1,16,41,34,1,54,2,8,35,11,32,1,54,2,4,35,11,65,4,107,36,11,16,36,35,11,65,0,54,2,0,35,11,32,1,54,2,0,32,1,40,2,8,65,4,72,4,64,65,192,3,65,144,29,65,215,0,65,7,16,38,0,11,35,11,32,1,54,2,0,32,1,40,2,4,40,2,0,33,2,35,11,65,4,106,36,11,35,11,32,2,16,51,34,1,54,2,12,3,64,32,0,32,2,72,4,64,35,11,32,1,54,2,4,32,1,32,0,16,39,32,0,106,33,0,12,1,11,11,35,11,65,16,106,36,11,32,1,11,37,0,35,11,65,4,107,36,11,16,36,35,11,65,0,54,2,0,35,11,32,0,54,2,0,32,0,40,2,8,35,11,65,4,106,36,11,11,117,0,35,11,65,4,107,36,11,16,36,35,11,65,0,54,2,0,35,11,32,0,54,2,0,35,11,65,4,107,36,11,16,36,35,11,65,0,54,2,0,65,192,5,32,0,54,2,0,35,11,32,0,54,2,0,65,196,5,32,0,16,29,54,2,0,65,1,65,192,5,65,1,65,200,5,16,0,34,0,65,255,255,3,113,4,64,32,0,16,30,65,144,5,65,148,1,65,12,16,38,0,11,35,11,65,4,106,36,11,35,11,65,4,106,36,11,11,43,0,35,11,65,4,107,36,11,16,36,35,11,65,0,54,2,0,35,11,32,0,54,2,0,32,0,40,2,4,32,1,106,45,0,0,35,11,65,4,106,36,11,11,178,1,1,1,127,35,11,65,16,107,36,11,16,36,35,11,66,0,55,3,0,35,11,66,0,55,3,8,32,0,69,4,64,35,11,65,12,65,3,16,28,34,0,54,2,0,11,35,11,32,0,54,2,4,32,0,65,0,16,32,35,11,32,0,54,2,4,32,0,65,0,16,8,35,11,32,0,54,2,4,32,0,65,0,16,9,32,1,65,252,255,255,255,3,75,4,64,65,144,1,65,192,1,65,19,65,57,16,38,0,11,35,11,32,1,65,1,16,28,34,2,54,2,8,35,11,32,0,54,2,4,35,11,32,2,54,2,12,32,0,32,2,16,32,35,11,32,0,54,2,4,32,0,32,2,16,8,35,11,32,0,54,2,4,32,0,32,1,16,9,35,11,65,16,106,36,11,32,0,11,45,0,35,11,65,4,107,36,11,16,36,35,11,65,0,54,2,0,35,11,32,0,54,2,0,32,0,40,2,4,32,1,106,32,2,58,0,0,35,11,65,4,106,36,11,11,200,1,1,3,127,35,11,65,12,107,36,11,16,36,35,11,66,0,55,3,0,35,11,65,0,54,2,8,35,11,32,0,54,2,0,35,11,32,0,54,2,4,32,0,16,43,33,3,35,11,65,12,65,5,16,28,34,4,54,2,8,35,11,32,0,54,2,4,32,4,32,0,40,2,0,34,5,54,2,0,32,4,32,5,16,31,35,11,32,0,54,2,4,32,4,32,0,40,2,4,32,1,65,0,72,4,127,32,1,32,3,106,34,0,65,0,32,0,65,0,74,27,5,32,1,32,3,32,1,32,3,72,27,11,34,0,106,54,2,4,32,4,32,2,65,0,72,4,127,32,2,32,3,106,34,1,65,0,32,1,65,0,74,27,5,32,2,32,3,32,2,32,3,72,27,11,34,1,32,0,32,0,32,1,72,27,32,0,107,54,2,8,35,11,65,12,106,36,11,32,4,11,138,8,1,9,127,35,11,65,24,107,36,11,16,36,35,11,65,0,65,24,252,11,0,35,11,35,11,32,0,54,2,0,65,1,36,0,35,11,65,4,107,36,11,16,36,35,11,65,0,54,2,0,2,64,2,64,2,64,35,0,65,1,107,14,3,1,1,2,0,11,0,11,65,127,33,1,11,35,11,32,0,54,2,0,35,11,65,12,107,36,11,16,36,35,11,66,0,55,3,0,35,11,65,0,54,2,8,35,11,32,0,54,2,0,35,11,32,0,54,2,4,32,0,16,29,33,3,32,1,65,0,72,4,64,32,1,65,127,70,4,127,32,3,5,65,144,1,65,208,29,65,205,14,65,7,16,38,0,11,33,1,5,32,1,32,3,74,4,64,65,144,1,65,208,29,65,210,14,65,7,16,38,0,11,11,35,11,65,12,65,5,16,28,34,4,54,2,8,32,4,32,0,54,2,0,32,4,32,0,16,31,32,4,32,1,54,2,8,32,4,32,0,54,2,4,35,11,65,12,106,36,11,35,11,65,4,106,36,11,32,4,54,2,4,35,11,32,4,54,2,0,32,4,16,43,34,3,65,128,128,192,0,76,4,64,35,11,65,4,16,51,34,0,54,2,8,35,11,32,0,54,2,12,65,1,36,0,32,0,16,41,33,1,35,11,32,1,54,2,0,35,11,32,4,54,2,16,35,11,32,4,40,2,0,34,2,54,2,12,32,2,16,29,33,2,35,11,65,4,107,36,11,16,36,35,11,65,0,54,2,0,35,11,32,1,54,2,0,32,1,40,2,8,65,4,72,4,64,65,192,3,65,144,29,65,142,1,65,7,16,38,0,11,35,11,32,1,54,2,0,32,1,40,2,4,32,2,54,2,0,35,11,65,4,106,36,11,35,11,32,0,54,2,0,32,0,16,44,35,11,32,4,54,2,12,35,11,32,4,40,2,0,34,0,54,2,0,32,0,16,44,35,11,65,24,106,36,11,15,11,3,64,32,2,32,3,72,4,64,32,3,32,2,65,248,255,63,106,34,1,76,4,127,32,3,5,65,127,33,0,3,64,32,1,32,3,72,4,64,2,64,35,11,32,4,54,2,0,32,4,32,1,16,45,65,44,70,4,64,32,1,33,0,12,1,11,32,1,65,1,106,33,1,12,2,11,11,11,32,3,32,0,32,0,65,127,70,27,11,33,0,35,11,32,4,54,2,0,32,4,32,2,16,45,33,5,35,11,32,4,54,2,0,32,4,32,0,65,1,107,16,45,33,6,65,0,33,1,35,11,35,11,65,8,107,36,11,16,36,35,11,66,0,55,3,0,35,11,65,12,65,5,16,28,34,8,54,2,0,35,11,32,8,54,2,4,35,11,32,8,32,5,65,219,0,70,4,127,32,6,65,221,0,71,5,32,5,65,44,70,4,127,65,1,33,1,32,6,65,221,0,71,5,65,0,11,11,34,5,32,0,32,2,65,1,106,32,2,32,1,27,34,2,107,34,6,32,1,106,106,34,8,65,4,106,16,46,34,9,54,2,0,35,11,65,8,106,36,11,32,9,54,2,20,35,11,32,9,54,2,0,32,9,65,0,32,8,65,255,1,113,16,47,35,11,32,9,54,2,0,32,9,65,1,32,8,65,8,117,65,255,1,113,16,47,35,11,32,9,54,2,0,32,9,65,2,32,8,65,16,117,65,255,1,113,16,47,35,11,32,9,54,2,0,32,9,65,3,32,8,65,24,117,65,255,1,113,16,47,32,1,4,127,35,11,32,9,54,2,0,32,9,65,4,65,219,0,16,47,65,5,5,65,4,11,33,1,35,11,32,9,54,2,0,35,11,32,4,54,2,16,32,4,32,2,32,0,16,48,33,2,35,11,32,2,54,2,12,35,11,65,12,107,36,11,16,36,35,11,66,0,55,3,0,35,11,65,0,54,2,8,35,11,32,9,54,2,0,35,11,32,2,54,2,4,35,11,32,2,54,2,8,32,2,16,43,33,7,32,1,65,0,72,4,127,65,1,5,35,11,32,9,54,2,8,32,9,16,43,32,1,32,7,106,72,11,4,64,65,192,3,65,208,29,65,238,14,65,5,16,38,0,11,35,11,32,9,54,2,8,32,9,40,2,4,32,1,106,35,11,32,2,54,2,8,32,2,40,2,4,32,7,252,10,0,0,35,11,65,12,106,36,11,32,5,4,64,35,11,32,9,54,2,0,32,9,32,1,32,6,106,65,221,0,16,47,11,35,11,32,9,54,2,12,35,11,32,9,40,2,0,34,1,54,2,0,32,1,16,44,32,0,33,2,12,1,11,11,35,11,65,24,106,36,11,11,66,1,1,127,35,11,65,8,107,36,11,16,36,35,11,66,0,55,3,0,3,64,35,11,16,42,34,0,54,2,0,35,11,32,0,54,2,4,32,0,16,29,4,64,35,11,32,0,54,2,4,32,0,16,49,12,1,11,11,35,11,65,8,106,36,11,11,65,0,35,11,65,4,107,36,11,16,36,35,11,65,0,54,2,0,32,0,65,252,255,255,255,3,75,4,64,65,144,1,65,192,1,65,52,65,43,16,38,0,11,35,11,32,0,65,1,16,28,34,0,54,2,0,35,11,65,4,106,36,11,32,0,11,11,174,25,182,1,0,65,12,11,1,60,0,65,24,11,43,2,0,0,0,36,0,0,0,85,0,110,0,112,0,97,0,105,0,114,0,101,0,100,0,32,0,115,0,117,0,114,0,114,0,111,0,103,0,97,0,116,0,101,0,65,204,0,11,1,44,0,65,216,0,11,35,2,0,0,0,28,0,0,0,126,0,108,0,105,0,98,0,47,0,115,0,116,0,114,0,105,0,110,0,103,0,46,0,116,0,115,0,65,252,0,11,1,44,0,65,136,1,11,35,2,0,0,0,28,0,0,0,73,0,110,0,118,0,97,0,108,0,105,0,100,0,32,0,108,0,101,0,110,0,103,0,116,0,104,0,65,172,1,11,1,60,0,65,184,1,11,45,2,0,0,0,38,0,0,0,126,0,108,0,105,0,98,0,47,0,97,0,114,0,114,0,97,0,121,0,98,0,117,0,102,0,102,0,101,0,114,0,46,0,116,0,115,0,65,236,1,11,1,60,0,65,248,1,11,47,2,0,0,0,40,0,0,0,65,0,108,0,108,0,111,0,99,0,97,0,116,0,105,0,111,0,110,0,32,0,116,0,111,0,111,0,32,0,108,0,97,0,114,0,103,0,101,0,65,172,2,11,1,60,0,65,184,2,11,39,2,0,0,0,32,0,0,0,126,0,108,0,105,0,98,0,47,0,114,0,116,0,47,0,105,0,116,0,99,0,109,0,115,0,46,0,116,0,115,0,65,172,3,11,1,60,0,65,184,3,11,43,2,0,0,0,36,0,0,0,73,0,110,0,100,0,101,0,120,0,32,0,111,0,117,0,116,0,32,0,111,0,102,0,32,0,114,0,97,0,110,0,103,0,101,0,65,236,3,11,1,44,0,65,248,3,11,27,2,0,0,0,20,0,0,0,126,0,108,0,105,0,98,0,47,0,114,0,116,0,46,0,116,0,115,0,65,188,4,11,1,60,0,65,200,4,11,37,2,0,0,0,30,0,0,0,126,0,108,0,105,0,98,0,47,0,114,0,116,0,47,0,116,0,108,0,115,0,102,0,46,0,116,0,115,0,65,252,4,11,1,60,0,65,136,5,11,47,2,0,0,0,40,0,0,0,126,0,108,0,105,0,98,0,47,0,119,0,97,0,115,0,105,0,95,0,112,0,114,0,111,0,99,0,101,0,115,0,115,0,46,0,116,0,115,0,65,220,5,11,1,44,0,65,232,5,11,21,2,0,0,0,14,0,0,0,83,0,85,0,67,0,67,0,69,0,83,0,83,0,65,140,6,11,1,28,0,65,152,6,11,19,2,0,0,0,12,0,0,0,84,0,79,0,79,0,66,0,73,0,71,0,65,172,6,11,1,28,0,65,184,6,11,17,2,0,0,0,10,0,0,0,65,0,67,0,67,0,69,0,83,0,65,204,6,11,1,44,0,65,216,6,11,25,2,0,0,0,18,0,0,0,65,0,68,0,68,0,82,0,73,0,78,0,85,0,83,0,69,0,65,252,6,11,1,44,0,65,136,7,11,31,2,0,0,0,24,0,0,0,65,0,68,0,68,0,82,0,78,0,79,0,84,0,65,0,86,0,65,0,73,0,76,0,65,172,7,11,1,44,0,65,184,7,11,29,2,0,0,0,22,0,0,0,65,0,70,0,78,0,79,0,83,0,85,0,80,0,80,0,79,0,82,0,84,0,65,220,7,11,1,28,0,65,232,7,11,17,2,0,0,0,10,0,0,0,65,0,71,0,65,0,73,0,78,0,65,252,7,11,1,44,0,65,136,8,11,21,2,0,0,0,14,0,0,0,65,0,76,0,82,0,69,0,65,0,68,0,89,0,65,172,8,11,1,28,0,65,184,8,11,15,2,0,0,0,8,0,0,0,66,0,65,0,68,0,70,0,65,204,8,11,1,28,0,65,216,8,11,19,2,0,0,0,12,0,0,0,66,0,65,0,68,0,77,0,83,0,71,0,65,236,8,11,1,28,0,65,248,8,11,15,2,0,0,0,8,0,0,0,66,0,85,0,83,0,89,0,65,140,9,11,1,44,0,65,152,9,11,23,2,0,0,0,16,0,0,0,67,0,65,0,78,0,67,0,69,0,76,0,69,0,68,0,65,188,9,11,1,28,0,65,200,9,11,17,2,0,0,0,10,0,0,0,67,0,72,0,73,0,76,0,68,0,65,220,9,11,1,44,0,65,232,9,11,29,2,0,0,0,22,0,0,0,67,0,79,0,78,0,78,0,65,0,66,0,79,0,82,0,84,0,69,0,68,0,65,140,10,11,1,44,0,65,152,10,11,29,2,0,0,0,22,0,0,0,67,0,79,0,78,0,78,0,82,0,69,0,70,0,85,0,83,0,69,0,68,0,65,188,10,11,1,44,0,65,200,10,11,25,2,0,0,0,18,0,0,0,67,0,79,0,78,0,78,0,82,0,69,0,83,0,69,0,84,0,65,236,10,11,1,28,0,65,248,10,11,19,2,0,0,0,12,0,0,0,68,0,69,0,65,0,68,0,76,0,75,0,65,140,11,11,1,44,0,65,152,11,11,29,2,0,0,0,22,0,0,0,68,0,69,0,83,0,84,0,65,0,68,0,68,0,82,0,82,0,69,0,81,0,65,188,11,11,1,28,0,65,200,11,11,13,2,0,0,0,6,0,0,0,68,0,79,0,77,0,65,220,11,11,1,28,0,65,232,11,11,17,2,0,0,0,10,0,0,0,68,0,81,0,85,0,79,0,84,0,65,252,11,11,1,28,0,65,136,12,11,17,2,0,0,0,10,0,0,0,69,0,88,0,73,0,83,0,84,0,65,156,12,11,1,28,0,65,168,12,11,17,2,0,0,0,10,0,0,0,70,0,65,0,85,0,76,0,84,0,65,188,12,11,1,28,0,65,200,12,11,15,2,0,0,0,8,0,0,0,70,0,66,0,73,0,71,0,65,220,12,11,1,44,0,65,232,12,11,29,2,0,0,0,22,0,0,0,72,0,79,0,83,0,84,0,85,0,78,0,82,0,69,0,65,0,67,0,72,0,65,140,13,11,1,28,0,65,152,13,11,15,2,0,0,0,8,0,0,0,73,0,68,0,82,0,77,0,65,172,13,11,1,28,0,65,184,13,11,17,2,0,0,0,10,0,0,0,73,0,76,0,83,0,69,0,81,0,65,204,13,11,1,44,0,65,216,13,11,27,2,0,0,0,20,0,0,0,73,0,78,0,80,0,82,0,79,0,71,0,82,0,69,0,83,0,83,0,65,252,13,11,1,28,0,65,136,14,11,15,2,0,0,0,8,0,0,0,73,0,78,0,84,0,82,0,65,156,14,11,1,28,0,65,168,14,11,17,2,0,0,0,10,0,0,0,73,0,78,0,86,0,65,0,76,0,65,188,14,11,1,28,0,65,200,14,11,11,2,0,0,0,4,0,0,0,73,0,79,0,65,220,14,11,1,28,0,65,232,14,11,19,2,0,0,0,12,0,0,0,73,0,83,0,67,0,79,0,78,0,78,0,65,252,14,11,1,28,0,65,136,15,11,17,2,0,0,0,10,0,0,0,73,0,83,0,68,0,73,0,82,0,65,156,15,11,1,28,0,65,168,15,11,15,2,0,0,0,8,0,0,0,76,0,79,0,79,0,80,0,65,188,15,11,1,28,0,65,200,15,11,17,2,0,0,0,10,0,0,0,77,0,70,0,73,0,76,0,69,0,65,220,15,11,1,28,0,65,232,15,11,17,2,0,0,0,10,0,0,0,77,0,76,0,73,0,78,0,75,0,65,252,15,11,1,44,0,65,136,16,11,21,2,0,0,0,14,0,0,0,77,0,83,0,71,0,83,0,73,0,90,0,69,0,65,172,16,11,1,44,0,65,184,16,11,23,2,0,0,0,16,0,0,0,77,0,85,0,76,0,84,0,73,0,72,0,79,0,80,0,65,220,16,11,1,44,0,65,232,16,11,29,2,0,0,0,22,0,0,0,78,0,65,0,77,0,69,0,84,0,79,0,79,0,76,0,79,0,78,0,71,0,65,140,17,11,1,44,0,65,152,17,11,21,2,0,0,0,14,0,0,0,78,0,69,0,84,0,68,0,79,0,87,0,78,0,65,188,17,11,1,44,0,65,200,17,11,23,2,0,0,0,16,0,0,0,78,0,69,0,84,0,82,0,69,0,83,0,69,0,84,0,65,236,17,11,1,44,0,65,248,17,11,27,2,0,0,0,20,0,0,0,78,0,69,0,84,0,85,0,78,0,82,0,69,0,65,0,67,0,72,0,65,156,18,11,1,28,0,65,168,18,11,17,2,0,0,0,10,0,0,0,78,0,70,0,73,0,76,0,69,0,65,188,18,11,1,28,0,65,200,18,11,19,2,0,0,0,12,0,0,0,78,0,79,0,66,0,85,0,70,0,83,0,65,220,18,11,1,28,0,65,232,18,11,17,2,0,0,0,10,0,0,0,78,0,79,0,68,0,69,0,86,0,65,252,18,11,1,28,0,65,136,19,11,17,2,0,0,0,10,0,0,0,78,0,79,0,69,0,78,0,84,0,65,156,19,11,1,28,0,65,168,19,11,19,2,0,0,0,12,0,0,0,78,0,79,0,69,0,88,0,69,0,67,0,65,188,19,11,1,28,0,65,200,19,11,17,2,0,0,0,10,0,0,0,78,0,79,0,76,0,67,0,75,0,65,220,19,11,1,28,0,65,232,19,11,19,2,0,0,0,12,0,0,0,78,0,79,0,76,0,73,0,78,0,75,0,65,252,19,11,1,28,0,65,136,20,11,17,2,0,0,0,10,0,0,0,78,0,79,0,77,0,69,0,77,0,65,156,20,11,1,28,0,65,168,20,11,17,2,0,0,0,10,0,0,0,78,0,79,0,77,0,83,0,71,0,65,188,20,11,1,44,0,65,200,20,11,27,2,0,0,0,20,0,0,0,78,0,79,0,80,0,82,0,79,0,84,0,79,0,79,0,80,0,84,0,65,236,20,11,1,28,0,65,248,20,11,17,2,0,0,0,10,0,0,0,78,0,79,0,83,0,80,0,67,0,65,140,21,11,1,28,0,65,152,21,11,17,2,0,0,0,10,0,0,0,78,0,79,0,83,0,89,0,83,0,65,172,21,11,1,44,0,65,184,21,11,21,2,0,0,0,14,0,0,0,78,0,79,0,84,0,67,0,79,0,78,0,78,0,65,220,21,11,1,28,0,65,232,21,11,19,2,0,0,0,12,0,0,0,78,0,79,0,84,0,68,0,73,0,82,0,65,252,21,11,1,44,0,65,136,22,11,23,2,0,0,0,16,0,0,0,78,0,79,0,84,0,69,0,77,0,80,0,84,0,89,0,65,172,22,11,1,44,0,65,184,22,11,35,2,0,0,0,28,0,0,0,78,0,79,0,84,0,82,0,69,0,67,0,79,0,86,0,69,0,82,0,65,0,66,0,76,0,69,0,65,220,22,11,1,44,0,65,232,22,11,21,2,0,0,0,14,0,0,0,78,0,79,0,84,0,83,0,79,0,67,0,75,0,65,140,23,11,1,28,0,65,152,23,11,19,2,0,0,0,12,0,0,0,78,0,79,0,84,0,83,0,85,0,80,0,65,172,23,11,1,28,0,65,184,23,11,17,2,0,0,0,10,0,0,0,78,0,79,0,84,0,84,0,89,0,65,204,23,11,1,28,0,65,216,23,11,15,2,0,0,0,8,0,0,0,78,0,88,0,73,0,79,0,65,236,23,11,1,44,0,65,248,23,11,23,2,0,0,0,16,0,0,0,79,0,86,0,69,0,82,0,70,0,76,0,79,0,87,0,65,156,24,11,1,44,0,65,168,24,11,25,2,0,0,0,18,0,0,0,79,0,87,0,78,0,69,0,82,0,68,0,69,0,65,0,68,0,65,204,24,11,1,28,0,65,216,24,11,15,2,0,0,0,8,0,0,0,80,0,69,0,82,0,77,0,65,236,24,11,1,28,0,65,248,24,11,15,2,0,0,0,8,0,0,0,80,0,73,0,80,0,69,0,65,140,25,11,1,28,0,65,152,25,11,17,2,0,0,0,10,0,0,0,80,0,82,0,79,0,84,0,79,0,65,172,25,11,1,44,0,65,184,25,11,35,2,0,0,0,28,0,0,0,80,0,82,0,79,0,84,0,79,0,78,0,79,0,83,0,85,0,80,0,80,0,79,0,82,0,84,0,65,220,25,11,1,44,0,65,232,25,11,25,2,0,0,0,18,0,0,0,80,0,82,0,79,0,84,0,79,0,84,0,89,0,80,0,69,0,65,140,26,11,1,28,0,65,152,26,11,17,2,0,0,0,10,0,0,0,82,0,65,0,78,0,71,0,69,0,65,172,26,11,1,28,0,65,184,26,11,15,2,0,0,0,8,0,0,0,82,0,79,0,70,0,83,0,65,204,26,11,1,28,0,65,216,26,11,17,2,0,0,0,10,0,0,0,83,0,80,0,73,0,80,0,69,0,65,236,26,11,1,28,0,65,248,26,11,15,2,0,0,0,8,0,0,0,83,0,82,0,67,0,72,0,65,140,27,11,1,28,0,65,152,27,11,17,2,0,0,0,10,0,0,0,83,0,84,0,65,0,76,0,69,0,65,172,27,11,1,44,0,65,184,27,11,23,2,0,0,0,16,0,0,0,84,0,73,0,77,0,69,0,68,0,79,0,85,0,84,0,65,220,27,11,1,28,0,65,232,27,11,19,2,0,0,0,12,0,0,0,84,0,88,0,84,0,66,0,83,0,89,0,65,252,27,11,1,28,0,65,136,28,11,15,2,0,0,0,8,0,0,0,88,0,68,0,69,0,86,0,65,156,28,11,1,44,0,65,168,28,11,27,2,0,0,0,20,0,0,0,78,0,79,0,84,0,67,0,65,0,80,0,65,0,66,0,76,0,69,0,65,204,28,11,1,44,0,65,216,28,11,21,2,0,0,0,14,0,0,0,85,0,78,0,75,0,78,0,79,0,87,0,78,0,65,252,28,11,1,60,0,65,136,29,11,39,2,0,0,0,32,0,0,0,126,0,108,0,105,0,98,0,47,0,100,0,97,0,116,0,97,0,118,0,105,0,101,0,119,0,46,0,116,0,115,0,65,188,29,11,1,60,0,65,200,29,11,43,2,0,0,0,36,0,0,0,126,0,108,0,105,0,98,0,47,0,116,0,121,0,112,0,101,0,100,0,97,0,114,0,114,0,97,0,121,0,46,0,116,0,115,0,65,128,30,11,13,6,0,0,0,32,0,0,0,32,0,0,0,32,0,65,152,30,11,1,65]); | |
| var ERRNO_SUCCESS = 0; | |
| var FILETYPE_CHARACTER_DEVICE = 2; | |
| var message = new Uint8Array([255]); | |
| var header = new Uint8Array(4); | |
| new DataView(header.buffer).setUint32(0, message.length, true); | |
| var messageLength = 0; | |
| var fs = { | |
| readSync(buffer, offset, length, position) { | |
| if (messageLength) { | |
| return 0; | |
| } | |
| if (buffer.length === 4 && messageLength === 0) { | |
| buffer.set(header, 0); | |
| return header.buffer.byteLength; | |
| } else { | |
| buffer.set(message, 0); | |
| messageLength = new DataView(header.buffer).getUint32(0, true); | |
| return message.length; | |
| } | |
| }, | |
| writeSync(buffer, offset, length, position) { | |
| console.log("buffer instanceof Uint8Array:", buffer instanceof Uint8Array, buffer); | |
| }, | |
| }; | |
| class WASIP1_MIN { | |
| args; | |
| env; | |
| memory; | |
| fds; | |
| exports; | |
| constructor(options) { | |
| this.args = options?.args ? options.args : []; | |
| this.env = options?.env ? options.env : {}; | |
| this.memory = options?.memory; | |
| this.fds = [{ | |
| type: FILETYPE_CHARACTER_DEVICE, | |
| handle: null, | |
| }, { | |
| type: FILETYPE_CHARACTER_DEVICE, | |
| handle: null, | |
| }, { | |
| type: FILETYPE_CHARACTER_DEVICE, | |
| handle: null, | |
| }]; | |
| this.exports = { | |
| args_sizes_get: (...args) => {}, | |
| fd_close: () => {}, | |
| fd_seek: () => {}, | |
| args_get: (argv_ptr, argv_buf_ptr) => { | |
| console.log("args_get", argv_ptr, argv_buf_ptr); | |
| const args = this.args; | |
| const heap = new Uint8Array(this.memory.buffer); | |
| const view = new DataView(this.memory.buffer); | |
| for (let arg of args) { | |
| view.setUint32(argv_ptr, argv_buf_ptr, true); | |
| argv_ptr += 4; | |
| const data = new Uint8Array( | |
| [...`${arg}\x00`].map((s) => s.codePointAt(0)), | |
| ); | |
| heap.set(data, argv_buf_ptr); | |
| argv_buf_ptr += data.length; | |
| } | |
| return ERRNO_SUCCESS; | |
| }, | |
| fd_read: (fd, iovs_ptr, iovs_len, nread_out) => { | |
| console.log("fd_read", iovs_ptr, iovs_len, nread_out); | |
| const entry = this.fds[fd]; | |
| if (!entry) {} | |
| const view = new DataView(this.memory.buffer); | |
| let nread = 0; | |
| let n = 0; | |
| for (let i = 0; i < iovs_len; i++) { | |
| const data_ptr = view.getUint32(iovs_ptr, true); | |
| iovs_ptr += 4; | |
| const data_len = view.getUint32(iovs_ptr, true); | |
| iovs_ptr += 4; | |
| const data = new Uint8Array(this.memory.buffer, data_ptr, data_len); | |
| nread += fs.readSync(data); | |
| } | |
| view.setUint32(nread_out, nread, true); | |
| return ERRNO_SUCCESS; | |
| }, | |
| fd_write: (fd, iovs_ptr, iovs_len, nwritten_out) => { | |
| console.log("fd_write", iovs_ptr, iovs_len, nwritten_out); | |
| const entry = this.fds[fd]; | |
| if (!entry) {} | |
| const view = new DataView(this.memory.buffer); | |
| let nwritten = 0; | |
| for (let i = 0; i < iovs_len; i++) { | |
| const data_ptr = view.getUint32(iovs_ptr, true); | |
| iovs_ptr += 4; | |
| const data_len = view.getUint32(iovs_ptr, true); | |
| iovs_ptr += 4; | |
| nwritten += fs.writeSync( | |
| new Uint8Array(this.memory.buffer, data_ptr, data_len), | |
| ); | |
| } | |
| view.setUint32(nwritten_out, nwritten, true); | |
| return ERRNO_SUCCESS; | |
| }, | |
| proc_exit: (rval) => { | |
| console.log("proc_exit", rval); | |
| }, | |
| fd_close: () => {}, | |
| fd_seek: () => {}, | |
| }; | |
| } | |
| } | |
| var wasi = new WASIP1_MIN(); | |
| WebAssembly.instantiate( | |
| WASM_BYTES, | |
| { | |
| wasi_snapshot_preview1: wasi.exports, | |
| }, | |
| ).then(({ instance }) => { | |
| console.log("instance.exports._start", instance.exports._start); | |
| wasi.memory = instance.exports.memory; | |
| instance.exports._start(); | |
| }).catch((e) => { | |
| console.log(e.stack); | |
| }); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment