{
  "id": "type-p19",
  "revision": "7f3b2c7c17abc322ee152cbb3b9e1847a9eb3ea99e7f17666ccda847614fc1fd",
  "regions": [
    {
      "id": "common-logic",
      "label": "Common logic",
      "parent": null
    },
    {
      "id": "desktop",
      "label": "Desktop",
      "parent": null
    },
    {
      "id": "web",
      "label": "Web",
      "parent": null
    },
    {
      "id": "target",
      "label": "Target",
      "parent": null
    }
  ],
  "nodes": [
    {
      "id": "feature",
      "label": "Canvas requirement",
      "kind": "N32",
      "region": "common-logic",
      "ports": [
        {
          "id": "renderer",
          "profile": "P19",
          "contract": "RendererCapabilityDescriptorV1",
          "polarity": "Require"
        },
        {
          "id": "requirements",
          "profile": "P01",
          "contract": "CanvasRequirementsV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "native",
      "label": "Native renderer offer",
      "kind": "N32",
      "region": "desktop",
      "ports": [
        {
          "id": "renderer",
          "profile": "P19",
          "contract": "RendererCapabilityDescriptorV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "browser",
      "label": "Browser renderer offer",
      "kind": "N32",
      "region": "web",
      "ports": [
        {
          "id": "renderer",
          "profile": "P19",
          "contract": "RendererCapabilityDescriptorV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "resolve",
      "label": "Renderer resolver",
      "kind": "N03",
      "region": "common-logic",
      "ports": [
        {
          "id": "renderer",
          "profile": "P19",
          "contract": "RendererCapabilityDescriptorV1",
          "polarity": "Neutral"
        },
        {
          "id": "binding",
          "profile": "P01",
          "contract": "SelectedRendererBindingV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "host",
      "label": "Feature host",
      "kind": "N27",
      "region": "target",
      "ports": [
        {
          "id": "binding",
          "profile": "P01",
          "contract": "SelectedRendererBindingV1",
          "polarity": "Require"
        },
        {
          "id": "requirements",
          "profile": "P01",
          "contract": "CanvasRequirementsV1",
          "polarity": "Require"
        }
      ]
    }
  ],
  "relations": [
    {
      "id": "resolve",
      "kind": "H24",
      "incidences": [
        {
          "node": "feature",
          "port": "renderer",
          "role": "requirement",
          "ordinal": 0
        },
        {
          "node": "native",
          "port": "renderer",
          "role": "offer",
          "ordinal": 0
        },
        {
          "node": "browser",
          "port": "renderer",
          "role": "offer",
          "ordinal": 1
        },
        {
          "node": "resolve",
          "port": "renderer",
          "role": "resolver",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "selected",
      "kind": "H02",
      "incidences": [
        {
          "node": "resolve",
          "port": "binding",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "host",
          "port": "binding",
          "role": "target",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "requirement",
      "kind": "H02",
      "incidences": [
        {
          "node": "feature",
          "port": "requirements",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "host",
          "port": "requirements",
          "role": "target",
          "ordinal": 0
        }
      ]
    }
  ]
}
