From 058f6d4b567fa1c6f941f216ca9a7a28d62770ae Mon Sep 17 00:00:00 2001 From: Andrew Van Tassel Date: Wed, 27 Dec 2017 14:49:40 -0700 Subject: [PATCH] Wired up TP-Links webpack build is still not working --- .gitignore | 1 + bs-config.json | 5 - build/js/main.js | 182 +- build/js/manifest.js | 4 +- build/js/vendor.js | 20 +- build/js/vendor_node.js | 9245 ++++----------------------------- build/package.json | 13 +- build/views/kettles-card.html | 67 +- build/views/kettles-list.html | 64 +- build/views/settings.html | 19 + package.json | 13 +- src/js/controllers.js | 60 +- src/js/services.js | 105 +- src/views/kettles-card.html | 67 +- src/views/kettles-list.html | 64 +- src/views/settings.html | 19 + webpack.config.js | 22 +- 17 files changed, 1470 insertions(+), 8500 deletions(-) delete mode 100644 bs-config.json diff --git a/.gitignore b/.gitignore index 84a23ea..6f6dc24 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ node_modules NOTES.md # share code src/share +*.log diff --git a/bs-config.json b/bs-config.json deleted file mode 100644 index aace87b..0000000 --- a/bs-config.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "port": 8000, - "files": ["./src/**/*.{html,htm,scss,js}"], - "server": { "baseDir": "./build" } -} diff --git a/build/js/main.js b/build/js/main.js index b875cf8..6eaa5bf 100644 --- a/build/js/main.js +++ b/build/js/main.js @@ -1,34 +1,32 @@ webpackJsonp([1],{ -/***/ 190: +/***/ 178: /***/ (function(module, exports, __webpack_require__) { -__webpack_require__(191); -__webpack_require__(193); -__webpack_require__(194); -__webpack_require__(195); -__webpack_require__(196); -(function webpackMissingModule() { throw new Error("Cannot find module \"—\""); }()); -(function webpackMissingModule() { throw new Error("Cannot find module \"watch\""); }()); +__webpack_require__(179); +__webpack_require__(181); +__webpack_require__(182); +__webpack_require__(183); +module.exports = __webpack_require__(184); /***/ }), -/***/ 191: +/***/ 179: /***/ (function(module, exports, __webpack_require__) { "use strict"; -var _angular = __webpack_require__(12); +var _angular = __webpack_require__(11); var _angular2 = _interopRequireDefault(_angular); -var _lodash = __webpack_require__(35); +var _lodash = __webpack_require__(31); var _lodash2 = _interopRequireDefault(_lodash); -__webpack_require__(36); +__webpack_require__(32); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -61,7 +59,7 @@ _angular2.default.module('brewbench-monitor', ['ui.router', 'nvd3', 'ngTouch', ' /***/ }), -/***/ 193: +/***/ 181: /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -243,8 +241,20 @@ angular.module('brewbench-monitor').controller('mainCtrl', function ($scope, $st delete: function _delete(index, arduino) {} }; - $scope.tpScan = function () { - BrewService.tplink().scan(); + $scope.tplink = { + login: function login() { + BrewService.tplink().login($scope.settings.tplink.user, $scope.settings.tplink.pass).then(function (response) { + if (response.token) { + $scope.settings.tplink.token = response.token; + $scope.tplink.scan(response.token); + } + }); + }, + scan: function scan() { + BrewService.tplink().scan().then(function (response) { + if (response.deviceList) $scope.settings.tplink.plugs = response.deviceList; + }); + } }; $scope.addKettle = function (type) { @@ -276,6 +286,10 @@ angular.module('brewbench-monitor').controller('mainCtrl', function ($scope, $st return _.filter($scope.kettles, { 'active': true }).length; }; + $scope.pinDisplay = function (pin) { + if (pin.indexOf('TP-') === 0) return _.filter($scope.settings.tplink.plugs, { deviceId: pin.substr(3) })[0].alias;else return pin; + }; + $scope.pinInUse = function (pin, analog) { var kettle = _.find($scope.kettles, function (kettle) { return analog && kettle.temp.type == 'Thermistor' && kettle.temp.pin == pin || !analog && kettle.temp.type == 'DS18B20' && kettle.temp.pin == pin || kettle.temp.type == 'PT100' && kettle.temp.pin == pin || !analog && kettle.heater.pin == pin || !analog && kettle.cooler && kettle.cooler.pin == pin || !analog && !kettle.cooler && kettle.pump.pin == pin; @@ -283,14 +297,6 @@ angular.module('brewbench-monitor').controller('mainCtrl', function ($scope, $st return kettle || false; }; - $scope.pinChange = function (old_pin, new_pin, analog) { - //find kettle with new pin and replace it with old pin - var kettle = $scope.pinInUse(new_pin, analog); - if (kettle) { - if (kettle.temp.pin == new_pin) kettle.temp.pin = old_pin;else if (kettle.heater.pin == new_pin) kettle.heater.pin = old_pin;else if (kettle.pump.pin == new_pin) kettle.pump.pin = old_pin; - } - }; - $scope.createShare = function () { if (!$scope.settings.recipe.brewer.name || !$scope.settings.recipe.brewer.email) return; $scope.share_status = 'Creating share link...'; @@ -829,7 +835,15 @@ angular.module('brewbench-monitor').controller('mainCtrl', function ($scope, $st $scope.toggleRelay = function (kettle, element, on) { if (on) { - if (element.pwm) { + if (element.pin.indexOf('TP-') === 0) { + var device = _.filter($scope.settings.tplink.plugs, { deviceId: element.pin.substr(3) })[0]; + return BrewService.tplink().on(device).then(function () { + //started + element.running = true; + }).catch(function (err) { + return $scope.setErrorMessage(err, kettle); + }); + } else if (element.pwm) { return BrewService.analog(kettle, element.pin, Math.round(255 * element.dutyCycle / 100)).then(function () { //started element.running = true; @@ -852,7 +866,15 @@ angular.module('brewbench-monitor').controller('mainCtrl', function ($scope, $st }); } } else { - if (element.pwm || element.ssr) { + if (element.pin.indexOf('TP-') === 0) { + var _device = _.filter($scope.settings.tplink.plugs, { deviceId: element.pin.substr(3) })[0]; + return BrewService.tplink().off(_device).then(function () { + //started + element.running = false; + }).catch(function (err) { + return $scope.setErrorMessage(err, kettle); + }); + } else if (element.pwm || element.ssr) { return BrewService.analog(kettle, element.pin, 0).then(function () { element.running = false; $scope.updateKnobCopy(kettle); @@ -1233,11 +1255,11 @@ angular.module('brewbench-monitor').controller('mainCtrl', function ($scope, $st BrewService.settings('share', newValue); }, true); }); -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(16))) +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(15))) /***/ }), -/***/ 194: +/***/ 182: /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1293,7 +1315,7 @@ angular.module('brewbench-monitor').directive('editable', function () { /***/ }), -/***/ 195: +/***/ 183: /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1329,7 +1351,7 @@ angular.module('brewbench-monitor').filter('moment', function () { /***/ }), -/***/ 196: +/***/ 184: /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1366,7 +1388,7 @@ angular.module('brewbench-monitor').factory('BrewService', function ($http, $q, digital: 13, secure: false }], - tplinks: [] + tplink: { user: '', pass: '', token: '', plugs: [] } }; }, @@ -1642,11 +1664,99 @@ angular.module('brewbench-monitor').factory('BrewService', function ($http, $q, }, tplink: function tplink() { - + var _this = this; + + var url = "https://wap.tplinkcloud.com"; + var params = { + appName: 'Kasa_Android', + termID: 'BrewBench', + appVer: '1.4.4.607', + ospf: 'Android+6.0.1', + netType: 'wifi', + locale: 'es_EN' + }; return { - scan: function scan() {}, - on: function on() {}, - off: function off() {} + login: function login(user, pass) { + var q = $q.defer(); + if (!user || !pass) return q.reject('Invalid Login'); + var login_payload = { + "method": "login", + "url": url, + "params": { + "appType": "Kasa_Android", + "cloudPassword": pass, + "cloudUserName": user, + "terminalUUID": params.termID + } + }; + $http({ url: url, + method: 'POST', + params: params, + data: JSON.stringify(login_payload), + headers: { 'Content-Type': 'application/json' } + }).then(function (response) { + // save the token + if (response.data.result) { + q.resolve(response.data.result); + } else { + q.reject('No response'); + } + }).catch(function (err) { + q.reject(err); + }); + return q.promise; + }, + scan: function scan(token) { + var q = $q.defer(); + var settings = _this.settings('settings'); + token = token || settings.tplink.token; + if (!token) return q.reject('Invalid token'); + $http({ url: url, + method: 'POST', + params: { token: token }, + data: JSON.stringify({ method: "getDeviceList" }), + headers: { 'Content-Type': 'application/json' } + }).then(function (response) { + q.resolve(response.data.result); + }).catch(function (err) { + q.reject(err); + }); + return q.promise; + }, + command: function command(device, _command) { + var q = $q.defer(); + var settings = _this.settings('settings'); + var token = settings.tplink.token; + var payload = { + "method": "passthrough", + "params": { + "deviceId": device.deviceId, + "requestData": JSON.stringify(_command) + } + }; + // set the token + if (!token) return q.reject('Invalid token'); + params.token = token; + $http({ url: device.appServerUrl, + method: 'POST', + params: params, + data: JSON.stringify(payload), + headers: { 'Cache-Control': 'no-cache', 'Content-Type': 'application/json' } + }).then(function (response) { + q.resolve(response.data.result); + }).catch(function (err) { + q.reject(err); + }); + return q.promise; + }, + on: function on(device) { + var command = { "system": { "set_relay_state": { "state": 1 } } }; + return _this.tplink().command(device, command); + }, + off: function off(device) { + var command = { "system": { "set_relay_state": { "state": 0 } } }; + return _this.tplink().command(device, command); + } }; }, @@ -1976,5 +2086,5 @@ angular.module('brewbench-monitor').factory('BrewService', function ($http, $q, /***/ }) -},[190]); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvanMvYXBwLmpzIiwid2VicGFjazovLy8uL3NyYy9qcy9jb250cm9sbGVycy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvanMvZGlyZWN0aXZlcy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvanMvZmlsdGVycy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvanMvc2VydmljZXMuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiY29uZmlnIiwiJHN0YXRlUHJvdmlkZXIiLCIkdXJsUm91dGVyUHJvdmlkZXIiLCIkaHR0cFByb3ZpZGVyIiwiJGxvY2F0aW9uUHJvdmlkZXIiLCIkY29tcGlsZVByb3ZpZGVyIiwiZGVmYXVsdHMiLCJ1c2VYRG9tYWluIiwiaGVhZGVycyIsImNvbW1vbiIsImhhc2hQcmVmaXgiLCJhSHJlZlNhbml0aXphdGlvbldoaXRlbGlzdCIsInN0YXRlIiwidXJsIiwidGVtcGxhdGVVcmwiLCJjb250cm9sbGVyIiwiYW5ndWxhciIsIiRzY29wZSIsIiRzdGF0ZSIsIiRmaWx0ZXIiLCIkdGltZW91dCIsIiRpbnRlcnZhbCIsIiRxIiwiJGh0dHAiLCIkc2NlIiwiQnJld1NlcnZpY2UiLCJjbGVhclNldHRpbmdzIiwiZSIsImVsZW1lbnQiLCJ0YXJnZXQiLCJodG1sIiwiY2xlYXIiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhyZWYiLCJjdXJyZW50IiwibmFtZSIsIm5vdGlmaWNhdGlvbiIsInJlc2V0Q2hhcnQiLCJ0aW1lb3V0IiwiaG9wcyIsImdyYWlucyIsIndhdGVyIiwibG92aWJvbmQiLCJrZXR0bGVUeXBlcyIsImNoYXJ0T3B0aW9ucyIsInNlbnNvclR5cGVzIiwic2hvd1NldHRpbmdzIiwiZXJyb3IiLCJtZXNzYWdlIiwidHlwZSIsInNsaWRlciIsIm1pbiIsIm9wdGlvbnMiLCJmbG9vciIsImNlaWwiLCJzdGVwIiwidHJhbnNsYXRlIiwidmFsdWUiLCJvbkVuZCIsImtldHRsZUlkIiwibW9kZWxWYWx1ZSIsImhpZ2hWYWx1ZSIsInBvaW50ZXJUeXBlIiwia2V0dGxlIiwic3BsaXQiLCJrIiwia2V0dGxlcyIsImhlYXRlciIsImNvb2xlciIsInB1bXAiLCJhY3RpdmUiLCJwd20iLCJydW5uaW5nIiwidG9nZ2xlUmVsYXkiLCJnZXRLZXR0bGVTbGlkZXJPcHRpb25zIiwiaW5kZXgiLCJPYmplY3QiLCJhc3NpZ24iLCJpZCIsImdldExvdmlib25kQ29sb3IiLCJyYW5nZSIsInJlcGxhY2UiLCJpbmRleE9mIiwickFyciIsInBhcnNlRmxvYXQiLCJsIiwiXyIsImZpbHRlciIsIml0ZW0iLCJzcm0iLCJoZXgiLCJsZW5ndGgiLCJzZXR0aW5ncyIsInJlc2V0IiwiZGVmYXVsdEtldHRsZXMiLCJzaGFyZSIsInBhcmFtcyIsImZpbGUiLCJwYXNzd29yZCIsIm5lZWRQYXNzd29yZCIsImFjY2VzcyIsImRlbGV0ZUFmdGVyIiwic3VtVmFsdWVzIiwib2JqIiwic3VtIiwidmFsdWVzIiwidXBkYXRlQUJWIiwicmVjaXBlIiwic2NhbGUiLCJtZXRob2QiLCJhYnYiLCJvZyIsImZnIiwiYWJ2YSIsImFidyIsImF0dGVudWF0aW9uIiwicGxhdG8iLCJjYWxvcmllcyIsInJlIiwic2ciLCJjaGFuZ2VNZXRob2QiLCJjaGFuZ2VTY2FsZSIsImdldFBvcnRSYW5nZSIsIm51bWJlciIsIkFycmF5IiwiZmlsbCIsIm1hcCIsImlkeCIsImFyZHVpbm9zIiwiYWRkIiwibm93IiwiRGF0ZSIsInB1c2giLCJidG9hIiwiYW5hbG9nIiwiZGlnaXRhbCIsImVhY2giLCJhcmR1aW5vIiwidXBkYXRlIiwiZGVsZXRlIiwic3BsaWNlIiwic2Vzc2lvbnMiLCJhY2NvdW50IiwiY3JlYXRlZCIsIm1vbWVudCIsInRwU2NhbiIsInRwbGluayIsInNjYW4iLCJhZGRLZXR0bGUiLCJrZXkiLCJmaW5kIiwic3RpY2t5IiwicGluIiwiYXV0byIsInRlbXAiLCJoaXQiLCJwcmV2aW91cyIsImFkanVzdCIsImRpZmYiLCJ0aW1lcnMiLCJrbm9iIiwiY29weSIsImRlZmF1bHRLbm9iT3B0aW9ucyIsIm1heCIsImhhc1N0aWNreUtldHRsZXMiLCJrZXR0bGVDb3VudCIsImFjdGl2ZUtldHRsZXMiLCJwaW5JblVzZSIsInBpbkNoYW5nZSIsIm9sZF9waW4iLCJuZXdfcGluIiwiY3JlYXRlU2hhcmUiLCJicmV3ZXIiLCJlbWFpbCIsInNoYXJlX3N0YXR1cyIsInRoZW4iLCJyZXNwb25zZSIsInNoYXJlX3N1Y2Nlc3MiLCJzaGFyZV9saW5rIiwiY2F0Y2giLCJlcnIiLCJzaGFyZVRlc3QiLCJ0ZXN0aW5nIiwiaHR0cF9jb2RlIiwicHVibGljIiwidGVzdEluZmx1eERCIiwiaW5mbHV4ZGIiLCJjb25uZWN0ZWQiLCJwaW5nIiwic3RhdHVzIiwiJCIsInJlbW92ZUNsYXNzIiwiYWRkQ2xhc3MiLCJjcmVhdGVJbmZsdXhEQiIsImRiIiwiZm9ybWF0IiwiY3JlYXRlREIiLCJkYXRhIiwicmVzdWx0cyIsInJlc2V0RXJyb3IiLCJzZXRFcnJvck1lc3NhZ2UiLCJzaGFyZUFjY2VzcyIsInNoYXJlZCIsImZyYW1lRWxlbWVudCIsImxvYWRTaGFyZUZpbGUiLCJjb250ZW50cyIsIm5vdGlmaWNhdGlvbnMiLCJvbiIsImhpZ2giLCJsb3ciLCJzbGFjayIsImxhc3QiLCJzdWJUZXh0IiwiZW5hYmxlZCIsInRleHQiLCJjb2xvciIsImZvbnQiLCJwcm9jZXNzVGVtcHMiLCJpbXBvcnRSZWNpcGUiLCIkZmlsZUNvbnRlbnQiLCIkZXh0IiwiZm9ybWF0dGVkX2NvbnRlbnQiLCJmb3JtYXRYTUwiLCJqc29uT2JqIiwieDJqcyIsIlgySlMiLCJ4bWxfc3RyMmpzb24iLCJyZWNpcGVfc3VjY2VzcyIsIlJlY2lwZXMiLCJEYXRhIiwiUmVjaXBlIiwiU2VsZWN0aW9ucyIsInJlY2lwZUJlZXJTbWl0aCIsIlJFQ0lQRVMiLCJSRUNJUEUiLCJyZWNpcGVCZWVyWE1MIiwiY2F0ZWdvcnkiLCJpYnUiLCJkYXRlIiwiZ3JhaW4iLCJhZGRUaW1lciIsImxhYmVsIiwibm90ZXMiLCJOdW1iZXIiLCJhbW91bnQiLCJob3AiLCJtaXNjIiwieWVhc3QiLCJsb2FkU3R5bGVzIiwic3R5bGVzIiwibG9hZENvbmZpZyIsInBrZyIsInNrZXRjaF92ZXJzaW9uIiwiYmJfdmVyc2lvbiIsInZlcnNpb24iLCJzb3J0QnkiLCJ1bmlxQnkiLCJhbGwiLCJpbml0IiwidGltZXIiLCJ0aW1lclN0YXJ0IiwicXVldWUiLCJ1cCIsInVwZGF0ZUtub2JDb3B5IiwidHJ1c3RBc0h0bWwiLCJrZXlzIiwiSlNPTiIsInBhcnNlIiwic3RhdHVzVGV4dCIsInN0cmluZ2lmeSIsImRvbWFpbiIsInVwZGF0ZVRlbXAiLCJ0ZW1wcyIsInVuaXQiLCJNYXRoIiwicm91bmQiLCJodW1pZGl0eSIsImdldFRpbWUiLCJhbGVydCIsImdldE5hdk9mZnNldCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJvZmZzZXRIZWlnaHQiLCJzZWMiLCJyZW1vdmVUaW1lcnMiLCJidG4iLCJoYXNDbGFzcyIsInBhcmVudCIsInRvZ2dsZVBXTSIsInNzciIsInRvZ2dsZUtldHRsZSIsImtub2JDbGljayIsInN0YXJ0U3RvcEtldHRsZSIsInJlYWRPbmx5IiwiZHV0eUN5Y2xlIiwiaW1wb3J0U2V0dGluZ3MiLCJwcm9maWxlQ29udGVudCIsImV4cG9ydFNldHRpbmdzIiwiaSIsImVuY29kZVVSSUNvbXBvbmVudCIsImRvd25sb2FkSW5mbHV4REJTa2V0Y2giLCJjb25uZWN0aW9uX3N0cmluZyIsInBvcnQiLCJ1c2VyIiwicGFzcyIsImdldCIsImZyZXF1ZW5jeSIsInBhcnNlSW50Iiwic3RyZWFtU2tldGNoIiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZSIsImNsaWNrIiwiZG93bmxvYWRTdHJlYW1zU2tldGNoIiwic2Vzc2lvbklkIiwiYXBpS2V5IiwiZ2V0SVBBZGRyZXNzIiwiaXBBZGRyZXNzIiwiaXAiLCJpY29uIiwibmF2aWdhdG9yIiwidmlicmF0ZSIsInNvdW5kcyIsInNuZCIsIkF1ZGlvIiwicGxheSIsImNsb3NlIiwiTm90aWZpY2F0aW9uIiwicGVybWlzc2lvbiIsImJvZHkiLCJyZXF1ZXN0UGVybWlzc2lvbiIsInRyYWNrQ29sb3IiLCJiYXJDb2xvciIsImNoYW5nZUtldHRsZVR5cGUiLCJrZXR0bGVJbmRleCIsImZpbmRJbmRleCIsImtldHRsZVR5cGUiLCJjaGFuZ2VVbml0cyIsInRpbWVyUnVuIiwibmV4dFRpbWVyIiwiY2FuY2VsIiwiaW50ZXJ2YWwiLCJhbGxTZW5zb3JzIiwicG9sbFNlY29uZHMiLCJjaGFuZ2VWYWx1ZSIsImZpZWxkIiwibG9hZGVkIiwiJHdhdGNoIiwibmV3VmFsdWUiLCJvbGRWYWx1ZSIsImRpcmVjdGl2ZSIsInJlc3RyaWN0Iiwic2NvcGUiLCJtb2RlbCIsInRyaW0iLCJjaGFuZ2UiLCJlbnRlciIsInBsYWNlaG9sZGVyIiwidGVtcGxhdGUiLCJsaW5rIiwiYXR0cnMiLCJlZGl0IiwiYmluZCIsIiRhcHBseSIsImNoYXJDb2RlIiwia2V5Q29kZSIsIm5nRW50ZXIiLCIkcGFyc2UiLCJmbiIsIm9uUmVhZEZpbGUiLCJvbkNoYW5nZUV2ZW50IiwicmVhZGVyIiwiRmlsZVJlYWRlciIsInNyY0VsZW1lbnQiLCJmaWxlcyIsImV4dGVuc2lvbiIsInBvcCIsInRvTG93ZXJDYXNlIiwib25sb2FkIiwib25Mb2FkRXZlbnQiLCJyZXN1bHQiLCJ2YWwiLCJyZWFkQXNUZXh0IiwidG9TdHJpbmciLCJmcm9tTm93IiwiY2Vsc2l1cyIsImZhaHJlbmhlaXQiLCJwaHJhc2UiLCJSZWdFeHAiLCJmYWN0b3J5IiwibG9jYWxTdG9yYWdlIiwicmVtb3ZlSXRlbSIsImxheW91dCIsInNlY3VyZSIsInRwbGlua3MiLCJ0cmFja1dpZHRoIiwiYmFyV2lkdGgiLCJiYXJDYXAiLCJkeW5hbWljT3B0aW9ucyIsImRpc3BsYXlQcmV2aW91cyIsInByZXZCYXJDb2xvciIsInNldEl0ZW0iLCJnZXRJdGVtIiwic2Vuc29ycyIsInN1YnN0ciIsIndlYmhvb2tfdXJsIiwibXNnIiwicSIsImRlZmVyIiwicG9zdE9iaiIsImhvc3QiLCJyZXNvbHZlIiwicmVqZWN0IiwicHJvbWlzZSIsIkF1dGhvcml6YXRpb24iLCJzZW5zb3IiLCJkaWdpdGFsUmVhZCIsInF1ZXJ5IiwibWQ1Iiwic2giLCJvZmYiLCJpbmZsdXhDb25uZWN0aW9uIiwiY2hhcnQiLCJub0RhdGEiLCJoZWlnaHQiLCJtYXJnaW4iLCJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiLCJ4IiwiZCIsInkiLCJkMyIsImNhdGVnb3J5MTAiLCJkdXJhdGlvbiIsInVzZUludGVyYWN0aXZlR3VpZGVsaW5lIiwiY2xpcFZvcm9ub2kiLCJ4QXhpcyIsImF4aXNMYWJlbCIsInRpY2tGb3JtYXQiLCJ0aW1lIiwib3JpZW50IiwidGlja1BhZGRpbmciLCJheGlzTGFiZWxEaXN0YW5jZSIsInN0YWdnZXJMYWJlbHMiLCJmb3JjZVkiLCJ5QXhpcyIsInNob3dNYXhNaW4iLCJ0b0ZpeGVkIiwib3AiLCJmcCIsInBvdyIsInN1YnN0cmluZyIsIkZfUl9OQU1FIiwiRl9SX1NUWUxFIiwiRl9TX0NBVEVHT1JZIiwiRl9SX0RBVEUiLCJGX1JfQlJFV0VSIiwiRl9TX01BWF9PRyIsIkZfU19NSU5fT0ciLCJGX1NfTUFYX0ZHIiwiRl9TX01JTl9GRyIsIkZfU19NQVhfQUJWIiwiRl9TX01JTl9BQlYiLCJGX1NfTUFYX0lCVSIsIkZfU19NSU5fSUJVIiwiSW5ncmVkaWVudHMiLCJHcmFpbiIsIkZfR19OQU1FIiwiRl9HX0JPSUxfVElNRSIsIkZfR19BTU9VTlQiLCJIb3BzIiwiRl9IX05BTUUiLCJGX0hfRFJZX0hPUF9USU1FIiwiRl9IX0JPSUxfVElNRSIsIkZfSF9BTU9VTlQiLCJNaXNjIiwiRl9NX05BTUUiLCJGX01fVElNRSIsIkZfTV9BTU9VTlQiLCJZZWFzdCIsIkZfWV9MQUIiLCJGX1lfUFJPRFVDVF9JRCIsIkZfWV9OQU1FIiwibWFzaF90aW1lIiwiTkFNRSIsIlNUWUxFIiwiQ0FURUdPUlkiLCJCUkVXRVIiLCJPRyIsIkZHIiwiSUJVIiwiQUJWX01BWCIsIkFCVl9NSU4iLCJNQVNIIiwiTUFTSF9TVEVQUyIsIk1BU0hfU1RFUCIsIlNURVBfVElNRSIsIkZFUk1FTlRBQkxFUyIsIkZFUk1FTlRBQkxFIiwiQU1PVU5UIiwiSE9QUyIsIkhPUCIsIkZPUk0iLCJVU0UiLCJUSU1FIiwiTUlTQ1MiLCJNSVNDIiwiWUVBU1RTIiwiWUVBU1QiLCJjb250ZW50IiwiaHRtbGNoYXJzIiwiZiIsInIiLCJjaGFyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBRUEsa0JBQVFBLE1BQVIsQ0FBZSxtQkFBZixFQUFvQyxDQUNsQyxXQURrQyxFQUVqQyxNQUZpQyxFQUdqQyxTQUhpQyxFQUlqQyxVQUppQyxFQUtqQyxTQUxpQyxFQU1qQyxVQU5pQyxDQUFwQyxFQVFDQyxNQVJELENBUVEsVUFBU0MsY0FBVCxFQUF5QkMsa0JBQXpCLEVBQTZDQyxhQUE3QyxFQUE0REMsaUJBQTVELEVBQStFQyxnQkFBL0UsRUFBaUc7O0FBRXZHRixnQkFBY0csUUFBZCxDQUF1QkMsVUFBdkIsR0FBb0MsSUFBcEM7QUFDQUosZ0JBQWNHLFFBQWQsQ0FBdUJFLE9BQXZCLENBQStCQyxNQUEvQixHQUF3QyxnQ0FBeEM7QUFDQSxTQUFPTixjQUFjRyxRQUFkLENBQXVCRSxPQUF2QixDQUErQkMsTUFBL0IsQ0FBc0Msa0JBQXRDLENBQVA7O0FBRUFMLG9CQUFrQk0sVUFBbEIsQ0FBNkIsRUFBN0I7QUFDQUwsbUJBQWlCTSwwQkFBakIsQ0FBNEMsb0VBQTVDOztBQUVBVixpQkFDR1csS0FESCxDQUNTLE1BRFQsRUFDaUI7QUFDYkMsU0FBSyxFQURRO0FBRWJDLGlCQUFhLG9CQUZBO0FBR2JDLGdCQUFZO0FBSEMsR0FEakIsRUFNR0gsS0FOSCxDQU1TLE9BTlQsRUFNa0I7QUFDZEMsU0FBSyxXQURTO0FBRWRDLGlCQUFhLG9CQUZDO0FBR2RDLGdCQUFZO0FBSEUsR0FObEIsRUFXR0gsS0FYSCxDQVdTLE9BWFQsRUFXa0I7QUFDZEMsU0FBSyxRQURTO0FBRWRDLGlCQUFhLG9CQUZD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O0FBQ2hDRixvQkFBVUEsUUFBUTdhLE9BQVIsQ0FBZ0JrVCxPQUFPK0gsS0FBS0YsQ0FBWixFQUFjLEdBQWQsQ0FBaEIsRUFBb0NFLEtBQUtELENBQXpDLENBQVY7QUFDRDtBQUNGLE9BSkQ7QUFLQSxhQUFPSCxPQUFQO0FBQ0Q7QUF6dUNJLEdBQVA7QUEydUNELENBOXVDRCxFIiwiZmlsZSI6ImpzL21haW4uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYW5ndWxhciBmcm9tICdhbmd1bGFyJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgJ2Jvb3RzdHJhcCc7XG5cbmFuZ3VsYXIubW9kdWxlKCdicmV3YmVuY2gtbW9uaXRvcicsIFtcbiAgJ3VpLnJvdXRlcidcbiAgLCdudmQzJ1xuICAsJ25nVG91Y2gnXG4gICwnZHVTY3JvbGwnXG4gICwndWkua25vYidcbiAgLCdyek1vZHVsZSdcbl0pXG4uY29uZmlnKGZ1bmN0aW9uKCRzdGF0ZVByb3ZpZGVyLCAkdXJsUm91dGVyUHJvdmlkZXIsICRodHRwUHJvdmlkZXIsICRsb2NhdGlvblByb3ZpZGVyLCAkY29tcGlsZVByb3ZpZGVyKSB7XG5cbiAgJGh0dHBQcm92aWRlci5kZWZhdWx0cy51c2VYRG9tYWluID0gdHJ1ZTtcbiAgJGh0dHBQcm92aWRlci5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vbiA9ICdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24nO1xuICBkZWxldGUgJGh0dHBQcm92aWRlci5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vblsnWC1SZXF1ZXN0ZWQtV2l0aCddO1xuXG4gICRsb2NhdGlvblByb3ZpZGVyLmhhc2hQcmVmaXgoJycpO1xuICAkY29tcGlsZVByb3ZpZGVyLmFIcmVmU2FuaXRpemF0aW9uV2hpdGVsaXN0KC9eXFxzKihodHRwcz98ZnRwfG1haWx0b3x0ZWx8ZmlsZXxibG9ifGNocm9tZS1leHRlbnNpb258ZGF0YXxsb2NhbCk6Lyk7XG5cbiAgJHN0YXRlUHJvdmlkZXJcbiAgICAuc3RhdGUoJ2hvbWUnLCB7XG4gICAgICB1cmw6ICcnLFxuICAgICAgdGVtcGxhdGVVcmw6ICd2aWV3cy9tb25pdG9yLmh0bWwnLFxuICAgICAgY29udHJvbGxlcjogJ21haW5DdHJsJ1xuICAgIH0pXG4gICAgLnN0YXRlKCdzaGFyZScsIHtcbiAgICAgIHVybDogJy9zaC86ZmlsZScsXG4gICAgICB0ZW1wbGF0ZVVybDogJ3ZpZXdzL21vbml0b3IuaHRtbCcsXG4gICAgICBjb250cm9sbGVyOiAnbWFpbkN0cmwnXG4gICAgfSlcbiAgICAuc3RhdGUoJ3Jlc2V0Jywge1xuICAgICAgdXJsOiAnL3Jlc2V0JyxcbiAgICAgIHRlbXBsYXRlVXJsOiAndmlld3MvbW9uaXRvci5odG1sJyxcbiAgICAgIGNvbnRyb2xsZXI6ICdtYWluQ3RybCdcbiAgICB9KVxuICAgIC5zdGF0ZSgnb3RoZXJ3aXNlJywge1xuICAgICB1cmw6ICcqcGF0aCcsXG4gICAgIHRlbXBsYXRlVXJsOiAndmlld3Mvbm90LWZvdW5kLmh0bWwnXG4gICB9KTtcblxufSk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvanMvYXBwLmpzIiwiYW5ndWxhci5tb2R1bGUoJ2JyZXdiZW5jaC1tb25pdG9yJylcbi5jb250cm9sbGVyKCdtYWluQ3RybCcsIGZ1bmN0aW9uKCRzY29wZSwgJHN0YXRlLCAkZmlsdGVyLCAkdGltZW91dCwgJGludGVydmFsLCAkcSwgJGh0dHAsICRzY2UsIEJyZXdTZXJ2aWNlKXtcblxuJHNjb3BlLmNsZWFyU2V0dGluZ3MgPSBmdW5jdGlvbihlKXtcbiAgaWYoZSl7XG4gICAgYW5ndWxhci5lbGVtZW50KGUudGFyZ2V0KS5odG1sKCdSZW1vdmluZy4uLicpO1xuICB9XG4gIEJyZXdTZXJ2aWNlLmNsZWFyKCk7XG4gICR0aW1lb3V0KGZ1bmN0aW9uKCl7XG4gICAgd2luZG93LmxvY2F0aW9uLmhyZWY9Jy8nO1xuICB9LDEwMDApO1xufTtcblxuaWYoICRzdGF0ZS5jdXJyZW50Lm5hbWUgPT0gJ3Jlc2V0JylcbiAgJHNjb3BlLmNsZWFyU2V0dGluZ3MoKTtcblxudmFyIG5vdGlmaWNhdGlvbiA9IG51bGxcbiAgLHJlc2V0Q2hhcnQgPSAxMDBcbiAgLHRpbWVvdXQgPSBudWxsOy8vcmVzZXQgY2hhcnQgYWZ0ZXIgMTAwIHBvbGxzXG5cbiRzY29wZS5ob3BzO1xuJHNjb3BlLmdyYWlucztcbiRzY29wZS53YXRlcjtcbiRzY29wZS5sb3ZpYm9uZDtcbiRzY29wZS5rZXR0bGVUeXBlcyA9IEJyZXdTZXJ2aWNlLmtldHRsZVR5cGVzKCk7XG4kc2NvcGUuY2hhcnRPcHRpb25zID0gQnJld1NlcnZpY2UuY2hhcnRPcHRpb25zKCk7XG4kc2NvcGUuc2Vuc29yVHlwZXMgPSBCcmV3U2VydmljZS5zZW5zb3JUeXBlcztcbiRzY29wZS5zaG93U2V0dGluZ3MgPSB0cnVlO1xuJHNjb3BlLmVycm9yID0ge21lc3NhZ2U6ICcnLCB0eXBlOiAnZGFuZ2VyJ307XG4kc2NvcGUuc2xpZGVyID0ge1xuICBtaW46IDAsXG4gIG9wdGlvbnM6IHtcbiAgICBmbG9vcjogMCxcbiAgICBjZWlsOiAxMDAsXG4gICAgc3RlcDogNSxcbiAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBgJHt2YWx1ZX0lYDtcbiAgICB9LFxuICAgIG9uRW5kOiBmdW5jdGlvbihrZXR0bGVJZCwgbW9kZWxWYWx1ZSwgaGlnaFZhbHVlLCBwb2ludGVyVHlwZSl7XG4gICAgICB2YXIga2V0dGxlID0ga2V0dGxlSWQuc3BsaXQoJ18nKTtcbiAgICAgIHZhciBrO1xuXG4gICAgICBzd2l0Y2ggKGtldHRsZVswXSkge1xuICAgICAgICBjYXNlICdoZWF0JzpcbiAgICAgICAgICBrID0gJHNjb3BlLmtldHRsZXNba2V0dGxlWzFdXS5oZWF0ZXI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2Nvb2wnOlxuICAgICAgICAgIGsgPSAkc2NvcGUua2V0dGxlc1trZXR0bGVbMV1dLmNvb2xlcjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncHVtcCc6XG4gICAgICAgICAgayA9ICRzY29wZS5rZXR0bGVzW2tldHRsZVsxXV0ucHVtcDtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYoIWspXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmKCRzY29wZS5rZXR0bGVzW2tldHRsZVsxXV0uYWN0aXZlICYmIGsucHdtICYmIGsucnVubmluZyl7XG4gICAgICAgIHJldHVybiAkc2NvcGUudG9nZ2xlUmVsYXkoJHNjb3BlLmtldHRsZXNba2V0dGxlWzFdXSwgaywgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG4kc2NvcGUuZ2V0S2V0dGxlU2xpZGVyT3B0aW9ucyA9IGZ1bmN0aW9uKHR5cGUsIGluZGV4KXtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oJHNjb3BlLnNsaWRlci5vcHRpb25zLCB7aWQ6IGAke3R5cGV9XyR7aW5kZXh9YH0pO1xufVxuXG4kc2NvcGUuZ2V0TG92aWJvbmRDb2xvciA9IGZ1bmN0aW9uKHJhbmdlKXtcbiAgcmFuZ2UgPSByYW5nZS5yZXBsYWNlKC/CsC9nLCcnKS5yZXBsYWNlKC8gL2csJycpO1xuICBpZihyYW5nZS5pbmRleE9mKCctJykhPT0tMSl7XG4gICAgdmFyIHJBcnI9cmFuZ2Uuc3BsaXQoJy0nKTtcbiAgICByYW5nZSA9IChwYXJzZUZsb2F0KHJBcnJbMF0pK3BhcnNlRmxvYXQockFyclsxXSkpLzI7XG4gIH0gZWxzZSB7XG4gICAgcmFuZ2UgPSBwYXJzZUZsb2F0KHJhbmdlKTtcbiAgfVxuICBpZighcmFuZ2UpXG4gICAgcmV0dXJuICcnO1xuICB2YXIgbCA9IF8uZmlsdGVyKCRzY29wZS5sb3ZpYm9uZCwgZnVuY3Rpb24oaXRlbSl7XG4gICAgcmV0dXJuIChpdGVtLnNybSA8PSByYW5nZSkgPyBpdGVtLmhleCA6ICcnO1xuICB9KTtcbiAgaWYoISFsLmxlbmd0aClcbiAgICByZXR1cm4gbFtsLmxlbmd0aC0xXS5oZXg7XG4gIHJldHVybiAnJztcbn07XG5cbi8vZGVmYXVsdCBzZXR0aW5ncyB2YWx1ZXNcbiRzY29wZS5zZXR0aW5ncyA9IEJyZXdTZXJ2aWNlLnNldHRpbmdzKCdzZXR0aW5ncycpIHx8IEJyZXdTZXJ2aWNlLnJlc2V0KCk7XG4kc2NvcGUua2V0dGxlcyA9IEJyZXdTZXJ2aWNlLnNldHRpbmdzKCdrZXR0bGVzJykgfHwgQnJld1NlcnZpY2UuZGVmYXVsdEtldHRsZXMoKTtcbiRzY29wZS5zaGFyZSA9ICghJHN0YXRlLnBhcmFtcy5maWxlICYmIEJyZXdTZXJ2aWNlLnNldHRpbmdzKCdzaGFyZScpKSA/IEJyZXdTZXJ2aWNlLnNldHRpbmdzKCdzaGFyZScpIDoge1xuICAgICAgZmlsZTogJHN0YXRlLnBhcmFtcy5maWxlIHx8IG51bGxcbiAgICAgICwgcGFzc3dvcmQ6IG51bGxcbiAgICAgICwgbmVlZFBhc3N3b3JkOiBmYWxzZVxuICAgICAgLCBhY2Nlc3M6ICdyZWFkT25seSdcbiAgICAgICwgZGVsZXRlQWZ0ZXI6IDE0XG4gIH07XG5cbiRzY29wZS5zdW1WYWx1ZXMgPSBmdW5jdGlvbihvYmope1xuICByZXR1cm4gXy5zdW0oXy52YWx1ZXMob2JqKSk7XG59XG5cbi8vIGluaXQgY2FsYyB2YWx1ZXNcbiRzY29wZS51cGRhdGVBQlYgPSBmdW5jdGlvbigpe1xuICBpZigkc2NvcGUuc2V0dGluZ3MucmVjaXBlLnNjYWxlPT0nZ3Jhdml0eScpe1xuICAgIGlmKCRzY29wZS5zZXR0aW5ncy5yZWNpcGUubWV0aG9kPT0ncGFwYXppYW4nKVxuICAgICAgJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5hYnYgPSBCcmV3U2VydmljZS5hYnYoJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5vZywkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmZnKTtcbiAgICBlbHNlXG4gICAgICAkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmFidiA9IEJyZXdTZXJ2aWNlLmFidmEoJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5vZywkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmZnKTtcbiAgICAkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmFidyA9IEJyZXdTZXJ2aWNlLmFidygkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmFidiwkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmZnKTtcbiAgICAkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmF0dGVudWF0aW9uID0gQnJld1NlcnZpY2UuYXR0ZW51YXRpb24oQnJld1NlcnZpY2UucGxhdG8oJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5vZyksQnJld1NlcnZpY2UucGxhdG8oJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5mZykpO1xuICAgICRzY29wZS5zZXR0aW5ncy5yZWNpcGUuY2Fsb3JpZXMgPSBCcmV3U2VydmljZS5jYWxvcmllcygkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmFid1xuICAgICAgLEJyZXdTZXJ2aWNlLnJlKEJyZXdTZXJ2aWNlLnBsYXRvKCRzY29wZS5zZXR0aW5ncy5yZWNpcGUub2cpLEJyZXdTZXJ2aWNlLnBsYXRvKCRzY29wZS5zZXR0aW5ncy5yZWNpcGUuZmcpKVxuICAgICAgLCRzY29wZS5zZXR0aW5ncy5yZWNpcGUuZmcpO1xuICB9IGVsc2Uge1xuICAgIGlmKCRzY29wZS5zZXR0aW5ncy5yZWNpcGUubWV0aG9kPT0ncGFwYXppYW4nKVxuICAgICAgJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5hYnYgPSBCcmV3U2VydmljZS5hYnYoQnJld1NlcnZpY2Uuc2coJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5vZyksQnJld1NlcnZpY2Uuc2coJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5mZykpO1xuICAgIGVsc2VcbiAgICAgICRzY29wZS5zZXR0aW5ncy5yZWNpcGUuYWJ2ID0gQnJld1NlcnZpY2UuYWJ2YShCcmV3U2VydmljZS5zZygkc2NvcGUuc2V0dGluZ3MucmVjaXBlLm9nKSxCcmV3U2VydmljZS5zZygkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmZnKSk7XG4gICAgJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5hYncgPSBCcmV3U2VydmljZS5hYncoJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5hYnYsQnJld1NlcnZpY2Uuc2coJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5mZykpO1xuICAgICRzY29wZS5zZXR0aW5ncy5yZWNpcGUuYXR0ZW51YXRpb24gPSBCcmV3U2VydmljZS5hdHRlbnVhdGlvbigkc2NvcGUuc2V0dGluZ3MucmVjaXBlLm9nLCRzY29wZS5zZXR0aW5ncy5yZWNpcGUuZmcpO1xuICAgICRzY29wZS5zZXR0aW5ncy5yZWNpcGUuY2Fsb3JpZXMgPSBCcmV3U2VydmljZS5jYWxvcmllcygkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmFid1xuICAgICAgLEJyZXdTZXJ2aWNlLnJlKCRzY29wZS5zZXR0aW5ncy5yZWNpcGUub2csJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5mZylcbiAgICAgICxCcmV3U2VydmljZS5zZygkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmZnKSk7XG4gIH1cbn07XG5cbiRzY29wZS5jaGFuZ2VNZXRob2QgPSBmdW5jdGlvbihtZXRob2Qpe1xuICAkc2NvcGUuc2V0dGluZ3MucmVjaXBlLm1ldGhvZCA9IG1ldGhvZDtcbiAgJHNjb3BlLnVwZGF0ZUFCVigpO1xufTtcblxuJHNjb3BlLmNoYW5nZVNjYWxlID0gZnVuY3Rpb24oc2NhbGUpe1xuICAkc2NvcGUuc2V0dGluZ3MucmVjaXBlLnNjYWxlID0gc2NhbGU7XG4gIGlmKHNjYWxlPT0nZ3Jhdml0eScpe1xuICAgICRzY29wZS5zZXR0aW5ncy5yZWNpcGUub2cgPSBCcmV3U2VydmljZS5zZygkc2NvcGUuc2V0dGluZ3MucmVjaXBlLm9nKTtcbiAgICAkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmZnID0gQnJld1NlcnZpY2Uuc2coJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5mZyk7XG4gIH0gZWxzZSB7XG4gICAgJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5vZyA9IEJyZXdTZXJ2aWNlLnBsYXRvKCRzY29wZS5zZXR0aW5ncy5yZWNpcGUub2cpO1xuICAgICRzY29wZS5zZXR0aW5ncy5yZWNpcGUuZmcgPSBCcmV3U2VydmljZS5wbGF0bygkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmZnKTtcbiAgfVxufTtcblxuJHNjb3BlLnVwZGF0ZUFCVigpO1xuXG4gICRzY29wZS5nZXRQb3J0UmFuZ2UgPSBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgbnVtYmVyKys7XG4gICAgICByZXR1cm4gQXJyYXkobnVtYmVyKS5maWxsKCkubWFwKChfLCBpZHgpID0+IDAgKyBpZHgpO1xuICB9O1xuXG4gICRzY29wZS5hcmR1aW5vcyA9IHtcbiAgICBhZGQ6ICgpID0+IHtcbiAgICAgIGxldCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgICAgaWYoISRzY29wZS5zZXR0aW5ncy5hcmR1aW5vcykgJHNjb3BlLnNldHRpbmdzLmFyZHVpbm9zID0gW107XG4gICAgICAkc2NvcGUuc2V0dGluZ3MuYXJkdWlub3MucHVzaCh7XG4gICAgICAgIGlkOiBidG9hKG5vdysnJyskc2NvcGUuc2V0dGluZ3MuYXJkdWlub3MubGVuZ3RoKzEpLFxuICAgICAgICB1cmw6ICdhcmR1aW5vLmxvY2FsJyxcbiAgICAgICAgYW5hbG9nOiA1LFxuICAgICAgICBkaWdpdGFsOiAxM1xuICAgICAgfSk7XG4gICAgICBfLmVhY2goJHNjb3BlLmtldHRsZXMsIGtldHRsZSA9PiB7XG4gICAgICAgIGlmKCFrZXR0bGUuYXJkdWlubylcbiAgICAgICAgICBrZXR0bGUuYXJkdWlubyA9ICRzY29wZS5zZXR0aW5ncy5hcmR1aW5vc1swXTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgdXBkYXRlOiAoYXJkdWlubykgPT4ge1xuICAgICAgXy5lYWNoKCRzY29wZS5rZXR0bGVzLCBrZXR0bGUgPT4ge1xuICAgICAgICBpZihrZXR0bGUuYXJkdWlubyAmJiBrZXR0bGUuYXJkdWluby5pZCA9PSBhcmR1aW5vLmlkKVxuICAgICAgICAgIGtldHRsZS5hcmR1aW5vID0gYXJkdWlubztcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZGVsZXRlOiAoaW5kZXgsIGFyZHVpbm8pID0+IHtcbiAgICAgICRzY29wZS5zZXR0aW5ncy5hcmR1aW5vcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgXy5lYWNoKCRzY29wZS5rZXR0bGVzLCBrZXR0bGUgPT4ge1xuICAgICAgICBpZihrZXR0bGUuYXJkdWlubyAmJiBrZXR0bGUuYXJkdWluby5pZCA9PSBhcmR1aW5vLmlkKVxuICAgICAgICAgIGRlbGV0ZSBrZXR0bGUuYXJkdWlubztcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICAkc2NvcGUuc2Vzc2lvbnMgPSB7XG4gICAgYWRkOiAoKSA9PiB7XG4gICAgICBsZXQgbm93ID0gbmV3IERhdGUoKTtcbiAgICAgIGlmKCEkc2NvcGUuc2V0dGluZ3MuYWNjb3VudC5zZXNzaW9ucykgJHNjb3BlLnNldHRpbmdzLmFjY291bnQuc2Vzc2lvbnMgPSBbXTtcbiAgICAgICRzY29wZS5zZXR0aW5ncy5hY2NvdW50LnNlc3Npb25zLnB1c2goe1xuICAgICAgICBpZDogYnRvYShub3crJycrJHNjb3BlLnNldHRpbmdzLmFyZHVpbm9zLmxlbmd0aCsxKSxcbiAgICAgICAgbmFtZTogJ1Nlc3Npb24gTmFtZScsXG4gICAgICAgIGNyZWF0ZWQ6IG1vbWVudCgpXG4gICAgICB9KTtcbiAgICB9LFxuICAgIHVwZGF0ZTogKGFyZHVpbm8pID0+IHtcblxuICAgIH0sXG4gICAgZGVsZXRlOiAoaW5kZXgsIGFyZHVpbm8pID0+IHtcblxuICAgIH1cbiAgfTtcblxuICAkc2NvcGUudHBTY2FuID0gZnVuY3Rpb24oKXtcbiAgICAgIEJyZXdTZXJ2aWNlLnRwbGluaygpLnNjYW4oKTtcbiAgfTtcblxuICAkc2NvcGUuYWRkS2V0dGxlID0gZnVuY3Rpb24odHlwZSl7XG4gICAgaWYoISRzY29wZS5rZXR0bGVzKSAkc2NvcGUua2V0dGxlcyA9IFtdO1xuICAgICRzY29wZS5rZXR0bGVzLnB1c2goe1xuICAgICAgICBrZXk6IHR5cGUgPyBfLmZpbmQoJHNjb3BlLmtldHRsZVR5cGVzLHt0eXBlOiB0eXBlfSkubmFtZSA6ICRzY29wZS5rZXR0bGVUeXBlc1swXS5uYW1lXG4gICAgICAgICx0eXBlOiB0eXBlIHx8ICRzY29wZS5rZXR0bGVUeXBlc1swXS50eXBlXG4gICAgICAgICxhY3RpdmU6IGZhbHNlXG4gICAgICAgICxzdGlja3k6IGZhbHNlXG4gICAgICAgICxoZWF0ZXI6IHtwaW46J0Q2JyxydW5uaW5nOmZhbHNlLGF1dG86ZmFsc2V9XG4gICAgICAgICxwdW1wOiB7cGluOidENycscnVubmluZzpmYWxzZSxhdXRvOmZhbHNlfVxuICAgICAgICAsdGVtcDoge3BpbjonQTAnLHR5cGU6J1RoZXJtaXN0b3InLGhpdDpmYWxzZSxjdXJyZW50OjAscHJldmlvdXM6MCxhZGp1c3Q6MCx0YXJnZXQ6JHNjb3BlLmtldHRsZVR5cGVzWzBdLnRhcmdldCxkaWZmOiRzY29wZS5rZXR0bGVUeXBlc1swXS5kaWZmfVxuICAgICAgICAsdmFsdWVzOiBbXVxuICAgICAgICAsdGltZXJzOiBbXVxuICAgICAgICAsa25vYjogYW5ndWxhci5jb3B5KEJyZXdTZXJ2aWNlLmRlZmF1bHRLbm9iT3B0aW9ucygpLHt2YWx1ZTowLG1pbjowLG1heDokc2NvcGUua2V0dGxlVHlwZXNbMF0udGFyZ2V0KyRzY29wZS5rZXR0bGVUeXBlc1swXS5kaWZmfSlcbiAgICAgICAgLGFyZHVpbm86ICRzY29wZS5zZXR0aW5ncy5hcmR1aW5vcy5sZW5ndGggPyAkc2NvcGUuc2V0dGluZ3MuYXJkdWlub3NbMF0gOiBudWxsXG4gICAgfSk7XG4gIH07XG5cbiAgJHNjb3BlLmhhc1N0aWNreUtldHRsZXMgPSBmdW5jdGlvbih0eXBlKXtcbiAgICByZXR1cm4gXy5maWx0ZXIoJHNjb3BlLmtldHRsZXMsIHsnc3RpY2t5JzogdHJ1ZX0pLmxlbmd0aDtcbiAgfTtcblxuICAkc2NvcGUua2V0dGxlQ291bnQgPSBmdW5jdGlvbih0eXBlKXtcbiAgICByZXR1cm4gXy5maWx0ZXIoJHNjb3BlLmtldHRsZXMsIHsndHlwZSc6IHR5cGV9KS5sZW5ndGg7XG4gIH07XG5cbiAgJHNjb3BlLmFjdGl2ZUtldHRsZXMgPSBmdW5jdGlvbigpe1xuICAgIHJldHVybiBfLmZpbHRlcigkc2NvcGUua2V0dGxlcyx7J2FjdGl2ZSc6IHRydWV9KS5sZW5ndGg7XG4gIH07XG5cbiAgJHNjb3BlLnBpbkluVXNlID0gZnVuY3Rpb24ocGluLGFuYWxvZyl7XG4gICAgdmFyIGtldHRsZSA9IF8uZmluZCgkc2NvcGUua2V0dGxlcywgZnVuY3Rpb24oa2V0dGxlKXtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIChhbmFsb2cgJiYga2V0dGxlLnRlbXAudHlwZT09J1RoZXJtaXN0b3InICYmIGtldHRsZS50ZW1wLnBpbj09cGluKSB8fFxuICAgICAgICAoIWFuYWxvZyAmJiBrZXR0bGUudGVtcC50eXBlPT0nRFMxOEIyMCcgJiYga2V0dGxlLnRlbXAucGluPT1waW4pIHx8XG4gICAgICAgIChrZXR0bGUudGVtcC50eXBlPT0nUFQxMDAnICYmIGtldHRsZS50ZW1wLnBpbj09cGluKSB8fFxuICAgICAgICAoIWFuYWxvZyAmJiBrZXR0bGUuaGVhdGVyLnBpbj09cGluKSB8fFxuICAgICAgICAoIWFuYWxvZyAmJiBrZXR0bGUuY29vbGVyICYmIGtldHRsZS5jb29sZXIucGluPT1waW4pIHx8XG4gICAgICAgICghYW5hbG9nICYmICFrZXR0bGUuY29vbGVyICYmIGtldHRsZS5wdW1wLnBpbj09cGluKVxuICAgICAgKTtcbiAgICB9KTtcbiAgICByZXR1cm4ga2V0dGxlIHx8IGZhbHNlO1xuICB9O1xuXG4gICRzY29wZS5waW5DaGFuZ2UgPSBmdW5jdGlvbihvbGRfcGluLG5ld19waW4sYW5hbG9nKXtcbiAgICAvL2ZpbmQga2V0dGxlIHdpdGggbmV3IHBpbiBhbmQgcmVwbGFjZSBpdCB3aXRoIG9sZCBwaW5cbiAgICB2YXIga2V0dGxlID0gJHNjb3BlLnBpbkluVXNlKG5ld19waW4sYW5hbG9nKTtcbiAgICBpZihrZXR0bGUpe1xuICAgICAgaWYoa2V0dGxlLnRlbXAucGluID09IG5ld19waW4pXG4gICAgICAgIGtldHRsZS50ZW1wLnBpbiA9IG9sZF9waW47XG4gICAgICBlbHNlIGlmKGtldHRsZS5oZWF0ZXIucGluID09IG5ld19waW4pXG4gICAgICAgIGtldHRsZS5oZWF0ZXIucGluID0gb2xkX3BpbjtcbiAgICAgIGVsc2UgaWYoa2V0dGxlLnB1bXAucGluID09IG5ld19waW4pXG4gICAgICAgIGtldHRsZS5wdW1wLnBpbiA9IG9sZF9waW47XG4gICAgfVxuICB9O1xuXG4gICRzY29wZS5jcmVhdGVTaGFyZSA9IGZ1bmN0aW9uKCl7XG4gICAgaWYoISRzY29wZS5zZXR0aW5ncy5yZWNpcGUuYnJld2VyLm5hbWUgfHwgISRzY29wZS5zZXR0aW5ncy5yZWNpcGUuYnJld2VyLmVtYWlsKVxuICAgICAgcmV0dXJuO1xuICAgICRzY29wZS5zaGFyZV9zdGF0dXMgPSAnQ3JlYXRpbmcgc2hhcmUgbGluay4uLic7XG4gICAgcmV0dXJuIEJyZXdTZXJ2aWNlLmNyZWF0ZVNoYXJlKCRzY29wZS5zaGFyZSlcbiAgICAgIC50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG4gICAgICAgIGlmKHJlc3BvbnNlLnNoYXJlICYmIHJlc3BvbnNlLnNoYXJlLnVybCl7XG4gICAgICAgICAgJHNjb3BlLnNoYXJlX3N0YXR1cyA9ICcnO1xuICAgICAgICAgICRzY29wZS5zaGFyZV9zdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICAkc2NvcGUuc2hhcmVfbGluayA9IHJlc3BvbnNlLnNoYXJlLnVybDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAkc2NvcGUuc2hhcmVfc3VjY2VzcyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICRzY29wZS5zaGFyZV9zdGF0dXMgPSBlcnI7XG4gICAgICAgICRzY29wZS5zaGFyZV9zdWNjZXNzID0gZmFsc2U7XG4gICAgICB9KTtcbiAgfTtcblxuICAkc2NvcGUuc2hhcmVUZXN0ID0gZnVuY3Rpb24oYXJkdWlubyl7XG4gICAgYXJkdWluby50ZXN0aW5nID0gdHJ1ZTtcbiAgICBCcmV3U2VydmljZS5zaGFyZVRlc3QoYXJkdWlubylcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgYXJkdWluby50ZXN0aW5nID0gZmFsc2U7XG4gICAgICAgIGlmKHJlc3BvbnNlLmh0dHBfY29kZSA9PSAyMDApXG4gICAgICAgICAgYXJkdWluby5wdWJsaWMgPSB0cnVlO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgYXJkdWluby5wdWJsaWMgPSBmYWxzZTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgYXJkdWluby50ZXN0aW5nID0gZmFsc2U7XG4gICAgICAgIGFyZHVpbm8ucHVibGljID0gZmFsc2U7XG4gICAgICB9KTtcbiAgfTtcblxuICAkc2NvcGUudGVzdEluZmx1eERCID0gZnVuY3Rpb24oKXtcbiAgICAkc2NvcGUuc2V0dGluZ3MuaW5mbHV4ZGIudGVzdGluZyA9IHRydWU7XG4gICAgJHNjb3BlLnNldHRpbmdzLmluZmx1eGRiLmNvbm5lY3RlZCA9IGZhbHNlO1xuICAgIEJyZXdTZXJ2aWNlLmluZmx1eGRiKCkucGluZygpXG4gICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICRzY29wZS5zZXR0aW5ncy5pbmZsdXhkYi50ZXN0aW5nID0gZmFsc2U7XG4gICAgICAgIGlmKHJlc3BvbnNlLnN0YXR1cyA9PSAyMDQpe1xuICAgICAgICAgICQoJyNpbmZsdXhkYlVybCcpLnJlbW92ZUNsYXNzKCdpcy1pbnZhbGlkJyk7XG4gICAgICAgICAgJHNjb3BlLnNldHRpbmdzLmluZmx1eGRiLmNvbm5lY3RlZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgJCgnI2luZmx1eGRiVXJsJykuYWRkQ2xhc3MoJ2lzLWludmFsaWQnKTtcbiAgICAgICAgICAkc2NvcGUuc2V0dGluZ3MuaW5mbHV4ZGIuY29ubmVjdGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgJCgnI2luZmx1eGRiVXJsJykuYWRkQ2xhc3MoJ2lzLWludmFsaWQnKTtcbiAgICAgICAgJHNjb3BlLnNldHRpbmdzLmluZmx1eGRiLnRlc3RpbmcgPSBmYWxzZTtcbiAgICAgICAgJHNjb3BlLnNldHRpbmdzLmluZmx1eGRiLmNvbm5lY3RlZCA9IGZhbHNlO1xuICAgICAgfSk7XG4gIH07XG5cbiAgJHNjb3BlLmNyZWF0ZUluZmx1eERCID0gZnVuY3Rpb24oKXtcbiAgICB2YXIgZGIgPSAkc2NvcGUuc2V0dGluZ3MuaW5mbHV4ZGIuZGIgfHwgJ3Nlc3Npb24tJyttb21lbnQoKS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcbiAgICAkc2NvcGUuc2V0dGluZ3MuaW5mbHV4ZGIuY3JlYXRlZCA9IGZhbHNlO1xuICAgIEJyZXdTZXJ2aWNlLmluZmx1eGRiKCkuY3JlYXRlREIoZGIpXG4gICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgIC8vIHByb21wdCBmb3IgcGFzc3dvcmRcbiAgICAgICAgaWYocmVzcG9uc2UuZGF0YSAmJiByZXNwb25zZS5kYXRhLnJlc3VsdHMgJiYgcmVzcG9uc2UuZGF0YS5yZXN1bHRzLmxlbmd0aCl7XG4gICAgICAgICAgJHNjb3BlLnNldHRpbmdzLmluZmx1eGRiLmRiID0gZGI7XG4gICAgICAgICAgJHNjb3BlLnNldHRpbmdzLmluZmx1eGRiLmNyZWF0ZWQgPSB0cnVlO1xuICAgICAgICAgICQoJyNpbmZsdXhkYlVzZXInKS5yZW1vdmVDbGFzcygnaXMtaW52YWxpZCcpO1xuICAgICAgICAgICQoJyNpbmZsdXhkYlBhc3MnKS5yZW1vdmVDbGFzcygnaXMtaW52YWxpZCcpO1xuICAgICAgICAgICRzY29wZS5yZXNldEVycm9yKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgJHNjb3BlLnNldEVycm9yTWVzc2FnZShcIk9wcHMsIHRoZXJlIHdhcyBhIHByb2JsZW0gY3JlYXRpbmcgdGhlIGRhdGFiYXNlLlwiKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICBpZihlcnIuc3RhdHVzID09IDQwMSB8fCBlcnIuc3RhdHVzID09IDQwMyl7XG4gICAgICAgICAgJCgnI2luZmx1eGRiVXNlcicpLmFkZENsYXNzKCdpcy1pbnZhbGlkJyk7XG4gICAgICAgICAgJCgnI2luZmx1eGRiUGFzcycpLmFkZENsYXNzKCdpcy1pbnZhbGlkJyk7XG4gICAgICAgICAgJHNjb3BlLnNldEVycm9yTWVzc2FnZShcIkVudGVyIHlvdXIgVXNlcm5hbWUgYW5kIFBhc3N3b3JkIGZvciBJbmZsdXhEQlwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAkc2NvcGUuc2V0RXJyb3JNZXNzYWdlKFwiT3BwcywgdGhlcmUgd2FzIGEgcHJvYmxlbSBjcmVhdGluZyB0aGUgZGF0YWJhc2UuXCIpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfTtcblxuICAkc2NvcGUuc2hhcmVBY2Nlc3MgPSBmdW5jdGlvbihhY2Nlc3Mpe1xuICAgICAgaWYoJHNjb3BlLnNldHRpbmdzLnNoYXJlZCl7XG4gICAgICAgIGlmKGFjY2Vzcyl7XG4gICAgICAgICAgaWYoYWNjZXNzID09ICdlbWJlZCcpe1xuICAgICAgICAgICAgcmV0dXJuICEhKHdpbmRvdy5mcmFtZUVsZW1lbnQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gISEoJHNjb3BlLnNoYXJlLmFjY2VzcyAmJiAkc2NvcGUuc2hhcmUuYWNjZXNzID09PSBhY2Nlc3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZihhY2Nlc3MgJiYgYWNjZXNzID09ICdlbWJlZCcpe1xuICAgICAgICByZXR1cm4gISEod2luZG93LmZyYW1lRWxlbWVudCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcblxuICAkc2NvcGUubG9hZFNoYXJlRmlsZSA9IGZ1bmN0aW9uKCl7XG4gICAgQnJld1NlcnZpY2UuY2xlYXIoKTtcbiAgICAkc2NvcGUuc2V0dGluZ3MgPSBCcmV3U2VydmljZS5yZXNldCgpO1xuICAgICRzY29wZS5zZXR0aW5ncy5zaGFyZWQgPSB0cnVlO1xuICAgIHJldHVybiBCcmV3U2VydmljZS5sb2FkU2hhcmVGaWxlKCRzY29wZS5zaGFyZS5maWxlLCAkc2NvcGUuc2hhcmUucGFzc3dvcmQgfHwgbnVsbClcbiAgICAgIC50aGVuKGZ1bmN0aW9uKGNvbnRlbnRzKSB7XG4gICAgICAgIGlmKGNvbnRlbnRzKXtcbiAgICAgICAgICBpZihjb250ZW50cy5uZWVkUGFzc3dvcmQpe1xuICAgICAgICAgICAgJHNjb3BlLnNoYXJlLm5lZWRQYXNzd29yZCA9IHRydWU7XG4gICAgICAgICAgICBpZihjb250ZW50cy5zZXR0aW5ncy5yZWNpcGUpe1xuICAgICAgICAgICAgICAkc2NvcGUuc2V0dGluZ3MucmVjaXBlID0gY29udGVudHMuc2V0dGluZ3MucmVjaXBlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAkc2NvcGUuc2hhcmUubmVlZFBhc3N3b3JkID0gZmFsc2U7XG4gICAgICAgICAgICBpZihjb250ZW50cy5zaGFyZSAmJiBjb250ZW50cy5zaGFyZS5hY2Nlc3Mpe1xuICAgICAgICAgICAgICAkc2NvcGUuc2hhcmUuYWNjZXNzID0gY29udGVudHMuc2hhcmUuYWNjZXNzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYoY29udGVudHMuc2V0dGluZ3Mpe1xuICAgICAgICAgICAgICAkc2NvcGUuc2V0dGluZ3MgPSBjb250ZW50cy5zZXR0aW5ncztcbiAgICAgICAgICAgICAgJHNjb3BlLnNldHRpbmdzLm5vdGlmaWNhdGlvbnMgPSB7b246ZmFsc2UsdGltZXJzOnRydWUsaGlnaDp0cnVlLGxvdzp0cnVlLHRhcmdldDp0cnVlLHNsYWNrOicnLGxhc3Q6Jyd9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYoY29udGVudHMua2V0dGxlcyl7XG4gICAgICAgICAgICAgIF8uZWFjaChjb250ZW50cy5rZXR0bGVzLCBrZXR0bGUgPT4ge1xuICAgICAgICAgICAgICAgIGtldHRsZS5rbm9iID0gYW5ndWxhci5jb3B5KEJyZXdTZXJ2aWNlLmRlZmF1bHRLbm9iT3B0aW9ucygpLHt2YWx1ZTowLG1pbjowLG1heDoyMDArNSxzdWJUZXh0OntlbmFibGVkOiB0cnVlLHRleHQ6ICdzdGFydGluZy4uLicsY29sb3I6ICdncmF5Jyxmb250OiAnYXV0byd9fSk7XG4gICAgICAgICAgICAgICAga2V0dGxlLnZhbHVlcyA9IFtdO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgJHNjb3BlLmtldHRsZXMgPSBjb250ZW50cy5rZXR0bGVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICRzY29wZS5wcm9jZXNzVGVtcHMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGZ1bmN0aW9uKGVycikge1xuICAgICAgICAkc2NvcGUuc2V0RXJyb3JNZXNzYWdlKFwiT3BwcywgdGhlcmUgd2FzIGEgcHJvYmxlbSBsb2FkaW5nIHRoZSBzaGFyZWQgc2Vzc2lvbi5cIik7XG4gICAgICB9KTtcbiAgfTtcblxuICAkc2NvcGUuaW1wb3J0UmVjaXBlID0gZnVuY3Rpb24oJGZpbGVDb250ZW50LCRleHQpe1xuXG4gICAgICAvLyBwYXJzZSB0aGUgaW1wb3J0ZWQgY29udGVudFxuICAgICAgdmFyIGZvcm1hdHRlZF9jb250ZW50ID0gQnJld1NlcnZpY2UuZm9ybWF0WE1MKCRmaWxlQ29udGVudCk7XG4gICAgICB2YXIganNvbk9iaiwgcmVjaXBlID0gbnVsbDtcblxuICAgICAgaWYoISFmb3JtYXR0ZWRfY29udGVudCl7XG4gICAgICAgIHZhciB4MmpzID0gbmV3IFgySlMoKTtcbiAgICAgICAganNvbk9iaiA9IHgyanMueG1sX3N0cjJqc29uKCBmb3JtYXR0ZWRfY29udGVudCApO1xuICAgICAgfVxuXG4gICAgICBpZighanNvbk9iailcbiAgICAgICAgcmV0dXJuICRzY29wZS5yZWNpcGVfc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICBpZigkZXh0PT0nYnNteCcpe1xuICAgICAgICBpZighIWpzb25PYmouUmVjaXBlcyAmJiAhIWpzb25PYmouUmVjaXBlcy5EYXRhLlJlY2lwZSlcbiAgICAgICAgICByZWNpcGUgPSBqc29uT2JqLlJlY2lwZXMuRGF0YS5SZWNpcGU7XG4gICAgICAgIGVsc2UgaWYoISFqc29uT2JqLlNlbGVjdGlvbnMgJiYgISFqc29uT2JqLlNlbGVjdGlvbnMuRGF0YS5SZWNpcGUpXG4gICAgICAgICAgcmVjaXBlID0ganNvbk9iai5TZWxlY3Rpb25zLkRhdGEuUmVjaXBlO1xuICAgICAgICBpZihyZWNpcGUpXG4gICAgICAgICAgcmVjaXBlID0gQnJld1NlcnZpY2UucmVjaXBlQmVlclNtaXRoKHJlY2lwZSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICByZXR1cm4gJHNjb3BlLnJlY2lwZV9zdWNjZXNzID0gZmFsc2U7XG4gICAgICB9IGVsc2UgaWYoJGV4dD09J3htbCcpe1xuICAgICAgICBpZighIWpzb25PYmouUkVDSVBFUyAmJiAhIWpzb25PYmouUkVDSVBFUy5SRUNJUEUpXG4gICAgICAgICAgcmVjaXBlID0ganNvbk9iai5SRUNJUEVTLlJFQ0lQRTtcbiAgICAgICAgaWYocmVjaXBlKVxuICAgICAgICAgIHJlY2lwZSA9IEJyZXdTZXJ2aWNlLnJlY2lwZUJlZXJYTUwocmVjaXBlKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJldHVybiAkc2NvcGUucmVjaXBlX3N1Y2Nlc3MgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYoIXJlY2lwZSlcbiAgICAgICAgcmV0dXJuICRzY29wZS5yZWNpcGVfc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICBpZighIXJlY2lwZS5vZylcbiAgICAgICAgJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5vZyA9IHJlY2lwZS5vZztcbiAgICAgIGlmKCEhcmVjaXBlLmZnKVxuICAgICAgICAkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmZnID0gcmVjaXBlLmZnO1xuXG4gICAgICAkc2NvcGUuc2V0dGluZ3MucmVjaXBlLm5hbWUgPSByZWNpcGUubmFtZTtcbiAgICAgICRzY29wZS5zZXR0aW5ncy5yZWNpcGUuY2F0ZWdvcnkgPSByZWNpcGUuY2F0ZWdvcnk7XG4gICAgICAkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmFidiA9IHJlY2lwZS5hYnY7XG4gICAgICAkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmlidSA9IHJlY2lwZS5pYnU7XG4gICAgICAkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmRhdGUgPSByZWNpcGUuZGF0ZTtcbiAgICAgICRzY29wZS5zZXR0aW5ncy5yZWNpcGUuYnJld2VyID0gcmVjaXBlLmJyZXdlcjtcblxuICAgICAgaWYocmVjaXBlLmdyYWlucy5sZW5ndGgpe1xuICAgICAgICAkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmdyYWlucyA9IHJlY2lwZS5ncmFpbnM7XG4gICAgICAgIGxldCBrZXR0bGUgPSBfLmZpbHRlcigkc2NvcGUua2V0dGxlcyx7dHlwZTonZ3JhaW4nfSlbMF07XG4gICAgICAgIGlmKGtldHRsZSkga2V0dGxlLnRpbWVycyA9IFtdO1xuICAgICAgICAkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmdyYWlucyA9IHt9O1xuICAgICAgICBfLmVhY2gocmVjaXBlLmdyYWlucyxmdW5jdGlvbihncmFpbil7XG4gICAgICAgICAgaWYoa2V0dGxlKXtcbiAgICAgICAgICAgICRzY29wZS5hZGRUaW1lcihrZXR0bGUse1xuICAgICAgICAgICAgICBsYWJlbDogZ3JhaW4ubGFiZWwsXG4gICAgICAgICAgICAgIG1pbjogZ3JhaW4ubWluLFxuICAgICAgICAgICAgICBub3RlczogZ3JhaW4ubm90ZXNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBzdW0gdGhlIGFtb3VudHMgZm9yIHRoZSBncmFpbnNcbiAgICAgICAgICBpZigkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmdyYWluc1tncmFpbi5sYWJlbF0pXG4gICAgICAgICAgICAkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmdyYWluc1tncmFpbi5sYWJlbF0gKz0gTnVtYmVyKGdyYWluLmFtb3VudCk7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5ncmFpbnNbZ3JhaW4ubGFiZWxdID0gTnVtYmVyKGdyYWluLmFtb3VudCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZihyZWNpcGUuaG9wcy5sZW5ndGgpe1xuICAgICAgICBsZXQga2V0dGxlID0gXy5maWx0ZXIoJHNjb3BlLmtldHRsZXMse3R5cGU6J2hvcCd9KVswXTtcbiAgICAgICAgaWYoa2V0dGxlKSBrZXR0bGUudGltZXJzID0gW107XG4gICAgICAgICRzY29wZS5zZXR0aW5ncy5yZWNpcGUuaG9wcyA9IHt9O1xuICAgICAgICBfLmVhY2gocmVjaXBlLmhvcHMsZnVuY3Rpb24oaG9wKXtcbiAgICAgICAgICBpZihrZXR0bGUpe1xuICAgICAgICAgICAgJHNjb3BlLmFkZFRpbWVyKGtldHRsZSx7XG4gICAgICAgICAgICAgIGxhYmVsOiBob3AubGFiZWwsXG4gICAgICAgICAgICAgIG1pbjogaG9wLm1pbixcbiAgICAgICAgICAgICAgbm90ZXM6IGhvcC5ub3Rlc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIHN1bSB0aGUgYW1vdW50cyBmb3IgdGhlIGhvcHNcbiAgICAgICAgICBpZigkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmhvcHNbaG9wLmxhYmVsXSlcbiAgICAgICAgICAgICRzY29wZS5zZXR0aW5ncy5yZWNpcGUuaG9wc1tob3AubGFiZWxdICs9IE51bWJlcihob3AuYW1vdW50KTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmhvcHNbaG9wLmxhYmVsXSA9IE51bWJlcihob3AuYW1vdW50KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZihyZWNpcGUubWlzYy5sZW5ndGgpe1xuICAgICAgICBsZXQga2V0dGxlID0gXy5maWx0ZXIoJHNjb3BlLmtldHRsZXMse3R5cGU6J3dhdGVyJ30pWzBdO1xuICAgICAgICBpZihrZXR0bGUpe1xuICAgICAgICAgIGtldHRsZS50aW1lcnMgPSBbXTtcbiAgICAgICAgICBfLmVhY2gocmVjaXBlLm1pc2MsZnVuY3Rpb24obWlzYyl7XG4gICAgICAgICAgICAkc2NvcGUuYWRkVGltZXIoa2V0dGxlLHtcbiAgICAgICAgICAgICAgbGFiZWw6IG1pc2MubGFiZWwsXG4gICAgICAgICAgICAgIG1pbjogbWlzYy5taW4sXG4gICAgICAgICAgICAgIG5vdGVzOiBtaXNjLm5vdGVzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYocmVjaXBlLnllYXN0Lmxlbmd0aCl7XG4gICAgICAgICRzY29wZS5zZXR0aW5ncy5yZWNpcGUueWVhc3QgPSBbXTtcbiAgICAgICAgXy5lYWNoKHJlY2lwZS55ZWFzdCxmdW5jdGlvbih5ZWFzdCl7XG4gICAgICAgICAgJHNjb3BlLnNldHRpbmdzLnJlY2lwZS55ZWFzdC5wdXNoKHtcbiAgICAgICAgICAgIG5hbWU6IHllYXN0Lm5hbWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICAkc2NvcGUucmVjaXBlX3N1Y2Nlc3MgPSB0cnVlO1xuICB9O1xuXG4gICRzY29wZS5sb2FkU3R5bGVzID0gZnVuY3Rpb24oKXtcbiAgICBpZighJHNjb3BlLnN0eWxlcyl7XG4gICAgICBCcmV3U2VydmljZS5zdHlsZXMoKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKXtcbiAgICAgICAgJHNjb3BlLnN0eWxlcyA9IHJlc3BvbnNlO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gICRzY29wZS5sb2FkQ29uZmlnID0gZnVuY3Rpb24oKXtcbiAgICB2YXIgY29uZmlnID0gW107XG4gICAgaWYoISRzY29wZS5wa2cpe1xuICAgICAgY29uZmlnLnB1c2goQnJld1NlcnZpY2UucGtnKCkudGhlbihmdW5jdGlvbihyZXNwb25zZSl7XG4gICAgICAgICAgJHNjb3BlLnBrZyA9IHJlc3BvbnNlO1xuICAgICAgICAgICRzY29wZS5zZXR0aW5ncy5za2V0Y2hfdmVyc2lvbiA9IHJlc3BvbnNlLnNrZXRjaF92ZXJzaW9uO1xuICAgICAgICAgIGlmKCEkc2NvcGUuc2V0dGluZ3MuYmJfdmVyc2lvbil7XG4gICAgICAgICAgICAkc2NvcGUuc2V0dGluZ3MuYmJfdmVyc2lvbiA9IHJlc3BvbnNlLnZlcnNpb247XG4gICAgICAgICAgfSBlbHNlIGlmKCRzY29wZS5zZXR0aW5ncy5iYl92ZXJzaW9uICE9IHJlc3BvbnNlLnZlcnNpb24pe1xuICAgICAgICAgICAgJHNjb3BlLmVycm9yLnR5cGUgPSAnaW5mbyc7XG4gICAgICAgICAgICAkc2NvcGUuc2V0RXJyb3JNZXNzYWdlKCdUaGVyZSBpcyBhIG5ldyB2ZXJzaW9uIGF2YWlsYWJsZSBmb3IgQnJld0JlbmNoLiBQbGVhc2UgPGEgaHJlZj1cIiMvcmVzZXRcIj5jbGVhcjwvYT4geW91ciBzZXR0aW5ncy4nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmKCEkc2NvcGUuZ3JhaW5zKXtcbiAgICAgIGNvbmZpZy5wdXNoKEJyZXdTZXJ2aWNlLmdyYWlucygpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2Upe1xuICAgICAgICAgIHJldHVybiAkc2NvcGUuZ3JhaW5zID0gXy5zb3J0QnkoXy51bmlxQnkocmVzcG9uc2UsJ25hbWUnKSwnbmFtZScpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZighJHNjb3BlLmhvcHMpe1xuICAgICAgY29uZmlnLnB1c2goXG4gICAgICAgIEJyZXdTZXJ2aWNlLmhvcHMoKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKXtcbiAgICAgICAgICByZXR1cm4gJHNjb3BlLmhvcHMgPSBfLnNvcnRCeShfLnVuaXFCeShyZXNwb25zZSwnbmFtZScpLCduYW1lJyk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmKCEkc2NvcGUud2F0ZXIpe1xuICAgICAgY29uZmlnLnB1c2goXG4gICAgICAgIEJyZXdTZXJ2aWNlLndhdGVyKCkudGhlbihmdW5jdGlvbihyZXNwb25zZSl7XG4gICAgICAgICAgcmV0dXJuICRzY29wZS53YXRlciA9IF8uc29ydEJ5KF8udW5pcUJ5KHJlc3BvbnNlLCdzYWx0JyksJ3NhbHQnKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYoISRzY29wZS5sb3ZpYm9uZCl7XG4gICAgICBjb25maWcucHVzaChcbiAgICAgICAgQnJld1NlcnZpY2UubG92aWJvbmQoKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKXtcbiAgICAgICAgICByZXR1cm4gJHNjb3BlLmxvdmlib25kID0gcmVzcG9uc2U7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiAkcS5hbGwoY29uZmlnKTtcbn07XG5cbiAgLy8gY2hlY2sgaWYgcHVtcCBvciBoZWF0ZXIgYXJlIHJ1bm5pbmdcbiAgJHNjb3BlLmluaXQgPSAoKSA9PiB7XG4gICAgJHNjb3BlLnNob3dTZXR0aW5ncyA9ICEkc2NvcGUuc2V0dGluZ3Muc2hhcmVkO1xuICAgIGlmKCRzY29wZS5zaGFyZS5maWxlKVxuICAgICAgcmV0dXJuICRzY29wZS5sb2FkU2hhcmVGaWxlKCk7XG5cbiAgICBfLmVhY2goJHNjb3BlLmtldHRsZXMsIGtldHRsZSA9PiB7XG4gICAgICAgIC8vdXBkYXRlIG1heFxuICAgICAgICBrZXR0bGUua25vYi5tYXggPSBrZXR0bGUudGVtcFsndGFyZ2V0J10ra2V0dGxlLnRlbXBbJ2RpZmYnXSsxMDtcbiAgICAgICAgLy8gY2hlY2sgdGltZXJzIGZvciBydW5uaW5nXG4gICAgICAgIGlmKCEha2V0dGxlLnRpbWVycyAmJiBrZXR0bGUudGltZXJzLmxlbmd0aCl7XG4gICAgICAgICAgXy5lYWNoKGtldHRsZS50aW1lcnMsIHRpbWVyID0+IHtcbiAgICAgICAgICAgIGlmKHRpbWVyLnJ1bm5pbmcpe1xuICAgICAgICAgICAgICB0aW1lci5ydW5uaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICRzY29wZS50aW1lclN0YXJ0KHRpbWVyLGtldHRsZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYoIXRpbWVyLnJ1bm5pbmcgJiYgdGltZXIucXVldWUpe1xuICAgICAgICAgICAgICAkdGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgJHNjb3BlLnRpbWVyU3RhcnQodGltZXIsa2V0dGxlKTtcbiAgICAgICAgICAgICAgfSw2MDAwMCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYodGltZXIudXAgJiYgdGltZXIudXAucnVubmluZyl7XG4gICAgICAgICAgICAgIHRpbWVyLnVwLnJ1bm5pbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgJHNjb3BlLnRpbWVyU3RhcnQodGltZXIudXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgICRzY29wZS51cGRhdGVLbm9iQ29weShrZXR0bGUpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gICRzY29wZS5zZXRFcnJvck1lc3NhZ2UgPSBmdW5jdGlvbihlcnIsIGtldHRsZSl7XG4gICAgaWYoISEkc2NvcGUuc2V0dGluZ3Muc2hhcmVkKXtcbiAgICAgICRzY29wZS5lcnJvci50eXBlID0gJ3dhcm5pbmcnO1xuICAgICAgJHNjb3BlLmVycm9yLm1lc3NhZ2UgPSAkc2NlLnRydXN0QXNIdG1sKCdUaGUgbW9uaXRvciBzZWVtcyB0byBiZSBvZmYtbGluZSwgcmUtY29ubmVjdGluZy4uLicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbWVzc2FnZTtcblxuICAgICAgaWYodHlwZW9mIGVyciA9PSAnc3RyaW5nJyAmJiBlcnIuaW5kZXhPZigneycpICE9PSAtMSl7XG4gICAgICAgIGlmKCFPYmplY3Qua2V5cyhlcnIpLmxlbmd0aCkgcmV0dXJuO1xuICAgICAgICBlcnIgPSBKU09OLnBhcnNlKGVycik7XG4gICAgICB9XG5cbiAgICAgIGlmKHR5cGVvZiBlcnIgPT0gJ3N0cmluZycpXG4gICAgICAgIG1lc3NhZ2UgPSBlcnI7XG4gICAgICBlbHNlIGlmKGVyci5zdGF0dXNUZXh0KVxuICAgICAgICBtZXNzYWdlID0gZXJyLnN0YXR1c1RleHQ7XG4gICAgICBlbHNlIGlmKGVyci5jb25maWcudXJsKVxuICAgICAgICBtZXNzYWdlID0gZXJyLmNvbmZpZy51cmw7XG4gICAgICBlbHNlXG4gICAgICAgIG1lc3NhZ2UgPSBKU09OLnN0cmluZ2lmeShlcnIpO1xuXG4gICAgICBpZihtZXNzYWdlKXtcbiAgICAgICAgaWYoa2V0dGxlKXtcbiAgICAgICAgICBrZXR0bGUuZXJyb3IgPSAkc2NlLnRydXN0QXNIdG1sKGBDb25uZWN0aW9uIGVycm9yOiAke21lc3NhZ2V9YCk7XG4gICAgICAgICAgJHNjb3BlLnVwZGF0ZUtub2JDb3B5KGtldHRsZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICRzY29wZS5lcnJvci5tZXNzYWdlID0gJHNjZS50cnVzdEFzSHRtbChgRXJyb3I6ICR7bWVzc2FnZX1gKTtcbiAgICAgIH0gZWxzZSBpZihrZXR0bGUpe1xuICAgICAgICBrZXR0bGUuZXJyb3IgPSBgRXJyb3IgY29ubmVjdGluZyB0byAke0JyZXdTZXJ2aWNlLmRvbWFpbihrZXR0bGUuYXJkdWlubyl9YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICRzY29wZS5lcnJvci5tZXNzYWdlID0gJHNjZS50cnVzdEFzSHRtbChgQ29ubmVjdGlvbiBlcnJvcjpgKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgJHNjb3BlLnJlc2V0RXJyb3IgPSBmdW5jdGlvbihrZXR0bGUpe1xuICAgICRzY29wZS5lcnJvci50eXBlID0gJ2Rhbmdlcic7XG4gICAgJHNjb3BlLmVycm9yLm1lc3NhZ2UgPSAkc2NlLnRydXN0QXNIdG1sKCcnKTtcbiAgICBpZihrZXR0bGUpIGtldHRsZS5lcnJvciA9ICRzY2UudHJ1c3RBc0h0bWwoJycpO1xuICB9O1xuXG4gICRzY29wZS51cGRhdGVUZW1wID0gZnVuY3Rpb24ocmVzcG9uc2UsIGtldHRsZSl7XG4gICAgaWYoIXJlc3BvbnNlIHx8ICFyZXNwb25zZS50ZW1wKXtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAkc2NvcGUucmVzZXRFcnJvcihrZXR0bGUpO1xuXG4gICAgdmFyIHRlbXBzID0gW107XG4gICAgLy9jaGFydCBkYXRlXG4gICAgdmFyIGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIC8vIHRlbXAgcmVzcG9uc2UgaXMgaW4gQ1xuICAgIGtldHRsZS50ZW1wLnByZXZpb3VzID0gKCRzY29wZS5zZXR0aW5ncy51bml0ID09ICdGJykgP1xuICAgICAgJGZpbHRlcigndG9GYWhyZW5oZWl0JykocmVzcG9uc2UudGVtcCkgOlxuICAgICAgTWF0aC5yb3VuZChyZXNwb25zZS50ZW1wKTtcbiAgICBrZXR0bGUudGVtcC5jdXJyZW50ID0ga2V0dGxlLnRlbXAucHJldmlvdXMra2V0dGxlLnRlbXAuYWRqdXN0O1xuXG4gICAgLy9yZXNldCBhbGwga2V0dGxlcyBldmVyeSByZXNldENoYXJ0XG4gICAgaWYoa2V0dGxlLnZhbHVlcy5sZW5ndGggPiByZXNldENoYXJ0KXtcbiAgICAgICRzY29wZS5rZXR0bGVzLm1hcCgoaykgPT4ge1xuICAgICAgICByZXR1cm4gay52YWx1ZXM9W107XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvL0RIVDExIHNlbnNvciBoYXMgaHVtaWRpdHlcbiAgICBpZiggcmVzcG9uc2UuaHVtaWRpdHkgKXtcbiAgICAgIGtldHRsZS5odW1pZGl0eSA9IHJlc3BvbnNlLmh1bWlkaXR5O1xuICAgIH1cblxuICAgIGtldHRsZS52YWx1ZXMucHVzaChbZGF0ZS5nZXRUaW1lKCksa2V0dGxlLnRlbXAuY3VycmVudF0pO1xuXG4gICAgJHNjb3BlLnVwZGF0ZUtub2JDb3B5KGtldHRsZSk7XG5cbiAgICAvL2lzIHRlbXAgdG9vIGhpZ2g/XG4gICAgaWYoa2V0dGxlLnRlbXAuY3VycmVudCA+PSBrZXR0bGUudGVtcC50YXJnZXQra2V0dGxlLnRlbXAuZGlmZil7XG4gICAgICAvL3N0b3AgdGhlIGhlYXRpbmcgZWxlbWVudFxuICAgICAgaWYoa2V0dGxlLmhlYXRlci5hdXRvICYmIGtldHRsZS5oZWF0ZXIucnVubmluZyl7XG4gICAgICAgIHRlbXBzLnB1c2goJHNjb3BlLnRvZ2dsZVJlbGF5KGtldHRsZSwga2V0dGxlLmhlYXRlciwgZmFsc2UpKTtcbiAgICAgIH1cbiAgICAgIC8vc3RvcCB0aGUgcHVtcFxuICAgICAgaWYoa2V0dGxlLnB1bXAuYXV0byAmJiBrZXR0bGUucHVtcC5ydW5uaW5nKXtcbiAgICAgICAgdGVtcHMucHVzaCgkc2NvcGUudG9nZ2xlUmVsYXkoa2V0dGxlLCBrZXR0bGUucHVtcCwgZmFsc2UpKTtcbiAgICAgIH1cbiAgICAgIC8vc3RhcnQgdGhlIGNoaWxsZXJcbiAgICAgIGlmKGtldHRsZS5jb29sZXIgJiYga2V0dGxlLmNvb2xlci5hdXRvICYmICFrZXR0bGUuY29vbGVyLnJ1bm5pbmcpe1xuICAgICAgICB0ZW1wcy5wdXNoKCRzY29wZS50b2dnbGVSZWxheShrZXR0bGUsIGtldHRsZS5jb29sZXIsIHRydWUpLnRoZW4oY29vbGVyID0+IHtcbiAgICAgICAgICBrZXR0bGUua25vYi5zdWJUZXh0LnRleHQgPSAnY29vbGluZyc7XG4gICAgICAgICAga2V0dGxlLmtub2Iuc3ViVGV4dC5jb2xvciA9ICdyZ2JhKDUyLDE1MiwyMTksMSknO1xuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSAvL2lzIHRlbXAgdG9vIGxvdz9cbiAgICBlbHNlIGlmKGtldHRsZS50ZW1wLmN1cnJlbnQgPD0ga2V0dGxlLnRlbXAudGFyZ2V0LWtldHRsZS50ZW1wLmRpZmYpe1xuICAgICAgJHNjb3BlLmFsZXJ0KGtldHRsZSk7XG4gICAgICAvL3N0YXJ0IHRoZSBoZWF0aW5nIGVsZW1lbnRcbiAgICAgIGlmKGtldHRsZS5oZWF0ZXIuYXV0byAmJiAha2V0dGxlLmhlYXRlci5ydW5uaW5nKXtcbiAgICAgICAgdGVtcHMucHVzaCgkc2NvcGUudG9nZ2xlUmVsYXkoa2V0dGxlLCBrZXR0bGUuaGVhdGVyLCB0cnVlKS50aGVuKGhlYXRpbmcgPT4ge1xuICAgICAgICAgIGtldHRsZS5rbm9iLnN1YlRleHQudGV4dCA9ICdoZWF0aW5nJztcbiAgICAgICAgICBrZXR0bGUua25vYi5zdWJUZXh0LmNvbG9yID0gJ3JnYmEoMjAwLDQ3LDQ3LDEpJztcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgICAgLy9zdGFydCB0aGUgcHVtcFxuICAgICAgaWYoa2V0dGxlLnB1bXAuYXV0byAmJiAha2V0dGxlLnB1bXAucnVubmluZyl7XG4gICAgICAgIHRlbXBzLnB1c2goJHNjb3BlLnRvZ2dsZVJlbGF5KGtldHRsZSwga2V0dGxlLnB1bXAsIHRydWUpKTtcbiAgICAgIH1cbiAgICAgIC8vc3RvcCB0aGUgY29vbGVyXG4gICAgICBpZihrZXR0bGUuY29vbGVyICYmIGtldHRsZS5jb29sZXIuYXV0byAmJiBrZXR0bGUuY29vbGVyLnJ1bm5pbmcpe1xuICAgICAgICB0ZW1wcy5wdXNoKCRzY29wZS50b2dnbGVSZWxheShrZXR0bGUsIGtldHRsZS5jb29sZXIsIGZhbHNlKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHdpdGhpbiB0YXJnZXQhXG4gICAgICBrZXR0bGUudGVtcC5oaXQ9bmV3IERhdGUoKTsvL3NldCB0aGUgdGltZSB0aGUgdGFyZ2V0IHdhcyBoaXQgc28gd2UgY2FuIG5vdyBzdGFydCBhbGVydHNcbiAgICAgICRzY29wZS5hbGVydChrZXR0bGUpO1xuICAgICAgLy9zdG9wIHRoZSBoZWF0ZXJcbiAgICAgIGlmKGtldHRsZS5oZWF0ZXIuYXV0byAmJiBrZXR0bGUuaGVhdGVyLnJ1bm5pbmcpe1xuICAgICAgICB0ZW1wcy5wdXNoKCRzY29wZS50b2dnbGVSZWxheShrZXR0bGUsIGtldHRsZS5oZWF0ZXIsIGZhbHNlKSk7XG4gICAgICB9XG4gICAgICAvL3N0b3AgdGhlIHB1bXBcbiAgICAgIGlmKGtldHRsZS5wdW1wLmF1dG8gJiYga2V0dGxlLnB1bXAucnVubmluZyl7XG4gICAgICAgIHRlbXBzLnB1c2goJHNjb3BlLnRvZ2dsZVJlbGF5KGtldHRsZSwga2V0dGxlLnB1bXAsIGZhbHNlKSk7XG4gICAgICB9XG4gICAgICAvL3N0b3AgdGhlIGNvb2xlclxuICAgICAgaWYoa2V0dGxlLmNvb2xlciAmJiBrZXR0bGUuY29vbGVyLmF1dG8gJiYga2V0dGxlLmNvb2xlci5ydW5uaW5nKXtcbiAgICAgICAgdGVtcHMucHVzaCgkc2NvcGUudG9nZ2xlUmVsYXkoa2V0dGxlLCBrZXR0bGUuY29vbGVyLCBmYWxzZSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gJHEuYWxsKHRlbXBzKTtcbiAgfTtcblxuICAkc2NvcGUuZ2V0TmF2T2Zmc2V0ID0gZnVuY3Rpb24oKXtcbiAgICByZXR1cm4gMTI1K2FuZ3VsYXIuZWxlbWVudChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmF2YmFyJykpWzBdLm9mZnNldEhlaWdodDtcbiAgfTtcblxuICAkc2NvcGUuYWRkVGltZXIgPSBmdW5jdGlvbihrZXR0bGUsb3B0aW9ucyl7XG4gICAgaWYoIWtldHRsZS50aW1lcnMpXG4gICAgICBrZXR0bGUudGltZXJzPVtdO1xuICAgIGlmKG9wdGlvbnMpe1xuICAgICAgb3B0aW9ucy5taW4gPSBvcHRpb25zLm1pbiA/IG9wdGlvbnMubWluIDogMDtcbiAgICAgIG9wdGlvbnMuc2VjID0gb3B0aW9ucy5zZWMgPyBvcHRpb25zLnNlYyA6IDA7XG4gICAgICBvcHRpb25zLnJ1bm5pbmcgPSBvcHRpb25zLnJ1bm5pbmcgPyBvcHRpb25zLnJ1bm5pbmcgOiBmYWxzZTtcbiAgICAgIG9wdGlvbnMucXVldWUgPSBvcHRpb25zLnF1ZXVlID8gb3B0aW9ucy5xdWV1ZSA6IGZhbHNlO1xuICAgICAga2V0dGxlLnRpbWVycy5wdXNoKG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBrZXR0bGUudGltZXJzLnB1c2goe2xhYmVsOidFZGl0IGxhYmVsJyxtaW46NjAsc2VjOjAscnVubmluZzpmYWxzZSxxdWV1ZTpmYWxzZX0pO1xuICAgIH1cbiAgfTtcblxuICAkc2NvcGUucmVtb3ZlVGltZXJzID0gZnVuY3Rpb24oZSxrZXR0bGUpe1xuICAgIHZhciBidG4gPSBhbmd1bGFyLmVsZW1lbnQoZS50YXJnZXQpO1xuICAgIGlmKGJ0bi5oYXNDbGFzcygnZmEtdHJhc2gnKSkgYnRuID0gYnRuLnBhcmVudCgpO1xuXG4gICAgaWYoIWJ0bi5oYXNDbGFzcygnYnRuLWRhbmdlcicpKXtcbiAgICAgIGJ0bi5yZW1vdmVDbGFzcygnYnRuLWxpZ2h0JykuYWRkQ2xhc3MoJ2J0bi1kYW5nZXInKTtcbiAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XG4gICAgICAgIGJ0bi5yZW1vdmVDbGFzcygnYnRuLWRhbmdlcicpLmFkZENsYXNzKCdidG4tbGlnaHQnKTtcbiAgICAgIH0sMjAwMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ0bi5yZW1vdmVDbGFzcygnYnRuLWRhbmdlcicpLmFkZENsYXNzKCdidG4tbGlnaHQnKTtcbiAgICAgIGtldHRsZS50aW1lcnM9W107XG4gICAgfVxuICB9O1xuXG4gICRzY29wZS50b2dnbGVQV00gPSBmdW5jdGlvbihrZXR0bGUpe1xuICAgICAga2V0dGxlLnB3bSA9ICFrZXR0bGUucHdtO1xuICAgICAgaWYoa2V0dGxlLnB3bSlcbiAgICAgICAga2V0dGxlLnNzciA9IHRydWU7XG4gIH07XG5cbiAgJHNjb3BlLnRvZ2dsZUtldHRsZSA9IGZ1bmN0aW9uKGl0ZW0sIGtldHRsZSl7XG5cbiAgICB2YXIgaztcblxuICAgIHN3aXRjaCAoaXRlbSkge1xuICAgICAgY2FzZSAnaGVhdCc6XG4gICAgICAgIGsgPSBrZXR0bGUuaGVhdGVyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Nvb2wnOlxuICAgICAgICBrID0ga2V0dGxlLmNvb2xlcjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdwdW1wJzpcbiAgICAgICAgayA9IGtldHRsZS5wdW1wO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZighaylcbiAgICAgIHJldHVybjtcblxuICAgIGsucnVubmluZyA9ICFrLnJ1bm5pbmc7XG5cbiAgICBpZihrZXR0bGUuYWN0aXZlICYmIGsucnVubmluZyl7XG4gICAgICAvL3N0YXJ0IHRoZSByZWxheVxuICAgICAgJHNjb3BlLnRvZ2dsZVJlbGF5KGtldHRsZSwgaywgdHJ1ZSk7XG4gICAgfSBlbHNlIGlmKCFrLnJ1bm5pbmcpe1xuICAgICAgLy9zdG9wIHRoZSByZWxheVxuICAgICAgJHNjb3BlLnRvZ2dsZVJlbGF5KGtldHRsZSwgaywgZmFsc2UpO1xuICAgIH1cbiAgfTtcblxuICAkc2NvcGUua25vYkNsaWNrID0gZnVuY3Rpb24oa2V0dGxlKXtcbiAgICAgIC8vc2V0IGFkanVzdG1lbnQgYW1vdW50XG4gICAgICBpZighIWtldHRsZS50ZW1wLnByZXZpb3VzKXtcbiAgICAgICAga2V0dGxlLnRlbXAuYWRqdXN0ID0ga2V0dGxlLnRlbXAuY3VycmVudCAtIGtldHRsZS50ZW1wLnByZXZpb3VzO1xuICAgICAgfVxuICB9O1xuXG4gICRzY29wZS5zdGFydFN0b3BLZXR0bGUgPSBmdW5jdGlvbihrZXR0bGUpe1xuICAgICAga2V0dGxlLmFjdGl2ZSA9ICFrZXR0bGUuYWN0aXZlO1xuICAgICAgJHNjb3BlLnJlc2V0RXJyb3Ioa2V0dGxlKTtcblxuICAgICAgaWYoa2V0dGxlLmFjdGl2ZSl7XG4gICAgICAgIGtldHRsZS5rbm9iLnN1YlRleHQudGV4dCA9ICdzdGFydGluZy4uLic7XG4gICAgICAgIGtldHRsZS5rbm9iLnJlYWRPbmx5ID0gZmFsc2U7XG5cbiAgICAgICAgQnJld1NlcnZpY2UudGVtcChrZXR0bGUpXG4gICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4gJHNjb3BlLnVwZGF0ZVRlbXAocmVzcG9uc2UsIGtldHRsZSkpXG4gICAgICAgICAgLmNhdGNoKGVyciA9PiAkc2NvcGUuc2V0RXJyb3JNZXNzYWdlKGVyciwga2V0dGxlKSk7XG5cbiAgICAgICAgLy8gc3RhcnQgdGhlIHJlbGF5c1xuICAgICAgICBpZihrZXR0bGUuaGVhdGVyLnJ1bm5pbmcpe1xuICAgICAgICAgICRzY29wZS50b2dnbGVSZWxheShrZXR0bGUsIGtldHRsZS5oZWF0ZXIsIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmKGtldHRsZS5wdW1wLnJ1bm5pbmcpe1xuICAgICAgICAgICRzY29wZS50b2dnbGVSZWxheShrZXR0bGUsIGtldHRsZS5wdW1wLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZihrZXR0bGUuY29vbGVyICYmIGtldHRsZS5jb29sZXIucnVubmluZyl7XG4gICAgICAgICAgJHNjb3BlLnRvZ2dsZVJlbGF5KGtldHRsZSwga2V0dGxlLmNvb2xlciwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGtldHRsZS5rbm9iLnJlYWRPbmx5ID0gdHJ1ZTtcbiAgICAgICAgLy9zdG9wIHRoZSBoZWF0ZXJcbiAgICAgICAgaWYoIWtldHRsZS5hY3RpdmUgJiYga2V0dGxlLmhlYXRlci5ydW5uaW5nKXtcbiAgICAgICAgICAkc2NvcGUudG9nZ2xlUmVsYXkoa2V0dGxlLCBrZXR0bGUuaGVhdGVyLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy9zdG9wIHRoZSBwdW1wXG4gICAgICAgIGlmKCFrZXR0bGUuYWN0aXZlICYmIGtldHRsZS5wdW1wLnJ1bm5pbmcpe1xuICAgICAgICAgICRzY29wZS50b2dnbGVSZWxheShrZXR0bGUsIGtldHRsZS5wdW1wLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy9zdG9wIHRoZSBjb29sZXJcbiAgICAgICAgaWYoIWtldHRsZS5hY3RpdmUgJiYga2V0dGxlLmNvb2xlciAmJiBrZXR0bGUuY29vbGVyLnJ1bm5pbmcpe1xuICAgICAgICAgICRzY29wZS50b2dnbGVSZWxheShrZXR0bGUsIGtldHRsZS5jb29sZXIsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBpZigha2V0dGxlLmFjdGl2ZSl7XG4gICAgICAgICAga2V0dGxlLnB1bXAuYXV0bz1mYWxzZTtcbiAgICAgICAgICBrZXR0bGUuaGVhdGVyLmF1dG89ZmFsc2U7XG4gICAgICAgICAgaWYoa2V0dGxlLmNvb2xlcilcbiAgICAgICAgICAgIGtldHRsZS5jb29sZXIuYXV0bz1mYWxzZTtcbiAgICAgICAgICAkc2NvcGUudXBkYXRlS25vYkNvcHkoa2V0dGxlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICB9O1xuXG4gICRzY29wZS50b2dnbGVSZWxheSA9IGZ1bmN0aW9uKGtldHRsZSwgZWxlbWVudCwgb24pe1xuICAgIGlmKG9uKSB7XG4gICAgICBpZihlbGVtZW50LnB3bSl7XG4gICAgICAgIHJldHVybiBCcmV3U2VydmljZS5hbmFsb2coa2V0dGxlLCBlbGVtZW50LnBpbixNYXRoLnJvdW5kKDI1NSplbGVtZW50LmR1dHlDeWNsZS8xMDApKVxuICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIC8vc3RhcnRlZFxuICAgICAgICAgICAgZWxlbWVudC5ydW5uaW5nPXRydWU7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGVycikgPT4gJHNjb3BlLnNldEVycm9yTWVzc2FnZShlcnIsIGtldHRsZSkpO1xuICAgICAgfSBlbHNlIGlmKGVsZW1lbnQuc3NyKXtcbiAgICAgICAgcmV0dXJuIEJyZXdTZXJ2aWNlLmFuYWxvZyhrZXR0bGUsIGVsZW1lbnQucGluLDI1NSlcbiAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAvL3N0YXJ0ZWRcbiAgICAgICAgICAgIGVsZW1lbnQucnVubmluZz10cnVlO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnIpID0+ICRzY29wZS5zZXRFcnJvck1lc3NhZ2UoZXJyLCBrZXR0bGUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBCcmV3U2VydmljZS5kaWdpdGFsKGtldHRsZSwgZWxlbWVudC5waW4sMSlcbiAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAvL3N0YXJ0ZWRcbiAgICAgICAgICAgIGVsZW1lbnQucnVubmluZz10cnVlO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnIpID0+ICRzY29wZS5zZXRFcnJvck1lc3NhZ2UoZXJyLCBrZXR0bGUpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYoZWxlbWVudC5wd20gfHwgZWxlbWVudC5zc3Ipe1xuICAgICAgICByZXR1cm4gQnJld1NlcnZpY2UuYW5hbG9nKGtldHRsZSwgZWxlbWVudC5waW4sMClcbiAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBlbGVtZW50LnJ1bm5pbmc9ZmFsc2U7XG4gICAgICAgICAgICAkc2NvcGUudXBkYXRlS25vYkNvcHkoa2V0dGxlKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiAkc2NvcGUuc2V0RXJyb3JNZXNzYWdlKGVyciwga2V0dGxlKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gQnJld1NlcnZpY2UuZGlnaXRhbChrZXR0bGUsIGVsZW1lbnQucGluLDApXG4gICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgZWxlbWVudC5ydW5uaW5nPWZhbHNlO1xuICAgICAgICAgICAgJHNjb3BlLnVwZGF0ZUtub2JDb3B5KGtldHRsZSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGVycikgPT4gJHNjb3BlLnNldEVycm9yTWVzc2FnZShlcnIsIGtldHRsZSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICRzY29wZS5pbXBvcnRTZXR0aW5ncyA9IGZ1bmN0aW9uKCRmaWxlQ29udGVudCwkZXh0KXtcbiAgICB0cnkge1xuICAgICAgbGV0IHByb2ZpbGVDb250ZW50ID0gSlNPTi5wYXJzZSgkZmlsZUNvbnRlbnQpO1xuICAgICAgJHNjb3BlLnNldHRpbmdzID0gcHJvZmlsZUNvbnRlbnQuc2V0dGluZ3MgfHwgQnJld1NlcnZpY2UucmVzZXQoKTtcbiAgICAgICRzY29wZS5rZXR0bGVzID0gcHJvZmlsZUNvbnRlbnQua2V0dGxlcyB8fCBCcmV3U2VydmljZS5kZWZhdWx0S2V0dGxlcygpO1xuICAgIH0gY2F0Y2goZSl7XG4gICAgICAvLyBlcnJvciBpbXBvcnRpbmdcbiAgICAgICRzY29wZS5zZXRFcnJvck1lc3NhZ2UoZSk7XG4gICAgfVxuICB9O1xuXG4gICRzY29wZS5leHBvcnRTZXR0aW5ncyA9IGZ1bmN0aW9uKCl7XG4gICAgbGV0IGtldHRsZXMgPSBhbmd1bGFyLmNvcHkoJHNjb3BlLmtldHRsZXMpO1xuICAgIF8uZWFjaChrZXR0bGVzLCAoa2V0dGxlLCBpKSA9PiB7XG4gICAgICBrZXR0bGVzW2ldLnZhbHVlcyA9IFtdO1xuICAgICAga2V0dGxlc1tpXS5hY3RpdmUgPSBmYWxzZTtcbiAgICB9KTtcbiAgICByZXR1cm4gXCJkYXRhOnRleHQvanNvbjtjaGFyc2V0PXV0Zi04LFwiICsgZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHtcInNldHRpbmdzXCI6ICRzY29wZS5zZXR0aW5ncyxcImtldHRsZXNcIjoga2V0dGxlc30pKTtcbiAgfTtcblxuICAkc2NvcGUuZG93bmxvYWRJbmZsdXhEQlNrZXRjaCA9IGZ1bmN0aW9uKCl7XG4gICAgaWYoISRzY29wZS5zZXR0aW5ncy5pbmZsdXhkYi51cmwpIHJldHVybjtcblxuICAgIGxldCBrZXR0bGVzID0gXCJcIjtcbiAgICBsZXQgY29ubmVjdGlvbl9zdHJpbmcgPSBgJHskc2NvcGUuc2V0dGluZ3MuaW5mbHV4ZGIudXJsfWA7XG4gICAgaWYoICEhJHNjb3BlLnNldHRpbmdzLmluZmx1eGRiLnBvcnQgKVxuICAgICAgY29ubmVjdGlvbl9zdHJpbmcgKz0gYDokeyRzY29wZS5zZXR0aW5ncy5pbmZsdXhkYi5wb3J0fWA7XG4gICAgY29ubmVjdGlvbl9zdHJpbmcgKz0gJy93cml0ZT8nO1xuICAgIC8vIGFkZCB1c2VyL3Bhc3NcbiAgICBpZighISRzY29wZS5zZXR0aW5ncy5pbmZsdXhkYi51c2VyICYmICEhJHNjb3BlLnNldHRpbmdzLmluZmx1eGRiLnBhc3MpXG4gICAgICBjb25uZWN0aW9uX3N0cmluZyArPSBgdT0keyRzY29wZS5zZXR0aW5ncy5pbmZsdXhkYi51c2VyfSZwPSR7JHNjb3BlLnNldHRpbmdzLmluZmx1eGRiLnBhc3N9JmBcbiAgICAvLyBhZGQgZGJcbiAgICBjb25uZWN0aW9uX3N0cmluZyArPSAnZGI9JysoJHNjb3BlLnNldHRpbmdzLmluZmx1eGRiLmRiIHx8ICdzZXNzaW9uLScrbW9tZW50KCkuZm9ybWF0KCdZWVlZLU1NLUREJykpO1xuXG4gICAgXy5lYWNoKCRzY29wZS5rZXR0bGVzLCAoa2V0dGxlLCBpKSA9PiB7XG4gICAgICBpZigga2V0dGxlLnRlbXAudHlwZSA9PSAnVGhlcm1pc3RvcicgKVxuICAgICAgICBrZXR0bGVzICs9ICd0aGVybWlzdG9ySW5mbHV4REJDb21tYW5kKFwiJytrZXR0bGUua2V5LnJlcGxhY2UoL1teYS16QS1aMC05LS5dL2csIFwiXCIpKydcIixcIicra2V0dGxlLnRlbXAucGluKydcIik7XFxuJztcbiAgICAgIGVsc2UgaWYoIGtldHRsZS50ZW1wLnR5cGUgPT0gJ0RTMThCMjAnIClcbiAgICAgICAga2V0dGxlcyArPSAnZHMxOEIyMEluZmx1eERCQ29tbWFuZChcIicra2V0dGxlLmtleS5yZXBsYWNlKC9bXmEtekEtWjAtOS0uXS9nLCBcIlwiKSsnXCIsXCInK2tldHRsZS50ZW1wLnBpbisnXCIpO1xcbic7XG4gICAgICBlbHNlIGlmKCBrZXR0bGUudGVtcC50eXBlID09ICdQVDEwMCcgKVxuICAgICAgICBrZXR0bGVzICs9ICdwdDEwMEluZmx1eERCQ29tbWFuZChcIicra2V0dGxlLmtleS5yZXBsYWNlKC9bXmEtekEtWjAtOS0uXS9nLCBcIlwiKSsnXCIsXCInK2tldHRsZS50ZW1wLnBpbisnXCIpO1xcbic7XG4gICAgICBlbHNlIGlmKCBrZXR0bGUudGVtcC50eXBlID09ICdESFQxMScgKVxuICAgICAgICBrZXR0bGVzICs9ICdkaHQxMUluZmx1eERCQ29tbWFuZChcIicra2V0dGxlLmtleS5yZXBsYWNlKC9bXmEtekEtWjAtOS0uXS9nLCBcIlwiKSsnXCIsXCInK2tldHRsZS50ZW1wLnBpbisnXCIpO1xcbic7XG4gICAgICBlbHNlIGlmKCBrZXR0bGUudGVtcC50eXBlID09ICdESFQyMScgKVxuICAgICAgICBrZXR0bGVzICs9ICdkaHQyMUluZmx1eERCQ29tbWFuZChcIicra2V0dGxlLmtleS5yZXBsYWNlKC9bXmEtekEtWjAtOS0uXS9nLCBcIlwiKSsnXCIsXCInK2tldHRsZS50ZW1wLnBpbisnXCIpO1xcbic7XG4gICAgICBlbHNlIGlmKCBrZXR0bGUudGVtcC50eXBlID09ICdESFQyMicgKVxuICAgICAgICBrZXR0bGVzICs9ICdkaHQyMkluZmx1eERCQ29tbWFuZChcIicra2V0dGxlLmtleS5yZXBsYWNlKC9bXmEtekEtWjAtOS0uXS9nLCBcIlwiKSsnXCIsXCInK2tldHRsZS50ZW1wLnBpbisnXCIpO1xcbic7XG4gICAgfSk7XG4gICAgcmV0dXJuICRodHRwLmdldCgnYXNzZXRzL0JyZXdCZW5jaEluZmx1eERCWXVuL0JyZXdCZW5jaEluZmx1eERCWXVuLmlubycpXG4gICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgIC8vIHJlcGxhY2UgdmFyaWFibGVzXG4gICAgICAgIHJlc3BvbnNlLmRhdGEgPSByZXNwb25zZS5kYXRhXG4gICAgICAgICAgLnJlcGxhY2UoJy8vIFtrZXR0bGVzXScsIGtldHRsZXMpXG4gICAgICAgICAgLnJlcGxhY2UoJ1tJTkZMVVhEQl9DT05ORUNUSU9OXScsIGNvbm5lY3Rpb25fc3RyaW5nKVxuICAgICAgICAgIC5yZXBsYWNlKCdbRlJFUVVFTkNZX1NFQ09ORFNdJywgJHNjb3BlLnNldHRpbmdzLmluZmx1eGRiLmZyZXF1ZW5jeSA/IHBhcnNlSW50KCRzY29wZS5zZXR0aW5ncy5pbmZsdXhkYi5mcmVxdWVuY3ksMTApIDogNjApO1xuICAgICAgICBsZXQgc3RyZWFtU2tldGNoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICBzdHJlYW1Ta2V0Y2guc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsICdCcmV3QmVuY2hJbmZsdXhEQll1bi5pbm8nKTtcbiAgICAgICAgc3RyZWFtU2tldGNoLnNldEF0dHJpYnV0ZSgnaHJlZicsIFwiZGF0YTp0ZXh0L2lubztjaGFyc2V0PXV0Zi04LFwiICsgZW5jb2RlVVJJQ29tcG9uZW50KHJlc3BvbnNlLmRhdGEpKTtcbiAgICAgICAgc3RyZWFtU2tldGNoLmNsaWNrKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICRzY29wZS5zZXRFcnJvck1lc3NhZ2UoYEZhaWxlZCB0byBkb3dubG9hZCBza2V0Y2ggJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gICRzY29wZS5kb3dubG9hZFN0cmVhbXNTa2V0Y2ggPSBmdW5jdGlvbihzZXNzaW9uSWQpe1xuICAgIGxldCBrZXR0bGVzID0gXCJcIjtcbiAgICBfLmVhY2goJHNjb3BlLmtldHRsZXMsIChrZXR0bGUsIGkpID0+IHtcbiAgICAgIGlmKCBrZXR0bGUudGVtcC50eXBlID09ICdUaGVybWlzdG9yJyApXG4gICAgICAgIGtldHRsZXMgKz0gJ3RoZXJtaXN0b3JBUElDb21tYW5kKFwiJytrZXR0bGUua2V5KydcIixcIicra2V0dGxlLnRlbXAucGluKydcIik7XFxuICAnO1xuICAgICAgZWxzZSBpZigga2V0dGxlLnRlbXAudHlwZSA9PSAnRFMxOEIyMCcgKVxuICAgICAgICBrZXR0bGVzICs9ICdkczE4QjIwQVBJQ29tbWFuZChcIicra2V0dGxlLmtleSsnXCIsXCInK2tldHRsZS50ZW1wLnBpbisnXCIpO1xcbiAgJztcbiAgICAgIGVsc2UgaWYoIGtldHRsZS50ZW1wLnR5cGUgPT0gJ1BUMTAwJyApXG4gICAgICAgIGtldHRsZXMgKz0gJ3B0MTAwQVBJQ29tbWFuZChcIicra2V0dGxlLmtleSsnXCIsXCInK2tldHRsZS50ZW1wLnBpbisnXCIpO1xcbiAgJztcbiAgICB9KTtcbiAgICByZXR1cm4gJGh0dHAuZ2V0KCdhc3NldHMvQnJld0JlbmNoU3RyZWFtc1l1bi9CcmV3QmVuY2hTdHJlYW1zWXVuLmlubycpXG4gICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgIHJlc3BvbnNlLmRhdGEgPSByZXNwb25zZS5kYXRhXG4gICAgICAgICAgLnJlcGxhY2UoJy8vIFtrZXR0bGVzXScsIGtldHRsZXMpXG4gICAgICAgICAgLnJlcGxhY2UoJ1tBUElfS0VZXScsICRzY29wZS5zZXR0aW5ncy5hY2NvdW50LmFwaUtleSlcbiAgICAgICAgICAucmVwbGFjZSgnW1NFU1NJT05fSURdJywgc2Vzc2lvbklkKTtcbiAgICAgICAgbGV0IHN0cmVhbVNrZXRjaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgc3RyZWFtU2tldGNoLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCAnQnJld0JlbmNoU3RyZWFtc1l1bi5pbm8nKTtcbiAgICAgICAgc3RyZWFtU2tldGNoLnNldEF0dHJpYnV0ZSgnaHJlZicsIFwiZGF0YTp0ZXh0L2lubztjaGFyc2V0PXV0Zi04LFwiICsgZW5jb2RlVVJJQ29tcG9uZW50KHJlc3BvbnNlLmRhdGEpKTtcbiAgICAgICAgc3RyZWFtU2tldGNoLmNsaWNrKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICRzY29wZS5zZXRFcnJvck1lc3NhZ2UoYEZhaWxlZCB0byBkb3dubG9hZCBza2V0Y2ggJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gICRzY29wZS5nZXRJUEFkZHJlc3MgPSBmdW5jdGlvbigpe1xuICAgICRzY29wZS5zZXR0aW5ncy5pcEFkZHJlc3MgPSBcIlwiO1xuICAgIEJyZXdTZXJ2aWNlLmlwKClcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgJHNjb3BlLnNldHRpbmdzLmlwQWRkcmVzcyA9IHJlc3BvbnNlLmlwO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAkc2NvcGUuZXJyb3IubWVzc2FnZSA9ICRzY29wZS5zZXRFcnJvck1lc3NhZ2UoZXJyKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gICRzY29wZS5hbGVydCA9IGZ1bmN0aW9uKGtldHRsZSx0aW1lcil7XG5cbiAgICAvL2Rvbid0IHN0YXJ0IGFsZXJ0cyB1bnRpbCB3ZSBoYXZlIGhpdCB0aGUgdGVtcC50YXJnZXRcbiAgICBpZighdGltZXIgJiYga2V0dGxlICYmICFrZXR0bGUudGVtcC5oaXRcbiAgICAgIHx8ICRzY29wZS5zZXR0aW5ncy5ub3RpZmljYXRpb25zLm9uID09PSBmYWxzZSl7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBEZXNrdG9wIC8gU2xhY2sgTm90aWZpY2F0aW9uXG4gICAgbGV0IG1lc3NhZ2UsXG4gICAgICBpY29uID0gJy9hc3NldHMvaW1nL2JyZXdiZW5jaC1sb2dvLnBuZycsXG4gICAgICBjb2xvciA9ICdnb29kJztcblxuICAgIGlmKGtldHRsZSAmJiBbJ2hvcCcsJ2dyYWluJywnd2F0ZXInLCdmZXJtZW50ZXInXS5pbmRleE9mKGtldHRsZS50eXBlKSE9PS0xKVxuICAgICAgaWNvbiA9ICcvYXNzZXRzL2ltZy8nK2tldHRsZS50eXBlKycucG5nJztcblxuICAgIC8vZG9uJ3QgYWxlcnQgaWYgdGhlIGhlYXRlciBpcyBydW5uaW5nIGFuZCB0ZW1wIGlzIHRvbyBsb3dcbiAgICBpZihrZXR0bGUgJiYga2V0dGxlLmxvdyAmJiBrZXR0bGUuaGVhdGVyLnJ1bm5pbmcpXG4gICAgICByZXR1cm47XG5cbiAgICBpZighIXRpbWVyKXsgLy9rZXR0bGUgaXMgYSB0aW1lciBvYmplY3RcbiAgICAgIGlmKCEkc2NvcGUuc2V0dGluZ3Mubm90aWZpY2F0aW9ucy50aW1lcnMpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmKHRpbWVyLnVwKVxuICAgICAgICBtZXNzYWdlID0gJ1lvdXIgdGltZXJzIGFyZSBkb25lJztcbiAgICAgIGVsc2UgaWYoISF0aW1lci5ub3RlcylcbiAgICAgICAgbWVzc2FnZSA9ICdUaW1lIHRvIGFkZCAnK3RpbWVyLm5vdGVzKycgb2YgJyt0aW1lci5sYWJlbDtcbiAgICAgIGVsc2VcbiAgICAgICAgbWVzc2FnZSA9ICdUaW1lIHRvIGFkZCAnK3RpbWVyLmxhYmVsO1xuICAgIH1cbiAgICBlbHNlIGlmKGtldHRsZSAmJiBrZXR0bGUuaGlnaCl7XG4gICAgICBpZighJHNjb3BlLnNldHRpbmdzLm5vdGlmaWNhdGlvbnMuaGlnaCB8fCAkc2NvcGUuc2V0dGluZ3Mubm90aWZpY2F0aW9ucy5sYXN0PT0naGlnaCcpXG4gICAgICAgIHJldHVybjtcbiAgICAgIG1lc3NhZ2UgPSAnWW91ciAnK2tldHRsZS5rZXkrJyBrZXR0bGUgaXMgJysoa2V0dGxlLmhpZ2gta2V0dGxlLnRlbXAuZGlmZikrJ1xcdTAwQjAgaGlnaCc7XG4gICAgICBjb2xvciA9ICdkYW5nZXInO1xuICAgICAgJHNjb3BlLnNldHRpbmdzLm5vdGlmaWNhdGlvbnMubGFzdD0naGlnaCc7XG4gICAgfVxuICAgIGVsc2UgaWYoa2V0dGxlICYmIGtldHRsZS5sb3cpe1xuICAgICAgaWYoISRzY29wZS5zZXR0aW5ncy5ub3RpZmljYXRpb25zLmxvdyB8fCAkc2NvcGUuc2V0dGluZ3Mubm90aWZpY2F0aW9ucy5sYXN0PT0nbG93JylcbiAgICAgICAgcmV0dXJuO1xuICAgICAgbWVzc2FnZSA9ICdZb3VyICcra2V0dGxlLmtleSsnIGtldHRsZSBpcyAnKyhrZXR0bGUubG93LWtldHRsZS50ZW1wLmRpZmYpKydcXHUwMEIwIGxvdyc7XG4gICAgICBjb2xvciA9ICcjMzQ5OERCJztcbiAgICAgICRzY29wZS5zZXR0aW5ncy5ub3RpZmljYXRpb25zLmxhc3Q9J2xvdyc7XG4gICAgfVxuICAgIGVsc2UgaWYoa2V0dGxlKXtcbiAgICAgIGlmKCEkc2NvcGUuc2V0dGluZ3Mubm90aWZpY2F0aW9ucy50YXJnZXQgfHwgJHNjb3BlLnNldHRpbmdzLm5vdGlmaWNhdGlvbnMubGFzdD09J3RhcmdldCcpXG4gICAgICAgIHJldHVybjtcbiAgICAgIG1lc3NhZ2UgPSAnWW91ciAnK2tldHRsZS5rZXkrJyBrZXR0bGUgaXMgd2l0aGluIHRoZSB0YXJnZXQgYXQgJytrZXR0bGUudGVtcC5jdXJyZW50KydcXHUwMEIwJztcbiAgICAgIGNvbG9yID0gJ2dvb2QnO1xuICAgICAgJHNjb3BlLnNldHRpbmdzLm5vdGlmaWNhdGlvbnMubGFzdD0ndGFyZ2V0JztcbiAgICB9XG4gICAgZWxzZSBpZigha2V0dGxlKXtcbiAgICAgIG1lc3NhZ2UgPSAnVGVzdGluZyBBbGVydHMsIHlvdSBhcmUgcmVhZHkgdG8gZ28sIGNsaWNrIHBsYXkgb24gYSBrZXR0bGUuJztcbiAgICB9XG5cbiAgICAvLyBNb2JpbGUgVmlicmF0ZSBOb3RpZmljYXRpb25cbiAgICBpZiAoXCJ2aWJyYXRlXCIgaW4gbmF2aWdhdG9yKSB7XG4gICAgICBuYXZpZ2F0b3IudmlicmF0ZShbNTAwLCAzMDAsIDUwMF0pO1xuICAgIH1cblxuICAgIC8vIFNvdW5kIE5vdGlmaWNhdGlvblxuICAgIGlmKCRzY29wZS5zZXR0aW5ncy5zb3VuZHMub249PT10cnVlKXtcbiAgICAgIC8vZG9uJ3QgYWxlcnQgaWYgdGhlIGhlYXRlciBpcyBydW5uaW5nIGFuZCB0ZW1wIGlzIHRvbyBsb3dcbiAgICAgIGlmKCEhdGltZXIgJiYga2V0dGxlICYmIGtldHRsZS5sb3cgJiYga2V0dGxlLmhlYXRlci5ydW5uaW5nKVxuICAgICAgICByZXR1cm47XG4gICAgICB2YXIgc25kID0gbmV3IEF1ZGlvKCghIXRpbWVyKSA/ICRzY29wZS5zZXR0aW5ncy5zb3VuZHMudGltZXIgOiAkc2NvcGUuc2V0dGluZ3Muc291bmRzLmFsZXJ0KTsgLy8gYnVmZmVycyBhdXRvbWF0aWNhbGx5IHdoZW4gY3JlYXRlZFxuICAgICAgc25kLnBsYXkoKTtcbiAgICB9XG5cbiAgICAvLyBXaW5kb3cgTm90aWZpY2F0aW9uXG4gICAgaWYoXCJOb3RpZmljYXRpb25cIiBpbiB3aW5kb3cpe1xuICAgICAgLy9jbG9zZSB0aGUgcHJldmlvdXMgbm90aWZpY2F0aW9uXG4gICAgICBpZihub3RpZmljYXRpb24pXG4gICAgICAgIG5vdGlmaWNhdGlvbi5jbG9zZSgpO1xuXG4gICAgICBpZihOb3RpZmljYXRpb24ucGVybWlzc2lvbiA9PT0gXCJncmFudGVkXCIpe1xuICAgICAgICBpZihtZXNzYWdlKXtcbiAgICAgICAgICBpZihrZXR0bGUpXG4gICAgICAgICAgICBub3RpZmljYXRpb24gPSBuZXcgTm90aWZpY2F0aW9uKGtldHRsZS5rZXkrJyBrZXR0bGUnLHtib2R5Om1lc3NhZ2UsaWNvbjppY29ufSk7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbm90aWZpY2F0aW9uID0gbmV3IE5vdGlmaWNhdGlvbignVGVzdCBrZXR0bGUnLHtib2R5Om1lc3NhZ2UsaWNvbjppY29ufSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZihOb3RpZmljYXRpb24ucGVybWlzc2lvbiAhPT0gJ2RlbmllZCcpe1xuICAgICAgICBOb3RpZmljYXRpb24ucmVxdWVzdFBlcm1pc3Npb24oZnVuY3Rpb24gKHBlcm1pc3Npb24pIHtcbiAgICAgICAgICAvLyBJZiB0aGUgdXNlciBhY2NlcHRzLCBsZXQncyBjcmVhdGUgYSBub3RpZmljYXRpb25cbiAgICAgICAgICBpZiAocGVybWlzc2lvbiA9PT0gXCJncmFudGVkXCIpIHtcbiAgICAgICAgICAgIGlmKG1lc3NhZ2Upe1xuICAgICAgICAgICAgICBub3RpZmljYXRpb24gPSBuZXcgTm90aWZpY2F0aW9uKGtldHRsZS5rZXkrJyBrZXR0bGUnLHtib2R5Om1lc3NhZ2UsaWNvbjppY29ufSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gU2xhY2sgTm90aWZpY2F0aW9uXG4gICAgaWYoJHNjb3BlLnNldHRpbmdzLm5vdGlmaWNhdGlvbnMuc2xhY2suaW5kZXhPZignaHR0cCcpID09PSAwKXtcbiAgICAgIEJyZXdTZXJ2aWNlLnNsYWNrKCRzY29wZS5zZXR0aW5ncy5ub3RpZmljYXRpb25zLnNsYWNrLFxuICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgY29sb3IsXG4gICAgICAgICAgaWNvbixcbiAgICAgICAgICBrZXR0bGVcbiAgICAgICAgKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKXtcbiAgICAgICAgICAkc2NvcGUucmVzZXRFcnJvcigpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyKXtcbiAgICAgICAgICBpZihlcnIubWVzc2FnZSlcbiAgICAgICAgICAgICRzY29wZS5zZXRFcnJvck1lc3NhZ2UoYEZhaWxlZCBwb3N0aW5nIHRvIFNsYWNrICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgJHNjb3BlLnNldEVycm9yTWVzc2FnZShgRmFpbGVkIHBvc3RpbmcgdG8gU2xhY2sgJHtKU09OLnN0cmluZ2lmeShlcnIpfWApO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgJHNjb3BlLnVwZGF0ZUtub2JDb3B5ID0gZnVuY3Rpb24oa2V0dGxlKXtcblxuICAgIGlmKCFrZXR0bGUuYWN0aXZlKXtcbiAgICAgIGtldHRsZS5rbm9iLnRyYWNrQ29sb3IgPSAnI2RkZCc7XG4gICAgICBrZXR0bGUua25vYi5iYXJDb2xvciA9ICcjNzc3JztcbiAgICAgIGtldHRsZS5rbm9iLnN1YlRleHQudGV4dCA9ICdub3QgcnVubmluZyc7XG4gICAgICBrZXR0bGUua25vYi5zdWJUZXh0LmNvbG9yID0gJ2dyYXknO1xuICAgICAga2V0dGxlLmtub2IucmVhZE9ubHkgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZihrZXR0bGUuZXJyb3Ipe1xuICAgICAgICBrZXR0bGUua25vYi50cmFja0NvbG9yID0gJyNkZGQnO1xuICAgICAgICBrZXR0bGUua25vYi5iYXJDb2xvciA9ICcjNzc3JztcbiAgICAgICAga2V0dGxlLmtub2Iuc3ViVGV4dC50ZXh0ID0gJ2Vycm9yJztcbiAgICAgICAga2V0dGxlLmtub2Iuc3ViVGV4dC5jb2xvciA9ICdncmF5JztcbiAgICAgICAga2V0dGxlLmtub2IucmVhZE9ubHkgPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAga2V0dGxlLmtub2IucmVhZE9ubHkgPSBmYWxzZTtcblxuICAgIC8vaXMgdGVtcCB0b28gaGlnaD9cbiAgICBpZihrZXR0bGUudGVtcC5jdXJyZW50ID4ga2V0dGxlLnRlbXAudGFyZ2V0K2tldHRsZS50ZW1wLmRpZmYpe1xuICAgICAga2V0dGxlLmtub2IuYmFyQ29sb3IgPSAncmdiYSgyNTUsMCwwLC42KSc7XG4gICAgICBrZXR0bGUua25vYi50cmFja0NvbG9yID0gJ3JnYmEoMjU1LDAsMCwuMSknO1xuICAgICAga2V0dGxlLmhpZ2ggPSBrZXR0bGUudGVtcC5jdXJyZW50LWtldHRsZS50ZW1wLnRhcmdldDtcbiAgICAgIGtldHRsZS5sb3cgPSBudWxsO1xuICAgICAgaWYoa2V0dGxlLmNvb2xlciAmJiBrZXR0bGUuY29vbGVyLnJ1bm5pbmcpe1xuICAgICAgICBrZXR0bGUua25vYi5zdWJUZXh0LnRleHQgPSAnY29vbGluZyc7XG4gICAgICAgIGtldHRsZS5rbm9iLnN1YlRleHQuY29sb3IgPSAncmdiYSg1MiwxNTIsMjE5LDEpJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vdXBkYXRlIGtub2IgdGV4dFxuICAgICAgICBrZXR0bGUua25vYi5zdWJUZXh0LnRleHQgPSAoa2V0dGxlLmhpZ2gta2V0dGxlLnRlbXAuZGlmZikrJ1xcdTAwQjAgaGlnaCc7XG4gICAgICAgIGtldHRsZS5rbm9iLnN1YlRleHQuY29sb3IgPSAncmdiYSgyNTUsMCwwLC42KSc7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmKGtldHRsZS50ZW1wLmN1cnJlbnQgPCBrZXR0bGUudGVtcC50YXJnZXQta2V0dGxlLnRlbXAuZGlmZil7XG4gICAgICBrZXR0bGUua25vYi5iYXJDb2xvciA9ICdyZ2JhKDUyLDE1MiwyMTksLjUpJztcbiAgICAgIGtldHRsZS5rbm9iLnRyYWNrQ29sb3IgPSAncmdiYSg1MiwxNTIsMjE5LC4xKSc7XG4gICAgICBrZXR0bGUubG93ID0ga2V0dGxlLnRlbXAudGFyZ2V0LWtldHRsZS50ZW1wLmN1cnJlbnQ7XG4gICAgICBrZXR0bGUuaGlnaCA9IG51bGw7XG4gICAgICBpZihrZXR0bGUuaGVhdGVyLnJ1bm5pbmcpe1xuICAgICAgICBrZXR0bGUua25vYi5zdWJUZXh0LnRleHQgPSAnaGVhdGluZyc7XG4gICAgICAgIGtldHRsZS5rbm9iLnN1YlRleHQuY29sb3IgPSAncmdiYSgyNTUsMCwwLC42KSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvL3VwZGF0ZSBrbm9iIHRleHRcbiAgICAgICAga2V0dGxlLmtub2Iuc3ViVGV4dC50ZXh0ID0gKGtldHRsZS5sb3cta2V0dGxlLnRlbXAuZGlmZikrJ1xcdTAwQjAgbG93JztcbiAgICAgICAga2V0dGxlLmtub2Iuc3ViVGV4dC5jb2xvciA9ICdyZ2JhKDUyLDE1MiwyMTksMSknO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBrZXR0bGUua25vYi5iYXJDb2xvciA9ICdyZ2JhKDQ0LDE5MywxMzMsLjYpJztcbiAgICAgIGtldHRsZS5rbm9iLnRyYWNrQ29sb3IgPSAncmdiYSg0NCwxOTMsMTMzLC4xKSc7XG4gICAgICBrZXR0bGUua25vYi5zdWJUZXh0LnRleHQgPSAnd2l0aGluIHRhcmdldCc7XG4gICAgICBrZXR0bGUua25vYi5zdWJUZXh0LmNvbG9yID0gJ2dyYXknO1xuICAgICAga2V0dGxlLmxvdyA9IG51bGw7XG4gICAgICBrZXR0bGUuaGlnaCA9IG51bGw7XG4gICAgfVxuICAgIC8vIHVwZGF0ZSBzdWJ0ZXh0IHRvIGluY2x1ZGUgaHVtaWRpdHlcbiAgICBpZihrZXR0bGUuaHVtaWRpdHkpe1xuICAgICAga2V0dGxlLmtub2Iuc3ViVGV4dC50ZXh0ID0ga2V0dGxlLmh1bWlkaXR5KyclJztcbiAgICAgIGtldHRsZS5rbm9iLnN1YlRleHQuY29sb3IgPSAnZ3JheSc7XG4gICAgfVxuICB9O1xuXG4gICRzY29wZS5jaGFuZ2VLZXR0bGVUeXBlID0gZnVuY3Rpb24oa2V0dGxlKXtcbiAgICAvL2Rvbid0IGFsbG93IGNoYW5naW5nIGtldHRsZXMgb24gc2hhcmVkIHNlc3Npb25zXG4gICAgLy90aGlzIGNvdWxkIGJlIGRhbmdlcm91cyBpZiBkb2luZyB0aGlzIHJlbW90ZWx5XG4gICAgaWYoJHNjb3BlLnNldHRpbmdzLnNoYXJlZClcbiAgICAgIHJldHVybjtcbiAgICAvLyBmaW5kIGN1cnJlbnQga2V0dGxlXG4gICAgdmFyIGtldHRsZUluZGV4ID0gXy5maW5kSW5kZXgoJHNjb3BlLmtldHRsZVR5cGVzLCB7dHlwZToga2V0dGxlLnR5cGV9KTtcbiAgICAvLyBtb3ZlIHRvIG5leHQgb3IgZmlyc3Qga2V0dGxlIGluIGFycmF5XG4gICAga2V0dGxlSW5kZXgrKztcbiAgICB2YXIga2V0dGxlVHlwZSA9ICgkc2NvcGUua2V0dGxlVHlwZXNba2V0dGxlSW5kZXhdKSA/ICRzY29wZS5rZXR0bGVUeXBlc1trZXR0bGVJbmRleF0gOiAkc2NvcGUua2V0dGxlVHlwZXNbMF07XG4gICAgLy91cGRhdGUga2V0dGxlIG9wdGlvbnMgaWYgY2hhbmdlZFxuICAgIGtldHRsZS5rZXkgPSBrZXR0bGVUeXBlLm5hbWU7XG4gICAga2V0dGxlLnR5cGUgPSBrZXR0bGVUeXBlLnR5cGU7XG4gICAga2V0dGxlLnRlbXAudGFyZ2V0ID0ga2V0dGxlVHlwZS50YXJnZXQ7XG4gICAga2V0dGxlLnRlbXAuZGlmZiA9IGtldHRsZVR5cGUuZGlmZjtcbiAgICBrZXR0bGUua25vYiA9IGFuZ3VsYXIuY29weShCcmV3U2VydmljZS5kZWZhdWx0S25vYk9wdGlvbnMoKSx7dmFsdWU6a2V0dGxlLnRlbXAuY3VycmVudCxtaW46MCxtYXg6a2V0dGxlVHlwZS50YXJnZXQra2V0dGxlVHlwZS5kaWZmfSk7XG4gICAgaWYoa2V0dGxlVHlwZS50eXBlID09ICdmZXJtZW50ZXInIHx8IGtldHRsZVR5cGUudHlwZSA9PSAnYWlyJylcbiAgICAgIGtldHRsZS5jb29sZXIgPSB7cGluOidEMicscnVubmluZzpmYWxzZSxhdXRvOmZhbHNlLHB3bTpmYWxzZSxkdXR5Q3ljbGU6MTAwfTtcbiAgICBlbHNlXG4gICAgICBkZWxldGUga2V0dGxlLmNvb2xlcjtcbiAgfTtcblxuICAkc2NvcGUuY2hhbmdlVW5pdHMgPSBmdW5jdGlvbih1bml0KXtcbiAgICBpZigkc2NvcGUuc2V0dGluZ3MudW5pdCAhPSB1bml0KXtcbiAgICAgICRzY29wZS5zZXR0aW5ncy51bml0ID0gdW5pdDtcbiAgICAgIF8uZWFjaCgkc2NvcGUua2V0dGxlcyxmdW5jdGlvbihrZXR0bGUpe1xuICAgICAgICBrZXR0bGUudGVtcC5jdXJyZW50ID0gJGZpbHRlcignZm9ybWF0RGVncmVlcycpKGtldHRsZS50ZW1wLmN1cnJlbnQsdW5pdCk7XG4gICAgICAgIGtldHRsZS50ZW1wLnRhcmdldCA9ICRmaWx0ZXIoJ2Zvcm1hdERlZ3JlZXMnKShrZXR0bGUudGVtcC50YXJnZXQsdW5pdCk7XG4gICAgICAgIC8vIHVwZGF0ZSBrbm9iXG4gICAgICAgIGtldHRsZS5rbm9iLnZhbHVlID0ga2V0dGxlLnRlbXAuY3VycmVudDtcbiAgICAgICAga2V0dGxlLmtub2IubWF4ID0ga2V0dGxlLnRlbXAudGFyZ2V0K2tldHRsZS50ZW1wLmRpZmYrMTA7XG4gICAgICAgICRzY29wZS51cGRhdGVLbm9iQ29weShrZXR0bGUpO1xuICAgICAgfSk7XG4gICAgICAkc2NvcGUuY2hhcnRPcHRpb25zID0gQnJld1NlcnZpY2UuY2hhcnRPcHRpb25zKHVuaXQpO1xuICAgIH1cbiAgfTtcblxuICAkc2NvcGUudGltZXJSdW4gPSBmdW5jdGlvbih0aW1lcixrZXR0bGUpe1xuICAgIHJldHVybiAkaW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgLy9jYW5jZWwgaW50ZXJ2YWwgaWYgemVybyBvdXRcbiAgICAgIGlmKCF0aW1lci51cCAmJiB0aW1lci5taW49PTAgJiYgdGltZXIuc2VjPT0wKXtcbiAgICAgICAgLy9zdG9wIHJ1bm5pbmdcbiAgICAgICAgdGltZXIucnVubmluZyA9IGZhbHNlO1xuICAgICAgICAvL3N0YXJ0IHVwIGNvdW50ZXJcbiAgICAgICAgdGltZXIudXAgPSB7bWluOjAsc2VjOjAscnVubmluZzp0cnVlfTtcbiAgICAgICAgLy9pZiBhbGwgdGltZXJzIGFyZSBkb25lIHNlbmQgYW4gYWxlcnRcbiAgICAgICAgaWYoICEha2V0dGxlICYmIF8uZmlsdGVyKGtldHRsZS50aW1lcnMsIHt1cDoge3J1bm5pbmc6dHJ1ZX19KS5sZW5ndGggPT0ga2V0dGxlLnRpbWVycy5sZW5ndGggKVxuICAgICAgICAgICRzY29wZS5hbGVydChrZXR0bGUsdGltZXIpO1xuICAgICAgfSBlbHNlIGlmKCF0aW1lci51cCAmJiB0aW1lci5zZWMgPiAwKXtcbiAgICAgICAgLy9jb3VudCBkb3duIHNlY29uZHNcbiAgICAgICAgdGltZXIuc2VjLS07XG4gICAgICB9IGVsc2UgaWYodGltZXIudXAgJiYgdGltZXIudXAuc2VjIDwgNTkpe1xuICAgICAgICAvL2NvdW50IHVwIHNlY29uZHNcbiAgICAgICAgdGltZXIudXAuc2VjKys7XG4gICAgICB9IGVsc2UgaWYoIXRpbWVyLnVwKXtcbiAgICAgICAgLy9zaG91bGQgd2Ugc3RhcnQgdGhlIG5leHQgdGltZXI/XG4gICAgICAgIGlmKCEha2V0dGxlKXtcbiAgICAgICAgICBfLmVhY2goXy5maWx0ZXIoa2V0dGxlLnRpbWVycywge3J1bm5pbmc6ZmFsc2UsbWluOnRpbWVyLm1pbixxdWV1ZTpmYWxzZX0pLGZ1bmN0aW9uKG5leHRUaW1lcil7XG4gICAgICAgICAgICAkc2NvcGUuYWxlcnQoa2V0dGxlLG5leHRUaW1lcik7XG4gICAgICAgICAgICBuZXh0VGltZXIucXVldWU9dHJ1ZTtcbiAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICRzY29wZS50aW1lclN0YXJ0KG5leHRUaW1lcixrZXR0bGUpO1xuICAgICAgICAgICAgfSw2MDAwMCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy9jb3VuZCBkb3duIG1pbnV0ZXMgYW5kIHNlY29uZHNcbiAgICAgICAgdGltZXIuc2VjPTU5O1xuICAgICAgICB0aW1lci5taW4tLTtcbiAgICAgIH0gZWxzZSBpZih0aW1lci51cCl7XG4gICAgICAgIC8vY291bmQgdXAgbWludXRlcyBhbmQgc2Vjb25kc1xuICAgICAgICB0aW1lci51cC5zZWM9MDtcbiAgICAgICAgdGltZXIudXAubWluKys7XG4gICAgICB9XG4gICAgfSwxMDAwKTtcbiAgfTtcblxuICAkc2NvcGUudGltZXJTdGFydCA9IGZ1bmN0aW9uKHRpbWVyLGtldHRsZSl7XG4gICAgaWYodGltZXIudXAgJiYgdGltZXIudXAucnVubmluZyl7XG4gICAgICAvL3N0b3AgdGltZXJcbiAgICAgIHRpbWVyLnVwLnJ1bm5pbmc9ZmFsc2U7XG4gICAgICAkaW50ZXJ2YWwuY2FuY2VsKHRpbWVyLmludGVydmFsKTtcbiAgICB9IGVsc2UgaWYodGltZXIucnVubmluZyl7XG4gICAgICAvL3N0b3AgdGltZXJcbiAgICAgIHRpbWVyLnJ1bm5pbmc9ZmFsc2U7XG4gICAgICAkaW50ZXJ2YWwuY2FuY2VsKHRpbWVyLmludGVydmFsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy9zdGFydCB0aW1lclxuICAgICAgdGltZXIucnVubmluZz10cnVlO1xuICAgICAgdGltZXIucXVldWU9ZmFsc2U7XG4gICAgICB0aW1lci5pbnRlcnZhbCA9ICRzY29wZS50aW1lclJ1bih0aW1lcixrZXR0bGUpO1xuICAgIH1cbiAgfTtcblxuICAkc2NvcGUucHJvY2Vzc1RlbXBzID0gZnVuY3Rpb24oKXtcbiAgICB2YXIgYWxsU2Vuc29ycyA9IFtdO1xuICAgIC8vb25seSBwcm9jZXNzIGFjdGl2ZSBzZW5zb3JzXG4gICAgXy5lYWNoKCRzY29wZS5rZXR0bGVzLCAoaywgaSkgPT4ge1xuICAgICAgaWYoJHNjb3BlLmtldHRsZXNbaV0uYWN0aXZlKXtcbiAgICAgICAgYWxsU2Vuc29ycy5wdXNoKEJyZXdTZXJ2aWNlLnRlbXAoJHNjb3BlLmtldHRsZXNbaV0pXG4gICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4gJHNjb3BlLnVwZGF0ZVRlbXAocmVzcG9uc2UsICRzY29wZS5rZXR0bGVzW2ldKSlcbiAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICRzY29wZS5zZXRFcnJvck1lc3NhZ2UoZXJyLCAkc2NvcGUua2V0dGxlc1tpXSk7XG4gICAgICAgICAgICByZXR1cm4gZXJyO1xuICAgICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiAkcS5hbGwoYWxsU2Vuc29ycylcbiAgICAgIC50aGVuKHZhbHVlcyA9PiB7XG4gICAgICAgIC8vcmUgcHJvY2VzcyBvbiB0aW1lb3V0XG4gICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICByZXR1cm4gJHNjb3BlLnByb2Nlc3NUZW1wcygpO1xuICAgICAgICB9LCghISRzY29wZS5zZXR0aW5ncy5wb2xsU2Vjb25kcykgPyAkc2NvcGUuc2V0dGluZ3MucG9sbFNlY29uZHMqMTAwMCA6IDEwMDAwKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIHJldHVybiAkc2NvcGUucHJvY2Vzc1RlbXBzKCk7XG4gICAgICAgIH0sKCEhJHNjb3BlLnNldHRpbmdzLnBvbGxTZWNvbmRzKSA/ICRzY29wZS5zZXR0aW5ncy5wb2xsU2Vjb25kcyoxMDAwIDogMTAwMDApO1xuICAgIH0pO1xuICB9O1xuXG4gICRzY29wZS5jaGFuZ2VWYWx1ZSA9IGZ1bmN0aW9uKGtldHRsZSxmaWVsZCx1cCl7XG5cbiAgICBpZih0aW1lb3V0KVxuICAgICAgJHRpbWVvdXQuY2FuY2VsKHRpbWVvdXQpO1xuXG4gICAgaWYodXApXG4gICAgICBrZXR0bGUudGVtcFtmaWVsZF0rKztcbiAgICBlbHNlXG4gICAgICBrZXR0bGUudGVtcFtmaWVsZF0tLTtcblxuICAgIC8vdXBkYXRlIGtub2IgYWZ0ZXIgMSBzZWNvbmRzLCBvdGhlcndpc2Ugd2UgZ2V0IGEgbG90IG9mIHJlZnJlc2ggb24gdGhlIGtub2Igd2hlbiBjbGlja2luZyBwbHVzIG9yIG1pbnVzXG4gICAgdGltZW91dCA9ICR0aW1lb3V0KGZ1bmN0aW9uKCl7XG4gICAgICAvL3VwZGF0ZSBtYXhcbiAgICAgIGtldHRsZS5rbm9iLm1heCA9IGtldHRsZS50ZW1wWyd0YXJnZXQnXStrZXR0bGUudGVtcFsnZGlmZiddKzEwO1xuICAgICAgJHNjb3BlLnVwZGF0ZUtub2JDb3B5KGtldHRsZSk7XG4gICAgfSwxMDAwKTtcbiAgfTtcblxuICAkc2NvcGUubG9hZENvbmZpZygpIC8vIGxvYWQgY29uZmlnXG4gICAgLnRoZW4oJHNjb3BlLmluaXQpIC8vIGluaXRcbiAgICAudGhlbihsb2FkZWQgPT4ge1xuICAgICAgaWYoISFsb2FkZWQpXG4gICAgICAgICRzY29wZS5wcm9jZXNzVGVtcHMoKTsgLy8gc3RhcnQgcG9sbGluZ1xuICAgIH0pO1xuICAvLyBzY29wZSB3YXRjaFxuICAkc2NvcGUuJHdhdGNoKCdzZXR0aW5ncycsZnVuY3Rpb24obmV3VmFsdWUsb2xkVmFsdWUpe1xuICAgIEJyZXdTZXJ2aWNlLnNldHRpbmdzKCdzZXR0aW5ncycsbmV3VmFsdWUpO1xuICB9LHRydWUpO1xuXG4gICRzY29wZS4kd2F0Y2goJ2tldHRsZXMnLGZ1bmN0aW9uKG5ld1ZhbHVlLG9sZFZhbHVlKXtcbiAgICBCcmV3U2VydmljZS5zZXR0aW5ncygna2V0dGxlcycsbmV3VmFsdWUpO1xuICB9LHRydWUpO1xuXG4gICRzY29wZS4kd2F0Y2goJ3NoYXJlJyxmdW5jdGlvbihuZXdWYWx1ZSxvbGRWYWx1ZSl7XG4gICAgQnJld1NlcnZpY2Uuc2V0dGluZ3MoJ3NoYXJlJyxuZXdWYWx1ZSk7XG4gIH0sdHJ1ZSk7XG5cbn0pO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2pzL2NvbnRyb2xsZXJzLmpzIiwiYW5ndWxhci5tb2R1bGUoJ2JyZXdiZW5jaC1tb25pdG9yJylcbi5kaXJlY3RpdmUoJ2VkaXRhYmxlJywgZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcmVzdHJpY3Q6ICdFJyxcbiAgICAgICAgc2NvcGU6IHttb2RlbDonPScsdHlwZTonQD8nLHRyaW06J0A/JyxjaGFuZ2U6JyY/JyxlbnRlcjonJj8nLHBsYWNlaG9sZGVyOidAPyd9LFxuICAgICAgICByZXBsYWNlOiBmYWxzZSxcbiAgICAgICAgdGVtcGxhdGU6XG4nPHNwYW4+JytcbiAgICAnPGlucHV0IHR5cGU9XCJ7e3R5cGV9fVwiIG5nLW1vZGVsPVwibW9kZWxcIiBuZy1zaG93PVwiZWRpdFwiIG5nLWVudGVyPVwiZWRpdD1mYWxzZVwiIG5nLWNoYW5nZT1cInt7Y2hhbmdlfHxmYWxzZX19XCIgY2xhc3M9XCJlZGl0YWJsZVwiPjwvaW5wdXQ+JytcbiAgICAgICAgJzxzcGFuIGNsYXNzPVwiZWRpdGFibGVcIiBuZy1zaG93PVwiIWVkaXRcIj57eyh0cmltKSA/ICgodHlwZT09XCJwYXNzd29yZFwiKSA/IFwiKioqKioqKlwiIDogKChtb2RlbCB8fCBwbGFjZWhvbGRlcikgfCBsaW1pdFRvOnRyaW0pK1wiLi4uXCIpIDonK1xuICAgICAgICAnICgodHlwZT09XCJwYXNzd29yZFwiKSA/IFwiKioqKioqKlwiIDogKG1vZGVsIHx8IHBsYWNlaG9sZGVyKSl9fTwvc3Bhbj4nK1xuJzwvc3Bhbj4nLFxuICAgICAgICBsaW5rOiBmdW5jdGlvbihzY29wZSwgZWxlbWVudCwgYXR0cnMpIHtcbiAgICAgICAgICAgIHNjb3BlLmVkaXQgPSBmYWxzZTtcbiAgICAgICAgICAgIHNjb3BlLnR5cGUgPSAhIXNjb3BlLnR5cGUgPyBzY29wZS50eXBlIDogJ3RleHQnO1xuICAgICAgICAgICAgZWxlbWVudC5iaW5kKCdjbGljaycsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHNjb3BlLiRhcHBseShzY29wZS5lZGl0ID0gdHJ1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmKHNjb3BlLmVudGVyKSBzY29wZS5lbnRlcigpO1xuICAgICAgICB9XG4gICAgfTtcbn0pXG4uZGlyZWN0aXZlKCduZ0VudGVyJywgZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHNjb3BlLCBlbGVtZW50LCBhdHRycykge1xuICAgICAgICBlbGVtZW50LmJpbmQoJ2tleXByZXNzJywgZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgaWYgKGUuY2hhckNvZGUgPT09IDEzIHx8IGUua2V5Q29kZSA9PT0xMyApIHtcbiAgICAgICAgICAgICAgc2NvcGUuJGFwcGx5KGF0dHJzLm5nRW50ZXIpO1xuICAgICAgICAgICAgICBpZihzY29wZS5jaGFuZ2UpXG4gICAgICAgICAgICAgICAgc2NvcGUuJGFwcGx5KHNjb3BlLmNoYW5nZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG59KVxuLmRpcmVjdGl2ZSgnb25SZWFkRmlsZScsIGZ1bmN0aW9uICgkcGFyc2UpIHtcblx0cmV0dXJuIHtcblx0XHRyZXN0cmljdDogJ0EnLFxuXHRcdHNjb3BlOiBmYWxzZSxcblx0XHRsaW5rOiBmdW5jdGlvbihzY29wZSwgZWxlbWVudCwgYXR0cnMpIHtcbiAgICAgIHZhciBmbiA9ICRwYXJzZShhdHRycy5vblJlYWRGaWxlKTtcblxuXHRcdFx0ZWxlbWVudC5vbignY2hhbmdlJywgZnVuY3Rpb24ob25DaGFuZ2VFdmVudCkge1xuXHRcdFx0XHR2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgdmFyIGZpbGUgPSAob25DaGFuZ2VFdmVudC5zcmNFbGVtZW50IHx8IG9uQ2hhbmdlRXZlbnQudGFyZ2V0KS5maWxlc1swXTtcbiAgICAgICAgdmFyIGV4dGVuc2lvbiA9IChmaWxlKSA/IGZpbGUubmFtZS5zcGxpdCgnLicpLnBvcCgpLnRvTG93ZXJDYXNlKCkgOiAnJztcblxuXHRcdFx0XHRyZWFkZXIub25sb2FkID0gZnVuY3Rpb24ob25Mb2FkRXZlbnQpIHtcblx0XHRcdFx0XHRzY29wZS4kYXBwbHkoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBmbihzY29wZSwgeyRmaWxlQ29udGVudDogb25Mb2FkRXZlbnQudGFyZ2V0LnJlc3VsdCwgJGV4dDogZXh0ZW5zaW9ufSk7XG4gICAgICAgICAgICBlbGVtZW50LnZhbChudWxsKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fTtcblx0XHRcdFx0cmVhZGVyLnJlYWRBc1RleHQoZmlsZSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH07XG59KTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9qcy9kaXJlY3RpdmVzLmpzIiwiYW5ndWxhci5tb2R1bGUoJ2JyZXdiZW5jaC1tb25pdG9yJylcbi5maWx0ZXIoJ21vbWVudCcsIGZ1bmN0aW9uKCkge1xuICByZXR1cm4gZnVuY3Rpb24oZGF0ZSwgZm9ybWF0KSB7XG4gICAgICBpZighZGF0ZSlcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgaWYoZm9ybWF0KVxuICAgICAgICByZXR1cm4gbW9tZW50KGRhdGUudG9TdHJpbmcoKSkuZm9ybWF0KGZvcm1hdCk7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBtb21lbnQoZGF0ZS50b1N0cmluZygpKS5mcm9tTm93KCk7XG4gICAgfTtcbn0pXG4uZmlsdGVyKCdmb3JtYXREZWdyZWVzJywgZnVuY3Rpb24oJGZpbHRlcikge1xuICByZXR1cm4gZnVuY3Rpb24odGVtcCx1bml0KSB7XG4gICAgaWYodW5pdD09J0YnKVxuICAgICAgcmV0dXJuICRmaWx0ZXIoJ3RvRmFocmVuaGVpdCcpKHRlbXApO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiAkZmlsdGVyKCd0b0NlbHNpdXMnKSh0ZW1wKTtcbiAgfTtcbn0pXG4uZmlsdGVyKCd0b0ZhaHJlbmhlaXQnLCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGNlbHNpdXMpIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChjZWxzaXVzKjkvNSszMik7XG4gIH07XG59KVxuLmZpbHRlcigndG9DZWxzaXVzJywgZnVuY3Rpb24oKSB7XG4gIHJldHVybiBmdW5jdGlvbihmYWhyZW5oZWl0KSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQoKGZhaHJlbmhlaXQtMzIpKjUvOSk7XG4gIH07XG59KVxuLmZpbHRlcignaGlnaGxpZ2h0JywgZnVuY3Rpb24oJHNjZSkge1xuICByZXR1cm4gZnVuY3Rpb24odGV4dCwgcGhyYXNlKSB7XG4gICAgaWYgKHRleHQgJiYgcGhyYXNlKSB7XG4gICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKG5ldyBSZWdFeHAoJygnK3BocmFzZSsnKScsICdnaScpLCAnPHNwYW4gY2xhc3M9XCJoaWdobGlnaHRlZFwiPiQxPC9zcGFuPicpO1xuICAgIH0gZWxzZSBpZighdGV4dCl7XG4gICAgICB0ZXh0ID0gJyc7XG4gICAgfVxuICAgIHJldHVybiAkc2NlLnRydXN0QXNIdG1sKHRleHQudG9TdHJpbmcoKSk7XG4gIH07XG59KTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9qcy9maWx0ZXJzLmpzIiwiYW5ndWxhci5tb2R1bGUoJ2JyZXdiZW5jaC1tb25pdG9yJylcbi5mYWN0b3J5KCdCcmV3U2VydmljZScsIGZ1bmN0aW9uKCRodHRwLCAkcSwgJGZpbHRlcil7XG5cbiAgcmV0dXJuIHtcblxuICAgIC8vY29va2llcyBzaXplIDQwOTYgYnl0ZXNcbiAgICBjbGVhcjogZnVuY3Rpb24oKXtcbiAgICAgIGlmKHdpbmRvdy5sb2NhbFN0b3JhZ2Upe1xuICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3NldHRpbmdzJyk7XG4gICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgna2V0dGxlcycpO1xuICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3NoYXJlJyk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIHJlc2V0OiBmdW5jdGlvbigpe1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcG9sbFNlY29uZHM6IDEwXG4gICAgICAgICx1bml0OiAnRidcbiAgICAgICAgLGxheW91dDogJ2NhcmQnXG4gICAgICAgICxzaGFyZWQ6IGZhbHNlXG4gICAgICAgICxyZWNpcGU6IHsnbmFtZSc6JycsJ2JyZXdlcic6e25hbWU6JycsJ2VtYWlsJzonJ30sJ3llYXN0JzpbXSwnaG9wcyc6W10sJ21hbHQnOltdLHNjYWxlOidncmF2aXR5JyxtZXRob2Q6J3BhcGF6aWFuJywnb2cnOjEuMDUwLCdmZyc6MS4wMTAsJ2Fidic6MCwnYWJ3JzowLCdjYWxvcmllcyc6MCwnYXR0ZW51YXRpb24nOjB9XG4gICAgICAgICxub3RpZmljYXRpb25zOiB7b246dHJ1ZSx0aW1lcnM6dHJ1ZSxoaWdoOnRydWUsbG93OnRydWUsdGFyZ2V0OnRydWUsc2xhY2s6JycsbGFzdDonJ31cbiAgICAgICAgLHNvdW5kczoge29uOnRydWUsYWxlcnQ6Jy9hc3NldHMvYXVkaW8vYmlrZS5tcDMnLHRpbWVyOicvYXNzZXRzL2F1ZGlvL3NjaG9vbC5tcDMnfVxuICAgICAgICAsYWNjb3VudDoge2FwaUtleTogJycsIHNlc3Npb25zOiBbXX1cbiAgICAgICAgLGluZmx1eGRiOiB7dXJsOiAnJywgcG9ydDogODA4NiwgdXNlcjogJycsIHBhc3M6ICcnLCBkYjogJycsIGNvbm5lY3RlZDogZmFsc2UsIGZyZXF1ZW5jeTogNjB9XG4gICAgICAgICxhcmR1aW5vczogW3tcbiAgICAgICAgICBpZDogYnRvYSgnYnJld2JlbmNoJyksXG4gICAgICAgICAgdXJsOiAnYXJkdWluby5sb2NhbCcsXG4gICAgICAgICAgYW5hbG9nOiA1LFxuICAgICAgICAgIGRpZ2l0YWw6IDEzLFxuICAgICAgICAgIHNlY3VyZTogZmFsc2VcbiAgICAgICAgfV1cbiAgICAgICAgLHRwbGlua3M6IFtdXG4gICAgICB9O1xuICAgIH0sXG5cbiAgICBkZWZhdWx0S25vYk9wdGlvbnM6IGZ1bmN0aW9uKCl7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZWFkT25seTogdHJ1ZSxcbiAgICAgICAgdW5pdDogJ1xcdTAwQjAnLFxuICAgICAgICBzdWJUZXh0OiB7XG4gICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICB0ZXh0OiAnJyxcbiAgICAgICAgICBjb2xvcjogJ2dyYXknLFxuICAgICAgICAgIGZvbnQ6ICdhdXRvJ1xuICAgICAgICB9LFxuICAgICAgICB0cmFja1dpZHRoOiA0MCxcbiAgICAgICAgYmFyV2lkdGg6IDI1LFxuICAgICAgICBiYXJDYXA6IDI1LFxuICAgICAgICB0cmFja0NvbG9yOiAnI2RkZCcsXG4gICAgICAgIGJhckNvbG9yOiAnIzc3NycsXG4gICAgICAgIGR5bmFtaWNPcHRpb25zOiB0cnVlLFxuICAgICAgICBkaXNwbGF5UHJldmlvdXM6IHRydWUsXG4gICAgICAgIHByZXZCYXJDb2xvcjogJyM3NzcnXG4gICAgICB9O1xuICAgIH0sXG5cbiAgICBkZWZhdWx0S2V0dGxlczogZnVuY3Rpb24oKXtcbiAgICAgIHJldHVybiBbe1xuICAgICAgICAgIGtleTogJ0hvdCBMaXF1b3InXG4gICAgICAgICAgLHR5cGU6ICd3YXRlcidcbiAgICAgICAgICAsYWN0aXZlOiBmYWxzZVxuICAgICAgICAgICxzdGlja3k6IGZhbHNlXG4gICAgICAgICAgLGhlYXRlcjoge3BpbjonRDInLHJ1bm5pbmc6ZmFsc2UsYXV0bzpmYWxzZSxwd206ZmFsc2UsZHV0eUN5Y2xlOjEwMH1cbiAgICAgICAgICAscHVtcDoge3BpbjonRDMnLHJ1bm5pbmc6ZmFsc2UsYXV0bzpmYWxzZSxwd206ZmFsc2UsZHV0eUN5Y2xlOjEwMH1cbiAgICAgICAgICAsdGVtcDoge3BpbjonQTAnLHR5cGU6J1RoZXJtaXN0b3InLGhpdDpmYWxzZSxjdXJyZW50OjAscHJldmlvdXM6MCxhZGp1c3Q6MCx0YXJnZXQ6MTcwLGRpZmY6Mn1cbiAgICAgICAgICAsdmFsdWVzOiBbXVxuICAgICAgICAgICx0aW1lcnM6IFtdXG4gICAgICAgICAgLGtub2I6IGFuZ3VsYXIuY29weSh0aGlzLmRlZmF1bHRLbm9iT3B0aW9ucygpLHt2YWx1ZTowLG1pbjowLG1heDoyMjB9KVxuICAgICAgICAgICxhcmR1aW5vOiB7aWQ6IGJ0b2EoJ2JyZXdiZW5jaCcpLCB1cmw6ICdhcmR1aW5vLmxvY2FsJyxhbmFsb2c6IDUsZGlnaXRhbDogMTN9XG4gICAgICAgIH0se1xuICAgICAgICAgIGtleTogJ01hc2gnXG4gICAgICAgICAgLHR5cGU6ICdncmFpbidcbiAgICAgICAgICAsYWN0aXZlOiBmYWxzZVxuICAgICAgICAgICxzdGlja3k6IGZhbHNlXG4gICAgICAgICAgLGhlYXRlcjoge3BpbjonRDQnLHJ1bm5pbmc6ZmFsc2UsYXV0bzpmYWxzZSxwd206ZmFsc2UsZHV0eUN5Y2xlOjEwMH1cbiAgICAgICAgICAscHVtcDoge3BpbjonRDUnLHJ1bm5pbmc6ZmFsc2UsYXV0bzpmYWxzZSxwd206ZmFsc2UsZHV0eUN5Y2xlOjEwMH1cbiAgICAgICAgICAsdGVtcDoge3BpbjonQTEnLHR5cGU6J1RoZXJtaXN0b3InLGhpdDpmYWxzZSxjdXJyZW50OjAscHJldmlvdXM6MCxhZGp1c3Q6MCx0YXJnZXQ6MTUyLGRpZmY6Mn1cbiAgICAgICAgICAsdmFsdWVzOiBbXVxuICAgICAgICAgICx0aW1lcnM6IFtdXG4gICAgICAgICAgLGtub2I6IGFuZ3VsYXIuY29weSh0aGlzLmRlZmF1bHRLbm9iT3B0aW9ucygpLHt2YWx1ZTowLG1pbjowLG1heDoyMjB9KVxuICAgICAgICAgICxhcmR1aW5vOiB7aWQ6IGJ0b2EoJ2JyZXdiZW5jaCcpLCB1cmw6ICdhcmR1aW5vLmxvY2FsJyxhbmFsb2c6IDUsZGlnaXRhbDogMTN9XG4gICAgICAgIH0se1xuICAgICAgICAgIGtleTogJ0JvaWwnXG4gICAgICAgICAgLHR5cGU6ICdob3AnXG4gICAgICAgICAgLGFjdGl2ZTogZmFsc2VcbiAgICAgICAgICAsc3RpY2t5OiBmYWxzZVxuICAgICAgICAgICxoZWF0ZXI6IHtwaW46J0Q2JyxydW5uaW5nOmZhbHNlLGF1dG86ZmFsc2UscHdtOmZhbHNlLGR1dHlDeWNsZToxMDB9XG4gICAgICAgICAgLHB1bXA6IHtwaW46J0Q3JyxydW5uaW5nOmZhbHNlLGF1dG86ZmFsc2UscHdtOmZhbHNlLGR1dHlDeWNsZToxMDB9XG4gICAgICAgICAgLHRlbXA6IHtwaW46J0EyJyx0eXBlOidUaGVybWlzdG9yJyxoaXQ6ZmFsc2UsY3VycmVudDowLHByZXZpb3VzOjAsYWRqdXN0OjAsdGFyZ2V0OjIwMCxkaWZmOjJ9XG4gICAgICAgICAgLHZhbHVlczogW11cbiAgICAgICAgICAsdGltZXJzOiBbXVxuICAgICAgICAgICxrbm9iOiBhbmd1bGFyLmNvcHkodGhpcy5kZWZhdWx0S25vYk9wdGlvbnMoKSx7dmFsdWU6MCxtaW46MCxtYXg6MjIwfSlcbiAgICAgICAgICAsYXJkdWlubzoge2lkOiBidG9hKCdicmV3YmVuY2gnKSwgdXJsOiAnYXJkdWluby5sb2NhbCcsYW5hbG9nOiA1LGRpZ2l0YWw6IDEzfVxuICAgICAgICB9XTtcbiAgICB9LFxuXG4gICAgc2V0dGluZ3M6IGZ1bmN0aW9uKGtleSx2YWx1ZXMpe1xuICAgICAgaWYoIXdpbmRvdy5sb2NhbFN0b3JhZ2UpXG4gICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgICB0cnkge1xuICAgICAgICBpZih2YWx1ZXMpe1xuICAgICAgICAgIHJldHVybiB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LEpTT04uc3RyaW5naWZ5KHZhbHVlcykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYod2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkpe1xuICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaChlKXtcbiAgICAgICAgLypKU09OIHBhcnNlIGVycm9yKi9cbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgfSxcblxuICAgIHNlbnNvclR5cGVzOiBmdW5jdGlvbihuYW1lKXtcbiAgICAgIGxldCBzZW5zb3JzID0gW1xuICAgICAgICB7bmFtZTogJ1RoZXJtaXN0b3InLCBhbmFsb2c6IHRydWUsIGRpZ2l0YWw6IGZhbHNlfVxuICAgICAgICAse25hbWU6ICdEUzE4QjIwJywgYW5hbG9nOiBmYWxzZSwgZGlnaXRhbDogdHJ1ZX1cbiAgICAgICAgLHtuYW1lOiAnUFQxMDAnLCBhbmFsb2c6IHRydWUsIGRpZ2l0YWw6IHRydWV9XG4gICAgICAgICx7bmFtZTogJ0RIVDExJywgYW5hbG9nOiBmYWxzZSwgZGlnaXRhbDogdHJ1ZX1cbiAgICAgICAgLHtuYW1lOiAnREhUMjEnLCBhbmFsb2c6IGZhbHNlLCBkaWdpdGFsOiB0cnVlfVxuICAgICAgICAse25hbWU6ICdESFQyMicsIGFuYWxvZzogZmFsc2UsIGRpZ2l0YWw6IHRydWV9XG4gICAgICBdO1xuICAgICAgaWYobmFtZSlcbiAgICAgICAgcmV0dXJuIF8uZmlsdGVyKHNlbnNvcnMsIHsnbmFtZSc6IG5hbWV9KVswXTtcbiAgICAgIHJldHVybiBzZW5zb3JzO1xuICAgIH0sXG5cbiAgICBrZXR0bGVUeXBlczogZnVuY3Rpb24odHlwZSl7XG4gICAgICBsZXQga2V0dGxlcyA9IFtcbiAgICAgICAgeyduYW1lJzonQm9pbCcsJ3R5cGUnOidob3AnLCd0YXJnZXQnOjIwMCwnZGlmZic6Mn1cbiAgICAgICAgLHsnbmFtZSc6J01hc2gnLCd0eXBlJzonZ3JhaW4nLCd0YXJnZXQnOjE1MiwnZGlmZic6Mn1cbiAgICAgICAgLHsnbmFtZSc6J0hvdCBMaXF1b3InLCd0eXBlJzond2F0ZXInLCd0YXJnZXQnOjE3MCwnZGlmZic6Mn1cbiAgICAgICAgLHsnbmFtZSc6J0Zlcm1lbnRlcicsJ3R5cGUnOidmZXJtZW50ZXInLCd0YXJnZXQnOjc0LCdkaWZmJzoyfVxuICAgICAgICAseyduYW1lJzonQWlyJywndHlwZSc6J2FpcicsJ3RhcmdldCc6NzQsJ2RpZmYnOjJ9XG4gICAgICBdO1xuICAgICAgaWYodHlwZSlcbiAgICAgICAgcmV0dXJuIF8uZmlsdGVyKGtldHRsZXMsIHsndHlwZSc6IHR5cGV9KVswXTtcbiAgICAgIHJldHVybiBrZXR0bGVzO1xuICAgIH0sXG5cbiAgICBkb21haW46IGZ1bmN0aW9uKGFyZHVpbm8pe1xuICAgICAgbGV0IHNldHRpbmdzID0gdGhpcy5zZXR0aW5ncygnc2V0dGluZ3MnKTtcbiAgICAgIGxldCBkb21haW4gPSAnaHR0cDovL2FyZHVpbm8ubG9jYWwnO1xuXG4gICAgICBpZihhcmR1aW5vICYmIGFyZHVpbm8udXJsKXtcbiAgICAgICAgZG9tYWluID0gKGFyZHVpbm8udXJsLmluZGV4T2YoJy8vJykgIT09IC0xKSA/XG4gICAgICAgICAgYXJkdWluby51cmwuc3Vic3RyKGFyZHVpbm8udXJsLmluZGV4T2YoJy8vJykrMikgOlxuICAgICAgICAgIGFyZHVpbm8udXJsO1xuXG4gICAgICAgIGlmKCEhYXJkdWluby5zZWN1cmUpXG4gICAgICAgICAgZG9tYWluID0gYGh0dHBzOi8vJHtkb21haW59YDtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGRvbWFpbiA9IGBodHRwOi8vJHtkb21haW59YDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRvbWFpbjtcbiAgICB9LFxuXG4gICAgc2xhY2s6IGZ1bmN0aW9uKHdlYmhvb2tfdXJsLCBtc2csIGNvbG9yLCBpY29uLCBrZXR0bGUpe1xuICAgICAgbGV0IHEgPSAkcS5kZWZlcigpO1xuXG4gICAgICBsZXQgcG9zdE9iaiA9IHsnYXR0YWNobWVudHMnOiBbeydmYWxsYmFjayc6IG1zZyxcbiAgICAgICAgICAgICd0aXRsZSc6IGtldHRsZS5rZXksXG4gICAgICAgICAgICAndGl0bGVfbGluayc6ICdodHRwOi8vJytkb2N1bWVudC5sb2NhdGlvbi5ob3N0LFxuICAgICAgICAgICAgJ2ZpZWxkcyc6IFt7J3ZhbHVlJzogbXNnfV0sXG4gICAgICAgICAgICAnY29sb3InOiBjb2xvcixcbiAgICAgICAgICAgICdtcmtkd25faW4nOiBbJ3RleHQnLCAnZmFsbGJhY2snLCAnZmllbGRzJ10sXG4gICAgICAgICAgICAndGh1bWJfdXJsJzogaWNvblxuICAgICAgICAgIH1dXG4gICAgICAgIH07XG5cbiAgICAgICRodHRwKHt1cmw6IHdlYmhvb2tfdXJsLCBtZXRob2Q6J1BPU1QnLCBkYXRhOiAncGF5bG9hZD0nK0pTT04uc3RyaW5naWZ5KHBvc3RPYmopLCBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyB9fSlcbiAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgIHEucmVzb2x2ZShyZXNwb25zZS5kYXRhKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgcS5yZWplY3QoZXJyKTtcbiAgICAgICAgfSk7XG4gICAgICByZXR1cm4gcS5wcm9taXNlO1xuICAgIH0sXG5cbiAgICAvLyBUaGVybWlzdG9yLCBEUzE4QjIwLCBvciBQVDEwMFxuICAgIC8vIGh0dHBzOi8vbGVhcm4uYWRhZnJ1aXQuY29tL3RoZXJtaXN0b3IvdXNpbmctYS10aGVybWlzdG9yXG4gICAgLy8gaHR0cHM6Ly93d3cuYWRhZnJ1aXQuY29tL3Byb2R1Y3QvMzgxKVxuICAgIC8vIGh0dHBzOi8vd3d3LmFkYWZydWl0LmNvbS9wcm9kdWN0LzMyOTAgYW5kIGh0dHBzOi8vd3d3LmFkYWZydWl0LmNvbS9wcm9kdWN0LzMzMjhcbiAgICB0ZW1wOiBmdW5jdGlvbihrZXR0bGUpe1xuICAgICAgaWYoIWtldHRsZS5hcmR1aW5vKSByZXR1cm4gJHEucmVqZWN0KCdTZWxlY3QgYW4gYXJkdWlubyB0byB1c2UuJyk7XG4gICAgICBsZXQgcSA9ICRxLmRlZmVyKCk7XG4gICAgICBsZXQgdXJsID0gdGhpcy5kb21haW4oa2V0dGxlLmFyZHVpbm8pKycvYXJkdWluby8nK2tldHRsZS50ZW1wLnR5cGUrJy8nK2tldHRsZS50ZW1wLnBpbjtcbiAgICAgIGxldCBzZXR0aW5ncyA9IHRoaXMuc2V0dGluZ3MoJ3NldHRpbmdzJyk7XG4gICAgICBsZXQgaGVhZGVycyA9IHt9O1xuXG4gICAgICBpZihrZXR0bGUuYXJkdWluby5wYXNzd29yZClcbiAgICAgICAgaGVhZGVycy5BdXRob3JpemF0aW9uID0gJ0Jhc2ljICcrYnRvYSgncm9vdDonK2tldHRsZS5hcmR1aW5vLnBhc3N3b3JkKTtcblxuICAgICAgJGh0dHAoe3VybDogdXJsLCBtZXRob2Q6ICdHRVQnLCBoZWFkZXJzOiBoZWFkZXJzLCB0aW1lb3V0OiBzZXR0aW5ncy5wb2xsU2Vjb25kcyoxMDAwMH0pXG4gICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICBpZighc2V0dGluZ3Muc2hhcmVkICYmIHJlc3BvbnNlLmhlYWRlcnMoJ1gtU2tldGNoLVZlcnNpb24nKSA9PSBudWxsIHx8IHJlc3BvbnNlLmhlYWRlcnMoJ1gtU2tldGNoLVZlcnNpb24nKSA8IHNldHRpbmdzLnNrZXRjaF92ZXJzaW9uKVxuICAgICAgICAgICAgcS5yZWplY3QoJ1NrZXRjaCBWZXJzaW9uIGlzIG91dCBvZiBkYXRlLiAgUGxlYXNlIDxhIGhyZWY9XCJcIiBkYXRhLXRvZ2dsZT1cIm1vZGFsXCIgZGF0YS10YXJnZXQ9XCIjc2V0dGluZ3NNb2RhbFwiPlVwZGF0ZTwvYT4uIFNrZXRjaDogJytyZXNwb25zZS5oZWFkZXJzKCdYLVNrZXRjaC1WZXJzaW9uJykrJyBCcmV3QmVuY2g6ICcrc2V0dGluZ3Muc2tldGNoX3ZlcnNpb24pO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHEucmVzb2x2ZShyZXNwb25zZS5kYXRhKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgcS5yZWplY3QoZXJyKTtcbiAgICAgICAgfSk7XG4gICAgICByZXR1cm4gcS5wcm9taXNlO1xuICAgIH0sXG4gICAgLy8gcmVhZC93cml0ZSBoZWF0ZXJcbiAgICAvLyBodHRwOi8vYXJkdWlub3Ryb25pY3MuYmxvZ3Nwb3QuY29tLzIwMTMvMDEvd29ya2luZy13aXRoLXNhaW5zbWFydC01di1yZWxheS1ib2FyZC5odG1sXG4gICAgLy8gaHR0cDovL215aG93dG9zYW5kcHJvamVjdHMuYmxvZ3Nwb3QuY29tLzIwMTQvMDIvc2FpbnNtYXJ0LTItY2hhbm5lbC01di1yZWxheS1hcmR1aW5vLmh0bWxcbiAgICBkaWdpdGFsOiBmdW5jdGlvbihrZXR0bGUsc2Vuc29yLHZhbHVlKXtcbiAgICAgIGlmKCFrZXR0bGUuYXJkdWlubykgcmV0dXJuICRxLnJlamVjdCgnU2VsZWN0IGFuIGFyZHVpbm8gdG8gdXNlLicpO1xuICAgICAgbGV0IHEgPSAkcS5kZWZlcigpO1xuICAgICAgbGV0IHVybCA9IHRoaXMuZG9tYWluKGtldHRsZS5hcmR1aW5vKSsnL2FyZHVpbm8vZGlnaXRhbC8nK3NlbnNvcisnLycrdmFsdWU7XG4gICAgICBsZXQgc2V0dGluZ3MgPSB0aGlzLnNldHRpbmdzKCdzZXR0aW5ncycpO1xuICAgICAgbGV0IGhlYWRlcnMgPSB7fTtcblxuICAgICAgaWYoa2V0dGxlLmFyZHVpbm8ucGFzc3dvcmQpXG4gICAgICAgIGhlYWRlcnMuQXV0aG9yaXphdGlvbiA9ICdCYXNpYyAnK2J0b2EoJ3Jvb3Q6JytrZXR0bGUuYXJkdWluby5wYXNzd29yZCk7XG5cbiAgICAgICRodHRwKHt1cmw6IHVybCwgbWV0aG9kOiAnR0VUJywgaGVhZGVyczogaGVhZGVycywgdGltZW91dDogc2V0dGluZ3MucG9sbFNlY29uZHMqMTAwMH0pXG4gICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICBpZighc2V0dGluZ3Muc2hhcmVkICYmIHJlc3BvbnNlLmhlYWRlcnMoJ1gtU2tldGNoLVZlcnNpb24nKSA9PSBudWxsIHx8IHJlc3BvbnNlLmhlYWRlcnMoJ1gtU2tldGNoLVZlcnNpb24nKSA8IHNldHRpbmdzLnNrZXRjaF92ZXJzaW9uKVxuICAgICAgICAgICAgcS5yZWplY3QoJ1NrZXRjaCBWZXJzaW9uIGlzIG91dCBvZiBkYXRlLiAgUGxlYXNlIDxhIGhyZWY9XCJcIiBkYXRhLXRvZ2dsZT1cIm1vZGFsXCIgZGF0YS10YXJnZXQ9XCIjc2V0dGluZ3NNb2RhbFwiPlVwZGF0ZTwvYT4uIFNrZXRjaDogJytyZXNwb25zZS5oZWFkZXJzKCdYLVNrZXRjaC1WZXJzaW9uJykrJyBCcmV3QmVuY2g6ICcrc2V0dGluZ3Muc2tldGNoX3ZlcnNpb24pO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHEucmVzb2x2ZShyZXNwb25zZS5kYXRhKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgcS5yZWplY3QoZXJyKTtcbiAgICAgICAgfSk7XG4gICAgICByZXR1cm4gcS5wcm9taXNlO1xuICAgIH0sXG5cbiAgICBhbmFsb2c6IGZ1bmN0aW9uKGtldHRsZSxzZW5zb3IsdmFsdWUpe1xuICAgICAgaWYoIWtldHRsZS5hcmR1aW5vKSByZXR1cm4gJHEucmVqZWN0KCdTZWxlY3QgYW4gYXJkdWlubyB0byB1c2UuJyk7XG4gICAgICBsZXQgcSA9ICRxLmRlZmVyKCk7XG4gICAgICBsZXQgdXJsID0gdGhpcy5kb21haW4oa2V0dGxlLmFyZHVpbm8pKycvYXJkdWluby9hbmFsb2cvJytzZW5zb3IrJy8nK3ZhbHVlO1xuICAgICAgbGV0IHNldHRpbmdzID0gdGhpcy5zZXR0aW5ncygnc2V0dGluZ3MnKTtcbiAgICAgIGxldCBoZWFkZXJzID0ge307XG5cbiAgICAgIGlmKGtldHRsZS5hcmR1aW5vLnBhc3N3b3JkKVxuICAgICAgICBoZWFkZXJzLkF1dGhvcml6YXRpb24gPSAnQmFzaWMgJytidG9hKCdyb290Oicra2V0dGxlLmFyZHVpbm8ucGFzc3dvcmQpO1xuXG4gICAgICAkaHR0cCh7dXJsOiB1cmwsIG1ldGhvZDogJ0dFVCcsIGhlYWRlcnM6IGhlYWRlcnMsIHRpbWVvdXQ6IHNldHRpbmdzLnBvbGxTZWNvbmRzKjEwMDB9KVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgaWYoIXNldHRpbmdzLnNoYXJlZCAmJiByZXNwb25zZS5oZWFkZXJzKCdYLVNrZXRjaC1WZXJzaW9uJykgPT0gbnVsbCB8fCByZXNwb25zZS5oZWFkZXJzKCdYLVNrZXRjaC1WZXJzaW9uJykgPCBzZXR0aW5ncy5za2V0Y2hfdmVyc2lvbilcbiAgICAgICAgICAgIHEucmVqZWN0KCdTa2V0Y2ggVmVyc2lvbiBpcyBvdXQgb2YgZGF0ZS4gIFBsZWFzZSA8YSBocmVmPVwiXCIgZGF0YS10b2dnbGU9XCJtb2RhbFwiIGRhdGEtdGFyZ2V0PVwiI3NldHRpbmdzTW9kYWxcIj5VcGRhdGU8L2E+LiBTa2V0Y2g6ICcrcmVzcG9uc2UuaGVhZGVycygnWC1Ta2V0Y2gtVmVyc2lvbicpKycgQnJld0JlbmNoOiAnK3NldHRpbmdzLnNrZXRjaF92ZXJzaW9uKTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBxLnJlc29sdmUocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgIHEucmVqZWN0KGVycik7XG4gICAgICAgIH0pO1xuICAgICAgcmV0dXJuIHEucHJvbWlzZTtcbiAgICB9LFxuXG4gICAgZGlnaXRhbFJlYWQ6IGZ1bmN0aW9uKGtldHRsZSxzZW5zb3IsdGltZW91dCl7XG4gICAgICBpZigha2V0dGxlLmFyZHVpbm8pIHJldHVybiAkcS5yZWplY3QoJ1NlbGVjdCBhbiBhcmR1aW5vIHRvIHVzZS4nKTtcbiAgICAgIGxldCBxID0gJHEuZGVmZXIoKTtcbiAgICAgIGxldCB1cmwgPSB0aGlzLmRvbWFpbihrZXR0bGUuYXJkdWlubykrJy9hcmR1aW5vL2RpZ2l0YWwvJytzZW5zb3I7XG4gICAgICBsZXQgc2V0dGluZ3MgPSB0aGlzLnNldHRpbmdzKCdzZXR0aW5ncycpO1xuICAgICAgbGV0IGhlYWRlcnMgPSB7fTtcblxuICAgICAgaWYoa2V0dGxlLmFyZHVpbm8ucGFzc3dvcmQpXG4gICAgICAgIGhlYWRlcnMuQXV0aG9yaXphdGlvbiA9ICdCYXNpYyAnK2J0b2EoJ3Jvb3Q6JytrZXR0bGUuYXJkdWluby5wYXNzd29yZCk7XG5cbiAgICAgICRodHRwKHt1cmw6IHVybCwgbWV0aG9kOiAnR0VUJywgaGVhZGVyczogaGVhZGVycywgdGltZW91dDogKHRpbWVvdXQgfHwgc2V0dGluZ3MucG9sbFNlY29uZHMqMTAwMCl9KVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgaWYoIXNldHRpbmdzLnNoYXJlZCAmJiByZXNwb25zZS5oZWFkZXJzKCdYLVNrZXRjaC1WZXJzaW9uJykgPT0gbnVsbCB8fCByZXNwb25zZS5oZWFkZXJzKCdYLVNrZXRjaC1WZXJzaW9uJykgPCBzZXR0aW5ncy5za2V0Y2hfdmVyc2lvbilcbiAgICAgICAgICAgIHEucmVqZWN0KCdTa2V0Y2ggVmVyc2lvbiBpcyBvdXQgb2YgZGF0ZS4gIFBsZWFzZSA8YSBocmVmPVwiXCIgZGF0YS10b2dnbGU9XCJtb2RhbFwiIGRhdGEtdGFyZ2V0PVwiI3NldHRpbmdzTW9kYWxcIj5VcGRhdGU8L2E+LiBTa2V0Y2g6ICcrcmVzcG9uc2UuaGVhZGVycygnWC1Ta2V0Y2gtVmVyc2lvbicpKycgQnJld0JlbmNoOiAnK3NldHRpbmdzLnNrZXRjaF92ZXJzaW9uKTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBxLnJlc29sdmUocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgIHEucmVqZWN0KGVycik7XG4gICAgICAgIH0pO1xuICAgICAgcmV0dXJuIHEucHJvbWlzZTtcbiAgICB9LFxuXG4gICAgbG9hZFNoYXJlRmlsZTogZnVuY3Rpb24oZmlsZSwgcGFzc3dvcmQpe1xuICAgICAgbGV0IHEgPSAkcS5kZWZlcigpO1xuICAgICAgbGV0IHF1ZXJ5ID0gJyc7XG4gICAgICBpZihwYXNzd29yZClcbiAgICAgICAgcXVlcnkgPSAnP3Bhc3N3b3JkPScrbWQ1KHBhc3N3b3JkKTtcbiAgICAgICRodHRwKHt1cmw6ICdodHRwczovL21vbml0b3IuYnJld2JlbmNoLmNvL3NoYXJlL2dldC8nK2ZpbGUrcXVlcnksIG1ldGhvZDogJ0dFVCd9KVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgcS5yZXNvbHZlKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICBxLnJlamVjdChlcnIpO1xuICAgICAgICB9KTtcbiAgICAgIHJldHVybiBxLnByb21pc2U7XG4gICAgfSxcblxuICAgIC8vIFRPRE8gZmluaXNoIHRoaXNcbiAgICAvLyBkZWxldGVTaGFyZUZpbGU6IGZ1bmN0aW9uKGZpbGUsIHBhc3N3b3JkKXtcbiAgICAvLyAgIGxldCBxID0gJHEuZGVmZXIoKTtcbiAgICAvLyAgICRodHRwKHt1cmw6ICdodHRwczovL21vbml0b3IuYnJld2JlbmNoLmNvL3NoYXJlL2RlbGV0ZS8nK2ZpbGUsIG1ldGhvZDogJ0dFVCd9KVxuICAgIC8vICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgLy8gICAgICAgcS5yZXNvbHZlKHJlc3BvbnNlLmRhdGEpO1xuICAgIC8vICAgICB9KVxuICAgIC8vICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAvLyAgICAgICBxLnJlamVjdChlcnIpO1xuICAgIC8vICAgICB9KTtcbiAgICAvLyAgIHJldHVybiBxLnByb21pc2U7XG4gICAgLy8gfSxcblxuICAgIGNyZWF0ZVNoYXJlOiBmdW5jdGlvbihzaGFyZSl7XG4gICAgICBsZXQgcSA9ICRxLmRlZmVyKCk7XG4gICAgICBsZXQgc2V0dGluZ3MgPSB0aGlzLnNldHRpbmdzKCdzZXR0aW5ncycpO1xuICAgICAgbGV0IGtldHRsZXMgPSB0aGlzLnNldHRpbmdzKCdrZXR0bGVzJyk7XG4gICAgICBsZXQgc2ggPSBPYmplY3QuYXNzaWduKHt9LCB7cGFzc3dvcmQ6IHNoYXJlLnBhc3N3b3JkLCBhY2Nlc3M6IHNoYXJlLmFjY2Vzc30pO1xuICAgICAgLy9yZW1vdmUgc29tZSB0aGluZ3Mgd2UgZG9uJ3QgbmVlZCB0byBzaGFyZVxuICAgICAgXy5lYWNoKGtldHRsZXMsIChrZXR0bGUsIGkpID0+IHtcbiAgICAgICAgZGVsZXRlIGtldHRsZXNbaV0ua25vYjtcbiAgICAgICAgZGVsZXRlIGtldHRsZXNbaV0udmFsdWVzO1xuICAgICAgfSk7XG4gICAgICBkZWxldGUgc2V0dGluZ3MuYWNjb3VudDtcbiAgICAgIGRlbGV0ZSBzZXR0aW5ncy5ub3RpZmljYXRpb25zO1xuICAgICAgc2V0dGluZ3Muc2hhcmVkID0gdHJ1ZTtcbiAgICAgIGlmKHNoLnBhc3N3b3JkKVxuICAgICAgICBzaC5wYXNzd29yZCA9IG1kNShzaC5wYXNzd29yZCk7XG4gICAgICAkaHR0cCh7dXJsOiAnaHR0cHM6Ly9tb25pdG9yLmJyZXdiZW5jaC5jby9zaGFyZS9jcmVhdGUvJyxcbiAgICAgICAgICBtZXRob2Q6J1BPU1QnLFxuICAgICAgICAgIGRhdGE6IHsnc2hhcmUnOiBzaCwgJ3NldHRpbmdzJzogc2V0dGluZ3MsICdrZXR0bGVzJzoga2V0dGxlc30sXG4gICAgICAgICAgaGVhZGVyczogeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbid9XG4gICAgICAgIH0pXG4gICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICBxLnJlc29sdmUocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgIHEucmVqZWN0KGVycik7XG4gICAgICAgIH0pO1xuICAgICAgcmV0dXJuIHEucHJvbWlzZTtcbiAgICB9LFxuXG4gICAgc2hhcmVUZXN0OiBmdW5jdGlvbihhcmR1aW5vKXtcbiAgICAgIGxldCBxID0gJHEuZGVmZXIoKTtcbiAgICAgIGxldCBxdWVyeSA9IGB1cmw9JHthcmR1aW5vLnVybH1gXG5cbiAgICAgIGlmKGFyZHVpbm8ucGFzc3dvcmQpXG4gICAgICAgIHF1ZXJ5ICs9ICcmYXV0aD0nK2J0b2EoJ3Jvb3Q6JythcmR1aW5vLnBhc3N3b3JkKTtcblxuICAgICAgJGh0dHAoe3VybDogJ2h0dHBzOi8vbW9uaXRvci5icmV3YmVuY2guY28vc2hhcmUvdGVzdC8/JytxdWVyeSwgbWV0aG9kOiAnR0VUJ30pXG4gICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICBxLnJlc29sdmUocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgIHEucmVqZWN0KGVycik7XG4gICAgICAgIH0pO1xuICAgICAgcmV0dXJuIHEucHJvbWlzZTtcbiAgICB9LFxuXG4gICAgaXA6IGZ1bmN0aW9uKGFyZHVpbm8pe1xuICAgICAgbGV0IHEgPSAkcS5kZWZlcigpO1xuXG4gICAgICAkaHR0cCh7dXJsOiAnaHR0cHM6Ly9tb25pdG9yLmJyZXdiZW5jaC5jby9zaGFyZS9pcCcsIG1ldGhvZDogJ0dFVCd9KVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgcS5yZXNvbHZlKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICBxLnJlamVjdChlcnIpO1xuICAgICAgICB9KTtcbiAgICAgIHJldHVybiBxLnByb21pc2U7XG4gICAgfSxcblxuICAgIHRwbGluazogZnVuY3Rpb24oKXtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2NhbjogKCkgPT4ge1xuXG4gICAgICAgIH0sXG4gICAgICAgIG9uOiAoKSA9PiB7XG5cbiAgICAgICAgfSxcbiAgICAgICAgb2ZmOiAoKSA9PiB7XG5cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9LFxuXG4gICAgaW5mbHV4ZGI6IGZ1bmN0aW9uKCl7XG4gICAgICBsZXQgcSA9ICRxLmRlZmVyKCk7XG4gICAgICBsZXQgc2V0dGluZ3MgPSB0aGlzLnNldHRpbmdzKCdzZXR0aW5ncycpO1xuICAgICAgbGV0IGluZmx1eENvbm5lY3Rpb24gPSBgJHtzZXR0aW5ncy5pbmZsdXhkYi51cmx9YDtcbiAgICAgIGlmKCAhIXNldHRpbmdzLmluZmx1eGRiLnBvcnQgKVxuICAgICAgICBpbmZsdXhDb25uZWN0aW9uICs9IGA6JHtzZXR0aW5ncy5pbmZsdXhkYi5wb3J0fWBcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGluZzogKCkgPT4ge1xuICAgICAgICAgICRodHRwKHt1cmw6IGAke2luZmx1eENvbm5lY3Rpb259L3BpbmdgLCBtZXRob2Q6ICdHRVQnfSlcbiAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgcS5yZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgcS5yZWplY3QoZXJyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHEucHJvbWlzZTtcbiAgICAgICAgfSxcbiAgICAgICAgY3JlYXRlREI6IChuYW1lKSA9PiB7XG4gICAgICAgICAgJGh0dHAoe3VybDogYCR7aW5mbHV4Q29ubmVjdGlvbn0vcXVlcnk/dT0ke3NldHRpbmdzLmluZmx1eGRiLnVzZXJ9JnA9JHtzZXR0aW5ncy5pbmZsdXhkYi5wYXNzfSZxPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGBDUkVBVEUgREFUQUJBU0UgXCIke25hbWV9XCJgKX1gLCBtZXRob2Q6ICdQT1NUJ30pXG4gICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgIHEucmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICAgIHEucmVqZWN0KGVycik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBxLnByb21pc2U7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSxcblxuICAgIHBrZzogZnVuY3Rpb24oKXtcbiAgICAgICAgbGV0IHEgPSAkcS5kZWZlcigpO1xuICAgICAgICAkaHR0cC5nZXQoJy9wYWNrYWdlLmpzb24nKVxuICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIHEucmVzb2x2ZShyZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgcS5yZWplY3QoZXJyKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gcS5wcm9taXNlO1xuICAgIH0sXG5cbiAgICBncmFpbnM6IGZ1bmN0aW9uKCl7XG4gICAgICAgIGxldCBxID0gJHEuZGVmZXIoKTtcbiAgICAgICAgJGh0dHAuZ2V0KCcvYXNzZXRzL2RhdGEvZ3JhaW5zLmpzb24nKVxuICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIHEucmVzb2x2ZShyZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgcS5yZWplY3QoZXJyKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHEucHJvbWlzZTtcbiAgICB9LFxuXG4gICAgaG9wczogZnVuY3Rpb24oKXtcbiAgICAgICAgbGV0IHEgPSAkcS5kZWZlcigpO1xuICAgICAgICAkaHR0cC5nZXQoJy9hc3NldHMvZGF0YS9ob3BzLmpzb24nKVxuICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIHEucmVzb2x2ZShyZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgcS5yZWplY3QoZXJyKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHEucHJvbWlzZTtcbiAgICB9LFxuXG4gICAgd2F0ZXI6IGZ1bmN0aW9uKCl7XG4gICAgICAgIGxldCBxID0gJHEuZGVmZXIoKTtcbiAgICAgICAgJGh0dHAuZ2V0KCcvYXNzZXRzL2RhdGEvd2F0ZXIuanNvbicpXG4gICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgcS5yZXNvbHZlKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICBxLnJlamVjdChlcnIpO1xuICAgICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcS5wcm9taXNlO1xuICAgIH0sXG5cbiAgICBzdHlsZXM6IGZ1bmN0aW9uKCl7XG4gICAgICBsZXQgcSA9ICRxLmRlZmVyKCk7XG4gICAgICAkaHR0cC5nZXQoJy9hc3NldHMvZGF0YS9zdHlsZWd1aWRlLmpzb24nKVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgcS5yZXNvbHZlKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICBxLnJlamVjdChlcnIpO1xuICAgICAgICB9KTtcbiAgICAgIHJldHVybiBxLnByb21pc2U7XG4gICAgfSxcblxuICAgIGxvdmlib25kOiBmdW5jdGlvbigpe1xuICAgICAgICBsZXQgcSA9ICRxLmRlZmVyKCk7XG4gICAgICAgICRodHRwLmdldCgnL2Fzc2V0cy9kYXRhL2xvdmlib25kLmpzb24nKVxuICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIHEucmVzb2x2ZShyZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgcS5yZWplY3QoZXJyKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHEucHJvbWlzZTtcbiAgICB9LFxuXG4gICAgY2hhcnRPcHRpb25zOiBmdW5jdGlvbih1bml0KXtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNoYXJ0OiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdsaW5lQ2hhcnQnLFxuICAgICAgICAgICAgICBub0RhdGE6ICdCcmV3QmVuY2ggTGl2ZScsXG4gICAgICAgICAgICAgIGhlaWdodDogMzUwLFxuICAgICAgICAgICAgICBtYXJnaW4gOiB7XG4gICAgICAgICAgICAgICAgICB0b3A6IDIwLFxuICAgICAgICAgICAgICAgICAgcmlnaHQ6IDIwLFxuICAgICAgICAgICAgICAgICAgYm90dG9tOiAxMDAsXG4gICAgICAgICAgICAgICAgICBsZWZ0OiA2NVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB4OiBmdW5jdGlvbihkKXsgcmV0dXJuIChkICYmIGQubGVuZ3RoKSA/IGRbMF0gOiBkOyB9LFxuICAgICAgICAgICAgICB5OiBmdW5jdGlvbihkKXsgcmV0dXJuIChkICYmIGQubGVuZ3RoKSA/IGRbMV0gOiBkOyB9LFxuICAgICAgICAgICAgICAvLyBhdmVyYWdlOiBmdW5jdGlvbihkKSB7IHJldHVybiBkLm1lYW4gfSxcblxuICAgICAgICAgICAgICBjb2xvcjogZDMuc2NhbGUuY2F0ZWdvcnkxMCgpLnJhbmdlKCksXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAsXG4gICAgICAgICAgICAgIHVzZUludGVyYWN0aXZlR3VpZGVsaW5lOiB0cnVlLFxuICAgICAgICAgICAgICBjbGlwVm9yb25vaTogZmFsc2UsXG5cbiAgICAgICAgICAgICAgeEF4aXM6IHtcbiAgICAgICAgICAgICAgICAgIGF4aXNMYWJlbDogJ1RpbWUnLFxuICAgICAgICAgICAgICAgICAgdGlja0Zvcm1hdDogZnVuY3Rpb24oZCkge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkMy50aW1lLmZvcm1hdCgnJUk6JU06JVMnKShuZXcgRGF0ZShkKSlcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBvcmllbnQ6ICdib3R0b20nLFxuICAgICAgICAgICAgICAgICAgdGlja1BhZGRpbmc6IDIwLFxuICAgICAgICAgICAgICAgICAgYXhpc0xhYmVsRGlzdGFuY2U6IDQwLFxuICAgICAgICAgICAgICAgICAgc3RhZ2dlckxhYmVsczogdHJ1ZVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBmb3JjZVk6ICghdW5pdCB8fCB1bml0PT0nRicpID8gWzAsMjIwXSA6IFstMTcsMTA0XSxcbiAgICAgICAgICAgICAgeUF4aXM6IHtcbiAgICAgICAgICAgICAgICAgIGF4aXNMYWJlbDogJ1RlbXBlcmF0dXJlJyxcbiAgICAgICAgICAgICAgICAgIHRpY2tGb3JtYXQ6IGZ1bmN0aW9uKGQpe1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkKydcXHUwMEIwJztcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBvcmllbnQ6ICdsZWZ0JyxcbiAgICAgICAgICAgICAgICAgIHNob3dNYXhNaW46IHRydWUsXG4gICAgICAgICAgICAgICAgICBheGlzTGFiZWxEaXN0YW5jZTogMFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH0sXG4gICAgLy8gaHR0cDovL3d3dy5icmV3ZXJzZnJpZW5kLmNvbS8yMDExLzA2LzE2L2FsY29ob2wtYnktdm9sdW1lLWNhbGN1bGF0b3ItdXBkYXRlZC9cbiAgICAvLyBQYXBhemlhblxuICAgIGFidjogZnVuY3Rpb24ob2csZmcpe1xuICAgICAgcmV0dXJuICgoIG9nIC0gZmcgKSAqIDEzMS4yNSkudG9GaXhlZCgyKTtcbiAgICB9LFxuICAgIC8vIERhbmllbHMsIHVzZWQgZm9yIGhpZ2ggZ3Jhdml0eSBiZWVyc1xuICAgIGFidmE6IGZ1bmN0aW9uKG9nLGZnKXtcbiAgICAgIHJldHVybiAoKCA3Ni4wOCAqICggb2cgLSBmZyApIC8gKCAxLjc3NSAtIG9nICkpICogKCBmZyAvIDAuNzk0ICkpLnRvRml4ZWQoMik7XG4gICAgfSxcbiAgICAvLyBodHRwOi8vaGJkLm9yZy9lbnNtaW5nci9cbiAgICBhYnc6IGZ1bmN0aW9uKGFidixmZyl7XG4gICAgICByZXR1cm4gKCgwLjc5ICogYWJ2KSAvIGZnKS50b0ZpeGVkKDIpO1xuICAgIH0sXG4gICAgcmU6IGZ1bmN0aW9uKG9wLGZwKXtcbiAgICAgIHJldHVybiAoMC4xODA4ICogb3ApICsgKDAuODE5MiAqIGZwKTtcbiAgICB9LFxuICAgIGF0dGVudWF0aW9uOiBmdW5jdGlvbihvcCxmcCl7XG4gICAgICByZXR1cm4gKCgxIC0gKGZwL29wKSkqMTAwKS50b0ZpeGVkKDIpO1xuICAgIH0sXG4gICAgY2Fsb3JpZXM6IGZ1bmN0aW9uKGFidyxyZSxmZyl7XG4gICAgICByZXR1cm4gKCgoNi45ICogYWJ3KSArIDQuMCAqIChyZSAtIDAuMSkpICogZmcgKiAzLjU1KS50b0ZpeGVkKDEpO1xuICAgIH0sXG4gICAgLy8gaHR0cDovL3d3dy5icmV3ZXJzZnJpZW5kLmNvbS9wbGF0by10by1zZy1jb252ZXJzaW9uLWNoYXJ0L1xuICAgIHNnOiBmdW5jdGlvbihwbGF0byl7XG4gICAgICBsZXQgc2cgPSAoIDEgKyAocGxhdG8gLyAoMjU4LjYgLSAoIChwbGF0by8yNTguMikgKiAyMjcuMSkgKSApICkudG9GaXhlZCgzKTtcbiAgICAgIHJldHVybiBwYXJzZUZsb2F0KHNnKTtcbiAgICB9LFxuICAgIHBsYXRvOiBmdW5jdGlvbihzZyl7XG4gICAgICBsZXQgcGxhdG8gPSAoKC0xICogNjE2Ljg2OCkgKyAoMTExMS4xNCAqIHNnKSAtICg2MzAuMjcyICogTWF0aC5wb3coc2csMikpICsgKDEzNS45OTcgKiBNYXRoLnBvdyhzZywzKSkpLnRvU3RyaW5nKCk7XG4gICAgICBpZihwbGF0by5zdWJzdHJpbmcocGxhdG8uaW5kZXhPZignLicpKzEscGxhdG8uaW5kZXhPZignLicpKzIpID09IDUpXG4gICAgICAgIHBsYXRvID0gcGxhdG8uc3Vic3RyaW5nKDAscGxhdG8uaW5kZXhPZignLicpKzIpO1xuICAgICAgZWxzZSBpZihwbGF0by5zdWJzdHJpbmcocGxhdG8uaW5kZXhPZignLicpKzEscGxhdG8uaW5kZXhPZignLicpKzIpIDwgNSlcbiAgICAgICAgcGxhdG8gPSBwbGF0by5zdWJzdHJpbmcoMCxwbGF0by5pbmRleE9mKCcuJykpO1xuICAgICAgZWxzZSBpZihwbGF0by5zdWJzdHJpbmcocGxhdG8uaW5kZXhPZignLicpKzEscGxhdG8uaW5kZXhPZignLicpKzIpID4gNSl7XG4gICAgICAgIHBsYXRvID0gcGxhdG8uc3Vic3RyaW5nKDAscGxhdG8uaW5kZXhPZignLicpKTtcbiAgICAgICAgcGxhdG8gPSBwYXJzZUZsb2F0KHBsYXRvKSArIDE7XG4gICAgICB9XG4gICAgICByZXR1cm4gcGFyc2VGbG9hdChwbGF0byk7XG4gICAgfSxcbiAgICByZWNpcGVCZWVyU21pdGg6IGZ1bmN0aW9uKHJlY2lwZSl7XG4gICAgICBsZXQgcmVzcG9uc2UgPSB7bmFtZTonJywgZGF0ZTonJywgYnJld2VyOiB7bmFtZTonJ30sIGNhdGVnb3J5OicnLCBhYnY6JycsIG9nOjAuMDAwLCBmZzowLjAwMCwgaWJ1OjAsIGhvcHM6W10sIGdyYWluczpbXSwgeWVhc3Q6W10sIG1pc2M6W119O1xuICAgICAgaWYoISFyZWNpcGUuRl9SX05BTUUpXG4gICAgICAgIHJlc3BvbnNlLm5hbWUgPSByZWNpcGUuRl9SX05BTUU7XG4gICAgICBpZighIXJlY2lwZS5GX1JfU1RZTEUuRl9TX0NBVEVHT1JZKVxuICAgICAgICByZXNwb25zZS5jYXRlZ29yeSA9IHJlY2lwZS5GX1JfU1RZTEUuRl9TX0NBVEVHT1JZO1xuICAgICAgaWYoISFyZWNpcGUuRl9SX0RBVEUpXG4gICAgICAgIHJlc3BvbnNlLmRhdGUgPSByZWNpcGUuRl9SX0RBVEU7XG4gICAgICBpZighIXJlY2lwZS5GX1JfQlJFV0VSKVxuICAgICAgICByZXNwb25zZS5icmV3ZXIubmFtZSA9IHJlY2lwZS5GX1JfQlJFV0VSO1xuXG4gICAgICBpZighIXJlY2lwZS5GX1JfU1RZTEUuRl9TX01BWF9PRylcbiAgICAgICAgcmVzcG9uc2Uub2cgPSBwYXJzZUZsb2F0KHJlY2lwZS5GX1JfU1RZTEUuRl9TX01BWF9PRykudG9GaXhlZCgzKTtcbiAgICAgIGVsc2UgaWYoISFyZWNpcGUuRl9SX1NUWUxFLkZfU19NSU5fT0cpXG4gICAgICAgIHJlc3BvbnNlLm9nID0gcGFyc2VGbG9hdChyZWNpcGUuRl9SX1NUWUxFLkZfU19NSU5fT0cpLnRvRml4ZWQoMyk7XG4gICAgICBpZighIXJlY2lwZS5GX1JfU1RZTEUuRl9TX01BWF9GRylcbiAgICAgICAgcmVzcG9uc2UuZmcgPSBwYXJzZUZsb2F0KHJlY2lwZS5GX1JfU1RZTEUuRl9TX01BWF9GRykudG9GaXhlZCgzKTtcbiAgICAgIGVsc2UgaWYoISFyZWNpcGUuRl9SX1NUWUxFLkZfU19NSU5fRkcpXG4gICAgICAgIHJlc3BvbnNlLmZnID0gcGFyc2VGbG9hdChyZWNpcGUuRl9SX1NUWUxFLkZfU19NSU5fRkcpLnRvRml4ZWQoMyk7XG5cbiAgICAgIGlmKCEhcmVjaXBlLkZfUl9TVFlMRS5GX1NfTUFYX0FCVilcbiAgICAgICAgcmVzcG9uc2UuYWJ2ID0gJGZpbHRlcignbnVtYmVyJykocmVjaXBlLkZfUl9TVFlMRS5GX1NfTUFYX0FCViwyKTtcbiAgICAgIGVsc2UgaWYoISFyZWNpcGUuRl9SX1NUWUxFLkZfU19NSU5fQUJWKVxuICAgICAgICByZXNwb25zZS5hYnYgPSAkZmlsdGVyKCdudW1iZXInKShyZWNpcGUuRl9SX1NUWUxFLkZfU19NSU5fQUJWLDIpO1xuXG4gICAgICBpZighIXJlY2lwZS5GX1JfU1RZTEUuRl9TX01BWF9JQlUpXG4gICAgICAgIHJlc3BvbnNlLmlidSA9IHBhcnNlSW50KHJlY2lwZS5GX1JfU1RZTEUuRl9TX01BWF9JQlUsMTApO1xuICAgICAgZWxzZSBpZighIXJlY2lwZS5GX1JfU1RZTEUuRl9TX01JTl9JQlUpXG4gICAgICAgIHJlc3BvbnNlLmlidSA9IHBhcnNlSW50KHJlY2lwZS5GX1JfU1RZTEUuRl9TX01JTl9JQlUsMTApO1xuXG4gICAgICBpZighIXJlY2lwZS5JbmdyZWRpZW50cy5EYXRhLkdyYWluKXtcbiAgICAgICAgXy5lYWNoKHJlY2lwZS5JbmdyZWRpZW50cy5EYXRhLkdyYWluLGZ1bmN0aW9uKGdyYWluKXtcbiAgICAgICAgICByZXNwb25zZS5ncmFpbnMucHVzaCh7XG4gICAgICAgICAgICBsYWJlbDogZ3JhaW4uRl9HX05BTUUsXG4gICAgICAgICAgICBtaW46IHBhcnNlSW50KGdyYWluLkZfR19CT0lMX1RJTUUsMTApLFxuICAgICAgICAgICAgbm90ZXM6ICRmaWx0ZXIoJ251bWJlcicpKGdyYWluLkZfR19BTU9VTlQvMTYsMikrJyBsYnMuJyxcbiAgICAgICAgICAgIGFtb3VudDogJGZpbHRlcignbnVtYmVyJykoZ3JhaW4uRl9HX0FNT1VOVC8xNiwyKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYoISFyZWNpcGUuSW5ncmVkaWVudHMuRGF0YS5Ib3BzKXtcbiAgICAgICAgICBfLmVhY2gocmVjaXBlLkluZ3JlZGllbnRzLkRhdGEuSG9wcyxmdW5jdGlvbihob3Ape1xuICAgICAgICAgICAgcmVzcG9uc2UuaG9wcy5wdXNoKHtcbiAgICAgICAgICAgICAgbGFiZWw6IGhvcC5GX0hfTkFNRSxcbiAgICAgICAgICAgICAgbWluOiBwYXJzZUludChob3AuRl9IX0RSWV9IT1BfVElNRSwxMCkgPiAwID8gbnVsbCA6IHBhcnNlSW50KGhvcC5GX0hfQk9JTF9USU1FLDEwKSxcbiAgICAgICAgICAgICAgbm90ZXM6IHBhcnNlSW50KGhvcC5GX0hfRFJZX0hPUF9USU1FLDEwKSA+IDBcbiAgICAgICAgICAgICAgICA/ICdEcnkgSG9wICcrJGZpbHRlcignbnVtYmVyJykoaG9wLkZfSF9BTU9VTlQsMikrJyBvei4nKycgZm9yICcrcGFyc2VJbnQoaG9wLkZfSF9EUllfSE9QX1RJTUUsMTApKycgRGF5cydcbiAgICAgICAgICAgICAgICA6ICRmaWx0ZXIoJ251bWJlcicpKGhvcC5GX0hfQU1PVU5ULDIpKycgb3ouJyxcbiAgICAgICAgICAgICAgYW1vdW50OiAkZmlsdGVyKCdudW1iZXInKShob3AuRl9IX0FNT1VOVCwyKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBob3AuRl9IX0FMUEhBXG4gICAgICAgICAgICAvLyBob3AuRl9IX0RSWV9IT1BfVElNRVxuICAgICAgICAgICAgLy8gaG9wLkZfSF9PUklHSU5cbiAgICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYoISFyZWNpcGUuSW5ncmVkaWVudHMuRGF0YS5NaXNjKXtcbiAgICAgICAgaWYocmVjaXBlLkluZ3JlZGllbnRzLkRhdGEuTWlzYy5sZW5ndGgpe1xuICAgICAgICAgIF8uZWFjaChyZWNpcGUuSW5ncmVkaWVudHMuRGF0YS5NaXNjLGZ1bmN0aW9uKG1pc2Mpe1xuICAgICAgICAgICAgcmVzcG9uc2UubWlzYy5wdXNoKHtcbiAgICAgICAgICAgICAgbGFiZWw6IG1pc2MuRl9NX05BTUUsXG4gICAgICAgICAgICAgIG1pbjogcGFyc2VJbnQobWlzYy5GX01fVElNRSwxMCksXG4gICAgICAgICAgICAgIG5vdGVzOiAkZmlsdGVyKCdudW1iZXInKShtaXNjLkZfTV9BTU9VTlQsMikrJyBnLicsXG4gICAgICAgICAgICAgIGFtb3VudDogJGZpbHRlcignbnVtYmVyJykobWlzYy5GX01fQU1PVU5ULDIpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNwb25zZS5taXNjLnB1c2goe1xuICAgICAgICAgICAgbGFiZWw6IHJlY2lwZS5JbmdyZWRpZW50cy5EYXRhLk1pc2MuRl9NX05BTUUsXG4gICAgICAgICAgICBtaW46IHBhcnNlSW50KHJlY2lwZS5JbmdyZWRpZW50cy5EYXRhLk1pc2MuRl9NX1RJTUUsMTApLFxuICAgICAgICAgICAgbm90ZXM6ICRmaWx0ZXIoJ251bWJlcicpKHJlY2lwZS5JbmdyZWRpZW50cy5EYXRhLk1pc2MuRl9NX0FNT1VOVCwyKSsnIGcuJyxcbiAgICAgICAgICAgIGFtb3VudDogJGZpbHRlcignbnVtYmVyJykocmVjaXBlLkluZ3JlZGllbnRzLkRhdGEuTWlzYy5GX01fQU1PVU5ULDIpXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYoISFyZWNpcGUuSW5ncmVkaWVudHMuRGF0YS5ZZWFzdCl7XG4gICAgICAgIGlmKHJlY2lwZS5JbmdyZWRpZW50cy5EYXRhLlllYXN0Lmxlbmd0aCl7XG4gICAgICAgICAgXy5lYWNoKHJlY2lwZS5JbmdyZWRpZW50cy5EYXRhLlllYXN0LGZ1bmN0aW9uKHllYXN0KXtcbiAgICAgICAgICAgIHJlc3BvbnNlLnllYXN0LnB1c2goe1xuICAgICAgICAgICAgICBuYW1lOiB5ZWFzdC5GX1lfTEFCKycgJysoeWVhc3QuRl9ZX1BST0RVQ1RfSUQgP1xuICAgICAgICAgICAgICAgIHllYXN0LkZfWV9QUk9EVUNUX0lEIDpcbiAgICAgICAgICAgICAgICB5ZWFzdC5GX1lfTkFNRSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3BvbnNlLnllYXN0LnB1c2goe1xuICAgICAgICAgICAgbmFtZTogcmVjaXBlLkluZ3JlZGllbnRzLkRhdGEuWWVhc3QuRl9ZX0xBQisnICcrXG4gICAgICAgICAgICAgIChyZWNpcGUuSW5ncmVkaWVudHMuRGF0YS5ZZWFzdC5GX1lfUFJPRFVDVF9JRCA/XG4gICAgICAgICAgICAgICAgcmVjaXBlLkluZ3JlZGllbnRzLkRhdGEuWWVhc3QuRl9ZX1BST0RVQ1RfSUQgOlxuICAgICAgICAgICAgICAgIHJlY2lwZS5JbmdyZWRpZW50cy5EYXRhLlllYXN0LkZfWV9OQU1FKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfSxcbiAgICByZWNpcGVCZWVyWE1MOiBmdW5jdGlvbihyZWNpcGUpe1xuICAgICAgbGV0IHJlc3BvbnNlID0ge25hbWU6JycsIGRhdGU6JycsIGJyZXdlcjoge25hbWU6Jyd9LCBjYXRlZ29yeTonJywgYWJ2OicnLCBvZzowLjAwMCwgZmc6MC4wMDAsIGlidTowLCBob3BzOltdLCBncmFpbnM6W10sIHllYXN0OltdLCBtaXNjOltdfTtcbiAgICAgIGxldCBtYXNoX3RpbWUgPSA2MDtcblxuICAgICAgaWYoISFyZWNpcGUuTkFNRSlcbiAgICAgICAgcmVzcG9uc2UubmFtZSA9IHJlY2lwZS5OQU1FO1xuICAgICAgaWYoISFyZWNpcGUuU1RZTEUuQ0FURUdPUlkpXG4gICAgICAgIHJlc3BvbnNlLmNhdGVnb3J5ID0gcmVjaXBlLlNUWUxFLkNBVEVHT1JZO1xuXG4gICAgICAvLyBpZighIXJlY2lwZS5GX1JfREFURSlcbiAgICAgIC8vICAgcmVzcG9uc2UuZGF0ZSA9IHJlY2lwZS5GX1JfREFURTtcbiAgICAgIGlmKCEhcmVjaXBlLkJSRVdFUilcbiAgICAgICAgcmVzcG9uc2UuYnJld2VyLm5hbWUgPSByZWNpcGUuQlJFV0VSO1xuXG4gICAgICBpZighIXJlY2lwZS5PRylcbiAgICAgICAgcmVzcG9uc2Uub2cgPSBwYXJzZUZsb2F0KHJlY2lwZS5PRykudG9GaXhlZCgzKTtcbiAgICAgIGlmKCEhcmVjaXBlLkZHKVxuICAgICAgICByZXNwb25zZS5mZyA9IHBhcnNlRmxvYXQocmVjaXBlLkZHKS50b0ZpeGVkKDMpO1xuXG4gICAgICBpZighIXJlY2lwZS5JQlUpXG4gICAgICAgIHJlc3BvbnNlLmZnID0gcGFyc2VJbnQocmVjaXBlLklCVSwxMCk7XG5cbiAgICAgIGlmKCEhcmVjaXBlLlNUWUxFLkFCVl9NQVgpXG4gICAgICAgIHJlc3BvbnNlLmFidiA9ICRmaWx0ZXIoJ251bWJlcicpKHJlY2lwZS5TVFlMRS5BQlZfTUFYLDIpO1xuICAgICAgZWxzZSBpZighIXJlY2lwZS5TVFlMRS5BQlZfTUlOKVxuICAgICAgICByZXNwb25zZS5hYnYgPSAkZmlsdGVyKCdudW1iZXInKShyZWNpcGUuU1RZTEUuQUJWX01JTiwyKTtcblxuICAgICAgaWYoISFyZWNpcGUuTUFTSC5NQVNIX1NURVBTLk1BU0hfU1RFUCAmJiByZWNpcGUuTUFTSC5NQVNIX1NURVBTLk1BU0hfU1RFUC5sZW5ndGggJiYgcmVjaXBlLk1BU0guTUFTSF9TVEVQUy5NQVNIX1NURVBbMF0uU1RFUF9USU1FKXtcbiAgICAgICAgbWFzaF90aW1lID0gcmVjaXBlLk1BU0guTUFTSF9TVEVQUy5NQVNIX1NURVBbMF0uU1RFUF9USU1FO1xuICAgICAgfVxuXG4gICAgICBpZighIXJlY2lwZS5GRVJNRU5UQUJMRVMpe1xuICAgICAgICBsZXQgZ3JhaW5zID0gKHJlY2lwZS5GRVJNRU5UQUJMRVMuRkVSTUVOVEFCTEUgJiYgcmVjaXBlLkZFUk1FTlRBQkxFUy5GRVJNRU5UQUJMRS5sZW5ndGgpID8gcmVjaXBlLkZFUk1FTlRBQkxFUy5GRVJNRU5UQUJMRSA6IHJlY2lwZS5GRVJNRU5UQUJMRVM7XG4gICAgICAgIF8uZWFjaChncmFpbnMsZnVuY3Rpb24oZ3JhaW4pe1xuICAgICAgICAgIHJlc3BvbnNlLmdyYWlucy5wdXNoKHtcbiAgICAgICAgICAgIGxhYmVsOiBncmFpbi5OQU1FLFxuICAgICAgICAgICAgbWluOiBwYXJzZUludChtYXNoX3RpbWUsMTApLFxuICAgICAgICAgICAgbm90ZXM6ICRmaWx0ZXIoJ251bWJlcicpKGdyYWluLkFNT1VOVCwyKSsnIGxicy4nLFxuICAgICAgICAgICAgYW1vdW50OiAkZmlsdGVyKCdudW1iZXInKShncmFpbi5BTU9VTlQsMiksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZighIXJlY2lwZS5IT1BTKXtcbiAgICAgICAgbGV0IGhvcHMgPSAocmVjaXBlLkhPUFMuSE9QICYmIHJlY2lwZS5IT1BTLkhPUC5sZW5ndGgpID8gcmVjaXBlLkhPUFMuSE9QIDogcmVjaXBlLkhPUFM7XG4gICAgICAgIF8uZWFjaChob3BzLGZ1bmN0aW9uKGhvcCl7XG4gICAgICAgICAgcmVzcG9uc2UuaG9wcy5wdXNoKHtcbiAgICAgICAgICAgIGxhYmVsOiBob3AuTkFNRSsnICgnK2hvcC5GT1JNKycpJyxcbiAgICAgICAgICAgIG1pbjogaG9wLlVTRSA9PSAnRHJ5IEhvcCcgPyAwIDogcGFyc2VJbnQoaG9wLlRJTUUsMTApLFxuICAgICAgICAgICAgbm90ZXM6IGhvcC5VU0UgPT0gJ0RyeSBIb3AnXG4gICAgICAgICAgICAgID8gaG9wLlVTRSsnICcrJGZpbHRlcignbnVtYmVyJykoaG9wLkFNT1VOVCoxMDAwLzI4LjM0OTUsMikrJyBvei4nKycgZm9yICcrcGFyc2VJbnQoaG9wLlRJTUUvNjAvMjQsMTApKycgRGF5cydcbiAgICAgICAgICAgICAgOiBob3AuVVNFKycgJyskZmlsdGVyKCdudW1iZXInKShob3AuQU1PVU5UKjEwMDAvMjguMzQ5NSwyKSsnIG96LicsXG4gICAgICAgICAgICBhbW91bnQ6ICRmaWx0ZXIoJ251bWJlcicpKGhvcC5BTU9VTlQqMTAwMC8yOC4zNDk1LDIpXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZighIXJlY2lwZS5NSVNDUyl7XG4gICAgICAgIGxldCBtaXNjID0gKHJlY2lwZS5NSVNDUy5NSVNDICYmIHJlY2lwZS5NSVNDUy5NSVNDLmxlbmd0aCkgPyByZWNpcGUuTUlTQ1MuTUlTQyA6IHJlY2lwZS5NSVNDUztcbiAgICAgICAgXy5lYWNoKG1pc2MsZnVuY3Rpb24obWlzYyl7XG4gICAgICAgICAgcmVzcG9uc2UubWlzYy5wdXNoKHtcbiAgICAgICAgICAgIGxhYmVsOiBtaXNjLk5BTUUsXG4gICAgICAgICAgICBtaW46IHBhcnNlSW50KG1pc2MuVElNRSwxMCksXG4gICAgICAgICAgICBub3RlczogJ0FkZCAnK21pc2MuQU1PVU5UKycgdG8gJyttaXNjLlVTRSxcbiAgICAgICAgICAgIGFtb3VudDogbWlzYy5BTU9VTlRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmKCEhcmVjaXBlLllFQVNUUyl7XG4gICAgICAgIGxldCB5ZWFzdCA9IChyZWNpcGUuWUVBU1RTLllFQVNUICYmIHJlY2lwZS5ZRUFTVFMuWUVBU1QubGVuZ3RoKSA/IHJlY2lwZS5ZRUFTVFMuWUVBU1QgOiByZWNpcGUuWUVBU1RTO1xuICAgICAgICAgIF8uZWFjaCh5ZWFzdCxmdW5jdGlvbih5ZWFzdCl7XG4gICAgICAgICAgICByZXNwb25zZS55ZWFzdC5wdXNoKHtcbiAgICAgICAgICAgICAgbmFtZTogeWVhc3QuTkFNRVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfSxcbiAgICBmb3JtYXRYTUw6IGZ1bmN0aW9uKGNvbnRlbnQpe1xuICAgICAgbGV0IGh0bWxjaGFycyA9IFtcbiAgICAgICAge2Y6ICcmQ2NlZGlsOycsIHI6ICfDhyd9LFxuICAgICAgICB7ZjogJyZjY2VkaWw7JywgcjogJ8OnJ30sXG4gICAgICAgIHtmOiAnJkV1bWw7JywgcjogJ8OLJ30sXG4gICAgICAgIHtmOiAnJmV1bWw7JywgcjogJ8OrJ30sXG4gICAgICAgIHtmOiAnJiMyNjI7JywgcjogJ8SGJ30sXG4gICAgICAgIHtmOiAnJiMyNjM7JywgcjogJ8SHJ30sXG4gICAgICAgIHtmOiAnJiMyNjg7JywgcjogJ8SMJ30sXG4gICAgICAgIHtmOiAnJiMyNjk7JywgcjogJ8SNJ30sXG4gICAgICAgIHtmOiAnJiMyNzI7JywgcjogJ8SQJ30sXG4gICAgICAgIHtmOiAnJiMyNzM7JywgcjogJ8SRJ30sXG4gICAgICAgIHtmOiAnJiMzNTI7JywgcjogJ8WgJ30sXG4gICAgICAgIHtmOiAnJiMzNTM7JywgcjogJ8WhJ30sXG4gICAgICAgIHtmOiAnJiMzODE7JywgcjogJ8W9J30sXG4gICAgICAgIHtmOiAnJiMzODI7JywgcjogJ8W+J30sXG4gICAgICAgIHtmOiAnJkFncmF2ZTsnLCByOiAnw4AnfSxcbiAgICAgICAge2Y6ICcmYWdyYXZlOycsIHI6ICfDoCd9LFxuICAgICAgICB7ZjogJyZDY2VkaWw7JywgcjogJ8OHJ30sXG4gICAgICAgIHtmOiAnJmNjZWRpbDsnLCByOiAnw6cnfSxcbiAgICAgICAge2Y6ICcmRWdyYXZlOycsIHI6ICfDiCd9LFxuICAgICAgICB7ZjogJyZlZ3JhdmU7JywgcjogJ8OoJ30sXG4gICAgICAgIHtmOiAnJkVhY3V0ZTsnLCByOiAnw4knfSxcbiAgICAgICAge2Y6ICcmZWFjdXRlOycsIHI6ICfDqSd9LFxuICAgICAgICB7ZjogJyZJYWN1dGU7JywgcjogJ8ONJ30sXG4gICAgICAgIHtmOiAnJmlhY3V0ZTsnLCByOiAnw60nfSxcbiAgICAgICAge2Y6ICcmSXVtbDsnLCByOiAnw48nfSxcbiAgICAgICAge2Y6ICcmaXVtbDsnLCByOiAnw68nfSxcbiAgICAgICAge2Y6ICcmT2dyYXZlOycsIHI6ICfDkid9LFxuICAgICAgICB7ZjogJyZvZ3JhdmU7JywgcjogJ8OyJ30sXG4gICAgICAgIHtmOiAnJk9hY3V0ZTsnLCByOiAnw5MnfSxcbiAgICAgICAge2Y6ICcmb2FjdXRlOycsIHI6ICfDsyd9LFxuICAgICAgICB7ZjogJyZVYWN1dGU7JywgcjogJ8OaJ30sXG4gICAgICAgIHtmOiAnJnVhY3V0ZTsnLCByOiAnw7onfSxcbiAgICAgICAge2Y6ICcmVXVtbDsnLCByOiAnw5wnfSxcbiAgICAgICAge2Y6ICcmdXVtbDsnLCByOiAnw7wnfSxcbiAgICAgICAge2Y6ICcmbWlkZG90OycsIHI6ICfCtyd9LFxuICAgICAgICB7ZjogJyYjMjYyOycsIHI6ICfEhid9LFxuICAgICAgICB7ZjogJyYjMjYzOycsIHI6ICfEhyd9LFxuICAgICAgICB7ZjogJyYjMjY4OycsIHI6ICfEjCd9LFxuICAgICAgICB7ZjogJyYjMjY5OycsIHI6ICfEjSd9LFxuICAgICAgICB7ZjogJyYjMjcyOycsIHI6ICfEkCd9LFxuICAgICAgICB7ZjogJyYjMjczOycsIHI6ICfEkSd9LFxuICAgICAgICB7ZjogJyYjMzUyOycsIHI6ICfFoCd9LFxuICAgICAgICB7ZjogJyYjMzUzOycsIHI6ICfFoSd9LFxuICAgICAgICB7ZjogJyYjMzgxOycsIHI6ICfFvSd9LFxuICAgICAgICB7ZjogJyYjMzgyOycsIHI6ICfFvid9LFxuICAgICAgICB7ZjogJyZBYWN1dGU7JywgcjogJ8OBJ30sXG4gICAgICAgIHtmOiAnJmFhY3V0ZTsnLCByOiAnw6EnfSxcbiAgICAgICAge2Y6ICcmIzI2ODsnLCByOiAnxIwnfSxcbiAgICAgICAge2Y6ICcmIzI2OTsnLCByOiAnxI0nfSxcbiAgICAgICAge2Y6ICcmIzI3MDsnLCByOiAnxI4nfSxcbiAgICAgICAge2Y6ICcmIzI3MTsnLCByOiAnxI8nfSxcbiAgICAgICAge2Y6ICcmRWFjdXRlOycsIHI6ICfDiSd9LFxuICAgICAgICB7ZjogJyZlYWN1dGU7JywgcjogJ8OpJ30sXG4gICAgICAgIHtmOiAnJiMyODI7JywgcjogJ8SaJ30sXG4gICAgICAgIHtmOiAnJiMyODM7JywgcjogJ8SbJ30sXG4gICAgICAgIHtmOiAnJklhY3V0ZTsnLCByOiAnw40nfSxcbiAgICAgICAge2Y6ICcmaWFjdXRlOycsIHI6ICfDrSd9LFxuICAgICAgICB7ZjogJyYjMzI3OycsIHI6ICfFhyd9LFxuICAgICAgICB7ZjogJyYjMzI4OycsIHI6ICfFiCd9LFxuICAgICAgICB7ZjogJyZPYWN1dGU7JywgcjogJ8OTJ30sXG4gICAgICAgIHtmOiAnJm9hY3V0ZTsnLCByOiAnw7MnfSxcbiAgICAgICAge2Y6ICcmIzM0NDsnLCByOiAnxZgnfSxcbiAgICAgICAge2Y6ICcmIzM0NTsnLCByOiAnxZknfSxcbiAgICAgICAge2Y6ICcmIzM1MjsnLCByOiAnxaAnfSxcbiAgICAgICAge2Y6ICcmIzM1MzsnLCByOiAnxaEnfSxcbiAgICAgICAge2Y6ICcmIzM1NjsnLCByOiAnxaQnfSxcbiAgICAgICAge2Y6ICcmIzM1NzsnLCByOiAnxaUnfSxcbiAgICAgICAge2Y6ICcmVWFjdXRlOycsIHI6ICfDmid9LFxuICAgICAgICB7ZjogJyZ1YWN1dGU7JywgcjogJ8O6J30sXG4gICAgICAgIHtmOiAnJiMzNjY7JywgcjogJ8WuJ30sXG4gICAgICAgIHtmOiAnJiMzNjc7JywgcjogJ8WvJ30sXG4gICAgICAgIHtmOiAnJllhY3V0ZTsnLCByOiAnw50nfSxcbiAgICAgICAge2Y6ICcmeWFjdXRlOycsIHI6ICfDvSd9LFxuICAgICAgICB7ZjogJyYjMzgxOycsIHI6ICfFvSd9LFxuICAgICAgICB7ZjogJyYjMzgyOycsIHI6ICfFvid9LFxuICAgICAgICB7ZjogJyZBRWxpZzsnLCByOiAnw4YnfSxcbiAgICAgICAge2Y6ICcmYWVsaWc7JywgcjogJ8OmJ30sXG4gICAgICAgIHtmOiAnJk9zbGFzaDsnLCByOiAnw5gnfSxcbiAgICAgICAge2Y6ICcmb3NsYXNoOycsIHI6ICfDuCd9LFxuICAgICAgICB7ZjogJyZBcmluZzsnLCByOiAnw4UnfSxcbiAgICAgICAge2Y6ICcmYXJpbmc7JywgcjogJ8OlJ30sXG4gICAgICAgIHtmOiAnJkVhY3V0ZTsnLCByOiAnw4knfSxcbiAgICAgICAge2Y6ICcmZWFjdXRlOycsIHI6ICfDqSd9LFxuICAgICAgICB7ZjogJyZFdW1sOycsIHI6ICfDiyd9LFxuICAgICAgICB7ZjogJyZldW1sOycsIHI6ICfDqyd9LFxuICAgICAgICB7ZjogJyZJdW1sOycsIHI6ICfDjyd9LFxuICAgICAgICB7ZjogJyZpdW1sOycsIHI6ICfDryd9LFxuICAgICAgICB7ZjogJyZPYWN1dGU7JywgcjogJ8OTJ30sXG4gICAgICAgIHtmOiAnJm9hY3V0ZTsnLCByOiAnw7MnfSxcbiAgICAgICAge2Y6ICcmIzI2NDsnLCByOiAnxIgnfSxcbiAgICAgICAge2Y6ICcmIzI2NTsnLCByOiAnxIknfSxcbiAgICAgICAge2Y6ICcmIzI4NDsnLCByOiAnxJwnfSxcbiAgICAgICAge2Y6ICcmIzI4NTsnLCByOiAnxJ0nfSxcbiAgICAgICAge2Y6ICcmIzI5MjsnLCByOiAnxKQnfSxcbiAgICAgICAge2Y6ICcmIzI5MzsnLCByOiAnxKUnfSxcbiAgICAgICAge2Y6ICcmIzMwODsnLCByOiAnxLQnfSxcbiAgICAgICAge2Y6ICcmIzMwOTsnLCByOiAnxLUnfSxcbiAgICAgICAge2Y6ICcmIzM0ODsnLCByOiAnxZwnfSxcbiAgICAgICAge2Y6ICcmIzM0OTsnLCByOiAnxZ0nfSxcbiAgICAgICAge2Y6ICcmIzM2NDsnLCByOiAnxawnfSxcbiAgICAgICAge2Y6ICcmIzM2NTsnLCByOiAnxa0nfSxcbiAgICAgICAge2Y6ICcmQXVtbDsnLCByOiAnw4QnfSxcbiAgICAgICAge2Y6ICcmYXVtbDsnLCByOiAnw6QnfSxcbiAgICAgICAge2Y6ICcmT3VtbDsnLCByOiAnw5YnfSxcbiAgICAgICAge2Y6ICcmb3VtbDsnLCByOiAnw7YnfSxcbiAgICAgICAge2Y6ICcmT3RpbGRlOycsIHI6ICfDlSd9LFxuICAgICAgICB7ZjogJyZvdGlsZGU7JywgcjogJ8O1J30sXG4gICAgICAgIHtmOiAnJlV1bWw7JywgcjogJ8OcJ30sXG4gICAgICAgIHtmOiAnJnV1bWw7JywgcjogJ8O8J30sXG4gICAgICAgIHtmOiAnJkFhY3V0ZTsnLCByOiAnw4EnfSxcbiAgICAgICAge2Y6ICcmYWFjdXRlOycsIHI6ICfDoSd9LFxuICAgICAgICB7ZjogJyZFVEg7JywgcjogJ8OQJ30sXG4gICAgICAgIHtmOiAnJmV0aDsnLCByOiAnw7AnfSxcbiAgICAgICAge2Y6ICcmSWFjdXRlOycsIHI6ICfDjSd9LFxuICAgICAgICB7ZjogJyZpYWN1dGU7JywgcjogJ8OtJ30sXG4gICAgICAgIHtmOiAnJk9hY3V0ZTsnLCByOiAnw5MnfSxcbiAgICAgICAge2Y6ICcmb2FjdXRlOycsIHI6ICfDsyd9LFxuICAgICAgICB7ZjogJyZVYWN1dGU7JywgcjogJ8OaJ30sXG4gICAgICAgIHtmOiAnJnVhY3V0ZTsnLCByOiAnw7onfSxcbiAgICAgICAge2Y6ICcmWWFjdXRlOycsIHI6ICfDnSd9LFxuICAgICAgICB7ZjogJyZ5YWN1dGU7JywgcjogJ8O9J30sXG4gICAgICAgIHtmOiAnJkFFbGlnOycsIHI6ICfDhid9LFxuICAgICAgICB7ZjogJyZhZWxpZzsnLCByOiAnw6YnfSxcbiAgICAgICAge2Y6ICcmT3NsYXNoOycsIHI6ICfDmCd9LFxuICAgICAgICB7ZjogJyZvc2xhc2g7JywgcjogJ8O4J30sXG4gICAgICAgIHtmOiAnJkF1bWw7JywgcjogJ8OEJ30sXG4gICAgICAgIHtmOiAnJmF1bWw7JywgcjogJ8OkJ30sXG4gICAgICAgIHtmOiAnJk91bWw7JywgcjogJ8OWJ30sXG4gICAgICAgIHtmOiAnJm91bWw7JywgcjogJ8O2J30sXG4gICAgICAgIHtmOiAnJkFncmF2ZTsnLCByOiAnw4AnfSxcbiAgICAgICAge2Y6ICcmYWdyYXZlOycsIHI6ICfDoCd9LFxuICAgICAgICB7ZjogJyZBY2lyYzsnLCByOiAnw4InfSxcbiAgICAgICAge2Y6ICcmYWNpcmM7JywgcjogJ8OiJ30sXG4gICAgICAgIHtmOiAnJkNjZWRpbDsnLCByOiAnw4cnfSxcbiAgICAgICAge2Y6ICcmY2NlZGlsOycsIHI6ICfDpyd9LFxuICAgICAgICB7ZjogJyZFZ3JhdmU7JywgcjogJ8OIJ30sXG4gICAgICAgIHtmOiAnJmVncmF2ZTsnLCByOiAnw6gnfSxcbiAgICAgICAge2Y6ICcmRWFjdXRlOycsIHI6ICfDiSd9LFxuICAgICAgICB7ZjogJyZlYWN1dGU7JywgcjogJ8OpJ30sXG4gICAgICAgIHtmOiAnJkVjaXJjOycsIHI6ICfDiid9LFxuICAgICAgICB7ZjogJyZlY2lyYzsnLCByOiAnw6onfSxcbiAgICAgICAge2Y6ICcmRXVtbDsnLCByOiAnw4snfSxcbiAgICAgICAge2Y6ICcmZXVtbDsnLCByOiAnw6snfSxcbiAgICAgICAge2Y6ICcmSWNpcmM7JywgcjogJ8OOJ30sXG4gICAgICAgIHtmOiAnJmljaXJjOycsIHI6ICfDrid9LFxuICAgICAgICB7ZjogJyZJdW1sOycsIHI6ICfDjyd9LFxuICAgICAgICB7ZjogJyZpdW1sOycsIHI6ICfDryd9LFxuICAgICAgICB7ZjogJyZPY2lyYzsnLCByOiAnw5QnfSxcbiAgICAgICAge2Y6ICcmb2NpcmM7JywgcjogJ8O0J30sXG4gICAgICAgIHtmOiAnJk9FbGlnOycsIHI6ICfFkid9LFxuICAgICAgICB7ZjogJyZvZWxpZzsnLCByOiAnxZMnfSxcbiAgICAgICAge2Y6ICcmVWdyYXZlOycsIHI6ICfDmSd9LFxuICAgICAgICB7ZjogJyZ1Z3JhdmU7JywgcjogJ8O5J30sXG4gICAgICAgIHtmOiAnJlVjaXJjOycsIHI6ICfDmyd9LFxuICAgICAgICB7ZjogJyZ1Y2lyYzsnLCByOiAnw7snfSxcbiAgICAgICAge2Y6ICcmVXVtbDsnLCByOiAnw5wnfSxcbiAgICAgICAge2Y6ICcmdXVtbDsnLCByOiAnw7wnfSxcbiAgICAgICAge2Y6ICcmIzM3NjsnLCByOiAnxbgnfSxcbiAgICAgICAge2Y6ICcmeXVtbDsnLCByOiAnw78nfSxcbiAgICAgICAge2Y6ICcmQXVtbDsnLCByOiAnw4QnfSxcbiAgICAgICAge2Y6ICcmYXVtbDsnLCByOiAnw6QnfSxcbiAgICAgICAge2Y6ICcmT3VtbDsnLCByOiAnw5YnfSxcbiAgICAgICAge2Y6ICcmb3VtbDsnLCByOiAnw7YnfSxcbiAgICAgICAge2Y6ICcmVXVtbDsnLCByOiAnw5wnfSxcbiAgICAgICAge2Y6ICcmdXVtbDsnLCByOiAnw7wnfSxcbiAgICAgICAge2Y6ICcmc3psaWc7JywgcjogJ8OfJ30sXG4gICAgICAgIHtmOiAnJkFhY3V0ZTsnLCByOiAnw4EnfSxcbiAgICAgICAge2Y6ICcmYWFjdXRlOycsIHI6ICfDoSd9LFxuICAgICAgICB7ZjogJyZBY2lyYzsnLCByOiAnw4InfSxcbiAgICAgICAge2Y6ICcmYWNpcmM7JywgcjogJ8OiJ30sXG4gICAgICAgIHtmOiAnJkF0aWxkZTsnLCByOiAnw4MnfSxcbiAgICAgICAge2Y6ICcmYXRpbGRlOycsIHI6ICfDoyd9LFxuICAgICAgICB7ZjogJyZJYWN1dGU7JywgcjogJ8ONJ30sXG4gICAgICAgIHtmOiAnJmlhY3V0ZTsnLCByOiAnw60nfSxcbiAgICAgICAge2Y6ICcmSWNpcmM7JywgcjogJ8OOJ30sXG4gICAgICAgIHtmOiAnJmljaXJjOycsIHI6ICfDrid9LFxuICAgICAgICB7ZjogJyYjMjk2OycsIHI6ICfEqCd9LFxuICAgICAgICB7ZjogJyYjMjk3OycsIHI6ICfEqSd9LFxuICAgICAgICB7ZjogJyZVYWN1dGU7JywgcjogJ8OaJ30sXG4gICAgICAgIHtmOiAnJnVncmF2ZTsnLCByOiAnw7knfSxcbiAgICAgICAge2Y6ICcmVWNpcmM7JywgcjogJ8ObJ30sXG4gICAgICAgIHtmOiAnJnVjaXJjOycsIHI6ICfDuyd9LFxuICAgICAgICB7ZjogJyYjMzYwOycsIHI6ICfFqCd9LFxuICAgICAgICB7ZjogJyYjMzYxOycsIHI6ICfFqSd9LFxuICAgICAgICB7ZjogJyYjMzEyOycsIHI6ICfEuCd9LFxuICAgICAgICB7ZjogJyZBYWN1dGU7JywgcjogJ8OBJ30sXG4gICAgICAgIHtmOiAnJmFhY3V0ZTsnLCByOiAnw6EnfSxcbiAgICAgICAge2Y6ICcmRWFjdXRlOycsIHI6ICfDiSd9LFxuICAgICAgICB7ZjogJyZlYWN1dGU7JywgcjogJ8OpJ30sXG4gICAgICAgIHtmOiAnJklhY3V0ZTsnLCByOiAnw40nfSxcbiAgICAgICAge2Y6ICcmaWFjdXRlOycsIHI6ICfDrSd9LFxuICAgICAgICB7ZjogJyZPYWN1dGU7JywgcjogJ8OTJ30sXG4gICAgICAgIHtmOiAnJm9hY3V0ZTsnLCByOiAnw7MnfSxcbiAgICAgICAge2Y6ICcmT3VtbDsnLCByOiAnw5YnfSxcbiAgICAgICAge2Y6ICcmb3VtbDsnLCByOiAnw7YnfSxcbiAgICAgICAge2Y6ICcmIzMzNjsnLCByOiAnxZAnfSxcbiAgICAgICAge2Y6ICcmIzMzNzsnLCByOiAnxZEnfSxcbiAgICAgICAge2Y6ICcmVWFjdXRlOycsIHI6ICfDmid9LFxuICAgICAgICB7ZjogJyZ1YWN1dGU7JywgcjogJ8O6J30sXG4gICAgICAgIHtmOiAnJlV1bWw7JywgcjogJ8OcJ30sXG4gICAgICAgIHtmOiAnJnV1bWw7JywgcjogJ8O8J30sXG4gICAgICAgIHtmOiAnJiMzNjg7JywgcjogJ8WwJ30sXG4gICAgICAgIHtmOiAnJiMzNjk7JywgcjogJ8WxJ30sXG4gICAgICAgIHtmOiAnJkFhY3V0ZTsnLCByOiAnw4EnfSxcbiAgICAgICAge2Y6ICcmYWFjdXRlOycsIHI6ICfDoSd9LFxuICAgICAgICB7ZjogJyZFVEg7JywgcjogJ8OQJ30sXG4gICAgICAgIHtmOiAnJmV0aDsnLCByOiAnw7AnfSxcbiAgICAgICAge2Y6ICcmRWFjdXRlOycsIHI6ICfDiSd9LFxuICAgICAgICB7ZjogJyZlYWN1dGU7JywgcjogJ8OpJ30sXG4gICAgICAgIHtmOiAnJklhY3V0ZTsnLCByOiAnw40nfSxcbiAgICAgICAge2Y6ICcmaWFjdXRlOycsIHI6ICfDrSd9LFxuICAgICAgICB7ZjogJyZPYWN1dGU7JywgcjogJ8OTJ30sXG4gICAgICAgIHtmOiAnJm9hY3V0ZTsnLCByOiAnw7MnfSxcbiAgICAgICAge2Y6ICcmVWFjdXRlOycsIHI6ICfDmid9LFxuICAgICAgICB7ZjogJyZ1YWN1dGU7JywgcjogJ8O6J30sXG4gICAgICAgIHtmOiAnJllhY3V0ZTsnLCByOiAnw50nfSxcbiAgICAgICAge2Y6ICcmeWFjdXRlOycsIHI6ICfDvSd9LFxuICAgICAgICB7ZjogJyZUSE9STjsnLCByOiAnw54nfSxcbiAgICAgICAge2Y6ICcmdGhvcm47JywgcjogJ8O+J30sXG4gICAgICAgIHtmOiAnJkFFbGlnOycsIHI6ICfDhid9LFxuICAgICAgICB7ZjogJyZhZWxpZzsnLCByOiAnw6YnfSxcbiAgICAgICAge2Y6ICcmT3VtbDsnLCByOiAnw5YnfSxcbiAgICAgICAge2Y6ICcmdW1sOycsIHI6ICfDtid9LFxuICAgICAgICB7ZjogJyZBYWN1dGU7JywgcjogJ8OBJ30sXG4gICAgICAgIHtmOiAnJmFhY3V0ZTsnLCByOiAnw6EnfSxcbiAgICAgICAge2Y6ICcmRWFjdXRlOycsIHI6ICfDiSd9LFxuICAgICAgICB7ZjogJyZlYWN1dGU7JywgcjogJ8OpJ30sXG4gICAgICAgIHtmOiAnJklhY3V0ZTsnLCByOiAnw40nfSxcbiAgICAgICAge2Y6ICcmaWFjdXRlOycsIHI6ICfDrSd9LFxuICAgICAgICB7ZjogJyZPYWN1dGU7JywgcjogJ8OTJ30sXG4gICAgICAgIHtmOiAnJm9hY3V0ZTsnLCByOiAnw7MnfSxcbiAgICAgICAge2Y6ICcmVWFjdXRlOycsIHI6ICfDmid9LFxuICAgICAgICB7ZjogJyZ1YWN1dGU7JywgcjogJ8O6J30sXG4gICAgICAgIHtmOiAnJkFncmF2ZTsnLCByOiAnw4AnfSxcbiAgICAgICAge2Y6ICcmYWdyYXZlOycsIHI6ICfDoCd9LFxuICAgICAgICB7ZjogJyZBY2lyYzsnLCByOiAnw4InfSxcbiAgICAgICAge2Y6ICcmYWNpcmM7JywgcjogJ8OiJ30sXG4gICAgICAgIHtmOiAnJkVncmF2ZTsnLCByOiAnw4gnfSxcbiAgICAgICAge2Y6ICcmZWdyYXZlOycsIHI6ICfDqCd9LFxuICAgICAgICB7ZjogJyZFYWN1dGU7JywgcjogJ8OJJ30sXG4gICAgICAgIHtmOiAnJmVhY3V0ZTsnLCByOiAnw6knfSxcbiAgICAgICAge2Y6ICcmRWNpcmM7JywgcjogJ8OKJ30sXG4gICAgICAgIHtmOiAnJmVjaXJjOycsIHI6ICfDqid9LFxuICAgICAgICB7ZjogJyZJZ3JhdmU7JywgcjogJ8OMJ30sXG4gICAgICAgIHtmOiAnJmlncmF2ZTsnLCByOiAnw6wnfSxcbiAgICAgICAge2Y6ICcmSWFjdXRlOycsIHI6ICfDjSd9LFxuICAgICAgICB7ZjogJyZpYWN1dGU7JywgcjogJ8OtJ30sXG4gICAgICAgIHtmOiAnJkljaXJjOycsIHI6ICfDjid9LFxuICAgICAgICB7ZjogJyZpY2lyYzsnLCByOiAnw64nfSxcbiAgICAgICAge2Y6ICcmSXVtbDsnLCByOiAnw48nfSxcbiAgICAgICAge2Y6ICcmaXVtbDsnLCByOiAnw68nfSxcbiAgICAgICAge2Y6ICcmT2dyYXZlOycsIHI6ICfDkid9LFxuICAgICAgICB7ZjogJyZvZ3JhdmU7JywgcjogJ8OyJ30sXG4gICAgICAgIHtmOiAnJk9jaXJjOycsIHI6ICfDlCd9LFxuICAgICAgICB7ZjogJyZvY2lyYzsnLCByOiAnw7QnfSxcbiAgICAgICAge2Y6ICcmVWdyYXZlOycsIHI6ICfDmSd9LFxuICAgICAgICB7ZjogJyZ1Z3JhdmU7JywgcjogJ8O5J30sXG4gICAgICAgIHtmOiAnJlVjaXJjOycsIHI6ICfDmyd9LFxuICAgICAgICB7ZjogJyZ1Y2lyYzsnLCByOiAnw7snfSxcbiAgICAgICAge2Y6ICcmIzI1NjsnLCByOiAnxIAnfSxcbiAgICAgICAge2Y6ICcmIzI1NzsnLCByOiAnxIEnfSxcbiAgICAgICAge2Y6ICcmIzI2ODsnLCByOiAnxIwnfSxcbiAgICAgICAge2Y6ICcmIzI2OTsnLCByOiAnxI0nfSxcbiAgICAgICAge2Y6ICcmIzI3NDsnLCByOiAnxJInfSxcbiAgICAgICAge2Y6ICcmIzI3NTsnLCByOiAnxJMnfSxcbiAgICAgICAge2Y6ICcmIzI5MDsnLCByOiAnxKInfSxcbiAgICAgICAge2Y6ICcmIzI5MTsnLCByOiAnxKMnfSxcbiAgICAgICAge2Y6ICcmIzI5ODsnLCByOiAnxKonfSxcbiAgICAgICAge2Y6ICcmIzI5OTsnLCByOiAnxKsnfSxcbiAgICAgICAge2Y6ICcmIzMxMDsnLCByOiAnxLYnfSxcbiAgICAgICAge2Y6ICcmIzMxMTsnLCByOiAnxLcnfSxcbiAgICAgICAge2Y6ICcmIzMxNTsnLCByOiAnxLsnfSxcbiAgICAgICAge2Y6ICcmIzMxNjsnLCByOiAnxLwnfSxcbiAgICAgICAge2Y6ICcmIzMyNTsnLCByOiAnxYUnfSxcbiAgICAgICAge2Y6ICcmIzMyNjsnLCByOiAnxYYnfSxcbiAgICAgICAge2Y6ICcmIzM0MjsnLCByOiAnxZYnfSxcbiAgICAgICAge2Y6ICcmIzM0MzsnLCByOiAnxZcnfSxcbiAgICAgICAge2Y6ICcmIzM1MjsnLCByOiAnxaAnfSxcbiAgICAgICAge2Y6ICcmIzM1MzsnLCByOiAnxaEnfSxcbiAgICAgICAge2Y6ICcmIzM2MjsnLCByOiAnxaonfSxcbiAgICAgICAge2Y6ICcmIzM2MzsnLCByOiAnxasnfSxcbiAgICAgICAge2Y6ICcmIzM4MTsnLCByOiAnxb0nfSxcbiAgICAgICAge2Y6ICcmIzM4MjsnLCByOiAnxb4nfSxcbiAgICAgICAge2Y6ICcmQUVsaWc7JywgcjogJ8OGJ30sXG4gICAgICAgIHtmOiAnJmFlbGlnOycsIHI6ICfDpid9LFxuICAgICAgICB7ZjogJyZPc2xhc2g7JywgcjogJ8OYJ30sXG4gICAgICAgIHtmOiAnJm9zbGFzaDsnLCByOiAnw7gnfSxcbiAgICAgICAge2Y6ICcmQXJpbmc7JywgcjogJ8OFJ30sXG4gICAgICAgIHtmOiAnJmFyaW5nOycsIHI6ICfDpSd9LFxuICAgICAgICB7ZjogJyYjMjYwOycsIHI6ICfEhCd9LFxuICAgICAgICB7ZjogJyYjMjYxOycsIHI6ICfEhSd9LFxuICAgICAgICB7ZjogJyYjMjYyOycsIHI6ICfEhid9LFxuICAgICAgICB7ZjogJyYjMjYzOycsIHI6ICfEhyd9LFxuICAgICAgICB7ZjogJyYjMjgwOycsIHI6ICfEmCd9LFxuICAgICAgICB7ZjogJyYjMjgxOycsIHI6ICfEmSd9LFxuICAgICAgICB7ZjogJyYjMzIxOycsIHI6ICfFgSd9LFxuICAgICAgICB7ZjogJyYjMzIyOycsIHI6ICfFgid9LFxuICAgICAgICB7ZjogJyYjMzIzOycsIHI6ICfFgyd9LFxuICAgICAgICB7ZjogJyYjMzI0OycsIHI6ICfFhCd9LFxuICAgICAgICB7ZjogJyZPYWN1dGU7JywgcjogJ8OTJ30sXG4gICAgICAgIHtmOiAnJm9hY3V0ZTsnLCByOiAnw7MnfSxcbiAgICAgICAge2Y6ICcmIzM0NjsnLCByOiAnxZonfSxcbiAgICAgICAge2Y6ICcmIzM0NzsnLCByOiAnxZsnfSxcbiAgICAgICAge2Y6ICcmIzM3NzsnLCByOiAnxbknfSxcbiAgICAgICAge2Y6ICcmIzM3ODsnLCByOiAnxbonfSxcbiAgICAgICAge2Y6ICcmIzM3OTsnLCByOiAnxbsnfSxcbiAgICAgICAge2Y6ICcmIzM4MDsnLCByOiAnxbwnfSxcbiAgICAgICAge2Y6ICcmQWdyYXZlOycsIHI6ICfDgCd9LFxuICAgICAgICB7ZjogJyZhZ3JhdmU7JywgcjogJ8OgJ30sXG4gICAgICAgIHtmOiAnJkFhY3V0ZTsnLCByOiAnw4EnfSxcbiAgICAgICAge2Y6ICcmYWFjdXRlOycsIHI6ICfDoSd9LFxuICAgICAgICB7ZjogJyZBY2lyYzsnLCByOiAnw4InfSxcbiAgICAgICAge2Y6ICcmYWNpcmM7JywgcjogJ8OiJ30sXG4gICAgICAgIHtmOiAnJkF0aWxkZTsnLCByOiAnw4MnfSxcbiAgICAgICAge2Y6ICcmYXRpbGRlOycsIHI6ICfDoyd9LFxuICAgICAgICB7ZjogJyZDY2VkaWw7JywgcjogJ8OHJ30sXG4gICAgICAgIHtmOiAnJmNjZWRpbDsnLCByOiAnw6cnfSxcbiAgICAgICAge2Y6ICcmRWdyYXZlOycsIHI6ICfDiCd9LFxuICAgICAgICB7ZjogJyZlZ3JhdmU7JywgcjogJ8OoJ30sXG4gICAgICAgIHtmOiAnJkVhY3V0ZTsnLCByOiAnw4knfSxcbiAgICAgICAge2Y6ICcmZWFjdXRlOycsIHI6ICfDqSd9LFxuICAgICAgICB7ZjogJyZFY2lyYzsnLCByOiAnw4onfSxcbiAgICAgICAge2Y6ICcmZWNpcmM7JywgcjogJ8OqJ30sXG4gICAgICAgIHtmOiAnJklncmF2ZTsnLCByOiAnw4wnfSxcbiAgICAgICAge2Y6ICcmaWdyYXZlOycsIHI6ICfDrCd9LFxuICAgICAgICB7ZjogJyZJYWN1dGU7JywgcjogJ8ONJ30sXG4gICAgICAgIHtmOiAnJmlhY3V0ZTsnLCByOiAnw60nfSxcbiAgICAgICAge2Y6ICcmSXVtbDsnLCByOiAnw48nfSxcbiAgICAgICAge2Y6ICcmaXVtbDsnLCByOiAnw68nfSxcbiAgICAgICAge2Y6ICcmT2dyYXZlOycsIHI6ICfDkid9LFxuICAgICAgICB7ZjogJyZvZ3JhdmU7JywgcjogJ8OyJ30sXG4gICAgICAgIHtmOiAnJk9hY3V0ZTsnLCByOiAnw5MnfSxcbiAgICAgICAge2Y6ICcmb2FjdXRlOycsIHI6ICfDsyd9LFxuICAgICAgICB7ZjogJyZPdGlsZGU7JywgcjogJ8OVJ30sXG4gICAgICAgIHtmOiAnJm90aWxkZTsnLCByOiAnw7UnfSxcbiAgICAgICAge2Y6ICcmVWdyYXZlOycsIHI6ICfDmSd9LFxuICAgICAgICB7ZjogJyZ1Z3JhdmU7JywgcjogJ8O5J30sXG4gICAgICAgIHtmOiAnJlVhY3V0ZTsnLCByOiAnw5onfSxcbiAgICAgICAge2Y6ICcmdWFjdXRlOycsIHI6ICfDuid9LFxuICAgICAgICB7ZjogJyZVdW1sOycsIHI6ICfDnCd9LFxuICAgICAgICB7ZjogJyZ1dW1sOycsIHI6ICfDvCd9LFxuICAgICAgICB7ZjogJyZvcmRmOycsIHI6ICfCqid9LFxuICAgICAgICB7ZjogJyZvcmRtOycsIHI6ICfCuid9LFxuICAgICAgICB7ZjogJyYjMjU4OycsIHI6ICfEgid9LFxuICAgICAgICB7ZjogJyYjMjU5OycsIHI6ICfEgyd9LFxuICAgICAgICB7ZjogJyZBY2lyYzsnLCByOiAnw4InfSxcbiAgICAgICAge2Y6ICcmYWNpcmM7JywgcjogJ8OiJ30sXG4gICAgICAgIHtmOiAnJkljaXJjOycsIHI6ICfDjid9LFxuICAgICAgICB7ZjogJyZpY2lyYzsnLCByOiAnw64nfSxcbiAgICAgICAge2Y6ICcmIzM1MDsnLCByOiAnxZ4nfSxcbiAgICAgICAge2Y6ICcmIzM1MTsnLCByOiAnxZ8nfSxcbiAgICAgICAge2Y6ICcmIzM1NDsnLCByOiAnxaInfSxcbiAgICAgICAge2Y6ICcmIzM1NTsnLCByOiAnxaMnfSxcbiAgICAgICAge2Y6ICcmQWFjdXRlOycsIHI6ICfDgSd9LFxuICAgICAgICB7ZjogJyZhYWN1dGU7JywgcjogJ8OhJ30sXG4gICAgICAgIHtmOiAnJiMyNjg7JywgcjogJ8SMJ30sXG4gICAgICAgIHtmOiAnJiMyNjk7JywgcjogJ8SNJ30sXG4gICAgICAgIHtmOiAnJiMyNzI7JywgcjogJ8SQJ30sXG4gICAgICAgIHtmOiAnJiMyNzM7JywgcjogJ8SRJ30sXG4gICAgICAgIHtmOiAnJiMzMzA7JywgcjogJ8WKJ30sXG4gICAgICAgIHtmOiAnJiMzMzE7JywgcjogJ8WLJ30sXG4gICAgICAgIHtmOiAnJiMzNTI7JywgcjogJ8WgJ30sXG4gICAgICAgIHtmOiAnJiMzNTM7JywgcjogJ8WhJ30sXG4gICAgICAgIHtmOiAnJiMzNTg7JywgcjogJ8WmJ30sXG4gICAgICAgIHtmOiAnJiMzNTk7JywgcjogJ8WnJ30sXG4gICAgICAgIHtmOiAnJiMzODE7JywgcjogJ8W9J30sXG4gICAgICAgIHtmOiAnJiMzODI7JywgcjogJ8W+J30sXG4gICAgICAgIHtmOiAnJkFncmF2ZTsnLCByOiAnw4AnfSxcbiAgICAgICAge2Y6ICcmYWdyYXZlOycsIHI6ICfDoCd9LFxuICAgICAgICB7ZjogJyZFZ3JhdmU7JywgcjogJ8OIJ30sXG4gICAgICAgIHtmOiAnJmVncmF2ZTsnLCByOiAnw6gnfSxcbiAgICAgICAge2Y6ICcmRWFjdXRlOycsIHI6ICfDiSd9LFxuICAgICAgICB7ZjogJyZlYWN1dGU7JywgcjogJ8OpJ30sXG4gICAgICAgIHtmOiAnJklncmF2ZTsnLCByOiAnw4wnfSxcbiAgICAgICAge2Y6ICcmaWdyYXZlOycsIHI6ICfDrCd9LFxuICAgICAgICB7ZjogJyZPZ3JhdmU7JywgcjogJ8OSJ30sXG4gICAgICAgIHtmOiAnJm9ncmF2ZTsnLCByOiAnw7InfSxcbiAgICAgICAge2Y6ICcmT2FjdXRlOycsIHI6ICfDkyd9LFxuICAgICAgICB7ZjogJyZvYWN1dGU7JywgcjogJ8OzJ30sXG4gICAgICAgIHtmOiAnJlVncmF2ZTsnLCByOiAnw5knfSxcbiAgICAgICAge2Y6ICcmdWdyYXZlOycsIHI6ICfDuSd9LFxuICAgICAgICB7ZjogJyZBYWN1dGU7JywgcjogJ8OBJ30sXG4gICAgICAgIHtmOiAnJmFhY3V0ZTsnLCByOiAnw6EnfSxcbiAgICAgICAge2Y6ICcmQXVtbDsnLCByOiAnw4QnfSxcbiAgICAgICAge2Y6ICcmYXVtbDsnLCByOiAnw6QnfSxcbiAgICAgICAge2Y6ICcmIzI2ODsnLCByOiAnxIwnfSxcbiAgICAgICAge2Y6ICcmIzI2OTsnLCByOiAnxI0nfSxcbiAgICAgICAge2Y6ICcmIzI3MDsnLCByOiAnxI4nfSxcbiAgICAgICAge2Y6ICcmIzI3MTsnLCByOiAnxI8nfSxcbiAgICAgICAge2Y6ICcmRWFjdXRlOycsIHI6ICfDiSd9LFxuICAgICAgICB7ZjogJyZlYWN1dGU7JywgcjogJ8OpJ30sXG4gICAgICAgIHtmOiAnJiMzMTM7JywgcjogJ8S5J30sXG4gICAgICAgIHtmOiAnJiMzMTQ7JywgcjogJ8S6J30sXG4gICAgICAgIHtmOiAnJiMzMTc7JywgcjogJ8S9J30sXG4gICAgICAgIHtmOiAnJiMzMTg7JywgcjogJ8S+J30sXG4gICAgICAgIHtmOiAnJiMzMjc7JywgcjogJ8WHJ30sXG4gICAgICAgIHtmOiAnJiMzMjg7JywgcjogJ8WIJ30sXG4gICAgICAgIHtmOiAnJk9hY3V0ZTsnLCByOiAnw5MnfSxcbiAgICAgICAge2Y6ICcmb2FjdXRlOycsIHI6ICfDsyd9LFxuICAgICAgICB7ZjogJyZPY2lyYzsnLCByOiAnw5QnfSxcbiAgICAgICAge2Y6ICcmb2NpcmM7JywgcjogJ8O0J30sXG4gICAgICAgIHtmOiAnJiMzNDA7JywgcjogJ8WUJ30sXG4gICAgICAgIHtmOiAnJiMzNDE7JywgcjogJ8WVJ30sXG4gICAgICAgIHtmOiAnJiMzNTI7JywgcjogJ8WgJ30sXG4gICAgICAgIHtmOiAnJiMzNTM7JywgcjogJ8WhJ30sXG4gICAgICAgIHtmOiAnJiMzNTY7JywgcjogJ8WkJ30sXG4gICAgICAgIHtmOiAnJiMzNTc7JywgcjogJ8WlJ30sXG4gICAgICAgIHtmOiAnJlVhY3V0ZTsnLCByOiAnw5onfSxcbiAgICAgICAge2Y6ICcmdWFjdXRlOycsIHI6ICfDuid9LFxuICAgICAgICB7ZjogJyZZYWN1dGU7JywgcjogJ8OdJ30sXG4gICAgICAgIHtmOiAnJnlhY3V0ZTsnLCByOiAnw70nfSxcbiAgICAgICAge2Y6ICcmIzM4MTsnLCByOiAnxb0nfSxcbiAgICAgICAge2Y6ICcmIzM4MjsnLCByOiAnxb4nfSxcbiAgICAgICAge2Y6ICcmIzI2ODsnLCByOiAnxIwnfSxcbiAgICAgICAge2Y6ICcmIzI2OTsnLCByOiAnxI0nfSxcbiAgICAgICAge2Y6ICcmIzM1MjsnLCByOiAnxaAnfSxcbiAgICAgICAge2Y6ICcmIzM1MzsnLCByOiAnxaEnfSxcbiAgICAgICAge2Y6ICcmIzM4MTsnLCByOiAnxb0nfSxcbiAgICAgICAge2Y6ICcmIzM4MjsnLCByOiAnxb4nfSxcbiAgICAgICAge2Y6ICcmQWFjdXRlOycsIHI6ICfDgSd9LFxuICAgICAgICB7ZjogJyZhYWN1dGU7JywgcjogJ8OhJ30sXG4gICAgICAgIHtmOiAnJkVhY3V0ZTsnLCByOiAnw4knfSxcbiAgICAgICAge2Y6ICcmZWFjdXRlOycsIHI6ICfDqSd9LFxuICAgICAgICB7ZjogJyZJYWN1dGU7JywgcjogJ8ONJ30sXG4gICAgICAgIHtmOiAnJmlhY3V0ZTsnLCByOiAnw60nfSxcbiAgICAgICAge2Y6ICcmT2FjdXRlOycsIHI6ICfDkyd9LFxuICAgICAgICB7ZjogJyZvYWN1dGU7JywgcjogJ8OzJ30sXG4gICAgICAgIHtmOiAnJk50aWxkZTsnLCByOiAnw5EnfSxcbiAgICAgICAge2Y6ICcmbnRpbGRlOycsIHI6ICfDsSd9LFxuICAgICAgICB7ZjogJyZVYWN1dGU7JywgcjogJ8OaJ30sXG4gICAgICAgIHtmOiAnJnVhY3V0ZTsnLCByOiAnw7onfSxcbiAgICAgICAge2Y6ICcmVXVtbDsnLCByOiAnw5wnfSxcbiAgICAgICAge2Y6ICcmdXVtbDsnLCByOiAnw7wnfSxcbiAgICAgICAge2Y6ICcmaWV4Y2w7JywgcjogJ8KhJ30sXG4gICAgICAgIHtmOiAnJm9yZGY7JywgcjogJ8KqJ30sXG4gICAgICAgIHtmOiAnJmlxdWVzdDsnLCByOiAnwr8nfSxcbiAgICAgICAge2Y6ICcmb3JkbTsnLCByOiAnwronfSxcbiAgICAgICAge2Y6ICcmQXJpbmc7JywgcjogJ8OFJ30sXG4gICAgICAgIHtmOiAnJmFyaW5nOycsIHI6ICfDpSd9LFxuICAgICAgICB7ZjogJyZBdW1sOycsIHI6ICfDhCd9LFxuICAgICAgICB7ZjogJyZhdW1sOycsIHI6ICfDpCd9LFxuICAgICAgICB7ZjogJyZPdW1sOycsIHI6ICfDlid9LFxuICAgICAgICB7ZjogJyZvdW1sOycsIHI6ICfDtid9LFxuICAgICAgICB7ZjogJyZDY2VkaWw7JywgcjogJ8OHJ30sXG4gICAgICAgIHtmOiAnJmNjZWRpbDsnLCByOiAnw6cnfSxcbiAgICAgICAge2Y6ICcmIzI4NjsnLCByOiAnxJ4nfSxcbiAgICAgICAge2Y6ICcmIzI4NzsnLCByOiAnxJ8nfSxcbiAgICAgICAge2Y6ICcmIzMwNDsnLCByOiAnxLAnfSxcbiAgICAgICAge2Y6ICcmIzMwNTsnLCByOiAnxLEnfSxcbiAgICAgICAge2Y6ICcmT3VtbDsnLCByOiAnw5YnfSxcbiAgICAgICAge2Y6ICcmb3VtbDsnLCByOiAnw7YnfSxcbiAgICAgICAge2Y6ICcmIzM1MDsnLCByOiAnxZ4nfSxcbiAgICAgICAge2Y6ICcmIzM1MTsnLCByOiAnxZ8nfSxcbiAgICAgICAge2Y6ICcmVXVtbDsnLCByOiAnw5wnfSxcbiAgICAgICAge2Y6ICcmdXVtbDsnLCByOiAnw7wnfSxcbiAgICAgICAge2Y6ICcmZXVybzsnLCByOiAn4oKsJ30sXG4gICAgICAgIHtmOiAnJnBvdW5kOycsIHI6ICfCoyd9LFxuICAgICAgICB7ZjogJyZsYXF1bzsnLCByOiAnwqsnfSxcbiAgICAgICAge2Y6ICcmcmFxdW87JywgcjogJ8K7J30sXG4gICAgICAgIHtmOiAnJmJ1bGw7JywgcjogJ+KAoid9LFxuICAgICAgICB7ZjogJyZkYWdnZXI7JywgcjogJ+KAoCd9LFxuICAgICAgICB7ZjogJyZjb3B5OycsIHI6ICfCqSd9LFxuICAgICAgICB7ZjogJyZyZWc7JywgcjogJ8KuJ30sXG4gICAgICAgIHtmOiAnJnRyYWRlOycsIHI6ICfihKInfSxcbiAgICAgICAge2Y6ICcmZGVnOycsIHI6ICfCsCd9LFxuICAgICAgICB7ZjogJyZwZXJtaWw7JywgcjogJ+KAsCd9LFxuICAgICAgICB7ZjogJyZtaWNybzsnLCByOiAnwrUnfSxcbiAgICAgICAge2Y6ICcmbWlkZG90OycsIHI6ICfCtyd9LFxuICAgICAgICB7ZjogJyZuZGFzaDsnLCByOiAn4oCTJ30sXG4gICAgICAgIHtmOiAnJm1kYXNoOycsIHI6ICfigJQnfSxcbiAgICAgICAge2Y6ICcmIzg0NzA7JywgcjogJ+KElid9LFxuICAgICAgICB7ZjogJyZyZWc7JywgcjogJ8KuJ30sXG4gICAgICAgIHtmOiAnJnBhcmE7JywgcjogJ8K2J30sXG4gICAgICAgIHtmOiAnJnBsdXNtbjsnLCByOiAnwrEnfSxcbiAgICAgICAge2Y6ICcmbWlkZG90OycsIHI6ICfCtyd9LFxuICAgICAgICB7ZjogJ2xlc3MtdCcsIHI6ICc8J30sXG4gICAgICAgIHtmOiAnZ3JlYXRlci10JywgcjogJz4nfSxcbiAgICAgICAge2Y6ICcmbm90OycsIHI6ICfCrCd9LFxuICAgICAgICB7ZjogJyZjdXJyZW47JywgcjogJ8KkJ30sXG4gICAgICAgIHtmOiAnJmJydmJhcjsnLCByOiAnwqYnfSxcbiAgICAgICAge2Y6ICcmZGVnOycsIHI6ICfCsCd9LFxuICAgICAgICB7ZjogJyZhY3V0ZTsnLCByOiAnwrQnfSxcbiAgICAgICAge2Y6ICcmdW1sOycsIHI6ICfCqCd9LFxuICAgICAgICB7ZjogJyZtYWNyOycsIHI6ICfCryd9LFxuICAgICAgICB7ZjogJyZjZWRpbDsnLCByOiAnwrgnfSxcbiAgICAgICAge2Y6ICcmbGFxdW87JywgcjogJ8KrJ30sXG4gICAgICAgIHtmOiAnJnJhcXVvOycsIHI6ICfCuyd9LFxuICAgICAgICB7ZjogJyZzdXAxOycsIHI6ICfCuSd9LFxuICAgICAgICB7ZjogJyZzdXAyOycsIHI6ICfCsid9LFxuICAgICAgICB7ZjogJyZzdXAzOycsIHI6ICfCsyd9LFxuICAgICAgICB7ZjogJyZvcmRmOycsIHI6ICfCqid9LFxuICAgICAgICB7ZjogJyZvcmRtOycsIHI6ICfCuid9LFxuICAgICAgICB7ZjogJyZpZXhjbDsnLCByOiAnwqEnfSxcbiAgICAgICAge2Y6ICcmaXF1ZXN0OycsIHI6ICfCvyd9LFxuICAgICAgICB7ZjogJyZtaWNybzsnLCByOiAnwrUnfSxcbiAgICAgICAge2Y6ICdoeTtcdCcsIHI6ICcmJ30sXG4gICAgICAgIHtmOiAnJkVUSDsnLCByOiAnw5AnfSxcbiAgICAgICAge2Y6ICcmZXRoOycsIHI6ICfDsCd9LFxuICAgICAgICB7ZjogJyZOdGlsZGU7JywgcjogJ8ORJ30sXG4gICAgICAgIHtmOiAnJm50aWxkZTsnLCByOiAnw7EnfSxcbiAgICAgICAge2Y6ICcmT3NsYXNoOycsIHI6ICfDmCd9LFxuICAgICAgICB7ZjogJyZvc2xhc2g7JywgcjogJ8O4J30sXG4gICAgICAgIHtmOiAnJnN6bGlnOycsIHI6ICfDnyd9LFxuICAgICAgICB7ZjogJyZhbXA7JywgcjogJ2FuZCd9LFxuICAgICAgICB7ZjogJyZsZHF1bzsnLCByOiAnXCInfSxcbiAgICAgICAge2Y6ICcmcmRxdW87JywgcjogJ1wiJ30sXG4gICAgICAgIHtmOiAnJnJzcXVvOycsIHI6IFwiJ1wifVxuICAgICAgXTtcblxuICAgICAgXy5lYWNoKGh0bWxjaGFycywgZnVuY3Rpb24oY2hhcikge1xuICAgICAgICBpZihjb250ZW50LmluZGV4T2YoY2hhci5mKSAhPT0gLTEpe1xuICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UoUmVnRXhwKGNoYXIuZiwnZycpLCBjaGFyLnIpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH1cbiAgfTtcbn0pO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2pzL3NlcnZpY2VzLmpzIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file +},[178]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvanMvYXBwLmpzIiwid2VicGFjazovLy8uL3NyYy9qcy9jb250cm9sbGVycy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvanMvZGlyZWN0aXZlcy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvanMvZmlsdGVycy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvanMvc2VydmljZXMuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiY29uZmlnIiwiJHN0YXRlUHJvdmlkZXIiLCIkdXJsUm91dGVyUHJvdmlkZXIiLCIkaHR0cFByb3ZpZGVyIiwiJGxvY2F0aW9uUHJvdmlkZXIiLCIkY29tcGlsZVByb3ZpZGVyIiwiZGVmYXVsdHMiLCJ1c2VYRG9tYWluIiwiaGVhZGVycyIsImNvbW1vbiIsImhhc2hQcmVmaXgiLCJhSHJlZlNhbml0aXphdGlvbldoaXRlbGlzdCIsInN0YXRlIiwidXJsIiwidGVtcGxhdGVVcmwiLCJjb250cm9sbGVyIiwiYW5ndWxhciIsIiRzY29wZSIsIiRzdGF0ZSIsIiRmaWx0ZXIiLCIkdGltZW91dCIsIiRpbnRlcnZhbCIsIiRxIiwiJGh0dHAiLCIkc2NlIiwiQnJld1NlcnZpY2UiLCJjbGVhclNldHRpbmdzIiwiZSIsImVsZW1lbnQiLCJ0YXJnZXQiLCJodG1sIiwiY2xlYXIiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhyZWYiLCJjdXJyZW50IiwibmFtZSIsIm5vdGlmaWNhdGlvbiIsInJlc2V0Q2hhcnQiLCJ0aW1lb3V0IiwiaG9wcyIsImdyYWlucyIsIndhdGVyIiwibG92aWJvbmQiLCJrZXR0bGVUeXBlcyIsImNoYXJ0T3B0aW9ucyIsInNlbnNvclR5cGVzIiwic2hvd1NldHRpbmdzIiwiZXJyb3IiLCJtZXNzYWdlIiwidHlwZSIsInNsaWRlciIsIm1pbiIsIm9wdGlvbnMiLCJmbG9vciIsImNlaWwiLCJzdGVwIiwidHJhbnNsYXRlIiwidmFsdWUiLCJvbkVuZCIsImtldHRsZUlkIiwibW9kZWxWYWx1ZSIsImhpZ2hWYWx1ZSIsInBvaW50ZXJUeXBlIiwia2V0dGxlIiwic3BsaXQiLCJrIiwia2V0dGxlcyIsImhlYXRlciIsImNvb2xlciIsInB1bXAiLCJhY3RpdmUiLCJwd20iLCJydW5uaW5nIiwidG9nZ2xlUmVsYXkiLCJnZXRLZXR0bGVTbGlkZXJPcHRpb25zIiwiaW5kZXgiLCJPYmplY3QiLCJhc3NpZ24iLCJpZCIsImdldExvdmlib25kQ29sb3IiLCJyYW5nZSIsInJlcGxhY2UiLCJpbmRleE9mIiwickFyciIsInBhcnNlRmxvYXQiLCJsIiwiXyIsImZpbHRlciIsIml0ZW0iLCJzcm0iLCJoZXgiLCJsZW5ndGgiLCJzZXR0aW5ncyIsInJlc2V0IiwiZGVmYXVsdEtldHRsZXMiLCJzaGFyZSIsInBhcmFtcyIsImZpbGUiLCJwYXNzd29yZCIsIm5lZWRQYXNzd29yZCIsImFjY2VzcyIsImRlbGV0ZUFmdGVyIiwic3VtVmFsdWVzIiwib2JqIiwic3VtIiwidmFsdWVzIiwidXBkYXRlQUJWIiwicmVjaXBlIiwic2NhbGUiLCJtZXRob2QiLCJhYnYiLCJvZyIsImZnIiwiYWJ2YSIsImFidyIsImF0dGVudWF0aW9uIiwicGxhdG8iLCJjYWxvcmllcyIsInJlIiwic2ciLCJjaGFuZ2VNZXRob2QiLCJjaGFuZ2VTY2FsZSIsImdldFBvcnRSYW5nZSIsIm51bWJlciIsIkFycmF5IiwiZmlsbCIsIm1hcCIsImlkeCIsImFyZHVpbm9zIiwiYWRkIiwibm93IiwiRGF0ZSIsInB1c2giLCJidG9hIiwiYW5hbG9nIiwiZGlnaXRhbCIsImVhY2giLCJhcmR1aW5vIiwidXBkYXRlIiwiZGVsZXRlIiwic3BsaWNlIiwic2Vzc2lvbnMiLCJhY2NvdW50IiwiY3JlYXRlZCIsIm1vbWVudCIsInRwbGluayIsImxvZ2luIiwidXNlciIsInBhc3MiLCJ0aGVuIiwicmVzcG9uc2UiLCJ0b2tlbiIsInNjYW4iLCJkZXZpY2VMaXN0IiwicGx1Z3MiLCJhZGRLZXR0bGUiLCJrZXkiLCJmaW5kIiwic3RpY2t5IiwicGluIiwiYXV0byIsInRlbXAiLCJoaXQiLCJwcmV2aW91cyIsImFkanVzdCIsImRpZmYiLCJ0aW1lcnMiLCJrbm9iIiwiY29weSIsImRlZmF1bHRLbm9iT3B0aW9ucyIsIm1heCIsImhhc1N0aWNreUtldHRsZXMiLCJrZXR0bGVDb3VudCIsImFjdGl2ZUtldHRsZXMiLCJwaW5EaXNwbGF5IiwiZGV2aWNlSWQiLCJzdWJzdHIiLCJhbGlhcyIsInBpbkluVXNlIiwiY3JlYXRlU2hhcmUiLCJicmV3ZXIiLCJlbWFpbCIsInNoYXJlX3N0YXR1cyIsInNoYXJlX3N1Y2Nlc3MiLCJzaGFyZV9saW5rIiwiY2F0Y2giLCJlcnIiLCJzaGFyZVRlc3QiLCJ0ZXN0aW5nIiwiaHR0cF9jb2RlIiwicHVibGljIiwidGVzdEluZmx1eERCIiwiaW5mbHV4ZGIiLCJjb25uZWN0ZWQiLCJwaW5nIiwic3RhdHVzIiwiJCIsInJlbW92ZUNsYXNzIiwiYWRkQ2xhc3MiLCJjcmVhdGVJbmZsdXhEQiIsImRiIiwiZm9ybWF0IiwiY3JlYXRlREIiLCJkYXRhIiwicmVzdWx0cyIsInJlc2V0RXJyb3IiLCJzZXRFcnJvck1lc3NhZ2UiLCJzaGFyZUFjY2VzcyIsInNoYXJlZCIsImZyYW1lRWxlbWVudCIsImxvYWRTaGFyZUZpbGUiLCJjb250ZW50cyIsIm5vdGlmaWNhdGlvbnMiLCJvbiIsImhpZ2giLCJsb3ciLCJzbGFjayIsImxhc3QiLCJzdWJUZXh0IiwiZW5hYmxlZCIsInRleHQiLCJjb2xvciIsImZvbnQiLCJwcm9jZXNzVGVtcHMiLCJpbXBvcnRSZWNpcGUiLCIkZmlsZUNvbnRlbnQiLCIkZXh0IiwiZm9ybWF0dGVkX2NvbnRlbnQiLCJmb3JtYXRYTUwiLCJqc29uT2JqIiwieDJqcyIsIlgySlMiLCJ4bWxfc3RyMmpzb24iLCJyZWNpcGVfc3VjY2VzcyIsIlJlY2lwZXMiLCJEYXRhIiwiUmVjaXBlIiwiU2VsZWN0aW9ucyIsInJlY2lwZUJlZXJTbWl0aCIsIlJFQ0lQRVMiLCJSRUNJUEUiLCJyZWNpcGVCZWVyWE1MIiwiY2F0ZWdvcnkiLCJpYnUiLCJkYXRlIiwiZ3JhaW4iLCJhZGRUaW1lciIsImxhYmVsIiwibm90ZXMiLCJOdW1iZXIiLCJhbW91bnQiLCJob3AiLCJtaXNjIiwieWVhc3QiLCJsb2FkU3R5bGVzIiwic3R5bGVzIiwibG9hZENvbmZpZyIsInBrZyIsInNrZXRjaF92ZXJzaW9uIiwiYmJfdmVyc2lvbiIsInZlcnNpb24iLCJzb3J0QnkiLCJ1bmlxQnkiLCJhbGwiLCJpbml0IiwidGltZXIiLCJ0aW1lclN0YXJ0IiwicXVldWUiLCJ1cCIsInVwZGF0ZUtub2JDb3B5IiwidHJ1c3RBc0h0bWwiLCJrZXlzIiwiSlNPTiIsInBhcnNlIiwic3RhdHVzVGV4dCIsInN0cmluZ2lmeSIsImRvbWFpbiIsInVwZGF0ZVRlbXAiLCJ0ZW1wcyIsInVuaXQiLCJNYXRoIiwicm91bmQiLCJodW1pZGl0eSIsImdldFRpbWUiLCJhbGVydCIsImdldE5hdk9mZnNldCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJvZmZzZXRIZWlnaHQiLCJzZWMiLCJyZW1vdmVUaW1lcnMiLCJidG4iLCJoYXNDbGFzcyIsInBhcmVudCIsInRvZ2dsZVBXTSIsInNzciIsInRvZ2dsZUtldHRsZSIsImtub2JDbGljayIsInN0YXJ0U3RvcEtldHRsZSIsInJlYWRPbmx5IiwiZGV2aWNlIiwiZHV0eUN5Y2xlIiwib2ZmIiwiaW1wb3J0U2V0dGluZ3MiLCJwcm9maWxlQ29udGVudCIsImV4cG9ydFNldHRpbmdzIiwiaSIsImVuY29kZVVSSUNvbXBvbmVudCIsImRvd25sb2FkSW5mbHV4REJTa2V0Y2giLCJjb25uZWN0aW9uX3N0cmluZyIsInBvcnQiLCJnZXQiLCJmcmVxdWVuY3kiLCJwYXJzZUludCIsInN0cmVhbVNrZXRjaCIsImNyZWF0ZUVsZW1lbnQiLCJzZXRBdHRyaWJ1dGUiLCJjbGljayIsImRvd25sb2FkU3RyZWFtc1NrZXRjaCIsInNlc3Npb25JZCIsImFwaUtleSIsImdldElQQWRkcmVzcyIsImlwQWRkcmVzcyIsImlwIiwiaWNvbiIsIm5hdmlnYXRvciIsInZpYnJhdGUiLCJzb3VuZHMiLCJzbmQiLCJBdWRpbyIsInBsYXkiLCJjbG9zZSIsIk5vdGlmaWNhdGlvbiIsInBlcm1pc3Npb24iLCJib2R5IiwicmVxdWVzdFBlcm1pc3Npb24iLCJ0cmFja0NvbG9yIiwiYmFyQ29sb3IiLCJjaGFuZ2VLZXR0bGVUeXBlIiwia2V0dGxlSW5kZXgiLCJmaW5kSW5kZXgiLCJrZXR0bGVUeXBlIiwiY2hhbmdlVW5pdHMiLCJ0aW1lclJ1biIsIm5leHRUaW1lciIsImNhbmNlbCIsImludGVydmFsIiwiYWxsU2Vuc29ycyIsInBvbGxTZWNvbmRzIiwiY2hhbmdlVmFsdWUiLCJmaWVsZCIsImxvYWRlZCIsIiR3YXRjaCIsIm5ld1ZhbHVlIiwib2xkVmFsdWUiLCJkaXJlY3RpdmUiLCJyZXN0cmljdCIsInNjb3BlIiwibW9kZWwiLCJ0cmltIiwiY2hhbmdlIiwiZW50ZXIiLCJwbGFjZWhvbGRlciIsInRlbXBsYXRlIiwibGluayIsImF0dHJzIiwiZWRpdCIsImJpbmQiLCIkYXBwbHkiLCJjaGFyQ29kZSIsImtleUNvZGUiLCJuZ0VudGVyIiwiJHBhcnNlIiwiZm4iLCJvblJlYWRGaWxlIiwib25DaGFuZ2VFdmVudCIsInJlYWRlciIsIkZpbGVSZWFkZXIiLCJzcmNFbGVtZW50IiwiZmlsZXMiLCJleHRlbnNpb24iLCJwb3AiLCJ0b0xvd2VyQ2FzZSIsIm9ubG9hZCIsIm9uTG9hZEV2ZW50IiwicmVzdWx0IiwidmFsIiwicmVhZEFzVGV4dCIsInRvU3RyaW5nIiwiZnJvbU5vdyIsImNlbHNpdXMiLCJmYWhyZW5oZWl0IiwicGhyYXNlIiwiUmVnRXhwIiwiZmFjdG9yeSIsImxvY2FsU3RvcmFnZSIsInJlbW92ZUl0ZW0iLCJsYXlvdXQiLCJzZWN1cmUiLCJ0cmFja1dpZHRoIiwiYmFyV2lkdGgiLCJiYXJDYXAiLCJkeW5hbWljT3B0aW9ucyIsImRpc3BsYXlQcmV2aW91cyIsInByZXZCYXJDb2xvciIsInNldEl0ZW0iLCJnZXRJdGVtIiwic2Vuc29ycyIsIndlYmhvb2tfdXJsIiwibXNnIiwicSIsImRlZmVyIiwicG9zdE9iaiIsImhvc3QiLCJyZXNvbHZlIiwicmVqZWN0IiwicHJvbWlzZSIsIkF1dGhvcml6YXRpb24iLCJzZW5zb3IiLCJkaWdpdGFsUmVhZCIsInF1ZXJ5IiwibWQ1Iiwic2giLCJhcHBOYW1lIiwidGVybUlEIiwiYXBwVmVyIiwib3NwZiIsIm5ldFR5cGUiLCJsb2NhbGUiLCJsb2dpbl9wYXlsb2FkIiwiY29tbWFuZCIsInBheWxvYWQiLCJhcHBTZXJ2ZXJVcmwiLCJpbmZsdXhDb25uZWN0aW9uIiwiY2hhcnQiLCJub0RhdGEiLCJoZWlnaHQiLCJtYXJnaW4iLCJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiLCJ4IiwiZCIsInkiLCJkMyIsImNhdGVnb3J5MTAiLCJkdXJhdGlvbiIsInVzZUludGVyYWN0aXZlR3VpZGVsaW5lIiwiY2xpcFZvcm9ub2kiLCJ4QXhpcyIsImF4aXNMYWJlbCIsInRpY2tGb3JtYXQiLCJ0aW1lIiwib3JpZW50IiwidGlja1BhZGRpbmciLCJheGlzTGFiZWxEaXN0YW5jZSIsInN0YWdnZXJMYWJlbHMiLCJmb3JjZVkiLCJ5QXhpcyIsInNob3dNYXhNaW4iLCJ0b0ZpeGVkIiwib3AiLCJmcCIsInBvdyIsInN1YnN0cmluZyIsIkZfUl9OQU1FIiwiRl9SX1NUWUxFIiwiRl9TX0NBVEVHT1JZIiwiRl9SX0RBVEUiLCJGX1JfQlJFV0VSIiwiRl9TX01BWF9PRyIsIkZfU19NSU5fT0ciLCJGX1NfTUFYX0ZHIiwiRl9TX01JTl9GRyIsIkZfU19NQVhfQUJWIiwiRl9TX01JTl9BQlYiLCJGX1NfTUFYX0lCVSIsIkZfU19NSU5fSUJVIiwiSW5ncmVkaWVudHMiLCJHcmFpbiIsIkZfR19OQU1FIiwiRl9HX0JPSUxfVElNRSIsIkZfR19BTU9VTlQiLCJIb3BzIiwiRl9IX05BTUUiLCJGX0hfRFJZX0hPUF9USU1FIiwiRl9IX0JPSUxfVElNRSIsIkZfSF9BTU9VTlQiLCJNaXNjIiwiRl9NX05BTUUiLCJGX01fVElNRSIsIkZfTV9BTU9VTlQiLCJZZWFzdCIsIkZfWV9MQUIiLCJGX1lfUFJPRFVDVF9JRCIsIkZfWV9OQU1FIiwibWFzaF90aW1lIiwiTkFNRSIsIlNUWUxFIiwiQ0FURUdPUlkiLCJCUkVXRVIiLCJPRyIsIkZHIiwiSUJVIiwiQUJWX01BWCIsIkFCVl9NSU4iLCJNQVNIIiwiTUFTSF9TVEVQUyIsIk1BU0hfU1RFUCIsIlNURVBfVElNRSIsIkZFUk1FTlRBQkxFUyIsIkZFUk1FTlRBQkxFIiwiQU1PVU5UIiwiSE9QUyIsIkhPUCIsIkZPUk0iLCJVU0UiLCJUSU1FIiwiTUlTQ1MiLCJNSVNDIiwiWUVBU1RTIiwiWUVBU1QiLCJjb250ZW50IiwiaHRtbGNoYXJzIiwiZiIsInIiLCJjaGFyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUVBLGtCQUFRQSxNQUFSLENBQWUsbUJBQWYsRUFBb0MsQ0FDbEMsV0FEa0MsRUFFakMsTUFGaUMsRUFHakMsU0FIaUMsRUFJakMsVUFKaUMsRUFLakMsU0FMaUMsRUFNakMsVUFOaUMsQ0FBcEMsRUFRQ0MsTUFSRCxDQVFRLFVBQVNDLGNBQVQsRUFBeUJDLGtCQUF6QixFQUE2Q0MsYUFBN0MsRUFBNERDLGlCQUE1RCxFQUErRUMsZ0JBQS9FLEVBQWlHOztBQUV2R0YsZ0JBQWNHLFFBQWQsQ0FBdUJDLFVBQXZCLEdBQW9DLElBQXBDO0FBQ0FKLGdCQUFjRyxRQUFkLENBQXVCRSxPQUF2QixDQUErQkMsTUFBL0IsR0FBd0MsZ0NBQXhDO0FBQ0EsU0FBT04sY0FBY0csUUFBZCxDQUF1QkUsT0FBdkIsQ0FBK0JDLE1BQS9CLENBQXNDLGtCQUF0QyxDQUFQOztBQUVBTCxvQkFBa0JNLFVBQWxCLENBQTZCLEVBQTdCO0FBQ0FMLG1CQUFpQk0sMEJBQWpCLENBQTRDLG9FQUE1Qzs7QUFFQVYsaUJBQ0dXLEtBREgsQ0FDUyxNQURULEVBQ2lCO0FBQ2JDLFNBQUssRUFEUTtBQUViQyxpQkFBYSxvQkFGQTtBQUdiQyxnQkFBWTtBQUhDLEdBRGpCLEVBTUdILEtBTkgsQ0FN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LEVBelFjLEVBMFFkLEVBQUNELEdBQUcsUUFBSixFQUFjQyxHQUFHLEdBQWpCLEVBMVFjLEVBMlFkLEVBQUNELEdBQUcsUUFBSixFQUFjQyxHQUFHLEdBQWpCLEVBM1FjLEVBNFFkLEVBQUNELEdBQUcsUUFBSixFQUFjQyxHQUFHLEdBQWpCLEVBNVFjLEVBNlFkLEVBQUNELEdBQUcsUUFBSixFQUFjQyxHQUFHLEdBQWpCLEVBN1FjLEVBOFFkLEVBQUNELEdBQUcsUUFBSixFQUFjQyxHQUFHLEdBQWpCLEVBOVFjLEVBK1FkLEVBQUNELEdBQUcsUUFBSixFQUFjQyxHQUFHLEdBQWpCLEVBL1FjLEVBZ1JkLEVBQUNELEdBQUcsUUFBSixFQUFjQyxHQUFHLEdBQWpCLEVBaFJjLEVBaVJkLEVBQUNELEdBQUcsUUFBSixFQUFjQyxHQUFHLEdBQWpCLEVBalJjLEVBa1JkLEVBQUNELEdBQUcsUUFBSixFQUFjQyxHQUFHLEdBQWpCLEVBbFJjLEVBbVJkLEVBQUNELEdBQUcsUUFBSixFQUFjQyxHQUFHLEdBQWpCLEVBblJjLEVBb1JkLEVBQUNELEdBQUcsUUFBSixFQUFjQyxHQUFHLEdBQWpCLEVBcFJjLEVBcVJkLEVBQUNELEdBQUcsUUFBSixFQUFjQyxHQUFHLEdBQWpCLEVBclJjLEVBc1JkLEVBQUNELEdBQUcsUUFBSixFQUFjQyxHQUFHLEdBQWpCLEVBdFJjLEVBdVJkLEVBQUNELEdBQUcsUUFBSixFQUFjQyxHQUFHLEdBQWpCLEVBdlJjLEVBd1JkLEVBQUNELEdBQUcsUUFBSixFQUFjQyxHQUFHLEdBQWpCLEVBeFJjLEVBeVJkLEVBQUNELEdBQUcsUUFBSixFQUFjQyxHQUFHLEdBQWpCLEVBelJjLEVBMFJkLEVBQUNELEdBQUcsUUFBSixFQUFjQyxHQUFHLEdBQWpCLEVBMVJjLEVBMlJkLEVBQUNELEdBQUcsUUFBSixFQUFjQyxHQUFHLEdBQWpCLEVBM1JjLEVBNFJkLEVBQUNELEdBQUcsU0FBSixFQUFlQyxHQUFHLEdBQWxCLEVBNVJjLEVBNlJkLEVBQUNELEdBQUcsU0FBSixFQUFlQyxHQUFHLEdBQWxC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RUF3ZmQsRUFBQ0QsR0FBRyxPQUFKLEVBQWFDLEdBQUcsS0FBaEIsRUF4ZmMsRUF5ZmQsRUFBQ0QsR0FBRyxTQUFKLEVBQWVDLEdBQUcsR0FBbEIsRUF6ZmMsRUEwZmQsRUFBQ0QsR0FBRyxTQUFKLEVBQWVDLEdBQUcsR0FBbEIsRUExZmMsRUEyZmQsRUFBQ0QsR0FBRyxTQUFKLEVBQWVDLEdBQUcsR0FBbEIsRUEzZmMsQ0FBaEI7O0FBOGZBeGIsUUFBRWtELElBQUYsQ0FBT29ZLFNBQVAsRUFBa0IsVUFBU0csSUFBVCxFQUFlO0FBQy9CLFlBQUdKLFFBQVF6YixPQUFSLENBQWdCNmIsS0FBS0YsQ0FBckIsTUFBNEIsQ0FBQyxDQUFoQyxFQUFrQztBQUNoQ0Ysb0JBQVVBLFFBQVExYixPQUFSLENBQWdCd1QsT0FBT3NJLEtBQUtGLENBQVosRUFBYyxHQUFkLENBQWhCLEVBQW9DRSxLQUFLRCxDQUF6QyxDQUFWO0FBQ0Q7QUFDRixPQUpEO0FBS0EsYUFBT0gsT0FBUDtBQUNEO0FBbDBDSSxHQUFQO0FBbzBDRCxDQXYwQ0QsRSIsImZpbGUiOiJqcy9tYWluLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFuZ3VsYXIgZnJvbSAnYW5ndWxhcic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICdib290c3RyYXAnO1xuXG5hbmd1bGFyLm1vZHVsZSgnYnJld2JlbmNoLW1vbml0b3InLCBbXG4gICd1aS5yb3V0ZXInXG4gICwnbnZkMydcbiAgLCduZ1RvdWNoJ1xuICAsJ2R1U2Nyb2xsJ1xuICAsJ3VpLmtub2InXG4gICwncnpNb2R1bGUnXG5dKVxuLmNvbmZpZyhmdW5jdGlvbigkc3RhdGVQcm92aWRlciwgJHVybFJvdXRlclByb3ZpZGVyLCAkaHR0cFByb3ZpZGVyLCAkbG9jYXRpb25Qcm92aWRlciwgJGNvbXBpbGVQcm92aWRlcikge1xuXG4gICRodHRwUHJvdmlkZXIuZGVmYXVsdHMudXNlWERvbWFpbiA9IHRydWU7XG4gICRodHRwUHJvdmlkZXIuZGVmYXVsdHMuaGVhZGVycy5jb21tb24gPSAnQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uJztcbiAgZGVsZXRlICRodHRwUHJvdmlkZXIuZGVmYXVsdHMuaGVhZGVycy5jb21tb25bJ1gtUmVxdWVzdGVkLVdpdGgnXTtcblxuICAkbG9jYXRpb25Qcm92aWRlci5oYXNoUHJlZml4KCcnKTtcbiAgJGNvbXBpbGVQcm92aWRlci5hSHJlZlNhbml0aXphdGlvbldoaXRlbGlzdCgvXlxccyooaHR0cHM/fGZ0cHxtYWlsdG98dGVsfGZpbGV8YmxvYnxjaHJvbWUtZXh0ZW5zaW9ufGRhdGF8bG9jYWwpOi8pO1xuXG4gICRzdGF0ZVByb3ZpZGVyXG4gICAgLnN0YXRlKCdob21lJywge1xuICAgICAgdXJsOiAnJyxcbiAgICAgIHRlbXBsYXRlVXJsOiAndmlld3MvbW9uaXRvci5odG1sJyxcbiAgICAgIGNvbnRyb2xsZXI6ICdtYWluQ3RybCdcbiAgICB9KVxuICAgIC5zdGF0ZSgnc2hhcmUnLCB7XG4gICAgICB1cmw6ICcvc2gvOmZpbGUnLFxuICAgICAgdGVtcGxhdGVVcmw6ICd2aWV3cy9tb25pdG9yLmh0bWwnLFxuICAgICAgY29udHJvbGxlcjogJ21haW5DdHJsJ1xuICAgIH0pXG4gICAgLnN0YXRlKCdyZXNldCcsIHtcbiAgICAgIHVybDogJy9yZXNldCcsXG4gICAgICB0ZW1wbGF0ZVVybDogJ3ZpZXdzL21vbml0b3IuaHRtbCcsXG4gICAgICBjb250cm9sbGVyOiAnbWFpbkN0cmwnXG4gICAgfSlcbiAgICAuc3RhdGUoJ290aGVyd2lzZScsIHtcbiAgICAgdXJsOiAnKnBhdGgnLFxuICAgICB0ZW1wbGF0ZVVybDogJ3ZpZXdzL25vdC1mb3VuZC5odG1sJ1xuICAgfSk7XG5cbn0pO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2pzL2FwcC5qcyIsImFuZ3VsYXIubW9kdWxlKCdicmV3YmVuY2gtbW9uaXRvcicpXG4uY29udHJvbGxlcignbWFpbkN0cmwnLCBmdW5jdGlvbigkc2NvcGUsICRzdGF0ZSwgJGZpbHRlciwgJHRpbWVvdXQsICRpbnRlcnZhbCwgJHEsICRodHRwLCAkc2NlLCBCcmV3U2VydmljZSl7XG5cbiRzY29wZS5jbGVhclNldHRpbmdzID0gZnVuY3Rpb24oZSl7XG4gIGlmKGUpe1xuICAgIGFuZ3VsYXIuZWxlbWVudChlLnRhcmdldCkuaHRtbCgnUmVtb3ZpbmcuLi4nKTtcbiAgfVxuICBCcmV3U2VydmljZS5jbGVhcigpO1xuICAkdGltZW91dChmdW5jdGlvbigpe1xuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmPScvJztcbiAgfSwxMDAwKTtcbn07XG5cbmlmKCAkc3RhdGUuY3VycmVudC5uYW1lID09ICdyZXNldCcpXG4gICRzY29wZS5jbGVhclNldHRpbmdzKCk7XG5cbnZhciBub3RpZmljYXRpb24gPSBudWxsXG4gICxyZXNldENoYXJ0ID0gMTAwXG4gICx0aW1lb3V0ID0gbnVsbDsvL3Jlc2V0IGNoYXJ0IGFmdGVyIDEwMCBwb2xsc1xuXG4kc2NvcGUuaG9wcztcbiRzY29wZS5ncmFpbnM7XG4kc2NvcGUud2F0ZXI7XG4kc2NvcGUubG92aWJvbmQ7XG4kc2NvcGUua2V0dGxlVHlwZXMgPSBCcmV3U2VydmljZS5rZXR0bGVUeXBlcygpO1xuJHNjb3BlLmNoYXJ0T3B0aW9ucyA9IEJyZXdTZXJ2aWNlLmNoYXJ0T3B0aW9ucygpO1xuJHNjb3BlLnNlbnNvclR5cGVzID0gQnJld1NlcnZpY2Uuc2Vuc29yVHlwZXM7XG4kc2NvcGUuc2hvd1NldHRpbmdzID0gdHJ1ZTtcbiRzY29wZS5lcnJvciA9IHttZXNzYWdlOiAnJywgdHlwZTogJ2Rhbmdlcid9O1xuJHNjb3BlLnNsaWRlciA9IHtcbiAgbWluOiAwLFxuICBvcHRpb25zOiB7XG4gICAgZmxvb3I6IDAsXG4gICAgY2VpbDogMTAwLFxuICAgIHN0ZXA6IDUsXG4gICAgdHJhbnNsYXRlOiBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gYCR7dmFsdWV9JWA7XG4gICAgfSxcbiAgICBvbkVuZDogZnVuY3Rpb24oa2V0dGxlSWQsIG1vZGVsVmFsdWUsIGhpZ2hWYWx1ZSwgcG9pbnRlclR5cGUpe1xuICAgICAgdmFyIGtldHRsZSA9IGtldHRsZUlkLnNwbGl0KCdfJyk7XG4gICAgICB2YXIgaztcblxuICAgICAgc3dpdGNoIChrZXR0bGVbMF0pIHtcbiAgICAgICAgY2FzZSAnaGVhdCc6XG4gICAgICAgICAgayA9ICRzY29wZS5rZXR0bGVzW2tldHRsZVsxXV0uaGVhdGVyO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdjb29sJzpcbiAgICAgICAgICBrID0gJHNjb3BlLmtldHRsZXNba2V0dGxlWzFdXS5jb29sZXI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3B1bXAnOlxuICAgICAgICAgIGsgPSAkc2NvcGUua2V0dGxlc1trZXR0bGVbMV1dLnB1bXA7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmKCFrKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZigkc2NvcGUua2V0dGxlc1trZXR0bGVbMV1dLmFjdGl2ZSAmJiBrLnB3bSAmJiBrLnJ1bm5pbmcpe1xuICAgICAgICByZXR1cm4gJHNjb3BlLnRvZ2dsZVJlbGF5KCRzY29wZS5rZXR0bGVzW2tldHRsZVsxXV0sIGssIHRydWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuJHNjb3BlLmdldEtldHRsZVNsaWRlck9wdGlvbnMgPSBmdW5jdGlvbih0eXBlLCBpbmRleCl7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKCRzY29wZS5zbGlkZXIub3B0aW9ucywge2lkOiBgJHt0eXBlfV8ke2luZGV4fWB9KTtcbn1cblxuJHNjb3BlLmdldExvdmlib25kQ29sb3IgPSBmdW5jdGlvbihyYW5nZSl7XG4gIHJhbmdlID0gcmFuZ2UucmVwbGFjZSgvwrAvZywnJykucmVwbGFjZSgvIC9nLCcnKTtcbiAgaWYocmFuZ2UuaW5kZXhPZignLScpIT09LTEpe1xuICAgIHZhciByQXJyPXJhbmdlLnNwbGl0KCctJyk7XG4gICAgcmFuZ2UgPSAocGFyc2VGbG9hdChyQXJyWzBdKStwYXJzZUZsb2F0KHJBcnJbMV0pKS8yO1xuICB9IGVsc2Uge1xuICAgIHJhbmdlID0gcGFyc2VGbG9hdChyYW5nZSk7XG4gIH1cbiAgaWYoIXJhbmdlKVxuICAgIHJldHVybiAnJztcbiAgdmFyIGwgPSBfLmZpbHRlcigkc2NvcGUubG92aWJvbmQsIGZ1bmN0aW9uKGl0ZW0pe1xuICAgIHJldHVybiAoaXRlbS5zcm0gPD0gcmFuZ2UpID8gaXRlbS5oZXggOiAnJztcbiAgfSk7XG4gIGlmKCEhbC5sZW5ndGgpXG4gICAgcmV0dXJuIGxbbC5sZW5ndGgtMV0uaGV4O1xuICByZXR1cm4gJyc7XG59O1xuXG4vL2RlZmF1bHQgc2V0dGluZ3MgdmFsdWVzXG4kc2NvcGUuc2V0dGluZ3MgPSBCcmV3U2VydmljZS5zZXR0aW5ncygnc2V0dGluZ3MnKSB8fCBCcmV3U2VydmljZS5yZXNldCgpO1xuJHNjb3BlLmtldHRsZXMgPSBCcmV3U2VydmljZS5zZXR0aW5ncygna2V0dGxlcycpIHx8IEJyZXdTZXJ2aWNlLmRlZmF1bHRLZXR0bGVzKCk7XG4kc2NvcGUuc2hhcmUgPSAoISRzdGF0ZS5wYXJhbXMuZmlsZSAmJiBCcmV3U2VydmljZS5zZXR0aW5ncygnc2hhcmUnKSkgPyBCcmV3U2VydmljZS5zZXR0aW5ncygnc2hhcmUnKSA6IHtcbiAgICAgIGZpbGU6ICRzdGF0ZS5wYXJhbXMuZmlsZSB8fCBudWxsXG4gICAgICAsIHBhc3N3b3JkOiBudWxsXG4gICAgICAsIG5lZWRQYXNzd29yZDogZmFsc2VcbiAgICAgICwgYWNjZXNzOiAncmVhZE9ubHknXG4gICAgICAsIGRlbGV0ZUFmdGVyOiAxNFxuICB9O1xuXG4kc2NvcGUuc3VtVmFsdWVzID0gZnVuY3Rpb24ob2JqKXtcbiAgcmV0dXJuIF8uc3VtKF8udmFsdWVzKG9iaikpO1xufVxuXG4vLyBpbml0IGNhbGMgdmFsdWVzXG4kc2NvcGUudXBkYXRlQUJWID0gZnVuY3Rpb24oKXtcbiAgaWYoJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5zY2FsZT09J2dyYXZpdHknKXtcbiAgICBpZigkc2NvcGUuc2V0dGluZ3MucmVjaXBlLm1ldGhvZD09J3BhcGF6aWFuJylcbiAgICAgICRzY29wZS5zZXR0aW5ncy5yZWNpcGUuYWJ2ID0gQnJld1NlcnZpY2UuYWJ2KCRzY29wZS5zZXR0aW5ncy5yZWNpcGUub2csJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5mZyk7XG4gICAgZWxzZVxuICAgICAgJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5hYnYgPSBCcmV3U2VydmljZS5hYnZhKCRzY29wZS5zZXR0aW5ncy5yZWNpcGUub2csJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5mZyk7XG4gICAgJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5hYncgPSBCcmV3U2VydmljZS5hYncoJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5hYnYsJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5mZyk7XG4gICAgJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5hdHRlbnVhdGlvbiA9IEJyZXdTZXJ2aWNlLmF0dGVudWF0aW9uKEJyZXdTZXJ2aWNlLnBsYXRvKCRzY29wZS5zZXR0aW5ncy5yZWNpcGUub2cpLEJyZXdTZXJ2aWNlLnBsYXRvKCRzY29wZS5zZXR0aW5ncy5yZWNpcGUuZmcpKTtcbiAgICAkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmNhbG9yaWVzID0gQnJld1NlcnZpY2UuY2Fsb3JpZXMoJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5hYndcbiAgICAgICxCcmV3U2VydmljZS5yZShCcmV3U2VydmljZS5wbGF0bygkc2NvcGUuc2V0dGluZ3MucmVjaXBlLm9nKSxCcmV3U2VydmljZS5wbGF0bygkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmZnKSlcbiAgICAgICwkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmZnKTtcbiAgfSBlbHNlIHtcbiAgICBpZigkc2NvcGUuc2V0dGluZ3MucmVjaXBlLm1ldGhvZD09J3BhcGF6aWFuJylcbiAgICAgICRzY29wZS5zZXR0aW5ncy5yZWNpcGUuYWJ2ID0gQnJld1NlcnZpY2UuYWJ2KEJyZXdTZXJ2aWNlLnNnKCRzY29wZS5zZXR0aW5ncy5yZWNpcGUub2cpLEJyZXdTZXJ2aWNlLnNnKCRzY29wZS5zZXR0aW5ncy5yZWNpcGUuZmcpKTtcbiAgICBlbHNlXG4gICAgICAkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmFidiA9IEJyZXdTZXJ2aWNlLmFidmEoQnJld1NlcnZpY2Uuc2coJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5vZyksQnJld1NlcnZpY2Uuc2coJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5mZykpO1xuICAgICRzY29wZS5zZXR0aW5ncy5yZWNpcGUuYWJ3ID0gQnJld1NlcnZpY2UuYWJ3KCRzY29wZS5zZXR0aW5ncy5yZWNpcGUuYWJ2LEJyZXdTZXJ2aWNlLnNnKCRzY29wZS5zZXR0aW5ncy5yZWNpcGUuZmcpKTtcbiAgICAkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmF0dGVudWF0aW9uID0gQnJld1NlcnZpY2UuYXR0ZW51YXRpb24oJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5vZywkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmZnKTtcbiAgICAkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmNhbG9yaWVzID0gQnJld1NlcnZpY2UuY2Fsb3JpZXMoJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5hYndcbiAgICAgICxCcmV3U2VydmljZS5yZSgkc2NvcGUuc2V0dGluZ3MucmVjaXBlLm9nLCRzY29wZS5zZXR0aW5ncy5yZWNpcGUuZmcpXG4gICAgICAsQnJld1NlcnZpY2Uuc2coJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5mZykpO1xuICB9XG59O1xuXG4kc2NvcGUuY2hhbmdlTWV0aG9kID0gZnVuY3Rpb24obWV0aG9kKXtcbiAgJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5tZXRob2QgPSBtZXRob2Q7XG4gICRzY29wZS51cGRhdGVBQlYoKTtcbn07XG5cbiRzY29wZS5jaGFuZ2VTY2FsZSA9IGZ1bmN0aW9uKHNjYWxlKXtcbiAgJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5zY2FsZSA9IHNjYWxlO1xuICBpZihzY2FsZT09J2dyYXZpdHknKXtcbiAgICAkc2NvcGUuc2V0dGluZ3MucmVjaXBlLm9nID0gQnJld1NlcnZpY2Uuc2coJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5vZyk7XG4gICAgJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5mZyA9IEJyZXdTZXJ2aWNlLnNnKCRzY29wZS5zZXR0aW5ncy5yZWNpcGUuZmcpO1xuICB9IGVsc2Uge1xuICAgICRzY29wZS5zZXR0aW5ncy5yZWNpcGUub2cgPSBCcmV3U2VydmljZS5wbGF0bygkc2NvcGUuc2V0dGluZ3MucmVjaXBlLm9nKTtcbiAgICAkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmZnID0gQnJld1NlcnZpY2UucGxhdG8oJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5mZyk7XG4gIH1cbn07XG5cbiRzY29wZS51cGRhdGVBQlYoKTtcblxuICAkc2NvcGUuZ2V0UG9ydFJhbmdlID0gZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgIG51bWJlcisrO1xuICAgICAgcmV0dXJuIEFycmF5KG51bWJlcikuZmlsbCgpLm1hcCgoXywgaWR4KSA9PiAwICsgaWR4KTtcbiAgfTtcblxuICAkc2NvcGUuYXJkdWlub3MgPSB7XG4gICAgYWRkOiAoKSA9PiB7XG4gICAgICBsZXQgbm93ID0gbmV3IERhdGUoKTtcbiAgICAgIGlmKCEkc2NvcGUuc2V0dGluZ3MuYXJkdWlub3MpICRzY29wZS5zZXR0aW5ncy5hcmR1aW5vcyA9IFtdO1xuICAgICAgJHNjb3BlLnNldHRpbmdzLmFyZHVpbm9zLnB1c2goe1xuICAgICAgICBpZDogYnRvYShub3crJycrJHNjb3BlLnNldHRpbmdzLmFyZHVpbm9zLmxlbmd0aCsxKSxcbiAgICAgICAgdXJsOiAnYXJkdWluby5sb2NhbCcsXG4gICAgICAgIGFuYWxvZzogNSxcbiAgICAgICAgZGlnaXRhbDogMTNcbiAgICAgIH0pO1xuICAgICAgXy5lYWNoKCRzY29wZS5rZXR0bGVzLCBrZXR0bGUgPT4ge1xuICAgICAgICBpZigha2V0dGxlLmFyZHVpbm8pXG4gICAgICAgICAga2V0dGxlLmFyZHVpbm8gPSAkc2NvcGUuc2V0dGluZ3MuYXJkdWlub3NbMF07XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHVwZGF0ZTogKGFyZHVpbm8pID0+IHtcbiAgICAgIF8uZWFjaCgkc2NvcGUua2V0dGxlcywga2V0dGxlID0+IHtcbiAgICAgICAgaWYoa2V0dGxlLmFyZHVpbm8gJiYga2V0dGxlLmFyZHVpbm8uaWQgPT0gYXJkdWluby5pZClcbiAgICAgICAgICBrZXR0bGUuYXJkdWlubyA9IGFyZHVpbm87XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGRlbGV0ZTogKGluZGV4LCBhcmR1aW5vKSA9PiB7XG4gICAgICAkc2NvcGUuc2V0dGluZ3MuYXJkdWlub3Muc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIF8uZWFjaCgkc2NvcGUua2V0dGxlcywga2V0dGxlID0+IHtcbiAgICAgICAgaWYoa2V0dGxlLmFyZHVpbm8gJiYga2V0dGxlLmFyZHVpbm8uaWQgPT0gYXJkdWluby5pZClcbiAgICAgICAgICBkZWxldGUga2V0dGxlLmFyZHVpbm87XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgJHNjb3BlLnNlc3Npb25zID0ge1xuICAgIGFkZDogKCkgPT4ge1xuICAgICAgbGV0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgICBpZighJHNjb3BlLnNldHRpbmdzLmFjY291bnQuc2Vzc2lvbnMpICRzY29wZS5zZXR0aW5ncy5hY2NvdW50LnNlc3Npb25zID0gW107XG4gICAgICAkc2NvcGUuc2V0dGluZ3MuYWNjb3VudC5zZXNzaW9ucy5wdXNoKHtcbiAgICAgICAgaWQ6IGJ0b2Eobm93KycnKyRzY29wZS5zZXR0aW5ncy5hcmR1aW5vcy5sZW5ndGgrMSksXG4gICAgICAgIG5hbWU6ICdTZXNzaW9uIE5hbWUnLFxuICAgICAgICBjcmVhdGVkOiBtb21lbnQoKVxuICAgICAgfSk7XG4gICAgfSxcbiAgICB1cGRhdGU6IChhcmR1aW5vKSA9PiB7XG5cbiAgICB9LFxuICAgIGRlbGV0ZTogKGluZGV4LCBhcmR1aW5vKSA9PiB7XG5cbiAgICB9XG4gIH07XG5cbiAgJHNjb3BlLnRwbGluayA9IHtcbiAgICBsb2dpbjogKCkgPT4ge1xuICAgICAgQnJld1NlcnZpY2UudHBsaW5rKCkubG9naW4oJHNjb3BlLnNldHRpbmdzLnRwbGluay51c2VyLCRzY29wZS5zZXR0aW5ncy50cGxpbmsucGFzcylcbiAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgIGlmKHJlc3BvbnNlLnRva2VuKXtcbiAgICAgICAgICAgICRzY29wZS5zZXR0aW5ncy50cGxpbmsudG9rZW4gPSByZXNwb25zZS50b2tlbjtcbiAgICAgICAgICAgICRzY29wZS50cGxpbmsuc2NhbihyZXNwb25zZS50b2tlbik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9LFxuICAgIHNjYW46ICgpID0+IHtcbiAgICAgIEJyZXdTZXJ2aWNlLnRwbGluaygpLnNjYW4oKS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgaWYocmVzcG9uc2UuZGV2aWNlTGlzdClcbiAgICAgICAgICAkc2NvcGUuc2V0dGluZ3MudHBsaW5rLnBsdWdzID0gcmVzcG9uc2UuZGV2aWNlTGlzdDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICAkc2NvcGUuYWRkS2V0dGxlID0gZnVuY3Rpb24odHlwZSl7XG4gICAgaWYoISRzY29wZS5rZXR0bGVzKSAkc2NvcGUua2V0dGxlcyA9IFtdO1xuICAgICRzY29wZS5rZXR0bGVzLnB1c2goe1xuICAgICAgICBrZXk6IHR5cGUgPyBfLmZpbmQoJHNjb3BlLmtldHRsZVR5cGVzLHt0eXBlOiB0eXBlfSkubmFtZSA6ICRzY29wZS5rZXR0bGVUeXBlc1swXS5uYW1lXG4gICAgICAgICx0eXBlOiB0eXBlIHx8ICRzY29wZS5rZXR0bGVUeXBlc1swXS50eXBlXG4gICAgICAgICxhY3RpdmU6IGZhbHNlXG4gICAgICAgICxzdGlja3k6IGZhbHNlXG4gICAgICAgICxoZWF0ZXI6IHtwaW46J0Q2JyxydW5uaW5nOmZhbHNlLGF1dG86ZmFsc2V9XG4gICAgICAgICxwdW1wOiB7cGluOidENycscnVubmluZzpmYWxzZSxhdXRvOmZhbHNlfVxuICAgICAgICAsdGVtcDoge3BpbjonQTAnLHR5cGU6J1RoZXJtaXN0b3InLGhpdDpmYWxzZSxjdXJyZW50OjAscHJldmlvdXM6MCxhZGp1c3Q6MCx0YXJnZXQ6JHNjb3BlLmtldHRsZVR5cGVzWzBdLnRhcmdldCxkaWZmOiRzY29wZS5rZXR0bGVUeXBlc1swXS5kaWZmfVxuICAgICAgICAsdmFsdWVzOiBbXVxuICAgICAgICAsdGltZXJzOiBbXVxuICAgICAgICAsa25vYjogYW5ndWxhci5jb3B5KEJyZXdTZXJ2aWNlLmRlZmF1bHRLbm9iT3B0aW9ucygpLHt2YWx1ZTowLG1pbjowLG1heDokc2NvcGUua2V0dGxlVHlwZXNbMF0udGFyZ2V0KyRzY29wZS5rZXR0bGVUeXBlc1swXS5kaWZmfSlcbiAgICAgICAgLGFyZHVpbm86ICRzY29wZS5zZXR0aW5ncy5hcmR1aW5vcy5sZW5ndGggPyAkc2NvcGUuc2V0dGluZ3MuYXJkdWlub3NbMF0gOiBudWxsXG4gICAgfSk7XG4gIH07XG5cbiAgJHNjb3BlLmhhc1N0aWNreUtldHRsZXMgPSBmdW5jdGlvbih0eXBlKXtcbiAgICByZXR1cm4gXy5maWx0ZXIoJHNjb3BlLmtldHRsZXMsIHsnc3RpY2t5JzogdHJ1ZX0pLmxlbmd0aDtcbiAgfTtcblxuICAkc2NvcGUua2V0dGxlQ291bnQgPSBmdW5jdGlvbih0eXBlKXtcbiAgICByZXR1cm4gXy5maWx0ZXIoJHNjb3BlLmtldHRsZXMsIHsndHlwZSc6IHR5cGV9KS5sZW5ndGg7XG4gIH07XG5cbiAgJHNjb3BlLmFjdGl2ZUtldHRsZXMgPSBmdW5jdGlvbigpe1xuICAgIHJldHVybiBfLmZpbHRlcigkc2NvcGUua2V0dGxlcyx7J2FjdGl2ZSc6IHRydWV9KS5sZW5ndGg7XG4gIH07XG5cbiAgJHNjb3BlLnBpbkRpc3BsYXkgPSBmdW5jdGlvbihwaW4pe1xuICAgICAgaWYoIHBpbi5pbmRleE9mKCdUUC0nKT09PTAgKVxuICAgICAgICByZXR1cm4gXy5maWx0ZXIoJHNjb3BlLnNldHRpbmdzLnRwbGluay5wbHVncyx7ZGV2aWNlSWQ6IHBpbi5zdWJzdHIoMyl9KVswXS5hbGlhcztcbiAgICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIHBpbjtcbiAgfTtcblxuICAkc2NvcGUucGluSW5Vc2UgPSBmdW5jdGlvbihwaW4sYW5hbG9nKXtcbiAgICB2YXIga2V0dGxlID0gXy5maW5kKCRzY29wZS5rZXR0bGVzLCBmdW5jdGlvbihrZXR0bGUpe1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgKGFuYWxvZyAmJiBrZXR0bGUudGVtcC50eXBlPT0nVGhlcm1pc3RvcicgJiYga2V0dGxlLnRlbXAucGluPT1waW4pIHx8XG4gICAgICAgICghYW5hbG9nICYmIGtldHRsZS50ZW1wLnR5cGU9PSdEUzE4QjIwJyAmJiBrZXR0bGUudGVtcC5waW49PXBpbikgfHxcbiAgICAgICAgKGtldHRsZS50ZW1wLnR5cGU9PSdQVDEwMCcgJiYga2V0dGxlLnRlbXAucGluPT1waW4pIHx8XG4gICAgICAgICghYW5hbG9nICYmIGtldHRsZS5oZWF0ZXIucGluPT1waW4pIHx8XG4gICAgICAgICghYW5hbG9nICYmIGtldHRsZS5jb29sZXIgJiYga2V0dGxlLmNvb2xlci5waW49PXBpbikgfHxcbiAgICAgICAgKCFhbmFsb2cgJiYgIWtldHRsZS5jb29sZXIgJiYga2V0dGxlLnB1bXAucGluPT1waW4pXG4gICAgICApO1xuICAgIH0pO1xuICAgIHJldHVybiBrZXR0bGUgfHwgZmFsc2U7XG4gIH07XG5cbiAgJHNjb3BlLmNyZWF0ZVNoYXJlID0gZnVuY3Rpb24oKXtcbiAgICBpZighJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5icmV3ZXIubmFtZSB8fCAhJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5icmV3ZXIuZW1haWwpXG4gICAgICByZXR1cm47XG4gICAgJHNjb3BlLnNoYXJlX3N0YXR1cyA9ICdDcmVhdGluZyBzaGFyZSBsaW5rLi4uJztcbiAgICByZXR1cm4gQnJld1NlcnZpY2UuY3JlYXRlU2hhcmUoJHNjb3BlLnNoYXJlKVxuICAgICAgLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcbiAgICAgICAgaWYocmVzcG9uc2Uuc2hhcmUgJiYgcmVzcG9uc2Uuc2hhcmUudXJsKXtcbiAgICAgICAgICAkc2NvcGUuc2hhcmVfc3RhdHVzID0gJyc7XG4gICAgICAgICAgJHNjb3BlLnNoYXJlX3N1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgICRzY29wZS5zaGFyZV9saW5rID0gcmVzcG9uc2Uuc2hhcmUudXJsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICRzY29wZS5zaGFyZV9zdWNjZXNzID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgJHNjb3BlLnNoYXJlX3N0YXR1cyA9IGVycjtcbiAgICAgICAgJHNjb3BlLnNoYXJlX3N1Y2Nlc3MgPSBmYWxzZTtcbiAgICAgIH0pO1xuICB9O1xuXG4gICRzY29wZS5zaGFyZVRlc3QgPSBmdW5jdGlvbihhcmR1aW5vKXtcbiAgICBhcmR1aW5vLnRlc3RpbmcgPSB0cnVlO1xuICAgIEJyZXdTZXJ2aWNlLnNoYXJlVGVzdChhcmR1aW5vKVxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICBhcmR1aW5vLnRlc3RpbmcgPSBmYWxzZTtcbiAgICAgICAgaWYocmVzcG9uc2UuaHR0cF9jb2RlID09IDIwMClcbiAgICAgICAgICBhcmR1aW5vLnB1YmxpYyA9IHRydWU7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBhcmR1aW5vLnB1YmxpYyA9IGZhbHNlO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICBhcmR1aW5vLnRlc3RpbmcgPSBmYWxzZTtcbiAgICAgICAgYXJkdWluby5wdWJsaWMgPSBmYWxzZTtcbiAgICAgIH0pO1xuICB9O1xuXG4gICRzY29wZS50ZXN0SW5mbHV4REIgPSBmdW5jdGlvbigpe1xuICAgICRzY29wZS5zZXR0aW5ncy5pbmZsdXhkYi50ZXN0aW5nID0gdHJ1ZTtcbiAgICAkc2NvcGUuc2V0dGluZ3MuaW5mbHV4ZGIuY29ubmVjdGVkID0gZmFsc2U7XG4gICAgQnJld1NlcnZpY2UuaW5mbHV4ZGIoKS5waW5nKClcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgJHNjb3BlLnNldHRpbmdzLmluZmx1eGRiLnRlc3RpbmcgPSBmYWxzZTtcbiAgICAgICAgaWYocmVzcG9uc2Uuc3RhdHVzID09IDIwNCl7XG4gICAgICAgICAgJCgnI2luZmx1eGRiVXJsJykucmVtb3ZlQ2xhc3MoJ2lzLWludmFsaWQnKTtcbiAgICAgICAgICAkc2NvcGUuc2V0dGluZ3MuaW5mbHV4ZGIuY29ubmVjdGVkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAkKCcjaW5mbHV4ZGJVcmwnKS5hZGRDbGFzcygnaXMtaW52YWxpZCcpO1xuICAgICAgICAgICRzY29wZS5zZXR0aW5ncy5pbmZsdXhkYi5jb25uZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAkKCcjaW5mbHV4ZGJVcmwnKS5hZGRDbGFzcygnaXMtaW52YWxpZCcpO1xuICAgICAgICAkc2NvcGUuc2V0dGluZ3MuaW5mbHV4ZGIudGVzdGluZyA9IGZhbHNlO1xuICAgICAgICAkc2NvcGUuc2V0dGluZ3MuaW5mbHV4ZGIuY29ubmVjdGVkID0gZmFsc2U7XG4gICAgICB9KTtcbiAgfTtcblxuICAkc2NvcGUuY3JlYXRlSW5mbHV4REIgPSBmdW5jdGlvbigpe1xuICAgIHZhciBkYiA9ICRzY29wZS5zZXR0aW5ncy5pbmZsdXhkYi5kYiB8fCAnc2Vzc2lvbi0nK21vbWVudCgpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICAgICRzY29wZS5zZXR0aW5ncy5pbmZsdXhkYi5jcmVhdGVkID0gZmFsc2U7XG4gICAgQnJld1NlcnZpY2UuaW5mbHV4ZGIoKS5jcmVhdGVEQihkYilcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgLy8gcHJvbXB0IGZvciBwYXNzd29yZFxuICAgICAgICBpZihyZXNwb25zZS5kYXRhICYmIHJlc3BvbnNlLmRhdGEucmVzdWx0cyAmJiByZXNwb25zZS5kYXRhLnJlc3VsdHMubGVuZ3RoKXtcbiAgICAgICAgICAkc2NvcGUuc2V0dGluZ3MuaW5mbHV4ZGIuZGIgPSBkYjtcbiAgICAgICAgICAkc2NvcGUuc2V0dGluZ3MuaW5mbHV4ZGIuY3JlYXRlZCA9IHRydWU7XG4gICAgICAgICAgJCgnI2luZmx1eGRiVXNlcicpLnJlbW92ZUNsYXNzKCdpcy1pbnZhbGlkJyk7XG4gICAgICAgICAgJCgnI2luZmx1eGRiUGFzcycpLnJlbW92ZUNsYXNzKCdpcy1pbnZhbGlkJyk7XG4gICAgICAgICAgJHNjb3BlLnJlc2V0RXJyb3IoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAkc2NvcGUuc2V0RXJyb3JNZXNzYWdlKFwiT3BwcywgdGhlcmUgd2FzIGEgcHJvYmxlbSBjcmVhdGluZyB0aGUgZGF0YWJhc2UuXCIpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgIGlmKGVyci5zdGF0dXMgPT0gNDAxIHx8IGVyci5zdGF0dXMgPT0gNDAzKXtcbiAgICAgICAgICAkKCcjaW5mbHV4ZGJVc2VyJykuYWRkQ2xhc3MoJ2lzLWludmFsaWQnKTtcbiAgICAgICAgICAkKCcjaW5mbHV4ZGJQYXNzJykuYWRkQ2xhc3MoJ2lzLWludmFsaWQnKTtcbiAgICAgICAgICAkc2NvcGUuc2V0RXJyb3JNZXNzYWdlKFwiRW50ZXIgeW91ciBVc2VybmFtZSBhbmQgUGFzc3dvcmQgZm9yIEluZmx1eERCXCIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICRzY29wZS5zZXRFcnJvck1lc3NhZ2UoXCJPcHBzLCB0aGVyZSB3YXMgYSBwcm9ibGVtIGNyZWF0aW5nIHRoZSBkYXRhYmFzZS5cIik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9O1xuXG4gICRzY29wZS5zaGFyZUFjY2VzcyA9IGZ1bmN0aW9uKGFjY2Vzcyl7XG4gICAgICBpZigkc2NvcGUuc2V0dGluZ3Muc2hhcmVkKXtcbiAgICAgICAgaWYoYWNjZXNzKXtcbiAgICAgICAgICBpZihhY2Nlc3MgPT0gJ2VtYmVkJyl7XG4gICAgICAgICAgICByZXR1cm4gISEod2luZG93LmZyYW1lRWxlbWVudCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAhISgkc2NvcGUuc2hhcmUuYWNjZXNzICYmICRzY29wZS5zaGFyZS5hY2Nlc3MgPT09IGFjY2Vzcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIGlmKGFjY2VzcyAmJiBhY2Nlc3MgPT0gJ2VtYmVkJyl7XG4gICAgICAgIHJldHVybiAhISh3aW5kb3cuZnJhbWVFbGVtZW50KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gICRzY29wZS5sb2FkU2hhcmVGaWxlID0gZnVuY3Rpb24oKXtcbiAgICBCcmV3U2VydmljZS5jbGVhcigpO1xuICAgICRzY29wZS5zZXR0aW5ncyA9IEJyZXdTZXJ2aWNlLnJlc2V0KCk7XG4gICAgJHNjb3BlLnNldHRpbmdzLnNoYXJlZCA9IHRydWU7XG4gICAgcmV0dXJuIEJyZXdTZXJ2aWNlLmxvYWRTaGFyZUZpbGUoJHNjb3BlLnNoYXJlLmZpbGUsICRzY29wZS5zaGFyZS5wYXNzd29yZCB8fCBudWxsKVxuICAgICAgLnRoZW4oZnVuY3Rpb24oY29udGVudHMpIHtcbiAgICAgICAgaWYoY29udGVudHMpe1xuICAgICAgICAgIGlmKGNvbnRlbnRzLm5lZWRQYXNzd29yZCl7XG4gICAgICAgICAgICAkc2NvcGUuc2hhcmUubmVlZFBhc3N3b3JkID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmKGNvbnRlbnRzLnNldHRpbmdzLnJlY2lwZSl7XG4gICAgICAgICAgICAgICRzY29wZS5zZXR0aW5ncy5yZWNpcGUgPSBjb250ZW50cy5zZXR0aW5ncy5yZWNpcGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICRzY29wZS5zaGFyZS5uZWVkUGFzc3dvcmQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmKGNvbnRlbnRzLnNoYXJlICYmIGNvbnRlbnRzLnNoYXJlLmFjY2Vzcyl7XG4gICAgICAgICAgICAgICRzY29wZS5zaGFyZS5hY2Nlc3MgPSBjb250ZW50cy5zaGFyZS5hY2Nlc3M7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZihjb250ZW50cy5zZXR0aW5ncyl7XG4gICAgICAgICAgICAgICRzY29wZS5zZXR0aW5ncyA9IGNvbnRlbnRzLnNldHRpbmdzO1xuICAgICAgICAgICAgICAkc2NvcGUuc2V0dGluZ3Mubm90aWZpY2F0aW9ucyA9IHtvbjpmYWxzZSx0aW1lcnM6dHJ1ZSxoaWdoOnRydWUsbG93OnRydWUsdGFyZ2V0OnRydWUsc2xhY2s6JycsbGFzdDonJ307XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZihjb250ZW50cy5rZXR0bGVzKXtcbiAgICAgICAgICAgICAgXy5lYWNoKGNvbnRlbnRzLmtldHRsZXMsIGtldHRsZSA9PiB7XG4gICAgICAgICAgICAgICAga2V0dGxlLmtub2IgPSBhbmd1bGFyLmNvcHkoQnJld1NlcnZpY2UuZGVmYXVsdEtub2JPcHRpb25zKCkse3ZhbHVlOjAsbWluOjAsbWF4OjIwMCs1LHN1YlRleHQ6e2VuYWJsZWQ6IHRydWUsdGV4dDogJ3N0YXJ0aW5nLi4uJyxjb2xvcjogJ2dyYXknLGZvbnQ6ICdhdXRvJ319KTtcbiAgICAgICAgICAgICAgICBrZXR0bGUudmFsdWVzID0gW107XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAkc2NvcGUua2V0dGxlcyA9IGNvbnRlbnRzLmtldHRsZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJHNjb3BlLnByb2Nlc3NUZW1wcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICRzY29wZS5zZXRFcnJvck1lc3NhZ2UoXCJPcHBzLCB0aGVyZSB3YXMgYSBwcm9ibGVtIGxvYWRpbmcgdGhlIHNoYXJlZCBzZXNzaW9uLlwiKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gICRzY29wZS5pbXBvcnRSZWNpcGUgPSBmdW5jdGlvbigkZmlsZUNvbnRlbnQsJGV4dCl7XG5cbiAgICAgIC8vIHBhcnNlIHRoZSBpbXBvcnRlZCBjb250ZW50XG4gICAgICB2YXIgZm9ybWF0dGVkX2NvbnRlbnQgPSBCcmV3U2VydmljZS5mb3JtYXRYTUwoJGZpbGVDb250ZW50KTtcbiAgICAgIHZhciBqc29uT2JqLCByZWNpcGUgPSBudWxsO1xuXG4gICAgICBpZighIWZvcm1hdHRlZF9jb250ZW50KXtcbiAgICAgICAgdmFyIHgyanMgPSBuZXcgWDJKUygpO1xuICAgICAgICBqc29uT2JqID0geDJqcy54bWxfc3RyMmpzb24oIGZvcm1hdHRlZF9jb250ZW50ICk7XG4gICAgICB9XG5cbiAgICAgIGlmKCFqc29uT2JqKVxuICAgICAgICByZXR1cm4gJHNjb3BlLnJlY2lwZV9zdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgIGlmKCRleHQ9PSdic214Jyl7XG4gICAgICAgIGlmKCEhanNvbk9iai5SZWNpcGVzICYmICEhanNvbk9iai5SZWNpcGVzLkRhdGEuUmVjaXBlKVxuICAgICAgICAgIHJlY2lwZSA9IGpzb25PYmouUmVjaXBlcy5EYXRhLlJlY2lwZTtcbiAgICAgICAgZWxzZSBpZighIWpzb25PYmouU2VsZWN0aW9ucyAmJiAhIWpzb25PYmouU2VsZWN0aW9ucy5EYXRhLlJlY2lwZSlcbiAgICAgICAgICByZWNpcGUgPSBqc29uT2JqLlNlbGVjdGlvbnMuRGF0YS5SZWNpcGU7XG4gICAgICAgIGlmKHJlY2lwZSlcbiAgICAgICAgICByZWNpcGUgPSBCcmV3U2VydmljZS5yZWNpcGVCZWVyU21pdGgocmVjaXBlKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJldHVybiAkc2NvcGUucmVjaXBlX3N1Y2Nlc3MgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZigkZXh0PT0neG1sJyl7XG4gICAgICAgIGlmKCEhanNvbk9iai5SRUNJUEVTICYmICEhanNvbk9iai5SRUNJUEVTLlJFQ0lQRSlcbiAgICAgICAgICByZWNpcGUgPSBqc29uT2JqLlJFQ0lQRVMuUkVDSVBFO1xuICAgICAgICBpZihyZWNpcGUpXG4gICAgICAgICAgcmVjaXBlID0gQnJld1NlcnZpY2UucmVjaXBlQmVlclhNTChyZWNpcGUpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgcmV0dXJuICRzY29wZS5yZWNpcGVfc3VjY2VzcyA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZighcmVjaXBlKVxuICAgICAgICByZXR1cm4gJHNjb3BlLnJlY2lwZV9zdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgIGlmKCEhcmVjaXBlLm9nKVxuICAgICAgICAkc2NvcGUuc2V0dGluZ3MucmVjaXBlLm9nID0gcmVjaXBlLm9nO1xuICAgICAgaWYoISFyZWNpcGUuZmcpXG4gICAgICAgICRzY29wZS5zZXR0aW5ncy5yZWNpcGUuZmcgPSByZWNpcGUuZmc7XG5cbiAgICAgICRzY29wZS5zZXR0aW5ncy5yZWNpcGUubmFtZSA9IHJlY2lwZS5uYW1lO1xuICAgICAgJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5jYXRlZ29yeSA9IHJlY2lwZS5jYXRlZ29yeTtcbiAgICAgICRzY29wZS5zZXR0aW5ncy5yZWNpcGUuYWJ2ID0gcmVjaXBlLmFidjtcbiAgICAgICRzY29wZS5zZXR0aW5ncy5yZWNpcGUuaWJ1ID0gcmVjaXBlLmlidTtcbiAgICAgICRzY29wZS5zZXR0aW5ncy5yZWNpcGUuZGF0ZSA9IHJlY2lwZS5kYXRlO1xuICAgICAgJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5icmV3ZXIgPSByZWNpcGUuYnJld2VyO1xuXG4gICAgICBpZihyZWNpcGUuZ3JhaW5zLmxlbmd0aCl7XG4gICAgICAgICRzY29wZS5zZXR0aW5ncy5yZWNpcGUuZ3JhaW5zID0gcmVjaXBlLmdyYWlucztcbiAgICAgICAgbGV0IGtldHRsZSA9IF8uZmlsdGVyKCRzY29wZS5rZXR0bGVzLHt0eXBlOidncmFpbid9KVswXTtcbiAgICAgICAgaWYoa2V0dGxlKSBrZXR0bGUudGltZXJzID0gW107XG4gICAgICAgICRzY29wZS5zZXR0aW5ncy5yZWNpcGUuZ3JhaW5zID0ge307XG4gICAgICAgIF8uZWFjaChyZWNpcGUuZ3JhaW5zLGZ1bmN0aW9uKGdyYWluKXtcbiAgICAgICAgICBpZihrZXR0bGUpe1xuICAgICAgICAgICAgJHNjb3BlLmFkZFRpbWVyKGtldHRsZSx7XG4gICAgICAgICAgICAgIGxhYmVsOiBncmFpbi5sYWJlbCxcbiAgICAgICAgICAgICAgbWluOiBncmFpbi5taW4sXG4gICAgICAgICAgICAgIG5vdGVzOiBncmFpbi5ub3Rlc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIHN1bSB0aGUgYW1vdW50cyBmb3IgdGhlIGdyYWluc1xuICAgICAgICAgIGlmKCRzY29wZS5zZXR0aW5ncy5yZWNpcGUuZ3JhaW5zW2dyYWluLmxhYmVsXSlcbiAgICAgICAgICAgICRzY29wZS5zZXR0aW5ncy5yZWNpcGUuZ3JhaW5zW2dyYWluLmxhYmVsXSArPSBOdW1iZXIoZ3JhaW4uYW1vdW50KTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAkc2NvcGUuc2V0dGluZ3MucmVjaXBlLmdyYWluc1tncmFpbi5sYWJlbF0gPSBOdW1iZXIoZ3JhaW4uYW1vdW50KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmKHJlY2lwZS5ob3BzLmxlbmd0aCl7XG4gICAgICAgIGxldCBrZXR0bGUgPSBfLmZpbHRlcigkc2NvcGUua2V0dGxlcyx7dHlwZTonaG9wJ30pWzBdO1xuICAgICAgICBpZihrZXR0bGUpIGtldHRsZS50aW1lcnMgPSBbXTtcbiAgICAgICAgJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5ob3BzID0ge307XG4gICAgICAgIF8uZWFjaChyZWNpcGUuaG9wcyxmdW5jdGlvbihob3Ape1xuICAgICAgICAgIGlmKGtldHRsZSl7XG4gICAgICAgICAgICAkc2NvcGUuYWRkVGltZXIoa2V0dGxlLHtcbiAgICAgICAgICAgICAgbGFiZWw6IGhvcC5sYWJlbCxcbiAgICAgICAgICAgICAgbWluOiBob3AubWluLFxuICAgICAgICAgICAgICBub3RlczogaG9wLm5vdGVzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gc3VtIHRoZSBhbW91bnRzIGZvciB0aGUgaG9wc1xuICAgICAgICAgIGlmKCRzY29wZS5zZXR0aW5ncy5yZWNpcGUuaG9wc1tob3AubGFiZWxdKVxuICAgICAgICAgICAgJHNjb3BlLnNldHRpbmdzLnJlY2lwZS5ob3BzW2hvcC5sYWJlbF0gKz0gTnVtYmVyKGhvcC5hbW91bnQpO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICRzY29wZS5zZXR0aW5ncy5yZWNpcGUuaG9wc1tob3AubGFiZWxdID0gTnVtYmVyKGhvcC5hbW91bnQpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmKHJlY2lwZS5taXNjLmxlbmd0aCl7XG4gICAgICAgIGxldCBrZXR0bGUgPSBfLmZpbHRlcigkc2NvcGUua2V0dGxlcyx7dHlwZTond2F0ZXInfSlbMF07XG4gICAgICAgIGlmKGtldHRsZSl7XG4gICAgICAgICAga2V0dGxlLnRpbWVycyA9IFtdO1xuICAgICAgICAgIF8uZWFjaChyZWNpcGUubWlzYyxmdW5jdGlvbihtaXNjKXtcbiAgICAgICAgICAgICRzY29wZS5hZGRUaW1lcihrZXR0bGUse1xuICAgICAgICAgICAgICBsYWJlbDogbWlzYy5sYWJlbCxcbiAgICAgICAgICAgICAgbWluOiBtaXNjLm1pbixcbiAgICAgICAgICAgICAgbm90ZXM6IG1pc2Mubm90ZXNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZihyZWNpcGUueWVhc3QubGVuZ3RoKXtcbiAgICAgICAgJHNjb3BlLnNldHRpbmdzLnJlY2lwZS55ZWFzdCA9IFtdO1xuICAgICAgICBfLmVhY2gocmVjaXBlLnllYXN0LGZ1bmN0aW9uKHllYXN0KXtcbiAgICAgICAgICAkc2NvcGUuc2V0dGluZ3MucmVjaXBlLnllYXN0LnB1c2goe1xuICAgICAgICAgICAgbmFtZTogeWVhc3QubmFtZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgICRzY29wZS5yZWNpcGVfc3VjY2VzcyA9IHRydWU7XG4gIH07XG5cbiAgJHNjb3BlLmxvYWRTdHlsZXMgPSBmdW5jdGlvbigpe1xuICAgIGlmKCEkc2NvcGUuc3R5bGVzKXtcbiAgICAgIEJyZXdTZXJ2aWNlLnN0eWxlcygpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2Upe1xuICAgICAgICAkc2NvcGUuc3R5bGVzID0gcmVzcG9uc2U7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgJHNjb3BlLmxvYWRDb25maWcgPSBmdW5jdGlvbigpe1xuICAgIHZhciBjb25maWcgPSBbXTtcbiAgICBpZighJHNjb3BlLnBrZyl7XG4gICAgICBjb25maWcucHVzaChCcmV3U2VydmljZS5wa2coKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKXtcbiAgICAgICAgICAkc2NvcGUucGtnID0gcmVzcG9uc2U7XG4gICAgICAgICAgJHNjb3BlLnNldHRpbmdzLnNrZXRjaF92ZXJzaW9uID0gcmVzcG9uc2Uuc2tldGNoX3ZlcnNpb247XG4gICAgICAgICAgaWYoISRzY29wZS5zZXR0aW5ncy5iYl92ZXJzaW9uKXtcbiAgICAgICAgICAgICRzY29wZS5zZXR0aW5ncy5iYl92ZXJzaW9uID0gcmVzcG9uc2UudmVyc2lvbjtcbiAgICAgICAgICB9IGVsc2UgaWYoJHNjb3BlLnNldHRpbmdzLmJiX3ZlcnNpb24gIT0gcmVzcG9uc2UudmVyc2lvbil7XG4gICAgICAgICAgICAkc2NvcGUuZXJyb3IudHlwZSA9ICdpbmZvJztcbiAgICAgICAgICAgICRzY29wZS5zZXRFcnJvck1lc3NhZ2UoJ1RoZXJlIGlzIGEgbmV3IHZlcnNpb24gYXZhaWxhYmxlIGZvciBCcmV3QmVuY2guIFBsZWFzZSA8YSBocmVmPVwiIy9yZXNldFwiPmNsZWFyPC9hPiB5b3VyIHNldHRpbmdzLicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYoISRzY29wZS5ncmFpbnMpe1xuICAgICAgY29uZmlnLnB1c2goQnJld1NlcnZpY2UuZ3JhaW5zKCkudGhlbihmdW5jdGlvbihyZXNwb25zZSl7XG4gICAgICAgICAgcmV0dXJuICRzY29wZS5ncmFpbnMgPSBfLnNvcnRCeShfLnVuaXFCeShyZXNwb25zZSwnbmFtZScpLCduYW1lJyk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmKCEkc2NvcGUuaG9wcyl7XG4gICAgICBjb25maWcucHVzaChcbiAgICAgICAgQnJld1NlcnZpY2UuaG9wcygpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2Upe1xuICAgICAgICAgIHJldHVybiAkc2NvcGUuaG9wcyA9IF8uc29ydEJ5KF8udW5pcUJ5KHJlc3BvbnNlLCduYW1lJyksJ25hbWUnKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYoISRzY29wZS53YXRlcil7XG4gICAgICBjb25maWcucHVzaChcbiAgICAgICAgQnJld1NlcnZpY2Uud2F0ZXIoKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKXtcbiAgICAgICAgICByZXR1cm4gJHNjb3BlLndhdGVyID0gXy5zb3J0QnkoXy51bmlxQnkocmVzcG9uc2UsJ3NhbHQnKSwnc2FsdCcpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZighJHNjb3BlLmxvdmlib25kKXtcbiAgICAgIGNvbmZpZy5wdXNoKFxuICAgICAgICBCcmV3U2VydmljZS5sb3ZpYm9uZCgpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2Upe1xuICAgICAgICAgIHJldHVybiAkc2NvcGUubG92aWJvbmQgPSByZXNwb25zZTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuICRxLmFsbChjb25maWcpO1xufTtcblxuICAvLyBjaGVjayBpZiBwdW1wIG9yIGhlYXRlciBhcmUgcnVubmluZ1xuICAkc2NvcGUuaW5pdCA9ICgpID0+IHtcbiAgICAkc2NvcGUuc2hvd1NldHRpbmdzID0gISRzY29wZS5zZXR0aW5ncy5zaGFyZWQ7XG4gICAgaWYoJHNjb3BlLnNoYXJlLmZpbGUpXG4gICAgICByZXR1cm4gJHNjb3BlLmxvYWRTaGFyZUZpbGUoKTtcblxuICAgIF8uZWFjaCgkc2NvcGUua2V0dGxlcywga2V0dGxlID0+IHtcbiAgICAgICAgLy91cGRhdGUgbWF4XG4gICAgICAgIGtldHRsZS5rbm9iLm1heCA9IGtldHRsZS50ZW1wWyd0YXJnZXQnXStrZXR0bGUudGVtcFsnZGlmZiddKzEwO1xuICAgICAgICAvLyBjaGVjayB0aW1lcnMgZm9yIHJ1bm5pbmdcbiAgICAgICAgaWYoISFrZXR0bGUudGltZXJzICYmIGtldHRsZS50aW1lcnMubGVuZ3RoKXtcbiAgICAgICAgICBfLmVhY2goa2V0dGxlLnRpbWVycywgdGltZXIgPT4ge1xuICAgICAgICAgICAgaWYodGltZXIucnVubmluZyl7XG4gICAgICAgICAgICAgIHRpbWVyLnJ1bm5pbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgJHNjb3BlLnRpbWVyU3RhcnQodGltZXIsa2V0dGxlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZighdGltZXIucnVubmluZyAmJiB0aW1lci5xdWV1ZSl7XG4gICAgICAgICAgICAgICR0aW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAkc2NvcGUudGltZXJTdGFydCh0aW1lcixrZXR0bGUpO1xuICAgICAgICAgICAgICB9LDYwMDAwKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZih0aW1lci51cCAmJiB0aW1lci51cC5ydW5uaW5nKXtcbiAgICAgICAgICAgICAgdGltZXIudXAucnVubmluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAkc2NvcGUudGltZXJTdGFydCh0aW1lci51cCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgJHNjb3BlLnVwZGF0ZUtub2JDb3B5KGtldHRsZSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgJHNjb3BlLnNldEVycm9yTWVzc2FnZSA9IGZ1bmN0aW9uKGVyciwga2V0dGxlKXtcbiAgICBpZighISRzY29wZS5zZXR0aW5ncy5zaGFyZWQpe1xuICAgICAgJHNjb3BlLmVycm9yLnR5cGUgPSAnd2FybmluZyc7XG4gICAgICAkc2NvcGUuZXJyb3IubWVzc2FnZSA9ICRzY2UudHJ1c3RBc0h0bWwoJ1RoZSBtb25pdG9yIHNlZW1zIHRvIGJlIG9mZi1saW5lLCByZS1jb25uZWN0aW5nLi4uJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBtZXNzYWdlO1xuXG4gICAgICBpZih0eXBlb2YgZXJyID09ICdzdHJpbmcnICYmIGVyci5pbmRleE9mKCd7JykgIT09IC0xKXtcbiAgICAgICAgaWYoIU9iamVjdC5rZXlzKGVycikubGVuZ3RoKSByZXR1cm47XG4gICAgICAgIGVyciA9IEpTT04ucGFyc2UoZXJyKTtcbiAgICAgIH1cblxuICAgICAgaWYodHlwZW9mIGVyciA9PSAnc3RyaW5nJylcbiAgICAgICAgbWVzc2FnZSA9IGVycjtcbiAgICAgIGVsc2UgaWYoZXJyLnN0YXR1c1RleHQpXG4gICAgICAgIG1lc3NhZ2UgPSBlcnIuc3RhdHVzVGV4dDtcbiAgICAgIGVsc2UgaWYoZXJyLmNvbmZpZy51cmwpXG4gICAgICAgIG1lc3NhZ2UgPSBlcnIuY29uZmlnLnVybDtcbiAgICAgIGVsc2VcbiAgICAgICAgbWVzc2FnZSA9IEpTT04uc3RyaW5naWZ5KGVycik7XG5cbiAgICAgIGlmKG1lc3NhZ2Upe1xuICAgICAgICBpZihrZXR0bGUpe1xuICAgICAgICAgIGtldHRsZS5lcnJvciA9ICRzY2UudHJ1c3RBc0h0bWwoYENvbm5lY3Rpb24gZXJyb3I6ICR7bWVzc2FnZX1gKTtcbiAgICAgICAgICAkc2NvcGUudXBkYXRlS25vYkNvcHkoa2V0dGxlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgJHNjb3BlLmVycm9yLm1lc3NhZ2UgPSAkc2NlLnRydXN0QXNIdG1sKGBFcnJvcjogJHttZXNzYWdlfWApO1xuICAgICAgfSBlbHNlIGlmKGtldHRsZSl7XG4gICAgICAgIGtldHRsZS5lcnJvciA9IGBFcnJvciBjb25uZWN0aW5nIHRvICR7QnJld1NlcnZpY2UuZG9tYWluKGtldHRsZS5hcmR1aW5vKX1gO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgJHNjb3BlLmVycm9yLm1lc3NhZ2UgPSAkc2NlLnRydXN0QXNIdG1sKGBDb25uZWN0aW9uIGVycm9yOmApO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICAkc2NvcGUucmVzZXRFcnJvciA9IGZ1bmN0aW9uKGtldHRsZSl7XG4gICAgJHNjb3BlLmVycm9yLnR5cGUgPSAnZGFuZ2VyJztcbiAgICAkc2NvcGUuZXJyb3IubWVzc2FnZSA9ICRzY2UudHJ1c3RBc0h0bWwoJycpO1xuICAgIGlmKGtldHRsZSkga2V0dGxlLmVycm9yID0gJHNjZS50cnVzdEFzSHRtbCgnJyk7XG4gIH07XG5cbiAgJHNjb3BlLnVwZGF0ZVRlbXAgPSBmdW5jdGlvbihyZXNwb25zZSwga2V0dGxlKXtcbiAgICBpZighcmVzcG9uc2UgfHwgIXJlc3BvbnNlLnRlbXApe1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgICRzY29wZS5yZXNldEVycm9yKGtldHRsZSk7XG5cbiAgICB2YXIgdGVtcHMgPSBbXTtcbiAgICAvL2NoYXJ0IGRhdGVcbiAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgLy8gdGVtcCByZXNwb25zZSBpcyBpbiBDXG4gICAga2V0dGxlLnRlbXAucHJldmlvdXMgPSAoJHNjb3BlLnNldHRpbmdzLnVuaXQgPT0gJ0YnKSA/XG4gICAgICAkZmlsdGVyKCd0b0ZhaHJlbmhlaXQnKShyZXNwb25zZS50ZW1wKSA6XG4gICAgICBNYXRoLnJvdW5kKHJlc3BvbnNlLnRlbXApO1xuICAgIGtldHRsZS50ZW1wLmN1cnJlbnQgPSBrZXR0bGUudGVtcC5wcmV2aW91cytrZXR0bGUudGVtcC5hZGp1c3Q7XG5cbiAgICAvL3Jlc2V0IGFsbCBrZXR0bGVzIGV2ZXJ5IHJlc2V0Q2hhcnRcbiAgICBpZihrZXR0bGUudmFsdWVzLmxlbmd0aCA+IHJlc2V0Q2hhcnQpe1xuICAgICAgJHNjb3BlLmtldHRsZXMubWFwKChrKSA9PiB7XG4gICAgICAgIHJldHVybiBrLnZhbHVlcz1bXTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vREhUMTEgc2Vuc29yIGhhcyBodW1pZGl0eVxuICAgIGlmKCByZXNwb25zZS5odW1pZGl0eSApe1xuICAgICAga2V0dGxlLmh1bWlkaXR5ID0gcmVzcG9uc2UuaHVtaWRpdHk7XG4gICAgfVxuXG4gICAga2V0dGxlLnZhbHVlcy5wdXNoKFtkYXRlLmdldFRpbWUoKSxrZXR0bGUudGVtcC5jdXJyZW50XSk7XG5cbiAgICAkc2NvcGUudXBkYXRlS25vYkNvcHkoa2V0dGxlKTtcblxuICAgIC8vaXMgdGVtcCB0b28gaGlnaD9cbiAgICBpZihrZXR0bGUudGVtcC5jdXJyZW50ID49IGtldHRsZS50ZW1wLnRhcmdldCtrZXR0bGUudGVtcC5kaWZmKXtcbiAgICAgIC8vc3RvcCB0aGUgaGVhdGluZyBlbGVtZW50XG4gICAgICBpZihrZXR0bGUuaGVhdGVyLmF1dG8gJiYga2V0dGxlLmhlYXRlci5ydW5uaW5nKXtcbiAgICAgICAgdGVtcHMucHVzaCgkc2NvcGUudG9nZ2xlUmVsYXkoa2V0dGxlLCBrZXR0bGUuaGVhdGVyLCBmYWxzZSkpO1xuICAgICAgfVxuICAgICAgLy9zdG9wIHRoZSBwdW1wXG4gICAgICBpZihrZXR0bGUucHVtcC5hdXRvICYmIGtldHRsZS5wdW1wLnJ1bm5pbmcpe1xuICAgICAgICB0ZW1wcy5wdXNoKCRzY29wZS50b2dnbGVSZWxheShrZXR0bGUsIGtldHRsZS5wdW1wLCBmYWxzZSkpO1xuICAgICAgfVxuICAgICAgLy9zdGFydCB0aGUgY2hpbGxlclxuICAgICAgaWYoa2V0dGxlLmNvb2xlciAmJiBrZXR0bGUuY29vbGVyLmF1dG8gJiYgIWtldHRsZS5jb29sZXIucnVubmluZyl7XG4gICAgICAgIHRlbXBzLnB1c2goJHNjb3BlLnRvZ2dsZVJlbGF5KGtldHRsZSwga2V0dGxlLmNvb2xlciwgdHJ1ZSkudGhlbihjb29sZXIgPT4ge1xuICAgICAgICAgIGtldHRsZS5rbm9iLnN1YlRleHQudGV4dCA9ICdjb29saW5nJztcbiAgICAgICAgICBrZXR0bGUua25vYi5zdWJUZXh0LmNvbG9yID0gJ3JnYmEoNTIsMTUyLDIxOSwxKSc7XG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9IC8vaXMgdGVtcCB0b28gbG93P1xuICAgIGVsc2UgaWYoa2V0dGxlLnRlbXAuY3VycmVudCA8PSBrZXR0bGUudGVtcC50YXJnZXQta2V0dGxlLnRlbXAuZGlmZil7XG4gICAgICAkc2NvcGUuYWxlcnQoa2V0dGxlKTtcbiAgICAgIC8vc3RhcnQgdGhlIGhlYXRpbmcgZWxlbWVudFxuICAgICAgaWYoa2V0dGxlLmhlYXRlci5hdXRvICYmICFrZXR0bGUuaGVhdGVyLnJ1bm5pbmcpe1xuICAgICAgICB0ZW1wcy5wdXNoKCRzY29wZS50b2dnbGVSZWxheShrZXR0bGUsIGtldHRsZS5oZWF0ZXIsIHRydWUpLnRoZW4oaGVhdGluZyA9PiB7XG4gICAgICAgICAga2V0dGxlLmtub2Iuc3ViVGV4dC50ZXh0ID0gJ2hlYXRpbmcnO1xuICAgICAgICAgIGtldHRsZS5rbm9iLnN1YlRleHQuY29sb3IgPSAncmdiYSgyMDAsNDcsNDcsMSknO1xuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgICAvL3N0YXJ0IHRoZSBwdW1wXG4gICAgICBpZihrZXR0bGUucHVtcC5hdXRvICYmICFrZXR0bGUucHVtcC5ydW5uaW5nKXtcbiAgICAgICAgdGVtcHMucHVzaCgkc2NvcGUudG9nZ2xlUmVsYXkoa2V0dGxlLCBrZXR0bGUucHVtcCwgdHJ1ZSkpO1xuICAgICAgfVxuICAgICAgLy9zdG9wIHRoZSBjb29sZXJcbiAgICAgIGlmKGtldHRsZS5jb29sZXIgJiYga2V0dGxlLmNvb2xlci5hdXRvICYmIGtldHRsZS5jb29sZXIucnVubmluZyl7XG4gICAgICAgIHRlbXBzLnB1c2goJHNjb3BlLnRvZ2dsZVJlbGF5KGtldHRsZSwga2V0dGxlLmNvb2xlciwgZmFsc2UpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gd2l0aGluIHRhcmdldCFcbiAgICAgIGtldHRsZS50ZW1wLmhpdD1uZXcgRGF0ZSgpOy8vc2V0IHRoZSB0aW1lIHRoZSB0YXJnZXQgd2FzIGhpdCBzbyB3ZSBjYW4gbm93IHN0YXJ0IGFsZXJ0c1xuICAgICAgJHNjb3BlLmFsZXJ0KGtldHRsZSk7XG4gICAgICAvL3N0b3AgdGhlIGhlYXRlclxuICAgICAgaWYoa2V0dGxlLmhlYXRlci5hdXRvICYmIGtldHRsZS5oZWF0ZXIucnVubmluZyl7XG4gICAgICAgIHRlbXBzLnB1c2goJHNjb3BlLnRvZ2dsZVJlbGF5KGtldHRsZSwga2V0dGxlLmhlYXRlciwgZmFsc2UpKTtcbiAgICAgIH1cbiAgICAgIC8vc3RvcCB0aGUgcHVtcFxuICAgICAgaWYoa2V0dGxlLnB1bXAuYXV0byAmJiBrZXR0bGUucHVtcC5ydW5uaW5nKXtcbiAgICAgICAgdGVtcHMucHVzaCgkc2NvcGUudG9nZ2xlUmVsYXkoa2V0dGxlLCBrZXR0bGUucHVtcCwgZmFsc2UpKTtcbiAgICAgIH1cbiAgICAgIC8vc3RvcCB0aGUgY29vbGVyXG4gICAgICBpZihrZXR0bGUuY29vbGVyICYmIGtldHRsZS5jb29sZXIuYXV0byAmJiBrZXR0bGUuY29vbGVyLnJ1bm5pbmcpe1xuICAgICAgICB0ZW1wcy5wdXNoKCRzY29wZS50b2dnbGVSZWxheShrZXR0bGUsIGtldHRsZS5jb29sZXIsIGZhbHNlKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAkcS5hbGwodGVtcHMpO1xuICB9O1xuXG4gICRzY29wZS5nZXROYXZPZmZzZXQgPSBmdW5jdGlvbigpe1xuICAgIHJldHVybiAxMjUrYW5ndWxhci5lbGVtZW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduYXZiYXInKSlbMF0ub2Zmc2V0SGVpZ2h0O1xuICB9O1xuXG4gICRzY29wZS5hZGRUaW1lciA9IGZ1bmN0aW9uKGtldHRsZSxvcHRpb25zKXtcbiAgICBpZigha2V0dGxlLnRpbWVycylcbiAgICAgIGtldHRsZS50aW1lcnM9W107XG4gICAgaWYob3B0aW9ucyl7XG4gICAgICBvcHRpb25zLm1pbiA9IG9wdGlvbnMubWluID8gb3B0aW9ucy5taW4gOiAwO1xuICAgICAgb3B0aW9ucy5zZWMgPSBvcHRpb25zLnNlYyA/IG9wdGlvbnMuc2VjIDogMDtcbiAgICAgIG9wdGlvbnMucnVubmluZyA9IG9wdGlvbnMucnVubmluZyA/IG9wdGlvbnMucnVubmluZyA6IGZhbHNlO1xuICAgICAgb3B0aW9ucy5xdWV1ZSA9IG9wdGlvbnMucXVldWUgPyBvcHRpb25zLnF1ZXVlIDogZmFsc2U7XG4gICAgICBrZXR0bGUudGltZXJzLnB1c2gob3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGtldHRsZS50aW1lcnMucHVzaCh7bGFiZWw6J0VkaXQgbGFiZWwnLG1pbjo2MCxzZWM6MCxydW5uaW5nOmZhbHNlLHF1ZXVlOmZhbHNlfSk7XG4gICAgfVxuICB9O1xuXG4gICRzY29wZS5yZW1vdmVUaW1lcnMgPSBmdW5jdGlvbihlLGtldHRsZSl7XG4gICAgdmFyIGJ0biA9IGFuZ3VsYXIuZWxlbWVudChlLnRhcmdldCk7XG4gICAgaWYoYnRuLmhhc0NsYXNzKCdmYS10cmFzaCcpKSBidG4gPSBidG4ucGFyZW50KCk7XG5cbiAgICBpZighYnRuLmhhc0NsYXNzKCdidG4tZGFuZ2VyJykpe1xuICAgICAgYnRuLnJlbW92ZUNsYXNzKCdidG4tbGlnaHQnKS5hZGRDbGFzcygnYnRuLWRhbmdlcicpO1xuICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcbiAgICAgICAgYnRuLnJlbW92ZUNsYXNzKCdidG4tZGFuZ2VyJykuYWRkQ2xhc3MoJ2J0bi1saWdodCcpO1xuICAgICAgfSwyMDAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYnRuLnJlbW92ZUNsYXNzKCdidG4tZGFuZ2VyJykuYWRkQ2xhc3MoJ2J0bi1saWdodCcpO1xuICAgICAga2V0dGxlLnRpbWVycz1bXTtcbiAgICB9XG4gIH07XG5cbiAgJHNjb3BlLnRvZ2dsZVBXTSA9IGZ1bmN0aW9uKGtldHRsZSl7XG4gICAgICBrZXR0bGUucHdtID0gIWtldHRsZS5wd207XG4gICAgICBpZihrZXR0bGUucHdtKVxuICAgICAgICBrZXR0bGUuc3NyID0gdHJ1ZTtcbiAgfTtcblxuICAkc2NvcGUudG9nZ2xlS2V0dGxlID0gZnVuY3Rpb24oaXRlbSwga2V0dGxlKXtcblxuICAgIHZhciBrO1xuXG4gICAgc3dpdGNoIChpdGVtKSB7XG4gICAgICBjYXNlICdoZWF0JzpcbiAgICAgICAgayA9IGtldHRsZS5oZWF0ZXI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY29vbCc6XG4gICAgICAgIGsgPSBrZXR0bGUuY29vbGVyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3B1bXAnOlxuICAgICAgICBrID0ga2V0dGxlLnB1bXA7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmKCFrKVxuICAgICAgcmV0dXJuO1xuXG4gICAgay5ydW5uaW5nID0gIWsucnVubmluZztcblxuICAgIGlmKGtldHRsZS5hY3RpdmUgJiYgay5ydW5uaW5nKXtcbiAgICAgIC8vc3RhcnQgdGhlIHJlbGF5XG4gICAgICAkc2NvcGUudG9nZ2xlUmVsYXkoa2V0dGxlLCBrLCB0cnVlKTtcbiAgICB9IGVsc2UgaWYoIWsucnVubmluZyl7XG4gICAgICAvL3N0b3AgdGhlIHJlbGF5XG4gICAgICAkc2NvcGUudG9nZ2xlUmVsYXkoa2V0dGxlLCBrLCBmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gICRzY29wZS5rbm9iQ2xpY2sgPSBmdW5jdGlvbihrZXR0bGUpe1xuICAgICAgLy9zZXQgYWRqdXN0bWVudCBhbW91bnRcbiAgICAgIGlmKCEha2V0dGxlLnRlbXAucHJldmlvdXMpe1xuICAgICAgICBrZXR0bGUudGVtcC5hZGp1c3QgPSBrZXR0bGUudGVtcC5jdXJyZW50IC0ga2V0dGxlLnRlbXAucHJldmlvdXM7XG4gICAgICB9XG4gIH07XG5cbiAgJHNjb3BlLnN0YXJ0U3RvcEtldHRsZSA9IGZ1bmN0aW9uKGtldHRsZSl7XG4gICAgICBrZXR0bGUuYWN0aXZlID0gIWtldHRsZS5hY3RpdmU7XG4gICAgICAkc2NvcGUucmVzZXRFcnJvcihrZXR0bGUpO1xuXG4gICAgICBpZihrZXR0bGUuYWN0aXZlKXtcbiAgICAgICAga2V0dGxlLmtub2Iuc3ViVGV4dC50ZXh0ID0gJ3N0YXJ0aW5nLi4uJztcbiAgICAgICAga2V0dGxlLmtub2IucmVhZE9ubHkgPSBmYWxzZTtcblxuICAgICAgICBCcmV3U2VydmljZS50ZW1wKGtldHRsZSlcbiAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiAkc2NvcGUudXBkYXRlVGVtcChyZXNwb25zZSwga2V0dGxlKSlcbiAgICAgICAgICAuY2F0Y2goZXJyID0+ICRzY29wZS5zZXRFcnJvck1lc3NhZ2UoZXJyLCBrZXR0bGUpKTtcblxuICAgICAgICAvLyBzdGFydCB0aGUgcmVsYXlzXG4gICAgICAgIGlmKGtldHRsZS5oZWF0ZXIucnVubmluZyl7XG4gICAgICAgICAgJHNjb3BlLnRvZ2dsZVJlbGF5KGtldHRsZSwga2V0dGxlLmhlYXRlciwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYoa2V0dGxlLnB1bXAucnVubmluZyl7XG4gICAgICAgICAgJHNjb3BlLnRvZ2dsZVJlbGF5KGtldHRsZSwga2V0dGxlLnB1bXAsIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmKGtldHRsZS5jb29sZXIgJiYga2V0dGxlLmNvb2xlci5ydW5uaW5nKXtcbiAgICAgICAgICAkc2NvcGUudG9nZ2xlUmVsYXkoa2V0dGxlLCBrZXR0bGUuY29vbGVyLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAga2V0dGxlLmtub2IucmVhZE9ubHkgPSB0cnVlO1xuICAgICAgICAvL3N0b3AgdGhlIGhlYXRlclxuICAgICAgICBpZigha2V0dGxlLmFjdGl2ZSAmJiBrZXR0bGUuaGVhdGVyLnJ1bm5pbmcpe1xuICAgICAgICAgICRzY29wZS50b2dnbGVSZWxheShrZXR0bGUsIGtldHRsZS5oZWF0ZXIsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICAvL3N0b3AgdGhlIHB1bXBcbiAgICAgICAgaWYoIWtldHRsZS5hY3RpdmUgJiYga2V0dGxlLnB1bXAucnVubmluZyl7XG4gICAgICAgICAgJHNjb3BlLnRvZ2dsZVJlbGF5KGtldHRsZSwga2V0dGxlLnB1bXAsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICAvL3N0b3AgdGhlIGNvb2xlclxuICAgICAgICBpZigha2V0dGxlLmFjdGl2ZSAmJiBrZXR0bGUuY29vbGVyICYmIGtldHRsZS5jb29sZXIucnVubmluZyl7XG4gICAgICAgICAgJHNjb3BlLnRvZ2dsZVJlbGF5KGtldHRsZSwga2V0dGxlLmNvb2xlciwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIGlmKCFrZXR0bGUuYWN0aXZlKXtcbiAgICAgICAgICBrZXR0bGUucHVtcC5hdXRvPWZhbHNlO1xuICAgICAgICAgIGtldHRsZS5oZWF0ZXIuYXV0bz1mYWxzZTtcbiAgICAgICAgICBpZihrZXR0bGUuY29vbGVyKVxuICAgICAgICAgICAga2V0dGxlLmNvb2xlci5hdXRvPWZhbHNlO1xuICAgICAgICAgICRzY29wZS51cGRhdGVLbm9iQ29weShrZXR0bGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gIH07XG5cbiAgJHNjb3BlLnRvZ2dsZVJlbGF5ID0gZnVuY3Rpb24oa2V0dGxlLCBlbGVtZW50LCBvbil7XG4gICAgaWYob24pIHtcbiAgICAgIGlmKGVsZW1lbnQucGluLmluZGV4T2YoJ1RQLScpPT09MCl7XG4gICAgICAgIGxldCBkZXZpY2UgPSBfLmZpbHRlcigkc2NvcGUuc2V0dGluZ3MudHBsaW5rLnBsdWdzLHtkZXZpY2VJZDogZWxlbWVudC5waW4uc3Vic3RyKDMpfSlbMF07XG4gICAgICAgIHJldHVybiBCcmV3U2VydmljZS50cGxpbmsoKS5vbihkZXZpY2UpXG4gICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgLy9zdGFydGVkXG4gICAgICAgICAgICBlbGVtZW50LnJ1bm5pbmc9dHJ1ZTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiAkc2NvcGUuc2V0RXJyb3JNZXNzYWdlKGVyciwga2V0dGxlKSk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmKGVsZW1lbnQucHdtKXtcbiAgICAgICAgcmV0dXJuIEJyZXdTZXJ2aWNlLmFuYWxvZyhrZXR0bGUsIGVsZW1lbnQucGluLE1hdGgucm91bmQoMjU1KmVsZW1lbnQuZHV0eUN5Y2xlLzEwMCkpXG4gICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgLy9zdGFydGVkXG4gICAgICAgICAgICBlbGVtZW50LnJ1bm5pbmc9dHJ1ZTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiAkc2NvcGUuc2V0RXJyb3JNZXNzYWdlKGVyciwga2V0dGxlKSk7XG4gICAgICB9IGVsc2UgaWYoZWxlbWVudC5zc3Ipe1xuICAgICAgICByZXR1cm4gQnJld1NlcnZpY2UuYW5hbG9nKGtldHRsZSwgZWxlbWVudC5waW4sMjU1KVxuICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIC8vc3RhcnRlZFxuICAgICAgICAgICAgZWxlbWVudC5ydW5uaW5nPXRydWU7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGVycikgPT4gJHNjb3BlLnNldEVycm9yTWVzc2FnZShlcnIsIGtldHRsZSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIEJyZXdTZXJ2aWNlLmRpZ2l0YWwoa2V0dGxlLCBlbGVtZW50LnBpbiwxKVxuICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIC8vc3RhcnRlZFxuICAgICAgICAgICAgZWxlbWVudC5ydW5uaW5nPXRydWU7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGVycikgPT4gJHNjb3BlLnNldEVycm9yTWVzc2FnZShlcnIsIGtldHRsZSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZihlbGVtZW50LnBpbi5pbmRleE9mKCdUUC0nKT09PTApe1xuICAgICAgICBsZXQgZGV2aWNlID0gXy5maWx0ZXIoJHNjb3BlLnNldHRpbmdzLnRwbGluay5wbHVncyx7ZGV2aWNlSWQ6IGVsZW1lbnQucGluLnN1YnN0cigzKX0pWzBdO1xuICAgICAgICByZXR1cm4gQnJld1NlcnZpY2UudHBsaW5rKCkub2ZmKGRldmljZSlcbiAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAvL3N0YXJ0ZWRcbiAgICAgICAgICAgIGVsZW1lbnQucnVubmluZz1mYWxzZTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiAkc2NvcGUuc2V0RXJyb3JNZXNzYWdlKGVyciwga2V0dGxlKSk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmKGVsZW1lbnQucHdtIHx8IGVsZW1lbnQuc3NyKXtcbiAgICAgICAgcmV0dXJuIEJyZXdTZXJ2aWNlLmFuYWxvZyhrZXR0bGUsIGVsZW1lbnQucGluLDApXG4gICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgZWxlbWVudC5ydW5uaW5nPWZhbHNlO1xuICAgICAgICAgICAgJHNjb3BlLnVwZGF0ZUtub2JDb3B5KGtldHRsZSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGVycikgPT4gJHNjb3BlLnNldEVycm9yTWVzc2FnZShlcnIsIGtldHRsZSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIEJyZXdTZXJ2aWNlLmRpZ2l0YWwoa2V0dGxlLCBlbGVtZW50LnBpbiwwKVxuICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGVsZW1lbnQucnVubmluZz1mYWxzZTtcbiAgICAgICAgICAgICRzY29wZS51cGRhdGVLbm9iQ29weShrZXR0bGUpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnIpID0+ICRzY29wZS5zZXRFcnJvck1lc3NhZ2UoZXJyLCBrZXR0bGUpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAkc2NvcGUuaW1wb3J0U2V0dGluZ3MgPSBmdW5jdGlvbigkZmlsZUNvbnRlbnQsJGV4dCl7XG4gICAgdHJ5IHtcbiAgICAgIGxldCBwcm9maWxlQ29udGVudCA9IEpTT04ucGFyc2UoJGZpbGVDb250ZW50KTtcbiAgICAgICRzY29wZS5zZXR0aW5ncyA9IHByb2ZpbGVDb250ZW50LnNldHRpbmdzIHx8IEJyZXdTZXJ2aWNlLnJlc2V0KCk7XG4gICAgICAkc2NvcGUua2V0dGxlcyA9IHByb2ZpbGVDb250ZW50LmtldHRsZXMgfHwgQnJld1NlcnZpY2UuZGVmYXVsdEtldHRsZXMoKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgLy8gZXJyb3IgaW1wb3J0aW5nXG4gICAgICAkc2NvcGUuc2V0RXJyb3JNZXNzYWdlKGUpO1xuICAgIH1cbiAgfTtcblxuICAkc2NvcGUuZXhwb3J0U2V0dGluZ3MgPSBmdW5jdGlvbigpe1xuICAgIGxldCBrZXR0bGVzID0gYW5ndWxhci5jb3B5KCRzY29wZS5rZXR0bGVzKTtcbiAgICBfLmVhY2goa2V0dGxlcywgKGtldHRsZSwgaSkgPT4ge1xuICAgICAga2V0dGxlc1tpXS52YWx1ZXMgPSBbXTtcbiAgICAgIGtldHRsZXNbaV0uYWN0aXZlID0gZmFsc2U7XG4gICAgfSk7XG4gICAgcmV0dXJuIFwiZGF0YTp0ZXh0L2pzb247Y2hhcnNldD11dGYtOCxcIiArIGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeSh7XCJzZXR0aW5nc1wiOiAkc2NvcGUuc2V0dGluZ3MsXCJrZXR0bGVzXCI6IGtldHRsZXN9KSk7XG4gIH07XG5cbiAgJHNjb3BlLmRvd25sb2FkSW5mbHV4REJTa2V0Y2ggPSBmdW5jdGlvbigpe1xuICAgIGlmKCEkc2NvcGUuc2V0dGluZ3MuaW5mbHV4ZGIudXJsKSByZXR1cm47XG5cbiAgICBsZXQga2V0dGxlcyA9IFwiXCI7XG4gICAgbGV0IGNvbm5lY3Rpb25fc3RyaW5nID0gYCR7JHNjb3BlLnNldHRpbmdzLmluZmx1eGRiLnVybH1gO1xuICAgIGlmKCAhISRzY29wZS5zZXR0aW5ncy5pbmZsdXhkYi5wb3J0IClcbiAgICAgIGNvbm5lY3Rpb25fc3RyaW5nICs9IGA6JHskc2NvcGUuc2V0dGluZ3MuaW5mbHV4ZGIucG9ydH1gO1xuICAgIGNvbm5lY3Rpb25fc3RyaW5nICs9ICcvd3JpdGU/JztcbiAgICAvLyBhZGQgdXNlci9wYXNzXG4gICAgaWYoISEkc2NvcGUuc2V0dGluZ3MuaW5mbHV4ZGIudXNlciAmJiAhISRzY29wZS5zZXR0aW5ncy5pbmZsdXhkYi5wYXNzKVxuICAgICAgY29ubmVjdGlvbl9zdHJpbmcgKz0gYHU9JHskc2NvcGUuc2V0dGluZ3MuaW5mbHV4ZGIudXNlcn0mcD0keyRzY29wZS5zZXR0aW5ncy5pbmZsdXhkYi5wYXNzfSZgXG4gICAgLy8gYWRkIGRiXG4gICAgY29ubmVjdGlvbl9zdHJpbmcgKz0gJ2RiPScrKCRzY29wZS5zZXR0aW5ncy5pbmZsdXhkYi5kYiB8fCAnc2Vzc2lvbi0nK21vbWVudCgpLmZvcm1hdCgnWVlZWS1NTS1ERCcpKTtcblxuICAgIF8uZWFjaCgkc2NvcGUua2V0dGxlcywgKGtldHRsZSwgaSkgPT4ge1xuICAgICAgaWYoIGtldHRsZS50ZW1wLnR5cGUgPT0gJ1RoZXJtaXN0b3InIClcbiAgICAgICAga2V0dGxlcyArPSAndGhlcm1pc3RvckluZmx1eERCQ29tbWFuZChcIicra2V0dGxlLmtleS5yZXBsYWNlKC9bXmEtekEtWjAtOS0uXS9nLCBcIlwiKSsnXCIsXCInK2tldHRsZS50ZW1wLnBpbisnXCIpO1xcbic7XG4gICAgICBlbHNlIGlmKCBrZXR0bGUudGVtcC50eXBlID09ICdEUzE4QjIwJyApXG4gICAgICAgIGtldHRsZXMgKz0gJ2RzMThCMjBJbmZsdXhEQkNvbW1hbmQoXCInK2tldHRsZS5rZXkucmVwbGFjZSgvW15hLXpBLVowLTktLl0vZywgXCJcIikrJ1wiLFwiJytrZXR0bGUudGVtcC5waW4rJ1wiKTtcXG4nO1xuICAgICAgZWxzZSBpZigga2V0dGxlLnRlbXAudHlwZSA9PSAnUFQxMDAnIClcbiAgICAgICAga2V0dGxlcyArPSAncHQxMDBJbmZsdXhEQkNvbW1hbmQoXCInK2tldHRsZS5rZXkucmVwbGFjZSgvW15hLXpBLVowLTktLl0vZywgXCJcIikrJ1wiLFwiJytrZXR0bGUudGVtcC5waW4rJ1wiKTtcXG4nO1xuICAgICAgZWxzZSBpZigga2V0dGxlLnRlbXAudHlwZSA9PSAnREhUMTEnIClcbiAgICAgICAga2V0dGxlcyArPSAnZGh0MTFJbmZsdXhEQkNvbW1hbmQoXCInK2tldHRsZS5rZXkucmVwbGFjZSgvW15hLXpBLVowLTktLl0vZywgXCJcIikrJ1wiLFwiJytrZXR0bGUudGVtcC5waW4rJ1wiKTtcXG4nO1xuICAgICAgZWxzZSBpZigga2V0dGxlLnRlbXAudHlwZSA9PSAnREhUMjEnIClcbiAgICAgICAga2V0dGxlcyArPSAnZGh0MjFJbmZsdXhEQkNvbW1hbmQoXCInK2tldHRsZS5rZXkucmVwbGFjZSgvW15hLXpBLVowLTktLl0vZywgXCJcIikrJ1wiLFwiJytrZXR0bGUudGVtcC5waW4rJ1wiKTtcXG4nO1xuICAgICAgZWxzZSBpZigga2V0dGxlLnRlbXAudHlwZSA9PSAnREhUMjInIClcbiAgICAgICAga2V0dGxlcyArPSAnZGh0MjJJbmZsdXhEQkNvbW1hbmQoXCInK2tldHRsZS5rZXkucmVwbGFjZSgvW15hLXpBLVowLTktLl0vZywgXCJcIikrJ1wiLFwiJytrZXR0bGUudGVtcC5waW4rJ1wiKTtcXG4nO1xuICAgIH0pO1xuICAgIHJldHVybiAkaHR0cC5nZXQoJ2Fzc2V0cy9CcmV3QmVuY2hJbmZsdXhEQll1bi9CcmV3QmVuY2hJbmZsdXhEQll1bi5pbm8nKVxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAvLyByZXBsYWNlIHZhcmlhYmxlc1xuICAgICAgICByZXNwb25zZS5kYXRhID0gcmVzcG9uc2UuZGF0YVxuICAgICAgICAgIC5yZXBsYWNlKCcvLyBba2V0dGxlc10nLCBrZXR0bGVzKVxuICAgICAgICAgIC5yZXBsYWNlKCdbSU5GTFVYREJfQ09OTkVDVElPTl0nLCBjb25uZWN0aW9uX3N0cmluZylcbiAgICAgICAgICAucmVwbGFjZSgnW0ZSRVFVRU5DWV9TRUNPTkRTXScsICRzY29wZS5zZXR0aW5ncy5pbmZsdXhkYi5mcmVxdWVuY3kgPyBwYXJzZUludCgkc2NvcGUuc2V0dGluZ3MuaW5mbHV4ZGIuZnJlcXVlbmN5LDEwKSA6IDYwKTtcbiAgICAgICAgbGV0IHN0cmVhbVNrZXRjaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgc3RyZWFtU2tldGNoLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCAnQnJld0JlbmNoSW5mbHV4REJZdW4uaW5vJyk7XG4gICAgICAgIHN0cmVhbVNrZXRjaC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBcImRhdGE6dGV4dC9pbm87Y2hhcnNldD11dGYtOCxcIiArIGVuY29kZVVSSUNvbXBvbmVudChyZXNwb25zZS5kYXRhKSk7XG4gICAgICAgIHN0cmVhbVNrZXRjaC5jbGljaygpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAkc2NvcGUuc2V0RXJyb3JNZXNzYWdlKGBGYWlsZWQgdG8gZG93bmxvYWQgc2tldGNoICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICB9KTtcbiAgfTtcblxuICAkc2NvcGUuZG93bmxvYWRTdHJlYW1zU2tldGNoID0gZnVuY3Rpb24oc2Vzc2lvbklkKXtcbiAgICBsZXQga2V0dGxlcyA9IFwiXCI7XG4gICAgXy5lYWNoKCRzY29wZS5rZXR0bGVzLCAoa2V0dGxlLCBpKSA9PiB7XG4gICAgICBpZigga2V0dGxlLnRlbXAudHlwZSA9PSAnVGhlcm1pc3RvcicgKVxuICAgICAgICBrZXR0bGVzICs9ICd0aGVybWlzdG9yQVBJQ29tbWFuZChcIicra2V0dGxlLmtleSsnXCIsXCInK2tldHRsZS50ZW1wLnBpbisnXCIpO1xcbiAgJztcbiAgICAgIGVsc2UgaWYoIGtldHRsZS50ZW1wLnR5cGUgPT0gJ0RTMThCMjAnIClcbiAgICAgICAga2V0dGxlcyArPSAnZHMxOEIyMEFQSUNvbW1hbmQoXCInK2tldHRsZS5rZXkrJ1wiLFwiJytrZXR0bGUudGVtcC5waW4rJ1wiKTtcXG4gICc7XG4gICAgICBlbHNlIGlmKCBrZXR0bGUudGVtcC50eXBlID09ICdQVDEwMCcgKVxuICAgICAgICBrZXR0bGVzICs9ICdwdDEwMEFQSUNvbW1hbmQoXCInK2tldHRsZS5rZXkrJ1wiLFwiJytrZXR0bGUudGVtcC5waW4rJ1wiKTtcXG4gICc7XG4gICAgfSk7XG4gICAgcmV0dXJuICRodHRwLmdldCgnYXNzZXRzL0JyZXdCZW5jaFN0cmVhbXNZdW4vQnJld0JlbmNoU3RyZWFtc1l1bi5pbm8nKVxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICByZXNwb25zZS5kYXRhID0gcmVzcG9uc2UuZGF0YVxuICAgICAgICAgIC5yZXBsYWNlKCcvLyBba2V0dGxlc10nLCBrZXR0bGVzKVxuICAgICAgICAgIC5yZXBsYWNlKCdbQVBJX0tFWV0nLCAkc2NvcGUuc2V0dGluZ3MuYWNjb3VudC5hcGlLZXkpXG4gICAgICAgICAgLnJlcGxhY2UoJ1tTRVNTSU9OX0lEXScsIHNlc3Npb25JZCk7XG4gICAgICAgIGxldCBzdHJlYW1Ta2V0Y2ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgIHN0cmVhbVNrZXRjaC5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgJ0JyZXdCZW5jaFN0cmVhbXNZdW4uaW5vJyk7XG4gICAgICAgIHN0cmVhbVNrZXRjaC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBcImRhdGE6dGV4dC9pbm87Y2hhcnNldD11dGYtOCxcIiArIGVuY29kZVVSSUNvbXBvbmVudChyZXNwb25zZS5kYXRhKSk7XG4gICAgICAgIHN0cmVhbVNrZXRjaC5jbGljaygpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAkc2NvcGUuc2V0RXJyb3JNZXNzYWdlKGBGYWlsZWQgdG8gZG93bmxvYWQgc2tldGNoICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICB9KTtcbiAgfTtcblxuICAkc2NvcGUuZ2V0SVBBZGRyZXNzID0gZnVuY3Rpb24oKXtcbiAgICAkc2NvcGUuc2V0dGluZ3MuaXBBZGRyZXNzID0gXCJcIjtcbiAgICBCcmV3U2VydmljZS5pcCgpXG4gICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICRzY29wZS5zZXR0aW5ncy5pcEFkZHJlc3MgPSByZXNwb25zZS5pcDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgJHNjb3BlLmVycm9yLm1lc3NhZ2UgPSAkc2NvcGUuc2V0RXJyb3JNZXNzYWdlKGVycik7XG4gICAgICB9KTtcbiAgfTtcblxuICAkc2NvcGUuYWxlcnQgPSBmdW5jdGlvbihrZXR0bGUsdGltZXIpe1xuXG4gICAgLy9kb24ndCBzdGFydCBhbGVydHMgdW50aWwgd2UgaGF2ZSBoaXQgdGhlIHRlbXAudGFyZ2V0XG4gICAgaWYoIXRpbWVyICYmIGtldHRsZSAmJiAha2V0dGxlLnRlbXAuaGl0XG4gICAgICB8fCAkc2NvcGUuc2V0dGluZ3Mubm90aWZpY2F0aW9ucy5vbiA9PT0gZmFsc2Upe1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRGVza3RvcCAvIFNsYWNrIE5vdGlmaWNhdGlvblxuICAgIGxldCBtZXNzYWdlLFxuICAgICAgaWNvbiA9ICcvYXNzZXRzL2ltZy9icmV3YmVuY2gtbG9nby5wbmcnLFxuICAgICAgY29sb3IgPSAnZ29vZCc7XG5cbiAgICBpZihrZXR0bGUgJiYgWydob3AnLCdncmFpbicsJ3dhdGVyJywnZmVybWVudGVyJ10uaW5kZXhPZihrZXR0bGUudHlwZSkhPT0tMSlcbiAgICAgIGljb24gPSAnL2Fzc2V0cy9pbWcvJytrZXR0bGUudHlwZSsnLnBuZyc7XG5cbiAgICAvL2Rvbid0IGFsZXJ0IGlmIHRoZSBoZWF0ZXIgaXMgcnVubmluZyBhbmQgdGVtcCBpcyB0b28gbG93XG4gICAgaWYoa2V0dGxlICYmIGtldHRsZS5sb3cgJiYga2V0dGxlLmhlYXRlci5ydW5uaW5nKVxuICAgICAgcmV0dXJuO1xuXG4gICAgaWYoISF0aW1lcil7IC8va2V0dGxlIGlzIGEgdGltZXIgb2JqZWN0XG4gICAgICBpZighJHNjb3BlLnNldHRpbmdzLm5vdGlmaWNhdGlvbnMudGltZXJzKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZih0aW1lci51cClcbiAgICAgICAgbWVzc2FnZSA9ICdZb3VyIHRpbWVycyBhcmUgZG9uZSc7XG4gICAgICBlbHNlIGlmKCEhdGltZXIubm90ZXMpXG4gICAgICAgIG1lc3NhZ2UgPSAnVGltZSB0byBhZGQgJyt0aW1lci5ub3RlcysnIG9mICcrdGltZXIubGFiZWw7XG4gICAgICBlbHNlXG4gICAgICAgIG1lc3NhZ2UgPSAnVGltZSB0byBhZGQgJyt0aW1lci5sYWJlbDtcbiAgICB9XG4gICAgZWxzZSBpZihrZXR0bGUgJiYga2V0dGxlLmhpZ2gpe1xuICAgICAgaWYoISRzY29wZS5zZXR0aW5ncy5ub3RpZmljYXRpb25zLmhpZ2ggfHwgJHNjb3BlLnNldHRpbmdzLm5vdGlmaWNhdGlvbnMubGFzdD09J2hpZ2gnKVxuICAgICAgICByZXR1cm47XG4gICAgICBtZXNzYWdlID0gJ1lvdXIgJytrZXR0bGUua2V5Kycga2V0dGxlIGlzICcrKGtldHRsZS5oaWdoLWtldHRsZS50ZW1wLmRpZmYpKydcXHUwMEIwIGhpZ2gnO1xuICAgICAgY29sb3IgPSAnZGFuZ2VyJztcbiAgICAgICRzY29wZS5zZXR0aW5ncy5ub3RpZmljYXRpb25zLmxhc3Q9J2hpZ2gnO1xuICAgIH1cbiAgICBlbHNlIGlmKGtldHRsZSAmJiBrZXR0bGUubG93KXtcbiAgICAgIGlmKCEkc2NvcGUuc2V0dGluZ3Mubm90aWZpY2F0aW9ucy5sb3cgfHwgJHNjb3BlLnNldHRpbmdzLm5vdGlmaWNhdGlvbnMubGFzdD09J2xvdycpXG4gICAgICAgIHJldHVybjtcbiAgICAgIG1lc3NhZ2UgPSAnWW91ciAnK2tldHRsZS5rZXkrJyBrZXR0bGUgaXMgJysoa2V0dGxlLmxvdy1rZXR0bGUudGVtcC5kaWZmKSsnXFx1MDBCMCBsb3cnO1xuICAgICAgY29sb3IgPSAnIzM0OThEQic7XG4gICAgICAkc2NvcGUuc2V0dGluZ3Mubm90aWZpY2F0aW9ucy5sYXN0PSdsb3cnO1xuICAgIH1cbiAgICBlbHNlIGlmKGtldHRsZSl7XG4gICAgICBpZighJHNjb3BlLnNldHRpbmdzLm5vdGlmaWNhdGlvbnMudGFyZ2V0IHx8ICRzY29wZS5zZXR0aW5ncy5ub3RpZmljYXRpb25zLmxhc3Q9PSd0YXJnZXQnKVxuICAgICAgICByZXR1cm47XG4gICAgICBtZXNzYWdlID0gJ1lvdXIgJytrZXR0bGUua2V5Kycga2V0dGxlIGlzIHdpdGhpbiB0aGUgdGFyZ2V0IGF0ICcra2V0dGxlLnRlbXAuY3VycmVudCsnXFx1MDBCMCc7XG4gICAgICBjb2xvciA9ICdnb29kJztcbiAgICAgICRzY29wZS5zZXR0aW5ncy5ub3RpZmljYXRpb25zLmxhc3Q9J3RhcmdldCc7XG4gICAgfVxuICAgIGVsc2UgaWYoIWtldHRsZSl7XG4gICAgICBtZXNzYWdlID0gJ1Rlc3RpbmcgQWxlcnRzLCB5b3UgYXJlIHJlYWR5IHRvIGdvLCBjbGljayBwbGF5IG9uIGEga2V0dGxlLic7XG4gICAgfVxuXG4gICAgLy8gTW9iaWxlIFZpYnJhdGUgTm90aWZpY2F0aW9uXG4gICAgaWYgKFwidmlicmF0ZVwiIGluIG5hdmlnYXRvcikge1xuICAgICAgbmF2aWdhdG9yLnZpYnJhdGUoWzUwMCwgMzAwLCA1MDBdKTtcbiAgICB9XG5cbiAgICAvLyBTb3VuZCBOb3RpZmljYXRpb25cbiAgICBpZigkc2NvcGUuc2V0dGluZ3Muc291bmRzLm9uPT09dHJ1ZSl7XG4gICAgICAvL2Rvbid0IGFsZXJ0IGlmIHRoZSBoZWF0ZXIgaXMgcnVubmluZyBhbmQgdGVtcCBpcyB0b28gbG93XG4gICAgICBpZighIXRpbWVyICYmIGtldHRsZSAmJiBrZXR0bGUubG93ICYmIGtldHRsZS5oZWF0ZXIucnVubmluZylcbiAgICAgICAgcmV0dXJuO1xuICAgICAgdmFyIHNuZCA9IG5ldyBBdWRpbygoISF0aW1lcikgPyAkc2NvcGUuc2V0dGluZ3Muc291bmRzLnRpbWVyIDogJHNjb3BlLnNldHRpbmdzLnNvdW5kcy5hbGVydCk7IC8vIGJ1ZmZlcnMgYXV0b21hdGljYWxseSB3aGVuIGNyZWF0ZWRcbiAgICAgIHNuZC5wbGF5KCk7XG4gICAgfVxuXG4gICAgLy8gV2luZG93IE5vdGlmaWNhdGlvblxuICAgIGlmKFwiTm90aWZpY2F0aW9uXCIgaW4gd2luZG93KXtcbiAgICAgIC8vY2xvc2UgdGhlIHByZXZpb3VzIG5vdGlmaWNhdGlvblxuICAgICAgaWYobm90aWZpY2F0aW9uKVxuICAgICAgICBub3RpZmljYXRpb24uY2xvc2UoKTtcblxuICAgICAgaWYoTm90aWZpY2F0aW9uLnBlcm1pc3Npb24gPT09IFwiZ3JhbnRlZFwiKXtcbiAgICAgICAgaWYobWVzc2FnZSl7XG4gICAgICAgICAgaWYoa2V0dGxlKVxuICAgICAgICAgICAgbm90aWZpY2F0aW9uID0gbmV3IE5vdGlmaWNhdGlvbihrZXR0bGUua2V5Kycga2V0dGxlJyx7Ym9keTptZXNzYWdlLGljb246aWNvbn0pO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG5vdGlmaWNhdGlvbiA9IG5ldyBOb3RpZmljYXRpb24oJ1Rlc3Qga2V0dGxlJyx7Ym9keTptZXNzYWdlLGljb246aWNvbn0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYoTm90aWZpY2F0aW9uLnBlcm1pc3Npb24gIT09ICdkZW5pZWQnKXtcbiAgICAgICAgTm90aWZpY2F0aW9uLnJlcXVlc3RQZXJtaXNzaW9uKGZ1bmN0aW9uIChwZXJtaXNzaW9uKSB7XG4gICAgICAgICAgLy8gSWYgdGhlIHVzZXIgYWNjZXB0cywgbGV0J3MgY3JlYXRlIGEgbm90aWZpY2F0aW9uXG4gICAgICAgICAgaWYgKHBlcm1pc3Npb24gPT09IFwiZ3JhbnRlZFwiKSB7XG4gICAgICAgICAgICBpZihtZXNzYWdlKXtcbiAgICAgICAgICAgICAgbm90aWZpY2F0aW9uID0gbmV3IE5vdGlmaWNhdGlvbihrZXR0bGUua2V5Kycga2V0dGxlJyx7Ym9keTptZXNzYWdlLGljb246aWNvbn0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFNsYWNrIE5vdGlmaWNhdGlvblxuICAgIGlmKCRzY29wZS5zZXR0aW5ncy5ub3RpZmljYXRpb25zLnNsYWNrLmluZGV4T2YoJ2h0dHAnKSA9PT0gMCl7XG4gICAgICBCcmV3U2VydmljZS5zbGFjaygkc2NvcGUuc2V0dGluZ3Mubm90aWZpY2F0aW9ucy5zbGFjayxcbiAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgIGNvbG9yLFxuICAgICAgICAgIGljb24sXG4gICAgICAgICAga2V0dGxlXG4gICAgICAgICkudGhlbihmdW5jdGlvbihyZXNwb25zZSl7XG4gICAgICAgICAgJHNjb3BlLnJlc2V0RXJyb3IoKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGVycil7XG4gICAgICAgICAgaWYoZXJyLm1lc3NhZ2UpXG4gICAgICAgICAgICAkc2NvcGUuc2V0RXJyb3JNZXNzYWdlKGBGYWlsZWQgcG9zdGluZyB0byBTbGFjayAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICRzY29wZS5zZXRFcnJvck1lc3NhZ2UoYEZhaWxlZCBwb3N0aW5nIHRvIFNsYWNrICR7SlNPTi5zdHJpbmdpZnkoZXJyKX1gKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gICRzY29wZS51cGRhdGVLbm9iQ29weSA9IGZ1bmN0aW9uKGtldHRsZSl7XG5cbiAgICBpZigha2V0dGxlLmFjdGl2ZSl7XG4gICAgICBrZXR0bGUua25vYi50cmFja0NvbG9yID0gJyNkZGQnO1xuICAgICAga2V0dGxlLmtub2IuYmFyQ29sb3IgPSAnIzc3Nyc7XG4gICAgICBrZXR0bGUua25vYi5zdWJUZXh0LnRleHQgPSAnbm90IHJ1bm5pbmcnO1xuICAgICAga2V0dGxlLmtub2Iuc3ViVGV4dC5jb2xvciA9ICdncmF5JztcbiAgICAgIGtldHRsZS5rbm9iLnJlYWRPbmx5ID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYoa2V0dGxlLmVycm9yKXtcbiAgICAgICAga2V0dGxlLmtub2IudHJhY2tDb2xvciA9ICcjZGRkJztcbiAgICAgICAga2V0dGxlLmtub2IuYmFyQ29sb3IgPSAnIzc3Nyc7XG4gICAgICAgIGtldHRsZS5rbm9iLnN1YlRleHQudGV4dCA9ICdlcnJvcic7XG4gICAgICAgIGtldHRsZS5rbm9iLnN1YlRleHQuY29sb3IgPSAnZ3JheSc7XG4gICAgICAgIGtldHRsZS5rbm9iLnJlYWRPbmx5ID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGtldHRsZS5rbm9iLnJlYWRPbmx5ID0gZmFsc2U7XG5cbiAgICAvL2lzIHRlbXAgdG9vIGhpZ2g/XG4gICAgaWYoa2V0dGxlLnRlbXAuY3VycmVudCA+IGtldHRsZS50ZW1wLnRhcmdldCtrZXR0bGUudGVtcC5kaWZmKXtcbiAgICAgIGtldHRsZS5rbm9iLmJhckNvbG9yID0gJ3JnYmEoMjU1LDAsMCwuNiknO1xuICAgICAga2V0dGxlLmtub2IudHJhY2tDb2xvciA9ICdyZ2JhKDI1NSwwLDAsLjEpJztcbiAgICAgIGtldHRsZS5oaWdoID0ga2V0dGxlLnRlbXAuY3VycmVudC1rZXR0bGUudGVtcC50YXJnZXQ7XG4gICAgICBrZXR0bGUubG93ID0gbnVsbDtcbiAgICAgIGlmKGtldHRsZS5jb29sZXIgJiYga2V0dGxlLmNvb2xlci5ydW5uaW5nKXtcbiAgICAgICAga2V0dGxlLmtub2Iuc3ViVGV4dC50ZXh0ID0gJ2Nvb2xpbmcnO1xuICAgICAgICBrZXR0bGUua25vYi5zdWJUZXh0LmNvbG9yID0gJ3JnYmEoNTIsMTUyLDIxOSwxKSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvL3VwZGF0ZSBrbm9iIHRleHRcbiAgICAgICAga2V0dGxlLmtub2Iuc3ViVGV4dC50ZXh0ID0gKGtldHRsZS5oaWdoLWtldHRsZS50ZW1wLmRpZmYpKydcXHUwMEIwIGhpZ2gnO1xuICAgICAgICBrZXR0bGUua25vYi5zdWJUZXh0LmNvbG9yID0gJ3JnYmEoMjU1LDAsMCwuNiknO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZihrZXR0bGUudGVtcC5jdXJyZW50IDwga2V0dGxlLnRlbXAudGFyZ2V0LWtldHRsZS50ZW1wLmRpZmYpe1xuICAgICAga2V0dGxlLmtub2IuYmFyQ29sb3IgPSAncmdiYSg1MiwxNTIsMjE5LC41KSc7XG4gICAgICBrZXR0bGUua25vYi50cmFja0NvbG9yID0gJ3JnYmEoNTIsMTUyLDIxOSwuMSknO1xuICAgICAga2V0dGxlLmxvdyA9IGtldHRsZS50ZW1wLnRhcmdldC1rZXR0bGUudGVtcC5jdXJyZW50O1xuICAgICAga2V0dGxlLmhpZ2ggPSBudWxsO1xuICAgICAgaWYoa2V0dGxlLmhlYXRlci5ydW5uaW5nKXtcbiAgICAgICAga2V0dGxlLmtub2Iuc3ViVGV4dC50ZXh0ID0gJ2hlYXRpbmcnO1xuICAgICAgICBrZXR0bGUua25vYi5zdWJUZXh0LmNvbG9yID0gJ3JnYmEoMjU1LDAsMCwuNiknO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy91cGRhdGUga25vYiB0ZXh0XG4gICAgICAgIGtldHRsZS5rbm9iLnN1YlRleHQudGV4dCA9IChrZXR0bGUubG93LWtldHRsZS50ZW1wLmRpZmYpKydcXHUwMEIwIGxvdyc7XG4gICAgICAgIGtldHRsZS5rbm9iLnN1YlRleHQuY29sb3IgPSAncmdiYSg1MiwxNTIsMjE5LDEpJztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAga2V0dGxlLmtub2IuYmFyQ29sb3IgPSAncmdiYSg0NCwxOTMsMTMzLC42KSc7XG4gICAgICBrZXR0bGUua25vYi50cmFja0NvbG9yID0gJ3JnYmEoNDQsMTkzLDEzMywuMSknO1xuICAgICAga2V0dGxlLmtub2Iuc3ViVGV4dC50ZXh0ID0gJ3dpdGhpbiB0YXJnZXQnO1xuICAgICAga2V0dGxlLmtub2Iuc3ViVGV4dC5jb2xvciA9ICdncmF5JztcbiAgICAgIGtldHRsZS5sb3cgPSBudWxsO1xuICAgICAga2V0dGxlLmhpZ2ggPSBudWxsO1xuICAgIH1cbiAgICAvLyB1cGRhdGUgc3VidGV4dCB0byBpbmNsdWRlIGh1bWlkaXR5XG4gICAgaWYoa2V0dGxlLmh1bWlkaXR5KXtcbiAgICAgIGtldHRsZS5rbm9iLnN1YlRleHQudGV4dCA9IGtldHRsZS5odW1pZGl0eSsnJSc7XG4gICAgICBrZXR0bGUua25vYi5zdWJUZXh0LmNvbG9yID0gJ2dyYXknO1xuICAgIH1cbiAgfTtcblxuICAkc2NvcGUuY2hhbmdlS2V0dGxlVHlwZSA9IGZ1bmN0aW9uKGtldHRsZSl7XG4gICAgLy9kb24ndCBhbGxvdyBjaGFuZ2luZyBrZXR0bGVzIG9uIHNoYXJlZCBzZXNzaW9uc1xuICAgIC8vdGhpcyBjb3VsZCBiZSBkYW5nZXJvdXMgaWYgZG9pbmcgdGhpcyByZW1vdGVseVxuICAgIGlmKCRzY29wZS5zZXR0aW5ncy5zaGFyZWQpXG4gICAgICByZXR1cm47XG4gICAgLy8gZmluZCBjdXJyZW50IGtldHRsZVxuICAgIHZhciBrZXR0bGVJbmRleCA9IF8uZmluZEluZGV4KCRzY29wZS5rZXR0bGVUeXBlcywge3R5cGU6IGtldHRsZS50eXBlfSk7XG4gICAgLy8gbW92ZSB0byBuZXh0IG9yIGZpcnN0IGtldHRsZSBpbiBhcnJheVxuICAgIGtldHRsZUluZGV4Kys7XG4gICAgdmFyIGtldHRsZVR5cGUgPSAoJHNjb3BlLmtldHRsZVR5cGVzW2tldHRsZUluZGV4XSkgPyAkc2NvcGUua2V0dGxlVHlwZXNba2V0dGxlSW5kZXhdIDogJHNjb3BlLmtldHRsZVR5cGVzWzBdO1xuICAgIC8vdXBkYXRlIGtldHRsZSBvcHRpb25zIGlmIGNoYW5nZWRcbiAgICBrZXR0bGUua2V5ID0ga2V0dGxlVHlwZS5uYW1lO1xuICAgIGtldHRsZS50eXBlID0ga2V0dGxlVHlwZS50eXBlO1xuICAgIGtldHRsZS50ZW1wLnRhcmdldCA9IGtldHRsZVR5cGUudGFyZ2V0O1xuICAgIGtldHRsZS50ZW1wLmRpZmYgPSBrZXR0bGVUeXBlLmRpZmY7XG4gICAga2V0dGxlLmtub2IgPSBhbmd1bGFyLmNvcHkoQnJld1NlcnZpY2UuZGVmYXVsdEtub2JPcHRpb25zKCkse3ZhbHVlOmtldHRsZS50ZW1wLmN1cnJlbnQsbWluOjAsbWF4OmtldHRsZVR5cGUudGFyZ2V0K2tldHRsZVR5cGUuZGlmZn0pO1xuICAgIGlmKGtldHRsZVR5cGUudHlwZSA9PSAnZmVybWVudGVyJyB8fCBrZXR0bGVUeXBlLnR5cGUgPT0gJ2FpcicpXG4gICAgICBrZXR0bGUuY29vbGVyID0ge3BpbjonRDInLHJ1bm5pbmc6ZmFsc2UsYXV0bzpmYWxzZSxwd206ZmFsc2UsZHV0eUN5Y2xlOjEwMH07XG4gICAgZWxzZVxuICAgICAgZGVsZXRlIGtldHRsZS5jb29sZXI7XG4gIH07XG5cbiAgJHNjb3BlLmNoYW5nZVVuaXRzID0gZnVuY3Rpb24odW5pdCl7XG4gICAgaWYoJHNjb3BlLnNldHRpbmdzLnVuaXQgIT0gdW5pdCl7XG4gICAgICAkc2NvcGUuc2V0dGluZ3MudW5pdCA9IHVuaXQ7XG4gICAgICBfLmVhY2goJHNjb3BlLmtldHRsZXMsZnVuY3Rpb24oa2V0dGxlKXtcbiAgICAgICAga2V0dGxlLnRlbXAuY3VycmVudCA9ICRmaWx0ZXIoJ2Zvcm1hdERlZ3JlZXMnKShrZXR0bGUudGVtcC5jdXJyZW50LHVuaXQpO1xuICAgICAgICBrZXR0bGUudGVtcC50YXJnZXQgPSAkZmlsdGVyKCdmb3JtYXREZWdyZWVzJykoa2V0dGxlLnRlbXAudGFyZ2V0LHVuaXQpO1xuICAgICAgICAvLyB1cGRhdGUga25vYlxuICAgICAgICBrZXR0bGUua25vYi52YWx1ZSA9IGtldHRsZS50ZW1wLmN1cnJlbnQ7XG4gICAgICAgIGtldHRsZS5rbm9iLm1heCA9IGtldHRsZS50ZW1wLnRhcmdldCtrZXR0bGUudGVtcC5kaWZmKzEwO1xuICAgICAgICAkc2NvcGUudXBkYXRlS25vYkNvcHkoa2V0dGxlKTtcbiAgICAgIH0pO1xuICAgICAgJHNjb3BlLmNoYXJ0T3B0aW9ucyA9IEJyZXdTZXJ2aWNlLmNoYXJ0T3B0aW9ucyh1bml0KTtcbiAgICB9XG4gIH07XG5cbiAgJHNjb3BlLnRpbWVyUnVuID0gZnVuY3Rpb24odGltZXIsa2V0dGxlKXtcbiAgICByZXR1cm4gJGludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vY2FuY2VsIGludGVydmFsIGlmIHplcm8gb3V0XG4gICAgICBpZighdGltZXIudXAgJiYgdGltZXIubWluPT0wICYmIHRpbWVyLnNlYz09MCl7XG4gICAgICAgIC8vc3RvcCBydW5uaW5nXG4gICAgICAgIHRpbWVyLnJ1bm5pbmcgPSBmYWxzZTtcbiAgICAgICAgLy9zdGFydCB1cCBjb3VudGVyXG4gICAgICAgIHRpbWVyLnVwID0ge21pbjowLHNlYzowLHJ1bm5pbmc6dHJ1ZX07XG4gICAgICAgIC8vaWYgYWxsIHRpbWVycyBhcmUgZG9uZSBzZW5kIGFuIGFsZXJ0XG4gICAgICAgIGlmKCAhIWtldHRsZSAmJiBfLmZpbHRlcihrZXR0bGUudGltZXJzLCB7dXA6IHtydW5uaW5nOnRydWV9fSkubGVuZ3RoID09IGtldHRsZS50aW1lcnMubGVuZ3RoIClcbiAgICAgICAgICAkc2NvcGUuYWxlcnQoa2V0dGxlLHRpbWVyKTtcbiAgICAgIH0gZWxzZSBpZighdGltZXIudXAgJiYgdGltZXIuc2VjID4gMCl7XG4gICAgICAgIC8vY291bnQgZG93biBzZWNvbmRzXG4gICAgICAgIHRpbWVyLnNlYy0tO1xuICAgICAgfSBlbHNlIGlmKHRpbWVyLnVwICYmIHRpbWVyLnVwLnNlYyA8IDU5KXtcbiAgICAgICAgLy9jb3VudCB1cCBzZWNvbmRzXG4gICAgICAgIHRpbWVyLnVwLnNlYysrO1xuICAgICAgfSBlbHNlIGlmKCF0aW1lci51cCl7XG4gICAgICAgIC8vc2hvdWxkIHdlIHN0YXJ0IHRoZSBuZXh0IHRpbWVyP1xuICAgICAgICBpZighIWtldHRsZSl7XG4gICAgICAgICAgXy5lYWNoKF8uZmlsdGVyKGtldHRsZS50aW1lcnMsIHtydW5uaW5nOmZhbHNlLG1pbjp0aW1lci5taW4scXVldWU6ZmFsc2V9KSxmdW5jdGlvbihuZXh0VGltZXIpe1xuICAgICAgICAgICAgJHNjb3BlLmFsZXJ0KGtldHRsZSxuZXh0VGltZXIpO1xuICAgICAgICAgICAgbmV4dFRpbWVyLnF1ZXVlPXRydWU7XG4gICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAkc2NvcGUudGltZXJTdGFydChuZXh0VGltZXIsa2V0dGxlKTtcbiAgICAgICAgICAgIH0sNjAwMDApO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vY291bmQgZG93biBtaW51dGVzIGFuZCBzZWNvbmRzXG4gICAgICAgIHRpbWVyLnNlYz01OTtcbiAgICAgICAgdGltZXIubWluLS07XG4gICAgICB9IGVsc2UgaWYodGltZXIudXApe1xuICAgICAgICAvL2NvdW5kIHVwIG1pbnV0ZXMgYW5kIHNlY29uZHNcbiAgICAgICAgdGltZXIudXAuc2VjPTA7XG4gICAgICAgIHRpbWVyLnVwLm1pbisrO1xuICAgICAgfVxuICAgIH0sMTAwMCk7XG4gIH07XG5cbiAgJHNjb3BlLnRpbWVyU3RhcnQgPSBmdW5jdGlvbih0aW1lcixrZXR0bGUpe1xuICAgIGlmKHRpbWVyLnVwICYmIHRpbWVyLnVwLnJ1bm5pbmcpe1xuICAgICAgLy9zdG9wIHRpbWVyXG4gICAgICB0aW1lci51cC5ydW5uaW5nPWZhbHNlO1xuICAgICAgJGludGVydmFsLmNhbmNlbCh0aW1lci5pbnRlcnZhbCk7XG4gICAgfSBlbHNlIGlmKHRpbWVyLnJ1bm5pbmcpe1xuICAgICAgLy9zdG9wIHRpbWVyXG4gICAgICB0aW1lci5ydW5uaW5nPWZhbHNlO1xuICAgICAgJGludGVydmFsLmNhbmNlbCh0aW1lci5pbnRlcnZhbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vc3RhcnQgdGltZXJcbiAgICAgIHRpbWVyLnJ1bm5pbmc9dHJ1ZTtcbiAgICAgIHRpbWVyLnF1ZXVlPWZhbHNlO1xuICAgICAgdGltZXIuaW50ZXJ2YWwgPSAkc2NvcGUudGltZXJSdW4odGltZXIsa2V0dGxlKTtcbiAgICB9XG4gIH07XG5cbiAgJHNjb3BlLnByb2Nlc3NUZW1wcyA9IGZ1bmN0aW9uKCl7XG4gICAgdmFyIGFsbFNlbnNvcnMgPSBbXTtcbiAgICAvL29ubHkgcHJvY2VzcyBhY3RpdmUgc2Vuc29yc1xuICAgIF8uZWFjaCgkc2NvcGUua2V0dGxlcywgKGssIGkpID0+IHtcbiAgICAgIGlmKCRzY29wZS5rZXR0bGVzW2ldLmFjdGl2ZSl7XG4gICAgICAgIGFsbFNlbnNvcnMucHVzaChCcmV3U2VydmljZS50ZW1wKCRzY29wZS5rZXR0bGVzW2ldKVxuICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+ICRzY29wZS51cGRhdGVUZW1wKHJlc3BvbnNlLCAkc2NvcGUua2V0dGxlc1tpXSkpXG4gICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICAkc2NvcGUuc2V0RXJyb3JNZXNzYWdlKGVyciwgJHNjb3BlLmtldHRsZXNbaV0pO1xuICAgICAgICAgICAgcmV0dXJuIGVycjtcbiAgICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gJHEuYWxsKGFsbFNlbnNvcnMpXG4gICAgICAudGhlbih2YWx1ZXMgPT4ge1xuICAgICAgICAvL3JlIHByb2Nlc3Mgb24gdGltZW91dFxuICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xuICAgICAgICAgICAgcmV0dXJuICRzY29wZS5wcm9jZXNzVGVtcHMoKTtcbiAgICAgICAgfSwoISEkc2NvcGUuc2V0dGluZ3MucG9sbFNlY29uZHMpID8gJHNjb3BlLnNldHRpbmdzLnBvbGxTZWNvbmRzKjEwMDAgOiAxMDAwMCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICByZXR1cm4gJHNjb3BlLnByb2Nlc3NUZW1wcygpO1xuICAgICAgICB9LCghISRzY29wZS5zZXR0aW5ncy5wb2xsU2Vjb25kcykgPyAkc2NvcGUuc2V0dGluZ3MucG9sbFNlY29uZHMqMTAwMCA6IDEwMDAwKTtcbiAgICB9KTtcbiAgfTtcblxuICAkc2NvcGUuY2hhbmdlVmFsdWUgPSBmdW5jdGlvbihrZXR0bGUsZmllbGQsdXApe1xuXG4gICAgaWYodGltZW91dClcbiAgICAgICR0aW1lb3V0LmNhbmNlbCh0aW1lb3V0KTtcblxuICAgIGlmKHVwKVxuICAgICAga2V0dGxlLnRlbXBbZmllbGRdKys7XG4gICAgZWxzZVxuICAgICAga2V0dGxlLnRlbXBbZmllbGRdLS07XG5cbiAgICAvL3VwZGF0ZSBrbm9iIGFmdGVyIDEgc2Vjb25kcywgb3RoZXJ3aXNlIHdlIGdldCBhIGxvdCBvZiByZWZyZXNoIG9uIHRoZSBrbm9iIHdoZW4gY2xpY2tpbmcgcGx1cyBvciBtaW51c1xuICAgIHRpbWVvdXQgPSAkdGltZW91dChmdW5jdGlvbigpe1xuICAgICAgLy91cGRhdGUgbWF4XG4gICAgICBrZXR0bGUua25vYi5tYXggPSBrZXR0bGUudGVtcFsndGFyZ2V0J10ra2V0dGxlLnRlbXBbJ2RpZmYnXSsxMDtcbiAgICAgICRzY29wZS51cGRhdGVLbm9iQ29weShrZXR0bGUpO1xuICAgIH0sMTAwMCk7XG4gIH07XG5cbiAgJHNjb3BlLmxvYWRDb25maWcoKSAvLyBsb2FkIGNvbmZpZ1xuICAgIC50aGVuKCRzY29wZS5pbml0KSAvLyBpbml0XG4gICAgLnRoZW4obG9hZGVkID0+IHtcbiAgICAgIGlmKCEhbG9hZGVkKVxuICAgICAgICAkc2NvcGUucHJvY2Vzc1RlbXBzKCk7IC8vIHN0YXJ0IHBvbGxpbmdcbiAgICB9KTtcbiAgLy8gc2NvcGUgd2F0Y2hcbiAgJHNjb3BlLiR3YXRjaCgnc2V0dGluZ3MnLGZ1bmN0aW9uKG5ld1ZhbHVlLG9sZFZhbHVlKXtcbiAgICBCcmV3U2VydmljZS5zZXR0aW5ncygnc2V0dGluZ3MnLG5ld1ZhbHVlKTtcbiAgfSx0cnVlKTtcblxuICAkc2NvcGUuJHdhdGNoKCdrZXR0bGVzJyxmdW5jdGlvbihuZXdWYWx1ZSxvbGRWYWx1ZSl7XG4gICAgQnJld1NlcnZpY2Uuc2V0dGluZ3MoJ2tldHRsZXMnLG5ld1ZhbHVlKTtcbiAgfSx0cnVlKTtcblxuICAkc2NvcGUuJHdhdGNoKCdzaGFyZScsZnVuY3Rpb24obmV3VmFsdWUsb2xkVmFsdWUpe1xuICAgIEJyZXdTZXJ2aWNlLnNldHRpbmdzKCdzaGFyZScsbmV3VmFsdWUpO1xuICB9LHRydWUpO1xuXG59KTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9qcy9jb250cm9sbGVycy5qcyIsImFuZ3VsYXIubW9kdWxlKCdicmV3YmVuY2gtbW9uaXRvcicpXG4uZGlyZWN0aXZlKCdlZGl0YWJsZScsIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIHJlc3RyaWN0OiAnRScsXG4gICAgICAgIHNjb3BlOiB7bW9kZWw6Jz0nLHR5cGU6J0A/Jyx0cmltOidAPycsY2hhbmdlOicmPycsZW50ZXI6JyY/JyxwbGFjZWhvbGRlcjonQD8nfSxcbiAgICAgICAgcmVwbGFjZTogZmFsc2UsXG4gICAgICAgIHRlbXBsYXRlOlxuJzxzcGFuPicrXG4gICAgJzxpbnB1dCB0eXBlPVwie3t0eXBlfX1cIiBuZy1tb2RlbD1cIm1vZGVsXCIgbmctc2hvdz1cImVkaXRcIiBuZy1lbnRlcj1cImVkaXQ9ZmFsc2VcIiBuZy1jaGFuZ2U9XCJ7e2NoYW5nZXx8ZmFsc2V9fVwiIGNsYXNzPVwiZWRpdGFibGVcIj48L2lucHV0PicrXG4gICAgICAgICc8c3BhbiBjbGFzcz1cImVkaXRhYmxlXCIgbmctc2hvdz1cIiFlZGl0XCI+e3sodHJpbSkgPyAoKHR5cGU9PVwicGFzc3dvcmRcIikgPyBcIioqKioqKipcIiA6ICgobW9kZWwgfHwgcGxhY2Vob2xkZXIpIHwgbGltaXRUbzp0cmltKStcIi4uLlwiKSA6JytcbiAgICAgICAgJyAoKHR5cGU9PVwicGFzc3dvcmRcIikgPyBcIioqKioqKipcIiA6IChtb2RlbCB8fCBwbGFjZWhvbGRlcikpfX08L3NwYW4+Jytcbic8L3NwYW4+JyxcbiAgICAgICAgbGluazogZnVuY3Rpb24oc2NvcGUsIGVsZW1lbnQsIGF0dHJzKSB7XG4gICAgICAgICAgICBzY29wZS5lZGl0ID0gZmFsc2U7XG4gICAgICAgICAgICBzY29wZS50eXBlID0gISFzY29wZS50eXBlID8gc2NvcGUudHlwZSA6ICd0ZXh0JztcbiAgICAgICAgICAgIGVsZW1lbnQuYmluZCgnY2xpY2snLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBzY29wZS4kYXBwbHkoc2NvcGUuZWRpdCA9IHRydWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZihzY29wZS5lbnRlcikgc2NvcGUuZW50ZXIoKTtcbiAgICAgICAgfVxuICAgIH07XG59KVxuLmRpcmVjdGl2ZSgnbmdFbnRlcicsIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBmdW5jdGlvbihzY29wZSwgZWxlbWVudCwgYXR0cnMpIHtcbiAgICAgICAgZWxlbWVudC5iaW5kKCdrZXlwcmVzcycsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIGlmIChlLmNoYXJDb2RlID09PSAxMyB8fCBlLmtleUNvZGUgPT09MTMgKSB7XG4gICAgICAgICAgICAgIHNjb3BlLiRhcHBseShhdHRycy5uZ0VudGVyKTtcbiAgICAgICAgICAgICAgaWYoc2NvcGUuY2hhbmdlKVxuICAgICAgICAgICAgICAgIHNjb3BlLiRhcHBseShzY29wZS5jaGFuZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xufSlcbi5kaXJlY3RpdmUoJ29uUmVhZEZpbGUnLCBmdW5jdGlvbiAoJHBhcnNlKSB7XG5cdHJldHVybiB7XG5cdFx0cmVzdHJpY3Q6ICdBJyxcblx0XHRzY29wZTogZmFsc2UsXG5cdFx0bGluazogZnVuY3Rpb24oc2NvcGUsIGVsZW1lbnQsIGF0dHJzKSB7XG4gICAgICB2YXIgZm4gPSAkcGFyc2UoYXR0cnMub25SZWFkRmlsZSk7XG5cblx0XHRcdGVsZW1lbnQub24oJ2NoYW5nZScsIGZ1bmN0aW9uKG9uQ2hhbmdlRXZlbnQpIHtcblx0XHRcdFx0dmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgIHZhciBmaWxlID0gKG9uQ2hhbmdlRXZlbnQuc3JjRWxlbWVudCB8fCBvbkNoYW5nZUV2ZW50LnRhcmdldCkuZmlsZXNbMF07XG4gICAgICAgIHZhciBleHRlbnNpb24gPSAoZmlsZSkgPyBmaWxlLm5hbWUuc3BsaXQoJy4nKS5wb3AoKS50b0xvd2VyQ2FzZSgpIDogJyc7XG5cblx0XHRcdFx0cmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKG9uTG9hZEV2ZW50KSB7XG5cdFx0XHRcdFx0c2NvcGUuJGFwcGx5KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgZm4oc2NvcGUsIHskZmlsZUNvbnRlbnQ6IG9uTG9hZEV2ZW50LnRhcmdldC5yZXN1bHQsICRleHQ6IGV4dGVuc2lvbn0pO1xuICAgICAgICAgICAgZWxlbWVudC52YWwobnVsbCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH07XG5cdFx0XHRcdHJlYWRlci5yZWFkQXNUZXh0KGZpbGUpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9O1xufSk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvanMvZGlyZWN0aXZlcy5qcyIsImFuZ3VsYXIubW9kdWxlKCdicmV3YmVuY2gtbW9uaXRvcicpXG4uZmlsdGVyKCdtb21lbnQnLCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGRhdGUsIGZvcm1hdCkge1xuICAgICAgaWYoIWRhdGUpXG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIGlmKGZvcm1hdClcbiAgICAgICAgcmV0dXJuIG1vbWVudChkYXRlLnRvU3RyaW5nKCkpLmZvcm1hdChmb3JtYXQpO1xuICAgICAgZWxzZVxuICAgICAgICByZXR1cm4gbW9tZW50KGRhdGUudG9TdHJpbmcoKSkuZnJvbU5vdygpO1xuICAgIH07XG59KVxuLmZpbHRlcignZm9ybWF0RGVncmVlcycsIGZ1bmN0aW9uKCRmaWx0ZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHRlbXAsdW5pdCkge1xuICAgIGlmKHVuaXQ9PSdGJylcbiAgICAgIHJldHVybiAkZmlsdGVyKCd0b0ZhaHJlbmhlaXQnKSh0ZW1wKTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gJGZpbHRlcigndG9DZWxzaXVzJykodGVtcCk7XG4gIH07XG59KVxuLmZpbHRlcigndG9GYWhyZW5oZWl0JywgZnVuY3Rpb24oKSB7XG4gIHJldHVybiBmdW5jdGlvbihjZWxzaXVzKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQoY2Vsc2l1cyo5LzUrMzIpO1xuICB9O1xufSlcbi5maWx0ZXIoJ3RvQ2Vsc2l1cycsIGZ1bmN0aW9uKCkge1xuICByZXR1cm4gZnVuY3Rpb24oZmFocmVuaGVpdCkge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKChmYWhyZW5oZWl0LTMyKSo1LzkpO1xuICB9O1xufSlcbi5maWx0ZXIoJ2hpZ2hsaWdodCcsIGZ1bmN0aW9uKCRzY2UpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHRleHQsIHBocmFzZSkge1xuICAgIGlmICh0ZXh0ICYmIHBocmFzZSkge1xuICAgICAgdGV4dCA9IHRleHQucmVwbGFjZShuZXcgUmVnRXhwKCcoJytwaHJhc2UrJyknLCAnZ2knKSwgJzxzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0ZWRcIj4kMTwvc3Bhbj4nKTtcbiAgICB9IGVsc2UgaWYoIXRleHQpe1xuICAgICAgdGV4dCA9ICcnO1xuICAgIH1cbiAgICByZXR1cm4gJHNjZS50cnVzdEFzSHRtbCh0ZXh0LnRvU3RyaW5nKCkpO1xuICB9O1xufSk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvanMvZmlsdGVycy5qcyIsImFuZ3VsYXIubW9kdWxlKCdicmV3YmVuY2gtbW9uaXRvcicpXG4uZmFjdG9yeSgnQnJld1NlcnZpY2UnLCBmdW5jdGlvbigkaHR0cCwgJHEsICRmaWx0ZXIpe1xuXG4gIHJldHVybiB7XG5cbiAgICAvL2Nvb2tpZXMgc2l6ZSA0MDk2IGJ5dGVzXG4gICAgY2xlYXI6IGZ1bmN0aW9uKCl7XG4gICAgICBpZih3aW5kb3cubG9jYWxTdG9yYWdlKXtcbiAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdzZXR0aW5ncycpO1xuICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2tldHRsZXMnKTtcbiAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdzaGFyZScpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICByZXNldDogZnVuY3Rpb24oKXtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBvbGxTZWNvbmRzOiAxMFxuICAgICAgICAsdW5pdDogJ0YnXG4gICAgICAgICxsYXlvdXQ6ICdjYXJkJ1xuICAgICAgICAsc2hhcmVkOiBmYWxzZVxuICAgICAgICAscmVjaXBlOiB7J25hbWUnOicnLCdicmV3ZXInOntuYW1lOicnLCdlbWFpbCc6Jyd9LCd5ZWFzdCc6W10sJ2hvcHMnOltdLCdtYWx0JzpbXSxzY2FsZTonZ3Jhdml0eScsbWV0aG9kOidwYXBhemlhbicsJ29nJzoxLjA1MCwnZmcnOjEuMDEwLCdhYnYnOjAsJ2Fidyc6MCwnY2Fsb3JpZXMnOjAsJ2F0dGVudWF0aW9uJzowfVxuICAgICAgICAsbm90aWZpY2F0aW9uczoge29uOnRydWUsdGltZXJzOnRydWUsaGlnaDp0cnVlLGxvdzp0cnVlLHRhcmdldDp0cnVlLHNsYWNrOicnLGxhc3Q6Jyd9XG4gICAgICAgICxzb3VuZHM6IHtvbjp0cnVlLGFsZXJ0OicvYXNzZXRzL2F1ZGlvL2Jpa2UubXAzJyx0aW1lcjonL2Fzc2V0cy9hdWRpby9zY2hvb2wubXAzJ31cbiAgICAgICAgLGFjY291bnQ6IHthcGlLZXk6ICcnLCBzZXNzaW9uczogW119XG4gICAgICAgICxpbmZsdXhkYjoge3VybDogJycsIHBvcnQ6IDgwODYsIHVzZXI6ICcnLCBwYXNzOiAnJywgZGI6ICcnLCBjb25uZWN0ZWQ6IGZhbHNlLCBmcmVxdWVuY3k6IDYwfVxuICAgICAgICAsYXJkdWlub3M6IFt7XG4gICAgICAgICAgaWQ6IGJ0b2EoJ2JyZXdiZW5jaCcpLFxuICAgICAgICAgIHVybDogJ2FyZHVpbm8ubG9jYWwnLFxuICAgICAgICAgIGFuYWxvZzogNSxcbiAgICAgICAgICBkaWdpdGFsOiAxMyxcbiAgICAgICAgICBzZWN1cmU6IGZhbHNlXG4gICAgICAgIH1dXG4gICAgICAgICx0cGxpbms6IHt1c2VyOiAnJywgcGFzczogJycsIHRva2VuOicnLCBwbHVnczogW119XG4gICAgICB9O1xuICAgIH0sXG5cbiAgICBkZWZhdWx0S25vYk9wdGlvbnM6IGZ1bmN0aW9uKCl7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZWFkT25seTogdHJ1ZSxcbiAgICAgICAgdW5pdDogJ1xcdTAwQjAnLFxuICAgICAgICBzdWJUZXh0OiB7XG4gICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICB0ZXh0OiAnJyxcbiAgICAgICAgICBjb2xvcjogJ2dyYXknLFxuICAgICAgICAgIGZvbnQ6ICdhdXRvJ1xuICAgICAgICB9LFxuICAgICAgICB0cmFja1dpZHRoOiA0MCxcbiAgICAgICAgYmFyV2lkdGg6IDI1LFxuICAgICAgICBiYXJDYXA6IDI1LFxuICAgICAgICB0cmFja0NvbG9yOiAnI2RkZCcsXG4gICAgICAgIGJhckNvbG9yOiAnIzc3NycsXG4gICAgICAgIGR5bmFtaWNPcHRpb25zOiB0cnVlLFxuICAgICAgICBkaXNwbGF5UHJldmlvdXM6IHRydWUsXG4gICAgICAgIHByZXZCYXJDb2xvcjogJyM3NzcnXG4gICAgICB9O1xuICAgIH0sXG5cbiAgICBkZWZhdWx0S2V0dGxlczogZnVuY3Rpb24oKXtcbiAgICAgIHJldHVybiBbe1xuICAgICAgICAgIGtleTogJ0hvdCBMaXF1b3InXG4gICAgICAgICAgLHR5cGU6ICd3YXRlcidcbiAgICAgICAgICAsYWN0aXZlOiBmYWxzZVxuICAgICAgICAgICxzdGlja3k6IGZhbHNlXG4gICAgICAgICAgLGhlYXRlcjoge3BpbjonRDInLHJ1bm5pbmc6ZmFsc2UsYXV0bzpmYWxzZSxwd206ZmFsc2UsZHV0eUN5Y2xlOjEwMH1cbiAgICAgICAgICAscHVtcDoge3BpbjonRDMnLHJ1bm5pbmc6ZmFsc2UsYXV0bzpmYWxzZSxwd206ZmFsc2UsZHV0eUN5Y2xlOjEwMH1cbiAgICAgICAgICAsdGVtcDoge3BpbjonQTAnLHR5cGU6J1RoZXJtaXN0b3InLGhpdDpmYWxzZSxjdXJyZW50OjAscHJldmlvdXM6MCxhZGp1c3Q6MCx0YXJnZXQ6MTcwLGRpZmY6Mn1cbiAgICAgICAgICAsdmFsdWVzOiBbXVxuICAgICAgICAgICx0aW1lcnM6IFtdXG4gICAgICAgICAgLGtub2I6IGFuZ3VsYXIuY29weSh0aGlzLmRlZmF1bHRLbm9iT3B0aW9ucygpLHt2YWx1ZTowLG1pbjowLG1heDoyMjB9KVxuICAgICAgICAgICxhcmR1aW5vOiB7aWQ6IGJ0b2EoJ2JyZXdiZW5jaCcpLCB1cmw6ICdhcmR1aW5vLmxvY2FsJyxhbmFsb2c6IDUsZGlnaXRhbDogMTN9XG4gICAgICAgIH0se1xuICAgICAgICAgIGtleTogJ01hc2gnXG4gICAgICAgICAgLHR5cGU6ICdncmFpbidcbiAgICAgICAgICAsYWN0aXZlOiBmYWxzZVxuICAgICAgICAgICxzdGlja3k6IGZhbHNlXG4gICAgICAgICAgLGhlYXRlcjoge3BpbjonRDQnLHJ1bm5pbmc6ZmFsc2UsYXV0bzpmYWxzZSxwd206ZmFsc2UsZHV0eUN5Y2xlOjEwMH1cbiAgICAgICAgICAscHVtcDoge3BpbjonRDUnLHJ1bm5pbmc6ZmFsc2UsYXV0bzpmYWxzZSxwd206ZmFsc2UsZHV0eUN5Y2xlOjEwMH1cbiAgICAgICAgICAsdGVtcDoge3BpbjonQTEnLHR5cGU6J1RoZXJtaXN0b3InLGhpdDpmYWxzZSxjdXJyZW50OjAscHJldmlvdXM6MCxhZGp1c3Q6MCx0YXJnZXQ6MTUyLGRpZmY6Mn1cbiAgICAgICAgICAsdmFsdWVzOiBbXVxuICAgICAgICAgICx0aW1lcnM6IFtdXG4gICAgICAgICAgLGtub2I6IGFuZ3VsYXIuY29weSh0aGlzLmRlZmF1bHRLbm9iT3B0aW9ucygpLHt2YWx1ZTowLG1pbjowLG1heDoyMjB9KVxuICAgICAgICAgICxhcmR1aW5vOiB7aWQ6IGJ0b2EoJ2JyZXdiZW5jaCcpLCB1cmw6ICdhcmR1aW5vLmxvY2FsJyxhbmFsb2c6IDUsZGlnaXRhbDogMTN9XG4gICAgICAgIH0se1xuICAgICAgICAgIGtleTogJ0JvaWwnXG4gICAgICAgICAgLHR5cGU6ICdob3AnXG4gICAgICAgICAgLGFjdGl2ZTogZmFsc2VcbiAgICAgICAgICAsc3RpY2t5OiBmYWxzZVxuICAgICAgICAgICxoZWF0ZXI6IHtwaW46J0Q2JyxydW5uaW5nOmZhbHNlLGF1dG86ZmFsc2UscHdtOmZhbHNlLGR1dHlDeWNsZToxMDB9XG4gICAgICAgICAgLHB1bXA6IHtwaW46J0Q3JyxydW5uaW5nOmZhbHNlLGF1dG86ZmFsc2UscHdtOmZhbHNlLGR1dHlDeWNsZToxMDB9XG4gICAgICAgICAgLHRlbXA6IHtwaW46J0EyJyx0eXBlOidUaGVybWlzdG9yJyxoaXQ6ZmFsc2UsY3VycmVudDowLHByZXZpb3VzOjAsYWRqdXN0OjAsdGFyZ2V0OjIwMCxkaWZmOjJ9XG4gICAgICAgICAgLHZhbHVlczogW11cbiAgICAgICAgICAsdGltZXJzOiBbXVxuICAgICAgICAgICxrbm9iOiBhbmd1bGFyLmNvcHkodGhpcy5kZWZhdWx0S25vYk9wdGlvbnMoKSx7dmFsdWU6MCxtaW46MCxtYXg6MjIwfSlcbiAgICAgICAgICAsYXJkdWlubzoge2lkOiBidG9hKCdicmV3YmVuY2gnKSwgdXJsOiAnYXJkdWluby5sb2NhbCcsYW5hbG9nOiA1LGRpZ2l0YWw6IDEzfVxuICAgICAgICB9XTtcbiAgICB9LFxuXG4gICAgc2V0dGluZ3M6IGZ1bmN0aW9uKGtleSx2YWx1ZXMpe1xuICAgICAgaWYoIXdpbmRvdy5sb2NhbFN0b3JhZ2UpXG4gICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgICB0cnkge1xuICAgICAgICBpZih2YWx1ZXMpe1xuICAgICAgICAgIHJldHVybiB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LEpTT04uc3RyaW5naWZ5KHZhbHVlcykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYod2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkpe1xuICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaChlKXtcbiAgICAgICAgLypKU09OIHBhcnNlIGVycm9yKi9cbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgfSxcblxuICAgIHNlbnNvclR5cGVzOiBmdW5jdGlvbihuYW1lKXtcbiAgICAgIGxldCBzZW5zb3JzID0gW1xuICAgICAgICB7bmFtZTogJ1RoZXJtaXN0b3InLCBhbmFsb2c6IHRydWUsIGRpZ2l0YWw6IGZhbHNlfVxuICAgICAgICAse25hbWU6ICdEUzE4QjIwJywgYW5hbG9nOiBmYWxzZSwgZGlnaXRhbDogdHJ1ZX1cbiAgICAgICAgLHtuYW1lOiAnUFQxMDAnLCBhbmFsb2c6IHRydWUsIGRpZ2l0YWw6IHRydWV9XG4gICAgICAgICx7bmFtZTogJ0RIVDExJywgYW5hbG9nOiBmYWxzZSwgZGlnaXRhbDogdHJ1ZX1cbiAgICAgICAgLHtuYW1lOiAnREhUMjEnLCBhbmFsb2c6IGZhbHNlLCBkaWdpdGFsOiB0cnVlfVxuICAgICAgICAse25hbWU6ICdESFQyMicsIGFuYWxvZzogZmFsc2UsIGRpZ2l0YWw6IHRydWV9XG4gICAgICBdO1xuICAgICAgaWYobmFtZSlcbiAgICAgICAgcmV0dXJuIF8uZmlsdGVyKHNlbnNvcnMsIHsnbmFtZSc6IG5hbWV9KVswXTtcbiAgICAgIHJldHVybiBzZW5zb3JzO1xuICAgIH0sXG5cbiAgICBrZXR0bGVUeXBlczogZnVuY3Rpb24odHlwZSl7XG4gICAgICBsZXQga2V0dGxlcyA9IFtcbiAgICAgICAgeyduYW1lJzonQm9pbCcsJ3R5cGUnOidob3AnLCd0YXJnZXQnOjIwMCwnZGlmZic6Mn1cbiAgICAgICAgLHsnbmFtZSc6J01hc2gnLCd0eXBlJzonZ3JhaW4nLCd0YXJnZXQnOjE1MiwnZGlmZic6Mn1cbiAgICAgICAgLHsnbmFtZSc6J0hvdCBMaXF1b3InLCd0eXBlJzond2F0ZXInLCd0YXJnZXQnOjE3MCwnZGlmZic6Mn1cbiAgICAgICAgLHsnbmFtZSc6J0Zlcm1lbnRlcicsJ3R5cGUnOidmZXJtZW50ZXInLCd0YXJnZXQnOjc0LCdkaWZmJzoyfVxuICAgICAgICAseyduYW1lJzonQWlyJywndHlwZSc6J2FpcicsJ3RhcmdldCc6NzQsJ2RpZmYnOjJ9XG4gICAgICBdO1xuICAgICAgaWYodHlwZSlcbiAgICAgICAgcmV0dXJuIF8uZmlsdGVyKGtldHRsZXMsIHsndHlwZSc6IHR5cGV9KVswXTtcbiAgICAgIHJldHVybiBrZXR0bGVzO1xuICAgIH0sXG5cbiAgICBkb21haW46IGZ1bmN0aW9uKGFyZHVpbm8pe1xuICAgICAgbGV0IHNldHRpbmdzID0gdGhpcy5zZXR0aW5ncygnc2V0dGluZ3MnKTtcbiAgICAgIGxldCBkb21haW4gPSAnaHR0cDovL2FyZHVpbm8ubG9jYWwnO1xuXG4gICAgICBpZihhcmR1aW5vICYmIGFyZHVpbm8udXJsKXtcbiAgICAgICAgZG9tYWluID0gKGFyZHVpbm8udXJsLmluZGV4T2YoJy8vJykgIT09IC0xKSA/XG4gICAgICAgICAgYXJkdWluby51cmwuc3Vic3RyKGFyZHVpbm8udXJsLmluZGV4T2YoJy8vJykrMikgOlxuICAgICAgICAgIGFyZHVpbm8udXJsO1xuXG4gICAgICAgIGlmKCEhYXJkdWluby5zZWN1cmUpXG4gICAgICAgICAgZG9tYWluID0gYGh0dHBzOi8vJHtkb21haW59YDtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGRvbWFpbiA9IGBodHRwOi8vJHtkb21haW59YDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRvbWFpbjtcbiAgICB9LFxuXG4gICAgc2xhY2s6IGZ1bmN0aW9uKHdlYmhvb2tfdXJsLCBtc2csIGNvbG9yLCBpY29uLCBrZXR0bGUpe1xuICAgICAgbGV0IHEgPSAkcS5kZWZlcigpO1xuXG4gICAgICBsZXQgcG9zdE9iaiA9IHsnYXR0YWNobWVudHMnOiBbeydmYWxsYmFjayc6IG1zZyxcbiAgICAgICAgICAgICd0aXRsZSc6IGtldHRsZS5rZXksXG4gICAgICAgICAgICAndGl0bGVfbGluayc6ICdodHRwOi8vJytkb2N1bWVudC5sb2NhdGlvbi5ob3N0LFxuICAgICAgICAgICAgJ2ZpZWxkcyc6IFt7J3ZhbHVlJzogbXNnfV0sXG4gICAgICAgICAgICAnY29sb3InOiBjb2xvcixcbiAgICAgICAgICAgICdtcmtkd25faW4nOiBbJ3RleHQnLCAnZmFsbGJhY2snLCAnZmllbGRzJ10sXG4gICAgICAgICAgICAndGh1bWJfdXJsJzogaWNvblxuICAgICAgICAgIH1dXG4gICAgICAgIH07XG5cbiAgICAgICRodHRwKHt1cmw6IHdlYmhvb2tfdXJsLCBtZXRob2Q6J1BPU1QnLCBkYXRhOiAncGF5bG9hZD0nK0pTT04uc3RyaW5naWZ5KHBvc3RPYmopLCBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyB9fSlcbiAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgIHEucmVzb2x2ZShyZXNwb25zZS5kYXRhKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgcS5yZWplY3QoZXJyKTtcbiAgICAgICAgfSk7XG4gICAgICByZXR1cm4gcS5wcm9taXNlO1xuICAgIH0sXG5cbiAgICAvLyBUaGVybWlzdG9yLCBEUzE4QjIwLCBvciBQVDEwMFxuICAgIC8vIGh0dHBzOi8vbGVhcm4uYWRhZnJ1aXQuY29tL3RoZXJtaXN0b3IvdXNpbmctYS10aGVybWlzdG9yXG4gICAgLy8gaHR0cHM6Ly93d3cuYWRhZnJ1aXQuY29tL3Byb2R1Y3QvMzgxKVxuICAgIC8vIGh0dHBzOi8vd3d3LmFkYWZydWl0LmNvbS9wcm9kdWN0LzMyOTAgYW5kIGh0dHBzOi8vd3d3LmFkYWZydWl0LmNvbS9wcm9kdWN0LzMzMjhcbiAgICB0ZW1wOiBmdW5jdGlvbihrZXR0bGUpe1xuICAgICAgaWYoIWtldHRsZS5hcmR1aW5vKSByZXR1cm4gJHEucmVqZWN0KCdTZWxlY3QgYW4gYXJkdWlubyB0byB1c2UuJyk7XG4gICAgICBsZXQgcSA9ICRxLmRlZmVyKCk7XG4gICAgICBsZXQgdXJsID0gdGhpcy5kb21haW4oa2V0dGxlLmFyZHVpbm8pKycvYXJkdWluby8nK2tldHRsZS50ZW1wLnR5cGUrJy8nK2tldHRsZS50ZW1wLnBpbjtcbiAgICAgIGxldCBzZXR0aW5ncyA9IHRoaXMuc2V0dGluZ3MoJ3NldHRpbmdzJyk7XG4gICAgICBsZXQgaGVhZGVycyA9IHt9O1xuXG4gICAgICBpZihrZXR0bGUuYXJkdWluby5wYXNzd29yZClcbiAgICAgICAgaGVhZGVycy5BdXRob3JpemF0aW9uID0gJ0Jhc2ljICcrYnRvYSgncm9vdDonK2tldHRsZS5hcmR1aW5vLnBhc3N3b3JkKTtcblxuICAgICAgJGh0dHAoe3VybDogdXJsLCBtZXRob2Q6ICdHRVQnLCBoZWFkZXJzOiBoZWFkZXJzLCB0aW1lb3V0OiBzZXR0aW5ncy5wb2xsU2Vjb25kcyoxMDAwMH0pXG4gICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICBpZighc2V0dGluZ3Muc2hhcmVkICYmIHJlc3BvbnNlLmhlYWRlcnMoJ1gtU2tldGNoLVZlcnNpb24nKSA9PSBudWxsIHx8IHJlc3BvbnNlLmhlYWRlcnMoJ1gtU2tldGNoLVZlcnNpb24nKSA8IHNldHRpbmdzLnNrZXRjaF92ZXJzaW9uKVxuICAgICAgICAgICAgcS5yZWplY3QoJ1NrZXRjaCBWZXJzaW9uIGlzIG91dCBvZiBkYXRlLiAgUGxlYXNlIDxhIGhyZWY9XCJcIiBkYXRhLXRvZ2dsZT1cIm1vZGFsXCIgZGF0YS10YXJnZXQ9XCIjc2V0dGluZ3NNb2RhbFwiPlVwZGF0ZTwvYT4uIFNrZXRjaDogJytyZXNwb25zZS5oZWFkZXJzKCdYLVNrZXRjaC1WZXJzaW9uJykrJyBCcmV3QmVuY2g6ICcrc2V0dGluZ3Muc2tldGNoX3ZlcnNpb24pO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHEucmVzb2x2ZShyZXNwb25zZS5kYXRhKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgcS5yZWplY3QoZXJyKTtcbiAgICAgICAgfSk7XG4gICAgICByZXR1cm4gcS5wcm9taXNlO1xuICAgIH0sXG4gICAgLy8gcmVhZC93cml0ZSBoZWF0ZXJcbiAgICAvLyBodHRwOi8vYXJkdWlub3Ryb25pY3MuYmxvZ3Nwb3QuY29tLzIwMTMvMDEvd29ya2luZy13aXRoLXNhaW5zbWFydC01di1yZWxheS1ib2FyZC5odG1sXG4gICAgLy8gaHR0cDovL215aG93dG9zYW5kcHJvamVjdHMuYmxvZ3Nwb3QuY29tLzIwMTQvMDIvc2FpbnNtYXJ0LTItY2hhbm5lbC01di1yZWxheS1hcmR1aW5vLmh0bWxcbiAgICBkaWdpdGFsOiBmdW5jdGlvbihrZXR0bGUsc2Vuc29yLHZhbHVlKXtcbiAgICAgIGlmKCFrZXR0bGUuYXJkdWlubykgcmV0dXJuICRxLnJlamVjdCgnU2VsZWN0IGFuIGFyZHVpbm8gdG8gdXNlLicpO1xuICAgICAgbGV0IHEgPSAkcS5kZWZlcigpO1xuICAgICAgbGV0IHVybCA9IHRoaXMuZG9tYWluKGtldHRsZS5hcmR1aW5vKSsnL2FyZHVpbm8vZGlnaXRhbC8nK3NlbnNvcisnLycrdmFsdWU7XG4gICAgICBsZXQgc2V0dGluZ3MgPSB0aGlzLnNldHRpbmdzKCdzZXR0aW5ncycpO1xuICAgICAgbGV0IGhlYWRlcnMgPSB7fTtcblxuICAgICAgaWYoa2V0dGxlLmFyZHVpbm8ucGFzc3dvcmQpXG4gICAgICAgIGhlYWRlcnMuQXV0aG9yaXphdGlvbiA9ICdCYXNpYyAnK2J0b2EoJ3Jvb3Q6JytrZXR0bGUuYXJkdWluby5wYXNzd29yZCk7XG5cbiAgICAgICRodHRwKHt1cmw6IHVybCwgbWV0aG9kOiAnR0VUJywgaGVhZGVyczogaGVhZGVycywgdGltZW91dDogc2V0dGluZ3MucG9sbFNlY29uZHMqMTAwMH0pXG4gICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICBpZighc2V0dGluZ3Muc2hhcmVkICYmIHJlc3BvbnNlLmhlYWRlcnMoJ1gtU2tldGNoLVZlcnNpb24nKSA9PSBudWxsIHx8IHJlc3BvbnNlLmhlYWRlcnMoJ1gtU2tldGNoLVZlcnNpb24nKSA8IHNldHRpbmdzLnNrZXRjaF92ZXJzaW9uKVxuICAgICAgICAgICAgcS5yZWplY3QoJ1NrZXRjaCBWZXJzaW9uIGlzIG91dCBvZiBkYXRlLiAgUGxlYXNlIDxhIGhyZWY9XCJcIiBkYXRhLXRvZ2dsZT1cIm1vZGFsXCIgZGF0YS10YXJnZXQ9XCIjc2V0dGluZ3NNb2RhbFwiPlVwZGF0ZTwvYT4uIFNrZXRjaDogJytyZXNwb25zZS5oZWFkZXJzKCdYLVNrZXRjaC1WZXJzaW9uJykrJyBCcmV3QmVuY2g6ICcrc2V0dGluZ3Muc2tldGNoX3ZlcnNpb24pO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHEucmVzb2x2ZShyZXNwb25zZS5kYXRhKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgcS5yZWplY3QoZXJyKTtcbiAgICAgICAgfSk7XG4gICAgICByZXR1cm4gcS5wcm9taXNlO1xuICAgIH0sXG5cbiAgICBhbmFsb2c6IGZ1bmN0aW9uKGtldHRsZSxzZW5zb3IsdmFsdWUpe1xuICAgICAgaWYoIWtldHRsZS5hcmR1aW5vKSByZXR1cm4gJHEucmVqZWN0KCdTZWxlY3QgYW4gYXJkdWlubyB0byB1c2UuJyk7XG4gICAgICBsZXQgcSA9ICRxLmRlZmVyKCk7XG4gICAgICBsZXQgdXJsID0gdGhpcy5kb21haW4oa2V0dGxlLmFyZHVpbm8pKycvYXJkdWluby9hbmFsb2cvJytzZW5zb3IrJy8nK3ZhbHVlO1xuICAgICAgbGV0IHNldHRpbmdzID0gdGhpcy5zZXR0aW5ncygnc2V0dGluZ3MnKTtcbiAgICAgIGxldCBoZWFkZXJzID0ge307XG5cbiAgICAgIGlmKGtldHRsZS5hcmR1aW5vLnBhc3N3b3JkKVxuICAgICAgICBoZWFkZXJzLkF1dGhvcml6YXRpb24gPSAnQmFzaWMgJytidG9hKCdyb290Oicra2V0dGxlLmFyZHVpbm8ucGFzc3dvcmQpO1xuXG4gICAgICAkaHR0cCh7dXJsOiB1cmwsIG1ldGhvZDogJ0dFVCcsIGhlYWRlcnM6IGhlYWRlcnMsIHRpbWVvdXQ6IHNldHRpbmdzLnBvbGxTZWNvbmRzKjEwMDB9KVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgaWYoIXNldHRpbmdzLnNoYXJlZCAmJiByZXNwb25zZS5oZWFkZXJzKCdYLVNrZXRjaC1WZXJzaW9uJykgPT0gbnVsbCB8fCByZXNwb25zZS5oZWFkZXJzKCdYLVNrZXRjaC1WZXJzaW9uJykgPCBzZXR0aW5ncy5za2V0Y2hfdmVyc2lvbilcbiAgICAgICAgICAgIHEucmVqZWN0KCdTa2V0Y2ggVmVyc2lvbiBpcyBvdXQgb2YgZGF0ZS4gIFBsZWFzZSA8YSBocmVmPVwiXCIgZGF0YS10b2dnbGU9XCJtb2RhbFwiIGRhdGEtdGFyZ2V0PVwiI3NldHRpbmdzTW9kYWxcIj5VcGRhdGU8L2E+LiBTa2V0Y2g6ICcrcmVzcG9uc2UuaGVhZGVycygnWC1Ta2V0Y2gtVmVyc2lvbicpKycgQnJld0JlbmNoOiAnK3NldHRpbmdzLnNrZXRjaF92ZXJzaW9uKTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBxLnJlc29sdmUocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgIHEucmVqZWN0KGVycik7XG4gICAgICAgIH0pO1xuICAgICAgcmV0dXJuIHEucHJvbWlzZTtcbiAgICB9LFxuXG4gICAgZGlnaXRhbFJlYWQ6IGZ1bmN0aW9uKGtldHRsZSxzZW5zb3IsdGltZW91dCl7XG4gICAgICBpZigha2V0dGxlLmFyZHVpbm8pIHJldHVybiAkcS5yZWplY3QoJ1NlbGVjdCBhbiBhcmR1aW5vIHRvIHVzZS4nKTtcbiAgICAgIGxldCBxID0gJHEuZGVmZXIoKTtcbiAgICAgIGxldCB1cmwgPSB0aGlzLmRvbWFpbihrZXR0bGUuYXJkdWlubykrJy9hcmR1aW5vL2RpZ2l0YWwvJytzZW5zb3I7XG4gICAgICBsZXQgc2V0dGluZ3MgPSB0aGlzLnNldHRpbmdzKCdzZXR0aW5ncycpO1xuICAgICAgbGV0IGhlYWRlcnMgPSB7fTtcblxuICAgICAgaWYoa2V0dGxlLmFyZHVpbm8ucGFzc3dvcmQpXG4gICAgICAgIGhlYWRlcnMuQXV0aG9yaXphdGlvbiA9ICdCYXNpYyAnK2J0b2EoJ3Jvb3Q6JytrZXR0bGUuYXJkdWluby5wYXNzd29yZCk7XG5cbiAgICAgICRodHRwKHt1cmw6IHVybCwgbWV0aG9kOiAnR0VUJywgaGVhZGVyczogaGVhZGVycywgdGltZW91dDogKHRpbWVvdXQgfHwgc2V0dGluZ3MucG9sbFNlY29uZHMqMTAwMCl9KVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgaWYoIXNldHRpbmdzLnNoYXJlZCAmJiByZXNwb25zZS5oZWFkZXJzKCdYLVNrZXRjaC1WZXJzaW9uJykgPT0gbnVsbCB8fCByZXNwb25zZS5oZWFkZXJzKCdYLVNrZXRjaC1WZXJzaW9uJykgPCBzZXR0aW5ncy5za2V0Y2hfdmVyc2lvbilcbiAgICAgICAgICAgIHEucmVqZWN0KCdTa2V0Y2ggVmVyc2lvbiBpcyBvdXQgb2YgZGF0ZS4gIFBsZWFzZSA8YSBocmVmPVwiXCIgZGF0YS10b2dnbGU9XCJtb2RhbFwiIGRhdGEtdGFyZ2V0PVwiI3NldHRpbmdzTW9kYWxcIj5VcGRhdGU8L2E+LiBTa2V0Y2g6ICcrcmVzcG9uc2UuaGVhZGVycygnWC1Ta2V0Y2gtVmVyc2lvbicpKycgQnJld0JlbmNoOiAnK3NldHRpbmdzLnNrZXRjaF92ZXJzaW9uKTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBxLnJlc29sdmUocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgIHEucmVqZWN0KGVycik7XG4gICAgICAgIH0pO1xuICAgICAgcmV0dXJuIHEucHJvbWlzZTtcbiAgICB9LFxuXG4gICAgbG9hZFNoYXJlRmlsZTogZnVuY3Rpb24oZmlsZSwgcGFzc3dvcmQpe1xuICAgICAgbGV0IHEgPSAkcS5kZWZlcigpO1xuICAgICAgbGV0IHF1ZXJ5ID0gJyc7XG4gICAgICBpZihwYXNzd29yZClcbiAgICAgICAgcXVlcnkgPSAnP3Bhc3N3b3JkPScrbWQ1KHBhc3N3b3JkKTtcbiAgICAgICRodHRwKHt1cmw6ICdodHRwczovL21vbml0b3IuYnJld2JlbmNoLmNvL3NoYXJlL2dldC8nK2ZpbGUrcXVlcnksIG1ldGhvZDogJ0dFVCd9KVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgcS5yZXNvbHZlKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICBxLnJlamVjdChlcnIpO1xuICAgICAgICB9KTtcbiAgICAgIHJldHVybiBxLnByb21pc2U7XG4gICAgfSxcblxuICAgIC8vIFRPRE8gZmluaXNoIHRoaXNcbiAgICAvLyBkZWxldGVTaGFyZUZpbGU6IGZ1bmN0aW9uKGZpbGUsIHBhc3N3b3JkKXtcbiAgICAvLyAgIGxldCBxID0gJHEuZGVmZXIoKTtcbiAgICAvLyAgICRodHRwKHt1cmw6ICdodHRwczovL21vbml0b3IuYnJld2JlbmNoLmNvL3NoYXJlL2RlbGV0ZS8nK2ZpbGUsIG1ldGhvZDogJ0dFVCd9KVxuICAgIC8vICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgLy8gICAgICAgcS5yZXNvbHZlKHJlc3BvbnNlLmRhdGEpO1xuICAgIC8vICAgICB9KVxuICAgIC8vICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAvLyAgICAgICBxLnJlamVjdChlcnIpO1xuICAgIC8vICAgICB9KTtcbiAgICAvLyAgIHJldHVybiBxLnByb21pc2U7XG4gICAgLy8gfSxcblxuICAgIGNyZWF0ZVNoYXJlOiBmdW5jdGlvbihzaGFyZSl7XG4gICAgICBsZXQgcSA9ICRxLmRlZmVyKCk7XG4gICAgICBsZXQgc2V0dGluZ3MgPSB0aGlzLnNldHRpbmdzKCdzZXR0aW5ncycpO1xuICAgICAgbGV0IGtldHRsZXMgPSB0aGlzLnNldHRpbmdzKCdrZXR0bGVzJyk7XG4gICAgICBsZXQgc2ggPSBPYmplY3QuYXNzaWduKHt9LCB7cGFzc3dvcmQ6IHNoYXJlLnBhc3N3b3JkLCBhY2Nlc3M6IHNoYXJlLmFjY2Vzc30pO1xuICAgICAgLy9yZW1vdmUgc29tZSB0aGluZ3Mgd2UgZG9uJ3QgbmVlZCB0byBzaGFyZVxuICAgICAgXy5lYWNoKGtldHRsZXMsIChrZXR0bGUsIGkpID0+IHtcbiAgICAgICAgZGVsZXRlIGtldHRsZXNbaV0ua25vYjtcbiAgICAgICAgZGVsZXRlIGtldHRsZXNbaV0udmFsdWVzO1xuICAgICAgfSk7XG4gICAgICBkZWxldGUgc2V0dGluZ3MuYWNjb3VudDtcbiAgICAgIGRlbGV0ZSBzZXR0aW5ncy5ub3RpZmljYXRpb25zO1xuICAgICAgc2V0dGluZ3Muc2hhcmVkID0gdHJ1ZTtcbiAgICAgIGlmKHNoLnBhc3N3b3JkKVxuICAgICAgICBzaC5wYXNzd29yZCA9IG1kNShzaC5wYXNzd29yZCk7XG4gICAgICAkaHR0cCh7dXJsOiAnaHR0cHM6Ly9tb25pdG9yLmJyZXdiZW5jaC5jby9zaGFyZS9jcmVhdGUvJyxcbiAgICAgICAgICBtZXRob2Q6J1BPU1QnLFxuICAgICAgICAgIGRhdGE6IHsnc2hhcmUnOiBzaCwgJ3NldHRpbmdzJzogc2V0dGluZ3MsICdrZXR0bGVzJzoga2V0dGxlc30sXG4gICAgICAgICAgaGVhZGVyczogeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbid9XG4gICAgICAgIH0pXG4gICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICBxLnJlc29sdmUocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgIHEucmVqZWN0KGVycik7XG4gICAgICAgIH0pO1xuICAgICAgcmV0dXJuIHEucHJvbWlzZTtcbiAgICB9LFxuXG4gICAgc2hhcmVUZXN0OiBmdW5jdGlvbihhcmR1aW5vKXtcbiAgICAgIGxldCBxID0gJHEuZGVmZXIoKTtcbiAgICAgIGxldCBxdWVyeSA9IGB1cmw9JHthcmR1aW5vLnVybH1gXG5cbiAgICAgIGlmKGFyZHVpbm8ucGFzc3dvcmQpXG4gICAgICAgIHF1ZXJ5ICs9ICcmYXV0aD0nK2J0b2EoJ3Jvb3Q6JythcmR1aW5vLnBhc3N3b3JkKTtcblxuICAgICAgJGh0dHAoe3VybDogJ2h0dHBzOi8vbW9uaXRvci5icmV3YmVuY2guY28vc2hhcmUvdGVzdC8/JytxdWVyeSwgbWV0aG9kOiAnR0VUJ30pXG4gICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICBxLnJlc29sdmUocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgIHEucmVqZWN0KGVycik7XG4gICAgICAgIH0pO1xuICAgICAgcmV0dXJuIHEucHJvbWlzZTtcbiAgICB9LFxuXG4gICAgaXA6IGZ1bmN0aW9uKGFyZHVpbm8pe1xuICAgICAgbGV0IHEgPSAkcS5kZWZlcigpO1xuXG4gICAgICAkaHR0cCh7dXJsOiAnaHR0cHM6Ly9tb25pdG9yLmJyZXdiZW5jaC5jby9zaGFyZS9pcCcsIG1ldGhvZDogJ0dFVCd9KVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgcS5yZXNvbHZlKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICBxLnJlamVjdChlcnIpO1xuICAgICAgICB9KTtcbiAgICAgIHJldHVybiBxLnByb21pc2U7XG4gICAgfSxcblxuICAgIHRwbGluazogZnVuY3Rpb24oKXtcbiAgICAgIGNvbnN0IHVybCA9IFwiaHR0cHM6Ly93YXAudHBsaW5rY2xvdWQuY29tXCI7XG4gICAgICBsZXQgcGFyYW1zID0ge1xuICAgICAgICBhcHBOYW1lOiAnS2FzYV9BbmRyb2lkJyxcbiAgICAgICAgdGVybUlEOiAnQnJld0JlbmNoJyxcbiAgICAgICAgYXBwVmVyOiAnMS40LjQuNjA3JyxcbiAgICAgICAgb3NwZjogJ0FuZHJvaWQrNi4wLjEnLFxuICAgICAgICBuZXRUeXBlOiAnd2lmaScsXG4gICAgICAgIGxvY2FsZTogJ2VzX0VOJ1xuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxvZ2luOiAodXNlcixwYXNzKSA9PiB7XG4gICAgICAgICAgbGV0IHEgPSAkcS5kZWZlcigpO1xuICAgICAgICAgIGlmKCF1c2VyIHx8ICFwYXNzKVxuICAgICAgICAgICAgcmV0dXJuIHEucmVqZWN0KCdJbnZhbGlkIExvZ2luJyk7XG4gICAgICAgICAgY29uc3QgbG9naW5fcGF5bG9hZCA9IHtcbiAgICAgICAgICAgIFwibWV0aG9kXCI6IFwibG9naW5cIixcbiAgICAgICAgICAgIFwidXJsXCI6IHVybCxcbiAgICAgICAgICAgIFwicGFyYW1zXCI6IHtcbiAgICAgICAgICAgICAgXCJhcHBUeXBlXCI6IFwiS2FzYV9BbmRyb2lkXCIsXG4gICAgICAgICAgICAgIFwiY2xvdWRQYXNzd29yZFwiOiBwYXNzLFxuICAgICAgICAgICAgICBcImNsb3VkVXNlck5hbWVcIjogdXNlcixcbiAgICAgICAgICAgICAgXCJ0ZXJtaW5hbFVVSURcIjogcGFyYW1zLnRlcm1JRFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgICAgJGh0dHAoe3VybDogdXJsLFxuICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgICAgcGFyYW1zOiBwYXJhbXMsXG4gICAgICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KGxvZ2luX3BheWxvYWQpLFxuICAgICAgICAgICAgICBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ31cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgIC8vIHNhdmUgdGhlIHRva2VuXG4gICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmRhdGEucmVzdWx0KXtcbiAgICAgICAgICAgICAgICBxLnJlc29sdmUocmVzcG9uc2UuZGF0YS5yZXN1bHQpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHEucmVqZWN0KCdObyByZXNwb25zZScpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICAgIHEucmVqZWN0KGVycik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gcS5wcm9taXNlO1xuICAgICAgICB9LFxuICAgICAgICBzY2FuOiAodG9rZW4pID0+IHtcbiAgICAgICAgICBsZXQgcSA9ICRxLmRlZmVyKCk7XG4gICAgICAgICAgbGV0IHNldHRpbmdzID0gdGhpcy5zZXR0aW5ncygnc2V0dGluZ3MnKTtcbiAgICAgICAgICB0b2tlbiA9IHRva2VuIHx8IHNldHRpbmdzLnRwbGluay50b2tlbjtcbiAgICAgICAgICBpZighdG9rZW4pXG4gICAgICAgICAgICByZXR1cm4gcS5yZWplY3QoJ0ludmFsaWQgdG9rZW4nKTtcbiAgICAgICAgICAkaHR0cCh7dXJsOiB1cmwsXG4gICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgICBwYXJhbXM6IHt0b2tlbjogdG9rZW59LFxuICAgICAgICAgICAgICBkYXRhOiBKU09OLnN0cmluZ2lmeSh7IG1ldGhvZDogXCJnZXREZXZpY2VMaXN0XCIgfSksXG4gICAgICAgICAgICAgIGhlYWRlcnM6IHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgcS5yZXNvbHZlKHJlc3BvbnNlLmRhdGEucmVzdWx0KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgcS5yZWplY3QoZXJyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBxLnByb21pc2U7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbW1hbmQ6IChkZXZpY2UsIGNvbW1hbmQpID0+IHtcbiAgICAgICAgICBsZXQgcSA9ICRxLmRlZmVyKCk7XG4gICAgICAgICAgbGV0IHNldHRpbmdzID0gdGhpcy5zZXR0aW5ncygnc2V0dGluZ3MnKTtcbiAgICAgICAgICBsZXQgdG9rZW4gPSBzZXR0aW5ncy50cGxpbmsudG9rZW47XG4gICAgICAgICAgbGV0IHBheWxvYWQgPSB7XG4gICAgICAgICAgICBcIm1ldGhvZFwiOlwicGFzc3Rocm91Z2hcIixcbiAgICAgICAgICAgIFwicGFyYW1zXCI6IHtcbiAgICAgICAgICAgICAgXCJkZXZpY2VJZFwiOiBkZXZpY2UuZGV2aWNlSWQsXG4gICAgICAgICAgICAgIFwicmVxdWVzdERhdGFcIjogSlNPTi5zdHJpbmdpZnkoIGNvbW1hbmQgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgICAgLy8gc2V0IHRoZSB0b2tlblxuICAgICAgICAgIGlmKCF0b2tlbilcbiAgICAgICAgICAgIHJldHVybiBxLnJlamVjdCgnSW52YWxpZCB0b2tlbicpO1xuICAgICAgICAgIHBhcmFtcy50b2tlbiA9IHRva2VuO1xuICAgICAgICAgICRodHRwKHt1cmw6IGRldmljZS5hcHBTZXJ2ZXJVcmwsXG4gICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICAgICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkocGF5bG9hZCksXG4gICAgICAgICAgICAgIGhlYWRlcnM6IHsnQ2FjaGUtQ29udHJvbCc6ICduby1jYWNoZScsICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbid9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICBxLnJlc29sdmUocmVzcG9uc2UuZGF0YS5yZXN1bHQpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgICBxLnJlamVjdChlcnIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIHEucHJvbWlzZTtcbiAgICAgICAgfSxcbiAgICAgICAgb246IChkZXZpY2UpID0+IHtcbiAgICAgICAgICBsZXQgY29tbWFuZCA9IHtcInN5c3RlbVwiOntcInNldF9yZWxheV9zdGF0ZVwiOntcInN0YXRlXCI6IDEgfX19O1xuICAgICAgICAgIHJldHVybiB0aGlzLnRwbGluaygpLmNvbW1hbmQoZGV2aWNlLCBjb21tYW5kKTtcbiAgICAgICAgfSxcbiAgICAgICAgb2ZmOiAoZGV2aWNlKSA9PiB7XG4gICAgICAgICAgbGV0IGNvbW1hbmQgPSB7XCJzeXN0ZW1cIjp7XCJzZXRfcmVsYXlfc3RhdGVcIjp7XCJzdGF0ZVwiOiAwIH19fTtcbiAgICAgICAgICByZXR1cm4gdGhpcy50cGxpbmsoKS5jb21tYW5kKGRldmljZSwgY29tbWFuZCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSxcblxuICAgIGluZmx1eGRiOiBmdW5jdGlvbigpe1xuICAgICAgbGV0IHEgPSAkcS5kZWZlcigpO1xuICAgICAgbGV0IHNldHRpbmdzID0gdGhpcy5zZXR0aW5ncygnc2V0dGluZ3MnKTtcbiAgICAgIGxldCBpbmZsdXhDb25uZWN0aW9uID0gYCR7c2V0dGluZ3MuaW5mbHV4ZGIudXJsfWA7XG4gICAgICBpZiggISFzZXR0aW5ncy5pbmZsdXhkYi5wb3J0IClcbiAgICAgICAgaW5mbHV4Q29ubmVjdGlvbiArPSBgOiR7c2V0dGluZ3MuaW5mbHV4ZGIucG9ydH1gXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBpbmc6ICgpID0+IHtcbiAgICAgICAgICAkaHR0cCh7dXJsOiBgJHtpbmZsdXhDb25uZWN0aW9ufS9waW5nYCwgbWV0aG9kOiAnR0VUJ30pXG4gICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgIHEucmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICAgIHEucmVqZWN0KGVycik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBxLnByb21pc2U7XG4gICAgICAgIH0sXG4gICAgICAgIGNyZWF0ZURCOiAobmFtZSkgPT4ge1xuICAgICAgICAgICRodHRwKHt1cmw6IGAke2luZmx1eENvbm5lY3Rpb259L3F1ZXJ5P3U9JHtzZXR0aW5ncy5pbmZsdXhkYi51c2VyfSZwPSR7c2V0dGluZ3MuaW5mbHV4ZGIucGFzc30mcT0ke2VuY29kZVVSSUNvbXBvbmVudChgQ1JFQVRFIERBVEFCQVNFIFwiJHtuYW1lfVwiYCl9YCwgbWV0aG9kOiAnUE9TVCd9KVxuICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICBxLnJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgICBxLnJlamVjdChlcnIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcS5wcm9taXNlO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0sXG5cbiAgICBwa2c6IGZ1bmN0aW9uKCl7XG4gICAgICAgIGxldCBxID0gJHEuZGVmZXIoKTtcbiAgICAgICAgJGh0dHAuZ2V0KCcvcGFja2FnZS5qc29uJylcbiAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICBxLnJlc29sdmUocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIHEucmVqZWN0KGVycik7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIHEucHJvbWlzZTtcbiAgICB9LFxuXG4gICAgZ3JhaW5zOiBmdW5jdGlvbigpe1xuICAgICAgICBsZXQgcSA9ICRxLmRlZmVyKCk7XG4gICAgICAgICRodHRwLmdldCgnL2Fzc2V0cy9kYXRhL2dyYWlucy5qc29uJylcbiAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICBxLnJlc29sdmUocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIHEucmVqZWN0KGVycik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBxLnByb21pc2U7XG4gICAgfSxcblxuICAgIGhvcHM6IGZ1bmN0aW9uKCl7XG4gICAgICAgIGxldCBxID0gJHEuZGVmZXIoKTtcbiAgICAgICAgJGh0dHAuZ2V0KCcvYXNzZXRzL2RhdGEvaG9wcy5qc29uJylcbiAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICBxLnJlc29sdmUocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIHEucmVqZWN0KGVycik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBxLnByb21pc2U7XG4gICAgfSxcblxuICAgIHdhdGVyOiBmdW5jdGlvbigpe1xuICAgICAgICBsZXQgcSA9ICRxLmRlZmVyKCk7XG4gICAgICAgICRodHRwLmdldCgnL2Fzc2V0cy9kYXRhL3dhdGVyLmpzb24nKVxuICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIHEucmVzb2x2ZShyZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgcS5yZWplY3QoZXJyKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHEucHJvbWlzZTtcbiAgICB9LFxuXG4gICAgc3R5bGVzOiBmdW5jdGlvbigpe1xuICAgICAgbGV0IHEgPSAkcS5kZWZlcigpO1xuICAgICAgJGh0dHAuZ2V0KCcvYXNzZXRzL2RhdGEvc3R5bGVndWlkZS5qc29uJylcbiAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgIHEucmVzb2x2ZShyZXNwb25zZS5kYXRhKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgcS5yZWplY3QoZXJyKTtcbiAgICAgICAgfSk7XG4gICAgICByZXR1cm4gcS5wcm9taXNlO1xuICAgIH0sXG5cbiAgICBsb3ZpYm9uZDogZnVuY3Rpb24oKXtcbiAgICAgICAgbGV0IHEgPSAkcS5kZWZlcigpO1xuICAgICAgICAkaHR0cC5nZXQoJy9hc3NldHMvZGF0YS9sb3ZpYm9uZC5qc29uJylcbiAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICBxLnJlc29sdmUocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIHEucmVqZWN0KGVycik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBxLnByb21pc2U7XG4gICAgfSxcblxuICAgIGNoYXJ0T3B0aW9uczogZnVuY3Rpb24odW5pdCl7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjaGFydDoge1xuICAgICAgICAgICAgICB0eXBlOiAnbGluZUNoYXJ0JyxcbiAgICAgICAgICAgICAgbm9EYXRhOiAnQnJld0JlbmNoIExpdmUnLFxuICAgICAgICAgICAgICBoZWlnaHQ6IDM1MCxcbiAgICAgICAgICAgICAgbWFyZ2luIDoge1xuICAgICAgICAgICAgICAgICAgdG9wOiAyMCxcbiAgICAgICAgICAgICAgICAgIHJpZ2h0OiAyMCxcbiAgICAgICAgICAgICAgICAgIGJvdHRvbTogMTAwLFxuICAgICAgICAgICAgICAgICAgbGVmdDogNjVcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgeDogZnVuY3Rpb24oZCl7IHJldHVybiAoZCAmJiBkLmxlbmd0aCkgPyBkWzBdIDogZDsgfSxcbiAgICAgICAgICAgICAgeTogZnVuY3Rpb24oZCl7IHJldHVybiAoZCAmJiBkLmxlbmd0aCkgPyBkWzFdIDogZDsgfSxcbiAgICAgICAgICAgICAgLy8gYXZlcmFnZTogZnVuY3Rpb24oZCkgeyByZXR1cm4gZC5tZWFuIH0sXG5cbiAgICAgICAgICAgICAgY29sb3I6IGQzLnNjYWxlLmNhdGVnb3J5MTAoKS5yYW5nZSgpLFxuICAgICAgICAgICAgICBkdXJhdGlvbjogMzAwLFxuICAgICAgICAgICAgICB1c2VJbnRlcmFjdGl2ZUd1aWRlbGluZTogdHJ1ZSxcbiAgICAgICAgICAgICAgY2xpcFZvcm9ub2k6IGZhbHNlLFxuXG4gICAgICAgICAgICAgIHhBeGlzOiB7XG4gICAgICAgICAgICAgICAgICBheGlzTGFiZWw6ICdUaW1lJyxcbiAgICAgICAgICAgICAgICAgIHRpY2tGb3JtYXQ6IGZ1bmN0aW9uKGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZDMudGltZS5mb3JtYXQoJyVJOiVNOiVTJykobmV3IERhdGUoZCkpXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgb3JpZW50OiAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICAgIHRpY2tQYWRkaW5nOiAyMCxcbiAgICAgICAgICAgICAgICAgIGF4aXNMYWJlbERpc3RhbmNlOiA0MCxcbiAgICAgICAgICAgICAgICAgIHN0YWdnZXJMYWJlbHM6IHRydWVcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZm9yY2VZOiAoIXVuaXQgfHwgdW5pdD09J0YnKSA/IFswLDIyMF0gOiBbLTE3LDEwNF0sXG4gICAgICAgICAgICAgIHlBeGlzOiB7XG4gICAgICAgICAgICAgICAgICBheGlzTGFiZWw6ICdUZW1wZXJhdHVyZScsXG4gICAgICAgICAgICAgICAgICB0aWNrRm9ybWF0OiBmdW5jdGlvbihkKXtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZCsnXFx1MDBCMCc7XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgb3JpZW50OiAnbGVmdCcsXG4gICAgICAgICAgICAgICAgICBzaG93TWF4TWluOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgYXhpc0xhYmVsRGlzdGFuY2U6IDBcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9LFxuICAgIC8vIGh0dHA6Ly93d3cuYnJld2Vyc2ZyaWVuZC5jb20vMjAxMS8wNi8xNi9hbGNvaG9sLWJ5LXZvbHVtZS1jYWxjdWxhdG9yLXVwZGF0ZWQvXG4gICAgLy8gUGFwYXppYW5cbiAgICBhYnY6IGZ1bmN0aW9uKG9nLGZnKXtcbiAgICAgIHJldHVybiAoKCBvZyAtIGZnICkgKiAxMzEuMjUpLnRvRml4ZWQoMik7XG4gICAgfSxcbiAgICAvLyBEYW5pZWxzLCB1c2VkIGZvciBoaWdoIGdyYXZpdHkgYmVlcnNcbiAgICBhYnZhOiBmdW5jdGlvbihvZyxmZyl7XG4gICAgICByZXR1cm4gKCggNzYuMDggKiAoIG9nIC0gZmcgKSAvICggMS43NzUgLSBvZyApKSAqICggZmcgLyAwLjc5NCApKS50b0ZpeGVkKDIpO1xuICAgIH0sXG4gICAgLy8gaHR0cDovL2hiZC5vcmcvZW5zbWluZ3IvXG4gICAgYWJ3OiBmdW5jdGlvbihhYnYsZmcpe1xuICAgICAgcmV0dXJuICgoMC43OSAqIGFidikgLyBmZykudG9GaXhlZCgyKTtcbiAgICB9LFxuICAgIHJlOiBmdW5jdGlvbihvcCxmcCl7XG4gICAgICByZXR1cm4gKDAuMTgwOCAqIG9wKSArICgwLjgxOTIgKiBmcCk7XG4gICAgfSxcbiAgICBhdHRlbnVhdGlvbjogZnVuY3Rpb24ob3AsZnApe1xuICAgICAgcmV0dXJuICgoMSAtIChmcC9vcCkpKjEwMCkudG9GaXhlZCgyKTtcbiAgICB9LFxuICAgIGNhbG9yaWVzOiBmdW5jdGlvbihhYncscmUsZmcpe1xuICAgICAgcmV0dXJuICgoKDYuOSAqIGFidykgKyA0LjAgKiAocmUgLSAwLjEpKSAqIGZnICogMy41NSkudG9GaXhlZCgxKTtcbiAgICB9LFxuICAgIC8vIGh0dHA6Ly93d3cuYnJld2Vyc2ZyaWVuZC5jb20vcGxhdG8tdG8tc2ctY29udmVyc2lvbi1jaGFydC9cbiAgICBzZzogZnVuY3Rpb24ocGxhdG8pe1xuICAgICAgbGV0IHNnID0gKCAxICsgKHBsYXRvIC8gKDI1OC42IC0gKCAocGxhdG8vMjU4LjIpICogMjI3LjEpICkgKSApLnRvRml4ZWQoMyk7XG4gICAgICByZXR1cm4gcGFyc2VGbG9hdChzZyk7XG4gICAgfSxcbiAgICBwbGF0bzogZnVuY3Rpb24oc2cpe1xuICAgICAgbGV0IHBsYXRvID0gKCgtMSAqIDYxNi44NjgpICsgKDExMTEuMTQgKiBzZykgLSAoNjMwLjI3MiAqIE1hdGgucG93KHNnLDIpKSArICgxMzUuOTk3ICogTWF0aC5wb3coc2csMykpKS50b1N0cmluZygpO1xuICAgICAgaWYocGxhdG8uc3Vic3RyaW5nKHBsYXRvLmluZGV4T2YoJy4nKSsxLHBsYXRvLmluZGV4T2YoJy4nKSsyKSA9PSA1KVxuICAgICAgICBwbGF0byA9IHBsYXRvLnN1YnN0cmluZygwLHBsYXRvLmluZGV4T2YoJy4nKSsyKTtcbiAgICAgIGVsc2UgaWYocGxhdG8uc3Vic3RyaW5nKHBsYXRvLmluZGV4T2YoJy4nKSsxLHBsYXRvLmluZGV4T2YoJy4nKSsyKSA8IDUpXG4gICAgICAgIHBsYXRvID0gcGxhdG8uc3Vic3RyaW5nKDAscGxhdG8uaW5kZXhPZignLicpKTtcbiAgICAgIGVsc2UgaWYocGxhdG8uc3Vic3RyaW5nKHBsYXRvLmluZGV4T2YoJy4nKSsxLHBsYXRvLmluZGV4T2YoJy4nKSsyKSA+IDUpe1xuICAgICAgICBwbGF0byA9IHBsYXRvLnN1YnN0cmluZygwLHBsYXRvLmluZGV4T2YoJy4nKSk7XG4gICAgICAgIHBsYXRvID0gcGFyc2VGbG9hdChwbGF0bykgKyAxO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhcnNlRmxvYXQocGxhdG8pO1xuICAgIH0sXG4gICAgcmVjaXBlQmVlclNtaXRoOiBmdW5jdGlvbihyZWNpcGUpe1xuICAgICAgbGV0IHJlc3BvbnNlID0ge25hbWU6JycsIGRhdGU6JycsIGJyZXdlcjoge25hbWU6Jyd9LCBjYXRlZ29yeTonJywgYWJ2OicnLCBvZzowLjAwMCwgZmc6MC4wMDAsIGlidTowLCBob3BzOltdLCBncmFpbnM6W10sIHllYXN0OltdLCBtaXNjOltdfTtcbiAgICAgIGlmKCEhcmVjaXBlLkZfUl9OQU1FKVxuICAgICAgICByZXNwb25zZS5uYW1lID0gcmVjaXBlLkZfUl9OQU1FO1xuICAgICAgaWYoISFyZWNpcGUuRl9SX1NUWUxFLkZfU19DQVRFR09SWSlcbiAgICAgICAgcmVzcG9uc2UuY2F0ZWdvcnkgPSByZWNpcGUuRl9SX1NUWUxFLkZfU19DQVRFR09SWTtcbiAgICAgIGlmKCEhcmVjaXBlLkZfUl9EQVRFKVxuICAgICAgICByZXNwb25zZS5kYXRlID0gcmVjaXBlLkZfUl9EQVRFO1xuICAgICAgaWYoISFyZWNpcGUuRl9SX0JSRVdFUilcbiAgICAgICAgcmVzcG9uc2UuYnJld2VyLm5hbWUgPSByZWNpcGUuRl9SX0JSRVdFUjtcblxuICAgICAgaWYoISFyZWNpcGUuRl9SX1NUWUxFLkZfU19NQVhfT0cpXG4gICAgICAgIHJlc3BvbnNlLm9nID0gcGFyc2VGbG9hdChyZWNpcGUuRl9SX1NUWUxFLkZfU19NQVhfT0cpLnRvRml4ZWQoMyk7XG4gICAgICBlbHNlIGlmKCEhcmVjaXBlLkZfUl9TVFlMRS5GX1NfTUlOX09HKVxuICAgICAgICByZXNwb25zZS5vZyA9IHBhcnNlRmxvYXQocmVjaXBlLkZfUl9TVFlMRS5GX1NfTUlOX09HKS50b0ZpeGVkKDMpO1xuICAgICAgaWYoISFyZWNpcGUuRl9SX1NUWUxFLkZfU19NQVhfRkcpXG4gICAgICAgIHJlc3BvbnNlLmZnID0gcGFyc2VGbG9hdChyZWNpcGUuRl9SX1NUWUxFLkZfU19NQVhfRkcpLnRvRml4ZWQoMyk7XG4gICAgICBlbHNlIGlmKCEhcmVjaXBlLkZfUl9TVFlMRS5GX1NfTUlOX0ZHKVxuICAgICAgICByZXNwb25zZS5mZyA9IHBhcnNlRmxvYXQocmVjaXBlLkZfUl9TVFlMRS5GX1NfTUlOX0ZHKS50b0ZpeGVkKDMpO1xuXG4gICAgICBpZighIXJlY2lwZS5GX1JfU1RZTEUuRl9TX01BWF9BQlYpXG4gICAgICAgIHJlc3BvbnNlLmFidiA9ICRmaWx0ZXIoJ251bWJlcicpKHJlY2lwZS5GX1JfU1RZTEUuRl9TX01BWF9BQlYsMik7XG4gICAgICBlbHNlIGlmKCEhcmVjaXBlLkZfUl9TVFlMRS5GX1NfTUlOX0FCVilcbiAgICAgICAgcmVzcG9uc2UuYWJ2ID0gJGZpbHRlcignbnVtYmVyJykocmVjaXBlLkZfUl9TVFlMRS5GX1NfTUlOX0FCViwyKTtcblxuICAgICAgaWYoISFyZWNpcGUuRl9SX1NUWUxFLkZfU19NQVhfSUJVKVxuICAgICAgICByZXNwb25zZS5pYnUgPSBwYXJzZUludChyZWNpcGUuRl9SX1NUWUxFLkZfU19NQVhfSUJVLDEwKTtcbiAgICAgIGVsc2UgaWYoISFyZWNpcGUuRl9SX1NUWUxFLkZfU19NSU5fSUJVKVxuICAgICAgICByZXNwb25zZS5pYnUgPSBwYXJzZUludChyZWNpcGUuRl9SX1NUWUxFLkZfU19NSU5fSUJVLDEwKTtcblxuICAgICAgaWYoISFyZWNpcGUuSW5ncmVkaWVudHMuRGF0YS5HcmFpbil7XG4gICAgICAgIF8uZWFjaChyZWNpcGUuSW5ncmVkaWVudHMuRGF0YS5HcmFpbixmdW5jdGlvbihncmFpbil7XG4gICAgICAgICAgcmVzcG9uc2UuZ3JhaW5zLnB1c2goe1xuICAgICAgICAgICAgbGFiZWw6IGdyYWluLkZfR19OQU1FLFxuICAgICAgICAgICAgbWluOiBwYXJzZUludChncmFpbi5GX0dfQk9JTF9USU1FLDEwKSxcbiAgICAgICAgICAgIG5vdGVzOiAkZmlsdGVyKCdudW1iZXInKShncmFpbi5GX0dfQU1PVU5ULzE2LDIpKycgbGJzLicsXG4gICAgICAgICAgICBhbW91bnQ6ICRmaWx0ZXIoJ251bWJlcicpKGdyYWluLkZfR19BTU9VTlQvMTYsMilcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmKCEhcmVjaXBlLkluZ3JlZGllbnRzLkRhdGEuSG9wcyl7XG4gICAgICAgICAgXy5lYWNoKHJlY2lwZS5JbmdyZWRpZW50cy5EYXRhLkhvcHMsZnVuY3Rpb24oaG9wKXtcbiAgICAgICAgICAgIHJlc3BvbnNlLmhvcHMucHVzaCh7XG4gICAgICAgICAgICAgIGxhYmVsOiBob3AuRl9IX05BTUUsXG4gICAgICAgICAgICAgIG1pbjogcGFyc2VJbnQoaG9wLkZfSF9EUllfSE9QX1RJTUUsMTApID4gMCA/IG51bGwgOiBwYXJzZUludChob3AuRl9IX0JPSUxfVElNRSwxMCksXG4gICAgICAgICAgICAgIG5vdGVzOiBwYXJzZUludChob3AuRl9IX0RSWV9IT1BfVElNRSwxMCkgPiAwXG4gICAgICAgICAgICAgICAgPyAnRHJ5IEhvcCAnKyRmaWx0ZXIoJ251bWJlcicpKGhvcC5GX0hfQU1PVU5ULDIpKycgb3ouJysnIGZvciAnK3BhcnNlSW50KGhvcC5GX0hfRFJZX0hPUF9USU1FLDEwKSsnIERheXMnXG4gICAgICAgICAgICAgICAgOiAkZmlsdGVyKCdudW1iZXInKShob3AuRl9IX0FNT1VOVCwyKSsnIG96LicsXG4gICAgICAgICAgICAgIGFtb3VudDogJGZpbHRlcignbnVtYmVyJykoaG9wLkZfSF9BTU9VTlQsMilcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gaG9wLkZfSF9BTFBIQVxuICAgICAgICAgICAgLy8gaG9wLkZfSF9EUllfSE9QX1RJTUVcbiAgICAgICAgICAgIC8vIGhvcC5GX0hfT1JJR0lOXG4gICAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmKCEhcmVjaXBlLkluZ3JlZGllbnRzLkRhdGEuTWlzYyl7XG4gICAgICAgIGlmKHJlY2lwZS5JbmdyZWRpZW50cy5EYXRhLk1pc2MubGVuZ3RoKXtcbiAgICAgICAgICBfLmVhY2gocmVjaXBlLkluZ3JlZGllbnRzLkRhdGEuTWlzYyxmdW5jdGlvbihtaXNjKXtcbiAgICAgICAgICAgIHJlc3BvbnNlLm1pc2MucHVzaCh7XG4gICAgICAgICAgICAgIGxhYmVsOiBtaXNjLkZfTV9OQU1FLFxuICAgICAgICAgICAgICBtaW46IHBhcnNlSW50KG1pc2MuRl9NX1RJTUUsMTApLFxuICAgICAgICAgICAgICBub3RlczogJGZpbHRlcignbnVtYmVyJykobWlzYy5GX01fQU1PVU5ULDIpKycgZy4nLFxuICAgICAgICAgICAgICBhbW91bnQ6ICRmaWx0ZXIoJ251bWJlcicpKG1pc2MuRl9NX0FNT1VOVCwyKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzcG9uc2UubWlzYy5wdXNoKHtcbiAgICAgICAgICAgIGxhYmVsOiByZWNpcGUuSW5ncmVkaWVudHMuRGF0YS5NaXNjLkZfTV9OQU1FLFxuICAgICAgICAgICAgbWluOiBwYXJzZUludChyZWNpcGUuSW5ncmVkaWVudHMuRGF0YS5NaXNjLkZfTV9USU1FLDEwKSxcbiAgICAgICAgICAgIG5vdGVzOiAkZmlsdGVyKCdudW1iZXInKShyZWNpcGUuSW5ncmVkaWVudHMuRGF0YS5NaXNjLkZfTV9BTU9VTlQsMikrJyBnLicsXG4gICAgICAgICAgICBhbW91bnQ6ICRmaWx0ZXIoJ251bWJlcicpKHJlY2lwZS5JbmdyZWRpZW50cy5EYXRhLk1pc2MuRl9NX0FNT1VOVCwyKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmKCEhcmVjaXBlLkluZ3JlZGllbnRzLkRhdGEuWWVhc3Qpe1xuICAgICAgICBpZihyZWNpcGUuSW5ncmVkaWVudHMuRGF0YS5ZZWFzdC5sZW5ndGgpe1xuICAgICAgICAgIF8uZWFjaChyZWNpcGUuSW5ncmVkaWVudHMuRGF0YS5ZZWFzdCxmdW5jdGlvbih5ZWFzdCl7XG4gICAgICAgICAgICByZXNwb25zZS55ZWFzdC5wdXNoKHtcbiAgICAgICAgICAgICAgbmFtZTogeWVhc3QuRl9ZX0xBQisnICcrKHllYXN0LkZfWV9QUk9EVUNUX0lEID9cbiAgICAgICAgICAgICAgICB5ZWFzdC5GX1lfUFJPRFVDVF9JRCA6XG4gICAgICAgICAgICAgICAgeWVhc3QuRl9ZX05BTUUpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNwb25zZS55ZWFzdC5wdXNoKHtcbiAgICAgICAgICAgIG5hbWU6IHJlY2lwZS5JbmdyZWRpZW50cy5EYXRhLlllYXN0LkZfWV9MQUIrJyAnK1xuICAgICAgICAgICAgICAocmVjaXBlLkluZ3JlZGllbnRzLkRhdGEuWWVhc3QuRl9ZX1BST0RVQ1RfSUQgP1xuICAgICAgICAgICAgICAgIHJlY2lwZS5JbmdyZWRpZW50cy5EYXRhLlllYXN0LkZfWV9QUk9EVUNUX0lEIDpcbiAgICAgICAgICAgICAgICByZWNpcGUuSW5ncmVkaWVudHMuRGF0YS5ZZWFzdC5GX1lfTkFNRSlcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH0sXG4gICAgcmVjaXBlQmVlclhNTDogZnVuY3Rpb24ocmVjaXBlKXtcbiAgICAgIGxldCByZXNwb25zZSA9IHtuYW1lOicnLCBkYXRlOicnLCBicmV3ZXI6IHtuYW1lOicnfSwgY2F0ZWdvcnk6JycsIGFidjonJywgb2c6MC4wMDAsIGZnOjAuMDAwLCBpYnU6MCwgaG9wczpbXSwgZ3JhaW5zOltdLCB5ZWFzdDpbXSwgbWlzYzpbXX07XG4gICAgICBsZXQgbWFzaF90aW1lID0gNjA7XG5cbiAgICAgIGlmKCEhcmVjaXBlLk5BTUUpXG4gICAgICAgIHJlc3BvbnNlLm5hbWUgPSByZWNpcGUuTkFNRTtcbiAgICAgIGlmKCEhcmVjaXBlLlNUWUxFLkNBVEVHT1JZKVxuICAgICAgICByZXNwb25zZS5jYXRlZ29yeSA9IHJlY2lwZS5TVFlMRS5DQVRFR09SWTtcblxuICAgICAgLy8gaWYoISFyZWNpcGUuRl9SX0RBVEUpXG4gICAgICAvLyAgIHJlc3BvbnNlLmRhdGUgPSByZWNpcGUuRl9SX0RBVEU7XG4gICAgICBpZighIXJlY2lwZS5CUkVXRVIpXG4gICAgICAgIHJlc3BvbnNlLmJyZXdlci5uYW1lID0gcmVjaXBlLkJSRVdFUjtcblxuICAgICAgaWYoISFyZWNpcGUuT0cpXG4gICAgICAgIHJlc3BvbnNlLm9nID0gcGFyc2VGbG9hdChyZWNpcGUuT0cpLnRvRml4ZWQoMyk7XG4gICAgICBpZighIXJlY2lwZS5GRylcbiAgICAgICAgcmVzcG9uc2UuZmcgPSBwYXJzZUZsb2F0KHJlY2lwZS5GRykudG9GaXhlZCgzKTtcblxuICAgICAgaWYoISFyZWNpcGUuSUJVKVxuICAgICAgICByZXNwb25zZS5mZyA9IHBhcnNlSW50KHJlY2lwZS5JQlUsMTApO1xuXG4gICAgICBpZighIXJlY2lwZS5TVFlMRS5BQlZfTUFYKVxuICAgICAgICByZXNwb25zZS5hYnYgPSAkZmlsdGVyKCdudW1iZXInKShyZWNpcGUuU1RZTEUuQUJWX01BWCwyKTtcbiAgICAgIGVsc2UgaWYoISFyZWNpcGUuU1RZTEUuQUJWX01JTilcbiAgICAgICAgcmVzcG9uc2UuYWJ2ID0gJGZpbHRlcignbnVtYmVyJykocmVjaXBlLlNUWUxFLkFCVl9NSU4sMik7XG5cbiAgICAgIGlmKCEhcmVjaXBlLk1BU0guTUFTSF9TVEVQUy5NQVNIX1NURVAgJiYgcmVjaXBlLk1BU0guTUFTSF9TVEVQUy5NQVNIX1NURVAubGVuZ3RoICYmIHJlY2lwZS5NQVNILk1BU0hfU1RFUFMuTUFTSF9TVEVQWzBdLlNURVBfVElNRSl7XG4gICAgICAgIG1hc2hfdGltZSA9IHJlY2lwZS5NQVNILk1BU0hfU1RFUFMuTUFTSF9TVEVQWzBdLlNURVBfVElNRTtcbiAgICAgIH1cblxuICAgICAgaWYoISFyZWNpcGUuRkVSTUVOVEFCTEVTKXtcbiAgICAgICAgbGV0IGdyYWlucyA9IChyZWNpcGUuRkVSTUVOVEFCTEVTLkZFUk1FTlRBQkxFICYmIHJlY2lwZS5GRVJNRU5UQUJMRVMuRkVSTUVOVEFCTEUubGVuZ3RoKSA/IHJlY2lwZS5GRVJNRU5UQUJMRVMuRkVSTUVOVEFCTEUgOiByZWNpcGUuRkVSTUVOVEFCTEVTO1xuICAgICAgICBfLmVhY2goZ3JhaW5zLGZ1bmN0aW9uKGdyYWluKXtcbiAgICAgICAgICByZXNwb25zZS5ncmFpbnMucHVzaCh7XG4gICAgICAgICAgICBsYWJlbDogZ3JhaW4uTkFNRSxcbiAgICAgICAgICAgIG1pbjogcGFyc2VJbnQobWFzaF90aW1lLDEwKSxcbiAgICAgICAgICAgIG5vdGVzOiAkZmlsdGVyKCdudW1iZXInKShncmFpbi5BTU9VTlQsMikrJyBsYnMuJyxcbiAgICAgICAgICAgIGFtb3VudDogJGZpbHRlcignbnVtYmVyJykoZ3JhaW4uQU1PVU5ULDIpLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYoISFyZWNpcGUuSE9QUyl7XG4gICAgICAgIGxldCBob3BzID0gKHJlY2lwZS5IT1BTLkhPUCAmJiByZWNpcGUuSE9QUy5IT1AubGVuZ3RoKSA/IHJlY2lwZS5IT1BTLkhPUCA6IHJlY2lwZS5IT1BTO1xuICAgICAgICBfLmVhY2goaG9wcyxmdW5jdGlvbihob3Ape1xuICAgICAgICAgIHJlc3BvbnNlLmhvcHMucHVzaCh7XG4gICAgICAgICAgICBsYWJlbDogaG9wLk5BTUUrJyAoJytob3AuRk9STSsnKScsXG4gICAgICAgICAgICBtaW46IGhvcC5VU0UgPT0gJ0RyeSBIb3AnID8gMCA6IHBhcnNlSW50KGhvcC5USU1FLDEwKSxcbiAgICAgICAgICAgIG5vdGVzOiBob3AuVVNFID09ICdEcnkgSG9wJ1xuICAgICAgICAgICAgICA/IGhvcC5VU0UrJyAnKyRmaWx0ZXIoJ251bWJlcicpKGhvcC5BTU9VTlQqMTAwMC8yOC4zNDk1LDIpKycgb3ouJysnIGZvciAnK3BhcnNlSW50KGhvcC5USU1FLzYwLzI0LDEwKSsnIERheXMnXG4gICAgICAgICAgICAgIDogaG9wLlVTRSsnICcrJGZpbHRlcignbnVtYmVyJykoaG9wLkFNT1VOVCoxMDAwLzI4LjM0OTUsMikrJyBvei4nLFxuICAgICAgICAgICAgYW1vdW50OiAkZmlsdGVyKCdudW1iZXInKShob3AuQU1PVU5UKjEwMDAvMjguMzQ5NSwyKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYoISFyZWNpcGUuTUlTQ1Mpe1xuICAgICAgICBsZXQgbWlzYyA9IChyZWNpcGUuTUlTQ1MuTUlTQyAmJiByZWNpcGUuTUlTQ1MuTUlTQy5sZW5ndGgpID8gcmVjaXBlLk1JU0NTLk1JU0MgOiByZWNpcGUuTUlTQ1M7XG4gICAgICAgIF8uZWFjaChtaXNjLGZ1bmN0aW9uKG1pc2Mpe1xuICAgICAgICAgIHJlc3BvbnNlLm1pc2MucHVzaCh7XG4gICAgICAgICAgICBsYWJlbDogbWlzYy5OQU1FLFxuICAgICAgICAgICAgbWluOiBwYXJzZUludChtaXNjLlRJTUUsMTApLFxuICAgICAgICAgICAgbm90ZXM6ICdBZGQgJyttaXNjLkFNT1VOVCsnIHRvICcrbWlzYy5VU0UsXG4gICAgICAgICAgICBhbW91bnQ6IG1pc2MuQU1PVU5UXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZighIXJlY2lwZS5ZRUFTVFMpe1xuICAgICAgICBsZXQgeWVhc3QgPSAocmVjaXBlLllFQVNUUy5ZRUFTVCAmJiByZWNpcGUuWUVBU1RTLllFQVNULmxlbmd0aCkgPyByZWNpcGUuWUVBU1RTLllFQVNUIDogcmVjaXBlLllFQVNUUztcbiAgICAgICAgICBfLmVhY2goeWVhc3QsZnVuY3Rpb24oeWVhc3Qpe1xuICAgICAgICAgICAgcmVzcG9uc2UueWVhc3QucHVzaCh7XG4gICAgICAgICAgICAgIG5hbWU6IHllYXN0Lk5BTUVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH0sXG4gICAgZm9ybWF0WE1MOiBmdW5jdGlvbihjb250ZW50KXtcbiAgICAgIGxldCBodG1sY2hhcnMgPSBbXG4gICAgICAgIHtmOiAnJkNjZWRpbDsnLCByOiAnw4cnfSxcbiAgICAgICAge2Y6ICcmY2NlZGlsOycsIHI6ICfDpyd9LFxuICAgICAgICB7ZjogJyZFdW1sOycsIHI6ICfDiyd9LFxuICAgICAgICB7ZjogJyZldW1sOycsIHI6ICfDqyd9LFxuICAgICAgICB7ZjogJyYjMjYyOycsIHI6ICfEhid9LFxuICAgICAgICB7ZjogJyYjMjYzOycsIHI6ICfEhyd9LFxuICAgICAgICB7ZjogJyYjMjY4OycsIHI6ICfEjCd9LFxuICAgICAgICB7ZjogJyYjMjY5OycsIHI6ICfEjSd9LFxuICAgICAgICB7ZjogJyYjMjcyOycsIHI6ICfEkCd9LFxuICAgICAgICB7ZjogJyYjMjczOycsIHI6ICfEkSd9LFxuICAgICAgICB7ZjogJyYjMzUyOycsIHI6ICfFoCd9LFxuICAgICAgICB7ZjogJyYjMzUzOycsIHI6ICfFoSd9LFxuICAgICAgICB7ZjogJyYjMzgxOycsIHI6ICfFvSd9LFxuICAgICAgICB7ZjogJyYjMzgyOycsIHI6ICfFvid9LFxuICAgICAgICB7ZjogJyZBZ3JhdmU7JywgcjogJ8OAJ30sXG4gICAgICAgIHtmOiAnJmFncmF2ZTsnLCByOiAnw6AnfSxcbiAgICAgICAge2Y6ICcmQ2NlZGlsOycsIHI6ICfDhyd9LFxuICAgICAgICB7ZjogJyZjY2VkaWw7JywgcjogJ8OnJ30sXG4gICAgICAgIHtmOiAnJkVncmF2ZTsnLCByOiAnw4gnfSxcbiAgICAgICAge2Y6ICcmZWdyYXZlOycsIHI6ICfDqCd9LFxuICAgICAgICB7ZjogJyZFYWN1dGU7JywgcjogJ8OJJ30sXG4gICAgICAgIHtmOiAnJmVhY3V0ZTsnLCByOiAnw6knfSxcbiAgICAgICAge2Y6ICcmSWFjdXRlOycsIHI6ICfDjSd9LFxuICAgICAgICB7ZjogJyZpYWN1dGU7JywgcjogJ8OtJ30sXG4gICAgICAgIHtmOiAnJkl1bWw7JywgcjogJ8OPJ30sXG4gICAgICAgIHtmOiAnJml1bWw7JywgcjogJ8OvJ30sXG4gICAgICAgIHtmOiAnJk9ncmF2ZTsnLCByOiAnw5InfSxcbiAgICAgICAge2Y6ICcmb2dyYXZlOycsIHI6ICfDsid9LFxuICAgICAgICB7ZjogJyZPYWN1dGU7JywgcjogJ8OTJ30sXG4gICAgICAgIHtmOiAnJm9hY3V0ZTsnLCByOiAnw7MnfSxcbiAgICAgICAge2Y6ICcmVWFjdXRlOycsIHI6ICfDmid9LFxuICAgICAgICB7ZjogJyZ1YWN1dGU7JywgcjogJ8O6J30sXG4gICAgICAgIHtmOiAnJlV1bWw7JywgcjogJ8OcJ30sXG4gICAgICAgIHtmOiAnJnV1bWw7JywgcjogJ8O8J30sXG4gICAgICAgIHtmOiAnJm1pZGRvdDsnLCByOiAnwrcnfSxcbiAgICAgICAge2Y6ICcmIzI2MjsnLCByOiAnxIYnfSxcbiAgICAgICAge2Y6ICcmIzI2MzsnLCByOiAnxIcnfSxcbiAgICAgICAge2Y6ICcmIzI2ODsnLCByOiAnxIwnfSxcbiAgICAgICAge2Y6ICcmIzI2OTsnLCByOiAnxI0nfSxcbiAgICAgICAge2Y6ICcmIzI3MjsnLCByOiAnxJAnfSxcbiAgICAgICAge2Y6ICcmIzI3MzsnLCByOiAnxJEnfSxcbiAgICAgICAge2Y6ICcmIzM1MjsnLCByOiAnxaAnfSxcbiAgICAgICAge2Y6ICcmIzM1MzsnLCByOiAnxaEnfSxcbiAgICAgICAge2Y6ICcmIzM4MTsnLCByOiAnxb0nfSxcbiAgICAgICAge2Y6ICcmIzM4MjsnLCByOiAnxb4nfSxcbiAgICAgICAge2Y6ICcmQWFjdXRlOycsIHI6ICfDgSd9LFxuICAgICAgICB7ZjogJyZhYWN1dGU7JywgcjogJ8OhJ30sXG4gICAgICAgIHtmOiAnJiMyNjg7JywgcjogJ8SMJ30sXG4gICAgICAgIHtmOiAnJiMyNjk7JywgcjogJ8SNJ30sXG4gICAgICAgIHtmOiAnJiMyNzA7JywgcjogJ8SOJ30sXG4gICAgICAgIHtmOiAnJiMyNzE7JywgcjogJ8SPJ30sXG4gICAgICAgIHtmOiAnJkVhY3V0ZTsnLCByOiAnw4knfSxcbiAgICAgICAge2Y6ICcmZWFjdXRlOycsIHI6ICfDqSd9LFxuICAgICAgICB7ZjogJyYjMjgyOycsIHI6ICfEmid9LFxuICAgICAgICB7ZjogJyYjMjgzOycsIHI6ICfEmyd9LFxuICAgICAgICB7ZjogJyZJYWN1dGU7JywgcjogJ8ONJ30sXG4gICAgICAgIHtmOiAnJmlhY3V0ZTsnLCByOiAnw60nfSxcbiAgICAgICAge2Y6ICcmIzMyNzsnLCByOiAnxYcnfSxcbiAgICAgICAge2Y6ICcmIzMyODsnLCByOiAnxYgnfSxcbiAgICAgICAge2Y6ICcmT2FjdXRlOycsIHI6ICfDkyd9LFxuICAgICAgICB7ZjogJyZvYWN1dGU7JywgcjogJ8OzJ30sXG4gICAgICAgIHtmOiAnJiMzNDQ7JywgcjogJ8WYJ30sXG4gICAgICAgIHtmOiAnJiMzNDU7JywgcjogJ8WZJ30sXG4gICAgICAgIHtmOiAnJiMzNTI7JywgcjogJ8WgJ30sXG4gICAgICAgIHtmOiAnJiMzNTM7JywgcjogJ8WhJ30sXG4gICAgICAgIHtmOiAnJiMzNTY7JywgcjogJ8WkJ30sXG4gICAgICAgIHtmOiAnJiMzNTc7JywgcjogJ8WlJ30sXG4gICAgICAgIHtmOiAnJlVhY3V0ZTsnLCByOiAnw5onfSxcbiAgICAgICAge2Y6ICcmdWFjdXRlOycsIHI6ICfDuid9LFxuICAgICAgICB7ZjogJyYjMzY2OycsIHI6ICfFrid9LFxuICAgICAgICB7ZjogJyYjMzY3OycsIHI6ICfFryd9LFxuICAgICAgICB7ZjogJyZZYWN1dGU7JywgcjogJ8OdJ30sXG4gICAgICAgIHtmOiAnJnlhY3V0ZTsnLCByOiAnw70nfSxcbiAgICAgICAge2Y6ICcmIzM4MTsnLCByOiAnxb0nfSxcbiAgICAgICAge2Y6ICcmIzM4MjsnLCByOiAnxb4nfSxcbiAgICAgICAge2Y6ICcmQUVsaWc7JywgcjogJ8OGJ30sXG4gICAgICAgIHtmOiAnJmFlbGlnOycsIHI6ICfDpid9LFxuICAgICAgICB7ZjogJyZPc2xhc2g7JywgcjogJ8OYJ30sXG4gICAgICAgIHtmOiAnJm9zbGFzaDsnLCByOiAnw7gnfSxcbiAgICAgICAge2Y6ICcmQXJpbmc7JywgcjogJ8OFJ30sXG4gICAgICAgIHtmOiAnJmFyaW5nOycsIHI6ICfDpSd9LFxuICAgICAgICB7ZjogJyZFYWN1dGU7JywgcjogJ8OJJ30sXG4gICAgICAgIHtmOiAnJmVhY3V0ZTsnLCByOiAnw6knfSxcbiAgICAgICAge2Y6ICcmRXVtbDsnLCByOiAnw4snfSxcbiAgICAgICAge2Y6ICcmZXVtbDsnLCByOiAnw6snfSxcbiAgICAgICAge2Y6ICcmSXVtbDsnLCByOiAnw48nfSxcbiAgICAgICAge2Y6ICcmaXVtbDsnLCByOiAnw68nfSxcbiAgICAgICAge2Y6ICcmT2FjdXRlOycsIHI6ICfDkyd9LFxuICAgICAgICB7ZjogJyZvYWN1dGU7JywgcjogJ8OzJ30sXG4gICAgICAgIHtmOiAnJiMyNjQ7JywgcjogJ8SIJ30sXG4gICAgICAgIHtmOiAnJiMyNjU7JywgcjogJ8SJJ30sXG4gICAgICAgIHtmOiAnJiMyODQ7JywgcjogJ8ScJ30sXG4gICAgICAgIHtmOiAnJiMyODU7JywgcjogJ8SdJ30sXG4gICAgICAgIHtmOiAnJiMyOTI7JywgcjogJ8SkJ30sXG4gICAgICAgIHtmOiAnJiMyOTM7JywgcjogJ8SlJ30sXG4gICAgICAgIHtmOiAnJiMzMDg7JywgcjogJ8S0J30sXG4gICAgICAgIHtmOiAnJiMzMDk7JywgcjogJ8S1J30sXG4gICAgICAgIHtmOiAnJiMzNDg7JywgcjogJ8WcJ30sXG4gICAgICAgIHtmOiAnJiMzNDk7JywgcjogJ8WdJ30sXG4gICAgICAgIHtmOiAnJiMzNjQ7JywgcjogJ8WsJ30sXG4gICAgICAgIHtmOiAnJiMzNjU7JywgcjogJ8WtJ30sXG4gICAgICAgIHtmOiAnJkF1bWw7JywgcjogJ8OEJ30sXG4gICAgICAgIHtmOiAnJmF1bWw7JywgcjogJ8OkJ30sXG4gICAgICAgIHtmOiAnJk91bWw7JywgcjogJ8OWJ30sXG4gICAgICAgIHtmOiAnJm91bWw7JywgcjogJ8O2J30sXG4gICAgICAgIHtmOiAnJk90aWxkZTsnLCByOiAnw5UnfSxcbiAgICAgICAge2Y6ICcmb3RpbGRlOycsIHI6ICfDtSd9LFxuICAgICAgICB7ZjogJyZVdW1sOycsIHI6ICfDnCd9LFxuICAgICAgICB7ZjogJyZ1dW1sOycsIHI6ICfDvCd9LFxuICAgICAgICB7ZjogJyZBYWN1dGU7JywgcjogJ8OBJ30sXG4gICAgICAgIHtmOiAnJmFhY3V0ZTsnLCByOiAnw6EnfSxcbiAgICAgICAge2Y6ICcmRVRIOycsIHI6ICfDkCd9LFxuICAgICAgICB7ZjogJyZldGg7JywgcjogJ8OwJ30sXG4gICAgICAgIHtmOiAnJklhY3V0ZTsnLCByOiAnw40nfSxcbiAgICAgICAge2Y6ICcmaWFjdXRlOycsIHI6ICfDrSd9LFxuICAgICAgICB7ZjogJyZPYWN1dGU7JywgcjogJ8OTJ30sXG4gICAgICAgIHtmOiAnJm9hY3V0ZTsnLCByOiAnw7MnfSxcbiAgICAgICAge2Y6ICcmVWFjdXRlOycsIHI6ICfDmid9LFxuICAgICAgICB7ZjogJyZ1YWN1dGU7JywgcjogJ8O6J30sXG4gICAgICAgIHtmOiAnJllhY3V0ZTsnLCByOiAnw50nfSxcbiAgICAgICAge2Y6ICcmeWFjdXRlOycsIHI6ICfDvSd9LFxuICAgICAgICB7ZjogJyZBRWxpZzsnLCByOiAnw4YnfSxcbiAgICAgICAge2Y6ICcmYWVsaWc7JywgcjogJ8OmJ30sXG4gICAgICAgIHtmOiAnJk9zbGFzaDsnLCByOiAnw5gnfSxcbiAgICAgICAge2Y6ICcmb3NsYXNoOycsIHI6ICfDuCd9LFxuICAgICAgICB7ZjogJyZBdW1sOycsIHI6ICfDhCd9LFxuICAgICAgICB7ZjogJyZhdW1sOycsIHI6ICfDpCd9LFxuICAgICAgICB7ZjogJyZPdW1sOycsIHI6ICfDlid9LFxuICAgICAgICB7ZjogJyZvdW1sOycsIHI6ICfDtid9LFxuICAgICAgICB7ZjogJyZBZ3JhdmU7JywgcjogJ8OAJ30sXG4gICAgICAgIHtmOiAnJmFncmF2ZTsnLCByOiAnw6AnfSxcbiAgICAgICAge2Y6ICcmQWNpcmM7JywgcjogJ8OCJ30sXG4gICAgICAgIHtmOiAnJmFjaXJjOycsIHI6ICfDoid9LFxuICAgICAgICB7ZjogJyZDY2VkaWw7JywgcjogJ8OHJ30sXG4gICAgICAgIHtmOiAnJmNjZWRpbDsnLCByOiAnw6cnfSxcbiAgICAgICAge2Y6ICcmRWdyYXZlOycsIHI6ICfDiCd9LFxuICAgICAgICB7ZjogJyZlZ3JhdmU7JywgcjogJ8OoJ30sXG4gICAgICAgIHtmOiAnJkVhY3V0ZTsnLCByOiAnw4knfSxcbiAgICAgICAge2Y6ICcmZWFjdXRlOycsIHI6ICfDqSd9LFxuICAgICAgICB7ZjogJyZFY2lyYzsnLCByOiAnw4onfSxcbiAgICAgICAge2Y6ICcmZWNpcmM7JywgcjogJ8OqJ30sXG4gICAgICAgIHtmOiAnJkV1bWw7JywgcjogJ8OLJ30sXG4gICAgICAgIHtmOiAnJmV1bWw7JywgcjogJ8OrJ30sXG4gICAgICAgIHtmOiAnJkljaXJjOycsIHI6ICfDjid9LFxuICAgICAgICB7ZjogJyZpY2lyYzsnLCByOiAnw64nfSxcbiAgICAgICAge2Y6ICcmSXVtbDsnLCByOiAnw48nfSxcbiAgICAgICAge2Y6ICcmaXVtbDsnLCByOiAnw68nfSxcbiAgICAgICAge2Y6ICcmT2NpcmM7JywgcjogJ8OUJ30sXG4gICAgICAgIHtmOiAnJm9jaXJjOycsIHI6ICfDtCd9LFxuICAgICAgICB7ZjogJyZPRWxpZzsnLCByOiAnxZInfSxcbiAgICAgICAge2Y6ICcmb2VsaWc7JywgcjogJ8WTJ30sXG4gICAgICAgIHtmOiAnJlVncmF2ZTsnLCByOiAnw5knfSxcbiAgICAgICAge2Y6ICcmdWdyYXZlOycsIHI6ICfDuSd9LFxuICAgICAgICB7ZjogJyZVY2lyYzsnLCByOiAnw5snfSxcbiAgICAgICAge2Y6ICcmdWNpcmM7JywgcjogJ8O7J30sXG4gICAgICAgIHtmOiAnJlV1bWw7JywgcjogJ8OcJ30sXG4gICAgICAgIHtmOiAnJnV1bWw7JywgcjogJ8O8J30sXG4gICAgICAgIHtmOiAnJiMzNzY7JywgcjogJ8W4J30sXG4gICAgICAgIHtmOiAnJnl1bWw7JywgcjogJ8O/J30sXG4gICAgICAgIHtmOiAnJkF1bWw7JywgcjogJ8OEJ30sXG4gICAgICAgIHtmOiAnJmF1bWw7JywgcjogJ8OkJ30sXG4gICAgICAgIHtmOiAnJk91bWw7JywgcjogJ8OWJ30sXG4gICAgICAgIHtmOiAnJm91bWw7JywgcjogJ8O2J30sXG4gICAgICAgIHtmOiAnJlV1bWw7JywgcjogJ8OcJ30sXG4gICAgICAgIHtmOiAnJnV1bWw7JywgcjogJ8O8J30sXG4gICAgICAgIHtmOiAnJnN6bGlnOycsIHI6ICfDnyd9LFxuICAgICAgICB7ZjogJyZBYWN1dGU7JywgcjogJ8OBJ30sXG4gICAgICAgIHtmOiAnJmFhY3V0ZTsnLCByOiAnw6EnfSxcbiAgICAgICAge2Y6ICcmQWNpcmM7JywgcjogJ8OCJ30sXG4gICAgICAgIHtmOiAnJmFjaXJjOycsIHI6ICfDoid9LFxuICAgICAgICB7ZjogJyZBdGlsZGU7JywgcjogJ8ODJ30sXG4gICAgICAgIHtmOiAnJmF0aWxkZTsnLCByOiAnw6MnfSxcbiAgICAgICAge2Y6ICcmSWFjdXRlOycsIHI6ICfDjSd9LFxuICAgICAgICB7ZjogJyZpYWN1dGU7JywgcjogJ8OtJ30sXG4gICAgICAgIHtmOiAnJkljaXJjOycsIHI6ICfDjid9LFxuICAgICAgICB7ZjogJyZpY2lyYzsnLCByOiAnw64nfSxcbiAgICAgICAge2Y6ICcmIzI5NjsnLCByOiAnxKgnfSxcbiAgICAgICAge2Y6ICcmIzI5NzsnLCByOiAnxKknfSxcbiAgICAgICAge2Y6ICcmVWFjdXRlOycsIHI6ICfDmid9LFxuICAgICAgICB7ZjogJyZ1Z3JhdmU7JywgcjogJ8O5J30sXG4gICAgICAgIHtmOiAnJlVjaXJjOycsIHI6ICfDmyd9LFxuICAgICAgICB7ZjogJyZ1Y2lyYzsnLCByOiAnw7snfSxcbiAgICAgICAge2Y6ICcmIzM2MDsnLCByOiAnxagnfSxcbiAgICAgICAge2Y6ICcmIzM2MTsnLCByOiAnxaknfSxcbiAgICAgICAge2Y6ICcmIzMxMjsnLCByOiAnxLgnfSxcbiAgICAgICAge2Y6ICcmQWFjdXRlOycsIHI6ICfDgSd9LFxuICAgICAgICB7ZjogJyZhYWN1dGU7JywgcjogJ8OhJ30sXG4gICAgICAgIHtmOiAnJkVhY3V0ZTsnLCByOiAnw4knfSxcbiAgICAgICAge2Y6ICcmZWFjdXRlOycsIHI6ICfDqSd9LFxuICAgICAgICB7ZjogJyZJYWN1dGU7JywgcjogJ8ONJ30sXG4gICAgICAgIHtmOiAnJmlhY3V0ZTsnLCByOiAnw60nfSxcbiAgICAgICAge2Y6ICcmT2FjdXRlOycsIHI6ICfDkyd9LFxuICAgICAgICB7ZjogJyZvYWN1dGU7JywgcjogJ8OzJ30sXG4gICAgICAgIHtmOiAnJk91bWw7JywgcjogJ8OWJ30sXG4gICAgICAgIHtmOiAnJm91bWw7JywgcjogJ8O2J30sXG4gICAgICAgIHtmOiAnJiMzMzY7JywgcjogJ8WQJ30sXG4gICAgICAgIHtmOiAnJiMzMzc7JywgcjogJ8WRJ30sXG4gICAgICAgIHtmOiAnJlVhY3V0ZTsnLCByOiAnw5onfSxcbiAgICAgICAge2Y6ICcmdWFjdXRlOycsIHI6ICfDuid9LFxuICAgICAgICB7ZjogJyZVdW1sOycsIHI6ICfDnCd9LFxuICAgICAgICB7ZjogJyZ1dW1sOycsIHI6ICfDvCd9LFxuICAgICAgICB7ZjogJyYjMzY4OycsIHI6ICfFsCd9LFxuICAgICAgICB7ZjogJyYjMzY5OycsIHI6ICfFsSd9LFxuICAgICAgICB7ZjogJyZBYWN1dGU7JywgcjogJ8OBJ30sXG4gICAgICAgIHtmOiAnJmFhY3V0ZTsnLCByOiAnw6EnfSxcbiAgICAgICAge2Y6ICcmRVRIOycsIHI6ICfDkCd9LFxuICAgICAgICB7ZjogJyZldGg7JywgcjogJ8OwJ30sXG4gICAgICAgIHtmOiAnJkVhY3V0ZTsnLCByOiAnw4knfSxcbiAgICAgICAge2Y6ICcmZWFjdXRlOycsIHI6ICfDqSd9LFxuICAgICAgICB7ZjogJyZJYWN1dGU7JywgcjogJ8ONJ30sXG4gICAgICAgIHtmOiAnJmlhY3V0ZTsnLCByOiAnw60nfSxcbiAgICAgICAge2Y6ICcmT2FjdXRlOycsIHI6ICfDkyd9LFxuICAgICAgICB7ZjogJyZvYWN1dGU7JywgcjogJ8OzJ30sXG4gICAgICAgIHtmOiAnJlVhY3V0ZTsnLCByOiAnw5onfSxcbiAgICAgICAge2Y6ICcmdWFjdXRlOycsIHI6ICfDuid9LFxuICAgICAgICB7ZjogJyZZYWN1dGU7JywgcjogJ8OdJ30sXG4gICAgICAgIHtmOiAnJnlhY3V0ZTsnLCByOiAnw70nfSxcbiAgICAgICAge2Y6ICcmVEhPUk47JywgcjogJ8OeJ30sXG4gICAgICAgIHtmOiAnJnRob3JuOycsIHI6ICfDvid9LFxuICAgICAgICB7ZjogJyZBRWxpZzsnLCByOiAnw4YnfSxcbiAgICAgICAge2Y6ICcmYWVsaWc7JywgcjogJ8OmJ30sXG4gICAgICAgIHtmOiAnJk91bWw7JywgcjogJ8OWJ30sXG4gICAgICAgIHtmOiAnJnVtbDsnLCByOiAnw7YnfSxcbiAgICAgICAge2Y6ICcmQWFjdXRlOycsIHI6ICfDgSd9LFxuICAgICAgICB7ZjogJyZhYWN1dGU7JywgcjogJ8OhJ30sXG4gICAgICAgIHtmOiAnJkVhY3V0ZTsnLCByOiAnw4knfSxcbiAgICAgICAge2Y6ICcmZWFjdXRlOycsIHI6ICfDqSd9LFxuICAgICAgICB7ZjogJyZJYWN1dGU7JywgcjogJ8ONJ30sXG4gICAgICAgIHtmOiAnJmlhY3V0ZTsnLCByOiAnw60nfSxcbiAgICAgICAge2Y6ICcmT2FjdXRlOycsIHI6ICfDkyd9LFxuICAgICAgICB7ZjogJyZvYWN1dGU7JywgcjogJ8OzJ30sXG4gICAgICAgIHtmOiAnJlVhY3V0ZTsnLCByOiAnw5onfSxcbiAgICAgICAge2Y6ICcmdWFjdXRlOycsIHI6ICfDuid9LFxuICAgICAgICB7ZjogJyZBZ3JhdmU7JywgcjogJ8OAJ30sXG4gICAgICAgIHtmOiAnJmFncmF2ZTsnLCByOiAnw6AnfSxcbiAgICAgICAge2Y6ICcmQWNpcmM7JywgcjogJ8OCJ30sXG4gICAgICAgIHtmOiAnJmFjaXJjOycsIHI6ICfDoid9LFxuICAgICAgICB7ZjogJyZFZ3JhdmU7JywgcjogJ8OIJ30sXG4gICAgICAgIHtmOiAnJmVncmF2ZTsnLCByOiAnw6gnfSxcbiAgICAgICAge2Y6ICcmRWFjdXRlOycsIHI6ICfDiSd9LFxuICAgICAgICB7ZjogJyZlYWN1dGU7JywgcjogJ8OpJ30sXG4gICAgICAgIHtmOiAnJkVjaXJjOycsIHI6ICfDiid9LFxuICAgICAgICB7ZjogJyZlY2lyYzsnLCByOiAnw6onfSxcbiAgICAgICAge2Y6ICcmSWdyYXZlOycsIHI6ICfDjCd9LFxuICAgICAgICB7ZjogJyZpZ3JhdmU7JywgcjogJ8OsJ30sXG4gICAgICAgIHtmOiAnJklhY3V0ZTsnLCByOiAnw40nfSxcbiAgICAgICAge2Y6ICcmaWFjdXRlOycsIHI6ICfDrSd9LFxuICAgICAgICB7ZjogJyZJY2lyYzsnLCByOiAnw44nfSxcbiAgICAgICAge2Y6ICcmaWNpcmM7JywgcjogJ8OuJ30sXG4gICAgICAgIHtmOiAnJkl1bWw7JywgcjogJ8OPJ30sXG4gICAgICAgIHtmOiAnJml1bWw7JywgcjogJ8OvJ30sXG4gICAgICAgIHtmOiAnJk9ncmF2ZTsnLCByOiAnw5InfSxcbiAgICAgICAge2Y6ICcmb2dyYXZlOycsIHI6ICfDsid9LFxuICAgICAgICB7ZjogJyZPY2lyYzsnLCByOiAnw5QnfSxcbiAgICAgICAge2Y6ICcmb2NpcmM7JywgcjogJ8O0J30sXG4gICAgICAgIHtmOiAnJlVncmF2ZTsnLCByOiAnw5knfSxcbiAgICAgICAge2Y6ICcmdWdyYXZlOycsIHI6ICfDuSd9LFxuICAgICAgICB7ZjogJyZVY2lyYzsnLCByOiAnw5snfSxcbiAgICAgICAge2Y6ICcmdWNpcmM7JywgcjogJ8O7J30sXG4gICAgICAgIHtmOiAnJiMyNTY7JywgcjogJ8SAJ30sXG4gICAgICAgIHtmOiAnJiMyNTc7JywgcjogJ8SBJ30sXG4gICAgICAgIHtmOiAnJiMyNjg7JywgcjogJ8SMJ30sXG4gICAgICAgIHtmOiAnJiMyNjk7JywgcjogJ8SNJ30sXG4gICAgICAgIHtmOiAnJiMyNzQ7JywgcjogJ8SSJ30sXG4gICAgICAgIHtmOiAnJiMyNzU7JywgcjogJ8STJ30sXG4gICAgICAgIHtmOiAnJiMyOTA7JywgcjogJ8SiJ30sXG4gICAgICAgIHtmOiAnJiMyOTE7JywgcjogJ8SjJ30sXG4gICAgICAgIHtmOiAnJiMyOTg7JywgcjogJ8SqJ30sXG4gICAgICAgIHtmOiAnJiMyOTk7JywgcjogJ8SrJ30sXG4gICAgICAgIHtmOiAnJiMzMTA7JywgcjogJ8S2J30sXG4gICAgICAgIHtmOiAnJiMzMTE7JywgcjogJ8S3J30sXG4gICAgICAgIHtmOiAnJiMzMTU7JywgcjogJ8S7J30sXG4gICAgICAgIHtmOiAnJiMzMTY7JywgcjogJ8S8J30sXG4gICAgICAgIHtmOiAnJiMzMjU7JywgcjogJ8WFJ30sXG4gICAgICAgIHtmOiAnJiMzMjY7JywgcjogJ8WGJ30sXG4gICAgICAgIHtmOiAnJiMzNDI7JywgcjogJ8WWJ30sXG4gICAgICAgIHtmOiAnJiMzNDM7JywgcjogJ8WXJ30sXG4gICAgICAgIHtmOiAnJiMzNTI7JywgcjogJ8WgJ30sXG4gICAgICAgIHtmOiAnJiMzNTM7JywgcjogJ8WhJ30sXG4gICAgICAgIHtmOiAnJiMzNjI7JywgcjogJ8WqJ30sXG4gICAgICAgIHtmOiAnJiMzNjM7JywgcjogJ8WrJ30sXG4gICAgICAgIHtmOiAnJiMzODE7JywgcjogJ8W9J30sXG4gICAgICAgIHtmOiAnJiMzODI7JywgcjogJ8W+J30sXG4gICAgICAgIHtmOiAnJkFFbGlnOycsIHI6ICfDhid9LFxuICAgICAgICB7ZjogJyZhZWxpZzsnLCByOiAnw6YnfSxcbiAgICAgICAge2Y6ICcmT3NsYXNoOycsIHI6ICfDmCd9LFxuICAgICAgICB7ZjogJyZvc2xhc2g7JywgcjogJ8O4J30sXG4gICAgICAgIHtmOiAnJkFyaW5nOycsIHI6ICfDhSd9LFxuICAgICAgICB7ZjogJyZhcmluZzsnLCByOiAnw6UnfSxcbiAgICAgICAge2Y6ICcmIzI2MDsnLCByOiAnxIQnfSxcbiAgICAgICAge2Y6ICcmIzI2MTsnLCByOiAnxIUnfSxcbiAgICAgICAge2Y6ICcmIzI2MjsnLCByOiAnxIYnfSxcbiAgICAgICAge2Y6ICcmIzI2MzsnLCByOiAnxIcnfSxcbiAgICAgICAge2Y6ICcmIzI4MDsnLCByOiAnxJgnfSxcbiAgICAgICAge2Y6ICcmIzI4MTsnLCByOiAnxJknfSxcbiAgICAgICAge2Y6ICcmIzMyMTsnLCByOiAnxYEnfSxcbiAgICAgICAge2Y6ICcmIzMyMjsnLCByOiAnxYInfSxcbiAgICAgICAge2Y6ICcmIzMyMzsnLCByOiAnxYMnfSxcbiAgICAgICAge2Y6ICcmIzMyNDsnLCByOiAnxYQnfSxcbiAgICAgICAge2Y6ICcmT2FjdXRlOycsIHI6ICfDkyd9LFxuICAgICAgICB7ZjogJyZvYWN1dGU7JywgcjogJ8OzJ30sXG4gICAgICAgIHtmOiAnJiMzNDY7JywgcjogJ8WaJ30sXG4gICAgICAgIHtmOiAnJiMzNDc7JywgcjogJ8WbJ30sXG4gICAgICAgIHtmOiAnJiMzNzc7JywgcjogJ8W5J30sXG4gICAgICAgIHtmOiAnJiMzNzg7JywgcjogJ8W6J30sXG4gICAgICAgIHtmOiAnJiMzNzk7JywgcjogJ8W7J30sXG4gICAgICAgIHtmOiAnJiMzODA7JywgcjogJ8W8J30sXG4gICAgICAgIHtmOiAnJkFncmF2ZTsnLCByOiAnw4AnfSxcbiAgICAgICAge2Y6ICcmYWdyYXZlOycsIHI6ICfDoCd9LFxuICAgICAgICB7ZjogJyZBYWN1dGU7JywgcjogJ8OBJ30sXG4gICAgICAgIHtmOiAnJmFhY3V0ZTsnLCByOiAnw6EnfSxcbiAgICAgICAge2Y6ICcmQWNpcmM7JywgcjogJ8OCJ30sXG4gICAgICAgIHtmOiAnJmFjaXJjOycsIHI6ICfDoid9LFxuICAgICAgICB7ZjogJyZBdGlsZGU7JywgcjogJ8ODJ30sXG4gICAgICAgIHtmOiAnJmF0aWxkZTsnLCByOiAnw6MnfSxcbiAgICAgICAge2Y6ICcmQ2NlZGlsOycsIHI6ICfDhyd9LFxuICAgICAgICB7ZjogJyZjY2VkaWw7JywgcjogJ8OnJ30sXG4gICAgICAgIHtmOiAnJkVncmF2ZTsnLCByOiAnw4gnfSxcbiAgICAgICAge2Y6ICcmZWdyYXZlOycsIHI6ICfDqCd9LFxuICAgICAgICB7ZjogJyZFYWN1dGU7JywgcjogJ8OJJ30sXG4gICAgICAgIHtmOiAnJmVhY3V0ZTsnLCByOiAnw6knfSxcbiAgICAgICAge2Y6ICcmRWNpcmM7JywgcjogJ8OKJ30sXG4gICAgICAgIHtmOiAnJmVjaXJjOycsIHI6ICfDqid9LFxuICAgICAgICB7ZjogJyZJZ3JhdmU7JywgcjogJ8OMJ30sXG4gICAgICAgIHtmOiAnJmlncmF2ZTsnLCByOiAnw6wnfSxcbiAgICAgICAge2Y6ICcmSWFjdXRlOycsIHI6ICfDjSd9LFxuICAgICAgICB7ZjogJyZpYWN1dGU7JywgcjogJ8OtJ30sXG4gICAgICAgIHtmOiAnJkl1bWw7JywgcjogJ8OPJ30sXG4gICAgICAgIHtmOiAnJml1bWw7JywgcjogJ8OvJ30sXG4gICAgICAgIHtmOiAnJk9ncmF2ZTsnLCByOiAnw5InfSxcbiAgICAgICAge2Y6ICcmb2dyYXZlOycsIHI6ICfDsid9LFxuICAgICAgICB7ZjogJyZPYWN1dGU7JywgcjogJ8OTJ30sXG4gICAgICAgIHtmOiAnJm9hY3V0ZTsnLCByOiAnw7MnfSxcbiAgICAgICAge2Y6ICcmT3RpbGRlOycsIHI6ICfDlSd9LFxuICAgICAgICB7ZjogJyZvdGlsZGU7JywgcjogJ8O1J30sXG4gICAgICAgIHtmOiAnJlVncmF2ZTsnLCByOiAnw5knfSxcbiAgICAgICAge2Y6ICcmdWdyYXZlOycsIHI6ICfDuSd9LFxuICAgICAgICB7ZjogJyZVYWN1dGU7JywgcjogJ8OaJ30sXG4gICAgICAgIHtmOiAnJnVhY3V0ZTsnLCByOiAnw7onfSxcbiAgICAgICAge2Y6ICcmVXVtbDsnLCByOiAnw5wnfSxcbiAgICAgICAge2Y6ICcmdXVtbDsnLCByOiAnw7wnfSxcbiAgICAgICAge2Y6ICcmb3JkZjsnLCByOiAnwqonfSxcbiAgICAgICAge2Y6ICcmb3JkbTsnLCByOiAnwronfSxcbiAgICAgICAge2Y6ICcmIzI1ODsnLCByOiAnxIInfSxcbiAgICAgICAge2Y6ICcmIzI1OTsnLCByOiAnxIMnfSxcbiAgICAgICAge2Y6ICcmQWNpcmM7JywgcjogJ8OCJ30sXG4gICAgICAgIHtmOiAnJmFjaXJjOycsIHI6ICfDoid9LFxuICAgICAgICB7ZjogJyZJY2lyYzsnLCByOiAnw44nfSxcbiAgICAgICAge2Y6ICcmaWNpcmM7JywgcjogJ8OuJ30sXG4gICAgICAgIHtmOiAnJiMzNTA7JywgcjogJ8WeJ30sXG4gICAgICAgIHtmOiAnJiMzNTE7JywgcjogJ8WfJ30sXG4gICAgICAgIHtmOiAnJiMzNTQ7JywgcjogJ8WiJ30sXG4gICAgICAgIHtmOiAnJiMzNTU7JywgcjogJ8WjJ30sXG4gICAgICAgIHtmOiAnJkFhY3V0ZTsnLCByOiAnw4EnfSxcbiAgICAgICAge2Y6ICcmYWFjdXRlOycsIHI6ICfDoSd9LFxuICAgICAgICB7ZjogJyYjMjY4OycsIHI6ICfEjCd9LFxuICAgICAgICB7ZjogJyYjMjY5OycsIHI6ICfEjSd9LFxuICAgICAgICB7ZjogJyYjMjcyOycsIHI6ICfEkCd9LFxuICAgICAgICB7ZjogJyYjMjczOycsIHI6ICfEkSd9LFxuICAgICAgICB7ZjogJyYjMzMwOycsIHI6ICfFiid9LFxuICAgICAgICB7ZjogJyYjMzMxOycsIHI6ICfFiyd9LFxuICAgICAgICB7ZjogJyYjMzUyOycsIHI6ICfFoCd9LFxuICAgICAgICB7ZjogJyYjMzUzOycsIHI6ICfFoSd9LFxuICAgICAgICB7ZjogJyYjMzU4OycsIHI6ICfFpid9LFxuICAgICAgICB7ZjogJyYjMzU5OycsIHI6ICfFpyd9LFxuICAgICAgICB7ZjogJyYjMzgxOycsIHI6ICfFvSd9LFxuICAgICAgICB7ZjogJyYjMzgyOycsIHI6ICfFvid9LFxuICAgICAgICB7ZjogJyZBZ3JhdmU7JywgcjogJ8OAJ30sXG4gICAgICAgIHtmOiAnJmFncmF2ZTsnLCByOiAnw6AnfSxcbiAgICAgICAge2Y6ICcmRWdyYXZlOycsIHI6ICfDiCd9LFxuICAgICAgICB7ZjogJyZlZ3JhdmU7JywgcjogJ8OoJ30sXG4gICAgICAgIHtmOiAnJkVhY3V0ZTsnLCByOiAnw4knfSxcbiAgICAgICAge2Y6ICcmZWFjdXRlOycsIHI6ICfDqSd9LFxuICAgICAgICB7ZjogJyZJZ3JhdmU7JywgcjogJ8OMJ30sXG4gICAgICAgIHtmOiAnJmlncmF2ZTsnLCByOiAnw6wnfSxcbiAgICAgICAge2Y6ICcmT2dyYXZlOycsIHI6ICfDkid9LFxuICAgICAgICB7ZjogJyZvZ3JhdmU7JywgcjogJ8OyJ30sXG4gICAgICAgIHtmOiAnJk9hY3V0ZTsnLCByOiAnw5MnfSxcbiAgICAgICAge2Y6ICcmb2FjdXRlOycsIHI6ICfDsyd9LFxuICAgICAgICB7ZjogJyZVZ3JhdmU7JywgcjogJ8OZJ30sXG4gICAgICAgIHtmOiAnJnVncmF2ZTsnLCByOiAnw7knfSxcbiAgICAgICAge2Y6ICcmQWFjdXRlOycsIHI6ICfDgSd9LFxuICAgICAgICB7ZjogJyZhYWN1dGU7JywgcjogJ8OhJ30sXG4gICAgICAgIHtmOiAnJkF1bWw7JywgcjogJ8OEJ30sXG4gICAgICAgIHtmOiAnJmF1bWw7JywgcjogJ8OkJ30sXG4gICAgICAgIHtmOiAnJiMyNjg7JywgcjogJ8SMJ30sXG4gICAgICAgIHtmOiAnJiMyNjk7JywgcjogJ8SNJ30sXG4gICAgICAgIHtmOiAnJiMyNzA7JywgcjogJ8SOJ30sXG4gICAgICAgIHtmOiAnJiMyNzE7JywgcjogJ8SPJ30sXG4gICAgICAgIHtmOiAnJkVhY3V0ZTsnLCByOiAnw4knfSxcbiAgICAgICAge2Y6ICcmZWFjdXRlOycsIHI6ICfDqSd9LFxuICAgICAgICB7ZjogJyYjMzEzOycsIHI6ICfEuSd9LFxuICAgICAgICB7ZjogJyYjMzE0OycsIHI6ICfEuid9LFxuICAgICAgICB7ZjogJyYjMzE3OycsIHI6ICfEvSd9LFxuICAgICAgICB7ZjogJyYjMzE4OycsIHI6ICfEvid9LFxuICAgICAgICB7ZjogJyYjMzI3OycsIHI6ICfFhyd9LFxuICAgICAgICB7ZjogJyYjMzI4OycsIHI6ICfFiCd9LFxuICAgICAgICB7ZjogJyZPYWN1dGU7JywgcjogJ8OTJ30sXG4gICAgICAgIHtmOiAnJm9hY3V0ZTsnLCByOiAnw7MnfSxcbiAgICAgICAge2Y6ICcmT2NpcmM7JywgcjogJ8OUJ30sXG4gICAgICAgIHtmOiAnJm9jaXJjOycsIHI6ICfDtCd9LFxuICAgICAgICB7ZjogJyYjMzQwOycsIHI6ICfFlCd9LFxuICAgICAgICB7ZjogJyYjMzQxOycsIHI6ICfFlSd9LFxuICAgICAgICB7ZjogJyYjMzUyOycsIHI6ICfFoCd9LFxuICAgICAgICB7ZjogJyYjMzUzOycsIHI6ICfFoSd9LFxuICAgICAgICB7ZjogJyYjMzU2OycsIHI6ICfFpCd9LFxuICAgICAgICB7ZjogJyYjMzU3OycsIHI6ICfFpSd9LFxuICAgICAgICB7ZjogJyZVYWN1dGU7JywgcjogJ8OaJ30sXG4gICAgICAgIHtmOiAnJnVhY3V0ZTsnLCByOiAnw7onfSxcbiAgICAgICAge2Y6ICcmWWFjdXRlOycsIHI6ICfDnSd9LFxuICAgICAgICB7ZjogJyZ5YWN1dGU7JywgcjogJ8O9J30sXG4gICAgICAgIHtmOiAnJiMzODE7JywgcjogJ8W9J30sXG4gICAgICAgIHtmOiAnJiMzODI7JywgcjogJ8W+J30sXG4gICAgICAgIHtmOiAnJiMyNjg7JywgcjogJ8SMJ30sXG4gICAgICAgIHtmOiAnJiMyNjk7JywgcjogJ8SNJ30sXG4gICAgICAgIHtmOiAnJiMzNTI7JywgcjogJ8WgJ30sXG4gICAgICAgIHtmOiAnJiMzNTM7JywgcjogJ8WhJ30sXG4gICAgICAgIHtmOiAnJiMzODE7JywgcjogJ8W9J30sXG4gICAgICAgIHtmOiAnJiMzODI7JywgcjogJ8W+J30sXG4gICAgICAgIHtmOiAnJkFhY3V0ZTsnLCByOiAnw4EnfSxcbiAgICAgICAge2Y6ICcmYWFjdXRlOycsIHI6ICfDoSd9LFxuICAgICAgICB7ZjogJyZFYWN1dGU7JywgcjogJ8OJJ30sXG4gICAgICAgIHtmOiAnJmVhY3V0ZTsnLCByOiAnw6knfSxcbiAgICAgICAge2Y6ICcmSWFjdXRlOycsIHI6ICfDjSd9LFxuICAgICAgICB7ZjogJyZpYWN1dGU7JywgcjogJ8OtJ30sXG4gICAgICAgIHtmOiAnJk9hY3V0ZTsnLCByOiAnw5MnfSxcbiAgICAgICAge2Y6ICcmb2FjdXRlOycsIHI6ICfDsyd9LFxuICAgICAgICB7ZjogJyZOdGlsZGU7JywgcjogJ8ORJ30sXG4gICAgICAgIHtmOiAnJm50aWxkZTsnLCByOiAnw7EnfSxcbiAgICAgICAge2Y6ICcmVWFjdXRlOycsIHI6ICfDmid9LFxuICAgICAgICB7ZjogJyZ1YWN1dGU7JywgcjogJ8O6J30sXG4gICAgICAgIHtmOiAnJlV1bWw7JywgcjogJ8OcJ30sXG4gICAgICAgIHtmOiAnJnV1bWw7JywgcjogJ8O8J30sXG4gICAgICAgIHtmOiAnJmlleGNsOycsIHI6ICfCoSd9LFxuICAgICAgICB7ZjogJyZvcmRmOycsIHI6ICfCqid9LFxuICAgICAgICB7ZjogJyZpcXVlc3Q7JywgcjogJ8K/J30sXG4gICAgICAgIHtmOiAnJm9yZG07JywgcjogJ8K6J30sXG4gICAgICAgIHtmOiAnJkFyaW5nOycsIHI6ICfDhSd9LFxuICAgICAgICB7ZjogJyZhcmluZzsnLCByOiAnw6UnfSxcbiAgICAgICAge2Y6ICcmQXVtbDsnLCByOiAnw4QnfSxcbiAgICAgICAge2Y6ICcmYXVtbDsnLCByOiAnw6QnfSxcbiAgICAgICAge2Y6ICcmT3VtbDsnLCByOiAnw5YnfSxcbiAgICAgICAge2Y6ICcmb3VtbDsnLCByOiAnw7YnfSxcbiAgICAgICAge2Y6ICcmQ2NlZGlsOycsIHI6ICfDhyd9LFxuICAgICAgICB7ZjogJyZjY2VkaWw7JywgcjogJ8OnJ30sXG4gICAgICAgIHtmOiAnJiMyODY7JywgcjogJ8SeJ30sXG4gICAgICAgIHtmOiAnJiMyODc7JywgcjogJ8SfJ30sXG4gICAgICAgIHtmOiAnJiMzMDQ7JywgcjogJ8SwJ30sXG4gICAgICAgIHtmOiAnJiMzMDU7JywgcjogJ8SxJ30sXG4gICAgICAgIHtmOiAnJk91bWw7JywgcjogJ8OWJ30sXG4gICAgICAgIHtmOiAnJm91bWw7JywgcjogJ8O2J30sXG4gICAgICAgIHtmOiAnJiMzNTA7JywgcjogJ8WeJ30sXG4gICAgICAgIHtmOiAnJiMzNTE7JywgcjogJ8WfJ30sXG4gICAgICAgIHtmOiAnJlV1bWw7JywgcjogJ8OcJ30sXG4gICAgICAgIHtmOiAnJnV1bWw7JywgcjogJ8O8J30sXG4gICAgICAgIHtmOiAnJmV1cm87JywgcjogJ+KCrCd9LFxuICAgICAgICB7ZjogJyZwb3VuZDsnLCByOiAnwqMnfSxcbiAgICAgICAge2Y6ICcmbGFxdW87JywgcjogJ8KrJ30sXG4gICAgICAgIHtmOiAnJnJhcXVvOycsIHI6ICfCuyd9LFxuICAgICAgICB7ZjogJyZidWxsOycsIHI6ICfigKInfSxcbiAgICAgICAge2Y6ICcmZGFnZ2VyOycsIHI6ICfigKAnfSxcbiAgICAgICAge2Y6ICcmY29weTsnLCByOiAnwqknfSxcbiAgICAgICAge2Y6ICcmcmVnOycsIHI6ICfCrid9LFxuICAgICAgICB7ZjogJyZ0cmFkZTsnLCByOiAn4oSiJ30sXG4gICAgICAgIHtmOiAnJmRlZzsnLCByOiAnwrAnfSxcbiAgICAgICAge2Y6ICcmcGVybWlsOycsIHI6ICfigLAnfSxcbiAgICAgICAge2Y6ICcmbWljcm87JywgcjogJ8K1J30sXG4gICAgICAgIHtmOiAnJm1pZGRvdDsnLCByOiAnwrcnfSxcbiAgICAgICAge2Y6ICcmbmRhc2g7JywgcjogJ+KAkyd9LFxuICAgICAgICB7ZjogJyZtZGFzaDsnLCByOiAn4oCUJ30sXG4gICAgICAgIHtmOiAnJiM4NDcwOycsIHI6ICfihJYnfSxcbiAgICAgICAge2Y6ICcmcmVnOycsIHI6ICfCrid9LFxuICAgICAgICB7ZjogJyZwYXJhOycsIHI6ICfCtid9LFxuICAgICAgICB7ZjogJyZwbHVzbW47JywgcjogJ8KxJ30sXG4gICAgICAgIHtmOiAnJm1pZGRvdDsnLCByOiAnwrcnfSxcbiAgICAgICAge2Y6ICdsZXNzLXQnLCByOiAnPCd9LFxuICAgICAgICB7ZjogJ2dyZWF0ZXItdCcsIHI6ICc+J30sXG4gICAgICAgIHtmOiAnJm5vdDsnLCByOiAnwqwnfSxcbiAgICAgICAge2Y6ICcmY3VycmVuOycsIHI6ICfCpCd9LFxuICAgICAgICB7ZjogJyZicnZiYXI7JywgcjogJ8KmJ30sXG4gICAgICAgIHtmOiAnJmRlZzsnLCByOiAnwrAnfSxcbiAgICAgICAge2Y6ICcmYWN1dGU7JywgcjogJ8K0J30sXG4gICAgICAgIHtmOiAnJnVtbDsnLCByOiAnwqgnfSxcbiAgICAgICAge2Y6ICcmbWFjcjsnLCByOiAnwq8nfSxcbiAgICAgICAge2Y6ICcmY2VkaWw7JywgcjogJ8K4J30sXG4gICAgICAgIHtmOiAnJmxhcXVvOycsIHI6ICfCqyd9LFxuICAgICAgICB7ZjogJyZyYXF1bzsnLCByOiAnwrsnfSxcbiAgICAgICAge2Y6ICcmc3VwMTsnLCByOiAnwrknfSxcbiAgICAgICAge2Y6ICcmc3VwMjsnLCByOiAnwrInfSxcbiAgICAgICAge2Y6ICcmc3VwMzsnLCByOiAnwrMnfSxcbiAgICAgICAge2Y6ICcmb3JkZjsnLCByOiAnwqonfSxcbiAgICAgICAge2Y6ICcmb3JkbTsnLCByOiAnwronfSxcbiAgICAgICAge2Y6ICcmaWV4Y2w7JywgcjogJ8KhJ30sXG4gICAgICAgIHtmOiAnJmlxdWVzdDsnLCByOiAnwr8nfSxcbiAgICAgICAge2Y6ICcmbWljcm87JywgcjogJ8K1J30sXG4gICAgICAgIHtmOiAnaHk7XHQnLCByOiAnJid9LFxuICAgICAgICB7ZjogJyZFVEg7JywgcjogJ8OQJ30sXG4gICAgICAgIHtmOiAnJmV0aDsnLCByOiAnw7AnfSxcbiAgICAgICAge2Y6ICcmTnRpbGRlOycsIHI6ICfDkSd9LFxuICAgICAgICB7ZjogJyZudGlsZGU7JywgcjogJ8OxJ30sXG4gICAgICAgIHtmOiAnJk9zbGFzaDsnLCByOiAnw5gnfSxcbiAgICAgICAge2Y6ICcmb3NsYXNoOycsIHI6ICfDuCd9LFxuICAgICAgICB7ZjogJyZzemxpZzsnLCByOiAnw58nfSxcbiAgICAgICAge2Y6ICcmYW1wOycsIHI6ICdhbmQnfSxcbiAgICAgICAge2Y6ICcmbGRxdW87JywgcjogJ1wiJ30sXG4gICAgICAgIHtmOiAnJnJkcXVvOycsIHI6ICdcIid9LFxuICAgICAgICB7ZjogJyZyc3F1bzsnLCByOiBcIidcIn1cbiAgICAgIF07XG5cbiAgICAgIF8uZWFjaChodG1sY2hhcnMsIGZ1bmN0aW9uKGNoYXIpIHtcbiAgICAgICAgaWYoY29udGVudC5pbmRleE9mKGNoYXIuZikgIT09IC0xKXtcbiAgICAgICAgICBjb250ZW50ID0gY29udGVudC5yZXBsYWNlKFJlZ0V4cChjaGFyLmYsJ2cnKSwgY2hhci5yKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9XG4gIH07XG59KTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9qcy9zZXJ2aWNlcy5qcyJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/build/js/manifest.js b/build/js/manifest.js index 0dd3929..3228709 100644 --- a/build/js/manifest.js +++ b/build/js/manifest.js @@ -91,7 +91,7 @@ /******/ if (__webpack_require__.nc) { /******/ script.setAttribute("nonce", __webpack_require__.nc); /******/ } -/******/ script.src = __webpack_require__.p + "js/" + ({"0":"vendor_node","1":"main","2":"vendor"}[chunkId]||chunkId) + "-" + {"0":"2cfbe1c5e26925fe2f02","1":"a0f71b93520a12910e02","2":"6a7af25eb804dbb3d307"}[chunkId] + ".js"; +/******/ script.src = __webpack_require__.p + "js/" + ({"0":"vendor_node","1":"main","2":"vendor"}[chunkId]||chunkId) + "-" + {"0":"b38d64fa24988c2636cf","1":"2510ccfa229941c31d60","2":"6a7af25eb804dbb3d307"}[chunkId] + ".js"; /******/ var timeout = setTimeout(onScriptComplete, 120000); /******/ script.onerror = script.onload = onScriptComplete; /******/ function onScriptComplete() { @@ -148,4 +148,4 @@ /******/ }) /************************************************************************/ /******/ ([]); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAgNjVhOGQxMDZhODU5NWVhYWQ4YmUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFRLG9CQUFvQjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFZLDJCQUEyQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrREFBMEMsV0FBVyxFQUFFO0FBQ3ZEOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFlBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwwREFBa0QsMENBQTBDLDZCQUE2QixpRkFBaUY7QUFDMU07QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbUNBQTJCLDBCQUEwQixFQUFFO0FBQ3ZELHlDQUFpQyxlQUFlO0FBQ2hEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhEQUFzRCwrREFBK0Q7O0FBRXJIO0FBQ0E7O0FBRUE7QUFDQSxrREFBMEMsb0JBQW9CLFdBQVciLCJmaWxlIjoianMvbWFuaWZlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBpbnN0YWxsIGEgSlNPTlAgY2FsbGJhY2sgZm9yIGNodW5rIGxvYWRpbmdcbiBcdHZhciBwYXJlbnRKc29ucEZ1bmN0aW9uID0gd2luZG93W1wid2VicGFja0pzb25wXCJdO1xuIFx0d2luZG93W1wid2VicGFja0pzb25wXCJdID0gZnVuY3Rpb24gd2VicGFja0pzb25wQ2FsbGJhY2soY2h1bmtJZHMsIG1vcmVNb2R1bGVzLCBleGVjdXRlTW9kdWxlcykge1xuIFx0XHQvLyBhZGQgXCJtb3JlTW9kdWxlc1wiIHRvIHRoZSBtb2R1bGVzIG9iamVjdCxcbiBcdFx0Ly8gdGhlbiBmbGFnIGFsbCBcImNodW5rSWRzXCIgYXMgbG9hZGVkIGFuZCBmaXJlIGNhbGxiYWNrXG4gXHRcdHZhciBtb2R1bGVJZCwgY2h1bmtJZCwgaSA9IDAsIHJlc29sdmVzID0gW10sIHJlc3VsdDtcbiBcdFx0Zm9yKDtpIDwgY2h1bmtJZHMubGVuZ3RoOyBpKyspIHtcbiBcdFx0XHRjaHVua0lkID0gY2h1bmtJZHNbaV07XG4gXHRcdFx0aWYoaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdKSB7XG4gXHRcdFx0XHRyZXNvbHZlcy5wdXNoKGluc3RhbGxlZENodW5rc1tjaHVua0lkXVswXSk7XG4gXHRcdFx0fVxuIFx0XHRcdGluc3RhbGxlZENodW5rc1tjaHVua0lkXSA9IDA7XG4gXHRcdH1cbiBcdFx0Zm9yKG1vZHVsZUlkIGluIG1vcmVNb2R1bGVzKSB7XG4gXHRcdFx0aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vcmVNb2R1bGVzLCBtb2R1bGVJZCkpIHtcbiBcdFx0XHRcdG1vZHVsZXNbbW9kdWxlSWRdID0gbW9yZU1vZHVsZXNbbW9kdWxlSWRdO1xuIFx0XHRcdH1cbiBcdFx0fVxuIFx0XHRpZihwYXJlbnRKc29ucEZ1bmN0aW9uKSBwYXJlbnRKc29ucEZ1bmN0aW9uKGNodW5rSWRzLCBtb3JlTW9kdWxlcywgZXhlY3V0ZU1vZHVsZXMpO1xuIFx0XHR3aGlsZShyZXNvbHZlcy5sZW5ndGgpIHtcbiBcdFx0XHRyZXNvbHZlcy5zaGlmdCgpKCk7XG4gXHRcdH1cbiBcdFx0aWYoZXhlY3V0ZU1vZHVsZXMpIHtcbiBcdFx0XHRmb3IoaT0wOyBpIDwgZXhlY3V0ZU1vZHVsZXMubGVuZ3RoOyBpKyspIHtcbiBcdFx0XHRcdHJlc3VsdCA9IF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gZXhlY3V0ZU1vZHVsZXNbaV0pO1xuIFx0XHRcdH1cbiBcdFx0fVxuIFx0XHRyZXR1cm4gcmVzdWx0O1xuIFx0fTtcblxuIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gb2JqZWN0cyB0byBzdG9yZSBsb2FkZWQgYW5kIGxvYWRpbmcgY2h1bmtzXG4gXHR2YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuIFx0XHQzOiAwXG4gXHR9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cbiBcdC8vIFRoaXMgZmlsZSBjb250YWlucyBvbmx5IHRoZSBlbnRyeSBjaHVuay5cbiBcdC8vIFRoZSBjaHVuayBsb2FkaW5nIGZ1bmN0aW9uIGZvciBhZGRpdGlvbmFsIGNodW5rc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5lID0gZnVuY3Rpb24gcmVxdWlyZUVuc3VyZShjaHVua0lkKSB7XG4gXHRcdHZhciBpbnN0YWxsZWRDaHVua0RhdGEgPSBpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF07XG4gXHRcdGlmKGluc3RhbGxlZENodW5rRGF0YSA9PT0gMCkge1xuIFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7IHJlc29sdmUoKTsgfSk7XG4gXHRcdH1cblxuIFx0XHQvLyBhIFByb21pc2UgbWVhbnMgXCJjdXJyZW50bHkgbG9hZGluZ1wiLlxuIFx0XHRpZihpbnN0YWxsZWRDaHVua0RhdGEpIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkQ2h1bmtEYXRhWzJdO1xuIFx0XHR9XG5cbiBcdFx0Ly8gc2V0dXAgUHJvbWlzZSBpbiBjaHVuayBjYWNoZVxuIFx0XHR2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuIFx0XHRcdGluc3RhbGxlZENodW5rRGF0YSA9IGluc3RhbGxlZENodW5rc1tjaHVua0lkXSA9IFtyZXNvbHZlLCByZWplY3RdO1xuIFx0XHR9KTtcbiBcdFx0aW5zdGFsbGVkQ2h1bmtEYXRhWzJdID0gcHJvbWlzZTtcblxuIFx0XHQvLyBzdGFydCBjaHVuayBsb2FkaW5nXG4gXHRcdHZhciBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbiBcdFx0dmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuIFx0XHRzY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xuIFx0XHRzY3JpcHQuY2hhcnNldCA9ICd1dGYtOCc7XG4gXHRcdHNjcmlwdC5hc3luYyA9IHRydWU7XG4gXHRcdHNjcmlwdC50aW1lb3V0ID0gMTIwMDAwO1xuXG4gXHRcdGlmIChfX3dlYnBhY2tfcmVxdWlyZV9fLm5jKSB7XG4gXHRcdFx0c2NyaXB0LnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsIF9fd2VicGFja19yZXF1aXJlX18ubmMpO1xuIFx0XHR9XG4gXHRcdHNjcmlwdC5zcmMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLnAgKyBcImpzL1wiICsgKHtcIjBcIjpcInZlbmRvcl9ub2RlXCIsXCIxXCI6XCJtYWluXCIsXCIyXCI6XCJ2ZW5kb3JcIn1bY2h1bmtJZF18fGNodW5rSWQpICsgXCItXCIgKyB7XCIwXCI6XCIyY2ZiZTFjNWUyNjkyNWZlMmYwMlwiLFwiMVwiOlwiYTBmNzFiOTM1MjBhMTI5MTBlMDJcIixcIjJcIjpcIjZhN2FmMjVlYjgwNGRiYjNkMzA3XCJ9W2NodW5rSWRdICsgXCIuanNcIjtcbiBcdFx0dmFyIHRpbWVvdXQgPSBzZXRUaW1lb3V0KG9uU2NyaXB0Q29tcGxldGUsIDEyMDAwMCk7XG4gXHRcdHNjcmlwdC5vbmVycm9yID0gc2NyaXB0Lm9ubG9hZCA9IG9uU2NyaXB0Q29tcGxldGU7XG4gXHRcdGZ1bmN0aW9uIG9uU2NyaXB0Q29tcGxldGUoKSB7XG4gXHRcdFx0Ly8gYXZvaWQgbWVtIGxlYWtzIGluIElFLlxuIFx0XHRcdHNjcmlwdC5vbmVycm9yID0gc2NyaXB0Lm9ubG9hZCA9IG51bGw7XG4gXHRcdFx0Y2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuIFx0XHRcdHZhciBjaHVuayA9IGluc3RhbGxlZENodW5rc1tjaHVua0lkXTtcbiBcdFx0XHRpZihjaHVuayAhPT0gMCkge1xuIFx0XHRcdFx0aWYoY2h1bmspIHtcbiBcdFx0XHRcdFx0Y2h1bmtbMV0obmV3IEVycm9yKCdMb2FkaW5nIGNodW5rICcgKyBjaHVua0lkICsgJyBmYWlsZWQuJykpO1xuIFx0XHRcdFx0fVxuIFx0XHRcdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID0gdW5kZWZpbmVkO1xuIFx0XHRcdH1cbiBcdFx0fTtcbiBcdFx0aGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuXG4gXHRcdHJldHVybiBwcm9taXNlO1xuIFx0fTtcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbiBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuIFx0XHRcdFx0Z2V0OiBnZXR0ZXJcbiBcdFx0XHR9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuIFx0Ly8gb24gZXJyb3IgZnVuY3Rpb24gZm9yIGFzeW5jIGxvYWRpbmdcbiBcdF9fd2VicGFja19yZXF1aXJlX18ub2UgPSBmdW5jdGlvbihlcnIpIHsgY29uc29sZS5lcnJvcihlcnIpOyB0aHJvdyBlcnI7IH07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gd2VicGFjay9ib290c3RyYXAgNjVhOGQxMDZhODU5NWVhYWQ4YmUiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAgMDFlOWRiMDRkYWZiNmZhNjc2YTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFRLG9CQUFvQjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFZLDJCQUEyQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrREFBMEMsV0FBVyxFQUFFO0FBQ3ZEOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFlBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwwREFBa0QsMENBQTBDLDZCQUE2QixpRkFBaUY7QUFDMU07QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbUNBQTJCLDBCQUEwQixFQUFFO0FBQ3ZELHlDQUFpQyxlQUFlO0FBQ2hEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhEQUFzRCwrREFBK0Q7O0FBRXJIO0FBQ0E7O0FBRUE7QUFDQSxrREFBMEMsb0JBQW9CLFdBQVciLCJmaWxlIjoianMvbWFuaWZlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBpbnN0YWxsIGEgSlNPTlAgY2FsbGJhY2sgZm9yIGNodW5rIGxvYWRpbmdcbiBcdHZhciBwYXJlbnRKc29ucEZ1bmN0aW9uID0gd2luZG93W1wid2VicGFja0pzb25wXCJdO1xuIFx0d2luZG93W1wid2VicGFja0pzb25wXCJdID0gZnVuY3Rpb24gd2VicGFja0pzb25wQ2FsbGJhY2soY2h1bmtJZHMsIG1vcmVNb2R1bGVzLCBleGVjdXRlTW9kdWxlcykge1xuIFx0XHQvLyBhZGQgXCJtb3JlTW9kdWxlc1wiIHRvIHRoZSBtb2R1bGVzIG9iamVjdCxcbiBcdFx0Ly8gdGhlbiBmbGFnIGFsbCBcImNodW5rSWRzXCIgYXMgbG9hZGVkIGFuZCBmaXJlIGNhbGxiYWNrXG4gXHRcdHZhciBtb2R1bGVJZCwgY2h1bmtJZCwgaSA9IDAsIHJlc29sdmVzID0gW10sIHJlc3VsdDtcbiBcdFx0Zm9yKDtpIDwgY2h1bmtJZHMubGVuZ3RoOyBpKyspIHtcbiBcdFx0XHRjaHVua0lkID0gY2h1bmtJZHNbaV07XG4gXHRcdFx0aWYoaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdKSB7XG4gXHRcdFx0XHRyZXNvbHZlcy5wdXNoKGluc3RhbGxlZENodW5rc1tjaHVua0lkXVswXSk7XG4gXHRcdFx0fVxuIFx0XHRcdGluc3RhbGxlZENodW5rc1tjaHVua0lkXSA9IDA7XG4gXHRcdH1cbiBcdFx0Zm9yKG1vZHVsZUlkIGluIG1vcmVNb2R1bGVzKSB7XG4gXHRcdFx0aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vcmVNb2R1bGVzLCBtb2R1bGVJZCkpIHtcbiBcdFx0XHRcdG1vZHVsZXNbbW9kdWxlSWRdID0gbW9yZU1vZHVsZXNbbW9kdWxlSWRdO1xuIFx0XHRcdH1cbiBcdFx0fVxuIFx0XHRpZihwYXJlbnRKc29ucEZ1bmN0aW9uKSBwYXJlbnRKc29ucEZ1bmN0aW9uKGNodW5rSWRzLCBtb3JlTW9kdWxlcywgZXhlY3V0ZU1vZHVsZXMpO1xuIFx0XHR3aGlsZShyZXNvbHZlcy5sZW5ndGgpIHtcbiBcdFx0XHRyZXNvbHZlcy5zaGlmdCgpKCk7XG4gXHRcdH1cbiBcdFx0aWYoZXhlY3V0ZU1vZHVsZXMpIHtcbiBcdFx0XHRmb3IoaT0wOyBpIDwgZXhlY3V0ZU1vZHVsZXMubGVuZ3RoOyBpKyspIHtcbiBcdFx0XHRcdHJlc3VsdCA9IF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gZXhlY3V0ZU1vZHVsZXNbaV0pO1xuIFx0XHRcdH1cbiBcdFx0fVxuIFx0XHRyZXR1cm4gcmVzdWx0O1xuIFx0fTtcblxuIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gb2JqZWN0cyB0byBzdG9yZSBsb2FkZWQgYW5kIGxvYWRpbmcgY2h1bmtzXG4gXHR2YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuIFx0XHQzOiAwXG4gXHR9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cbiBcdC8vIFRoaXMgZmlsZSBjb250YWlucyBvbmx5IHRoZSBlbnRyeSBjaHVuay5cbiBcdC8vIFRoZSBjaHVuayBsb2FkaW5nIGZ1bmN0aW9uIGZvciBhZGRpdGlvbmFsIGNodW5rc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5lID0gZnVuY3Rpb24gcmVxdWlyZUVuc3VyZShjaHVua0lkKSB7XG4gXHRcdHZhciBpbnN0YWxsZWRDaHVua0RhdGEgPSBpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF07XG4gXHRcdGlmKGluc3RhbGxlZENodW5rRGF0YSA9PT0gMCkge1xuIFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7IHJlc29sdmUoKTsgfSk7XG4gXHRcdH1cblxuIFx0XHQvLyBhIFByb21pc2UgbWVhbnMgXCJjdXJyZW50bHkgbG9hZGluZ1wiLlxuIFx0XHRpZihpbnN0YWxsZWRDaHVua0RhdGEpIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkQ2h1bmtEYXRhWzJdO1xuIFx0XHR9XG5cbiBcdFx0Ly8gc2V0dXAgUHJvbWlzZSBpbiBjaHVuayBjYWNoZVxuIFx0XHR2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuIFx0XHRcdGluc3RhbGxlZENodW5rRGF0YSA9IGluc3RhbGxlZENodW5rc1tjaHVua0lkXSA9IFtyZXNvbHZlLCByZWplY3RdO1xuIFx0XHR9KTtcbiBcdFx0aW5zdGFsbGVkQ2h1bmtEYXRhWzJdID0gcHJvbWlzZTtcblxuIFx0XHQvLyBzdGFydCBjaHVuayBsb2FkaW5nXG4gXHRcdHZhciBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbiBcdFx0dmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuIFx0XHRzY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xuIFx0XHRzY3JpcHQuY2hhcnNldCA9ICd1dGYtOCc7XG4gXHRcdHNjcmlwdC5hc3luYyA9IHRydWU7XG4gXHRcdHNjcmlwdC50aW1lb3V0ID0gMTIwMDAwO1xuXG4gXHRcdGlmIChfX3dlYnBhY2tfcmVxdWlyZV9fLm5jKSB7XG4gXHRcdFx0c2NyaXB0LnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsIF9fd2VicGFja19yZXF1aXJlX18ubmMpO1xuIFx0XHR9XG4gXHRcdHNjcmlwdC5zcmMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLnAgKyBcImpzL1wiICsgKHtcIjBcIjpcInZlbmRvcl9ub2RlXCIsXCIxXCI6XCJtYWluXCIsXCIyXCI6XCJ2ZW5kb3JcIn1bY2h1bmtJZF18fGNodW5rSWQpICsgXCItXCIgKyB7XCIwXCI6XCJiMzhkNjRmYTI0OTg4YzI2MzZjZlwiLFwiMVwiOlwiMjUxMGNjZmEyMjk5NDFjMzFkNjBcIixcIjJcIjpcIjZhN2FmMjVlYjgwNGRiYjNkMzA3XCJ9W2NodW5rSWRdICsgXCIuanNcIjtcbiBcdFx0dmFyIHRpbWVvdXQgPSBzZXRUaW1lb3V0KG9uU2NyaXB0Q29tcGxldGUsIDEyMDAwMCk7XG4gXHRcdHNjcmlwdC5vbmVycm9yID0gc2NyaXB0Lm9ubG9hZCA9IG9uU2NyaXB0Q29tcGxldGU7XG4gXHRcdGZ1bmN0aW9uIG9uU2NyaXB0Q29tcGxldGUoKSB7XG4gXHRcdFx0Ly8gYXZvaWQgbWVtIGxlYWtzIGluIElFLlxuIFx0XHRcdHNjcmlwdC5vbmVycm9yID0gc2NyaXB0Lm9ubG9hZCA9IG51bGw7XG4gXHRcdFx0Y2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuIFx0XHRcdHZhciBjaHVuayA9IGluc3RhbGxlZENodW5rc1tjaHVua0lkXTtcbiBcdFx0XHRpZihjaHVuayAhPT0gMCkge1xuIFx0XHRcdFx0aWYoY2h1bmspIHtcbiBcdFx0XHRcdFx0Y2h1bmtbMV0obmV3IEVycm9yKCdMb2FkaW5nIGNodW5rICcgKyBjaHVua0lkICsgJyBmYWlsZWQuJykpO1xuIFx0XHRcdFx0fVxuIFx0XHRcdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID0gdW5kZWZpbmVkO1xuIFx0XHRcdH1cbiBcdFx0fTtcbiBcdFx0aGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuXG4gXHRcdHJldHVybiBwcm9taXNlO1xuIFx0fTtcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbiBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuIFx0XHRcdFx0Z2V0OiBnZXR0ZXJcbiBcdFx0XHR9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuIFx0Ly8gb24gZXJyb3IgZnVuY3Rpb24gZm9yIGFzeW5jIGxvYWRpbmdcbiBcdF9fd2VicGFja19yZXF1aXJlX18ub2UgPSBmdW5jdGlvbihlcnIpIHsgY29uc29sZS5lcnJvcihlcnIpOyB0aHJvdyBlcnI7IH07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gd2VicGFjay9ib290c3RyYXAgMDFlOWRiMDRkYWZiNmZhNjc2YTMiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/build/js/vendor.js b/build/js/vendor.js index 6ba7ba1..bb043fe 100644 --- a/build/js/vendor.js +++ b/build/js/vendor.js @@ -1,17 +1,17 @@ webpackJsonp([2],{ -/***/ 197: +/***/ 185: /***/ (function(module, exports, __webpack_require__) { -__webpack_require__(198); -__webpack_require__(199); -__webpack_require__(200); -module.exports = __webpack_require__(201); +__webpack_require__(186); +__webpack_require__(187); +__webpack_require__(188); +module.exports = __webpack_require__(189); /***/ }), -/***/ 198: +/***/ 186: /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -98,7 +98,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol /***/ }), -/***/ 199: +/***/ 187: /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -220,7 +220,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol /***/ }), -/***/ 200: +/***/ 188: /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -572,7 +572,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol /***/ }), -/***/ 201: +/***/ 189: /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1563,5 +1563,5 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol /***/ }) -},[197]); +},[185]); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvanMvdmVuZG9yL21kNS5taW4uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2pzL3ZlbmRvci9uZy1rbm9iLm1pbi5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvanMvdmVuZG9yL3htbDJqc29uLm1pbi5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvanMvdmVuZG9yL3lhbWwubWluLmpzIl0sIm5hbWVzIjpbIm4iLCJ0IiwiciIsImUiLCJvIiwidSIsImMiLCJmIiwiaSIsImEiLCJoIiwiZCIsImwiLCJnIiwidiIsIm0iLCJsZW5ndGgiLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJjaGFyQ29kZUF0IiwiY29uY2F0IiwiY2hhckF0IiwidW5lc2NhcGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJwIiwicyIsIkMiLCJBIiwibW9kdWxlIiwiZXhwb3J0cyIsIm1kNSIsInVpIiwiS25vYiIsImVsZW1lbnQiLCJ2YWx1ZSIsIm9wdGlvbnMiLCJpbkRyYWciLCJwcm90b3R5cGUiLCJ2YWx1ZVRvUmFkaWFucyIsInZhbHVlRW5kIiwiYW5nbGVFbmQiLCJhbmdsZVN0YXJ0IiwidmFsdWVTdGFydCIsIk1hdGgiLCJQSSIsInJhZGlhbnNUb1ZhbHVlIiwicmFkaWFucyIsImNyZWF0ZUFyYyIsImlubmVyUmFkaXVzIiwib3V0ZXJSYWRpdXMiLCJzdGFydEFuZ2xlIiwiZW5kQW5nbGUiLCJjb3JuZXJSYWRpdXMiLCJhcmMiLCJkMyIsInN2ZyIsImRyYXdBcmMiLCJsYWJlbCIsInN0eWxlIiwiY2xpY2siLCJkcmFnIiwiZWxlbSIsImFwcGVuZCIsImF0dHIiLCJzaXplIiwicmVhZE9ubHkiLCJvbiIsImNhbGwiLCJjcmVhdGVBcmNzIiwicGFyc2VJbnQiLCJzY2FsZSIsImVuYWJsZWQiLCJ3aWR0aCIsInNwYWNlV2lkdGgiLCJkaWZmIiwidHJhY2tJbm5lclJhZGl1cyIsInRyYWNrV2lkdGgiLCJjaGFuZ2VJbm5lclJhZGl1cyIsImJhcldpZHRoIiwidmFsdWVJbm5lclJhZGl1cyIsImludGVyYWN0SW5uZXJSYWRpdXMiLCJ0cmFja091dGVyUmFkaXVzIiwiY2hhbmdlT3V0ZXJSYWRpdXMiLCJ2YWx1ZU91dGVyUmFkaXVzIiwiaW50ZXJhY3RPdXRlclJhZGl1cyIsImJnQ29sb3IiLCJiZ0FyYyIsInNraW4iLCJ0eXBlIiwiaG9vcEFyYyIsInRyYWNrQXJjIiwiY2hhbmdlQXJjIiwiYmFyQ2FwIiwidmFsdWVBcmMiLCJpbnRlcmFjdEFyYyIsImRyYXdBcmNzIiwiY2xpY2tJbnRlcmFjdGlvbiIsImRyYWdCZWhhdmlvciIsInNlbGVjdCIsImZpbGwiLCJkaXNwbGF5SW5wdXQiLCJmb250U2l6ZSIsInN0ZXAiLCJ0b0ZpeGVkIiwiaW5wdXRGb3JtYXR0ZXIiLCJ0ZXh0Q29sb3IiLCJ0ZXh0IiwidW5pdCIsInN1YlRleHQiLCJmb250IiwiY29sb3IiLCJyYWRpdXMiLCJxdWFudGl0eSIsImRhdGEiLCJjb3VudCIsImFuZ2xlIiwic3RhcnRSYWRpYW5zIiwibWluIiwibWF4IiwiZW5kUmFkaWFucyIsIm9mZnNldCIsInJhbmdlIiwibWFwIiwiY3giLCJjb3MiLCJjeSIsInNpbiIsInNlbGVjdEFsbCIsImVudGVyIiwiaGVpZ2h0IiwieDEiLCJ5MSIsIngyIiwieTIiLCJzdHJva2UiLCJ0cmFja0NvbG9yIiwiZGlzcGxheVByZXZpb3VzIiwiY2hhbmdlRWxlbSIsInByZXZCYXJDb2xvciIsInZhbHVlRWxlbSIsImJhckNvbG9yIiwiY3Vyc29yIiwiZHJhdyIsInVwZGF0ZSIsImRyYWdJbnRlcmFjdGlvbiIsInRoYXQiLCJ4IiwiZXZlbnQiLCJ5IiwiaW50ZXJhY3Rpb24iLCJjb29yZHMiLCJtb3VzZSIsInBhcmVudE5vZGUiLCJpc0ZpbmFsIiwiZGVsdGEiLCJhdGFuIiwicm91bmQiLCJyZW1vdmUiLCJiZWhhdmlvciIsImFuaW1hdGUiLCJ0cmFuc2l0aW9uIiwiZWFzZSIsImR1cmF0aW9uIiwidHdlZW4iLCJpbnRlcnBvbGF0ZSIsInZhbCIsInNldFZhbHVlIiwibmV3VmFsdWUiLCJrbm9iRGlyZWN0aXZlIiwicmVzdHJpY3QiLCJzY29wZSIsImxpbmsiLCJkZWZhdWx0T3B0aW9ucyIsImR5bmFtaWNPcHRpb25zIiwiYW5ndWxhciIsIm1lcmdlIiwia25vYiIsIiR3YXRjaCIsIm9sZFZhbHVlIiwiaXNGaXJzdFdhdGNoT25PcHRpb25zIiwibmV3T3B0aW9ucyIsImRyYXdLbm9iIiwiJGFwcGx5IiwiZGlyZWN0aXZlIiwiYiIsImRlZmluZSIsIlgySlMiLCJ6IiwiZXNjYXBlTW9kZSIsInVuZGVmaW5lZCIsImF0dHJpYnV0ZVByZWZpeCIsImFycmF5QWNjZXNzRm9ybSIsImVtcHR5Tm9kZUZvcm0iLCJlbmFibGVUb1N0cmluZ0Z1bmMiLCJhcnJheUFjY2Vzc0Zvcm1QYXRocyIsInNraXBFbXB0eVRleHROb2Rlc0Zvck9iaiIsInN0cmlwV2hpdGVzcGFjZXMiLCJkYXRldGltZUFjY2Vzc0Zvcm1QYXRocyIsInVzZURvdWJsZVF1b3RlcyIsInhtbEVsZW1lbnRzRmlsdGVyIiwianNvblByb3BlcnRpZXNGaWx0ZXIiLCJrZWVwQ0RhdGEiLCJFTEVNRU5UX05PREUiLCJURVhUX05PREUiLCJDREFUQV9TRUNUSU9OX05PREUiLCJDT01NRU5UX05PREUiLCJET0NVTUVOVF9OT0RFIiwiQiIsImxvY2FsTmFtZSIsImJhc2VOYW1lIiwibm9kZU5hbWUiLCJwcmVmaXgiLCJyZXBsYWNlIiwiayIsInciLCJGIiwiRCIsIkUiLCJHIiwiUmVnRXhwIiwidGVzdCIsIkFycmF5Iiwic3BsaXQiLCJEYXRlIiwic2V0SG91cnMiLCJzZXRNaWxsaXNlY29uZHMiLCJOdW1iZXIiLCJzZXRNaW51dGVzIiwiZ2V0TWludXRlcyIsImdldFRpbWV6b25lT2Zmc2V0IiwiaW5kZXhPZiIsIlVUQyIsImdldEZ1bGxZZWFyIiwiZ2V0TW9udGgiLCJnZXREYXRlIiwiZ2V0SG91cnMiLCJnZXRTZWNvbmRzIiwiZ2V0TWlsbGlzZWNvbmRzIiwicSIsIkoiLCJub2RlVHlwZSIsIksiLCJPYmplY3QiLCJjaGlsZE5vZGVzIiwiTCIsIml0ZW0iLCJJIiwiX19jbnQiLCJIIiwiYXR0cmlidXRlcyIsIm5hbWUiLCJfX3ByZWZpeCIsIl9fdGV4dCIsImpvaW4iLCJ0cmltIiwiX19jZGF0YSIsInRvU3RyaW5nIiwibm9kZVZhbHVlIiwic3Vic3RyIiwiaiIsIkZ1bmN0aW9uIiwicHVzaCIsInRvSVNPU3RyaW5nIiwicGFyc2VYbWxTdHJpbmciLCJ3aW5kb3ciLCJBY3RpdmVYT2JqZWN0IiwiRE9NUGFyc2VyIiwicGFyc2VGcm9tU3RyaW5nIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJuYW1lc3BhY2VVUkkiLCJnZXRFbGVtZW50c0J5VGFnTmFtZU5TIiwiYXN5bmMiLCJsb2FkWE1MIiwiYXNBcnJheSIsInRvWG1sRGF0ZVRpbWUiLCJhc0RhdGVUaW1lIiwieG1sMmpzb24iLCJ4bWxfc3RyMmpzb24iLCJqc29uMnhtbF9zdHIiLCJqc29uMnhtbCIsImdldFZlcnNpb24iLCJyZXF1aXJlIiwiRXJyb3IiLCJjb2RlIiwiaW5kZW50YXRpb24iLCJkdW1wIiwic3RyUmVwZWF0IiwiaXNFbXB0eSIsIkxJU1RfRVNDQVBFRVMiLCJMSVNUX0VTQ0FQRUQiLCJNQVBQSU5HX0VTQ0FQRUVTX1RPX0VTQ0FQRUQiLCJQQVRURVJOX0NIQVJBQ1RFUlNfVE9fRVNDQVBFIiwiUEFUVEVSTl9NQVBQSU5HX0VTQ0FQRUVTIiwiUEFUVEVSTl9TSU5HTEVfUVVPVElORyIsInJlcXVpcmVzRG91YmxlUXVvdGluZyIsImVzY2FwZVdpdGhEb3VibGVRdW90ZXMiLCJyZXF1aXJlc1NpbmdsZVF1b3RpbmciLCJlc2NhcGVXaXRoU2luZ2xlUXVvdGVzIiwiY29uc3RydWN0b3IiLCJfX3N1cGVyX18iLCJoYXNPd25Qcm9wZXJ0eSIsIm1lc3NhZ2UiLCJwYXJzZWRMaW5lIiwic25pcHBldCIsIlJFR0VYX1FVT1RFRF9TVFJJTkciLCJQQVRURVJOX1RSQUlMSU5HX0NPTU1FTlRTIiwiUEFUVEVSTl9RVU9URURfU0NBTEFSIiwiUEFUVEVSTl9USE9VU0FORF9OVU1FUklDX1NDQUxBUiIsIlBBVFRFUk5fU0NBTEFSX0JZX0RFTElNSVRFUlMiLCJzZXR0aW5ncyIsImNvbmZpZ3VyZSIsImV4Y2VwdGlvbk9uSW52YWxpZFR5cGUiLCJvYmplY3REZWNvZGVyIiwicGFyc2UiLCJwYXJzZVNlcXVlbmNlIiwicGFyc2VNYXBwaW5nIiwicGFyc2VTY2FsYXIiLCJzbGljZSIsImR1bXBPYmplY3QiLCJpc0RpZ2l0cyIsImlzTnVtZXJpYyIsInBhcnNlRmxvYXQiLCJJbmZpbml0eSIsImlzTmFOIiwiUEFUVEVSTl9EQVRFIiwidG9Mb3dlckNhc2UiLCJUIiwiXyIsInBhcnNlUXVvdGVkU2NhbGFyIiwibHRyaW0iLCJydHJpbSIsImV4ZWMiLCJldmFsdWF0ZVNjYWxhciIsInVuZXNjYXBlRG91YmxlUXVvdGVkU3RyaW5nIiwidW5lc2NhcGVTaW5nbGVRdW90ZWRTdHJpbmciLCJOYU4iLCJwYXJzZUJvb2xlYW4iLCJzdHJpbmdUb0RhdGUiLCJoZXhEZWMiLCJvY3REZWMiLCJQQVRURVJOX0ZPTERFRF9TQ0FMQVJfQUxMIiwiUEFUVEVSTl9GT0xERURfU0NBTEFSX0VORCIsIlBBVFRFUk5fU0VRVUVOQ0VfSVRFTSIsIlBBVFRFUk5fQU5DSE9SX1ZBTFVFIiwiUEFUVEVSTl9DT01QQUNUX05PVEFUSU9OIiwiUEFUVEVSTl9NQVBQSU5HX0lURU0iLCJQQVRURVJOX0RFQ0lNQUwiLCJQQVRURVJOX0lOREVOVF9TUEFDRVMiLCJQQVRURVJOX1RSQUlMSU5HX0xJTkVTIiwiUEFUVEVSTl9ZQU1MX0hFQURFUiIsIlBBVFRFUk5fTEVBRElOR19DT01NRU5UUyIsIlBBVFRFUk5fRE9DVU1FTlRfTUFSS0VSX1NUQVJUIiwiUEFUVEVSTl9ET0NVTUVOVF9NQVJLRVJfRU5EIiwiUEFUVEVSTl9GT0xERURfU0NBTEFSX0JZX0lOREVOVEFUSU9OIiwiQ09OVEVYVF9OT05FIiwiQ09OVEVYVF9TRVFVRU5DRSIsIkNPTlRFWFRfTUFQUElORyIsImxpbmVzIiwiY3VycmVudExpbmVOYiIsImN1cnJlbnRMaW5lIiwicmVmcyIsIk4iLCJSIiwiUyIsIlAiLCJPIiwiTSIsIlUiLCJYIiwiWSIsIlEiLCJjbGVhbnVwIiwibW92ZVRvTmV4dExpbmUiLCJpc0N1cnJlbnRMaW5lRW1wdHkiLCJnZXRSZWFsQ3VycmVudExpbmVOYiIsInJlZiIsImlzTmV4dExpbmVVbkluZGVudGVkQ29sbGVjdGlvbiIsImdldE5leHRFbWJlZEJsb2NrIiwibGVhZHNwYWNlcyIsImdldEN1cnJlbnRMaW5lSW5kZW50YXRpb24iLCJpc05leHRMaW5lSW5kZW50ZWQiLCJwYXJzZVZhbHVlIiwia2V5IiwiaXNTdHJpbmdVbkluZGVudGVkQ29sbGVjdGlvbkl0ZW0iLCJpc0N1cnJlbnRMaW5lQ29tbWVudCIsImlzQ3VycmVudExpbmVCbGFuayIsIm1vdmVUb1ByZXZpb3VzTGluZSIsIm1vZGlmaWVycyIsImFicyIsInBhcnNlRm9sZGVkU2NhbGFyIiwic2VwYXJhdG9yIiwicmVwbGFjZUFsbCIsInN1YlN0ckNvdW50IiwicmVnZXgiLCJyYXdSZWdleCIsImNsZWFuZWRSZWdleCIsIm1hcHBpbmciLCJsYXN0SW5kZXgiLCJQQVRURVJOX0VTQ0FQRURfQ0hBUkFDVEVSIiwiX3VuZXNjYXBlQ2FsbGJhY2siLCJ1bmVzY2FwZUNoYXJhY3RlciIsInV0ZjhjaHIiLCJSRUdFWF9MRUZUX1RSSU1fQllfQ0hBUiIsIlJFR0VYX1JJR0hUX1RSSU1fQllfQ0hBUiIsIlJFR0VYX1NQQUNFUyIsIlJFR0VYX0RJR0lUUyIsIlJFR0VYX09DVEFMIiwiUkVHRVhfSEVYQURFQ0lNQUwiLCJMT0NBTF9USU1FWk9ORV9PRkZTRVQiLCJpc0VtcHR5T2JqZWN0IiwieWVhciIsIm1vbnRoIiwiZGF5IiwiaG91ciIsIm1pbnV0ZSIsInNlY29uZCIsImZyYWN0aW9uIiwidHoiLCJ0el9ob3VyIiwidHpfbWludXRlIiwidHpfc2lnbiIsInNldFRpbWUiLCJnZXRUaW1lIiwiZ2V0U3RyaW5nRnJvbUZpbGUiLCJYTUxIdHRwUmVxdWVzdCIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlYWR5U3RhdGUiLCJzdGF0dXMiLCJyZXNwb25zZVRleHQiLCJvcGVuIiwic2VuZCIsInJlYWRGaWxlIiwicmVhZEZpbGVTeW5jIiwicGFyc2VGaWxlIiwic3RyaW5naWZ5IiwibG9hZCIsIllBTUwiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLENBQUMsVUFBU0EsQ0FBVCxFQUFXO0FBQUM7QUFBYSxXQUFTQyxDQUFULENBQVdELENBQVgsRUFBYUMsQ0FBYixFQUFlO0FBQUMsUUFBSUMsSUFBRSxDQUFDLFFBQU1GLENBQVAsS0FBVyxRQUFNQyxDQUFqQixDQUFOO0FBQUEsUUFBMEJFLElBQUUsQ0FBQ0gsS0FBRyxFQUFKLEtBQVNDLEtBQUcsRUFBWixLQUFpQkMsS0FBRyxFQUFwQixDQUE1QixDQUFvRCxPQUFPQyxLQUFHLEVBQUgsR0FBTSxRQUFNRCxDQUFuQjtBQUFxQixZQUFTQSxDQUFULENBQVdGLENBQVgsRUFBYUMsQ0FBYixFQUFlO0FBQUMsV0FBT0QsS0FBR0MsQ0FBSCxHQUFLRCxNQUFJLEtBQUdDLENBQW5CO0FBQXFCLFlBQVNFLENBQVQsQ0FBV0gsQ0FBWCxFQUFhRyxDQUFiLEVBQWVDLENBQWYsRUFBaUJDLENBQWpCLEVBQW1CQyxDQUFuQixFQUFxQkMsQ0FBckIsRUFBdUI7QUFBQyxXQUFPTixFQUFFQyxFQUFFRCxFQUFFQSxFQUFFRSxDQUFGLEVBQUlILENBQUosQ0FBRixFQUFTQyxFQUFFSSxDQUFGLEVBQUlFLENBQUosQ0FBVCxDQUFGLEVBQW1CRCxDQUFuQixDQUFGLEVBQXdCRixDQUF4QixDQUFQO0FBQWtDLFlBQVNBLENBQVQsQ0FBV0osQ0FBWCxFQUFhQyxDQUFiLEVBQWVDLENBQWYsRUFBaUJFLENBQWpCLEVBQW1CQyxDQUFuQixFQUFxQkMsQ0FBckIsRUFBdUJDLENBQXZCLEVBQXlCO0FBQUMsV0FBT0osRUFBRUYsSUFBRUMsQ0FBRixHQUFJLENBQUNELENBQUQsR0FBR0csQ0FBVCxFQUFXSixDQUFYLEVBQWFDLENBQWIsRUFB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ZmlsZSI6ImpzL3ZlbmRvci5qcyIsInNvdXJjZXNDb250ZW50IjpbIiFmdW5jdGlvbihuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiB0KG4sdCl7dmFyIHI9KDY1NTM1Jm4pKyg2NTUzNSZ0KSxlPShuPj4xNikrKHQ+PjE2KSsocj4+MTYpO3JldHVybiBlPDwxNnw2NTUzNSZyfWZ1bmN0aW9uIHIobix0KXtyZXR1cm4gbjw8dHxuPj4+MzItdH1mdW5jdGlvbiBlKG4sZSxvLHUsYyxmKXtyZXR1cm4gdChyKHQodChlLG4pLHQodSxmKSksYyksbyl9ZnVuY3Rpb24gbyhuLHQscixvLHUsYyxmKXtyZXR1cm4gZSh0JnJ8fnQmbyxuLHQsdSxjLGYpfWZ1bmN0aW9uIHUobix0LHIsbyx1LGMsZil7cmV0dXJuIGUodCZvfHImfm8sbix0LHUsYyxmKX1mdW5jdGlvbiBjKG4sdCxyLG8sdSxjLGYpe3JldHVybiBlKHRecl5vLG4sdCx1LGMsZil9ZnVuY3Rpb24gZihuLHQscixvLHUsYyxmKXtyZXR1cm4gZShyXih0fH5vKSxuLHQsdSxjLGYpfWZ1bmN0aW9uIGkobixyKXtuW3I+PjVdfD0xMjg8PHIlMzIsblsocis2ND4+Pjk8PDQpKzE0XT1yO3ZhciBlLGksYSxoLGQsbD0xNzMyNTg0MTkzLGc9LTI3MTczMzg3OSx2PS0xNzMyNTg0MTk0LG09MjcxNzMzODc4O2ZvcihlPTA7ZTxuLmxlbmd0aDtlKz0xNilpPWwsYT1nLGg9dixkPW0sbD1vKGwsZyx2LG0sbltlXSw3LC02ODA4NzY5MzYpLG09byhtLGwsZyx2LG5bZSsxXSwxMiwtMzg5NTY0NTg2KSx2PW8odixtLGwsZyxuW2UrMl0sMTcsNjA2MTA1ODE5KSxnPW8oZyx2LG0sbCxuW2UrM10sMjIsLTEwNDQ1MjUzMzApLGw9byhsLGcsdixtLG5bZSs0XSw3LC0xNzY0MTg4OTcpLG09byhtLGwsZyx2LG5bZSs1XSwxMiwxMjAwMDgwNDI2KSx2PW8odixtLGwsZyxuW2UrNl0sMTcsLTE0NzMyMzEzNDEpLGc9byhnLHYsbSxsLG5bZSs3XSwyMiwtNDU3MDU5ODMpLGw9byhsLGcsdixtLG5bZSs4XSw3LDE3NzAwMzU0MTYpLG09byhtLGwsZyx2LG5bZSs5XSwxMiwtMTk1ODQxNDQxNyksdj1vKHYsbSxsLGcsbltlKzEwXSwxNywtNDIwNjMpLGc9byhnLHYsbSxsLG5bZSsxMV0sMjIsLTE5OTA0MDQxNjIpLGw9byhsLGcsdixtLG5bZSsxMl0sNywxODA0NjAzNjgyKSxtPW8obSxsLGcsdixuW2UrMTNdLDEyLC00MDM0MTEwMSksdj1vKHYsbSxsLGcsbltlKzE0XSwxNywtMTUwMjAwMjI5MCksZz1vKGcsdixtLGwsbltlKzE1XSwyMiwxMjM2NTM1MzI5KSxsPXUobCxnLHYsbSxuW2UrMV0sNSwtMTY1Nzk2NTEwKSxtPXUobSxsLGcsdixuW2UrNl0sOSwtMTA2OTUwMTYzMiksdj11KHYsbSxsLGcsbltlKzExXSwxNCw2NDM3MTc3MTMpLGc9dShnLHYsbSxsLG5bZV0sMjAsLTM3Mzg5NzMwMiksbD11KGwsZyx2LG0sbltlKzVdLDUsLTcwMTU1ODY5MSksbT11KG0sbCxnLHYsbltlKzEwXSw5LDM4MDE2MDgzKSx2PXUodixtLGwsZyxuW2UrMTVdLDE0LC02NjA0NzgzMzUpLGc9dShnLHYsbSxsLG5bZSs0XSwyMCwtNDA1NTM3ODQ4KSxsPXUobCxnLHYsbSxuW2UrOV0sNSw1Njg0NDY0MzgpLG09dShtLGwsZyx2LG5bZSsxNF0sOSwtMTAxOTgwMzY5MCksdj11KHYsbSxsLGcsbltlKzNdLDE0LC0xODczNjM5NjEpLGc9dShnLHYsbSxsLG5bZSs4XSwyMCwxMTYzNTMxNTAxKSxsPXUobCxnLHYsbSxuW2UrMTNdLDUsLTE0NDQ2ODE0NjcpLG09dShtLGwsZyx2LG5bZSsyXSw5LC01MTQwMzc4NCksdj11KHYsbSxsLGcsbltlKzddLDE0LDE3MzUzMjg0NzMpLGc9dShnLHYsbSxsLG5bZSsxMl0sMjAsLTE5MjY2MDc3MzQpLGw9YyhsLGcsdixtLG5bZSs1XSw0LC0zNzg1NTgpLG09YyhtLGwsZyx2LG5bZSs4XSwxMSwtMjAyMjU3NDQ2Myksdj1jKHYsbSxsLGcsbltlKzExXSwxNiwxODM5MDMwNTYyKSxnPWMoZyx2LG0sbCxuW2UrMTRdLDIzLC0zNTMwOTU1NiksbD1jKGwsZyx2LG0sbltlKzFdLDQsLTE1MzA5OTIwNjApLG09YyhtLGwsZyx2LG5bZSs0XSwxMSwxMjcyODkzMzUzKSx2PWModixtLGwsZyxuW2UrN10sMTYsLTE1NTQ5NzYzMiksZz1jKGcsdixtLGwsbltlKzEwXSwyMywtMTA5NDczMDY0MCksbD1jKGwsZyx2LG0sbltlKzEzXSw0LDY4MTI3OTE3NCksbT1jKG0sbCxnLHYsbltlXSwxMSwtMzU4NTM3MjIyKSx2PWModixtLGwsZyxuW2UrM10sMTYsLTcyMjUyMTk3OSksZz1jKGcsdixtLGwsbltlKzZdLDIzLDc2MDI5MTg5KSxsPWMobCxnLHYsbSxuW2UrOV0sNCwtNjQwMzY0NDg3KSxtPWMobSxsLGcsdixuW2UrMTJdLDExLC00MjE4MTU4MzUpLHY9Yyh2LG0sbCxnLG5bZSsxNV0sMTYsNTMwNzQyNTIwKSxnPWMoZyx2LG0sbCxuW2UrMl0sMjMsLTk5NTMzODY1MSksbD1mKGwsZyx2LG0sbltlXSw2LC0xOTg2MzA4NDQpLG09ZihtLGwsZyx2LG5bZSs3XSwxMCwxMTI2ODkxNDE1KSx2PWYodixtLGwsZyxuW2UrMTRdLDE1LC0xNDE2MzU0OTA1KSxnPWYoZyx2LG0sbCxuW2UrNV0sMjEsLTU3NDM0MDU1KSxsPWYobCxnLHYsbSxuW2UrMTJdLDYsMTcwMDQ4NTU3MSksbT1mKG0sbCxnLHYsbltlKzNdLDEwLC0xODk0OTg2NjA2KSx2PWYodixtLGwsZyxuW2UrMTBdLDE1LC0xMDUxNTIzKSxnPWYoZyx2LG0sbCxuW2UrMV0sMjEsLTIwNTQ5MjI3OTkpLGw9ZihsLGcsdixtLG5bZSs4XSw2LDE4NzMzMTMzNTkpLG09ZihtLGwsZyx2LG5bZSsxNV0sMTAsLTMwNjExNzQ0KSx2PWYodixtLGwsZyxuW2UrNl0sMTUsLTE1NjAxOTgzODApLGc9ZihnLHYsbSxsLG5bZSsxM10sMjEsMTMwOTE1MTY0OSksbD1mKGwsZyx2LG0sbltlKzRdLDYsLTE0NTUyMzA3MCksbT1mKG0sbCxnLHYsbltlKzExXSwxMCwtMTEyMDIxMDM3OSksdj1mKHYsbSxsLGcsbltlKzJdLDE1LDcxODc4NzI1OSksZz1mKGcsdixtLGwsbltlKzldLDIxLC0zNDM0ODU1NTEpLGw9dChsLGkpLGc9dChnLGEpLHY9dCh2LGgpLG09dChtLGQpO3JldHVybltsLGcsdixtXX1mdW5jdGlvbiBhKG4pe3ZhciB0LHI9XCJcIixlPTMyKm4ubGVuZ3RoO2Zvcih0PTA7dDxlO3QrPTgpcis9U3RyaW5nLmZyb21DaGFyQ29kZShuW3Q+PjVdPj4+dCUzMiYyNTUpO3JldHVybiByfWZ1bmN0aW9uIGgobil7dmFyIHQscj1bXTtmb3Ioclsobi5sZW5ndGg+PjIpLTFdPXZvaWQgMCx0PTA7dDxyLmxlbmd0aDt0Kz0xKXJbdF09MDt2YXIgZT04Km4ubGVuZ3RoO2Zvcih0PTA7dDxlO3QrPTgpclt0Pj41XXw9KDI1NSZuLmNoYXJDb2RlQXQodC84KSk8PHQlMzI7cmV0dXJuIHJ9ZnVuY3Rpb24gZChuKXtyZXR1cm4gYShpKGgobiksOCpuLmxlbmd0aCkpfWZ1bmN0aW9uIGwobix0KXt2YXIgcixlLG89aChuKSx1PVtdLGM9W107Zm9yKHVbMTVdPWNbMTVdPXZvaWQgMCxvLmxlbmd0aD4xNiYmKG89aShvLDgqbi5sZW5ndGgpKSxyPTA7cjwxNjtyKz0xKXVbcl09OTA5NTIyNDg2Xm9bcl0sY1tyXT0xNTQ5NTU2ODI4Xm9bcl07cmV0dXJuIGU9aSh1LmNvbmNhdChoKHQpKSw1MTIrOCp0Lmxlbmd0aCksYShpKGMuY29uY2F0KGUpLDY0MCkpfWZ1bmN0aW9uIGcobil7dmFyIHQscixlPVwiMDEyMzQ1Njc4OWFiY2RlZlwiLG89XCJcIjtmb3Iocj0wO3I8bi5sZW5ndGg7cis9MSl0PW4uY2hhckNvZGVBdChyKSxvKz1lLmNoYXJBdCh0Pj4+NCYxNSkrZS5jaGFyQXQoMTUmdCk7cmV0dXJuIG99ZnVuY3Rpb24gdihuKXtyZXR1cm4gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KG4pKX1mdW5jdGlvbiBtKG4pe3JldHVybiBkKHYobikpfWZ1bmN0aW9uIHAobil7cmV0dXJuIGcobShuKSl9ZnVuY3Rpb24gcyhuLHQpe3JldHVybiBsKHYobiksdih0KSl9ZnVuY3Rpb24gQyhuLHQpe3JldHVybiBnKHMobix0KSl9ZnVuY3Rpb24gQShuLHQscil7cmV0dXJuIHQ/cj9zKHQsbik6Qyh0LG4pOnI/bShuKTpwKG4pfVwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoZnVuY3Rpb24oKXtyZXR1cm4gQX0pOlwib2JqZWN0XCI9PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzP21vZHVsZS5leHBvcnRzPUE6bi5tZDU9QX0odGhpcyk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvanMvdmVuZG9yL21kNS5taW4uanMiLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogTmFtZTogICAgICAgICAgbmcta25vYlxuICogRGVzY3JpcHRpb246ICAgQW5ndWxhci5qcyBLbm9iIGRpcmVjdGl2ZVxuICogVmVyc2lvbjogICAgICAgMC4xLjNcbiAqIEhvbWVwYWdlOiAgICAgIGh0dHBzOi8vcmFkbWllLmdpdGh1Yi5pby9uZy1rbm9iXG4gKiBMaWNlbmNlOiAgICAgICBNSVRcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuKGZ1bmN0aW9uKCl7dmFyIHVpPXt9LEtub2I9ZnVuY3Rpb24oZWxlbWVudCx2YWx1ZSxvcHRpb25zKXt0aGlzLmVsZW1lbnQ9ZWxlbWVudCx0aGlzLnZhbHVlPXZhbHVlLHRoaXMub3B0aW9ucz1vcHRpb25zLHRoaXMuaW5EcmFnPSExfTtLbm9iLnByb3RvdHlwZS52YWx1ZVRvUmFkaWFucz1mdW5jdGlvbih2YWx1ZSx2YWx1ZUVuZCxhbmdsZUVuZCxhbmdsZVN0YXJ0LHZhbHVlU3RhcnQpe3JldHVybiB2YWx1ZUVuZD12YWx1ZUVuZHx8MTAwLHZhbHVlU3RhcnQ9dmFsdWVTdGFydHx8MCxhbmdsZUVuZD1hbmdsZUVuZHx8MzYwLGFuZ2xlU3RhcnQ9YW5nbGVTdGFydHx8MCxNYXRoLlBJLzE4MCooKHZhbHVlLXZhbHVlU3RhcnQpKihhbmdsZUVuZC1hbmdsZVN0YXJ0KS8odmFsdWVFbmQtdmFsdWVTdGFydCkrYW5nbGVTdGFydCl9LEtub2IucHJvdG90eXBlLnJhZGlhbnNUb1ZhbHVlPWZ1bmN0aW9uKHJhZGlhbnMsdmFsdWVFbmQsdmFsdWVTdGFydCxhbmdsZUVuZCxhbmdsZVN0YXJ0KXtyZXR1cm4gdmFsdWVFbmQ9dmFsdWVFbmR8fDEwMCx2YWx1ZVN0YXJ0PXZhbHVlU3RhcnR8fDAsYW5nbGVFbmQ9YW5nbGVFbmR8fDM2MCxhbmdsZVN0YXJ0PWFuZ2xlU3RhcnR8fDAsKDE4MC9NYXRoLlBJKnJhZGlhbnMtYW5nbGVTdGFydCkqKHZhbHVlRW5kLXZhbHVlU3RhcnQpLyhhbmdsZUVuZC1hbmdsZVN0YXJ0KSt2YWx1ZVN0YXJ0fSxLbm9iLnByb3RvdHlwZS5jcmVhdGVBcmM9ZnVuY3Rpb24oaW5uZXJSYWRpdXMsb3V0ZXJSYWRpdXMsc3RhcnRBbmdsZSxlbmRBbmdsZSxjb3JuZXJSYWRpdXMpe3ZhciBhcmM9ZDMuc3ZnLmFyYygpLmlubmVyUmFkaXVzKGlubmVyUmFkaXVzKS5vdXRlclJhZGl1cyhvdXRlclJhZGl1cykuc3RhcnRBbmdsZShzdGFydEFuZ2xlKS5lbmRBbmdsZShlbmRBbmdsZSkuY29ybmVyUmFkaXVzKGNvcm5lclJhZGl1cyk7cmV0dXJuIGFyY30sS25vYi5wcm90b3R5cGUuZHJhd0FyYz1mdW5jdGlvbihzdmcsYXJjLGxhYmVsLHN0eWxlLGNsaWNrLGRyYWcpe3ZhciBlbGVtPXN2Zy5hcHBlbmQoXCJwYXRoXCIpLmF0dHIoXCJpZFwiLGxhYmVsKS5hdHRyKFwiZFwiLGFyYykuc3R5bGUoc3R5bGUpLmF0dHIoXCJ0cmFuc2Zvcm1cIixcInRyYW5zbGF0ZShcIit0aGlzLm9wdGlvbnMuc2l6ZS8yK1wiLCBcIit0aGlzLm9wdGlvbnMuc2l6ZS8yK1wiKVwiKTtyZXR1cm4gdGhpcy5vcHRpb25zLnJlYWRPbmx5PT09ITEmJihjbGljayYmZWxlbS5vbihcImNsaWNrXCIsY2xpY2spLGRyYWcmJmVsZW0uY2FsbChkcmFnKSksZWxlbX0sS25vYi5wcm90b3R5cGUuY3JlYXRlQXJjcz1mdW5jdGlvbigpe3ZhciBvdXRlclJhZGl1cz1wYXJzZUludCh0aGlzLm9wdGlvbnMuc2l6ZS8yLDEwKSxzdGFydEFuZ2xlPXRoaXMudmFsdWVUb1JhZGlhbnModGhpcy5vcHRpb25zLnN0YXJ0QW5nbGUsMzYwKSxlbmRBbmdsZT10aGlzLnZhbHVlVG9SYWRpYW5zKHRoaXMub3B0aW9ucy5lbmRBbmdsZSwzNjApO3RoaXMub3B0aW9ucy5zY2FsZS5lbmFibGVkJiYob3V0ZXJSYWRpdXMtPXRoaXMub3B0aW9ucy5zY2FsZS53aWR0aCt0aGlzLm9wdGlvbnMuc2NhbGUuc3BhY2VXaWR0aCk7dmFyIGRpZmYsdHJhY2tJbm5lclJhZGl1cz1vdXRlclJhZGl1cy10aGlzLm9wdGlvbnMudHJhY2tXaWR0aCxjaGFuZ2VJbm5lclJhZGl1cz1vdXRlclJhZGl1cy10aGlzLm9wdGlvbnMuYmFyV2lkdGgsdmFsdWVJbm5lclJhZGl1cz1vdXRlclJhZGl1cy10aGlzLm9wdGlvbnMuYmFyV2lkdGgsaW50ZXJhY3RJbm5lclJhZGl1cz0xLHRyYWNrT3V0ZXJSYWRpdXM9b3V0ZXJSYWRpdXMsY2hhbmdlT3V0ZXJSYWRpdXM9b3V0ZXJSYWRpdXMsdmFsdWVPdXRlclJhZGl1cz1vdXRlclJhZGl1cyxpbnRlcmFjdE91dGVyUmFkaXVzPW91dGVyUmFkaXVzO3RoaXMub3B0aW9ucy5iYXJXaWR0aD50aGlzLm9wdGlvbnMudHJhY2tXaWR0aD8oZGlmZj0odGhpcy5vcHRpb25zLmJhcldpZHRoLXRoaXMub3B0aW9ucy50cmFja1dpZHRoKS8yLHRyYWNrSW5uZXJSYWRpdXMtPWRpZmYsdHJhY2tPdXRlclJhZGl1cy09ZGlmZik6dGhpcy5vcHRpb25zLmJhcldpZHRoPHRoaXMub3B0aW9ucy50cmFja1dpZHRoJiYoZGlmZj0odGhpcy5vcHRpb25zLnRyYWNrV2lkdGgtdGhpcy5vcHRpb25zLmJhcldpZHRoKS8yLGNoYW5nZU91dGVyUmFkaXVzLT1kaWZmLHZhbHVlT3V0ZXJSYWRpdXMtPWRpZmYsY2hhbmdlSW5uZXJSYWRpdXMtPWRpZmYsdmFsdWVJbm5lclJhZGl1cy09ZGlmZiksdGhpcy5vcHRpb25zLmJnQ29sb3ImJih0aGlzLmJnQXJjPXRoaXMuY3JlYXRlQXJjKDAsb3V0ZXJSYWRpdXMsc3RhcnRBbmdsZSxlbmRBbmdsZSkpLFwidHJvblwiPT09dGhpcy5vcHRpb25zLnNraW4udHlwZSYmKHRyYWNrT3V0ZXJSYWRpdXM9dHJhY2tPdXRlclJhZGl1cy10aGlzLm9wdGlvbnMuc2tpbi53aWR0aC10aGlzLm9wdGlvbnMuc2tpbi5zcGFjZVdpZHRoLGNoYW5nZU91dGVyUmFkaXVzPWNoYW5nZU91dGVyUmFkaXVzLXRoaXMub3B0aW9ucy5za2luLndpZHRoLXRoaXMub3B0aW9ucy5za2luLnNwYWNlV2lkdGgsdmFsdWVPdXRlclJhZGl1cz12YWx1ZU91dGVyUmFkaXVzLXRoaXMub3B0aW9ucy5za2luLndpZHRoLXRoaXMub3B0aW9ucy5za2luLnNwYWNlV2lkdGgsaW50ZXJhY3RPdXRlclJhZGl1cz1pbnRlcmFjdE91dGVyUmFkaXVzLXRoaXMub3B0aW9ucy5za2luLndpZHRoLXRoaXMub3B0aW9ucy5za2luLnNwYWNlV2lkdGgsdGhpcy5ob29wQXJjPXRoaXMuY3JlYXRlQXJjKG91dGVyUmFkaXVzLXRoaXMub3B0aW9ucy5za2luLndpZHRoLG91dGVyUmFkaXVzLHN0YXJ0QW5nbGUsZW5kQW5nbGUpKSx0aGlzLnRyYWNrQXJjPXRoaXMuY3JlYXRlQXJjKHRyYWNrSW5uZXJSYWRpdXMsdHJhY2tPdXRlclJhZGl1cyxzdGFydEFuZ2xlLGVuZEFuZ2xlKSx0aGlzLmNoYW5nZUFyYz10aGlzLmNyZWF0ZUFyYyhjaGFuZ2VJbm5lclJhZGl1cyxjaGFuZ2VPdXRlclJhZGl1cyxzdGFydEFuZ2xlLHN0YXJ0QW5nbGUsdGhpcy5vcHRpb25zLmJhckNhcCksdGhpcy52YWx1ZUFyYz10aGlzLmNyZWF0ZUFyYyh2YWx1ZUlubmVyUmFkaXVzLHZhbHVlT3V0ZXJSYWRpdXMsc3RhcnRBbmdsZSxzdGFydEFuZ2xlLHRoaXMub3B0aW9ucy5iYXJDYXApLHRoaXMuaW50ZXJhY3RBcmM9dGhpcy5jcmVhdGVBcmMoaW50ZXJhY3RJbm5lclJhZGl1cyxpbnRlcmFjdE91dGVyUmFkaXVzLHN0YXJ0QW5nbGUsZW5kQW5nbGUpfSxLbm9iLnByb3RvdHlwZS5kcmF3QXJjcz1mdW5jdGlvbihjbGlja0ludGVyYWN0aW9uLGRyYWdCZWhhdmlvcil7dmFyIHN2Zz1kMy5zZWxlY3QodGhpcy5lbGVtZW50KS5hcHBlbmQoXCJzdmdcIikuYXR0cihcIndpZHRoXCIsdGhpcy5vcHRpb25zLnNpemUpLmF0dHIoXCJoZWlnaHRcIix0aGlzLm9wdGlvbnMuc2l6ZSk7aWYodGhpcy5vcHRpb25zLmJnQ29sb3ImJnRoaXMuZHJhd0FyYyhzdmcsdGhpcy5iZ0FyYyxcImJnQXJjXCIse2ZpbGw6dGhpcy5vcHRpb25zLmJnQ29sb3J9KSx0aGlzLm9wdGlvbnMuZGlzcGxheUlucHV0KXt2YXIgZm9udFNpemU9LjIqdGhpcy5vcHRpb25zLnNpemUrXCJweFwiO1wiYXV0b1wiIT09dGhpcy5vcHRpb25zLmZvbnRTaXplJiYoZm9udFNpemU9dGhpcy5vcHRpb25zLmZvbnRTaXplK1wicHhcIiksdGhpcy5vcHRpb25zLnN0ZXA8MSYmKHRoaXMudmFsdWU9dGhpcy52YWx1ZS50b0ZpeGVkKDEpKTt2YXIgdj10aGlzLnZhbHVlO1wiZnVuY3Rpb25cIj09dHlwZW9mIHRoaXMub3B0aW9ucy5pbnB1dEZvcm1hdHRlciYmKHY9dGhpcy5vcHRpb25zLmlucHV0Rm9ybWF0dGVyKHYpKSxzdmcuYXBwZW5kKFwidGV4dFwiKS5hdHRyKFwiaWRcIixcInRleHRcIikuYXR0cihcInRleHQtYW5jaG9yXCIsXCJtaWRkbGVcIikuYXR0cihcImZvbnQtc2l6ZVwiLGZvbnRTaXplKS5zdHlsZShcImZpbGxcIix0aGlzLm9wdGlvbnMudGV4dENvbG9yKS50ZXh0KHYrdGhpcy5vcHRpb25zLnVuaXR8fFwiXCIpLmF0dHIoXCJ0cmFuc2Zvcm1cIixcInRyYW5zbGF0ZShcIit0aGlzLm9wdGlvbnMuc2l6ZS8yK1wiLCBcIisodGhpcy5vcHRpb25zLnNpemUvMisuMDYqdGhpcy5vcHRpb25zLnNpemUpK1wiKVwiKSx0aGlzLm9wdGlvbnMuc3ViVGV4dC5lbmFibGVkJiYoZm9udFNpemU9LjA3KnRoaXMub3B0aW9ucy5zaXplK1wicHhcIixcImF1dG9cIiE9PXRoaXMub3B0aW9ucy5zdWJUZXh0LmZvbnQmJihmb250U2l6ZT10aGlzLm9wdGlvbnMuc3ViVGV4dC5mb250K1wicHhcIiksc3ZnLmFwcGVuZChcInRleHRcIikuYXR0cihcImNsYXNzXCIsXCJzdWItdGV4dFwiKS5hdHRyKFwidGV4dC1hbmNob3JcIixcIm1pZGRsZVwiKS5hdHRyKFwiZm9udC1zaXplXCIsZm9udFNpemUpLnN0eWxlKFwiZmlsbFwiLHRoaXMub3B0aW9ucy5zdWJUZXh0LmNvbG9yKS50ZXh0KHRoaXMub3B0aW9ucy5zdWJUZXh0LnRleHQpLmF0dHIoXCJ0cmFuc2Zvcm1cIixcInRyYW5zbGF0ZShcIit0aGlzLm9wdGlvbnMuc2l6ZS8yK1wiLCBcIisodGhpcy5vcHRpb25zLnNpemUvMisuMTUqdGhpcy5vcHRpb25zLnNpemUpK1wiKVwiKSl9aWYodGhpcy5vcHRpb25zLnNjYWxlLmVuYWJsZWQpe3ZhciByYWRpdXMscXVhbnRpdHksZGF0YSxjb3VudD0wLGFuZ2xlPTAsc3RhcnRSYWRpYW5zPXRoaXMudmFsdWVUb1JhZGlhbnModGhpcy5vcHRpb25zLm1pbix0aGlzLm9wdGlvbnMubWF4LHRoaXMub3B0aW9ucy5lbmRBbmdsZSx0aGlzLm9wdGlvbnMuc3RhcnRBbmdsZSx0aGlzLm9wdGlvbnMubWluKSxlbmRSYWRpYW5zPXRoaXMudmFsdWVUb1JhZGlhbnModGhpcy5vcHRpb25zLm1heCx0aGlzLm9wdGlvbnMubWF4LHRoaXMub3B0aW9ucy5lbmRBbmdsZSx0aGlzLm9wdGlvbnMuc3RhcnRBbmdsZSx0aGlzLm9wdGlvbnMubWluKSxkaWZmPTA7aWYoMD09PXRoaXMub3B0aW9ucy5zdGFydEFuZ2xlJiYzNjA9PT10aGlzLm9wdGlvbnMuZW5kQW5nbGV8fChkaWZmPTEpLFwiZG90c1wiPT09dGhpcy5vcHRpb25zLnNjYWxlLnR5cGUpe3ZhciB3aWR0aD10aGlzLm9wdGlvbnMuc2NhbGUud2lkdGg7cmFkaXVzPXRoaXMub3B0aW9ucy5zaXplLzItd2lkdGgscXVhbnRpdHk9dGhpcy5vcHRpb25zLnNjYWxlLnF1YW50aXR5O3ZhciBvZmZzZXQ9cmFkaXVzK3RoaXMub3B0aW9ucy5zY2FsZS53aWR0aDtkYXRhPWQzLnJhbmdlKHF1YW50aXR5KS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gYW5nbGU9Y291bnQqKGVuZFJhZGlhbnMtc3RhcnRSYWRpYW5zKS1NYXRoLlBJLzIrc3RhcnRSYWRpYW5zLGNvdW50Kz0xLyhxdWFudGl0eS1kaWZmKSx7Y3g6b2Zmc2V0K01hdGguY29zKGFuZ2xlKSpyYWRpdXMsY3k6b2Zmc2V0K01hdGguc2luKGFuZ2xlKSpyYWRpdXMscjp3aWR0aH19KSxzdmcuc2VsZWN0QWxsKFwiY2lyY2xlXCIpLmRhdGEoZGF0YSkuZW50ZXIoKS5hcHBlbmQoXCJjaXJjbGVcIikuYXR0cih7cjpmdW5jdGlvbihkKXtyZXR1cm4gZC5yfSxjeDpmdW5jdGlvbihkKXtyZXR1cm4gZC5jeH0sY3k6ZnVuY3Rpb24oZCl7cmV0dXJuIGQuY3l9LGZpbGw6dGhpcy5vcHRpb25zLnNjYWxlLmNvbG9yfSl9ZWxzZSBpZihcImxpbmVzXCI9PT10aGlzLm9wdGlvbnMuc2NhbGUudHlwZSl7dmFyIGhlaWdodD10aGlzLm9wdGlvbnMuc2NhbGUuaGVpZ2h0O3JhZGl1cz10aGlzLm9wdGlvbnMuc2l6ZS8yLHF1YW50aXR5PXRoaXMub3B0aW9ucy5zY2FsZS5xdWFudGl0eSxkYXRhPWQzLnJhbmdlKHF1YW50aXR5KS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gYW5nbGU9Y291bnQqKGVuZFJhZGlhbnMtc3RhcnRSYWRpYW5zKS1NYXRoLlBJLzIrc3RhcnRSYWRpYW5zLGNvdW50Kz0xLyhxdWFudGl0eS1kaWZmKSx7eDE6cmFkaXVzK01hdGguY29zKGFuZ2xlKSpyYWRpdXMseTE6cmFkaXVzK01hdGguc2luKGFuZ2xlKSpyYWRpdXMseDI6cmFkaXVzK01hdGguY29zKGFuZ2xlKSoocmFkaXVzLWhlaWdodCkseTI6cmFkaXVzK01hdGguc2luKGFuZ2xlKSoocmFkaXVzLWhlaWdodCl9fSksc3ZnLnNlbGVjdEFsbChcImxpbmVcIikuZGF0YShkYXRhKS5lbnRlcigpLmFwcGVuZChcImxpbmVcIikuYXR0cih7eDE6ZnVuY3Rpb24oZCl7cmV0dXJuIGQueDF9LHkxOmZ1bmN0aW9uKGQpe3JldHVybiBkLnkxfSx4MjpmdW5jdGlvbihkKXtyZXR1cm4gZC54Mn0seTI6ZnVuY3Rpb24oZCl7cmV0dXJuIGQueTJ9LFwic3Ryb2tlLXdpZHRoXCI6dGhpcy5vcHRpb25zLnNjYWxlLndpZHRoLHN0cm9rZTp0aGlzLm9wdGlvbnMuc2NhbGUuY29sb3J9KX19XCJ0cm9uXCI9PT10aGlzLm9wdGlvbnMuc2tpbi50eXBlJiZ0aGlzLmRyYXdBcmMoc3ZnLHRoaXMuaG9vcEFyYyxcImhvb3BBcmNcIix7ZmlsbDp0aGlzLm9wdGlvbnMuc2tpbi5jb2xvcn0pLHRoaXMuZHJhd0FyYyhzdmcsdGhpcy50cmFja0FyYyxcInRyYWNrQXJjXCIse2ZpbGw6dGhpcy5vcHRpb25zLnRyYWNrQ29sb3J9KSx0aGlzLm9wdGlvbnMuZGlzcGxheVByZXZpb3VzP3RoaXMuY2hhbmdlRWxlbT10aGlzLmRyYXdBcmMoc3ZnLHRoaXMuY2hhbmdlQXJjLFwiY2hhbmdlQXJjXCIse2ZpbGw6dGhpcy5vcHRpb25zLnByZXZCYXJDb2xvcn0pOnRoaXMuY2hhbmdlRWxlbT10aGlzLmRyYXdBcmMoc3ZnLHRoaXMuY2hhbmdlQXJjLFwiY2hhbmdlQXJjXCIse1wiZmlsbC1vcGFjaXR5XCI6MH0pLHRoaXMudmFsdWVFbGVtPXRoaXMuZHJhd0FyYyhzdmcsdGhpcy52YWx1ZUFyYyxcInZhbHVlQXJjXCIse2ZpbGw6dGhpcy5vcHRpb25zLmJhckNvbG9yfSk7dmFyIGN1cnNvcj1cInBvaW50ZXJcIjt0aGlzLm9wdGlvbnMucmVhZE9ubHkmJihjdXJzb3I9XCJkZWZhdWx0XCIpLHRoaXMuZHJhd0FyYyhzdmcsdGhpcy5pbnRlcmFjdEFyYyxcImludGVyYWN0QXJjXCIse1wiZmlsbC1vcGFjaXR5XCI6MCxjdXJzb3I6Y3Vyc29yfSxjbGlja0ludGVyYWN0aW9uLGRyYWdCZWhhdmlvcil9LEtub2IucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24odXBkYXRlKXtmdW5jdGlvbiBkcmFnSW50ZXJhY3Rpb24oKXt0aGF0LmluRHJhZz0hMDt2YXIgeD1kMy5ldmVudC54LXRoYXQub3B0aW9ucy5zaXplLzIseT1kMy5ldmVudC55LXRoYXQub3B0aW9ucy5zaXplLzI7aW50ZXJhY3Rpb24oeCx5LCExKX1mdW5jdGlvbiBjbGlja0ludGVyYWN0aW9uKCl7dGhhdC5pbkRyYWc9ITE7dmFyIGNvb3Jkcz1kMy5tb3VzZSh0aGlzLnBhcmVudE5vZGUpLHg9Y29vcmRzWzBdLXRoYXQub3B0aW9ucy5zaXplLzIseT1jb29yZHNbMV0tdGhhdC5vcHRpb25zLnNpemUvMjtpbnRlcmFjdGlvbih4LHksITApfWZ1bmN0aW9uIGludGVyYWN0aW9uKHgseSxpc0ZpbmFsKXt2YXIgcmFkaWFucyxkZWx0YSxhcmM9TWF0aC5hdGFuKHkveCkvKE1hdGguUEkvMTgwKTtpZih4Pj0wJiYwPj15fHx4Pj0wJiZ5Pj0wP2RlbHRhPTkwOihkZWx0YT0yNzAsdGhhdC5vcHRpb25zLnN0YXJ0QW5nbGU8MCYmKGRlbHRhPS05MCkpLHJhZGlhbnM9KGRlbHRhK2FyYykqKE1hdGguUEkvMTgwKSx0aGF0LnZhbHVlPXRoYXQucmFkaWFuc1RvVmFsdWUocmFkaWFucyx0aGF0Lm9wdGlvbnMubWF4LHRoYXQub3B0aW9ucy5taW4sdGhhdC5vcHRpb25zLmVuZEFuZ2xlLHRoYXQub3B0aW9ucy5zdGFydEFuZ2xlKSx0aGF0LnZhbHVlPj10aGF0Lm9wdGlvbnMubWluJiZ0aGF0LnZhbHVlPD10aGF0Lm9wdGlvbnMubWF4JiYodGhhdC52YWx1ZT1NYXRoLnJvdW5kKH5+KCh0aGF0LnZhbHVlPDA/LS41Oi41KSt0aGF0LnZhbHVlL3RoYXQub3B0aW9ucy5zdGVwKSp0aGF0Lm9wdGlvbnMuc3RlcCoxMDApLzEwMCx0aGF0Lm9wdGlvbnMuc3RlcDwxJiYodGhhdC52YWx1ZT10aGF0LnZhbHVlLnRvRml4ZWQoMSkpLHVwZGF0ZSh0aGF0LnZhbHVlKSx0aGF0LnZhbHVlQXJjLmVuZEFuZ2xlKHRoYXQudmFsdWVUb1JhZGlhbnModGhhdC52YWx1ZSx0aGF0Lm9wdGlvbnMubWF4LHRoYXQub3B0aW9ucy5lbmRBbmdsZSx0aGF0Lm9wdGlvbnMuc3RhcnRBbmdsZSx0aGF0Lm9wdGlvbnMubWluKSksdGhhdC52YWx1ZUVsZW0uYXR0cihcImRcIix0aGF0LnZhbHVlQXJjKSxpc0ZpbmFsJiYodGhhdC5jaGFuZ2VBcmMuZW5kQW5nbGUodGhhdC52YWx1ZVRvUmFkaWFucyh0aGF0LnZhbHVlLHRoYXQub3B0aW9ucy5tYXgsdGhhdC5vcHRpb25zLmVuZEFuZ2xlLHRoYXQub3B0aW9ucy5zdGFydEFuZ2xlLHRoYXQub3B0aW9ucy5taW4pKSx0aGF0LmNoYW5nZUVsZW0uYXR0cihcImRcIix0aGF0LmNoYW5nZUFyYykpLHRoYXQub3B0aW9ucy5kaXNwbGF5SW5wdXQpKXt2YXIgdj10aGF0LnZhbHVlO1wiZnVuY3Rpb25cIj09dHlwZW9mIHRoYXQub3B0aW9ucy5pbnB1dEZvcm1hdHRlciYmKHY9dGhhdC5vcHRpb25zLmlucHV0Rm9ybWF0dGVyKHYpKSxkMy5zZWxlY3QodGhhdC5lbGVtZW50KS5zZWxlY3QoXCIjdGV4dFwiKS50ZXh0KHYrdGhhdC5vcHRpb25zLnVuaXR8fFwiXCIpfX1kMy5zZWxlY3QodGhpcy5lbGVtZW50KS5zZWxlY3QoXCJzdmdcIikucmVtb3ZlKCk7dmFyIHRoYXQ9dGhpczt0aGF0LmNyZWF0ZUFyY3MoKTt2YXIgZHJhZ0JlaGF2aW9yPWQzLmJlaGF2aW9yLmRyYWcoKS5vbihcImRyYWdcIixkcmFnSW50ZXJhY3Rpb24pLm9uKFwiZHJhZ2VuZFwiLGNsaWNrSW50ZXJhY3Rpb24pO3RoYXQuZHJhd0FyY3MoY2xpY2tJbnRlcmFjdGlvbixkcmFnQmVoYXZpb3IpLHRoYXQub3B0aW9ucy5hbmltYXRlLmVuYWJsZWQ/dGhhdC52YWx1ZUVsZW0udHJhbnNpdGlvbigpLmVhc2UodGhhdC5vcHRpb25zLmFuaW1hdGUuZWFzZSkuZHVyYXRpb24odGhhdC5vcHRpb25zLmFuaW1hdGUuZHVyYXRpb24pLnR3ZWVuKFwiXCIsZnVuY3Rpb24oKXt2YXIgaT1kMy5pbnRlcnBvbGF0ZSh0aGF0LnZhbHVlVG9SYWRpYW5zKHRoYXQub3B0aW9ucy5zdGFydEFuZ2xlLDM2MCksdGhhdC52YWx1ZVRvUmFkaWFucyh0aGF0LnZhbHVlLHRoYXQub3B0aW9ucy5tYXgsdGhhdC5vcHRpb25zLmVuZEFuZ2xlLHRoYXQub3B0aW9ucy5zdGFydEFuZ2xlLHRoYXQub3B0aW9ucy5taW4pKTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIHZhbD1pKHQpO3RoYXQudmFsdWVFbGVtLmF0dHIoXCJkXCIsdGhhdC52YWx1ZUFyYy5lbmRBbmdsZSh2YWwpKSx0aGF0LmNoYW5nZUVsZW0uYXR0cihcImRcIix0aGF0LmNoYW5nZUFyYy5lbmRBbmdsZSh2YWwpKX19KToodGhhdC5jaGFuZ2VBcmMuZW5kQW5nbGUodGhpcy52YWx1ZVRvUmFkaWFucyh0aGlzLnZhbHVlLHRoaXMub3B0aW9ucy5tYXgsdGhpcy5vcHRpb25zLmVuZEFuZ2xlLHRoaXMub3B0aW9ucy5zdGFydEFuZ2xlLHRoaXMub3B0aW9ucy5taW4pKSx0aGF0LmNoYW5nZUVsZW0uYXR0cihcImRcIix0aGF0LmNoYW5nZUFyYyksdGhhdC52YWx1ZUFyYy5lbmRBbmdsZSh0aGlzLnZhbHVlVG9SYWRpYW5zKHRoaXMudmFsdWUsdGhpcy5vcHRpb25zLm1heCx0aGlzLm9wdGlvbnMuZW5kQW5nbGUsdGhpcy5vcHRpb25zLnN0YXJ0QW5nbGUsdGhpcy5vcHRpb25zLm1pbikpLHRoYXQudmFsdWVFbGVtLmF0dHIoXCJkXCIsdGhhdC52YWx1ZUFyYykpfSxLbm9iLnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbihuZXdWYWx1ZSl7aWYoIXRoaXMuaW5EcmFnJiZ0aGlzLnZhbHVlPj10aGlzLm9wdGlvbnMubWluJiZ0aGlzLnZhbHVlPD10aGlzLm9wdGlvbnMubWF4KXt2YXIgcmFkaWFucz10aGlzLnZhbHVlVG9SYWRpYW5zKG5ld1ZhbHVlLHRoaXMub3B0aW9ucy5tYXgsdGhpcy5vcHRpb25zLmVuZEFuZ2xlLHRoaXMub3B0aW9ucy5zdGFydEFuZ2xlLHRoaXMub3B0aW9ucy5taW4pO2lmKHRoaXMudmFsdWU9TWF0aC5yb3VuZCh+figoMD5uZXdWYWx1ZT8tLjU6LjUpK25ld1ZhbHVlL3RoaXMub3B0aW9ucy5zdGVwKSp0aGlzLm9wdGlvbnMuc3RlcCoxMDApLzEwMCx0aGlzLm9wdGlvbnMuc3RlcDwxJiYodGhpcy52YWx1ZT10aGlzLnZhbHVlLnRvRml4ZWQoMSkpLHRoaXMuY2hhbmdlQXJjLmVuZEFuZ2xlKHJhZGlhbnMpLGQzLnNlbGVjdCh0aGlzLmVsZW1lbnQpLnNlbGVjdChcIiNjaGFuZ2VBcmNcIikuYXR0cihcImRcIix0aGlzLmNoYW5nZUFyYyksdGhpcy52YWx1ZUFyYy5lbmRBbmdsZShyYWRpYW5zKSxkMy5zZWxlY3QodGhpcy5lbGVtZW50KS5zZWxlY3QoXCIjdmFsdWVBcmNcIikuYXR0cihcImRcIix0aGlzLnZhbHVlQXJjKSx0aGlzLm9wdGlvbnMuZGlzcGxheUlucHV0KXt2YXIgdj10aGlzLnZhbHVlO1wiZnVuY3Rpb25cIj09dHlwZW9mIHRoaXMub3B0aW9ucy5pbnB1dEZvcm1hdHRlciYmKHY9dGhpcy5vcHRpb25zLmlucHV0Rm9ybWF0dGVyKHYpKSxkMy5zZWxlY3QodGhpcy5lbGVtZW50KS5zZWxlY3QoXCIjdGV4dFwiKS50ZXh0KHYrdGhpcy5vcHRpb25zLnVuaXR8fFwiXCIpfX19LHVpLktub2I9S25vYix1aS5rbm9iRGlyZWN0aXZlPWZ1bmN0aW9uKCl7cmV0dXJue3Jlc3RyaWN0OlwiRVwiLHNjb3BlOnt2YWx1ZTpcIj1cIixvcHRpb25zOlwiPVwifSxsaW5rOmZ1bmN0aW9uKHNjb3BlLGVsZW1lbnQpe3Njb3BlLnZhbHVlPXNjb3BlLnZhbHVlfHwwO3ZhciBkZWZhdWx0T3B0aW9ucz17c2tpbjp7dHlwZTpcInNpbXBsZVwiLHdpZHRoOjEwLGNvbG9yOlwicmdiYSgyNTUsMCwwLC41KVwiLHNwYWNlV2lkdGg6NX0sYW5pbWF0ZTp7ZW5hYmxlZDohMCxkdXJhdGlvbjoxZTMsZWFzZTpcImJvdW5jZVwifSxzaXplOjIwMCxzdGFydEFuZ2xlOjAsZW5kQW5nbGU6MzYwLHVuaXQ6XCJcIixkaXNwbGF5SW5wdXQ6ITAsaW5wdXRGb3JtYXR0ZXI6ZnVuY3Rpb24odil7cmV0dXJuIHZ9LHJlYWRPbmx5OiExLHRyYWNrV2lkdGg6NTAsYmFyV2lkdGg6NTAsdHJhY2tDb2xvcjpcInJnYmEoMCwwLDAsMClcIixiYXJDb2xvcjpcInJnYmEoMjU1LDAsMCwuNSlcIixwcmV2QmFyQ29sb3I6XCJyZ2JhKDAsMCwwLDApXCIsdGV4dENvbG9yOlwiIzIyMlwiLGJhckNhcDowLGZvbnRTaXplOlwiYXV0b1wiLHN1YlRleHQ6e2VuYWJsZWQ6ITEsdGV4dDpcIlwiLGNvbG9yOlwiZ3JheVwiLGZvbnQ6XCJhdXRvXCJ9LGJnQ29sb3I6XCJcIixzY2FsZTp7ZW5hYmxlZDohMSx0eXBlOlwibGluZXNcIixjb2xvcjpcImdyYXlcIix3aWR0aDo0LHF1YW50aXR5OjIwLGhlaWdodDoxMCxzcGFjZVdpZHRoOjE1fSxzdGVwOjEsZGlzcGxheVByZXZpb3VzOiExLG1pbjowLG1heDoxMDAsZHluYW1pY09wdGlvbnM6ITF9O3Njb3BlLm9wdGlvbnM9YW5ndWxhci5tZXJnZShkZWZhdWx0T3B0aW9ucyxzY29wZS5vcHRpb25zKTt2YXIga25vYj1uZXcgdWkuS25vYihlbGVtZW50WzBdLHNjb3BlLnZhbHVlLHNjb3BlLm9wdGlvbnMpO2lmKHNjb3BlLiR3YXRjaChcInZhbHVlXCIsZnVuY3Rpb24obmV3VmFsdWUsb2xkVmFsdWUpe251bGw9PT1uZXdWYWx1ZSYmXCJ1bmRlZmluZWRcIj09dHlwZW9mIG5ld1ZhbHVlfHxcInVuZGVmaW5lZFwiPT10eXBlb2Ygb2xkVmFsdWV8fG5ld1ZhbHVlPT09b2xkVmFsdWV8fGtub2Iuc2V0VmFsdWUobmV3VmFsdWUpfSksc2NvcGUub3B0aW9ucy5keW5hbWljT3B0aW9ucyl7dmFyIGlzRmlyc3RXYXRjaE9uT3B0aW9ucz0hMDtzY29wZS4kd2F0Y2goXCJvcHRpb25zXCIsZnVuY3Rpb24oKXtpZihpc0ZpcnN0V2F0Y2hPbk9wdGlvbnMpaXNGaXJzdFdhdGNoT25PcHRpb25zPSExO2Vsc2V7dmFyIG5ld09wdGlvbnM9YW5ndWxhci5tZXJnZShkZWZhdWx0T3B0aW9ucyxzY29wZS5vcHRpb25zKTtrbm9iPW5ldyB1aS5Lbm9iKGVsZW1lbnRbMF0sc2NvcGUudmFsdWUsbmV3T3B0aW9ucyksZHJhd0tub2IoKX19LCEwKX12YXIgZHJhd0tub2I9ZnVuY3Rpb24oKXtrbm9iLmRyYXcoZnVuY3Rpb24odmFsdWUpe3Njb3BlLiRhcHBseShmdW5jdGlvbigpe3Njb3BlLnZhbHVlPXZhbHVlfSl9KX07ZHJhd0tub2IoKX19fSxhbmd1bGFyLm1vZHVsZShcInVpLmtub2JcIixbXSkuZGlyZWN0aXZlKFwidWlLbm9iXCIsdWkua25vYkRpcmVjdGl2ZSl9KCkpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2pzL3ZlbmRvci9uZy1rbm9iLm1pbi5qcyIsIihmdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBkZWZpbmU9PT1cImZ1bmN0aW9uXCImJmRlZmluZS5hbWQpe2RlZmluZShbXSxiKTt9ZWxzZXtpZih0eXBlb2YgZXhwb3J0cz09PVwib2JqZWN0XCIpe21vZHVsZS5leHBvcnRzPWIoKTt9ZWxzZXthLlgySlM9YigpO319fSh0aGlzLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHope3ZhciB0PVwiMS4yLjBcIjt6PXp8fHt9O2koKTt1KCk7ZnVuY3Rpb24gaSgpe2lmKHouZXNjYXBlTW9kZT09PXVuZGVmaW5lZCl7ei5lc2NhcGVNb2RlPXRydWU7fXouYXR0cmlidXRlUHJlZml4PXouYXR0cmlidXRlUHJlZml4fHxcIl9cIjt6LmFycmF5QWNjZXNzRm9ybT16LmFycmF5QWNjZXNzRm9ybXx8XCJub25lXCI7ei5lbXB0eU5vZGVGb3JtPXouZW1wdHlOb2RlRm9ybXx8XCJ0ZXh0XCI7aWYoei5lbmFibGVUb1N0cmluZ0Z1bmM9PT11bmRlZmluZWQpe3ouZW5hYmxlVG9TdHJpbmdGdW5jPXRydWU7fXouYXJyYXlBY2Nlc3NGb3JtUGF0aHM9ei5hcnJheUFjY2Vzc0Zvcm1QYXRoc3x8W107aWYoei5za2lwRW1wdHlUZXh0Tm9kZXNGb3JPYmo9PT11bmRlZmluZWQpe3ouc2tpcEVtcHR5VGV4dE5vZGVzRm9yT2JqPXRydWU7fWlmKHouc3RyaXBXaGl0ZXNwYWNlcz09PXVuZGVmaW5lZCl7ei5zdHJpcFdoaXRlc3BhY2VzPXRydWU7fXouZGF0ZXRpbWVBY2Nlc3NGb3JtUGF0aHM9ei5kYXRldGltZUFjY2Vzc0Zvcm1QYXRoc3x8W107aWYoei51c2VEb3VibGVRdW90ZXM9PT11bmRlZmluZWQpe3oudXNlRG91YmxlUXVvdGVzPWZhbHNlO316LnhtbEVsZW1lbnRzRmlsdGVyPXoueG1sRWxlbWVudHNGaWx0ZXJ8fFtdO3ouanNvblByb3BlcnRpZXNGaWx0ZXI9ei5qc29uUHJvcGVydGllc0ZpbHRlcnx8W107aWYoei5rZWVwQ0RhdGE9PT11bmRlZmluZWQpe3oua2VlcENEYXRhPWZhbHNlO319dmFyIGg9e0VMRU1FTlRfTk9ERToxLFRFWFRfTk9ERTozLENEQVRBX1NFQ1RJT05fTk9ERTo0LENPTU1FTlRfTk9ERTo4LERPQ1VNRU5UX05PREU6OX07ZnVuY3Rpb24gdSgpe31mdW5jdGlvbiB4KEIpe3ZhciBDPUIubG9jYWxOYW1lO2lmKEM9PW51bGwpe0M9Qi5iYXNlTmFtZTt9aWYoQz09bnVsbHx8Qz09XCJcIil7Qz1CLm5vZGVOYW1lO31yZXR1cm4gQzt9ZnVuY3Rpb24gcihCKXtyZXR1cm4gQi5wcmVmaXg7fWZ1bmN0aW9uIHMoQil7aWYodHlwZW9mKEIpPT1cInN0cmluZ1wiKXtyZXR1cm4gQi5yZXBsYWNlKC8mL2csXCImYW1wO1wiKS5yZXBsYWNlKC88L2csXCImbHQ7XCIpLnJlcGxhY2UoLz4vZyxcIiZndDtcIikucmVwbGFjZSgvXCIvZyxcIiZxdW90O1wiKS5yZXBsYWNlKC8nL2csXCImYXBvcztcIik7fWVsc2V7cmV0dXJuIEI7fX1mdW5jdGlvbiBrKEIpe3JldHVybiBCLnJlcGxhY2UoLyZsdDsvZyxcIjxcIikucmVwbGFjZSgvJmd0Oy9nLFwiPlwiKS5yZXBsYWNlKC8mcXVvdDsvZywnXCInKS5yZXBsYWNlKC8mYXBvczsvZyxcIidcIikucmVwbGFjZSgvJmFtcDsvZyxcIiZcIik7fWZ1bmN0aW9uIHcoQyxGLEQsRSl7dmFyIEI9MDtmb3IoO0I8Qy5sZW5ndGg7QisrKXt2YXIgRz1DW0JdO2lmKHR5cGVvZiBHPT09XCJzdHJpbmdcIil7aWYoRz09RSl7YnJlYWs7fX1lbHNle2lmKEcgaW5zdGFuY2VvZiBSZWdFeHApe2lmKEcudGVzdChFKSl7YnJlYWs7fX1lbHNle2lmKHR5cGVvZiBHPT09XCJmdW5jdGlvblwiKXtpZihHKEYsRCxFKSl7YnJlYWs7fX19fX1yZXR1cm4gQiE9Qy5sZW5ndGg7fWZ1bmN0aW9uIG4oRCxCLEMpe3N3aXRjaCh6LmFycmF5QWNjZXNzRm9ybSl7Y2FzZVwicHJvcGVydHlcIjppZighKERbQl0gaW5zdGFuY2VvZiBBcnJheSkpe0RbQitcIl9hc0FycmF5XCJdPVtEW0JdXTt9ZWxzZXtEW0IrXCJfYXNBcnJheVwiXT1EW0JdO31icmVhazt9aWYoIShEW0JdIGluc3RhbmNlb2YgQXJyYXkpJiZ6LmFycmF5QWNjZXNzRm9ybVBhdGhzLmxlbmd0aD4wKXtpZih3KHouYXJyYXlBY2Nlc3NGb3JtUGF0aHMsRCxCLEMpKXtEW0JdPVtEW0JdXTt9fX1mdW5jdGlvbiBhKEcpe3ZhciBFPUcuc3BsaXQoL1stVDorWl0vZyk7dmFyIEY9bmV3IERhdGUoRVswXSxFWzFdLTEsRVsyXSk7dmFyIEQ9RVs1XS5zcGxpdChcIi5cIik7Ri5zZXRIb3VycyhFWzNdLEVbNF0sRFswXSk7aWYoRC5sZW5ndGg+MSl7Ri5zZXRNaWxsaXNlY29uZHMoRFsxXSk7fWlmKEVbNl0mJkVbN10pe3ZhciBDPUVbNl0qNjArTnVtYmVyKEVbN10pO3ZhciBCPS9cXGRcXGQtXFxkXFxkOlxcZFxcZCQvLnRlc3QoRyk/XCItXCI6XCIrXCI7Qz0wKyhCPT1cIi1cIj8tMSpDOkMpO0Yuc2V0TWludXRlcyhGLmdldE1pbnV0ZXMoKS1DLUYuZ2V0VGltZXpvbmVPZmZzZXQoKSk7fWVsc2V7aWYoRy5pbmRleE9mKFwiWlwiLEcubGVuZ3RoLTEpIT09LTEpe0Y9bmV3IERhdGUoRGF0ZS5VVEMoRi5nZXRGdWxsWWVhcigpLEYuZ2V0TW9udGgoKSxGLmdldERhdGUoKSxGLmdldEhvdXJzKCksRi5nZXRNaW51dGVzKCksRi5nZXRTZWNvbmRzKCksRi5nZXRNaWxsaXNlY29uZHMoKSkpO319cmV0dXJuIEY7fWZ1bmN0aW9uIHEoRCxCLEMpe2lmKHouZGF0ZXRpbWVBY2Nlc3NGb3JtUGF0aHMubGVuZ3RoPjApe3ZhciBFPUMuc3BsaXQoXCIuI1wiKVswXTtpZih3KHouZGF0ZXRpbWVBY2Nlc3NGb3JtUGF0aHMsRCxCLEUpKXtyZXR1cm4gYShEKTt9ZWxzZXtyZXR1cm4gRDt9fWVsc2V7cmV0dXJuIEQ7fX1mdW5jdGlvbiBiKEUsQyxCLEQpe2lmKEM9PWguRUxFTUVOVF9OT0RFJiZ6LnhtbEVsZW1lbnRzRmlsdGVyLmxlbmd0aD4wKXtyZXR1cm4gdyh6LnhtbEVsZW1lbnRzRmlsdGVyLEUsQixEKTt9ZWxzZXtyZXR1cm4gdHJ1ZTt9fWZ1bmN0aW9uIEEoRCxKKXtpZihELm5vZGVUeXBlPT1oLkRPQ1VNRU5UX05PREUpe3ZhciBLPW5ldyBPYmplY3Q7dmFyIEI9RC5jaGlsZE5vZGVzO2Zvcih2YXIgTD0wO0w8Qi5sZW5ndGg7TCsrKXt2YXIgQz1CLml0ZW0oTCk7aWYoQy5ub2RlVHlwZT09aC5FTEVNRU5UX05PREUpe3ZhciBJPXgoQyk7S1tJXT1BKEMsSSk7fX1yZXR1cm4gSzt9ZWxzZXtpZihELm5vZGVUeXBlPT1oLkVMRU1FTlRfTk9ERSl7dmFyIEs9bmV3IE9iamVjdDtLLl9fY250PTA7dmFyIEI9RC5jaGlsZE5vZGVzO2Zvcih2YXIgTD0wO0w8Qi5sZW5ndGg7TCsrKXt2YXIgQz1CLml0ZW0oTCk7dmFyIEk9eChDKTtpZihDLm5vZGVUeXBlIT1oLkNPTU1FTlRfTk9ERSl7dmFyIEg9SitcIi5cIitJO2lmKGIoSyxDLm5vZGVUeXBlLEksSCkpe0suX19jbnQrKztpZihLW0ldPT1udWxsKXtLW0ldPUEoQyxIKTtuKEssSSxIKTt9ZWxzZXtpZihLW0ldIT1udWxsKXtpZighKEtbSV0gaW5zdGFuY2VvZiBBcnJheSkpe0tbSV09W0tbSV1dO24oSyxJLEgpO319KEtbSV0pW0tbSV0ubGVuZ3RoXT1BKEMsSCk7fX19fWZvcih2YXIgRT0wO0U8RC5hdHRyaWJ1dGVzLmxlbmd0aDtFKyspe3ZhciBGPUQuYXR0cmlidXRlcy5pdGVtKEUpO0suX19jbnQrKztLW3ouYXR0cmlidXRlUHJlZml4K0YubmFtZV09Ri52YWx1ZTt9dmFyIEc9cihEKTtpZihHIT1udWxsJiZHIT1cIlwiKXtLLl9fY250Kys7Sy5fX3ByZWZpeD1HO31pZihLW1wiI3RleHRcIl0hPW51bGwpe0suX190ZXh0PUtbXCIjdGV4dFwiXTtpZihLLl9fdGV4dCBpbnN0YW5jZW9mIEFycmF5KXtLLl9fdGV4dD1LLl9fdGV4dC5qb2luKFwiXFxuXCIpO31pZih6LnN0cmlwV2hpdGVzcGFjZXMpe0suX190ZXh0PUsuX190ZXh0LnRyaW0oKTt9ZGVsZXRlIEtbXCIjdGV4dFwiXTtpZih6LmFycmF5QWNjZXNzRm9ybT09XCJwcm9wZXJ0eVwiKXtkZWxldGUgS1tcIiN0ZXh0X2FzQXJyYXlcIl07fUsuX190ZXh0PXEoSy5fX3RleHQsSSxKK1wiLlwiK0kpO31pZihLW1wiI2NkYXRhLXNlY3Rpb25cIl0hPW51bGwpe0suX19jZGF0YT1LW1wiI2NkYXRhLXNlY3Rpb25cIl07ZGVsZXRlIEtbXCIjY2RhdGEtc2VjdGlvblwiXTtpZih6LmFycmF5QWNjZXNzRm9ybT09XCJwcm9wZXJ0eVwiKXtkZWxldGUgS1tcIiNjZGF0YS1zZWN0aW9uX2FzQXJyYXlcIl07fX1pZihLLl9fY250PT0wJiZ6LmVtcHR5Tm9kZUZvcm09PVwidGV4dFwiKXtLPVwiXCI7fWVsc2V7aWYoSy5fX2NudD09MSYmSy5fX3RleHQhPW51bGwpe0s9Sy5fX3RleHQ7fWVsc2V7aWYoSy5fX2NudD09MSYmSy5fX2NkYXRhIT1udWxsJiYhei5rZWVwQ0RhdGEpe0s9Sy5fX2NkYXRhO31lbHNle2lmKEsuX19jbnQ+MSYmSy5fX3RleHQhPW51bGwmJnouc2tpcEVtcHR5VGV4dE5vZGVzRm9yT2JqKXtpZigoei5zdHJpcFdoaXRlc3BhY2VzJiZLLl9fdGV4dD09XCJcIil8fChLLl9fdGV4dC50cmltKCk9PVwiXCIpKXtkZWxldGUgSy5fX3RleHQ7fX19fX1kZWxldGUgSy5fX2NudDtpZih6LmVuYWJsZVRvU3RyaW5nRnVuYyYmKEsuX190ZXh0IT1udWxsfHxLLl9fY2RhdGEhPW51bGwpKXtLLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMuX190ZXh0IT1udWxsP3RoaXMuX190ZXh0OlwiXCIpKyh0aGlzLl9fY2RhdGEhPW51bGw/dGhpcy5fX2NkYXRhOlwiXCIpO307fXJldHVybiBLO31lbHNle2lmKEQubm9kZVR5cGU9PWguVEVYVF9OT0RFfHxELm5vZGVUeXBlPT1oLkNEQVRBX1NFQ1RJT05fTk9ERSl7cmV0dXJuIEQubm9kZVZhbHVlO319fX1mdW5jdGlvbiBvKEksRixILEMpe3ZhciBFPVwiPFwiKygoSSE9bnVsbCYmSS5fX3ByZWZpeCE9bnVsbCk/KEkuX19wcmVmaXgrXCI6XCIpOlwiXCIpK0Y7aWYoSCE9bnVsbCl7Zm9yKHZhciBHPTA7RzxILmxlbmd0aDtHKyspe3ZhciBEPUhbR107dmFyIEI9SVtEXTtpZih6LmVzY2FwZU1vZGUpe0I9cyhCKTt9RSs9XCIgXCIrRC5zdWJzdHIoei5hdHRyaWJ1dGVQcmVmaXgubGVuZ3RoKStcIj1cIjtpZih6LnVzZURvdWJsZVF1b3Rlcyl7RSs9J1wiJytCKydcIic7fWVsc2V7RSs9XCInXCIrQitcIidcIjt9fX1pZighQyl7RSs9XCI+XCI7fWVsc2V7RSs9XCIvPlwiO31yZXR1cm4gRTt9ZnVuY3Rpb24gaihDLEIpe3JldHVyblwiPC9cIisoQy5fX3ByZWZpeCE9bnVsbD8oQy5fX3ByZWZpeCtcIjpcIik6XCJcIikrQitcIj5cIjt9ZnVuY3Rpb24gdihDLEIpe3JldHVybiBDLmluZGV4T2YoQixDLmxlbmd0aC1CLmxlbmd0aCkhPT0tMTt9ZnVuY3Rpb24geShDLEIpe2lmKCh6LmFycmF5QWNjZXNzRm9ybT09XCJwcm9wZXJ0eVwiJiZ2KEIudG9TdHJpbmcoKSwoXCJfYXNBcnJheVwiKSkpfHxCLnRvU3RyaW5nKCkuaW5kZXhPZih6LmF0dHJpYnV0ZVByZWZpeCk9PTB8fEIudG9TdHJpbmcoKS5pbmRleE9mKFwiX19cIik9PTB8fChDW0JdIGluc3RhbmNlb2YgRnVuY3Rpb24pKXtyZXR1cm4gdHJ1ZTt9ZWxzZXtyZXR1cm4gZmFsc2U7fX1mdW5jdGlvbiBtKEQpe3ZhciBDPTA7aWYoRCBpbnN0YW5jZW9mIE9iamVjdCl7Zm9yKHZhciBCIGluIEQpe2lmKHkoRCxCKSl7Y29udGludWU7fUMrKzt9fXJldHVybiBDO31mdW5jdGlvbiBsKEQsQixDKXtyZXR1cm4gei5qc29uUHJvcGVydGllc0ZpbHRlci5sZW5ndGg9PTB8fEM9PVwiXCJ8fHcoei5qc29uUHJvcGVydGllc0ZpbHRlcixELEIsQyk7fWZ1bmN0aW9uIGMoRCl7dmFyIEM9W107aWYoRCBpbnN0YW5jZW9mIE9iamVjdCl7Zm9yKHZhciBCIGluIEQpe2lmKEIudG9TdHJpbmcoKS5pbmRleE9mKFwiX19cIik9PS0xJiZCLnRvU3RyaW5nKCkuaW5kZXhPZih6LmF0dHJpYnV0ZVByZWZpeCk9PTApe0MucHVzaChCKTt9fX1yZXR1cm4gQzt9ZnVuY3Rpb24gZyhDKXt2YXIgQj1cIlwiO2lmKEMuX19jZGF0YSE9bnVsbCl7Qis9XCI8IVtDREFUQVtcIitDLl9fY2RhdGErXCJdXT5cIjt9aWYoQy5fX3RleHQhPW51bGwpe2lmKHouZXNjYXBlTW9kZSl7Qis9cyhDLl9fdGV4dCk7fWVsc2V7Qis9Qy5fX3RleHQ7fX1yZXR1cm4gQjt9ZnVuY3Rpb24gZChDKXt2YXIgQj1cIlwiO2lmKEMgaW5zdGFuY2VvZiBPYmplY3Qpe0IrPWcoQyk7fWVsc2V7aWYoQyE9bnVsbCl7aWYoei5lc2NhcGVNb2RlKXtCKz1zKEMpO31lbHNle0IrPUM7fX19cmV0dXJuIEI7fWZ1bmN0aW9uIHAoQyxCKXtpZihDPT09XCJcIil7cmV0dXJuIEI7fWVsc2V7cmV0dXJuIEMrXCIuXCIrQjt9fWZ1bmN0aW9uIGYoRCxHLEYsRSl7dmFyIEI9XCJcIjtpZihELmxlbmd0aD09MCl7Qis9byhELEcsRix0cnVlKTt9ZWxzZXtmb3IodmFyIEM9MDtDPEQubGVuZ3RoO0MrKyl7Qis9byhEW0NdLEcsYyhEW0NdKSxmYWxzZSk7Qis9ZShEW0NdLHAoRSxHKSk7Qis9aihEW0NdLEcpO319cmV0dXJuIEI7fWZ1bmN0aW9uIGUoSSxIKXt2YXIgQj1cIlwiO3ZhciBGPW0oSSk7aWYoRj4wKXtmb3IodmFyIEUgaW4gSSl7aWYoeShJLEUpfHwoSCE9XCJcIiYmIWwoSSxFLHAoSCxFKSkpKXtjb250aW51ZTt9dmFyIEQ9SVtFXTt2YXIgRz1jKEQpO2lmKEQ9PW51bGx8fEQ9PXVuZGVmaW5lZCl7Qis9byhELEUsRyx0cnVlKTt9ZWxzZXtpZihEIGluc3RhbmNlb2YgT2JqZWN0KXtpZihEIGluc3RhbmNlb2YgQXJyYXkpe0IrPWYoRCxFLEcsSCk7fWVsc2V7aWYoRCBpbnN0YW5jZW9mIERhdGUpe0IrPW8oRCxFLEcsZmFsc2UpO0IrPUQudG9JU09TdHJpbmcoKTtCKz1qKEQsRSk7fWVsc2V7dmFyIEM9bShEKTtpZihDPjB8fEQuX190ZXh0IT1udWxsfHxELl9fY2RhdGEhPW51bGwpe0IrPW8oRCxFLEcsZmFsc2UpO0IrPWUoRCxwKEgsRSkpO0IrPWooRCxFKTt9ZWxzZXtCKz1vKEQsRSxHLHRydWUpO319fX1lbHNle0IrPW8oRCxFLEcsZmFsc2UpO0IrPWQoRCk7Qis9aihELEUpO319fX1CKz1kKEkpO3JldHVybiBCO310aGlzLnBhcnNlWG1sU3RyaW5nPWZ1bmN0aW9uKEQpe3ZhciBGPXdpbmRvdy5BY3RpdmVYT2JqZWN0fHxcIkFjdGl2ZVhPYmplY3RcIiBpbiB3aW5kb3c7aWYoRD09PXVuZGVmaW5lZCl7cmV0dXJuIG51bGw7fXZhciBFO2lmKHdpbmRvdy5ET01QYXJzZXIpe3ZhciBHPW5ldyB3aW5kb3cuRE9NUGFyc2VyKCk7dmFyIEI9bnVsbDtpZighRil7dHJ5e0I9Ry5wYXJzZUZyb21TdHJpbmcoXCJJTlZBTElEXCIsXCJ0ZXh0L3htbFwiKS5nZXRFbGVtZW50c0J5VGFnTmFtZShcInBhcnNlcmVycm9yXCIpWzBdLm5hbWVzcGFjZVVSSTt9Y2F0Y2goQyl7Qj1udWxsO319dHJ5e0U9Ry5wYXJzZUZyb21TdHJpbmcoRCxcInRleHQveG1sXCIpO2lmKEIhPW51bGwmJkUuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhCLFwicGFyc2VyZXJyb3JcIikubGVuZ3RoPjApe0U9bnVsbDt9fWNhdGNoKEMpe0U9bnVsbDt9fWVsc2V7aWYoRC5pbmRleE9mKFwiPD9cIik9PTApe0Q9RC5zdWJzdHIoRC5pbmRleE9mKFwiPz5cIikrMik7fUU9bmV3IEFjdGl2ZVhPYmplY3QoXCJNaWNyb3NvZnQuWE1MRE9NXCIpO0UuYXN5bmM9XCJmYWxzZVwiO0UubG9hZFhNTChEKTt9cmV0dXJuIEU7fTt0aGlzLmFzQXJyYXk9ZnVuY3Rpb24oQil7aWYoQj09PXVuZGVmaW5lZHx8Qj09bnVsbCl7cmV0dXJuW107fWVsc2V7aWYoQiBpbnN0YW5jZW9mIEFycmF5KXtyZXR1cm4gQjt9ZWxzZXtyZXR1cm5bQl07fX19O3RoaXMudG9YbWxEYXRlVGltZT1mdW5jdGlvbihCKXtpZihCIGluc3RhbmNlb2YgRGF0ZSl7cmV0dXJuIEIudG9JU09TdHJpbmcoKTt9ZWxzZXtpZih0eXBlb2YoQik9PT1cIm51bWJlclwiKXtyZXR1cm4gbmV3IERhdGUoQikudG9JU09TdHJpbmcoKTt9ZWxzZXtyZXR1cm4gbnVsbDt9fX07dGhpcy5hc0RhdGVUaW1lPWZ1bmN0aW9uKEIpe2lmKHR5cGVvZihCKT09XCJzdHJpbmdcIil7cmV0dXJuIGEoQik7fWVsc2V7cmV0dXJuIEI7fX07dGhpcy54bWwyanNvbj1mdW5jdGlvbihCKXtyZXR1cm4gQShCKTt9O3RoaXMueG1sX3N0cjJqc29uPWZ1bmN0aW9uKEIpe3ZhciBDPXRoaXMucGFyc2VYbWxTdHJpbmcoQik7aWYoQyE9bnVsbCl7cmV0dXJuIHRoaXMueG1sMmpzb24oQyk7fWVsc2V7cmV0dXJuIG51bGw7fX07dGhpcy5qc29uMnhtbF9zdHI9ZnVuY3Rpb24oQil7cmV0dXJuIGUoQixcIlwiKTt9O3RoaXMuanNvbjJ4bWw9ZnVuY3Rpb24oQyl7dmFyIEI9dGhpcy5qc29uMnhtbF9zdHIoQyk7cmV0dXJuIHRoaXMucGFyc2VYbWxTdHJpbmcoQik7fTt0aGlzLmdldFZlcnNpb249ZnVuY3Rpb24oKXtyZXR1cm4gdDt9O307fSkpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2pzL3ZlbmRvci94bWwyanNvbi5taW4uanMiLCIvL2h0dHBzOi8vZ2l0aHViLmNvbS9qZXJlbXlmYS95YW1sLmpzL1xuKGZ1bmN0aW9uIGUodCxuLGkpe2Z1bmN0aW9uIHIobCx1KXtpZighbltsXSl7aWYoIXRbbF0pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobCwhMCk7aWYocylyZXR1cm4gcyhsLCEwKTt2YXIgbz1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK2wrXCInXCIpO3Rocm93IG8uY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixvfXZhciBmPW5bbF09e2V4cG9ydHM6e319O3RbbF1bMF0uY2FsbChmLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtsXVsxXVtlXTtyZXR1cm4gcihuP246ZSl9LGYsZi5leHBvcnRzLGUsdCxuLGkpfXJldHVybiBuW2xdLmV4cG9ydHN9dmFyIHM9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIGw9MDtsPGkubGVuZ3RoO2wrKylyKGlbbF0pO3JldHVybiByfSkoezE6W2Z1bmN0aW9uKGUsdCxuKXt2YXIgaSxyLHM7cz1lKFwiLi9VdGlsc1wiKTtyPWUoXCIuL0lubGluZVwiKTtpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe31lLmluZGVudGF0aW9uPTQ7ZS5wcm90b3R5cGUuZHVtcD1mdW5jdGlvbihlLHQsbixpLGwpe3ZhciB1LGEsbyxmLGMsaCxwO2lmKHQ9PW51bGwpe3Q9MH1pZihuPT1udWxsKXtuPTB9aWYoaT09bnVsbCl7aT1mYWxzZX1pZihsPT1udWxsKXtsPW51bGx9Zj1cIlwiO2M9bj9zLnN0clJlcGVhdChcIiBcIixuKTpcIlwiO2lmKHQ8PTB8fHR5cGVvZiBlIT09XCJvYmplY3RcInx8ZSBpbnN0YW5jZW9mIERhdGV8fHMuaXNFbXB0eShlKSl7Zis9YytyLmR1bXAoZSxpLGwpfWVsc2V7aWYoZSBpbnN0YW5jZW9mIEFycmF5KXtmb3IodT0wLG89ZS5sZW5ndGg7dTxvO3UrKyl7aD1lW3VdO3A9dC0xPD0wfHx0eXBlb2YgaCE9PVwib2JqZWN0XCJ8fHMuaXNFbXB0eShoKTtmKz1jK1wiLVwiKyhwP1wiIFwiOlwiXFxuXCIpK3RoaXMuZHVtcChoLHQtMSxwPzA6bit0aGlzLmluZGVudGF0aW9uLGksbCkrKHA/XCJcXG5cIjpcIlwiKX19ZWxzZXtmb3IoYSBpbiBlKXtoPWVbYV07cD10LTE8PTB8fHR5cGVvZiBoIT09XCJvYmplY3RcInx8cy5pc0VtcHR5KGgpO2YrPWMrci5kdW1wKGEsaSxsKStcIjpcIisocD9cIiBcIjpcIlxcblwiKSt0aGlzLmR1bXAoaCx0LTEscD8wOm4rdGhpcy5pbmRlbnRhdGlvbixpLGwpKyhwP1wiXFxuXCI6XCJcIil9fX1yZXR1cm4gZn07cmV0dXJuIGV9KCk7dC5leHBvcnRzPWl9LHtcIi4vSW5saW5lXCI6NixcIi4vVXRpbHNcIjoxMH1dLDI6W2Z1bmN0aW9uKGUsdCxuKXt2YXIgaSxyO3I9ZShcIi4vUGF0dGVyblwiKTtpPWZ1bmN0aW9uKCl7dmFyIGU7ZnVuY3Rpb24gdCgpe310LkxJU1RfRVNDQVBFRVM9W1wiXFxcXFwiLFwiXFxcXFxcXFxcIiwnXFxcXFwiJywnXCInLFwiXFwwXCIsXCJcdTAwMDFcIixcIlx1MDAwMlwiLFwiXHUwMDAzXCIsXCJcdTAwMDRcIixcIlx1MDAwNVwiLFwiXHUwMDA2XCIsXCJcdTAwMDdcIixcIlxcYlwiLFwiXFx0XCIsXCJcXG5cIixcIlxcdlwiLFwiXFxmXCIsXCJcXHJcIixcIlx1MDAwZVwiLFwiXHUwMDBmXCIsXCJcdTAwMTBcIixcIlx1MDAxMVwiLFwiXHUwMDEyXCIsXCJcdTAwMTNcIixcIlx1MDAxNFwiLFwiXHUwMDE1XCIsXCJcdTAwMTZcIixcIlx1MDAxN1wiLFwiXHUwMDE4XCIsXCJcdTAwMTlcIixcIlx1MDAxYVwiLFwiXHUwMDFiXCIsXCJcdTAwMWNcIixcIlx1MDAxZFwiLFwiXHUwMDFlXCIsXCJcdTAwMWZcIiwoZT1TdHJpbmcuZnJvbUNoYXJDb2RlKSgxMzMpLGUoMTYwKSxlKDgyMzIpLGUoODIzMyldO3QuTElTVF9FU0NBUEVEPVtcIlxcXFxcXFxcXCIsJ1xcXFxcIicsJ1xcXFxcIicsJ1xcXFxcIicsXCJcXFxcMFwiLFwiXFxcXHgwMVwiLFwiXFxcXHgwMlwiLFwiXFxcXHgwM1wiLFwiXFxcXHgwNFwiLFwiXFxcXHgwNVwiLFwiXFxcXHgwNlwiLFwiXFxcXGFcIixcIlxcXFxiXCIsXCJcXFxcdFwiLFwiXFxcXG5cIixcIlxcXFx2XCIsXCJcXFxcZlwiLFwiXFxcXHJcIixcIlxcXFx4MGVcIixcIlxcXFx4MGZcIixcIlxcXFx4MTBcIixcIlxcXFx4MTFcIixcIlxcXFx4MTJcIixcIlxcXFx4MTNcIixcIlxcXFx4MTRcIixcIlxcXFx4MTVcIixcIlxcXFx4MTZcIixcIlxcXFx4MTdcIixcIlxcXFx4MThcIixcIlxcXFx4MTlcIixcIlxcXFx4MWFcIixcIlxcXFxlXCIsXCJcXFxceDFjXCIsXCJcXFxceDFkXCIsXCJcXFxceDFlXCIsXCJcXFxceDFmXCIsXCJcXFxcTlwiLFwiXFxcXF9cIixcIlxcXFxMXCIsXCJcXFxcUFwiXTt0Lk1BUFBJTkdfRVNDQVBFRVNfVE9fRVNDQVBFRD1mdW5jdGlvbigpe3ZhciBlLG4saSxyO2k9e307Zm9yKGU9bj0wLHI9dC5MSVNUX0VTQ0FQRUVTLmxlbmd0aDswPD1yP248cjpuPnI7ZT0wPD1yPysrbjotLW4pe2lbdC5MSVNUX0VTQ0FQRUVTW2VdXT10LkxJU1RfRVNDQVBFRFtlXX1yZXR1cm4gaX0oKTt0LlBBVFRFUk5fQ0hBUkFDVEVSU19UT19FU0NBUEU9bmV3IHIoXCJbXFxcXHgwMC1cXFxceDFmXXzDgsKFfMOCIHzDosKAwqh8w6LCgMKpXCIpO3QuUEFUVEVSTl9NQVBQSU5HX0VTQ0FQRUVTPW5ldyByKHQuTElTVF9FU0NBUEVFUy5qb2luKFwifFwiKS5zcGxpdChcIlxcXFxcIikuam9pbihcIlxcXFxcXFxcXCIpKTt0LlBBVFRFUk5fU0lOR0xFX1FVT1RJTkc9bmV3IHIoXCJbXFxcXHMnXFxcIjp7fVtcXFxcXSwmKiM/XXxeWy0/fDw+PSElQGBdXCIpO3QucmVxdWlyZXNEb3VibGVRdW90aW5nPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLlBBVFRFUk5fQ0hBUkFDVEVSU19UT19FU0NBUEUudGVzdChlKX07dC5lc2NhcGVXaXRoRG91YmxlUXVvdGVzPWZ1bmN0aW9uKGUpe3ZhciB0O3Q9dGhpcy5QQVRURVJOX01BUFBJTkdfRVNDQVBFRVMucmVwbGFjZShlLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5NQVBQSU5HX0VTQ0FQRUVTX1RPX0VTQ0FQRURbdF19fSh0aGlzKSk7cmV0dXJuJ1wiJyt0KydcIid9O3QucmVxdWlyZXNTaW5nbGVRdW90aW5nPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLlBBVFRFUk5fU0lOR0xFX1FVT1RJTkcudGVzdChlKX07dC5lc2NhcGVXaXRoU2luZ2xlUXVvdGVzPWZ1bmN0aW9uKGUpe3JldHVyblwiJ1wiK2UucmVwbGFjZSgvJy9nLFwiJydcIikrXCInXCJ9O3JldHVybiB0fSgpO3QuZXhwb3J0cz1pfSx7XCIuL1BhdHRlcm5cIjo4fV0sMzpbZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHI9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gdCl7aWYocy5jYWxsKHQsbikpZVtuXT10W25dfWZ1bmN0aW9uIGkoKXt0aGlzLmNvbnN0cnVjdG9yPWV9aS5wcm90b3R5cGU9dC5wcm90b3R5cGU7ZS5wcm90b3R5cGU9bmV3IGk7ZS5fX3N1cGVyX189dC5wcm90b3R5cGU7cmV0dXJuIGV9LHM9e30uaGFzT3duUHJvcGVydHk7aT1mdW5jdGlvbihlKXtyKHQsZSk7ZnVuY3Rpb24gdChlLHQsbil7dGhpcy5tZXNzYWdlPWU7dGhpcy5wYXJzZWRMaW5lPXQ7dGhpcy5zbmlwcGV0PW59dC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtpZih0aGlzLnBhcnNlZExpbmUhPW51bGwmJnRoaXMuc25pcHBldCE9bnVsbCl7cmV0dXJuXCI8RHVtcEV4Y2VwdGlvbj4gXCIrdGhpcy5tZXNzYWdlK1wiIChsaW5lIFwiK3RoaXMucGFyc2VkTGluZStcIjogJ1wiK3RoaXMuc25pcHBldCtcIicpXCJ9ZWxzZXtyZXR1cm5cIjxEdW1wRXhjZXB0aW9uPiBcIit0aGlzLm1lc3NhZ2V9fTtyZXR1cm4gdH0oRXJyb3IpO3QuZXhwb3J0cz1pfSx7fV0sNDpbZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHI9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gdCl7aWYocy5jYWxsKHQsbikpZVtuXT10W25dfWZ1bmN0aW9uIGkoKXt0aGlzLmNvbnN0cnVjdG9yPWV9aS5wcm90b3R5cGU9dC5wcm90b3R5cGU7ZS5wcm90b3R5cGU9bmV3IGk7ZS5fX3N1cGVyX189dC5wcm90b3R5cGU7cmV0dXJuIGV9LHM9e30uaGFzT3duUHJvcGVydHk7aT1mdW5jdGlvbihlKXtyKHQsZSk7ZnVuY3Rpb24gdChlLHQsbil7dGhpcy5tZXNzYWdlPWU7dGhpcy5wYXJzZWRMaW5lPXQ7dGhpcy5zbmlwcGV0PW59dC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtpZih0aGlzLnBhcnNlZExpbmUhPW51bGwmJnRoaXMuc25pcHBldCE9bnVsbCl7cmV0dXJuXCI8UGFyc2VFeGNlcHRpb24+IFwiK3RoaXMubWVzc2FnZStcIiAobGluZSBcIit0aGlzLnBhcnNlZExpbmUrXCI6ICdcIit0aGlzLnNuaXBwZXQrXCInKVwifWVsc2V7cmV0dXJuXCI8UGFyc2VFeGNlcHRpb24+IFwiK3RoaXMubWVzc2FnZX19O3JldHVybiB0fShFcnJvcik7dC5leHBvcnRzPWl9LHt9XSw1OltmdW5jdGlvbihlLHQsbil7dmFyIGkscj1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KXtpZihzLmNhbGwodCxuKSllW25dPXRbbl19ZnVuY3Rpb24gaSgpe3RoaXMuY29uc3RydWN0b3I9ZX1pLnByb3RvdHlwZT10LnByb3RvdHlwZTtlLnByb3RvdHlwZT1uZXcgaTtlLl9fc3VwZXJfXz10LnByb3RvdHlwZTtyZXR1cm4gZX0scz17fS5oYXNPd25Qcm9wZXJ0eTtpPWZ1bmN0aW9uKGUpe3IodCxlKTtmdW5jdGlvbiB0KGUsdCxuKXt0aGlzLm1lc3NhZ2U9ZTt0aGlzLnBhcnNlZExpbmU9dDt0aGlzLnNuaXBwZXQ9bn10LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe2lmKHRoaXMucGFyc2VkTGluZSE9bnVsbCYmdGhpcy5zbmlwcGV0IT1udWxsKXtyZXR1cm5cIjxQYXJzZU1vcmU+IFwiK3RoaXMubWVzc2FnZStcIiAobGluZSBcIit0aGlzLnBhcnNlZExpbmUrXCI6ICdcIit0aGlzLnNuaXBwZXQrXCInKVwifWVsc2V7cmV0dXJuXCI8UGFyc2VNb3JlPiBcIit0aGlzLm1lc3NhZ2V9fTtyZXR1cm4gdH0oRXJyb3IpO3QuZXhwb3J0cz1pfSx7fV0sNjpbZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHIscyxsLHUsYSxvLGYsYz1bXS5pbmRleE9mfHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxuPXRoaXMubGVuZ3RoO3Q8bjt0Kyspe2lmKHQgaW4gdGhpcyYmdGhpc1t0XT09PWUpcmV0dXJuIHR9cmV0dXJuLTF9O2E9ZShcIi4vUGF0dGVyblwiKTtvPWUoXCIuL1VuZXNjYXBlclwiKTtyPWUoXCIuL0VzY2FwZXJcIik7Zj1lKFwiLi9VdGlsc1wiKTtsPWUoXCIuL0V4Y2VwdGlvbi9QYXJzZUV4Y2VwdGlvblwiKTt1PWUoXCIuL0V4Y2VwdGlvbi9QYXJzZU1vcmVcIik7aT1lKFwiLi9FeGNlcHRpb24vRHVtcEV4Y2VwdGlvblwiKTtzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe31lLlJFR0VYX1FVT1RFRF9TVFJJTkc9XCIoPzpcXFwiKD86W15cXFwiXFxcXFxcXFxdKig/OlxcXFxcXFxcLlteXFxcIlxcXFxcXFxcXSopKilcXFwifCcoPzpbXiddKig/OicnW14nXSopKiknKVwiO2UuUEFUVEVSTl9UUkFJTElOR19DT01NRU5UUz1uZXcgYShcIl5cXFxccyojLiokXCIpO2UuUEFUVEVSTl9RVU9URURfU0NBTEFSPW5ldyBhKFwiXlwiK2UuUkVHRVhfUVVPVEVEX1NUUklORyk7ZS5QQVRURVJOX1RIT1VTQU5EX05VTUVSSUNfU0NBTEFSPW5ldyBhKFwiXigtfFxcXFwrKT9bMC05LF0rKFxcXFwuWzAtOV0rKT8kXCIpO2UuUEFUVEVSTl9TQ0FMQVJfQllfREVMSU1JVEVSUz17fTtlLnNldHRpbmdzPXt9O2UuY29uZmlndXJlPWZ1bmN0aW9uKGUsdCl7aWYoZT09bnVsbCl7ZT1udWxsfWlmKHQ9PW51bGwpe3Q9bnVsbH10aGlzLnNldHRpbmdzLmV4Y2VwdGlvbk9uSW52YWxpZFR5cGU9ZTt0aGlzLnNldHRpbmdzLm9iamVjdERlY29kZXI9dH07ZS5wYXJzZT1mdW5jdGlvbihlLHQsbil7dmFyIGkscjtpZih0PT1udWxsKXt0PWZhbHNlfWlmKG49PW51bGwpe249bnVsbH10aGlzLnNldHRpbmdzLmV4Y2VwdGlvbk9uSW52YWxpZFR5cGU9dDt0aGlzLnNldHRpbmdzLm9iamVjdERlY29kZXI9bjtpZihlPT1udWxsKXtyZXR1cm5cIlwifWU9Zi50cmltKGUpO2lmKDA9PT1lLmxlbmd0aCl7cmV0dXJuXCJcIn1pPXtleGNlcHRpb25PbkludmFsaWRUeXBlOnQsb2JqZWN0RGVjb2RlcjpuLGk6MH07c3dpdGNoKGUuY2hhckF0KDApKXtjYXNlXCJbXCI6cj10aGlzLnBhcnNlU2VxdWVuY2UoZSxpKTsrK2kuaTticmVhaztjYXNlXCJ7XCI6cj10aGlzLnBhcnNlTWFwcGluZyhlLGkpOysraS5pO2JyZWFrO2RlZmF1bHQ6cj10aGlzLnBhcnNlU2NhbGFyKGUsbnVsbCxbJ1wiJyxcIidcIl0saSl9aWYodGhpcy5QQVRURVJOX1RSQUlMSU5HX0NPTU1FTlRTLnJlcGxhY2UoZS5zbGljZShpLmkpLFwiXCIpIT09XCJcIil7dGhyb3cgbmV3IGwoJ1VuZXhwZWN0ZWQgY2hhcmFjdGVycyBuZWFyIFwiJytlLnNsaWNlKGkuaSkrJ1wiLicpfXJldHVybiByfTtlLmR1bXA9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHMsbDtpZih0PT1udWxsKXt0PWZhbHNlfWlmKG49PW51bGwpe249bnVsbH1pZihlPT1udWxsKXtyZXR1cm5cIm51bGxcIn1sPXR5cGVvZiBlO2lmKGw9PT1cIm9iamVjdFwiKXtpZihlIGluc3RhbmNlb2YgRGF0ZSl7cmV0dXJuIGUudG9JU09TdHJpbmcoKX1lbHNlIGlmKG4hPW51bGwpe3M9bihlKTtpZih0eXBlb2Ygcz09PVwic3RyaW5nXCJ8fHMhPW51bGwpe3JldHVybiBzfX1yZXR1cm4gdGhpcy5kdW1wT2JqZWN0KGUpfWlmKGw9PT1cImJvb2xlYW5cIil7cmV0dXJuIGU/XCJ0cnVlXCI6XCJmYWxzZVwifWlmKGYuaXNEaWdpdHMoZSkpe3JldHVybiBsPT09XCJzdHJpbmdcIj9cIidcIitlK1wiJ1wiOlN0cmluZyhwYXJzZUludChlKSl9aWYoZi5pc051bWVyaWMoZSkpe3JldHVybiBsPT09XCJzdHJpbmdcIj9cIidcIitlK1wiJ1wiOlN0cmluZyhwYXJzZUZsb2F0KGUpKX1pZihsPT09XCJudW1iZXJcIil7cmV0dXJuIGU9PT1JbmZpbml0eT9cIi5JbmZcIjplPT09LUluZmluaXR5P1wiLS5JbmZcIjppc05hTihlKT9cIi5OYU5cIjplfWlmKHIucmVxdWlyZXNEb3VibGVRdW90aW5nKGUpKXtyZXR1cm4gci5lc2NhcGVXaXRoRG91YmxlUXVvdGVzKGUpfWlmKHIucmVxdWlyZXNTaW5nbGVRdW90aW5nKGUpKXtyZXR1cm4gci5lc2NhcGVXaXRoU2luZ2xlUXVvdGVzKGUpfWlmKFwiXCI9PT1lKXtyZXR1cm4nXCJcIid9aWYoZi5QQVRURVJOX0RBVEUudGVzdChlKSl7cmV0dXJuXCInXCIrZStcIidcIn1pZigoaT1lLnRvTG93ZXJDYXNlKCkpPT09XCJudWxsXCJ8fGk9PT1cIn5cInx8aT09PVwidHJ1ZVwifHxpPT09XCJmYWxzZVwiKXtyZXR1cm5cIidcIitlK1wiJ1wifXJldHVybiBlfTtlLmR1bXBPYmplY3Q9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHIscyxsLHU7aWYobj09bnVsbCl7bj1udWxsfWlmKGUgaW5zdGFuY2VvZiBBcnJheSl7bD1bXTtmb3IoaT0wLHM9ZS5sZW5ndGg7aTxzO2krKyl7dT1lW2ldO2wucHVzaCh0aGlzLmR1bXAodSkpfXJldHVyblwiW1wiK2wuam9pbihcIiwgXCIpK1wiXVwifWVsc2V7bD1bXTtmb3IociBpbiBlKXt1PWVbcl07bC5wdXNoKHRoaXMuZHVtcChyKStcIjogXCIrdGhpcy5kdW1wKHUpKX1yZXR1cm5cIntcIitsLmpvaW4oXCIsIFwiKStcIn1cIn19O2UucGFyc2VTY2FsYXI9ZnVuY3Rpb24oZSx0LG4saSxyKXt2YXIgcyx1LG8saCxwLEUsVCxfLEE7aWYodD09bnVsbCl7dD1udWxsfWlmKG49PW51bGwpe249WydcIicsXCInXCJdfWlmKGk9PW51bGwpe2k9bnVsbH1pZihyPT1udWxsKXtyPXRydWV9aWYoaT09bnVsbCl7aT17ZXhjZXB0aW9uT25JbnZhbGlkVHlwZTp0aGlzLnNldHRpbmdzLmV4Y2VwdGlvbk9uSW52YWxpZFR5cGUsb2JqZWN0RGVjb2Rlcjp0aGlzLnNldHRpbmdzLm9iamVjdERlY29kZXIsaTowfX1zPWkuaTtpZihFPWUuY2hhckF0KHMpLGMuY2FsbChuLEUpPj0wKXtoPXRoaXMucGFyc2VRdW90ZWRTY2FsYXIoZSxpKTtzPWkuaTtpZih0IT1udWxsKXtBPWYubHRyaW0oZS5zbGljZShzKSxcIiBcIik7aWYoIShUPUEuY2hhckF0KDApLGMuY2FsbCh0LFQpPj0wKSl7dGhyb3cgbmV3IGwoXCJVbmV4cGVjdGVkIGNoYXJhY3RlcnMgKFwiK2Uuc2xpY2UocykrXCIpLlwiKX19fWVsc2V7aWYoIXQpe2g9ZS5zbGljZShzKTtzKz1oLmxlbmd0aDtfPWguaW5kZXhPZihcIiAjXCIpO2lmKF8hPT0tMSl7aD1mLnJ0cmltKGguc2xpY2UoMCxfKSl9fWVsc2V7dT10LmpvaW4oXCJ8XCIpO3A9dGhpcy5QQVRURVJOX1NDQUxBUl9CWV9ERUxJTUlURVJTW3VdO2lmKHA9PW51bGwpe3A9bmV3IGEoXCJeKC4rPykoXCIrdStcIilcIik7dGhpcy5QQVRURVJOX1NDQUxBUl9CWV9ERUxJTUlURVJTW3VdPXB9aWYobz1wLmV4ZWMoZS5zbGljZShzKSkpe2g9b1sxXTtzKz1oLmxlbmd0aH1lbHNle3Rocm93IG5ldyBsKFwiTWFsZm9ybWVkIGlubGluZSBZQU1MIHN0cmluZyAoXCIrZStcIikuXCIpfX1pZihyKXtoPXRoaXMuZXZhbHVhdGVTY2FsYXIoaCxpKX19aS5pPXM7cmV0dXJuIGh9O2UucGFyc2VRdW90ZWRTY2FsYXI9ZnVuY3Rpb24oZSx0KXt2YXIgbixpLHI7bj10Lmk7aWYoIShpPXRoaXMuUEFUVEVSTl9RVU9URURfU0NBTEFSLmV4ZWMoZS5zbGljZShuKSkpKXt0aHJvdyBuZXcgdShcIk1hbGZvcm1lZCBpbmxpbmUgWUFNTCBzdHJpbmcgKFwiK2Uuc2xpY2UobikrXCIpLlwiKX1yPWlbMF0uc3Vic3RyKDEsaVswXS5sZW5ndGgtMik7aWYoJ1wiJz09PWUuY2hhckF0KG4pKXtyPW8udW5lc2NhcGVEb3VibGVRdW90ZWRTdHJpbmcocil9ZWxzZXtyPW8udW5lc2NhcGVTaW5nbGVRdW90ZWRTdHJpbmcocil9bis9aVswXS5sZW5ndGg7dC5pPW47cmV0dXJuIHJ9O2UucGFyc2VTZXF1ZW5jZT1mdW5jdGlvbihlLHQpe3ZhciBuLGkscixzLGwsYSxvLGY7YT1bXTtsPWUubGVuZ3RoO3I9dC5pO3IrPTE7d2hpbGUocjxsKXt0Lmk9cjtzd2l0Y2goZS5jaGFyQXQocikpe2Nhc2VcIltcIjphLnB1c2godGhpcy5wYXJzZVNlcXVlbmNlKGUsdCkpO3I9dC5pO2JyZWFrO2Nhc2VcIntcIjphLnB1c2godGhpcy5wYXJzZU1hcHBpbmcoZSx0KSk7cj10Lmk7YnJlYWs7Y2FzZVwiXVwiOnJldHVybiBhO2Nhc2VcIixcIjpjYXNlXCIgXCI6Y2FzZVwiXFxuXCI6YnJlYWs7ZGVmYXVsdDpzPShvPWUuY2hhckF0KHIpKT09PSdcIid8fG89PT1cIidcIjtmPXRoaXMucGFyc2VTY2FsYXIoZSxbXCIsXCIsXCJdXCJdLFsnXCInLFwiJ1wiXSx0KTtyPXQuaTtpZighcyYmdHlwZW9mIGY9PT1cInN0cmluZ1wiJiYoZi5pbmRleE9mKFwiOiBcIikhPT0tMXx8Zi5pbmRleE9mKFwiOlxcblwiKSE9PS0xKSl7dHJ5e2Y9dGhpcy5wYXJzZU1hcHBpbmcoXCJ7XCIrZitcIn1cIil9Y2F0Y2goaSl7bj1pfX1hLnB1c2goZik7LS1yfSsrcn10aHJvdyBuZXcgdShcIk1hbGZvcm1lZCBpbmxpbmUgWUFNTCBzdHJpbmcgXCIrZSl9O2UucGFyc2VNYXBwaW5nPWZ1bmN0aW9uKGUsdCl7dmFyIG4saSxyLHMsbCxhLG87bD17fTtzPWUubGVuZ3RoO2k9dC5pO2krPTE7YT1mYWxzZTt3aGlsZShpPHMpe3QuaT1pO3N3aXRjaChlLmNoYXJBdChpKSl7Y2FzZVwiIFwiOmNhc2VcIixcIjpjYXNlXCJcXG5cIjorK2k7dC5pPWk7YT10cnVlO2JyZWFrO2Nhc2VcIn1cIjpyZXR1cm4gbH1pZihhKXthPWZhbHNlO2NvbnRpbnVlfXI9dGhpcy5wYXJzZVNjYWxhcihlLFtcIjpcIixcIiBcIixcIlxcblwiXSxbJ1wiJyxcIidcIl0sdCxmYWxzZSk7aT10Lmk7bj1mYWxzZTt3aGlsZShpPHMpe3QuaT1pO3N3aXRjaChlLmNoYXJBdChpKSl7Y2FzZVwiW1wiOm89dGhpcy5wYXJzZVNlcXVlbmNlKGUsdCk7aT10Lmk7aWYobFtyXT09PXZvaWQgMCl7bFtyXT1vfW49dHJ1ZTticmVhaztjYXNlXCJ7XCI6bz10aGlzLnBhcnNlTWFwcGluZyhlLHQpO2k9dC5pO2lmKGxbcl09PT12b2lkIDApe2xbcl09b31uPXRydWU7YnJlYWs7Y2FzZVwiOlwiOmNhc2VcIiBcIjpjYXNlXCJcXG5cIjpicmVhaztkZWZhdWx0Om89dGhpcy5wYXJzZVNjYWxhcihlLFtcIixcIixcIn1cIl0sWydcIicsXCInXCJdLHQpO2k9dC5pO2lmKGxbcl09PT12b2lkIDApe2xbcl09b31uPXRydWU7LS1pfSsraTtpZihuKXticmVha319fXRocm93IG5ldyB1KFwiTWFsZm9ybWVkIGlubGluZSBZQU1MIHN0cmluZyBcIitlKX07ZS5ldmFsdWF0ZVNjYWxhcj1mdW5jdGlvbihlLHQpe3ZhciBuLGkscixzLHUsYSxvLGMsaCxwLEU7ZT1mLnRyaW0oZSk7aD1lLnRvTG93ZXJDYXNlKCk7c3dpdGNoKGgpe2Nhc2VcIm51bGxcIjpjYXNlXCJcIjpjYXNlXCJ+XCI6cmV0dXJuIG51bGw7Y2FzZVwidHJ1ZVwiOnJldHVybiB0cnVlO2Nhc2VcImZhbHNlXCI6cmV0dXJuIGZhbHNlO2Nhc2VcIi5pbmZcIjpyZXR1cm4gSW5maW5pdHk7Y2FzZVwiLm5hblwiOnJldHVybiBOYU47Y2FzZVwiLS5pbmZcIjpyZXR1cm4gSW5maW5pdHk7ZGVmYXVsdDpzPWguY2hhckF0KDApO3N3aXRjaChzKXtjYXNlXCIhXCI6dT1lLmluZGV4T2YoXCIgXCIpO2lmKHU9PT0tMSl7YT1ofWVsc2V7YT1oLnNsaWNlKDAsdSl9c3dpdGNoKGEpe2Nhc2VcIiFcIjppZih1IT09LTEpe3JldHVybiBwYXJzZUludCh0aGlzLnBhcnNlU2NhbGFyKGUuc2xpY2UoMikpKX1yZXR1cm4gbnVsbDtjYXNlXCIhc3RyXCI6cmV0dXJuIGYubHRyaW0oZS5zbGljZSg0KSk7Y2FzZVwiISFzdHJcIjpyZXR1cm4gZi5sdHJpbShlLnNsaWNlKDUpKTtjYXNlXCIhIWludFwiOnJldHVybiBwYXJzZUludCh0aGlzLnBhcnNlU2NhbGFyKGUuc2xpY2UoNSkpKTtjYXNlXCIhIWJvb2xcIjpyZXR1cm4gZi5wYXJzZUJvb2xlYW4odGhpcy5wYXJzZVNjYWxhcihlLnNsaWNlKDYpKSxmYWxzZSk7Y2FzZVwiISFmbG9hdFwiOnJldHVybiBwYXJzZUZsb2F0KHRoaXMucGFyc2VTY2FsYXIoZS5zbGljZSg3KSkpO2Nhc2VcIiEhdGltZXN0YW1wXCI6cmV0dXJuIGYuc3RyaW5nVG9EYXRlKGYubHRyaW0oZS5zbGljZSgxMSkpKTtkZWZhdWx0OmlmKHQ9PW51bGwpe3Q9e2V4Y2VwdGlvbk9uSW52YWxpZFR5cGU6dGhpcy5zZXR0aW5ncy5leGNlcHRpb25PbkludmFsaWRUeXBlLG9iamVjdERlY29kZXI6dGhpcy5zZXR0aW5ncy5vYmplY3REZWNvZGVyLGk6MH19bz10Lm9iamVjdERlY29kZXIscj10LmV4Y2VwdGlvbk9uSW52YWxpZFR5cGU7aWYobyl7RT1mLnJ0cmltKGUpO3U9RS5pbmRleE9mKFwiIFwiKTtpZih1PT09LTEpe3JldHVybiBvKEUsbnVsbCl9ZWxzZXtwPWYubHRyaW0oRS5zbGljZSh1KzEpKTtpZighKHAubGVuZ3RoPjApKXtwPW51bGx9cmV0dXJuIG8oRS5zbGljZSgwLHUpLHApfX1pZihyKXt0aHJvdyBuZXcgbChcIkN1c3RvbSBvYmplY3Qgc3VwcG9ydCB3aGVuIHBhcnNpbmcgYSBZQU1MIGZpbGUgaGFzIGJlZW4gZGlzYWJsZWQuXCIpfXJldHVybiBudWxsfWJyZWFrO2Nhc2VcIjBcIjppZihcIjB4XCI9PT1lLnNsaWNlKDAsMikpe3JldHVybiBmLmhleERlYyhlKX1lbHNlIGlmKGYuaXNEaWdpdHMoZSkpe3JldHVybiBmLm9jdERlYyhlKX1lbHNlIGlmKGYuaXNOdW1lcmljKGUpKXtyZXR1cm4gcGFyc2VGbG9hdChlKX1lbHNle3JldHVybiBlfWJyZWFrO2Nhc2VcIitcIjppZihmLmlzRGlnaXRzKGUpKXtjPWU7bj1wYXJzZUludChjKTtpZihjPT09U3RyaW5nKG4pKXtyZXR1cm4gbn1lbHNle3JldHVybiBjfX1lbHNlIGlmKGYuaXNOdW1lcmljKGUpKXtyZXR1cm4gcGFyc2VGbG9hdChlKX1lbHNlIGlmKHRoaXMuUEFUVEVSTl9USE9VU0FORF9OVU1FUklDX1NDQUxBUi50ZXN0KGUpKXtyZXR1cm4gcGFyc2VGbG9hdChlLnJlcGxhY2UoXCIsXCIsXCJcIikpfXJldHVybiBlO2Nhc2VcIi1cIjppZihmLmlzRGlnaXRzKGUuc2xpY2UoMSkpKXtpZihcIjBcIj09PWUuY2hhckF0KDEpKXtyZXR1cm4tZi5vY3REZWMoZS5zbGljZSgxKSl9ZWxzZXtjPWUuc2xpY2UoMSk7bj1wYXJzZUludChjKTtpZihjPT09U3RyaW5nKG4pKXtyZXR1cm4tbn1lbHNle3JldHVybi1jfX19ZWxzZSBpZihmLmlzTnVtZXJpYyhlKSl7cmV0dXJuIHBhcnNlRmxvYXQoZSl9ZWxzZSBpZih0aGlzLlBBVFRFUk5fVEhPVVNBTkRfTlVNRVJJQ19TQ0FMQVIudGVzdChlKSl7cmV0dXJuIHBhcnNlRmxvYXQoZS5yZXBsYWNlKFwiLFwiLFwiXCIpKX1yZXR1cm4gZTtkZWZhdWx0OmlmKGk9Zi5zdHJpbmdUb0RhdGUoZSkpe3JldHVybiBpfWVsc2UgaWYoZi5pc051bWVyaWMoZSkpe3JldHVybiBwYXJzZUZsb2F0KGUpfWVsc2UgaWYodGhpcy5QQVRURVJOX1RIT1VTQU5EX05VTUVSSUNfU0NBTEFSLnRlc3QoZSkpe3JldHVybiBwYXJzZUZsb2F0KGUucmVwbGFjZShcIixcIixcIlwiKSl9cmV0dXJuIGV9fX07cmV0dXJuIGV9KCk7dC5leHBvcnRzPXN9LHtcIi4vRXNjYXBlclwiOjIsXCIuL0V4Y2VwdGlvbi9EdW1wRXhjZXB0aW9uXCI6MyxcIi4vRXhjZXB0aW9uL1BhcnNlRXhjZXB0aW9uXCI6NCxcIi4vRXhjZXB0aW9uL1BhcnNlTW9yZVwiOjUsXCIuL1BhdHRlcm5cIjo4LFwiLi9VbmVzY2FwZXJcIjo5LFwiLi9VdGlsc1wiOjEwfV0sNzpbZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHIscyxsLHUsYTtpPWUoXCIuL0lubGluZVwiKTt1PWUoXCIuL1BhdHRlcm5cIik7YT1lKFwiLi9VdGlsc1wiKTtyPWUoXCIuL0V4Y2VwdGlvbi9QYXJzZUV4Y2VwdGlvblwiKTtzPWUoXCIuL0V4Y2VwdGlvbi9QYXJzZU1vcmVcIik7bD1mdW5jdGlvbigpe2UucHJvdG90eXBlLlBBVFRFUk5fRk9MREVEX1NDQUxBUl9BTEw9bmV3IHUoXCJeKD86KD88dHlwZT4hW15cXFxcfD5dKilcXFxccyspPyg/PHNlcGFyYXRvcj5cXFxcfHw+KSg/PG1vZGlmaWVycz5cXFxcK3xcXFxcLXxcXFxcZCt8XFxcXCtcXFxcZCt8XFxcXC1cXFxcZCt8XFxcXGQrXFxcXCt8XFxcXGQrXFxcXC0pPyg/PGNvbW1lbnRzPiArIy4qKT8kXCIpO2UucHJvdG90eXBlLlBBVFRFUk5fRk9MREVEX1NDQUxBUl9FTkQ9bmV3IHUoXCIoPzxzZXBhcmF0b3I+XFxcXHx8PikoPzxtb2RpZmllcnM+XFxcXCt8XFxcXC18XFxcXGQrfFxcXFwrXFxcXGQrfFxcXFwtXFxcXGQrfFxcXFxkK1xcXFwrfFxcXFxkK1xcXFwtKT8oPzxjb21tZW50cz4gKyMuKik/JFwiKTtlLnByb3RvdHlwZS5QQVRURVJOX1NFUVVFTkNFX0lURU09bmV3IHUoXCJeXFxcXC0oKD88bGVhZHNwYWNlcz5cXFxccyspKD88dmFsdWU+Lis/KSk/XFxcXHMqJFwiKTtlLnByb3RvdHlwZS5QQVRURVJOX0FOQ0hPUl9WQUxVRT1uZXcgdShcIl4mKD88cmVmPlteIF0rKSAqKD88dmFsdWU+LiopXCIpO2UucHJvdG90eXBlLlBBVFRFUk5fQ09NUEFDVF9OT1RBVElPTj1uZXcgdShcIl4oPzxrZXk+XCIraS5SRUdFWF9RVU9URURfU1RSSU5HK1wifFteICdcXFwiXFxcXHtcXFxcW10uKj8pICpcXFxcOihcXFxccysoPzx2YWx1ZT4uKz8pKT9cXFxccyokXCIpO2UucHJvdG90eXBlLlBBVFRFUk5fTUFQUElOR19JVEVNPW5ldyB1KFwiXig/PGtleT5cIitpLlJFR0VYX1FVT1RFRF9TVFJJTkcrXCJ8W14gJ1xcXCJcXFxcW1xcXFx7XS4qPykgKlxcXFw6KFxcXFxzKyg/PHZhbHVlPi4rPykpP1xcXFxzKiRcIik7ZS5wcm90b3R5cGUuUEFUVEVSTl9ERUNJTUFMPW5ldyB1KFwiXFxcXGQrXCIpO2UucHJvdG90eXBlLlBBVFRFUk5fSU5ERU5UX1NQQUNFUz1uZXcgdShcIl4gK1wiKTtlLnByb3RvdHlwZS5QQVRURVJOX1RSQUlMSU5HX0xJTkVTPW5ldyB1KFwiKFxcbiopJFwiKTtlLnByb3RvdHlwZS5QQVRURVJOX1lBTUxfSEVBREVSPW5ldyB1KFwiXlxcXFwlWUFNTFs6IF1bXFxcXGRcXFxcLl0rLipcXG5cIixcIm1cIik7ZS5wcm90b3R5cGUuUEFUVEVSTl9MRUFESU5HX0NPTU1FTlRTPW5ldyB1KFwiXihcXFxcIy4qP1xcbikrXCIsXCJtXCIpO2UucHJvdG90eXBlLlBBVFRFUk5fRE9DVU1FTlRfTUFSS0VSX1NUQVJUPW5ldyB1KFwiXlxcXFwtXFxcXC1cXFxcLS4qP1xcblwiLFwibVwiKTtlLnByb3RvdHlwZS5QQVRURVJOX0RPQ1VNRU5UX01BUktFUl9FTkQ9bmV3IHUoXCJeXFxcXC5cXFxcLlxcXFwuXFxcXHMqJFwiLFwibVwiKTtlLnByb3RvdHlwZS5QQVRURVJOX0ZPTERFRF9TQ0FMQVJfQllfSU5ERU5UQVRJT049e307ZS5wcm90b3R5cGUuQ09OVEVYVF9OT05FPTA7ZS5wcm90b3R5cGUuQ09OVEVYVF9TRVFVRU5DRT0xO2UucHJvdG90eXBlLkNPTlRFWFRfTUFQUElORz0yO2Z1bmN0aW9uIGUoZSl7dGhpcy5vZmZzZXQ9ZSE9bnVsbD9lOjA7dGhpcy5saW5lcz1bXTt0aGlzLmN1cnJlbnRMaW5lTmI9LTE7dGhpcy5jdXJyZW50TGluZT1cIlwiO3RoaXMucmVmcz17fX1lLnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbih0LG4scyl7dmFyIGwsdSxvLGYsYyxoLHAsRSxULF8sQSxMLGQsTixnLFIseCxDLEksbSxTLHcsdix5LFAsYixELE8sTSxHLFUsWCxGLGssSCxqLFksQixRO2lmKG49PW51bGwpe249ZmFsc2V9aWYocz09bnVsbCl7cz1udWxsfXRoaXMuY3VycmVudExpbmVOYj0tMTt0aGlzLmN1cnJlbnRMaW5lPVwiXCI7dGhpcy5saW5lcz10aGlzLmNsZWFudXAodCkuc3BsaXQoXCJcXG5cIik7aD1udWxsO2M9dGhpcy5DT05URVhUX05PTkU7dT1mYWxzZTt3aGlsZSh0aGlzLm1vdmVUb05leHRMaW5lKCkpe2lmKHRoaXMuaXNDdXJyZW50TGluZUVtcHR5KCkpe2NvbnRpbnVlfWlmKFwiXFx0XCI9PT10aGlzLmN1cnJlbnRMaW5lWzBdKXt0aHJvdyBuZXcgcihcIkEgWUFNTCBmaWxlIGNhbm5vdCBjb250YWluIHRhYnMgYXMgaW5kZW50YXRpb24uXCIsdGhpcy5nZXRSZWFsQ3VycmVudExpbmVOYigpKzEsdGhpcy5jdXJyZW50TGluZSl9Tj1EPWZhbHNlO2lmKFE9dGhpcy5QQVRURVJOX1NFUVVFTkNFX0lURU0uZXhlYyh0aGlzLmN1cnJlbnRMaW5lKSl7aWYodGhpcy5DT05URVhUX01BUFBJTkc9PT1jKXt0aHJvdyBuZXcgcihcIllvdSBjYW5ub3QgZGVmaW5lIGEgc2VxdWVuY2UgaXRlbSB3aGVuIGluIGEgbWFwcGluZ1wiKX1jPXRoaXMuQ09OVEVYVF9TRVFVRU5DRTtpZihoPT1udWxsKXtoPVtdfWlmKFEudmFsdWUhPW51bGwmJihiPXRoaXMuUEFUVEVSTl9BTkNIT1JfVkFMVUUuZXhlYyhRLnZhbHVlKSkpe049Yi5yZWY7US52YWx1ZT1iLnZhbHVlfWlmKCEoUS52YWx1ZSE9bnVsbCl8fFwiXCI9PT1hLnRyaW0oUS52YWx1ZSxcIiBcIil8fGEubHRyaW0oUS52YWx1ZSxcIiBcIikuaW5kZXhPZihcIiNcIik9PT0wKXtpZih0aGlzLmN1cnJlbnRMaW5lTmI8dGhpcy5saW5lcy5sZW5ndGgtMSYmIXRoaXMuaXNOZXh0TGluZVVuSW5kZW50ZWRDb2xsZWN0aW9uKCkpe2Y9dGhpcy5nZXRSZWFsQ3VycmVudExpbmVOYigpKzE7WD1uZXcgZShmKTtYLnJlZnM9dGhpcy5yZWZzO2gucHVzaChYLnBhcnNlKHRoaXMuZ2V0TmV4dEVtYmVkQmxvY2sobnVsbCx0cnVlKSxuLHMpKX1lbHNle2gucHVzaChudWxsKX19ZWxzZXtpZigoKEY9US5sZWFkc3BhY2VzKSE9bnVsbD9GLmxlbmd0aDp2b2lkIDApJiYoYj10aGlzLlBBVFRFUk5fQ09NUEFDVF9OT1RBVElPTi5leGVjKFEudmFsdWUpKSl7Zj10aGlzLmdldFJlYWxDdXJyZW50TGluZU5iKCk7WD1uZXcgZShmKTtYLnJlZnM9dGhpcy5yZWZzO289US52YWx1ZTtkPXRoaXMuZ2V0Q3VycmVudExpbmVJbmRlbnRhdGlvbigpO2lmKHRoaXMuaXNOZXh0TGluZUluZGVudGVkKGZhbHNlKSl7bys9XCJcXG5cIit0aGlzLmdldE5leHRFbWJlZEJsb2NrKGQrUS5sZWFkc3BhY2VzLmxlbmd0aCsxLHRydWUpfWgucHVzaChYLnBhcnNlKG8sbixzKSl9ZWxzZXtoLnB1c2godGhpcy5wYXJzZVZhbHVlKFEudmFsdWUsbixzKSl9fX1lbHNlIGlmKChRPXRoaXMuUEFUVEVSTl9NQVBQSU5HX0lURU0uZXhlYyh0aGlzLmN1cnJlbnRMaW5lKSkmJlEua2V5LmluZGV4T2YoXCIgI1wiKT09PS0xKXtpZih0aGlzLkNPTlRFWFRfU0VRVUVOQ0U9PT1jKXt0aHJvdyBuZXcgcihcIllvdSBjYW5ub3QgZGVmaW5lIGEgbWFwcGluZyBpdGVtIHdoZW4gaW4gYSBzZXF1ZW5jZVwiKX1jPXRoaXMuQ09OVEVYVF9NQVBQSU5HO2lmKGg9PW51bGwpe2g9e319aS5jb25maWd1cmUobixzKTt0cnl7eD1pLnBhcnNlU2NhbGFyKFEua2V5KX1jYXRjaChFKXtwPUU7cC5wYXJzZWRMaW5lPXRoaXMuZ2V0UmVhbEN1cnJlbnRMaW5lTmIoKSsxO3Auc25pcHBldD10aGlzLmN1cnJlbnRMaW5lO3Rocm93IHB9aWYoXCI8PFwiPT09eCl7RD10cnVlO3U9dHJ1ZTtpZigoKGs9US52YWx1ZSkhPW51bGw/ay5pbmRleE9mKFwiKlwiKTp2b2lkIDApPT09MCl7aj1RLnZhbHVlLnNsaWNlKDEpO2lmKHRoaXMucmVmc1tqXT09bnVsbCl7dGhyb3cgbmV3IHIoJ1JlZmVyZW5jZSBcIicraisnXCIgZG9lcyBub3QgZXhpc3QuJyx0aGlzLmdldFJlYWxDdXJyZW50TGluZU5iKCkrMSx0aGlzLmN1cnJlbnRMaW5lKX1ZPXRoaXMucmVmc1tqXTtpZih0eXBlb2YgWSE9PVwib2JqZWN0XCIpe3Rocm93IG5ldyByKFwiWUFNTCBtZXJnZSBrZXlzIHVzZWQgd2l0aCBhIHNjYWxhciB2YWx1ZSBpbnN0ZWFkIG9mIGFuIG9iamVjdC5cIix0aGlzLmdldFJlYWxDdXJyZW50TGluZU5iKCkrMSx0aGlzLmN1cnJlbnRMaW5lKX1pZihZIGluc3RhbmNlb2YgQXJyYXkpe2ZvcihMPWc9MCxtPVkubGVuZ3RoO2c8bTtMPSsrZyl7dD1ZW0xdO2lmKGhbTT1TdHJpbmcoTCldPT1udWxsKXtoW01dPXR9fX1lbHNle2Zvcih4IGluIFkpe3Q9WVt4XTtpZihoW3hdPT1udWxsKXtoW3hdPXR9fX19ZWxzZXtpZihRLnZhbHVlIT1udWxsJiZRLnZhbHVlIT09XCJcIil7dD1RLnZhbHVlfWVsc2V7dD10aGlzLmdldE5leHRFbWJlZEJsb2NrKCl9Zj10aGlzLmdldFJlYWxDdXJyZW50TGluZU5iKCkrMTtYPW5ldyBlKGYpO1gucmVmcz10aGlzLnJlZnM7Rz1YLnBhcnNlKHQsbik7aWYodHlwZW9mIEchPT1cIm9iamVjdFwiKXt0aHJvdyBuZXcgcihcIllBTUwgbWVyZ2Uga2V5cyB1c2VkIHdpdGggYSBzY2FsYXIgdmFsdWUgaW5zdGVhZCBvZiBhbiBvYmplY3QuXCIsdGhpcy5nZXRSZWFsQ3VycmVudExpbmVOYigpKzEsdGhpcy5jdXJyZW50TGluZSl9aWYoRyBpbnN0YW5jZW9mIEFycmF5KXtmb3IoQz0wLFM9Ry5sZW5ndGg7QzxTO0MrKyl7VT1HW0NdO2lmKHR5cGVvZiBVIT09XCJvYmplY3RcIil7dGhyb3cgbmV3IHIoXCJNZXJnZSBpdGVtcyBtdXN0IGJlIG9iamVjdHMuXCIsdGhpcy5nZXRSZWFsQ3VycmVudExpbmVOYigpKzEsVSl9aWYoVSBpbnN0YW5jZW9mIEFycmF5KXtmb3IoTD1QPTAsdz1VLmxlbmd0aDtQPHc7TD0rK1Ape3Q9VVtMXTtSPVN0cmluZyhMKTtpZighaC5oYXNPd25Qcm9wZXJ0eShSKSl7aFtSXT10fX19ZWxzZXtmb3IoeCBpbiBVKXt0PVVbeF07aWYoIWguaGFzT3duUHJvcGVydHkoeCkpe2hbeF09dH19fX19ZWxzZXtmb3IoeCBpbiBHKXt0PUdbeF07aWYoIWguaGFzT3duUHJvcGVydHkoeCkpe2hbeF09dH19fX19ZWxzZSBpZihRLnZhbHVlIT1udWxsJiYoYj10aGlzLlBBVFRFUk5fQU5DSE9SX1ZBTFVFLmV4ZWMoUS52YWx1ZSkpKXtOPWIucmVmO1EudmFsdWU9Yi52YWx1ZX1pZihEKXt9ZWxzZSBpZighKFEudmFsdWUhPW51bGwpfHxcIlwiPT09YS50cmltKFEudmFsdWUsXCIgXCIpfHxhLmx0cmltKFEudmFsdWUsXCIgXCIpLmluZGV4T2YoXCIjXCIpPT09MCl7aWYoIXRoaXMuaXNOZXh0TGluZUluZGVudGVkKCkmJiF0aGlzLmlzTmV4dExpbmVVbkluZGVudGVkQ29sbGVjdGlvbigpKXtpZih1fHxoW3hdPT09dm9pZCAwKXtoW3hdPW51bGx9fWVsc2V7Zj10aGlzLmdldFJlYWxDdXJyZW50TGluZU5iKCkrMTtYPW5ldyBlKGYpO1gucmVmcz10aGlzLnJlZnM7Qj1YLnBhcnNlKHRoaXMuZ2V0TmV4dEVtYmVkQmxvY2soKSxuLHMpO2lmKHV8fGhbeF09PT12b2lkIDApe2hbeF09Qn19fWVsc2V7Qj10aGlzLnBhcnNlVmFsdWUoUS52YWx1ZSxuLHMpO2lmKHV8fGhbeF09PT12b2lkIDApe2hbeF09Qn19fWVsc2V7eT10aGlzLmxpbmVzLmxlbmd0aDtpZigxPT09eXx8Mj09PXkmJmEuaXNFbXB0eSh0aGlzLmxpbmVzWzFdKSl7dHJ5e3Q9aS5wYXJzZSh0aGlzLmxpbmVzWzBdLG4scyl9Y2F0Y2goVCl7cD1UO3AucGFyc2VkTGluZT10aGlzLmdldFJlYWxDdXJyZW50TGluZU5iKCkrMTtwLnNuaXBwZXQ9dGhpcy5jdXJyZW50TGluZTt0aHJvdyBwfWlmKHR5cGVvZiB0PT09XCJvYmplY3RcIil7aWYodCBpbnN0YW5jZW9mIEFycmF5KXtBPXRbMF19ZWxzZXtmb3IoeCBpbiB0KXtBPXRbeF07YnJlYWt9fWlmKHR5cGVvZiBBPT09XCJzdHJpbmdcIiYmQS5pbmRleE9mKFwiKlwiKT09PTApe2g9W107Zm9yKE89MCx2PXQubGVuZ3RoO088djtPKyspe2w9dFtPXTtoLnB1c2godGhpcy5yZWZzW2wuc2xpY2UoMSldKX10PWh9fXJldHVybiB0fWVsc2UgaWYoKEg9YS5sdHJpbSh0KS5jaGFyQXQoMCkpPT09XCJbXCJ8fEg9PT1cIntcIil7dHJ5e3JldHVybiBpLnBhcnNlKHQsbixzKX1jYXRjaChfKXtwPV87cC5wYXJzZWRMaW5lPXRoaXMuZ2V0UmVhbEN1cnJlbnRMaW5lTmIoKSsxO3Auc25pcHBldD10aGlzLmN1cnJlbnRMaW5lO3Rocm93IHB9fXRocm93IG5ldyByKFwiVW5hYmxlIHRvIHBhcnNlLlwiLHRoaXMuZ2V0UmVhbEN1cnJlbnRMaW5lTmIoKSsxLHRoaXMuY3VycmVudExpbmUpfWlmKE4pe2lmKGggaW5zdGFuY2VvZiBBcnJheSl7dGhpcy5yZWZzW05dPWhbaC5sZW5ndGgtMV19ZWxzZXtJPW51bGw7Zm9yKHggaW4gaCl7ST14fXRoaXMucmVmc1tOXT1oW0ldfX19aWYoYS5pc0VtcHR5KGgpKXtyZXR1cm4gbnVsbH1lbHNle3JldHVybiBofX07ZS5wcm90b3R5cGUuZ2V0UmVhbEN1cnJlbnRMaW5lTmI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50TGluZU5iK3RoaXMub2Zmc2V0fTtlLnByb3RvdHlwZS5nZXRDdXJyZW50TGluZUluZGVudGF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VycmVudExpbmUubGVuZ3RoLWEubHRyaW0odGhpcy5jdXJyZW50TGluZSxcIiBcIikubGVuZ3RofTtlLnByb3RvdHlwZS5nZXROZXh0RW1iZWRCbG9jaz1mdW5jdGlvbihlLHQpe3ZhciBuLGkscyxsLHUsbyxmO2lmKGU9PW51bGwpe2U9bnVsbH1pZih0PT1udWxsKXt0PWZhbHNlfXRoaXMubW92ZVRvTmV4dExpbmUoKTtpZihlPT1udWxsKXtsPXRoaXMuZ2V0Q3VycmVudExpbmVJbmRlbnRhdGlvbigpO2Y9dGhpcy5pc1N0cmluZ1VuSW5kZW50ZWRDb2xsZWN0aW9uSXRlbSh0aGlzLmN1cnJlbnRMaW5lKTtpZighdGhpcy5pc0N1cnJlbnRMaW5lRW1wdHkoKSYmMD09PWwmJiFmKXt0aHJvdyBuZXcgcihcIkluZGVudGF0aW9uIHByb2JsZW0uXCIsdGhpcy5nZXRSZWFsQ3VycmVudExpbmVOYigpKzEsdGhpcy5jdXJyZW50TGluZSl9fWVsc2V7bD1lfW49W3RoaXMuY3VycmVudExpbmUuc2xpY2UobCldO2lmKCF0KXtzPXRoaXMuaXNTdHJpbmdVbkluZGVudGVkQ29sbGVjdGlvbkl0ZW0odGhpcy5jdXJyZW50TGluZSl9bz10aGlzLlBBVFRFUk5fRk9MREVEX1NDQUxBUl9FTkQ7dT0hby50ZXN0KHRoaXMuY3VycmVudExpbmUpO3doaWxlKHRoaXMubW92ZVRvTmV4dExpbmUoKSl7aT10aGlzLmdldEN1cnJlbnRMaW5lSW5kZW50YXRpb24oKTtpZihpPT09bCl7dT0hby50ZXN0KHRoaXMuY3VycmVudExpbmUpfWlmKHUmJnRoaXMuaXNDdXJyZW50TGluZUNvbW1lbnQoKSl7Y29udGludWV9aWYodGhpcy5pc0N1cnJlbnRMaW5lQmxhbmsoKSl7bi5wdXNoKHRoaXMuY3VycmVudExpbmUuc2xpY2UobCkpO2NvbnRpbnVlfWlmKHMmJiF0aGlzLmlzU3RyaW5nVW5JbmRlbnRlZENvbGxlY3Rpb25JdGVtKHRoaXMuY3VycmVudExpbmUpJiZpPT09bCl7dGhpcy5tb3ZlVG9QcmV2aW91c0xpbmUoKTticmVha31pZihpPj1sKXtuLnB1c2godGhpcy5jdXJyZW50TGluZS5zbGljZShsKSl9ZWxzZSBpZihhLmx0cmltKHRoaXMuY3VycmVudExpbmUpLmNoYXJBdCgwKT09PVwiI1wiKXt9ZWxzZSBpZigwPT09aSl7dGhpcy5tb3ZlVG9QcmV2aW91c0xpbmUoKTticmVha31lbHNle3Rocm93IG5ldyByKFwiSW5kZW50YXRpb24gcHJvYmxlbS5cIix0aGlzLmdldFJlYWxDdXJyZW50TGluZU5iKCkrMSx0aGlzLmN1cnJlbnRMaW5lKX19cmV0dXJuIG4uam9pbihcIlxcblwiKX07ZS5wcm90b3R5cGUubW92ZVRvTmV4dExpbmU9ZnVuY3Rpb24oKXtpZih0aGlzLmN1cnJlbnRMaW5lTmI+PXRoaXMubGluZXMubGVuZ3RoLTEpe3JldHVybiBmYWxzZX10aGlzLmN1cnJlbnRMaW5lPXRoaXMubGluZXNbKyt0aGlzLmN1cnJlbnRMaW5lTmJdO3JldHVybiB0cnVlfTtlLnByb3RvdHlwZS5tb3ZlVG9QcmV2aW91c0xpbmU9ZnVuY3Rpb24oKXt0aGlzLmN1cnJlbnRMaW5lPXRoaXMubGluZXNbLS10aGlzLmN1cnJlbnRMaW5lTmJdfTtlLnByb3RvdHlwZS5wYXJzZVZhbHVlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgbCx1LG8sZixjLGgscCxFLFQ7aWYoMD09PWUuaW5kZXhPZihcIipcIikpe2g9ZS5pbmRleE9mKFwiI1wiKTtpZihoIT09LTEpe2U9ZS5zdWJzdHIoMSxoLTIpfWVsc2V7ZT1lLnNsaWNlKDEpfWlmKHRoaXMucmVmc1tlXT09PXZvaWQgMCl7dGhyb3cgbmV3IHIoJ1JlZmVyZW5jZSBcIicrZSsnXCIgZG9lcyBub3QgZXhpc3QuJyx0aGlzLmN1cnJlbnRMaW5lKX1yZXR1cm4gdGhpcy5yZWZzW2VdfWlmKGY9dGhpcy5QQVRURVJOX0ZPTERFRF9TQ0FMQVJfQUxMLmV4ZWMoZSkpe2M9KHA9Zi5tb2RpZmllcnMpIT1udWxsP3A6XCJcIjtvPU1hdGguYWJzKHBhcnNlSW50KGMpKTtpZihpc05hTihvKSl7bz0wfVQ9dGhpcy5wYXJzZUZvbGRlZFNjYWxhcihmLnNlcGFyYXRvcix0aGlzLlBBVFRFUk5fREVDSU1BTC5yZXBsYWNlKGMsXCJcIiksbyk7aWYoZi50eXBlIT1udWxsKXtpLmNvbmZpZ3VyZSh0LG4pO3JldHVybiBpLnBhcnNlU2NhbGFyKGYudHlwZStcIiBcIitUKX1lbHNle3JldHVybiBUfX1pZigoRT1lLmNoYXJBdCgwKSk9PT1cIltcInx8RT09PVwie1wifHxFPT09J1wiJ3x8RT09PVwiJ1wiKXt3aGlsZSh0cnVlKXt0cnl7cmV0dXJuIGkucGFyc2UoZSx0LG4pfWNhdGNoKHUpe2w9dTtpZihsIGluc3RhbmNlb2YgcyYmdGhpcy5tb3ZlVG9OZXh0TGluZSgpKXtlKz1cIlxcblwiK2EudHJpbSh0aGlzLmN1cnJlbnRMaW5lLFwiIFwiKX1lbHNle2wucGFyc2VkTGluZT10aGlzLmdldFJlYWxDdXJyZW50TGluZU5iKCkrMTtsLnNuaXBwZXQ9dGhpcy5jdXJyZW50TGluZTt0aHJvdyBsfX19fWVsc2V7aWYodGhpcy5pc05leHRMaW5lSW5kZW50ZWQoKSl7ZSs9XCJcXG5cIit0aGlzLmdldE5leHRFbWJlZEJsb2NrKCl9cmV0dXJuIGkucGFyc2UoZSx0LG4pfX07ZS5wcm90b3R5cGUucGFyc2VGb2xkZWRTY2FsYXI9ZnVuY3Rpb24odCxuLGkpe3ZhciByLHMsbCxvLGYsYyxoLHAsRSxUO2lmKG49PW51bGwpe249XCJcIn1pZihpPT1udWxsKXtpPTB9aD10aGlzLm1vdmVUb05leHRMaW5lKCk7aWYoIWgpe3JldHVyblwiXCJ9cj10aGlzLmlzQ3VycmVudExpbmVCbGFuaygpO1Q9XCJcIjt3aGlsZShoJiZyKXtpZihoPXRoaXMubW92ZVRvTmV4dExpbmUoKSl7VCs9XCJcXG5cIjtyPXRoaXMuaXNDdXJyZW50TGluZUJsYW5rKCl9fWlmKDA9PT1pKXtpZihmPXRoaXMuUEFUVEVSTl9JTkRFTlRfU1BBQ0VTLmV4ZWModGhpcy5jdXJyZW50TGluZSkpe2k9ZlswXS5sZW5ndGh9fWlmKGk+MCl7cD10aGlzLlBBVFRFUk5fRk9MREVEX1NDQUxBUl9CWV9JTkRFTlRBVElPTltpXTtpZihwPT1udWxsKXtwPW5ldyB1KFwiXiB7XCIraStcIn0oLiopJFwiKTtlLnByb3RvdHlwZS5QQVRURVJOX0ZPTERFRF9TQ0FMQVJfQllfSU5ERU5UQVRJT05baV09cH13aGlsZShoJiYocnx8KGY9cC5leGVjKHRoaXMuY3VycmVudExpbmUpKSkpe2lmKHIpe1QrPXRoaXMuY3VycmVudExpbmUuc2xpY2UoaSl9ZWxzZXtUKz1mWzFdfWlmKGg9dGhpcy5tb3ZlVG9OZXh0TGluZSgpKXtUKz1cIlxcblwiO3I9dGhpcy5pc0N1cnJlbnRMaW5lQmxhbmsoKX19fWVsc2UgaWYoaCl7VCs9XCJcXG5cIn1pZihoKXt0aGlzLm1vdmVUb1ByZXZpb3VzTGluZSgpfWlmKFwiPlwiPT09dCl7Yz1cIlwiO0U9VC5zcGxpdChcIlxcblwiKTtmb3Iocz0wLGw9RS5sZW5ndGg7czxsO3MrKyl7bz1FW3NdO2lmKG8ubGVuZ3RoPT09MHx8by5jaGFyQXQoMCk9PT1cIiBcIil7Yz1hLnJ0cmltKGMsXCIgXCIpK28rXCJcXG5cIn1lbHNle2MrPW8rXCIgXCJ9fVQ9Y31pZihcIitcIiE9PW4pe1Q9YS5ydHJpbShUKX1pZihcIlwiPT09bil7VD10aGlzLlBBVFRFUk5fVFJBSUxJTkdfTElORVMucmVwbGFjZShULFwiXFxuXCIpfWVsc2UgaWYoXCItXCI9PT1uKXtUPXRoaXMuUEFUVEVSTl9UUkFJTElOR19MSU5FUy5yZXBsYWNlKFQsXCJcIil9cmV0dXJuIFR9O2UucHJvdG90eXBlLmlzTmV4dExpbmVJbmRlbnRlZD1mdW5jdGlvbihlKXt2YXIgdCxuLGk7aWYoZT09bnVsbCl7ZT10cnVlfW49dGhpcy5nZXRDdXJyZW50TGluZUluZGVudGF0aW9uKCk7dD0hdGhpcy5tb3ZlVG9OZXh0TGluZSgpO2lmKGUpe3doaWxlKCF0JiZ0aGlzLmlzQ3VycmVudExpbmVFbXB0eSgpKXt0PSF0aGlzLm1vdmVUb05leHRMaW5lKCl9fWVsc2V7d2hpbGUoIXQmJnRoaXMuaXNDdXJyZW50TGluZUJsYW5rKCkpe3Q9IXRoaXMubW92ZVRvTmV4dExpbmUoKX19aWYodCl7cmV0dXJuIGZhbHNlfWk9ZmFsc2U7aWYodGhpcy5nZXRDdXJyZW50TGluZUluZGVudGF0aW9uKCk+bil7aT10cnVlfXRoaXMubW92ZVRvUHJldmlvdXNMaW5lKCk7cmV0dXJuIGl9O2UucHJvdG90eXBlLmlzQ3VycmVudExpbmVFbXB0eT1mdW5jdGlvbigpe3ZhciBlO2U9YS50cmltKHRoaXMuY3VycmVudExpbmUsXCIgXCIpO3JldHVybiBlLmxlbmd0aD09PTB8fGUuY2hhckF0KDApPT09XCIjXCJ9O2UucHJvdG90eXBlLmlzQ3VycmVudExpbmVCbGFuaz1mdW5jdGlvbigpe3JldHVyblwiXCI9PT1hLnRyaW0odGhpcy5jdXJyZW50TGluZSxcIiBcIil9O2UucHJvdG90eXBlLmlzQ3VycmVudExpbmVDb21tZW50PWZ1bmN0aW9uKCl7dmFyIGU7ZT1hLmx0cmltKHRoaXMuY3VycmVudExpbmUsXCIgXCIpO3JldHVybiBlLmNoYXJBdCgwKT09PVwiI1wifTtlLnByb3RvdHlwZS5jbGVhbnVwPWZ1bmN0aW9uKGUpe3ZhciB0LG4saSxyLHMsbCx1LG8sZixjLGgscCxFLFQ7aWYoZS5pbmRleE9mKFwiXFxyXCIpIT09LTEpe2U9ZS5zcGxpdChcIlxcclxcblwiKS5qb2luKFwiXFxuXCIpLnNwbGl0KFwiXFxyXCIpLmpvaW4oXCJcXG5cIil9dD0wO2M9dGhpcy5QQVRURVJOX1lBTUxfSEVBREVSLnJlcGxhY2VBbGwoZSxcIlwiKSxlPWNbMF0sdD1jWzFdO3RoaXMub2Zmc2V0Kz10O2g9dGhpcy5QQVRURVJOX0xFQURJTkdfQ09NTUVOVFMucmVwbGFjZUFsbChlLFwiXCIsMSksVD1oWzBdLHQ9aFsxXTtpZih0PT09MSl7dGhpcy5vZmZzZXQrPWEuc3ViU3RyQ291bnQoZSxcIlxcblwiKS1hLnN1YlN0ckNvdW50KFQsXCJcXG5cIik7ZT1UfXA9dGhpcy5QQVRURVJOX0RPQ1VNRU5UX01BUktFUl9TVEFSVC5yZXBsYWNlQWxsKGUsXCJcIiwxKSxUPXBbMF0sdD1wWzFdO2lmKHQ9PT0xKXt0aGlzLm9mZnNldCs9YS5zdWJTdHJDb3VudChlLFwiXFxuXCIpLWEuc3ViU3RyQ291bnQoVCxcIlxcblwiKTtlPVQ7ZT10aGlzLlBBVFRFUk5fRE9DVU1FTlRfTUFSS0VSX0VORC5yZXBsYWNlKGUsXCJcIil9Zj1lLnNwbGl0KFwiXFxuXCIpO0U9LTE7Zm9yKHI9MCxsPWYubGVuZ3RoO3I8bDtyKyspe289ZltyXTtpZihhLnRyaW0obyxcIiBcIikubGVuZ3RoPT09MCl7Y29udGludWV9aT1vLmxlbmd0aC1hLmx0cmltKG8pLmxlbmd0aDtpZihFPT09LTF8fGk8RSl7RT1pfX1pZihFPjApe2ZvcihuPXM9MCx1PWYubGVuZ3RoO3M8dTtuPSsrcyl7bz1mW25dO2Zbbl09by5zbGljZShFKX1lPWYuam9pbihcIlxcblwiKX1yZXR1cm4gZX07ZS5wcm90b3R5cGUuaXNOZXh0TGluZVVuSW5kZW50ZWRDb2xsZWN0aW9uPWZ1bmN0aW9uKGUpe3ZhciB0LG47aWYoZT09bnVsbCl7ZT1udWxsfWlmKGU9PW51bGwpe2U9dGhpcy5nZXRDdXJyZW50TGluZUluZGVudGF0aW9uKCl9dD10aGlzLm1vdmVUb05leHRMaW5lKCk7d2hpbGUodCYmdGhpcy5pc0N1cnJlbnRMaW5lRW1wdHkoKSl7dD10aGlzLm1vdmVUb05leHRMaW5lKCl9aWYoZmFsc2U9PT10KXtyZXR1cm4gZmFsc2V9bj1mYWxzZTtpZih0aGlzLmdldEN1cnJlbnRMaW5lSW5kZW50YXRpb24oKT09PWUmJnRoaXMuaXNTdHJpbmdVbkluZGVudGVkQ29sbGVjdGlvbkl0ZW0odGhpcy5jdXJyZW50TGluZSkpe249dHJ1ZX10aGlzLm1vdmVUb1ByZXZpb3VzTGluZSgpO3JldHVybiBufTtlLnByb3RvdHlwZS5pc1N0cmluZ1VuSW5kZW50ZWRDb2xsZWN0aW9uSXRlbT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnJlbnRMaW5lPT09XCItXCJ8fHRoaXMuY3VycmVudExpbmUuc2xpY2UoMCwyKT09PVwiLSBcIn07cmV0dXJuIGV9KCk7dC5leHBvcnRzPWx9LHtcIi4vRXhjZXB0aW9uL1BhcnNlRXhjZXB0aW9uXCI6NCxcIi4vRXhjZXB0aW9uL1BhcnNlTW9yZVwiOjUsXCIuL0lubGluZVwiOjYsXCIuL1BhdHRlcm5cIjo4LFwiLi9VdGlsc1wiOjEwfV0sODpbZnVuY3Rpb24oZSx0LG4pe3ZhciBpO2k9ZnVuY3Rpb24oKXtlLnByb3RvdHlwZS5yZWdleD1udWxsO2UucHJvdG90eXBlLnJhd1JlZ2V4PW51bGw7ZS5wcm90b3R5cGUuY2xlYW5lZFJlZ2V4PW51bGw7ZS5wcm90b3R5cGUubWFwcGluZz1udWxsO2Z1bmN0aW9uIGUoZSx0KXt2YXIgbixpLHIscyxsLHUsYSxvLGY7aWYodD09bnVsbCl7dD1cIlwifXI9XCJcIjtsPWUubGVuZ3RoO3U9bnVsbDtpPTA7cz0wO3doaWxlKHM8bCl7bj1lLmNoYXJBdChzKTtpZihuPT09XCJcXFxcXCIpe3IrPWUuc2xpY2UocywrKHMrMSkrMXx8OWU5KTtzKyt9ZWxzZSBpZihuPT09XCIoXCIpe2lmKHM8bC0yKXtvPWUuc2xpY2UocywrKHMrMikrMXx8OWU5KTtpZihvPT09XCIoPzpcIil7cys9MjtyKz1vfWVsc2UgaWYobz09PVwiKD88XCIpe2krKztzKz0yO2E9XCJcIjt3aGlsZShzKzE8bCl7Zj1lLmNoYXJBdChzKzEpO2lmKGY9PT1cIj5cIil7cis9XCIoXCI7cysrO2lmKGEubGVuZ3RoPjApe2lmKHU9PW51bGwpe3U9e319dVthXT1pfWJyZWFrfWVsc2V7YSs9Zn1zKyt9fWVsc2V7cis9bjtpKyt9fWVsc2V7cis9bn19ZWxzZXtyKz1ufXMrK310aGlzLnJhd1JlZ2V4PWU7dGhpcy5jbGVhbmVkUmVnZXg9cjt0aGlzLnJlZ2V4PW5ldyBSZWdFeHAodGhpcy5jbGVhbmVkUmVnZXgsXCJnXCIrdC5yZXBsYWNlKFwiZ1wiLFwiXCIpKTt0aGlzLm1hcHBpbmc9dX1lLnByb3RvdHlwZS5leGVjPWZ1bmN0aW9uKGUpe3ZhciB0LG4saSxyO3RoaXMucmVnZXgubGFzdEluZGV4PTA7bj10aGlzLnJlZ2V4LmV4ZWMoZSk7aWYobj09bnVsbCl7cmV0dXJuIG51bGx9aWYodGhpcy5tYXBwaW5nIT1udWxsKXtyPXRoaXMubWFwcGluZztmb3IoaSBpbiByKXt0PXJbaV07bltpXT1uW3RdfX1yZXR1cm4gbn07ZS5wcm90b3R5cGUudGVzdD1mdW5jdGlvbihlKXt0aGlzLnJlZ2V4Lmxhc3RJbmRleD0wO3JldHVybiB0aGlzLnJlZ2V4LnRlc3QoZSl9O2UucHJvdG90eXBlLnJlcGxhY2U9ZnVuY3Rpb24oZSx0KXt0aGlzLnJlZ2V4Lmxhc3RJbmRleD0wO3JldHVybiBlLnJlcGxhY2UodGhpcy5yZWdleCx0KX07ZS5wcm90b3R5cGUucmVwbGFjZUFsbD1mdW5jdGlvbihlLHQsbil7dmFyIGk7aWYobj09bnVsbCl7bj0wfXRoaXMucmVnZXgubGFzdEluZGV4PTA7aT0wO3doaWxlKHRoaXMucmVnZXgudGVzdChlKSYmKG49PT0wfHxpPG4pKXt0aGlzLnJlZ2V4Lmxhc3RJbmRleD0wO2U9ZS5yZXBsYWNlKHRoaXMucmVnZXgsdCk7aSsrfXJldHVybltlLGldfTtyZXR1cm4gZX0oKTt0LmV4cG9ydHM9aX0se31dLDk6W2Z1bmN0aW9uKGUsdCxuKXt2YXIgaSxyLHM7cz1lKFwiLi9VdGlsc1wiKTtpPWUoXCIuL1BhdHRlcm5cIik7cj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt9ZS5QQVRURVJOX0VTQ0FQRURfQ0hBUkFDVEVSPW5ldyBpKCdcXFxcXFxcXChbMGFidFxcdG52ZnJlIFwiXFxcXC9cXFxcXFxcXE5fTFBdfHhbMC05YS1mQS1GXXsyfXx1WzAtOWEtZkEtRl17NH18VVswLTlhLWZBLUZdezh9KScpO2UudW5lc2NhcGVTaW5nbGVRdW90ZWRTdHJpbmc9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvXFwnXFwnL2csXCInXCIpfTtlLnVuZXNjYXBlRG91YmxlUXVvdGVkU3RyaW5nPWZ1bmN0aW9uKGUpe2lmKHRoaXMuX3VuZXNjYXBlQ2FsbGJhY2s9PW51bGwpe3RoaXMuX3VuZXNjYXBlQ2FsbGJhY2s9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLnVuZXNjYXBlQ2hhcmFjdGVyKHQpfX0odGhpcyl9cmV0dXJuIHRoaXMuUEFUVEVSTl9FU0NBUEVEX0NIQVJBQ1RFUi5yZXBsYWNlKGUsdGhpcy5fdW5lc2NhcGVDYWxsYmFjayl9O2UudW5lc2NhcGVDaGFyYWN0ZXI9ZnVuY3Rpb24oZSl7dmFyIHQ7dD1TdHJpbmcuZnJvbUNoYXJDb2RlO3N3aXRjaChlLmNoYXJBdCgxKSl7Y2FzZVwiMFwiOnJldHVybiB0KDApO2Nhc2VcImFcIjpyZXR1cm4gdCg3KTtjYXNlXCJiXCI6cmV0dXJuIHQoOCk7Y2FzZVwidFwiOnJldHVyblwiXFx0XCI7Y2FzZVwiXFx0XCI6cmV0dXJuXCJcXHRcIjtjYXNlXCJuXCI6cmV0dXJuXCJcXG5cIjtjYXNlXCJ2XCI6cmV0dXJuIHQoMTEpO2Nhc2VcImZcIjpyZXR1cm4gdCgxMik7Y2FzZVwiclwiOnJldHVybiB0KDEzKTtjYXNlXCJlXCI6cmV0dXJuIHQoMjcpO2Nhc2VcIiBcIjpyZXR1cm5cIiBcIjtjYXNlJ1wiJzpyZXR1cm4nXCInO2Nhc2VcIi9cIjpyZXR1cm5cIi9cIjtjYXNlXCJcXFxcXCI6cmV0dXJuXCJcXFxcXCI7Y2FzZVwiTlwiOnJldHVybiB0KDEzMyk7Y2FzZVwiX1wiOnJldHVybiB0KDE2MCk7Y2FzZVwiTFwiOnJldHVybiB0KDgyMzIpO2Nhc2VcIlBcIjpyZXR1cm4gdCg4MjMzKTtjYXNlXCJ4XCI6cmV0dXJuIHMudXRmOGNocihzLmhleERlYyhlLnN1YnN0cigyLDIpKSk7Y2FzZVwidVwiOnJldHVybiBzLnV0ZjhjaHIocy5oZXhEZWMoZS5zdWJzdHIoMiw0KSkpO2Nhc2VcIlVcIjpyZXR1cm4gcy51dGY4Y2hyKHMuaGV4RGVjKGUuc3Vic3RyKDIsOCkpKTtkZWZhdWx0OnJldHVyblwiXCJ9fTtyZXR1cm4gZX0oKTt0LmV4cG9ydHM9cn0se1wiLi9QYXR0ZXJuXCI6OCxcIi4vVXRpbHNcIjoxMH1dLDEwOltmdW5jdGlvbihlLHQsbil7dmFyIGkscixzPXt9Lmhhc093blByb3BlcnR5O2k9ZShcIi4vUGF0dGVyblwiKTtyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe310LlJFR0VYX0xFRlRfVFJJTV9CWV9DSEFSPXt9O3QuUkVHRVhfUklHSFRfVFJJTV9CWV9DSEFSPXt9O3QuUkVHRVhfU1BBQ0VTPS9cXHMrL2c7dC5SRUdFWF9ESUdJVFM9L15cXGQrJC87dC5SRUdFWF9PQ1RBTD0vW14wLTddL2dpO3QuUkVHRVhfSEVYQURFQ0lNQUw9L1teYS1mMC05XS9naTt0LlBBVFRFUk5fREFURT1uZXcgaShcIl5cIitcIig/PHllYXI+WzAtOV1bMC05XVswLTldWzAtOV0pXCIrXCItKD88bW9udGg+WzAtOV1bMC05XT8pXCIrXCItKD88ZGF5PlswLTldWzAtOV0/KVwiK1wiKD86KD86W1R0XXxbIFxcdF0rKVwiK1wiKD88aG91cj5bMC05XVswLTldPylcIitcIjooPzxtaW51dGU+WzAtOV1bMC05XSlcIitcIjooPzxzZWNvbmQ+WzAtOV1bMC05XSlcIitcIig/Oi4oPzxmcmFjdGlvbj5bMC05XSopKT9cIitcIig/OlsgXFx0XSooPzx0ej5afCg/PHR6X3NpZ24+Wy0rXSkoPzx0el9ob3VyPlswLTldWzAtOV0/KVwiK1wiKD86Oig/PHR6X21pbnV0ZT5bMC05XVswLTldKSk/KSk/KT9cIitcIiRcIixcImlcIik7dC5MT0NBTF9USU1FWk9ORV9PRkZTRVQ9KG5ldyBEYXRlKS5nZXRUaW1lem9uZU9mZnNldCgpKjYwKjFlMzt0LnRyaW09ZnVuY3Rpb24oZSx0KXt2YXIgbixpO2lmKHQ9PW51bGwpe3Q9XCJcXFxcc1wifW49dGhpcy5SRUdFWF9MRUZUX1RSSU1fQllfQ0hBUlt0XTtpZihuPT1udWxsKXt0aGlzLlJFR0VYX0xFRlRfVFJJTV9CWV9DSEFSW3RdPW49bmV3IFJlZ0V4cChcIl5cIit0K1wiXCIrdCtcIipcIil9bi5sYXN0SW5kZXg9MDtpPXRoaXMuUkVHRVhfUklHSFRfVFJJTV9CWV9DSEFSW3RdO2lmKGk9PW51bGwpe3RoaXMuUkVHRVhfUklHSFRfVFJJTV9CWV9DSEFSW3RdPWk9bmV3IFJlZ0V4cCh0K1wiXCIrdCtcIiokXCIpfWkubGFzdEluZGV4PTA7cmV0dXJuIGUucmVwbGFjZShuLFwiXCIpLnJlcGxhY2UoaSxcIlwiKX07dC5sdHJpbT1mdW5jdGlvbihlLHQpe3ZhciBuO2lmKHQ9PW51bGwpe3Q9XCJcXFxcc1wifW49dGhpcy5SRUdFWF9MRUZUX1RSSU1fQllfQ0hBUlt0XTtpZihuPT1udWxsKXt0aGlzLlJFR0VYX0xFRlRfVFJJTV9CWV9DSEFSW3RdPW49bmV3IFJlZ0V4cChcIl5cIit0K1wiXCIrdCtcIipcIil9bi5sYXN0SW5kZXg9MDtyZXR1cm4gZS5yZXBsYWNlKG4sXCJcIil9O3QucnRyaW09ZnVuY3Rpb24oZSx0KXt2YXIgbjtpZih0PT1udWxsKXt0PVwiXFxcXHNcIn1uPXRoaXMuUkVHRVhfUklHSFRfVFJJTV9CWV9DSEFSW3RdO2lmKG49PW51bGwpe3RoaXMuUkVHRVhfUklHSFRfVFJJTV9CWV9DSEFSW3RdPW49bmV3IFJlZ0V4cCh0K1wiXCIrdCtcIiokXCIpfW4ubGFzdEluZGV4PTA7cmV0dXJuIGUucmVwbGFjZShuLFwiXCIpfTt0LmlzRW1wdHk9ZnVuY3Rpb24oZSl7cmV0dXJuIWV8fGU9PT1cIlwifHxlPT09XCIwXCJ8fGUgaW5zdGFuY2VvZiBBcnJheSYmZS5sZW5ndGg9PT0wfHx0aGlzLmlzRW1wdHlPYmplY3QoZSl9O3QuaXNFbXB0eU9iamVjdD1mdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gZSBpbnN0YW5jZW9mIE9iamVjdCYmZnVuY3Rpb24oKXt2YXIgbjtuPVtdO2Zvcih0IGluIGUpe2lmKCFzLmNhbGwoZSx0KSljb250aW51ZTtuLnB1c2godCl9cmV0dXJuIG59KCkubGVuZ3RoPT09MH07dC5zdWJTdHJDb3VudD1mdW5jdGlvbihlLHQsbixpKXt2YXIgcixzLGwsdSxhLG87cj0wO2U9XCJcIitlO3Q9XCJcIit0O2lmKG4hPW51bGwpe2U9ZS5zbGljZShuKX1pZihpIT1udWxsKXtlPWUuc2xpY2UoMCxpKX11PWUubGVuZ3RoO289dC5sZW5ndGg7Zm9yKHM9bD0wLGE9dTswPD1hP2w8YTpsPmE7cz0wPD1hPysrbDotLWwpe2lmKHQ9PT1lLnNsaWNlKHMsbykpe3IrKztzKz1vLTF9fXJldHVybiByfTt0LmlzRGlnaXRzPWZ1bmN0aW9uKGUpe3RoaXMuUkVHRVhfRElHSVRTLmxhc3RJbmRleD0wO3JldHVybiB0aGlzLlJFR0VYX0RJR0lUUy50ZXN0KGUpfTt0Lm9jdERlYz1mdW5jdGlvbihlKXt0aGlzLlJFR0VYX09DVEFMLmxhc3RJbmRleD0wO3JldHVybiBwYXJzZUludCgoZStcIlwiKS5yZXBsYWNlKHRoaXMuUkVHRVhfT0NUQUwsXCJcIiksOCl9O3QuaGV4RGVjPWZ1bmN0aW9uKGUpe3RoaXMuUkVHRVhfSEVYQURFQ0lNQUwubGFzdEluZGV4PTA7ZT10aGlzLnRyaW0oZSk7aWYoKGUrXCJcIikuc2xpY2UoMCwyKT09PVwiMHhcIil7ZT0oZStcIlwiKS5zbGljZSgyKX1yZXR1cm4gcGFyc2VJbnQoKGUrXCJcIikucmVwbGFjZSh0aGlzLlJFR0VYX0hFWEFERUNJTUFMLFwiXCIpLDE2KX07dC51dGY4Y2hyPWZ1bmN0aW9uKGUpe3ZhciB0O3Q9U3RyaW5nLmZyb21DaGFyQ29kZTtpZigxMjg+KGUlPTIwOTcxNTIpKXtyZXR1cm4gdChlKX1pZigyMDQ4PmUpe3JldHVybiB0KDE5MnxlPj42KSt0KDEyOHxlJjYzKX1pZig2NTUzNj5lKXtyZXR1cm4gdCgyMjR8ZT4+MTIpK3QoMTI4fGU+PjYmNjMpK3QoMTI4fGUmNjMpfXJldHVybiB0KDI0MHxlPj4xOCkrdCgxMjh8ZT4+MTImNjMpK3QoMTI4fGU+PjYmNjMpK3QoMTI4fGUmNjMpfTt0LnBhcnNlQm9vbGVhbj1mdW5jdGlvbihlLHQpe3ZhciBuO2lmKHQ9PW51bGwpe3Q9dHJ1ZX1pZih0eXBlb2YgZT09PVwic3RyaW5nXCIpe249ZS50b0xvd2VyQ2FzZSgpO2lmKCF0KXtpZihuPT09XCJub1wiKXtyZXR1cm4gZmFsc2V9fWlmKG49PT1cIjBcIil7cmV0dXJuIGZhbHNlfWlmKG49PT1cImZhbHNlXCIpe3JldHVybiBmYWxzZX1pZihuPT09XCJcIil7cmV0dXJuIGZhbHNlfXJldHVybiB0cnVlfXJldHVybiEhZX07dC5pc051bWVyaWM9ZnVuY3Rpb24oZSl7dGhpcy5SRUdFWF9TUEFDRVMubGFzdEluZGV4PTA7cmV0dXJuIHR5cGVvZiBlPT09XCJudW1iZXJcInx8dHlwZW9mIGU9PT1cInN0cmluZ1wiJiYhaXNOYU4oZSkmJmUucmVwbGFjZSh0aGlzLlJFR0VYX1NQQUNFUyxcIlwiKSE9PVwiXCJ9O3Quc3RyaW5nVG9EYXRlPWZ1bmN0aW9uKGUpe3ZhciB0LG4saSxyLHMsbCx1LGEsbyxmLGMsaDtpZighKGUhPW51bGw/ZS5sZW5ndGg6dm9pZCAwKSl7cmV0dXJuIG51bGx9cz10aGlzLlBBVFRFUk5fREFURS5leGVjKGUpO2lmKCFzKXtyZXR1cm4gbnVsbH1oPXBhcnNlSW50KHMueWVhciwxMCk7dT1wYXJzZUludChzLm1vbnRoLDEwKS0xO249cGFyc2VJbnQocy5kYXksMTApO2lmKHMuaG91cj09bnVsbCl7dD1uZXcgRGF0ZShEYXRlLlVUQyhoLHUsbikpO3JldHVybiB0fXI9cGFyc2VJbnQocy5ob3VyLDEwKTtsPXBhcnNlSW50KHMubWludXRlLDEwKTthPXBhcnNlSW50KHMuc2Vjb25kLDEwKTtpZihzLmZyYWN0aW9uIT1udWxsKXtpPXMuZnJhY3Rpb24uc2xpY2UoMCwzKTt3aGlsZShpLmxlbmd0aDwzKXtpKz1cIjBcIn1pPXBhcnNlSW50KGksMTApfWVsc2V7aT0wfWlmKHMudHohPW51bGwpe289cGFyc2VJbnQocy50el9ob3VyLDEwKTtpZihzLnR6X21pbnV0ZSE9bnVsbCl7Zj1wYXJzZUludChzLnR6X21pbnV0ZSwxMCl9ZWxzZXtmPTB9Yz0obyo2MCtmKSo2ZTQ7aWYoXCItXCI9PT1zLnR6X3NpZ24pe2MqPS0xfX10PW5ldyBEYXRlKERhdGUuVVRDKGgsdSxuLHIsbCxhLGkpKTtpZihjKXt0LnNldFRpbWUodC5nZXRUaW1lKCktYyl9cmV0dXJuIHR9O3Quc3RyUmVwZWF0PWZ1bmN0aW9uKGUsdCl7dmFyIG4saTtpPVwiXCI7bj0wO3doaWxlKG48dCl7aSs9ZTtuKyt9cmV0dXJuIGl9O3QuZ2V0U3RyaW5nRnJvbUZpbGU9ZnVuY3Rpb24odCxuKXt2YXIgaSxyLHMsbCx1LGEsbyxmO2lmKG49PW51bGwpe249bnVsbH1mPW51bGw7aWYodHlwZW9mIHdpbmRvdyE9PVwidW5kZWZpbmVkXCImJndpbmRvdyE9PW51bGwpe2lmKHdpbmRvdy5YTUxIdHRwUmVxdWVzdCl7Zj1uZXcgWE1MSHR0cFJlcXVlc3R9ZWxzZSBpZih3aW5kb3cuQWN0aXZlWE9iamVjdCl7YT1bXCJNc3htbDIuWE1MSFRUUC42LjBcIixcIk1zeG1sMi5YTUxIVFRQLjMuMFwiLFwiTXN4bWwyLlhNTEhUVFBcIixcIk1pY3Jvc29mdC5YTUxIVFRQXCJdO2ZvcihzPTAsbD1hLmxlbmd0aDtzPGw7cysrKXt1PWFbc107dHJ5e2Y9bmV3IEFjdGl2ZVhPYmplY3QodSl9Y2F0Y2goZSl7fX19fWlmKGYhPW51bGwpe2lmKG4hPW51bGwpe2Yub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7aWYoZi5yZWFkeVN0YXRlPT09NCl7aWYoZi5zdGF0dXM9PT0yMDB8fGYuc3RhdHVzPT09MCl7cmV0dXJuIG4oZi5yZXNwb25zZVRleHQpfWVsc2V7cmV0dXJuIG4obnVsbCl9fX07Zi5vcGVuKFwiR0VUXCIsdCx0cnVlKTtyZXR1cm4gZi5zZW5kKG51bGwpfWVsc2V7Zi5vcGVuKFwiR0VUXCIsdCxmYWxzZSk7Zi5zZW5kKG51bGwpO2lmKGYuc3RhdHVzPT09MjAwfHxmLnN0YXR1cz09PTApe3JldHVybiBmLnJlc3BvbnNlVGV4dH1yZXR1cm4gbnVsbH19ZWxzZXtvPWU7cj1vKFwiZnNcIik7aWYobiE9bnVsbCl7cmV0dXJuIHIucmVhZEZpbGUodCxmdW5jdGlvbihlLHQpe2lmKGUpe3JldHVybiBuKG51bGwpfWVsc2V7cmV0dXJuIG4oU3RyaW5nKHQpKX19KX1lbHNle2k9ci5yZWFkRmlsZVN5bmModCk7aWYoaSE9bnVsbCl7cmV0dXJuIFN0cmluZyhpKX1yZXR1cm4gbnVsbH19fTtyZXR1cm4gdH0oKTt0LmV4cG9ydHM9cn0se1wiLi9QYXR0ZXJuXCI6OH1dLDExOltmdW5jdGlvbihlLHQsbil7dmFyIGkscixzLGw7cj1lKFwiLi9QYXJzZXJcIik7aT1lKFwiLi9EdW1wZXJcIik7cz1lKFwiLi9VdGlsc1wiKTtsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe31lLnBhcnNlPWZ1bmN0aW9uKGUsdCxuKXtpZih0PT1udWxsKXt0PWZhbHNlfWlmKG49PW51bGwpe249bnVsbH1yZXR1cm4obmV3IHIpLnBhcnNlKGUsdCxuKX07ZS5wYXJzZUZpbGU9ZnVuY3Rpb24oZSx0LG4saSl7dmFyIHI7aWYodD09bnVsbCl7dD1udWxsfWlmKG49PW51bGwpe249ZmFsc2V9aWYoaT09bnVsbCl7aT1udWxsfWlmKHQhPW51bGwpe3JldHVybiBzLmdldFN0cmluZ0Zyb21GaWxlKGUsZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBzO3M9bnVsbDtpZihyIT1udWxsKXtzPWUucGFyc2UocixuLGkpfXQocyl9fSh0aGlzKSl9ZWxzZXtyPXMuZ2V0U3RyaW5nRnJvbUZpbGUoZSk7aWYociE9bnVsbCl7cmV0dXJuIHRoaXMucGFyc2UocixuLGkpfXJldHVybiBudWxsfX07ZS5kdW1wPWZ1bmN0aW9uKGUsdCxuLHIscyl7dmFyIGw7aWYodD09bnVsbCl7dD0yfWlmKG49PW51bGwpe249NH1pZihyPT1udWxsKXtyPWZhbHNlfWlmKHM9PW51bGwpe3M9bnVsbH1sPW5ldyBpO2wuaW5kZW50YXRpb249bjtyZXR1cm4gbC5kdW1wKGUsdCwwLHIscyl9O2Uuc3RyaW5naWZ5PWZ1bmN0aW9uKGUsdCxuLGkscil7cmV0dXJuIHRoaXMuZHVtcChlLHQsbixpLHIpfTtlLmxvYWQ9ZnVuY3Rpb24oZSx0LG4saSl7cmV0dXJuIHRoaXMucGFyc2VGaWxlKGUsdCxuLGkpfTtyZXR1cm4gZX0oKTtpZih0eXBlb2Ygd2luZG93IT09XCJ1bmRlZmluZWRcIiYmd2luZG93IT09bnVsbCl7d2luZG93LllBTUw9bH1pZih0eXBlb2Ygd2luZG93PT09XCJ1bmRlZmluZWRcInx8d2luZG93PT09bnVsbCl7dGhpcy5ZQU1MPWx9dC5leHBvcnRzPWx9LHtcIi4vRHVtcGVyXCI6MSxcIi4vUGFyc2VyXCI6NyxcIi4vVXRpbHNcIjoxMH1dfSx7fSxbMTFdKTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9qcy92ZW5kb3IveWFtbC5taW4uanMiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/build/js/vendor_node.js b/build/js/vendor_node.js index 8598131..08e4c2a 100644 --- a/build/js/vendor_node.js +++ b/build/js/vendor_node.js @@ -1846,7 +1846,7 @@ function loadLocale(name) { try { oldLocale = globalLocale._abbr; var aliasedRequire = require; - __webpack_require__(272)("./" + name); + __webpack_require__(222)("./" + name); getSetGlobalLocale(oldLocale); } catch (e) {} } @@ -4538,7 +4538,7 @@ return hooks; }))); -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(18)(module))) +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(23)(module))) /***/ }), /* 1 */ @@ -5105,7 +5105,7 @@ exports.silentRejection = function (error) { return exports.silenceUncaughtInPromise(coreservices_1.services.$q.reject(error)); }; //# sourceMappingURL=common.js.map -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(17))) +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(22))) /***/ }), /* 2 */ @@ -5123,7 +5123,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); */ /** */ var hof_1 = __webpack_require__(3); -var stateObject_1 = __webpack_require__(25); +var stateObject_1 = __webpack_require__(24); var toStr = Object.prototype.toString; var tis = function (t) { return function (x) { return typeof (x) === t; }; }; exports.isUndefined = tis('undefined'); @@ -5441,10 +5441,10 @@ Object.defineProperty(exports, "__esModule", { value: true }); /** @module common */ /** for typedoc */ __export(__webpack_require__(1)); __export(__webpack_require__(4)); -__export(__webpack_require__(19)); +__export(__webpack_require__(16)); __export(__webpack_require__(3)); __export(__webpack_require__(2)); -__export(__webpack_require__(26)); +__export(__webpack_require__(25)); __export(__webpack_require__(6)); __export(__webpack_require__(7)); //# sourceMappingURL=index.js.map @@ -5464,11 +5464,11 @@ __export(__webpack_require__(7)); */ /** */ Object.defineProperty(exports, "__esModule", { value: true }); var predicates_1 = __webpack_require__(2); -var rejectFactory_1 = __webpack_require__(13); +var rejectFactory_1 = __webpack_require__(12); var common_1 = __webpack_require__(1); var hof_1 = __webpack_require__(3); -var transition_1 = __webpack_require__(20); -var resolvable_1 = __webpack_require__(15); +var transition_1 = __webpack_require__(17); +var resolvable_1 = __webpack_require__(14); /** * Returns a string shortened to a maximum length * @@ -6050,7 +6050,7 @@ var common_1 = __webpack_require__(1); var hof_1 = __webpack_require__(3); var predicates_1 = __webpack_require__(2); var coreservices_1 = __webpack_require__(4); -var paramType_1 = __webpack_require__(29); +var paramType_1 = __webpack_require__(28); /** @hidden */ var hasOwn = Object.prototype.hasOwnProperty; /** @hidden */ var isShorthand = function (cfg) { return ["value", "type", "squash", "array", "dynamic"].filter(hasOwn.bind(cfg || {})).length === 0; @@ -6243,286 +6243,12 @@ exports.Param = Param; /* 11 */ /***/ (function(module, exports, __webpack_require__) { -"use strict"; - - - -module.exports = { - copy: copy, - checkDataType: checkDataType, - checkDataTypes: checkDataTypes, - coerceToTypes: coerceToTypes, - toHash: toHash, - getProperty: getProperty, - escapeQuotes: escapeQuotes, - equal: __webpack_require__(33), - ucs2length: __webpack_require__(233), - varOccurences: varOccurences, - varReplace: varReplace, - cleanUpCode: cleanUpCode, - finalCleanUpCode: finalCleanUpCode, - schemaHasRules: schemaHasRules, - schemaHasRulesExcept: schemaHasRulesExcept, - toQuotedString: toQuotedString, - getPathExpr: getPathExpr, - getPath: getPath, - getData: getData, - unescapeFragment: unescapeFragment, - unescapeJsonPointer: unescapeJsonPointer, - escapeFragment: escapeFragment, - escapeJsonPointer: escapeJsonPointer -}; - - -function copy(o, to) { - to = to || {}; - for (var key in o) to[key] = o[key]; - return to; -} - - -function checkDataType(dataType, data, negate) { - var EQUAL = negate ? ' !== ' : ' === ' - , AND = negate ? ' || ' : ' && ' - , OK = negate ? '!' : '' - , NOT = negate ? '' : '!'; - switch (dataType) { - case 'null': return data + EQUAL + 'null'; - case 'array': return OK + 'Array.isArray(' + data + ')'; - case 'object': return '(' + OK + data + AND + - 'typeof ' + data + EQUAL + '"object"' + AND + - NOT + 'Array.isArray(' + data + '))'; - case 'integer': return '(typeof ' + data + EQUAL + '"number"' + AND + - NOT + '(' + data + ' % 1)' + - AND + data + EQUAL + data + ')'; - default: return 'typeof ' + data + EQUAL + '"' + dataType + '"'; - } -} - - -function checkDataTypes(dataTypes, data) { - switch (dataTypes.length) { - case 1: return checkDataType(dataTypes[0], data, true); - default: - var code = ''; - var types = toHash(dataTypes); - if (types.array && types.object) { - code = types.null ? '(': '(!' + data + ' || '; - code += 'typeof ' + data + ' !== "object")'; - delete types.null; - delete types.array; - delete types.object; - } - if (types.number) delete types.integer; - for (var t in types) - code += (code ? ' && ' : '' ) + checkDataType(t, data, true); - - return code; - } -} - - -var COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]); -function coerceToTypes(optionCoerceTypes, dataTypes) { - if (Array.isArray(dataTypes)) { - var types = []; - for (var i=0; i= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl); - return paths[lvl - up]; - } - - if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl); - data = 'data' + ((lvl - up) || ''); - if (!jsonPointer) return data; - } - - var expr = data; - var segments = jsonPointer.split('/'); - for (var i=0; i 2) res = slice.call(arguments, 1); - resolve(res); - }); - }); -} - -/** - * Convert an array of "yieldables" to a promise. - * Uses `Promise.all()` internally. - * - * @param {Array} obj - * @return {Promise} - * @api private - */ - -function arrayToPromise(obj) { - return Promise.all(obj.map(toPromise, this)); -} - -/** - * Convert an object of "yieldables" to a promise. - * Uses `Promise.all()` internally. - * - * @param {Object} obj - * @return {Promise} - * @api private - */ - -function objectToPromise(obj){ - var results = new obj.constructor(); - var keys = Object.keys(obj); - var promises = []; - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - var promise = toPromise.call(this, obj[key]); - if (promise && isPromise(promise)) defer(promise, key); - else results[key] = obj[key]; - } - return Promise.all(promises).then(function () { - return results; - }); - - function defer(promise, key) { - // predefine the key in the result - results[key] = undefined; - promises.push(promise.then(function (res) { - results[key] = res; - })); - } -} - -/** - * Check if `obj` is a promise. - * - * @param {Object} obj - * @return {Boolean} - * @api private - */ - -function isPromise(obj) { - return 'function' == typeof obj.then; -} - -/** - * Check if `obj` is a generator. - * - * @param {Mixed} obj - * @return {Boolean} - * @api private - */ - -function isGenerator(obj) { - return 'function' == typeof obj.next && 'function' == typeof obj.throw; -} - -/** - * Check if `obj` is a generator function. - * - * @param {Mixed} obj - * @return {Boolean} - * @api private - */ -function isGeneratorFunction(obj) { - var constructor = obj.constructor; - if (!constructor) return false; - if ('GeneratorFunction' === constructor.name || 'GeneratorFunction' === constructor.displayName) return true; - return isGenerator(constructor.prototype); -} - -/** - * Check for plain object. - * - * @param {Mixed} val - * @return {Boolean} - * @api private - */ - -function isObject(val) { - return Object == val.constructor; -} - - -/***/ }), -/* 67 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -module.exports = function generate__limit(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $isMax = $keyword == 'maximum', - $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum', - $schemaExcl = it.schema[$exclusiveKeyword], - $isDataExcl = it.opts.$data && $schemaExcl && $schemaExcl.$data, - $op = $isMax ? '<' : '>', - $notOp = $isMax ? '>' : '<', - $errorKeyword = undefined; - if ($isDataExcl) { - var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr), - $exclusive = 'exclusive' + $lvl, - $exclType = 'exclType' + $lvl, - $exclIsNumber = 'exclIsNumber' + $lvl, - $opExpr = 'op' + $lvl, - $opStr = '\' + ' + $opExpr + ' + \''; - out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; '; - $schemaValueExcl = 'schemaExcl' + $lvl; - out += ' var ' + ($exclusive) + '; var ' + ($exclType) + ' = typeof ' + ($schemaValueExcl) + '; if (' + ($exclType) + ' != \'boolean\' && ' + ($exclType) + ' != \'undefined\' && ' + ($exclType) + ' != \'number\') { '; - var $errorKeyword = $exclusiveKeyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_exclusiveLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'' + ($exclusiveKeyword) + ' should be boolean\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ' + ($exclType) + ' == \'number\' ? ( (' + ($exclusive) + ' = ' + ($schemaValue) + ' === undefined || ' + ($schemaValueExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ') ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValueExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) : ( (' + ($exclusive) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { var op' + ($lvl) + ' = ' + ($exclusive) + ' ? \'' + ($op) + '\' : \'' + ($op) + '=\';'; - } else { - var $exclIsNumber = typeof $schemaExcl == 'number', - $opStr = $op; - if ($exclIsNumber && $isData) { - var $opExpr = '\'' + $opStr + '\''; - out += ' if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ( ' + ($schemaValue) + ' === undefined || ' + ($schemaExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ' ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { '; - } else { - if ($exclIsNumber && $schema === undefined) { - $exclusive = true; - $errorKeyword = $exclusiveKeyword; - $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword; - $schemaValue = $schemaExcl; - $notOp += '='; - } else { - if ($exclIsNumber) $schemaValue = Math[$isMax ? 'min' : 'max']($schemaExcl, $schema); - if ($schemaExcl === ($exclIsNumber ? $schemaValue : true)) { - $exclusive = true; - $errorKeyword = $exclusiveKeyword; - $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword; - $notOp += '='; - } else { - $exclusive = false; - $opStr += '='; - } - } - var $opExpr = '\'' + $opStr + '\''; - out += ' if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' || ' + ($data) + ' !== ' + ($data) + ') { '; - } - } - $errorKeyword = $errorKeyword || $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be ' + ($opStr) + ' '; - if ($isData) { - out += '\' + ' + ($schemaValue); - } else { - out += '' + ($schemaValue) + '\''; - } - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - - -/***/ }), -/* 68 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -module.exports = function generate__limitItems(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $op = $keyword == 'maxItems' ? '>' : '<'; - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limitItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have '; - if ($keyword == 'maxItems') { - out += 'more'; - } else { - out += 'less'; - } - out += ' than '; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + ($schema); - } - out += ' items\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - - -/***/ }), -/* 69 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -module.exports = function generate__limitLength(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $op = $keyword == 'maxLength' ? '>' : '<'; - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - if (it.opts.unicode === false) { - out += ' ' + ($data) + '.length '; - } else { - out += ' ucs2length(' + ($data) + ') '; - } - out += ' ' + ($op) + ' ' + ($schemaValue) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limitLength') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT be '; - if ($keyword == 'maxLength') { - out += 'longer'; - } else { - out += 'shorter'; - } - out += ' than '; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + ($schema); - } - out += ' characters\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - - -/***/ }), -/* 70 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -module.exports = function generate__limitProperties(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $op = $keyword == 'maxProperties' ? '>' : '<'; - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limitProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have '; - if ($keyword == 'maxProperties') { - out += 'more'; - } else { - out += 'less'; - } - out += ' than '; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + ($schema); - } - out += ' properties\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - - -/***/ }), -/* 71 */ +/* 59 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -48314,7 +46471,7 @@ return af; /***/ }), -/* 72 */ +/* 60 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -48462,7 +46619,7 @@ return ar; /***/ }), -/* 73 */ +/* 61 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -48527,7 +46684,7 @@ return arDz; /***/ }), -/* 74 */ +/* 62 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -48592,7 +46749,7 @@ return arKw; /***/ }), -/* 75 */ +/* 63 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -48724,7 +46881,7 @@ return arLy; /***/ }), -/* 76 */ +/* 64 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -48790,7 +46947,7 @@ return arMa; /***/ }), -/* 77 */ +/* 65 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -48901,7 +47058,7 @@ return arSa; /***/ }), -/* 78 */ +/* 66 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -48966,7 +47123,7 @@ return arTn; /***/ }), -/* 79 */ +/* 67 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -49077,7 +47234,7 @@ return az; /***/ }), -/* 80 */ +/* 68 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -49217,7 +47374,7 @@ return be; /***/ }), -/* 81 */ +/* 69 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -49313,7 +47470,7 @@ return bg; /***/ }), -/* 82 */ +/* 70 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -49378,7 +47535,7 @@ return bm; /***/ }), -/* 83 */ +/* 71 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -49503,7 +47660,7 @@ return bn; /***/ }), -/* 84 */ +/* 72 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -49628,7 +47785,7 @@ return bo; /***/ }), -/* 85 */ +/* 73 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -49742,7 +47899,7 @@ return br; /***/ }), -/* 86 */ +/* 74 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -49900,7 +48057,7 @@ return bs; /***/ }), -/* 87 */ +/* 75 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -49994,7 +48151,7 @@ return ca; /***/ }), -/* 88 */ +/* 76 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -50179,7 +48336,7 @@ return cs; /***/ }), -/* 89 */ +/* 77 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -50248,7 +48405,7 @@ return cv; /***/ }), -/* 90 */ +/* 78 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -50335,7 +48492,7 @@ return cy; /***/ }), -/* 91 */ +/* 79 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -50401,7 +48558,7 @@ return da; /***/ }), -/* 92 */ +/* 80 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -50485,7 +48642,7 @@ return de; /***/ }), -/* 93 */ +/* 81 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -50570,7 +48727,7 @@ return deAt; /***/ }), -/* 94 */ +/* 82 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -50654,7 +48811,7 @@ return deCh; /***/ }), -/* 95 */ +/* 83 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -50760,7 +48917,7 @@ return dv; /***/ }), -/* 96 */ +/* 84 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -50866,7 +49023,7 @@ return el; /***/ }), -/* 97 */ +/* 85 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -50939,7 +49096,7 @@ return enAu; /***/ }), -/* 98 */ +/* 86 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -51008,7 +49165,7 @@ return enCa; /***/ }), -/* 99 */ +/* 87 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -51081,7 +49238,7 @@ return enGb; /***/ }), -/* 100 */ +/* 88 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -51154,7 +49311,7 @@ return enIe; /***/ }), -/* 101 */ +/* 89 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -51227,7 +49384,7 @@ return enNz; /***/ }), -/* 102 */ +/* 90 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -51306,7 +49463,7 @@ return eo; /***/ }), -/* 103 */ +/* 91 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -51404,7 +49561,7 @@ return es; /***/ }), -/* 104 */ +/* 92 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -51501,7 +49658,7 @@ return esDo; /***/ }), -/* 105 */ +/* 93 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -51590,7 +49747,7 @@ return esUs; /***/ }), -/* 106 */ +/* 94 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -51677,7 +49834,7 @@ return et; /***/ }), -/* 107 */ +/* 95 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -51749,7 +49906,7 @@ return eu; /***/ }), -/* 108 */ +/* 96 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -51862,7 +50019,7 @@ return fa; /***/ }), -/* 109 */ +/* 97 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -51977,7 +50134,7 @@ return fi; /***/ }), -/* 110 */ +/* 98 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -52043,7 +50200,7 @@ return fo; /***/ }), -/* 111 */ +/* 99 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -52132,7 +50289,7 @@ return fr; /***/ }), -/* 112 */ +/* 100 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -52212,7 +50369,7 @@ return frCa; /***/ }), -/* 113 */ +/* 101 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -52296,7 +50453,7 @@ return frCh; /***/ }), -/* 114 */ +/* 102 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -52377,7 +50534,7 @@ return fy; /***/ }), -/* 115 */ +/* 103 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -52459,7 +50616,7 @@ return gd; /***/ }), -/* 116 */ +/* 104 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -52542,7 +50699,7 @@ return gl; /***/ }), -/* 117 */ +/* 105 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -52671,7 +50828,7 @@ return gomLatn; /***/ }), -/* 118 */ +/* 106 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -52801,7 +50958,7 @@ return gu; /***/ }), -/* 119 */ +/* 107 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -52906,7 +51063,7 @@ return he; /***/ }), -/* 120 */ +/* 108 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -53036,7 +51193,7 @@ return hi; /***/ }), -/* 121 */ +/* 109 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -53196,7 +51353,7 @@ return hr; /***/ }), -/* 122 */ +/* 110 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -53312,7 +51469,7 @@ return hu; /***/ }), -/* 123 */ +/* 111 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -53413,7 +51570,7 @@ return hyAm; /***/ }), -/* 124 */ +/* 112 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -53502,7 +51659,7 @@ return id; /***/ }), -/* 125 */ +/* 113 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -53640,7 +51797,7 @@ return is; /***/ }), -/* 126 */ +/* 114 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -53716,7 +51873,7 @@ return it; /***/ }), -/* 127 */ +/* 115 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -53802,7 +51959,7 @@ return ja; /***/ }), -/* 128 */ +/* 116 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -53891,7 +52048,7 @@ return jv; /***/ }), -/* 129 */ +/* 117 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -53986,7 +52143,7 @@ return ka; /***/ }), -/* 130 */ +/* 118 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -54079,7 +52236,7 @@ return kk; /***/ }), -/* 131 */ +/* 119 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -54143,7 +52300,7 @@ return km; /***/ }), -/* 132 */ +/* 120 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -54275,7 +52432,7 @@ return kn; /***/ }), -/* 133 */ +/* 121 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -54363,7 +52520,7 @@ return ko; /***/ }), -/* 134 */ +/* 122 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -54457,7 +52614,7 @@ return ky; /***/ }), -/* 135 */ +/* 123 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -54600,7 +52757,7 @@ return lb; /***/ }), -/* 136 */ +/* 124 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -54676,7 +52833,7 @@ return lo; /***/ }), -/* 137 */ +/* 125 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -54800,7 +52957,7 @@ return lt; /***/ }), -/* 138 */ +/* 126 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -54904,7 +53061,7 @@ return lv; /***/ }), -/* 139 */ +/* 127 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -55022,7 +53179,7 @@ return me; /***/ }), -/* 140 */ +/* 128 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -55092,7 +53249,7 @@ return mi; /***/ }), -/* 141 */ +/* 129 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -55188,7 +53345,7 @@ return mk; /***/ }), -/* 142 */ +/* 130 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -55275,7 +53432,7 @@ return ml; /***/ }), -/* 143 */ +/* 131 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -55442,7 +53599,7 @@ return mr; /***/ }), -/* 144 */ +/* 132 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -55530,7 +53687,7 @@ return ms; /***/ }), -/* 145 */ +/* 133 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -55619,7 +53776,7 @@ return msMy; /***/ }), -/* 146 */ +/* 134 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -55685,7 +53842,7 @@ return mt; /***/ }), -/* 147 */ +/* 135 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -55787,7 +53944,7 @@ return my; /***/ }), -/* 148 */ +/* 136 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -55856,7 +54013,7 @@ return nb; /***/ }), -/* 149 */ +/* 137 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -55985,7 +54142,7 @@ return ne; /***/ }), -/* 150 */ +/* 138 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -56079,7 +54236,7 @@ return nl; /***/ }), -/* 151 */ +/* 139 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -56173,7 +54330,7 @@ return nlBe; /***/ }), -/* 152 */ +/* 140 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -56239,7 +54396,7 @@ return nn; /***/ }), -/* 153 */ +/* 141 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -56369,7 +54526,7 @@ return paIn; /***/ }), -/* 154 */ +/* 142 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -56501,7 +54658,7 @@ return pl; /***/ }), -/* 155 */ +/* 143 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -56572,7 +54729,7 @@ return pt; /***/ }), -/* 156 */ +/* 144 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -56639,7 +54796,7 @@ return ptBr; /***/ }), -/* 157 */ +/* 145 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -56721,7 +54878,7 @@ return ro; /***/ }), -/* 158 */ +/* 146 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -56911,7 +55068,7 @@ return ru; /***/ }), -/* 159 */ +/* 147 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -57015,7 +55172,7 @@ return sd; /***/ }), -/* 160 */ +/* 148 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -57082,7 +55239,7 @@ return se; /***/ }), -/* 161 */ +/* 149 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -57159,7 +55316,7 @@ return si; /***/ }), -/* 162 */ +/* 150 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -57322,7 +55479,7 @@ return sk; /***/ }), -/* 163 */ +/* 151 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -57501,7 +55658,7 @@ return sl; /***/ }), -/* 164 */ +/* 152 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -57577,7 +55734,7 @@ return sq; /***/ }), -/* 165 */ +/* 153 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -57694,7 +55851,7 @@ return sr; /***/ }), -/* 166 */ +/* 154 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -57811,7 +55968,7 @@ return srCyrl; /***/ }), -/* 167 */ +/* 155 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -57906,7 +56063,7 @@ return ss; /***/ }), -/* 168 */ +/* 156 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -57981,7 +56138,7 @@ return sv; /***/ }), -/* 169 */ +/* 157 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -58046,7 +56203,7 @@ return sw; /***/ }), -/* 170 */ +/* 158 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -58182,7 +56339,7 @@ return ta; /***/ }), -/* 171 */ +/* 159 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -58277,7 +56434,7 @@ return te; /***/ }), -/* 172 */ +/* 160 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -58351,7 +56508,7 @@ return tet; /***/ }), -/* 173 */ +/* 161 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -58424,7 +56581,7 @@ return th; /***/ }), -/* 174 */ +/* 162 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -58492,7 +56649,7 @@ return tlPh; /***/ }), -/* 175 */ +/* 163 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -58620,7 +56777,7 @@ return tlh; /***/ }), -/* 176 */ +/* 164 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -58716,7 +56873,7 @@ return tr; /***/ }), -/* 177 */ +/* 165 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -58814,7 +56971,7 @@ return tzl; /***/ }), -/* 178 */ +/* 166 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -58878,7 +57035,7 @@ return tzm; /***/ }), -/* 179 */ +/* 167 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -58942,7 +57099,7 @@ return tzmLatn; /***/ }), -/* 180 */ +/* 168 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -59100,7 +57257,7 @@ return uk; /***/ }), -/* 181 */ +/* 169 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -59205,7 +57362,7 @@ return ur; /***/ }), -/* 182 */ +/* 170 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -59269,7 +57426,7 @@ return uz; /***/ }), -/* 183 */ +/* 171 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -59333,7 +57490,7 @@ return uzLatn; /***/ }), -/* 184 */ +/* 172 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -59418,7 +57575,7 @@ return vi; /***/ }), -/* 185 */ +/* 173 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -59492,7 +57649,7 @@ return xPseudo; /***/ }), -/* 186 */ +/* 174 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -59558,7 +57715,7 @@ return yo; /***/ }), -/* 187 */ +/* 175 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -59675,7 +57832,7 @@ return zhCn; /***/ }), -/* 188 */ +/* 176 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -59786,7 +57943,7 @@ return zhHk; /***/ }), -/* 189 */ +/* 177 */ /***/ (function(module, exports, __webpack_require__) { //! moment.js locale configuration @@ -59896,9 +58053,9 @@ return zhTw; /***/ }), -/* 190 */, -/* 191 */, -/* 192 */ +/* 178 */, +/* 179 */, +/* 180 */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(__webpack_provided_window_dot_jQuery) {/** @@ -93790,37 +91947,36 @@ $provide.value("$locale", { })(window); !window.angular.$$csp().noInlineStyle && window.angular.element(document.head).prepend(''); -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(16))) +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(15))) /***/ }), -/* 193 */, -/* 194 */, -/* 195 */, -/* 196 */, -/* 197 */, -/* 198 */, -/* 199 */, -/* 200 */, -/* 201 */, -/* 202 */ +/* 181 */, +/* 182 */, +/* 183 */, +/* 184 */, +/* 185 */, +/* 186 */, +/* 187 */, +/* 188 */, +/* 189 */, +/* 190 */ /***/ (function(module, exports, __webpack_require__) { -__webpack_require__(203); -__webpack_require__(225); -__webpack_require__(12); -__webpack_require__(263); -__webpack_require__(267); -__webpack_require__(269); -__webpack_require__(271); -__webpack_require__(16); -__webpack_require__(36); -__webpack_require__(35); +__webpack_require__(191); +__webpack_require__(11); +__webpack_require__(213); +__webpack_require__(217); +__webpack_require__(219); +__webpack_require__(221); +__webpack_require__(32); +__webpack_require__(15); +__webpack_require__(31); __webpack_require__(0); -module.exports = __webpack_require__(37); +module.exports = __webpack_require__(33); /***/ }), -/* 203 */ +/* 191 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -93831,7 +91987,7 @@ module.exports = __webpack_require__(37); * @license MIT License, http://www.opensource.org/licenses/MIT */ (function (global, factory) { - true ? factory(exports, __webpack_require__(12), __webpack_require__(204)) : + true ? factory(exports, __webpack_require__(11), __webpack_require__(192)) : typeof define === 'function' && define.amd ? define(['exports', 'angular', '@uirouter/core'], factory) : (factory((global['@uirouter/angularjs'] = {}),global.angular,global['@uirouter/core'])); }(this, (function (exports,ng_from_import,core) { 'use strict'; @@ -95845,7 +94001,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); /***/ }), -/* 204 */ +/* 192 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -95859,21 +94015,21 @@ function __export(m) { } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(5)); -__export(__webpack_require__(205)); +__export(__webpack_require__(193)); +__export(__webpack_require__(194)); +__export(__webpack_require__(195)); +__export(__webpack_require__(196)); __export(__webpack_require__(206)); __export(__webpack_require__(207)); __export(__webpack_require__(208)); -__export(__webpack_require__(218)); -__export(__webpack_require__(219)); -__export(__webpack_require__(220)); -__export(__webpack_require__(52)); -__export(__webpack_require__(47)); -__export(__webpack_require__(221)); -__export(__webpack_require__(224)); +__export(__webpack_require__(48)); +__export(__webpack_require__(43)); +__export(__webpack_require__(209)); +__export(__webpack_require__(212)); //# sourceMappingURL=index.js.map /***/ }), -/* 205 */ +/* 193 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -95883,13 +94039,13 @@ function __export(m) { } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(10)); -__export(__webpack_require__(40)); -__export(__webpack_require__(41)); -__export(__webpack_require__(29)); +__export(__webpack_require__(36)); +__export(__webpack_require__(37)); +__export(__webpack_require__(28)); //# sourceMappingURL=index.js.map /***/ }), -/* 206 */ +/* 194 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -95899,12 +94055,12 @@ function __export(m) { } Object.defineProperty(exports, "__esModule", { value: true }); /** @module path */ /** for typedoc */ -__export(__webpack_require__(28)); -__export(__webpack_require__(21)); +__export(__webpack_require__(27)); +__export(__webpack_require__(18)); //# sourceMappingURL=index.js.map /***/ }), -/* 207 */ +/* 195 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -95914,13 +94070,13 @@ function __export(m) { } Object.defineProperty(exports, "__esModule", { value: true }); /** @module resolve */ /** for typedoc */ -__export(__webpack_require__(39)); -__export(__webpack_require__(15)); -__export(__webpack_require__(22)); +__export(__webpack_require__(35)); +__export(__webpack_require__(14)); +__export(__webpack_require__(19)); //# sourceMappingURL=index.js.map /***/ }), -/* 208 */ +/* 196 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -95929,25 +94085,25 @@ function __export(m) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } Object.defineProperty(exports, "__esModule", { value: true }); +__export(__webpack_require__(38)); +__export(__webpack_require__(24)); +__export(__webpack_require__(39)); +__export(__webpack_require__(40)); +__export(__webpack_require__(41)); __export(__webpack_require__(42)); -__export(__webpack_require__(25)); -__export(__webpack_require__(43)); -__export(__webpack_require__(44)); -__export(__webpack_require__(45)); -__export(__webpack_require__(46)); __export(__webpack_require__(9)); //# sourceMappingURL=index.js.map /***/ }), -/* 209 */ +/* 197 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** @module hooks */ /** */ -var transition_1 = __webpack_require__(20); -var router_1 = __webpack_require__(47); +var transition_1 = __webpack_require__(17); +var router_1 = __webpack_require__(43); function addCoreResolvables(trans) { trans.addResolvable({ token: router_1.UIRouter, deps: [], resolveFn: function () { return trans.router; }, data: trans.router }, ""); trans.addResolvable({ token: transition_1.Transition, deps: [], resolveFn: function () { return trans; }, data: trans }, ""); @@ -95963,7 +94119,7 @@ exports.registerAddCoreResolvables = function (transitionService) { //# sourceMappingURL=coreResolvables.js.map /***/ }), -/* 210 */ +/* 198 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -96006,7 +94162,7 @@ exports.registerRedirectToHook = function (transitionService) { //# sourceMappingURL=redirectTo.js.map /***/ }), -/* 211 */ +/* 199 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -96069,7 +94225,7 @@ exports.registerOnEnterHook = function (transitionService) { //# sourceMappingURL=onEnterExitRetain.js.map /***/ }), -/* 212 */ +/* 200 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -96078,7 +94234,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); /** @module hooks */ /** for typedoc */ var common_1 = __webpack_require__(1); -var resolveContext_1 = __webpack_require__(22); +var resolveContext_1 = __webpack_require__(19); var hof_1 = __webpack_require__(3); exports.RESOLVE_HOOK_PRIORITY = 1000; /** @@ -96113,5964 +94269,391 @@ var lazyResolveState = function (trans, state) { .resolvePath("LAZY", trans) .then(common_1.noop); }; -exports.registerLazyResolveState = function (transitionService) { - return transitionService.onEnter({ entering: hof_1.val(true) }, lazyResolveState, { priority: exports.RESOLVE_HOOK_PRIORITY }); -}; -/** - * A [[TransitionHookFn]] which resolves any dynamically added (LAZY or EAGER) Resolvables. - * - * Registered using `transitionService.onFinish({}, eagerResolvePath, { priority: 1000 });` - * - * After all entering states have been entered, this hook resolves any remaining Resolvables. - * These are typically dynamic resolves which were added by some Transition Hook using [[Transition.addResolvable]]. - * - * See [[StateDeclaration.resolve]] - */ -var resolveRemaining = function (trans) { - return new resolveContext_1.ResolveContext(trans.treeChanges().to) - .resolvePath("LAZY", trans) - .then(common_1.noop); -}; -exports.registerResolveRemaining = function (transitionService) { - return transitionService.onFinish({}, resolveRemaining, { priority: exports.RESOLVE_HOOK_PRIORITY }); -}; -//# sourceMappingURL=resolve.js.map - -/***/ }), -/* 213 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -/** @module hooks */ /** for typedoc */ -var common_1 = __webpack_require__(1); -var coreservices_1 = __webpack_require__(4); -/** - * A [[TransitionHookFn]] which waits for the views to load - * - * Registered using `transitionService.onStart({}, loadEnteringViews);` - * - * Allows the views to do async work in [[ViewConfig.load]] before the transition continues. - * In angular 1, this includes loading the templates. - */ -var loadEnteringViews = function (transition) { - var $q = coreservices_1.services.$q; - var enteringViews = transition.views("entering"); - if (!enteringViews.length) - return; - return $q.all(enteringViews.map(function (view) { return $q.when(view.load()); })).then(common_1.noop); -}; -exports.registerLoadEnteringViews = function (transitionService) { - return transitionService.onFinish({}, loadEnteringViews); -}; -/** - * A [[TransitionHookFn]] which activates the new views when a transition is successful. - * - * Registered using `transitionService.onSuccess({}, activateViews);` - * - * After a transition is complete, this hook deactivates the old views from the previous state, - * and activates the new views from the destination state. - * - * See [[ViewService]] - */ -var activateViews = function (transition) { - var enteringViews = transition.views("entering"); - var exitingViews = transition.views("exiting"); - if (!enteringViews.length && !exitingViews.length) - return; - var $view = transition.router.viewService; - exitingViews.forEach(function (vc) { return $view.deactivateViewConfig(vc); }); - enteringViews.forEach(function (vc) { return $view.activateViewConfig(vc); }); - $view.sync(); -}; -exports.registerActivateViews = function (transitionService) { - return transitionService.onSuccess({}, activateViews); -}; -//# sourceMappingURL=views.js.map - -/***/ }), -/* 214 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var common_1 = __webpack_require__(1); -/** - * A [[TransitionHookFn]] which updates global UI-Router state - * - * Registered using `transitionService.onBefore({}, updateGlobalState);` - * - * Before a [[Transition]] starts, updates the global value of "the current transition" ([[Globals.transition]]). - * After a successful [[Transition]], updates the global values of "the current state" - * ([[Globals.current]] and [[Globals.$current]]) and "the current param values" ([[Globals.params]]). - * - * See also the deprecated properties: - * [[StateService.transition]], [[StateService.current]], [[StateService.params]] - */ -var updateGlobalState = function (trans) { - var globals = trans.router.globals; - var transitionSuccessful = function () { - globals.successfulTransitions.enqueue(trans); - globals.$current = trans.$to(); - globals.current = globals.$current.self; - common_1.copy(trans.params(), globals.params); - }; - var clearCurrentTransition = function () { - // Do not clear globals.transition if a different transition has started in the meantime - if (globals.transition === trans) - globals.transition = null; - }; - trans.onSuccess({}, transitionSuccessful, { priority: 10000 }); - trans.promise.then(clearCurrentTransition, clearCurrentTransition); -}; -exports.registerUpdateGlobalState = function (transitionService) { - return transitionService.onCreate({}, updateGlobalState); -}; -//# sourceMappingURL=updateGlobals.js.map - -/***/ }), -/* 215 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -/** - * A [[TransitionHookFn]] which updates the URL after a successful transition - * - * Registered using `transitionService.onSuccess({}, updateUrl);` - */ -var updateUrl = function (transition) { - var options = transition.options(); - var $state = transition.router.stateService; - var $urlRouter = transition.router.urlRouter; - // Dont update the url in these situations: - // The transition was triggered by a URL sync (options.source === 'url') - // The user doesn't want the url to update (options.location === false) - // The destination state, and all parents have no navigable url - if (options.source !== 'url' && options.location && $state.$current.navigable) { - var urlOptions = { replace: options.location === 'replace' }; - $urlRouter.push($state.$current.navigable.url, $state.params, urlOptions); - } - $urlRouter.update(true); -}; -exports.registerUpdateUrl = function (transitionService) { - return transitionService.onSuccess({}, updateUrl, { priority: 9999 }); -}; -//# sourceMappingURL=url.js.map - -/***/ }), -/* 216 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** @module hooks */ /** */ -Object.defineProperty(exports, "__esModule", { value: true }); -var trace_1 = __webpack_require__(7); -var rejectFactory_1 = __webpack_require__(13); -/** - * A [[TransitionHookFn]] that skips a transition if it should be ignored - * - * This hook is invoked at the end of the onBefore phase. - * - * If the transition should be ignored (because no parameter or states changed) - * then the transition is ignored and not processed. - */ -function ignoredHook(trans) { - var ignoredReason = trans._ignoredReason(); - if (!ignoredReason) - return; - trace_1.trace.traceTransitionIgnored(trans); - var pending = trans.router.globals.transition; - // The user clicked a link going back to the *current state* ('A') - // However, there is also a pending transition in flight (to 'B') - // Abort the transition to 'B' because the user now wants to be back at 'A'. - if (ignoredReason === 'SameAsCurrent' && pending) { - pending.abort(); - } - return rejectFactory_1.Rejection.ignored().toPromise(); -} -exports.registerIgnoredTransitionHook = function (transitionService) { - return transitionService.onBefore({}, ignoredHook, { priority: -9999 }); -}; -//# sourceMappingURL=ignoredTransition.js.map - -/***/ }), -/* 217 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** @module hooks */ /** */ -Object.defineProperty(exports, "__esModule", { value: true }); -/** - * A [[TransitionHookFn]] that rejects the Transition if it is invalid - * - * This hook is invoked at the end of the onBefore phase. - * If the transition is invalid (for example, param values do not validate) - * then the transition is rejected. - */ -function invalidTransitionHook(trans) { - if (!trans.valid()) { - throw new Error(trans.error()); - } -} -exports.registerInvalidTransitionHook = function (transitionService) { - return transitionService.onBefore({}, invalidTransitionHook, { priority: -10000 }); -}; -//# sourceMappingURL=invalidTransition.js.map - -/***/ }), -/* 218 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; -} -Object.defineProperty(exports, "__esModule", { value: true }); -/** - * # Transition subsystem - * - * This module contains APIs related to a Transition. - * - * See: - * - [[TransitionService]] - * - [[Transition]] - * - [[HookFn]], [[TransitionHookFn]], [[TransitionStateHookFn]], [[HookMatchCriteria]], [[HookResult]] - * - * @coreapi - * @preferred - * @module transition - */ /** for typedoc */ -__export(__webpack_require__(8)); -__export(__webpack_require__(38)); -__export(__webpack_require__(27)); -__export(__webpack_require__(13)); -__export(__webpack_require__(20)); -__export(__webpack_require__(14)); -__export(__webpack_require__(55)); -__export(__webpack_require__(30)); -//# sourceMappingURL=index.js.map - -/***/ }), -/* 219 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; -} -Object.defineProperty(exports, "__esModule", { value: true }); -__export(__webpack_require__(23)); -__export(__webpack_require__(48)); -__export(__webpack_require__(49)); -__export(__webpack_require__(50)); -__export(__webpack_require__(53)); -//# sourceMappingURL=index.js.map - -/***/ }), -/* 220 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; -} -Object.defineProperty(exports, "__esModule", { value: true }); -__export(__webpack_require__(51)); -//# sourceMappingURL=index.js.map - -/***/ }), -/* 221 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; -} -Object.defineProperty(exports, "__esModule", { value: true }); -/** - * @internalapi - * @module vanilla - */ -/** */ -__export(__webpack_require__(222)); -//# sourceMappingURL=vanilla.js.map - -/***/ }), -/* 222 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; -} -Object.defineProperty(exports, "__esModule", { value: true }); -__export(__webpack_require__(56)); -__export(__webpack_require__(57)); -__export(__webpack_require__(24)); -__export(__webpack_require__(58)); -__export(__webpack_require__(59)); -__export(__webpack_require__(60)); -__export(__webpack_require__(61)); -__export(__webpack_require__(62)); -__export(__webpack_require__(31)); -__export(__webpack_require__(223)); -//# sourceMappingURL=index.js.map - -/***/ }), -/* 223 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -/** - * @internalapi - * @module vanilla - */ -/** */ -var browserLocationConfig_1 = __webpack_require__(62); -var hashLocationService_1 = __webpack_require__(58); -var utils_1 = __webpack_require__(31); -var pushStateLocationService_1 = __webpack_require__(60); -var memoryLocationService_1 = __webpack_require__(59); -var memoryLocationConfig_1 = __webpack_require__(61); -var injector_1 = __webpack_require__(57); -var q_1 = __webpack_require__(56); -var coreservices_1 = __webpack_require__(4); -function servicesPlugin(router) { - coreservices_1.services.$injector = injector_1.$injector; - coreservices_1.services.$q = q_1.$q; - return { name: "vanilla.services", $q: q_1.$q, $injector: injector_1.$injector, dispose: function () { return null; } }; -} -exports.servicesPlugin = servicesPlugin; -/** A `UIRouterPlugin` uses the browser hash to get/set the current location */ -exports.hashLocationPlugin = utils_1.locationPluginFactory('vanilla.hashBangLocation', false, hashLocationService_1.HashLocationService, browserLocationConfig_1.BrowserLocationConfig); -/** A `UIRouterPlugin` that gets/sets the current location using the browser's `location` and `history` apis */ -exports.pushStateLocationPlugin = utils_1.locationPluginFactory("vanilla.pushStateLocation", true, pushStateLocationService_1.PushStateLocationService, browserLocationConfig_1.BrowserLocationConfig); -/** A `UIRouterPlugin` that gets/sets the current location from an in-memory object */ -exports.memoryLocationPlugin = utils_1.locationPluginFactory("vanilla.memoryLocation", false, memoryLocationService_1.MemoryLocationService, memoryLocationConfig_1.MemoryLocationConfig); -//# sourceMappingURL=plugins.js.map - -/***/ }), -/* 224 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** - * # Core classes and interfaces - * - * The classes and interfaces that are core to ui-router and do not belong - * to a more specific subsystem (such as resolve). - * - * @coreapi - * @preferred - * @module core - */ /** for typedoc */ -Object.defineProperty(exports, "__esModule", { value: true }); -/** @internalapi */ -var UIRouterPluginBase = /** @class */ (function () { - function UIRouterPluginBase() { - } - UIRouterPluginBase.prototype.dispose = function (router) { }; - return UIRouterPluginBase; -}()); -exports.UIRouterPluginBase = UIRouterPluginBase; -//# sourceMappingURL=interface.js.map - -/***/ }), -/* 225 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var compileSchema = __webpack_require__(226) - , resolve = __webpack_require__(32) - , Cache = __webpack_require__(235) - , SchemaObject = __webpack_require__(63) - , stableStringify = __webpack_require__(64) - , formats = __webpack_require__(236) - , rules = __webpack_require__(237) - , $dataMetaSchema = __webpack_require__(256) - , patternGroups = __webpack_require__(257) - , util = __webpack_require__(11) - , co = __webpack_require__(66); - -module.exports = Ajv; - -Ajv.prototype.validate = validate; -Ajv.prototype.compile = compile; -Ajv.prototype.addSchema = addSchema; -Ajv.prototype.addMetaSchema = addMetaSchema; -Ajv.prototype.validateSchema = validateSchema; -Ajv.prototype.getSchema = getSchema; -Ajv.prototype.removeSchema = removeSchema; -Ajv.prototype.addFormat = addFormat; -Ajv.prototype.errorsText = errorsText; - -Ajv.prototype._addSchema = _addSchema; -Ajv.prototype._compile = _compile; - -Ajv.prototype.compileAsync = __webpack_require__(258); -var customKeyword = __webpack_require__(259); -Ajv.prototype.addKeyword = customKeyword.add; -Ajv.prototype.getKeyword = customKeyword.get; -Ajv.prototype.removeKeyword = customKeyword.remove; - -var errorClasses = __webpack_require__(34); -Ajv.ValidationError = errorClasses.Validation; -Ajv.MissingRefError = errorClasses.MissingRef; -Ajv.$dataMetaSchema = $dataMetaSchema; - -var META_SCHEMA_ID = 'http://json-schema.org/draft-06/schema'; - -var META_IGNORE_OPTIONS = [ 'removeAdditional', 'useDefaults', 'coerceTypes' ]; -var META_SUPPORT_DATA = ['/properties']; - -/** - * Creates validator instance. - * Usage: `Ajv(opts)` - * @param {Object} opts optional options - * @return {Object} ajv instance - */ -function Ajv(opts) { - if (!(this instanceof Ajv)) return new Ajv(opts); - opts = this._opts = util.copy(opts) || {}; - setLogger(this); - this._schemas = {}; - this._refs = {}; - this._fragments = {}; - this._formats = formats(opts.format); - var schemaUriFormat = this._schemaUriFormat = this._formats['uri-reference']; - this._schemaUriFormatFunc = function (str) { return schemaUriFormat.test(str); }; - - this._cache = opts.cache || new Cache; - this._loadingSchemas = {}; - this._compilations = []; - this.RULES = rules(); - this._getId = chooseGetId(opts); - - opts.loopRequired = opts.loopRequired || Infinity; - if (opts.errorDataPath == 'property') opts._errorDataPathProperty = true; - if (opts.serialize === undefined) opts.serialize = stableStringify; - this._metaOpts = getMetaSchemaOptions(this); - - if (opts.formats) addInitialFormats(this); - addDraft6MetaSchema(this); - if (typeof opts.meta == 'object') this.addMetaSchema(opts.meta); - addInitialSchemas(this); - if (opts.patternGroups) patternGroups(this); -} - - - -/** - * Validate data using schema - * Schema will be compiled and cached (using serialized JSON as key. [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used to serialize. - * @this Ajv - * @param {String|Object} schemaKeyRef key, ref or schema object - * @param {Any} data to be validated - * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`). - */ -function validate(schemaKeyRef, data) { - var v; - if (typeof schemaKeyRef == 'string') { - v = this.getSchema(schemaKeyRef); - if (!v) throw new Error('no schema with key or ref "' + schemaKeyRef + '"'); - } else { - var schemaObj = this._addSchema(schemaKeyRef); - v = schemaObj.validate || this._compile(schemaObj); - } - - var valid = v(data); - if (v.$async === true) - return this._opts.async == '*' ? co(valid) : valid; - this.errors = v.errors; - return valid; -} - - -/** - * Create validating function for passed schema. - * @this Ajv - * @param {Object} schema schema object - * @param {Boolean} _meta true if schema is a meta-schema. Used internally to compile meta schemas of custom keywords. - * @return {Function} validating function - */ -function compile(schema, _meta) { - var schemaObj = this._addSchema(schema, undefined, _meta); - return schemaObj.validate || this._compile(schemaObj); -} - - -/** - * Adds schema to the instance. - * @this Ajv - * @param {Object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored. - * @param {String} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`. - * @param {Boolean} _skipValidation true to skip schema validation. Used internally, option validateSchema should be used instead. - * @param {Boolean} _meta true if schema is a meta-schema. Used internally, addMetaSchema should be used instead. - * @return {Ajv} this for method chaining - */ -function addSchema(schema, key, _skipValidation, _meta) { - if (Array.isArray(schema)){ - for (var i=0; i} errors optional array of validation errors, if not passed errors from the instance are used. - * @param {Object} options optional options with properties `separator` and `dataVar`. - * @return {String} human readable string with all errors descriptions - */ -function errorsText(errors, options) { - errors = errors || this.errors; - if (!errors) return 'No errors'; - options = options || {}; - var separator = options.separator === undefined ? ', ' : options.separator; - var dataVar = options.dataVar === undefined ? 'data' : options.dataVar; - - var text = ''; - for (var i=0; i= 0) return { index: index, compiling: true }; - index = this._compilations.length; - this._compilations[index] = { - schema: schema, - root: root, - baseId: baseId - }; - return { index: index, compiling: false }; -} - - -/** - * Removes the schema from the currently compiled list - * @this Ajv - * @param {Object} schema schema to compile - * @param {Object} root root object - * @param {String} baseId base schema ID - */ -function endCompiling(schema, root, baseId) { - /* jshint validthis: true */ - var i = compIndex.call(this, schema, root, baseId); - if (i >= 0) this._compilations.splice(i, 1); -} - - -/** - * Index of schema compilation in the currently compiled list - * @this Ajv - * @param {Object} schema schema to compile - * @param {Object} root root object - * @param {String} baseId base schema ID - * @return {Integer} compilation index - */ -function compIndex(schema, root, baseId) { - /* jshint validthis: true */ - for (var i=0; i', '"', '`', ' ', '\r', '\n', '\t'], - - // RFC 2396: characters not allowed for various reasons. - unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims), - - // Allowed by RFCs, but cause of XSS attacks. Always escape these. - autoEscape = ['\''].concat(unwise), - // Characters that are never ever allowed in a hostname. - // Note that any invalid chars are also handled, but these - // are the ones that are *expected* to be seen, so we fast-path - // them. - nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape), - hostEndingChars = ['/', '?', '#'], - hostnameMaxLen = 255, - hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/, - hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/, - // protocols that can allow "unsafe" and "unwise" chars. - unsafeProtocol = { - 'javascript': true, - 'javascript:': true - }, - // protocols that never have a hostname. - hostlessProtocol = { - 'javascript': true, - 'javascript:': true - }, - // protocols that always contain a // bit. - slashedProtocol = { - 'http': true, - 'https': true, - 'ftp': true, - 'gopher': true, - 'file': true, - 'http:': true, - 'https:': true, - 'ftp:': true, - 'gopher:': true, - 'file:': true - }, - querystring = __webpack_require__(230); - -function urlParse(url, parseQueryString, slashesDenoteHost) { - if (url && util.isObject(url) && url instanceof Url) return url; - - var u = new Url; - u.parse(url, parseQueryString, slashesDenoteHost); - return u; -} - -Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) { - if (!util.isString(url)) { - throw new TypeError("Parameter 'url' must be a string, not " + typeof url); - } - - // Copy chrome, IE, opera backslash-handling behavior. - // Back slashes before the query string get converted to forward slashes - // See: https://code.google.com/p/chromium/issues/detail?id=25916 - var queryIndex = url.indexOf('?'), - splitter = - (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#', - uSplit = url.split(splitter), - slashRegex = /\\/g; - uSplit[0] = uSplit[0].replace(slashRegex, '/'); - url = uSplit.join(splitter); - - var rest = url; - - // trim before proceeding. - // This is to support parse stuff like " http://foo.com \n" - rest = rest.trim(); - - if (!slashesDenoteHost && url.split('#').length === 1) { - // Try fast path regexp - var simplePath = simplePathPattern.exec(rest); - if (simplePath) { - this.path = rest; - this.href = rest; - this.pathname = simplePath[1]; - if (simplePath[2]) { - this.search = simplePath[2]; - if (parseQueryString) { - this.query = querystring.parse(this.search.substr(1)); - } else { - this.query = this.search.substr(1); - } - } else if (parseQueryString) { - this.search = ''; - this.query = {}; - } - return this; - } - } - - var proto = protocolPattern.exec(rest); - if (proto) { - proto = proto[0]; - var lowerProto = proto.toLowerCase(); - this.protocol = lowerProto; - rest = rest.substr(proto.length); - } - - // figure out if it's got a host - // user@server is *always* interpreted as a hostname, and url - // resolution will treat //foo/bar as host=foo,path=bar because that's - // how the browser resolves relative URLs. - if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) { - var slashes = rest.substr(0, 2) === '//'; - if (slashes && !(proto && hostlessProtocol[proto])) { - rest = rest.substr(2); - this.slashes = true; - } - } - - if (!hostlessProtocol[proto] && - (slashes || (proto && !slashedProtocol[proto]))) { - - // there's a hostname. - // the first instance of /, ?, ;, or # ends the host. - // - // If there is an @ in the hostname, then non-host chars *are* allowed - // to the left of the last @ sign, unless some host-ending character - // comes *before* the @-sign. - // URLs are obnoxious. - // - // ex: - // http://a@b@c/ => user:a@b host:c - // http://a@b?@c => user:a host:c path:/?@c - - // v0.12 TODO(isaacs): This is not quite how Chrome does things. - // Review our test case against browsers more comprehensively. - - // find the first instance of any hostEndingChars - var hostEnd = -1; - for (var i = 0; i < hostEndingChars.length; i++) { - var hec = rest.indexOf(hostEndingChars[i]); - if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) - hostEnd = hec; - } - - // at this point, either we have an explicit point where the - // auth portion cannot go past, or the last @ char is the decider. - var auth, atSign; - if (hostEnd === -1) { - // atSign can be anywhere. - atSign = rest.lastIndexOf('@'); - } else { - // atSign must be in auth portion. - // http://a@b/c@d => host:b auth:a path:/c@d - atSign = rest.lastIndexOf('@', hostEnd); - } - - // Now we have a portion which is definitely the auth. - // Pull that off. - if (atSign !== -1) { - auth = rest.slice(0, atSign); - rest = rest.slice(atSign + 1); - this.auth = decodeURIComponent(auth); - } - - // the host is the remaining to the left of the first non-host char - hostEnd = -1; - for (var i = 0; i < nonHostChars.length; i++) { - var hec = rest.indexOf(nonHostChars[i]); - if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) - hostEnd = hec; - } - // if we still have not hit it, then the entire thing is a host. - if (hostEnd === -1) - hostEnd = rest.length; - - this.host = rest.slice(0, hostEnd); - rest = rest.slice(hostEnd); - - // pull out port. - this.parseHost(); - - // we've indicated that there is a hostname, - // so even if it's empty, it has to be present. - this.hostname = this.hostname || ''; - - // if hostname begins with [ and ends with ] - // assume that it's an IPv6 address. - var ipv6Hostname = this.hostname[0] === '[' && - this.hostname[this.hostname.length - 1] === ']'; - - // validate a little. - if (!ipv6Hostname) { - var hostparts = this.hostname.split(/\./); - for (var i = 0, l = hostparts.length; i < l; i++) { - var part = hostparts[i]; - if (!part) continue; - if (!part.match(hostnamePartPattern)) { - var newpart = ''; - for (var j = 0, k = part.length; j < k; j++) { - if (part.charCodeAt(j) > 127) { - // we replace non-ASCII char with a temporary placeholder - // we need this to make sure size of hostname is not - // broken by replacing non-ASCII by nothing - newpart += 'x'; - } else { - newpart += part[j]; - } - } - // we test again with ASCII char only - if (!newpart.match(hostnamePartPattern)) { - var validParts = hostparts.slice(0, i); - var notHost = hostparts.slice(i + 1); - var bit = part.match(hostnamePartStart); - if (bit) { - validParts.push(bit[1]); - notHost.unshift(bit[2]); - } - if (notHost.length) { - rest = '/' + notHost.join('.') + rest; - } - this.hostname = validParts.join('.'); - break; - } - } - } - } - - if (this.hostname.length > hostnameMaxLen) { - this.hostname = ''; - } else { - // hostnames are always lower case. - this.hostname = this.hostname.toLowerCase(); - } - - if (!ipv6Hostname) { - // IDNA Support: Returns a punycoded representation of "domain". - // It only converts parts of the domain name that - // have non-ASCII characters, i.e. it doesn't matter if - // you call it with a domain that already is ASCII-only. - this.hostname = punycode.toASCII(this.hostname); - } - - var p = this.port ? ':' + this.port : ''; - var h = this.hostname || ''; - this.host = h + p; - this.href += this.host; - - // strip [ and ] from the hostname - // the host field still retains them, though - if (ipv6Hostname) { - this.hostname = this.hostname.substr(1, this.hostname.length - 2); - if (rest[0] !== '/') { - rest = '/' + rest; - } - } - } - - // now rest is set to the post-host stuff. - // chop off any delim chars. - if (!unsafeProtocol[lowerProto]) { - - // First, make 100% sure that any "autoEscape" chars get - // escaped, even if encodeURIComponent doesn't think they - // need to be. - for (var i = 0, l = autoEscape.length; i < l; i++) { - var ae = autoEscape[i]; - if (rest.indexOf(ae) === -1) - continue; - var esc = encodeURIComponent(ae); - if (esc === ae) { - esc = escape(ae); - } - rest = rest.split(ae).join(esc); - } - } - - - // chop off from the tail first. - var hash = rest.indexOf('#'); - if (hash !== -1) { - // got a fragment string. - this.hash = rest.substr(hash); - rest = rest.slice(0, hash); - } - var qm = rest.indexOf('?'); - if (qm !== -1) { - this.search = rest.substr(qm); - this.query = rest.substr(qm + 1); - if (parseQueryString) { - this.query = querystring.parse(this.query); - } - rest = rest.slice(0, qm); - } else if (parseQueryString) { - // no query string, but parseQueryString still requested - this.search = ''; - this.query = {}; - } - if (rest) this.pathname = rest; - if (slashedProtocol[lowerProto] && - this.hostname && !this.pathname) { - this.pathname = '/'; - } - - //to support http.request - if (this.pathname || this.search) { - var p = this.pathname || ''; - var s = this.search || ''; - this.path = p + s; - } - - // finally, reconstruct the href based on what has been validated. - this.href = this.format(); - return this; -}; - -// format a parsed object into a url string -function urlFormat(obj) { - // ensure it's an object, and not a string url. - // If it's an obj, this is a no-op. - // this way, you can call url_format() on strings - // to clean up potentially wonky urls. - if (util.isString(obj)) obj = urlParse(obj); - if (!(obj instanceof Url)) return Url.prototype.format.call(obj); - return obj.format(); -} - -Url.prototype.format = function() { - var auth = this.auth || ''; - if (auth) { - auth = encodeURIComponent(auth); - auth = auth.replace(/%3A/i, ':'); - auth += '@'; - } - - var protocol = this.protocol || '', - pathname = this.pathname || '', - hash = this.hash || '', - host = false, - query = ''; - - if (this.host) { - host = auth + this.host; - } else if (this.hostname) { - host = auth + (this.hostname.indexOf(':') === -1 ? - this.hostname : - '[' + this.hostname + ']'); - if (this.port) { - host += ':' + this.port; - } - } - - if (this.query && - util.isObject(this.query) && - Object.keys(this.query).length) { - query = querystring.stringify(this.query); - } - - var search = this.search || (query && ('?' + query)) || ''; - - if (protocol && protocol.substr(-1) !== ':') protocol += ':'; - - // only the slashedProtocols get the //. Not mailto:, xmpp:, etc. - // unless they had them to begin with. - if (this.slashes || - (!protocol || slashedProtocol[protocol]) && host !== false) { - host = '//' + (host || ''); - if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname; - } else if (!host) { - host = ''; - } - - if (hash && hash.charAt(0) !== '#') hash = '#' + hash; - if (search && search.charAt(0) !== '?') search = '?' + search; - - pathname = pathname.replace(/[?#]/g, function(match) { - return encodeURIComponent(match); - }); - search = search.replace('#', '%23'); - - return protocol + host + pathname + search + hash; -}; - -function urlResolve(source, relative) { - return urlParse(source, false, true).resolve(relative); -} - -Url.prototype.resolve = function(relative) { - return this.resolveObject(urlParse(relative, false, true)).format(); -}; - -function urlResolveObject(source, relative) { - if (!source) return relative; - return urlParse(source, false, true).resolveObject(relative); -} - -Url.prototype.resolveObject = function(relative) { - if (util.isString(relative)) { - var rel = new Url(); - rel.parse(relative, false, true); - relative = rel; - } - - var result = new Url(); - var tkeys = Object.keys(this); - for (var tk = 0; tk < tkeys.length; tk++) { - var tkey = tkeys[tk]; - result[tkey] = this[tkey]; - } - - // hash is always overridden, no matter what. - // even href="" will remove it. - result.hash = relative.hash; - - // if the relative url is empty, then there's nothing left to do here. - if (relative.href === '') { - result.href = result.format(); - return result; - } - - // hrefs like //foo/bar always cut to the protocol. - if (relative.slashes && !relative.protocol) { - // take everything except the protocol from relative - var rkeys = Object.keys(relative); - for (var rk = 0; rk < rkeys.length; rk++) { - var rkey = rkeys[rk]; - if (rkey !== 'protocol') - result[rkey] = relative[rkey]; - } - - //urlParse appends trailing / to urls like http://www.example.com - if (slashedProtocol[result.protocol] && - result.hostname && !result.pathname) { - result.path = result.pathname = '/'; - } - - result.href = result.format(); - return result; - } - - if (relative.protocol && relative.protocol !== result.protocol) { - // if it's a known url protocol, then changing - // the protocol does weird things - // first, if it's not file:, then we MUST have a host, - // and if there was a path - // to begin with, then we MUST have a path. - // if it is file:, then the host is dropped, - // because that's known to be hostless. - // anything else is assumed to be absolute. - if (!slashedProtocol[relative.protocol]) { - var keys = Object.keys(relative); - for (var v = 0; v < keys.length; v++) { - var k = keys[v]; - result[k] = relative[k]; - } - result.href = result.format(); - return result; - } - - result.protocol = relative.protocol; - if (!relative.host && !hostlessProtocol[relative.protocol]) { - var relPath = (relative.pathname || '').split('/'); - while (relPath.length && !(relative.host = relPath.shift())); - if (!relative.host) relative.host = ''; - if (!relative.hostname) relative.hostname = ''; - if (relPath[0] !== '') relPath.unshift(''); - if (relPath.length < 2) relPath.unshift(''); - result.pathname = relPath.join('/'); - } else { - result.pathname = relative.pathname; - } - result.search = relative.search; - result.query = relative.query; - result.host = relative.host || ''; - result.auth = relative.auth; - result.hostname = relative.hostname || relative.host; - result.port = relative.port; - // to support http.request - if (result.pathname || result.search) { - var p = result.pathname || ''; - var s = result.search || ''; - result.path = p + s; - } - result.slashes = result.slashes || relative.slashes; - result.href = result.format(); - return result; - } - - var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'), - isRelAbs = ( - relative.host || - relative.pathname && relative.pathname.charAt(0) === '/' - ), - mustEndAbs = (isRelAbs || isSourceAbs || - (result.host && relative.pathname)), - removeAllDots = mustEndAbs, - srcPath = result.pathname && result.pathname.split('/') || [], - relPath = relative.pathname && relative.pathname.split('/') || [], - psychotic = result.protocol && !slashedProtocol[result.protocol]; - - // if the url is a non-slashed url, then relative - // links like ../.. should be able - // to crawl up to the hostname, as well. This is strange. - // result.protocol has already been set by now. - // Later on, put the first path part into the host field. - if (psychotic) { - result.hostname = ''; - result.port = null; - if (result.host) { - if (srcPath[0] === '') srcPath[0] = result.host; - else srcPath.unshift(result.host); - } - result.host = ''; - if (relative.protocol) { - relative.hostname = null; - relative.port = null; - if (relative.host) { - if (relPath[0] === '') relPath[0] = relative.host; - else relPath.unshift(relative.host); - } - relative.host = null; - } - mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === ''); - } - - if (isRelAbs) { - // it's absolute. - result.host = (relative.host || relative.host === '') ? - relative.host : result.host; - result.hostname = (relative.hostname || relative.hostname === '') ? - relative.hostname : result.hostname; - result.search = relative.search; - result.query = relative.query; - srcPath = relPath; - // fall through to the dot-handling below. - } else if (relPath.length) { - // it's relative - // throw away the existing file, and take the new path instead. - if (!srcPath) srcPath = []; - srcPath.pop(); - srcPath = srcPath.concat(relPath); - result.search = relative.search; - result.query = relative.query; - } else if (!util.isNullOrUndefined(relative.search)) { - // just pull out the search. - // like href='?foo'. - // Put this after the other two cases because it simplifies the booleans - if (psychotic) { - result.hostname = result.host = srcPath.shift(); - //occationaly the auth can get stuck only in host - //this especially happens in cases like - //url.resolveObject('mailto:local1@domain1', 'local2@domain2') - var authInHost = result.host && result.host.indexOf('@') > 0 ? - result.host.split('@') : false; - if (authInHost) { - result.auth = authInHost.shift(); - result.host = result.hostname = authInHost.shift(); - } - } - result.search = relative.search; - result.query = relative.query; - //to support http.request - if (!util.isNull(result.pathname) || !util.isNull(result.search)) { - result.path = (result.pathname ? result.pathname : '') + - (result.search ? result.search : ''); - } - result.href = result.format(); - return result; - } - - if (!srcPath.length) { - // no path at all. easy. - // we've already handled the other stuff above. - result.pathname = null; - //to support http.request - if (result.search) { - result.path = '/' + result.search; - } else { - result.path = null; - } - result.href = result.format(); - return result; - } - - // if a url ENDs in . or .., then it must get a trailing slash. - // however, if it ends in anything else non-slashy, - // then it must NOT get a trailing slash. - var last = srcPath.slice(-1)[0]; - var hasTrailingSlash = ( - (result.host || relative.host || srcPath.length > 1) && - (last === '.' || last === '..') || last === ''); - - // strip single dots, resolve double dots to parent dir - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = srcPath.length; i >= 0; i--) { - last = srcPath[i]; - if (last === '.') { - srcPath.splice(i, 1); - } else if (last === '..') { - srcPath.splice(i, 1); - up++; - } else if (up) { - srcPath.splice(i, 1); - up--; - } - } - - // if the path is allowed to go above the root, restore leading ..s - if (!mustEndAbs && !removeAllDots) { - for (; up--; up) { - srcPath.unshift('..'); - } - } - - if (mustEndAbs && srcPath[0] !== '' && - (!srcPath[0] || srcPath[0].charAt(0) !== '/')) { - srcPath.unshift(''); - } - - if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) { - srcPath.push(''); - } - - var isAbsolute = srcPath[0] === '' || - (srcPath[0] && srcPath[0].charAt(0) === '/'); - - // put the host back - if (psychotic) { - result.hostname = result.host = isAbsolute ? '' : - srcPath.length ? srcPath.shift() : ''; - //occationaly the auth can get stuck only in host - //this especially happens in cases like - //url.resolveObject('mailto:local1@domain1', 'local2@domain2') - var authInHost = result.host && result.host.indexOf('@') > 0 ? - result.host.split('@') : false; - if (authInHost) { - result.auth = authInHost.shift(); - result.host = result.hostname = authInHost.shift(); - } - } - - mustEndAbs = mustEndAbs || (result.host && srcPath.length); - - if (mustEndAbs && !isAbsolute) { - srcPath.unshift(''); - } - - if (!srcPath.length) { - result.pathname = null; - result.path = null; - } else { - result.pathname = srcPath.join('/'); - } - - //to support request.http - if (!util.isNull(result.pathname) || !util.isNull(result.search)) { - result.path = (result.pathname ? result.pathname : '') + - (result.search ? result.search : ''); - } - result.auth = relative.auth || result.auth; - result.slashes = result.slashes || relative.slashes; - result.href = result.format(); - return result; -}; - -Url.prototype.parseHost = function() { - var host = this.host; - var port = portPattern.exec(host); - if (port) { - port = port[0]; - if (port !== ':') { - this.port = port.substr(1); - } - host = host.substr(0, host.length - port.length); - } - if (host) this.hostname = host; -}; - - -/***/ }), -/* 228 */ -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(module, global) {var __WEBPACK_AMD_DEFINE_RESULT__;/*! https://mths.be/punycode v1.4.1 by @mathias */ -;(function(root) { - - /** Detect free variables */ - var freeExports = typeof exports == 'object' && exports && - !exports.nodeType && exports; - var freeModule = typeof module == 'object' && module && - !module.nodeType && module; - var freeGlobal = typeof global == 'object' && global; - if ( - freeGlobal.global === freeGlobal || - freeGlobal.window === freeGlobal || - freeGlobal.self === freeGlobal - ) { - root = freeGlobal; - } - - /** - * The `punycode` object. - * @name punycode - * @type Object - */ - var punycode, - - /** Highest positive signed 32-bit float value */ - maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 - - /** Bootstring parameters */ - base = 36, - tMin = 1, - tMax = 26, - skew = 38, - damp = 700, - initialBias = 72, - initialN = 128, // 0x80 - delimiter = '-', // '\x2D' - - /** Regular expressions */ - regexPunycode = /^xn--/, - regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars - regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators - - /** Error messages */ - errors = { - 'overflow': 'Overflow: input needs wider integers to process', - 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', - 'invalid-input': 'Invalid input' - }, - - /** Convenience shortcuts */ - baseMinusTMin = base - tMin, - floor = Math.floor, - stringFromCharCode = String.fromCharCode, - - /** Temporary variable */ - key; - - /*--------------------------------------------------------------------------*/ - - /** - * A generic error utility function. - * @private - * @param {String} type The error type. - * @returns {Error} Throws a `RangeError` with the applicable error message. - */ - function error(type) { - throw new RangeError(errors[type]); - } - - /** - * A generic `Array#map` utility function. - * @private - * @param {Array} array The array to iterate over. - * @param {Function} callback The function that gets called for every array - * item. - * @returns {Array} A new array of values returned by the callback function. - */ - function map(array, fn) { - var length = array.length; - var result = []; - while (length--) { - result[length] = fn(array[length]); - } - return result; - } - - /** - * A simple `Array#map`-like wrapper to work with domain name strings or email - * addresses. - * @private - * @param {String} domain The domain name or email address. - * @param {Function} callback The function that gets called for every - * character. - * @returns {Array} A new string of characters returned by the callback - * function. - */ - function mapDomain(string, fn) { - var parts = string.split('@'); - var result = ''; - if (parts.length > 1) { - // In email addresses, only the domain name should be punycoded. Leave - // the local part (i.e. everything up to `@`) intact. - result = parts[0] + '@'; - string = parts[1]; - } - // Avoid `split(regex)` for IE8 compatibility. See #17. - string = string.replace(regexSeparators, '\x2E'); - var labels = string.split('.'); - var encoded = map(labels, fn).join('.'); - return result + encoded; - } - - /** - * Creates an array containing the numeric code points of each Unicode - * character in the string. While JavaScript uses UCS-2 internally, - * this function will convert a pair of surrogate halves (each of which - * UCS-2 exposes as separate characters) into a single code point, - * matching UTF-16. - * @see `punycode.ucs2.encode` - * @see - * @memberOf punycode.ucs2 - * @name decode - * @param {String} string The Unicode input string (UCS-2). - * @returns {Array} The new array of code points. - */ - function ucs2decode(string) { - var output = [], - counter = 0, - length = string.length, - value, - extra; - while (counter < length) { - value = string.charCodeAt(counter++); - if (value >= 0xD800 && value <= 0xDBFF && counter < length) { - // high surrogate, and there is a next character - extra = string.charCodeAt(counter++); - if ((extra & 0xFC00) == 0xDC00) { // low surrogate - output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); - } else { - // unmatched surrogate; only append this code unit, in case the next - // code unit is the high surrogate of a surrogate pair - output.push(value); - counter--; - } - } else { - output.push(value); - } - } - return output; - } - - /** - * Creates a string based on an array of numeric code points. - * @see `punycode.ucs2.decode` - * @memberOf punycode.ucs2 - * @name encode - * @param {Array} codePoints The array of numeric code points. - * @returns {String} The new Unicode string (UCS-2). - */ - function ucs2encode(array) { - return map(array, function(value) { - var output = ''; - if (value > 0xFFFF) { - value -= 0x10000; - output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); - value = 0xDC00 | value & 0x3FF; - } - output += stringFromCharCode(value); - return output; - }).join(''); - } - - /** - * Converts a basic code point into a digit/integer. - * @see `digitToBasic()` - * @private - * @param {Number} codePoint The basic numeric code point value. - * @returns {Number} The numeric value of a basic code point (for use in - * representing integers) in the range `0` to `base - 1`, or `base` if - * the code point does not represent a value. - */ - function basicToDigit(codePoint) { - if (codePoint - 48 < 10) { - return codePoint - 22; - } - if (codePoint - 65 < 26) { - return codePoint - 65; - } - if (codePoint - 97 < 26) { - return codePoint - 97; - } - return base; - } - - /** - * Converts a digit/integer into a basic code point. - * @see `basicToDigit()` - * @private - * @param {Number} digit The numeric value of a basic code point. - * @returns {Number} The basic code point whose value (when used for - * representing integers) is `digit`, which needs to be in the range - * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is - * used; else, the lowercase form is used. The behavior is undefined - * if `flag` is non-zero and `digit` has no uppercase form. - */ - function digitToBasic(digit, flag) { - // 0..25 map to ASCII a..z or A..Z - // 26..35 map to ASCII 0..9 - return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); - } - - /** - * Bias adaptation function as per section 3.4 of RFC 3492. - * https://tools.ietf.org/html/rfc3492#section-3.4 - * @private - */ - function adapt(delta, numPoints, firstTime) { - var k = 0; - delta = firstTime ? floor(delta / damp) : delta >> 1; - delta += floor(delta / numPoints); - for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { - delta = floor(delta / baseMinusTMin); - } - return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); - } - - /** - * Converts a Punycode string of ASCII-only symbols to a string of Unicode - * symbols. - * @memberOf punycode - * @param {String} input The Punycode string of ASCII-only symbols. - * @returns {String} The resulting string of Unicode symbols. - */ - function decode(input) { - // Don't use UCS-2 - var output = [], - inputLength = input.length, - out, - i = 0, - n = initialN, - bias = initialBias, - basic, - j, - index, - oldi, - w, - k, - digit, - t, - /** Cached calculation results */ - baseMinusT; - - // Handle the basic code points: let `basic` be the number of input code - // points before the last delimiter, or `0` if there is none, then copy - // the first basic code points to the output. - - basic = input.lastIndexOf(delimiter); - if (basic < 0) { - basic = 0; - } - - for (j = 0; j < basic; ++j) { - // if it's not a basic code point - if (input.charCodeAt(j) >= 0x80) { - error('not-basic'); - } - output.push(input.charCodeAt(j)); - } - - // Main decoding loop: start just after the last delimiter if any basic code - // points were copied; start at the beginning otherwise. - - for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { - - // `index` is the index of the next character to be consumed. - // Decode a generalized variable-length integer into `delta`, - // which gets added to `i`. The overflow checking is easier - // if we increase `i` as we go, then subtract off its starting - // value at the end to obtain `delta`. - for (oldi = i, w = 1, k = base; /* no condition */; k += base) { - - if (index >= inputLength) { - error('invalid-input'); - } - - digit = basicToDigit(input.charCodeAt(index++)); - - if (digit >= base || digit > floor((maxInt - i) / w)) { - error('overflow'); - } - - i += digit * w; - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - - if (digit < t) { - break; - } - - baseMinusT = base - t; - if (w > floor(maxInt / baseMinusT)) { - error('overflow'); - } - - w *= baseMinusT; - - } - - out = output.length + 1; - bias = adapt(i - oldi, out, oldi == 0); - - // `i` was supposed to wrap around from `out` to `0`, - // incrementing `n` each time, so we'll fix that now: - if (floor(i / out) > maxInt - n) { - error('overflow'); - } - - n += floor(i / out); - i %= out; - - // Insert `n` at position `i` of the output - output.splice(i++, 0, n); - - } - - return ucs2encode(output); - } - - /** - * Converts a string of Unicode symbols (e.g. a domain name label) to a - * Punycode string of ASCII-only symbols. - * @memberOf punycode - * @param {String} input The string of Unicode symbols. - * @returns {String} The resulting Punycode string of ASCII-only symbols. - */ - function encode(input) { - var n, - delta, - handledCPCount, - basicLength, - bias, - j, - m, - q, - k, - t, - currentValue, - output = [], - /** `inputLength` will hold the number of code points in `input`. */ - inputLength, - /** Cached calculation results */ - handledCPCountPlusOne, - baseMinusT, - qMinusT; - - // Convert the input in UCS-2 to Unicode - input = ucs2decode(input); - - // Cache the length - inputLength = input.length; - - // Initialize the state - n = initialN; - delta = 0; - bias = initialBias; - - // Handle the basic code points - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue < 0x80) { - output.push(stringFromCharCode(currentValue)); - } - } - - handledCPCount = basicLength = output.length; - - // `handledCPCount` is the number of code points that have been handled; - // `basicLength` is the number of basic code points. - - // Finish the basic string - if it is not empty - with a delimiter - if (basicLength) { - output.push(delimiter); - } - - // Main encoding loop: - while (handledCPCount < inputLength) { - - // All non-basic code points < n have been handled already. Find the next - // larger one: - for (m = maxInt, j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue >= n && currentValue < m) { - m = currentValue; - } - } - - // Increase `delta` enough to advance the decoder's state to , - // but guard against overflow - handledCPCountPlusOne = handledCPCount + 1; - if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { - error('overflow'); - } - - delta += (m - n) * handledCPCountPlusOne; - n = m; - - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - - if (currentValue < n && ++delta > maxInt) { - error('overflow'); - } - - if (currentValue == n) { - // Represent delta as a generalized variable-length integer - for (q = delta, k = base; /* no condition */; k += base) { - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - if (q < t) { - break; - } - qMinusT = q - t; - baseMinusT = base - t; - output.push( - stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) - ); - q = floor(qMinusT / baseMinusT); - } - - output.push(stringFromCharCode(digitToBasic(q, 0))); - bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); - delta = 0; - ++handledCPCount; - } - } - - ++delta; - ++n; - - } - return output.join(''); - } - - /** - * Converts a Punycode string representing a domain name or an email address - * to Unicode. Only the Punycoded parts of the input will be converted, i.e. - * it doesn't matter if you call it on a string that has already been - * converted to Unicode. - * @memberOf punycode - * @param {String} input The Punycoded domain name or email address to - * convert to Unicode. - * @returns {String} The Unicode representation of the given Punycode - * string. - */ - function toUnicode(input) { - return mapDomain(input, function(string) { - return regexPunycode.test(string) - ? decode(string.slice(4).toLowerCase()) - : string; - }); - } - - /** - * Converts a Unicode string representing a domain name or an email address to - * Punycode. Only the non-ASCII parts of the domain name will be converted, - * i.e. it doesn't matter if you call it with a domain that's already in - * ASCII. - * @memberOf punycode - * @param {String} input The domain name or email address to convert, as a - * Unicode string. - * @returns {String} The Punycode representation of the given domain name or - * email address. - */ - function toASCII(input) { - return mapDomain(input, function(string) { - return regexNonASCII.test(string) - ? 'xn--' + encode(string) - : string; - }); - } - - /*--------------------------------------------------------------------------*/ - - /** Define the public API */ - punycode = { - /** - * A string representing the current Punycode.js version number. - * @memberOf punycode - * @type String - */ - 'version': '1.4.1', - /** - * An object of methods to convert from JavaScript's internal character - * representation (UCS-2) to Unicode code points, and back. - * @see - * @memberOf punycode - * @type Object - */ - 'ucs2': { - 'decode': ucs2decode, - 'encode': ucs2encode - }, - 'decode': decode, - 'encode': encode, - 'toASCII': toASCII, - 'toUnicode': toUnicode - }; - - /** Expose `punycode` */ - // Some AMD build optimizers, like r.js, check for specific condition patterns - // like the following: - if ( - true - ) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() { - return punycode; - }).call(exports, __webpack_require__, exports, module), - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else if (freeExports && freeModule) { - if (module.exports == freeExports) { - // in Node.js, io.js, or RingoJS v0.8.0+ - freeModule.exports = punycode; - } else { - // in Narwhal or RingoJS v0.7.0- - for (key in punycode) { - punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); - } - } - } else { - // in Rhino or a web browser - root.punycode = punycode; - } - -}(this)); - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(18)(module), __webpack_require__(17))) - -/***/ }), -/* 229 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -module.exports = { - isString: function(arg) { - return typeof(arg) === 'string'; - }, - isObject: function(arg) { - return typeof(arg) === 'object' && arg !== null; - }, - isNull: function(arg) { - return arg === null; - }, - isNullOrUndefined: function(arg) { - return arg == null; - } -}; - - -/***/ }), -/* 230 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.decode = exports.parse = __webpack_require__(231); -exports.encode = exports.stringify = __webpack_require__(232); - - -/***/ }), -/* 231 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - - - -// If obj.hasOwnProperty has been overridden, then calling -// obj.hasOwnProperty(prop) will break. -// See: https://github.com/joyent/node/issues/1707 -function hasOwnProperty(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); -} - -module.exports = function(qs, sep, eq, options) { - sep = sep || '&'; - eq = eq || '='; - var obj = {}; - - if (typeof qs !== 'string' || qs.length === 0) { - return obj; - } - - var regexp = /\+/g; - qs = qs.split(sep); - - var maxKeys = 1000; - if (options && typeof options.maxKeys === 'number') { - maxKeys = options.maxKeys; - } - - var len = qs.length; - // maxKeys <= 0 means that we should not limit keys count - if (maxKeys > 0 && len > maxKeys) { - len = maxKeys; - } - - for (var i = 0; i < len; ++i) { - var x = qs[i].replace(regexp, '%20'), - idx = x.indexOf(eq), - kstr, vstr, k, v; - - if (idx >= 0) { - kstr = x.substr(0, idx); - vstr = x.substr(idx + 1); - } else { - kstr = x; - vstr = ''; - } - - k = decodeURIComponent(kstr); - v = decodeURIComponent(vstr); - - if (!hasOwnProperty(obj, k)) { - obj[k] = v; - } else if (isArray(obj[k])) { - obj[k].push(v); - } else { - obj[k] = [obj[k], v]; - } - } - - return obj; -}; - -var isArray = Array.isArray || function (xs) { - return Object.prototype.toString.call(xs) === '[object Array]'; -}; - - -/***/ }), -/* 232 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - - - -var stringifyPrimitive = function(v) { - switch (typeof v) { - case 'string': - return v; - - case 'boolean': - return v ? 'true' : 'false'; - - case 'number': - return isFinite(v) ? v : ''; - - default: - return ''; - } -}; - -module.exports = function(obj, sep, eq, name) { - sep = sep || '&'; - eq = eq || '='; - if (obj === null) { - obj = undefined; - } - - if (typeof obj === 'object') { - return map(objectKeys(obj), function(k) { - var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; - if (isArray(obj[k])) { - return map(obj[k], function(v) { - return ks + encodeURIComponent(stringifyPrimitive(v)); - }).join(sep); - } else { - return ks + encodeURIComponent(stringifyPrimitive(obj[k])); - } - }).join(sep); - - } - - if (!name) return ''; - return encodeURIComponent(stringifyPrimitive(name)) + eq + - encodeURIComponent(stringifyPrimitive(obj)); -}; - -var isArray = Array.isArray || function (xs) { - return Object.prototype.toString.call(xs) === '[object Array]'; -}; - -function map (xs, f) { - if (xs.map) return xs.map(f); - var res = []; - for (var i = 0; i < xs.length; i++) { - res.push(f(xs[i], i)); - } - return res; -} - -var objectKeys = Object.keys || function (obj) { - var res = []; - for (var key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key); - } - return res; -}; - - -/***/ }), -/* 233 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -// https://mathiasbynens.be/notes/javascript-encoding -// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode -module.exports = function ucs2length(str) { - var length = 0 - , len = str.length - , pos = 0 - , value; - while (pos < len) { - length++; - value = str.charCodeAt(pos++); - if (value >= 0xD800 && value <= 0xDBFF && pos < len) { - // high surrogate, and there is a next character - value = str.charCodeAt(pos); - if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate - } - } - return length; -}; - - -/***/ }), -/* 234 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var traverse = module.exports = function (schema, opts, cb) { - if (typeof opts == 'function') { - cb = opts; - opts = {}; - } - _traverse(opts, cb, schema, '', schema); -}; - - -traverse.keywords = { - additionalItems: true, - items: true, - contains: true, - additionalProperties: true, - propertyNames: true, - not: true -}; - -traverse.arrayKeywords = { - items: true, - allOf: true, - anyOf: true, - oneOf: true -}; - -traverse.propsKeywords = { - definitions: true, - properties: true, - patternProperties: true, - dependencies: true -}; - -traverse.skipKeywords = { - enum: true, - const: true, - required: true, - maximum: true, - minimum: true, - exclusiveMaximum: true, - exclusiveMinimum: true, - multipleOf: true, - maxLength: true, - minLength: true, - pattern: true, - format: true, - maxItems: true, - minItems: true, - uniqueItems: true, - maxProperties: true, - minProperties: true -}; - - -function _traverse(opts, cb, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) { - if (schema && typeof schema == 'object' && !Array.isArray(schema)) { - cb(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex); - for (var key in schema) { - var sch = schema[key]; - if (Array.isArray(sch)) { - if (key in traverse.arrayKeywords) { - for (var i=0; i%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i; -// For the source: https://gist.github.com/dperini/729294 -// For test cases: https://mathiasbynens.be/demo/url-regex -// @todo Delete current URL in favour of the commented out URL rule when this issue is fixed https://github.com/eslint/eslint/issues/7983. -// var URL = /^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)(?:\.(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu; -var URL = /^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i; -var UUID = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i; -var JSON_POINTER = /^(?:\/(?:[^~/]|~0|~1)*)*$|^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i; -var RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/; - - -module.exports = formats; - -function formats(mode) { - mode = mode == 'full' ? 'full' : 'fast'; - return util.copy(formats[mode]); -} - - -formats.fast = { - // date: http://tools.ietf.org/html/rfc3339#section-5.6 - date: /^\d\d\d\d-[0-1]\d-[0-3]\d$/, - // date-time: http://tools.ietf.org/html/rfc3339#section-5.6 - time: /^[0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)?$/i, - 'date-time': /^\d\d\d\d-[0-1]\d-[0-3]\d[t\s][0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)$/i, - // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js - uri: /^(?:[a-z][a-z0-9+-.]*)(?::|\/)\/?[^\s]*$/i, - 'uri-reference': /^(?:(?:[a-z][a-z0-9+-.]*:)?\/\/)?[^\s]*$/i, - 'uri-template': URITEMPLATE, - url: URL, - // email (sources from jsen validator): - // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363 - // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation') - email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i, - hostname: HOSTNAME, - // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html - ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/, - // optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses - ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i, - regex: regex, - // uuid: http://tools.ietf.org/html/rfc4122 - uuid: UUID, - // JSON-pointer: https://tools.ietf.org/html/rfc6901 - // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A - 'json-pointer': JSON_POINTER, - // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00 - 'relative-json-pointer': RELATIVE_JSON_POINTER -}; - - -formats.full = { - date: date, - time: time, - 'date-time': date_time, - uri: uri, - 'uri-reference': URIREF, - 'uri-template': URITEMPLATE, - url: URL, - email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&''*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i, - hostname: hostname, - ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/, - ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i, - regex: regex, - uuid: UUID, - 'json-pointer': JSON_POINTER, - 'relative-json-pointer': RELATIVE_JSON_POINTER -}; - - -function date(str) { - // full-date from http://tools.ietf.org/html/rfc3339#section-5.6 - var matches = str.match(DATE); - if (!matches) return false; - - var month = +matches[1]; - var day = +matches[2]; - return month >= 1 && month <= 12 && day >= 1 && day <= DAYS[month]; -} - - -function time(str, full) { - var matches = str.match(TIME); - if (!matches) return false; - - var hour = matches[1]; - var minute = matches[2]; - var second = matches[3]; - var timeZone = matches[5]; - return hour <= 23 && minute <= 59 && second <= 59 && (!full || timeZone); -} - - -var DATE_TIME_SEPARATOR = /t|\s/i; -function date_time(str) { - // http://tools.ietf.org/html/rfc3339#section-5.6 - var dateTime = str.split(DATE_TIME_SEPARATOR); - return dateTime.length == 2 && date(dateTime[0]) && time(dateTime[1], true); -} - - -function hostname(str) { - // https://tools.ietf.org/html/rfc1034#section-3.5 - // https://tools.ietf.org/html/rfc1123#section-2 - return str.length <= 255 && HOSTNAME.test(str); -} - - -var NOT_URI_FRAGMENT = /\/|:/; -function uri(str) { - // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required "." - return NOT_URI_FRAGMENT.test(str) && URI.test(str); -} - - -var Z_ANCHOR = /[^\\]\\Z/; -function regex(str) { - if (Z_ANCHOR.test(str)) return false; - try { - new RegExp(str); - return true; - } catch(e) { - return false; - } -} - - -/***/ }), -/* 237 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var ruleModules = __webpack_require__(238) - , toHash = __webpack_require__(11).toHash; - -module.exports = function rules() { - var RULES = [ - { type: 'number', - rules: [ { 'maximum': ['exclusiveMaximum'] }, - { 'minimum': ['exclusiveMinimum'] }, 'multipleOf', 'format'] }, - { type: 'string', - rules: [ 'maxLength', 'minLength', 'pattern', 'format' ] }, - { type: 'array', - rules: [ 'maxItems', 'minItems', 'uniqueItems', 'contains', 'items' ] }, - { type: 'object', - rules: [ 'maxProperties', 'minProperties', 'required', 'dependencies', 'propertyNames', - { 'properties': ['additionalProperties', 'patternProperties'] } ] }, - { rules: [ '$ref', 'const', 'enum', 'not', 'anyOf', 'oneOf', 'allOf' ] } - ]; - - var ALL = [ 'type' ]; - var KEYWORDS = [ - 'additionalItems', '$schema', '$id', 'id', 'title', - 'description', 'default', 'definitions' - ]; - var TYPES = [ 'number', 'integer', 'string', 'array', 'object', 'boolean', 'null' ]; - RULES.all = toHash(ALL); - RULES.types = toHash(TYPES); - - RULES.forEach(function (group) { - group.rules = group.rules.map(function (keyword) { - var implKeywords; - if (typeof keyword == 'object') { - var key = Object.keys(keyword)[0]; - implKeywords = keyword[key]; - keyword = key; - implKeywords.forEach(function (k) { - ALL.push(k); - RULES.all[k] = true; - }); - } - ALL.push(keyword); - var rule = RULES.all[keyword] = { - keyword: keyword, - code: ruleModules[keyword], - implements: implKeywords - }; - return rule; - }); - - if (group.type) RULES.types[group.type] = group; - }); - - RULES.keywords = toHash(ALL.concat(KEYWORDS)); - RULES.custom = {}; - - return RULES; -}; - - -/***/ }), -/* 238 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -//all requires must be explicit because browserify won't work with dynamic requires -module.exports = { - '$ref': __webpack_require__(239), - allOf: __webpack_require__(240), - anyOf: __webpack_require__(241), - const: __webpack_require__(242), - contains: __webpack_require__(243), - dependencies: __webpack_require__(244), - 'enum': __webpack_require__(245), - format: __webpack_require__(246), - items: __webpack_require__(247), - maximum: __webpack_require__(67), - minimum: __webpack_require__(67), - maxItems: __webpack_require__(68), - minItems: __webpack_require__(68), - maxLength: __webpack_require__(69), - minLength: __webpack_require__(69), - maxProperties: __webpack_require__(70), - minProperties: __webpack_require__(70), - multipleOf: __webpack_require__(248), - not: __webpack_require__(249), - oneOf: __webpack_require__(250), - pattern: __webpack_require__(251), - properties: __webpack_require__(252), - propertyNames: __webpack_require__(253), - required: __webpack_require__(254), - uniqueItems: __webpack_require__(255), - validate: __webpack_require__(65) -}; - - -/***/ }), -/* 239 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -module.exports = function generate_ref(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $async, $refCode; - if ($schema == '#' || $schema == '#/') { - if (it.isRoot) { - $async = it.async; - $refCode = 'validate'; - } else { - $async = it.root.schema.$async === true; - $refCode = 'root.refVal[0]'; - } - } else { - var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot); - if ($refVal === undefined) { - var $message = it.MissingRefError.message(it.baseId, $schema); - if (it.opts.missingRefs == 'fail') { - it.logger.error($message); - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('$ref') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { ref: \'' + (it.util.escapeQuotes($schema)) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'can\\\'t resolve reference ' + (it.util.escapeQuotes($schema)) + '\' '; - } - if (it.opts.verbose) { - out += ' , schema: ' + (it.util.toQuotedString($schema)) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - if ($breakOnError) { - out += ' if (false) { '; - } - } else if (it.opts.missingRefs == 'ignore') { - it.logger.warn($message); - if ($breakOnError) { - out += ' if (true) { '; - } - } else { - throw new it.MissingRefError(it.baseId, $schema, $message); - } - } else if ($refVal.inline) { - var $it = it.util.copy(it); - $it.level++; - var $nextValid = 'valid' + $it.level; - $it.schema = $refVal.schema; - $it.schemaPath = ''; - $it.errSchemaPath = $schema; - var $code = it.validate($it).replace(/validate\.schema/g, $refVal.code); - out += ' ' + ($code) + ' '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - } - } else { - $async = $refVal.$async === true; - $refCode = $refVal.code; - } - } - if ($refCode) { - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; - if (it.opts.passContext) { - out += ' ' + ($refCode) + '.call(this, '; - } else { - out += ' ' + ($refCode) + '( '; - } - out += ' ' + ($data) + ', (dataPath || \'\')'; - if (it.errorPath != '""') { - out += ' + ' + (it.errorPath); - } - var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData', - $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty'; - out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ', rootData) '; - var __callValidate = out; - out = $$outStack.pop(); - if ($async) { - if (!it.async) throw new Error('async schema referenced by sync schema'); - if ($breakOnError) { - out += ' var ' + ($valid) + '; '; - } - out += ' try { ' + (it.yieldAwait) + ' ' + (__callValidate) + '; '; - if ($breakOnError) { - out += ' ' + ($valid) + ' = true; '; - } - out += ' } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; '; - if ($breakOnError) { - out += ' ' + ($valid) + ' = false; '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (' + ($valid) + ') { '; - } - } else { - out += ' if (!' + (__callValidate) + ') { if (vErrors === null) vErrors = ' + ($refCode) + '.errors; else vErrors = vErrors.concat(' + ($refCode) + '.errors); errors = vErrors.length; } '; - if ($breakOnError) { - out += ' else { '; - } - } - } - return out; -} - - -/***/ }), -/* 240 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -module.exports = function generate_allOf(it, $keyword, $ruleType) { - var out = ' '; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $currentBaseId = $it.baseId, - $allSchemasEmpty = true; - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - if (it.util.schemaHasRules($sch, it.RULES.all)) { - $allSchemasEmpty = false; - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } - } - if ($breakOnError) { - if ($allSchemasEmpty) { - out += ' if (true) { '; - } else { - out += ' ' + ($closingBraces.slice(0, -1)) + ' '; - } - } - out = it.util.cleanUpCode(out); - return out; -} - - -/***/ }), -/* 241 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -module.exports = function generate_anyOf(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $noEmptySchema = $schema.every(function($sch) { - return it.util.schemaHasRules($sch, it.RULES.all); - }); - if ($noEmptySchema) { - var $currentBaseId = $it.baseId; - out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - out += ' ' + ($valid) + ' = ' + ($valid) + ' || ' + ($nextValid) + '; if (!' + ($valid) + ') { '; - $closingBraces += '}'; - } - } - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('anyOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should match some schema in anyOf\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError(vErrors); '; - } else { - out += ' validate.errors = vErrors; return false; '; - } - } - out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; - if (it.opts.allErrors) { - out += ' } '; - } - out = it.util.cleanUpCode(out); - } else { - if ($breakOnError) { - out += ' if (true) { '; - } - } - return out; -} - - -/***/ }), -/* 242 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -module.exports = function generate_const(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - if (!$isData) { - out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';'; - } - out += 'var ' + ($valid) + ' = equal(' + ($data) + ', schema' + ($lvl) + '); if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('const') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should be equal to constant\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' }'; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - - -/***/ }), -/* 243 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -module.exports = function generate_contains(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $idx = 'i' + $lvl, - $dataNxt = $it.dataLevel = it.dataLevel + 1, - $nextData = 'data' + $dataNxt, - $currentBaseId = it.baseId, - $nonEmptySchema = it.util.schemaHasRules($schema, it.RULES.all); - out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';'; - if ($nonEmptySchema) { - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - out += ' var ' + ($nextValid) + ' = false; for (var ' + ($idx) + ' = 0; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); - var $passData = $data + '[' + $idx + ']'; - $it.dataPathArr[$dataNxt] = $idx; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - out += ' if (' + ($nextValid) + ') break; } '; - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' ' + ($closingBraces) + ' if (!' + ($nextValid) + ') {'; - } else { - out += ' if (' + ($data) + '.length == 0) {'; - } - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('contains') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should contain a valid item\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { '; - if ($nonEmptySchema) { - out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; - } - if (it.opts.allErrors) { - out += ' } '; - } - out = it.util.cleanUpCode(out); - return out; -} - - -/***/ }), -/* 244 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -module.exports = function generate_dependencies(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $schemaDeps = {}, - $propertyDeps = {}, - $ownProperties = it.opts.ownProperties; - for ($property in $schema) { - var $sch = $schema[$property]; - var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps; - $deps[$property] = $sch; - } - out += 'var ' + ($errs) + ' = errors;'; - var $currentErrorPath = it.errorPath; - out += 'var missing' + ($lvl) + ';'; - for (var $property in $propertyDeps) { - $deps = $propertyDeps[$property]; - if ($deps.length) { - out += ' if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined '; - if ($ownProperties) { - out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($property)) + '\') '; - } - if ($breakOnError) { - out += ' && ( '; - var arr1 = $deps; - if (arr1) { - var $propertyKey, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $propertyKey = arr1[$i += 1]; - if ($i) { - out += ' || '; - } - var $prop = it.util.getProperty($propertyKey), - $useData = $data + $prop; - out += ' ( ( ' + ($useData) + ' === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) '; - } - } - out += ')) { '; - var $propertyPath = 'missing' + $lvl, - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath; - } - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('dependencies') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \'' + (it.util.escapeQuotes($property)) + '\', missingProperty: \'' + ($missingProperty) + '\', depsCount: ' + ($deps.length) + ', deps: \'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(", "))) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should have '; - if ($deps.length == 1) { - out += 'property ' + (it.util.escapeQuotes($deps[0])); - } else { - out += 'properties ' + (it.util.escapeQuotes($deps.join(", "))); - } - out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - } else { - out += ' ) { '; - var arr2 = $deps; - if (arr2) { - var $propertyKey, i2 = -1, - l2 = arr2.length - 1; - while (i2 < l2) { - $propertyKey = arr2[i2 += 1]; - var $prop = it.util.getProperty($propertyKey), - $missingProperty = it.util.escapeQuotes($propertyKey), - $useData = $data + $prop; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); - } - out += ' if ( ' + ($useData) + ' === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('dependencies') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \'' + (it.util.escapeQuotes($property)) + '\', missingProperty: \'' + ($missingProperty) + '\', depsCount: ' + ($deps.length) + ', deps: \'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(", "))) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should have '; - if ($deps.length == 1) { - out += 'property ' + (it.util.escapeQuotes($deps[0])); - } else { - out += 'properties ' + (it.util.escapeQuotes($deps.join(", "))); - } - out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } '; - } - } - } - out += ' } '; - if ($breakOnError) { - $closingBraces += '}'; - out += ' else { '; - } - } - } - it.errorPath = $currentErrorPath; - var $currentBaseId = $it.baseId; - for (var $property in $schemaDeps) { - var $sch = $schemaDeps[$property]; - if (it.util.schemaHasRules($sch, it.RULES.all)) { - out += ' ' + ($nextValid) + ' = true; if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined '; - if ($ownProperties) { - out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($property)) + '\') '; - } - out += ') { '; - $it.schema = $sch; - $it.schemaPath = $schemaPath + it.util.getProperty($property); - $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property); - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - out += ' } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; - } - out = it.util.cleanUpCode(out); - return out; -} - - -/***/ }), -/* 245 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -module.exports = function generate_enum(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $i = 'i' + $lvl, - $vSchema = 'schema' + $lvl; - if (!$isData) { - out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + ';'; - } - out += 'var ' + ($valid) + ';'; - if ($isData) { - out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {'; - } - out += '' + ($valid) + ' = false;for (var ' + ($i) + '=0; ' + ($i) + '<' + ($vSchema) + '.length; ' + ($i) + '++) if (equal(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + '])) { ' + ($valid) + ' = true; break; }'; - if ($isData) { - out += ' } '; - } - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('enum') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValues: schema' + ($lvl) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be equal to one of the allowed values\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' }'; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - - -/***/ }), -/* 246 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -module.exports = function generate_format(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - if (it.opts.format === false) { - if ($breakOnError) { - out += ' if (true) { '; - } - return out; - } - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $unknownFormats = it.opts.unknownFormats, - $allowUnknown = Array.isArray($unknownFormats); - if ($isData) { - var $format = 'format' + $lvl, - $isObject = 'isObject' + $lvl, - $formatType = 'formatType' + $lvl; - out += ' var ' + ($format) + ' = formats[' + ($schemaValue) + ']; var ' + ($isObject) + ' = typeof ' + ($format) + ' == \'object\' && !(' + ($format) + ' instanceof RegExp) && ' + ($format) + '.validate; var ' + ($formatType) + ' = ' + ($isObject) + ' && ' + ($format) + '.type || \'string\'; if (' + ($isObject) + ') { '; - if (it.async) { - out += ' var async' + ($lvl) + ' = ' + ($format) + '.async; '; - } - out += ' ' + ($format) + ' = ' + ($format) + '.validate; } if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'string\') || '; - } - out += ' ('; - if ($unknownFormats != 'ignore') { - out += ' (' + ($schemaValue) + ' && !' + ($format) + ' '; - if ($allowUnknown) { - out += ' && self._opts.unknownFormats.indexOf(' + ($schemaValue) + ') == -1 '; - } - out += ') || '; - } - out += ' (' + ($format) + ' && ' + ($formatType) + ' == \'' + ($ruleType) + '\' && !(typeof ' + ($format) + ' == \'function\' ? '; - if (it.async) { - out += ' (async' + ($lvl) + ' ? ' + (it.yieldAwait) + ' ' + ($format) + '(' + ($data) + ') : ' + ($format) + '(' + ($data) + ')) '; - } else { - out += ' ' + ($format) + '(' + ($data) + ') '; - } - out += ' : ' + ($format) + '.test(' + ($data) + '))))) {'; - } else { - var $format = it.formats[$schema]; - if (!$format) { - if ($unknownFormats == 'ignore') { - it.logger.warn('unknown format "' + $schema + '" ignored in schema at path "' + it.errSchemaPath + '"'); - if ($breakOnError) { - out += ' if (true) { '; - } - return out; - } else if ($allowUnknown && $unknownFormats.indexOf($schema) >= 0) { - if ($breakOnError) { - out += ' if (true) { '; - } - return out; - } else { - throw new Error('unknown format "' + $schema + '" is used in schema at path "' + it.errSchemaPath + '"'); - } - } - var $isObject = typeof $format == 'object' && !($format instanceof RegExp) && $format.validate; - var $formatType = $isObject && $format.type || 'string'; - if ($isObject) { - var $async = $format.async === true; - $format = $format.validate; - } - if ($formatType != $ruleType) { - if ($breakOnError) { - out += ' if (true) { '; - } - return out; - } - if ($async) { - if (!it.async) throw new Error('async format in sync schema'); - var $formatRef = 'formats' + it.util.getProperty($schema) + '.validate'; - out += ' if (!(' + (it.yieldAwait) + ' ' + ($formatRef) + '(' + ($data) + '))) { '; - } else { - out += ' if (! '; - var $formatRef = 'formats' + it.util.getProperty($schema); - if ($isObject) $formatRef += '.validate'; - if (typeof $format == 'function') { - out += ' ' + ($formatRef) + '(' + ($data) + ') '; - } else { - out += ' ' + ($formatRef) + '.test(' + ($data) + ') '; - } - out += ') { '; - } - } - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('format') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { format: '; - if ($isData) { - out += '' + ($schemaValue); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should match format "'; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + (it.util.escapeQuotes($schema)); - } - out += '"\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - - -/***/ }), -/* 247 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -module.exports = function generate_items(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $idx = 'i' + $lvl, - $dataNxt = $it.dataLevel = it.dataLevel + 1, - $nextData = 'data' + $dataNxt, - $currentBaseId = it.baseId; - out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';'; - if (Array.isArray($schema)) { - var $additionalItems = it.schema.additionalItems; - if ($additionalItems === false) { - out += ' ' + ($valid) + ' = ' + ($data) + '.length <= ' + ($schema.length) + '; '; - var $currErrSchemaPath = $errSchemaPath; - $errSchemaPath = it.errSchemaPath + '/additionalItems'; - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('additionalItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schema.length) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have more than ' + ($schema.length) + ' items\' '; - } - if (it.opts.verbose) { - out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - $errSchemaPath = $currErrSchemaPath; - if ($breakOnError) { - $closingBraces += '}'; - out += ' else { '; - } - } - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - if (it.util.schemaHasRules($sch, it.RULES.all)) { - out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($i) + ') { '; - var $passData = $data + '[' + $i + ']'; - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true); - $it.dataPathArr[$dataNxt] = $i; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } - } - if (typeof $additionalItems == 'object' && it.util.schemaHasRules($additionalItems, it.RULES.all)) { - $it.schema = $additionalItems; - $it.schemaPath = it.schemaPath + '.additionalItems'; - $it.errSchemaPath = it.errSchemaPath + '/additionalItems'; - out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') { for (var ' + ($idx) + ' = ' + ($schema.length) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); - var $passData = $data + '[' + $idx + ']'; - $it.dataPathArr[$dataNxt] = $idx; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!' + ($nextValid) + ') break; '; - } - out += ' } } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } else if (it.util.schemaHasRules($schema, it.RULES.all)) { - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - out += ' for (var ' + ($idx) + ' = ' + (0) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); - var $passData = $data + '[' + $idx + ']'; - $it.dataPathArr[$dataNxt] = $idx; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!' + ($nextValid) + ') break; '; - } - out += ' }'; - } - if ($breakOnError) { - out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; - } - out = it.util.cleanUpCode(out); - return out; -} - - -/***/ }), -/* 248 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -module.exports = function generate_multipleOf(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - out += 'var division' + ($lvl) + ';if ('; - if ($isData) { - out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \'number\' || '; - } - out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', '; - if (it.opts.multipleOfPrecision) { - out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' '; - } else { - out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') '; - } - out += ' ) '; - if ($isData) { - out += ' ) '; - } - out += ' ) { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('multipleOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { multipleOf: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be multiple of '; - if ($isData) { - out += '\' + ' + ($schemaValue); - } else { - out += '' + ($schemaValue) + '\''; - } - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - - -/***/ }), -/* 249 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -module.exports = function generate_not(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - $it.level++; - var $nextValid = 'valid' + $it.level; - if (it.util.schemaHasRules($schema, it.RULES.all)) { - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - out += ' var ' + ($errs) + ' = errors; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - $it.createErrors = false; - var $allErrorsOption; - if ($it.opts.allErrors) { - $allErrorsOption = $it.opts.allErrors; - $it.opts.allErrors = false; - } - out += ' ' + (it.validate($it)) + ' '; - $it.createErrors = true; - if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption; - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' if (' + ($nextValid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT be valid\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; - if (it.opts.allErrors) { - out += ' } '; - } - } else { - out += ' var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT be valid\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - if ($breakOnError) { - out += ' if (false) { '; - } - } - return out; -} - - -/***/ }), -/* 250 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -module.exports = function generate_oneOf(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - out += 'var ' + ($errs) + ' = errors;var prevValid' + ($lvl) + ' = false;var ' + ($valid) + ' = false;'; - var $currentBaseId = $it.baseId; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - if (it.util.schemaHasRules($sch, it.RULES.all)) { - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - } else { - out += ' var ' + ($nextValid) + ' = true; '; - } - if ($i) { - out += ' if (' + ($nextValid) + ' && prevValid' + ($lvl) + ') ' + ($valid) + ' = false; else { '; - $closingBraces += '}'; - } - out += ' if (' + ($nextValid) + ') ' + ($valid) + ' = prevValid' + ($lvl) + ' = true;'; - } - } - it.compositeRule = $it.compositeRule = $wasComposite; - out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('oneOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should match exactly one schema in oneOf\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError(vErrors); '; - } else { - out += ' validate.errors = vErrors; return false; '; - } - } - out += '} else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }'; - if (it.opts.allErrors) { - out += ' } '; - } - return out; -} - - -/***/ }), -/* 251 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -module.exports = function generate_pattern(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema); - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'string\') || '; - } - out += ' !' + ($regexp) + '.test(' + ($data) + ') ) { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('pattern') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { pattern: '; - if ($isData) { - out += '' + ($schemaValue); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should match pattern "'; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + (it.util.escapeQuotes($schema)); - } - out += '"\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - - -/***/ }), -/* 252 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -module.exports = function generate_properties(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $key = 'key' + $lvl, - $idx = 'idx' + $lvl, - $dataNxt = $it.dataLevel = it.dataLevel + 1, - $nextData = 'data' + $dataNxt, - $dataProperties = 'dataProperties' + $lvl; - var $schemaKeys = Object.keys($schema || {}), - $pProperties = it.schema.patternProperties || {}, - $pPropertyKeys = Object.keys($pProperties), - $aProperties = it.schema.additionalProperties, - $someProperties = $schemaKeys.length || $pPropertyKeys.length, - $noAdditional = $aProperties === false, - $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length, - $removeAdditional = it.opts.removeAdditional, - $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional, - $ownProperties = it.opts.ownProperties, - $currentBaseId = it.baseId; - var $required = it.schema.required; - if ($required && !(it.opts.v5 && $required.$data) && $required.length < it.opts.loopRequired) var $requiredHash = it.util.toHash($required); - if (it.opts.patternGroups) { - var $pgProperties = it.schema.patternGroups || {}, - $pgPropertyKeys = Object.keys($pgProperties); - } - out += 'var ' + ($errs) + ' = errors;var ' + ($nextValid) + ' = true;'; - if ($ownProperties) { - out += ' var ' + ($dataProperties) + ' = undefined;'; - } - if ($checkAdditional) { - if ($ownProperties) { - out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; '; - } else { - out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; - } - if ($someProperties) { - out += ' var isAdditional' + ($lvl) + ' = !(false '; - if ($schemaKeys.length) { - if ($schemaKeys.length > 5) { - out += ' || validate.schema' + ($schemaPath) + '[' + ($key) + '] '; - } else { - var arr1 = $schemaKeys; - if (arr1) { - var $propertyKey, i1 = -1, - l1 = arr1.length - 1; - while (i1 < l1) { - $propertyKey = arr1[i1 += 1]; - out += ' || ' + ($key) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' '; - } - } - } - } - if ($pPropertyKeys.length) { - var arr2 = $pPropertyKeys; - if (arr2) { - var $pProperty, $i = -1, - l2 = arr2.length - 1; - while ($i < l2) { - $pProperty = arr2[$i += 1]; - out += ' || ' + (it.usePattern($pProperty)) + '.test(' + ($key) + ') '; - } - } - } - if (it.opts.patternGroups && $pgPropertyKeys.length) { - var arr3 = $pgPropertyKeys; - if (arr3) { - var $pgProperty, $i = -1, - l3 = arr3.length - 1; - while ($i < l3) { - $pgProperty = arr3[$i += 1]; - out += ' || ' + (it.usePattern($pgProperty)) + '.test(' + ($key) + ') '; - } - } - } - out += ' ); if (isAdditional' + ($lvl) + ') { '; - } - if ($removeAdditional == 'all') { - out += ' delete ' + ($data) + '[' + ($key) + ']; '; - } else { - var $currentErrorPath = it.errorPath; - var $additionalProperty = '\' + ' + $key + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); - } - if ($noAdditional) { - if ($removeAdditional) { - out += ' delete ' + ($data) + '[' + ($key) + ']; '; - } else { - out += ' ' + ($nextValid) + ' = false; '; - var $currErrSchemaPath = $errSchemaPath; - $errSchemaPath = it.errSchemaPath + '/additionalProperties'; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('additionalProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { additionalProperty: \'' + ($additionalProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have additional properties\' '; - } - if (it.opts.verbose) { - out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - $errSchemaPath = $currErrSchemaPath; - if ($breakOnError) { - out += ' break; '; - } - } - } else if ($additionalIsSchema) { - if ($removeAdditional == 'failing') { - out += ' var ' + ($errs) + ' = errors; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - $it.schema = $aProperties; - $it.schemaPath = it.schemaPath + '.additionalProperties'; - $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; - $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); - var $passData = $data + '[' + $key + ']'; - $it.dataPathArr[$dataNxt] = $key; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - out += ' if (!' + ($nextValid) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[' + ($key) + ']; } '; - it.compositeRule = $it.compositeRule = $wasComposite; - } else { - $it.schema = $aProperties; - $it.schemaPath = it.schemaPath + '.additionalProperties'; - $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; - $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); - var $passData = $data + '[' + $key + ']'; - $it.dataPathArr[$dataNxt] = $key; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!' + ($nextValid) + ') break; '; - } - } - } - it.errorPath = $currentErrorPath; - } - if ($someProperties) { - out += ' } '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - var $useDefaults = it.opts.useDefaults && !it.compositeRule; - if ($schemaKeys.length) { - var arr4 = $schemaKeys; - if (arr4) { - var $propertyKey, i4 = -1, - l4 = arr4.length - 1; - while (i4 < l4) { - $propertyKey = arr4[i4 += 1]; - var $sch = $schema[$propertyKey]; - if (it.util.schemaHasRules($sch, it.RULES.all)) { - var $prop = it.util.getProperty($propertyKey), - $passData = $data + $prop, - $hasDefault = $useDefaults && $sch.default !== undefined; - $it.schema = $sch; - $it.schemaPath = $schemaPath + $prop; - $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey); - $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers); - $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey); - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - $code = it.util.varReplace($code, $nextData, $passData); - var $useData = $passData; - } else { - var $useData = $nextData; - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; '; - } - if ($hasDefault) { - out += ' ' + ($code) + ' '; - } else { - if ($requiredHash && $requiredHash[$propertyKey]) { - out += ' if ( ' + ($useData) + ' === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ') { ' + ($nextValid) + ' = false; '; - var $currentErrorPath = it.errorPath, - $currErrSchemaPath = $errSchemaPath, - $missingProperty = it.util.escapeQuotes($propertyKey); - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); - } - $errSchemaPath = it.errSchemaPath + '/required'; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - $errSchemaPath = $currErrSchemaPath; - it.errorPath = $currentErrorPath; - out += ' } else { '; - } else { - if ($breakOnError) { - out += ' if ( ' + ($useData) + ' === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ') { ' + ($nextValid) + ' = true; } else { '; - } else { - out += ' if (' + ($useData) + ' !== undefined '; - if ($ownProperties) { - out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ' ) { '; - } - } - out += ' ' + ($code) + ' } '; - } - } - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } - } - if ($pPropertyKeys.length) { - var arr5 = $pPropertyKeys; - if (arr5) { - var $pProperty, i5 = -1, - l5 = arr5.length - 1; - while (i5 < l5) { - $pProperty = arr5[i5 += 1]; - var $sch = $pProperties[$pProperty]; - if (it.util.schemaHasRules($sch, it.RULES.all)) { - $it.schema = $sch; - $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty); - $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty); - if ($ownProperties) { - out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; '; - } else { - out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; - } - out += ' if (' + (it.usePattern($pProperty)) + '.test(' + ($key) + ')) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); - var $passData = $data + '[' + $key + ']'; - $it.dataPathArr[$dataNxt] = $key; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!' + ($nextValid) + ') break; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else ' + ($nextValid) + ' = true; '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } - } - } - if (it.opts.patternGroups && $pgPropertyKeys.length) { - var arr6 = $pgPropertyKeys; - if (arr6) { - var $pgProperty, i6 = -1, - l6 = arr6.length - 1; - while (i6 < l6) { - $pgProperty = arr6[i6 += 1]; - var $pgSchema = $pgProperties[$pgProperty], - $sch = $pgSchema.schema; - if (it.util.schemaHasRules($sch, it.RULES.all)) { - $it.schema = $sch; - $it.schemaPath = it.schemaPath + '.patternGroups' + it.util.getProperty($pgProperty) + '.schema'; - $it.errSchemaPath = it.errSchemaPath + '/patternGroups/' + it.util.escapeFragment($pgProperty) + '/schema'; - out += ' var pgPropCount' + ($lvl) + ' = 0; '; - if ($ownProperties) { - out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; '; - } else { - out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; - } - out += ' if (' + (it.usePattern($pgProperty)) + '.test(' + ($key) + ')) { pgPropCount' + ($lvl) + '++; '; - $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); - var $passData = $data + '[' + $key + ']'; - $it.dataPathArr[$dataNxt] = $key; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!' + ($nextValid) + ') break; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else ' + ($nextValid) + ' = true; '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - var $pgMin = $pgSchema.minimum, - $pgMax = $pgSchema.maximum; - if ($pgMin !== undefined || $pgMax !== undefined) { - out += ' var ' + ($valid) + ' = true; '; - var $currErrSchemaPath = $errSchemaPath; - if ($pgMin !== undefined) { - var $limit = $pgMin, - $reason = 'minimum', - $moreOrLess = 'less'; - out += ' ' + ($valid) + ' = pgPropCount' + ($lvl) + ' >= ' + ($pgMin) + '; '; - $errSchemaPath = it.errSchemaPath + '/patternGroups/minimum'; - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('patternGroups') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { reason: \'' + ($reason) + '\', limit: ' + ($limit) + ', pattern: \'' + (it.util.escapeQuotes($pgProperty)) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have ' + ($moreOrLess) + ' than ' + ($limit) + ' properties matching pattern "' + (it.util.escapeQuotes($pgProperty)) + '"\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($pgMax !== undefined) { - out += ' else '; - } - } - if ($pgMax !== undefined) { - var $limit = $pgMax, - $reason = 'maximum', - $moreOrLess = 'more'; - out += ' ' + ($valid) + ' = pgPropCount' + ($lvl) + ' <= ' + ($pgMax) + '; '; - $errSchemaPath = it.errSchemaPath + '/patternGroups/maximum'; - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('patternGroups') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { reason: \'' + ($reason) + '\', limit: ' + ($limit) + ', pattern: \'' + (it.util.escapeQuotes($pgProperty)) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have ' + ($moreOrLess) + ' than ' + ($limit) + ' properties matching pattern "' + (it.util.escapeQuotes($pgProperty)) + '"\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - } - $errSchemaPath = $currErrSchemaPath; - if ($breakOnError) { - out += ' if (' + ($valid) + ') { '; - $closingBraces += '}'; - } - } - } - } - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; - } - out = it.util.cleanUpCode(out); - return out; -} - +exports.registerLazyResolveState = function (transitionService) { + return transitionService.onEnter({ entering: hof_1.val(true) }, lazyResolveState, { priority: exports.RESOLVE_HOOK_PRIORITY }); +}; +/** + * A [[TransitionHookFn]] which resolves any dynamically added (LAZY or EAGER) Resolvables. + * + * Registered using `transitionService.onFinish({}, eagerResolvePath, { priority: 1000 });` + * + * After all entering states have been entered, this hook resolves any remaining Resolvables. + * These are typically dynamic resolves which were added by some Transition Hook using [[Transition.addResolvable]]. + * + * See [[StateDeclaration.resolve]] + */ +var resolveRemaining = function (trans) { + return new resolveContext_1.ResolveContext(trans.treeChanges().to) + .resolvePath("LAZY", trans) + .then(common_1.noop); +}; +exports.registerResolveRemaining = function (transitionService) { + return transitionService.onFinish({}, resolveRemaining, { priority: exports.RESOLVE_HOOK_PRIORITY }); +}; +//# sourceMappingURL=resolve.js.map /***/ }), -/* 253 */ +/* 201 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -module.exports = function generate_propertyNames(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - if (it.util.schemaHasRules($schema, it.RULES.all)) { - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - var $key = 'key' + $lvl, - $idx = 'idx' + $lvl, - $i = 'i' + $lvl, - $invalidName = '\' + ' + $key + ' + \'', - $dataNxt = $it.dataLevel = it.dataLevel + 1, - $nextData = 'data' + $dataNxt, - $dataProperties = 'dataProperties' + $lvl, - $ownProperties = it.opts.ownProperties, - $currentBaseId = it.baseId; - out += ' var ' + ($errs) + ' = errors; '; - if ($ownProperties) { - out += ' var ' + ($dataProperties) + ' = undefined; '; - } - if ($ownProperties) { - out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; '; - } else { - out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; - } - out += ' var startErrs' + ($lvl) + ' = errors; '; - var $passData = $key; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' if (!' + ($nextValid) + ') { for (var ' + ($i) + '=startErrs' + ($lvl) + '; ' + ($i) + '= it.opts.loopRequired, - $ownProperties = it.opts.ownProperties; - if ($breakOnError) { - out += ' var missing' + ($lvl) + '; '; - if ($loopRequired) { - if (!$isData) { - out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; '; - } - var $i = 'i' + $lvl, - $propertyPath = 'schema' + $lvl + '[' + $i + ']', - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); - } - out += ' var ' + ($valid) + ' = true; '; - if ($isData) { - out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {'; - } - out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] !== undefined '; - if ($ownProperties) { - out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) '; - } - out += '; if (!' + ($valid) + ') break; } '; - if ($isData) { - out += ' } '; - } - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { '; - } else { - out += ' if ( '; - var arr2 = $required; - if (arr2) { - var $propertyKey, $i = -1, - l2 = arr2.length - 1; - while ($i < l2) { - $propertyKey = arr2[$i += 1]; - if ($i) { - out += ' || '; - } - var $prop = it.util.getProperty($propertyKey), - $useData = $data + $prop; - out += ' ( ( ' + ($useData) + ' === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) '; - } - } - out += ') { '; - var $propertyPath = 'missing' + $lvl, - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath; - } - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { '; - } - } else { - if ($loopRequired) { - if (!$isData) { - out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; '; - } - var $i = 'i' + $lvl, - $propertyPath = 'schema' + $lvl + '[' + $i + ']', - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); - } - if ($isData) { - out += ' if (' + ($vSchema) + ' && !Array.isArray(' + ($vSchema) + ')) { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (' + ($vSchema) + ' !== undefined) { '; - } - out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { if (' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) '; - } - out += ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } '; - if ($isData) { - out += ' } '; - } - } else { - var arr3 = $required; - if (arr3) { - var $propertyKey, i3 = -1, - l3 = arr3.length - 1; - while (i3 < l3) { - $propertyKey = arr3[i3 += 1]; - var $prop = it.util.getProperty($propertyKey), - $missingProperty = it.util.escapeQuotes($propertyKey), - $useData = $data + $prop; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); - } - out += ' if ( ' + ($useData) + ' === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } '; - } - } - } - } - it.errorPath = $currentErrorPath; - } else if ($breakOnError) { - out += ' if (true) {'; - } - return out; -} - +Object.defineProperty(exports, "__esModule", { value: true }); +var common_1 = __webpack_require__(1); +/** + * A [[TransitionHookFn]] which updates global UI-Router state + * + * Registered using `transitionService.onBefore({}, updateGlobalState);` + * + * Before a [[Transition]] starts, updates the global value of "the current transition" ([[Globals.transition]]). + * After a successful [[Transition]], updates the global values of "the current state" + * ([[Globals.current]] and [[Globals.$current]]) and "the current param values" ([[Globals.params]]). + * + * See also the deprecated properties: + * [[StateService.transition]], [[StateService.current]], [[StateService.params]] + */ +var updateGlobalState = function (trans) { + var globals = trans.router.globals; + var transitionSuccessful = function () { + globals.successfulTransitions.enqueue(trans); + globals.$current = trans.$to(); + globals.current = globals.$current.self; + common_1.copy(trans.params(), globals.params); + }; + var clearCurrentTransition = function () { + // Do not clear globals.transition if a different transition has started in the meantime + if (globals.transition === trans) + globals.transition = null; + }; + trans.onSuccess({}, transitionSuccessful, { priority: 10000 }); + trans.promise.then(clearCurrentTransition, clearCurrentTransition); +}; +exports.registerUpdateGlobalState = function (transitionService) { + return transitionService.onCreate({}, updateGlobalState); +}; +//# sourceMappingURL=updateGlobals.js.map /***/ }), -/* 255 */ +/* 203 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -module.exports = function generate_uniqueItems(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - if (($schema || $isData) && it.opts.uniqueItems !== false) { - if ($isData) { - out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'boolean\') ' + ($valid) + ' = false; else { '; - } - out += ' var ' + ($valid) + ' = true; if (' + ($data) + '.length > 1) { var i = ' + ($data) + '.length, j; outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } } '; - if ($isData) { - out += ' } '; - } - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('uniqueItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { i: i, j: j } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have duplicate items (items ## \' + j + \' and \' + i + \' are identical)\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else { '; - } - } else { - if ($breakOnError) { - out += ' if (true) { '; +Object.defineProperty(exports, "__esModule", { value: true }); +/** + * A [[TransitionHookFn]] which updates the URL after a successful transition + * + * Registered using `transitionService.onSuccess({}, updateUrl);` + */ +var updateUrl = function (transition) { + var options = transition.options(); + var $state = transition.router.stateService; + var $urlRouter = transition.router.urlRouter; + // Dont update the url in these situations: + // The transition was triggered by a URL sync (options.source === 'url') + // The user doesn't want the url to update (options.location === false) + // The destination state, and all parents have no navigable url + if (options.source !== 'url' && options.location && $state.$current.navigable) { + var urlOptions = { replace: options.location === 'replace' }; + $urlRouter.push($state.$current.navigable.url, $state.params, urlOptions); } - } - return out; -} - + $urlRouter.update(true); +}; +exports.registerUpdateUrl = function (transitionService) { + return transitionService.onSuccess({}, updateUrl, { priority: 9999 }); +}; +//# sourceMappingURL=url.js.map /***/ }), -/* 256 */ +/* 204 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; - -var KEYWORDS = [ - 'multipleOf', - 'maximum', - 'exclusiveMaximum', - 'minimum', - 'exclusiveMinimum', - 'maxLength', - 'minLength', - 'pattern', - 'additionalItems', - 'maxItems', - 'minItems', - 'uniqueItems', - 'maxProperties', - 'minProperties', - 'required', - 'additionalProperties', - 'enum', - 'format', - 'const' -]; - -module.exports = function (metaSchema, keywordsJsonPointers) { - for (var i=0; i
- +
@@ -148,12 +151,12 @@
- +
@@ -195,12 +208,12 @@
- +
@@ -213,12 +233,12 @@
- +
diff --git a/build/views/settings.html b/build/views/settings.html index eafc628..f627aba 100644 --- a/build/views/settings.html +++ b/build/views/settings.html @@ -158,6 +158,25 @@

InfluxDB

+ +
+

TP-Link + +

+
+
+ + +
+
+ + +
+
+ Connected + +
+

Arduinos diff --git a/package.json b/package.json index c8988e9..be0c226 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,9 @@ "description": "Is an Arduino Yun brew monitor for the home brewer enthusiast that uses the Arduino REST API to interface with thermistors connected to the analog ports.", "main": "build/app.js", "scripts": { - "test": "webpack ; karma start karma.conf.js --single-run", - "start": "concurrently 'lite-server' 'webpack — watch'", + "test": "webpack && karma start karma.conf.js --single-run", + "dev": "webpack-dev-server --progress --watch --inline --hot --content-base ./build", + "start": "webpack && npm run dev", "build": "webpack --progress --profile --colors --display-error-details --display-cached --display-entrypoints" }, "repository": { @@ -48,7 +49,8 @@ "babel-core": "^6.26.0", "babel-loader": "^7.1.2", "babel-preset-es2015": "^6.24.1", - "concurrently": "^3.5.1", + "browser-sync": "^2.21.0", + "browser-sync-webpack-plugin": "^1.2.0", "copy-webpack-plugin": "^4.3.1", "html-loader": "^0.5.1", "jasmine-core": "^2.6.4", @@ -56,21 +58,20 @@ "karma-chrome-launcher": "^2.2.0", "karma-jasmine": "^1.1.0", "karma-spec-reporter": "^0.0.31", - "lite-server": "^2.3.0", "node-sass": "^4.5.3", "webpack": "^3.10.0", + "webpack-dev-server": "^2.9.7", "webpack-md5-hash": "0.0.6" }, "dependencies": { "@uirouter/angularjs": "^1.0.12", - "ajv": "^5.5.2", "angular": "1.6.6", "angular-nvd3": "^1.0.9", "angular-scroll": "^1.0.2", "angular-touch": "^1.6.8", "angularjs-slider": "^6.2.2", - "jquery": "^3.2.1", "bootstrap": "^4.0.0-beta.2", + "jquery": "^3.2.1", "lodash": "^4.17.4", "moment": "^2.20.1", "popper.js": "^1.12.9" diff --git a/src/js/controllers.js b/src/js/controllers.js index 28c7236..a87bf27 100644 --- a/src/js/controllers.js +++ b/src/js/controllers.js @@ -194,8 +194,22 @@ $scope.updateABV(); } }; - $scope.tpScan = function(){ - BrewService.tplink().scan(); + $scope.tplink = { + login: () => { + BrewService.tplink().login($scope.settings.tplink.user,$scope.settings.tplink.pass) + .then(response => { + if(response.token){ + $scope.settings.tplink.token = response.token; + $scope.tplink.scan(response.token); + } + }); + }, + scan: () => { + BrewService.tplink().scan().then(response => { + if(response.deviceList) + $scope.settings.tplink.plugs = response.deviceList; + }); + } }; $scope.addKettle = function(type){ @@ -227,6 +241,13 @@ $scope.updateABV(); return _.filter($scope.kettles,{'active': true}).length; }; + $scope.pinDisplay = function(pin){ + if( pin.indexOf('TP-')===0 ) + return _.filter($scope.settings.tplink.plugs,{deviceId: pin.substr(3)})[0].alias; + else + return pin; + }; + $scope.pinInUse = function(pin,analog){ var kettle = _.find($scope.kettles, function(kettle){ return ( @@ -241,19 +262,6 @@ $scope.updateABV(); return kettle || false; }; - $scope.pinChange = function(old_pin,new_pin,analog){ - //find kettle with new pin and replace it with old pin - var kettle = $scope.pinInUse(new_pin,analog); - if(kettle){ - if(kettle.temp.pin == new_pin) - kettle.temp.pin = old_pin; - else if(kettle.heater.pin == new_pin) - kettle.heater.pin = old_pin; - else if(kettle.pump.pin == new_pin) - kettle.pump.pin = old_pin; - } - }; - $scope.createShare = function(){ if(!$scope.settings.recipe.brewer.name || !$scope.settings.recipe.brewer.email) return; @@ -847,7 +855,16 @@ $scope.updateABV(); $scope.toggleRelay = function(kettle, element, on){ if(on) { - if(element.pwm){ + if(element.pin.indexOf('TP-')===0){ + let device = _.filter($scope.settings.tplink.plugs,{deviceId: element.pin.substr(3)})[0]; + return BrewService.tplink().on(device) + .then(() => { + //started + element.running=true; + }) + .catch((err) => $scope.setErrorMessage(err, kettle)); + } + else if(element.pwm){ return BrewService.analog(kettle, element.pin,Math.round(255*element.dutyCycle/100)) .then(() => { //started @@ -870,7 +887,16 @@ $scope.updateABV(); .catch((err) => $scope.setErrorMessage(err, kettle)); } } else { - if(element.pwm || element.ssr){ + if(element.pin.indexOf('TP-')===0){ + let device = _.filter($scope.settings.tplink.plugs,{deviceId: element.pin.substr(3)})[0]; + return BrewService.tplink().off(device) + .then(() => { + //started + element.running=false; + }) + .catch((err) => $scope.setErrorMessage(err, kettle)); + } + else if(element.pwm || element.ssr){ return BrewService.analog(kettle, element.pin,0) .then(() => { element.running=false; diff --git a/src/js/services.js b/src/js/services.js index dae35ee..756106f 100644 --- a/src/js/services.js +++ b/src/js/services.js @@ -30,7 +30,7 @@ angular.module('brewbench-monitor') digital: 13, secure: false }] - ,tplinks: [] + ,tplink: {user: '', pass: '', token:'', plugs: []} }; }, @@ -365,16 +365,105 @@ angular.module('brewbench-monitor') }, tplink: function(){ - + const url = "https://wap.tplinkcloud.com"; + let params = { + appName: 'Kasa_Android', + termID: 'BrewBench', + appVer: '1.4.4.607', + ospf: 'Android+6.0.1', + netType: 'wifi', + locale: 'es_EN' + }; return { - scan: () => { - + login: (user,pass) => { + let q = $q.defer(); + if(!user || !pass) + return q.reject('Invalid Login'); + const login_payload = { + "method": "login", + "url": url, + "params": { + "appType": "Kasa_Android", + "cloudPassword": pass, + "cloudUserName": user, + "terminalUUID": params.termID + } + }; + $http({url: url, + method: 'POST', + params: params, + data: JSON.stringify(login_payload), + headers: {'Content-Type': 'application/json'} + }) + .then(response => { + // save the token + if(response.data.result){ + q.resolve(response.data.result); + } else { + q.reject('No response'); + } + }) + .catch(err => { + q.reject(err); + }); + return q.promise; }, - on: () => { - + scan: (token) => { + let q = $q.defer(); + let settings = this.settings('settings'); + token = token || settings.tplink.token; + if(!token) + return q.reject('Invalid token'); + $http({url: url, + method: 'POST', + params: {token: token}, + data: JSON.stringify({ method: "getDeviceList" }), + headers: {'Content-Type': 'application/json'} + }) + .then(response => { + q.resolve(response.data.result); + }) + .catch(err => { + q.reject(err); + }); + return q.promise; }, - off: () => { - + command: (device, command) => { + let q = $q.defer(); + let settings = this.settings('settings'); + let token = settings.tplink.token; + let payload = { + "method":"passthrough", + "params": { + "deviceId": device.deviceId, + "requestData": JSON.stringify( command ) + } + }; + // set the token + if(!token) + return q.reject('Invalid token'); + params.token = token; + $http({url: device.appServerUrl, + method: 'POST', + params: params, + data: JSON.stringify(payload), + headers: {'Cache-Control': 'no-cache', 'Content-Type': 'application/json'} + }) + .then(response => { + q.resolve(response.data.result); + }) + .catch(err => { + q.reject(err); + }); + return q.promise; + }, + on: (device) => { + let command = {"system":{"set_relay_state":{"state": 1 }}}; + return this.tplink().command(device, command); + }, + off: (device) => { + let command = {"system":{"set_relay_state":{"state": 0 }}}; + return this.tplink().command(device, command); } }; }, diff --git a/src/views/kettles-card.html b/src/views/kettles-card.html index 3093fa1..b2da829 100644 --- a/src/views/kettles-card.html +++ b/src/views/kettles-card.html @@ -50,7 +50,7 @@

- +
@@ -148,12 +151,12 @@
- +
@@ -195,12 +208,12 @@
- +
@@ -213,12 +233,12 @@
- +
diff --git a/src/views/settings.html b/src/views/settings.html index eafc628..f627aba 100644 --- a/src/views/settings.html +++ b/src/views/settings.html @@ -158,6 +158,25 @@

InfluxDB

+ +
+

TP-Link + +

+
+
+ + +
+
+ + +
+
+ Connected + +
+

Arduinos diff --git a/webpack.config.js b/webpack.config.js index fb3bbd2..aea6110 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -2,6 +2,7 @@ const webpack = require('webpack'); const WebpackMd5Hash = require('webpack-md5-hash'); const AssetsPlugin = require('assets-webpack-plugin'); const CopyWebpackPlugin = require('copy-webpack-plugin'); +const BrowserSyncPlugin = require('browser-sync-webpack-plugin'); const path = require('path'); const pkg = require('./package.json'); @@ -24,7 +25,7 @@ module.exports = { vendor_node: Object.keys(pkg.dependencies) }, output: { - path: path.resolve('./build'), + path: path.resolve(__dirname, 'build'), filename: 'js/[name].js', chunkFilename: 'js/[name]-[chunkhash].js', jsonpFunction: 'webpackJsonp' @@ -65,6 +66,25 @@ module.exports = { Util: "exports-loader?Util!bootstrap/js/dist/util", Dropdown: "exports-loader?Dropdown!bootstrap/js/dist/dropdown", }), + + new BrowserSyncPlugin( + // BrowserSync options + { + // browse to http://localhost:3000/ during development + host: 'localhost', + port: 8000, + // proxy the Webpack Dev Server endpoint + // (which should be serving on http://localhost:3100/) + // through BrowserSync + // proxy: 'http://localhost:3100/', + server: { baseDir: ['build'] } + }, + // plugin options + { + // prevent BrowserSync from reloading the page + // and let Webpack Dev Server take care of this + reload: false + }), ], module: { loaders: [