jssm 5.142.1 → 5.142.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -428,11 +428,11 @@ function peg$parse(input, options) {
428
428
  return { config_kind: "action", config_items: action_items || [] };
429
429
  }, peg$c1359 = function (key, value) { return { key, value }; }, peg$c1360 = peg$otherExpectation("graph default edge color"), peg$c1361 = function (value) { return { key: 'graph_default_edge_color', value }; }, peg$c1362 = "transition", peg$c1363 = peg$literalExpectation("transition", false), peg$c1364 = function (transition_items) {
430
430
  return { config_kind: "transition", config_items: transition_items || [] };
431
- }, peg$c1365 = "graph_layout", peg$c1366 = peg$literalExpectation("graph_layout", false), peg$c1367 = function (value) { return { key: "graph_layout", value: value }; }, peg$c1368 = "start_states", peg$c1369 = peg$literalExpectation("start_states", false), peg$c1370 = function (value) { return { key: "start_states", value: value }; }, peg$c1371 = "end_states", peg$c1372 = peg$literalExpectation("end_states", false), peg$c1373 = function (value) { return { key: "end_states", value: value }; }, peg$c1374 = "graph_bg_color", peg$c1375 = peg$literalExpectation("graph_bg_color", false), peg$c1376 = function (value) { return { key: "graph_bg_color", value: value }; }, peg$c1377 = "allows_override", peg$c1378 = peg$literalExpectation("allows_override", false), peg$c1379 = function (value) { return { key: "allows_override", value: value }; }, peg$c1380 = function () { return true; }, peg$c1381 = function () { return false; }, peg$c1382 = peg$otherExpectation("configuration"), peg$c1383 = "MIT", peg$c1384 = peg$literalExpectation("MIT", false), peg$c1385 = "BSD 2-clause", peg$c1386 = peg$literalExpectation("BSD 2-clause", false), peg$c1387 = "BSD 3-clause", peg$c1388 = peg$literalExpectation("BSD 3-clause", false), peg$c1389 = "Apache 2.0", peg$c1390 = peg$literalExpectation("Apache 2.0", false), peg$c1391 = "Mozilla 2.0", peg$c1392 = peg$literalExpectation("Mozilla 2.0", false), peg$c1393 = "Public domain", peg$c1394 = peg$literalExpectation("Public domain", false), peg$c1395 = "GPL v2", peg$c1396 = peg$literalExpectation("GPL v2", false), peg$c1397 = "GPL v3", peg$c1398 = peg$literalExpectation("GPL v3", false), peg$c1399 = "LGPL v2.1", peg$c1400 = peg$literalExpectation("LGPL v2.1", false), peg$c1401 = "LGPL v3.0", peg$c1402 = peg$literalExpectation("LGPL v3.0", false), peg$c1403 = "Unknown", peg$c1404 = peg$literalExpectation("Unknown", false), peg$c1405 = peg$otherExpectation("direction"), peg$c1406 = "up", peg$c1407 = peg$literalExpectation("up", false), peg$c1408 = "right", peg$c1409 = peg$literalExpectation("right", false), peg$c1410 = "down", peg$c1411 = peg$literalExpectation("down", false), peg$c1412 = "left", peg$c1413 = peg$literalExpectation("left", false), peg$c1414 = peg$otherExpectation("hook definition (open/closed)"), peg$c1415 = "open", peg$c1416 = peg$literalExpectation("open", false), peg$c1417 = "closed", peg$c1418 = peg$literalExpectation("closed", false), peg$c1419 = "machine_author", peg$c1420 = peg$literalExpectation("machine_author", false), peg$c1421 = function (value) { return { key: "machine_author", value }; }, peg$c1422 = "machine_contributor", peg$c1423 = peg$literalExpectation("machine_contributor", false), peg$c1424 = function (value) { return { key: "machine_contributor", value }; }, peg$c1425 = "machine_comment", peg$c1426 = peg$literalExpectation("machine_comment", false), peg$c1427 = function (value) { return { key: "machine_comment", value }; }, peg$c1428 = "machine_definition", peg$c1429 = peg$literalExpectation("machine_definition", false), peg$c1430 = function (value) { return { key: "machine_definition", value }; }, peg$c1431 = "machine_name", peg$c1432 = peg$literalExpectation("machine_name", false), peg$c1433 = function (value) { return { key: "machine_name", value }; }, peg$c1434 = "npm_name", peg$c1435 = peg$literalExpectation("npm_name", false), peg$c1436 = function (value) { return { key: "npm_name", value }; }, peg$c1437 = "machine_reference", peg$c1438 = peg$literalExpectation("machine_reference", false), peg$c1439 = function (value) { return { key: "machine_reference", value }; }, peg$c1440 = "machine_version", peg$c1441 = peg$literalExpectation("machine_version", false), peg$c1442 = function (value) { return { key: "machine_version", value }; }, peg$c1443 = "machine_license", peg$c1444 = peg$literalExpectation("machine_license", false), peg$c1445 = function (value) { return { key: "machine_license", value }; }, peg$c1446 = "machine_language", peg$c1447 = peg$literalExpectation("machine_language", false), peg$c1448 = function (value) { return { key: "machine_language", value }; }, peg$c1449 = "fsl_version", peg$c1450 = peg$literalExpectation("fsl_version", false), peg$c1451 = function (value) { return { key: "fsl_version", value }; }, peg$c1452 = "theme", peg$c1453 = peg$literalExpectation("theme", false), peg$c1454 = function (value) { return { key: "theme", value }; }, peg$c1455 = "flow", peg$c1456 = peg$literalExpectation("flow", false), peg$c1457 = function (value) { return { key: "flow", value }; }, peg$c1458 = "hooks", peg$c1459 = peg$literalExpectation("hooks", false), peg$c1460 = function (value) { return { key: "hook_definition", value }; }, peg$c1461 = "dot_preamble", peg$c1462 = peg$literalExpectation("dot_preamble", false), peg$c1463 = function (value) { return { key: "dot_preamble", value }; }, peg$c1464 = peg$otherExpectation("machine attribute"), peg$c1465 = "label", peg$c1466 = peg$literalExpectation("label", false), peg$c1467 = function (value) { return { key: 'state-label', value }; }, peg$c1468 = "color", peg$c1469 = peg$literalExpectation("color", false), peg$c1470 = function (value) { return { key: 'color', value }; }, peg$c1471 = peg$otherExpectation("text color"), peg$c1472 = "text-color", peg$c1473 = peg$literalExpectation("text-color", false), peg$c1474 = function (value) { return { key: 'text-color', value }; }, peg$c1475 = peg$otherExpectation("background color"), peg$c1476 = "background-color", peg$c1477 = peg$literalExpectation("background-color", false), peg$c1478 = function (value) { return { key: 'background-color', value }; }, peg$c1479 = peg$otherExpectation("border color"), peg$c1480 = "border-color", peg$c1481 = peg$literalExpectation("border-color", false), peg$c1482 = function (value) { return { key: 'border-color', value }; }, peg$c1483 = peg$otherExpectation("shape"), peg$c1484 = "shape", peg$c1485 = peg$literalExpectation("shape", false), peg$c1486 = function (value) { return { key: 'shape', value }; }, peg$c1487 = peg$otherExpectation("corners"), peg$c1488 = "corners", peg$c1489 = peg$literalExpectation("corners", false), peg$c1490 = function (value) { return { key: 'corners', value }; }, peg$c1491 = peg$otherExpectation("linestyle"), peg$c1492 = function (value) { return { key: 'line-style', value }; }, peg$c1493 = "linestyle", peg$c1494 = peg$literalExpectation("linestyle", false), peg$c1495 = peg$otherExpectation("image"), peg$c1496 = "image", peg$c1497 = peg$literalExpectation("image", false), peg$c1498 = function (value) { return { key: 'image', value }; }, peg$c1499 = peg$otherExpectation("url"), peg$c1500 = "url", peg$c1501 = peg$literalExpectation("url", false), peg$c1502 = function (value) { return { key: 'url', value }; }, peg$c1503 = peg$otherExpectation("state property"), peg$c1504 = "property", peg$c1505 = peg$literalExpectation("property", false), peg$c1506 = function (name, value) {
431
+ }, peg$c1365 = "graph_layout", peg$c1366 = peg$literalExpectation("graph_layout", false), peg$c1367 = function (value) { return { key: "graph_layout", value: value }; }, peg$c1368 = "start_states", peg$c1369 = peg$literalExpectation("start_states", false), peg$c1370 = function (value) { return { key: "start_states", value: value }; }, peg$c1371 = "end_states", peg$c1372 = peg$literalExpectation("end_states", false), peg$c1373 = function (value) { return { key: "end_states", value: value }; }, peg$c1374 = "failed_outputs", peg$c1375 = peg$literalExpectation("failed_outputs", false), peg$c1376 = function (value) { return { key: "failed_outputs", value: typeof value === 'string' ? [value] : value }; }, peg$c1377 = "graph_bg_color", peg$c1378 = peg$literalExpectation("graph_bg_color", false), peg$c1379 = function (value) { return { key: "graph_bg_color", value: value }; }, peg$c1380 = "allows_override", peg$c1381 = peg$literalExpectation("allows_override", false), peg$c1382 = function (value) { return { key: "allows_override", value: value }; }, peg$c1383 = "allow_islands", peg$c1384 = peg$literalExpectation("allow_islands", false), peg$c1385 = function (value) { return { key: "allow_islands", value: value }; }, peg$c1386 = function () { return true; }, peg$c1387 = function () { return false; }, peg$c1388 = "with_start", peg$c1389 = peg$literalExpectation("with_start", false), peg$c1390 = function () { return 'with_start'; }, peg$c1391 = function () { return true; }, peg$c1392 = function () { return false; }, peg$c1393 = peg$otherExpectation("configuration"), peg$c1394 = "MIT", peg$c1395 = peg$literalExpectation("MIT", false), peg$c1396 = "BSD 2-clause", peg$c1397 = peg$literalExpectation("BSD 2-clause", false), peg$c1398 = "BSD 3-clause", peg$c1399 = peg$literalExpectation("BSD 3-clause", false), peg$c1400 = "Apache 2.0", peg$c1401 = peg$literalExpectation("Apache 2.0", false), peg$c1402 = "Mozilla 2.0", peg$c1403 = peg$literalExpectation("Mozilla 2.0", false), peg$c1404 = "Public domain", peg$c1405 = peg$literalExpectation("Public domain", false), peg$c1406 = "GPL v2", peg$c1407 = peg$literalExpectation("GPL v2", false), peg$c1408 = "GPL v3", peg$c1409 = peg$literalExpectation("GPL v3", false), peg$c1410 = "LGPL v2.1", peg$c1411 = peg$literalExpectation("LGPL v2.1", false), peg$c1412 = "LGPL v3.0", peg$c1413 = peg$literalExpectation("LGPL v3.0", false), peg$c1414 = "Unknown", peg$c1415 = peg$literalExpectation("Unknown", false), peg$c1416 = peg$otherExpectation("direction"), peg$c1417 = "up", peg$c1418 = peg$literalExpectation("up", false), peg$c1419 = "right", peg$c1420 = peg$literalExpectation("right", false), peg$c1421 = "down", peg$c1422 = peg$literalExpectation("down", false), peg$c1423 = "left", peg$c1424 = peg$literalExpectation("left", false), peg$c1425 = peg$otherExpectation("hook definition (open/closed)"), peg$c1426 = "open", peg$c1427 = peg$literalExpectation("open", false), peg$c1428 = "closed", peg$c1429 = peg$literalExpectation("closed", false), peg$c1430 = "machine_author", peg$c1431 = peg$literalExpectation("machine_author", false), peg$c1432 = function (value) { return { key: "machine_author", value }; }, peg$c1433 = "machine_contributor", peg$c1434 = peg$literalExpectation("machine_contributor", false), peg$c1435 = function (value) { return { key: "machine_contributor", value }; }, peg$c1436 = "machine_comment", peg$c1437 = peg$literalExpectation("machine_comment", false), peg$c1438 = function (value) { return { key: "machine_comment", value }; }, peg$c1439 = "machine_definition", peg$c1440 = peg$literalExpectation("machine_definition", false), peg$c1441 = function (value) { return { key: "machine_definition", value }; }, peg$c1442 = "machine_name", peg$c1443 = peg$literalExpectation("machine_name", false), peg$c1444 = function (value) { return { key: "machine_name", value }; }, peg$c1445 = "npm_name", peg$c1446 = peg$literalExpectation("npm_name", false), peg$c1447 = function (value) { return { key: "npm_name", value }; }, peg$c1448 = "machine_reference", peg$c1449 = peg$literalExpectation("machine_reference", false), peg$c1450 = function (value) { return { key: "machine_reference", value }; }, peg$c1451 = "machine_version", peg$c1452 = peg$literalExpectation("machine_version", false), peg$c1453 = function (value) { return { key: "machine_version", value }; }, peg$c1454 = "machine_license", peg$c1455 = peg$literalExpectation("machine_license", false), peg$c1456 = function (value) { return { key: "machine_license", value }; }, peg$c1457 = "machine_language", peg$c1458 = peg$literalExpectation("machine_language", false), peg$c1459 = function (value) { return { key: "machine_language", value }; }, peg$c1460 = "fsl_version", peg$c1461 = peg$literalExpectation("fsl_version", false), peg$c1462 = function (value) { return { key: "fsl_version", value }; }, peg$c1463 = "theme", peg$c1464 = peg$literalExpectation("theme", false), peg$c1465 = function (value) { return { key: "theme", value }; }, peg$c1466 = "flow", peg$c1467 = peg$literalExpectation("flow", false), peg$c1468 = function (value) { return { key: "flow", value }; }, peg$c1469 = "hooks", peg$c1470 = peg$literalExpectation("hooks", false), peg$c1471 = function (value) { return { key: "hook_definition", value }; }, peg$c1472 = "dot_preamble", peg$c1473 = peg$literalExpectation("dot_preamble", false), peg$c1474 = function (value) { return { key: "dot_preamble", value }; }, peg$c1475 = peg$otherExpectation("machine attribute"), peg$c1476 = "label", peg$c1477 = peg$literalExpectation("label", false), peg$c1478 = function (value) { return { key: 'state-label', value }; }, peg$c1479 = "color", peg$c1480 = peg$literalExpectation("color", false), peg$c1481 = function (value) { return { key: 'color', value }; }, peg$c1482 = peg$otherExpectation("text color"), peg$c1483 = "text-color", peg$c1484 = peg$literalExpectation("text-color", false), peg$c1485 = function (value) { return { key: 'text-color', value }; }, peg$c1486 = peg$otherExpectation("background color"), peg$c1487 = "background-color", peg$c1488 = peg$literalExpectation("background-color", false), peg$c1489 = function (value) { return { key: 'background-color', value }; }, peg$c1490 = peg$otherExpectation("border color"), peg$c1491 = "border-color", peg$c1492 = peg$literalExpectation("border-color", false), peg$c1493 = function (value) { return { key: 'border-color', value }; }, peg$c1494 = peg$otherExpectation("shape"), peg$c1495 = "shape", peg$c1496 = peg$literalExpectation("shape", false), peg$c1497 = function (value) { return { key: 'shape', value }; }, peg$c1498 = peg$otherExpectation("corners"), peg$c1499 = "corners", peg$c1500 = peg$literalExpectation("corners", false), peg$c1501 = function (value) { return { key: 'corners', value }; }, peg$c1502 = peg$otherExpectation("linestyle"), peg$c1503 = function (value) { return { key: 'line-style', value }; }, peg$c1504 = "linestyle", peg$c1505 = peg$literalExpectation("linestyle", false), peg$c1506 = peg$otherExpectation("image"), peg$c1507 = "image", peg$c1508 = peg$literalExpectation("image", false), peg$c1509 = function (value) { return { key: 'image', value }; }, peg$c1510 = peg$otherExpectation("url"), peg$c1511 = "url", peg$c1512 = peg$literalExpectation("url", false), peg$c1513 = function (value) { return { key: 'url', value }; }, peg$c1514 = peg$otherExpectation("state property"), peg$c1515 = "property", peg$c1516 = peg$literalExpectation("property", false), peg$c1517 = function (name, value) {
432
432
  return { key: 'state_property', name, value };
433
- }, peg$c1507 = "required", peg$c1508 = peg$literalExpectation("required", false), peg$c1509 = function (name, value) {
433
+ }, peg$c1518 = "required", peg$c1519 = peg$literalExpectation("required", false), peg$c1520 = function (name, value) {
434
434
  return { key: 'state_property', name, value, required: true };
435
- }, peg$c1510 = function (name, value) { return { key: 'state_declaration', name, value }; }, peg$c1511 = "&", peg$c1512 = peg$literalExpectation("&", false), peg$c1513 = function (name, value) { return { key: 'named_list', name, value }; }, peg$c1514 = function (name, default_value) { return { key: 'property_definition', name, default_value, required: true }; }, peg$c1515 = function (name) { return { key: 'property_definition', name, required: true }; }, peg$c1516 = function (name, default_value) { return { key: 'property_definition', name, default_value }; }, peg$c1517 = function (name) { return { key: 'property_definition', name }; }, peg$c1518 = "arrange", peg$c1519 = peg$literalExpectation("arrange", false), peg$c1520 = function (value) { return { key: 'arrange_declaration', value }; }, peg$c1521 = "arrange-start", peg$c1522 = peg$literalExpectation("arrange-start", false), peg$c1523 = function (value) { return { key: 'arrange_start_declaration', value }; }, peg$c1524 = "arrange-end", peg$c1525 = peg$literalExpectation("arrange-end", false), peg$c1526 = function (value) { return { key: 'arrange_end_declaration', value }; }, peg$c1527 = peg$otherExpectation("arrange declaration"), peg$currPos = 0, peg$savedPos = 0, peg$posDetailsCache = [{ line: 1, column: 1 }], peg$maxFailPos = 0, peg$maxFailExpected = [], peg$silentFails = 0, peg$result;
435
+ }, peg$c1521 = function (name, value) { return { key: 'state_declaration', name, value }; }, peg$c1522 = "&", peg$c1523 = peg$literalExpectation("&", false), peg$c1524 = function (name, value) { return { key: 'named_list', name, value }; }, peg$c1525 = function (name, default_value) { return { key: 'property_definition', name, default_value, required: true }; }, peg$c1526 = function (name) { return { key: 'property_definition', name, required: true }; }, peg$c1527 = function (name, default_value) { return { key: 'property_definition', name, default_value }; }, peg$c1528 = function (name) { return { key: 'property_definition', name }; }, peg$c1529 = "arrange", peg$c1530 = peg$literalExpectation("arrange", false), peg$c1531 = function (value) { return { key: 'arrange_declaration', value }; }, peg$c1532 = "arrange-start", peg$c1533 = peg$literalExpectation("arrange-start", false), peg$c1534 = function (value) { return { key: 'arrange_start_declaration', value }; }, peg$c1535 = "arrange-end", peg$c1536 = peg$literalExpectation("arrange-end", false), peg$c1537 = function (value) { return { key: 'arrange_end_declaration', value }; }, peg$c1538 = peg$otherExpectation("arrange declaration"), peg$currPos = 0, peg$savedPos = 0, peg$posDetailsCache = [{ line: 1, column: 1 }], peg$maxFailPos = 0, peg$maxFailExpected = [], peg$silentFails = 0, peg$result;
436
436
  if ("startRule" in options) {
437
437
  if (!(options.startRule in peg$startRuleFunctions)) {
438
438
  throw new Error("Can't start parsing from rule \"" + options.startRule + "\".");
@@ -14621,7 +14621,7 @@ function peg$parse(input, options) {
14621
14621
  }
14622
14622
  return s0;
14623
14623
  }
14624
- function peg$parseConfigGraphBgColor() {
14624
+ function peg$parseConfigFailedOutputs() {
14625
14625
  var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;
14626
14626
  s0 = peg$currPos;
14627
14627
  s1 = peg$parseWS();
@@ -14661,7 +14661,7 @@ function peg$parse(input, options) {
14661
14661
  s5 = null;
14662
14662
  }
14663
14663
  if (s5 !== peg$FAILED) {
14664
- s6 = peg$parseColor();
14664
+ s6 = peg$parseLabelOrLabelList();
14665
14665
  if (s6 !== peg$FAILED) {
14666
14666
  s7 = peg$parseWS();
14667
14667
  if (s7 === peg$FAILED) {
@@ -14734,7 +14734,7 @@ function peg$parse(input, options) {
14734
14734
  }
14735
14735
  return s0;
14736
14736
  }
14737
- function peg$parseConfigAllowsOverride() {
14737
+ function peg$parseConfigGraphBgColor() {
14738
14738
  var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;
14739
14739
  s0 = peg$currPos;
14740
14740
  s1 = peg$parseWS();
@@ -14742,9 +14742,9 @@ function peg$parse(input, options) {
14742
14742
  s1 = null;
14743
14743
  }
14744
14744
  if (s1 !== peg$FAILED) {
14745
- if (input.substr(peg$currPos, 15) === peg$c1377) {
14745
+ if (input.substr(peg$currPos, 14) === peg$c1377) {
14746
14746
  s2 = peg$c1377;
14747
- peg$currPos += 15;
14747
+ peg$currPos += 14;
14748
14748
  }
14749
14749
  else {
14750
14750
  s2 = peg$FAILED;
@@ -14774,7 +14774,7 @@ function peg$parse(input, options) {
14774
14774
  s5 = null;
14775
14775
  }
14776
14776
  if (s5 !== peg$FAILED) {
14777
- s6 = peg$parseOverrideT();
14777
+ s6 = peg$parseColor();
14778
14778
  if (s6 !== peg$FAILED) {
14779
14779
  s7 = peg$parseWS();
14780
14780
  if (s7 === peg$FAILED) {
@@ -14847,6 +14847,232 @@ function peg$parse(input, options) {
14847
14847
  }
14848
14848
  return s0;
14849
14849
  }
14850
+ function peg$parseConfigAllowsOverride() {
14851
+ var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;
14852
+ s0 = peg$currPos;
14853
+ s1 = peg$parseWS();
14854
+ if (s1 === peg$FAILED) {
14855
+ s1 = null;
14856
+ }
14857
+ if (s1 !== peg$FAILED) {
14858
+ if (input.substr(peg$currPos, 15) === peg$c1380) {
14859
+ s2 = peg$c1380;
14860
+ peg$currPos += 15;
14861
+ }
14862
+ else {
14863
+ s2 = peg$FAILED;
14864
+ if (peg$silentFails === 0) {
14865
+ peg$fail(peg$c1381);
14866
+ }
14867
+ }
14868
+ if (s2 !== peg$FAILED) {
14869
+ s3 = peg$parseWS();
14870
+ if (s3 === peg$FAILED) {
14871
+ s3 = null;
14872
+ }
14873
+ if (s3 !== peg$FAILED) {
14874
+ if (input.charCodeAt(peg$currPos) === 58) {
14875
+ s4 = peg$c1206;
14876
+ peg$currPos++;
14877
+ }
14878
+ else {
14879
+ s4 = peg$FAILED;
14880
+ if (peg$silentFails === 0) {
14881
+ peg$fail(peg$c1207);
14882
+ }
14883
+ }
14884
+ if (s4 !== peg$FAILED) {
14885
+ s5 = peg$parseWS();
14886
+ if (s5 === peg$FAILED) {
14887
+ s5 = null;
14888
+ }
14889
+ if (s5 !== peg$FAILED) {
14890
+ s6 = peg$parseOverrideT();
14891
+ if (s6 !== peg$FAILED) {
14892
+ s7 = peg$parseWS();
14893
+ if (s7 === peg$FAILED) {
14894
+ s7 = null;
14895
+ }
14896
+ if (s7 !== peg$FAILED) {
14897
+ if (input.charCodeAt(peg$currPos) === 59) {
14898
+ s8 = peg$c1208;
14899
+ peg$currPos++;
14900
+ }
14901
+ else {
14902
+ s8 = peg$FAILED;
14903
+ if (peg$silentFails === 0) {
14904
+ peg$fail(peg$c1209);
14905
+ }
14906
+ }
14907
+ if (s8 !== peg$FAILED) {
14908
+ s9 = peg$parseWS();
14909
+ if (s9 === peg$FAILED) {
14910
+ s9 = null;
14911
+ }
14912
+ if (s9 !== peg$FAILED) {
14913
+ peg$savedPos = s0;
14914
+ s1 = peg$c1382(s6);
14915
+ s0 = s1;
14916
+ }
14917
+ else {
14918
+ peg$currPos = s0;
14919
+ s0 = peg$FAILED;
14920
+ }
14921
+ }
14922
+ else {
14923
+ peg$currPos = s0;
14924
+ s0 = peg$FAILED;
14925
+ }
14926
+ }
14927
+ else {
14928
+ peg$currPos = s0;
14929
+ s0 = peg$FAILED;
14930
+ }
14931
+ }
14932
+ else {
14933
+ peg$currPos = s0;
14934
+ s0 = peg$FAILED;
14935
+ }
14936
+ }
14937
+ else {
14938
+ peg$currPos = s0;
14939
+ s0 = peg$FAILED;
14940
+ }
14941
+ }
14942
+ else {
14943
+ peg$currPos = s0;
14944
+ s0 = peg$FAILED;
14945
+ }
14946
+ }
14947
+ else {
14948
+ peg$currPos = s0;
14949
+ s0 = peg$FAILED;
14950
+ }
14951
+ }
14952
+ else {
14953
+ peg$currPos = s0;
14954
+ s0 = peg$FAILED;
14955
+ }
14956
+ }
14957
+ else {
14958
+ peg$currPos = s0;
14959
+ s0 = peg$FAILED;
14960
+ }
14961
+ return s0;
14962
+ }
14963
+ function peg$parseConfigAllowIslands() {
14964
+ var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;
14965
+ s0 = peg$currPos;
14966
+ s1 = peg$parseWS();
14967
+ if (s1 === peg$FAILED) {
14968
+ s1 = null;
14969
+ }
14970
+ if (s1 !== peg$FAILED) {
14971
+ if (input.substr(peg$currPos, 13) === peg$c1383) {
14972
+ s2 = peg$c1383;
14973
+ peg$currPos += 13;
14974
+ }
14975
+ else {
14976
+ s2 = peg$FAILED;
14977
+ if (peg$silentFails === 0) {
14978
+ peg$fail(peg$c1384);
14979
+ }
14980
+ }
14981
+ if (s2 !== peg$FAILED) {
14982
+ s3 = peg$parseWS();
14983
+ if (s3 === peg$FAILED) {
14984
+ s3 = null;
14985
+ }
14986
+ if (s3 !== peg$FAILED) {
14987
+ if (input.charCodeAt(peg$currPos) === 58) {
14988
+ s4 = peg$c1206;
14989
+ peg$currPos++;
14990
+ }
14991
+ else {
14992
+ s4 = peg$FAILED;
14993
+ if (peg$silentFails === 0) {
14994
+ peg$fail(peg$c1207);
14995
+ }
14996
+ }
14997
+ if (s4 !== peg$FAILED) {
14998
+ s5 = peg$parseWS();
14999
+ if (s5 === peg$FAILED) {
15000
+ s5 = null;
15001
+ }
15002
+ if (s5 !== peg$FAILED) {
15003
+ s6 = peg$parseIslandsT();
15004
+ if (s6 !== peg$FAILED) {
15005
+ s7 = peg$parseWS();
15006
+ if (s7 === peg$FAILED) {
15007
+ s7 = null;
15008
+ }
15009
+ if (s7 !== peg$FAILED) {
15010
+ if (input.charCodeAt(peg$currPos) === 59) {
15011
+ s8 = peg$c1208;
15012
+ peg$currPos++;
15013
+ }
15014
+ else {
15015
+ s8 = peg$FAILED;
15016
+ if (peg$silentFails === 0) {
15017
+ peg$fail(peg$c1209);
15018
+ }
15019
+ }
15020
+ if (s8 !== peg$FAILED) {
15021
+ s9 = peg$parseWS();
15022
+ if (s9 === peg$FAILED) {
15023
+ s9 = null;
15024
+ }
15025
+ if (s9 !== peg$FAILED) {
15026
+ peg$savedPos = s0;
15027
+ s1 = peg$c1385(s6);
15028
+ s0 = s1;
15029
+ }
15030
+ else {
15031
+ peg$currPos = s0;
15032
+ s0 = peg$FAILED;
15033
+ }
15034
+ }
15035
+ else {
15036
+ peg$currPos = s0;
15037
+ s0 = peg$FAILED;
15038
+ }
15039
+ }
15040
+ else {
15041
+ peg$currPos = s0;
15042
+ s0 = peg$FAILED;
15043
+ }
15044
+ }
15045
+ else {
15046
+ peg$currPos = s0;
15047
+ s0 = peg$FAILED;
15048
+ }
15049
+ }
15050
+ else {
15051
+ peg$currPos = s0;
15052
+ s0 = peg$FAILED;
15053
+ }
15054
+ }
15055
+ else {
15056
+ peg$currPos = s0;
15057
+ s0 = peg$FAILED;
15058
+ }
15059
+ }
15060
+ else {
15061
+ peg$currPos = s0;
15062
+ s0 = peg$FAILED;
15063
+ }
15064
+ }
15065
+ else {
15066
+ peg$currPos = s0;
15067
+ s0 = peg$FAILED;
15068
+ }
15069
+ }
15070
+ else {
15071
+ peg$currPos = s0;
15072
+ s0 = peg$FAILED;
15073
+ }
15074
+ return s0;
15075
+ }
14850
15076
  function peg$parseOverrideT() {
14851
15077
  var s0, s1;
14852
15078
  s0 = peg$currPos;
@@ -14862,7 +15088,7 @@ function peg$parse(input, options) {
14862
15088
  }
14863
15089
  if (s1 !== peg$FAILED) {
14864
15090
  peg$savedPos = s0;
14865
- s1 = peg$c1380();
15091
+ s1 = peg$c1386();
14866
15092
  }
14867
15093
  s0 = s1;
14868
15094
  if (s0 === peg$FAILED) {
@@ -14879,7 +15105,7 @@ function peg$parse(input, options) {
14879
15105
  }
14880
15106
  if (s1 !== peg$FAILED) {
14881
15107
  peg$savedPos = s0;
14882
- s1 = peg$c1381();
15108
+ s1 = peg$c1387();
14883
15109
  }
14884
15110
  s0 = s1;
14885
15111
  if (s0 === peg$FAILED) {
@@ -14903,6 +15129,62 @@ function peg$parse(input, options) {
14903
15129
  }
14904
15130
  return s0;
14905
15131
  }
15132
+ function peg$parseIslandsT() {
15133
+ var s0, s1;
15134
+ s0 = peg$currPos;
15135
+ if (input.substr(peg$currPos, 10) === peg$c1388) {
15136
+ s1 = peg$c1388;
15137
+ peg$currPos += 10;
15138
+ }
15139
+ else {
15140
+ s1 = peg$FAILED;
15141
+ if (peg$silentFails === 0) {
15142
+ peg$fail(peg$c1389);
15143
+ }
15144
+ }
15145
+ if (s1 !== peg$FAILED) {
15146
+ peg$savedPos = s0;
15147
+ s1 = peg$c1390();
15148
+ }
15149
+ s0 = s1;
15150
+ if (s0 === peg$FAILED) {
15151
+ s0 = peg$currPos;
15152
+ if (input.substr(peg$currPos, 4) === peg$c230) {
15153
+ s1 = peg$c230;
15154
+ peg$currPos += 4;
15155
+ }
15156
+ else {
15157
+ s1 = peg$FAILED;
15158
+ if (peg$silentFails === 0) {
15159
+ peg$fail(peg$c231);
15160
+ }
15161
+ }
15162
+ if (s1 !== peg$FAILED) {
15163
+ peg$savedPos = s0;
15164
+ s1 = peg$c1391();
15165
+ }
15166
+ s0 = s1;
15167
+ if (s0 === peg$FAILED) {
15168
+ s0 = peg$currPos;
15169
+ if (input.substr(peg$currPos, 5) === peg$c233) {
15170
+ s1 = peg$c233;
15171
+ peg$currPos += 5;
15172
+ }
15173
+ else {
15174
+ s1 = peg$FAILED;
15175
+ if (peg$silentFails === 0) {
15176
+ peg$fail(peg$c234);
15177
+ }
15178
+ }
15179
+ if (s1 !== peg$FAILED) {
15180
+ peg$savedPos = s0;
15181
+ s1 = peg$c1392();
15182
+ }
15183
+ s0 = s1;
15184
+ }
15185
+ }
15186
+ return s0;
15187
+ }
14906
15188
  function peg$parseConfig() {
14907
15189
  var s0;
14908
15190
  peg$silentFails++;
@@ -14912,17 +15194,23 @@ function peg$parse(input, options) {
14912
15194
  if (s0 === peg$FAILED) {
14913
15195
  s0 = peg$parseConfigEndNodes();
14914
15196
  if (s0 === peg$FAILED) {
14915
- s0 = peg$parseConfigTransition();
15197
+ s0 = peg$parseConfigFailedOutputs();
14916
15198
  if (s0 === peg$FAILED) {
14917
- s0 = peg$parseConfigAction();
15199
+ s0 = peg$parseConfigTransition();
14918
15200
  if (s0 === peg$FAILED) {
14919
- s0 = peg$parseConfigAnyState();
15201
+ s0 = peg$parseConfigAction();
14920
15202
  if (s0 === peg$FAILED) {
14921
- s0 = peg$parseConfigValidation();
15203
+ s0 = peg$parseConfigAnyState();
14922
15204
  if (s0 === peg$FAILED) {
14923
- s0 = peg$parseConfigGraphBgColor();
15205
+ s0 = peg$parseConfigValidation();
14924
15206
  if (s0 === peg$FAILED) {
14925
- s0 = peg$parseConfigAllowsOverride();
15207
+ s0 = peg$parseConfigGraphBgColor();
15208
+ if (s0 === peg$FAILED) {
15209
+ s0 = peg$parseConfigAllowsOverride();
15210
+ if (s0 === peg$FAILED) {
15211
+ s0 = peg$parseConfigAllowIslands();
15212
+ }
15213
+ }
14926
15214
  }
14927
15215
  }
14928
15216
  }
@@ -14934,131 +15222,131 @@ function peg$parse(input, options) {
14934
15222
  peg$silentFails--;
14935
15223
  if (s0 === peg$FAILED) {
14936
15224
  if (peg$silentFails === 0) {
14937
- peg$fail(peg$c1382);
15225
+ peg$fail(peg$c1393);
14938
15226
  }
14939
15227
  }
14940
15228
  return s0;
14941
15229
  }
14942
15230
  function peg$parseLicenseOrLabelOrList() {
14943
15231
  var s0;
14944
- if (input.substr(peg$currPos, 3) === peg$c1383) {
14945
- s0 = peg$c1383;
15232
+ if (input.substr(peg$currPos, 3) === peg$c1394) {
15233
+ s0 = peg$c1394;
14946
15234
  peg$currPos += 3;
14947
15235
  }
14948
15236
  else {
14949
15237
  s0 = peg$FAILED;
14950
15238
  if (peg$silentFails === 0) {
14951
- peg$fail(peg$c1384);
15239
+ peg$fail(peg$c1395);
14952
15240
  }
14953
15241
  }
14954
15242
  if (s0 === peg$FAILED) {
14955
- if (input.substr(peg$currPos, 12) === peg$c1385) {
14956
- s0 = peg$c1385;
15243
+ if (input.substr(peg$currPos, 12) === peg$c1396) {
15244
+ s0 = peg$c1396;
14957
15245
  peg$currPos += 12;
14958
15246
  }
14959
15247
  else {
14960
15248
  s0 = peg$FAILED;
14961
15249
  if (peg$silentFails === 0) {
14962
- peg$fail(peg$c1386);
15250
+ peg$fail(peg$c1397);
14963
15251
  }
14964
15252
  }
14965
15253
  if (s0 === peg$FAILED) {
14966
- if (input.substr(peg$currPos, 12) === peg$c1387) {
14967
- s0 = peg$c1387;
15254
+ if (input.substr(peg$currPos, 12) === peg$c1398) {
15255
+ s0 = peg$c1398;
14968
15256
  peg$currPos += 12;
14969
15257
  }
14970
15258
  else {
14971
15259
  s0 = peg$FAILED;
14972
15260
  if (peg$silentFails === 0) {
14973
- peg$fail(peg$c1388);
15261
+ peg$fail(peg$c1399);
14974
15262
  }
14975
15263
  }
14976
15264
  if (s0 === peg$FAILED) {
14977
- if (input.substr(peg$currPos, 10) === peg$c1389) {
14978
- s0 = peg$c1389;
15265
+ if (input.substr(peg$currPos, 10) === peg$c1400) {
15266
+ s0 = peg$c1400;
14979
15267
  peg$currPos += 10;
14980
15268
  }
14981
15269
  else {
14982
15270
  s0 = peg$FAILED;
14983
15271
  if (peg$silentFails === 0) {
14984
- peg$fail(peg$c1390);
15272
+ peg$fail(peg$c1401);
14985
15273
  }
14986
15274
  }
14987
15275
  if (s0 === peg$FAILED) {
14988
- if (input.substr(peg$currPos, 11) === peg$c1391) {
14989
- s0 = peg$c1391;
15276
+ if (input.substr(peg$currPos, 11) === peg$c1402) {
15277
+ s0 = peg$c1402;
14990
15278
  peg$currPos += 11;
14991
15279
  }
14992
15280
  else {
14993
15281
  s0 = peg$FAILED;
14994
15282
  if (peg$silentFails === 0) {
14995
- peg$fail(peg$c1392);
15283
+ peg$fail(peg$c1403);
14996
15284
  }
14997
15285
  }
14998
15286
  if (s0 === peg$FAILED) {
14999
- if (input.substr(peg$currPos, 13) === peg$c1393) {
15000
- s0 = peg$c1393;
15287
+ if (input.substr(peg$currPos, 13) === peg$c1404) {
15288
+ s0 = peg$c1404;
15001
15289
  peg$currPos += 13;
15002
15290
  }
15003
15291
  else {
15004
15292
  s0 = peg$FAILED;
15005
15293
  if (peg$silentFails === 0) {
15006
- peg$fail(peg$c1394);
15294
+ peg$fail(peg$c1405);
15007
15295
  }
15008
15296
  }
15009
15297
  if (s0 === peg$FAILED) {
15010
- if (input.substr(peg$currPos, 6) === peg$c1395) {
15011
- s0 = peg$c1395;
15298
+ if (input.substr(peg$currPos, 6) === peg$c1406) {
15299
+ s0 = peg$c1406;
15012
15300
  peg$currPos += 6;
15013
15301
  }
15014
15302
  else {
15015
15303
  s0 = peg$FAILED;
15016
15304
  if (peg$silentFails === 0) {
15017
- peg$fail(peg$c1396);
15305
+ peg$fail(peg$c1407);
15018
15306
  }
15019
15307
  }
15020
15308
  if (s0 === peg$FAILED) {
15021
- if (input.substr(peg$currPos, 6) === peg$c1397) {
15022
- s0 = peg$c1397;
15309
+ if (input.substr(peg$currPos, 6) === peg$c1408) {
15310
+ s0 = peg$c1408;
15023
15311
  peg$currPos += 6;
15024
15312
  }
15025
15313
  else {
15026
15314
  s0 = peg$FAILED;
15027
15315
  if (peg$silentFails === 0) {
15028
- peg$fail(peg$c1398);
15316
+ peg$fail(peg$c1409);
15029
15317
  }
15030
15318
  }
15031
15319
  if (s0 === peg$FAILED) {
15032
- if (input.substr(peg$currPos, 9) === peg$c1399) {
15033
- s0 = peg$c1399;
15320
+ if (input.substr(peg$currPos, 9) === peg$c1410) {
15321
+ s0 = peg$c1410;
15034
15322
  peg$currPos += 9;
15035
15323
  }
15036
15324
  else {
15037
15325
  s0 = peg$FAILED;
15038
15326
  if (peg$silentFails === 0) {
15039
- peg$fail(peg$c1400);
15327
+ peg$fail(peg$c1411);
15040
15328
  }
15041
15329
  }
15042
15330
  if (s0 === peg$FAILED) {
15043
- if (input.substr(peg$currPos, 9) === peg$c1401) {
15044
- s0 = peg$c1401;
15331
+ if (input.substr(peg$currPos, 9) === peg$c1412) {
15332
+ s0 = peg$c1412;
15045
15333
  peg$currPos += 9;
15046
15334
  }
15047
15335
  else {
15048
15336
  s0 = peg$FAILED;
15049
15337
  if (peg$silentFails === 0) {
15050
- peg$fail(peg$c1402);
15338
+ peg$fail(peg$c1413);
15051
15339
  }
15052
15340
  }
15053
15341
  if (s0 === peg$FAILED) {
15054
- if (input.substr(peg$currPos, 7) === peg$c1403) {
15055
- s0 = peg$c1403;
15342
+ if (input.substr(peg$currPos, 7) === peg$c1414) {
15343
+ s0 = peg$c1414;
15056
15344
  peg$currPos += 7;
15057
15345
  }
15058
15346
  else {
15059
15347
  s0 = peg$FAILED;
15060
15348
  if (peg$silentFails === 0) {
15061
- peg$fail(peg$c1404);
15349
+ peg$fail(peg$c1415);
15062
15350
  }
15063
15351
  }
15064
15352
  if (s0 === peg$FAILED) {
@@ -15082,47 +15370,47 @@ function peg$parse(input, options) {
15082
15370
  function peg$parseDirection() {
15083
15371
  var s0;
15084
15372
  peg$silentFails++;
15085
- if (input.substr(peg$currPos, 2) === peg$c1406) {
15086
- s0 = peg$c1406;
15373
+ if (input.substr(peg$currPos, 2) === peg$c1417) {
15374
+ s0 = peg$c1417;
15087
15375
  peg$currPos += 2;
15088
15376
  }
15089
15377
  else {
15090
15378
  s0 = peg$FAILED;
15091
15379
  if (peg$silentFails === 0) {
15092
- peg$fail(peg$c1407);
15380
+ peg$fail(peg$c1418);
15093
15381
  }
15094
15382
  }
15095
15383
  if (s0 === peg$FAILED) {
15096
- if (input.substr(peg$currPos, 5) === peg$c1408) {
15097
- s0 = peg$c1408;
15384
+ if (input.substr(peg$currPos, 5) === peg$c1419) {
15385
+ s0 = peg$c1419;
15098
15386
  peg$currPos += 5;
15099
15387
  }
15100
15388
  else {
15101
15389
  s0 = peg$FAILED;
15102
15390
  if (peg$silentFails === 0) {
15103
- peg$fail(peg$c1409);
15391
+ peg$fail(peg$c1420);
15104
15392
  }
15105
15393
  }
15106
15394
  if (s0 === peg$FAILED) {
15107
- if (input.substr(peg$currPos, 4) === peg$c1410) {
15108
- s0 = peg$c1410;
15395
+ if (input.substr(peg$currPos, 4) === peg$c1421) {
15396
+ s0 = peg$c1421;
15109
15397
  peg$currPos += 4;
15110
15398
  }
15111
15399
  else {
15112
15400
  s0 = peg$FAILED;
15113
15401
  if (peg$silentFails === 0) {
15114
- peg$fail(peg$c1411);
15402
+ peg$fail(peg$c1422);
15115
15403
  }
15116
15404
  }
15117
15405
  if (s0 === peg$FAILED) {
15118
- if (input.substr(peg$currPos, 4) === peg$c1412) {
15119
- s0 = peg$c1412;
15406
+ if (input.substr(peg$currPos, 4) === peg$c1423) {
15407
+ s0 = peg$c1423;
15120
15408
  peg$currPos += 4;
15121
15409
  }
15122
15410
  else {
15123
15411
  s0 = peg$FAILED;
15124
15412
  if (peg$silentFails === 0) {
15125
- peg$fail(peg$c1413);
15413
+ peg$fail(peg$c1424);
15126
15414
  }
15127
15415
  }
15128
15416
  }
@@ -15131,7 +15419,7 @@ function peg$parse(input, options) {
15131
15419
  peg$silentFails--;
15132
15420
  if (s0 === peg$FAILED) {
15133
15421
  if (peg$silentFails === 0) {
15134
- peg$fail(peg$c1405);
15422
+ peg$fail(peg$c1416);
15135
15423
  }
15136
15424
  }
15137
15425
  return s0;
@@ -15139,32 +15427,32 @@ function peg$parse(input, options) {
15139
15427
  function peg$parseHookDefinition() {
15140
15428
  var s0;
15141
15429
  peg$silentFails++;
15142
- if (input.substr(peg$currPos, 4) === peg$c1415) {
15143
- s0 = peg$c1415;
15430
+ if (input.substr(peg$currPos, 4) === peg$c1426) {
15431
+ s0 = peg$c1426;
15144
15432
  peg$currPos += 4;
15145
15433
  }
15146
15434
  else {
15147
15435
  s0 = peg$FAILED;
15148
15436
  if (peg$silentFails === 0) {
15149
- peg$fail(peg$c1416);
15437
+ peg$fail(peg$c1427);
15150
15438
  }
15151
15439
  }
15152
15440
  if (s0 === peg$FAILED) {
15153
- if (input.substr(peg$currPos, 6) === peg$c1417) {
15154
- s0 = peg$c1417;
15441
+ if (input.substr(peg$currPos, 6) === peg$c1428) {
15442
+ s0 = peg$c1428;
15155
15443
  peg$currPos += 6;
15156
15444
  }
15157
15445
  else {
15158
15446
  s0 = peg$FAILED;
15159
15447
  if (peg$silentFails === 0) {
15160
- peg$fail(peg$c1418);
15448
+ peg$fail(peg$c1429);
15161
15449
  }
15162
15450
  }
15163
15451
  }
15164
15452
  peg$silentFails--;
15165
15453
  if (s0 === peg$FAILED) {
15166
15454
  if (peg$silentFails === 0) {
15167
- peg$fail(peg$c1414);
15455
+ peg$fail(peg$c1425);
15168
15456
  }
15169
15457
  }
15170
15458
  return s0;
@@ -15177,14 +15465,14 @@ function peg$parse(input, options) {
15177
15465
  s1 = null;
15178
15466
  }
15179
15467
  if (s1 !== peg$FAILED) {
15180
- if (input.substr(peg$currPos, 14) === peg$c1419) {
15181
- s2 = peg$c1419;
15468
+ if (input.substr(peg$currPos, 14) === peg$c1430) {
15469
+ s2 = peg$c1430;
15182
15470
  peg$currPos += 14;
15183
15471
  }
15184
15472
  else {
15185
15473
  s2 = peg$FAILED;
15186
15474
  if (peg$silentFails === 0) {
15187
- peg$fail(peg$c1420);
15475
+ peg$fail(peg$c1431);
15188
15476
  }
15189
15477
  }
15190
15478
  if (s2 !== peg$FAILED) {
@@ -15233,7 +15521,7 @@ function peg$parse(input, options) {
15233
15521
  }
15234
15522
  if (s9 !== peg$FAILED) {
15235
15523
  peg$savedPos = s0;
15236
- s1 = peg$c1421(s6);
15524
+ s1 = peg$c1432(s6);
15237
15525
  s0 = s1;
15238
15526
  }
15239
15527
  else {
@@ -15290,14 +15578,14 @@ function peg$parse(input, options) {
15290
15578
  s1 = null;
15291
15579
  }
15292
15580
  if (s1 !== peg$FAILED) {
15293
- if (input.substr(peg$currPos, 19) === peg$c1422) {
15294
- s2 = peg$c1422;
15581
+ if (input.substr(peg$currPos, 19) === peg$c1433) {
15582
+ s2 = peg$c1433;
15295
15583
  peg$currPos += 19;
15296
15584
  }
15297
15585
  else {
15298
15586
  s2 = peg$FAILED;
15299
15587
  if (peg$silentFails === 0) {
15300
- peg$fail(peg$c1423);
15588
+ peg$fail(peg$c1434);
15301
15589
  }
15302
15590
  }
15303
15591
  if (s2 !== peg$FAILED) {
@@ -15346,7 +15634,7 @@ function peg$parse(input, options) {
15346
15634
  }
15347
15635
  if (s9 !== peg$FAILED) {
15348
15636
  peg$savedPos = s0;
15349
- s1 = peg$c1424(s6);
15637
+ s1 = peg$c1435(s6);
15350
15638
  s0 = s1;
15351
15639
  }
15352
15640
  else {
@@ -15403,14 +15691,14 @@ function peg$parse(input, options) {
15403
15691
  s1 = null;
15404
15692
  }
15405
15693
  if (s1 !== peg$FAILED) {
15406
- if (input.substr(peg$currPos, 15) === peg$c1425) {
15407
- s2 = peg$c1425;
15694
+ if (input.substr(peg$currPos, 15) === peg$c1436) {
15695
+ s2 = peg$c1436;
15408
15696
  peg$currPos += 15;
15409
15697
  }
15410
15698
  else {
15411
15699
  s2 = peg$FAILED;
15412
15700
  if (peg$silentFails === 0) {
15413
- peg$fail(peg$c1426);
15701
+ peg$fail(peg$c1437);
15414
15702
  }
15415
15703
  }
15416
15704
  if (s2 !== peg$FAILED) {
@@ -15459,7 +15747,7 @@ function peg$parse(input, options) {
15459
15747
  }
15460
15748
  if (s9 !== peg$FAILED) {
15461
15749
  peg$savedPos = s0;
15462
- s1 = peg$c1427(s6);
15750
+ s1 = peg$c1438(s6);
15463
15751
  s0 = s1;
15464
15752
  }
15465
15753
  else {
@@ -15516,14 +15804,14 @@ function peg$parse(input, options) {
15516
15804
  s1 = null;
15517
15805
  }
15518
15806
  if (s1 !== peg$FAILED) {
15519
- if (input.substr(peg$currPos, 18) === peg$c1428) {
15520
- s2 = peg$c1428;
15807
+ if (input.substr(peg$currPos, 18) === peg$c1439) {
15808
+ s2 = peg$c1439;
15521
15809
  peg$currPos += 18;
15522
15810
  }
15523
15811
  else {
15524
15812
  s2 = peg$FAILED;
15525
15813
  if (peg$silentFails === 0) {
15526
- peg$fail(peg$c1429);
15814
+ peg$fail(peg$c1440);
15527
15815
  }
15528
15816
  }
15529
15817
  if (s2 !== peg$FAILED) {
@@ -15572,7 +15860,7 @@ function peg$parse(input, options) {
15572
15860
  }
15573
15861
  if (s9 !== peg$FAILED) {
15574
15862
  peg$savedPos = s0;
15575
- s1 = peg$c1430(s6);
15863
+ s1 = peg$c1441(s6);
15576
15864
  s0 = s1;
15577
15865
  }
15578
15866
  else {
@@ -15629,14 +15917,14 @@ function peg$parse(input, options) {
15629
15917
  s1 = null;
15630
15918
  }
15631
15919
  if (s1 !== peg$FAILED) {
15632
- if (input.substr(peg$currPos, 12) === peg$c1431) {
15633
- s2 = peg$c1431;
15920
+ if (input.substr(peg$currPos, 12) === peg$c1442) {
15921
+ s2 = peg$c1442;
15634
15922
  peg$currPos += 12;
15635
15923
  }
15636
15924
  else {
15637
15925
  s2 = peg$FAILED;
15638
15926
  if (peg$silentFails === 0) {
15639
- peg$fail(peg$c1432);
15927
+ peg$fail(peg$c1443);
15640
15928
  }
15641
15929
  }
15642
15930
  if (s2 !== peg$FAILED) {
@@ -15685,7 +15973,7 @@ function peg$parse(input, options) {
15685
15973
  }
15686
15974
  if (s9 !== peg$FAILED) {
15687
15975
  peg$savedPos = s0;
15688
- s1 = peg$c1433(s6);
15976
+ s1 = peg$c1444(s6);
15689
15977
  s0 = s1;
15690
15978
  }
15691
15979
  else {
@@ -15742,14 +16030,14 @@ function peg$parse(input, options) {
15742
16030
  s1 = null;
15743
16031
  }
15744
16032
  if (s1 !== peg$FAILED) {
15745
- if (input.substr(peg$currPos, 8) === peg$c1434) {
15746
- s2 = peg$c1434;
16033
+ if (input.substr(peg$currPos, 8) === peg$c1445) {
16034
+ s2 = peg$c1445;
15747
16035
  peg$currPos += 8;
15748
16036
  }
15749
16037
  else {
15750
16038
  s2 = peg$FAILED;
15751
16039
  if (peg$silentFails === 0) {
15752
- peg$fail(peg$c1435);
16040
+ peg$fail(peg$c1446);
15753
16041
  }
15754
16042
  }
15755
16043
  if (s2 !== peg$FAILED) {
@@ -15798,7 +16086,7 @@ function peg$parse(input, options) {
15798
16086
  }
15799
16087
  if (s9 !== peg$FAILED) {
15800
16088
  peg$savedPos = s0;
15801
- s1 = peg$c1436(s6);
16089
+ s1 = peg$c1447(s6);
15802
16090
  s0 = s1;
15803
16091
  }
15804
16092
  else {
@@ -15855,14 +16143,14 @@ function peg$parse(input, options) {
15855
16143
  s1 = null;
15856
16144
  }
15857
16145
  if (s1 !== peg$FAILED) {
15858
- if (input.substr(peg$currPos, 17) === peg$c1437) {
15859
- s2 = peg$c1437;
16146
+ if (input.substr(peg$currPos, 17) === peg$c1448) {
16147
+ s2 = peg$c1448;
15860
16148
  peg$currPos += 17;
15861
16149
  }
15862
16150
  else {
15863
16151
  s2 = peg$FAILED;
15864
16152
  if (peg$silentFails === 0) {
15865
- peg$fail(peg$c1438);
16153
+ peg$fail(peg$c1449);
15866
16154
  }
15867
16155
  }
15868
16156
  if (s2 !== peg$FAILED) {
@@ -15911,7 +16199,7 @@ function peg$parse(input, options) {
15911
16199
  }
15912
16200
  if (s9 !== peg$FAILED) {
15913
16201
  peg$savedPos = s0;
15914
- s1 = peg$c1439(s6);
16202
+ s1 = peg$c1450(s6);
15915
16203
  s0 = s1;
15916
16204
  }
15917
16205
  else {
@@ -15968,14 +16256,14 @@ function peg$parse(input, options) {
15968
16256
  s1 = null;
15969
16257
  }
15970
16258
  if (s1 !== peg$FAILED) {
15971
- if (input.substr(peg$currPos, 15) === peg$c1440) {
15972
- s2 = peg$c1440;
16259
+ if (input.substr(peg$currPos, 15) === peg$c1451) {
16260
+ s2 = peg$c1451;
15973
16261
  peg$currPos += 15;
15974
16262
  }
15975
16263
  else {
15976
16264
  s2 = peg$FAILED;
15977
16265
  if (peg$silentFails === 0) {
15978
- peg$fail(peg$c1441);
16266
+ peg$fail(peg$c1452);
15979
16267
  }
15980
16268
  }
15981
16269
  if (s2 !== peg$FAILED) {
@@ -16024,7 +16312,7 @@ function peg$parse(input, options) {
16024
16312
  }
16025
16313
  if (s9 !== peg$FAILED) {
16026
16314
  peg$savedPos = s0;
16027
- s1 = peg$c1442(s6);
16315
+ s1 = peg$c1453(s6);
16028
16316
  s0 = s1;
16029
16317
  }
16030
16318
  else {
@@ -16081,14 +16369,14 @@ function peg$parse(input, options) {
16081
16369
  s1 = null;
16082
16370
  }
16083
16371
  if (s1 !== peg$FAILED) {
16084
- if (input.substr(peg$currPos, 15) === peg$c1443) {
16085
- s2 = peg$c1443;
16372
+ if (input.substr(peg$currPos, 15) === peg$c1454) {
16373
+ s2 = peg$c1454;
16086
16374
  peg$currPos += 15;
16087
16375
  }
16088
16376
  else {
16089
16377
  s2 = peg$FAILED;
16090
16378
  if (peg$silentFails === 0) {
16091
- peg$fail(peg$c1444);
16379
+ peg$fail(peg$c1455);
16092
16380
  }
16093
16381
  }
16094
16382
  if (s2 !== peg$FAILED) {
@@ -16137,7 +16425,7 @@ function peg$parse(input, options) {
16137
16425
  }
16138
16426
  if (s9 !== peg$FAILED) {
16139
16427
  peg$savedPos = s0;
16140
- s1 = peg$c1445(s6);
16428
+ s1 = peg$c1456(s6);
16141
16429
  s0 = s1;
16142
16430
  }
16143
16431
  else {
@@ -16194,14 +16482,14 @@ function peg$parse(input, options) {
16194
16482
  s1 = null;
16195
16483
  }
16196
16484
  if (s1 !== peg$FAILED) {
16197
- if (input.substr(peg$currPos, 16) === peg$c1446) {
16198
- s2 = peg$c1446;
16485
+ if (input.substr(peg$currPos, 16) === peg$c1457) {
16486
+ s2 = peg$c1457;
16199
16487
  peg$currPos += 16;
16200
16488
  }
16201
16489
  else {
16202
16490
  s2 = peg$FAILED;
16203
16491
  if (peg$silentFails === 0) {
16204
- peg$fail(peg$c1447);
16492
+ peg$fail(peg$c1458);
16205
16493
  }
16206
16494
  }
16207
16495
  if (s2 !== peg$FAILED) {
@@ -16250,7 +16538,7 @@ function peg$parse(input, options) {
16250
16538
  }
16251
16539
  if (s9 !== peg$FAILED) {
16252
16540
  peg$savedPos = s0;
16253
- s1 = peg$c1448(s6);
16541
+ s1 = peg$c1459(s6);
16254
16542
  s0 = s1;
16255
16543
  }
16256
16544
  else {
@@ -16307,14 +16595,14 @@ function peg$parse(input, options) {
16307
16595
  s1 = null;
16308
16596
  }
16309
16597
  if (s1 !== peg$FAILED) {
16310
- if (input.substr(peg$currPos, 11) === peg$c1449) {
16311
- s2 = peg$c1449;
16598
+ if (input.substr(peg$currPos, 11) === peg$c1460) {
16599
+ s2 = peg$c1460;
16312
16600
  peg$currPos += 11;
16313
16601
  }
16314
16602
  else {
16315
16603
  s2 = peg$FAILED;
16316
16604
  if (peg$silentFails === 0) {
16317
- peg$fail(peg$c1450);
16605
+ peg$fail(peg$c1461);
16318
16606
  }
16319
16607
  }
16320
16608
  if (s2 !== peg$FAILED) {
@@ -16363,7 +16651,7 @@ function peg$parse(input, options) {
16363
16651
  }
16364
16652
  if (s9 !== peg$FAILED) {
16365
16653
  peg$savedPos = s0;
16366
- s1 = peg$c1451(s6);
16654
+ s1 = peg$c1462(s6);
16367
16655
  s0 = s1;
16368
16656
  }
16369
16657
  else {
@@ -16420,14 +16708,14 @@ function peg$parse(input, options) {
16420
16708
  s1 = null;
16421
16709
  }
16422
16710
  if (s1 !== peg$FAILED) {
16423
- if (input.substr(peg$currPos, 5) === peg$c1452) {
16424
- s2 = peg$c1452;
16711
+ if (input.substr(peg$currPos, 5) === peg$c1463) {
16712
+ s2 = peg$c1463;
16425
16713
  peg$currPos += 5;
16426
16714
  }
16427
16715
  else {
16428
16716
  s2 = peg$FAILED;
16429
16717
  if (peg$silentFails === 0) {
16430
- peg$fail(peg$c1453);
16718
+ peg$fail(peg$c1464);
16431
16719
  }
16432
16720
  }
16433
16721
  if (s2 !== peg$FAILED) {
@@ -16476,7 +16764,7 @@ function peg$parse(input, options) {
16476
16764
  }
16477
16765
  if (s9 !== peg$FAILED) {
16478
16766
  peg$savedPos = s0;
16479
- s1 = peg$c1454(s6);
16767
+ s1 = peg$c1465(s6);
16480
16768
  s0 = s1;
16481
16769
  }
16482
16770
  else {
@@ -16533,14 +16821,14 @@ function peg$parse(input, options) {
16533
16821
  s1 = null;
16534
16822
  }
16535
16823
  if (s1 !== peg$FAILED) {
16536
- if (input.substr(peg$currPos, 4) === peg$c1455) {
16537
- s2 = peg$c1455;
16824
+ if (input.substr(peg$currPos, 4) === peg$c1466) {
16825
+ s2 = peg$c1466;
16538
16826
  peg$currPos += 4;
16539
16827
  }
16540
16828
  else {
16541
16829
  s2 = peg$FAILED;
16542
16830
  if (peg$silentFails === 0) {
16543
- peg$fail(peg$c1456);
16831
+ peg$fail(peg$c1467);
16544
16832
  }
16545
16833
  }
16546
16834
  if (s2 !== peg$FAILED) {
@@ -16589,7 +16877,7 @@ function peg$parse(input, options) {
16589
16877
  }
16590
16878
  if (s9 !== peg$FAILED) {
16591
16879
  peg$savedPos = s0;
16592
- s1 = peg$c1457(s6);
16880
+ s1 = peg$c1468(s6);
16593
16881
  s0 = s1;
16594
16882
  }
16595
16883
  else {
@@ -16646,14 +16934,14 @@ function peg$parse(input, options) {
16646
16934
  s1 = null;
16647
16935
  }
16648
16936
  if (s1 !== peg$FAILED) {
16649
- if (input.substr(peg$currPos, 5) === peg$c1458) {
16650
- s2 = peg$c1458;
16937
+ if (input.substr(peg$currPos, 5) === peg$c1469) {
16938
+ s2 = peg$c1469;
16651
16939
  peg$currPos += 5;
16652
16940
  }
16653
16941
  else {
16654
16942
  s2 = peg$FAILED;
16655
16943
  if (peg$silentFails === 0) {
16656
- peg$fail(peg$c1459);
16944
+ peg$fail(peg$c1470);
16657
16945
  }
16658
16946
  }
16659
16947
  if (s2 !== peg$FAILED) {
@@ -16702,7 +16990,7 @@ function peg$parse(input, options) {
16702
16990
  }
16703
16991
  if (s9 !== peg$FAILED) {
16704
16992
  peg$savedPos = s0;
16705
- s1 = peg$c1460(s6);
16993
+ s1 = peg$c1471(s6);
16706
16994
  s0 = s1;
16707
16995
  }
16708
16996
  else {
@@ -16759,14 +17047,14 @@ function peg$parse(input, options) {
16759
17047
  s1 = null;
16760
17048
  }
16761
17049
  if (s1 !== peg$FAILED) {
16762
- if (input.substr(peg$currPos, 12) === peg$c1461) {
16763
- s2 = peg$c1461;
17050
+ if (input.substr(peg$currPos, 12) === peg$c1472) {
17051
+ s2 = peg$c1472;
16764
17052
  peg$currPos += 12;
16765
17053
  }
16766
17054
  else {
16767
17055
  s2 = peg$FAILED;
16768
17056
  if (peg$silentFails === 0) {
16769
- peg$fail(peg$c1462);
17057
+ peg$fail(peg$c1473);
16770
17058
  }
16771
17059
  }
16772
17060
  if (s2 !== peg$FAILED) {
@@ -16815,7 +17103,7 @@ function peg$parse(input, options) {
16815
17103
  }
16816
17104
  if (s9 !== peg$FAILED) {
16817
17105
  peg$savedPos = s0;
16818
- s1 = peg$c1463(s6);
17106
+ s1 = peg$c1474(s6);
16819
17107
  s0 = s1;
16820
17108
  }
16821
17109
  else {
@@ -16913,7 +17201,7 @@ function peg$parse(input, options) {
16913
17201
  peg$silentFails--;
16914
17202
  if (s0 === peg$FAILED) {
16915
17203
  if (peg$silentFails === 0) {
16916
- peg$fail(peg$c1464);
17204
+ peg$fail(peg$c1475);
16917
17205
  }
16918
17206
  }
16919
17207
  return s0;
@@ -16944,14 +17232,14 @@ function peg$parse(input, options) {
16944
17232
  s1 = null;
16945
17233
  }
16946
17234
  if (s1 !== peg$FAILED) {
16947
- if (input.substr(peg$currPos, 5) === peg$c1465) {
16948
- s2 = peg$c1465;
17235
+ if (input.substr(peg$currPos, 5) === peg$c1476) {
17236
+ s2 = peg$c1476;
16949
17237
  peg$currPos += 5;
16950
17238
  }
16951
17239
  else {
16952
17240
  s2 = peg$FAILED;
16953
17241
  if (peg$silentFails === 0) {
16954
- peg$fail(peg$c1466);
17242
+ peg$fail(peg$c1477);
16955
17243
  }
16956
17244
  }
16957
17245
  if (s2 !== peg$FAILED) {
@@ -17000,7 +17288,7 @@ function peg$parse(input, options) {
17000
17288
  }
17001
17289
  if (s9 !== peg$FAILED) {
17002
17290
  peg$savedPos = s0;
17003
- s1 = peg$c1467(s6);
17291
+ s1 = peg$c1478(s6);
17004
17292
  s0 = s1;
17005
17293
  }
17006
17294
  else {
@@ -17065,14 +17353,14 @@ function peg$parse(input, options) {
17065
17353
  s1 = null;
17066
17354
  }
17067
17355
  if (s1 !== peg$FAILED) {
17068
- if (input.substr(peg$currPos, 5) === peg$c1468) {
17069
- s2 = peg$c1468;
17356
+ if (input.substr(peg$currPos, 5) === peg$c1479) {
17357
+ s2 = peg$c1479;
17070
17358
  peg$currPos += 5;
17071
17359
  }
17072
17360
  else {
17073
17361
  s2 = peg$FAILED;
17074
17362
  if (peg$silentFails === 0) {
17075
- peg$fail(peg$c1469);
17363
+ peg$fail(peg$c1480);
17076
17364
  }
17077
17365
  }
17078
17366
  if (s2 !== peg$FAILED) {
@@ -17121,7 +17409,7 @@ function peg$parse(input, options) {
17121
17409
  }
17122
17410
  if (s9 !== peg$FAILED) {
17123
17411
  peg$savedPos = s0;
17124
- s1 = peg$c1470(s6);
17412
+ s1 = peg$c1481(s6);
17125
17413
  s0 = s1;
17126
17414
  }
17127
17415
  else {
@@ -17186,14 +17474,14 @@ function peg$parse(input, options) {
17186
17474
  s1 = null;
17187
17475
  }
17188
17476
  if (s1 !== peg$FAILED) {
17189
- if (input.substr(peg$currPos, 10) === peg$c1472) {
17190
- s2 = peg$c1472;
17477
+ if (input.substr(peg$currPos, 10) === peg$c1483) {
17478
+ s2 = peg$c1483;
17191
17479
  peg$currPos += 10;
17192
17480
  }
17193
17481
  else {
17194
17482
  s2 = peg$FAILED;
17195
17483
  if (peg$silentFails === 0) {
17196
- peg$fail(peg$c1473);
17484
+ peg$fail(peg$c1484);
17197
17485
  }
17198
17486
  }
17199
17487
  if (s2 !== peg$FAILED) {
@@ -17242,7 +17530,7 @@ function peg$parse(input, options) {
17242
17530
  }
17243
17531
  if (s9 !== peg$FAILED) {
17244
17532
  peg$savedPos = s0;
17245
- s1 = peg$c1474(s6);
17533
+ s1 = peg$c1485(s6);
17246
17534
  s0 = s1;
17247
17535
  }
17248
17536
  else {
@@ -17293,7 +17581,7 @@ function peg$parse(input, options) {
17293
17581
  if (s0 === peg$FAILED) {
17294
17582
  s1 = peg$FAILED;
17295
17583
  if (peg$silentFails === 0) {
17296
- peg$fail(peg$c1471);
17584
+ peg$fail(peg$c1482);
17297
17585
  }
17298
17586
  }
17299
17587
  return s0;
@@ -17307,14 +17595,14 @@ function peg$parse(input, options) {
17307
17595
  s1 = null;
17308
17596
  }
17309
17597
  if (s1 !== peg$FAILED) {
17310
- if (input.substr(peg$currPos, 16) === peg$c1476) {
17311
- s2 = peg$c1476;
17598
+ if (input.substr(peg$currPos, 16) === peg$c1487) {
17599
+ s2 = peg$c1487;
17312
17600
  peg$currPos += 16;
17313
17601
  }
17314
17602
  else {
17315
17603
  s2 = peg$FAILED;
17316
17604
  if (peg$silentFails === 0) {
17317
- peg$fail(peg$c1477);
17605
+ peg$fail(peg$c1488);
17318
17606
  }
17319
17607
  }
17320
17608
  if (s2 !== peg$FAILED) {
@@ -17363,7 +17651,7 @@ function peg$parse(input, options) {
17363
17651
  }
17364
17652
  if (s9 !== peg$FAILED) {
17365
17653
  peg$savedPos = s0;
17366
- s1 = peg$c1478(s6);
17654
+ s1 = peg$c1489(s6);
17367
17655
  s0 = s1;
17368
17656
  }
17369
17657
  else {
@@ -17414,7 +17702,7 @@ function peg$parse(input, options) {
17414
17702
  if (s0 === peg$FAILED) {
17415
17703
  s1 = peg$FAILED;
17416
17704
  if (peg$silentFails === 0) {
17417
- peg$fail(peg$c1475);
17705
+ peg$fail(peg$c1486);
17418
17706
  }
17419
17707
  }
17420
17708
  return s0;
@@ -17428,14 +17716,14 @@ function peg$parse(input, options) {
17428
17716
  s1 = null;
17429
17717
  }
17430
17718
  if (s1 !== peg$FAILED) {
17431
- if (input.substr(peg$currPos, 12) === peg$c1480) {
17432
- s2 = peg$c1480;
17719
+ if (input.substr(peg$currPos, 12) === peg$c1491) {
17720
+ s2 = peg$c1491;
17433
17721
  peg$currPos += 12;
17434
17722
  }
17435
17723
  else {
17436
17724
  s2 = peg$FAILED;
17437
17725
  if (peg$silentFails === 0) {
17438
- peg$fail(peg$c1481);
17726
+ peg$fail(peg$c1492);
17439
17727
  }
17440
17728
  }
17441
17729
  if (s2 !== peg$FAILED) {
@@ -17484,7 +17772,7 @@ function peg$parse(input, options) {
17484
17772
  }
17485
17773
  if (s9 !== peg$FAILED) {
17486
17774
  peg$savedPos = s0;
17487
- s1 = peg$c1482(s6);
17775
+ s1 = peg$c1493(s6);
17488
17776
  s0 = s1;
17489
17777
  }
17490
17778
  else {
@@ -17535,7 +17823,7 @@ function peg$parse(input, options) {
17535
17823
  if (s0 === peg$FAILED) {
17536
17824
  s1 = peg$FAILED;
17537
17825
  if (peg$silentFails === 0) {
17538
- peg$fail(peg$c1479);
17826
+ peg$fail(peg$c1490);
17539
17827
  }
17540
17828
  }
17541
17829
  return s0;
@@ -17549,14 +17837,14 @@ function peg$parse(input, options) {
17549
17837
  s1 = null;
17550
17838
  }
17551
17839
  if (s1 !== peg$FAILED) {
17552
- if (input.substr(peg$currPos, 5) === peg$c1484) {
17553
- s2 = peg$c1484;
17840
+ if (input.substr(peg$currPos, 5) === peg$c1495) {
17841
+ s2 = peg$c1495;
17554
17842
  peg$currPos += 5;
17555
17843
  }
17556
17844
  else {
17557
17845
  s2 = peg$FAILED;
17558
17846
  if (peg$silentFails === 0) {
17559
- peg$fail(peg$c1485);
17847
+ peg$fail(peg$c1496);
17560
17848
  }
17561
17849
  }
17562
17850
  if (s2 !== peg$FAILED) {
@@ -17605,7 +17893,7 @@ function peg$parse(input, options) {
17605
17893
  }
17606
17894
  if (s9 !== peg$FAILED) {
17607
17895
  peg$savedPos = s0;
17608
- s1 = peg$c1486(s6);
17896
+ s1 = peg$c1497(s6);
17609
17897
  s0 = s1;
17610
17898
  }
17611
17899
  else {
@@ -17656,7 +17944,7 @@ function peg$parse(input, options) {
17656
17944
  if (s0 === peg$FAILED) {
17657
17945
  s1 = peg$FAILED;
17658
17946
  if (peg$silentFails === 0) {
17659
- peg$fail(peg$c1483);
17947
+ peg$fail(peg$c1494);
17660
17948
  }
17661
17949
  }
17662
17950
  return s0;
@@ -17670,14 +17958,14 @@ function peg$parse(input, options) {
17670
17958
  s1 = null;
17671
17959
  }
17672
17960
  if (s1 !== peg$FAILED) {
17673
- if (input.substr(peg$currPos, 7) === peg$c1488) {
17674
- s2 = peg$c1488;
17961
+ if (input.substr(peg$currPos, 7) === peg$c1499) {
17962
+ s2 = peg$c1499;
17675
17963
  peg$currPos += 7;
17676
17964
  }
17677
17965
  else {
17678
17966
  s2 = peg$FAILED;
17679
17967
  if (peg$silentFails === 0) {
17680
- peg$fail(peg$c1489);
17968
+ peg$fail(peg$c1500);
17681
17969
  }
17682
17970
  }
17683
17971
  if (s2 !== peg$FAILED) {
@@ -17726,7 +18014,7 @@ function peg$parse(input, options) {
17726
18014
  }
17727
18015
  if (s9 !== peg$FAILED) {
17728
18016
  peg$savedPos = s0;
17729
- s1 = peg$c1490(s6);
18017
+ s1 = peg$c1501(s6);
17730
18018
  s0 = s1;
17731
18019
  }
17732
18020
  else {
@@ -17777,7 +18065,7 @@ function peg$parse(input, options) {
17777
18065
  if (s0 === peg$FAILED) {
17778
18066
  s1 = peg$FAILED;
17779
18067
  if (peg$silentFails === 0) {
17780
- peg$fail(peg$c1487);
18068
+ peg$fail(peg$c1498);
17781
18069
  }
17782
18070
  }
17783
18071
  return s0;
@@ -17847,7 +18135,7 @@ function peg$parse(input, options) {
17847
18135
  }
17848
18136
  if (s9 !== peg$FAILED) {
17849
18137
  peg$savedPos = s0;
17850
- s1 = peg$c1492(s6);
18138
+ s1 = peg$c1503(s6);
17851
18139
  s0 = s1;
17852
18140
  }
17853
18141
  else {
@@ -17901,14 +18189,14 @@ function peg$parse(input, options) {
17901
18189
  s1 = null;
17902
18190
  }
17903
18191
  if (s1 !== peg$FAILED) {
17904
- if (input.substr(peg$currPos, 9) === peg$c1493) {
17905
- s2 = peg$c1493;
18192
+ if (input.substr(peg$currPos, 9) === peg$c1504) {
18193
+ s2 = peg$c1504;
17906
18194
  peg$currPos += 9;
17907
18195
  }
17908
18196
  else {
17909
18197
  s2 = peg$FAILED;
17910
18198
  if (peg$silentFails === 0) {
17911
- peg$fail(peg$c1494);
18199
+ peg$fail(peg$c1505);
17912
18200
  }
17913
18201
  }
17914
18202
  if (s2 !== peg$FAILED) {
@@ -17957,7 +18245,7 @@ function peg$parse(input, options) {
17957
18245
  }
17958
18246
  if (s9 !== peg$FAILED) {
17959
18247
  peg$savedPos = s0;
17960
- s1 = peg$c1492(s6);
18248
+ s1 = peg$c1503(s6);
17961
18249
  s0 = s1;
17962
18250
  }
17963
18251
  else {
@@ -18009,7 +18297,7 @@ function peg$parse(input, options) {
18009
18297
  if (s0 === peg$FAILED) {
18010
18298
  s1 = peg$FAILED;
18011
18299
  if (peg$silentFails === 0) {
18012
- peg$fail(peg$c1491);
18300
+ peg$fail(peg$c1502);
18013
18301
  }
18014
18302
  }
18015
18303
  return s0;
@@ -18023,14 +18311,14 @@ function peg$parse(input, options) {
18023
18311
  s1 = null;
18024
18312
  }
18025
18313
  if (s1 !== peg$FAILED) {
18026
- if (input.substr(peg$currPos, 5) === peg$c1496) {
18027
- s2 = peg$c1496;
18314
+ if (input.substr(peg$currPos, 5) === peg$c1507) {
18315
+ s2 = peg$c1507;
18028
18316
  peg$currPos += 5;
18029
18317
  }
18030
18318
  else {
18031
18319
  s2 = peg$FAILED;
18032
18320
  if (peg$silentFails === 0) {
18033
- peg$fail(peg$c1497);
18321
+ peg$fail(peg$c1508);
18034
18322
  }
18035
18323
  }
18036
18324
  if (s2 !== peg$FAILED) {
@@ -18079,7 +18367,7 @@ function peg$parse(input, options) {
18079
18367
  }
18080
18368
  if (s9 !== peg$FAILED) {
18081
18369
  peg$savedPos = s0;
18082
- s1 = peg$c1498(s6);
18370
+ s1 = peg$c1509(s6);
18083
18371
  s0 = s1;
18084
18372
  }
18085
18373
  else {
@@ -18130,7 +18418,7 @@ function peg$parse(input, options) {
18130
18418
  if (s0 === peg$FAILED) {
18131
18419
  s1 = peg$FAILED;
18132
18420
  if (peg$silentFails === 0) {
18133
- peg$fail(peg$c1495);
18421
+ peg$fail(peg$c1506);
18134
18422
  }
18135
18423
  }
18136
18424
  return s0;
@@ -18144,14 +18432,14 @@ function peg$parse(input, options) {
18144
18432
  s1 = null;
18145
18433
  }
18146
18434
  if (s1 !== peg$FAILED) {
18147
- if (input.substr(peg$currPos, 3) === peg$c1500) {
18148
- s2 = peg$c1500;
18435
+ if (input.substr(peg$currPos, 3) === peg$c1511) {
18436
+ s2 = peg$c1511;
18149
18437
  peg$currPos += 3;
18150
18438
  }
18151
18439
  else {
18152
18440
  s2 = peg$FAILED;
18153
18441
  if (peg$silentFails === 0) {
18154
- peg$fail(peg$c1501);
18442
+ peg$fail(peg$c1512);
18155
18443
  }
18156
18444
  }
18157
18445
  if (s2 !== peg$FAILED) {
@@ -18200,7 +18488,7 @@ function peg$parse(input, options) {
18200
18488
  }
18201
18489
  if (s9 !== peg$FAILED) {
18202
18490
  peg$savedPos = s0;
18203
- s1 = peg$c1502(s6);
18491
+ s1 = peg$c1513(s6);
18204
18492
  s0 = s1;
18205
18493
  }
18206
18494
  else {
@@ -18251,7 +18539,7 @@ function peg$parse(input, options) {
18251
18539
  if (s0 === peg$FAILED) {
18252
18540
  s1 = peg$FAILED;
18253
18541
  if (peg$silentFails === 0) {
18254
- peg$fail(peg$c1499);
18542
+ peg$fail(peg$c1510);
18255
18543
  }
18256
18544
  }
18257
18545
  return s0;
@@ -18265,14 +18553,14 @@ function peg$parse(input, options) {
18265
18553
  s1 = null;
18266
18554
  }
18267
18555
  if (s1 !== peg$FAILED) {
18268
- if (input.substr(peg$currPos, 8) === peg$c1504) {
18269
- s2 = peg$c1504;
18556
+ if (input.substr(peg$currPos, 8) === peg$c1515) {
18557
+ s2 = peg$c1515;
18270
18558
  peg$currPos += 8;
18271
18559
  }
18272
18560
  else {
18273
18561
  s2 = peg$FAILED;
18274
18562
  if (peg$silentFails === 0) {
18275
- peg$fail(peg$c1505);
18563
+ peg$fail(peg$c1516);
18276
18564
  }
18277
18565
  }
18278
18566
  if (s2 !== peg$FAILED) {
@@ -18325,7 +18613,7 @@ function peg$parse(input, options) {
18325
18613
  }
18326
18614
  if (s11 !== peg$FAILED) {
18327
18615
  peg$savedPos = s0;
18328
- s1 = peg$c1506(s6, s8);
18616
+ s1 = peg$c1517(s6, s8);
18329
18617
  s0 = s1;
18330
18618
  }
18331
18619
  else {
@@ -18389,14 +18677,14 @@ function peg$parse(input, options) {
18389
18677
  s1 = null;
18390
18678
  }
18391
18679
  if (s1 !== peg$FAILED) {
18392
- if (input.substr(peg$currPos, 8) === peg$c1504) {
18393
- s2 = peg$c1504;
18680
+ if (input.substr(peg$currPos, 8) === peg$c1515) {
18681
+ s2 = peg$c1515;
18394
18682
  peg$currPos += 8;
18395
18683
  }
18396
18684
  else {
18397
18685
  s2 = peg$FAILED;
18398
18686
  if (peg$silentFails === 0) {
18399
- peg$fail(peg$c1505);
18687
+ peg$fail(peg$c1516);
18400
18688
  }
18401
18689
  }
18402
18690
  if (s2 !== peg$FAILED) {
@@ -18429,14 +18717,14 @@ function peg$parse(input, options) {
18429
18717
  if (s8 !== peg$FAILED) {
18430
18718
  s9 = peg$parseWS();
18431
18719
  if (s9 !== peg$FAILED) {
18432
- if (input.substr(peg$currPos, 8) === peg$c1507) {
18433
- s10 = peg$c1507;
18720
+ if (input.substr(peg$currPos, 8) === peg$c1518) {
18721
+ s10 = peg$c1518;
18434
18722
  peg$currPos += 8;
18435
18723
  }
18436
18724
  else {
18437
18725
  s10 = peg$FAILED;
18438
18726
  if (peg$silentFails === 0) {
18439
- peg$fail(peg$c1508);
18727
+ peg$fail(peg$c1519);
18440
18728
  }
18441
18729
  }
18442
18730
  if (s10 !== peg$FAILED) {
@@ -18462,7 +18750,7 @@ function peg$parse(input, options) {
18462
18750
  }
18463
18751
  if (s13 !== peg$FAILED) {
18464
18752
  peg$savedPos = s0;
18465
- s1 = peg$c1509(s6, s8);
18753
+ s1 = peg$c1520(s6, s8);
18466
18754
  s0 = s1;
18467
18755
  }
18468
18756
  else {
@@ -18534,7 +18822,7 @@ function peg$parse(input, options) {
18534
18822
  if (s0 === peg$FAILED) {
18535
18823
  s1 = peg$FAILED;
18536
18824
  if (peg$silentFails === 0) {
18537
- peg$fail(peg$c1503);
18825
+ peg$fail(peg$c1514);
18538
18826
  }
18539
18827
  }
18540
18828
  return s0;
@@ -18714,7 +19002,7 @@ function peg$parse(input, options) {
18714
19002
  }
18715
19003
  if (s11 !== peg$FAILED) {
18716
19004
  peg$savedPos = s0;
18717
- s1 = peg$c1510(s4, s8);
19005
+ s1 = peg$c1521(s4, s8);
18718
19006
  s0 = s1;
18719
19007
  }
18720
19008
  else {
@@ -18782,13 +19070,13 @@ function peg$parse(input, options) {
18782
19070
  }
18783
19071
  if (s1 !== peg$FAILED) {
18784
19072
  if (input.charCodeAt(peg$currPos) === 38) {
18785
- s2 = peg$c1511;
19073
+ s2 = peg$c1522;
18786
19074
  peg$currPos++;
18787
19075
  }
18788
19076
  else {
18789
19077
  s2 = peg$FAILED;
18790
19078
  if (peg$silentFails === 0) {
18791
- peg$fail(peg$c1512);
19079
+ peg$fail(peg$c1523);
18792
19080
  }
18793
19081
  }
18794
19082
  if (s2 !== peg$FAILED) {
@@ -18844,7 +19132,7 @@ function peg$parse(input, options) {
18844
19132
  }
18845
19133
  if (s11 !== peg$FAILED) {
18846
19134
  peg$savedPos = s0;
18847
- s1 = peg$c1513(s4, s8);
19135
+ s1 = peg$c1524(s4, s8);
18848
19136
  s0 = s1;
18849
19137
  }
18850
19138
  else {
@@ -18911,14 +19199,14 @@ function peg$parse(input, options) {
18911
19199
  s1 = null;
18912
19200
  }
18913
19201
  if (s1 !== peg$FAILED) {
18914
- if (input.substr(peg$currPos, 8) === peg$c1504) {
18915
- s2 = peg$c1504;
19202
+ if (input.substr(peg$currPos, 8) === peg$c1515) {
19203
+ s2 = peg$c1515;
18916
19204
  peg$currPos += 8;
18917
19205
  }
18918
19206
  else {
18919
19207
  s2 = peg$FAILED;
18920
19208
  if (peg$silentFails === 0) {
18921
- peg$fail(peg$c1505);
19209
+ peg$fail(peg$c1516);
18922
19210
  }
18923
19211
  }
18924
19212
  if (s2 !== peg$FAILED) {
@@ -18945,14 +19233,14 @@ function peg$parse(input, options) {
18945
19233
  if (s8 !== peg$FAILED) {
18946
19234
  s9 = peg$parseWS();
18947
19235
  if (s9 !== peg$FAILED) {
18948
- if (input.substr(peg$currPos, 8) === peg$c1507) {
18949
- s10 = peg$c1507;
19236
+ if (input.substr(peg$currPos, 8) === peg$c1518) {
19237
+ s10 = peg$c1518;
18950
19238
  peg$currPos += 8;
18951
19239
  }
18952
19240
  else {
18953
19241
  s10 = peg$FAILED;
18954
19242
  if (peg$silentFails === 0) {
18955
- peg$fail(peg$c1508);
19243
+ peg$fail(peg$c1519);
18956
19244
  }
18957
19245
  }
18958
19246
  if (s10 !== peg$FAILED) {
@@ -18978,7 +19266,7 @@ function peg$parse(input, options) {
18978
19266
  }
18979
19267
  if (s13 !== peg$FAILED) {
18980
19268
  peg$savedPos = s0;
18981
- s1 = peg$c1514(s4, s8);
19269
+ s1 = peg$c1525(s4, s8);
18982
19270
  s0 = s1;
18983
19271
  }
18984
19272
  else {
@@ -19052,14 +19340,14 @@ function peg$parse(input, options) {
19052
19340
  s1 = null;
19053
19341
  }
19054
19342
  if (s1 !== peg$FAILED) {
19055
- if (input.substr(peg$currPos, 8) === peg$c1504) {
19056
- s2 = peg$c1504;
19343
+ if (input.substr(peg$currPos, 8) === peg$c1515) {
19344
+ s2 = peg$c1515;
19057
19345
  peg$currPos += 8;
19058
19346
  }
19059
19347
  else {
19060
19348
  s2 = peg$FAILED;
19061
19349
  if (peg$silentFails === 0) {
19062
- peg$fail(peg$c1505);
19350
+ peg$fail(peg$c1516);
19063
19351
  }
19064
19352
  }
19065
19353
  if (s2 !== peg$FAILED) {
@@ -19069,14 +19357,14 @@ function peg$parse(input, options) {
19069
19357
  if (s4 !== peg$FAILED) {
19070
19358
  s5 = peg$parseWS();
19071
19359
  if (s5 !== peg$FAILED) {
19072
- if (input.substr(peg$currPos, 8) === peg$c1507) {
19073
- s6 = peg$c1507;
19360
+ if (input.substr(peg$currPos, 8) === peg$c1518) {
19361
+ s6 = peg$c1518;
19074
19362
  peg$currPos += 8;
19075
19363
  }
19076
19364
  else {
19077
19365
  s6 = peg$FAILED;
19078
19366
  if (peg$silentFails === 0) {
19079
- peg$fail(peg$c1508);
19367
+ peg$fail(peg$c1519);
19080
19368
  }
19081
19369
  }
19082
19370
  if (s6 !== peg$FAILED) {
@@ -19102,7 +19390,7 @@ function peg$parse(input, options) {
19102
19390
  }
19103
19391
  if (s9 !== peg$FAILED) {
19104
19392
  peg$savedPos = s0;
19105
- s1 = peg$c1515(s4);
19393
+ s1 = peg$c1526(s4);
19106
19394
  s0 = s1;
19107
19395
  }
19108
19396
  else {
@@ -19156,14 +19444,14 @@ function peg$parse(input, options) {
19156
19444
  s1 = null;
19157
19445
  }
19158
19446
  if (s1 !== peg$FAILED) {
19159
- if (input.substr(peg$currPos, 8) === peg$c1504) {
19160
- s2 = peg$c1504;
19447
+ if (input.substr(peg$currPos, 8) === peg$c1515) {
19448
+ s2 = peg$c1515;
19161
19449
  peg$currPos += 8;
19162
19450
  }
19163
19451
  else {
19164
19452
  s2 = peg$FAILED;
19165
19453
  if (peg$silentFails === 0) {
19166
- peg$fail(peg$c1505);
19454
+ peg$fail(peg$c1516);
19167
19455
  }
19168
19456
  }
19169
19457
  if (s2 !== peg$FAILED) {
@@ -19210,7 +19498,7 @@ function peg$parse(input, options) {
19210
19498
  }
19211
19499
  if (s11 !== peg$FAILED) {
19212
19500
  peg$savedPos = s0;
19213
- s1 = peg$c1516(s4, s8);
19501
+ s1 = peg$c1527(s4, s8);
19214
19502
  s0 = s1;
19215
19503
  }
19216
19504
  else {
@@ -19274,14 +19562,14 @@ function peg$parse(input, options) {
19274
19562
  s1 = null;
19275
19563
  }
19276
19564
  if (s1 !== peg$FAILED) {
19277
- if (input.substr(peg$currPos, 8) === peg$c1504) {
19278
- s2 = peg$c1504;
19565
+ if (input.substr(peg$currPos, 8) === peg$c1515) {
19566
+ s2 = peg$c1515;
19279
19567
  peg$currPos += 8;
19280
19568
  }
19281
19569
  else {
19282
19570
  s2 = peg$FAILED;
19283
19571
  if (peg$silentFails === 0) {
19284
- peg$fail(peg$c1505);
19572
+ peg$fail(peg$c1516);
19285
19573
  }
19286
19574
  }
19287
19575
  if (s2 !== peg$FAILED) {
@@ -19311,7 +19599,7 @@ function peg$parse(input, options) {
19311
19599
  }
19312
19600
  if (s7 !== peg$FAILED) {
19313
19601
  peg$savedPos = s0;
19314
- s1 = peg$c1517(s4);
19602
+ s1 = peg$c1528(s4);
19315
19603
  s0 = s1;
19316
19604
  }
19317
19605
  else {
@@ -19356,14 +19644,14 @@ function peg$parse(input, options) {
19356
19644
  function peg$parseRegularArrangeDeclaration() {
19357
19645
  var s0, s1, s2, s3, s4, s5, s6;
19358
19646
  s0 = peg$currPos;
19359
- if (input.substr(peg$currPos, 7) === peg$c1518) {
19360
- s1 = peg$c1518;
19647
+ if (input.substr(peg$currPos, 7) === peg$c1529) {
19648
+ s1 = peg$c1529;
19361
19649
  peg$currPos += 7;
19362
19650
  }
19363
19651
  else {
19364
19652
  s1 = peg$FAILED;
19365
19653
  if (peg$silentFails === 0) {
19366
- peg$fail(peg$c1519);
19654
+ peg$fail(peg$c1530);
19367
19655
  }
19368
19656
  }
19369
19657
  if (s1 !== peg$FAILED) {
@@ -19396,7 +19684,7 @@ function peg$parse(input, options) {
19396
19684
  }
19397
19685
  if (s6 !== peg$FAILED) {
19398
19686
  peg$savedPos = s0;
19399
- s1 = peg$c1520(s3);
19687
+ s1 = peg$c1531(s3);
19400
19688
  s0 = s1;
19401
19689
  }
19402
19690
  else {
@@ -19433,14 +19721,14 @@ function peg$parse(input, options) {
19433
19721
  function peg$parseArrangeStartDeclaration() {
19434
19722
  var s0, s1, s2, s3, s4, s5, s6;
19435
19723
  s0 = peg$currPos;
19436
- if (input.substr(peg$currPos, 13) === peg$c1521) {
19437
- s1 = peg$c1521;
19724
+ if (input.substr(peg$currPos, 13) === peg$c1532) {
19725
+ s1 = peg$c1532;
19438
19726
  peg$currPos += 13;
19439
19727
  }
19440
19728
  else {
19441
19729
  s1 = peg$FAILED;
19442
19730
  if (peg$silentFails === 0) {
19443
- peg$fail(peg$c1522);
19731
+ peg$fail(peg$c1533);
19444
19732
  }
19445
19733
  }
19446
19734
  if (s1 !== peg$FAILED) {
@@ -19473,7 +19761,7 @@ function peg$parse(input, options) {
19473
19761
  }
19474
19762
  if (s6 !== peg$FAILED) {
19475
19763
  peg$savedPos = s0;
19476
- s1 = peg$c1523(s3);
19764
+ s1 = peg$c1534(s3);
19477
19765
  s0 = s1;
19478
19766
  }
19479
19767
  else {
@@ -19510,14 +19798,14 @@ function peg$parse(input, options) {
19510
19798
  function peg$parseArrangeEndDeclaration() {
19511
19799
  var s0, s1, s2, s3, s4, s5, s6;
19512
19800
  s0 = peg$currPos;
19513
- if (input.substr(peg$currPos, 11) === peg$c1524) {
19514
- s1 = peg$c1524;
19801
+ if (input.substr(peg$currPos, 11) === peg$c1535) {
19802
+ s1 = peg$c1535;
19515
19803
  peg$currPos += 11;
19516
19804
  }
19517
19805
  else {
19518
19806
  s1 = peg$FAILED;
19519
19807
  if (peg$silentFails === 0) {
19520
- peg$fail(peg$c1525);
19808
+ peg$fail(peg$c1536);
19521
19809
  }
19522
19810
  }
19523
19811
  if (s1 !== peg$FAILED) {
@@ -19550,7 +19838,7 @@ function peg$parse(input, options) {
19550
19838
  }
19551
19839
  if (s6 !== peg$FAILED) {
19552
19840
  peg$savedPos = s0;
19553
- s1 = peg$c1526(s3);
19841
+ s1 = peg$c1537(s3);
19554
19842
  s0 = s1;
19555
19843
  }
19556
19844
  else {
@@ -19597,7 +19885,7 @@ function peg$parse(input, options) {
19597
19885
  peg$silentFails--;
19598
19886
  if (s0 === peg$FAILED) {
19599
19887
  if (peg$silentFails === 0) {
19600
- peg$fail(peg$c1527);
19888
+ peg$fail(peg$c1538);
19601
19889
  }
19602
19890
  }
19603
19891
  return s0;
@@ -20915,10 +21203,10 @@ function compile_rule_handler(rule) {
20915
21203
  }
20916
21204
  // things that can only exist once and are just a value under their own name
20917
21205
  const tautologies = [
20918
- 'graph_layout', 'start_states', 'end_states', 'machine_name', 'machine_version',
21206
+ 'graph_layout', 'start_states', 'end_states', 'failed_outputs', 'machine_name', 'machine_version',
20919
21207
  'machine_comment', 'machine_author', 'machine_contributor', 'machine_definition',
20920
21208
  'machine_reference', 'machine_license', 'fsl_version', 'state_config', 'theme',
20921
- 'flow', 'dot_preamble', 'allows_override', 'default_state_config',
21209
+ 'flow', 'dot_preamble', 'allows_override', 'allow_islands', 'default_state_config',
20922
21210
  'default_start_state_config', 'default_end_state_config',
20923
21211
  'default_hooked_state_config', 'default_active_state_config',
20924
21212
  'default_terminal_state_config', 'npm_name'
@@ -20985,6 +21273,7 @@ function compile(tree) {
20985
21273
  transition: [],
20986
21274
  start_states: [],
20987
21275
  end_states: [],
21276
+ failed_outputs: [],
20988
21277
  state_config: [],
20989
21278
  state_declaration: [],
20990
21279
  fsl_version: [],
@@ -21012,7 +21301,8 @@ function compile(tree) {
21012
21301
  default_terminal_state_config: [],
21013
21302
  default_start_state_config: [],
21014
21303
  default_end_state_config: [],
21015
- allows_override: []
21304
+ allows_override: [],
21305
+ allow_islands: []
21016
21306
  };
21017
21307
  tree.map((tr) => {
21018
21308
  const rule = compile_rule_handler(tr), agg_as = rule.agg_as, val = rule.val; // TODO FIXME no any
@@ -21026,13 +21316,14 @@ function compile(tree) {
21026
21316
  const result_cfg = {
21027
21317
  start_states: results.start_states.length ? results.start_states : [assembled_transitions[0].from],
21028
21318
  end_states: results.end_states,
21319
+ failed_outputs: results.failed_outputs,
21029
21320
  transitions: assembled_transitions,
21030
21321
  state_property: [],
21031
21322
  };
21032
21323
  const oneOnlyKeys = [
21033
21324
  'graph_layout', 'machine_name', 'machine_version', 'machine_comment',
21034
21325
  'fsl_version', 'machine_license', 'machine_definition', 'machine_language',
21035
- 'flow', 'dot_preamble', 'allows_override', 'npm_name'
21326
+ 'flow', 'dot_preamble', 'allows_override', 'allow_islands', 'npm_name'
21036
21327
  ];
21037
21328
  oneOnlyKeys.map((oneOnlyKey) => {
21038
21329
  if (results[oneOnlyKey].length > 1) {
@@ -21547,7 +21838,7 @@ var constants = /*#__PURE__*/Object.freeze({
21547
21838
  * Useful for runtime diagnostics and for embedding in serialized machine
21548
21839
  * snapshots so that deserializers can detect version-skew.
21549
21840
  */
21550
- const version = "5.142.1";
21841
+ const version = "5.142.3";
21551
21842
 
21552
21843
  // whargarbl lots of these return arrays could/should be sets
21553
21844
  const { state_name_chars, state_name_first_chars, action_label_chars } = constants;
@@ -21737,9 +22028,56 @@ function state_style_condense(jssk, machine) {
21737
22028
  * `.data()`. Defaults to `undefined` when no data is used.
21738
22029
  *
21739
22030
  */
22031
+ /*********
22032
+ *
22033
+ * Partition a state graph into its connected components using an undirected
22034
+ * BFS over state names. Each edge (from, to) is treated as bidirectional so
22035
+ * that island membership is topology-based rather than flow-based.
22036
+ *
22037
+ * Used at construction time to enforce the `allow_islands` constraint.
22038
+ *
22039
+ * @param states The machine's state map (keys are state names).
22040
+ * @param edges The machine's edge list; only `from` and `to` are used.
22041
+ * @returns An array of components, each component an array of state names.
22042
+ *
22043
+ */
22044
+ function find_connected_components(states, edges) {
22045
+ // Build undirected adjacency list
22046
+ const adj = new Map();
22047
+ for (const name of states.keys()) {
22048
+ adj.set(name, new Set());
22049
+ }
22050
+ for (const edge of edges) {
22051
+ adj.get(edge.from).add(edge.to);
22052
+ adj.get(edge.to).add(edge.from);
22053
+ }
22054
+ const visited = new Set();
22055
+ const result = [];
22056
+ for (const start of states.keys()) {
22057
+ if (visited.has(start)) {
22058
+ continue;
22059
+ }
22060
+ // BFS to collect this component
22061
+ const component = [];
22062
+ const queue = [start];
22063
+ visited.add(start);
22064
+ while (queue.length > 0) {
22065
+ const node = queue.shift();
22066
+ component.push(node);
22067
+ for (const neighbor of adj.get(node)) {
22068
+ if (!visited.has(neighbor)) {
22069
+ visited.add(neighbor);
22070
+ queue.push(neighbor);
22071
+ }
22072
+ }
22073
+ }
22074
+ result.push(component);
22075
+ }
22076
+ return result;
22077
+ }
21740
22078
  class Machine {
21741
22079
  // whargarbl this badly needs to be broken up, monolith master
21742
- constructor({ start_states, end_states = [], initial_state, start_states_no_enforce, complete = [], transitions, machine_author, machine_comment, machine_contributor, machine_definition, machine_language, machine_license, machine_name, machine_version, npm_name, state_declaration, property_definition, state_property, fsl_version, dot_preamble = undefined, arrange_declaration = [], arrange_start_declaration = [], arrange_end_declaration = [], theme = ['default'], flow = 'down', graph_layout = 'dot', instance_name, history, data, default_state_config, default_active_state_config, default_hooked_state_config, default_terminal_state_config, default_start_state_config, default_end_state_config, allows_override, config_allows_override, rng_seed, time_source, timeout_source, clear_timeout_source }) {
22080
+ constructor({ start_states, end_states = [], failed_outputs = [], initial_state, start_states_no_enforce, complete = [], transitions, machine_author, machine_comment, machine_contributor, machine_definition, machine_language, machine_license, machine_name, machine_version, npm_name, state_declaration, property_definition, state_property, fsl_version, dot_preamble = undefined, arrange_declaration = [], arrange_start_declaration = [], arrange_end_declaration = [], theme = ['default'], flow = 'down', graph_layout = 'dot', instance_name, history, data, default_state_config, default_active_state_config, default_hooked_state_config, default_terminal_state_config, default_start_state_config, default_end_state_config, allows_override, config_allows_override, allow_islands, rng_seed, time_source, timeout_source, clear_timeout_source }) {
21743
22081
  this._time_source = () => new Date().getTime();
21744
22082
  this._create_started = this._time_source();
21745
22083
  this._instance_name = instance_name;
@@ -21754,6 +22092,7 @@ class Machine {
21754
22092
  this._reverse_action_targets = new Map(); // todo
21755
22093
  this._start_states = new Set(start_states);
21756
22094
  this._end_states = new Set(end_states); // todo consider what to do about incorporating complete too
22095
+ this._failed_outputs = new Set(failed_outputs);
21757
22096
  this._machine_author = array_box_if_string(machine_author);
21758
22097
  this._machine_comment = machine_comment;
21759
22098
  this._machine_contributor = array_box_if_string(machine_contributor);
@@ -21803,6 +22142,7 @@ class Machine {
21803
22142
  // no need for a boolean for single hooks, just test for undefinedness
21804
22143
  this._code_allows_override = allows_override;
21805
22144
  this._config_allows_override = config_allows_override;
22145
+ this._allow_islands = allow_islands !== null && allow_islands !== void 0 ? allow_islands : true;
21806
22146
  if ((allows_override === false) && (config_allows_override === true)) {
21807
22147
  throw new JssmError(undefined, "Code specifies no override, but config tries to permit; config may not be less strict than code");
21808
22148
  }
@@ -22061,6 +22401,24 @@ class Machine {
22061
22401
  if (!(start_states.length === this._start_states.size)) {
22062
22402
  throw new JssmError(this, `Start states cannot be repeated`);
22063
22403
  }
22404
+ // assert connectivity constraints imposed by allow_islands
22405
+ if (this._allow_islands !== true) {
22406
+ const components = find_connected_components(this._states, this._edges);
22407
+ if (this._allow_islands === false) {
22408
+ if (components.length > 1) {
22409
+ throw new JssmError(this, `allow_islands is false but the state graph has ${components.length} disconnected components`);
22410
+ }
22411
+ }
22412
+ else {
22413
+ // 'with_start': every component must contain at least one start state
22414
+ for (const component of components) {
22415
+ const has_start = component.some(s => this._start_states.has(s));
22416
+ if (!has_start) {
22417
+ throw new JssmError(this, `allow_islands is 'with_start' but a connected component has no start state: [${[...component].join(', ')}]`);
22418
+ }
22419
+ }
22420
+ }
22421
+ }
22064
22422
  this._created = this._time_source();
22065
22423
  this.auto_set_state_timeout();
22066
22424
  this._arrange_declaration.forEach((arrange_pair) => arrange_pair.forEach((possibleState) => {
@@ -22383,6 +22741,45 @@ class Machine {
22383
22741
  is_end_state(whichState) {
22384
22742
  return this._end_states.has(whichState);
22385
22743
  }
22744
+ /********
22745
+ *
22746
+ * Get the set of states declared as failure outputs for this machine.
22747
+ * Returns an array of state labels, or an empty array when none were
22748
+ * declared. A state in this list means the machine is in a failure
22749
+ * condition when it occupies that state.
22750
+ *
22751
+ * @see {@link is_failed_output} to test a single state
22752
+ * @see {@link is_failed} to test the current state
22753
+ *
22754
+ */
22755
+ failed_outputs() {
22756
+ return [...this._failed_outputs];
22757
+ }
22758
+ /********
22759
+ *
22760
+ * Check whether a given state is declared as a failure output.
22761
+ *
22762
+ * @param whichState The name of the state to check
22763
+ *
22764
+ * @see {@link failed_outputs} for the full failure-output set
22765
+ * @see {@link is_failed} to test the current state
22766
+ *
22767
+ */
22768
+ is_failed_output(whichState) {
22769
+ return this._failed_outputs.has(whichState);
22770
+ }
22771
+ /********
22772
+ *
22773
+ * Check whether the machine is currently in a failure state — that is,
22774
+ * whether its current state is one of the declared `failed_outputs`.
22775
+ *
22776
+ * @see {@link failed_outputs} for the full failure-output set
22777
+ * @see {@link is_failed_output} to test an arbitrary state
22778
+ *
22779
+ */
22780
+ is_failed() {
22781
+ return this._failed_outputs.has(this._state);
22782
+ }
22386
22783
  /********
22387
22784
  *
22388
22785
  * Check whether a given state is final (either has no exits or is marked
@@ -22742,6 +23139,19 @@ class Machine {
22742
23139
  return false;
22743
23140
  }
22744
23141
  }
23142
+ /*********
23143
+ *
23144
+ * Return the effective island policy for this machine. `true` means
23145
+ * disconnected components are allowed (the default), `false` requires a
23146
+ * single connected component, and `'with_start'` allows islands only when
23147
+ * every component contains at least one start state.
23148
+ *
23149
+ * @returns The island policy stored in the machine.
23150
+ *
23151
+ */
23152
+ get allow_islands() {
23153
+ return this._allow_islands;
23154
+ }
22745
23155
  /** List all available theme names.
22746
23156
  * @returns An array of theme name strings.
22747
23157
  */