Skip to content

Instantly share code, notes, and snippets.

@cramhead
Last active June 14, 2017 21:47
Show Gist options
  • Save cramhead/5284c1a8c5ad7eb1f3f2efa7428f2e86 to your computer and use it in GitHub Desktop.
Save cramhead/5284c1a8c5ad7eb1f3f2efa7428f2e86 to your computer and use it in GitHub Desktop.
tree example
license: mit
{
"chunks": [{
"id": 0,
"rendered": true,
"initial": true,
"entry": false,
"extraAsync": false,
"size": 603822,
"names": ["main"],
"files": ["js/main.js", "js/main.js.map"],
"hash": "96570d6b517ea42b5361",
"parents": [2],
"modules": [{
"id": "./node_modules/chain-function/index.js",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/chain-function/index.js",
"name": "./~/chain-function/index.js",
"index": 719,
"index2": 709,
"size": 476,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/TransitionGroup.js",
"issuerId": "./node_modules/react-transition-group/TransitionGroup.js",
"issuerName": "./~/react-transition-group/TransitionGroup.js",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./node_modules/react-transition-group/TransitionGroup.js",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/TransitionGroup.js",
"module": "./~/react-transition-group/TransitionGroup.js",
"moduleName": "./~/react-transition-group/TransitionGroup.js",
"type": "cjs require",
"userRequest": "chain-function",
"loc": "7:21-46"
}],
"usedExports": true,
"providedExports": null,
"depth": 8,
"source": "\r\nmodule.exports = function chain(){\r\n var len = arguments.length\r\n var args = [];\r\n\r\n for (var i = 0; i < len; i++)\r\n args[i] = arguments[i]\r\n\r\n args = args.filter(function(fn){ return fn != null })\r\n\r\n if (args.length === 0) return undefined\r\n if (args.length === 1) return args[0]\r\n\r\n return args.reduce(function(current, next){\r\n return function chainedFunction() {\r\n current.apply(this, arguments);\r\n next.apply(this, arguments);\r\n };\r\n })\r\n}\r\n"
}, {
"id": "./node_modules/dom-helpers/class/addClass.js",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/dom-helpers/class/addClass.js",
"name": "./~/dom-helpers/class/addClass.js",
"index": 723,
"index2": 714,
"size": 536,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroupChild.js",
"issuerId": "./node_modules/react-transition-group/CSSTransitionGroupChild.js",
"issuerName": "./~/react-transition-group/CSSTransitionGroupChild.js",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./node_modules/react-transition-group/CSSTransitionGroupChild.js",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroupChild.js",
"module": "./~/react-transition-group/CSSTransitionGroupChild.js",
"moduleName": "./~/react-transition-group/CSSTransitionGroupChild.js",
"type": "cjs require",
"userRequest": "dom-helpers/class/addClass",
"loc": "7:16-53"
}],
"usedExports": true,
"providedExports": null,
"depth": 9,
"source": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = addClass;\n\nvar _hasClass = require('./hasClass');\n\nvar _hasClass2 = _interopRequireDefault(_hasClass);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass2.default)(element)) element.className = element.className + ' ' + className;\n}\nmodule.exports = exports['default'];"
}, {
"id": "./node_modules/dom-helpers/class/hasClass.js",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/dom-helpers/class/hasClass.js",
"name": "./~/dom-helpers/class/hasClass.js",
"index": 724,
"index2": 713,
"size": 354,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/dom-helpers/class/addClass.js",
"issuerId": "./node_modules/dom-helpers/class/addClass.js",
"issuerName": "./~/dom-helpers/class/addClass.js",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./node_modules/dom-helpers/class/addClass.js",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/dom-helpers/class/addClass.js",
"module": "./~/dom-helpers/class/addClass.js",
"moduleName": "./~/dom-helpers/class/addClass.js",
"type": "cjs require",
"userRequest": "./hasClass",
"loc": "8:16-37"
}],
"usedExports": true,
"providedExports": null,
"depth": 10,
"source": "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = hasClass;\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + element.className + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\nmodule.exports = exports[\"default\"];"
}, {
"id": "./node_modules/dom-helpers/class/removeClass.js",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/dom-helpers/class/removeClass.js",
"name": "./~/dom-helpers/class/removeClass.js",
"index": 725,
"index2": 715,
"size": 297,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroupChild.js",
"issuerId": "./node_modules/react-transition-group/CSSTransitionGroupChild.js",
"issuerName": "./~/react-transition-group/CSSTransitionGroupChild.js",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./node_modules/react-transition-group/CSSTransitionGroupChild.js",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroupChild.js",
"module": "./~/react-transition-group/CSSTransitionGroupChild.js",
"moduleName": "./~/react-transition-group/CSSTransitionGroupChild.js",
"type": "cjs require",
"userRequest": "dom-helpers/class/removeClass",
"loc": "11:19-59"
}],
"usedExports": true,
"providedExports": null,
"depth": 9,
"source": "'use strict';\n\nmodule.exports = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else element.className = element.className.replace(new RegExp('(^|\\\\s)' + className + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n};"
}, {
"id": "./node_modules/dom-helpers/transition/properties.js",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/dom-helpers/transition/properties.js",
"name": "./~/dom-helpers/transition/properties.js",
"index": 728,
"index2": 718,
"size": 3614,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroupChild.js",
"issuerId": "./node_modules/react-transition-group/CSSTransitionGroupChild.js",
"issuerName": "./~/react-transition-group/CSSTransitionGroupChild.js",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./node_modules/react-transition-group/CSSTransitionGroupChild.js",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroupChild.js",
"module": "./~/react-transition-group/CSSTransitionGroupChild.js",
"moduleName": "./~/react-transition-group/CSSTransitionGroupChild.js",
"type": "cjs require",
"userRequest": "dom-helpers/transition/properties",
"loc": "19:18-62"
}],
"usedExports": true,
"providedExports": null,
"depth": 9,
"source": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.animationEnd = exports.animationDelay = exports.animationTiming = exports.animationDuration = exports.animationName = exports.transitionEnd = exports.transitionDuration = exports.transitionDelay = exports.transitionTiming = exports.transitionProperty = exports.transform = undefined;\n\nvar _inDOM = require('../util/inDOM');\n\nvar _inDOM2 = _interopRequireDefault(_inDOM);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar transform = 'transform';\nvar prefix = void 0,\n transitionEnd = void 0,\n animationEnd = void 0;\nvar transitionProperty = void 0,\n transitionDuration = void 0,\n transitionTiming = void 0,\n transitionDelay = void 0;\nvar animationName = void 0,\n animationDuration = void 0,\n animationTiming = void 0,\n animationDelay = void 0;\n\nif (_inDOM2.default) {\n var _getTransitionPropert = getTransitionProperties();\n\n prefix = _getTransitionPropert.prefix;\n exports.transitionEnd = transitionEnd = _getTransitionPropert.transitionEnd;\n exports.animationEnd = animationEnd = _getTransitionPropert.animationEnd;\n\n\n exports.transform = transform = prefix + '-' + transform;\n exports.transitionProperty = transitionProperty = prefix + '-transition-property';\n exports.transitionDuration = transitionDuration = prefix + '-transition-duration';\n exports.transitionDelay = transitionDelay = prefix + '-transition-delay';\n exports.transitionTiming = transitionTiming = prefix + '-transition-timing-function';\n\n exports.animationName = animationName = prefix + '-animation-name';\n exports.animationDuration = animationDuration = prefix + '-animation-duration';\n exports.animationTiming = animationTiming = prefix + '-animation-delay';\n exports.animationDelay = animationDelay = prefix + '-animation-timing-function';\n}\n\nexports.transform = transform;\nexports.transitionProperty = transitionProperty;\nexports.transitionTiming = transitionTiming;\nexports.transitionDelay = transitionDelay;\nexports.transitionDuration = transitionDuration;\nexports.transitionEnd = transitionEnd;\nexports.animationName = animationName;\nexports.animationDuration = animationDuration;\nexports.animationTiming = animationTiming;\nexports.animationDelay = animationDelay;\nexports.animationEnd = animationEnd;\nexports.default = {\n transform: transform,\n end: transitionEnd,\n property: transitionProperty,\n timing: transitionTiming,\n delay: transitionDelay,\n duration: transitionDuration\n};\n\n\nfunction getTransitionProperties() {\n var style = document.createElement('div').style;\n\n var vendorMap = {\n O: function O(e) {\n return 'o' + e.toLowerCase();\n },\n Moz: function Moz(e) {\n return e.toLowerCase();\n },\n Webkit: function Webkit(e) {\n return 'webkit' + e;\n },\n ms: function ms(e) {\n return 'MS' + e;\n }\n };\n\n var vendors = Object.keys(vendorMap);\n\n var transitionEnd = void 0,\n animationEnd = void 0;\n var prefix = '';\n\n for (var i = 0; i < vendors.length; i++) {\n var vendor = vendors[i];\n\n if (vendor + 'TransitionProperty' in style) {\n prefix = '-' + vendor.toLowerCase();\n transitionEnd = vendorMap[vendor]('TransitionEnd');\n animationEnd = vendorMap[vendor]('AnimationEnd');\n break;\n }\n }\n\n if (!transitionEnd && 'transitionProperty' in style) transitionEnd = 'transitionend';\n\n if (!animationEnd && 'animationName' in style) animationEnd = 'animationend';\n\n style = null;\n\n return { animationEnd: animationEnd, transitionEnd: transitionEnd, prefix: prefix };\n}"
}, {
"id": "./node_modules/dom-helpers/util/inDOM.js",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/dom-helpers/util/inDOM.js",
"name": "./~/dom-helpers/util/inDOM.js",
"index": 727,
"index2": 716,
"size": 221,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/dom-helpers/util/requestAnimationFrame.js",
"issuerId": "./node_modules/dom-helpers/util/requestAnimationFrame.js",
"issuerName": "./~/dom-helpers/util/requestAnimationFrame.js",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./node_modules/dom-helpers/util/requestAnimationFrame.js",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/dom-helpers/util/requestAnimationFrame.js",
"module": "./~/dom-helpers/util/requestAnimationFrame.js",
"moduleName": "./~/dom-helpers/util/requestAnimationFrame.js",
"type": "cjs require",
"userRequest": "./inDOM",
"loc": "7:13-31"
}, {
"moduleId": "./node_modules/dom-helpers/transition/properties.js",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/dom-helpers/transition/properties.js",
"module": "./~/dom-helpers/transition/properties.js",
"moduleName": "./~/dom-helpers/transition/properties.js",
"type": "cjs require",
"userRequest": "../util/inDOM",
"loc": "8:13-37"
}],
"usedExports": true,
"providedExports": null,
"depth": 10,
"source": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nmodule.exports = exports['default'];"
}, {
"id": "./node_modules/dom-helpers/util/requestAnimationFrame.js",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/dom-helpers/util/requestAnimationFrame.js",
"name": "./~/dom-helpers/util/requestAnimationFrame.js",
"index": 726,
"index2": 717,
"size": 1264,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroupChild.js",
"issuerId": "./node_modules/react-transition-group/CSSTransitionGroupChild.js",
"issuerName": "./~/react-transition-group/CSSTransitionGroupChild.js",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./node_modules/react-transition-group/CSSTransitionGroupChild.js",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroupChild.js",
"module": "./~/react-transition-group/CSSTransitionGroupChild.js",
"moduleName": "./~/react-transition-group/CSSTransitionGroupChild.js",
"type": "cjs require",
"userRequest": "dom-helpers/util/requestAnimationFrame",
"loc": "15:29-78"
}],
"usedExports": true,
"providedExports": null,
"depth": 9,
"source": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _inDOM = require('./inDOM');\n\nvar _inDOM2 = _interopRequireDefault(_inDOM);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar vendors = ['', 'webkit', 'moz', 'o', 'ms'];\nvar cancel = 'clearTimeout';\nvar raf = fallback;\nvar compatRaf = void 0;\n\nvar getKey = function getKey(vendor, k) {\n return vendor + (!vendor ? k : k[0].toUpperCase() + k.substr(1)) + 'AnimationFrame';\n};\n\nif (_inDOM2.default) {\n vendors.some(function (vendor) {\n var rafKey = getKey(vendor, 'request');\n\n if (rafKey in window) {\n cancel = getKey(vendor, 'cancel');\n return raf = function raf(cb) {\n return window[rafKey](cb);\n };\n }\n });\n}\n\n/* https://github.com/component/raf */\nvar prev = new Date().getTime();\nfunction fallback(fn) {\n var curr = new Date().getTime(),\n ms = Math.max(0, 16 - (curr - prev)),\n req = setTimeout(fn, ms);\n\n prev = curr;\n return req;\n}\n\ncompatRaf = function compatRaf(cb) {\n return raf(cb);\n};\ncompatRaf.cancel = function (id) {\n window[cancel] && typeof window[cancel] === 'function' && window[cancel](id);\n};\nexports.default = compatRaf;\nmodule.exports = exports['default'];"
}, {
"id": "./node_modules/prop-types/factoryWithThrowingShims.js",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/prop-types/factoryWithThrowingShims.js",
"name": "./~/prop-types/factoryWithThrowingShims.js",
"index": 711,
"index2": 700,
"size": 1594,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/prop-types/index.js",
"issuerId": "./node_modules/prop-types/index.js",
"issuerName": "./~/prop-types/index.js",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./node_modules/prop-types/index.js",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/prop-types/index.js",
"module": "./~/prop-types/index.js",
"moduleName": "./~/prop-types/index.js",
"type": "cjs require",
"userRequest": "./factoryWithThrowingShims",
"loc": "29:19-56"
}],
"usedExports": true,
"providedExports": null,
"depth": 6,
"source": "/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n"
}, {
"id": "./node_modules/prop-types/index.js",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/prop-types/index.js",
"name": "./~/prop-types/index.js",
"index": 710,
"index2": 701,
"size": 1078,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/FocusObserver.tsx",
"issuerId": "./src/apollo-builder/ui/FocusObserver.tsx",
"issuerName": "./src/apollo-builder/ui/FocusObserver.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/ui/FocusObserver.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/FocusObserver.tsx",
"module": "./src/apollo-builder/ui/FocusObserver.tsx",
"moduleName": "./src/apollo-builder/ui/FocusObserver.tsx",
"type": "harmony import",
"userRequest": "prop-types",
"loc": "13:0-40"
}, {
"moduleId": "./node_modules/react-transition-group/CSSTransitionGroup.js",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroup.js",
"module": "./~/react-transition-group/CSSTransitionGroup.js",
"moduleName": "./~/react-transition-group/CSSTransitionGroup.js",
"type": "cjs require",
"userRequest": "prop-types",
"loc": "11:17-38"
}, {
"moduleId": "./node_modules/react-transition-group/TransitionGroup.js",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/TransitionGroup.js",
"module": "./~/react-transition-group/TransitionGroup.js",
"moduleName": "./~/react-transition-group/TransitionGroup.js",
"type": "cjs require",
"userRequest": "prop-types",
"loc": "15:17-38"
}, {
"moduleId": "./node_modules/react-transition-group/CSSTransitionGroupChild.js",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroupChild.js",
"module": "./~/react-transition-group/CSSTransitionGroupChild.js",
"moduleName": "./~/react-transition-group/CSSTransitionGroupChild.js",
"type": "cjs require",
"userRequest": "prop-types",
"loc": "25:17-38"
}, {
"moduleId": "./node_modules/react-transition-group/utils/PropTypes.js",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/utils/PropTypes.js",
"module": "./~/react-transition-group/utils/PropTypes.js",
"moduleName": "./~/react-transition-group/utils/PropTypes.js",
"type": "cjs require",
"userRequest": "prop-types",
"loc": "11:17-38"
}, {
"moduleId": "./src/apollo-builder/design/EditableText/control/component.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/control/component.tsx",
"module": "./src/apollo-builder/design/EditableText/control/component.tsx",
"moduleName": "./src/apollo-builder/design/EditableText/control/component.tsx",
"type": "harmony import",
"userRequest": "prop-types",
"loc": "13:0-40"
}],
"usedExports": true,
"providedExports": null,
"depth": 5,
"source": "/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n"
}, {
"id": "./node_modules/react-scrollbar-patch/dist/scrollArea.js",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-scrollbar-patch/dist/scrollArea.js",
"name": "./~/react-scrollbar-patch/dist/scrollArea.js",
"index": 731,
"index2": 724,
"size": 389482,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ScrollablePanel.tsx",
"issuerId": "./src/apollo-builder/ui/ScrollablePanel.tsx",
"issuerName": "./src/apollo-builder/ui/ScrollablePanel.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/ui/ScrollablePanel.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ScrollablePanel.tsx",
"module": "./src/apollo-builder/ui/ScrollablePanel.tsx",
"moduleName": "./src/apollo-builder/ui/ScrollablePanel.tsx",
"type": "harmony import",
"userRequest": "react-scrollbar-patch",
"loc": "3:0-47"
}],
"usedExports": ["default"],
"providedExports": null,
"depth": 7,
"source": "(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ScrollArea\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"ScrollArea\"] = factory(root[\"React\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_6__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\t__webpack_require__(1);\n\t\n\tvar _ScrollArea = __webpack_require__(5);\n\t\n\tvar _ScrollArea2 = _interopRequireDefault(_ScrollArea);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\texports.default = _ScrollArea2.default;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a <style> tag\n\t\n\t// load the styles\n\tvar content = __webpack_require__(2);\n\tif(typeof content === 'string') content = [[module.id, content, '']];\n\t// add the styles to the DOM\n\tvar update = __webpack_require__(4)(content, {});\n\tif(content.locals) module.exports = content.locals;\n\t// Hot Module Replacement\n\tif(false) {\n\t\t// When the styles change, update the <style> tags\n\t\tif(!content.locals) {\n\t\t\tmodule.hot.accept(\"!!../../node_modules/css-loader/index.js!../../node_modules/less-loader/index.js!./scrollArea.less\", function() {\n\t\t\t\tvar newContent = require(\"!!../../node_modules/css-loader/index.js!../../node_modules/less-loader/index.js!./scrollArea.less\");\n\t\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\t\tupdate(newContent);\n\t\t\t});\n\t\t}\n\t\t// When the module is disposed, remove the <style> tags\n\t\tmodule.hot.dispose(function() { update(); });\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(3)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".scrollarea-content {\\n margin: 0;\\n padding: 0;\\n overflow: hidden;\\n position: relative;\\n}\\n.scrollarea-content:focus {\\n outline: 0;\\n}\\n.scrollarea {\\n position: relative;\\n overflow: hidden;\\n}\\n.scrollarea .scrollbar-container {\\n position: absolute;\\n background: none;\\n opacity: .1;\\n z-index: 9999;\\n -webkit-transition: all .4s;\\n -moz-transition: all .4s;\\n -ms-transition: all .4s;\\n -o-transition: all .4s;\\n transition: all .4s;\\n}\\n.scrollarea .scrollbar-container.horizontal {\\n width: 100%;\\n height: 10px;\\n left: 0;\\n bottom: 0;\\n}\\n.scrollarea .scrollbar-container.horizontal .scrollbar {\\n width: 20px;\\n height: 8px;\\n background: black;\\n margin-top: 1px;\\n}\\n.scrollarea .scrollbar-container.vertical {\\n width: 10px;\\n height: 100%;\\n right: 0;\\n top: 0;\\n}\\n.scrollarea .scrollbar-container.vertical .scrollbar {\\n width: 8px;\\n height: 20px;\\n background: black;\\n margin-left: 1px;\\n}\\n.scrollarea .scrollbar-container:hover {\\n background: gray;\\n opacity: .6 !important;\\n}\\n.scrollarea .scrollbar-container.active {\\n background: gray;\\n opacity: .6 !important;\\n}\\n.scrollarea:hover .scrollbar-container {\\n opacity: .3;\\n}\\n\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports) {\n\n\t/*\r\n\t\tMIT License http://www.opensource.org/licenses/mit-license.php\r\n\t\tAuthor Tobias Koppers @sokra\r\n\t*/\r\n\t// css base code, injected by the css-loader\r\n\tmodule.exports = function() {\r\n\t\tvar list = [];\r\n\t\r\n\t\t// return the list of modules as css string\r\n\t\tlist.toString = function toString() {\r\n\t\t\tvar result = [];\r\n\t\t\tfor(var i = 0; i < this.length; i++) {\r\n\t\t\t\tvar item = this[i];\r\n\t\t\t\tif(item[2]) {\r\n\t\t\t\t\tresult.push(\"@media \" + item[2] + \"{\" + item[1] + \"}\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.push(item[1]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn result.join(\"\");\r\n\t\t};\r\n\t\r\n\t\t// import a list of modules into the list\r\n\t\tlist.i = function(modules, mediaQuery) {\r\n\t\t\tif(typeof modules === \"string\")\r\n\t\t\t\tmodules = [[null, modules, \"\"]];\r\n\t\t\tvar alreadyImportedModules = {};\r\n\t\t\tfor(var i = 0; i < this.length; i++) {\r\n\t\t\t\tvar id = this[i][0];\r\n\t\t\t\tif(typeof id === \"number\")\r\n\t\t\t\t\talreadyImportedModules[id] = true;\r\n\t\t\t}\r\n\t\t\tfor(i = 0; i < modules.length; i++) {\r\n\t\t\t\tvar item = modules[i];\r\n\t\t\t\t// skip already imported module\r\n\t\t\t\t// this implementation is not 100% perfect for weird media query combinations\r\n\t\t\t\t// when a module is imported multiple times with different media queries.\r\n\t\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\r\n\t\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\r\n\t\t\t\t\tif(mediaQuery && !item[2]) {\r\n\t\t\t\t\t\titem[2] = mediaQuery;\r\n\t\t\t\t\t} else if(mediaQuery) {\r\n\t\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlist.push(item);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\treturn list;\r\n\t};\r\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/*\n\t\tMIT License http://www.opensource.org/licenses/mit-license.php\n\t\tAuthor Tobias Koppers @sokra\n\t*/\n\tvar stylesInDom = {},\n\t\tmemoize = function(fn) {\n\t\t\tvar memo;\n\t\t\treturn function () {\n\t\t\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\t\t\treturn memo;\n\t\t\t};\n\t\t},\n\t\tisOldIE = memoize(function() {\n\t\t\treturn /msie [6-9]\\b/.test(self.navigator.userAgent.toLowerCase());\n\t\t}),\n\t\tgetHeadElement = memoize(function () {\n\t\t\treturn document.head || document.getElementsByTagName(\"head\")[0];\n\t\t}),\n\t\tsingletonElement = null,\n\t\tsingletonCounter = 0,\n\t\tstyleElementsInsertedAtTop = [];\n\t\n\tmodule.exports = function(list, options) {\n\t\tif(false) {\n\t\t\tif(typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t\t}\n\t\n\t\toptions = options || {};\n\t\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n\t\t// tags it will allow on a page\n\t\tif (typeof options.singleton === \"undefined\") options.singleton = isOldIE();\n\t\n\t\t// By default, add <style> tags to the bottom of <head>.\n\t\tif (typeof options.insertAt === \"undefined\") options.insertAt = \"bottom\";\n\t\n\t\tvar styles = listToStyles(list);\n\t\taddStylesToDom(styles, options);\n\t\n\t\treturn function update(newList) {\n\t\t\tvar mayRemove = [];\n\t\t\tfor(var i = 0; i < styles.length; i++) {\n\t\t\t\tvar item = styles[i];\n\t\t\t\tvar domStyle = stylesInDom[item.id];\n\t\t\t\tdomStyle.refs--;\n\t\t\t\tmayRemove.push(domStyle);\n\t\t\t}\n\t\t\tif(newList) {\n\t\t\t\tvar newStyles = listToStyles(newList);\n\t\t\t\taddStylesToDom(newStyles, options);\n\t\t\t}\n\t\t\tfor(var i = 0; i < mayRemove.length; i++) {\n\t\t\t\tvar domStyle = mayRemove[i];\n\t\t\t\tif(domStyle.refs === 0) {\n\t\t\t\t\tfor(var j = 0; j < domStyle.parts.length; j++)\n\t\t\t\t\t\tdomStyle.parts[j]();\n\t\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\t\n\tfunction addStylesToDom(styles, options) {\n\t\tfor(var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\t\t\tif(domStyle) {\n\t\t\t\tdomStyle.refs++;\n\t\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t\t}\n\t\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar parts = [];\n\t\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t\t}\n\t\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t\t}\n\t\t}\n\t}\n\t\n\tfunction listToStyles(list) {\n\t\tvar styles = [];\n\t\tvar newStyles = {};\n\t\tfor(var i = 0; i < list.length; i++) {\n\t\t\tvar item = list[i];\n\t\t\tvar id = item[0];\n\t\t\tvar css = item[1];\n\t\t\tvar media = item[2];\n\t\t\tvar sourceMap = item[3];\n\t\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\t\t\tif(!newStyles[id])\n\t\t\t\tstyles.push(newStyles[id] = {id: id, parts: [part]});\n\t\t\telse\n\t\t\t\tnewStyles[id].parts.push(part);\n\t\t}\n\t\treturn styles;\n\t}\n\t\n\tfunction insertStyleElement(options, styleElement) {\n\t\tvar head = getHeadElement();\n\t\tvar lastStyleElementInsertedAtTop = styleElementsInsertedAtTop[styleElementsInsertedAtTop.length - 1];\n\t\tif (options.insertAt === \"top\") {\n\t\t\tif(!lastStyleElementInsertedAtTop) {\n\t\t\t\thead.insertBefore(styleElement, head.firstChild);\n\t\t\t} else if(lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\t\thead.insertBefore(styleElement, lastStyleElementInsertedAtTop.nextSibling);\n\t\t\t} else {\n\t\t\t\thead.appendChild(styleElement);\n\t\t\t}\n\t\t\tstyleElementsInsertedAtTop.push(styleElement);\n\t\t} else if (options.insertAt === \"bottom\") {\n\t\t\thead.appendChild(styleElement);\n\t\t} else {\n\t\t\tthrow new Error(\"Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.\");\n\t\t}\n\t}\n\t\n\tfunction removeStyleElement(styleElement) {\n\t\tstyleElement.parentNode.removeChild(styleElement);\n\t\tvar idx = styleElementsInsertedAtTop.indexOf(styleElement);\n\t\tif(idx >= 0) {\n\t\t\tstyleElementsInsertedAtTop.splice(idx, 1);\n\t\t}\n\t}\n\t\n\tfunction createStyleElement(options) {\n\t\tvar styleElement = document.createElement(\"style\");\n\t\tstyleElement.type = \"text/css\";\n\t\tinsertStyleElement(options, styleElement);\n\t\treturn styleElement;\n\t}\n\t\n\tfunction createLinkElement(options) {\n\t\tvar linkElement = document.createElement(\"link\");\n\t\tlinkElement.rel = \"stylesheet\";\n\t\tinsertStyleElement(options, linkElement);\n\t\treturn linkElement;\n\t}\n\t\n\tfunction addStyle(obj, options) {\n\t\tvar styleElement, update, remove;\n\t\n\t\tif (options.singleton) {\n\t\t\tvar styleIndex = singletonCounter++;\n\t\t\tstyleElement = singletonElement || (singletonElement = createStyleElement(options));\n\t\t\tupdate = applyToSingletonTag.bind(null, styleElement, styleIndex, false);\n\t\t\tremove = applyToSingletonTag.bind(null, styleElement, styleIndex, true);\n\t\t} else if(obj.sourceMap &&\n\t\t\ttypeof URL === \"function\" &&\n\t\t\ttypeof URL.createObjectURL === \"function\" &&\n\t\t\ttypeof URL.revokeObjectURL === \"function\" &&\n\t\t\ttypeof Blob === \"function\" &&\n\t\t\ttypeof btoa === \"function\") {\n\t\t\tstyleElement = createLinkElement(options);\n\t\t\tupdate = updateLink.bind(null, styleElement);\n\t\t\tremove = function() {\n\t\t\t\tremoveStyleElement(styleElement);\n\t\t\t\tif(styleElement.href)\n\t\t\t\t\tURL.revokeObjectURL(styleElement.href);\n\t\t\t};\n\t\t} else {\n\t\t\tstyleElement = createStyleElement(options);\n\t\t\tupdate = applyToTag.bind(null, styleElement);\n\t\t\tremove = function() {\n\t\t\t\tremoveStyleElement(styleElement);\n\t\t\t};\n\t\t}\n\t\n\t\tupdate(obj);\n\t\n\t\treturn function updateStyle(newObj) {\n\t\t\tif(newObj) {\n\t\t\t\tif(newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap)\n\t\t\t\t\treturn;\n\t\t\t\tupdate(obj = newObj);\n\t\t\t} else {\n\t\t\t\tremove();\n\t\t\t}\n\t\t};\n\t}\n\t\n\tvar replaceText = (function () {\n\t\tvar textStore = [];\n\t\n\t\treturn function (index, replacement) {\n\t\t\ttextStore[index] = replacement;\n\t\t\treturn textStore.filter(Boolean).join('\\n');\n\t\t};\n\t})();\n\t\n\tfunction applyToSingletonTag(styleElement, index, remove, obj) {\n\t\tvar css = remove ? \"\" : obj.css;\n\t\n\t\tif (styleElement.styleSheet) {\n\t\t\tstyleElement.styleSheet.cssText = replaceText(index, css);\n\t\t} else {\n\t\t\tvar cssNode = document.createTextNode(css);\n\t\t\tvar childNodes = styleElement.childNodes;\n\t\t\tif (childNodes[index]) styleElement.removeChild(childNodes[index]);\n\t\t\tif (childNodes.length) {\n\t\t\t\tstyleElement.insertBefore(cssNode, childNodes[index]);\n\t\t\t} else {\n\t\t\t\tstyleElement.appendChild(cssNode);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tfunction applyToTag(styleElement, obj) {\n\t\tvar css = obj.css;\n\t\tvar media = obj.media;\n\t\n\t\tif(media) {\n\t\t\tstyleElement.setAttribute(\"media\", media)\n\t\t}\n\t\n\t\tif(styleElement.styleSheet) {\n\t\t\tstyleElement.styleSheet.cssText = css;\n\t\t} else {\n\t\t\twhile(styleElement.firstChild) {\n\t\t\t\tstyleElement.removeChild(styleElement.firstChild);\n\t\t\t}\n\t\t\tstyleElement.appendChild(document.createTextNode(css));\n\t\t}\n\t}\n\t\n\tfunction updateLink(linkElement, obj) {\n\t\tvar css = obj.css;\n\t\tvar sourceMap = obj.sourceMap;\n\t\n\t\tif(sourceMap) {\n\t\t\t// http://stackoverflow.com/a/26603875\n\t\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t\t}\n\t\n\t\tvar blob = new Blob([css], { type: \"text/css\" });\n\t\n\t\tvar oldSrc = linkElement.href;\n\t\n\t\tlinkElement.href = URL.createObjectURL(blob);\n\t\n\t\tif(oldSrc)\n\t\t\tURL.revokeObjectURL(oldSrc);\n\t}\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _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; };\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _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; }; }();\n\t\n\tvar _react = __webpack_require__(6);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _Scrollbar = __webpack_require__(7);\n\t\n\tvar _Scrollbar2 = _interopRequireDefault(_Scrollbar);\n\t\n\tvar _utils = __webpack_require__(32);\n\t\n\tvar _lineHeight2 = __webpack_require__(33);\n\t\n\tvar _lineHeight3 = _interopRequireDefault(_lineHeight2);\n\t\n\tvar _reactMotion = __webpack_require__(8);\n\t\n\tvar _propTypes = __webpack_require__(18);\n\t\n\tvar _propTypes2 = _interopRequireDefault(_propTypes);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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; }\n\t\n\tfunction _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; }\n\t\n\tvar eventTypes = {\n\t wheel: 'wheel',\n\t api: 'api',\n\t touch: 'touch',\n\t touchEnd: 'touchEnd',\n\t mousemove: 'mousemove',\n\t keyPress: 'keypress'\n\t};\n\t\n\tvar ScrollArea = function (_React$Component) {\n\t _inherits(ScrollArea, _React$Component);\n\t\n\t function ScrollArea(props) {\n\t _classCallCheck(this, ScrollArea);\n\t\n\t var _this = _possibleConstructorReturn(this, (ScrollArea.__proto__ || Object.getPrototypeOf(ScrollArea)).call(this, props));\n\t\n\t _this.state = {\n\t topPosition: 0,\n\t leftPosition: 0,\n\t realHeight: 0,\n\t containerHeight: 0,\n\t realWidth: 0,\n\t containerWidth: 0\n\t };\n\t\n\t _this.scrollArea = {\n\t refresh: function refresh() {\n\t _this.setSizesToState();\n\t },\n\t scrollTop: function scrollTop() {\n\t _this.scrollTop();\n\t },\n\t scrollBottom: function scrollBottom() {\n\t _this.scrollBottom();\n\t },\n\t scrollYTo: function scrollYTo(position) {\n\t _this.scrollYTo(position);\n\t },\n\t scrollLeft: function scrollLeft() {\n\t _this.scrollLeft();\n\t },\n\t scrollRight: function scrollRight() {\n\t _this.scrollRight();\n\t },\n\t scrollXTo: function scrollXTo(position) {\n\t _this.scrollXTo(position);\n\t }\n\t };\n\t\n\t _this.evntsPreviousValues = {\n\t clientX: 0,\n\t clientY: 0,\n\t deltaX: 0,\n\t deltaY: 0\n\t };\n\t\n\t _this.bindedHandleWindowResize = _this.handleWindowResize.bind(_this);\n\t return _this;\n\t }\n\t\n\t _createClass(ScrollArea, [{\n\t key: 'getChildContext',\n\t value: function getChildContext() {\n\t return {\n\t scrollArea: this.scrollArea\n\t };\n\t }\n\t }, {\n\t key: 'componentDidMount',\n\t value: function componentDidMount() {\n\t if (this.props.contentWindow) {\n\t this.props.contentWindow.addEventListener(\"resize\", this.bindedHandleWindowResize);\n\t }\n\t this.lineHeightPx = (0, _lineHeight3.default)((0, _utils.findDOMNode)(this.content));\n\t this.setSizesToState();\n\t }\n\t }, {\n\t key: 'componentWillUnmount',\n\t value: function componentWillUnmount() {\n\t if (this.props.contentWindow) {\n\t this.props.contentWindow.removeEventListener(\"resize\", this.bindedHandleWindowResize);\n\t }\n\t }\n\t }, {\n\t key: 'componentDidUpdate',\n\t value: function componentDidUpdate() {\n\t this.setSizesToState();\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _this2 = this;\n\t\n\t var _props = this.props,\n\t children = _props.children,\n\t className = _props.className,\n\t contentClassName = _props.contentClassName,\n\t ownerDocument = _props.ownerDocument;\n\t\n\t var withMotion = this.props.smoothScrolling && (this.state.eventType === eventTypes.wheel || this.state.eventType === eventTypes.api || this.state.eventType === eventTypes.touchEnd || this.state.eventType === eventTypes.keyPress);\n\t\n\t var scrollbarY = this.canScrollY() ? _react2.default.createElement(_Scrollbar2.default, {\n\t ownerDocument: ownerDocument,\n\t realSize: this.state.realHeight,\n\t containerSize: this.state.containerHeight,\n\t position: this.state.topPosition,\n\t onMove: this.handleScrollbarMove.bind(this),\n\t onPositionChange: this.handleScrollbarYPositionChange.bind(this),\n\t containerStyle: this.props.verticalContainerStyle,\n\t scrollbarStyle: this.props.verticalScrollbarStyle,\n\t smoothScrolling: withMotion,\n\t minScrollSize: this.props.minScrollSize,\n\t onFocus: this.focusContent.bind(this),\n\t type: 'vertical' }) : null;\n\t\n\t var scrollbarX = this.canScrollX() ? _react2.default.createElement(_Scrollbar2.default, {\n\t ownerDocument: ownerDocument,\n\t realSize: this.state.realWidth,\n\t containerSize: this.state.containerWidth,\n\t position: this.state.leftPosition,\n\t onMove: this.handleScrollbarMove.bind(this),\n\t onPositionChange: this.handleScrollbarXPositionChange.bind(this),\n\t containerStyle: this.props.horizontalContainerStyle,\n\t scrollbarStyle: this.props.horizontalScrollbarStyle,\n\t smoothScrolling: withMotion,\n\t minScrollSize: this.props.minScrollSize,\n\t onFocus: this.focusContent.bind(this),\n\t type: 'horizontal' }) : null;\n\t\n\t if (typeof children === 'function') {\n\t (0, _utils.warnAboutFunctionChild)();\n\t children = children();\n\t } else {\n\t (0, _utils.warnAboutElementChild)();\n\t }\n\t\n\t var classes = 'scrollarea ' + (className || '');\n\t var contentClasses = 'scrollarea-content ' + (contentClassName || '');\n\t\n\t var contentStyle = {\n\t marginTop: -this.state.topPosition,\n\t marginLeft: -this.state.leftPosition\n\t };\n\t var springifiedContentStyle = withMotion ? (0, _utils.modifyObjValues)(contentStyle, function (x) {\n\t return (0, _reactMotion.spring)(x);\n\t }) : contentStyle;\n\t\n\t return _react2.default.createElement(\n\t _reactMotion.Motion,\n\t { style: springifiedContentStyle },\n\t function (style) {\n\t return _react2.default.createElement(\n\t 'div',\n\t {\n\t ref: function ref(x) {\n\t return _this2.wrapper = x;\n\t },\n\t className: classes,\n\t style: _this2.props.style,\n\t onWheel: _this2.handleWheel.bind(_this2)\n\t },\n\t _react2.default.createElement(\n\t 'div',\n\t {\n\t ref: function ref(x) {\n\t return _this2.content = x;\n\t },\n\t style: _extends({}, _this2.props.contentStyle, style),\n\t className: contentClasses,\n\t onTouchStart: _this2.handleTouchStart.bind(_this2),\n\t onTouchMove: _this2.handleTouchMove.bind(_this2),\n\t onTouchEnd: _this2.handleTouchEnd.bind(_this2),\n\t onKeyDown: _this2.handleKeyDown.bind(_this2),\n\t tabIndex: _this2.props.focusableTabIndex\n\t },\n\t children\n\t ),\n\t scrollbarY,\n\t scrollbarX\n\t );\n\t }\n\t );\n\t }\n\t }, {\n\t key: 'setStateFromEvent',\n\t value: function setStateFromEvent(newState, eventType) {\n\t if (this.props.onScroll) {\n\t this.props.onScroll(newState);\n\t }\n\t this.setState(_extends({}, newState, { eventType: eventType }));\n\t }\n\t }, {\n\t key: 'handleTouchStart',\n\t value: function handleTouchStart(e) {\n\t var touches = e.touches;\n\t\n\t if (touches.length === 1) {\n\t var _touches$ = touches[0],\n\t clientX = _touches$.clientX,\n\t clientY = _touches$.clientY;\n\t\n\t this.eventPreviousValues = _extends({}, this.eventPreviousValues, {\n\t clientY: clientY,\n\t clientX: clientX,\n\t timestamp: Date.now()\n\t });\n\t }\n\t }\n\t }, {\n\t key: 'handleTouchMove',\n\t value: function handleTouchMove(e) {\n\t e.preventDefault();\n\t e.stopPropagation();\n\t\n\t var touches = e.touches;\n\t\n\t if (touches.length === 1) {\n\t var _touches$2 = touches[0],\n\t clientX = _touches$2.clientX,\n\t clientY = _touches$2.clientY;\n\t\n\t\n\t var deltaY = this.eventPreviousValues.clientY - clientY;\n\t var deltaX = this.eventPreviousValues.clientX - clientX;\n\t\n\t this.eventPreviousValues = _extends({}, this.eventPreviousValues, {\n\t deltaY: deltaY,\n\t deltaX: deltaX,\n\t clientY: clientY,\n\t clientX: clientX,\n\t timestamp: Date.now()\n\t });\n\t\n\t this.setStateFromEvent(this.composeNewState(-deltaX, -deltaY));\n\t }\n\t }\n\t }, {\n\t key: 'handleTouchEnd',\n\t value: function handleTouchEnd(e) {\n\t var _eventPreviousValues = this.eventPreviousValues,\n\t deltaX = _eventPreviousValues.deltaX,\n\t deltaY = _eventPreviousValues.deltaY,\n\t timestamp = _eventPreviousValues.timestamp;\n\t\n\t if (typeof deltaX === 'undefined') deltaX = 0;\n\t if (typeof deltaY === 'undefined') deltaY = 0;\n\t if (Date.now() - timestamp < 200) {\n\t this.setStateFromEvent(this.composeNewState(-deltaX * 10, -deltaY * 10), eventTypes.touchEnd);\n\t }\n\t\n\t this.eventPreviousValues = _extends({}, this.eventPreviousValues, {\n\t deltaY: 0,\n\t deltaX: 0\n\t });\n\t }\n\t }, {\n\t key: 'handleScrollbarMove',\n\t value: function handleScrollbarMove(deltaY, deltaX) {\n\t this.setStateFromEvent(this.composeNewState(deltaX, deltaY));\n\t }\n\t }, {\n\t key: 'handleScrollbarXPositionChange',\n\t value: function handleScrollbarXPositionChange(position) {\n\t this.scrollXTo(position);\n\t }\n\t }, {\n\t key: 'handleScrollbarYPositionChange',\n\t value: function handleScrollbarYPositionChange(position) {\n\t this.scrollYTo(position);\n\t }\n\t }, {\n\t key: 'handleWheel',\n\t value: function handleWheel(e) {\n\t var deltaY = e.deltaY;\n\t var deltaX = e.deltaX;\n\t\n\t if (this.props.swapWheelAxes) {\n\t var _ref = [deltaX, deltaY];\n\t deltaY = _ref[0];\n\t deltaX = _ref[1];\n\t }\n\t\n\t /*\n\t * WheelEvent.deltaMode can differ between browsers and must be normalized\n\t * e.deltaMode === 0: The delta values are specified in pixels\n\t * e.deltaMode === 1: The delta values are specified in lines\n\t * https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent/deltaMode\n\t */\n\t if (e.deltaMode === 1) {\n\t deltaY = deltaY * this.lineHeightPx;\n\t deltaX = deltaX * this.lineHeightPx;\n\t }\n\t\n\t deltaY = deltaY * this.props.speed;\n\t deltaX = deltaX * this.props.speed;\n\t\n\t var newState = this.composeNewState(-deltaX, -deltaY);\n\t\n\t if (newState.topPosition && this.state.topPosition !== newState.topPosition || newState.leftPosition && this.state.leftPosition !== newState.leftPosition || this.props.stopScrollPropagation) {\n\t e.preventDefault();\n\t e.stopPropagation();\n\t }\n\t\n\t this.setStateFromEvent(newState, eventTypes.wheel);\n\t this.focusContent();\n\t }\n\t }, {\n\t key: 'handleKeyDown',\n\t value: function handleKeyDown(e) {\n\t // only handle if scroll area is in focus\n\t if (e.target.tagName.toLowerCase() !== 'input') {\n\t var deltaY = 0;\n\t var deltaX = 0;\n\t var _lineHeight = this.lineHeightPx ? this.lineHeightPx : 10;\n\t\n\t switch (e.keyCode) {\n\t case 33:\n\t // page up\n\t deltaY = this.state.containerHeight - _lineHeight;\n\t break;\n\t case 34:\n\t // page down\n\t deltaY = -this.state.containerHeight + _lineHeight;\n\t break;\n\t case 37:\n\t // left\n\t deltaX = _lineHeight;\n\t break;\n\t case 38:\n\t // up\n\t deltaY = _lineHeight;\n\t break;\n\t case 39:\n\t // right\n\t deltaX = -_lineHeight;\n\t break;\n\t case 40:\n\t // down\n\t deltaY = -_lineHeight;\n\t break;\n\t }\n\t\n\t // only compose new state if key code matches those above\n\t if (deltaY !== 0 || deltaX !== 0) {\n\t var newState = this.composeNewState(deltaX, deltaY);\n\t\n\t e.preventDefault();\n\t e.stopPropagation();\n\t\n\t this.setStateFromEvent(newState, eventTypes.keyPress);\n\t }\n\t }\n\t }\n\t }, {\n\t key: 'handleWindowResize',\n\t value: function handleWindowResize() {\n\t var newState = this.computeSizes();\n\t newState = this.getModifiedPositionsIfNeeded(newState);\n\t this.setStateFromEvent(newState);\n\t }\n\t }, {\n\t key: 'composeNewState',\n\t value: function composeNewState(deltaX, deltaY) {\n\t var newState = this.computeSizes();\n\t\n\t if (this.canScrollY(newState)) {\n\t newState.topPosition = this.computeTopPosition(deltaY, newState);\n\t } else {\n\t newState.topPosition = 0;\n\t }\n\t if (this.canScrollX(newState)) {\n\t newState.leftPosition = this.computeLeftPosition(deltaX, newState);\n\t }\n\t\n\t return newState;\n\t }\n\t }, {\n\t key: 'computeTopPosition',\n\t value: function computeTopPosition(deltaY, sizes) {\n\t var newTopPosition = this.state.topPosition - deltaY;\n\t return this.normalizeTopPosition(newTopPosition, sizes);\n\t }\n\t }, {\n\t key: 'computeLeftPosition',\n\t value: function computeLeftPosition(deltaX, sizes) {\n\t var newLeftPosition = this.state.leftPosition - deltaX;\n\t return this.normalizeLeftPosition(newLeftPosition, sizes);\n\t }\n\t }, {\n\t key: 'normalizeTopPosition',\n\t value: function normalizeTopPosition(newTopPosition, sizes) {\n\t if (newTopPosition > sizes.realHeight - sizes.containerHeight) {\n\t newTopPosition = sizes.realHeight - sizes.containerHeight;\n\t }\n\t if (newTopPosition < 0) {\n\t newTopPosition = 0;\n\t }\n\t return newTopPosition;\n\t }\n\t }, {\n\t key: 'normalizeLeftPosition',\n\t value: function normalizeLeftPosition(newLeftPosition, sizes) {\n\t if (newLeftPosition > sizes.realWidth - sizes.containerWidth) {\n\t newLeftPosition = sizes.realWidth - sizes.containerWidth;\n\t } else if (newLeftPosition < 0) {\n\t newLeftPosition = 0;\n\t }\n\t\n\t return newLeftPosition;\n\t }\n\t }, {\n\t key: 'computeSizes',\n\t value: function computeSizes() {\n\t var realHeight = this.content.offsetHeight;\n\t var containerHeight = this.wrapper.offsetHeight;\n\t var realWidth = this.content.offsetWidth;\n\t var containerWidth = this.wrapper.offsetWidth;\n\t\n\t return {\n\t realHeight: realHeight,\n\t containerHeight: containerHeight,\n\t realWidth: realWidth,\n\t containerWidth: containerWidth\n\t };\n\t }\n\t }, {\n\t key: 'setSizesToState',\n\t value: function setSizesToState() {\n\t var sizes = this.computeSizes();\n\t if (sizes.realHeight !== this.state.realHeight || sizes.realWidth !== this.state.realWidth) {\n\t this.setStateFromEvent(this.getModifiedPositionsIfNeeded(sizes));\n\t }\n\t }\n\t }, {\n\t key: 'scrollTop',\n\t value: function scrollTop() {\n\t this.scrollYTo(0);\n\t }\n\t }, {\n\t key: 'scrollBottom',\n\t value: function scrollBottom() {\n\t this.scrollYTo(this.state.realHeight - this.state.containerHeight);\n\t }\n\t }, {\n\t key: 'scrollLeft',\n\t value: function scrollLeft() {\n\t this.scrollXTo(0);\n\t }\n\t }, {\n\t key: 'scrollRight',\n\t value: function scrollRight() {\n\t this.scrollXTo(this.state.realWidth - this.state.containerWidth);\n\t }\n\t }, {\n\t key: 'scrollYTo',\n\t value: function scrollYTo(topPosition) {\n\t if (this.canScrollY()) {\n\t var position = this.normalizeTopPosition(topPosition, this.computeSizes());\n\t this.setStateFromEvent({ topPosition: position }, eventTypes.api);\n\t }\n\t }\n\t }, {\n\t key: 'scrollXTo',\n\t value: function scrollXTo(leftPosition) {\n\t if (this.canScrollX()) {\n\t var position = this.normalizeLeftPosition(leftPosition, this.computeSizes());\n\t this.setStateFromEvent({ leftPosition: position }, eventTypes.api);\n\t }\n\t }\n\t }, {\n\t key: 'canScrollY',\n\t value: function canScrollY() {\n\t var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.state;\n\t\n\t var scrollableY = state.realHeight > state.containerHeight;\n\t return scrollableY && this.props.vertical;\n\t }\n\t }, {\n\t key: 'canScrollX',\n\t value: function canScrollX() {\n\t var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.state;\n\t\n\t var scrollableX = state.realWidth > state.containerWidth;\n\t return scrollableX && this.props.horizontal;\n\t }\n\t }, {\n\t key: 'getModifiedPositionsIfNeeded',\n\t value: function getModifiedPositionsIfNeeded(newState) {\n\t var bottomPosition = newState.realHeight - newState.containerHeight;\n\t if (this.state.topPosition >= bottomPosition) {\n\t newState.topPosition = this.canScrollY(newState) ? (0, _utils.positiveOrZero)(bottomPosition) : 0;\n\t }\n\t\n\t var rightPosition = newState.realWidth - newState.containerWidth;\n\t if (this.state.leftPosition >= rightPosition) {\n\t newState.leftPosition = this.canScrollX(newState) ? (0, _utils.positiveOrZero)(rightPosition) : 0;\n\t }\n\t\n\t return newState;\n\t }\n\t }, {\n\t key: 'focusContent',\n\t value: function focusContent() {\n\t if (this.content) {\n\t (0, _utils.findDOMNode)(this.content).focus();\n\t }\n\t }\n\t }]);\n\t\n\t return ScrollArea;\n\t}(_react2.default.Component);\n\t\n\texports.default = ScrollArea;\n\t\n\t\n\tScrollArea.childContextTypes = {\n\t scrollArea: _propTypes2.default.object\n\t};\n\t\n\tScrollArea.propTypes = {\n\t className: _propTypes2.default.string,\n\t style: _propTypes2.default.object,\n\t speed: _propTypes2.default.number,\n\t contentClassName: _propTypes2.default.string,\n\t contentStyle: _propTypes2.default.object,\n\t vertical: _propTypes2.default.bool,\n\t verticalContainerStyle: _propTypes2.default.object,\n\t verticalScrollbarStyle: _propTypes2.default.object,\n\t horizontal: _propTypes2.default.bool,\n\t horizontalContainerStyle: _propTypes2.default.object,\n\t horizontalScrollbarStyle: _propTypes2.default.object,\n\t onScroll: _propTypes2.default.func,\n\t contentWindow: _propTypes2.default.any,\n\t ownerDocument: _propTypes2.default.any,\n\t smoothScrolling: _propTypes2.default.bool,\n\t minScrollSize: _propTypes2.default.number,\n\t swapWheelAxes: _propTypes2.default.bool,\n\t stopScrollPropagation: _propTypes2.default.bool,\n\t focusableTabIndex: _propTypes2.default.number\n\t};\n\t\n\tScrollArea.defaultProps = {\n\t speed: 1,\n\t vertical: true,\n\t horizontal: true,\n\t smoothScrolling: false,\n\t swapWheelAxes: false,\n\t contentWindow: (typeof window === 'undefined' ? 'undefined' : _typeof(window)) === \"object\" ? window : undefined,\n\t ownerDocument: (typeof document === 'undefined' ? 'undefined' : _typeof(document)) === \"object\" ? document : undefined,\n\t focusableTabIndex: 1\n\t};\n\n/***/ },\n/* 6 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_6__;\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _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; }; }();\n\t\n\tvar _react = __webpack_require__(6);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactMotion = __webpack_require__(8);\n\t\n\tvar _utils = __webpack_require__(32);\n\t\n\tvar _propTypes = __webpack_require__(18);\n\t\n\tvar _propTypes2 = _interopRequireDefault(_propTypes);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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; }\n\t\n\tfunction _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; }\n\t\n\tvar ScrollBar = function (_React$Component) {\n\t _inherits(ScrollBar, _React$Component);\n\t\n\t function ScrollBar(props) {\n\t _classCallCheck(this, ScrollBar);\n\t\n\t var _this = _possibleConstructorReturn(this, (ScrollBar.__proto__ || Object.getPrototypeOf(ScrollBar)).call(this, props));\n\t\n\t var newState = _this.calculateState(props);\n\t _this.state = {\n\t position: newState.position,\n\t scrollSize: newState.scrollSize,\n\t isDragging: false,\n\t lastClientPosition: 0\n\t };\n\t\n\t if (props.type === 'vertical') {\n\t _this.bindedHandleMouseMove = _this.handleMouseMoveForVertical.bind(_this);\n\t } else {\n\t _this.bindedHandleMouseMove = _this.handleMouseMoveForHorizontal.bind(_this);\n\t }\n\t\n\t _this.bindedHandleMouseUp = _this.handleMouseUp.bind(_this);\n\t return _this;\n\t }\n\t\n\t _createClass(ScrollBar, [{\n\t key: 'componentDidMount',\n\t value: function componentDidMount() {\n\t if (this.props.ownerDocument) {\n\t this.props.ownerDocument.addEventListener(\"mousemove\", this.bindedHandleMouseMove);\n\t this.props.ownerDocument.addEventListener(\"mouseup\", this.bindedHandleMouseUp);\n\t }\n\t }\n\t }, {\n\t key: 'componentWillReceiveProps',\n\t value: function componentWillReceiveProps(nextProps) {\n\t this.setState(this.calculateState(nextProps));\n\t }\n\t }, {\n\t key: 'componentWillUnmount',\n\t value: function componentWillUnmount() {\n\t if (this.props.ownerDocument) {\n\t this.props.ownerDocument.removeEventListener(\"mousemove\", this.bindedHandleMouseMove);\n\t this.props.ownerDocument.removeEventListener(\"mouseup\", this.bindedHandleMouseUp);\n\t }\n\t }\n\t }, {\n\t key: 'calculateFractionalPosition',\n\t value: function calculateFractionalPosition(realContentSize, containerSize, contentPosition) {\n\t var relativeSize = realContentSize - containerSize;\n\t\n\t return 1 - (relativeSize - contentPosition) / relativeSize;\n\t }\n\t }, {\n\t key: 'calculateState',\n\t value: function calculateState(props) {\n\t var fractionalPosition = this.calculateFractionalPosition(props.realSize, props.containerSize, props.position);\n\t var proportionalToPageScrollSize = props.containerSize * props.containerSize / props.realSize;\n\t var scrollSize = proportionalToPageScrollSize < props.minScrollSize ? props.minScrollSize : proportionalToPageScrollSize;\n\t\n\t var scrollPosition = (props.containerSize - scrollSize) * fractionalPosition;\n\t return {\n\t scrollSize: scrollSize,\n\t position: Math.round(scrollPosition)\n\t };\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _this2 = this;\n\t\n\t var _props = this.props,\n\t smoothScrolling = _props.smoothScrolling,\n\t isDragging = _props.isDragging,\n\t type = _props.type,\n\t scrollbarStyle = _props.scrollbarStyle,\n\t containerStyle = _props.containerStyle;\n\t\n\t var isVoriziontal = type === 'horizontal';\n\t var isVertical = type === 'vertical';\n\t var scrollStyles = this.createScrollStyles();\n\t var springifiedScrollStyles = smoothScrolling ? (0, _utils.modifyObjValues)(scrollStyles, function (x) {\n\t return (0, _reactMotion.spring)(x);\n\t }) : scrollStyles;\n\t\n\t var scrollbarClasses = 'scrollbar-container ' + (isDragging ? 'active' : '') + ' ' + (isVoriziontal ? 'horizontal' : '') + ' ' + (isVertical ? 'vertical' : '');\n\t\n\t return _react2.default.createElement(\n\t _reactMotion.Motion,\n\t { style: springifiedScrollStyles },\n\t function (style) {\n\t return _react2.default.createElement(\n\t 'div',\n\t {\n\t className: scrollbarClasses,\n\t style: containerStyle,\n\t onMouseDown: _this2.handleScrollBarContainerClick.bind(_this2),\n\t ref: function ref(x) {\n\t return _this2.scrollbarContainer = x;\n\t }\n\t },\n\t _react2.default.createElement('div', {\n\t className: 'scrollbar',\n\t style: _extends({}, scrollbarStyle, style),\n\t onMouseDown: _this2.handleMouseDown.bind(_this2)\n\t })\n\t );\n\t }\n\t );\n\t }\n\t }, {\n\t key: 'handleScrollBarContainerClick',\n\t value: function handleScrollBarContainerClick(e) {\n\t e.preventDefault();\n\t var multiplier = this.computeMultiplier();\n\t var clientPosition = this.isVertical() ? e.clientY : e.clientX;\n\t\n\t var _scrollbarContainer$g = this.scrollbarContainer.getBoundingClientRect(),\n\t top = _scrollbarContainer$g.top,\n\t left = _scrollbarContainer$g.left;\n\t\n\t var clientScrollPosition = this.isVertical() ? top : left;\n\t\n\t var position = clientPosition - clientScrollPosition;\n\t var proportionalToPageScrollSize = this.props.containerSize * this.props.containerSize / this.props.realSize;\n\t\n\t this.setState({ isDragging: true, lastClientPosition: clientPosition });\n\t this.props.onPositionChange((position - proportionalToPageScrollSize / 2) / multiplier);\n\t }\n\t }, {\n\t key: 'handleMouseMoveForHorizontal',\n\t value: function handleMouseMoveForHorizontal(e) {\n\t var multiplier = this.computeMultiplier();\n\t\n\t if (this.state.isDragging) {\n\t e.preventDefault();\n\t var deltaX = this.state.lastClientPosition - e.clientX;\n\t this.setState({ lastClientPosition: e.clientX });\n\t this.props.onMove(0, deltaX / multiplier);\n\t }\n\t }\n\t }, {\n\t key: 'handleMouseMoveForVertical',\n\t value: function handleMouseMoveForVertical(e) {\n\t var multiplier = this.computeMultiplier();\n\t\n\t if (this.state.isDragging) {\n\t e.preventDefault();\n\t var deltaY = this.state.lastClientPosition - e.clientY;\n\t this.setState({ lastClientPosition: e.clientY });\n\t this.props.onMove(deltaY / multiplier, 0);\n\t }\n\t }\n\t }, {\n\t key: 'handleMouseDown',\n\t value: function handleMouseDown(e) {\n\t e.preventDefault();\n\t e.stopPropagation();\n\t var lastClientPosition = this.isVertical() ? e.clientY : e.clientX;\n\t this.setState({ isDragging: true, lastClientPosition: lastClientPosition });\n\t\n\t this.props.onFocus();\n\t }\n\t }, {\n\t key: 'handleMouseUp',\n\t value: function handleMouseUp(e) {\n\t if (this.state.isDragging) {\n\t e.preventDefault();\n\t this.setState({ isDragging: false });\n\t }\n\t }\n\t }, {\n\t key: 'createScrollStyles',\n\t value: function createScrollStyles() {\n\t if (this.props.type === 'vertical') {\n\t return {\n\t height: this.state.scrollSize,\n\t marginTop: this.state.position\n\t };\n\t } else {\n\t return {\n\t width: this.state.scrollSize,\n\t marginLeft: this.state.position\n\t };\n\t }\n\t }\n\t }, {\n\t key: 'computeMultiplier',\n\t value: function computeMultiplier() {\n\t return this.props.containerSize / this.props.realSize;\n\t }\n\t }, {\n\t key: 'isVertical',\n\t value: function isVertical() {\n\t return this.props.type === 'vertical';\n\t }\n\t }]);\n\t\n\t return ScrollBar;\n\t}(_react2.default.Component);\n\t\n\tScrollBar.propTypes = {\n\t onMove: _propTypes2.default.func,\n\t onPositionChange: _propTypes2.default.func,\n\t onFocus: _propTypes2.default.func,\n\t realSize: _propTypes2.default.number,\n\t containerSize: _propTypes2.default.number,\n\t position: _propTypes2.default.number,\n\t containerStyle: _propTypes2.default.object,\n\t scrollbarStyle: _propTypes2.default.object,\n\t type: _propTypes2.default.oneOf(['vertical', 'horizontal']),\n\t ownerDocument: _propTypes2.default.any,\n\t smoothScrolling: _propTypes2.default.bool,\n\t minScrollSize: _propTypes2.default.number\n\t};\n\t\n\tScrollBar.defaultProps = {\n\t type: 'vertical',\n\t smoothScrolling: false\n\t};\n\texports.default = ScrollBar;\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tfunction _interopRequire(obj) { return obj && obj.__esModule ? obj['default'] : obj; }\n\t\n\tvar _Motion = __webpack_require__(9);\n\t\n\texports.Motion = _interopRequire(_Motion);\n\t\n\tvar _StaggeredMotion = __webpack_require__(26);\n\t\n\texports.StaggeredMotion = _interopRequire(_StaggeredMotion);\n\t\n\tvar _TransitionMotion = __webpack_require__(27);\n\t\n\texports.TransitionMotion = _interopRequire(_TransitionMotion);\n\t\n\tvar _spring = __webpack_require__(29);\n\t\n\texports.spring = _interopRequire(_spring);\n\t\n\tvar _presets = __webpack_require__(30);\n\t\n\texports.presets = _interopRequire(_presets);\n\t\n\tvar _stripStyle = __webpack_require__(11);\n\t\n\texports.stripStyle = _interopRequire(_stripStyle);\n\t\n\t// deprecated, dummy warning function\n\t\n\tvar _reorderKeys = __webpack_require__(31);\n\t\n\texports.reorderKeys = _interopRequire(_reorderKeys);\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _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; }; })();\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _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; }\n\t\n\tvar _mapToZero = __webpack_require__(10);\n\t\n\tvar _mapToZero2 = _interopRequireDefault(_mapToZero);\n\t\n\tvar _stripStyle = __webpack_require__(11);\n\t\n\tvar _stripStyle2 = _interopRequireDefault(_stripStyle);\n\t\n\tvar _stepper3 = __webpack_require__(12);\n\t\n\tvar _stepper4 = _interopRequireDefault(_stepper3);\n\t\n\tvar _performanceNow = __webpack_require__(13);\n\t\n\tvar _performanceNow2 = _interopRequireDefault(_performanceNow);\n\t\n\tvar _raf = __webpack_require__(15);\n\t\n\tvar _raf2 = _interopRequireDefault(_raf);\n\t\n\tvar _shouldStopAnimation = __webpack_require__(17);\n\t\n\tvar _shouldStopAnimation2 = _interopRequireDefault(_shouldStopAnimation);\n\t\n\tvar _react = __webpack_require__(6);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _propTypes = __webpack_require__(18);\n\t\n\tvar _propTypes2 = _interopRequireDefault(_propTypes);\n\t\n\tvar msPerFrame = 1000 / 60;\n\t\n\tvar Motion = (function (_React$Component) {\n\t _inherits(Motion, _React$Component);\n\t\n\t _createClass(Motion, null, [{\n\t key: 'propTypes',\n\t value: {\n\t // TOOD: warn against putting a config in here\n\t defaultStyle: _propTypes2['default'].objectOf(_propTypes2['default'].number),\n\t style: _propTypes2['default'].objectOf(_propTypes2['default'].oneOfType([_propTypes2['default'].number, _propTypes2['default'].object])).isRequired,\n\t children: _propTypes2['default'].func.isRequired,\n\t onRest: _propTypes2['default'].func\n\t },\n\t enumerable: true\n\t }]);\n\t\n\t function Motion(props) {\n\t var _this = this;\n\t\n\t _classCallCheck(this, Motion);\n\t\n\t _React$Component.call(this, props);\n\t this.wasAnimating = false;\n\t this.animationID = null;\n\t this.prevTime = 0;\n\t this.accumulatedTime = 0;\n\t this.unreadPropStyle = null;\n\t\n\t this.clearUnreadPropStyle = function (destStyle) {\n\t var dirty = false;\n\t var _state = _this.state;\n\t var currentStyle = _state.currentStyle;\n\t var currentVelocity = _state.currentVelocity;\n\t var lastIdealStyle = _state.lastIdealStyle;\n\t var lastIdealVelocity = _state.lastIdealVelocity;\n\t\n\t for (var key in destStyle) {\n\t if (!Object.prototype.hasOwnProperty.call(destStyle, key)) {\n\t continue;\n\t }\n\t\n\t var styleValue = destStyle[key];\n\t if (typeof styleValue === 'number') {\n\t if (!dirty) {\n\t dirty = true;\n\t currentStyle = _extends({}, currentStyle);\n\t currentVelocity = _extends({}, currentVelocity);\n\t lastIdealStyle = _extends({}, lastIdealStyle);\n\t lastIdealVelocity = _extends({}, lastIdealVelocity);\n\t }\n\t\n\t currentStyle[key] = styleValue;\n\t currentVelocity[key] = 0;\n\t lastIdealStyle[key] = styleValue;\n\t lastIdealVelocity[key] = 0;\n\t }\n\t }\n\t\n\t if (dirty) {\n\t _this.setState({ currentStyle: currentStyle, currentVelocity: currentVelocity, lastIdealStyle: lastIdealStyle, lastIdealVelocity: lastIdealVelocity });\n\t }\n\t };\n\t\n\t this.startAnimationIfNecessary = function () {\n\t // TODO: when config is {a: 10} and dest is {a: 10} do we raf once and\n\t // call cb? No, otherwise accidental parent rerender causes cb trigger\n\t _this.animationID = _raf2['default'](function (timestamp) {\n\t // check if we need to animate in the first place\n\t var propsStyle = _this.props.style;\n\t if (_shouldStopAnimation2['default'](_this.state.currentStyle, propsStyle, _this.state.currentVelocity)) {\n\t if (_this.wasAnimating && _this.props.onRest) {\n\t _this.props.onRest();\n\t }\n\t\n\t // no need to cancel animationID here; shouldn't have any in flight\n\t _this.animationID = null;\n\t _this.wasAnimating = false;\n\t _this.accumulatedTime = 0;\n\t return;\n\t }\n\t\n\t _this.wasAnimating = true;\n\t\n\t var currentTime = timestamp || _performanceNow2['default']();\n\t var timeDelta = currentTime - _this.prevTime;\n\t _this.prevTime = currentTime;\n\t _this.accumulatedTime = _this.accumulatedTime + timeDelta;\n\t // more than 10 frames? prolly switched browser tab. Restart\n\t if (_this.accumulatedTime > msPerFrame * 10) {\n\t _this.accumulatedTime = 0;\n\t }\n\t\n\t if (_this.accumulatedTime === 0) {\n\t // no need to cancel animationID here; shouldn't have any in flight\n\t _this.animationID = null;\n\t _this.startAnimationIfNecessary();\n\t return;\n\t }\n\t\n\t var currentFrameCompletion = (_this.accumulatedTime - Math.floor(_this.accumulatedTime / msPerFrame) * msPerFrame) / msPerFrame;\n\t var framesToCatchUp = Math.floor(_this.accumulatedTime / msPerFrame);\n\t\n\t var newLastIdealStyle = {};\n\t var newLastIdealVelocity = {};\n\t var newCurrentStyle = {};\n\t var newCurrentVelocity = {};\n\t\n\t for (var key in propsStyle) {\n\t if (!Object.prototype.hasOwnProperty.call(propsStyle, key)) {\n\t continue;\n\t }\n\t\n\t var styleValue = propsStyle[key];\n\t if (typeof styleValue === 'number') {\n\t newCurrentStyle[key] = styleValue;\n\t newCurrentVelocity[key] = 0;\n\t newLastIdealStyle[key] = styleValue;\n\t newLastIdealVelocity[key] = 0;\n\t } else {\n\t var newLastIdealStyleValue = _this.state.lastIdealStyle[key];\n\t var newLastIdealVelocityValue = _this.state.lastIdealVelocity[key];\n\t for (var i = 0; i < framesToCatchUp; i++) {\n\t var _stepper = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\t\n\t newLastIdealStyleValue = _stepper[0];\n\t newLastIdealVelocityValue = _stepper[1];\n\t }\n\t\n\t var _stepper2 = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\t\n\t var nextIdealX = _stepper2[0];\n\t var nextIdealV = _stepper2[1];\n\t\n\t newCurrentStyle[key] = newLastIdealStyleValue + (nextIdealX - newLastIdealStyleValue) * currentFrameCompletion;\n\t newCurrentVelocity[key] = newLastIdealVelocityValue + (nextIdealV - newLastIdealVelocityValue) * currentFrameCompletion;\n\t newLastIdealStyle[key] = newLastIdealStyleValue;\n\t newLastIdealVelocity[key] = newLastIdealVelocityValue;\n\t }\n\t }\n\t\n\t _this.animationID = null;\n\t // the amount we're looped over above\n\t _this.accumulatedTime -= framesToCatchUp * msPerFrame;\n\t\n\t _this.setState({\n\t currentStyle: newCurrentStyle,\n\t currentVelocity: newCurrentVelocity,\n\t lastIdealStyle: newLastIdealStyle,\n\t lastIdealVelocity: newLastIdealVelocity\n\t });\n\t\n\t _this.unreadPropStyle = null;\n\t\n\t _this.startAnimationIfNecessary();\n\t });\n\t };\n\t\n\t this.state = this.defaultState();\n\t }\n\t\n\t Motion.prototype.defaultState = function defaultState() {\n\t var _props = this.props;\n\t var defaultStyle = _props.defaultStyle;\n\t var style = _props.style;\n\t\n\t var currentStyle = defaultStyle || _stripStyle2['default'](style);\n\t var currentVelocity = _mapToZero2['default'](currentStyle);\n\t return {\n\t currentStyle: currentStyle,\n\t currentVelocity: currentVelocity,\n\t lastIdealStyle: currentStyle,\n\t lastIdealVelocity: currentVelocity\n\t };\n\t };\n\t\n\t // it's possible that currentStyle's value is stale: if props is immediately\n\t // changed from 0 to 400 to spring(0) again, the async currentStyle is still\n\t // at 0 (didn't have time to tick and interpolate even once). If we naively\n\t // compare currentStyle with destVal it'll be 0 === 0 (no animation, stop).\n\t // In reality currentStyle should be 400\n\t\n\t Motion.prototype.componentDidMount = function componentDidMount() {\n\t this.prevTime = _performanceNow2['default']();\n\t this.startAnimationIfNecessary();\n\t };\n\t\n\t Motion.prototype.componentWillReceiveProps = function componentWillReceiveProps(props) {\n\t if (this.unreadPropStyle != null) {\n\t // previous props haven't had the chance to be set yet; set them here\n\t this.clearUnreadPropStyle(this.unreadPropStyle);\n\t }\n\t\n\t this.unreadPropStyle = props.style;\n\t if (this.animationID == null) {\n\t this.prevTime = _performanceNow2['default']();\n\t this.startAnimationIfNecessary();\n\t }\n\t };\n\t\n\t Motion.prototype.componentWillUnmount = function componentWillUnmount() {\n\t if (this.animationID != null) {\n\t _raf2['default'].cancel(this.animationID);\n\t this.animationID = null;\n\t }\n\t };\n\t\n\t Motion.prototype.render = function render() {\n\t var renderedChildren = this.props.children(this.state.currentStyle);\n\t return renderedChildren && _react2['default'].Children.only(renderedChildren);\n\t };\n\t\n\t return Motion;\n\t})(_react2['default'].Component);\n\t\n\texports['default'] = Motion;\n\tmodule.exports = exports['default'];\n\t\n\t// after checking for unreadPropStyle != null, we manually go set the\n\t// non-interpolating values (those that are a number, without a spring\n\t// config)\n\n/***/ },\n/* 10 */\n/***/ function(module, exports) {\n\n\t\n\t\n\t// currently used to initiate the velocity style object to 0\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports['default'] = mapToZero;\n\t\n\tfunction mapToZero(obj) {\n\t var ret = {};\n\t for (var key in obj) {\n\t if (Object.prototype.hasOwnProperty.call(obj, key)) {\n\t ret[key] = 0;\n\t }\n\t }\n\t return ret;\n\t}\n\t\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 11 */\n/***/ function(module, exports) {\n\n\t\n\t// turn {x: {val: 1, stiffness: 1, damping: 2}, y: 2} generated by\n\t// `{x: spring(1, {stiffness: 1, damping: 2}), y: 2}` into {x: 1, y: 2}\n\t\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports['default'] = stripStyle;\n\t\n\tfunction stripStyle(style) {\n\t var ret = {};\n\t for (var key in style) {\n\t if (!Object.prototype.hasOwnProperty.call(style, key)) {\n\t continue;\n\t }\n\t ret[key] = typeof style[key] === 'number' ? style[key] : style[key].val;\n\t }\n\t return ret;\n\t}\n\t\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 12 */\n/***/ function(module, exports) {\n\n\t\n\t\n\t// stepper is used a lot. Saves allocation to return the same array wrapper.\n\t// This is fine and danger-free against mutations because the callsite\n\t// immediately destructures it and gets the numbers inside without passing the\n\t\"use strict\";\n\t\n\texports.__esModule = true;\n\texports[\"default\"] = stepper;\n\t\n\tvar reusedTuple = [0, 0];\n\t\n\tfunction stepper(secondPerFrame, x, v, destX, k, b, precision) {\n\t // Spring stiffness, in kg / s^2\n\t\n\t // for animations, destX is really spring length (spring at rest). initial\n\t // position is considered as the stretched/compressed position of a spring\n\t var Fspring = -k * (x - destX);\n\t\n\t // Damping, in kg / s\n\t var Fdamper = -b * v;\n\t\n\t // usually we put mass here, but for animation purposes, specifying mass is a\n\t // bit redundant. you could simply adjust k and b accordingly\n\t // let a = (Fspring + Fdamper) / mass;\n\t var a = Fspring + Fdamper;\n\t\n\t var newV = v + a * secondPerFrame;\n\t var newX = x + newV * secondPerFrame;\n\t\n\t if (Math.abs(newV) < precision && Math.abs(newX - destX) < precision) {\n\t reusedTuple[0] = destX;\n\t reusedTuple[1] = 0;\n\t return reusedTuple;\n\t }\n\t\n\t reusedTuple[0] = newX;\n\t reusedTuple[1] = newV;\n\t return reusedTuple;\n\t}\n\t\n\tmodule.exports = exports[\"default\"];\n\t// array reference around.\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {// Generated by CoffeeScript 1.7.1\n\t(function() {\n\t var getNanoSeconds, hrtime, loadTime;\n\t\n\t if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n\t module.exports = function() {\n\t return performance.now();\n\t };\n\t } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n\t module.exports = function() {\n\t return (getNanoSeconds() - loadTime) / 1e6;\n\t };\n\t hrtime = process.hrtime;\n\t getNanoSeconds = function() {\n\t var hr;\n\t hr = hrtime();\n\t return hr[0] * 1e9 + hr[1];\n\t };\n\t loadTime = getNanoSeconds();\n\t } else if (Date.now) {\n\t module.exports = function() {\n\t return Date.now() - loadTime;\n\t };\n\t loadTime = Date.now();\n\t } else {\n\t module.exports = function() {\n\t return new Date().getTime() - loadTime;\n\t };\n\t loadTime = new Date().getTime();\n\t }\n\t\n\t}).call(this);\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(14)))\n\n/***/ },\n/* 14 */\n/***/ function(module, exports) {\n\n\t// shim for using process in browser\n\tvar process = module.exports = {};\n\t\n\t// cached from whatever global is present so that test runners that stub it\n\t// don't break things. But we need to wrap it in a try catch in case it is\n\t// wrapped in strict mode code which doesn't define any globals. It's inside a\n\t// function because try/catches deoptimize in certain engines.\n\t\n\tvar cachedSetTimeout;\n\tvar cachedClearTimeout;\n\t\n\tfunction defaultSetTimout() {\n\t throw new Error('setTimeout has not been defined');\n\t}\n\tfunction defaultClearTimeout () {\n\t throw new Error('clearTimeout has not been defined');\n\t}\n\t(function () {\n\t try {\n\t if (typeof setTimeout === 'function') {\n\t cachedSetTimeout = setTimeout;\n\t } else {\n\t cachedSetTimeout = defaultSetTimout;\n\t }\n\t } catch (e) {\n\t cachedSetTimeout = defaultSetTimout;\n\t }\n\t try {\n\t if (typeof clearTimeout === 'function') {\n\t cachedClearTimeout = clearTimeout;\n\t } else {\n\t cachedClearTimeout = defaultClearTimeout;\n\t }\n\t } catch (e) {\n\t cachedClearTimeout = defaultClearTimeout;\n\t }\n\t} ())\n\tfunction runTimeout(fun) {\n\t if (cachedSetTimeout === setTimeout) {\n\t //normal enviroments in sane situations\n\t return setTimeout(fun, 0);\n\t }\n\t // if setTimeout wasn't available but was latter defined\n\t if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n\t cachedSetTimeout = setTimeout;\n\t return setTimeout(fun, 0);\n\t }\n\t try {\n\t // when when somebody has screwed with setTimeout but no I.E. maddness\n\t return cachedSetTimeout(fun, 0);\n\t } catch(e){\n\t try {\n\t // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n\t return cachedSetTimeout.call(null, fun, 0);\n\t } catch(e){\n\t // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n\t return cachedSetTimeout.call(this, fun, 0);\n\t }\n\t }\n\t\n\t\n\t}\n\tfunction runClearTimeout(marker) {\n\t if (cachedClearTimeout === clearTimeout) {\n\t //normal enviroments in sane situations\n\t return clearTimeout(marker);\n\t }\n\t // if clearTimeout wasn't available but was latter defined\n\t if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n\t cachedClearTimeout = clearTimeout;\n\t return clearTimeout(marker);\n\t }\n\t try {\n\t // when when somebody has screwed with setTimeout but no I.E. maddness\n\t return cachedClearTimeout(marker);\n\t } catch (e){\n\t try {\n\t // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n\t return cachedClearTimeout.call(null, marker);\n\t } catch (e){\n\t // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n\t // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n\t return cachedClearTimeout.call(this, marker);\n\t }\n\t }\n\t\n\t\n\t\n\t}\n\tvar queue = [];\n\tvar draining = false;\n\tvar currentQueue;\n\tvar queueIndex = -1;\n\t\n\tfunction cleanUpNextTick() {\n\t if (!draining || !currentQueue) {\n\t return;\n\t }\n\t draining = false;\n\t if (currentQueue.length) {\n\t queue = currentQueue.concat(queue);\n\t } else {\n\t queueIndex = -1;\n\t }\n\t if (queue.length) {\n\t drainQueue();\n\t }\n\t}\n\t\n\tfunction drainQueue() {\n\t if (draining) {\n\t return;\n\t }\n\t var timeout = runTimeout(cleanUpNextTick);\n\t draining = true;\n\t\n\t var len = queue.length;\n\t while(len) {\n\t currentQueue = queue;\n\t queue = [];\n\t while (++queueIndex < len) {\n\t if (currentQueue) {\n\t currentQueue[queueIndex].run();\n\t }\n\t }\n\t queueIndex = -1;\n\t len = queue.length;\n\t }\n\t currentQueue = null;\n\t draining = false;\n\t runClearTimeout(timeout);\n\t}\n\t\n\tprocess.nextTick = function (fun) {\n\t var args = new Array(arguments.length - 1);\n\t if (arguments.length > 1) {\n\t for (var i = 1; i < arguments.length; i++) {\n\t args[i - 1] = arguments[i];\n\t }\n\t }\n\t queue.push(new Item(fun, args));\n\t if (queue.length === 1 && !draining) {\n\t runTimeout(drainQueue);\n\t }\n\t};\n\t\n\t// v8 likes predictible objects\n\tfunction Item(fun, array) {\n\t this.fun = fun;\n\t this.array = array;\n\t}\n\tItem.prototype.run = function () {\n\t this.fun.apply(null, this.array);\n\t};\n\tprocess.title = 'browser';\n\tprocess.browser = true;\n\tprocess.env = {};\n\tprocess.argv = [];\n\tprocess.version = ''; // empty string to avoid regexp issues\n\tprocess.versions = {};\n\t\n\tfunction noop() {}\n\t\n\tprocess.on = noop;\n\tprocess.addListener = noop;\n\tprocess.once = noop;\n\tprocess.off = noop;\n\tprocess.removeListener = noop;\n\tprocess.removeAllListeners = noop;\n\tprocess.emit = noop;\n\t\n\tprocess.binding = function (name) {\n\t throw new Error('process.binding is not supported');\n\t};\n\t\n\tprocess.cwd = function () { return '/' };\n\tprocess.chdir = function (dir) {\n\t throw new Error('process.chdir is not supported');\n\t};\n\tprocess.umask = function() { return 0; };\n\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {var now = __webpack_require__(16)\n\t , root = typeof window === 'undefined' ? global : window\n\t , vendors = ['moz', 'webkit']\n\t , suffix = 'AnimationFrame'\n\t , raf = root['request' + suffix]\n\t , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\t\n\tfor(var i = 0; !raf && i < vendors.length; i++) {\n\t raf = root[vendors[i] + 'Request' + suffix]\n\t caf = root[vendors[i] + 'Cancel' + suffix]\n\t || root[vendors[i] + 'CancelRequest' + suffix]\n\t}\n\t\n\t// Some versions of FF have rAF but not cAF\n\tif(!raf || !caf) {\n\t var last = 0\n\t , id = 0\n\t , queue = []\n\t , frameDuration = 1000 / 60\n\t\n\t raf = function(callback) {\n\t if(queue.length === 0) {\n\t var _now = now()\n\t , next = Math.max(0, frameDuration - (_now - last))\n\t last = next + _now\n\t setTimeout(function() {\n\t var cp = queue.slice(0)\n\t // Clear queue here to prevent\n\t // callbacks from appending listeners\n\t // to the current frame's queue\n\t queue.length = 0\n\t for(var i = 0; i < cp.length; i++) {\n\t if(!cp[i].cancelled) {\n\t try{\n\t cp[i].callback(last)\n\t } catch(e) {\n\t setTimeout(function() { throw e }, 0)\n\t }\n\t }\n\t }\n\t }, Math.round(next))\n\t }\n\t queue.push({\n\t handle: ++id,\n\t callback: callback,\n\t cancelled: false\n\t })\n\t return id\n\t }\n\t\n\t caf = function(handle) {\n\t for(var i = 0; i < queue.length; i++) {\n\t if(queue[i].handle === handle) {\n\t queue[i].cancelled = true\n\t }\n\t }\n\t }\n\t}\n\t\n\tmodule.exports = function(fn) {\n\t // Wrap in a new function to prevent\n\t // `cancel` potentially being assigned\n\t // to the native rAF function\n\t return raf.call(root, fn)\n\t}\n\tmodule.exports.cancel = function() {\n\t caf.apply(root, arguments)\n\t}\n\tmodule.exports.polyfill = function() {\n\t root.requestAnimationFrame = raf\n\t root.cancelAnimationFrame = caf\n\t}\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {// Generated by CoffeeScript 1.12.2\n\t(function() {\n\t var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\t\n\t if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n\t module.exports = function() {\n\t return performance.now();\n\t };\n\t } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n\t module.exports = function() {\n\t return (getNanoSeconds() - nodeLoadTime) / 1e6;\n\t };\n\t hrtime = process.hrtime;\n\t getNanoSeconds = function() {\n\t var hr;\n\t hr = hrtime();\n\t return hr[0] * 1e9 + hr[1];\n\t };\n\t moduleLoadTime = getNanoSeconds();\n\t upTime = process.uptime() * 1e9;\n\t nodeLoadTime = moduleLoadTime - upTime;\n\t } else if (Date.now) {\n\t module.exports = function() {\n\t return Date.now() - loadTime;\n\t };\n\t loadTime = Date.now();\n\t } else {\n\t module.exports = function() {\n\t return new Date().getTime() - loadTime;\n\t };\n\t loadTime = new Date().getTime();\n\t }\n\t\n\t}).call(this);\n\t\n\t//# sourceMappingURL=performance-now.js.map\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(14)))\n\n/***/ },\n/* 17 */\n/***/ function(module, exports) {\n\n\t\n\t\n\t// usage assumption: currentStyle values have already been rendered but it says\n\t// nothing of whether currentStyle is stale (see unreadPropStyle)\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports['default'] = shouldStopAnimation;\n\t\n\tfunction shouldStopAnimation(currentStyle, style, currentVelocity) {\n\t for (var key in style) {\n\t if (!Object.prototype.hasOwnProperty.call(style, key)) {\n\t continue;\n\t }\n\t\n\t if (currentVelocity[key] !== 0) {\n\t return false;\n\t }\n\t\n\t var styleValue = typeof style[key] === 'number' ? style[key] : style[key].val;\n\t // stepper will have already taken care of rounding precision errors, so\n\t // won't have such thing as 0.9999 !=== 1\n\t if (currentStyle[key] !== styleValue) {\n\t return false;\n\t }\n\t }\n\t\n\t return true;\n\t}\n\t\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t */\n\t\n\tif (process.env.NODE_ENV !== 'production') {\n\t var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n\t Symbol.for &&\n\t Symbol.for('react.element')) ||\n\t 0xeac7;\n\t\n\t var isValidElement = function(object) {\n\t return typeof object === 'object' &&\n\t object !== null &&\n\t object.$$typeof === REACT_ELEMENT_TYPE;\n\t };\n\t\n\t // By explicitly using `prop-types` you are opting into new development behavior.\n\t // http://fb.me/prop-types-in-prod\n\t var throwOnDirectAccess = true;\n\t module.exports = __webpack_require__(19)(isValidElement, throwOnDirectAccess);\n\t} else {\n\t // By explicitly using `prop-types` you are opting into new production behavior.\n\t // http://fb.me/prop-types-in-prod\n\t module.exports = __webpack_require__(25)();\n\t}\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(14)))\n\n/***/ },\n/* 19 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t */\n\t\n\t'use strict';\n\t\n\tvar emptyFunction = __webpack_require__(20);\n\tvar invariant = __webpack_require__(21);\n\tvar warning = __webpack_require__(22);\n\t\n\tvar ReactPropTypesSecret = __webpack_require__(23);\n\tvar checkPropTypes = __webpack_require__(24);\n\t\n\tmodule.exports = function(isValidElement, throwOnDirectAccess) {\n\t /* global Symbol */\n\t var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n\t var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\t\n\t /**\n\t * Returns the iterator method function contained on the iterable object.\n\t *\n\t * Be sure to invoke the function with the iterable as context:\n\t *\n\t * var iteratorFn = getIteratorFn(myIterable);\n\t * if (iteratorFn) {\n\t * var iterator = iteratorFn.call(myIterable);\n\t * ...\n\t * }\n\t *\n\t * @param {?object} maybeIterable\n\t * @return {?function}\n\t */\n\t function getIteratorFn(maybeIterable) {\n\t var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n\t if (typeof iteratorFn === 'function') {\n\t return iteratorFn;\n\t }\n\t }\n\t\n\t /**\n\t * Collection of methods that allow declaration and validation of props that are\n\t * supplied to React components. Example usage:\n\t *\n\t * var Props = require('ReactPropTypes');\n\t * var MyArticle = React.createClass({\n\t * propTypes: {\n\t * // An optional string prop named \"description\".\n\t * description: Props.string,\n\t *\n\t * // A required enum prop named \"category\".\n\t * category: Props.oneOf(['News','Photos']).isRequired,\n\t *\n\t * // A prop named \"dialog\" that requires an instance of Dialog.\n\t * dialog: Props.instanceOf(Dialog).isRequired\n\t * },\n\t * render: function() { ... }\n\t * });\n\t *\n\t * A more formal specification of how these methods are used:\n\t *\n\t * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n\t * decl := ReactPropTypes.{type}(.isRequired)?\n\t *\n\t * Each and every declaration produces a function with the same signature. This\n\t * allows the creation of custom validation functions. For example:\n\t *\n\t * var MyLink = React.createClass({\n\t * propTypes: {\n\t * // An optional string or URI prop named \"href\".\n\t * href: function(props, propName, componentName) {\n\t * var propValue = props[propName];\n\t * if (propValue != null && typeof propValue !== 'string' &&\n\t * !(propValue instanceof URI)) {\n\t * return new Error(\n\t * 'Expected a string or an URI for ' + propName + ' in ' +\n\t * componentName\n\t * );\n\t * }\n\t * }\n\t * },\n\t * render: function() {...}\n\t * });\n\t *\n\t * @internal\n\t */\n\t\n\t var ANONYMOUS = '<<anonymous>>';\n\t\n\t // Important!\n\t // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n\t var ReactPropTypes = {\n\t array: createPrimitiveTypeChecker('array'),\n\t bool: createPrimitiveTypeChecker('boolean'),\n\t func: createPrimitiveTypeChecker('function'),\n\t number: createPrimitiveTypeChecker('number'),\n\t object: createPrimitiveTypeChecker('object'),\n\t string: createPrimitiveTypeChecker('string'),\n\t symbol: createPrimitiveTypeChecker('symbol'),\n\t\n\t any: createAnyTypeChecker(),\n\t arrayOf: createArrayOfTypeChecker,\n\t element: createElementTypeChecker(),\n\t instanceOf: createInstanceTypeChecker,\n\t node: createNodeChecker(),\n\t objectOf: createObjectOfTypeChecker,\n\t oneOf: createEnumTypeChecker,\n\t oneOfType: createUnionTypeChecker,\n\t shape: createShapeTypeChecker\n\t };\n\t\n\t /**\n\t * inlined Object.is polyfill to avoid requiring consumers ship their own\n\t * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n\t */\n\t /*eslint-disable no-self-compare*/\n\t function is(x, y) {\n\t // SameValue algorithm\n\t if (x === y) {\n\t // Steps 1-5, 7-10\n\t // Steps 6.b-6.e: +0 != -0\n\t return x !== 0 || 1 / x === 1 / y;\n\t } else {\n\t // Step 6.a: NaN == NaN\n\t return x !== x && y !== y;\n\t }\n\t }\n\t /*eslint-enable no-self-compare*/\n\t\n\t /**\n\t * We use an Error-like object for backward compatibility as people may call\n\t * PropTypes directly and inspect their output. However, we don't use real\n\t * Errors anymore. We don't inspect their stack anyway, and creating them\n\t * is prohibitively expensive if they are created too often, such as what\n\t * happens in oneOfType() for any type before the one that matched.\n\t */\n\t function PropTypeError(message) {\n\t this.message = message;\n\t this.stack = '';\n\t }\n\t // Make `instanceof Error` still work for returned errors.\n\t PropTypeError.prototype = Error.prototype;\n\t\n\t function createChainableTypeChecker(validate) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t var manualPropTypeCallCache = {};\n\t var manualPropTypeWarningCount = 0;\n\t }\n\t function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n\t componentName = componentName || ANONYMOUS;\n\t propFullName = propFullName || propName;\n\t\n\t if (secret !== ReactPropTypesSecret) {\n\t if (throwOnDirectAccess) {\n\t // New behavior only for users of `prop-types` package\n\t invariant(\n\t false,\n\t 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n\t 'Use `PropTypes.checkPropTypes()` to call them. ' +\n\t 'Read more at http://fb.me/use-check-prop-types'\n\t );\n\t } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n\t // Old behavior for people using React.PropTypes\n\t var cacheKey = componentName + ':' + propName;\n\t if (\n\t !manualPropTypeCallCache[cacheKey] &&\n\t // Avoid spamming the console because they are often not actionable except for lib authors\n\t manualPropTypeWarningCount < 3\n\t ) {\n\t warning(\n\t false,\n\t 'You are manually calling a React.PropTypes validation ' +\n\t 'function for the `%s` prop on `%s`. This is deprecated ' +\n\t 'and will throw in the standalone `prop-types` package. ' +\n\t 'You may be seeing this warning due to a third-party PropTypes ' +\n\t 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',\n\t propFullName,\n\t componentName\n\t );\n\t manualPropTypeCallCache[cacheKey] = true;\n\t manualPropTypeWarningCount++;\n\t }\n\t }\n\t }\n\t if (props[propName] == null) {\n\t if (isRequired) {\n\t if (props[propName] === null) {\n\t return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n\t }\n\t return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n\t }\n\t return null;\n\t } else {\n\t return validate(props, propName, componentName, location, propFullName);\n\t }\n\t }\n\t\n\t var chainedCheckType = checkType.bind(null, false);\n\t chainedCheckType.isRequired = checkType.bind(null, true);\n\t\n\t return chainedCheckType;\n\t }\n\t\n\t function createPrimitiveTypeChecker(expectedType) {\n\t function validate(props, propName, componentName, location, propFullName, secret) {\n\t var propValue = props[propName];\n\t var propType = getPropType(propValue);\n\t if (propType !== expectedType) {\n\t // `propValue` being instance of, say, date/regexp, pass the 'object'\n\t // check, but we can offer a more precise error message here rather than\n\t // 'of type `object`'.\n\t var preciseType = getPreciseType(propValue);\n\t\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createAnyTypeChecker() {\n\t return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n\t }\n\t\n\t function createArrayOfTypeChecker(typeChecker) {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t if (typeof typeChecker !== 'function') {\n\t return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n\t }\n\t var propValue = props[propName];\n\t if (!Array.isArray(propValue)) {\n\t var propType = getPropType(propValue);\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n\t }\n\t for (var i = 0; i < propValue.length; i++) {\n\t var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n\t if (error instanceof Error) {\n\t return error;\n\t }\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createElementTypeChecker() {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t var propValue = props[propName];\n\t if (!isValidElement(propValue)) {\n\t var propType = getPropType(propValue);\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createInstanceTypeChecker(expectedClass) {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t if (!(props[propName] instanceof expectedClass)) {\n\t var expectedClassName = expectedClass.name || ANONYMOUS;\n\t var actualClassName = getClassName(props[propName]);\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createEnumTypeChecker(expectedValues) {\n\t if (!Array.isArray(expectedValues)) {\n\t process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n\t return emptyFunction.thatReturnsNull;\n\t }\n\t\n\t function validate(props, propName, componentName, location, propFullName) {\n\t var propValue = props[propName];\n\t for (var i = 0; i < expectedValues.length; i++) {\n\t if (is(propValue, expectedValues[i])) {\n\t return null;\n\t }\n\t }\n\t\n\t var valuesString = JSON.stringify(expectedValues);\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createObjectOfTypeChecker(typeChecker) {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t if (typeof typeChecker !== 'function') {\n\t return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n\t }\n\t var propValue = props[propName];\n\t var propType = getPropType(propValue);\n\t if (propType !== 'object') {\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n\t }\n\t for (var key in propValue) {\n\t if (propValue.hasOwnProperty(key)) {\n\t var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n\t if (error instanceof Error) {\n\t return error;\n\t }\n\t }\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createUnionTypeChecker(arrayOfTypeCheckers) {\n\t if (!Array.isArray(arrayOfTypeCheckers)) {\n\t process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n\t return emptyFunction.thatReturnsNull;\n\t }\n\t\n\t function validate(props, propName, componentName, location, propFullName) {\n\t for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n\t var checker = arrayOfTypeCheckers[i];\n\t if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n\t return null;\n\t }\n\t }\n\t\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createNodeChecker() {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t if (!isNode(props[propName])) {\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createShapeTypeChecker(shapeTypes) {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t var propValue = props[propName];\n\t var propType = getPropType(propValue);\n\t if (propType !== 'object') {\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n\t }\n\t for (var key in shapeTypes) {\n\t var checker = shapeTypes[key];\n\t if (!checker) {\n\t continue;\n\t }\n\t var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n\t if (error) {\n\t return error;\n\t }\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function isNode(propValue) {\n\t switch (typeof propValue) {\n\t case 'number':\n\t case 'string':\n\t case 'undefined':\n\t return true;\n\t case 'boolean':\n\t return !propValue;\n\t case 'object':\n\t if (Array.isArray(propValue)) {\n\t return propValue.every(isNode);\n\t }\n\t if (propValue === null || isValidElement(propValue)) {\n\t return true;\n\t }\n\t\n\t var iteratorFn = getIteratorFn(propValue);\n\t if (iteratorFn) {\n\t var iterator = iteratorFn.call(propValue);\n\t var step;\n\t if (iteratorFn !== propValue.entries) {\n\t while (!(step = iterator.next()).done) {\n\t if (!isNode(step.value)) {\n\t return false;\n\t }\n\t }\n\t } else {\n\t // Iterator will provide entry [k,v] tuples rather than values.\n\t while (!(step = iterator.next()).done) {\n\t var entry = step.value;\n\t if (entry) {\n\t if (!isNode(entry[1])) {\n\t return false;\n\t }\n\t }\n\t }\n\t }\n\t } else {\n\t return false;\n\t }\n\t\n\t return true;\n\t default:\n\t return false;\n\t }\n\t }\n\t\n\t function isSymbol(propType, propValue) {\n\t // Native Symbol.\n\t if (propType === 'symbol') {\n\t return true;\n\t }\n\t\n\t // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n\t if (propValue['@@toStringTag'] === 'Symbol') {\n\t return true;\n\t }\n\t\n\t // Fallback for non-spec compliant Symbols which are polyfilled.\n\t if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n\t return true;\n\t }\n\t\n\t return false;\n\t }\n\t\n\t // Equivalent of `typeof` but with special handling for array and regexp.\n\t function getPropType(propValue) {\n\t var propType = typeof propValue;\n\t if (Array.isArray(propValue)) {\n\t return 'array';\n\t }\n\t if (propValue instanceof RegExp) {\n\t // Old webkits (at least until Android 4.0) return 'function' rather than\n\t // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n\t // passes PropTypes.object.\n\t return 'object';\n\t }\n\t if (isSymbol(propType, propValue)) {\n\t return 'symbol';\n\t }\n\t return propType;\n\t }\n\t\n\t // This handles more types than `getPropType`. Only used for error messages.\n\t // See `createPrimitiveTypeChecker`.\n\t function getPreciseType(propValue) {\n\t var propType = getPropType(propValue);\n\t if (propType === 'object') {\n\t if (propValue instanceof Date) {\n\t return 'date';\n\t } else if (propValue instanceof RegExp) {\n\t return 'regexp';\n\t }\n\t }\n\t return propType;\n\t }\n\t\n\t // Returns class name of the object, if any.\n\t function getClassName(propValue) {\n\t if (!propValue.constructor || !propValue.constructor.name) {\n\t return ANONYMOUS;\n\t }\n\t return propValue.constructor.name;\n\t }\n\t\n\t ReactPropTypes.checkPropTypes = checkPropTypes;\n\t ReactPropTypes.PropTypes = ReactPropTypes;\n\t\n\t return ReactPropTypes;\n\t};\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(14)))\n\n/***/ },\n/* 20 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\tfunction makeEmptyFunction(arg) {\n\t return function () {\n\t return arg;\n\t };\n\t}\n\t\n\t/**\n\t * This function accepts and discards inputs; it has no side effects. This is\n\t * primarily useful idiomatically for overridable function endpoints which\n\t * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n\t */\n\tvar emptyFunction = function emptyFunction() {};\n\t\n\temptyFunction.thatReturns = makeEmptyFunction;\n\temptyFunction.thatReturnsFalse = makeEmptyFunction(false);\n\temptyFunction.thatReturnsTrue = makeEmptyFunction(true);\n\temptyFunction.thatReturnsNull = makeEmptyFunction(null);\n\temptyFunction.thatReturnsThis = function () {\n\t return this;\n\t};\n\temptyFunction.thatReturnsArgument = function (arg) {\n\t return arg;\n\t};\n\t\n\tmodule.exports = emptyFunction;\n\n/***/ },\n/* 21 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\t/**\n\t * Use invariant() to assert state which your program assumes to be true.\n\t *\n\t * Provide sprintf-style format (only %s is supported) and arguments\n\t * to provide information about what broke and what you were\n\t * expecting.\n\t *\n\t * The invariant message will be stripped in production, but the invariant\n\t * will remain to ensure logic does not differ in production.\n\t */\n\t\n\tvar validateFormat = function validateFormat(format) {};\n\t\n\tif (process.env.NODE_ENV !== 'production') {\n\t validateFormat = function validateFormat(format) {\n\t if (format === undefined) {\n\t throw new Error('invariant requires an error message argument');\n\t }\n\t };\n\t}\n\t\n\tfunction invariant(condition, format, a, b, c, d, e, f) {\n\t validateFormat(format);\n\t\n\t if (!condition) {\n\t var error;\n\t if (format === undefined) {\n\t error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n\t } else {\n\t var args = [a, b, c, d, e, f];\n\t var argIndex = 0;\n\t error = new Error(format.replace(/%s/g, function () {\n\t return args[argIndex++];\n\t }));\n\t error.name = 'Invariant Violation';\n\t }\n\t\n\t error.framesToPop = 1; // we don't care about invariant's own frame\n\t throw error;\n\t }\n\t}\n\t\n\tmodule.exports = invariant;\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(14)))\n\n/***/ },\n/* 22 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {/**\n\t * Copyright 2014-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar emptyFunction = __webpack_require__(20);\n\t\n\t/**\n\t * Similar to invariant but only logs a warning if the condition is not met.\n\t * This can be used to log issues in development environments in critical\n\t * paths. Removing the logging code for production environments will keep the\n\t * same logic and follow the same code paths.\n\t */\n\t\n\tvar warning = emptyFunction;\n\t\n\tif (process.env.NODE_ENV !== 'production') {\n\t (function () {\n\t var printWarning = function printWarning(format) {\n\t for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t args[_key - 1] = arguments[_key];\n\t }\n\t\n\t var argIndex = 0;\n\t var message = 'Warning: ' + format.replace(/%s/g, function () {\n\t return args[argIndex++];\n\t });\n\t if (typeof console !== 'undefined') {\n\t console.error(message);\n\t }\n\t try {\n\t // --- Welcome to debugging React ---\n\t // This error was thrown as a convenience so that you can use this stack\n\t // to find the callsite that caused this warning to fire.\n\t throw new Error(message);\n\t } catch (x) {}\n\t };\n\t\n\t warning = function warning(condition, format) {\n\t if (format === undefined) {\n\t throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n\t }\n\t\n\t if (format.indexOf('Failed Composite propType: ') === 0) {\n\t return; // Ignore CompositeComponent proptype check.\n\t }\n\t\n\t if (!condition) {\n\t for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n\t args[_key2 - 2] = arguments[_key2];\n\t }\n\t\n\t printWarning.apply(undefined, [format].concat(args));\n\t }\n\t };\n\t })();\n\t}\n\t\n\tmodule.exports = warning;\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(14)))\n\n/***/ },\n/* 23 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t */\n\t\n\t'use strict';\n\t\n\tvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\t\n\tmodule.exports = ReactPropTypesSecret;\n\n\n/***/ },\n/* 24 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t */\n\t\n\t'use strict';\n\t\n\tif (process.env.NODE_ENV !== 'production') {\n\t var invariant = __webpack_require__(21);\n\t var warning = __webpack_require__(22);\n\t var ReactPropTypesSecret = __webpack_require__(23);\n\t var loggedTypeFailures = {};\n\t}\n\t\n\t/**\n\t * Assert that the values match with the type specs.\n\t * Error messages are memorized and will only be shown once.\n\t *\n\t * @param {object} typeSpecs Map of name to a ReactPropType\n\t * @param {object} values Runtime values that need to be type-checked\n\t * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n\t * @param {string} componentName Name of the component for error messages.\n\t * @param {?Function} getStack Returns the component stack.\n\t * @private\n\t */\n\tfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t for (var typeSpecName in typeSpecs) {\n\t if (typeSpecs.hasOwnProperty(typeSpecName)) {\n\t var error;\n\t // Prop type validation may throw. In case they do, we don't want to\n\t // fail the render phase where it didn't fail before. So we log it.\n\t // After these have been cleaned up, we'll let them throw.\n\t try {\n\t // This is intentionally an invariant that gets caught. It's the same\n\t // behavior as without this statement except with a better message.\n\t invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', componentName || 'React class', location, typeSpecName);\n\t error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n\t } catch (ex) {\n\t error = ex;\n\t }\n\t warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);\n\t if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n\t // Only monitor this failure once because there tends to be a lot of the\n\t // same error.\n\t loggedTypeFailures[error.message] = true;\n\t\n\t var stack = getStack ? getStack() : '';\n\t\n\t warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n\t }\n\t }\n\t }\n\t }\n\t}\n\t\n\tmodule.exports = checkPropTypes;\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(14)))\n\n/***/ },\n/* 25 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t */\n\t\n\t'use strict';\n\t\n\tvar emptyFunction = __webpack_require__(20);\n\tvar invariant = __webpack_require__(21);\n\t\n\tmodule.exports = function() {\n\t // Important!\n\t // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n\t function shim() {\n\t invariant(\n\t false,\n\t 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n\t 'Use PropTypes.checkPropTypes() to call them. ' +\n\t 'Read more at http://fb.me/use-check-prop-types'\n\t );\n\t };\n\t shim.isRequired = shim;\n\t function getShim() {\n\t return shim;\n\t };\n\t var ReactPropTypes = {\n\t array: shim,\n\t bool: shim,\n\t func: shim,\n\t number: shim,\n\t object: shim,\n\t string: shim,\n\t symbol: shim,\n\t\n\t any: shim,\n\t arrayOf: getShim,\n\t element: shim,\n\t instanceOf: getShim,\n\t node: shim,\n\t objectOf: getShim,\n\t oneOf: getShim,\n\t oneOfType: getShim,\n\t shape: getShim\n\t };\n\t\n\t ReactPropTypes.checkPropTypes = emptyFunction;\n\t ReactPropTypes.PropTypes = ReactPropTypes;\n\t\n\t return ReactPropTypes;\n\t};\n\n\n/***/ },\n/* 26 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _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; }; })();\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _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; }\n\t\n\tvar _mapToZero = __webpack_require__(10);\n\t\n\tvar _mapToZero2 = _interopRequireDefault(_mapToZero);\n\t\n\tvar _stripStyle = __webpack_require__(11);\n\t\n\tvar _stripStyle2 = _interopRequireDefault(_stripStyle);\n\t\n\tvar _stepper3 = __webpack_require__(12);\n\t\n\tvar _stepper4 = _interopRequireDefault(_stepper3);\n\t\n\tvar _performanceNow = __webpack_require__(13);\n\t\n\tvar _performanceNow2 = _interopRequireDefault(_performanceNow);\n\t\n\tvar _raf = __webpack_require__(15);\n\t\n\tvar _raf2 = _interopRequireDefault(_raf);\n\t\n\tvar _shouldStopAnimation = __webpack_require__(17);\n\t\n\tvar _shouldStopAnimation2 = _interopRequireDefault(_shouldStopAnimation);\n\t\n\tvar _react = __webpack_require__(6);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _propTypes = __webpack_require__(18);\n\t\n\tvar _propTypes2 = _interopRequireDefault(_propTypes);\n\t\n\tvar msPerFrame = 1000 / 60;\n\t\n\tfunction shouldStopAnimationAll(currentStyles, styles, currentVelocities) {\n\t for (var i = 0; i < currentStyles.length; i++) {\n\t if (!_shouldStopAnimation2['default'](currentStyles[i], styles[i], currentVelocities[i])) {\n\t return false;\n\t }\n\t }\n\t return true;\n\t}\n\t\n\tvar StaggeredMotion = (function (_React$Component) {\n\t _inherits(StaggeredMotion, _React$Component);\n\t\n\t _createClass(StaggeredMotion, null, [{\n\t key: 'propTypes',\n\t value: {\n\t // TOOD: warn against putting a config in here\n\t defaultStyles: _propTypes2['default'].arrayOf(_propTypes2['default'].objectOf(_propTypes2['default'].number)),\n\t styles: _propTypes2['default'].func.isRequired,\n\t children: _propTypes2['default'].func.isRequired\n\t },\n\t enumerable: true\n\t }]);\n\t\n\t function StaggeredMotion(props) {\n\t var _this = this;\n\t\n\t _classCallCheck(this, StaggeredMotion);\n\t\n\t _React$Component.call(this, props);\n\t this.animationID = null;\n\t this.prevTime = 0;\n\t this.accumulatedTime = 0;\n\t this.unreadPropStyles = null;\n\t\n\t this.clearUnreadPropStyle = function (unreadPropStyles) {\n\t var _state = _this.state;\n\t var currentStyles = _state.currentStyles;\n\t var currentVelocities = _state.currentVelocities;\n\t var lastIdealStyles = _state.lastIdealStyles;\n\t var lastIdealVelocities = _state.lastIdealVelocities;\n\t\n\t var someDirty = false;\n\t for (var i = 0; i < unreadPropStyles.length; i++) {\n\t var unreadPropStyle = unreadPropStyles[i];\n\t var dirty = false;\n\t\n\t for (var key in unreadPropStyle) {\n\t if (!Object.prototype.hasOwnProperty.call(unreadPropStyle, key)) {\n\t continue;\n\t }\n\t\n\t var styleValue = unreadPropStyle[key];\n\t if (typeof styleValue === 'number') {\n\t if (!dirty) {\n\t dirty = true;\n\t someDirty = true;\n\t currentStyles[i] = _extends({}, currentStyles[i]);\n\t currentVelocities[i] = _extends({}, currentVelocities[i]);\n\t lastIdealStyles[i] = _extends({}, lastIdealStyles[i]);\n\t lastIdealVelocities[i] = _extends({}, lastIdealVelocities[i]);\n\t }\n\t currentStyles[i][key] = styleValue;\n\t currentVelocities[i][key] = 0;\n\t lastIdealStyles[i][key] = styleValue;\n\t lastIdealVelocities[i][key] = 0;\n\t }\n\t }\n\t }\n\t\n\t if (someDirty) {\n\t _this.setState({ currentStyles: currentStyles, currentVelocities: currentVelocities, lastIdealStyles: lastIdealStyles, lastIdealVelocities: lastIdealVelocities });\n\t }\n\t };\n\t\n\t this.startAnimationIfNecessary = function () {\n\t // TODO: when config is {a: 10} and dest is {a: 10} do we raf once and\n\t // call cb? No, otherwise accidental parent rerender causes cb trigger\n\t _this.animationID = _raf2['default'](function (timestamp) {\n\t var destStyles = _this.props.styles(_this.state.lastIdealStyles);\n\t\n\t // check if we need to animate in the first place\n\t if (shouldStopAnimationAll(_this.state.currentStyles, destStyles, _this.state.currentVelocities)) {\n\t // no need to cancel animationID here; shouldn't have any in flight\n\t _this.animationID = null;\n\t _this.accumulatedTime = 0;\n\t return;\n\t }\n\t\n\t var currentTime = timestamp || _performanceNow2['default']();\n\t var timeDelta = currentTime - _this.prevTime;\n\t _this.prevTime = currentTime;\n\t _this.accumulatedTime = _this.accumulatedTime + timeDelta;\n\t // more than 10 frames? prolly switched browser tab. Restart\n\t if (_this.accumulatedTime > msPerFrame * 10) {\n\t _this.accumulatedTime = 0;\n\t }\n\t\n\t if (_this.accumulatedTime === 0) {\n\t // no need to cancel animationID here; shouldn't have any in flight\n\t _this.animationID = null;\n\t _this.startAnimationIfNecessary();\n\t return;\n\t }\n\t\n\t var currentFrameCompletion = (_this.accumulatedTime - Math.floor(_this.accumulatedTime / msPerFrame) * msPerFrame) / msPerFrame;\n\t var framesToCatchUp = Math.floor(_this.accumulatedTime / msPerFrame);\n\t\n\t var newLastIdealStyles = [];\n\t var newLastIdealVelocities = [];\n\t var newCurrentStyles = [];\n\t var newCurrentVelocities = [];\n\t\n\t for (var i = 0; i < destStyles.length; i++) {\n\t var destStyle = destStyles[i];\n\t var newCurrentStyle = {};\n\t var newCurrentVelocity = {};\n\t var newLastIdealStyle = {};\n\t var newLastIdealVelocity = {};\n\t\n\t for (var key in destStyle) {\n\t if (!Object.prototype.hasOwnProperty.call(destStyle, key)) {\n\t continue;\n\t }\n\t\n\t var styleValue = destStyle[key];\n\t if (typeof styleValue === 'number') {\n\t newCurrentStyle[key] = styleValue;\n\t newCurrentVelocity[key] = 0;\n\t newLastIdealStyle[key] = styleValue;\n\t newLastIdealVelocity[key] = 0;\n\t } else {\n\t var newLastIdealStyleValue = _this.state.lastIdealStyles[i][key];\n\t var newLastIdealVelocityValue = _this.state.lastIdealVelocities[i][key];\n\t for (var j = 0; j < framesToCatchUp; j++) {\n\t var _stepper = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\t\n\t newLastIdealStyleValue = _stepper[0];\n\t newLastIdealVelocityValue = _stepper[1];\n\t }\n\t\n\t var _stepper2 = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\t\n\t var nextIdealX = _stepper2[0];\n\t var nextIdealV = _stepper2[1];\n\t\n\t newCurrentStyle[key] = newLastIdealStyleValue + (nextIdealX - newLastIdealStyleValue) * currentFrameCompletion;\n\t newCurrentVelocity[key] = newLastIdealVelocityValue + (nextIdealV - newLastIdealVelocityValue) * currentFrameCompletion;\n\t newLastIdealStyle[key] = newLastIdealStyleValue;\n\t newLastIdealVelocity[key] = newLastIdealVelocityValue;\n\t }\n\t }\n\t\n\t newCurrentStyles[i] = newCurrentStyle;\n\t newCurrentVelocities[i] = newCurrentVelocity;\n\t newLastIdealStyles[i] = newLastIdealStyle;\n\t newLastIdealVelocities[i] = newLastIdealVelocity;\n\t }\n\t\n\t _this.animationID = null;\n\t // the amount we're looped over above\n\t _this.accumulatedTime -= framesToCatchUp * msPerFrame;\n\t\n\t _this.setState({\n\t currentStyles: newCurrentStyles,\n\t currentVelocities: newCurrentVelocities,\n\t lastIdealStyles: newLastIdealStyles,\n\t lastIdealVelocities: newLastIdealVelocities\n\t });\n\t\n\t _this.unreadPropStyles = null;\n\t\n\t _this.startAnimationIfNecessary();\n\t });\n\t };\n\t\n\t this.state = this.defaultState();\n\t }\n\t\n\t StaggeredMotion.prototype.defaultState = function defaultState() {\n\t var _props = this.props;\n\t var defaultStyles = _props.defaultStyles;\n\t var styles = _props.styles;\n\t\n\t var currentStyles = defaultStyles || styles().map(_stripStyle2['default']);\n\t var currentVelocities = currentStyles.map(function (currentStyle) {\n\t return _mapToZero2['default'](currentStyle);\n\t });\n\t return {\n\t currentStyles: currentStyles,\n\t currentVelocities: currentVelocities,\n\t lastIdealStyles: currentStyles,\n\t lastIdealVelocities: currentVelocities\n\t };\n\t };\n\t\n\t StaggeredMotion.prototype.componentDidMount = function componentDidMount() {\n\t this.prevTime = _performanceNow2['default']();\n\t this.startAnimationIfNecessary();\n\t };\n\t\n\t StaggeredMotion.prototype.componentWillReceiveProps = function componentWillReceiveProps(props) {\n\t if (this.unreadPropStyles != null) {\n\t // previous props haven't had the chance to be set yet; set them here\n\t this.clearUnreadPropStyle(this.unreadPropStyles);\n\t }\n\t\n\t this.unreadPropStyles = props.styles(this.state.lastIdealStyles);\n\t if (this.animationID == null) {\n\t this.prevTime = _performanceNow2['default']();\n\t this.startAnimationIfNecessary();\n\t }\n\t };\n\t\n\t StaggeredMotion.prototype.componentWillUnmount = function componentWillUnmount() {\n\t if (this.animationID != null) {\n\t _raf2['default'].cancel(this.animationID);\n\t this.animationID = null;\n\t }\n\t };\n\t\n\t StaggeredMotion.prototype.render = function render() {\n\t var renderedChildren = this.props.children(this.state.currentStyles);\n\t return renderedChildren && _react2['default'].Children.only(renderedChildren);\n\t };\n\t\n\t return StaggeredMotion;\n\t})(_react2['default'].Component);\n\t\n\texports['default'] = StaggeredMotion;\n\tmodule.exports = exports['default'];\n\t\n\t// it's possible that currentStyle's value is stale: if props is immediately\n\t// changed from 0 to 400 to spring(0) again, the async currentStyle is still\n\t// at 0 (didn't have time to tick and interpolate even once). If we naively\n\t// compare currentStyle with destVal it'll be 0 === 0 (no animation, stop).\n\t// In reality currentStyle should be 400\n\t\n\t// after checking for unreadPropStyles != null, we manually go set the\n\t// non-interpolating values (those that are a number, without a spring\n\t// config)\n\n/***/ },\n/* 27 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _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; }; })();\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _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; }\n\t\n\tvar _mapToZero = __webpack_require__(10);\n\t\n\tvar _mapToZero2 = _interopRequireDefault(_mapToZero);\n\t\n\tvar _stripStyle = __webpack_require__(11);\n\t\n\tvar _stripStyle2 = _interopRequireDefault(_stripStyle);\n\t\n\tvar _stepper3 = __webpack_require__(12);\n\t\n\tvar _stepper4 = _interopRequireDefault(_stepper3);\n\t\n\tvar _mergeDiff = __webpack_require__(28);\n\t\n\tvar _mergeDiff2 = _interopRequireDefault(_mergeDiff);\n\t\n\tvar _performanceNow = __webpack_require__(13);\n\t\n\tvar _performanceNow2 = _interopRequireDefault(_performanceNow);\n\t\n\tvar _raf = __webpack_require__(15);\n\t\n\tvar _raf2 = _interopRequireDefault(_raf);\n\t\n\tvar _shouldStopAnimation = __webpack_require__(17);\n\t\n\tvar _shouldStopAnimation2 = _interopRequireDefault(_shouldStopAnimation);\n\t\n\tvar _react = __webpack_require__(6);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _propTypes = __webpack_require__(18);\n\t\n\tvar _propTypes2 = _interopRequireDefault(_propTypes);\n\t\n\tvar msPerFrame = 1000 / 60;\n\t\n\t// the children function & (potential) styles function asks as param an\n\t// Array<TransitionPlainStyle>, where each TransitionPlainStyle is of the format\n\t// {key: string, data?: any, style: PlainStyle}. However, the way we keep\n\t// internal states doesn't contain such a data structure (check the state and\n\t// TransitionMotionState). So when children function and others ask for such\n\t// data we need to generate them on the fly by combining mergedPropsStyles and\n\t// currentStyles/lastIdealStyles\n\tfunction rehydrateStyles(mergedPropsStyles, unreadPropStyles, plainStyles) {\n\t // Copy the value to a `const` so that Flow understands that the const won't\n\t // change and will be non-nullable in the callback below.\n\t var cUnreadPropStyles = unreadPropStyles;\n\t if (cUnreadPropStyles == null) {\n\t return mergedPropsStyles.map(function (mergedPropsStyle, i) {\n\t return {\n\t key: mergedPropsStyle.key,\n\t data: mergedPropsStyle.data,\n\t style: plainStyles[i]\n\t };\n\t });\n\t }\n\t return mergedPropsStyles.map(function (mergedPropsStyle, i) {\n\t for (var j = 0; j < cUnreadPropStyles.length; j++) {\n\t if (cUnreadPropStyles[j].key === mergedPropsStyle.key) {\n\t return {\n\t key: cUnreadPropStyles[j].key,\n\t data: cUnreadPropStyles[j].data,\n\t style: plainStyles[i]\n\t };\n\t }\n\t }\n\t return { key: mergedPropsStyle.key, data: mergedPropsStyle.data, style: plainStyles[i] };\n\t });\n\t}\n\t\n\tfunction shouldStopAnimationAll(currentStyles, destStyles, currentVelocities, mergedPropsStyles) {\n\t if (mergedPropsStyles.length !== destStyles.length) {\n\t return false;\n\t }\n\t\n\t for (var i = 0; i < mergedPropsStyles.length; i++) {\n\t if (mergedPropsStyles[i].key !== destStyles[i].key) {\n\t return false;\n\t }\n\t }\n\t\n\t // we have the invariant that mergedPropsStyles and\n\t // currentStyles/currentVelocities/last* are synced in terms of cells, see\n\t // mergeAndSync comment for more info\n\t for (var i = 0; i < mergedPropsStyles.length; i++) {\n\t if (!_shouldStopAnimation2['default'](currentStyles[i], destStyles[i].style, currentVelocities[i])) {\n\t return false;\n\t }\n\t }\n\t\n\t return true;\n\t}\n\t\n\t// core key merging logic\n\t\n\t// things to do: say previously merged style is {a, b}, dest style (prop) is {b,\n\t// c}, previous current (interpolating) style is {a, b}\n\t// **invariant**: current[i] corresponds to merged[i] in terms of key\n\t\n\t// steps:\n\t// turn merged style into {a?, b, c}\n\t// add c, value of c is destStyles.c\n\t// maybe remove a, aka call willLeave(a), then merged is either {b, c} or {a, b, c}\n\t// turn current (interpolating) style from {a, b} into {a?, b, c}\n\t// maybe remove a\n\t// certainly add c, value of c is willEnter(c)\n\t// loop over merged and construct new current\n\t// dest doesn't change, that's owner's\n\tfunction mergeAndSync(willEnter, willLeave, didLeave, oldMergedPropsStyles, destStyles, oldCurrentStyles, oldCurrentVelocities, oldLastIdealStyles, oldLastIdealVelocities) {\n\t var newMergedPropsStyles = _mergeDiff2['default'](oldMergedPropsStyles, destStyles, function (oldIndex, oldMergedPropsStyle) {\n\t var leavingStyle = willLeave(oldMergedPropsStyle);\n\t if (leavingStyle == null) {\n\t didLeave({ key: oldMergedPropsStyle.key, data: oldMergedPropsStyle.data });\n\t return null;\n\t }\n\t if (_shouldStopAnimation2['default'](oldCurrentStyles[oldIndex], leavingStyle, oldCurrentVelocities[oldIndex])) {\n\t didLeave({ key: oldMergedPropsStyle.key, data: oldMergedPropsStyle.data });\n\t return null;\n\t }\n\t return { key: oldMergedPropsStyle.key, data: oldMergedPropsStyle.data, style: leavingStyle };\n\t });\n\t\n\t var newCurrentStyles = [];\n\t var newCurrentVelocities = [];\n\t var newLastIdealStyles = [];\n\t var newLastIdealVelocities = [];\n\t for (var i = 0; i < newMergedPropsStyles.length; i++) {\n\t var newMergedPropsStyleCell = newMergedPropsStyles[i];\n\t var foundOldIndex = null;\n\t for (var j = 0; j < oldMergedPropsStyles.length; j++) {\n\t if (oldMergedPropsStyles[j].key === newMergedPropsStyleCell.key) {\n\t foundOldIndex = j;\n\t break;\n\t }\n\t }\n\t // TODO: key search code\n\t if (foundOldIndex == null) {\n\t var plainStyle = willEnter(newMergedPropsStyleCell);\n\t newCurrentStyles[i] = plainStyle;\n\t newLastIdealStyles[i] = plainStyle;\n\t\n\t var velocity = _mapToZero2['default'](newMergedPropsStyleCell.style);\n\t newCurrentVelocities[i] = velocity;\n\t newLastIdealVelocities[i] = velocity;\n\t } else {\n\t newCurrentStyles[i] = oldCurrentStyles[foundOldIndex];\n\t newLastIdealStyles[i] = oldLastIdealStyles[foundOldIndex];\n\t newCurrentVelocities[i] = oldCurrentVelocities[foundOldIndex];\n\t newLastIdealVelocities[i] = oldLastIdealVelocities[foundOldIndex];\n\t }\n\t }\n\t\n\t return [newMergedPropsStyles, newCurrentStyles, newCurrentVelocities, newLastIdealStyles, newLastIdealVelocities];\n\t}\n\t\n\tvar TransitionMotion = (function (_React$Component) {\n\t _inherits(TransitionMotion, _React$Component);\n\t\n\t _createClass(TransitionMotion, null, [{\n\t key: 'propTypes',\n\t value: {\n\t defaultStyles: _propTypes2['default'].arrayOf(_propTypes2['default'].shape({\n\t key: _propTypes2['default'].string.isRequired,\n\t data: _propTypes2['default'].any,\n\t style: _propTypes2['default'].objectOf(_propTypes2['default'].number).isRequired\n\t })),\n\t styles: _propTypes2['default'].oneOfType([_propTypes2['default'].func, _propTypes2['default'].arrayOf(_propTypes2['default'].shape({\n\t key: _propTypes2['default'].string.isRequired,\n\t data: _propTypes2['default'].any,\n\t style: _propTypes2['default'].objectOf(_propTypes2['default'].oneOfType([_propTypes2['default'].number, _propTypes2['default'].object])).isRequired\n\t }))]).isRequired,\n\t children: _propTypes2['default'].func.isRequired,\n\t willEnter: _propTypes2['default'].func,\n\t willLeave: _propTypes2['default'].func,\n\t didLeave: _propTypes2['default'].func\n\t },\n\t enumerable: true\n\t }, {\n\t key: 'defaultProps',\n\t value: {\n\t willEnter: function willEnter(styleThatEntered) {\n\t return _stripStyle2['default'](styleThatEntered.style);\n\t },\n\t // recall: returning null makes the current unmounting TransitionStyle\n\t // disappear immediately\n\t willLeave: function willLeave() {\n\t return null;\n\t },\n\t didLeave: function didLeave() {}\n\t },\n\t enumerable: true\n\t }]);\n\t\n\t function TransitionMotion(props) {\n\t var _this = this;\n\t\n\t _classCallCheck(this, TransitionMotion);\n\t\n\t _React$Component.call(this, props);\n\t this.unmounting = false;\n\t this.animationID = null;\n\t this.prevTime = 0;\n\t this.accumulatedTime = 0;\n\t this.unreadPropStyles = null;\n\t\n\t this.clearUnreadPropStyle = function (unreadPropStyles) {\n\t var _mergeAndSync = mergeAndSync(_this.props.willEnter, _this.props.willLeave, _this.props.didLeave, _this.state.mergedPropsStyles, unreadPropStyles, _this.state.currentStyles, _this.state.currentVelocities, _this.state.lastIdealStyles, _this.state.lastIdealVelocities);\n\t\n\t var mergedPropsStyles = _mergeAndSync[0];\n\t var currentStyles = _mergeAndSync[1];\n\t var currentVelocities = _mergeAndSync[2];\n\t var lastIdealStyles = _mergeAndSync[3];\n\t var lastIdealVelocities = _mergeAndSync[4];\n\t\n\t for (var i = 0; i < unreadPropStyles.length; i++) {\n\t var unreadPropStyle = unreadPropStyles[i].style;\n\t var dirty = false;\n\t\n\t for (var key in unreadPropStyle) {\n\t if (!Object.prototype.hasOwnProperty.call(unreadPropStyle, key)) {\n\t continue;\n\t }\n\t\n\t var styleValue = unreadPropStyle[key];\n\t if (typeof styleValue === 'number') {\n\t if (!dirty) {\n\t dirty = true;\n\t currentStyles[i] = _extends({}, currentStyles[i]);\n\t currentVelocities[i] = _extends({}, currentVelocities[i]);\n\t lastIdealStyles[i] = _extends({}, lastIdealStyles[i]);\n\t lastIdealVelocities[i] = _extends({}, lastIdealVelocities[i]);\n\t mergedPropsStyles[i] = {\n\t key: mergedPropsStyles[i].key,\n\t data: mergedPropsStyles[i].data,\n\t style: _extends({}, mergedPropsStyles[i].style)\n\t };\n\t }\n\t currentStyles[i][key] = styleValue;\n\t currentVelocities[i][key] = 0;\n\t lastIdealStyles[i][key] = styleValue;\n\t lastIdealVelocities[i][key] = 0;\n\t mergedPropsStyles[i].style[key] = styleValue;\n\t }\n\t }\n\t }\n\t\n\t // unlike the other 2 components, we can't detect staleness and optionally\n\t // opt out of setState here. each style object's data might contain new\n\t // stuff we're not/cannot compare\n\t _this.setState({\n\t currentStyles: currentStyles,\n\t currentVelocities: currentVelocities,\n\t mergedPropsStyles: mergedPropsStyles,\n\t lastIdealStyles: lastIdealStyles,\n\t lastIdealVelocities: lastIdealVelocities\n\t });\n\t };\n\t\n\t this.startAnimationIfNecessary = function () {\n\t if (_this.unmounting) {\n\t return;\n\t }\n\t\n\t // TODO: when config is {a: 10} and dest is {a: 10} do we raf once and\n\t // call cb? No, otherwise accidental parent rerender causes cb trigger\n\t _this.animationID = _raf2['default'](function (timestamp) {\n\t // https://github.com/chenglou/react-motion/pull/420\n\t // > if execution passes the conditional if (this.unmounting), then\n\t // executes async defaultRaf and after that component unmounts and after\n\t // that the callback of defaultRaf is called, then setState will be called\n\t // on unmounted component.\n\t if (_this.unmounting) {\n\t return;\n\t }\n\t\n\t var propStyles = _this.props.styles;\n\t var destStyles = typeof propStyles === 'function' ? propStyles(rehydrateStyles(_this.state.mergedPropsStyles, _this.unreadPropStyles, _this.state.lastIdealStyles)) : propStyles;\n\t\n\t // check if we need to animate in the first place\n\t if (shouldStopAnimationAll(_this.state.currentStyles, destStyles, _this.state.currentVelocities, _this.state.mergedPropsStyles)) {\n\t // no need to cancel animationID here; shouldn't have any in flight\n\t _this.animationID = null;\n\t _this.accumulatedTime = 0;\n\t return;\n\t }\n\t\n\t var currentTime = timestamp || _performanceNow2['default']();\n\t var timeDelta = currentTime - _this.prevTime;\n\t _this.prevTime = currentTime;\n\t _this.accumulatedTime = _this.accumulatedTime + timeDelta;\n\t // more than 10 frames? prolly switched browser tab. Restart\n\t if (_this.accumulatedTime > msPerFrame * 10) {\n\t _this.accumulatedTime = 0;\n\t }\n\t\n\t if (_this.accumulatedTime === 0) {\n\t // no need to cancel animationID here; shouldn't have any in flight\n\t _this.animationID = null;\n\t _this.startAnimationIfNecessary();\n\t return;\n\t }\n\t\n\t var currentFrameCompletion = (_this.accumulatedTime - Math.floor(_this.accumulatedTime / msPerFrame) * msPerFrame) / msPerFrame;\n\t var framesToCatchUp = Math.floor(_this.accumulatedTime / msPerFrame);\n\t\n\t var _mergeAndSync2 = mergeAndSync(_this.props.willEnter, _this.props.willLeave, _this.props.didLeave, _this.state.mergedPropsStyles, destStyles, _this.state.currentStyles, _this.state.currentVelocities, _this.state.lastIdealStyles, _this.state.lastIdealVelocities);\n\t\n\t var newMergedPropsStyles = _mergeAndSync2[0];\n\t var newCurrentStyles = _mergeAndSync2[1];\n\t var newCurrentVelocities = _mergeAndSync2[2];\n\t var newLastIdealStyles = _mergeAndSync2[3];\n\t var newLastIdealVelocities = _mergeAndSync2[4];\n\t\n\t for (var i = 0; i < newMergedPropsStyles.length; i++) {\n\t var newMergedPropsStyle = newMergedPropsStyles[i].style;\n\t var newCurrentStyle = {};\n\t var newCurrentVelocity = {};\n\t var newLastIdealStyle = {};\n\t var newLastIdealVelocity = {};\n\t\n\t for (var key in newMergedPropsStyle) {\n\t if (!Object.prototype.hasOwnProperty.call(newMergedPropsStyle, key)) {\n\t continue;\n\t }\n\t\n\t var styleValue = newMergedPropsStyle[key];\n\t if (typeof styleValue === 'number') {\n\t newCurrentStyle[key] = styleValue;\n\t newCurrentVelocity[key] = 0;\n\t newLastIdealStyle[key] = styleValue;\n\t newLastIdealVelocity[key] = 0;\n\t } else {\n\t var newLastIdealStyleValue = newLastIdealStyles[i][key];\n\t var newLastIdealVelocityValue = newLastIdealVelocities[i][key];\n\t for (var j = 0; j < framesToCatchUp; j++) {\n\t var _stepper = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\t\n\t newLastIdealStyleValue = _stepper[0];\n\t newLastIdealVelocityValue = _stepper[1];\n\t }\n\t\n\t var _stepper2 = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\t\n\t var nextIdealX = _stepper2[0];\n\t var nextIdealV = _stepper2[1];\n\t\n\t newCurrentStyle[key] = newLastIdealStyleValue + (nextIdealX - newLastIdealStyleValue) * currentFrameCompletion;\n\t newCurrentVelocity[key] = newLastIdealVelocityValue + (nextIdealV - newLastIdealVelocityValue) * currentFrameCompletion;\n\t newLastIdealStyle[key] = newLastIdealStyleValue;\n\t newLastIdealVelocity[key] = newLastIdealVelocityValue;\n\t }\n\t }\n\t\n\t newLastIdealStyles[i] = newLastIdealStyle;\n\t newLastIdealVelocities[i] = newLastIdealVelocity;\n\t newCurrentStyles[i] = newCurrentStyle;\n\t newCurrentVelocities[i] = newCurrentVelocity;\n\t }\n\t\n\t _this.animationID = null;\n\t // the amount we're looped over above\n\t _this.accumulatedTime -= framesToCatchUp * msPerFrame;\n\t\n\t _this.setState({\n\t currentStyles: newCurrentStyles,\n\t currentVelocities: newCurrentVelocities,\n\t lastIdealStyles: newLastIdealStyles,\n\t lastIdealVelocities: newLastIdealVelocities,\n\t mergedPropsStyles: newMergedPropsStyles\n\t });\n\t\n\t _this.unreadPropStyles = null;\n\t\n\t _this.startAnimationIfNecessary();\n\t });\n\t };\n\t\n\t this.state = this.defaultState();\n\t }\n\t\n\t TransitionMotion.prototype.defaultState = function defaultState() {\n\t var _props = this.props;\n\t var defaultStyles = _props.defaultStyles;\n\t var styles = _props.styles;\n\t var willEnter = _props.willEnter;\n\t var willLeave = _props.willLeave;\n\t var didLeave = _props.didLeave;\n\t\n\t var destStyles = typeof styles === 'function' ? styles(defaultStyles) : styles;\n\t\n\t // this is special. for the first time around, we don't have a comparison\n\t // between last (no last) and current merged props. we'll compute last so:\n\t // say default is {a, b} and styles (dest style) is {b, c}, we'll\n\t // fabricate last as {a, b}\n\t var oldMergedPropsStyles = undefined;\n\t if (defaultStyles == null) {\n\t oldMergedPropsStyles = destStyles;\n\t } else {\n\t oldMergedPropsStyles = defaultStyles.map(function (defaultStyleCell) {\n\t // TODO: key search code\n\t for (var i = 0; i < destStyles.length; i++) {\n\t if (destStyles[i].key === defaultStyleCell.key) {\n\t return destStyles[i];\n\t }\n\t }\n\t return defaultStyleCell;\n\t });\n\t }\n\t var oldCurrentStyles = defaultStyles == null ? destStyles.map(function (s) {\n\t return _stripStyle2['default'](s.style);\n\t }) : defaultStyles.map(function (s) {\n\t return _stripStyle2['default'](s.style);\n\t });\n\t var oldCurrentVelocities = defaultStyles == null ? destStyles.map(function (s) {\n\t return _mapToZero2['default'](s.style);\n\t }) : defaultStyles.map(function (s) {\n\t return _mapToZero2['default'](s.style);\n\t });\n\t\n\t var _mergeAndSync3 = mergeAndSync(\n\t // Because this is an old-style createReactClass component, Flow doesn't\n\t // understand that the willEnter and willLeave props have default values\n\t // and will always be present.\n\t willEnter, willLeave, didLeave, oldMergedPropsStyles, destStyles, oldCurrentStyles, oldCurrentVelocities, oldCurrentStyles, // oldLastIdealStyles really\n\t oldCurrentVelocities);\n\t\n\t var mergedPropsStyles = _mergeAndSync3[0];\n\t var currentStyles = _mergeAndSync3[1];\n\t var currentVelocities = _mergeAndSync3[2];\n\t var lastIdealStyles = _mergeAndSync3[3];\n\t var lastIdealVelocities = _mergeAndSync3[4];\n\t // oldLastIdealVelocities really\n\t\n\t return {\n\t currentStyles: currentStyles,\n\t currentVelocities: currentVelocities,\n\t lastIdealStyles: lastIdealStyles,\n\t lastIdealVelocities: lastIdealVelocities,\n\t mergedPropsStyles: mergedPropsStyles\n\t };\n\t };\n\t\n\t // after checking for unreadPropStyles != null, we manually go set the\n\t // non-interpolating values (those that are a number, without a spring\n\t // config)\n\t\n\t TransitionMotion.prototype.componentDidMount = function componentDidMount() {\n\t this.prevTime = _performanceNow2['default']();\n\t this.startAnimationIfNecessary();\n\t };\n\t\n\t TransitionMotion.prototype.componentWillReceiveProps = function componentWillReceiveProps(props) {\n\t if (this.unreadPropStyles) {\n\t // previous props haven't had the chance to be set yet; set them here\n\t this.clearUnreadPropStyle(this.unreadPropStyles);\n\t }\n\t\n\t var styles = props.styles;\n\t if (typeof styles === 'function') {\n\t this.unreadPropStyles = styles(rehydrateStyles(this.state.mergedPropsStyles, this.unreadPropStyles, this.state.lastIdealStyles));\n\t } else {\n\t this.unreadPropStyles = styles;\n\t }\n\t\n\t if (this.animationID == null) {\n\t this.prevTime = _performanceNow2['default']();\n\t this.startAnimationIfNecessary();\n\t }\n\t };\n\t\n\t TransitionMotion.prototype.componentWillUnmount = function componentWillUnmount() {\n\t this.unmounting = true;\n\t if (this.animationID != null) {\n\t _raf2['default'].cancel(this.animationID);\n\t this.animationID = null;\n\t }\n\t };\n\t\n\t TransitionMotion.prototype.render = function render() {\n\t var hydratedStyles = rehydrateStyles(this.state.mergedPropsStyles, this.unreadPropStyles, this.state.currentStyles);\n\t var renderedChildren = this.props.children(hydratedStyles);\n\t return renderedChildren && _react2['default'].Children.only(renderedChildren);\n\t };\n\t\n\t return TransitionMotion;\n\t})(_react2['default'].Component);\n\t\n\texports['default'] = TransitionMotion;\n\tmodule.exports = exports['default'];\n\t\n\t// list of styles, each containing interpolating values. Part of what's passed\n\t// to children function. Notice that this is\n\t// Array<ActualInterpolatingStyleObject>, without the wrapper that is {key: ...,\n\t// data: ... style: ActualInterpolatingStyleObject}. Only mergedPropsStyles\n\t// contains the key & data info (so that we only have a single source of truth\n\t// for these, and to save space). Check the comment for `rehydrateStyles` to\n\t// see how we regenerate the entirety of what's passed to children function\n\t\n\t// the array that keeps track of currently rendered stuff! Including stuff\n\t// that you've unmounted but that's still animating. This is where it lives\n\t\n\t// it's possible that currentStyle's value is stale: if props is immediately\n\t// changed from 0 to 400 to spring(0) again, the async currentStyle is still\n\t// at 0 (didn't have time to tick and interpolate even once). If we naively\n\t// compare currentStyle with destVal it'll be 0 === 0 (no animation, stop).\n\t// In reality currentStyle should be 400\n\n/***/ },\n/* 28 */\n/***/ function(module, exports) {\n\n\t\n\t\n\t// core keys merging algorithm. If previous render's keys are [a, b], and the\n\t// next render's [c, b, d], what's the final merged keys and ordering?\n\t\n\t// - c and a must both be before b\n\t// - b before d\n\t// - ordering between a and c ambiguous\n\t\n\t// this reduces to merging two partially ordered lists (e.g. lists where not\n\t// every item has a definite ordering, like comparing a and c above). For the\n\t// ambiguous ordering we deterministically choose to place the next render's\n\t// item after the previous'; so c after a\n\t\n\t// this is called a topological sorting. Except the existing algorithms don't\n\t// work well with js bc of the amount of allocation, and isn't optimized for our\n\t// current use-case bc the runtime is linear in terms of edges (see wiki for\n\t// meaning), which is huge when two lists have many common elements\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports['default'] = mergeDiff;\n\t\n\tfunction mergeDiff(prev, next, onRemove) {\n\t // bookkeeping for easier access of a key's index below. This is 2 allocations +\n\t // potentially triggering chrome hash map mode for objs (so it might be faster\n\t\n\t var prevKeyIndex = {};\n\t for (var i = 0; i < prev.length; i++) {\n\t prevKeyIndex[prev[i].key] = i;\n\t }\n\t var nextKeyIndex = {};\n\t for (var i = 0; i < next.length; i++) {\n\t nextKeyIndex[next[i].key] = i;\n\t }\n\t\n\t // first, an overly elaborate way of merging prev and next, eliminating\n\t // duplicates (in terms of keys). If there's dupe, keep the item in next).\n\t // This way of writing it saves allocations\n\t var ret = [];\n\t for (var i = 0; i < next.length; i++) {\n\t ret[i] = next[i];\n\t }\n\t for (var i = 0; i < prev.length; i++) {\n\t if (!Object.prototype.hasOwnProperty.call(nextKeyIndex, prev[i].key)) {\n\t // this is called my TM's `mergeAndSync`, which calls willLeave. We don't\n\t // merge in keys that the user desires to kill\n\t var fill = onRemove(i, prev[i]);\n\t if (fill != null) {\n\t ret.push(fill);\n\t }\n\t }\n\t }\n\t\n\t // now all the items all present. Core sorting logic to have the right order\n\t return ret.sort(function (a, b) {\n\t var nextOrderA = nextKeyIndex[a.key];\n\t var nextOrderB = nextKeyIndex[b.key];\n\t var prevOrderA = prevKeyIndex[a.key];\n\t var prevOrderB = prevKeyIndex[b.key];\n\t\n\t if (nextOrderA != null && nextOrderB != null) {\n\t // both keys in next\n\t return nextKeyIndex[a.key] - nextKeyIndex[b.key];\n\t } else if (prevOrderA != null && prevOrderB != null) {\n\t // both keys in prev\n\t return prevKeyIndex[a.key] - prevKeyIndex[b.key];\n\t } else if (nextOrderA != null) {\n\t // key a in next, key b in prev\n\t\n\t // how to determine the order between a and b? We find a \"pivot\" (term\n\t // abuse), a key present in both prev and next, that is sandwiched between\n\t // a and b. In the context of our above example, if we're comparing a and\n\t // d, b's (the only) pivot\n\t for (var i = 0; i < next.length; i++) {\n\t var pivot = next[i].key;\n\t if (!Object.prototype.hasOwnProperty.call(prevKeyIndex, pivot)) {\n\t continue;\n\t }\n\t\n\t if (nextOrderA < nextKeyIndex[pivot] && prevOrderB > prevKeyIndex[pivot]) {\n\t return -1;\n\t } else if (nextOrderA > nextKeyIndex[pivot] && prevOrderB < prevKeyIndex[pivot]) {\n\t return 1;\n\t }\n\t }\n\t // pluggable. default to: next bigger than prev\n\t return 1;\n\t }\n\t // prevOrderA, nextOrderB\n\t for (var i = 0; i < next.length; i++) {\n\t var pivot = next[i].key;\n\t if (!Object.prototype.hasOwnProperty.call(prevKeyIndex, pivot)) {\n\t continue;\n\t }\n\t if (nextOrderB < nextKeyIndex[pivot] && prevOrderA > prevKeyIndex[pivot]) {\n\t return 1;\n\t } else if (nextOrderB > nextKeyIndex[pivot] && prevOrderA < prevKeyIndex[pivot]) {\n\t return -1;\n\t }\n\t }\n\t // pluggable. default to: next bigger than prev\n\t return -1;\n\t });\n\t}\n\t\n\tmodule.exports = exports['default'];\n\t// to loop through and find a key's index each time), but I no longer care\n\n/***/ },\n/* 29 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\texports['default'] = spring;\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tvar _presets = __webpack_require__(30);\n\t\n\tvar _presets2 = _interopRequireDefault(_presets);\n\t\n\tvar defaultConfig = _extends({}, _presets2['default'].noWobble, {\n\t precision: 0.01\n\t});\n\t\n\tfunction spring(val, config) {\n\t return _extends({}, defaultConfig, config, { val: val });\n\t}\n\t\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 30 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\texports.__esModule = true;\n\texports[\"default\"] = {\n\t noWobble: { stiffness: 170, damping: 26 }, // the default, if nothing provided\n\t gentle: { stiffness: 120, damping: 14 },\n\t wobbly: { stiffness: 180, damping: 12 },\n\t stiff: { stiffness: 210, damping: 20 }\n\t};\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 31 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {'use strict';\n\t\n\texports.__esModule = true;\n\texports['default'] = reorderKeys;\n\t\n\tvar hasWarned = false;\n\t\n\tfunction reorderKeys() {\n\t if (process.env.NODE_ENV === 'development') {\n\t if (!hasWarned) {\n\t hasWarned = true;\n\t console.error('`reorderKeys` has been removed, since it is no longer needed for TransitionMotion\\'s new styles array API.');\n\t }\n\t }\n\t}\n\t\n\tmodule.exports = exports['default'];\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(14)))\n\n/***/ },\n/* 32 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.findDOMNode = findDOMNode;\n\texports.warnAboutFunctionChild = warnAboutFunctionChild;\n\texports.warnAboutElementChild = warnAboutElementChild;\n\texports.positiveOrZero = positiveOrZero;\n\texports.modifyObjValues = modifyObjValues;\n\texports.isReact13 = isReact13;\n\t\n\tvar _react = __webpack_require__(6);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar react13 = isReact13(_react2.default);\n\tvar didWarnAboutChild = false;\n\t\n\tfunction findDOMNode(component) {\n\t if (!react13) {\n\t return component;\n\t } else {\n\t return _react2.default.findDOMNode(component);\n\t }\n\t}\n\t\n\tfunction warnAboutFunctionChild() {\n\t if (didWarnAboutChild || react13) {\n\t return;\n\t }\n\t\n\t didWarnAboutChild = true;\n\t console.error('With React 0.14 and later versions, you no longer need to wrap <ScrollArea> child into a function.');\n\t}\n\t\n\tfunction warnAboutElementChild() {\n\t if (didWarnAboutChild || !react13) {\n\t return;\n\t }\n\t\n\t didWarnAboutChild = true;\n\t console.error('With React 0.13, you need to wrap <ScrollArea> child into a function.');\n\t}\n\t\n\tfunction positiveOrZero(number) {\n\t return number < 0 ? 0 : number;\n\t}\n\t\n\tfunction modifyObjValues(obj) {\n\t var modifier = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (x) {\n\t return x;\n\t };\n\t\n\t var modifiedObj = {};\n\t for (var key in obj) {\n\t if (obj.hasOwnProperty(key)) modifiedObj[key] = modifier(obj[key]);\n\t }\n\t\n\t return modifiedObj;\n\t}\n\t\n\tfunction isReact13(React) {\n\t var version = React.version;\n\t\n\t if (typeof version !== 'string') {\n\t return true;\n\t }\n\t\n\t var parts = version.split('.');\n\t var major = parseInt(parts[0], 10);\n\t var minor = parseInt(parts[1], 10);\n\t\n\t return major === 0 && minor === 13;\n\t}\n\n/***/ },\n/* 33 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Load in dependencies\n\tvar computedStyle = __webpack_require__(34);\n\t\n\t/**\n\t * Calculate the `line-height` of a given node\n\t * @param {HTMLElement} node Element to calculate line height of. Must be in the DOM.\n\t * @returns {Number} `line-height` of the element in pixels\n\t */\n\tfunction lineHeight(node) {\n\t // Grab the line-height via style\n\t var lnHeightStr = computedStyle(node, 'line-height'),\n\t lnHeight = parseFloat(lnHeightStr, 10);\n\t\n\t // If the lineHeight did not contain a unit (i.e. it was numeric), convert it to ems (e.g. '2.3' === '2.3em')\n\t if (lnHeightStr === lnHeight + '') {\n\t // Save the old lineHeight style and update the em unit to the element\n\t var _lnHeightStyle = node.style.lineHeight;\n\t node.style.lineHeight = lnHeightStr + 'em';\n\t\n\t // Calculate the em based height\n\t lnHeightStr = computedStyle(node, 'line-height');\n\t lnHeight = parseFloat(lnHeightStr, 10);\n\t\n\t // Revert the lineHeight style\n\t if (_lnHeightStyle) {\n\t node.style.lineHeight = _lnHeightStyle;\n\t } else {\n\t delete node.style.lineHeight;\n\t }\n\t }\n\t\n\t // If the lineHeight is in `pt`, convert it to pixels (4px for 3pt)\n\t // DEV: `em` units are converted to `pt` in IE6\n\t // Conversion ratio from https://developer.mozilla.org/en-US/docs/Web/CSS/length\n\t if (lnHeightStr.indexOf('pt') !== -1) {\n\t lnHeight *= 4;\n\t lnHeight /= 3;\n\t } else if (lnHeightStr.indexOf('mm') !== -1) {\n\t // Otherwise, if the lineHeight is in `mm`, convert it to pixels (96px for 25.4mm)\n\t lnHeight *= 96;\n\t lnHeight /= 25.4;\n\t } else if (lnHeightStr.indexOf('cm') !== -1) {\n\t // Otherwise, if the lineHeight is in `cm`, convert it to pixels (96px for 2.54cm)\n\t lnHeight *= 96;\n\t lnHeight /= 2.54;\n\t } else if (lnHeightStr.indexOf('in') !== -1) {\n\t // Otherwise, if the lineHeight is in `in`, convert it to pixels (96px for 1in)\n\t lnHeight *= 96;\n\t } else if (lnHeightStr.indexOf('pc') !== -1) {\n\t // Otherwise, if the lineHeight is in `pc`, convert it to pixels (12pt for 1pc)\n\t lnHeight *= 16;\n\t }\n\t\n\t // Continue our computation\n\t lnHeight = Math.round(lnHeight);\n\t\n\t // If the line-height is \"normal\", calculate by font-size\n\t if (lnHeightStr === 'normal') {\n\t // Create a temporary node\n\t var nodeName = node.nodeName,\n\t _node = document.createElement(nodeName);\n\t _node.innerHTML = '&nbsp;';\n\t\n\t // Set the font-size of the element\n\t var fontSizeStr = computedStyle(node, 'font-size');\n\t _node.style.fontSize = fontSizeStr;\n\t\n\t // Append it to the body\n\t var body = document.body;\n\t body.appendChild(_node);\n\t\n\t // Assume the line height of the element is the height\n\t var height = _node.offsetHeight;\n\t lnHeight = height;\n\t\n\t // Remove our child from the DOM\n\t body.removeChild(_node);\n\t }\n\t\n\t // Return the calculated height\n\t return lnHeight;\n\t}\n\t\n\t// Export lineHeight\n\tmodule.exports = lineHeight;\n\n/***/ },\n/* 34 */\n/***/ function(module, exports) {\n\n\t// This code has been refactored for 140 bytes\n\t// You can see the original here: https://github.com/twolfson/computedStyle/blob/04cd1da2e30fa45844f95f5cb1ac898e9b9ef050/lib/computedStyle.js\n\tvar computedStyle = function (el, prop, getComputedStyle) {\n\t getComputedStyle = window.getComputedStyle;\n\t\n\t // In one fell swoop\n\t return (\n\t // If we have getComputedStyle\n\t getComputedStyle ?\n\t // Query it\n\t // TODO: From CSS-Query notes, we might need (node, null) for FF\n\t getComputedStyle(el) :\n\t\n\t // Otherwise, we are in IE and use currentStyle\n\t el.currentStyle\n\t )[\n\t // Switch to camelCase for CSSOM\n\t // DEV: Grabbed from jQuery\n\t // https://github.com/jquery/jquery/blob/1.9-stable/src/css.js#L191-L194\n\t // https://github.com/jquery/jquery/blob/1.9-stable/src/core.js#L593-L597\n\t prop.replace(/-(\\w)/gi, function (word, letter) {\n\t return letter.toUpperCase();\n\t })\n\t ];\n\t};\n\t\n\tmodule.exports = computedStyle;\n\n\n/***/ }\n/******/ ])\n});\n;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCA5ZDNlMmZhYWU3ODU4MzNhYWE0MiIsIndlYnBhY2s6Ly8vLi9zcmMvanMvU2Nyb2xsQXJlYVdpdGhDc3MuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2xlc3Mvc2Nyb2xsQXJlYS5sZXNzP2Y4MDQiLCJ3ZWJwYWNrOi8vLy4vc3JjL2xlc3Mvc2Nyb2xsQXJlYS5sZXNzIiwid2VicGFjazovLy8uL34vY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanMiLCJ3ZWJwYWNrOi8vLy4vfi9zdHlsZS1sb2FkZXIvYWRkU3R5bGVzLmpzIiwid2VicGFjazovLy8uL3NyYy9qcy9TY3JvbGxBcmVhLmpzeCIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwge1wicm9vdFwiOlwiUmVhY3RcIixcImNvbW1vbmpzMlwiOlwicmVhY3RcIixcImNvbW1vbmpzXCI6XCJyZWFjdFwiLFwiYW1kXCI6XCJyZWFjdFwifSIsIndlYnBhY2s6Ly8vLi9zcmMvanMvU2Nyb2xsYmFyLmpzeCIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LW1vdGlvbi9saWIvcmVhY3QtbW90aW9uLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtbW90aW9uL2xpYi9Nb3Rpb24uanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1tb3Rpb24vbGliL21hcFRvWmVyby5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LW1vdGlvbi9saWIvc3RyaXBTdHlsZS5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LW1vdGlvbi9saWIvc3RlcHBlci5qcyIsIndlYnBhY2s6Ly8vLi9+L3BlcmZvcm1hbmNlLW5vdy9saWIvcGVyZm9ybWFuY2Utbm93LmpzIiwid2VicGFjazovLy8uL34vcHJvY2Vzcy9icm93c2VyLmpzIiwid2VicGFjazovLy8uL34vcmFmL2luZGV4LmpzIiwid2VicGFjazovLy8uL34vcmFmL34vcGVyZm9ybWFuY2Utbm93L2xpYi9wZXJmb3JtYW5jZS1ub3cuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1tb3Rpb24vbGliL3Nob3VsZFN0b3BBbmltYXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4vfi9wcm9wLXR5cGVzL2luZGV4LmpzIiwid2VicGFjazovLy8uL34vcHJvcC10eXBlcy9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qcyIsIndlYnBhY2s6Ly8vLi9+L2ZianMvbGliL2VtcHR5RnVuY3Rpb24uanMiLCJ3ZWJwYWNrOi8vLy4vfi9mYmpzL2xpYi9pbnZhcmlhbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9mYmpzL2xpYi93YXJuaW5nLmpzIiwid2VicGFjazovLy8uL34vcHJvcC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9wcm9wLXR5cGVzL2NoZWNrUHJvcFR5cGVzLmpzIiwid2VicGFjazovLy8uL34vcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1tb3Rpb24vbGliL1N0YWdnZXJlZE1vdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LW1vdGlvbi9saWIvVHJhbnNpdGlvbk1vdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LW1vdGlvbi9saWIvbWVyZ2VEaWZmLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtbW90aW9uL2xpYi9zcHJpbmcuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1tb3Rpb24vbGliL3ByZXNldHMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1tb3Rpb24vbGliL3Jlb3JkZXJLZXlzLmpzIiwid2VicGFjazovLy8uL3NyYy9qcy91dGlscy5qcyIsIndlYnBhY2s6Ly8vLi9+L2xpbmUtaGVpZ2h0L2xpYi9saW5lLWhlaWdodC5qcyIsIndlYnBhY2s6Ly8vLi9+L2NvbXB1dGVkLXN0eWxlL2Rpc3QvY29tcHV0ZWRTdHlsZS5jb21tb25qcy5qcyJdLCJuYW1lcyI6WyJldmVudFR5cGVzIiwid2hlZWwiLCJhcGkiLCJ0b3VjaCIsInRvdWNoRW5kIiwibW91c2Vtb3ZlIiwia2V5UHJlc3MiLCJTY3JvbGxBcmVhIiwicHJvcHMiLCJzdGF0ZSIsInRvcFBvc2l0aW9uIiwibGVmdFBvc2l0aW9uIiwicmVhbEhlaWdodCIsImNvbnRhaW5lckhlaWdodCIsInJlYWxXaWR0aCIsImNvbnRhaW5lcldpZHRoIiwic2Nyb2xsQXJlYSIsInJlZnJlc2giLCJzZXRTaXplc1RvU3RhdGUiLCJzY3JvbGxUb3AiLCJzY3JvbGxCb3R0b20iLCJzY3JvbGxZVG8iLCJwb3NpdGlvbiIsInNjcm9sbExlZnQiLCJzY3JvbGxSaWdodCIsInNjcm9sbFhUbyIsImV2bnRzUHJldmlvdXNWYWx1ZXMiLCJjbGllbnRYIiwiY2xpZW50WSIsImRlbHRhWCIsImRlbHRhWSIsImJpbmRlZEhhbmRsZVdpbmRvd1Jlc2l6ZSIsImhhbmRsZVdpbmRvd1Jlc2l6ZSIsImJpbmQiLCJjb250ZW50V2luZG93IiwiYWRkRXZlbnRMaXN0ZW5lciIsImxpbmVIZWlnaHRQeCIsImNvbnRlbnQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJjb250ZW50Q2xhc3NOYW1lIiwib3duZXJEb2N1bWVudCIsIndpdGhNb3Rpb24iLCJzbW9vdGhTY3JvbGxpbmciLCJldmVudFR5cGUiLCJzY3JvbGxiYXJZIiwiY2FuU2Nyb2xsWSIsImhhbmRsZVNjcm9sbGJhck1vdmUiLCJoYW5kbGVTY3JvbGxiYXJZUG9zaXRpb25DaGFuZ2UiLCJ2ZXJ0aWNhbENvbnRhaW5lclN0eWxlIiwidmVydGljYWxTY3JvbGxiYXJTdHlsZSIsIm1pblNjcm9sbFNpemUiLCJmb2N1c0NvbnRlbnQiLCJzY3JvbGxiYXJYIiwiY2FuU2Nyb2xsWCIsImhhbmRsZVNjcm9sbGJhclhQb3NpdGlvbkNoYW5nZSIsImhvcml6b250YWxDb250YWluZXJTdHlsZSIsImhvcml6b250YWxTY3JvbGxiYXJTdHlsZSIsImNsYXNzZXMiLCJjb250ZW50Q2xhc3NlcyIsImNvbnRlbnRTdHlsZSIsIm1hcmdpblRvcCIsIm1hcmdpbkxlZnQiLCJzcHJpbmdpZmllZENvbnRlbnRTdHlsZSIsIngiLCJ3cmFwcGVyIiwic3R5bGUiLCJoYW5kbGVXaGVlbCIsImhhbmRsZVRvdWNoU3RhcnQiLCJoYW5kbGVUb3VjaE1vdmUiLCJoYW5kbGVUb3VjaEVuZCIsImhhbmRsZUtleURvd24iLCJmb2N1c2FibGVUYWJJbmRleCIsIm5ld1N0YXRlIiwib25TY3JvbGwiLCJzZXRTdGF0ZSIsImUiLCJ0b3VjaGVzIiwibGVuZ3RoIiwiZXZlbnRQcmV2aW91c1ZhbHVlcyIsInRpbWVzdGFtcCIsIkRhdGUiLCJub3ciLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsInNldFN0YXRlRnJvbUV2ZW50IiwiY29tcG9zZU5ld1N0YXRlIiwic3dhcFdoZWVsQXhlcyIsImRlbHRhTW9kZSIsInNwZWVkIiwic3RvcFNjcm9sbFByb3BhZ2F0aW9uIiwidGFyZ2V0IiwidGFnTmFtZSIsInRvTG93ZXJDYXNlIiwibGluZUhlaWdodCIsImtleUNvZGUiLCJjb21wdXRlU2l6ZXMiLCJnZXRNb2RpZmllZFBvc2l0aW9uc0lmTmVlZGVkIiwiY29tcHV0ZVRvcFBvc2l0aW9uIiwiY29tcHV0ZUxlZnRQb3NpdGlvbiIsInNpemVzIiwibmV3VG9wUG9zaXRpb24iLCJub3JtYWxpemVUb3BQb3NpdGlvbiIsIm5ld0xlZnRQb3NpdGlvbiIsIm5vcm1hbGl6ZUxlZnRQb3NpdGlvbiIsIm9mZnNldEhlaWdodCIsIm9mZnNldFdpZHRoIiwic2Nyb2xsYWJsZVkiLCJ2ZXJ0aWNhbCIsInNjcm9sbGFibGVYIiwiaG9yaXpvbnRhbCIsImJvdHRvbVBvc2l0aW9uIiwicmlnaHRQb3NpdGlvbiIsImZvY3VzIiwiQ29tcG9uZW50IiwiY2hpbGRDb250ZXh0VHlwZXMiLCJvYmplY3QiLCJwcm9wVHlwZXMiLCJzdHJpbmciLCJudW1iZXIiLCJib29sIiwiZnVuYyIsImFueSIsImRlZmF1bHRQcm9wcyIsIndpbmRvdyIsInVuZGVmaW5lZCIsImRvY3VtZW50IiwiU2Nyb2xsQmFyIiwiY2FsY3VsYXRlU3RhdGUiLCJzY3JvbGxTaXplIiwiaXNEcmFnZ2luZyIsImxhc3RDbGllbnRQb3NpdGlvbiIsInR5cGUiLCJiaW5kZWRIYW5kbGVNb3VzZU1vdmUiLCJoYW5kbGVNb3VzZU1vdmVGb3JWZXJ0aWNhbCIsImhhbmRsZU1vdXNlTW92ZUZvckhvcml6b250YWwiLCJiaW5kZWRIYW5kbGVNb3VzZVVwIiwiaGFuZGxlTW91c2VVcCIsIm5leHRQcm9wcyIsInJlYWxDb250ZW50U2l6ZSIsImNvbnRhaW5lclNpemUiLCJjb250ZW50UG9zaXRpb24iLCJyZWxhdGl2ZVNpemUiLCJmcmFjdGlvbmFsUG9zaXRpb24iLCJjYWxjdWxhdGVGcmFjdGlvbmFsUG9zaXRpb24iLCJyZWFsU2l6ZSIsInByb3BvcnRpb25hbFRvUGFnZVNjcm9sbFNpemUiLCJzY3JvbGxQb3NpdGlvbiIsIk1hdGgiLCJyb3VuZCIsInNjcm9sbGJhclN0eWxlIiwiY29udGFpbmVyU3R5bGUiLCJpc1Zvcml6aW9udGFsIiwiaXNWZXJ0aWNhbCIsInNjcm9sbFN0eWxlcyIsImNyZWF0ZVNjcm9sbFN0eWxlcyIsInNwcmluZ2lmaWVkU2Nyb2xsU3R5bGVzIiwic2Nyb2xsYmFyQ2xhc3NlcyIsImhhbmRsZVNjcm9sbEJhckNvbnRhaW5lckNsaWNrIiwic2Nyb2xsYmFyQ29udGFpbmVyIiwiaGFuZGxlTW91c2VEb3duIiwibXVsdGlwbGllciIsImNvbXB1dGVNdWx0aXBsaWVyIiwiY2xpZW50UG9zaXRpb24iLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ0b3AiLCJsZWZ0IiwiY2xpZW50U2Nyb2xsUG9zaXRpb24iLCJvblBvc2l0aW9uQ2hhbmdlIiwib25Nb3ZlIiwib25Gb2N1cyIsImhlaWdodCIsIndpZHRoIiwib25lT2YiLCJmaW5kRE9NTm9kZSIsIndhcm5BYm91dEZ1bmN0aW9uQ2hpbGQiLCJ3YXJuQWJvdXRFbGVtZW50Q2hpbGQiLCJwb3NpdGl2ZU9yWmVybyIsIm1vZGlmeU9ialZhbHVlcyIsImlzUmVhY3QxMyIsInJlYWN0MTMiLCJkaWRXYXJuQWJvdXRDaGlsZCIsImNvbXBvbmVudCIsImNvbnNvbGUiLCJlcnJvciIsIm9iaiIsIm1vZGlmaWVyIiwibW9kaWZpZWRPYmoiLCJrZXkiLCJoYXNPd25Qcm9wZXJ0eSIsIlJlYWN0IiwidmVyc2lvbiIsInBhcnRzIiwic3BsaXQiLCJtYWpvciIsInBhcnNlSW50IiwibWlub3IiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxPO0FDVkE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdUJBQWU7QUFDZjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7Ozs7Ozs7Ozs7OztBQ3RDQTs7QUFDQTs7Ozs7Ozs7Ozs7O0FDREE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBaUY7QUFDakY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0E7QUFDQSxpQ0FBZ0MsVUFBVSxFQUFFO0FBQzVDLEU7Ozs7OztBQ3BCQTtBQUNBOzs7QUFHQTtBQUNBLGdEQUErQyxjQUFjLGVBQWUscUJBQXFCLHVCQUF1QixHQUFHLDZCQUE2QixlQUFlLEdBQUcsZUFBZSx1QkFBdUIscUJBQXFCLEdBQUcsb0NBQW9DLHVCQUF1QixxQkFBcUIsZ0JBQWdCLGtCQUFrQixnQ0FBZ0MsNkJBQTZCLDRCQUE0QiwyQkFBMkIsd0JBQXdCLEdBQUcsK0NBQStDLGdCQUFnQixpQkFBaUIsWUFBWSxjQUFjLEdBQUcsMERBQTBELGdCQUFnQixnQkFBZ0Isc0JBQXNCLG9CQUFvQixHQUFHLDZDQUE2QyxnQkFBZ0Is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RUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQzs7Ozs7Ozs7QUNsQkE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJCOzs7Ozs7QUMxQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBQzs7Ozs7Ozs7QUMvQkQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBUztBQUNUO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQSxFQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsVUFBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHdCQUF1QixzQkFBc0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBcUI7QUFDckI7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDRCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQSw2QkFBNEIsVUFBVTs7Ozs7OztBQ25MdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGVBQWMsNEJBQTRCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXNCLGVBQWU7QUFDckM7QUFDQTtBQUNBO0FBQ0EsY0FBYTtBQUNiLHNDQUFxQyxVQUFVO0FBQy9DO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxtQkFBa0Isa0JBQWtCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUN2RUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUM7O0FBRUQ7Ozs7Ozs7Ozs7QUNqQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxxQzs7Ozs7O0FDOUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBQztBQUNEO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQzdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDJDQUEwQzs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWEsUUFBUTtBQUNyQixlQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVTtBQUNWLDhCQUE2QjtBQUM3QixTQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBK0IsS0FBSztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBUztBQUNULDZCQUE0QjtBQUM1QixRQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFxQixzQkFBc0I7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxzQkFBcUIsMkJBQTJCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNCQUFxQixnQ0FBZ0M7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QTtBQUNBO0FBQ0E7QUFDQSw4QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw2Qjs7Ozs7O0FDcEZBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBOztBQUVBIiwiZmlsZSI6IjlkM2UyZmFhZTc4NTgzM2FhYTQyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwicmVhY3RcIikpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW1wicmVhY3RcIl0sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiU2Nyb2xsQXJlYVwiXSA9IGZhY3RvcnkocmVxdWlyZShcInJlYWN0XCIpKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJTY3JvbGxBcmVhXCJdID0gZmFjdG9yeShyb290W1wiUmVhY3RcIl0pO1xufSkodGhpcywgZnVuY3Rpb24oX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV82X18pIHtcbnJldHVybiBcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG5cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGV4cG9ydHM6IHt9LFxuIFx0XHRcdGlkOiBtb2R1bGVJZCxcbiBcdFx0XHRsb2FkZWQ6IGZhbHNlXG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gd2VicGFjay9ib290c3RyYXAgOWQzZTJmYWFlNzg1ODMzYWFhNDIiLCJpbXBvcnQgJy4uL2xlc3Mvc2Nyb2xsQXJlYS5sZXNzJztcbmltcG9ydCBTY3JvbGxBcmVhIGZyb20gJy4vU2Nyb2xsQXJlYS5qc3gnO1xuXG5leHBvcnQgZGVmYXVsdCBTY3JvbGxBcmVhO1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9qcy9TY3JvbGxBcmVhV2l0aENzcy5qcyIsIi8vIHN0eWxlLWxvYWRlcjogQWRkcyBzb21lIGNzcyB0byB0aGUgRE9NIGJ5IGFkZGluZyBhIDxzdHlsZT4gdGFnXG5cbi8vIGxvYWQgdGhlIHN0eWxlc1xudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi9ub2RlX21vZHVsZXMvbGVzcy1sb2FkZXIvaW5kZXguanMhLi9zY3JvbGxBcmVhLmxlc3NcIik7XG5pZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcbi8vIGFkZCB0aGUgc3R5bGVzIHRvIHRoZSBET01cbnZhciB1cGRhdGUgPSByZXF1aXJlKFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvYWRkU3R5bGVzLmpzXCIpKGNvbnRlbnQsIHt9KTtcbmlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuLy8gSG90IE1vZHVsZSBSZXBsYWNlbWVudFxuaWYobW9kdWxlLmhvdCkge1xuXHQvLyBXaGVuIHRoZSBzdHlsZXMgY2hhbmdlLCB1cGRhdGUgdGhlIDxzdHlsZT4gdGFnc1xuXHRpZighY29udGVudC5sb2NhbHMpIHtcblx0XHRtb2R1bGUuaG90LmFjY2VwdChcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vbm9kZV9tb2R1bGVzL2xlc3MtbG9hZGVyL2luZGV4LmpzIS4vc2Nyb2xsQXJlYS5sZXNzXCIsIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIG5ld0NvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi9ub2RlX21vZHVsZXMvbGVzcy1sb2FkZXIvaW5kZXguanMhLi9zY3JvbGxBcmVhLmxlc3NcIik7XG5cdFx0XHRpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcblx0XHRcdHVwZGF0ZShuZXdDb250ZW50KTtcblx0XHR9KTtcblx0fVxuXHQvLyBXaGVuIHRoZSBtb2R1bGUgaXMgZGlzcG9zZWQsIHJlbW92ZSB0aGUgPHN0eWxlPiB0YWdzXG5cdG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL2xlc3Mvc2Nyb2xsQXJlYS5sZXNzXG4vLyBtb2R1bGUgaWQgPSAxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcIikoKTtcbi8vIGltcG9ydHNcblxuXG4vLyBtb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi5zY3JvbGxhcmVhLWNvbnRlbnQge1xcbiAgbWFyZ2luOiAwO1xcbiAgcGFkZGluZzogMDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcbi5zY3JvbGxhcmVhLWNvbnRlbnQ6Zm9jdXMge1xcbiAgb3V0bGluZTogMDtcXG59XFxuLnNjcm9sbGFyZWEge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG59XFxuLnNjcm9sbGFyZWEgLnNjcm9sbGJhci1jb250YWluZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgYmFja2dyb3VuZDogbm9uZTtcXG4gIG9wYWNpdHk6IC4xO1xcbiAgei1pbmRleDogOTk5OTtcXG4gIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIC40cztcXG4gIC1tb3otdHJhbnNpdGlvbjogYWxsIC40cztcXG4gIC1tcy10cmFuc2l0aW9uOiBhbGwgLjRzO1xcbiAgLW8tdHJhbnNpdGlvbjogYWxsIC40cztcXG4gIHRyYW5zaXRpb246IGFsbCAuNHM7XFxufVxcbi5zY3JvbGxhcmVhIC5zY3JvbGxiYXItY29udGFpbmVyLmhvcml6b250YWwge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwcHg7XFxuICBsZWZ0OiAwO1xcbiAgYm90dG9tOiAwO1xcbn1cXG4uc2Nyb2xsYXJlYSAuc2Nyb2xsYmFyLWNvbnRhaW5lci5ob3Jpem9udGFsIC5zY3JvbGxiYXIge1xcbiAgd2lkdGg6IDIwcHg7XFxuICBoZWlnaHQ6IDhweDtcXG4gIGJhY2tncm91bmQ6IGJsYWNrO1xcbiAgbWFyZ2luLXRvcDogMXB4O1xcbn1cXG4uc2Nyb2xsYXJlYSAuc2Nyb2xsYmFyLWNvbnRhaW5lci52ZXJ0aWNhbCB7XFxuICB3aWR0aDogMTBweDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHJpZ2h0OiAwO1xcbiAgdG9wOiAwO1xcbn1cXG4uc2Nyb2xsYXJlYSAuc2Nyb2xsYmFyLWNvbnRhaW5lci52ZXJ0aWNhbCAuc2Nyb2xsYmFyIHtcXG4gIHdpZHRoOiA4cHg7XFxuICBoZWlnaHQ6IDIwcHg7XFxuICBiYWNrZ3JvdW5kOiBibGFjaztcXG4gIG1hcmdpbi1sZWZ0OiAxcHg7XFxufVxcbi5zY3JvbGxhcmVhIC5zY3JvbGxiYXItY29udGFpbmVyOmhvdmVyIHtcXG4gIGJhY2tncm91bmQ6IGdyYXk7XFxuICBvcGFjaXR5OiAuNiAhaW1wb3J0YW50O1xcbn1cXG4uc2Nyb2xsYXJlYSAuc2Nyb2xsYmFyLWNvbnRhaW5lci5hY3RpdmUge1xcbiAgYmFja2dyb3VuZDogZ3JheTtcXG4gIG9wYWNpdHk6IC42ICFpbXBvcnRhbnQ7XFxufVxcbi5zY3JvbGxhcmVhOmhvdmVyIC5zY3JvbGxiYXItY29udGFpbmVyIHtcXG4gIG9wYWNpdHk6IC4zO1xcbn1cXG5cIiwgXCJcIl0pO1xuXG4vLyBleHBvcnRzXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vY3NzLWxvYWRlciEuL34vbGVzcy1sb2FkZXIhLi9zcmMvbGVzcy9zY3JvbGxBcmVhLmxlc3Ncbi8vIG1vZHVsZSBpZCA9IDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLypcclxuXHRNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxyXG5cdEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcclxuKi9cclxuLy8gY3NzIGJhc2UgY29kZSwgaW5qZWN0ZWQgYnkgdGhlIGNzcy1sb2FkZXJcclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcclxuXHR2YXIgbGlzdCA9IFtdO1xyXG5cclxuXHQvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXHJcblx0bGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xyXG5cdFx0dmFyIHJlc3VsdCA9IFtdO1xyXG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0dmFyIGl0ZW0gPSB0aGlzW2ldO1xyXG5cdFx0XHRpZihpdGVtWzJdKSB7XHJcblx0XHRcdFx0cmVzdWx0LnB1c2goXCJAbWVkaWEgXCIgKyBpdGVtWzJdICsgXCJ7XCIgKyBpdGVtWzFdICsgXCJ9XCIpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHJlc3VsdC5wdXNoKGl0ZW1bMV0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcmVzdWx0LmpvaW4oXCJcIik7XHJcblx0fTtcclxuXHJcblx0Ly8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcclxuXHRsaXN0LmkgPSBmdW5jdGlvbihtb2R1bGVzLCBtZWRpYVF1ZXJ5KSB7XHJcblx0XHRpZih0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIilcclxuXHRcdFx0bW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgXCJcIl1dO1xyXG5cdFx0dmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7fTtcclxuXHRcdGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdHZhciBpZCA9IHRoaXNbaV1bMF07XHJcblx0XHRcdGlmKHR5cGVvZiBpZCA9PT0gXCJudW1iZXJcIilcclxuXHRcdFx0XHRhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XHJcblx0XHR9XHJcblx0XHRmb3IoaSA9IDA7IGkgPCBtb2R1bGVzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdHZhciBpdGVtID0gbW9kdWxlc1tpXTtcclxuXHRcdFx0Ly8gc2tpcCBhbHJlYWR5IGltcG9ydGVkIG1vZHVsZVxyXG5cdFx0XHQvLyB0aGlzIGltcGxlbWVudGF0aW9uIGlzIG5vdCAxMDAlIHBlcmZlY3QgZm9yIHdlaXJkIG1lZGlhIHF1ZXJ5IGNvbWJpbmF0aW9uc1xyXG5cdFx0XHQvLyAgd2hlbiBhIG1vZHVsZSBpcyBpbXBvcnRlZCBtdWx0aXBsZSB0aW1lcyB3aXRoIGRpZmZlcmVudCBtZWRpYSBxdWVyaWVzLlxyXG5cdFx0XHQvLyAgSSBob3BlIHRoaXMgd2lsbCBuZXZlciBvY2N1ciAoSGV5IHRoaXMgd2F5IHdlIGhhdmUgc21hbGxlciBidW5kbGVzKVxyXG5cdFx0XHRpZih0eXBlb2YgaXRlbVswXSAhPT0gXCJudW1iZXJcIiB8fCAhYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xyXG5cdFx0XHRcdGlmKG1lZGlhUXVlcnkgJiYgIWl0ZW1bMl0pIHtcclxuXHRcdFx0XHRcdGl0ZW1bMl0gPSBtZWRpYVF1ZXJ5O1xyXG5cdFx0XHRcdH0gZWxzZSBpZihtZWRpYVF1ZXJ5KSB7XHJcblx0XHRcdFx0XHRpdGVtWzJdID0gXCIoXCIgKyBpdGVtWzJdICsgXCIpIGFuZCAoXCIgKyBtZWRpYVF1ZXJ5ICsgXCIpXCI7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGxpc3QucHVzaChpdGVtKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH07XHJcblx0cmV0dXJuIGxpc3Q7XHJcbn07XHJcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9jc3MtbG9hZGVyL2xpYi9jc3MtYmFzZS5qc1xuLy8gbW9kdWxlIGlkID0gM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKlxuXHRNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuXHRBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4qL1xudmFyIHN0eWxlc0luRG9tID0ge30sXG5cdG1lbW9pemUgPSBmdW5jdGlvbihmbikge1xuXHRcdHZhciBtZW1vO1xuXHRcdHJldHVybiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRpZiAodHlwZW9mIG1lbW8gPT09IFwidW5kZWZpbmVkXCIpIG1lbW8gPSBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXHRcdFx0cmV0dXJuIG1lbW87XG5cdFx0fTtcblx0fSxcblx0aXNPbGRJRSA9IG1lbW9pemUoZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIC9tc2llIFs2LTldXFxiLy50ZXN0KHNlbGYubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKTtcblx0fSksXG5cdGdldEhlYWRFbGVtZW50ID0gbWVtb2l6ZShmdW5jdGlvbiAoKSB7XG5cdFx0cmV0dXJuIGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdO1xuXHR9KSxcblx0c2luZ2xldG9uRWxlbWVudCA9IG51bGwsXG5cdHNpbmdsZXRvbkNvdW50ZXIgPSAwLFxuXHRzdHlsZUVsZW1lbnRzSW5zZXJ0ZWRBdFRvcCA9IFtdO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGxpc3QsIG9wdGlvbnMpIHtcblx0aWYodHlwZW9mIERFQlVHICE9PSBcInVuZGVmaW5lZFwiICYmIERFQlVHKSB7XG5cdFx0aWYodHlwZW9mIGRvY3VtZW50ICE9PSBcIm9iamVjdFwiKSB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgc3R5bGUtbG9hZGVyIGNhbm5vdCBiZSB1c2VkIGluIGEgbm9uLWJyb3dzZXIgZW52aXJvbm1lbnRcIik7XG5cdH1cblxuXHRvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblx0Ly8gRm9yY2Ugc2luZ2xlLXRhZyBzb2x1dGlvbiBvbiBJRTYtOSwgd2hpY2ggaGFzIGEgaGFyZCBsaW1pdCBvbiB0aGUgIyBvZiA8c3R5bGU+XG5cdC8vIHRhZ3MgaXQgd2lsbCBhbGxvdyBvbiBhIHBhZ2Vcblx0aWYgKHR5cGVvZiBvcHRpb25zLnNpbmdsZXRvbiA9PT0gXCJ1bmRlZmluZWRcIikgb3B0aW9ucy5zaW5nbGV0b24gPSBpc09sZElFKCk7XG5cblx0Ly8gQnkgZGVmYXVsdCwgYWRkIDxzdHlsZT4gdGFncyB0byB0aGUgYm90dG9tIG9mIDxoZWFkPi5cblx0aWYgKHR5cGVvZiBvcHRpb25zLmluc2VydEF0ID09PSBcInVuZGVmaW5lZFwiKSBvcHRpb25zLmluc2VydEF0ID0gXCJib3R0b21cIjtcblxuXHR2YXIgc3R5bGVzID0gbGlzdFRvU3R5bGVzKGxpc3QpO1xuXHRhZGRTdHlsZXNUb0RvbShzdHlsZXMsIG9wdGlvbnMpO1xuXG5cdHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuXHRcdHZhciBtYXlSZW1vdmUgPSBbXTtcblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgc3R5bGVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgaXRlbSA9IHN0eWxlc1tpXTtcblx0XHRcdHZhciBkb21TdHlsZSA9IHN0eWxlc0luRG9tW2l0ZW0uaWRdO1xuXHRcdFx0ZG9tU3R5bGUucmVmcy0tO1xuXHRcdFx0bWF5UmVtb3ZlLnB1c2goZG9tU3R5bGUpO1xuXHRcdH1cblx0XHRpZihuZXdMaXN0KSB7XG5cdFx0XHR2YXIgbmV3U3R5bGVzID0gbGlzdFRvU3R5bGVzKG5ld0xpc3QpO1xuXHRcdFx0YWRkU3R5bGVzVG9Eb20obmV3U3R5bGVzLCBvcHRpb25zKTtcblx0XHR9XG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IG1heVJlbW92ZS5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGRvbVN0eWxlID0gbWF5UmVtb3ZlW2ldO1xuXHRcdFx0aWYoZG9tU3R5bGUucmVmcyA9PT0gMCkge1xuXHRcdFx0XHRmb3IodmFyIGogPSAwOyBqIDwgZG9tU3R5bGUucGFydHMubGVuZ3RoOyBqKyspXG5cdFx0XHRcdFx0ZG9tU3R5bGUucGFydHNbal0oKTtcblx0XHRcdFx0ZGVsZXRlIHN0eWxlc0luRG9tW2RvbVN0eWxlLmlkXTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG59XG5cbmZ1bmN0aW9uIGFkZFN0eWxlc1RvRG9tKHN0eWxlcywgb3B0aW9ucykge1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgc3R5bGVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0dmFyIGl0ZW0gPSBzdHlsZXNbaV07XG5cdFx0dmFyIGRvbVN0eWxlID0gc3R5bGVzSW5Eb21baXRlbS5pZF07XG5cdFx0aWYoZG9tU3R5bGUpIHtcblx0XHRcdGRvbVN0eWxlLnJlZnMrKztcblx0XHRcdGZvcih2YXIgaiA9IDA7IGogPCBkb21TdHlsZS5wYXJ0cy5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRkb21TdHlsZS5wYXJ0c1tqXShpdGVtLnBhcnRzW2pdKTtcblx0XHRcdH1cblx0XHRcdGZvcig7IGogPCBpdGVtLnBhcnRzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdGRvbVN0eWxlLnBhcnRzLnB1c2goYWRkU3R5bGUoaXRlbS5wYXJ0c1tqXSwgb3B0aW9ucykpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHR2YXIgcGFydHMgPSBbXTtcblx0XHRcdGZvcih2YXIgaiA9IDA7IGogPCBpdGVtLnBhcnRzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdHBhcnRzLnB1c2goYWRkU3R5bGUoaXRlbS5wYXJ0c1tqXSwgb3B0aW9ucykpO1xuXHRcdFx0fVxuXHRcdFx0c3R5bGVzSW5Eb21baXRlbS5pZF0gPSB7aWQ6IGl0ZW0uaWQsIHJlZnM6IDEsIHBhcnRzOiBwYXJ0c307XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIGxpc3RUb1N0eWxlcyhsaXN0KSB7XG5cdHZhciBzdHlsZXMgPSBbXTtcblx0dmFyIG5ld1N0eWxlcyA9IHt9O1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdHZhciBpdGVtID0gbGlzdFtpXTtcblx0XHR2YXIgaWQgPSBpdGVtWzBdO1xuXHRcdHZhciBjc3MgPSBpdGVtWzFdO1xuXHRcdHZhciBtZWRpYSA9IGl0ZW1bMl07XG5cdFx0dmFyIHNvdXJjZU1hcCA9IGl0ZW1bM107XG5cdFx0dmFyIHBhcnQgPSB7Y3NzOiBjc3MsIG1lZGlhOiBtZWRpYSwgc291cmNlTWFwOiBzb3VyY2VNYXB9O1xuXHRcdGlmKCFuZXdTdHlsZXNbaWRdKVxuXHRcdFx0c3R5bGVzLnB1c2gobmV3U3R5bGVzW2lkXSA9IHtpZDogaWQsIHBhcnRzOiBbcGFydF19KTtcblx0XHRlbHNlXG5cdFx0XHRuZXdTdHlsZXNbaWRdLnBhcnRzLnB1c2gocGFydCk7XG5cdH1cblx0cmV0dXJuIHN0eWxlcztcbn1cblxuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMsIHN0eWxlRWxlbWVudCkge1xuXHR2YXIgaGVhZCA9IGdldEhlYWRFbGVtZW50KCk7XG5cdHZhciBsYXN0U3R5bGVFbGVtZW50SW5zZXJ0ZWRBdFRvcCA9IHN0eWxlRWxlbWVudHNJbnNlcnRlZEF0VG9wW3N0eWxlRWxlbWVudHNJbnNlcnRlZEF0VG9wLmxlbmd0aCAtIDFdO1xuXHRpZiAob3B0aW9ucy5pbnNlcnRBdCA9PT0gXCJ0b3BcIikge1xuXHRcdGlmKCFsYXN0U3R5bGVFbGVtZW50SW5zZXJ0ZWRBdFRvcCkge1xuXHRcdFx0aGVhZC5pbnNlcnRCZWZvcmUoc3R5bGVFbGVtZW50LCBoZWFkLmZpcnN0Q2hpbGQpO1xuXHRcdH0gZWxzZSBpZihsYXN0U3R5bGVFbGVtZW50SW5zZXJ0ZWRBdFRvcC5uZXh0U2libGluZykge1xuXHRcdFx0aGVhZC5pbnNlcnRCZWZvcmUoc3R5bGVFbGVtZW50LCBsYXN0U3R5bGVFbGVtZW50SW5zZXJ0ZWRBdFRvcC5uZXh0U2libGluZyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50KTtcblx0XHR9XG5cdFx0c3R5bGVFbGVtZW50c0luc2VydGVkQXRUb3AucHVzaChzdHlsZUVsZW1lbnQpO1xuXHR9IGVsc2UgaWYgKG9wdGlvbnMuaW5zZXJ0QXQgPT09IFwiYm90dG9tXCIpIHtcblx0XHRoZWFkLmFwcGVuZENoaWxkKHN0eWxlRWxlbWVudCk7XG5cdH0gZWxzZSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCB2YWx1ZSBmb3IgcGFyYW1ldGVyICdpbnNlcnRBdCcuIE11c3QgYmUgJ3RvcCcgb3IgJ2JvdHRvbScuXCIpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpIHtcblx0c3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KTtcblx0dmFyIGlkeCA9IHN0eWxlRWxlbWVudHNJbnNlcnRlZEF0VG9wLmluZGV4T2Yoc3R5bGVFbGVtZW50KTtcblx0aWYoaWR4ID49IDApIHtcblx0XHRzdHlsZUVsZW1lbnRzSW5zZXJ0ZWRBdFRvcC5zcGxpY2UoaWR4LCAxKTtcblx0fVxufVxuXG5mdW5jdGlvbiBjcmVhdGVTdHlsZUVsZW1lbnQob3B0aW9ucykge1xuXHR2YXIgc3R5bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuXHRzdHlsZUVsZW1lbnQudHlwZSA9IFwidGV4dC9jc3NcIjtcblx0aW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMsIHN0eWxlRWxlbWVudCk7XG5cdHJldHVybiBzdHlsZUVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxpbmtFbGVtZW50KG9wdGlvbnMpIHtcblx0dmFyIGxpbmtFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImxpbmtcIik7XG5cdGxpbmtFbGVtZW50LnJlbCA9IFwic3R5bGVzaGVldFwiO1xuXHRpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucywgbGlua0VsZW1lbnQpO1xuXHRyZXR1cm4gbGlua0VsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGFkZFN0eWxlKG9iaiwgb3B0aW9ucykge1xuXHR2YXIgc3R5bGVFbGVtZW50LCB1cGRhdGUsIHJlbW92ZTtcblxuXHRpZiAob3B0aW9ucy5zaW5nbGV0b24pIHtcblx0XHR2YXIgc3R5bGVJbmRleCA9IHNpbmdsZXRvbkNvdW50ZXIrKztcblx0XHRzdHlsZUVsZW1lbnQgPSBzaW5nbGV0b25FbGVtZW50IHx8IChzaW5nbGV0b25FbGVtZW50ID0gY3JlYXRlU3R5bGVFbGVtZW50KG9wdGlvbnMpKTtcblx0XHR1cGRhdGUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGVFbGVtZW50LCBzdHlsZUluZGV4LCBmYWxzZSk7XG5cdFx0cmVtb3ZlID0gYXBwbHlUb1NpbmdsZXRvblRhZy5iaW5kKG51bGwsIHN0eWxlRWxlbWVudCwgc3R5bGVJbmRleCwgdHJ1ZSk7XG5cdH0gZWxzZSBpZihvYmouc291cmNlTWFwICYmXG5cdFx0dHlwZW9mIFVSTCA9PT0gXCJmdW5jdGlvblwiICYmXG5cdFx0dHlwZW9mIFVSTC5jcmVhdGVPYmplY3RVUkwgPT09IFwiZnVuY3Rpb25cIiAmJlxuXHRcdHR5cGVvZiBVUkwucmV2b2tlT2JqZWN0VVJMID09PSBcImZ1bmN0aW9uXCIgJiZcblx0XHR0eXBlb2YgQmxvYiA9PT0gXCJmdW5jdGlvblwiICYmXG5cdFx0dHlwZW9mIGJ0b2EgPT09IFwiZnVuY3Rpb25cIikge1xuXHRcdHN0eWxlRWxlbWVudCA9IGNyZWF0ZUxpbmtFbGVtZW50KG9wdGlvbnMpO1xuXHRcdHVwZGF0ZSA9IHVwZGF0ZUxpbmsuYmluZChudWxsLCBzdHlsZUVsZW1lbnQpO1xuXHRcdHJlbW92ZSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0cmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlRWxlbWVudCk7XG5cdFx0XHRpZihzdHlsZUVsZW1lbnQuaHJlZilcblx0XHRcdFx0VVJMLnJldm9rZU9iamVjdFVSTChzdHlsZUVsZW1lbnQuaHJlZik7XG5cdFx0fTtcblx0fSBlbHNlIHtcblx0XHRzdHlsZUVsZW1lbnQgPSBjcmVhdGVTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG5cdFx0dXBkYXRlID0gYXBwbHlUb1RhZy5iaW5kKG51bGwsIHN0eWxlRWxlbWVudCk7XG5cdFx0cmVtb3ZlID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRyZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KTtcblx0XHR9O1xuXHR9XG5cblx0dXBkYXRlKG9iaik7XG5cblx0cmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZVN0eWxlKG5ld09iaikge1xuXHRcdGlmKG5ld09iaikge1xuXHRcdFx0aWYobmV3T2JqLmNzcyA9PT0gb2JqLmNzcyAmJiBuZXdPYmoubWVkaWEgPT09IG9iai5tZWRpYSAmJiBuZXdPYmouc291cmNlTWFwID09PSBvYmouc291cmNlTWFwKVxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR1cGRhdGUob2JqID0gbmV3T2JqKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmVtb3ZlKCk7XG5cdFx0fVxuXHR9O1xufVxuXG52YXIgcmVwbGFjZVRleHQgPSAoZnVuY3Rpb24gKCkge1xuXHR2YXIgdGV4dFN0b3JlID0gW107XG5cblx0cmV0dXJuIGZ1bmN0aW9uIChpbmRleCwgcmVwbGFjZW1lbnQpIHtcblx0XHR0ZXh0U3RvcmVbaW5kZXhdID0gcmVwbGFjZW1lbnQ7XG5cdFx0cmV0dXJuIHRleHRTdG9yZS5maWx0ZXIoQm9vbGVhbikuam9pbignXFxuJyk7XG5cdH07XG59KSgpO1xuXG5mdW5jdGlvbiBhcHBseVRvU2luZ2xldG9uVGFnKHN0eWxlRWxlbWVudCwgaW5kZXgsIHJlbW92ZSwgb2JqKSB7XG5cdHZhciBjc3MgPSByZW1vdmUgPyBcIlwiIDogb2JqLmNzcztcblxuXHRpZiAoc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQpIHtcblx0XHRzdHlsZUVsZW1lbnQuc3R5bGVTaGVldC5jc3NUZXh0ID0gcmVwbGFjZVRleHQoaW5kZXgsIGNzcyk7XG5cdH0gZWxzZSB7XG5cdFx0dmFyIGNzc05vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpO1xuXHRcdHZhciBjaGlsZE5vZGVzID0gc3R5bGVFbGVtZW50LmNoaWxkTm9kZXM7XG5cdFx0aWYgKGNoaWxkTm9kZXNbaW5kZXhdKSBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoY2hpbGROb2Rlc1tpbmRleF0pO1xuXHRcdGlmIChjaGlsZE5vZGVzLmxlbmd0aCkge1xuXHRcdFx0c3R5bGVFbGVtZW50Lmluc2VydEJlZm9yZShjc3NOb2RlLCBjaGlsZE5vZGVzW2luZGV4XSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN0eWxlRWxlbWVudC5hcHBlbmRDaGlsZChjc3NOb2RlKTtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gYXBwbHlUb1RhZyhzdHlsZUVsZW1lbnQsIG9iaikge1xuXHR2YXIgY3NzID0gb2JqLmNzcztcblx0dmFyIG1lZGlhID0gb2JqLm1lZGlhO1xuXG5cdGlmKG1lZGlhKSB7XG5cdFx0c3R5bGVFbGVtZW50LnNldEF0dHJpYnV0ZShcIm1lZGlhXCIsIG1lZGlhKVxuXHR9XG5cblx0aWYoc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQpIHtcblx0XHRzdHlsZUVsZW1lbnQuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuXHR9IGVsc2Uge1xuXHRcdHdoaWxlKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKSB7XG5cdFx0XHRzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpO1xuXHRcdH1cblx0XHRzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG5cdH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlTGluayhsaW5rRWxlbWVudCwgb2JqKSB7XG5cdHZhciBjc3MgPSBvYmouY3NzO1xuXHR2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcblxuXHRpZihzb3VyY2VNYXApIHtcblx0XHQvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yNjYwMzg3NVxuXHRcdGNzcyArPSBcIlxcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIgKyBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpICsgXCIgKi9cIjtcblx0fVxuXG5cdHZhciBibG9iID0gbmV3IEJsb2IoW2Nzc10sIHsgdHlwZTogXCJ0ZXh0L2Nzc1wiIH0pO1xuXG5cdHZhciBvbGRTcmMgPSBsaW5rRWxlbWVudC5ocmVmO1xuXG5cdGxpbmtFbGVtZW50LmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuXG5cdGlmKG9sZFNyYylcblx0XHRVUkwucmV2b2tlT2JqZWN0VVJMKG9sZFNyYyk7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vc3R5bGUtbG9hZGVyL2FkZFN0eWxlcy5qc1xuLy8gbW9kdWxlIGlkID0gNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFNjcm9sbEJhciBmcm9tICcuL1Njcm9sbGJhcic7XG5pbXBvcnQge2ZpbmRET01Ob2RlLCB3YXJuQWJvdXRGdW5jdGlvbkNoaWxkLCB3YXJuQWJvdXRFbGVtZW50Q2hpbGQsIHBvc2l0aXZlT3JaZXJvLCBtb2RpZnlPYmpWYWx1ZXN9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IGxpbmVIZWlnaHQgZnJvbSAnbGluZS1oZWlnaHQnO1xuaW1wb3J0IHtNb3Rpb24sIHNwcmluZ30gZnJvbSAncmVhY3QtbW90aW9uJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5cbmNvbnN0IGV2ZW50VHlwZXMgPSB7XG4gICAgd2hlZWw6ICd3aGVlbCcsXG4gICAgYXBpOiAnYXBpJyxcbiAgICB0b3VjaDogJ3RvdWNoJyxcbiAgICB0b3VjaEVuZDogJ3RvdWNoRW5kJyxcbiAgICBtb3VzZW1vdmU6ICdtb3VzZW1vdmUnLFxuICAgIGtleVByZXNzOiAna2V5cHJlc3MnXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTY3JvbGxBcmVhIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICB0b3BQb3NpdGlvbjogMCxcbiAgICAgICAgICAgIGxlZnRQb3NpdGlvbjogMCxcbiAgICAgICAgICAgIHJlYWxIZWlnaHQ6IDAsXG4gICAgICAgICAgICBjb250YWluZXJIZWlnaHQ6IDAsXG4gICAgICAgICAgICByZWFsV2lkdGg6IDAsXG4gICAgICAgICAgICBjb250YWluZXJXaWR0aDogMFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuc2Nyb2xsQXJlYSA9IHtcbiAgICAgICAgICAgIHJlZnJlc2g6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFNpemVzVG9TdGF0ZSgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNjcm9sbFRvcDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9wKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2Nyb2xsQm90dG9tOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxCb3R0b20oKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzY3JvbGxZVG86IChwb3NpdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsWVRvKHBvc2l0aW9uKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzY3JvbGxMZWZ0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxMZWZ0KCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2Nyb2xsUmlnaHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFJpZ2h0KCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2Nyb2xsWFRvOiAocG9zaXRpb24pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFhUbyhwb3NpdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5ldm50c1ByZXZpb3VzVmFsdWVzID0ge1xuICAgICAgICAgICAgY2xpZW50WDogMCxcbiAgICAgICAgICAgIGNsaWVudFk6IDAsXG4gICAgICAgICAgICBkZWx0YVg6IDAsXG4gICAgICAgICAgICBkZWx0YVk6IDBcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmJpbmRlZEhhbmRsZVdpbmRvd1Jlc2l6ZSA9IHRoaXMuaGFuZGxlV2luZG93UmVzaXplLmJpbmQodGhpcyk7XG4gICAgfVxuXG4gICAgZ2V0Q2hpbGRDb250ZXh0KCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2Nyb2xsQXJlYTogdGhpcy5zY3JvbGxBcmVhXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLmNvbnRlbnRXaW5kb3cpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMuY29udGVudFdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMuYmluZGVkSGFuZGxlV2luZG93UmVzaXplKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxpbmVIZWlnaHRQeCA9IGxpbmVIZWlnaHQoZmluZERPTU5vZGUodGhpcy5jb250ZW50KSk7XG4gICAgICAgIHRoaXMuc2V0U2l6ZXNUb1N0YXRlKCk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLmNvbnRlbnRXaW5kb3cpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMuY29udGVudFdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMuYmluZGVkSGFuZGxlV2luZG93UmVzaXplKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcbiAgICAgICAgdGhpcy5zZXRTaXplc1RvU3RhdGUoKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGxldCB7Y2hpbGRyZW4sIGNsYXNzTmFtZSwgY29udGVudENsYXNzTmFtZSwgb3duZXJEb2N1bWVudH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBsZXQgd2l0aE1vdGlvbiA9IHRoaXMucHJvcHMuc21vb3RoU2Nyb2xsaW5nICYmXG4gICAgICAgICAgICAodGhpcy5zdGF0ZS5ldmVudFR5cGUgPT09IGV2ZW50VHlwZXMud2hlZWwgfHwgdGhpcy5zdGF0ZS5ldmVudFR5cGUgPT09IGV2ZW50VHlwZXMuYXBpIHx8IHRoaXMuc3RhdGUuZXZlbnRUeXBlID09PSBldmVudFR5cGVzLnRvdWNoRW5kIHx8XG4gICAgICAgICAgICB0aGlzLnN0YXRlLmV2ZW50VHlwZSA9PT0gZXZlbnRUeXBlcy5rZXlQcmVzcyk7XG5cbiAgICAgICAgbGV0IHNjcm9sbGJhclkgPSB0aGlzLmNhblNjcm9sbFkoKSA/IChcbiAgICAgICAgICAgIDxTY3JvbGxCYXJcbiAgICAgICAgICAgICAgICBvd25lckRvY3VtZW50PXtvd25lckRvY3VtZW50fVxuICAgICAgICAgICAgICAgIHJlYWxTaXplPXt0aGlzLnN0YXRlLnJlYWxIZWlnaHR9XG4gICAgICAgICAgICAgICAgY29udGFpbmVyU2l6ZT17dGhpcy5zdGF0ZS5jb250YWluZXJIZWlnaHR9XG4gICAgICAgICAgICAgICAgcG9zaXRpb249e3RoaXMuc3RhdGUudG9wUG9zaXRpb259XG4gICAgICAgICAgICAgICAgb25Nb3ZlPXt0aGlzLmhhbmRsZVNjcm9sbGJhck1vdmUuYmluZCh0aGlzKX1cbiAgICAgICAgICAgICAgICBvblBvc2l0aW9uQ2hhbmdlPXt0aGlzLmhhbmRsZVNjcm9sbGJhcllQb3NpdGlvbkNoYW5nZS5iaW5kKHRoaXMpfVxuICAgICAgICAgICAgICAgIGNvbnRhaW5lclN0eWxlPXt0aGlzLnByb3BzLnZlcnRpY2FsQ29udGFpbmVyU3R5bGV9XG4gICAgICAgICAgICAgICAgc2Nyb2xsYmFyU3R5bGU9e3RoaXMucHJvcHMudmVydGljYWxTY3JvbGxiYXJTdHlsZX1cbiAgICAgICAgICAgICAgICBzbW9vdGhTY3JvbGxpbmc9e3dpdGhNb3Rpb259XG4gICAgICAgICAgICAgICAgbWluU2Nyb2xsU2l6ZT17dGhpcy5wcm9wcy5taW5TY3JvbGxTaXplfVxuICAgICAgICAgICAgICAgIG9uRm9jdXM9e3RoaXMuZm9jdXNDb250ZW50LmJpbmQodGhpcyl9XG4gICAgICAgICAgICAgICAgdHlwZT1cInZlcnRpY2FsXCIvPlxuICAgICAgICApIDogbnVsbDtcblxuICAgICAgICBsZXQgc2Nyb2xsYmFyWCA9IHRoaXMuY2FuU2Nyb2xsWCgpID8gKFxuICAgICAgICAgICAgPFNjcm9sbEJhclxuICAgICAgICAgICAgICAgIG93bmVyRG9jdW1lbnQ9e293bmVyRG9jdW1lbnR9XG4gICAgICAgICAgICAgICAgcmVhbFNpemU9e3RoaXMuc3RhdGUucmVhbFdpZHRofVxuICAgICAgICAgICAgICAgIGNvbnRhaW5lclNpemU9e3RoaXMuc3RhdGUuY29udGFpbmVyV2lkdGh9XG4gICAgICAgICAgICAgICAgcG9zaXRpb249e3RoaXMuc3RhdGUubGVmdFBvc2l0aW9ufVxuICAgICAgICAgICAgICAgIG9uTW92ZT17dGhpcy5oYW5kbGVTY3JvbGxiYXJNb3ZlLmJpbmQodGhpcyl9XG4gICAgICAgICAgICAgICAgb25Qb3NpdGlvbkNoYW5nZT17dGhpcy5oYW5kbGVTY3JvbGxiYXJYUG9zaXRpb25DaGFuZ2UuYmluZCh0aGlzKX1cbiAgICAgICAgICAgICAgICBjb250YWluZXJTdHlsZT17dGhpcy5wcm9wcy5ob3Jpem9udGFsQ29udGFpbmVyU3R5bGV9XG4gICAgICAgICAgICAgICAgc2Nyb2xsYmFyU3R5bGU9e3RoaXMucHJvcHMuaG9yaXpvbnRhbFNjcm9sbGJhclN0eWxlfVxuICAgICAgICAgICAgICAgIHNtb290aFNjcm9sbGluZz17d2l0aE1vdGlvbn1cbiAgICAgICAgICAgICAgICBtaW5TY3JvbGxTaXplPXt0aGlzLnByb3BzLm1pblNjcm9sbFNpemV9XG4gICAgICAgICAgICAgICAgb25Gb2N1cz17dGhpcy5mb2N1c0NvbnRlbnQuYmluZCh0aGlzKX1cbiAgICAgICAgICAgICAgICB0eXBlPVwiaG9yaXpvbnRhbFwiLz5cbiAgICAgICAgKSA6IG51bGw7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgd2FybkFib3V0RnVuY3Rpb25DaGlsZCgpO1xuICAgICAgICAgICAgY2hpbGRyZW4gPSBjaGlsZHJlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgd2FybkFib3V0RWxlbWVudENoaWxkKCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgY2xhc3NlcyA9ICdzY3JvbGxhcmVhICcgKyAoY2xhc3NOYW1lIHx8ICcnKTtcbiAgICAgICAgbGV0IGNvbnRlbnRDbGFzc2VzID0gJ3Njcm9sbGFyZWEtY29udGVudCAnICsgKGNvbnRlbnRDbGFzc05hbWUgfHwgJycpO1xuXG4gICAgICAgIGxldCBjb250ZW50U3R5bGUgPSB7XG4gICAgICAgICAgICBtYXJnaW5Ub3A6IC10aGlzLnN0YXRlLnRvcFBvc2l0aW9uLFxuICAgICAgICAgICAgbWFyZ2luTGVmdDogLXRoaXMuc3RhdGUubGVmdFBvc2l0aW9uXG4gICAgICAgIH07XG4gICAgICAgIGxldCBzcHJpbmdpZmllZENvbnRlbnRTdHlsZSA9IHdpdGhNb3Rpb24gPyBtb2RpZnlPYmpWYWx1ZXMoY29udGVudFN0eWxlLCB4ID0+IHNwcmluZyh4KSkgOiBjb250ZW50U3R5bGU7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxNb3Rpb24gc3R5bGU9e3NwcmluZ2lmaWVkQ29udGVudFN0eWxlfT5cbiAgICAgICAgICAgICAgICB7IHN0eWxlID0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17eCA9PiB0aGlzLndyYXBwZXIgPSB4fVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3RoaXMucHJvcHMuc3R5bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbldoZWVsPXt0aGlzLmhhbmRsZVdoZWVsLmJpbmQodGhpcyl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e3ggPT4gdGhpcy5jb250ZW50ID0geH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyAuLi50aGlzLnByb3BzLmNvbnRlbnRTdHlsZSwgLi4uc3R5bGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NvbnRlbnRDbGFzc2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVG91Y2hTdGFydD17dGhpcy5oYW5kbGVUb3VjaFN0YXJ0LmJpbmQodGhpcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Ub3VjaE1vdmU9e3RoaXMuaGFuZGxlVG91Y2hNb3ZlLmJpbmQodGhpcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Ub3VjaEVuZD17dGhpcy5oYW5kbGVUb3VjaEVuZC5iaW5kKHRoaXMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17dGhpcy5oYW5kbGVLZXlEb3duLmJpbmQodGhpcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9e3RoaXMucHJvcHMuZm9jdXNhYmxlVGFiSW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB7c2Nyb2xsYmFyWX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtzY3JvbGxiYXJYfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L01vdGlvbj5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBzZXRTdGF0ZUZyb21FdmVudChuZXdTdGF0ZSwgZXZlbnRUeXBlKSB7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9uU2Nyb2xsKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uU2Nyb2xsKG5ld1N0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFN0YXRlKHsuLi5uZXdTdGF0ZSwgZXZlbnRUeXBlfSk7XG4gICAgfVxuXG4gICAgaGFuZGxlVG91Y2hTdGFydChlKSB7XG4gICAgICAgIGxldCB7dG91Y2hlc30gPSBlO1xuICAgICAgICBpZiAodG91Y2hlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGxldCB7Y2xpZW50WCwgY2xpZW50WX0gPSB0b3VjaGVzWzBdO1xuICAgICAgICAgICAgdGhpcy5ldmVudFByZXZpb3VzVmFsdWVzID0ge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuZXZlbnRQcmV2aW91c1ZhbHVlcyxcbiAgICAgICAgICAgICAgICBjbGllbnRZLFxuICAgICAgICAgICAgICAgIGNsaWVudFgsXG4gICAgICAgICAgICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlVG91Y2hNb3ZlKGUpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIGxldCB7dG91Y2hlc30gPSBlO1xuICAgICAgICBpZiAodG91Y2hlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGxldCB7Y2xpZW50WCwgY2xpZW50WX0gPSB0b3VjaGVzWzBdO1xuXG4gICAgICAgICAgICBsZXQgZGVsdGFZID0gdGhpcy5ldmVudFByZXZpb3VzVmFsdWVzLmNsaWVudFkgLSBjbGllbnRZO1xuICAgICAgICAgICAgbGV0IGRlbHRhWCA9IHRoaXMuZXZlbnRQcmV2aW91c1ZhbHVlcy5jbGllbnRYIC0gY2xpZW50WDtcblxuICAgICAgICAgICAgdGhpcy5ldmVudFByZXZpb3VzVmFsdWVzID0ge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuZXZlbnRQcmV2aW91c1ZhbHVlcyxcbiAgICAgICAgICAgICAgICBkZWx0YVksXG4gICAgICAgICAgICAgICAgZGVsdGFYLFxuICAgICAgICAgICAgICAgIGNsaWVudFksXG4gICAgICAgICAgICAgICAgY2xpZW50WCxcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IERhdGUubm93KClcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGVGcm9tRXZlbnQodGhpcy5jb21wb3NlTmV3U3RhdGUoLWRlbHRhWCwgLWRlbHRhWSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlVG91Y2hFbmQoZSkge1xuICAgICAgICBsZXQge2RlbHRhWCwgZGVsdGFZLCB0aW1lc3RhbXB9ID0gdGhpcy5ldmVudFByZXZpb3VzVmFsdWVzO1xuICAgICAgICBpZiAodHlwZW9mIGRlbHRhWCA9PT0gJ3VuZGVmaW5lZCcpIGRlbHRhWCA9IDA7XG4gICAgICAgIGlmICh0eXBlb2YgZGVsdGFZID09PSAndW5kZWZpbmVkJykgZGVsdGFZID0gMDtcbiAgICAgICAgaWYgKERhdGUubm93KCkgLSB0aW1lc3RhbXAgPCAyMDApIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGVGcm9tRXZlbnQodGhpcy5jb21wb3NlTmV3U3RhdGUoLWRlbHRhWCAqIDEwLCAtZGVsdGFZICogMTApLCBldmVudFR5cGVzLnRvdWNoRW5kKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZXZlbnRQcmV2aW91c1ZhbHVlcyA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMuZXZlbnRQcmV2aW91c1ZhbHVlcyxcbiAgICAgICAgICAgIGRlbHRhWTogMCxcbiAgICAgICAgICAgIGRlbHRhWDogMFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGhhbmRsZVNjcm9sbGJhck1vdmUoZGVsdGFZLCBkZWx0YVgpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZUZyb21FdmVudCh0aGlzLmNvbXBvc2VOZXdTdGF0ZShkZWx0YVgsIGRlbHRhWSkpO1xuICAgIH1cblxuICAgIGhhbmRsZVNjcm9sbGJhclhQb3NpdGlvbkNoYW5nZShwb3NpdGlvbikge1xuICAgICAgICB0aGlzLnNjcm9sbFhUbyhwb3NpdGlvbik7XG4gICAgfVxuXG4gICAgaGFuZGxlU2Nyb2xsYmFyWVBvc2l0aW9uQ2hhbmdlKHBvc2l0aW9uKSB7XG4gICAgICAgIHRoaXMuc2Nyb2xsWVRvKHBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBoYW5kbGVXaGVlbChlKSB7XG4gICAgICAgIGxldCBkZWx0YVkgPSBlLmRlbHRhWTtcbiAgICAgICAgbGV0IGRlbHRhWCA9IGUuZGVsdGFYO1xuXG4gICAgICAgIGlmICh0aGlzLnByb3BzLnN3YXBXaGVlbEF4ZXMpIHtcbiAgICAgICAgICAgIFtkZWx0YVksIGRlbHRhWF0gPSBbZGVsdGFYLCBkZWx0YVldO1xuICAgICAgICB9XG5cbiAgICAgICAgLypcbiAgICAgICAgICogV2hlZWxFdmVudC5kZWx0YU1vZGUgY2FuIGRpZmZlciBiZXR3ZWVuIGJyb3dzZXJzIGFuZCBtdXN0IGJlIG5vcm1hbGl6ZWRcbiAgICAgICAgICogZS5kZWx0YU1vZGUgPT09IDA6IFRoZSBkZWx0YSB2YWx1ZXMgYXJlIHNwZWNpZmllZCBpbiBwaXhlbHNcbiAgICAgICAgICogZS5kZWx0YU1vZGUgPT09IDE6IFRoZSBkZWx0YSB2YWx1ZXMgYXJlIHNwZWNpZmllZCBpbiBsaW5lc1xuICAgICAgICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvV2hlZWxFdmVudC9kZWx0YU1vZGVcbiAgICAgICAgICovXG4gICAgICAgIGlmIChlLmRlbHRhTW9kZSA9PT0gMSkge1xuICAgICAgICAgICAgZGVsdGFZID0gZGVsdGFZICogdGhpcy5saW5lSGVpZ2h0UHg7XG4gICAgICAgICAgICBkZWx0YVggPSBkZWx0YVggKiB0aGlzLmxpbmVIZWlnaHRQeDtcbiAgICAgICAgfVxuXG4gICAgICAgIGRlbHRhWSA9IGRlbHRhWSAqIHRoaXMucHJvcHMuc3BlZWQ7XG4gICAgICAgIGRlbHRhWCA9IGRlbHRhWCAqIHRoaXMucHJvcHMuc3BlZWQ7XG5cbiAgICAgICAgbGV0IG5ld1N0YXRlID0gdGhpcy5jb21wb3NlTmV3U3RhdGUoLWRlbHRhWCwgLWRlbHRhWSk7XG5cbiAgICAgICAgaWYgKChuZXdTdGF0ZS50b3BQb3NpdGlvbiAmJiB0aGlzLnN0YXRlLnRvcFBvc2l0aW9uICE9PSBuZXdTdGF0ZS50b3BQb3NpdGlvbikgfHxcbiAgICAgICAgICAgIChuZXdTdGF0ZS5sZWZ0UG9zaXRpb24gJiYgdGhpcy5zdGF0ZS5sZWZ0UG9zaXRpb24gIT09IG5ld1N0YXRlLmxlZnRQb3NpdGlvbikgfHxcbiAgICAgICAgICAgIHRoaXMucHJvcHMuc3RvcFNjcm9sbFByb3BhZ2F0aW9uKSB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRTdGF0ZUZyb21FdmVudChuZXdTdGF0ZSwgZXZlbnRUeXBlcy53aGVlbCk7XG4gICAgICAgIHRoaXMuZm9jdXNDb250ZW50KCk7XG4gICAgfVxuXG4gICAgaGFuZGxlS2V5RG93bihlKSB7XG4gICAgICAgIC8vIG9ubHkgaGFuZGxlIGlmIHNjcm9sbCBhcmVhIGlzIGluIGZvY3VzXG4gICAgICAgIGlmIChlLnRhcmdldC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdpbnB1dCcpIHtcbiAgICAgICAgICAgIGxldCBkZWx0YVkgPSAwO1xuICAgICAgICAgICAgbGV0IGRlbHRhWCA9IDA7XG4gICAgICAgICAgICBsZXQgbGluZUhlaWdodCA9IHRoaXMubGluZUhlaWdodFB4ID8gdGhpcy5saW5lSGVpZ2h0UHggOiAxMDtcblxuICAgICAgICAgICAgc3dpdGNoIChlLmtleUNvZGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDMzOiAvLyBwYWdlIHVwXG4gICAgICAgICAgICAgICAgICAgIGRlbHRhWSA9IHRoaXMuc3RhdGUuY29udGFpbmVySGVpZ2h0IC0gbGluZUhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAzNDogLy8gcGFnZSBkb3duXG4gICAgICAgICAgICAgICAgICAgIGRlbHRhWSA9IC10aGlzLnN0YXRlLmNvbnRhaW5lckhlaWdodCArIGxpbmVIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMzc6IC8vIGxlZnRcbiAgICAgICAgICAgICAgICAgICAgZGVsdGFYID0gbGluZUhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAzODogLy8gdXBcbiAgICAgICAgICAgICAgICAgICAgZGVsdGFZID0gbGluZUhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAzOTogLy8gcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgZGVsdGFYID0gLWxpbmVIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDA6IC8vIGRvd25cbiAgICAgICAgICAgICAgICAgICAgZGVsdGFZID0gLWxpbmVIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBvbmx5IGNvbXBvc2UgbmV3IHN0YXRlIGlmIGtleSBjb2RlIG1hdGNoZXMgdGhvc2UgYWJvdmVcbiAgICAgICAgICAgIGlmIChkZWx0YVkgIT09IDAgfHwgZGVsdGFYICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld1N0YXRlID0gdGhpcy5jb21wb3NlTmV3U3RhdGUoZGVsdGFYLCBkZWx0YVkpO1xuXG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlRnJvbUV2ZW50KG5ld1N0YXRlLCBldmVudFR5cGVzLmtleVByZXNzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZVdpbmRvd1Jlc2l6ZSgpIHtcbiAgICAgICAgbGV0IG5ld1N0YXRlID0gdGhpcy5jb21wdXRlU2l6ZXMoKTtcbiAgICAgICAgbmV3U3RhdGUgPSB0aGlzLmdldE1vZGlmaWVkUG9zaXRpb25zSWZOZWVkZWQobmV3U3RhdGUpO1xuICAgICAgICB0aGlzLnNldFN0YXRlRnJvbUV2ZW50KG5ld1N0YXRlKTtcbiAgICB9XG5cbiAgICBjb21wb3NlTmV3U3RhdGUoZGVsdGFYLCBkZWx0YVkpIHtcbiAgICAgICAgbGV0IG5ld1N0YXRlID0gdGhpcy5jb21wdXRlU2l6ZXMoKTtcblxuICAgICAgICBpZiAodGhpcy5jYW5TY3JvbGxZKG5ld1N0YXRlKSkge1xuICAgICAgICAgICAgbmV3U3RhdGUudG9wUG9zaXRpb24gPSB0aGlzLmNvbXB1dGVUb3BQb3NpdGlvbihkZWx0YVksIG5ld1N0YXRlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdTdGF0ZS50b3BQb3NpdGlvbiA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY2FuU2Nyb2xsWChuZXdTdGF0ZSkpIHtcbiAgICAgICAgICAgIG5ld1N0YXRlLmxlZnRQb3NpdGlvbiA9IHRoaXMuY29tcHV0ZUxlZnRQb3NpdGlvbihkZWx0YVgsIG5ld1N0YXRlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXdTdGF0ZTtcbiAgICB9XG5cbiAgICBjb21wdXRlVG9wUG9zaXRpb24oZGVsdGFZLCBzaXplcykge1xuICAgICAgICBsZXQgbmV3VG9wUG9zaXRpb24gPSB0aGlzLnN0YXRlLnRvcFBvc2l0aW9uIC0gZGVsdGFZO1xuICAgICAgICByZXR1cm4gdGhpcy5ub3JtYWxpemVUb3BQb3NpdGlvbihuZXdUb3BQb3NpdGlvbiwgc2l6ZXMpO1xuICAgIH1cblxuICAgIGNvbXB1dGVMZWZ0UG9zaXRpb24oZGVsdGFYLCBzaXplcykge1xuICAgICAgICBsZXQgbmV3TGVmdFBvc2l0aW9uID0gdGhpcy5zdGF0ZS5sZWZ0UG9zaXRpb24gLSBkZWx0YVg7XG4gICAgICAgIHJldHVybiB0aGlzLm5vcm1hbGl6ZUxlZnRQb3NpdGlvbihuZXdMZWZ0UG9zaXRpb24sIHNpemVzKTtcbiAgICB9XG5cbiAgICBub3JtYWxpemVUb3BQb3NpdGlvbihuZXdUb3BQb3NpdGlvbiwgc2l6ZXMpIHtcbiAgICAgICAgaWYgKG5ld1RvcFBvc2l0aW9uID4gc2l6ZXMucmVhbEhlaWdodCAtIHNpemVzLmNvbnRhaW5lckhlaWdodCkge1xuICAgICAgICAgICAgbmV3VG9wUG9zaXRpb24gPSBzaXplcy5yZWFsSGVpZ2h0IC0gc2l6ZXMuY29udGFpbmVySGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdUb3BQb3NpdGlvbiA8IDApIHtcbiAgICAgICAgICAgIG5ld1RvcFBvc2l0aW9uID0gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3VG9wUG9zaXRpb247XG4gICAgfVxuXG4gICAgbm9ybWFsaXplTGVmdFBvc2l0aW9uKG5ld0xlZnRQb3NpdGlvbiwgc2l6ZXMpIHtcbiAgICAgICAgaWYgKG5ld0xlZnRQb3NpdGlvbiA+IHNpemVzLnJlYWxXaWR0aCAtIHNpemVzLmNvbnRhaW5lcldpZHRoKSB7XG4gICAgICAgICAgICBuZXdMZWZ0UG9zaXRpb24gPSBzaXplcy5yZWFsV2lkdGggLSBzaXplcy5jb250YWluZXJXaWR0aDtcbiAgICAgICAgfSBlbHNlIGlmIChuZXdMZWZ0UG9zaXRpb24gPCAwKSB7XG4gICAgICAgICAgICBuZXdMZWZ0UG9zaXRpb24gPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ld0xlZnRQb3NpdGlvbjtcbiAgICB9XG5cbiAgICBjb21wdXRlU2l6ZXMoKSB7XG4gICAgICAgIGxldCByZWFsSGVpZ2h0ID0gdGhpcy5jb250ZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgbGV0IGNvbnRhaW5lckhlaWdodCA9IHRoaXMud3JhcHBlci5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGxldCByZWFsV2lkdGggPSB0aGlzLmNvbnRlbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgIGxldCBjb250YWluZXJXaWR0aCA9IHRoaXMud3JhcHBlci5vZmZzZXRXaWR0aDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVhbEhlaWdodDogcmVhbEhlaWdodCxcbiAgICAgICAgICAgIGNvbnRhaW5lckhlaWdodDogY29udGFpbmVySGVpZ2h0LFxuICAgICAgICAgICAgcmVhbFdpZHRoOiByZWFsV2lkdGgsXG4gICAgICAgICAgICBjb250YWluZXJXaWR0aDogY29udGFpbmVyV2lkdGhcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBzZXRTaXplc1RvU3RhdGUoKSB7XG4gICAgICAgIGxldCBzaXplcyA9IHRoaXMuY29tcHV0ZVNpemVzKCk7XG4gICAgICAgIGlmIChzaXplcy5yZWFsSGVpZ2h0ICE9PSB0aGlzLnN0YXRlLnJlYWxIZWlnaHQgfHwgc2l6ZXMucmVhbFdpZHRoICE9PSB0aGlzLnN0YXRlLnJlYWxXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZUZyb21FdmVudCh0aGlzLmdldE1vZGlmaWVkUG9zaXRpb25zSWZOZWVkZWQoc2l6ZXMpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNjcm9sbFRvcCgpIHtcbiAgICAgICAgdGhpcy5zY3JvbGxZVG8oMCk7XG4gICAgfVxuXG4gICAgc2Nyb2xsQm90dG9tKCkge1xuICAgICAgICB0aGlzLnNjcm9sbFlUbygodGhpcy5zdGF0ZS5yZWFsSGVpZ2h0IC0gdGhpcy5zdGF0ZS5jb250YWluZXJIZWlnaHQpKTtcbiAgICB9XG5cbiAgICBzY3JvbGxMZWZ0KCkge1xuICAgICAgICB0aGlzLnNjcm9sbFhUbygwKTtcbiAgICB9XG5cbiAgICBzY3JvbGxSaWdodCgpIHtcbiAgICAgICAgdGhpcy5zY3JvbGxYVG8oKHRoaXMuc3RhdGUucmVhbFdpZHRoIC0gdGhpcy5zdGF0ZS5jb250YWluZXJXaWR0aCkpO1xuICAgIH1cblxuICAgIHNjcm9sbFlUbyh0b3BQb3NpdGlvbikge1xuICAgICAgICBpZiAodGhpcy5jYW5TY3JvbGxZKCkpIHtcbiAgICAgICAgICAgIGxldCBwb3NpdGlvbiA9IHRoaXMubm9ybWFsaXplVG9wUG9zaXRpb24odG9wUG9zaXRpb24sIHRoaXMuY29tcHV0ZVNpemVzKCkpO1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZUZyb21FdmVudCh7dG9wUG9zaXRpb246IHBvc2l0aW9ufSwgZXZlbnRUeXBlcy5hcGkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2Nyb2xsWFRvKGxlZnRQb3NpdGlvbikge1xuICAgICAgICBpZiAodGhpcy5jYW5TY3JvbGxYKCkpIHtcbiAgICAgICAgICAgIGxldCBwb3NpdGlvbiA9IHRoaXMubm9ybWFsaXplTGVmdFBvc2l0aW9uKGxlZnRQb3NpdGlvbiwgdGhpcy5jb21wdXRlU2l6ZXMoKSk7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlRnJvbUV2ZW50KHtsZWZ0UG9zaXRpb246IHBvc2l0aW9ufSwgZXZlbnRUeXBlcy5hcGkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2FuU2Nyb2xsWShzdGF0ZSA9IHRoaXMuc3RhdGUpIHtcbiAgICAgICAgbGV0IHNjcm9sbGFibGVZID0gc3RhdGUucmVhbEhlaWdodCA+IHN0YXRlLmNvbnRhaW5lckhlaWdodDtcbiAgICAgICAgcmV0dXJuIHNjcm9sbGFibGVZICYmIHRoaXMucHJvcHMudmVydGljYWw7XG4gICAgfVxuXG4gICAgY2FuU2Nyb2xsWChzdGF0ZSA9IHRoaXMuc3RhdGUpIHtcbiAgICAgICAgbGV0IHNjcm9sbGFibGVYID0gc3RhdGUucmVhbFdpZHRoID4gc3RhdGUuY29udGFpbmVyV2lkdGg7XG4gICAgICAgIHJldHVybiBzY3JvbGxhYmxlWCAmJiB0aGlzLnByb3BzLmhvcml6b250YWw7XG4gICAgfVxuXG4gICAgZ2V0TW9kaWZpZWRQb3NpdGlvbnNJZk5lZWRlZChuZXdTdGF0ZSkge1xuICAgICAgICBsZXQgYm90dG9tUG9zaXRpb24gPSBuZXdTdGF0ZS5yZWFsSGVpZ2h0IC0gbmV3U3RhdGUuY29udGFpbmVySGVpZ2h0O1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS50b3BQb3NpdGlvbiA+PSBib3R0b21Qb3NpdGlvbikge1xuICAgICAgICAgICAgbmV3U3RhdGUudG9wUG9zaXRpb24gPSB0aGlzLmNhblNjcm9sbFkobmV3U3RhdGUpID8gcG9zaXRpdmVPclplcm8oYm90dG9tUG9zaXRpb24pIDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByaWdodFBvc2l0aW9uID0gbmV3U3RhdGUucmVhbFdpZHRoIC0gbmV3U3RhdGUuY29udGFpbmVyV2lkdGg7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmxlZnRQb3NpdGlvbiA+PSByaWdodFBvc2l0aW9uKSB7XG4gICAgICAgICAgICBuZXdTdGF0ZS5sZWZ0UG9zaXRpb24gPSB0aGlzLmNhblNjcm9sbFgobmV3U3RhdGUpID8gcG9zaXRpdmVPclplcm8ocmlnaHRQb3NpdGlvbikgOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ld1N0YXRlO1xuICAgIH1cblxuICAgIGZvY3VzQ29udGVudCgpIHtcbiAgICAgICAgaWYodGhpcy5jb250ZW50KSB7XG4gICAgICAgICAgICBmaW5kRE9NTm9kZSh0aGlzLmNvbnRlbnQpLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cblNjcm9sbEFyZWEuY2hpbGRDb250ZXh0VHlwZXMgPSB7XG4gICAgc2Nyb2xsQXJlYTogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuU2Nyb2xsQXJlYS5wcm9wVHlwZXMgPSB7XG4gICAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHNwZWVkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGNvbnRlbnRDbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY29udGVudFN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHZlcnRpY2FsOiBQcm9wVHlwZXMuYm9vbCxcbiAgICB2ZXJ0aWNhbENvbnRhaW5lclN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHZlcnRpY2FsU2Nyb2xsYmFyU3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgaG9yaXpvbnRhbDogUHJvcFR5cGVzLmJvb2wsXG4gICAgaG9yaXpvbnRhbENvbnRhaW5lclN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGhvcml6b250YWxTY3JvbGxiYXJTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBvblNjcm9sbDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgY29udGVudFdpbmRvdzogUHJvcFR5cGVzLmFueSxcbiAgICBvd25lckRvY3VtZW50OiBQcm9wVHlwZXMuYW55LFxuICAgIHNtb290aFNjcm9sbGluZzogUHJvcFR5cGVzLmJvb2wsXG4gICAgbWluU2Nyb2xsU2l6ZTogUHJvcFR5cGVzLm51bWJlcixcbiAgICBzd2FwV2hlZWxBeGVzOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBzdG9wU2Nyb2xsUHJvcGFnYXRpb246IFByb3BUeXBlcy5ib29sLFxuICAgIGZvY3VzYWJsZVRhYkluZGV4OiBQcm9wVHlwZXMubnVtYmVyXG59O1xuXG5TY3JvbGxBcmVhLmRlZmF1bHRQcm9wcyA9IHtcbiAgICBzcGVlZDogMSxcbiAgICB2ZXJ0aWNhbDogdHJ1ZSxcbiAgICBob3Jpem9udGFsOiB0cnVlLFxuICAgIHNtb290aFNjcm9sbGluZzogZmFsc2UsXG4gICAgc3dhcFdoZWVsQXhlczogZmFsc2UsXG4gICAgY29udGVudFdpbmRvdzogKHR5cGVvZiB3aW5kb3cgPT09IFwib2JqZWN0XCIpID8gd2luZG93IDogdW5kZWZpbmVkLFxuICAgIG93bmVyRG9jdW1lbnQ6ICh0eXBlb2YgZG9jdW1lbnQgPT09IFwib2JqZWN0XCIpID8gZG9jdW1lbnQgOiB1bmRlZmluZWQsXG4gICAgZm9jdXNhYmxlVGFiSW5kZXg6IDFcbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvanMvU2Nyb2xsQXJlYS5qc3giLCJtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfNl9fO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIGV4dGVybmFsIHtcInJvb3RcIjpcIlJlYWN0XCIsXCJjb21tb25qczJcIjpcInJlYWN0XCIsXCJjb21tb25qc1wiOlwicmVhY3RcIixcImFtZFwiOlwicmVhY3RcIn1cbi8vIG1vZHVsZSBpZCA9IDZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7TW90aW9uLCBzcHJpbmd9IGZyb20gJ3JlYWN0LW1vdGlvbic7XG5pbXBvcnQge21vZGlmeU9ialZhbHVlc30gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuXG5jbGFzcyBTY3JvbGxCYXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKHByb3BzKXtcbiAgICAgICAgc3VwZXIocHJvcHMpO1xuICAgICAgICBsZXQgbmV3U3RhdGUgPSB0aGlzLmNhbGN1bGF0ZVN0YXRlKHByb3BzKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBuZXdTdGF0ZS5wb3NpdGlvbixcbiAgICAgICAgICAgIHNjcm9sbFNpemU6IG5ld1N0YXRlLnNjcm9sbFNpemUsXG4gICAgICAgICAgICBpc0RyYWdnaW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGxhc3RDbGllbnRQb3NpdGlvbjogMFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmKHByb3BzLnR5cGUgPT09ICd2ZXJ0aWNhbCcpe1xuICAgICAgICAgICAgdGhpcy5iaW5kZWRIYW5kbGVNb3VzZU1vdmUgPSB0aGlzLmhhbmRsZU1vdXNlTW92ZUZvclZlcnRpY2FsLmJpbmQodGhpcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmJpbmRlZEhhbmRsZU1vdXNlTW92ZSA9IHRoaXMuaGFuZGxlTW91c2VNb3ZlRm9ySG9yaXpvbnRhbC5iaW5kKHRoaXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5iaW5kZWRIYW5kbGVNb3VzZVVwID0gdGhpcy5oYW5kbGVNb3VzZVVwLmJpbmQodGhpcyk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKXtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMub3duZXJEb2N1bWVudCkge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5iaW5kZWRIYW5kbGVNb3VzZU1vdmUpO1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIHRoaXMuYmluZGVkSGFuZGxlTW91c2VVcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcyl7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUodGhpcy5jYWxjdWxhdGVTdGF0ZShuZXh0UHJvcHMpKTtcbiAgICB9XG5cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpe1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5vd25lckRvY3VtZW50KSB7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm93bmVyRG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aGlzLmJpbmRlZEhhbmRsZU1vdXNlTW92ZSk7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm93bmVyRG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiwgdGhpcy5iaW5kZWRIYW5kbGVNb3VzZVVwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNhbGN1bGF0ZUZyYWN0aW9uYWxQb3NpdGlvbihyZWFsQ29udGVudFNpemUsIGNvbnRhaW5lclNpemUsIGNvbnRlbnRQb3NpdGlvbil7XG4gICAgICAgIGxldCByZWxhdGl2ZVNpemUgPSByZWFsQ29udGVudFNpemUgLSBjb250YWluZXJTaXplO1xuXG4gICAgICAgIHJldHVybiAxIC0gKChyZWxhdGl2ZVNpemUgLSBjb250ZW50UG9zaXRpb24pIC8gcmVsYXRpdmVTaXplKTtcbiAgICB9XG5cbiAgICBjYWxjdWxhdGVTdGF0ZShwcm9wcyl7XG4gICAgICAgIGxldCBmcmFjdGlvbmFsUG9zaXRpb24gPSB0aGlzLmNhbGN1bGF0ZUZyYWN0aW9uYWxQb3NpdGlvbihwcm9wcy5yZWFsU2l6ZSwgcHJvcHMuY29udGFpbmVyU2l6ZSwgcHJvcHMucG9zaXRpb24pO1xuICAgICAgICBsZXQgcHJvcG9ydGlvbmFsVG9QYWdlU2Nyb2xsU2l6ZSA9IHByb3BzLmNvbnRhaW5lclNpemUgKiBwcm9wcy5jb250YWluZXJTaXplIC8gcHJvcHMucmVhbFNpemU7XG4gICAgICAgIGxldCBzY3JvbGxTaXplID0gcHJvcG9ydGlvbmFsVG9QYWdlU2Nyb2xsU2l6ZSA8IHByb3BzLm1pblNjcm9sbFNpemUgPyBwcm9wcy5taW5TY3JvbGxTaXplIDogcHJvcG9ydGlvbmFsVG9QYWdlU2Nyb2xsU2l6ZTtcblxuICAgICAgICBsZXQgc2Nyb2xsUG9zaXRpb24gPSAocHJvcHMuY29udGFpbmVyU2l6ZSAtIHNjcm9sbFNpemUpICogZnJhY3Rpb25hbFBvc2l0aW9uO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2Nyb2xsU2l6ZTogc2Nyb2xsU2l6ZSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBNYXRoLnJvdW5kKHNjcm9sbFBvc2l0aW9uKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHJlbmRlcigpe1xuICAgICAgICBsZXQge3Ntb290aFNjcm9sbGluZywgaXNEcmFnZ2luZywgdHlwZSwgc2Nyb2xsYmFyU3R5bGUsIGNvbnRhaW5lclN0eWxlfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGxldCBpc1Zvcml6aW9udGFsID0gdHlwZSA9PT0gJ2hvcml6b250YWwnO1xuICAgICAgICBsZXQgaXNWZXJ0aWNhbCA9IHR5cGUgPT09ICd2ZXJ0aWNhbCc7XG4gICAgICAgIGxldCBzY3JvbGxTdHlsZXMgPSB0aGlzLmNyZWF0ZVNjcm9sbFN0eWxlcygpO1xuICAgICAgICBsZXQgc3ByaW5naWZpZWRTY3JvbGxTdHlsZXMgPSBzbW9vdGhTY3JvbGxpbmcgPyBtb2RpZnlPYmpWYWx1ZXMoc2Nyb2xsU3R5bGVzLCB4ID0+IHNwcmluZyh4KSkgOiBzY3JvbGxTdHlsZXM7XG5cbiAgICAgICAgbGV0IHNjcm9sbGJhckNsYXNzZXMgPSBgc2Nyb2xsYmFyLWNvbnRhaW5lciAke2lzRHJhZ2dpbmcgPyAnYWN0aXZlJyA6ICcnfSAke2lzVm9yaXppb250YWwgPyAnaG9yaXpvbnRhbCcgOiAnJ30gJHtpc1ZlcnRpY2FsID8gJ3ZlcnRpY2FsJyA6ICcnfWA7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxNb3Rpb24gc3R5bGU9e3NwcmluZ2lmaWVkU2Nyb2xsU3R5bGVzfT5cbiAgICAgICAgICAgICAgICB7IHN0eWxlID0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c2Nyb2xsYmFyQ2xhc3Nlc31cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtjb250YWluZXJTdHlsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXt0aGlzLmhhbmRsZVNjcm9sbEJhckNvbnRhaW5lckNsaWNrLmJpbmQodGhpcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICByZWY9eyB4ID0+IHRoaXMuc2Nyb2xsYmFyQ29udGFpbmVyID0geCB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzY3JvbGxiYXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IC4uLnNjcm9sbGJhclN0eWxlLCAuLi5zdHlsZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXt0aGlzLmhhbmRsZU1vdXNlRG93bi5iaW5kKHRoaXMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9Nb3Rpb24+XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaGFuZGxlU2Nyb2xsQmFyQ29udGFpbmVyQ2xpY2soZSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGxldCBtdWx0aXBsaWVyID0gdGhpcy5jb21wdXRlTXVsdGlwbGllcigpO1xuICAgICAgICBsZXQgY2xpZW50UG9zaXRpb24gPSB0aGlzLmlzVmVydGljYWwoKSA/IGUuY2xpZW50WSA6IGUuY2xpZW50WDtcbiAgICAgICAgbGV0IHsgdG9wLCBsZWZ0IH0gPSB0aGlzLnNjcm9sbGJhckNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgbGV0IGNsaWVudFNjcm9sbFBvc2l0aW9uID0gdGhpcy5pc1ZlcnRpY2FsKCkgPyB0b3AgOiBsZWZ0O1xuXG4gICAgICAgIGxldCBwb3NpdGlvbiA9IGNsaWVudFBvc2l0aW9uIC0gY2xpZW50U2Nyb2xsUG9zaXRpb247XG4gICAgICAgIGxldCBwcm9wb3J0aW9uYWxUb1BhZ2VTY3JvbGxTaXplID0gdGhpcy5wcm9wcy5jb250YWluZXJTaXplICogdGhpcy5wcm9wcy5jb250YWluZXJTaXplIC8gdGhpcy5wcm9wcy5yZWFsU2l6ZTtcblxuICAgICAgICB0aGlzLnNldFN0YXRlKHtpc0RyYWdnaW5nOiB0cnVlLCBsYXN0Q2xpZW50UG9zaXRpb246IGNsaWVudFBvc2l0aW9uIH0pO1xuICAgICAgICB0aGlzLnByb3BzLm9uUG9zaXRpb25DaGFuZ2UoKHBvc2l0aW9uIC0gcHJvcG9ydGlvbmFsVG9QYWdlU2Nyb2xsU2l6ZSAvIDIpIC8gbXVsdGlwbGllcik7XG4gICAgfVxuXG4gICAgaGFuZGxlTW91c2VNb3ZlRm9ySG9yaXpvbnRhbChlKXtcbiAgICAgICAgbGV0IG11bHRpcGxpZXIgPSB0aGlzLmNvbXB1dGVNdWx0aXBsaWVyKCk7XG5cbiAgICAgICAgaWYodGhpcy5zdGF0ZS5pc0RyYWdnaW5nKXtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGxldCBkZWx0YVggPSB0aGlzLnN0YXRlLmxhc3RDbGllbnRQb3NpdGlvbiAtIGUuY2xpZW50WDtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsYXN0Q2xpZW50UG9zaXRpb246IGUuY2xpZW50WCB9KTtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25Nb3ZlKDAsIGRlbHRhWCAvIG11bHRpcGxpZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlTW91c2VNb3ZlRm9yVmVydGljYWwoZSl7XG4gICAgICAgIGxldCBtdWx0aXBsaWVyID0gdGhpcy5jb21wdXRlTXVsdGlwbGllcigpO1xuXG4gICAgICAgIGlmKHRoaXMuc3RhdGUuaXNEcmFnZ2luZyl7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBsZXQgZGVsdGFZID0gdGhpcy5zdGF0ZS5sYXN0Q2xpZW50UG9zaXRpb24gLSBlLmNsaWVudFk7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbGFzdENsaWVudFBvc2l0aW9uOiBlLmNsaWVudFkgfSk7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uTW92ZShkZWx0YVkgLyBtdWx0aXBsaWVyLCAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZU1vdXNlRG93bihlKXtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBsZXQgbGFzdENsaWVudFBvc2l0aW9uID0gdGhpcy5pc1ZlcnRpY2FsKCkgPyBlLmNsaWVudFk6IGUuY2xpZW50WDtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7aXNEcmFnZ2luZzogdHJ1ZSwgbGFzdENsaWVudFBvc2l0aW9uOiBsYXN0Q2xpZW50UG9zaXRpb24gfSk7XG5cbiAgICAgICAgdGhpcy5wcm9wcy5vbkZvY3VzKCk7XG4gICAgfVxuXG4gICAgaGFuZGxlTW91c2VVcChlKXtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuaXNEcmFnZ2luZykge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7aXNEcmFnZ2luZzogZmFsc2UgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjcmVhdGVTY3JvbGxTdHlsZXMoKXtcbiAgICAgICAgaWYodGhpcy5wcm9wcy50eXBlID09PSAndmVydGljYWwnKXtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLnN0YXRlLnNjcm9sbFNpemUsXG4gICAgICAgICAgICAgICAgbWFyZ2luVG9wOiB0aGlzLnN0YXRlLnBvc2l0aW9uXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogdGhpcy5zdGF0ZS5zY3JvbGxTaXplLFxuICAgICAgICAgICAgICAgIG1hcmdpbkxlZnQ6IHRoaXMuc3RhdGUucG9zaXRpb25cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb21wdXRlTXVsdGlwbGllcigpe1xuICAgICAgICByZXR1cm4gKHRoaXMucHJvcHMuY29udGFpbmVyU2l6ZSkgLyB0aGlzLnByb3BzLnJlYWxTaXplO1xuICAgIH1cblxuICAgIGlzVmVydGljYWwoKXtcbiAgICAgICByZXR1cm4gdGhpcy5wcm9wcy50eXBlID09PSAndmVydGljYWwnO1xuICAgIH1cbn1cblxuU2Nyb2xsQmFyLnByb3BUeXBlcyA9IHtcbiAgICBvbk1vdmU6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uUG9zaXRpb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uRm9jdXM6IFByb3BUeXBlcy5mdW5jLFxuICAgIHJlYWxTaXplOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGNvbnRhaW5lclNpemU6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgcG9zaXRpb246IFByb3BUeXBlcy5udW1iZXIsXG4gICAgY29udGFpbmVyU3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgc2Nyb2xsYmFyU3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgdHlwZTogUHJvcFR5cGVzLm9uZU9mKFsndmVydGljYWwnLCAnaG9yaXpvbnRhbCddKSxcbiAgICBvd25lckRvY3VtZW50OiBQcm9wVHlwZXMuYW55LFxuICAgIHNtb290aFNjcm9sbGluZzogUHJvcFR5cGVzLmJvb2wsXG4gICAgbWluU2Nyb2xsU2l6ZTogUHJvcFR5cGVzLm51bWJlclxufTtcblxuU2Nyb2xsQmFyLmRlZmF1bHRQcm9wcyA9IHtcbiAgICB0eXBlIDogJ3ZlcnRpY2FsJyxcbiAgICBzbW9vdGhTY3JvbGxpbmc6IGZhbHNlXG59O1xuZXhwb3J0IGRlZmF1bHQgU2Nyb2xsQmFyO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2pzL1Njcm9sbGJhci5qc3giLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZShvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9ialsnZGVmYXVsdCddIDogb2JqOyB9XG5cbnZhciBfTW90aW9uID0gcmVxdWlyZSgnLi9Nb3Rpb24nKTtcblxuZXhwb3J0cy5Nb3Rpb24gPSBfaW50ZXJvcFJlcXVpcmUoX01vdGlvbik7XG5cbnZhciBfU3RhZ2dlcmVkTW90aW9uID0gcmVxdWlyZSgnLi9TdGFnZ2VyZWRNb3Rpb24nKTtcblxuZXhwb3J0cy5TdGFnZ2VyZWRNb3Rpb24gPSBfaW50ZXJvcFJlcXVpcmUoX1N0YWdnZXJlZE1vdGlvbik7XG5cbnZhciBfVHJhbnNpdGlvbk1vdGlvbiA9IHJlcXVpcmUoJy4vVHJhbnNpdGlvbk1vdGlvbicpO1xuXG5leHBvcnRzLlRyYW5zaXRpb25Nb3Rpb24gPSBfaW50ZXJvcFJlcXVpcmUoX1RyYW5zaXRpb25Nb3Rpb24pO1xuXG52YXIgX3NwcmluZyA9IHJlcXVpcmUoJy4vc3ByaW5nJyk7XG5cbmV4cG9ydHMuc3ByaW5nID0gX2ludGVyb3BSZXF1aXJlKF9zcHJpbmcpO1xuXG52YXIgX3ByZXNldHMgPSByZXF1aXJlKCcuL3ByZXNldHMnKTtcblxuZXhwb3J0cy5wcmVzZXRzID0gX2ludGVyb3BSZXF1aXJlKF9wcmVzZXRzKTtcblxudmFyIF9zdHJpcFN0eWxlID0gcmVxdWlyZSgnLi9zdHJpcFN0eWxlJyk7XG5cbmV4cG9ydHMuc3RyaXBTdHlsZSA9IF9pbnRlcm9wUmVxdWlyZShfc3RyaXBTdHlsZSk7XG5cbi8vIGRlcHJlY2F0ZWQsIGR1bW15IHdhcm5pbmcgZnVuY3Rpb25cblxudmFyIF9yZW9yZGVyS2V5cyA9IHJlcXVpcmUoJy4vcmVvcmRlcktleXMnKTtcblxuZXhwb3J0cy5yZW9yZGVyS2V5cyA9IF9pbnRlcm9wUmVxdWlyZShfcmVvcmRlcktleXMpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9yZWFjdC1tb3Rpb24vbGliL3JlYWN0LW1vdGlvbi5qc1xuLy8gbW9kdWxlIGlkID0gOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCd2YWx1ZScgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24nKTsgfSB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09ICdmdW5jdGlvbicgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICcgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbnZhciBfbWFwVG9aZXJvID0gcmVxdWlyZSgnLi9tYXBUb1plcm8nKTtcblxudmFyIF9tYXBUb1plcm8yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfbWFwVG9aZXJvKTtcblxudmFyIF9zdHJpcFN0eWxlID0gcmVxdWlyZSgnLi9zdHJpcFN0eWxlJyk7XG5cbnZhciBfc3RyaXBTdHlsZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zdHJpcFN0eWxlKTtcblxudmFyIF9zdGVwcGVyMyA9IHJlcXVpcmUoJy4vc3RlcHBlcicpO1xuXG52YXIgX3N0ZXBwZXI0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc3RlcHBlcjMpO1xuXG52YXIgX3BlcmZvcm1hbmNlTm93ID0gcmVxdWlyZSgncGVyZm9ybWFuY2Utbm93Jyk7XG5cbnZhciBfcGVyZm9ybWFuY2VOb3cyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcGVyZm9ybWFuY2VOb3cpO1xuXG52YXIgX3JhZiA9IHJlcXVpcmUoJ3JhZicpO1xuXG52YXIgX3JhZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yYWYpO1xuXG52YXIgX3Nob3VsZFN0b3BBbmltYXRpb24gPSByZXF1aXJlKCcuL3Nob3VsZFN0b3BBbmltYXRpb24nKTtcblxudmFyIF9zaG91bGRTdG9wQW5pbWF0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Nob3VsZFN0b3BBbmltYXRpb24pO1xuXG52YXIgX3JlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcblxudmFyIF9yZWFjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWFjdCk7XG5cbnZhciBfcHJvcFR5cGVzID0gcmVxdWlyZSgncHJvcC10eXBlcycpO1xuXG52YXIgX3Byb3BUeXBlczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9wcm9wVHlwZXMpO1xuXG52YXIgbXNQZXJGcmFtZSA9IDEwMDAgLyA2MDtcblxudmFyIE1vdGlvbiA9IChmdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoTW90aW9uLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICBfY3JlYXRlQ2xhc3MoTW90aW9uLCBudWxsLCBbe1xuICAgIGtleTogJ3Byb3BUeXBlcycsXG4gICAgdmFsdWU6IHtcbiAgICAgIC8vIFRPT0Q6IHdhcm4gYWdhaW5zdCBwdXR0aW5nIGEgY29uZmlnIGluIGhlcmVcbiAgICAgIGRlZmF1bHRTdHlsZTogX3Byb3BUeXBlczJbJ2RlZmF1bHQnXS5vYmplY3RPZihfcHJvcFR5cGVzMlsnZGVmYXVsdCddLm51bWJlciksXG4gICAgICBzdHlsZTogX3Byb3BUeXBlczJbJ2RlZmF1bHQnXS5vYmplY3RPZihfcHJvcFR5cGVzMlsnZGVmYXVsdCddLm9uZU9mVHlwZShbX3Byb3BUeXBlczJbJ2RlZmF1bHQnXS5udW1iZXIsIF9wcm9wVHlwZXMyWydkZWZhdWx0J10ub2JqZWN0XSkpLmlzUmVxdWlyZWQsXG4gICAgICBjaGlsZHJlbjogX3Byb3BUeXBlczJbJ2RlZmF1bHQnXS5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICBvblJlc3Q6IF9wcm9wVHlwZXMyWydkZWZhdWx0J10uZnVuY1xuICAgIH0sXG4gICAgZW51bWVyYWJsZTogdHJ1ZVxuICB9XSk7XG5cbiAgZnVuY3Rpb24gTW90aW9uKHByb3BzKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBNb3Rpb24pO1xuXG4gICAgX1JlYWN0JENvbXBvbmVudC5jYWxsKHRoaXMsIHByb3BzKTtcbiAgICB0aGlzLndhc0FuaW1hdGluZyA9IGZhbHNlO1xuICAgIHRoaXMuYW5pbWF0aW9uSUQgPSBudWxsO1xuICAgIHRoaXMucHJldlRpbWUgPSAwO1xuICAgIHRoaXMuYWNjdW11bGF0ZWRUaW1lID0gMDtcbiAgICB0aGlzLnVucmVhZFByb3BTdHlsZSA9IG51bGw7XG5cbiAgICB0aGlzLmNsZWFyVW5yZWFkUHJvcFN0eWxlID0gZnVuY3Rpb24gKGRlc3RTdHlsZSkge1xuICAgICAgdmFyIGRpcnR5ID0gZmFsc2U7XG4gICAgICB2YXIgX3N0YXRlID0gX3RoaXMuc3RhdGU7XG4gICAgICB2YXIgY3VycmVudFN0eWxlID0gX3N0YXRlLmN1cnJlbnRTdHlsZTtcbiAgICAgIHZhciBjdXJyZW50VmVsb2NpdHkgPSBfc3RhdGUuY3VycmVudFZlbG9jaXR5O1xuICAgICAgdmFyIGxhc3RJZGVhbFN0eWxlID0gX3N0YXRlLmxhc3RJZGVhbFN0eWxlO1xuICAgICAgdmFyIGxhc3RJZGVhbFZlbG9jaXR5ID0gX3N0YXRlLmxhc3RJZGVhbFZlbG9jaXR5O1xuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gZGVzdFN0eWxlKSB7XG4gICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRlc3RTdHlsZSwga2V5KSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHN0eWxlVmFsdWUgPSBkZXN0U3R5bGVba2V5XTtcbiAgICAgICAgaWYgKHR5cGVvZiBzdHlsZVZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIGlmICghZGlydHkpIHtcbiAgICAgICAgICAgIGRpcnR5ID0gdHJ1ZTtcbiAgICAgICAgICAgIGN1cnJlbnRTdHlsZSA9IF9leHRlbmRzKHt9LCBjdXJyZW50U3R5bGUpO1xuICAgICAgICAgICAgY3VycmVudFZlbG9jaXR5ID0gX2V4dGVuZHMoe30sIGN1cnJlbnRWZWxvY2l0eSk7XG4gICAgICAgICAgICBsYXN0SWRlYWxTdHlsZSA9IF9leHRlbmRzKHt9LCBsYXN0SWRlYWxTdHlsZSk7XG4gICAgICAgICAgICBsYXN0SWRlYWxWZWxvY2l0eSA9IF9leHRlbmRzKHt9LCBsYXN0SWRlYWxWZWxvY2l0eSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3VycmVudFN0eWxlW2tleV0gPSBzdHlsZVZhbHVlO1xuICAgICAgICAgIGN1cnJlbnRWZWxvY2l0eVtrZXldID0gMDtcbiAgICAgICAgICBsYXN0SWRlYWxTdHlsZVtrZXldID0gc3R5bGVWYWx1ZTtcbiAgICAgICAgICBsYXN0SWRlYWxWZWxvY2l0eVtrZXldID0gMDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZGlydHkpIHtcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyBjdXJyZW50U3R5bGU6IGN1cnJlbnRTdHlsZSwgY3VycmVudFZlbG9jaXR5OiBjdXJyZW50VmVsb2NpdHksIGxhc3RJZGVhbFN0eWxlOiBsYXN0SWRlYWxTdHlsZSwgbGFzdElkZWFsVmVsb2NpdHk6IGxhc3RJZGVhbFZlbG9jaXR5IH0pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLnN0YXJ0QW5pbWF0aW9uSWZOZWNlc3NhcnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBUT0RPOiB3aGVuIGNvbmZpZyBpcyB7YTogMTB9IGFuZCBkZXN0IGlzIHthOiAxMH0gZG8gd2UgcmFmIG9uY2UgYW5kXG4gICAgICAvLyBjYWxsIGNiPyBObywgb3RoZXJ3aXNlIGFjY2lkZW50YWwgcGFyZW50IHJlcmVuZGVyIGNhdXNlcyBjYiB0cmlnZ2VyXG4gICAgICBfdGhpcy5hbmltYXRpb25JRCA9IF9yYWYyWydkZWZhdWx0J10oZnVuY3Rpb24gKHRpbWVzdGFtcCkge1xuICAgICAgICAvLyBjaGVjayBpZiB3ZSBuZWVkIHRvIGFuaW1hdGUgaW4gdGhlIGZpcnN0IHBsYWNlXG4gICAgICAgIHZhciBwcm9wc1N0eWxlID0gX3RoaXMucHJvcHMuc3R5bGU7XG4gICAgICAgIGlmIChfc2hvdWxkU3RvcEFuaW1hdGlvbjJbJ2RlZmF1bHQnXShfdGhpcy5zdGF0ZS5jdXJyZW50U3R5bGUsIHByb3BzU3R5bGUsIF90aGlzLnN0YXRlLmN1cnJlbnRWZWxvY2l0eSkpIHtcbiAgICAgICAgICBpZiAoX3RoaXMud2FzQW5pbWF0aW5nICYmIF90aGlzLnByb3BzLm9uUmVzdCkge1xuICAgICAgICAgICAgX3RoaXMucHJvcHMub25SZXN0KCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gbm8gbmVlZCB0byBjYW5jZWwgYW5pbWF0aW9uSUQgaGVyZTsgc2hvdWxkbid0IGhhdmUgYW55IGluIGZsaWdodFxuICAgICAgICAgIF90aGlzLmFuaW1hdGlvbklEID0gbnVsbDtcbiAgICAgICAgICBfdGhpcy53YXNBbmltYXRpbmcgPSBmYWxzZTtcbiAgICAgICAgICBfdGhpcy5hY2N1bXVsYXRlZFRpbWUgPSAwO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIF90aGlzLndhc0FuaW1hdGluZyA9IHRydWU7XG5cbiAgICAgICAgdmFyIGN1cnJlbnRUaW1lID0gdGltZXN0YW1wIHx8IF9wZXJmb3JtYW5jZU5vdzJbJ2RlZmF1bHQnXSgpO1xuICAgICAgICB2YXIgdGltZURlbHRhID0gY3VycmVudFRpbWUgLSBfdGhpcy5wcmV2VGltZTtcbiAgICAgICAgX3RoaXMucHJldlRpbWUgPSBjdXJyZW50VGltZTtcbiAgICAgICAgX3RoaXMuYWNjdW11bGF0ZWRUaW1lID0gX3RoaXMuYWNjdW11bGF0ZWRUaW1lICsgdGltZURlbHRhO1xuICAgICAgICAvLyBtb3JlIHRoYW4gMTAgZnJhbWVzPyBwcm9sbHkgc3dpdGNoZWQgYnJvd3NlciB0YWIuIFJlc3RhcnRcbiAgICAgICAgaWYgKF90aGlzLmFjY3VtdWxhdGVkVGltZSA+IG1zUGVyRnJhbWUgKiAxMCkge1xuICAgICAgICAgIF90aGlzLmFjY3VtdWxhdGVkVGltZSA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoX3RoaXMuYWNjdW11bGF0ZWRUaW1lID09PSAwKSB7XG4gICAgICAgICAgLy8gbm8gbmVlZCB0byBjYW5jZWwgYW5pbWF0aW9uSUQgaGVyZTsgc2hvdWxkbid0IGhhdmUgYW55IGluIGZsaWdodFxuICAgICAgICAgIF90aGlzLmFuaW1hdGlvbklEID0gbnVsbDtcbiAgICAgICAgICBfdGhpcy5zdGFydEFuaW1hdGlvbklmTmVjZXNzYXJ5KCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGN1cnJlbnRGcmFtZUNvbXBsZXRpb24gPSAoX3RoaXMuYWNjdW11bGF0ZWRUaW1lIC0gTWF0aC5mbG9vcihfdGhpcy5hY2N1bXVsYXRlZFRpbWUgLyBtc1BlckZyYW1lKSAqIG1zUGVyRnJhbWUpIC8gbXNQZXJGcmFtZTtcbiAgICAgICAgdmFyIGZyYW1lc1RvQ2F0Y2hVcCA9IE1hdGguZmxvb3IoX3RoaXMuYWNjdW11bGF0ZWRUaW1lIC8gbXNQZXJGcmFtZSk7XG5cbiAgICAgICAgdmFyIG5ld0xhc3RJZGVhbFN0eWxlID0ge307XG4gICAgICAgIHZhciBuZXdMYXN0SWRlYWxWZWxvY2l0eSA9IHt9O1xuICAgICAgICB2YXIgbmV3Q3VycmVudFN0eWxlID0ge307XG4gICAgICAgIHZhciBuZXdDdXJyZW50VmVsb2NpdHkgPSB7fTtcblxuICAgICAgICBmb3IgKHZhciBrZXkgaW4gcHJvcHNTdHlsZSkge1xuICAgICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzU3R5bGUsIGtleSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBzdHlsZVZhbHVlID0gcHJvcHNTdHlsZVtrZXldO1xuICAgICAgICAgIGlmICh0eXBlb2Ygc3R5bGVWYWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIG5ld0N1cnJlbnRTdHlsZVtrZXldID0gc3R5bGVWYWx1ZTtcbiAgICAgICAgICAgIG5ld0N1cnJlbnRWZWxvY2l0eVtrZXldID0gMDtcbiAgICAgICAgICAgIG5ld0xhc3RJZGVhbFN0eWxlW2tleV0gPSBzdHlsZVZhbHVlO1xuICAgICAgICAgICAgbmV3TGFzdElkZWFsVmVsb2NpdHlba2V5XSA9IDA7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBuZXdMYXN0SWRlYWxTdHlsZVZhbHVlID0gX3RoaXMuc3RhdGUubGFzdElkZWFsU3R5bGVba2V5XTtcbiAgICAgICAgICAgIHZhciBuZXdMYXN0SWRlYWxWZWxvY2l0eVZhbHVlID0gX3RoaXMuc3RhdGUubGFzdElkZWFsVmVsb2NpdHlba2V5XTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZnJhbWVzVG9DYXRjaFVwOyBpKyspIHtcbiAgICAgICAgICAgICAgdmFyIF9zdGVwcGVyID0gX3N0ZXBwZXI0WydkZWZhdWx0J10obXNQZXJGcmFtZSAvIDEwMDAsIG5ld0xhc3RJZGVhbFN0eWxlVmFsdWUsIG5ld0xhc3RJZGVhbFZlbG9jaXR5VmFsdWUsIHN0eWxlVmFsdWUudmFsLCBzdHlsZVZhbHVlLnN0aWZmbmVzcywgc3R5bGVWYWx1ZS5kYW1waW5nLCBzdHlsZVZhbHVlLnByZWNpc2lvbik7XG5cbiAgICAgICAgICAgICAgbmV3TGFzdElkZWFsU3R5bGVWYWx1ZSA9IF9zdGVwcGVyWzBdO1xuICAgICAgICAgICAgICBuZXdMYXN0SWRlYWxWZWxvY2l0eVZhbHVlID0gX3N0ZXBwZXJbMV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBfc3RlcHBlcjIgPSBfc3RlcHBlcjRbJ2RlZmF1bHQnXShtc1BlckZyYW1lIC8gMTAwMCwgbmV3TGFzdElkZWFsU3R5bGVWYWx1ZSwgbmV3TGFzdElkZWFsVmVsb2NpdHlWYWx1ZSwgc3R5bGVWYWx1ZS52YWwsIHN0eWxlVmFsdWUuc3RpZmZuZXNzLCBzdHlsZVZhbHVlLmRhbXBpbmcsIHN0eWxlVmFsdWUucHJlY2lzaW9uKTtcblxuICAgICAgICAgICAgdmFyIG5leHRJZGVhbFggPSBfc3RlcHBlcjJbMF07XG4gICAgICAgICAgICB2YXIgbmV4dElkZWFsViA9IF9zdGVwcGVyMlsxXTtcblxuICAgICAgICAgICAgbmV3Q3VycmVudFN0eWxlW2tleV0gPSBuZXdMYXN0SWRlYWxTdHlsZVZhbHVlICsgKG5leHRJZGVhbFggLSBuZXdMYXN0SWRlYWxTdHlsZVZhbHVlKSAqIGN1cnJlbnRGcmFtZUNvbXBsZXRpb247XG4gICAgICAgICAgICBuZXdDdXJyZW50VmVsb2NpdHlba2V5XSA9IG5ld0xhc3RJZGVhbFZlbG9jaXR5VmFsdWUgKyAobmV4dElkZWFsViAtIG5ld0xhc3RJZGVhbFZlbG9jaXR5VmFsdWUpICogY3VycmVudEZyYW1lQ29tcGxldGlvbjtcbiAgICAgICAgICAgIG5ld0xhc3RJZGVhbFN0eWxlW2tleV0gPSBuZXdMYXN0SWRlYWxTdHlsZVZhbHVlO1xuICAgICAgICAgICAgbmV3TGFzdElkZWFsVmVsb2NpdHlba2V5XSA9IG5ld0xhc3RJZGVhbFZlbG9jaXR5VmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXMuYW5pbWF0aW9uSUQgPSBudWxsO1xuICAgICAgICAvLyB0aGUgYW1vdW50IHdlJ3JlIGxvb3BlZCBvdmVyIGFib3ZlXG4gICAgICAgIF90aGlzLmFjY3VtdWxhdGVkVGltZSAtPSBmcmFtZXNUb0NhdGNoVXAgKiBtc1BlckZyYW1lO1xuXG4gICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBjdXJyZW50U3R5bGU6IG5ld0N1cnJlbnRTdHlsZSxcbiAgICAgICAgICBjdXJyZW50VmVsb2NpdHk6IG5ld0N1cnJlbnRWZWxvY2l0eSxcbiAgICAgICAgICBsYXN0SWRlYWxTdHlsZTogbmV3TGFzdElkZWFsU3R5bGUsXG4gICAgICAgICAgbGFzdElkZWFsVmVsb2NpdHk6IG5ld0xhc3RJZGVhbFZlbG9jaXR5XG4gICAgICAgIH0pO1xuXG4gICAgICAgIF90aGlzLnVucmVhZFByb3BTdHlsZSA9IG51bGw7XG5cbiAgICAgICAgX3RoaXMuc3RhcnRBbmltYXRpb25JZk5lY2Vzc2FyeSgpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHRoaXMuc3RhdGUgPSB0aGlzLmRlZmF1bHRTdGF0ZSgpO1xuICB9XG5cbiAgTW90aW9uLnByb3RvdHlwZS5kZWZhdWx0U3RhdGUgPSBmdW5jdGlvbiBkZWZhdWx0U3RhdGUoKSB7XG4gICAgdmFyIF9wcm9wcyA9IHRoaXMucHJvcHM7XG4gICAgdmFyIGRlZmF1bHRTdHlsZSA9IF9wcm9wcy5kZWZhdWx0U3R5bGU7XG4gICAgdmFyIHN0eWxlID0gX3Byb3BzLnN0eWxlO1xuXG4gICAgdmFyIGN1cnJlbnRTdHlsZSA9IGRlZmF1bHRTdHlsZSB8fCBfc3RyaXBTdHlsZTJbJ2RlZmF1bHQnXShzdHlsZSk7XG4gICAgdmFyIGN1cnJlbnRWZWxvY2l0eSA9IF9tYXBUb1plcm8yWydkZWZhdWx0J10oY3VycmVudFN0eWxlKTtcbiAgICByZXR1cm4ge1xuICAgICAgY3VycmVudFN0eWxlOiBjdXJyZW50U3R5bGUsXG4gICAgICBjdXJyZW50VmVsb2NpdHk6IGN1cnJlbnRWZWxvY2l0eSxcbiAgICAgIGxhc3RJZGVhbFN0eWxlOiBjdXJyZW50U3R5bGUsXG4gICAgICBsYXN0SWRlYWxWZWxvY2l0eTogY3VycmVudFZlbG9jaXR5XG4gICAgfTtcbiAgfTtcblxuICAvLyBpdCdzIHBvc3NpYmxlIHRoYXQgY3VycmVudFN0eWxlJ3MgdmFsdWUgaXMgc3RhbGU6IGlmIHByb3BzIGlzIGltbWVkaWF0ZWx5XG4gIC8vIGNoYW5nZWQgZnJvbSAwIHRvIDQwMCB0byBzcHJpbmcoMCkgYWdhaW4sIHRoZSBhc3luYyBjdXJyZW50U3R5bGUgaXMgc3RpbGxcbiAgLy8gYXQgMCAoZGlkbid0IGhhdmUgdGltZSB0byB0aWNrIGFuZCBpbnRlcnBvbGF0ZSBldmVuIG9uY2UpLiBJZiB3ZSBuYWl2ZWx5XG4gIC8vIGNvbXBhcmUgY3VycmVudFN0eWxlIHdpdGggZGVzdFZhbCBpdCdsbCBiZSAwID09PSAwIChubyBhbmltYXRpb24sIHN0b3ApLlxuICAvLyBJbiByZWFsaXR5IGN1cnJlbnRTdHlsZSBzaG91bGQgYmUgNDAwXG5cbiAgTW90aW9uLnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudCA9IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIHRoaXMucHJldlRpbWUgPSBfcGVyZm9ybWFuY2VOb3cyWydkZWZhdWx0J10oKTtcbiAgICB0aGlzLnN0YXJ0QW5pbWF0aW9uSWZOZWNlc3NhcnkoKTtcbiAgfTtcblxuICBNb3Rpb24ucHJvdG90eXBlLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgPSBmdW5jdGlvbiBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKHByb3BzKSB7XG4gICAgaWYgKHRoaXMudW5yZWFkUHJvcFN0eWxlICE9IG51bGwpIHtcbiAgICAgIC8vIHByZXZpb3VzIHByb3BzIGhhdmVuJ3QgaGFkIHRoZSBjaGFuY2UgdG8gYmUgc2V0IHlldDsgc2V0IHRoZW0gaGVyZVxuICAgICAgdGhpcy5jbGVhclVucmVhZFByb3BTdHlsZSh0aGlzLnVucmVhZFByb3BTdHlsZSk7XG4gICAgfVxuXG4gICAgdGhpcy51bnJlYWRQcm9wU3R5bGUgPSBwcm9wcy5zdHlsZTtcbiAgICBpZiAodGhpcy5hbmltYXRpb25JRCA9PSBudWxsKSB7XG4gICAgICB0aGlzLnByZXZUaW1lID0gX3BlcmZvcm1hbmNlTm93MlsnZGVmYXVsdCddKCk7XG4gICAgICB0aGlzLnN0YXJ0QW5pbWF0aW9uSWZOZWNlc3NhcnkoKTtcbiAgICB9XG4gIH07XG5cbiAgTW90aW9uLnByb3RvdHlwZS5jb21wb25lbnRXaWxsVW5tb3VudCA9IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIGlmICh0aGlzLmFuaW1hdGlvbklEICE9IG51bGwpIHtcbiAgICAgIF9yYWYyWydkZWZhdWx0J10uY2FuY2VsKHRoaXMuYW5pbWF0aW9uSUQpO1xuICAgICAgdGhpcy5hbmltYXRpb25JRCA9IG51bGw7XG4gICAgfVxuICB9O1xuXG4gIE1vdGlvbi5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgIHZhciByZW5kZXJlZENoaWxkcmVuID0gdGhpcy5wcm9wcy5jaGlsZHJlbih0aGlzLnN0YXRlLmN1cnJlbnRTdHlsZSk7XG4gICAgcmV0dXJuIHJlbmRlcmVkQ2hpbGRyZW4gJiYgX3JlYWN0MlsnZGVmYXVsdCddLkNoaWxkcmVuLm9ubHkocmVuZGVyZWRDaGlsZHJlbik7XG4gIH07XG5cbiAgcmV0dXJuIE1vdGlvbjtcbn0pKF9yZWFjdDJbJ2RlZmF1bHQnXS5Db21wb25lbnQpO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBNb3Rpb247XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuLy8gYWZ0ZXIgY2hlY2tpbmcgZm9yIHVucmVhZFByb3BTdHlsZSAhPSBudWxsLCB3ZSBtYW51YWxseSBnbyBzZXQgdGhlXG4vLyBub24taW50ZXJwb2xhdGluZyB2YWx1ZXMgKHRob3NlIHRoYXQgYXJlIGEgbnVtYmVyLCB3aXRob3V0IGEgc3ByaW5nXG4vLyBjb25maWcpXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3JlYWN0LW1vdGlvbi9saWIvTW90aW9uLmpzXG4vLyBtb2R1bGUgaWQgPSA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIlxuXG4vLyBjdXJyZW50bHkgdXNlZCB0byBpbml0aWF0ZSB0aGUgdmVsb2NpdHkgc3R5bGUgb2JqZWN0IHRvIDBcbid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IG1hcFRvWmVybztcblxuZnVuY3Rpb24gbWFwVG9aZXJvKG9iaikge1xuICB2YXIgcmV0ID0ge307XG4gIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgcmV0W2tleV0gPSAwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcmVhY3QtbW90aW9uL2xpYi9tYXBUb1plcm8uanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIlxuLy8gdHVybiB7eDoge3ZhbDogMSwgc3RpZmZuZXNzOiAxLCBkYW1waW5nOiAyfSwgeTogMn0gZ2VuZXJhdGVkIGJ5XG4vLyBge3g6IHNwcmluZygxLCB7c3RpZmZuZXNzOiAxLCBkYW1waW5nOiAyfSksIHk6IDJ9YCBpbnRvIHt4OiAxLCB5OiAyfVxuXG4ndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzWydkZWZhdWx0J10gPSBzdHJpcFN0eWxlO1xuXG5mdW5jdGlvbiBzdHJpcFN0eWxlKHN0eWxlKSB7XG4gIHZhciByZXQgPSB7fTtcbiAgZm9yICh2YXIga2V5IGluIHN0eWxlKSB7XG4gICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc3R5bGUsIGtleSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICByZXRba2V5XSA9IHR5cGVvZiBzdHlsZVtrZXldID09PSAnbnVtYmVyJyA/IHN0eWxlW2tleV0gOiBzdHlsZVtrZXldLnZhbDtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcmVhY3QtbW90aW9uL2xpYi9zdHJpcFN0eWxlLmpzXG4vLyBtb2R1bGUgaWQgPSAxMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJcblxuLy8gc3RlcHBlciBpcyB1c2VkIGEgbG90LiBTYXZlcyBhbGxvY2F0aW9uIHRvIHJldHVybiB0aGUgc2FtZSBhcnJheSB3cmFwcGVyLlxuLy8gVGhpcyBpcyBmaW5lIGFuZCBkYW5nZXItZnJlZSBhZ2FpbnN0IG11dGF0aW9ucyBiZWNhdXNlIHRoZSBjYWxsc2l0ZVxuLy8gaW1tZWRpYXRlbHkgZGVzdHJ1Y3R1cmVzIGl0IGFuZCBnZXRzIHRoZSBudW1iZXJzIGluc2lkZSB3aXRob3V0IHBhc3NpbmcgdGhlXG5cInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gc3RlcHBlcjtcblxudmFyIHJldXNlZFR1cGxlID0gWzAsIDBdO1xuXG5mdW5jdGlvbiBzdGVwcGVyKHNlY29uZFBlckZyYW1lLCB4LCB2LCBkZXN0WCwgaywgYiwgcHJlY2lzaW9uKSB7XG4gIC8vIFNwcmluZyBzdGlmZm5lc3MsIGluIGtnIC8gc14yXG5cbiAgLy8gZm9yIGFuaW1hdGlvbnMsIGRlc3RYIGlzIHJlYWxseSBzcHJpbmcgbGVuZ3RoIChzcHJpbmcgYXQgcmVzdCkuIGluaXRpYWxcbiAgLy8gcG9zaXRpb24gaXMgY29uc2lkZXJlZCBhcyB0aGUgc3RyZXRjaGVkL2NvbXByZXNzZWQgcG9zaXRpb24gb2YgYSBzcHJpbmdcbiAgdmFyIEZzcHJpbmcgPSAtayAqICh4IC0gZGVzdFgpO1xuXG4gIC8vIERhbXBpbmcsIGluIGtnIC8gc1xuICB2YXIgRmRhbXBlciA9IC1iICogdjtcblxuICAvLyB1c3VhbGx5IHdlIHB1dCBtYXNzIGhlcmUsIGJ1dCBmb3IgYW5pbWF0aW9uIHB1cnBvc2VzLCBzcGVjaWZ5aW5nIG1hc3MgaXMgYVxuICAvLyBiaXQgcmVkdW5kYW50LiB5b3UgY291bGQgc2ltcGx5IGFkanVzdCBrIGFuZCBiIGFjY29yZGluZ2x5XG4gIC8vIGxldCBhID0gKEZzcHJpbmcgKyBGZGFtcGVyKSAvIG1hc3M7XG4gIHZhciBhID0gRnNwcmluZyArIEZkYW1wZXI7XG5cbiAgdmFyIG5ld1YgPSB2ICsgYSAqIHNlY29uZFBlckZyYW1lO1xuICB2YXIgbmV3WCA9IHggKyBuZXdWICogc2Vjb25kUGVyRnJhbWU7XG5cbiAgaWYgKE1hdGguYWJzKG5ld1YpIDwgcHJlY2lzaW9uICYmIE1hdGguYWJzKG5ld1ggLSBkZXN0WCkgPCBwcmVjaXNpb24pIHtcbiAgICByZXVzZWRUdXBsZVswXSA9IGRlc3RYO1xuICAgIHJldXNlZFR1cGxlWzFdID0gMDtcbiAgICByZXR1cm4gcmV1c2VkVHVwbGU7XG4gIH1cblxuICByZXVzZWRUdXBsZVswXSA9IG5ld1g7XG4gIHJldXNlZFR1cGxlWzFdID0gbmV3VjtcbiAgcmV0dXJuIHJldXNlZFR1cGxlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbXCJkZWZhdWx0XCJdO1xuLy8gYXJyYXkgcmVmZXJlbmNlIGFyb3VuZC5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcmVhY3QtbW90aW9uL2xpYi9zdGVwcGVyLmpzXG4vLyBtb2R1bGUgaWQgPSAxMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuNy4xXG4oZnVuY3Rpb24oKSB7XG4gIHZhciBnZXROYW5vU2Vjb25kcywgaHJ0aW1lLCBsb2FkVGltZTtcblxuICBpZiAoKHR5cGVvZiBwZXJmb3JtYW5jZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBwZXJmb3JtYW5jZSAhPT0gbnVsbCkgJiYgcGVyZm9ybWFuY2Uubm93KSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICB9O1xuICB9IGVsc2UgaWYgKCh0eXBlb2YgcHJvY2VzcyAhPT0gXCJ1bmRlZmluZWRcIiAmJiBwcm9jZXNzICE9PSBudWxsKSAmJiBwcm9jZXNzLmhydGltZSkge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gKGdldE5hbm9TZWNvbmRzKCkgLSBsb2FkVGltZSkgLyAxZTY7XG4gICAgfTtcbiAgICBocnRpbWUgPSBwcm9jZXNzLmhydGltZTtcbiAgICBnZXROYW5vU2Vjb25kcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGhyO1xuICAgICAgaHIgPSBocnRpbWUoKTtcbiAgICAgIHJldHVybiBoclswXSAqIDFlOSArIGhyWzFdO1xuICAgIH07XG4gICAgbG9hZFRpbWUgPSBnZXROYW5vU2Vjb25kcygpO1xuICB9IGVsc2UgaWYgKERhdGUubm93KSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBEYXRlLm5vdygpIC0gbG9hZFRpbWU7XG4gICAgfTtcbiAgICBsb2FkVGltZSA9IERhdGUubm93KCk7XG4gIH0gZWxzZSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIGxvYWRUaW1lO1xuICAgIH07XG4gICAgbG9hZFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgfVxuXG59KS5jYWxsKHRoaXMpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3BlcmZvcm1hbmNlLW5vdy9saWIvcGVyZm9ybWFuY2Utbm93LmpzXG4vLyBtb2R1bGUgaWQgPSAxM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyBzaGltIGZvciB1c2luZyBwcm9jZXNzIGluIGJyb3dzZXJcbnZhciBwcm9jZXNzID0gbW9kdWxlLmV4cG9ydHMgPSB7fTtcblxuLy8gY2FjaGVkIGZyb20gd2hhdGV2ZXIgZ2xvYmFsIGlzIHByZXNlbnQgc28gdGhhdCB0ZXN0IHJ1bm5lcnMgdGhhdCBzdHViIGl0XG4vLyBkb24ndCBicmVhayB0aGluZ3MuICBCdXQgd2UgbmVlZCB0byB3cmFwIGl0IGluIGEgdHJ5IGNhdGNoIGluIGNhc2UgaXQgaXNcbi8vIHdyYXBwZWQgaW4gc3RyaWN0IG1vZGUgY29kZSB3aGljaCBkb2Vzbid0IGRlZmluZSBhbnkgZ2xvYmFscy4gIEl0J3MgaW5zaWRlIGFcbi8vIGZ1bmN0aW9uIGJlY2F1c2UgdHJ5L2NhdGNoZXMgZGVvcHRpbWl6ZSBpbiBjZXJ0YWluIGVuZ2luZXMuXG5cbnZhciBjYWNoZWRTZXRUaW1lb3V0O1xudmFyIGNhY2hlZENsZWFyVGltZW91dDtcblxuZnVuY3Rpb24gZGVmYXVsdFNldFRpbW91dCgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbmZ1bmN0aW9uIGRlZmF1bHRDbGVhclRpbWVvdXQgKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG4oZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2V0VGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2YgY2xlYXJUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBkZWZhdWx0Q2xlYXJUaW1lb3V0O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBkZWZhdWx0Q2xlYXJUaW1lb3V0O1xuICAgIH1cbn0gKCkpXG5mdW5jdGlvbiBydW5UaW1lb3V0KGZ1bikge1xuICAgIGlmIChjYWNoZWRTZXRUaW1lb3V0ID09PSBzZXRUaW1lb3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICAvLyBpZiBzZXRUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkU2V0VGltZW91dCA9PT0gZGVmYXVsdFNldFRpbW91dCB8fCAhY2FjaGVkU2V0VGltZW91dCkgJiYgc2V0VGltZW91dCkge1xuICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dChmdW4sIDApO1xuICAgIH0gY2F0Y2goZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwobnVsbCwgZnVuLCAwKTtcbiAgICAgICAgfSBjYXRjaChlKXtcbiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yXG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKHRoaXMsIGZ1biwgMCk7XG4gICAgICAgIH1cbiAgICB9XG5cblxufVxuZnVuY3Rpb24gcnVuQ2xlYXJUaW1lb3V0KG1hcmtlcikge1xuICAgIGlmIChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGNsZWFyVGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICAvLyBpZiBjbGVhclRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGRlZmF1bHRDbGVhclRpbWVvdXQgfHwgIWNhY2hlZENsZWFyVGltZW91dCkgJiYgY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9IGNhdGNoIChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCAgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbChudWxsLCBtYXJrZXIpO1xuICAgICAgICB9IGNhdGNoIChlKXtcbiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yLlxuICAgICAgICAgICAgLy8gU29tZSB2ZXJzaW9ucyBvZiBJLkUuIGhhdmUgZGlmZmVyZW50IHJ1bGVzIGZvciBjbGVhclRpbWVvdXQgdnMgc2V0VGltZW91dFxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKHRoaXMsIG1hcmtlcik7XG4gICAgICAgIH1cbiAgICB9XG5cblxuXG59XG52YXIgcXVldWUgPSBbXTtcbnZhciBkcmFpbmluZyA9IGZhbHNlO1xudmFyIGN1cnJlbnRRdWV1ZTtcbnZhciBxdWV1ZUluZGV4ID0gLTE7XG5cbmZ1bmN0aW9uIGNsZWFuVXBOZXh0VGljaygpIHtcbiAgICBpZiAoIWRyYWluaW5nIHx8ICFjdXJyZW50UXVldWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIGlmIChjdXJyZW50UXVldWUubGVuZ3RoKSB7XG4gICAgICAgIHF1ZXVlID0gY3VycmVudFF1ZXVlLmNvbmNhdChxdWV1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuICAgIH1cbiAgICBpZiAocXVldWUubGVuZ3RoKSB7XG4gICAgICAgIGRyYWluUXVldWUoKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRyYWluUXVldWUoKSB7XG4gICAgaWYgKGRyYWluaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIHRpbWVvdXQgPSBydW5UaW1lb3V0KGNsZWFuVXBOZXh0VGljayk7XG4gICAgZHJhaW5pbmcgPSB0cnVlO1xuXG4gICAgdmFyIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB3aGlsZShsZW4pIHtcbiAgICAgICAgY3VycmVudFF1ZXVlID0gcXVldWU7XG4gICAgICAgIHF1ZXVlID0gW107XG4gICAgICAgIHdoaWxlICgrK3F1ZXVlSW5kZXggPCBsZW4pIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50UXVldWUpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50UXVldWVbcXVldWVJbmRleF0ucnVuKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuICAgICAgICBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgfVxuICAgIGN1cnJlbnRRdWV1ZSA9IG51bGw7XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBydW5DbGVhclRpbWVvdXQodGltZW91dCk7XG59XG5cbnByb2Nlc3MubmV4dFRpY2sgPSBmdW5jdGlvbiAoZnVuKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCAtIDEpO1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYXJnc1tpIC0gMV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcXVldWUucHVzaChuZXcgSXRlbShmdW4sIGFyZ3MpKTtcbiAgICBpZiAocXVldWUubGVuZ3RoID09PSAxICYmICFkcmFpbmluZykge1xuICAgICAgICBydW5UaW1lb3V0KGRyYWluUXVldWUpO1xuICAgIH1cbn07XG5cbi8vIHY4IGxpa2VzIHByZWRpY3RpYmxlIG9iamVjdHNcbmZ1bmN0aW9uIEl0ZW0oZnVuLCBhcnJheSkge1xuICAgIHRoaXMuZnVuID0gZnVuO1xuICAgIHRoaXMuYXJyYXkgPSBhcnJheTtcbn1cbkl0ZW0ucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZ1bi5hcHBseShudWxsLCB0aGlzLmFycmF5KTtcbn07XG5wcm9jZXNzLnRpdGxlID0gJ2Jyb3dzZXInO1xucHJvY2Vzcy5icm93c2VyID0gdHJ1ZTtcbnByb2Nlc3MuZW52ID0ge307XG5wcm9jZXNzLmFyZ3YgPSBbXTtcbnByb2Nlc3MudmVyc2lvbiA9ICcnOyAvLyBlbXB0eSBzdHJpbmcgdG8gYXZvaWQgcmVnZXhwIGlzc3Vlc1xucHJvY2Vzcy52ZXJzaW9ucyA9IHt9O1xuXG5mdW5jdGlvbiBub29wKCkge31cblxucHJvY2Vzcy5vbiA9IG5vb3A7XG5wcm9jZXNzLmFkZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3Mub25jZSA9IG5vb3A7XG5wcm9jZXNzLm9mZiA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUxpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlQWxsTGlzdGVuZXJzID0gbm9vcDtcbnByb2Nlc3MuZW1pdCA9IG5vb3A7XG5cbnByb2Nlc3MuYmluZGluZyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcblxucHJvY2Vzcy5jd2QgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnLycgfTtcbnByb2Nlc3MuY2hkaXIgPSBmdW5jdGlvbiAoZGlyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5wcm9jZXNzLnVtYXNrID0gZnVuY3Rpb24oKSB7IHJldHVybiAwOyB9O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3Byb2Nlc3MvYnJvd3Nlci5qc1xuLy8gbW9kdWxlIGlkID0gMTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIG5vdyA9IHJlcXVpcmUoJ3BlcmZvcm1hbmNlLW5vdycpXG4gICwgcm9vdCA9IHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnID8gZ2xvYmFsIDogd2luZG93XG4gICwgdmVuZG9ycyA9IFsnbW96JywgJ3dlYmtpdCddXG4gICwgc3VmZml4ID0gJ0FuaW1hdGlvbkZyYW1lJ1xuICAsIHJhZiA9IHJvb3RbJ3JlcXVlc3QnICsgc3VmZml4XVxuICAsIGNhZiA9IHJvb3RbJ2NhbmNlbCcgKyBzdWZmaXhdIHx8IHJvb3RbJ2NhbmNlbFJlcXVlc3QnICsgc3VmZml4XVxuXG5mb3IodmFyIGkgPSAwOyAhcmFmICYmIGkgPCB2ZW5kb3JzLmxlbmd0aDsgaSsrKSB7XG4gIHJhZiA9IHJvb3RbdmVuZG9yc1tpXSArICdSZXF1ZXN0JyArIHN1ZmZpeF1cbiAgY2FmID0gcm9vdFt2ZW5kb3JzW2ldICsgJ0NhbmNlbCcgKyBzdWZmaXhdXG4gICAgICB8fCByb290W3ZlbmRvcnNbaV0gKyAnQ2FuY2VsUmVxdWVzdCcgKyBzdWZmaXhdXG59XG5cbi8vIFNvbWUgdmVyc2lvbnMgb2YgRkYgaGF2ZSByQUYgYnV0IG5vdCBjQUZcbmlmKCFyYWYgfHwgIWNhZikge1xuICB2YXIgbGFzdCA9IDBcbiAgICAsIGlkID0gMFxuICAgICwgcXVldWUgPSBbXVxuICAgICwgZnJhbWVEdXJhdGlvbiA9IDEwMDAgLyA2MFxuXG4gIHJhZiA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgaWYocXVldWUubGVuZ3RoID09PSAwKSB7XG4gICAgICB2YXIgX25vdyA9IG5vdygpXG4gICAgICAgICwgbmV4dCA9IE1hdGgubWF4KDAsIGZyYW1lRHVyYXRpb24gLSAoX25vdyAtIGxhc3QpKVxuICAgICAgbGFzdCA9IG5leHQgKyBfbm93XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgY3AgPSBxdWV1ZS5zbGljZSgwKVxuICAgICAgICAvLyBDbGVhciBxdWV1ZSBoZXJlIHRvIHByZXZlbnRcbiAgICAgICAgLy8gY2FsbGJhY2tzIGZyb20gYXBwZW5kaW5nIGxpc3RlbmVyc1xuICAgICAgICAvLyB0byB0aGUgY3VycmVudCBmcmFtZSdzIHF1ZXVlXG4gICAgICAgIHF1ZXVlLmxlbmd0aCA9IDBcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGNwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYoIWNwW2ldLmNhbmNlbGxlZCkge1xuICAgICAgICAgICAgdHJ5e1xuICAgICAgICAgICAgICBjcFtpXS5jYWxsYmFjayhsYXN0KVxuICAgICAgICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHRocm93IGUgfSwgMClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sIE1hdGgucm91bmQobmV4dCkpXG4gICAgfVxuICAgIHF1ZXVlLnB1c2goe1xuICAgICAgaGFuZGxlOiArK2lkLFxuICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrLFxuICAgICAgY2FuY2VsbGVkOiBmYWxzZVxuICAgIH0pXG4gICAgcmV0dXJuIGlkXG4gIH1cblxuICBjYWYgPSBmdW5jdGlvbihoYW5kbGUpIHtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgcXVldWUubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmKHF1ZXVlW2ldLmhhbmRsZSA9PT0gaGFuZGxlKSB7XG4gICAgICAgIHF1ZXVlW2ldLmNhbmNlbGxlZCA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmbikge1xuICAvLyBXcmFwIGluIGEgbmV3IGZ1bmN0aW9uIHRvIHByZXZlbnRcbiAgLy8gYGNhbmNlbGAgcG90ZW50aWFsbHkgYmVpbmcgYXNzaWduZWRcbiAgLy8gdG8gdGhlIG5hdGl2ZSByQUYgZnVuY3Rpb25cbiAgcmV0dXJuIHJhZi5jYWxsKHJvb3QsIGZuKVxufVxubW9kdWxlLmV4cG9ydHMuY2FuY2VsID0gZnVuY3Rpb24oKSB7XG4gIGNhZi5hcHBseShyb290LCBhcmd1bWVudHMpXG59XG5tb2R1bGUuZXhwb3J0cy5wb2x5ZmlsbCA9IGZ1bmN0aW9uKCkge1xuICByb290LnJlcXVlc3RBbmltYXRpb25GcmFtZSA9IHJhZlxuICByb290LmNhbmNlbEFuaW1hdGlvbkZyYW1lID0gY2FmXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcmFmL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuMTIuMlxuKGZ1bmN0aW9uKCkge1xuICB2YXIgZ2V0TmFub1NlY29uZHMsIGhydGltZSwgbG9hZFRpbWUsIG1vZHVsZUxvYWRUaW1lLCBub2RlTG9hZFRpbWUsIHVwVGltZTtcblxuICBpZiAoKHR5cGVvZiBwZXJmb3JtYW5jZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBwZXJmb3JtYW5jZSAhPT0gbnVsbCkgJiYgcGVyZm9ybWFuY2Uubm93KSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICB9O1xuICB9IGVsc2UgaWYgKCh0eXBlb2YgcHJvY2VzcyAhPT0gXCJ1bmRlZmluZWRcIiAmJiBwcm9jZXNzICE9PSBudWxsKSAmJiBwcm9jZXNzLmhydGltZSkge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gKGdldE5hbm9TZWNvbmRzKCkgLSBub2RlTG9hZFRpbWUpIC8gMWU2O1xuICAgIH07XG4gICAgaHJ0aW1lID0gcHJvY2Vzcy5ocnRpbWU7XG4gICAgZ2V0TmFub1NlY29uZHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBocjtcbiAgICAgIGhyID0gaHJ0aW1lKCk7XG4gICAgICByZXR1cm4gaHJbMF0gKiAxZTkgKyBoclsxXTtcbiAgICB9O1xuICAgIG1vZHVsZUxvYWRUaW1lID0gZ2V0TmFub1NlY29uZHMoKTtcbiAgICB1cFRpbWUgPSBwcm9jZXNzLnVwdGltZSgpICogMWU5O1xuICAgIG5vZGVMb2FkVGltZSA9IG1vZHVsZUxvYWRUaW1lIC0gdXBUaW1lO1xuICB9IGVsc2UgaWYgKERhdGUubm93KSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBEYXRlLm5vdygpIC0gbG9hZFRpbWU7XG4gICAgfTtcbiAgICBsb2FkVGltZSA9IERhdGUubm93KCk7XG4gIH0gZWxzZSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIGxvYWRUaW1lO1xuICAgIH07XG4gICAgbG9hZFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgfVxuXG59KS5jYWxsKHRoaXMpO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1wZXJmb3JtYW5jZS1ub3cuanMubWFwXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcmFmL34vcGVyZm9ybWFuY2Utbm93L2xpYi9wZXJmb3JtYW5jZS1ub3cuanNcbi8vIG1vZHVsZSBpZCA9IDE2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIlxuXG4vLyB1c2FnZSBhc3N1bXB0aW9uOiBjdXJyZW50U3R5bGUgdmFsdWVzIGhhdmUgYWxyZWFkeSBiZWVuIHJlbmRlcmVkIGJ1dCBpdCBzYXlzXG4vLyBub3RoaW5nIG9mIHdoZXRoZXIgY3VycmVudFN0eWxlIGlzIHN0YWxlIChzZWUgdW5yZWFkUHJvcFN0eWxlKVxuJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0c1snZGVmYXVsdCddID0gc2hvdWxkU3RvcEFuaW1hdGlvbjtcblxuZnVuY3Rpb24gc2hvdWxkU3RvcEFuaW1hdGlvbihjdXJyZW50U3R5bGUsIHN0eWxlLCBjdXJyZW50VmVsb2NpdHkpIHtcbiAgZm9yICh2YXIga2V5IGluIHN0eWxlKSB7XG4gICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc3R5bGUsIGtleSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChjdXJyZW50VmVsb2NpdHlba2V5XSAhPT0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHZhciBzdHlsZVZhbHVlID0gdHlwZW9mIHN0eWxlW2tleV0gPT09ICdudW1iZXInID8gc3R5bGVba2V5XSA6IHN0eWxlW2tleV0udmFsO1xuICAgIC8vIHN0ZXBwZXIgd2lsbCBoYXZlIGFscmVhZHkgdGFrZW4gY2FyZSBvZiByb3VuZGluZyBwcmVjaXNpb24gZXJyb3JzLCBzb1xuICAgIC8vIHdvbid0IGhhdmUgc3VjaCB0aGluZyBhcyAwLjk5OTkgIT09PSAxXG4gICAgaWYgKGN1cnJlbnRTdHlsZVtrZXldICE9PSBzdHlsZVZhbHVlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9yZWFjdC1tb3Rpb24vbGliL3Nob3VsZFN0b3BBbmltYXRpb24uanNcbi8vIG1vZHVsZSBpZCA9IDE3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICovXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIFN5bWJvbC5mb3IgJiZcbiAgICBTeW1ib2wuZm9yKCdyZWFjdC5lbGVtZW50JykpIHx8XG4gICAgMHhlYWM3O1xuXG4gIHZhciBpc1ZhbGlkRWxlbWVudCA9IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHJldHVybiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJlxuICAgICAgb2JqZWN0ICE9PSBudWxsICYmXG4gICAgICBvYmplY3QuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRTtcbiAgfTtcblxuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IHRydWU7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycycpKGlzVmFsaWRFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKTtcbn0gZWxzZSB7XG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IHByb2R1Y3Rpb24gYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcycpKCk7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcHJvcC10eXBlcy9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5RnVuY3Rpb24nKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCcpO1xudmFyIGNoZWNrUHJvcFR5cGVzID0gcmVxdWlyZSgnLi9jaGVja1Byb3BUeXBlcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGlzVmFsaWRFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKSB7XG4gIC8qIGdsb2JhbCBTeW1ib2wgKi9cbiAgdmFyIElURVJBVE9SX1NZTUJPTCA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLml0ZXJhdG9yO1xuICB2YXIgRkFVWF9JVEVSQVRPUl9TWU1CT0wgPSAnQEBpdGVyYXRvcic7IC8vIEJlZm9yZSBTeW1ib2wgc3BlYy5cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgaXRlcmF0b3IgbWV0aG9kIGZ1bmN0aW9uIGNvbnRhaW5lZCBvbiB0aGUgaXRlcmFibGUgb2JqZWN0LlxuICAgKlxuICAgKiBCZSBzdXJlIHRvIGludm9rZSB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgaXRlcmFibGUgYXMgY29udGV4dDpcbiAgICpcbiAgICogICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihteUl0ZXJhYmxlKTtcbiAgICogICAgIGlmIChpdGVyYXRvckZuKSB7XG4gICAqICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChteUl0ZXJhYmxlKTtcbiAgICogICAgICAgLi4uXG4gICAqICAgICB9XG4gICAqXG4gICAqIEBwYXJhbSB7P29iamVjdH0gbWF5YmVJdGVyYWJsZVxuICAgKiBAcmV0dXJuIHs/ZnVuY3Rpb259XG4gICAqL1xuICBmdW5jdGlvbiBnZXRJdGVyYXRvckZuKG1heWJlSXRlcmFibGUpIHtcbiAgICB2YXIgaXRlcmF0b3JGbiA9IG1heWJlSXRlcmFibGUgJiYgKElURVJBVE9SX1NZTUJPTCAmJiBtYXliZUl0ZXJhYmxlW0lURVJBVE9SX1NZTUJPTF0gfHwgbWF5YmVJdGVyYWJsZVtGQVVYX0lURVJBVE9SX1NZTUJPTF0pO1xuICAgIGlmICh0eXBlb2YgaXRlcmF0b3JGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIGl0ZXJhdG9yRm47XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbGxlY3Rpb24gb2YgbWV0aG9kcyB0aGF0IGFsbG93IGRlY2xhcmF0aW9uIGFuZCB2YWxpZGF0aW9uIG9mIHByb3BzIHRoYXQgYXJlXG4gICAqIHN1cHBsaWVkIHRvIFJlYWN0IGNvbXBvbmVudHMuIEV4YW1wbGUgdXNhZ2U6XG4gICAqXG4gICAqICAgdmFyIFByb3BzID0gcmVxdWlyZSgnUmVhY3RQcm9wVHlwZXMnKTtcbiAgICogICB2YXIgTXlBcnRpY2xlID0gUmVhY3QuY3JlYXRlQ2xhc3Moe1xuICAgKiAgICAgcHJvcFR5cGVzOiB7XG4gICAqICAgICAgIC8vIEFuIG9wdGlvbmFsIHN0cmluZyBwcm9wIG5hbWVkIFwiZGVzY3JpcHRpb25cIi5cbiAgICogICAgICAgZGVzY3JpcHRpb246IFByb3BzLnN0cmluZyxcbiAgICpcbiAgICogICAgICAgLy8gQSByZXF1aXJlZCBlbnVtIHByb3AgbmFtZWQgXCJjYXRlZ29yeVwiLlxuICAgKiAgICAgICBjYXRlZ29yeTogUHJvcHMub25lT2YoWydOZXdzJywnUGhvdG9zJ10pLmlzUmVxdWlyZWQsXG4gICAqXG4gICAqICAgICAgIC8vIEEgcHJvcCBuYW1lZCBcImRpYWxvZ1wiIHRoYXQgcmVxdWlyZXMgYW4gaW5zdGFuY2Ugb2YgRGlhbG9nLlxuICAgKiAgICAgICBkaWFsb2c6IFByb3BzLmluc3RhbmNlT2YoRGlhbG9nKS5pc1JlcXVpcmVkXG4gICAqICAgICB9LFxuICAgKiAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHsgLi4uIH1cbiAgICogICB9KTtcbiAgICpcbiAgICogQSBtb3JlIGZvcm1hbCBzcGVjaWZpY2F0aW9uIG9mIGhvdyB0aGVzZSBtZXRob2RzIGFyZSB1c2VkOlxuICAgKlxuICAgKiAgIHR5cGUgOj0gYXJyYXl8Ym9vbHxmdW5jfG9iamVjdHxudW1iZXJ8c3RyaW5nfG9uZU9mKFsuLi5dKXxpbnN0YW5jZU9mKC4uLilcbiAgICogICBkZWNsIDo9IFJlYWN0UHJvcFR5cGVzLnt0eXBlfSguaXNSZXF1aXJlZCk/XG4gICAqXG4gICAqIEVhY2ggYW5kIGV2ZXJ5IGRlY2xhcmF0aW9uIHByb2R1Y2VzIGEgZnVuY3Rpb24gd2l0aCB0aGUgc2FtZSBzaWduYXR1cmUuIFRoaXNcbiAgICogYWxsb3dzIHRoZSBjcmVhdGlvbiBvZiBjdXN0b20gdmFsaWRhdGlvbiBmdW5jdGlvbnMuIEZvciBleGFtcGxlOlxuICAgKlxuICAgKiAgdmFyIE15TGluayA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcbiAgICogICAgcHJvcFR5cGVzOiB7XG4gICAqICAgICAgLy8gQW4gb3B0aW9uYWwgc3RyaW5nIG9yIFVSSSBwcm9wIG5hbWVkIFwiaHJlZlwiLlxuICAgKiAgICAgIGhyZWY6IGZ1bmN0aW9uKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSkge1xuICAgKiAgICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICogICAgICAgIGlmIChwcm9wVmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgcHJvcFZhbHVlICE9PSAnc3RyaW5nJyAmJlxuICAgKiAgICAgICAgICAgICEocHJvcFZhbHVlIGluc3RhbmNlb2YgVVJJKSkge1xuICAgKiAgICAgICAgICByZXR1cm4gbmV3IEVycm9yKFxuICAgKiAgICAgICAgICAgICdFeHBlY3RlZCBhIHN0cmluZyBvciBhbiBVUkkgZm9yICcgKyBwcm9wTmFtZSArICcgaW4gJyArXG4gICAqICAgICAgICAgICAgY29tcG9uZW50TmFtZVxuICAgKiAgICAgICAgICApO1xuICAgKiAgICAgICAgfVxuICAgKiAgICAgIH1cbiAgICogICAgfSxcbiAgICogICAgcmVuZGVyOiBmdW5jdGlvbigpIHsuLi59XG4gICAqICB9KTtcbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuXG4gIHZhciBBTk9OWU1PVVMgPSAnPDxhbm9ueW1vdXM+Pic7XG5cbiAgLy8gSW1wb3J0YW50IVxuICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBzeW5jIHdpdGggcHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcy5qc2AuXG4gIHZhciBSZWFjdFByb3BUeXBlcyA9IHtcbiAgICBhcnJheTogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ2FycmF5JyksXG4gICAgYm9vbDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ2Jvb2xlYW4nKSxcbiAgICBmdW5jOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignZnVuY3Rpb24nKSxcbiAgICBudW1iZXI6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdudW1iZXInKSxcbiAgICBvYmplY3Q6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdvYmplY3QnKSxcbiAgICBzdHJpbmc6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdzdHJpbmcnKSxcbiAgICBzeW1ib2w6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdzeW1ib2wnKSxcblxuICAgIGFueTogY3JlYXRlQW55VHlwZUNoZWNrZXIoKSxcbiAgICBhcnJheU9mOiBjcmVhdGVBcnJheU9mVHlwZUNoZWNrZXIsXG4gICAgZWxlbWVudDogY3JlYXRlRWxlbWVudFR5cGVDaGVja2VyKCksXG4gICAgaW5zdGFuY2VPZjogY3JlYXRlSW5zdGFuY2VUeXBlQ2hlY2tlcixcbiAgICBub2RlOiBjcmVhdGVOb2RlQ2hlY2tlcigpLFxuICAgIG9iamVjdE9mOiBjcmVhdGVPYmplY3RPZlR5cGVDaGVja2VyLFxuICAgIG9uZU9mOiBjcmVhdGVFbnVtVHlwZUNoZWNrZXIsXG4gICAgb25lT2ZUeXBlOiBjcmVhdGVVbmlvblR5cGVDaGVja2VyLFxuICAgIHNoYXBlOiBjcmVhdGVTaGFwZVR5cGVDaGVja2VyXG4gIH07XG5cbiAgLyoqXG4gICAqIGlubGluZWQgT2JqZWN0LmlzIHBvbHlmaWxsIHRvIGF2b2lkIHJlcXVpcmluZyBjb25zdW1lcnMgc2hpcCB0aGVpciBvd25cbiAgICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2lzXG4gICAqL1xuICAvKmVzbGludC1kaXNhYmxlIG5vLXNlbGYtY29tcGFyZSovXG4gIGZ1bmN0aW9uIGlzKHgsIHkpIHtcbiAgICAvLyBTYW1lVmFsdWUgYWxnb3JpdGhtXG4gICAgaWYgKHggPT09IHkpIHtcbiAgICAgIC8vIFN0ZXBzIDEtNSwgNy0xMFxuICAgICAgLy8gU3RlcHMgNi5iLTYuZTogKzAgIT0gLTBcbiAgICAgIHJldHVybiB4ICE9PSAwIHx8IDEgLyB4ID09PSAxIC8geTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU3RlcCA2LmE6IE5hTiA9PSBOYU5cbiAgICAgIHJldHVybiB4ICE9PSB4ICYmIHkgIT09IHk7XG4gICAgfVxuICB9XG4gIC8qZXNsaW50LWVuYWJsZSBuby1zZWxmLWNvbXBhcmUqL1xuXG4gIC8qKlxuICAgKiBXZSB1c2UgYW4gRXJyb3ItbGlrZSBvYmplY3QgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgYXMgcGVvcGxlIG1heSBjYWxsXG4gICAqIFByb3BUeXBlcyBkaXJlY3RseSBhbmQgaW5zcGVjdCB0aGVpciBvdXRwdXQuIEhvd2V2ZXIsIHdlIGRvbid0IHVzZSByZWFsXG4gICAqIEVycm9ycyBhbnltb3JlLiBXZSBkb24ndCBpbnNwZWN0IHRoZWlyIHN0YWNrIGFueXdheSwgYW5kIGNyZWF0aW5nIHRoZW1cbiAgICogaXMgcHJvaGliaXRpdmVseSBleHBlbnNpdmUgaWYgdGhleSBhcmUgY3JlYXRlZCB0b28gb2Z0ZW4sIHN1Y2ggYXMgd2hhdFxuICAgKiBoYXBwZW5zIGluIG9uZU9mVHlwZSgpIGZvciBhbnkgdHlwZSBiZWZvcmUgdGhlIG9uZSB0aGF0IG1hdGNoZWQuXG4gICAqL1xuICBmdW5jdGlvbiBQcm9wVHlwZUVycm9yKG1lc3NhZ2UpIHtcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIHRoaXMuc3RhY2sgPSAnJztcbiAgfVxuICAvLyBNYWtlIGBpbnN0YW5jZW9mIEVycm9yYCBzdGlsbCB3b3JrIGZvciByZXR1cm5lZCBlcnJvcnMuXG4gIFByb3BUeXBlRXJyb3IucHJvdG90eXBlID0gRXJyb3IucHJvdG90eXBlO1xuXG4gIGZ1bmN0aW9uIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBtYW51YWxQcm9wVHlwZUNhbGxDYWNoZSA9IHt9O1xuICAgICAgdmFyIG1hbnVhbFByb3BUeXBlV2FybmluZ0NvdW50ID0gMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gY2hlY2tUeXBlKGlzUmVxdWlyZWQsIHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgICBjb21wb25lbnROYW1lID0gY29tcG9uZW50TmFtZSB8fCBBTk9OWU1PVVM7XG4gICAgICBwcm9wRnVsbE5hbWUgPSBwcm9wRnVsbE5hbWUgfHwgcHJvcE5hbWU7XG5cbiAgICAgIGlmIChzZWNyZXQgIT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAgIGlmICh0aHJvd09uRGlyZWN0QWNjZXNzKSB7XG4gICAgICAgICAgLy8gTmV3IGJlaGF2aW9yIG9ubHkgZm9yIHVzZXJzIG9mIGBwcm9wLXR5cGVzYCBwYWNrYWdlXG4gICAgICAgICAgaW52YXJpYW50KFxuICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAgICAgICAnVXNlIGBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKWAgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAvLyBPbGQgYmVoYXZpb3IgZm9yIHBlb3BsZSB1c2luZyBSZWFjdC5Qcm9wVHlwZXNcbiAgICAgICAgICB2YXIgY2FjaGVLZXkgPSBjb21wb25lbnROYW1lICsgJzonICsgcHJvcE5hbWU7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIW1hbnVhbFByb3BUeXBlQ2FsbENhY2hlW2NhY2hlS2V5XSAmJlxuICAgICAgICAgICAgLy8gQXZvaWQgc3BhbW1pbmcgdGhlIGNvbnNvbGUgYmVjYXVzZSB0aGV5IGFyZSBvZnRlbiBub3QgYWN0aW9uYWJsZSBleGNlcHQgZm9yIGxpYiBhdXRob3JzXG4gICAgICAgICAgICBtYW51YWxQcm9wVHlwZVdhcm5pbmdDb3VudCA8IDNcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAnWW91IGFyZSBtYW51YWxseSBjYWxsaW5nIGEgUmVhY3QuUHJvcFR5cGVzIHZhbGlkYXRpb24gJyArXG4gICAgICAgICAgICAgICdmdW5jdGlvbiBmb3IgdGhlIGAlc2AgcHJvcCBvbiBgJXNgLiBUaGlzIGlzIGRlcHJlY2F0ZWQgJyArXG4gICAgICAgICAgICAgICdhbmQgd2lsbCB0aHJvdyBpbiB0aGUgc3RhbmRhbG9uZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAgICAgICAgICdZb3UgbWF5IGJlIHNlZWluZyB0aGlzIHdhcm5pbmcgZHVlIHRvIGEgdGhpcmQtcGFydHkgUHJvcFR5cGVzICcgK1xuICAgICAgICAgICAgICAnbGlicmFyeS4gU2VlIGh0dHBzOi8vZmIubWUvcmVhY3Qtd2FybmluZy1kb250LWNhbGwtcHJvcHR5cGVzICcgKyAnZm9yIGRldGFpbHMuJyxcbiAgICAgICAgICAgICAgcHJvcEZ1bGxOYW1lLFxuICAgICAgICAgICAgICBjb21wb25lbnROYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbWFudWFsUHJvcFR5cGVDYWxsQ2FjaGVbY2FjaGVLZXldID0gdHJ1ZTtcbiAgICAgICAgICAgIG1hbnVhbFByb3BUeXBlV2FybmluZ0NvdW50Kys7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09IG51bGwpIHtcbiAgICAgICAgaWYgKGlzUmVxdWlyZWQpIHtcbiAgICAgICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1RoZSAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2AgaXMgbWFya2VkIGFzIHJlcXVpcmVkICcgKyAoJ2luIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBidXQgaXRzIHZhbHVlIGlzIGBudWxsYC4nKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignVGhlICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgaW4gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGJ1dCBpdHMgdmFsdWUgaXMgYHVuZGVmaW5lZGAuJykpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGNoYWluZWRDaGVja1R5cGUgPSBjaGVja1R5cGUuYmluZChudWxsLCBmYWxzZSk7XG4gICAgY2hhaW5lZENoZWNrVHlwZS5pc1JlcXVpcmVkID0gY2hlY2tUeXBlLmJpbmQobnVsbCwgdHJ1ZSk7XG5cbiAgICByZXR1cm4gY2hhaW5lZENoZWNrVHlwZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKGV4cGVjdGVkVHlwZSkge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gZXhwZWN0ZWRUeXBlKSB7XG4gICAgICAgIC8vIGBwcm9wVmFsdWVgIGJlaW5nIGluc3RhbmNlIG9mLCBzYXksIGRhdGUvcmVnZXhwLCBwYXNzIHRoZSAnb2JqZWN0J1xuICAgICAgICAvLyBjaGVjaywgYnV0IHdlIGNhbiBvZmZlciBhIG1vcmUgcHJlY2lzZSBlcnJvciBtZXNzYWdlIGhlcmUgcmF0aGVyIHRoYW5cbiAgICAgICAgLy8gJ29mIHR5cGUgYG9iamVjdGAnLlxuICAgICAgICB2YXIgcHJlY2lzZVR5cGUgPSBnZXRQcmVjaXNlVHlwZShwcm9wVmFsdWUpO1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByZWNpc2VUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkICcpICsgKCdgJyArIGV4cGVjdGVkVHlwZSArICdgLicpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlQW55VHlwZUNoZWNrZXIoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxsKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUFycmF5T2ZUeXBlQ2hlY2tlcih0eXBlQ2hlY2tlcikge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgaWYgKHR5cGVvZiB0eXBlQ2hlY2tlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1Byb3BlcnR5IGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgY29tcG9uZW50IGAnICsgY29tcG9uZW50TmFtZSArICdgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0aW9uIGluc2lkZSBhcnJheU9mLicpO1xuICAgICAgfVxuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7XG4gICAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByb3BUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGFuIGFycmF5LicpKTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcFZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlcnJvciA9IHR5cGVDaGVja2VyKHByb3BWYWx1ZSwgaSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICdbJyArIGkgKyAnXScsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlRWxlbWVudFR5cGVDaGVja2VyKCkge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGlmICghaXNWYWxpZEVsZW1lbnQocHJvcFZhbHVlKSkge1xuICAgICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhIHNpbmdsZSBSZWFjdEVsZW1lbnQuJykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVJbnN0YW5jZVR5cGVDaGVja2VyKGV4cGVjdGVkQ2xhc3MpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIGlmICghKHByb3BzW3Byb3BOYW1lXSBpbnN0YW5jZW9mIGV4cGVjdGVkQ2xhc3MpKSB7XG4gICAgICAgIHZhciBleHBlY3RlZENsYXNzTmFtZSA9IGV4cGVjdGVkQ2xhc3MubmFtZSB8fCBBTk9OWU1PVVM7XG4gICAgICAgIHZhciBhY3R1YWxDbGFzc05hbWUgPSBnZXRDbGFzc05hbWUocHJvcHNbcHJvcE5hbWVdKTtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcgKyAoJ2AnICsgYWN0dWFsQ2xhc3NOYW1lICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkICcpICsgKCdpbnN0YW5jZSBvZiBgJyArIGV4cGVjdGVkQ2xhc3NOYW1lICsgJ2AuJykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVFbnVtVHlwZUNoZWNrZXIoZXhwZWN0ZWRWYWx1ZXMpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZXhwZWN0ZWRWYWx1ZXMpKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ0ludmFsaWQgYXJndW1lbnQgc3VwcGxpZWQgdG8gb25lT2YsIGV4cGVjdGVkIGFuIGluc3RhbmNlIG9mIGFycmF5LicpIDogdm9pZCAwO1xuICAgICAgcmV0dXJuIGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWRWYWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGlzKHByb3BWYWx1ZSwgZXhwZWN0ZWRWYWx1ZXNbaV0pKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIHZhbHVlc1N0cmluZyA9IEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkVmFsdWVzKTtcbiAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdmFsdWUgYCcgKyBwcm9wVmFsdWUgKyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgb25lIG9mICcgKyB2YWx1ZXNTdHJpbmcgKyAnLicpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZU9iamVjdE9mVHlwZUNoZWNrZXIodHlwZUNoZWNrZXIpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIGlmICh0eXBlb2YgdHlwZUNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdQcm9wZXJ0eSBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIGNvbXBvbmVudCBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCBoYXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlvbiBpbnNpZGUgb2JqZWN0T2YuJyk7XG4gICAgICB9XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcgKyAoJ2AnICsgcHJvcFR5cGUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYW4gb2JqZWN0LicpKTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGtleSBpbiBwcm9wVmFsdWUpIHtcbiAgICAgICAgaWYgKHByb3BWYWx1ZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgdmFyIGVycm9yID0gdHlwZUNoZWNrZXIocHJvcFZhbHVlLCBrZXksIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUgKyAnLicgKyBrZXksIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcbiAgICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVVbmlvblR5cGVDaGVja2VyKGFycmF5T2ZUeXBlQ2hlY2tlcnMpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyYXlPZlR5cGVDaGVja2VycykpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnSW52YWxpZCBhcmd1bWVudCBzdXBwbGllZCB0byBvbmVPZlR5cGUsIGV4cGVjdGVkIGFuIGluc3RhbmNlIG9mIGFycmF5LicpIDogdm9pZCAwO1xuICAgICAgcmV0dXJuIGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheU9mVHlwZUNoZWNrZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjaGVja2VyID0gYXJyYXlPZlR5cGVDaGVja2Vyc1tpXTtcbiAgICAgICAgaWYgKGNoZWNrZXIocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBSZWFjdFByb3BUeXBlc1NlY3JldCkgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agc3VwcGxpZWQgdG8gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AuJykpO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlTm9kZUNoZWNrZXIoKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICBpZiAoIWlzTm9kZShwcm9wc1twcm9wTmFtZV0pKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agc3VwcGxpZWQgdG8gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGEgUmVhY3ROb2RlLicpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlU2hhcGVUeXBlQ2hlY2tlcihzaGFwZVR5cGVzKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlIGAnICsgcHJvcFR5cGUgKyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYG9iamVjdGAuJykpO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIga2V5IGluIHNoYXBlVHlwZXMpIHtcbiAgICAgICAgdmFyIGNoZWNrZXIgPSBzaGFwZVR5cGVzW2tleV07XG4gICAgICAgIGlmICghY2hlY2tlcikge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBlcnJvciA9IGNoZWNrZXIocHJvcFZhbHVlLCBrZXksIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUgKyAnLicgKyBrZXksIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzTm9kZShwcm9wVmFsdWUpIHtcbiAgICBzd2l0Y2ggKHR5cGVvZiBwcm9wVmFsdWUpIHtcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgY2FzZSAndW5kZWZpbmVkJzpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgcmV0dXJuICFwcm9wVmFsdWU7XG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIHByb3BWYWx1ZS5ldmVyeShpc05vZGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9wVmFsdWUgPT09IG51bGwgfHwgaXNWYWxpZEVsZW1lbnQocHJvcFZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKHByb3BWYWx1ZSk7XG4gICAgICAgIGlmIChpdGVyYXRvckZuKSB7XG4gICAgICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKHByb3BWYWx1ZSk7XG4gICAgICAgICAgdmFyIHN0ZXA7XG4gICAgICAgICAgaWYgKGl0ZXJhdG9yRm4gIT09IHByb3BWYWx1ZS5lbnRyaWVzKSB7XG4gICAgICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICAgICAgICAgIGlmICghaXNOb2RlKHN0ZXAudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEl0ZXJhdG9yIHdpbGwgcHJvdmlkZSBlbnRyeSBbayx2XSB0dXBsZXMgcmF0aGVyIHRoYW4gdmFsdWVzLlxuICAgICAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgICAgICB2YXIgZW50cnkgPSBzdGVwLnZhbHVlO1xuICAgICAgICAgICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzTm9kZShlbnRyeVsxXSkpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaXNTeW1ib2wocHJvcFR5cGUsIHByb3BWYWx1ZSkge1xuICAgIC8vIE5hdGl2ZSBTeW1ib2wuXG4gICAgaWYgKHByb3BUeXBlID09PSAnc3ltYm9sJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gMTkuNC4zLjUgU3ltYm9sLnByb3RvdHlwZVtAQHRvU3RyaW5nVGFnXSA9PT0gJ1N5bWJvbCdcbiAgICBpZiAocHJvcFZhbHVlWydAQHRvU3RyaW5nVGFnJ10gPT09ICdTeW1ib2wnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBGYWxsYmFjayBmb3Igbm9uLXNwZWMgY29tcGxpYW50IFN5bWJvbHMgd2hpY2ggYXJlIHBvbHlmaWxsZWQuXG4gICAgaWYgKHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgcHJvcFZhbHVlIGluc3RhbmNlb2YgU3ltYm9sKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBFcXVpdmFsZW50IG9mIGB0eXBlb2ZgIGJ1dCB3aXRoIHNwZWNpYWwgaGFuZGxpbmcgZm9yIGFycmF5IGFuZCByZWdleHAuXG4gIGZ1bmN0aW9uIGdldFByb3BUeXBlKHByb3BWYWx1ZSkge1xuICAgIHZhciBwcm9wVHlwZSA9IHR5cGVvZiBwcm9wVmFsdWU7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocHJvcFZhbHVlKSkge1xuICAgICAgcmV0dXJuICdhcnJheSc7XG4gICAgfVxuICAgIGlmIChwcm9wVmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgIC8vIE9sZCB3ZWJraXRzIChhdCBsZWFzdCB1bnRpbCBBbmRyb2lkIDQuMCkgcmV0dXJuICdmdW5jdGlvbicgcmF0aGVyIHRoYW5cbiAgICAgIC8vICdvYmplY3QnIGZvciB0eXBlb2YgYSBSZWdFeHAuIFdlJ2xsIG5vcm1hbGl6ZSB0aGlzIGhlcmUgc28gdGhhdCAvYmxhL1xuICAgICAgLy8gcGFzc2VzIFByb3BUeXBlcy5vYmplY3QuXG4gICAgICByZXR1cm4gJ29iamVjdCc7XG4gICAgfVxuICAgIGlmIChpc1N5bWJvbChwcm9wVHlwZSwgcHJvcFZhbHVlKSkge1xuICAgICAgcmV0dXJuICdzeW1ib2wnO1xuICAgIH1cbiAgICByZXR1cm4gcHJvcFR5cGU7XG4gIH1cblxuICAvLyBUaGlzIGhhbmRsZXMgbW9yZSB0eXBlcyB0aGFuIGBnZXRQcm9wVHlwZWAuIE9ubHkgdXNlZCBmb3IgZXJyb3IgbWVzc2FnZXMuXG4gIC8vIFNlZSBgY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXJgLlxuICBmdW5jdGlvbiBnZXRQcmVjaXNlVHlwZShwcm9wVmFsdWUpIHtcbiAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgIGlmIChwcm9wVHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChwcm9wVmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIHJldHVybiAnZGF0ZSc7XG4gICAgICB9IGVsc2UgaWYgKHByb3BWYWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgICByZXR1cm4gJ3JlZ2V4cCc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwcm9wVHlwZTtcbiAgfVxuXG4gIC8vIFJldHVybnMgY2xhc3MgbmFtZSBvZiB0aGUgb2JqZWN0LCBpZiBhbnkuXG4gIGZ1bmN0aW9uIGdldENsYXNzTmFtZShwcm9wVmFsdWUpIHtcbiAgICBpZiAoIXByb3BWYWx1ZS5jb25zdHJ1Y3RvciB8fCAhcHJvcFZhbHVlLmNvbnN0cnVjdG9yLm5hbWUpIHtcbiAgICAgIHJldHVybiBBTk9OWU1PVVM7XG4gICAgfVxuICAgIHJldHVybiBwcm9wVmFsdWUuY29uc3RydWN0b3IubmFtZTtcbiAgfVxuXG4gIFJlYWN0UHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzID0gY2hlY2tQcm9wVHlwZXM7XG4gIFJlYWN0UHJvcFR5cGVzLlByb3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xuXG4gIHJldHVybiBSZWFjdFByb3BUeXBlcztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcHJvcC10eXBlcy9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qc1xuLy8gbW9kdWxlIGlkID0gMTlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG5mdW5jdGlvbiBtYWtlRW1wdHlGdW5jdGlvbihhcmcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gYXJnO1xuICB9O1xufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gYWNjZXB0cyBhbmQgZGlzY2FyZHMgaW5wdXRzOyBpdCBoYXMgbm8gc2lkZSBlZmZlY3RzLiBUaGlzIGlzXG4gKiBwcmltYXJpbHkgdXNlZnVsIGlkaW9tYXRpY2FsbHkgZm9yIG92ZXJyaWRhYmxlIGZ1bmN0aW9uIGVuZHBvaW50cyB3aGljaFxuICogYWx3YXlzIG5lZWQgdG8gYmUgY2FsbGFibGUsIHNpbmNlIEpTIGxhY2tzIGEgbnVsbC1jYWxsIGlkaW9tIGFsYSBDb2NvYS5cbiAqL1xudmFyIGVtcHR5RnVuY3Rpb24gPSBmdW5jdGlvbiBlbXB0eUZ1bmN0aW9uKCkge307XG5cbmVtcHR5RnVuY3Rpb24udGhhdFJldHVybnMgPSBtYWtlRW1wdHlGdW5jdGlvbjtcbmVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNGYWxzZSA9IG1ha2VFbXB0eUZ1bmN0aW9uKGZhbHNlKTtcbmVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNUcnVlID0gbWFrZUVtcHR5RnVuY3Rpb24odHJ1ZSk7XG5lbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVsbCA9IG1ha2VFbXB0eUZ1bmN0aW9uKG51bGwpO1xuZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RoaXMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzO1xufTtcbmVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNBcmd1bWVudCA9IGZ1bmN0aW9uIChhcmcpIHtcbiAgcmV0dXJuIGFyZztcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZW1wdHlGdW5jdGlvbjtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vZmJqcy9saWIvZW1wdHlGdW5jdGlvbi5qc1xuLy8gbW9kdWxlIGlkID0gMjBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogVXNlIGludmFyaWFudCgpIHRvIGFzc2VydCBzdGF0ZSB3aGljaCB5b3VyIHByb2dyYW0gYXNzdW1lcyB0byBiZSB0cnVlLlxuICpcbiAqIFByb3ZpZGUgc3ByaW50Zi1zdHlsZSBmb3JtYXQgKG9ubHkgJXMgaXMgc3VwcG9ydGVkKSBhbmQgYXJndW1lbnRzXG4gKiB0byBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgYnJva2UgYW5kIHdoYXQgeW91IHdlcmVcbiAqIGV4cGVjdGluZy5cbiAqXG4gKiBUaGUgaW52YXJpYW50IG1lc3NhZ2Ugd2lsbCBiZSBzdHJpcHBlZCBpbiBwcm9kdWN0aW9uLCBidXQgdGhlIGludmFyaWFudFxuICogd2lsbCByZW1haW4gdG8gZW5zdXJlIGxvZ2ljIGRvZXMgbm90IGRpZmZlciBpbiBwcm9kdWN0aW9uLlxuICovXG5cbnZhciB2YWxpZGF0ZUZvcm1hdCA9IGZ1bmN0aW9uIHZhbGlkYXRlRm9ybWF0KGZvcm1hdCkge307XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhbGlkYXRlRm9ybWF0ID0gZnVuY3Rpb24gdmFsaWRhdGVGb3JtYXQoZm9ybWF0KSB7XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFyaWFudCByZXF1aXJlcyBhbiBlcnJvciBtZXNzYWdlIGFyZ3VtZW50Jyk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBpbnZhcmlhbnQoY29uZGl0aW9uLCBmb3JtYXQsIGEsIGIsIGMsIGQsIGUsIGYpIHtcbiAgdmFsaWRhdGVGb3JtYXQoZm9ybWF0KTtcblxuICBpZiAoIWNvbmRpdGlvbikge1xuICAgIHZhciBlcnJvcjtcbiAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGVycm9yID0gbmV3IEVycm9yKCdNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCAnICsgJ2ZvciB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBhcmdzID0gW2EsIGIsIGMsIGQsIGUsIGZdO1xuICAgICAgdmFyIGFyZ0luZGV4ID0gMDtcbiAgICAgIGVycm9yID0gbmV3IEVycm9yKGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBhcmdzW2FyZ0luZGV4KytdO1xuICAgICAgfSkpO1xuICAgICAgZXJyb3IubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB9XG5cbiAgICBlcnJvci5mcmFtZXNUb1BvcCA9IDE7IC8vIHdlIGRvbid0IGNhcmUgYWJvdXQgaW52YXJpYW50J3Mgb3duIGZyYW1lXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbnZhcmlhbnQ7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2ZianMvbGliL2ludmFyaWFudC5qc1xuLy8gbW9kdWxlIGlkID0gMjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNC0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGVtcHR5RnVuY3Rpb24gPSByZXF1aXJlKCcuL2VtcHR5RnVuY3Rpb24nKTtcblxuLyoqXG4gKiBTaW1pbGFyIHRvIGludmFyaWFudCBidXQgb25seSBsb2dzIGEgd2FybmluZyBpZiB0aGUgY29uZGl0aW9uIGlzIG5vdCBtZXQuXG4gKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGxvZyBpc3N1ZXMgaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzIGluIGNyaXRpY2FsXG4gKiBwYXRocy4gUmVtb3ZpbmcgdGhlIGxvZ2dpbmcgY29kZSBmb3IgcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMgd2lsbCBrZWVwIHRoZVxuICogc2FtZSBsb2dpYyBhbmQgZm9sbG93IHRoZSBzYW1lIGNvZGUgcGF0aHMuXG4gKi9cblxudmFyIHdhcm5pbmcgPSBlbXB0eUZ1bmN0aW9uO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBwcmludFdhcm5pbmcgPSBmdW5jdGlvbiBwcmludFdhcm5pbmcoZm9ybWF0KSB7XG4gICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICB9XG5cbiAgICAgIHZhciBhcmdJbmRleCA9IDA7XG4gICAgICB2YXIgbWVzc2FnZSA9ICdXYXJuaW5nOiAnICsgZm9ybWF0LnJlcGxhY2UoLyVzL2csIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107XG4gICAgICB9KTtcbiAgICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihtZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIC0tLSBXZWxjb21lIHRvIGRlYnVnZ2luZyBSZWFjdCAtLS1cbiAgICAgICAgLy8gVGhpcyBlcnJvciB3YXMgdGhyb3duIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCB5b3UgY2FuIHVzZSB0aGlzIHN0YWNrXG4gICAgICAgIC8vIHRvIGZpbmQgdGhlIGNhbGxzaXRlIHRoYXQgY2F1c2VkIHRoaXMgd2FybmluZyB0byBmaXJlLlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgICB9IGNhdGNoICh4KSB7fVxuICAgIH07XG5cbiAgICB3YXJuaW5nID0gZnVuY3Rpb24gd2FybmluZyhjb25kaXRpb24sIGZvcm1hdCkge1xuICAgICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignYHdhcm5pbmcoY29uZGl0aW9uLCBmb3JtYXQsIC4uLmFyZ3MpYCByZXF1aXJlcyBhIHdhcm5pbmcgJyArICdtZXNzYWdlIGFyZ3VtZW50Jyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChmb3JtYXQuaW5kZXhPZignRmFpbGVkIENvbXBvc2l0ZSBwcm9wVHlwZTogJykgPT09IDApIHtcbiAgICAgICAgcmV0dXJuOyAvLyBJZ25vcmUgQ29tcG9zaXRlQ29tcG9uZW50IHByb3B0eXBlIGNoZWNrLlxuICAgICAgfVxuXG4gICAgICBpZiAoIWNvbmRpdGlvbikge1xuICAgICAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuMiA+IDIgPyBfbGVuMiAtIDIgOiAwKSwgX2tleTIgPSAyOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICAgICAgYXJnc1tfa2V5MiAtIDJdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByaW50V2FybmluZy5hcHBseSh1bmRlZmluZWQsIFtmb3JtYXRdLmNvbmNhdChhcmdzKSk7XG4gICAgICB9XG4gICAgfTtcbiAgfSkoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB3YXJuaW5nO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9mYmpzL2xpYi93YXJuaW5nLmpzXG4vLyBtb2R1bGUgaWQgPSAyMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcHJvcC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanNcbi8vIG1vZHVsZSBpZCA9IDIzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuICB2YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcbiAgdmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcbiAgdmFyIGxvZ2dlZFR5cGVGYWlsdXJlcyA9IHt9O1xufVxuXG4vKipcbiAqIEFzc2VydCB0aGF0IHRoZSB2YWx1ZXMgbWF0Y2ggd2l0aCB0aGUgdHlwZSBzcGVjcy5cbiAqIEVycm9yIG1lc3NhZ2VzIGFyZSBtZW1vcml6ZWQgYW5kIHdpbGwgb25seSBiZSBzaG93biBvbmNlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSB0eXBlU3BlY3MgTWFwIG9mIG5hbWUgdG8gYSBSZWFjdFByb3BUeXBlXG4gKiBAcGFyYW0ge29iamVjdH0gdmFsdWVzIFJ1bnRpbWUgdmFsdWVzIHRoYXQgbmVlZCB0byBiZSB0eXBlLWNoZWNrZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhdGlvbiBlLmcuIFwicHJvcFwiLCBcImNvbnRleHRcIiwgXCJjaGlsZCBjb250ZXh0XCJcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb21wb25lbnROYW1lIE5hbWUgb2YgdGhlIGNvbXBvbmVudCBmb3IgZXJyb3IgbWVzc2FnZXMuXG4gKiBAcGFyYW0gez9GdW5jdGlvbn0gZ2V0U3RhY2sgUmV0dXJucyB0aGUgY29tcG9uZW50IHN0YWNrLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gY2hlY2tQcm9wVHlwZXModHlwZVNwZWNzLCB2YWx1ZXMsIGxvY2F0aW9uLCBjb21wb25lbnROYW1lLCBnZXRTdGFjaykge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGZvciAodmFyIHR5cGVTcGVjTmFtZSBpbiB0eXBlU3BlY3MpIHtcbiAgICAgIGlmICh0eXBlU3BlY3MuaGFzT3duUHJvcGVydHkodHlwZVNwZWNOYW1lKSkge1xuICAgICAgICB2YXIgZXJyb3I7XG4gICAgICAgIC8vIFByb3AgdHlwZSB2YWxpZGF0aW9uIG1heSB0aHJvdy4gSW4gY2FzZSB0aGV5IGRvLCB3ZSBkb24ndCB3YW50IHRvXG4gICAgICAgIC8vIGZhaWwgdGhlIHJlbmRlciBwaGFzZSB3aGVyZSBpdCBkaWRuJ3QgZmFpbCBiZWZvcmUuIFNvIHdlIGxvZyBpdC5cbiAgICAgICAgLy8gQWZ0ZXIgdGhlc2UgaGF2ZSBiZWVuIGNsZWFuZWQgdXAsIHdlJ2xsIGxldCB0aGVtIHRocm93LlxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBhbiBpbnZhcmlhbnQgdGhhdCBnZXRzIGNhdWdodC4gSXQncyB0aGUgc2FtZVxuICAgICAgICAgIC8vIGJlaGF2aW9yIGFzIHdpdGhvdXQgdGhpcyBzdGF0ZW1lbnQgZXhjZXB0IHdpdGggYSBiZXR0ZXIgbWVzc2FnZS5cbiAgICAgICAgICBpbnZhcmlhbnQodHlwZW9mIHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdID09PSAnZnVuY3Rpb24nLCAnJXM6ICVzIHR5cGUgYCVzYCBpcyBpbnZhbGlkOyBpdCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkgZnJvbSAnICsgJ1JlYWN0LlByb3BUeXBlcy4nLCBjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycsIGxvY2F0aW9uLCB0eXBlU3BlY05hbWUpO1xuICAgICAgICAgIGVycm9yID0gdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0odmFsdWVzLCB0eXBlU3BlY05hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBudWxsLCBSZWFjdFByb3BUeXBlc1NlY3JldCk7XG4gICAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgICAgZXJyb3IgPSBleDtcbiAgICAgICAgfVxuICAgICAgICB3YXJuaW5nKCFlcnJvciB8fCBlcnJvciBpbnN0YW5jZW9mIEVycm9yLCAnJXM6IHR5cGUgc3BlY2lmaWNhdGlvbiBvZiAlcyBgJXNgIGlzIGludmFsaWQ7IHRoZSB0eXBlIGNoZWNrZXIgJyArICdmdW5jdGlvbiBtdXN0IHJldHVybiBgbnVsbGAgb3IgYW4gYEVycm9yYCBidXQgcmV0dXJuZWQgYSAlcy4gJyArICdZb3UgbWF5IGhhdmUgZm9yZ290dGVuIHRvIHBhc3MgYW4gYXJndW1lbnQgdG8gdGhlIHR5cGUgY2hlY2tlciAnICsgJ2NyZWF0b3IgKGFycmF5T2YsIGluc3RhbmNlT2YsIG9iamVjdE9mLCBvbmVPZiwgb25lT2ZUeXBlLCBhbmQgJyArICdzaGFwZSBhbGwgcmVxdWlyZSBhbiBhcmd1bWVudCkuJywgY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnLCBsb2NhdGlvbiwgdHlwZVNwZWNOYW1lLCB0eXBlb2YgZXJyb3IpO1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciAmJiAhKGVycm9yLm1lc3NhZ2UgaW4gbG9nZ2VkVHlwZUZhaWx1cmVzKSkge1xuICAgICAgICAgIC8vIE9ubHkgbW9uaXRvciB0aGlzIGZhaWx1cmUgb25jZSBiZWNhdXNlIHRoZXJlIHRlbmRzIHRvIGJlIGEgbG90IG9mIHRoZVxuICAgICAgICAgIC8vIHNhbWUgZXJyb3IuXG4gICAgICAgICAgbG9nZ2VkVHlwZUZhaWx1cmVzW2Vycm9yLm1lc3NhZ2VdID0gdHJ1ZTtcblxuICAgICAgICAgIHZhciBzdGFjayA9IGdldFN0YWNrID8gZ2V0U3RhY2soKSA6ICcnO1xuXG4gICAgICAgICAgd2FybmluZyhmYWxzZSwgJ0ZhaWxlZCAlcyB0eXBlOiAlcyVzJywgbG9jYXRpb24sIGVycm9yLm1lc3NhZ2UsIHN0YWNrICE9IG51bGwgPyBzdGFjayA6ICcnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNoZWNrUHJvcFR5cGVzO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3Byb3AtdHlwZXMvY2hlY2tQcm9wVHlwZXMuanNcbi8vIG1vZHVsZSBpZCA9IDI0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGVtcHR5RnVuY3Rpb24gPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eUZ1bmN0aW9uJyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gIC8vIEltcG9ydGFudCFcbiAgLy8gS2VlcCB0aGlzIGxpc3QgaW4gc3luYyB3aXRoIHByb2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qc2AuXG4gIGZ1bmN0aW9uIHNoaW0oKSB7XG4gICAgaW52YXJpYW50KFxuICAgICAgZmFsc2UsXG4gICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gJyArXG4gICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcydcbiAgICApO1xuICB9O1xuICBzaGltLmlzUmVxdWlyZWQgPSBzaGltO1xuICBmdW5jdGlvbiBnZXRTaGltKCkge1xuICAgIHJldHVybiBzaGltO1xuICB9O1xuICB2YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG4gICAgYXJyYXk6IHNoaW0sXG4gICAgYm9vbDogc2hpbSxcbiAgICBmdW5jOiBzaGltLFxuICAgIG51bWJlcjogc2hpbSxcbiAgICBvYmplY3Q6IHNoaW0sXG4gICAgc3RyaW5nOiBzaGltLFxuICAgIHN5bWJvbDogc2hpbSxcblxuICAgIGFueTogc2hpbSxcbiAgICBhcnJheU9mOiBnZXRTaGltLFxuICAgIGVsZW1lbnQ6IHNoaW0sXG4gICAgaW5zdGFuY2VPZjogZ2V0U2hpbSxcbiAgICBub2RlOiBzaGltLFxuICAgIG9iamVjdE9mOiBnZXRTaGltLFxuICAgIG9uZU9mOiBnZXRTaGltLFxuICAgIG9uZU9mVHlwZTogZ2V0U2hpbSxcbiAgICBzaGFwZTogZ2V0U2hpbVxuICB9O1xuXG4gIFJlYWN0UHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzID0gZW1wdHlGdW5jdGlvbjtcbiAgUmVhY3RQcm9wVHlwZXMuUHJvcFR5cGVzID0gUmVhY3RQcm9wVHlwZXM7XG5cbiAgcmV0dXJuIFJlYWN0UHJvcFR5cGVzO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9wcm9wLXR5cGVzL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcy5qc1xuLy8gbW9kdWxlIGlkID0gMjVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9O1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7IH0gfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSAnZnVuY3Rpb24nICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAnICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG52YXIgX21hcFRvWmVybyA9IHJlcXVpcmUoJy4vbWFwVG9aZXJvJyk7XG5cbnZhciBfbWFwVG9aZXJvMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX21hcFRvWmVybyk7XG5cbnZhciBfc3RyaXBTdHlsZSA9IHJlcXVpcmUoJy4vc3RyaXBTdHlsZScpO1xuXG52YXIgX3N0cmlwU3R5bGUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc3RyaXBTdHlsZSk7XG5cbnZhciBfc3RlcHBlcjMgPSByZXF1aXJlKCcuL3N0ZXBwZXInKTtcblxudmFyIF9zdGVwcGVyNCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3N0ZXBwZXIzKTtcblxudmFyIF9wZXJmb3JtYW5jZU5vdyA9IHJlcXVpcmUoJ3BlcmZvcm1hbmNlLW5vdycpO1xuXG52YXIgX3BlcmZvcm1hbmNlTm93MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3BlcmZvcm1hbmNlTm93KTtcblxudmFyIF9yYWYgPSByZXF1aXJlKCdyYWYnKTtcblxudmFyIF9yYWYyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmFmKTtcblxudmFyIF9zaG91bGRTdG9wQW5pbWF0aW9uID0gcmVxdWlyZSgnLi9zaG91bGRTdG9wQW5pbWF0aW9uJyk7XG5cbnZhciBfc2hvdWxkU3RvcEFuaW1hdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zaG91bGRTdG9wQW5pbWF0aW9uKTtcblxudmFyIF9yZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG5cbnZhciBfcmVhY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVhY3QpO1xuXG52YXIgX3Byb3BUeXBlcyA9IHJlcXVpcmUoJ3Byb3AtdHlwZXMnKTtcblxudmFyIF9wcm9wVHlwZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcHJvcFR5cGVzKTtcblxudmFyIG1zUGVyRnJhbWUgPSAxMDAwIC8gNjA7XG5cbmZ1bmN0aW9uIHNob3VsZFN0b3BBbmltYXRpb25BbGwoY3VycmVudFN0eWxlcywgc3R5bGVzLCBjdXJyZW50VmVsb2NpdGllcykge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGN1cnJlbnRTdHlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoIV9zaG91bGRTdG9wQW5pbWF0aW9uMlsnZGVmYXVsdCddKGN1cnJlbnRTdHlsZXNbaV0sIHN0eWxlc1tpXSwgY3VycmVudFZlbG9jaXRpZXNbaV0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG52YXIgU3RhZ2dlcmVkTW90aW9uID0gKGZ1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhTdGFnZ2VyZWRNb3Rpb24sIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIF9jcmVhdGVDbGFzcyhTdGFnZ2VyZWRNb3Rpb24sIG51bGwsIFt7XG4gICAga2V5OiAncHJvcFR5cGVzJyxcbiAgICB2YWx1ZToge1xuICAgICAgLy8gVE9PRDogd2FybiBhZ2FpbnN0IHB1dHRpbmcgYSBjb25maWcgaW4gaGVyZVxuICAgICAgZGVmYXVsdFN0eWxlczogX3Byb3BUeXBlczJbJ2RlZmF1bHQnXS5hcnJheU9mKF9wcm9wVHlwZXMyWydkZWZhdWx0J10ub2JqZWN0T2YoX3Byb3BUeXBlczJbJ2RlZmF1bHQnXS5udW1iZXIpKSxcbiAgICAgIHN0eWxlczogX3Byb3BUeXBlczJbJ2RlZmF1bHQnXS5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICBjaGlsZHJlbjogX3Byb3BUeXBlczJbJ2RlZmF1bHQnXS5mdW5jLmlzUmVxdWlyZWRcbiAgICB9LFxuICAgIGVudW1lcmFibGU6IHRydWVcbiAgfV0pO1xuXG4gIGZ1bmN0aW9uIFN0YWdnZXJlZE1vdGlvbihwcm9wcykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU3RhZ2dlcmVkTW90aW9uKTtcblxuICAgIF9SZWFjdCRDb21wb25lbnQuY2FsbCh0aGlzLCBwcm9wcyk7XG4gICAgdGhpcy5hbmltYXRpb25JRCA9IG51bGw7XG4gICAgdGhpcy5wcmV2VGltZSA9IDA7XG4gICAgdGhpcy5hY2N1bXVsYXRlZFRpbWUgPSAwO1xuICAgIHRoaXMudW5yZWFkUHJvcFN0eWxlcyA9IG51bGw7XG5cbiAgICB0aGlzLmNsZWFyVW5yZWFkUHJvcFN0eWxlID0gZnVuY3Rpb24gKHVucmVhZFByb3BTdHlsZXMpIHtcbiAgICAgIHZhciBfc3RhdGUgPSBfdGhpcy5zdGF0ZTtcbiAgICAgIHZhciBjdXJyZW50U3R5bGVzID0gX3N0YXRlLmN1cnJlbnRTdHlsZXM7XG4gICAgICB2YXIgY3VycmVudFZlbG9jaXRpZXMgPSBfc3RhdGUuY3VycmVudFZlbG9jaXRpZXM7XG4gICAgICB2YXIgbGFzdElkZWFsU3R5bGVzID0gX3N0YXRlLmxhc3RJZGVhbFN0eWxlcztcbiAgICAgIHZhciBsYXN0SWRlYWxWZWxvY2l0aWVzID0gX3N0YXRlLmxhc3RJZGVhbFZlbG9jaXRpZXM7XG5cbiAgICAgIHZhciBzb21lRGlydHkgPSBmYWxzZTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdW5yZWFkUHJvcFN0eWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgdW5yZWFkUHJvcFN0eWxlID0gdW5yZWFkUHJvcFN0eWxlc1tpXTtcbiAgICAgICAgdmFyIGRpcnR5ID0gZmFsc2U7XG5cbiAgICAgICAgZm9yICh2YXIga2V5IGluIHVucmVhZFByb3BTdHlsZSkge1xuICAgICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHVucmVhZFByb3BTdHlsZSwga2V5KSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIHN0eWxlVmFsdWUgPSB1bnJlYWRQcm9wU3R5bGVba2V5XTtcbiAgICAgICAgICBpZiAodHlwZW9mIHN0eWxlVmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBpZiAoIWRpcnR5KSB7XG4gICAgICAgICAgICAgIGRpcnR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgc29tZURpcnR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgY3VycmVudFN0eWxlc1tpXSA9IF9leHRlbmRzKHt9LCBjdXJyZW50U3R5bGVzW2ldKTtcbiAgICAgICAgICAgICAgY3VycmVudFZlbG9jaXRpZXNbaV0gPSBfZXh0ZW5kcyh7fSwgY3VycmVudFZlbG9jaXRpZXNbaV0pO1xuICAgICAgICAgICAgICBsYXN0SWRlYWxTdHlsZXNbaV0gPSBfZXh0ZW5kcyh7fSwgbGFzdElkZWFsU3R5bGVzW2ldKTtcbiAgICAgICAgICAgICAgbGFzdElkZWFsVmVsb2NpdGllc1tpXSA9IF9leHRlbmRzKHt9LCBsYXN0SWRlYWxWZWxvY2l0aWVzW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGN1cnJlbnRTdHlsZXNbaV1ba2V5XSA9IHN0eWxlVmFsdWU7XG4gICAgICAgICAgICBjdXJyZW50VmVsb2NpdGllc1tpXVtrZXldID0gMDtcbiAgICAgICAgICAgIGxhc3RJZGVhbFN0eWxlc1tpXVtrZXldID0gc3R5bGVWYWx1ZTtcbiAgICAgICAgICAgIGxhc3RJZGVhbFZlbG9jaXRpZXNbaV1ba2V5XSA9IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChzb21lRGlydHkpIHtcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyBjdXJyZW50U3R5bGVzOiBjdXJyZW50U3R5bGVzLCBjdXJyZW50VmVsb2NpdGllczogY3VycmVudFZlbG9jaXRpZXMsIGxhc3RJZGVhbFN0eWxlczogbGFzdElkZWFsU3R5bGVzLCBsYXN0SWRlYWxWZWxvY2l0aWVzOiBsYXN0SWRlYWxWZWxvY2l0aWVzIH0pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLnN0YXJ0QW5pbWF0aW9uSWZOZWNlc3NhcnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBUT0RPOiB3aGVuIGNvbmZpZyBpcyB7YTogMTB9IGFuZCBkZXN0IGlzIHthOiAxMH0gZG8gd2UgcmFmIG9uY2UgYW5kXG4gICAgICAvLyBjYWxsIGNiPyBObywgb3RoZXJ3aXNlIGFjY2lkZW50YWwgcGFyZW50IHJlcmVuZGVyIGNhdXNlcyBjYiB0cmlnZ2VyXG4gICAgICBfdGhpcy5hbmltYXRpb25JRCA9IF9yYWYyWydkZWZhdWx0J10oZnVuY3Rpb24gKHRpbWVzdGFtcCkge1xuICAgICAgICB2YXIgZGVzdFN0eWxlcyA9IF90aGlzLnByb3BzLnN0eWxlcyhfdGhpcy5zdGF0ZS5sYXN0SWRlYWxTdHlsZXMpO1xuXG4gICAgICAgIC8vIGNoZWNrIGlmIHdlIG5lZWQgdG8gYW5pbWF0ZSBpbiB0aGUgZmlyc3QgcGxhY2VcbiAgICAgICAgaWYgKHNob3VsZFN0b3BBbmltYXRpb25BbGwoX3RoaXMuc3RhdGUuY3VycmVudFN0eWxlcywgZGVzdFN0eWxlcywgX3RoaXMuc3RhdGUuY3VycmVudFZlbG9jaXRpZXMpKSB7XG4gICAgICAgICAgLy8gbm8gbmVlZCB0byBjYW5jZWwgYW5pbWF0aW9uSUQgaGVyZTsgc2hvdWxkbid0IGhhdmUgYW55IGluIGZsaWdodFxuICAgICAgICAgIF90aGlzLmFuaW1hdGlvbklEID0gbnVsbDtcbiAgICAgICAgICBfdGhpcy5hY2N1bXVsYXRlZFRpbWUgPSAwO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjdXJyZW50VGltZSA9IHRpbWVzdGFtcCB8fCBfcGVyZm9ybWFuY2VOb3cyWydkZWZhdWx0J10oKTtcbiAgICAgICAgdmFyIHRpbWVEZWx0YSA9IGN1cnJlbnRUaW1lIC0gX3RoaXMucHJldlRpbWU7XG4gICAgICAgIF90aGlzLnByZXZUaW1lID0gY3VycmVudFRpbWU7XG4gICAgICAgIF90aGlzLmFjY3VtdWxhdGVkVGltZSA9IF90aGlzLmFjY3VtdWxhdGVkVGltZSArIHRpbWVEZWx0YTtcbiAgICAgICAgLy8gbW9yZSB0aGFuIDEwIGZyYW1lcz8gcHJvbGx5IHN3aXRjaGVkIGJyb3dzZXIgdGFiLiBSZXN0YXJ0XG4gICAgICAgIGlmIChfdGhpcy5hY2N1bXVsYXRlZFRpbWUgPiBtc1BlckZyYW1lICogMTApIHtcbiAgICAgICAgICBfdGhpcy5hY2N1bXVsYXRlZFRpbWUgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF90aGlzLmFjY3VtdWxhdGVkVGltZSA9PT0gMCkge1xuICAgICAgICAgIC8vIG5vIG5lZWQgdG8gY2FuY2VsIGFuaW1hdGlvbklEIGhlcmU7IHNob3VsZG4ndCBoYXZlIGFueSBpbiBmbGlnaHRcbiAgICAgICAgICBfdGhpcy5hbmltYXRpb25JRCA9IG51bGw7XG4gICAgICAgICAgX3RoaXMuc3RhcnRBbmltYXRpb25JZk5lY2Vzc2FyeSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjdXJyZW50RnJhbWVDb21wbGV0aW9uID0gKF90aGlzLmFjY3VtdWxhdGVkVGltZSAtIE1hdGguZmxvb3IoX3RoaXMuYWNjdW11bGF0ZWRUaW1lIC8gbXNQZXJGcmFtZSkgKiBtc1BlckZyYW1lKSAvIG1zUGVyRnJhbWU7XG4gICAgICAgIHZhciBmcmFtZXNUb0NhdGNoVXAgPSBNYXRoLmZsb29yKF90aGlzLmFjY3VtdWxhdGVkVGltZSAvIG1zUGVyRnJhbWUpO1xuXG4gICAgICAgIHZhciBuZXdMYXN0SWRlYWxTdHlsZXMgPSBbXTtcbiAgICAgICAgdmFyIG5ld0xhc3RJZGVhbFZlbG9jaXRpZXMgPSBbXTtcbiAgICAgICAgdmFyIG5ld0N1cnJlbnRTdHlsZXMgPSBbXTtcbiAgICAgICAgdmFyIG5ld0N1cnJlbnRWZWxvY2l0aWVzID0gW107XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZXN0U3R5bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGRlc3RTdHlsZSA9IGRlc3RTdHlsZXNbaV07XG4gICAgICAgICAgdmFyIG5ld0N1cnJlbnRTdHlsZSA9IHt9O1xuICAgICAgICAgIHZhciBuZXdDdXJyZW50VmVsb2NpdHkgPSB7fTtcbiAgICAgICAgICB2YXIgbmV3TGFzdElkZWFsU3R5bGUgPSB7fTtcbiAgICAgICAgICB2YXIgbmV3TGFzdElkZWFsVmVsb2NpdHkgPSB7fTtcblxuICAgICAgICAgIGZvciAodmFyIGtleSBpbiBkZXN0U3R5bGUpIHtcbiAgICAgICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRlc3RTdHlsZSwga2V5KSkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHN0eWxlVmFsdWUgPSBkZXN0U3R5bGVba2V5XTtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc3R5bGVWYWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgbmV3Q3VycmVudFN0eWxlW2tleV0gPSBzdHlsZVZhbHVlO1xuICAgICAgICAgICAgICBuZXdDdXJyZW50VmVsb2NpdHlba2V5XSA9IDA7XG4gICAgICAgICAgICAgIG5ld0xhc3RJZGVhbFN0eWxlW2tleV0gPSBzdHlsZVZhbHVlO1xuICAgICAgICAgICAgICBuZXdMYXN0SWRlYWxWZWxvY2l0eVtrZXldID0gMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHZhciBuZXdMYXN0SWRlYWxTdHlsZVZhbHVlID0gX3RoaXMuc3RhdGUubGFzdElkZWFsU3R5bGVzW2ldW2tleV07XG4gICAgICAgICAgICAgIHZhciBuZXdMYXN0SWRlYWxWZWxvY2l0eVZhbHVlID0gX3RoaXMuc3RhdGUubGFzdElkZWFsVmVsb2NpdGllc1tpXVtrZXldO1xuICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGZyYW1lc1RvQ2F0Y2hVcDsgaisrKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9zdGVwcGVyID0gX3N0ZXBwZXI0WydkZWZhdWx0J10obXNQZXJGcmFtZSAvIDEwMDAsIG5ld0xhc3RJZGVhbFN0eWxlVmFsdWUsIG5ld0xhc3RJZGVhbFZlbG9jaXR5VmFsdWUsIHN0eWxlVmFsdWUudmFsLCBzdHlsZVZhbHVlLnN0aWZmbmVzcywgc3R5bGVWYWx1ZS5kYW1waW5nLCBzdHlsZVZhbHVlLnByZWNpc2lvbik7XG5cbiAgICAgICAgICAgICAgICBuZXdMYXN0SWRlYWxTdHlsZVZhbHVlID0gX3N0ZXBwZXJbMF07XG4gICAgICAgICAgICAgICAgbmV3TGFzdElkZWFsVmVsb2NpdHlWYWx1ZSA9IF9zdGVwcGVyWzFdO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdmFyIF9zdGVwcGVyMiA9IF9zdGVwcGVyNFsnZGVmYXVsdCddKG1zUGVyRnJhbWUgLyAxMDAwLCBuZXdMYXN0SWRlYWxTdHlsZVZhbHVlLCBuZXdMYXN0SWRlYWxWZWxvY2l0eVZhbHVlLCBzdHlsZVZhbHVlLnZhbCwgc3R5bGVWYWx1ZS5zdGlmZm5lc3MsIHN0eWxlVmFsdWUuZGFtcGluZywgc3R5bGVWYWx1ZS5wcmVjaXNpb24pO1xuXG4gICAgICAgICAgICAgIHZhciBuZXh0SWRlYWxYID0gX3N0ZXBwZXIyWzBdO1xuICAgICAgICAgICAgICB2YXIgbmV4dElkZWFsViA9IF9zdGVwcGVyMlsxXTtcblxuICAgICAgICAgICAgICBuZXdDdXJyZW50U3R5bGVba2V5XSA9IG5ld0xhc3RJZGVhbFN0eWxlVmFsdWUgKyAobmV4dElkZWFsWCAtIG5ld0xhc3RJZGVhbFN0eWxlVmFsdWUpICogY3VycmVudEZyYW1lQ29tcGxldGlvbjtcbiAgICAgICAgICAgICAgbmV3Q3VycmVudFZlbG9jaXR5W2tleV0gPSBuZXdMYXN0SWRlYWxWZWxvY2l0eVZhbHVlICsgKG5leHRJZGVhbFYgLSBuZXdMYXN0SWRlYWxWZWxvY2l0eVZhbHVlKSAqIGN1cnJlbnRGcmFtZUNvbXBsZXRpb247XG4gICAgICAgICAgICAgIG5ld0xhc3RJZGVhbFN0eWxlW2tleV0gPSBuZXdMYXN0SWRlYWxTdHlsZVZhbHVlO1xuICAgICAgICAgICAgICBuZXdMYXN0SWRlYWxWZWxvY2l0eVtrZXldID0gbmV3TGFzdElkZWFsVmVsb2NpdHlWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBuZXdDdXJyZW50U3R5bGVzW2ldID0gbmV3Q3VycmVudFN0eWxlO1xuICAgICAgICAgIG5ld0N1cnJlbnRWZWxvY2l0aWVzW2ldID0gbmV3Q3VycmVudFZlbG9jaXR5O1xuICAgICAgICAgIG5ld0xhc3RJZGVhbFN0eWxlc1tpXSA9IG5ld0xhc3RJZGVhbFN0eWxlO1xuICAgICAgICAgIG5ld0xhc3RJZGVhbFZlbG9jaXRpZXNbaV0gPSBuZXdMYXN0SWRlYWxWZWxvY2l0eTtcbiAgICAgICAgfVxuXG4gICAgICAgIF90aGlzLmFuaW1hdGlvbklEID0gbnVsbDtcbiAgICAgICAgLy8gdGhlIGFtb3VudCB3ZSdyZSBsb29wZWQgb3ZlciBhYm92ZVxuICAgICAgICBfdGhpcy5hY2N1bXVsYXRlZFRpbWUgLT0gZnJhbWVzVG9DYXRjaFVwICogbXNQZXJGcmFtZTtcblxuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgY3VycmVudFN0eWxlczogbmV3Q3VycmVudFN0eWxlcyxcbiAgICAgICAgICBjdXJyZW50VmVsb2NpdGllczogbmV3Q3VycmVudFZlbG9jaXRpZXMsXG4gICAgICAgICAgbGFzdElkZWFsU3R5bGVzOiBuZXdMYXN0SWRlYWxTdHlsZXMsXG4gICAgICAgICAgbGFzdElkZWFsVmVsb2NpdGllczogbmV3TGFzdElkZWFsVmVsb2NpdGllc1xuICAgICAgICB9KTtcblxuICAgICAgICBfdGhpcy51bnJlYWRQcm9wU3R5bGVzID0gbnVsbDtcblxuICAgICAgICBfdGhpcy5zdGFydEFuaW1hdGlvbklmTmVjZXNzYXJ5KCk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgdGhpcy5zdGF0ZSA9IHRoaXMuZGVmYXVsdFN0YXRlKCk7XG4gIH1cblxuICBTdGFnZ2VyZWRNb3Rpb24ucHJvdG90eXBlLmRlZmF1bHRTdGF0ZSA9IGZ1bmN0aW9uIGRlZmF1bHRTdGF0ZSgpIHtcbiAgICB2YXIgX3Byb3BzID0gdGhpcy5wcm9wcztcbiAgICB2YXIgZGVmYXVsdFN0eWxlcyA9IF9wcm9wcy5kZWZhdWx0U3R5bGVzO1xuICAgIHZhciBzdHlsZXMgPSBfcHJvcHMuc3R5bGVzO1xuXG4gICAgdmFyIGN1cnJlbnRTdHlsZXMgPSBkZWZhdWx0U3R5bGVzIHx8IHN0eWxlcygpLm1hcChfc3RyaXBTdHlsZTJbJ2RlZmF1bHQnXSk7XG4gICAgdmFyIGN1cnJlbnRWZWxvY2l0aWVzID0gY3VycmVudFN0eWxlcy5tYXAoZnVuY3Rpb24gKGN1cnJlbnRTdHlsZSkge1xuICAgICAgcmV0dXJuIF9tYXBUb1plcm8yWydkZWZhdWx0J10oY3VycmVudFN0eWxlKTtcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgY3VycmVudFN0eWxlczogY3VycmVudFN0eWxlcyxcbiAgICAgIGN1cnJlbnRWZWxvY2l0aWVzOiBjdXJyZW50VmVsb2NpdGllcyxcbiAgICAgIGxhc3RJZGVhbFN0eWxlczogY3VycmVudFN0eWxlcyxcbiAgICAgIGxhc3RJZGVhbFZlbG9jaXRpZXM6IGN1cnJlbnRWZWxvY2l0aWVzXG4gICAgfTtcbiAgfTtcblxuICBTdGFnZ2VyZWRNb3Rpb24ucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50ID0gZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgdGhpcy5wcmV2VGltZSA9IF9wZXJmb3JtYW5jZU5vdzJbJ2RlZmF1bHQnXSgpO1xuICAgIHRoaXMuc3RhcnRBbmltYXRpb25JZk5lY2Vzc2FyeSgpO1xuICB9O1xuXG4gIFN0YWdnZXJlZE1vdGlvbi5wcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyA9IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMocHJvcHMpIHtcbiAgICBpZiAodGhpcy51bnJlYWRQcm9wU3R5bGVzICE9IG51bGwpIHtcbiAgICAgIC8vIHByZXZpb3VzIHByb3BzIGhhdmVuJ3QgaGFkIHRoZSBjaGFuY2UgdG8gYmUgc2V0IHlldDsgc2V0IHRoZW0gaGVyZVxuICAgICAgdGhpcy5jbGVhclVucmVhZFByb3BTdHlsZSh0aGlzLnVucmVhZFByb3BTdHlsZXMpO1xuICAgIH1cblxuICAgIHRoaXMudW5yZWFkUHJvcFN0eWxlcyA9IHByb3BzLnN0eWxlcyh0aGlzLnN0YXRlLmxhc3RJZGVhbFN0eWxlcyk7XG4gICAgaWYgKHRoaXMuYW5pbWF0aW9uSUQgPT0gbnVsbCkge1xuICAgICAgdGhpcy5wcmV2VGltZSA9IF9wZXJmb3JtYW5jZU5vdzJbJ2RlZmF1bHQnXSgpO1xuICAgICAgdGhpcy5zdGFydEFuaW1hdGlvbklmTmVjZXNzYXJ5KCk7XG4gICAgfVxuICB9O1xuXG4gIFN0YWdnZXJlZE1vdGlvbi5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVubW91bnQgPSBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICBpZiAodGhpcy5hbmltYXRpb25JRCAhPSBudWxsKSB7XG4gICAgICBfcmFmMlsnZGVmYXVsdCddLmNhbmNlbCh0aGlzLmFuaW1hdGlvbklEKTtcbiAgICAgIHRoaXMuYW5pbWF0aW9uSUQgPSBudWxsO1xuICAgIH1cbiAgfTtcblxuICBTdGFnZ2VyZWRNb3Rpb24ucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICB2YXIgcmVuZGVyZWRDaGlsZHJlbiA9IHRoaXMucHJvcHMuY2hpbGRyZW4odGhpcy5zdGF0ZS5jdXJyZW50U3R5bGVzKTtcbiAgICByZXR1cm4gcmVuZGVyZWRDaGlsZHJlbiAmJiBfcmVhY3QyWydkZWZhdWx0J10uQ2hpbGRyZW4ub25seShyZW5kZXJlZENoaWxkcmVuKTtcbiAgfTtcblxuICByZXR1cm4gU3RhZ2dlcmVkTW90aW9uO1xufSkoX3JlYWN0MlsnZGVmYXVsdCddLkNvbXBvbmVudCk7XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IFN0YWdnZXJlZE1vdGlvbjtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuXG4vLyBpdCdzIHBvc3NpYmxlIHRoYXQgY3VycmVudFN0eWxlJ3MgdmFsdWUgaXMgc3RhbGU6IGlmIHByb3BzIGlzIGltbWVkaWF0ZWx5XG4vLyBjaGFuZ2VkIGZyb20gMCB0byA0MDAgdG8gc3ByaW5nKDApIGFnYWluLCB0aGUgYXN5bmMgY3VycmVudFN0eWxlIGlzIHN0aWxsXG4vLyBhdCAwIChkaWRuJ3QgaGF2ZSB0aW1lIHRvIHRpY2sgYW5kIGludGVycG9sYXRlIGV2ZW4gb25jZSkuIElmIHdlIG5haXZlbHlcbi8vIGNvbXBhcmUgY3VycmVudFN0eWxlIHdpdGggZGVzdFZhbCBpdCdsbCBiZSAwID09PSAwIChubyBhbmltYXRpb24sIHN0b3ApLlxuLy8gSW4gcmVhbGl0eSBjdXJyZW50U3R5bGUgc2hvdWxkIGJlIDQwMFxuXG4vLyBhZnRlciBjaGVja2luZyBmb3IgdW5yZWFkUHJvcFN0eWxlcyAhPSBudWxsLCB3ZSBtYW51YWxseSBnbyBzZXQgdGhlXG4vLyBub24taW50ZXJwb2xhdGluZyB2YWx1ZXMgKHRob3NlIHRoYXQgYXJlIGEgbnVtYmVyLCB3aXRob3V0IGEgc3ByaW5nXG4vLyBjb25maWcpXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3JlYWN0LW1vdGlvbi9saWIvU3RhZ2dlcmVkTW90aW9uLmpzXG4vLyBtb2R1bGUgaWQgPSAyNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCd2YWx1ZScgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24nKTsgfSB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09ICdmdW5jdGlvbicgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICcgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbnZhciBfbWFwVG9aZXJvID0gcmVxdWlyZSgnLi9tYXBUb1plcm8nKTtcblxudmFyIF9tYXBUb1plcm8yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfbWFwVG9aZXJvKTtcblxudmFyIF9zdHJpcFN0eWxlID0gcmVxdWlyZSgnLi9zdHJpcFN0eWxlJyk7XG5cbnZhciBfc3RyaXBTdHlsZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zdHJpcFN0eWxlKTtcblxudmFyIF9zdGVwcGVyMyA9IHJlcXVpcmUoJy4vc3RlcHBlcicpO1xuXG52YXIgX3N0ZXBwZXI0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc3RlcHBlcjMpO1xuXG52YXIgX21lcmdlRGlmZiA9IHJlcXVpcmUoJy4vbWVyZ2VEaWZmJyk7XG5cbnZhciBfbWVyZ2VEaWZmMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX21lcmdlRGlmZik7XG5cbnZhciBfcGVyZm9ybWFuY2VOb3cgPSByZXF1aXJlKCdwZXJmb3JtYW5jZS1ub3cnKTtcblxudmFyIF9wZXJmb3JtYW5jZU5vdzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9wZXJmb3JtYW5jZU5vdyk7XG5cbnZhciBfcmFmID0gcmVxdWlyZSgncmFmJyk7XG5cbnZhciBfcmFmMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JhZik7XG5cbnZhciBfc2hvdWxkU3RvcEFuaW1hdGlvbiA9IHJlcXVpcmUoJy4vc2hvdWxkU3RvcEFuaW1hdGlvbicpO1xuXG52YXIgX3Nob3VsZFN0b3BBbmltYXRpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc2hvdWxkU3RvcEFuaW1hdGlvbik7XG5cbnZhciBfcmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpO1xuXG52YXIgX3JlYWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JlYWN0KTtcblxudmFyIF9wcm9wVHlwZXMgPSByZXF1aXJlKCdwcm9wLXR5cGVzJyk7XG5cbnZhciBfcHJvcFR5cGVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Byb3BUeXBlcyk7XG5cbnZhciBtc1BlckZyYW1lID0gMTAwMCAvIDYwO1xuXG4vLyB0aGUgY2hpbGRyZW4gZnVuY3Rpb24gJiAocG90ZW50aWFsKSBzdHlsZXMgZnVuY3Rpb24gYXNrcyBhcyBwYXJhbSBhblxuLy8gQXJyYXk8VHJhbnNpdGlvblBsYWluU3R5bGU+LCB3aGVyZSBlYWNoIFRyYW5zaXRpb25QbGFpblN0eWxlIGlzIG9mIHRoZSBmb3JtYXRcbi8vIHtrZXk6IHN0cmluZywgZGF0YT86IGFueSwgc3R5bGU6IFBsYWluU3R5bGV9LiBIb3dldmVyLCB0aGUgd2F5IHdlIGtlZXBcbi8vIGludGVybmFsIHN0YXRlcyBkb2Vzbid0IGNvbnRhaW4gc3VjaCBhIGRhdGEgc3RydWN0dXJlIChjaGVjayB0aGUgc3RhdGUgYW5kXG4vLyBUcmFuc2l0aW9uTW90aW9uU3RhdGUpLiBTbyB3aGVuIGNoaWxkcmVuIGZ1bmN0aW9uIGFuZCBvdGhlcnMgYXNrIGZvciBzdWNoXG4vLyBkYXRhIHdlIG5lZWQgdG8gZ2VuZXJhdGUgdGhlbSBvbiB0aGUgZmx5IGJ5IGNvbWJpbmluZyBtZXJnZWRQcm9wc1N0eWxlcyBhbmRcbi8vIGN1cnJlbnRTdHlsZXMvbGFzdElkZWFsU3R5bGVzXG5mdW5jdGlvbiByZWh5ZHJhdGVTdHlsZXMobWVyZ2VkUHJvcHNTdHlsZXMsIHVucmVhZFByb3BTdHlsZXMsIHBsYWluU3R5bGVzKSB7XG4gIC8vIENvcHkgdGhlIHZhbHVlIHRvIGEgYGNvbnN0YCBzbyB0aGF0IEZsb3cgdW5kZXJzdGFuZHMgdGhhdCB0aGUgY29uc3Qgd29uJ3RcbiAgLy8gY2hhbmdlIGFuZCB3aWxsIGJlIG5vbi1udWxsYWJsZSBpbiB0aGUgY2FsbGJhY2sgYmVsb3cuXG4gIHZhciBjVW5yZWFkUHJvcFN0eWxlcyA9IHVucmVhZFByb3BTdHlsZXM7XG4gIGlmIChjVW5yZWFkUHJvcFN0eWxlcyA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG1lcmdlZFByb3BzU3R5bGVzLm1hcChmdW5jdGlvbiAobWVyZ2VkUHJvcHNTdHlsZSwgaSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAga2V5OiBtZXJnZWRQcm9wc1N0eWxlLmtleSxcbiAgICAgICAgZGF0YTogbWVyZ2VkUHJvcHNTdHlsZS5kYXRhLFxuICAgICAgICBzdHlsZTogcGxhaW5TdHlsZXNbaV1cbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIG1lcmdlZFByb3BzU3R5bGVzLm1hcChmdW5jdGlvbiAobWVyZ2VkUHJvcHNTdHlsZSwgaSkge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgY1VucmVhZFByb3BTdHlsZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgIGlmIChjVW5yZWFkUHJvcFN0eWxlc1tqXS5rZXkgPT09IG1lcmdlZFByb3BzU3R5bGUua2V5KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAga2V5OiBjVW5yZWFkUHJvcFN0eWxlc1tqXS5rZXksXG4gICAgICAgICAgZGF0YTogY1VucmVhZFByb3BTdHlsZXNbal0uZGF0YSxcbiAgICAgICAgICBzdHlsZTogcGxhaW5TdHlsZXNbaV1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsga2V5OiBtZXJnZWRQcm9wc1N0eWxlLmtleSwgZGF0YTogbWVyZ2VkUHJvcHNTdHlsZS5kYXRhLCBzdHlsZTogcGxhaW5TdHlsZXNbaV0gfTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFN0b3BBbmltYXRpb25BbGwoY3VycmVudFN0eWxlcywgZGVzdFN0eWxlcywgY3VycmVudFZlbG9jaXRpZXMsIG1lcmdlZFByb3BzU3R5bGVzKSB7XG4gIGlmIChtZXJnZWRQcm9wc1N0eWxlcy5sZW5ndGggIT09IGRlc3RTdHlsZXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZXJnZWRQcm9wc1N0eWxlcy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChtZXJnZWRQcm9wc1N0eWxlc1tpXS5rZXkgIT09IGRlc3RTdHlsZXNbaV0ua2V5KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLy8gd2UgaGF2ZSB0aGUgaW52YXJpYW50IHRoYXQgbWVyZ2VkUHJvcHNTdHlsZXMgYW5kXG4gIC8vIGN1cnJlbnRTdHlsZXMvY3VycmVudFZlbG9jaXRpZXMvbGFzdCogYXJlIHN5bmNlZCBpbiB0ZXJtcyBvZiBjZWxscywgc2VlXG4gIC8vIG1lcmdlQW5kU3luYyBjb21tZW50IGZvciBtb3JlIGluZm9cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZXJnZWRQcm9wc1N0eWxlcy5sZW5ndGg7IGkrKykge1xuICAgIGlmICghX3Nob3VsZFN0b3BBbmltYXRpb24yWydkZWZhdWx0J10oY3VycmVudFN0eWxlc1tpXSwgZGVzdFN0eWxlc1tpXS5zdHlsZSwgY3VycmVudFZlbG9jaXRpZXNbaV0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8vIGNvcmUga2V5IG1lcmdpbmcgbG9naWNcblxuLy8gdGhpbmdzIHRvIGRvOiBzYXkgcHJldmlvdXNseSBtZXJnZWQgc3R5bGUgaXMge2EsIGJ9LCBkZXN0IHN0eWxlIChwcm9wKSBpcyB7Yixcbi8vIGN9LCBwcmV2aW91cyBjdXJyZW50IChpbnRlcnBvbGF0aW5nKSBzdHlsZSBpcyB7YSwgYn1cbi8vICoqaW52YXJpYW50Kio6IGN1cnJlbnRbaV0gY29ycmVzcG9uZHMgdG8gbWVyZ2VkW2ldIGluIHRlcm1zIG9mIGtleVxuXG4vLyBzdGVwczpcbi8vIHR1cm4gbWVyZ2VkIHN0eWxlIGludG8ge2E/LCBiLCBjfVxuLy8gICAgYWRkIGMsIHZhbHVlIG9mIGMgaXMgZGVzdFN0eWxlcy5jXG4vLyAgICBtYXliZSByZW1vdmUgYSwgYWthIGNhbGwgd2lsbExlYXZlKGEpLCB0aGVuIG1lcmdlZCBpcyBlaXRoZXIge2IsIGN9IG9yIHthLCBiLCBjfVxuLy8gdHVybiBjdXJyZW50IChpbnRlcnBvbGF0aW5nKSBzdHlsZSBmcm9tIHthLCBifSBpbnRvIHthPywgYiwgY31cbi8vICAgIG1heWJlIHJlbW92ZSBhXG4vLyAgICBjZXJ0YWlubHkgYWRkIGMsIHZhbHVlIG9mIGMgaXMgd2lsbEVudGVyKGMpXG4vLyBsb29wIG92ZXIgbWVyZ2VkIGFuZCBjb25zdHJ1Y3QgbmV3IGN1cnJlbnRcbi8vIGRlc3QgZG9lc24ndCBjaGFuZ2UsIHRoYXQncyBvd25lcidzXG5mdW5jdGlvbiBtZXJnZUFuZFN5bmMod2lsbEVudGVyLCB3aWxsTGVhdmUsIGRpZExlYXZlLCBvbGRNZXJnZWRQcm9wc1N0eWxlcywgZGVzdFN0eWxlcywgb2xkQ3VycmVudFN0eWxlcywgb2xkQ3VycmVudFZlbG9jaXRpZXMsIG9sZExhc3RJZGVhbFN0eWxlcywgb2xkTGFzdElkZWFsVmVsb2NpdGllcykge1xuICB2YXIgbmV3TWVyZ2VkUHJvcHNTdHlsZXMgPSBfbWVyZ2VEaWZmMlsnZGVmYXVsdCddKG9sZE1lcmdlZFByb3BzU3R5bGVzLCBkZXN0U3R5bGVzLCBmdW5jdGlvbiAob2xkSW5kZXgsIG9sZE1lcmdlZFByb3BzU3R5bGUpIHtcbiAgICB2YXIgbGVhdmluZ1N0eWxlID0gd2lsbExlYXZlKG9sZE1lcmdlZFByb3BzU3R5bGUpO1xuICAgIGlmIChsZWF2aW5nU3R5bGUgPT0gbnVsbCkge1xuICAgICAgZGlkTGVhdmUoeyBrZXk6IG9sZE1lcmdlZFByb3BzU3R5bGUua2V5LCBkYXRhOiBvbGRNZXJnZWRQcm9wc1N0eWxlLmRhdGEgfSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKF9zaG91bGRTdG9wQW5pbWF0aW9uMlsnZGVmYXVsdCddKG9sZEN1cnJlbnRTdHlsZXNbb2xkSW5kZXhdLCBsZWF2aW5nU3R5bGUsIG9sZEN1cnJlbnRWZWxvY2l0aWVzW29sZEluZGV4XSkpIHtcbiAgICAgIGRpZExlYXZlKHsga2V5OiBvbGRNZXJnZWRQcm9wc1N0eWxlLmtleSwgZGF0YTogb2xkTWVyZ2VkUHJvcHNTdHlsZS5kYXRhIH0pO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB7IGtleTogb2xkTWVyZ2VkUHJvcHNTdHlsZS5rZXksIGRhdGE6IG9sZE1lcmdlZFByb3BzU3R5bGUuZGF0YSwgc3R5bGU6IGxlYXZpbmdTdHlsZSB9O1xuICB9KTtcblxuICB2YXIgbmV3Q3VycmVudFN0eWxlcyA9IFtdO1xuICB2YXIgbmV3Q3VycmVudFZlbG9jaXRpZXMgPSBbXTtcbiAgdmFyIG5ld0xhc3RJZGVhbFN0eWxlcyA9IFtdO1xuICB2YXIgbmV3TGFzdElkZWFsVmVsb2NpdGllcyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG5ld01lcmdlZFByb3BzU3R5bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5ld01lcmdlZFByb3BzU3R5bGVDZWxsID0gbmV3TWVyZ2VkUHJvcHNTdHlsZXNbaV07XG4gICAgdmFyIGZvdW5kT2xkSW5kZXggPSBudWxsO1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgb2xkTWVyZ2VkUHJvcHNTdHlsZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgIGlmIChvbGRNZXJnZWRQcm9wc1N0eWxlc1tqXS5rZXkgPT09IG5ld01lcmdlZFByb3BzU3R5bGVDZWxsLmtleSkge1xuICAgICAgICBmb3VuZE9sZEluZGV4ID0gajtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFRPRE86IGtleSBzZWFyY2ggY29kZVxuICAgIGlmIChmb3VuZE9sZEluZGV4ID09IG51bGwpIHtcbiAgICAgIHZhciBwbGFpblN0eWxlID0gd2lsbEVudGVyKG5ld01lcmdlZFByb3BzU3R5bGVDZWxsKTtcbiAgICAgIG5ld0N1cnJlbnRTdHlsZXNbaV0gPSBwbGFpblN0eWxlO1xuICAgICAgbmV3TGFzdElkZWFsU3R5bGVzW2ldID0gcGxhaW5TdHlsZTtcblxuICAgICAgdmFyIHZlbG9jaXR5ID0gX21hcFRvWmVybzJbJ2RlZmF1bHQnXShuZXdNZXJnZWRQcm9wc1N0eWxlQ2VsbC5zdHlsZSk7XG4gICAgICBuZXdDdXJyZW50VmVsb2NpdGllc1tpXSA9IHZlbG9jaXR5O1xuICAgICAgbmV3TGFzdElkZWFsVmVsb2NpdGllc1tpXSA9IHZlbG9jaXR5O1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXdDdXJyZW50U3R5bGVzW2ldID0gb2xkQ3VycmVudFN0eWxlc1tmb3VuZE9sZEluZGV4XTtcbiAgICAgIG5ld0xhc3RJZGVhbFN0eWxlc1tpXSA9IG9sZExhc3RJZGVhbFN0eWxlc1tmb3VuZE9sZEluZGV4XTtcbiAgICAgIG5ld0N1cnJlbnRWZWxvY2l0aWVzW2ldID0gb2xkQ3VycmVudFZlbG9jaXRpZXNbZm91bmRPbGRJbmRleF07XG4gICAgICBuZXdMYXN0SWRlYWxWZWxvY2l0aWVzW2ldID0gb2xkTGFzdElkZWFsVmVsb2NpdGllc1tmb3VuZE9sZEluZGV4XTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gW25ld01lcmdlZFByb3BzU3R5bGVzLCBuZXdDdXJyZW50U3R5bGVzLCBuZXdDdXJyZW50VmVsb2NpdGllcywgbmV3TGFzdElkZWFsU3R5bGVzLCBuZXdMYXN0SWRlYWxWZWxvY2l0aWVzXTtcbn1cblxudmFyIFRyYW5zaXRpb25Nb3Rpb24gPSAoZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzKFRyYW5zaXRpb25Nb3Rpb24sIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIF9jcmVhdGVDbGFzcyhUcmFuc2l0aW9uTW90aW9uLCBudWxsLCBbe1xuICAgIGtleTogJ3Byb3BUeXBlcycsXG4gICAgdmFsdWU6IHtcbiAgICAgIGRlZmF1bHRTdHlsZXM6IF9wcm9wVHlwZXMyWydkZWZhdWx0J10uYXJyYXlPZihfcHJvcFR5cGVzMlsnZGVmYXVsdCddLnNoYXBlKHtcbiAgICAgICAga2V5OiBfcHJvcFR5cGVzMlsnZGVmYXVsdCddLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgICAgICBkYXRhOiBfcHJvcFR5cGVzMlsnZGVmYXVsdCddLmFueSxcbiAgICAgICAgc3R5bGU6IF9wcm9wVHlwZXMyWydkZWZhdWx0J10ub2JqZWN0T2YoX3Byb3BUeXBlczJbJ2RlZmF1bHQnXS5udW1iZXIpLmlzUmVxdWlyZWRcbiAgICAgIH0pKSxcbiAgICAgIHN0eWxlczogX3Byb3BUeXBlczJbJ2RlZmF1bHQnXS5vbmVPZlR5cGUoW19wcm9wVHlwZXMyWydkZWZhdWx0J10uZnVuYywgX3Byb3BUeXBlczJbJ2RlZmF1bHQnXS5hcnJheU9mKF9wcm9wVHlwZXMyWydkZWZhdWx0J10uc2hhcGUoe1xuICAgICAgICBrZXk6IF9wcm9wVHlwZXMyWydkZWZhdWx0J10uc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICAgIGRhdGE6IF9wcm9wVHlwZXMyWydkZWZhdWx0J10uYW55LFxuICAgICAgICBzdHlsZTogX3Byb3BUeXBlczJbJ2RlZmF1bHQnXS5vYmplY3RPZihfcHJvcFR5cGVzMlsnZGVmYXVsdCddLm9uZU9mVHlwZShbX3Byb3BUeXBlczJbJ2RlZmF1bHQnXS5udW1iZXIsIF9wcm9wVHlwZXMyWydkZWZhdWx0J10ub2JqZWN0XSkpLmlzUmVxdWlyZWRcbiAgICAgIH0pKV0pLmlzUmVxdWlyZWQsXG4gICAgICBjaGlsZHJlbjogX3Byb3BUeXBlczJbJ2RlZmF1bHQnXS5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICB3aWxsRW50ZXI6IF9wcm9wVHlwZXMyWydkZWZhdWx0J10uZnVuYyxcbiAgICAgIHdpbGxMZWF2ZTogX3Byb3BUeXBlczJbJ2RlZmF1bHQnXS5mdW5jLFxuICAgICAgZGlkTGVhdmU6IF9wcm9wVHlwZXMyWydkZWZhdWx0J10uZnVuY1xuICAgIH0sXG4gICAgZW51bWVyYWJsZTogdHJ1ZVxuICB9LCB7XG4gICAga2V5OiAnZGVmYXVsdFByb3BzJyxcbiAgICB2YWx1ZToge1xuICAgICAgd2lsbEVudGVyOiBmdW5jdGlvbiB3aWxsRW50ZXIoc3R5bGVUaGF0RW50ZXJlZCkge1xuICAgICAgICByZXR1cm4gX3N0cmlwU3R5bGUyWydkZWZhdWx0J10oc3R5bGVUaGF0RW50ZXJlZC5zdHlsZSk7XG4gICAgICB9LFxuICAgICAgLy8gcmVjYWxsOiByZXR1cm5pbmcgbnVsbCBtYWtlcyB0aGUgY3VycmVudCB1bm1vdW50aW5nIFRyYW5zaXRpb25TdHlsZVxuICAgICAgLy8gZGlzYXBwZWFyIGltbWVkaWF0ZWx5XG4gICAgICB3aWxsTGVhdmU6IGZ1bmN0aW9uIHdpbGxMZWF2ZSgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9LFxuICAgICAgZGlkTGVhdmU6IGZ1bmN0aW9uIGRpZExlYXZlKCkge31cbiAgICB9LFxuICAgIGVudW1lcmFibGU6IHRydWVcbiAgfV0pO1xuXG4gIGZ1bmN0aW9uIFRyYW5zaXRpb25Nb3Rpb24ocHJvcHMpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRyYW5zaXRpb25Nb3Rpb24pO1xuXG4gICAgX1JlYWN0JENvbXBvbmVudC5jYWxsKHRoaXMsIHByb3BzKTtcbiAgICB0aGlzLnVubW91bnRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmFuaW1hdGlvbklEID0gbnVsbDtcbiAgICB0aGlzLnByZXZUaW1lID0gMDtcbiAgICB0aGlzLmFjY3VtdWxhdGVkVGltZSA9IDA7XG4gICAgdGhpcy51bnJlYWRQcm9wU3R5bGVzID0gbnVsbDtcblxuICAgIHRoaXMuY2xlYXJVbnJlYWRQcm9wU3R5bGUgPSBmdW5jdGlvbiAodW5yZWFkUHJvcFN0eWxlcykge1xuICAgICAgdmFyIF9tZXJnZUFuZFN5bmMgPSBtZXJnZUFuZFN5bmMoX3RoaXMucHJvcHMud2lsbEVudGVyLCBfdGhpcy5wcm9wcy53aWxsTGVhdmUsIF90aGlzLnByb3BzLmRpZExlYXZlLCBfdGhpcy5zdGF0ZS5tZXJnZWRQcm9wc1N0eWxlcywgdW5yZWFkUHJvcFN0eWxlcywgX3RoaXMuc3RhdGUuY3VycmVudFN0eWxlcywgX3RoaXMuc3RhdGUuY3VycmVudFZlbG9jaXRpZXMsIF90aGlzLnN0YXRlLmxhc3RJZGVhbFN0eWxlcywgX3RoaXMuc3RhdGUubGFzdElkZWFsVmVsb2NpdGllcyk7XG5cbiAgICAgIHZhciBtZXJnZWRQcm9wc1N0eWxlcyA9IF9tZXJnZUFuZFN5bmNbMF07XG4gICAgICB2YXIgY3VycmVudFN0eWxlcyA9IF9tZXJnZUFuZFN5bmNbMV07XG4gICAgICB2YXIgY3VycmVudFZlbG9jaXRpZXMgPSBfbWVyZ2VBbmRTeW5jWzJdO1xuICAgICAgdmFyIGxhc3RJZGVhbFN0eWxlcyA9IF9tZXJnZUFuZFN5bmNbM107XG4gICAgICB2YXIgbGFzdElkZWFsVmVsb2NpdGllcyA9IF9tZXJnZUFuZFN5bmNbNF07XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdW5yZWFkUHJvcFN0eWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgdW5yZWFkUHJvcFN0eWxlID0gdW5yZWFkUHJvcFN0eWxlc1tpXS5zdHlsZTtcbiAgICAgICAgdmFyIGRpcnR5ID0gZmFsc2U7XG5cbiAgICAgICAgZm9yICh2YXIga2V5IGluIHVucmVhZFByb3BTdHlsZSkge1xuICAgICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHVucmVhZFByb3BTdHlsZSwga2V5KSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIHN0eWxlVmFsdWUgPSB1bnJlYWRQcm9wU3R5bGVba2V5XTtcbiAgICAgICAgICBpZiAodHlwZW9mIHN0eWxlVmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBpZiAoIWRpcnR5KSB7XG4gICAgICAgICAgICAgIGRpcnR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgY3VycmVudFN0eWxlc1tpXSA9IF9leHRlbmRzKHt9LCBjdXJyZW50U3R5bGVzW2ldKTtcbiAgICAgICAgICAgICAgY3VycmVudFZlbG9jaXRpZXNbaV0gPSBfZXh0ZW5kcyh7fSwgY3VycmVudFZlbG9jaXRpZXNbaV0pO1xuICAgICAgICAgICAgICBsYXN0SWRlYWxTdHlsZXNbaV0gPSBfZXh0ZW5kcyh7fSwgbGFzdElkZWFsU3R5bGVzW2ldKTtcbiAgICAgICAgICAgICAgbGFzdElkZWFsVmVsb2NpdGllc1tpXSA9IF9leHRlbmRzKHt9LCBsYXN0SWRlYWxWZWxvY2l0aWVzW2ldKTtcbiAgICAgICAgICAgICAgbWVyZ2VkUHJvcHNTdHlsZXNbaV0gPSB7XG4gICAgICAgICAgICAgICAga2V5OiBtZXJnZWRQcm9wc1N0eWxlc1tpXS5rZXksXG4gICAgICAgICAgICAgICAgZGF0YTogbWVyZ2VkUHJvcHNTdHlsZXNbaV0uZGF0YSxcbiAgICAgICAgICAgICAgICBzdHlsZTogX2V4dGVuZHMoe30sIG1lcmdlZFByb3BzU3R5bGVzW2ldLnN0eWxlKVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY3VycmVudFN0eWxlc1tpXVtrZXldID0gc3R5bGVWYWx1ZTtcbiAgICAgICAgICAgIGN1cnJlbnRWZWxvY2l0aWVzW2ldW2tleV0gPSAwO1xuICAgICAgICAgICAgbGFzdElkZWFsU3R5bGVzW2ldW2tleV0gPSBzdHlsZVZhbHVlO1xuICAgICAgICAgICAgbGFzdElkZWFsVmVsb2NpdGllc1tpXVtrZXldID0gMDtcbiAgICAgICAgICAgIG1lcmdlZFByb3BzU3R5bGVzW2ldLnN0eWxlW2tleV0gPSBzdHlsZVZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyB1bmxpa2UgdGhlIG90aGVyIDIgY29tcG9uZW50cywgd2UgY2FuJ3QgZGV0ZWN0IHN0YWxlbmVzcyBhbmQgb3B0aW9uYWxseVxuICAgICAgLy8gb3B0IG91dCBvZiBzZXRTdGF0ZSBoZXJlLiBlYWNoIHN0eWxlIG9iamVjdCdzIGRhdGEgbWlnaHQgY29udGFpbiBuZXdcbiAgICAgIC8vIHN0dWZmIHdlJ3JlIG5vdC9jYW5ub3QgY29tcGFyZVxuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBjdXJyZW50U3R5bGVzOiBjdXJyZW50U3R5bGVzLFxuICAgICAgICBjdXJyZW50VmVsb2NpdGllczogY3VycmVudFZlbG9jaXRpZXMsXG4gICAgICAgIG1lcmdlZFByb3BzU3R5bGVzOiBtZXJnZWRQcm9wc1N0eWxlcyxcbiAgICAgICAgbGFzdElkZWFsU3R5bGVzOiBsYXN0SWRlYWxTdHlsZXMsXG4gICAgICAgIGxhc3RJZGVhbFZlbG9jaXRpZXM6IGxhc3RJZGVhbFZlbG9jaXRpZXNcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICB0aGlzLnN0YXJ0QW5pbWF0aW9uSWZOZWNlc3NhcnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoX3RoaXMudW5tb3VudGluZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFRPRE86IHdoZW4gY29uZmlnIGlzIHthOiAxMH0gYW5kIGRlc3QgaXMge2E6IDEwfSBkbyB3ZSByYWYgb25jZSBhbmRcbiAgICAgIC8vIGNhbGwgY2I/IE5vLCBvdGhlcndpc2UgYWNjaWRlbnRhbCBwYXJlbnQgcmVyZW5kZXIgY2F1c2VzIGNiIHRyaWdnZXJcbiAgICAgIF90aGlzLmFuaW1hdGlvbklEID0gX3JhZjJbJ2RlZmF1bHQnXShmdW5jdGlvbiAodGltZXN0YW1wKSB7XG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9jaGVuZ2xvdS9yZWFjdC1tb3Rpb24vcHVsbC80MjBcbiAgICAgICAgLy8gPiBpZiBleGVjdXRpb24gcGFzc2VzIHRoZSBjb25kaXRpb25hbCBpZiAodGhpcy51bm1vdW50aW5nKSwgdGhlblxuICAgICAgICAvLyBleGVjdXRlcyBhc3luYyBkZWZhdWx0UmFmIGFuZCBhZnRlciB0aGF0IGNvbXBvbmVudCB1bm1vdW50cyBhbmQgYWZ0ZXJcbiAgICAgICAgLy8gdGhhdCB0aGUgY2FsbGJhY2sgb2YgZGVmYXVsdFJhZiBpcyBjYWxsZWQsIHRoZW4gc2V0U3RhdGUgd2lsbCBiZSBjYWxsZWRcbiAgICAgICAgLy8gb24gdW5tb3VudGVkIGNvbXBvbmVudC5cbiAgICAgICAgaWYgKF90aGlzLnVubW91bnRpbmcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcHJvcFN0eWxlcyA9IF90aGlzLnByb3BzLnN0eWxlcztcbiAgICAgICAgdmFyIGRlc3RTdHlsZXMgPSB0eXBlb2YgcHJvcFN0eWxlcyA9PT0gJ2Z1bmN0aW9uJyA/IHByb3BTdHlsZXMocmVoeWRyYXRlU3R5bGVzKF90aGlzLnN0YXRlLm1lcmdlZFByb3BzU3R5bGVzLCBfdGhpcy51bnJlYWRQcm9wU3R5bGVzLCBfdGhpcy5zdGF0ZS5sYXN0SWRlYWxTdHlsZXMpKSA6IHByb3BTdHlsZXM7XG5cbiAgICAgICAgLy8gY2hlY2sgaWYgd2UgbmVlZCB0byBhbmltYXRlIGluIHRoZSBmaXJzdCBwbGFjZVxuICAgICAgICBpZiAoc2hvdWxkU3RvcEFuaW1hdGlvbkFsbChfdGhpcy5zdGF0ZS5jdXJyZW50U3R5bGVzLCBkZXN0U3R5bGVzLCBfdGhpcy5zdGF0ZS5jdXJyZW50VmVsb2NpdGllcywgX3RoaXMuc3RhdGUubWVyZ2VkUHJvcHNTdHlsZXMpKSB7XG4gICAgICAgICAgLy8gbm8gbmVlZCB0byBjYW5jZWwgYW5pbWF0aW9uSUQgaGVyZTsgc2hvdWxkbid0IGhhdmUgYW55IGluIGZsaWdodFxuICAgICAgICAgIF90aGlzLmFuaW1hdGlvbklEID0gbnVsbDtcbiAgICAgICAgICBfdGhpcy5hY2N1bXVsYXRlZFRpbWUgPSAwO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjdXJyZW50VGltZSA9IHRpbWVzdGFtcCB8fCBfcGVyZm9ybWFuY2VOb3cyWydkZWZhdWx0J10oKTtcbiAgICAgICAgdmFyIHRpbWVEZWx0YSA9IGN1cnJlbnRUaW1lIC0gX3RoaXMucHJldlRpbWU7XG4gICAgICAgIF90aGlzLnByZXZUaW1lID0gY3VycmVudFRpbWU7XG4gICAgICAgIF90aGlzLmFjY3VtdWxhdGVkVGltZSA9IF90aGlzLmFjY3VtdWxhdGVkVGltZSArIHRpbWVEZWx0YTtcbiAgICAgICAgLy8gbW9yZSB0aGFuIDEwIGZyYW1lcz8gcHJvbGx5IHN3aXRjaGVkIGJyb3dzZXIgdGFiLiBSZXN0YXJ0XG4gICAgICAgIGlmIChfdGhpcy5hY2N1bXVsYXRlZFRpbWUgPiBtc1BlckZyYW1lICogMTApIHtcbiAgICAgICAgICBfdGhpcy5hY2N1bXVsYXRlZFRpbWUgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF90aGlzLmFjY3VtdWxhdGVkVGltZSA9PT0gMCkge1xuICAgICAgICAgIC8vIG5vIG5lZWQgdG8gY2FuY2VsIGFuaW1hdGlvbklEIGhlcmU7IHNob3VsZG4ndCBoYXZlIGFueSBpbiBmbGlnaHRcbiAgICAgICAgICBfdGhpcy5hbmltYXRpb25JRCA9IG51bGw7XG4gICAgICAgICAgX3RoaXMuc3RhcnRBbmltYXRpb25JZk5lY2Vzc2FyeSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjdXJyZW50RnJhbWVDb21wbGV0aW9uID0gKF90aGlzLmFjY3VtdWxhdGVkVGltZSAtIE1hdGguZmxvb3IoX3RoaXMuYWNjdW11bGF0ZWRUaW1lIC8gbXNQZXJGcmFtZSkgKiBtc1BlckZyYW1lKSAvIG1zUGVyRnJhbWU7XG4gICAgICAgIHZhciBmcmFtZXNUb0NhdGNoVXAgPSBNYXRoLmZsb29yKF90aGlzLmFjY3VtdWxhdGVkVGltZSAvIG1zUGVyRnJhbWUpO1xuXG4gICAgICAgIHZhciBfbWVyZ2VBbmRTeW5jMiA9IG1lcmdlQW5kU3luYyhfdGhpcy5wcm9wcy53aWxsRW50ZXIsIF90aGlzLnByb3BzLndpbGxMZWF2ZSwgX3RoaXMucHJvcHMuZGlkTGVhdmUsIF90aGlzLnN0YXRlLm1lcmdlZFByb3BzU3R5bGVzLCBkZXN0U3R5bGVzLCBfdGhpcy5zdGF0ZS5jdXJyZW50U3R5bGVzLCBfdGhpcy5zdGF0ZS5jdXJyZW50VmVsb2NpdGllcywgX3RoaXMuc3RhdGUubGFzdElkZWFsU3R5bGVzLCBfdGhpcy5zdGF0ZS5sYXN0SWRlYWxWZWxvY2l0aWVzKTtcblxuICAgICAgICB2YXIgbmV3TWVyZ2VkUHJvcHNTdHlsZXMgPSBfbWVyZ2VBbmRTeW5jMlswXTtcbiAgICAgICAgdmFyIG5ld0N1cnJlbnRTdHlsZXMgPSBfbWVyZ2VBbmRTeW5jMlsxXTtcbiAgICAgICAgdmFyIG5ld0N1cnJlbnRWZWxvY2l0aWVzID0gX21lcmdlQW5kU3luYzJbMl07XG4gICAgICAgIHZhciBuZXdMYXN0SWRlYWxTdHlsZXMgPSBfbWVyZ2VBbmRTeW5jMlszXTtcbiAgICAgICAgdmFyIG5ld0xhc3RJZGVhbFZlbG9jaXRpZXMgPSBfbWVyZ2VBbmRTeW5jMls0XTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5ld01lcmdlZFByb3BzU3R5bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIG5ld01lcmdlZFByb3BzU3R5bGUgPSBuZXdNZXJnZWRQcm9wc1N0eWxlc1tpXS5zdHlsZTtcbiAgICAgICAgICB2YXIgbmV3Q3VycmVudFN0eWxlID0ge307XG4gICAgICAgICAgdmFyIG5ld0N1cnJlbnRWZWxvY2l0eSA9IHt9O1xuICAgICAgICAgIHZhciBuZXdMYXN0SWRlYWxTdHlsZSA9IHt9O1xuICAgICAgICAgIHZhciBuZXdMYXN0SWRlYWxWZWxvY2l0eSA9IHt9O1xuXG4gICAgICAgICAgZm9yICh2YXIga2V5IGluIG5ld01lcmdlZFByb3BzU3R5bGUpIHtcbiAgICAgICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG5ld01lcmdlZFByb3BzU3R5bGUsIGtleSkpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBzdHlsZVZhbHVlID0gbmV3TWVyZ2VkUHJvcHNTdHlsZVtrZXldO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBzdHlsZVZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICBuZXdDdXJyZW50U3R5bGVba2V5XSA9IHN0eWxlVmFsdWU7XG4gICAgICAgICAgICAgIG5ld0N1cnJlbnRWZWxvY2l0eVtrZXldID0gMDtcbiAgICAgICAgICAgICAgbmV3TGFzdElkZWFsU3R5bGVba2V5XSA9IHN0eWxlVmFsdWU7XG4gICAgICAgICAgICAgIG5ld0xhc3RJZGVhbFZlbG9jaXR5W2tleV0gPSAwO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdmFyIG5ld0xhc3RJZGVhbFN0eWxlVmFsdWUgPSBuZXdMYXN0SWRlYWxTdHlsZXNbaV1ba2V5XTtcbiAgICAgICAgICAgICAgdmFyIG5ld0xhc3RJZGVhbFZlbG9jaXR5VmFsdWUgPSBuZXdMYXN0SWRlYWxWZWxvY2l0aWVzW2ldW2tleV07XG4gICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZnJhbWVzVG9DYXRjaFVwOyBqKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgX3N0ZXBwZXIgPSBfc3RlcHBlcjRbJ2RlZmF1bHQnXShtc1BlckZyYW1lIC8gMTAwMCwgbmV3TGFzdElkZWFsU3R5bGVWYWx1ZSwgbmV3TGFzdElkZWFsVmVsb2NpdHlWYWx1ZSwgc3R5bGVWYWx1ZS52YWwsIHN0eWxlVmFsdWUuc3RpZmZuZXNzLCBzdHlsZVZhbHVlLmRhbXBpbmcsIHN0eWxlVmFsdWUucHJlY2lzaW9uKTtcblxuICAgICAgICAgICAgICAgIG5ld0xhc3RJZGVhbFN0eWxlVmFsdWUgPSBfc3RlcHBlclswXTtcbiAgICAgICAgICAgICAgICBuZXdMYXN0SWRlYWxWZWxvY2l0eVZhbHVlID0gX3N0ZXBwZXJbMV07XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB2YXIgX3N0ZXBwZXIyID0gX3N0ZXBwZXI0WydkZWZhdWx0J10obXNQZXJGcmFtZSAvIDEwMDAsIG5ld0xhc3RJZGVhbFN0eWxlVmFsdWUsIG5ld0xhc3RJZGVhbFZlbG9jaXR5VmFsdWUsIHN0eWxlVmFsdWUudmFsLCBzdHlsZVZhbHVlLnN0aWZmbmVzcywgc3R5bGVWYWx1ZS5kYW1waW5nLCBzdHlsZVZhbHVlLnByZWNpc2lvbik7XG5cbiAgICAgICAgICAgICAgdmFyIG5leHRJZGVhbFggPSBfc3RlcHBlcjJbMF07XG4gICAgICAgICAgICAgIHZhciBuZXh0SWRlYWxWID0gX3N0ZXBwZXIyWzFdO1xuXG4gICAgICAgICAgICAgIG5ld0N1cnJlbnRTdHlsZVtrZXldID0gbmV3TGFzdElkZWFsU3R5bGVWYWx1ZSArIChuZXh0SWRlYWxYIC0gbmV3TGFzdElkZWFsU3R5bGVWYWx1ZSkgKiBjdXJyZW50RnJhbWVDb21wbGV0aW9uO1xuICAgICAgICAgICAgICBuZXdDdXJyZW50VmVsb2NpdHlba2V5XSA9IG5ld0xhc3RJZGVhbFZlbG9jaXR5VmFsdWUgKyAobmV4dElkZWFsViAtIG5ld0xhc3RJZGVhbFZlbG9jaXR5VmFsdWUpICogY3VycmVudEZyYW1lQ29tcGxldGlvbjtcbiAgICAgICAgICAgICAgbmV3TGFzdElkZWFsU3R5bGVba2V5XSA9IG5ld0xhc3RJZGVhbFN0eWxlVmFsdWU7XG4gICAgICAgICAgICAgIG5ld0xhc3RJZGVhbFZlbG9jaXR5W2tleV0gPSBuZXdMYXN0SWRlYWxWZWxvY2l0eVZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIG5ld0xhc3RJZGVhbFN0eWxlc1tpXSA9IG5ld0xhc3RJZGVhbFN0eWxlO1xuICAgICAgICAgIG5ld0xhc3RJZGVhbFZlbG9jaXRpZXNbaV0gPSBuZXdMYXN0SWRlYWxWZWxvY2l0eTtcbiAgICAgICAgICBuZXdDdXJyZW50U3R5bGVzW2ldID0gbmV3Q3VycmVudFN0eWxlO1xuICAgICAgICAgIG5ld0N1cnJlbnRWZWxvY2l0aWVzW2ldID0gbmV3Q3VycmVudFZlbG9jaXR5O1xuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXMuYW5pbWF0aW9uSUQgPSBudWxsO1xuICAgICAgICAvLyB0aGUgYW1vdW50IHdlJ3JlIGxvb3BlZCBvdmVyIGFib3ZlXG4gICAgICAgIF90aGlzLmFjY3VtdWxhdGVkVGltZSAtPSBmcmFtZXNUb0NhdGNoVXAgKiBtc1BlckZyYW1lO1xuXG4gICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBjdXJyZW50U3R5bGVzOiBuZXdDdXJyZW50U3R5bGVzLFxuICAgICAgICAgIGN1cnJlbnRWZWxvY2l0aWVzOiBuZXdDdXJyZW50VmVsb2NpdGllcyxcbiAgICAgICAgICBsYXN0SWRlYWxTdHlsZXM6IG5ld0xhc3RJZGVhbFN0eWxlcyxcbiAgICAgICAgICBsYXN0SWRlYWxWZWxvY2l0aWVzOiBuZXdMYXN0SWRlYWxWZWxvY2l0aWVzLFxuICAgICAgICAgIG1lcmdlZFByb3BzU3R5bGVzOiBuZXdNZXJnZWRQcm9wc1N0eWxlc1xuICAgICAgICB9KTtcblxuICAgICAgICBfdGhpcy51bnJlYWRQcm9wU3R5bGVzID0gbnVsbDtcblxuICAgICAgICBfdGhpcy5zdGFydEFuaW1hdGlvbklmTmVjZXNzYXJ5KCk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgdGhpcy5zdGF0ZSA9IHRoaXMuZGVmYXVsdFN0YXRlKCk7XG4gIH1cblxuICBUcmFuc2l0aW9uTW90aW9uLnByb3RvdHlwZS5kZWZhdWx0U3RhdGUgPSBmdW5jdGlvbiBkZWZhdWx0U3RhdGUoKSB7XG4gICAgdmFyIF9wcm9wcyA9IHRoaXMucHJvcHM7XG4gICAgdmFyIGRlZmF1bHRTdHlsZXMgPSBfcHJvcHMuZGVmYXVsdFN0eWxlcztcbiAgICB2YXIgc3R5bGVzID0gX3Byb3BzLnN0eWxlcztcbiAgICB2YXIgd2lsbEVudGVyID0gX3Byb3BzLndpbGxFbnRlcjtcbiAgICB2YXIgd2lsbExlYXZlID0gX3Byb3BzLndpbGxMZWF2ZTtcbiAgICB2YXIgZGlkTGVhdmUgPSBfcHJvcHMuZGlkTGVhdmU7XG5cbiAgICB2YXIgZGVzdFN0eWxlcyA9IHR5cGVvZiBzdHlsZXMgPT09ICdmdW5jdGlvbicgPyBzdHlsZXMoZGVmYXVsdFN0eWxlcykgOiBzdHlsZXM7XG5cbiAgICAvLyB0aGlzIGlzIHNwZWNpYWwuIGZvciB0aGUgZmlyc3QgdGltZSBhcm91bmQsIHdlIGRvbid0IGhhdmUgYSBjb21wYXJpc29uXG4gICAgLy8gYmV0d2VlbiBsYXN0IChubyBsYXN0KSBhbmQgY3VycmVudCBtZXJnZWQgcHJvcHMuIHdlJ2xsIGNvbXB1dGUgbGFzdCBzbzpcbiAgICAvLyBzYXkgZGVmYXVsdCBpcyB7YSwgYn0gYW5kIHN0eWxlcyAoZGVzdCBzdHlsZSkgaXMge2IsIGN9LCB3ZSdsbFxuICAgIC8vIGZhYnJpY2F0ZSBsYXN0IGFzIHthLCBifVxuICAgIHZhciBvbGRNZXJnZWRQcm9wc1N0eWxlcyA9IHVuZGVmaW5lZDtcbiAgICBpZiAoZGVmYXVsdFN0eWxlcyA9PSBudWxsKSB7XG4gICAgICBvbGRNZXJnZWRQcm9wc1N0eWxlcyA9IGRlc3RTdHlsZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9sZE1lcmdlZFByb3BzU3R5bGVzID0gZGVmYXVsdFN0eWxlcy5tYXAoZnVuY3Rpb24gKGRlZmF1bHRTdHlsZUNlbGwpIHtcbiAgICAgICAgLy8gVE9ETzoga2V5IHNlYXJjaCBjb2RlXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVzdFN0eWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChkZXN0U3R5bGVzW2ldLmtleSA9PT0gZGVmYXVsdFN0eWxlQ2VsbC5rZXkpIHtcbiAgICAgICAgICAgIHJldHVybiBkZXN0U3R5bGVzW2ldO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVmYXVsdFN0eWxlQ2VsbDtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB2YXIgb2xkQ3VycmVudFN0eWxlcyA9IGRlZmF1bHRTdHlsZXMgPT0gbnVsbCA/IGRlc3RTdHlsZXMubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgICByZXR1cm4gX3N0cmlwU3R5bGUyWydkZWZhdWx0J10ocy5zdHlsZSk7XG4gICAgfSkgOiBkZWZhdWx0U3R5bGVzLm1hcChmdW5jdGlvbiAocykge1xuICAgICAgcmV0dXJuIF9zdHJpcFN0eWxlMlsnZGVmYXVsdCddKHMuc3R5bGUpO1xuICAgIH0pO1xuICAgIHZhciBvbGRDdXJyZW50VmVsb2NpdGllcyA9IGRlZmF1bHRTdHlsZXMgPT0gbnVsbCA/IGRlc3RTdHlsZXMubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgICByZXR1cm4gX21hcFRvWmVybzJbJ2RlZmF1bHQnXShzLnN0eWxlKTtcbiAgICB9KSA6IGRlZmF1bHRTdHlsZXMubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgICByZXR1cm4gX21hcFRvWmVybzJbJ2RlZmF1bHQnXShzLnN0eWxlKTtcbiAgICB9KTtcblxuICAgIHZhciBfbWVyZ2VBbmRTeW5jMyA9IG1lcmdlQW5kU3luYyhcbiAgICAvLyBCZWNhdXNlIHRoaXMgaXMgYW4gb2xkLXN0eWxlIGNyZWF0ZVJlYWN0Q2xhc3MgY29tcG9uZW50LCBGbG93IGRvZXNuJ3RcbiAgICAvLyB1bmRlcnN0YW5kIHRoYXQgdGhlIHdpbGxFbnRlciBhbmQgd2lsbExlYXZlIHByb3BzIGhhdmUgZGVmYXVsdCB2YWx1ZXNcbiAgICAvLyBhbmQgd2lsbCBhbHdheXMgYmUgcHJlc2VudC5cbiAgICB3aWxsRW50ZXIsIHdpbGxMZWF2ZSwgZGlkTGVhdmUsIG9sZE1lcmdlZFByb3BzU3R5bGVzLCBkZXN0U3R5bGVzLCBvbGRDdXJyZW50U3R5bGVzLCBvbGRDdXJyZW50VmVsb2NpdGllcywgb2xkQ3VycmVudFN0eWxlcywgLy8gb2xkTGFzdElkZWFsU3R5bGVzIHJlYWxseVxuICAgIG9sZEN1cnJlbnRWZWxvY2l0aWVzKTtcblxuICAgIHZhciBtZXJnZWRQcm9wc1N0eWxlcyA9IF9tZXJnZUFuZFN5bmMzWzBdO1xuICAgIHZhciBjdXJyZW50U3R5bGVzID0gX21lcmdlQW5kU3luYzNbMV07XG4gICAgdmFyIGN1cnJlbnRWZWxvY2l0aWVzID0gX21lcmdlQW5kU3luYzNbMl07XG4gICAgdmFyIGxhc3RJZGVhbFN0eWxlcyA9IF9tZXJnZUFuZFN5bmMzWzNdO1xuICAgIHZhciBsYXN0SWRlYWxWZWxvY2l0aWVzID0gX21lcmdlQW5kU3luYzNbNF07XG4gICAgLy8gb2xkTGFzdElkZWFsVmVsb2NpdGllcyByZWFsbHlcblxuICAgIHJldHVybiB7XG4gICAgICBjdXJyZW50U3R5bGVzOiBjdXJyZW50U3R5bGVzLFxuICAgICAgY3VycmVudFZlbG9jaXRpZXM6IGN1cnJlbnRWZWxvY2l0aWVzLFxuICAgICAgbGFzdElkZWFsU3R5bGVzOiBsYXN0SWRlYWxTdHlsZXMsXG4gICAgICBsYXN0SWRlYWxWZWxvY2l0aWVzOiBsYXN0SWRlYWxWZWxvY2l0aWVzLFxuICAgICAgbWVyZ2VkUHJvcHNTdHlsZXM6IG1lcmdlZFByb3BzU3R5bGVzXG4gICAgfTtcbiAgfTtcblxuICAvLyBhZnRlciBjaGVja2luZyBmb3IgdW5yZWFkUHJvcFN0eWxlcyAhPSBudWxsLCB3ZSBtYW51YWxseSBnbyBzZXQgdGhlXG4gIC8vIG5vbi1pbnRlcnBvbGF0aW5nIHZhbHVlcyAodGhvc2UgdGhhdCBhcmUgYSBudW1iZXIsIHdpdGhvdXQgYSBzcHJpbmdcbiAgLy8gY29uZmlnKVxuXG4gIFRyYW5zaXRpb25Nb3Rpb24ucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50ID0gZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgdGhpcy5wcmV2VGltZSA9IF9wZXJmb3JtYW5jZU5vdzJbJ2RlZmF1bHQnXSgpO1xuICAgIHRoaXMuc3RhcnRBbmltYXRpb25JZk5lY2Vzc2FyeSgpO1xuICB9O1xuXG4gIFRyYW5zaXRpb25Nb3Rpb24ucHJvdG90eXBlLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgPSBmdW5jdGlvbiBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKHByb3BzKSB7XG4gICAgaWYgKHRoaXMudW5yZWFkUHJvcFN0eWxlcykge1xuICAgICAgLy8gcHJldmlvdXMgcHJvcHMgaGF2ZW4ndCBoYWQgdGhlIGNoYW5jZSB0byBiZSBzZXQgeWV0OyBzZXQgdGhlbSBoZXJlXG4gICAgICB0aGlzLmNsZWFyVW5yZWFkUHJvcFN0eWxlKHRoaXMudW5yZWFkUHJvcFN0eWxlcyk7XG4gICAgfVxuXG4gICAgdmFyIHN0eWxlcyA9IHByb3BzLnN0eWxlcztcbiAgICBpZiAodHlwZW9mIHN0eWxlcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy51bnJlYWRQcm9wU3R5bGVzID0gc3R5bGVzKHJlaHlkcmF0ZVN0eWxlcyh0aGlzLnN0YXRlLm1lcmdlZFByb3BzU3R5bGVzLCB0aGlzLnVucmVhZFByb3BTdHlsZXMsIHRoaXMuc3RhdGUubGFzdElkZWFsU3R5bGVzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudW5yZWFkUHJvcFN0eWxlcyA9IHN0eWxlcztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hbmltYXRpb25JRCA9PSBudWxsKSB7XG4gICAgICB0aGlzLnByZXZUaW1lID0gX3BlcmZvcm1hbmNlTm93MlsnZGVmYXVsdCddKCk7XG4gICAgICB0aGlzLnN0YXJ0QW5pbWF0aW9uSWZOZWNlc3NhcnkoKTtcbiAgICB9XG4gIH07XG5cbiAgVHJhbnNpdGlvbk1vdGlvbi5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVubW91bnQgPSBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB0aGlzLnVubW91bnRpbmcgPSB0cnVlO1xuICAgIGlmICh0aGlzLmFuaW1hdGlvbklEICE9IG51bGwpIHtcbiAgICAgIF9yYWYyWydkZWZhdWx0J10uY2FuY2VsKHRoaXMuYW5pbWF0aW9uSUQpO1xuICAgICAgdGhpcy5hbmltYXRpb25JRCA9IG51bGw7XG4gICAgfVxuICB9O1xuXG4gIFRyYW5zaXRpb25Nb3Rpb24ucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICB2YXIgaHlkcmF0ZWRTdHlsZXMgPSByZWh5ZHJhdGVTdHlsZXModGhpcy5zdGF0ZS5tZXJnZWRQcm9wc1N0eWxlcywgdGhpcy51bnJlYWRQcm9wU3R5bGVzLCB0aGlzLnN0YXRlLmN1cnJlbnRTdHlsZXMpO1xuICAgIHZhciByZW5kZXJlZENoaWxkcmVuID0gdGhpcy5wcm9wcy5jaGlsZHJlbihoeWRyYXRlZFN0eWxlcyk7XG4gICAgcmV0dXJuIHJlbmRlcmVkQ2hpbGRyZW4gJiYgX3JlYWN0MlsnZGVmYXVsdCddLkNoaWxkcmVuLm9ubHkocmVuZGVyZWRDaGlsZHJlbik7XG4gIH07XG5cbiAgcmV0dXJuIFRyYW5zaXRpb25Nb3Rpb247XG59KShfcmVhY3QyWydkZWZhdWx0J10uQ29tcG9uZW50KTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0gVHJhbnNpdGlvbk1vdGlvbjtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuXG4vLyBsaXN0IG9mIHN0eWxlcywgZWFjaCBjb250YWluaW5nIGludGVycG9sYXRpbmcgdmFsdWVzLiBQYXJ0IG9mIHdoYXQncyBwYXNzZWRcbi8vIHRvIGNoaWxkcmVuIGZ1bmN0aW9uLiBOb3RpY2UgdGhhdCB0aGlzIGlzXG4vLyBBcnJheTxBY3R1YWxJbnRlcnBvbGF0aW5nU3R5bGVPYmplY3Q+LCB3aXRob3V0IHRoZSB3cmFwcGVyIHRoYXQgaXMge2tleTogLi4uLFxuLy8gZGF0YTogLi4uIHN0eWxlOiBBY3R1YWxJbnRlcnBvbGF0aW5nU3R5bGVPYmplY3R9LiBPbmx5IG1lcmdlZFByb3BzU3R5bGVzXG4vLyBjb250YWlucyB0aGUga2V5ICYgZGF0YSBpbmZvIChzbyB0aGF0IHdlIG9ubHkgaGF2ZSBhIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGhcbi8vIGZvciB0aGVzZSwgYW5kIHRvIHNhdmUgc3BhY2UpLiBDaGVjayB0aGUgY29tbWVudCBmb3IgYHJlaHlkcmF0ZVN0eWxlc2AgdG9cbi8vIHNlZSBob3cgd2UgcmVnZW5lcmF0ZSB0aGUgZW50aXJldHkgb2Ygd2hhdCdzIHBhc3NlZCB0byBjaGlsZHJlbiBmdW5jdGlvblxuXG4vLyB0aGUgYXJyYXkgdGhhdCBrZWVwcyB0cmFjayBvZiBjdXJyZW50bHkgcmVuZGVyZWQgc3R1ZmYhIEluY2x1ZGluZyBzdHVmZlxuLy8gdGhhdCB5b3UndmUgdW5tb3VudGVkIGJ1dCB0aGF0J3Mgc3RpbGwgYW5pbWF0aW5nLiBUaGlzIGlzIHdoZXJlIGl0IGxpdmVzXG5cbi8vIGl0J3MgcG9zc2libGUgdGhhdCBjdXJyZW50U3R5bGUncyB2YWx1ZSBpcyBzdGFsZTogaWYgcHJvcHMgaXMgaW1tZWRpYXRlbHlcbi8vIGNoYW5nZWQgZnJvbSAwIHRvIDQwMCB0byBzcHJpbmcoMCkgYWdhaW4sIHRoZSBhc3luYyBjdXJyZW50U3R5bGUgaXMgc3RpbGxcbi8vIGF0IDAgKGRpZG4ndCBoYXZlIHRpbWUgdG8gdGljayBhbmQgaW50ZXJwb2xhdGUgZXZlbiBvbmNlKS4gSWYgd2UgbmFpdmVseVxuLy8gY29tcGFyZSBjdXJyZW50U3R5bGUgd2l0aCBkZXN0VmFsIGl0J2xsIGJlIDAgPT09IDAgKG5vIGFuaW1hdGlvbiwgc3RvcCkuXG4vLyBJbiByZWFsaXR5IGN1cnJlbnRTdHlsZSBzaG91bGQgYmUgNDAwXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3JlYWN0LW1vdGlvbi9saWIvVHJhbnNpdGlvbk1vdGlvbi5qc1xuLy8gbW9kdWxlIGlkID0gMjdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiXG5cbi8vIGNvcmUga2V5cyBtZXJnaW5nIGFsZ29yaXRobS4gSWYgcHJldmlvdXMgcmVuZGVyJ3Mga2V5cyBhcmUgW2EsIGJdLCBhbmQgdGhlXG4vLyBuZXh0IHJlbmRlcidzIFtjLCBiLCBkXSwgd2hhdCdzIHRoZSBmaW5hbCBtZXJnZWQga2V5cyBhbmQgb3JkZXJpbmc/XG5cbi8vIC0gYyBhbmQgYSBtdXN0IGJvdGggYmUgYmVmb3JlIGJcbi8vIC0gYiBiZWZvcmUgZFxuLy8gLSBvcmRlcmluZyBiZXR3ZWVuIGEgYW5kIGMgYW1iaWd1b3VzXG5cbi8vIHRoaXMgcmVkdWNlcyB0byBtZXJnaW5nIHR3byBwYXJ0aWFsbHkgb3JkZXJlZCBsaXN0cyAoZS5nLiBsaXN0cyB3aGVyZSBub3Rcbi8vIGV2ZXJ5IGl0ZW0gaGFzIGEgZGVmaW5pdGUgb3JkZXJpbmcsIGxpa2UgY29tcGFyaW5nIGEgYW5kIGMgYWJvdmUpLiBGb3IgdGhlXG4vLyBhbWJpZ3VvdXMgb3JkZXJpbmcgd2UgZGV0ZXJtaW5pc3RpY2FsbHkgY2hvb3NlIHRvIHBsYWNlIHRoZSBuZXh0IHJlbmRlcidzXG4vLyBpdGVtIGFmdGVyIHRoZSBwcmV2aW91cyc7IHNvIGMgYWZ0ZXIgYVxuXG4vLyB0aGlzIGlzIGNhbGxlZCBhIHRvcG9sb2dpY2FsIHNvcnRpbmcuIEV4Y2VwdCB0aGUgZXhpc3RpbmcgYWxnb3JpdGhtcyBkb24ndFxuLy8gd29yayB3ZWxsIHdpdGgganMgYmMgb2YgdGhlIGFtb3VudCBvZiBhbGxvY2F0aW9uLCBhbmQgaXNuJ3Qgb3B0aW1pemVkIGZvciBvdXJcbi8vIGN1cnJlbnQgdXNlLWNhc2UgYmMgdGhlIHJ1bnRpbWUgaXMgbGluZWFyIGluIHRlcm1zIG9mIGVkZ2VzIChzZWUgd2lraSBmb3Jcbi8vIG1lYW5pbmcpLCB3aGljaCBpcyBodWdlIHdoZW4gdHdvIGxpc3RzIGhhdmUgbWFueSBjb21tb24gZWxlbWVudHNcbid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IG1lcmdlRGlmZjtcblxuZnVuY3Rpb24gbWVyZ2VEaWZmKHByZXYsIG5leHQsIG9uUmVtb3ZlKSB7XG4gIC8vIGJvb2trZWVwaW5nIGZvciBlYXNpZXIgYWNjZXNzIG9mIGEga2V5J3MgaW5kZXggYmVsb3cuIFRoaXMgaXMgMiBhbGxvY2F0aW9ucyArXG4gIC8vIHBvdGVudGlhbGx5IHRyaWdnZXJpbmcgY2hyb21lIGhhc2ggbWFwIG1vZGUgZm9yIG9ianMgKHNvIGl0IG1pZ2h0IGJlIGZhc3RlclxuXG4gIHZhciBwcmV2S2V5SW5kZXggPSB7fTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcmV2Lmxlbmd0aDsgaSsrKSB7XG4gICAgcHJldktleUluZGV4W3ByZXZbaV0ua2V5XSA9IGk7XG4gIH1cbiAgdmFyIG5leHRLZXlJbmRleCA9IHt9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG5leHQubGVuZ3RoOyBpKyspIHtcbiAgICBuZXh0S2V5SW5kZXhbbmV4dFtpXS5rZXldID0gaTtcbiAgfVxuXG4gIC8vIGZpcnN0LCBhbiBvdmVybHkgZWxhYm9yYXRlIHdheSBvZiBtZXJnaW5nIHByZXYgYW5kIG5leHQsIGVsaW1pbmF0aW5nXG4gIC8vIGR1cGxpY2F0ZXMgKGluIHRlcm1zIG9mIGtleXMpLiBJZiB0aGVyZSdzIGR1cGUsIGtlZXAgdGhlIGl0ZW0gaW4gbmV4dCkuXG4gIC8vIFRoaXMgd2F5IG9mIHdyaXRpbmcgaXQgc2F2ZXMgYWxsb2NhdGlvbnNcbiAgdmFyIHJldCA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG5leHQubGVuZ3RoOyBpKyspIHtcbiAgICByZXRbaV0gPSBuZXh0W2ldO1xuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJldi5sZW5ndGg7IGkrKykge1xuICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG5leHRLZXlJbmRleCwgcHJldltpXS5rZXkpKSB7XG4gICAgICAvLyB0aGlzIGlzIGNhbGxlZCBteSBUTSdzIGBtZXJnZUFuZFN5bmNgLCB3aGljaCBjYWxscyB3aWxsTGVhdmUuIFdlIGRvbid0XG4gICAgICAvLyBtZXJnZSBpbiBrZXlzIHRoYXQgdGhlIHVzZXIgZGVzaXJlcyB0byBraWxsXG4gICAgICB2YXIgZmlsbCA9IG9uUmVtb3ZlKGksIHByZXZbaV0pO1xuICAgICAgaWYgKGZpbGwgIT0gbnVsbCkge1xuICAgICAgICByZXQucHVzaChmaWxsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBub3cgYWxsIHRoZSBpdGVtcyBhbGwgcHJlc2VudC4gQ29yZSBzb3J0aW5nIGxvZ2ljIHRvIGhhdmUgdGhlIHJpZ2h0IG9yZGVyXG4gIHJldHVybiByZXQuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgIHZhciBuZXh0T3JkZXJBID0gbmV4dEtleUluZGV4W2Eua2V5XTtcbiAgICB2YXIgbmV4dE9yZGVyQiA9IG5leHRLZXlJbmRleFtiLmtleV07XG4gICAgdmFyIHByZXZPcmRlckEgPSBwcmV2S2V5SW5kZXhbYS5rZXldO1xuICAgIHZhciBwcmV2T3JkZXJCID0gcHJldktleUluZGV4W2Iua2V5XTtcblxuICAgIGlmIChuZXh0T3JkZXJBICE9IG51bGwgJiYgbmV4dE9yZGVyQiAhPSBudWxsKSB7XG4gICAgICAvLyBib3RoIGtleXMgaW4gbmV4dFxuICAgICAgcmV0dXJuIG5leHRLZXlJbmRleFthLmtleV0gLSBuZXh0S2V5SW5kZXhbYi5rZXldO1xuICAgIH0gZWxzZSBpZiAocHJldk9yZGVyQSAhPSBudWxsICYmIHByZXZPcmRlckIgIT0gbnVsbCkge1xuICAgICAgLy8gYm90aCBrZXlzIGluIHByZXZcbiAgICAgIHJldHVybiBwcmV2S2V5SW5kZXhbYS5rZXldIC0gcHJldktleUluZGV4W2Iua2V5XTtcbiAgICB9IGVsc2UgaWYgKG5leHRPcmRlckEgIT0gbnVsbCkge1xuICAgICAgLy8ga2V5IGEgaW4gbmV4dCwga2V5IGIgaW4gcHJldlxuXG4gICAgICAvLyBob3cgdG8gZGV0ZXJtaW5lIHRoZSBvcmRlciBiZXR3ZWVuIGEgYW5kIGI/IFdlIGZpbmQgYSBcInBpdm90XCIgKHRlcm1cbiAgICAgIC8vIGFidXNlKSwgYSBrZXkgcHJlc2VudCBpbiBib3RoIHByZXYgYW5kIG5leHQsIHRoYXQgaXMgc2FuZHdpY2hlZCBiZXR3ZWVuXG4gICAgICAvLyBhIGFuZCBiLiBJbiB0aGUgY29udGV4dCBvZiBvdXIgYWJvdmUgZXhhbXBsZSwgaWYgd2UncmUgY29tcGFyaW5nIGEgYW5kXG4gICAgICAvLyBkLCBiJ3MgKHRoZSBvbmx5KSBwaXZvdFxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZXh0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBwaXZvdCA9IG5leHRbaV0ua2V5O1xuICAgICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwcmV2S2V5SW5kZXgsIHBpdm90KSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5leHRPcmRlckEgPCBuZXh0S2V5SW5kZXhbcGl2b3RdICYmIHByZXZPcmRlckIgPiBwcmV2S2V5SW5kZXhbcGl2b3RdKSB7XG4gICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9IGVsc2UgaWYgKG5leHRPcmRlckEgPiBuZXh0S2V5SW5kZXhbcGl2b3RdICYmIHByZXZPcmRlckIgPCBwcmV2S2V5SW5kZXhbcGl2b3RdKSB7XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIHBsdWdnYWJsZS4gZGVmYXVsdCB0bzogbmV4dCBiaWdnZXIgdGhhbiBwcmV2XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgLy8gcHJldk9yZGVyQSwgbmV4dE9yZGVyQlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmV4dC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHBpdm90ID0gbmV4dFtpXS5rZXk7XG4gICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwcmV2S2V5SW5kZXgsIHBpdm90KSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChuZXh0T3JkZXJCIDwgbmV4dEtleUluZGV4W3Bpdm90XSAmJiBwcmV2T3JkZXJBID4gcHJldktleUluZGV4W3Bpdm90XSkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH0gZWxzZSBpZiAobmV4dE9yZGVyQiA+IG5leHRLZXlJbmRleFtwaXZvdF0gJiYgcHJldk9yZGVyQSA8IHByZXZLZXlJbmRleFtwaXZvdF0pIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBwbHVnZ2FibGUuIGRlZmF1bHQgdG86IG5leHQgYmlnZ2VyIHRoYW4gcHJldlxuICAgIHJldHVybiAtMTtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuLy8gdG8gbG9vcCB0aHJvdWdoIGFuZCBmaW5kIGEga2V5J3MgaW5kZXggZWFjaCB0aW1lKSwgYnV0IEkgbm8gbG9uZ2VyIGNhcmVcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcmVhY3QtbW90aW9uL2xpYi9tZXJnZURpZmYuanNcbi8vIG1vZHVsZSBpZCA9IDI4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0gc3ByaW5nO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbnZhciBfcHJlc2V0cyA9IHJlcXVpcmUoJy4vcHJlc2V0cycpO1xuXG52YXIgX3ByZXNldHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcHJlc2V0cyk7XG5cbnZhciBkZWZhdWx0Q29uZmlnID0gX2V4dGVuZHMoe30sIF9wcmVzZXRzMlsnZGVmYXVsdCddLm5vV29iYmxlLCB7XG4gIHByZWNpc2lvbjogMC4wMVxufSk7XG5cbmZ1bmN0aW9uIHNwcmluZyh2YWwsIGNvbmZpZykge1xuICByZXR1cm4gX2V4dGVuZHMoe30sIGRlZmF1bHRDb25maWcsIGNvbmZpZywgeyB2YWw6IHZhbCB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3JlYWN0LW1vdGlvbi9saWIvc3ByaW5nLmpzXG4vLyBtb2R1bGUgaWQgPSAyOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0ge1xuICBub1dvYmJsZTogeyBzdGlmZm5lc3M6IDE3MCwgZGFtcGluZzogMjYgfSwgLy8gdGhlIGRlZmF1bHQsIGlmIG5vdGhpbmcgcHJvdmlkZWRcbiAgZ2VudGxlOiB7IHN0aWZmbmVzczogMTIwLCBkYW1waW5nOiAxNCB9LFxuICB3b2JibHk6IHsgc3RpZmZuZXNzOiAxODAsIGRhbXBpbmc6IDEyIH0sXG4gIHN0aWZmOiB7IHN0aWZmbmVzczogMjEwLCBkYW1waW5nOiAyMCB9XG59O1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzW1wiZGVmYXVsdFwiXTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcmVhY3QtbW90aW9uL2xpYi9wcmVzZXRzLmpzXG4vLyBtb2R1bGUgaWQgPSAzMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzWydkZWZhdWx0J10gPSByZW9yZGVyS2V5cztcblxudmFyIGhhc1dhcm5lZCA9IGZhbHNlO1xuXG5mdW5jdGlvbiByZW9yZGVyS2V5cygpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgaWYgKCFoYXNXYXJuZWQpIHtcbiAgICAgIGhhc1dhcm5lZCA9IHRydWU7XG4gICAgICBjb25zb2xlLmVycm9yKCdgcmVvcmRlcktleXNgIGhhcyBiZWVuIHJlbW92ZWQsIHNpbmNlIGl0IGlzIG5vIGxvbmdlciBuZWVkZWQgZm9yIFRyYW5zaXRpb25Nb3Rpb25cXCdzIG5ldyBzdHlsZXMgYXJyYXkgQVBJLicpO1xuICAgIH1cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcmVhY3QtbW90aW9uL2xpYi9yZW9yZGVyS2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuY29uc3QgcmVhY3QxMyA9IGlzUmVhY3QxMyhSZWFjdCk7XG52YXIgZGlkV2FybkFib3V0Q2hpbGQgPSBmYWxzZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRET01Ob2RlKGNvbXBvbmVudCl7XG4gICAgaWYoIXJlYWN0MTMpe1xuICAgICAgICByZXR1cm4gY29tcG9uZW50O1xuICAgIH1lbHNle1xuICAgICAgICByZXR1cm4gUmVhY3QuZmluZERPTU5vZGUoY29tcG9uZW50KTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3YXJuQWJvdXRGdW5jdGlvbkNoaWxkKCkge1xuICAgIGlmIChkaWRXYXJuQWJvdXRDaGlsZCB8fCByZWFjdDEzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZGlkV2FybkFib3V0Q2hpbGQgPSB0cnVlO1xuICAgIGNvbnNvbGUuZXJyb3IoJ1dpdGggUmVhY3QgMC4xNCBhbmQgbGF0ZXIgdmVyc2lvbnMsIHlvdSBubyBsb25nZXIgbmVlZCB0byB3cmFwIDxTY3JvbGxBcmVhPiBjaGlsZCBpbnRvIGEgZnVuY3Rpb24uJyk7XG4gIH1cblxuZXhwb3J0IGZ1bmN0aW9uIHdhcm5BYm91dEVsZW1lbnRDaGlsZCgpIHtcbiAgICBpZiAoZGlkV2FybkFib3V0Q2hpbGQgfHwgIXJlYWN0MTMpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZGlkV2FybkFib3V0Q2hpbGQgPSB0cnVlO1xuICAgIGNvbnNvbGUuZXJyb3IoICdXaXRoIFJlYWN0IDAuMTMsIHlvdSBuZWVkIHRvIHdyYXAgPFNjcm9sbEFyZWE+IGNoaWxkIGludG8gYSBmdW5jdGlvbi4nICk7XG4gIH1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvc2l0aXZlT3JaZXJvKG51bWJlcil7XG4gICAgcmV0dXJuIG51bWJlciA8IDAgPyAwIDogbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9kaWZ5T2JqVmFsdWVzIChvYmosIG1vZGlmaWVyID0geCA9PiB4KXtcbiAgICBsZXQgbW9kaWZpZWRPYmogPSB7fTtcbiAgICBmb3IobGV0IGtleSBpbiBvYmope1xuICAgICAgICBpZihvYmouaGFzT3duUHJvcGVydHkoa2V5KSkgbW9kaWZpZWRPYmpba2V5XSA9IG1vZGlmaWVyKG9ialtrZXldKTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIG1vZGlmaWVkT2JqO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSZWFjdDEzKFJlYWN0KSB7XG4gICAgY29uc3QgeyB2ZXJzaW9uIH0gPSBSZWFjdDtcbiAgICBpZiAodHlwZW9mIHZlcnNpb24gIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcnRzID0gdmVyc2lvbi5zcGxpdCgnLicpO1xuICAgIGNvbnN0IG1ham9yID0gcGFyc2VJbnQocGFydHNbMF0sIDEwKTtcbiAgICBjb25zdCBtaW5vciA9IHBhcnNlSW50KHBhcnRzWzFdLCAxMCk7XG5cbiAgICByZXR1cm4gbWFqb3IgPT09IDAgJiYgbWlub3IgPT09IDEzO1xufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2pzL3V0aWxzLmpzIiwiLy8gTG9hZCBpbiBkZXBlbmRlbmNpZXNcbnZhciBjb21wdXRlZFN0eWxlID0gcmVxdWlyZSgnY29tcHV0ZWQtc3R5bGUnKTtcblxuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGBsaW5lLWhlaWdodGAgb2YgYSBnaXZlbiBub2RlXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBub2RlIEVsZW1lbnQgdG8gY2FsY3VsYXRlIGxpbmUgaGVpZ2h0IG9mLiBNdXN0IGJlIGluIHRoZSBET00uXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBgbGluZS1oZWlnaHRgIG9mIHRoZSBlbGVtZW50IGluIHBpeGVsc1xuICovXG5mdW5jdGlvbiBsaW5lSGVpZ2h0KG5vZGUpIHtcbiAgLy8gR3JhYiB0aGUgbGluZS1oZWlnaHQgdmlhIHN0eWxlXG4gIHZhciBsbkhlaWdodFN0ciA9IGNvbXB1dGVkU3R5bGUobm9kZSwgJ2xpbmUtaGVpZ2h0JyksXG4gICAgICBsbkhlaWdodCA9IHBhcnNlRmxvYXQobG5IZWlnaHRTdHIsIDEwKTtcblxuICAvLyBJZiB0aGUgbGluZUhlaWdodCBkaWQgbm90IGNvbnRhaW4gYSB1bml0IChpLmUuIGl0IHdhcyBudW1lcmljKSwgY29udmVydCBpdCB0byBlbXMgKGUuZy4gJzIuMycgPT09ICcyLjNlbScpXG4gIGlmIChsbkhlaWdodFN0ciA9PT0gbG5IZWlnaHQgKyAnJykge1xuICAgIC8vIFNhdmUgdGhlIG9sZCBsaW5lSGVpZ2h0IHN0eWxlIGFuZCB1cGRhdGUgdGhlIGVtIHVuaXQgdG8gdGhlIGVsZW1lbnRcbiAgICB2YXIgX2xuSGVpZ2h0U3R5bGUgPSBub2RlLnN0eWxlLmxpbmVIZWlnaHQ7XG4gICAgbm9kZS5zdHlsZS5saW5lSGVpZ2h0ID0gbG5IZWlnaHRTdHIgKyAnZW0nO1xuXG4gICAgLy8gQ2FsY3VsYXRlIHRoZSBlbSBiYXNlZCBoZWlnaHRcbiAgICBsbkhlaWdodFN0ciA9IGNvbXB1dGVkU3R5bGUobm9kZSwgJ2xpbmUtaGVpZ2h0Jyk7XG4gICAgbG5IZWlnaHQgPSBwYXJzZUZsb2F0KGxuSGVpZ2h0U3RyLCAxMCk7XG5cbiAgICAvLyBSZXZlcnQgdGhlIGxpbmVIZWlnaHQgc3R5bGVcbiAgICBpZiAoX2xuSGVpZ2h0U3R5bGUpIHtcbiAgICAgIG5vZGUuc3R5bGUubGluZUhlaWdodCA9IF9sbkhlaWdodFN0eWxlO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgbm9kZS5zdHlsZS5saW5lSGVpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC8vIElmIHRoZSBsaW5lSGVpZ2h0IGlzIGluIGBwdGAsIGNvbnZlcnQgaXQgdG8gcGl4ZWxzICg0cHggZm9yIDNwdClcbiAgLy8gREVWOiBgZW1gIHVuaXRzIGFyZSBjb252ZXJ0ZWQgdG8gYHB0YCBpbiBJRTZcbiAgLy8gQ29udmVyc2lvbiByYXRpbyBmcm9tIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9sZW5ndGhcbiAgaWYgKGxuSGVpZ2h0U3RyLmluZGV4T2YoJ3B0JykgIT09IC0xKSB7XG4gICAgbG5IZWlnaHQgKj0gNDtcbiAgICBsbkhlaWdodCAvPSAzO1xuICB9IGVsc2UgaWYgKGxuSGVpZ2h0U3RyLmluZGV4T2YoJ21tJykgIT09IC0xKSB7XG4gIC8vIE90aGVyd2lzZSwgaWYgdGhlIGxpbmVIZWlnaHQgaXMgaW4gYG1tYCwgY29udmVydCBpdCB0byBwaXhlbHMgKDk2cHggZm9yIDI1LjRtbSlcbiAgICBsbkhlaWdodCAqPSA5NjtcbiAgICBsbkhlaWdodCAvPSAyNS40O1xuICB9IGVsc2UgaWYgKGxuSGVpZ2h0U3RyLmluZGV4T2YoJ2NtJykgIT09IC0xKSB7XG4gIC8vIE90aGVyd2lzZSwgaWYgdGhlIGxpbmVIZWlnaHQgaXMgaW4gYGNtYCwgY29udmVydCBpdCB0byBwaXhlbHMgKDk2cHggZm9yIDIuNTRjbSlcbiAgICBsbkhlaWdodCAqPSA5NjtcbiAgICBsbkhlaWdodCAvPSAyLjU0O1xuICB9IGVsc2UgaWYgKGxuSGVpZ2h0U3RyLmluZGV4T2YoJ2luJykgIT09IC0xKSB7XG4gIC8vIE90aGVyd2lzZSwgaWYgdGhlIGxpbmVIZWlnaHQgaXMgaW4gYGluYCwgY29udmVydCBpdCB0byBwaXhlbHMgKDk2cHggZm9yIDFpbilcbiAgICBsbkhlaWdodCAqPSA5NjtcbiAgfSBlbHNlIGlmIChsbkhlaWdodFN0ci5pbmRleE9mKCdwYycpICE9PSAtMSkge1xuICAvLyBPdGhlcndpc2UsIGlmIHRoZSBsaW5lSGVpZ2h0IGlzIGluIGBwY2AsIGNvbnZlcnQgaXQgdG8gcGl4ZWxzICgxMnB0IGZvciAxcGMpXG4gICAgbG5IZWlnaHQgKj0gMTY7XG4gIH1cblxuICAvLyBDb250aW51ZSBvdXIgY29tcHV0YXRpb25cbiAgbG5IZWlnaHQgPSBNYXRoLnJvdW5kKGxuSGVpZ2h0KTtcblxuICAvLyBJZiB0aGUgbGluZS1oZWlnaHQgaXMgXCJub3JtYWxcIiwgY2FsY3VsYXRlIGJ5IGZvbnQtc2l6ZVxuICBpZiAobG5IZWlnaHRTdHIgPT09ICdub3JtYWwnKSB7XG4gICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IG5vZGVcbiAgICB2YXIgbm9kZU5hbWUgPSBub2RlLm5vZGVOYW1lLFxuICAgICAgICBfbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobm9kZU5hbWUpO1xuICAgIF9ub2RlLmlubmVySFRNTCA9ICcmbmJzcDsnO1xuXG4gICAgLy8gU2V0IHRoZSBmb250LXNpemUgb2YgdGhlIGVsZW1lbnRcbiAgICB2YXIgZm9udFNpemVTdHIgPSBjb21wdXRlZFN0eWxlKG5vZGUsICdmb250LXNpemUnKTtcbiAgICBfbm9kZS5zdHlsZS5mb250U2l6ZSA9IGZvbnRTaXplU3RyO1xuXG4gICAgLy8gQXBwZW5kIGl0IHRvIHRoZSBib2R5XG4gICAgdmFyIGJvZHkgPSBkb2N1bWVudC5ib2R5O1xuICAgIGJvZHkuYXBwZW5kQ2hpbGQoX25vZGUpO1xuXG4gICAgLy8gQXNzdW1lIHRoZSBsaW5lIGhlaWdodCBvZiB0aGUgZWxlbWVudCBpcyB0aGUgaGVpZ2h0XG4gICAgdmFyIGhlaWdodCA9IF9ub2RlLm9mZnNldEhlaWdodDtcbiAgICBsbkhlaWdodCA9IGhlaWdodDtcblxuICAgIC8vIFJlbW92ZSBvdXIgY2hpbGQgZnJvbSB0aGUgRE9NXG4gICAgYm9keS5yZW1vdmVDaGlsZChfbm9kZSk7XG4gIH1cblxuICAvLyBSZXR1cm4gdGhlIGNhbGN1bGF0ZWQgaGVpZ2h0XG4gIHJldHVybiBsbkhlaWdodDtcbn1cblxuLy8gRXhwb3J0IGxpbmVIZWlnaHRcbm1vZHVsZS5leHBvcnRzID0gbGluZUhlaWdodDtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vbGluZS1oZWlnaHQvbGliL2xpbmUtaGVpZ2h0LmpzXG4vLyBtb2R1bGUgaWQgPSAzM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyBUaGlzIGNvZGUgaGFzIGJlZW4gcmVmYWN0b3JlZCBmb3IgMTQwIGJ5dGVzXG4vLyBZb3UgY2FuIHNlZSB0aGUgb3JpZ2luYWwgaGVyZTogaHR0cHM6Ly9naXRodWIuY29tL3R3b2xmc29uL2NvbXB1dGVkU3R5bGUvYmxvYi8wNGNkMWRhMmUzMGZhNDU4NDRmOTVmNWNiMWFjODk4ZTliOWVmMDUwL2xpYi9jb21wdXRlZFN0eWxlLmpzXG52YXIgY29tcHV0ZWRTdHlsZSA9IGZ1bmN0aW9uIChlbCwgcHJvcCwgZ2V0Q29tcHV0ZWRTdHlsZSkge1xuICBnZXRDb21wdXRlZFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGU7XG5cbiAgLy8gSW4gb25lIGZlbGwgc3dvb3BcbiAgcmV0dXJuIChcbiAgICAvLyBJZiB3ZSBoYXZlIGdldENvbXB1dGVkU3R5bGVcbiAgICBnZXRDb21wdXRlZFN0eWxlID9cbiAgICAgIC8vIFF1ZXJ5IGl0XG4gICAgICAvLyBUT0RPOiBGcm9tIENTUy1RdWVyeSBub3Rlcywgd2UgbWlnaHQgbmVlZCAobm9kZSwgbnVsbCkgZm9yIEZGXG4gICAgICBnZXRDb21wdXRlZFN0eWxlKGVsKSA6XG5cbiAgICAvLyBPdGhlcndpc2UsIHdlIGFyZSBpbiBJRSBhbmQgdXNlIGN1cnJlbnRTdHlsZVxuICAgICAgZWwuY3VycmVudFN0eWxlXG4gIClbXG4gICAgLy8gU3dpdGNoIHRvIGNhbWVsQ2FzZSBmb3IgQ1NTT01cbiAgICAvLyBERVY6IEdyYWJiZWQgZnJvbSBqUXVlcnlcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L2pxdWVyeS9ibG9iLzEuOS1zdGFibGUvc3JjL2Nzcy5qcyNMMTkxLUwxOTRcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L2pxdWVyeS9ibG9iLzEuOS1zdGFibGUvc3JjL2NvcmUuanMjTDU5My1MNTk3XG4gICAgcHJvcC5yZXBsYWNlKC8tKFxcdykvZ2ksIGZ1bmN0aW9uICh3b3JkLCBsZXR0ZXIpIHtcbiAgICAgIHJldHVybiBsZXR0ZXIudG9VcHBlckNhc2UoKTtcbiAgICB9KVxuICBdO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBjb21wdXRlZFN0eWxlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2NvbXB1dGVkLXN0eWxlL2Rpc3QvY29tcHV0ZWRTdHlsZS5jb21tb25qcy5qc1xuLy8gbW9kdWxlIGlkID0gMzRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ=="
}, {
"id": "./node_modules/react-transition-group/CSSTransitionGroup.js",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroup.js",
"name": "./~/react-transition-group/CSSTransitionGroup.js",
"index": 717,
"index2": 721,
"size": 3992,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/index.js",
"issuerId": "./node_modules/react-transition-group/index.js",
"issuerName": "./~/react-transition-group/index.js",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./node_modules/react-transition-group/index.js",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/index.js",
"module": "./~/react-transition-group/index.js",
"moduleName": "./~/react-transition-group/index.js",
"type": "cjs require",
"userRequest": "./CSSTransitionGroup",
"loc": "3:26-57"
}],
"usedExports": true,
"providedExports": null,
"depth": 7,
"source": "'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _TransitionGroup = require('./TransitionGroup');\n\nvar _TransitionGroup2 = _interopRequireDefault(_TransitionGroup);\n\nvar _CSSTransitionGroupChild = require('./CSSTransitionGroupChild');\n\nvar _CSSTransitionGroupChild2 = _interopRequireDefault(_CSSTransitionGroupChild);\n\nvar _PropTypes = require('./utils/PropTypes');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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; }\n\nfunction _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; }\n\nvar propTypes = {\n transitionName: _PropTypes.nameShape.isRequired,\n\n transitionAppear: _propTypes2.default.bool,\n transitionEnter: _propTypes2.default.bool,\n transitionLeave: _propTypes2.default.bool,\n transitionAppearTimeout: (0, _PropTypes.transitionTimeout)('Appear'),\n transitionEnterTimeout: (0, _PropTypes.transitionTimeout)('Enter'),\n transitionLeaveTimeout: (0, _PropTypes.transitionTimeout)('Leave')\n};\n\nvar defaultProps = {\n transitionAppear: false,\n transitionEnter: true,\n transitionLeave: true\n};\n\nvar CSSTransitionGroup = function (_React$Component) {\n _inherits(CSSTransitionGroup, _React$Component);\n\n function CSSTransitionGroup() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, CSSTransitionGroup);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this._wrapChild = function (child) {\n return _react2.default.createElement(_CSSTransitionGroupChild2.default, {\n name: _this.props.transitionName,\n appear: _this.props.transitionAppear,\n enter: _this.props.transitionEnter,\n leave: _this.props.transitionLeave,\n appearTimeout: _this.props.transitionAppearTimeout,\n enterTimeout: _this.props.transitionEnterTimeout,\n leaveTimeout: _this.props.transitionLeaveTimeout\n }, child);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n // We need to provide this childFactory so that\n // ReactCSSTransitionGroupChild can receive updates to name, enter, and\n // leave while it is leaving.\n\n\n CSSTransitionGroup.prototype.render = function render() {\n return _react2.default.createElement(_TransitionGroup2.default, _extends({}, this.props, { childFactory: this._wrapChild }));\n };\n\n return CSSTransitionGroup;\n}(_react2.default.Component);\n\nCSSTransitionGroup.displayName = 'CSSTransitionGroup';\n\n\nCSSTransitionGroup.propTypes = propTypes;\nCSSTransitionGroup.defaultProps = defaultProps;\n\nexports.default = CSSTransitionGroup;\nmodule.exports = exports['default'];"
}, {
"id": "./node_modules/react-transition-group/CSSTransitionGroupChild.js",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroupChild.js",
"name": "./~/react-transition-group/CSSTransitionGroupChild.js",
"index": 722,
"index2": 720,
"size": 7846,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroup.js",
"issuerId": "./node_modules/react-transition-group/CSSTransitionGroup.js",
"issuerName": "./~/react-transition-group/CSSTransitionGroup.js",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./node_modules/react-transition-group/CSSTransitionGroup.js",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroup.js",
"module": "./~/react-transition-group/CSSTransitionGroup.js",
"moduleName": "./~/react-transition-group/CSSTransitionGroup.js",
"type": "cjs require",
"userRequest": "./CSSTransitionGroupChild",
"loc": "19:31-67"
}],
"usedExports": true,
"providedExports": null,
"depth": 8,
"source": "'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _addClass = require('dom-helpers/class/addClass');\n\nvar _addClass2 = _interopRequireDefault(_addClass);\n\nvar _removeClass = require('dom-helpers/class/removeClass');\n\nvar _removeClass2 = _interopRequireDefault(_removeClass);\n\nvar _requestAnimationFrame = require('dom-helpers/util/requestAnimationFrame');\n\nvar _requestAnimationFrame2 = _interopRequireDefault(_requestAnimationFrame);\n\nvar _properties = require('dom-helpers/transition/properties');\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactDom = require('react-dom');\n\nvar _PropTypes = require('./utils/PropTypes');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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; }\n\nfunction _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; }\n\nvar events = [];\nif (_properties.transitionEnd) events.push(_properties.transitionEnd);\nif (_properties.animationEnd) events.push(_properties.animationEnd);\n\nfunction addEndListener(node, listener) {\n if (events.length) {\n events.forEach(function (e) {\n return node.addEventListener(e, listener, false);\n });\n } else {\n setTimeout(listener, 0);\n }\n\n return function () {\n if (!events.length) return;\n events.forEach(function (e) {\n return node.removeEventListener(e, listener, false);\n });\n };\n}\n\nvar propTypes = {\n children: _propTypes2.default.node,\n name: _PropTypes.nameShape.isRequired,\n\n // Once we require timeouts to be specified, we can remove the\n // boolean flags (appear etc.) and just accept a number\n // or a bool for the timeout flags (appearTimeout etc.)\n appear: _propTypes2.default.bool,\n enter: _propTypes2.default.bool,\n leave: _propTypes2.default.bool,\n appearTimeout: _propTypes2.default.number,\n enterTimeout: _propTypes2.default.number,\n leaveTimeout: _propTypes2.default.number\n};\n\nvar CSSTransitionGroupChild = function (_React$Component) {\n _inherits(CSSTransitionGroupChild, _React$Component);\n\n function CSSTransitionGroupChild() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, CSSTransitionGroupChild);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.componentWillAppear = function (done) {\n if (_this.props.appear) {\n _this.transition('appear', done, _this.props.appearTimeout);\n } else {\n done();\n }\n }, _this.componentWillEnter = function (done) {\n if (_this.props.enter) {\n _this.transition('enter', done, _this.props.enterTimeout);\n } else {\n done();\n }\n }, _this.componentWillLeave = function (done) {\n if (_this.props.leave) {\n _this.transition('leave', done, _this.props.leaveTimeout);\n } else {\n done();\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n CSSTransitionGroupChild.prototype.componentWillMount = function componentWillMount() {\n this.classNameAndNodeQueue = [];\n this.transitionTimeouts = [];\n };\n\n CSSTransitionGroupChild.prototype.componentWillUnmount = function componentWillUnmount() {\n this.unmounted = true;\n\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n this.transitionTimeouts.forEach(function (timeout) {\n clearTimeout(timeout);\n });\n\n this.classNameAndNodeQueue.length = 0;\n };\n\n CSSTransitionGroupChild.prototype.transition = function transition(animationType, finishCallback, timeout) {\n var node = (0, _reactDom.findDOMNode)(this);\n\n if (!node) {\n if (finishCallback) {\n finishCallback();\n }\n return;\n }\n\n var className = this.props.name[animationType] || this.props.name + '-' + animationType;\n var activeClassName = this.props.name[animationType + 'Active'] || className + '-active';\n var timer = null;\n var removeListeners = void 0;\n\n (0, _addClass2.default)(node, className);\n\n // Need to do this to actually trigger a transition.\n this.queueClassAndNode(activeClassName, node);\n\n // Clean-up the animation after the specified delay\n var finish = function finish(e) {\n if (e && e.target !== node) {\n return;\n }\n\n clearTimeout(timer);\n if (removeListeners) removeListeners();\n\n (0, _removeClass2.default)(node, className);\n (0, _removeClass2.default)(node, activeClassName);\n\n if (removeListeners) removeListeners();\n\n // Usually this optional callback is used for informing an owner of\n // a leave animation and telling it to remove the child.\n if (finishCallback) {\n finishCallback();\n }\n };\n\n if (timeout) {\n timer = setTimeout(finish, timeout);\n this.transitionTimeouts.push(timer);\n } else if (_properties.transitionEnd) {\n removeListeners = addEndListener(node, finish);\n }\n };\n\n CSSTransitionGroupChild.prototype.queueClassAndNode = function queueClassAndNode(className, node) {\n var _this2 = this;\n\n this.classNameAndNodeQueue.push({\n className: className,\n node: node\n });\n\n if (!this.rafHandle) {\n this.rafHandle = (0, _requestAnimationFrame2.default)(function () {\n return _this2.flushClassNameAndNodeQueue();\n });\n }\n };\n\n CSSTransitionGroupChild.prototype.flushClassNameAndNodeQueue = function flushClassNameAndNodeQueue() {\n if (!this.unmounted) {\n this.classNameAndNodeQueue.forEach(function (obj) {\n // This is for to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n /* eslint-disable no-unused-expressions */\n obj.node.scrollTop;\n /* eslint-enable no-unused-expressions */\n (0, _addClass2.default)(obj.node, obj.className);\n });\n }\n this.classNameAndNodeQueue.length = 0;\n this.rafHandle = null;\n };\n\n CSSTransitionGroupChild.prototype.render = function render() {\n var props = _extends({}, this.props);\n delete props.name;\n delete props.appear;\n delete props.enter;\n delete props.leave;\n delete props.appearTimeout;\n delete props.enterTimeout;\n delete props.leaveTimeout;\n delete props.children;\n return _react2.default.cloneElement(_react2.default.Children.only(this.props.children), props);\n };\n\n return CSSTransitionGroupChild;\n}(_react2.default.Component);\n\nCSSTransitionGroupChild.displayName = 'CSSTransitionGroupChild';\n\n\nCSSTransitionGroupChild.propTypes = propTypes;\n\nexports.default = CSSTransitionGroupChild;\nmodule.exports = exports['default'];"
}, {
"id": "./node_modules/react-transition-group/TransitionGroup.js",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/TransitionGroup.js",
"name": "./~/react-transition-group/TransitionGroup.js",
"index": 718,
"index2": 712,
"size": 9681,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/index.js",
"issuerId": "./node_modules/react-transition-group/index.js",
"issuerName": "./~/react-transition-group/index.js",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./node_modules/react-transition-group/index.js",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/index.js",
"module": "./~/react-transition-group/index.js",
"moduleName": "./~/react-transition-group/index.js",
"type": "cjs require",
"userRequest": "./TransitionGroup",
"loc": "7:23-51"
}, {
"moduleId": "./node_modules/react-transition-group/CSSTransitionGroup.js",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroup.js",
"module": "./~/react-transition-group/CSSTransitionGroup.js",
"moduleName": "./~/react-transition-group/CSSTransitionGroup.js",
"type": "cjs require",
"userRequest": "./TransitionGroup",
"loc": "15:23-51"
}],
"usedExports": true,
"providedExports": null,
"depth": 7,
"source": "'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _chainFunction = require('chain-function');\n\nvar _chainFunction2 = _interopRequireDefault(_chainFunction);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _ChildMapping = require('./utils/ChildMapping');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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; }\n\nfunction _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; }\n\nvar propTypes = {\n component: _propTypes2.default.any,\n childFactory: _propTypes2.default.func,\n children: _propTypes2.default.node\n};\n\nvar defaultProps = {\n component: 'span',\n childFactory: function childFactory(child) {\n return child;\n }\n};\n\nvar TransitionGroup = function (_React$Component) {\n _inherits(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n _classCallCheck(this, TransitionGroup);\n\n var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n _this.performAppear = function (key) {\n _this.currentlyTransitioningKeys[key] = true;\n\n var component = _this.childRefs[key];\n\n if (component.componentWillAppear) {\n component.componentWillAppear(_this._handleDoneAppearing.bind(_this, key));\n } else {\n _this._handleDoneAppearing(key);\n }\n };\n\n _this._handleDoneAppearing = function (key) {\n var component = _this.childRefs[key];\n if (component && component.componentDidAppear) {\n component.componentDidAppear();\n }\n\n delete _this.currentlyTransitioningKeys[key];\n\n var currentChildMapping = (0, _ChildMapping.getChildMapping)(_this.props.children);\n\n if (!currentChildMapping || !currentChildMapping.hasOwnProperty(key)) {\n // This was removed before it had fully appeared. Remove it.\n _this.performLeave(key);\n }\n };\n\n _this.performEnter = function (key) {\n _this.currentlyTransitioningKeys[key] = true;\n\n var component = _this.childRefs[key];\n\n if (component.componentWillEnter) {\n component.componentWillEnter(_this._handleDoneEntering.bind(_this, key));\n } else {\n _this._handleDoneEntering(key);\n }\n };\n\n _this._handleDoneEntering = function (key) {\n var component = _this.childRefs[key];\n if (component && component.componentDidEnter) {\n component.componentDidEnter();\n }\n\n delete _this.currentlyTransitioningKeys[key];\n\n var currentChildMapping = (0, _ChildMapping.getChildMapping)(_this.props.children);\n\n if (!currentChildMapping || !currentChildMapping.hasOwnProperty(key)) {\n // This was removed before it had fully entered. Remove it.\n _this.performLeave(key);\n }\n };\n\n _this.performLeave = function (key) {\n _this.currentlyTransitioningKeys[key] = true;\n\n var component = _this.childRefs[key];\n if (component.componentWillLeave) {\n component.componentWillLeave(_this._handleDoneLeaving.bind(_this, key));\n } else {\n // Note that this is somewhat dangerous b/c it calls setState()\n // again, effectively mutating the component before all the work\n // is done.\n _this._handleDoneLeaving(key);\n }\n };\n\n _this._handleDoneLeaving = function (key) {\n var component = _this.childRefs[key];\n\n if (component && component.componentDidLeave) {\n component.componentDidLeave();\n }\n\n delete _this.currentlyTransitioningKeys[key];\n\n var currentChildMapping = (0, _ChildMapping.getChildMapping)(_this.props.children);\n\n if (currentChildMapping && currentChildMapping.hasOwnProperty(key)) {\n // This entered again before it fully left. Add it again.\n _this.performEnter(key);\n } else {\n _this.setState(function (state) {\n var newChildren = _extends({}, state.children);\n delete newChildren[key];\n return { children: newChildren };\n });\n }\n };\n\n _this.childRefs = Object.create(null);\n\n _this.state = {\n children: (0, _ChildMapping.getChildMapping)(props.children)\n };\n return _this;\n }\n\n TransitionGroup.prototype.componentWillMount = function componentWillMount() {\n this.currentlyTransitioningKeys = {};\n this.keysToEnter = [];\n this.keysToLeave = [];\n };\n\n TransitionGroup.prototype.componentDidMount = function componentDidMount() {\n var initialChildMapping = this.state.children;\n for (var key in initialChildMapping) {\n if (initialChildMapping[key]) {\n this.performAppear(key);\n }\n }\n };\n\n TransitionGroup.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var nextChildMapping = (0, _ChildMapping.getChildMapping)(nextProps.children);\n var prevChildMapping = this.state.children;\n\n this.setState({\n children: (0, _ChildMapping.mergeChildMappings)(prevChildMapping, nextChildMapping)\n });\n\n for (var key in nextChildMapping) {\n var hasPrev = prevChildMapping && prevChildMapping.hasOwnProperty(key);\n if (nextChildMapping[key] && !hasPrev && !this.currentlyTransitioningKeys[key]) {\n this.keysToEnter.push(key);\n }\n }\n\n for (var _key in prevChildMapping) {\n var hasNext = nextChildMapping && nextChildMapping.hasOwnProperty(_key);\n if (prevChildMapping[_key] && !hasNext && !this.currentlyTransitioningKeys[_key]) {\n this.keysToLeave.push(_key);\n }\n }\n\n // If we want to someday check for reordering, we could do it here.\n };\n\n TransitionGroup.prototype.componentDidUpdate = function componentDidUpdate() {\n var keysToEnter = this.keysToEnter;\n this.keysToEnter = [];\n keysToEnter.forEach(this.performEnter);\n\n var keysToLeave = this.keysToLeave;\n this.keysToLeave = [];\n keysToLeave.forEach(this.performLeave);\n };\n\n TransitionGroup.prototype.render = function render() {\n var _this2 = this;\n\n // TODO: we could get rid of the need for the wrapper node\n // by cloning a single child\n var childrenToRender = [];\n\n var _loop = function _loop(key) {\n var child = _this2.state.children[key];\n if (child) {\n var isCallbackRef = typeof child.ref !== 'string';\n var factoryChild = _this2.props.childFactory(child);\n var ref = function ref(r) {\n _this2.childRefs[key] = r;\n };\n\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(isCallbackRef, 'string refs are not supported on children of TransitionGroup and will be ignored. ' + 'Please use a callback ref instead: https://facebook.github.io/react/docs/refs-and-the-dom.html#the-ref-callback-attribute') : void 0;\n\n // Always chaining the refs leads to problems when the childFactory\n // wraps the child. The child ref callback gets called twice with the\n // wrapper and the child. So we only need to chain the ref if the\n // factoryChild is not different from child.\n if (factoryChild === child && isCallbackRef) {\n ref = (0, _chainFunction2.default)(child.ref, ref);\n }\n\n // You may need to apply reactive updates to a child as it is leaving.\n // The normal React way to do it won't work since the child will have\n // already been removed. In case you need this behavior you can provide\n // a childFactory function to wrap every child, even the ones that are\n // leaving.\n childrenToRender.push(_react2.default.cloneElement(factoryChild, {\n key: key,\n ref: ref\n }));\n }\n };\n\n for (var key in this.state.children) {\n _loop(key);\n }\n\n // Do not forward TransitionGroup props to primitive DOM nodes\n var props = _extends({}, this.props);\n delete props.transitionLeave;\n delete props.transitionName;\n delete props.transitionAppear;\n delete props.transitionEnter;\n delete props.childFactory;\n delete props.transitionLeaveTimeout;\n delete props.transitionEnterTimeout;\n delete props.transitionAppearTimeout;\n delete props.component;\n\n return _react2.default.createElement(this.props.component, props, childrenToRender);\n };\n\n return TransitionGroup;\n}(_react2.default.Component);\n\nTransitionGroup.displayName = 'TransitionGroup';\n\n\nTransitionGroup.propTypes = propTypes;\nTransitionGroup.defaultProps = defaultProps;\n\nexports.default = TransitionGroup;\nmodule.exports = exports['default'];"
}, {
"id": "./node_modules/react-transition-group/index.js",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/index.js",
"name": "./~/react-transition-group/index.js",
"index": 716,
"index2": 722,
"size": 484,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/component.tsx",
"issuerId": "./src/apollo-builder/layout/Preview/component.tsx",
"issuerName": "./src/apollo-builder/layout/Preview/component.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/layout/Preview/component.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/component.tsx",
"module": "./src/apollo-builder/layout/Preview/component.tsx",
"moduleName": "./src/apollo-builder/layout/Preview/component.tsx",
"type": "harmony import",
"userRequest": "react-transition-group",
"loc": "15:0-60"
}, {
"moduleId": "./src/apollo-builder/ui/ControlPanelMenu.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ControlPanelMenu.tsx",
"module": "./src/apollo-builder/ui/ControlPanelMenu.tsx",
"moduleName": "./src/apollo-builder/ui/ControlPanelMenu.tsx",
"type": "harmony import",
"userRequest": "react-transition-group",
"loc": "15:0-60"
}],
"usedExports": ["CSSTransitionGroup"],
"providedExports": null,
"depth": 6,
"source": "'use strict';\n\nvar _CSSTransitionGroup = require('./CSSTransitionGroup');\n\nvar _CSSTransitionGroup2 = _interopRequireDefault(_CSSTransitionGroup);\n\nvar _TransitionGroup = require('./TransitionGroup');\n\nvar _TransitionGroup2 = _interopRequireDefault(_TransitionGroup);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n TransitionGroup: _TransitionGroup2.default,\n CSSTransitionGroup: _CSSTransitionGroup2.default\n};"
}, {
"id": "./node_modules/react-transition-group/utils/ChildMapping.js",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/utils/ChildMapping.js",
"name": "./~/react-transition-group/utils/ChildMapping.js",
"index": 721,
"index2": 711,
"size": 2698,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/TransitionGroup.js",
"issuerId": "./node_modules/react-transition-group/TransitionGroup.js",
"issuerName": "./~/react-transition-group/TransitionGroup.js",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./node_modules/react-transition-group/TransitionGroup.js",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/TransitionGroup.js",
"module": "./~/react-transition-group/TransitionGroup.js",
"moduleName": "./~/react-transition-group/TransitionGroup.js",
"type": "cjs require",
"userRequest": "./utils/ChildMapping",
"loc": "23:20-51"
}],
"usedExports": true,
"providedExports": null,
"depth": 8,
"source": "'use strict';\n\nexports.__esModule = true;\nexports.getChildMapping = getChildMapping;\nexports.mergeChildMappings = mergeChildMappings;\n\nvar _react = require('react');\n\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\nfunction getChildMapping(children) {\n if (!children) {\n return children;\n }\n var result = {};\n _react.Children.map(children, function (child) {\n return child;\n }).forEach(function (child) {\n result[child.key] = child;\n });\n return result;\n}\n\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\nfunction mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n if (next.hasOwnProperty(key)) {\n return next[key];\n }\n\n return prev[key];\n }\n\n // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n var nextKeysPending = {};\n\n var pendingKeys = [];\n for (var prevKey in prev) {\n if (next.hasOwnProperty(prevKey)) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i = void 0;\n var childMapping = {};\n for (var nextKey in next) {\n if (nextKeysPending.hasOwnProperty(nextKey)) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n childMapping[nextKey] = getValueForKey(nextKey);\n }\n\n // Finally, add the keys which didn't appear before any key in `next`\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}"
}, {
"id": "./node_modules/react-transition-group/utils/PropTypes.js",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/utils/PropTypes.js",
"name": "./~/react-transition-group/utils/PropTypes.js",
"index": 729,
"index2": 719,
"size": 1768,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroup.js",
"issuerId": "./node_modules/react-transition-group/CSSTransitionGroup.js",
"issuerName": "./~/react-transition-group/CSSTransitionGroup.js",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./node_modules/react-transition-group/CSSTransitionGroup.js",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroup.js",
"module": "./~/react-transition-group/CSSTransitionGroup.js",
"moduleName": "./~/react-transition-group/CSSTransitionGroup.js",
"type": "cjs require",
"userRequest": "./utils/PropTypes",
"loc": "23:17-45"
}, {
"moduleId": "./node_modules/react-transition-group/CSSTransitionGroupChild.js",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroupChild.js",
"module": "./~/react-transition-group/CSSTransitionGroupChild.js",
"moduleName": "./~/react-transition-group/CSSTransitionGroupChild.js",
"type": "cjs require",
"userRequest": "./utils/PropTypes",
"loc": "31:17-45"
}],
"usedExports": true,
"providedExports": null,
"depth": 8,
"source": "'use strict';\n\nexports.__esModule = true;\nexports.nameShape = undefined;\nexports.transitionTimeout = transitionTimeout;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction transitionTimeout(transitionType) {\n var timeoutPropName = 'transition' + transitionType + 'Timeout';\n var enabledPropName = 'transition' + transitionType;\n\n return function (props) {\n // If the transition is enabled\n if (props[enabledPropName]) {\n // If no timeout duration is provided\n if (props[timeoutPropName] == null) {\n return new Error(timeoutPropName + ' wasn\\'t supplied to CSSTransitionGroup: ' + 'this can cause unreliable animations and won\\'t be supported in ' + 'a future version of React. See ' + 'https://fb.me/react-animation-transition-group-timeout for more ' + 'information.');\n\n // If the duration isn't a number\n } else if (typeof props[timeoutPropName] !== 'number') {\n return new Error(timeoutPropName + ' must be a number (in milliseconds)');\n }\n }\n\n return null;\n };\n}\n\nvar nameShape = exports.nameShape = _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.shape({\n enter: _propTypes2.default.string,\n leave: _propTypes2.default.string,\n active: _propTypes2.default.string\n}), _propTypes2.default.shape({\n enter: _propTypes2.default.string,\n enterActive: _propTypes2.default.string,\n leave: _propTypes2.default.string,\n leaveActive: _propTypes2.default.string,\n appear: _propTypes2.default.string,\n appearActive: _propTypes2.default.string\n})]);"
}, {
"id": "./node_modules/warning/browser.js",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/warning/browser.js",
"name": "./~/warning/browser.js",
"index": 720,
"index2": 710,
"size": 1807,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/TransitionGroup.js",
"issuerId": "./node_modules/react-transition-group/TransitionGroup.js",
"issuerName": "./~/react-transition-group/TransitionGroup.js",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./node_modules/react-transition-group/TransitionGroup.js",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/TransitionGroup.js",
"module": "./~/react-transition-group/TransitionGroup.js",
"moduleName": "./~/react-transition-group/TransitionGroup.js",
"type": "cjs require",
"userRequest": "warning",
"loc": "19:15-33"
}],
"usedExports": true,
"providedExports": null,
"depth": 8,
"source": "/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n\n if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n throw new Error(\n 'The warning format should be able to uniquely identify this ' +\n 'warning. Please, use a more descriptive format than: ' + format\n );\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch(x) {}\n }\n };\n}\n\nmodule.exports = warning;\n"
}, {
"id": "./src/apollo-builder/app.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx",
"name": "./src/apollo-builder/app.tsx",
"index": 655,
"index2": 751,
"size": 5136,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/app.tsx",
"issuerId": "./src/dev-app/app.tsx",
"issuerName": "./src/dev-app/app.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/dev-app/app.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/app.tsx",
"module": "./src/dev-app/app.tsx",
"moduleName": "./src/dev-app/app.tsx",
"type": "harmony import",
"userRequest": "apollo-builder/app",
"loc": "2:0-37"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 3,
"source": "/* Role: Defines the App component, i.e. the main entry point of the application,\r\n which is wrapped with the internationalization provider after the user's browser location is queried */\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport * as React from 'react';\r\nimport { FormattedMessage } from 'react-intl';\r\nimport styled from './utils/styled';\r\nimport appContainer from './app-container';\r\nimport Builder from './core/builder/model';\r\nimport Project from './core/project/model';\r\nimport Workspace from './layout/Workspace/connect';\r\nimport IconButton from './ui/buttons/IconButton';\r\nimport StatusMessage from './ui/StatusMessage/connect';\r\nimport Flex from './ui/Flex';\r\nimport CommandBar from './ui/header/CommandBar';\r\nimport FocusObserver from './ui/FocusObserver';\r\nimport Preview from './layout/Preview/connect';\r\nvar BackgroundFlex = (_a = [\"\\n background-color: \", \";\\n\"], _a.raw = [\"\\n background-color: \", \";\\n\"], styled(Flex)(_a, function (props) { return props.theme.workspaceBackground; }));\r\nvar CommandBarPositioning = (_b = [\"\\n z-index: 2;\\n margin: 0 auto;\\n\"], _b.raw = [\"\\n z-index: 2;\\n margin: 0 auto;\\n\"], styled.div(_b));\r\nvar WorkspacePositioning = (_c = [\"\\n flex: 1;\\n box-sizing: border-box;\\n height: 100%;\\n\"], _c.raw = [\"\\n flex: 1;\\n box-sizing: border-box;\\n height: 100%;\\n\"], styled.div(_c));\r\nvar App = (function (_super) {\r\n __extends(App, _super);\r\n function App(props) {\r\n var _this = _super.call(this, props) || this;\r\n _this.configuration = props.configuration;\r\n _this.host = props.configuration.host;\r\n _this.builderModel = new Builder(_this.host, _this.configuration);\r\n // use the built-in project for now\r\n _this.builderModel.setProject(new Project());\r\n return _this;\r\n }\r\n App.prototype.componentDidMount = function () {\r\n this.builderModel.workspace.scaleSpreadToFit();\r\n };\r\n // the Workspace should be 100% height & width\r\n App.prototype.render = function () {\r\n var _this = this;\r\n return (React.createElement(FocusObserver, { style: { display: 'flex' } },\r\n React.createElement(BackgroundFlex, { column: true, center: true },\r\n React.createElement(CommandBarPositioning, null,\r\n React.createElement(CommandBar, null,\r\n React.createElement(IconButton, { iconKey: \"undo\", isActive: false, onClick: this.builderModel.workspace.undo },\r\n React.createElement(FormattedMessage, { id: \"undo\", defaultMessage: \"Undo\" })),\r\n React.createElement(IconButton, { iconKey: \"redo\", isActive: false, onClick: this.builderModel.workspace.redo },\r\n React.createElement(FormattedMessage, { id: \"redo\", defaultMessage: \"Redo\" })),\r\n React.createElement(IconButton, { iconKey: \"review\", isActive: false, onClick: function () { return _this.builderModel.workspace.showPreview(); } },\r\n React.createElement(FormattedMessage, { id: \"preview\", defaultMessage: \"Preview\" })),\r\n React.createElement(IconButton, { iconKey: \"save\", isActive: false, onClick: function () { return _this.builderModel.workspace.saveProject(); } },\r\n React.createElement(FormattedMessage, { id: \"save\", defaultMessage: \"Save\" })))),\r\n React.createElement(StatusMessage, { model: this.builderModel.workspace }),\r\n React.createElement(Flex, { row: true, left: true, fill: true, style: { zIndex: 1 } },\r\n React.createElement(WorkspacePositioning, null,\r\n React.createElement(Workspace, { model: this.builderModel.workspace }))),\r\n React.createElement(Preview, { model: this.builderModel.workspace }))));\r\n };\r\n return App;\r\n}(React.Component));\r\nexport default appContainer(App);\r\nvar _a, _b, _c;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/common/action-stream.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/common/action-stream.tsx",
"name": "./src/apollo-builder/common/action-stream.tsx",
"index": 665,
"index2": 659,
"size": 1373,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts",
"issuerId": "./src/apollo-builder/layout/Workspace/model.ts",
"issuerName": "./src/apollo-builder/layout/Workspace/model.ts",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/layout/Workspace/model.ts",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts",
"module": "./src/apollo-builder/layout/Workspace/model.ts",
"moduleName": "./src/apollo-builder/layout/Workspace/model.ts",
"type": "harmony import",
"userRequest": "../../common/action-stream",
"loc": "23:0-58"
}],
"usedExports": ["actionStream"],
"providedExports": ["actionStream"],
"depth": 6,
"source": "import { Subject } from 'rxjs/Subject';\r\nimport { $$observable } from 'rxjs/symbol/observable';\r\nexport var actionStream = function (fn) {\r\n var subject = new Subject();\r\n var actionFn = (function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var value = typeof fn === 'function' ? fn.apply(void 0, args) : args[0];\r\n subject.next(value);\r\n return value;\r\n });\r\n actionFn.subscribe = subject.subscribe.bind(subject);\r\n actionFn[$$observable] = function () { return actionFn; };\r\n return actionFn;\r\n};\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/common/action-stream.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/common/action-stream.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/common/container.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/common/container.tsx",
"name": "./src/apollo-builder/common/container.tsx",
"index": 666,
"index2": 662,
"size": 2818,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts",
"issuerId": "./src/apollo-builder/layout/Workspace/model.ts",
"issuerName": "./src/apollo-builder/layout/Workspace/model.ts",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/layout/Workspace/model.ts",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts",
"module": "./src/apollo-builder/layout/Workspace/model.ts",
"moduleName": "./src/apollo-builder/layout/Workspace/model.ts",
"type": "harmony import",
"userRequest": "../../common/container",
"loc": "24:0-51"
}],
"usedExports": ["Container"],
"providedExports": ["Container"],
"depth": 6,
"source": "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\n/* Role: Defines a readonly container */\r\nimport { action, observable } from 'mobx';\r\nimport memoize from '../utils/memoize';\r\nimport { add, zero } from './size';\r\nvar Container = (function () {\r\n function Container(_a) {\r\n var _b = _a === void 0 ? zero : _a, _c = _b.width, width = _c === void 0 ? 0 : _c, _d = _b.height, height = _d === void 0 ? 0 : _d;\r\n this._size = { width: width, height: height };\r\n var self = this;\r\n this.size = observable({\r\n get width() { return self._size.width; },\r\n get height() { return self._size.height; }\r\n });\r\n }\r\n Object.defineProperty(Container.prototype, \"readonly\", {\r\n get: function () { return { size: this.size }; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Container.prototype.resize = function (size) {\r\n this._size = size;\r\n };\r\n Container.prototype.resizeBy = function (_a) {\r\n var _b = _a === void 0 ? zero : _a, _c = _b.width, width = _c === void 0 ? 0 : _c, _d = _b.height, height = _d === void 0 ? 0 : _d;\r\n this._size = add(this._size, { width: width, height: height });\r\n };\r\n return Container;\r\n}());\r\nexport { Container };\r\n__decorate([\r\n observable\r\n], Container.prototype, \"_size\", void 0);\r\n__decorate([\r\n memoize\r\n], Container.prototype, \"readonly\", null);\r\n__decorate([\r\n action.bound\r\n], Container.prototype, \"resize\", null);\r\n__decorate([\r\n action.bound\r\n], Container.prototype, \"resizeBy\", null);\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/common/container.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/common/container.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/common/size.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/common/size.tsx",
"name": "./src/apollo-builder/common/size.tsx",
"index": 668,
"index2": 661,
"size": 1068,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/MeasureContainer.tsx",
"issuerId": "./src/apollo-builder/ui/MeasureContainer.tsx",
"issuerName": "./src/apollo-builder/ui/MeasureContainer.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/ui/MeasureContainer.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/MeasureContainer.tsx",
"module": "./src/apollo-builder/ui/MeasureContainer.tsx",
"moduleName": "./src/apollo-builder/ui/MeasureContainer.tsx",
"type": "harmony import",
"userRequest": "../common/size",
"loc": "14:0-54"
}, {
"moduleId": "./src/apollo-builder/common/container.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/common/container.tsx",
"module": "./src/apollo-builder/common/container.tsx",
"moduleName": "./src/apollo-builder/common/container.tsx",
"type": "harmony import",
"userRequest": "./size",
"loc": "10:0-35"
}],
"usedExports": ["equals", "zero", "add"],
"providedExports": ["zero", "add", "equals", "default"],
"depth": 7,
"source": "export var zero = { width: 0, height: 0 };\r\nexport var add = function (left, right) {\r\n return ({ width: left.width + right.width, height: left.height + right.height });\r\n};\r\nexport var equals = function (left, right) {\r\n return (left.width === right.width) && (left.height === right.height);\r\n};\r\nexport default { zero: zero, add: add };\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/common/size.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/common/size.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/core/actionStack/ActionSink.ts",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/ActionSink.ts",
"name": "./src/apollo-builder/core/actionStack/ActionSink.ts",
"index": 678,
"index2": 668,
"size": 1367,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts",
"issuerId": "./src/apollo-builder/layout/Workspace/model.ts",
"issuerName": "./src/apollo-builder/layout/Workspace/model.ts",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/layout/Workspace/model.ts",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts",
"module": "./src/apollo-builder/layout/Workspace/model.ts",
"moduleName": "./src/apollo-builder/layout/Workspace/model.ts",
"type": "harmony import",
"userRequest": "../../core/actionStack/ActionSink",
"loc": "29:0-69"
}, {
"moduleId": "./src/apollo-builder/core/actionStack/index.ts",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/index.ts",
"module": "./src/apollo-builder/core/actionStack/index.ts",
"moduleName": "./src/apollo-builder/core/actionStack/index.ts",
"type": "harmony import",
"userRequest": "./ActionSink",
"loc": "2:0-48"
}],
"usedExports": ["createActionSink"],
"providedExports": ["createActionSink"],
"depth": 6,
"source": "import { Subject } from 'rxjs/Subject';\r\nexport function createActionSink() {\r\n var action$ = new Subject();\r\n function pushFn(actionOrInvoke, revoke) {\r\n var undoableAction = typeof actionOrInvoke === 'object'\r\n ? actionOrInvoke\r\n : {\r\n invoke: function () {\r\n actionOrInvoke();\r\n },\r\n revoke: function () {\r\n revoke();\r\n }\r\n };\r\n undoableAction.invoke();\r\n action$.next(undoableAction);\r\n }\r\n return Object.assign(pushFn, { action$: action$ });\r\n}\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/ActionSink.ts\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/ActionSink.ts\"); } } })();"
}, {
"id": "./src/apollo-builder/core/actionStack/ActionSource.ts",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/ActionSource.ts",
"name": "./src/apollo-builder/core/actionStack/ActionSource.ts",
"index": 671,
"index2": 663,
"size": 3127,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts",
"issuerId": "./src/apollo-builder/layout/Workspace/model.ts",
"issuerName": "./src/apollo-builder/layout/Workspace/model.ts",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/layout/Workspace/model.ts",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts",
"module": "./src/apollo-builder/layout/Workspace/model.ts",
"moduleName": "./src/apollo-builder/layout/Workspace/model.ts",
"type": "harmony import",
"userRequest": "../../core/actionStack/ActionSource",
"loc": "28:0-72"
}, {
"moduleId": "./src/apollo-builder/design/Element/model.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/model.tsx",
"module": "./src/apollo-builder/design/Element/model.tsx",
"moduleName": "./src/apollo-builder/design/Element/model.tsx",
"type": "harmony import",
"userRequest": "../../core/actionStack/ActionSource",
"loc": "11:0-72"
}, {
"moduleId": "./src/apollo-builder/design/Spread/model.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/model.tsx",
"module": "./src/apollo-builder/design/Spread/model.tsx",
"moduleName": "./src/apollo-builder/design/Spread/model.tsx",
"type": "harmony import",
"userRequest": "../../core/actionStack/ActionSource",
"loc": "21:0-72"
}],
"usedExports": ["ActionSourcesBase"],
"providedExports": ["composeActionSources", "ActionSourced", "ActionSourcesBase"],
"depth": 6,
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { toStream } from 'mobx-utils/lib/mobx-utils';\r\nimport { Observable } from 'rxjs/Observable';\r\nimport { empty } from 'rxjs/observable/empty';\r\nimport { from } from 'rxjs/observable/from';\r\nimport { defer } from 'rxjs/observable/defer';\r\nimport 'rxjs/add/operator/map';\r\nimport 'rxjs/add/operator/switchMap';\r\nimport 'rxjs/add/operator/startWith';\r\nexport function composeActionSources(sources) {\r\n if (!sources) {\r\n return empty();\r\n }\r\n if (sources instanceof Array) {\r\n return Observable.from(sources)\r\n .mergeMap(function (source) {\r\n return !source ? empty() :\r\n source.action$ ? source.action$ :\r\n source;\r\n });\r\n }\r\n if (sources.action$) {\r\n return sources.action$;\r\n }\r\n return sources;\r\n}\r\nexport function ActionSourced(Base) {\r\n return (function (_super) {\r\n __extends(class_1, _super);\r\n function class_1() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var _this = _super.apply(this, args) || this;\r\n _this.action$ = defer(function () {\r\n return from(toStream(function () { return _this.getActionSources(); }))\r\n .startWith(_this.getActionSources());\r\n })\r\n .switchMap(function (sources) { return composeActionSources(sources); });\r\n return _this;\r\n }\r\n return class_1;\r\n }(Base));\r\n}\r\nvar ActionSourcesProviderBase = (function () {\r\n function ActionSourcesProviderBase() {\r\n }\r\n ActionSourcesProviderBase.prototype.getActionSources = function () {\r\n return undefined;\r\n };\r\n return ActionSourcesProviderBase;\r\n}());\r\nexport var ActionSourcesBase = ActionSourced(ActionSourcesProviderBase);\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/ActionSource.ts\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/ActionSource.ts\"); } } })();"
}, {
"id": "./src/apollo-builder/core/actionStack/ActionStackController.ts",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/ActionStackController.ts",
"name": "./src/apollo-builder/core/actionStack/ActionStackController.ts",
"index": 681,
"index2": 675,
"size": 3621,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts",
"issuerId": "./src/apollo-builder/layout/Workspace/model.ts",
"issuerName": "./src/apollo-builder/layout/Workspace/model.ts",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/layout/Workspace/model.ts",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts",
"module": "./src/apollo-builder/layout/Workspace/model.ts",
"moduleName": "./src/apollo-builder/layout/Workspace/model.ts",
"type": "harmony import",
"userRequest": "../../core/actionStack/ActionStackController",
"loc": "27:0-81"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 6,
"source": "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nimport { observable, computed, action } from 'mobx';\r\nvar ActionStack = (function () {\r\n function ActionStack() {\r\n this.undoActions = [];\r\n this.redoActions = [];\r\n }\r\n Object.defineProperty(ActionStack.prototype, \"hasUndo\", {\r\n get: function () { return this.undoActions.length > 0; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ActionStack.prototype, \"hasRedo\", {\r\n get: function () { return this.redoActions.length > 0; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ActionStack.prototype.addAction = function (action) {\r\n if (this.redoActions.length) {\r\n this.redoActions.splice(0, this.redoActions.length);\r\n }\r\n if (action.reduce && this.undoActions.length) {\r\n var previousAction = this.undoActions[this.undoActions.length - 1];\r\n var reducedAction = action.reduce(previousAction);\r\n if (reducedAction) {\r\n this.undoActions.splice(this.undoActions.length - 1, 1, reducedAction);\r\n return;\r\n }\r\n }\r\n this.undoActions.push(action);\r\n };\r\n ActionStack.prototype.undo = function () {\r\n var lastAction = this.undoActions.pop();\r\n if (!lastAction) {\r\n return;\r\n }\r\n lastAction.revoke();\r\n this.redoActions.push(lastAction);\r\n };\r\n ActionStack.prototype.redo = function () {\r\n var lastAction = this.redoActions.pop();\r\n if (!lastAction) {\r\n return;\r\n }\r\n lastAction.invoke();\r\n this.undoActions.push(lastAction);\r\n };\r\n return ActionStack;\r\n}());\r\nexport default ActionStack;\r\n__decorate([\r\n observable.shallow\r\n], ActionStack.prototype, \"undoActions\", void 0);\r\n__decorate([\r\n observable.shallow\r\n], ActionStack.prototype, \"redoActions\", void 0);\r\n__decorate([\r\n computed\r\n], ActionStack.prototype, \"hasUndo\", null);\r\n__decorate([\r\n computed\r\n], ActionStack.prototype, \"hasRedo\", null);\r\n__decorate([\r\n action.bound\r\n], ActionStack.prototype, \"addAction\", null);\r\n__decorate([\r\n action.bound\r\n], ActionStack.prototype, \"undo\", null);\r\n__decorate([\r\n action.bound\r\n], ActionStack.prototype, \"redo\", null);\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/ActionStackController.ts\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/ActionStackController.ts\"); } } })();"
}, {
"id": "./src/apollo-builder/core/actionStack/InstanceUndoableAction.ts",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/InstanceUndoableAction.ts",
"name": "./src/apollo-builder/core/actionStack/InstanceUndoableAction.ts",
"index": 677,
"index2": 667,
"size": 2421,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/index.ts",
"issuerId": "./src/apollo-builder/core/actionStack/index.ts",
"issuerName": "./src/apollo-builder/core/actionStack/index.ts",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/core/actionStack/index.ts",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/index.ts",
"module": "./src/apollo-builder/core/actionStack/index.ts",
"moduleName": "./src/apollo-builder/core/actionStack/index.ts",
"type": "harmony import",
"userRequest": "./InstanceUndoableAction",
"loc": "1:0-58"
}],
"usedExports": ["undoableAction"],
"providedExports": ["undoableAction"],
"depth": 9,
"source": "export function undoableAction(options) {\r\n var reduceSame = options.reduceSameAction;\r\n var reduceSameActionAndModel = options.reduceSameActionAndModel;\r\n var setupReduce = function (model, data) {\r\n return reduceSameActionAndModel ?\r\n function (previousAction) {\r\n if (descriptor.is(previousAction) && previousAction.model === model) {\r\n var reducedActionData = reduceSameActionAndModel.call(model, data, previousAction.data);\r\n return reducedActionData ? descriptor.create(model, reducedActionData) : undefined;\r\n }\r\n return undefined;\r\n } :\r\n reduceSame ?\r\n function (previousAction) {\r\n if (descriptor.is(previousAction)) {\r\n var reducedAction = reduceSame.call(model, data, previousAction);\r\n return reducedAction ? descriptor.create(reducedAction.model, reducedAction.data) : undefined;\r\n }\r\n return undefined;\r\n } :\r\n undefined;\r\n };\r\n var descriptor = {\r\n type: Symbol(),\r\n is: function (action) { return action.type === descriptor.type; },\r\n create: function (model, data) { return ({\r\n type: descriptor.type,\r\n model: model,\r\n data: data,\r\n invoke: function () { return options.invoke.call(model, data); },\r\n revoke: function () { return options.revoke.call(model, data); },\r\n reduce: setupReduce(model, data)\r\n }); }\r\n };\r\n return descriptor;\r\n}\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/InstanceUndoableAction.ts\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/InstanceUndoableAction.ts\"); } } })();"
}, {
"id": "./src/apollo-builder/core/actionStack/index.ts",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/index.ts",
"name": "./src/apollo-builder/core/actionStack/index.ts",
"index": 676,
"index2": 669,
"size": 852,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/model.tsx",
"issuerId": "./src/apollo-builder/design/EditableText/model.tsx",
"issuerName": "./src/apollo-builder/design/EditableText/model.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/design/EditableText/model.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/model.tsx",
"module": "./src/apollo-builder/design/EditableText/model.tsx",
"moduleName": "./src/apollo-builder/design/EditableText/model.tsx",
"type": "harmony import",
"userRequest": "../../core/actionStack",
"loc": "20:0-74"
}],
"usedExports": ["createActionSink", "undoableAction"],
"providedExports": ["undoableAction", "createActionSink"],
"depth": 8,
"source": "export { undoableAction } from './InstanceUndoableAction';\r\nexport { createActionSink } from './ActionSink';\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/index.ts\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/index.ts\"); } } })();"
}, {
"id": "./src/apollo-builder/core/builder/model.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/builder/model.tsx",
"name": "./src/apollo-builder/core/builder/model.tsx",
"index": 663,
"index2": 677,
"size": 2345,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx",
"issuerId": "./src/apollo-builder/app.tsx",
"issuerName": "./src/apollo-builder/app.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/app.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx",
"module": "./src/apollo-builder/app.tsx",
"moduleName": "./src/apollo-builder/app.tsx",
"type": "harmony import",
"userRequest": "./core/builder/model",
"loc": "17:0-43"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 4,
"source": "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\n/* Role: the top-level builder model. Singleton instantiated on page load */\r\nimport { action, observable } from 'mobx';\r\nimport Workspace from '../../layout/Workspace/model';\r\nvar Builder = (function () {\r\n function Builder(host, configuration) {\r\n /**\r\n * On page load the builder doesn't have content to display immediately. We show a loading spinner (or whatever) until\r\n * everything's ready. This flag tracks that state.\r\n */\r\n this.initialized = false;\r\n this.host = host;\r\n this.configuration = configuration;\r\n }\r\n Builder.prototype.setProject = function (project) {\r\n this.initialized = true;\r\n this.workspace = new Workspace(project, this.configuration);\r\n };\r\n return Builder;\r\n}());\r\nexport default Builder;\r\n__decorate([\r\n observable\r\n], Builder.prototype, \"initialized\", void 0);\r\n__decorate([\r\n observable\r\n], Builder.prototype, \"workspace\", void 0);\r\n__decorate([\r\n action.bound\r\n], Builder.prototype, \"setProject\", null);\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/builder/model.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/builder/model.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/core/project/model.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/project/model.tsx",
"name": "./src/apollo-builder/core/project/model.tsx",
"index": 682,
"index2": 678,
"size": 1016,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx",
"issuerId": "./src/apollo-builder/app.tsx",
"issuerName": "./src/apollo-builder/app.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/app.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx",
"module": "./src/apollo-builder/app.tsx",
"moduleName": "./src/apollo-builder/app.tsx",
"type": "harmony import",
"userRequest": "./core/project/model",
"loc": "18:0-43"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 4,
"source": "/**\r\n * A project contains one or more products, each of which can be customized (e.g. a product suite). Where\r\n * do customization belong in the data model?\r\n */\r\nvar Project = (function () {\r\n function Project() {\r\n }\r\n return Project;\r\n}());\r\nexport default Project;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/project/model.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/project/model.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/design/EditableText/component.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/component.tsx",
"name": "./src/apollo-builder/design/EditableText/component.tsx",
"index": 704,
"index2": 694,
"size": 1840,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/connect.tsx",
"issuerId": "./src/apollo-builder/design/EditableText/connect.tsx",
"issuerName": "./src/apollo-builder/design/EditableText/connect.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/design/EditableText/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/connect.tsx",
"module": "./src/apollo-builder/design/EditableText/connect.tsx",
"moduleName": "./src/apollo-builder/design/EditableText/connect.tsx",
"type": "harmony import",
"userRequest": "./component",
"loc": "4:0-39"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 9,
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport * as React from 'react';\r\n// this file even needed any more? Could put simple tertiary ? : in connect\r\nvar EditableText = (function (_super) {\r\n __extends(EditableText, _super);\r\n function EditableText() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n EditableText.prototype.render = function () {\r\n if (!this.props.editing) {\r\n return this.props.children;\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n return EditableText;\r\n}(React.Component));\r\nexport default EditableText;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/component.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/component.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/design/EditableText/connect.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/connect.tsx",
"name": "./src/apollo-builder/design/EditableText/connect.tsx",
"index": 703,
"index2": 695,
"size": 1087,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/connects.tsx",
"issuerId": "./src/apollo-builder/design/connects.tsx",
"issuerName": "./src/apollo-builder/design/connects.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/design/connects.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/connects.tsx",
"module": "./src/apollo-builder/design/connects.tsx",
"moduleName": "./src/apollo-builder/design/connects.tsx",
"type": "harmony import",
"userRequest": "./EditableText/connect",
"loc": "7:0-65"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 8,
"source": "import * as React from 'react';\r\nimport connect from '../../utils/connect';\r\nimport Text from '../Text/connect';\r\nimport EditableText from './component';\r\nexport default connect(EditableText)(function (model) { return ({\r\n children: (React.createElement(Text, { model: model.textModel })),\r\n editing: model.isEditing\r\n}); });\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/connect.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/connect.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/design/EditableText/control/component.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/control/component.tsx",
"name": "./src/apollo-builder/design/EditableText/control/component.tsx",
"index": 709,
"index2": 702,
"size": 7922,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/control/connect.tsx",
"issuerId": "./src/apollo-builder/design/EditableText/control/connect.tsx",
"issuerName": "./src/apollo-builder/design/EditableText/control/connect.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/design/EditableText/control/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/control/connect.tsx",
"module": "./src/apollo-builder/design/EditableText/control/connect.tsx",
"moduleName": "./src/apollo-builder/design/EditableText/control/connect.tsx",
"type": "harmony import",
"userRequest": "./component",
"loc": "4:0-39"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 9,
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport * as React from 'react';\r\nimport styled from '../../../utils/styled';\r\nimport * as PropTypes from 'prop-types';\r\nvar TextEditWrapper = (_a = [\"\\n input::-ms-clear {\\n display: none;\\n }\\n\"], _a.raw = [\"\\n input::-ms-clear {\\n display: none;\\n }\\n\"], styled.div(_a));\r\nvar TextEditInput = (_b = [\"\\n outline: none;\\n border: none;\\n padding: 0;\\n border: \", \";\\n box-sizing: border-box;\\n background-color: transparent;\\n position: absolute;\\n top: 0;\\n left: 0;\\n\"], _b.raw = [\"\\n outline: none;\\n border: none;\\n padding: 0;\\n border: \", \";\\n box-sizing: border-box;\\n background-color: transparent;\\n position: absolute;\\n top: 0;\\n left: 0;\\n\"], styled.input(_b, function (props) { return props.theme.controlElementSelectedBorder; }));\r\n/**\r\n * Provides some styles for the unselected control component in the control layer: mouseover effects, etc.\r\n */\r\nvar UnselectedControlComponent = (_c = [\"\\n cursor: pointer;\\n box-sizing: border-box;\\n &:hover {\\n border: \", \";\\n }\\n\"], _c.raw = [\"\\n cursor: pointer;\\n box-sizing: border-box;\\n &:hover {\\n border: \", \";\\n }\\n\"], styled.div(_c, function (props) { return props.theme.controlElementHoverBorder; }));\r\nvar InputShadow = (_d = [\"\\n visibility: hidden;\\n height: 0;\\n white-space: pre;\\n overflow: scroll;\\n\"], _d.raw = [\"\\n visibility: hidden;\\n height: 0;\\n white-space: pre;\\n overflow: scroll;\\n\"], styled.span(_d));\r\nvar emojiIconRanges = \"(?:[\\u2700-\\u27BF]|(?:\\uD83C[\\uDDE6-\\uDDFF]){2}|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[#-9]\\uFE0F?\\u20E3|\\n\\u3299|\\u3297|\\u303D|\\u3030|\\u24C2|\\uD83C[\\uDD70-\\uDD71]|\\uD83C[\\uDD7E-\\uDD7F]|\\uD83C\\uDD8E|\\uD83C[\\uDD91-\\uDD9A]|\\uD83C[\\uDDE6-\\uDDFF]|\\n[\\uD83C[\\uDE01-\\uDE02]|\\uD83C\\uDE1A|\\uD83C\\uDE2F|[\\uD83C[\\uDE32-\\uDE3A]|[\\uD83C[\\uDE50-\\uDE51]|\\u203C|\\u2049|[\\u25AA-\\u25AB]|\\u25B6|\\u25C0|\\n[\\u25FB-\\u25FE]|\\u00A9|\\u00AE|\\u2122|\\u2139|\\uD83C\\uDC04|[\\u2600-\\u26FF]|\\u2B05|\\u2B06|\\u2B07|\\u2B1B|\\u2B1C|\\u2B50|\\u2B55|\\u231A|\\u231B|\\n\\u2328|\\u23CF|[\\u23E9-\\u23F3]|[\\u23F8-\\u23FA]|\\uD83C\\uDCCF|\\u2934|\\u2935|[\\u2190-\\u21FF])\";\r\n/**\r\n * The control component for editable text field. Unlike the design layer which can be transformed (scale/rotate) as a\r\n * single unit, we apply transformations individually to each control component to ensure the controls / styles aren't\r\n * affected.\r\n */\r\nvar EditableTextControl = (function (_super) {\r\n __extends(EditableTextControl, _super);\r\n function EditableTextControl() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.adjustFontSize = function (inputSize) {\r\n var factor = _this.props.fontSize > 50 ? 10 : 15;\r\n if ((inputSize >= _this.props.size.width) && _this.props.fontSize > 24) {\r\n _this.props.changeFontSize(Math.max(_this.props.fontSize\r\n - Math.floor(_this.props.fontSize / factor), 24));\r\n }\r\n };\r\n return _this;\r\n }\r\n EditableTextControl.prototype.componentDidMount = function () {\r\n var _this = this;\r\n if (this.context.focusControl) {\r\n this.subscription = this.context.focusControl.subscribe(function () {\r\n if (_this.inputField) {\r\n _this.inputField.focus();\r\n }\r\n });\r\n }\r\n };\r\n EditableTextControl.prototype.componentDidUpdate = function () {\r\n var inputShadowWidth = this.inputShadowElement ? this.inputShadowElement.getBoundingClientRect().width : 0;\r\n if (inputShadowWidth > this.props.size.width) {\r\n this.adjustFontSize(inputShadowWidth);\r\n }\r\n };\r\n EditableTextControl.prototype.componentWillUnmount = function () {\r\n this.inputField = undefined;\r\n this.inputShadowElement = undefined;\r\n if (this.subscription !== undefined) {\r\n this.subscription.unsubscribe();\r\n }\r\n };\r\n EditableTextControl.prototype.selectText = function (element) {\r\n if (!this.props.text) {\r\n element.setSelectionRange(0, element.value.length);\r\n }\r\n };\r\n EditableTextControl.prototype.pruneText = function (text) {\r\n // stripping out any emoji characters\r\n return text.replace(new RegExp(emojiIconRanges, 'g'), '');\r\n };\r\n EditableTextControl.prototype.render = function () {\r\n var _this = this;\r\n var _a = this.props, editing = _a.editing, size = _a.size, alignment = _a.alignment, fontFamily = _a.fontFamily, fontSize = _a.fontSize, color = _a.color, onFocusChange = _a.onFocusChange, text = _a.text, placeholder = _a.placeholder, designToScreenRatio = _a.designToScreenRatio, onSelecting = _a.onSelecting, changeText = _a.changeText;\r\n if (editing) {\r\n return (React.createElement(TextEditWrapper, null,\r\n React.createElement(TextEditInput, { type: \"text\", innerRef: function (input) { _this.inputField = input; }, style: {\r\n width: size.width * designToScreenRatio,\r\n height: size.height * designToScreenRatio,\r\n textAlign: alignment,\r\n fontFamily: fontFamily,\r\n fontSize: fontSize * designToScreenRatio,\r\n color: color,\r\n lineHeight: (size.height * designToScreenRatio) + 'px'\r\n }, onChange: function (e) { return changeText(_this.pruneText(e.currentTarget.value)); }, onFocus: function () { return onFocusChange && onFocusChange(true); }, onBlur: function () { return onFocusChange && onFocusChange(false); }, onMouseDown: onSelecting, onMouseUp: function (e) { return _this.selectText(e.currentTarget); }, value: text === undefined ? placeholder : text, autoFocus: true }),\r\n React.createElement(InputShadow, { style: {\r\n fontFamily: fontFamily,\r\n fontSize: fontSize + 'px',\r\n textAlign: alignment\r\n }, innerRef: function (inputShadowElement) { _this.inputShadowElement = inputShadowElement; } }, this.props.text)));\r\n }\r\n return (React.createElement(UnselectedControlComponent, { style: {\r\n width: size.width * designToScreenRatio,\r\n height: size.height * designToScreenRatio\r\n }, onMouseDown: onSelecting }));\r\n };\r\n return EditableTextControl;\r\n}(React.Component));\r\nEditableTextControl.contextTypes = { focusControl: PropTypes.object };\r\nexport default EditableTextControl;\r\nvar _a, _b, _c, _d;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/control/component.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/control/component.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/design/EditableText/control/connect.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/control/connect.tsx",
"name": "./src/apollo-builder/design/EditableText/control/connect.tsx",
"index": 708,
"index2": 703,
"size": 1664,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/control/connect.tsx",
"issuerId": "./src/apollo-builder/design/Element/control/connect.tsx",
"issuerName": "./src/apollo-builder/design/Element/control/connect.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/design/Element/control/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/control/connect.tsx",
"module": "./src/apollo-builder/design/Element/control/connect.tsx",
"moduleName": "./src/apollo-builder/design/Element/control/connect.tsx",
"type": "harmony import",
"userRequest": "../../EditableText/control/connect",
"loc": "19:0-69"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 8,
"source": "import * as React from 'react';\r\nimport connect from '../../../utils/connect';\r\nimport Text from '../../Text/connect';\r\nimport EditableText from './component';\r\nexport default connect(EditableText)(function (model, props) { return ({\r\n alignment: model.textModel.alignment,\r\n changeText: model.changeText,\r\n children: React.createElement(Text, { model: model.textModel }),\r\n color: model.textModel.color,\r\n editing: model.isEditing,\r\n fontFamily: model.textModel.fontFamily,\r\n fontSize: model.textModel.fontSize,\r\n size: model.container.size,\r\n text: model.textModel.text,\r\n placeholder: model.textModel.placeholder,\r\n focusControl: props.focusControl,\r\n onFocusChange: props.onFocusChange,\r\n designToScreenRatio: props.designToScreenRatio,\r\n onSelecting: model.selectionController.requestSelection,\r\n changeFontSize: model.changeFontSize\r\n}); });\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/control/connect.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/control/connect.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/design/EditableText/model.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/model.tsx",
"name": "./src/apollo-builder/design/EditableText/model.tsx",
"index": 675,
"index2": 670,
"size": 4856,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/models.tsx",
"issuerId": "./src/apollo-builder/design/models.tsx",
"issuerName": "./src/apollo-builder/design/models.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/design/models.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/models.tsx",
"module": "./src/apollo-builder/design/models.tsx",
"moduleName": "./src/apollo-builder/design/models.tsx",
"type": "harmony import",
"userRequest": "./EditableText/model",
"loc": "7:0-68"
}, {
"moduleId": "./src/apollo-builder/design/Spread/model.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/model.tsx",
"module": "./src/apollo-builder/design/Spread/model.tsx",
"moduleName": "./src/apollo-builder/design/Spread/model.tsx",
"type": "harmony import",
"userRequest": "../EditableText/model",
"loc": "20:0-49"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 7,
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\n/* Role: Defines the base element's model as a common extension point */\r\nimport { action, computed } from 'mobx';\r\nimport ElementModel from '../Element/model';\r\nimport { createActionSink, undoableAction } from '../../core/actionStack';\r\nvar EditableTextModel = (function (_super) {\r\n __extends(EditableTextModel, _super);\r\n function EditableTextModel(container, selectionController, textModel) {\r\n var _this = _super.call(this) || this;\r\n _this.container = container;\r\n _this.selectionController = selectionController;\r\n _this.textModel = textModel;\r\n _this.actionSink = createActionSink();\r\n return _this;\r\n }\r\n Object.defineProperty(EditableTextModel.prototype, \"isEditing\", {\r\n get: function () {\r\n return this.selectionController.selected;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n EditableTextModel.prototype.getActionSources = function () {\r\n return [this.actionSink, this.textModel];\r\n };\r\n EditableTextModel.prototype.changeText = function (newText) {\r\n this.actionSink(EditableTextModel.changeTextAction.create(this, { newText: newText, oldText: this.textModel.text }));\r\n };\r\n EditableTextModel.prototype.changeAlignment = function (newAlignment) {\r\n var _this = this;\r\n var oldAlignment = this.textModel.alignment;\r\n this.actionSink(function () { return _this.textModel.alignment = newAlignment; }, function () { return _this.textModel.alignment = oldAlignment; });\r\n };\r\n // We need to define what font size units we'll use\r\n EditableTextModel.prototype.changeFontSize = function (newFontSize) {\r\n var _this = this;\r\n var oldFontSize = this.textModel.fontSize;\r\n this.actionSink(function () { return _this.textModel.fontSize = newFontSize; }, function () { return _this.textModel.fontSize = oldFontSize; });\r\n };\r\n EditableTextModel.prototype.changeColor = function (newColor) {\r\n this.textModel.color = newColor;\r\n };\r\n return EditableTextModel;\r\n}(ElementModel));\r\nEditableTextModel.changeTextAction = undoableAction({\r\n invoke: function (_a) {\r\n var newText = _a.newText;\r\n this.textModel.text = newText;\r\n },\r\n revoke: function (_a) {\r\n var oldText = _a.oldText;\r\n this.textModel.text = oldText;\r\n },\r\n reduceSameActionAndModel: function (_a, _b) {\r\n var newText = _a.newText;\r\n var oldText = _b.oldText;\r\n return { newText: newText, oldText: oldText };\r\n }\r\n});\r\n__decorate([\r\n computed\r\n], EditableTextModel.prototype, \"isEditing\", null);\r\n__decorate([\r\n action.bound\r\n], EditableTextModel.prototype, \"changeText\", null);\r\n__decorate([\r\n action.bound\r\n], EditableTextModel.prototype, \"changeAlignment\", null);\r\n__decorate([\r\n action.bound\r\n], EditableTextModel.prototype, \"changeFontSize\", null);\r\n__decorate([\r\n action.bound\r\n], EditableTextModel.prototype, \"changeColor\", null);\r\nexport default EditableTextModel;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/model.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/model.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/design/Element/connect.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/connect.tsx",
"name": "./src/apollo-builder/design/Element/connect.tsx",
"index": 695,
"index2": 697,
"size": 3171,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/connect.tsx",
"issuerId": "./src/apollo-builder/design/Spread/connect.tsx",
"issuerName": "./src/apollo-builder/design/Spread/connect.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/design/Spread/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/connect.tsx",
"module": "./src/apollo-builder/design/Spread/connect.tsx",
"moduleName": "./src/apollo-builder/design/Spread/connect.tsx",
"type": "harmony import",
"userRequest": "../Element/connect",
"loc": "4:0-41"
}, {
"moduleId": "./src/apollo-builder/design/connects.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/connects.tsx",
"module": "./src/apollo-builder/design/connects.tsx",
"moduleName": "./src/apollo-builder/design/connects.tsx",
"type": "harmony import",
"userRequest": "./Element/connect",
"loc": "2:0-55"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 6,
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\n/* Role: Defines the base element that all elements derive from */\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { EditableText, Image, Position, Text } from '../connects';\r\nimport { EditableTextModel, ImageModel, PositionModel, TextModel } from '../models';\r\nvar Element = Element_1 = (function (_super) {\r\n __extends(Element, _super);\r\n function Element() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Element.prototype.render = function () {\r\n var model = this.props.model;\r\n if (model instanceof PositionModel) {\r\n return React.createElement(Position, { model: model },\r\n React.createElement(Element_1, { model: model.element }));\r\n }\r\n if (model instanceof TextModel) {\r\n return React.createElement(Text, { model: model });\r\n }\r\n if (model instanceof ImageModel) {\r\n return React.createElement(Image, { model: model });\r\n }\r\n if (model instanceof EditableTextModel) {\r\n return React.createElement(EditableText, { model: model });\r\n }\r\n throw new Error('Unknown element');\r\n };\r\n return Element;\r\n}(React.Component));\r\nElement = Element_1 = __decorate([\r\n observer\r\n], Element);\r\nexport default Element;\r\nvar Element_1;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/connect.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/connect.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/design/Element/control/connect.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/control/connect.tsx",
"name": "./src/apollo-builder/design/Element/control/connect.tsx",
"index": 707,
"index2": 705,
"size": 3338,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/control/connect.tsx",
"issuerId": "./src/apollo-builder/design/Spread/control/connect.tsx",
"issuerName": "./src/apollo-builder/design/Spread/control/connect.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/design/Spread/control/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/control/connect.tsx",
"module": "./src/apollo-builder/design/Spread/control/connect.tsx",
"moduleName": "./src/apollo-builder/design/Spread/control/connect.tsx",
"type": "harmony import",
"userRequest": "../../Element/control/connect",
"loc": "4:0-59"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 7,
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport ControlEditableText from '../../EditableText/control/connect';\r\nimport { EditableTextModel, ImageModel, PositionModel } from '../../models';\r\nimport Position from '../../../ui/Position';\r\nvar ControlElement = ControlElement_1 = (function (_super) {\r\n __extends(ControlElement, _super);\r\n function ControlElement() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ControlElement.prototype.render = function () {\r\n var _a = this.props, model = _a.model, designToScreenRatio = _a.designToScreenRatio;\r\n if (model instanceof PositionModel) {\r\n return (React.createElement(Position, { left: model.position.left * designToScreenRatio, top: model.position.top * designToScreenRatio },\r\n React.createElement(ControlElement_1, { model: model.element, designToScreenRatio: designToScreenRatio })));\r\n }\r\n if (model instanceof ImageModel) {\r\n // return image editing component\r\n }\r\n if (model instanceof EditableTextModel) {\r\n return (React.createElement(ControlEditableText, { model: model, designToScreenRatio: designToScreenRatio }));\r\n }\r\n throw new Error('Unknown element');\r\n };\r\n return ControlElement;\r\n}(React.Component));\r\nControlElement = ControlElement_1 = __decorate([\r\n observer\r\n], ControlElement);\r\nexport default ControlElement;\r\nvar ControlElement_1;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/control/connect.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/control/connect.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/design/Element/model.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/model.tsx",
"name": "./src/apollo-builder/design/Element/model.tsx",
"index": 670,
"index2": 664,
"size": 1662,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/models.tsx",
"issuerId": "./src/apollo-builder/design/models.tsx",
"issuerName": "./src/apollo-builder/design/models.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/design/models.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/models.tsx",
"module": "./src/apollo-builder/design/models.tsx",
"moduleName": "./src/apollo-builder/design/models.tsx",
"type": "harmony import",
"userRequest": "./Element/model",
"loc": "2:0-58"
}, {
"moduleId": "./src/apollo-builder/design/Image/model.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Image/model.tsx",
"module": "./src/apollo-builder/design/Image/model.tsx",
"moduleName": "./src/apollo-builder/design/Image/model.tsx",
"type": "harmony import",
"userRequest": "../Element/model",
"loc": "19:0-44"
}, {
"moduleId": "./src/apollo-builder/design/Position/model.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Position/model.tsx",
"module": "./src/apollo-builder/design/Position/model.tsx",
"moduleName": "./src/apollo-builder/design/Position/model.tsx",
"type": "harmony import",
"userRequest": "../Element/model",
"loc": "19:0-44"
}, {
"moduleId": "./src/apollo-builder/design/Text/model.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Text/model.tsx",
"module": "./src/apollo-builder/design/Text/model.tsx",
"moduleName": "./src/apollo-builder/design/Text/model.tsx",
"type": "harmony import",
"userRequest": "../Element/model",
"loc": "19:0-44"
}, {
"moduleId": "./src/apollo-builder/design/EditableText/model.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/model.tsx",
"module": "./src/apollo-builder/design/EditableText/model.tsx",
"moduleName": "./src/apollo-builder/design/EditableText/model.tsx",
"type": "harmony import",
"userRequest": "../Element/model",
"loc": "19:0-44"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 7,
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { ActionSourcesBase } from '../../core/actionStack/ActionSource';\r\n/* Role: Defines the base element's model as a common extension point */\r\nvar ElementModel = (function (_super) {\r\n __extends(ElementModel, _super);\r\n function ElementModel() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n return ElementModel;\r\n}(ActionSourcesBase));\r\nexport default ElementModel;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/model.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/model.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/design/Image/component.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Image/component.tsx",
"name": "./src/apollo-builder/design/Image/component.tsx",
"index": 698,
"index2": 688,
"size": 1055,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Image/connect.tsx",
"issuerId": "./src/apollo-builder/design/Image/connect.tsx",
"issuerName": "./src/apollo-builder/design/Image/connect.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/design/Image/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Image/connect.tsx",
"module": "./src/apollo-builder/design/Image/connect.tsx",
"moduleName": "./src/apollo-builder/design/Image/connect.tsx",
"type": "harmony import",
"userRequest": "./component",
"loc": "3:0-32"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 9,
"source": "/* Role: Defines the Image component */\r\nimport * as React from 'react';\r\nexport default function (props) {\r\n return React.createElement(\"div\", { style: {\r\n backgroundImage: \"url(\" + props.src + \")\",\r\n width: props.size.width,\r\n height: props.size.height\r\n } });\r\n};\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Image/component.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Image/component.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/design/Image/connect.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Image/connect.tsx",
"name": "./src/apollo-builder/design/Image/connect.tsx",
"index": 697,
"index2": 689,
"size": 998,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/connects.tsx",
"issuerId": "./src/apollo-builder/design/connects.tsx",
"issuerName": "./src/apollo-builder/design/connects.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/design/connects.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/connects.tsx",
"module": "./src/apollo-builder/design/connects.tsx",
"moduleName": "./src/apollo-builder/design/connects.tsx",
"type": "harmony import",
"userRequest": "./Image/connect",
"loc": "3:0-51"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 8,
"source": "/* Role: Connects the Image component with it's model */\r\nimport connect from '../../utils/connect';\r\nimport Image from './component';\r\nexport default connect(Image)(function (model) { return ({\r\n src: model.src,\r\n size: model.container.size\r\n}); });\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Image/connect.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Image/connect.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/design/Image/model.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Image/model.tsx",
"name": "./src/apollo-builder/design/Image/model.tsx",
"index": 672,
"index2": 665,
"size": 2351,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/models.tsx",
"issuerId": "./src/apollo-builder/design/models.tsx",
"issuerName": "./src/apollo-builder/design/models.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/design/models.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/models.tsx",
"module": "./src/apollo-builder/design/models.tsx",
"moduleName": "./src/apollo-builder/design/models.tsx",
"type": "harmony import",
"userRequest": "./Image/model",
"loc": "3:0-54"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 7,
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\n/* Role: Defines the Image component's model */\r\nimport { observable } from 'mobx';\r\nimport ElementModel from '../Element/model';\r\nvar ImageModel = (function (_super) {\r\n __extends(ImageModel, _super);\r\n function ImageModel(container, src) {\r\n var _this = _super.call(this) || this;\r\n _this.container = container;\r\n _this.src = src;\r\n return _this;\r\n }\r\n return ImageModel;\r\n}(ElementModel));\r\n__decorate([\r\n observable\r\n], ImageModel.prototype, \"src\", void 0);\r\nexport default ImageModel;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Image/model.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Image/model.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/design/Position/component.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Position/component.tsx",
"name": "./src/apollo-builder/design/Position/component.tsx",
"index": 700,
"index2": 690,
"size": 1039,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Position/connect.tsx",
"issuerId": "./src/apollo-builder/design/Position/connect.tsx",
"issuerName": "./src/apollo-builder/design/Position/connect.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/design/Position/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Position/connect.tsx",
"module": "./src/apollo-builder/design/Position/connect.tsx",
"moduleName": "./src/apollo-builder/design/Position/connect.tsx",
"type": "harmony import",
"userRequest": "./component",
"loc": "3:0-35"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 9,
"source": "/* Role: Defines the Position component */\r\nimport * as React from 'react';\r\nexport default function (props) { return (React.createElement(\"div\", { style: {\r\n position: 'absolute',\r\n left: props.position.left,\r\n top: props.position.top\r\n } }, props.children)); };\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Position/component.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Position/component.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/design/Position/connect.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Position/connect.tsx",
"name": "./src/apollo-builder/design/Position/connect.tsx",
"index": 699,
"index2": 691,
"size": 1106,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/connects.tsx",
"issuerId": "./src/apollo-builder/design/connects.tsx",
"issuerName": "./src/apollo-builder/design/connects.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/design/connects.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/connects.tsx",
"module": "./src/apollo-builder/design/connects.tsx",
"moduleName": "./src/apollo-builder/design/connects.tsx",
"type": "harmony import",
"userRequest": "./Position/connect",
"loc": "4:0-57"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 8,
"source": "/* Role: Connects the Position component with its model */\r\nimport connect from '../../utils/connect';\r\nimport Position from './component';\r\nexport default connect(Position)(function (model, _a) {\r\n var children = _a.children;\r\n return ({\r\n position: model.position,\r\n size: model.container.size,\r\n children: children\r\n });\r\n});\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Position/connect.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Position/connect.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/design/Position/model.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Position/model.tsx",
"name": "./src/apollo-builder/design/Position/model.tsx",
"index": 673,
"index2": 666,
"size": 2689,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/models.tsx",
"issuerId": "./src/apollo-builder/design/models.tsx",
"issuerName": "./src/apollo-builder/design/models.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/design/models.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/models.tsx",
"module": "./src/apollo-builder/design/models.tsx",
"moduleName": "./src/apollo-builder/design/models.tsx",
"type": "harmony import",
"userRequest": "./Position/model",
"loc": "4:0-60"
}, {
"moduleId": "./src/apollo-builder/design/Spread/model.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/model.tsx",
"module": "./src/apollo-builder/design/Spread/model.tsx",
"moduleName": "./src/apollo-builder/design/Spread/model.tsx",
"type": "harmony import",
"userRequest": "../Position/model",
"loc": "19:0-41"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 7,
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\n/* Role: Defines the model for the Position components along with logic for modifying the position based upon events */\r\nimport { observable } from 'mobx';\r\nimport ElementModel from '../Element/model';\r\nvar PositionModel = (function (_super) {\r\n __extends(PositionModel, _super);\r\n function PositionModel(position, container, element) {\r\n var _this = _super.call(this) || this;\r\n _this.position = position;\r\n _this.container = container;\r\n _this.element = element;\r\n return _this;\r\n }\r\n PositionModel.prototype.getActionSources = function () {\r\n return this.element;\r\n };\r\n return PositionModel;\r\n}(ElementModel));\r\n__decorate([\r\n observable\r\n], PositionModel.prototype, \"position\", void 0);\r\n__decorate([\r\n observable\r\n], PositionModel.prototype, \"element\", void 0);\r\nexport default PositionModel;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Position/model.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Position/model.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/design/Spread/component.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/component.tsx",
"name": "./src/apollo-builder/design/Spread/component.tsx",
"index": 705,
"index2": 698,
"size": 2118,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/connect.tsx",
"issuerId": "./src/apollo-builder/design/Spread/connect.tsx",
"issuerName": "./src/apollo-builder/design/Spread/connect.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/design/Spread/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/connect.tsx",
"module": "./src/apollo-builder/design/Spread/connect.tsx",
"moduleName": "./src/apollo-builder/design/Spread/connect.tsx",
"type": "harmony import",
"userRequest": "./component",
"loc": "5:0-33"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 6,
"source": "/**\r\n * Role: Provides a visual respresentation of the boundaries of a design spread\r\n */\r\nimport * as React from 'react';\r\nimport styled from '../../utils/styled';\r\nvar SpreadStyles = (_a = [\"\\n position: absolute;\\n box-shadow: \", \";\\n background: \", \";\\n background-position: center center;\\n background-size: 105% 105%;\\n\"], _a.raw = [\"\\n position: absolute;\\n box-shadow: \", \";\\n background: \",\r\n \";\\n background-position: center center;\\n background-size: 105% 105%;\\n\"], styled.div(_a, function (props) { return props.theme.spreadShadow; }, function (props) { return props.bgUrl.length > 0\r\n ? 'url(' + props.bgUrl + ')' : props.bgColor; }));\r\nvar DesignSpread = function (props) {\r\n var designWidth = props.size.width;\r\n var designHeight = props.size.height;\r\n var screenLeft = props.origin.x;\r\n var screenTop = props.origin.y;\r\n return React.createElement(SpreadStyles, { bgColor: props.backgroundColor, bgUrl: (props.backgroundUrl !== undefined) ? props.backgroundUrl : '', style: {\r\n left: screenLeft,\r\n top: screenTop,\r\n width: designWidth,\r\n height: designHeight,\r\n transform: \"scale(\" + props.designToScreenRatio + \")\",\r\n transformOrigin: 'top left'\r\n } }, props.children);\r\n};\r\nexport default DesignSpread;\r\nvar _a;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/component.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/component.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/design/Spread/connect.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/connect.tsx",
"name": "./src/apollo-builder/design/Spread/connect.tsx",
"index": 694,
"index2": 699,
"size": 1362,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/connect.tsx",
"issuerId": "./src/apollo-builder/layout/Preview/connect.tsx",
"issuerName": "./src/apollo-builder/layout/Preview/connect.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/layout/Preview/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/connect.tsx",
"module": "./src/apollo-builder/layout/Preview/connect.tsx",
"moduleName": "./src/apollo-builder/layout/Preview/connect.tsx",
"type": "harmony import",
"userRequest": "../../design/Spread/connect",
"loc": "4:0-49"
}, {
"moduleId": "./src/apollo-builder/layout/Canvas/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Canvas/connect.tsx",
"module": "./src/apollo-builder/layout/Canvas/connect.tsx",
"moduleName": "./src/apollo-builder/layout/Canvas/connect.tsx",
"type": "harmony import",
"userRequest": "../../design/Spread/connect",
"loc": "4:0-49"
}, {
"moduleId": "./src/apollo-builder/design/connects.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/connects.tsx",
"module": "./src/apollo-builder/design/connects.tsx",
"moduleName": "./src/apollo-builder/design/connects.tsx",
"type": "harmony import",
"userRequest": "./Spread/connect",
"loc": "5:0-53"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 5,
"source": "/* Role: Connects the Canvas component with the mobx model */\r\nimport * as React from 'react';\r\nimport connect from '../../utils/connect';\r\nimport Element from '../Element/connect';\r\nimport Spread from './component';\r\nexport default connect(Spread)(function (model, props) { return ({\r\n size: model.size,\r\n backgroundColor: props.backgroundColor,\r\n backgroundUrl: props.backgroundUrl,\r\n origin: props.origin,\r\n designToScreenRatio: props.designToScreenRatio,\r\n children: model.elements.map(function (elementModel, i) { return React.createElement(Element, { model: elementModel, key: i }); })\r\n}); });\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/connect.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/connect.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/design/Spread/control/component.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/control/component.tsx",
"name": "./src/apollo-builder/design/Spread/control/component.tsx",
"index": 713,
"index2": 706,
"size": 1563,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/control/connect.tsx",
"issuerId": "./src/apollo-builder/design/Spread/control/connect.tsx",
"issuerName": "./src/apollo-builder/design/Spread/control/connect.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/design/Spread/control/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/control/connect.tsx",
"module": "./src/apollo-builder/design/Spread/control/connect.tsx",
"moduleName": "./src/apollo-builder/design/Spread/control/connect.tsx",
"type": "harmony import",
"userRequest": "./component",
"loc": "5:0-33"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 7,
"source": "/**\r\n * Role: Provides a visual respresentation of the boundaries of a design spread\r\n */\r\nimport * as React from 'react';\r\nimport styled from '../../../utils/styled';\r\nvar SpreadStyles = (_a = [\"\\n position: absolute;\\n\"], _a.raw = [\"\\n position: absolute;\\n\"], styled.div(_a));\r\nvar ControlSpread = function (props) {\r\n var designWidth = props.size.width * props.designToScreenRatio;\r\n var designHeight = props.size.height * props.designToScreenRatio;\r\n var screenLeft = props.origin.x;\r\n var screenTop = props.origin.y;\r\n return React.createElement(SpreadStyles, { style: {\r\n left: screenLeft,\r\n top: screenTop,\r\n width: designWidth,\r\n height: designHeight\r\n } }, props.children);\r\n};\r\nexport default ControlSpread;\r\nvar _a;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/control/component.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/control/component.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/design/Spread/control/connect.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/control/connect.tsx",
"name": "./src/apollo-builder/design/Spread/control/connect.tsx",
"index": 706,
"index2": 707,
"size": 1407,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Canvas/connect.tsx",
"issuerId": "./src/apollo-builder/layout/Canvas/connect.tsx",
"issuerName": "./src/apollo-builder/layout/Canvas/connect.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/layout/Canvas/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Canvas/connect.tsx",
"module": "./src/apollo-builder/layout/Canvas/connect.tsx",
"moduleName": "./src/apollo-builder/layout/Canvas/connect.tsx",
"type": "harmony import",
"userRequest": "../../design/Spread/control/connect",
"loc": "5:0-65"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 6,
"source": "/* Role: Connects the Canvas component with the mobx model */\r\nimport * as React from 'react';\r\nimport connect from '../../../utils/connect';\r\nimport ElementControl from '../../Element/control/connect';\r\nimport Spread from './component';\r\nexport default connect(Spread)(function (model, props) { return ({\r\n size: model.size,\r\n backgroundColor: 'transparent',\r\n origin: props.origin,\r\n designToScreenRatio: props.designToScreenRatio,\r\n children: model.elements.map(function (elementModel, i) { return (React.createElement(ElementControl, { key: i, model: elementModel, designToScreenRatio: props.designToScreenRatio })); })\r\n}); });\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/control/connect.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/control/connect.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/design/Spread/model.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/model.tsx",
"name": "./src/apollo-builder/design/Spread/model.tsx",
"index": 674,
"index2": 671,
"size": 4475,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/models.tsx",
"issuerId": "./src/apollo-builder/design/models.tsx",
"issuerName": "./src/apollo-builder/design/models.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/design/models.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/models.tsx",
"module": "./src/apollo-builder/design/models.tsx",
"moduleName": "./src/apollo-builder/design/models.tsx",
"type": "harmony import",
"userRequest": "./Spread/model",
"loc": "5:0-56"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 7,
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\n/* Role: Definition of state and actions used by the canvas */\r\nimport { observable, computed, action } from 'mobx';\r\nimport Position from '../Position/model';\r\nimport EditableText from '../EditableText/model';\r\nimport { ActionSourcesBase } from '../../core/actionStack/ActionSource';\r\nvar SpreadModel = (function (_super) {\r\n __extends(SpreadModel, _super);\r\n function SpreadModel(size) {\r\n var _this = _super.call(this) || this;\r\n _this.elements = [];\r\n _this.size = size;\r\n return _this;\r\n }\r\n SpreadModel.prototype.getActionSources = function () {\r\n return this.elements;\r\n };\r\n SpreadModel.prototype.addElement = function (element) {\r\n this.elements.push(element);\r\n };\r\n Object.defineProperty(SpreadModel.prototype, \"textColor\", {\r\n set: function (color) {\r\n this.editableTextElements(this.elements)\r\n .forEach(function (element) {\r\n element.textModel.setColor(color);\r\n });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SpreadModel.prototype, \"hasTextSelections\", {\r\n get: function () {\r\n return this.textSelections.some(function (e) { return e.selectionController.selected; });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SpreadModel.prototype, \"textSelections\", {\r\n get: function () {\r\n return this.editableTextElements(this.elements).filter(function (e) { return e.selectionController.selected; });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n SpreadModel.prototype.selectDefaultText = function () {\r\n var textElements = this.editableTextElements(this.elements);\r\n if (textElements && textElements.length > 0) {\r\n textElements[0].selectionController.requestSelection();\r\n }\r\n };\r\n SpreadModel.prototype.editableTextElements = function (elements) {\r\n return elements.filter(function (e) { return e instanceof Position && e.element instanceof EditableText; }).map(function (e) { return e.element; });\r\n };\r\n return SpreadModel;\r\n}(ActionSourcesBase));\r\nexport default SpreadModel;\r\n__decorate([\r\n observable\r\n], SpreadModel.prototype, \"size\", void 0);\r\n__decorate([\r\n observable\r\n], SpreadModel.prototype, \"elements\", void 0);\r\n__decorate([\r\n computed\r\n], SpreadModel.prototype, \"hasTextSelections\", null);\r\n__decorate([\r\n computed\r\n], SpreadModel.prototype, \"textSelections\", null);\r\n__decorate([\r\n action.bound\r\n], SpreadModel.prototype, \"selectDefaultText\", null);\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/model.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/model.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/design/Text/component.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Text/component.tsx",
"name": "./src/apollo-builder/design/Text/component.tsx",
"index": 702,
"index2": 692,
"size": 1596,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Text/connect.tsx",
"issuerId": "./src/apollo-builder/design/Text/connect.tsx",
"issuerName": "./src/apollo-builder/design/Text/connect.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/design/Text/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Text/connect.tsx",
"module": "./src/apollo-builder/design/Text/connect.tsx",
"moduleName": "./src/apollo-builder/design/Text/connect.tsx",
"type": "harmony import",
"userRequest": "./component",
"loc": "3:0-31"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 9,
"source": "/* Role: a stub for adding an editable text field to the (html) canvas. Right now it just outputs a blob of text. */\r\nimport * as React from 'react';\r\nimport styled from '../../utils/styled';\r\nvar StyledDiv = (_a = [\"\\n border: none;\\n padding: 0;\\n white-space: pre;\\n\"], _a.raw = [\"\\n border: none;\\n padding: 0;\\n white-space: pre;\\n\"], styled.div(_a));\r\nvar Text = function (props) {\r\n return React.createElement(StyledDiv, { style: {\r\n textAlign: props.alignment,\r\n width: props.size.width,\r\n height: props.size.height,\r\n fontFamily: props.fontFamily,\r\n fontSize: props.fontSize,\r\n lineHeight: props.size.height + 'px',\r\n color: props.color\r\n } }, props.text === undefined ? props.placeholder : props.text);\r\n};\r\nexport default Text;\r\nvar _a;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Text/component.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Text/component.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/design/Text/connect.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Text/connect.tsx",
"name": "./src/apollo-builder/design/Text/connect.tsx",
"index": 701,
"index2": 693,
"size": 1160,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/connects.tsx",
"issuerId": "./src/apollo-builder/design/connects.tsx",
"issuerName": "./src/apollo-builder/design/connects.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/design/connects.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/connects.tsx",
"module": "./src/apollo-builder/design/connects.tsx",
"moduleName": "./src/apollo-builder/design/connects.tsx",
"type": "harmony import",
"userRequest": "./Text/connect",
"loc": "6:0-49"
}, {
"moduleId": "./src/apollo-builder/design/EditableText/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/connect.tsx",
"module": "./src/apollo-builder/design/EditableText/connect.tsx",
"moduleName": "./src/apollo-builder/design/EditableText/connect.tsx",
"type": "harmony import",
"userRequest": "../Text/connect",
"loc": "3:0-35"
}, {
"moduleId": "./src/apollo-builder/design/EditableText/control/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/control/connect.tsx",
"module": "./src/apollo-builder/design/EditableText/control/connect.tsx",
"moduleName": "./src/apollo-builder/design/EditableText/control/connect.tsx",
"type": "harmony import",
"userRequest": "../../Text/connect",
"loc": "3:0-38"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 8,
"source": "/* Role: Connects the Rectangle component with its state */\r\nimport connect from '../../utils/connect';\r\nimport Text from './component';\r\nexport default connect(Text)(function (model) { return ({\r\n color: model.color,\r\n size: model.container.size,\r\n text: model.text,\r\n placeholder: model.placeholder,\r\n alignment: model.alignment,\r\n fontFamily: model.fontFamily,\r\n fontSize: model.fontSize\r\n}); });\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Text/connect.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Text/connect.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/design/Text/model.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Text/model.tsx",
"name": "./src/apollo-builder/design/Text/model.tsx",
"index": 679,
"index2": 672,
"size": 3229,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/models.tsx",
"issuerId": "./src/apollo-builder/design/models.tsx",
"issuerName": "./src/apollo-builder/design/models.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/design/models.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/models.tsx",
"module": "./src/apollo-builder/design/models.tsx",
"moduleName": "./src/apollo-builder/design/models.tsx",
"type": "harmony import",
"userRequest": "./Text/model",
"loc": "6:0-52"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 7,
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\n/* Role: Defined the state model and action for the Rectangle component */\r\nimport { observable, action } from 'mobx';\r\nimport ElementModel from '../Element/model';\r\nvar TextModel = (function (_super) {\r\n __extends(TextModel, _super);\r\n function TextModel(options, container) {\r\n var _this = _super.call(this) || this;\r\n _this.container = container;\r\n _this.placeholder = options.placeholder || '';\r\n _this.text = options.text || undefined;\r\n _this.color = options.color || '#000000';\r\n _this.alignment = options.alignment || 'left';\r\n _this.fontSize = options.fontSize || 30;\r\n _this.fontFamily = options.fontFamily || 'Arial';\r\n return _this;\r\n }\r\n TextModel.prototype.setColor = function (color) {\r\n this.color = color;\r\n };\r\n return TextModel;\r\n}(ElementModel));\r\n__decorate([\r\n observable\r\n], TextModel.prototype, \"placeholder\", void 0);\r\n__decorate([\r\n observable\r\n], TextModel.prototype, \"text\", void 0);\r\n__decorate([\r\n observable\r\n], TextModel.prototype, \"color\", void 0);\r\n__decorate([\r\n observable\r\n], TextModel.prototype, \"alignment\", void 0);\r\n__decorate([\r\n observable\r\n], TextModel.prototype, \"fontSize\", void 0);\r\n__decorate([\r\n observable\r\n], TextModel.prototype, \"fontFamily\", void 0);\r\n__decorate([\r\n action.bound\r\n], TextModel.prototype, \"setColor\", null);\r\nexport default TextModel;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Text/model.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Text/model.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/design/connects.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/connects.tsx",
"name": "./src/apollo-builder/design/connects.tsx",
"index": 696,
"index2": 696,
"size": 1119,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/connect.tsx",
"issuerId": "./src/apollo-builder/design/Element/connect.tsx",
"issuerName": "./src/apollo-builder/design/Element/connect.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/design/Element/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/connect.tsx",
"module": "./src/apollo-builder/design/Element/connect.tsx",
"moduleName": "./src/apollo-builder/design/Element/connect.tsx",
"type": "harmony import",
"userRequest": "../connects",
"loc": "20:0-66"
}],
"usedExports": ["Position", "Text", "Image", "EditableText"],
"providedExports": ["Element", "Image", "Position", "Spread", "Text", "EditableText"],
"depth": 7,
"source": "/* Role: Aggregates all connect components */\r\nexport { default as Element } from './Element/connect';\r\nexport { default as Image } from './Image/connect';\r\nexport { default as Position } from './Position/connect';\r\nexport { default as Spread } from './Spread/connect';\r\nexport { default as Text } from './Text/connect';\r\nexport { default as EditableText } from './EditableText/connect';\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/connects.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/connects.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/design/models.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/models.tsx",
"name": "./src/apollo-builder/design/models.tsx",
"index": 669,
"index2": 673,
"size": 1149,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts",
"issuerId": "./src/apollo-builder/layout/Workspace/model.ts",
"issuerName": "./src/apollo-builder/layout/Workspace/model.ts",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/layout/Workspace/model.ts",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts",
"module": "./src/apollo-builder/layout/Workspace/model.ts",
"moduleName": "./src/apollo-builder/layout/Workspace/model.ts",
"type": "harmony import",
"userRequest": "../../design/models",
"loc": "25:0-95"
}, {
"moduleId": "./src/apollo-builder/design/Element/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/connect.tsx",
"module": "./src/apollo-builder/design/Element/connect.tsx",
"moduleName": "./src/apollo-builder/design/Element/connect.tsx",
"type": "harmony import",
"userRequest": "../models",
"loc": "21:0-84"
}, {
"moduleId": "./src/apollo-builder/design/Element/control/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/control/connect.tsx",
"module": "./src/apollo-builder/design/Element/control/connect.tsx",
"moduleName": "./src/apollo-builder/design/Element/control/connect.tsx",
"type": "harmony import",
"userRequest": "../../models",
"loc": "20:0-76"
}],
"usedExports": ["PositionModel", "TextModel", "ImageModel", "EditableTextModel", "SpreadModel"],
"providedExports": ["ElementModel", "ImageModel", "PositionModel", "SpreadModel", "TextModel", "EditableTextModel"],
"depth": 6,
"source": "/* Role: Aggregates all the component models in the system */\r\nexport { default as ElementModel } from './Element/model';\r\nexport { default as ImageModel } from './Image/model';\r\nexport { default as PositionModel } from './Position/model';\r\nexport { default as SpreadModel } from './Spread/model';\r\nexport { default as TextModel } from './Text/model';\r\nexport { default as EditableTextModel } from './EditableText/model';\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/models.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/models.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/layout/Canvas/component.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Canvas/component.tsx",
"name": "./src/apollo-builder/layout/Canvas/component.tsx",
"index": 693,
"index2": 687,
"size": 1031,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Canvas/connect.tsx",
"issuerId": "./src/apollo-builder/layout/Canvas/connect.tsx",
"issuerName": "./src/apollo-builder/layout/Canvas/connect.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/layout/Canvas/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Canvas/connect.tsx",
"module": "./src/apollo-builder/layout/Canvas/connect.tsx",
"moduleName": "./src/apollo-builder/layout/Canvas/connect.tsx",
"type": "harmony import",
"userRequest": "./component",
"loc": "3:0-33"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 6,
"source": "import * as React from 'react';\r\nvar Canvas = function (props) { return (React.createElement(\"div\", { style: { height: '100%' }, onMouseDownCapture: props.startSelecting, onMouseDown: props.endSelecting },\r\n props.designLayer,\r\n props.controlLayer)); };\r\nexport default Canvas;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Canvas/component.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Canvas/component.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/layout/Canvas/connect.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Canvas/connect.tsx",
"name": "./src/apollo-builder/layout/Canvas/connect.tsx",
"index": 692,
"index2": 708,
"size": 1571,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/connect.tsx",
"issuerId": "./src/apollo-builder/layout/Workspace/connect.tsx",
"issuerName": "./src/apollo-builder/layout/Workspace/connect.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/layout/Workspace/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/connect.tsx",
"module": "./src/apollo-builder/layout/Workspace/connect.tsx",
"moduleName": "./src/apollo-builder/layout/Workspace/connect.tsx",
"type": "harmony import",
"userRequest": "../Canvas/connect",
"loc": "5:0-39"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 5,
"source": "import * as React from 'react';\r\nimport connect from '../../utils/connect';\r\nimport Canvas from './component';\r\nimport Spread from '../../design/Spread/connect';\r\nimport SpreadControls from '../../design/Spread/control/connect';\r\nexport default connect(Canvas)(function (model) { return ({\r\n startSelecting: model.startSelecting,\r\n endSelecting: model.endSelecting,\r\n designLayer: (React.createElement(Spread, { model: model.selectedSpread, origin: model.spreadPosition, designToScreenRatio: model.designToScreenRatio, backgroundColor: model.backgroundColor, backgroundUrl: (model.backgroundUrl !== undefined) ? model.backgroundUrl : '' })),\r\n controlLayer: (React.createElement(SpreadControls, { model: model.selectedSpread, origin: model.spreadPosition, designToScreenRatio: model.designToScreenRatio }))\r\n}); });\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Canvas/connect.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Canvas/connect.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/layout/ControlPanel/ColorPlatePanel/component.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/ColorPlatePanel/component.tsx",
"name": "./src/apollo-builder/layout/ControlPanel/ColorPlatePanel/component.tsx",
"index": 737,
"index2": 732,
"size": 1319,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx",
"issuerId": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"issuerName": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx",
"module": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"moduleName": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"type": "harmony import",
"userRequest": "./ColorPlatePanel/component",
"loc": "4:0-58"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 6,
"source": "import * as React from 'react';\r\nimport Plate from '../../../ui/Plates/Plate';\r\nvar ColorPlatePanel = function (props) {\r\n return (React.createElement(\"div\", null, props.plates.map(function (plate, index) { return (React.createElement(Plate, { key: index, bgColor: plate.bgColor, textColor: plate.textColor, bgThumb: plate.bgThumb !== undefined ? plate.bgThumb : '', selected: index === props.selectedPlateIndex, onSelectPlate: function () { return props.selectPlate(index); } })); })));\r\n};\r\nexport default ColorPlatePanel;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/ColorPlatePanel/component.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/ColorPlatePanel/component.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/layout/ControlPanel/TextMenuPanel/component.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/TextMenuPanel/component.tsx",
"name": "./src/apollo-builder/layout/ControlPanel/TextMenuPanel/component.tsx",
"index": 743,
"index2": 737,
"size": 3866,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/TextMenuPanel/connect.tsx",
"issuerId": "./src/apollo-builder/layout/ControlPanel/TextMenuPanel/connect.tsx",
"issuerName": "./src/apollo-builder/layout/ControlPanel/TextMenuPanel/connect.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/layout/ControlPanel/TextMenuPanel/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/TextMenuPanel/connect.tsx",
"module": "./src/apollo-builder/layout/ControlPanel/TextMenuPanel/connect.tsx",
"moduleName": "./src/apollo-builder/layout/ControlPanel/TextMenuPanel/connect.tsx",
"type": "harmony import",
"userRequest": "./component",
"loc": "2:0-40"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 7,
"source": "/** Role: Text Menu Component */\r\nimport * as React from 'react';\r\nimport styled from '../../../utils/styled';\r\nimport ControlPanelButton from '../../../ui/buttons/ControlPanelButton';\r\nimport Flex from '../../../ui/Flex';\r\nimport TooltipSlider from '../../../ui/TooltipSlider';\r\nimport Label from '../../../ui/Slider/Label';\r\nimport slideIn from '../../../ui/animation/slideIn';\r\nimport slideOut from '../../../ui/animation/slideOut';\r\nvar TextMenuPanel = (_a = [\"\\n background-color: \", \";\\n padding: 5px 10px 10px 0;\\n min-height: 100px;\\n width: 164px;\\n position: absolute;\\n border-radius: 5px;\\n text-align: center;\\n z-index: 1;\\n &>div{\\n padding-top: 10px;\\n }\\n\\n &.mount-enter-active{\\n opacity: 1;\\n animation: \", \" 0.25s \", \";\\n }\\n\\n &.mount-leave-active{\\n opacity: 0;\\n animation: \", \" 0.25s \", \";\\n }\\n\"], _a.raw = [\"\\n background-color: \", \";\\n padding: 5px 10px 10px 0;\\n min-height: 100px;\\n width: 164px;\\n position: absolute;\\n border-radius: 5px;\\n text-align: center;\\n z-index: 1;\\n &>div{\\n padding-top: 10px;\\n }\\n\\n &.mount-enter-active{\\n opacity: 1;\\n animation: \", \" 0.25s \", \";\\n }\\n\\n &.mount-leave-active{\\n opacity: 0;\\n animation: \", \" 0.25s \", \";\\n }\\n\"], styled.div(_a, function (props) { return props.theme.controlPanelBackground; }, slideIn, function (props) { return props.theme.defaultTimingFunc; }, slideOut, function (props) { return props.theme.defaultTimingFunc; }));\r\nvar TextAlignmentWrapper = (_b = [\"\\n position:relative;\\n left: -2px;\\n max-width: 100px;\\n margin: auto;\\n div:nth-of-type(1){\\n background-position: left;\\n }\\n div:nth-of-type(3){\\n background-position: right;\\n }\\n\"], _b.raw = [\"\\n position:relative;\\n left: -2px;\\n max-width: 100px;\\n margin: auto;\\n div:nth-of-type(1){\\n background-position: left;\\n }\\n div:nth-of-type(3){\\n background-position: right;\\n }\\n\"], styled(Flex)(_b));\r\nvar TextMenu = function (props) { return (React.createElement(TextMenuPanel, null,\r\n React.createElement(TooltipSlider, { min: 24, max: 100, value: props.fontSize, onChange: props.onFontSizeChange, width: 100, leftLabel: React.createElement(Label, { size: 9 }, \"A\"), rightLabel: React.createElement(Label, { size: 18 }, \"A\") }),\r\n React.createElement(TextAlignmentWrapper, { row: true },\r\n React.createElement(ControlPanelButton, { onClick: function () { return props.onAlignmentChange('left'); }, iconKey: \"left-align\", isActive: props.alignment === 'left' }),\r\n React.createElement(ControlPanelButton, { onClick: function () { return props.onAlignmentChange('center'); }, iconKey: \"center-align\", isActive: props.alignment === 'center' }),\r\n React.createElement(ControlPanelButton, { onClick: function () { return props.onAlignmentChange('right'); }, iconKey: \"right-align\", isActive: props.alignment === 'right' })))); };\r\nexport default TextMenu;\r\nvar _a, _b;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/TextMenuPanel/component.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/TextMenuPanel/component.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/layout/ControlPanel/TextMenuPanel/connect.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/TextMenuPanel/connect.tsx",
"name": "./src/apollo-builder/layout/ControlPanel/TextMenuPanel/connect.tsx",
"index": 742,
"index2": 738,
"size": 1123,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx",
"issuerId": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"issuerName": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx",
"module": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"moduleName": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"type": "harmony import",
"userRequest": "./TextMenuPanel/connect",
"loc": "8:0-52"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 6,
"source": "import connect from '../../../utils/connect';\r\nimport TextMenuPanel from './component';\r\nexport default connect(TextMenuPanel)(function (model) { return ({\r\n alignment: model.textModel.alignment,\r\n fontSize: model.textModel.fontSize,\r\n onAlignmentChange: model.changeAlignment,\r\n onFontSizeChange: model.changeFontSize\r\n}); });\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/TextMenuPanel/connect.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/TextMenuPanel/connect.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/layout/ControlPanel/component.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/component.tsx",
"name": "./src/apollo-builder/layout/ControlPanel/component.tsx",
"index": 739,
"index2": 733,
"size": 1211,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx",
"issuerId": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"issuerName": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx",
"module": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"moduleName": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"type": "harmony import",
"userRequest": "./component",
"loc": "6:0-39"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 6,
"source": "/* Role: Defines the ControlPanel component */\r\nimport * as React from 'react';\r\nimport Flex from '../../ui/Flex';\r\nvar ControlPanel = function (_a) {\r\n var children = _a.children;\r\n return (React.createElement(Flex, { column: true },\r\n React.createElement(Flex, null, React.Children.map(children, function (child) {\r\n return React.createElement(Flex, { column: true }, child);\r\n }))));\r\n};\r\nexport default ControlPanel;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/component.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/component.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx",
"name": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"index": 714,
"index2": 739,
"size": 2729,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/connect.tsx",
"issuerId": "./src/apollo-builder/layout/Workspace/connect.tsx",
"issuerName": "./src/apollo-builder/layout/Workspace/connect.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/layout/Workspace/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/connect.tsx",
"module": "./src/apollo-builder/layout/Workspace/connect.tsx",
"moduleName": "./src/apollo-builder/layout/Workspace/connect.tsx",
"type": "harmony import",
"userRequest": "../ControlPanel/connect",
"loc": "6:0-51"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 5,
"source": "import * as React from 'react';\r\nimport ControlPanelMenu from '../../ui/ControlPanelMenu';\r\nimport ScrollablePanel from '../../ui/ScrollablePanel';\r\nimport ColorPlatePanel from './ColorPlatePanel/component';\r\nimport connect from '../../utils/connect';\r\nimport ControlPanel from './component';\r\nimport ControlPanelButtons from '../../ui/buttons/ControlPanelButtonWrapper';\r\nimport TextMenuPanel from './TextMenuPanel/connect';\r\nimport { ControlPanelButtonType } from './model';\r\nvar getSelectedPanel = function (model) {\r\n var selectedPanel;\r\n var controlPanelModel = model.controlPanel;\r\n switch (controlPanelModel.selectedPanel) {\r\n case ControlPanelButtonType.Text:\r\n if (controlPanelModel.selectedTextModel) {\r\n selectedPanel = React.createElement(TextMenuPanel, { key: \"textmenu\", model: controlPanelModel.selectedTextModel });\r\n }\r\n else {\r\n selectedPanel = null;\r\n }\r\n break;\r\n case ControlPanelButtonType.Plate:\r\n selectedPanel = (React.createElement(ScrollablePanel, { key: \"ScrollablePanel\" },\r\n React.createElement(ColorPlatePanel, { plates: model.plates, selectedPlateIndex: model.selectedPlateIndex, selectPlate: model.selectPlate })));\r\n break;\r\n default:\r\n selectedPanel = React.createElement(\"div\", null);\r\n }\r\n return selectedPanel;\r\n};\r\nexport default connect(ControlPanel)(function (model, _a) {\r\n var children = _a.children;\r\n return ({\r\n children: [\r\n React.createElement(ControlPanelButtons, { key: \"controlPanelButtons\", selected: model.controlPanel.selectedPanel, selectTextPanel: model.controlPanel.selectTextPanel, selectPlatePanel: model.controlPanel.selectPlatePanel }),\r\n React.createElement(ControlPanelMenu, { key: \"controlPanelMenu\", isPanelOpen: model.controlPanel.selectedPanel !== 0 }, getSelectedPanel(model))\r\n ]\r\n });\r\n});\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/layout/ControlPanel/model.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/model.tsx",
"name": "./src/apollo-builder/layout/ControlPanel/model.tsx",
"index": 680,
"index2": 674,
"size": 4578,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts",
"issuerId": "./src/apollo-builder/layout/Workspace/model.ts",
"issuerName": "./src/apollo-builder/layout/Workspace/model.ts",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/layout/Workspace/model.ts",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts",
"module": "./src/apollo-builder/layout/Workspace/model.ts",
"moduleName": "./src/apollo-builder/layout/Workspace/model.ts",
"type": "harmony import",
"userRequest": "../../layout/ControlPanel/model",
"loc": "26:0-59"
}, {
"moduleId": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx",
"module": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"moduleName": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"type": "harmony import",
"userRequest": "./model",
"loc": "9:0-49"
}, {
"moduleId": "./src/apollo-builder/ui/buttons/ControlPanelButtonWrapper.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/buttons/ControlPanelButtonWrapper.tsx",
"module": "./src/apollo-builder/ui/buttons/ControlPanelButtonWrapper.tsx",
"moduleName": "./src/apollo-builder/ui/buttons/ControlPanelButtonWrapper.tsx",
"type": "harmony import",
"userRequest": "../../layout/ControlPanel/model",
"loc": "5:0-73"
}],
"usedExports": ["ControlPanelButtonType", "default"],
"providedExports": ["ControlPanelButtonType", "default"],
"depth": 6,
"source": "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nimport { action, computed, observable, autorun } from 'mobx';\r\nexport var ControlPanelButtonType;\r\n(function (ControlPanelButtonType) {\r\n ControlPanelButtonType[ControlPanelButtonType[\"None\"] = 0] = \"None\";\r\n ControlPanelButtonType[ControlPanelButtonType[\"Text\"] = 1] = \"Text\";\r\n ControlPanelButtonType[ControlPanelButtonType[\"Plate\"] = 2] = \"Plate\";\r\n})(ControlPanelButtonType || (ControlPanelButtonType = {}));\r\nvar ControlPanelModel = (function () {\r\n function ControlPanelModel(workspace) {\r\n var _this = this;\r\n this.workspace = workspace;\r\n this.manuallySelectedPanel = ControlPanelButtonType.None;\r\n autorun(function () {\r\n if (_this.selectedPanel === ControlPanelButtonType.Text) {\r\n _this.manuallySelectedPanel = ControlPanelButtonType.None;\r\n }\r\n // close any open panels when a click event is received from the canvas\r\n _this.workspace.deselect$\r\n .subscribe(_this.deselectPanels);\r\n });\r\n }\r\n Object.defineProperty(ControlPanelModel.prototype, \"selectedPanel\", {\r\n get: function () {\r\n return (this.workspace.hasTextSelections) ? ControlPanelButtonType.Text : this.manuallySelectedPanel;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns the current selected control panel button. Business logic:\r\n * - clicking on a single button hides/shows that section\r\n * - clicking ON a text element in the page shows the text menu\r\n * - clicking OFF a text element in the page unselected\r\n */\r\n ControlPanelModel.prototype.selectTextPanel = function () {\r\n if (this.selectedPanel !== ControlPanelButtonType.Text) {\r\n this.workspace.selectDefaultText();\r\n }\r\n else {\r\n this.workspace.deselect();\r\n this.manuallySelectedPanel = ControlPanelButtonType.None;\r\n }\r\n };\r\n ControlPanelModel.prototype.selectPlatePanel = function () {\r\n this.workspace.deselect();\r\n this.manuallySelectedPanel = (this.selectedPanel === ControlPanelButtonType.None) ? ControlPanelButtonType.Plate : ControlPanelButtonType.None;\r\n };\r\n ControlPanelModel.prototype.deselectPanels = function () {\r\n this.manuallySelectedPanel = ControlPanelButtonType.None;\r\n };\r\n Object.defineProperty(ControlPanelModel.prototype, \"selectedTextModel\", {\r\n get: function () {\r\n var textSelection = this.workspace.textSelections;\r\n return textSelection[0];\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ControlPanelModel;\r\n}());\r\nexport default ControlPanelModel;\r\n__decorate([\r\n observable\r\n], ControlPanelModel.prototype, \"manuallySelectedPanel\", void 0);\r\n__decorate([\r\n computed\r\n], ControlPanelModel.prototype, \"selectedPanel\", null);\r\n__decorate([\r\n action.bound\r\n], ControlPanelModel.prototype, \"selectTextPanel\", null);\r\n__decorate([\r\n action.bound\r\n], ControlPanelModel.prototype, \"selectPlatePanel\", null);\r\n__decorate([\r\n action.bound\r\n], ControlPanelModel.prototype, \"deselectPanels\", null);\r\n__decorate([\r\n computed\r\n], ControlPanelModel.prototype, \"selectedTextModel\", null);\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/model.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/model.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/layout/Preview/component.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/component.tsx",
"name": "./src/apollo-builder/layout/Preview/component.tsx",
"index": 753,
"index2": 749,
"size": 6912,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/connect.tsx",
"issuerId": "./src/apollo-builder/layout/Preview/connect.tsx",
"issuerName": "./src/apollo-builder/layout/Preview/connect.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/layout/Preview/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/connect.tsx",
"module": "./src/apollo-builder/layout/Preview/connect.tsx",
"moduleName": "./src/apollo-builder/layout/Preview/connect.tsx",
"type": "harmony import",
"userRequest": "./component",
"loc": "3:0-34"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 5,
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\n/* Role: Defines the ControlPanel component */\r\nimport * as React from 'react';\r\nimport styled, { keyframes, withTheme } from '../../utils/styled';\r\nimport ResponsiveContainer from '../../ui/ResponsiveContainer';\r\nimport { CSSTransitionGroup } from 'react-transition-group';\r\nimport fadeIn from '../../ui/animation/fadeIn';\r\nimport fadeOut from '../../ui/animation/fadeOut';\r\nvar previewEnter = (_a = [\"\\n 0%{\\n margin-top: 40px;\\n }\\n 100%{\\n margin-top:0;\\n }\\n\"], _a.raw = [\"\\n 0%{\\n margin-top: 40px;\\n }\\n 100%{\\n margin-top:0;\\n }\\n\"], keyframes(_a));\r\nvar previewLeave = (_b = [\"\\n 0%{\\n margin-top: 0;\\n }\\n 100%{\\n margin-top:40px;\\n }\\n\"], _b.raw = [\"\\n 0%{\\n margin-top: 0;\\n }\\n 100%{\\n margin-top:40px;\\n }\\n\"], keyframes(_b));\r\nvar PreviewWrapper = (_c = [\"\\n height: 100%;\\n width: 100%;\\n top: 0;\\n left: 0;\\n background-color: rgba(0, 0, 0, 0.75);\\n position: absolute;\\n z-index: 2;\\n cursor: pointer;\\n\\n &.preview-enter{\\n animation: \", \" 0.35s \", \";\\n &>div:nth-of-type(2)>div{\\n animation: \", \" 0.35s \", \";\\n }\\n\\n }\\n &.preview-leave{\\n animation: \", \" 0.35s \", \";\\n opacity: 0;\\n &>div:nth-of-type(2)>div{\\n animation: \", \" 0.35s \", \";\\n }\\n }\\n\"], _c.raw = [\"\\n height: 100%;\\n width: 100%;\\n top: 0;\\n left: 0;\\n background-color: rgba(0, 0, 0, 0.75);\\n position: absolute;\\n z-index: 2;\\n cursor: pointer;\\n\\n &.preview-enter{\\n animation: \", \" 0.35s \", \";\\n &>div:nth-of-type(2)>div{\\n animation: \", \" 0.35s \", \";\\n }\\n\\n }\\n &.preview-leave{\\n animation: \", \" 0.35s \", \";\\n opacity: 0;\\n &>div:nth-of-type(2)>div{\\n animation: \", \" 0.35s \", \";\\n }\\n }\\n\"], styled.div(_c, fadeIn, function (props) { return props.theme.defaultTimingFunc; }, previewEnter, function (props) { return props.theme.defaultTimingFunc; }, fadeOut, function (props) { return props.theme.defaultTimingFunc; }, previewLeave, function (props) { return props.theme.defaultTimingFunc; }));\r\nvar ClosePreview = (_d = [\"\\n height: 100px;\\n width: 100px;\\n color: #FFF;\\n background: transparent;\\n font-size: 48px;\\n position: absolute;\\n top: 0;\\n right:0;\\n outline: none;\\n appearance: none;\\n border: none;\\n cursor: pointer;\\n font-family: \\\"Arial Narrow\\\", Arial, sans-serif;\\n font-weight: 100;\\n\"], _d.raw = [\"\\n height: 100px;\\n width: 100px;\\n color: #FFF;\\n background: transparent;\\n font-size: 48px;\\n position: absolute;\\n top: 0;\\n right:0;\\n outline: none;\\n appearance: none;\\n border: none;\\n cursor: pointer;\\n font-family: \\\"Arial Narrow\\\", Arial, sans-serif;\\n font-weight: 100;\\n\"], styled.button(_d));\r\nvar PreviewBackground = (_e = [\"\\n display: flex;\\n width: 100%;\\n height: 100%;\\n top: 0;\\n left: 0;\\n position: absolute;\\n\"], _e.raw = [\"\\n display: flex;\\n width: 100%;\\n height: 100%;\\n top: 0;\\n left: 0;\\n position: absolute;\\n\"], styled.div(_e));\r\nvar Preview = (function (_super) {\r\n __extends(Preview, _super);\r\n function Preview() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.handleKeyPress = function (event) {\r\n if (event.key === 'Escape') {\r\n _this.props.closePreview();\r\n }\r\n };\r\n return _this;\r\n }\r\n Preview.prototype.componentDidUpdate = function () {\r\n if (this.divElement) {\r\n this.divElement.focus();\r\n }\r\n };\r\n Preview.prototype.render = function () {\r\n var _this = this;\r\n var _a = this.props, getSpread = _a.getSpread, closePreview = _a.closePreview, isPreviewMode = _a.isPreviewMode, spreadSize = _a.spreadSize;\r\n return (React.createElement(ResponsiveContainer, { getChildren: function (size) {\r\n size = size || { width: 0, height: 0 };\r\n var horizontalScale = (size.width - (_this.props.theme.previewHorizontalOffset * 2)) / spreadSize.width;\r\n var verticalScale = (size.height * 2) / spreadSize.height;\r\n var previewToScreenRatio = Math.min(horizontalScale, verticalScale);\r\n var previewSpreadPosition = {\r\n x: _this.props.theme.previewHorizontalOffset,\r\n y: (size.height / 2) - ((spreadSize.height * previewToScreenRatio) / 2)\r\n };\r\n return React.createElement(\"div\", { style: { width: '100%', height: '100%', position: 'absolute', top: 0, left: 0 } },\r\n React.createElement(CSSTransitionGroup, { transitionName: \"preview\", transitionEnterTimeout: 350, transitionLeaveTimeout: 350 }, isPreviewMode\r\n ?\r\n React.createElement(PreviewWrapper, null,\r\n React.createElement(PreviewBackground, { tabIndex: 0, onClick: closePreview, onKeyDown: _this.handleKeyPress, innerRef: function (element) { return _this.divElement = element; } }),\r\n React.createElement(ClosePreview, { onClick: closePreview }, \"X\"),\r\n React.createElement(\"div\", { tabIndex: 0, onKeyDown: _this.handleKeyPress }, getSpread(previewToScreenRatio, previewSpreadPosition)))\r\n : null));\r\n } }));\r\n };\r\n return Preview;\r\n}(React.Component));\r\nexport default withTheme(Preview);\r\nvar _a, _b, _c, _d, _e;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/component.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/component.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/layout/Preview/connect.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/connect.tsx",
"name": "./src/apollo-builder/layout/Preview/connect.tsx",
"index": 752,
"index2": 750,
"size": 1397,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx",
"issuerId": "./src/apollo-builder/app.tsx",
"issuerName": "./src/apollo-builder/app.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/app.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx",
"module": "./src/apollo-builder/app.tsx",
"moduleName": "./src/apollo-builder/app.tsx",
"type": "harmony import",
"userRequest": "./layout/Preview/connect",
"loc": "25:0-47"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 4,
"source": "import * as React from 'react';\r\nimport connect from '../../utils/connect';\r\nimport Preview from './component';\r\nimport Spread from '../../design/Spread/connect';\r\nexport default connect(Preview)(function (model) { return ({\r\n spreadSize: model.selectedSpread.size,\r\n getSpread: function (ratio, position) {\r\n return React.createElement(Spread, { backgroundColor: model.backgroundColor, backgroundUrl: (model.backgroundUrl !== undefined) ? model.backgroundUrl : '', designToScreenRatio: ratio, origin: position, model: model.selectedSpread });\r\n },\r\n isPreviewMode: model.isPreviewMode,\r\n closePreview: model.hidePreview\r\n}); });\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/connect.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/connect.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/layout/Workspace/component.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/component.tsx",
"name": "./src/apollo-builder/layout/Workspace/component.tsx",
"index": 684,
"index2": 681,
"size": 2668,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/connect.tsx",
"issuerId": "./src/apollo-builder/layout/Workspace/connect.tsx",
"issuerName": "./src/apollo-builder/layout/Workspace/connect.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/layout/Workspace/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/connect.tsx",
"module": "./src/apollo-builder/layout/Workspace/connect.tsx",
"moduleName": "./src/apollo-builder/layout/Workspace/connect.tsx",
"type": "harmony import",
"userRequest": "./component",
"loc": "2:0-36"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 5,
"source": "import * as React from 'react';\r\nimport styled from '../../utils/styled';\r\nimport Footer from '../../ui/footer';\r\nimport MeasureContainer from '../../ui/MeasureContainer';\r\nimport { withTheme } from '../../utils/styled';\r\nvar MeasureContainerChildWrapper = (_a = [\"\\n height: 100%;\\n left: 0;\\n position: absolute;\\n top: 0;\\n width: 100%;\\n z-index:1;\\n\"], _a.raw = [\"\\n height: 100%;\\n left: 0;\\n position: absolute;\\n top: 0;\\n width: 100%;\\n z-index:1;\\n\"], styled.div(_a));\r\nvar ContinueButtonWrapper = (_b = [\"\\n position: absolute;\\n right: 60px;\\n margin-left: 40px;\\n top: calc(50% - 20px);\\n z-index: 2;\\n\"], _b.raw = [\"\\n position: absolute;\\n right: 60px;\\n margin-left: 40px;\\n top: calc(50% - 20px);\\n z-index: 2;\\n\"], styled.div(_b));\r\nvar ControlPanelWrapper = (_c = [\"\\n color: \", \";\\n padding: 10px;\\n border-radius: 4px 0 0 4px;\\n position: absolute;\\n left: 20px;\\n top: 123px;\\n z-index: 2;\\n\"], _c.raw = [\"\\n color: \", \";\\n padding: 10px;\\n border-radius: 4px 0 0 4px;\\n position: absolute;\\n left: 20px;\\n top: 123px;\\n z-index: 2;\\n\"], styled.div(_c, function (props) { return props.theme.defaultFontColor; }));\r\nvar Workspace = function (props) { return (React.createElement(MeasureContainer, { measureRequest: props.measureSizeRequest, onSizeChanged: function (size) { return props.onSizeChanged(size, {\r\n width: props.theme.spreadHorizontalOffset,\r\n height: props.theme.spreadVerticalOffset\r\n }); } },\r\n React.createElement(MeasureContainerChildWrapper, null,\r\n React.createElement(ControlPanelWrapper, null, props.controlPanel),\r\n props.canvas,\r\n React.createElement(ContinueButtonWrapper, null, props.continueButton),\r\n React.createElement(Footer, null, props.footer)))); };\r\nexport default withTheme(Workspace);\r\nvar _a, _b, _c;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/component.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/component.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/layout/Workspace/connect.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/connect.tsx",
"name": "./src/apollo-builder/layout/Workspace/connect.tsx",
"index": 683,
"index2": 742,
"size": 1647,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx",
"issuerId": "./src/apollo-builder/app.tsx",
"issuerName": "./src/apollo-builder/app.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/app.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx",
"module": "./src/apollo-builder/app.tsx",
"moduleName": "./src/apollo-builder/app.tsx",
"type": "harmony import",
"userRequest": "./layout/Workspace/connect",
"loc": "19:0-51"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 4,
"source": "import * as React from 'react';\r\nimport Workspace from './component';\r\nimport TooltipSlider from '../../ui/TooltipSlider';\r\nimport connect from '../../utils/connect';\r\nimport Canvas from '../Canvas/connect';\r\nimport ControlPanel from '../ControlPanel/connect';\r\nimport ContinueButton from '../../ui/buttons/ContinueButton';\r\nexport default connect(Workspace)(function (model) { return ({\r\n measureSizeRequest: model.scaleSpreadToFitRequest,\r\n onSizeChanged: model.scaleSpreadToContainer,\r\n controlPanel: (React.createElement(ControlPanel, { model: model })),\r\n continueButton: (React.createElement(ContinueButton, null)),\r\n canvas: (React.createElement(Canvas, { model: model })),\r\n footer: (React.createElement(TooltipSlider, { min: 30, max: 400, value: model.designToScreenRatio * 100, onChange: model.setDesignToScreenRatio, width: 207, showNav: true, suffix: \"%\" }))\r\n}); });\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/connect.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/connect.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/layout/Workspace/model.ts",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts",
"name": "./src/apollo-builder/layout/Workspace/model.ts",
"index": 664,
"index2": 676,
"size": 17097,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/builder/model.tsx",
"issuerId": "./src/apollo-builder/core/builder/model.tsx",
"issuerName": "./src/apollo-builder/core/builder/model.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/core/builder/model.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/builder/model.tsx",
"module": "./src/apollo-builder/core/builder/model.tsx",
"moduleName": "./src/apollo-builder/core/builder/model.tsx",
"type": "harmony import",
"userRequest": "../../layout/Workspace/model",
"loc": "9:0-53"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 5,
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\n/* Role: the main workspace model */\r\nimport { action, computed, observable } from 'mobx';\r\nimport { Subject } from 'rxjs/Subject';\r\nimport { Observable } from 'rxjs';\r\nimport { from } from 'rxjs/observable/from';\r\nimport { toStream } from 'mobx-utils/lib/mobx-utils';\r\nimport { actionStream } from '../../common/action-stream';\r\nimport { Container } from '../../common/container';\r\nimport { EditableTextModel, PositionModel, SpreadModel, TextModel } from '../../design/models';\r\nimport ControlPanel from '../../layout/ControlPanel/model';\r\nimport ActionStackController from '../../core/actionStack/ActionStackController';\r\nimport { ActionSourcesBase } from '../../core/actionStack/ActionSource';\r\nimport { createActionSink } from '../../core/actionStack/ActionSink';\r\nvar Workspace = (function (_super) {\r\n __extends(Workspace, _super);\r\n function Workspace(project, configuration) {\r\n var _this = _super.call(this) || this;\r\n _this.configuration = configuration;\r\n /**\r\n * Toggle preview functionality\r\n */\r\n _this.isPreviewMode = false;\r\n // selectction/deselection handlers\r\n _this.spreadPosition = { x: 0, y: 0 };\r\n _this.designToScreenRatio = 1;\r\n // the selected plate (determines background color and text color)\r\n _this.selectedPlateIndex = 0;\r\n // these belong in the *product*, but for now we'll stash them here\r\n _this.plates = [\r\n { bgColor: '#ffffff', textColor: '#333333' },\r\n {\r\n bgColor: 'transparent',\r\n textColor: '#000000',\r\n bgUrl: 'src/apollo-builder/assets/mocks/plates/bg/[email protected]',\r\n bgThumb: 'src/apollo-builder/assets/mocks/plates/thumb/s-12.png'\r\n },\r\n {\r\n bgColor: 'transparent',\r\n textColor: '#ffffff',\r\n bgUrl: 'src/apollo-builder/assets/mocks/plates/bg/wood.png',\r\n bgThumb: 'src/apollo-builder/assets/mocks/plates/thumb/s-5.png'\r\n },\r\n {\r\n bgColor: 'transparent',\r\n textColor: '#000000',\r\n bgUrl: 'src/apollo-builder/assets/mocks/plates/bg/[email protected]',\r\n bgThumb: 'src/apollo-builder/assets/mocks/plates/thumb/s-8.png'\r\n },\r\n {\r\n bgColor: 'transparent',\r\n textColor: '#000000',\r\n bgUrl: 'src/apollo-builder/assets/mocks/plates/bg/[email protected]',\r\n bgThumb: 'src/apollo-builder/assets/mocks/plates/thumb/s-37.png'\r\n },\r\n {\r\n bgColor: 'transparent',\r\n textColor: '#b2975b',\r\n bgUrl: 'src/apollo-builder/assets/mocks/plates/bg/marble.png',\r\n bgThumb: 'src/apollo-builder/assets/mocks/plates/thumb/s-34.png'\r\n },\r\n { bgColor: '#233A6A', textColor: '#ffffff' },\r\n { bgColor: '#ffffff', textColor: '#233A6A' },\r\n { bgColor: '#ffffff', textColor: '#BC1622' },\r\n { bgColor: '#EBE131', textColor: '#000000' },\r\n { bgColor: '#00a900', textColor: '#ffffff' },\r\n { bgColor: '#0099cc', textColor: '#ffffff' },\r\n { bgColor: '#233A6A', textColor: '#ffffff' },\r\n { bgColor: '#ffffff', textColor: '#233A6A' },\r\n { bgColor: '#ffffff', textColor: '#BC1622' },\r\n { bgColor: '#452717', textColor: '#ffffff' },\r\n { bgColor: '#BC1622', textColor: '#333333' },\r\n { bgColor: '#000000', textColor: '#ffffff' },\r\n { bgColor: '#EBE131', textColor: '#000000' },\r\n { bgColor: '#00a900', textColor: '#ffffff' }\r\n ];\r\n _this.status = undefined;\r\n _this.startSelecting = actionStream();\r\n _this.endSelecting = actionStream();\r\n _this.deselect$ = from(_this.startSelecting)\r\n .switchMap(function () { return from(_this.endSelecting)\r\n .takeUntil(_this.selectRequest$); });\r\n _this.scaleSpreadToFitSubject = new Subject();\r\n _this.selectRequest$ = new Subject();\r\n _this.selectedId = undefined;\r\n _this.nextId = 0;\r\n _this.actionStackController = new ActionStackController();\r\n _this.actionSink = createActionSink();\r\n // filter the stream of all available fonts from the host and load only (the 'normal' font face of) the default fonts\r\n _this.fontsLoadRequest$ = Observable.from(toStream(function () { return _this.defaultFonts; }))\r\n .startWith(_this.defaultFonts)\r\n .switchMap(function (fonts) { return _this.configuration.host.font.all$\r\n .switchMap(function (allFonts) { return Observable.from(allFonts.filter(function (f) { return fonts.indexOf(f.fontFamilyName) >= 0; })); })\r\n .mergeMap(function (f) { return f.normal; })\r\n .filter(function (ff) { return !!ff; })\r\n .mergeMap(function (ff) { return ff.load(); }); });\r\n _this.project = project;\r\n _this.setupStubSpread();\r\n _this.deselect$.subscribe(_this.deselect);\r\n _this.action$\r\n .subscribe(function (action) { return _this.actionStackController.addAction(action); });\r\n _this.fontsLoadRequest$.subscribe();\r\n return _this;\r\n }\r\n Object.defineProperty(Workspace.prototype, \"scaleSpreadToFitRequest\", {\r\n get: function () {\r\n return this.scaleSpreadToFitSubject.asObservable();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Workspace.prototype, \"defaultFonts\", {\r\n // this array of default fonts will eventually come from configuration\r\n get: function () {\r\n return ['Asap'];\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Workspace.prototype.getActionSources = function () {\r\n return [this.selectedSpread, this.actionSink];\r\n };\r\n Workspace.prototype.scaleSpreadToFit = function () {\r\n this.scaleSpreadToFitSubject.next();\r\n };\r\n Workspace.prototype.selectPlate = function (plateIndex) {\r\n var _this = this;\r\n var oldPlateIndex = this.selectedPlateIndex;\r\n this.actionSink(function () {\r\n _this.selectedPlateIndex = plateIndex;\r\n // todo: temporary\r\n _this.selectedSpread.textColor = _this.plates[_this.selectedPlateIndex].textColor;\r\n }, function () {\r\n _this.selectedPlateIndex = oldPlateIndex;\r\n // todo: temporary\r\n _this.selectedSpread.textColor = _this.plates[_this.selectedPlateIndex].textColor;\r\n });\r\n };\r\n Workspace.prototype.setDesignToScreenRatio = function (ratio) {\r\n var newRatio = Math.round(ratio) / 100;\r\n this.spreadPosition = {\r\n x: Math.round(this.spreadPosition.x + this.selectedSpread.size.width * (this.designToScreenRatio - newRatio) / 2),\r\n y: Math.round(this.spreadPosition.y + this.selectedSpread.size.height * (this.designToScreenRatio - newRatio) / 2)\r\n };\r\n this.designToScreenRatio = newRatio;\r\n };\r\n Workspace.prototype.scaleSpreadToContainer = function (containerSize, marginSize) {\r\n var selectedSpread = this.selectedSpread;\r\n // can update the margin for preview mode\r\n var marginWidth = marginSize.width;\r\n // the margin helps determine the available space of the spread with no overlap. We times it by 2 to\r\n // ensure it's exactly center aligned (e.g. left + right cols of equal widths)\r\n var horizontalScale = (containerSize.width - (marginWidth * 2)) / selectedSpread.size.width;\r\n var verticalScale = (containerSize.height - marginSize.height * 2) / selectedSpread.size.height;\r\n // Scales spread to fit inside the container\r\n this.designToScreenRatio = Math.floor(Math.min(horizontalScale, verticalScale) * 50) / 50;\r\n // Centers spread inside the container\r\n this.spreadPosition = {\r\n x: Math.round((containerSize.width - selectedSpread.size.width * this.designToScreenRatio) / 2),\r\n y: Math.round((containerSize.height - selectedSpread.size.height * this.designToScreenRatio) / 2)\r\n };\r\n };\r\n // Deselects all workspace controls\r\n Workspace.prototype.deselect = function () {\r\n this.selectedId = undefined;\r\n };\r\n Workspace.prototype.addEditableText = function (left, top, model) {\r\n var selectionController = this.createSelectionController(model);\r\n var element = new EditableTextModel(model.container, selectionController, model);\r\n this.selectedSpread.addElement(new PositionModel({ left: left, top: top }, model.container, element));\r\n };\r\n Workspace.prototype.saveProject = function () {\r\n var _this = this;\r\n // TODO: remove this mockup method implementation and\r\n // implement saving project\r\n this.status = 'saving';\r\n // faking time needed for BE to respond with some status\r\n setTimeout(function () {\r\n _this.resetStatus();\r\n }, 2000);\r\n };\r\n // TODO: remove this method all together\r\n // this method is here to reset status of application\r\n // this will be done by BE (sending different statuses)\r\n Workspace.prototype.resetStatus = function () {\r\n this.status = undefined;\r\n };\r\n Workspace.prototype.showPreview = function () {\r\n this.deselect();\r\n this.isPreviewMode = true;\r\n };\r\n Workspace.prototype.hidePreview = function () {\r\n this.isPreviewMode = false;\r\n };\r\n Workspace.prototype.undo = function () {\r\n this.actionStackController.undo();\r\n };\r\n Workspace.prototype.redo = function () {\r\n this.actionStackController.redo();\r\n };\r\n Object.defineProperty(Workspace.prototype, \"backgroundColor\", {\r\n get: function () {\r\n return this.plates[this.selectedPlateIndex].bgColor;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Workspace.prototype, \"backgroundUrl\", {\r\n get: function () {\r\n return this.plates[this.selectedPlateIndex].bgUrl;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Workspace.prototype, \"textColor\", {\r\n get: function () {\r\n return this.plates[this.selectedPlateIndex].textColor;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Workspace.prototype, \"selected\", {\r\n get: function () {\r\n return this.selectedId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Workspace.prototype, \"hasTextSelections\", {\r\n get: function () {\r\n return this.selectedSpread.hasTextSelections;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Workspace.prototype, \"textSelections\", {\r\n get: function () {\r\n return this.selectedSpread.textSelections;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Workspace.prototype.selectDefaultText = function () {\r\n this.selectedSpread.selectDefaultText();\r\n };\r\n Workspace.prototype.createSelectionController = function (model) {\r\n var uniqueId = this.nextId++;\r\n var that = this;\r\n return observable({\r\n get selected() { return that.selectedId === uniqueId; },\r\n requestSelection: action(function () {\r\n that.selectedId = uniqueId;\r\n that.selectRequest$.next();\r\n })\r\n });\r\n };\r\n // the spread would really be constructed from the project data, but for now we'll stub the sucker out\r\n Workspace.prototype.setupStubSpread = function () {\r\n var stubSpread = new SpreadModel({\r\n width: 730,\r\n height: 180\r\n });\r\n // currently using the first font from the default fonts array\r\n var defaultFontFamily = this.defaultFonts[0] + \", Arial, Helvetica, sans-serif\";\r\n this.selectedSpread = stubSpread;\r\n this.controlPanel = new ControlPanel(this);\r\n this.addEditableText(15, 20, new TextModel({\r\n placeholder: 'Full Name',\r\n color: 'black',\r\n alignment: 'center',\r\n fontFamily: defaultFontFamily,\r\n fontSize: 42\r\n }, new Container({ width: 700, height: 65 })));\r\n this.addEditableText(15, 95, new TextModel({\r\n placeholder: 'Title',\r\n color: 'black',\r\n alignment: 'center',\r\n fontFamily: defaultFontFamily,\r\n fontSize: 42\r\n }, new Container({ width: 700, height: 65 })));\r\n };\r\n return Workspace;\r\n}(ActionSourcesBase));\r\nexport default Workspace;\r\n__decorate([\r\n observable\r\n], Workspace.prototype, \"project\", void 0);\r\n__decorate([\r\n observable\r\n], Workspace.prototype, \"isPreviewMode\", void 0);\r\n__decorate([\r\n observable\r\n], Workspace.prototype, \"selectedProduct\", void 0);\r\n__decorate([\r\n observable\r\n], Workspace.prototype, \"controlPanel\", void 0);\r\n__decorate([\r\n observable\r\n], Workspace.prototype, \"selectedSpread\", void 0);\r\n__decorate([\r\n observable\r\n], Workspace.prototype, \"spreadPosition\", void 0);\r\n__decorate([\r\n observable\r\n], Workspace.prototype, \"designToScreenRatio\", void 0);\r\n__decorate([\r\n observable\r\n], Workspace.prototype, \"selectedPlateIndex\", void 0);\r\n__decorate([\r\n observable\r\n], Workspace.prototype, \"plates\", void 0);\r\n__decorate([\r\n observable\r\n], Workspace.prototype, \"status\", void 0);\r\n__decorate([\r\n observable\r\n], Workspace.prototype, \"selectedId\", void 0);\r\n__decorate([\r\n computed\r\n], Workspace.prototype, \"defaultFonts\", null);\r\n__decorate([\r\n action.bound\r\n], Workspace.prototype, \"selectPlate\", null);\r\n__decorate([\r\n action.bound\r\n], Workspace.prototype, \"setDesignToScreenRatio\", null);\r\n__decorate([\r\n action.bound\r\n], Workspace.prototype, \"scaleSpreadToContainer\", null);\r\n__decorate([\r\n action.bound\r\n], Workspace.prototype, \"deselect\", null);\r\n__decorate([\r\n action.bound\r\n], Workspace.prototype, \"addEditableText\", null);\r\n__decorate([\r\n action.bound\r\n], Workspace.prototype, \"saveProject\", null);\r\n__decorate([\r\n action.bound\r\n], Workspace.prototype, \"resetStatus\", null);\r\n__decorate([\r\n action.bound\r\n], Workspace.prototype, \"showPreview\", null);\r\n__decorate([\r\n action.bound\r\n], Workspace.prototype, \"hidePreview\", null);\r\n__decorate([\r\n action.bound\r\n], Workspace.prototype, \"undo\", null);\r\n__decorate([\r\n action.bound\r\n], Workspace.prototype, \"redo\", null);\r\n__decorate([\r\n computed\r\n], Workspace.prototype, \"backgroundColor\", null);\r\n__decorate([\r\n computed\r\n], Workspace.prototype, \"backgroundUrl\", null);\r\n__decorate([\r\n computed\r\n], Workspace.prototype, \"textColor\", null);\r\n__decorate([\r\n computed\r\n], Workspace.prototype, \"selected\", null);\r\n__decorate([\r\n computed\r\n], Workspace.prototype, \"hasTextSelections\", null);\r\n__decorate([\r\n computed\r\n], Workspace.prototype, \"textSelections\", null);\r\n__decorate([\r\n action.bound\r\n], Workspace.prototype, \"selectDefaultText\", null);\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts\"); } } })();"
}, {
"id": "./src/apollo-builder/ui/ControlPanelMenu.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ControlPanelMenu.tsx",
"name": "./src/apollo-builder/ui/ControlPanelMenu.tsx",
"index": 715,
"index2": 723,
"size": 2674,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx",
"issuerId": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"issuerName": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx",
"module": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"moduleName": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"type": "harmony import",
"userRequest": "../../ui/ControlPanelMenu",
"loc": "2:0-57"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 6,
"source": "/* Role: provides a consistent style for any content in the control panel's second column (i.e. selected type -\r\n// \"Text\" / \"Image\", \"Plate Color\" settings) */\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport * as React from 'react';\r\nimport styled from '../utils/styled';\r\nimport { CSSTransitionGroup } from 'react-transition-group';\r\nvar StyledMenu = (_a = [\"\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n align-items: center;\\n height: auto;\\n z-index: 1;\\n left: 86px;\\n position: absolute;\\n top: 0;\\n border-radius: 0 4px 4px 4px;\\n\"], _a.raw = [\"\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n align-items: center;\\n height: auto;\\n z-index: 1;\\n left: 86px;\\n position: absolute;\\n top: 0;\\n border-radius: 0 4px 4px 4px;\\n\"], styled.div(_a));\r\nvar ControlPanelMenu = (function (_super) {\r\n __extends(ControlPanelMenu, _super);\r\n function ControlPanelMenu() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ControlPanelMenu.prototype.render = function () {\r\n return (React.createElement(StyledMenu, null,\r\n React.createElement(CSSTransitionGroup, { transitionName: \"mount\", transitionEnterTimeout: 500, transitionLeaveTimeout: this.props.isPanelOpen ? 1 : 500 }, this.props.children)));\r\n };\r\n return ControlPanelMenu;\r\n}(React.Component));\r\nexport default ControlPanelMenu;\r\nvar _a;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ControlPanelMenu.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ControlPanelMenu.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/ui/FocusObserver.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/FocusObserver.tsx",
"name": "./src/apollo-builder/ui/FocusObserver.tsx",
"index": 751,
"index2": 747,
"size": 2419,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx",
"issuerId": "./src/apollo-builder/app.tsx",
"issuerName": "./src/apollo-builder/app.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/app.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx",
"module": "./src/apollo-builder/app.tsx",
"moduleName": "./src/apollo-builder/app.tsx",
"type": "harmony import",
"userRequest": "./ui/FocusObserver",
"loc": "24:0-47"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 4,
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport * as React from 'react';\r\nimport { Scheduler, Subject, Observable } from 'rxjs';\r\nimport * as PropTypes from 'prop-types';\r\nvar FocusObserver = (function (_super) {\r\n __extends(FocusObserver, _super);\r\n function FocusObserver() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.focus$ = new Subject();\r\n _this.blur$ = new Subject();\r\n _this.signal$ = _this.blur$.switchMap(function () { return Observable.of(undefined, Scheduler.async).takeUntil(_this.focus$); });\r\n return _this;\r\n }\r\n FocusObserver.prototype.getChildContext = function () {\r\n return { focusControl: this.signal$ };\r\n };\r\n FocusObserver.prototype.render = function () {\r\n var _this = this;\r\n return (React.createElement(\"div\", { className: this.props.className, style: this.props.style, onFocus: function (e) { return _this.focus$.next(e.target); }, onBlurCapture: function (e) { return _this.blur$.next(e.target); } }, this.props.children));\r\n };\r\n return FocusObserver;\r\n}(React.Component));\r\nFocusObserver.childContextTypes = { focusControl: PropTypes.object };\r\nexport default FocusObserver;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/FocusObserver.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/FocusObserver.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/ui/MeasureContainer.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/MeasureContainer.tsx",
"name": "./src/apollo-builder/ui/MeasureContainer.tsx",
"index": 686,
"index2": 680,
"size": 3841,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/component.tsx",
"issuerId": "./src/apollo-builder/layout/Workspace/component.tsx",
"issuerName": "./src/apollo-builder/layout/Workspace/component.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/layout/Workspace/component.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/component.tsx",
"module": "./src/apollo-builder/layout/Workspace/component.tsx",
"moduleName": "./src/apollo-builder/layout/Workspace/component.tsx",
"type": "harmony import",
"userRequest": "../../ui/MeasureContainer",
"loc": "4:0-57"
}, {
"moduleId": "./src/apollo-builder/ui/ResponsiveContainer.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ResponsiveContainer.tsx",
"module": "./src/apollo-builder/ui/ResponsiveContainer.tsx",
"moduleName": "./src/apollo-builder/ui/ResponsiveContainer.tsx",
"type": "harmony import",
"userRequest": "./MeasureContainer",
"loc": "12:0-50"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 6,
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\n/* Role: Captures the DOM dimensions of its parent. */\r\nimport * as React from 'react';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { equals as sizeEquals } from '../common/size';\r\nvar windowResize$ = Observable.fromEvent(window, 'resize');\r\nvar MeasureContainer = (function (_super) {\r\n __extends(MeasureContainer, _super);\r\n function MeasureContainer() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.element$ = new BehaviorSubject(undefined);\r\n _this.sizes$ = _this.element$\r\n .filter(function (element) { return !!element; })\r\n .switchMap(function (element) {\r\n return (_this.props.measureRequest || Observable.empty())\r\n .merge(windowResize$)\r\n .startWith(null)\r\n .map(function () { return ({\r\n width: element.offsetWidth,\r\n height: element.offsetHeight\r\n }); });\r\n })\r\n .distinctUntilChanged(sizeEquals)\r\n .publishReplay(1)\r\n .refCount();\r\n return _this;\r\n }\r\n MeasureContainer.prototype.componentDidMount = function () {\r\n if (this.element$.value === undefined) {\r\n // tslint:disable-next-line:no-console\r\n console.warn('ref has not been called; check that child component passed is either a DOM element or a styled component.');\r\n }\r\n if (this.props.onSizeChanged) {\r\n this.sizeChangeSubscription = this.sizes$.subscribe(this.props.onSizeChanged);\r\n }\r\n };\r\n MeasureContainer.prototype.componentWillUnmount = function () {\r\n this.element$.complete();\r\n if (this.sizeChangeSubscription) {\r\n this.sizeChangeSubscription.unsubscribe();\r\n this.sizeChangeSubscription = undefined;\r\n }\r\n };\r\n MeasureContainer.prototype.render = function () {\r\n var _this = this;\r\n var child = React.Children.only(this.props.children);\r\n var prevRef = typeof child.type === 'string' ? child.props.ref : child.props.innerRef;\r\n if (prevRef !== undefined) {\r\n throw new Error('Child elements with ref/innerRef specified are not supported.');\r\n }\r\n var ref = function (element) { return _this.element$.next(element); };\r\n var refProps = typeof child.type === 'string' ? { ref: ref } : { innerRef: ref };\r\n var clonedChild = React.cloneElement(child, refProps);\r\n return clonedChild;\r\n };\r\n return MeasureContainer;\r\n}(React.Component));\r\nexport default MeasureContainer;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/MeasureContainer.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/MeasureContainer.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/ui/buttons/PrimaryButton.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/buttons/PrimaryButton.tsx",
"name": "./src/apollo-builder/ui/buttons/PrimaryButton.tsx",
"index": 746,
"index2": 740,
"size": 2940,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/buttons/ContinueButton.tsx",
"issuerId": "./src/apollo-builder/ui/buttons/ContinueButton.tsx",
"issuerName": "./src/apollo-builder/ui/buttons/ContinueButton.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/ui/buttons/ContinueButton.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/buttons/ContinueButton.tsx",
"module": "./src/apollo-builder/ui/buttons/ContinueButton.tsx",
"moduleName": "./src/apollo-builder/ui/buttons/ContinueButton.tsx",
"type": "harmony import",
"userRequest": "../../ui/buttons/PrimaryButton",
"loc": "4:0-59"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 6,
"source": "import * as React from 'react';\r\nimport styled from '../../utils/styled';\r\nvar Button = (_a = [\"\\n background-color: white;\\n padding: 6px;\\n border-radius: 24px;\\n cursor: pointer;\\n box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2);\\n\\n & > * {\\n display: inline-block;\\n height: 12px;\\n vertical-align: middle;\\n transition: all \", \" linear;\\n }\\n & > span {\\n font-size: 12px;\\n padding: 10px 14px;\\n color: \", \";\\n }\\n & > div {\\n padding: 10px 16px;\\n border-left: 1px solid #d8d8d8;\\n background-image: url(\", \");\\n background-repeat: no-repeat;\\n background-position: 56% 50%;\\n }\\n &:hover {\\n & > span {\\n color: \", \";\\n }\\n & > div {\\n background-image: url(\", \");\\n }\\n }\\n\"], _a.raw = [\"\\n background-color: white;\\n padding: 6px;\\n border-radius: 24px;\\n cursor: pointer;\\n box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2);\\n\\n & > * {\\n display: inline-block;\\n height: 12px;\\n vertical-align: middle;\\n transition: all \", \" linear;\\n }\\n & > span {\\n font-size: 12px;\\n padding: 10px 14px;\\n color: \", \";\\n }\\n & > div {\\n padding: 10px 16px;\\n border-left: 1px solid #d8d8d8;\\n background-image: url(\", \");\\n background-repeat: no-repeat;\\n background-position: 56% 50%;\\n }\\n &:hover {\\n & > span {\\n color: \", \";\\n }\\n & > div {\\n background-image: url(\", \");\\n }\\n }\\n\"], styled.div(_a, function (props) { return props.theme.transitionSpeed; }, function (props) { return props.theme.defaultFontColor; }, function (props) { return props.theme.getIcon('arrow-right', false); }, function (props) { return props.theme.defaultFontColorActive; }, function (props) { return props.theme.getIcon('arrow-right', true); }));\r\nvar ContinueButton = function (props) { return (React.createElement(Button, null,\r\n React.createElement(\"span\", null, props.children),\r\n React.createElement(\"div\", null))); };\r\nexport default ContinueButton;\r\nvar _a;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/buttons/PrimaryButton.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/buttons/PrimaryButton.tsx\"); } } })();"
}, {
"id": 5,
"identifier": "multi dev-app/index.tsx",
"name": "multi dev-app/index.tsx",
"index": 652,
"index2": 763,
"size": 28,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": null,
"issuerId": null,
"issuerName": null,
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [],
"usedExports": true,
"providedExports": null,
"depth": 0
}, {
"id": "./src/apollo-builder/ui/Plates/Plate.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/Plates/Plate.tsx",
"name": "./src/apollo-builder/ui/Plates/Plate.tsx",
"index": 738,
"index2": 731,
"size": 2932,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/ColorPlatePanel/component.tsx",
"issuerId": "./src/apollo-builder/layout/ControlPanel/ColorPlatePanel/component.tsx",
"issuerName": "./src/apollo-builder/layout/ControlPanel/ColorPlatePanel/component.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/layout/ControlPanel/ColorPlatePanel/component.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/ColorPlatePanel/component.tsx",
"module": "./src/apollo-builder/layout/ControlPanel/ColorPlatePanel/component.tsx",
"moduleName": "./src/apollo-builder/layout/ControlPanel/ColorPlatePanel/component.tsx",
"type": "harmony import",
"userRequest": "../../../ui/Plates/Plate",
"loc": "2:0-45"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 7,
"source": "import * as React from 'react';\r\nimport styled from '../../utils/styled';\r\nvar PlateWrapper = (_a = [\"\\n display: inline-block;\\n width: 67px;\\n height: 67px;\\n line-height: 67px;\\n text-align: center;\\n font-size: 2em;\\n cursor: pointer;\\n background: \", \";\\n &>span{\\n opacity: \", \";\\n }\\n transition: all 0.4s cubic-bezier(0.18, 0.89, 0.32, 1.28);\\n transform: \", \"\\n\"], _a.raw = [\"\\n display: inline-block;\\n width: 67px;\\n height: 67px;\\n line-height: 67px;\\n text-align: center;\\n font-size: 2em;\\n cursor: pointer;\\n background: \",\r\n \";\\n &>span{\\n opacity: \", \";\\n }\\n transition: all 0.4s cubic-bezier(0.18, 0.89, 0.32, 1.28);\\n transform: \", \"\\n\"], styled.span(_a, function (props) { return props.bgThumb.length > 0\r\n ? 'url(' + props.bgThumb + ')' : props.bgColor; }, function (props) { return props.bgThumb.length > 0 ? '0' : '1'; }, function (props) { return props.selected ? 'scale(0.8)' : 'scale(1)'; }));\r\nvar PlateBorder = (_b = [\"\\n margin: 10px 10px 0 0;\\n display: inline-block;\\n width: 67px;\\n height: 67px;\\n border: \", \";\\n border-radius: 2px;\\n box-sizing: content-box;\\n &:last-of-type , &:nth-last-of-type(2){\\n margin-bottom: 12px;\\n }\\n\"], _b.raw = [\"\\n margin: 10px 10px 0 0;\\n display: inline-block;\\n width: 67px;\\n height: 67px;\\n border: \", \";\\n border-radius: 2px;\\n box-sizing: content-box;\\n &:last-of-type , &:nth-last-of-type(2){\\n margin-bottom: 12px;\\n }\\n\"], styled.span(_b, function (props) { return props.selected ? props.theme.selectedElementOutline : '2px solid ' + props.theme.controlPanelBackground; }));\r\nvar Plate = function (props) { return (React.createElement(PlateBorder, { selected: props.selected },\r\n React.createElement(PlateWrapper, { bgThumb: props.bgThumb, bgColor: props.bgColor, selected: props.selected, style: {\r\n backgroundColor: props.bgColor,\r\n color: props.textColor,\r\n backgroundImage: props.bgThumb\r\n }, onClick: props.onSelectPlate },\r\n React.createElement(\"span\", null, \"T\")))); };\r\nexport default Plate;\r\nvar _a, _b;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/Plates/Plate.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/Plates/Plate.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/ui/Position.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/Position.tsx",
"name": "./src/apollo-builder/ui/Position.tsx",
"index": 712,
"index2": 704,
"size": 1030,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/control/connect.tsx",
"issuerId": "./src/apollo-builder/design/Element/control/connect.tsx",
"issuerName": "./src/apollo-builder/design/Element/control/connect.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/design/Element/control/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/control/connect.tsx",
"module": "./src/apollo-builder/design/Element/control/connect.tsx",
"moduleName": "./src/apollo-builder/design/Element/control/connect.tsx",
"type": "harmony import",
"userRequest": "../../../ui/Position",
"loc": "21:0-44"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 8,
"source": "/* Role: simple component that handles placing an element at a particular position */\r\nimport * as React from 'react';\r\nvar Position = function (props) { return (React.createElement(\"div\", { style: { position: 'absolute', left: props.left, top: props.top } }, props.children)); };\r\nexport default Position;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/Position.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/Position.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/ui/ResponsiveContainer.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ResponsiveContainer.tsx",
"name": "./src/apollo-builder/ui/ResponsiveContainer.tsx",
"index": 754,
"index2": 748,
"size": 2033,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/component.tsx",
"issuerId": "./src/apollo-builder/layout/Preview/component.tsx",
"issuerName": "./src/apollo-builder/layout/Preview/component.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/layout/Preview/component.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/component.tsx",
"module": "./src/apollo-builder/layout/Preview/component.tsx",
"moduleName": "./src/apollo-builder/layout/Preview/component.tsx",
"type": "harmony import",
"userRequest": "../../ui/ResponsiveContainer",
"loc": "14:0-63"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 6,
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport * as React from 'react';\r\nimport MeasureContainer from './MeasureContainer';\r\nvar ResponsiveContainer = (function (_super) {\r\n __extends(ResponsiveContainer, _super);\r\n function ResponsiveContainer() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.onSizeChanged = function (size) {\r\n _this.setState(size);\r\n };\r\n return _this;\r\n }\r\n ResponsiveContainer.prototype.render = function () {\r\n var children = this.props.getChildren(this.state);\r\n return React.createElement(MeasureContainer, { measureRequest: this.props.measureRequest, onSizeChanged: this.onSizeChanged }, children);\r\n };\r\n return ResponsiveContainer;\r\n}(React.Component));\r\nexport default ResponsiveContainer;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ResponsiveContainer.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ResponsiveContainer.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/ui/ScrollablePanel.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ScrollablePanel.tsx",
"name": "./src/apollo-builder/ui/ScrollablePanel.tsx",
"index": 730,
"index2": 730,
"size": 5044,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx",
"issuerId": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"issuerName": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx",
"module": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"moduleName": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"type": "harmony import",
"userRequest": "../../ui/ScrollablePanel",
"loc": "3:0-55"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 6,
"source": "/* Role: provides a styled, scrollable panel with a +/i icon at the bottom to expand/contract the region */\r\nimport * as React from 'react';\r\nimport ScrollArea from 'react-scrollbar-patch';\r\nimport styled from '../utils/styled';\r\nimport slideIn from '../ui/animation/slideIn';\r\nimport slideOut from '../ui/animation/slideOut';\r\nimport fadeIn from '../ui/animation/fadeIn';\r\nimport fadeOut from '../ui/animation/fadeOut';\r\nimport StyledScrollable from './StyledScrollable';\r\nvar StyledScrollablePanel = (_a = [\"\\n position: absolute;\\n &.mount-enter-active{\\n opacity: 1;\\n animation: \", \" 0.3s \", \";\\n &>div span:nth-child(n + 4){\\n animation: \", \" 0.2s \", \";\\n }\\n &>div span:nth-child(n + 8){\\n animation: \", \" 0.4s \", \";\\n }\\n }\\n\\n &.mount-leave-active{\\n &>div{\\n opacity: 0;\\n animation: \", \" 0.3s \", \";\\n }\\n &>div span{\\n opacity: 0;\\n }\\n }\\n\\n >div:first-child{\\n padding: 0;\\n margin: 0 0 -10px;\\n border-top-right-radius: 5px;\\n border-bottom-right-radius: 5px;\\n border-bottom-left-radius: 5px;\\n height: auto;\\n transition: max-height 0.3s \", \";\\n\\n >div>span:nth-child(n + 11){\\n animation: \", \" 0.2s \", \";\\n opacity: 0;\\n }\\n }\\n\\n .scrollarea{\\n height: auto;\\n width: 195px;\\n max-height: \", \";\\n }\\n\\n .scrollarea-content{\\n padding-left: 12px;\\n border-top-right-radius: 5px;\\n border-bottom-right-radius: 5px;\\n border-bottom-left-radius: 5px;\\n background-color: \", \";\\n width: 163px;\\n\\n &>span:nth-child(n + 11){\\n animation: \", \" 0.6s \", \";\\n }\\n\\n &>span:nth-child(n + 13){\\n animation: \", \" 0.9s \", \";\\n }\\n }\\n\"], _a.raw = [\"\\n position: absolute;\\n &.mount-enter-active{\\n opacity: 1;\\n animation: \", \" 0.3s \", \";\\n &>div span:nth-child(n + 4){\\n animation: \", \" 0.2s \", \";\\n }\\n &>div span:nth-child(n + 8){\\n animation: \", \" 0.4s \", \";\\n }\\n }\\n\\n &.mount-leave-active{\\n &>div{\\n opacity: 0;\\n animation: \", \" 0.3s \", \";\\n }\\n &>div span{\\n opacity: 0;\\n }\\n }\\n\\n >div:first-child{\\n padding: 0;\\n margin: 0 0 -10px;\\n border-top-right-radius: 5px;\\n border-bottom-right-radius: 5px;\\n border-bottom-left-radius: 5px;\\n height: auto;\\n transition: max-height 0.3s \", \";\\n\\n >div>span:nth-child(n + 11){\\n animation: \", \" 0.2s \", \";\\n opacity: 0;\\n }\\n }\\n\\n .scrollarea{\\n height: auto;\\n width: 195px;\\n max-height: \", \";\\n }\\n\\n .scrollarea-content{\\n padding-left: 12px;\\n border-top-right-radius: 5px;\\n border-bottom-right-radius: 5px;\\n border-bottom-left-radius: 5px;\\n background-color: \", \";\\n width: 163px;\\n\\n &>span:nth-child(n + 11){\\n animation: \", \" 0.6s \", \";\\n }\\n\\n &>span:nth-child(n + 13){\\n animation: \", \" 0.9s \", \";\\n }\\n }\\n\"], styled.div(_a, slideIn, function (props) { return props.theme.defaultTimingFunc; }, fadeIn, function (props) { return props.theme.defaultTimingFunc; }, fadeIn, function (props) { return props.theme.defaultTimingFunc; }, slideOut, function (props) { return props.theme.defaultTimingFunc; }, function (props) { return props.theme.defaultTimingFunc; }, fadeOut, function (props) { return props.theme.defaultTimingFunc; }, function (props) { return props.theme.scrollablePanelHeight; }, function (props) { return props.theme.controlPanelBackground; }, fadeIn, function (props) { return props.theme.defaultTimingFunc; }, fadeIn, function (props) { return props.theme.defaultTimingFunc; }));\r\nvar ScrollablePanel = function (props) {\r\n return React.createElement(StyledScrollablePanel, null,\r\n React.createElement(StyledScrollable, null,\r\n React.createElement(ScrollArea, { speed: 1.5, horizontal: false, smoothScrolling: true }, props.children)));\r\n};\r\nexport default ScrollablePanel;\r\nvar _a;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ScrollablePanel.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ScrollablePanel.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/ui/StatusMessage/component.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/StatusMessage/component.tsx",
"name": "./src/apollo-builder/ui/StatusMessage/component.tsx",
"index": 749,
"index2": 744,
"size": 1681,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/StatusMessage/connect.ts",
"issuerId": "./src/apollo-builder/ui/StatusMessage/connect.ts",
"issuerName": "./src/apollo-builder/ui/StatusMessage/connect.ts",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/ui/StatusMessage/connect.ts",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/StatusMessage/connect.ts",
"module": "./src/apollo-builder/ui/StatusMessage/connect.ts",
"moduleName": "./src/apollo-builder/ui/StatusMessage/connect.ts",
"type": "harmony import",
"userRequest": "./component",
"loc": "1:0-40"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 5,
"source": "import * as React from 'react';\r\nimport styled from '../../utils/styled';\r\nimport { FormattedMessage } from 'react-intl';\r\nvar StatusMessageContainer = (_a = [\"\\n min-width: 310px;\\n position: relative;\\n top: 20px;\\n text-align: center;\\n\"], _a.raw = [\"\\n min-width: 310px;\\n position: relative;\\n top: 20px;\\n text-align: center;\\n\"], styled.div(_a));\r\nvar StatusMessageStyled = (_b = [\"\\n position: relative;\\n font-size: 10px;\\n color: #0f7bd6;\\n\"], _b.raw = [\"\\n position: relative;\\n font-size: 10px;\\n color: #0f7bd6;\\n\"], styled.div(_b));\r\nvar StatusMessage = function (props) { return (React.createElement(StatusMessageContainer, null, props.status ?\r\n React.createElement(StatusMessageStyled, null,\r\n React.createElement(FormattedMessage, { id: props.status, defaultMessage: props.status })) : null)); }; // StatusMessage\r\nexport default StatusMessage;\r\nvar _a, _b;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/StatusMessage/component.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/StatusMessage/component.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/ui/StatusMessage/connect.ts",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/StatusMessage/connect.ts",
"name": "./src/apollo-builder/ui/StatusMessage/connect.ts",
"index": 748,
"index2": 745,
"size": 935,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx",
"issuerId": "./src/apollo-builder/app.tsx",
"issuerName": "./src/apollo-builder/app.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/app.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx",
"module": "./src/apollo-builder/app.tsx",
"moduleName": "./src/apollo-builder/app.tsx",
"type": "harmony import",
"userRequest": "./ui/StatusMessage/connect",
"loc": "21:0-55"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 4,
"source": "import StatusMessage from './component';\r\nimport connect from '../../utils/connect';\r\nexport default connect(StatusMessage)(function (model) { return ({\r\n status: model.status\r\n}); });\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/StatusMessage/connect.ts\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/StatusMessage/connect.ts\"); } } })();"
}, {
"id": "./src/apollo-builder/ui/StyledScrollable.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/StyledScrollable.tsx",
"name": "./src/apollo-builder/ui/StyledScrollable.tsx",
"index": 736,
"index2": 729,
"size": 2412,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ScrollablePanel.tsx",
"issuerId": "./src/apollo-builder/ui/ScrollablePanel.tsx",
"issuerName": "./src/apollo-builder/ui/ScrollablePanel.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/ui/ScrollablePanel.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ScrollablePanel.tsx",
"module": "./src/apollo-builder/ui/ScrollablePanel.tsx",
"moduleName": "./src/apollo-builder/ui/ScrollablePanel.tsx",
"type": "harmony import",
"userRequest": "./StyledScrollable",
"loc": "9:0-50"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 7,
"source": "/* Role: any scrollable regions with <ScrollArea /> should be wrapped in this component. Provides a consistent style for the scrollbars */\r\nimport styled from '../utils/styled';\r\nvar StyledScrollable = (_a = [\"\\n\\n & > .scrollarea {\\n &:hover .scrollbar-container.vertical .scrollbar {\\n opacity: 1;\\n }\\n\\n & > .scrollbar-container.vertical {\\n opacity: 1;\\n width: 10px;\\n padding-left: 5px;\\n right: 5px;\\n\\n &:hover {\\n opacity: 1 !important;\\n background-color: transparent;\\n }\\n\\n & > .scrollbar {\\n border-radius: 4px;\\n width: 6px;\\n background-color: \", \";\\n opacity: 0.5;\\n transition: opacity 0.25s ease-in;\\n }\\n }\\n }\\n\"], _a.raw = [\"\\n\\n & > .scrollarea {\\n &:hover .scrollbar-container.vertical .scrollbar {\\n opacity: 1;\\n }\\n\\n & > .scrollbar-container.vertical {\\n opacity: 1;\\n width: 10px;\\n padding-left: 5px;\\n right: 5px;\\n\\n &:hover {\\n opacity: 1 !important;\\n background-color: transparent;\\n }\\n\\n & > .scrollbar {\\n border-radius: 4px;\\n width: 6px;\\n background-color: \", \";\\n opacity: 0.5;\\n transition: opacity 0.25s ease-in;\\n }\\n }\\n }\\n\"], styled.div(_a, function (props) { return props.theme.scrollbarBackground; }));\r\nexport default StyledScrollable;\r\nvar _a;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/StyledScrollable.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/StyledScrollable.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/ui/animation/fadeIn.ts",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/animation/fadeIn.ts",
"name": "./src/apollo-builder/ui/animation/fadeIn.ts",
"index": 734,
"index2": 727,
"size": 933,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/component.tsx",
"issuerId": "./src/apollo-builder/layout/Preview/component.tsx",
"issuerName": "./src/apollo-builder/layout/Preview/component.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/layout/Preview/component.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/component.tsx",
"module": "./src/apollo-builder/layout/Preview/component.tsx",
"moduleName": "./src/apollo-builder/layout/Preview/component.tsx",
"type": "harmony import",
"userRequest": "../../ui/animation/fadeIn",
"loc": "16:0-47"
}, {
"moduleId": "./src/apollo-builder/ui/ScrollablePanel.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ScrollablePanel.tsx",
"module": "./src/apollo-builder/ui/ScrollablePanel.tsx",
"moduleName": "./src/apollo-builder/ui/ScrollablePanel.tsx",
"type": "harmony import",
"userRequest": "../ui/animation/fadeIn",
"loc": "7:0-44"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 6,
"source": "import { keyframes } from '../../utils/styled';\r\nexport default (_a = [\"from { opacity: 0; } to { opacity : 1; }\"], _a.raw = [\"from { opacity: 0; } to { opacity : 1; }\"], keyframes(_a));\r\nvar _a;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/animation/fadeIn.ts\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/animation/fadeIn.ts\"); } } })();"
}, {
"id": "./src/apollo-builder/ui/animation/fadeOut.ts",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/animation/fadeOut.ts",
"name": "./src/apollo-builder/ui/animation/fadeOut.ts",
"index": 735,
"index2": 728,
"size": 935,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/component.tsx",
"issuerId": "./src/apollo-builder/layout/Preview/component.tsx",
"issuerName": "./src/apollo-builder/layout/Preview/component.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/layout/Preview/component.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/component.tsx",
"module": "./src/apollo-builder/layout/Preview/component.tsx",
"moduleName": "./src/apollo-builder/layout/Preview/component.tsx",
"type": "harmony import",
"userRequest": "../../ui/animation/fadeOut",
"loc": "17:0-49"
}, {
"moduleId": "./src/apollo-builder/ui/ScrollablePanel.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ScrollablePanel.tsx",
"module": "./src/apollo-builder/ui/ScrollablePanel.tsx",
"moduleName": "./src/apollo-builder/ui/ScrollablePanel.tsx",
"type": "harmony import",
"userRequest": "../ui/animation/fadeOut",
"loc": "8:0-46"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 6,
"source": "import { keyframes } from '../../utils/styled';\r\nexport default (_a = [\"from { opacity: 1; } to { opacity : 0; }\"], _a.raw = [\"from { opacity: 1; } to { opacity : 0; }\"], keyframes(_a));\r\nvar _a;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/animation/fadeOut.ts\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/animation/fadeOut.ts\"); } } })();"
}, {
"id": "./src/apollo-builder/ui/animation/slideIn.ts",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/animation/slideIn.ts",
"name": "./src/apollo-builder/ui/animation/slideIn.ts",
"index": 732,
"index2": 725,
"size": 1163,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ScrollablePanel.tsx",
"issuerId": "./src/apollo-builder/ui/ScrollablePanel.tsx",
"issuerName": "./src/apollo-builder/ui/ScrollablePanel.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/ui/ScrollablePanel.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ScrollablePanel.tsx",
"module": "./src/apollo-builder/ui/ScrollablePanel.tsx",
"moduleName": "./src/apollo-builder/ui/ScrollablePanel.tsx",
"type": "harmony import",
"userRequest": "../ui/animation/slideIn",
"loc": "5:0-46"
}, {
"moduleId": "./src/apollo-builder/layout/ControlPanel/TextMenuPanel/component.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/TextMenuPanel/component.tsx",
"module": "./src/apollo-builder/layout/ControlPanel/TextMenuPanel/component.tsx",
"moduleName": "./src/apollo-builder/layout/ControlPanel/TextMenuPanel/component.tsx",
"type": "harmony import",
"userRequest": "../../../ui/animation/slideIn",
"loc": "8:0-52"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 7,
"source": "import { keyframes } from '../../utils/styled';\r\nexport default (_a = [\"\\n 0% {\\n transform: translateX(-15px);\\n opacity: 0;\\n }\\n 100% {\\n transform: translateX(0);\\n opacity: 1;\\n }\\n\"], _a.raw = [\"\\n 0% {\\n transform: translateX(-15px);\\n opacity: 0;\\n }\\n 100% {\\n transform: translateX(0);\\n opacity: 1;\\n }\\n\"], keyframes(_a));\r\nvar _a;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/animation/slideIn.ts\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/animation/slideIn.ts\"); } } })();"
}, {
"id": "./src/apollo-builder/ui/animation/slideOut.ts",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/animation/slideOut.ts",
"name": "./src/apollo-builder/ui/animation/slideOut.ts",
"index": 733,
"index2": 726,
"size": 1165,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ScrollablePanel.tsx",
"issuerId": "./src/apollo-builder/ui/ScrollablePanel.tsx",
"issuerName": "./src/apollo-builder/ui/ScrollablePanel.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/ui/ScrollablePanel.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ScrollablePanel.tsx",
"module": "./src/apollo-builder/ui/ScrollablePanel.tsx",
"moduleName": "./src/apollo-builder/ui/ScrollablePanel.tsx",
"type": "harmony import",
"userRequest": "../ui/animation/slideOut",
"loc": "6:0-48"
}, {
"moduleId": "./src/apollo-builder/layout/ControlPanel/TextMenuPanel/component.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/TextMenuPanel/component.tsx",
"module": "./src/apollo-builder/layout/ControlPanel/TextMenuPanel/component.tsx",
"moduleName": "./src/apollo-builder/layout/ControlPanel/TextMenuPanel/component.tsx",
"type": "harmony import",
"userRequest": "../../../ui/animation/slideOut",
"loc": "9:0-54"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 7,
"source": "import { keyframes } from '../../utils/styled';\r\nexport default (_a = [\"\\n 0% {\\n transform: translateX(0);\\n opacity: 1;\\n }\\n 100% {\\n transform: translateX(-30px);\\n opacity: 0;\\n }\\n\"], _a.raw = [\"\\n 0% {\\n transform: translateX(0);\\n opacity: 1;\\n }\\n 100% {\\n transform: translateX(-30px);\\n opacity: 0;\\n }\\n\"], keyframes(_a));\r\nvar _a;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/animation/slideOut.ts\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/animation/slideOut.ts\"); } } })();"
}, {
"id": "./src/apollo-builder/ui/buttons/ContinueButton.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/buttons/ContinueButton.tsx",
"name": "./src/apollo-builder/ui/buttons/ContinueButton.tsx",
"index": 745,
"index2": 741,
"size": 1215,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/connect.tsx",
"issuerId": "./src/apollo-builder/layout/Workspace/connect.tsx",
"issuerName": "./src/apollo-builder/layout/Workspace/connect.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/layout/Workspace/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/connect.tsx",
"module": "./src/apollo-builder/layout/Workspace/connect.tsx",
"moduleName": "./src/apollo-builder/layout/Workspace/connect.tsx",
"type": "harmony import",
"userRequest": "../../ui/buttons/ContinueButton",
"loc": "7:0-61"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 5,
"source": "/* Role: the main Continue button on the workspace to allow a user to progress out of the builder */\r\nimport * as React from 'react';\r\nimport { FormattedMessage } from 'react-intl';\r\nimport PrimaryButton from '../../ui/buttons/PrimaryButton';\r\nvar ContinueButton = function () { return (React.createElement(PrimaryButton, null,\r\n React.createElement(FormattedMessage, { id: \"continue_button\", defaultMessage: \"Continue\" }))); };\r\nexport default ContinueButton;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/buttons/ContinueButton.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/buttons/ContinueButton.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/ui/buttons/ControlPanelButtonWrapper.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/buttons/ControlPanelButtonWrapper.tsx",
"name": "./src/apollo-builder/ui/buttons/ControlPanelButtonWrapper.tsx",
"index": 740,
"index2": 735,
"size": 2944,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx",
"issuerId": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"issuerName": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx",
"module": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"moduleName": "./src/apollo-builder/layout/ControlPanel/connect.tsx",
"type": "harmony import",
"userRequest": "../../ui/buttons/ControlPanelButtonWrapper",
"loc": "7:0-77"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 6,
"source": "import * as React from 'react';\r\nimport { FormattedMessage } from 'react-intl';\r\nimport styled from '../../utils/styled';\r\nimport ControlPanelButton from './ControlPanelButton';\r\nimport { ControlPanelButtonType } from '../../layout/ControlPanel/model';\r\nvar ControlPanelButtonWrapper = (_a = [\"\\n z-index: 2;\\n cursor: pointer;\\n width: 66px;\\n height: 130px;\\n background: \", \";\\n box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2);\\n border-radius: 4px;\\n\"], _a.raw = [\"\\n z-index: 2;\\n cursor: pointer;\\n width: 66px;\\n height: 130px;\\n background: \", \";\\n box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2);\\n border-radius: 4px;\\n\"], styled.div(_a, function (props) { return props.theme.menuOptionBackground; }));\r\nvar BackgroundPanel = (_b = [\"\\n transition: background 0.25s ease-in;\\n background: \", \";\\n padding: 10px;\\n border-top-left-radius: 5px;\\n border-bottom-left-radius: 5px;\\n z-index: 2;\\n position: relative;\\n top: -10px;\\n\"], _b.raw = [\"\\n transition: background 0.25s ease-in;\\n background: \",\r\n \";\\n padding: 10px;\\n border-top-left-radius: 5px;\\n border-bottom-left-radius: 5px;\\n z-index: 2;\\n position: relative;\\n top: -10px;\\n\"], styled.div(_b, function (props) {\r\n return props.isPanelSelected ? props.theme.controlPanelBackground : 'transparent';\r\n}));\r\nvar ControlPanelButtons = function (props) { return (React.createElement(BackgroundPanel, { isPanelSelected: props.selected !== ControlPanelButtonType.None },\r\n React.createElement(ControlPanelButtonWrapper, null,\r\n React.createElement(ControlPanelButton, { iconKey: \"text-icon\", isActive: props.selected === ControlPanelButtonType.Text, onClick: props.selectTextPanel },\r\n React.createElement(FormattedMessage, { id: \"text\", defaultMessage: \"Text\" })),\r\n React.createElement(ControlPanelButton, { iconKey: \"color-icon\", isActive: props.selected === ControlPanelButtonType.Plate, onClick: props.selectPlatePanel },\r\n React.createElement(FormattedMessage, { id: \"plate_color\", defaultMessage: \"Plate Color\" }))))); };\r\nexport default ControlPanelButtons;\r\nvar _a, _b;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/buttons/ControlPanelButtonWrapper.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/buttons/ControlPanelButtonWrapper.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/ui/buttons/IconButton.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/buttons/IconButton.tsx",
"name": "./src/apollo-builder/ui/buttons/IconButton.tsx",
"index": 747,
"index2": 743,
"size": 2812,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx",
"issuerId": "./src/apollo-builder/app.tsx",
"issuerName": "./src/apollo-builder/app.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/app.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx",
"module": "./src/apollo-builder/app.tsx",
"moduleName": "./src/apollo-builder/app.tsx",
"type": "harmony import",
"userRequest": "./ui/buttons/IconButton",
"loc": "20:0-49"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 4,
"source": "import * as React from 'react';\r\nimport styled from '../../utils/styled';\r\nvar IconButtonStyled = (_a = [\"\\n width: 68px;\\n height: 100%;\\n text-align: center;\\n cursor: pointer;\\n\\n div {\\n height: 46px;\\n text-align: center;\\n background-image: url(\", \");\\n background-repeat: no-repeat;\\n background-position: 50% 100%;\\n transition: all \", \" linear;\\n }\\n\\n span {\\n opacity: 0; /* to allow transition */\\n transition: all \", \" linear;\\n font-size: 9px;\\n color: \", \";\\n }\\n\\n &:hover {\\n div {\\n background-image: url(\", \");\\n }\\n span {\\n opacity: 1;\\n color: \", \";\\n }\\n }\\n\"], _a.raw = [\"\\n width: 68px;\\n height: 100%;\\n text-align: center;\\n cursor: pointer;\\n\\n div {\\n height: 46px;\\n text-align: center;\\n background-image: url(\", \");\\n background-repeat: no-repeat;\\n background-position: 50% 100%;\\n transition: all \", \" linear;\\n }\\n\\n span {\\n opacity: 0; /* to allow transition */\\n transition: all \", \" linear;\\n font-size: 9px;\\n color: \", \";\\n }\\n\\n &:hover {\\n div {\\n background-image: url(\", \");\\n }\\n span {\\n opacity: 1;\\n color: \", \";\\n }\\n }\\n\"], styled.div(_a, function (props) { return props.theme.getIcon(props.iconKey, props.isActive); }, function (props) { return props.theme.transitionSpeed; }, function (props) { return props.theme.transitionSpeed; }, function (props) { return props.theme.defaultFontColor; }, function (props) { return props.theme.getIcon(props.iconKey, true); }, function (props) { return props.theme.defaultFontColorActive; }));\r\nvar IconButton = function (props) { return (React.createElement(IconButtonStyled, { iconKey: props.iconKey, isActive: props.isActive, onClick: props.onClick },\r\n React.createElement(\"div\", null),\r\n props.children)); };\r\nexport default IconButton;\r\nvar _a;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/buttons/IconButton.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/buttons/IconButton.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/ui/footer/index.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/footer/index.tsx",
"name": "./src/apollo-builder/ui/footer/index.tsx",
"index": 685,
"index2": 679,
"size": 1103,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/component.tsx",
"issuerId": "./src/apollo-builder/layout/Workspace/component.tsx",
"issuerName": "./src/apollo-builder/layout/Workspace/component.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/layout/Workspace/component.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/component.tsx",
"module": "./src/apollo-builder/layout/Workspace/component.tsx",
"moduleName": "./src/apollo-builder/layout/Workspace/component.tsx",
"type": "harmony import",
"userRequest": "../../ui/footer",
"loc": "3:0-37"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 6,
"source": "/* Role: Defines the Footer component */\r\nimport styled from '../../utils/styled';\r\nexport default (_a = [\"\\n width: 100%;\\n height: 70px;\\n position: absolute;\\n bottom: 50px;\\n pointer-events: none;\\n\"], _a.raw = [\"\\n width: 100%;\\n height: 70px;\\n position: absolute;\\n bottom: 50px;\\n pointer-events: none;\\n\"], styled.div(_a));\r\nvar _a;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/footer/index.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/footer/index.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/ui/header/CommandBar.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/header/CommandBar.tsx",
"name": "./src/apollo-builder/ui/header/CommandBar.tsx",
"index": 750,
"index2": 746,
"size": 2896,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx",
"issuerId": "./src/apollo-builder/app.tsx",
"issuerName": "./src/apollo-builder/app.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/app.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx",
"module": "./src/apollo-builder/app.tsx",
"moduleName": "./src/apollo-builder/app.tsx",
"type": "harmony import",
"userRequest": "./ui/header/CommandBar",
"loc": "23:0-48"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 4,
"source": "/* Role: Defines the Header component */\r\nimport * as React from 'react';\r\nimport styled from '../../utils/styled';\r\nvar barWidth = '310px';\r\nvar barPerspective = '600px';\r\nvar CommandBar = (_a = [\"\\n min-width: \", \";\\n height: 73px;\\n /* Z axis transform to counter the perspective transform in the underlying span */\\n transform: translate3d(0, 0, \", \");\\n\\n &>span{\\n box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2);\\n width: \", \";\\n height: 105px;\\n top: -12px;\\n position: absolute;\\n background-color: \", \";\\n transform: perspective(\", \") rotateX(-45deg);\\n border-bottom-right-radius: 7px;\\n border-bottom-left-radius: 7px;\\n }\\n &>div{\\n width: 100%;\\n height: 100%;\\n position: relative;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n align-content: center;\\n transform: translate3d(0, 0, \", \");\\n }\\n\"], _a.raw = [\"\\n min-width: \", \";\\n height: 73px;\\n /* Z axis transform to counter the perspective transform in the underlying span */\\n transform: translate3d(0, 0, \", \");\\n\\n &>span{\\n box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2);\\n width: \", \";\\n height: 105px;\\n top: -12px;\\n position: absolute;\\n background-color: \", \";\\n transform: perspective(\", \") rotateX(-45deg);\\n border-bottom-right-radius: 7px;\\n border-bottom-left-radius: 7px;\\n }\\n &>div{\\n width: 100%;\\n height: 100%;\\n position: relative;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n align-content: center;\\n transform: translate3d(0, 0, \", \");\\n }\\n\"], styled.div(_a, barWidth, barPerspective, barWidth, function (props) { return props.theme.headerBackground; }, barPerspective, barPerspective));\r\nvar CommandBarComponent = function (props) {\r\n return React.createElement(CommandBar, null,\r\n React.createElement(\"span\", null),\r\n React.createElement(\"div\", null, props.children));\r\n};\r\nexport default CommandBarComponent;\r\nvar _a;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/header/CommandBar.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/header/CommandBar.tsx\"); } } })();"
}, {
"id": "./src/apollo-builder/utils/memoize.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/utils/memoize.tsx",
"name": "./src/apollo-builder/utils/memoize.tsx",
"index": 667,
"index2": 660,
"size": 2065,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/common/container.tsx",
"issuerId": "./src/apollo-builder/common/container.tsx",
"issuerName": "./src/apollo-builder/common/container.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/apollo-builder/common/container.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/common/container.tsx",
"module": "./src/apollo-builder/common/container.tsx",
"moduleName": "./src/apollo-builder/common/container.tsx",
"type": "harmony import",
"userRequest": "../utils/memoize",
"loc": "9:0-39"
}],
"usedExports": ["default"],
"providedExports": ["memoize", "default"],
"depth": 7,
"source": "/* Role: Defines a memoization decorator */\r\n/* Role: Defines a memoization decorator */ export function memoize(target, propertyKey, descriptor) {\r\n if (typeof descriptor.value === 'function') {\r\n descriptor.value = getNewFunction(descriptor.value);\r\n }\r\n else if (typeof descriptor.get === 'function') {\r\n descriptor.get = getNewFunction(descriptor.get);\r\n }\r\n else {\r\n throw new Error('@memoize decorator is only allowed on a get accessor or a parameterless method.');\r\n }\r\n}\r\nvar counter = 0;\r\nfunction getNewFunction(originalMethod) {\r\n var identifier = ++counter;\r\n var propValName = \"__memoized_value_\" + identifier;\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var returnedValue;\r\n if (this.hasOwnProperty(propValName)) {\r\n returnedValue = this[propValName];\r\n }\r\n else {\r\n returnedValue = originalMethod.apply(this, args);\r\n Object.defineProperty(this, propValName, {\r\n configurable: false,\r\n enumerable: false,\r\n writable: false,\r\n value: returnedValue\r\n });\r\n }\r\n return returnedValue;\r\n };\r\n}\r\nexport default memoize;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/utils/memoize.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/utils/memoize.tsx\"); } } })();"
}, {
"id": "./src/dev-app/app.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/app.tsx",
"name": "./src/dev-app/app.tsx",
"index": 654,
"index2": 760,
"size": 1218,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/index.tsx",
"issuerId": "./src/dev-app/index.tsx",
"issuerName": "./src/dev-app/index.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/dev-app/index.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/index.tsx",
"module": "./src/dev-app/index.tsx",
"moduleName": "./src/dev-app/index.tsx",
"type": "harmony import",
"userRequest": "./app",
"loc": "2:0-24"
}, {
"moduleId": "./src/dev-app/index.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/index.tsx",
"module": "./src/dev-app/index.tsx",
"moduleName": "./src/dev-app/index.tsx",
"type": "module.hot.accept",
"userRequest": "./app",
"loc": "6:4-70"
}, {
"moduleId": "./src/dev-app/index.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/index.tsx",
"module": "./src/dev-app/index.tsx",
"moduleName": "./src/dev-app/index.tsx",
"type": "harmony accept",
"userRequest": "./app",
"loc": "6:31-69"
}],
"usedExports": true,
"providedExports": ["default"],
"depth": 2,
"source": "/* Role: Defines the App component, i.e. the main entry point of the application used for development */\r\nimport App from 'apollo-builder/app';\r\nimport './app-global-styles';\r\nimport * as React from 'react';\r\nimport Configuration from './configuration';\r\nimport AppHost from './host';\r\nimport devTheme from './theme';\r\nvar host = new AppHost();\r\nvar configuration = new Configuration(host, devTheme);\r\nvar Host = function () {\r\n return React.createElement(App, { configuration: configuration });\r\n};\r\nexport default Host;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/app.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/app.tsx\"); } } })();"
}, {
"id": "./src/dev-app/configuration.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/configuration.tsx",
"name": "./src/dev-app/configuration.tsx",
"index": 756,
"index2": 757,
"size": 1229,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/app.tsx",
"issuerId": "./src/dev-app/app.tsx",
"issuerName": "./src/dev-app/app.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/dev-app/app.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/app.tsx",
"module": "./src/dev-app/app.tsx",
"moduleName": "./src/dev-app/app.tsx",
"type": "harmony import",
"userRequest": "./configuration",
"loc": "5:0-44"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 3,
"source": "import { DemoFontService } from 'dev-app/sandbox/services/DemoFontService';\r\nimport { Host as FontServiceHost } from 'dev-app/host/font/fontServiceHost';\r\nvar demoFontService = new DemoFontService('http://apxcorefontservice.azurewebsites.net');\r\nvar Configuration = (function () {\r\n function Configuration(host, theme) {\r\n this.host = host;\r\n this.theme = theme;\r\n this.host.font = new FontServiceHost(demoFontService);\r\n }\r\n return Configuration;\r\n}());\r\nexport default Configuration;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/configuration.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/configuration.tsx\"); } } })();"
}, {
"id": "./src/dev-app/host/index.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/host/index.tsx",
"name": "./src/dev-app/host/index.tsx",
"index": 761,
"index2": 758,
"size": 822,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/app.tsx",
"issuerId": "./src/dev-app/app.tsx",
"issuerName": "./src/dev-app/app.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/dev-app/app.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/app.tsx",
"module": "./src/dev-app/app.tsx",
"moduleName": "./src/dev-app/app.tsx",
"type": "harmony import",
"userRequest": "./host",
"loc": "6:0-29"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 3,
"source": "var AppHost = (function () {\r\n function AppHost() {\r\n }\r\n return AppHost;\r\n}());\r\nexport default AppHost;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/host/index.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/host/index.tsx\"); } } })();"
}, {
"id": "./src/dev-app/index.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/index.tsx",
"name": "./src/dev-app/index.tsx",
"index": 653,
"index2": 762,
"size": 974,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "multi dev-app/index.tsx",
"issuerId": 5,
"issuerName": "multi dev-app/index.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": 5,
"moduleIdentifier": "multi dev-app/index.tsx",
"module": "multi dev-app/index.tsx",
"moduleName": "multi dev-app/index.tsx",
"type": "single entry",
"userRequest": "dev-app/index.tsx",
"loc": "main:100000"
}],
"usedExports": true,
"providedExports": null,
"depth": 1,
"source": "/* Role: The main entry point of the application is associated with the specified DOM element */\r\nimport App from './app';\r\nimport renderApp from './app-container';\r\nrenderApp(App);\r\nif (module.hot) {\r\n module.hot.accept('./app', function () { return renderApp(App); });\r\n}\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/index.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/index.tsx\"); } } })();"
}, {
"id": "./src/dev-app/theme.tsx",
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/theme.tsx",
"name": "./src/dev-app/theme.tsx",
"index": 762,
"index2": 759,
"size": 938,
"cacheable": true,
"built": true,
"optional": false,
"prefetched": false,
"chunks": [0],
"assets": [],
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/app.tsx",
"issuerId": "./src/dev-app/app.tsx",
"issuerName": "./src/dev-app/app.tsx",
"failed": false,
"errors": 0,
"warnings": 0,
"reasons": [{
"moduleId": "./src/dev-app/app.tsx",
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/app.tsx",
"module": "./src/dev-app/app.tsx",
"moduleName": "./src/dev-app/app.tsx",
"type": "harmony import",
"userRequest": "./theme",
"loc": "7:0-31"
}],
"usedExports": ["default"],
"providedExports": ["default"],
"depth": 3,
"source": "import DefaultTheme from 'apollo-builder/external/theme/default';\r\n// extend the default theme or create your own with the props from ITheme\r\nvar devTheme = DefaultTheme;\r\n// e.g. devTheme.defaultFontColor = 'red';\r\nexport default devTheme;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/theme.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/theme.tsx\"); } } })();"
}],
"filteredModules": 0,
"origins": [{
"moduleId": 5,
"module": "multi dev-app/index.tsx",
"moduleIdentifier": "multi dev-app/index.tsx",
"moduleName": "multi dev-app/index.tsx",
"loc": "",
"name": "main",
"reasons": []
}]
}
]}
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<script src="https://d3js.org/d3.v4.min.js"></script>
<style>
body { margin:0;position:fixed;top:0;right:0;bottom:0;left:0; }
.node {
fill: steelblue;
stroke: none;
}
.link {
fill: none;
stroke: #ccc;
stroke-width: 1px;
}
</style>
</head>
<body>
<script>
var width = 960, height = 500;
var svg = d3.select("body").append("svg")
.attr("width", width)
.attr("height", height)
var chart = svg.append("g").attr("transform", "translate(5,5)")
chart.append("g").attr("class", "links")
chart.append("g").attr("class", "nodes")
d3.json("nodes.json", function(err, data){
var root = d3.hierarchy(data)
var treeLayout = d3.tree();
treeLayout.size([400, 200])
treeLayout(root);
d3.select('svg g.nodes')
.selectAll('circle.node')
.data(root.descendants())
.enter()
.append('circle')
.classed('node', true)
.attr('cx', function(d) {return d.x;})
.attr('cy', function(d) {return d.y;})
.attr('r', 4);
// Links
d3.select('svg g.links')
.selectAll('line.link')
.data(root.links())
.enter()
.append('line')
.classed('link', true)
.attr('x1', function(d) {return d.source.x;})
.attr('y1', function(d) {return d.source.y;})
.attr('x2', function(d) {return d.target.x;})
.attr('y2', function(d) {return d.target.y;});
})
</script>
</body>
{
"name": "A1",
"children": [
{
"name": "B1",
"children": [
{
"name": "C1",
"value": 100
},
{
"name": "C2",
"value": 300
},
{
"name": "C3",
"value": 200
}
]
},
{
"name": "B2",
"value": 200
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment