ply_transforms_cpu2();
		} else {
			c.dataset.active = "true";
			c.focus();
			c.dataset.isPanning = "true";
			const [x,y] = cpu_xy_cpu2(e);
			c.dataset.startX = x;
			c.dataset.startY = y;
			c.style.cursor = "grabbing";
			//console.log(`grab ${c.dataset.startX} ${c.dataset.startY}`);
		}
	});

	for (const c of [cpu2])
	c.addEventListener("mousemove", function(e) {
		if (c.dataset.isPanning == "true") {
			e.preventDefault();
			const [x,y]= cpu_xy_cpu2(e);
			const dx = x - Number(c.dataset.startX);
