 ctx.moveTo(...points[3]);
    ctx.bezierCurveTo(...points[4], ...points[5], ...points[6]);
    ctx.stroke();
    ctx.lineWidth = 1;

    points.forEach((p, ndx) => {
      ctx.fillStyle = colors[ndx];
      drawDot(ctx, ...p, dotRadius, true);
      ctx.fillText('P' + (ndx + 1), p[0] - 15, p[1] - 7);
    });

    ctx.restore();
  }
  render();

  let moveNdx = -1;
  let moveLastPos;
  ctx.canvas.addEventListener('touchstart', e => {
    e.preventDefault();
    onStart(e.touches[0]);
  });
  ctx.canvas.addE