Repository: incubator-myriad Updated Branches: refs/heads/master a3ef8c791 -> 2df7da0e1
http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/e532d08d/myriad-scheduler/src/main/resources/webapp/public/js/myriad.js ---------------------------------------------------------------------- diff --git a/myriad-scheduler/src/main/resources/webapp/public/js/myriad.js b/myriad-scheduler/src/main/resources/webapp/public/js/myriad.js index 0bdb902..67ccab1 100644 --- a/myriad-scheduler/src/main/resources/webapp/public/js/myriad.js +++ b/myriad-scheduler/src/main/resources/webapp/public/js/myriad.js @@ -5,6 +5,11 @@ var FlexComponent = require('./components/FlexComponent') var TasksComponent = require('./components/TasksComponent') var ConfigComponent = require('./components/ConfigComponent') var AboutComponent = require('./components/AboutComponent') +var HelpComponent = require('./components/HelpComponent') +var ShutdownRmOnlyComponent = require('./components/ShutdownRmOnlyComponent') +var ShutdownFrameworkComponent = require('./components/ShutdownFrameworkComponent') +var ShutdownGracefulComponent = require('./components/ShutdownGracefulComponent') + var Router = require('react-router') , RouteHandler = Router.RouteHandler @@ -13,8 +18,12 @@ var Router = require('react-router') var routes = ( React.createElement(Route, {name: "myriad", path: "/", handler: Myriad}, + React.createElement(Route, React.__spread({name: "rmDown", path: "rmDown"}, this.props, {handler: ShutdownRmOnlyComponent})), + React.createElement(Route, React.__spread({name: "frameworkDown", path: "frameworkDown"}, this.props, {handler: ShutdownFrameworkComponent})), + React.createElement(Route, React.__spread({name: "gracefulDown", path: "gracefulDown"}, this.props, {handler: ShutdownGracefulComponent})), React.createElement(Route, {name: "flex", path: "flex", handler: FlexComponent}), React.createElement(Route, {name: "tasks", path: "tasks", handler: TasksComponent}), + React.createElement(Route, {name: "help", path: "help", handler: HelpComponent}), React.createElement(Route, {name: "config", path: "config", handler: ConfigComponent}), React.createElement(Route, {name: "about", path: "/", handler: AboutComponent}), React.createElement(Redirect, {from: "myriad", to: "about"}) @@ -27,8 +36,14 @@ Router.run(routes, function (Handler) { +<<<<<<< HEAD +},{"./components/AboutComponent":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/AboutComponent.js","./components/ConfigComponent":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/ConfigComponent.js","./components/FlexComponent":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/FlexComponent.js","./components/Myriad":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/Myriad.js","./components/TasksComponent":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/TasksComponent.js","react":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js","react-router":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-router/lib/index.js"}],"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/AboutComponent.js":[functio n(require,module,exports){ },{"./components/AboutComponent":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/js/components/AboutComponent.js","./components/ConfigComponent":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/js/components/ConfigComponent.js","./components/FlexComponent":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/js/components/FlexComponent.js","./components/Myriad":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/js/components/Myriad.js","./components/TasksComponent":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/js/components/TasksComponent.js","react":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js","react-router":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-router/lib/index.js"}],"/Users/ashankar/MapR/santoshmyriad/myriad-sched uler/src/main/resources/webapp/js/components/AboutComponent.js":[function(require,module,exports){ +},{"./components/AboutComponent":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/AboutComponent.js","./components/ConfigComponent":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/ConfigComponent.js","./components/FlexComponent":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/FlexComponent.js","./components/Myriad":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/Myriad.js","./components/TasksComponent":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/TasksComponent.js","react":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js","react-router":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-router/lib/index.js"}],"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/AboutComponent.js":[functio n(require,module,exports){ +======= +},{"./components/AboutComponent":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/js/components/AboutComponent.js","./components/ConfigComponent":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/js/components/ConfigComponent.js","./components/FlexComponent":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/js/components/FlexComponent.js","./components/HelpComponent":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/js/components/HelpComponent.js","./components/Myriad":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/js/components/Myriad.js","./components/ShutdownFrameworkComponent":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/js/components/ShutdownFrameworkComponent.js","./components/ShutdownGracefulComponent":"/home/pdread/wor kspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/js/components/ShutdownGracefulComponent.js","./components/ShutdownRmOnlyComponent":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/js/components/ShutdownRmOnlyComponent.js","./components/TasksComponent":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/js/components/TasksComponent.js","react":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js","react-router":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-router/lib/index.js"}],"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/js/components/AboutComponent.js":[function(require,module,exports){ +>>>>>>> 4721509... Update var React = require('react'); var AboutComponent = React.createClass({ @@ -61,7 +76,13 @@ var AboutComponent = React.createClass({ module.exports = AboutComponent; +},{"react":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js"}],"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/ConfigComponent.js":[function(require,module,exports){ },{"react":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js"}],"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/js/components/ConfigComponent.js":[function(require,module,exports){ +<<<<<<< HEAD +},{"react":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js"}],"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/ConfigComponent.js":[function(require,module,exports){ +======= +},{"react":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js"}],"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/js/components/ConfigComponent.js":[function(require,module,exports){ +>>>>>>> 4721509... Update var React = require('react'); var ProfileComponent = require('../components/ProfileComponent'); var RawJSONComponent = require('../components/RawJSONComponent'); @@ -100,7 +121,13 @@ var ConfigComponent = React.createClass({ module.exports = ConfigComponent; +},{"../components/ProfileComponent":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/ProfileComponent.js","../components/RawJSONComponent":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/RawJSONComponent.js","react":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js"}],"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/FlexComponent.js":[function(require,module,exports){ },{"../components/ProfileComponent":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/js/components/ProfileComponent.js","../components/RawJSONComponent":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/js/components/RawJSONComponent.js","react":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js"}],"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/js/components/FlexComponent.js":[function(require,module,exports){ +<<<<<<< HEAD +},{"../components/ProfileComponent":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/ProfileComponent.js","../components/RawJSONComponent":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/RawJSONComponent.js","react":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js"}],"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/FlexComponent.js":[function(require,module,exports){ +======= +},{"../components/ProfileComponent":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/js/components/ProfileComponent.js","../components/RawJSONComponent":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/js/components/RawJSONComponent.js","react":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js"}],"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/js/components/FlexComponent.js":[function(require,module,exports){ +>>>>>>> 4721509... Update var React = require('react'); var FlexUpComponent = require('../components/FlexUpComponent'); var FlexDownComponent = require('../components/FlexDownComponent'); @@ -125,7 +152,13 @@ var FlexComponent = React.createClass({ module.exports = FlexComponent; +},{"../components/FlexDownComponent":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/FlexDownComponent.js","../components/FlexUpComponent":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/FlexUpComponent.js","react":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js"}],"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/FlexDownComponent.js":[function(require,module,exports){ },{"../components/FlexDownComponent":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/js/components/FlexDownComponent.js","../components/FlexUpComponent":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/js/components/FlexUpComponent.js","react":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js"}],"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/js/components/FlexDownComponent.js":[function(require,module,exports){ +<<<<<<< HEAD +},{"../components/FlexDownComponent":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/FlexDownComponent.js","../components/FlexUpComponent":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/FlexUpComponent.js","react":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js"}],"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/FlexDownComponent.js":[function(require,module,exports){ +======= +},{"../components/FlexDownComponent":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/js/components/FlexDownComponent.js","../components/FlexUpComponent":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/js/components/FlexUpComponent.js","react":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js"}],"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/js/components/FlexDownComponent.js":[function(require,module,exports){ +>>>>>>> 4721509... Update var React = require('react'); var ReactBootstrap = require('react-bootstrap') , Input = ReactBootstrap.Input @@ -264,7 +297,13 @@ var FlexDownComponent = React.createClass({ module.exports = FlexDownComponent; +},{"react":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js","react-bootstrap":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-bootstrap/lib/main.js","react-router":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-router/lib/index.js","superagent":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/superagent/lib/client.js"}],"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/FlexUpComponent.js":[function(require,module,exports){ },{"react":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js","react-bootstrap":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-bootstrap/lib/main.js","react-router":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-router/lib/index.js","superagent":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/node_modules/superagent/lib/client.js"}],"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/js/components/FlexUpComponent.js":[function(require,module,exports){ +<<<<<<< HEAD +},{"react":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js","react-bootstrap":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-bootstrap/lib/main.js","react-router":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-router/lib/index.js","superagent":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/superagent/lib/client.js"}],"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/FlexUpComponent.js":[function(require,module,exports){ +======= +},{"react":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js","react-bootstrap":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-bootstrap/lib/main.js","react-router":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-router/lib/index.js","superagent":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/superagent/lib/client.js"}],"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/js/components/FlexUpComponent.js":[function(require,module,exports){ +>>>>>>> 4721509... Update var React = require('react'); var ReactBootstrap = require('react-bootstrap') , Input = ReactBootstrap.Input @@ -402,7 +441,54 @@ var FlexUpComponent = React.createClass({ module.exports = FlexUpComponent; +},{"react":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js","react-bootstrap":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-bootstrap/lib/main.js","react-router":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-router/lib/index.js","superagent":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/superagent/lib/client.js"}],"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/Myriad.js":[function(require,module,exports){ },{"react":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js","react-bootstrap":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-bootstrap/lib/main.js","react-router":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-router/lib/index.js","superagent":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/node_modules/superagent/lib/client.js"}],"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/js/components/Myriad.js":[function(require,module,exports){ +<<<<<<< HEAD +},{"react":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js","react-bootstrap":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-bootstrap/lib/main.js","react-router":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-router/lib/index.js","superagent":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/superagent/lib/client.js"}],"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/Myriad.js":[function(require,module,exports){ +======= +},{"react":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js","react-bootstrap":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-bootstrap/lib/main.js","react-router":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-router/lib/index.js","superagent":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/superagent/lib/client.js"}],"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/js/components/HelpComponent.js":[function(require,module,exports){ +var React = require('react'); + +var HelpComponent = React.createClass({ + displayName: "HelpComponent", + + render: function () { + return( + React.createElement("div", null, + React.createElement("h4", null, "Myriad dropdown menu"), + React.createElement("ul", null, + React.createElement("li", null, "Shutdown RM Only"), + React.createElement("p", null, "Stop only the ResourceManager. The excutors and tasks continue to run."), + React.createElement("li", null, "Shutdown Framework, Stopping Driver"), + React.createElement("p", null, " This will stop the driver in failover mode, which will stop the executor and tasks, then stop the ResourceManager." + ' ' + + "This requires the ResourceManager to be either in HA mode or restarted so that it re-registers with Mesos. "), + React.createElement("li", null, "Shutdown Framework, Aborting Driver"), + React.createElement("p", null, " This will shutdown all the tasks, then send a FrameworkMessage shutdown to the executor, then exits the ResourceManager." + ' ' + + "This allows the ResourceManager to be started backup without requiring it to re-register or be in High Availability (HA) mode, great for testing.") + ), + React.createElement("h4", null, "Flex tab"), + React.createElement("p", null, "Allows you to stand up or stop task resources"), + React.createElement("h4", null, "Tasks tab"), + React.createElement("p", null, "Allows you to monitor running task states"), + React.createElement("h4", null, "Help menu"), + React.createElement("ul", null, + React.createElement("li", null, "Menu options"), + React.createElement("p", null, "This text"), + React.createElement("li", null, "About Myriad"), + React.createElement("p", null, "Description of Myriad and its profiles") + ), + React.createElement("h4", null, "Config tab"), + React.createElement("p", null, "Shows Myriad configuration information") + ) + )} + +}); + +module.exports = HelpComponent; + + +},{"react":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js"}],"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/js/components/Myriad.js":[function(require,module,exports){ +>>>>>>> 4721509... Update var React = require('react'); var NavbarComponent = require('../components/NavbarComponent'); @@ -509,12 +595,20 @@ var Myriad = React.createClass({ module.exports = Myriad; +},{"../components/NavbarComponent":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/NavbarComponent.js","react":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js","react-router":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-router/lib/index.js","superagent":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/superagent/lib/client.js","xml2js":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/xml2js/lib/xml2js.js"}],"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/NavbarComponent.js":[function(require,module,exports){ },{"../components/NavbarComponent":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/js/components/NavbarComponent.js","react":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js","react-router":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-router/lib/index.js","superagent":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/node_modules/superagent/lib/client.js","xml2js":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/node_modules/xml2js/lib/xml2js.js"}],"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/js/components/NavbarComponent.js":[function(require,module,exports){ +<<<<<<< HEAD +},{"../components/NavbarComponent":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/NavbarComponent.js","react":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js","react-router":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-router/lib/index.js","superagent":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/superagent/lib/client.js","xml2js":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/xml2js/lib/xml2js.js"}],"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/NavbarComponent.js":[function(require,module,exports){ +======= +},{"../components/NavbarComponent":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/js/components/NavbarComponent.js","react":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js","react-router":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-router/lib/index.js","superagent":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/superagent/lib/client.js","xml2js":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/xml2js/lib/xml2js.js"}],"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/js/components/NavbarComponent.js":[function(require,module,exports){ +>>>>>>> 4721509... Update var React = require('react'); var ReactBootstrap = require('react-bootstrap') , Nav = ReactBootstrap.Nav , Navbar = ReactBootstrap.Navbar + , DropdownButton = ReactBootstrap.DropdownButton + , MenuItem = ReactBootstrap.MenuItem , Label = ReactBootstrap.Label; var ReactRouterBootstrap = require('react-router-bootstrap') @@ -527,16 +621,34 @@ var NavbarComponent = React.createClass({displayName: "NavbarComponent", render: function () { return( +<<<<<<< HEAD React.createElement(Navbar, {fixedTop: true, inverse: true}, React.createElement(Nav, null, React.createElement("a", {className: "navbar-brand", href: "#"}, React.createElement("img", {src: "/img/navbar_logo.png"}) ) +======= + React.createElement(Navbar, {fixedTop: true}, + React.createElement(Nav, {bsStyle: "tabs"}, + React.createElement(DropdownButton, {title: "Myriad", naveItem: true}, + React.createElement(NavItemLink, {to: "rmDown"}, "Shutdown RM Only"), + React.createElement(NavItemLink, {to: "frameworkDown"}, "Shutdown Framework, Stopping Driver"), + React.createElement(NavItemLink, {to: "gracefulDown"}, "Shutdown Framework, Aborting Driver") + ) +>>>>>>> 4721509... Update ), React.createElement(Nav, null, React.createElement(NavItemLink, {to: "flex"}, "Flex"), React.createElement(NavItemLink, {to: "tasks"}, "Tasks") ), + + React.createElement(Nav, {bsStyle: "tabs"}, + React.createElement(DropdownButton, {title: "Help", naveItem: true}, + React.createElement(NavItemLink, {to: "help"}, "Menu Options"), + React.createElement(NavItemLink, {to: "about"}, "About Myriad") + ) + ), + React.createElement(Nav, {right: true}, React.createElement(NavItemLink, {to: "config"}, "Config"), React.createElement("span", {className: "navbar-text"}, @@ -552,7 +664,13 @@ var NavbarComponent = React.createClass({displayName: "NavbarComponent", module.exports = NavbarComponent; +},{"react":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js","react-bootstrap":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-bootstrap/lib/main.js","react-router-bootstrap":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-router-bootstrap/lib/index.js"}],"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/ProfileComponent.js":[function(require,module,exports){ },{"react":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js","react-bootstrap":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-bootstrap/lib/main.js","react-router-bootstrap":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-router-bootstrap/lib/index.js"}],"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/js/components/ProfileComponent.js":[function(require,module,exports){ +<<<<<<< HEAD +},{"react":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js","react-bootstrap":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-bootstrap/lib/main.js","react-router-bootstrap":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-router-bootstrap/lib/index.js"}],"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/ProfileComponent.js":[function(require,module,exports){ +======= +},{"react":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js","react-bootstrap":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-bootstrap/lib/main.js","react-router-bootstrap":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-router-bootstrap/lib/index.js"}],"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/js/components/ProfileComponent.js":[function(require,module,exports){ +>>>>>>> 4721509... Update var React = require('react'); var ProfileComponent = React.createClass({ @@ -576,7 +694,13 @@ var ProfileComponent = React.createClass({ module.exports = ProfileComponent; +},{"react":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js"}],"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/RawJSONComponent.js":[function(require,module,exports){ },{"react":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js"}],"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/js/components/RawJSONComponent.js":[function(require,module,exports){ +<<<<<<< HEAD +},{"react":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js"}],"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/RawJSONComponent.js":[function(require,module,exports){ +======= +},{"react":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js"}],"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/js/components/RawJSONComponent.js":[function(require,module,exports){ +>>>>>>> 4721509... Update var React = require('react'); @@ -597,7 +721,274 @@ var RawJSONComponent = React.createClass({ module.exports = RawJSONComponent; +},{"react":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js"}],"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/TaskListComponent.js":[function(require,module,exports){ },{"react":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js"}],"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/js/components/TaskListComponent.js":[function(require,module,exports){ +<<<<<<< HEAD +},{"react":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js"}],"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/TaskListComponent.js":[function(require,module,exports){ +======= +},{"react":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js"}],"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/js/components/ShutdownFrameworkComponent.js":[function(require,module,exports){ +var React = require('react'); +var ReactBootstrap = require('react-bootstrap') + , Button = ReactBootstrap.Button + , Modal = ReactBootstrap.Modal; + +var OverlayMixin = ReactBootstrap.OverlayMixin; +var Navigation = require('react-router').Navigation; +var request = require('superagent'); + +var XModal = React.createClass({displayName: "XModal", + mixins: [OverlayMixin], + + getInitialState() { + return { + isModalOpen: false + }; + }, + + handleToggle() { + // For whatever reason this toggle does not work as claimed on line....so cheat. + if (!this.state.isModalOpen) + document.getElementById('shutdownModal').style.visibility = "hidden"; + this.setState({ + isModalOpen: !this.state.isModalOpen + }); + }, + render() { + return ( React.createElement(Modal, React.__spread({}, this.props, {bsStyle: "primary", id: "shutdownModal", title: "Shutdown Myriad Framework ?", animation: false, onRequestHide: this.handleToggle}), + React.createElement("div", {className: "modal-body"}, + React.createElement("p", null, " This will stop the driver in failover mode, which will stop the executor and tasks, then stop the ResourceManager."), + React.createElement("p", null, " This requires the ResourceManager to be either in HA mode or restarted so that it re-registers with Mesos. ") + ), + React.createElement("div", {className: "modal-footer"}, + React.createElement(Button, {bsStyle: "default", onClick: function() { + this.handleToggle(); + this.props.onCancel(); + }.bind(this)}, "Cancel"), + React.createElement(Button, {bsStyle: "success", onClick: function(){ + this.handleToggle(); + this.props.onShutdown(); + }.bind(this)}, "Continue") + ) + )); + }, + + renderOverlay() { + return React.createElement("span", null); + } +}); + +var ShutdownFrameworkComponent = React.createClass({ + mixins: [Navigation], + + displayName: "ShutdownFrameworkComponent", + + render() { + return ( + React.createElement(XModal, {onShutdown: this.onRequestShutdown, onCancel: this.onCancel}) + ); + }, + onCancel : function() { + this.transitionTo("tasks"); + }, + onRequestShutdown: function() { + console.log( "shutting down Myriad .... "); + request.get('/api/framework/shutdown/framework') + .set('Content-Type', 'application/json') + .end(function(err, res){ + console.log("Result from /api/framework/shutdown/framework"); + console.log(res); + if (!err) { + console.log("Shutdown Myraid framework successful!"); + } else { + console.log('Shutdown Myraid framework failed: ' + res.text); + } + }.bind(this)); + + this.transitionTo("tasks"); + }, + +}); + +module.exports = ShutdownFrameworkComponent; + + +},{"react":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js","react-bootstrap":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-bootstrap/lib/main.js","react-router":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-router/lib/index.js","superagent":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/superagent/lib/client.js"}],"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/js/components/ShutdownGracefulComponent.js":[function(require,module,exports){ +var React = require('react'); +var ReactBootstrap = require('react-bootstrap') + , Button = ReactBootstrap.Button + , Modal = ReactBootstrap.Modal; + +var OverlayMixin = ReactBootstrap.OverlayMixin; +var Navigation = require('react-router').Navigation; +var request = require('superagent'); + +var XModalGrace = React.createClass({displayName: "XModalGrace", + mixins: [OverlayMixin], + + getInitialState() { + return { + isModalOpen: false + }; + }, + + handleToggle() { + // For whatever reason this toggle does not work as claimed on line....so cheat. + if (!this.state.isModalOpen) + document.getElementById('shutdownModalXModalGrace').style.visibility = "hidden"; + this.setState({ + isModalOpen: !this.state.isModalOpen + }); + }, + + render() { + return ( React.createElement(Modal, React.__spread({}, this.props, {bsStyle: "primary", id: "shutdownModalXModalGrace", title: "Shutdown Myriad Gracefully?", animation: false, onRequestHide: this.handleToggle}), + React.createElement("div", {className: "modal-body"}, + React.createElement("p", null, " This will shutdown all the tasks, then send a FrameworkMessage shutdown to the executor, then exits the ResourceManager. "), + React.createElement("p", null, " This allows the ResourceManager to be started backup without requiring it to re-register or be in HA mode, great for testing.") + ), + React.createElement("div", {className: "modal-footer"}, + React.createElement(Button, {bsStyle: "default", onClick: function() { + this.handleToggle + this.props.onCancel(); + }.bind(this)}, "Cancel"), + React.createElement(Button, {bsStyle: "success", onClick: function(){ + this.handleToggle(); + this.props.onShutdown(); + }.bind(this)}, "Continue") + ) + )); + }, + + renderOverlay() { + return React.createElement("span", null); + } +}); + +var ShutdownGracefulComponent = React.createClass({ + mixins: [Navigation], + + displayName: "ShutdownGracefulComponent", + + render() { + return ( + React.createElement(XModalGrace, {onShutdown: this.onRequestShutdown, onCancel: this.onCancel}) + ); + }, + onCancel : function() { + console.log("onCancel"); + this.transitionTo("tasks"); + }, + onRequestShutdown: function() { + console.log( "shutting down Myriad .... "); + request.get('/api/framework/shutdown/graceful') + .set('Content-Type', 'application/json') + .end(function(err, res){ + console.log("Result from /api/framework/shutdown/graceful"); + console.log(res); + if (!err) { + console.log("Shutdown myriad graceful successful!"); + } else { + console.log('Shutdown myriad graceful failed: ' + res.text); + } + }.bind(this)); + + this.transitionTo("tasks"); + }, + +}); + +module.exports = ShutdownGracefulComponent; + + +},{"react":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js","react-bootstrap":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-bootstrap/lib/main.js","react-router":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-router/lib/index.js","superagent":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/superagent/lib/client.js"}],"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/js/components/ShutdownRmOnlyComponent.js":[function(require,module,exports){ +var React = require('react'); +var ReactBootstrap = require('react-bootstrap') + , Button = ReactBootstrap.Button + , Modal = ReactBootstrap.Modal; + +var OverlayMixin = ReactBootstrap.OverlayMixin; +var Navigation = require('react-router').Navigation; +var request = require('superagent'); + +var XModalRMOnly = React.createClass({displayName: "XModalRMOnly", + mixins: [OverlayMixin], + + getInitialState() { + return { + isModalOpen: false + }; + }, + + handleToggle() { + // For whatever reason this toggle does not work as claimed on line....so cheat. + if (!this.state.isModalOpen) + document.getElementById('shutdownModalXModalRMOnly').style.visibility = "hidden"; + this.setState({ + isModalOpen: !this.state.isModalOpen + }); + + }, + render() { + return ( React.createElement(Modal, React.__spread({}, this.props, {bsStyle: "primary", id: "shutdownModalXModalRMOnly", title: "Shutdown RM Only ?", animation: false, onRequestHide: this.handleToggle}), + React.createElement("div", {className: "modal-body"}, + React.createElement("p", null, "This will only stop the ResourceManager, the executor and tasks will continure to run. ") + ), + React.createElement("div", {className: "modal-footer"}, + React.createElement(Button, {bsStyle: "default", onClick: function() { + this.handleToggle(); + this.props.onCancel(); + }.bind(this)}, "Cancel"), + React.createElement(Button, {bsStyle: "success", onClick: function(){ + this.handleToggle(); + this.props.onShutdown(); + }.bind(this)}, "Continue") + ) + )); + }, + + renderOverlay() { + return React.createElement("span", null); + } +}); + +var ShutdownRmOnlyComponent = React.createClass({ + mixins: [Navigation], + + displayName: "ShutdownRmOnlyComponent", + + render() { + return ( + React.createElement(XModalRMOnly, {onShutdown: this.onRequestShutdown, onCancel: this.onCancel}) + ); + }, + + onCancel : function() { + this.transitionTo("tasks"); + }, + onRequestShutdown: function() { + console.log( "shutting down Myriad .... "); + request.get('/api/framework/shutdown/managerOnly') + .set('Content-Type', 'application/json') + .end(function(err, res){ + console.log("Result from /api/framework/shutdown/managerOnly"); + console.log(res); + if (!err) { + console.log("Shutdown RM Only successful!"); + } else { + console.log('Shutdown RM Only failed: ' + res.text); + } + }.bind(this)); + + this.transitionTo("tasks"); + }, + +}); + +module.exports = ShutdownRmOnlyComponent; + + +},{"react":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js","react-bootstrap":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-bootstrap/lib/main.js","react-router":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react-router/lib/index.js","superagent":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/superagent/lib/client.js"}],"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/js/components/TaskListComponent.js":[function(require,module,exports){ +>>>>>>> 4721509... Update var React = require('react'); var TaskListComponent = React.createClass({ @@ -619,7 +1010,13 @@ var TaskListComponent = React.createClass({ module.exports = TaskListComponent; +},{"react":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js"}],"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/TasksComponent.js":[function(require,module,exports){ },{"react":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js"}],"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/js/components/TasksComponent.js":[function(require,module,exports){ +<<<<<<< HEAD +},{"react":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js"}],"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/TasksComponent.js":[function(require,module,exports){ +======= +},{"react":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js"}],"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/js/components/TasksComponent.js":[function(require,module,exports){ +>>>>>>> 4721509... Update var React = require('react'); var TaskListComponent = require('../components/TaskListComponent'); var changeCase = require('change-case'); @@ -659,10 +1056,20 @@ var TasksComponent = React.createClass({ module.exports = TasksComponent; +},{"../components/TaskListComponent":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/TaskListComponent.js","change-case":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/change-case/change-case.js","react":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js"}],"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/browserify/node_modules/browser-resolve/empty.js":[function(require,module,exports){ },{"../components/TaskListComponent":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/js/components/TaskListComponent.js","change-case":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/node_modules/change-case/change-case.js","react":"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js"}],"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/node_modules/browserify/node_modules/browser-resolve/empty.js":[function(require,module,exports){ +<<<<<<< HEAD +},{"../components/TaskListComponent":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/js/components/TaskListComponent.js","change-case":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/change-case/change-case.js","react":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js"}],"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/browserify/node_modules/browser-resolve/empty.js":[function(require,module,exports){ +},{}],"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/browserify/node_modules/buffer/index.js":[function(require,module,exports){ },{}],"/Users/ashankar/MapR/santoshmyriad/myriad-scheduler/src/main/resources/webapp/node_modules/browserify/node_modules/buffer/index.js":[function(require,module,exports){ (function (global){ +},{}],"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/browserify/node_modules/buffer/index.js":[function(require,module,exports){ +======= +},{"../components/TaskListComponent":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/js/components/TaskListComponent.js","change-case":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/change-case/change-case.js","react":"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/react/react.js"}],"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/browserify/node_modules/browser-resolve/empty.js":[function(require,module,exports){ + +},{}],"/home/pdread/workspace/myriad-55-destroy-myriad/myriad-scheduler/src/main/resources/webapp/node_modules/browserify/node_modules/buffer/index.js":[function(require,module,exports){ +>>>>>>> 4721509... Update /*! * The buffer module from node.js, for the browser. * @@ -696,15 +1103,15 @@ var rootParent = {} * Note: * * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, - * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. + * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. * * - Safari 5-7 lacks support for changing the `Object.prototype.constructor` property * on objects. * - * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. + * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. * - * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of - * incorrect length in some situations. + * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of + * incorrect length in some situations. * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they * get the Object implementation, which is slower but behaves correctly. @@ -802,8 +1209,8 @@ function fromObject (that, object) { if (typeof ArrayBuffer !== 'undefined') { if (object.buffer instanceof ArrayBuffer) { - return fromTypedArray(that, object) - } + return fromTypedArray(that, object) + } if (object instanceof ArrayBuffer) { return fromArrayBuffer(that, object) } @@ -1008,25 +1415,25 @@ function byteLength (string, encoding) { var loweredCase = false for (;;) { switch (encoding) { - case 'ascii': - case 'binary': + case 'ascii': + case 'binary': // Deprecated - case 'raw': + case 'raw': case 'raws': return len case 'utf8': case 'utf-8': return utf8ToBytes(string).length - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': return len * 2 - case 'hex': + case 'hex': return len >>> 1 - case 'base64': - return base64ToBytes(string).length - default: + case 'base64': + return base64ToBytes(string).length + default: if (loweredCase) return utf8ToBytes(string).length // assume utf8 encoding = ('' + encoding).toLowerCase() loweredCase = true @@ -1337,7 +1744,7 @@ function utf8Slice (buf, start, end) { if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { codePoint = tempCodePoint } - } + } break case 4: secondByte = buf[i + 1] @@ -1350,7 +1757,7 @@ function utf8Slice (buf, start, end) { } } } - } + } if (codePoint === null) { // we did not generate a valid codePoint so insert a @@ -1362,7 +1769,7 @@ function utf8Slice (buf, start, end) { codePoint -= 0x10000 res.push(codePoint >>> 10 & 0x3FF | 0xD800) codePoint = 0xDC00 | codePoint & 0x3FF - } +} res.push(codePoint) i += bytesPerSequence @@ -2116,11 +2523,11 @@ function utf8ToBytes (string, units) { continue } - // valid lead - leadSurrogate = codePoint + // valid lead + leadSurrogate = codePoint - continue - } + continue + } // 2 leads in a row if (codePoint < 0xDC00) { @@ -2136,7 +2543,7 @@ function utf8ToBytes (string, units) { if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) } - leadSurrogate = null + leadSurrogate = null // encode utf8 if (codePoint < 0x80) { @@ -2208,9 +2615,31 @@ function blitBuffer (src, dst, offset, length) { return i } +function decodeUtf8Char (str) { + try { + return decodeURIComponent(str) + } catch (err) { + return String.fromCharCode(0xFFFD) // UTF 8 invalid char + } +} + +},{"base64-js":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/browserify/node_modules/buffer/node_modules/base64-js/lib/b64.js","ieee754":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/browserify/node_modules/buffer/node_modules/ieee754/index.js","is-array":"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/browserify/node_modules/buffer/node_modules/is-array/index.js"}],"/Users/klucar/code/myriad/myriad-scheduler/src/main/resources/webapp/node_modules/browserify/node_modules/buffer/node_modules/base64-js/lib/b64.js":[function(require,module,exports){ }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) //# sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9idWZmZXIvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Q UFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0 E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0F BQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQ UNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQT tBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF DQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7 QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ 0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0 FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBUaGUgYnVmZmVyIG1vZHVsZSBmcm9tIG5vZGUuanMsIGZvciB0aGUgYnJvd3Nlci5cbiAqXG4gKiBAYXV0aG9yICAgRmVyb3NzIEFib3VraGFkaWplaCA8ZmVyb3NzQGZlcm9zcy5vcmc+IDxodHRwOi8vZmVyb3NzLm9yZz5cbiAqIEBsaWNlbnNlICBNSVRcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gKi9cblxudmFyIGJhc2U2NCA9IHJlcXVpcmUoJ2Jhc2U2NC1qcycpXG52YXIgaWVlZTc1NCA9IHJlcXVpcmUoJ2llZWU3NTQnKVxudmFyIGlzQXJyYXkgPSByZXF1aXJlKCdpcy1hcnJ heScpXG5cbmV4cG9ydHMuQnVmZmVyID0gQnVmZmVyXG5leHBvcnRzLlNsb3dCdWZmZXIgPSBTbG93QnVmZmVyXG5leHBvcnRzLklOU1BFQ1RfTUFYX0JZVEVTID0gNTBcbkJ1ZmZlci5wb29sU2l6ZSA9IDgxOTIgLy8gbm90IHVzZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvblxuXG52YXIgcm9vdFBhcmVudCA9IHt9XG5cbi8qKlxuICogSWYgYEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUYDpcbiAqICAgPT09IHRydWUgICAgVXNlIFVpbnQ4QXJyYXkgaW1wbGVtZW50YXRpb24gKGZhc3Rlc3QpXG4gKiAgID09PSBmYWxzZSAgIFVzZSBPYmplY3QgaW1wbGVtZW50YXRpb24gKG1vc3QgY29tcGF0aWJsZSwgZXZlbiBJRTYpXG4gKlxuICogQnJvd3NlcnMgdGhhdCBzdXBwb3J0IHR5cGVkIGFycmF5cyBhcmUgSUUgMTArLCBGaXJlZm94IDQrLCBDaHJvbWUgNyssIFNhZmFyaSA1LjErLFxuICogT3BlcmEgMTEuNissIGlPUyA0LjIrLlxuICpcbiAqIER1ZSB0byB2YXJpb3VzIGJyb3dzZXIgYnVncywgc29tZXRpbWVzIHRoZSBPYmplY3QgaW1wbGVtZW50YXRpb24gd2lsbCBiZSB1c2VkIGV2ZW5cbiAqIHdoZW4gdGhlIGJyb3dzZXIgc3VwcG9ydHMgdHlwZWQgYXJyYXlzLlxuICpcbiAqIE5vdGU6XG4gKlxuICogICAtIEZpcmVmb3ggNC0yOSBsYWNrcyBzdXBwb3J0IGZvciBhZGRpbmcgbmV3IHByb3BlcnRpZXMgdG8gYFVpbnQ4QXJyYXlgIGluc3RhbmNlcyxcbiAqICAgICBTZWU6IGh0dHBzOi8vYnVnemlsbGEubW96aWxs YS5vcmcvc2hvd19idWcuY2dpP2lkPTY5NTQzOC5cbiAqXG4gKiAgIC0gU2FmYXJpIDUtNyBsYWNrcyBzdXBwb3J0IGZvciBjaGFuZ2luZyB0aGUgYE9iamVjdC5wcm90b3R5cGUuY29uc3RydWN0b3JgIHByb3BlcnR5XG4gKiAgICAgb24gb2JqZWN0cy5cbiAqXG4gKiAgIC0gQ2hyb21lIDktMTAgaXMgbWlzc2luZyB0aGUgYFR5cGVkQXJyYXkucHJvdG90eXBlLnN1YmFycmF5YCBmdW5jdGlvbi5cbiAqXG4gKiAgIC0gSUUxMCBoYXMgYSBicm9rZW4gYFR5cGVkQXJyYXkucHJvdG90eXBlLnN1YmFycmF5YCBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFycmF5cyBvZlxuICogICAgIGluY29ycmVjdCBsZW5ndGggaW4gc29tZSBzaXR1YXRpb25zLlxuXG4gKiBXZSBkZXRlY3QgdGhlc2UgYnVnZ3kgYnJvd3NlcnMgYW5kIHNldCBgQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRgIHRvIGBmYWxzZWAgc28gdGhleVxuICogZ2V0IHRoZSBPYmplY3QgaW1wbGVtZW50YXRpb24sIHdoaWNoIGlzIHNsb3dlciBidXQgYmVoYXZlcyBjb3JyZWN0bHkuXG4gKi9cbkJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUID0gZ2xvYmFsLlRZUEVEX0FSUkFZX1NVUFBPUlQgIT09IHVuZGVmaW5lZFxuICA/IGdsb2JhbC5UWVBFRF9BUlJBWV9TVVBQT1JUXG4gIDogdHlwZWRBcnJheVN1cHBvcnQoKVxuXG5mdW5jdGlvbiB0eXBlZEFycmF5U3VwcG9ydCAoKSB7XG4gIGZ1bmN0aW9uIEJhciAoKSB7fVxuICB0cnkge1xuICAgIHZhciBhcnIgPSBuZ XcgVWludDhBcnJheSgxKVxuICAgIGFyci5mb28gPSBmdW5jdGlvbiAoKSB7IHJldHVybiA0MiB9XG4gICAgYXJyLmNvbnN0cnVjdG9yID0gQmFyXG4gICAgcmV0dXJuIGFyci5mb28oKSA9PT0gNDIgJiYgLy8gdHlwZWQgYXJyYXkgaW5zdGFuY2VzIGNhbiBiZSBhdWdtZW50ZWRcbiAgICAgICAgYXJyLmNvbnN0cnVjdG9yID09PSBCYXIgJiYgLy8gY29uc3RydWN0b3IgY2FuIGJlIHNldFxuICAgICAgICB0eXBlb2YgYXJyLnN1YmFycmF5ID09PSAnZnVuY3Rpb24nICYmIC8vIGNocm9tZSA5LTEwIGxhY2sgYHN1YmFycmF5YFxuICAgICAgICBhcnIuc3ViYXJyYXkoMSwgMSkuYnl0ZUxlbmd0aCA9PT0gMCAvLyBpZTEwIGhhcyBicm9rZW4gYHN1YmFycmF5YFxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuZnVuY3Rpb24ga01heExlbmd0aCAoKSB7XG4gIHJldHVybiBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVFxuICAgID8gMHg3ZmZmZmZmZlxuICAgIDogMHgzZmZmZmZmZlxufVxuXG4vKipcbiAqIENsYXNzOiBCdWZmZXJcbiAqID09PT09PT09PT09PT1cbiAqXG4gKiBUaGUgQnVmZmVyIGNvbnN0cnVjdG9yIHJldHVybnMgaW5zdGFuY2VzIG9mIGBVaW50OEFycmF5YCB0aGF0IGFyZSBhdWdtZW50ZWRcbiAqIHdpdGggZnVuY3Rpb24gcHJvcGVydGllcyBmb3IgYWxsIHRoZSBub2RlIGBCdWZmZXJgIEFQSSBmdW5jdGlvbnMuIFdlIHVzZVxuICogYFVpbnQ4QXJyYXlgIHNvIHRoYX Qgc3F1YXJlIGJyYWNrZXQgbm90YXRpb24gd29ya3MgYXMgZXhwZWN0ZWQgLS0gaXQgcmV0dXJuc1xuICogYSBzaW5nbGUgb2N0ZXQuXG4gKlxuICogQnkgYXVnbWVudGluZyB0aGUgaW5zdGFuY2VzLCB3ZSBjYW4gYXZvaWQgbW9kaWZ5aW5nIHRoZSBgVWludDhBcnJheWBcbiAqIHByb3RvdHlwZS5cbiAqL1xuZnVuY3Rpb24gQnVmZmVyIChhcmcpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEJ1ZmZlcikpIHtcbiAgICAvLyBBdm9pZCBnb2luZyB0aHJvdWdoIGFuIEFyZ3VtZW50c0FkYXB0b3JUcmFtcG9saW5lIGluIHRoZSBjb21tb24gY2FzZS5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHJldHVybiBuZXcgQnVmZmVyKGFyZywgYXJndW1lbnRzWzFdKVxuICAgIHJldHVybiBuZXcgQnVmZmVyKGFyZylcbiAgfVxuXG4gIHRoaXMubGVuZ3RoID0gMFxuICB0aGlzLnBhcmVudCA9IHVuZGVmaW5lZFxuXG4gIC8vIENvbW1vbiBjYXNlLlxuICBpZiAodHlwZW9mIGFyZyA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gZnJvbU51bWJlcih0aGlzLCBhcmcpXG4gIH1cblxuICAvLyBTbGlnaHRseSBsZXNzIGNvbW1vbiBjYXNlLlxuICBpZiAodHlwZW9mIGFyZyA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZnJvbVN0cmluZyh0aGlzLCBhcmcsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogJ3V0ZjgnKVxuICB9XG5cbiAgLy8gVW51c3VhbC5cbiAgcmV0dXJuIGZyb21PYmplY3Q odGhpcywgYXJnKVxufVxuXG5mdW5jdGlvbiBmcm9tTnVtYmVyICh0aGF0LCBsZW5ndGgpIHtcbiAgdGhhdCA9IGFsbG9jYXRlKHRoYXQsIGxlbmd0aCA8IDAgPyAwIDogY2hlY2tlZChsZW5ndGgpIHwgMClcbiAgaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoYXRbaV0gPSAwXG4gICAgfVxuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGZyb21TdHJpbmcgKHRoYXQsIHN0cmluZywgZW5jb2RpbmcpIHtcbiAgaWYgKHR5cGVvZiBlbmNvZGluZyAhPT0gJ3N0cmluZycgfHwgZW5jb2RpbmcgPT09ICcnKSBlbmNvZGluZyA9ICd1dGY4J1xuXG4gIC8vIEFzc3VtcHRpb246IGJ5dGVMZW5ndGgoKSByZXR1cm4gdmFsdWUgaXMgYWx3YXlzIDwga01heExlbmd0aC5cbiAgdmFyIGxlbmd0aCA9IGJ5dGVMZW5ndGgoc3RyaW5nLCBlbmNvZGluZykgfCAwXG4gIHRoYXQgPSBhbGxvY2F0ZSh0aGF0LCBsZW5ndGgpXG5cbiAgdGhhdC53cml0ZShzdHJpbmcsIGVuY29kaW5nKVxuICByZXR1cm4gdGhhdFxufVxuXG5mdW5jdGlvbiBmcm9tT2JqZWN0ICh0aGF0LCBvYmplY3QpIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihvYmplY3QpKSByZXR1cm4gZnJvbUJ1ZmZlcih0aGF0LCBvYmplY3QpXG5cbiAgaWYgKGlzQXJyYXkob2JqZWN0KSkgcmV0dXJuIGZyb21BcnJheSh0aGF0LCBvYmplY3QpXG5cbiAgaWYgKG9iamVj dCA9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbXVzdCBzdGFydCB3aXRoIG51bWJlciwgYnVmZmVyLCBhcnJheSBvciBzdHJpbmcnKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBpZiAob2JqZWN0LmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgICByZXR1cm4gZnJvbVR5cGVkQXJyYXkodGhhdCwgb2JqZWN0KVxuICAgIH1cbiAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICAgIHJldHVybiBmcm9tQXJyYXlCdWZmZXIodGhhdCwgb2JqZWN0KVxuICAgIH1cbiAgfVxuXG4gIGlmIChvYmplY3QubGVuZ3RoKSByZXR1cm4gZnJvbUFycmF5TGlrZSh0aGF0LCBvYmplY3QpXG5cbiAgcmV0dXJuIGZyb21Kc29uT2JqZWN0KHRoYXQsIG9iamVjdClcbn1cblxuZnVuY3Rpb24gZnJvbUJ1ZmZlciAodGhhdCwgYnVmZmVyKSB7XG4gIHZhciBsZW5ndGggPSBjaGVja2VkKGJ1ZmZlci5sZW5ndGgpIHwgMFxuICB0aGF0ID0gYWxsb2NhdGUodGhhdCwgbGVuZ3RoKVxuICBidWZmZXIuY29weSh0aGF0LCAwLCAwLCBsZW5ndGgpXG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheSAodGhhdCwgYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGNoZWNrZWQoYXJyYXkubGVuZ3RoKSB8IDBcbiAgdGhhdCA9IGFsbG9jYXRlKHRoYXQsIGxlbmd0aClcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZ W5ndGg7IGkgKz0gMSkge1xuICAgIHRoYXRbaV0gPSBhcnJheVtpXSAmIDI1NVxuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbi8vIER1cGxpY2F0ZSBvZiBmcm9tQXJyYXkoKSB0byBrZWVwIGZyb21BcnJheSgpIG1vbm9tb3JwaGljLlxuZnVuY3Rpb24gZnJvbVR5cGVkQXJyYXkgKHRoYXQsIGFycmF5KSB7XG4gIHZhciBsZW5ndGggPSBjaGVja2VkKGFycmF5Lmxlbmd0aCkgfCAwXG4gIHRoYXQgPSBhbGxvY2F0ZSh0aGF0LCBsZW5ndGgpXG4gIC8vIFRydW5jYXRpbmcgdGhlIGVsZW1lbnRzIGlzIHByb2JhYmx5IG5vdCB3aGF0IHBlb3BsZSBleHBlY3QgZnJvbSB0eXBlZFxuICAvLyBhcnJheXMgd2l0aCBCWVRFU19QRVJfRUxFTUVOVCA+IDEgYnV0IGl0J3MgY29tcGF0aWJsZSB3aXRoIHRoZSBiZWhhdmlvclxuICAvLyBvZiB0aGUgb2xkIEJ1ZmZlciBjb25zdHJ1Y3Rvci5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkge1xuICAgIHRoYXRbaV0gPSBhcnJheVtpXSAmIDI1NVxuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheUJ1ZmZlciAodGhhdCwgYXJyYXkpIHtcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgLy8gUmV0dXJuIGFuIGF1Z21lbnRlZCBgVWludDhBcnJheWAgaW5zdGFuY2UsIGZvciBiZXN0IHBlcmZvcm1hbmNlXG4gICAgYXJyYXkuYnl0ZUxlbmd0aFxuICAgIHRoYXQgPSBCdWZmZXIuX2F1Z21lbnQobmV3IFVpbnQ4QX JyYXkoYXJyYXkpKVxuICB9IGVsc2Uge1xuICAgIC8vIEZhbGxiYWNrOiBSZXR1cm4gYW4gb2JqZWN0IGluc3RhbmNlIG9mIHRoZSBCdWZmZXIgY2xhc3NcbiAgICB0aGF0ID0gZnJvbVR5cGVkQXJyYXkodGhhdCwgbmV3IFVpbnQ4QXJyYXkoYXJyYXkpKVxuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheUxpa2UgKHRoYXQsIGFycmF5KSB7XG4gIHZhciBsZW5ndGggPSBjaGVja2VkKGFycmF5Lmxlbmd0aCkgfCAwXG4gIHRoYXQgPSBhbGxvY2F0ZSh0aGF0LCBsZW5ndGgpXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHtcbiAgICB0aGF0W2ldID0gYXJyYXlbaV0gJiAyNTVcbiAgfVxuICByZXR1cm4gdGhhdFxufVxuXG4vLyBEZXNlcmlhbGl6ZSB7IHR5cGU6ICdCdWZmZXInLCBkYXRhOiBbMSwyLDMsLi4uXSB9IGludG8gYSBCdWZmZXIgb2JqZWN0LlxuLy8gUmV0dXJucyBhIHplcm8tbGVuZ3RoIGJ1ZmZlciBmb3IgaW5wdXRzIHRoYXQgZG9uJ3QgY29uZm9ybSB0byB0aGUgc3BlYy5cbmZ1bmN0aW9uIGZyb21Kc29uT2JqZWN0ICh0aGF0LCBvYmplY3QpIHtcbiAgdmFyIGFycmF5XG4gIHZhciBsZW5ndGggPSAwXG5cbiAgaWYgKG9iamVjdC50eXBlID09PSAnQnVmZmVyJyAmJiBpc0FycmF5KG9iamVjdC5kYXRhKSkge1xuICAgIGFycmF5ID0gb2JqZWN0LmRhdGFcbiAgICBsZW5ndGggPSBjaGVja2VkKGFycmF5Lmxlbmd0aCkgfCAwXG4gIH1cbiAgdGhhdCA9IGF sbG9jYXRlKHRoYXQsIGxlbmd0aClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxKSB7XG4gICAgdGhhdFtpXSA9IGFycmF5W2ldICYgMjU1XG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gIEJ1ZmZlci5wcm90b3R5cGUuX19wcm90b19fID0gVWludDhBcnJheS5wcm90b3R5cGVcbiAgQnVmZmVyLl9fcHJvdG9fXyA9IFVpbnQ4QXJyYXlcbn1cblxuZnVuY3Rpb24gYWxsb2NhdGUgKHRoYXQsIGxlbmd0aCkge1xuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZSwgZm9yIGJlc3QgcGVyZm9ybWFuY2VcbiAgICB0aGF0ID0gQnVmZmVyLl9hdWdtZW50KG5ldyBVaW50OEFycmF5KGxlbmd0aCkpXG4gICAgdGhhdC5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIH0gZWxzZSB7XG4gICAgLy8gRmFsbGJhY2s6IFJldHVybiBhbiBvYmplY3QgaW5zdGFuY2Ugb2YgdGhlIEJ1ZmZlciBjbGFzc1xuICAgIHRoYXQubGVuZ3RoID0gbGVuZ3RoXG4gICAgdGhhdC5faXNCdWZmZXIgPSB0cnVlXG4gIH1cblxuICB2YXIgZnJvbVBvb2wgPSBsZW5ndGggIT09IDAgJiYgbGVuZ3RoIDw9IEJ1ZmZlci5wb29sU2l6ZSA+Pj4gMVxuICBpZiAoZnJvbVBvb2wpIHRoYXQucGFyZW50ID0gcm9vdFBhcmVudFxuXG4gIHJldHVybiB0aGF0XG59XG5c bmZ1bmN0aW9uIGNoZWNrZWQgKGxlbmd0aCkge1xuICAvLyBOb3RlOiBjYW5ub3QgdXNlIGBsZW5ndGggPCBrTWF4TGVuZ3RoYCBoZXJlIGJlY2F1c2UgdGhhdCBmYWlscyB3aGVuXG4gIC8vIGxlbmd0aCBpcyBOYU4gKHdoaWNoIGlzIG90aGVyd2lzZSBjb2VyY2VkIHRvIHplcm8uKVxuICBpZiAobGVuZ3RoID49IGtNYXhMZW5ndGgoKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICdzaXplOiAweCcgKyBrTWF4TGVuZ3RoKCkudG9TdHJpbmcoMTYpICsgJyBieXRlcycpXG4gIH1cbiAgcmV0dXJuIGxlbmd0aCB8IDBcbn1cblxuZnVuY3Rpb24gU2xvd0J1ZmZlciAoc3ViamVjdCwgZW5jb2RpbmcpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNsb3dCdWZmZXIpKSByZXR1cm4gbmV3IFNsb3dCdWZmZXIoc3ViamVjdCwgZW5jb2RpbmcpXG5cbiAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoc3ViamVjdCwgZW5jb2RpbmcpXG4gIGRlbGV0ZSBidWYucGFyZW50XG4gIHJldHVybiBidWZcbn1cblxuQnVmZmVyLmlzQnVmZmVyID0gZnVuY3Rpb24gaXNCdWZmZXIgKGIpIHtcbiAgcmV0dXJuICEhKGIgIT0gbnVsbCAmJiBiLl9pc0J1ZmZlcilcbn1cblxuQnVmZmVyLmNvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJlIChhLCBiKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGEpIHx8I CFCdWZmZXIuaXNCdWZmZXIoYikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudHMgbXVzdCBiZSBCdWZmZXJzJylcbiAgfVxuXG4gIGlmIChhID09PSBiKSByZXR1cm4gMFxuXG4gIHZhciB4ID0gYS5sZW5ndGhcbiAgdmFyIHkgPSBiLmxlbmd0aFxuXG4gIHZhciBpID0gMFxuICB2YXIgbGVuID0gTWF0aC5taW4oeCwgeSlcbiAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICBpZiAoYVtpXSAhPT0gYltpXSkgYnJlYWtcblxuICAgICsraVxuICB9XG5cbiAgaWYgKGkgIT09IGxlbikge1xuICAgIHggPSBhW2ldXG4gICAgeSA9IGJbaV1cbiAgfVxuXG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gIGlmICh5IDwgeCkgcmV0dXJuIDFcbiAgcmV0dXJuIDBcbn1cblxuQnVmZmVyLmlzRW5jb2RpbmcgPSBmdW5jdGlvbiBpc0VuY29kaW5nIChlbmNvZGluZykge1xuICBzd2l0Y2ggKFN0cmluZyhlbmNvZGluZykudG9Mb3dlckNhc2UoKSkge1xuICAgIGNhc2UgJ2hleCc6XG4gICAgY2FzZSAndXRmOCc6XG4gICAgY2FzZSAndXRmLTgnOlxuICAgIGNhc2UgJ2FzY2lpJzpcbiAgICBjYXNlICdiaW5hcnknOlxuICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgY2FzZSAncmF3JzpcbiAgICBjYXNlICd1Y3MyJzpcbiAgICBjYXNlICd1Y3MtMic6XG4gICAgY2FzZSAndXRmMTZsZSc6XG4gICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgcmV0dXJuIHRydWVcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlXG4gIH 1cbn1cblxuQnVmZmVyLmNvbmNhdCA9IGZ1bmN0aW9uIGNvbmNhdCAobGlzdCwgbGVuZ3RoKSB7XG4gIGlmICghaXNBcnJheShsaXN0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcignbGlzdCBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMuJylcblxuICBpZiAobGlzdC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbmV3IEJ1ZmZlcigwKVxuICB9XG5cbiAgdmFyIGlcbiAgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgbGVuZ3RoID0gMFxuICAgIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZW5ndGggKz0gbGlzdFtpXS5sZW5ndGhcbiAgICB9XG4gIH1cblxuICB2YXIgYnVmID0gbmV3IEJ1ZmZlcihsZW5ndGgpXG4gIHZhciBwb3MgPSAwXG4gIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldXG4gICAgaXRlbS5jb3B5KGJ1ZiwgcG9zKVxuICAgIHBvcyArPSBpdGVtLmxlbmd0aFxuICB9XG4gIHJldHVybiBidWZcbn1cblxuZnVuY3Rpb24gYnl0ZUxlbmd0aCAoc3RyaW5nLCBlbmNvZGluZykge1xuICBpZiAodHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycpIHN0cmluZyA9ICcnICsgc3RyaW5nXG5cbiAgdmFyIGxlbiA9IHN0cmluZy5sZW5ndGhcbiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIDBcblxuICAvLyBVc2UgYSBmb3IgbG9vcCB0byBhdm9pZCByZWN1cnNpb25cbiAgdmFyIGxvd2VyZWRDYXN lID0gZmFsc2VcbiAgZm9yICg7Oykge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAvLyBEZXByZWNhdGVkXG4gICAgICBjYXNlICdyYXcnOlxuICAgICAgY2FzZSAncmF3cyc6XG4gICAgICAgIHJldHVybiBsZW5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGhcbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiBsZW4gKiAyXG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gbGVuID4+PiAxXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICByZXR1cm4gYmFzZTY0VG9CeXRlcyhzdHJpbmcpLmxlbmd0aFxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSByZXR1cm4gdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGggLy8gYXNzdW1lIHV0ZjhcbiAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cbkJ1ZmZlci5ieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aFxuXG4vLyBwcmUtc2V0IGZvciB2YWx1ZXMgdGhhdCBtYXkgZXhpc3QgaW4gdGhlIGZ1dHVy ZVxuQnVmZmVyLnByb3RvdHlwZS5sZW5ndGggPSB1bmRlZmluZWRcbkJ1ZmZlci5wcm90b3R5cGUucGFyZW50ID0gdW5kZWZpbmVkXG5cbmZ1bmN0aW9uIHNsb3dUb1N0cmluZyAoZW5jb2RpbmcsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcblxuICBzdGFydCA9IHN0YXJ0IHwgMFxuICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCB8fCBlbmQgPT09IEluZmluaXR5ID8gdGhpcy5sZW5ndGggOiBlbmQgfCAwXG5cbiAgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSAndXRmOCdcbiAgaWYgKHN0YXJ0IDwgMCkgc3RhcnQgPSAwXG4gIGlmIChlbmQgPiB0aGlzLmxlbmd0aCkgZW5kID0gdGhpcy5sZW5ndGhcbiAgaWYgKGVuZCA8PSBzdGFydCkgcmV0dXJuICcnXG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gaGV4U2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICAgIHJldHVybiB1dGY4U2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgICByZXR1cm4gYXNjaWlTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gYmluYXJ5U2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgI CAgICAgcmV0dXJuIGJhc2U2NFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiB1dGYxNmxlU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgICAgIGVuY29kaW5nID0gKGVuY29kaW5nICsgJycpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyAoKSB7XG4gIHZhciBsZW5ndGggPSB0aGlzLmxlbmd0aCB8IDBcbiAgaWYgKGxlbmd0aCA9PT0gMCkgcmV0dXJuICcnXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIDAsIGxlbmd0aClcbiAgcmV0dXJuIHNsb3dUb1N0cmluZy5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gZXF1YWxzIChiKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyJylcbiAgaWYgKHRoaXMgPT09IGIpIH JldHVybiB0cnVlXG4gIHJldHVybiBCdWZmZXIuY29tcGFyZSh0aGlzLCBiKSA9PT0gMFxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0ICgpIHtcbiAgdmFyIHN0ciA9ICcnXG4gIHZhciBtYXggPSBleHBvcnRzLklOU1BFQ1RfTUFYX0JZVEVTXG4gIGlmICh0aGlzLmxlbmd0aCA+IDApIHtcbiAgICBzdHIgPSB0aGlzLnRvU3RyaW5nKCdoZXgnLCAwLCBtYXgpLm1hdGNoKC8uezJ9L2cpLmpvaW4oJyAnKVxuICAgIGlmICh0aGlzLmxlbmd0aCA+IG1heCkgc3RyICs9ICcgLi4uICdcbiAgfVxuICByZXR1cm4gJzxCdWZmZXIgJyArIHN0ciArICc+J1xufVxuXG5CdWZmZXIucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJlIChiKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyJylcbiAgaWYgKHRoaXMgPT09IGIpIHJldHVybiAwXG4gIHJldHVybiBCdWZmZXIuY29tcGFyZSh0aGlzLCBiKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluZGV4T2YgPSBmdW5jdGlvbiBpbmRleE9mICh2YWwsIGJ5dGVPZmZzZXQpIHtcbiAgaWYgKGJ5dGVPZmZzZXQgPiAweDdmZmZmZmZmKSBieXRlT2Zmc2V0ID0gMHg3ZmZmZmZmZlxuICBlbHNlIGlmIChieXRlT2Zmc2V0IDwgLTB4ODAwMDAwMDApIGJ5dGVPZmZzZXQgPSAtMHg4MDAwMDAwMFxuICBieXRlT2Zmc2V0ID4+PSAwXG5cbiAgaWYgKHR oaXMubGVuZ3RoID09PSAwKSByZXR1cm4gLTFcbiAgaWYgKGJ5dGVPZmZzZXQgPj0gdGhpcy5sZW5ndGgpIHJldHVybiAtMVxuXG4gIC8vIE5lZ2F0aXZlIG9mZnNldHMgc3RhcnQgZnJvbSB0aGUgZW5kIG9mIHRoZSBidWZmZXJcbiAgaWYgKGJ5dGVPZmZzZXQgPCAwKSBieXRlT2Zmc2V0ID0gTWF0aC5tYXgodGhpcy5sZW5ndGggKyBieXRlT2Zmc2V0LCAwKVxuXG4gIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgIGlmICh2YWwubGVuZ3RoID09PSAwKSByZXR1cm4gLTEgLy8gc3BlY2lhbCBjYXNlOiBsb29raW5nIGZvciBlbXB0eSBzdHJpbmcgYWx3YXlzIGZhaWxzXG4gICAgcmV0dXJuIFN0cmluZy5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKHRoaXMsIHZhbCwgYnl0ZU9mZnNldClcbiAgfVxuICBpZiAoQnVmZmVyLmlzQnVmZmVyKHZhbCkpIHtcbiAgICByZXR1cm4gYXJyYXlJbmRleE9mKHRoaXMsIHZhbCwgYnl0ZU9mZnNldClcbiAgfVxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgJiYgVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbCh0aGlzLCB2YWwsIGJ5dGVPZmZzZXQpXG4gICAgfVxuICAgIHJldHVybiBhcnJheUluZGV4T2YodGhpcywgWyB2YWwgXSwgYnl0ZU9mZnNldClcbiAgfVxuXG4gIGZ1 bmN0aW9uIGFycmF5SW5kZXhPZiAoYXJyLCB2YWwsIGJ5dGVPZmZzZXQpIHtcbiAgICB2YXIgZm91bmRJbmRleCA9IC0xXG4gICAgZm9yICh2YXIgaSA9IDA7IGJ5dGVPZmZzZXQgKyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYXJyW2J5dGVPZmZzZXQgKyBpXSA9PT0gdmFsW2ZvdW5kSW5kZXggPT09IC0xID8gMCA6IGkgLSBmb3VuZEluZGV4XSkge1xuICAgICAgICBpZiAoZm91bmRJbmRleCA9PT0gLTEpIGZvdW5kSW5kZXggPSBpXG4gICAgICAgIGlmIChpIC0gZm91bmRJbmRleCArIDEgPT09IHZhbC5sZW5ndGgpIHJldHVybiBieXRlT2Zmc2V0ICsgZm91bmRJbmRleFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm91bmRJbmRleCA9IC0xXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMVxuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcigndmFsIG11c3QgYmUgc3RyaW5nLCBudW1iZXIgb3IgQnVmZmVyJylcbn1cblxuLy8gYGdldGAgaXMgZGVwcmVjYXRlZFxuQnVmZmVyLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiBnZXQgKG9mZnNldCkge1xuICBjb25zb2xlLmxvZygnLmdldCgpIGlzIGRlcHJlY2F0ZWQuIEFjY2VzcyB1c2luZyBhcnJheSBpbmRleGVzIGluc3RlYWQuJylcbiAgcmV0dXJuIHRoaXMucmVhZFVJbnQ4KG9mZnNldClcbn1cblxuLy8gYHNldGAgaXMgZGVwcmVjYXRlZFxuQnVmZmVyLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiBzZXQgKHYsIG9mZnNldCkge1xuICBjb 25zb2xlLmxvZygnLnNldCgpIGlzIGRlcHJlY2F0ZWQuIEFjY2VzcyB1c2luZyBhcnJheSBpbmRleGVzIGluc3RlYWQuJylcbiAgcmV0dXJuIHRoaXMud3JpdGVVSW50OCh2LCBvZmZzZXQpXG59XG5cbmZ1bmN0aW9uIGhleFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgb2Zmc2V0ID0gTnVtYmVyKG9mZnNldCkgfHwgMFxuICB2YXIgcmVtYWluaW5nID0gYnVmLmxlbmd0aCAtIG9mZnNldFxuICBpZiAoIWxlbmd0aCkge1xuICAgIGxlbmd0aCA9IHJlbWFpbmluZ1xuICB9IGVsc2Uge1xuICAgIGxlbmd0aCA9IE51bWJlcihsZW5ndGgpXG4gICAgaWYgKGxlbmd0aCA+IHJlbWFpbmluZykge1xuICAgICAgbGVuZ3RoID0gcmVtYWluaW5nXG4gICAgfVxuICB9XG5cbiAgLy8gbXVzdCBiZSBhbiBldmVuIG51bWJlciBvZiBkaWdpdHNcbiAgdmFyIHN0ckxlbiA9IHN0cmluZy5sZW5ndGhcbiAgaWYgKHN0ckxlbiAlIDIgIT09IDApIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBoZXggc3RyaW5nJylcblxuICBpZiAobGVuZ3RoID4gc3RyTGVuIC8gMikge1xuICAgIGxlbmd0aCA9IHN0ckxlbiAvIDJcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHBhcnNlZCA9IHBhcnNlSW50KHN0cmluZy5zdWJzdHIoaSAqIDIsIDIpLCAxNilcbiAgICBpZiAoaXNOYU4ocGFyc2VkKSkgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGhleCBzdHJpbmcnKVxuICAgIGJ1Zl tvZmZzZXQgKyBpXSA9IHBhcnNlZFxuICB9XG4gIHJldHVybiBpXG59XG5cbmZ1bmN0aW9uIHV0ZjhXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKHV0ZjhUb0J5dGVzKHN0cmluZywgYnVmLmxlbmd0aCAtIG9mZnNldCksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGFzY2lpV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcihhc2NpaVRvQnl0ZXMoc3RyaW5nKSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gYmluYXJ5V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYXNjaWlXcml0ZShidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGJhc2U2NFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIoYmFzZTY0VG9CeXRlcyhzdHJpbmcpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiB1Y3MyV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcih1dGYxNmxlVG9CeXRlcyhzdHJpbmcsIGJ1Zi5sZW5ndGggLSBvZmZzZXQpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gd3JpdGUgKHN0cmluZywgb2Zmc2V0LCBsZW5ndGg sIGVuY29kaW5nKSB7XG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcpXG4gIGlmIChvZmZzZXQgPT09IHVuZGVmaW5lZCkge1xuICAgIGVuY29kaW5nID0gJ3V0ZjgnXG4gICAgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgICBvZmZzZXQgPSAwXG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcsIGVuY29kaW5nKVxuICB9IGVsc2UgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jb2RpbmcgPSBvZmZzZXRcbiAgICBsZW5ndGggPSB0aGlzLmxlbmd0aFxuICAgIG9mZnNldCA9IDBcbiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZywgb2Zmc2V0WywgbGVuZ3RoXVssIGVuY29kaW5nXSlcbiAgfSBlbHNlIGlmIChpc0Zpbml0ZShvZmZzZXQpKSB7XG4gICAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICAgIGlmIChpc0Zpbml0ZShsZW5ndGgpKSB7XG4gICAgICBsZW5ndGggPSBsZW5ndGggfCAwXG4gICAgICBpZiAoZW5jb2RpbmcgPT09IHVuZGVmaW5lZCkgZW5jb2RpbmcgPSAndXRmOCdcbiAgICB9IGVsc2Uge1xuICAgICAgZW5jb2RpbmcgPSBsZW5ndGhcbiAgICAgIGxlbmd0aCA9IHVuZGVmaW5lZFxuICAgIH1cbiAgLy8gbGVnYWN5IHdyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldCwgbGVuZ3RoKSAtIHJlbW92ZSBpbiB2MC4xM1xuICB9IGVsc2Uge1xuICAgIHZhciBzd2FwID0gZW5jb2RpbmdcbiAgICBlbmNvZGluZyA9IG9mZnNldFxuICAgIG9mZnNldCA9 IGxlbmd0aCB8IDBcbiAgICBsZW5ndGggPSBzd2FwXG4gIH1cblxuICB2YXIgcmVtYWluaW5nID0gdGhpcy5sZW5ndGggLSBvZmZzZXRcbiAgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkIHx8IGxlbmd0aCA+IHJlbWFpbmluZykgbGVuZ3RoID0gcmVtYWluaW5nXG5cbiAgaWYgKChzdHJpbmcubGVuZ3RoID4gMCAmJiAobGVuZ3RoIDwgMCB8fCBvZmZzZXQgPCAwKSkgfHwgb2Zmc2V0ID4gdGhpcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignYXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHMnKVxuICB9XG5cbiAgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSAndXRmOCdcblxuICB2YXIgbG93ZXJlZENhc2UgPSBmYWxzZVxuICBmb3IgKDs7KSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGhleFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgICAgcmV0dXJuIGFzY2lpV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuIGJpbmFyeVdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpX G5cbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIC8vIFdhcm5pbmc6IG1heExlbmd0aCBub3QgdGFrZW4gaW50byBhY2NvdW50IGluIGJhc2U2NFdyaXRlXG4gICAgICAgIHJldHVybiBiYXNlNjRXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gdWNzMldyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgICAgICBlbmNvZGluZyA9ICgnJyArIGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uIHRvSlNPTiAoKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ0J1ZmZlcicsXG4gICAgZGF0YTogQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyIHx8IHRoaXMsIDApXG4gIH1cbn1cblxuZnVuY3Rpb24gYmFzZTY0U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBpZiAoc3RhcnQgPT09IDAgJiYgZW5kID09PSBidWYubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGJhc2U2NC5mcm 9tQnl0ZUFycmF5KGJ1ZilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYmFzZTY0LmZyb21CeXRlQXJyYXkoYnVmLnNsaWNlKHN0YXJ0LCBlbmQpKVxuICB9XG59XG5cbmZ1bmN0aW9uIHV0ZjhTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcbiAgdmFyIHJlcyA9IFtdXG5cbiAgdmFyIGkgPSBzdGFydFxuICB3aGlsZSAoaSA8IGVuZCkge1xuICAgIHZhciBmaXJzdEJ5dGUgPSBidWZbaV1cbiAgICB2YXIgY29kZVBvaW50ID0gbnVsbFxuICAgIHZhciBieXRlc1BlclNlcXVlbmNlID0gKGZpcnN0Qnl0ZSA+IDB4RUYpID8gNFxuICAgICAgOiAoZmlyc3RCeXRlID4gMHhERikgPyAzXG4gICAgICA6IChmaXJzdEJ5dGUgPiAweEJGKSA/IDJcbiAgICAgIDogMVxuXG4gICAgaWYgKGkgKyBieXRlc1BlclNlcXVlbmNlIDw9IGVuZCkge1xuICAgICAgdmFyIHNlY29uZEJ5dGUsIHRoaXJkQnl0ZSwgZm91cnRoQnl0ZSwgdGVtcENvZGVQb2ludFxuXG4gICAgICBzd2l0Y2ggKGJ5dGVzUGVyU2VxdWVuY2UpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIGlmIChmaXJzdEJ5dGUgPCAweDgwKSB7XG4gICAgICAgICAgICBjb2RlUG9pbnQgPSBmaXJzdEJ5dGVcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdXG4gICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCk gPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHgxRikgPDwgMHg2IHwgKHNlY29uZEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweDdGKSB7XG4gICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdXG4gICAgICAgICAgdGhpcmRCeXRlID0gYnVmW2kgKyAyXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwICYmICh0aGlyZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCkge1xuICAgICAgICAgICAgdGVtcENvZGVQb2ludCA9IChmaXJzdEJ5dGUgJiAweEYpIDw8IDB4QyB8IChzZWNvbmRCeXRlICYgMHgzRikgPDwgMHg2IHwgKHRoaXJkQnl0ZSAmIDB4M0YpXG4gICAgICAgICAgICBpZiAodGVtcENvZGVQb2ludCA+IDB4N0ZGICYmICh0ZW1wQ29kZVBvaW50IDwgMHhEODAwIHx8IHRlbXBDb2RlUG9pbnQgPiAweERGRkYpKSB7XG4gICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdXG4gICAgICAgICAgdGhpcmRCeXRlID0gYnVmW2kg KyAyXVxuICAgICAgICAgIGZvdXJ0aEJ5dGUgPSBidWZbaSArIDNdXG4gICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODAgJiYgKHRoaXJkQnl0ZSAmIDB4QzApID09PSAweDgwICYmIChmb3VydGhCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHhGKSA8PCAweDEyIHwgKHNlY29uZEJ5dGUgJiAweDNGKSA8PCAweEMgfCAodGhpcmRCeXRlICYgMHgzRikgPDwgMHg2IHwgKGZvdXJ0aEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweEZGRkYgJiYgdGVtcENvZGVQb2ludCA8IDB4MTEwMDAwKSB7XG4gICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvZGVQb2ludCA9PT0gbnVsbCkge1xuICAgICAgLy8gd2UgZGlkIG5vdCBnZW5lcmF0ZSBhIHZhbGlkIGNvZGVQb2ludCBzbyBpbnNlcnQgYVxuICAgICAgLy8gcmVwbGFjZW1lbnQgY2hhciAoVStGRkZEKSBhbmQgYWR2YW5jZSBvbmx5IDEgYnl0ZVxuICAgICAgY29kZVBvaW50ID0gMHhGRkZEXG4gICAgICBieXRlc1BlclNlcXVlbmNlID0gMVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50ID4gMHhGRk <TRUNCATED>