{"ScriptPreparationCode":"var canvasOne = document.getElementById(\u0022canvasOne\u0022);\r\nvar ctxOne = canvasOne.getContext(\u00222d\u0022);\r\n\r\nvar canvasTwo = document.getElementById(\u0022canvasTwo\u0022);\r\nvar ctxTwo = canvasTwo.getContext(\u00222d\u0022);","TestCases":[{"Name":"save/restore","Code":"ctxOne.fillStyle = \u0027rgba(255, 255, 255, 0.3)\u0027;\r\nctxOne.fillRect(0, 0, 400, 400);\r\n\r\nctxOne.save();\r\nctxOne.beginPath();\r\nctxOne.moveTo(Math.random() * 400, Math.random() * 400);\r\nctxOne.lineTo(Math.random() * 400, Math.random() * 400);\r\nctxOne.shadowBlur = 20;\r\nctxOne.shadowOffsetX = 10;\r\nctxOne.shadowOffsetY = 10;\r\nctxOne.shadowColor = \u0027#8E44AD\u0027;\r\nctxOne.strokeStyle = \u0027#8E44AD\u0027;\r\nctxOne.lineWidth = 1;\r\nctxOne.stroke();\r\nctxOne.restore();\r\n\r\nctxOne.beginPath();\r\nctxOne.fillStyle = \u0027#52BE80\u0027;\r\nctxOne.arc(Math.random * 400, Math.random * 400, 20, 0, Math.PI * 2, true);\r\nctxOne.fill();","IsDeferred":false},{"Name":"manual","Code":"ctxTwo.fillStyle = \u0027rgba(255, 255, 255, 0.3)\u0027;\r\nctxTwo.fillRect(0, 0, 400, 400);\r\n\r\nctxTwo.beginPath();\r\nctxTwo.moveTo(Math.random() * 400, Math.random() * 400);\r\nctxTwo.lineTo(Math.random() * 400, Math.random() * 400);\r\nctxTwo.shadowBlur = 20;\r\nctxTwo.shadowOffsetX = 10;\r\nctxTwo.shadowOffsetY = 10;\r\nctxTwo.shadowColor = \u0027#8E44AD\u0027;\r\nctxTwo.strokeStyle = \u0027#8E44AD\u0027;\r\nctxTwo.lineWidth = 1;\r\nctxTwo.stroke();\r\n\r\nctxTwo.shadowBlur = 0;\r\nctxTwo.shadowOffsetX = 0;\r\nctxTwo.shadowOffsetY = 0;\r\nctxTwo.shadowColor = \u0027rgba(0, 0, 0, 0)\u0027;\r\n\r\nctxTwo.beginPath();\r\nctxTwo.fillStyle = \u0027#52BE80\u0027;\r\nctxTwo.arc(Math.random() * 400, Math.random() * 400, 20, 0, Math.PI * 2, true);\r\nctxTwo.fill();","IsDeferred":false}]}