{"ScriptPreparationCode":"var obj = {\r\n \u0022log\u0022: {\r\n \u0022version\u0022: \u00221.2\u0022,\r\n \u0022creator\u0022: {\r\n \u0022name\u0022: \u0022WebInspector\u0022,\r\n \u0022version\u0022: \u0022537.36\u0022\r\n },\r\n \u0022pages\u0022: [\r\n {\r\n \u0022startedDateTime\u0022: \u00222015-02-10T07:33:17.146Z\u0022,\r\n \u0022id\u0022: \u0022page_1\u0022,\r\n \u0022title\u0022: \u0022http://mockbin.com/\u0022,\r\n \u0022pageTimings\u0022: {\r\n \u0022onContentLoad\u0022: 627.4099349975586,\r\n \u0022onLoad\u0022: 1266.5300369262695\r\n }\r\n }\r\n ],\r\n \u0022entries\u0022: [\r\n {\r\n \u0022startedDateTime\u0022: \u00222015-02-10T07:33:17.146Z\u0022,\r\n \u0022time\u0022: 181.59985542297363,\r\n \u0022request\u0022: {\r\n \u0022method\u0022: \u0022GET\u0022,\r\n \u0022url\u0022: \u0022http://mockbin.com/\u0022,\r\n \u0022httpVersion\u0022: \u0022HTTP/1.1\u0022,\r\n \u0022headers\u0022: [\r\n {\r\n \u0022name\u0022: \u0022DNT\u0022,\r\n \u0022value\u0022: \u00221\u0022\r\n },\r\n {\r\n \u0022name\u0022: \u0022Accept-Encoding\u0022,\r\n \u0022value\u0022: \u0022gzip, deflate, sdch\u0022\r\n },\r\n {\r\n \u0022name\u0022: \u0022Host\u0022,\r\n \u0022value\u0022: \u0022mockbin.com\u0022\r\n },\r\n {\r\n \u0022name\u0022: \u0022Connection\u0022,\r\n \u0022value\u0022: \u0022keep-alive\u0022\r\n }\r\n ],\r\n \u0022queryString\u0022: [],\r\n \u0022cookies\u0022: [\r\n {\r\n \u0022name\u0022: \u0022foo\u0022,\r\n \u0022expires\u0022: \u00222015-02-10T07:33:17.146Z\u0022,\r\n \u0022value\u0022: \u0022bar\u0022,\r\n \u0022httpOnly\u0022: false,\r\n \u0022secure\u0022: false\r\n }\r\n ],\r\n \u0022headersSize\u0022: 482,\r\n \u0022bodySize\u0022: 0\r\n },\r\n \u0022response\u0022: {\r\n \u0022status\u0022: 200,\r\n \u0022statusText\u0022: \u0022OK\u0022,\r\n \u0022httpVersion\u0022: \u0022HTTP/1.1\u0022,\r\n \u0022headers\u0022: [\r\n {\r\n \u0022name\u0022: \u0022X-Response-Time\u0022,\r\n \u0022value\u0022: \u00223.419ms\u0022\r\n },\r\n {\r\n \u0022name\u0022: \u0022Date\u0022,\r\n \u0022value\u0022: \u0022Tue, 10 Feb 2015 07:33:16 GMT\u0022\r\n },\r\n {\r\n \u0022name\u0022: \u0022Vary\u0022,\r\n \u0022value\u0022: \u0022Accept, Accept-Encoding\u0022\r\n },\r\n {\r\n \u0022name\u0022: \u0022X-Powered-By\u0022,\r\n \u0022value\u0022: \u0022mockbin.com\u0022\r\n },\r\n {\r\n \u0022name\u0022: \u0022Transfer-Encoding\u0022,\r\n \u0022value\u0022: \u0022chunked\u0022\r\n },\r\n {\r\n \u0022name\u0022: \u0022Content-Type\u0022,\r\n \u0022value\u0022: \u0022text/html; charset=utf-8\u0022\r\n },\r\n {\r\n \u0022name\u0022: \u0022Content-Encoding\u0022,\r\n \u0022value\u0022: \u0022gzip\u0022\r\n },\r\n {\r\n \u0022name\u0022: \u0022Connection\u0022,\r\n \u0022value\u0022: \u0022keep-alive\u0022\r\n }\r\n ],\r\n \u0022cookies\u0022: [],\r\n \u0022content\u0022: {\r\n \u0022size\u0022: 30,\r\n \u0022mimeType\u0022: \u0022text/html\u0022,\r\n \u0022compression\u0022: 0,\r\n \u0022text\u0022: \u0022ALL YOUR BASE ARE BELONG TO US\u0022\r\n },\r\n \u0022redirectURL\u0022: \u0022\u0022,\r\n \u0022headersSize\u0022: 430,\r\n \u0022bodySize\u0022: 30\r\n },\r\n \u0022cache\u0022: {},\r\n \u0022timings\u0022: {\r\n \u0022blocked\u0022: 0.381000001652865,\r\n \u0022dns\u0022: -1,\r\n \u0022connect\u0022: -1,\r\n \u0022send\u0022: 0.05899999996472599,\r\n \u0022wait\u0022: 179.1829999983744,\r\n \u0022receive\u0022: 1.9768554229816289,\r\n \u0022ssl\u0022: -1\r\n },\r\n \u0022connection\u0022: \u0022161767\u0022,\r\n \u0022pageref\u0022: \u0022page_1\u0022\r\n }\r\n ]\r\n }\r\n}\r\n\r\nfunction copyBuffer(val) {\r\n if (val instanceof Buffer) {\r\n return Buffer.from(val);\r\n }\r\n return new val.constructor(val.buffer.slice(), val.byteOffset, val.length);\r\n}\r\nfunction copyArray(inArr, fn) {\r\n const len = inArr.length;\r\n const outArr = new Array(len);\r\n for (let i = len; i--;) {\r\n outArr[i] = fn(inArr[i]);\r\n }\r\n return outArr;\r\n}\r\nfunction copy(inObj) {\r\n if (typeof inObj !== \u0027object\u0027 || inObj === null)\r\n return inObj;\r\n if (inObj instanceof Date)\r\n return new Date(inObj);\r\n if (Array.isArray(inObj))\r\n return copyArray(inObj, copy);\r\n if (inObj instanceof Map)\r\n return new Map(copyArray(Array.from(inObj), copy));\r\n if (inObj instanceof Set)\r\n return new Set(copyArray(Array.from(inObj), copy));\r\n if (ArrayBuffer.isView(inObj))\r\n return copyBuffer(inObj);\r\n let outObj = {};\r\n for (let k in inObj) {\r\n // FIXME: for now consider all properties (own \u002B the ones inherited from prototype)\r\n outObj[k] = copy(inObj[k]);\r\n }\r\n return outObj;\r\n}\r\n\r\nfunction cloneArray (a, fn) {\r\n var keys = Object.keys(a)\r\n var a2 = new Array(keys.length)\r\n for (var i = 0; i \u003C keys.length; i\u002B\u002B) {\r\n var k = keys[i]\r\n var cur = a[k]\r\n if (typeof cur !== \u0027object\u0027 || cur === null) {\r\n a2[k] = cur\r\n } else if (cur instanceof Date) {\r\n a2[k] = new Date(cur)\r\n } else if (ArrayBuffer.isView(cur)) {\r\n a2[k] = copyBuffer(cur)\r\n } else {\r\n a2[k] = fn(cur)\r\n }\r\n }\r\n return a2\r\n }\r\n\r\nfunction cloneProto (o) {\r\n if (typeof o !== \u0027object\u0027 || o === null) return o\r\n if (o instanceof Date) return new Date(o)\r\n if (Array.isArray(o)) return cloneArray(o, cloneProto)\r\n if (o instanceof Map) return new Map(cloneArray(Array.from(o), cloneProto))\r\n if (o instanceof Set) return new Set(cloneArray(Array.from(o), cloneProto))\r\n var o2 = {}\r\n for (var k in o) {\r\n var cur = o[k]\r\n if (typeof cur !== \u0027object\u0027 || cur === null) {\r\n o2[k] = cur\r\n } else if (cur instanceof Date) {\r\n o2[k] = new Date(cur)\r\n } else if (cur instanceof Map) {\r\n o2[k] = new Map(cloneArray(Array.from(cur), cloneProto))\r\n } else if (cur instanceof Set) {\r\n o2[k] = new Set(cloneArray(Array.from(cur), cloneProto))\r\n } else if (ArrayBuffer.isView(cur)) {\r\n o2[k] = copyBuffer(cur)\r\n } else {\r\n o2[k] = cloneProto(cur)\r\n }\r\n }\r\n return o2\r\n }\r\n","TestCases":[{"Name":"Test 1","Code":"for (var i = 0; i \u003C 1000; i\u002B\u002B) {\r\n copy(obj)\r\n }","IsDeferred":false},{"Name":"Test 2","Code":"for (var i = 0; i \u003C 1000; i\u002B\u002B) {\r\n cloneProto(obj)\r\n }","IsDeferred":false}]}