code: def __init__(self, device: str):
      super().__init__(
          RawWebGLAllocator(),
          LinearizerOptions(
              device="WEBGL",
              global_max=[4096 * 4096, 1, 1],
              unsupported_opts=[OptOps.UPCAST, OptOps.UPCASTMID],
              supports_float4=False,
              supports_float4_alu=False,
              has_local=False,
              has_shared=False,
              dont_use_locals=True,
          ),
          functools.partial(uops_to_cstyle, GLSLLanguage()),
          lambda x: x,
          WebGLProgram,
      )
  
file_path: tinygrad/extra/backends/ops_webgl.py
imports: import numpy
  import functools
  from tinygrad.dtype import dtypes, ImageDType
  from tinygrad.device import Compiled, Allocator
  from tinygrad.codegen.kernel import LinearizerOptions, OptOps
  from tinygrad.renderer.cstyle import uops_to_cstyle
  from tinygrad.renderer.cstyle import GLSLLanguage
  import moderngl
label_desc: Use image node_id 1 to create a new WebGlDevice object from inherited base classes: Compiled with example: obj = WebGlDevice(device)