From 1c23dc22cc3350d4989522282e6b3e1c5e64436f Mon Sep 17 00:00:00 2001
From: 快乐的昕的电脑 <快乐的昕的电脑@DESKTOP-C2BQPQU>
Date: 星期四, 25 十二月 2025 10:48:46 +0800
Subject: [PATCH] 调试

---
 unpackage/dist/dev/app-plus/app-service.js |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/unpackage/dist/dev/app-plus/app-service.js b/unpackage/dist/dev/app-plus/app-service.js
index 6d95f4b..108e72c 100644
--- a/unpackage/dist/dev/app-plus/app-service.js
+++ b/unpackage/dist/dev/app-plus/app-service.js
@@ -4827,7 +4827,7 @@
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 2);\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 3));\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 6));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 9));\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n  data: function data() {\n    return {\n      machineNo: '',\n      //鏈哄彴缂栫爜\n      workOrderNo: '',\n      //宸ュ崟鍙穃n      activeToolNo: '',\n      // 褰撳墠閫変腑鐨勫垁鍏风紪鍙穃n      pageIndex: 1,\n      pageSize: 20,\n      //鍗曢〉鏄剧ず鐨勫垁鍏锋暟閲廫n      total: 0,\n      toolList: [],\n      selectedToolNo: '',\n      toolName: '',\n      toolModel: '',\n      showToolDialog: false,\n      searchKey: '',\n      filteredTools: [],\n      useLimitInput: '',\n      lifeWarnInput: '',\n      // 鏂板锛氬鍛芥瘮棰勮鍊煎師濮嬭緭鍏n      toolRecords: [],\n      loadingTools: false,\n      loadingForm: false,\n      submitting: false,\n      _searchTimer: null,\n      workOrderCurrentCjNum: null,\n      // 宸ュ崟褰撳墠鏁伴噰\n\n      // 鑷姩淇濆瓨鐩稿叧\n      autoSaveTimer: null,\n      isDirty: false,\n      // 琛ㄥ崟鏄惁鏈夋湭淇濆瓨鍙樻洿\n      autoSaveIntervalMs: 5 * 60 * 1000,\n      // 榛樿 5 鍒嗛挓\n      autoSaveEnabled: true,\n      autoSaveActionName: 'handleUpTool',\n      // 鑷姩瑙﹀彂鐨勬柟娉曞悕锛屽彲鏀逛负鑷畾涔変繚瀛樻柟娉昞n\n      // 鏂板锛氳皟鏈虹浉鍏冲瓧娈礬n      isTiaojiUserSelectShow: false,\n      // 璋冩満甯堝倕閫夋嫨寮圭獥\n      tiaojiStaffNo: '',\n      // 褰撳墠閫変腑鐨勮皟鏈哄笀鍌�(鏍煎紡: 宸ュ彿:濮撳悕)\n      tiaojiOkQty: '',\n      // 璋冩満鑹搧鏁癨n      tiaojiBadQty: '',\n      // 璋冩満涓嶈壇鍝佹暟\n      tiaojiUsers: [],\n      // 璋冩満甯堝倕鍒楄〃\n      tiaojiUserSearch: '',\n      // 鎼滅储鍏抽敭璇峔n\n      // 鏂板锛氭姤璇曚骇鏁版墍闇�瀛楁\n      orderId: null,\n      // 宸ュ崟ID\n      order: {} // 宸ュ崟鏁版嵁\n    };\n  },\n\n  computed: {\n    totalPages: function totalPages() {\n      return Math.max(1, Math.ceil(this.total / this.pageSize) || 1);\n    },\n    // 鏂板锛氳皟鏈哄笀鍌呮樉绀哄悕绉癨n    tiaojiStaffDisplay: function tiaojiStaffDisplay() {\n      if (!this.tiaojiStaffNo) return '';\n      var segs = this.tiaojiStaffNo.split(':');\n      return segs.length > 1 ? \"\".concat(segs[0], \" \").concat(segs[1]) : this.tiaojiStaffNo;\n    },\n    // 鏂板锛氳繃婊ゅ悗鐨勮皟鏈哄笀鍌呭垪琛╘n    filteredTiaojiUsers: function filteredTiaojiUsers() {\n      if (!this.tiaojiUserSearch) return this.tiaojiUsers;\n      var kw = this.tiaojiUserSearch.trim().toLowerCase();\n      return this.tiaojiUsers.filter(function (u) {\n        return u.toLowerCase().includes(kw);\n      });\n    }\n  },\n  watch: {\n    // 鏍囪鑴忔暟鎹細鎸夐渶鐩戝惉瀛楁鍙樺寲\n    selectedToolNo: function selectedToolNo() {\n      this.isDirty = true;\n    },\n    useLimitInput: function useLimitInput() {\n      this.isDirty = true;\n    },\n    lifeWarnInput: function lifeWarnInput() {\n      this.isDirty = true;\n    },\n    toolName: function toolName() {\n      this.isDirty = true;\n    },\n    toolModel: function toolModel() {\n      this.isDirty = true;\n    }\n  },\n  methods: {\n    //鏌ヨ褰撳墠鏁伴噰鏁帮紝浣滀负涓嬪垁璁℃暟瀹炴椂鏄剧ず\n    fetchCurrentCjNum: function fetchCurrentCjNum(toolNo) {\n      var _this = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n        var _res$data, res, _ref, _found$CurrentCjNum, found;\n        return _regenerator.default.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                if (_this.machineNo) {\n                  _context.next = 2;\n                  break;\n                }\n                return _context.abrupt(\"return\", null);\n              case 2:\n                _context.prev = 2;\n                _context.next = 5;\n                return _this.$post({\n                  url: '/Womdaa/GetWomdaasByShow',\n                  data: JSON.stringify({\n                    machineNo: _this.machineNo\n                  }),\n                  headers: {\n                    'Content-Type': 'application/json'\n                  }\n                });\n              case 5:\n                res = _context.sent;\n                if (!(res.status === 0 && Array.isArray((_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.tbBillList))) {\n                  _context.next = 9;\n                  break;\n                }\n                found = res.data.tbBillList.find(function (x) {\n                  return x.cutterId === toolNo || x.cutteR_ID === toolNo;\n                });\n                return _context.abrupt(\"return\", found ? (_ref = (_found$CurrentCjNum = found.CurrentCjNum) !== null && _found$CurrentCjNum !== void 0 ? _found$CurrentCjNum : found.currentCjNum) !== null && _ref !== void 0 ? _ref : null : null);\n              case 9:\n                _context.next = 14;\n                break;\n              case 11:\n                _context.prev = 11;\n                _context.t0 = _context[\"catch\"](2);\n                __f__(\"warn\", '鑾峰彇currentCjNum澶辫触', _context.t0, \" at components/mold.vue:334\");\n              case 14:\n                return _context.abrupt(\"return\", null);\n              case 15:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee, null, [[2, 11]]);\n      }))();\n    },\n    // 鏂板锛氬埛鏂版寜閽鐞嗘柟娉昞n    handleRefresh: function handleRefresh() {\n      var _this2 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n        return _regenerator.default.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                _this2.fetchTools('');\n                if (!(_this2.machineNo && _this2.workOrderNo)) {\n                  _context2.next = 7;\n                  break;\n                }\n                _context2.next = 4;\n                return _this2.fetchFormData();\n              case 4:\n                _context2.next = 6;\n                return _this2.fetchDefaultToolFromWorkOrder();\n              case 6:\n                // 鍒锋柊鍚庤祴鍊肩涓�琛� currentCjNum\n                if (_this2.toolRecords.length > 0) {\n                  _this2.$set(_this2.toolRecords[0], 'currentCjNum', _this2.workOrderCurrentCjNum);\n                }\n              case 7:\n                _this2.$showMessage('鍒锋柊瀹屾垚');\n              case 8:\n              case \"end\":\n                return _context2.stop();\n            }\n          }\n        }, _callee2);\n      }))();\n    },\n    // 鑷姩淇濆瓨锛氬惎鍔╘n    startAutoSave: function startAutoSave() {\n      var _this3 = this;\n      if (!this.autoSaveEnabled) return;\n      this.stopAutoSave();\n      this.autoSaveTimer = setInterval(function () {\n        _this3.autoSaveTick();\n      }, this.autoSaveIntervalMs);\n    },\n    // 鑷姩淇濆瓨锛氬仠姝n    stopAutoSave: function stopAutoSave() {\n      if (this.autoSaveTimer) {\n        clearInterval(this.autoSaveTimer);\n        this.autoSaveTimer = null;\n      }\n    },\n    // 鑷姩淇濆瓨锛氭瘡娆″畾鏃舵墽琛屾椂鐨勯�昏緫\n    autoSaveTick: function autoSaveTick() {\n      var _this4 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {\n        var fn;\n        return _regenerator.default.wrap(function _callee3$(_context3) {\n          while (1) {\n            switch (_context3.prev = _context3.next) {\n              case 0:\n                if (_this4.autoSaveEnabled) {\n                  _context3.next = 2;\n                  break;\n                }\n                return _context3.abrupt(\"return\");\n              case 2:\n                if (_this4.isDirty) {\n                  _context3.next = 4;\n                  break;\n                }\n                return _context3.abrupt(\"return\");\n              case 4:\n                if (!(_this4.submitting || _this4.loadingForm)) {\n                  _context3.next = 6;\n                  break;\n                }\n                return _context3.abrupt(\"return\");\n              case 6:\n                fn = _this4.autoSaveActionName && typeof _this4[_this4.autoSaveActionName] === 'function' ? _this4[_this4.autoSaveActionName] : null;\n                if (fn) {\n                  _context3.next = 10;\n                  break;\n                }\n                __f__(\"warn\", '鑷姩淇濆瓨锛氭湭鎵惧埌鏂规硶', _this4.autoSaveActionName, \" at components/mold.vue:377\");\n                return _context3.abrupt(\"return\");\n              case 10:\n                _context3.prev = 10;\n                _this4.submitting = true;\n                _context3.next = 14;\n                return fn.call(_this4);\n              case 14:\n                // 璋冪敤淇濆瓨鏂规硶锛堜緥濡� handleUpTool锛塡n                // 濡傛灉淇濆瓨鎴愬姛锛屾竻鑴忔爣璁帮紙淇濆瓨鏂规硶鍐呴儴鑻ュけ璐ユ病鏈夋姏鍑哄彲淇濇寔姝ゆ柟寮忥級\n                _this4.isDirty = false;\n                _context3.next = 20;\n                break;\n              case 17:\n                _context3.prev = 17;\n                _context3.t0 = _context3[\"catch\"](10);\n                __f__(\"error\", '鑷姩淇濆瓨澶辫触锛�', _context3.t0, \" at components/mold.vue:387\");\n              case 20:\n                _context3.prev = 20;\n                _this4.submitting = false;\n                return _context3.finish(20);\n              case 23:\n              case \"end\":\n                return _context3.stop();\n            }\n          }\n        }, _callee3, null, [[10, 17, 20, 23]]);\n      }))();\n    },\n    // 鏂板锛氬鍛芥瘮棰勮鍊煎綊涓�鍖� (杩斿洖 0~1 鎴� null)\n    normalizeLifeWarn: function normalizeLifeWarn(v) {\n      if (v == null) return null;\n      var raw = String(v).trim().replace(/[%锛匽/g, '');\n      if (raw === '') return null;\n      var num = Number(raw);\n      if (!isFinite(num) || num <= 0) return null;\n      return num > 1 ? num / 100 : num;\n    },\n    openToolDialog: function openToolDialog() {\n      this.showToolDialog = true;\n      this.pageIndex = 1;\n      this.fetchTools(this.searchKey);\n    },\n    closeToolDialog: function closeToolDialog() {\n      this.showToolDialog = false;\n    },\n    fetchTools: function fetchTools(searchKey) {\n      var _this5 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n        var res, _ref2, _ref3, _ref4, _res$data$total, _res$data2, _res$data3, payload, getField, mapped, totalFromRes;\n        return _regenerator.default.wrap(function _callee4$(_context4) {\n          while (1) {\n            switch (_context4.prev = _context4.next) {\n              case 0:\n                _this5.loadingTools = true;\n                _context4.prev = 1;\n                _context4.next = 4;\n                return _this5.$post({\n                  url: '/MesCutterLedger/QueryTools',\n                  data: JSON.stringify({\n                    searchKey: searchKey,\n                    pageIndex: _this5.pageIndex,\n                    pageSize: _this5.pageSize\n                  }),\n                  headers: {\n                    'Content-Type': 'application/json'\n                  }\n                });\n              case 4:\n                res = _context4.sent;\n                if (res.status === 0) {\n                  payload = Array.isArray(res.data) ? res.data : res.data && res.data.tbBillList ? res.data.tbBillList : res.data && res.data.data ? res.data.data : [];\n                  getField = function getField(obj) {\n                    for (var _len = arguments.length, keys = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n                      keys[_key - 1] = arguments[_key];\n                    }\n                    for (var _i = 0, _keys = keys; _i < _keys.length; _i++) {\n                      var k = _keys[_i];\n                      if ((obj === null || obj === void 0 ? void 0 : obj[k]) !== undefined && (obj === null || obj === void 0 ? void 0 : obj[k]) !== null) return obj[k];\n                    }\n                    return null;\n                  }; // 杩欓噷闇�瑕佹妸 lifeWarn 瀛楁涔熷甫鍑烘潵\n                  mapped = (payload || []).map(function (t) {\n                    return {\n                      no: getField(t, 'cutterId', 'CUTTER_ID', 'cutteR_ID', 'daA001', 'no'),\n                      name: getField(t, 'cutterName', 'CUTTER_NAME', 'cutteR_NAME', 'name'),\n                      model: getField(t, 'cutterModel', 'CUTTER_MODEL', 'cutteR_MODEL', 'model'),\n                      lifeWarn: getField(t, 'modlLifeWorning', 'lifeWarn', 'LIFE_WARN', 'lifE_WARN')\n                    };\n                  });\n                  _this5.filteredTools = mapped;\n                  _this5.toolList = mapped.slice();\n                  totalFromRes = Number((_ref2 = (_ref3 = (_ref4 = (_res$data$total = (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.total) !== null && _res$data$total !== void 0 ? _res$data$total : (_res$data3 = res.data) === null || _res$data3 === void 0 ? void 0 : _res$data3.totalCount) !== null && _ref4 !== void 0 ? _ref4 : res.total) !== null && _ref3 !== void 0 ? _ref3 : res.totalCount) !== null && _ref2 !== void 0 ? _ref2 : mapped.length);\n                  _this5.total = Number.isFinite(totalFromRes) ? totalFromRes : mapped.length;\n                  if (_this5.pageIndex > _this5.totalPages) {\n                    _this5.pageIndex = _this5.totalPages;\n                  }\n                } else {\n                  _this5.$showMessage(res.message || '鏌ヨ澶辫触');\n                }\n                _context4.next = 12;\n                break;\n              case 8:\n                _context4.prev = 8;\n                _context4.t0 = _context4[\"catch\"](1);\n                __f__(\"error\", 'fetchTools 閿欒锛�', _context4.t0, \" at components/mold.vue:456\");\n                _this5.$showMessage('鏌ヨ鍒�鍏峰け璐ワ紝璇锋鏌ョ綉缁滄垨鎺ュ彛');\n              case 12:\n                _context4.prev = 12;\n                _this5.loadingTools = false;\n                return _context4.finish(12);\n              case 15:\n              case \"end\":\n                return _context4.stop();\n            }\n          }\n        }, _callee4, null, [[1, 8, 12, 15]]);\n      }))();\n    },\n    prevPage: function prevPage() {\n      var _this6 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {\n        return _regenerator.default.wrap(function _callee5$(_context5) {\n          while (1) {\n            switch (_context5.prev = _context5.next) {\n              case 0:\n                if (!(_this6.pageIndex > 1)) {\n                  _context5.next = 4;\n                  break;\n                }\n                _this6.pageIndex--;\n                _context5.next = 4;\n                return _this6.fetchTools(_this6.searchKey);\n              case 4:\n              case \"end\":\n                return _context5.stop();\n            }\n          }\n        }, _callee5);\n      }))();\n    },\n    nextPage: function nextPage() {\n      var _this7 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {\n        return _regenerator.default.wrap(function _callee6$(_context6) {\n          while (1) {\n            switch (_context6.prev = _context6.next) {\n              case 0:\n                if (!(_this7.pageIndex < _this7.totalPages)) {\n                  _context6.next = 4;\n                  break;\n                }\n                _this7.pageIndex++;\n                _context6.next = 4;\n                return _this7.fetchTools(_this7.searchKey);\n              case 4:\n              case \"end\":\n                return _context6.stop();\n            }\n          }\n        }, _callee6);\n      }))();\n    },\n    onSearchKeyInput: function onSearchKeyInput() {\n      var _this8 = this;\n      clearTimeout(this._searchTimer);\n      this._searchTimer = setTimeout(function () {\n        _this8.searchTool();\n      }, 300);\n    },\n    searchTool: function searchTool() {\n      var _this9 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {\n        return _regenerator.default.wrap(function _callee7$(_context7) {\n          while (1) {\n            switch (_context7.prev = _context7.next) {\n              case 0:\n                _this9.pageIndex = 1;\n                _context7.next = 3;\n                return _this9.fetchTools(_this9.searchKey);\n              case 3:\n              case \"end\":\n                return _context7.stop();\n            }\n          }\n        }, _callee7);\n      }))();\n    },\n    selectTool: function selectTool(tool) {\n      this.selectedToolNo = tool.no;\n      this.toolName = tool.name;\n      this.toolModel = tool.model;\n      this.activeToolNo = tool.no;\n      // 鏂板锛氬甫鍑哄鍛芥瘮棰勮鍊糪n      if (tool.lifeWarn !== undefined && tool.lifeWarn !== null) {\n        // 鏍煎紡鍖栦负鐧惧垎姣斿瓧绗︿覆\n        var warn = Number(tool.lifeWarn);\n        this.lifeWarnInput = warn <= 1 ? (warn * 100).toFixed(0) : warn.toFixed(0);\n      } else {\n        this.lifeWarnInput = '';\n      }\n    },\n    confirmTool: function confirmTool() {\n      this.showToolDialog = false;\n    },\n    setUseLimit: function setUseLimit() {\n      var _this10 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8() {\n        var v;\n        return _regenerator.default.wrap(function _callee8$(_context8) {\n          while (1) {\n            switch (_context8.prev = _context8.next) {\n              case 0:\n                if (_this10.selectedToolNo) {\n                  _context8.next = 3;\n                  break;\n                }\n                _this10.$showMessage('璇烽�夋嫨鍒�鍏峰悗鍐嶈缃笂闄�');\n                return _context8.abrupt(\"return\");\n              case 3:\n                v = Number(_this10.useLimitInput);\n                if (!(isNaN(v) || v <= 0)) {\n                  _context8.next = 7;\n                  break;\n                }\n                _this10.$showMessage('璇疯緭鍏ユ湁鏁堢殑浣跨敤涓婇檺');\n                return _context8.abrupt(\"return\");\n              case 7:\n                _this10.toolRecords = _this10.toolRecords.map(function (r) {\n                  if (r.no === _this10.selectedToolNo) {\n                    return _objectSpread(_objectSpread({}, r), {}, {\n                      useLimit: v\n                    });\n                  }\n                  return r;\n                });\n                _this10.toolList = _this10.toolList.map(function (t) {\n                  return t.no === _this10.selectedToolNo ? _objectSpread(_objectSpread({}, t), {}, {\n                    useLimit: v\n                  }) : t;\n                });\n                _this10.$showMessage('浣跨敤涓婇檺宸茶缃紙浠呭墠绔樉绀猴級');\n              case 10:\n              case \"end\":\n                return _context8.stop();\n            }\n          }\n        }, _callee8);\n      }))();\n    },\n    // 涓婂垁鏃朵紶閫� sdjs = 宸ュ崟 currentCjNum\n    handleUpTool: function handleUpTool() {\n      var _this11 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9() {\n        var useLimit, sdjs, lifeWarnRatio, payload, res;\n        return _regenerator.default.wrap(function _callee9$(_context9) {\n          while (1) {\n            switch (_context9.prev = _context9.next) {\n              case 0:\n                if (_this11.workOrderNo) {\n                  _context9.next = 3;\n                  break;\n                }\n                _this11.$showMessage('宸ュ崟鍙蜂笉鑳戒负绌�');\n                return _context9.abrupt(\"return\");\n              case 3:\n                if (_this11.machineNo) {\n                  _context9.next = 6;\n                  break;\n                }\n                _this11.$showMessage('鏈哄彴鍙蜂笉鑳戒负绌�');\n                return _context9.abrupt(\"return\");\n              case 6:\n                if (_this11.selectedToolNo) {\n                  _context9.next = 9;\n                  break;\n                }\n                _this11.$showMessage('鍒�鍏风紪鍙蜂笉鑳戒负绌�');\n                return _context9.abrupt(\"return\");\n              case 9:\n                if (_this11.useLimitInput) {\n                  _context9.next = 12;\n                  break;\n                }\n                _this11.$showMessage('浣跨敤涓婇檺涓嶈兘涓虹┖');\n                return _context9.abrupt(\"return\");\n              case 12:\n                useLimit = Number(_this11.useLimitInput);\n                if (!(isNaN(useLimit) || useLimit <= 0)) {\n                  _context9.next = 16;\n                  break;\n                }\n                _this11.$showMessage('璇疯緭鍏ユ湁鏁堢殑浣跨敤涓婇檺');\n                return _context9.abrupt(\"return\");\n              case 16:\n                // sdjs 浣跨敤宸ュ崟 currentCjNum\n                sdjs = _this11.workOrderCurrentCjNum != null ? Number(_this11.workOrderCurrentCjNum) : null;\n                lifeWarnRatio = _this11.normalizeLifeWarn(_this11.lifeWarnInput);\n                payload = {\n                  workOrderNo: _this11.workOrderNo,\n                  machineNo: _this11.machineNo,\n                  toolNo: _this11.selectedToolNo,\n                  type: '涓婃満',\n                  useLimit: useLimit,\n                  sdjs: sdjs,\n                  // 涓婂垁璁℃暟锛堝伐鍗曞綋鍓嶆暟閲囷級\n                  modlLifeWorning: lifeWarnRatio // 鏂板\n                };\n                _context9.prev = 19;\n                _this11.submitting = true;\n                _context9.next = 23;\n                return _this11.$post({\n                  url: '/MesCutterLedger/SubmitToolAction',\n                  data: JSON.stringify(payload),\n                  headers: {\n                    'Content-Type': 'application/json'\n                  }\n                });\n              case 23:\n                res = _context9.sent;\n                if (!(res.data && res.data.outSum === \"0\")) {\n                  _context9.next = 29;\n                  break;\n                }\n                uni.showToast({\n                  title: res.data.outMsg || '',\n                  icon: 'error'\n                });\n                return _context9.abrupt(\"return\");\n              case 29:\n                if (res.data && res.data.outMsg) {\n                  uni.showToast({\n                    title: res.data.outMsg,\n                    icon: 'none'\n                  });\n                }\n              case 30:\n                if (!(res.status === 0)) {\n                  _context9.next = 33;\n                  break;\n                }\n                _context9.next = 33;\n                return _this11.fetchFormData();\n              case 33:\n                _context9.next = 40;\n                break;\n              case 35:\n                _context9.prev = 35;\n                _context9.t0 = _context9[\"catch\"](19);\n                __f__(\"error\", _context9.t0, \" at components/mold.vue:566\");\n                _this11.$showMessage('涓婂垁鎻愪氦澶辫触锛岃妫�鏌ョ綉缁�');\n                throw _context9.t0;\n              case 40:\n                _context9.prev = 40;\n                _this11.submitting = false;\n                return _context9.finish(40);\n              case 43:\n              case \"end\":\n                return _context9.stop();\n            }\n          }\n        }, _callee9, null, [[19, 35, 40, 43]]);\n      }))();\n    },\n    // 涓嬪垁鏃朵紶閫� xdjs = 宸ュ崟 currentCjNum\n    handleDownTool: function handleDownTool() {\n      var _this12 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10() {\n        var useLimit, xdjs, lifeWarnRatio, payload, res;\n        return _regenerator.default.wrap(function _callee10$(_context10) {\n          while (1) {\n            switch (_context10.prev = _context10.next) {\n              case 0:\n                if (_this12.workOrderNo) {\n                  _context10.next = 3;\n                  break;\n                }\n                _this12.$showMessage('宸ュ崟鍙蜂笉鑳戒负绌�');\n                return _context10.abrupt(\"return\");\n              case 3:\n                if (_this12.machineNo) {\n                  _context10.next = 6;\n                  break;\n                }\n                _this12.$showMessage('鏈哄彴鍙蜂笉鑳戒负绌�');\n                return _context10.abrupt(\"return\");\n              case 6:\n                if (_this12.selectedToolNo) {\n                  _context10.next = 9;\n                  break;\n                }\n                _this12.$showMessage('鍒�鍏风紪鍙蜂笉鑳戒负绌�');\n                return _context10.abrupt(\"return\");\n              case 9:\n                //涓嬪垁涓嶅己鍒跺綍鍏ヤ娇鐢ㄤ笂闄怽n                //if (!this.useLimitInput) { this.$showMessage('浣跨敤涓婇檺涓嶈兘涓虹┖'); return; }\n                useLimit = Number(_this12.useLimitInput); //if (isNaN(useLimit) || useLimit <= 0) { this.$showMessage('璇疯緭鍏ユ湁鏁堢殑浣跨敤涓婇檺'); return; }\n                // 涓嬪垁璁℃暟鍚屾牱鍙栧伐鍗曟渶鏂伴噰闆嗘暟\n                xdjs = _this12.workOrderCurrentCjNum != null ? Number(_this12.workOrderCurrentCjNum) : null;\n                lifeWarnRatio = _this12.normalizeLifeWarn(_this12.lifeWarnInput);\n                payload = {\n                  workOrderNo: _this12.workOrderNo,\n                  machineNo: _this12.machineNo,\n                  toolNo: _this12.selectedToolNo,\n                  type: '涓嬫満',\n                  useLimit: useLimit,\n                  xdjs: xdjs,\n                  // 涓嬪垁璁℃暟\n                  modlLifeWorning: lifeWarnRatio // 鏂板\n                };\n                _context10.prev = 13;\n                _this12.submitting = true;\n                _context10.next = 17;\n                return _this12.$post({\n                  url: '/MesCutterLedger/SubmitToolAction',\n                  data: JSON.stringify(payload),\n                  headers: {\n                    'Content-Type': 'application/json'\n                  }\n                });\n              case 17:\n                res = _context10.sent;\n                if (!(res.data && res.data.outSum === \"0\")) {\n                  _context10.next = 23;\n                  break;\n                }\n                uni.showToast({\n                  title: res.data.outMsg || '',\n                  icon: 'error'\n                });\n                return _context10.abrupt(\"return\");\n              case 23:\n                if (res.data && res.data.outMsg) {\n                  uni.showToast({\n                    title: res.data.outMsg,\n                    icon: 'none'\n                  });\n                }\n              case 24:\n                if (!(res.status === 0)) {\n                  _context10.next = 27;\n                  break;\n                }\n                _context10.next = 27;\n                return _this12.fetchFormData();\n              case 27:\n                _context10.next = 34;\n                break;\n              case 29:\n                _context10.prev = 29;\n                _context10.t0 = _context10[\"catch\"](13);\n                __f__(\"error\", _context10.t0, \" at components/mold.vue:619\");\n                _this12.$showMessage('涓嬪垁鎻愪氦澶辫触锛岃妫�鏌ョ綉缁�');\n                throw _context10.t0;\n              case 34:\n                _context10.prev = 34;\n                _this12.submitting = false;\n                return _context10.finish(34);\n              case 37:\n              case \"end\":\n                return _context10.stop();\n            }\n          }\n        }, _callee10, null, [[13, 29, 34, 37]]);\n      }))();\n    },\n    cancel: function cancel() {\n      this.selectedToolNo = '';\n      this.toolName = '';\n      this.toolModel = '';\n      this.useLimitInput = '';\n      this.lifeWarnInput = ''; // 鏂板锛氭竻绌篭n      this.isDirty = false;\n    },\n    fetchFormData: function fetchFormData() {\n      var _this13 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11() {\n        var payload, _ref5, _ref6, _ref7, _res$data$total2, _res$data4, _res$data5, res, list, getField, mapped, totalFromRes;\n        return _regenerator.default.wrap(function _callee11$(_context11) {\n          while (1) {\n            switch (_context11.prev = _context11.next) {\n              case 0:\n                if (!(!_this13.workOrderNo || !_this13.machineNo)) {\n                  _context11.next = 3;\n                  break;\n                }\n                __f__(\"warn\", '宸ュ崟鍙锋垨鏈哄彴鍙蜂负绌猴紝璺宠繃鑾峰彇琛ㄥ崟鏁版嵁', \" at components/mold.vue:636\");\n                return _context11.abrupt(\"return\");\n              case 3:\n                _this13.loadingForm = true;\n                payload = {\n                  workOrderNo: _this13.workOrderNo.trim(),\n                  machineNo: _this13.machineNo.trim()\n                };\n                _context11.prev = 5;\n                _context11.next = 8;\n                return _this13.$post({\n                  url: '/MesCutterLedger/GetFormData',\n                  data: JSON.stringify(payload),\n                  headers: {\n                    'Content-Type': 'application/json'\n                  }\n                });\n              case 8:\n                res = _context11.sent;\n                if (!(res.status !== 0)) {\n                  _context11.next = 13;\n                  break;\n                }\n                _this13.$showMessage(res.message || '鑾峰彇琛ㄥ崟鏁版嵁澶辫触');\n                _this13.toolRecords = [];\n                return _context11.abrupt(\"return\");\n              case 13:\n                list = Array.isArray(res.data) ? res.data : res.data && res.data.tbBillList ? res.data.tbBillList : res.data && res.data.data ? res.data.data : [];\n                getField = function getField(obj) {\n                  for (var _len2 = arguments.length, keys = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n                    keys[_key2 - 1] = arguments[_key2];\n                  }\n                  for (var _i2 = 0, _keys2 = keys; _i2 < _keys2.length; _i2++) {\n                    var k = _keys2[_i2];\n                    if ((obj === null || obj === void 0 ? void 0 : obj[k]) !== undefined && (obj === null || obj === void 0 ? void 0 : obj[k]) !== null) return obj[k];\n                  }\n                  return null;\n                };\n                mapped = (list || []).map(function (t) {\n                  var _getField, _getField2;\n                  var upTimeRaw = getField(t, 'uP_TIME', 'UP_TIME', 'uPTime', 'UPTIME', 'UpTime');\n                  var downTimeRaw = getField(t, 'dowN_TIME', 'DOWN_TIME', 'downTime', 'DOWNTIME');\n                  var lifeWarnRaw = getField(t, 'lifE_WARN', 'LIFE_WARN', 'lifeWarn', 'LIFEWARN');\n                  var currentCjNum = getField(t, 'currentCjNum', 'CURRENTCJNUM', 'CurrentCjNum');\n                  var useCount = getField(t, 'usE_COUNT', 'USE_COUNT', 'useCount');\n                  var useLimit = getField(t, 'usE_LIMIT', 'USE_LIMIT', 'useLimit');\n                  var percent = '';\n                  if (useCount != null && useLimit != null && !isNaN(useCount) && !isNaN(useLimit) && Number(useLimit) > 0) {\n                    percent = (Number(useCount) / Number(useLimit) * 100).toFixed(0) + '%';\n                  }\n                  var parseNumber = function parseNumber(v) {\n                    if (v === null || v === undefined || v === '') return null;\n                    var s = String(v).replace(/[,锛�%]/g, '').trim();\n                    var n = parseFloat(s);\n                    return Number.isFinite(n) ? n : null;\n                  };\n                  var formatPercent = function formatPercent(n) {\n                    if (n === null || n === undefined || isNaN(n)) return '';\n                    if (n <= 1) return \"\".concat((n * 100).toFixed(0), \"%\");\n                    return \"\".concat(Number(n).toFixed(0), \"%\");\n                  };\n                  var lifeWarnNum = parseNumber(lifeWarnRaw);\n                  var warnStatus = getField(t, 'status', 'STATUS') || '';\n                  if (lifeWarnNum !== null && useCount != null && useLimit != null && !isNaN(useCount) && !isNaN(useLimit) && Number(useLimit) > 0) {\n                    var percentNum = Number(useCount) / Number(useLimit);\n                    warnStatus = percentNum >= lifeWarnNum ? '棰勮' : '姝e父';\n                  } else {\n                    warnStatus = warnStatus || '鏈煡';\n                  }\n                  return {\n                    id: getField(t, 'id', 'ID') || \"\".concat(getField(t, 'cutteR_ID') || getField(t, 'CUTTER_ID') || '', \"-\").concat(upTimeRaw || ''),\n                    no: getField(t, 'cutteR_ID', 'CUTTER_ID', 'cutterId', 'no') || '',\n                    name: getField(t, 'cutteR_NAME', 'CUTTER_NAME', 'cutterName', 'name') || '',\n                    upTime: _this13.formatDateTime(upTimeRaw),\n                    upCount: (_getField = getField(t, 'uP_COUNT', 'UP_COUNT', 'upCount')) !== null && _getField !== void 0 ? _getField : '',\n                    downTime: _this13.formatDateTime(downTimeRaw),\n                    downCount: (_getField2 = getField(t, 'dowN_COUNT', 'DOWN_COUNT', 'downCount')) !== null && _getField2 !== void 0 ? _getField2 : '',\n                    useCount: useCount !== null && useCount !== void 0 ? useCount : '',\n                    useLimit: useLimit !== null && useLimit !== void 0 ? useLimit : '',\n                    lifePercent: percent,\n                    lifeWarn: formatPercent(lifeWarnNum),\n                    warnStatus: warnStatus,\n                    currentCjNum: currentCjNum\n                  };\n                }); // 鏂板锛氭寜涓婂垁鏃堕棿闄嶅簭鎺掑簭锛堣秺鏅氱殑瓒婁笂闈級\n                mapped.sort(function (a, b) {\n                  // 鏃堕棿鏍煎紡濡� \"10-24 16:03\"锛岃浆涓� Date 瀵硅薄姣旇緝\n                  var parse = function parse(s) {\n                    if (!s) return 0;\n                    // 琛ュ勾浠斤紝鍋囪閮芥槸浠婂勾\n                    var year = new Date().getFullYear();\n                    return new Date(\"\".concat(year, \"-\").concat(s.replace(/-/g, '-'), \":00\")).getTime();\n                  };\n                  return parse(b.upTime) - parse(a.upTime); // 娉ㄦ剰杩欓噷椤哄簭鍙嶈繃鏉n                });\n\n                _this13.toolRecords = mapped;\n                totalFromRes = Number((_ref5 = (_ref6 = (_ref7 = (_res$data$total2 = (_res$data4 = res.data) === null || _res$data4 === void 0 ? void 0 : _res$data4.total) !== null && _res$data$total2 !== void 0 ? _res$data$total2 : (_res$data5 = res.data) === null || _res$data5 === void 0 ? void 0 : _res$data5.totalCount) !== null && _ref7 !== void 0 ? _ref7 : res.total) !== null && _ref6 !== void 0 ? _ref6 : res.totalCount) !== null && _ref5 !== void 0 ? _ref5 : mapped.length);\n                _this13.total = Number.isFinite(totalFromRes) ? totalFromRes : mapped.length;\n                _context11.next = 27;\n                break;\n              case 22:\n                _context11.prev = 22;\n                _context11.t0 = _context11[\"catch\"](5);\n                __f__(\"error\", '鑾峰彇琛ㄥ崟鏁版嵁閿欒:', _context11.t0, \" at components/mold.vue:735\");\n                _this13.$showMessage('鑾峰彇鏁版嵁澶辫触锛岃妫�鏌ョ綉缁滆繛鎺�');\n                _this13.toolRecords = [];\n              case 27:\n                _context11.prev = 27;\n                _this13.loadingForm = false;\n                return _context11.finish(27);\n              case 30:\n              case \"end\":\n                return _context11.stop();\n            }\n          }\n        }, _callee11, null, [[5, 22, 27, 30]]);\n      }))();\n    },\n    // 鑷姩甯﹀嚭宸ュ崟鍒�鍏蜂俊鎭紝骞惰幏鍙栧伐鍗曟渶鏂伴噰闆嗘暟\n    fetchDefaultToolFromWorkOrder: function fetchDefaultToolFromWorkOrder() {\n      var _this14 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12() {\n        var _res$data6, res, _ref8, _order$CurrentCjNum, order, warn;\n        return _regenerator.default.wrap(function _callee12$(_context12) {\n          while (1) {\n            switch (_context12.prev = _context12.next) {\n              case 0:\n                if (_this14.machineNo) {\n                  _context12.next = 2;\n                  break;\n                }\n                return _context12.abrupt(\"return\");\n              case 2:\n                _context12.prev = 2;\n                _context12.next = 5;\n                return _this14.$post({\n                  url: '/Womdaa/GetWomdaasByShow',\n                  data: JSON.stringify({\n                    machineNo: _this14.machineNo\n                  }),\n                  headers: {\n                    'Content-Type': 'application/json'\n                  }\n                });\n              case 5:\n                res = _context12.sent;\n                if (res.status === 0 && Array.isArray((_res$data6 = res.data) === null || _res$data6 === void 0 ? void 0 : _res$data6.tbBillList) && res.data.tbBillList.length > 0) {\n                  order = res.data.tbBillList[0]; // 鏂板锛氫繚瀛樺伐鍗曟暟鎹紝鐢ㄤ簬鎶ヨ瘯浜ф暟\n                  _this14.order = order;\n                  _this14.orderId = order.id || order.ID || order.orderId || null;\n                  _this14.selectedToolNo = order.cutterId || order.cutteR_ID || '';\n                  _this14.toolName = order.cutterName || order.cutteR_NAME || '';\n                  _this14.toolModel = order.cutterModel || order.cutteR_MODEL || '';\n                  // 鍏抽敭锛氳幏鍙栧伐鍗曟渶鏂伴噰闆嗘暟\n                  _this14.workOrderCurrentCjNum = (_ref8 = (_order$CurrentCjNum = order.CurrentCjNum) !== null && _order$CurrentCjNum !== void 0 ? _order$CurrentCjNum : order.currentCjNum) !== null && _ref8 !== void 0 ? _ref8 : null;\n                  // 鏂板锛氳嚜鍔ㄥ~鍏呭鍛芥瘮棰勮鍊糪n                  if (order.modlLifeWorning !== undefined && order.modlLifeWorning !== null) {\n                    warn = Number(order.modlLifeWorning);\n                    _this14.lifeWarnInput = warn <= 1 ? (warn * 100).toFixed(0) : warn.toFixed(0);\n                  } else {\n                    _this14.lifeWarnInput = '';\n                  }\n                } else {\n                  _this14.workOrderCurrentCjNum = null;\n                  _this14.order = {};\n                  _this14.orderId = null;\n                }\n                _context12.next = 15;\n                break;\n              case 9:\n                _context12.prev = 9;\n                _context12.t0 = _context12[\"catch\"](2);\n                __f__(\"warn\", '鑷姩甯﹀嚭宸ュ崟鍒�鍏峰け璐�', _context12.t0, \" at components/mold.vue:776\");\n                _this14.workOrderCurrentCjNum = null;\n                _this14.order = {};\n                _this14.orderId = null;\n              case 15:\n              case \"end\":\n                return _context12.stop();\n            }\n          }\n        }, _callee12, null, [[2, 9]]);\n      }))();\n    },\n    formatDateTime: function formatDateTime(dateTimeStr) {\n      if (!dateTimeStr) return '';\n      try {\n        var s = String(dateTimeStr).trim();\n        if (/^\\d{10}$/.test(s)) {\n          var d = new Date(Number(s) * 1000);\n          return \"\".concat(d.getMonth() + 1, \"-\").concat(d.getDate(), \" \").concat(d.getHours(), \":\").concat(String(d.getMinutes()).padStart(2, '0'));\n        }\n        if (/^\\d{13}$/.test(s)) {\n          var _d = new Date(Number(s));\n          return \"\".concat(_d.getMonth() + 1, \"-\").concat(_d.getDate(), \" \").concat(_d.getHours(), \":\").concat(String(_d.getMinutes()).padStart(2, '0'));\n        }\n        var date = new Date(dateTimeStr);\n        if (!isNaN(date.getTime())) {\n          return \"\".concat(date.getMonth() + 1, \"-\").concat(date.getDate(), \" \").concat(date.getHours(), \":\").concat(String(date.getMinutes()).padStart(2, '0'));\n        }\n        var match = String(dateTimeStr).match(/(\\d{1,4}[-\\/]\\d{1,2}[-\\/]\\d{1,2}).*?(\\d{1,2}:\\d{2})/);\n        if (match) return \"\".concat(match[1].replace(/-/g, '/').replace(/^\\d{4}\\//, function (m) {\n          return m;\n        }), \" \").concat(match[2]);\n        return String(dateTimeStr);\n      } catch (_unused) {\n        return String(dateTimeStr);\n      }\n    },\n    // 鏂板锛氶�夋嫨璋冩満甯堝倕\n    selectTiaojiUser: function selectTiaojiUser(u) {\n      this.tiaojiStaffNo = u;\n      this.isTiaojiUserSelectShow = false;\n      this.tiaojiUserSearch = '';\n    },\n    // 鏂板锛氶�佹鍛煎彨 + 鎶ヨ瘯浜ф暟\n    handleInspectionCall: function handleInspectionCall() {\n      var _this15 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13() {\n        var _this15$order;\n        var okQty, badQty, staffNo, currentCjNum, payload, res;\n        return _regenerator.default.wrap(function _callee13$(_context13) {\n          while (1) {\n            switch (_context13.prev = _context13.next) {\n              case 0:\n                if (_this15.tiaojiStaffNo) {\n                  _context13.next = 3;\n                  break;\n                }\n                _this15.$showMessage('璇烽�夋嫨璋冩満甯堝倕');\n                return _context13.abrupt(\"return\");\n              case 3:\n                okQty = Number(_this15.tiaojiOkQty);\n                badQty = Number(_this15.tiaojiBadQty);\n                if (!(isNaN(okQty) || okQty < 0)) {\n                  _context13.next = 8;\n                  break;\n                }\n                _this15.$showMessage('璇疯緭鍏ユ湁鏁堢殑璋冩満鑹搧鏁�');\n                return _context13.abrupt(\"return\");\n              case 8:\n                if (!(isNaN(badQty) || badQty < 0)) {\n                  _context13.next = 11;\n                  break;\n                }\n                _this15.$showMessage('璇疯緭鍏ユ湁鏁堢殑璋冩満涓嶈壇鍝佹暟');\n                return _context13.abrupt(\"return\");\n              case 11:\n                staffNo = _this15.tiaojiStaffNo.split(':')[0];\n                currentCjNum = ((_this15$order = _this15.order) === null || _this15$order === void 0 ? void 0 : _this15$order.currentCjNum) || 0; // 璋冪敤鎶ヨ瘯浜ф暟鎺ュ彛(浣跨敤鎶ュ伐鐣岄潰鐨勬帴鍙�)\n                payload = {\n                  orderNo: _this15.workOrderNo,\n                  orderId: _this15.orderId,\n                  // 闇�瑕佷粠宸ュ崟鏁版嵁涓幏鍙朶n                  bf: badQty,\n                  // bf浼犻�掍笉鑹搧鏁癨n                  staffNo: staffNo,\n                  initCjNum: currentCjNum - badQty - okQty,\n                  // initCjNum = currentCjNum - bf - 鑹搧鏁癨n                  currentCjNum: currentCjNum,\n                  type: 'tiaoji',\n                  // 鏍囪瘑涓鸿皟鏈烘姤宸n                  tiaojiOkQty: okQty,\n                  // 鏂板:鑹搧鏁癨n                  tiaojiBadQty: badQty // 鏂板:涓嶈壇鍝佹暟\n                };\n                _context13.prev = 14;\n                _this15.submitting = true;\n                // 璋冪敤鎶ュ伐鐣岄潰鐨勬姤璇曚骇鏁版帴鍙n                _context13.next = 18;\n                return _this15.$post({\n                  url: '/MesInvItemBarcodes/AddBFToBarcodes',\n                  data: payload\n                });\n              case 18:\n                res = _context13.sent;\n                if (!(res.status == 1)) {\n                  _context13.next = 22;\n                  break;\n                }\n                _this15.$showMessage(res.message);\n                return _context13.abrupt(\"return\");\n              case 22:\n                _this15.$showMessage('璋冩満鎶ュ伐鎴愬姛');\n                // 娓呯┖杈撳叆\n                _this15.tiaojiOkQty = '';\n                _this15.tiaojiBadQty = '';\n                // 鍒锋柊鏁版嵁\n                _context13.next = 27;\n                return _this15.fetchFormData();\n              case 27:\n                _context13.next = 29;\n                return _this15.fetchDefaultToolFromWorkOrder();\n              case 29:\n                _context13.next = 31;\n                return _this15.autoHandleMachineInspection();\n              case 31:\n                _context13.next = 37;\n                break;\n              case 33:\n                _context13.prev = 33;\n                _context13.t0 = _context13[\"catch\"](14);\n                __f__(\"error\", '璋冩満鎶ュ伐閿欒:', _context13.t0, \" at components/mold.vue:874\");\n                _this15.$showMessage('璋冩満鎶ュ伐澶辫触锛岃妫�鏌ョ綉缁�');\n              case 37:\n                _context13.prev = 37;\n                _this15.submitting = false;\n                return _context13.finish(37);\n              case 40:\n              case \"end\":\n                return _context13.stop();\n            }\n          }\n        }, _callee13, null, [[14, 33, 37, 40]]);\n      }))();\n    },\n    // 鏂板锛氳嚜鍔ㄥ鐞嗚皟鏈洪�佹鐣岄潰鐨勬寜閽�昏緫\n    autoHandleMachineInspection: function autoHandleMachineInspection() {\n      var _this16 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee14() {\n        var statusRes, statusForm, maStartTime, maShoutTime, maEndTime, needSave, updateData, saveRes;\n        return _regenerator.default.wrap(function _callee14$(_context14) {\n          while (1) {\n            switch (_context14.prev = _context14.next) {\n              case 0:\n                _context14.prev = 0;\n                _context14.next = 3;\n                return _this16.$post({\n                  url: '/MesOrderSta/FindByOrderNo',\n                  data: {\n                    orderId: _this16.orderId,\n                    orderNo: _this16.workOrderNo\n                  }\n                });\n              case 3:\n                statusRes = _context14.sent;\n                if (!(!statusRes || !statusRes.data || !statusRes.data.tbBillList)) {\n                  _context14.next = 7;\n                  break;\n                }\n                __f__(\"error\", '鑾峰彇宸ュ崟鐘舵�佸け璐�', \" at components/mold.vue:894\");\n                return _context14.abrupt(\"return\");\n              case 7:\n                statusForm = statusRes.data.tbBillList;\n                maStartTime = statusForm.maStartTime;\n                maShoutTime = statusForm.maShoutTime;\n                maEndTime = statusForm.maEndTime; // 2. 鍑嗗闇�瑕佹洿鏂扮殑鏃堕棿鏁版嵁\n                needSave = false;\n                updateData = {\n                  id: statusForm.id,\n                  orderId: _this16.orderId,\n                  machineNo: _this16.machineNo,\n                  flag: -1\n                }; // 3. 浠庝笂鍒颁笅鏍规嵁鏄剧ず妗嗛噷鏄惁鏈夋椂闂翠緷娆¤缃甛n                // 濡傛灉璋冩満寮�濮嬫椂闂翠负绌猴紝璁剧疆璋冩満寮�濮嬫椂闂碶n                if (!maStartTime) {\n                  updateData.maStartTime = _this16.$getDate('yyyy-mm-dd hh24:mi:ss');\n                  updateData.flag = -1; // 璋冩満寮�濮嬬殑flag=-1\n                  needSave = true;\n                } else {\n                  updateData.maStartTime = maStartTime;\n                }\n\n                // 濡傛灉閫佹鍛煎彨鏃堕棿涓虹┖锛岃缃�佹鍛煎彨鏃堕棿\n                if (!maShoutTime) {\n                  updateData.maShoutTime = _this16.$getDate('yyyy-mm-dd hh24:mi:ss');\n                  updateData.flag = 1; // 棣栨閫佹鍛煎彨鐨刦lag=1\n                  needSave = true;\n                } else {\n                  updateData.maShoutTime = maShoutTime;\n                }\n\n                // 璋冩満瀹屾垚鏃堕棿淇濇寔涓嶅彉\n                updateData.maEndTime = maEndTime || '';\n\n                // 4. 濡傛灉鏈夐渶瑕佹洿鏂扮殑鏃堕棿锛岃皟鐢ㄤ繚瀛樻帴鍙n                if (!needSave) {\n                  _context14.next = 21;\n                  break;\n                }\n                _context14.next = 19;\n                return _this16.$post({\n                  url: '/MesOrderSta/ChangeMachineTime',\n                  data: updateData\n                });\n              case 19:\n                saveRes = _context14.sent;\n                if (saveRes && saveRes.data && saveRes.data.tbBillList) {\n                  __f__(\"log\", '璋冩満閫佹鐣岄潰鏃堕棿鑷姩鏇存柊鎴愬姛', \" at components/mold.vue:942\");\n                } else {\n                  __f__(\"error\", '璋冩満閫佹鐣岄潰鏃堕棿鑷姩鏇存柊澶辫触', \" at components/mold.vue:944\");\n                }\n              case 21:\n                _context14.next = 26;\n                break;\n              case 23:\n                _context14.prev = 23;\n                _context14.t0 = _context14[\"catch\"](0);\n                __f__(\"error\", '鑷姩澶勭悊璋冩満閫佹鐣岄潰澶辫触:', _context14.t0, \" at components/mold.vue:948\");\n                // 涓嶄腑鏂富娴佺▼锛屽彧璁板綍閿欒\n              case 26:\n              case \"end\":\n                return _context14.stop();\n            }\n          }\n        }, _callee14, null, [[0, 23]]);\n      }))();\n    },\n    // 鏂板锛氳幏鍙栬皟鏈哄笀鍌呭垪琛╘n    fetchTiaojiStaff: function fetchTiaojiStaff() {\n      var _this17 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15() {\n        var res, staff;\n        return _regenerator.default.wrap(function _callee15$(_context15) {\n          while (1) {\n            switch (_context15.prev = _context15.next) {\n              case 0:\n                _context15.prev = 0;\n                _context15.next = 3;\n                return _this17.$post({\n                  url: '/MesStaff/GetAllXS0101BYtj' // 涓庢姤宸ョ晫闈娇鐢ㄧ浉鍚屾帴鍙n                });\n              case 3:\n                res = _context15.sent;\n                if (res.status === 0 && res.data && res.data.tbBillList) {\n                  staff = res.data.tbBillList;\n                  _this17.tiaojiUsers = staff.map(function (s) {\n                    return s.staffNo + ':' + s.staffName;\n                  });\n                }\n                _context15.next = 10;\n                break;\n              case 7:\n                _context15.prev = 7;\n                _context15.t0 = _context15[\"catch\"](0);\n                __f__(\"error\", '鑾峰彇璋冩満甯堝倕鍒楄〃澶辫触:', _context15.t0, \" at components/mold.vue:964\");\n              case 10:\n              case \"end\":\n                return _context15.stop();\n            }\n          }\n        }, _callee15, null, [[0, 7]]);\n      }))();\n    }\n  },\n  mounted: function mounted() {\n    var _this18 = this;\n    this.fetchTools('');\n    this.machineNo = uni.getStorageSync('machineNo') || '';\n    this.workOrderNo = uni.getStorageSync('daa001') || '';\n\n    // 鏂板锛氳幏鍙栬皟鏈哄笀鍌呭垪琛╘n    this.fetchTiaojiStaff();\n    if (this.machineNo && this.workOrderNo) {\n      this.fetchFormData().then( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16() {\n        return _regenerator.default.wrap(function _callee16$(_context16) {\n          while (1) {\n            switch (_context16.prev = _context16.next) {\n              case 0:\n                _context16.next = 2;\n                return _this18.fetchDefaultToolFromWorkOrder();\n              case 2:\n                // 杩涘叆椤甸潰鏃惰祴鍊肩涓�琛� currentCjNum\n                if (_this18.toolRecords.length > 0) {\n                  _this18.$set(_this18.toolRecords[0], 'currentCjNum', _this18.workOrderCurrentCjNum);\n                }\n              case 3:\n              case \"end\":\n                return _context16.stop();\n            }\n          }\n        }, _callee16);\n      })));\n    } else {\n      __f__(\"warn\", '鏈哄彴鍙锋垨宸ュ崟鍙蜂负绌猴紝鏃犳硶鑾峰彇琛ㄥ崟鏁版嵁', \" at components/mold.vue:985\");\n    }\n\n    // 鍚姩鑷姩淇濆瓨瀹氭椂鍣╘n    //this.startAutoSave();\n  },\n  beforeDestroy: function beforeDestroy() {\n    // 娓呯悊瀹氭椂鍣紝闃叉鍐呭瓨娉勬紡\n    this.stopAutoSave();\n  }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 1)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vY29tcG9uZW50cy9tb2xkLnZ1ZSJdLCJuYW1lcyI6WyJkYXRhIiwibWFjaGluZU5vIiwid29ya09yZGVyTm8iLCJhY3RpdmVUb29sTm8iLCJwYWdlSW5kZXgiLCJwYWdlU2l6ZSIsInRvdGFsIiwidG9vbExpc3QiLCJzZWxlY3RlZFRvb2xObyIsInRvb2xOYW1lIiwidG9vbE1vZGVsIiwic2hvd1Rvb2xEaWFsb2ciLCJzZWFyY2hLZXkiLCJmaWx0ZXJlZFRvb2xzIiwidXNlTGltaXRJbnB1dCIsImxpZmVXYXJuSW5wdXQiLCJ0b29sUmVjb3JkcyIsImxvYWRpbmdUb29scyIsImxvYWRpbmdGb3JtIiwic3VibWl0dGluZyIsIl9zZWFyY2hUaW1lciIsIndvcmtPcmRlckN1cnJlbnRDak51bSIsImF1dG9TYXZlVGltZXIiLCJpc0RpcnR5IiwiYXV0b1NhdmVJbnRlcnZhbE1zIiwiYXV0b1NhdmVFbmFibGVkIiwiYXV0b1NhdmVBY3Rpb25OYW1lIiwiaXNUaWFvamlVc2VyU2VsZWN0U2hvdyIsInRpYW9qaVN0YWZmTm8iLCJ0aWFvamlPa1F0eSIsInRpYW9qaUJhZFF0eSIsInRpYW9qaVVzZXJzIiwidGlhb2ppVXNlclNlYXJjaCIsIm9yZGVySWQiLCJvcmRlciIsImNvbXB1dGVkIiwidG90YWxQYWdlcyIsInRpYW9qaVN0YWZmRGlzcGxheSIsImZpbHRlcmVkVGlhb2ppVXNlcnMiLCJ3YXRjaCIsIm1ldGhvZHMiLCJmZXRjaEN1cnJlbnRDak51bSIsInVybCIsImhlYWRlcnMiLCJyZXMiLCJmb3VuZCIsIngiLCJoYW5kbGVSZWZyZXNoIiwic3RhcnRBdXRvU2F2ZSIsInN0b3BBdXRvU2F2ZSIsImNsZWFySW50ZXJ2YWwiLCJhdXRvU2F2ZVRpY2siLCJmbiIsIm5vcm1hbGl6ZUxpZmVXYXJuIiwib3BlblRvb2xEaWFsb2ciLCJjbG9zZVRvb2xEaWFsb2ciLCJmZXRjaFRvb2xzIiwicGF5bG9hZCIsImdldEZpZWxkIiwia2V5cyIsIm1hcHBlZCIsIm5vIiwibmFtZSIsIm1vZGVsIiwibGlmZVdhcm4iLCJ0b3RhbEZyb21SZXMiLCJwcmV2UGFnZSIsIm5leHRQYWdlIiwib25TZWFyY2hLZXlJbnB1dCIsImNsZWFyVGltZW91dCIsInNlYXJjaFRvb2wiLCJzZWxlY3RUb29sIiwiY29uZmlybVRvb2wiLCJzZXRVc2VMaW1pdCIsInYiLCJpc05hTiIsInVzZUxpbWl0IiwiaGFuZGxlVXBUb29sIiwic2RqcyIsImxpZmVXYXJuUmF0aW8iLCJ0b29sTm8iLCJ0eXBlIiwibW9kbExpZmVXb3JuaW5nIiwidW5pIiwidGl0bGUiLCJpY29uIiwiaGFuZGxlRG93blRvb2wiLCJ4ZGpzIiwiY2FuY2VsIiwiZmV0Y2hGb3JtRGF0YSIsImxpc3QiLCJwZXJjZW50Iiwid2FyblN0YXR1cyIsImlkIiwidXBUaW1lIiwidXBDb3VudCIsImRvd25UaW1lIiwiZG93bkNvdW50IiwidXNlQ291bnQiLCJsaWZlUGVyY2VudCIsImN1cnJlbnRDak51bSIsImZldGNoRGVmYXVsdFRvb2xGcm9tV29ya09yZGVyIiwid2FybiIsImZvcm1hdERhdGVUaW1lIiwic2VsZWN0VGlhb2ppVXNlciIsImhhbmRsZUluc3BlY3Rpb25DYWxsIiwib2tRdHkiLCJiYWRRdHkiLCJzdGFmZk5vIiwib3JkZXJObyIsImJmIiwiaW5pdENqTnVtIiwiYXV0b0hhbmRsZU1hY2hpbmVJbnNwZWN0aW9uIiwic3RhdHVzUmVzIiwic3RhdHVzRm9ybSIsIm1hU3RhcnRUaW1lIiwibWFTaG91dFRpbWUiLCJtYUVuZFRpbWUiLCJuZWVkU2F2ZSIsInVwZGF0ZURhdGEiLCJmbGFnIiwic2F2ZVJlcyIsImZldGNoVGlhb2ppU3RhZmYiLCJzdGFmZiIsIm1vdW50ZWQiLCJiZWZvcmVEZXN0cm95Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlQXNQQTtFQUNBQTtJQUNBO01BQ0FDO01BQUE7TUFDQUM7TUFBQTtNQUNBQztNQUFBO01BQ0FDO01BQ0FDO01BQUE7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFBQTtNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUFBOztNQUVBO01BQ0FDO01BQ0FDO01BQUE7TUFDQUM7TUFBQTtNQUNBQztNQUNBQztNQUFBOztNQUVBO01BQ0FDO01BQUE7TUFDQUM7TUFBQTtNQUNBQztNQUFBO01BQ0FDO01BQUE7TUFDQUM7TUFBQTtNQUNBQztNQUFBOztNQUVBO01BQ0FDO01BQUE7TUFDQUM7SUFDQTtFQUNBOztFQUNBQztJQUNBQztNQUNBO0lBQ0E7SUFDQTtJQUNBQztNQUNBO01BQ0E7TUFDQTtJQUNBO0lBQ0E7SUFDQUM7TUFDQTtNQUNBO01BQ0E7UUFBQTtNQUFBO0lBQ0E7RUFDQTtFQUNBQztJQUNBO0lBQ0EvQjtNQUFBO0lBQUE7SUFDQU07TUFBQTtJQUFBO0lBQ0FDO01BQUE7SUFBQTtJQUNBTjtNQUFBO0lBQUE7SUFDQUM7TUFBQTtJQUFBO0VBQ0E7RUFDQThCO0lBQ0E7SUFDQUM7TUFBQTtNQUFBO1FBQUE7UUFBQTtVQUFBO1lBQUE7Y0FBQTtnQkFBQSxJQUNBO2tCQUFBO2tCQUFBO2dCQUFBO2dCQUFBO2NBQUE7Z0JBQUE7Z0JBQUE7Z0JBQUEsT0FFQTtrQkFDQUM7a0JBQ0ExQztvQkFBQUM7a0JBQUE7a0JBQ0EwQztvQkFBQTtrQkFBQTtnQkFDQTtjQUFBO2dCQUpBQztnQkFBQSxNQUtBQTtrQkFBQTtrQkFBQTtnQkFBQTtnQkFDQUM7a0JBQUEsT0FDQUM7Z0JBQUEsRUFDQTtnQkFBQSxpQ0FDQUQ7Y0FBQTtnQkFBQTtnQkFBQTtjQUFBO2dCQUFBO2dCQUFBO2dCQUdBO2NBQUE7Z0JBQUEsaUNBRUE7Y0FBQTtjQUFBO2dCQUFBO1lBQUE7VUFBQTtRQUFBO01BQUE7SUFDQTtJQUVBO0lBQ0FFO01BQUE7TUFBQTtRQUFBO1VBQUE7WUFBQTtjQUFBO2dCQUNBO2dCQUFBLE1BQ0E7a0JBQUE7a0JBQUE7Z0JBQUE7Z0JBQUE7Z0JBQUEsT0FDQTtjQUFBO2dCQUFBO2dCQUFBLE9BQ0E7Y0FBQTtnQkFDQTtnQkFDQTtrQkFDQTtnQkFDQTtjQUFBO2dCQUVBO2NBQUE7Y0FBQTtnQkFBQTtZQUFBO1VBQUE7UUFBQTtNQUFBO0lBQ0E7SUFDQTtJQUNBQztNQUFBO01BQ0E7TUFDQTtNQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0E7SUFDQUM7TUFDQTtRQUNBQztRQUNBO01BQ0E7SUFDQTtJQUNBO0lBQ0FDO01BQUE7TUFBQTtRQUFBO1FBQUE7VUFBQTtZQUFBO2NBQUE7Z0JBQUEsSUFDQTtrQkFBQTtrQkFBQTtnQkFBQTtnQkFBQTtjQUFBO2dCQUFBLElBQ0E7a0JBQUE7a0JBQUE7Z0JBQUE7Z0JBQUE7Y0FBQTtnQkFBQSxNQUNBO2tCQUFBO2tCQUFBO2dCQUFBO2dCQUFBO2NBQUE7Z0JBRUFDLDRGQUNBLG9DQUNBO2dCQUFBLElBQ0FBO2tCQUFBO2tCQUFBO2dCQUFBO2dCQUNBO2dCQUFBO2NBQUE7Z0JBQUE7Z0JBS0E7Z0JBQUE7Z0JBQUEsT0FDQUE7Y0FBQTtnQkFBQTtnQkFDQTtnQkFDQTtnQkFBQTtnQkFBQTtjQUFBO2dCQUFBO2dCQUFBO2dCQUVBO2NBQUE7Z0JBQUE7Z0JBRUE7Z0JBQUE7Y0FBQTtjQUFBO2dCQUFBO1lBQUE7VUFBQTtRQUFBO01BQUE7SUFFQTtJQUVBO0lBQ0FDO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO0lBQ0E7SUFDQUM7TUFDQTtNQUNBO01BQ0E7SUFDQTtJQUNBQztNQUNBO0lBQ0E7SUFDQUM7TUFBQTtNQUFBO1FB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QkFDQTtjQUFBO2dCQUZBRTtnQkFHQTtrQkFDQStFO2tCQUNBO29CQUFBO2tCQUFBO2dCQUNBO2dCQUFBO2dCQUFBO2NBQUE7Z0JBQUE7Z0JBQUE7Z0JBRUE7Y0FBQTtjQUFBO2dCQUFBO1lBQUE7VUFBQTtRQUFBO01BQUE7SUFFQTtFQUNBO0VBQ0FDO0lBQUE7SUFDQTtJQUNBO0lBQ0E7O0lBRUE7SUFDQTtJQUVBO01BQ0E7UUFBQTtVQUFBO1lBQUE7Y0FBQTtnQkFBQTtnQkFBQSxPQUNBO2NBQUE7Z0JBQ0E7Z0JBQ0E7a0JBQ0E7Z0JBQ0E7Y0FBQTtjQUFBO2dCQUFBO1lBQUE7VUFBQTtRQUFBO01BQUEsQ0FDQTtJQUNBO01BQ0E7SUFDQTs7SUFFQTtJQUNBO0VBQ0E7RUFDQUM7SUFDQTtJQUNBO0VBQ0E7QUFDQTtBQUFBLDJCIiwiZmlsZSI6IjYyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG4gICAgPHZpZXcgY2xhc3M9XCJwYWdlXCI+XHJcbiAgICAgICAgPCEtLSDliIDlhbfpgInmi6nljLogLS0+XHJcbiAgICAgICAgPHZpZXcgY2xhc3M9XCJ0b3Atc2VjdGlvbi1ncmlkXCI+XHJcbiAgICAgICAgICAgIDwhLS0g56ys5LiA6KGM77ya56e76Zmk5YiA5YW355uu5b2V5oyJ6ZKuIC0tPlxyXG4gICAgICAgICAgICA8dmlldyBjbGFzcz1cImZvcm0tcm93XCI+XHJcbiAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cImZvcm0tY2VsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj7liIDlhbfnvJblj7fvvJo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IHNtYWxsLWZvbnRcIiB2LW1vZGVsPVwic2VsZWN0ZWRUb29sTm9cIiBwbGFjZWhvbGRlcj1cIuivt+mAmui/h+WIgOWFt+ebruW9lemAieaLqVwiIGRpc2FibGVkIC8+XHJcbiAgICAgICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cImZvcm0tY2VsbCBmb3JtLWNlbGwtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgaGlnaGxpZ2h0LWxhYmVsXCI+5L2/55So5LiK6ZmQ77yaPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBzbWFsbC1mb250IGlucHV0LXVzZS1saW1pdFwiIHR5cGU9XCJudW1iZXJcIiB2LW1vZGVsPVwidXNlTGltaXRJbnB1dFwiIHBsYWNlaG9sZGVyPVwi5q+P5qyh5LiK5YiA5pe25omL5aGr5LiK6ZmQXCIgOmRpc2FibGVkPVwiIXNlbGVjdGVkVG9vbE5vIHx8IGxvYWRpbmdGb3JtXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDoxNnB4O1wiPuWvv+WRveavlOmihOitpuWAvO+8mjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZpZXcgY2xhc3M9XCJpbnB1dC13aXRoLXVuaXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXQgc21hbGwtZm9udCBpbnB1dC1saWZlLXdhcm5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cImxpZmVXYXJuSW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLlpoI5MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGlzYWJsZWQ9XCIhc2VsZWN0ZWRUb29sTm8gfHwgbG9hZGluZ0Zvcm1cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXQtdGV4dFwiPiU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92aWV3PlxyXG4gICAgICAgICAgICAgICAgPC92aWV3PlxyXG4gICAgICAgICAgICA8L3ZpZXc+XHJcblxyXG4gICAgICAgICAgICA8IS0tIOesrOS6jOihjO+8muWcqOacgOWQjua3u+WKoOWIgOWFt+ebruW9leaMiemSriAtLT5cclxuICAgICAgICAgICAgPHZpZXcgY2xhc3M9XCJmb3JtLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSDliIDlhbflkI3np7AgLS0+XHJcbiAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cImZvcm0tY2VsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj7liIDlhbflkI3np7DvvJo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IHNtYWxsLWZvbnQgaW5wdXQtdG9vbC1uYW1lXCIgdi1tb2RlbD1cInRvb2xOYW1lXCIgcGxhY2Vob2xkZXI9XCLliIDlhbfluKblh7pcIiBkaXNhYmxlZCAvPlxyXG4gICAgICAgICAgICAgICAgPC92aWV3PlxyXG4gICAgICAgICAgICAgICAgPCEtLSDop4TmoLzlnovlj7cgLS0+XHJcbiAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cImZvcm0tY2VsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj7op4TmoLzlnovlj7fvvJo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IHNtYWxsLWZvbnQgaW5wdXQtdG9vbC1tb2RlbFwiIHYtbW9kZWw9XCJ0b29sTW9kZWxcIiBwbGFjZWhvbGRlcj1cIuWIgOWFt+W4puWHulwiIGRpc2FibGVkIC8+XHJcbiAgICAgICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgICAgICAgICA8IS0tIOWIgOWFt+ebruW9leaMiemSruWPs+enuyAtLT5cclxuICAgICAgICAgICAgICAgIDx2aWV3IGNsYXNzPVwiZm9ybS1jZWxsIHRvb2wtZGlyLWNlbGxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLWJsdWUgbGFyZ2UtYnRuXCIgQGNsaWNrPVwib3BlblRvb2xEaWFsb2dcIiA6ZGlzYWJsZWQ9XCJsb2FkaW5nVG9vbHNcIj7liIDlhbfnm67lvZU8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvdmlldz5cclxuICAgICAgICAgICAgICAgIDwhLS0g5paw5aKe77ya5Yi35paw5oyJ6ZKuIC0tPlxyXG4gICAgICAgICAgICAgICAgPHZpZXcgY2xhc3M9XCJmb3JtLWNlbGxcIiBzdHlsZT1cImZsZXg6MCAwIGF1dG87IG1hcmdpbi1sZWZ0OjE2cHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1ibHVlIGxhcmdlLWJ0blwiIEBjbGljaz1cImhhbmRsZVJlZnJlc2hcIiA6ZGlzYWJsZWQ9XCJsb2FkaW5nRm9ybSB8fCBzdWJtaXR0aW5nXCI+5Yi35pawPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgICAgIDwvdmlldz5cclxuICAgICAgICA8L3ZpZXc+ICA8IS0tIOi/memHjOmXreWQiCB0b3Atc2VjdGlvbi1ncmlkIC0tPlxyXG4gICAgICAgIDwhLS0g5pON5L2c5oyJ6ZKuIC0g56e75Ye6IHRvcC1zZWN0aW9uLWdyaWQgLS0+XHJcbiAgICAgICAgPHZpZXcgY2xhc3M9XCJidXR0b24tcm93XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzYXZlLWJ0blwiIEBjbGljaz1cImhhbmRsZVVwVG9vbFwiIDpkaXNhYmxlZD1cInN1Ym1pdHRpbmcgfHwgbG9hZGluZ0Zvcm1cIj7kuIrliIDmj5DkuqQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNhdmUtYnRuXCIgQGNsaWNrPVwiaGFuZGxlRG93blRvb2xcIiA6ZGlzYWJsZWQ9XCJzdWJtaXR0aW5nIHx8IGxvYWRpbmdGb3JtXCI+5LiL5YiA5o+Q5LqkPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjYW5jZWwtYnRuXCIgQGNsaWNrPVwiY2FuY2VsXCIgOmRpc2FibGVkPVwic3VibWl0dGluZyB8fCBsb2FkaW5nRm9ybVwiPua4heepuuWIgOWFt+mAieaLqTwvYnV0dG9uPlxyXG4gICAgICAgIDwvdmlldz5cclxuXHJcbiAgICAgICAgPCEtLSDmlrDlop7vvJrosIPmnLrmlbDmja7ovpPlhaXljLrln58gLS0+XHJcbiAgICAgICAgPHZpZXcgY2xhc3M9XCJ0aWFvamktc2VjdGlvblwiPlxyXG4gICAgICAgICAgICA8dmlldyBjbGFzcz1cInRpYW9qaS1yb3dcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0g5b2T5YmN6LCD5py65biI5YKFIC0tPlxyXG4gICAgICAgICAgICAgICAgPHZpZXcgY2xhc3M9XCJjdXJyZW50LXVzZXItc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZXh0PuW9k+WJjeiwg+acuuW4iOWChe+8mjwvdGV4dD5cclxuICAgICAgICAgICAgICAgICAgICA8dGV4dCBjbGFzcz1cImN1cnJlbnQtdXNlci1uYW1lXCI+e3sgdGlhb2ppU3RhZmZEaXNwbGF5IHx8ICfmnKrpgInmi6knIH19PC90ZXh0PlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzZWxlY3QtdXNlci1idG5cIiBAY2xpY2s9XCJpc1RpYW9qaVVzZXJTZWxlY3RTaG93ID0gdHJ1ZVwiPumAieS6ujwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC92aWV3PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0g6LCD5py66Imv5ZOB5pWwIC0tPlxyXG4gICAgICAgICAgICAgICAgPHZpZXcgY2xhc3M9XCJ0aWFvamktaW5wdXQtc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZXh0Puiwg+acuuiJr+WTgeaVsO+8mjwvdGV4dD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdi1tb2RlbD1cInRpYW9qaU9rUXR5XCIgY2xhc3M9XCJpbnAgdGlhb2ppLWlucHV0XCIgdHlwZT1cIm51bWJlclwiIHBsYWNlaG9sZGVyPVwi6K+36L6T5YWl5pWw6YePXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvdmlldz5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIOiwg+acuuS4jeiJr+WTgeaVsCAtLT5cclxuICAgICAgICAgICAgICAgIDx2aWV3IGNsYXNzPVwidGlhb2ppLWlucHV0LXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGV4dD7osIPmnLrkuI3oia/lk4HmlbDvvJo8L3RleHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHYtbW9kZWw9XCJ0aWFvamlCYWRRdHlcIiBjbGFzcz1cImlucCB0aWFvamktaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgcGxhY2Vob2xkZXI9XCLor7fovpPlhaXmlbDph49cIiAvPlxyXG4gICAgICAgICAgICAgICAgPC92aWV3PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0g6YCB5qOA5ZG85Y+r5oyJ6ZKuIC0tPlxyXG4gICAgICAgICAgICAgICAgPHZpZXcgY2xhc3M9XCJ0aWFvamktc3VibWl0LXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZGV0YWlscy1idG5cIiBAY2xpY2s9XCJoYW5kbGVJbnNwZWN0aW9uQ2FsbFwiPumAgeajgOWRvOWPqzwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC92aWV3PlxyXG4gICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgPC92aWV3PlxyXG5cclxuICAgICAgICA8IS0tIOmAieaLqeiwg+acuuW4iOWCheW8ueeqlyAtLT5cclxuICAgICAgICA8dmlldyB2LWlmPVwiaXNUaWFvamlVc2VyU2VsZWN0U2hvd1wiIGNsYXNzPVwib3ZlcmxheVwiPlxyXG4gICAgICAgICAgICA8dmlldyBjbGFzcz1cInBvcHVwIHVzZXItc2VsZWN0LXBvcHVwXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIOaQnOe0ouagjyAtLT5cclxuICAgICAgICAgICAgICAgIDx2aWV3IGNsYXNzPVwidXNlci1zZWFyY2gtYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHYtbW9kZWwudHJpbT1cInRpYW9qaVVzZXJTZWFyY2hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidXNlci1zZWFyY2gtaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIui+k+WFpeW3peWPt+aIluWnk+WQjeaQnOe0olwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEBrZXlkb3duLmVudGVyLnByZXZlbnQgLz5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHYtaWY9XCJ0aWFvamlVc2VyU2VhcmNoXCIgY2xhc3M9XCJ1c2VyLXNlYXJjaC1jbGVhclwiIEBjbGljaz1cInRpYW9qaVVzZXJTZWFyY2g9JydcIj7muIXnqbo8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cInVzZXItc2VhcmNoLWluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAg5Yy56YWN77yae3sgZmlsdGVyZWRUaWFvamlVc2Vycy5sZW5ndGggfX0gLyB7eyB0aWFvamlVc2Vycy5sZW5ndGggfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cInVzZXItbGlzdC1zY3JvbGxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cImZpbHRlcmVkVGlhb2ppVXNlcnMubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx2aWV3IGNsYXNzPVwidXNlci1saXN0LWdyaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdi1mb3I9XCIodSwgaW5kZXgpIGluIGZpbHRlcmVkVGlhb2ppVXNlcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6a2V5PVwiaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbJ3VzZXItbGlzdC1idG4nLCB7J3NlbGVjdGVkJzogdT09PXRpYW9qaVN0YWZmTm99XVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz1cInNlbGVjdFRpYW9qaVVzZXIodSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVzZXItY29kZVwiPnt7IHUuc3BsaXQoJzonKVswXSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVzZXItbmFtZVwiPnt7IHUuc3BsaXQoJzonKVsxXSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8dmlldyB2LWVsc2UgY2xhc3M9XCJuby11c2VyLXJlc3VsdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICDmnKrmib7liLDljLnphY3kurrlkZhcclxuICAgICAgICAgICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cInVzZXItcG9wdXAtZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNsZWFuLWJ0biB3aWRlLWJ0blwiIEBjbGljaz1cImlzVGlhb2ppVXNlclNlbGVjdFNob3cgPSBmYWxzZVwiPuWFs+mXrTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC92aWV3PlxyXG4gICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgPC92aWV3PlxyXG5cclxuICAgICAgICA8IS0tIOWIgOWFt+ebruW9leW8ueeqlyAtLT5cclxuICAgICAgICA8dmlldyB2LWlmPVwic2hvd1Rvb2xEaWFsb2dcIiBjbGFzcz1cImRpYWxvZy1vdmVybGF5XCI+XHJcbiAgICAgICAgICAgIDx2aWV3IGNsYXNzPVwiZGlhbG9nXCI+XHJcbiAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdi1tb2RlbD1cInNlYXJjaEtleVwiIHBsYWNlaG9sZGVyPVwi6L6T5YWl5YiA5YW357yW56CB44CB5ZCN56ew5qih57OK5pCc57SiXCIgY2xhc3M9XCJpbnB1dFwiIEBpbnB1dD1cIm9uU2VhcmNoS2V5SW5wdXRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tYmx1ZVwiIEBjbGljaz1cInNlYXJjaFRvb2xcIiA6ZGlzYWJsZWQ9XCJsb2FkaW5nVG9vbHNcIj7mkJzntKI8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvdmlldz5cclxuICAgICAgICAgICAgICAgIDx2aWV3IGNsYXNzPVwidG9vbC1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB2LWZvcj1cInRvb2wgaW4gZmlsdGVyZWRUb29sc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6a2V5PVwidG9vbC5ub1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRvb2wtYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cInsgYWN0aXZlOiBhY3RpdmVUb29sTm8gPT09IHRvb2wubm8gfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCJzZWxlY3RUb29sKHRvb2wpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRvb2wubm8gfX0gfCB7eyB0b29sLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvdmlldz5cclxuICAgICAgICAgICAgICAgIDx2aWV3IGNsYXNzPVwiZGlhbG9nLWFjdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1ibHVlXCIgQGNsaWNrPVwicHJldlBhZ2VcIiA6ZGlzYWJsZWQ9XCJwYWdlSW5kZXggPT09IDEgfHwgbG9hZGluZ1Rvb2xzXCI+5LiK5LiA6aG1PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luOiAwIDEycHg7XCI+56yse3sgcGFnZUluZGV4IH196aG1IC8g5YWxe3sgdG90YWxQYWdlcyB9femhtTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1ibHVlXCIgQGNsaWNrPVwibmV4dFBhZ2VcIiA6ZGlzYWJsZWQ9XCJwYWdlSW5kZXggPT09IHRvdGFsUGFnZXMgfHwgbG9hZGluZ1Rvb2xzXCI+5LiL5LiA6aG1PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGdhcDogMThweDsgYWxpZ24taXRlbXM6IGNlbnRlcjtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1ibHVlXCIgQGNsaWNrPVwiY29uZmlybVRvb2xcIj7noa7lrpo8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1kaXNhYmxlZFwiIEBjbGljaz1cImNsb3NlVG9vbERpYWxvZ1wiPuWPlua2iDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC92aWV3PlxyXG4gICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgPC92aWV3PlxyXG5cclxuICAgICAgICA8IS0tIOmakOiXj+WIgOWFt+S9v+eUqOiusOW9leihqOagvCAtLT5cclxuICAgICAgICA8dmlldyB2LWlmPVwiZmFsc2VcIiBjbGFzcz1cInRhYmxlLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwic3R5bGVkLXRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDo3JVwiPuWIgOWFt+e8luWPtzwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOjEyJVwiPuWIgOWFt+WQjeensDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOjEwJVwiPuS4iuWIgOaXtumXtDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm51bVwiIHN0eWxlPVwid2lkdGg6NyVcIj7kuIrliIDorqHmlbA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDoxMCVcIj7kuIvliIDml7bpl7Q8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJudW1cIiBzdHlsZT1cIndpZHRoOjclXCI+5LiL5YiA6K6h5pWwPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibnVtXCIgc3R5bGU9XCJ3aWR0aDo3JVwiPuS9v+eUqOasoeaVsDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm51bVwiIHN0eWxlPVwid2lkdGg6NyVcIj7kvb/nlKjkuIrpmZA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJudW1cIiBzdHlsZT1cIndpZHRoOjclXCI+5a+/5ZG95q+UJTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm51bVwiIHN0eWxlPVwid2lkdGg6NyVcIj7lr7/lkb3mr5TpooTorablgLw8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDo3JVwiPumihOitpueKtuaAgTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOjclXCI+5YiA5YW35Zyo5py654q25oCBPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICA8dHIgdi1mb3I9XCIoaXRlbSwgaWR4KSBpbiB0b29sUmVjb3Jkc1wiIDprZXk9XCJpdGVtLmlkXCIgOmNsYXNzPVwieydyb3ctb2RkJzogaWR4ICUgMiA9PT0gMH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGl0ZW0ubm8gfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJsZWZ0XCI+e3sgaXRlbS5uYW1lIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGl0ZW0udXBUaW1lIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibnVtXCI+e3sgaXRlbS51cENvdW50ICE9IG51bGwgPyBpdGVtLnVwQ291bnQgOiAnJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBpdGVtLmRvd25UaW1lIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSDlj6rmnInnrKzkuIDooYzmmL7npLogY3VycmVudENqTnVt77yM5YW25a6D6KGM5pi+56S6IGRvd25Db3VudCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibnVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cImlkeCA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0g56ys5LiA6KGM77ya5LiL5py65pe25LiN5a6e5pe25pi+56S6IGN1cnJlbnRDak51be+8jOaYvuekuiBkb3duQ291bnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtaWY9XCIhaXRlbS5kb3duVGltZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmN1cnJlbnRDak51bSAhPSBudWxsID8gaXRlbS5jdXJyZW50Q2pOdW0gOiAnJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtZWxzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5kb3duQ291bnQgIT0gbnVsbCA/IGl0ZW0uZG93bkNvdW50IDogJycgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWVsc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5kb3duQ291bnQgIT0gbnVsbCA/IGl0ZW0uZG93bkNvdW50IDogJycgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS3kvb/nlKjmrKHmlbAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibnVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cImlkeCA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0g56ys5LiA6KGM5a6e5pe26K6h566X5L2/55So5qyh5pWw77yM6Iul5Li65LiL5py65YiZ5LiN5a6e5pe25pi+56S6IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwiIWl0ZW0uZG93blRpbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtLmN1cnJlbnRDak51bSAhPSBudWxsICYmIGl0ZW0udXBDb3VudCAhPSBudWxsID8gKE51bWJlcihpdGVtLmN1cnJlbnRDak51bSkgLSBOdW1iZXIoaXRlbS51cENvdW50KSkgOiAoaXRlbS51c2VDb3VudCAhPSBudWxsID8gaXRlbS51c2VDb3VudCA6ICcnKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtZWxzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS51c2VDb3VudCAhPSBudWxsID8gaXRlbS51c2VDb3VudCA6ICcnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1lbHNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udXNlQ291bnQgIT0gbnVsbCA/IGl0ZW0udXNlQ291bnQgOiAnJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibnVtXCI+e3sgaXRlbS51c2VMaW1pdCAhPSBudWxsID8gaXRlbS51c2VMaW1pdCA6ICcnIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLeWvv+WRveavlCUtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibnVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cImlkeCA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0g56ys5LiA6KGM5a6e5pe26K6h566X5a+/5ZG95q+UJe+8jOiLpeS4uuS4i+acuuWImeS4jeWunuaXtuaYvuekuiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cIiFpdGVtLmRvd25UaW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbS5jdXJyZW50Q2pOdW0gIT0gbnVsbCAmJiBpdGVtLnVwQ291bnQgIT0gbnVsbCAmJiBpdGVtLnVzZUxpbWl0ICE9IG51bGwgJiYgTnVtYmVyKGl0ZW0udXNlTGltaXQpID4gMCA/IE1hdGgucm91bmQoKE51bWJlcihpdGVtLmN1cnJlbnRDak51bSkgLSBOdW1iZXIoaXRlbS51cENvdW50KSkgLyBOdW1iZXIoaXRlbS51c2VMaW1pdCkgKiAxMDApICsgJyUnIDogKGl0ZW0ubGlmZVBlcmNlbnQgIT0gbnVsbCA/IGl0ZW0ubGlmZVBlcmNlbnQgOiAnJykgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWVsc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ubGlmZVBlcmNlbnQgIT0gbnVsbCA/IGl0ZW0ubGlmZVBlcmNlbnQgOiAnJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtZWxzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmxpZmVQZXJjZW50IH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJudW1cIj57eyBpdGVtLmxpZmVXYXJuIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIDpjbGFzcz1cIml0ZW0ud2FyblN0YXR1cyA9PT0gJ+mihOitpicgPyAnd2Fybi1jZWxsJyA6IChpdGVtLndhcm5TdGF0dXMgPT09ICfmraPluLgnID8gJ29rLWNlbGwnIDogJycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB2LWlmPVwiaXRlbS53YXJuU3RhdHVzID09PSAn6aKE6K2mJ1wiIGNsYXNzPVwid2Fybi1iYWRnZVwiPuitpuWRijwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtZWxzZT57eyBpdGVtLndhcm5TdGF0dXMgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uZG93blRpbWUgPyAn5LiL5py6JyA6ICflnKjmnLonIH19PCEtLeWcqOacuueKtuaAgS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyIHYtaWY9XCIhdG9vbFJlY29yZHMubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiMTJcIj7mmoLml6DmlbDmja48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgIDwvdmlldz5cclxuXHJcbiAgICAgICAgPCEtLSDor7TmmI4gLS0+XHJcbiAgICAgICAgPCEtLTx2aWV3IGNsYXNzPVwidG9vbC1kZXNjXCI+XHJcbiAgICAgICAgICAgIDxwIHN0eWxlPVwiY29sb3I6cmVkO1wiPifkvb/nlKjkuIrpmZAn5Lul5LiL5YiA5pe255qEJ+S9v+eUqOS4iumZkCfkuLrorqHnrpfmoIflh4Y8L3A+XHJcbiAgICAgICAgICAgIDxwIHN0eWxlPVwiY29sb3I6cmVkO1wiPuWvv+WRveavlOmihOitpuWAvOm7mOiupOS4ujkwJTwvcD5cclxuICAgICAgICA8L3ZpZXc+LS0+XHJcbiAgICA8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG4gICAgZXhwb3J0IGRlZmF1bHQge1xyXG4gICAgICAgIGRhdGEoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBtYWNoaW5lTm86ICcnLC8v5py65Y+w57yW56CBXHJcbiAgICAgICAgICAgICAgICB3b3JrT3JkZXJObzogJycsLy/lt6XljZXlj7dcclxuICAgICAgICAgICAgICAgIGFjdGl2ZVRvb2xObzogJycsIC8vIOW9k+WJjemAieS4reeahOWIgOWFt+e8luWPt1xyXG4gICAgICAgICAgICAgICAgcGFnZUluZGV4OiAxLFxyXG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IDIwLCAvL+WNlemhteaYvuekuueahOWIgOWFt+aVsOmHj1xyXG4gICAgICAgICAgICAgICAgdG90YWw6IDAsXHJcbiAgICAgICAgICAgICAgICB0b29sTGlzdDogW10sXHJcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFRvb2xObzogJycsXHJcbiAgICAgICAgICAgICAgICB0b29sTmFtZTogJycsXHJcbiAgICAgICAgICAgICAgICB0b29sTW9kZWw6ICcnLFxyXG4gICAgICAgICAgICAgICAgc2hvd1Rvb2xEaWFsb2c6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgc2VhcmNoS2V5OiAnJyxcclxuICAgICAgICAgICAgICAgIGZpbHRlcmVkVG9vbHM6IFtdLFxyXG4gICAgICAgICAgICAgICAgdXNlTGltaXRJbnB1dDogJycsXHJcbiAgICAgICAgICAgICAgICBsaWZlV2FybklucHV0OiAnJywgLy8g5paw5aKe77ya5a+/5ZG95q+U6aKE6K2m5YC85Y6f5aeL6L6T5YWlXHJcbiAgICAgICAgICAgICAgICB0b29sUmVjb3JkczogW10sXHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nVG9vbHM6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgbG9hZGluZ0Zvcm06IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgc3VibWl0dGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBfc2VhcmNoVGltZXI6IG51bGwsXHJcbiAgICAgICAgICAgICAgICB3b3JrT3JkZXJDdXJyZW50Q2pOdW06IG51bGwsIC8vIOW3peWNleW9k+WJjeaVsOmHh1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIOiHquWKqOS/neWtmOebuOWFs1xyXG4gICAgICAgICAgICAgICAgYXV0b1NhdmVUaW1lcjogbnVsbCxcclxuICAgICAgICAgICAgICAgIGlzRGlydHk6IGZhbHNlLCAvLyDooajljZXmmK/lkKbmnInmnKrkv53lrZjlj5jmm7RcclxuICAgICAgICAgICAgICAgIGF1dG9TYXZlSW50ZXJ2YWxNczogNSAqIDYwICogMTAwMCwgLy8g6buY6K6kIDUg5YiG6ZKfXHJcbiAgICAgICAgICAgICAgICBhdXRvU2F2ZUVuYWJsZWQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBhdXRvU2F2ZUFjdGlvbk5hbWU6ICdoYW5kbGVVcFRvb2wnLCAvLyDoh6rliqjop6blj5HnmoTmlrnms5XlkI3vvIzlj6/mlLnkuLroh6rlrprkuYnkv53lrZjmlrnms5VcclxuXHJcbiAgICAgICAgICAgICAgICAvLyDmlrDlop7vvJrosIPmnLrnm7jlhbPlrZfmrrVcclxuICAgICAgICAgICAgICAgIGlzVGlhb2ppVXNlclNlbGVjdFNob3c6IGZhbHNlLCAvLyDosIPmnLrluIjlgoXpgInmi6nlvLnnqpdcclxuICAgICAgICAgICAgICAgIHRpYW9qaVN0YWZmTm86ICcnLCAvLyDlvZPliY3pgInkuK3nmoTosIPmnLrluIjlgoUo5qC85byPOiDlt6Xlj7c65aeT5ZCNKVxyXG4gICAgICAgICAgICAgICAgdGlhb2ppT2tRdHk6ICcnLCAvLyDosIPmnLroia/lk4HmlbBcclxuICAgICAgICAgICAgICAgIHRpYW9qaUJhZFF0eTogJycsIC8vIOiwg+acuuS4jeiJr+WTgeaVsFxyXG4gICAgICAgICAgICAgICAgdGlhb2ppVXNlcnM6IFtdLCAvLyDosIPmnLrluIjlgoXliJfooahcclxuICAgICAgICAgICAgICAgIHRpYW9qaVVzZXJTZWFyY2g6ICcnLCAvLyDmkJzntKLlhbPplK7or41cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIC8vIOaWsOWinu+8muaKpeivleS6p+aVsOaJgOmcgOWtl+autVxyXG4gICAgICAgICAgICAgICAgb3JkZXJJZDogbnVsbCwgLy8g5bel5Y2VSURcclxuICAgICAgICAgICAgICAgIG9yZGVyOiB7fSAvLyDlt6XljZXmlbDmja5cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXB1dGVkOiB7XHJcbiAgICAgICAgICAgIHRvdGFsUGFnZXMoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoMSwgTWF0aC5jZWlsKHRoaXMudG90YWwgLyB0aGlzLnBhZ2VTaXplKSB8fCAxKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLy8g5paw5aKe77ya6LCD5py65biI5YKF5pi+56S65ZCN56ewXHJcbiAgICAgICAgICAgIHRpYW9qaVN0YWZmRGlzcGxheSgpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy50aWFvamlTdGFmZk5vKSByZXR1cm4gJyc7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzZWdzID0gdGhpcy50aWFvamlTdGFmZk5vLnNwbGl0KCc6Jyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc2Vncy5sZW5ndGggPiAxID8gYCR7c2Vnc1swXX0gJHtzZWdzWzFdfWAgOiB0aGlzLnRpYW9qaVN0YWZmTm87XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIOaWsOWinu+8mui/h+a7pOWQjueahOiwg+acuuW4iOWCheWIl+ihqFxyXG4gICAgICAgICAgICBmaWx0ZXJlZFRpYW9qaVVzZXJzKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnRpYW9qaVVzZXJTZWFyY2gpIHJldHVybiB0aGlzLnRpYW9qaVVzZXJzO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qga3cgPSB0aGlzLnRpYW9qaVVzZXJTZWFyY2gudHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50aWFvamlVc2Vycy5maWx0ZXIodSA9PiB1LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoa3cpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgd2F0Y2g6IHtcclxuICAgICAgICAgICAgLy8g5qCH6K6w6ISP5pWw5o2u77ya5oyJ6ZyA55uR5ZCs5a2X5q615Y+Y5YyWXHJcbiAgICAgICAgICAgIHNlbGVjdGVkVG9vbE5vKCkgeyB0aGlzLmlzRGlydHkgPSB0cnVlOyB9LFxyXG4gICAgICAgICAgICB1c2VMaW1pdElucHV0KCkgeyB0aGlzLmlzRGlydHkgPSB0cnVlOyB9LFxyXG4gICAgICAgICAgICBsaWZlV2FybklucHV0KCkgeyB0aGlzLmlzRGlydHkgPSB0cnVlOyB9LFxyXG4gICAgICAgICAgICB0b29sTmFtZSgpIHsgdGhpcy5pc0RpcnR5ID0gdHJ1ZTsgfSxcclxuICAgICAgICAgICAgdG9vbE1vZGVsKCkgeyB0aGlzLmlzRGlydHkgPSB0cnVlOyB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBtZXRob2RzOiB7XHJcbiAgICAgICAgICAgIC8v5p+l6K+i5b2T5YmN5pWw6YeH5pWw77yM5L2c5Li65LiL5YiA6K6h5pWw5a6e5pe25pi+56S6XHJcbiAgICAgICAgICAgIGFzeW5jIGZldGNoQ3VycmVudENqTnVtKHRvb2xObykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm1hY2hpbmVObykgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuJHBvc3Qoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICcvV29tZGFhL0dldFdvbWRhYXNCeVNob3cnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBKU09OLnN0cmluZ2lmeSh7IG1hY2hpbmVObzogdGhpcy5tYWNoaW5lTm8gfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT09IDAgJiYgQXJyYXkuaXNBcnJheShyZXMuZGF0YT8udGJCaWxsTGlzdCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZm91bmQgPSByZXMuZGF0YS50YkJpbGxMaXN0LmZpbmQoeCA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5jdXR0ZXJJZCA9PT0gdG9vbE5vIHx8IHguY3V0dGVSX0lEID09PSB0b29sTm9cclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvdW5kID8gKGZvdW5kLkN1cnJlbnRDak51bSA/PyBmb3VuZC5jdXJyZW50Q2pOdW0gPz8gbnVsbCkgOiBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ+iOt+WPlmN1cnJlbnRDak51beWksei0pScsIGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAvLyDmlrDlop7vvJrliLfmlrDmjInpkq7lpITnkIbmlrnms5VcclxuICAgICAgICAgICAgYXN5bmMgaGFuZGxlUmVmcmVzaCgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hUb29scygnJyk7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tYWNoaW5lTm8gJiYgdGhpcy53b3JrT3JkZXJObykge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZmV0Y2hGb3JtRGF0YSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZmV0Y2hEZWZhdWx0VG9vbEZyb21Xb3JrT3JkZXIoKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyDliLfmlrDlkI7otYvlgLznrKzkuIDooYwgY3VycmVudENqTnVtXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudG9vbFJlY29yZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRzZXQodGhpcy50b29sUmVjb3Jkc1swXSwgJ2N1cnJlbnRDak51bScsIHRoaXMud29ya09yZGVyQ3VycmVudENqTnVtKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLiRzaG93TWVzc2FnZSgn5Yi35paw5a6M5oiQJyk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIOiHquWKqOS/neWtmO+8muWQr+WKqFxyXG4gICAgICAgICAgICBzdGFydEF1dG9TYXZlKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmF1dG9TYXZlRW5hYmxlZCkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wQXV0b1NhdmUoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXV0b1NhdmVUaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dG9TYXZlVGljaygpO1xyXG4gICAgICAgICAgICAgICAgfSwgdGhpcy5hdXRvU2F2ZUludGVydmFsTXMpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvLyDoh6rliqjkv53lrZjvvJrlgZzmraJcclxuICAgICAgICAgICAgc3RvcEF1dG9TYXZlKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYXV0b1NhdmVUaW1lcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5hdXRvU2F2ZVRpbWVyKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dG9TYXZlVGltZXIgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvLyDoh6rliqjkv53lrZjvvJrmr4/mrKHlrprml7bmiafooYzml7bnmoTpgLvovpFcclxuICAgICAgICAgICAgYXN5bmMgYXV0b1NhdmVUaWNrKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmF1dG9TYXZlRW5hYmxlZCkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzRGlydHkpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN1Ym1pdHRpbmcgfHwgdGhpcy5sb2FkaW5nRm9ybSkgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGZuID0gdGhpcy5hdXRvU2F2ZUFjdGlvbk5hbWUgJiYgdHlwZW9mIHRoaXNbdGhpcy5hdXRvU2F2ZUFjdGlvbk5hbWVdID09PSAnZnVuY3Rpb24nXHJcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzW3RoaXMuYXV0b1NhdmVBY3Rpb25OYW1lXVxyXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgICAgICAgICAgIGlmICghZm4pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ+iHquWKqOS/neWtmO+8muacquaJvuWIsOaWueazlScsIHRoaXMuYXV0b1NhdmVBY3Rpb25OYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN1Ym1pdHRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGZuLmNhbGwodGhpcyk7IC8vIOiwg+eUqOS/neWtmOaWueazle+8iOS+i+WmgiBoYW5kbGVVcFRvb2zvvIlcclxuICAgICAgICAgICAgICAgICAgICAvLyDlpoLmnpzkv53lrZjmiJDlip/vvIzmuIXohI/moIforrDvvIjkv53lrZjmlrnms5XlhoXpg6joi6XlpLHotKXmsqHmnInmipvlh7rlj6/kv53mjIHmraTmlrnlvI/vvIlcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRGlydHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfoh6rliqjkv53lrZjlpLHotKXvvJonLCBlKTtcclxuICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJtaXR0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAvLyDmlrDlop7vvJrlr7/lkb3mr5TpooTorablgLzlvZLkuIDljJYgKOi/lOWbniAwfjEg5oiWIG51bGwpXHJcbiAgICAgICAgICAgIG5vcm1hbGl6ZUxpZmVXYXJuKHYpIHtcclxuICAgICAgICAgICAgICAgIGlmICh2ID09IG51bGwpIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmF3ID0gU3RyaW5nKHYpLnRyaW0oKS5yZXBsYWNlKC9bJe+8hV0vZywgJycpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHJhdyA9PT0gJycpIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbnVtID0gTnVtYmVyKHJhdyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWlzRmluaXRlKG51bSkgfHwgbnVtIDw9IDApIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bSA+IDEgPyAobnVtIC8gMTAwKSA6IG51bTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb3BlblRvb2xEaWFsb2coKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dUb29sRGlhbG9nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFnZUluZGV4ID0gMTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hUb29scyh0aGlzLnNlYXJjaEtleSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNsb3NlVG9vbERpYWxvZygpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd1Rvb2xEaWFsb2cgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYXN5bmMgZmV0Y2hUb29scyhzZWFyY2hLZXkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1Rvb2xzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy4kcG9zdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJy9NZXNDdXR0ZXJMZWRnZXIvUXVlcnlUb29scycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEtleSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VJbmRleDogdGhpcy5wYWdlSW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IEFycmF5LmlzQXJyYXkocmVzLmRhdGEpID8gcmVzLmRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKHJlcy5kYXRhICYmIHJlcy5kYXRhLnRiQmlsbExpc3QpID8gcmVzLmRhdGEudGJCaWxsTGlzdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKHJlcy5kYXRhICYmIHJlcy5kYXRhLmRhdGEpID8gcmVzLmRhdGEuZGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2V0RmllbGQgPSAob2JqLCAuLi5rZXlzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGsgb2Yga2V5cykgaWYgKG9iaj8uW2tdICE9PSB1bmRlZmluZWQgJiYgb2JqPy5ba10gIT09IG51bGwpIHJldHVybiBvYmpba107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOi/memHjOmcgOimgeaKiiBsaWZlV2FybiDlrZfmrrXkuZ/luKblh7rmnaVcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFwcGVkID0gKHBheWxvYWQgfHwgW10pLm1hcCh0ID0+ICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBubzogZ2V0RmllbGQodCwgJ2N1dHRlcklkJywgJ0NVVFRFUl9JRCcsICdjdXR0ZVJfSUQnLCAnZGFBMDAxJywgJ25vJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBnZXRGaWVsZCh0LCAnY3V0dGVyTmFtZScsICdDVVRURVJfTkFNRScsICdjdXR0ZVJfTkFNRScsICduYW1lJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbDogZ2V0RmllbGQodCwgJ2N1dHRlck1vZGVsJywgJ0NVVFRFUl9NT0RFTCcsICdjdXR0ZVJfTU9ERUwnLCAnbW9kZWwnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpZmVXYXJuOiBnZXRGaWVsZCh0LCAnbW9kbExpZmVXb3JuaW5nJywgJ2xpZmVXYXJuJywgJ0xJRkVfV0FSTicsICdsaWZFX1dBUk4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkVG9vbHMgPSBtYXBwZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9vbExpc3QgPSBtYXBwZWQuc2xpY2UoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvdGFsRnJvbVJlcyA9IE51bWJlcihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5kYXRhPy50b3RhbCA/PyByZXMuZGF0YT8udG90YWxDb3VudCA/PyByZXMudG90YWwgPz8gcmVzLnRvdGFsQ291bnQgPz8gbWFwcGVkLmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvdGFsID0gTnVtYmVyLmlzRmluaXRlKHRvdGFsRnJvbVJlcykgPyB0b3RhbEZyb21SZXMgOiBtYXBwZWQubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wYWdlSW5kZXggPiB0aGlzLnRvdGFsUGFnZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZUluZGV4ID0gdGhpcy50b3RhbFBhZ2VzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kc2hvd01lc3NhZ2UocmVzLm1lc3NhZ2UgfHwgJ+afpeivouWksei0pScpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2ZldGNoVG9vbHMg6ZSZ6K+v77yaJywgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLiRzaG93TWVzc2FnZSgn5p+l6K+i5YiA5YW35aSx6LSl77yM6K+35qOA5p+l572R57uc5oiW5o6l5Y+jJyk7XHJcbiAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1Rvb2xzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGFzeW5jIHByZXZQYWdlKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGFnZUluZGV4ID4gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZUluZGV4LS07XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5mZXRjaFRvb2xzKHRoaXMuc2VhcmNoS2V5KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYXN5bmMgbmV4dFBhZ2UoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYWdlSW5kZXggPCB0aGlzLnRvdGFsUGFnZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2VJbmRleCsrO1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZmV0Y2hUb29scyh0aGlzLnNlYXJjaEtleSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uU2VhcmNoS2V5SW5wdXQoKSB7XHJcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fc2VhcmNoVGltZXIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2VhcmNoVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFRvb2woKTtcclxuICAgICAgICAgICAgICAgIH0sIDMwMCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGFzeW5jIHNlYXJjaFRvb2woKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2VJbmRleCA9IDE7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmZldGNoVG9vbHModGhpcy5zZWFyY2hLZXkpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzZWxlY3RUb29sKHRvb2wpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUb29sTm8gPSB0b29sLm5vO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b29sTmFtZSA9IHRvb2wubmFtZTtcclxuICAgICAgICAgICAgICAgIHRoaXMudG9vbE1vZGVsID0gdG9vbC5tb2RlbDtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlVG9vbE5vID0gdG9vbC5ubztcclxuICAgICAgICAgICAgICAgIC8vIOaWsOWinu+8muW4puWHuuWvv+WRveavlOmihOitpuWAvFxyXG4gICAgICAgICAgICAgICAgaWYgKHRvb2wubGlmZVdhcm4gIT09IHVuZGVmaW5lZCAmJiB0b29sLmxpZmVXYXJuICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5qC85byP5YyW5Li655m+5YiG5q+U5a2X56ym5LiyXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2FybiA9IE51bWJlcih0b29sLmxpZmVXYXJuKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxpZmVXYXJuSW5wdXQgPSB3YXJuIDw9IDEgPyAod2FybiAqIDEwMCkudG9GaXhlZCgwKSA6IHdhcm4udG9GaXhlZCgwKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5saWZlV2FybklucHV0ID0gJyc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbmZpcm1Ub29sKCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zaG93VG9vbERpYWxvZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBhc3luYyBzZXRVc2VMaW1pdCgpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zZWxlY3RlZFRvb2xObykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHNob3dNZXNzYWdlKCfor7fpgInmi6nliIDlhbflkI7lho3orr7nva7kuIrpmZAnKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2ID0gTnVtYmVyKHRoaXMudXNlTGltaXRJbnB1dCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNOYU4odikgfHwgdiA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc2hvd01lc3NhZ2UoJ+ivt+i+k+WFpeacieaViOeahOS9v+eUqOS4iumZkCcpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMudG9vbFJlY29yZHMgPSB0aGlzLnRvb2xSZWNvcmRzLm1hcChyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoci5ubyA9PT0gdGhpcy5zZWxlY3RlZFRvb2xObykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5yLCB1c2VMaW1pdDogdiB9O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b29sTGlzdCA9IHRoaXMudG9vbExpc3QubWFwKHQgPT4gdC5ubyA9PT0gdGhpcy5zZWxlY3RlZFRvb2xObyA/IHsgLi4udCwgdXNlTGltaXQ6IHYgfSA6IHQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy4kc2hvd01lc3NhZ2UoJ+S9v+eUqOS4iumZkOW3suiuvue9ru+8iOS7heWJjeerr+aYvuekuu+8iScpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvLyDkuIrliIDml7bkvKDpgJIgc2RqcyA9IOW3peWNlSBjdXJyZW50Q2pOdW1cclxuICAgICAgICAgICAgYXN5bmMgaGFuZGxlVXBUb29sKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLndvcmtPcmRlck5vKSB7IHRoaXMuJHNob3dNZXNzYWdlKCflt6XljZXlj7fkuI3og73kuLrnqbonKTsgcmV0dXJuOyB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMubWFjaGluZU5vKSB7IHRoaXMuJHNob3dNZXNzYWdlKCfmnLrlj7Dlj7fkuI3og73kuLrnqbonKTsgcmV0dXJuOyB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRUb29sTm8pIHsgdGhpcy4kc2hvd01lc3NhZ2UoJ+WIgOWFt+e8luWPt+S4jeiDveS4uuepuicpOyByZXR1cm47IH1cclxuICAgICAgICAgICAgICAgIC8v5LiK5YiA5by65Yi25b2V5YWl5L2/55So5LiK6ZmQXHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMudXNlTGltaXRJbnB1dCkgeyB0aGlzLiRzaG93TWVzc2FnZSgn5L2/55So5LiK6ZmQ5LiN6IO95Li656m6Jyk7IHJldHVybjsgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgdXNlTGltaXQgPSBOdW1iZXIodGhpcy51c2VMaW1pdElucHV0KTtcclxuICAgICAgICAgICAgICAgIGlmIChpc05hTih1c2VMaW1pdCkgfHwgdXNlTGltaXQgPD0gMCkgeyB0aGlzLiRzaG93TWVzc2FnZSgn6K+36L6T5YWl5pyJ5pWI55qE5L2/55So5LiK6ZmQJyk7IHJldHVybjsgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIHNkanMg5L2/55So5bel5Y2VIGN1cnJlbnRDak51bVxyXG4gICAgICAgICAgICAgICAgY29uc3Qgc2RqcyA9IHRoaXMud29ya09yZGVyQ3VycmVudENqTnVtICE9IG51bGwgPyBOdW1iZXIodGhpcy53b3JrT3JkZXJDdXJyZW50Q2pOdW0pIDogbnVsbDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxpZmVXYXJuUmF0aW8gPSB0aGlzLm5vcm1hbGl6ZUxpZmVXYXJuKHRoaXMubGlmZVdhcm5JbnB1dCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHdvcmtPcmRlck5vOiB0aGlzLndvcmtPcmRlck5vLFxyXG4gICAgICAgICAgICAgICAgICAgIG1hY2hpbmVObzogdGhpcy5tYWNoaW5lTm8sXHJcbiAgICAgICAgICAgICAgICAgICAgdG9vbE5vOiB0aGlzLnNlbGVjdGVkVG9vbE5vLFxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICfkuIrmnLonLFxyXG4gICAgICAgICAgICAgICAgICAgIHVzZUxpbWl0LFxyXG4gICAgICAgICAgICAgICAgICAgIHNkanMsLy8g5LiK5YiA6K6h5pWw77yI5bel5Y2V5b2T5YmN5pWw6YeH77yJXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kbExpZmVXb3JuaW5nOiBsaWZlV2FyblJhdGlvIC8vIOaWsOWinlxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJtaXR0aW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLiRwb3N0KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnL01lc0N1dHRlckxlZGdlci9TdWJtaXRUb29sQWN0aW9uJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkocGF5bG9hZCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhICYmIHJlcy5kYXRhLm91dFN1bSA9PT0gXCIwXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdW5pLnNob3dUb2FzdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcmVzLmRhdGEub3V0TXNnIHx8ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2Vycm9yJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzLmRhdGEgJiYgcmVzLmRhdGEub3V0TXNnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuaS5zaG93VG9hc3Qoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHJlcy5kYXRhLm91dE1zZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdub25lJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5ZCO57ut6YC76L6R57un57ut5omn6KGMXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5mZXRjaEZvcm1EYXRhKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHNob3dNZXNzYWdlKCfkuIrliIDmj5DkuqTlpLHotKXvvIzor7fmo4Dmn6XnvZHnu5wnKTtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7IC8vIOaKm+WHuuS7peS+v+iHquWKqOS/neWtmOmAu+i+keaNleiOt+W5tuS/neeVmSBpc0RpcnR5XHJcbiAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VibWl0dGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvLyDkuIvliIDml7bkvKDpgJIgeGRqcyA9IOW3peWNlSBjdXJyZW50Q2pOdW1cclxuICAgICAgICAgICAgYXN5bmMgaGFuZGxlRG93blRvb2woKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMud29ya09yZGVyTm8pIHsgdGhpcy4kc2hvd01lc3NhZ2UoJ+W3peWNleWPt+S4jeiDveS4uuepuicpOyByZXR1cm47IH1cclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5tYWNoaW5lTm8pIHsgdGhpcy4kc2hvd01lc3NhZ2UoJ+acuuWPsOWPt+S4jeiDveS4uuepuicpOyByZXR1cm47IH1cclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zZWxlY3RlZFRvb2xObykgeyB0aGlzLiRzaG93TWVzc2FnZSgn5YiA5YW357yW5Y+35LiN6IO95Li656m6Jyk7IHJldHVybjsgfVxyXG4gICAgICAgICAgICAgICAgLy/kuIvliIDkuI3lvLrliLblvZXlhaXkvb/nlKjkuIrpmZBcclxuICAgICAgICAgICAgICAgIC8vaWYgKCF0aGlzLnVzZUxpbWl0SW5wdXQpIHsgdGhpcy4kc2hvd01lc3NhZ2UoJ+S9v+eUqOS4iumZkOS4jeiDveS4uuepuicpOyByZXR1cm47IH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IHVzZUxpbWl0ID0gTnVtYmVyKHRoaXMudXNlTGltaXRJbnB1dCk7XHJcbiAgICAgICAgICAgICAgICAvL2lmIChpc05hTih1c2VMaW1pdCkgfHwgdXNlTGltaXQgPD0gMCkgeyB0aGlzLiRzaG93TWVzc2FnZSgn6K+36L6T5YWl5pyJ5pWI55qE5L2/55So5LiK6ZmQJyk7IHJldHVybjsgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIOS4i+WIgOiuoeaVsOWQjOagt+WPluW3peWNleacgOaWsOmHh+mbhuaVsFxyXG4gICAgICAgICAgICAgICAgY29uc3QgeGRqcyA9IHRoaXMud29ya09yZGVyQ3VycmVudENqTnVtICE9IG51bGwgPyBOdW1iZXIodGhpcy53b3JrT3JkZXJDdXJyZW50Q2pOdW0pIDogbnVsbDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxpZmVXYXJuUmF0aW8gPSB0aGlzLm5vcm1hbGl6ZUxpZmVXYXJuKHRoaXMubGlmZVdhcm5JbnB1dCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHdvcmtPcmRlck5vOiB0aGlzLndvcmtPcmRlck5vLFxyXG4gICAgICAgICAgICAgICAgICAgIG1hY2hpbmVObzogdGhpcy5tYWNoaW5lTm8sXHJcbiAgICAgICAgICAgICAgICAgICAgdG9vbE5vOiB0aGlzLnNlbGVjdGVkVG9vbE5vLFxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICfkuIvmnLonLFxyXG4gICAgICAgICAgICAgICAgICAgIHVzZUxpbWl0LFxyXG4gICAgICAgICAgICAgICAgICAgIHhkanMsLy8g5LiL5YiA6K6h5pWwXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kbExpZmVXb3JuaW5nOiBsaWZlV2FyblJhdGlvIC8vIOaWsOWinlxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJtaXR0aW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLiRwb3N0KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnL01lc0N1dHRlckxlZGdlci9TdWJtaXRUb29sQWN0aW9uJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkocGF5bG9hZCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhICYmIHJlcy5kYXRhLm91dFN1bSA9PT0gXCIwXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdW5pLnNob3dUb2FzdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcmVzLmRhdGEub3V0TXNnIHx8ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2Vycm9yJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzLmRhdGEgJiYgcmVzLmRhdGEub3V0TXNnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuaS5zaG93VG9hc3Qoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHJlcy5kYXRhLm91dE1zZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdub25lJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5ZCO57ut6YC76L6R57un57ut5omn6KGMXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5mZXRjaEZvcm1EYXRhKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHNob3dNZXNzYWdlKCfkuIvliIDmj5DkuqTlpLHotKXvvIzor7fmo4Dmn6XnvZHnu5wnKTtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VibWl0dGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjYW5jZWwoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVG9vbE5vID0gJyc7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvb2xOYW1lID0gJyc7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvb2xNb2RlbCA9ICcnO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51c2VMaW1pdElucHV0ID0gJyc7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxpZmVXYXJuSW5wdXQgPSAnJzsgLy8g5paw5aKe77ya5riF56m6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzRGlydHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYXN5bmMgZmV0Y2hGb3JtRGF0YSgpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy53b3JrT3JkZXJObyB8fCAhdGhpcy5tYWNoaW5lTm8pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ+W3peWNleWPt+aIluacuuWPsOWPt+S4uuepuu+8jOi3s+i/h+iOt+WPluihqOWNleaVsOaNricpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ0Zvcm0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgICAgICAgICAgICAgICB3b3JrT3JkZXJObzogdGhpcy53b3JrT3JkZXJOby50cmltKCksXHJcbiAgICAgICAgICAgICAgICAgICAgbWFjaGluZU5vOiB0aGlzLm1hY2hpbmVOby50cmltKClcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuJHBvc3Qoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICcvTWVzQ3V0dGVyTGVkZ2VyL0dldEZvcm1EYXRhJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkocGF5bG9hZCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXMgIT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kc2hvd01lc3NhZ2UocmVzLm1lc3NhZ2UgfHwgJ+iOt+WPluihqOWNleaVsOaNruWksei0pScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvb2xSZWNvcmRzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlzdCA9IEFycmF5LmlzQXJyYXkocmVzLmRhdGEpID8gcmVzLmRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiAocmVzLmRhdGEgJiYgcmVzLmRhdGEudGJCaWxsTGlzdCkgPyByZXMuZGF0YS50YkJpbGxMaXN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChyZXMuZGF0YSAmJiByZXMuZGF0YS5kYXRhKSA/IHJlcy5kYXRhLmRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBnZXRGaWVsZCA9IChvYmosIC4uLmtleXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBrIG9mIGtleXMpIGlmIChvYmo/LltrXSAhPT0gdW5kZWZpbmVkICYmIG9iaj8uW2tdICE9PSBudWxsKSByZXR1cm4gb2JqW2tdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXBwZWQgPSAobGlzdCB8fCBbXSkubWFwKHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cFRpbWVSYXcgPSBnZXRGaWVsZCh0LCAndVBfVElNRScsICdVUF9USU1FJywgJ3VQVGltZScsICdVUFRJTUUnLCAnVXBUaW1lJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvd25UaW1lUmF3ID0gZ2V0RmllbGQodCwgJ2Rvd05fVElNRScsICdET1dOX1RJTUUnLCAnZG93blRpbWUnLCAnRE9XTlRJTUUnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlmZVdhcm5SYXcgPSBnZXRGaWVsZCh0LCAnbGlmRV9XQVJOJywgJ0xJRkVfV0FSTicsICdsaWZlV2FybicsICdMSUZFV0FSTicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50Q2pOdW0gPSBnZXRGaWVsZCh0LCAnY3VycmVudENqTnVtJywgJ0NVUlJFTlRDSk5VTScsICdDdXJyZW50Q2pOdW0nKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVzZUNvdW50ID0gZ2V0RmllbGQodCwgJ3VzRV9DT1VOVCcsICdVU0VfQ09VTlQnLCAndXNlQ291bnQnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXNlTGltaXQgPSBnZXRGaWVsZCh0LCAndXNFX0xJTUlUJywgJ1VTRV9MSU1JVCcsICd1c2VMaW1pdCcpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBlcmNlbnQgPSAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVzZUNvdW50ICE9IG51bGwgJiYgdXNlTGltaXQgIT0gbnVsbCAmJiAhaXNOYU4odXNlQ291bnQpICYmICFpc05hTih1c2VMaW1pdCkgJiYgTnVtYmVyKHVzZUxpbWl0KSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnQgPSAoKE51bWJlcih1c2VDb3VudCkgLyBOdW1iZXIodXNlTGltaXQpKSAqIDEwMCkudG9GaXhlZCgwKSArICclJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyc2VOdW1iZXIgPSB2ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ID09PSBudWxsIHx8IHYgPT09IHVuZGVmaW5lZCB8fCB2ID09PSAnJykgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gU3RyaW5nKHYpLnJlcGxhY2UoL1ss77yFJV0vZywgJycpLnRyaW0oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBwYXJzZUZsb2F0KHMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZShuKSA/IG4gOiBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXRQZXJjZW50ID0gbiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9PT0gbnVsbCB8fCBuID09PSB1bmRlZmluZWQgfHwgaXNOYU4obikpIHJldHVybiAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuIDw9IDEpIHJldHVybiBgJHsobiAqIDEwMCkudG9GaXhlZCgwKX0lYDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtOdW1iZXIobikudG9GaXhlZCgwKX0lYDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlmZVdhcm5OdW0gPSBwYXJzZU51bWJlcihsaWZlV2FyblJhdyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgd2FyblN0YXR1cyA9IGdldEZpZWxkKHQsICdzdGF0dXMnLCAnU1RBVFVTJykgfHwgJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaWZlV2Fybk51bSAhPT0gbnVsbCAmJiB1c2VDb3VudCAhPSBudWxsICYmIHVzZUxpbWl0ICE9IG51bGwgJiYgIWlzTmFOKHVzZUNvdW50KSAmJiAhaXNOYU4odXNlTGltaXQpICYmIE51bWJlcih1c2VMaW1pdCkgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwZXJjZW50TnVtID0gTnVtYmVyKHVzZUNvdW50KSAvIE51bWJlcih1c2VMaW1pdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuU3RhdHVzID0gKHBlcmNlbnROdW0gPj0gbGlmZVdhcm5OdW0pID8gJ+mihOitpicgOiAn5q2j5bi4JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5TdGF0dXMgPSB3YXJuU3RhdHVzIHx8ICfmnKrnn6UnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGdldEZpZWxkKHQsICdpZCcsICdJRCcpIHx8IGAke2dldEZpZWxkKHQsICdjdXR0ZVJfSUQnKSB8fCBnZXRGaWVsZCh0LCAnQ1VUVEVSX0lEJykgfHwgJyd9LSR7dXBUaW1lUmF3IHx8ICcnfWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBubzogZ2V0RmllbGQodCwgJ2N1dHRlUl9JRCcsICdDVVRURVJfSUQnLCAnY3V0dGVySWQnLCAnbm8nKSB8fCAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGdldEZpZWxkKHQsICdjdXR0ZVJfTkFNRScsICdDVVRURVJfTkFNRScsICdjdXR0ZXJOYW1lJywgJ25hbWUnKSB8fCAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwVGltZTogdGhpcy5mb3JtYXREYXRlVGltZSh1cFRpbWVSYXcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBDb3VudDogZ2V0RmllbGQodCwgJ3VQX0NPVU5UJywgJ1VQX0NPVU5UJywgJ3VwQ291bnQnKSA/PyAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25UaW1lOiB0aGlzLmZvcm1hdERhdGVUaW1lKGRvd25UaW1lUmF3KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25Db3VudDogZ2V0RmllbGQodCwgJ2Rvd05fQ09VTlQnLCAnRE9XTl9DT1VOVCcsICdkb3duQ291bnQnKSA/PyAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZUNvdW50OiB1c2VDb3VudCA/PyAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZUxpbWl0OiB1c2VMaW1pdCA/PyAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpZmVQZXJjZW50OiBwZXJjZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlmZVdhcm46IGZvcm1hdFBlcmNlbnQobGlmZVdhcm5OdW0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FyblN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDak51bVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyDmlrDlop7vvJrmjInkuIrliIDml7bpl7TpmY3luo/mjpLluo/vvIjotormmZrnmoTotorkuIrpnaLvvIlcclxuICAgICAgICAgICAgICAgICAgICBtYXBwZWQuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDml7bpl7TmoLzlvI/lpoIgXCIxMC0yNCAxNjowM1wi77yM6L2s5Li6IERhdGUg5a+56LGh5q+U6L6DXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlID0gcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXMpIHJldHVybiAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g6KGl5bm05Lu977yM5YGH6K6+6YO95piv5LuK5bm0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB5ZWFyID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGAke3llYXJ9LSR7cy5yZXBsYWNlKC8tL2csICctJyl9OjAwYCkuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2UoYi51cFRpbWUpIC0gcGFyc2UoYS51cFRpbWUpOyAvLyDms6jmhI/ov5nph4zpobrluo/lj43ov4fmnaVcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b29sUmVjb3JkcyA9IG1hcHBlZDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b3RhbEZyb21SZXMgPSBOdW1iZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5kYXRhPy50b3RhbCA/PyByZXMuZGF0YT8udG90YWxDb3VudCA/PyByZXMudG90YWwgPz8gcmVzLnRvdGFsQ291bnQgPz8gbWFwcGVkLmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b3RhbCA9IE51bWJlci5pc0Zpbml0ZSh0b3RhbEZyb21SZXMpID8gdG90YWxGcm9tUmVzIDogbWFwcGVkLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign6I635Y+W6KGo5Y2V5pWw5o2u6ZSZ6K+vOicsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLiRzaG93TWVzc2FnZSgn6I635Y+W5pWw5o2u5aSx6LSl77yM6K+35qOA5p+l572R57uc6L+e5o6lJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b29sUmVjb3JkcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdGb3JtID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIOiHquWKqOW4puWHuuW3peWNleWIgOWFt+S/oeaBr++8jOW5tuiOt+WPluW3peWNleacgOaWsOmHh+mbhuaVsFxyXG4gICAgICAgICAgICBhc3luYyBmZXRjaERlZmF1bHRUb29sRnJvbVdvcmtPcmRlcigpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5tYWNoaW5lTm8pIHJldHVybjtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy4kcG9zdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJy9Xb21kYWEvR2V0V29tZGFhc0J5U2hvdycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHsgbWFjaGluZU5vOiB0aGlzLm1hY2hpbmVObyB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLnN0YXR1cyA9PT0gMCAmJiBBcnJheS5pc0FycmF5KHJlcy5kYXRhPy50YkJpbGxMaXN0KSAmJiByZXMuZGF0YS50YkJpbGxMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3JkZXIgPSByZXMuZGF0YS50YkJpbGxMaXN0WzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5paw5aKe77ya5L+d5a2Y5bel5Y2V5pWw5o2u77yM55So5LqO5oql6K+V5Lqn5pWwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3JkZXIgPSBvcmRlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcmRlcklkID0gb3JkZXIuaWQgfHwgb3JkZXIuSUQgfHwgb3JkZXIub3JkZXJJZCB8fCBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRvb2xObyA9IG9yZGVyLmN1dHRlcklkIHx8IG9yZGVyLmN1dHRlUl9JRCB8fCAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b29sTmFtZSA9IG9yZGVyLmN1dHRlck5hbWUgfHwgb3JkZXIuY3V0dGVSX05BTUUgfHwgJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9vbE1vZGVsID0gb3JkZXIuY3V0dGVyTW9kZWwgfHwgb3JkZXIuY3V0dGVSX01PREVMIHx8ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDlhbPplK7vvJrojrflj5blt6XljZXmnIDmlrDph4fpm4bmlbBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrT3JkZXJDdXJyZW50Q2pOdW0gPSBvcmRlci5DdXJyZW50Q2pOdW0gPz8gb3JkZXIuY3VycmVudENqTnVtID8/IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOaWsOWinu+8muiHquWKqOWhq+WFheWvv+WRveavlOmihOitpuWAvFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob3JkZXIubW9kbExpZmVXb3JuaW5nICE9PSB1bmRlZmluZWQgJiYgb3JkZXIubW9kbExpZmVXb3JuaW5nICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3YXJuID0gTnVtYmVyKG9yZGVyLm1vZGxMaWZlV29ybmluZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxpZmVXYXJuSW5wdXQgPSB3YXJuIDw9IDEgPyAod2FybiAqIDEwMCkudG9GaXhlZCgwKSA6IHdhcm4udG9GaXhlZCgwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGlmZVdhcm5JbnB1dCA9ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrT3JkZXJDdXJyZW50Q2pOdW0gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9yZGVyID0ge307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3JkZXJJZCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybign6Ieq5Yqo5bim5Ye65bel5Y2V5YiA5YW35aSx6LSlJywgZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrT3JkZXJDdXJyZW50Q2pOdW0gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3JkZXIgPSB7fTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9yZGVySWQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBmb3JtYXREYXRlVGltZShkYXRlVGltZVN0cikge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFkYXRlVGltZVN0cikgcmV0dXJuICcnO1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gU3RyaW5nKGRhdGVUaW1lU3RyKS50cmltKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKC9eXFxkezEwfSQvLnRlc3QocykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZCA9IG5ldyBEYXRlKE51bWJlcihzKSAqIDEwMDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCR7ZC5nZXRNb250aCgpICsgMX0tJHtkLmdldERhdGUoKX0gJHtkLmdldEhvdXJzKCl9OiR7U3RyaW5nKGQuZ2V0TWludXRlcygpKS5wYWRTdGFydCgyLCAnMCcpfWA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgvXlxcZHsxM30kLy50ZXN0KHMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBuZXcgRGF0ZShOdW1iZXIocykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCR7ZC5nZXRNb250aCgpICsgMX0tJHtkLmdldERhdGUoKX0gJHtkLmdldEhvdXJzKCl9OiR7U3RyaW5nKGQuZ2V0TWludXRlcygpKS5wYWRTdGFydCgyLCAnMCcpfWA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkYXRlVGltZVN0cik7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc05hTihkYXRlLmdldFRpbWUoKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke2RhdGUuZ2V0TW9udGgoKSArIDF9LSR7ZGF0ZS5nZXREYXRlKCl9ICR7ZGF0ZS5nZXRIb3VycygpfToke1N0cmluZyhkYXRlLmdldE1pbnV0ZXMoKSkucGFkU3RhcnQoMiwgJzAnKX1gO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaCA9IFN0cmluZyhkYXRlVGltZVN0cikubWF0Y2goLyhcXGR7MSw0fVstXFwvXVxcZHsxLDJ9Wy1cXC9dXFxkezEsMn0pLio/KFxcZHsxLDJ9OlxcZHsyfSkvKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gpIHJldHVybiBgJHttYXRjaFsxXS5yZXBsYWNlKC8tL2csICcvJykucmVwbGFjZSgvXlxcZHs0fVxcLy8sIChtKSA9PiBtKX0gJHttYXRjaFsyXX1gO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoZGF0ZVRpbWVTdHIpO1xyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhkYXRlVGltZVN0cik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyDmlrDlop7vvJrpgInmi6nosIPmnLrluIjlgoVcclxuICAgICAgICAgICAgc2VsZWN0VGlhb2ppVXNlcih1KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRpYW9qaVN0YWZmTm8gPSB1O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc1RpYW9qaVVzZXJTZWxlY3RTaG93ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRpYW9qaVVzZXJTZWFyY2ggPSAnJztcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIOaWsOWinu+8mumAgeajgOWRvOWPqyArIOaKpeivleS6p+aVsFxyXG4gICAgICAgICAgICBhc3luYyBoYW5kbGVJbnNwZWN0aW9uQ2FsbCgpIHtcclxuICAgICAgICAgICAgICAgIC8vIOmqjOivgeW/heWhq+mhuVxyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnRpYW9qaVN0YWZmTm8pIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLiRzaG93TWVzc2FnZSgn6K+36YCJ5oup6LCD5py65biI5YKFJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBjb25zdCBva1F0eSA9IE51bWJlcih0aGlzLnRpYW9qaU9rUXR5KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGJhZFF0eSA9IE51bWJlcih0aGlzLnRpYW9qaUJhZFF0eSk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmIChpc05hTihva1F0eSkgfHwgb2tRdHkgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc2hvd01lc3NhZ2UoJ+ivt+i+k+WFpeacieaViOeahOiwg+acuuiJr+WTgeaVsCcpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKGlzTmFOKGJhZFF0eSkgfHwgYmFkUXR5IDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHNob3dNZXNzYWdlKCfor7fovpPlhaXmnInmlYjnmoTosIPmnLrkuI3oia/lk4HmlbAnKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN0YWZmTm8gPSB0aGlzLnRpYW9qaVN0YWZmTm8uc3BsaXQoJzonKVswXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRDak51bSA9IHRoaXMub3JkZXI/LmN1cnJlbnRDak51bSB8fCAwO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAvLyDosIPnlKjmiqXor5XkuqfmlbDmjqXlj6Mo5L2/55So5oql5bel55WM6Z2i55qE5o6l5Y+jKVxyXG4gICAgICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgICAgICAgICAgICAgICBvcmRlck5vOiB0aGlzLndvcmtPcmRlck5vLFxyXG4gICAgICAgICAgICAgICAgICAgIG9yZGVySWQ6IHRoaXMub3JkZXJJZCwgLy8g6ZyA6KaB5LuO5bel5Y2V5pWw5o2u5Lit6I635Y+WXHJcbiAgICAgICAgICAgICAgICAgICAgYmY6IGJhZFF0eSwgLy8gYmbkvKDpgJLkuI3oia/lk4HmlbBcclxuICAgICAgICAgICAgICAgICAgICBzdGFmZk5vOiBzdGFmZk5vLFxyXG4gICAgICAgICAgICAgICAgICAgIGluaXRDak51bTogY3VycmVudENqTnVtIC0gYmFkUXR5IC0gb2tRdHksIC8vIGluaXRDak51bSA9IGN1cnJlbnRDak51bSAtIGJmIC0g6Imv5ZOB5pWwXHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudENqTnVtOiBjdXJyZW50Q2pOdW0sXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RpYW9qaScsIC8vIOagh+ivhuS4uuiwg+acuuaKpeW3pVxyXG4gICAgICAgICAgICAgICAgICAgIHRpYW9qaU9rUXR5OiBva1F0eSwgLy8g5paw5aKeOuiJr+WTgeaVsFxyXG4gICAgICAgICAgICAgICAgICAgIHRpYW9qaUJhZFF0eTogYmFkUXR5IC8vIOaWsOWinjrkuI3oia/lk4HmlbBcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJtaXR0aW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAvLyDosIPnlKjmiqXlt6XnlYzpnaLnmoTmiqXor5XkuqfmlbDmjqXlj6NcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLiRwb3N0KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnL01lc0ludkl0ZW1CYXJjb2Rlcy9BZGRCRlRvQmFyY29kZXMnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBwYXlsb2FkXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRzaG93TWVzc2FnZShyZXMubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc2hvd01lc3NhZ2UoJ+iwg+acuuaKpeW3peaIkOWKnycpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOa4heepuui+k+WFpVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGlhb2ppT2tRdHkgPSAnJztcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpYW9qaUJhZFF0eSA9ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOWIt+aWsOaVsOaNrlxyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZmV0Y2hGb3JtRGF0YSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZmV0Y2hEZWZhdWx0VG9vbEZyb21Xb3JrT3JkZXIoKTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAvLyDmlrDlop7vvJroh6rliqjlpITnkIbosIPmnLrpgIHmo4DnlYzpnaLnmoTmjInpkq7pgLvovpFcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmF1dG9IYW5kbGVNYWNoaW5lSW5zcGVjdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign6LCD5py65oql5bel6ZSZ6K+vOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc2hvd01lc3NhZ2UoJ+iwg+acuuaKpeW3peWksei0pe+8jOivt+ajgOafpee9kee7nCcpO1xyXG4gICAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN1Ym1pdHRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIOaWsOWinu+8muiHquWKqOWkhOeQhuiwg+acuumAgeajgOeVjOmdoueahOaMiemSrumAu+i+kVxyXG4gICAgICAgICAgICBhc3luYyBhdXRvSGFuZGxlTWFjaGluZUluc3BlY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIDEuIOS9v+eUqCBGaW5kQnlPcmRlck5vIOiOt+WPluiwg+acuumAgeajgOeVjOmdoueahOS4ieS4quaXtumXtFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXR1c1JlcyA9IGF3YWl0IHRoaXMuJHBvc3Qoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICcvTWVzT3JkZXJTdGEvRmluZEJ5T3JkZXJObycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVySWQ6IHRoaXMub3JkZXJJZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyTm86IHRoaXMud29ya09yZGVyTm9cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghc3RhdHVzUmVzIHx8ICFzdGF0dXNSZXMuZGF0YSB8fCAhc3RhdHVzUmVzLmRhdGEudGJCaWxsTGlzdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfojrflj5blt6XljZXnirbmgIHlpLHotKUnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGF0dXNGb3JtID0gc3RhdHVzUmVzLmRhdGEudGJCaWxsTGlzdDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYVN0YXJ0VGltZSA9IHN0YXR1c0Zvcm0ubWFTdGFydFRpbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFTaG91dFRpbWUgPSBzdGF0dXNGb3JtLm1hU2hvdXRUaW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hRW5kVGltZSA9IHN0YXR1c0Zvcm0ubWFFbmRUaW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIDIuIOWHhuWkh+mcgOimgeabtOaWsOeahOaXtumXtOaVsOaNrlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBuZWVkU2F2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB1cGRhdGVEYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogc3RhdHVzRm9ybS5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXJJZDogdGhpcy5vcmRlcklkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lTm86IHRoaXMubWFjaGluZU5vLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmbGFnOiAtMVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gMy4g5LuO5LiK5Yiw5LiL5qC55o2u5pi+56S65qGG6YeM5piv5ZCm5pyJ5pe26Ze05L6d5qyh6K6+572uXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5aaC5p6c6LCD5py65byA5aeL5pe26Ze05Li656m677yM6K6+572u6LCD5py65byA5aeL5pe26Ze0XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFtYVN0YXJ0VGltZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVEYXRhLm1hU3RhcnRUaW1lID0gdGhpcy4kZ2V0RGF0ZSgneXl5eS1tbS1kZCBoaDI0Om1pOnNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZURhdGEuZmxhZyA9IC0xOyAvLyDosIPmnLrlvIDlp4vnmoRmbGFnPS0xXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRTYXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVEYXRhLm1hU3RhcnRUaW1lID0gbWFTdGFydFRpbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOWmguaenOmAgeajgOWRvOWPq+aXtumXtOS4uuepuu+8jOiuvue9rumAgeajgOWRvOWPq+aXtumXtFxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghbWFTaG91dFRpbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlRGF0YS5tYVNob3V0VGltZSA9IHRoaXMuJGdldERhdGUoJ3l5eXktbW0tZGQgaGgyNDptaTpzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVEYXRhLmZsYWcgPSAxOyAvLyDpppbmrKHpgIHmo4Dlkbzlj6vnmoRmbGFnPTFcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmVlZFNhdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZURhdGEubWFTaG91dFRpbWUgPSBtYVNob3V0VGltZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g6LCD5py65a6M5oiQ5pe26Ze05L+d5oyB5LiN5Y+YXHJcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlRGF0YS5tYUVuZFRpbWUgPSBtYUVuZFRpbWUgfHwgJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gNC4g5aaC5p6c5pyJ6ZyA6KaB5pu05paw55qE5pe26Ze077yM6LCD55So5L+d5a2Y5o6l5Y+jXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5lZWRTYXZlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNhdmVSZXMgPSBhd2FpdCB0aGlzLiRwb3N0KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJy9NZXNPcmRlclN0YS9DaGFuZ2VNYWNoaW5lVGltZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB1cGRhdGVEYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNhdmVSZXMgJiYgc2F2ZVJlcy5kYXRhICYmIHNhdmVSZXMuZGF0YS50YkJpbGxMaXN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygn6LCD5py66YCB5qOA55WM6Z2i5pe26Ze06Ieq5Yqo5pu05paw5oiQ5YqfJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfosIPmnLrpgIHmo4DnlYzpnaLml7bpl7Toh6rliqjmm7TmlrDlpLHotKUnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+iHquWKqOWkhOeQhuiwg+acuumAgeajgOeVjOmdouWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOS4jeS4reaWreS4u+a1geeoi++8jOWPquiusOW9lemUmeivr1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgLy8g5paw5aKe77ya6I635Y+W6LCD5py65biI5YKF5YiX6KGoXHJcbiAgICAgICAgICAgIGFzeW5jIGZldGNoVGlhb2ppU3RhZmYoKSB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuJHBvc3Qoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICcvTWVzU3RhZmYvR2V0QWxsWFMwMTAxQll0aicgLy8g5LiO5oql5bel55WM6Z2i5L2/55So55u45ZCM5o6l5Y+jXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT09IDAgJiYgcmVzLmRhdGEgJiYgcmVzLmRhdGEudGJCaWxsTGlzdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGFmZiA9IHJlcy5kYXRhLnRiQmlsbExpc3Q7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGlhb2ppVXNlcnMgPSBzdGFmZi5tYXAocyA9PiBzLnN0YWZmTm8gKyAnOicgKyBzLnN0YWZmTmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign6I635Y+W6LCD5py65biI5YKF5YiX6KGo5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIG1vdW50ZWQoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmV0Y2hUb29scygnJyk7XHJcbiAgICAgICAgICAgIHRoaXMubWFjaGluZU5vID0gdW5pLmdldFN0b3JhZ2VTeW5jKCdtYWNoaW5lTm8nKSB8fCAnJztcclxuICAgICAgICAgICAgdGhpcy53b3JrT3JkZXJObyA9IHVuaS5nZXRTdG9yYWdlU3luYygnZGFhMDAxJykgfHwgJyc7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyDmlrDlop7vvJrojrflj5bosIPmnLrluIjlgoXliJfooahcclxuICAgICAgICAgICAgdGhpcy5mZXRjaFRpYW9qaVN0YWZmKCk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5tYWNoaW5lTm8gJiYgdGhpcy53b3JrT3JkZXJObykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mZXRjaEZvcm1EYXRhKCkudGhlbihhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5mZXRjaERlZmF1bHRUb29sRnJvbVdvcmtPcmRlcigpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOi/m+WFpemhtemdouaXtui1i+WAvOesrOS4gOihjCBjdXJyZW50Q2pOdW1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50b29sUmVjb3Jkcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJHNldCh0aGlzLnRvb2xSZWNvcmRzWzBdLCAnY3VycmVudENqTnVtJywgdGhpcy53b3JrT3JkZXJDdXJyZW50Q2pOdW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCfmnLrlj7Dlj7fmiJblt6XljZXlj7fkuLrnqbrvvIzml6Dms5Xojrflj5booajljZXmlbDmja4nKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8g5ZCv5Yqo6Ieq5Yqo5L+d5a2Y5a6a5pe25ZmoXHJcbiAgICAgICAgICAgIC8vdGhpcy5zdGFydEF1dG9TYXZlKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBiZWZvcmVEZXN0cm95KCkge1xyXG4gICAgICAgICAgICAvLyDmuIXnkIblrprml7blmajvvIzpmLLmraLlhoXlrZjms4TmvI9cclxuICAgICAgICAgICAgdGhpcy5zdG9wQXV0b1NhdmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBzY29wZWQ+XHJcbiAgICAudG9wLXNlY3Rpb24tZ3JpZCB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG4gICAgICAgIGdhcDogMTJweDtcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiAydmg7XHJcbiAgICAgICAgd2lkdGg6IDk5dnc7XHJcbiAgICAgICAgbWF4LXdpZHRoOiAxOTIwcHg7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xyXG4gICAgICAgIHBhZGRpbmc6IDEycHg7XHJcbiAgICAgICAgYmFja2dyb3VuZDogI2Y4ZjlmYTtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XHJcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2U5ZWNlZjtcclxuICAgIH1cclxuXHJcbiAgICAuZm9ybS1yb3cge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4O1xyXG4gICAgfVxyXG5cclxuICAgICAgICAuZm9ybS1yb3c6bGFzdC1jaGlsZCB7XHJcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIC5mb3JtLWNlbGwge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICBtaW4td2lkdGg6IDA7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xyXG4gICAgfVxyXG5cclxuICAgICAgICAuZm9ybS1jZWxsOm50aC1jaGlsZCgxKSB7XHJcbiAgICAgICAgICAgIGZsZXg6IDAgMCAyOCU7XHJcbiAgICAgICAgICAgIG1pbi13aWR0aDogMTgwcHg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuZm9ybS1jZWxsOm50aC1jaGlsZCgyKSB7XHJcbiAgICAgICAgICAgIGZsZXg6IDAgMCAzMiU7XHJcbiAgICAgICAgICAgIG1pbi13aWR0aDogMTgwcHg7XHJcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5mb3JtLWNlbGw6bnRoLWNoaWxkKDMpIHtcclxuICAgICAgICAgICAgZmxleDogMCAwIGF1dG87XHJcbiAgICAgICAgICAgIG1pbi13aWR0aDogMDtcclxuICAgICAgICAgICAgbWF4LXdpZHRoOiAyMjBweDsgLyog6ZmQ5Yi25pyA5aSn5a695bqm77yM6YG/5YWN5pKR5byAICovXHJcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIC5mb3JtLWxhYmVsIHtcclxuICAgICAgICB3aWR0aDogYXV0bztcclxuICAgICAgICBmb250LXdlaWdodDogNTAwO1xyXG4gICAgICAgIGNvbG9yOiAjMzMzO1xyXG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA0cHg7XHJcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XHJcbiAgICAgICAgZm9udC1zaXplOiAyMnB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5pbnB1dCB7XHJcbiAgICAgICAgcGFkZGluZzogMTRweCAyMHB4O1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNkY2RmZTY7XHJcbiAgICAgICAgZmxleDogMTtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmY7XHJcbiAgICAgICAgbWluLXdpZHRoOiAwO1xyXG4gICAgICAgIGhlaWdodDogNTZweCAhaW1wb3J0YW50O1xyXG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICAgICAgZm9udC1zaXplOiAyMnB4O1xyXG4gICAgfVxyXG5cclxuICAgICAgICAuaW5wdXQuc21hbGwtZm9udCB7XHJcbiAgICAgICAgICAgIC8qIOS4jeiuvue9ruWtl+S9k+Wkp+WwjyAqL1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmlucHV0OmRpc2FibGVkIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjdmYTtcclxuICAgICAgICAgICAgY29sb3I6ICNjMGM0Y2M7XHJcbiAgICAgICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIC5pbnB1dC13aXRoLXVuaXQge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICBnYXA6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgICAgIC5pbnB1dC13aXRoLXVuaXQgLmlucHV0IHtcclxuICAgICAgICAgICAgd2lkdGg6IDYwcHggIWltcG9ydGFudDtcclxuICAgICAgICAgICAgbWluLXdpZHRoOiAwICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMnB4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAycHg7XHJcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDJweDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5pbnB1dC13aXRoLXVuaXQgLmlucHV0IHtcclxuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA0cHggIWltcG9ydGFudDtcclxuICAgICAgICAgICAgd2lkdGg6IDYwcHggIWltcG9ydGFudDtcclxuICAgICAgICAgICAgbWluLXdpZHRoOiAwICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgLnVuaXQtdGV4dCB7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDtcclxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtcclxuICAgICAgICBmb250LXNpemU6IDIycHggIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICAuYnRuLWJsdWUsIC5idG4tYmx1ZS5sYXJnZS1idG4ge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMxODkwZmY7XHJcbiAgICAgICAgY29sb3I6IHdoaXRlO1xyXG4gICAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgICBwYWRkaW5nOiAxNHB4IDMycHg7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICBmb250LXdlaWdodDogNTAwO1xyXG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICAgICAgaGVpZ2h0OiA3MHB4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcztcclxuICAgICAgICBmbGV4LXNocmluazogMDtcclxuICAgICAgICBtaW4td2lkdGg6IDE0MHB4O1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAyNHB4O1xyXG4gICAgfVxyXG5cclxuICAgICAgICAuYnRuLWJsdWUubGFyZ2UtYnRuIHtcclxuICAgICAgICAgICAgcGFkZGluZzogMCA2MHB4O1xyXG4gICAgICAgICAgICBtaW4td2lkdGg6IDE4MHB4O1xyXG4gICAgICAgICAgICBoZWlnaHQ6IDcycHggIWltcG9ydGFudDtcclxuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAxLjNlbTtcclxuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMjQsMTQ0LDI1NSwwLjA4KTtcclxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDcycHg7IC8qIOWeguebtOWxheS4rSAqL1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IC8qIOS/neivgWxpbmUtaGVpZ2h055Sf5pWIICovXHJcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuYnRuLWJsdWU6aG92ZXIge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDBhOWZmO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmJ0bi1ibHVlOmFjdGl2ZSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwOTZkZDk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuYnRuLWJsdWU6ZGlzYWJsZWQge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjYmFlN2ZmO1xyXG4gICAgICAgICAgICBjb2xvcjogIzkxZDVmZjtcclxuICAgICAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgLmJ1dHRvbi1yb3cge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgICAgZ2FwOiAzMnB4O1xyXG4gICAgICAgIG1hcmdpbjogMnZoIDA7XHJcbiAgICB9XHJcblxyXG4gICAgLnNhdmUtYnRuLCAuY2FuY2VsLWJ0biB7XHJcbiAgICAgICAgd2lkdGg6IDI4JTtcclxuICAgICAgICBwYWRkaW5nOiAxLjV2aDtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBBMkU5O1xyXG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcztcclxuICAgICAgICBmb250LXNpemU6IDIycHg7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICAgICAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG4gICAgfVxyXG5cclxuICAgIC5jYW5jZWwtYnRuIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xyXG4gICAgICAgIGNvbG9yOiAjMzMzO1xyXG4gICAgfVxyXG5cclxuICAgIC5zYXZlLWJ0bjpob3ZlciB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzQwYTlmZjtcclxuICAgIH1cclxuXHJcbiAgICAuc2F2ZS1idG46YWN0aXZlIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDk2ZGQ5O1xyXG4gICAgfVxyXG5cclxuICAgIC5zYXZlLWJ0bjpkaXNhYmxlZCwgLmNhbmNlbC1idG46ZGlzYWJsZWQge1xyXG4gICAgICAgIG9wYWNpdHk6IDAuNjtcclxuICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qIOW8ueeql+agt+W8jyAqL1xyXG4gICAgLmRpYWxvZy1vdmVybGF5IHtcclxuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgIGxlZnQ6IDA7XHJcbiAgICAgICAgcmlnaHQ6IDA7XHJcbiAgICAgICAgYm90dG9tOiAwO1xyXG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC4xOCk7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgIHotaW5kZXg6IDEwMDA7XHJcbiAgICB9XHJcblxyXG4gICAgLmRpYWxvZyB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmZjtcclxuICAgICAgICBwYWRkaW5nOiAzdmggM3Z3O1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE4cHg7XHJcbiAgICAgICAgd2lkdGg6IDkwdnc7XHJcbiAgICAgICAgbWF4LXdpZHRoOiAxNjAwcHg7XHJcbiAgICAgICAgbWluLWhlaWdodDogNzB2aDtcclxuICAgICAgICBtYXgtaGVpZ2h0OiA4NXZoO1xyXG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICAgICAgYm94LXNoYWRvdzogMCA4cHggMzJweCByZ2JhKDAsMCwwLDAuMTIpO1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIH1cclxuXHJcbiAgICAuZm9ybS1ncm91cCB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBnYXA6IDEycHg7XHJcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiAydmg7XHJcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgICAgIC5mb3JtLWdyb3VwIC5pbnB1dCB7XHJcbiAgICAgICAgICAgIGZsZXg6IDE7XHJcbiAgICAgICAgICAgIG1pbi13aWR0aDogMzAwcHg7XHJcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDtcclxuICAgICAgICAgICAgYmFja2dyb3VuZDogI2Y4ZjhmODtcclxuICAgICAgICB9XHJcblxyXG4gICAgLnRvb2wtbGlzdCB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgICAgICAgbWFyZ2luOiAxdmggMDtcclxuICAgICAgICBmbGV4OiAxO1xyXG4gICAgICAgIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgICAgICAgZ2FwOiAxMnB4O1xyXG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLnRvb2wtYnRuIHtcclxuICAgICAgICBmbGV4OiAwIDAgY2FsYygyMCUgLSAxMHB4KTtcclxuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICAgIHBhZGRpbmc6IDEwcHggMTJweDtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjZjVmNWY1O1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNkMGQwZDA7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICBjb2xvcjogIzMzMztcclxuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gICAgICAgIG1pbi1oZWlnaHQ6IDUwcHg7XHJcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cywgY29sb3IgMC4xNXM7XHJcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XHJcbiAgICB9XHJcblxyXG4gICAgICAgIC50b29sLWJ0bi5hY3RpdmUge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDBBMkU5O1xyXG4gICAgICAgICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgICAgIGJvcmRlcjogMS41cHggc29saWQgIzAwODZjMjtcclxuICAgICAgICB9XHJcblxyXG4gICAgLmRpYWxvZy1hY3Rpb25zIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgIG1hcmdpbi10b3A6IDJ2aDtcclxuICAgICAgICBwYWRkaW5nLXRvcDogMnZoO1xyXG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZWVlO1xyXG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xyXG4gICAgfVxyXG5cclxuICAgICAgICAuZGlhbG9nLWFjdGlvbnMgPiBkaXY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgICAgICBnYXA6IDI0cHg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuZGlhbG9nLWFjdGlvbnMgPiBkaXY6bGFzdC1jaGlsZCB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgICAgICAgICAgIGdhcDogMThweDtcclxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5kaWFsb2ctYWN0aW9ucyAuYnRuLWJsdWUge1xyXG4gICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDI0cHg7XHJcbiAgICAgICAgICAgIG1pbi13aWR0aDogMTIwcHg7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjJweDtcclxuICAgICAgICB9XHJcblxyXG4gICAgLmJ0bi1kaXNhYmxlZCB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogI2YyZjJmMjtcclxuICAgICAgICBjb2xvcjogIzk5OTtcclxuICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgcGFkZGluZzogMTBweCAyNHB4O1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgICAgICBmb250LXdlaWdodDogNTAwO1xyXG4gICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcclxuICAgICAgICBtaW4td2lkdGg6IDEyMHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC50YWJsZS1zZWN0aW9uIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgIG1hcmdpbjogMXZoIDA7XHJcbiAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcclxuICAgICAgICB3aWR0aDogMTAwJTsgLyog56Gu5L+d6KGo5qC85a655Zmo5Y2g5ruh5a695bqmICovXHJcbiAgICB9XHJcblxyXG4gICAgdGFibGUuc3R5bGVkLXRhYmxlIHtcclxuICAgICAgICBtYXgtd2lkdGg6IDE4MDBweDsgLyog5LuOMTYwMHB45aKe5Yqg5YiwMTgwMHB4ICovXHJcbiAgICAgICAgd2lkdGg6IDk4dnc7IC8qIOS7jjk1dnflop7liqDliLA5OHZ3ICovXHJcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTtcclxuICAgICAgICBib3JkZXItc3BhY2luZzogMDtcclxuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAjYmZiZmJmO1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmY7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcclxuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDEycHggcmdiYSgwLDAsMCwwLjA2KTtcclxuICAgIH1cclxuXHJcbiAgICAgICAgdGFibGUuc3R5bGVkLXRhYmxlIHRoZWFkIHRoIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZDogI2ZhZmFmYTtcclxuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNiZmJmYmY7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDE2cHggMTBweDtcclxuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAyMnB4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGFibGUuc3R5bGVkLXRhYmxlIHRib2R5IHRkIHtcclxuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlOGU4ZTg7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDE0cHggMTBweDtcclxuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDIycHg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIC50YWJsZS1zZWN0aW9uIHRhYmxlIHRoOmZpcnN0LWNoaWxkLCAudGFibGUtc2VjdGlvbiB0YWJsZSB0ZDpmaXJzdC1jaGlsZCB7XHJcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjYmZiZmJmO1xyXG4gICAgfVxyXG5cclxuICAgIC50YWJsZS1zZWN0aW9uIHRhYmxlIHRoOmxhc3QtY2hpbGQsIC50YWJsZS1zZWN0aW9uIHRhYmxlIHRkOmxhc3QtY2hpbGQge1xyXG4gICAgICAgIGJvcmRlci1yaWdodDogMnB4IHNvbGlkICNiZmJmYmY7XHJcbiAgICB9XHJcblxyXG4gICAgLnJvdy1vZGQge1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmY7XHJcbiAgICB9XHJcblxyXG4gICAgICAgIC5yb3ctb2RkICsgdHIge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmFmYWZhO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAubnVtIHtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgcGFkZGluZy1yaWdodDogMDtcclxuICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xyXG4gICAgfVxyXG5cclxuICAgIC5sZWZ0IHtcclxuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gICAgICAgIHBhZGRpbmctbGVmdDogOHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC53YXJuLWNlbGwge1xyXG4gICAgICAgIGNvbG9yOiAjZDkzMDI1O1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgfVxyXG5cclxuICAgIC5vay1jZWxsIHtcclxuICAgICAgICBjb2xvcjogIzMzMztcclxuICAgIH1cclxuXHJcbiAgICAud2Fybi1iYWRnZSB7XHJcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICNmZjRkNGY7XHJcbiAgICAgICAgY29sb3I6ICNmZmY7XHJcbiAgICAgICAgcGFkZGluZzogMnB4IDZweDtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyog5ZON5bqU5byP6LCD5pW0ICovXHJcbiAgICBAbWVkaWEgKG1heC13aWR0aDogMTIwMHB4KSB7XHJcbiAgICAgICAgLmZvcm0tY2VsbCB7XHJcbiAgICAgICAgICAgIG1hcmdpbjogMCA0cHg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuZm9ybS1sYWJlbCB7XHJcbiAgICAgICAgICAgIHdpZHRoOiA5MHB4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmlucHV0IHtcclxuICAgICAgICAgICAgcGFkZGluZzogMTBweCAxNHB4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmJ0bi1ibHVlIHtcclxuICAgICAgICAgICAgcGFkZGluZzogMTBweCAxOHB4O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuaW5wdXQtbGlmZS13YXJuIHtcclxuICAgICAgICB3aWR0aDogNDhweCAhaW1wb3J0YW50OyAvKiDnqI3lvq7mlL7lrr3vvIzpgb/lhY3lrZfkvZPmuqLlh7ogKi9cclxuICAgICAgICBtaW4td2lkdGg6IDAgIWltcG9ydGFudDtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDRweDtcclxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDJweDtcclxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAycHg7XHJcbiAgICAgICAgZm9udC1zaXplOiAyMnB4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICB9XHJcblxyXG4gICAgLmlucHV0LFxyXG4gICAgLmlucHV0LnNtYWxsLWZvbnQsXHJcbiAgICAuaW5wdXQtdXNlLWxpbWl0LFxyXG4gICAgLmlucHV0LXRvb2wtbW9kZWwsXHJcbiAgICAuaW5wdXQtdG9vbC1uYW1lLFxyXG4gICAgLmlucHV0LWxpZmUtd2FybiB7XHJcbiAgICAgICAgZm9udC1zaXplOiAyMnB4ICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLmlucHV0LXRvb2wtbW9kZWwge1xyXG4gICAgICAgIHdpZHRoOiAzMjBweCAhaW1wb3J0YW50OyAvKiDljp/kuLoyMDBweO+8jOeOsOWKoOmVvyAqL1xyXG4gICAgICAgIG1pbi13aWR0aDogMCAhaW1wb3J0YW50O1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMTZweDtcclxuICAgIH1cclxuXHJcbiAgICAuaW5wdXQtdG9vbC1uYW1lIHtcclxuICAgICAgICB3aWR0aDogMTIwcHggIWltcG9ydGFudDtcclxuICAgICAgICBtaW4td2lkdGg6IDAgIWltcG9ydGFudDtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmhpZ2hsaWdodC1sYWJlbCB7XHJcbiAgICAgICAgY29sb3I6ICMxODkwZmYgIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICAudG9vbC1kaXItY2VsbCB7XHJcbiAgICAgICAgZmxleDogMCAwIGF1dG8gIWltcG9ydGFudDtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICBtYXJnaW4tbGVmdDogMTZweDsgLyog5LiO6KeE5qC85Z6L5Y+36L6T5YWl5qGG5ouJ5byA6Led56a7ICovXHJcbiAgICB9XHJcblxyXG4gICAgLmZvcm0tY2VsbC1mbGV4IHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgZmxleDogMCAwIDYwJTtcclxuICAgICAgICBtaW4td2lkdGg6IDMyMHB4O1xyXG4gICAgfVxyXG5cclxuICAgICAgICAuZm9ybS1jZWxsLWZsZXggLmZvcm0tbGFiZWwge1xyXG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDRweDtcclxuICAgICAgICAgICAgd2lkdGg6IGF1dG87XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuZm9ybS1jZWxsLWZsZXggLmlucHV0LXVzZS1saW1pdCB7XHJcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTJweDtcclxuICAgICAgICB9XHJcblxyXG4gICAgLmlucHV0LXVzZS1saW1pdCB7XHJcbiAgICAgICAgd2lkdGg6IDQ1MHB4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgbWluLXdpZHRoOiAwICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxNnB4O1xyXG4gICAgICAgIGZsZXg6IG5vbmUgIWltcG9ydGFudDsgLyog5YWz6ZSu77ya5b275bqV56aB5q2iZmxleOaLieS8uCAqL1xyXG4gICAgfVxyXG5cclxuICAgIC8qIOaWsOWinu+8muiwg+acuuWMuuWfn+agt+W8jyAqL1xyXG4gICAgLnRpYW9qaS1zZWN0aW9uIHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBtYXJnaW46IDJ2aCAwO1xyXG4gICAgICAgIHBhZGRpbmc6IDIwcHg7XHJcbiAgICAgICAgYmFja2dyb3VuZDogI2Y4ZjlmYTtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XHJcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2U5ZWNlZjtcclxuICAgIH1cclxuXHJcbiAgICAudGlhb2ppLXJvdyB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICBnYXA6IDIwcHg7XHJcbiAgICB9XHJcblxyXG4gICAgLyog5b2T5YmN6LCD5py65biI5YKF5Yy65Z+fIC0g5LiO5oql5bel55WM6Z2i5L+d5oyB5LiA6Ie0ICovXHJcbiAgICAuY3VycmVudC11c2VyLXNlY3Rpb24ge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICBmb250LXNpemU6IDIycHg7XHJcbiAgICAgICAgYm9yZGVyOiAxLjVweCBzb2xpZCAjZjAwO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XHJcbiAgICAgICAgcGFkZGluZzogMTRweCAyMnB4O1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmY7XHJcbiAgICAgICAgZ2FwOiAxNHB4O1xyXG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xyXG4gICAgfVxyXG5cclxuICAgIC5jdXJyZW50LXVzZXItbmFtZSB7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgZm9udC1zaXplOiAyMnB4O1xyXG4gICAgfVxyXG5cclxuICAgIC8qIOmAieS6uuaMiemSriAtIOiTneiJsuS4u+mimO+8jOS4juaKpeW3peeVjOmdouS/neaMgeS4gOiHtCAqL1xyXG4gICAgLnNlbGVjdC11c2VyLWJ0biB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogIzAwYTJlOTtcclxuICAgICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgcGFkZGluZzogMTJweCAyMnB4O1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XHJcbiAgICAgICAgZm9udC1zaXplOiAyMnB4O1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTVzO1xyXG4gICAgICAgIGhlaWdodDogNjZweDtcclxuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgIH1cclxuXHJcbiAgICAgICAgLnNlbGVjdC11c2VyLWJ0bjpob3ZlciB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDhhYzI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIC8qIOiwg+acuuaVsOmHj+i+k+WFpeWMuuWfnyAqL1xyXG4gICAgLnRpYW9qaS1pbnB1dC1zZWN0aW9uIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgZ2FwOiAxNHB4O1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMjJweDtcclxuICAgIH1cclxuXHJcbiAgICAudGlhb2ppLWlucHV0IHtcclxuICAgICAgICB3aWR0aDogMjAwcHg7XHJcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgICAgIGhlaWdodDogNjZweDtcclxuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAjODA4MDgwO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMjhweDtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICB9XHJcblxyXG4gICAgLyog6YCB5qOA5ZG85Y+r5oyJ6ZKuIC0g5LiO5oql5bel55WM6Z2i55qE56Gu6K6k5o+Q5Lqk5oyJ6ZKu5L+d5oyB5LiA6Ie0ICovXHJcbiAgICAuZGV0YWlscy1idG4ge1xyXG4gICAgICAgIHBhZGRpbmc6IDEycHggMzRweDtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjMDBhMmU5O1xyXG4gICAgICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMzJweDtcclxuICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XHJcbiAgICAgICAgaGVpZ2h0OiA2NnB4O1xyXG4gICAgICAgIG1pbi13aWR0aDogMTgwcHg7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTtcclxuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xNXM7XHJcbiAgICB9XHJcblxyXG4gICAgICAgIC5kZXRhaWxzLWJ0bjpob3ZlciB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDhhYzI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuZGV0YWlscy1idG46ZGlzYWJsZWQge1xyXG4gICAgICAgICAgICBvcGFjaXR5OiAwLjY7XHJcbiAgICAgICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNiYWU3ZmY7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIC50aWFvamktc3VibWl0LXNlY3Rpb24ge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIH1cclxuXHJcbiAgICAvKiDpgInkurrlvLnnqpfmoLflvI8gLSDkuI7miqXlt6XnlYzpnaLkv53mjIHkuIDoh7QgKi9cclxuICAgIC5vdmVybGF5IHtcclxuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgIGxlZnQ6IDA7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsLjQ1KTtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgei1pbmRleDogMTAwMDtcclxuICAgIH1cclxuXHJcbiAgICAudXNlci1zZWxlY3QtcG9wdXAge1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmY7XHJcbiAgICAgICAgd2lkdGg6IDE2MDBweDtcclxuICAgICAgICBtYXgtd2lkdGg6IDk5dnc7XHJcbiAgICAgICAgbWluLXdpZHRoOiAxMDAwcHg7XHJcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgICAgIG1pbi1oZWlnaHQ6IDUyMHB4O1xyXG4gICAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMzJweDtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xyXG4gICAgICAgIGJveC1zaGFkb3c6IDAgOHB4IDMycHggcmdiYSgwLDAsMCwwLjEyKTtcclxuICAgICAgICB6LWluZGV4OiAxMDAxO1xyXG4gICAgfVxyXG5cclxuICAgIC51c2VyLXNlYXJjaC1iYXIge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICBnYXA6IDE4cHg7XHJcbiAgICAgICAgcGFkZGluZzogMjRweCA2NHB4IDAgNjRweDtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcclxuICAgIH1cclxuXHJcbiAgICAudXNlci1zZWFyY2gtaW5wdXQge1xyXG4gICAgICAgIGZsZXg6IDEgMSAyNjBweDtcclxuICAgICAgICBwYWRkaW5nOiAxNnB4IDIwcHg7XHJcbiAgICAgICAgZm9udC1zaXplOiAyOHB4O1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNiYmI7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gICAgICAgIG91dGxpbmU6IG5vbmU7XHJcbiAgICAgICAgaGVpZ2h0OiA1NHB4O1xyXG4gICAgfVxyXG5cclxuICAgICAgICAudXNlci1zZWFyY2gtaW5wdXQ6Zm9jdXMge1xyXG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICMwMDdhZmY7XHJcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2JhKDAsMTIyLDI1NSwuMTUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAudXNlci1zZWFyY2gtY2xlYXIge1xyXG4gICAgICAgIHBhZGRpbmc6IDEycHggMjhweDtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjZmY5ZjQzO1xyXG4gICAgICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XHJcbiAgICAgICAgZm9udC1zaXplOiAyNHB4O1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIH1cclxuXHJcbiAgICAgICAgLnVzZXItc2VhcmNoLWNsZWFyOmhvdmVyIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZDogI2ZmODkyMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgLnVzZXItc2VhcmNoLWluZm8ge1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMjJweDtcclxuICAgICAgICBjb2xvcjogIzU1NTtcclxuICAgIH1cclxuXHJcbiAgICAudXNlci1saXN0LXNjcm9sbCB7XHJcbiAgICAgICAgZmxleDogMSAxIGF1dG87XHJcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcclxuICAgICAgICBwYWRkaW5nOiAzMnB4IDY0cHggMCA2NHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC51c2VyLWxpc3QtZ3JpZCB7XHJcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcclxuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsbWlubWF4KDIwMHB4LDFmcikpO1xyXG4gICAgICAgIGdhcDogMjJweCAyMnB4O1xyXG4gICAgfVxyXG5cclxuICAgIC51c2VyLWxpc3QtYnRuIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICBnYXA6IDJweDtcclxuICAgICAgICBwYWRkaW5nOiAxMHB4IDEwcHg7XHJcbiAgICAgICAgaGVpZ2h0OiAxMDBweDtcclxuICAgICAgICBmb250LXNpemU6IDMwcHg7XHJcbiAgICAgICAgYmFja2dyb3VuZDogIzAwYTJlOTtcclxuICAgICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XHJcbiAgICB9XHJcblxyXG4gICAgICAgIC51c2VyLWxpc3QtYnRuIC51c2VyLWNvZGUge1xyXG4gICAgICAgICAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDM2cHg7XHJcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAudXNlci1saXN0LWJ0biAudXNlci1uYW1lIHtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAzMnB4O1xyXG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS4xO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnVzZXItbGlzdC1idG4uc2VsZWN0ZWQge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDA3MmM5O1xyXG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgyNTUsMjU1LDI1NSwuNikgaW5zZXQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAudXNlci1saXN0LWJ0bjpob3ZlciB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDhlZDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIC5uby11c2VyLXJlc3VsdCB7XHJcbiAgICAgICAgcGFkZGluZzogNDBweCAwO1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICBmb250LXNpemU6IDI4cHg7XHJcbiAgICAgICAgY29sb3I6ICM2NjY7XHJcbiAgICB9XHJcblxyXG4gICAgLnVzZXItcG9wdXAtZm9vdGVyIHtcclxuICAgICAgICBmbGV4LXNocmluazogMDtcclxuICAgICAgICBwYWRkaW5nOiAyNHB4IDY0cHggMzJweCA2NHB4O1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmY7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgfVxyXG5cclxuICAgIC5jbGVhbi1idG4ge1xyXG4gICAgICAgIHdpZHRoOiAyNCU7XHJcbiAgICAgICAgcGFkZGluZzogMTBweCAwO1xyXG4gICAgICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjZ2dztcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjMDA3YWZmO1xyXG4gICAgfVxyXG5cclxuICAgICAgICAuY2xlYW4tYnRuLndpZGUtYnRuIHtcclxuICAgICAgICAgICAgd2lkdGg6IDMwJTtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAyMnB4O1xyXG4gICAgICAgICAgICBwYWRkaW5nOiAxMnB4IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuY2xlYW4tYnRuOmhvdmVyIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwNjJjOTtcclxuICAgICAgICB9XHJcbjwvc3R5bGU+Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///62\n");
+eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 2);\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 3));\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 6));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 9));\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n  data: function data() {\n    return {\n      machineNo: '',\n      //鏈哄彴缂栫爜\n      workOrderNo: '',\n      //宸ュ崟鍙穃n      activeToolNo: '',\n      // 褰撳墠閫変腑鐨勫垁鍏风紪鍙穃n      pageIndex: 1,\n      pageSize: 20,\n      //鍗曢〉鏄剧ず鐨勫垁鍏锋暟閲廫n      total: 0,\n      toolList: [],\n      selectedToolNo: '',\n      toolName: '',\n      toolModel: '',\n      showToolDialog: false,\n      searchKey: '',\n      filteredTools: [],\n      useLimitInput: '',\n      lifeWarnInput: '',\n      // 鏂板锛氬鍛芥瘮棰勮鍊煎師濮嬭緭鍏n      toolRecords: [],\n      loadingTools: false,\n      loadingForm: false,\n      submitting: false,\n      _searchTimer: null,\n      workOrderCurrentCjNum: null,\n      // 宸ュ崟褰撳墠鏁伴噰\n\n      // 鑷姩淇濆瓨鐩稿叧\n      autoSaveTimer: null,\n      isDirty: false,\n      // 琛ㄥ崟鏄惁鏈夋湭淇濆瓨鍙樻洿\n      autoSaveIntervalMs: 5 * 60 * 1000,\n      // 榛樿 5 鍒嗛挓\n      autoSaveEnabled: true,\n      autoSaveActionName: 'handleUpTool',\n      // 鑷姩瑙﹀彂鐨勬柟娉曞悕锛屽彲鏀逛负鑷畾涔変繚瀛樻柟娉昞n\n      // 鏂板锛氳皟鏈虹浉鍏冲瓧娈礬n      isTiaojiUserSelectShow: false,\n      // 璋冩満甯堝倕閫夋嫨寮圭獥\n      tiaojiStaffNo: '',\n      // 褰撳墠閫変腑鐨勮皟鏈哄笀鍌�(鏍煎紡: 宸ュ彿:濮撳悕)\n      tiaojiOkQty: '',\n      // 璋冩満鑹搧鏁癨n      tiaojiBadQty: '',\n      // 璋冩満涓嶈壇鍝佹暟\n      tiaojiUsers: [],\n      // 璋冩満甯堝倕鍒楄〃\n      tiaojiUserSearch: '',\n      // 鎼滅储鍏抽敭璇峔n\n      // 鏂板锛氭姤璇曚骇鏁版墍闇�瀛楁\n      orderId: null,\n      // 宸ュ崟ID\n      order: {} // 宸ュ崟鏁版嵁\n    };\n  },\n\n  computed: {\n    totalPages: function totalPages() {\n      return Math.max(1, Math.ceil(this.total / this.pageSize) || 1);\n    },\n    // 鏂板锛氳皟鏈哄笀鍌呮樉绀哄悕绉癨n    tiaojiStaffDisplay: function tiaojiStaffDisplay() {\n      if (!this.tiaojiStaffNo) return '';\n      var segs = this.tiaojiStaffNo.split(':');\n      return segs.length > 1 ? \"\".concat(segs[0], \" \").concat(segs[1]) : this.tiaojiStaffNo;\n    },\n    // 鏂板锛氳繃婊ゅ悗鐨勮皟鏈哄笀鍌呭垪琛╘n    filteredTiaojiUsers: function filteredTiaojiUsers() {\n      if (!this.tiaojiUserSearch) return this.tiaojiUsers;\n      var kw = this.tiaojiUserSearch.trim().toLowerCase();\n      return this.tiaojiUsers.filter(function (u) {\n        return u.toLowerCase().includes(kw);\n      });\n    }\n  },\n  watch: {\n    // 鏍囪鑴忔暟鎹細鎸夐渶鐩戝惉瀛楁鍙樺寲\n    selectedToolNo: function selectedToolNo() {\n      this.isDirty = true;\n    },\n    useLimitInput: function useLimitInput() {\n      this.isDirty = true;\n    },\n    lifeWarnInput: function lifeWarnInput() {\n      this.isDirty = true;\n    },\n    toolName: function toolName() {\n      this.isDirty = true;\n    },\n    toolModel: function toolModel() {\n      this.isDirty = true;\n    }\n  },\n  methods: {\n    //鏌ヨ褰撳墠鏁伴噰鏁帮紝浣滀负涓嬪垁璁℃暟瀹炴椂鏄剧ず\n    fetchCurrentCjNum: function fetchCurrentCjNum(toolNo) {\n      var _this = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n        var _res$data, res, _ref, _found$CurrentCjNum, found;\n        return _regenerator.default.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                if (_this.machineNo) {\n                  _context.next = 2;\n                  break;\n                }\n                return _context.abrupt(\"return\", null);\n              case 2:\n                _context.prev = 2;\n                _context.next = 5;\n                return _this.$post({\n                  url: '/Womdaa/GetWomdaasByShow',\n                  data: JSON.stringify({\n                    machineNo: _this.machineNo\n                  }),\n                  headers: {\n                    'Content-Type': 'application/json'\n                  }\n                });\n              case 5:\n                res = _context.sent;\n                if (!(res.status === 0 && Array.isArray((_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.tbBillList))) {\n                  _context.next = 9;\n                  break;\n                }\n                found = res.data.tbBillList.find(function (x) {\n                  return x.cutterId === toolNo || x.cutteR_ID === toolNo;\n                });\n                return _context.abrupt(\"return\", found ? (_ref = (_found$CurrentCjNum = found.CurrentCjNum) !== null && _found$CurrentCjNum !== void 0 ? _found$CurrentCjNum : found.currentCjNum) !== null && _ref !== void 0 ? _ref : null : null);\n              case 9:\n                _context.next = 14;\n                break;\n              case 11:\n                _context.prev = 11;\n                _context.t0 = _context[\"catch\"](2);\n                __f__(\"warn\", '鑾峰彇currentCjNum澶辫触', _context.t0, \" at components/mold.vue:334\");\n              case 14:\n                return _context.abrupt(\"return\", null);\n              case 15:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee, null, [[2, 11]]);\n      }))();\n    },\n    // 鏂板锛氬埛鏂版寜閽鐞嗘柟娉昞n    handleRefresh: function handleRefresh() {\n      var _this2 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n        return _regenerator.default.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                _this2.fetchTools('');\n                if (!(_this2.machineNo && _this2.workOrderNo)) {\n                  _context2.next = 7;\n                  break;\n                }\n                _context2.next = 4;\n                return _this2.fetchFormData();\n              case 4:\n                _context2.next = 6;\n                return _this2.fetchDefaultToolFromWorkOrder();\n              case 6:\n                // 鍒锋柊鍚庤祴鍊肩涓�琛� currentCjNum\n                if (_this2.toolRecords.length > 0) {\n                  _this2.$set(_this2.toolRecords[0], 'currentCjNum', _this2.workOrderCurrentCjNum);\n                }\n              case 7:\n                _this2.$showMessage('鍒锋柊瀹屾垚');\n              case 8:\n              case \"end\":\n                return _context2.stop();\n            }\n          }\n        }, _callee2);\n      }))();\n    },\n    // 鑷姩淇濆瓨锛氬惎鍔╘n    startAutoSave: function startAutoSave() {\n      var _this3 = this;\n      if (!this.autoSaveEnabled) return;\n      this.stopAutoSave();\n      this.autoSaveTimer = setInterval(function () {\n        _this3.autoSaveTick();\n      }, this.autoSaveIntervalMs);\n    },\n    // 鑷姩淇濆瓨锛氬仠姝n    stopAutoSave: function stopAutoSave() {\n      if (this.autoSaveTimer) {\n        clearInterval(this.autoSaveTimer);\n        this.autoSaveTimer = null;\n      }\n    },\n    // 鑷姩淇濆瓨锛氭瘡娆″畾鏃舵墽琛屾椂鐨勯�昏緫\n    autoSaveTick: function autoSaveTick() {\n      var _this4 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {\n        var fn;\n        return _regenerator.default.wrap(function _callee3$(_context3) {\n          while (1) {\n            switch (_context3.prev = _context3.next) {\n              case 0:\n                if (_this4.autoSaveEnabled) {\n                  _context3.next = 2;\n                  break;\n                }\n                return _context3.abrupt(\"return\");\n              case 2:\n                if (_this4.isDirty) {\n                  _context3.next = 4;\n                  break;\n                }\n                return _context3.abrupt(\"return\");\n              case 4:\n                if (!(_this4.submitting || _this4.loadingForm)) {\n                  _context3.next = 6;\n                  break;\n                }\n                return _context3.abrupt(\"return\");\n              case 6:\n                fn = _this4.autoSaveActionName && typeof _this4[_this4.autoSaveActionName] === 'function' ? _this4[_this4.autoSaveActionName] : null;\n                if (fn) {\n                  _context3.next = 10;\n                  break;\n                }\n                __f__(\"warn\", '鑷姩淇濆瓨锛氭湭鎵惧埌鏂规硶', _this4.autoSaveActionName, \" at components/mold.vue:377\");\n                return _context3.abrupt(\"return\");\n              case 10:\n                _context3.prev = 10;\n                _this4.submitting = true;\n                _context3.next = 14;\n                return fn.call(_this4);\n              case 14:\n                // 璋冪敤淇濆瓨鏂规硶锛堜緥濡� handleUpTool锛塡n                // 濡傛灉淇濆瓨鎴愬姛锛屾竻鑴忔爣璁帮紙淇濆瓨鏂规硶鍐呴儴鑻ュけ璐ユ病鏈夋姏鍑哄彲淇濇寔姝ゆ柟寮忥級\n                _this4.isDirty = false;\n                _context3.next = 20;\n                break;\n              case 17:\n                _context3.prev = 17;\n                _context3.t0 = _context3[\"catch\"](10);\n                __f__(\"error\", '鑷姩淇濆瓨澶辫触锛�', _context3.t0, \" at components/mold.vue:387\");\n              case 20:\n                _context3.prev = 20;\n                _this4.submitting = false;\n                return _context3.finish(20);\n              case 23:\n              case \"end\":\n                return _context3.stop();\n            }\n          }\n        }, _callee3, null, [[10, 17, 20, 23]]);\n      }))();\n    },\n    // 鏂板锛氬鍛芥瘮棰勮鍊煎綊涓�鍖� (杩斿洖 0~1 鎴� null)\n    normalizeLifeWarn: function normalizeLifeWarn(v) {\n      if (v == null) return null;\n      var raw = String(v).trim().replace(/[%锛匽/g, '');\n      if (raw === '') return null;\n      var num = Number(raw);\n      if (!isFinite(num) || num <= 0) return null;\n      return num > 1 ? num / 100 : num;\n    },\n    openToolDialog: function openToolDialog() {\n      this.showToolDialog = true;\n      this.pageIndex = 1;\n      this.fetchTools(this.searchKey);\n    },\n    closeToolDialog: function closeToolDialog() {\n      this.showToolDialog = false;\n    },\n    fetchTools: function fetchTools(searchKey) {\n      var _this5 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n        var res, _ref2, _ref3, _ref4, _res$data$total, _res$data2, _res$data3, payload, getField, mapped, totalFromRes;\n        return _regenerator.default.wrap(function _callee4$(_context4) {\n          while (1) {\n            switch (_context4.prev = _context4.next) {\n              case 0:\n                _this5.loadingTools = true;\n                _context4.prev = 1;\n                _context4.next = 4;\n                return _this5.$post({\n                  url: '/MesCutterLedger/QueryTools',\n                  data: JSON.stringify({\n                    searchKey: searchKey,\n                    pageIndex: _this5.pageIndex,\n                    pageSize: _this5.pageSize\n                  }),\n                  headers: {\n                    'Content-Type': 'application/json'\n                  }\n                });\n              case 4:\n                res = _context4.sent;\n                if (res.status === 0) {\n                  payload = Array.isArray(res.data) ? res.data : res.data && res.data.tbBillList ? res.data.tbBillList : res.data && res.data.data ? res.data.data : [];\n                  getField = function getField(obj) {\n                    for (var _len = arguments.length, keys = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n                      keys[_key - 1] = arguments[_key];\n                    }\n                    for (var _i = 0, _keys = keys; _i < _keys.length; _i++) {\n                      var k = _keys[_i];\n                      if ((obj === null || obj === void 0 ? void 0 : obj[k]) !== undefined && (obj === null || obj === void 0 ? void 0 : obj[k]) !== null) return obj[k];\n                    }\n                    return null;\n                  }; // 杩欓噷闇�瑕佹妸 lifeWarn 瀛楁涔熷甫鍑烘潵\n                  mapped = (payload || []).map(function (t) {\n                    return {\n                      no: getField(t, 'cutterId', 'CUTTER_ID', 'cutteR_ID', 'daA001', 'no'),\n                      name: getField(t, 'cutterName', 'CUTTER_NAME', 'cutteR_NAME', 'name'),\n                      model: getField(t, 'cutterModel', 'CUTTER_MODEL', 'cutteR_MODEL', 'model'),\n                      lifeWarn: getField(t, 'modlLifeWorning', 'lifeWarn', 'LIFE_WARN', 'lifE_WARN')\n                    };\n                  });\n                  _this5.filteredTools = mapped;\n                  _this5.toolList = mapped.slice();\n                  totalFromRes = Number((_ref2 = (_ref3 = (_ref4 = (_res$data$total = (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.total) !== null && _res$data$total !== void 0 ? _res$data$total : (_res$data3 = res.data) === null || _res$data3 === void 0 ? void 0 : _res$data3.totalCount) !== null && _ref4 !== void 0 ? _ref4 : res.total) !== null && _ref3 !== void 0 ? _ref3 : res.totalCount) !== null && _ref2 !== void 0 ? _ref2 : mapped.length);\n                  _this5.total = Number.isFinite(totalFromRes) ? totalFromRes : mapped.length;\n                  if (_this5.pageIndex > _this5.totalPages) {\n                    _this5.pageIndex = _this5.totalPages;\n                  }\n                } else {\n                  _this5.$showMessage(res.message || '鏌ヨ澶辫触');\n                }\n                _context4.next = 12;\n                break;\n              case 8:\n                _context4.prev = 8;\n                _context4.t0 = _context4[\"catch\"](1);\n                __f__(\"error\", 'fetchTools 閿欒锛�', _context4.t0, \" at components/mold.vue:456\");\n                _this5.$showMessage('鏌ヨ鍒�鍏峰け璐ワ紝璇锋鏌ョ綉缁滄垨鎺ュ彛');\n              case 12:\n                _context4.prev = 12;\n                _this5.loadingTools = false;\n                return _context4.finish(12);\n              case 15:\n              case \"end\":\n                return _context4.stop();\n            }\n          }\n        }, _callee4, null, [[1, 8, 12, 15]]);\n      }))();\n    },\n    prevPage: function prevPage() {\n      var _this6 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {\n        return _regenerator.default.wrap(function _callee5$(_context5) {\n          while (1) {\n            switch (_context5.prev = _context5.next) {\n              case 0:\n                if (!(_this6.pageIndex > 1)) {\n                  _context5.next = 4;\n                  break;\n                }\n                _this6.pageIndex--;\n                _context5.next = 4;\n                return _this6.fetchTools(_this6.searchKey);\n              case 4:\n              case \"end\":\n                return _context5.stop();\n            }\n          }\n        }, _callee5);\n      }))();\n    },\n    nextPage: function nextPage() {\n      var _this7 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {\n        return _regenerator.default.wrap(function _callee6$(_context6) {\n          while (1) {\n            switch (_context6.prev = _context6.next) {\n              case 0:\n                if (!(_this7.pageIndex < _this7.totalPages)) {\n                  _context6.next = 4;\n                  break;\n                }\n                _this7.pageIndex++;\n                _context6.next = 4;\n                return _this7.fetchTools(_this7.searchKey);\n              case 4:\n              case \"end\":\n                return _context6.stop();\n            }\n          }\n        }, _callee6);\n      }))();\n    },\n    onSearchKeyInput: function onSearchKeyInput() {\n      var _this8 = this;\n      clearTimeout(this._searchTimer);\n      this._searchTimer = setTimeout(function () {\n        _this8.searchTool();\n      }, 300);\n    },\n    searchTool: function searchTool() {\n      var _this9 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {\n        return _regenerator.default.wrap(function _callee7$(_context7) {\n          while (1) {\n            switch (_context7.prev = _context7.next) {\n              case 0:\n                _this9.pageIndex = 1;\n                _context7.next = 3;\n                return _this9.fetchTools(_this9.searchKey);\n              case 3:\n              case \"end\":\n                return _context7.stop();\n            }\n          }\n        }, _callee7);\n      }))();\n    },\n    selectTool: function selectTool(tool) {\n      this.selectedToolNo = tool.no;\n      this.toolName = tool.name;\n      this.toolModel = tool.model;\n      this.activeToolNo = tool.no;\n      // 鏂板锛氬甫鍑哄鍛芥瘮棰勮鍊糪n      if (tool.lifeWarn !== undefined && tool.lifeWarn !== null) {\n        // 鏍煎紡鍖栦负鐧惧垎姣斿瓧绗︿覆\n        var warn = Number(tool.lifeWarn);\n        this.lifeWarnInput = warn <= 1 ? (warn * 100).toFixed(0) : warn.toFixed(0);\n      } else {\n        this.lifeWarnInput = '';\n      }\n    },\n    confirmTool: function confirmTool() {\n      this.showToolDialog = false;\n    },\n    setUseLimit: function setUseLimit() {\n      var _this10 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8() {\n        var v;\n        return _regenerator.default.wrap(function _callee8$(_context8) {\n          while (1) {\n            switch (_context8.prev = _context8.next) {\n              case 0:\n                if (_this10.selectedToolNo) {\n                  _context8.next = 3;\n                  break;\n                }\n                _this10.$showMessage('璇烽�夋嫨鍒�鍏峰悗鍐嶈缃笂闄�');\n                return _context8.abrupt(\"return\");\n              case 3:\n                v = Number(_this10.useLimitInput);\n                if (!(isNaN(v) || v <= 0)) {\n                  _context8.next = 7;\n                  break;\n                }\n                _this10.$showMessage('璇疯緭鍏ユ湁鏁堢殑浣跨敤涓婇檺');\n                return _context8.abrupt(\"return\");\n              case 7:\n                _this10.toolRecords = _this10.toolRecords.map(function (r) {\n                  if (r.no === _this10.selectedToolNo) {\n                    return _objectSpread(_objectSpread({}, r), {}, {\n                      useLimit: v\n                    });\n                  }\n                  return r;\n                });\n                _this10.toolList = _this10.toolList.map(function (t) {\n                  return t.no === _this10.selectedToolNo ? _objectSpread(_objectSpread({}, t), {}, {\n                    useLimit: v\n                  }) : t;\n                });\n                _this10.$showMessage('浣跨敤涓婇檺宸茶缃紙浠呭墠绔樉绀猴級');\n              case 10:\n              case \"end\":\n                return _context8.stop();\n            }\n          }\n        }, _callee8);\n      }))();\n    },\n    // 涓婂垁鏃朵紶閫� sdjs = 宸ュ崟 currentCjNum\n    handleUpTool: function handleUpTool() {\n      var _this11 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9() {\n        var useLimit, sdjs, lifeWarnRatio, payload, res;\n        return _regenerator.default.wrap(function _callee9$(_context9) {\n          while (1) {\n            switch (_context9.prev = _context9.next) {\n              case 0:\n                if (_this11.workOrderNo) {\n                  _context9.next = 3;\n                  break;\n                }\n                _this11.$showMessage('宸ュ崟鍙蜂笉鑳戒负绌�');\n                return _context9.abrupt(\"return\");\n              case 3:\n                if (_this11.machineNo) {\n                  _context9.next = 6;\n                  break;\n                }\n                _this11.$showMessage('鏈哄彴鍙蜂笉鑳戒负绌�');\n                return _context9.abrupt(\"return\");\n              case 6:\n                if (_this11.selectedToolNo) {\n                  _context9.next = 9;\n                  break;\n                }\n                _this11.$showMessage('鍒�鍏风紪鍙蜂笉鑳戒负绌�');\n                return _context9.abrupt(\"return\");\n              case 9:\n                if (_this11.useLimitInput) {\n                  _context9.next = 12;\n                  break;\n                }\n                _this11.$showMessage('浣跨敤涓婇檺涓嶈兘涓虹┖');\n                return _context9.abrupt(\"return\");\n              case 12:\n                useLimit = Number(_this11.useLimitInput);\n                if (!(isNaN(useLimit) || useLimit <= 0)) {\n                  _context9.next = 16;\n                  break;\n                }\n                _this11.$showMessage('璇疯緭鍏ユ湁鏁堢殑浣跨敤涓婇檺');\n                return _context9.abrupt(\"return\");\n              case 16:\n                // sdjs 浣跨敤宸ュ崟 currentCjNum\n                sdjs = _this11.workOrderCurrentCjNum != null ? Number(_this11.workOrderCurrentCjNum) : null;\n                lifeWarnRatio = _this11.normalizeLifeWarn(_this11.lifeWarnInput);\n                payload = {\n                  workOrderNo: _this11.workOrderNo,\n                  machineNo: _this11.machineNo,\n                  toolNo: _this11.selectedToolNo,\n                  type: '涓婃満',\n                  useLimit: useLimit,\n                  sdjs: sdjs,\n                  // 涓婂垁璁℃暟锛堝伐鍗曞綋鍓嶆暟閲囷級\n                  modlLifeWorning: lifeWarnRatio // 鏂板\n                };\n                _context9.prev = 19;\n                _this11.submitting = true;\n                _context9.next = 23;\n                return _this11.$post({\n                  url: '/MesCutterLedger/SubmitToolAction',\n                  data: JSON.stringify(payload),\n                  headers: {\n                    'Content-Type': 'application/json'\n                  }\n                });\n              case 23:\n                res = _context9.sent;\n                if (!(res.data && res.data.outSum === \"0\")) {\n                  _context9.next = 29;\n                  break;\n                }\n                uni.showToast({\n                  title: res.data.outMsg || '',\n                  icon: 'error'\n                });\n                return _context9.abrupt(\"return\");\n              case 29:\n                if (res.data && res.data.outMsg) {\n                  uni.showToast({\n                    title: res.data.outMsg,\n                    icon: 'none'\n                  });\n                }\n              case 30:\n                if (!(res.status === 0)) {\n                  _context9.next = 33;\n                  break;\n                }\n                _context9.next = 33;\n                return _this11.fetchFormData();\n              case 33:\n                _context9.next = 40;\n                break;\n              case 35:\n                _context9.prev = 35;\n                _context9.t0 = _context9[\"catch\"](19);\n                __f__(\"error\", _context9.t0, \" at components/mold.vue:566\");\n                _this11.$showMessage('涓婂垁鎻愪氦澶辫触锛岃妫�鏌ョ綉缁�');\n                throw _context9.t0;\n              case 40:\n                _context9.prev = 40;\n                _this11.submitting = false;\n                return _context9.finish(40);\n              case 43:\n              case \"end\":\n                return _context9.stop();\n            }\n          }\n        }, _callee9, null, [[19, 35, 40, 43]]);\n      }))();\n    },\n    // 涓嬪垁鏃朵紶閫� xdjs = 宸ュ崟 currentCjNum\n    handleDownTool: function handleDownTool() {\n      var _this12 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10() {\n        var useLimit, xdjs, lifeWarnRatio, payload, res;\n        return _regenerator.default.wrap(function _callee10$(_context10) {\n          while (1) {\n            switch (_context10.prev = _context10.next) {\n              case 0:\n                if (_this12.workOrderNo) {\n                  _context10.next = 3;\n                  break;\n                }\n                _this12.$showMessage('宸ュ崟鍙蜂笉鑳戒负绌�');\n                return _context10.abrupt(\"return\");\n              case 3:\n                if (_this12.machineNo) {\n                  _context10.next = 6;\n                  break;\n                }\n                _this12.$showMessage('鏈哄彴鍙蜂笉鑳戒负绌�');\n                return _context10.abrupt(\"return\");\n              case 6:\n                if (_this12.selectedToolNo) {\n                  _context10.next = 9;\n                  break;\n                }\n                _this12.$showMessage('鍒�鍏风紪鍙蜂笉鑳戒负绌�');\n                return _context10.abrupt(\"return\");\n              case 9:\n                //涓嬪垁涓嶅己鍒跺綍鍏ヤ娇鐢ㄤ笂闄怽n                //if (!this.useLimitInput) { this.$showMessage('浣跨敤涓婇檺涓嶈兘涓虹┖'); return; }\n                useLimit = Number(_this12.useLimitInput); //if (isNaN(useLimit) || useLimit <= 0) { this.$showMessage('璇疯緭鍏ユ湁鏁堢殑浣跨敤涓婇檺'); return; }\n                // 涓嬪垁璁℃暟鍚屾牱鍙栧伐鍗曟渶鏂伴噰闆嗘暟\n                xdjs = _this12.workOrderCurrentCjNum != null ? Number(_this12.workOrderCurrentCjNum) : null;\n                lifeWarnRatio = _this12.normalizeLifeWarn(_this12.lifeWarnInput);\n                payload = {\n                  workOrderNo: _this12.workOrderNo,\n                  machineNo: _this12.machineNo,\n                  toolNo: _this12.selectedToolNo,\n                  type: '涓嬫満',\n                  useLimit: useLimit,\n                  xdjs: xdjs,\n                  // 涓嬪垁璁℃暟\n                  modlLifeWorning: lifeWarnRatio // 鏂板\n                };\n                _context10.prev = 13;\n                _this12.submitting = true;\n                _context10.next = 17;\n                return _this12.$post({\n                  url: '/MesCutterLedger/SubmitToolAction',\n                  data: JSON.stringify(payload),\n                  headers: {\n                    'Content-Type': 'application/json'\n                  }\n                });\n              case 17:\n                res = _context10.sent;\n                if (!(res.data && res.data.outSum === \"0\")) {\n                  _context10.next = 23;\n                  break;\n                }\n                uni.showToast({\n                  title: res.data.outMsg || '',\n                  icon: 'error'\n                });\n                return _context10.abrupt(\"return\");\n              case 23:\n                if (res.data && res.data.outMsg) {\n                  uni.showToast({\n                    title: res.data.outMsg,\n                    icon: 'none'\n                  });\n                }\n              case 24:\n                if (!(res.status === 0)) {\n                  _context10.next = 27;\n                  break;\n                }\n                _context10.next = 27;\n                return _this12.fetchFormData();\n              case 27:\n                _context10.next = 34;\n                break;\n              case 29:\n                _context10.prev = 29;\n                _context10.t0 = _context10[\"catch\"](13);\n                __f__(\"error\", _context10.t0, \" at components/mold.vue:619\");\n                _this12.$showMessage('涓嬪垁鎻愪氦澶辫触锛岃妫�鏌ョ綉缁�');\n                throw _context10.t0;\n              case 34:\n                _context10.prev = 34;\n                _this12.submitting = false;\n                return _context10.finish(34);\n              case 37:\n              case \"end\":\n                return _context10.stop();\n            }\n          }\n        }, _callee10, null, [[13, 29, 34, 37]]);\n      }))();\n    },\n    cancel: function cancel() {\n      this.selectedToolNo = '';\n      this.toolName = '';\n      this.toolModel = '';\n      this.useLimitInput = '';\n      this.lifeWarnInput = ''; // 鏂板锛氭竻绌篭n      this.isDirty = false;\n    },\n    fetchFormData: function fetchFormData() {\n      var _this13 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11() {\n        var payload, _ref5, _ref6, _ref7, _res$data$total2, _res$data4, _res$data5, res, list, getField, mapped, totalFromRes;\n        return _regenerator.default.wrap(function _callee11$(_context11) {\n          while (1) {\n            switch (_context11.prev = _context11.next) {\n              case 0:\n                if (!(!_this13.workOrderNo || !_this13.machineNo)) {\n                  _context11.next = 3;\n                  break;\n                }\n                __f__(\"warn\", '宸ュ崟鍙锋垨鏈哄彴鍙蜂负绌猴紝璺宠繃鑾峰彇琛ㄥ崟鏁版嵁', \" at components/mold.vue:636\");\n                return _context11.abrupt(\"return\");\n              case 3:\n                _this13.loadingForm = true;\n                payload = {\n                  workOrderNo: _this13.workOrderNo.trim(),\n                  machineNo: _this13.machineNo.trim()\n                };\n                _context11.prev = 5;\n                _context11.next = 8;\n                return _this13.$post({\n                  url: '/MesCutterLedger/GetFormData',\n                  data: JSON.stringify(payload),\n                  headers: {\n                    'Content-Type': 'application/json'\n                  }\n                });\n              case 8:\n                res = _context11.sent;\n                if (!(res.status !== 0)) {\n                  _context11.next = 13;\n                  break;\n                }\n                _this13.$showMessage(res.message || '鑾峰彇琛ㄥ崟鏁版嵁澶辫触');\n                _this13.toolRecords = [];\n                return _context11.abrupt(\"return\");\n              case 13:\n                list = Array.isArray(res.data) ? res.data : res.data && res.data.tbBillList ? res.data.tbBillList : res.data && res.data.data ? res.data.data : [];\n                getField = function getField(obj) {\n                  for (var _len2 = arguments.length, keys = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n                    keys[_key2 - 1] = arguments[_key2];\n                  }\n                  for (var _i2 = 0, _keys2 = keys; _i2 < _keys2.length; _i2++) {\n                    var k = _keys2[_i2];\n                    if ((obj === null || obj === void 0 ? void 0 : obj[k]) !== undefined && (obj === null || obj === void 0 ? void 0 : obj[k]) !== null) return obj[k];\n                  }\n                  return null;\n                };\n                mapped = (list || []).map(function (t) {\n                  var _getField, _getField2;\n                  var upTimeRaw = getField(t, 'uP_TIME', 'UP_TIME', 'uPTime', 'UPTIME', 'UpTime');\n                  var downTimeRaw = getField(t, 'dowN_TIME', 'DOWN_TIME', 'downTime', 'DOWNTIME');\n                  var lifeWarnRaw = getField(t, 'lifE_WARN', 'LIFE_WARN', 'lifeWarn', 'LIFEWARN');\n                  var currentCjNum = getField(t, 'currentCjNum', 'CURRENTCJNUM', 'CurrentCjNum');\n                  var useCount = getField(t, 'usE_COUNT', 'USE_COUNT', 'useCount');\n                  var useLimit = getField(t, 'usE_LIMIT', 'USE_LIMIT', 'useLimit');\n                  var percent = '';\n                  if (useCount != null && useLimit != null && !isNaN(useCount) && !isNaN(useLimit) && Number(useLimit) > 0) {\n                    percent = (Number(useCount) / Number(useLimit) * 100).toFixed(0) + '%';\n                  }\n                  var parseNumber = function parseNumber(v) {\n                    if (v === null || v === undefined || v === '') return null;\n                    var s = String(v).replace(/[,锛�%]/g, '').trim();\n                    var n = parseFloat(s);\n                    return Number.isFinite(n) ? n : null;\n                  };\n                  var formatPercent = function formatPercent(n) {\n                    if (n === null || n === undefined || isNaN(n)) return '';\n                    if (n <= 1) return \"\".concat((n * 100).toFixed(0), \"%\");\n                    return \"\".concat(Number(n).toFixed(0), \"%\");\n                  };\n                  var lifeWarnNum = parseNumber(lifeWarnRaw);\n                  var warnStatus = getField(t, 'status', 'STATUS') || '';\n                  if (lifeWarnNum !== null && useCount != null && useLimit != null && !isNaN(useCount) && !isNaN(useLimit) && Number(useLimit) > 0) {\n                    var percentNum = Number(useCount) / Number(useLimit);\n                    warnStatus = percentNum >= lifeWarnNum ? '棰勮' : '姝e父';\n                  } else {\n                    warnStatus = warnStatus || '鏈煡';\n                  }\n                  return {\n                    id: getField(t, 'id', 'ID') || \"\".concat(getField(t, 'cutteR_ID') || getField(t, 'CUTTER_ID') || '', \"-\").concat(upTimeRaw || ''),\n                    no: getField(t, 'cutteR_ID', 'CUTTER_ID', 'cutterId', 'no') || '',\n                    name: getField(t, 'cutteR_NAME', 'CUTTER_NAME', 'cutterName', 'name') || '',\n                    upTime: _this13.formatDateTime(upTimeRaw),\n                    upCount: (_getField = getField(t, 'uP_COUNT', 'UP_COUNT', 'upCount')) !== null && _getField !== void 0 ? _getField : '',\n                    downTime: _this13.formatDateTime(downTimeRaw),\n                    downCount: (_getField2 = getField(t, 'dowN_COUNT', 'DOWN_COUNT', 'downCount')) !== null && _getField2 !== void 0 ? _getField2 : '',\n                    useCount: useCount !== null && useCount !== void 0 ? useCount : '',\n                    useLimit: useLimit !== null && useLimit !== void 0 ? useLimit : '',\n                    lifePercent: percent,\n                    lifeWarn: formatPercent(lifeWarnNum),\n                    warnStatus: warnStatus,\n                    currentCjNum: currentCjNum\n                  };\n                }); // 鏂板锛氭寜涓婂垁鏃堕棿闄嶅簭鎺掑簭锛堣秺鏅氱殑瓒婁笂闈級\n                mapped.sort(function (a, b) {\n                  // 鏃堕棿鏍煎紡濡� \"10-24 16:03\"锛岃浆涓� Date 瀵硅薄姣旇緝\n                  var parse = function parse(s) {\n                    if (!s) return 0;\n                    // 琛ュ勾浠斤紝鍋囪閮芥槸浠婂勾\n                    var year = new Date().getFullYear();\n                    return new Date(\"\".concat(year, \"-\").concat(s.replace(/-/g, '-'), \":00\")).getTime();\n                  };\n                  return parse(b.upTime) - parse(a.upTime); // 娉ㄦ剰杩欓噷椤哄簭鍙嶈繃鏉n                });\n\n                _this13.toolRecords = mapped;\n                totalFromRes = Number((_ref5 = (_ref6 = (_ref7 = (_res$data$total2 = (_res$data4 = res.data) === null || _res$data4 === void 0 ? void 0 : _res$data4.total) !== null && _res$data$total2 !== void 0 ? _res$data$total2 : (_res$data5 = res.data) === null || _res$data5 === void 0 ? void 0 : _res$data5.totalCount) !== null && _ref7 !== void 0 ? _ref7 : res.total) !== null && _ref6 !== void 0 ? _ref6 : res.totalCount) !== null && _ref5 !== void 0 ? _ref5 : mapped.length);\n                _this13.total = Number.isFinite(totalFromRes) ? totalFromRes : mapped.length;\n                _context11.next = 27;\n                break;\n              case 22:\n                _context11.prev = 22;\n                _context11.t0 = _context11[\"catch\"](5);\n                __f__(\"error\", '鑾峰彇琛ㄥ崟鏁版嵁閿欒:', _context11.t0, \" at components/mold.vue:735\");\n                _this13.$showMessage('鑾峰彇鏁版嵁澶辫触锛岃妫�鏌ョ綉缁滆繛鎺�');\n                _this13.toolRecords = [];\n              case 27:\n                _context11.prev = 27;\n                _this13.loadingForm = false;\n                return _context11.finish(27);\n              case 30:\n              case \"end\":\n                return _context11.stop();\n            }\n          }\n        }, _callee11, null, [[5, 22, 27, 30]]);\n      }))();\n    },\n    // 鑷姩甯﹀嚭宸ュ崟鍒�鍏蜂俊鎭紝骞惰幏鍙栧伐鍗曟渶鏂伴噰闆嗘暟\n    fetchDefaultToolFromWorkOrder: function fetchDefaultToolFromWorkOrder() {\n      var _this14 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12() {\n        var _res$data6, res, _ref8, _order$CurrentCjNum, order, warn;\n        return _regenerator.default.wrap(function _callee12$(_context12) {\n          while (1) {\n            switch (_context12.prev = _context12.next) {\n              case 0:\n                if (_this14.machineNo) {\n                  _context12.next = 2;\n                  break;\n                }\n                return _context12.abrupt(\"return\");\n              case 2:\n                _context12.prev = 2;\n                _context12.next = 5;\n                return _this14.$post({\n                  url: '/Womdaa/GetWomdaasByShow',\n                  data: JSON.stringify({\n                    machineNo: _this14.machineNo\n                  }),\n                  headers: {\n                    'Content-Type': 'application/json'\n                  }\n                });\n              case 5:\n                res = _context12.sent;\n                if (res.status === 0 && Array.isArray((_res$data6 = res.data) === null || _res$data6 === void 0 ? void 0 : _res$data6.tbBillList) && res.data.tbBillList.length > 0) {\n                  order = res.data.tbBillList[0]; // 鏂板锛氫繚瀛樺伐鍗曟暟鎹紝鐢ㄤ簬鎶ヨ瘯浜ф暟\n                  _this14.order = order;\n                  _this14.orderId = order.id || order.ID || order.orderId || null;\n                  _this14.selectedToolNo = order.cutterId || order.cutteR_ID || '';\n                  _this14.toolName = order.cutterName || order.cutteR_NAME || '';\n                  _this14.toolModel = order.cutterModel || order.cutteR_MODEL || '';\n                  // 鍏抽敭锛氳幏鍙栧伐鍗曟渶鏂伴噰闆嗘暟\n                  _this14.workOrderCurrentCjNum = (_ref8 = (_order$CurrentCjNum = order.CurrentCjNum) !== null && _order$CurrentCjNum !== void 0 ? _order$CurrentCjNum : order.currentCjNum) !== null && _ref8 !== void 0 ? _ref8 : null;\n                  // 鏂板锛氳嚜鍔ㄥ~鍏呭鍛芥瘮棰勮鍊糪n                  if (order.modlLifeWorning !== undefined && order.modlLifeWorning !== null) {\n                    warn = Number(order.modlLifeWorning);\n                    _this14.lifeWarnInput = warn <= 1 ? (warn * 100).toFixed(0) : warn.toFixed(0);\n                  } else {\n                    _this14.lifeWarnInput = '';\n                  }\n                } else {\n                  _this14.workOrderCurrentCjNum = null;\n                  _this14.order = {};\n                  _this14.orderId = null;\n                }\n                _context12.next = 15;\n                break;\n              case 9:\n                _context12.prev = 9;\n                _context12.t0 = _context12[\"catch\"](2);\n                __f__(\"warn\", '鑷姩甯﹀嚭宸ュ崟鍒�鍏峰け璐�', _context12.t0, \" at components/mold.vue:776\");\n                _this14.workOrderCurrentCjNum = null;\n                _this14.order = {};\n                _this14.orderId = null;\n              case 15:\n              case \"end\":\n                return _context12.stop();\n            }\n          }\n        }, _callee12, null, [[2, 9]]);\n      }))();\n    },\n    formatDateTime: function formatDateTime(dateTimeStr) {\n      if (!dateTimeStr) return '';\n      try {\n        var s = String(dateTimeStr).trim();\n        if (/^\\d{10}$/.test(s)) {\n          var d = new Date(Number(s) * 1000);\n          return \"\".concat(d.getMonth() + 1, \"-\").concat(d.getDate(), \" \").concat(d.getHours(), \":\").concat(String(d.getMinutes()).padStart(2, '0'));\n        }\n        if (/^\\d{13}$/.test(s)) {\n          var _d = new Date(Number(s));\n          return \"\".concat(_d.getMonth() + 1, \"-\").concat(_d.getDate(), \" \").concat(_d.getHours(), \":\").concat(String(_d.getMinutes()).padStart(2, '0'));\n        }\n        var date = new Date(dateTimeStr);\n        if (!isNaN(date.getTime())) {\n          return \"\".concat(date.getMonth() + 1, \"-\").concat(date.getDate(), \" \").concat(date.getHours(), \":\").concat(String(date.getMinutes()).padStart(2, '0'));\n        }\n        var match = String(dateTimeStr).match(/(\\d{1,4}[-\\/]\\d{1,2}[-\\/]\\d{1,2}).*?(\\d{1,2}:\\d{2})/);\n        if (match) return \"\".concat(match[1].replace(/-/g, '/').replace(/^\\d{4}\\//, function (m) {\n          return m;\n        }), \" \").concat(match[2]);\n        return String(dateTimeStr);\n      } catch (_unused) {\n        return String(dateTimeStr);\n      }\n    },\n    // 鏂板锛氶�夋嫨璋冩満甯堝倕\n    selectTiaojiUser: function selectTiaojiUser(u) {\n      this.tiaojiStaffNo = u;\n      this.isTiaojiUserSelectShow = false;\n      this.tiaojiUserSearch = '';\n    },\n    // 鏂板锛氶�佹鍛煎彨 + 鎶ヨ瘯浜ф暟\n    handleInspectionCall: function handleInspectionCall() {\n      var _this15 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13() {\n        var _this15$order;\n        var okQty, badQty, staffNo, currentCjNum, payload, res;\n        return _regenerator.default.wrap(function _callee13$(_context13) {\n          while (1) {\n            switch (_context13.prev = _context13.next) {\n              case 0:\n                if (_this15.tiaojiStaffNo) {\n                  _context13.next = 3;\n                  break;\n                }\n                _this15.$showMessage('璇烽�夋嫨璋冩満甯堝倕');\n                return _context13.abrupt(\"return\");\n              case 3:\n                okQty = Number(_this15.tiaojiOkQty);\n                badQty = Number(_this15.tiaojiBadQty);\n                if (!(isNaN(okQty) || okQty < 0)) {\n                  _context13.next = 8;\n                  break;\n                }\n                _this15.$showMessage('璇疯緭鍏ユ湁鏁堢殑璋冩満鑹搧鏁�');\n                return _context13.abrupt(\"return\");\n              case 8:\n                if (!(isNaN(badQty) || badQty < 0)) {\n                  _context13.next = 11;\n                  break;\n                }\n                _this15.$showMessage('璇疯緭鍏ユ湁鏁堢殑璋冩満涓嶈壇鍝佹暟');\n                return _context13.abrupt(\"return\");\n              case 11:\n                staffNo = _this15.tiaojiStaffNo.split(':')[0];\n                currentCjNum = ((_this15$order = _this15.order) === null || _this15$order === void 0 ? void 0 : _this15$order.currentCjNum) || 0; // 璋冪敤鎶ヨ瘯浜ф暟鎺ュ彛(浣跨敤鎶ュ伐鐣岄潰鐨勬帴鍙�)\n                payload = {\n                  orderNo: _this15.workOrderNo,\n                  orderId: _this15.orderId,\n                  // 闇�瑕佷粠宸ュ崟鏁版嵁涓幏鍙朶n                  bf: badQty,\n                  // bf浼犻�掍笉鑹搧鏁癨n                  staffNo: staffNo,\n                  initCjNum: currentCjNum - badQty - okQty,\n                  // initCjNum = currentCjNum - bf - 鑹搧鏁癨n                  currentCjNum: currentCjNum,\n                  type: 'tiaoji',\n                  // 鏍囪瘑涓鸿皟鏈烘姤宸n                  tiaojiOkQty: okQty,\n                  // 鏂板:鑹搧鏁癨n                  tiaojiBadQty: badQty // 鏂板:涓嶈壇鍝佹暟\n                };\n                _context13.prev = 14;\n                _this15.submitting = true;\n                // 璋冪敤鎶ュ伐鐣岄潰鐨勬姤璇曚骇鏁版帴鍙n                _context13.next = 18;\n                return _this15.$post({\n                  url: '/MesInvItemBarcodes/AddBFToBarcodes',\n                  data: payload\n                });\n              case 18:\n                res = _context13.sent;\n                if (!(res.status == 1)) {\n                  _context13.next = 22;\n                  break;\n                }\n                _this15.$showMessage(res.message);\n                return _context13.abrupt(\"return\");\n              case 22:\n                _this15.$showMessage('璋冩満鎶ュ伐鎴愬姛');\n                // 娓呯┖杈撳叆\n                _this15.tiaojiOkQty = '';\n                _this15.tiaojiBadQty = '';\n                // 鍒锋柊鏁版嵁\n                _context13.next = 27;\n                return _this15.fetchFormData();\n              case 27:\n                _context13.next = 29;\n                return _this15.fetchDefaultToolFromWorkOrder();\n              case 29:\n                _context13.next = 31;\n                return _this15.autoHandleMachineInspection();\n              case 31:\n                _context13.next = 37;\n                break;\n              case 33:\n                _context13.prev = 33;\n                _context13.t0 = _context13[\"catch\"](14);\n                __f__(\"error\", '璋冩満鎶ュ伐閿欒:', _context13.t0, \" at components/mold.vue:874\");\n                _this15.$showMessage('璋冩満鎶ュ伐澶辫触锛岃妫�鏌ョ綉缁�');\n              case 37:\n                _context13.prev = 37;\n                _this15.submitting = false;\n                return _context13.finish(37);\n              case 40:\n              case \"end\":\n                return _context13.stop();\n            }\n          }\n        }, _callee13, null, [[14, 33, 37, 40]]);\n      }))();\n    },\n    // 鏂板锛氳嚜鍔ㄥ鐞嗚皟鏈洪�佹鐣岄潰鐨勬寜閽�昏緫\n    autoHandleMachineInspection: function autoHandleMachineInspection() {\n      var _this16 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee14() {\n        var statusRes, statusForm, maStartTime, maShoutTime, maEndTime, needSave, updateData, actions, saveRes, successMsg, failMsg;\n        return _regenerator.default.wrap(function _callee14$(_context14) {\n          while (1) {\n            switch (_context14.prev = _context14.next) {\n              case 0:\n                _context14.prev = 0;\n                _context14.next = 3;\n                return _this16.$post({\n                  url: '/MesOrderSta/FindByOrderNo',\n                  data: {\n                    orderId: _this16.orderId,\n                    orderNo: _this16.workOrderNo\n                  }\n                });\n              case 3:\n                statusRes = _context14.sent;\n                if (!(!statusRes || !statusRes.data || !statusRes.data.tbBillList)) {\n                  _context14.next = 8;\n                  break;\n                }\n                __f__(\"error\", '鑾峰彇宸ュ崟鐘舵�佸け璐�', \" at components/mold.vue:894\");\n                _this16.$showMessage('鑾峰彇宸ュ崟鐘舵�佸け璐�');\n                return _context14.abrupt(\"return\");\n              case 8:\n                statusForm = statusRes.data.tbBillList;\n                maStartTime = statusForm.maStartTime;\n                maShoutTime = statusForm.maShoutTime;\n                maEndTime = statusForm.maEndTime; // 2. 鍑嗗闇�瑕佹洿鏂扮殑鏃堕棿鏁版嵁\n                needSave = false;\n                updateData = {\n                  id: statusForm.id,\n                  orderId: _this16.orderId,\n                  machineNo: _this16.machineNo,\n                  flag: -1\n                }; // 璁板綍鍝簺鎿嶄綔琚墽琛屼簡\n                actions = []; // 3. 浠庝笂鍒颁笅鏍规嵁鏄剧ず妗嗛噷鏄惁鏈夋椂闂翠緷娆¤缃甛n                // 濡傛灉璋冩満寮�濮嬫椂闂翠负绌猴紝璁剧疆璋冩満寮�濮嬫椂闂碶n                if (!maStartTime) {\n                  updateData.maStartTime = _this16.$getDate('yyyy-mm-dd hh24:mi:ss');\n                  updateData.flag = -1; // 璋冩満寮�濮嬬殑flag=-1\n                  needSave = true;\n                  actions.push('璋冩満寮�濮�');\n                } else {\n                  updateData.maStartTime = maStartTime;\n                }\n\n                // 濡傛灉閫佹鍛煎彨鏃堕棿涓虹┖锛岃缃�佹鍛煎彨鏃堕棿\n                if (!maShoutTime) {\n                  updateData.maShoutTime = _this16.$getDate('yyyy-mm-dd hh24:mi:ss');\n                  updateData.flag = 1; // 棣栨閫佹鍛煎彨鐨刦lag=1\n                  needSave = true;\n                  actions.push('閫佹鍛煎彨');\n                } else {\n                  updateData.maShoutTime = maShoutTime;\n                }\n\n                // 璋冩満瀹屾垚鏃堕棿淇濇寔涓嶅彉\n                updateData.maEndTime = maEndTime || '';\n\n                // 4. 濡傛灉鏈夐渶瑕佹洿鏂扮殑鏃堕棿锛岃皟鐢ㄤ繚瀛樻帴鍙n                if (!needSave) {\n                  _context14.next = 25;\n                  break;\n                }\n                _context14.next = 21;\n                return _this16.$post({\n                  url: '/MesOrderSta/ChangeMachineTime',\n                  data: updateData\n                });\n              case 21:\n                saveRes = _context14.sent;\n                if (saveRes && saveRes.data && saveRes.data.tbBillList) {\n                  successMsg = actions.join('銆�') + '鎴愬姛';\n                  _this16.$showMessage(successMsg);\n                  __f__(\"log\", '璋冩満閫佹鐣岄潰鏃堕棿鑷姩鏇存柊鎴愬姛:', actions, \" at components/mold.vue:950\");\n                } else {\n                  failMsg = actions.join('銆�') + '澶辫触';\n                  _this16.$showMessage(failMsg);\n                  __f__(\"error\", '璋冩満閫佹鐣岄潰鏃堕棿鑷姩鏇存柊澶辫触', \" at components/mold.vue:954\");\n                }\n                _context14.next = 27;\n                break;\n              case 25:\n                // 鎵�鏈夋椂闂撮兘宸插瓨鍦紝鏃犻渶鏇存柊\n                _this16.$showMessage('璋冩満寮�濮嬪拰閫佹鍛煎彨宸插畬鎴�');\n                __f__(\"log\", '璋冩満寮�濮嬪拰閫佹鍛煎彨鏃堕棿宸插瓨鍦紝鏃犻渶鏇存柊', \" at components/mold.vue:959\");\n              case 27:\n                _context14.next = 33;\n                break;\n              case 29:\n                _context14.prev = 29;\n                _context14.t0 = _context14[\"catch\"](0);\n                __f__(\"error\", '鑷姩澶勭悊璋冩満閫佹鐣岄潰澶辫触:', _context14.t0, \" at components/mold.vue:962\");\n                _this16.$showMessage('鑷姩澶勭悊璋冩満閫佹澶辫触');\n                // 涓嶄腑鏂富娴佺▼锛屽彧璁板綍閿欒\n              case 33:\n              case \"end\":\n                return _context14.stop();\n            }\n          }\n        }, _callee14, null, [[0, 29]]);\n      }))();\n    },\n    // 鏂板锛氳幏鍙栬皟鏈哄笀鍌呭垪琛╘n    fetchTiaojiStaff: function fetchTiaojiStaff() {\n      var _this17 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15() {\n        var res, staff;\n        return _regenerator.default.wrap(function _callee15$(_context15) {\n          while (1) {\n            switch (_context15.prev = _context15.next) {\n              case 0:\n                _context15.prev = 0;\n                _context15.next = 3;\n                return _this17.$post({\n                  url: '/MesStaff/GetAllXS0101BYtj' // 涓庢姤宸ョ晫闈娇鐢ㄧ浉鍚屾帴鍙n                });\n              case 3:\n                res = _context15.sent;\n                if (res.status === 0 && res.data && res.data.tbBillList) {\n                  staff = res.data.tbBillList;\n                  _this17.tiaojiUsers = staff.map(function (s) {\n                    return s.staffNo + ':' + s.staffName;\n                  });\n                }\n                _context15.next = 10;\n                break;\n              case 7:\n                _context15.prev = 7;\n                _context15.t0 = _context15[\"catch\"](0);\n                __f__(\"error\", '鑾峰彇璋冩満甯堝倕鍒楄〃澶辫触:', _context15.t0, \" at components/mold.vue:979\");\n              case 10:\n              case \"end\":\n                return _context15.stop();\n            }\n          }\n        }, _callee15, null, [[0, 7]]);\n      }))();\n    }\n  },\n  mounted: function mounted() {\n    var _this18 = this;\n    this.fetchTools('');\n    this.machineNo = uni.getStorageSync('machineNo') || '';\n    this.workOrderNo = uni.getStorageSync('daa001') || '';\n\n    // 鏂板锛氳幏鍙栬皟鏈哄笀鍌呭垪琛╘n    this.fetchTiaojiStaff();\n    if (this.machineNo && this.workOrderNo) {\n      this.fetchFormData().then( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16() {\n        return _regenerator.default.wrap(function _callee16$(_context16) {\n          while (1) {\n            switch (_context16.prev = _context16.next) {\n              case 0:\n                _context16.next = 2;\n                return _this18.fetchDefaultToolFromWorkOrder();\n              case 2:\n                // 杩涘叆椤甸潰鏃惰祴鍊肩涓�琛� currentCjNum\n                if (_this18.toolRecords.length > 0) {\n                  _this18.$set(_this18.toolRecords[0], 'currentCjNum', _this18.workOrderCurrentCjNum);\n                }\n              case 3:\n              case \"end\":\n                return _context16.stop();\n            }\n          }\n        }, _callee16);\n      })));\n    } else {\n      __f__(\"warn\", '鏈哄彴鍙锋垨宸ュ崟鍙蜂负绌猴紝鏃犳硶鑾峰彇琛ㄥ崟鏁版嵁', \" at components/mold.vue:1000\");\n    }\n\n    // 鍚姩鑷姩淇濆瓨瀹氭椂鍣╘n    //this.startAutoSave();\n  },\n  beforeDestroy: function beforeDestroy() {\n    // 娓呯悊瀹氭椂鍣紝闃叉鍐呭瓨娉勬紡\n    this.stopAutoSave();\n  }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 1)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vY29tcG9uZW50cy9tb2xkLnZ1ZSJdLCJuYW1lcyI6WyJkYXRhIiwibWFjaGluZU5vIiwid29ya09yZGVyTm8iLCJhY3RpdmVUb29sTm8iLCJwYWdlSW5kZXgiLCJwYWdlU2l6ZSIsInRvdGFsIiwidG9vbExpc3QiLCJzZWxlY3RlZFRvb2xObyIsInRvb2xOYW1lIiwidG9vbE1vZGVsIiwic2hvd1Rvb2xEaWFsb2ciLCJzZWFyY2hLZXkiLCJmaWx0ZXJlZFRvb2xzIiwidXNlTGltaXRJbnB1dCIsImxpZmVXYXJuSW5wdXQiLCJ0b29sUmVjb3JkcyIsImxvYWRpbmdUb29scyIsImxvYWRpbmdGb3JtIiwic3VibWl0dGluZyIsIl9zZWFyY2hUaW1lciIsIndvcmtPcmRlckN1cnJlbnRDak51bSIsImF1dG9TYXZlVGltZXIiLCJpc0RpcnR5IiwiYXV0b1NhdmVJbnRlcnZhbE1zIiwiYXV0b1NhdmVFbmFibGVkIiwiYXV0b1NhdmVBY3Rpb25OYW1lIiwiaXNUaWFvamlVc2VyU2VsZWN0U2hvdyIsInRpYW9qaVN0YWZmTm8iLCJ0aWFvamlPa1F0eSIsInRpYW9qaUJhZFF0eSIsInRpYW9qaVVzZXJzIiwidGlhb2ppVXNlclNlYXJjaCIsIm9yZGVySWQiLCJvcmRlciIsImNvbXB1dGVkIiwidG90YWxQYWdlcyIsInRpYW9qaVN0YWZmRGlzcGxheSIsImZpbHRlcmVkVGlhb2ppVXNlcnMiLCJ3YXRjaCIsIm1ldGhvZHMiLCJmZXRjaEN1cnJlbnRDak51bSIsInVybCIsImhlYWRlcnMiLCJyZXMiLCJmb3VuZCIsIngiLCJoYW5kbGVSZWZyZXNoIiwic3RhcnRBdXRvU2F2ZSIsInN0b3BBdXRvU2F2ZSIsImNsZWFySW50ZXJ2YWwiLCJhdXRvU2F2ZVRpY2siLCJmbiIsIm5vcm1hbGl6ZUxpZmVXYXJuIiwib3BlblRvb2xEaWFsb2ciLCJjbG9zZVRvb2xEaWFsb2ciLCJmZXRjaFRvb2xzIiwicGF5bG9hZCIsImdldEZpZWxkIiwia2V5cyIsIm1hcHBlZCIsIm5vIiwibmFtZSIsIm1vZGVsIiwibGlmZVdhcm4iLCJ0b3RhbEZyb21SZXMiLCJwcmV2UGFnZSIsIm5leHRQYWdlIiwib25TZWFyY2hLZXlJbnB1dCIsImNsZWFyVGltZW91dCIsInNlYXJjaFRvb2wiLCJzZWxlY3RUb29sIiwiY29uZmlybVRvb2wiLCJzZXRVc2VMaW1pdCIsInYiLCJpc05hTiIsInVzZUxpbWl0IiwiaGFuZGxlVXBUb29sIiwic2RqcyIsImxpZmVXYXJuUmF0aW8iLCJ0b29sTm8iLCJ0eXBlIiwibW9kbExpZmVXb3JuaW5nIiwidW5pIiwidGl0bGUiLCJpY29uIiwiaGFuZGxlRG93blRvb2wiLCJ4ZGpzIiwiY2FuY2VsIiwiZmV0Y2hGb3JtRGF0YSIsImxpc3QiLCJwZXJjZW50Iiwid2FyblN0YXR1cyIsImlkIiwidXBUaW1lIiwidXBDb3VudCIsImRvd25UaW1lIiwiZG93bkNvdW50IiwidXNlQ291bnQiLCJsaWZlUGVyY2VudCIsImN1cnJlbnRDak51bSIsImZldGNoRGVmYXVsdFRvb2xGcm9tV29ya09yZGVyIiwid2FybiIsImZvcm1hdERhdGVUaW1lIiwic2VsZWN0VGlhb2ppVXNlciIsImhhbmRsZUluc3BlY3Rpb25DYWxsIiwib2tRdHkiLCJiYWRRdHkiLCJzdGFmZk5vIiwib3JkZXJObyIsImJmIiwiaW5pdENqTnVtIiwiYXV0b0hhbmRsZU1hY2hpbmVJbnNwZWN0aW9uIiwic3RhdHVzUmVzIiwic3RhdHVzRm9ybSIsIm1hU3RhcnRUaW1lIiwibWFTaG91dFRpbWUiLCJtYUVuZFRpbWUiLCJuZWVkU2F2ZSIsInVwZGF0ZURhdGEiLCJmbGFnIiwiYWN0aW9ucyIsInNhdmVSZXMiLCJzdWNjZXNzTXNnIiwiZmFpbE1zZyIsImZldGNoVGlhb2ppU3RhZmYiLCJzdGFmZiIsIm1vdW50ZWQiLCJiZWZvcmVEZXN0cm95Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlQXNQQTtFQUNBQTtJQUNBO01BQ0FDO01BQUE7TUFDQUM7TUFBQTtNQUNBQztNQUFBO01BQ0FDO01BQ0FDO01BQUE7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFBQTtNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUFBOztNQUVBO01BQ0FDO01BQ0FDO01BQUE7TUFDQUM7TUFBQTtNQUNBQztNQUNBQztNQUFBOztNQUVBO01BQ0FDO01BQUE7TUFDQUM7TUFBQTtNQUNBQztNQUFBO01BQ0FDO01BQUE7TUFDQUM7TUFBQTtNQUNBQztNQUFBOztNQUVBO01BQ0FDO01BQUE7TUFDQUM7SUFDQTtFQUNBOztFQUNBQztJQUNBQztNQUNBO0lBQ0E7SUFDQTtJQUNBQztNQUNBO01BQ0E7TUFDQTtJQUNBO0lBQ0E7SUFDQUM7TUFDQTtNQUNBO01BQ0E7UUFBQTtNQUFBO0lBQ0E7RUFDQTtFQUNBQztJQUNBO0lBQ0EvQjtNQUFBO0lBQUE7SUFDQU07TUFBQTtJQUFBO0lBQ0FDO01BQUE7SUFBQTtJQUNBTjtNQUFBO0lBQUE7SUFDQUM7TUFBQTtJQUFBO0VBQ0E7RUFDQThCO0lBQ0E7SUFDQUM7TUFBQTtNQUFBO1FBQUE7UUFBQTtVQUFBO1lBQUE7Y0FBQTtnQkFBQSxJQUNBO2tCQUFBO2tCQUFBO2dCQUFBO2dCQUFBO2NBQUE7Z0JBQUE7Z0JBQUE7Z0JBQUEsT0FFQTtrQkFDQUM7a0JBQ0ExQztvQkFBQUM7a0JBQUE7a0JBQ0EwQztvQkFBQTtrQkFBQTtnQkFDQTtjQUFBO2dCQUpBQztnQkFBQSxNQUtBQTtrQkFBQTtrQkFBQTtnQkFBQTtnQkFDQUM7a0JBQUEsT0FDQUM7Z0JBQUEsRUFDQTtnQkFBQSxpQ0FDQUQ7Y0FBQTtnQkFBQTtnQkFBQTtjQUFBO2dCQUFBO2dCQUFBO2dCQUdBO2NBQUE7Z0JBQUEsaUNBRUE7Y0FBQTtjQUFBO2dCQUFBO1lBQUE7VUFBQTtRQUFBO01BQUE7SUFDQTtJQUVBO0lBQ0FFO01BQUE7TUFBQTtRQUFBO1VBQUE7WUFBQTtjQUFBO2dCQUNBO2dCQUFBLE1BQ0E7a0JBQUE7a0JBQUE7Z0JBQUE7Z0JBQUE7Z0JBQUEsT0FDQTtjQUFBO2dCQUFBO2dCQUFBLE9BQ0E7Y0FBQTtnQkFDQTtnQkFDQTtrQkFDQTtnQkFDQTtjQUFBO2dCQUVBO2NBQUE7Y0FBQTtnQkFBQTtZQUFBO1VBQUE7UUFBQTtNQUFBO0lBQ0E7SUFDQTtJQUNBQztNQUFBO01BQ0E7TUFDQTtNQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0E7SUFDQUM7TUFDQTtRQUNBQztRQUNBO01BQ0E7SUFDQTtJQUNBO0lBQ0FDO01BQUE7TUFBQTtRQUFBO1FBQUE7VUFBQTtZQUFBO2NBQUE7Z0JBQUEsSUFDQTtrQkFBQTtrQkFBQTtnQkFBQTtnQkFBQTtjQUFBO2dCQUFBLElBQ0E7a0JBQUE7a0JBQUE7Z0JBQUE7Z0JBQUE7Y0FBQTtnQkFBQSxNQUNBO2tCQUFBO2tCQUFBO2dCQUFBO2dCQUFBO2NBQUE7Z0JBRUFDLDRGQUNBLG9DQUNBO2dCQUFBLElBQ0FBO2tCQUFBO2tCQUFBO2dCQUFBO2dCQUNBO2dCQUFBO2NBQUE7Z0JBQUE7Z0JBS0E7Z0JBQUE7Z0JBQUEsT0FDQUE7Y0FBQTtnQkFBQTtnQkFDQTtnQkFDQTtnQkFBQTtnQkFBQTtjQUFBO2dCQUFBO2dCQUFBO2dCQUVBO2NBQUE7Z0JBQUE7Z0JBRUE7Z0JBQUE7Y0FBQTtjQUFBO2dCQUFBO1lBQUE7VUFBQTtRQUFBO01BQUE7SUFFQTtJQUVBO0lBQ0FDO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO0lBQ0E7SUFDQUM7TUFDQTtNQUNBO01BQ0E7SUFDQTtJ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O2dCQUNBO2dCQUNBO2NBQUE7Y0FBQTtnQkFBQTtZQUFBO1VBQUE7UUFBQTtNQUFBO0lBRUE7SUFFQTtJQUNBQztNQUFBO01BQUE7UUFBQTtRQUFBO1VBQUE7WUFBQTtjQUFBO2dCQUFBO2dCQUFBO2dCQUFBLE9BRUE7a0JBQ0FuRjtnQkFDQTtjQUFBO2dCQUZBRTtnQkFHQTtrQkFDQWtGO2tCQUNBO29CQUFBO2tCQUFBO2dCQUNBO2dCQUFBO2dCQUFBO2NBQUE7Z0JBQUE7Z0JBQUE7Z0JBRUE7Y0FBQTtjQUFBO2dCQUFBO1lBQUE7VUFBQTtRQUFBO01BQUE7SUFFQTtFQUNBO0VBQ0FDO0lBQUE7SUFDQTtJQUNBO0lBQ0E7O0lBRUE7SUFDQTtJQUVBO01BQ0E7UUFBQTtVQUFBO1lBQUE7Y0FBQTtnQkFBQTtnQkFBQSxPQUNBO2NBQUE7Z0JBQ0E7Z0JBQ0E7a0JBQ0E7Z0JBQ0E7Y0FBQTtjQUFBO2dCQUFBO1lBQUE7VUFBQTtRQUFBO01BQUEsQ0FDQTtJQUNBO01BQ0E7SUFDQTs7SUFFQTtJQUNBO0VBQ0E7RUFDQUM7SUFDQTtJQUNBO0VBQ0E7QUFDQTtBQUFBLDJCIiwiZmlsZSI6IjYyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG4gICAgPHZpZXcgY2xhc3M9XCJwYWdlXCI+XHJcbiAgICAgICAgPCEtLSDliIDlhbfpgInmi6nljLogLS0+XHJcbiAgICAgICAgPHZpZXcgY2xhc3M9XCJ0b3Atc2VjdGlvbi1ncmlkXCI+XHJcbiAgICAgICAgICAgIDwhLS0g56ys5LiA6KGM77ya56e76Zmk5YiA5YW355uu5b2V5oyJ6ZKuIC0tPlxyXG4gICAgICAgICAgICA8dmlldyBjbGFzcz1cImZvcm0tcm93XCI+XHJcbiAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cImZvcm0tY2VsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj7liIDlhbfnvJblj7fvvJo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IHNtYWxsLWZvbnRcIiB2LW1vZGVsPVwic2VsZWN0ZWRUb29sTm9cIiBwbGFjZWhvbGRlcj1cIuivt+mAmui/h+WIgOWFt+ebruW9lemAieaLqVwiIGRpc2FibGVkIC8+XHJcbiAgICAgICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cImZvcm0tY2VsbCBmb3JtLWNlbGwtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgaGlnaGxpZ2h0LWxhYmVsXCI+5L2/55So5LiK6ZmQ77yaPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBzbWFsbC1mb250IGlucHV0LXVzZS1saW1pdFwiIHR5cGU9XCJudW1iZXJcIiB2LW1vZGVsPVwidXNlTGltaXRJbnB1dFwiIHBsYWNlaG9sZGVyPVwi5q+P5qyh5LiK5YiA5pe25omL5aGr5LiK6ZmQXCIgOmRpc2FibGVkPVwiIXNlbGVjdGVkVG9vbE5vIHx8IGxvYWRpbmdGb3JtXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDoxNnB4O1wiPuWvv+WRveavlOmihOitpuWAvO+8mjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZpZXcgY2xhc3M9XCJpbnB1dC13aXRoLXVuaXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXQgc21hbGwtZm9udCBpbnB1dC1saWZlLXdhcm5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cImxpZmVXYXJuSW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLlpoI5MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGlzYWJsZWQ9XCIhc2VsZWN0ZWRUb29sTm8gfHwgbG9hZGluZ0Zvcm1cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXQtdGV4dFwiPiU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92aWV3PlxyXG4gICAgICAgICAgICAgICAgPC92aWV3PlxyXG4gICAgICAgICAgICA8L3ZpZXc+XHJcblxyXG4gICAgICAgICAgICA8IS0tIOesrOS6jOihjO+8muWcqOacgOWQjua3u+WKoOWIgOWFt+ebruW9leaMiemSriAtLT5cclxuICAgICAgICAgICAgPHZpZXcgY2xhc3M9XCJmb3JtLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSDliIDlhbflkI3np7AgLS0+XHJcbiAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cImZvcm0tY2VsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj7liIDlhbflkI3np7DvvJo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IHNtYWxsLWZvbnQgaW5wdXQtdG9vbC1uYW1lXCIgdi1tb2RlbD1cInRvb2xOYW1lXCIgcGxhY2Vob2xkZXI9XCLliIDlhbfluKblh7pcIiBkaXNhYmxlZCAvPlxyXG4gICAgICAgICAgICAgICAgPC92aWV3PlxyXG4gICAgICAgICAgICAgICAgPCEtLSDop4TmoLzlnovlj7cgLS0+XHJcbiAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cImZvcm0tY2VsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj7op4TmoLzlnovlj7fvvJo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IHNtYWxsLWZvbnQgaW5wdXQtdG9vbC1tb2RlbFwiIHYtbW9kZWw9XCJ0b29sTW9kZWxcIiBwbGFjZWhvbGRlcj1cIuWIgOWFt+W4puWHulwiIGRpc2FibGVkIC8+XHJcbiAgICAgICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgICAgICAgICA8IS0tIOWIgOWFt+ebruW9leaMiemSruWPs+enuyAtLT5cclxuICAgICAgICAgICAgICAgIDx2aWV3IGNsYXNzPVwiZm9ybS1jZWxsIHRvb2wtZGlyLWNlbGxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLWJsdWUgbGFyZ2UtYnRuXCIgQGNsaWNrPVwib3BlblRvb2xEaWFsb2dcIiA6ZGlzYWJsZWQ9XCJsb2FkaW5nVG9vbHNcIj7liIDlhbfnm67lvZU8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvdmlldz5cclxuICAgICAgICAgICAgICAgIDwhLS0g5paw5aKe77ya5Yi35paw5oyJ6ZKuIC0tPlxyXG4gICAgICAgICAgICAgICAgPHZpZXcgY2xhc3M9XCJmb3JtLWNlbGxcIiBzdHlsZT1cImZsZXg6MCAwIGF1dG87IG1hcmdpbi1sZWZ0OjE2cHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1ibHVlIGxhcmdlLWJ0blwiIEBjbGljaz1cImhhbmRsZVJlZnJlc2hcIiA6ZGlzYWJsZWQ9XCJsb2FkaW5nRm9ybSB8fCBzdWJtaXR0aW5nXCI+5Yi35pawPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgICAgIDwvdmlldz5cclxuICAgICAgICA8L3ZpZXc+ICA8IS0tIOi/memHjOmXreWQiCB0b3Atc2VjdGlvbi1ncmlkIC0tPlxyXG4gICAgICAgIDwhLS0g5pON5L2c5oyJ6ZKuIC0g56e75Ye6IHRvcC1zZWN0aW9uLWdyaWQgLS0+XHJcbiAgICAgICAgPHZpZXcgY2xhc3M9XCJidXR0b24tcm93XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzYXZlLWJ0blwiIEBjbGljaz1cImhhbmRsZVVwVG9vbFwiIDpkaXNhYmxlZD1cInN1Ym1pdHRpbmcgfHwgbG9hZGluZ0Zvcm1cIj7kuIrliIDmj5DkuqQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNhdmUtYnRuXCIgQGNsaWNrPVwiaGFuZGxlRG93blRvb2xcIiA6ZGlzYWJsZWQ9XCJzdWJtaXR0aW5nIHx8IGxvYWRpbmdGb3JtXCI+5LiL5YiA5o+Q5LqkPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjYW5jZWwtYnRuXCIgQGNsaWNrPVwiY2FuY2VsXCIgOmRpc2FibGVkPVwic3VibWl0dGluZyB8fCBsb2FkaW5nRm9ybVwiPua4heepuuWIgOWFt+mAieaLqTwvYnV0dG9uPlxyXG4gICAgICAgIDwvdmlldz5cclxuXHJcbiAgICAgICAgPCEtLSDmlrDlop7vvJrosIPmnLrmlbDmja7ovpPlhaXljLrln58gLS0+XHJcbiAgICAgICAgPHZpZXcgY2xhc3M9XCJ0aWFvamktc2VjdGlvblwiPlxyXG4gICAgICAgICAgICA8dmlldyBjbGFzcz1cInRpYW9qaS1yb3dcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0g5b2T5YmN6LCD5py65biI5YKFIC0tPlxyXG4gICAgICAgICAgICAgICAgPHZpZXcgY2xhc3M9XCJjdXJyZW50LXVzZXItc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZXh0PuW9k+WJjeiwg+acuuW4iOWChe+8mjwvdGV4dD5cclxuICAgICAgICAgICAgICAgICAgICA8dGV4dCBjbGFzcz1cImN1cnJlbnQtdXNlci1uYW1lXCI+e3sgdGlhb2ppU3RhZmZEaXNwbGF5IHx8ICfmnKrpgInmi6knIH19PC90ZXh0PlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzZWxlY3QtdXNlci1idG5cIiBAY2xpY2s9XCJpc1RpYW9qaVVzZXJTZWxlY3RTaG93ID0gdHJ1ZVwiPumAieS6ujwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC92aWV3PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0g6LCD5py66Imv5ZOB5pWwIC0tPlxyXG4gICAgICAgICAgICAgICAgPHZpZXcgY2xhc3M9XCJ0aWFvamktaW5wdXQtc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZXh0Puiwg+acuuiJr+WTgeaVsO+8mjwvdGV4dD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdi1tb2RlbD1cInRpYW9qaU9rUXR5XCIgY2xhc3M9XCJpbnAgdGlhb2ppLWlucHV0XCIgdHlwZT1cIm51bWJlclwiIHBsYWNlaG9sZGVyPVwi6K+36L6T5YWl5pWw6YePXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvdmlldz5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIOiwg+acuuS4jeiJr+WTgeaVsCAtLT5cclxuICAgICAgICAgICAgICAgIDx2aWV3IGNsYXNzPVwidGlhb2ppLWlucHV0LXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGV4dD7osIPmnLrkuI3oia/lk4HmlbDvvJo8L3RleHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHYtbW9kZWw9XCJ0aWFvamlCYWRRdHlcIiBjbGFzcz1cImlucCB0aWFvamktaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgcGxhY2Vob2xkZXI9XCLor7fovpPlhaXmlbDph49cIiAvPlxyXG4gICAgICAgICAgICAgICAgPC92aWV3PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0g6YCB5qOA5ZG85Y+r5oyJ6ZKuIC0tPlxyXG4gICAgICAgICAgICAgICAgPHZpZXcgY2xhc3M9XCJ0aWFvamktc3VibWl0LXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZGV0YWlscy1idG5cIiBAY2xpY2s9XCJoYW5kbGVJbnNwZWN0aW9uQ2FsbFwiPumAgeajgOWRvOWPqzwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC92aWV3PlxyXG4gICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgPC92aWV3PlxyXG5cclxuICAgICAgICA8IS0tIOmAieaLqeiwg+acuuW4iOWCheW8ueeqlyAtLT5cclxuICAgICAgICA8dmlldyB2LWlmPVwiaXNUaWFvamlVc2VyU2VsZWN0U2hvd1wiIGNsYXNzPVwib3ZlcmxheVwiPlxyXG4gICAgICAgICAgICA8dmlldyBjbGFzcz1cInBvcHVwIHVzZXItc2VsZWN0LXBvcHVwXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIOaQnOe0ouagjyAtLT5cclxuICAgICAgICAgICAgICAgIDx2aWV3IGNsYXNzPVwidXNlci1zZWFyY2gtYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHYtbW9kZWwudHJpbT1cInRpYW9qaVVzZXJTZWFyY2hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidXNlci1zZWFyY2gtaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIui+k+WFpeW3peWPt+aIluWnk+WQjeaQnOe0olwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEBrZXlkb3duLmVudGVyLnByZXZlbnQgLz5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHYtaWY9XCJ0aWFvamlVc2VyU2VhcmNoXCIgY2xhc3M9XCJ1c2VyLXNlYXJjaC1jbGVhclwiIEBjbGljaz1cInRpYW9qaVVzZXJTZWFyY2g9JydcIj7muIXnqbo8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cInVzZXItc2VhcmNoLWluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAg5Yy56YWN77yae3sgZmlsdGVyZWRUaWFvamlVc2Vycy5sZW5ndGggfX0gLyB7eyB0aWFvamlVc2Vycy5sZW5ndGggfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cInVzZXItbGlzdC1zY3JvbGxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cImZpbHRlcmVkVGlhb2ppVXNlcnMubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx2aWV3IGNsYXNzPVwidXNlci1saXN0LWdyaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdi1mb3I9XCIodSwgaW5kZXgpIGluIGZpbHRlcmVkVGlhb2ppVXNlcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6a2V5PVwiaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbJ3VzZXItbGlzdC1idG4nLCB7J3NlbGVjdGVkJzogdT09PXRpYW9qaVN0YWZmTm99XVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz1cInNlbGVjdFRpYW9qaVVzZXIodSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVzZXItY29kZVwiPnt7IHUuc3BsaXQoJzonKVswXSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVzZXItbmFtZVwiPnt7IHUuc3BsaXQoJzonKVsxXSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8dmlldyB2LWVsc2UgY2xhc3M9XCJuby11c2VyLXJlc3VsdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICDmnKrmib7liLDljLnphY3kurrlkZhcclxuICAgICAgICAgICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cInVzZXItcG9wdXAtZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNsZWFuLWJ0biB3aWRlLWJ0blwiIEBjbGljaz1cImlzVGlhb2ppVXNlclNlbGVjdFNob3cgPSBmYWxzZVwiPuWFs+mXrTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC92aWV3PlxyXG4gICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgPC92aWV3PlxyXG5cclxuICAgICAgICA8IS0tIOWIgOWFt+ebruW9leW8ueeqlyAtLT5cclxuICAgICAgICA8dmlldyB2LWlmPVwic2hvd1Rvb2xEaWFsb2dcIiBjbGFzcz1cImRpYWxvZy1vdmVybGF5XCI+XHJcbiAgICAgICAgICAgIDx2aWV3IGNsYXNzPVwiZGlhbG9nXCI+XHJcbiAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdi1tb2RlbD1cInNlYXJjaEtleVwiIHBsYWNlaG9sZGVyPVwi6L6T5YWl5YiA5YW357yW56CB44CB5ZCN56ew5qih57OK5pCc57SiXCIgY2xhc3M9XCJpbnB1dFwiIEBpbnB1dD1cIm9uU2VhcmNoS2V5SW5wdXRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tYmx1ZVwiIEBjbGljaz1cInNlYXJjaFRvb2xcIiA6ZGlzYWJsZWQ9XCJsb2FkaW5nVG9vbHNcIj7mkJzntKI8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvdmlldz5cclxuICAgICAgICAgICAgICAgIDx2aWV3IGNsYXNzPVwidG9vbC1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB2LWZvcj1cInRvb2wgaW4gZmlsdGVyZWRUb29sc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6a2V5PVwidG9vbC5ub1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRvb2wtYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cInsgYWN0aXZlOiBhY3RpdmVUb29sTm8gPT09IHRvb2wubm8gfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCJzZWxlY3RUb29sKHRvb2wpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRvb2wubm8gfX0gfCB7eyB0b29sLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvdmlldz5cclxuICAgICAgICAgICAgICAgIDx2aWV3IGNsYXNzPVwiZGlhbG9nLWFjdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1ibHVlXCIgQGNsaWNrPVwicHJldlBhZ2VcIiA6ZGlzYWJsZWQ9XCJwYWdlSW5kZXggPT09IDEgfHwgbG9hZGluZ1Rvb2xzXCI+5LiK5LiA6aG1PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luOiAwIDEycHg7XCI+56yse3sgcGFnZUluZGV4IH196aG1IC8g5YWxe3sgdG90YWxQYWdlcyB9femhtTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1ibHVlXCIgQGNsaWNrPVwibmV4dFBhZ2VcIiA6ZGlzYWJsZWQ9XCJwYWdlSW5kZXggPT09IHRvdGFsUGFnZXMgfHwgbG9hZGluZ1Rvb2xzXCI+5LiL5LiA6aG1PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGdhcDogMThweDsgYWxpZ24taXRlbXM6IGNlbnRlcjtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1ibHVlXCIgQGNsaWNrPVwiY29uZmlybVRvb2xcIj7noa7lrpo8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1kaXNhYmxlZFwiIEBjbGljaz1cImNsb3NlVG9vbERpYWxvZ1wiPuWPlua2iDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC92aWV3PlxyXG4gICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgPC92aWV3PlxyXG5cclxuICAgICAgICA8IS0tIOmakOiXj+WIgOWFt+S9v+eUqOiusOW9leihqOagvCAtLT5cclxuICAgICAgICA8dmlldyB2LWlmPVwiZmFsc2VcIiBjbGFzcz1cInRhYmxlLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwic3R5bGVkLXRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDo3JVwiPuWIgOWFt+e8luWPtzwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOjEyJVwiPuWIgOWFt+WQjeensDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOjEwJVwiPuS4iuWIgOaXtumXtDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm51bVwiIHN0eWxlPVwid2lkdGg6NyVcIj7kuIrliIDorqHmlbA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDoxMCVcIj7kuIvliIDml7bpl7Q8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJudW1cIiBzdHlsZT1cIndpZHRoOjclXCI+5LiL5YiA6K6h5pWwPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibnVtXCIgc3R5bGU9XCJ3aWR0aDo3JVwiPuS9v+eUqOasoeaVsDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm51bVwiIHN0eWxlPVwid2lkdGg6NyVcIj7kvb/nlKjkuIrpmZA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJudW1cIiBzdHlsZT1cIndpZHRoOjclXCI+5a+/5ZG95q+UJTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm51bVwiIHN0eWxlPVwid2lkdGg6NyVcIj7lr7/lkb3mr5TpooTorablgLw8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDo3JVwiPumihOitpueKtuaAgTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOjclXCI+5YiA5YW35Zyo5py654q25oCBPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICA8dHIgdi1mb3I9XCIoaXRlbSwgaWR4KSBpbiB0b29sUmVjb3Jkc1wiIDprZXk9XCJpdGVtLmlkXCIgOmNsYXNzPVwieydyb3ctb2RkJzogaWR4ICUgMiA9PT0gMH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGl0ZW0ubm8gfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJsZWZ0XCI+e3sgaXRlbS5uYW1lIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGl0ZW0udXBUaW1lIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibnVtXCI+e3sgaXRlbS51cENvdW50ICE9IG51bGwgPyBpdGVtLnVwQ291bnQgOiAnJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBpdGVtLmRvd25UaW1lIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSDlj6rmnInnrKzkuIDooYzmmL7npLogY3VycmVudENqTnVt77yM5YW25a6D6KGM5pi+56S6IGRvd25Db3VudCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibnVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cImlkeCA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0g56ys5LiA6KGM77ya5LiL5py65pe25LiN5a6e5pe25pi+56S6IGN1cnJlbnRDak51be+8jOaYvuekuiBkb3duQ291bnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtaWY9XCIhaXRlbS5kb3duVGltZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmN1cnJlbnRDak51bSAhPSBudWxsID8gaXRlbS5jdXJyZW50Q2pOdW0gOiAnJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtZWxzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5kb3duQ291bnQgIT0gbnVsbCA/IGl0ZW0uZG93bkNvdW50IDogJycgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWVsc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5kb3duQ291bnQgIT0gbnVsbCA/IGl0ZW0uZG93bkNvdW50IDogJycgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS3kvb/nlKjmrKHmlbAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibnVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cImlkeCA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0g56ys5LiA6KGM5a6e5pe26K6h566X5L2/55So5qyh5pWw77yM6Iul5Li65LiL5py65YiZ5LiN5a6e5pe25pi+56S6IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwiIWl0ZW0uZG93blRpbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtLmN1cnJlbnRDak51bSAhPSBudWxsICYmIGl0ZW0udXBDb3VudCAhPSBudWxsID8gKE51bWJlcihpdGVtLmN1cnJlbnRDak51bSkgLSBOdW1iZXIoaXRlbS51cENvdW50KSkgOiAoaXRlbS51c2VDb3VudCAhPSBudWxsID8gaXRlbS51c2VDb3VudCA6ICcnKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtZWxzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS51c2VDb3VudCAhPSBudWxsID8gaXRlbS51c2VDb3VudCA6ICcnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1lbHNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udXNlQ291bnQgIT0gbnVsbCA/IGl0ZW0udXNlQ291bnQgOiAnJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibnVtXCI+e3sgaXRlbS51c2VMaW1pdCAhPSBudWxsID8gaXRlbS51c2VMaW1pdCA6ICcnIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLeWvv+WRveavlCUtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibnVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cImlkeCA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0g56ys5LiA6KGM5a6e5pe26K6h566X5a+/5ZG95q+UJe+8jOiLpeS4uuS4i+acuuWImeS4jeWunuaXtuaYvuekuiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cIiFpdGVtLmRvd25UaW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbS5jdXJyZW50Q2pOdW0gIT0gbnVsbCAmJiBpdGVtLnVwQ291bnQgIT0gbnVsbCAmJiBpdGVtLnVzZUxpbWl0ICE9IG51bGwgJiYgTnVtYmVyKGl0ZW0udXNlTGltaXQpID4gMCA/IE1hdGgucm91bmQoKE51bWJlcihpdGVtLmN1cnJlbnRDak51bSkgLSBOdW1iZXIoaXRlbS51cENvdW50KSkgLyBOdW1iZXIoaXRlbS51c2VMaW1pdCkgKiAxMDApICsgJyUnIDogKGl0ZW0ubGlmZVBlcmNlbnQgIT0gbnVsbCA/IGl0ZW0ubGlmZVBlcmNlbnQgOiAnJykgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWVsc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ubGlmZVBlcmNlbnQgIT0gbnVsbCA/IGl0ZW0ubGlmZVBlcmNlbnQgOiAnJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtZWxzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmxpZmVQZXJjZW50IH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJudW1cIj57eyBpdGVtLmxpZmVXYXJuIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIDpjbGFzcz1cIml0ZW0ud2FyblN0YXR1cyA9PT0gJ+mihOitpicgPyAnd2Fybi1jZWxsJyA6IChpdGVtLndhcm5TdGF0dXMgPT09ICfmraPluLgnID8gJ29rLWNlbGwnIDogJycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB2LWlmPVwiaXRlbS53YXJuU3RhdHVzID09PSAn6aKE6K2mJ1wiIGNsYXNzPVwid2Fybi1iYWRnZVwiPuitpuWRijwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtZWxzZT57eyBpdGVtLndhcm5TdGF0dXMgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uZG93blRpbWUgPyAn5LiL5py6JyA6ICflnKjmnLonIH19PCEtLeWcqOacuueKtuaAgS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyIHYtaWY9XCIhdG9vbFJlY29yZHMubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiMTJcIj7mmoLml6DmlbDmja48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgIDwvdmlldz5cclxuXHJcbiAgICAgICAgPCEtLSDor7TmmI4gLS0+XHJcbiAgICAgICAgPCEtLTx2aWV3IGNsYXNzPVwidG9vbC1kZXNjXCI+XHJcbiAgICAgICAgICAgIDxwIHN0eWxlPVwiY29sb3I6cmVkO1wiPifkvb/nlKjkuIrpmZAn5Lul5LiL5YiA5pe255qEJ+S9v+eUqOS4iumZkCfkuLrorqHnrpfmoIflh4Y8L3A+XHJcbiAgICAgICAgICAgIDxwIHN0eWxlPVwiY29sb3I6cmVkO1wiPuWvv+WRveavlOmihOitpuWAvOm7mOiupOS4ujkwJTwvcD5cclxuICAgICAgICA8L3ZpZXc+LS0+XHJcbiAgICA8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG4gICAgZXhwb3J0IGRlZmF1bHQge1xyXG4gICAgICAgIGRhdGEoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBtYWNoaW5lTm86ICcnLC8v5py65Y+w57yW56CBXHJcbiAgICAgICAgICAgICAgICB3b3JrT3JkZXJObzogJycsLy/lt6XljZXlj7dcclxuICAgICAgICAgICAgICAgIGFjdGl2ZVRvb2xObzogJycsIC8vIOW9k+WJjemAieS4reeahOWIgOWFt+e8luWPt1xyXG4gICAgICAgICAgICAgICAgcGFnZUluZGV4OiAxLFxyXG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IDIwLCAvL+WNlemhteaYvuekuueahOWIgOWFt+aVsOmHj1xyXG4gICAgICAgICAgICAgICAgdG90YWw6IDAsXHJcbiAgICAgICAgICAgICAgICB0b29sTGlzdDogW10sXHJcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFRvb2xObzogJycsXHJcbiAgICAgICAgICAgICAgICB0b29sTmFtZTogJycsXHJcbiAgICAgICAgICAgICAgICB0b29sTW9kZWw6ICcnLFxyXG4gICAgICAgICAgICAgICAgc2hvd1Rvb2xEaWFsb2c6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgc2VhcmNoS2V5OiAnJyxcclxuICAgICAgICAgICAgICAgIGZpbHRlcmVkVG9vbHM6IFtdLFxyXG4gICAgICAgICAgICAgICAgdXNlTGltaXRJbnB1dDogJycsXHJcbiAgICAgICAgICAgICAgICBsaWZlV2FybklucHV0OiAnJywgLy8g5paw5aKe77ya5a+/5ZG95q+U6aKE6K2m5YC85Y6f5aeL6L6T5YWlXHJcbiAgICAgICAgICAgICAgICB0b29sUmVjb3JkczogW10sXHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nVG9vbHM6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgbG9hZGluZ0Zvcm06IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgc3VibWl0dGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBfc2VhcmNoVGltZXI6IG51bGwsXHJcbiAgICAgICAgICAgICAgICB3b3JrT3JkZXJDdXJyZW50Q2pOdW06IG51bGwsIC8vIOW3peWNleW9k+WJjeaVsOmHh1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIOiHquWKqOS/neWtmOebuOWFs1xyXG4gICAgICAgICAgICAgICAgYXV0b1NhdmVUaW1lcjogbnVsbCxcclxuICAgICAgICAgICAgICAgIGlzRGlydHk6IGZhbHNlLCAvLyDooajljZXmmK/lkKbmnInmnKrkv53lrZjlj5jmm7RcclxuICAgICAgICAgICAgICAgIGF1dG9TYXZlSW50ZXJ2YWxNczogNSAqIDYwICogMTAwMCwgLy8g6buY6K6kIDUg5YiG6ZKfXHJcbiAgICAgICAgICAgICAgICBhdXRvU2F2ZUVuYWJsZWQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBhdXRvU2F2ZUFjdGlvbk5hbWU6ICdoYW5kbGVVcFRvb2wnLCAvLyDoh6rliqjop6blj5HnmoTmlrnms5XlkI3vvIzlj6/mlLnkuLroh6rlrprkuYnkv53lrZjmlrnms5VcclxuXHJcbiAgICAgICAgICAgICAgICAvLyDmlrDlop7vvJrosIPmnLrnm7jlhbPlrZfmrrVcclxuICAgICAgICAgICAgICAgIGlzVGlhb2ppVXNlclNlbGVjdFNob3c6IGZhbHNlLCAvLyDosIPmnLrluIjlgoXpgInmi6nlvLnnqpdcclxuICAgICAgICAgICAgICAgIHRpYW9qaVN0YWZmTm86ICcnLCAvLyDlvZPliY3pgInkuK3nmoTosIPmnLrluIjlgoUo5qC85byPOiDlt6Xlj7c65aeT5ZCNKVxyXG4gICAgICAgICAgICAgICAgdGlhb2ppT2tRdHk6ICcnLCAvLyDosIPmnLroia/lk4HmlbBcclxuICAgICAgICAgICAgICAgIHRpYW9qaUJhZFF0eTogJycsIC8vIOiwg+acuuS4jeiJr+WTgeaVsFxyXG4gICAgICAgICAgICAgICAgdGlhb2ppVXNlcnM6IFtdLCAvLyDosIPmnLrluIjlgoXliJfooahcclxuICAgICAgICAgICAgICAgIHRpYW9qaVVzZXJTZWFyY2g6ICcnLCAvLyDmkJzntKLlhbPplK7or41cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIC8vIOaWsOWinu+8muaKpeivleS6p+aVsOaJgOmcgOWtl+autVxyXG4gICAgICAgICAgICAgICAgb3JkZXJJZDogbnVsbCwgLy8g5bel5Y2VSURcclxuICAgICAgICAgICAgICAgIG9yZGVyOiB7fSAvLyDlt6XljZXmlbDmja5cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXB1dGVkOiB7XHJcbiAgICAgICAgICAgIHRvdGFsUGFnZXMoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoMSwgTWF0aC5jZWlsKHRoaXMudG90YWwgLyB0aGlzLnBhZ2VTaXplKSB8fCAxKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLy8g5paw5aKe77ya6LCD5py65biI5YKF5pi+56S65ZCN56ewXHJcbiAgICAgICAgICAgIHRpYW9qaVN0YWZmRGlzcGxheSgpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy50aWFvamlTdGFmZk5vKSByZXR1cm4gJyc7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzZWdzID0gdGhpcy50aWFvamlTdGFmZk5vLnNwbGl0KCc6Jyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc2Vncy5sZW5ndGggPiAxID8gYCR7c2Vnc1swXX0gJHtzZWdzWzFdfWAgOiB0aGlzLnRpYW9qaVN0YWZmTm87XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIOaWsOWinu+8mui/h+a7pOWQjueahOiwg+acuuW4iOWCheWIl+ihqFxyXG4gICAgICAgICAgICBmaWx0ZXJlZFRpYW9qaVVzZXJzKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnRpYW9qaVVzZXJTZWFyY2gpIHJldHVybiB0aGlzLnRpYW9qaVVzZXJzO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qga3cgPSB0aGlzLnRpYW9qaVVzZXJTZWFyY2gudHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50aWFvamlVc2Vycy5maWx0ZXIodSA9PiB1LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoa3cpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgd2F0Y2g6IHtcclxuICAgICAgICAgICAgLy8g5qCH6K6w6ISP5pWw5o2u77ya5oyJ6ZyA55uR5ZCs5a2X5q615Y+Y5YyWXHJcbiAgICAgICAgICAgIHNlbGVjdGVkVG9vbE5vKCkgeyB0aGlzLmlzRGlydHkgPSB0cnVlOyB9LFxyXG4gICAgICAgICAgICB1c2VMaW1pdElucHV0KCkgeyB0aGlzLmlzRGlydHkgPSB0cnVlOyB9LFxyXG4gICAgICAgICAgICBsaWZlV2FybklucHV0KCkgeyB0aGlzLmlzRGlydHkgPSB0cnVlOyB9LFxyXG4gICAgICAgICAgICB0b29sTmFtZSgpIHsgdGhpcy5pc0RpcnR5ID0gdHJ1ZTsgfSxcclxuICAgICAgICAgICAgdG9vbE1vZGVsKCkgeyB0aGlzLmlzRGlydHkgPSB0cnVlOyB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBtZXRob2RzOiB7XHJcbiAgICAgICAgICAgIC8v5p+l6K+i5b2T5YmN5pWw6YeH5pWw77yM5L2c5Li65LiL5YiA6K6h5pWw5a6e5pe25pi+56S6XHJcbiAgICAgICAgICAgIGFzeW5jIGZldGNoQ3VycmVudENqTnVtKHRvb2xObykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm1hY2hpbmVObykgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuJHBvc3Qoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICcvV29tZGFhL0dldFdvbWRhYXNCeVNob3cnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBKU09OLnN0cmluZ2lmeSh7IG1hY2hpbmVObzogdGhpcy5tYWNoaW5lTm8gfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT09IDAgJiYgQXJyYXkuaXNBcnJheShyZXMuZGF0YT8udGJCaWxsTGlzdCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZm91bmQgPSByZXMuZGF0YS50YkJpbGxMaXN0LmZpbmQoeCA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5jdXR0ZXJJZCA9PT0gdG9vbE5vIHx8IHguY3V0dGVSX0lEID09PSB0b29sTm9cclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvdW5kID8gKGZvdW5kLkN1cnJlbnRDak51bSA/PyBmb3VuZC5jdXJyZW50Q2pOdW0gPz8gbnVsbCkgOiBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ+iOt+WPlmN1cnJlbnRDak51beWksei0pScsIGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAvLyDmlrDlop7vvJrliLfmlrDmjInpkq7lpITnkIbmlrnms5VcclxuICAgICAgICAgICAgYXN5bmMgaGFuZGxlUmVmcmVzaCgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hUb29scygnJyk7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tYWNoaW5lTm8gJiYgdGhpcy53b3JrT3JkZXJObykge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZmV0Y2hGb3JtRGF0YSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZmV0Y2hEZWZhdWx0VG9vbEZyb21Xb3JrT3JkZXIoKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyDliLfmlrDlkI7otYvlgLznrKzkuIDooYwgY3VycmVudENqTnVtXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudG9vbFJlY29yZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRzZXQodGhpcy50b29sUmVjb3Jkc1swXSwgJ2N1cnJlbnRDak51bScsIHRoaXMud29ya09yZGVyQ3VycmVudENqTnVtKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLiRzaG93TWVzc2FnZSgn5Yi35paw5a6M5oiQJyk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIOiHquWKqOS/neWtmO+8muWQr+WKqFxyXG4gICAgICAgICAgICBzdGFydEF1dG9TYXZlKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmF1dG9TYXZlRW5hYmxlZCkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wQXV0b1NhdmUoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXV0b1NhdmVUaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dG9TYXZlVGljaygpO1xyXG4gICAgICAgICAgICAgICAgfSwgdGhpcy5hdXRvU2F2ZUludGVydmFsTXMpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvLyDoh6rliqjkv53lrZjvvJrlgZzmraJcclxuICAgICAgICAgICAgc3RvcEF1dG9TYXZlKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYXV0b1NhdmVUaW1lcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5hdXRvU2F2ZVRpbWVyKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dG9TYXZlVGltZXIgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvLyDoh6rliqjkv53lrZjvvJrmr4/mrKHlrprml7bmiafooYzml7bnmoTpgLvovpFcclxuICAgICAgICAgICAgYXN5bmMgYXV0b1NhdmVUaWNrKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmF1dG9TYXZlRW5hYmxlZCkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzRGlydHkpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN1Ym1pdHRpbmcgfHwgdGhpcy5sb2FkaW5nRm9ybSkgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGZuID0gdGhpcy5hdXRvU2F2ZUFjdGlvbk5hbWUgJiYgdHlwZW9mIHRoaXNbdGhpcy5hdXRvU2F2ZUFjdGlvbk5hbWVdID09PSAnZnVuY3Rpb24nXHJcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzW3RoaXMuYXV0b1NhdmVBY3Rpb25OYW1lXVxyXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgICAgICAgICAgIGlmICghZm4pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ+iHquWKqOS/neWtmO+8muacquaJvuWIsOaWueazlScsIHRoaXMuYXV0b1NhdmVBY3Rpb25OYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN1Ym1pdHRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGZuLmNhbGwodGhpcyk7IC8vIOiwg+eUqOS/neWtmOaWueazle+8iOS+i+WmgiBoYW5kbGVVcFRvb2zvvIlcclxuICAgICAgICAgICAgICAgICAgICAvLyDlpoLmnpzkv53lrZjmiJDlip/vvIzmuIXohI/moIforrDvvIjkv53lrZjmlrnms5XlhoXpg6joi6XlpLHotKXmsqHmnInmipvlh7rlj6/kv53mjIHmraTmlrnlvI/vvIlcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRGlydHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfoh6rliqjkv53lrZjlpLHotKXvvJonLCBlKTtcclxuICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJtaXR0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAvLyDmlrDlop7vvJrlr7/lkb3mr5TpooTorablgLzlvZLkuIDljJYgKOi/lOWbniAwfjEg5oiWIG51bGwpXHJcbiAgICAgICAgICAgIG5vcm1hbGl6ZUxpZmVXYXJuKHYpIHtcclxuICAgICAgICAgICAgICAgIGlmICh2ID09IG51bGwpIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmF3ID0gU3RyaW5nKHYpLnRyaW0oKS5yZXBsYWNlKC9bJe+8hV0vZywgJycpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHJhdyA9PT0gJycpIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbnVtID0gTnVtYmVyKHJhdyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWlzRmluaXRlKG51bSkgfHwgbnVtIDw9IDApIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bSA+IDEgPyAobnVtIC8gMTAwKSA6IG51bTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb3BlblRvb2xEaWFsb2coKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dUb29sRGlhbG9nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFnZUluZGV4ID0gMTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hUb29scyh0aGlzLnNlYXJjaEtleSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNsb3NlVG9vbERpYWxvZygpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd1Rvb2xEaWFsb2cgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYXN5bmMgZmV0Y2hUb29scyhzZWFyY2hLZXkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1Rvb2xzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy4kcG9zdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJy9NZXNDdXR0ZXJMZWRnZXIvUXVlcnlUb29scycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEtleSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VJbmRleDogdGhpcy5wYWdlSW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IEFycmF5LmlzQXJyYXkocmVzLmRhdGEpID8gcmVzLmRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKHJlcy5kYXRhICYmIHJlcy5kYXRhLnRiQmlsbExpc3QpID8gcmVzLmRhdGEudGJCaWxsTGlzdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKHJlcy5kYXRhICYmIHJlcy5kYXRhLmRhdGEpID8gcmVzLmRhdGEuZGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2V0RmllbGQgPSAob2JqLCAuLi5rZXlzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGsgb2Yga2V5cykgaWYgKG9iaj8uW2tdICE9PSB1bmRlZmluZWQgJiYgb2JqPy5ba10gIT09IG51bGwpIHJldHVybiBvYmpba107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOi/memHjOmcgOimgeaKiiBsaWZlV2FybiDlrZfmrrXkuZ/luKblh7rmnaVcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFwcGVkID0gKHBheWxvYWQgfHwgW10pLm1hcCh0ID0+ICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBubzogZ2V0RmllbGQodCwgJ2N1dHRlcklkJywgJ0NVVFRFUl9JRCcsICdjdXR0ZVJfSUQnLCAnZGFBMDAxJywgJ25vJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBnZXRGaWVsZCh0LCAnY3V0dGVyTmFtZScsICdDVVRURVJfTkFNRScsICdjdXR0ZVJfTkFNRScsICduYW1lJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbDogZ2V0RmllbGQodCwgJ2N1dHRlck1vZGVsJywgJ0NVVFRFUl9NT0RFTCcsICdjdXR0ZVJfTU9ERUwnLCAnbW9kZWwnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpZmVXYXJuOiBnZXRGaWVsZCh0LCAnbW9kbExpZmVXb3JuaW5nJywgJ2xpZmVXYXJuJywgJ0xJRkVfV0FSTicsICdsaWZFX1dBUk4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkVG9vbHMgPSBtYXBwZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9vbExpc3QgPSBtYXBwZWQuc2xpY2UoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvdGFsRnJvbVJlcyA9IE51bWJlcihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5kYXRhPy50b3RhbCA/PyByZXMuZGF0YT8udG90YWxDb3VudCA/PyByZXMudG90YWwgPz8gcmVzLnRvdGFsQ291bnQgPz8gbWFwcGVkLmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvdGFsID0gTnVtYmVyLmlzRmluaXRlKHRvdGFsRnJvbVJlcykgPyB0b3RhbEZyb21SZXMgOiBtYXBwZWQubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wYWdlSW5kZXggPiB0aGlzLnRvdGFsUGFnZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZUluZGV4ID0gdGhpcy50b3RhbFBhZ2VzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kc2hvd01lc3NhZ2UocmVzLm1lc3NhZ2UgfHwgJ+afpeivouWksei0pScpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2ZldGNoVG9vbHMg6ZSZ6K+v77yaJywgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLiRzaG93TWVzc2FnZSgn5p+l6K+i5YiA5YW35aSx6LSl77yM6K+35qOA5p+l572R57uc5oiW5o6l5Y+jJyk7XHJcbiAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1Rvb2xzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGFzeW5jIHByZXZQYWdlKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGFnZUluZGV4ID4gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZUluZGV4LS07XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5mZXRjaFRvb2xzKHRoaXMuc2VhcmNoS2V5KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYXN5bmMgbmV4dFBhZ2UoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYWdlSW5kZXggPCB0aGlzLnRvdGFsUGFnZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2VJbmRleCsrO1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZmV0Y2hUb29scyh0aGlzLnNlYXJjaEtleSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uU2VhcmNoS2V5SW5wdXQoKSB7XHJcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fc2VhcmNoVGltZXIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2VhcmNoVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFRvb2woKTtcclxuICAgICAgICAgICAgICAgIH0sIDMwMCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGFzeW5jIHNlYXJjaFRvb2woKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2VJbmRleCA9IDE7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmZldGNoVG9vbHModGhpcy5zZWFyY2hLZXkpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzZWxlY3RUb29sKHRvb2wpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUb29sTm8gPSB0b29sLm5vO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b29sTmFtZSA9IHRvb2wubmFtZTtcclxuICAgICAgICAgICAgICAgIHRoaXMudG9vbE1vZGVsID0gdG9vbC5tb2RlbDtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlVG9vbE5vID0gdG9vbC5ubztcclxuICAgICAgICAgICAgICAgIC8vIOaWsOWinu+8muW4puWHuuWvv+WRveavlOmihOitpuWAvFxyXG4gICAgICAgICAgICAgICAgaWYgKHRvb2wubGlmZVdhcm4gIT09IHVuZGVmaW5lZCAmJiB0b29sLmxpZmVXYXJuICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5qC85byP5YyW5Li655m+5YiG5q+U5a2X56ym5LiyXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2FybiA9IE51bWJlcih0b29sLmxpZmVXYXJuKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxpZmVXYXJuSW5wdXQgPSB3YXJuIDw9IDEgPyAod2FybiAqIDEwMCkudG9GaXhlZCgwKSA6IHdhcm4udG9GaXhlZCgwKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5saWZlV2FybklucHV0ID0gJyc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbmZpcm1Ub29sKCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zaG93VG9vbERpYWxvZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBhc3luYyBzZXRVc2VMaW1pdCgpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zZWxlY3RlZFRvb2xObykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHNob3dNZXNzYWdlKCfor7fpgInmi6nliIDlhbflkI7lho3orr7nva7kuIrpmZAnKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2ID0gTnVtYmVyKHRoaXMudXNlTGltaXRJbnB1dCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNOYU4odikgfHwgdiA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc2hvd01lc3NhZ2UoJ+ivt+i+k+WFpeacieaViOeahOS9v+eUqOS4iumZkCcpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMudG9vbFJlY29yZHMgPSB0aGlzLnRvb2xSZWNvcmRzLm1hcChyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoci5ubyA9PT0gdGhpcy5zZWxlY3RlZFRvb2xObykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5yLCB1c2VMaW1pdDogdiB9O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b29sTGlzdCA9IHRoaXMudG9vbExpc3QubWFwKHQgPT4gdC5ubyA9PT0gdGhpcy5zZWxlY3RlZFRvb2xObyA/IHsgLi4udCwgdXNlTGltaXQ6IHYgfSA6IHQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy4kc2hvd01lc3NhZ2UoJ+S9v+eUqOS4iumZkOW3suiuvue9ru+8iOS7heWJjeerr+aYvuekuu+8iScpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvLyDkuIrliIDml7bkvKDpgJIgc2RqcyA9IOW3peWNlSBjdXJyZW50Q2pOdW1cclxuICAgICAgICAgICAgYXN5bmMgaGFuZGxlVXBUb29sKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLndvcmtPcmRlck5vKSB7IHRoaXMuJHNob3dNZXNzYWdlKCflt6XljZXlj7fkuI3og73kuLrnqbonKTsgcmV0dXJuOyB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMubWFjaGluZU5vKSB7IHRoaXMuJHNob3dNZXNzYWdlKCfmnLrlj7Dlj7fkuI3og73kuLrnqbonKTsgcmV0dXJuOyB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRUb29sTm8pIHsgdGhpcy4kc2hvd01lc3NhZ2UoJ+WIgOWFt+e8luWPt+S4jeiDveS4uuepuicpOyByZXR1cm47IH1cclxuICAgICAgICAgICAgICAgIC8v5LiK5YiA5by65Yi25b2V5YWl5L2/55So5LiK6ZmQXHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMudXNlTGltaXRJbnB1dCkgeyB0aGlzLiRzaG93TWVzc2FnZSgn5L2/55So5LiK6ZmQ5LiN6IO95Li656m6Jyk7IHJldHVybjsgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgdXNlTGltaXQgPSBOdW1iZXIodGhpcy51c2VMaW1pdElucHV0KTtcclxuICAgICAgICAgICAgICAgIGlmIChpc05hTih1c2VMaW1pdCkgfHwgdXNlTGltaXQgPD0gMCkgeyB0aGlzLiRzaG93TWVzc2FnZSgn6K+36L6T5YWl5pyJ5pWI55qE5L2/55So5LiK6ZmQJyk7IHJldHVybjsgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIHNkanMg5L2/55So5bel5Y2VIGN1cnJlbnRDak51bVxyXG4gICAgICAgICAgICAgICAgY29uc3Qgc2RqcyA9IHRoaXMud29ya09yZGVyQ3VycmVudENqTnVtICE9IG51bGwgPyBOdW1iZXIodGhpcy53b3JrT3JkZXJDdXJyZW50Q2pOdW0pIDogbnVsbDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxpZmVXYXJuUmF0aW8gPSB0aGlzLm5vcm1hbGl6ZUxpZmVXYXJuKHRoaXMubGlmZVdhcm5JbnB1dCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHdvcmtPcmRlck5vOiB0aGlzLndvcmtPcmRlck5vLFxyXG4gICAgICAgICAgICAgICAgICAgIG1hY2hpbmVObzogdGhpcy5tYWNoaW5lTm8sXHJcbiAgICAgICAgICAgICAgICAgICAgdG9vbE5vOiB0aGlzLnNlbGVjdGVkVG9vbE5vLFxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICfkuIrmnLonLFxyXG4gICAgICAgICAgICAgICAgICAgIHVzZUxpbWl0LFxyXG4gICAgICAgICAgICAgICAgICAgIHNkanMsLy8g5LiK5YiA6K6h5pWw77yI5bel5Y2V5b2T5YmN5pWw6YeH77yJXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kbExpZmVXb3JuaW5nOiBsaWZlV2FyblJhdGlvIC8vIOaWsOWinlxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJtaXR0aW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLiRwb3N0KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnL01lc0N1dHRlckxlZGdlci9TdWJtaXRUb29sQWN0aW9uJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkocGF5bG9hZCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhICYmIHJlcy5kYXRhLm91dFN1bSA9PT0gXCIwXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdW5pLnNob3dUb2FzdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcmVzLmRhdGEub3V0TXNnIHx8ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2Vycm9yJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzLmRhdGEgJiYgcmVzLmRhdGEub3V0TXNnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuaS5zaG93VG9hc3Qoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHJlcy5kYXRhLm91dE1zZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdub25lJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5ZCO57ut6YC76L6R57un57ut5omn6KGMXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5mZXRjaEZvcm1EYXRhKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHNob3dNZXNzYWdlKCfkuIrliIDmj5DkuqTlpLHotKXvvIzor7fmo4Dmn6XnvZHnu5wnKTtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7IC8vIOaKm+WHuuS7peS+v+iHquWKqOS/neWtmOmAu+i+keaNleiOt+W5tuS/neeVmSBpc0RpcnR5XHJcbiAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VibWl0dGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvLyDkuIvliIDml7bkvKDpgJIgeGRqcyA9IOW3peWNlSBjdXJyZW50Q2pOdW1cclxuICAgICAgICAgICAgYXN5bmMgaGFuZGxlRG93blRvb2woKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMud29ya09yZGVyTm8pIHsgdGhpcy4kc2hvd01lc3NhZ2UoJ+W3peWNleWPt+S4jeiDveS4uuepuicpOyByZXR1cm47IH1cclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5tYWNoaW5lTm8pIHsgdGhpcy4kc2hvd01lc3NhZ2UoJ+acuuWPsOWPt+S4jeiDveS4uuepuicpOyByZXR1cm47IH1cclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zZWxlY3RlZFRvb2xObykgeyB0aGlzLiRzaG93TWVzc2FnZSgn5YiA5YW357yW5Y+35LiN6IO95Li656m6Jyk7IHJldHVybjsgfVxyXG4gICAgICAgICAgICAgICAgLy/kuIvliIDkuI3lvLrliLblvZXlhaXkvb/nlKjkuIrpmZBcclxuICAgICAgICAgICAgICAgIC8vaWYgKCF0aGlzLnVzZUxpbWl0SW5wdXQpIHsgdGhpcy4kc2hvd01lc3NhZ2UoJ+S9v+eUqOS4iumZkOS4jeiDveS4uuepuicpOyByZXR1cm47IH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IHVzZUxpbWl0ID0gTnVtYmVyKHRoaXMudXNlTGltaXRJbnB1dCk7XHJcbiAgICAgICAgICAgICAgICAvL2lmIChpc05hTih1c2VMaW1pdCkgfHwgdXNlTGltaXQgPD0gMCkgeyB0aGlzLiRzaG93TWVzc2FnZSgn6K+36L6T5YWl5pyJ5pWI55qE5L2/55So5LiK6ZmQJyk7IHJldHVybjsgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIOS4i+WIgOiuoeaVsOWQjOagt+WPluW3peWNleacgOaWsOmHh+mbhuaVsFxyXG4gICAgICAgICAgICAgICAgY29uc3QgeGRqcyA9IHRoaXMud29ya09yZGVyQ3VycmVudENqTnVtICE9IG51bGwgPyBOdW1iZXIodGhpcy53b3JrT3JkZXJDdXJyZW50Q2pOdW0pIDogbnVsbDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxpZmVXYXJuUmF0aW8gPSB0aGlzLm5vcm1hbGl6ZUxpZmVXYXJuKHRoaXMubGlmZVdhcm5JbnB1dCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHdvcmtPcmRlck5vOiB0aGlzLndvcmtPcmRlck5vLFxyXG4gICAgICAgICAgICAgICAgICAgIG1hY2hpbmVObzogdGhpcy5tYWNoaW5lTm8sXHJcbiAgICAgICAgICAgICAgICAgICAgdG9vbE5vOiB0aGlzLnNlbGVjdGVkVG9vbE5vLFxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICfkuIvmnLonLFxyXG4gICAgICAgICAgICAgICAgICAgIHVzZUxpbWl0LFxyXG4gICAgICAgICAgICAgICAgICAgIHhkanMsLy8g5LiL5YiA6K6h5pWwXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kbExpZmVXb3JuaW5nOiBsaWZlV2FyblJhdGlvIC8vIOaWsOWinlxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJtaXR0aW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLiRwb3N0KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnL01lc0N1dHRlckxlZGdlci9TdWJtaXRUb29sQWN0aW9uJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkocGF5bG9hZCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhICYmIHJlcy5kYXRhLm91dFN1bSA9PT0gXCIwXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdW5pLnNob3dUb2FzdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcmVzLmRhdGEub3V0TXNnIHx8ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2Vycm9yJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzLmRhdGEgJiYgcmVzLmRhdGEub3V0TXNnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuaS5zaG93VG9hc3Qoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHJlcy5kYXRhLm91dE1zZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdub25lJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5ZCO57ut6YC76L6R57un57ut5omn6KGMXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5mZXRjaEZvcm1EYXRhKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHNob3dNZXNzYWdlKCfkuIvliIDmj5DkuqTlpLHotKXvvIzor7fmo4Dmn6XnvZHnu5wnKTtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VibWl0dGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjYW5jZWwoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVG9vbE5vID0gJyc7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvb2xOYW1lID0gJyc7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvb2xNb2RlbCA9ICcnO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51c2VMaW1pdElucHV0ID0gJyc7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxpZmVXYXJuSW5wdXQgPSAnJzsgLy8g5paw5aKe77ya5riF56m6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzRGlydHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYXN5bmMgZmV0Y2hGb3JtRGF0YSgpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy53b3JrT3JkZXJObyB8fCAhdGhpcy5tYWNoaW5lTm8pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ+W3peWNleWPt+aIluacuuWPsOWPt+S4uuepuu+8jOi3s+i/h+iOt+WPluihqOWNleaVsOaNricpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ0Zvcm0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgICAgICAgICAgICAgICB3b3JrT3JkZXJObzogdGhpcy53b3JrT3JkZXJOby50cmltKCksXHJcbiAgICAgICAgICAgICAgICAgICAgbWFjaGluZU5vOiB0aGlzLm1hY2hpbmVOby50cmltKClcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuJHBvc3Qoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICcvTWVzQ3V0dGVyTGVkZ2VyL0dldEZvcm1EYXRhJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkocGF5bG9hZCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXMgIT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kc2hvd01lc3NhZ2UocmVzLm1lc3NhZ2UgfHwgJ+iOt+WPluihqOWNleaVsOaNruWksei0pScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvb2xSZWNvcmRzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlzdCA9IEFycmF5LmlzQXJyYXkocmVzLmRhdGEpID8gcmVzLmRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiAocmVzLmRhdGEgJiYgcmVzLmRhdGEudGJCaWxsTGlzdCkgPyByZXMuZGF0YS50YkJpbGxMaXN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChyZXMuZGF0YSAmJiByZXMuZGF0YS5kYXRhKSA/IHJlcy5kYXRhLmRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBnZXRGaWVsZCA9IChvYmosIC4uLmtleXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBrIG9mIGtleXMpIGlmIChvYmo/LltrXSAhPT0gdW5kZWZpbmVkICYmIG9iaj8uW2tdICE9PSBudWxsKSByZXR1cm4gb2JqW2tdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXBwZWQgPSAobGlzdCB8fCBbXSkubWFwKHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cFRpbWVSYXcgPSBnZXRGaWVsZCh0LCAndVBfVElNRScsICdVUF9USU1FJywgJ3VQVGltZScsICdVUFRJTUUnLCAnVXBUaW1lJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvd25UaW1lUmF3ID0gZ2V0RmllbGQodCwgJ2Rvd05fVElNRScsICdET1dOX1RJTUUnLCAnZG93blRpbWUnLCAnRE9XTlRJTUUnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlmZVdhcm5SYXcgPSBnZXRGaWVsZCh0LCAnbGlmRV9XQVJOJywgJ0xJRkVfV0FSTicsICdsaWZlV2FybicsICdMSUZFV0FSTicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50Q2pOdW0gPSBnZXRGaWVsZCh0LCAnY3VycmVudENqTnVtJywgJ0NVUlJFTlRDSk5VTScsICdDdXJyZW50Q2pOdW0nKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVzZUNvdW50ID0gZ2V0RmllbGQodCwgJ3VzRV9DT1VOVCcsICdVU0VfQ09VTlQnLCAndXNlQ291bnQnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXNlTGltaXQgPSBnZXRGaWVsZCh0LCAndXNFX0xJTUlUJywgJ1VTRV9MSU1JVCcsICd1c2VMaW1pdCcpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBlcmNlbnQgPSAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVzZUNvdW50ICE9IG51bGwgJiYgdXNlTGltaXQgIT0gbnVsbCAmJiAhaXNOYU4odXNlQ291bnQpICYmICFpc05hTih1c2VMaW1pdCkgJiYgTnVtYmVyKHVzZUxpbWl0KSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnQgPSAoKE51bWJlcih1c2VDb3VudCkgLyBOdW1iZXIodXNlTGltaXQpKSAqIDEwMCkudG9GaXhlZCgwKSArICclJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyc2VOdW1iZXIgPSB2ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ID09PSBudWxsIHx8IHYgPT09IHVuZGVmaW5lZCB8fCB2ID09PSAnJykgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gU3RyaW5nKHYpLnJlcGxhY2UoL1ss77yFJV0vZywgJycpLnRyaW0oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBwYXJzZUZsb2F0KHMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZShuKSA/IG4gOiBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXRQZXJjZW50ID0gbiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9PT0gbnVsbCB8fCBuID09PSB1bmRlZmluZWQgfHwgaXNOYU4obikpIHJldHVybiAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuIDw9IDEpIHJldHVybiBgJHsobiAqIDEwMCkudG9GaXhlZCgwKX0lYDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtOdW1iZXIobikudG9GaXhlZCgwKX0lYDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlmZVdhcm5OdW0gPSBwYXJzZU51bWJlcihsaWZlV2FyblJhdyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgd2FyblN0YXR1cyA9IGdldEZpZWxkKHQsICdzdGF0dXMnLCAnU1RBVFVTJykgfHwgJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaWZlV2Fybk51bSAhPT0gbnVsbCAmJiB1c2VDb3VudCAhPSBudWxsICYmIHVzZUxpbWl0ICE9IG51bGwgJiYgIWlzTmFOKHVzZUNvdW50KSAmJiAhaXNOYU4odXNlTGltaXQpICYmIE51bWJlcih1c2VMaW1pdCkgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwZXJjZW50TnVtID0gTnVtYmVyKHVzZUNvdW50KSAvIE51bWJlcih1c2VMaW1pdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuU3RhdHVzID0gKHBlcmNlbnROdW0gPj0gbGlmZVdhcm5OdW0pID8gJ+mihOitpicgOiAn5q2j5bi4JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5TdGF0dXMgPSB3YXJuU3RhdHVzIHx8ICfmnKrnn6UnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGdldEZpZWxkKHQsICdpZCcsICdJRCcpIHx8IGAke2dldEZpZWxkKHQsICdjdXR0ZVJfSUQnKSB8fCBnZXRGaWVsZCh0LCAnQ1VUVEVSX0lEJykgfHwgJyd9LSR7dXBUaW1lUmF3IHx8ICcnfWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBubzogZ2V0RmllbGQodCwgJ2N1dHRlUl9JRCcsICdDVVRURVJfSUQnLCAnY3V0dGVySWQnLCAnbm8nKSB8fCAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGdldEZpZWxkKHQsICdjdXR0ZVJfTkFNRScsICdDVVRURVJfTkFNRScsICdjdXR0ZXJOYW1lJywgJ25hbWUnKSB8fCAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwVGltZTogdGhpcy5mb3JtYXREYXRlVGltZSh1cFRpbWVSYXcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBDb3VudDogZ2V0RmllbGQodCwgJ3VQX0NPVU5UJywgJ1VQX0NPVU5UJywgJ3VwQ291bnQnKSA/PyAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25UaW1lOiB0aGlzLmZvcm1hdERhdGVUaW1lKGRvd25UaW1lUmF3KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25Db3VudDogZ2V0RmllbGQodCwgJ2Rvd05fQ09VTlQnLCAnRE9XTl9DT1VOVCcsICdkb3duQ291bnQnKSA/PyAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZUNvdW50OiB1c2VDb3VudCA/PyAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZUxpbWl0OiB1c2VMaW1pdCA/PyAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpZmVQZXJjZW50OiBwZXJjZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlmZVdhcm46IGZvcm1hdFBlcmNlbnQobGlmZVdhcm5OdW0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FyblN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDak51bVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyDmlrDlop7vvJrmjInkuIrliIDml7bpl7TpmY3luo/mjpLluo/vvIjotormmZrnmoTotorkuIrpnaLvvIlcclxuICAgICAgICAgICAgICAgICAgICBtYXBwZWQuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDml7bpl7TmoLzlvI/lpoIgXCIxMC0yNCAxNjowM1wi77yM6L2s5Li6IERhdGUg5a+56LGh5q+U6L6DXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlID0gcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXMpIHJldHVybiAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g6KGl5bm05Lu977yM5YGH6K6+6YO95piv5LuK5bm0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB5ZWFyID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGAke3llYXJ9LSR7cy5yZXBsYWNlKC8tL2csICctJyl9OjAwYCkuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2UoYi51cFRpbWUpIC0gcGFyc2UoYS51cFRpbWUpOyAvLyDms6jmhI/ov5nph4zpobrluo/lj43ov4fmnaVcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b29sUmVjb3JkcyA9IG1hcHBlZDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b3RhbEZyb21SZXMgPSBOdW1iZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5kYXRhPy50b3RhbCA/PyByZXMuZGF0YT8udG90YWxDb3VudCA/PyByZXMudG90YWwgPz8gcmVzLnRvdGFsQ291bnQgPz8gbWFwcGVkLmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b3RhbCA9IE51bWJlci5pc0Zpbml0ZSh0b3RhbEZyb21SZXMpID8gdG90YWxGcm9tUmVzIDogbWFwcGVkLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign6I635Y+W6KGo5Y2V5pWw5o2u6ZSZ6K+vOicsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLiRzaG93TWVzc2FnZSgn6I635Y+W5pWw5o2u5aSx6LSl77yM6K+35qOA5p+l572R57uc6L+e5o6lJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b29sUmVjb3JkcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdGb3JtID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIOiHquWKqOW4puWHuuW3peWNleWIgOWFt+S/oeaBr++8jOW5tuiOt+WPluW3peWNleacgOaWsOmHh+mbhuaVsFxyXG4gICAgICAgICAgICBhc3luYyBmZXRjaERlZmF1bHRUb29sRnJvbVdvcmtPcmRlcigpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5tYWNoaW5lTm8pIHJldHVybjtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy4kcG9zdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJy9Xb21kYWEvR2V0V29tZGFhc0J5U2hvdycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHsgbWFjaGluZU5vOiB0aGlzLm1hY2hpbmVObyB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLnN0YXR1cyA9PT0gMCAmJiBBcnJheS5pc0FycmF5KHJlcy5kYXRhPy50YkJpbGxMaXN0KSAmJiByZXMuZGF0YS50YkJpbGxMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3JkZXIgPSByZXMuZGF0YS50YkJpbGxMaXN0WzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5paw5aKe77ya5L+d5a2Y5bel5Y2V5pWw5o2u77yM55So5LqO5oql6K+V5Lqn5pWwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3JkZXIgPSBvcmRlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcmRlcklkID0gb3JkZXIuaWQgfHwgb3JkZXIuSUQgfHwgb3JkZXIub3JkZXJJZCB8fCBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRvb2xObyA9IG9yZGVyLmN1dHRlcklkIHx8IG9yZGVyLmN1dHRlUl9JRCB8fCAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b29sTmFtZSA9IG9yZGVyLmN1dHRlck5hbWUgfHwgb3JkZXIuY3V0dGVSX05BTUUgfHwgJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9vbE1vZGVsID0gb3JkZXIuY3V0dGVyTW9kZWwgfHwgb3JkZXIuY3V0dGVSX01PREVMIHx8ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDlhbPplK7vvJrojrflj5blt6XljZXmnIDmlrDph4fpm4bmlbBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrT3JkZXJDdXJyZW50Q2pOdW0gPSBvcmRlci5DdXJyZW50Q2pOdW0gPz8gb3JkZXIuY3VycmVudENqTnVtID8/IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOaWsOWinu+8muiHquWKqOWhq+WFheWvv+WRveavlOmihOitpuWAvFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob3JkZXIubW9kbExpZmVXb3JuaW5nICE9PSB1bmRlZmluZWQgJiYgb3JkZXIubW9kbExpZmVXb3JuaW5nICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3YXJuID0gTnVtYmVyKG9yZGVyLm1vZGxMaWZlV29ybmluZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxpZmVXYXJuSW5wdXQgPSB3YXJuIDw9IDEgPyAod2FybiAqIDEwMCkudG9GaXhlZCgwKSA6IHdhcm4udG9GaXhlZCgwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGlmZVdhcm5JbnB1dCA9ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrT3JkZXJDdXJyZW50Q2pOdW0gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9yZGVyID0ge307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3JkZXJJZCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybign6Ieq5Yqo5bim5Ye65bel5Y2V5YiA5YW35aSx6LSlJywgZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrT3JkZXJDdXJyZW50Q2pOdW0gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3JkZXIgPSB7fTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9yZGVySWQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBmb3JtYXREYXRlVGltZShkYXRlVGltZVN0cikge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFkYXRlVGltZVN0cikgcmV0dXJuICcnO1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gU3RyaW5nKGRhdGVUaW1lU3RyKS50cmltKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKC9eXFxkezEwfSQvLnRlc3QocykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZCA9IG5ldyBEYXRlKE51bWJlcihzKSAqIDEwMDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCR7ZC5nZXRNb250aCgpICsgMX0tJHtkLmdldERhdGUoKX0gJHtkLmdldEhvdXJzKCl9OiR7U3RyaW5nKGQuZ2V0TWludXRlcygpKS5wYWRTdGFydCgyLCAnMCcpfWA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgvXlxcZHsxM30kLy50ZXN0KHMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBuZXcgRGF0ZShOdW1iZXIocykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCR7ZC5nZXRNb250aCgpICsgMX0tJHtkLmdldERhdGUoKX0gJHtkLmdldEhvdXJzKCl9OiR7U3RyaW5nKGQuZ2V0TWludXRlcygpKS5wYWRTdGFydCgyLCAnMCcpfWA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkYXRlVGltZVN0cik7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc05hTihkYXRlLmdldFRpbWUoKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke2RhdGUuZ2V0TW9udGgoKSArIDF9LSR7ZGF0ZS5nZXREYXRlKCl9ICR7ZGF0ZS5nZXRIb3VycygpfToke1N0cmluZyhkYXRlLmdldE1pbnV0ZXMoKSkucGFkU3RhcnQoMiwgJzAnKX1gO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaCA9IFN0cmluZyhkYXRlVGltZVN0cikubWF0Y2goLyhcXGR7MSw0fVstXFwvXVxcZHsxLDJ9Wy1cXC9dXFxkezEsMn0pLio/KFxcZHsxLDJ9OlxcZHsyfSkvKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gpIHJldHVybiBgJHttYXRjaFsxXS5yZXBsYWNlKC8tL2csICcvJykucmVwbGFjZSgvXlxcZHs0fVxcLy8sIChtKSA9PiBtKX0gJHttYXRjaFsyXX1gO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoZGF0ZVRpbWVTdHIpO1xyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhkYXRlVGltZVN0cik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyDmlrDlop7vvJrpgInmi6nosIPmnLrluIjlgoVcclxuICAgICAgICAgICAgc2VsZWN0VGlhb2ppVXNlcih1KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRpYW9qaVN0YWZmTm8gPSB1O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc1RpYW9qaVVzZXJTZWxlY3RTaG93ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRpYW9qaVVzZXJTZWFyY2ggPSAnJztcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIOaWsOWinu+8mumAgeajgOWRvOWPqyArIOaKpeivleS6p+aVsFxyXG4gICAgICAgICAgICBhc3luYyBoYW5kbGVJbnNwZWN0aW9uQ2FsbCgpIHtcclxuICAgICAgICAgICAgICAgIC8vIOmqjOivgeW/heWhq+mhuVxyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnRpYW9qaVN0YWZmTm8pIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLiRzaG93TWVzc2FnZSgn6K+36YCJ5oup6LCD5py65biI5YKFJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBjb25zdCBva1F0eSA9IE51bWJlcih0aGlzLnRpYW9qaU9rUXR5KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGJhZFF0eSA9IE51bWJlcih0aGlzLnRpYW9qaUJhZFF0eSk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmIChpc05hTihva1F0eSkgfHwgb2tRdHkgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc2hvd01lc3NhZ2UoJ+ivt+i+k+WFpeacieaViOeahOiwg+acuuiJr+WTgeaVsCcpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKGlzTmFOKGJhZFF0eSkgfHwgYmFkUXR5IDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHNob3dNZXNzYWdlKCfor7fovpPlhaXmnInmlYjnmoTosIPmnLrkuI3oia/lk4HmlbAnKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN0YWZmTm8gPSB0aGlzLnRpYW9qaVN0YWZmTm8uc3BsaXQoJzonKVswXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRDak51bSA9IHRoaXMub3JkZXI/LmN1cnJlbnRDak51bSB8fCAwO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAvLyDosIPnlKjmiqXor5XkuqfmlbDmjqXlj6Mo5L2/55So5oql5bel55WM6Z2i55qE5o6l5Y+jKVxyXG4gICAgICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgICAgICAgICAgICAgICBvcmRlck5vOiB0aGlzLndvcmtPcmRlck5vLFxyXG4gICAgICAgICAgICAgICAgICAgIG9yZGVySWQ6IHRoaXMub3JkZXJJZCwgLy8g6ZyA6KaB5LuO5bel5Y2V5pWw5o2u5Lit6I635Y+WXHJcbiAgICAgICAgICAgICAgICAgICAgYmY6IGJhZFF0eSwgLy8gYmbkvKDpgJLkuI3oia/lk4HmlbBcclxuICAgICAgICAgICAgICAgICAgICBzdGFmZk5vOiBzdGFmZk5vLFxyXG4gICAgICAgICAgICAgICAgICAgIGluaXRDak51bTogY3VycmVudENqTnVtIC0gYmFkUXR5IC0gb2tRdHksIC8vIGluaXRDak51bSA9IGN1cnJlbnRDak51bSAtIGJmIC0g6Imv5ZOB5pWwXHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudENqTnVtOiBjdXJyZW50Q2pOdW0sXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RpYW9qaScsIC8vIOagh+ivhuS4uuiwg+acuuaKpeW3pVxyXG4gICAgICAgICAgICAgICAgICAgIHRpYW9qaU9rUXR5OiBva1F0eSwgLy8g5paw5aKeOuiJr+WTgeaVsFxyXG4gICAgICAgICAgICAgICAgICAgIHRpYW9qaUJhZFF0eTogYmFkUXR5IC8vIOaWsOWinjrkuI3oia/lk4HmlbBcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJtaXR0aW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAvLyDosIPnlKjmiqXlt6XnlYzpnaLnmoTmiqXor5XkuqfmlbDmjqXlj6NcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLiRwb3N0KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnL01lc0ludkl0ZW1CYXJjb2Rlcy9BZGRCRlRvQmFyY29kZXMnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBwYXlsb2FkXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRzaG93TWVzc2FnZShyZXMubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc2hvd01lc3NhZ2UoJ+iwg+acuuaKpeW3peaIkOWKnycpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOa4heepuui+k+WFpVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGlhb2ppT2tRdHkgPSAnJztcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpYW9qaUJhZFF0eSA9ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOWIt+aWsOaVsOaNrlxyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZmV0Y2hGb3JtRGF0YSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZmV0Y2hEZWZhdWx0VG9vbEZyb21Xb3JrT3JkZXIoKTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAvLyDmlrDlop7vvJroh6rliqjlpITnkIbosIPmnLrpgIHmo4DnlYzpnaLnmoTmjInpkq7pgLvovpFcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmF1dG9IYW5kbGVNYWNoaW5lSW5zcGVjdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign6LCD5py65oql5bel6ZSZ6K+vOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc2hvd01lc3NhZ2UoJ+iwg+acuuaKpeW3peWksei0pe+8jOivt+ajgOafpee9kee7nCcpO1xyXG4gICAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN1Ym1pdHRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIOaWsOWinu+8muiHquWKqOWkhOeQhuiwg+acuumAgeajgOeVjOmdoueahOaMiemSrumAu+i+kVxyXG4gICAgICAgICAgICBhc3luYyBhdXRvSGFuZGxlTWFjaGluZUluc3BlY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIDEuIOS9v+eUqCBGaW5kQnlPcmRlck5vIOiOt+WPluiwg+acuumAgeajgOeVjOmdoueahOS4ieS4quaXtumXtFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXR1c1JlcyA9IGF3YWl0IHRoaXMuJHBvc3Qoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICcvTWVzT3JkZXJTdGEvRmluZEJ5T3JkZXJObycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVySWQ6IHRoaXMub3JkZXJJZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyTm86IHRoaXMud29ya09yZGVyTm9cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghc3RhdHVzUmVzIHx8ICFzdGF0dXNSZXMuZGF0YSB8fCAhc3RhdHVzUmVzLmRhdGEudGJCaWxsTGlzdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfojrflj5blt6XljZXnirbmgIHlpLHotKUnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kc2hvd01lc3NhZ2UoJ+iOt+WPluW3peWNleeKtuaAgeWksei0pScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXR1c0Zvcm0gPSBzdGF0dXNSZXMuZGF0YS50YkJpbGxMaXN0O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hU3RhcnRUaW1lID0gc3RhdHVzRm9ybS5tYVN0YXJ0VGltZTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYVNob3V0VGltZSA9IHN0YXR1c0Zvcm0ubWFTaG91dFRpbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFFbmRUaW1lID0gc3RhdHVzRm9ybS5tYUVuZFRpbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gMi4g5YeG5aSH6ZyA6KaB5pu05paw55qE5pe26Ze05pWw5o2uXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5lZWRTYXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHVwZGF0ZURhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBzdGF0dXNGb3JtLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcklkOiB0aGlzLm9yZGVySWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVObzogdGhpcy5tYWNoaW5lTm8sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWc6IC0xXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAvLyDorrDlvZXlk6rkupvmk43kvZzooqvmiafooYzkuoZcclxuICAgICAgICAgICAgICAgICAgICBsZXQgYWN0aW9ucyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIDMuIOS7juS4iuWIsOS4i+agueaNruaYvuekuuahhumHjOaYr+WQpuacieaXtumXtOS+neasoeiuvue9rlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOWmguaenOiwg+acuuW8gOWni+aXtumXtOS4uuepuu+8jOiuvue9ruiwg+acuuW8gOWni+aXtumXtFxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghbWFTdGFydFRpbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlRGF0YS5tYVN0YXJ0VGltZSA9IHRoaXMuJGdldERhdGUoJ3l5eXktbW0tZGQgaGgyNDptaTpzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVEYXRhLmZsYWcgPSAtMTsgLy8g6LCD5py65byA5aeL55qEZmxhZz0tMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZWVkU2F2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnMucHVzaCgn6LCD5py65byA5aeLJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlRGF0YS5tYVN0YXJ0VGltZSA9IG1hU3RhcnRUaW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAvLyDlpoLmnpzpgIHmo4Dlkbzlj6vml7bpl7TkuLrnqbrvvIzorr7nva7pgIHmo4Dlkbzlj6vml7bpl7RcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIW1hU2hvdXRUaW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZURhdGEubWFTaG91dFRpbWUgPSB0aGlzLiRnZXREYXRlKCd5eXl5LW1tLWRkIGhoMjQ6bWk6c3MnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlRGF0YS5mbGFnID0gMTsgLy8g6aaW5qyh6YCB5qOA5ZG85Y+r55qEZmxhZz0xXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRTYXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9ucy5wdXNoKCfpgIHmo4Dlkbzlj6snKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVEYXRhLm1hU2hvdXRUaW1lID0gbWFTaG91dFRpbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOiwg+acuuWujOaIkOaXtumXtOS/neaMgeS4jeWPmFxyXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZURhdGEubWFFbmRUaW1lID0gbWFFbmRUaW1lIHx8ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIDQuIOWmguaenOaciemcgOimgeabtOaWsOeahOaXtumXtO+8jOiwg+eUqOS/neWtmOaOpeWPo1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChuZWVkU2F2ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzYXZlUmVzID0gYXdhaXQgdGhpcy4kcG9zdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICcvTWVzT3JkZXJTdGEvQ2hhbmdlTWFjaGluZVRpbWUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogdXBkYXRlRGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzYXZlUmVzICYmIHNhdmVSZXMuZGF0YSAmJiBzYXZlUmVzLmRhdGEudGJCaWxsTGlzdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3VjY2Vzc01zZyA9IGFjdGlvbnMuam9pbign44CBJykgKyAn5oiQ5YqfJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJHNob3dNZXNzYWdlKHN1Y2Nlc3NNc2cpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+iwg+acuumAgeajgOeVjOmdouaXtumXtOiHquWKqOabtOaWsOaIkOWKnzonLCBhY3Rpb25zKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZhaWxNc2cgPSBhY3Rpb25zLmpvaW4oJ+OAgScpICsgJ+Wksei0pSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRzaG93TWVzc2FnZShmYWlsTXNnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+iwg+acuumAgeajgOeVjOmdouaXtumXtOiHquWKqOabtOaWsOWksei0pScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5omA5pyJ5pe26Ze06YO95bey5a2Y5Zyo77yM5peg6ZyA5pu05pawXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJHNob3dNZXNzYWdlKCfosIPmnLrlvIDlp4vlkozpgIHmo4Dlkbzlj6vlt7LlrozmiJAnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+iwg+acuuW8gOWni+WSjOmAgeajgOWRvOWPq+aXtumXtOW3suWtmOWcqO+8jOaXoOmcgOabtOaWsCcpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+iHquWKqOWkhOeQhuiwg+acuumAgeajgOeVjOmdouWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHNob3dNZXNzYWdlKCfoh6rliqjlpITnkIbosIPmnLrpgIHmo4DlpLHotKUnKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyDkuI3kuK3mlq3kuLvmtYHnqIvvvIzlj6rorrDlvZXplJnor69cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIOaWsOWinu+8muiOt+WPluiwg+acuuW4iOWCheWIl+ihqFxyXG4gICAgICAgICAgICBhc3luYyBmZXRjaFRpYW9qaVN0YWZmKCkge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLiRwb3N0KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnL01lc1N0YWZmL0dldEFsbFhTMDEwMUJZdGonIC8vIOS4juaKpeW3peeVjOmdouS9v+eUqOebuOWQjOaOpeWPo1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMuc3RhdHVzID09PSAwICYmIHJlcy5kYXRhICYmIHJlcy5kYXRhLnRiQmlsbExpc3QpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhZmYgPSByZXMuZGF0YS50YkJpbGxMaXN0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRpYW9qaVVzZXJzID0gc3RhZmYubWFwKHMgPT4gcy5zdGFmZk5vICsgJzonICsgcy5zdGFmZk5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+iOt+WPluiwg+acuuW4iOWCheWIl+ihqOWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBtb3VudGVkKCkge1xyXG4gICAgICAgICAgICB0aGlzLmZldGNoVG9vbHMoJycpO1xyXG4gICAgICAgICAgICB0aGlzLm1hY2hpbmVObyA9IHVuaS5nZXRTdG9yYWdlU3luYygnbWFjaGluZU5vJykgfHwgJyc7XHJcbiAgICAgICAgICAgIHRoaXMud29ya09yZGVyTm8gPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ2RhYTAwMScpIHx8ICcnO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgLy8g5paw5aKe77ya6I635Y+W6LCD5py65biI5YKF5YiX6KGoXHJcbiAgICAgICAgICAgIHRoaXMuZmV0Y2hUaWFvamlTdGFmZigpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMubWFjaGluZU5vICYmIHRoaXMud29ya09yZGVyTm8pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hGb3JtRGF0YSgpLnRoZW4oYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZmV0Y2hEZWZhdWx0VG9vbEZyb21Xb3JrT3JkZXIoKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyDov5vlhaXpobXpnaLml7botYvlgLznrKzkuIDooYwgY3VycmVudENqTnVtXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudG9vbFJlY29yZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRzZXQodGhpcy50b29sUmVjb3Jkc1swXSwgJ2N1cnJlbnRDak51bScsIHRoaXMud29ya09yZGVyQ3VycmVudENqTnVtKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybign5py65Y+w5Y+35oiW5bel5Y2V5Y+35Li656m677yM5peg5rOV6I635Y+W6KGo5Y2V5pWw5o2uJyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIOWQr+WKqOiHquWKqOS/neWtmOWumuaXtuWZqFxyXG4gICAgICAgICAgICAvL3RoaXMuc3RhcnRBdXRvU2F2ZSgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgYmVmb3JlRGVzdHJveSgpIHtcclxuICAgICAgICAgICAgLy8g5riF55CG5a6a5pe25Zmo77yM6Ziy5q2i5YaF5a2Y5rOE5ryPXHJcbiAgICAgICAgICAgIHRoaXMuc3RvcEF1dG9TYXZlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGUgc2NvcGVkPlxyXG4gICAgLnRvcC1zZWN0aW9uLWdyaWQge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuICAgICAgICBnYXA6IDEycHg7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMnZoO1xyXG4gICAgICAgIHdpZHRoOiA5OXZ3O1xyXG4gICAgICAgIG1heC13aWR0aDogMTkyMHB4O1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcclxuICAgICAgICBwYWRkaW5nOiAxMnB4O1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICNmOGY5ZmE7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlOWVjZWY7XHJcbiAgICB9XHJcblxyXG4gICAgLmZvcm0tcm93IHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDtcclxuICAgIH1cclxuXHJcbiAgICAgICAgLmZvcm0tcm93Omxhc3QtY2hpbGQge1xyXG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAuZm9ybS1jZWxsIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgbWluLXdpZHRoOiAwO1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMDtcclxuICAgIH1cclxuXHJcbiAgICAgICAgLmZvcm0tY2VsbDpudGgtY2hpbGQoMSkge1xyXG4gICAgICAgICAgICBmbGV4OiAwIDAgMjglO1xyXG4gICAgICAgICAgICBtaW4td2lkdGg6IDE4MHB4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmZvcm0tY2VsbDpudGgtY2hpbGQoMikge1xyXG4gICAgICAgICAgICBmbGV4OiAwIDAgMzIlO1xyXG4gICAgICAgICAgICBtaW4td2lkdGg6IDE4MHB4O1xyXG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuZm9ybS1jZWxsOm50aC1jaGlsZCgzKSB7XHJcbiAgICAgICAgICAgIGZsZXg6IDAgMCBhdXRvO1xyXG4gICAgICAgICAgICBtaW4td2lkdGg6IDA7XHJcbiAgICAgICAgICAgIG1heC13aWR0aDogMjIwcHg7IC8qIOmZkOWItuacgOWkp+WuveW6pu+8jOmBv+WFjeaSkeW8gCAqL1xyXG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAuZm9ybS1sYWJlbCB7XHJcbiAgICAgICAgd2lkdGg6IGF1dG87XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICAgICAgICBjb2xvcjogIzMzMztcclxuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogNHB4O1xyXG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMjJweDtcclxuICAgIH1cclxuXHJcbiAgICAuaW5wdXQge1xyXG4gICAgICAgIHBhZGRpbmc6IDE0cHggMjBweDtcclxuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZGNkZmU2O1xyXG4gICAgICAgIGZsZXg6IDE7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gICAgICAgIG1pbi13aWR0aDogMDtcclxuICAgICAgICBoZWlnaHQ6IDU2cHggIWltcG9ydGFudDtcclxuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMjJweDtcclxuICAgIH1cclxuXHJcbiAgICAgICAgLmlucHV0LnNtYWxsLWZvbnQge1xyXG4gICAgICAgICAgICAvKiDkuI3orr7nva7lrZfkvZPlpKflsI8gKi9cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5pbnB1dDpkaXNhYmxlZCB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY3ZmE7XHJcbiAgICAgICAgICAgIGNvbG9yOiAjYzBjNGNjO1xyXG4gICAgICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAuaW5wdXQtd2l0aC11bml0IHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgZ2FwOiAwO1xyXG4gICAgfVxyXG5cclxuICAgICAgICAuaW5wdXQtd2l0aC11bml0IC5pbnB1dCB7XHJcbiAgICAgICAgICAgIHdpZHRoOiA2MHB4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgIG1pbi13aWR0aDogMCAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDJweCAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMnB4O1xyXG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAycHg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuaW5wdXQtd2l0aC11bml0IC5pbnB1dCB7XHJcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNHB4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgIHdpZHRoOiA2MHB4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgIG1pbi13aWR0aDogMCAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIC51bml0LXRleHQge1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgZm9udC1zaXplOiAyMnB4ICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0bi1ibHVlLCAuYnRuLWJsdWUubGFyZ2UtYnRuIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTg5MGZmO1xyXG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgcGFkZGluZzogMTRweCAzMnB4O1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgICAgIGhlaWdodDogNzBweCAhaW1wb3J0YW50O1xyXG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3M7XHJcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XHJcbiAgICAgICAgbWluLXdpZHRoOiAxNDBweDtcclxuICAgICAgICBtYXJnaW4tbGVmdDogMjRweDtcclxuICAgIH1cclxuXHJcbiAgICAgICAgLmJ0bi1ibHVlLmxhcmdlLWJ0biB7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgNjBweDtcclxuICAgICAgICAgICAgbWluLXdpZHRoOiAxODBweDtcclxuICAgICAgICAgICAgaGVpZ2h0OiA3MnB4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4zZW07XHJcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDI0LDE0NCwyNTUsMC4wOCk7XHJcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiA3MnB4OyAvKiDlnoLnm7TlsYXkuK0gKi9cclxuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOyAvKiDkv53or4FsaW5lLWhlaWdodOeUn+aViCAqL1xyXG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmJ0bi1ibHVlOmhvdmVyIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzQwYTlmZjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5idG4tYmx1ZTphY3RpdmUge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDk2ZGQ5O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmJ0bi1ibHVlOmRpc2FibGVkIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZDogI2JhZTdmZjtcclxuICAgICAgICAgICAgY29sb3I6ICM5MWQ1ZmY7XHJcbiAgICAgICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIC5idXR0b24tcm93IHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgIGdhcDogMzJweDtcclxuICAgICAgICBtYXJnaW46IDJ2aCAwO1xyXG4gICAgfVxyXG5cclxuICAgIC5zYXZlLWJ0biwgLmNhbmNlbC1idG4ge1xyXG4gICAgICAgIHdpZHRoOiAyOCU7XHJcbiAgICAgICAgcGFkZGluZzogMS41dmg7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwQTJFOTtcclxuICAgICAgICBjb2xvcjogd2hpdGU7XHJcbiAgICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3M7XHJcbiAgICAgICAgZm9udC1zaXplOiAyMnB4O1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgICAgICAgYm94LXNoYWRvdzogMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcclxuICAgIH1cclxuXHJcbiAgICAuY2FuY2VsLWJ0biB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTtcclxuICAgICAgICBjb2xvcjogIzMzMztcclxuICAgIH1cclxuXHJcbiAgICAuc2F2ZS1idG46aG92ZXIge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM0MGE5ZmY7XHJcbiAgICB9XHJcblxyXG4gICAgLnNhdmUtYnRuOmFjdGl2ZSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzA5NmRkOTtcclxuICAgIH1cclxuXHJcbiAgICAuc2F2ZS1idG46ZGlzYWJsZWQsIC5jYW5jZWwtYnRuOmRpc2FibGVkIHtcclxuICAgICAgICBvcGFjaXR5OiAwLjY7XHJcbiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxuICAgIH1cclxuXHJcbiAgICAvKiDlvLnnqpfmoLflvI8gKi9cclxuICAgIC5kaWFsb2ctb3ZlcmxheSB7XHJcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgICAgIHRvcDogMDtcclxuICAgICAgICBsZWZ0OiAwO1xyXG4gICAgICAgIHJpZ2h0OiAwO1xyXG4gICAgICAgIGJvdHRvbTogMDtcclxuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuMTgpO1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICB6LWluZGV4OiAxMDAwO1xyXG4gICAgfVxyXG5cclxuICAgIC5kaWFsb2cge1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmY7XHJcbiAgICAgICAgcGFkZGluZzogM3ZoIDN2dztcclxuICAgICAgICBib3JkZXItcmFkaXVzOiAxOHB4O1xyXG4gICAgICAgIHdpZHRoOiA5MHZ3O1xyXG4gICAgICAgIG1heC13aWR0aDogMTYwMHB4O1xyXG4gICAgICAgIG1pbi1oZWlnaHQ6IDcwdmg7XHJcbiAgICAgICAgbWF4LWhlaWdodDogODV2aDtcclxuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICAgIGJveC1zaGFkb3c6IDAgOHB4IDMycHggcmdiYSgwLDAsMCwwLjEyKTtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICB9XHJcblxyXG4gICAgLmZvcm0tZ3JvdXAge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgZ2FwOiAxMnB4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMnZoO1xyXG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xyXG4gICAgfVxyXG5cclxuICAgICAgICAuZm9ybS1ncm91cCAuaW5wdXQge1xyXG4gICAgICAgICAgICBmbGV4OiAxO1xyXG4gICAgICAgICAgICBtaW4td2lkdGg6IDMwMHB4O1xyXG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmOGY4Zjg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIC50b29sLWxpc3Qge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xyXG4gICAgICAgIG1hcmdpbjogMXZoIDA7XHJcbiAgICAgICAgZmxleDogMTtcclxuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xyXG4gICAgICAgIGdhcDogMTJweDtcclxuICAgICAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gICAgfVxyXG5cclxuICAgIC50b29sLWJ0biB7XHJcbiAgICAgICAgZmxleDogMCAwIGNhbGMoMjAlIC0gMTBweCk7XHJcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgICBwYWRkaW5nOiAxMHB4IDEycHg7XHJcbiAgICAgICAgYmFja2dyb3VuZDogI2Y1ZjVmNTtcclxuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZDBkMGQwO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgY29sb3I6ICMzMzM7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgICAgICBtaW4taGVpZ2h0OiA1MHB4O1xyXG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xNXMsIGNvbG9yIDAuMTVzO1xyXG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgICAgICBsaW5lLWhlaWdodDogMS40O1xyXG4gICAgfVxyXG5cclxuICAgICAgICAudG9vbC1idG4uYWN0aXZlIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwQTJFOTtcclxuICAgICAgICAgICAgY29sb3I6ICNmZmY7XHJcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgICAgICBib3JkZXI6IDEuNXB4IHNvbGlkICMwMDg2YzI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIC5kaWFsb2ctYWN0aW9ucyB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICBtYXJnaW4tdG9wOiAydmg7XHJcbiAgICAgICAgcGFkZGluZy10b3A6IDJ2aDtcclxuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2VlZTtcclxuICAgICAgICBmbGV4LXNocmluazogMDtcclxuICAgIH1cclxuXHJcbiAgICAgICAgLmRpYWxvZy1hY3Rpb25zID4gZGl2OmZpcnN0LWNoaWxkIHtcclxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICAgICAgZ2FwOiAyNHB4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmRpYWxvZy1hY3Rpb25zID4gZGl2Omxhc3QtY2hpbGQge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gICAgICAgICAgICBnYXA6IDE4cHg7XHJcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuZGlhbG9nLWFjdGlvbnMgLmJ0bi1ibHVlIHtcclxuICAgICAgICAgICAgcGFkZGluZzogMTBweCAyNHB4O1xyXG4gICAgICAgICAgICBtaW4td2lkdGg6IDEyMHB4O1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDIycHg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIC5idG4tZGlzYWJsZWQge1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICNmMmYyZjI7XHJcbiAgICAgICAgY29sb3I6ICM5OTk7XHJcbiAgICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICAgIHBhZGRpbmc6IDEwcHggMjRweDtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgICAgICAgbWluLXdpZHRoOiAxMjBweDtcclxuICAgIH1cclxuXHJcbiAgICAudGFibGUtc2VjdGlvbiB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgICBtYXJnaW46IDF2aCAwO1xyXG4gICAgICAgIG92ZXJmbG93LXg6IGF1dG87XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7IC8qIOehruS/neihqOagvOWuueWZqOWNoOa7oeWuveW6piAqL1xyXG4gICAgfVxyXG5cclxuICAgIHRhYmxlLnN0eWxlZC10YWJsZSB7XHJcbiAgICAgICAgbWF4LXdpZHRoOiAxODAwcHg7IC8qIOS7jjE2MDBweOWinuWKoOWIsDE4MDBweCAqL1xyXG4gICAgICAgIHdpZHRoOiA5OHZ3OyAvKiDku445NXZ35aKe5Yqg5YiwOTh2dyAqL1xyXG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xyXG4gICAgICAgIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7XHJcbiAgICAgICAgYm9yZGVyLXNwYWNpbmc6IDA7XHJcbiAgICAgICAgYm9yZGVyOiAycHggc29saWQgI2JmYmZiZjtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XHJcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgICBib3gtc2hhZG93OiAwIDJweCAxMnB4IHJnYmEoMCwwLDAsMC4wNik7XHJcbiAgICB9XHJcblxyXG4gICAgICAgIHRhYmxlLnN0eWxlZC10YWJsZSB0aGVhZCB0aCB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmYWZhZmE7XHJcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjYmZiZmJmO1xyXG4gICAgICAgICAgICBwYWRkaW5nOiAxNnB4IDEwcHg7XHJcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjJweDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRhYmxlLnN0eWxlZC10YWJsZSB0Ym9keSB0ZCB7XHJcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZThlOGU4O1xyXG4gICAgICAgICAgICBwYWRkaW5nOiAxNHB4IDEwcHg7XHJcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAyMnB4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAudGFibGUtc2VjdGlvbiB0YWJsZSB0aDpmaXJzdC1jaGlsZCwgLnRhYmxlLXNlY3Rpb24gdGFibGUgdGQ6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgI2JmYmZiZjtcclxuICAgIH1cclxuXHJcbiAgICAudGFibGUtc2VjdGlvbiB0YWJsZSB0aDpsYXN0LWNoaWxkLCAudGFibGUtc2VjdGlvbiB0YWJsZSB0ZDpsYXN0LWNoaWxkIHtcclxuICAgICAgICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAjYmZiZmJmO1xyXG4gICAgfVxyXG5cclxuICAgIC5yb3ctb2RkIHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gICAgfVxyXG5cclxuICAgICAgICAucm93LW9kZCArIHRyIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZDogI2ZhZmFmYTtcclxuICAgICAgICB9XHJcblxyXG4gICAgLm51bSB7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XHJcbiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcclxuICAgIH1cclxuXHJcbiAgICAubGVmdCB7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDhweDtcclxuICAgIH1cclxuXHJcbiAgICAud2Fybi1jZWxsIHtcclxuICAgICAgICBjb2xvcjogI2Q5MzAyNTtcclxuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgIH1cclxuXHJcbiAgICAub2stY2VsbCB7XHJcbiAgICAgICAgY29sb3I6ICMzMzM7XHJcbiAgICB9XHJcblxyXG4gICAgLndhcm4tYmFkZ2Uge1xyXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjZmY0ZDRmO1xyXG4gICAgICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgICAgIHBhZGRpbmc6IDJweCA2cHg7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qIOWTjeW6lOW8j+iwg+aVtCAqL1xyXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDEyMDBweCkge1xyXG4gICAgICAgIC5mb3JtLWNlbGwge1xyXG4gICAgICAgICAgICBtYXJnaW46IDAgNHB4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmZvcm0tbGFiZWwge1xyXG4gICAgICAgICAgICB3aWR0aDogOTBweDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5pbnB1dCB7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMTRweDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5idG4tYmx1ZSB7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMThweDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmlucHV0LWxpZmUtd2FybiB7XHJcbiAgICAgICAgd2lkdGg6IDQ4cHggIWltcG9ydGFudDsgLyog56iN5b6u5pS+5a6977yM6YG/5YWN5a2X5L2T5rqi5Ye6ICovXHJcbiAgICAgICAgbWluLXdpZHRoOiAwICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA0cHg7XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAycHg7XHJcbiAgICAgICAgcGFkZGluZy1yaWdodDogMnB4O1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMjJweCAhaW1wb3J0YW50O1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgfVxyXG5cclxuICAgIC5pbnB1dCxcclxuICAgIC5pbnB1dC5zbWFsbC1mb250LFxyXG4gICAgLmlucHV0LXVzZS1saW1pdCxcclxuICAgIC5pbnB1dC10b29sLW1vZGVsLFxyXG4gICAgLmlucHV0LXRvb2wtbmFtZSxcclxuICAgIC5pbnB1dC1saWZlLXdhcm4ge1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMjJweCAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuICAgIC5pbnB1dC10b29sLW1vZGVsIHtcclxuICAgICAgICB3aWR0aDogMzIwcHggIWltcG9ydGFudDsgLyog5Y6f5Li6MjAwcHjvvIznjrDliqDplb8gKi9cclxuICAgICAgICBtaW4td2lkdGg6IDAgIWltcG9ydGFudDtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmlucHV0LXRvb2wtbmFtZSB7XHJcbiAgICAgICAgd2lkdGg6IDEyMHB4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgbWluLXdpZHRoOiAwICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxNnB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5oaWdobGlnaHQtbGFiZWwge1xyXG4gICAgICAgIGNvbG9yOiAjMTg5MGZmICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLnRvb2wtZGlyLWNlbGwge1xyXG4gICAgICAgIGZsZXg6IDAgMCBhdXRvICFpbXBvcnRhbnQ7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDE2cHg7IC8qIOS4juinhOagvOWei+WPt+i+k+WFpeahhuaLieW8gOi3neemuyAqL1xyXG4gICAgfVxyXG5cclxuICAgIC5mb3JtLWNlbGwtZmxleCB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgIGZsZXg6IDAgMCA2MCU7XHJcbiAgICAgICAgbWluLXdpZHRoOiAzMjBweDtcclxuICAgIH1cclxuXHJcbiAgICAgICAgLmZvcm0tY2VsbC1mbGV4IC5mb3JtLWxhYmVsIHtcclxuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA0cHg7XHJcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmZvcm0tY2VsbC1mbGV4IC5pbnB1dC11c2UtbGltaXQge1xyXG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDEycHg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIC5pbnB1dC11c2UtbGltaXQge1xyXG4gICAgICAgIHdpZHRoOiA0NTBweCAhaW1wb3J0YW50O1xyXG4gICAgICAgIG1pbi13aWR0aDogMCAhaW1wb3J0YW50O1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMTZweDtcclxuICAgICAgICBmbGV4OiBub25lICFpbXBvcnRhbnQ7IC8qIOWFs+mUru+8muW9u+W6leemgeatomZsZXjmi4nkvLggKi9cclxuICAgIH1cclxuXHJcbiAgICAvKiDmlrDlop7vvJrosIPmnLrljLrln5/moLflvI8gKi9cclxuICAgIC50aWFvamktc2VjdGlvbiB7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgbWFyZ2luOiAydmggMDtcclxuICAgICAgICBwYWRkaW5nOiAyMHB4O1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICNmOGY5ZmE7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlOWVjZWY7XHJcbiAgICB9XHJcblxyXG4gICAgLnRpYW9qaS1yb3cge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgZ2FwOiAyMHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC8qIOW9k+WJjeiwg+acuuW4iOWCheWMuuWfnyAtIOS4juaKpeW3peeVjOmdouS/neaMgeS4gOiHtCAqL1xyXG4gICAgLmN1cnJlbnQtdXNlci1zZWN0aW9uIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgZm9udC1zaXplOiAyMnB4O1xyXG4gICAgICAgIGJvcmRlcjogMS41cHggc29saWQgI2YwMDtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xyXG4gICAgICAgIHBhZGRpbmc6IDE0cHggMjJweDtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gICAgICAgIGdhcDogMTRweDtcclxuICAgICAgICBmbGV4OiAwIDAgYXV0bztcclxuICAgIH1cclxuXHJcbiAgICAuY3VycmVudC11c2VyLW5hbWUge1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMjJweDtcclxuICAgIH1cclxuXHJcbiAgICAvKiDpgInkurrmjInpkq4gLSDok53oibLkuLvpopjvvIzkuI7miqXlt6XnlYzpnaLkv53mjIHkuIDoh7QgKi9cclxuICAgIC5zZWxlY3QtdXNlci1idG4ge1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICMwMGEyZTk7XHJcbiAgICAgICAgY29sb3I6ICNmZmY7XHJcbiAgICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICAgIHBhZGRpbmc6IDEycHggMjJweDtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMjJweDtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cztcclxuICAgICAgICBoZWlnaHQ6IDY2cHg7XHJcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgICAgIC5zZWxlY3QtdXNlci1idG46aG92ZXIge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDA4YWMyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAvKiDosIPmnLrmlbDph4/ovpPlhaXljLrln58gKi9cclxuICAgIC50aWFvamktaW5wdXQtc2VjdGlvbiB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgIGdhcDogMTRweDtcclxuICAgICAgICBmb250LXNpemU6IDIycHg7XHJcbiAgICB9XHJcblxyXG4gICAgLnRpYW9qaS1pbnB1dCB7XHJcbiAgICAgICAgd2lkdGg6IDIwMHB4O1xyXG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgICAgICBoZWlnaHQ6IDY2cHg7XHJcbiAgICAgICAgYm9yZGVyOiAycHggc29saWQgIzgwODA4MDtcclxuICAgICAgICBmb250LXNpemU6IDI4cHg7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcclxuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgfVxyXG5cclxuICAgIC8qIOmAgeajgOWRvOWPq+aMiemSriAtIOS4juaKpeW3peeVjOmdoueahOehruiupOaPkOS6pOaMiemSruS/neaMgeS4gOiHtCAqL1xyXG4gICAgLmRldGFpbHMtYnRuIHtcclxuICAgICAgICBwYWRkaW5nOiAxMnB4IDM0cHg7XHJcbiAgICAgICAgYmFja2dyb3VuZDogIzAwYTJlOTtcclxuICAgICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgICBmb250LXNpemU6IDMycHg7XHJcbiAgICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xyXG4gICAgICAgIGhlaWdodDogNjZweDtcclxuICAgICAgICBtaW4td2lkdGg6IDE4MHB4O1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE7XHJcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTVzO1xyXG4gICAgfVxyXG5cclxuICAgICAgICAuZGV0YWlscy1idG46aG92ZXIge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDA4YWMyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmRldGFpbHMtYnRuOmRpc2FibGVkIHtcclxuICAgICAgICAgICAgb3BhY2l0eTogMC42O1xyXG4gICAgICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjYmFlN2ZmO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAudGlhb2ppLXN1Ym1pdC1zZWN0aW9uIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgLyog6YCJ5Lq65by556qX5qC35byPIC0g5LiO5oql5bel55WM6Z2i5L+d5oyB5LiA6Ie0ICovXHJcbiAgICAub3ZlcmxheSB7XHJcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgICAgIHRvcDogMDtcclxuICAgICAgICBsZWZ0OiAwO1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLC40NSk7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgIHotaW5kZXg6IDEwMDA7XHJcbiAgICB9XHJcblxyXG4gICAgLnVzZXItc2VsZWN0LXBvcHVwIHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gICAgICAgIHdpZHRoOiAxNjAwcHg7XHJcbiAgICAgICAgbWF4LXdpZHRoOiA5OXZ3O1xyXG4gICAgICAgIG1pbi13aWR0aDogMTAwMHB4O1xyXG4gICAgICAgIGhlaWdodDogYXV0bztcclxuICAgICAgICBtaW4taGVpZ2h0OiA1MjBweDtcclxuICAgICAgICBwYWRkaW5nOiAwO1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgICBmb250LXNpemU6IDMycHg7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcclxuICAgICAgICBib3gtc2hhZG93OiAwIDhweCAzMnB4IHJnYmEoMCwwLDAsMC4xMik7XHJcbiAgICAgICAgei1pbmRleDogMTAwMTtcclxuICAgIH1cclxuXHJcbiAgICAudXNlci1zZWFyY2gtYmFyIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgZ2FwOiAxOHB4O1xyXG4gICAgICAgIHBhZGRpbmc6IDI0cHggNjRweCAwIDY0cHg7XHJcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmZjtcclxuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgICB9XHJcblxyXG4gICAgLnVzZXItc2VhcmNoLWlucHV0IHtcclxuICAgICAgICBmbGV4OiAxIDEgMjYwcHg7XHJcbiAgICAgICAgcGFkZGluZzogMTZweCAyMHB4O1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMjhweDtcclxuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjYmJiO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcclxuICAgICAgICBvdXRsaW5lOiBub25lO1xyXG4gICAgICAgIGhlaWdodDogNTRweDtcclxuICAgIH1cclxuXHJcbiAgICAgICAgLnVzZXItc2VhcmNoLWlucHV0OmZvY3VzIHtcclxuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjMDA3YWZmO1xyXG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggcmdiYSgwLDEyMiwyNTUsLjE1KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgLnVzZXItc2VhcmNoLWNsZWFyIHtcclxuICAgICAgICBwYWRkaW5nOiAxMnB4IDI4cHg7XHJcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmOWY0MztcclxuICAgICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMjRweDtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgICAgIC51c2VyLXNlYXJjaC1jbGVhcjpob3ZlciB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZjg5MjA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIC51c2VyLXNlYXJjaC1pbmZvIHtcclxuICAgICAgICBmb250LXNpemU6IDIycHg7XHJcbiAgICAgICAgY29sb3I6ICM1NTU7XHJcbiAgICB9XHJcblxyXG4gICAgLnVzZXItbGlzdC1zY3JvbGwge1xyXG4gICAgICAgIGZsZXg6IDEgMSBhdXRvO1xyXG4gICAgICAgIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgICAgICAgcGFkZGluZzogMzJweCA2NHB4IDAgNjRweDtcclxuICAgIH1cclxuXHJcbiAgICAudXNlci1saXN0LWdyaWQge1xyXG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XHJcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLG1pbm1heCgyMDBweCwxZnIpKTtcclxuICAgICAgICBnYXA6IDIycHggMjJweDtcclxuICAgIH1cclxuXHJcbiAgICAudXNlci1saXN0LWJ0biB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgZ2FwOiAycHg7XHJcbiAgICAgICAgcGFkZGluZzogMTBweCAxMHB4O1xyXG4gICAgICAgIGhlaWdodDogMTAwcHg7XHJcbiAgICAgICAgZm9udC1zaXplOiAzMHB4O1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICMwMGEyZTk7XHJcbiAgICAgICAgY29sb3I6ICNmZmY7XHJcbiAgICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xyXG4gICAgfVxyXG5cclxuICAgICAgICAudXNlci1saXN0LWJ0biAudXNlci1jb2RlIHtcclxuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAzNnB4O1xyXG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS4xO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnVzZXItbGlzdC1idG4gLnVzZXItbmFtZSB7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMzJweDtcclxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC51c2VyLWxpc3QtYnRuLnNlbGVjdGVkIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwNzJjOTtcclxuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMjU1LDI1NSwyNTUsLjYpIGluc2V0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnVzZXItbGlzdC1idG46aG92ZXIge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDA4ZWQwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAubm8tdXNlci1yZXN1bHQge1xyXG4gICAgICAgIHBhZGRpbmc6IDQwcHggMDtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgZm9udC1zaXplOiAyOHB4O1xyXG4gICAgICAgIGNvbG9yOiAjNjY2O1xyXG4gICAgfVxyXG5cclxuICAgIC51c2VyLXBvcHVwLWZvb3RlciB7XHJcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XHJcbiAgICAgICAgcGFkZGluZzogMjRweCA2NHB4IDMycHggNjRweDtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIH1cclxuXHJcbiAgICAuY2xlYW4tYnRuIHtcclxuICAgICAgICB3aWR0aDogMjQlO1xyXG4gICAgICAgIHBhZGRpbmc6IDEwcHggMDtcclxuICAgICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC42dnc7XHJcbiAgICAgICAgYmFja2dyb3VuZDogIzAwN2FmZjtcclxuICAgIH1cclxuXHJcbiAgICAgICAgLmNsZWFuLWJ0bi53aWRlLWJ0biB7XHJcbiAgICAgICAgICAgIHdpZHRoOiAzMCU7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjJweDtcclxuICAgICAgICAgICAgcGFkZGluZzogMTJweCAwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmNsZWFuLWJ0bjpob3ZlciB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDYyYzk7XHJcbiAgICAgICAgfVxyXG48L3N0eWxlPiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///62\n");
 
 /***/ }),
 /* 63 */

--
Gitblit v1.9.3