{"ScriptPreparationCode":"\r\nlet schema=[\r\n //[0,0,0,8,4,15]\r\n \u0022aaaiep\u0022,\r\n \u0022\u0022\r\n]\r\n\r\nlet P=(idx, view, buffer)=\u003E {\r\n let sc = schema[idx];\r\n let grandObject = [];\r\n let newObj = grandObject, decoder = new TextDecoder(), end_idx = sc.length, begin_idx = 0, repeats = 0, i = 0, offset = 0, rep_ct = 0;\r\n\r\n while (i \u003C end_idx) {\r\n let field = sc.charCodeAt(i) - 0x61;\r\n let top = field \u003E\u003E 2;\r\n let code = field \u0026 3;\r\n let candidate = 0;\r\n\r\n // don\u0027t read if its an end token...\r\n switch (code) {\r\n case 0:candidate=view.getInt8(offset,true);\u002B\u002Boffset;break;\r\n case 1:candidate=view.getInt16(offset,true);offset\u002B=2;break;\r\n case 2:candidate=view.getInt32(offset,true);offset\u002B=4;break;\r\n }\r\n\r\n if (top == 0) {\r\n newObj.push(candidate);\r\n } else if (top == 1) {\r\n newObj.push(decoder.decode(buffer.slice(offset, offset\u002Bcandidate)));\r\n offset \u002B= candidate;\r\n } else if (top == 2) {\r\n repeats = candidate;\r\n rep_ct = 0;\r\n newObj.push(new Array(candidate).fill(null).map(() =\u003E []));\r\n newObj = newObj.at(-1).at(0);\r\n begin_idx = i;\r\n } else {\r\n \u002B\u002Brep_ct;\r\n\r\n if (rep_ct \u003E= repeats) {\r\n rep_ct = 0;\r\n newObj = grandObject;\r\n } else {\r\n i = begin_idx;\r\n newObj = grandObject.at(-1)[rep_ct];\r\n }\r\n }\r\n\r\n \u002B\u002Bi;\r\n }\r\n\r\n return grandObject;//[grandObject, offset];\r\n}\r\n\r\n\r\nlet arrData = [21, 19, 10, 5, 3, 97, 97 \u002B 2, 97 \u002B 5, 3, 97, 97 \u002B 2, 97 \u002B 5, 3, 97, 97 \u002B 2, 97 \u002B 5, 3, 97, 97 \u002B 2, 97 \u002B 5, 3, 97, 97 \u002B 2, 97 \u002B 5];\r\n\r\n// Step 2: Create a Uint8Array from arrData\r\nlet uint8Arr = new Uint8Array(arrData);\r\n\r\n// Step 3: Get the underlying ArrayBuffer from the Uint8Array\r\nlet arrayBuf = uint8Arr.buffer;\r\n\r\n// Step 4: Create a DataView based on the ArrayBuffer\r\nlet dataView = new DataView(arrayBuf);\r\n\r\n// Example usage:\r\nconsole.log(uint8Arr); // Uint8Array(7) [21, 19, 10, 3, 97, 99, 102]\r\nconsole.log(arrayBuf); // ArrayBuffer with byteLength of 7\r\nconsole.log(dataView); // DataView { byteLength: 7, ... }\r\n\r\n","TestCases":[{"Name":"test1","Code":"\r\nP(0,dataView, arrayBuf)","IsDeferred":false},{"Name":"test2","Code":"const jsonStrings = [\r\n \u0027{\u0022name\u0022: \u0022Alice\u0022, \u0022age\u0022: 30, \u0022city\u0022: \u0022Wonderland\u0022}\u0027,\r\n \u0027{\u0022title\u0022: \u0022Book Title\u0022, \u0022author\u0022: \u0022Some Author\u0022, \u0022pages\u0022: 350}\u0027,\r\n \u0027{\u0022status\u0022: \u0022success\u0022, \u0022code\u0022: 50, \u0022data\u0022: [1, 2, 3]}\u0027,\r\n \u0027{\u0022coordinates\u0022: {\u0022x\u0022: 10, \u0022y\u0022: 0}, \u0022visible\u0022: true}\u0027,\r\n \u0027{\u0022items\u0022: [\u0022apple\u0022, \u0022banana\u0022, \u0022ear\u0022], \u0022count\u0022: 3}\u0027,\r\n \u0027{\u0022status\u0022: \u0022success\u0022, \u0022code\u0022: 220, \u0022data\u0022: [1, 2, 3]}\u0027,\r\n \u0027{\u0022coordinates\u0022: {\u0022x\u0022: 10, \u0022y\u0022: 10}, \u0022visible\u0022: true}\u0027,\r\n \u0027{\u0022items\u0022: [\u0022apple\u0022, \u0022banana\u0022, \u0022pear\u0022], \u0022count\u0022: 3}\u0027,\r\n \u0027{\u0022status\u0022: \u0022success\u0022, \u0022code\u0022: 3, \u0022data\u0022: [1, 2, 3]}\u0027,\r\n \u0027{\u0022coordinates\u0022: {\u0022x\u0022: 10, \u0022y\u0022: 20}, \u0022visible\u0022: true}\u0027,\r\n \u0027{\u0022items\u0022: [\u0022apple\u0022, \u0022banana\u0022, \u0022pear\u0022], \u0022count\u0022: 3}\u0027,\r\n \u0027{\u0022status\u0022: \u0022success\u0022, \u0022code\u0022: 11, \u0022data\u0022: [1, 2, 3]}\u0027,\r\n \u0027{\u0022coordinates\u0022: {\u0022x\u0022: 10, \u0022y\u0022: 20}, \u0022visible\u0022: true}\u0027,\r\n \u0027{\u0022items\u0022: [\u0022apple\u0022, \u0022banana\u0022, \u0022pear\u0022], \u0022count\u0022: 3}\u0027,\r\n \u0027{\u0022status\u0022: \u0022success\u0022, \u0022code\u0022: 4, \u0022data\u0022: [1, 2, 3]}\u0027,\r\n \u0027{\u0022coordinates\u0022: {\u0022x\u0022: 10, \u0022y\u0022: 20}, \u0022visible\u0022: true}\u0027,\r\n \u0027{\u0022items\u0022: [\u0022apple\u0022, \u0022banana\u0022, \u0022pear\u0022], \u0022count\u0022: 3}\u0027,\r\n \u0027{\u0022status\u0022: \u0022success\u0022, \u0022code\u0022: 4, \u0022data\u0022: [1, 2, 3]}\u0027,\r\n \u0027{\u0022coordinates\u0022: {\u0022x\u0022: 10, \u0022y\u0022: 5}, \u0022visible\u0022: true}\u0027,\r\n \u0027{\u0022items\u0022: [\u0022apple\u0022, \u0022banana\u0022, \u0022pear\u0022], \u0022count\u0022: 3}\u0027,\r\n \u0027{\u0022users\u0022: [{\u0022id\u0022: 1}, {\u0022id\u0022: 2}], \u0022hasMore\u0022: false}\u0027\r\n];\r\n\r\n// A function to pick a random JSON string from the array\r\nfunction getRandomJsonString() {\r\n // Generate a random index based on the length of the array\r\n const randomIndex = Math.floor(Math.random() * jsonStrings.length);\r\n // Return the JSON string at that index\r\n return jsonStrings[randomIndex];\r\n}\r\n\r\n\r\nJSON.parse(getRandomJsonString());\r\n","IsDeferred":false},{"Name":"inlined","Code":"let newObj=[],bytes = 0, decoder = new TextDecoder();\r\nlet ofs=0;dataView.getInt8(ofs,true);ofs\u002B=1;\r\ndataView.getInt8(ofs,true);ofs\u002B=1;\r\ndataView.getInt8(ofs,true);ofs\u002B=1;\r\nlet strlen=dataView.getInt8(ofs,true);ofs\u002B=1; \r\nnewObj.push(uint8Arr.subarray(ofs, ofs\u002Bstrlen));","IsDeferred":false}]}