'use strict';

var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };

var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };

var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }

function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

var EspoBpmn = EspoBpmn || {
    Figures: {},
    figureGroups: {
        eventStart: ['eventStart', 'eventStartConditional', 'eventStartTimer', 'eventStartMessage', 'eventStartSignal', 'eventStartError', 'eventStartEscalation', 'eventStartCompensation', 'eventStartMultiple', 'eventStartParallelMultiple'],
        eventIntermediate: ['eventIntermediateThrow', 'eventIntermediateTimerCatch', 'eventIntermediateConditionalCatch', 'eventIntermediateMessageCatch', 'eventIntermediateLinkCatch', 'eventIntermediateSignalCatch', 'eventIntermediateMultipleCatch', 'eventIntermediateParallelMultipleCatch', 'eventIntermediateMessageThrow', 'eventIntermediateSignalThrow', 'eventIntermediateLinkThrow', 'eventIntermediateEscalationThrow', 'eventIntermediateCompensationThrow', 'eventIntermediateMultipleThrow', 'eventIntermediateCancelBoundary', 'eventIntermediateCompensationBoundary', 'eventIntermediateCancelBoundary', 'eventIntermediateMultipleBoundary', 'eventIntermediateParallelMultipleBoundary', 'eventIntermediateMessageBoundary', 'eventIntermediateTimerBoundary', 'eventIntermediateEscalationBoundary', 'eventIntermediateConditionalBoundary', 'eventIntermediateSignalBoundary', 'eventIntermediateErrorBoundary'],
        eventEnd: ['eventEnd', 'eventEndMessage', 'eventEndSignal', 'eventEndError', 'eventEndEscalation', 'eventEndCancel', 'eventEndCompensation', 'eventEndTerminate', 'eventEndMultiple'],
        gateway: ['gatewayInclusive', 'gatewayParallel', 'gatewayExclusive', 'gatewayEventBased', 'gatewayComplex', 'gatewayEventBasedStart', 'gatewayParallelStart'],
        task: ['subProcess', 'eventSubProcess', 'callActivity', 'transaction', 'adHocSubProcess', 'task', 'taskUser', 'taskScript', 'taskService', 'taskBusinessRule', 'taskSendMessage', 'taskReceiveMessage']
    }
};

window.EspoBpmn = EspoBpmn;

(function () {
    EspoBpmn.Event = window.Event;
    if (typeof window.CustomEvent === 'function') return false;
    function CustomEvent(event, params) {
        params = params || { bubbles: false, cancelable: false, detail: undefined };
        var evt = document.createEvent('CustomEvent');
        evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
        return evt;
    }
    CustomEvent.prototype = window.Event.prototype;
    EspoBpmn.Event = CustomEvent;
})();

(function (EspoBpmn) {

    EspoBpmn.Icons = {

        eventMessageCatch: {
            icon: 'M1664 1504v-768q-32 36-69 66-268 206-426 338-51 43-83 67t-86.5 48.5-102.5 24.5h-2q-48 0-102.5-24.5t-86.5-48.5-83-67q-158-132-426-338-37-30-69-66v768q0 13 9.5 22.5t22.5 9.5h1472q13 0 22.5-9.5t9.5-22.5zm0-1051v-24.5l-.5-13-3-12.5-5.5-9-9-7.5-14-2.5h-1472q-13 0-22.5 9.5t-9.5 22.5q0 168 147 284 193 152 401 317 6 5 35 29.5t46 37.5 44.5 31.5 50.5 27.5 43 9h2q20 0 43-9t50.5-27.5 44.5-31.5 46-37.5 35-29.5q208-165 401-317 54-43 100.5-115.5t46.5-131.5zm128-37v1088q0 66-47 113t-113 47h-1472q-66 0-113-47t-47-113v-1088q0-66 47-113t113-47h1472q66 0 113 47t47 113z',
            height: 24,
            width: 24,
            viewBox: '0 70 1792 1742'
        },

        eventMessageThrow: {
            icon: 'M1792 710v794q0 66-47 113t-113 47h-1472q-66 0-113-47t-47-113v-794q44 49 101 87 362 246 497 345 57 42 92.5 65.5t94.5 48 110 24.5h2q51 0 110-24.5t94.5-48 92.5-65.5q170-123 498-345 57-39 100-87zm0-294q0 79-49 151t-122 123q-376 261-468 325-10 7-42.5 30.5t-54 38-52 32.5-57.5 27-50 9h-2q-23 0-50-9t-57.5-27-52-32.5-54-38-42.5-30.5q-91-64-262-182.5t-205-142.5q-62-42-117-115.5t-55-136.5q0-78 41.5-130t118.5-52h1472q65 0 112.5 47t47.5 113z',
            height: 24,
            width: 24,
            viewBox: '0 70 1792 1742'
        },

        eventCancelCatch: {
            icon: 'M304.456 39.401 C 302.563 40.085,281.178 60.754,247.893 94.072 L 194.374 147.645 144.009 97.261 C 91.243 44.477,89.318 42.817,83.543 45.167 C 79.604 46.770,35.418 90.771,33.999 94.504 C 31.578 100.871,31.552 100.841,85.224 154.644 L 136.243 205.788 88.280 253.720 C 39.676 302.293,37.559 304.730,39.096 310.338 C 40.470 315.350,85.652 359.525,90.294 360.395 C 96.490 361.558,96.367 361.665,146.237 311.763 L 194.231 263.738 244.865 314.265 C 298.509 367.794,298.238 367.553,303.760 366.517 C 307.905 365.740,353.032 321.676,355.009 316.476 C 357.434 310.097,362.871 316.370,302.434 255.809 L 252.368 205.639 306.184 151.797 L 360.000 97.955 360.000 92.387 L 360.000 86.818 336.614 63.372 C 312.291 38.986,310.109 37.360,304.456 39.401 M285.311 147.021 C 233.430 199.103,231.000 201.706,231.000 205.195 C 231.000 210.002,228.206 206.972,284.930 263.687 L 333.991 312.740 317.821 328.933 L 301.651 345.125 250.553 294.063 L 199.455 243.000 194.501 243.000 L 189.548 243.000 141.024 291.311 L 92.500 339.621 76.439 323.561 L 60.379 307.500 108.689 258.976 L 157.000 210.452 157.000 205.499 L 157.000 200.545 105.973 149.483 L 54.946 98.421 71.017 82.138 L 87.087 65.855 138.069 116.816 C 169.622 148.355,189.956 167.950,191.424 168.230 C 198.052 169.497,197.716 169.791,253.427 114.073 L 307.166 60.327 323.393 76.414 L 339.621 92.500 285.311 147.021 ',
            height: 28,
            width: 28,
            viewBox: '0 0 400 400'
        },

        eventCancelThrow: {
            icon: 'M304.456 39.401 C 302.563 40.085,281.178 60.754,247.893 94.072 L 194.374 147.645 144.009 97.261 C 91.243 44.477,89.318 42.817,83.543 45.167 C 79.604 46.770,35.418 90.771,33.999 94.504 C 31.578 100.871,31.552 100.841,85.224 154.644 L 136.243 205.788 88.280 253.720 C 39.676 302.293,37.559 304.730,39.096 310.338 C 40.470 315.350,85.652 359.525,90.294 360.395 C 96.490 361.558,96.367 361.665,146.237 311.763 L 194.231 263.738 244.865 314.265 C 298.509 367.794,298.238 367.553,303.760 366.517 C 307.905 365.740,353.032 321.676,355.009 316.476 C 357.434 310.097,362.871 316.370,302.434 255.809 L 252.368 205.639 306.184 151.797 L 360.000 97.955 360.000 92.387 L 360.000 86.818 336.614 63.372 C 312.291 38.986,310.109 37.360,304.456 39.401 ',
            height: 28,
            width: 28,
            viewBox: '0 0 400 400'
        },

        eventCompensationCatch: {
            icon: 'M190.550 32.563 C 187.441 36.703,185.313 39.000,184.587 39.000 C 183.632 39.000,179.000 43.740,179.000 44.717 C 179.000 45.162,177.794 46.420,176.320 47.513 C 172.916 50.037,170.037 52.916,167.513 56.320 C 166.420 57.794,165.162 59.000,164.717 59.000 C 163.666 59.000,159.000 63.666,159.000 64.717 C 159.000 65.162,157.794 66.420,156.320 67.513 C 152.916 70.037,150.037 72.916,147.513 76.320 C 146.420 77.794,145.162 79.000,144.717 79.000 C 143.666 79.000,139.000 83.666,139.000 84.717 C 139.000 85.162,137.794 86.420,136.320 87.513 C 132.916 90.037,130.037 92.916,127.513 96.320 C 126.420 97.794,125.162 99.000,124.717 99.000 C 123.666 99.000,119.000 103.666,119.000 104.717 C 119.000 105.162,117.794 106.420,116.320 107.513 C 112.916 110.037,110.037 112.916,107.513 116.320 C 106.420 117.794,105.162 119.000,104.717 119.000 C 104.273 119.000,102.805 120.105,101.455 121.455 C 100.105 122.805,99.000 124.273,99.000 124.717 C 99.000 125.162,97.794 126.420,96.320 127.513 C 92.916 130.037,90.037 132.916,87.513 136.320 C 86.420 137.794,85.162 139.000,84.717 139.000 C 83.666 139.000,79.000 143.666,79.000 144.717 C 79.000 145.162,77.794 146.420,76.320 147.513 C 72.916 150.037,70.037 152.916,67.513 156.320 C 66.420 157.794,65.162 159.000,64.717 159.000 C 63.666 159.000,59.000 163.666,59.000 164.717 C 59.000 165.162,57.794 166.420,56.320 167.513 C 52.916 170.037,50.037 172.916,47.513 176.320 C 46.420 177.794,45.162 179.000,44.717 179.000 C 43.666 179.000,39.000 183.666,39.000 184.717 C 39.000 185.162,37.846 186.392,36.437 187.450 C 30.012 192.275,30.000 192.298,30.000 200.130 C 30.000 206.900,30.217 207.688,32.563 209.450 C 36.703 212.559,39.000 214.687,39.000 215.413 C 39.000 216.368,43.740 221.000,44.717 221.000 C 45.162 221.000,46.420 222.206,47.513 223.680 C 50.037 227.084,52.916 229.963,56.320 232.487 C 57.794 233.580,59.000 234.838,59.000 235.283 C 59.000 236.334,63.666 241.000,64.717 241.000 C 65.162 241.000,66.420 242.206,67.513 243.680 C 70.037 247.084,72.916 249.963,76.320 252.487 C 77.794 253.580,79.000 254.838,79.000 255.283 C 79.000 256.334,83.666 261.000,84.717 261.000 C 85.162 261.000,86.420 262.206,87.513 263.680 C 90.037 267.084,92.916 269.963,96.320 272.487 C 97.794 273.580,99.000 274.838,99.000 275.283 C 99.000 276.334,103.666 281.000,104.717 281.000 C 105.162 281.000,106.420 282.206,107.513 283.680 C 110.037 287.084,112.916 289.963,116.320 292.487 C 117.794 293.580,119.000 294.838,119.000 295.283 C 119.000 296.334,123.666 301.000,124.717 301.000 C 125.162 301.000,126.420 302.206,127.513 303.680 C 130.037 307.084,132.916 309.963,136.320 312.487 C 137.794 313.580,139.000 314.838,139.000 315.283 C 139.000 316.334,143.666 321.000,144.717 321.000 C 145.162 321.000,146.420 322.206,147.513 323.680 C 150.037 327.084,152.916 329.963,156.320 332.487 C 157.794 333.580,159.000 334.838,159.000 335.283 C 159.000 336.334,163.666 341.000,164.717 341.000 C 165.162 341.000,166.420 342.206,167.513 343.680 C 170.037 347.084,172.916 349.963,176.320 352.487 C 177.794 353.580,179.000 354.838,179.000 355.283 C 179.000 356.260,183.632 361.000,184.587 361.000 C 185.313 361.000,187.441 363.297,190.550 367.437 C 194.558 372.774,212.000 370.016,212.000 364.045 C 212.000 363.470,212.450 363.000,213.000 363.000 C 213.550 363.000,214.000 361.650,214.000 360.000 C 214.000 358.000,214.500 357.000,215.500 357.000 C 216.814 357.000,217.000 350.437,217.000 303.929 C 217.000 245.255,216.683 248.000,223.457 248.000 C 226.885 248.000,229.980 250.923,288.049 309.000 L 349.040 370.000 355.638 370.000 C 363.233 370.000,370.000 365.109,370.000 359.618 C 370.000 358.178,370.450 357.000,371.000 357.000 C 371.662 357.000,372.000 304.500,372.000 201.500 C 372.000 98.500,371.662 46.000,371.000 46.000 C 370.450 46.000,370.000 44.650,370.000 42.999 C 370.000 37.026,363.091 32.000,354.879 32.000 C 350.960 32.000,348.000 32.430,348.000 33.000 C 348.000 33.550,347.336 34.000,346.524 34.000 C 345.711 34.000,318.499 60.550,286.051 93.000 C 229.914 149.140,226.880 152.000,223.456 152.000 C 216.683 152.000,217.000 154.744,217.000 96.071 C 217.000 49.563,216.814 43.000,215.500 43.000 C 214.556 43.000,214.000 42.048,214.000 40.429 C 214.000 39.014,213.438 37.289,212.750 36.594 C 212.063 35.899,210.606 34.131,209.513 32.665 C 206.547 28.687,193.513 28.618,190.550 32.563 M181.571 93.429 C 183.719 95.577,183.719 304.423,181.571 306.571 C 178.746 309.397,170.000 307.687,170.000 304.309 C 170.000 303.850,168.794 302.580,167.320 301.487 C 163.916 298.963,161.037 296.084,158.513 292.680 C 157.420 291.206,156.162 290.000,155.717 290.000 C 154.666 290.000,150.000 285.334,150.000 284.283 C 150.000 283.838,148.794 282.580,147.320 281.487 C 143.916 278.963,141.037 276.084,138.513 272.680 C 137.420 271.206,136.162 270.000,135.717 270.000 C 134.666 270.000,130.000 265.334,130.000 264.283 C 130.000 263.838,128.794 262.580,127.320 261.487 C 123.916 258.963,121.037 256.084,118.513 252.680 C 117.420 251.206,116.162 250.000,115.717 250.000 C 114.666 250.000,110.000 245.334,110.000 244.283 C 110.000 243.838,108.794 242.580,107.320 241.487 C 103.916 238.963,101.037 236.084,98.513 232.680 C 97.420 231.206,96.162 230.000,95.717 230.000 C 94.666 230.000,90.000 225.334,90.000 224.283 C 90.000 223.838,88.794 222.580,87.320 221.487 C 83.916 218.963,81.037 216.084,78.513 212.680 C 77.420 211.206,76.162 210.000,75.717 210.000 C 75.273 210.000,73.805 208.895,72.455 207.545 C 67.888 202.979,70.302 190.000,75.717 190.000 C 76.162 190.000,77.420 188.794,78.513 187.320 C 81.037 183.916,83.916 181.037,87.320 178.513 C 88.794 177.420,90.000 176.162,90.000 175.717 C 90.000 174.666,94.666 170.000,95.717 170.000 C 96.162 170.000,97.420 168.794,98.513 167.320 C 101.037 163.916,103.916 161.037,107.320 158.513 C 108.794 157.420,110.000 156.162,110.000 155.717 C 110.000 154.666,114.666 150.000,115.717 150.000 C 116.162 150.000,117.420 148.794,118.513 147.320 C 121.037 143.916,123.916 141.037,127.320 138.513 C 128.794 137.420,130.000 136.162,130.000 135.717 C 130.000 135.273,131.105 133.805,132.455 132.455 C 133.805 131.105,135.273 130.000,135.717 130.000 C 136.162 130.000,137.420 128.794,138.513 127.320 C 141.037 123.916,143.916 121.037,147.320 118.513 C 148.794 117.420,150.000 116.162,150.000 115.717 C 150.000 114.666,154.666 110.000,155.717 110.000 C 156.162 110.000,157.420 108.794,158.513 107.320 C 161.037 103.916,163.916 101.037,167.320 98.513 C 168.794 97.420,170.000 96.163,170.000 95.720 C 170.000 92.317,178.731 90.588,181.571 93.429 M337.571 93.429 C 339.719 95.577,339.719 304.423,337.571 306.571 C 332.494 311.649,333.045 312.107,277.469 256.522 L 226.000 205.045 226.000 200.040 L 226.000 195.035 277.250 143.609 C 332.711 87.959,332.378 88.236,337.571 93.429 ',
            height: 28,
            width: 28,
            viewBox: '20 0 430 400'
        },

        eventCompensationThrow: {
            icon: 'M190.550 32.563 C 187.441 36.703,185.313 39.000,184.587 39.000 C 183.632 39.000,179.000 43.740,179.000 44.717 C 179.000 45.162,177.794 46.420,176.320 47.513 C 172.916 50.037,170.037 52.916,167.513 56.320 C 166.420 57.794,165.162 59.000,164.717 59.000 C 163.666 59.000,159.000 63.666,159.000 64.717 C 159.000 65.162,157.794 66.420,156.320 67.513 C 152.916 70.037,150.037 72.916,147.513 76.320 C 146.420 77.794,145.162 79.000,144.717 79.000 C 143.666 79.000,139.000 83.666,139.000 84.717 C 139.000 85.162,137.794 86.420,136.320 87.513 C 132.916 90.037,130.037 92.916,127.513 96.320 C 126.420 97.794,125.162 99.000,124.717 99.000 C 123.666 99.000,119.000 103.666,119.000 104.717 C 119.000 105.162,117.794 106.420,116.320 107.513 C 112.916 110.037,110.037 112.916,107.513 116.320 C 106.420 117.794,105.162 119.000,104.717 119.000 C 104.273 119.000,102.805 120.105,101.455 121.455 C 100.105 122.805,99.000 124.273,99.000 124.717 C 99.000 125.162,97.794 126.420,96.320 127.513 C 92.916 130.037,90.037 132.916,87.513 136.320 C 86.420 137.794,85.162 139.000,84.717 139.000 C 83.666 139.000,79.000 143.666,79.000 144.717 C 79.000 145.162,77.794 146.420,76.320 147.513 C 72.916 150.037,70.037 152.916,67.513 156.320 C 66.420 157.794,65.162 159.000,64.717 159.000 C 63.666 159.000,59.000 163.666,59.000 164.717 C 59.000 165.162,57.794 166.420,56.320 167.513 C 52.916 170.037,50.037 172.916,47.513 176.320 C 46.420 177.794,45.162 179.000,44.717 179.000 C 43.666 179.000,39.000 183.666,39.000 184.717 C 39.000 185.162,37.846 186.392,36.437 187.450 C 30.012 192.275,30.000 192.298,30.000 200.130 C 30.000 206.900,30.217 207.688,32.563 209.450 C 36.703 212.559,39.000 214.687,39.000 215.413 C 39.000 216.368,43.740 221.000,44.717 221.000 C 45.162 221.000,46.420 222.206,47.513 223.680 C 50.037 227.084,52.916 229.963,56.320 232.487 C 57.794 233.580,59.000 234.838,59.000 235.283 C 59.000 236.334,63.666 241.000,64.717 241.000 C 65.162 241.000,66.420 242.206,67.513 243.680 C 70.037 247.084,72.916 249.963,76.320 252.487 C 77.794 253.580,79.000 254.838,79.000 255.283 C 79.000 256.334,83.666 261.000,84.717 261.000 C 85.162 261.000,86.420 262.206,87.513 263.680 C 90.037 267.084,92.916 269.963,96.320 272.487 C 97.794 273.580,99.000 274.838,99.000 275.283 C 99.000 276.334,103.666 281.000,104.717 281.000 C 105.162 281.000,106.420 282.206,107.513 283.680 C 110.037 287.084,112.916 289.963,116.320 292.487 C 117.794 293.580,119.000 294.838,119.000 295.283 C 119.000 296.334,123.666 301.000,124.717 301.000 C 125.162 301.000,126.420 302.206,127.513 303.680 C 130.037 307.084,132.916 309.963,136.320 312.487 C 137.794 313.580,139.000 314.838,139.000 315.283 C 139.000 316.334,143.666 321.000,144.717 321.000 C 145.162 321.000,146.420 322.206,147.513 323.680 C 150.037 327.084,152.916 329.963,156.320 332.487 C 157.794 333.580,159.000 334.838,159.000 335.283 C 159.000 336.334,163.666 341.000,164.717 341.000 C 165.162 341.000,166.420 342.206,167.513 343.680 C 170.037 347.084,172.916 349.963,176.320 352.487 C 177.794 353.580,179.000 354.838,179.000 355.283 C 179.000 356.260,183.632 361.000,184.587 361.000 C 185.313 361.000,187.441 363.297,190.550 367.437 C 194.558 372.774,212.000 370.016,212.000 364.045 C 212.000 363.470,212.450 363.000,213.000 363.000 C 213.550 363.000,214.000 361.650,214.000 360.000 C 214.000 358.000,214.500 357.000,215.500 357.000 C 216.814 357.000,217.000 350.437,217.000 303.929 C 217.000 245.255,216.683 248.000,223.457 248.000 C 226.885 248.000,229.980 250.923,288.049 309.000 L 349.040 370.000 355.638 370.000 C 363.233 370.000,370.000 365.109,370.000 359.618 C 370.000 358.178,370.450 357.000,371.000 357.000 C 371.662 357.000,372.000 304.500,372.000 201.500 C 372.000 98.500,371.662 46.000,371.000 46.000 C 370.450 46.000,370.000 44.650,370.000 42.999 C 370.000 37.026,363.091 32.000,354.879 32.000 C 350.960 32.000,348.000 32.430,348.000 33.000 C 348.000 33.550,347.336 34.000,346.524 34.000 C 345.711 34.000,318.499 60.550,286.051 93.000 C 229.914 149.140,226.880 152.000,223.456 152.000 C 216.683 152.000,217.000 154.744,217.000 96.071 C 217.000 49.563,216.814 43.000,215.500 43.000 C 214.556 43.000,214.000 42.048,214.000 40.429 C 214.000 39.014,213.438 37.289,212.750 36.594 C 212.063 35.899,210.606 34.131,209.513 32.665 C 206.547 28.687,193.513 28.618,190.550 32.563 ',
            height: 28,
            width: 28,
            viewBox: '20 0 430 400'
        },

        eventConditionalCatch: {
            icon: 'M26.200 18.058 C 19.714 21.299,16.287 24.682,12.702 31.384 L 10.500 35.500 10.500 229.500 L 10.500 423.500 12.702 427.616 C 16.287 434.318,19.714 437.701,26.200 440.942 L 32.319 444.000 199.500 444.000 L 366.681 444.000 372.800 440.942 C 379.286 437.701,382.713 434.318,386.298 427.616 L 388.500 423.500 388.500 229.500 L 388.500 35.500 386.298 31.384 C 382.713 24.682,379.286 21.299,372.800 18.058 L 366.681 15.000 199.500 15.000 L 32.319 15.000 26.200 18.058 M343.631 52.214 C 347.508 54.337,351.755 59.279,352.750 62.827 C 353.730 66.320,353.730 392.680,352.750 396.173 C 351.755 399.721,347.508 404.663,343.631 406.786 C 340.294 408.613,64.222 409.544,57.827 407.750 C 54.279 406.755,49.337 402.508,47.214 398.631 C 45.461 395.429,43.852 81.376,45.516 67.300 C 46.478 59.171,51.853 52.728,59.123 50.993 C 66.748 49.174,340.221 50.347,343.631 52.214 M72.750 94.080 C 69.985 95.690,70.145 116.472,72.934 117.965 C 75.906 119.555,319.207 119.393,320.800 117.800 C 321.582 117.018,322.000 112.911,322.000 106.000 C 322.000 99.089,321.582 94.982,320.800 94.200 C 319.221 92.621,75.457 92.503,72.750 94.080 M72.750 157.080 C 71.258 157.949,71.000 159.659,71.000 168.689 C 71.000 177.602,71.277 179.490,72.750 180.608 C 75.198 182.466,318.945 182.655,320.800 180.800 C 321.582 180.018,322.000 175.911,322.000 169.000 C 322.000 162.089,321.582 157.982,320.800 157.200 C 319.221 155.621,75.457 155.503,72.750 157.080 M72.750 220.080 C 69.991 221.687,70.150 241.475,72.934 242.965 C 75.906 244.555,319.207 244.393,320.800 242.800 C 322.440 241.160,322.440 221.840,320.800 220.200 C 319.221 218.621,75.457 218.503,72.750 220.080 M72.750 281.893 C 70.020 284.661,70.171 303.486,72.934 304.965 C 75.906 306.555,319.207 306.393,320.800 304.800 C 322.522 303.078,322.363 284.062,320.608 281.750 C 318.531 279.014,75.451 279.154,72.750 281.893 M72.750 344.392 C 69.999 346.480,70.155 366.478,72.934 367.965 C 75.906 369.555,319.207 369.393,320.800 367.800 C 321.582 367.018,322.000 362.911,322.000 356.000 C 322.000 349.089,321.582 344.982,320.800 344.200 C 318.945 342.345,75.198 342.534,72.750 344.392 ',
            height: 25,
            width: 25,
            viewBox: '8 0 380 460'
        },

        eventLinkCatch: {
            icon: 'M15 5.829l6.171 6.171-6.171 6.171v-3.171h-13v-6h13v-3.171zm-2-4.829v6h-13v10h13v6l11-11-11-11z',
            height: 24,
            width: 25,
            viewBox: '0 0 23 24'
        },

        eventLinkThrow: {
            icon: 'M13 7v-6l11 11-11 11v-6h-13v-10z',
            height: 24,
            width: 25,
            viewBox: '0 0 23 24'
        },

        eventMultipleCatch: {
            icon: 'M195.021 46.739 C 192.880 47.579,184.480 53.580,177.700 59.111 C 175.940 60.548,173.150 62.469,171.500 63.381 C 169.850 64.293,166.475 66.602,164.000 68.511 C 161.525 70.420,158.375 72.767,157.000 73.727 C 154.657 75.363,144.319 83.016,138.396 87.500 C 136.943 88.600,134.766 90.175,133.558 91.000 C 121.584 99.177,114.556 104.301,112.515 106.342 C 111.603 107.254,110.526 108.000,110.122 108.000 C 109.718 108.000,105.947 110.588,101.742 113.750 C 97.538 116.912,91.828 121.075,89.054 123.000 C 81.504 128.240,74.808 133.284,72.793 135.250 C 71.807 136.213,70.637 137.000,70.194 137.000 C 69.750 137.000,65.929 139.588,61.703 142.750 C 57.476 145.912,52.882 149.314,51.494 150.308 C 45.105 154.884,43.871 163.669,48.268 173.273 C 49.605 176.195,51.034 180.366,51.442 182.541 C 51.850 184.717,53.210 188.973,54.464 191.999 C 55.719 195.024,57.066 199.284,57.458 201.465 C 57.851 203.646,58.879 206.796,59.743 208.465 C 60.608 210.134,62.112 214.425,63.087 218.000 C 65.199 225.748,68.396 235.539,71.155 242.712 C 72.257 245.578,73.796 250.653,74.574 253.989 C 75.353 257.325,76.626 261.055,77.403 262.277 C 78.181 263.500,79.349 267.200,80.000 270.500 C 80.651 273.800,81.819 277.500,82.597 278.723 C 83.374 279.945,84.656 283.545,85.445 286.723 C 86.942 292.748,90.537 303.903,94.558 315.000 C 95.854 318.575,97.213 323.075,97.578 325.000 C 98.645 330.620,102.937 337.076,106.633 338.620 C 111.803 340.780,287.186 340.656,292.373 338.489 C 296.562 336.738,300.977 328.354,303.014 318.283 C 303.657 315.102,304.821 311.497,305.601 310.270 C 306.381 309.044,307.717 305.032,308.570 301.354 C 309.423 297.676,310.718 293.504,311.447 292.083 C 312.176 290.663,313.510 286.608,314.411 283.073 C 315.312 279.538,316.547 276.046,317.155 275.313 C 317.763 274.580,319.072 270.722,320.063 266.740 C 321.853 259.551,324.122 252.475,328.639 240.000 C 329.933 236.425,331.452 231.334,332.014 228.687 C 332.577 226.039,333.704 222.854,334.521 221.609 C 335.337 220.364,336.488 216.680,337.079 213.422 C 337.670 210.165,338.803 206.490,339.596 205.256 C 340.389 204.022,341.735 200.197,342.587 196.756 C 343.438 193.315,344.965 188.250,345.979 185.500 C 355.252 160.349,355.087 155.877,344.613 148.500 C 343.052 147.400,339.687 145.032,337.137 143.238 C 328.197 136.950,325.463 134.961,321.000 131.500 C 318.525 129.580,314.925 126.898,313.000 125.539 C 311.075 124.180,307.700 121.725,305.500 120.083 C 303.300 118.441,297.900 114.585,293.500 111.514 C 289.100 108.444,283.700 104.582,281.500 102.932 C 279.300 101.282,275.925 98.820,274.000 97.461 C 272.075 96.102,268.475 93.420,266.000 91.500 C 259.927 86.790,254.484 82.937,250.260 80.359 C 248.331 79.181,246.471 77.829,246.126 77.353 C 245.389 76.336,239.201 71.633,233.516 67.771 C 231.307 66.270,227.925 63.906,226.000 62.517 C 202.767 45.758,200.482 44.595,195.021 46.739 M207.602 74.382 C 210.296 76.366,214.075 79.101,216.000 80.460 C 217.925 81.819,221.300 84.286,223.500 85.941 C 225.700 87.597,229.075 90.089,231.000 91.481 C 232.925 92.872,236.525 95.575,239.000 97.487 C 241.475 99.400,245.188 101.882,247.250 103.003 C 249.313 104.124,251.021 105.369,251.047 105.770 C 251.073 106.172,253.366 108.075,256.144 110.000 C 266.050 116.865,284.096 129.921,290.007 134.500 C 292.137 136.150,295.370 138.539,297.190 139.809 C 308.317 147.570,314.755 152.296,319.359 156.084 C 321.087 157.505,323.977 159.523,325.782 160.569 C 330.001 163.011,331.267 167.206,329.233 172.000 C 328.417 173.925,326.717 178.875,325.456 183.000 C 323.293 190.075,322.228 193.361,318.406 204.750 C 317.530 207.363,316.168 211.525,315.380 214.000 C 314.593 216.475,313.236 220.525,312.367 223.000 C 311.497 225.475,309.962 230.504,308.957 234.176 C 307.951 237.848,306.424 242.213,305.564 243.876 C 304.704 245.539,303.495 249.285,302.877 252.200 C 302.259 255.115,300.964 259.075,300.000 261.000 C 299.036 262.925,297.741 266.885,297.123 269.800 C 296.505 272.715,295.322 276.410,294.495 278.010 C 293.667 279.611,292.290 283.939,291.434 287.628 C 290.579 291.317,289.235 295.254,288.448 296.377 C 287.662 297.500,286.521 300.948,285.912 304.039 C 285.304 307.130,283.611 311.874,282.150 314.580 L 279.492 319.500 200.996 319.762 C 108.641 320.069,116.712 321.201,113.822 307.537 C 113.236 304.767,112.073 301.163,111.238 299.528 C 110.403 297.893,109.087 293.846,108.314 290.533 C 107.541 287.220,106.237 283.485,105.416 282.232 C 104.595 280.979,103.450 277.391,102.871 274.259 C 102.292 271.126,100.996 266.953,99.992 264.985 C 98.988 263.017,97.847 259.628,97.456 257.453 C 97.065 255.279,95.719 251.024,94.464 247.999 C 93.210 244.973,91.857 240.698,91.457 238.499 C 91.057 236.299,89.877 232.805,88.836 230.733 C 87.794 228.661,86.497 224.621,85.954 221.756 C 85.410 218.891,84.132 214.947,83.113 212.991 C 82.093 211.036,80.740 207.016,80.106 204.059 C 79.472 201.102,78.080 196.709,77.014 194.298 C 75.947 191.887,74.775 188.246,74.410 186.207 C 74.044 184.168,72.677 179.926,71.373 176.780 C 67.292 166.943,67.900 164.016,75.093 158.864 C 78.443 156.464,82.917 153.150,85.033 151.500 C 87.149 149.850,90.370 147.482,92.190 146.237 C 96.985 142.960,106.175 136.390,108.500 134.577 C 109.600 133.720,112.525 131.561,115.000 129.780 C 117.475 128.000,120.850 125.534,122.500 124.300 C 124.150 123.067,127.075 120.935,129.000 119.563 C 130.925 118.191,134.300 115.714,136.500 114.059 C 138.700 112.403,142.075 109.928,144.000 108.559 C 145.925 107.189,149.300 104.731,151.500 103.097 C 153.700 101.463,159.213 97.568,163.750 94.441 C 168.287 91.315,172.000 88.392,172.000 87.946 C 172.000 87.500,172.821 86.874,173.824 86.556 C 174.827 86.238,176.546 85.140,177.645 84.116 C 178.743 83.093,181.410 81.072,183.571 79.626 C 185.732 78.179,189.082 75.933,191.015 74.634 C 192.948 73.335,195.109 71.574,195.817 70.721 C 197.567 68.612,201.371 69.794,207.602 74.382 ',
            height: 32,
            width: 32,
            viewBox: '0 15 400 383'
        },

        eventMultipleThrow: {
            icon: 'M195.021 46.739 C 192.880 47.579,184.480 53.580,177.700 59.111 C 175.940 60.548,173.150 62.469,171.500 63.381 C 169.850 64.293,166.475 66.602,164.000 68.511 C 161.525 70.420,158.375 72.767,157.000 73.727 C 154.657 75.363,144.319 83.016,138.396 87.500 C 136.943 88.600,134.766 90.175,133.558 91.000 C 121.584 99.177,114.556 104.301,112.515 106.342 C 111.603 107.254,110.526 108.000,110.122 108.000 C 109.718 108.000,105.947 110.588,101.742 113.750 C 97.538 116.912,91.828 121.075,89.054 123.000 C 81.504 128.240,74.808 133.284,72.793 135.250 C 71.807 136.213,70.637 137.000,70.194 137.000 C 69.750 137.000,65.929 139.588,61.703 142.750 C 57.476 145.912,52.882 149.314,51.494 150.308 C 45.105 154.884,43.871 163.669,48.268 173.273 C 49.605 176.195,51.034 180.366,51.442 182.541 C 51.850 184.717,53.210 188.973,54.464 191.999 C 55.719 195.024,57.066 199.284,57.458 201.465 C 57.851 203.646,58.879 206.796,59.743 208.465 C 60.608 210.134,62.112 214.425,63.087 218.000 C 65.199 225.748,68.396 235.539,71.155 242.712 C 72.257 245.578,73.796 250.653,74.574 253.989 C 75.353 257.325,76.626 261.055,77.403 262.277 C 78.181 263.500,79.349 267.200,80.000 270.500 C 80.651 273.800,81.819 277.500,82.597 278.723 C 83.374 279.945,84.656 283.545,85.445 286.723 C 86.942 292.748,90.537 303.903,94.558 315.000 C 95.854 318.575,97.213 323.075,97.578 325.000 C 98.645 330.620,102.937 337.076,106.633 338.620 C 111.803 340.780,287.186 340.656,292.373 338.489 C 296.562 336.738,300.977 328.354,303.014 318.283 C 303.657 315.102,304.821 311.497,305.601 310.270 C 306.381 309.044,307.717 305.032,308.570 301.354 C 309.423 297.676,310.718 293.504,311.447 292.083 C 312.176 290.663,313.510 286.608,314.411 283.073 C 315.312 279.538,316.547 276.046,317.155 275.313 C 317.763 274.580,319.072 270.722,320.063 266.740 C 321.853 259.551,324.122 252.475,328.639 240.000 C 329.933 236.425,331.452 231.334,332.014 228.687 C 332.577 226.039,333.704 222.854,334.521 221.609 C 335.337 220.364,336.488 216.680,337.079 213.422 C 337.670 210.165,338.803 206.490,339.596 205.256 C 340.389 204.022,341.735 200.197,342.587 196.756 C 343.438 193.315,344.965 188.250,345.979 185.500 C 355.252 160.349,355.087 155.877,344.613 148.500 C 343.052 147.400,339.687 145.032,337.137 143.238 C 328.197 136.950,325.463 134.961,321.000 131.500 C 318.525 129.580,314.925 126.898,313.000 125.539 C 311.075 124.180,307.700 121.725,305.500 120.083 C 303.300 118.441,297.900 114.585,293.500 111.514 C 289.100 108.444,283.700 104.582,281.500 102.932 C 279.300 101.282,275.925 98.820,274.000 97.461 C 272.075 96.102,268.475 93.420,266.000 91.500 C 259.927 86.790,254.484 82.937,250.260 80.359 C 248.331 79.181,246.471 77.829,246.126 77.353 C 245.389 76.336,239.201 71.633,233.516 67.771 C 231.307 66.270,227.925 63.906,226.000 62.517 C 202.767 45.758,200.482 44.595,195.021 46.739 ',
            height: 32,
            width: 32,
            viewBox: '0 15 400 383'
        },

        eventParallelMultipleCatch: {
            icon: 'M161.044 7.381 C 153.408 10.182,153.732 6.710,153.697 86.294 C 153.675 135.999,153.344 157.289,152.583 157.762 C 151.987 158.133,121.270 158.450,84.323 158.468 C 8.709 158.504,13.068 158.055,10.347 166.094 C 8.084 172.779,8.689 229.428,11.080 234.676 C 14.242 241.617,11.253 241.343,85.000 241.458 C 121.575 241.515,151.996 241.871,152.602 242.248 C 153.388 242.738,153.699 263.223,153.687 313.718 C 153.667 393.348,153.291 389.299,160.982 392.376 C 166.618 394.631,224.137 394.805,229.454 392.584 C 236.893 389.476,236.480 393.950,236.668 314.332 C 236.760 275.141,237.054 242.721,237.322 242.288 C 237.590 241.855,269.689 241.557,308.654 241.628 C 387.381 241.769,385.240 241.942,389.272 235.117 C 391.512 231.324,391.897 168.331,389.706 164.000 C 386.876 158.405,388.699 158.532,310.302 158.483 C 270.593 158.458,237.817 158.150,237.465 157.799 C 237.114 157.447,236.753 125.061,236.663 85.830 C 236.480 5.838,236.957 10.800,229.154 7.678 C 224.118 5.663,166.412 5.411,161.044 7.381 M217.611 97.416 C 217.731 174.461,217.572 172.112,222.915 175.743 C 225.314 177.374,230.669 177.514,297.500 177.701 C 337.100 177.812,370.063 177.924,370.750 177.951 C 371.711 177.989,372.000 183.093,372.000 200.000 C 372.000 216.903,371.710 222.013,370.750 222.058 C 370.063 222.089,337.550 222.143,298.500 222.178 C 221.951 222.245,223.086 222.168,219.558 227.552 C 217.802 230.231,217.701 234.090,217.603 302.337 L 217.500 374.297 196.500 374.429 C 184.950 374.501,174.938 374.386,174.250 374.173 C 173.266 373.869,172.988 358.845,172.944 303.643 C 172.883 228.220,172.899 228.467,167.677 224.594 C 164.881 222.520,164.196 222.499,97.384 222.374 C 60.277 222.305,29.674 222.008,29.379 221.713 C 28.682 221.015,28.677 178.989,29.375 178.292 C 29.667 178.000,60.209 177.702,97.247 177.630 C 160.664 177.508,164.751 177.393,167.378 175.672 C 173.100 171.923,173.000 173.330,173.000 96.615 C 173.000 50.594,173.346 26.051,173.999 25.833 C 174.548 25.650,184.561 25.549,196.249 25.610 L 217.500 25.720 217.611 97.416 ',
            height: 31,
            width: 31,
            viewBox: '0 0 400 400'
        },

        eventSignalCatch: {
            icon: 'M12 5.887l8.468 14.113h-16.936l8.468-14.113zm0-3.887l-12 20h24l-12-20z',
            height: 28,
            width: 28,
            viewBox: '-2 1 28 28'
        },

        eventSignalThrow: {
            icon: 'M24 22h-24l12-20z',
            height: 28,
            width: 28,
            viewBox: '-2 1 28 28'
        },

        eventTimerCatch: {
            icon: 'M1024 544v448q0 14-9 23t-23 9h-320q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h224v-352q0-14 9-23t23-9h64q14 0 23 9t9 23zm416 352q0-148-73-273t-198-198-273-73-273 73-198 198-73 273 73 273 198 198 273 73 273-73 198-198 73-273zm224 0q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z',
            height: 30,
            width: 30,
            viewBox: '0 0 1792 1792'
        },

        eventErrorCatch: {
            icon: 'M346.000 32.867 C 343.581 33.533,340.017 38.321,329.544 54.978 C 327.368 58.438,325.093 61.771,324.488 62.385 C 323.883 62.998,323.085 64.175,322.715 65.000 C 322.345 65.825,320.913 68.300,319.532 70.500 C 318.151 72.700,316.613 75.418,316.115 76.541 C 315.616 77.664,314.486 79.181,313.604 79.914 C 312.722 80.646,312.000 81.810,312.000 82.500 C 312.000 83.190,311.278 84.354,310.396 85.086 C 309.514 85.819,308.369 87.336,307.853 88.459 C 306.701 90.964,305.332 93.208,301.480 98.910 C 295.548 107.687,295.015 108.533,294.077 110.653 C 293.552 111.837,292.674 113.083,292.125 113.423 C 291.576 113.762,290.506 115.268,289.747 116.770 C 287.101 122.008,285.491 124.506,284.250 125.300 C 283.563 125.740,283.000 126.507,283.000 127.005 C 283.000 127.866,279.099 134.215,277.086 136.631 C 276.568 137.253,274.953 140.039,273.498 142.822 C 272.042 145.605,270.548 148.022,270.176 148.191 C 269.405 148.544,264.000 156.680,264.000 157.489 C 264.000 157.781,262.425 160.261,260.500 163.000 C 258.575 165.739,257.000 168.204,257.000 168.478 C 257.000 168.753,256.212 169.896,255.250 171.019 C 254.287 172.143,252.592 174.735,251.483 176.781 C 248.481 182.315,242.624 191.000,241.894 191.000 C 241.543 191.000,239.736 188.468,237.878 185.373 C 236.020 182.279,233.825 178.977,233.000 178.036 C 231.014 175.770,229.350 173.202,227.309 169.250 C 226.385 167.463,225.263 166.000,224.815 166.000 C 224.367 166.000,224.000 165.579,224.000 165.064 C 224.000 164.090,214.651 149.482,211.058 144.842 C 209.926 143.380,209.000 141.692,209.000 141.092 C 209.000 140.491,208.601 140.000,208.114 140.000 C 207.627 140.000,206.489 138.537,205.586 136.750 C 203.284 132.191,201.946 130.085,198.445 125.500 C 196.765 123.300,194.104 119.250,192.532 116.500 C 190.960 113.750,189.394 111.275,189.052 111.000 C 188.205 110.318,180.817 99.092,179.185 96.007 C 178.460 94.635,176.659 91.935,175.183 90.007 C 173.707 88.078,171.674 84.967,170.664 83.093 C 169.654 81.220,167.177 77.395,165.159 74.593 C 160.779 68.512,159.526 66.542,157.309 62.250 C 156.385 60.463,155.263 59.000,154.815 59.000 C 154.367 59.000,154.000 58.372,154.000 57.604 C 154.000 55.148,147.182 50.000,143.930 50.000 C 140.776 50.000,136.000 52.538,136.000 54.214 C 136.000 54.755,135.349 56.616,134.553 58.349 C 132.835 62.089,129.158 72.271,127.998 76.500 C 127.044 79.979,125.084 85.621,123.829 88.500 C 122.495 91.560,117.984 104.126,117.009 107.500 C 116.532 109.150,114.286 115.675,112.019 122.000 C 109.752 128.325,106.301 138.225,104.351 144.000 C 102.401 149.775,100.459 154.950,100.037 155.500 C 99.614 156.050,99.023 157.625,98.723 159.000 C 98.077 161.962,91.358 181.623,90.009 184.500 C 88.914 186.834,85.288 197.158,84.039 201.500 C 82.815 205.754,80.963 210.821,78.834 215.739 C 77.825 218.071,77.000 220.646,77.000 221.462 C 77.000 222.279,76.157 224.871,75.126 227.223 C 73.080 231.891,71.298 236.829,69.974 241.500 C 69.506 243.150,67.939 247.650,66.491 251.500 C 65.044 255.350,62.517 262.533,60.876 267.463 C 59.235 272.392,57.315 277.792,56.611 279.463 C 55.207 282.790,54.398 285.093,49.924 298.500 C 48.272 303.450,46.505 308.400,45.996 309.500 C 44.935 311.794,41.419 321.831,39.866 327.000 C 39.287 328.925,38.406 330.928,37.907 331.450 C 37.408 331.972,37.000 333.453,37.000 334.740 C 37.000 336.027,36.100 338.844,35.000 341.000 C 33.900 343.156,32.997 345.726,32.993 346.710 C 32.990 347.695,32.093 349.850,31.000 351.500 C 26.628 358.102,29.334 366.612,36.366 368.377 C 39.493 369.162,45.570 364.274,47.647 359.303 C 48.389 357.527,50.246 354.595,51.774 352.787 C 53.302 350.979,55.146 348.324,55.872 346.886 C 56.598 345.448,58.274 343.106,59.596 341.680 C 60.918 340.254,62.000 338.771,62.000 338.385 C 62.000 337.998,63.800 335.298,66.000 332.384 C 68.200 329.470,70.000 326.809,70.000 326.471 C 70.000 326.134,70.563 325.269,71.250 324.551 C 72.479 323.267,73.346 322.067,76.776 316.905 C 77.724 315.477,80.300 311.704,82.500 308.520 C 84.700 305.335,86.950 302.028,87.500 301.170 C 88.050 300.311,89.282 298.718,90.239 297.628 C 91.195 296.539,92.238 294.827,92.556 293.824 C 92.874 292.821,93.554 292.000,94.067 292.000 C 94.580 292.000,95.000 291.475,95.000 290.834 C 95.000 290.193,95.680 288.955,96.512 288.084 C 98.478 286.025,104.826 276.934,105.649 275.000 C 105.999 274.175,107.918 271.475,109.912 269.000 C 111.906 266.525,114.429 262.757,115.518 260.628 C 116.608 258.498,118.287 256.252,119.250 255.637 C 120.212 255.022,121.000 253.765,121.000 252.843 C 121.000 251.921,121.356 251.017,121.790 250.833 C 122.225 250.650,124.137 248.250,126.040 245.500 C 127.943 242.750,129.726 240.275,130.002 240.000 C 131.470 238.536,139.000 226.794,139.000 225.969 C 139.000 225.436,139.406 225.000,139.901 225.000 C 140.397 225.000,141.737 223.538,142.878 221.750 C 144.020 219.963,145.527 217.600,146.227 216.500 C 146.927 215.400,147.759 214.275,148.075 214.000 C 148.392 213.725,149.501 212.037,150.541 210.250 C 151.581 208.463,152.784 207.000,153.216 207.000 C 153.647 207.000,154.000 206.148,154.000 205.107 C 154.000 204.066,154.679 202.953,155.509 202.635 C 156.338 202.317,157.541 200.907,158.181 199.502 C 160.128 195.228,160.997 196.341,171.050 216.000 C 172.315 218.475,173.645 220.725,174.004 221.000 C 174.363 221.275,175.360 222.850,176.221 224.500 C 177.081 226.150,180.356 232.225,183.500 238.000 C 186.644 243.775,189.919 249.850,190.779 251.500 C 191.640 253.150,192.637 254.725,192.996 255.000 C 193.355 255.275,194.685 257.525,195.950 260.000 C 197.216 262.475,198.687 265.349,199.220 266.387 C 199.752 267.425,201.112 269.900,202.241 271.887 C 203.371 273.874,205.641 277.975,207.287 281.000 C 208.934 284.025,210.892 287.210,211.640 288.079 C 212.388 288.947,213.000 290.377,213.000 291.257 C 213.000 292.137,213.586 293.452,214.302 294.179 C 215.018 294.905,216.674 297.750,217.983 300.500 C 219.291 303.250,220.670 305.725,221.047 306.000 C 221.423 306.275,222.804 308.492,224.116 310.927 C 225.427 313.361,228.140 318.311,230.145 321.927 C 232.150 325.542,234.516 329.850,235.403 331.500 C 236.291 333.150,238.599 337.200,240.534 340.500 C 242.468 343.800,244.720 348.075,245.539 350.000 C 252.013 365.222,263.811 358.118,268.482 336.183 C 268.871 334.358,269.818 331.658,270.588 330.183 C 271.358 328.707,271.990 326.352,271.994 324.950 C 271.997 323.547,272.403 321.972,272.895 321.450 C 273.387 320.927,274.236 318.475,274.782 316.000 C 275.328 313.525,276.542 309.250,277.480 306.500 C 280.263 298.336,280.977 296.049,284.500 284.000 C 286.350 277.675,288.315 271.150,288.868 269.500 C 289.420 267.850,290.310 264.925,290.846 263.000 C 291.381 261.075,292.281 258.150,292.846 256.500 C 293.411 254.850,294.651 250.800,295.602 247.500 C 296.553 244.200,298.105 239.025,299.050 236.000 C 301.540 228.032,304.470 218.380,306.488 211.500 C 309.755 200.364,312.249 192.525,314.129 187.481 C 315.158 184.720,316.000 181.509,316.000 180.345 C 316.000 179.181,316.672 176.940,317.494 175.364 C 318.315 173.789,318.990 171.353,318.994 169.950 C 318.997 168.548,319.372 166.973,319.826 166.450 C 320.280 165.928,321.230 163.475,321.935 161.000 C 322.641 158.525,324.019 154.025,324.998 151.000 C 325.977 147.975,327.564 142.800,328.525 139.500 C 331.717 128.536,334.140 120.535,335.185 117.500 C 335.754 115.850,336.672 112.700,337.225 110.500 C 337.778 108.300,338.854 105.022,339.615 103.216 C 340.377 101.410,341.000 99.169,341.000 98.235 C 341.000 97.302,341.863 94.280,342.919 91.519 C 343.974 88.759,346.490 80.650,348.510 73.500 C 350.530 66.350,353.042 58.241,354.091 55.481 C 355.141 52.720,356.000 49.704,356.000 48.778 C 356.000 47.852,356.522 45.948,357.160 44.548 C 358.263 42.127,356.830 34.585,355.073 33.567 C 353.518 32.666,348.218 32.257,346.000 32.867 M150.295 83.855 C 152.308 87.837,154.428 91.439,155.090 92.000 C 155.414 92.275,157.844 95.875,160.490 100.000 C 169.023 113.304,169.491 113.986,170.098 113.993 C 170.427 113.997,171.508 115.800,172.500 118.000 C 173.492 120.200,174.685 122.000,175.152 122.000 C 175.618 122.000,176.000 122.483,176.000 123.074 C 176.000 123.665,178.475 127.721,181.500 132.087 C 184.525 136.454,187.000 140.401,187.000 140.858 C 187.000 141.316,187.900 142.505,189.000 143.500 C 190.100 144.495,191.000 145.915,191.000 146.655 C 191.000 147.395,191.399 148.000,191.886 148.000 C 192.373 148.000,193.531 149.463,194.459 151.250 C 197.322 156.765,198.392 158.460,201.595 162.549 C 203.297 164.722,205.976 168.750,207.547 171.500 C 209.118 174.250,210.651 176.725,210.954 177.000 C 212.074 178.019,220.000 190.089,220.004 190.781 C 220.007 191.177,221.793 193.853,223.974 196.730 C 226.155 199.606,228.806 203.656,229.867 205.730 C 236.785 219.260,247.029 219.268,253.933 205.750 C 254.706 204.238,255.712 203.000,256.169 203.000 C 256.626 203.000,257.000 202.138,257.000 201.083 C 257.000 200.029,257.337 199.017,257.750 198.833 C 258.685 198.418,264.000 191.353,264.000 190.526 C 264.000 190.192,264.840 188.700,265.866 187.210 C 267.373 185.022,277.764 168.909,283.752 159.473 C 284.441 158.388,285.407 156.582,285.898 155.459 C 286.390 154.336,287.514 152.819,288.396 152.086 C 289.278 151.354,290.000 150.135,290.000 149.378 C 290.000 148.620,290.399 148.000,290.886 148.000 C 291.373 148.000,292.518 146.537,293.431 144.750 C 294.343 142.963,295.964 140.150,297.033 138.500 C 298.102 136.850,299.740 134.037,300.673 132.250 C 301.607 130.463,302.748 129.000,303.210 129.000 C 303.672 129.000,304.508 127.987,305.068 126.750 C 306.495 123.596,308.432 120.319,310.089 118.257 C 310.865 117.291,312.063 115.487,312.750 114.250 C 321.539 98.430,321.812 101.189,313.962 126.500 C 312.939 129.800,311.126 135.650,309.933 139.500 C 308.740 143.350,307.142 148.315,306.382 150.533 C 305.622 152.752,304.985 155.452,304.966 156.533 C 304.947 157.615,304.063 160.300,303.000 162.500 C 301.937 164.700,301.053 167.354,301.034 168.397 C 301.015 169.441,300.155 172.816,299.123 175.897 C 294.996 188.212,293.990 191.563,293.995 192.981 C 293.998 193.795,293.141 196.720,292.090 199.481 C 291.040 202.241,289.185 207.875,287.968 212.000 C 286.752 216.125,285.156 221.525,284.424 224.000 C 281.047 235.402,278.649 242.898,276.900 247.519 C 275.855 250.280,275.000 253.491,275.000 254.655 C 275.000 255.819,274.328 258.060,273.506 259.636 C 272.685 261.211,272.010 263.458,272.006 264.628 C 272.003 265.798,271.257 268.498,270.349 270.628 C 269.441 272.758,268.351 276.075,267.927 278.000 C 267.503 279.925,266.450 283.525,265.588 286.000 C 262.582 294.633,257.000 313.279,257.000 314.689 C 257.000 316.293,253.196 325.000,252.495 325.000 C 252.245 325.000,251.121 323.313,249.997 321.250 C 248.872 319.188,246.829 315.700,245.455 313.500 C 244.081 311.300,242.699 308.825,242.383 308.000 C 241.441 305.543,240.984 304.603,239.707 302.500 C 239.039 301.400,236.501 296.900,234.068 292.500 C 231.634 288.100,229.309 284.270,228.901 283.990 C 228.493 283.709,227.848 282.243,227.469 280.731 C 227.089 279.218,226.371 277.730,225.874 277.422 C 225.377 277.115,224.289 275.432,223.458 273.682 C 222.626 271.932,220.398 267.800,218.507 264.500 C 215.260 258.835,209.640 248.575,203.973 237.972 C 202.584 235.371,200.958 232.626,200.361 231.872 C 199.763 231.117,197.131 226.450,194.510 221.500 C 187.900 209.012,184.709 203.557,183.787 203.167 C 183.354 202.983,183.000 201.971,183.000 200.917 C 183.000 199.862,182.559 199.000,182.019 199.000 C 181.480 199.000,180.736 197.762,180.367 196.250 C 179.997 194.738,178.864 192.427,177.848 191.115 C 176.831 189.803,176.000 188.264,176.000 187.694 C 176.000 187.124,175.375 185.947,174.612 185.079 C 173.848 184.210,172.049 181.228,170.612 178.451 C 165.381 168.337,154.723 169.373,149.430 180.511 C 148.643 182.166,146.874 184.734,145.500 186.217 C 144.125 187.700,143.000 189.161,143.000 189.464 C 143.000 189.973,136.575 199.500,128.139 211.500 C 126.206 214.250,122.797 219.200,120.564 222.500 C 118.330 225.800,116.244 228.725,115.926 229.000 C 115.609 229.275,114.499 230.963,113.459 232.750 C 112.419 234.538,111.216 236.000,110.784 236.000 C 110.353 236.000,110.000 236.525,110.000 237.166 C 110.000 237.807,109.304 239.045,108.453 239.916 C 107.146 241.255,104.174 245.573,99.500 252.927 C 98.950 253.792,97.038 256.376,95.250 258.668 C 93.463 260.961,92.000 263.076,92.000 263.368 C 92.000 264.546,85.794 273.000,84.929 273.000 C 84.418 273.000,84.000 273.694,84.000 274.542 C 84.000 275.390,83.557 276.628,83.015 277.292 C 80.417 280.478,77.205 284.849,74.968 288.243 C 70.596 294.874,70.181 293.765,73.566 284.500 C 74.973 280.650,76.485 276.150,76.927 274.500 C 77.369 272.850,78.413 269.925,79.247 268.000 C 80.081 266.075,81.530 262.025,82.467 259.000 C 83.403 255.975,84.521 252.600,84.951 251.500 C 85.381 250.400,86.175 248.375,86.717 247.000 C 88.162 243.329,89.788 238.594,93.070 228.500 C 94.679 223.550,96.431 218.600,96.963 217.500 C 98.092 215.164,101.233 206.229,104.170 197.000 C 105.308 193.425,106.882 189.035,107.669 187.245 C 108.455 185.454,109.710 182.079,110.457 179.745 C 112.276 174.062,114.046 169.167,115.665 165.349 C 116.399 163.616,117.000 161.659,117.000 161.000 C 117.000 160.341,117.646 158.384,118.436 156.651 C 119.226 154.918,120.318 151.925,120.863 150.000 C 121.408 148.075,123.235 142.900,124.923 138.500 C 126.611 134.100,127.994 129.933,127.996 129.239 C 127.998 128.546,128.825 126.071,129.834 123.739 C 131.769 119.269,132.270 117.872,137.093 103.500 C 138.755 98.550,140.763 93.082,141.557 91.349 C 142.351 89.616,143.000 87.689,143.000 87.067 C 143.000 79.989,147.369 78.066,150.295 83.855 ',
            height: 28,
            width: 28,
            viewBox: '-8 0 400 406'
        },

        eventErrorThrow: {
            icon: 'M346.000 32.867 C 343.581 33.533,340.017 38.321,329.544 54.978 C 327.368 58.438,325.093 61.771,324.488 62.385 C 323.883 62.998,323.085 64.175,322.715 65.000 C 322.345 65.825,320.913 68.300,319.532 70.500 C 318.151 72.700,316.613 75.418,316.115 76.541 C 315.616 77.664,314.486 79.181,313.604 79.914 C 312.722 80.646,312.000 81.810,312.000 82.500 C 312.000 83.190,311.278 84.354,310.396 85.086 C 309.514 85.819,308.369 87.336,307.853 88.459 C 306.701 90.964,305.332 93.208,301.480 98.910 C 295.548 107.687,295.015 108.533,294.077 110.653 C 293.552 111.837,292.674 113.083,292.125 113.423 C 291.576 113.762,290.506 115.268,289.747 116.770 C 287.101 122.008,285.491 124.506,284.250 125.300 C 283.563 125.740,283.000 126.507,283.000 127.005 C 283.000 127.866,279.099 134.215,277.086 136.631 C 276.568 137.253,274.953 140.039,273.498 142.822 C 272.042 145.605,270.548 148.022,270.176 148.191 C 269.405 148.544,264.000 156.680,264.000 157.489 C 264.000 157.781,262.425 160.261,260.500 163.000 C 258.575 165.739,257.000 168.204,257.000 168.478 C 257.000 168.753,256.212 169.896,255.250 171.019 C 254.287 172.143,252.592 174.735,251.483 176.781 C 248.481 182.315,242.624 191.000,241.894 191.000 C 241.543 191.000,239.736 188.468,237.878 185.373 C 236.020 182.279,233.825 178.977,233.000 178.036 C 231.014 175.770,229.350 173.202,227.309 169.250 C 226.385 167.463,225.263 166.000,224.815 166.000 C 224.367 166.000,224.000 165.579,224.000 165.064 C 224.000 164.090,214.651 149.482,211.058 144.842 C 209.926 143.380,209.000 141.692,209.000 141.092 C 209.000 140.491,208.601 140.000,208.114 140.000 C 207.627 140.000,206.489 138.537,205.586 136.750 C 203.284 132.191,201.946 130.085,198.445 125.500 C 196.765 123.300,194.104 119.250,192.532 116.500 C 190.960 113.750,189.394 111.275,189.052 111.000 C 188.205 110.318,180.817 99.092,179.185 96.007 C 178.460 94.635,176.659 91.935,175.183 90.007 C 173.707 88.078,171.674 84.967,170.664 83.093 C 169.654 81.220,167.177 77.395,165.159 74.593 C 160.779 68.512,159.526 66.542,157.309 62.250 C 156.385 60.463,155.263 59.000,154.815 59.000 C 154.367 59.000,154.000 58.372,154.000 57.604 C 154.000 55.148,147.182 50.000,143.930 50.000 C 140.776 50.000,136.000 52.538,136.000 54.214 C 136.000 54.755,135.349 56.616,134.553 58.349 C 132.835 62.089,129.158 72.271,127.998 76.500 C 127.044 79.979,125.084 85.621,123.829 88.500 C 122.495 91.560,117.984 104.126,117.009 107.500 C 116.532 109.150,114.286 115.675,112.019 122.000 C 109.752 128.325,106.301 138.225,104.351 144.000 C 102.401 149.775,100.459 154.950,100.037 155.500 C 99.614 156.050,99.023 157.625,98.723 159.000 C 98.077 161.962,91.358 181.623,90.009 184.500 C 88.914 186.834,85.288 197.158,84.039 201.500 C 82.815 205.754,80.963 210.821,78.834 215.739 C 77.825 218.071,77.000 220.646,77.000 221.462 C 77.000 222.279,76.157 224.871,75.126 227.223 C 73.080 231.891,71.298 236.829,69.974 241.500 C 69.506 243.150,67.939 247.650,66.491 251.500 C 65.044 255.350,62.517 262.533,60.876 267.463 C 59.235 272.392,57.315 277.792,56.611 279.463 C 55.207 282.790,54.398 285.093,49.924 298.500 C 48.272 303.450,46.505 308.400,45.996 309.500 C 44.935 311.794,41.419 321.831,39.866 327.000 C 39.287 328.925,38.406 330.928,37.907 331.450 C 37.408 331.972,37.000 333.453,37.000 334.740 C 37.000 336.027,36.100 338.844,35.000 341.000 C 33.900 343.156,32.997 345.726,32.993 346.710 C 32.990 347.695,32.093 349.850,31.000 351.500 C 26.628 358.102,29.334 366.612,36.366 368.377 C 39.493 369.162,45.570 364.274,47.647 359.303 C 48.389 357.527,50.246 354.595,51.774 352.787 C 53.302 350.979,55.146 348.324,55.872 346.886 C 56.598 345.448,58.274 343.106,59.596 341.680 C 60.918 340.254,62.000 338.771,62.000 338.385 C 62.000 337.998,63.800 335.298,66.000 332.384 C 68.200 329.470,70.000 326.809,70.000 326.471 C 70.000 326.134,70.563 325.269,71.250 324.551 C 72.479 323.267,73.346 322.067,76.776 316.905 C 77.724 315.477,80.300 311.704,82.500 308.520 C 84.700 305.335,86.950 302.028,87.500 301.170 C 88.050 300.311,89.282 298.718,90.239 297.628 C 91.195 296.539,92.238 294.827,92.556 293.824 C 92.874 292.821,93.554 292.000,94.067 292.000 C 94.580 292.000,95.000 291.475,95.000 290.834 C 95.000 290.193,95.680 288.955,96.512 288.084 C 98.478 286.025,104.826 276.934,105.649 275.000 C 105.999 274.175,107.918 271.475,109.912 269.000 C 111.906 266.525,114.429 262.757,115.518 260.628 C 116.608 258.498,118.287 256.252,119.250 255.637 C 120.212 255.022,121.000 253.765,121.000 252.843 C 121.000 251.921,121.356 251.017,121.790 250.833 C 122.225 250.650,124.137 248.250,126.040 245.500 C 127.943 242.750,129.726 240.275,130.002 240.000 C 131.470 238.536,139.000 226.794,139.000 225.969 C 139.000 225.436,139.406 225.000,139.901 225.000 C 140.397 225.000,141.737 223.538,142.878 221.750 C 144.020 219.963,145.527 217.600,146.227 216.500 C 146.927 215.400,147.759 214.275,148.075 214.000 C 148.392 213.725,149.501 212.037,150.541 210.250 C 151.581 208.463,152.784 207.000,153.216 207.000 C 153.647 207.000,154.000 206.148,154.000 205.107 C 154.000 204.066,154.679 202.953,155.509 202.635 C 156.338 202.317,157.541 200.907,158.181 199.502 C 160.128 195.228,160.997 196.341,171.050 216.000 C 172.315 218.475,173.645 220.725,174.004 221.000 C 174.363 221.275,175.360 222.850,176.221 224.500 C 177.081 226.150,180.356 232.225,183.500 238.000 C 186.644 243.775,189.919 249.850,190.779 251.500 C 191.640 253.150,192.637 254.725,192.996 255.000 C 193.355 255.275,194.685 257.525,195.950 260.000 C 197.216 262.475,198.687 265.349,199.220 266.387 C 199.752 267.425,201.112 269.900,202.241 271.887 C 203.371 273.874,205.641 277.975,207.287 281.000 C 208.934 284.025,210.892 287.210,211.640 288.079 C 212.388 288.947,213.000 290.377,213.000 291.257 C 213.000 292.137,213.586 293.452,214.302 294.179 C 215.018 294.905,216.674 297.750,217.983 300.500 C 219.291 303.250,220.670 305.725,221.047 306.000 C 221.423 306.275,222.804 308.492,224.116 310.927 C 225.427 313.361,228.140 318.311,230.145 321.927 C 232.150 325.542,234.516 329.850,235.403 331.500 C 236.291 333.150,238.599 337.200,240.534 340.500 C 242.468 343.800,244.720 348.075,245.539 350.000 C 252.013 365.222,263.811 358.118,268.482 336.183 C 268.871 334.358,269.818 331.658,270.588 330.183 C 271.358 328.707,271.990 326.352,271.994 324.950 C 271.997 323.547,272.403 321.972,272.895 321.450 C 273.387 320.927,274.236 318.475,274.782 316.000 C 275.328 313.525,276.542 309.250,277.480 306.500 C 280.263 298.336,280.977 296.049,284.500 284.000 C 286.350 277.675,288.315 271.150,288.868 269.500 C 289.420 267.850,290.310 264.925,290.846 263.000 C 291.381 261.075,292.281 258.150,292.846 256.500 C 293.411 254.850,294.651 250.800,295.602 247.500 C 296.553 244.200,298.105 239.025,299.050 236.000 C 301.540 228.032,304.470 218.380,306.488 211.500 C 309.755 200.364,312.249 192.525,314.129 187.481 C 315.158 184.720,316.000 181.509,316.000 180.345 C 316.000 179.181,316.672 176.940,317.494 175.364 C 318.315 173.789,318.990 171.353,318.994 169.950 C 318.997 168.548,319.372 166.973,319.826 166.450 C 320.280 165.928,321.230 163.475,321.935 161.000 C 322.641 158.525,324.019 154.025,324.998 151.000 C 325.977 147.975,327.564 142.800,328.525 139.500 C 331.717 128.536,334.140 120.535,335.185 117.500 C 335.754 115.850,336.672 112.700,337.225 110.500 C 337.778 108.300,338.854 105.022,339.615 103.216 C 340.377 101.410,341.000 99.169,341.000 98.235 C 341.000 97.302,341.863 94.280,342.919 91.519 C 343.974 88.759,346.490 80.650,348.510 73.500 C 350.530 66.350,353.042 58.241,354.091 55.481 C 355.141 52.720,356.000 49.704,356.000 48.778 C 356.000 47.852,356.522 45.948,357.160 44.548 C 358.263 42.127,356.830 34.585,355.073 33.567 C 353.518 32.666,348.218 32.257,346.000 32.867 ',
            height: 28,
            width: 28,
            viewBox: '-8 0 400 406'
        },

        eventEscalationCatch: {
            icon: 'M192.196 22.298 C 190.438 24.111,189.000 25.956,189.000 26.396 C 189.000 26.837,188.347 28.616,187.548 30.349 C 186.749 32.082,184.711 37.100,183.018 41.500 C 181.325 45.900,179.517 50.400,179.000 51.500 C 178.483 52.600,176.683 57.100,175.000 61.500 C 173.317 65.900,171.517 70.400,171.000 71.500 C 170.483 72.600,168.683 77.100,167.000 81.500 C 165.317 85.900,163.521 90.400,163.009 91.500 C 162.024 93.618,145.623 134.651,141.026 146.500 C 139.532 150.350,136.836 157.100,135.035 161.500 C 133.233 165.900,130.051 173.775,127.962 179.000 C 125.873 184.225,122.318 193.109,120.061 198.741 C 117.805 204.374,114.158 213.482,111.958 218.982 C 109.758 224.482,106.158 233.482,103.958 238.982 C 101.758 244.482,98.158 253.482,95.958 258.982 C 85.833 284.295,83.531 290.023,80.477 297.500 C 78.680 301.900,71.967 318.775,65.560 335.000 C 59.152 351.225,53.493 365.400,52.985 366.500 C 52.476 367.600,50.683 372.100,49.000 376.500 C 47.317 380.900,45.517 385.400,45.000 386.500 C 44.483 387.600,42.683 392.100,41.000 396.500 C 39.317 400.900,37.517 405.400,37.000 406.500 C 36.483 407.600,34.683 412.100,33.000 416.500 C 31.317 420.900,29.517 425.400,29.000 426.500 C 28.483 427.600,26.683 432.100,25.000 436.500 C 23.317 440.900,21.521 445.400,21.009 446.500 C 6.961 476.683,5.924 487.800,16.852 491.074 C 23.018 492.921,26.441 490.763,35.045 479.604 C 39.145 474.285,43.850 468.210,45.500 466.103 C 47.150 463.997,51.200 458.738,54.500 454.418 C 57.800 450.098,63.650 442.657,67.500 437.883 C 71.350 433.109,78.550 423.906,83.500 417.432 C 88.450 410.957,94.975 402.645,98.000 398.959 C 101.025 395.274,106.650 388.101,110.500 383.020 C 114.350 377.940,122.026 368.094,127.557 361.141 C 133.089 354.189,141.097 344.000,145.353 338.500 C 149.608 333.000,155.883 324.957,159.295 320.626 C 162.708 316.295,166.625 311.285,168.000 309.493 C 173.197 302.718,182.210 291.231,188.002 284.000 C 191.307 279.875,195.020 275.035,196.255 273.244 C 199.931 267.912,199.711 267.688,231.817 309.369 C 237.693 316.997,245.281 326.672,248.680 330.869 C 254.092 337.552,266.301 353.142,302.288 399.322 C 307.354 405.824,313.750 413.971,316.500 417.426 C 319.250 420.881,325.775 429.206,331.000 435.926 C 336.225 442.646,342.750 450.992,345.500 454.472 C 348.250 457.952,353.200 464.285,356.500 468.546 C 373.895 491.002,376.870 493.184,384.806 489.306 C 392.568 485.512,393.168 480.509,387.421 467.500 C 386.692 465.850,384.711 460.900,383.018 456.500 C 381.325 452.100,379.524 447.600,379.015 446.500 C 378.507 445.400,372.848 431.225,366.440 415.000 C 360.033 398.775,353.320 381.900,351.523 377.500 C 348.469 370.023,346.167 364.295,336.042 338.982 C 333.842 333.482,330.242 324.482,328.042 318.982 C 325.842 313.482,322.242 304.482,320.042 298.982 C 317.842 293.482,314.242 284.482,312.042 278.982 C 302.318 254.673,300.048 249.028,296.965 241.500 C 295.164 237.100,292.468 230.350,290.974 226.500 C 286.377 214.651,269.976 173.618,268.991 171.500 C 268.479 170.400,266.683 165.900,265.000 161.500 C 263.317 157.100,261.517 152.600,261.000 151.500 C 260.483 150.400,258.683 145.900,257.000 141.500 C 255.317 137.100,253.517 132.600,253.000 131.500 C 252.483 130.400,250.683 125.900,249.000 121.500 C 247.317 117.100,245.524 112.600,245.017 111.500 C 244.510 110.400,236.604 90.600,227.450 67.500 C 208.728 20.257,208.017 19.000,200.000 19.000 C 196.101 19.000,194.901 19.507,192.196 22.298 M202.697 67.750 C 203.350 69.263,205.273 74.100,206.972 78.500 C 208.670 82.900,210.483 87.400,211.000 88.500 C 211.517 89.600,213.317 94.100,215.000 98.500 C 216.683 102.900,218.476 107.400,218.985 108.500 C 219.493 109.600,225.152 123.775,231.560 140.000 C 237.967 156.225,244.680 173.100,246.477 177.500 C 248.274 181.900,251.543 190.000,253.741 195.500 C 259.788 210.631,265.287 224.377,269.848 235.759 C 272.109 241.401,275.758 250.518,277.958 256.018 C 280.158 261.518,283.758 270.518,285.958 276.018 C 288.158 281.518,291.758 290.518,293.958 296.018 C 296.158 301.518,299.738 310.401,301.914 315.759 C 306.855 327.928,311.454 339.428,315.007 348.500 C 320.993 363.783,328.115 381.606,328.992 383.500 C 336.071 398.787,336.464 407.013,329.648 397.250 C 328.208 395.188,324.436 390.253,321.265 386.284 C 318.094 382.316,311.923 374.441,307.551 368.784 C 303.179 363.128,295.304 353.078,290.051 346.451 C 284.798 339.825,277.125 329.981,273.000 324.576 C 268.875 319.171,263.409 312.208,260.853 309.101 C 258.297 305.995,251.875 297.839,246.581 290.977 C 208.120 241.124,206.249 239.000,200.789 239.000 C 194.197 239.000,192.804 240.406,169.000 271.059 C 163.775 277.787,157.250 286.119,154.500 289.574 C 151.750 293.029,145.354 301.176,140.288 307.678 C 119.678 334.125,92.612 368.783,89.168 373.135 C 87.151 375.685,81.450 382.973,76.500 389.331 C 63.559 405.954,61.565 403.835,71.011 383.500 C 71.522 382.400,73.317 377.900,75.000 373.500 C 76.683 369.100,78.483 364.600,79.000 363.500 C 79.517 362.400,81.317 357.900,83.000 353.500 C 84.683 349.100,86.483 344.600,87.000 343.500 C 87.517 342.400,89.317 337.900,91.000 333.500 C 92.683 329.100,94.479 324.600,94.991 323.500 C 95.893 321.561,111.459 282.656,116.996 268.500 C 120.586 259.323,125.174 247.855,130.197 235.500 C 132.433 230.000,136.063 221.000,138.263 215.500 C 140.463 210.000,144.063 201.000,146.263 195.500 C 148.463 190.000,152.013 181.116,154.152 175.759 C 156.291 170.401,159.842 161.518,162.042 156.018 C 164.242 150.518,167.795 141.626,169.939 136.259 C 175.790 121.606,181.345 107.761,186.290 95.500 C 188.731 89.450,192.477 80.119,194.614 74.764 C 198.733 64.445,200.581 62.841,202.697 67.750 ',
            height: 24,
            width: 24,
            viewBox: '0 15 400 500'
        },

        eventEscalationThrow: {
            icon: 'M192.196 22.298 C 190.438 24.111,189.000 25.956,189.000 26.396 C 189.000 26.837,188.347 28.616,187.548 30.349 C 186.749 32.082,184.711 37.100,183.018 41.500 C 181.325 45.900,179.517 50.400,179.000 51.500 C 178.483 52.600,176.683 57.100,175.000 61.500 C 173.317 65.900,171.517 70.400,171.000 71.500 C 170.483 72.600,168.683 77.100,167.000 81.500 C 165.317 85.900,163.521 90.400,163.009 91.500 C 162.024 93.618,145.623 134.651,141.026 146.500 C 139.532 150.350,136.836 157.100,135.035 161.500 C 133.233 165.900,130.051 173.775,127.962 179.000 C 125.873 184.225,122.318 193.109,120.061 198.741 C 117.805 204.374,114.158 213.482,111.958 218.982 C 109.758 224.482,106.158 233.482,103.958 238.982 C 101.758 244.482,98.158 253.482,95.958 258.982 C 85.833 284.295,83.531 290.023,80.477 297.500 C 78.680 301.900,71.967 318.775,65.560 335.000 C 59.152 351.225,53.493 365.400,52.985 366.500 C 52.476 367.600,50.683 372.100,49.000 376.500 C 47.317 380.900,45.517 385.400,45.000 386.500 C 44.483 387.600,42.683 392.100,41.000 396.500 C 39.317 400.900,37.517 405.400,37.000 406.500 C 36.483 407.600,34.683 412.100,33.000 416.500 C 31.317 420.900,29.517 425.400,29.000 426.500 C 28.483 427.600,26.683 432.100,25.000 436.500 C 23.317 440.900,21.521 445.400,21.009 446.500 C 6.961 476.683,5.924 487.800,16.852 491.074 C 23.018 492.921,26.441 490.763,35.045 479.604 C 39.145 474.285,43.850 468.210,45.500 466.103 C 47.150 463.997,51.200 458.738,54.500 454.418 C 57.800 450.098,63.650 442.657,67.500 437.883 C 71.350 433.109,78.550 423.906,83.500 417.432 C 88.450 410.957,94.975 402.645,98.000 398.959 C 101.025 395.274,106.650 388.101,110.500 383.020 C 114.350 377.940,122.026 368.094,127.557 361.141 C 133.089 354.189,141.097 344.000,145.353 338.500 C 149.608 333.000,155.883 324.957,159.295 320.626 C 162.708 316.295,166.625 311.285,168.000 309.493 C 173.197 302.718,182.210 291.231,188.002 284.000 C 191.307 279.875,195.020 275.035,196.255 273.244 C 199.931 267.912,199.711 267.688,231.817 309.369 C 237.693 316.997,245.281 326.672,248.680 330.869 C 254.092 337.552,266.301 353.142,302.288 399.322 C 307.354 405.824,313.750 413.971,316.500 417.426 C 319.250 420.881,325.775 429.206,331.000 435.926 C 336.225 442.646,342.750 450.992,345.500 454.472 C 348.250 457.952,353.200 464.285,356.500 468.546 C 373.895 491.002,376.870 493.184,384.806 489.306 C 392.568 485.512,393.168 480.509,387.421 467.500 C 386.692 465.850,384.711 460.900,383.018 456.500 C 381.325 452.100,379.524 447.600,379.015 446.500 C 378.507 445.400,372.848 431.225,366.440 415.000 C 360.033 398.775,353.320 381.900,351.523 377.500 C 348.469 370.023,346.167 364.295,336.042 338.982 C 333.842 333.482,330.242 324.482,328.042 318.982 C 325.842 313.482,322.242 304.482,320.042 298.982 C 317.842 293.482,314.242 284.482,312.042 278.982 C 302.318 254.673,300.048 249.028,296.965 241.500 C 295.164 237.100,292.468 230.350,290.974 226.500 C 286.377 214.651,269.976 173.618,268.991 171.500 C 268.479 170.400,266.683 165.900,265.000 161.500 C 263.317 157.100,261.517 152.600,261.000 151.500 C 260.483 150.400,258.683 145.900,257.000 141.500 C 255.317 137.100,253.517 132.600,253.000 131.500 C 252.483 130.400,250.683 125.900,249.000 121.500 C 247.317 117.100,245.524 112.600,245.017 111.500 C 244.510 110.400,236.604 90.600,227.450 67.500 C 208.728 20.257,208.017 19.000,200.000 19.000 C 196.101 19.000,194.901 19.507,192.196 22.298 ',
            height: 24,
            width: 24,
            viewBox: '0 15 400 500'
        },

        eventTerminateThrow: {
            icon: 'M1664 896q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z',
            height: 30,
            width: 30,
            viewBox: '0 0 1792 1792'
        },

        gatewayComplex: {
            icon: 'M1546 1050q46 26 59.5 77.5t-12.5 97.5l-64 110q-26 46-77.5 59.5t-97.5-12.5l-266-153v307q0 52-38 90t-90 38h-128q-52 0-90-38t-38-90v-307l-266 153q-46 26-97.5 12.5t-77.5-59.5l-64-110q-26-46-12.5-97.5t59.5-77.5l266-154-266-154q-46-26-59.5-77.5t12.5-97.5l64-110q26-46 77.5-59.5t97.5 12.5l266 153v-307q0-52 38-90t90-38h128q52 0 90 38t38 90v307l266-153q46-26 97.5-12.5t77.5 59.5l64 110q26 46 12.5 97.5t-59.5 77.5l-266 154z',
            height: 32,
            width: 32,
            viewBox: '0 0 1792 1792'
        },

        gatewayParallel: {
            icon: 'M1600 736v192q0 40-28 68t-68 28h-416v416q0 40-28 68t-68 28h-192q-40 0-68-28t-28-68v-416h-416q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h416v-416q0-40 28-68t68-28h192q40 0 68 28t28 68v416h416q40 0 68 28t28 68z',
            height: 30,
            width: 30,
            viewBox: '0 -50 1792 1792'
        },

        gatewayInclusive: {
            icon: 'M896 352q-148 0-273 73t-198 198-73 273 73 273 198 198 273 73 273-73 198-198 73-273-73-273-198-198-273-73zm768 544q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z',
            height: 30,
            width: 30,
            viewBox: '0 0 1792 1792'
        },

        gatewayEventBased: {
            icon: 'M2025 4764 c-391 -61 -765 -219 -1085 -458 -118 -88 -318 -281 -415 -401 -266 -328 -447 -740 -510 -1162 -21 -141 -21 -545 0 -686 38 -250 113 -488 226 -717 131 -262 267 -447 481 -655 197 -192 373 -315 623 -436 221 -107 442 -175 697 -215 158 -25 518 -25 676 0 411 64 777 217 1102 460 118 88 318 281 415 401 267 330 443 730 512 1168 24 157 24 518 -1 675 -64 411 -217 777 -460 1102 -88 118 -281 318 -401 415 -328 266 -740 447 -1162 510 -134 20 -568 19 -698 -1z m580 -245 c755 -79 1432 -576 1728 -1270 238 -558 238 -1140 0 -1698 -328 -769 -1111 -1283 -1953 -1283 -842 0 -1625 514 -1953 1283 -121 283 -177 553 -177 849 0 1087 823 2002 1905 2119 187 21 251 20 450 0z M2255 4280 c-424 -44 -777 -188 -1080 -442 -544 -455 -788 -1181 -625 -1863 150 -630 608 -1138 1220 -1350 481 -167 957 -138 1428 85 369 176 696 503 872 872 223 471 251 947 85 1428 -256 739 -924 1232 -1725 1273 -52 3 -131 2 -175 -3z m288 -265 c652 -85 1164 -497 1371 -1101 75 -219 106 -447 87 -626 -64 -591 -393 -1085 -886 -1328 -286 -141 -599 -208 -848 -181 -590 64 -1084 393 -1327 886 -141 286 -208 599 -181 847 71 660 466 1184 1056 1403 127 47 263 82 390 99 134 19 203 19 338 1z M2270 3877 c-41 -30 -253 -179 -470 -332 -828 -584 -896 -634 -908 -660 -7 -14 -12 -34 -12 -44 0 -19 533 -1620 551 -1652 26 -49 18 -49 949 -49 931 0 923 0 949 49 18 32 551 1633 551 1652 0 10 -5 30 -12 44 -12 26 -80 76 -908 660 -217 153 -429 302 -470 332 -56 40 -83 53 -110 53 -27 0 -54 -13 -110 -53z m746 -638 c343 -242 624 -441 624 -443 0 -1 -107 -323 -238 -716 l-239 -715 -783 0 -783 0 -239 715 c-131 392 -235 717 -230 722 24 24 1239 877 1250 877 7 1 294 -197 638 -440z ',
            height: 32,
            width: 32,
            viewBox: '-65 -4850 4884 4884'
        },

        gatewayParallelStart: {
            icon: 'M173.500 1.078 C 153.365 4.519,149.860 5.344,136.227 9.858 C 71.901 31.155,20.632 86.764,5.179 152.000 C 1.222 168.706,-0.000 180.028,0.000 200.000 C 0.000 225.665,2.232 240.226,9.640 262.887 C 30.893 327.895,86.320 379.263,152.000 394.821 C 168.706 398.778,180.028 400.000,200.000 400.000 C 225.665 400.000,240.226 397.768,262.887 390.360 C 327.895 369.107,379.263 313.680,394.821 248.000 C 398.778 231.294,400.000 219.972,400.000 200.000 C 400.000 174.335,397.768 159.774,390.360 137.113 C 373.814 86.503,336.062 43.001,288.951 20.257 C 267.729 10.012,251.177 4.888,228.087 1.416 C 217.705 -0.146,181.956 -0.367,173.500 1.078 M223.583 19.034 C 246.466 23.031,261.081 27.437,278.500 35.589 C 284.489 38.392,300.159 47.409,303.000 49.686 C 303.825 50.347,307.425 53.034,311.000 55.656 C 319.368 61.793,338.207 80.632,344.344 89.000 C 346.966 92.575,349.653 96.175,350.314 97.000 C 359.168 108.044,372.341 137.367,376.820 156.000 C 381.098 173.793,382.000 181.458,382.000 200.000 C 382.000 218.542,381.098 226.207,376.820 244.000 C 372.341 262.633,359.168 291.956,350.314 303.000 C 349.653 303.825,346.966 307.425,344.344 311.000 C 338.207 319.368,319.368 338.207,311.000 344.344 C 307.425 346.966,303.825 349.653,303.000 350.314 C 291.956 359.168,262.633 372.341,244.000 376.820 C 226.207 381.098,218.542 382.000,200.000 382.000 C 181.458 382.000,173.793 381.098,156.000 376.820 C 137.367 372.341,108.044 359.168,97.000 350.314 C 96.175 349.653,92.575 346.966,89.000 344.344 C 80.632 338.207,61.793 319.368,55.656 311.000 C 53.034 307.425,50.347 303.825,49.686 303.000 C 40.832 291.956,27.659 262.633,23.180 244.000 C 18.902 226.207,18.000 218.542,18.000 200.000 C 18.000 181.458,18.902 173.793,23.180 156.000 C 27.659 137.367,40.832 108.044,49.686 97.000 C 50.347 96.175,53.034 92.575,55.656 89.000 C 61.793 80.632,80.632 61.793,89.000 55.656 C 92.575 53.034,96.175 50.347,97.000 49.686 C 99.841 47.409,115.511 38.392,121.500 35.589 C 138.531 27.618,153.255 23.132,175.500 19.135 C 182.558 17.867,216.494 17.795,223.583 19.034 M167.108 39.631 C 161.429 42.094,161.576 40.391,161.481 104.720 C 161.433 137.291,161.079 164.254,160.695 164.638 C 160.310 165.023,134.582 165.374,103.521 165.419 L 47.045 165.500 44.273 168.271 L 41.500 171.042 41.185 197.271 C 40.854 224.812,41.338 229.186,45.096 232.587 C 47.123 234.421,49.532 234.503,103.603 234.581 C 134.619 234.626,160.314 234.981,160.703 235.370 C 161.093 235.759,161.446 262.498,161.490 294.789 C 161.572 356.831,161.573 356.835,165.759 359.578 C 169.758 362.198,222.378 362.293,226.355 359.687 C 230.532 356.950,230.711 354.266,230.766 293.674 C 230.795 261.869,231.101 235.565,231.446 235.220 C 231.791 234.875,259.238 234.572,292.440 234.546 L 352.806 234.500 355.903 231.259 C 357.730 229.348,359.039 226.887,359.094 225.259 C 359.616 209.905,359.353 173.921,358.703 171.847 C 356.604 165.147,360.288 165.505,292.929 165.450 C 259.455 165.423,231.795 165.128,231.461 164.795 C 231.128 164.461,230.775 137.484,230.678 104.844 C 230.484 40.139,230.686 42.355,224.765 39.903 C 220.914 38.307,170.705 38.071,167.108 39.631 M214.758 115.203 L 215.015 175.641 217.797 178.305 L 220.578 180.970 281.789 181.081 L 343.000 181.191 343.084 184.846 C 343.173 188.674,343.153 210.131,343.056 215.783 L 343.000 219.066 325.250 218.933 C 315.488 218.860,287.792 218.845,263.705 218.900 L 219.909 219.000 217.455 221.455 L 215.000 223.909 215.000 284.455 L 215.000 345.000 212.750 345.050 C 208.001 345.157,184.330 345.193,180.937 345.099 L 177.373 345.000 177.348 285.570 C 177.320 221.367,177.444 222.913,172.100 220.054 C 170.896 219.409,149.592 218.939,113.850 218.769 L 57.500 218.500 57.500 200.000 L 57.500 181.500 107.000 181.297 C 169.144 181.042,172.211 180.934,174.230 178.914 C 177.233 175.909,177.505 170.316,177.435 113.000 L 177.365 55.500 180.933 55.000 C 182.895 54.725,191.250 54.560,199.500 54.633 L 214.500 54.766 214.758 115.203 ',
            height: 32,
            width: 32,
            viewBox: '0 0 400 392'
        },

        gatewayEventBasedStart: {
            icon: 'M175.500 14.656 C 54.262 29.051,-17.690 163.710,36.580 274.648 C 99.958 404.203,285.525 410.282,356.229 285.120 C 430.054 154.430,324.808 -3.073,175.500 14.656 M228.500 35.457 C 353.174 58.437,404.059 212.794,317.347 304.969 C 226.947 401.065,66.348 355.017,40.538 225.602 C 23.053 137.927,84.049 49.051,171.000 35.508 C 176.775 34.608,182.175 33.701,183.000 33.492 C 186.902 32.503,220.299 33.945,228.500 35.457 M181.000 89.346 C 173.025 94.991,154.800 107.872,140.500 117.971 C 83.019 158.566,84.467 157.338,86.213 163.978 C 88.414 172.349,124.887 281.595,127.006 286.161 C 128.707 289.830,128.770 289.835,175.500 290.497 C 231.303 291.286,268.667 290.178,270.494 287.678 C 273.132 284.070,313.212 161.982,312.583 159.473 C 311.746 156.141,309.160 154.227,229.068 97.666 C 196.577 74.721,200.664 75.429,181.000 89.346 M223.500 114.165 C 270.506 147.091,290.557 161.311,292.617 163.179 L 294.735 165.100 276.617 219.300 L 258.500 273.500 200.000 273.739 C 167.825 273.871,141.005 273.646,140.401 273.239 C 139.491 272.627,116.032 203.290,106.495 173.026 L 103.825 164.551 106.663 162.260 C 108.223 161.000,115.093 156.039,121.929 151.235 C 128.766 146.431,136.866 140.739,139.929 138.586 C 142.993 136.433,153.600 128.965,163.500 121.989 C 187.501 105.079,198.122 97.994,199.423 98.027 C 200.016 98.042,210.850 105.304,223.500 114.165 ',
            height: 32,
            width: 32,
            viewBox: '0 0 400 392'
        },

        taskUser: {
            icon: 'M1536 1399q0 109-62.5 187t-150.5 78h-854q-88 0-150.5-78t-62.5-187q0-85 8.5-160.5t31.5-152 58.5-131 94-89 134.5-34.5q131 128 313 128t313-128q76 0 134.5 34.5t94 89 58.5 131 31.5 152 8.5 160.5zm-256-887q0 159-112.5 271.5t-271.5 112.5-271.5-112.5-112.5-271.5 112.5-271.5 271.5-112.5 271.5 112.5 112.5 271.5z',
            height: 15,
            width: 15,
            viewBox: '0 0 1792 1792'
        },

        taskManual: {
            icon: 'M880 128q-46 0-79 33t-33 79v656h-32v-528q0-46-33-79t-79-33-79 33-33 79v784l-154-205q-38-51-102-51-53 0-90.5 37.5t-37.5 90.5q0 43 26 77l384 512q38 51 102 51h688q34 0 61-22t34-56l76-405q5-32 5-59v-498q0-46-33-79t-79-33-79 33-33 79v272h-32v-528q0-46-33-79t-79-33-79 33-33 79v528h-32v-656q0-46-33-79t-79-33zm0-128q68 0 125.5 35.5t88.5 96.5q19-4 42-4 99 0 169.5 70.5t70.5 169.5v17q105-6 180.5 64t75.5 175v498q0 40-8 83l-76 404q-14 79-76.5 131t-143.5 52h-688q-60 0-114.5-27.5t-90.5-74.5l-384-512q-51-68-51-154 0-106 75-181t181-75q78 0 128 34v-434q0-99 70.5-169.5t169.5-70.5q23 0 42 4 31-61 88.5-96.5t125.5-35.5z',
            height: 15,
            width: 15,
            viewBox: '0 0 1792 1792'
        },

        taskScript: {
            icon: 'M1596 380q28 28 48 76t20 88v1152q0 40-28 68t-68 28h-1344q-40 0-68-28t-28-68v-1600q0-40 28-68t68-28h896q40 0 88 20t76 48zm-444-244v376h376q-10-29-22-41l-313-313q-12-12-41-22zm384 1528v-1024h-416q-40 0-68-28t-28-68v-416h-768v1536h1280zm-928-896q8-11 21-12.5t24 6.5l51 38q11 8 12.5 21t-6.5 24l-182 243 182 243q8 11 6.5 24t-12.5 21l-51 38q-11 8-24 6.5t-21-12.5l-226-301q-14-19 0-38zm802 301q14 19 0 38l-226 301q-8 11-21 12.5t-24-6.5l-51-38q-11-8-12.5-21t6.5-24l182-243-182-243q-8-11-6.5-24t12.5-21l51-38q11-8 24-6.5t21 12.5zm-620 461q-13-2-20.5-13t-5.5-24l138-831q2-13 13-20.5t24-5.5l63 10q13 2 20.5 13t5.5 24l-138 831q-2 13-13 20.5t-24 5.5z',
            height: 15,
            width: 15,
            viewBox: '0 0 1792 1792'
        },

        taskService: {
            icon: 'M960 896q0-106-75-181t-181-75-181 75-75 181 75 181 181 75 181-75 75-181zm768 512q0-52-38-90t-90-38-90 38-38 90q0 53 37.5 90.5t90.5 37.5 90.5-37.5 37.5-90.5zm0-1024q0-52-38-90t-90-38-90 38-38 90q0 53 37.5 90.5t90.5 37.5 90.5-37.5 37.5-90.5zm-384 421v185q0 10-7 19.5t-16 10.5l-155 24q-11 35-32 76 34 48 90 115 7 11 7 20 0 12-7 19-23 30-82.5 89.5t-78.5 59.5q-11 0-21-7l-115-90q-37 19-77 31-11 108-23 155-7 24-30 24h-186q-11 0-20-7.5t-10-17.5l-23-153q-34-10-75-31l-118 89q-7 7-20 7-11 0-21-8-144-133-144-160 0-9 7-19 10-14 41-53t47-61q-23-44-35-82l-152-24q-10-1-17-9.5t-7-19.5v-185q0-10 7-19.5t16-10.5l155-24q11-35 32-76-34-48-90-115-7-11-7-20 0-12 7-20 22-30 82-89t79-59q11 0 21 7l115 90q34-18 77-32 11-108 23-154 7-24 30-24h186q11 0 20 7.5t10 17.5l23 153q34 10 75 31l118-89q8-7 20-7 11 0 21 8 144 133 144 160 0 8-7 19-12 16-42 54t-45 60q23 48 34 82l152 23q10 2 17 10.5t7 19.5zm640 533v140q0 16-149 31-12 27-30 52 51 113 51 138 0 4-4 7-122 71-124 71-8 0-46-47t-52-68q-20 2-30 2t-30-2q-14 21-52 68t-46 47q-2 0-124-71-4-3-4-7 0-25 51-138-18-25-30-52-149-15-149-31v-140q0-16 149-31 13-29 30-52-51-113-51-138 0-4 4-7 4-2 35-20t59-34 30-16q8 0 46 46.5t52 67.5q20-2 30-2t30 2q51-71 92-112l6-2q4 0 124 70 4 3 4 7 0 25-51 138 17 23 30 52 149 15 149 31zm0-1024v140q0 16-149 31-12 27-30 52 51 113 51 138 0 4-4 7-122 71-124 71-8 0-46-47t-52-68q-20 2-30 2t-30-2q-14 21-52 68t-46 47q-2 0-124-71-4-3-4-7 0-25 51-138-18-25-30-52-149-15-149-31v-140q0-16 149-31 13-29 30-52-51-113-51-138 0-4 4-7 4-2 35-20t59-34 30-16q8 0 46 46.5t52 67.5q20-2 30-2t30 2q51-71 92-112l6-2q4 0 124 70 4 3 4 7 0 25-51 138 17 23 30 52 149 15 149 31z',
            height: 15,
            width: 15,
            viewBox: '0 0 2048 1792'
        },

        taskSendMessage: {
            icon: 'M1792 710v794q0 66-47 113t-113 47h-1472q-66 0-113-47t-47-113v-794q44 49 101 87 362 246 497 345 57 42 92.5 65.5t94.5 48 110 24.5h2q51 0 110-24.5t94.5-48 92.5-65.5q170-123 498-345 57-39 100-87zm0-294q0 79-49 151t-122 123q-376 261-468 325-10 7-42.5 30.5t-54 38-52 32.5-57.5 27-50 9h-2q-23 0-50-9t-57.5-27-52-32.5-54-38-42.5-30.5q-91-64-262-182.5t-205-142.5q-62-42-117-115.5t-55-136.5q0-78 41.5-130t118.5-52h1472q65 0 112.5 47t47.5 113z',
            height: 15,
            width: 15,
            viewBox: '0 0 1792 1792'
        },

        taskBusinessRule: {
            icon: 'M576 1376v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm-512-768v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm-512-768v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm128-320v1088q0 66-47 113t-113 47h-1344q-66 0-113-47t-47-113v-1088q0-66 47-113t113-47h1344q66 0 113 47t47 113z',
            height: 15,
            width: 15,
            viewBox: '0 0 1792 1792'
        },

        taskReceiveMessage: {
            icon: 'M1664 1504v-768q-32 36-69 66-268 206-426 338-51 43-83 67t-86.5 48.5-102.5 24.5h-2q-48 0-102.5-24.5t-86.5-48.5-83-67q-158-132-426-338-37-30-69-66v768q0 13 9.5 22.5t22.5 9.5h1472q13 0 22.5-9.5t9.5-22.5zm0-1051v-24.5l-.5-13-3-12.5-5.5-9-9-7.5-14-2.5h-1472q-13 0-22.5 9.5t-9.5 22.5q0 168 147 284 193 152 401 317 6 5 35 29.5t46 37.5 44.5 31.5 50.5 27.5 43 9h2q20 0 43-9t50.5-27.5 44.5-31.5 46-37.5 35-29.5q208-165 401-317 54-43 100.5-115.5t46.5-131.5zm128-37v1088q0 66-47 113t-113 47h-1472q-66 0-113-47t-47-113v-1088q0-66 47-113t113-47h1472q66 0 113 47t47 113z',
            height: 15,
            width: 15,
            viewBox: '0 0 1792 1792'
        },

        markerCompensation: {
            icon: 'M190.550 32.563 C 187.441 36.703,185.313 39.000,184.587 39.000 C 183.632 39.000,179.000 43.740,179.000 44.717 C 179.000 45.162,177.794 46.420,176.320 47.513 C 172.916 50.037,170.037 52.916,167.513 56.320 C 166.420 57.794,165.162 59.000,164.717 59.000 C 163.666 59.000,159.000 63.666,159.000 64.717 C 159.000 65.162,157.794 66.420,156.320 67.513 C 152.916 70.037,150.037 72.916,147.513 76.320 C 146.420 77.794,145.162 79.000,144.717 79.000 C 143.666 79.000,139.000 83.666,139.000 84.717 C 139.000 85.162,137.794 86.420,136.320 87.513 C 132.916 90.037,130.037 92.916,127.513 96.320 C 126.420 97.794,125.162 99.000,124.717 99.000 C 123.666 99.000,119.000 103.666,119.000 104.717 C 119.000 105.162,117.794 106.420,116.320 107.513 C 112.916 110.037,110.037 112.916,107.513 116.320 C 106.420 117.794,105.162 119.000,104.717 119.000 C 104.273 119.000,102.805 120.105,101.455 121.455 C 100.105 122.805,99.000 124.273,99.000 124.717 C 99.000 125.162,97.794 126.420,96.320 127.513 C 92.916 130.037,90.037 132.916,87.513 136.320 C 86.420 137.794,85.162 139.000,84.717 139.000 C 83.666 139.000,79.000 143.666,79.000 144.717 C 79.000 145.162,77.794 146.420,76.320 147.513 C 72.916 150.037,70.037 152.916,67.513 156.320 C 66.420 157.794,65.162 159.000,64.717 159.000 C 63.666 159.000,59.000 163.666,59.000 164.717 C 59.000 165.162,57.794 166.420,56.320 167.513 C 52.916 170.037,50.037 172.916,47.513 176.320 C 46.420 177.794,45.162 179.000,44.717 179.000 C 43.666 179.000,39.000 183.666,39.000 184.717 C 39.000 185.162,37.846 186.392,36.437 187.450 C 30.012 192.275,30.000 192.298,30.000 200.130 C 30.000 206.900,30.217 207.688,32.563 209.450 C 36.703 212.559,39.000 214.687,39.000 215.413 C 39.000 216.368,43.740 221.000,44.717 221.000 C 45.162 221.000,46.420 222.206,47.513 223.680 C 50.037 227.084,52.916 229.963,56.320 232.487 C 57.794 233.580,59.000 234.838,59.000 235.283 C 59.000 236.334,63.666 241.000,64.717 241.000 C 65.162 241.000,66.420 242.206,67.513 243.680 C 70.037 247.084,72.916 249.963,76.320 252.487 C 77.794 253.580,79.000 254.838,79.000 255.283 C 79.000 256.334,83.666 261.000,84.717 261.000 C 85.162 261.000,86.420 262.206,87.513 263.680 C 90.037 267.084,92.916 269.963,96.320 272.487 C 97.794 273.580,99.000 274.838,99.000 275.283 C 99.000 276.334,103.666 281.000,104.717 281.000 C 105.162 281.000,106.420 282.206,107.513 283.680 C 110.037 287.084,112.916 289.963,116.320 292.487 C 117.794 293.580,119.000 294.838,119.000 295.283 C 119.000 296.334,123.666 301.000,124.717 301.000 C 125.162 301.000,126.420 302.206,127.513 303.680 C 130.037 307.084,132.916 309.963,136.320 312.487 C 137.794 313.580,139.000 314.838,139.000 315.283 C 139.000 316.334,143.666 321.000,144.717 321.000 C 145.162 321.000,146.420 322.206,147.513 323.680 C 150.037 327.084,152.916 329.963,156.320 332.487 C 157.794 333.580,159.000 334.838,159.000 335.283 C 159.000 336.334,163.666 341.000,164.717 341.000 C 165.162 341.000,166.420 342.206,167.513 343.680 C 170.037 347.084,172.916 349.963,176.320 352.487 C 177.794 353.580,179.000 354.838,179.000 355.283 C 179.000 356.260,183.632 361.000,184.587 361.000 C 185.313 361.000,187.441 363.297,190.550 367.437 C 194.558 372.774,212.000 370.016,212.000 364.045 C 212.000 363.470,212.450 363.000,213.000 363.000 C 213.550 363.000,214.000 361.650,214.000 360.000 C 214.000 358.000,214.500 357.000,215.500 357.000 C 216.814 357.000,217.000 350.437,217.000 303.929 C 217.000 245.255,216.683 248.000,223.457 248.000 C 226.885 248.000,229.980 250.923,288.049 309.000 L 349.040 370.000 355.638 370.000 C 363.233 370.000,370.000 365.109,370.000 359.618 C 370.000 358.178,370.450 357.000,371.000 357.000 C 371.662 357.000,372.000 304.500,372.000 201.500 C 372.000 98.500,371.662 46.000,371.000 46.000 C 370.450 46.000,370.000 44.650,370.000 42.999 C 370.000 37.026,363.091 32.000,354.879 32.000 C 350.960 32.000,348.000 32.430,348.000 33.000 C 348.000 33.550,347.336 34.000,346.524 34.000 C 345.711 34.000,318.499 60.550,286.051 93.000 C 229.914 149.140,226.880 152.000,223.456 152.000 C 216.683 152.000,217.000 154.744,217.000 96.071 C 217.000 49.563,216.814 43.000,215.500 43.000 C 214.556 43.000,214.000 42.048,214.000 40.429 C 214.000 39.014,213.438 37.289,212.750 36.594 C 212.063 35.899,210.606 34.131,209.513 32.665 C 206.547 28.687,193.513 28.618,190.550 32.563 M181.571 93.429 C 183.719 95.577,183.719 304.423,181.571 306.571 C 178.746 309.397,170.000 307.687,170.000 304.309 C 170.000 303.850,168.794 302.580,167.320 301.487 C 163.916 298.963,161.037 296.084,158.513 292.680 C 157.420 291.206,156.162 290.000,155.717 290.000 C 154.666 290.000,150.000 285.334,150.000 284.283 C 150.000 283.838,148.794 282.580,147.320 281.487 C 143.916 278.963,141.037 276.084,138.513 272.680 C 137.420 271.206,136.162 270.000,135.717 270.000 C 134.666 270.000,130.000 265.334,130.000 264.283 C 130.000 263.838,128.794 262.580,127.320 261.487 C 123.916 258.963,121.037 256.084,118.513 252.680 C 117.420 251.206,116.162 250.000,115.717 250.000 C 114.666 250.000,110.000 245.334,110.000 244.283 C 110.000 243.838,108.794 242.580,107.320 241.487 C 103.916 238.963,101.037 236.084,98.513 232.680 C 97.420 231.206,96.162 230.000,95.717 230.000 C 94.666 230.000,90.000 225.334,90.000 224.283 C 90.000 223.838,88.794 222.580,87.320 221.487 C 83.916 218.963,81.037 216.084,78.513 212.680 C 77.420 211.206,76.162 210.000,75.717 210.000 C 75.273 210.000,73.805 208.895,72.455 207.545 C 67.888 202.979,70.302 190.000,75.717 190.000 C 76.162 190.000,77.420 188.794,78.513 187.320 C 81.037 183.916,83.916 181.037,87.320 178.513 C 88.794 177.420,90.000 176.162,90.000 175.717 C 90.000 174.666,94.666 170.000,95.717 170.000 C 96.162 170.000,97.420 168.794,98.513 167.320 C 101.037 163.916,103.916 161.037,107.320 158.513 C 108.794 157.420,110.000 156.162,110.000 155.717 C 110.000 154.666,114.666 150.000,115.717 150.000 C 116.162 150.000,117.420 148.794,118.513 147.320 C 121.037 143.916,123.916 141.037,127.320 138.513 C 128.794 137.420,130.000 136.162,130.000 135.717 C 130.000 135.273,131.105 133.805,132.455 132.455 C 133.805 131.105,135.273 130.000,135.717 130.000 C 136.162 130.000,137.420 128.794,138.513 127.320 C 141.037 123.916,143.916 121.037,147.320 118.513 C 148.794 117.420,150.000 116.162,150.000 115.717 C 150.000 114.666,154.666 110.000,155.717 110.000 C 156.162 110.000,157.420 108.794,158.513 107.320 C 161.037 103.916,163.916 101.037,167.320 98.513 C 168.794 97.420,170.000 96.163,170.000 95.720 C 170.000 92.317,178.731 90.588,181.571 93.429 M337.571 93.429 C 339.719 95.577,339.719 304.423,337.571 306.571 C 332.494 311.649,333.045 312.107,277.469 256.522 L 226.000 205.045 226.000 200.040 L 226.000 195.035 277.250 143.609 C 332.711 87.959,332.378 88.236,337.571 93.429 ',
            height: 16,
            width: 16,
            viewBox: '20 0 430 400'
        },

        markerCollapsedSubProcess: {
            icon: 'M0.000 200.000 L 0.000 400.000 200.000 400.000 L 400.000 400.000 400.000 200.000 L 400.000 0.000 200.000 0.000 L 0.000 0.000 0.000 200.000 M363.000 200.000 L 363.000 363.000 200.000 363.000 L 37.000 363.000 37.000 200.000 L 37.000 37.000 200.000 37.000 L 363.000 37.000 363.000 200.000 M192.000 78.871 C 183.783 81.591,177.698 86.574,172.914 94.500 C 170.502 98.496,170.500 98.536,170.202 133.167 C 169.978 159.299,169.598 168.089,168.660 168.868 C 167.873 169.521,154.746 170.011,132.957 170.200 C 94.470 170.535,95.945 170.271,87.161 178.407 C 75.349 189.347,75.349 210.671,87.161 221.586 C 95.986 229.741,94.439 229.465,133.167 229.798 C 159.299 230.022,168.089 230.402,168.868 231.340 C 169.521 232.127,170.011 245.254,170.200 267.043 C 170.535 305.532,170.264 304.019,178.414 312.839 C 189.329 324.650,210.671 324.650,221.586 312.839 C 229.736 304.019,229.465 305.532,229.800 267.043 C 229.989 245.254,230.479 232.127,231.132 231.340 C 231.911 230.402,240.701 230.022,266.833 229.798 C 305.561 229.465,304.014 229.741,312.839 221.586 C 327.534 208.006,323.919 184.031,305.500 172.914 C 301.508 170.505,301.433 170.499,268.000 170.246 C 249.575 170.106,233.509 169.765,232.298 169.489 L 230.095 168.986 229.798 133.743 C 229.465 94.360,229.754 96.000,221.586 87.161 C 215.183 80.232,200.400 76.090,192.000 78.871 ',
            height: 16,
            width: 16,
            viewBox: '0 0 400 400'
        },

        markerExpandedSubProcess: {
            icon: 'M0.000 258.000 L 0.000 516.000 258.000 516.000 L 516.000 516.000 516.000 258.000 L 516.000 0.000 258.000 0.000 L 0.000 0.000 0.000 258.000 M468.000 258.000 L 468.000 468.000 258.000 468.000 L 48.000 468.000 48.000 258.000 L 48.000 48.000 258.000 48.000 L 468.000 48.000 468.000 258.000 M126.680 219.937 C 124.030 220.306,121.555 221.034,121.180 221.555 C 120.806 222.077,119.364 223.087,117.975 223.800 C 114.408 225.633,108.254 231.624,107.500 233.999 C 107.151 235.100,106.480 236.000,106.010 236.000 C 105.540 236.000,104.612 237.688,103.947 239.750 C 103.283 241.813,102.235 244.132,101.620 244.904 C 99.701 247.309,100.207 268.912,102.266 272.500 C 103.213 274.150,103.990 275.974,103.994 276.553 C 104.011 279.481,113.105 289.635,118.000 292.191 C 119.375 292.909,120.758 293.846,121.074 294.272 C 123.964 298.179,392.024 298.320,394.837 294.417 C 395.202 293.911,396.707 292.875,398.183 292.115 C 402.870 289.702,410.049 281.752,412.082 276.725 C 412.800 274.951,413.862 273.179,414.443 272.786 C 416.045 271.705,415.863 245.788,414.250 245.250 C 413.562 245.021,413.000 244.016,413.000 243.017 C 413.000 239.487,400.673 224.000,397.863 224.000 C 397.467 224.000,396.401 223.258,395.495 222.352 C 394.588 221.445,391.968 220.340,389.673 219.895 C 384.692 218.931,133.632 218.971,126.680 219.937 ',
            height: 16,
            width: 16,
            viewBox: '0 0 516 516'
        },

        markerLoop: {
            icon: 'M1664 896q0 156-61 298t-164 245-245 164-298 61q-172 0-327-72.5t-264-204.5q-7-10-6.5-22.5t8.5-20.5l137-138q10-9 25-9 16 2 23 12 73 95 179 147t225 52q104 0 198.5-40.5t163.5-109.5 109.5-163.5 40.5-198.5-40.5-198.5-109.5-163.5-163.5-109.5-198.5-40.5q-98 0-188 35.5t-160 101.5l137 138q31 30 14 69-17 40-59 40h-448q-26 0-45-19t-19-45v-448q0-42 40-59 39-17 69 14l130 129q107-101 244.5-156.5t284.5-55.5q156 0 298 61t245 164 164 245 61 298z',
            height: 14,
            width: 14,
            viewBox: '-120 -180 1792 1892'
        },

        markerMultiInstanceSequential: {
            icon: 'M1664 1344v128q0 26-19 45t-45 19h-1408q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1408q26 0 45 19t19 45zm0-512v128q0 26-19 45t-45 19h-1408q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1408q26 0 45 19t19 45zm0-512v128q0 26-19 45t-45 19h-1408q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1408q26 0 45 19t19 45z',
            height: 14,
            width: 14,
            viewBox: '-100 -160 1792 1792'
        },

        markerMultiInstanceParallel: {
            icon: 'M1664 1344v128q0 26-19 45t-45 19h-1408q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1408q26 0 45 19t19 45zm0-512v128q0 26-19 45t-45 19h-1408q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1408q26 0 45 19t19 45zm0-512v128q0 26-19 45t-45 19h-1408q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1408q26 0 45 19t19 45z',
            height: 14,
            width: 14,
            viewBox: '-100 -160 1792 1792',
            transform: 'rotate(90 900 900)'
        },

        markerAdHoc: {
            icon: 'M109.000 134.000 C 109.000 134.550,106.750 135.000,104.000 135.000 C 101.250 135.000,99.000 135.450,99.000 136.000 C 99.000 136.550,97.200 137.000,95.000 137.000 C 92.800 137.000,91.000 137.450,91.000 138.000 C 91.000 138.550,89.650 139.000,88.000 139.000 C 86.350 139.000,85.000 139.450,85.000 140.000 C 85.000 140.550,84.319 141.000,83.486 141.000 C 82.654 141.000,81.191 141.394,80.236 141.875 C 79.281 142.356,76.475 143.773,74.000 145.024 C 71.525 146.275,68.491 147.794,67.258 148.399 C 66.025 149.005,65.012 149.838,65.008 150.250 C 65.004 150.662,64.438 151.001,63.750 151.002 C 63.063 151.004,60.925 152.353,59.000 154.000 C 57.075 155.647,55.163 156.996,54.751 156.998 C 54.339 156.999,52.148 158.800,49.881 161.000 C 47.614 163.200,45.353 165.000,44.858 165.000 C 43.638 165.000,34.075 174.656,30.993 179.000 C 29.627 180.925,26.820 184.242,24.755 186.371 C 22.690 188.499,21.000 190.763,21.000 191.400 C 21.000 192.037,20.100 193.207,19.000 194.000 C 17.900 194.793,17.000 195.932,17.000 196.532 C 17.000 197.132,16.213 198.495,15.250 199.561 C 14.288 200.628,12.861 202.738,12.081 204.250 C 11.301 205.762,10.288 207.000,9.831 207.000 C 9.374 207.000,9.000 207.694,9.000 208.542 C 9.000 209.390,8.100 211.050,7.000 212.230 C 5.900 213.411,5.000 214.967,5.000 215.689 C 5.000 216.410,4.550 217.000,4.000 217.000 C 3.450 217.000,3.000 217.862,3.000 218.917 C 3.000 219.971,2.438 221.021,1.750 221.250 C 0.822 221.559,0.500 225.622,0.500 237.000 C 0.500 248.378,0.822 252.441,1.750 252.750 C 2.438 252.979,3.000 253.856,3.000 254.698 C 3.000 256.504,9.805 263.000,11.695 263.000 C 12.413 263.000,13.000 263.450,13.000 264.000 C 13.000 264.550,13.873 265.000,14.941 265.000 C 16.009 265.000,17.160 265.450,17.500 266.000 C 17.841 266.552,22.324 267.000,27.500 267.000 C 32.676 267.000,37.159 266.552,37.500 266.000 C 37.840 265.450,39.216 265.000,40.559 265.000 C 41.902 265.000,43.000 264.626,43.000 264.169 C 43.000 263.712,44.237 262.699,45.750 261.919 C 49.193 260.143,50.143 259.193,51.919 255.750 C 52.699 254.238,53.712 253.000,54.169 253.000 C 54.626 253.000,55.000 252.100,55.000 251.000 C 55.000 249.900,55.450 249.000,56.000 249.000 C 56.550 249.000,57.000 248.100,57.000 247.000 C 57.000 245.900,57.450 245.000,58.000 245.000 C 58.550 245.000,59.000 244.410,59.000 243.689 C 59.000 242.967,59.900 241.411,61.000 240.230 C 62.100 239.050,63.001 237.727,63.002 237.292 C 63.004 236.856,64.353 234.925,66.000 233.000 C 67.647 231.075,68.996 229.170,68.998 228.767 C 69.005 226.514,92.787 203.000,95.059 203.000 C 95.622 203.000,97.050 202.100,98.230 201.000 C 99.411 199.900,100.967 199.000,101.689 199.000 C 102.410 199.000,103.000 198.550,103.000 198.000 C 103.000 197.450,104.098 197.000,105.441 197.000 C 106.784 197.000,108.160 196.550,108.500 196.000 C 108.840 195.450,110.190 195.000,111.500 195.000 C 112.810 195.000,114.160 194.550,114.500 194.000 C 114.840 193.450,118.890 193.000,123.500 193.000 C 128.110 193.000,132.160 193.450,132.500 194.000 C 132.840 194.550,134.441 195.000,136.059 195.000 C 137.677 195.000,139.000 195.450,139.000 196.000 C 139.000 196.550,139.632 197.000,140.405 197.000 C 142.071 197.000,150.353 201.170,150.833 202.250 C 151.017 202.662,152.029 203.000,153.083 203.000 C 154.137 203.000,155.000 203.374,155.000 203.831 C 155.000 204.288,156.238 205.298,157.750 206.074 C 159.262 206.851,161.175 208.186,162.000 209.041 C 162.825 209.895,165.075 211.688,167.000 213.023 C 168.925 214.359,172.975 217.948,176.000 221.000 C 179.025 224.052,183.075 227.645,185.000 228.986 C 186.925 230.326,189.693 232.678,191.151 234.211 C 192.609 235.745,194.184 237.001,194.651 237.002 C 195.118 237.004,197.075 238.353,199.000 240.000 C 200.925 241.647,203.063 242.996,203.750 242.998 C 204.438 242.999,205.000 243.450,205.000 244.000 C 205.000 244.550,205.590 245.000,206.311 245.000 C 207.033 245.000,208.589 245.900,209.770 247.000 C 210.950 248.100,212.610 249.000,213.458 249.000 C 214.306 249.000,215.000 249.450,215.000 250.000 C 215.000 250.550,215.900 251.000,217.000 251.000 C 218.100 251.000,219.000 251.450,219.000 252.000 C 219.000 252.550,219.900 253.000,221.000 253.000 C 222.100 253.000,223.000 253.450,223.000 254.000 C 223.000 254.550,223.900 255.000,225.000 255.000 C 226.100 255.000,227.000 255.450,227.000 256.000 C 227.000 256.550,227.873 257.000,228.941 257.000 C 230.009 257.000,231.160 257.450,231.500 258.000 C 231.840 258.550,233.190 259.000,234.500 259.000 C 235.810 259.000,237.160 259.450,237.500 260.000 C 237.840 260.550,239.415 261.000,241.000 261.000 C 242.585 261.000,244.160 261.450,244.500 262.000 C 244.840 262.550,246.891 263.000,249.059 263.000 C 251.227 263.000,253.000 263.450,253.000 264.000 C 253.000 264.634,260.480 265.000,273.441 265.000 C 285.990 265.000,294.121 264.614,294.500 264.000 C 294.840 263.450,296.891 263.000,299.059 263.000 C 301.227 263.000,303.000 262.550,303.000 262.000 C 303.000 261.450,304.350 261.000,306.000 261.000 C 307.650 261.000,309.000 260.550,309.000 260.000 C 309.000 259.450,310.350 259.000,312.000 259.000 C 313.650 259.000,315.000 258.550,315.000 258.000 C 315.000 257.450,315.612 257.000,316.360 257.000 C 318.003 257.000,330.363 250.809,330.833 249.750 C 331.017 249.337,332.029 249.000,333.083 249.000 C 334.138 249.000,335.000 248.550,335.000 248.000 C 335.000 247.450,335.608 247.000,336.352 247.000 C 337.095 247.000,339.116 245.650,340.843 244.000 C 342.569 242.350,344.471 241.000,345.069 241.000 C 345.667 241.000,347.886 239.200,350.000 237.000 C 352.114 234.800,354.216 232.995,354.672 232.990 C 355.912 232.974,365.281 223.821,368.597 219.384 C 370.194 217.248,373.188 213.848,375.250 211.828 C 377.313 209.809,379.000 207.738,379.000 207.227 C 379.000 206.715,380.238 204.985,381.750 203.381 C 383.262 201.778,385.139 199.236,385.919 197.733 C 386.699 196.230,387.712 195.000,388.169 195.000 C 388.626 195.000,389.000 194.410,389.000 193.689 C 389.000 192.967,389.900 191.411,391.000 190.230 C 392.100 189.050,393.000 187.390,393.000 186.542 C 393.000 185.694,393.374 185.000,393.831 185.000 C 394.288 185.000,395.300 183.762,396.079 182.250 C 396.859 180.738,397.948 179.179,398.498 178.786 C 400.057 177.676,399.821 147.774,398.250 147.250 C 397.562 147.021,397.000 146.144,397.000 145.302 C 397.000 143.496,390.195 137.000,388.305 137.000 C 387.587 137.000,387.000 136.550,387.000 136.000 C 387.000 135.450,386.127 135.000,385.059 135.000 C 383.991 135.000,382.840 134.550,382.500 134.000 C 381.690 132.690,362.310 132.690,361.500 134.000 C 361.160 134.550,360.009 135.000,358.941 135.000 C 357.873 135.000,357.000 135.450,357.000 136.000 C 357.000 136.550,356.370 137.000,355.600 137.000 C 353.781 137.000,347.000 143.781,347.000 145.600 C 347.000 146.370,346.550 147.000,346.000 147.000 C 345.450 147.000,345.000 147.900,345.000 149.000 C 345.000 150.100,344.550 151.000,344.000 151.000 C 343.450 151.000,343.000 151.590,343.000 152.311 C 343.000 153.033,342.100 154.589,341.000 155.770 C 339.900 156.950,339.000 158.511,339.000 159.237 C 339.000 159.964,338.100 161.207,337.000 162.000 C 335.900 162.793,335.000 163.963,335.000 164.600 C 335.000 165.237,333.310 167.501,331.245 169.629 C 329.180 171.758,326.377 175.075,325.017 177.000 C 321.891 181.424,319.413 183.900,315.000 187.011 C 313.075 188.368,310.196 190.721,308.602 192.239 C 307.008 193.758,305.301 195.000,304.810 195.000 C 304.318 195.000,302.950 195.900,301.770 197.000 C 300.589 198.100,299.033 199.000,298.311 199.000 C 297.590 199.000,297.000 199.450,297.000 200.000 C 297.000 200.550,296.127 201.000,295.059 201.000 C 293.991 201.000,292.840 201.450,292.500 202.000 C 292.160 202.550,290.784 203.000,289.441 203.000 C 288.098 203.000,287.000 203.450,287.000 204.000 C 287.000 204.550,284.615 205.000,281.700 205.000 C 278.785 205.000,275.911 205.489,275.313 206.087 C 274.530 206.870,274.038 206.870,273.554 206.087 C 273.184 205.489,270.209 205.000,266.941 205.000 C 263.647 205.000,261.000 204.554,261.000 204.000 C 261.000 203.450,259.650 203.000,258.000 203.000 C 256.350 203.000,255.000 202.550,255.000 202.000 C 255.000 201.450,254.100 201.000,253.000 201.000 C 251.900 201.000,251.000 200.550,251.000 200.000 C 251.000 199.450,250.100 199.000,249.000 199.000 C 247.900 199.000,247.000 198.550,247.000 198.000 C 247.000 197.450,246.100 197.000,245.000 197.000 C 243.900 197.000,243.000 196.550,243.000 196.000 C 243.000 195.450,242.199 195.000,241.221 195.000 C 240.242 195.000,238.793 194.100,238.000 193.000 C 237.207 191.900,236.077 191.000,235.489 191.000 C 234.901 191.000,232.431 189.200,230.000 187.000 C 227.569 184.800,225.203 183.000,224.742 183.000 C 224.281 183.000,220.888 179.953,217.202 176.228 C 213.516 172.504,208.925 168.346,207.000 166.989 C 205.075 165.632,202.196 163.279,200.602 161.761 C 199.008 160.242,197.194 159.000,196.572 159.000 C 195.950 159.000,194.793 158.100,194.000 157.000 C 193.207 155.900,191.857 155.000,191.000 155.000 C 190.143 155.000,188.793 154.100,188.000 153.000 C 187.207 151.900,185.758 151.000,184.779 151.000 C 183.801 151.000,183.000 150.550,183.000 150.000 C 183.000 149.450,182.100 149.000,181.000 149.000 C 179.900 149.000,178.996 148.662,178.992 148.250 C 178.983 147.352,174.140 145.000,172.301 145.000 C 171.585 145.000,171.000 144.550,171.000 144.000 C 171.000 143.450,170.100 143.000,169.000 143.000 C 167.900 143.000,167.000 142.550,167.000 142.000 C 167.000 141.450,166.127 141.000,165.059 141.000 C 163.991 141.000,162.840 140.550,162.500 140.000 C 162.160 139.450,160.810 139.000,159.500 139.000 C 158.190 139.000,156.840 138.550,156.500 138.000 C 156.160 137.450,154.334 137.000,152.441 137.000 C 150.548 137.000,149.000 136.550,149.000 136.000 C 149.000 135.450,146.552 135.000,143.559 135.000 C 140.566 135.000,137.840 134.550,137.500 134.000 C 137.136 133.411,131.156 133.000,122.941 133.000 C 114.314 133.000,109.000 133.381,109.000 134.000 ',
            height: 13,
            width: 13,
            viewBox: '-20 -40 420 400'
        }
    };
}).call(undefined, EspoBpmn);

(function (EspoBpmn) {

    EspoBpmn.Canvas = function () {
        function Canvas(container, params, dataList, subProcessId, parentCanvas, subProcessFigure) {
            var _this = this;

            _classCallCheck(this, Canvas);

            this.element = document.createElementNS('http://www.w3.org/2000/svg', 'svg');

            this.dataList = dataList || [];

            this.state = null;

            this.subProcessId = subProcessId;
            this.parentCanvas = parentCanvas;
            this.subProcessFigure = subProcessFigure;

            this.mainCanvas = this;

            while (this.mainCanvas.parentCanvas) {
                this.mainCanvas = this.mainCanvas.parentCanvas;
            }

            var figureGroups = EspoBpmn.figureGroups;

            var defaultParams = {
                strokeWidth: 1.3,
                strokeColor: '#7a7a7a',
                textColor: '#4f4f4f',
                removalStrokeColor: '#b03333',
                removalStrokeWidth: 2,
                circleRadius: 20,
                circleInternalRadius: 17,
                outlineStroke: 7,
                outlineBlurStdDeviation: 3,
                outlineColor1: '#c66afc',
                outlineColor2: 'yellow',
                outlineColor3: '#87d66f',
                outlineColor4: '#a3a3a3',
                outlineOpacity: 0.5,
                dottedLineDashArray: '6.5, 3',
                dottedLineAssociationDashArray: '1.5, 4',
                dottedLineRectangeDashArray: '3, 4',
                rhombusSize: 50,
                canvasGridSize: 20,
                rectangleSizeX: 100,
                rectangleSizeY: 70,
                rectangleRoundingRadius: 5,
                rectangleIconMargin: 4,
                rectangleInternalLengthDiff: 6,
                rectangleExpandedDefaultWidth: 320,
                rectangleExpandedDefaultHeight: 200,
                rectangleExpandedFillColor: '#FFFFFF',
                rectangleExpandedFillOpacity: 0.7,
                fontSize: 11,
                textMarginTop: 4,
                textMarginSide: 4,
                textLinePaddingTop: 2,
                textRectangleExpandedMarginSide: 10,
                textWidth: 70,
                textRectangleWidth: 90,
                flowDefaultSlashShift: 10,
                flowDefaultSlashLength: 12,
                scaleSensitivity: 0.1,
                minScaleRatio: 0.5,
                maxScaleRatio: 3,
                scaleRatio: 1,
                scaleDisabled: false,
                movingDisabled: false,
                draggingDisabled: false,
                boldStrokeWidthMultiplier: 2,
                boundaryAttachIntervalSize: 40,
                activityMarkerHeight: 16,
                activityMarkerWidth: 16,
                eventStartFillColor: '#DAFFC3',
                eventStartStrokeColor: '#8dc669',
                eventEndFillColor: '#ffafaf',
                eventEndStrokeColor: '#d86565',
                eventIntermediateFillColor: '#e5efff',
                eventIntermediateStrokeColor: '#769ad3',
                gatewayFillColor: '#fff7c9',
                gatewayStrokeColor: '#c6b551',
                taskFillColor: '#f7f7f7',
                taskStrokeColor: '#999999',
                subProcessMargin: 10,
                resizeHandleSize: 16,
                figuresParams: {},
                minExpandedWidth: 100,
                minExpandedHeight: 100,
                dataDefaults: {
                    eventIntermediateCancelBoundary: {
                        cancelActivity: true
                    },
                    eventIntermediateCompensationBoundary: {
                        cancelActivity: true
                    },
                    eventIntermediateErrorBoundary: {
                        cancelActivity: true
                    }
                }
            };

            this.params = params = params || {};

            this.params.events = this.params.events || {};

            for (var param in defaultParams) {
                if (param === 'figuresParams') {
                    continue;
                }

                if (param in this.params) {
                    continue;
                }

                this.params[param] = defaultParams[param];
            }

            this.params.dataDefaults = this.params.dataDefaults || {};
            this.params.figuresParams = this.params.figuresParams || {};

            var figuresParams = {};

            for (var groupType in figureGroups) {
                var strokeColor = this.params[groupType + 'StrokeColor'];
                var fillColor = this.params[groupType + 'FillColor'];

                figureGroups[groupType].forEach(function (item) {
                    _this.params.figuresParams[item] = _this.params.figuresParams[item] || {};
                    _this.params.figuresParams[item].strokeColor = _this.params.figuresParams[item].strokeColor || strokeColor;
                    _this.params.figuresParams[item].fillColor = _this.params.figuresParams[item].fillColor || fillColor;
                });
            }

            for (var type in defaultParams.figuresParams) {
                if (!(type in this.params.figuresParams)) {
                    this.params.figuresParams[type] = this._clone(defaultParams.figuresParams[type]);
                }
            }
            for (var type in defaultParams.dataDefaults) {
                if (!(type in this.params.dataDefaults)) {
                    this.params.dataDefaults[type] = this._clone(defaultParams.dataDefaults[type]);
                }
            }

            this.isReadOnly = this.params.isReadOnly || false;

            this.scaleRatio = this.params.scaleRatio;
            this.offsetX = this.params.offsetX || 0;
            this.offsetY = this.params.offsetY || 0;

            if (container) {
                if ('canvasWidth' in params) {
                    this.element.setAttribute('width', params.canvasWidth);
                }
                if ('canvasHeight' in params) {
                    this.element.setAttribute('height', params.canvasHeight);
                }
            }

            this.figureHash = {};

            this.isTouchDevice = false;

            if (!this.isTouchDevice) {
                var onFirstTouch = function onFirstTouch() {
                    _this.isTouchDevice = true;

                    document.removeEventListener('touchstart', onFirstTouch, false);
                };

                document.addEventListener('touchstart', onFirstTouch, false);
            }

            if (this.subProcessId) {
                this.dummyElement = document.createElementNS('http://www.w3.org/2000/svg', 'rect');
                this.dummyElement.setAttribute('pointer-events', 'visibleFill');
                this.dummyElement.setAttribute('fill', 'none');
                this.element.appendChild(this.dummyElement);
            }

            this.viewportElement = document.createElementNS('http://www.w3.org/2000/svg', 'g');
            this.viewportElement.setAttribute('transform', 'matrix(' + this.params.scaleRatio + ',0,0,' + this.params.scaleRatio + ',' + this.offsetX + ',' + this.offsetY + ')');

            this.element.appendChild(this.viewportElement);

            if (container) {
                container.appendChild(this.element);
            }

            this.dataList.forEach(function (data) {
                if (!data.type) {
                    return;
                }

                _this.createFigure(data.type, data);
            });

            document.addEventListener('mouseup', this.onMouseUp.bind(this));

            this.getElement().addEventListener('click', function (e) {
                if (e.which === 1) {
                    _this.onLeftClick(e);
                }
            });

            this.getElement().addEventListener('mousedown', function (e) {
                if (_this.isTouchDevice) {
                    return;
                }

                e.preventDefault();
                _this.onMouseDown(e);
            });

            this.getElement().addEventListener('mousemove', function (e) {
                if (_this.isTouchDevice) {
                    return;
                }

                e.preventDefault();
                _this.onMouseMove(e);
            });

            this.getElement().addEventListener('mouseleave', this.onMouseLeave.bind(this));
            this.getElement().addEventListener('mouseenter', this.onMouseEnter.bind(this));

            this.getElement().addEventListener('touchmove', this.onTouchMove.bind(this), { passive: true });
            this.getElement().addEventListener('touchstart', this.onTouchStart.bind(this), { passive: true });

            document.addEventListener('touchend', this.onTouchEnd.bind(this), { passive: true });

            var mousewheelHandler = function mousewheelHandler(e) {
                if (_this.params.scaleDisabled || _this.isSubProcess()) {
                    return;
                }

                e.preventDefault();

                var offset = _this.getOffsetFromMouseEvent(e);

                var point = {
                    x: offset.x,
                    y: offset.y
                };

                var delta = Math.max(-1, Math.min(1, e.wheelDelta || -e.detail));
                _this.scale(delta, point);
            };

            this.getElement().addEventListener('mousewheel', mousewheelHandler, false);
            this.getElement().addEventListener("DOMMouseScroll", mousewheelHandler, false);
        }

        _createClass(Canvas, [{
            key: 'getOffsetFromMouseEvent',
            value: function getOffsetFromMouseEvent(e) {
                var offsetX, offsetY;

                var element = this.getElement();

                if (this.dummyElement) {
                    element = this.dummyElement;
                }

                if (e.type === 'touchmove') {
                    offsetX = e.changedTouches[0].clientX - element.getBoundingClientRect().left;
                    offsetY = e.changedTouches[0].clientY - element.getBoundingClientRect().top;
                } else {
                    offsetX = e.clientX - element.getBoundingClientRect().left;
                    offsetY = e.clientY - element.getBoundingClientRect().top;
                }

                return {
                    x: offsetX,
                    y: offsetY
                };
            }
        }, {
            key: 'moveTo',
            value: function moveTo(point) {
                this.offsetX = point.x;
                this.offsetY = point.y;

                var vector = [this.scaleRatio, 0, 0, this.scaleRatio, this.offsetX, this.offsetY];

                this.viewportElement.setAttribute('transform', 'matrix(' + vector.join() + ')');
            }
        }, {
            key: 'move',
            value: function move(deltaPoint) {
                this.offsetX += deltaPoint.x;
                this.offsetY += deltaPoint.y;

                var vector = [this.scaleRatio, 0, 0, this.scaleRatio, this.offsetX, this.offsetY];

                this.viewportElement.setAttribute('transform', 'matrix(' + vector.join() + ')');
            }
        }, {
            key: 'scaleCentered',
            value: function scaleCentered(delta) {
                var rect = this.getElement().getBoundingClientRect();
                var x = Math.round((rect.width - rect.left) / 2);
                var y = Math.round((rect.height - rect.top) / 2);

                var point = { x: x, y: y };

                this.scale(delta, point);
            }
        }, {
            key: 'scale',
            value: function scale(delta, point) {
                var scale = delta * this.params.scaleSensitivity;

                var width = this.getElement().getBoundingClientRect().width;
                var height = this.getElement().getBoundingClientRect().height;

                var currentScaleRatio = this.scaleRatio;
                var nextScaleRatio = this.scaleRatio + scale;

                if (nextScaleRatio > this.params.maxScaleRatio || nextScaleRatio < this.params.minScaleRatio) {
                    return;
                }

                var pX = point.x / currentScaleRatio - this.offsetX / currentScaleRatio;
                var pY = point.y / currentScaleRatio - this.offsetY / currentScaleRatio;

                var offsetX = -(pX * scale);
                var offsetY = -(pY * scale);

                this.offsetX = this.offsetX + offsetX;
                this.offsetY = this.offsetY + offsetY;

                this.scaleRatio = nextScaleRatio;

                var vector = [this.scaleRatio, 0, 0, this.scaleRatio, this.offsetX, this.offsetY];

                this.viewportElement.setAttribute('transform', 'matrix(' + vector.join() + ')');
            }
        }, {
            key: 'triggerEvent',
            value: function triggerEvent(name, o) {
                o = o || {};

                if (this.parentCanvas) {
                    this.parentCanvas.triggerEvent(name, o);

                    return;
                }

                if (this.params.events[name]) {
                    var e = new EspoBpmn.Event(name);

                    for (var i in o) {
                        e[i] = o[i];
                    }

                    this.params.events[name].call(this, e);
                }
            }
        }, {
            key: 'getElement',
            value: function getElement() {
                return this.element;
            }
        }, {
            key: 'getViewportElement',
            value: function getViewportElement() {
                return this.viewportElement;
            }
        }, {
            key: 'getFigure',
            value: function getFigure(id) {
                return this.figureHash[id];
            }
        }, {
            key: 'createFigure',
            value: function createFigure(type, data) {
                var typeKeyName = type.charAt(0).toUpperCase() + type.slice(1);

                if (!data.id) {
                    data.id = Math.random().toString(36).substr(2, 10);
                }

                data.type = type;

                var figure = new EspoBpmn.Figures[typeKeyName](data, this.params, type, this);
                this.figureHash[data.id] = figure;

                figure.addElement();

                figure.afterRender();

                return figure.id;
            }
        }, {
            key: 'remove',
            value: function remove(id, silent, isDependantRemove, removedIdList) {
                var _this2 = this;

                this.removeFromDataList(id);

                removedIdList = removedIdList || [];
                removedIdList.push(id);

                var figure = this.figureHash[id];

                if (figure) {
                    figure.dependantIdList.forEach(function (dId) {
                        _this2.remove(dId, true, true, removedIdList);
                    });

                    this.removeFigure(figure.id, isDependantRemove, false, removedIdList);
                }

                this.triggerEvent('removeFigure', { figureId: id });

                if (!silent) {
                    this.triggerEvent('change');
                }
            }
        }, {
            key: 'removeFromDataList',
            value: function removeFromDataList(id) {
                var indexToRemove = -1;

                this.dataList.forEach(function (data, i) {
                    if (data.id === id) {
                        indexToRemove = i;
                    }
                });

                if (~indexToRemove) {
                    this.dataList.splice(indexToRemove, 1);
                }
            }
        }, {
            key: 'removeFigure',
            value: function removeFigure(id, isDependantRemove, isDummy, removedIdList) {
                if (!(id in this.figureHash)) {
                    return;
                }

                var figure = this.figureHash[id];

                if (!isDummy) {
                    figure.onRemove(isDependantRemove, removedIdList);
                }

                delete this.figureHash[id];

                if (!figure) {
                    return;
                }

                var element = figure.getElement();

                if (element) {
                    this.viewportElement.removeChild(element);
                }
            }
        }, {
            key: 'isSubProcess',
            value: function isSubProcess() {
                return !!this.subProcessId;
            }
        }, {
            key: 'isEventSubProcess',
            value: function isEventSubProcess() {
                if (this.params.isEventSubProcess) {
                    return true;
                }

                if (!this.isSubProcess()) {
                    return false;
                }

                var subProcessFigure = this.getSubProcessFigure();

                return subProcessFigure.isEventSubProcess();
            }
        }, {
            key: 'getSubProcessFigure',
            value: function getSubProcessFigure() {
                if (!this.subProcessId) {
                    return null;
                }

                return this.subProcessFigure;
            }
        }, {
            key: 'setState',
            value: function setState(state, stateData) {
                var _this3 = this;

                this.state = state;
                this.stateData = stateData || {};

                if (state === 'createFigure') {
                    this.createDummyFigure();
                } else {
                    this.removeDummyFigure();
                }

                this.dataList.forEach(function (item) {
                    var figure = _this3.getFigure(item.id);

                    if (!figure || !figure.subCanvas) {
                        return;
                    }

                    figure.subCanvas.setState(state, stateData);
                });
            }
        }, {
            key: 'resetState',
            value: function resetState(noReturn) {
                var _this4 = this;

                if (!noReturn && this.parentCanvas) {
                    this.parentCanvas.resetState();
                    return;
                }

                this.state = null;
                this.stateData = {};

                if (this.dummyFigure) {
                    this.removeDummyFigure();
                }

                this.dataList.forEach(function (item) {
                    var figure = _this4.getFigure(item.id);

                    if (!figure || !figure.subCanvas) {
                        return;
                    }

                    figure.subCanvas.resetState(true);
                });

                this.triggerEvent('resetState');
            }
        }, {
            key: 'getState',
            value: function getState() {
                return this.state;
            }
        }, {
            key: 'createDummyFigure',
            value: function createDummyFigure() {
                var data = {
                    center: { x: -10000, y: -10000 }
                };

                var type = this.stateData.type;

                if (type in this.params.dataDefaults) {
                    for (var attr in this.params.dataDefaults[type]) {
                        data[attr] = this.params.dataDefaults[type][attr];
                    }
                }

                for (var attr in this.stateData) {
                    data[attr] = this.stateData[attr];
                }

                var id = this.createFigure(type, data);

                this.dummyFigure = this.getFigure(id);
                this.dummyFigure.getElement().setAttribute('width', 0);
                this.dummyFigure.getElement().setAttribute('height', 0);
                this.dummyFigure.getElement().style.visibility = 'hidden';
                this.dummyFigure.getElement().setAttribute('pointer-events', 'none');
            }
        }, {
            key: 'removeDummyFigure',
            value: function removeDummyFigure() {
                if (!this.dummyFigure) {
                    return;
                }

                this.removeFigure(this.dummyFigure.id, null, true);

                this.dummyFigure = null;
            }
        }, {
            key: 'onMouseUp',
            value: function onMouseUp(e) {
                if (this.draggedFigure) {
                    this.draggedFigure.finishDragging();
                }

                if (this.resizedFigure) {
                    this.resizedFigure.finishResizing();
                }

                if (this.drawingFlowFigure) {
                    this.cancelFlow();
                }

                if (this.isCanvasDragging) {
                    this.endCanvasDragging();
                }
            }
        }, {
            key: 'onMouseDown',
            value: function onMouseDown(e) {
                if (e.which === 1) {
                    if (!this.draggedFigure && !this.flowStartFigure) {
                        if (!this.isCanvasDragged) {
                            if (this.params.movingDisabled) {
                                return;
                            }

                            if (e.target === this.getElement()) {
                                this.isCanvasDragging = true;
                            }
                        }
                    }
                }
            }
        }, {
            key: 'onTouchEnd',
            value: function onTouchEnd(e) {
                if (this.isFlowDrawingStarted()) {
                    var figure = this.foundEndFigure;

                    if (figure) {
                        if (figure.checkFlowEndAllowed()) {
                            this.endFlow(figure);
                        } else {
                            this.cancelFlow();
                        }
                    } else {
                        this.cancelFlow();
                    }
                }

                if (this.draggedFigure) {
                    this.draggedFigure.finishDragging();
                }

                if (this.resizedFigure) {
                    this.resizedFigure.finishResizing();
                }

                if (this.drawingFlowFigure) {
                    this.cancelFlow();
                }

                if (this.isCanvasDragging) {
                    this.endCanvasDragging();
                }
            }
        }, {
            key: 'onTouchStart',
            value: function onTouchStart(e) {
                this.isTouchDevice = true;

                if (!this.draggedFigure && !this.flowStartFigure) {
                    if (!this.isCanvasDragged) {
                        if (this.params.movingDisabled) {
                            return;
                        }

                        if (e.target === this.getElement()) {
                            this.isCanvasDragging = true;
                            this.moveStartX = e.touches[0].clientX;
                            this.moveStartY = e.touches[0].clientY;
                        }
                    }
                }
            }
        }, {
            key: 'onTouchMove',
            value: function onTouchMove(e) {
                if (this.isCanvasDragging) {
                    if (e.target === this.getElement()) {
                        this.isCanvasDragging = true;

                        var movement = {
                            x: e.touches[0].clientX - this.moveStartX,
                            y: e.touches[0].clientY - this.moveStartY
                        };

                        this.moveStartX = e.touches[0].clientX;
                        this.moveStartY = e.touches[0].clientY;

                        this.move(movement);

                        this.isCanvasDragged = true;
                    }
                }

                if (this.isFlowDrawingStarted()) {
                    var offset = this.getOffsetFromMouseEvent(e);
                    var point = this.getPointFromOffset(offset);

                    var x = point.x;
                    var y = point.y;

                    var figure = this.findFigureUnderPoint({ x: x, y: y });

                    if (figure) {
                        if (this.foundEndFigure && this.foundEndFigure.id !== figure.id) {
                            this.foundEndFigure.flowEndOut();
                        }

                        this.foundEndFigure = figure;

                        figure.flowEndOver();
                    } else {
                        if (this.foundEndFigure) {
                            this.foundEndFigure.flowEndOut();
                            this.foundEndFigure = null;
                        }
                    }
                }
            }
        }, {
            key: 'unshadeShadedFigure',
            value: function unshadeShadedFigure() {
                if (this.shadedFigureId) {
                    this.getFigure(this.shadedFigureId).unshadeElementColors();
                }

                this.shadedFigureId = null;
            }
        }, {
            key: 'hideDummyFigure',
            value: function hideDummyFigure() {
                if (!this.dummyFigure) {
                    return;
                }

                this.dummyFigure.getElement().setAttribute('width', 0);
                this.dummyFigure.getElement().setAttribute('height', 0);
                this.dummyFigure.getElement().style.visibility = 'hidden';
            }
        }, {
            key: 'showDummyFigure',
            value: function showDummyFigure() {
                if (!this.dummyFigure) {
                    return;
                }

                this.dummyFigure.getElement().removeAttribute('width');
                this.dummyFigure.getElement().removeAttribute('height');
                this.dummyFigure.getElement().style.visibility = 'visible';

                if (this.dummyFigure.checkCreateAllowed()) {
                    this.dummyFigure.unsetTransparency();
                } else {
                    this.dummyFigure.setTransparency(0.3);
                }
            }
        }, {
            key: 'onMouseMove',
            value: function onMouseMove(e) {
                if (this.isCanvasDragging) {
                    this.move({ x: e.movementX, y: e.movementY });

                    this.isCanvasDragged = true;
                    this.getElement().style.cursor = 'move';
                }

                if (this.dummyFigure) {
                    e.stopPropagation();
                    var offset = this.getOffsetFromMouseEvent(e);
                    var point = this.getPointFromOffset(offset);

                    var x = point.x;
                    var y = point.y;

                    this.dummyFigure.setElementCenter({ x: x, y: y });
                    this.showDummyFigure();

                    if (this.dummyFigure instanceof EspoBpmn.Figures.EventIntermediateBoundary) {
                        this.dummyFigure.unsetTransparency();

                        var activityFigure = this.findActivityUnderBoundaryEvent(x, y);

                        if (activityFigure) {
                            activityFigure.shadeElementColors(true, true);

                            if (this.shadedFigureId && this.shadedFigureId !== activityFigure.id) {
                                this.unshadeShadedFigure();
                            }

                            this.shadedFigureId = activityFigure.id;
                        } else {
                            this.unshadeShadedFigure();
                            this.dummyFigure.setTransparency(0.5);
                        }

                        if (this.parentCanvas) {
                            this.parentCanvas.unshadeShadedFigure();
                        }
                    }
                }
            }
        }, {
            key: 'onMouseEnter',
            value: function onMouseEnter(e) {
                if (this.dummyFigure) {
                    e.stopPropagation();

                    if (this.parentCanvas) {
                        this.parentCanvas.hideDummyFigure();
                    }

                    var offset = this.getOffsetFromMouseEvent(e);
                    var point = this.getPointFromOffset(offset);

                    var x = point.x;
                    var y = point.y;

                    this.dummyFigure.setElementCenter({ x: x, y: y });
                    this.showDummyFigure();
                }
            }
        }, {
            key: 'onMouseLeave',
            value: function onMouseLeave(e) {
                if (this.dummyFigure) {
                    e.stopPropagation();

                    this.hideDummyFigure();

                    if (this.shadedFigureId) {
                        this.getFigure(this.shadedFigureId).unshadeElementColors();
                    }

                    this.shadedFigureId = null;
                }
            }
        }, {
            key: 'endCanvasDragging',
            value: function endCanvasDragging() {
                var _this5 = this;

                this.isCanvasDragging = null;

                setTimeout(function () {
                    _this5.isCanvasDragged = null;
                }, 100);

                this.getElement().style.cursor = 'default';
            }
        }, {
            key: 'onLeftClick',
            value: function onLeftClick(e) {
                if (!this.isCanvasDragged) {
                    if (this.getState() === 'createFigure') {
                        e.stopPropagation();

                        this.endCanvasDragging();

                        var offset = this.getOffsetFromMouseEvent(e);
                        var point = this.getPointFromOffset(offset);

                        var x = point.x;
                        var y = point.y;

                        if (this.dummyFigure instanceof EspoBpmn.Figures.EventIntermediateBoundary) {
                            this.unshadeShadedFigure();

                            var activityFigure = this.findActivityUnderBoundaryEvent(x, y);

                            if (activityFigure) {
                                if (!this.dummyFigure.checkCreateAllowed(activityFigure)) {
                                    return;
                                }

                                this.processCreateBoundaryFigure({ x: x, y: y }, activityFigure);
                            }

                            return;
                        }

                        if (!this.dummyFigure.checkCreateAllowed()) {
                            return;
                        }

                        this.processCreateFigure({ x: x, y: y });

                        return;
                    }

                    if (this.isJustEndedFlow) {
                        this.isJustEndedFlow = false;

                        e.stopPropagation();
                    }

                    if (e.figureIsClicked) {
                        return;
                    }

                    this.triggerEvent('canvasLeftClick', {
                        originalEvent: e
                    });
                }
            }
        }, {
            key: 'findFigureUnderPoint',
            value: function findFigureUnderPoint(point) {
                var _this6 = this;

                var x = point.x;
                var y = point.y;

                var foundFigure = null;
                var distanceFound = null;

                this.dataList.forEach(function (item) {
                    var figure = _this6.getFigure(item.id);

                    if ((figure instanceof EspoBpmn.Figures.Activity || figure instanceof EspoBpmn.Figures.Circle || figure instanceof EspoBpmn.Figures.Rhombus) && item.center) {
                        var isIn = false;

                        if (figure instanceof EspoBpmn.Figures.Activity) {
                            if (x >= item.center.x - figure.sideXHalfLength && x <= item.center.x + figure.sideXHalfLength && y >= item.center.y - figure.sideYHalfLength && y <= item.center.y + figure.sideYHalfLength) {
                                isIn = true;
                            }
                        } else if (figure instanceof EspoBpmn.Figures.Circle) {
                            if (x >= item.center.x - figure.radius && x <= item.center.x + figure.radius && y >= item.center.y - figure.radius && y <= item.center.y + figure.radius) {
                                isIn = true;
                            }
                        } else if (figure instanceof EspoBpmn.Figures.Rhombus) {
                            if (x >= item.center.x - figure.diagonalHalfLength && x <= item.center.x + figure.diagonalHalfLength && y >= item.center.y - figure.diagonalHalfLength && y <= item.center.y + figure.diagonalHalfLength) {
                                isIn = true;
                            }
                        }

                        if (isIn) {
                            var distance = Math.pow(item.center.x - x, 2) + Math.pow(item.center.y - y, 2);
                            if (distanceFound === null || distance < distanceFound) {
                                foundFigure = figure;
                                distanceFound = distance;
                            }
                        }
                    }
                });

                return foundFigure;
            }
        }, {
            key: 'findActivityUnderBoundaryEvent',
            value: function findActivityUnderBoundaryEvent(x, y) {
                var _this7 = this;

                var foundFigure = null;
                var radius = this.dummyFigure.radius;
                var distanceFound = null;

                this.dataList.forEach(function (item) {
                    var figure = _this7.getFigure(item.id);

                    if (figure instanceof EspoBpmn.Figures.Activity && item.center) {
                        if (figure instanceof EspoBpmn.Figures.SubProcess && figure.isEventSubProcess()) {
                            return;
                        }

                        if (x >= item.center.x - figure.sideXHalfLength - radius && x <= item.center.x + figure.sideXHalfLength + radius && y >= item.center.y - figure.sideYHalfLength - radius && y <= item.center.y + figure.sideYHalfLength + radius && !(x - radius > item.center.x - figure.sideXHalfLength && x + radius < item.center.x + figure.sideXHalfLength && y - radius > item.center.y - figure.sideYHalfLength && y + radius < item.center.y + figure.sideYHalfLength)) {
                            var distance = Math.pow(item.center.x - x, 2) + Math.pow(item.center.y - y, 2);

                            if (distanceFound === null || distance < distanceFound) {
                                foundFigure = figure;
                                distanceFound = distance;
                            }
                        }
                    }
                });

                return foundFigure;
            }
        }, {
            key: 'processCreateBoundaryFigure',
            value: function processCreateBoundaryFigure(point, activityFigure) {
                var type = this.stateData.type;

                var data = {
                    type: type,
                    attachedToId: activityFigure.id
                };

                if (type in this.params.dataDefaults) {
                    for (var attr in this.params.dataDefaults[type]) {
                        data[attr] = this.params.dataDefaults[type][attr];
                    }
                }

                for (var attr in this.stateData) {
                    data[attr] = this.stateData[attr];
                }

                var attachPoint = activityFigure.findClosestAvailableAttachPoint(point);

                if (!attachPoint) {
                    return;
                }

                data.attachPosition = attachPoint.position;
                data.center = activityFigure.getAttachPointByPosition(data.attachPosition);

                this.dataList.push(data);
                var id = this.createFigure(type, data);

                this.getFigure(id).onCreate();

                this.triggerEvent('createFigure', { figureId: id, figureData: data });
                this.triggerEvent('change');
                this.resetState();
            }
        }, {
            key: 'processCreateFigure',
            value: function processCreateFigure(point) {
                var type = this.stateData.type;

                var data = {
                    type: type,
                    center: point
                };

                if (type in this.params.dataDefaults) {
                    var dataDefaults = this._clone(this.params.dataDefaults[type]);

                    for (var attr in dataDefaults) {
                        data[attr] = dataDefaults[attr];
                    }
                }

                for (var attr in this.stateData) {
                    data[attr] = this.stateData[attr];
                }

                this.dataList.push(data);

                var id = this.createFigure(type, data);

                if (this.getFigure(id).isAlignableToGrid()) {
                    this.getFigure(id).alignToGrid();
                }

                this.getFigure(id).onCreate();

                this.triggerEvent('createFigure', { figureId: id, figureData: data });
                this.triggerEvent('change');
                this.resetState();
            }
        }, {
            key: 'getPointFromOffset',
            value: function getPointFromOffset(offset) {
                if (!this.parentCanvas) {
                    var x = (offset.x - this.offsetX) / this.scaleRatio;
                    var y = (offset.y - this.offsetY) / this.scaleRatio;

                    return { x: x, y: y };
                } else {
                    var _x = offset.x / this.mainCanvas.scaleRatio - this.offsetX;
                    var _y = offset.y / this.mainCanvas.scaleRatio - this.offsetY;

                    return { x: _x, y: _y };
                }
            }
        }, {
            key: 'startFlow',
            value: function startFlow(figure) {
                var _this8 = this;

                this.flowStartFigure = figure;

                var startDirectionIsSet = false;
                var startRadius = figure.getParam('circleRadius');

                if (figure instanceof EspoBpmn.Figures.Circle) {
                    startRadius = figure.getParam('circleRadius');
                }

                if (figure instanceof EspoBpmn.Figures.Rhombus) {
                    startRadius = figure.diagonalHalfLength;
                }

                var startDirection = null;

                this.flowListener = function (e) {
                    var offset = _this8.getOffsetFromMouseEvent(e);
                    var point = _this8.getPointFromOffset(offset);

                    var x = point.x;
                    var y = point.y;

                    if (!startDirectionIsSet) {
                        var isCentered = false;

                        if (x < _this8.flowStartFigure.data.center.x + startRadius && x > _this8.flowStartFigure.data.center.x - startRadius) {
                            if (y < _this8.flowStartFigure.data.center.y + startRadius && y > _this8.flowStartFigure.data.center.y - startRadius) {
                                isCentered = true;
                            }
                        }

                        if (!isCentered) {
                            startDirectionIsSet = true;

                            var shiftX = x - figure.data.center.x;
                            var shiftY = y - figure.data.center.y;

                            if (Math.abs(shiftX) > Math.abs(shiftY)) {
                                startDirection = shiftX >= 0 ? 'r' : 'l';
                            } else {
                                startDirection = shiftY > 0 ? 'd' : 'u';
                            }
                        }
                    }

                    if (!_this8.drawingFlowFigure) {
                        var flowDrawingData = {
                            startId: _this8.flowStartFigure.id,
                            endPoint: point,
                            startDirection: startDirection
                        };

                        if (_this8.flowStartFigure.outgoingFlowIsAssociation()) {
                            flowDrawingData.isAssociation = true;
                        }

                        var id = _this8.createFigure('flowDrawing', flowDrawingData);

                        _this8.drawingFlowFigure = _this8.getFigure(id);
                    }

                    if (_this8.flowEndFigure && _this8.checkFlowAllowed(_this8.flowStartFigure, _this8.flowEndFigure)) {
                        _this8.drawingFlowFigure.setEndFigure(_this8.flowEndFigure);
                        _this8.flowEndFigure.shadeElementColors();
                    } else {
                        _this8.drawingFlowFigure.setEndPoint(point);
                    }

                    _this8.drawingFlowFigure.data.startDirection = startDirection;
                    _this8.drawingFlowFigure.reRender();
                };

                this.getElement().addEventListener('mousemove', this.flowListener);

                if (this.isTouchDevice) {
                    this.getElement().addEventListener('touchmove', this.flowListener, { passive: true });
                }

                this.flowStopListener = function (e) {
                    _this8.cancelFlow();
                };

                this.getElement().addEventListener('mouseup', this.flowStopListener);
            }
        }, {
            key: 'endFlow',
            value: function endFlow(figure) {
                if (!this.flowStartFigure) {
                    return;
                }

                if (!this.drawingFlowFigure) {
                    return;
                }

                var isAssociation = this.flowStartFigure.outgoingFlowIsAssociation();

                var startDirection = this.drawingFlowFigure.data.startDirection;

                var startFigure = this.flowStartFigure;
                var endFigure = figure;

                this.cancelFlow();

                if (!this.checkFlowAllowed(startFigure, endFigure)) {
                    return;
                }

                var data = {
                    startId: startFigure.id,
                    endId: endFigure.id,
                    startDirection: startDirection
                };

                if (isAssociation) {
                    data.isAssociation = true;
                }

                endFigure.onFlowEnd(startFigure, figure);

                this.dataList.push(data);

                this.createFigure('flow', data);
                this.triggerEvent('change');
            }
        }, {
            key: 'setFlowEndOver',
            value: function setFlowEndOver(figure) {
                if (figure.id === this.flowStartFigure.id) {
                    return;
                }

                this.flowEndFigure = figure;
            }
        }, {
            key: 'setFlowEndOut',
            value: function setFlowEndOut(figure) {
                if (figure.id === this.flowStartFigure.id) {
                    return;
                }

                this.flowEndFigure = null;
            }
        }, {
            key: 'cancelFlow',
            value: function cancelFlow() {
                this.flowStartFigure = null;
                this.flowEndFigure = null;

                if (this.flowListener) {
                    this.getElement().removeEventListener('mousemove', this.flowListener);

                    if (this.isTouchDevice) {
                        this.getElement().removeEventListener('touchmove', this.flowListener);
                    }
                }

                if (this.flowStopListener) {
                    this.getElement().removeEventListener('mouseup', this.flowStopListener);

                    if (this.isTouchDevice) {
                        this.getElement().removeEventListener('touchend', this.flowStopListener);
                    }
                }

                if (this.drawingFlowFigure) {
                    this.removeFigure(this.drawingFlowFigure.id);
                    this.drawingFlowFigure = null;
                }
            }
        }, {
            key: 'isFlowDrawingStarted',
            value: function isFlowDrawingStarted() {
                return !!this.flowStartFigure;
            }
        }, {
            key: 'checkFlowAllowed',
            value: function checkFlowAllowed(startFigure, endFigure) {
                var _this9 = this;

                if (startFigure.id === endFigure.id) {
                    return false;
                }

                var isExisting = false;

                startFigure.flowFromIdList.forEach(function (flowId) {
                    var flowFigure = _this9.getFigure(flowId);

                    if (!flowFigure) {
                        return;
                    }

                    if (flowFigure.data.endId === endFigure.id) {
                        isExisting = true;
                    }
                });

                if (!startFigure.checkFlowReturnAllowed()) {
                    endFigure.flowFromIdList.forEach(function (flowId) {
                        var flowFigure = _this9.getFigure(flowId);

                        if (!flowFigure) {
                            return;
                        }

                        if (flowFigure.data.endId === startFigure.id) {
                            isExisting = true;
                        }
                    });
                }

                if (isExisting) {
                    return false;
                }

                if (endFigure instanceof EspoBpmn.Figures.EventIntermediateBoundary) {
                    return false;
                }

                if (
                //!endFigure.checkFlowEndAllowed() ||
                !endFigure.checkFlowFromAllowed(startFigure) || !startFigure.checkFlowStartAllowed() || !startFigure.checkFlowToAllowed(endFigure)) {
                    return false;
                }

                return true;
            }
        }, {
            key: '_clone',
            value: function _clone(o) {
                var _out, v, _key;

                if (o === null) {
                    return null;
                }

                _out = Array.isArray(o) ? [] : {};

                for (_key in o) {
                    v = o[_key];

                    _out[_key] = (typeof v === 'undefined' ? 'undefined' : _typeof(v)) === "object" ? this._clone(v) : v;
                }

                return _out;
            }
        }]);

        return Canvas;
    }();
}).call(undefined, EspoBpmn);

(function (EspoBpmn) {

    EspoBpmn.Figures.Base = function () {
        function Base(data, params, type, canvas) {
            _classCallCheck(this, Base);

            this.data = data;
            this.params = params;
            this.type = type;
            this.id = this.data.id;
            this.canvas = canvas;

            var figuresParams = params.figuresParams || {};
            this.figureParams = figuresParams[this.type] || {};

            this.dependantIdList = [];

            this.flowFromIdList = [];
            this.flowToIdList = [];

            this.init();

            this.prepareElement();
        }

        _createClass(Base, [{
            key: 'init',
            value: function init() {}
        }, {
            key: 'isDraggable',
            value: function isDraggable() {
                return true;
            }
        }, {
            key: 'isAlignableToGrid',
            value: function isAlignableToGrid() {
                return true;
            }
        }, {
            key: 'getCanvasFigure',
            value: function getCanvasFigure(id) {
                return this.canvas.getFigure(id);
            }
        }, {
            key: 'isRemovable',
            value: function isRemovable() {
                return true;
            }
        }, {
            key: 'getParam',
            value: function getParam(name) {
                var functionName = 'getParam' + name.charAt(0).toUpperCase() + name.slice(1);

                if (functionName in this) {
                    return this[functionName]();
                }

                if (name in this.figureParams) {
                    return this.figureParams[name];
                }

                return this.params[name];
            }
        }, {
            key: 'getFigureParam',
            value: function getFigureParam(name) {
                var functionName = 'getParam' + name.charAt(0).toUpperCase() + name.slice(1);

                if (functionName in this) {
                    return this[functionName]();
                }

                if (name in this.figureParams) {
                    return this.figureParams[name];
                }
            }
        }, {
            key: 'getGlobalParam',
            value: function getGlobalParam(name) {
                return this.params[name];
            }
        }, {
            key: 'getElement',
            value: function getElement() {
                return this.element;
            }
        }, {
            key: 'checkFlowStartAllowed',
            value: function checkFlowStartAllowed() {
                return !this.flowFromIdList.length;
            }
        }, {
            key: 'checkFlowEndAllowed',
            value: function checkFlowEndAllowed() {
                return true;
            }
        }, {
            key: 'checkFlowToAllowed',
            value: function checkFlowToAllowed(endFigure) {
                return true;
            }
        }, {
            key: 'checkFlowReturnAllowed',
            value: function checkFlowReturnAllowed() {
                return false;
            }
        }, {
            key: 'checkFlowFromAllowed',
            value: function checkFlowFromAllowed(startFigure) {
                return this.checkFlowEndAllowed();
            }
        }, {
            key: 'registerMouseEvents',
            value: function registerMouseEvents() {
                var _this10 = this;

                this.element.onmouseover = function (e) {
                    _this10.onMouseOver(e);
                };

                this.element.onmouseout = function (e) {
                    _this10.onMouseOut(e);
                };

                this.element.onmousedown = function (e) {
                    if (_this10.canvas.isTouchDevice) {
                        return;
                    }

                    e.preventDefault();
                    _this10.onMouseDown(e);
                };

                this.element.onmouseup = function (e) {
                    _this10.onMouseUp(e);
                };

                this.element.onmousemove = function (e) {
                    _this10.onMouseMove(e);
                };

                this.element.onclick = function (e) {
                    if (_this10.canvas.isTouchDevice) {
                        return;
                    }

                    if (e.which === 1) {
                        _this10.onLeftClick(e);
                    } else if (e.which === 2) {
                        _this10.onRightClick(e);
                    }
                };

                this.element.addEventListener('touchstart', function (e) {
                    _this10.onTouchStart(e);
                }, { passive: true });

                this.element.addEventListener('touchend', function (e) {
                    _this10.onTouchEnd(e);
                }, { passive: true });
            }
        }, {
            key: 'flowEndOver',
            value: function flowEndOver() {
                if (this.checkFlowEndAllowed() && this.canvas.isFlowDrawingStarted() && this.canvas.flowStartFigure.checkFlowToAllowed(this)) {
                    if (this.id !== this.canvas.flowStartFigure.id) {
                        this.canvas.setFlowEndOver(this);
                    }
                }
            }
        }, {
            key: 'flowEndOut',
            value: function flowEndOut() {
                if (this.checkFlowEndAllowed() && this.canvas.isFlowDrawingStarted() && this.canvas.flowStartFigure.checkFlowToAllowed(this)) {
                    this.canvas.setFlowEndOut(this);
                }

                this.unshadeElementColors();
            }
        }, {
            key: 'onMouseOver',
            value: function onMouseOver(e) {
                if (this.isEventToSkip(e)) {
                    return;
                }

                this.preHandleEvent(e);

                if (this.canvas.getState() === 'createFlow') {
                    if (!this.canvas.flowStartFigure) {
                        this.shadeElementColors();

                        return;
                    }

                    this.flowEndOver();

                    return;
                }

                if (this.canvas.figureIsDragged) {
                    return;
                }

                if (this.canvas.getState() === 'createFigure') {
                    return;
                }

                if (this.canvas.getState() === 'remove') {
                    if (!this.isRemovable()) {
                        return;
                    }

                    this.showRemovalIndication();

                    return;
                }

                this.shadeElementColors();
            }
        }, {
            key: 'onMouseOut',
            value: function onMouseOut(e) {
                if (this.isEventToSkip(e)) {
                    return;
                }

                this.preHandleEvent(e);

                if (this.canvas.getState() === 'createFlow') {
                    this.flowEndOut();

                    return;
                }

                if (this.canvas.figureIsDragged) {
                    return;
                }

                if (this.canvas.getState() === 'remove') {
                    this.hideRemovalIndication();

                    return;
                }
                this.unshadeElementColors();
            }
        }, {
            key: 'onMouseDown',
            value: function onMouseDown(e) {
                if (this.isEventToSkip(e)) {
                    return;
                }

                this.preHandleEvent(e);

                if (this.canvas.getState() === 'createFlow') {
                    if (this.checkFlowStartAllowed()) {
                        this.canvas.startFlow(this);
                    }

                    return;
                }

                if (this.canvas.getState() === 'remove') {
                    return;
                }

                if (this.canvas.getState() === 'createFigure') {
                    return;
                }

                if (this.isDraggable() && !this.blockDragging && !this.canvas.isReadOnly) {
                    if (e.which === 1) {
                        if (this.canvas.params.draggingDisabled) {
                            return;
                        }

                        this.startDragging();
                    }
                }
            }
        }, {
            key: 'onTouchStart',
            value: function onTouchStart(e) {
                this.canvas.isTouchDevice = true;

                if (this.canvas.getState() === 'createFlow') {
                    if (this.checkFlowStartAllowed()) {
                        this.canvas.startFlow(this);
                    }

                    return;
                }

                if (this.canvas.getState() === 'remove') {
                    return;
                }

                if (this.canvas.getState() === 'createFigure') {
                    return;
                }

                if (this.isDraggable() && !this.blockDragging && !this.canvas.isReadOnly) {
                    if (e.type === 'touchstart') {
                        e.stopPropagation();

                        if (this.canvas.params.draggingDisabled) {
                            return;
                        }

                        this.startDragging();
                    }
                }
            }
        }, {
            key: 'onTouchEnd',
            value: function onTouchEnd(e) {
                if (this.canvas.getState() === 'createFlow') {
                    return;
                }

                this.onLeftClick(e);
            }
        }, {
            key: 'onMouseUp',
            value: function onMouseUp(e) {
                if (this.isEventToSkip(e)) {
                    return;
                }

                this.preHandleEvent(e);

                if (this.canvas.getState() === 'createFlow') {
                    if (this.checkFlowEndAllowed()) {
                        this.canvas.endFlow(this);
                    } else {
                        this.canvas.cancelFlow();
                    }

                    this.canvas.isJustEndedFlow = true;

                    return;
                }
            }
        }, {
            key: 'isEventToSkip',
            value: function isEventToSkip(e) {
                if (e.subProcessId && e.figureId !== this.id) {
                    return true;
                }
            }
        }, {
            key: 'preHandleEvent',
            value: function preHandleEvent(e) {
                if (this.canvas.isSubProcess()) {
                    e.subProcessId = this.canvas.subProcessId;
                }

                e.figureId = this.id;
            }
        }, {
            key: 'onLeftClick',
            value: function onLeftClick(e) {
                if (this.isEventToSkip(e)) {
                    return;
                }

                this.preHandleEvent(e);

                if (this.clickIsBlocked) {
                    return;
                }

                if (this.canvas.getState() === 'remove') {
                    this.canvas.endCanvasDragging();

                    if (!this.isRemovable()) {
                        return;
                    }

                    this.canvas.remove(this.id);

                    return;
                }

                if (this.canvas.getState() === 'createFigure') {
                    return;
                }

                if (this.isDragged) {
                    return;
                }

                if (this.isResized) {
                    return;
                }

                this.canvas.triggerEvent('figureLeftClick', {
                    figureId: this.id,
                    originalEvent: e
                });

                e.figureIsClicked = true;
            }
        }, {
            key: 'onRightClick',
            value: function onRightClick(e) {
                if (this.isEventToSkip(e)) {
                    return;
                }

                this.preHandleEvent(e);

                if (this.clickIsBlocked) {
                    return;
                }

                if (this.isDragged) {
                    return;
                }

                this.canvas.triggerEvent('figureRightClick', {
                    figureId: this.id,
                    originalEvent: e
                });
            }
        }, {
            key: 'startDragging',
            value: function startDragging() {
                this.isDragging = true;
                this.setIsNotDragged();
                this.canvas.draggedFigure = this;

                this.draggingListener = this.draggingProcess.bind(this);

                this.canvas.getElement().addEventListener('mousemove', this.draggingListener);
                this.canvas.getElement().addEventListener('touchmove', this.draggingListener, { passive: true });
            }
        }, {
            key: 'draggingProcess',
            value: function draggingProcess(e) {
                var _this11 = this;

                this.getElement().style.cursor = 'move';

                if (this.isDragged) {
                    var offset = this.canvas.getOffsetFromMouseEvent(e);
                    var point = this.canvas.getPointFromOffset(offset);

                    var x = point.x;
                    var y = point.y;

                    if (this.canvas.draggingOffsetX !== null) {
                        x = x - this.canvas.draggingOffsetX;
                        y = y - this.canvas.draggingOffsetY;
                    }

                    this.setElementCenter({ x: x, y: y });
                    this.fetchFromDom();
                    this.rePositionDependencies();
                    this.reRenderDependencies();
                    this.onDrag();

                    return;
                }

                this.setIsDragged();

                if (this.data.center) {
                    var _offset = this.canvas.getOffsetFromMouseEvent(e);
                    var _point = this.canvas.getPointFromOffset(_offset);
                    var _x2 = _point.x;
                    var _y2 = _point.y;

                    this.canvas.draggingOffsetX = _x2 - this.data.center.x;
                    this.canvas.draggingOffsetY = _y2 - this.data.center.y;
                }

                this.canvas.getViewportElement().appendChild(this.getElement());

                this.dependantIdList.forEach(function (depId) {
                    var depElement = _this11.canvas.getFigure(depId).getElement();

                    _this11.canvas.getViewportElement().appendChild(depElement);
                });
            }
        }, {
            key: 'setIsDragged',
            value: function setIsDragged() {
                this.isDragged = true;
                this.canvas.figureIsDragged = true;
            }
        }, {
            key: 'setIsNotDragged',
            value: function setIsNotDragged() {
                this.isDragged = false;
                this.canvas.figureIsDragged = false;
            }
        }, {
            key: 'finishDragging',
            value: function finishDragging() {
                var _this12 = this;

                this.isDragging = false;

                if (this.canvas.draggedFigure) {
                    this.canvas.draggedFigure = null;
                    this.canvas.getElement().removeEventListener('mousemove', this.draggingListener);
                    this.canvas.getElement().removeEventListener('touchmove', this.draggingListener);
                    this.canvas.draggingOffsetX = null;
                    this.canvas.draggingOffsetY = null;
                }

                if (this.isDragged) {
                    this.setIsNotDragged();
                    if (this.isAlignableToGrid()) {
                        this.alignToGrid();
                    }

                    this.fetchFromDom();

                    if (this.canvas.subProcessFigure) {
                        this.canvas.subProcessFigure.fitSizeForFigure(this);
                    }

                    this.canvas.triggerEvent('change');
                }

                this.dependantIdList.forEach(function (depId) {
                    var depElement = _this12.canvas.getFigure(depId).getElement();
                    _this12.canvas.getViewportElement().appendChild(depElement);
                });

                this.getElement().style.cursor = 'pointer';

                this.blockDragging = true;

                setTimeout(function () {
                    _this12.blockDragging = null;
                }, 200);

                this.unshadeElementColors();
            }
        }, {
            key: 'onDrag',
            value: function onDrag() {}
        }, {
            key: 'alignToGrid',
            value: function alignToGrid() {
                this.data.center.x = this.alignCoordinateToGrid(Math.round(this.data.center.x));
                this.data.center.y = this.alignCoordinateToGrid(Math.round(this.data.center.y));

                this.rePositionDependencies();
                this.reRenderDependencies();
                this.reRender();
            }
        }, {
            key: 'rePositionDependencies',
            value: function rePositionDependencies() {}
        }, {
            key: 'reRenderDependencies',
            value: function reRenderDependencies() {
                var _this13 = this;

                this.dependantIdList.forEach(function (id) {
                    var figure = _this13.canvas.getFigure(id);

                    if (!figure) {
                        return;
                    }

                    figure.reRender();
                    figure.reRenderDependencies();
                });
            }
        }, {
            key: 'reRender',
            value: function reRender() {
                this.removeElement();
                this.prepareElement();
                this.addElement();

                this.afterRender();
            }
        }, {
            key: 'afterRender',
            value: function afterRender() {}
        }, {
            key: 'onRemove',
            value: function onRemove() {}
        }, {
            key: 'onCreate',
            value: function onCreate() {}
        }, {
            key: 'onFlowEnd',
            value: function onFlowEnd(startFigure, flowFigure) {}
        }, {
            key: 'alignCoordinateToGrid',
            value: function alignCoordinateToGrid(x) {
                var reminderX = Math.floor(x % this.params.canvasGridSize);

                if (reminderX > this.params.canvasGridSize / 2) {
                    x = x + (this.params.canvasGridSize - reminderX);
                } else {
                    x = x - reminderX;
                }

                return x;
            }
        }, {
            key: 'onMouseMove',
            value: function onMouseMove(e) {}
        }, {
            key: 'removeElement',
            value: function removeElement() {
                if (!this.element) {
                    return;
                }

                this.canvas.viewportElement.removeChild(this.element);
                delete this.element;
            }
        }, {
            key: 'addElement',
            value: function addElement() {
                this.canvas.viewportElement.appendChild(this.element);
            }
        }, {
            key: 'shadeColor',
            value: function shadeColor(color, percent) {
                var num = parseInt(color.slice(1), 16),
                    amt = Math.round(2.55 * percent),
                    R = (num >> 16) + amt,
                    G = (num >> 8 & 0x00FF) + amt,
                    B = (num & 0x0000FF) + amt;

                return "#" + (0x1000000 + (R < 255 ? R < 1 ? 0 : R : 255) * 0x10000 + (G < 255 ? G < 1 ? 0 : G : 255) * 0x100 + (B < 255 ? B < 1 ? 0 : B : 255)).toString(16).slice(1);
            }
        }, {
            key: 'wrapText',
            value: function wrapText(text, width) {
                var words = text.split(' ');

                var svgDocument = document;

                //var textElement = svgDocument.getElementById('multiline-text');
                var tspanElement = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');
                var textNode = svgDocument.createTextNode(words[0]);
                var textElement = this.textElement;

                while (textElement.firstChild) {
                    textElement.removeChild(textElement.firstChild);
                }

                tspanElement.appendChild(textNode);
                textElement.appendChild(tspanElement);

                for (var i = 1; i < words.length; i++) {
                    var len = tspanElement.firstChild.data.length;

                    tspanElement.firstChild.data += ' ' + words[i];

                    if (tspanElement.getComputedTextLength() > width) {
                        tspanElement.firstChild.data = tspanElement.firstChild.data.slice(0, len);

                        tspanElement = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');

                        tspanElement.setAttributeNS(null, 'x', 0);
                        tspanElement.setAttributeNS(null, 'dy', this.getParam('textLinePaddingTop') + this.getParam('fontSize'));

                        textNode = svgDocument.createTextNode(words[i]);
                        tspanElement.appendChild(textNode);
                        textElement.appendChild(tspanElement);
                    }
                }
            }
        }, {
            key: 'outgoingFlowIsAssociation',
            value: function outgoingFlowIsAssociation() {
                return false;
            }
        }, {
            key: 'shadeElementColors',
            value: function shadeElementColors() {}
        }, {
            key: 'unshadeElementColors',
            value: function unshadeElementColors() {}
        }, {
            key: 'showRemovalIndication',
            value: function showRemovalIndication() {}
        }, {
            key: 'hideRemovalIndication',
            value: function hideRemovalIndication() {}
        }, {
            key: 'isInEventSubProcess',
            value: function isInEventSubProcess() {
                return this.canvas.isEventSubProcess();
            }
        }, {
            key: 'isInSubProcess',
            value: function isInSubProcess() {
                return this.canvas.isSubProcess();
            }
        }, {
            key: 'getSubProcessId',
            value: function getSubProcessId() {
                return this.canvas.subProcessId;
            }
        }, {
            key: 'checkCreateAllowed',
            value: function checkCreateAllowed() {
                return true;
            }
        }]);

        return Base;
    }();
}).call(undefined, EspoBpmn);

(function (EspoBpmn) {

    EspoBpmn.Figures.Flow = function (_EspoBpmn$Figures$Bas) {
        _inherits(Flow, _EspoBpmn$Figures$Bas);

        function Flow() {
            _classCallCheck(this, Flow);

            return _possibleConstructorReturn(this, (Flow.__proto__ || Object.getPrototypeOf(Flow)).apply(this, arguments));
        }

        _createClass(Flow, [{
            key: 'init',
            value: function init() {
                if (this.data.startId) {
                    var startFigure = this.canvas.getFigure(this.data.startId);

                    if (startFigure) {
                        if (!~startFigure.dependantIdList.indexOf(this.id)) {
                            startFigure.dependantIdList.push(this.id);
                        }

                        if (!~startFigure.flowFromIdList.indexOf(this.id)) {
                            startFigure.flowFromIdList.push(this.id);
                        }
                    }
                }

                if (this.data.endId) {
                    var endFigure = this.canvas.getFigure(this.data.endId);

                    if (endFigure) {
                        if (!~endFigure.dependantIdList.indexOf(this.id)) {
                            endFigure.dependantIdList.push(this.id);
                        }

                        if (!~endFigure.flowToIdList.indexOf(this.id)) {
                            endFigure.flowToIdList.push(this.id);
                        }
                    }
                }
            }
        }, {
            key: 'isAlignableToGrid',
            value: function isAlignableToGrid() {
                return false;
            }
        }, {
            key: 'onRemove',
            value: function onRemove(isDependantRemove, removedIdList) {
                if (this.data.startId) {
                    var startFigure = this.canvas.getFigure(this.data.startId);

                    if (startFigure) {
                        var index = startFigure.flowFromIdList.indexOf(this.id);

                        if (~index) {
                            startFigure.flowFromIdList.splice(index, 1);
                        }

                        if (!isDependantRemove || removedIdList && !~removedIdList.indexOf(startFigure.id)) {
                            var _index = startFigure.dependantIdList.indexOf(this.id);

                            if (~_index) {
                                startFigure.dependantIdList.splice(_index, 1);
                            }
                        }
                    }
                }

                if (this.data.endId) {
                    var endFigure = this.canvas.getFigure(this.data.endId);

                    if (endFigure) {
                        var _index2 = endFigure.flowToIdList.indexOf(this.id);

                        if (~_index2) {
                            endFigure.flowToIdList.splice(_index2, 1);
                        }

                        if (!(this instanceof EspoBpmn.Figures.FlowDrawing) && endFigure.data.isForCompensation && !endFigure.flowToIdList.length) {
                            endFigure.data.isForCompensation = false;

                            endFigure.reRender();
                        }

                        if (!isDependantRemove || removedIdList && !~removedIdList.indexOf(endFigure.id)) {
                            var _index3 = endFigure.dependantIdList.indexOf(this.id);

                            if (~_index3) {
                                endFigure.dependantIdList.splice(_index3, 1);
                            }
                        }
                    }
                }
            }
        }, {
            key: 'draggingProcess',
            value: function draggingProcess(e) {
                this.canvas.getElement().style.cursor = 'move';

                var startFigure = this.canvas.getFigure(this.data.startId);
                var startRadius = startFigure.getParam('circleRadius');

                if (startFigure instanceof EspoBpmn.Figures.Circle) {
                    startRadius = startFigure.getParam('circleRadius');
                }

                if (startFigure instanceof EspoBpmn.Figures.Rhombus) {
                    startRadius = startFigure.diagonalHalfLength;
                }

                if (this.isDragged) {
                    var offset = this.canvas.getOffsetFromMouseEvent(e);
                    var point = this.canvas.getPointFromOffset(offset);
                    var x = point.x;
                    var y = point.y;

                    var isCentered = false;
                    var startDirection = null;

                    if (x < startFigure.data.center.x + startRadius && x > startFigure.data.center.x - startRadius) {
                        if (y < startFigure.data.center.y + startRadius && y > startFigure.data.center.y - startRadius) {
                            isCentered = true;
                        }
                    }

                    if (!isCentered) {
                        var shiftX = x - startFigure.data.center.x;
                        var shiftY = y - startFigure.data.center.y;
                        if (Math.abs(shiftX) > Math.abs(shiftY)) {
                            startDirection = shiftX >= 0 ? 'r' : 'l';
                        } else {
                            startDirection = shiftY > 0 ? 'd' : 'u';
                        }
                    }

                    this.data.startDirection = startDirection;
                    this.reRender();
                } else {
                    this.setIsDragged();
                }
            }
        }, {
            key: 'finishDragging',
            value: function finishDragging() {
                _get(Flow.prototype.__proto__ || Object.getPrototypeOf(Flow.prototype), 'finishDragging', this).call(this);
                this.canvas.getElement().style.cursor = 'default';
            }
        }, {
            key: 'alignToGrid',
            value: function alignToGrid() {}
        }, {
            key: 'fetchFromDom',
            value: function fetchFromDom() {}
        }, {
            key: 'prepareElement',
            value: function prepareElement() {
                if (this.element) {
                    this.removeElement();
                }

                this.element = document.createElementNS('http://www.w3.org/2000/svg', 'g');
                this.element.setAttribute('data-id', this.data.id);

                this.textElement = null;

                if (this.data.text && this.data.text !== '') {
                    this.textElement = document.createElementNS('http://www.w3.org/2000/svg', 'text');
                    this.textElement.setAttribute('font-size', this.getParam('fontSize'));
                    this.textElement.setAttribute('fill', this.getParam('textColor'));
                    this.textElement.setAttribute('style', 'pointer-events: none;user-select: none;' + '-webkit-user-select: none;-moz-user-select: none;-ms-user-select: none;');
                }

                var startId = this.data.startId;
                var endId = this.data.endId;
                var endPoint = this.data.endPoint;

                if (!startId || !endId && !endPoint) {
                    throw new Error("Could not create path flow.");
                }

                var startFigure = this.getCanvasFigure(startId);
                var endFigure = null;

                if (endId) {
                    endFigure = this.getCanvasFigure(endId);
                }

                if (!startFigure || endId && !endFigure) {
                    throw new Error("Could not create path flow.");
                }

                var startPoint = void 0;

                var startCenter = startFigure.data.center;
                var endCenter = null;

                if (endFigure) {
                    endCenter = endFigure.data.center;
                } else {
                    endCenter = this.data.endPoint;
                }

                var startRadius = void 0;
                var endRadius = 0;

                var path = void 0;
                startRadius = startFigure.getParam('circleRadius');

                if (endFigure) {
                    endRadius = endFigure.getParam('circleRadius');
                }

                if (startFigure instanceof EspoBpmn.Figures.Circle) {
                    startRadius = startFigure.getParam('circleRadius');
                }

                if (endFigure instanceof EspoBpmn.Figures.Circle) {
                    endRadius = endFigure.getParam('circleRadius');
                }

                if (startFigure instanceof EspoBpmn.Figures.Rhombus) {
                    startRadius = startFigure.diagonalHalfLength;
                }

                if (endFigure instanceof EspoBpmn.Figures.Rhombus) {
                    endRadius = endFigure.diagonalHalfLength;
                }

                var verticalDirection = '';
                var horizontalDirection = '';

                if (startCenter.y > endCenter.y) {
                    verticalDirection = 'u';
                } else if (startCenter.y < endCenter.y) {
                    verticalDirection = 'd';
                }

                if (startFigure instanceof EspoBpmn.Figures.Rectangle) {
                    startRadius = Math.min(startFigure.sideXHalfLength, startFigure.sideYHalfLength);
                }
                if (endFigure instanceof EspoBpmn.Figures.Rectangle) {
                    endRadius = Math.min(endFigure.sideXHalfLength, endFigure.sideYHalfLength);
                }

                if (startCenter.x > endCenter.x) {
                    horizontalDirection = 'l';
                } else if (startCenter.x < endCenter.x) {
                    horizontalDirection = 'r';
                }

                var overridenStartDirection = this.data.startDirection || '';

                var isOpposite = false;
                var oppositeMultiplier = 1;

                if (!overridenStartDirection) {
                    if (startCenter.y === endCenter.y) {
                        path = horizontalDirection;
                    } else if (startCenter.x === endCenter.x) {
                        path = verticalDirection;
                    } else if (Math.abs(startCenter.y - endCenter.y) < startRadius + endRadius) {
                        path = horizontalDirection + verticalDirection + horizontalDirection;
                    } else {
                        path = verticalDirection + horizontalDirection;
                    }
                } else if (overridenStartDirection === 'r' || overridenStartDirection === 'l') {
                    if (startFigure instanceof EspoBpmn.Figures.Rectangle) {
                        startRadius = startFigure.sideXHalfLength;
                    }

                    var _oppositeMultiplier = 1;

                    if (overridenStartDirection === 'l') {
                        _oppositeMultiplier = -1;
                    }

                    isOpposite = (endCenter.x - startCenter.x - startRadius * _oppositeMultiplier) * _oppositeMultiplier <= 0;

                    if (startCenter.y === endCenter.y) {
                        if (!isOpposite) {
                            path = overridenStartDirection;
                        } else {
                            path = overridenStartDirection + 'u' + this.turnBackDirection(overridenStartDirection);
                        }
                    } else if (startCenter.x === endCenter.x) {
                        path = overridenStartDirection + verticalDirection + this.turnBackDirection(overridenStartDirection);
                    } else if (Math.abs(startCenter.y - endCenter.y) < startRadius + endRadius) {
                        if (!isOpposite) {
                            path = overridenStartDirection + verticalDirection + overridenStartDirection;
                        } else {
                            path = overridenStartDirection + verticalDirection + this.turnBackDirection(overridenStartDirection);
                        }
                    } else {
                        if (!isOpposite) {
                            path = overridenStartDirection + verticalDirection;
                        } else {
                            path = overridenStartDirection + verticalDirection + this.turnBackDirection(overridenStartDirection);
                        }
                    }
                } else if (overridenStartDirection === 'd' || overridenStartDirection === 'u') {
                    if (startFigure instanceof EspoBpmn.Figures.Rectangle) {
                        startRadius = startFigure.sideYHalfLength;
                    }

                    var _oppositeMultiplier2 = 1;

                    if (overridenStartDirection === 'u') {
                        _oppositeMultiplier2 = -1;
                    }

                    isOpposite = (endCenter.y - startCenter.y - startRadius * _oppositeMultiplier2) * _oppositeMultiplier2 <= 0;

                    if (startCenter.x === endCenter.x) {
                        if (!isOpposite) {
                            path = overridenStartDirection;
                        } else {
                            path = overridenStartDirection + 'r' + this.turnBackDirection(overridenStartDirection);
                        }
                    } else if (startCenter.y === endCenter.y) {
                        path = overridenStartDirection + horizontalDirection + this.turnBackDirection(overridenStartDirection);
                    } else if (Math.abs(startCenter.x - endCenter.x) < startRadius + endRadius) {
                        if (!isOpposite) {
                            path = overridenStartDirection + horizontalDirection + overridenStartDirection;
                        } else {
                            path = overridenStartDirection + horizontalDirection + this.turnBackDirection(overridenStartDirection);
                        }
                    } else {
                        if (!isOpposite) {
                            path = overridenStartDirection + horizontalDirection;
                        } else {
                            path = overridenStartDirection + horizontalDirection + this.turnBackDirection(overridenStartDirection);
                        }
                    }
                }

                if (startFigure instanceof EspoBpmn.Figures.Rectangle) {
                    startRadius = startFigure.sideXHalfLength;

                    if (path.charAt(0) === 'u' || path.charAt(0) === 'd') {
                        startRadius = startFigure.sideYHalfLength;
                    }
                }

                if (!overridenStartDirection) {
                    if (startCenter.x !== endCenter.x) {
                        if (Math.abs(startCenter.x - endCenter.x) < startRadius + endRadius) {
                            path += verticalDirection;
                        }
                    }
                }

                if (endFigure instanceof EspoBpmn.Figures.Rectangle) {
                    endRadius = endFigure.sideXHalfLength;

                    if (path.charAt(path.length - 1) === 'u' || path.charAt(path.length - 1) === 'd') {
                        endRadius = endFigure.sideYHalfLength;
                    }
                }

                var startVerticalShift = startRadius;
                var endVerticalShift = endRadius;

                startPoint = {
                    x: startCenter.x,
                    y: startCenter.y
                };

                endPoint = {
                    x: endCenter.x,
                    y: endCenter.y
                };

                if (path.charAt(0) === 'u') {
                    startPoint.y -= startVerticalShift;
                } else if (path.charAt(0) === 'd') {
                    startPoint.y += startVerticalShift;
                } else if (path.charAt(0) === 'r') {
                    startPoint.x += startVerticalShift;
                } else if (path.charAt(0) === 'l') {
                    startPoint.x -= startVerticalShift;
                }

                if (path.slice(-1) === 'u') {
                    endPoint.y += endVerticalShift;
                } else if (path.slice(-1) === 'd') {
                    endPoint.y -= endVerticalShift;
                } else if (path.slice(-1) === 'r') {
                    endPoint.x -= endVerticalShift;
                } else if (path.slice(-1) === 'l') {
                    endPoint.x += endVerticalShift;
                }

                var pointList = [];

                pointList.push(startPoint);

                if (path.length === 4) {
                    path = path.substr(0, 2);
                }

                if (path.length === 2) {
                    var middlePoint = {
                        x: null,
                        y: null
                    };

                    if (path.charAt(0) === 'u' || path.charAt(0) === 'd') {
                        middlePoint.x = startPoint.x;
                        middlePoint.y = endPoint.y;
                    } else {
                        middlePoint.x = endPoint.x;
                        middlePoint.y = startPoint.y;
                    }

                    pointList.push(middlePoint);
                } else if (path.length === 3) {
                    var middlePoint1 = {
                        x: null,
                        y: null
                    };

                    if (path.charAt(0) === 'u' || path.charAt(0) === 'd') {
                        middlePoint1.x = startPoint.x;

                        if (isOpposite) {
                            middlePoint1.y = startPoint.y + Math.max(startRadius, endRadius) * oppositeMultiplier;
                        } else {
                            middlePoint1.y = startPoint.y + Math.floor((endPoint.y - startPoint.y) / 2);
                        }
                    } else {
                        if (isOpposite) {
                            middlePoint1.x = startPoint.x + Math.max(startRadius, endRadius) * oppositeMultiplier;
                        } else {
                            middlePoint1.x = startPoint.x + Math.floor((endPoint.x - startPoint.x) / 2);
                        }

                        middlePoint1.y = startPoint.y;
                    }

                    pointList.push(middlePoint1);

                    var middlePoint2 = {
                        x: null,
                        y: null
                    };

                    if (path.charAt(0) === 'u' || path.charAt(0) === 'd') {
                        middlePoint2.x = endPoint.x;
                        middlePoint2.y = middlePoint1.y;
                    } else {
                        middlePoint2.x = middlePoint1.x;
                        middlePoint2.y = endPoint.y;
                    }

                    pointList.push(middlePoint2);
                }

                pointList.push(endPoint);

                this.markerElement = document.createElementNS('http://www.w3.org/2000/svg', 'marker');
                this.defsElement = document.createElementNS('http://www.w3.org/2000/svg', 'defs');
                this.polylineElement = document.createElementNS('http://www.w3.org/2000/svg', 'polyline');
                this.pathArrowElement = document.createElementNS('http://www.w3.org/2000/svg', 'path');

                this.defsElement.appendChild(this.markerElement);
                this.markerElement.appendChild(this.pathArrowElement);

                this.markerElement.setAttribute('markerWidth', '8');
                this.markerElement.setAttribute('markerHeight', '8');
                this.markerElement.setAttribute('orient', 'auto');
                this.markerElement.setAttribute('id', 'marker-' + this.id);
                this.markerElement.setAttribute('stroke', this.getParam('strokeColor'));
                this.markerElement.setAttribute('fill', this.getParam('strokeColor'));

                this.markerElement.setAttribute('markerUnits', 'strokeWidth');

                this.markerElement.setAttribute('refX', 7);
                this.markerElement.setAttribute('refY', 4);

                this.pathArrowElement.setAttribute('d', 'M 1 2 6 4 1 6 Z');

                this.polylineElement.setAttribute('stroke-width', this.getParam('strokeWidth'));
                this.polylineElement.setAttribute('stroke', this.getParam('strokeColor'));
                this.polylineElement.setAttribute('fill', 'none');
                this.polylineElement.setAttribute('marker-end', 'url(#' + 'marker-' + this.id + ')');

                this.element.setAttribute('style', 'cursor: pointer');

                var pointsStringList = [];

                pointList.forEach(function (point) {
                    pointsStringList.push(point.x + ',' + point.y);
                });

                this.polylineElement.setAttribute('points', pointsStringList.join(' '));

                this.element.appendChild(this.defsElement);
                this.element.appendChild(this.polylineElement);

                this.slashElement = null;

                if (this.data.isDefault) {
                    var yShift = 0;
                    var xShift = 0;
                    var angle = 45;

                    if (path.charAt(0) === 'u') {
                        yShift = -this.getParam('flowDefaultSlashShift');
                    } else if (path.charAt(0) === 'd') {
                        yShift = this.getParam('flowDefaultSlashShift');
                    } else if (path.charAt(0) === 'l') {
                        xShift = -this.getParam('flowDefaultSlashShift');
                        angle = 135;
                    } else if (path.charAt(0) === 'r') {
                        xShift = this.getParam('flowDefaultSlashShift');
                        angle = 135;
                    }

                    this.slashElement = document.createElementNS('http://www.w3.org/2000/svg', 'polyline');
                    this.slashElement.setAttribute('stroke', this.getParam('strokeColor'));
                    this.slashElement.setAttribute('stroke-width', this.getParam('strokeWidth'));

                    var dashX = pointList[0].x + xShift;
                    var dashY = pointList[0].y + yShift;

                    if (pointList.length > 1) {
                        if (path.charAt(0) === 'u') {
                            if (dashY <= pointList[1].y) {
                                dashY = pointList[0].y - Math.round((pointList[0].y - pointList[1].y) / 2);
                            }
                        } else if (path.charAt(0) === 'd') {
                            if (dashY >= pointList[1].y) {
                                dashY = pointList[0].y + Math.round((pointList[1].y - pointList[0].y) / 2);
                            }
                        } else if (path.charAt(0) === 'l') {
                            if (dashX <= pointList[1].x) {
                                dashX = pointList[0].x - Math.round((pointList[0].x - pointList[1].x) / 2);
                            }
                        } else if (path.charAt(0) === 'r') {
                            if (dashX >= pointList[1].x) {
                                dashX = pointList[0].x + Math.round((pointList[1].x - pointList[0].x) / 2);
                            }
                        }
                    }

                    this.slashElement.setAttribute('transform', 'translate(' + dashX + ' ' + dashY + ') rotate(' + angle + ')');

                    var slashHalfLength = Math.round(this.getParam('flowDefaultSlashLength') / 2);

                    this.slashElement.setAttribute('points', '-' + slashHalfLength + ',0 ' + slashHalfLength + ',0');

                    this.element.appendChild(this.slashElement);
                }

                if (this.data.isAssociation) {
                    this.polylineElement.setAttribute('stroke-linecap', 'round');
                    this.polylineElement.setAttribute('stroke-dasharray', this.getParam('dottedLineAssociationDashArray'));
                }

                if (this.textElement) {
                    var _yShift = 0;
                    var _xShift = 0;

                    if (path.charAt(0) === 'u') {
                        _yShift = -Math.round(this.getParam('fontSize') / 2);
                        _xShift = +this.getParam('textMarginSide');
                    } else if (path.charAt(0) === 'd') {
                        _yShift = Math.round(this.getParam('fontSize') / 2) + this.getParam('textMarginTop');
                        _xShift = +this.getParam('textMarginSide');
                    } else if (path.charAt(0) === 'l') {
                        _yShift = -Math.round(this.getParam('fontSize') / 2);
                        _xShift = -this.getParam('textMarginSide');

                        this.textElement.setAttribute('text-anchor', 'end');
                    } else if (path.charAt(0) === 'r') {
                        _yShift = -Math.round(this.getParam('fontSize') / 2);
                        _xShift = +this.getParam('textMarginSide');
                    }

                    this.textElement.setAttribute('y', pointList[0].y + _yShift);
                    this.textElement.setAttribute('x', pointList[0].x + _xShift);
                    this.element.appendChild(this.textElement);
                }

                this.registerMouseEvents();
            }
        }, {
            key: 'isDraggable',
            value: function isDraggable() {
                return true;
            }
        }, {
            key: 'onMouseOver',
            value: function onMouseOver(e) {
                _get(Flow.prototype.__proto__ || Object.getPrototypeOf(Flow.prototype), 'onMouseOver', this).call(this, e);

                if (this.canvas.getState() === 'remove') {
                    return;
                }

                var color = this.shadeColor(this.getParam('strokeColor'), -10);
                this.polylineElement.setAttribute('stroke', color);

                if (this.slashElement) {
                    this.slashElement.setAttribute('stroke', color);
                }

                this.markerElement.setAttribute('stroke', color);
                this.markerElement.setAttribute('fill', color);
            }
        }, {
            key: 'onMouseOut',
            value: function onMouseOut(e) {
                _get(Flow.prototype.__proto__ || Object.getPrototypeOf(Flow.prototype), 'onMouseOut', this).call(this, e);

                this.polylineElement.setAttribute('stroke', this.getParam('strokeColor'));

                if (this.slashElement) {
                    this.slashElement.setAttribute('stroke', this.getParam('strokeColor'));
                }

                this.markerElement.setAttribute('stroke', this.getParam('strokeColor'));
                this.markerElement.setAttribute('fill', this.getParam('strokeColor'));
            }
        }, {
            key: 'showRemovalIndication',
            value: function showRemovalIndication() {
                var color = this.getParam('removalStrokeColor');

                this.polylineElement.setAttribute('stroke', color);
                this.polylineElement.setAttribute('stroke-opacity', 0.5);

                if (this.slashElement) {
                    this.slashElement.setAttribute('stroke', color);
                    this.slashElement.setAttribute('stroke-opacity', 0.5);
                }

                this.markerElement.setAttribute('stroke', color);
                this.markerElement.setAttribute('fill', color);
                this.markerElement.setAttribute('stroke-opacity', 0.5);
            }
        }, {
            key: 'hideRemovalIndication',
            value: function hideRemovalIndication() {
                this.polylineElement.setAttribute('stroke-opacity', 1);
                if (this.slashElement) {
                    this.slashElement.setAttribute('stroke-opacity', 1);
                }
                this.markerElement.setAttribute('stroke-opacity', 1);
            }
        }, {
            key: 'setEndFigure',
            value: function setEndFigure(figure) {
                this.data.endPoint = null;
                this.data.endId = figure.id;
            }
        }, {
            key: 'setEndPoint',
            value: function setEndPoint(point) {
                this.data.endId = null;
                this.data.endPoint = point;
            }
        }, {
            key: 'checkFlowStartAllowed',
            value: function checkFlowStartAllowed() {
                return false;
            }
        }, {
            key: 'checkFlowEndAllowed',
            value: function checkFlowEndAllowed() {
                return false;
            }
        }, {
            key: 'afterRender',
            value: function afterRender() {
                if (this.textElement) {
                    this.wrapText(this.data.text, 200);
                }
            }
        }, {
            key: 'turnBackDirection',
            value: function turnBackDirection(direction) {
                if (direction === 'u') return 'd';
                if (direction === 'd') return 'u';
                if (direction === 'r') return 'l';
                if (direction === 'l') return 'r';
            }
        }]);

        return Flow;
    }(EspoBpmn.Figures.Base);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.FlowDrawing = function (_EspoBpmn$Figures$Flo) {
        _inherits(FlowDrawing, _EspoBpmn$Figures$Flo);

        function FlowDrawing() {
            _classCallCheck(this, FlowDrawing);

            return _possibleConstructorReturn(this, (FlowDrawing.__proto__ || Object.getPrototypeOf(FlowDrawing)).apply(this, arguments));
        }

        _createClass(FlowDrawing, [{
            key: 'init',
            value: function init() {}
        }, {
            key: 'onMouseOver',
            value: function onMouseOver(e) {}
        }, {
            key: 'onMouseOut',
            value: function onMouseOut(e) {}
        }, {
            key: 'isDraggable',
            value: function isDraggable() {
                return false;
            }
        }]);

        return FlowDrawing;
    }(EspoBpmn.Figures.Flow);
}).call(undefined, EspoBpmn);

(function (EspoBpmn) {

    EspoBpmn.Figures.Circle = function (_EspoBpmn$Figures$Bas2) {
        _inherits(Circle, _EspoBpmn$Figures$Bas2);

        function Circle() {
            _classCallCheck(this, Circle);

            return _possibleConstructorReturn(this, (Circle.__proto__ || Object.getPrototypeOf(Circle)).apply(this, arguments));
        }

        _createClass(Circle, [{
            key: 'prepareElement',
            value: function prepareElement() {
                if (this.element) {
                    this.removeElement();
                }

                this.element = document.createElementNS('http://www.w3.org/2000/svg', 'g');
                this.element.setAttribute('data-id', this.data.id);

                var iconPathD = this.getIcon();

                if (iconPathD) {
                    this.iconElement = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
                    this.iconElement.setAttribute('height', this.getIconHeight());
                    this.iconElement.setAttribute('width', this.getIconWidth());
                    this.iconElement.setAttribute('viewBox', this.getIconViewBox());
                }

                this.textElement = null;

                if (this.data.text && this.data.text !== '') {
                    this.textElement = document.createElementNS('http://www.w3.org/2000/svg', 'text');
                    this.textElement.setAttribute('font-size', this.getParam('fontSize'));
                    this.textElement.setAttribute('text-anchor', 'middle');
                    this.textElement.setAttribute('fill', this.getParam('textColor'));
                    this.textElement.setAttribute('style', 'pointer-events: none;user-select: none;-webkit-user-select: none;' + '-moz-user-select: none;-ms-user-select: none;');
                }

                this.circleElement = document.createElementNS('http://www.w3.org/2000/svg', 'circle');

                var strokeWidth = this.getParam('strokeWidth');
                if (this.isBoldStroke()) {
                    strokeWidth *= this.getParam('boldStrokeWidthMultiplier');
                    radius = radius - strokeWidth + this.getParam('strokeWidth');
                }

                if (this.isDoubleBorder()) {
                    this.internalCircleElement = document.createElementNS('http://www.w3.org/2000/svg', 'circle');
                    this.internalCircleElement.setAttribute('stroke-width', strokeWidth);
                    this.internalCircleElement.setAttribute('stroke', this.getParam('strokeColor'));
                    this.internalCircleElement.setAttribute('r', this.getParam('circleInternalRadius'));
                    this.internalCircleElement.setAttribute('fill', 'none');
                }

                if (this.data.outline) {
                    var outlineColor = this.getParam('outlineColor1');

                    if (this.data.outline > 1) {
                        outlineColor = this.getParam('outlineColor' + this.data.outline);
                    }

                    this.outlineFilterElement = document.createElementNS('http://www.w3.org/2000/svg', 'filter');
                    this.outlineFilterElement.setAttribute('id', 'outline-fitler-' + this.data.id);

                    var blurElement = document.createElementNS('http://www.w3.org/2000/svg', 'feGaussianBlur');
                    blurElement.setAttribute('in', 'SourceGraphic');
                    blurElement.setAttribute('stdDeviation', this.getParam('outlineBlurStdDeviation'));

                    this.outlineFilterElement.appendChild(blurElement);

                    this.element.appendChild(this.outlineFilterElement);

                    this.outlineElement = document.createElementNS('http://www.w3.org/2000/svg', 'circle');
                    this.outlineElement.setAttribute('filter', 'url(#outline-fitler-' + this.data.id + ')');
                    this.outlineElement.setAttribute('stroke-width', this.getParam('outlineStroke'));
                    this.outlineElement.setAttribute('fill', outlineColor);
                    this.outlineElement.setAttribute('fill-opacity', this.getParam('outlineOpacity'));
                    this.outlineElement.setAttribute('style', 'pointer-events: none;user-select: none;-webkit-user-select: none;' + '-moz-user-select: none;-ms-user-select: none;');
                    this.outlineElement.setAttribute('r', this.getParam('circleRadius') + this.getParam('outlineStroke'));

                    this.element.appendChild(this.outlineElement);
                }

                if (this.data.center) {
                    this.setElementCenter(this.data.center);
                }

                var radius = this.radius = this.figureParams.radius || this.getParam('circleRadius');

                this.circleElement.setAttribute('fill', this.getParam('fillColor') || 'none');

                this.circleElement.setAttribute('r', radius);
                this.circleElement.setAttribute('stroke-width', strokeWidth);
                this.circleElement.setAttribute('stroke', this.getParam('strokeColor'));

                if (this.isDottedLineBorder()) {
                    this.circleElement.setAttribute('stroke-dasharray', this.getParam('dottedLineDashArray'));

                    if (this.internalCircleElement) {
                        this.internalCircleElement.setAttribute('stroke-dasharray', this.getParam('dottedLineDashArray'));
                    }
                }

                this.element.setAttribute('style', 'cursor: pointer');

                if (this.canvas) {
                    this.registerMouseEvents();
                }

                this.element.appendChild(this.circleElement);

                if (this.internalCircleElement) {
                    this.element.appendChild(this.internalCircleElement);
                }

                if (this.iconElement) {
                    this.pathElement = document.createElementNS('http://www.w3.org/2000/svg', 'path');
                    this.pathElement.setAttribute('d', iconPathD);
                    this.pathElement.setAttribute('fill', this.getParam('strokeColor')), this.iconElement.appendChild(this.pathElement);

                    this.element.appendChild(this.iconElement);
                }

                if (this.textElement) {
                    this.element.appendChild(this.textElement);
                }
            }
        }, {
            key: 'afterRender',
            value: function afterRender() {
                var _this17 = this;

                if (this.textElement) {

                    setTimeout(function () {
                        _this17.wrapText(_this17.data.text, _this17.getParam('textWidth'));
                    }, 10);
                }
            }
        }, {
            key: 'isBoldStroke',
            value: function isBoldStroke() {
                return false;
            }
        }, {
            key: 'isDoubleBorder',
            value: function isDoubleBorder() {
                return false;
            }
        }, {
            key: 'isDottedLineBorder',
            value: function isDottedLineBorder() {
                return false;
            }
        }, {
            key: 'getIconName',
            value: function getIconName() {}
        }, {
            key: 'getIcon',
            value: function getIcon() {
                var iconName = this.getIconName();

                if (!iconName) {
                    return;
                }

                return EspoBpmn.Icons[iconName].icon;
            }
        }, {
            key: 'getIconHeight',
            value: function getIconHeight() {
                var iconName = this.getIconName();

                if (!iconName) {
                    return;
                }

                return EspoBpmn.Icons[iconName].height;
            }
        }, {
            key: 'getIconWidth',
            value: function getIconWidth() {
                var iconName = this.getIconName();

                if (!iconName) {
                    return;
                }

                return EspoBpmn.Icons[iconName].width;
            }
        }, {
            key: 'getIconViewBox',
            value: function getIconViewBox() {
                var iconName = this.getIconName();

                if (!iconName) {
                    return;
                }

                return EspoBpmn.Icons[iconName].viewBox;
            }
        }, {
            key: 'fetchFromDom',
            value: function fetchFromDom(center) {
                this.data.center.x = parseInt(this.circleElement.getAttribute('cx'));
                this.data.center.y = parseInt(this.circleElement.getAttribute('cy'));
            }
        }, {
            key: 'setElementCenter',
            value: function setElementCenter(center) {
                this.circleElement.setAttribute('cx', center.x);
                this.circleElement.setAttribute('cy', center.y);

                if (this.iconElement) {
                    this.iconElement.setAttribute('x', center.x - this.getIconHeight() / 2);
                    this.iconElement.setAttribute('y', center.y - this.getIconHeight() / 2);
                }

                if (this.internalCircleElement) {
                    this.internalCircleElement.setAttribute('cx', center.x);
                    this.internalCircleElement.setAttribute('cy', center.y);
                }

                if (this.textElement) {
                    this.textElement.setAttribute('y', center.y + this.getParam('circleRadius') + this.getParam('fontSize') + this.getParam('textMarginTop'));

                    this.textElement.setAttribute('transform', 'translate(' + center.x + ')');
                }

                if (this.outlineElement) {
                    this.outlineElement.setAttribute('cx', center.x);
                    this.outlineElement.setAttribute('cy', center.y);
                }
            }
        }, {
            key: 'shadeElementColors',
            value: function shadeElementColors() {
                var strokeColor = this.shadeColor(this.getParam('strokeColor'), -10);

                this.circleElement.setAttribute('stroke', strokeColor);

                if (this.getParam('fillColor')) {
                    this.circleElement.setAttribute('fill', this.shadeColor(this.getParam('fillColor'), -10));
                }

                if (this.internalCircleElement) {
                    this.internalCircleElement.setAttribute('stroke', strokeColor);
                }

                if (this.pathElement) {
                    this.pathElement.setAttribute('fill', strokeColor);
                }
            }
        }, {
            key: 'unshadeElementColors',
            value: function unshadeElementColors() {
                var strokeColor = this.getParam('strokeColor');
                this.circleElement.setAttribute('stroke', strokeColor);
                this.circleElement.setAttribute('fill', this.getParam('fillColor') || 'none');

                if (this.internalCircleElement) {
                    this.internalCircleElement.setAttribute('stroke', strokeColor);
                }

                if (this.pathElement) {
                    this.pathElement.setAttribute('fill', strokeColor);
                }
            }
        }, {
            key: 'setTransparency',
            value: function setTransparency(value) {
                this.circleElement.setAttribute('fill-opacity', value);
                this.circleElement.setAttribute('stroke-opacity', value);

                if (this.internalCircleElement) {
                    this.internalCircleElement.setAttribute('fill-opacity', value);
                    this.internalCircleElement.setAttribute('stroke-opacity', value);
                }

                if (this.pathElement) {
                    this.pathElement.setAttribute('fill-opacity', value);
                    this.pathElement.setAttribute('stroke-opacity', value);
                }
            }
        }, {
            key: 'unsetTransparency',
            value: function unsetTransparency() {
                this.circleElement.removeAttribute('fill-opacity');
                this.circleElement.removeAttribute('stroke-opacity');

                if (this.internalCircleElement) {
                    this.internalCircleElement.removeAttribute('fill-opacity');
                    this.internalCircleElement.removeAttribute('stroke-opacity');
                }

                if (this.pathElement) {
                    this.pathElement.removeAttribute('fill-opacity');
                    this.pathElement.removeAttribute('stroke-opacity');
                }
            }
        }, {
            key: 'showRemovalIndication',
            value: function showRemovalIndication() {
                if (this.removalIndicationElement) {
                    return;
                }

                this.removalIndicationElement = document.createElementNS('http://www.w3.org/2000/svg', 'path');

                var strokeColor = this.getParam('removalStrokeColor');
                var strokeWidth = this.getParam('removalStrokeWidth');

                this.removalIndicationElement.setAttribute('stroke', strokeColor);
                this.removalIndicationElement.setAttribute('stroke-width', strokeWidth);
                this.removalIndicationElement.setAttribute('stroke-opacity', 0.5);

                this.removalIndicationElement.setAttribute('style', 'pointer-events: none;user-select: none;-webkit-user-select: none;' + '-moz-user-select: none;-ms-user-select: none;');

                var radius = this.radius;

                var d = 'M ' + Math.round(this.data.center.x - radius) + ' ' + Math.round(this.data.center.y - radius) + ' L ' + Math.round(this.data.center.x + radius) + ' ' + Math.round(this.data.center.y + radius) + 'M ' + Math.round(this.data.center.x - radius) + ' ' + Math.round(this.data.center.y + radius) + ' L ' + Math.round(this.data.center.x + radius) + ' ' + Math.round(this.data.center.y - radius);

                this.removalIndicationElement.setAttribute('d', d);

                this.element.appendChild(this.removalIndicationElement);
            }
        }, {
            key: 'hideRemovalIndication',
            value: function hideRemovalIndication() {
                if (!this.removalIndicationElement) {
                    return;
                }

                this.element.removeChild(this.removalIndicationElement);
                this.removalIndicationElement = null;
            }
        }]);

        return Circle;
    }(EspoBpmn.Figures.Base);
}).call(undefined, EspoBpmn);

(function (EspoBpmn) {

    EspoBpmn.Figures.Rhombus = function (_EspoBpmn$Figures$Bas3) {
        _inherits(Rhombus, _EspoBpmn$Figures$Bas3);

        function Rhombus() {
            _classCallCheck(this, Rhombus);

            return _possibleConstructorReturn(this, (Rhombus.__proto__ || Object.getPrototypeOf(Rhombus)).apply(this, arguments));
        }

        _createClass(Rhombus, [{
            key: 'prepareElement',
            value: function prepareElement() {
                if (this.element) {
                    this.removeElement();
                }
                this.element = document.createElementNS('http://www.w3.org/2000/svg', 'g');
                this.element.setAttribute('data-id', this.data.id);

                var iconPathD = this.getIcon();
                if (iconPathD) {
                    this.iconElement = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
                    this.iconElement.setAttribute('height', this.getIconHeight());
                    this.iconElement.setAttribute('width', this.getIconWidth());
                    this.iconElement.setAttribute('viewBox', this.getIconViewBox());
                }

                this.rhombusElement = document.createElementNS('http://www.w3.org/2000/svg', 'rect');

                var size = this.figureParams.size || this.getParam('rhombusSize');

                var sideHalfLength = this.sideHalfLength = Math.round(Math.sqrt(Math.pow(size / 2.0, 2.0) / 2.0));
                var sideLength = this.sideLength = sideHalfLength * 2;

                this.diagonalHalfLength = Math.round(size / 2.0);

                this.textElement = null;
                if (this.data.text && this.data.text !== '') {
                    this.textElement = document.createElementNS('http://www.w3.org/2000/svg', 'text');
                    this.textElement.setAttribute('font-size', this.getParam('fontSize'));
                    this.textElement.setAttribute('text-anchor', 'middle');
                    this.textElement.setAttribute('fill', this.getParam('textColor'));
                    this.textElement.setAttribute('style', 'pointer-events: none;user-select: none;-webkit-user-select: none;-moz-user-select: none;-ms-user-select: none;');
                }

                if (this.data.outline) {
                    var outlineColor = this.getParam('outlineColor1');
                    if (this.data.outline > 1) {
                        outlineColor = this.getParam('outlineColor' + this.data.outline);
                    }

                    this.outlineFilterElement = document.createElementNS('http://www.w3.org/2000/svg', 'filter');
                    this.outlineFilterElement.setAttribute('id', 'outline-fitler-' + this.data.id);

                    var blurElement = document.createElementNS('http://www.w3.org/2000/svg', 'feGaussianBlur');
                    blurElement.setAttribute('in', 'SourceGraphic');
                    blurElement.setAttribute('stdDeviation', this.getParam('outlineBlurStdDeviation'));
                    this.outlineFilterElement.appendChild(blurElement);

                    this.element.appendChild(this.outlineFilterElement);

                    this.outlineElement = document.createElementNS('http://www.w3.org/2000/svg', 'rect');
                    this.outlineElement.setAttribute('filter', 'url(#outline-fitler-' + this.data.id + ')');
                    this.outlineElement.setAttribute('fill', outlineColor);
                    this.outlineElement.setAttribute('stroke-opacity', this.getParam('outlineOpacity'));
                    this.outlineElement.setAttribute('fill-opacity', this.getParam('outlineOpacity'));
                    this.outlineElement.setAttribute('style', 'pointer-events: none;user-select: none;-webkit-user-select: none;-moz-user-select: none;-ms-user-select: none;');
                    this.outlineElement.setAttribute('height', sideLength + this.getParam('outlineStroke') * 2);
                    this.outlineElement.setAttribute('width', sideLength + this.getParam('outlineStroke') * 2);

                    this.element.appendChild(this.outlineElement);
                }

                this.setElementCenter(this.data.center);
                this.rhombusElement.setAttribute('height', sideLength);
                this.rhombusElement.setAttribute('width', sideLength);

                this.rhombusElement.setAttribute('fill', this.getParam('fillColor') || 'none');
                this.rhombusElement.setAttribute('stroke-width', this.getParam('strokeWidth'));
                this.rhombusElement.setAttribute('stroke', this.getParam('strokeColor'));

                this.element.setAttribute('style', 'cursor: pointer');

                this.registerMouseEvents();

                this.element.appendChild(this.rhombusElement);

                if (this.iconElement) {
                    this.pathElement = document.createElementNS('http://www.w3.org/2000/svg', 'path');
                    this.pathElement.setAttribute('d', iconPathD);
                    this.pathElement.setAttribute('fill', this.getParam('strokeColor')), this.iconElement.appendChild(this.pathElement);
                    this.element.appendChild(this.iconElement);
                }

                if (this.textElement) {
                    this.element.appendChild(this.textElement);
                }
            }
        }, {
            key: 'getIconName',
            value: function getIconName() {}
        }, {
            key: 'getIcon',
            value: function getIcon() {
                var iconName = this.getIconName();
                if (!iconName) return;
                return EspoBpmn.Icons[iconName].icon;
            }
        }, {
            key: 'getIconHeight',
            value: function getIconHeight() {
                var iconName = this.getIconName();
                if (!iconName) return;
                return EspoBpmn.Icons[iconName].height;
            }
        }, {
            key: 'getIconWidth',
            value: function getIconWidth() {
                var iconName = this.getIconName();
                if (!iconName) return;
                return EspoBpmn.Icons[iconName].width;
            }
        }, {
            key: 'getIconViewBox',
            value: function getIconViewBox() {
                var iconName = this.getIconName();
                if (!iconName) return;
                return EspoBpmn.Icons[iconName].viewBox;
            }
        }, {
            key: 'fetchFromDom',
            value: function fetchFromDom(center) {
                this.data.center.x = parseInt(this.rhombusElement.getAttribute('x')) + this.sideHalfLength;
                this.data.center.y = parseInt(this.rhombusElement.getAttribute('y')) + this.sideHalfLength;
            }
        }, {
            key: 'afterRender',
            value: function afterRender() {
                if (this.textElement) {
                    setTimeout(function () {
                        this.wrapText(this.data.text, this.getParam('textWidth'));
                    }.bind(this), 10);
                }
            }
        }, {
            key: 'setElementCenter',
            value: function setElementCenter(center) {
                var x = center.x - this.sideHalfLength;
                var y = center.y - this.sideHalfLength;
                this.rhombusElement.setAttribute('x', x);
                this.rhombusElement.setAttribute('y', y);
                this.rhombusElement.setAttribute('transform', 'rotate(45 ' + center.x + ' ' + center.y + ')');

                if (this.iconElement) {
                    this.iconElement.setAttribute('x', center.x - this.getIconHeight() / 2);
                    this.iconElement.setAttribute('y', center.y - this.getIconHeight() / 2);
                }

                if (this.textElement) {
                    this.textElement.setAttribute('y', center.y + this.diagonalHalfLength + this.getParam('fontSize') + this.getParam('textMarginTop'));
                    this.textElement.setAttribute('transform', 'translate(' + center.x + ')');
                }

                if (this.outlineElement) {
                    this.outlineElement.setAttribute('x', x - this.getParam('outlineStroke'));
                    this.outlineElement.setAttribute('y', y - this.getParam('outlineStroke'));
                    this.outlineElement.setAttribute('transform', 'rotate(45 ' + center.x + ' ' + center.y + ')');
                }
            }
        }, {
            key: 'shadeElementColors',
            value: function shadeElementColors() {
                var strokeColor = this.shadeColor(this.getParam('strokeColor'), -10);
                this.rhombusElement.setAttribute('stroke', strokeColor);
                if (this.getParam('fillColor')) {
                    this.rhombusElement.setAttribute('fill', this.shadeColor(this.getParam('fillColor'), -10));
                }
                if (this.pathElement) {
                    this.pathElement.setAttribute('fill', strokeColor);
                }
            }
        }, {
            key: 'unshadeElementColors',
            value: function unshadeElementColors() {
                var strokeColor = this.getParam('strokeColor');
                this.rhombusElement.setAttribute('stroke', strokeColor);
                this.rhombusElement.setAttribute('fill', this.getParam('fillColor') || 'none');
                if (this.pathElement) {
                    this.pathElement.setAttribute('fill', strokeColor);
                }
            }
        }, {
            key: 'setTransparency',
            value: function setTransparency(value) {
                this.rhombusElement.setAttribute('fill-opacity', value);
                this.rhombusElement.setAttribute('stroke-opacity', value);
                if (this.pathElement) {
                    this.pathElement.setAttribute('fill-opacity', value);
                    this.pathElement.setAttribute('stroke-opacity', value);
                }
            }
        }, {
            key: 'unsetTransparency',
            value: function unsetTransparency() {
                this.rhombusElement.removeAttribute('fill-opacity');
                this.rhombusElement.removeAttribute('stroke-opacity');
                if (this.pathElement) {
                    this.pathElement.removeAttribute('fill-opacity');
                    this.pathElement.removeAttribute('stroke-opacity');
                }
            }
        }, {
            key: 'showRemovalIndication',
            value: function showRemovalIndication() {
                if (this.removalIndicationElement) return;

                this.removalIndicationElement = document.createElementNS('http://www.w3.org/2000/svg', 'path');

                var strokeColor = this.getParam('removalStrokeColor');
                var strokeWidth = this.getParam('removalStrokeWidth');

                this.removalIndicationElement.setAttribute('stroke', strokeColor);
                this.removalIndicationElement.setAttribute('stroke-width', strokeWidth);
                this.removalIndicationElement.setAttribute('stroke-opacity', 0.5);

                this.removalIndicationElement.setAttribute('style', 'pointer-events: none;user-select: none;-webkit-user-select: none;-moz-user-select: none;-ms-user-select: none;');

                var width = this.rhombusElement.getAttribute('width');
                var height = this.rhombusElement.getAttribute('height');

                var d = 'M ' + Math.round(this.data.center.x - width / 2) + ' ' + Math.round(this.data.center.y - height / 2) + ' L ' + Math.round(this.data.center.x + width / 2) + ' ' + Math.round(this.data.center.y + height / 2) + 'M ' + Math.round(this.data.center.x - width / 2) + ' ' + Math.round(this.data.center.y + height / 2) + ' L ' + Math.round(this.data.center.x + width / 2) + ' ' + Math.round(this.data.center.y - height / 2);

                this.removalIndicationElement.setAttribute('d', d);

                this.element.appendChild(this.removalIndicationElement);
            }
        }, {
            key: 'hideRemovalIndication',
            value: function hideRemovalIndication() {
                if (!this.removalIndicationElement) return;
                this.element.removeChild(this.removalIndicationElement);
                this.removalIndicationElement = null;
            }
        }]);

        return Rhombus;
    }(EspoBpmn.Figures.Base);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.Rectangle = function (_EspoBpmn$Figures$Bas4) {
        _inherits(Rectangle, _EspoBpmn$Figures$Bas4);

        function Rectangle() {
            _classCallCheck(this, Rectangle);

            return _possibleConstructorReturn(this, (Rectangle.__proto__ || Object.getPrototypeOf(Rectangle)).apply(this, arguments));
        }

        _createClass(Rectangle, [{
            key: 'removeElement',
            value: function removeElement() {
                _get(Rectangle.prototype.__proto__ || Object.getPrototypeOf(Rectangle.prototype), 'removeElement', this).call(this);

                if (this.eventStartCanvasElement) {
                    delete this.eventStartCanvasElement;
                }

                if (this.subCanvasElement) {
                    delete this.subCanvasElement;
                }
            }
        }, {
            key: 'calculateSizes',
            value: function calculateSizes() {
                var sizeX, sizeY;

                if (!this.isExpanded()) {
                    sizeX = this.figureParams.sizeX || this.getParam('rectangleSizeX');
                    sizeY = this.figureParams.sizeY || this.getParam('rectangleSizeY');
                } else {
                    sizeX = this.data.width || this.getGlobalParam('rectangleExpandedDefaultWidth');
                    sizeY = this.data.height || this.getGlobalParam('rectangleExpandedDefaultHeight');
                }

                this.sideXHalfLength = Math.round(sizeX / 2.0);
                this.sideYHalfLength = Math.round(sizeY / 2.0);

                this.sideXLength = sizeX;
                this.sideYLength = sizeY;

                var boundaryAttachIntervalSize = this.boundaryAttachIntervalSize = this.getParam('boundaryAttachIntervalSize') || this.getParam('circleRadius') * 2;

                this.attachPointXHalfNumber = Math.ceil((this.sideXHalfLength - boundaryAttachIntervalSize / 2) / boundaryAttachIntervalSize);
                this.attachPointYHalfNumber = Math.ceil((this.sideYHalfLength - boundaryAttachIntervalSize / 2) / boundaryAttachIntervalSize);
            }
        }, {
            key: 'applySizes',
            value: function applySizes() {
                if (this.internalRectangleElement) {
                    this.internalRectangleElement.setAttribute('height', this.sideYLength - this.getParam('rectangleInternalLengthDiff'));
                    this.internalRectangleElement.setAttribute('width', this.sideXLength - this.getParam('rectangleInternalLengthDiff'));
                }

                this.rectangleElement.setAttribute('height', this.sideYLength);
                this.rectangleElement.setAttribute('width', this.sideXLength);
            }
        }, {
            key: 'prepareElement',
            value: function prepareElement() {
                var _this20 = this;

                if (this.element) {
                    this.removeElement();
                }

                this.element = document.createElementNS('http://www.w3.org/2000/svg', 'g');
                this.element.setAttribute('data-id', this.data.id);

                var iconPathD = this.getIcon();

                if (iconPathD) {
                    this.iconElement = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
                    this.iconElement.setAttribute('height', this.getIconHeight());
                    this.iconElement.setAttribute('width', this.getIconWidth());
                    this.iconElement.setAttribute('viewBox', this.getIconViewBox());
                }

                this.rectangleElement = document.createElementNS('http://www.w3.org/2000/svg', 'rect');

                if (this.isExpanded()) {
                    this.rectangleElement.setAttribute('pointer-events', 'visibleFill');
                }

                this.calculateSizes();

                this.textElement = null;

                if (this.data.text && this.data.text !== '') {
                    this.textElement = document.createElementNS('http://www.w3.org/2000/svg', 'text');
                    this.textElement.setAttribute('font-size', this.getParam('fontSize'));
                    this.textElement.setAttribute('text-anchor', 'middle');
                    this.textElement.setAttribute('fill', this.getParam('textColor'));
                    this.textElement.setAttribute('style', 'pointer-events: none;user-select: none;-webkit-user-select: none;' + '-moz-user-select: none;-ms-user-select: none;');
                }

                this.markerIconElementList = [];

                this.getAvailableMarkerList().forEach(function (marker) {
                    if (!_this20.hasMarker(marker)) {
                        return;
                    }

                    var iconData = _this20.getMarkerIconData(marker);

                    var markerIconElement = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
                    var markerPathElement = document.createElementNS('http://www.w3.org/2000/svg', 'path');

                    markerIconElement.setAttribute('data-marker', marker);

                    markerIconElement.setAttribute('height', iconData.height);
                    markerIconElement.setAttribute('width', iconData.width);
                    markerIconElement.setAttribute('viewBox', iconData.viewBox);

                    markerPathElement.setAttribute('d', iconData.icon);
                    markerPathElement.setAttribute('fill', _this20.getParam('strokeColor'));

                    if (iconData.transform) {
                        markerPathElement.setAttribute('transform', iconData.transform);
                    }
                    markerIconElement.appendChild(markerPathElement);

                    _this20.markerIconElementList.push(markerIconElement);
                });

                if (this.isDoubleBorder()) {
                    this.internalRectangleElement = document.createElementNS('http://www.w3.org/2000/svg', 'rect');

                    this.internalRectangleElement.setAttribute('fill', 'none');
                    this.internalRectangleElement.setAttribute('stroke-width', this.getParam('strokeWidth'));
                    this.internalRectangleElement.setAttribute('stroke', this.getParam('strokeColor'));

                    this.internalRectangleElement.setAttribute('rx', this.getParam('rectangleRoundingRadius'));
                    this.internalRectangleElement.setAttribute('ry', this.getParam('rectangleRoundingRadius'));
                }

                if (this.hasEventStartIcon()) {
                    var eventStartData = this.data.eventStartData;

                    var eventStartCenterX = this.getGlobalParam('circleRadius') + this.getGlobalParam('strokeWidth');

                    var data = {
                        type: eventStartData.type,
                        id: eventStartData.id + '-i',
                        isInterrupting: eventStartData.isInterrupting,
                        center: { x: eventStartCenterX, y: eventStartCenterX }
                    };

                    var typeKeyName = eventStartData.type.charAt(0).toUpperCase() + eventStartData.type.slice(1);
                    var eventStartFigure = new EspoBpmn.Figures[typeKeyName](data, this.params, eventStartData.type);

                    this.eventStartCanvasElement = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
                    this.eventStartViewportElement = document.createElementNS('http://www.w3.org/2000/svg', 'g');
                    this.eventStartViewportElement.setAttribute('transform', 'matrix(' + '0.5' + ',0,0,' + '0.5' + ',0,0)');

                    this.eventStartCanvasElement.appendChild(this.eventStartViewportElement);
                    this.eventStartViewportElement.appendChild(eventStartFigure.getElement());
                }

                var strokeWidth = this.getParam('strokeWidth');

                if (this.isBoldStroke()) {
                    strokeWidth *= this.getParam('boldStrokeWidthMultiplier');
                }

                if (this.isExpanded()) {
                    this.prepareCanvasElement();
                }

                if (this.isResizable()) {
                    this.resizeHandleNWElement = document.createElementNS('http://www.w3.org/2000/svg', 'rect');
                    this.resizeHandleNWElement.setAttribute('pointer-events', 'all');
                    this.resizeHandleNWElement.setAttribute('fill', 'none');
                    this.resizeHandleNWElement.style.cursor = 'nw-resize';
                    this.resizeHandleNWElement.setAttribute('data-orientation', 'nw');
                    this.resizeHandleNWElement.addEventListener('mousedown', this.resizeOnMouseDown.bind(this));
                    this.resizeHandleNWElement.addEventListener('touchstart', this.resizeOnTouchStart.bind(this), { passive: true });
                    this.resizeHandleNWElement.addEventListener('click', this.resizeOnClick.bind(this));

                    this.resizeHandleNEElement = document.createElementNS('http://www.w3.org/2000/svg', 'rect');
                    this.resizeHandleNEElement.setAttribute('pointer-events', 'all');
                    this.resizeHandleNEElement.setAttribute('fill', 'none');
                    this.resizeHandleNEElement.style.cursor = 'ne-resize';
                    this.resizeHandleNEElement.setAttribute('data-orientation', 'ne');
                    this.resizeHandleNEElement.addEventListener('mousedown', this.resizeOnMouseDown.bind(this));
                    this.resizeHandleNEElement.addEventListener('touchstart', this.resizeOnTouchStart.bind(this), { passive: true });
                    this.resizeHandleNEElement.addEventListener('click', this.resizeOnClick.bind(this));

                    this.resizeHandleSWElement = document.createElementNS('http://www.w3.org/2000/svg', 'rect');
                    this.resizeHandleSWElement.setAttribute('pointer-events', 'all');
                    this.resizeHandleSWElement.setAttribute('fill', 'none');
                    this.resizeHandleSWElement.style.cursor = 'sw-resize';
                    this.resizeHandleSWElement.setAttribute('data-orientation', 'sw');
                    this.resizeHandleSWElement.addEventListener('mousedown', this.resizeOnMouseDown.bind(this));
                    this.resizeHandleSWElement.addEventListener('touchstart', this.resizeOnTouchStart.bind(this), { passive: true });
                    this.resizeHandleSWElement.addEventListener('click', this.resizeOnClick.bind(this));

                    this.resizeHandleSEElement = document.createElementNS('http://www.w3.org/2000/svg', 'rect');
                    this.resizeHandleSEElement.setAttribute('pointer-events', 'all');
                    this.resizeHandleSEElement.setAttribute('fill', 'none');
                    this.resizeHandleSEElement.style.cursor = 'se-resize';
                    this.resizeHandleSEElement.setAttribute('data-orientation', 'se');
                    this.resizeHandleSEElement.addEventListener('mousedown', this.resizeOnMouseDown.bind(this));
                    this.resizeHandleSEElement.addEventListener('touchstart', this.resizeOnTouchStart.bind(this), { passive: true });
                    this.resizeHandleSEElement.addEventListener('click', this.resizeOnClick.bind(this));
                }

                if (this.data.outline) {
                    var outlineColor = this.getParam('outlineColor1');

                    if (this.data.outline > 1) {
                        outlineColor = this.getParam('outlineColor' + this.data.outline);
                    }

                    this.outlineFilterElement = document.createElementNS('http://www.w3.org/2000/svg', 'filter');
                    this.outlineFilterElement.setAttribute('id', 'outline-fitler-' + this.data.id);

                    var blurElement = document.createElementNS('http://www.w3.org/2000/svg', 'feGaussianBlur');
                    blurElement.setAttribute('in', 'SourceGraphic');
                    blurElement.setAttribute('stdDeviation', this.getParam('outlineBlurStdDeviation'));

                    this.outlineFilterElement.appendChild(blurElement);

                    this.element.appendChild(this.outlineFilterElement);

                    this.outlineElement = document.createElementNS('http://www.w3.org/2000/svg', 'rect');
                    this.outlineElement.setAttribute('filter', 'url(#outline-fitler-' + this.data.id + ')');

                    if (!this.isExpanded()) {
                        this.outlineElement.setAttribute('fill', outlineColor);
                        this.outlineElement.setAttribute('fill-opacity', this.getParam('outlineOpacity'));
                        this.outlineElement.setAttribute('height', this.sideYLength + this.getParam('outlineStroke') * 2);
                        this.outlineElement.setAttribute('width', this.sideXLength + this.getParam('outlineStroke') * 2);
                    } else {
                        this.outlineElement.setAttribute('fill', 'none');
                        this.outlineElement.setAttribute('stroke-width', this.getParam('outlineStroke') * 1.7);
                        this.outlineElement.setAttribute('stroke', outlineColor);
                        this.outlineElement.setAttribute('height', this.sideYLength + this.getParam('outlineStroke') / 2);
                        this.outlineElement.setAttribute('width', this.sideXLength + this.getParam('outlineStroke') / 2);
                    }

                    this.outlineElement.setAttribute('stroke-opacity', this.getParam('outlineOpacity'));

                    this.outlineElement.setAttribute('style', 'pointer-events: none;user-select: none;-webkit-user-select: none;' + '-moz-user-select: none;-ms-user-select: none;');

                    this.element.appendChild(this.outlineElement);
                }

                this.setElementCenter(this.data.center);
                this.applySizes();

                if (!this.isExpanded()) {
                    this.rectangleElement.setAttribute('fill', this.getParam('fillColor') || 'none');
                } else {
                    this.rectangleElement.setAttribute('fill', this.getGlobalParam('rectangleExpandedFillColor'));
                    this.rectangleElement.setAttribute('fill-opacity', this.getGlobalParam('rectangleExpandedFillOpacity'));
                }

                this.rectangleElement.setAttribute('stroke-width', strokeWidth);
                this.rectangleElement.setAttribute('stroke', this.getParam('strokeColor'));

                this.rectangleElement.setAttribute('rx', this.getParam('rectangleRoundingRadius'));
                this.rectangleElement.setAttribute('ry', this.getParam('rectangleRoundingRadius'));

                if (this.isDottedLineBorder()) {
                    this.rectangleElement.setAttribute('stroke-dasharray', this.getParam('dottedLineRectangeDashArray'));
                }

                this.element.setAttribute('style', 'cursor: pointer');

                this.registerMouseEvents();

                this.element.appendChild(this.rectangleElement);

                if (this.internalRectangleElement) {
                    this.element.appendChild(this.internalRectangleElement);
                }

                if (this.iconElement) {
                    this.pathElement = document.createElementNS('http://www.w3.org/2000/svg', 'path');
                    this.pathElement.setAttribute('d', iconPathD);
                    this.pathElement.setAttribute('fill', this.getParam('strokeColor')), this.iconElement.appendChild(this.pathElement);
                    this.element.appendChild(this.iconElement);
                }

                if (this.eventStartCanvasElement) {
                    this.element.appendChild(this.eventStartCanvasElement);
                }

                if (this.textElement) {
                    this.element.appendChild(this.textElement);
                }

                if (this.subCanvasElement) {
                    this.element.appendChild(this.subCanvasElement);
                }

                this.markerIconElementList.forEach(function (element) {
                    _this20.element.appendChild(element);
                });

                if (this.isResizable()) {
                    this.element.appendChild(this.resizeHandleNWElement);
                    this.element.appendChild(this.resizeHandleNEElement);
                    this.element.appendChild(this.resizeHandleSWElement);
                    this.element.appendChild(this.resizeHandleSEElement);
                }
            }
        }, {
            key: 'resizeOnClick',
            value: function resizeOnClick(e) {
                e.stopPropagation();
            }
        }, {
            key: 'resizeOnMouseDown',
            value: function resizeOnMouseDown(e) {
                if (this.canvas.getState() === 'createFigure' || this.canvas.getState() === 'remove') {
                    return;
                }

                if (e.which === 1) {
                    if (this.getGlobalParam('resizingDisabled')) {
                        return;
                    }

                    e.stopPropagation();

                    this.startResizing(e.target.getAttribute('data-orientation'));
                }
            }
        }, {
            key: 'resizeOnTouchStart',
            value: function resizeOnTouchStart(e) {
                if (this.canvas.getState() === 'createFigure' || this.canvas.getState() === 'remove') {
                    return;
                }

                if (this.getGlobalParam('resizingDisabled')) {
                    return;
                }

                e.stopPropagation();

                this.startResizing(e.target.getAttribute('data-orientation'));
            }
        }, {
            key: 'startResizing',
            value: function startResizing(orientation) {
                this.isResizing = true;
                this.setIsNotResized();
                this.canvas.resizedFigure = this;

                this.resizingListener = this.resizingProcess.bind(this);
                this.resizingOrientation = orientation;

                this.canvas.getElement().addEventListener('mousemove', this.resizingListener);
                this.canvas.getElement().addEventListener('touchmove', this.resizingListener, { passive: true });
            }
        }, {
            key: 'resizingProcess',
            value: function resizingProcess(e) {
                if (this.isResized) {
                    var offset = this.canvas.getOffsetFromMouseEvent(e);
                    var x = (offset.x - this.canvas.offsetX) / this.canvas.scaleRatio;
                    var y = (offset.y - this.canvas.offsetY) / this.canvas.scaleRatio;

                    var width;
                    var height;
                    var diffX, diffY, width, height, centerX, centerY, offsetX, offsetY;

                    diffX = x - this.resizingStartX;
                    diffY = y - this.resizingStartY;

                    if (this.resizingOrientation === 'nw') {
                        centerX = Math.round(this.resizingStartCenterX + diffX / 2);
                        centerY = Math.round(this.resizingStartCenterY + diffY / 2);

                        width = this.resizingStartWidth - diffX;
                        height = this.resizingStartHeight - diffY;

                        offsetX = Math.round(this.resizingStartOffsetX - diffX);
                        offsetY = Math.round(this.resizingStartOffsetY - diffY);
                    } else if (this.resizingOrientation === 'ne') {
                        centerX = Math.round(this.resizingStartCenterX + diffX / 2);
                        centerY = Math.round(this.resizingStartCenterY + diffY / 2);

                        width = this.resizingStartWidth + diffX;
                        height = this.resizingStartHeight - diffY;

                        offsetX = this.resizingStartOffsetX;
                        offsetY = Math.round(this.resizingStartOffsetY - diffY);
                    } else if (this.resizingOrientation === 'sw') {
                        centerX = Math.round(this.resizingStartCenterX + diffX / 2);
                        centerY = Math.round(this.resizingStartCenterY + diffY / 2);

                        width = this.resizingStartWidth - diffX;
                        height = this.resizingStartHeight + diffY;

                        offsetX = Math.round(this.resizingStartOffsetX - diffX);
                        offsetY = this.resizingStartOffsetY;
                    } else if (this.resizingOrientation === 'se') {
                        centerX = Math.round(this.resizingStartCenterX + diffX / 2);
                        centerY = Math.round(this.resizingStartCenterY + diffY / 2);

                        width = this.resizingStartWidth + diffX;
                        height = this.resizingStartHeight + diffY;

                        offsetX = this.resizingStartOffsetX;
                        offsetY = this.resizingStartOffsetY;
                    }

                    if (width <= this.getGlobalParam('minExpandedWidth') || height <= this.getGlobalParam('minExpandedHeight')) {
                        return;
                    }

                    this.data.center.x = centerX;
                    this.data.center.y = centerY;
                    this.data.width = width;
                    this.data.height = height;

                    this.data.offsetX = offsetX;
                    this.data.offsetY = offsetY;

                    this.calculateSizes();
                    this.setElementCenter(this.data.center);

                    this.applySizes();

                    this.arrangeText();

                    this.prepareCanvasElement();

                    this.rePositionDependencies();
                    this.reRenderDependencies();
                } else {
                    this.setIsResized();

                    var offset = this.canvas.getOffsetFromMouseEvent(e);
                    var x = (offset.x - this.canvas.offsetX) / this.canvas.scaleRatio;
                    var y = (offset.y - this.canvas.offsetY) / this.canvas.scaleRatio;

                    this.resizingStartX = x;
                    this.resizingStartY = y;

                    this.resizingStartCenterX = this.data.center.x;
                    this.resizingStartCenterY = this.data.center.y;

                    this.resizingStartOffsetX = this.data.offsetX;
                    this.resizingStartOffsetY = this.data.offsetY;

                    this.resizingStartWidth = this.data.width || this.getGlobalParam('rectangleExpandedDefaultWidth');
                    this.resizingStartHeight = this.data.height || this.getGlobalParam('rectangleExpandedDefaultHeight');
                }
            }
        }, {
            key: 'finishResizing',
            value: function finishResizing() {
                var _this21 = this;

                this.isResizing = false;
                this.resizingOrientation = null;

                if (this.canvas.resizedFigure) {
                    delete this.canvas.resizedFigure;
                    this.canvas.getElement().removeEventListener('mousemove', this.resizingListener);
                    this.canvas.getElement().removeEventListener('touchmove', this.resizingListener);
                    this.canvas.resizingOffsetX = null;
                    this.canvas.resizingOffsetY = null;
                }

                if (this.isResized) {
                    this.setIsNotResized();
                    this.alignToGrid();

                    this.reRender();

                    this.rePositionDependencies();
                    this.reRenderDependencies();

                    this.canvas.triggerEvent('change');
                }

                this.dependantIdList.forEach(function (depId) {
                    var depElement = _this21.canvas.getFigure(depId).getElement();
                    _this21.canvas.getViewportElement().appendChild(depElement);
                });
            }
        }, {
            key: 'setIsResized',
            value: function setIsResized() {
                this.isResized = true;
                this.canvas.figureIsResized = true;
            }
        }, {
            key: 'setIsNotResized',
            value: function setIsNotResized() {
                this.isResized = false;
                this.canvas.figureIsResized = false;
            }
        }, {
            key: 'arrangeText',
            value: function arrangeText() {
                if (!this.textElement) {
                    return;
                }

                var lineCount = this.textElement.childNodes.length;
                var isArranged = false;

                if (!this.isExpanded()) {
                    if (lineCount === 1) {
                        this.textElement.setAttribute('y', this.data.center.y + this.getParam('textMarginTop'));
                        isArranged = true;
                    } else if (lineCount === 2) {
                        if (this.hasIcon()) {
                            this.textElement.setAttribute('y', this.data.center.y);
                        } else {
                            this.textElement.setAttribute('y', this.data.center.y - this.getParam('textMarginTop') / 2);
                        }

                        isArranged = true;
                    } else if (lineCount === 3) {
                        if (!this.internalRectangleElement && !this.eventStartCanvasElement) {
                            if (this.hasIcon()) {
                                this.textElement.setAttribute('y', this.data.center.y - this.getParam('textMarginTop') / 2);
                            } else {
                                this.textElement.setAttribute('y', this.data.center.y - this.getParam('fontSize') + this.getParam('textMarginTop'));
                            }

                            isArranged = true;
                        }
                    }
                } else {
                    if (lineCount === 1) {
                        this.textElement.setAttribute('y', this.data.center.y - this.sideYHalfLength + this.getParam('fontSize') + this.getParam('textMarginTop'));

                        isArranged = true;
                    }
                }

                if (!isArranged) {
                    this.textElement.setAttribute('y', this.data.center.y + this.sideYHalfLength + this.getParam('textMarginTop') + this.getParam('fontSize'));
                }
            }
        }, {
            key: 'afterRender',
            value: function afterRender() {
                var _this22 = this;

                if (this.textElement) {
                    var width = this.getParam('textRectangleWidth');

                    if (this.isExpanded()) {
                        width = this.sideXLength - this.getGlobalParam('textRectangleExpandedMarginSide') * 2;
                    }

                    setTimeout(function () {
                        _this22.wrapText(_this22.data.text, width);
                        _this22.arrangeText();
                    }, 10);
                }
            }
        }, {
            key: 'prepareCanvasElement',
            value: function prepareCanvasElement() {}
        }, {
            key: 'hasEventStartIcon',
            value: function hasEventStartIcon() {
                return false;
            }
        }, {
            key: 'isDottedLineBorder',
            value: function isDottedLineBorder() {
                return false;
            }
        }, {
            key: 'isDoubleBorder',
            value: function isDoubleBorder() {
                return false;
            }
        }, {
            key: 'isBoldStroke',
            value: function isBoldStroke() {
                return false;
            }
        }, {
            key: 'isExpanded',
            value: function isExpanded() {
                return false;
            }
        }, {
            key: 'isResizable',
            value: function isResizable() {
                return false;
            }
        }, {
            key: 'onDrag',
            value: function onDrag() {
                if (this.textElement) {
                    this.arrangeText();
                }
            }
        }, {
            key: 'hasIcon',
            value: function hasIcon() {
                return !!this.getIconName();
            }
        }, {
            key: 'getIconName',
            value: function getIconName() {}
        }, {
            key: 'getIcon',
            value: function getIcon() {
                var iconName = this.getIconName();

                if (!iconName) {
                    return;
                }

                return EspoBpmn.Icons[iconName].icon;
            }
        }, {
            key: 'getIconHeight',
            value: function getIconHeight() {
                var iconName = this.getIconName();

                if (!iconName) {
                    return;
                }

                return EspoBpmn.Icons[iconName].height;
            }
        }, {
            key: 'getIconWidth',
            value: function getIconWidth() {
                var iconName = this.getIconName();

                if (!iconName) {
                    return;
                }

                return EspoBpmn.Icons[iconName].width;
            }
        }, {
            key: 'getIconViewBox',
            value: function getIconViewBox() {
                var iconName = this.getIconName();

                if (!iconName) {
                    return;
                }

                return EspoBpmn.Icons[iconName].viewBox;
            }
        }, {
            key: 'fetchFromDom',
            value: function fetchFromDom(center) {
                this.data.center.x = parseInt(this.rectangleElement.getAttribute('x')) + this.sideXHalfLength;
                this.data.center.y = parseInt(this.rectangleElement.getAttribute('y')) + this.sideYHalfLength;
            }
        }, {
            key: 'setElementCenter',
            value: function setElementCenter(center) {
                var _this23 = this;

                var x = center.x - this.sideXHalfLength;
                var y = center.y - this.sideYHalfLength;

                this.rectangleElement.setAttribute('x', x);
                this.rectangleElement.setAttribute('y', y);

                if (this.iconElement) {
                    this.iconElement.setAttribute('x', center.x + this.getParam('rectangleIconMargin') - this.sideXHalfLength);
                    this.iconElement.setAttribute('y', center.y + this.getParam('rectangleIconMargin') - this.sideYHalfLength);
                }

                if (this.eventStartCanvasElement) {
                    this.eventStartCanvasElement.setAttribute('x', center.x + this.getParam('rectangleIconMargin') - this.sideXHalfLength);
                    this.eventStartCanvasElement.setAttribute('y', center.y + this.getParam('rectangleIconMargin') - this.sideYHalfLength);
                }

                if (this.textElement) {
                    this.textElement.setAttribute('y', center.y);
                    this.textElement.setAttribute('transform', 'translate(' + center.x + ')');
                }

                if (this.internalRectangleElement) {
                    this.internalRectangleElement.setAttribute('x', x + this.getParam('rectangleInternalLengthDiff') / 2);
                    this.internalRectangleElement.setAttribute('y', y + this.getParam('rectangleInternalLengthDiff') / 2);
                }

                if (this.subCanvasElement) {
                    this.subCanvasElement.setAttribute('x', this.data.center.x - this.sideXHalfLength);
                    this.subCanvasElement.setAttribute('y', this.data.center.y - this.sideYHalfLength + this.subCanvasMarginTop);
                }

                var markerCount = this.markerIconElementList.length;

                this.markerIconElementList.forEach(function (element, i) {
                    var offset;
                    var middleIndex = markerCount / 2;

                    if (i < middleIndex) {
                        offset = i - middleIndex;
                    } else if (i >= middleIndex) {
                        offset = i - middleIndex;
                    } else {
                        offset = 0;
                    }

                    var mX = center.x + _this23.getParam('activityMarkerWidth') * offset;

                    var mY = center.y + _this23.sideYHalfLength - _this23.getParam('activityMarkerHeight');

                    if (_this23.internalRectangleElement) {
                        mY -= _this23.getParam('rectangleInternalLengthDiff') / 2;
                    }

                    element.setAttribute('x', mX);
                    element.setAttribute('y', mY);
                });

                if (this.isResizable()) {
                    var resizeHandleSize = this.getGlobalParam('resizeHandleSize');
                    var resizeHandleHalfSize = resizeHandleSize / 2;

                    this.resizeHandleNWElement.setAttribute('x', this.data.center.x - this.sideXHalfLength - resizeHandleHalfSize);
                    this.resizeHandleNWElement.setAttribute('y', this.data.center.y - this.sideYHalfLength - resizeHandleHalfSize);

                    this.resizeHandleNWElement.setAttribute('width', resizeHandleSize);
                    this.resizeHandleNWElement.setAttribute('height', resizeHandleSize);

                    this.resizeHandleNEElement.setAttribute('x', this.data.center.x + this.sideXHalfLength - resizeHandleHalfSize);
                    this.resizeHandleNEElement.setAttribute('y', this.data.center.y - this.sideYHalfLength - resizeHandleHalfSize);

                    this.resizeHandleNEElement.setAttribute('width', resizeHandleSize);
                    this.resizeHandleNEElement.setAttribute('height', resizeHandleSize);

                    this.resizeHandleSWElement.setAttribute('x', this.data.center.x - this.sideXHalfLength - resizeHandleHalfSize);
                    this.resizeHandleSWElement.setAttribute('y', this.data.center.y + this.sideYHalfLength - resizeHandleHalfSize);

                    this.resizeHandleSWElement.setAttribute('width', resizeHandleSize);
                    this.resizeHandleSWElement.setAttribute('height', resizeHandleSize);

                    this.resizeHandleSEElement.setAttribute('x', this.data.center.x + this.sideXHalfLength - resizeHandleHalfSize);
                    this.resizeHandleSEElement.setAttribute('y', this.data.center.y + this.sideYHalfLength - resizeHandleHalfSize);

                    this.resizeHandleSEElement.setAttribute('width', resizeHandleSize);
                    this.resizeHandleSEElement.setAttribute('height', resizeHandleSize);
                }

                if (this.outlineElement) {
                    if (!this.isExpanded()) {
                        this.outlineElement.setAttribute('x', x - this.getParam('outlineStroke'));
                        this.outlineElement.setAttribute('y', y - this.getParam('outlineStroke'));
                    } else {
                        this.outlineElement.setAttribute('x', x - this.getParam('outlineStroke') / 4);
                        this.outlineElement.setAttribute('y', y - this.getParam('outlineStroke') / 4);
                    }
                }
            }
        }, {
            key: 'shadeElementColors',
            value: function shadeElementColors(onlyBorder, boundaryEventColor) {
                var strokeColor;

                if (!boundaryEventColor) {
                    strokeColor = this.shadeColor(this.getParam('strokeColor'), -10);
                } else {
                    strokeColor = this.shadeColor(this.getParam('eventIntermediateStrokeColor'), -10);
                }

                this.rectangleElement.setAttribute('stroke', strokeColor);

                if (onlyBorder) {
                    return;
                }

                if (!this.isExpanded() && this.getParam('fillColor')) {
                    this.rectangleElement.setAttribute('fill', this.shadeColor(this.getParam('fillColor'), -10));
                }

                if (this.pathElement) {
                    this.pathElement.setAttribute('fill', strokeColor);
                }

                this.markerIconElementList.forEach(function (element) {
                    element.childNodes[0].setAttribute('fill', strokeColor);
                });
            }
        }, {
            key: 'unshadeElementColors',
            value: function unshadeElementColors() {
                var strokeColor = this.getParam('strokeColor');
                this.rectangleElement.setAttribute('stroke', strokeColor);

                if (!this.isExpanded()) {
                    this.rectangleElement.setAttribute('fill', this.getParam('fillColor') || 'none');
                }

                if (this.pathElement) {
                    this.pathElement.setAttribute('fill', strokeColor);
                }

                this.markerIconElementList.forEach(function (element) {
                    element.childNodes[0].setAttribute('fill', strokeColor);
                });
            }
        }, {
            key: 'showRemovalIndication',
            value: function showRemovalIndication() {
                if (this.removalIndicationElement) {
                    return;
                }

                this.removalIndicationElement = document.createElementNS('http://www.w3.org/2000/svg', 'path');

                var strokeColor = this.getParam('removalStrokeColor');
                var strokeWidth = this.getParam('removalStrokeWidth');

                this.removalIndicationElement.setAttribute('stroke', strokeColor);
                this.removalIndicationElement.setAttribute('stroke-width', strokeWidth);
                this.removalIndicationElement.setAttribute('stroke-opacity', 0.5);
                this.removalIndicationElement.setAttribute('style', 'pointer-events: none;user-select: none;' + '-webkit-user-select: none;-moz-user-select: none;-ms-user-select: none;');

                var width = this.rectangleElement.getAttribute('width');
                var height = this.rectangleElement.getAttribute('height');

                var d = 'M ' + Math.round(this.data.center.x - width / 2) + ' ' + Math.round(this.data.center.y - height / 2) + ' L ' + Math.round(this.data.center.x + width / 2) + ' ' + Math.round(this.data.center.y + height / 2) + 'M ' + Math.round(this.data.center.x - width / 2) + ' ' + Math.round(this.data.center.y + height / 2) + ' L ' + Math.round(this.data.center.x + width / 2) + ' ' + Math.round(this.data.center.y - height / 2);

                this.removalIndicationElement.setAttribute('d', d);

                this.element.appendChild(this.removalIndicationElement);
            }
        }, {
            key: 'hideRemovalIndication',
            value: function hideRemovalIndication() {
                if (!this.removalIndicationElement) {
                    return;
                }

                this.element.removeChild(this.removalIndicationElement);
                this.removalIndicationElement = null;
            }
        }, {
            key: 'findClosestAvailableAttachPoint',
            value: function findClosestAvailableAttachPoint(point, forElementId) {
                var attachPointList = this.getAvailableAttachPointList(forElementId);

                var attachPoint = null;
                var distanceFound = null;

                attachPointList.forEach(function (item) {
                    var distance = Math.pow(item.x - point.x, 2) + Math.pow(item.y - point.y, 2);

                    if (distanceFound === null || distance < distanceFound) {
                        attachPoint = item;
                        distanceFound = distance;
                    }
                });

                return attachPoint;
            }
        }, {
            key: 'getAvailableAttachPointList',
            value: function getAvailableAttachPointList(forElementId) {
                var _this24 = this;

                var pointList = [];
                var x, y;

                var cX = this.data.center.x;
                var cY = this.data.center.y;

                var boundaryAttachIntervalHalfSize = this.boundaryAttachIntervalSize / 2;

                for (var i = 1; i <= this.attachPointXHalfNumber; i++) {
                    x = cX + this.boundaryAttachIntervalSize * i - boundaryAttachIntervalHalfSize;
                    y = cY - this.sideYHalfLength;
                    pointList.push({ x: x, y: y, position: 'tr' + i });
                    y = cY + this.sideYHalfLength;
                    pointList.push({ x: x, y: y, position: 'br' + i });
                    x = cX - this.boundaryAttachIntervalSize * i + boundaryAttachIntervalHalfSize;
                    y = cY - this.sideYHalfLength;
                    pointList.push({ x: x, y: y, position: 'tl' + i });
                    y = cY + this.sideYHalfLength;
                    pointList.push({ x: x, y: y, position: 'bl' + i });
                }

                for (var i = 1; i <= this.attachPointYHalfNumber; i++) {
                    y = cY + this.boundaryAttachIntervalSize * i - boundaryAttachIntervalHalfSize;
                    x = cX - this.sideXHalfLength;
                    pointList.push({ x: x, y: y, position: 'lb' + i });
                    x = cX + this.sideXHalfLength;
                    pointList.push({ x: x, y: y, position: 'rb' + i });
                    y = cY - this.boundaryAttachIntervalSize * i + boundaryAttachIntervalHalfSize;
                    x = cX - this.sideXHalfLength;
                    pointList.push({ x: x, y: y, position: 'lt' + i });
                    x = cX + this.sideXHalfLength;
                    pointList.push({ x: x, y: y, position: 'rt' + i });
                }

                var availablePointList = [];

                pointList.forEach(function (item) {
                    var isVacant = true;

                    _this24.dependantIdList.forEach(function (dId) {
                        var figure = _this24.getCanvasFigure(dId);

                        if (figure instanceof EspoBpmn.Figures.EventIntermediateBoundary) {
                            if ((!forElementId || forElementId !== dId) && item.position === figure.data.attachPosition) {
                                isVacant = false;
                            }
                        }
                    });

                    if (isVacant) {
                        availablePointList.push(item);
                    }
                });

                return availablePointList;
            }
        }, {
            key: 'rePositionDependencies',
            value: function rePositionDependencies() {
                var _this25 = this;

                this.dependantIdList.forEach(function (id) {
                    var figure = _this25.canvas.getFigure(id);

                    if (!figure) {
                        return;
                    }

                    if (figure instanceof EspoBpmn.Figures.EventIntermediateBoundary) {
                        var position = figure.data.attachPosition;

                        if (!position) {
                            return;
                        }

                        figure.data.center = _this25.getAttachPointByPosition(position);
                    }
                });
            }
        }, {
            key: 'getAttachPointByPosition',
            value: function getAttachPointByPosition(position) {
                var cX = this.data.center.x;
                var cY = this.data.center.y;
                var x, y;

                var p1 = position[0];
                var p2 = position[1];

                var i = parseInt(position.substr(2));

                if (p1 === 't' || p1 === 'b') {
                    if (i > this.attachPointXHalfNumber) {
                        i = this.attachPointXHalfNumber;
                    }
                } else {
                    if (i > this.attachPointYHalfNumber) {
                        i = this.attachPointYHalfNumber;
                    }
                }

                var boundaryAttachIntervalHalfSize = this.boundaryAttachIntervalSize / 2;

                if (p1 === 't') {
                    y = cY - this.sideYHalfLength;
                } else if (position[0] === 'b') {
                    y = cY + this.sideYHalfLength;
                }

                if (p1 === 't' || p1 === 'b') {
                    if (p2 === 'r') {
                        x = cX + i * this.boundaryAttachIntervalSize - boundaryAttachIntervalHalfSize;
                    } else {
                        x = cX - i * this.boundaryAttachIntervalSize + boundaryAttachIntervalHalfSize;
                    }
                }

                if (p1 === 'l') {
                    x = cX - this.sideXHalfLength;
                } else if (position[0] === 'r') {
                    x = cX + this.sideXHalfLength;
                }

                if (p1 === 'l' || p1 === 'r') {
                    if (p2 === 't') {
                        y = cY - i * this.boundaryAttachIntervalSize + boundaryAttachIntervalHalfSize;
                    } else {
                        y = cY + i * this.boundaryAttachIntervalSize - boundaryAttachIntervalHalfSize;
                    }
                }

                return { x: x, y: y };
            }
        }, {
            key: 'getAvailableMarkerList',
            value: function getAvailableMarkerList() {
                return [];
            }
        }, {
            key: 'hasMarker',
            value: function hasMarker(name) {
                var methodName = 'hasMarker' + name.charAt(0).toUpperCase() + name.slice(1);

                return this[methodName]();
            }
        }, {
            key: 'getMarkerIconData',
            value: function getMarkerIconData(name) {
                var iconName = 'marker' + name.charAt(0).toUpperCase() + name.slice(1);

                return EspoBpmn.Icons[iconName];
            }
        }, {
            key: 'setTransparency',
            value: function setTransparency(value) {
                this.rectangleElement.setAttribute('stroke-opacity', value);

                if (this.isExpanded()) {
                    return;
                }

                this.rectangleElement.setAttribute('fill-opacity', value);

                if (this.internalRectangleElement) {
                    this.internalRectangleElement.setAttribute('fill-opacity', value);
                    this.internalRectangleElement.setAttribute('stroke-opacity', value);
                }

                if (this.pathElement) {
                    this.pathElement.setAttribute('fill-opacity', value);
                    this.pathElement.setAttribute('stroke-opacity', value);
                }

                this.markerIconElementList.forEach(function (element) {
                    element.setAttribute('fill-opacity', value);
                });
            }
        }, {
            key: 'unsetTransparency',
            value: function unsetTransparency() {
                this.rectangleElement.removeAttribute('stroke-opacity');

                if (this.isExpanded()) {
                    return;
                }

                this.rectangleElement.removeAttribute('fill-opacity');

                if (this.internalRectangleElement) {
                    this.internalRectangleElement.removeAttribute('fill-opacity');
                    this.internalRectangleElement.removeAttribute('stroke-opacity');
                }

                if (this.pathElement) {
                    this.pathElement.removeAttribute('fill-opacity');
                    this.pathElement.removeAttribute('stroke-opacity');
                }

                this.markerIconElementList.forEach(function (element) {
                    element.removeAttribute('fill-opacity');
                });
            }
        }]);

        return Rectangle;
    }(EspoBpmn.Figures.Base);
}).call(undefined, EspoBpmn);

(function (EspoBpmn) {

    EspoBpmn.Figures.EventIntermediate = function (_EspoBpmn$Figures$Cir) {
        _inherits(EventIntermediate, _EspoBpmn$Figures$Cir);

        function EventIntermediate() {
            _classCallCheck(this, EventIntermediate);

            return _possibleConstructorReturn(this, (EventIntermediate.__proto__ || Object.getPrototypeOf(EventIntermediate)).apply(this, arguments));
        }

        _createClass(EventIntermediate, [{
            key: 'isDoubleBorder',
            value: function isDoubleBorder() {
                return true;
            }
        }]);

        return EventIntermediate;
    }(EspoBpmn.Figures.Circle);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventIntermediateBoundary = function (_EspoBpmn$Figures$Eve) {
        _inherits(EventIntermediateBoundary, _EspoBpmn$Figures$Eve);

        function EventIntermediateBoundary() {
            _classCallCheck(this, EventIntermediateBoundary);

            return _possibleConstructorReturn(this, (EventIntermediateBoundary.__proto__ || Object.getPrototypeOf(EventIntermediateBoundary)).apply(this, arguments));
        }

        _createClass(EventIntermediateBoundary, [{
            key: 'isBoundaryEvent',
            value: function isBoundaryEvent() {
                return true;
            }
        }, {
            key: 'isDottedLineBorder',
            value: function isDottedLineBorder() {
                return !this.data.cancelActivity;
            }
        }, {
            key: 'isAlignableToGrid',
            value: function isAlignableToGrid() {
                return false;
            }
        }, {
            key: 'init',
            value: function init() {
                _get(EventIntermediateBoundary.prototype.__proto__ || Object.getPrototypeOf(EventIntermediateBoundary.prototype), 'init', this).call(this);
                if (this.data.attachedToId) {
                    var figure = this.canvas.getFigure(this.data.attachedToId);
                    if (figure) {
                        if (!~figure.dependantIdList.indexOf(this.id)) {
                            figure.dependantIdList.push(this.id);
                        }
                    }
                }
            }
        }, {
            key: 'onRemove',
            value: function onRemove(isDependantRemove, removedIdList) {
                if (this.data.attachedToId) {
                    var figure = this.canvas.getFigure(this.data.attachedToId);
                    if (figure) {
                        if (!isDependantRemove || removedIdList && !~removedIdList.indexOf(figure.id)) {
                            var index = figure.dependantIdList.indexOf(this.id);
                            if (~index) {
                                figure.dependantIdList.splice(index, 1);
                            }
                        }
                    }
                }
            }
        }, {
            key: 'draggingProcess',
            value: function draggingProcess(e) {
                this.getElement().style.cursor = 'move';
                this.canvas.getElement().style.cursor = 'move';

                var figure = this.canvas.getFigure(this.data.attachedToId);
                figure.getElement().style.cursor = 'move';

                if (!figure) return;

                if (!this.isDragged) {
                    this.setIsDragged();
                    return;
                }

                var offset = this.canvas.getOffsetFromMouseEvent(e);
                var point = this.canvas.getPointFromOffset(offset);
                var x = point.x;
                var y = point.y;

                var attachPoint = figure.findClosestAvailableAttachPoint({ x: x, y: y }, this.id);
                if (!attachPoint) return;

                this.data.attachPosition = attachPoint.position;
                this.setElementCenter({ x: attachPoint.x, y: attachPoint.y });

                this.fetchFromDom();
                this.rePositionDependencies();
                this.reRenderDependencies();
                this.onDrag();
            }
        }, {
            key: 'finishDragging',
            value: function finishDragging() {
                if (this.isDragged) {
                    this.clickIsBlocked = true;
                    setTimeout(function () {
                        this.clickIsBlocked = false;
                    }.bind(this), 100);
                }

                this.canvas.getElement().style.cursor = 'default';

                var figure = this.canvas.getFigure(this.data.attachedToId);
                figure.getElement().style.cursor = 'pointer';

                _get(EventIntermediateBoundary.prototype.__proto__ || Object.getPrototypeOf(EventIntermediateBoundary.prototype), 'finishDragging', this).call(this);
            }
        }]);

        return EventIntermediateBoundary;
    }(EspoBpmn.Figures.EventIntermediate);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventStart = function (_EspoBpmn$Figures$Cir2) {
        _inherits(EventStart, _EspoBpmn$Figures$Cir2);

        function EventStart() {
            _classCallCheck(this, EventStart);

            return _possibleConstructorReturn(this, (EventStart.__proto__ || Object.getPrototypeOf(EventStart)).apply(this, arguments));
        }

        _createClass(EventStart, [{
            key: 'checkFlowEndAllowed',
            value: function checkFlowEndAllowed() {
                return false;
            }
        }, {
            key: 'isDottedLineBorder',
            value: function isDottedLineBorder() {
                if (!this.canvas) {
                    if ('isInterrupting' in this.data) {
                        return !this.data.isInterrupting;
                    }
                    return true;
                }
                if (this.isInEventSubProcess()) {
                    if ('isInterrupting' in this.data) {
                        return !this.data.isInterrupting;
                    }
                    return true;
                }
                return false;
            }
        }, {
            key: 'onRemove',
            value: function onRemove() {
                _get(EventStart.prototype.__proto__ || Object.getPrototypeOf(EventStart.prototype), 'onRemove', this).call(this);
                if (this.canvas.subProcessFigure && this.canvas.subProcessFigure.data) {
                    if (this.canvas.subProcessFigure.data.eventStartData) {
                        this.canvas.subProcessFigure.data.eventStartData = null;
                    }
                }
            }
        }, {
            key: 'onCreate',
            value: function onCreate() {
                _get(EventStart.prototype.__proto__ || Object.getPrototypeOf(EventStart.prototype), 'onCreate', this).call(this);
                if (this.canvas.subProcessFigure && this.canvas.subProcessFigure.data) {
                    if (this.canvas.subProcessFigure.data.triggeredByEvent) {
                        this.canvas.subProcessFigure.data.eventStartData = this.data;
                    }
                }
            }
        }, {
            key: 'checkCreateAllowed',
            value: function checkCreateAllowed() {
                if (this.isAllowedOnlyInEventSubProcess()) {
                    if (!this.canvas.subProcessFigure) return false;
                    if (this.canvas.subProcessFigure.type != 'eventSubProcess' && !this.canvas.subProcessFigure.data.triggeredByEvent) {
                        return false;
                    }
                }
                if (this.canvas.subProcessFigure && this.canvas.subProcessFigure.data) {
                    if (this.canvas.subProcessFigure.type == 'eventSubProcess' || this.canvas.subProcessFigure.data.triggeredByEvent) {
                        if (this.canvas.subProcessFigure.data.eventStartData) {
                            return false;
                        }
                        if (this.data.type === 'eventStart') return false;
                    } else {
                        if (this.data.type !== 'eventStart') return false;
                    }
                }
                return true;
            }
        }, {
            key: 'isAllowedOnlyInEventSubProcess',
            value: function isAllowedOnlyInEventSubProcess() {
                return false;
            }
        }]);

        return EventStart;
    }(EspoBpmn.Figures.Circle);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventStartConditional = function (_EspoBpmn$Figures$Eve2) {
        _inherits(EventStartConditional, _EspoBpmn$Figures$Eve2);

        function EventStartConditional() {
            _classCallCheck(this, EventStartConditional);

            return _possibleConstructorReturn(this, (EventStartConditional.__proto__ || Object.getPrototypeOf(EventStartConditional)).apply(this, arguments));
        }

        _createClass(EventStartConditional, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventConditionalCatch';
            }
        }]);

        return EventStartConditional;
    }(EspoBpmn.Figures.EventStart);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventStartTimer = function (_EspoBpmn$Figures$Eve3) {
        _inherits(EventStartTimer, _EspoBpmn$Figures$Eve3);

        function EventStartTimer() {
            _classCallCheck(this, EventStartTimer);

            return _possibleConstructorReturn(this, (EventStartTimer.__proto__ || Object.getPrototypeOf(EventStartTimer)).apply(this, arguments));
        }

        _createClass(EventStartTimer, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventTimerCatch';
            }
        }]);

        return EventStartTimer;
    }(EspoBpmn.Figures.EventStart);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventStartMessage = function (_EspoBpmn$Figures$Eve4) {
        _inherits(EventStartMessage, _EspoBpmn$Figures$Eve4);

        function EventStartMessage() {
            _classCallCheck(this, EventStartMessage);

            return _possibleConstructorReturn(this, (EventStartMessage.__proto__ || Object.getPrototypeOf(EventStartMessage)).apply(this, arguments));
        }

        _createClass(EventStartMessage, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventMessageCatch';
            }
        }]);

        return EventStartMessage;
    }(EspoBpmn.Figures.EventStart);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventStartSignal = function (_EspoBpmn$Figures$Eve5) {
        _inherits(EventStartSignal, _EspoBpmn$Figures$Eve5);

        function EventStartSignal() {
            _classCallCheck(this, EventStartSignal);

            return _possibleConstructorReturn(this, (EventStartSignal.__proto__ || Object.getPrototypeOf(EventStartSignal)).apply(this, arguments));
        }

        _createClass(EventStartSignal, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventSignalCatch';
            }
        }]);

        return EventStartSignal;
    }(EspoBpmn.Figures.EventStart);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventStartError = function (_EspoBpmn$Figures$Eve6) {
        _inherits(EventStartError, _EspoBpmn$Figures$Eve6);

        function EventStartError() {
            _classCallCheck(this, EventStartError);

            return _possibleConstructorReturn(this, (EventStartError.__proto__ || Object.getPrototypeOf(EventStartError)).apply(this, arguments));
        }

        _createClass(EventStartError, [{
            key: 'isAllowedOnlyInEventSubProcess',
            value: function isAllowedOnlyInEventSubProcess() {
                return true;
            }
        }, {
            key: 'isDottedLineBorder',
            value: function isDottedLineBorder() {
                return false;
            }
        }, {
            key: 'getIconName',
            value: function getIconName() {
                return 'eventErrorCatch';
            }
        }]);

        return EventStartError;
    }(EspoBpmn.Figures.EventStart);
}).call(undefined, EspoBpmn);

(function (EspoBpmn) {

    EspoBpmn.Figures.EventStartEscalation = function (_EspoBpmn$Figures$Eve7) {
        _inherits(EventStartEscalation, _EspoBpmn$Figures$Eve7);

        function EventStartEscalation() {
            _classCallCheck(this, EventStartEscalation);

            return _possibleConstructorReturn(this, (EventStartEscalation.__proto__ || Object.getPrototypeOf(EventStartEscalation)).apply(this, arguments));
        }

        _createClass(EventStartEscalation, [{
            key: 'isAllowedOnlyInEventSubProcess',
            value: function isAllowedOnlyInEventSubProcess() {
                return true;
            }
        }, {
            key: 'getIconName',
            value: function getIconName() {
                return 'eventEscalationCatch';
            }
        }]);

        return EventStartEscalation;
    }(EspoBpmn.Figures.EventStart);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventStartCompensation = function (_EspoBpmn$Figures$Eve8) {
        _inherits(EventStartCompensation, _EspoBpmn$Figures$Eve8);

        function EventStartCompensation() {
            _classCallCheck(this, EventStartCompensation);

            return _possibleConstructorReturn(this, (EventStartCompensation.__proto__ || Object.getPrototypeOf(EventStartCompensation)).apply(this, arguments));
        }

        _createClass(EventStartCompensation, [{
            key: 'isAllowedOnlyInEventSubProcess',
            value: function isAllowedOnlyInEventSubProcess() {
                return true;
            }
        }, {
            key: 'isDottedLineBorder',
            value: function isDottedLineBorder() {
                return false;
            }
        }, {
            key: 'getIconName',
            value: function getIconName() {
                return 'eventCompensationCatch';
            }
        }]);

        return EventStartCompensation;
    }(EspoBpmn.Figures.EventStart);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventStartMultiple = function (_EspoBpmn$Figures$Eve9) {
        _inherits(EventStartMultiple, _EspoBpmn$Figures$Eve9);

        function EventStartMultiple() {
            _classCallCheck(this, EventStartMultiple);

            return _possibleConstructorReturn(this, (EventStartMultiple.__proto__ || Object.getPrototypeOf(EventStartMultiple)).apply(this, arguments));
        }

        _createClass(EventStartMultiple, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventMultipleCatch';
            }
        }]);

        return EventStartMultiple;
    }(EspoBpmn.Figures.EventStart);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventStartParallelMultiple = function (_EspoBpmn$Figures$Eve10) {
        _inherits(EventStartParallelMultiple, _EspoBpmn$Figures$Eve10);

        function EventStartParallelMultiple() {
            _classCallCheck(this, EventStartParallelMultiple);

            return _possibleConstructorReturn(this, (EventStartParallelMultiple.__proto__ || Object.getPrototypeOf(EventStartParallelMultiple)).apply(this, arguments));
        }

        _createClass(EventStartParallelMultiple, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventParallelMultipleCatch';
            }
        }]);

        return EventStartParallelMultiple;
    }(EspoBpmn.Figures.EventStart);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventIntermediateThrow = function (_EspoBpmn$Figures$Eve11) {
        _inherits(EventIntermediateThrow, _EspoBpmn$Figures$Eve11);

        function EventIntermediateThrow() {
            _classCallCheck(this, EventIntermediateThrow);

            return _possibleConstructorReturn(this, (EventIntermediateThrow.__proto__ || Object.getPrototypeOf(EventIntermediateThrow)).apply(this, arguments));
        }

        return EventIntermediateThrow;
    }(EspoBpmn.Figures.EventIntermediate);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventIntermediateTimerCatch = function (_EspoBpmn$Figures$Eve12) {
        _inherits(EventIntermediateTimerCatch, _EspoBpmn$Figures$Eve12);

        function EventIntermediateTimerCatch() {
            _classCallCheck(this, EventIntermediateTimerCatch);

            return _possibleConstructorReturn(this, (EventIntermediateTimerCatch.__proto__ || Object.getPrototypeOf(EventIntermediateTimerCatch)).apply(this, arguments));
        }

        _createClass(EventIntermediateTimerCatch, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventTimerCatch';
            }
        }]);

        return EventIntermediateTimerCatch;
    }(EspoBpmn.Figures.EventIntermediate);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventIntermediateConditionalCatch = function (_EspoBpmn$Figures$Eve13) {
        _inherits(EventIntermediateConditionalCatch, _EspoBpmn$Figures$Eve13);

        function EventIntermediateConditionalCatch() {
            _classCallCheck(this, EventIntermediateConditionalCatch);

            return _possibleConstructorReturn(this, (EventIntermediateConditionalCatch.__proto__ || Object.getPrototypeOf(EventIntermediateConditionalCatch)).apply(this, arguments));
        }

        _createClass(EventIntermediateConditionalCatch, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventConditionalCatch';
            }
        }]);

        return EventIntermediateConditionalCatch;
    }(EspoBpmn.Figures.EventIntermediate);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventIntermediateMessageThrow = function (_EspoBpmn$Figures$Eve14) {
        _inherits(EventIntermediateMessageThrow, _EspoBpmn$Figures$Eve14);

        function EventIntermediateMessageThrow() {
            _classCallCheck(this, EventIntermediateMessageThrow);

            return _possibleConstructorReturn(this, (EventIntermediateMessageThrow.__proto__ || Object.getPrototypeOf(EventIntermediateMessageThrow)).apply(this, arguments));
        }

        _createClass(EventIntermediateMessageThrow, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventMessageThrow';
            }
        }]);

        return EventIntermediateMessageThrow;
    }(EspoBpmn.Figures.EventIntermediate);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventIntermediateMessageCatch = function (_EspoBpmn$Figures$Eve15) {
        _inherits(EventIntermediateMessageCatch, _EspoBpmn$Figures$Eve15);

        function EventIntermediateMessageCatch() {
            _classCallCheck(this, EventIntermediateMessageCatch);

            return _possibleConstructorReturn(this, (EventIntermediateMessageCatch.__proto__ || Object.getPrototypeOf(EventIntermediateMessageCatch)).apply(this, arguments));
        }

        _createClass(EventIntermediateMessageCatch, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventMessageCatch';
            }
        }]);

        return EventIntermediateMessageCatch;
    }(EspoBpmn.Figures.EventIntermediate);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventIntermediateSignalThrow = function (_EspoBpmn$Figures$Eve16) {
        _inherits(EventIntermediateSignalThrow, _EspoBpmn$Figures$Eve16);

        function EventIntermediateSignalThrow() {
            _classCallCheck(this, EventIntermediateSignalThrow);

            return _possibleConstructorReturn(this, (EventIntermediateSignalThrow.__proto__ || Object.getPrototypeOf(EventIntermediateSignalThrow)).apply(this, arguments));
        }

        _createClass(EventIntermediateSignalThrow, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventSignalThrow';
            }
        }]);

        return EventIntermediateSignalThrow;
    }(EspoBpmn.Figures.EventIntermediate);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventIntermediateSignalCatch = function (_EspoBpmn$Figures$Eve17) {
        _inherits(EventIntermediateSignalCatch, _EspoBpmn$Figures$Eve17);

        function EventIntermediateSignalCatch() {
            _classCallCheck(this, EventIntermediateSignalCatch);

            return _possibleConstructorReturn(this, (EventIntermediateSignalCatch.__proto__ || Object.getPrototypeOf(EventIntermediateSignalCatch)).apply(this, arguments));
        }

        _createClass(EventIntermediateSignalCatch, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventSignalCatch';
            }
        }]);

        return EventIntermediateSignalCatch;
    }(EspoBpmn.Figures.EventIntermediate);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventIntermediateLinkThrow = function (_EspoBpmn$Figures$Eve18) {
        _inherits(EventIntermediateLinkThrow, _EspoBpmn$Figures$Eve18);

        function EventIntermediateLinkThrow() {
            _classCallCheck(this, EventIntermediateLinkThrow);

            return _possibleConstructorReturn(this, (EventIntermediateLinkThrow.__proto__ || Object.getPrototypeOf(EventIntermediateLinkThrow)).apply(this, arguments));
        }

        _createClass(EventIntermediateLinkThrow, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventLinkThrow';
            }
        }]);

        return EventIntermediateLinkThrow;
    }(EspoBpmn.Figures.EventIntermediate);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventIntermediateLinkCatch = function (_EspoBpmn$Figures$Eve19) {
        _inherits(EventIntermediateLinkCatch, _EspoBpmn$Figures$Eve19);

        function EventIntermediateLinkCatch() {
            _classCallCheck(this, EventIntermediateLinkCatch);

            return _possibleConstructorReturn(this, (EventIntermediateLinkCatch.__proto__ || Object.getPrototypeOf(EventIntermediateLinkCatch)).apply(this, arguments));
        }

        _createClass(EventIntermediateLinkCatch, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventLinkCatch';
            }
        }]);

        return EventIntermediateLinkCatch;
    }(EspoBpmn.Figures.EventIntermediate);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventIntermediateMultipleCatch = function (_EspoBpmn$Figures$Eve20) {
        _inherits(EventIntermediateMultipleCatch, _EspoBpmn$Figures$Eve20);

        function EventIntermediateMultipleCatch() {
            _classCallCheck(this, EventIntermediateMultipleCatch);

            return _possibleConstructorReturn(this, (EventIntermediateMultipleCatch.__proto__ || Object.getPrototypeOf(EventIntermediateMultipleCatch)).apply(this, arguments));
        }

        _createClass(EventIntermediateMultipleCatch, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventMultipleCatch';
            }
        }]);

        return EventIntermediateMultipleCatch;
    }(EspoBpmn.Figures.EventIntermediate);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventIntermediateCompensationThrow = function (_EspoBpmn$Figures$Eve21) {
        _inherits(EventIntermediateCompensationThrow, _EspoBpmn$Figures$Eve21);

        function EventIntermediateCompensationThrow() {
            _classCallCheck(this, EventIntermediateCompensationThrow);

            return _possibleConstructorReturn(this, (EventIntermediateCompensationThrow.__proto__ || Object.getPrototypeOf(EventIntermediateCompensationThrow)).apply(this, arguments));
        }

        _createClass(EventIntermediateCompensationThrow, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventCompensationThrow';
            }
        }]);

        return EventIntermediateCompensationThrow;
    }(EspoBpmn.Figures.EventIntermediate);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventIntermediateEscalationThrow = function (_EspoBpmn$Figures$Eve22) {
        _inherits(EventIntermediateEscalationThrow, _EspoBpmn$Figures$Eve22);

        function EventIntermediateEscalationThrow() {
            _classCallCheck(this, EventIntermediateEscalationThrow);

            return _possibleConstructorReturn(this, (EventIntermediateEscalationThrow.__proto__ || Object.getPrototypeOf(EventIntermediateEscalationThrow)).apply(this, arguments));
        }

        _createClass(EventIntermediateEscalationThrow, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventEscalationThrow';
            }
        }]);

        return EventIntermediateEscalationThrow;
    }(EspoBpmn.Figures.EventIntermediate);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventIntermediateMultipleThrow = function (_EspoBpmn$Figures$Eve23) {
        _inherits(EventIntermediateMultipleThrow, _EspoBpmn$Figures$Eve23);

        function EventIntermediateMultipleThrow() {
            _classCallCheck(this, EventIntermediateMultipleThrow);

            return _possibleConstructorReturn(this, (EventIntermediateMultipleThrow.__proto__ || Object.getPrototypeOf(EventIntermediateMultipleThrow)).apply(this, arguments));
        }

        _createClass(EventIntermediateMultipleThrow, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventMultipleThrow';
            }
        }]);

        return EventIntermediateMultipleThrow;
    }(EspoBpmn.Figures.EventIntermediate);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventIntermediateParallelMultipleCatch = function (_EspoBpmn$Figures$Eve24) {
        _inherits(EventIntermediateParallelMultipleCatch, _EspoBpmn$Figures$Eve24);

        function EventIntermediateParallelMultipleCatch() {
            _classCallCheck(this, EventIntermediateParallelMultipleCatch);

            return _possibleConstructorReturn(this, (EventIntermediateParallelMultipleCatch.__proto__ || Object.getPrototypeOf(EventIntermediateParallelMultipleCatch)).apply(this, arguments));
        }

        _createClass(EventIntermediateParallelMultipleCatch, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventParallelMultipleCatch';
            }
        }]);

        return EventIntermediateParallelMultipleCatch;
    }(EspoBpmn.Figures.EventIntermediate);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventIntermediateCancelBoundary = function (_EspoBpmn$Figures$Eve25) {
        _inherits(EventIntermediateCancelBoundary, _EspoBpmn$Figures$Eve25);

        function EventIntermediateCancelBoundary() {
            _classCallCheck(this, EventIntermediateCancelBoundary);

            return _possibleConstructorReturn(this, (EventIntermediateCancelBoundary.__proto__ || Object.getPrototypeOf(EventIntermediateCancelBoundary)).apply(this, arguments));
        }

        _createClass(EventIntermediateCancelBoundary, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventCancelCatch';
            }
        }, {
            key: 'isDottedLineBorder',
            value: function isDottedLineBorder() {
                return false;
            }
        }]);

        return EventIntermediateCancelBoundary;
    }(EspoBpmn.Figures.EventIntermediateBoundary);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventIntermediateCompensationBoundary = function (_EspoBpmn$Figures$Eve26) {
        _inherits(EventIntermediateCompensationBoundary, _EspoBpmn$Figures$Eve26);

        function EventIntermediateCompensationBoundary() {
            _classCallCheck(this, EventIntermediateCompensationBoundary);

            return _possibleConstructorReturn(this, (EventIntermediateCompensationBoundary.__proto__ || Object.getPrototypeOf(EventIntermediateCompensationBoundary)).apply(this, arguments));
        }

        _createClass(EventIntermediateCompensationBoundary, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventCompensationCatch';
            }
        }, {
            key: 'outgoingFlowIsAssociation',
            value: function outgoingFlowIsAssociation() {
                return true;
            }
        }, {
            key: 'checkFlowToAllowed',
            value: function checkFlowToAllowed(endFigure) {
                if (endFigure.flowFromIdList.length) {
                    return false;
                }

                if (endFigure instanceof EspoBpmn.Figures.Task || endFigure instanceof EspoBpmn.Figures.SubProcess || endFigure instanceof EspoBpmn.Figures.CallActivity) {
                    return true;
                }

                return false;
            }
        }, {
            key: 'isDottedLineBorder',
            value: function isDottedLineBorder() {
                return false;
            }
        }]);

        return EventIntermediateCompensationBoundary;
    }(EspoBpmn.Figures.EventIntermediateBoundary);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventIntermediateMultipleBoundary = function (_EspoBpmn$Figures$Eve27) {
        _inherits(EventIntermediateMultipleBoundary, _EspoBpmn$Figures$Eve27);

        function EventIntermediateMultipleBoundary() {
            _classCallCheck(this, EventIntermediateMultipleBoundary);

            return _possibleConstructorReturn(this, (EventIntermediateMultipleBoundary.__proto__ || Object.getPrototypeOf(EventIntermediateMultipleBoundary)).apply(this, arguments));
        }

        _createClass(EventIntermediateMultipleBoundary, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventMultipleCatch';
            }
        }]);

        return EventIntermediateMultipleBoundary;
    }(EspoBpmn.Figures.EventIntermediateBoundary);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventIntermediateParallelMultipleBoundary = function (_EspoBpmn$Figures$Eve28) {
        _inherits(EventIntermediateParallelMultipleBoundary, _EspoBpmn$Figures$Eve28);

        function EventIntermediateParallelMultipleBoundary() {
            _classCallCheck(this, EventIntermediateParallelMultipleBoundary);

            return _possibleConstructorReturn(this, (EventIntermediateParallelMultipleBoundary.__proto__ || Object.getPrototypeOf(EventIntermediateParallelMultipleBoundary)).apply(this, arguments));
        }

        _createClass(EventIntermediateParallelMultipleBoundary, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventParallelMultipleCatch';
            }
        }]);

        return EventIntermediateParallelMultipleBoundary;
    }(EspoBpmn.Figures.EventIntermediateBoundary);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventIntermediateMessageBoundary = function (_EspoBpmn$Figures$Eve29) {
        _inherits(EventIntermediateMessageBoundary, _EspoBpmn$Figures$Eve29);

        function EventIntermediateMessageBoundary() {
            _classCallCheck(this, EventIntermediateMessageBoundary);

            return _possibleConstructorReturn(this, (EventIntermediateMessageBoundary.__proto__ || Object.getPrototypeOf(EventIntermediateMessageBoundary)).apply(this, arguments));
        }

        _createClass(EventIntermediateMessageBoundary, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventMessageCatch';
            }
        }]);

        return EventIntermediateMessageBoundary;
    }(EspoBpmn.Figures.EventIntermediateBoundary);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventIntermediateTimerBoundary = function (_EspoBpmn$Figures$Eve30) {
        _inherits(EventIntermediateTimerBoundary, _EspoBpmn$Figures$Eve30);

        function EventIntermediateTimerBoundary() {
            _classCallCheck(this, EventIntermediateTimerBoundary);

            return _possibleConstructorReturn(this, (EventIntermediateTimerBoundary.__proto__ || Object.getPrototypeOf(EventIntermediateTimerBoundary)).apply(this, arguments));
        }

        _createClass(EventIntermediateTimerBoundary, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventTimerCatch';
            }
        }]);

        return EventIntermediateTimerBoundary;
    }(EspoBpmn.Figures.EventIntermediateBoundary);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventIntermediateEscalationBoundary = function (_EspoBpmn$Figures$Eve31) {
        _inherits(EventIntermediateEscalationBoundary, _EspoBpmn$Figures$Eve31);

        function EventIntermediateEscalationBoundary() {
            _classCallCheck(this, EventIntermediateEscalationBoundary);

            return _possibleConstructorReturn(this, (EventIntermediateEscalationBoundary.__proto__ || Object.getPrototypeOf(EventIntermediateEscalationBoundary)).apply(this, arguments));
        }

        _createClass(EventIntermediateEscalationBoundary, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventEscalationCatch';
            }
        }]);

        return EventIntermediateEscalationBoundary;
    }(EspoBpmn.Figures.EventIntermediateBoundary);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventIntermediateConditionalBoundary = function (_EspoBpmn$Figures$Eve32) {
        _inherits(EventIntermediateConditionalBoundary, _EspoBpmn$Figures$Eve32);

        function EventIntermediateConditionalBoundary() {
            _classCallCheck(this, EventIntermediateConditionalBoundary);

            return _possibleConstructorReturn(this, (EventIntermediateConditionalBoundary.__proto__ || Object.getPrototypeOf(EventIntermediateConditionalBoundary)).apply(this, arguments));
        }

        _createClass(EventIntermediateConditionalBoundary, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventConditionalCatch';
            }
        }]);

        return EventIntermediateConditionalBoundary;
    }(EspoBpmn.Figures.EventIntermediateBoundary);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventIntermediateSignalBoundary = function (_EspoBpmn$Figures$Eve33) {
        _inherits(EventIntermediateSignalBoundary, _EspoBpmn$Figures$Eve33);

        function EventIntermediateSignalBoundary() {
            _classCallCheck(this, EventIntermediateSignalBoundary);

            return _possibleConstructorReturn(this, (EventIntermediateSignalBoundary.__proto__ || Object.getPrototypeOf(EventIntermediateSignalBoundary)).apply(this, arguments));
        }

        _createClass(EventIntermediateSignalBoundary, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventSignalCatch';
            }
        }]);

        return EventIntermediateSignalBoundary;
    }(EspoBpmn.Figures.EventIntermediateBoundary);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventIntermediateErrorBoundary = function (_EspoBpmn$Figures$Eve34) {
        _inherits(EventIntermediateErrorBoundary, _EspoBpmn$Figures$Eve34);

        function EventIntermediateErrorBoundary() {
            _classCallCheck(this, EventIntermediateErrorBoundary);

            return _possibleConstructorReturn(this, (EventIntermediateErrorBoundary.__proto__ || Object.getPrototypeOf(EventIntermediateErrorBoundary)).apply(this, arguments));
        }

        _createClass(EventIntermediateErrorBoundary, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventErrorCatch';
            }
        }, {
            key: 'isDottedLineBorder',
            value: function isDottedLineBorder() {
                return false;
            }
        }]);

        return EventIntermediateErrorBoundary;
    }(EspoBpmn.Figures.EventIntermediateBoundary);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventEnd = function (_EspoBpmn$Figures$Cir3) {
        _inherits(EventEnd, _EspoBpmn$Figures$Cir3);

        function EventEnd() {
            _classCallCheck(this, EventEnd);

            return _possibleConstructorReturn(this, (EventEnd.__proto__ || Object.getPrototypeOf(EventEnd)).apply(this, arguments));
        }

        _createClass(EventEnd, [{
            key: 'checkFlowStartAllowed',
            value: function checkFlowStartAllowed() {
                return false;
            }
        }, {
            key: 'isBoldStroke',
            value: function isBoldStroke() {
                return true;
            }
        }]);

        return EventEnd;
    }(EspoBpmn.Figures.Circle);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventEndTerminate = function (_EspoBpmn$Figures$Eve35) {
        _inherits(EventEndTerminate, _EspoBpmn$Figures$Eve35);

        function EventEndTerminate() {
            _classCallCheck(this, EventEndTerminate);

            return _possibleConstructorReturn(this, (EventEndTerminate.__proto__ || Object.getPrototypeOf(EventEndTerminate)).apply(this, arguments));
        }

        _createClass(EventEndTerminate, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventTerminateThrow';
            }
        }]);

        return EventEndTerminate;
    }(EspoBpmn.Figures.EventEnd);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventEndMessage = function (_EspoBpmn$Figures$Eve36) {
        _inherits(EventEndMessage, _EspoBpmn$Figures$Eve36);

        function EventEndMessage() {
            _classCallCheck(this, EventEndMessage);

            return _possibleConstructorReturn(this, (EventEndMessage.__proto__ || Object.getPrototypeOf(EventEndMessage)).apply(this, arguments));
        }

        _createClass(EventEndMessage, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventMessageThrow';
            }
        }]);

        return EventEndMessage;
    }(EspoBpmn.Figures.EventEnd);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventEndSignal = function (_EspoBpmn$Figures$Eve37) {
        _inherits(EventEndSignal, _EspoBpmn$Figures$Eve37);

        function EventEndSignal() {
            _classCallCheck(this, EventEndSignal);

            return _possibleConstructorReturn(this, (EventEndSignal.__proto__ || Object.getPrototypeOf(EventEndSignal)).apply(this, arguments));
        }

        _createClass(EventEndSignal, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventSignalThrow';
            }
        }]);

        return EventEndSignal;
    }(EspoBpmn.Figures.EventEnd);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventEndError = function (_EspoBpmn$Figures$Eve38) {
        _inherits(EventEndError, _EspoBpmn$Figures$Eve38);

        function EventEndError() {
            _classCallCheck(this, EventEndError);

            return _possibleConstructorReturn(this, (EventEndError.__proto__ || Object.getPrototypeOf(EventEndError)).apply(this, arguments));
        }

        _createClass(EventEndError, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventErrorThrow';
            }
        }]);

        return EventEndError;
    }(EspoBpmn.Figures.EventEnd);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventEndEscalation = function (_EspoBpmn$Figures$Eve39) {
        _inherits(EventEndEscalation, _EspoBpmn$Figures$Eve39);

        function EventEndEscalation() {
            _classCallCheck(this, EventEndEscalation);

            return _possibleConstructorReturn(this, (EventEndEscalation.__proto__ || Object.getPrototypeOf(EventEndEscalation)).apply(this, arguments));
        }

        _createClass(EventEndEscalation, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventEscalationThrow';
            }
        }]);

        return EventEndEscalation;
    }(EspoBpmn.Figures.EventEnd);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventEndCancel = function (_EspoBpmn$Figures$Eve40) {
        _inherits(EventEndCancel, _EspoBpmn$Figures$Eve40);

        function EventEndCancel() {
            _classCallCheck(this, EventEndCancel);

            return _possibleConstructorReturn(this, (EventEndCancel.__proto__ || Object.getPrototypeOf(EventEndCancel)).apply(this, arguments));
        }

        _createClass(EventEndCancel, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventCancelThrow';
            }
        }]);

        return EventEndCancel;
    }(EspoBpmn.Figures.EventEnd);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventEndCompensation = function (_EspoBpmn$Figures$Eve41) {
        _inherits(EventEndCompensation, _EspoBpmn$Figures$Eve41);

        function EventEndCompensation() {
            _classCallCheck(this, EventEndCompensation);

            return _possibleConstructorReturn(this, (EventEndCompensation.__proto__ || Object.getPrototypeOf(EventEndCompensation)).apply(this, arguments));
        }

        _createClass(EventEndCompensation, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventCompensationThrow';
            }
        }]);

        return EventEndCompensation;
    }(EspoBpmn.Figures.EventEnd);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.EventEndMultiple = function (_EspoBpmn$Figures$Eve42) {
        _inherits(EventEndMultiple, _EspoBpmn$Figures$Eve42);

        function EventEndMultiple() {
            _classCallCheck(this, EventEndMultiple);

            return _possibleConstructorReturn(this, (EventEndMultiple.__proto__ || Object.getPrototypeOf(EventEndMultiple)).apply(this, arguments));
        }

        _createClass(EventEndMultiple, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'eventMultipleThrow';
            }
        }]);

        return EventEndMultiple;
    }(EspoBpmn.Figures.EventEnd);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.Gateway = function (_EspoBpmn$Figures$Rho) {
        _inherits(Gateway, _EspoBpmn$Figures$Rho);

        function Gateway() {
            _classCallCheck(this, Gateway);

            return _possibleConstructorReturn(this, (Gateway.__proto__ || Object.getPrototypeOf(Gateway)).apply(this, arguments));
        }

        _createClass(Gateway, [{
            key: 'isDivergent',
            value: function isDivergent() {
                if (this.flowFromIdList.length > 1) {
                    return true;
                }
                return false;
            }
        }, {
            key: 'isConvergent',
            value: function isConvergent() {
                if (this.flowToIdList.length > 1) {
                    return true;
                }
                return false;
            }
        }]);

        return Gateway;
    }(EspoBpmn.Figures.Rhombus);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.GatewayExclusive = function (_EspoBpmn$Figures$Gat) {
        _inherits(GatewayExclusive, _EspoBpmn$Figures$Gat);

        function GatewayExclusive() {
            _classCallCheck(this, GatewayExclusive);

            return _possibleConstructorReturn(this, (GatewayExclusive.__proto__ || Object.getPrototypeOf(GatewayExclusive)).apply(this, arguments));
        }

        _createClass(GatewayExclusive, [{
            key: 'checkFlowStartAllowed',
            value: function checkFlowStartAllowed() {
                if (this.isConvergent()) {
                    if (!this.flowFromIdList.length) {
                        return true;
                    }

                    return false;
                }

                if (this.isDivergent()) {
                    return true;
                }

                return true;
            }
        }, {
            key: 'checkFlowEndAllowed',
            value: function checkFlowEndAllowed() {
                if (this.isDivergent()) {
                    if (!this.flowToIdList.length) {
                        return true;
                    }

                    return false;
                }

                if (this.isConvergent()) {
                    return true;
                }

                return true;
            }
        }, {
            key: 'checkFlowReturnAllowed',
            value: function checkFlowReturnAllowed() {
                return true;
            }
        }]);

        return GatewayExclusive;
    }(EspoBpmn.Figures.Gateway);
}).call(undefined, EspoBpmn);

(function (EspoBpmn) {

    EspoBpmn.Figures.GatewayInclusive = function (_EspoBpmn$Figures$Gat2) {
        _inherits(GatewayInclusive, _EspoBpmn$Figures$Gat2);

        function GatewayInclusive() {
            _classCallCheck(this, GatewayInclusive);

            return _possibleConstructorReturn(this, (GatewayInclusive.__proto__ || Object.getPrototypeOf(GatewayInclusive)).apply(this, arguments));
        }

        _createClass(GatewayInclusive, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'gatewayInclusive';
            }
        }, {
            key: 'getIconHeight',
            value: function getIconHeight() {
                return 30;
            }
        }, {
            key: 'getIconWidth',
            value: function getIconWidth() {
                return 30;
            }
        }, {
            key: 'checkFlowStartAllowed',
            value: function checkFlowStartAllowed() {
                if (this.isConvergent()) {
                    if (!this.flowFromIdList.length) {
                        return true;
                    }

                    return false;
                }

                if (this.isDivergent()) {
                    return true;
                }

                return true;
            }
        }, {
            key: 'checkFlowEndAllowed',
            value: function checkFlowEndAllowed() {
                if (this.isDivergent()) {
                    if (!this.flowToIdList.length) {
                        return true;
                    }

                    return false;
                }

                if (this.isConvergent()) {
                    return true;
                }

                return true;
            }
        }]);

        return GatewayInclusive;
    }(EspoBpmn.Figures.Gateway);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.GatewayParallel = function (_EspoBpmn$Figures$Gat3) {
        _inherits(GatewayParallel, _EspoBpmn$Figures$Gat3);

        function GatewayParallel() {
            _classCallCheck(this, GatewayParallel);

            return _possibleConstructorReturn(this, (GatewayParallel.__proto__ || Object.getPrototypeOf(GatewayParallel)).apply(this, arguments));
        }

        _createClass(GatewayParallel, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'gatewayParallel';
            }
        }, {
            key: 'checkFlowStartAllowed',
            value: function checkFlowStartAllowed() {
                if (this.isConvergent()) {
                    if (!this.flowFromIdList.length) {
                        return true;
                    }

                    return false;
                }

                if (this.isDivergent()) {
                    return true;
                }

                return true;
            }
        }, {
            key: 'checkFlowEndAllowed',
            value: function checkFlowEndAllowed() {
                if (this.isDivergent()) {
                    if (!this.flowToIdList.length) {
                        return true;
                    }

                    return false;
                }

                if (this.isConvergent()) {
                    return true;
                }

                return true;
            }
        }]);

        return GatewayParallel;
    }(EspoBpmn.Figures.Gateway);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.GatewayComplex = function (_EspoBpmn$Figures$Gat4) {
        _inherits(GatewayComplex, _EspoBpmn$Figures$Gat4);

        function GatewayComplex() {
            _classCallCheck(this, GatewayComplex);

            return _possibleConstructorReturn(this, (GatewayComplex.__proto__ || Object.getPrototypeOf(GatewayComplex)).apply(this, arguments));
        }

        _createClass(GatewayComplex, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'gatewayComplex';
            }
        }, {
            key: 'checkFlowStartAllowed',
            value: function checkFlowStartAllowed() {
                if (this.isConvergent()) {
                    if (!this.flowFromIdList.length) {
                        return true;
                    }

                    return false;
                }

                if (this.isDivergent()) {
                    return true;
                }

                return true;
            }
        }, {
            key: 'checkFlowEndAllowed',
            value: function checkFlowEndAllowed() {
                if (this.isDivergent()) {
                    if (!this.flowToIdList.length) {
                        return true;
                    }

                    return false;
                }

                if (this.isConvergent()) {
                    return true;
                }

                return true;
            }
        }]);

        return GatewayComplex;
    }(EspoBpmn.Figures.Gateway);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.GatewayEventBased = function (_EspoBpmn$Figures$Gat5) {
        _inherits(GatewayEventBased, _EspoBpmn$Figures$Gat5);

        function GatewayEventBased() {
            _classCallCheck(this, GatewayEventBased);

            return _possibleConstructorReturn(this, (GatewayEventBased.__proto__ || Object.getPrototypeOf(GatewayEventBased)).apply(this, arguments));
        }

        _createClass(GatewayEventBased, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'gatewayEventBased';
            }
        }, {
            key: 'checkFlowToAllowed',
            value: function checkFlowToAllowed(endFigure) {
                if (endFigure instanceof EspoBpmn.Figures.EventIntermediateLinkCatch || endFigure instanceof EspoBpmn.Figures.EventIntermediateTimerCatch || endFigure instanceof EspoBpmn.Figures.EventIntermediateSignalCatch || endFigure instanceof EspoBpmn.Figures.EventIntermediateMessageCatch || endFigure instanceof EspoBpmn.Figures.EventIntermediateMultipleCatch || endFigure instanceof EspoBpmn.Figures.EventIntermediateConditionalCatch || endFigure instanceof EspoBpmn.Figures.EventIntermediateParallelMultipleCatch) {
                    return true;
                }
                return false;
            }
        }, {
            key: 'checkFlowStartAllowed',
            value: function checkFlowStartAllowed() {
                return true;
            }
        }, {
            key: 'checkFlowEndAllowed',
            value: function checkFlowEndAllowed() {
                if (!this.flowToIdList.length) {
                    return true;
                }
                return false;
            }
        }, {
            key: 'prepareElement',
            value: function prepareElement(center) {
                _get(GatewayEventBased.prototype.__proto__ || Object.getPrototypeOf(GatewayEventBased.prototype), 'prepareElement', this).call(this, center);

                if (this.iconElement) {
                    this.iconElement.childNodes[0].setAttribute('transform', 'scale(1,-1)');
                }
            }
        }]);

        return GatewayEventBased;
    }(EspoBpmn.Figures.Gateway);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.GatewayEventBasedStart = function (_EspoBpmn$Figures$Gat6) {
        _inherits(GatewayEventBasedStart, _EspoBpmn$Figures$Gat6);

        function GatewayEventBasedStart() {
            _classCallCheck(this, GatewayEventBasedStart);

            return _possibleConstructorReturn(this, (GatewayEventBasedStart.__proto__ || Object.getPrototypeOf(GatewayEventBasedStart)).apply(this, arguments));
        }

        _createClass(GatewayEventBasedStart, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'gatewayEventBasedStart';
            }
        }, {
            key: 'checkFlowToAllowed',
            value: function checkFlowToAllowed(endFigure) {
                if (endFigure instanceof EspoBpmn.Figures.EventIntermediate) {
                    return true;
                }

                return false;
            }
        }, {
            key: 'checkFlowStartAllowed',
            value: function checkFlowStartAllowed() {
                return true;
            }
        }, {
            key: 'checkFlowEndAllowed',
            value: function checkFlowEndAllowed() {
                return false;
            }
        }]);

        return GatewayEventBasedStart;
    }(EspoBpmn.Figures.Gateway);
}).call(undefined, EspoBpmn);

(function (EspoBpmn) {

    EspoBpmn.Figures.GatewayParallelStart = function (_EspoBpmn$Figures$Gat7) {
        _inherits(GatewayParallelStart, _EspoBpmn$Figures$Gat7);

        function GatewayParallelStart() {
            _classCallCheck(this, GatewayParallelStart);

            return _possibleConstructorReturn(this, (GatewayParallelStart.__proto__ || Object.getPrototypeOf(GatewayParallelStart)).apply(this, arguments));
        }

        _createClass(GatewayParallelStart, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'gatewayParallelStart';
            }
        }, {
            key: 'checkFlowToAllowed',
            value: function checkFlowToAllowed(endFigure) {
                if (endFigure instanceof EspoBpmn.Figures.EventIntermediate) {
                    return true;
                }
                return false;
            }
        }, {
            key: 'checkFlowStartAllowed',
            value: function checkFlowStartAllowed() {
                return true;
            }
        }, {
            key: 'checkFlowEndAllowed',
            value: function checkFlowEndAllowed() {
                return false;
            }
        }]);

        return GatewayParallelStart;
    }(EspoBpmn.Figures.Gateway);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.Activity = function (_EspoBpmn$Figures$Rec) {
        _inherits(Activity, _EspoBpmn$Figures$Rec);

        function Activity() {
            _classCallCheck(this, Activity);

            return _possibleConstructorReturn(this, (Activity.__proto__ || Object.getPrototypeOf(Activity)).apply(this, arguments));
        }

        _createClass(Activity, [{
            key: 'getAvailableMarkerList',
            value: function getAvailableMarkerList() {
                return ['loop', 'multiInstanceParallel', 'multiInstanceSequential', 'compensation', 'collapsedSubProcess', 'expandedSubProcess', 'adHoc'];
            }
        }, {
            key: 'checkFlowFromAllowed',
            value: function checkFlowFromAllowed(startFigure) {
                if (this.data.isForCompensation && !(startFigure instanceof EspoBpmn.Figures.EventIntermediateCompensationBoundary)) {
                    return false;
                }

                return this.checkFlowEndAllowed();
            }
        }, {
            key: 'checkFlowStartAllowed',
            value: function checkFlowStartAllowed() {
                if (this.data.isForCompensation) {
                    return false;
                }

                return _get(Activity.prototype.__proto__ || Object.getPrototypeOf(Activity.prototype), 'checkFlowStartAllowed', this).call(this);
            }
        }, {
            key: 'hasMarkerLoop',
            value: function hasMarkerLoop() {
                return false;
            }
        }, {
            key: 'hasMarkerMultiInstanceParallel',
            value: function hasMarkerMultiInstanceParallel() {
                return false;
            }
        }, {
            key: 'hasMarkerMultiInstanceSequential',
            value: function hasMarkerMultiInstanceSequential() {
                return false;
            }
        }, {
            key: 'hasMarkerCollapsedSubProcess',
            value: function hasMarkerCollapsedSubProcess() {
                return false;
            }
        }, {
            key: 'hasMarkerExpandedSubProcess',
            value: function hasMarkerExpandedSubProcess() {
                return false;
            }
        }, {
            key: 'hasMarkerCompensation',
            value: function hasMarkerCompensation() {
                return !!this.data.isForCompensation;
            }
        }, {
            key: 'hasMarkerAdHoc',
            value: function hasMarkerAdHoc() {
                return false;
            }
        }, {
            key: 'onFlowEnd',
            value: function onFlowEnd(startFigure, flowFigure) {
                if (startFigure instanceof EspoBpmn.Figures.EventIntermediateCompensationBoundary) {
                    this.data.isForCompensation = true;

                    this.reRender();
                }
            }
        }]);

        return Activity;
    }(EspoBpmn.Figures.Rectangle);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.CallActivity = function (_EspoBpmn$Figures$Act) {
        _inherits(CallActivity, _EspoBpmn$Figures$Act);

        function CallActivity() {
            _classCallCheck(this, CallActivity);

            return _possibleConstructorReturn(this, (CallActivity.__proto__ || Object.getPrototypeOf(CallActivity)).apply(this, arguments));
        }

        _createClass(CallActivity, [{
            key: 'hasMarkerSubProcess',
            value: function hasMarkerSubProcess() {
                return true;
            }
        }, {
            key: 'isBoldStroke',
            value: function isBoldStroke() {
                return true;
            }
        }, {
            key: 'hasMarkerMultiInstanceParallel',
            value: function hasMarkerMultiInstanceParallel() {
                return this.data.isMultiInstance && !this.data.isSequential;
            }
        }, {
            key: 'hasMarkerMultiInstanceSequential',
            value: function hasMarkerMultiInstanceSequential() {
                return this.data.isMultiInstance && this.data.isSequential;
            }
        }]);

        return CallActivity;
    }(EspoBpmn.Figures.Activity);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.SubProcess = function (_EspoBpmn$Figures$Act2) {
        _inherits(SubProcess, _EspoBpmn$Figures$Act2);

        function SubProcess() {
            _classCallCheck(this, SubProcess);

            return _possibleConstructorReturn(this, (SubProcess.__proto__ || Object.getPrototypeOf(SubProcess)).apply(this, arguments));
        }

        _createClass(SubProcess, [{
            key: 'hasMarkerCollapsedSubProcess',
            value: function hasMarkerCollapsedSubProcess() {
                if (this.isExpanded()) {
                    return false;
                }

                return true;
            }
        }, {
            key: 'hasMarkerExpandedSubProcess',
            value: function hasMarkerExpandedSubProcess() {
                if (this.canvas.isReadOnly) {
                    return false;
                }

                if (this.isExpanded()) {
                    return true;
                }

                return false;
            }
        }, {
            key: 'hasMarkerMultiInstanceParallel',
            value: function hasMarkerMultiInstanceParallel() {
                return this.data.isMultiInstance && !this.data.isSequential;
            }
        }, {
            key: 'hasMarkerMultiInstanceSequential',
            value: function hasMarkerMultiInstanceSequential() {
                return this.data.isMultiInstance && this.data.isSequential;
            }
        }, {
            key: 'isDottedLineBorder',
            value: function isDottedLineBorder() {
                return this.isEventSubProcess();
            }
        }, {
            key: 'isEventSubProcess',
            value: function isEventSubProcess() {
                return !!this.data.triggeredByEvent;
            }
        }, {
            key: 'isRemovable',
            value: function isRemovable() {
                if (this.data.dataList.length) {
                    return false;
                }

                return true;
            }
        }, {
            key: 'hasEventStartIcon',
            value: function hasEventStartIcon() {
                if (this.isExpanded()) {
                    return false;
                }

                if (this.isEventSubProcess()) {
                    if (this.data.eventStartData) {
                        return true;
                    }
                }
            }
        }, {
            key: 'isExpanded',
            value: function isExpanded() {
                return !!this.data.isExpanded;
            }
        }, {
            key: 'isResizable',
            value: function isResizable() {
                if (this.canvas.isReadOnly) {
                    return false;
                }

                if (this.isExpanded()) {
                    return true;
                }
            }
        }, {
            key: 'checkFlowStartAllowed',
            value: function checkFlowStartAllowed() {
                if (this.data.isForCompensation) {
                    return false;
                }

                return !this.isEventSubProcess();
            }
        }, {
            key: 'checkFlowEndAllowed',
            value: function checkFlowEndAllowed() {
                return !this.isEventSubProcess();
            }
        }, {
            key: 'init',
            value: function init() {
                var dataList = this.data.dataList || [];
                this.data.dataList = dataList;

                var canvasParams = this.canvas._clone(this.canvas.params);

                canvasParams.scaleRatio = 1;

                this.subCanvas = new EspoBpmn.Canvas(null, canvasParams, dataList, this.id, this.canvas, this);

                this.subCanvas.moveTo({
                    x: this.data.offsetX || 0,
                    y: this.data.offsetY || 0
                });
            }
        }, {
            key: 'prepareCanvasElement',
            value: function prepareCanvasElement() {
                this.subCanvasElement = this.subCanvas.getElement();

                this.subCanvasMarginTop = this.getParam('fontSize') + this.getParam('textMarginTop');
                var height = this.sideYLength - this.subCanvasMarginTop;

                this.dummyElement = this.subCanvas.dummyElement;

                this.dummyElement.setAttribute('x', 0);
                this.dummyElement.setAttribute('y', 0);
                this.dummyElement.setAttribute('width', this.sideXLength);
                this.dummyElement.setAttribute('height', height);

                this.subCanvasElement.setAttribute('width', this.sideXLength);
                this.subCanvasElement.setAttribute('height', height);

                this.subCanvas.moveTo({ x: this.data.offsetX || 0, y: this.data.offsetY || 0 });
            }
        }, {
            key: 'prepareElement',
            value: function prepareElement() {
                var _this82 = this;

                _get(SubProcess.prototype.__proto__ || Object.getPrototypeOf(SubProcess.prototype), 'prepareElement', this).call(this);

                this.markerIconElementList.forEach(function (element) {
                    if (_this82.canvas.isReadOnly) {
                        return false;
                    }

                    var marker = element.getAttribute('data-marker');

                    if (marker === 'collapsedSubProcess' || marker === 'expandedSubProcess') {
                        var dummyElement = document.createElementNS('http://www.w3.org/2000/svg', 'rect');
                        dummyElement.setAttribute('pointer-events', 'visibleFill');
                        dummyElement.setAttribute('fill', 'none');

                        var viewBoxArr = _this82.getMarkerIconData(marker).viewBox.split(' ');
                        dummyElement.setAttribute('x', 0);
                        dummyElement.setAttribute('y', 0);
                        dummyElement.setAttribute('width', viewBoxArr[2] - viewBoxArr[0]);
                        dummyElement.setAttribute('height', viewBoxArr[3] - viewBoxArr[1]);

                        element.appendChild(dummyElement);

                        if (marker === 'collapsedSubProcess') {
                            element.addEventListener('click', function (e) {
                                if (_this82.canvas.isTouchDevice) {
                                    return;
                                }

                                e.stopPropagation();
                                _this82.expand();
                            });

                            element.addEventListener('touchend', function (e) {
                                e.stopPropagation();
                                _this82.expand();
                            }, { passive: true });
                        } else if (element.getAttribute('data-marker') === 'expandedSubProcess') {
                            element.addEventListener('click', function (e) {
                                if (_this82.canvas.isTouchDevice) {
                                    return;
                                }

                                e.stopPropagation();
                                _this82.collapse();
                            });

                            element.addEventListener('touchend', function (e) {
                                e.stopPropagation();
                                _this82.collapse();
                            }, { passive: true });
                        }
                    }
                });
            }
        }, {
            key: 'expand',
            value: function expand() {
                this.data.isExpanded = true;

                this.reRender();

                this.rePositionDependencies();
                this.reRenderDependencies();

                this.canvas.triggerEvent('change');
            }
        }, {
            key: 'collapse',
            value: function collapse() {
                this.data.isExpanded = false;

                this.reRender();

                this.rePositionDependencies();
                this.reRenderDependencies();

                this.canvas.triggerEvent('change');
            }
        }, {
            key: 'fitSizeForFigure',
            value: function fitSizeForFigure(figure) {
                var _this83 = this;

                if (figure instanceof EspoBpmn.Figures.Flow) {
                    return;
                }

                if (!figure.data.center) {
                    return;
                }

                var offsetX = this.data.offsetX || 0;
                var offsetY = this.data.offsetY || 0;

                var x = figure.data.center.x;
                var y = figure.data.center.y;

                var leftX = -offsetX;
                var topY = -offsetY;

                var width = this.sideXLength;
                var height = this.sideYLength;

                var rightX = leftX + width;
                var bottomY = topY + height - this.subCanvasMarginTop;

                var radiusX = this.getGlobalParam('circleRadius');
                var radiusY = radiusX;

                if (figure instanceof EspoBpmn.Figures.Rhombus) {
                    radiusX = radiusY = figure.diagonalHalfLength;
                } else if (figure instanceof EspoBpmn.Figures.Rectangle) {
                    radiusX = figure.sideXHalfLength;
                    radiusY = figure.sideYHalfLength;
                }

                var margin = this.getGlobalParam('subProcessMargin');

                var isChanged = false;

                if (x - radiusX - margin < leftX) {
                    isChanged = true;

                    var diff = leftX - (x - radiusX - margin);

                    this.data.offsetX = offsetX + diff;
                    this.data.width = width + diff;
                    this.data.center.x = this.data.center.x - Math.round(diff / 2);
                }

                if (x + radiusX + margin > rightX) {
                    isChanged = true;

                    var diff = x + radiusX + margin - rightX;

                    this.data.width = width + diff;
                    this.data.center.x = this.data.center.x + Math.round(diff / 2);
                }

                if (y - radiusY - margin < topY) {
                    isChanged = true;

                    var diff = topY - (y - radiusY - margin);

                    this.data.offsetY = offsetY + diff;
                    this.data.height = height + diff;
                    this.data.center.y = this.data.center.y - Math.round(diff / 2);
                }
                if (y + radiusY + margin > bottomY) {
                    isChanged = true;

                    var diff = y + radiusY + margin - bottomY;
                    this.data.height = height + diff;
                    this.data.center.y = this.data.center.y + Math.round(diff / 2);
                }

                if (isChanged) {
                    setTimeout(function () {
                        _this83.reRender();
                        _this83.rePositionDependencies();
                        _this83.reRenderDependencies();
                    }, 100);
                }
            }
        }]);

        return SubProcess;
    }(EspoBpmn.Figures.Activity);
}).call(undefined, EspoBpmn);

(function (EspoBpmn) {

    EspoBpmn.Figures.EventSubProcess = function (_EspoBpmn$Figures$Sub) {
        _inherits(EventSubProcess, _EspoBpmn$Figures$Sub);

        function EventSubProcess() {
            _classCallCheck(this, EventSubProcess);

            return _possibleConstructorReturn(this, (EventSubProcess.__proto__ || Object.getPrototypeOf(EventSubProcess)).apply(this, arguments));
        }

        _createClass(EventSubProcess, [{
            key: 'isEventSubProcess',
            value: function isEventSubProcess() {
                return true;
            }
        }, {
            key: 'hasMarkerMultiInstanceParallel',
            value: function hasMarkerMultiInstanceParallel() {
                return false;
            }
        }, {
            key: 'hasMarkerMultiInstanceSequential',
            value: function hasMarkerMultiInstanceSequential() {
                return false;
            }
        }]);

        return EventSubProcess;
    }(EspoBpmn.Figures.SubProcess);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.AdHocSubProcess = function (_EspoBpmn$Figures$Sub2) {
        _inherits(AdHocSubProcess, _EspoBpmn$Figures$Sub2);

        function AdHocSubProcess() {
            _classCallCheck(this, AdHocSubProcess);

            return _possibleConstructorReturn(this, (AdHocSubProcess.__proto__ || Object.getPrototypeOf(AdHocSubProcess)).apply(this, arguments));
        }

        _createClass(AdHocSubProcess, [{
            key: 'hasMarkerAdHoc',
            value: function hasMarkerAdHoc() {
                return true;
            }
        }, {
            key: 'isEventSubProcess',
            value: function isEventSubProcess() {
                return false;
            }
        }]);

        return AdHocSubProcess;
    }(EspoBpmn.Figures.SubProcess);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.Transaction = function (_EspoBpmn$Figures$Sub3) {
        _inherits(Transaction, _EspoBpmn$Figures$Sub3);

        function Transaction() {
            _classCallCheck(this, Transaction);

            return _possibleConstructorReturn(this, (Transaction.__proto__ || Object.getPrototypeOf(Transaction)).apply(this, arguments));
        }

        _createClass(Transaction, [{
            key: 'isEventSubProcess',
            value: function isEventSubProcess() {
                return false;
            }
        }, {
            key: 'isDoubleBorder',
            value: function isDoubleBorder() {
                return true;
            }
        }]);

        return Transaction;
    }(EspoBpmn.Figures.SubProcess);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.Task = function (_EspoBpmn$Figures$Act3) {
        _inherits(Task, _EspoBpmn$Figures$Act3);

        function Task() {
            _classCallCheck(this, Task);

            return _possibleConstructorReturn(this, (Task.__proto__ || Object.getPrototypeOf(Task)).apply(this, arguments));
        }

        return Task;
    }(EspoBpmn.Figures.Activity);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.TaskUser = function (_EspoBpmn$Figures$Tas) {
        _inherits(TaskUser, _EspoBpmn$Figures$Tas);

        function TaskUser() {
            _classCallCheck(this, TaskUser);

            return _possibleConstructorReturn(this, (TaskUser.__proto__ || Object.getPrototypeOf(TaskUser)).apply(this, arguments));
        }

        _createClass(TaskUser, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'taskUser';
            }
        }, {
            key: 'hasIcon',
            value: function hasIcon() {
                return true;
            }
        }]);

        return TaskUser;
    }(EspoBpmn.Figures.Task);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.TaskSendMessage = function (_EspoBpmn$Figures$Tas2) {
        _inherits(TaskSendMessage, _EspoBpmn$Figures$Tas2);

        function TaskSendMessage() {
            _classCallCheck(this, TaskSendMessage);

            return _possibleConstructorReturn(this, (TaskSendMessage.__proto__ || Object.getPrototypeOf(TaskSendMessage)).apply(this, arguments));
        }

        _createClass(TaskSendMessage, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'taskSendMessage';
            }
        }]);

        return TaskSendMessage;
    }(EspoBpmn.Figures.Task);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.TaskReceiveMessage = function (_EspoBpmn$Figures$Tas3) {
        _inherits(TaskReceiveMessage, _EspoBpmn$Figures$Tas3);

        function TaskReceiveMessage() {
            _classCallCheck(this, TaskReceiveMessage);

            return _possibleConstructorReturn(this, (TaskReceiveMessage.__proto__ || Object.getPrototypeOf(TaskReceiveMessage)).apply(this, arguments));
        }

        _createClass(TaskReceiveMessage, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'taskReceiveMessage';
            }
        }]);

        return TaskReceiveMessage;
    }(EspoBpmn.Figures.Task);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.TaskScript = function (_EspoBpmn$Figures$Tas4) {
        _inherits(TaskScript, _EspoBpmn$Figures$Tas4);

        function TaskScript() {
            _classCallCheck(this, TaskScript);

            return _possibleConstructorReturn(this, (TaskScript.__proto__ || Object.getPrototypeOf(TaskScript)).apply(this, arguments));
        }

        _createClass(TaskScript, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'taskScript';
            }
        }]);

        return TaskScript;
    }(EspoBpmn.Figures.Task);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.TaskService = function (_EspoBpmn$Figures$Tas5) {
        _inherits(TaskService, _EspoBpmn$Figures$Tas5);

        function TaskService() {
            _classCallCheck(this, TaskService);

            return _possibleConstructorReturn(this, (TaskService.__proto__ || Object.getPrototypeOf(TaskService)).apply(this, arguments));
        }

        _createClass(TaskService, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'taskService';
            }
        }]);

        return TaskService;
    }(EspoBpmn.Figures.Task);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.TaskBusinessRule = function (_EspoBpmn$Figures$Tas6) {
        _inherits(TaskBusinessRule, _EspoBpmn$Figures$Tas6);

        function TaskBusinessRule() {
            _classCallCheck(this, TaskBusinessRule);

            return _possibleConstructorReturn(this, (TaskBusinessRule.__proto__ || Object.getPrototypeOf(TaskBusinessRule)).apply(this, arguments));
        }

        _createClass(TaskBusinessRule, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'taskBusinessRule';
            }
        }]);

        return TaskBusinessRule;
    }(EspoBpmn.Figures.Task);
}).call(undefined, EspoBpmn);
(function (EspoBpmn) {

    EspoBpmn.Figures.TaskManual = function (_EspoBpmn$Figures$Tas7) {
        _inherits(TaskManual, _EspoBpmn$Figures$Tas7);

        function TaskManual() {
            _classCallCheck(this, TaskManual);

            return _possibleConstructorReturn(this, (TaskManual.__proto__ || Object.getPrototypeOf(TaskManual)).apply(this, arguments));
        }

        _createClass(TaskManual, [{
            key: 'getIconName',
            value: function getIconName() {
                return 'taskManual';
            }
        }]);

        return TaskManual;
    }(EspoBpmn.Figures.Task);
}).call(undefined, EspoBpmn);
