my-orders-tickets-widget 1.0.0-beta.34 → 1.0.0-beta.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/i18n.js +2 -2
- package/dist/index.css +12 -3
- package/dist/index.js +215 -93
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -397,7 +397,7 @@ const getTicketsByOrder = _ref6 => {
|
|
|
397
397
|
const params = {
|
|
398
398
|
access_token: accessToken,
|
|
399
399
|
"filter[]": [],
|
|
400
|
-
expand: "refund_requests,owner,owner.extra_questions,badge,badge.features,ticket_type",
|
|
400
|
+
expand: "refund_requests,refund_requests.refunded_taxes,refund_requests.refunded_taxes.tax,owner,owner.extra_questions,badge,badge.features,ticket_type",
|
|
401
401
|
order: "+id",
|
|
402
402
|
page,
|
|
403
403
|
per_page: perPage
|
|
@@ -4079,7 +4079,7 @@ TicketCTAs.propTypes = {
|
|
|
4079
4079
|
onOpenClick: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func).isRequired
|
|
4080
4080
|
};
|
|
4081
4081
|
const OrderListTickets = _ref2 => {
|
|
4082
|
-
var _ticket$ticket_type, _ticket$badge, _ticket$order, _ticket$owner, _ticket$owner2, _ticket$owner3;
|
|
4082
|
+
var _ticket$ticket_type, _ticket$badge, _ticket$order, _ticket$owner, _ticket$order2, _ticket$owner2, _ticket$order3, _ticket$owner3;
|
|
4083
4083
|
let {
|
|
4084
4084
|
ticket,
|
|
4085
4085
|
summit,
|
|
@@ -4102,7 +4102,9 @@ const OrderListTickets = _ref2 => {
|
|
|
4102
4102
|
} = (0,_hooks_useTicketDetails__WEBPACK_IMPORTED_MODULE_12__.useTicketDetails)(ticket);
|
|
4103
4103
|
const [modalOpen, setModalOpen] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);
|
|
4104
4104
|
const reassignDate = (0,_utils_summitUtils__WEBPACK_IMPORTED_MODULE_8__.getSummitReassignDate)(summit);
|
|
4105
|
-
const
|
|
4105
|
+
const onReassignablePeriod = reassignDate > now;
|
|
4106
|
+
const isReassignable = onReassignablePeriod && canReassign && !_isExternalAssignedTicket;
|
|
4107
|
+
const isAssignable = onReassignablePeriod && isUnassigned && !_isExternalAssignedTicket;
|
|
4106
4108
|
const handleCloseModal = () => {
|
|
4107
4109
|
dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_16__.resetTicket)());
|
|
4108
4110
|
setModalOpen(null);
|
|
@@ -4223,22 +4225,20 @@ const OrderListTickets = _ref2 => {
|
|
|
4223
4225
|
ownerId: ticket === null || ticket === void 0 || (_ticket$owner = ticket.owner) === null || _ticket$owner === void 0 ? void 0 : _ticket$owner.id,
|
|
4224
4226
|
open: modalOpen === modalViews.detail,
|
|
4225
4227
|
onClose: handleCloseModal
|
|
4226
|
-
}), isReassignable &&
|
|
4227
|
-
|
|
4228
|
-
|
|
4229
|
-
|
|
4230
|
-
|
|
4231
|
-
|
|
4232
|
-
|
|
4233
|
-
|
|
4234
|
-
|
|
4235
|
-
|
|
4236
|
-
|
|
4237
|
-
|
|
4238
|
-
|
|
4239
|
-
|
|
4240
|
-
onClose: handleCloseModal
|
|
4241
|
-
})]
|
|
4228
|
+
}), isReassignable && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_TicketReassign__WEBPACK_IMPORTED_MODULE_13__["default"], {
|
|
4229
|
+
summit: summit,
|
|
4230
|
+
ticketId: ticket === null || ticket === void 0 ? void 0 : ticket.id,
|
|
4231
|
+
orderId: (ticket === null || ticket === void 0 ? void 0 : ticket.order_id) || (ticket === null || ticket === void 0 || (_ticket$order2 = ticket.order) === null || _ticket$order2 === void 0 ? void 0 : _ticket$order2.id),
|
|
4232
|
+
ownerId: ticket === null || ticket === void 0 || (_ticket$owner2 = ticket.owner) === null || _ticket$owner2 === void 0 ? void 0 : _ticket$owner2.id,
|
|
4233
|
+
open: modalOpen === modalViews.reassign,
|
|
4234
|
+
onClose: handleCloseModal
|
|
4235
|
+
}), isAssignable && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_TicketAssign__WEBPACK_IMPORTED_MODULE_15__["default"], {
|
|
4236
|
+
summit: summit,
|
|
4237
|
+
ticketId: ticket === null || ticket === void 0 ? void 0 : ticket.id,
|
|
4238
|
+
orderId: (ticket === null || ticket === void 0 ? void 0 : ticket.order_id) || (ticket === null || ticket === void 0 || (_ticket$order3 = ticket.order) === null || _ticket$order3 === void 0 ? void 0 : _ticket$order3.id),
|
|
4239
|
+
ownerId: ticket === null || ticket === void 0 || (_ticket$owner3 = ticket.owner) === null || _ticket$owner3 === void 0 ? void 0 : _ticket$owner3.id,
|
|
4240
|
+
open: modalOpen === modalViews.assign,
|
|
4241
|
+
onClose: handleCloseModal
|
|
4242
4242
|
})]
|
|
4243
4243
|
})]
|
|
4244
4244
|
}, ticket.id);
|
|
@@ -4464,6 +4464,7 @@ const OrdersListDesktopMobile = _ref => {
|
|
|
4464
4464
|
unselectRefundTickets: unselectRefundTickets
|
|
4465
4465
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_RefundRequests_RefundDetails__WEBPACK_IMPORTED_MODULE_11__["default"], {
|
|
4466
4466
|
tickets: order === null || order === void 0 ? void 0 : order.memberTickets,
|
|
4467
|
+
currency: order.currency,
|
|
4467
4468
|
open: refundDetailsOpen,
|
|
4468
4469
|
onCloseSlider: () => setRefundDetailsOpen(false)
|
|
4469
4470
|
})]
|
|
@@ -4654,6 +4655,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
4654
4655
|
const RefundDetails = _ref => {
|
|
4655
4656
|
let {
|
|
4656
4657
|
tickets,
|
|
4658
|
+
currency,
|
|
4657
4659
|
open,
|
|
4658
4660
|
onCloseSlider
|
|
4659
4661
|
} = _ref;
|
|
@@ -4677,6 +4679,7 @@ const RefundDetails = _ref => {
|
|
|
4677
4679
|
},
|
|
4678
4680
|
children: requestedTickets === null || requestedTickets === void 0 ? void 0 : requestedTickets.map(ticket => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_RefundRequestedTicket__WEBPACK_IMPORTED_MODULE_5__["default"], {
|
|
4679
4681
|
ticket: ticket,
|
|
4682
|
+
currency: currency,
|
|
4680
4683
|
refundDetails: true
|
|
4681
4684
|
}, "refund_req_".concat(ticket === null || ticket === void 0 ? void 0 : ticket.id)))
|
|
4682
4685
|
})
|
|
@@ -4701,23 +4704,48 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
4701
4704
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
4702
4705
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
4703
4706
|
/* harmony export */ });
|
|
4704
|
-
/* harmony import */ var
|
|
4705
|
-
/* harmony import */ var
|
|
4706
|
-
/* harmony import */ var
|
|
4707
|
-
/* harmony import */ var
|
|
4708
|
-
/* harmony import */ var
|
|
4709
|
-
/* harmony import */ var
|
|
4710
|
-
/* harmony import */ var
|
|
4711
|
-
/* harmony import */ var
|
|
4712
|
-
/* harmony import */ var
|
|
4713
|
-
/* harmony import */ var
|
|
4714
|
-
/* harmony import */ var
|
|
4715
|
-
/* harmony import */ var
|
|
4716
|
-
/* harmony import */ var
|
|
4717
|
-
/* harmony import */ var
|
|
4718
|
-
/* harmony import */ var
|
|
4719
|
-
/* harmony import */ var
|
|
4720
|
-
/* harmony import */ var
|
|
4707
|
+
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "@babel/runtime/helpers/defineProperty");
|
|
4708
|
+
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
|
|
4709
|
+
/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "@babel/runtime/helpers/objectWithoutProperties");
|
|
4710
|
+
/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__);
|
|
4711
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");
|
|
4712
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
|
|
4713
|
+
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prop-types */ "prop-types");
|
|
4714
|
+
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);
|
|
4715
|
+
/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-i18next */ "react-i18next");
|
|
4716
|
+
/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_4__);
|
|
4717
|
+
/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ "@mui/material");
|
|
4718
|
+
/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_5__);
|
|
4719
|
+
/* harmony import */ var _mui_material_Tooltip__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material/Tooltip */ "@mui/material/Tooltip");
|
|
4720
|
+
/* harmony import */ var _mui_material_Tooltip__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_mui_material_Tooltip__WEBPACK_IMPORTED_MODULE_6__);
|
|
4721
|
+
/* harmony import */ var _mui_material_styles__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material/styles */ "@mui/material/styles");
|
|
4722
|
+
/* harmony import */ var _mui_material_styles__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_mui_material_styles__WEBPACK_IMPORTED_MODULE_7__);
|
|
4723
|
+
/* harmony import */ var _mui_icons_material_Info__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/icons-material/Info */ "@mui/icons-material/Info");
|
|
4724
|
+
/* harmony import */ var _mui_icons_material_Info__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_mui_icons_material_Info__WEBPACK_IMPORTED_MODULE_8__);
|
|
4725
|
+
/* harmony import */ var _mui_material_Stack__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material/Stack */ "@mui/material/Stack");
|
|
4726
|
+
/* harmony import */ var _mui_material_Stack__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_mui_material_Stack__WEBPACK_IMPORTED_MODULE_9__);
|
|
4727
|
+
/* harmony import */ var moment_timezone__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! moment-timezone */ "moment-timezone");
|
|
4728
|
+
/* harmony import */ var moment_timezone__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(moment_timezone__WEBPACK_IMPORTED_MODULE_10__);
|
|
4729
|
+
/* harmony import */ var _OrdersList_AttendeeStatus__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../OrdersList/AttendeeStatus */ "./src/components/OrdersList/AttendeeStatus.js");
|
|
4730
|
+
/* harmony import */ var _RefundStatus__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./RefundStatus */ "./src/components/RefundRequests/RefundStatus.js");
|
|
4731
|
+
/* harmony import */ var _CopyText__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../CopyText */ "./src/components/CopyText/index.js");
|
|
4732
|
+
/* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/RefundRequests/styles.module.scss");
|
|
4733
|
+
/* harmony import */ var _TicketStatus__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../TicketStatus */ "./src/components/TicketStatus/index.js");
|
|
4734
|
+
/* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../utils/constants */ "./src/utils/constants.js");
|
|
4735
|
+
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../utils */ "./src/utils/index.js");
|
|
4736
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
|
|
4737
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__);
|
|
4738
|
+
|
|
4739
|
+
|
|
4740
|
+
const _excluded = ["className"];
|
|
4741
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
4742
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4743
|
+
|
|
4744
|
+
|
|
4745
|
+
|
|
4746
|
+
|
|
4747
|
+
|
|
4748
|
+
|
|
4721
4749
|
|
|
4722
4750
|
|
|
4723
4751
|
|
|
@@ -4733,70 +4761,143 @@ const RefundRequestedTicket = _ref => {
|
|
|
4733
4761
|
var _ticket$ticket_type, _ticket$badge;
|
|
4734
4762
|
let {
|
|
4735
4763
|
ticket,
|
|
4764
|
+
currency,
|
|
4736
4765
|
refundDetails
|
|
4737
4766
|
} = _ref;
|
|
4738
4767
|
const {
|
|
4739
4768
|
t
|
|
4740
|
-
} = (0,
|
|
4741
|
-
const
|
|
4769
|
+
} = (0,react_i18next__WEBPACK_IMPORTED_MODULE_4__.useTranslation)();
|
|
4770
|
+
const GRID_8 = 8;
|
|
4742
4771
|
const GRID_12 = 12;
|
|
4743
|
-
|
|
4772
|
+
const PADDING_2 = 2;
|
|
4773
|
+
const approvedRefunds = ticket.refund_requests.filter(refund => refund.status === "Approved");
|
|
4774
|
+
const refundedTaxesSummatory = {};
|
|
4775
|
+
approvedRefunds.forEach(refund => {
|
|
4776
|
+
refund.refunded_taxes.forEach(rt => {
|
|
4777
|
+
const taxId = rt.tax.id;
|
|
4778
|
+
if (!refundedTaxesSummatory[taxId]) {
|
|
4779
|
+
refundedTaxesSummatory[taxId] = {
|
|
4780
|
+
name: rt.tax.name,
|
|
4781
|
+
totalRefundedTaxAmount: 0
|
|
4782
|
+
};
|
|
4783
|
+
}
|
|
4784
|
+
refundedTaxesSummatory[taxId].totalRefundedTaxAmount += rt.refunded_amount;
|
|
4785
|
+
});
|
|
4786
|
+
});
|
|
4787
|
+
const HtmlTooltip = (0,_mui_material_styles__WEBPACK_IMPORTED_MODULE_7__.styled)(_ref2 => {
|
|
4788
|
+
let {
|
|
4789
|
+
className
|
|
4790
|
+
} = _ref2,
|
|
4791
|
+
props = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(_ref2, _excluded);
|
|
4792
|
+
return (
|
|
4793
|
+
/*#__PURE__*/
|
|
4794
|
+
// eslint-disable-next-line
|
|
4795
|
+
(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Tooltip, _objectSpread(_objectSpread({}, props), {}, {
|
|
4796
|
+
classes: {
|
|
4797
|
+
popper: className
|
|
4798
|
+
}
|
|
4799
|
+
}))
|
|
4800
|
+
);
|
|
4801
|
+
})(() => ({
|
|
4802
|
+
["& .".concat(_mui_material_Tooltip__WEBPACK_IMPORTED_MODULE_6__.tooltipClasses.tooltip)]: {
|
|
4803
|
+
backgroundColor: "#f5f5f9",
|
|
4804
|
+
color: "rgba(0, 0, 0, 0.87)",
|
|
4805
|
+
maxWidth: 220,
|
|
4806
|
+
fontSize: "1em",
|
|
4807
|
+
border: "1px solid #dadde9"
|
|
4808
|
+
}
|
|
4809
|
+
}));
|
|
4810
|
+
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
|
|
4744
4811
|
container: true,
|
|
4745
|
-
className:
|
|
4812
|
+
className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_14__.refundTicketBoxContainer, " ").concat(refundDetails ? _styles_module_scss__WEBPACK_IMPORTED_MODULE_14__.refundDetail : "", " "),
|
|
4746
4813
|
"data-testid": "refund-requested-ticket-container",
|
|
4747
|
-
children: [/*#__PURE__*/(0,
|
|
4748
|
-
xs: refundDetails ?
|
|
4814
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
|
|
4815
|
+
xs: refundDetails ? GRID_8 : GRID_12,
|
|
4749
4816
|
item: true,
|
|
4750
4817
|
justify: "space-between",
|
|
4751
4818
|
pt: 2,
|
|
4752
4819
|
px: 4,
|
|
4753
|
-
children: /*#__PURE__*/(0,
|
|
4820
|
+
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)((_mui_material_Stack__WEBPACK_IMPORTED_MODULE_9___default()), {
|
|
4754
4821
|
sx: {
|
|
4755
4822
|
justifyContent: "space-between",
|
|
4756
4823
|
alignItems: "center"
|
|
4757
4824
|
},
|
|
4758
4825
|
direction: "row",
|
|
4759
|
-
children: [/*#__PURE__*/(0,
|
|
4826
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)("h4", {
|
|
4760
4827
|
children: (_ticket$ticket_type = ticket.ticket_type) === null || _ticket$ticket_type === void 0 ? void 0 : _ticket$ticket_type.name
|
|
4761
|
-
}), /*#__PURE__*/(0,
|
|
4762
|
-
className:
|
|
4828
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
|
|
4829
|
+
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_14__.badgeFeatureWrapper,
|
|
4763
4830
|
xs: 4,
|
|
4764
4831
|
item: true,
|
|
4765
|
-
children: (_ticket$badge = ticket.badge) === null || _ticket$badge === void 0 ? void 0 : _ticket$badge.features.map(bf => /*#__PURE__*/(0,
|
|
4766
|
-
className:
|
|
4832
|
+
children: (_ticket$badge = ticket.badge) === null || _ticket$badge === void 0 ? void 0 : _ticket$badge.features.map(bf => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)("img", {
|
|
4833
|
+
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_14__.badgeFeature,
|
|
4767
4834
|
src: bf.image,
|
|
4768
4835
|
alt: bf.name
|
|
4769
4836
|
}, bf.name))
|
|
4770
4837
|
})]
|
|
4771
4838
|
})
|
|
4772
|
-
}), refundDetails && /*#__PURE__*/(0,
|
|
4773
|
-
xs:
|
|
4839
|
+
}), refundDetails && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
|
|
4840
|
+
xs: 4,
|
|
4774
4841
|
padding: 2,
|
|
4775
4842
|
item: true,
|
|
4776
|
-
children: /*#__PURE__*/(0,
|
|
4843
|
+
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_RefundStatus__WEBPACK_IMPORTED_MODULE_12__["default"], {
|
|
4777
4844
|
ticket: ticket
|
|
4778
4845
|
})
|
|
4779
|
-
}), /*#__PURE__*/(0,
|
|
4846
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
|
|
4780
4847
|
xs: 12,
|
|
4781
4848
|
item: true,
|
|
4782
4849
|
px: 4,
|
|
4783
|
-
|
|
4784
|
-
|
|
4785
|
-
|
|
4786
|
-
|
|
4787
|
-
className:
|
|
4788
|
-
children: [
|
|
4789
|
-
|
|
4850
|
+
pb: refundDetails ? PADDING_2 : 0,
|
|
4851
|
+
container: true,
|
|
4852
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
|
|
4853
|
+
xs: 8,
|
|
4854
|
+
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_14__.refundTicketAttendee,
|
|
4855
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_OrdersList_AttendeeStatus__WEBPACK_IMPORTED_MODULE_11__["default"], {
|
|
4856
|
+
ticket: ticket
|
|
4857
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)("span", {
|
|
4858
|
+
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_14__.ticketNo,
|
|
4859
|
+
children: [t("ticket_status.ticket_no"), ": ", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_CopyText__WEBPACK_IMPORTED_MODULE_13__["default"], {
|
|
4860
|
+
text: ticket.number
|
|
4861
|
+
})]
|
|
4790
4862
|
})]
|
|
4863
|
+
}), refundDetails && ticket.total_refunded_amount > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
|
|
4864
|
+
xs: 4,
|
|
4865
|
+
pl: 4,
|
|
4866
|
+
children: [(0,_utils__WEBPACK_IMPORTED_MODULE_17__.formatCurrency)(ticket.total_refunded_amount, {
|
|
4867
|
+
currency
|
|
4868
|
+
}), " ", "Refunded", approvedRefunds.some(r => r.refunded_taxes.length > 0) && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(HtmlTooltip, {
|
|
4869
|
+
title: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.Fragment, {
|
|
4870
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)("p", {
|
|
4871
|
+
children: [(0,_utils__WEBPACK_IMPORTED_MODULE_17__.formatCurrency)(ticket.refunded_amount, {
|
|
4872
|
+
currency
|
|
4873
|
+
}), " ", "Ticket Amount"]
|
|
4874
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)("b", {
|
|
4875
|
+
children: "Taxes"
|
|
4876
|
+
}), Object.keys(refundedTaxesSummatory).map(taxId => {
|
|
4877
|
+
const {
|
|
4878
|
+
totalRefundedTaxAmount,
|
|
4879
|
+
name
|
|
4880
|
+
} = refundedTaxesSummatory[taxId];
|
|
4881
|
+
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)("p", {
|
|
4882
|
+
children: "".concat(name, " - ").concat((0,_utils__WEBPACK_IMPORTED_MODULE_17__.formatCurrency)(totalRefundedTaxAmount, {
|
|
4883
|
+
currency
|
|
4884
|
+
}))
|
|
4885
|
+
}, taxId);
|
|
4886
|
+
})]
|
|
4887
|
+
}),
|
|
4888
|
+
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.IconButton, {
|
|
4889
|
+
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)((_mui_icons_material_Info__WEBPACK_IMPORTED_MODULE_8___default()), {})
|
|
4890
|
+
})
|
|
4891
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)("br", {}), moment_timezone__WEBPACK_IMPORTED_MODULE_10___default()(ticket.refund_requests[0].action_date * _utils_constants__WEBPACK_IMPORTED_MODULE_16__.MILLISEC_TO_SEC).format("MMM DD, YYYY")]
|
|
4791
4892
|
})]
|
|
4792
|
-
}), !refundDetails && /*#__PURE__*/(0,
|
|
4893
|
+
}), !refundDetails && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
|
|
4793
4894
|
xs: 12,
|
|
4794
4895
|
pr: 4,
|
|
4795
4896
|
pb: 2,
|
|
4796
|
-
children: /*#__PURE__*/(0,
|
|
4897
|
+
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
|
|
4797
4898
|
xs: 12,
|
|
4798
4899
|
item: true,
|
|
4799
|
-
children: /*#__PURE__*/(0,
|
|
4900
|
+
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_TicketStatus__WEBPACK_IMPORTED_MODULE_15__["default"], {
|
|
4800
4901
|
ticket: ticket
|
|
4801
4902
|
})
|
|
4802
4903
|
})
|
|
@@ -4804,8 +4905,8 @@ const RefundRequestedTicket = _ref => {
|
|
|
4804
4905
|
});
|
|
4805
4906
|
};
|
|
4806
4907
|
RefundRequestedTicket.propTypes = {
|
|
4807
|
-
ticket: (
|
|
4808
|
-
refundDetails: (
|
|
4908
|
+
ticket: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().object),
|
|
4909
|
+
refundDetails: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool)
|
|
4809
4910
|
};
|
|
4810
4911
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RefundRequestedTicket);
|
|
4811
4912
|
|
|
@@ -4848,11 +4949,10 @@ const RefundStatus = _ref => {
|
|
|
4848
4949
|
t
|
|
4849
4950
|
} = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
|
|
4850
4951
|
const statusColor = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => (0,_utils_ticketUtils__WEBPACK_IMPORTED_MODULE_4__.getRefundRequestedStatusColor)(ticket), [ticket]);
|
|
4851
|
-
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.
|
|
4852
|
-
role: "button",
|
|
4952
|
+
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Chip, {
|
|
4853
4953
|
"aria-label": "ticket refund status label",
|
|
4854
|
-
|
|
4855
|
-
|
|
4954
|
+
label: t("ticket_status.refund_request_".concat(statusColor)),
|
|
4955
|
+
className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.buttonPill, " ").concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_5__[statusColor])
|
|
4856
4956
|
});
|
|
4857
4957
|
};
|
|
4858
4958
|
RefundStatus.propTypes = {
|
|
@@ -8434,17 +8534,18 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
8434
8534
|
/* harmony export */ continueButton: () => (/* binding */ _8),
|
|
8435
8535
|
/* harmony export */ deleteIcon: () => (/* binding */ _9),
|
|
8436
8536
|
/* harmony export */ pending: () => (/* binding */ _a),
|
|
8437
|
-
/* harmony export */
|
|
8438
|
-
/* harmony export */
|
|
8439
|
-
/* harmony export */
|
|
8440
|
-
/* harmony export */
|
|
8441
|
-
/* harmony export */
|
|
8442
|
-
/* harmony export */
|
|
8443
|
-
/* harmony export */
|
|
8444
|
-
/* harmony export */
|
|
8445
|
-
/* harmony export */
|
|
8446
|
-
/* harmony export */
|
|
8447
|
-
/* harmony export */
|
|
8537
|
+
/* harmony export */ refundDetail: () => (/* binding */ _b),
|
|
8538
|
+
/* harmony export */ refundErrorMsg: () => (/* binding */ _c),
|
|
8539
|
+
/* harmony export */ refundSuccessful: () => (/* binding */ _d),
|
|
8540
|
+
/* harmony export */ refundText: () => (/* binding */ _e),
|
|
8541
|
+
/* harmony export */ refundTicketAttendee: () => (/* binding */ _f),
|
|
8542
|
+
/* harmony export */ refundTicketBoxContainer: () => (/* binding */ _10),
|
|
8543
|
+
/* harmony export */ rejected: () => (/* binding */ _11),
|
|
8544
|
+
/* harmony export */ subtitle: () => (/* binding */ _12),
|
|
8545
|
+
/* harmony export */ successMsg: () => (/* binding */ _13),
|
|
8546
|
+
/* harmony export */ successMsg2: () => (/* binding */ _14),
|
|
8547
|
+
/* harmony export */ ticketList: () => (/* binding */ _15),
|
|
8548
|
+
/* harmony export */ ticketNo: () => (/* binding */ _16)
|
|
8448
8549
|
/* harmony export */ });
|
|
8449
8550
|
// extracted by mini-css-extract-plugin
|
|
8450
8551
|
var _1 = "CTAButtonWrapper___Kgq6g";
|
|
@@ -8457,17 +8558,18 @@ var _7 = "cancelButton___yfhYb";
|
|
|
8457
8558
|
var _8 = "continueButton___NyX3s";
|
|
8458
8559
|
var _9 = "deleteIcon___FSwye";
|
|
8459
8560
|
var _a = "pending___aEbWw";
|
|
8460
|
-
var _b = "
|
|
8461
|
-
var _c = "
|
|
8462
|
-
var _d = "
|
|
8463
|
-
var _e = "
|
|
8464
|
-
var _f = "
|
|
8465
|
-
var _10 = "
|
|
8466
|
-
var _11 = "
|
|
8467
|
-
var _12 = "
|
|
8468
|
-
var _13 = "
|
|
8469
|
-
var _14 = "
|
|
8470
|
-
var _15 = "
|
|
8561
|
+
var _b = "refundDetail___cQ28V";
|
|
8562
|
+
var _c = "refundErrorMsg___Aahzr";
|
|
8563
|
+
var _d = "refundSuccessful___zrDQY";
|
|
8564
|
+
var _e = "refundText___aEnL9";
|
|
8565
|
+
var _f = "refundTicketAttendee___QXCjM";
|
|
8566
|
+
var _10 = "refundTicketBoxContainer___ya613";
|
|
8567
|
+
var _11 = "rejected___NJE4Z";
|
|
8568
|
+
var _12 = "subtitle___PtDe2";
|
|
8569
|
+
var _13 = "successMsg___HtMse";
|
|
8570
|
+
var _14 = "successMsg2___Q6zna";
|
|
8571
|
+
var _15 = "ticketList___eDQR3";
|
|
8572
|
+
var _16 = "ticketNo____EAD4";
|
|
8471
8573
|
|
|
8472
8574
|
|
|
8473
8575
|
|
|
@@ -8827,6 +8929,16 @@ module.exports = require("@mui/icons-material/ImportExport");
|
|
|
8827
8929
|
|
|
8828
8930
|
/***/ }),
|
|
8829
8931
|
|
|
8932
|
+
/***/ "@mui/icons-material/Info":
|
|
8933
|
+
/*!*******************************************!*\
|
|
8934
|
+
!*** external "@mui/icons-material/Info" ***!
|
|
8935
|
+
\*******************************************/
|
|
8936
|
+
/***/ ((module) => {
|
|
8937
|
+
|
|
8938
|
+
module.exports = require("@mui/icons-material/Info");
|
|
8939
|
+
|
|
8940
|
+
/***/ }),
|
|
8941
|
+
|
|
8830
8942
|
/***/ "@mui/icons-material/Search":
|
|
8831
8943
|
/*!*********************************************!*\
|
|
8832
8944
|
!*** external "@mui/icons-material/Search" ***!
|
|
@@ -8907,6 +9019,16 @@ module.exports = require("@mui/material/Tabs");
|
|
|
8907
9019
|
|
|
8908
9020
|
/***/ }),
|
|
8909
9021
|
|
|
9022
|
+
/***/ "@mui/material/Tooltip":
|
|
9023
|
+
/*!****************************************!*\
|
|
9024
|
+
!*** external "@mui/material/Tooltip" ***!
|
|
9025
|
+
\****************************************/
|
|
9026
|
+
/***/ ((module) => {
|
|
9027
|
+
|
|
9028
|
+
module.exports = require("@mui/material/Tooltip");
|
|
9029
|
+
|
|
9030
|
+
/***/ }),
|
|
9031
|
+
|
|
8910
9032
|
/***/ "@mui/material/styles":
|
|
8911
9033
|
/*!***************************************!*\
|
|
8912
9034
|
!*** external "@mui/material/styles" ***!
|
|
@@ -9193,7 +9315,7 @@ module.exports = require("yup");
|
|
|
9193
9315
|
\**********************************/
|
|
9194
9316
|
/***/ ((module) => {
|
|
9195
9317
|
|
|
9196
|
-
module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sign_in":"FNid Sign In","not_logged_in":"You are not logged in. Please log in to continue:"},"errors":{"error":"Error","user_not_authz":"Hold on. Your user is not authorized!.","user_not_set":"Hold on. Can not get any valid user.","session_expired":"Hold on. Your session expired!","server_error":"There was a problem with our server, please contact admin.","not_allowed":"You are not allowed here, please login with another user to access this page.","refund_unsuccessful":"Some of the refund requests were unsucessful. Please try again."},"general":{"continue":"Continue","save_and_continue":"Save and Continue","back":"Back","pay_now":"Pay Now","confirm":"Confirm","yes":"Yes","no":"No","cancel":"Cancel","finish":"Finish","copy_to_clipboard":"Copy to clipboard","copied":"Copied!"},"labels":{"tickets":"Tickets","summary":"Summary","assigned_to_me":"Assigned Tickets","search_results":"Search results for {{filter}}"},"order_summary":{"order_summary":"Order Summary","order_no":"Order number","discounts":"Discount","refunds":"Refund","request_refund":"Request a Refund","refund_details":"Your Refund Details","taxes":"Taxes","total":"Total Due","amount_paid":"Amount Paid","copy_order_number":"Copy Order Number"},"event_info":{"about_title":"About the event","about_desc":"a description","directions":"Get Directions","calendar":"Add to Calendar"},"step_one":{"choose_tickets":"Choose your ticket(s)","choose_tickets_desc":"a description","expiration":"Ticket(s) available until ","free":"Free","sold_out":"Sold Out","no_tickets":"No tickets for sale!","getfnid":"Create an FNid","signin":"Sign In"},"step_two":{"basic_info":"Purchaser Information","required":"Required fields","have_account":"Do you have an FNid account?","sign_in":"Sign in","sign_in_account":"to autopopulate this info and manage this order.","first_name":"First Name","last_name":"Last Name","email":"Email","company":"Company","tickets":"Tickets","ticket":"Ticket","asterisks_bold":"NOTE: Ticket(s) can be assigned later.","asterisks":"Ticket holders will immediately receive an email to finalize their attendee information.","code":"Promo Code:","assign":"Assign to:","add_ticket":"Add additional ticket(s) to this order","no_tickets":"No tickets selected.","disclaimer_in_person_title":"Attention","placeholders":{"coupon":"Coupon (Optional)","email":"Attendee Email (Optional)"},"validator":{"first_name":"Please enter your First Name.","last_name":"Please enter your Last Name.","company":"Please enter your Company.","email":"Please enter a valid Email."}},"step_three":{"payment_info":"Payment Information","required":"Required fields","payment_subtitle":"a subtitle...","cardholder_name":"Cardholder Name","card_number":"Card Number","expiration":"Expiration & Code","billing_info":"Billing Information","billing_subtitle":"a subtitle...","billing_country":"Country","billing_address":"Address","billing_address_two":"Address 2","billing_city":"City","billing_state":"State","billing_zipcode":"ZIP Code","stripe_errors":{"cardNumber":"Please enter a valid Credit Card.","cardExpiry":"Please enter the card expiration.","cardCvc":"Please enter the card cvc."},"validator":{"billing_country":"Please enter the billing Country.","billing_address":"Please enter the billing Address.","billing_city":"Please enter the billing City.","billing_state":"Please enter the billing State.","billing_zipcode":"Please enter the billing ZipCode."}},"step_four":{"thank_you":"Thank you for your order!","subtitle":"Your Order is Now Complete","member_exclamation":"You are signed in with your FNid and will use it to log in to the event on show days. ","member_text":"You may proceed directly to the \\"","member_link_tickets":"My Tickets","member_text_1":"\\" page to review your ticket(s) and complete any required details. Visit the \\"","member_link_orders":"My Orders","member_text_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","required_text":"PLEASE NOTE! Ticket(s) must be assigned and all additional details must be completed before official ticket(s) are issued.","register_text":"An FNid is required to manage order(s) and assign ticket(s) ","register_link_text":"create one","register_text_2":" with the email ","register_text_3":" used for this purchase, you will then be able to manage your order.","register_email_bold":"You will now receive an email with a one-click link to create a password for your FNid.","register_email_1":"Your FNid will allow you to access the event. Visit the \\"","register_email_orders":"My Orders","register_email_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","help_text":"For further assistance, please email ","order_no":"ORDER NUMBER","manage":"My Orders","getfnid":"Create an FNid","signin":"Sign In"},"guests":{"invalid_thanks":"Thanks for coming to fill in the remaining details so we can issue your ticket.","invalid_text_1":"Unfortunately the link in your email has expired. Not to worry we will send you a fresh link. Click here or the button below to get a new link.","invalid_button":"Send New Link","invalid_contact":"If you have any problems please email","hash_regenerated":"Please check your new link in your email","completed_text_1":"Thank you for completing your additional details. Your ticket has now been issued. Please use your FNid to access the event.","completed_button":"Download Ticket to","completed_text_2":"You will also receive an email confirmation.","cancel":"Cancel","save":"Save"},"orders-tickets":{"loading":"Loading your orders and tickets...","empty-title":"It appears you have not placed any orders and no tickets have been assigned to you.","empty-text":"If you believe this is incorrect please email <a href=\\"mailto:{{support_email}}\\">{{support_email}}</a>. Thank you!","view_more":"View more","view_less":"View less"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders...","no_orders":"No results found."},"no-summit":{"not-found":"","select-list":"Please select from available shows:"},"order_info":{"print":"Print","resend":"Resend Receipt","download":"Download Ticket PDF","cancel_order":"Request to Refund All Tickets","cancel_ticket":"Cancel Ticket","email_support":"Email Support","directions":"Get Directions","calendar":"Add to Calendar"},"order_status":{"complete":"Ticket(s) assigned and issued","incomplete":"Additional attendee details required before ticket(s) can be issued","pending":"Pending confirmation","cancelled":"Cancelled","error":"Payment error","processing":"Payment processing","past":"Past"},"tickets":{"title":"External Tickets Assigned to Me","empty":"There are no tickets so far","loading":"Loading tickets...","save_message":"Thank you! Your information has been saved and ticket updated.","assign_success_message":"The ticket was successfully assigned.","reassign_success_message":"The ticket was successfully reassigned.","unassign_success_message":"The ticket was successfully unassigned.","notify_success_message":"Notification was sent to ticket holder.","refund_request_success_1":"Your refund request has been requested successfully","refund_request_success_2":"Please allow 24 - 48 hours for a response","no_tickets":"No results found."},"ticket_status":{"unassigned":"Unassigned","incomplete":"Required details needed","complete":"Ready to use","cancelled":"Cancelled","past":"Past","ticket_no":"Ticket #","assigned_to":"Assigned to","assigned_by":"Assigned by","attendee_status_unassigned":"Attendee unassigned","view_tickets":"View Tickets","hide_tickets":"Hide Tickets","view_ticket":"View Ticket","reassign_ticket":"Reassign","assign_ticket":"Assign Ticket","status_unassigned":"Unassigned","status_complete":"Completed","status_incomplete":"Incomplete","status_refund_requested":"Refund Requested","status_details_required":"Some tickets in this order require additional details before the ticket(s) can be issued.","status_cancelled":"Cancelled","finish_ticket":"Finish Ticket","select_ticket_refund":"Select the ticket(s) for a refund:","select_all":"Select All","select_cancel":"Cancel","copy_ticket_number":"Copy Ticket Number","refund_request_approved":"Refund Approved","refund_request_rejected":"Refund Rejected","refund_request_pending":"Refund Requested"},"nav_bar":{"my-orders":"My Orders","my-tickets":"My Tickets"},"ticket_popup":{"tab_assign":"Assign","tab_reassign":"Reassign","tab_refund":"Refund","tab_edit":"Edit Details","tab_edit_read_only":"Details","tab_notify":"Notify Ticket Holder","assign_text":"Select the option to assign this ticket","assign_or":"Or","assign_me":"Assign to Me","assign_this":"Assign this Ticket","assign_want_text":"I want to assign this ticket to someone else!","assign_someone":"Assign to this person","assign_ticket":"Assign this Ticket","assign_expire":"Ability to assign ticket expires in ","assign_days":"days","reassign_printed_ticket":"Ticket may not be reassigned because this badge has already been printed.","reassign_text":"Select the option to reassign this ticket from","reassign_want_text":"I want to reassign this ticket to someone else!","reassign_before":"before","reassign_enter_email":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","reassign_check":"Clean all fields","reassign_me":"Reassign to Me","reassign_someone":"Reassign to this person","edit_basic_info":"Attendee Information","edit_required":"Required","edit_email":"Ticket assigned to email:","assign_note":"Note: Should the ticket holder wish to change their name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","edit_first_name":"First Name","edit_first_name_placeholder":"Attendee First Name","edit_last_name":"Last Name","edit_last_name_placeholder":"Attendee Last Name","edit_company":"Company","edit_company_placeholder":"Attendee Company","edit_required_star":"*","edit_preferences":"Additional Details","notify_text_1":"All required details must be completed before","notify_text_2":"Clicking the \\"Resend Notification\\" button will generate an email to","notify_text_3":"with instructions on how to provide their required attendee information. Once the details are complete, their official ticket will be issued and sent to","notify_message":"Personal Message","notify_message_condition":"(Optional)","notify_button":"Resend Notification","cancel_ticket":"Request a refund for this ticket","save_changes":"Save Changes","saving_changes":"Saving Changes","do_it_later":"Do this later","do_it_later_exp":"You may fill in the required information now or complete this step on the \'My Orders\' page later."},"confirm_popup":{"question_title_cancel":"Refund Ticket","question_text_select_refund":"Select the ticket you want a refund","question_text_confirm_refund":"Are you sure you want to request a refund for the below ticket(s)?","question_text_cancel":"Are you sure you want to request a refund of this ticket?","question_title_cancel_order":"Refund Order","question_text_cancel_order":"Are you sure you want to request a refund of this entire order ?","question_title_assign":"Assign Request","question_text_assign":"Are you sure you want to clean all the fields?","question_title_unassign":"Unassign Request","question_text_unassign":"Are you sure you want to unassign this ticket?","question_title_reassign":"Reassign Request","question_text_reassign":"Are you sure you want to reassign this ticket?","question_title_save":"Save","question_text_save":"","question_title_notification":"Notification Request","question_text_notification":"","question_text_confirm":"Are you sure?","cancel":"Cancel","accept":"Yes","success_title":"Request Submitted","success_text":"An email notification has been sent to","success_button":"Got it"},"invitees":{"validation_error":"Invitation error","entity_not_found":"Invitation not found"},"signin":{"add_code_title_p1":"Add the","add_code_title_p2":"digit code below","email_reception_error_p1":"Didn\'t receive it? Check your spam folder or","email_reception_error_p2":"resend email","email_sent":"We\'ve sent a code to the email","go_back_title_p1":"or go back and","go_back_title_p2":"try another way","invalid_email_addr":"Please enter a valid email adress","login_with_title":"Log in with one of the following","retry":"Please try again.","send_code_option":"or get a login code emailed to you","verify_btn":"Verify","wrong_code":"The code you entered is incorrect.","fn_login_btn":"Continue with FNid","fb_login_btn":"Continue with Facebook","ln_login_btn":"Sign in with LinkedIn","ap_login_btn":"Continue with Apple","ok_login_btn":"Continue with Okta"},"logout_popup":{"title":"Re-login required","message":"You are not logged in anymore. Please log in to continue.","close_btn":"Re-login"},"filter":{"filter":"Filter","purchased_on":"Purchased on"},"sort":{"sort":"Sort","new_first":"Newest first","old_first":"Oldest first"},"order_search":{"order_number":"Search order number"},"ticket_detail":{"purchased_by":"Purchased by","status":"ready to use","qr_note":"When you check in you will be able to scan the QR code directly from your device. Or you can:","download":"Download","send":"Send to email","sent":"Email sent!","attendee_information":"Attendee Information","email":"Email","first_name":"First Name","last_name":"Last Name","attendee_first_name":"First Name","attendee_last_name":"Last Name","attendee_company":"Company","delegated_to":"Delegated to:","aditional_details":"Additional details","save":"save changes","cancel":"cancel","info_note":"Note: Should the ticket holder wish to change name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"ticket_reassign":{"reassign_ticket":"REASSIGN ticket","assigned_to":"This ticket is assigned to ","reassigned_to":"You have reassigned the ticket to","enter_email_note":"Enter the email of the person you would like to REASSIGN the ticket to below. \\n We will notice the old address that the ticket is no longer available.","complete_info":"To finish, complete the following information.","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"reassign","saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"ticket_assign_eq":{"cancel":"complete later","save":"save"},"ticket_assign":{"assign_ticket":"Assign ticket","purchased_by":"Purchased by ","assign_to_me":"Assign to me","assign_to_someone_else":"I want to assign this ticket to someone else:","enter_email_note":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","save_label":"Assign to this person","complete_info":"To finish, complete the following information.","assigned_to":"You have assigned the ticket to","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"reassign","saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"validation":{"required_question":"This question is required","required_field":"Required field","first_name":{"string":"Enter first name","required":"First name is required"},"last_name":{"string":"Enter last name","required":"Last name is required"},"email":{"string":"Enter email","format":"Must be a valid email address","required":"Email is required"},"text":{"string":"Enter text"},"checkbox":{"required":"Field must be checked"},"company":{"required":"Company is required"}}}');
|
|
9318
|
+
module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sign_in":"FNid Sign In","not_logged_in":"You are not logged in. Please log in to continue:"},"errors":{"error":"Error","user_not_authz":"Hold on. Your user is not authorized!.","user_not_set":"Hold on. Can not get any valid user.","session_expired":"Hold on. Your session expired!","server_error":"There was a problem with our server, please contact admin.","not_allowed":"You are not allowed here, please login with another user to access this page.","refund_unsuccessful":"Some of the refund requests were unsucessful. Please try again."},"general":{"continue":"Continue","save_and_continue":"Save and Continue","back":"Back","pay_now":"Pay Now","confirm":"Confirm","yes":"Yes","no":"No","cancel":"Cancel","finish":"Finish","copy_to_clipboard":"Copy to clipboard","copied":"Copied!"},"labels":{"tickets":"Tickets","summary":"Summary","assigned_to_me":"Assigned Tickets","search_results":"Search results for {{filter}}"},"order_summary":{"order_summary":"Order Summary","order_no":"Order number","discounts":"Discount","refunds":"Refund","request_refund":"Request a Refund","refund_details":"Your Refund Details","taxes":"Taxes","total":"Total Due","amount_paid":"Amount Paid","copy_order_number":"Copy Order Number"},"event_info":{"about_title":"About the event","about_desc":"a description","directions":"Get Directions","calendar":"Add to Calendar"},"step_one":{"choose_tickets":"Choose your ticket(s)","choose_tickets_desc":"a description","expiration":"Ticket(s) available until ","free":"Free","sold_out":"Sold Out","no_tickets":"No tickets for sale!","getfnid":"Create an FNid","signin":"Sign In"},"step_two":{"basic_info":"Purchaser Information","required":"Required fields","have_account":"Do you have an FNid account?","sign_in":"Sign in","sign_in_account":"to autopopulate this info and manage this order.","first_name":"First Name","last_name":"Last Name","email":"Email","company":"Company","tickets":"Tickets","ticket":"Ticket","asterisks_bold":"NOTE: Ticket(s) can be assigned later.","asterisks":"Ticket holders will immediately receive an email to finalize their attendee information.","code":"Promo Code:","assign":"Assign to:","add_ticket":"Add additional ticket(s) to this order","no_tickets":"No tickets selected.","disclaimer_in_person_title":"Attention","placeholders":{"coupon":"Coupon (Optional)","email":"Attendee Email (Optional)"},"validator":{"first_name":"Please enter your First Name.","last_name":"Please enter your Last Name.","company":"Please enter your Company.","email":"Please enter a valid Email."}},"step_three":{"payment_info":"Payment Information","required":"Required fields","payment_subtitle":"a subtitle...","cardholder_name":"Cardholder Name","card_number":"Card Number","expiration":"Expiration & Code","billing_info":"Billing Information","billing_subtitle":"a subtitle...","billing_country":"Country","billing_address":"Address","billing_address_two":"Address 2","billing_city":"City","billing_state":"State","billing_zipcode":"ZIP Code","stripe_errors":{"cardNumber":"Please enter a valid Credit Card.","cardExpiry":"Please enter the card expiration.","cardCvc":"Please enter the card cvc."},"validator":{"billing_country":"Please enter the billing Country.","billing_address":"Please enter the billing Address.","billing_city":"Please enter the billing City.","billing_state":"Please enter the billing State.","billing_zipcode":"Please enter the billing ZipCode."}},"step_four":{"thank_you":"Thank you for your order!","subtitle":"Your Order is Now Complete","member_exclamation":"You are signed in with your FNid and will use it to log in to the event on show days. ","member_text":"You may proceed directly to the \\"","member_link_tickets":"My Tickets","member_text_1":"\\" page to review your ticket(s) and complete any required details. Visit the \\"","member_link_orders":"My Orders","member_text_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","required_text":"PLEASE NOTE! Ticket(s) must be assigned and all additional details must be completed before official ticket(s) are issued.","register_text":"An FNid is required to manage order(s) and assign ticket(s) ","register_link_text":"create one","register_text_2":" with the email ","register_text_3":" used for this purchase, you will then be able to manage your order.","register_email_bold":"You will now receive an email with a one-click link to create a password for your FNid.","register_email_1":"Your FNid will allow you to access the event. Visit the \\"","register_email_orders":"My Orders","register_email_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","help_text":"For further assistance, please email ","order_no":"ORDER NUMBER","manage":"My Orders","getfnid":"Create an FNid","signin":"Sign In"},"guests":{"invalid_thanks":"Thanks for coming to fill in the remaining details so we can issue your ticket.","invalid_text_1":"Unfortunately the link in your email has expired. Not to worry we will send you a fresh link. Click here or the button below to get a new link.","invalid_button":"Send New Link","invalid_contact":"If you have any problems please email","hash_regenerated":"Please check your new link in your email","completed_text_1":"Thank you for completing your additional details. Your ticket has now been issued. Please use your FNid to access the event.","completed_button":"Download Ticket to","completed_text_2":"You will also receive an email confirmation.","cancel":"Cancel","save":"Save"},"orders-tickets":{"loading":"Loading your orders and tickets...","empty-title":"It appears you have not placed any orders and no tickets have been assigned to you.","empty-text":"If you believe this is incorrect please email <a href=\\"mailto:{{support_email}}\\">{{support_email}}</a>. Thank you!","view_more":"View more","view_less":"View less"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders...","no_orders":"No results found."},"no-summit":{"not-found":"","select-list":"Please select from available shows:"},"order_info":{"print":"Print","resend":"Resend Receipt","download":"Download Ticket PDF","cancel_order":"Request to Refund All Tickets","cancel_ticket":"Cancel Ticket","email_support":"Email Support","directions":"Get Directions","calendar":"Add to Calendar"},"order_status":{"complete":"Ticket(s) assigned and issued","incomplete":"Additional attendee details required before ticket(s) can be issued","pending":"Pending confirmation","cancelled":"Cancelled","error":"Payment error","processing":"Payment processing","past":"Past"},"tickets":{"title":"External Tickets Assigned to Me","empty":"There are no tickets so far","loading":"Loading tickets...","save_message":"Thank you! Your information has been saved and ticket updated.","assign_success_message":"The ticket was successfully assigned.","reassign_success_message":"The ticket was successfully reassigned.","unassign_success_message":"The ticket was successfully unassigned.","notify_success_message":"Notification was sent to ticket holder.","refund_request_success_1":"Your refund request has been requested successfully","refund_request_success_2":"Please allow 24 - 48 hours for a response","no_tickets":"No results found."},"ticket_status":{"unassigned":"Unassigned","incomplete":"Required details needed","complete":"Ready to use","cancelled":"Cancelled","past":"Past","ticket_no":"Ticket #","assigned_to":"Assigned to","assigned_by":"Assigned by","attendee_status_unassigned":"Attendee unassigned","view_tickets":"View Tickets","hide_tickets":"Hide Tickets","view_ticket":"View Ticket","reassign_ticket":"Reassign","assign_ticket":"Assign Ticket","status_unassigned":"Unassigned","status_complete":"Completed","status_incomplete":"Incomplete","status_refund_requested":"Refund Requested","status_details_required":"Some tickets in this order require additional details before the ticket(s) can be issued.","status_cancelled":"Cancelled","finish_ticket":"Finish Ticket","select_ticket_refund":"Select the ticket(s) for a refund:","select_all":"Select All","select_cancel":"Cancel","copy_ticket_number":"Copy Ticket Number","refund_request_approved":"Approved","refund_request_rejected":"Rejected","refund_request_pending":"Requested"},"nav_bar":{"my-orders":"My Orders","my-tickets":"My Tickets"},"ticket_popup":{"tab_assign":"Assign","tab_reassign":"Reassign","tab_refund":"Refund","tab_edit":"Edit Details","tab_edit_read_only":"Details","tab_notify":"Notify Ticket Holder","assign_text":"Select the option to assign this ticket","assign_or":"Or","assign_me":"Assign to Me","assign_this":"Assign this Ticket","assign_want_text":"I want to assign this ticket to someone else!","assign_someone":"Assign to this person","assign_ticket":"Assign this Ticket","assign_expire":"Ability to assign ticket expires in ","assign_days":"days","reassign_printed_ticket":"Ticket may not be reassigned because this badge has already been printed.","reassign_text":"Select the option to reassign this ticket from","reassign_want_text":"I want to reassign this ticket to someone else!","reassign_before":"before","reassign_enter_email":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","reassign_check":"Clean all fields","reassign_me":"Reassign to Me","reassign_someone":"Reassign to this person","edit_basic_info":"Attendee Information","edit_required":"Required","edit_email":"Ticket assigned to email:","assign_note":"Note: Should the ticket holder wish to change their name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","edit_first_name":"First Name","edit_first_name_placeholder":"Attendee First Name","edit_last_name":"Last Name","edit_last_name_placeholder":"Attendee Last Name","edit_company":"Company","edit_company_placeholder":"Attendee Company","edit_required_star":"*","edit_preferences":"Additional Details","notify_text_1":"All required details must be completed before","notify_text_2":"Clicking the \\"Resend Notification\\" button will generate an email to","notify_text_3":"with instructions on how to provide their required attendee information. Once the details are complete, their official ticket will be issued and sent to","notify_message":"Personal Message","notify_message_condition":"(Optional)","notify_button":"Resend Notification","cancel_ticket":"Request a refund for this ticket","save_changes":"Save Changes","saving_changes":"Saving Changes","do_it_later":"Do this later","do_it_later_exp":"You may fill in the required information now or complete this step on the \'My Orders\' page later."},"confirm_popup":{"question_title_cancel":"Refund Ticket","question_text_select_refund":"Select the ticket you want a refund","question_text_confirm_refund":"Are you sure you want to request a refund for the below ticket(s)?","question_text_cancel":"Are you sure you want to request a refund of this ticket?","question_title_cancel_order":"Refund Order","question_text_cancel_order":"Are you sure you want to request a refund of this entire order ?","question_title_assign":"Assign Request","question_text_assign":"Are you sure you want to clean all the fields?","question_title_unassign":"Unassign Request","question_text_unassign":"Are you sure you want to unassign this ticket?","question_title_reassign":"Reassign Request","question_text_reassign":"Are you sure you want to reassign this ticket?","question_title_save":"Save","question_text_save":"","question_title_notification":"Notification Request","question_text_notification":"","question_text_confirm":"Are you sure?","cancel":"Cancel","accept":"Yes","success_title":"Request Submitted","success_text":"An email notification has been sent to","success_button":"Got it"},"invitees":{"validation_error":"Invitation error","entity_not_found":"Invitation not found"},"signin":{"add_code_title_p1":"Add the","add_code_title_p2":"digit code below","email_reception_error_p1":"Didn\'t receive it? Check your spam folder or","email_reception_error_p2":"resend email","email_sent":"We\'ve sent a code to the email","go_back_title_p1":"or go back and","go_back_title_p2":"try another way","invalid_email_addr":"Please enter a valid email adress","login_with_title":"Log in with one of the following","retry":"Please try again.","send_code_option":"or get a login code emailed to you","verify_btn":"Verify","wrong_code":"The code you entered is incorrect.","fn_login_btn":"Continue with FNid","fb_login_btn":"Continue with Facebook","ln_login_btn":"Sign in with LinkedIn","ap_login_btn":"Continue with Apple","ok_login_btn":"Continue with Okta"},"logout_popup":{"title":"Re-login required","message":"You are not logged in anymore. Please log in to continue.","close_btn":"Re-login"},"filter":{"filter":"Filter","purchased_on":"Purchased on"},"sort":{"sort":"Sort","new_first":"Newest first","old_first":"Oldest first"},"order_search":{"order_number":"Search order number"},"ticket_detail":{"purchased_by":"Purchased by","status":"ready to use","qr_note":"When you check in you will be able to scan the QR code directly from your device. Or you can:","download":"Download","send":"Send to email","sent":"Email sent!","attendee_information":"Attendee Information","email":"Email","first_name":"First Name","last_name":"Last Name","attendee_first_name":"First Name","attendee_last_name":"Last Name","attendee_company":"Company","delegated_to":"Delegated to:","aditional_details":"Additional details","save":"save changes","cancel":"cancel","info_note":"Note: Should the ticket holder wish to change name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"ticket_reassign":{"reassign_ticket":"REASSIGN ticket","assigned_to":"This ticket is assigned to ","reassigned_to":"You have reassigned the ticket to","enter_email_note":"Enter the email of the person you would like to REASSIGN the ticket to below. \\n We will notice the old address that the ticket is no longer available.","complete_info":"To finish, complete the following information.","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"reassign","saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"ticket_assign_eq":{"cancel":"complete later","save":"save"},"ticket_assign":{"assign_ticket":"Assign ticket","purchased_by":"Purchased by ","assign_to_me":"Assign to me","assign_to_someone_else":"I want to assign this ticket to someone else:","enter_email_note":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","save_label":"Assign to this person","complete_info":"To finish, complete the following information.","assigned_to":"You have assigned the ticket to","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"reassign","saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"validation":{"required_question":"This question is required","required_field":"Required field","first_name":{"string":"Enter first name","required":"First name is required"},"last_name":{"string":"Enter last name","required":"Last name is required"},"email":{"string":"Enter email","format":"Must be a valid email address","required":"Email is required"},"text":{"string":"Enter text"},"checkbox":{"required":"Field must be checked"},"company":{"required":"Company is required"}}}');
|
|
9197
9319
|
|
|
9198
9320
|
/***/ }),
|
|
9199
9321
|
|
|
@@ -9203,7 +9325,7 @@ module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sig
|
|
|
9203
9325
|
\**********************************/
|
|
9204
9326
|
/***/ ((module) => {
|
|
9205
9327
|
|
|
9206
|
-
module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sign_in":"FNid Sign In","not_logged_in":"You are not logged in. Please log in to continue:"},"errors":{"error":"Error","user_not_authz":"Hold on. Your user is not authorized!.","user_not_set":"Hold on. Can not get any valid user.","session_expired":"Hold on. Your session expired!","server_error":"There was a problem with our server, please contact admin.","not_allowed":"You are not allowed here, please login with another user to access this page.","refund_unsuccessful":"Some of the refund requests were unsucessful. Please try again."},"general":{"continue":"Continue","save_and_continue":"Save and Continue","back":"Back","pay_now":"Pay Now","confirm":"Confirm","yes":"Yes","no":"No","cancel":"Cancel","finish":"Finish","copy_to_clipboard":"Copy to clipboard","copied":"Copied!"},"labels":{"tickets":"Tickets","summary":"Summary","assigned_to_me":"Assigned Tickets","search_results":"Search results for {{filter}}"},"order_summary":{"order_summary":"Order Summary","order_no":"Order number","discounts":"Discount","refunds":"Refund","request_refund":"Request a Refund","refund_details":"Your Refund Details","taxes":"Taxes","total":"Total Due","amount_paid":"Amount Paid","copy_order_number":"Copy Order Number"},"event_info":{"about_title":"About the event","about_desc":"a description","directions":"Get Directions","calendar":"Add to Calendar"},"step_one":{"choose_tickets":"Choose your ticket(s)","choose_tickets_desc":"a description","expiration":"Ticket(s) available until ","free":"Free","sold_out":"Sold Out","no_tickets":"No tickets for sale!","getfnid":"Create an FNid","signin":"Sign In"},"step_two":{"basic_info":"Purchaser Information","required":"Required fields","have_account":"Do you have an FNid account?","sign_in":"Sign in","sign_in_account":"to autopopulate this info and manage this order.","first_name":"First Name","last_name":"Last Name","email":"Email","company":"Company","tickets":"Tickets","ticket":"Ticket","asterisks_bold":"NOTE: Ticket(s) can be assigned later.","asterisks":"Ticket holders will immediately receive an email to finalize their attendee information.","code":"Promo Code:","assign":"Assign to:","add_ticket":"Add additional ticket(s) to this order","no_tickets":"No tickets selected.","disclaimer_in_person_title":"Attention","placeholders":{"coupon":"Coupon (Optional)","email":"Attendee Email (Optional)"},"validator":{"first_name":"Please enter your First Name.","last_name":"Please enter your Last Name.","company":"Please enter your Company.","email":"Please enter a valid Email."}},"step_three":{"payment_info":"Payment Information","required":"Required fields","payment_subtitle":"a subtitle...","cardholder_name":"Cardholder Name","card_number":"Card Number","expiration":"Expiration & Code","billing_info":"Billing Information","billing_subtitle":"a subtitle...","billing_country":"Country","billing_address":"Address","billing_address_two":"Address 2","billing_city":"City","billing_state":"State","billing_zipcode":"ZIP Code","stripe_errors":{"cardNumber":"Please enter a valid Credit Card.","cardExpiry":"Please enter the card expiration.","cardCvc":"Please enter the card cvc."},"validator":{"billing_country":"Please enter the billing Country.","billing_address":"Please enter the billing Address.","billing_city":"Please enter the billing City.","billing_state":"Please enter the billing State.","billing_zipcode":"Please enter the billing ZipCode."}},"step_four":{"thank_you":"Thank you for your order!","subtitle":"Your Order is Now Complete","member_exclamation":"You are signed in with your FNid and will use it to log in to the event on show days. ","member_text":"You may proceed directly to the \\"","member_link_tickets":"My Tickets","member_text_1":"\\" page to review your ticket(s) and complete any required details. Visit the \\"","member_link_orders":"My Orders","member_text_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","required_text":"PLEASE NOTE! Ticket(s) must be assigned and all additional details must be completed before official ticket(s) are issued.","register_text":"An FNid is required to manage order(s) and assign ticket(s) ","register_link_text":"create one","register_text_2":" with the email ","register_text_3":" used for this purchase, you will then be able to manage your order.","register_email_bold":"You will now receive an email with a one-click link to create a password for your FNid.","register_email_1":"Your FNid will allow you to access the event. Visit the \\"","register_email_orders":"My Orders","register_email_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","help_text":"For further assistance, please email ","order_no":"ORDER NUMBER","manage":"My Orders","getfnid":"Create an FNid","signin":"Sign In"},"guests":{"invalid_thanks":"Thanks for coming to fill in the remaining details so we can issue your ticket.","invalid_text_1":"Unfortunately the link in your email has expired. Not to worry we will send you a fresh link. Click here or the button below to get a new link.","invalid_button":"Send New Link","invalid_contact":"If you have any problems please email","hash_regenerated":"Please check your new link in your email","completed_text_1":"Thank you for completing your additional details. Your ticket has now been issued. Please use your FNid to access the event.","completed_button":"Download Ticket to","completed_text_2":"You will also receive an email confirmation.","cancel":"Cancel","save":"Save"},"orders-tickets":{"loading":"Loading your orders and tickets...","empty-title":"It appears you have not placed any orders and no tickets have been assigned to you.","empty-text":"If you believe this is incorrect please email <a href=\\"mailto:{{support_email}}\\">{{support_email}}</a>. Thank you!","view_more":"View more","view_less":"View less"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders...","no_orders":"No results found."},"no-summit":{"not-found":"","select-list":"Please select from available shows:"},"order_info":{"print":"Print","resend":"Resend Receipt","download":"Download Ticket PDF","cancel_order":"Request to Refund All Tickets","cancel_ticket":"Cancel Ticket","email_support":"Email Support","directions":"Get Directions","calendar":"Add to Calendar"},"order_status":{"complete":"Ticket(s) assigned and issued","incomplete":"Additional attendee details required before ticket(s) can be issued","pending":"Pending confirmation","cancelled":"Cancelled","error":"Payment error","processing":"Payment processing","past":"Past"},"tickets":{"title":"External Tickets Assigned to Me","empty":"There are no tickets so far","loading":"Loading tickets...","save_message":"Thank you! Your information has been saved and ticket updated.","assign_success_message":"The ticket was successfully assigned.","reassign_success_message":"The ticket was successfully reassigned.","unassign_success_message":"The ticket was successfully unassigned.","notify_success_message":"Notification was sent to ticket holder.","refund_request_success_1":"Your refund request has been requested successfully","refund_request_success_2":"Please allow 24 - 48 hours for a response","no_tickets":"No results found."},"ticket_status":{"unassigned":"Unassigned","incomplete":"Required details needed","complete":"Ready to use","cancelled":"Cancelled","past":"Past","ticket_no":"Ticket #","assigned_to":"Assigned to","assigned_by":"Assigned by","attendee_status_unassigned":"Attendee unassigned","view_tickets":"View Tickets","hide_tickets":"Hide Tickets","view_ticket":"View Ticket","reassign_ticket":"Reassign","assign_ticket":"Assign Ticket","status_unassigned":"Unassigned","status_complete":"Completed","status_incomplete":"Incomplete","status_refund_requested":"Refund Requested","status_details_required":"Some tickets in this order require additional details before the ticket(s) can be issued.","status_cancelled":"Cancelled","finish_ticket":"Finish Ticket","select_ticket_refund":"Select the ticket(s) for a refund:","select_all":"Select All","select_cancel":"Cancel","copy_ticket_number":"Copy Ticket Number","refund_request_approved":"Refund Approved","refund_request_rejected":"Refund Rejected","refund_request_pending":"Refund Requested"},"nav_bar":{"my-orders":"My Orders","my-tickets":"My Tickets"},"ticket_popup":{"tab_assign":"Assign","tab_reassign":"Reassign","tab_refund":"Refund","tab_edit":"Edit Details","tab_edit_read_only":"Details","tab_notify":"Notify Ticket Holder","assign_text":"Select the option to assign this ticket","assign_or":"Or","assign_me":"Assign to Me","assign_this":"Assign this Ticket","assign_want_text":"I want to assign this ticket to someone else!","assign_someone":"Assign to this person","assign_ticket":"Assign this Ticket","assign_expire":"Ability to assign ticket expires in ","assign_days":"days","reassign_printed_ticket":"Ticket may not be reassigned because this badge has already been printed.","reassign_text":"Select the option to reassign this ticket from","reassign_want_text":"I want to reassign this ticket to someone else!","reassign_before":"before","reassign_enter_email":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","reassign_check":"Clean all fields","reassign_me":"Reassign to Me","reassign_someone":"Reassign to this person","edit_basic_info":"Attendee Information","edit_required":"Required","edit_email":"Ticket assigned to email:","assign_note":"Note: Should the ticket holder wish to change their name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","edit_first_name":"First Name","edit_first_name_placeholder":"Attendee First Name","edit_last_name":"Last Name","edit_last_name_placeholder":"Attendee Last Name","edit_company":"Company","edit_company_placeholder":"Attendee Company","edit_required_star":"*","edit_preferences":"Additional Details","notify_text_1":"All required details must be completed before","notify_text_2":"Clicking the \\"Resend Notification\\" button will generate an email to","notify_text_3":"with instructions on how to provide their required attendee information. Once the details are complete, their official ticket will be issued and sent to","notify_message":"Personal Message","notify_message_condition":"(Optional)","notify_button":"Resend Notification","cancel_ticket":"Request a refund for this ticket","save_changes":"Save Changes","saving_changes":"Saving Changes","do_it_later":"Do this later","do_it_later_exp":"You may fill in the required information now or complete this step on the \'My Orders\' page later."},"confirm_popup":{"question_title_cancel":"Refund Ticket","question_text_select_refund":"Select the ticket you want a refund","question_text_confirm_refund":"Are you sure you want to request a refund for the below ticket(s)?","question_text_cancel":"Are you sure you want to request a refund of this ticket ?","question_title_cancel_order":"Refund Order","question_text_cancel_order":"Are you sure you want to request a refund of this entire order ?","question_title_assign":"Assign Request","question_text_assign":"Are you sure you want to clean all the fields?","question_title_unassign":"Unassign Request","question_text_unassign":"Are you sure you want to unassign this ticket?","question_title_reassign":"Reassign Request","question_text_reassign":"Are you sure you want to reassign this ticket?","question_title_save":"Save","question_text_save":"","question_title_notification":"Notification Request","question_text_notification":"","question_text_confirm":"Are you sure?","cancel":"Cancel","accept":"Yes","success_title":"Request Submitted","success_text":"An email notification has been sent to","success_button":"Got it"},"invitees":{"validation_error":"Invitation error","entity_not_found":"Invitation not found"},"signin":{"add_code_title_p1":"Add the","add_code_title_p2":"digit code below","email_reception_error_p1":"Didn\'t receive it? Check your spam folder or","email_reception_error_p2":"resend email","email_sent":"We\'ve sent a code to the email","go_back_title_p1":"or go back and","go_back_title_p2":"try another way","invalid_email_addr":"Please enter a valid email adress","login_with_title":"Log in with one of the following","retry":"Please try again.","send_code_option":"or get a login code emailed to you","verify_btn":"Verify","wrong_code":"The code you entered is incorrect.","fn_login_btn":"Continue with FNid","fb_login_btn":"Continue with Facebook","ln_login_btn":"Sign in with LinkedIn","ap_login_btn":"Continue with Apple","ok_login_btn":"Continue with Okta"},"logout_popup":{"title":"Re-login required","message":"You are not logged in anymore. Please log in to continue.","close_btn":"Re-login"},"filter":{"filter":"Filter","purchased_on":"Purchased on"},"sort":{"sort":"Sort","new_first":"Newest first","old_first":"Oldest first"},"order_search":{"order_number":"Search order number"},"ticket_detail":{"purchased_by":"Purchased by","status":"ready to use","qr_note":"When you check in you will be able to scan the QR code directly from your device. Or you can:","download":"Download","send":"Send to email","sent":"Email sent!","attendee_information":"Attendee Information","email":"Email","first_name":"First Name","last_name":"Last Name","attendee_first_name":"First Name","attendee_last_name":"Last Name","attendee_company":"Company","delegated_to":"Delegated to:","aditional_details":"Additional details","save":"save changes","cancel":"cancel","info_note":"Note: Should the ticket holder wish to change name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"ticket_reassign":{"reassign_ticket":"REASSIGN ticket","assigned_to":"This ticket is assigned to ","reassigned_to":"You have reassigned the ticket to","enter_email_note":"Enter the email of the person you would like to REASSIGN the ticket to below. \\n We will notice the old address that the ticket is no longer available.","complete_info":"To finish, complete the following information.","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"reassign","saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"ticket_assign_eq":{"cancel":"complete later","save":"save"},"ticket_assign":{"assign_ticket":"Assign ticket","purchased_by":"Purchased by ","assign_to_me":"Assign to me","assign_to_someone_else":"I want to assign this ticket to someone else:","enter_email_note":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","save_label":"Assign to this person","complete_info":"To finish, complete the following information.","assigned_to":"You have assigned the ticket to","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"reassign","saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"validation":{"required_question":"This question is required","required_field":"Required field","first_name":{"string":"Enter first name","required":"First name is required"},"last_name":{"string":"Enter last name","required":"Last name is required"},"email":{"string":"Enter email","format":"Must be a valid email address","required":"Email is required"},"text":{"string":"Enter text"},"checkbox":{"required":"Field must be checked"},"company":{"required":"Company is required"}}}');
|
|
9328
|
+
module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sign_in":"FNid Sign In","not_logged_in":"You are not logged in. Please log in to continue:"},"errors":{"error":"Error","user_not_authz":"Hold on. Your user is not authorized!.","user_not_set":"Hold on. Can not get any valid user.","session_expired":"Hold on. Your session expired!","server_error":"There was a problem with our server, please contact admin.","not_allowed":"You are not allowed here, please login with another user to access this page.","refund_unsuccessful":"Some of the refund requests were unsucessful. Please try again."},"general":{"continue":"Continue","save_and_continue":"Save and Continue","back":"Back","pay_now":"Pay Now","confirm":"Confirm","yes":"Yes","no":"No","cancel":"Cancel","finish":"Finish","copy_to_clipboard":"Copy to clipboard","copied":"Copied!"},"labels":{"tickets":"Tickets","summary":"Summary","assigned_to_me":"Assigned Tickets","search_results":"Search results for {{filter}}"},"order_summary":{"order_summary":"Order Summary","order_no":"Order number","discounts":"Discount","refunds":"Refund","request_refund":"Request a Refund","refund_details":"Your Refund Details","taxes":"Taxes","total":"Total Due","amount_paid":"Amount Paid","copy_order_number":"Copy Order Number"},"event_info":{"about_title":"About the event","about_desc":"a description","directions":"Get Directions","calendar":"Add to Calendar"},"step_one":{"choose_tickets":"Choose your ticket(s)","choose_tickets_desc":"a description","expiration":"Ticket(s) available until ","free":"Free","sold_out":"Sold Out","no_tickets":"No tickets for sale!","getfnid":"Create an FNid","signin":"Sign In"},"step_two":{"basic_info":"Purchaser Information","required":"Required fields","have_account":"Do you have an FNid account?","sign_in":"Sign in","sign_in_account":"to autopopulate this info and manage this order.","first_name":"First Name","last_name":"Last Name","email":"Email","company":"Company","tickets":"Tickets","ticket":"Ticket","asterisks_bold":"NOTE: Ticket(s) can be assigned later.","asterisks":"Ticket holders will immediately receive an email to finalize their attendee information.","code":"Promo Code:","assign":"Assign to:","add_ticket":"Add additional ticket(s) to this order","no_tickets":"No tickets selected.","disclaimer_in_person_title":"Attention","placeholders":{"coupon":"Coupon (Optional)","email":"Attendee Email (Optional)"},"validator":{"first_name":"Please enter your First Name.","last_name":"Please enter your Last Name.","company":"Please enter your Company.","email":"Please enter a valid Email."}},"step_three":{"payment_info":"Payment Information","required":"Required fields","payment_subtitle":"a subtitle...","cardholder_name":"Cardholder Name","card_number":"Card Number","expiration":"Expiration & Code","billing_info":"Billing Information","billing_subtitle":"a subtitle...","billing_country":"Country","billing_address":"Address","billing_address_two":"Address 2","billing_city":"City","billing_state":"State","billing_zipcode":"ZIP Code","stripe_errors":{"cardNumber":"Please enter a valid Credit Card.","cardExpiry":"Please enter the card expiration.","cardCvc":"Please enter the card cvc."},"validator":{"billing_country":"Please enter the billing Country.","billing_address":"Please enter the billing Address.","billing_city":"Please enter the billing City.","billing_state":"Please enter the billing State.","billing_zipcode":"Please enter the billing ZipCode."}},"step_four":{"thank_you":"Thank you for your order!","subtitle":"Your Order is Now Complete","member_exclamation":"You are signed in with your FNid and will use it to log in to the event on show days. ","member_text":"You may proceed directly to the \\"","member_link_tickets":"My Tickets","member_text_1":"\\" page to review your ticket(s) and complete any required details. Visit the \\"","member_link_orders":"My Orders","member_text_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","required_text":"PLEASE NOTE! Ticket(s) must be assigned and all additional details must be completed before official ticket(s) are issued.","register_text":"An FNid is required to manage order(s) and assign ticket(s) ","register_link_text":"create one","register_text_2":" with the email ","register_text_3":" used for this purchase, you will then be able to manage your order.","register_email_bold":"You will now receive an email with a one-click link to create a password for your FNid.","register_email_1":"Your FNid will allow you to access the event. Visit the \\"","register_email_orders":"My Orders","register_email_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","help_text":"For further assistance, please email ","order_no":"ORDER NUMBER","manage":"My Orders","getfnid":"Create an FNid","signin":"Sign In"},"guests":{"invalid_thanks":"Thanks for coming to fill in the remaining details so we can issue your ticket.","invalid_text_1":"Unfortunately the link in your email has expired. Not to worry we will send you a fresh link. Click here or the button below to get a new link.","invalid_button":"Send New Link","invalid_contact":"If you have any problems please email","hash_regenerated":"Please check your new link in your email","completed_text_1":"Thank you for completing your additional details. Your ticket has now been issued. Please use your FNid to access the event.","completed_button":"Download Ticket to","completed_text_2":"You will also receive an email confirmation.","cancel":"Cancel","save":"Save"},"orders-tickets":{"loading":"Loading your orders and tickets...","empty-title":"It appears you have not placed any orders and no tickets have been assigned to you.","empty-text":"If you believe this is incorrect please email <a href=\\"mailto:{{support_email}}\\">{{support_email}}</a>. Thank you!","view_more":"View more","view_less":"View less"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders...","no_orders":"No results found."},"no-summit":{"not-found":"","select-list":"Please select from available shows:"},"order_info":{"print":"Print","resend":"Resend Receipt","download":"Download Ticket PDF","cancel_order":"Request to Refund All Tickets","cancel_ticket":"Cancel Ticket","email_support":"Email Support","directions":"Get Directions","calendar":"Add to Calendar"},"order_status":{"complete":"Ticket(s) assigned and issued","incomplete":"Additional attendee details required before ticket(s) can be issued","pending":"Pending confirmation","cancelled":"Cancelled","error":"Payment error","processing":"Payment processing","past":"Past"},"tickets":{"title":"External Tickets Assigned to Me","empty":"There are no tickets so far","loading":"Loading tickets...","save_message":"Thank you! Your information has been saved and ticket updated.","assign_success_message":"The ticket was successfully assigned.","reassign_success_message":"The ticket was successfully reassigned.","unassign_success_message":"The ticket was successfully unassigned.","notify_success_message":"Notification was sent to ticket holder.","refund_request_success_1":"Your refund request has been requested successfully","refund_request_success_2":"Please allow 24 - 48 hours for a response","no_tickets":"No results found."},"ticket_status":{"unassigned":"Unassigned","incomplete":"Required details needed","complete":"Ready to use","cancelled":"Cancelled","past":"Past","ticket_no":"Ticket #","assigned_to":"Assigned to","assigned_by":"Assigned by","attendee_status_unassigned":"Attendee unassigned","view_tickets":"View Tickets","hide_tickets":"Hide Tickets","view_ticket":"View Ticket","reassign_ticket":"Reassign","assign_ticket":"Assign Ticket","status_unassigned":"Unassigned","status_complete":"Completed","status_incomplete":"Incomplete","status_refund_requested":"Refund Requested","status_details_required":"Some tickets in this order require additional details before the ticket(s) can be issued.","status_cancelled":"Cancelled","finish_ticket":"Finish Ticket","select_ticket_refund":"Select the ticket(s) for a refund:","select_all":"Select All","select_cancel":"Cancel","copy_ticket_number":"Copy Ticket Number","refund_request_approved":"Approved","refund_request_rejected":"Rejected","refund_request_pending":"Requested"},"nav_bar":{"my-orders":"My Orders","my-tickets":"My Tickets"},"ticket_popup":{"tab_assign":"Assign","tab_reassign":"Reassign","tab_refund":"Refund","tab_edit":"Edit Details","tab_edit_read_only":"Details","tab_notify":"Notify Ticket Holder","assign_text":"Select the option to assign this ticket","assign_or":"Or","assign_me":"Assign to Me","assign_this":"Assign this Ticket","assign_want_text":"I want to assign this ticket to someone else!","assign_someone":"Assign to this person","assign_ticket":"Assign this Ticket","assign_expire":"Ability to assign ticket expires in ","assign_days":"days","reassign_printed_ticket":"Ticket may not be reassigned because this badge has already been printed.","reassign_text":"Select the option to reassign this ticket from","reassign_want_text":"I want to reassign this ticket to someone else!","reassign_before":"before","reassign_enter_email":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","reassign_check":"Clean all fields","reassign_me":"Reassign to Me","reassign_someone":"Reassign to this person","edit_basic_info":"Attendee Information","edit_required":"Required","edit_email":"Ticket assigned to email:","assign_note":"Note: Should the ticket holder wish to change their name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","edit_first_name":"First Name","edit_first_name_placeholder":"Attendee First Name","edit_last_name":"Last Name","edit_last_name_placeholder":"Attendee Last Name","edit_company":"Company","edit_company_placeholder":"Attendee Company","edit_required_star":"*","edit_preferences":"Additional Details","notify_text_1":"All required details must be completed before","notify_text_2":"Clicking the \\"Resend Notification\\" button will generate an email to","notify_text_3":"with instructions on how to provide their required attendee information. Once the details are complete, their official ticket will be issued and sent to","notify_message":"Personal Message","notify_message_condition":"(Optional)","notify_button":"Resend Notification","cancel_ticket":"Request a refund for this ticket","save_changes":"Save Changes","saving_changes":"Saving Changes","do_it_later":"Do this later","do_it_later_exp":"You may fill in the required information now or complete this step on the \'My Orders\' page later."},"confirm_popup":{"question_title_cancel":"Refund Ticket","question_text_select_refund":"Select the ticket you want a refund","question_text_confirm_refund":"Are you sure you want to request a refund for the below ticket(s)?","question_text_cancel":"Are you sure you want to request a refund of this ticket ?","question_title_cancel_order":"Refund Order","question_text_cancel_order":"Are you sure you want to request a refund of this entire order ?","question_title_assign":"Assign Request","question_text_assign":"Are you sure you want to clean all the fields?","question_title_unassign":"Unassign Request","question_text_unassign":"Are you sure you want to unassign this ticket?","question_title_reassign":"Reassign Request","question_text_reassign":"Are you sure you want to reassign this ticket?","question_title_save":"Save","question_text_save":"","question_title_notification":"Notification Request","question_text_notification":"","question_text_confirm":"Are you sure?","cancel":"Cancel","accept":"Yes","success_title":"Request Submitted","success_text":"An email notification has been sent to","success_button":"Got it"},"invitees":{"validation_error":"Invitation error","entity_not_found":"Invitation not found"},"signin":{"add_code_title_p1":"Add the","add_code_title_p2":"digit code below","email_reception_error_p1":"Didn\'t receive it? Check your spam folder or","email_reception_error_p2":"resend email","email_sent":"We\'ve sent a code to the email","go_back_title_p1":"or go back and","go_back_title_p2":"try another way","invalid_email_addr":"Please enter a valid email adress","login_with_title":"Log in with one of the following","retry":"Please try again.","send_code_option":"or get a login code emailed to you","verify_btn":"Verify","wrong_code":"The code you entered is incorrect.","fn_login_btn":"Continue with FNid","fb_login_btn":"Continue with Facebook","ln_login_btn":"Sign in with LinkedIn","ap_login_btn":"Continue with Apple","ok_login_btn":"Continue with Okta"},"logout_popup":{"title":"Re-login required","message":"You are not logged in anymore. Please log in to continue.","close_btn":"Re-login"},"filter":{"filter":"Filter","purchased_on":"Purchased on"},"sort":{"sort":"Sort","new_first":"Newest first","old_first":"Oldest first"},"order_search":{"order_number":"Search order number"},"ticket_detail":{"purchased_by":"Purchased by","status":"ready to use","qr_note":"When you check in you will be able to scan the QR code directly from your device. Or you can:","download":"Download","send":"Send to email","sent":"Email sent!","attendee_information":"Attendee Information","email":"Email","first_name":"First Name","last_name":"Last Name","attendee_first_name":"First Name","attendee_last_name":"Last Name","attendee_company":"Company","delegated_to":"Delegated to:","aditional_details":"Additional details","save":"save changes","cancel":"cancel","info_note":"Note: Should the ticket holder wish to change name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"ticket_reassign":{"reassign_ticket":"REASSIGN ticket","assigned_to":"This ticket is assigned to ","reassigned_to":"You have reassigned the ticket to","enter_email_note":"Enter the email of the person you would like to REASSIGN the ticket to below. \\n We will notice the old address that the ticket is no longer available.","complete_info":"To finish, complete the following information.","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"reassign","saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"ticket_assign_eq":{"cancel":"complete later","save":"save"},"ticket_assign":{"assign_ticket":"Assign ticket","purchased_by":"Purchased by ","assign_to_me":"Assign to me","assign_to_someone_else":"I want to assign this ticket to someone else:","enter_email_note":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","save_label":"Assign to this person","complete_info":"To finish, complete the following information.","assigned_to":"You have assigned the ticket to","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"reassign","saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"validation":{"required_question":"This question is required","required_field":"Required field","first_name":{"string":"Enter first name","required":"First name is required"},"last_name":{"string":"Enter last name","required":"Last name is required"},"email":{"string":"Enter email","format":"Must be a valid email address","required":"Email is required"},"text":{"string":"Enter text"},"checkbox":{"required":"Field must be checked"},"company":{"required":"Company is required"}}}');
|
|
9207
9329
|
|
|
9208
9330
|
/***/ })
|
|
9209
9331
|
|
|
@@ -9383,4 +9505,4 @@ MyOrdersMyTicketsWidget.propTypes = {
|
|
|
9383
9505
|
/******/ })()
|
|
9384
9506
|
;
|
|
9385
9507
|
});
|
|
9386
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUM4WDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ25COVg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ3NJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNOdEk7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNnTTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNSaE07QUFDQTtBQUNBO0FBQ0E7QUFDZ0U7Ozs7Ozs7Ozs7Ozs7OztBQ0poRTtBQUNBO0FBQ21DOzs7Ozs7Ozs7OztBQ0ZuQzs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VUNBQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBOztVQUVBO1VBQ0E7O1VBRUE7VUFDQTtVQUNBOzs7OztXQ3RCQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EsaUNBQWlDLFdBQVc7V0FDNUM7V0FDQTs7Ozs7V0NQQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLHlDQUF5Qyx3Q0FBd0M7V0FDakY7V0FDQTtXQUNBOzs7OztXQ1BBOzs7OztXQ0FBO1dBQ0E7V0FDQTtXQUNBLHVEQUF1RCxpQkFBaUI7V0FDeEU7V0FDQSxnREFBZ0QsYUFBYTtXQUM3RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDeUM7QUFDTjtBQUNJO0FBQ3VCO0FBQ1Q7QUFDZDtBQUNrQjtBQUVGO0FBQUE7QUFFdkQsTUFBTXFCLHVCQUF1QixHQUFJbGUsS0FBSyxJQUFLO0VBQ3pDLE1BQU07SUFDSjBVLFFBQVE7SUFDUnlKLFlBQVk7SUFDWnZxQyxNQUFNO0lBQ055RCxVQUFVO0lBQ1Z4RCxJQUFJO0lBQ0o0Z0MsUUFBUTtJQUNSOTRCO0VBQ0YsQ0FBQyxHQUFHcWtCLEtBQUs7RUFFVCxNQUFNO0lBQUU0VSxLQUFLO0lBQUVXO0VBQVUsQ0FBQyxHQUFHRixvREFBWSxDQUFDO0lBQ3hDWCxRQUFRO0lBQ1J5SixZQUFZO0lBQ1p2cUMsTUFBTTtJQUNOQyxJQUFJO0lBQ0p3RCxVQUFVO0lBQ1ZvOUIsUUFBUTtJQUNSOTRCO0VBQ0YsQ0FBQyxDQUFDO0VBRUYsTUFBTXlpQyxnQkFBZ0IsR0FBR0EsQ0FBQSxLQUFNO0lBQzdCLE1BQU16bUMsTUFBTSxHQUFHLElBQUkwbUMsZUFBZSxDQUFDOS9CLE1BQU0sQ0FBQ2s4QixRQUFRLENBQUM2RCxNQUFNLENBQUM7SUFDMUQsTUFBTUMsS0FBSyxHQUFHNW1DLE1BQU0sQ0FBQzZtQyxHQUFHLENBQUMsWUFBWSxDQUFDO0lBQ3RDLElBQUlELEtBQUssRUFBRTNKLEtBQUssQ0FBQ3JoQyxRQUFRLENBQUM7TUFBRWtYLElBQUksRUFBRTNaLGlEQUFXO01BQUUwRSxPQUFPLEVBQUU7SUFBSyxDQUFDLENBQUM7RUFDakUsQ0FBQztFQUVENFksZ0RBQVMsQ0FBQyxNQUFNO0lBQ2R3bUIsS0FBSyxDQUFDcmhDLFFBQVEsQ0FBQ0kseURBQWUsQ0FBQ0MsTUFBTSxFQUFFQyxJQUFJLENBQUMsQ0FBQztFQUMvQyxDQUFDLEVBQUUsQ0FBQ0QsTUFBTSxFQUFFQyxJQUFJLENBQUMsQ0FBQztFQUVsQixvQkFDRTZMLHNEQUFBLENBQUMydUIsaURBQVE7SUFBQ3VHLEtBQUssRUFBRUEsS0FBTTtJQUFBbjBCLFFBQUEsZUFDckJmLHNEQUFBLENBQUN1K0Isd0VBQVc7TUFDVlEsWUFBWSxFQUFFTCxnQkFBaUI7TUFDL0JyUSxPQUFPLEVBQUUsSUFBSztNQUNkd0gsU0FBUyxFQUFFQSxTQUFVO01BQUE5MEIsUUFBQSxlQUVyQmYsc0RBQUEsQ0FBQzRqQiwrREFBb0I7UUFBQzRCLFdBQVc7UUFBQXprQixRQUFBLGVBQy9CZixzREFBQSxDQUFDbXVCLGlFQUFhLElBQUU7TUFBQyxDQUNHO0lBQUMsQ0FDWjtFQUFDLENBQ04sQ0FBQztBQUVmLENBQUM7QUFFRHFRLHVCQUF1QixDQUFDajlCLFNBQVMsR0FBRztFQUNsQ3l6QixRQUFRLEVBQUUzMUIsMERBQWdCO0VBQzFCby9CLFlBQVksRUFBRXAvQiwwREFBZ0I7RUFDOUJuTCxNQUFNLEVBQUVtTCwwREFBZ0I7RUFDeEIxSCxVQUFVLEVBQUUwSCwwREFBZ0I7RUFDNUJsTCxJQUFJLEVBQUVrTCwwREFBZ0I7RUFDdEIwMUIsUUFBUSxFQUFFMTFCLDBEQUFnQjtFQUMxQnBELGFBQWEsRUFBRW9ELHdEQUFjcUM7QUFDL0IsQ0FBQztBQUVELGlFQUFlODhCLHVCQUF1QixFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvYWN0aW9ucy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Bc3NpZ25FUUZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ29weVRleHQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ3VzdG9tRGlhbG9nL0NvbnRleHQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ3VzdG9tRGlhbG9nL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0N1c3RvbVRoZW1lLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0NoZWNrYm94UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0Ryb3Bkb3duUXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL1JhZGlvTGlzdFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9UZXh0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL0Fzc2lnbmVkRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvQmFkZ2VGZWF0dXJlRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvRnJlZVBhaWRGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9Qcm9tb0NvZGVGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9TZWFyY2guanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9Tb3J0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvU3RhdHVzRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvVGlja2V0VHlwZUZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0Zvcm1Gb290ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTGFiZWxzL0Vycm9yTGFiZWwuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTG9hZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL015T3JkZXJzVGlja2V0cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvT3JkZXJTdW1tYXJ5VGFibGUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L1JlZnVuZEVtYWlsU3VwcG9ydC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9Bc3NpZ25lZFRvTWUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9BdHRlbmRlZVN0YXR1cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdEl0ZW0uanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlckxpc3RUaWNrZXRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmREZXRhaWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZFJlcXVlc3RlZFRpY2tldC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmRTdGF0dXMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmlnaHREcmF3ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvU3VtbWl0SGVhZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0Fzc2lnbkZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0NvbXBhbnlGaWVsZC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0RGVsZWdhdGlvbkZpZWxkcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRGb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldE93bmVyRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFJlYXNzaWduL2NvbXBvbmVudHMvUmVhc3NpZ25Gb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFJlYXNzaWduL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFN0YXR1cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRUYWJzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFdyYXBwZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2hvb2tzL3VzZUdldFRpY2tldC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlU2Nyb2xsVG9FcnJvci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlVGlja2V0RGV0YWlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaTE4bi9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvcmVkdWNlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvc3RvcmUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2F1dGguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL3N1bW1pdFV0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy90aWNrZXRVdGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Db3B5VGV4dC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRm9ybUZvb3Rlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTGFiZWxzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9NeU9yZGVyc1RpY2tldHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JpZ2h0RHJhd2VyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9TdW1taXRIZWFkZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0T3duZXJGaWVsZHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0UmVhc3NpZ24vc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFN0YXR1cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvV2lkZ2V0VGFicy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvV2lkZ2V0V3JhcHBlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DaGVja0NpcmNsZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9DaGVja2JveFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVGFiXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9UYWJzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAcmVkdXhqcy90b29sa2l0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQHNlbnRyeS9yZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImZvcm1pa1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImkxOG5leHRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3RvclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImlkdG9rZW4tdmVyaWZpZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJtb21lbnQtdGltZXpvbmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL21ldGhvZHNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJwLWxpbWl0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicHJvcC10eXBlc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtaTE4bmV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1xci1jb2RlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcmVkdXhcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC9qc3gtcnVudGltZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwieXVwXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIiwgW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiXSA9IGZhY3RvcnkoKTtcbn0pKHRoaXMsICgpID0+IHtcbnJldHVybiAiLCJpbXBvcnQge1xuICBhdXRoRXJyb3JIYW5kbGVyLFxuICBnZXRSZXF1ZXN0LFxuICBkZWxldGVSZXF1ZXN0LFxuICBjcmVhdGVBY3Rpb24sXG4gIHN0b3BMb2FkaW5nLFxuICBzdGFydExvYWRpbmcsXG4gIHB1dFJlcXVlc3Rcbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiO1xuaW1wb3J0IHBMaW1pdCBmcm9tIFwicC1saW1pdFwiO1xuaW1wb3J0IHsgZ2V0SWRUb2tlbiB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIjtcbmltcG9ydCB7IG9iamVjdFRvUXVlcnlTdHJpbmcgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9tZXRob2RzXCI7XG5pbXBvcnQgSWRUb2tlblZlcmlmaWVyIGZyb20gXCJpZHRva2VuLXZlcmlmaWVyXCI7XG5pbXBvcnQgaTE4biBmcm9tIFwiaTE4bmV4dFwiO1xuaW1wb3J0IHsgZ2V0QWNjZXNzVG9rZW5TYWZlbHkgfSBmcm9tIFwiLi91dGlscy9hdXRoXCI7XG5pbXBvcnQge1xuICBGSVJTVF9QQUdFLFxuICBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICBQUk9NSVNFX0JBVENIX0xJTUlULFxuICBGSUZUWV9QRVJfUEFHRSxcbiAgRVJST1JfQ09ERVMsXG4gIFRBQlNcbn0gZnJvbSBcIi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBSRVNFVF9TVEFURSA9IFwiUkVTRVRfU1RBVEVcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9GSUxURVIgPSBcIlJFU0VUX0ZJTFRFUlwiO1xuZXhwb3J0IGNvbnN0IFJFU0VUX0FQSV9FUlJPUiA9IFwiUkVTRVRfQVBJX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgU0VUX1NUQVRFID0gXCJTRVRfU1RBVEVcIjtcbmV4cG9ydCBjb25zdCBTRVRfQVBJX0VSUk9SID0gXCJTRVRfQVBJX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgQ0hBTkdFX0ZJTFRFUiA9IFwiQ0hBTkdFX0ZJTFRFUlwiO1xuZXhwb3J0IGNvbnN0IENIQU5HRV9TT1JUID0gXCJDSEFOR0VfU09SVFwiO1xuXG4vLyBPUkRFUlMgQ09OU1RTXG5leHBvcnQgY29uc3QgR0VUX1VTRVJfT1JERVJTID0gXCJHRVRfT1JERVJTXCI7XG5leHBvcnQgY29uc3QgUkVGVU5EX09SREVSID0gXCJSRUZVTkRfT1JERVJcIjtcbmV4cG9ydCBjb25zdCBTRVRfQUNUSVZFX09SREVSX0lEID0gXCJTRVRfQUNUSVZFX09SREVSX0lEXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1VTRVJfT1JERVJTID0gXCJGSUxURVJfVVNFUl9PUkRFUlNcIjtcblxuLy8gVElDS0VUUyBDT05TVFNcbmV4cG9ydCBjb25zdCBHRVRfTVlfQVNTSUdORURfVElDS0VUUyA9IFwiR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFNcIjtcbmV4cG9ydCBjb25zdCBVUERBVEVfVElDS0VUID0gXCJVUERBVEVfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfVElDS0VUID0gXCJSRVNFVF9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX1RJQ0tFVCA9IFwiUkVDRUlWRV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRU1PVkVfVElDS0VUX0FUVEVOREVFID0gXCJSRU1PVkVfVElDS0VUX0FUVEVOREVFXCI7XG5leHBvcnQgY29uc3QgQVNTSUdOX1RJQ0tFVCA9IFwiQVNTSUdOX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFRlVORF9USUNLRVQgPSBcIlJFRlVORF9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRVNFTkRfTk9USUZJQ0FUSU9OID0gXCJSRVNFTkRfTk9USUZJQ0FUSU9OXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVIgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTID0gXCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFNcIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUX0RFVEFJTFMgPSBcIkdFVF9USUNLRVRfREVUQUlMU1wiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TID0gXCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OU1wiO1xuZXhwb3J0IGNvbnN0IFRJQ0tFVF9BVFRFTkRFRV9LRVlTID0ge1xuICBlbWFpbDogXCJhdHRlbmRlZV9lbWFpbFwiLFxuICBmaXJzdE5hbWU6IFwiYXR0ZW5kZWVfZmlyc3RfbmFtZVwiLFxuICBsYXN0TmFtZTogXCJhdHRlbmRlZV9sYXN0X25hbWVcIixcbiAgY29tcGFueTogXCJhdHRlbmRlZV9jb21wYW55XCIsXG4gIGRpc2NsYWltZXJBY2NlcHRlZDogXCJkaXNjbGFpbWVyX2FjY2VwdGVkXCIsXG4gIGV4dHJhUXVlc3Rpb25zOiBcImV4dHJhX3F1ZXN0aW9uc1wiXG59O1xuZXhwb3J0IGNvbnN0IFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQgPVxuICBcIlVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURURcIjtcblxuLy8gVVNFUiBDT05UU1xuZXhwb3J0IGNvbnN0IFNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUT1BfTE9BRElOR19JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9JRFBfUFJPRklMRSA9IFwiVVBEQVRFX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgU0VUX1VTRVIgPSBcIlNFVF9VU0VSXCI7XG5cbi8vIFNVTU1JVCBDT05TVFNcbmV4cG9ydCBjb25zdCBTRVRfU1VNTUlUID0gXCJTRVRfU1VNTUlUXCI7XG5leHBvcnQgY29uc3QgR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TID0gXCJHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlNcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX01BUktFVElOR19TRVRUSU5HUyA9IFwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1NcIjtcbmV4cG9ydCBjb25zdCBDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MgPSBcIkNMRUFSX01BUktFVElOR19TRVRUSU5HU1wiO1xuXG5leHBvcnQgY29uc3QgcmVzZXRUaWNrZXQgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX1RJQ0tFVCkoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldFN0YXRlID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9TVEFURSkoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEZpbHRlciA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfRklMVEVSKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0RXJyb3IgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX0FQSV9FUlJPUikoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRSZWR1Y2VyU3RhdGUgPSAoc3VtbWl0LCB1c2VyKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9TVEFURSkoeyBzdW1taXQsIHVzZXIgfSkpO1xufTtcblxuLy8gRklMVEVSIC8gU09SVCBDT05TVEFOVFNcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0RBVEUgPSBcIkZJTFRFUl9WQVJfREFURVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSA9IFwiRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9USUNLRVRfVFlQRSA9IFwiRklMVEVSX1ZBUl9USUNLRVRfVFlQRVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEID0gXCJGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTID0gXCJGSUxURVJfVkFSX09XTkVSX1NUQVRVU1wiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfUFJPTU9DT0RFID0gXCJGSUxURVJfVkFSX1BST01PQ09ERVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfRlJFRV9QQUlEID0gXCJGSUxURVJfVkFSX0ZSRUVfUEFJRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSID0gXCJGSUxURVJfVkFSX09SREVSX05VTUJFUlwiO1xuXG4vLyBGSUxURVIgLyBTT1JUIEFDVElPTlNcbmV4cG9ydCBjb25zdCBjaGFuZ2VGaWx0ZXIgPSAoZmlsdGVyKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKENIQU5HRV9GSUxURVIpKGZpbHRlcikpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoYW5nZVNvcnQgPSAoc29ydCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihDSEFOR0VfU09SVCkoc29ydCkpO1xufTtcblxuLy8gRklMVEVSL1NPUlQgUEFSU0VcbmNvbnN0IHBhcnNlRmlsdGVyID0gKGZpbHRlck9iaiwgY3VycmVudFRhYikgPT4ge1xuICBjb25zdCBmaWx0ZXIgPSBbXTtcbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX0RBVEUpIHtcbiAgICBmaWx0ZXIucHVzaChgY3JlYXRlZFtdJHtmaWx0ZXJPYmoubG93ZXJ9JiYke2ZpbHRlck9iai51cHBlcn1gKTtcbiAgfVxuICBpZiAoXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSAmJlxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUubGVuZ3RoID4gMFxuICApIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTXG4gICAgICAgID8gXCJ0aWNrZXRzX2JhZGdlX2ZlYXR1cmVzX2lkXCJcbiAgICAgICAgOiBcImJhZGdlX2ZlYXR1cmVzX2lkXCI7XG4gICAgZmlsdGVyLnB1c2goXG4gICAgICBgJHtmaWx0ZXJOYW1lfT09JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFLmpvaW4oXCJ8fFwiKX1gXG4gICAgKTtcbiAgfVxuICBpZiAoXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX1RZUEUgJiZcbiAgICBmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfVFlQRS5sZW5ndGggPiAwXG4gICkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgY3VycmVudFRhYiA9PT0gVEFCUy5PUkRFUlMgPyBcInRpY2tldHNfdHlwZV9pZFwiIDogXCJ0aWNrZXRfdHlwZV9pZFwiO1xuICAgIGZpbHRlci5wdXNoKFxuICAgICAgYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX1RZUEUuam9pbihcInx8XCIpfWBcbiAgICApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTID8gXCJ0aWNrZXRzX2Fzc2lnbmVkX3RvXCIgOiBcImFzc2lnbmVkX3RvXCI7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEfWApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTID8gXCJ0aWNrZXRzX293bmVyX3N0YXR1c1wiIDogXCJvd25lcl9zdGF0dXNcIjtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJOYW1lfT09JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PV05FUl9TVEFUVVN9YCk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX0ZSRUVfUEFJRCkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPSBjdXJyZW50VGFiID09PSBUQUJTLk9SREVSUyA/IFwiYW1vdW50XCIgOiBcImZpbmFsX2Ftb3VudFwiO1xuICAgIGZpbHRlci5wdXNoKFxuICAgICAgYCR7ZmlsdGVyTmFtZX0ke2ZpbHRlck9iai5GSUxURVJfVkFSX0ZSRUVfUEFJRCA9PT0gXCJGcmVlXCIgPyBcIj09MFwiIDogXCI+MFwifWBcbiAgICApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9QUk9NT0NPREUpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTID8gXCJ0aWNrZXRzX3Byb21vX2NvZGVcIiA6IFwicHJvbW9fY29kZVwiO1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck5hbWV9PUAke2ZpbHRlck9iai5GSUxURVJfVkFSX1BST01PQ09ERX1gKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSKSB7XG4gICAgZmlsdGVyLnB1c2goYG51bWJlcj1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9YCk7XG4gIH1cbiAgcmV0dXJuIGZpbHRlcjtcbn07XG5cbmNvbnN0IGdldFNvcnREaXJlY3Rpb24gPSAoZGlyZWN0aW9uKSA9PiAoZGlyZWN0aW9uID09PSBcImFzY1wiID8gXCIrXCIgOiBcIi1cIik7XG5cbi8vIHBheWxvYWQ6IHsgaHR0cENvZGUsIHRpdGxlLCBodG1sOiBjb250ZW50LCB0eXBlIH1cbmNvbnN0IGVycm9ySGFuZGxlck5vdGlmeSA9IChwYXlsb2FkLCBjYWxsYmFjaykgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfQVBJX0VSUk9SKShwYXlsb2FkKSk7XG4gIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbn07XG5cbmNvbnN0IGN1c3RvbUF1dGhFcnJvckhhbmRsZXIgPSAoZXJyLCByZXMpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChhdXRoRXJyb3JIYW5kbGVyKGVyciwgcmVzLCBlcnJvckhhbmRsZXJOb3RpZnkpKTtcbn07XG5cbmNvbnN0IGN1c3RvbUZldGNoRXJyb3JIYW5kbGVyID0gKHJlc3BvbnNlKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgY29uc3QgY29kZSA9IHJlc3BvbnNlLnN0YXR1cztcbiAgbGV0IG1zZztcbiAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gIHN3aXRjaCAoY29kZSkge1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI0MDNcIl06XG4gICAgICBtc2cgPSBpMThuLnQoXCJlcnJvcnMudXNlcl9ub3RfYXV0aHpcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDAxXCJdOlxuICAgICAgbXNnID0gaTE4bi50KFwiZXJyb3JzLnNlc3Npb25fZXhwaXJlZFwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI0MTJcIl06XG4gICAgICBtc2cgPSBcIlwiO1xuICAgICAgT2JqZWN0LmVudHJpZXMocmVzcG9uc2UuZXJyb3JzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKE51bWJlci5pc05hTihrZXkpKSB7XG4gICAgICAgICAgbXNnID0gYCR7bXNnfSAke2tleX06IGA7XG4gICAgICAgIH1cblxuICAgICAgICBtc2cgPSBgJHttc2d9ICR7dmFsdWV9IDxicj5gO1xuICAgICAgfSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNTAwXCJdOlxuICAgICAgbXNnID0gaTE4bi50KFwiZXJyb3JzLnNlcnZlcl9lcnJvclwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBtc2cgPSByZXNwb25zZS5zdGF0dXNUZXh0O1xuICB9XG5cbiAgZGlzcGF0Y2goZXJyb3JIYW5kbGVyTm90aWZ5KHsgdGl0bGU6IGkxOG4udChcImVycm9ycy5lcnJvclwiKSwgaHRtbDogbXNnIH0pKTtcbn07XG5cbi8vIE9SREVSUyBBQ1RJT05TXG5leHBvcnQgY29uc3QgZ2V0VXNlck9yZGVycyA9XG4gICh7XG4gICAgcGFnZSA9IEZJUlNUX1BBR0UsXG4gICAgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgZmlsdGVyID0ge30sXG4gICAgc29ydCA9IHt9XG4gIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIG9yZGVyOiBcIi1pZFwiLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBbXCJzdGF0dXM9PVBhaWRcIl0sXG4gICAgICByZWxhdGlvbnM6IFwibm9uZVwiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcblxuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIsIFRBQlMuT1JERVJTKTtcbiAgICAgIHBhcmFtc1tcImZpbHRlcltdXCJdID0gWy4uLnBhcmFtc1tcImZpbHRlcltdXCJdLCAuLi5maWx0ZXJzXTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHNvcnQpLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhcmFtcy5vcmRlciA9IGAke2dldFNvcnREaXJlY3Rpb24oc29ydC5kaXJlY3Rpb24pfSR7c29ydC5uYW1lfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9VU0VSX09SREVSUyksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vb3JkZXJzL21lYCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXIsXG4gICAgICB7IGZpbHRlciwgc29ydCB9XG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNldEFjdGl2ZU9yZGVySWQgPSAob3JkZXJJZCkgPT4gYXN5bmMgKGRpc3BhdGNoKSA9PlxuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX0FDVElWRV9PUkRFUl9JRCkob3JkZXJJZCkpO1xuXG4vLyBVU0VSIEFDVElPTlNcbmV4cG9ydCBjb25zdCBzZXRVc2VyID0gKHVzZXIpID0+IChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9VU0VSKSh1c2VyKSk7XG5cbi8vIFRJQ0tFVCBBQ1RJT05TXG5cbmV4cG9ydCBjb25zdCBnZXRVc2VyVGlja2V0cyA9XG4gICh7XG4gICAgcGFnZSA9IEZJUlNUX1BBR0UsXG4gICAgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgZmlsdGVyID0ge30sXG4gICAgc29ydCA9IHt9XG4gIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0LCB1c2VyIH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcbiAgICBjb25zdCB7IHVzZXJQcm9maWxlIH0gPSB1c2VyO1xuICAgIGlmICghc3VtbWl0KSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuICAgIGNvbnN0IGZpZWxkcyA9IFtcbiAgICAgIFwib3JkZXIuaWRcIixcbiAgICAgIFwib3JkZXIub3duZXJfZmlyc3RfbmFtZVwiLFxuICAgICAgXCJvcmRlci5vd25lcl9sYXN0X25hbWVcIixcbiAgICAgIFwib3JkZXIub3duZXJfZW1haWxcIixcbiAgICAgIFwib3duZXIuaWRcIixcbiAgICAgIFwib3duZXIuZW1haWxcIixcbiAgICAgIFwib3duZXIuZmlyc3RfbmFtZVwiLFxuICAgICAgXCJvd25lci5sYXN0X25hbWVcIixcbiAgICAgIFwib3duZXIuc3RhdHVzXCJcbiAgICBdO1xuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBbXCJzdGF0dXM9PVBhaWRcIiwgYG9yZGVyX293bmVyX2lkPD4ke3VzZXJQcm9maWxlLmlkfWBdLFxuICAgICAgZXhwYW5kOiBcIm9yZGVyLG93bmVyLHRpY2tldF90eXBlXCIsXG4gICAgICBvcmRlcjogXCItaWRcIixcbiAgICAgIGZpZWxkczogZmllbGRzLmpvaW4oXCIsXCIpLFxuICAgICAgcmVsYXRpb25zOiBcIm5vbmVcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG4gICAgaWYgKE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdGVycyA9IHBhcnNlRmlsdGVyKGZpbHRlciwgVEFCUy5USUNLRVRTKTtcbiAgICAgIHBhcmFtc1tcImZpbHRlcltdXCJdID0gWy4uLnBhcmFtc1tcImZpbHRlcltdXCJdLCAuLi5maWx0ZXJzXTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHNvcnQpLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhcmFtcy5vcmRlciA9IGAke2dldFNvcnREaXJlY3Rpb24oc29ydC5kaXJlY3Rpb24pfSR7c29ydC5uYW1lfWA7XG4gICAgfVxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfTVlfQVNTSUdORURfVElDS0VUUyksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vb3JkZXJzL2FsbC90aWNrZXRzL21lYCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldHNCeU9yZGVyID1cbiAgKHtcbiAgICBvcmRlcklkLFxuICAgIHBhZ2UgPSBGSVJTVF9QQUdFLFxuICAgIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICAgIGZpbHRlcixcbiAgICBzb3J0XG4gIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBbXSxcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJyZWZ1bmRfcmVxdWVzdHMsb3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlXCIsXG4gICAgICBvcmRlcjogXCIraWRcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG4gICAgaWYgKE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdGVycyA9IHBhcnNlRmlsdGVyKGZpbHRlciwgVEFCUy5USUNLRVRTKTtcbiAgICAgIHBhcmFtc1tcImZpbHRlcltdXCJdID0gWy4uLnBhcmFtc1tcImZpbHRlcltdXCJdLCAuLi5maWx0ZXJzXTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHNvcnQpLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhcmFtcy5vcmRlciA9IGAke2dldFNvcnREaXJlY3Rpb24oc29ydC5kaXJlY3Rpb24pfSR7c29ydC5uYW1lfWA7XG4gICAgfVxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUiksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0c2AsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKEdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZXNlbmROb3RpZmljYXRpb24gPVxuICAodGlja2V0KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBjb25zdCB7IG1lc3NhZ2UgfSA9IHRpY2tldDtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRVNFTkRfTk9USUZJQ0FUSU9OKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9hdHRlbmRlZS9yZWludml0ZWAsXG4gICAgICB7IG1lc3NhZ2UgfSxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlZnVuZFRpY2tldCA9XG4gICh7IHRpY2tldCB9KSA9PlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6IFwicmVmdW5kX3JlcXVlc3RzLHRpY2tldF90eXBlXCIsXG4gICAgICBmaWVsZHM6IFwicmVmdW5kX3JlcXVlc3RzLnN0YXR1c1wiXG4gICAgfTtcblxuICAgIHJldHVybiBkZWxldGVSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUZVTkRfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9yZWZ1bmRgLFxuICAgICAge30sXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlZnVuZEJ1bGtUaWNrZXRzID1cbiAgKHsgdGlja2V0cyB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gpID0+IHtcbiAgICBjb25zdCBsaW1pdCA9IHBMaW1pdChQUk9NSVNFX0JBVENIX0xJTUlUKTtcbiAgICBjb25zdCBhbGxSZWZ1bmRUaWNrZXRDYWxscyA9IHRpY2tldHMubWFwKCh0aWNrZXQpID0+XG4gICAgICBsaW1pdCgoKSA9PiBkaXNwYXRjaChyZWZ1bmRUaWNrZXQoeyB0aWNrZXQgfSkpKVxuICAgICk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFsuLi5hbGxSZWZ1bmRUaWNrZXRDYWxsc10pXG4gICAgICAudGhlbigocmVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NmdWxseVJlcXVlc3RlZCA9IHJlc1xuICAgICAgICAgIC5maWx0ZXIoKHIpID0+IHIucmVzcG9uc2U/LnJlZnVuZF9yZXF1ZXN0cz8ubGVuZ3RoKVxuICAgICAgICAgIC5tYXAoKHIpID0+IHIucmVzcG9uc2UpO1xuICAgICAgICByZXR1cm4gc3VjY2Vzc2Z1bGx5UmVxdWVzdGVkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4gZSk7XG4gIH07XG5cbi8vIHVwZGF0ZSB0aGUgdGlja2V0cyB0aGF0IGhhdmUgYmVlbiBzdWNlc3NmdWxseSByZWZ1bmRlZFxuZXhwb3J0IGNvbnN0IHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgPVxuICAodGlja2V0c1JlZnVuZFJlcXVlc3RlZCkgPT4gKGRpc3BhdGNoKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgY3JlYXRlQWN0aW9uKFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQpKHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQpXG4gICAgKTtcblxuLy8gU1VNTUlUIEFDVElPTlNcblxuZXhwb3J0IGNvbnN0IGdldEV4dHJhUXVlc3Rpb25zID1cbiAgKGF0dGVuZGVlSWQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBwYWdlOiAxLFxuICAgICAgcGVyX3BhZ2U6IEZJRlRZX1BFUl9QQUdFLFxuICAgICAgZXhwYW5kOiBcIipzdWJfcXVlc3Rpb25fcnVsZXMsKnN1Yl9xdWVzdGlvbiwqdmFsdWVzXCIsXG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBcInRpY2tldHNfZXhjbHVkZV9pbmFjdGl2ZXM9PXRydWVcIlxuICAgIH07XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9hdHRlbmRlZXMvJHthdHRlbmRlZUlkfS9hbGxvd2VkLWV4dHJhLXF1ZXN0aW9uc2A7XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMpLFxuICAgICAgZW5kcG9pbnQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS50aGVuKCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0ID1cbiAgKHRpY2tldElkLCBvcmRlcklkKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcIm93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH1gO1xuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBjcmVhdGVBY3Rpb24oUkVTRVRfVElDS0VUKSxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUNFSVZFX1RJQ0tFVCksXG4gICAgICBlbmRwb2ludCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmNvbnN0IG5vcm1hbGl6ZVRpY2tldCA9IChlbnRpdHkpID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZEVudGl0eSA9IHsgLi4uZW50aXR5IH07XG5cbiAgaWYgKCFlbnRpdHkuYXR0ZW5kZWVfY29tcGFueS5pZCkge1xuICAgIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueSA9IGVudGl0eS5hdHRlbmRlZV9jb21wYW55O1xuICB9IGVsc2Uge1xuICAgIGRlbGV0ZSBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnk7XG4gICAgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55X2lkID0gZW50aXR5LmF0dGVuZGVlX2NvbXBhbnkuaWQ7XG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplZEVudGl0eTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWZyZXNoUHJvZmlsZSA9XG4gIChkYXRhLCBjb21wYW55LCB0aWNrZXRPd25lcikgPT5cbiAgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyB1cGRhdGVQcm9maWxlIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyB1c2VyIH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcbiAgICBjb25zdCB7IHVzZXJQcm9maWxlIH0gPSB1c2VyO1xuXG4gICAgLy8gZW1haWwgc2hvdWxkIG1hdGNoICggb25seSB1cGRhdGUgbXkgcHJvZmlsZSBpcyB0aWNrZXQgYmVsb25ncyB0byBtZSEpXG4gICAgLy8gYW5kIGlmIHRoZSB0aWNrZXQgZG9lc24ndCBoYXZlIGEgbWFuYWdlclxuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgY2hhbmdlcyBpbiB0aGUgdGlja2V0IGRhdGEgdG8gdXBkYXRlIHRoZSBwcm9maWxlXG4gICAgY29uc3Qge1xuICAgICAgYXR0ZW5kZWVfZW1haWwsXG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgICAgYXR0ZW5kZWVfY29tcGFueVxuICAgIH0gPSBkYXRhO1xuICAgIGNvbnN0IGhhc01hbmFnZXIgPSB0aWNrZXRPd25lcj8ubWFuYWdlcj8uaWQgfHwgdGlja2V0T3duZXI/Lm1hbmFnZXJfaWQ7XG4gICAgY29uc3QgaXRzTWUgPSB1c2VyUHJvZmlsZS5lbWFpbCA9PT0gYXR0ZW5kZWVfZW1haWw7XG4gICAgY29uc3QgcHJvZmlsZUNoYW5nZWQgPVxuICAgICAgYXR0ZW5kZWVfY29tcGFueS5uYW1lICE9PSBjb21wYW55IHx8XG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lICE9PSB1c2VyUHJvZmlsZS5maXJzdF9uYW1lIHx8XG4gICAgICBhdHRlbmRlZV9sYXN0X25hbWUgIT09IHVzZXJQcm9maWxlLmxhc3RfbmFtZTtcblxuICAgIGlmIChpdHNNZSAmJiAhaGFzTWFuYWdlciAmJiBwcm9maWxlQ2hhbmdlZCkge1xuICAgICAgY29uc3QgbmV3UHJvZmlsZSA9IHtcbiAgICAgICAgZmlyc3RfbmFtZTogYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICAgICAgbGFzdF9uYW1lOiBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgICAgIGNvbXBhbnk6IGF0dGVuZGVlX2NvbXBhbnkubmFtZSB8fCBhdHRlbmRlZV9jb21wYW55XG4gICAgICB9O1xuXG4gICAgICAvLyB0aGlzIGlzIGEgY2FsbGJhY2sgbWV0aG9kIHRoYXQgdXBkYXRlcyB1c2VyUHJvZmlsZSBpbiBBUEkgYW5kIGV2ZW50LXNpdGVcbiAgICAgIHVwZGF0ZVByb2ZpbGUobmV3UHJvZmlsZSk7XG4gICAgfVxuICB9O1xuXG5leHBvcnQgY29uc3Qgc2F2ZVRpY2tldERldGFpbHMgPVxuICAodGlja2V0LCBhbnN3ZXJzKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaChQcm9taXNlLnJlamVjdCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGlkVG9rZW4gPSBnZXRJZFRva2VuKCk7XG4gICAgbGV0IGNvbXBhbnkgPSBcIlwiO1xuICAgIGlmIChpZFRva2VuKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB2ZXJpZmllciA9IG5ldyBJZFRva2VuVmVyaWZpZXIoKTtcbiAgICAgICAgY29uc3Qgand0ID0gdmVyaWZpZXIuZGVjb2RlKGlkVG9rZW4pO1xuICAgICAgICBjb21wYW55ID0gand0LnBheWxvYWQuY29tcGFueTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgbm9ybWFsaXplZEVudGl0eSA9IG5vcm1hbGl6ZVRpY2tldChhbnN3ZXJzKTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvYWxsL3RpY2tldHMvJHt0aWNrZXQuaWR9YCxcbiAgICAgIG5vcm1hbGl6ZWRFbnRpdHksXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChyZWZyZXNoUHJvZmlsZShhbnN3ZXJzLCBjb21wYW55LCB0aWNrZXQub3duZXIpKTtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgYXNzaWduQXR0ZW5kZWUgPVxuICAob3JkZXJJZCwgdGlja2V0SWQsIGF0dGVuZGVlX2VtYWlsLCBtZXNzYWdlID0gbnVsbCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgY29uc3QgcGF5bG9hZCA9IHsgYXR0ZW5kZWVfZW1haWwgfTtcbiAgICBpZiAobWVzc2FnZSkgcGF5bG9hZC5tZXNzYWdlID0gbWVzc2FnZTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oQVNTSUdOX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfS9hdHRlbmRlZWAsXG4gICAgICBwYXlsb2FkLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkuZmluYWxseSgoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlYXNzaWduVGlja2V0ID1cbiAgKG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCwgbWVzc2FnZSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOiBcIm9yZGVyLCBvd25lciwgb3duZXIuZXh0cmFfcXVlc3Rpb25zLCBvcmRlci5zdW1taXRcIlxuICAgIH07XG5cbiAgICByZXR1cm4gZGVsZXRlUmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfS9hdHRlbmRlZWAsXG4gICAgICB7fSxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLnRoZW4oKCkgPT5cbiAgICAgIGRpc3BhdGNoKGFzc2lnbkF0dGVuZGVlKG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCwgbWVzc2FnZSkpXG4gICAgKTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNhdmVFeHRyYVF1ZXN0aW9ucyA9XG4gICh0aWNrZXQsIGFuc3dlcnMpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKFByb21pc2UucmVqZWN0KTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJyZWZ1bmRfcmVxdWVzdHMsb3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbixiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZSxvcmRlclwiLFxuICAgICAgcmVsYXRpb25zOiBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlXCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFVQREFURV9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy9hbGwvdGlja2V0cy8ke3RpY2tldC5pZH1gLFxuICAgICAgYW5zd2VycyxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFBERiA9XG4gICh0aWNrZXQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKFByb21pc2UucmVqZWN0KTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSBvYmplY3RUb1F1ZXJ5U3RyaW5nKHBhcmFtcyk7XG4gICAgY29uc3QgYXBpVXJsID0gYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L3BkZj8ke3F1ZXJ5U3RyaW5nfWA7XG5cbiAgICByZXR1cm4gZmV0Y2goYXBpVXJsLCB7XG4gICAgICByZXNwb25zZVR5cGU6IFwiQmxvYlwiLFxuICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL3BkZlwiIH1cbiAgICB9KVxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuYmxvYigpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLnRoZW4oKHBkZikgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChwZGYpO1xuICAgICAgICBsaW5rLmhyZWYgPSB1cmw7XG4gICAgICAgIGxpbmsuZG93bmxvYWQgPSBcInRpY2tldC5wZGZcIjtcbiAgICAgICAgbGluay5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KFwiY2xpY2tcIikpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChjdXN0b21GZXRjaEVycm9ySGFuZGxlcik7XG4gIH07XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0IEV4dHJhUXVlc3Rpb25zRmllbGRzIGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkc1wiO1xuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uL0Zvcm1Gb290ZXJcIjtcbmltcG9ydCB1c2VTY3JvbGxUb0Vycm9yIGZyb20gXCIuLi8uLi9ob29rcy91c2VTY3JvbGxUb0Vycm9yXCI7XG5pbXBvcnQgUmVnaXN0cmF0aW9uRGlzY2xhaW1lciBmcm9tIFwiLi4vVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9SZWdpc3RyYXRpb25EaXNjbGFpbWVyXCI7XG5pbXBvcnQgeyBidWlsZFZhbGlkYXRpb25TY2hlbWEsIHBhcnNlQW5zd2VycyB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5jb25zdCBBc3NpZ25FUUZvcm0gPSAoe1xuICB0aWNrZXQsXG4gIHN1bW1pdCxcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIG9uU3VibWl0LFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHBhcnNlQW5zd2VycyhcbiAgICAgIHRpY2tldC5vd25lcixcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAge30sXG4gICAgICBudWxsLFxuICAgICAgZmFsc2UsXG4gICAgICBmYWxzZSxcbiAgICAgIHRydWVcbiAgICApLFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IGJ1aWxkVmFsaWRhdGlvblNjaGVtYShcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgZmFsc2UsXG4gICAgICBmYWxzZSxcbiAgICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnlcbiAgICApLFxuICAgIG9uU3VibWl0OiAodmFsdWVzKSA9PiB7XG4gICAgICBjb25zdCByZWxldmFudEFuc3dlcnMgPSBwYXJzZUFuc3dlcnMoXG4gICAgICAgIHRpY2tldC5vd25lcixcbiAgICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICB0cnVlLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgICAgcmV0dXJuIG9uU3VibWl0KHJlbGV2YW50QW5zd2Vycyk7XG4gICAgfSxcbiAgICBlbmFibGVSZWluaXRpYWxpemU6IHRydWVcbiAgfSk7XG5cbiAgLy8gU0NST0xMIFRPIEVSUk9SXG4gIHVzZVNjcm9sbFRvRXJyb3IoZm9ybWlrLCBcInJlYXNzaWduRHJhd2VyXCIpO1xuXG4gIGlmIChleHRyYVF1ZXN0aW9ucz8ubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgPEJveD5cbiAgICAgICAgPEV4dHJhUXVlc3Rpb25zRmllbGRzIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc30gZm9ybWlrPXtmb3JtaWt9IC8+XG4gICAgICAgIHtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudCAmJiAoXG4gICAgICAgICAgPFJlZ2lzdHJhdGlvbkRpc2NsYWltZXJcbiAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgICAgZGlzY2xhaW1lcj17c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnR9XG4gICAgICAgICAgICBpc1JlcXVpcmVkPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cbiAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9hc3NpZ25fZXEuc2F2ZVwiKX1cbiAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduX2VxLmNhbmNlbFwiKX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAvPlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cbkFzc2lnbkVRRm9ybS5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgZXh0cmFRdWVzdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduRVFGb3JtO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IENvbnRlbnRDb3B5SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiO1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgZGVmYXVsdFdpZHRoID0gOTA7XG5cbmNvbnN0IENvcHlUZXh0ID0gKHtcbiAgdGV4dCxcbiAgdG9vbHRpcFRleHQsXG4gIGhpZGVDb3B5ID0gZmFsc2UsXG4gIHRydW5jYXRlZCA9IHRydWUsXG4gIHJldmVyc2VkID0gZmFsc2UsXG4gIHdpZHRoID0gZGVmYXVsdFdpZHRoXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgdG9vbHRpcFRleHRUb1VzZSA9IHRvb2x0aXBUZXh0IHx8IHQoXCJnZW5lcmFsLmNvcHlfdG9fY2xpcGJvYXJkXCIpO1xuICBjb25zdCBbdG9vbHRpcCwgc2V0VG9vbHRpcF0gPSBSZWFjdC51c2VTdGF0ZSh0b29sdGlwVGV4dFRvVXNlKTtcbiAgY29uc3QgY2xhc3NOYW1lcyA9IGAke3RydW5jYXRlZCAmJiBzdHlsZXMudHJ1bmNhdGVkfSAke1xuICAgIHJldmVyc2VkICYmIHN0eWxlcy5yZXZlcnNlZFxuICB9YDtcblxuICBjb25zdCBoYW5kbGVDb3B5ID0gKCkgPT4ge1xuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRleHQpO1xuICAgIHNldFRvb2x0aXAodChcImdlbmVyYWwuY29waWVkXCIpKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldFRvb2x0aXAodG9vbHRpcFRleHRUb1VzZSk7XG4gICAgfSwgTUlMTElTRUNfVE9fU0VDKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e2NsYXNzTmFtZXN9IHN0eWxlPXt7IHdpZHRoIH19PlxuICAgICAgICB7dGV4dH1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHshaGlkZUNvcHkgJiYgKFxuICAgICAgICA8VG9vbHRpcCB0aXRsZT17dG9vbHRpcH0+XG4gICAgICAgICAgPENvbnRlbnRDb3B5SWNvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29weUljb259XG4gICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDb3B5fVxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJjb3B5LW51bWJlci1idXR0b25cIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5Db3B5VGV4dC5wcm9wVHlwZXMgPSB7XG4gIHRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHRvb2x0aXBUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBoaWRlQ29weTogUHJvcFR5cGVzLmJvb2wsXG4gIHRydW5jYXRlZDogUHJvcFR5cGVzLmJvb2wsXG4gIHJldmVyc2VkOiBQcm9wVHlwZXMuYm9vbCxcbiAgd2lkdGg6IFByb3BUeXBlcy5udW1iZXJcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvcHlUZXh0O1xuIiwiaW1wb3J0IHsgY3JlYXRlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuXG5jb25zdCBkZWZhdWx0Q29udGV4dFZhbHVlID0ge1xuICBzZXRNZXNzYWdlOiAoKSA9PiB7fSxcbiAgc2V0TWVzc2FnZUNhbGxiYWNrOiAoKSA9PiB7fVxufTtcblxuY29uc3QgQ3VzdG9tRGlhbG9nQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoZGVmYXVsdENvbnRleHRWYWx1ZSk7XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbURpYWxvZ0NvbnRleHQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBEaWFsb2csXG4gIERpYWxvZ0NvbnRlbnQsXG4gIERpYWxvZ0NvbnRlbnRUZXh0LFxuICBEaWFsb2dUaXRsZVxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuXG5jb25zdCBDdXN0b21EaWFsb2cgPSAoeyBvcGVuLCBvbkNsb3NlLCB0aXRsZSwgYm9keSB9KSA9PiAoXG4gIDxEaWFsb2dcbiAgICBvcGVuPXtvcGVufVxuICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgYXJpYS1sYWJlbGxlZGJ5PVwiYWxlcnQtZGlhbG9nLXRpdGxlXCJcbiAgICBhcmlhLWRlc2NyaWJlZGJ5PVwiYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uXCJcbiAgPlxuICAgIDxEaWFsb2dUaXRsZSBpZD1cImFsZXJ0LWRpYWxvZy10aXRsZVwiPnt0aXRsZX08L0RpYWxvZ1RpdGxlPlxuICAgIDxEaWFsb2dDb250ZW50PlxuICAgICAgPERpYWxvZ0NvbnRlbnRUZXh0XG4gICAgICAgIGlkPVwiYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uXCJcbiAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3sgX19odG1sOiBib2R5IH19XG4gICAgICAvPlxuICAgIDwvRGlhbG9nQ29udGVudD5cbiAgPC9EaWFsb2c+XG4pO1xuXG5DdXN0b21EaWFsb2cucHJvcFR5cGVzID0ge1xuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBib2R5OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDdXN0b21EaWFsb2c7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5cbmxldCBkYXJrQ29sb3IgPSBcIlwiO1xuaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgLy8gR2V0IHRoZSByb290IGVsZW1lbnRcbiAgY29uc3Qgcm9vdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuICAvLyBSZXRyaWV2ZSB0aGUgY3VycmVudCB2YWx1ZSBvZiBhIENTUyB2YXJpYWJsZVxuICBkYXJrQ29sb3IgPSBnZXRDb21wdXRlZFN0eWxlKHJvb3QpLmdldFByb3BlcnR5VmFsdWUoXG4gICAgXCItLWNvbG9yX2JhY2tncm91bmRfZGFya1wiXG4gICk7XG59XG5cbmNvbnN0IHRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBwYWxldHRlOiB7XG4gICAgcHJpbWFyeToge1xuICAgICAgbWFpbjogZGFya0NvbG9yXG4gICAgfVxuICB9LFxuICBjb21wb25lbnRzOiB7XG4gICAgTXVpVGFiOiB7XG4gICAgICBzdHlsZU92ZXJyaWRlczoge1xuICAgICAgICByb290OiB7XG4gICAgICAgICAgZm9udFNpemU6IFwiMTRweFwiLFxuICAgICAgICAgIGNvbG9yOiBcIiMwMDAwMDA5OVwiLFxuICAgICAgICAgIFwiJi5NdWktc2VsZWN0ZWRcIjoge1xuICAgICAgICAgICAgY29sb3I6IFwiIzIxOTZmM1wiXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBNdWlUYWJzOiB7XG4gICAgICBzdHlsZU92ZXJyaWRlczoge1xuICAgICAgICBpbmRpY2F0b3I6IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzIxOTZmM1wiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn0pO1xuXG5jb25zdCBDdXN0b21UaGVtZSA9ICh7IGNoaWxkcmVuIH0pID0+IChcbiAgPFRoZW1lUHJvdmlkZXIgdGhlbWU9e3RoZW1lfT57Y2hpbGRyZW59PC9UaGVtZVByb3ZpZGVyPlxuKTtcblxuQ3VzdG9tVGhlbWUucHJvcFR5cGVzID0ge1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tVGhlbWU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBDaGVja2JveCxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1Hcm91cCxcbiAgRm9ybUhlbHBlclRleHQsXG4gIEZvcm1MYWJlbFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICB2YWx1ZSxcbiAgb25DaGFuZ2UsXG4gIHNldEZpZWxkVmFsdWUsXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG4gIGNvbnN0IHF1ZXN0aW9uTWF4VmFsdWVzID0gcXVlc3Rpb24ubWF4X3NlbGVjdGVkX3ZhbHVlcztcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZC50b1N0cmluZygpXG4gICAgfSkpIHx8IFtdO1xuXG4gIGNvbnN0IGhhbmRsZUNoZWNrYm94TGlzdENoYW5nZSA9IChjaGVja2VkLCB2YWwpID0+IHtcbiAgICBjb25zdCBjdXJyZW50QW5zID0gdmFsdWUgfHwgW107XG4gICAgY29uc3QgbWF4U2VsZWN0aW9uUmVhY2hlZCA9IGN1cnJlbnRBbnMubGVuZ3RoID09PSBxdWVzdGlvbk1heFZhbHVlcztcbiAgICBsZXQgbmV3VmFsdWU7XG5cbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgbmV3VmFsdWUgPSBtYXhTZWxlY3Rpb25SZWFjaGVkID8gY3VycmVudEFucyA6IFsuLi5jdXJyZW50QW5zLCB2YWxdO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXdWYWx1ZSA9IGN1cnJlbnRBbnMuZmlsdGVyKCh2KSA9PiB2ICE9PSB2YWwpO1xuICAgIH1cblxuICAgIHNldEZpZWxkVmFsdWUocXVlc3Rpb25TbHVnLCBuZXdWYWx1ZSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxGb3JtTGFiZWw+e3F1ZXN0aW9uTGFiZWx9PC9Gb3JtTGFiZWw+XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICAgIDxGb3JtR3JvdXA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICBrZXk9e29wLmxhYmVsfVxuICAgICAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17dmFsdWU/LmluY2x1ZGVzKG9wLnZhbHVlKX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZXYpID0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUNoZWNrYm94TGlzdENoYW5nZShldi50YXJnZXQuY2hlY2tlZCwgb3AudmFsdWUpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBsYWJlbD17b3AubGFiZWx9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0Zvcm1Hcm91cD5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB2YWx1ZTogUHJvcFR5cGVzLmFycmF5LFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBDaGVja2JveCxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1IZWxwZXJUZXh0XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgUmF3SFRNTCBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgQ2hlY2tib3hRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgdmFsdWUsXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICBzZXRGaWVsZFZhbHVlLFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbCBmdWxsV2lkdGggZXJyb3I9e2Vycm9yfT5cbiAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdmFsdWV9XG4gICAgICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57cXVlc3Rpb25MYWJlbH08L1Jhd0hUTUw+fVxuICAgICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57cXVlc3Rpb25MYWJlbH08L1Jhd0hUTUw+fVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAvPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ2hlY2tib3hRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdmFsdWU6IFByb3BUeXBlcy5ib29sLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIElucHV0TGFiZWwsIE1lbnVJdGVtLCBTZWxlY3QgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IERyb3Bkb3duUXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgY2hpbGRyZW4sXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWRcbiAgICB9KSkgfHwgW107XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxJbnB1dExhYmVsIGlkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH0+e3F1ZXN0aW9uTGFiZWx9PC9JbnB1dExhYmVsPlxuICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgbGFiZWxJZD17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9XG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGlkPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgbGFiZWw9e3F1ZXN0aW9uTGFiZWx9XG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICBzdHlsZT17eyBtYXJnaW5Cb3R0b206IDIwIH19XG4gICAgICAgID5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxNZW51SXRlbSBrZXk9e29wLmxhYmVsfSB2YWx1ZT17b3AudmFsdWV9PlxuICAgICAgICAgICAgICB7b3AubGFiZWx9XG4gICAgICAgICAgICA8L01lbnVJdGVtPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L1NlbGVjdD5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkRyb3Bkb3duUXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBEcm9wZG93blF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHQsXG4gIEZvcm1MYWJlbCxcbiAgUmFkaW8sXG4gIFJhZGlvR3JvdXBcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZC50b1N0cmluZygpXG4gICAgfSkpIHx8IFtdO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgPlxuICAgICAgICA8Rm9ybUxhYmVsIGlkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH0+e3F1ZXN0aW9uTGFiZWx9PC9Gb3JtTGFiZWw+XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICAgIDxSYWRpb0dyb3VwXG4gICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH1cbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAga2V5PXtvcC5sYWJlbH1cbiAgICAgICAgICAgICAgdmFsdWU9e29wLnZhbHVlfVxuICAgICAgICAgICAgICBjb250cm9sPXs8UmFkaW8gLz59XG4gICAgICAgICAgICAgIGxhYmVsPXtvcC5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvUmFkaW9Hcm91cD5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cblJhZGlvTGlzdFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEZvcm1Hcm91cCwgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBUZXh0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Hcm91cD5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBsYWJlbD17cXVlc3Rpb25MYWJlbH1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAvPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Hcm91cD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cblRleHRRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUZXh0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0XG59IGZyb20gXCIuLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IGNoZWNrUnVsZSA9ICh2YWx1ZSwgcnVsZSkgPT4ge1xuICBjb25zdCB2YWx1ZXMgPSBydWxlLmFuc3dlcl92YWx1ZXM7XG5cbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIGZhbHNlO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIGlmICghdmFsdWUubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgbGV0IHJlcyA9IHJ1bGUuYW5zd2VyX3ZhbHVlc19vcGVyYXRvciA9PT0gXCJBbmRcIjtcbiAgICB2YWx1ZXMuZm9yRWFjaCgodikgPT4ge1xuICAgICAgaWYgKHJ1bGUuYW5zd2VyX3ZhbHVlc19vcGVyYXRvciA9PT0gXCJBbmRcIikge1xuICAgICAgICByZXMgPSByZXMgJiYgdmFsdWUuaW5jbHVkZXModik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBPclxuICAgICAgICByZXMgPSByZXMgfHwgdmFsdWUuaW5jbHVkZXModik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICByZXR1cm4gdmFsdWVzLmluY2x1ZGVzKHZhbHVlPy50b1N0cmluZygpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja1Zpc2liaWxpdHkgPSAocnVsZSwgcnVsZVJlc3VsdCwgY2hpbGRyZW4pID0+IHtcbiAgaWYgKHJ1bGUudmlzaWJpbGl0eSA9PT0gXCJWaXNpYmxlXCIpIHtcbiAgICBpZiAocnVsZS52aXNpYmlsaXR5X2NvbmRpdGlvbiA9PT0gXCJFcXVhbFwiKSB7XG4gICAgICBpZiAocnVsZVJlc3VsdCkgcmV0dXJuIGNoaWxkcmVuO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIC8vIE5vbiBFcXVhbFxuICAgIGlmICghcnVsZVJlc3VsdCkge1xuICAgICAgcmV0dXJuIGNoaWxkcmVuO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBub3QgdmlzaWJsZVxuICBpZiAocnVsZS52aXNpYmlsaXR5X2NvbmRpdGlvbiA9PT0gXCJFcXVhbFwiKSB7XG4gICAgaWYgKCFydWxlUmVzdWx0KSByZXR1cm4gY2hpbGRyZW47XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKHJ1bGVSZXN1bHQpIHJldHVybiBjaGlsZHJlbjtcbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgdG9TbHVnID0gKHRleHQsIHF1ZXN0aW9uSWQpID0+IHtcbiAgY29uc3QgdGV4dExDID0gdGV4dC50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gYCR7dGV4dExDLnJlcGxhY2UoL1teYS16QS1aMC05XSsvZywgXCJfXCIpfV8ke3F1ZXN0aW9uSWR9YDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMYWJlbCA9IChxKSA9PlxuICAvLyByZXBsYWNlIGxpbmUgYnJlYWtzIGFuZCByZW1vdmUgb3V0ZXIgPHA+XG4gIHE/LmxhYmVsPy5yZXBsYWNlKC9cXG4vZywgXCIgXCIpLnJlcGxhY2UoLzxwPiguKik8XFwvcD4vZ2ksIFwiJDFcIik7XG5cbmV4cG9ydCBjb25zdCBpc0Fuc3dlcmVkID0gKGFuc3dlcikgPT4ge1xuICBpZiAoIWFuc3dlcikgcmV0dXJuIGZhbHNlO1xuICAvLyBjaGVjayB0eXBlXG4gIGlmIChBcnJheS5pc0FycmF5KGFuc3dlcikpIHJldHVybiBhbnN3ZXIubGVuZ3RoID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwic3RyaW5nXCIpIHJldHVybiBhbnN3ZXIubGVuZ3RoID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwibnVtYmVyXCIpIHJldHVybiBhbnN3ZXIgPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJib29sZWFuXCIpIHJldHVybiBhbnN3ZXI7XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja0lmVmFsdWVNYXRjaCA9IChhbnN3ZXIsIGNvbXBhcmVWYWwpID0+IHtcbiAgY29uc3QgYW5zd2VyQXJyYXkgPSBBcnJheS5pc0FycmF5KGFuc3dlcikgPyBhbnN3ZXIgOiBbYW5zd2VyXTtcblxuICByZXR1cm4gYW5zd2VyQXJyYXkuc29tZSgodikgPT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbXBhcmVWYWwpKSB7XG4gICAgICByZXR1cm4gY29tcGFyZVZhbC5pbmNsdWRlcyh2KTtcbiAgICB9XG4gICAgcmV0dXJuIHYgPT09IGNvbXBhcmVWYWw7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVJbml0aWFsVmFsdWUgPSAocSkgPT4ge1xuICBzd2l0Y2ggKHEudHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHJldHVybiBudWxsO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHJldHVybiBbXTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFwiXCI7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlVmFsdWUgPSAoYW5zLCB0eXBlKSA9PiB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OlxuICAgICAgcmV0dXJuIGFucyA9PT0gXCJ0cnVlXCI7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgcmV0dXJuIGFucz8uc3BsaXQoXCIsXCIpIHx8IFtdO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHJldHVybiBhbnMgfHwgXCJcIjtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICByZXR1cm4gYW5zIHx8IG51bGw7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBhbnM7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgPSAoYW5zd2VycykgPT4ge1xuICBjb25zdCB7XG4gICAgYXR0ZW5kZWVfZW1haWwsXG4gICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgYXR0ZW5kZWVfY29tcGFueSxcbiAgICBkaXNjbGFpbWVyX2FjY2VwdGVkLFxuICAgIC4uLmV4dHJhX3F1ZXN0aW9uc1xuICB9ID0gYW5zd2VycztcblxuICBjb25zdCBmb3JtYXR0ZWRFUSA9IE9iamVjdC5lbnRyaWVzKGV4dHJhX3F1ZXN0aW9ucykubWFwKChba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgcXVlc3Rpb25faWQ6IHBhcnNlSW50KGtleS5zcGxpdChcIl9cIikucG9wKCksIDEwKSxcbiAgICBhbnN3ZXI6IHZhbHVlLnRvU3RyaW5nKClcbiAgfSkpO1xuXG4gIHJldHVybiB7XG4gICAgYXR0ZW5kZWVfZW1haWwsXG4gICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgYXR0ZW5kZWVfY29tcGFueSxcbiAgICBkaXNjbGFpbWVyX2FjY2VwdGVkLFxuICAgIGV4dHJhX3F1ZXN0aW9uczogZm9ybWF0dGVkRVFcbiAgfTtcbn07XG4iLCJleHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1RleHQgPSBcIlRleHRcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfVGV4dEFyZWEgPSBcIlRleHRBcmVhXCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NoZWNrYm94ID0gXCJDaGVja0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QgPSBcIlJhZGlvQnV0dG9uTGlzdFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9Db21ib0JveCA9IFwiQ29tYm9Cb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0ID0gXCJDaGVja0JveExpc3RcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94ID0gXCJDb3VudHJ5Q29tYm9Cb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b24gPSBcIlJhZGlvQnV0dG9uXCI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5cbmltcG9ydCB7XG4gIHRvU2x1ZyxcbiAgaXNBbnN3ZXJlZCxcbiAgY2hlY2tWaXNpYmlsaXR5LFxuICBjaGVja1J1bGVcbn0gZnJvbSBcIi4vY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QsXG4gIFF1ZXN0aW9uVHlwZV9UZXh0LFxuICBRdWVzdGlvblR5cGVfVGV4dEFyZWFcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgVGV4dFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9UZXh0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IENoZWNrYm94UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0NoZWNrYm94UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9SYWRpb0xpc3RRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0NoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBEcm9wZG93blF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9Ecm9wZG93blF1ZXN0aW9uRmllbGRcIjtcblxuY29uc3QgZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudCA9IChxdWVzdGlvblR5cGUpID0+IHtcbiAgc3dpdGNoIChxdWVzdGlvblR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9UZXh0QXJlYTpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9UZXh0OiB7XG4gICAgICByZXR1cm4gVGV4dFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OiB7XG4gICAgICByZXR1cm4gQ2hlY2tib3hRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6IHtcbiAgICAgIHJldHVybiBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6IHtcbiAgICAgIHJldHVybiBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6IHtcbiAgICAgIHJldHVybiBEcm9wZG93blF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiBSZWFjdC5GcmFnbWVudDtcbiAgICB9XG4gIH1cbn07XG5cbmNvbnN0IEV4dHJhUXVlc3Rpb25zRmllbGRzID0gKHtcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGNsYXNzTmFtZSA9IFwiZXh0cmFRdWVzdGlvbnNcIixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcImV4dHJhUXVlc3Rpb25cIixcbiAgcmVhZE9ubHkgPSBmYWxzZSxcbiAgYWxsb3dFZGl0ID0gdHJ1ZSxcbiAgZm9ybWlrXG59KSA9PiB7XG4gIGNvbnN0IHJlbmRlclJ1bGUgPSAocnVsZSwgcXVlc3Rpb25TbHVnKSA9PlxuICAgIGNoZWNrVmlzaWJpbGl0eShcbiAgICAgIHJ1bGUsXG4gICAgICBjaGVja1J1bGUoZm9ybWlrLnZhbHVlc1txdWVzdGlvblNsdWddLCBydWxlKSxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgcmVuZGVyUXVlc3Rpb24ocnVsZS5zdWJfcXVlc3Rpb24pXG4gICAgKTtcblxuICBjb25zdCByZW5kZXJRdWVzdGlvbiA9IChxKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHEubmFtZSwgcS5pZCk7XG4gICAgLy8gZGlzYWJsZSBmaWVsZCBpZiBlZGl0IGlzbid0IGFsbG93ZWQgYW5kIHRoZSBxdWVzdGlvbnMgaXMgYW5zd2VyZWRcbiAgICBjb25zdCBpc0Rpc2FibGVkID1cbiAgICAgICghYWxsb3dFZGl0ICYmIGlzQW5zd2VyZWQoZm9ybWlrLnZhbHVlc1txdWVzdGlvblNsdWddKSkgfHwgcmVhZE9ubHk7XG4gICAgY29uc3QgUXVlc3Rpb25GaWVsZENvbXBvbmVudCA9IGdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQocS50eXBlKTtcblxuICAgIGNvbnN0IGZvcm1pa1Byb3BzID0ge1xuICAgICAgdmFsdWU6IGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSxcbiAgICAgIG9uQ2hhbmdlOiBmb3JtaWsuaGFuZGxlQ2hhbmdlLFxuICAgICAgb25CbHVyOiBmb3JtaWsuaGFuZGxlQmx1cixcbiAgICAgIGVycm9yOlxuICAgICAgICBmb3JtaWsudG91Y2hlZFtxdWVzdGlvblNsdWddICYmIEJvb2xlYW4oZm9ybWlrLmVycm9yc1txdWVzdGlvblNsdWddKSxcbiAgICAgIGhlbHBlclRleHQ6IGZvcm1pay50b3VjaGVkW3F1ZXN0aW9uU2x1Z10gJiYgZm9ybWlrLmVycm9yc1txdWVzdGlvblNsdWddLFxuICAgICAgc2V0RmllbGRWYWx1ZTogZm9ybWlrLnNldEZpZWxkVmFsdWVcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxRdWVzdGlvbkZpZWxkQ29tcG9uZW50XG4gICAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgICBxdWVzdGlvbj17cX1cbiAgICAgICAgcXVlc3Rpb25DbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgICAgICBpc0Rpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICB7Li4uZm9ybWlrUHJvcHN9XG4gICAgICA+XG4gICAgICAgIHtxLnN1Yl9xdWVzdGlvbl9ydWxlcz8ubWFwKChydWxlKSA9PiByZW5kZXJSdWxlKHJ1bGUsIHF1ZXN0aW9uU2x1ZykpfVxuICAgICAgPC9RdWVzdGlvbkZpZWxkQ29tcG9uZW50PlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtjbGFzc05hbWV9PntleHRyYVF1ZXN0aW9ucy5tYXAocmVuZGVyUXVlc3Rpb24pfTwvZGl2Pjtcbn07XG5cbkV4dHJhUXVlc3Rpb25zRmllbGRzLnByb3BUeXBlcyA9IHtcbiAgZXh0cmFRdWVzdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBhbGxvd0VkaXQ6IFByb3BUeXBlcy5ib29sLFxuICByZWFkT25seTogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEV4dHJhUXVlc3Rpb25zRmllbGRzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudCxcbiAgUmFkaW9Hcm91cCxcbiAgUmFkaW9cbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IEFzc2lnbmVkRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG5cbiAgY29uc3QgYXNzaWduZWRWYWx1ZXMgPSBbXG4gICAgeyB2YWx1ZTogXCJNZVwiLCBsYWJlbDogXCJNZVwiIH0sXG4gICAgeyB2YWx1ZTogXCJTb21lb25lRWxzZVwiLCBsYWJlbDogXCJTb21lb25lIEVsc2VcIiB9LFxuICAgIHsgdmFsdWU6IFwiTm9ib2R5XCIsIGxhYmVsOiBcIk5vYm9keVwiIH1cbiAgXTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAoZXYsIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVyID0gdmFsdWU7XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXTogbmV3RmlsdGVyXG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJBc3NpZ25lZFwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8UmFkaW9Hcm91cCB2YWx1ZT17ZmlsdGVyVmFsdWVzfSBvbkNoYW5nZT17aGFuZGxlRmlsdGVyQ2hhbmdlfT5cbiAgICAgICAgICAgIHthc3NpZ25lZFZhbHVlcy5tYXAoKGFzc2lnbmVkKSA9PiAoXG4gICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICBzeD17eyBweTogMSB9fVxuICAgICAgICAgICAgICAgIGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YXNzaWduZWQubGFiZWx9fWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgIDxSYWRpb1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXthc3NpZ25lZC52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7IGNvbG9yOiBcIiMyMTk2RjNcIiB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXthc3NpZ25lZC5sYWJlbH1cbiAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvUmFkaW9Hcm91cD5cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5Bc3NpZ25lZEZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduZWRGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDaGVja2JveCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgQmFkZ2VGZWF0dXJlRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgc3VtbWl0OiB7IGJhZGdlX2ZlYXR1cmVzX3R5cGVzIH0sXG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRTogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAodmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXJzID0gZmlsdGVyVmFsdWVzPy5pbmNsdWRlcyh2YWx1ZSlcbiAgICAgID8gZmlsdGVyVmFsdWVzLmZpbHRlcigoZikgPT4gZiAhPT0gdmFsdWUpXG4gICAgICA6IFsuLi5maWx0ZXJWYWx1ZXMsIHZhbHVlXTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXTogbmV3RmlsdGVyc1xuICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0SXNFeHBhbmRlZCghIWZpbHRlclZhbHVlcy5sZW5ndGgpO1xuICB9LCBbZmlsdGVyVmFsdWVzXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJCYWRnZSBGZWF0dXJlXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtiYWRnZV9mZWF0dXJlc190eXBlcy5tYXAoKGJmKSA9PiAoXG4gICAgICAgICAgICA8Qm94IHN4PXt7IHB5OiAxIH19IGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YmYubmFtZX19YH0+XG4gICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IGhhbmRsZUZpbHRlckNoYW5nZShiZi5pZCl9XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2ZpbHRlclZhbHVlcy5pbmNsdWRlcyhiZi5pZCl9XG4gICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwiIzIxOTZGM1wiXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2JmLm5hbWV9XG4gICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkJhZGdlRmVhdHVyZUZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQmFkZ2VGZWF0dXJlRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgRmlsdGVyTGlzdEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiO1xuaW1wb3J0IHtcbiAgQmFkZ2UsXG4gIEJveCxcbiAgQnV0dG9uLFxuICBDYXJkLFxuICBDYXJkSGVhZGVyLFxuICBEaXZpZGVyLFxuICBQYXBlclxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgY29ubmVjdCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IEJhZGdlRmVhdHVyZUZpbHRlciBmcm9tIFwiLi9CYWRnZUZlYXR1cmVGaWx0ZXJcIjtcbmltcG9ydCB7XG4gIEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSxcbiAgRklMVEVSX1ZBUl9GUkVFX1BBSUQsXG4gIEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTLFxuICBGSUxURVJfVkFSX1BST01PQ09ERSxcbiAgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQsXG4gIEZJTFRFUl9WQVJfVElDS0VUX1RZUEVcbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBUaWNrZXRUeXBlRmlsdGVyIGZyb20gXCIuL1RpY2tldFR5cGVGaWx0ZXJcIjtcbmltcG9ydCBBc3NpZ25lZEZpbHRlciBmcm9tIFwiLi9Bc3NpZ25lZEZpbHRlclwiO1xuaW1wb3J0IFN0YXR1c0ZpbHRlciBmcm9tIFwiLi9TdGF0dXNGaWx0ZXJcIjtcbmltcG9ydCBGcmVlUGFpZEZpbHRlciBmcm9tIFwiLi9GcmVlUGFpZEZpbHRlclwiO1xuaW1wb3J0IFByb21vQ29kZUZpbHRlciBmcm9tIFwiLi9Qcm9tb0NvZGVGaWx0ZXJcIjtcblxuY29uc3QgRmlsdGVyID0gKHsgb25GaWx0ZXIsIG9uUmVzZXQsIGZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dGaWx0ZXJMaXN0LCBzZXRTaG93RmlsdGVyTGlzdF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzaG93RGF0ZXBpY2tlciwgc2V0U2hvd0RhdGVwaWNrZXJdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbZmlsdGVyTnVtQWN0aXZlLCBzZXRGaWx0ZXJOdW1BY3RpdmVdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IGZpbHRlclJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKGZpbHRlclJlZi5jdXJyZW50ICYmICFmaWx0ZXJSZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICBpZiAoc2hvd0ZpbHRlckxpc3QpIHtcbiAgICAgICAgc2V0U2hvd0ZpbHRlckxpc3QoZmFsc2UpO1xuICAgICAgICBzZXRTaG93RGF0ZXBpY2tlcihmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIH07XG4gIH0sIFtzaG93RmlsdGVyTGlzdF0pO1xuXG4gIGNvbnN0IE1BUkdJTl9SSUdIVF9XSVRIX0JBREdFID0gMTtcbiAgY29uc3QgQUREX0ZJTFRFUl9OVU1CRVIgPSAxO1xuXG4gIGNvbnN0IGNhbGN1bGF0ZUFjdGl2ZUZpbHRlcnMgPSAoZmlsdGVycykgPT4ge1xuICAgIGxldCBjb3VudCA9IDA7XG4gICAgT2JqZWN0LmVudHJpZXMoZmlsdGVycykuZm9yRWFjaCgoWywgdmFsdWVdKSA9PiB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgY291bnQgKz0gdmFsdWUubGVuZ3RoO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgdmFsdWUudHJpbSgpICE9PSBcIlwiKSB7XG4gICAgICAgIGNvdW50ICs9IEFERF9GSUxURVJfTlVNQkVSO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgJiYgdmFsdWUgPiAwKSB7XG4gICAgICAgIGNvdW50ICs9IEFERF9GSUxURVJfTlVNQkVSO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjb3VudDtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldEZpbHRlck51bUFjdGl2ZShjYWxjdWxhdGVBY3RpdmVGaWx0ZXJzKGZpbHRlcikpO1xuICB9LCBbZmlsdGVyXSk7XG5cbiAgY29uc3QgdG9nZ2xlID0gKCkgPT4ge1xuICAgIHNldFNob3dGaWx0ZXJMaXN0KCFzaG93RmlsdGVyTGlzdCk7XG4gICAgc2V0U2hvd0RhdGVwaWNrZXIoIXNob3dEYXRlcGlja2VyKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJSZXNldCA9ICgpID0+IHtcbiAgICBzZXRGaWx0ZXJOdW1BY3RpdmUoMCk7XG4gICAgb25SZXNldCgpO1xuICAgIHRvZ2dsZSgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJDb250YWluZXJ9IHJlZj17ZmlsdGVyUmVmfT5cbiAgICAgIDxTdGFja1xuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICAgIG9uQ2xpY2s9e3RvZ2dsZX1cbiAgICAgID5cbiAgICAgICAgPEJhZGdlXG4gICAgICAgICAgYmFkZ2VDb250ZW50PXtmaWx0ZXJOdW1BY3RpdmV9XG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICBzeD17eyBtcjogZmlsdGVyTnVtQWN0aXZlID4gMCA/IE1BUkdJTl9SSUdIVF9XSVRIX0JBREdFIDogXCJcIiB9fVxuICAgICAgICA+XG4gICAgICAgICAgPEZpbHRlckxpc3RJY29uIGZvbnRTaXplPVwibGFyZ2VcIiBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJJY29ufSAvPlxuICAgICAgICA8L0JhZGdlPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJMYWJlbH0+e3QoXCJmaWx0ZXIuZmlsdGVyXCIpfTwvc3Bhbj5cbiAgICAgIDwvU3RhY2s+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmZpbHRlckxpc3RDb250YWluZXJ9ICR7c3R5bGVzLmNvbnRhaW5lcn0gJHtcbiAgICAgICAgICBzaG93RmlsdGVyTGlzdCA/IHN0eWxlcy5zaG93RmlsdGVyTGlzdCA6IFwiXCJcbiAgICAgICAgfWB9XG4gICAgICA+XG4gICAgICAgIDxQYXBlciBlbGV2YXRpb249ezh9IGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckNoZWNrYm94Q29udGFpbmVyfT5cbiAgICAgICAgICA8Q2FyZCB2YXJpYW50PVwib3V0bGluZWRcIj5cbiAgICAgICAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgICAgICAgIHRpdGxlPVwiRmlsdGVyc1wiXG4gICAgICAgICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgZGlzYWJsZVJpcHBsZVxuICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlRmlsdGVyUmVzZXR9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jbGVhbkJ1dHRvbn1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBDbGVhblxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPERpdmlkZXIgLz5cbiAgICAgICAgICAgIDxCYWRnZUZlYXR1cmVGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEFzc2lnbmVkRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFN0YXR1c0ZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX09XTkVSX1NUQVRVU119XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxUaWNrZXRUeXBlRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfVElDS0VUX1RZUEVdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8UHJvbW9Db2RlRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfUFJPTU9DT0RFXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEZyZWVQYWlkRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfRlJFRV9QQUlEXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQ2FyZD5cbiAgICAgICAgPC9QYXBlcj5cbiAgICAgIDwvQm94PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5jb25zdCBtYXBTdGF0ZVRvUHJvcHMgPSAoeyB3aWRnZXRTdGF0ZSB9KSA9PiAoe1xuICBzb3J0OiB3aWRnZXRTdGF0ZS5zb3J0LFxuICBmaWx0ZXI6IHdpZGdldFN0YXRlLmZpbHRlclxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGNvbm5lY3QobWFwU3RhdGVUb1Byb3BzLCB7fSkoRmlsdGVyKTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFJhZGlvR3JvdXAsXG4gIFJhZGlvXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9GUkVFX1BBSUQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBGcmVlUGFpZEZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX0ZSRUVfUEFJRDogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuXG4gIGNvbnN0IGFzc2lnbmVkVmFsdWVzID0gW1xuICAgIHsgdmFsdWU6IFwiRnJlZVwiLCBsYWJlbDogXCJGcmVlXCIgfSxcbiAgICB7IHZhbHVlOiBcIlBhaWRcIiwgbGFiZWw6IFwiUGFpZFwiIH1cbiAgXTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAoZXYsIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVyID0gdmFsdWU7XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfRlJFRV9QQUlEXTogbmV3RmlsdGVyXG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJGcmVlIC8gUGFpZFwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8UmFkaW9Hcm91cCB2YWx1ZT17ZmlsdGVyVmFsdWVzfSBvbkNoYW5nZT17aGFuZGxlRmlsdGVyQ2hhbmdlfT5cbiAgICAgICAgICAgIHthc3NpZ25lZFZhbHVlcy5tYXAoKGFzc2lnbmVkKSA9PiAoXG4gICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICBzeD17eyBweTogMSB9fVxuICAgICAgICAgICAgICAgIGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YXNzaWduZWQubGFiZWx9fWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgIDxSYWRpb1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXthc3NpZ25lZC52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7IGNvbG9yOiBcIiMyMTk2RjNcIiB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXthc3NpZ25lZC5sYWJlbH1cbiAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvUmFkaW9Hcm91cD5cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5GcmVlUGFpZEZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRnJlZVBhaWRGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudCxcbiAgVGV4dEZpZWxkXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9QUk9NT0NPREUgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBQcm9tb0NvZGVGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9QUk9NT0NPREU6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzKTtcbiAgY29uc3QgW3Byb21vQ29kZSwgc2V0UHJvbW9Db2RlXSA9IHVzZVN0YXRlKGZpbHRlclZhbHVlcyB8fCBcIlwiKTtcblxuICBjb25zdCBkZWJvdW5jZVRpbWVyID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBERUJPVU5DRV9WQUxVRSA9IDUwMDtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFByb21vQ29kZShmaWx0ZXJWYWx1ZXMgfHwgXCJcIik7XG4gICAgc2V0SXNFeHBhbmRlZCghIWZpbHRlclZhbHVlcyk7XG4gIH0sIFtmaWx0ZXJWYWx1ZXNdKTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAoZXYpID0+IHtcbiAgICBjb25zdCBuZXdQcm9tb0NvZGUgPSBldi50YXJnZXQudmFsdWU7XG4gICAgLy8gdXBkYXRlIGxvY2FsIHN0YXRlIHNvIHRoZSBpbnB1dCByZWZsZWN0cyBjaGFuZ2VzXG4gICAgc2V0UHJvbW9Db2RlKG5ld1Byb21vQ29kZSk7XG5cbiAgICAvLyByZW1vdmUgY3VycmVudCBkZWJvdW5jZVxuICAgIGlmIChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpO1xuICAgIH1cblxuICAgIC8vIGRlYm91bmNlIHNldCB0byA1MDAgbXNcbiAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIG9uRmlsdGVyKHtcbiAgICAgICAgW0ZJTFRFUl9WQVJfUFJPTU9DT0RFXTogbmV3UHJvbW9Db2RlXG4gICAgICB9KTtcbiAgICB9LCBERUJPVU5DRV9WQUxVRSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyByZW1vdmUgZGVib3VuY2Ugb24gcmVsb2FkXG4gICAgaWYgKGRlYm91bmNlVGltZXIuY3VycmVudCkge1xuICAgICAgY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXIuY3VycmVudCk7XG4gICAgfVxuICB9LCBbXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJQcm9tbyBDb2RlXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBweTogMVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBwcm9tbyBjb2RlXCJcbiAgICAgICAgICAgIHZhbHVlPXtwcm9tb0NvZGV9XG4gICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlRmlsdGVyQ2hhbmdlfVxuICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5Qcm9tb0NvZGVGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFByb21vQ29kZUZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgU2VhcmNoSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCBJbnB1dEJhc2UgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBTZWFyY2hDb250YWluZXIgPSBzdHlsZWQoXCJkaXZcIikoKCkgPT4gKHtcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgbWFyZ2luUmlnaHQ6IFwiMFwiLFxuICBtYXJnaW5MZWZ0OiBcIjBcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxuICBkaXNwbGF5OiBcImJsb2NrXCJcbn0pKTtcbmNvbnN0IFNlYXJjaEljb25XcmFwcGVyID0gc3R5bGVkKFwiZGl2XCIpKCgpID0+ICh7XG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIlxufSkpO1xuY29uc3QgU3R5bGVkSW5wdXRCYXNlID0gc3R5bGVkKElucHV0QmFzZSkoKCkgPT4gKHtcbiAgY29sb3I6IFwiaW5oZXJpdFwiLFxuICBib3JkZXJCb3R0b206IFwiMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC40MilcIixcbiAgcGFkZGluZ0xlZnQ6IFwiMjVweFwiLFxuICBwYWRkaW5nUmlnaHQ6IFwiMjVweFwiLFxuICBmb250U2l6ZTogXCIxZW1cIlxufSkpO1xuY29uc3QgQ2xvc2VJY29uV3JhcHBlciA9IHN0eWxlZChDbG9zZUljb24pKCgpID0+ICh7XG4gIHBhZGRpbmc6IFwiMnB4XCIsXG4gIGZvbnRTaXplOiBcIjEuNWVtXCIsXG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIHRvcDogXCIwXCIsXG4gIHJpZ2h0OiBcIjBcIixcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiLFxuICBjdXJzb3I6IFwicG9pbnRlclwiLFxuICB6SW5kZXg6IFwiMTAwMFwiXG59KSk7XG5cbmNvbnN0IFNlYXJjaCA9ICh7IG9uU2VhcmNoIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd0Nsb3NlLCBzZXRTaG93Q2xvc2VdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2VhcmNoVmFsdWUsIHNldFNlYXJjaFZhbHVlXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBvbktleURvd24gPSAoZXZlbnQpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBrZXksXG4gICAgICBuYXRpdmVFdmVudDoge1xuICAgICAgICB0YXJnZXQ6IHsgdmFsdWUgfVxuICAgICAgfVxuICAgIH0gPSBldmVudDtcbiAgICBpZiAoa2V5ID09PSBcIkVudGVyXCIpIHtcbiAgICAgIG9uU2VhcmNoKHtcbiAgICAgICAgW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXTogdmFsdWVcbiAgICAgIH0pO1xuICAgICAgc2V0U2hvd0Nsb3NlKHRydWUpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgcmVzZXRTZWFyY2ggPSAoKSA9PiB7XG4gICAgc2V0U2VhcmNoVmFsdWUoXCJcIik7XG4gICAgb25TZWFyY2goe1xuICAgICAgW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXTogXCJcIlxuICAgIH0pO1xuICAgIHNldFNob3dDbG9zZSh0cnVlKTtcbiAgICBzZXRTaG93Q2xvc2UoZmFsc2UpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8U2VhcmNoQ29udGFpbmVyPlxuICAgICAgICB7c2hvd0Nsb3NlICYmIChcbiAgICAgICAgICA8Q2xvc2VJY29uV3JhcHBlciBvbkNsaWNrPXtyZXNldFNlYXJjaH0+XG4gICAgICAgICAgICA8Q2xvc2VJY29uIC8+XG4gICAgICAgICAgPC9DbG9zZUljb25XcmFwcGVyPlxuICAgICAgICApfVxuICAgICAgICA8U2VhcmNoSWNvbldyYXBwZXI+XG4gICAgICAgICAgPFNlYXJjaEljb24gLz5cbiAgICAgICAgPC9TZWFyY2hJY29uV3JhcHBlcj5cbiAgICAgICAgPFN0eWxlZElucHV0QmFzZVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KFwib3JkZXJfc2VhcmNoLm9yZGVyX251bWJlclwiKX1cbiAgICAgICAgICBpbnB1dFByb3BzPXt7IFwiYXJpYS1sYWJlbFwiOiBcInNlYXJjaFwiIH19XG4gICAgICAgICAgdmFsdWU9e3NlYXJjaFZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0U2VhcmNoVmFsdWUoZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgIG9uS2V5RG93bj17b25LZXlEb3dufVxuICAgICAgICAvPlxuICAgICAgPC9TZWFyY2hDb250YWluZXI+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5TZWFyY2gucHJvcFR5cGVzID0ge1xuICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNlYXJjaDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIFBhcGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBJbXBvcnRFeHBvcnRJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBTb3J0ID0gKHsgb25Tb3J0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd1NvcnQsIHNldFNob3dTb3J0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3Qgc29ydFJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlU29ydENsaWNrT3V0c2lkZSA9IChldmVudCkgPT4ge1xuICAgIGlmIChzb3J0UmVmLmN1cnJlbnQgJiYgIXNvcnRSZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICBzZXRTaG93U29ydChmYWxzZSk7XG4gICAgfVxuICB9O1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgfTtcbiAgfSwgW3Nob3dTb3J0XSk7XG5cbiAgY29uc3QgdG9nZ2xlID0gKCkgPT4ge1xuICAgIHNldFNob3dTb3J0KCFzaG93U29ydCk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5zb3J0Q29udGFpbmVyfSBvbkNsaWNrPXt0b2dnbGV9PlxuICAgICAgPFN0YWNrXG4gICAgICAgIHJlZj17c29ydFJlZn1cbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgPlxuICAgICAgICA8SW1wb3J0RXhwb3J0SWNvbiBmb250U2l6ZT1cImxhcmdlXCIgY2xhc3NOYW1lPXtzdHlsZXMuc29ydEljb259IC8+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnNvcnRMYWJlbH0+e3QoXCJzb3J0LnNvcnRcIil9PC9zcGFuPlxuICAgICAgPC9TdGFjaz5cbiAgICAgIHtzaG93U29ydCAmJiAoXG4gICAgICAgIDxQYXBlclxuICAgICAgICAgIGVsZXZhdGlvbj17OH1cbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5zb3J0TGlzdENvbnRhaW5lcn0gJHtzdHlsZXMuY29udGFpbmVyfWB9XG4gICAgICAgID5cbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBkaXNhYmxlUmlwcGxlXG4gICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uU29ydCh7IGRpcmVjdGlvbjogXCJkZXNjXCIsIG5hbWU6IFwiY3JlYXRlZFwiIH0pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwic29ydC5uZXdfZmlyc3RcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgZGlzYWJsZVJpcHBsZVxuICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblNvcnQoeyBkaXJlY3Rpb246IFwiYXNjXCIsIG5hbWU6IFwiY3JlYXRlZFwiIH0pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwic29ydC5vbGRfZmlyc3RcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvUGFwZXI+XG4gICAgICApfVxuICAgIDwvQm94PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU29ydDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFJhZGlvR3JvdXAsXG4gIFJhZGlvXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBTdGF0dXNGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVM6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzKTtcblxuICBjb25zdCBhc3NpZ25lZFZhbHVlcyA9IFtcbiAgICB7IHZhbHVlOiBcIkluY29tcGxldGVcIiwgbGFiZWw6IFwiSW5jb21wbGV0ZVwiIH0sXG4gICAgeyB2YWx1ZTogXCJDb21wbGV0ZVwiLCBsYWJlbDogXCJDb21wbGV0ZVwiIH1cbiAgXTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAoZXYsIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVyID0gdmFsdWU7XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXTogbmV3RmlsdGVyXG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJTdGF0dXNcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFJhZGlvR3JvdXAgdmFsdWU9e2ZpbHRlclZhbHVlc30gb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX0+XG4gICAgICAgICAgICB7YXNzaWduZWRWYWx1ZXMubWFwKChhc3NpZ25lZCkgPT4gKFxuICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgc3g9e3sgcHk6IDEgfX1cbiAgICAgICAgICAgICAgICBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2Fzc2lnbmVkLmxhYmVsfX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICA8UmFkaW9cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXNzaWduZWQudmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjogeyBjb2xvcjogXCIjMjE5NkYzXCIgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17YXNzaWduZWQubGFiZWx9XG4gICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuU3RhdHVzRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBTdGF0dXNGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDaGVja2JveCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9USUNLRVRfVFlQRSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFRpY2tldFR5cGVGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQ6IHsgdGlja2V0X3R5cGVzIH0sXG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfVElDS0VUX1RZUEU6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzLmxlbmd0aCk7XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVycyA9IGZpbHRlclZhbHVlcz8uaW5jbHVkZXModmFsdWUpXG4gICAgICA/IGZpbHRlclZhbHVlcy5maWx0ZXIoKGYpID0+IGYgIT09IHZhbHVlKVxuICAgICAgOiBbLi4uZmlsdGVyVmFsdWVzLCB2YWx1ZV07XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfVElDS0VUX1RZUEVdOiBuZXdGaWx0ZXJzXG4gICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRJc0V4cGFuZGVkKCEhZmlsdGVyVmFsdWVzLmxlbmd0aCk7XG4gIH0sIFtmaWx0ZXJWYWx1ZXNdKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIlRpY2tldCBUeXBlXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0aWNrZXRfdHlwZXMubWFwKChiZikgPT4gKFxuICAgICAgICAgICAgPEJveCBzeD17eyBweTogMSB9fSBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2JmLm5hbWV9fWB9PlxuICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiBoYW5kbGVGaWx0ZXJDaGFuZ2UoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtmaWx0ZXJWYWx1ZXMuaW5jbHVkZXMoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcIiMyMTk2RjNcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtiZi5uYW1lfVxuICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5UaWNrZXRUeXBlRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRUeXBlRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgR3JpZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRmlsdGVyIGZyb20gXCIuL0ZpbHRlclwiO1xuaW1wb3J0IFNvcnQgZnJvbSBcIi4vU29ydFwiO1xuaW1wb3J0IFNlYXJjaCBmcm9tIFwiLi9TZWFyY2hcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgRmlsdGVycyA9ICh7IG9uRmlsdGVyLCBvblNvcnQsIG9uU2VhcmNoLCBvblJlc2V0IH0pID0+IChcbiAgPEdyaWQgY29udGFpbmVyIGp1c3RpZnk9XCJmbGV4LWVuZFwiIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICA8R3JpZFxuICAgICAgaXRlbVxuICAgICAgeHM9ezZ9XG4gICAgICBjb250YWluZXJcbiAgICAgIHBhZGRpbmc9ezF9XG4gICAgICBnYXA9ezJ9XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJTb3J0Q29udGFpbmVyfVxuICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgPlxuICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgPEZpbHRlciBvbkZpbHRlcj17b25GaWx0ZXJ9IG9uUmVzZXQ9e29uUmVzZXR9IC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBpdGVtPlxuICAgICAgICA8U29ydCBvblNvcnQ9e29uU29ydH0gLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0dyaWQ+XG4gICAgPEdyaWQgaXRlbSB4cz17Nn0gY29udGFpbmVyIGp1c3RpZnlDb250ZW50PVwiZmxleC1lbmRcIj5cbiAgICAgIDxTZWFyY2ggb25TZWFyY2g9e29uU2VhcmNofSAvPlxuICAgIDwvR3JpZD5cbiAgPC9HcmlkPlxuKTtcblxuRmlsdGVycy5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Tb3J0OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlc2V0OiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRmlsdGVycztcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBGb3JtRm9vdGVyID0gKHsgc2F2ZUxhYmVsLCBjYW5jZWxMYWJlbCwgb25DbG9zZSwgZGlzYWJsZWQgfSkgPT4gKFxuICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmZvb3Rlcn0+XG4gICAgPEJ1dHRvblxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FuY2VsQnRufVxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICA+XG4gICAgICB7Y2FuY2VsTGFiZWx9XG4gICAgPC9CdXR0b24+XG4gICAgPEJ1dHRvblxuICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5zYXZlQnRufVxuICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICA+XG4gICAgICB7c2F2ZUxhYmVsfVxuICAgIDwvQnV0dG9uPlxuICA8L0JveD5cbik7XG5cbkZvcm1Gb290ZXIucHJvcFR5cGVzID0ge1xuICBzYXZlTGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNhbmNlbExhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGb3JtRm9vdGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IEVycm9ySWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBFcnJvckxhYmVsKHsgbWVzc2FnZSwgY29sb3IsIGNsYXNzTmFtZXMsIGRhdGFUZXN0SWQgfSkge1xuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5lcnJvckxhYmVsfSAke2NsYXNzTmFtZXMgJiYgY2xhc3NOYW1lc31gfVxuICAgICAgc3R5bGU9e3sgY29sb3IgfX1cbiAgICAgIGRhdGEtdGVzdGlkPXtkYXRhVGVzdElkfVxuICAgID5cbiAgICAgIDxFcnJvckljb24gc3g9e3sgY29sb3IgfX0gLz5cbiAgICAgIHttZXNzYWdlfVxuICAgIDwvc3Bhbj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRXJyb3JMYWJlbDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJhY2tkcm9wLCBDaXJjdWxhclByb2dyZXNzIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcblxuY29uc3QgTG9hZGVyID0gKHsgb3BlbiB9KSA9PiAoXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gIDxCYWNrZHJvcCBvcGVuPXtvcGVufSBzeD17KHRoZW1lKSA9PiAoeyB6SW5kZXg6IHRoZW1lLnpJbmRleC5kcmF3ZXIgKyAxIH0pfT5cbiAgICA8Q2lyY3VsYXJQcm9ncmVzcyBjb2xvcj1cImluaGVyaXRcIiAvPlxuICA8L0JhY2tkcm9wPlxuKTtcblxuTG9hZGVyLnByb3BUeXBlcyA9IHtcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IExvYWRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFNlYXJjaEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCI7XG5pbXBvcnQgQ2xvc2VJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCI7XG5pbXBvcnQgSW5maW5pdGVTY3JvbGwgZnJvbSBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIjtcbmltcG9ydCBPcmRlcnNMaXN0IGZyb20gXCIuLi9PcmRlcnNMaXN0XCI7XG5pbXBvcnQgeyBnZXRUaWNrZXRzQnlPcmRlciwgZ2V0VXNlck9yZGVycyB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBPTkVfUEFHRV9ORVhULCBGSVJTVF9QQUdFIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgaGFzTW9yZTJGZXRjaCwgc2hvdWxkRmV0Y2hEYXRhIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgTXlPcmRlcnNUaWNrZXRzID0gKCkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3Qge1xuICAgIHN1bW1pdCxcbiAgICBtZW1iZXJPcmRlcnMsXG4gICAgb3JkZXJzX2N1cnJlbnRfcGFnZSxcbiAgICBvcmRlcnNfbGFzdF9wYWdlLFxuICAgIG9yZGVyc19wZXJfcGFnZSxcbiAgICB0aWNrZXRfcGVyX3BhZ2UsXG4gICAgZmlsdGVyLFxuICAgIHNvcnRcbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgZmV0Y2hEYXRhID0gYXN5bmMgKHBhZ2UpID0+IHtcbiAgICBpZiAoc2hvdWxkRmV0Y2hEYXRhKHBhZ2UsIG9yZGVyc19jdXJyZW50X3BhZ2UsIG9yZGVyc19sYXN0X3BhZ2UpKVxuICAgICAgZGlzcGF0Y2goXG4gICAgICAgIGdldFVzZXJPcmRlcnMoe1xuICAgICAgICAgIHBhZ2UsXG4gICAgICAgICAgcGVyUGFnZTogb3JkZXJzX3Blcl9wYWdlLFxuICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICBzb3J0XG4gICAgICAgIH0pXG4gICAgICApLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgICBkYXRhLmZvckVhY2goKG9yZGVyKSA9PiB7XG4gICAgICAgICAgZGlzcGF0Y2goXG4gICAgICAgICAgICBnZXRUaWNrZXRzQnlPcmRlcih7XG4gICAgICAgICAgICAgIG9yZGVySWQ6IG9yZGVyLmlkLFxuICAgICAgICAgICAgICBjdXJyZW50X3BhZ2U6IEZJUlNUX1BBR0UsXG4gICAgICAgICAgICAgIHBlclBhZ2U6IHRpY2tldF9wZXJfcGFnZSxcbiAgICAgICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgICAgICBzb3J0XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmZXRjaERhdGEoRklSU1RfUEFHRSk7XG4gIH0sIFtmaWx0ZXIsIHNvcnRdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGlkPVwiaW5maW5pdGVXcmFwcGVyXCJcbiAgICAgIHN0eWxlPXt7IGhlaWdodDogNTAwLCBvdmVyZmxvdzogXCJhdXRvXCIsIG1hcmdpbjogXCIxNXB4IDBcIiB9fVxuICAgID5cbiAgICAgIHtcIiBcIn1cbiAgICAgIHttZW1iZXJPcmRlcnM/Lmxlbmd0aCA/IChcbiAgICAgICAgPEluZmluaXRlU2Nyb2xsXG4gICAgICAgICAgZGF0YUxlbmd0aD17bWVtYmVyT3JkZXJzPy5sZW5ndGh9XG4gICAgICAgICAgbmV4dD17KCkgPT4gZmV0Y2hEYXRhKG9yZGVyc19jdXJyZW50X3BhZ2UgKyBPTkVfUEFHRV9ORVhUKX1cbiAgICAgICAgICBoYXNNb3JlPXtoYXNNb3JlMkZldGNoKG9yZGVyc19jdXJyZW50X3BhZ2UsIG9yZGVyc19sYXN0X3BhZ2UpfVxuICAgICAgICAgIHNjcm9sbFRocmVzaG9sZD17MX1cbiAgICAgICAgICBzY3JvbGxhYmxlVGFyZ2V0PVwiaW5maW5pdGVXcmFwcGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIHttZW1iZXJPcmRlcnM/Lm1hcCgob3JkZXIpID0+IChcbiAgICAgICAgICAgIDxPcmRlcnNMaXN0XG4gICAgICAgICAgICAgIGtleT17b3JkZXIubnVtYmVyICsgb3JkZXIuaWR9XG4gICAgICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0luZmluaXRlU2Nyb2xsPlxuICAgICAgKSA6IChcbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5ub09yZGVyc0ZvdW5kfT5cbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm5vT3JkZXJzSWNvbldyYXBwZXJ9PlxuICAgICAgICAgICAgPFNlYXJjaEljb24gc3g9e3sgZm9udFNpemU6IDQ0LCBjb2xvcjogXCIjMDAwMDAwOEZcIiB9fSAvPlxuICAgICAgICAgICAgPENsb3NlSWNvblxuICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxOCxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgICAgICBjb2xvcjogXCIjMDAwMDAwOEZcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICB7dChcIm9yZGVycy5ub19vcmRlcnNcIil9XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE15T3JkZXJzVGlja2V0cztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRGl2aWRlciBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCI7XG5pbXBvcnQgeyBjYWxjdWxhdGVPcmRlclRvdGFscywgZm9ybWF0Q3VycmVuY3kgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJTdW1tYXJ5VGFibGUgPSAoeyBvcmRlciwgc3VtbWl0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGRpc2NvdW50VG90YWwsIHJlZnVuZFRvdGFsLCB0YXhlc1RvdGFsLCBhbW91bnRUb3RhbCwgdGlja2V0U3VtbWFyeSB9ID1cbiAgICBjYWxjdWxhdGVPcmRlclRvdGFscyh7IG9yZGVyLCBzdW1taXQgfSk7XG4gIGNvbnN0IGh1bmRyZWQgPSAxMDA7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVRhYmxlfT5cbiAgICAgIHt0aWNrZXRTdW1tYXJ5Py5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7dGlja2V0U3VtbWFyeS5tYXAoKHRpY2tldCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGlja2V0VG90YWwgPVxuICAgICAgICAgICAgICAodGlja2V0LnF0eSAqICh0aWNrZXQudGlja2V0X3R5cGUuY29zdCAqIGh1bmRyZWQpKSAvIGh1bmRyZWQ7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICAgICAga2V5PXtgdGl4b3JkZXJfJHt0aWNrZXQudGlja2V0X3R5cGUuY3JlYXRlZH1gfVxuICAgICAgICAgICAgICAgIHN4PXt7IHBiOiAxIH19XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1zdW1tYXJ5LWl0ZW1pemVkXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgIHh7dGlja2V0LnF0eX0ge3RpY2tldC50aWNrZXRfdHlwZS5uYW1lfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3kodGlja2V0VG90YWwsIHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH0pfVxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgICAge29yZGVyLmRpc2NvdW50X2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkuZGlzY291bnRzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAte2Rpc2NvdW50VG90YWx9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAge29yZGVyLnRheGVzX2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkudGF4ZXNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHt0YXhlc1RvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci5zdGF0dXMgPT09IFwiUGFpZFwiICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmFtb3VudF9wYWlkXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAte2Ftb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtyZWZ1bmRUb3RhbCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kc1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAge3JlZnVuZFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxEaXZpZGVyIC8+XG4gICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcHQ6IDEsIHBiOiAxIH19PlxuICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkudG90YWxcIil9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgIHtvcmRlci5zdGF0dXMgPT09IFwiUGFpZFwiID8gXCIkMC4wMFwiIDogYW1vdW50VG90YWx9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbk9yZGVyU3VtbWFyeVRhYmxlLnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgY3VycmVuY3k6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGlzY291bnRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRheGVzX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5VGFibGU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyB0aWNrZXRzUmVmdW5kYWJsZSB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWZ1bmRFbWFpbFN1cHBvcnQgPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldHMsXG4gIHN1Ym1pdFJlcXVlc3QsXG4gIG9uUmVmdW5kQ2xpY2ssXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2ssXG4gIG9uRW1haWxTdXBwb3J0Q2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcbiAgY29uc3QgaXNJblJlZnVuZGFibGVQZXJpb2QgPVxuICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fYWxsb3dlZF9yZWZ1bmRfcmVxdWVzdF90aWxsX2RhdGUgPiBub3c7XG4gIGNvbnN0IGF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0ID0gdGlja2V0c1JlZnVuZGFibGUodGlja2V0cyk7XG4gIGNvbnN0IGlzUmVmdW5kYWJsZSA9ICEhKGlzSW5SZWZ1bmRhYmxlUGVyaW9kICYmIGF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0KTtcbiAgY29uc3QgaGFzUmVmdW5kUmVxdWVzdHMgPSB0aWNrZXRzPy5zb21lKCh0KSA9PiB0LnJlZnVuZF9yZXF1ZXN0cy5sZW5ndGggPiAwKTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2lzUmVmdW5kYWJsZSAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIHJlcXVlc3QgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259IFxuICAgICAgICAgICR7c3VibWl0UmVxdWVzdCA/IHN0eWxlcy5yZWZ1bmREaXNhYmxlZCA6IFwiXCJ9YH1cbiAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgb25DbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBkaXNhYmxlZD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZXF1ZXN0X3JlZnVuZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgICAge2hhc1JlZnVuZFJlcXVlc3RzICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgZGV0YWlscyBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgb25DbGljaz17b25SZWZ1bmREZXRhaWxDbGlja31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRfZGV0YWlsc1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgICAgPEJ1dHRvblxuICAgICAgICBhcmlhLWxhYmVsPVwiZW1haWwgc3VwcG9ydCBidXR0b25cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICBvbkNsaWNrPXtvbkVtYWlsU3VwcG9ydENsaWNrfVxuICAgICAgPlxuICAgICAgICB7dChcIm9yZGVyX2luZm8uZW1haWxfc3VwcG9ydFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvPlxuICApO1xufTtcblxuUmVmdW5kRW1haWxTdXBwb3J0LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvblJlZnVuZENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZWZ1bmREZXRhaWxDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRW1haWxTdXBwb3J0Q2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBzdWJtaXRSZXF1ZXN0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kRW1haWxTdXBwb3J0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBPcmRlclN1bW1hcnlUYWJsZSBmcm9tIFwiLi9PcmRlclN1bW1hcnlUYWJsZVwiO1xuaW1wb3J0IFJlZnVuZEVtYWlsU3VwcG9ydCBmcm9tIFwiLi9SZWZ1bmRFbWFpbFN1cHBvcnRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJTdW1tYXJ5ID0gKHtcbiAgb3JkZXIsXG4gIHN1bW1pdCxcbiAgb25SZWZ1bmRDbGljayxcbiAgc3VibWl0UmVxdWVzdCxcbiAgb25SZWZ1bmREZXRhaWxDbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5V3JhcHBlcn1cbiAgICAgICAgc3g9e3sgcHQ6IDQsIHB4OiA0IH19XG4gICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICA8aDM+e3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX3N1bW1hcnlcIil9PC9oMz5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICB4cz17MTJ9XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvfVxuICAgICAgICAgICAgc3g9e3sgcGI6IDMgfX1cbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8T3JkZXJTdW1tYXJ5VGFibGUgb3JkZXI9e29yZGVyfSBzdW1taXQ9e3N1bW1pdH0gLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCB4cz17MTJ9IHN4PXt7IHBiOiAzIH19PlxuICAgICAgICA8UmVmdW5kRW1haWxTdXBwb3J0XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHN9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9e29uUmVmdW5kRGV0YWlsQ2xpY2t9XG4gICAgICAgICAgb25FbWFpbFN1cHBvcnRDbGljaz17KCkgPT4ge319XG4gICAgICAgIC8+XG4gICAgICA8L0JveD5cbiAgICA8Lz5cbiAgKTtcbn07XG5PcmRlclN1bW1hcnkucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lbWJlclRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSksXG4gIG9uUmVmdW5kQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBzdWJtaXRSZXF1ZXN0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBJbmZpbml0ZVNjcm9sbCBmcm9tIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTZWFyY2hJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IHsgZ2V0VXNlclRpY2tldHMgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4vT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IHtcbiAgT05FX1BBR0VfTkVYVCxcbiAgREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgRklSU1RfUEFHRVxufSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBoYXNNb3JlMkZldGNoLCBzaG91bGRGZXRjaERhdGEgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcblxuY29uc3QgQXNzaWduVG9NZSA9ICgpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7XG4gICAgc3VtbWl0LFxuICAgIHVzZXJUaWNrZXRzLFxuICAgIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UsXG4gICAgdXNlcl90aWNrZXRzX2xhc3RfcGFnZSxcbiAgICBmaWx0ZXIsXG4gICAgc29ydFxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIGNvbnN0IGZldGNoRGF0YSA9IGFzeW5jIChwYWdlKSA9PiB7XG4gICAgaWYgKFxuICAgICAgc2hvdWxkRmV0Y2hEYXRhKHBhZ2UsIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UsIHVzZXJfdGlja2V0c19sYXN0X3BhZ2UpXG4gICAgKVxuICAgICAgZGlzcGF0Y2goXG4gICAgICAgIGdldFVzZXJUaWNrZXRzKHsgcGFnZSwgcGVyUGFnZTogREVGQVVMVF9JVEVNU19QRVJfUEFHRSwgZmlsdGVyLCBzb3J0IH0pXG4gICAgICApO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZmV0Y2hEYXRhKEZJUlNUX1BBR0UpO1xuICB9LCBbZmlsdGVyLCBzb3J0XSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0Q29udGFpbmVyfT5cbiAgICAgIDxkaXZcbiAgICAgICAgaWQ9XCJhc3NpZ25lZFRvTWVXcmFwcGVyXCJcbiAgICAgICAgc3R5bGU9e3sgaGVpZ2h0OiA1MDAsIG92ZXJmbG93OiBcImF1dG9cIiwgbWFyZ2luOiBcIjE1cHggMFwiIH19XG4gICAgICA+XG4gICAgICAgIHt1c2VyVGlja2V0cz8ubGVuZ3RoID8gKFxuICAgICAgICAgIDxJbmZpbml0ZVNjcm9sbFxuICAgICAgICAgICAgZGF0YUxlbmd0aD17dXNlclRpY2tldHM/Lmxlbmd0aH1cbiAgICAgICAgICAgIG5leHQ9eygpID0+IGZldGNoRGF0YSh1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlICsgT05FX1BBR0VfTkVYVCl9XG4gICAgICAgICAgICBoYXNNb3JlPXtoYXNNb3JlMkZldGNoKFxuICAgICAgICAgICAgICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlLFxuICAgICAgICAgICAgICB1c2VyX3RpY2tldHNfbGFzdF9wYWdlXG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgc2Nyb2xsVGhyZXNob2xkPXsxfVxuICAgICAgICAgICAgc2Nyb2xsYWJsZVRhcmdldD1cImFzc2lnbmVkVG9NZVdyYXBwZXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn0+XG4gICAgICAgICAgICAgIHt1c2VyVGlja2V0cy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgICAgICAgIDxPcmRlckxpc3RUaWNrZXRzXG4gICAgICAgICAgICAgICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgICBpc1JlZnVuZGluZz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9e1tdfVxuICAgICAgICAgICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L0luZmluaXRlU2Nyb2xsPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubm9UaWNrZXRzRm91bmR9PlxuICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5ub09yZGVyc0ljb25XcmFwcGVyfT5cbiAgICAgICAgICAgICAgPFNlYXJjaEljb24gc3g9e3sgZm9udFNpemU6IDQ0LCBjb2xvcjogXCIjMDAwMDAwOEZcIiB9fSAvPlxuICAgICAgICAgICAgICA8Q2xvc2VJY29uXG4gICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxOCxcbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiBcIiMwMDAwMDA4RlwiXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRzLm5vX3RpY2tldHNcIil9XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnblRvTWU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIEdyaWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBBdHRlbmRlZVN0YXR1cyA9ICh7IHRpY2tldCwgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICByZXR1cm4gdGlja2V0Lm93bmVyPy5lbWFpbCA/IChcbiAgICA8R3JpZCBjb250YWluZXI+XG4gICAgICA8R3JpZCBpdGVtPlxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuYXNzaWduZWRfdG9cIil9OiA8YnIgLz5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0T3duZXJFbWFpbH1cbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiYXR0ZW5kZWUtc3RhdHVzLWFzc2lnbmVkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7XCIgXCJ9XG4gICAgICAgICAgICB7dGlja2V0Lm93bmVyPy5lbWFpbH1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvQm94PlxuICAgICAgPC9HcmlkPlxuICAgICAge2lzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCAmJiAoXG4gICAgICAgIDxHcmlkIGl0ZW0gY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduZWRCeVRleHR9PlxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbmVkX2J5XCIpfTogPGJyIC8+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAge3RpY2tldC5vcmRlcj8ub3duZXJfZmlyc3RfbmFtZX0ge3RpY2tldC5vcmRlcj8ub3duZXJfbGFzdF9uYW1lfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgIDwvR3JpZD5cbiAgKSA6IChcbiAgICB0aWNrZXQuaXNfYWN0aXZlICYmIChcbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE93bmVyRW1haWx9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwiYXR0ZW5kZWUtc3RhdHVzLXVuYXNzaWduZWRcIlxuICAgICAgPlxuICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuYXR0ZW5kZWVfc3RhdHVzX3VuYXNzaWduZWRcIil9XG4gICAgICA8L3NwYW4+XG4gICAgKVxuICApO1xufTtcblxuQXR0ZW5kZWVTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIGlzX2FjdGl2ZTogUHJvcFR5cGVzLmJvb2xcbiAgfSksXG4gIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEF0dGVuZGVlU3RhdHVzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4vT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IHsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlckxpc3RJdGVtID0gKHtcbiAgc3VtbWl0LFxuICBvcmRlcixcbiAgb25QYWdpbmF0ZUNsaWNrLFxuICB0aWNrZXRzVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW2l0ZW1zVG9EaXNwbGF5LCBzZXRJdGVtc1RvRGlzcGxheV0gPSB1c2VTdGF0ZShcbiAgICBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlRcbiAgKTtcblxuICBpZiAoIW9yZGVyPy5tZW1iZXJUaWNrZXRzPy5sZW5ndGgpIHJldHVybiBudWxsO1xuICBjb25zdCBzbGljZWRUaWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHM/LnNsaWNlKDAsIGl0ZW1zVG9EaXNwbGF5KTtcblxuICBjb25zdCBvblZpZXdNb3JlID0gKCkgPT4ge1xuICAgIGlmIChvcmRlcj8udGlja2V0c190b3RhbCA+IG9yZGVyPy5tZW1iZXJUaWNrZXRzLmxlbmd0aCkge1xuICAgICAgb25QYWdpbmF0ZUNsaWNrKCk7XG4gICAgfVxuICAgIHNldEl0ZW1zVG9EaXNwbGF5KGl0ZW1zVG9EaXNwbGF5ICsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcbiAgfTtcblxuICBjb25zdCBvblZpZXdMZXNzID0gKCkgPT4gc2V0SXRlbXNUb0Rpc3BsYXkoUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7c2xpY2VkVGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgPE9yZGVyTGlzdFRpY2tldHNcbiAgICAgICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBpc1JlZnVuZGluZz17ZmFsc2V9XG4gICAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kPXshIXRpY2tldHNUb1JlZnVuZC5maW5kKCh0KSA9PiB0LmlkID09PSB0aWNrZXQuaWQpfVxuICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgLz5cbiAgICAgICkpfVxuICAgICAge29yZGVyPy50aWNrZXRzX3RvdGFsID4gaXRlbXNUb0Rpc3BsYXkgPyAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwidmlldyBtb3JlIGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudmlld01vcmVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17b25WaWV3TW9yZX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJzLXRpY2tldHMudmlld19tb3JlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICkgOiAoXG4gICAgICAgIFwiXCJcbiAgICAgICl9XG4gICAgICB7c2xpY2VkVGlja2V0cz8ubGVuZ3RoID4gUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UICYmXG4gICAgICBzbGljZWRUaWNrZXRzPy5sZW5ndGggPT09IG9yZGVyPy50aWNrZXRzX3RvdGFsID8gKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInZpZXcgbGVzcyBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdNb3JlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e29uVmlld0xlc3N9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVycy10aWNrZXRzLnZpZXdfbGVzc1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJMaXN0SXRlbS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdEl0ZW07XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBDaGVja2JveCBmcm9tIFwiQG11aS9tYXRlcmlhbC9DaGVja2JveFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBUaWNrZXRTdGF0dXMgZnJvbSBcIi4uL1RpY2tldFN0YXR1c1wiO1xuaW1wb3J0IHsgZ2V0U3VtbWl0UmVhc3NpZ25EYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N1bW1pdFV0aWxzXCI7XG5pbXBvcnQgeyB1c2VOb3cgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCBBdHRlbmRlZVN0YXR1cyBmcm9tIFwiLi9BdHRlbmRlZVN0YXR1c1wiO1xuaW1wb3J0IFRpY2tldERldGFpbCBmcm9tIFwiLi4vVGlja2V0RGV0YWlsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCBUaWNrZXRSZWFzc2lnbiBmcm9tIFwiLi4vVGlja2V0UmVhc3NpZ25cIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcbmltcG9ydCBUaWNrZXRBc3NpZ24gZnJvbSBcIi4uL1RpY2tldEFzc2lnblwiO1xuaW1wb3J0IHsgcmVzZXRUaWNrZXQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBtb2RhbFZpZXdzID0ge1xuICBkZXRhaWw6IFwiREVUQUlMXCIsXG4gIHJlYXNzaWduOiBcIlJFQVNTSUdOXCIsXG4gIGFzc2lnbjogXCJBU1NJR05cIlxufTtcblxuY29uc3QgVGlja2V0Q1RBcyA9ICh7XG4gIGlzSW5jb21wbGV0ZSxcbiAgaXNVbmFzc2lnbmVkLFxuICBpc1JlYXNzaWduYWJsZSxcbiAgb25PcGVuQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGlmIChpc1VuYXNzaWduZWQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25UaWNrZXRCdXR0b259XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MuYXNzaWduKX1cbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbl90aWNrZXRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U3RhY2tcbiAgICAgIHN4PXt7XG4gICAgICAgIGp1c3RpZnlDb250ZW50OiBcImVuZFwiLFxuICAgICAgICB3aWR0aDogXCIxMDAlXCJcbiAgICAgIH19XG4gICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3RmluaXNoVGlja2V0QnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbk9wZW5DbGljayhtb2RhbFZpZXdzLmRldGFpbCl9XG4gICAgICA+XG4gICAgICAgIHtpc0luY29tcGxldGVcbiAgICAgICAgICA/IHQoXCJ0aWNrZXRfc3RhdHVzLmZpbmlzaF90aWNrZXRcIilcbiAgICAgICAgICA6IHQoXCJ0aWNrZXRfc3RhdHVzLnZpZXdfdGlja2V0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgICB7aXNSZWFzc2lnbmFibGUgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlYXNzaWduIHRpY2tldCBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlYXNzaWduQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MucmVhc3NpZ24pfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnJlYXNzaWduX3RpY2tldFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvU3RhY2s+XG4gICk7XG59O1xuXG5UaWNrZXRDVEFzLnByb3BUeXBlcyA9IHtcbiAgaXNJbmNvbXBsZXRlOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBpc1VuYXNzaWduZWQ6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIGlzUmVhc3NpZ25hYmxlOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBvbk9wZW5DbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuY29uc3QgT3JkZXJMaXN0VGlja2V0cyA9ICh7XG4gIHRpY2tldCxcbiAgc3VtbWl0LFxuICBpc1JlZnVuZGluZyxcbiAgaXNTZWxlY3RlZFRvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZCxcbiAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0XG59KSA9PiB7XG4gIGNvbnN0IF9pc0V4dGVybmFsQXNzaWduZWRUaWNrZXQgPSAhIWlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldDtcblxuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG4gIGNvbnN0IHsgaXNSZWZ1bmRhYmxlLCBpc1VuYXNzaWduZWQsIGlzSW5jb21wbGV0ZSwgY2FuUmVhc3NpZ24gfSA9XG4gICAgdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuICBjb25zdCBbbW9kYWxPcGVuLCBzZXRNb2RhbE9wZW5dID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IHJlYXNzaWduRGF0ZSA9IGdldFN1bW1pdFJlYXNzaWduRGF0ZShzdW1taXQpO1xuICBjb25zdCBpc1JlYXNzaWduYWJsZSA9IHJlYXNzaWduRGF0ZSA+IG5vdztcblxuICBjb25zdCBoYW5kbGVDbG9zZU1vZGFsID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0VGlja2V0KCkpO1xuICAgIHNldE1vZGFsT3BlbihudWxsKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVPcGVuTW9kYWwgPSAodmlldykgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0VGlja2V0KCkpO1xuICAgIHNldE1vZGFsT3Blbih2aWV3KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxHcmlkXG4gICAgICBjb250YWluZXJcbiAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJXcmFwcGVyfSAke1xuICAgICAgICBpc1JlZnVuZGluZyA/IHN0eWxlcy5yZWZ1bmRNb2RhbCA6IFwiXCJcbiAgICAgIH0gJHtpc1JlZnVuZGluZyAmJiAhaXNSZWZ1bmRhYmxlID8gc3R5bGVzLmRpc2FibGVkUmVmdW5kIDogXCJcIn0gJHtcbiAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kID8gc3R5bGVzLnNlbGVjdGVkIDogXCJcIlxuICAgICAgfWB9XG4gICAgPlxuICAgICAge2lzUmVmdW5kaW5nICYmIChcbiAgICAgICAgPEdyaWQgeHM9ezF9IHBhZGRpbmc9ezJ9IGNsYXNzTmFtZT17c3R5bGVzLmNoZWNrYm94fT5cbiAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgdGlja2V0IGNoZWNrYm94XCJcbiAgICAgICAgICAgIHJvbGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBjaGVja2VkPXtpc1NlbGVjdGVkVG9SZWZ1bmR9XG4gICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNlbGVjdFRvUmVmdW5kKGUsIHRpY2tldCl9XG4gICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7XG4gICAgICAgICAgICAgICAgZm9udFNpemU6IDE4XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBkaXNhYmxlZD17IWlzUmVmdW5kYWJsZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAgPEdyaWRcbiAgICAgICAgY29udGFpbmVyXG4gICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItbGlzdC10aWNrZXRcIlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgeHM9e2lzUmVmdW5kaW5nID8gMTEgOiAxMn1cbiAgICAgID5cbiAgICAgICAgPEdyaWRcbiAgICAgICAgICB4cz17OH1cbiAgICAgICAgICBweT17Mn1cbiAgICAgICAgICBwbD17NH1cbiAgICAgICAgICBpdGVtXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0VGlja2V0VHlwZX1cbiAgICAgICAgICBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiXG4gICAgICAgID5cbiAgICAgICAgICA8U3RhY2tcbiAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcImZsZXgtc3RhcnRcIlxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGg0Pnt0aWNrZXQudGlja2V0X3R5cGU/Lm5hbWV9PC9oND5cbiAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIGNsYXNzTmFtZT17c3R5bGVzLmJhZGdlRmVhdHVyZVdyYXBwZXJ9IHhzPXs0fSBweT17Mn0gcHI9ezR9IGl0ZW0+XG4gICAgICAgICAgey8qIFRvIGFkZCBiYWRnZSBmZWF0dXJlcyAqL31cbiAgICAgICAgICB7dGlja2V0LmJhZGdlPy5mZWF0dXJlcy5tYXAoKGJmKSA9PiAoXG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmJhZGdlRmVhdHVyZX1cbiAgICAgICAgICAgICAgc3JjPXtiZi5pbWFnZX1cbiAgICAgICAgICAgICAgYWx0PXtiZi5uYW1lfVxuICAgICAgICAgICAgICBrZXk9e2JmLm5hbWV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIHhzPXsxMn0gc3g9e3sgcHg6IDQsIHBiOiAyIH19IGl0ZW0+XG4gICAgICAgICAgPEF0dGVuZGVlU3RhdHVzXG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldD17X2lzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE5vfT5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy50aWNrZXRfbm9cIil9OntcIiBcIn1cbiAgICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgICB0ZXh0PXt0aWNrZXQubnVtYmVyfVxuICAgICAgICAgICAgICB0b29sdGlwVGV4dD17dChcInRpY2tldF9zdGF0dXMuY29weV90aWNrZXRfbnVtYmVyXCIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICBjb250YWluZXJcbiAgICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgICAgICB4cz17MTJ9XG4gICAgICAgICAgICBsZz17Nn1cbiAgICAgICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICAgICAgaXRlbVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxUaWNrZXRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHB5PXsyfSBwcj17NH0geHM9ezEyfSBsZz17Nn0gY29udGFpbmVyIGl0ZW0+XG4gICAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgICBhbGlnbj1cImNlbnRlclwiXG4gICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiLFxuICAgICAgICAgICAgICAgIG1pbkhlaWdodDogXCIyZW1cIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRBY3Rpb25CdXR0b25zfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dGlja2V0LmlzX2FjdGl2ZSAmJiAhaXNSZWZ1bmRpbmcgJiYgKFxuICAgICAgICAgICAgICAgIDxUaWNrZXRDVEFzXG4gICAgICAgICAgICAgICAgICBpc1VuYXNzaWduZWQ9e2lzVW5hc3NpZ25lZH1cbiAgICAgICAgICAgICAgICAgIGlzSW5jb21wbGV0ZT17aXNJbmNvbXBsZXRlfVxuICAgICAgICAgICAgICAgICAgaXNSZWFzc2lnbmFibGU9e1xuICAgICAgICAgICAgICAgICAgICBpc1JlYXNzaWduYWJsZSAmJiBjYW5SZWFzc2lnbiAmJiAhX2lzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgb25PcGVuQ2xpY2s9e2hhbmRsZU9wZW5Nb2RhbH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8VGlja2V0RGV0YWlsXG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgdGlja2V0SWQ9e3RpY2tldD8uaWR9XG4gICAgICAgICAgb3JkZXJJZD17dGlja2V0Py5vcmRlcl9pZCB8fCB0aWNrZXQ/Lm9yZGVyPy5pZH1cbiAgICAgICAgICBvd25lcklkPXt0aWNrZXQ/Lm93bmVyPy5pZH1cbiAgICAgICAgICBvcGVuPXttb2RhbE9wZW4gPT09IG1vZGFsVmlld3MuZGV0YWlsfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAgIC8+XG4gICAgICAgIHtpc1JlYXNzaWduYWJsZSAmJiBjYW5SZWFzc2lnbiAmJiAhX2lzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxUaWNrZXRSZWFzc2lnblxuICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgdGlja2V0SWQ9e3RpY2tldD8uaWR9XG4gICAgICAgICAgICAgIG9yZGVySWQ9e3RpY2tldD8ub3JkZXJfaWR9XG4gICAgICAgICAgICAgIG93bmVySWQ9e3RpY2tldD8ub3duZXI/LmlkfVxuICAgICAgICAgICAgICBvcGVuPXttb2RhbE9wZW4gPT09IG1vZGFsVmlld3MucmVhc3NpZ259XG4gICAgICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFRpY2tldEFzc2lnblxuICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgdGlja2V0SWQ9e3RpY2tldD8uaWR9XG4gICAgICAgICAgICAgIG9yZGVySWQ9e3RpY2tldD8ub3JkZXJfaWR9XG4gICAgICAgICAgICAgIG93bmVySWQ9e3RpY2tldD8ub3duZXI/LmlkfVxuICAgICAgICAgICAgICBvcGVuPXttb2RhbE9wZW4gPT09IG1vZGFsVmlld3MuYXNzaWdufVxuICAgICAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZU1vZGFsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvR3JpZD5cbiAgICA8L0dyaWQ+XG4gICk7XG59O1xuXG5PcmRlckxpc3RUaWNrZXRzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGlkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIG9yZGVyX2lkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIG51bWJlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB0b3RhbF9yZWZ1bmRlZF9hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgdGlja2V0X3R5cGU6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgaXNfYWN0aXZlOiBQcm9wVHlwZXMuYm9vbFxuICB9KSxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBpc1JlZnVuZGluZzogUHJvcFR5cGVzLmJvb2wsXG4gIGlzU2VsZWN0ZWRUb1JlZnVuZDogUHJvcFR5cGVzLmJvb2wsXG4gIHNlbGVjdFRvUmVmdW5kOiBQcm9wVHlwZXMuZnVuYyxcbiAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJMaXN0VGlja2V0cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBUYWJzIGZyb20gXCJAbXVpL21hdGVyaWFsL1RhYnNcIjtcbmltcG9ydCBUYWIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVGFiXCI7XG5pbXBvcnQgT3JkZXJMaXN0SXRlbSBmcm9tIFwiLi9PcmRlckxpc3RJdGVtXCI7XG5pbXBvcnQgT3JkZXJTdW1tYXJ5IGZyb20gXCIuLi9PcmRlclN1bW1hcnlcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0c01vZGFsIGZyb20gXCIuLi9SZWZ1bmRSZXF1ZXN0c1wiO1xuaW1wb3J0IEVycm9yTGFiZWwgZnJvbSBcIi4uL0xhYmVscy9FcnJvckxhYmVsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgUmVmdW5kRGV0YWlscyBmcm9tIFwiLi4vUmVmdW5kUmVxdWVzdHMvUmVmdW5kRGV0YWlsc1wiO1xuXG5jb25zdCBUYWJQYW5lbCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCB2YWx1ZSwgaW5kZXggfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHJvbGU9XCJ0YWJwYW5lbFwiXG4gICAgICBoaWRkZW49e3ZhbHVlICE9PSBpbmRleH1cbiAgICAgIGlkPXtgdGFicGFuZWwtJHtpbmRleH1gfVxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtgdGFiLSR7aW5kZXh9YH1cbiAgICA+XG4gICAgICB7dmFsdWUgPT09IGluZGV4ICYmIGNoaWxkcmVufVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuY29uc3QgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUgPSAoe1xuICBpc01vYmlsZSxcbiAgc3VtbWl0LFxuICBvcmRlcixcbiAgZGV0YWlsc1JlcXVpcmVkLFxuICBvblBhZ2luYXRlQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKDApO1xuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoXywgbmV3VmFsdWUpID0+IHtcbiAgICBzZXRWYWx1ZShuZXdWYWx1ZSk7XG4gIH07XG4gIGNvbnN0IFt0aWNrZXRzVG9SZWZ1bmQsIHNldFRpY2tldHNUb1JlZnVuZF0gPSB1c2VTdGF0ZShbXSk7XG4gIGNvbnN0IFtzdWJtaXRSZXF1ZXN0LCBzZXRTdWJtaXRSZXF1ZXN0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3JlZnVuZERldGFpbHNPcGVuLCBzZXRSZWZ1bmREZXRhaWxzT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3Qgb25SZWZ1bmRDbGljayA9ICgpID0+IHtcbiAgICBzZXRTdWJtaXRSZXF1ZXN0KHRydWUpO1xuICB9O1xuICBjb25zdCB1bnNlbGVjdFJlZnVuZFRpY2tldHMgPSAodGlja2V0KSA9PiB7XG4gICAgY29uc3QgZmlsdGVyU2VsZWN0ZWQgPSB0aWNrZXRzVG9SZWZ1bmQuZmlsdGVyKCh0KSA9PiB0LmlkICE9PSB0aWNrZXQuaWQpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChmaWx0ZXJTZWxlY3RlZCk7XG4gIH07XG4gIGNvbnN0IHNlbGVjdFRvUmVmdW5kID0gKGUsIHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IHsgY2hlY2tlZCB9ID0gZS50YXJnZXQ7XG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkVGlja2V0ID0gb3JkZXI/Lm1lbWJlclRpY2tldHM/LmZpbmQoXG4gICAgICAgICh0KSA9PiB0LmlkID09PSB0aWNrZXQuaWRcbiAgICAgICk7XG4gICAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoWy4uLnRpY2tldHNUb1JlZnVuZCwgc2VsZWN0ZWRUaWNrZXRdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzKHRpY2tldCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNsb3NlU3VibWl0UmVxdWVzdCA9ICgpID0+IHtcbiAgICBzZXRTdWJtaXRSZXF1ZXN0KGZhbHNlKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoW10pO1xuICB9O1xuXG4gIGNvbnN0IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMgPSAoKSA9PiB7XG4gICAgc2V0U3VibWl0UmVxdWVzdChmYWxzZSk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKFtdKTtcbiAgfTtcblxuICBjb25zdCBtb3JlRGV0YWlscyA9ICgpID0+XG4gICAgZGV0YWlsc1JlcXVpcmVkICYmIChcbiAgICAgIDxFcnJvckxhYmVsXG4gICAgICAgIG1lc3NhZ2U9e3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19kZXRhaWxzX3JlcXVpcmVkXCIpfVxuICAgICAgICBjb2xvcj1cIiNmZjk4MDBcIlxuICAgICAgICBkYXRhVGVzdElkPVwibW9yZS1kZXRhaWxzLWxhYmVsXCJcbiAgICAgIC8+XG4gICAgKTtcblxuICByZXR1cm4gaXNNb2JpbGUgPyAoXG4gICAgPEJveFxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn1cbiAgICAgIGRhdGEtdGVzdGlkPVwibW9iaWxlLW9yZGVycy1saXN0LWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPEJveCBzeD17eyBib3JkZXJDb2xvcjogXCJkaXZpZGVyXCIsIHBiOiAyIH19PlxuICAgICAgICA8VGFic1xuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJUaWNrZXRzICYgU3VtbWFyeVwiXG4gICAgICAgID5cbiAgICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLnRpY2tldHNcIil9IGNsYXNzTmFtZT17c3R5bGVzLnRhYkJ1dHRvbnN9IC8+XG4gICAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy5zdW1tYXJ5XCIpfSBjbGFzc05hbWU9e3N0eWxlcy50YWJCdXR0b25zfSAvPlxuICAgICAgICA8L1RhYnM+XG4gICAgICA8L0JveD5cbiAgICAgIHttb3JlRGV0YWlscygpfVxuICAgICAgPFRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9ezB9PlxuICAgICAgICA8T3JkZXJMaXN0SXRlbVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgLz5cbiAgICAgIDwvVGFiUGFuZWw+XG4gICAgICA8VGFiUGFuZWwgdmFsdWU9e3ZhbHVlfSBpbmRleD17MX0+XG4gICAgICAgIDxPcmRlclN1bW1hcnlcbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAvPlxuICAgICAgPC9UYWJQYW5lbD5cbiAgICA8L0JveD5cbiAgKSA6IChcbiAgICA8PlxuICAgICAgPEdyaWQgaXRlbSBtZD17MTJ9PlxuICAgICAgICB7bW9yZURldGFpbHMoKX1cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkXG4gICAgICAgIHBhZGRpbmc9ezF9XG4gICAgICAgIGl0ZW1cbiAgICAgICAgbWQ9ezd9XG4gICAgICAgIG9yZGVyPXt7IG1kOiAxIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwiZGVza3RvcC1vcmRlcnMtbGlzdC1jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICA8T3JkZXJMaXN0SXRlbVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIHBhZGRpbmc9ezF9IGl0ZW0gbWQ9ezV9IG9yZGVyPXt7IG1kOiAxIH19PlxuICAgICAgICA8T3JkZXJTdW1tYXJ5XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICBvblJlZnVuZERldGFpbENsaWNrPXsoKSA9PiBzZXRSZWZ1bmREZXRhaWxzT3Blbih0cnVlKX1cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxSZWZ1bmRSZXF1ZXN0c01vZGFsXG4gICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzIHx8IFtdfVxuICAgICAgICBvcGVuPXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICBvblJlZnVuZFN1Y2Nlc3NDbG9zZT17KCkgPT4gcmVzZXRBbGxSZWZ1bmRTdGF0dXNlcygpfVxuICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBjbG9zZVN1Ym1pdFJlcXVlc3QoKX1cbiAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAvPlxuICAgICAgPFJlZnVuZERldGFpbHNcbiAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHN9XG4gICAgICAgIG9wZW49e3JlZnVuZERldGFpbHNPcGVufVxuICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBzZXRSZWZ1bmREZXRhaWxzT3BlbihmYWxzZSl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lbWJlclRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSksXG4gIGlzTW9iaWxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgZGV0YWlsc1JlcXVpcmVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25QYWdpbmF0ZUNsaWNrOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGU7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IHVzZU1lZGlhUXVlcnkgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiO1xuaW1wb3J0IHsgZ2V0VGlja2V0c0J5T3JkZXIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgZ2V0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSBmcm9tIFwiLi9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZVwiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlcnNMaXN0ID0gKHsgc3VtbWl0LCBvcmRlciB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7IHRpY2tldF9wZXJfcGFnZSwgZmlsdGVyLCBzb3J0IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LFxuICAgIHNoYWxsb3dFcXVhbFxuICApO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGlzTW9iaWxlID0gdXNlTWVkaWFRdWVyeSh0aGVtZS5icmVha3BvaW50cy5kb3duKFwibGdcIikpO1xuICBjb25zdCBbaXNNb2JpbGVWaWV3YWJsZSwgc2V0TW9iaWxlVmlld2FibGVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBkZXRhaWxzUmVxdWlyZWQgPSBvcmRlci5tZW1iZXJUaWNrZXRzPy5maW5kKFxuICAgICh0aWNrZXQpID0+IHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIlxuICApO1xuXG4gIGNvbnN0IG9uUGFnaW5hdGVDbGljayA9ICgpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRUaWNrZXRzQnlPcmRlcih7XG4gICAgICAgIG9yZGVySWQ6IG9yZGVyLmlkLFxuICAgICAgICBwYWdlOiBvcmRlci50aWNrZXRzX3BhZ2VfY3VycmVudCArIE9ORV9QQUdFX05FWFQsXG4gICAgICAgIHBlclBhZ2U6IHRpY2tldF9wZXJfcGFnZSxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgICBzb3J0XG4gICAgICB9KVxuICAgICk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBzeD17e1xuICAgICAgICAgIHBhZGRpbmc6IHtcbiAgICAgICAgICAgIHhzOiAyLFxuICAgICAgICAgICAgbWQ6IDEsXG4gICAgICAgICAgICBsZzogMFxuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0SW5mb31cbiAgICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLXRpY2tldC1pbmZvLWNvbnRhaW5lclwiXG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVycy5wdXJjaGFzZWRcIil9OiB7Z2V0Rm9ybWF0dGVkRGF0ZShvcmRlci5jcmVhdGVkKX0gfHtcIiBcIn1cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkub3JkZXJfbm9cIil9OntcIiBcIn1cbiAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgIHRleHQ9e29yZGVyLm51bWJlcn1cbiAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwib3JkZXJfc3VtbWFyeS5jb3B5X29yZGVyX251bWJlclwiKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIHtpc01vYmlsZSAmJiAoXG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgc3g9e3sgcGFkZGluZzogMCB9fVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYmxhY2tCdXR0b259XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRNb2JpbGVWaWV3YWJsZSghaXNNb2JpbGVWaWV3YWJsZSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2lzTW9iaWxlVmlld2FibGVcbiAgICAgICAgICAgICAgPyB0KFwidGlja2V0X3N0YXR1cy5oaWRlX3RpY2tldHNcIilcbiAgICAgICAgICAgICAgOiB0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldHNcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cbiAgICAgIDxHcmlkXG4gICAgICAgIGtleT17b3JkZXIuaWR9XG4gICAgICAgIGNvbnRhaW5lclxuICAgICAgICByb3dTcGFjaW5nPXsxfVxuICAgICAgICBjb2x1bW5TcGFjaW5nPXt7IHhzOiAxLCBzbTogMiwgbWQ6IDMgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJUaWNrZXRDb250YWluZXJ9ICR7XG4gICAgICAgICAgaXNNb2JpbGUgJiYgIWlzTW9iaWxlVmlld2FibGUgPyBzdHlsZXMuZGlzcGxheV9ub25lIDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiB7XG4gICAgICAgICAgICBtZDogXCJyb3dcIixcbiAgICAgICAgICAgIGxnOiBcInJvd1wiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICB4czogMixcbiAgICAgICAgICAgIG1kOiA0LFxuICAgICAgICAgICAgbGc6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxPcmRlcnNMaXN0RGVza3RvcE1vYmlsZVxuICAgICAgICAgIGlzTW9iaWxlPXtpc01vYmlsZX1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgZGV0YWlsc1JlcXVpcmVkPXshIWRldGFpbHNSZXF1aXJlZH1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk9yZGVyc0xpc3QucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlcnNMaXN0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdGVkVGlja2V0IGZyb20gXCIuL1JlZnVuZFJlcXVlc3RlZFRpY2tldFwiO1xuaW1wb3J0IHsgZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5jb25zdCBSZWZ1bmREZXRhaWxzID0gKHsgdGlja2V0cywgb3Blbiwgb25DbG9zZVNsaWRlciB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgcmVxdWVzdGVkVGlja2V0cyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyh0aWNrZXRzKSxcbiAgICBbdGlja2V0c11cbiAgKTtcbiAgY29uc3QgY2xvc2VTbGlkZXIgPSAoKSA9PiB7XG4gICAgb25DbG9zZVNsaWRlcigpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxSaWdodERyYXdlclxuICAgICAgaWQ9XCJyZWZ1bmQtZGV0YWlsc1wiXG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgb25DbG9zZT17Y2xvc2VTbGlkZXJ9XG4gICAgICB0aXRsZT17dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kX2RldGFpbHNcIil9XG4gICAgPlxuICAgICAgPEJveFxuICAgICAgICBzeD17eyBkaXNwbGF5OiBcImZsZXhcIiwgZmxleERpcmVjdGlvbjogXCJjb2x1bW5cIiwgYWxpZ25JdGVtczogXCJjZW50ZXJcIiB9fVxuICAgICAgPlxuICAgICAgICB7cmVxdWVzdGVkVGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICA8UmVmdW5kUmVxdWVzdGVkVGlja2V0XG4gICAgICAgICAgICBrZXk9e2ByZWZ1bmRfcmVxXyR7dGlja2V0Py5pZH1gfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICByZWZ1bmREZXRhaWxzXG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0JveD5cbiAgICA8L1JpZ2h0RHJhd2VyPlxuICApO1xufTtcblxuUmVmdW5kRGV0YWlscy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdCksXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlU2xpZGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kRGV0YWlscztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgQXR0ZW5kZWVTdGF0dXMgZnJvbSBcIi4uL09yZGVyc0xpc3QvQXR0ZW5kZWVTdGF0dXNcIjtcbmltcG9ydCBSZWZ1bmRTdGF0dXMgZnJvbSBcIi4vUmVmdW5kU3RhdHVzXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uL0NvcHlUZXh0XCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBUaWNrZXRTdGF0dXMgZnJvbSBcIi4uL1RpY2tldFN0YXR1c1wiO1xuXG5jb25zdCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgPSAoeyB0aWNrZXQsIHJlZnVuZERldGFpbHMgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgR1JJRF82ID0gNjtcbiAgY29uc3QgR1JJRF8xMiA9IDEyO1xuXG4gIHJldHVybiAoXG4gICAgPEdyaWRcbiAgICAgIGNvbnRhaW5lclxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kVGlja2V0Qm94Q29udGFpbmVyfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdGVkLXRpY2tldC1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxHcmlkXG4gICAgICAgIHhzPXtyZWZ1bmREZXRhaWxzID8gR1JJRF82IDogR1JJRF8xMn1cbiAgICAgICAgaXRlbVxuICAgICAgICBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiXG4gICAgICAgIHB0PXsyfVxuICAgICAgICBweD17NH1cbiAgICAgID5cbiAgICAgICAgPFN0YWNrXG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcInNwYWNlLWJldHdlZW5cIixcbiAgICAgICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCJcbiAgICAgICAgICB9fVxuICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgID5cbiAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICAgIDxHcmlkIGNsYXNzTmFtZT17c3R5bGVzLmJhZGdlRmVhdHVyZVdyYXBwZXJ9IHhzPXs0fSBpdGVtPlxuICAgICAgICAgICAge3RpY2tldC5iYWRnZT8uZmVhdHVyZXMubWFwKChiZikgPT4gKFxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlfVxuICAgICAgICAgICAgICAgIHNyYz17YmYuaW1hZ2V9XG4gICAgICAgICAgICAgICAgYWx0PXtiZi5uYW1lfVxuICAgICAgICAgICAgICAgIGtleT17YmYubmFtZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIHtyZWZ1bmREZXRhaWxzICYmIChcbiAgICAgICAgPEdyaWQgeHM9ezZ9IHBhZGRpbmc9ezJ9IGl0ZW0+XG4gICAgICAgICAgPFJlZnVuZFN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxHcmlkIHhzPXsxMn0gaXRlbSBweD17NH0gY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kVGlja2V0QXR0ZW5kZWV9PlxuICAgICAgICA8QXR0ZW5kZWVTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE5vfT5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMudGlja2V0X25vXCIpfTogPENvcHlUZXh0IHRleHQ9e3RpY2tldC5udW1iZXJ9IC8+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvR3JpZD5cbiAgICAgIHshcmVmdW5kRGV0YWlscyAmJiAoXG4gICAgICAgIDxHcmlkIHhzPXsxMn0gcHI9ezR9IHBiPXsyfT5cbiAgICAgICAgICA8R3JpZCB4cz17MTJ9IGl0ZW0+XG4gICAgICAgICAgICA8VGlja2V0U3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICA8L0dyaWQ+XG4gICk7XG59O1xuXG5SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHJlZnVuZERldGFpbHM6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQ7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVmdW5kU3RhdHVzID0gKHsgdGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBzdGF0dXNDb2xvciA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IodGlja2V0KSxcbiAgICBbdGlja2V0XVxuICApO1xuICByZXR1cm4gKFxuICAgIDxCdXR0b25cbiAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCByZWZ1bmQgc3RhdHVzIGxhYmVsXCJcbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzW3N0YXR1c0NvbG9yXX1gfVxuICAgID5cbiAgICAgIHt0KGB0aWNrZXRfc3RhdHVzLnJlZnVuZF9yZXF1ZXN0XyR7c3RhdHVzQ29sb3J9YCl9XG4gICAgPC9CdXR0b24+XG4gICk7XG59O1xuXG5SZWZ1bmRTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFN0YXR1cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBTdHlsZWRFbmdpbmVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgQ2hlY2tDaXJjbGVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgRXJyb3JMYWJlbCBmcm9tIFwiLi4vTGFiZWxzL0Vycm9yTGFiZWxcIjtcbmltcG9ydCB7IHJlZnVuZEJ1bGtUaWNrZXRzLCB1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IFNURVBfT05FLCBTVEVQX1RIUkVFLCBTVEVQX1RXTyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuLi9PcmRlcnNMaXN0L09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgZnJvbSBcIi4vUmVmdW5kUmVxdWVzdGVkVGlja2V0XCI7XG5cbmNvbnN0IFJlZnVuZFJlcXVlc3RzTW9kYWwgPSAoe1xuICB0aWNrZXRzLFxuICBzdW1taXQsXG4gIG9wZW4sXG4gIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlLFxuICBvbkNsb3NlU2xpZGVyLFxuICB0aWNrZXRzVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kLFxuICB1bnNlbGVjdFJlZnVuZFRpY2tldHNcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IFtzdGVwLCBzZXRTdGVwXSA9IHVzZVN0YXRlKFNURVBfT05FKTtcbiAgY29uc3QgW2Vycm9yTXNnLCBzZXRFcnJvck1zZ10gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW3JlZnVuZFN1Y2Nlc3MsIHNldFJlZnVuZFN1Y2Nlc3NdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGNsb3NlU2xpZGVyID0gKCkgPT4ge1xuICAgIHNldEVycm9yTXNnKFwiXCIpO1xuICAgIG9uQ2xvc2VTbGlkZXIoKTtcbiAgICBzZXRTdGVwKFNURVBfT05FKTtcbiAgICBpZiAocmVmdW5kU3VjY2Vzcykge1xuICAgICAgb25SZWZ1bmRTdWNjZXNzQ2xvc2UoKTsgLy8gaWYgdGhlIHJlZnVuZCBpcyBhIHN1Y2Nlc3MsIHRyaWdnZXIgYW5kIHJlLXJldHJpZXZlIHRpY2tldHMgYnkgb3JkZXJcbiAgICAgIHNldFJlZnVuZFN1Y2Nlc3MoZmFsc2UpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBjb25maXJtUmVmdW5kID0gKCkgPT4ge1xuICAgIHNldFN0ZXAoU1RFUF9UV08pO1xuICB9O1xuXG4gIGNvbnN0IGdvQmFja1RvUmVmdW5kID0gKCkgPT4ge1xuICAgIHNldFN0ZXAoU1RFUF9PTkUpO1xuICB9O1xuXG4gIGNvbnN0IHJlZnVuZFRpY2tldHMgPSBhc3luYyAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVmdW5kQnVsa1RpY2tldHMoeyB0aWNrZXRzOiB0aWNrZXRzVG9SZWZ1bmQgfSkpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgZGlzcGF0Y2godXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZChyZXMpKTsgLy8gcmV0dXJuaW5nIHdoaWNoIHRpY2tldHMgd2VyZSBzdWNjZXNzZnVsXG4gICAgICBpZiAocmVzPy5sZW5ndGggPT09IHRpY2tldHNUb1JlZnVuZC5sZW5ndGgpIHtcbiAgICAgICAgc2V0U3RlcChTVEVQX1RIUkVFKTsgLy8gc3VjY2VzcywgYWxsIHJlZnVuZHMgd2VyZSByZXF1ZXN0ZWRcbiAgICAgICAgc2V0UmVmdW5kU3VjY2Vzcyh0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEVycm9yTXNnKHQoXCJlcnJvcnMucmVmdW5kX3Vuc3VjY2Vzc2Z1bFwiKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgc2V0RXJyb3JNc2coXCJcIik7XG4gIH07XG5cbiAgY29uc3QgcmVmdW5kU3RlcE9uZSA9ICgpID0+IChcbiAgICA8PlxuICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfT5cbiAgICAgICAge3QoXCJjb25maXJtX3BvcHVwLnF1ZXN0aW9uX3RleHRfc2VsZWN0X3JlZnVuZFwiKX1cbiAgICAgIDwvaDI+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3R9PlxuICAgICAgICB7dGlja2V0cy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgIDxPcmRlckxpc3RUaWNrZXRzXG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kPXtcbiAgICAgICAgICAgICAgISF0aWNrZXRzVG9SZWZ1bmQuZmluZCgodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgICAgICBpc1JlZnVuZGluZ1xuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9Cb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFjdGlvbkJ1dHRvbnN9PlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jYW5jZWwtYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdXR0b259XG4gICAgICAgICAgb25DbGljaz17Y2xvc2VTbGlkZXJ9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY2FuY2VsXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtY29udGludWUtYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb250aW51ZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtjb25maXJtUmVmdW5kfVxuICAgICAgICAgIGRpc2FibGVkPXt0aWNrZXRzVG9SZWZ1bmQubGVuZ3RoID09PSAwfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNvbnRpbnVlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvQm94PlxuICAgIDwvPlxuICApO1xuXG4gIGNvbnN0IHJlZnVuZFN0ZXBUd28gPSAoKSA9PiAoXG4gICAgPEJveCBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LXN1Y2Nlc3NmdWxcIj5cbiAgICAgIDxoMyBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX0+XG4gICAgICAgIHt0KFwiY29uZmlybV9wb3B1cC5xdWVzdGlvbl90ZXh0X2NvbmZpcm1fcmVmdW5kXCIpfVxuICAgICAgPC9oMz5cbiAgICAgIHtlcnJvck1zZyAmJiAoXG4gICAgICAgIDxFcnJvckxhYmVsXG4gICAgICAgICAgY2xhc3NOYW1lcz17c3R5bGVzLnJlZnVuZEVycm9yTXNnfVxuICAgICAgICAgIGNvbG9yPVwiI0ZGMDAwMFwiXG4gICAgICAgICAgZGF0YVRlc3RJZD1cImZhaWxlZC1yZWZ1bmQtbWVzc2FnZVwiXG4gICAgICAgICAgbWVzc2FnZT17ZXJyb3JNc2d9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0fT5cbiAgICAgICAge3RpY2tldHNUb1JlZnVuZC5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgIDxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcbiAgICAgICAgICAgIGtleT17YHJlZnVuZF9yZXFfJHt0aWNrZXQ/LmlkfWB9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5DVEFCdXR0b25XcmFwcGVyfT5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtcmV0dXJuLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FuY2VsQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e2dvQmFja1RvUmVmdW5kfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmJhY2tcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jb250aW51ZS1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e3JlZnVuZFRpY2tldHN9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY29udGludWVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG5cbiAgY29uc3QgcmVmdW5kU3RlcFRocmVlID0gKCkgPT4gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZFN1Y2Nlc3NmdWx9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LXN1Y2Nlc3NmdWxcIlxuICAgID5cbiAgICAgIDxDaGVja0NpcmNsZUljb24gc3g9e3sgY29sb3I6IFwiIzRjYWY1MFwiIH19IC8+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zdWNjZXNzTXNnfT5cbiAgICAgICAge3QoXCJ0aWNrZXRzLnJlZnVuZF9yZXF1ZXN0X3N1Y2Nlc3NfMVwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnN1Y2Nlc3NNc2cyfT5cbiAgICAgICAge3QoXCJ0aWNrZXRzLnJlZnVuZF9yZXF1ZXN0X3N1Y2Nlc3NfMlwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1maW5pc2gtYnV0dG9uXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXtjbG9zZVNsaWRlcn1cbiAgICAgID5cbiAgICAgICAge3QoXCJnZW5lcmFsLmZpbmlzaFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvQm94PlxuICApO1xuXG4gIGNvbnN0IHJlbmRlclN0ZXBzID0gKCkgPT4ge1xuICAgIHN3aXRjaCAoc3RlcCkge1xuICAgICAgY2FzZSBTVEVQX09ORTpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBPbmUoKTtcbiAgICAgIGNhc2UgU1RFUF9UV086XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwVHdvKCk7XG4gICAgICBjYXNlIFNURVBfVEhSRUU6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwVGhyZWUoKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwT25lKCk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gKFxuICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgIDxSaWdodERyYXdlclxuICAgICAgICBpZD1cInJlZnVuZC1yZXF1ZXN0c1wiXG4gICAgICAgIG9wZW49e29wZW59XG4gICAgICAgIG9uQ2xvc2U9e2Nsb3NlU2xpZGVyfVxuICAgICAgICB0aXRsZT17dChcIm9yZGVyX3N1bW1hcnkucmVxdWVzdF9yZWZ1bmRcIil9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3QtbW9kYWxcIlxuICAgICAgPlxuICAgICAgICB7cmVuZGVyU3RlcHMoKX1cbiAgICAgIDwvUmlnaHREcmF3ZXI+XG4gICAgPC9TdHlsZWRFbmdpbmVQcm92aWRlcj5cbiAgKTtcbn07XG5cblJlZnVuZFJlcXVlc3RzTW9kYWwucHJvcFR5cGVzID0ge1xuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25SZWZ1bmRTdWNjZXNzQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvbkNsb3NlU2xpZGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kUmVxdWVzdHNNb2RhbDtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSwgRHJhd2VyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IENsb3NlIGFzIENsb3NlSWNvbiB9IGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJpZ2h0RHJhd2VyID0gKHsgaWQsIHRpdGxlLCBjaGlsZHJlbiwgb3Blbiwgb25DbG9zZSwgY2xhc3NOYW1lIH0pID0+IChcbiAgPERyYXdlclxuICAgIGlkPXtpZH1cbiAgICBvcGVuPXtvcGVufVxuICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgYW5jaG9yPVwicmlnaHRcIlxuICAgIE1vZGFsUHJvcHM9e3sga2VlcE1vdW50ZWQ6IGZhbHNlIH19XG4gICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMud3JhcHBlcn0gJHtjbGFzc05hbWV9YH1cbiAgPlxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyfT5cbiAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgIGRhdGEtdGVzdGlkPVwiY2xvc2UtZHJhd2VyXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2xvc2VCdG59XG4gICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgIHN4PXt7IGZsb2F0OiBcInJpZ2h0XCIgfX1cbiAgICAgICAgZm9udFNpemU9XCJsYXJnZVwiXG4gICAgICA+XG4gICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNVwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0+XG4gICAgICAgIHt0aXRsZX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgICB7Y2hpbGRyZW59XG4gIDwvRHJhd2VyPlxuKTtcblxuUmlnaHREcmF3ZXIucHJvcFR5cGVzID0ge1xuICBpZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB0aXRsZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm5vZGVdKSxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmlnaHREcmF3ZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBzaGFsbG93RXF1YWwsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuXG5pbXBvcnQgeyBnZXRTdW1taXRGb3JtYXR0ZWREYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N1bW1pdFV0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFN1bW1pdEhlYWRlciA9ICgpID0+IHtcbiAgY29uc3QgeyBzdW1taXQgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sXG4gICAgc2hhbGxvd0VxdWFsXG4gICk7XG4gIHJldHVybiAoXG4gICAgPEJveFxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMud2lkZ2V0SGVhZGVyfVxuICAgICAgc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX1cbiAgICAgIGRhdGEtdGVzdGlkPVwibXktb3JkZXJzLXRpY2tldC1oZWFkZXJcIlxuICAgID5cbiAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdW1taXRUaXRsZURhdGV9PntzdW1taXQ/Lm5hbWV9PC9oMj5cbiAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdW1taXRUaXRsZURhdGV9PlxuICAgICAgICB7Z2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZShzdW1taXQpfVxuICAgICAgPC9oMj5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFN1bW1pdEhlYWRlcjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRleHRGaWVsZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgKiBhcyB5dXAgZnJvbSBcInl1cFwiO1xuXG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vLi4vLi4vRm9ybUZvb3RlclwiO1xuXG5jb25zdCBBc3NpZ25Gb3JtID0gKHsgb25TdWJtaXQsIG9uQ2xvc2UsIHNhdmVMYWJlbCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHtcbiAgICAgIG5ld19hdHRlbmRlZV9lbWFpbDogXCJcIixcbiAgICAgIHBlcnNvbmFsX21lc3NhZ2U6IFwiXCJcbiAgICB9LFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IHl1cC5vYmplY3Qoe1xuICAgICAgbmV3X2F0dGVuZGVlX2VtYWlsOiB5dXBcbiAgICAgICAgLnN0cmluZyh0KFwidmFsaWRhdGlvbi5lbWFpbC5zdHJpbmdcIikpXG4gICAgICAgIC5lbWFpbCh0KFwidmFsaWRhdGlvbi5lbWFpbC5mb3JtYXRcIikpXG4gICAgICAgIC5yZXF1aXJlZCh0KFwidmFsaWRhdGlvbi5lbWFpbC5yZXF1aXJlZFwiKSksXG4gICAgICBwZXJzb25hbF9tZXNzYWdlOiB5dXAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLnRleHQuc3RyaW5nXCIpKVxuICAgIH0pLFxuICAgIG9uU3VibWl0XG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBuYW1lPVwibmV3X2F0dGVuZGVlX2VtYWlsXCJcbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfcmVhc3NpZ24ubmV3X2F0dGVuZGVlX2VtYWlsXCIpfVxuICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5uZXdfYXR0ZW5kZWVfZW1haWx9XG4gICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICBlcnJvcj17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQubmV3X2F0dGVuZGVlX2VtYWlsICYmXG4gICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLm5ld19hdHRlbmRlZV9lbWFpbClcbiAgICAgICAgfVxuICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5uZXdfYXR0ZW5kZWVfZW1haWwgJiYgZm9ybWlrLmVycm9ycy5uZXdfYXR0ZW5kZWVfZW1haWxcbiAgICAgICAgfVxuICAgICAgICByZXF1aXJlZFxuICAgICAgLz5cbiAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG5hbWU9XCJwZXJzb25hbF9tZXNzYWdlXCJcbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfcmVhc3NpZ24ucGVyc29uYWxfbWVzc2FnZVwiKX1cbiAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMucGVyc29uYWxfbWVzc2FnZX1cbiAgICAgICAgbXVsdGlsaW5lXG4gICAgICAgIG1pblJvd3M9ezR9XG4gICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICBlcnJvcj17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQucGVyc29uYWxfbWVzc2FnZSAmJlxuICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5wZXJzb25hbF9tZXNzYWdlKVxuICAgICAgICB9XG4gICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLnBlcnNvbmFsX21lc3NhZ2UgJiYgZm9ybWlrLmVycm9ycy5wZXJzb25hbF9tZXNzYWdlXG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Rm9ybUZvb3RlclxuICAgICAgICBzYXZlTGFiZWw9e3NhdmVMYWJlbCB8fCB0KFwidGlja2V0X3JlYXNzaWduLnNhdmVcIil9XG4gICAgICAgIGNhbmNlbExhYmVsPXt0KFwidGlja2V0X3JlYXNzaWduLmNhbmNlbFwiKX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAvPlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cbkFzc2lnbkZvcm0ucHJvcFR5cGVzID0ge1xuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgc2F2ZUxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25Gb3JtO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0LCB7IHVzZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIFR5cG9ncmFwaHksIERpdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHtcbiAgYXNzaWduQXR0ZW5kZWUsXG4gIGdldEV4dHJhUXVlc3Rpb25zLFxuICBnZXRUaWNrZXQsXG4gIHNhdmVFeHRyYVF1ZXN0aW9uc1xufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IEFzc2lnbkVRRm9ybSBmcm9tIFwiLi4vQXNzaWduRVFGb3JtXCI7XG5pbXBvcnQgQXNzaWduRm9ybSBmcm9tIFwiLi9jb21wb25lbnRzL0Fzc2lnbkZvcm1cIjtcbmltcG9ydCB7IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCB9IGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uL0NvcHlUZXh0XCI7XG5pbXBvcnQgQ3VzdG9tRGlhbG9nQ29udGV4dCBmcm9tIFwiLi4vQ3VzdG9tRGlhbG9nL0NvbnRleHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0QXNzaWduID0gKHtcbiAgc3VtbWl0LFxuICB0aWNrZXRJZCxcbiAgb3JkZXJJZCxcbiAgb3duZXJJZCxcbiAgb3BlbixcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW3RpY2tldEFzc2lnbmVkLCBzZXRUaWNrZXRBc3NpZ25lZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHsgc2V0TWVzc2FnZSwgc2V0TWVzc2FnZUNhbGxiYWNrIH0gPSB1c2VDb250ZXh0KEN1c3RvbURpYWxvZ0NvbnRleHQpO1xuICBjb25zdCB7XG4gICAgY3VycmVudFRpY2tldDogdGlja2V0LFxuICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgIHVzZXI6IHsgdXNlclByb2ZpbGUgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGlja2V0SWQgJiYgb3JkZXJJZCAmJiBvcGVuKSB7XG4gICAgICBkaXNwYXRjaChnZXRUaWNrZXQodGlja2V0SWQsIG9yZGVySWQpKTtcbiAgICB9XG4gIH0sIFt0aWNrZXRJZCwgb3JkZXJJZCwgb3Blbl0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG93bmVySWQgJiYgb3Blbikge1xuICAgICAgZGlzcGF0Y2goZ2V0RXh0cmFRdWVzdGlvbnMob3duZXJJZCkpO1xuICAgIH1cbiAgfSwgW293bmVySWRdKTtcblxuICBjb25zdCBvbkFzc2lnblRvT3RoZXIgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgeyBuZXdfYXR0ZW5kZWVfZW1haWwsIHBlcnNvbmFsX21lc3NhZ2UgfSA9IHZhbDtcbiAgICByZXR1cm4gZGlzcGF0Y2goXG4gICAgICBhc3NpZ25BdHRlbmRlZShvcmRlcklkLCB0aWNrZXRJZCwgbmV3X2F0dGVuZGVlX2VtYWlsLCBwZXJzb25hbF9tZXNzYWdlKVxuICAgICkudGhlbigoKSA9PiB7XG4gICAgICBzZXRUaWNrZXRBc3NpZ25lZCh0cnVlKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBvbkFzc2lnblRvTWUgPSAoKSA9PlxuICAgIGRpc3BhdGNoKGFzc2lnbkF0dGVuZGVlKG9yZGVySWQsIHRpY2tldElkLCB1c2VyUHJvZmlsZS5lbWFpbCkpLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0VGlja2V0QXNzaWduZWQodHJ1ZSk7XG4gICAgfSk7XG5cbiAgY29uc3Qgb25DbG9zZUVRRm9ybSA9ICgpID0+IHtcbiAgICBzZXRUaWNrZXRBc3NpZ25lZChmYWxzZSk7XG4gICAgb25DbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IG9uQ2xvc2VTYXZlTWVzc2FnZSA9ICgpID0+IHtcbiAgICBzZXRUaWNrZXRBc3NpZ25lZChmYWxzZSk7XG4gICAgc2V0VGltZW91dChvbkNsb3NlLCBNSUxMSVNFQ19UT19TRUMpO1xuICB9O1xuXG4gIGNvbnN0IG9uU2F2ZUVRID0gKHZhbCkgPT4ge1xuICAgIGNvbnN0IGFuc3dlcnMgPSB0cmFuc2Zvcm1BbndlcnNGb3JtYXQodmFsKTtcblxuICAgIHJldHVybiBkaXNwYXRjaChzYXZlRXh0cmFRdWVzdGlvbnModGlja2V0LCBhbnN3ZXJzKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0TWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfYXNzaWduLnNhdmluZ19zdWNjZXNzXCIpLFxuICAgICAgICAgIGJvZHk6IHQoXCJ0aWNrZXRfYXNzaWduLnNhdmluZ19zdWNjZXNzX2Rlc2NyaXB0aW9uXCIpXG4gICAgICAgIH0pO1xuICAgICAgICBzZXRNZXNzYWdlQ2FsbGJhY2sob25DbG9zZVNhdmVNZXNzYWdlKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIHNldE1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X2Fzc2lnbi5zYXZpbmdfZXJyb3JcIiksXG4gICAgICAgICAgYm9keTogZXJyLnRvU3RyaW5nKClcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8UmlnaHREcmF3ZXJcbiAgICAgIGlkPVwicmVhc3NpZ25EcmF3ZXJcIlxuICAgICAgdGl0bGU9e3QoXCJ0aWNrZXRfYXNzaWduLmFzc2lnbl90aWNrZXRcIil9XG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldEFzc2lnbkNvbnRhaW5lcn1cbiAgICA+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFsaWduQ2VudGVyfT5cbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfT5cbiAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24ucHVyY2hhc2VkX2J5XCIpfSB7dGlja2V0Py5vcmRlcj8ub3duZXJfZW1haWx9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyTm99PlxuICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgdGV4dD17dGlja2V0Py5vcmRlcj8ubnVtYmVyfVxuICAgICAgICAgICAgcmV2ZXJzZWRcbiAgICAgICAgICAgIHdpZHRoPXsyNTB9XG4gICAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPC9Cb3g+XG4gICAgICB7dGlja2V0ICYmICF0aWNrZXRBc3NpZ25lZCAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hbGlnbkNlbnRlcn0+XG4gICAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDRcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0VHlwZX0+XG4gICAgICAgICAgICAgIHt0aWNrZXQ/LnR5cGU/Lm5hbWV9XG4gICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnbkJ0bn1cbiAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e29uQXNzaWduVG9NZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmFzc2lnbl90b19tZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIDxEaXZpZGVyIHZhcmlhbnQ9XCJtaWRkbGVcIj4mbmJzcDsmbmJzcDtvciZuYnNwOyZuYnNwOzwvRGl2aWRlcj5cbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlQ29udGFpbmVyfT5cbiAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWxpZ25DZW50ZXJ9PlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJoNFwiXG4gICAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVJbmZvVGl0bGV9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uYXNzaWduX3RvX3NvbWVvbmVfZWxzZVwiKX1cbiAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVJbmZvTm90ZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5lbnRlcl9lbWFpbF9ub3RlXCIpfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgIDxBc3NpZ25Gb3JtXG4gICAgICAgICAgICAgIG9uU3VibWl0PXtvbkFzc2lnblRvT3RoZXJ9XG4gICAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9hc3NpZ24uc2F2ZV9sYWJlbFwiKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHt0aWNrZXQgJiYgdGlja2V0QXNzaWduZWQgJiYgKFxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlQ29udGFpbmVyfT5cbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFsaWduQ2VudGVyfT5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJoNFwiXG4gICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUluZm9UaXRsZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmFzc2lnbl90b19zb21lb25lX2Vsc2VcIil9XG4gICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVJbmZvTm90ZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmVudGVyX2VtYWlsX25vdGVcIil9XG4gICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPEFzc2lnbkZvcm1cbiAgICAgICAgICAgIG9uU3VibWl0PXtvbkFzc2lnblRvT3RoZXJ9XG4gICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5zYXZlX2xhYmVsXCIpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cbiAgICAgIHt0aWNrZXQgJiYgdGlja2V0QXNzaWduZWQgJiYgKFxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlQ29udGFpbmVyfT5cbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFsaWduQ2VudGVyfT5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJoNFwiXG4gICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUluZm9UaXRsZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmFzc2lnbmVkX3RvXCIpfVxuICAgICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgICAge3RpY2tldD8ub3duZXI/LmVtYWlsfVxuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlSW5mb05vdGV9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5jb21wbGV0ZV9pbmZvXCIpfVxuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIDxBc3NpZ25FUUZvcm1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICBleHRyYVF1ZXN0aW9ucz17ZXh0cmFRdWVzdGlvbnN9XG4gICAgICAgICAgICBvblN1Ym1pdD17b25TYXZlRVF9XG4gICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlRVFGb3JtfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cbiAgICA8L1JpZ2h0RHJhd2VyPlxuICApO1xufTtcblxuVGlja2V0QXNzaWduLnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3JkZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3duZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRBc3NpZ247XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQsIEF1dG9jb21wbGV0ZSwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCBDb21wYW55RmllbGQgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBpc1JlcXVpcmVkIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbaW5wdXRWYWx1ZSwgc2V0SW5wdXRWYWx1ZV0gPSBSZWFjdC51c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW29wdGlvbnMsIHNldE9wdGlvbnNdID0gUmVhY3QudXNlU3RhdGUoW10pO1xuICBjb25zdCB7IGVycm9ycywgdmFsdWVzLCB0b3VjaGVkLCBzZXRGaWVsZFRvdWNoZWQsIHNldEZpZWxkVmFsdWUgfSA9IGZvcm1paztcbiAgY29uc3QgbmFtZSA9IFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnk7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVzW25hbWVdO1xuICBjb25zdCBlcnJvciA9IHRvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pO1xuICBjb25zdCBoZWxwZXJUZXh0ID0gdG91Y2hlZFtuYW1lXSAmJiBlcnJvcnNbbmFtZV07XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5wdXRWYWx1ZSA9PT0gXCJcIikge1xuICAgICAgc2V0T3B0aW9ucyh2YWx1ZSA/IFt2YWx1ZV0gOiBbXSk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzKHN1bW1pdElkLCBpbnB1dFZhbHVlLCAocmVzdWx0cykgPT4ge1xuICAgICAgbGV0IG5ld09wdGlvbnMgPSBbXTtcblxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIG5ld09wdGlvbnMgPSBbdmFsdWVdO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzdWx0cykge1xuICAgICAgICBuZXdPcHRpb25zID0gWy4uLm5ld09wdGlvbnMsIC4uLnJlc3VsdHNdO1xuICAgICAgfVxuXG4gICAgICBzZXRPcHRpb25zKG5ld09wdGlvbnMpO1xuICAgIH0pO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0sIFt2YWx1ZSwgaW5wdXRWYWx1ZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPEF1dG9jb21wbGV0ZVxuICAgICAgbmFtZT17bmFtZX1cbiAgICAgIG9wdGlvbnM9e29wdGlvbnN9XG4gICAgICBhdXRvQ29tcGxldGVcbiAgICAgIGZyZWVTb2xvXG4gICAgICBpbmNsdWRlSW5wdXRJbkxpc3RcbiAgICAgIGZpbHRlclNlbGVjdGVkT3B0aW9uc1xuICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgb25CbHVyPXsoKSA9PiBzZXRGaWVsZFRvdWNoZWQobmFtZSwgdHJ1ZSwgdHJ1ZSl9XG4gICAgICBnZXRPcHRpb25MYWJlbD17KG9wdGlvbikgPT4ge1xuICAgICAgICAvLyBWYWx1ZSBzZWxlY3RlZCB3aXRoIGVudGVyLCByaWdodCBmcm9tIHRoZSBpbnB1dFxuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHJldHVybiBvcHRpb247XG4gICAgICAgIH1cbiAgICAgICAgLy8gQWRkIFwieHh4XCIgb3B0aW9uIGNyZWF0ZWQgZHluYW1pY2FsbHlcbiAgICAgICAgaWYgKG9wdGlvbi5pbnB1dFZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbi5pbnB1dFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlZ3VsYXIgb3B0aW9uXG4gICAgICAgIHJldHVybiBvcHRpb24ubmFtZTtcbiAgICAgIH19XG4gICAgICBvbkNoYW5nZT17KGV2ZW50LCBuZXdWYWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCB0bXBWYWx1ZSA9IG5ld1ZhbHVlPy5pbnB1dFZhbHVlIHx8IG5ld1ZhbHVlO1xuICAgICAgICBzZXRPcHRpb25zKHRtcFZhbHVlID8gW3RtcFZhbHVlLCAuLi5vcHRpb25zXSA6IG9wdGlvbnMpO1xuICAgICAgICBzZXRGaWVsZFZhbHVlKG5hbWUsIHRtcFZhbHVlKTtcbiAgICAgIH19XG4gICAgICBvbklucHV0Q2hhbmdlPXsoZXZlbnQsIG5ld0lucHV0VmFsdWUpID0+IHtcbiAgICAgICAgc2V0SW5wdXRWYWx1ZShuZXdJbnB1dFZhbHVlKTtcbiAgICAgIH19XG4gICAgICBmaWx0ZXJPcHRpb25zPXsob3B0aW9ucywgcGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgaW5wdXRWYWx1ZSB9ID0gcGFyYW1zO1xuICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IFsuLi5vcHRpb25zXTtcbiAgICAgICAgLy8gU3VnZ2VzdCB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmFsdWVcbiAgICAgICAgY29uc3QgaXNFeGlzdGluZyA9IG9wdGlvbnMuc29tZShcbiAgICAgICAgICAob3B0aW9uKSA9PiBpbnB1dFZhbHVlID09PSBvcHRpb24udGl0bGVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGlucHV0VmFsdWUgIT09IFwiXCIgJiYgIWlzRXhpc3RpbmcpIHtcbiAgICAgICAgICBmaWx0ZXJlZC5wdXNoKHtcbiAgICAgICAgICAgIGlucHV0VmFsdWUsXG4gICAgICAgICAgICBuYW1lOiBgU2VsZWN0IFwiJHtpbnB1dFZhbHVlfVwiYFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkO1xuICAgICAgfX1cbiAgICAgIHJlbmRlcklucHV0PXsocGFyYW1zKSA9PiAoXG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5wYXJhbXN9XG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmF0dGVuZGVlX2NvbXBhbnlcIil9XG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgICAgaGVscGVyVGV4dD17aGVscGVyVGV4dH1cbiAgICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgcmVuZGVyT3B0aW9uPXsocHJvcHMsIG9wdGlvbikgPT4ge1xuICAgICAgICBjb25zdCB7IGtleSwgLi4ub3B0aW9uUHJvcHMgfSA9IHByb3BzO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nXG4gICAgICAgICAgPGxpIGtleT17a2V5fSB7Li4ub3B0aW9uUHJvcHN9PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fT5cbiAgICAgICAgICAgICAge29wdGlvbi5uYW1lfVxuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIC8+XG4gICk7XG59O1xuXG5Db21wYW55RmllbGQucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc3VtbWl0SWQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29tcGFueUZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBDaGVja2JveCxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1IZWxwZXJUZXh0XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgUmF3SFRNTCBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyID0gKHtcbiAgZGlzY2xhaW1lcixcbiAgZm9ybWlrLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGlzUmVxdWlyZWQgPSB0cnVlXG59KSA9PiB7XG4gIGNvbnN0IG5hbWUgPSBUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWQ7XG4gIGNvbnN0IHsgZXJyb3JzLCB2YWx1ZXMsIHRvdWNoZWQsIGhhbmRsZUNoYW5nZSwgaGFuZGxlQmx1ciB9ID0gZm9ybWlrO1xuICBjb25zdCB2YWx1ZSA9IHZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZXJyb3IgPSB0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKTtcbiAgY29uc3QgaGVscGVyVGV4dCA9IHRvdWNoZWRbbmFtZV0gJiYgZXJyb3JzW25hbWVdO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxGb3JtQ29udHJvbCBmdWxsV2lkdGggZXJyb3I9e2Vycm9yfT5cbiAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgICBjaGVja2VkPXshIXZhbHVlfVxuICAgICAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e2Rpc2NsYWltZXJ9PC9SYXdIVE1MPn1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgb25CbHVyPXtoYW5kbGVCbHVyfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntkaXNjbGFpbWVyfTwvUmF3SFRNTD59XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuUmVnaXN0cmF0aW9uRGlzY2xhaW1lci5wcm9wVHlwZXMgPSB7XG4gIGRpc2NsYWltZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpc1JlcXVpcmVkOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVnaXN0cmF0aW9uRGlzY2xhaW1lcjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IFRleHRGaWVsZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5cbmNvbnN0IFRpY2tldERlbGVnYXRpb25GaWVsZHMgPSAoeyBmb3JtaWsgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgaWQ9XCJkZWxlZ2F0ZWRfZmlyc3RfbmFtZVwiXG4gICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5maXJzdF9uYW1lXCIpfVxuICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5kZWxlZ2F0ZWRfZmlyc3RfbmFtZX1cbiAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgIGVycm9yPXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZWRfZmlyc3RfbmFtZSAmJlxuICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZWRfZmlyc3RfbmFtZSlcbiAgICAgICAgfVxuICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZWRfZmlyc3RfbmFtZSAmJlxuICAgICAgICAgIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVkX2ZpcnN0X25hbWVcbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGlkPVwiZGVsZWdhdGVkX2xhc3RfbmFtZVwiXG4gICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5sYXN0X25hbWVcIil9XG4gICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlZF9sYXN0X25hbWV9XG4gICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICBlcnJvcj17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVkX2xhc3RfbmFtZSAmJlxuICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZWRfbGFzdF9uYW1lKVxuICAgICAgICB9XG4gICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlZF9sYXN0X25hbWUgJiZcbiAgICAgICAgICBmb3JtaWsuZXJyb3JzLmRlbGVnYXRlZF9sYXN0X25hbWVcbiAgICAgICAgfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblRpY2tldERlbGVnYXRpb25GaWVsZHMucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0RGVsZWdhdGlvbkZpZWxkcztcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgRXh0cmFRdWVzdGlvbnNGaWVsZHMgZnJvbSBcIi4uLy4uLy4uL0V4dHJhUXVlc3Rpb25zRmllbGRzXCI7XG5cbmltcG9ydCB7XG4gIGdldFR5cGVWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi8uLi8uLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5cbmltcG9ydCBUaWNrZXREZWxlZ2F0aW9uRmllbGRzIGZyb20gXCIuLi9UaWNrZXREZWxlZ2F0aW9uRmllbGRzXCI7XG5pbXBvcnQgVGlja2V0T3duZXJGaWVsZHMgZnJvbSBcIi4uL1RpY2tldE93bmVyRmllbGRzXCI7XG5pbXBvcnQgUmVnaXN0cmF0aW9uRGlzY2xhaW1lciBmcm9tIFwiLi4vUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9SZWdpc3RyYXRpb25EaXNjbGFpbWVyXCI7XG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vLi4vLi4vRm9ybUZvb3RlclwiO1xuaW1wb3J0IHVzZVNjcm9sbFRvRXJyb3IgZnJvbSBcIi4uLy4uLy4uLy4uL2hvb2tzL3VzZVNjcm9sbFRvRXJyb3JcIjtcbmltcG9ydCB7XG4gIHBhcnNlQW5zd2VycyxcbiAgYnVpbGRWYWxpZGF0aW9uU2NoZW1hXG59IGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4uLy4uL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXRGb3JtID0gKHtcbiAgdGlja2V0LFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgc3VtbWl0LFxuICBjYW5FZGl0LFxuICBvblN1Ym1pdCxcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHRpY2tldE1hbmFnZXIgPSB0aWNrZXQ/Lm1hbmFnZXI7XG4gIC8qIERJU0FCTEUgREVMRUdBVElPTiBGVE0gKi9cbiAgY29uc3QgYWxsb3dzRGVsZWdhdGlvbiA9IHRpY2tldD8udGlja2V0X3R5cGU/LmFsbG93c190b19kZWxlZ2F0ZSAmJiBmYWxzZTtcbiAgY29uc3QgYW5zd2VycyA9IHRpY2tldD8ub3duZXI/LmV4dHJhX3F1ZXN0aW9ucy5yZWR1Y2UoKHJlcywgYW5zKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKGFucy5xdWVzdGlvbi5uYW1lLCBhbnMucXVlc3Rpb24uaWQpO1xuICAgIHJlc1txdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbHVlKGFucy52YWx1ZSwgYW5zLnF1ZXN0aW9uLnR5cGUpO1xuICAgIHJldHVybiByZXM7XG4gIH0sIHt9KTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHBhcnNlQW5zd2VycyhcbiAgICAgIHRpY2tldC5vd25lcixcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgYW5zd2VycyxcbiAgICAgIHRpY2tldE1hbmFnZXIsXG4gICAgICBhbGxvd3NEZWxlZ2F0aW9uLFxuICAgICAgdHJ1ZSxcbiAgICAgIHRydWVcbiAgICApLFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IGJ1aWxkVmFsaWRhdGlvblNjaGVtYShcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgdHJ1ZSxcbiAgICAgIGFsbG93c0RlbGVnYXRpb24sXG4gICAgICBzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5XG4gICAgKSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcykgPT4ge1xuICAgICAgY29uc3QgcmVsZXZhbnRBbnN3ZXJzID0gcGFyc2VBbnN3ZXJzKFxuICAgICAgICB0aWNrZXQub3duZXIsXG4gICAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgICB2YWx1ZXMsXG4gICAgICAgIHRpY2tldE1hbmFnZXIsXG4gICAgICAgIGFsbG93c0RlbGVnYXRpb24sXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBvblN1Ym1pdChyZWxldmFudEFuc3dlcnMpO1xuICAgIH0sXG4gICAgZW5hYmxlUmVpbml0aWFsaXplOiB0cnVlXG4gIH0pO1xuXG4gIC8vIGNvbnNvbGUubG9nKFwiU1VNTUlUOiBcIiwgc3VtbWl0KTtcbiAgLy8gY29uc29sZS5sb2coXCJUSUNLRVQ6IFwiLCB0aWNrZXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlFVRVNUSVVPTnM6IFwiLCBleHRyYVF1ZXN0aW9ucyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiQU5TV0VSUzogXCIsIGFuc3dlcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkVSUk9SczogXCIsIGZvcm1pay5lcnJvcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlZBTFVFUzogXCIsIGZvcm1pay52YWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIklOSVRJQUw6IFwiLCBmb3JtaWsuaW5pdGlhbFZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVE9VQ0hFRDogXCIsIGZvcm1pay50b3VjaGVkKTtcblxuICAvLyBTQ1JPTEwgVE8gRVJST1JcbiAgdXNlU2Nyb2xsVG9FcnJvcihmb3JtaWssIFwiZGV0YWlsc0RyYXdlclwiKTtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgPFRpY2tldE93bmVyRmllbGRzXG4gICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICBvd25lcj17dGlja2V0Lm93bmVyfVxuICAgICAgICBzdW1taXRJZD17c3VtbWl0LmlkfVxuICAgICAgICBkaXNhYmxlZD17IWNhbkVkaXR9XG4gICAgICAvPlxuXG4gICAgICB7YWxsb3dzRGVsZWdhdGlvbiAmJiAoXG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJzdWJ0aXRsZTJcIlxuICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kZWxlZ2F0ZWRUb31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuZGVsZWdhdGVkX3RvXCIpfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8VGlja2V0RGVsZWdhdGlvbkZpZWxkcyBmb3JtaWs9e2Zvcm1pa30gLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICB7ZXh0cmFRdWVzdGlvbnM/Lmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8Qm94PlxuICAgICAgICAgIDxoNiBjbGFzc05hbWU9e3N0eWxlcy5hZGRpdGlvbmFsRGV0YWlsc30+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYWRpdGlvbmFsX2RldGFpbHNcIil9XG4gICAgICAgICAgPC9oNj5cbiAgICAgICAgICA8RXh0cmFRdWVzdGlvbnNGaWVsZHNcbiAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgIGFsbG93RWRpdD17Y2FuRWRpdH1cbiAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cblxuICAgICAge3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50ICYmIChcbiAgICAgICAgPFJlZ2lzdHJhdGlvbkRpc2NsYWltZXJcbiAgICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgICBkaXNjbGFpbWVyPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudH1cbiAgICAgICAgICBpc1JlcXVpcmVkPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5fVxuICAgICAgICAgIGlzRGlzYWJsZWQ9eyFjYW5FZGl0fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9kZXRhaWwuc2F2ZVwiKX1cbiAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmNhbmNlbFwiKX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAvPlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cblRpY2tldEZvcm0ucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGNhbkVkaXQ6IFByb3BUeXBlcy5ib29sLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0Rm9ybTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgQ29tcGFueUZpZWxkIGZyb20gXCIuLi9Db21wYW55RmllbGRcIjtcblxuY29uc3QgVGlja2V0T3duZXJGaWVsZHMgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBkaXNhYmxlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyIH0gPSBmb3JtaWs7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbmFtZT17VElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWx9XG4gICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5lbWFpbFwiKX1cbiAgICAgICAgZGlzYWJsZWRcbiAgICAgICAgdmFsdWU9e3ZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF19XG4gICAgICAvPlxuICAgICAge1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWUsIFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXS5tYXAoXG4gICAgICAgIChuYW1lKSA9PiAoXG4gICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICBrZXk9e25hbWV9XG4gICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgbGFiZWw9e3QoYHRpY2tldF9kZXRhaWwuJHtuYW1lfWApfVxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlc1tuYW1lXX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICBlcnJvcj17dG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSl9XG4gICAgICAgICAgICBoZWxwZXJUZXh0PXtmb3JtaWsudG91Y2hlZFtuYW1lXSAmJiBmb3JtaWsuZXJyb3JzW25hbWVdfVxuICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAvPlxuICAgICAgICApXG4gICAgICApfVxuICAgICAgPENvbXBhbnlGaWVsZCBmb3JtaWs9e2Zvcm1pa30gc3VtbWl0SWQ9e3N1bW1pdElkfSBpc1JlcXVpcmVkIC8+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmluZm9Ob3RlfT57dChcInRpY2tldF9kZXRhaWwuaW5mb19ub3RlXCIpfTwvQm94PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuVGlja2V0T3duZXJGaWVsZHMucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0T3duZXJGaWVsZHM7XG4iLCJleHBvcnQgY29uc3QgVElDS0VUX0FUVEVOREVFX0tFWVMgPSB7XG4gIGVtYWlsOiBcImF0dGVuZGVlX2VtYWlsXCIsXG4gIGZpcnN0TmFtZTogXCJhdHRlbmRlZV9maXJzdF9uYW1lXCIsXG4gIGxhc3ROYW1lOiBcImF0dGVuZGVlX2xhc3RfbmFtZVwiLFxuICBjb21wYW55OiBcImF0dGVuZGVlX2NvbXBhbnlcIixcbiAgZGlzY2xhaW1lckFjY2VwdGVkOiBcImRpc2NsYWltZXJfYWNjZXB0ZWRcIlxufTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgUVJDb2RlIGZyb20gXCJyZWFjdC1xci1jb2RlXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgRHJhd2VyLCBJY29uQnV0dG9uLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIENsb3NlIGFzIENsb3NlSWNvbixcbiAgRmlsZURvd25sb2FkT3V0bGluZWQgYXMgRG93bmxvYWRJY29uLFxuICBFbWFpbE91dGxpbmVkIGFzIEVtYWlsSWNvblxufSBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uL0NvcHlUZXh0XCI7XG5pbXBvcnQgdXNlR2V0VGlja2V0IGZyb20gXCIuLi8uLi9ob29rcy91c2VHZXRUaWNrZXRcIjtcbmltcG9ydCB7IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCB9IGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQgQ3VzdG9tRGlhbG9nIGZyb20gXCIuLi9DdXN0b21EaWFsb2dcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQywgVFdPX0lURU0gfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgVGlja2V0Rm9ybSBmcm9tIFwiLi9jb21wb25lbnRzL1RpY2tldEZvcm1cIjtcbmltcG9ydCB7XG4gIGdldFRpY2tldFBERixcbiAgc2F2ZVRpY2tldERldGFpbHMsXG4gIHJlc2VuZE5vdGlmaWNhdGlvblxufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldERldGFpbCA9ICh7XG4gIHN1bW1pdCxcbiAgdGlja2V0SWQsXG4gIG9yZGVySWQsXG4gIG93bmVySWQsXG4gIG9wZW4sXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHtcbiAgICB1c2VyOiB7IHVzZXJQcm9maWxlIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUpO1xuICBjb25zdCB7IHRpY2tldCwgZXh0cmFRdWVzdGlvbnMgfSA9IHVzZUdldFRpY2tldChcbiAgICB0aWNrZXRJZCxcbiAgICBvcmRlcklkLFxuICAgIG93bmVySWQsXG4gICAgb3BlblxuICApO1xuICBjb25zdCBbc2F2ZU1lc3NhZ2UsIHNldFNhdmVNZXNzYWdlXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbc2VudENvbmZpcm1hdGlvbiwgc2V0U2VudENvbmZpcm1hdGlvbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGlzVXNlck9yZGVyT3duZXIgPSB0aWNrZXQ/Lm9yZGVyPy5vd25lcl9pZCA9PT0gdXNlclByb2ZpbGU/LmlkO1xuICBjb25zdCBpc1VzZXJUaWNrZXRPd25lciA9IHRpY2tldD8ub3duZXI/LmVtYWlsID09PSB1c2VyUHJvZmlsZT8uZW1haWw7XG4gIGNvbnN0IGNhbkVkaXRUaWNrZXREYXRhID1cbiAgICAoaXNVc2VyVGlja2V0T3duZXIgfHwgaXNVc2VyT3JkZXJPd25lcikgJiZcbiAgICBzdW1taXQuYWxsb3dfdXBkYXRlX2F0dGVuZGVlX2V4dHJhX3F1ZXN0aW9ucztcbiAgY29uc3QgeyBpc0NvbXBsZXRlIH0gPSB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG5cbiAgY29uc3Qgb25TYXZlID0gKHZhbCkgPT4ge1xuICAgIGNvbnN0IGFuc3dlcnMgPSB0cmFuc2Zvcm1BbndlcnNGb3JtYXQodmFsKTtcblxuICAgIHJldHVybiBkaXNwYXRjaChzYXZlVGlja2V0RGV0YWlscyh0aWNrZXQsIGFuc3dlcnMpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXRTYXZlTWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfZGV0YWlsLnNhdmluZ19zdWNjZXNzXCIpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfc3VjY2Vzc19kZXNjcmlwdGlvblwiKVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIHNldFNhdmVNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9kZXRhaWwuc2F2aW5nX2Vycm9yXCIpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBlcnIudG9TdHJpbmcoKVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9KTtcbiAgfTtcblxuICBjb25zdCBvbkNsb3NlU2F2ZU1lc3NhZ2UgPSAoKSA9PiB7XG4gICAgc2V0U2F2ZU1lc3NhZ2UobnVsbCk7XG4gICAgc2V0VGltZW91dChvbkNsb3NlLCBNSUxMSVNFQ19UT19TRUMpO1xuICB9O1xuXG4gIGNvbnN0IGRvd25sb2FkVGlja2V0UGRmID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKGdldFRpY2tldFBERih0aWNrZXQpKTtcbiAgfTtcblxuICBjb25zdCBvblNlbmRFbWFpbCA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChyZXNlbmROb3RpZmljYXRpb24odGlja2V0KSkudGhlbigoKSA9PiB7XG4gICAgICBzZXRTZW50Q29uZmlybWF0aW9uKHRydWUpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHNldFNlbnRDb25maXJtYXRpb24oZmFsc2UpO1xuICAgICAgfSwgTUlMTElTRUNfVE9fU0VDICogVFdPX0lURU0pO1xuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxEcmF3ZXJcbiAgICAgICAgaWQ9XCJkZXRhaWxzRHJhd2VyXCJcbiAgICAgICAgb3Blbj17b3Blbn1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgYW5jaG9yPVwicmlnaHRcIlxuICAgICAgICBNb2RhbFByb3BzPXt7IGtlZXBNb3VudGVkOiBmYWxzZSB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXREZXRhaWxDb250YWluZXJ9XG4gICAgICA+XG4gICAgICAgIHt0aWNrZXQgJiYgZXh0cmFRdWVzdGlvbnMgJiYgKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlcn0+XG4gICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2xvc2VCdG59XG4gICAgICAgICAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgICAgICAgICBzeD17eyBmbG9hdDogXCJyaWdodFwiIH19XG4gICAgICAgICAgICAgICAgZm9udFNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Q2xvc2VJY29uIC8+XG4gICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg0XCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlfT5cbiAgICAgICAgICAgICAgICB7dGlja2V0Py50aWNrZXRfdHlwZT8ubmFtZX1cbiAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MlwiXG4gICAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwucHVyY2hhc2VkX2J5XCIpfSB7dGlja2V0Py5vcmRlcj8ub3duZXJfZW1haWx9XG4gICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cblxuICAgICAgICAgICAgICB7aXNDb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMucXJDb2RlfT5cbiAgICAgICAgICAgICAgICAgICAgPFFSQ29kZVxuICAgICAgICAgICAgICAgICAgICAgIHNpemU9ezI1Nn1cbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBcImF1dG9cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heFdpZHRoOiBcIjEwMCVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjEwMCVcIlxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3RpY2tldC5xcl9jb2RlfVxuICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjU2IDI1NlwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT17c3R5bGVzLnN0YXR1c30+e3QoXCJ0aWNrZXRfZGV0YWlsLnN0YXR1c1wiKX08L3A+XG4gICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keTJcIlxuICAgICAgICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucXJOb3RlfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwucXJfbm90ZVwiKX1cbiAgICAgICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICB7IXN1bW1pdD8uaXNfdmlydHVhbCAmJiBpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFjdGlvbkJ1dHRvbnNDb250YWluZXJ9PlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kb3dubG9hZEJ0bn1cbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2Rvd25sb2FkVGlja2V0UGRmfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8RG93bmxvYWRJY29uIGZvbnRTaXplPVwibGFyZ2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuZG93bmxvYWRcIil9XG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuc2VuZEJ0bn0gJHtcbiAgICAgICAgICAgICAgICAgICAgICBzZW50Q29uZmlybWF0aW9uID8gc3R5bGVzLnNlbnQgOiBcIlwiXG4gICAgICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtvblNlbmRFbWFpbH1cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3NlbnRDb25maXJtYXRpb259XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxFbWFpbEljb24gZm9udFNpemU9XCJsYXJnZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIHtzZW50Q29uZmlybWF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgPyB0KFwidGlja2V0X2RldGFpbC5zZW50XCIpXG4gICAgICAgICAgICAgICAgICAgICAgOiB0KFwidGlja2V0X2RldGFpbC5zZW5kXCIpfVxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5vcmRlck51bWJlcn0+XG4gICAgICAgICAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgICAgICAgICB0ZXh0PXt0aWNrZXQ/Lm9yZGVyPy5udW1iZXJ9XG4gICAgICAgICAgICAgICAgICByZXZlcnNlZFxuICAgICAgICAgICAgICAgICAgd2lkdGg9ezE1MH1cbiAgICAgICAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwib3JkZXJfc3VtbWFyeS5jb3B5X29yZGVyX251bWJlclwiKX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUNvbnRhaW5lcn0+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgICAgdmFyaWFudD1cImg0XCJcbiAgICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUluZm9UaXRsZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5hdHRlbmRlZV9pbmZvcm1hdGlvblwiKX1cbiAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICB7dGlja2V0ICYmIChcbiAgICAgICAgICAgICAgICA8VGlja2V0Rm9ybVxuICAgICAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgICAgICBleHRyYVF1ZXN0aW9ucz17ZXh0cmFRdWVzdGlvbnN9XG4gICAgICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgICAgIGNhbkVkaXQ9e2NhbkVkaXRUaWNrZXREYXRhfVxuICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9e29uU2F2ZX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9EcmF3ZXI+XG4gICAgICA8Q3VzdG9tRGlhbG9nXG4gICAgICAgIG9wZW49eyEhc2F2ZU1lc3NhZ2V9XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2VTYXZlTWVzc2FnZX1cbiAgICAgICAgdGl0bGU9e3NhdmVNZXNzYWdlPy50aXRsZX1cbiAgICAgICAgZGVzY3JpcHRpb249e3NhdmVNZXNzYWdlPy5kZXNjcmlwdGlvbn1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59O1xuXG5UaWNrZXREZXRhaWwucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHRpY2tldElkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvcmRlcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvd25lcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldERldGFpbDtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRleHRGaWVsZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgKiBhcyB5dXAgZnJvbSBcInl1cFwiO1xuXG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vLi4vLi4vRm9ybUZvb3RlclwiO1xuXG5jb25zdCBSZWFzc2lnbkZvcm0gPSAoeyBvblN1Ym1pdCwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHtcbiAgICAgIG5ld19hdHRlbmRlZV9lbWFpbDogXCJcIixcbiAgICAgIHBlcnNvbmFsX21lc3NhZ2U6IFwiXCJcbiAgICB9LFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IHl1cC5vYmplY3Qoe1xuICAgICAgbmV3X2F0dGVuZGVlX2VtYWlsOiB5dXBcbiAgICAgICAgLnN0cmluZyh0KFwidmFsaWRhdGlvbi5lbWFpbC5zdHJpbmdcIikpXG4gICAgICAgIC5lbWFpbCh0KFwidmFsaWRhdGlvbi5lbWFpbC5mb3JtYXRcIikpXG4gICAgICAgIC5yZXF1aXJlZCh0KFwidmFsaWRhdGlvbi5lbWFpbC5yZXF1aXJlZFwiKSksXG4gICAgICBwZXJzb25hbF9tZXNzYWdlOiB5dXAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLnRleHQuc3RyaW5nXCIpKVxuICAgIH0pLFxuICAgIG9uU3VibWl0XG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBuYW1lPVwibmV3X2F0dGVuZGVlX2VtYWlsXCJcbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfcmVhc3NpZ24ubmV3X2F0dGVuZGVlX2VtYWlsXCIpfVxuICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5uZXdfYXR0ZW5kZWVfZW1haWx9XG4gICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICBlcnJvcj17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQubmV3X2F0dGVuZGVlX2VtYWlsICYmXG4gICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLm5ld19hdHRlbmRlZV9lbWFpbClcbiAgICAgICAgfVxuICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5uZXdfYXR0ZW5kZWVfZW1haWwgJiYgZm9ybWlrLmVycm9ycy5uZXdfYXR0ZW5kZWVfZW1haWxcbiAgICAgICAgfVxuICAgICAgICByZXF1aXJlZFxuICAgICAgLz5cbiAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG5hbWU9XCJwZXJzb25hbF9tZXNzYWdlXCJcbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfcmVhc3NpZ24ucGVyc29uYWxfbWVzc2FnZVwiKX1cbiAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMucGVyc29uYWxfbWVzc2FnZX1cbiAgICAgICAgbXVsdGlsaW5lXG4gICAgICAgIG1pblJvd3M9ezR9XG4gICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICBlcnJvcj17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQucGVyc29uYWxfbWVzc2FnZSAmJlxuICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5wZXJzb25hbF9tZXNzYWdlKVxuICAgICAgICB9XG4gICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLnBlcnNvbmFsX21lc3NhZ2UgJiYgZm9ybWlrLmVycm9ycy5wZXJzb25hbF9tZXNzYWdlXG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Rm9ybUZvb3RlclxuICAgICAgICBzYXZlTGFiZWw9e3QoXCJ0aWNrZXRfcmVhc3NpZ24uc2F2ZVwiKX1cbiAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfcmVhc3NpZ24uY2FuY2VsXCIpfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgIC8+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuUmVhc3NpZ25Gb3JtLnByb3BUeXBlcyA9IHtcbiAgb25TdWJtaXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlYXNzaWduRm9ybTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyByZWFzc2lnblRpY2tldCwgc2F2ZUV4dHJhUXVlc3Rpb25zIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBSZWFzc2lnbkZvcm0gZnJvbSBcIi4vY29tcG9uZW50cy9SZWFzc2lnbkZvcm1cIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcblxuaW1wb3J0IEFzc2lnbkVRRm9ybSBmcm9tIFwiLi4vQXNzaWduRVFGb3JtXCI7XG5pbXBvcnQgeyB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgfSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IEN1c3RvbURpYWxvZyBmcm9tIFwiLi4vQ3VzdG9tRGlhbG9nXCI7XG5pbXBvcnQgdXNlR2V0VGlja2V0IGZyb20gXCIuLi8uLi9ob29rcy91c2VHZXRUaWNrZXRcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0UmVhc3NpZ24gPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldElkLFxuICBvcmRlcklkLFxuICBvd25lcklkLFxuICBvcGVuLFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbc2F2ZU1lc3NhZ2UsIHNldFNhdmVNZXNzYWdlXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbdGlja2V0UmVhc3NpZ25lZCwgc2V0VGlja2V0UmVhc3NpZ25lZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHsgdGlja2V0LCBleHRyYVF1ZXN0aW9ucyB9ID0gdXNlR2V0VGlja2V0KFxuICAgIHRpY2tldElkLFxuICAgIG9yZGVySWQsXG4gICAgb3duZXJJZCxcbiAgICBvcGVuXG4gICk7XG5cbiAgY29uc3Qgb25SZWFzc2lnbiA9ICh2YWwpID0+IHtcbiAgICBjb25zdCB7IG5ld19hdHRlbmRlZV9lbWFpbCwgcGVyc29uYWxfbWVzc2FnZSB9ID0gdmFsO1xuICAgIHJldHVybiBkaXNwYXRjaChcbiAgICAgIHJlYXNzaWduVGlja2V0KG9yZGVySWQsIHRpY2tldElkLCBuZXdfYXR0ZW5kZWVfZW1haWwsIHBlcnNvbmFsX21lc3NhZ2UpXG4gICAgKS50aGVuKCgpID0+IHtcbiAgICAgIHNldFRpY2tldFJlYXNzaWduZWQodHJ1ZSk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZUVRRm9ybSA9ICgpID0+IHtcbiAgICBzZXRUaWNrZXRSZWFzc2lnbmVkKGZhbHNlKTtcbiAgICBvbkNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZVNhdmVNZXNzYWdlID0gKCkgPT4ge1xuICAgIHNldFNhdmVNZXNzYWdlKG51bGwpO1xuICAgIHNldFRpY2tldFJlYXNzaWduZWQoZmFsc2UpO1xuICAgIHNldFRpbWVvdXQob25DbG9zZSwgTUlMTElTRUNfVE9fU0VDKTtcbiAgfTtcblxuICBjb25zdCBvblNhdmVFUSA9ICh2YWwpID0+IHtcbiAgICBjb25zdCBhbnN3ZXJzID0gdHJhbnNmb3JtQW53ZXJzRm9ybWF0KHZhbCk7XG5cbiAgICByZXR1cm4gZGlzcGF0Y2goc2F2ZUV4dHJhUXVlc3Rpb25zKHRpY2tldCwgYW5zd2VycykpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHNldFNhdmVNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9yZWFzc2lnbi5zYXZpbmdfc3VjY2Vzc1wiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdChcInRpY2tldF9yZWFzc2lnbi5zYXZpbmdfc3VjY2Vzc19kZXNjcmlwdGlvblwiKVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIHNldFNhdmVNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9yZWFzc2lnbi5zYXZpbmdfZXJyb3JcIiksXG4gICAgICAgICAgZGVzY3JpcHRpb246IGVyci50b1N0cmluZygpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IGdldExhYmVscyA9ICgpID0+IHtcbiAgICBpZiAodGlja2V0UmVhc3NpZ25lZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfcmVhc3NpZ24ucmVhc3NpZ25fdGlja2V0XCIpLFxuICAgICAgICBzdWJ0aXRsZTogYCR7dChcInRpY2tldF9yZWFzc2lnbi5yZWFzc2lnbmVkX3RvXCIpfSAke1xuICAgICAgICAgIHRpY2tldD8ub3duZXI/LmVtYWlsXG4gICAgICAgIH1gLFxuICAgICAgICBoZWFkZXJOb3RlOiB0KFwidGlja2V0X3JlYXNzaWduLmNvbXBsZXRlX2luZm9cIilcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiB0KFwidGlja2V0X3JlYXNzaWduLnJlYXNzaWduX3RpY2tldFwiKSxcbiAgICAgIHN1YnRpdGxlOiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfcmVhc3NpZ24uYXNzaWduZWRfdG9cIil9XG4gICAgICAgICAgPGJyIC8+XG4gICAgICAgICAge3RpY2tldD8ub3duZXI/LmVtYWlsfVxuICAgICAgICA8Lz5cbiAgICAgICksXG4gICAgICBoZWFkZXJOb3RlOiB0KFwidGlja2V0X3JlYXNzaWduLmVudGVyX2VtYWlsX25vdGVcIilcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IHsgdGl0bGUsIHN1YnRpdGxlLCBoZWFkZXJOb3RlIH0gPSBnZXRMYWJlbHMoKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8UmlnaHREcmF3ZXJcbiAgICAgICAgaWQ9XCJyZWFzc2lnbkRyYXdlclwiXG4gICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgICAgb3Blbj17b3Blbn1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0UmVhc3NpZ25Db250YWluZXJ9XG4gICAgICA+XG4gICAgICAgIHt0aWNrZXQgJiYgZXh0cmFRdWVzdGlvbnMgJiYgKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8Qm94PlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDRcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9PlxuICAgICAgICAgICAgICAgIHtzdWJ0aXRsZX1cbiAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyTm90ZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtoZWFkZXJOb3RlfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJoNFwiXG4gICAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVJbmZvVGl0bGV9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dGlja2V0Py50eXBlPy5uYW1lfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgIHt0aWNrZXQgJiYgIXRpY2tldFJlYXNzaWduZWQgJiYgKFxuICAgICAgICAgICAgICAgIDxSZWFzc2lnbkZvcm1cbiAgICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgICBvblN1Ym1pdD17b25SZWFzc2lnbn1cbiAgICAgICAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge3RpY2tldCAmJiB0aWNrZXRSZWFzc2lnbmVkICYmIChcbiAgICAgICAgICAgICAgICA8QXNzaWduRVFGb3JtXG4gICAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9e29uU2F2ZUVRfVxuICAgICAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZUVRRm9ybX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L1JpZ2h0RHJhd2VyPlxuICAgICAgPEN1c3RvbURpYWxvZ1xuICAgICAgICBvcGVuPXshIXNhdmVNZXNzYWdlfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlU2F2ZU1lc3NhZ2V9XG4gICAgICAgIHRpdGxlPXtzYXZlTWVzc2FnZT8udGl0bGV9XG4gICAgICAgIGRlc2NyaXB0aW9uPXtzYXZlTWVzc2FnZT8uZGVzY3JpcHRpb259XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuVGlja2V0UmVhc3NpZ24ucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHRpY2tldElkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvcmRlcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvd25lcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFJlYXNzaWduO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQ29udGFpbmVyLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0U3RhdHVzID0gKHsgdGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBpc0FjdGl2ZSA9IHRpY2tldC5pc19hY3RpdmU7XG4gIGNvbnN0IHJlZnVuZFJlcXVlc3RzID0gdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uZmluZChcbiAgICAocikgPT4gci5zdGF0dXMgPT09IFwiUmVxdWVzdGVkXCJcbiAgKTtcbiAgY29uc3QgeyBpc0luY29tcGxldGUsIGlzVW5hc3NpZ25lZCwgaXNDb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lciBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRTdGF0dXNDb250YWluZXJ9PlxuICAgICAge2lzQWN0aXZlID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIHtyZWZ1bmRSZXF1ZXN0cyAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyByZWZ1bmQgcmVxdWVzdGVkXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uUmVmdW5kUmVxdWVzdGVkfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfcmVmdW5kX3JlcXVlc3RlZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzSW5jb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBpbmNvbXBsZXRlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uSW5jb21wbGV0ZX1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2luY29tcGxldGVcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc1VuYXNzaWduZWQgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgdW5hc3NpZ25lZFwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvblVuYXNzaWduZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c191bmFzc2lnbmVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNDb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBjb21wbGV0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNvbXBsZXRlfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfY29tcGxldGVcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICA8Lz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBjYW5jZWxsZWRcIlxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNhbmNlbGxlZH1gfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19jYW5jZWxsZWRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICA8L0NvbnRhaW5lcj5cbiAgKTtcbn07XG5cblRpY2tldFN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIHN0YXR1czogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIHJlZnVuZFJlcXVlc3RzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRTdGF0dXM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRGl2aWRlcixcbiAgVGFicyxcbiAgVGFiLFxuICB1c2VUaGVtZSxcbiAgdXNlTWVkaWFRdWVyeVxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgVEFCUyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBNeU9yZGVyc1RpY2tldHMgZnJvbSBcIi4uL015T3JkZXJzVGlja2V0c1wiO1xuaW1wb3J0IEFzc2lnbmVkVG9NZSBmcm9tIFwiLi4vT3JkZXJzTGlzdC9Bc3NpZ25lZFRvTWVcIjtcblxuY29uc3QgV2lkZ2V0VGFicyA9ICh7IHRpdGxlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbdGFiLCBzZXRUYWJdID0gdXNlU3RhdGUoVEFCUy5PUkRFUlMpO1xuXG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgaXNNb2JpbGUgPSB1c2VNZWRpYVF1ZXJ5KHRoZW1lLmJyZWFrcG9pbnRzLmRvd24oXCJsZ1wiKSk7XG5cbiAgY29uc3QgaGFuZGxlVGFiQ2hhbmdlID0gKF8sIG5ld1RhYikgPT4ge1xuICAgIHNldFRhYihuZXdUYWIpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50YWJXcmFwcGVyfT5cbiAgICAgIDxUYWJzXG4gICAgICAgIHZhbHVlPXt0YWJ9XG4gICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVUYWJDaGFuZ2V9XG4gICAgICAgIHZhcmlhbnQ9e2lzTW9iaWxlID8gXCJmdWxsV2lkdGhcIiA6IFwic3RhbmRhcmRcIn1cbiAgICAgID5cbiAgICAgICAgPFRhYiBsYWJlbD17dChcIm9yZGVycy50aXRsZVwiKX0gdmFsdWU9e1RBQlMuT1JERVJTfSAvPlxuICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLmFzc2lnbmVkX3RvX21lXCIpfSB2YWx1ZT17VEFCUy5USUNLRVRTfSAvPlxuICAgICAgPC9UYWJzPlxuICAgICAgPERpdmlkZXIgLz5cbiAgICAgIDxCb3ggc3g9e3sgcHQ6IDYsIHBiOiAzIH19Pnt0aXRsZX08L0JveD5cbiAgICAgIHt0YWIgPT09IFRBQlMuT1JERVJTICYmIDxNeU9yZGVyc1RpY2tldHMgLz59XG4gICAgICB7dGFiID09PSBUQUJTLlRJQ0tFVFMgJiYgPEFzc2lnbmVkVG9NZSAvPn1cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFdpZGdldFRhYnM7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsLCBjb25uZWN0IH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHtcbiAgcmVzZXRGaWx0ZXIsXG4gIHJlc2V0RXJyb3IsXG4gIGNoYW5nZVNvcnQsXG4gIGNoYW5nZUZpbHRlclxufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IEN1c3RvbVRoZW1lIGZyb20gXCIuLi9DdXN0b21UaGVtZVwiO1xuaW1wb3J0IExvYWRlciBmcm9tIFwiLi4vTG9hZGVyXCI7XG5pbXBvcnQgQ3VzdG9tRGlhbG9nQ29udGV4dCBmcm9tIFwiLi4vQ3VzdG9tRGlhbG9nL0NvbnRleHRcIjtcbmltcG9ydCBDdXN0b21EaWFsb2cgZnJvbSBcIi4uL0N1c3RvbURpYWxvZ1wiO1xuXG5pbXBvcnQgRmlsdGVycyBmcm9tIFwiLi4vRmlsdGVyc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IFdpZGdldFRhYnMgZnJvbSBcIi4uL1dpZGdldFRhYnNcIjtcbmltcG9ydCBTdW1taXRIZWFkZXIgZnJvbSBcIi4uL1N1bW1pdEhlYWRlclwiO1xuXG5jb25zdCBXaWRnZXRXcmFwcGVyID0gKCkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW21lc3NhZ2UsIHNldE1lc3NhZ2VdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFttZXNzYWdlQ2FsbGJhY2ssIHNldE1lc3NhZ2VDYWxsYmFja10gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3Qge1xuICAgIGxvYWRpbmcsXG4gICAgYXBpRXJyb3IsXG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBvblJlc2V0ID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0RmlsdGVyKCkpO1xuICB9O1xuXG4gIGNvbnN0IHJlc2V0QXBpRXJyb3IgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRFcnJvcigpKTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhcGlFcnJvcikge1xuICAgICAgc2V0TWVzc2FnZShhcGlFcnJvcik7XG4gICAgICBzZXRNZXNzYWdlQ2FsbGJhY2socmVzZXRBcGlFcnJvcik7XG4gICAgfVxuICB9LCBbYXBpRXJyb3JdKTtcblxuICBjb25zdCBvbkZpbHRlciA9IChmaWx0ZXJWYWx1ZSkgPT4ge1xuICAgIGRpc3BhdGNoKGNoYW5nZUZpbHRlcihmaWx0ZXJWYWx1ZSkpO1xuICB9O1xuXG4gIGNvbnN0IG9uU29ydCA9IChzb3J0VmFsdWUpID0+IHtcbiAgICBkaXNwYXRjaChjaGFuZ2VTb3J0KHNvcnRWYWx1ZSkpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEN1c3RvbVRoZW1lPlxuICAgICAgPExvYWRlciBvcGVuPXtsb2FkaW5nfSAvPlxuICAgICAgPEN1c3RvbURpYWxvZ1xuICAgICAgICBvcGVuPXshIW1lc3NhZ2V9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHtcbiAgICAgICAgICBzZXRNZXNzYWdlKG51bGwpO1xuICAgICAgICAgIGlmIChtZXNzYWdlQ2FsbGJhY2spIG1lc3NhZ2VDYWxsYmFjaygpO1xuICAgICAgICB9fVxuICAgICAgICBib2R5PXttZXNzYWdlPy5ib2R5fVxuICAgICAgICB0aXRsZT17bWVzc2FnZT8udGl0bGV9XG4gICAgICAvPlxuICAgICAgPEZpbHRlcnNcbiAgICAgICAgb25GaWx0ZXI9e29uRmlsdGVyfVxuICAgICAgICBvblNvcnQ9e29uU29ydH1cbiAgICAgICAgb25TZWFyY2g9e29uRmlsdGVyfVxuICAgICAgICBvblJlc2V0PXtvblJlc2V0fVxuICAgICAgLz5cbiAgICAgIDxCb3ggc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX0+XG4gICAgICAgIDxoMyBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRzVGl0bGVUZXh0fT5cbiAgICAgICAgICB7ZmlsdGVyVmFsdWVzXG4gICAgICAgICAgICA/IHQoXCJsYWJlbHMuc2VhcmNoX3Jlc3VsdHNcIiwgeyBmaWx0ZXI6IGZpbHRlclZhbHVlcyB9KVxuICAgICAgICAgICAgOiB0KFwibGFiZWxzLnRpY2tldHNcIil9XG4gICAgICAgIDwvaDM+XG4gICAgICA8L0JveD5cbiAgICAgIDxDdXN0b21EaWFsb2dDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXsoc2V0TWVzc2FnZSwgc2V0TWVzc2FnZUNhbGxiYWNrKX0+XG4gICAgICAgIDxXaWRnZXRUYWJzIHRpdGxlPXs8U3VtbWl0SGVhZGVyIC8+fSAvPlxuICAgICAgPC9DdXN0b21EaWFsb2dDb250ZXh0LlByb3ZpZGVyPlxuICAgIDwvQ3VzdG9tVGhlbWU+XG4gICk7XG59O1xuXG5jb25zdCBtYXBTdGF0ZVRvUHJvcHMgPSAoeyB3aWRnZXRTdGF0ZSB9KSA9PiAoe1xuICBzb3J0OiB3aWRnZXRTdGF0ZS5zb3J0LFxuICBmaWx0ZXI6IHdpZGdldFN0YXRlLmZpbHRlclxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGNvbm5lY3QobWFwU3RhdGVUb1Byb3BzLCB7fSkoV2lkZ2V0V3JhcHBlcik7XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgZ2V0RXh0cmFRdWVzdGlvbnMsIGdldFRpY2tldCB9IGZyb20gXCIuLi9hY3Rpb25zXCI7XG5cbmNvbnN0IHVzZUdldFRpY2tldCA9ICh0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgcnVuKSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aWNrZXRJZCAmJiBvcmRlcklkICYmIG93bmVySWQgJiYgcnVuKSB7XG4gICAgICBkaXNwYXRjaChnZXRUaWNrZXQodGlja2V0SWQsIG9yZGVySWQpKTtcbiAgICAgIGRpc3BhdGNoKGdldEV4dHJhUXVlc3Rpb25zKG93bmVySWQpKTtcbiAgICB9XG4gIH0sIFt0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgcnVuXSk7XG5cbiAgY29uc3QgeyBleHRyYVF1ZXN0aW9ucywgY3VycmVudFRpY2tldDogdGlja2V0IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlXG4gICk7XG5cbiAgcmV0dXJuIHsgdGlja2V0LCBleHRyYVF1ZXN0aW9ucyB9O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgdXNlR2V0VGlja2V0O1xuIiwiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5cbi8vIFNtb290aCBzY3JvbGxpbmcgZnVuY3Rpb24gdXNpbmcgcmVxdWVzdEFuaW1hdGlvbkZyYW1lXG5mdW5jdGlvbiBzbW9vdGhTY3JvbGxUbyhjb250YWluZXIsIHRhcmdldFNjcm9sbFRvcCwgZHVyYXRpb24pIHtcbiAgY29uc3Qgc3RhcnRTY3JvbGxUb3AgPSBjb250YWluZXIuc2Nyb2xsVG9wO1xuICBjb25zdCBkaXN0YW5jZSA9IHRhcmdldFNjcm9sbFRvcCAtIHN0YXJ0U2Nyb2xsVG9wO1xuICBsZXQgc3RhcnRUaW1lID0gbnVsbDtcblxuICBmdW5jdGlvbiBhbmltYXRpb25TdGVwKHRpbWVzdGFtcCkge1xuICAgIGlmICghc3RhcnRUaW1lKSBzdGFydFRpbWUgPSB0aW1lc3RhbXA7XG4gICAgY29uc3QgZWxhcHNlZCA9IHRpbWVzdGFtcCAtIHN0YXJ0VGltZTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgY29uc3QgcHJvZ3Jlc3MgPSBNYXRoLm1pbihlbGFwc2VkIC8gZHVyYXRpb24sIDEpO1xuICAgIGNvbnN0IGVhc2VJbk91dFF1YWQgPVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICAgIHByb2dyZXNzIDwgMC41ID8gMiAqIHByb2dyZXNzICoqIDIgOiAxIC0gKC0yICogcHJvZ3Jlc3MgKyAyKSAqKiAyIC8gMjtcblxuICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgPSBzdGFydFNjcm9sbFRvcCArIGRpc3RhbmNlICogZWFzZUluT3V0UXVhZDtcblxuICAgIGlmIChlbGFwc2VkIDwgZHVyYXRpb24pIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRpb25TdGVwKTtcbiAgICB9XG4gIH1cblxuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0aW9uU3RlcCk7XG59XG5cbmNvbnN0IHVzZVNjcm9sbFRvRXJyb3IgPSAoZm9ybWlrLCBjb250YWluZXJJZCkgPT4ge1xuICBjb25zdCB7IGVycm9ycywgaXNWYWxpZCwgaXNTdWJtaXR0aW5nIH0gPSBmb3JtaWs7XG4gIGNvbnN0IGVycm9yQXJyYXkgPSBPYmplY3Qua2V5cyhlcnJvcnMpO1xuICBjb25zdCBlcnJvckNvdW50ID0gZXJyb3JBcnJheS5sZW5ndGg7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNWYWxpZCB8fCBlcnJvckNvdW50ID09PSAwKSByZXR1cm47XG5cbiAgICAvLyBzb3J0IGVsZW1lbnRzIGJ5IHBvc2l0aW9uXG4gICAgY29uc3QgZWxlbWVudHNTb3J0ZWQgPSBlcnJvckFycmF5XG4gICAgICAucmVkdWNlKChyZXN1bHQsIGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBpbnB1dFtuYW1lPScke2Vycm9yfSddYCk7XG4gICAgICAgIGlmICghZWxlbWVudCkgcmV0dXJuIHJlc3VsdDtcblxuICAgICAgICBjb25zdCBlbFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICByZXN1bHQucHVzaCh7IGVsZW1lbnQsIGVycm9yLCB0b3A6IGVsUmVjdC50b3AgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0sIFtdKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGEudG9wIC0gYi50b3ApO1xuXG4gICAgaWYgKGVsZW1lbnRzU29ydGVkLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnRcbiAgICAgIC5nZXRFbGVtZW50QnlJZChjb250YWluZXJJZClcbiAgICAgIC5xdWVyeVNlbGVjdG9yKFwiLk11aURyYXdlci1wYXBlclwiKTtcbiAgICBjb25zdCB0YXJnZXQgPSBlbGVtZW50c1NvcnRlZFswXTtcblxuICAgIGlmIChjb250YWluZXI/LmNvbnRhaW5zKHRhcmdldC5lbGVtZW50KSkge1xuICAgICAgY29uc3QgY29udGFpbmVyUmVjdCA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBvZmZzZXQgb2YgdGhlIHRhcmdldCBlbGVtZW50IHJlbGF0aXZlIHRvIHRoZSBjb250YWluZXJcbiAgICAgIGNvbnN0IGVsZW1PZmZlc3QgPSAxMDA7XG4gICAgICBjb25zdCBhbmltYXRpb25EdXJhdGlvbiA9IDUwMDtcbiAgICAgIGNvbnN0IHNjcm9sbFRvcCA9XG4gICAgICAgIHRhcmdldC50b3AgLSBjb250YWluZXJSZWN0LnRvcCArIGNvbnRhaW5lci5zY3JvbGxUb3AgLSBlbGVtT2ZmZXN0O1xuXG4gICAgICAvLyBTY3JvbGwgdGhlIGNvbnRhaW5lciB0byB0aGUgdGFyZ2V0IGVsZW1lbnQncyBwb3NpdGlvblxuICAgICAgc21vb3RoU2Nyb2xsVG8oY29udGFpbmVyLCBzY3JvbGxUb3AsIGFuaW1hdGlvbkR1cmF0aW9uKTsgLy8gNTAwbXMgZHVyYXRpb25cbiAgICB9XG4gIH0sIFtpc1N1Ym1pdHRpbmddKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHVzZVNjcm9sbFRvRXJyb3I7XG4iLCJpbXBvcnQgeyBpc1RpY2tldFJlZnVuZGFibGUgfSBmcm9tIFwiLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19DT01QTEVURSA9IFwiQ29tcGxldGVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfSU5DT01QTEVURSA9IFwiSW5jb21wbGV0ZVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19DQU5DRUxMRUQgPSBcIkNhbmNlbGxlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19VTkFTU0lHTkVEID0gXCJVbmFzc2lnbmVkXCI7XG5cbmV4cG9ydCBjb25zdCB1c2VUaWNrZXREZXRhaWxzID0gKHRpY2tldCkgPT4ge1xuICBjb25zdCBnZXRTdGF0dXMgPSAoKSA9PiB7XG4gICAgaWYgKCF0aWNrZXQuaXNfYWN0aXZlKSByZXR1cm4gU1RBVFVTX0NBTkNFTExFRDtcbiAgICBpZiAodGlja2V0Lm93bmVyX2lkID09PSAwKSByZXR1cm4gU1RBVFVTX1VOQVNTSUdORUQ7XG4gICAgaWYgKCF0aWNrZXQub3duZXI/LmZpcnN0X25hbWUgfHwgIXRpY2tldC5vd25lcj8ubGFzdF9uYW1lKVxuICAgICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuICAgIHJldHVybiB0aWNrZXQub3duZXIuc3RhdHVzO1xuICB9O1xuXG4gIGlmICghdGlja2V0KSByZXR1cm4ge307XG5cbiAgY29uc3Qgc3RhdHVzID0gZ2V0U3RhdHVzKCk7XG4gIGNvbnN0IGlzQWN0aXZlID0gdGlja2V0LmlzX2FjdGl2ZSAmJiBzdGF0dXMgIT09IFNUQVRVU19DQU5DRUxMRUQ7XG4gIGNvbnN0IGlzUmVmdW5kYWJsZSA9IGlzVGlja2V0UmVmdW5kYWJsZSh0aWNrZXQpO1xuICBjb25zdCBhbGxvd3NEZWxlZ2F0ZSA9XG4gICAgKHRpY2tldD8udGlja2V0X3R5cGU/LmFsbG93c190b19kZWxlZ2F0ZSB8fFxuICAgICAgdGlja2V0Py5wcm9tb19jb2RlPy5hbGxvd3NfdG9fZGVsZWdhdGUpICYmXG4gICAgc3RhdHVzICE9PSBTVEFUVVNfVU5BU1NJR05FRCAmJlxuICAgICF0aWNrZXQub3duZXI/Lm1hbmFnZXI/LmlkICYmXG4gICAgIXRpY2tldC5vd25lcj8ubWFuYWdlcl9pZDtcbiAgY29uc3QgaXNDb21wbGV0ZSA9IHN0YXR1cyA9PT0gU1RBVFVTX0NPTVBMRVRFO1xuICBjb25zdCBpc1VuYXNzaWduZWQgPSBzdGF0dXMgPT09IFNUQVRVU19VTkFTU0lHTkVEO1xuICBjb25zdCBpc0luY29tcGxldGUgPSBzdGF0dXMgPT09IFNUQVRVU19JTkNPTVBMRVRFO1xuICBjb25zdCBjYW5SZWFzc2lnbiA9XG4gICAgIWlzVW5hc3NpZ25lZCAmJlxuICAgIHRpY2tldC50aWNrZXRfdHlwZT8uYWxsb3dzX3RvX3JlYXNzaWduICYmXG4gICAgKCF0aWNrZXQucHJvbW9fY29kZSB8fCB0aWNrZXQucHJvbW9fY29kZT8uYWxsb3dzX3RvX3JlYXNzaWduKTtcblxuICByZXR1cm4ge1xuICAgIHN0YXR1cyxcbiAgICBpc0NvbXBsZXRlLFxuICAgIGlzVW5hc3NpZ25lZCxcbiAgICBpc0luY29tcGxldGUsXG4gICAgaXNBY3RpdmUsXG4gICAgaXNSZWZ1bmRhYmxlLFxuICAgIGFsbG93c0RlbGVnYXRlLFxuICAgIGNhblJlYXNzaWduXG4gIH07XG59O1xuIiwiaW1wb3J0IGkxOG4gZnJvbSBcImkxOG5leHRcIjtcbmltcG9ydCB7IGluaXRSZWFjdEkxOG5leHQgfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IExhbmd1YWdlRGV0ZWN0b3IgZnJvbSBcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCI7XG5pbXBvcnQgZW4gZnJvbSBcIi4vbG9jYWxlcy9lbi5qc29uXCI7XG5pbXBvcnQgZXMgZnJvbSBcIi4vbG9jYWxlcy9lcy5qc29uXCI7XG5cbi8vIGltcG9ydCBCYWNrZW5kIGZyb20gJ2kxOG5leHQtaHR0cC1iYWNrZW5kJztcbi8vIGRvbid0IHdhbnQgdG8gdXNlIHRoaXM/XG4vLyBoYXZlIGEgbG9vayBhdCB0aGUgUXVpY2sgc3RhcnQgZ3VpZGVcbi8vIGZvciBwYXNzaW5nIGluIGxuZyBhbmQgdHJhbnNsYXRpb25zIG9uIGluaXRcblxuaTE4blxuICAvLyBsb2FkIHRyYW5zbGF0aW9uIHVzaW5nIGh0dHAgLT4gc2VlIC9wdWJsaWMvbG9jYWxlcyAoaS5lLiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9yZWFjdC1pMThuZXh0L3RyZWUvbWFzdGVyL2V4YW1wbGUvcmVhY3QvcHVibGljL2xvY2FsZXMpXG4gIC8vIGxlYXJuIG1vcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L2kxOG5leHQtaHR0cC1iYWNrZW5kXG4gIC8vIHdhbnQgeW91ciB0cmFuc2xhdGlvbnMgdG8gYmUgbG9hZGVkIGZyb20gYSBwcm9mZXNzaW9uYWwgQ0ROPyA9PiBodHRwczovL2dpdGh1Yi5jb20vbG9jaXplL3JlYWN0LXR1dG9yaWFsI3N0ZXAtMi0tLXVzZS10aGUtbG9jaXplLWNkblxuICAvLyAudXNlKEJhY2tlbmQpXG4gIC8vIGRldGVjdCB1c2VyIGxhbmd1YWdlXG4gIC8vIGxlYXJuIG1vcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L2kxOG5leHQtYnJvd3Nlci1sYW5ndWFnZURldGVjdG9yXG4gIC51c2UoTGFuZ3VhZ2VEZXRlY3RvcilcbiAgLy8gcGFzcyB0aGUgaTE4biBpbnN0YW5jZSB0byByZWFjdC1pMThuZXh0LlxuICAudXNlKGluaXRSZWFjdEkxOG5leHQpXG4gIC8vIGluaXQgaTE4bmV4dFxuICAvLyBmb3IgYWxsIG9wdGlvbnMgcmVhZDogaHR0cHM6Ly93d3cuaTE4bmV4dC5jb20vb3ZlcnZpZXcvY29uZmlndXJhdGlvbi1vcHRpb25zXG4gIC5pbml0KHtcbiAgICBmYWxsYmFja0xuZzogXCJlblwiLFxuICAgIGRlYnVnOiBmYWxzZSxcbiAgICByZXNvdXJjZXM6IHtcbiAgICAgIGVuOiB7IHRyYW5zbGF0aW9uOiBlbiB9LFxuICAgICAgZXM6IHsgdHJhbnNsYXRpb246IGVzIH1cbiAgICB9LFxuICAgIGludGVycG9sYXRpb246IHtcbiAgICAgIGVzY2FwZVZhbHVlOiBmYWxzZSAvLyBub3QgbmVlZGVkIGZvciByZWFjdCBhcyBpdCBlc2NhcGVzIGJ5IGRlZmF1bHRcbiAgICB9XG4gIH0pO1xuXG5leHBvcnQgZGVmYXVsdCBpMThuO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCB7IExPR09VVF9VU0VSIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiO1xuaW1wb3J0IHtcbiAgU1RBUlRfTE9BRElORyxcbiAgU1RPUF9MT0FESU5HLFxuICBSRVNFVF9MT0FESU5HXG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIjtcbmltcG9ydCB7XG4gIFJFU0VUX1NUQVRFLFxuICBSRVNFVF9GSUxURVIsXG4gIFNFVF9TVEFURSxcbiAgU0VUX1VTRVIsXG4gIEdFVF9VU0VSX09SREVSUyxcbiAgR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMsXG4gIEdFVF9USUNLRVRTX0JZX09SREVSLFxuICBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVELFxuICBSRUNFSVZFX1RJQ0tFVCxcbiAgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMsXG4gIFVQREFURV9USUNLRVQsXG4gIEFTU0lHTl9USUNLRVQsXG4gIFJFU0VUX0FQSV9FUlJPUixcbiAgU0VUX0FQSV9FUlJPUixcbiAgUkVTRVRfVElDS0VULFxuICBDSEFOR0VfRklMVEVSLFxuICBDSEFOR0VfU09SVCxcbiAgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFLFxuICBGSUxURVJfVkFSX09SREVSX05VTUJFUixcbiAgRklMVEVSX1ZBUl9EQVRFLFxuICBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFLFxuICBGSUxURVJfVkFSX0ZSRUVfUEFJRCxcbiAgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMsXG4gIEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVELFxuICBGSUxURVJfVkFSX1BST01PQ09ERVxufSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBGSVJTVF9QQUdFLCBUQUJTIH0gZnJvbSBcIi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBoYXNMb2FkZWRBbGxEYXRhIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgREVGQVVMVF9GSUxURVJfU1RBVEUgPSB7XG4gIFtGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVdOiBbXSxcbiAgW0ZJTFRFUl9WQVJfVElDS0VUX1RZUEVdOiBbXSxcbiAgW0ZJTFRFUl9WQVJfRlJFRV9QQUlEXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfUFJPTU9DT0RFXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfREFURV06IG51bGxcbn07XG5cbmNvbnN0IERFRkFVTFRfU1RBVEUgPSB7XG4gIHN1bW1pdDogbnVsbCxcbiAgdXNlcjoge30sXG4gIHdpZGdldExvYWRpbmc6IGZhbHNlLFxuICBtZW1iZXJPcmRlcnM6IFtdLFxuICB1c2VyVGlja2V0czogW10sXG4gIGV4dHJhUXVlc3Rpb25zOiBbXSxcbiAgY3VycmVudFRpY2tldDogbnVsbCxcbiAgZXJyb3JzOiB7fSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGN1cnJlbnRfdGFiOiBUQUJTLk9SREVSUyxcbiAgc29ydDoge30sXG4gIGZpbHRlcjogREVGQVVMVF9GSUxURVJfU1RBVEUsXG4gIGlzT3JkZXJMb2FkaW5nOiBmYWxzZSxcbiAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMCxcbiAgb3JkZXJzX2xhc3RfcGFnZTogMCxcbiAgb3JkZXJzX3Blcl9wYWdlOiA1LFxuICBvcmRlcnNfdG90YWw6IDAsXG4gIHRpY2tldF9jdXJyZW50X3BhZ2U6IDAsXG4gIHRpY2tldF9sYXN0X3BhZ2U6IDAsXG4gIHRpY2tldF9wZXJfcGFnZTogNSxcbiAgdGlja2V0X3RvdGFsOiAwLFxuICB1c2VyX3RpY2tldHNfdG90YWw6IDAsXG4gIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2U6IDAsXG4gIHVzZXJfdGlja2V0c19sYXN0X3BhZ2U6IDAsXG4gIGFwaUVycm9yOiBudWxsXG59O1xuXG5jb25zdCBXaWRnZXRSZWR1Y2VyID0gKHN0YXRlID0gREVGQVVMVF9TVEFURSwgeyB0eXBlLCBwYXlsb2FkIH0gPSB7fSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIExPR09VVF9VU0VSOlxuICAgIGNhc2UgUkVTRVRfU1RBVEU6XG4gICAgICByZXR1cm4gREVGQVVMVF9TVEFURTtcbiAgICBjYXNlIFNUQVJUX0xPQURJTkc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbG9hZGluZzogdHJ1ZSB9O1xuICAgIGNhc2UgU1RPUF9MT0FESU5HOlxuICAgIGNhc2UgUkVTRVRfTE9BRElORzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBsb2FkaW5nOiBmYWxzZSB9O1xuICAgIGNhc2UgUkVTRVRfQVBJX0VSUk9SOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGFwaUVycm9yOiBudWxsIH07XG4gICAgY2FzZSBSRVNFVF9GSUxURVI6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZmlsdGVyOiBERUZBVUxUX0ZJTFRFUl9TVEFURSxcbiAgICAgICAgc29ydDoge30sXG4gICAgICAgIG9yZGVyc19jdXJyZW50X3BhZ2U6IDEsXG4gICAgICAgIG9yZGVyc19sYXN0X3BhZ2U6IDFcbiAgICAgIH07XG4gICAgY2FzZSBTRVRfU1RBVEU6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgLi4ucGF5bG9hZCB9O1xuICAgIGNhc2UgU0VUX0FQSV9FUlJPUjoge1xuICAgICAgY29uc3QgeyB0aXRsZSwgaHRtbDogYm9keSB9ID0gcGF5bG9hZDtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBhcGlFcnJvcjogeyB0aXRsZSwgYm9keSB9IH07XG4gICAgfVxuICAgIGNhc2UgU0VUX1VTRVI6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgdXNlcjogcGF5bG9hZCB9O1xuICAgIGNhc2UgQ0hBTkdFX0ZJTFRFUjoge1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGZpbHRlcjogeyAuLi5zdGF0ZS5maWx0ZXIsIC4uLnBheWxvYWQgfSB9O1xuICAgIH1cbiAgICBjYXNlIENIQU5HRV9TT1JUOiB7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgc29ydDogeyAuLi5wYXlsb2FkIH0gfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfVVNFUl9PUkRFUlM6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSwgbGFzdF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuXG4gICAgICBpZiAoaGFzTG9hZGVkQWxsRGF0YShjdXJyZW50X3BhZ2UsIG1lbWJlck9yZGVycywgdG90YWwpKSByZXR1cm4gc3RhdGU7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtZW1iZXJPcmRlcnM6XG4gICAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFID8gZGF0YSA6IFsuLi5tZW1iZXJPcmRlcnMsIC4uLmRhdGFdLFxuICAgICAgICBvcmRlcnNfdG90YWw6IHRvdGFsLFxuICAgICAgICBvcmRlcnNfY3VycmVudF9wYWdlOiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIG9yZGVyc19sYXN0X3BhZ2U6IGxhc3RfcGFnZVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfTVlfQVNTSUdORURfVElDS0VUUzoge1xuICAgICAgY29uc3QgeyB1c2VyVGlja2V0cyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcblxuICAgICAgaWYgKGhhc0xvYWRlZEFsbERhdGEoY3VycmVudF9wYWdlLCB1c2VyVGlja2V0cywgdG90YWwpKSByZXR1cm4gc3RhdGU7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICB1c2VyVGlja2V0czpcbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0UgPyBkYXRhIDogWy4uLnVzZXJUaWNrZXRzLCAuLi5kYXRhXSxcbiAgICAgICAgdXNlcl90aWNrZXRzX3RvdGFsOiB0b3RhbCxcbiAgICAgICAgdXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZTogY3VycmVudF9wYWdlLFxuICAgICAgICB1c2VyX3RpY2tldHNfbGFzdF9wYWdlOiBsYXN0X3BhZ2VcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgR0VUX1RJQ0tFVFNfQllfT1JERVI6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSwgbGFzdF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgY29uc3QgZm9ybWVyT3JkZXIgPSBtZW1iZXJPcmRlcnMuZmluZCgobykgPT4gby5pZCA9PT0gZGF0YVswXT8ub3JkZXJfaWQpO1xuXG4gICAgICBpZiAoaGFzTG9hZGVkQWxsRGF0YShjdXJyZW50X3BhZ2UsIGZvcm1lck9yZGVyPy5tZW1iZXJUaWNrZXRzLCB0b3RhbCkpXG4gICAgICAgIHJldHVybiBzdGF0ZTtcblxuICAgICAgY29uc3QgdXBkYXRlZE9yZGVyID0ge1xuICAgICAgICAuLi5mb3JtZXJPcmRlcixcbiAgICAgICAgbWVtYmVyVGlja2V0czpcbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0VcbiAgICAgICAgICAgID8gZGF0YVxuICAgICAgICAgICAgOiBbLi4uZm9ybWVyT3JkZXIubWVtYmVyVGlja2V0cywgLi4uZGF0YV0sXG4gICAgICAgIHRpY2tldHNfcGFnZV9jdXJyZW50OiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIHRpY2tldHNfcGFnZV9sYXN0OiBsYXN0X3BhZ2UsXG4gICAgICAgIHRpY2tldHNfdG90YWw6IHRvdGFsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRDoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgdGlja2V0c1JlZnVuZFJlcXVlc3RlZCA9IHBheWxvYWQ7XG4gICAgICBjb25zdCBvcmRlciA9IG1lbWJlck9yZGVycy5maW5kKFxuICAgICAgICAobykgPT4gby5pZCA9PT0gdGlja2V0c1JlZnVuZFJlcXVlc3RlZFswXT8ub3JkZXJfaWRcbiAgICAgICk7XG4gICAgICBjb25zdCB1cGRhdGVkVGlja2V0cyA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzLm1hcChcbiAgICAgICAgKHRpY2tldCkgPT5cbiAgICAgICAgICB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkLmZpbmQoKHRycikgPT4gdHJyLmlkID09PSB0aWNrZXQuaWQpIHx8IHRpY2tldFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRPcmRlciA9IHtcbiAgICAgICAgLi4ub3JkZXIsXG4gICAgICAgIG1lbWJlclRpY2tldHM6IHVwZGF0ZWRUaWNrZXRzXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgUkVTRVRfVElDS0VUOiB7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgY3VycmVudFRpY2tldDogbnVsbCB9O1xuICAgIH1cbiAgICBjYXNlIFJFQ0VJVkVfVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXQgPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGN1cnJlbnRUaWNrZXQ6IHRpY2tldCB9O1xuICAgIH1cbiAgICBjYXNlIFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TOiB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgZXh0cmFRdWVzdGlvbnM6IGRhdGEgfTtcbiAgICB9XG4gICAgY2FzZSBVUERBVEVfVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXREYXRhID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IG5ld09yZGVycyA9IHN0YXRlLm1lbWJlck9yZGVycy5tYXAoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1RpY2tldHMgPSBvcmRlci5tZW1iZXJUaWNrZXRzLm1hcCgodGlja2V0KSA9PiB7XG4gICAgICAgICAgaWYgKHRpY2tldC5pZCA9PT0gdGlja2V0RGF0YS5pZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRpY2tldERhdGE7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aWNrZXQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB7IC4uLm9yZGVyLCBtZW1iZXJUaWNrZXRzOiBuZXdUaWNrZXRzIH07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIG1lbWJlck9yZGVyczogbmV3T3JkZXJzIH07XG4gICAgfVxuICAgIGNhc2UgQVNTSUdOX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0RGF0YSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBuZXdPcmRlcnMgPSBzdGF0ZS5tZW1iZXJPcmRlcnMubWFwKChvcmRlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXdUaWNrZXRzID0gb3JkZXIubWVtYmVyVGlja2V0cy5tYXAoKHRpY2tldCkgPT4ge1xuICAgICAgICAgIGlmICh0aWNrZXQuaWQgPT09IHRpY2tldERhdGEuaWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aWNrZXREYXRhO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGlja2V0O1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4geyAuLi5vcmRlciwgbWVtYmVyVGlja2V0czogbmV3VGlja2V0cyB9O1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBjdXJyZW50VGlja2V0OiB0aWNrZXREYXRhLCBtZW1iZXJPcmRlcnM6IG5ld09yZGVycyB9O1xuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHN0YXRlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXaWRnZXRSZWR1Y2VyO1xuIiwiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY29uZmlndXJlU3RvcmUgfSBmcm9tIFwiQHJlZHV4anMvdG9vbGtpdFwiO1xuaW1wb3J0IHtcbiAgcGVyc2lzdFN0b3JlLFxuICBwZXJzaXN0UmVkdWNlcixcbiAgRkxVU0gsXG4gIFJFSFlEUkFURSxcbiAgUEFVU0UsXG4gIFBFUlNJU1QsXG4gIFBVUkdFLFxuICBSRUdJU1RFUlxufSBmcm9tIFwicmVkdXgtcGVyc2lzdFwiO1xuaW1wb3J0IHN0b3JhZ2UgZnJvbSBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIjtcbmltcG9ydCB7IGNvbWJpbmVSZWR1Y2VycyB9IGZyb20gXCJyZWR1eFwiO1xuaW1wb3J0IFdpZGdldFJlZHVjZXIgZnJvbSBcIi4vcmVkdWNlclwiO1xuXG5leHBvcnQgY29uc3QgZ2V0U3RvcmUgPSAoe1xuICBjbGllbnRJZCxcbiAgbG9naW5VcmwsXG4gIHN1bW1pdCxcbiAgYXBpQmFzZVVybCxcbiAgdXBkYXRlUHJvZmlsZVxufSkgPT4ge1xuICAvLyB0byBhZGQgb3RoZXIgcmVkdWNlcnMgbGF0ZXJcbiAgY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICAgIHdpZGdldFN0YXRlOiBXaWRnZXRSZWR1Y2VyXG4gIH0pO1xuXG4gIGNvbnN0IHN0b3JlID0gY29uZmlndXJlU3RvcmUoe1xuICAgIHJlZHVjZXI6IHBlcnNpc3RSZWR1Y2VyKFxuICAgICAge1xuICAgICAgICBrZXk6IGByb290X215X29yZGVyc190aWNrZXRzXyR7Y2xpZW50SWR9YCxcbiAgICAgICAgc3RvcmFnZVxuICAgICAgfSxcbiAgICAgIHJlZHVjZXJzXG4gICAgKSxcbiAgICBtaWRkbGV3YXJlOiAoZ2V0RGVmYXVsdE1pZGRsZXdhcmUpID0+XG4gICAgICBnZXREZWZhdWx0TWlkZGxld2FyZSh7XG4gICAgICAgIHRodW5rOiB7XG4gICAgICAgICAgZXh0cmFBcmd1bWVudDoge1xuICAgICAgICAgICAgY2xpZW50SWQsXG4gICAgICAgICAgICBhcGlCYXNlVXJsLFxuICAgICAgICAgICAgc3VtbWl0LFxuICAgICAgICAgICAgbG9naW5VcmwsXG4gICAgICAgICAgICB1cGRhdGVQcm9maWxlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpbW11dGFibGVDaGVjazogZmFsc2UsXG4gICAgICAgIHNlcmlhbGl6YWJsZUNoZWNrOiB7XG4gICAgICAgICAgaWdub3JlZEFjdGlvbnM6IFtGTFVTSCwgUkVIWURSQVRFLCBQQVVTRSwgUEVSU0lTVCwgUFVSR0UsIFJFR0lTVEVSXVxuICAgICAgICB9XG4gICAgICB9KVxuICB9KTtcblxuICByZXR1cm4gc3RvcmU7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlSW5pdFN0b3JlID0gKGNvbmZpZykgPT4ge1xuICBjb25zdCBzdG9yZSA9IHVzZU1lbW8oKCkgPT4gZ2V0U3RvcmUoY29uZmlnKSwgW10pO1xuICBjb25zdCBwZXJzaXN0b3IgPSB1c2VNZW1vKCgpID0+IHBlcnNpc3RTdG9yZShzdG9yZSksIFtzdG9yZV0pO1xuXG4gIHJldHVybiB7XG4gICAgc3RvcmUsXG4gICAgcGVyc2lzdG9yXG4gIH07XG59O1xuIiwiaW1wb3J0IHtcbiAgaW5pdExvZ091dCxcbiAgZ2V0QWNjZXNzVG9rZW5cbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0ICogYXMgU2VudHJ5IGZyb20gXCJAc2VudHJ5L3JlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCBnZXRBY2Nlc3NUb2tlblNhZmVseSA9IGFzeW5jICgpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZ2V0QWNjZXNzVG9rZW4oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUubG9nKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0OjpnZXRBY2Nlc3NUb2tlblNhZmVseSBlcnJvcjogXCIsIGUpO1xuICAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKGUpO1xuICAgIGluaXRMb2dPdXQoKTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgfVxufTtcbiIsImV4cG9ydCBjb25zdCBMQVNUX0hPVVJfT0ZfMjRfSE9VUiA9IDIzO1xuZXhwb3J0IGNvbnN0IExBU1RfTUlOVVRFX09GX0hPVVIgPSA1OTtcbmV4cG9ydCBjb25zdCBPTkVfUEFHRV9ORVhUID0gMTtcbmV4cG9ydCBjb25zdCBNSUxMSVNFQ19UT19TRUMgPSAxMDAwO1xuZXhwb3J0IGNvbnN0IE9ORV9EQVkgPSAxO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgPSA1O1xuZXhwb3J0IGNvbnN0IEZJUlNUX1BBR0UgPSAxO1xuZXhwb3J0IGNvbnN0IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCA9IDU7XG5leHBvcnQgY29uc3QgU1RFUF9PTkUgPSAxO1xuZXhwb3J0IGNvbnN0IFNURVBfVFdPID0gMjtcbmV4cG9ydCBjb25zdCBTVEVQX1RIUkVFID0gMztcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19DT01QTEVURSA9IFwiU1RBVFVTX0NPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIlNUQVRVU19JTkNPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BFTkRJTkcgPSBcIlNUQVRVU19QRU5ESU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiU1RBVFVTX0NBTkNFTExFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19FUlJPUiA9IFwiU1RBVFVTX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BST0NFU1NJTkcgPSBcIlNUQVRVU19QUk9DRVNTSU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlNUQVRVU19VTkFTU0lHTkVEXCI7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1BFTkRJTkcgPSBcIlNUQVRVU19SRUZVTkRfUEVORElOR1wiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfQVBQUk9WRUQgPSBcIlNUQVRVU19SRUZVTkRfQVBQUk9WRURcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEID0gXCJTVEFUVVNfUkVGVU5EX1JFSkVDVEVEXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDID0gXCJSZXF1ZXN0ZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDID0gXCJBcHByb3ZlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUkVKRUNURURfTEMgPSBcIlJlamVjdGVkXCI7XG5cbmV4cG9ydCBjb25zdCBKRVNUX1RJTUVPVVRfSU5fTUlMTElTRUMgPSAxMDAwMDtcblxuZXhwb3J0IGNvbnN0IE9ORV9JVEVNID0gMTtcbmV4cG9ydCBjb25zdCBUV09fSVRFTSA9IDI7XG5leHBvcnQgY29uc3QgRklWRV9JVEVNID0gNTtcbmV4cG9ydCBjb25zdCBTSVhfSVRFTSA9IDY7XG5cbmV4cG9ydCBjb25zdCBQUk9NSVNFX0JBVENIX0xJTUlUID0gMTA7XG5leHBvcnQgY29uc3QgRklGVFlfUEVSX1BBR0UgPSA1MDtcblxuZXhwb3J0IGNvbnN0IEVSUk9SX0NPREVTID0ge1xuICA0MDE6IDQwMSxcbiAgNDAzOiA0MDEsXG4gIDQxMjogNDAxLFxuICA1MDA6IDUwMFxufTtcblxuZXhwb3J0IGNvbnN0IFRBQlMgPSB7XG4gIE9SREVSUzogXCJPUkRFUlNcIixcbiAgVElDS0VUUzogXCJUSUNLRVRTXCJcbn07XG4iLCJpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQge1xuICBMQVNUX0hPVVJfT0ZfMjRfSE9VUixcbiAgTEFTVF9NSU5VVEVfT0ZfSE9VUixcbiAgTUlMTElTRUNfVE9fU0VDLFxuICBGSVJTVF9QQUdFXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgZm9ybWF0Q3VycmVuY3kgPSAodmFsdWUsIHsgbG9jYWxlID0gXCJlbi1VU1wiLCAuLi5vcHRpb25zIH0pID0+IHtcbiAgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgY3VycmVuY3k6IFwiVVNEXCIsXG4gICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMlxuICB9O1xuXG4gIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGUsIHtcbiAgICBzdHlsZTogXCJjdXJyZW5jeVwiLFxuICAgIC4uLmRlZmF1bHRPcHRpb25zLFxuICAgIC4uLm9wdGlvbnNcbiAgfSk7XG5cbiAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXQodmFsdWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZvcm1hdHRlZERhdGUgPSAoZGF0ZXRpbWUsIHRpbWVab25lKSA9PiB7XG4gIGlmICh0aW1lWm9uZSlcbiAgICByZXR1cm4gbW9tZW50XG4gICAgICAudHooZGF0ZXRpbWUgKiBNSUxMSVNFQ19UT19TRUMsIHRpbWVab25lKVxuICAgICAgLmZvcm1hdChcIk1NTU0gREQsIFlZWVlcIik7XG5cbiAgcmV0dXJuIG1vbWVudC51bml4KGRhdGV0aW1lKS5mb3JtYXQoXCJNTU1NIERELCBZWVlZXCIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZU9yZGVyVG90YWxzID0gKHsgb3JkZXIsIHN1bW1pdCB9KSA9PiB7XG4gIGlmICghb3JkZXIgfHwgIXN1bW1pdCkgcmV0dXJuIHt9O1xuICBjb25zdCB0aWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHM7XG4gIGlmICghdGlja2V0cykgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IHsgcmVmdW5kZWRfYW1vdW50LCBkaXNjb3VudF9hbW91bnQsIHRheGVzX2Ftb3VudCwgYW1vdW50IH0gPSBvcmRlcjtcbiAgY29uc3QgeyB0aWNrZXRfdHlwZXMgfSA9IHN1bW1pdDtcblxuICBjb25zdCB0aWNrZXRTdW1tYXJ5ID0gW107XG4gIGxldCBwdXJjaGFzZVRpY2tldFRvdGFsID0gMDtcblxuICBjb25zdCBjdXJyZW5jeU9iamVjdCA9IHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH07XG5cbiAgT2JqZWN0LmtleXMob3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlKS5tYXAoKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IHRpY2tldFR5cGUgPSB0aWNrZXRfdHlwZXM/LmZpbmQoKHR0KSA9PiB0dC5uYW1lID09PSB0aWNrZXQpO1xuICAgIGlmICghdGlja2V0VHlwZSkgcmV0dXJuIG51bGw7XG4gICAgdGlja2V0U3VtbWFyeS5wdXNoKHtcbiAgICAgIHRpY2tldF90eXBlX2lkOiB0aWNrZXRUeXBlLmlkLFxuICAgICAgdGlja2V0X3R5cGU6IHRpY2tldFR5cGUsXG4gICAgICBuYW1lOiB0aWNrZXQsXG4gICAgICBxdHk6IG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZVt0aWNrZXRdXG4gICAgfSk7XG4gICAgcHVyY2hhc2VUaWNrZXRUb3RhbCArPVxuICAgICAgdGlja2V0VHlwZS5jb3N0ICogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF07XG5cbiAgICByZXR1cm4gdGlja2V0U3VtbWFyeTtcbiAgfSk7XG5cbiAgY29uc3QgcHVyY2hhc2VUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHB1cmNoYXNlVGlja2V0VG90YWwsIGN1cnJlbmN5T2JqZWN0KTtcblxuICBjb25zdCBkaXNjb3VudFRvdGFsID0gZm9ybWF0Q3VycmVuY3koZGlzY291bnRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHJlZnVuZFRvdGFsID0gZm9ybWF0Q3VycmVuY3kocmVmdW5kZWRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHRheGVzVG90YWwgPSBmb3JtYXRDdXJyZW5jeSh0YXhlc19hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgYW1vdW50VG90YWwgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3JkZXIsIFwiYW1vdW50XCIpXG4gICAgPyBmb3JtYXRDdXJyZW5jeShhbW91bnQsIGN1cnJlbmN5T2JqZWN0KVxuICAgIDogZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIHJldHVybiB7XG4gICAgZGlzY291bnRUb3RhbCxcbiAgICByZWZ1bmRUb3RhbCxcbiAgICB0YXhlc1RvdGFsLFxuICAgIGFtb3VudFRvdGFsLFxuICAgIHRpY2tldFN1bW1hcnlcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRPcmRlclRpY2tldHMgPSAobWVtYmVyT3JkZXJzLCBvcmRlcklkKSA9PiB7XG4gIGNvbnN0IG9yZGVycyA9IG1lbWJlck9yZGVycy5maWx0ZXIoKG8pID0+IG8uaWQgPT09IG9yZGVySWQpO1xuICByZXR1cm4gb3JkZXJzWzBdPy5tZW1iZXJUaWNrZXRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyA9ICh0cykgPT4ge1xuICBjb25zdCBsb3dlciA9IHRzLnNldEhvdXJzKDAsIDAsIDAsIDApIC8gTUlMTElTRUNfVE9fU0VDO1xuICBjb25zdCB1cHBlciA9XG4gICAgdHMuc2V0SG91cnMoTEFTVF9IT1VSX09GXzI0X0hPVVIsIExBU1RfTUlOVVRFX09GX0hPVVIsIDAsIDApIC9cbiAgICBNSUxMSVNFQ19UT19TRUM7XG4gIHJldHVybiB7XG4gICAgbG93ZXIsXG4gICAgdXBwZXJcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Q3VycmVudFRpbWUgPSAoKSA9PlxuICBNYXRoLnJvdW5kKCtuZXcgRGF0ZSgpIC8gTUlMTElTRUNfVE9fU0VDKTtcblxuZXhwb3J0IGNvbnN0IGdldE5vdyA9ICgpID0+IChkaXNwYXRjaCwgZ2V0U3RhdGUpID0+IHtcbiAgY29uc3QgeyB0aW1lclN0YXRlIH0gPSBnZXRTdGF0ZSgpO1xuICByZXR1cm4gdGltZXJTdGF0ZT8ubm93VXRjID09IG51bGwgPyBkZWZhdWx0Q3VycmVudFRpbWUoKSA6IHRpbWVyU3RhdGU/Lm5vd1V0Yztcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VOb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICByZXR1cm4gZGlzcGF0Y2goZ2V0Tm93KCkpO1xufTtcblxuLyoqXG4gKiBAcGFyYW0gcmVxdWVzdGVkUGFnZVxuICogQHBhcmFtIGN1cnJlbnRQYWdlXG4gKiBAcGFyYW0gbGFzdFBhZ2VcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgY29uc3Qgc2hvdWxkRmV0Y2hEYXRhID0gKHJlcXVlc3RlZFBhZ2UsIGN1cnJlbnRQYWdlLCBsYXN0UGFnZSkgPT4ge1xuICBsZXQgcmVzID0gdHJ1ZTtcblxuICBpZiAocmVxdWVzdGVkUGFnZSA8PSAwKSByZXMgPSBmYWxzZTtcblxuICBjb25zdCBpc1NhbWVQYWdlID0gY3VycmVudFBhZ2UgPiAwICYmIHJlcXVlc3RlZFBhZ2UgPT09IGN1cnJlbnRQYWdlO1xuICBjb25zdCBpc0xhc3RQYWdlID0gY3VycmVudFBhZ2UgPiAwICYmIGN1cnJlbnRQYWdlID09PSBsYXN0UGFnZTtcblxuICBpZiAoaXNTYW1lUGFnZSB8fCBpc0xhc3RQYWdlKSByZXMgPSBmYWxzZTtcblxuICBpZiAocmVxdWVzdGVkUGFnZSA9PT0gRklSU1RfUEFHRSkgcmVzID0gdHJ1ZTtcblxuICBjb25zb2xlLmxvZyhcbiAgICBgbXktb3JkZXJzLXRpY2tldC13aWRnZXQ6OnV0aWxzOjpzaG91bGRGZXRjaERhdGEgcmVxdWVzdGVkUGFnZSAke3JlcXVlc3RlZFBhZ2V9IGN1cnJlbnRQYWdlICR7Y3VycmVudFBhZ2V9IGxhc3RQYWdlICR7bGFzdFBhZ2V9IHJlcyAke3Jlc31gXG4gICk7XG5cbiAgcmV0dXJuIHJlcztcbn07XG5cbi8qKlxuICogQHBhcmFtIGN1cnJlbnRQYWdlXG4gKiBAcGFyYW0gbGFzdFBhZ2VcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgY29uc3QgaGFzTW9yZTJGZXRjaCA9IChjdXJyZW50UGFnZSwgbGFzdFBhZ2UpID0+IHtcbiAgY29uc3QgcmVzID0gY3VycmVudFBhZ2UgPiAwICYmIGN1cnJlbnRQYWdlIDwgbGFzdFBhZ2U7XG4gIGNvbnNvbGUubG9nKFxuICAgIGBteS1vcmRlcnMtdGlja2V0LXdpZGdldDo6dXRpbHM6Omhhc01vcmUyRmV0Y2ggY3VycmVudFBhZ2UgJHtjdXJyZW50UGFnZX0gbGFzdFBhZ2UgJHtsYXN0UGFnZX0gcmVzICR7cmVzfWBcbiAgKTtcbiAgcmV0dXJuIHJlcztcbn07XG5cbi8qKlxuICogQHBhcmFtIGN1cnJlbnRQYWdlXG4gKiBAcGFyYW0gZGF0YVxuICogQHBhcmFtIHRvdGFsXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGNvbnN0IGhhc0xvYWRlZEFsbERhdGEgPSAoY3VycmVudFBhZ2UsIGRhdGEsIHRvdGFsKSA9PiB7XG4gIGxldCByZXMgPSBmYWxzZTtcbiAgY29uc3QgZGF0YUxlbmd0aCA9IEFycmF5LmlzQXJyYXkoZGF0YSkgPyBkYXRhLmxlbmd0aCA6IDA7XG4gIC8vIHdlIGFscmVhZHkgbG9hZGVkIGFsbCAgZGF0YSAoIGZpcnN0IHBhZ2UgaXMgYWx3YXlzIHJlbG9hZGVkIGl0IClcbiAgaWYgKGN1cnJlbnRQYWdlID4gRklSU1RfUEFHRSAmJiBkYXRhTGVuZ3RoID4gMCAmJiBkYXRhTGVuZ3RoID09PSB0b3RhbClcbiAgICByZXMgPSB0cnVlO1xuICBjb25zb2xlLmxvZyhcbiAgICBgbXktb3JkZXJzLXRpY2tldC13aWRnZXQ6OnV0aWxzOjpoYXNMb2FkZWRBbGxEYXRhIGN1cnJlbnRQYWdlICR7Y3VycmVudFBhZ2V9IGRhdGEubGVuZ3RoICR7ZGF0YUxlbmd0aH0gcmVzICR7cmVzfWBcbiAgKTtcbiAgcmV0dXJuIHJlcztcbn07XG4iLCJpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQywgT05FX0RBWSB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi5cIjtcblxuZXhwb3J0IGNvbnN0IGNoZWNrU3VtbWl0UGFzdCA9IChzdW1taXQsIG5vdykgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgcmVhc3NpZ25fZGF0ZSA9XG4gICAgc3VtbWl0Py5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlICYmXG4gICAgc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgPCBzdW1taXQuZW5kX2RhdGVcbiAgICAgID8gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGVcbiAgICAgIDogc3VtbWl0LmVuZF9kYXRlO1xuXG4gIHJldHVybiBub3cgPiByZWFzc2lnbl9kYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrU3VtbWl0U3RhcnRlZCA9IChzdW1taXQsIG5vdykgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIHN1bW1pdC5zdGFydF9kYXRlIDwgbm93O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdERheXNEaWZmID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHN0YXJ0RGF5ID0gbW9tZW50KHN1bW1pdC5zdGFydF9kYXRlICogTUlMTElTRUNfVE9fU0VDKS50eihcbiAgICBzdW1taXQudGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGVuZERheSA9IG1vbWVudChzdW1taXQuZW5kX2RhdGUgKiBNSUxMSVNFQ19UT19TRUMpLnR6KFxuICAgIHN1bW1pdC50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZGF5cyA9IGVuZERheT8uZGlmZihzdGFydERheSwgXCJkYXlzXCIpO1xuICByZXR1cm4ge1xuICAgIHN0YXJ0RGF5LFxuICAgIGVuZERheSxcbiAgICBkYXlzXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuICBjb25zdCB7IHN0YXJ0RGF5LCBlbmREYXksIGRheXMgfSA9IGdldFN1bW1pdERheXNEaWZmKHN1bW1pdCk7XG4gIGlmICghc3RhcnREYXkgfHwgIWVuZERheSkgcmV0dXJuIG51bGw7XG4gIGxldCBmb3JtYXRTdGFydERhdGUgPSBcIk1NTU0gREQsIFlZWVlcIjtcbiAgbGV0IGZvcm1hdEVuZERhdGUgPSBcIk1NTU0gREQsIFlZWVlcIjtcbiAgaWYgKHN0YXJ0RGF5LnllYXIoKSA9PT0gZW5kRGF5LnllYXIoKSkgZm9ybWF0U3RhcnREYXRlID0gXCJNTU1NIEREXCI7XG4gIGlmIChzdGFydERheS5tb250aCgpID09PSBlbmREYXkubW9udGgoKSkgZm9ybWF0RW5kRGF0ZSA9IFwiREQsIFlZWVlcIjtcblxuICBjb25zdCBzdGFydERhdGUgPSBzdGFydERheS5mb3JtYXQoZm9ybWF0U3RhcnREYXRlKTtcbiAgY29uc3QgZW5kRGF0ZSA9IGVuZERheS5mb3JtYXQoZm9ybWF0RW5kRGF0ZSk7XG5cbiAgaWYgKGRheXMgPiBPTkVfREFZKSByZXR1cm4gYCR7c3RhcnREYXRlfSAtICR7ZW5kRGF0ZX1gO1xuXG4gIHJldHVybiBzdGFydERhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0TG9jYXRpb24gPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBsb2NhdGlvbiA9IHN1bW1pdC5sb2NhdGlvbnM/LmZpbmQoXG4gICAgKGwpID0+IGwuY2xhc3NfbmFtZSA9PT0gXCJTdW1taXRWZW51ZVwiICYmIGwuaXNfbWFpbiA9PT0gdHJ1ZVxuICApO1xuXG4gIGlmICghbG9jYXRpb24pIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBgJHtsb2NhdGlvbi5jaXR5fSwgJHtsb2NhdGlvbi5jb3VudHJ5fWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0UmVhc3NpZ25EYXRlID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlICYmXG4gICAgc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgPCBzdW1taXQuZW5kX2RhdGVcbiAgICA/IHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlXG4gICAgOiBzdW1taXQuZW5kX2RhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlU3VtbWl0RGV0YWlscyA9ICh7IHN1bW1pdCB9KSA9PiB7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuXG4gIGlmICghc3VtbWl0KSByZXR1cm4ge307XG5cbiAgY29uc3QgbG9jYXRpb24gPSBnZXRTdW1taXRMb2NhdGlvbihzdW1taXQpO1xuICBjb25zdCBmb3JtYXR0ZWREYXRlID0gZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZShzdW1taXQpO1xuICBjb25zdCByZWFzc2lnbkRhdGUgPSBnZXRTdW1taXRSZWFzc2lnbkRhdGUoc3VtbWl0KTtcbiAgY29uc3QgZm9ybWF0dGVkUmVhc3NpZ25EYXRlID0gbW9tZW50LnR6KFxuICAgIHJlYXNzaWduRGF0ZSxcbiAgICBzdW1taXQudGltZV96b25lPy50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSA9IGdldFN1bW1pdERheXNEaWZmKFxuICAgIG5vdyxcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgc3VtbWl0LnRpbWVfem9uZT8ubmFtZVxuICApO1xuXG4gIGNvbnN0IGlzUGFzdCA9IGNoZWNrU3VtbWl0UGFzdChzdW1taXQsIG5vdyk7XG4gIGNvbnN0IGlzU3RhcnRlZCA9IGNoZWNrU3VtbWl0U3RhcnRlZChzdW1taXQsIG5vdyk7XG4gIGNvbnN0IGlzUmVhc3NpZ25hYmxlID0gcmVhc3NpZ25EYXRlID4gbm93O1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogc3VtbWl0Py5uYW1lLFxuICAgIG5vdyxcbiAgICBsb2NhdGlvbixcbiAgICBmb3JtYXR0ZWREYXRlLFxuICAgIHJlYXNzaWduRGF0ZSxcbiAgICBmb3JtYXR0ZWRSZWFzc2lnbkRhdGUsXG4gICAgZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSxcbiAgICBpc1Bhc3QsXG4gICAgaXNTdGFydGVkLFxuICAgIGlzUmVhc3NpZ25hYmxlXG4gIH07XG59O1xuIiwiaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcbmltcG9ydCBpMThuIGZyb20gXCIuLi9pMThuXCI7XG5pbXBvcnQge1xuICBTVEFUVVNfQ0FOQ0VMTEVELFxuICBTVEFUVVNfQ09NUExFVEUsXG4gIFNUQVRVU19JTkNPTVBMRVRFLFxuICBTVEFUVVNfVU5BU1NJR05FRCxcbiAgU1RBVFVTX1JFRlVORF9QRU5ESU5HLFxuICBTVEFUVVNfUkVGVU5EX0FQUFJPVkVELFxuICBTVEFUVVNfUkVGVU5EX1JFSkVDVEVELFxuICBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMsXG4gIFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTEMsXG4gIFNUQVRVU19SRUZVTkRfUkVKRUNURURfTENcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb25zdGFudHNcIjtcbmltcG9ydCB7XG4gIGNoZWNrSWZWYWx1ZU1hdGNoLFxuICBnZXRUeXBlSW5pdGlhbFZhbHVlLFxuICB0b1NsdWdcbn0gZnJvbSBcIi4uL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Rcbn0gZnJvbSBcIi4uL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBzdGF0dXNEYXRhID0ge1xuICBbU1RBVFVTX1VOQVNTSUdORURdOiB7XG4gICAgdHlwZTogU1RBVFVTX1VOQVNTSUdORUQsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy51bmFzc2lnbmVkXCIpXG4gIH0sXG4gIFtTVEFUVVNfSU5DT01QTEVURV06IHtcbiAgICB0eXBlOiBTVEFUVVNfSU5DT01QTEVURSxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmluY29tcGxldGVcIilcbiAgfSxcbiAgW1NUQVRVU19DT01QTEVURV06IHtcbiAgICB0eXBlOiBTVEFUVVNfQ09NUExFVEUsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5jb21wbGV0ZVwiKVxuICB9LFxuICBbU1RBVFVTX0NBTkNFTExFRF06IHtcbiAgICB0eXBlOiBTVEFUVVNfQ0FOQ0VMTEVELFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuY2FuY2VsbGVkXCIpXG4gIH1cbn07XG5leHBvcnQgY29uc3QgZ2V0VGlja2V0U3RhdHVzS2V5ID0gKHRpY2tldCkgPT4ge1xuICBpZiAoIXRpY2tldC5pc19hY3RpdmUpIHJldHVybiBTVEFUVVNfQ0FOQ0VMTEVEO1xuXG4gIGlmICh0aWNrZXQub3duZXJfaWQgPT09IDApIHJldHVybiBTVEFUVVNfVU5BU1NJR05FRDtcblxuICBpZiAoIXRpY2tldC5vd25lcj8uZmlyc3RfbmFtZSB8fCAhdGlja2V0Lm93bmVyPy5sYXN0X25hbWUpXG4gICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuXG4gIGlmICh0aWNrZXQub3duZXIgJiYgdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiSW5jb21wbGV0ZVwiKVxuICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcblxuICBpZiAodGlja2V0Lm93bmVyICYmIHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkNvbXBsZXRlXCIpXG4gICAgcmV0dXJuIFNUQVRVU19DT01QTEVURTtcblxuICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0U3RhdHVzRGF0YSA9ICh0aWNrZXQsIGlzU3VtbWl0UGFzdCkgPT5cbiAgc3RhdHVzRGF0YVtnZXRUaWNrZXRTdGF0dXNLZXkodGlja2V0LCBpc1N1bW1pdFBhc3QpXTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFJvbGUgPSAodGlja2V0KSA9PiB7XG4gIGlmICghdGlja2V0LmJhZGdlKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCB7IGZlYXR1cmVzIH0gPSB0aWNrZXQuYmFkZ2U7XG5cbiAgaWYgKGZlYXR1cmVzLmxlbmd0aCA+IDApXG4gICAgcmV0dXJuIGZlYXR1cmVzLm1hcCgoZmVhdHVyZSkgPT4gZmVhdHVyZS5uYW1lKS5qb2luKFwiLCBcIik7XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0VHlwZSA9ICh0aWNrZXQsIHN1bW1pdCkgPT5cbiAgc3VtbWl0LnRpY2tldF90eXBlcy5maW5kKCh0eXBlKSA9PiB0eXBlLmlkID09PSB0aWNrZXQudGlja2V0X3R5cGVfaWQpO1xuXG5leHBvcnQgY29uc3QgaXNUaWNrZXRSZWZ1bmRhYmxlID0gKHRpY2tldCkgPT5cbiAgdGlja2V0Py5maW5hbF9hbW91bnQgPiAwICYmXG4gIHRpY2tldD8uZmluYWxfYW1vdW50ID4gdGlja2V0Py5yZWZ1bmRlZF9hbW91bnQgJiZcbiAgIXRpY2tldD8ucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTENcbiAgKTtcblxuZXhwb3J0IGNvbnN0IHRpY2tldHNSZWZ1bmRhYmxlID0gKHRpY2tldHMpID0+XG4gIHRpY2tldHM/LmZpbHRlcigodGlja2V0KSA9PiBpc1RpY2tldFJlZnVuZGFibGUodGlja2V0KSkubGVuZ3RoIHx8IDA7XG5cbmV4cG9ydCBjb25zdCBnZXRSZWZ1bmRlZFJlcXVlc3RlZFRpY2tldHMgPSAodGlja2V0cykgPT5cbiAgdGlja2V0cz8uZmlsdGVyKCh0aWNrZXQpID0+XG4gICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZSgocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDKVxuICApO1xuZXhwb3J0IGNvbnN0IGdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHMgPSAodGlja2V0cykgPT4ge1xuICBjb25zdCBhbGxUaWNrZXRzID0gW107XG4gIHRpY2tldHM/Lm1hcCgodGlja2V0KSA9PiB7XG4gICAgaWYgKFxuICAgICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQ1xuICAgICAgKSB8fFxuICAgICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTENcbiAgICAgICkgfHxcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDXG4gICAgICApXG4gICAgKSB7XG4gICAgICBhbGxUaWNrZXRzLnB1c2godGlja2V0KTtcbiAgICB9XG4gICAgcmV0dXJuIHRpY2tldDtcbiAgfSk7XG4gIHJldHVybiBhbGxUaWNrZXRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlZnVuZGVkUmVxdWVzdGVkU3RhdHVzID0gKHRpY2tldCkgPT4ge1xuICBpZiAoXG4gICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZSgocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDKVxuICApXG4gICAgcmV0dXJuIFNUQVRVU19SRUZVTkRfUEVORElORztcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQ1xuICAgIClcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEO1xuICBpZiAoXG4gICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDXG4gICAgKVxuICApXG4gICAgcmV0dXJuIFNUQVRVU19SRUZVTkRfUkVKRUNURUQ7XG4gIHJldHVybiBTVEFUVVNfUkVGVU5EX1BFTkRJTkc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IgPSAodGlja2V0KSA9PiB7XG4gIGNvbnN0IHN0YXR1cyA9IGdldFJlZnVuZGVkUmVxdWVzdGVkU3RhdHVzKHRpY2tldCk7XG4gIGxldCBzdGF0dXNDb2xvciA9IFwiXCI7XG4gIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgY2FzZSBTVEFUVVNfUkVGVU5EX1BFTkRJTkc6XG4gICAgICBzdGF0dXNDb2xvciA9IFwicGVuZGluZ1wiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcImFwcHJvdmVkXCI7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFNUQVRVU19SRUZVTkRfUkVKRUNURUQ6XG4gICAgICBzdGF0dXNDb2xvciA9IFwicmVqZWN0ZWRcIjtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzdGF0dXNDb2xvciA9IFwicGVuZGluZ1wiO1xuICB9XG4gIHJldHVybiBzdGF0dXNDb2xvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlVmFsaWRhdGlvbiA9ICh0eXBlLCBuYW1lLCBpc1JlcXVpcmVkKSA9PiB7XG4gIGxldCBzY2hlbWE7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OlxuICAgICAgc2NoZW1hID0geXVwLmJvb2woKS5vbmVPZihbdHJ1ZV0sIGkxOG4udChcInZhbGlkYXRpb24uY2hlY2tib3gucmVxdWlyZWRcIikpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgc2NoZW1hID0geXVwLmFycmF5KCkub2YoeXVwLnN0cmluZygpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIGlmIChpc1JlcXVpcmVkKSB7XG4gICAgc2NoZW1hID0gc2NoZW1hLnJlcXVpcmVkKGAke25hbWV9IGlzIHJlcXVpcmVkYCk7XG4gIH1cblxuICByZXR1cm4gc2NoZW1hO1xufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlQW5zd2VycyA9IChcbiAgb3duZXIsXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBhbnN3ZXJzLFxuICBtYW5hZ2VyLFxuICBpbmNsdWRlRGVsZWdhdGlvbixcbiAgaW5jbHVkZUF0dGVuZGVlSW5mbyxcbiAgaW5jbHVkZURpc2NsYWltZXIsXG4gIG9ubHlSZWxldmFudCA9IGZhbHNlXG4pID0+IHtcbiAgY29uc3QgaW5pdGlhbFZhbHVlcyA9IHt9O1xuXG4gIGlmIChpbmNsdWRlQXR0ZW5kZWVJbmZvKSB7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gfHwgb3duZXIuZW1haWwgfHwgXCJcIjtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWVdIHx8IG93bmVyLmZpcnN0X25hbWUgfHwgXCJcIjtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXSB8fCBvd25lci5sYXN0X25hbWUgfHwgXCJcIjtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gfHwgb3duZXIuY29tcGFueTtcbiAgfVxuXG4gIGlmIChpbmNsdWRlRGlzY2xhaW1lcikge1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gfHxcbiAgICAgIG93bmVyLmRpc2NsYWltZXJfYWNjZXB0ZWQ7XG4gIH1cblxuICBpZiAoaW5jbHVkZURlbGVnYXRpb24pIHtcbiAgICBpbml0aWFsVmFsdWVzLmRlbGVnYXRlZF9maXJzdF9uYW1lID1cbiAgICAgIGFuc3dlcnMuZGVsZWdhdGVkX2ZpcnN0X25hbWUgfHwgbWFuYWdlcj8uZmlyc3RfbmFtZSB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXMuZGVsZWdhdGVkX2xhc3RfbmFtZSA9XG4gICAgICBhbnN3ZXJzLmRlbGVnYXRlZF9sYXN0X25hbWUgfHwgbWFuYWdlcj8ubGFzdF9uYW1lIHx8IFwiXCI7XG4gIH1cblxuICBleHRyYVF1ZXN0aW9ucy5mb3JFYWNoKChxKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHEubmFtZSwgcS5pZCk7XG4gICAgY29uc3QgYW5zd2VyID0gYW5zd2Vyc1txdWVzdGlvblNsdWddO1xuICAgIGluaXRpYWxWYWx1ZXNbcXVlc3Rpb25TbHVnXSA9IGFuc3dlciB8fCBnZXRUeXBlSW5pdGlhbFZhbHVlKHEpO1xuXG4gICAgaWYgKHEuc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICBxLnN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhcbiAgICAgICAgICBydWxlLnN1Yl9xdWVzdGlvbi5uYW1lLFxuICAgICAgICAgIHJ1bGUuc3ViX3F1ZXN0aW9uLmlkXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHN1YkFuc3dlciA9IGFuc3dlcnNbc3ViUXVlc3Rpb25TbHVnXTtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBjaGVja0lmVmFsdWVNYXRjaChhbnN3ZXIsIHJ1bGUuYW5zd2VyX3ZhbHVlcyk7XG5cbiAgICAgICAgaWYgKCFvbmx5UmVsZXZhbnQgfHwgbWF0Y2gpIHtcbiAgICAgICAgICBpbml0aWFsVmFsdWVzW3N1YlF1ZXN0aW9uU2x1Z10gPVxuICAgICAgICAgICAgc3ViQW5zd2VyIHx8IGdldFR5cGVJbml0aWFsVmFsdWUocnVsZS5zdWJfcXVlc3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBpbml0aWFsVmFsdWVzO1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkVmFsaWRhdGlvblNjaGVtYSA9IChcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGluY2x1ZGVBdHRlbmRlZUluZm8sXG4gIGFsbG93c0RlbGVnYXRpb24sXG4gIGRpc2NsYWltZXJNYW5kYXRvcnlcbikgPT4ge1xuICBjb25zdCBzY2hlbWEgPSB7fTtcblxuICBpZiAoaW5jbHVkZUF0dGVuZGVlSW5mbykge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5zdHJpbmdcIikpXG4gICAgICAuZW1haWwoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5mb3JtYXRcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5yZXF1aXJlZFwiKSk7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUucmVxdWlyZWRcIikpO1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5sYXN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnJlcXVpcmVkXCIpKTtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gPSB5dXAubGF6eSgodmFsdWUpID0+XG4gICAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCJcbiAgICAgICAgPyB5dXBcbiAgICAgICAgICAgIC5vYmplY3QoKVxuICAgICAgICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uY29tcGFueS5yZXF1aXJlZFwiKSlcbiAgICAgICAgICAgIC50eXBlRXJyb3IoaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9maWVsZFwiKSlcbiAgICAgICAgOiB5dXAuc3RyaW5nKCkucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5jb21wYW55LnJlcXVpcmVkXCIpKVxuICAgICk7XG4gIH1cblxuICBpZiAoZGlzY2xhaW1lck1hbmRhdG9yeSkge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdID0geXVwXG4gICAgICAuYm9vbCgpXG4gICAgICAub25lT2YoW3RydWVdLCBpMThuLnQoXCJ2YWxpZGF0aW9uLmNoZWNrYm94LnJlcXVpcmVkXCIpKTtcbiAgfVxuXG4gIGlmIChhbGxvd3NEZWxlZ2F0aW9uKSB7XG4gICAgc2NoZW1hLmRlbGVnYXRlZF9maXJzdF9uYW1lID0geXVwXG4gICAgICAuc3RyaW5nKGkxOG4udChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnJlcXVpcmVkXCIpKTtcblxuICAgIHNjaGVtYS5kZWxlZ2F0ZWRfbGFzdF9uYW1lID0geXVwXG4gICAgICAuc3RyaW5nKGkxOG4udChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5yZXF1aXJlZFwiKSk7XG4gIH1cblxuICBleHRyYVF1ZXN0aW9ucy5mb3JFYWNoKChxKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHEubmFtZSwgcS5pZCk7XG4gICAgc2NoZW1hW3F1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsaWRhdGlvbihxLnR5cGUsIHEubmFtZSwgcS5tYW5kYXRvcnkpO1xuXG4gICAgaWYgKHEuc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICBxLnN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uID0gcnVsZS5zdWJfcXVlc3Rpb247XG4gICAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhzdWJRdWVzdGlvbi5uYW1lLCBzdWJRdWVzdGlvbi5pZCk7XG4gICAgICAgIHNjaGVtYVtzdWJRdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbGlkYXRpb24oXG4gICAgICAgICAgc3ViUXVlc3Rpb24udHlwZSxcbiAgICAgICAgICBzdWJRdWVzdGlvbi5uYW1lLFxuICAgICAgICAgIGZhbHNlXG4gICAgICAgIClcbiAgICAgICAgICAubnVsbGFibGUoKVxuICAgICAgICAgIC53aGVuKHF1ZXN0aW9uU2x1Zywge1xuICAgICAgICAgICAgaXM6IChxdWVzdGlvbkFucykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBtYXRjaCA9IGNoZWNrSWZWYWx1ZU1hdGNoKHF1ZXN0aW9uQW5zLCBydWxlLmFuc3dlcl92YWx1ZXMpO1xuICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhlbjogKHNjaCkgPT4gc2NoLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24ucmVxdWlyZWRfcXVlc3Rpb25cIikpXG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB5dXAub2JqZWN0KHNjaGVtYSk7XG59O1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImNvcHlJY29uX19fbEkzZVFcIjtcbnZhciBfMiA9IFwicmV2ZXJzZWRfX196SnptRFwiO1xudmFyIF8zID0gXCJ0cnVuY2F0ZWRfX19qV1NuVVwiO1xudmFyIF80ID0gXCJ3cmFwcGVyX19fbVZQaVJcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY29weUljb25cIiwgXzIgYXMgXCJyZXZlcnNlZFwiLCBfMyBhcyBcInRydW5jYXRlZFwiLCBfNCBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiTXVpT3V0bGluZWRJbnB1dC1ub3RjaGVkT3V0bGluZV9fX214RUtXXCI7XG52YXIgXzIgPSBcIk11aVBpY2tlcnNDYWxlbmRhckhlYWRlci1sYWJlbENvbnRhaW5lcl9fX080c1NzXCI7XG52YXIgXzMgPSBcImNhbGVuZGFyRGlzcGxheV9fX0YzbnVLXCI7XG52YXIgXzQgPSBcImNsZWFuQnV0dG9uX19fcXFEdlVcIjtcbnZhciBfNSA9IFwiY29udGFpbmVyX19fUWVRWV9cIjtcbnZhciBfNiA9IFwiZGF0ZVBpY2tlckNvbnRhaW5lcl9fX1o0Mm13XCI7XG52YXIgXzcgPSBcImRhdGVwaWNrZXJDbG9zZV9fX1RaN2tKXCI7XG52YXIgXzggPSBcImZpbHRlckNoZWNrYm94Q29udGFpbmVyX19fa1VuVzlcIjtcbnZhciBfOSA9IFwiZmlsdGVyQ29udGFpbmVyX19fcnJxcDlcIjtcbnZhciBfYSA9IFwiZmlsdGVyRGF0ZUxhYmVsX19fSmdiY3NcIjtcbnZhciBfYiA9IFwiZmlsdGVySWNvbl9fX2lpT3pvXCI7XG52YXIgX2MgPSBcImZpbHRlckxhYmVsX19fc2taUDdcIjtcbnZhciBfZCA9IFwiZmlsdGVyTGlzdENvbnRhaW5lcl9fX0lEcmxTXCI7XG52YXIgX2UgPSBcImZpbHRlck51bUFjdGl2ZV9fX2ttRUVLXCI7XG52YXIgX2YgPSBcImZpbHRlclNvcnRDb250YWluZXJfX19uaE5Kc1wiO1xudmFyIF8xMCA9IFwibGFiZWxfX19MQW1lX1wiO1xudmFyIF8xMSA9IFwic2hvd0ZpbHRlckxpc3RfX19JVzR4R1wiO1xudmFyIF8xMiA9IFwic29ydENvbnRhaW5lcl9fX3NiNUJkXCI7XG52YXIgXzEzID0gXCJzb3J0SWNvbl9fX2NfWFppXCI7XG52YXIgXzE0ID0gXCJzb3J0TGFiZWxfX19kWGlNeVwiO1xudmFyIF8xNSA9IFwic29ydExpc3RDb250YWluZXJfX19QcDJYZ1wiO1xudmFyIF8xNiA9IFwidGl0bGVXcmFwcGVyX19fUDZtUHVcIjtcbmV4cG9ydCB7IF8xIGFzIFwiTXVpT3V0bGluZWRJbnB1dC1ub3RjaGVkT3V0bGluZVwiLCBfMiBhcyBcIk11aVBpY2tlcnNDYWxlbmRhckhlYWRlci1sYWJlbENvbnRhaW5lclwiLCBfMyBhcyBcImNhbGVuZGFyRGlzcGxheVwiLCBfNCBhcyBcImNsZWFuQnV0dG9uXCIsIF81IGFzIFwiY29udGFpbmVyXCIsIF82IGFzIFwiZGF0ZVBpY2tlckNvbnRhaW5lclwiLCBfNyBhcyBcImRhdGVwaWNrZXJDbG9zZVwiLCBfOCBhcyBcImZpbHRlckNoZWNrYm94Q29udGFpbmVyXCIsIF85IGFzIFwiZmlsdGVyQ29udGFpbmVyXCIsIF9hIGFzIFwiZmlsdGVyRGF0ZUxhYmVsXCIsIF9iIGFzIFwiZmlsdGVySWNvblwiLCBfYyBhcyBcImZpbHRlckxhYmVsXCIsIF9kIGFzIFwiZmlsdGVyTGlzdENvbnRhaW5lclwiLCBfZSBhcyBcImZpbHRlck51bUFjdGl2ZVwiLCBfZiBhcyBcImZpbHRlclNvcnRDb250YWluZXJcIiwgXzEwIGFzIFwibGFiZWxcIiwgXzExIGFzIFwic2hvd0ZpbHRlckxpc3RcIiwgXzEyIGFzIFwic29ydENvbnRhaW5lclwiLCBfMTMgYXMgXCJzb3J0SWNvblwiLCBfMTQgYXMgXCJzb3J0TGFiZWxcIiwgXzE1IGFzIFwic29ydExpc3RDb250YWluZXJcIiwgXzE2IGFzIFwidGl0bGVXcmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImNhbmNlbEJ0bl9fX3FEZXhoXCI7XG52YXIgXzIgPSBcImZvb3Rlcl9fX1NONzB5XCI7XG52YXIgXzMgPSBcInNhdmVCdG5fX19uYlU2Y1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJjYW5jZWxCdG5cIiwgXzIgYXMgXCJmb290ZXJcIiwgXzMgYXMgXCJzYXZlQnRuXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImVycm9yTGFiZWxfX19ub2N5WFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJlcnJvckxhYmVsXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm5vT3JkZXJzRm91bmRfX19EUndnb1wiO1xudmFyIF8yID0gXCJub09yZGVyc0ljb25XcmFwcGVyX19fdFBUbVlcIjtcbmV4cG9ydCB7IF8xIGFzIFwibm9PcmRlcnNGb3VuZFwiLCBfMiBhcyBcIm5vT3JkZXJzSWNvbldyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwib3JkZXJEZXRhaWxzTW1vdW50X19fcjNrUkFcIjtcbnZhciBfMiA9IFwib3JkZXJEZXRhaWxzVGlja2V0c19fX200SWpLXCI7XG52YXIgXzMgPSBcIm9yZGVyU3VtbWFyeUJ1dHRvbl9fX3V4amh0XCI7XG52YXIgXzQgPSBcIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm9fX19fUkJYRVwiO1xudmFyIF81ID0gXCJvcmRlclN1bW1hcnlUYWJsZV9fX1lEbnhWXCI7XG52YXIgXzYgPSBcIm9yZGVyU3VtbWFyeVdyYXBwZXJfX19Sd0lFUlwiO1xudmFyIF83ID0gXCJyZWZ1bmREaXNhYmxlZF9fX2p2cmszXCI7XG5leHBvcnQgeyBfMSBhcyBcIm9yZGVyRGV0YWlsc01tb3VudFwiLCBfMiBhcyBcIm9yZGVyRGV0YWlsc1RpY2tldHNcIiwgXzMgYXMgXCJvcmRlclN1bW1hcnlCdXR0b25cIiwgXzQgYXMgXCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvXCIsIF81IGFzIFwib3JkZXJTdW1tYXJ5VGFibGVcIiwgXzYgYXMgXCJvcmRlclN1bW1hcnlXcmFwcGVyXCIsIF83IGFzIFwicmVmdW5kRGlzYWJsZWRcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYXNzaWduVGlja2V0QnV0dG9uX19fenpMc2NcIjtcbnZhciBfMiA9IFwiYXNzaWduVG9NZVRleHRfX19aUGFleFwiO1xudmFyIF8zID0gXCJhc3NpZ25lZEJ5VGV4dF9fX2JOWjd6XCI7XG52YXIgXzQgPSBcImFzc2lnbmVkVG9NZURlc19fX0dqRmtWXCI7XG52YXIgXzUgPSBcImJhZGdlRmVhdHVyZV9fX0EyTE1WXCI7XG52YXIgXzYgPSBcImJhZGdlRmVhdHVyZVdyYXBwZXJfX19JUUxOUFwiO1xudmFyIF83ID0gXCJibGFja0J1dHRvbl9fX2w5aGo5XCI7XG52YXIgXzggPSBcImNoZWNrYm94X19fWFpKcGJcIjtcbnZhciBfOSA9IFwiZGlzYWJsZWRSZWZ1bmRfX19TZmZsN1wiO1xudmFyIF9hID0gXCJkaXNwbGF5X25vbmVfX19DcXBMM1wiO1xudmFyIF9iID0gXCJsYWJlbF9fX3pYRFd6XCI7XG52YXIgX2MgPSBcIm5vT3JkZXJzSWNvbldyYXBwZXJfX19lZnlycFwiO1xudmFyIF9kID0gXCJub1RpY2tldHNGb3VuZF9fX2pMb2NvXCI7XG52YXIgX2UgPSBcIm9yZGVyVGlja2V0Q29udGFpbmVyX19fWkpMemtcIjtcbnZhciBfZiA9IFwib3JkZXJUaWNrZXRJbmZvX19fZ2VtcUJcIjtcbnZhciBfMTAgPSBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lcl9fX19wNjZWXCI7XG52YXIgXzExID0gXCJvcmRlcldyYXBwZXJfX195REJBb1wiO1xudmFyIF8xMiA9IFwicmVhc3NpZ25CdXR0b25fX19Sb2pNNVwiO1xudmFyIF8xMyA9IFwicmVmdW5kQnV0dG9uc19fX2pEbDRIXCI7XG52YXIgXzE0ID0gXCJyZWZ1bmRNb2RhbF9fX0VxZ1BGXCI7XG52YXIgXzE1ID0gXCJzZWxlY3RlZF9fX0hXR05jXCI7XG52YXIgXzE2ID0gXCJ0YWJCdXR0b25zX19feFR5SkFcIjtcbnZhciBfMTcgPSBcInRpY2tldEFjdGlvbkJ1dHRvbnNfX19ycFNNUVwiO1xudmFyIF8xOCA9IFwidGlja2V0TGlzdENvbnRhaW5lcl9fX2NmbXJyXCI7XG52YXIgXzE5ID0gXCJ0aWNrZXROb19fX2EyaU05XCI7XG52YXIgXzFhID0gXCJ0aWNrZXRPd25lckVtYWlsX19fWnQ0T0VcIjtcbnZhciBfMWIgPSBcInRpY2tldFRpY2tldFR5cGVfX19acV9mMFwiO1xudmFyIF8xYyA9IFwidmlld0ZpbmlzaFRpY2tldEJ1dHRvbl9fX0hGNkltXCI7XG52YXIgXzFkID0gXCJ2aWV3TW9yZUJ1dHRvbl9fX0tfMXpUXCI7XG5leHBvcnQgeyBfMSBhcyBcImFzc2lnblRpY2tldEJ1dHRvblwiLCBfMiBhcyBcImFzc2lnblRvTWVUZXh0XCIsIF8zIGFzIFwiYXNzaWduZWRCeVRleHRcIiwgXzQgYXMgXCJhc3NpZ25lZFRvTWVEZXNcIiwgXzUgYXMgXCJiYWRnZUZlYXR1cmVcIiwgXzYgYXMgXCJiYWRnZUZlYXR1cmVXcmFwcGVyXCIsIF83IGFzIFwiYmxhY2tCdXR0b25cIiwgXzggYXMgXCJjaGVja2JveFwiLCBfOSBhcyBcImRpc2FibGVkUmVmdW5kXCIsIF9hIGFzIFwiZGlzcGxheV9ub25lXCIsIF9iIGFzIFwibGFiZWxcIiwgX2MgYXMgXCJub09yZGVyc0ljb25XcmFwcGVyXCIsIF9kIGFzIFwibm9UaWNrZXRzRm91bmRcIiwgX2UgYXMgXCJvcmRlclRpY2tldENvbnRhaW5lclwiLCBfZiBhcyBcIm9yZGVyVGlja2V0SW5mb1wiLCBfMTAgYXMgXCJvcmRlclRpY2tldEluZm9Db250YWluZXJcIiwgXzExIGFzIFwib3JkZXJXcmFwcGVyXCIsIF8xMiBhcyBcInJlYXNzaWduQnV0dG9uXCIsIF8xMyBhcyBcInJlZnVuZEJ1dHRvbnNcIiwgXzE0IGFzIFwicmVmdW5kTW9kYWxcIiwgXzE1IGFzIFwic2VsZWN0ZWRcIiwgXzE2IGFzIFwidGFiQnV0dG9uc1wiLCBfMTcgYXMgXCJ0aWNrZXRBY3Rpb25CdXR0b25zXCIsIF8xOCBhcyBcInRpY2tldExpc3RDb250YWluZXJcIiwgXzE5IGFzIFwidGlja2V0Tm9cIiwgXzFhIGFzIFwidGlja2V0T3duZXJFbWFpbFwiLCBfMWIgYXMgXCJ0aWNrZXRUaWNrZXRUeXBlXCIsIF8xYyBhcyBcInZpZXdGaW5pc2hUaWNrZXRCdXR0b25cIiwgXzFkIGFzIFwidmlld01vcmVCdXR0b25cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiQ1RBQnV0dG9uV3JhcHBlcl9fX0tncTZnXCI7XG52YXIgXzIgPSBcImFjdGlvbkJ1dHRvbnNfX191N21QU1wiO1xudmFyIF8zID0gXCJhcHByb3ZlZF9fX3N4RUpXXCI7XG52YXIgXzQgPSBcImJhZGdlRmVhdHVyZV9fX3RMaEVwXCI7XG52YXIgXzUgPSBcImJhZGdlRmVhdHVyZVdyYXBwZXJfX19fOUdiRFwiO1xudmFyIF82ID0gXCJidXR0b25QaWxsX19fTGVzYXpcIjtcbnZhciBfNyA9IFwiY2FuY2VsQnV0dG9uX19feWZoWWJcIjtcbnZhciBfOCA9IFwiY29udGludWVCdXR0b25fX19OeVgzc1wiO1xudmFyIF85ID0gXCJkZWxldGVJY29uX19fRlN3eWVcIjtcbnZhciBfYSA9IFwicGVuZGluZ19fX2FFYld3XCI7XG52YXIgX2IgPSBcInJlZnVuZEVycm9yTXNnX19fQWFoenJcIjtcbnZhciBfYyA9IFwicmVmdW5kU3VjY2Vzc2Z1bF9fX3pyRFFZXCI7XG52YXIgX2QgPSBcInJlZnVuZFRleHRfX19hRW5MOVwiO1xudmFyIF9lID0gXCJyZWZ1bmRUaWNrZXRBdHRlbmRlZV9fX1FYQ2pNXCI7XG52YXIgX2YgPSBcInJlZnVuZFRpY2tldEJveENvbnRhaW5lcl9fX3lhNjEzXCI7XG52YXIgXzEwID0gXCJyZWplY3RlZF9fX05KRTRaXCI7XG52YXIgXzExID0gXCJzdWJ0aXRsZV9fX1B0RGUyXCI7XG52YXIgXzEyID0gXCJzdWNjZXNzTXNnX19fSHRNc2VcIjtcbnZhciBfMTMgPSBcInN1Y2Nlc3NNc2cyX19fUTZ6bmFcIjtcbnZhciBfMTQgPSBcInRpY2tldExpc3RfX19lRFFSM1wiO1xudmFyIF8xNSA9IFwidGlja2V0Tm9fX19fRUFENFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJDVEFCdXR0b25XcmFwcGVyXCIsIF8yIGFzIFwiYWN0aW9uQnV0dG9uc1wiLCBfMyBhcyBcImFwcHJvdmVkXCIsIF80IGFzIFwiYmFkZ2VGZWF0dXJlXCIsIF81IGFzIFwiYmFkZ2VGZWF0dXJlV3JhcHBlclwiLCBfNiBhcyBcImJ1dHRvblBpbGxcIiwgXzcgYXMgXCJjYW5jZWxCdXR0b25cIiwgXzggYXMgXCJjb250aW51ZUJ1dHRvblwiLCBfOSBhcyBcImRlbGV0ZUljb25cIiwgX2EgYXMgXCJwZW5kaW5nXCIsIF9iIGFzIFwicmVmdW5kRXJyb3JNc2dcIiwgX2MgYXMgXCJyZWZ1bmRTdWNjZXNzZnVsXCIsIF9kIGFzIFwicmVmdW5kVGV4dFwiLCBfZSBhcyBcInJlZnVuZFRpY2tldEF0dGVuZGVlXCIsIF9mIGFzIFwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyXCIsIF8xMCBhcyBcInJlamVjdGVkXCIsIF8xMSBhcyBcInN1YnRpdGxlXCIsIF8xMiBhcyBcInN1Y2Nlc3NNc2dcIiwgXzEzIGFzIFwic3VjY2Vzc01zZzJcIiwgXzE0IGFzIFwidGlja2V0TGlzdFwiLCBfMTUgYXMgXCJ0aWNrZXROb1wiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjbG9zZUJ0bl9fX3lTUUNPXCI7XG52YXIgXzIgPSBcImhlYWRlcl9fX2ZCWEc5XCI7XG52YXIgXzMgPSBcInRpdGxlX19fdHlaZVFcIjtcbnZhciBfNCA9IFwid3JhcHBlcl9fX1JPSkdzXCI7XG5leHBvcnQgeyBfMSBhcyBcImNsb3NlQnRuXCIsIF8yIGFzIFwiaGVhZGVyXCIsIF8zIGFzIFwidGl0bGVcIiwgXzQgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcInN1bW1pdFRpdGxlRGF0ZV9fX1hucnBGXCI7XG52YXIgXzIgPSBcIndpZGdldEhlYWRlcl9fX2dnTHRNXCI7XG5leHBvcnQgeyBfMSBhcyBcInN1bW1pdFRpdGxlRGF0ZVwiLCBfMiBhcyBcIndpZGdldEhlYWRlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhbGlnbkNlbnRlcl9fX040RXZPXCI7XG52YXIgXzIgPSBcImFzc2lnbkJ0bl9fX0ZRSDNuXCI7XG52YXIgXzMgPSBcImF0dGVuZGVlQ29udGFpbmVyX19fZDNSR0NcIjtcbnZhciBfNCA9IFwiYXR0ZW5kZWVJbmZvTm90ZV9fX0tkMXk2XCI7XG52YXIgXzUgPSBcImF0dGVuZGVlSW5mb1RpdGxlX19fVDlVNXpcIjtcbnZhciBfNiA9IFwib3JkZXJOb19fX3lxUnI4XCI7XG52YXIgXzcgPSBcInN1YnRpdGxlX19fU3ZSbFVcIjtcbnZhciBfOCA9IFwidGlja2V0QXNzaWduQ29udGFpbmVyX19fZEo1dldcIjtcbnZhciBfOSA9IFwidGlja2V0VHlwZV9fX1lYd09KXCI7XG5leHBvcnQgeyBfMSBhcyBcImFsaWduQ2VudGVyXCIsIF8yIGFzIFwiYXNzaWduQnRuXCIsIF8zIGFzIFwiYXR0ZW5kZWVDb250YWluZXJcIiwgXzQgYXMgXCJhdHRlbmRlZUluZm9Ob3RlXCIsIF81IGFzIFwiYXR0ZW5kZWVJbmZvVGl0bGVcIiwgXzYgYXMgXCJvcmRlck5vXCIsIF83IGFzIFwic3VidGl0bGVcIiwgXzggYXMgXCJ0aWNrZXRBc3NpZ25Db250YWluZXJcIiwgXzkgYXMgXCJ0aWNrZXRUeXBlXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIndyYXBwZXJfX19Fd09SelwiO1xuZXhwb3J0IHsgXzEgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImluZm9Ob3RlX19faTFYWTlcIjtcbnZhciBfMiA9IFwid3JhcHBlcl9fX01BdU5TXCI7XG5leHBvcnQgeyBfMSBhcyBcImluZm9Ob3RlXCIsIF8yIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhY3Rpb25CdXR0b25zQ29udGFpbmVyX19fQXV2cm5cIjtcbnZhciBfMiA9IFwiYWRkaXRpb25hbERldGFpbHNfX19tUDFpSlwiO1xudmFyIF8zID0gXCJhdHRlbmRlZUNvbnRhaW5lcl9fX1EwVlV6XCI7XG52YXIgXzQgPSBcImF0dGVuZGVlSW5mb1RpdGxlX19fTG1ybTRcIjtcbnZhciBfNSA9IFwiY2xvc2VCdG5fX19XTkpsRVwiO1xudmFyIF82ID0gXCJjb3B5QnRuX19fX3V0QTZcIjtcbnZhciBfNyA9IFwiZGVsZWdhdGVkVG9fX19TR1ZRSVwiO1xudmFyIF84ID0gXCJkb3dubG9hZEJ0bl9fX3FqWWh6XCI7XG52YXIgXzkgPSBcImhlYWRlcl9fX0F1Z256XCI7XG52YXIgX2EgPSBcIm9yZGVyTnVtYmVyX19fTDVRNWFcIjtcbnZhciBfYiA9IFwicXJDb2RlX19fZndxWnFcIjtcbnZhciBfYyA9IFwicXJOb3RlX19fR2M3S25cIjtcbnZhciBfZCA9IFwic2VuZEJ0bl9fX2tvV00yXCI7XG52YXIgX2UgPSBcInNlbnRfX19rNldLeFwiO1xudmFyIF9mID0gXCJzdGF0dXNfX19rd0M4eVwiO1xudmFyIF8xMCA9IFwic3VidGl0bGVfX195X051T1wiO1xudmFyIF8xMSA9IFwidGlja2V0RGV0YWlsQ29udGFpbmVyX19fYjJUTFJcIjtcbnZhciBfMTIgPSBcInRpdGxlX19fd1F6VU5cIjtcbmV4cG9ydCB7IF8xIGFzIFwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lclwiLCBfMiBhcyBcImFkZGl0aW9uYWxEZXRhaWxzXCIsIF8zIGFzIFwiYXR0ZW5kZWVDb250YWluZXJcIiwgXzQgYXMgXCJhdHRlbmRlZUluZm9UaXRsZVwiLCBfNSBhcyBcImNsb3NlQnRuXCIsIF82IGFzIFwiY29weUJ0blwiLCBfNyBhcyBcImRlbGVnYXRlZFRvXCIsIF84IGFzIFwiZG93bmxvYWRCdG5cIiwgXzkgYXMgXCJoZWFkZXJcIiwgX2EgYXMgXCJvcmRlck51bWJlclwiLCBfYiBhcyBcInFyQ29kZVwiLCBfYyBhcyBcInFyTm90ZVwiLCBfZCBhcyBcInNlbmRCdG5cIiwgX2UgYXMgXCJzZW50XCIsIF9mIGFzIFwic3RhdHVzXCIsIF8xMCBhcyBcInN1YnRpdGxlXCIsIF8xMSBhcyBcInRpY2tldERldGFpbENvbnRhaW5lclwiLCBfMTIgYXMgXCJ0aXRsZVwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhdHRlbmRlZUNvbnRhaW5lcl9fX2NIU010XCI7XG52YXIgXzIgPSBcImF0dGVuZGVlSW5mb1RpdGxlX19fSnNQbEdcIjtcbnZhciBfMyA9IFwiaGVhZGVyTm90ZV9fX2IybXJDXCI7XG52YXIgXzQgPSBcInN1YnRpdGxlX19fWVg2T0RcIjtcbnZhciBfNSA9IFwidGlja2V0UmVhc3NpZ25Db250YWluZXJfX19wRzliNFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhdHRlbmRlZUNvbnRhaW5lclwiLCBfMiBhcyBcImF0dGVuZGVlSW5mb1RpdGxlXCIsIF8zIGFzIFwiaGVhZGVyTm90ZVwiLCBfNCBhcyBcInN1YnRpdGxlXCIsIF81IGFzIFwidGlja2V0UmVhc3NpZ25Db250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYnV0dG9uQ2FuY2VsbGVkX19fRXJsRFpcIjtcbnZhciBfMiA9IFwiYnV0dG9uQ29tcGxldGVfX19sbFdrWlwiO1xudmFyIF8zID0gXCJidXR0b25JbmNvbXBsZXRlX19fVG9sSGdcIjtcbnZhciBfNCA9IFwiYnV0dG9uUGlsbF9fX3pxMnRjXCI7XG52YXIgXzUgPSBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZF9fX3BXdDMwXCI7XG52YXIgXzYgPSBcImJ1dHRvblVuYXNzaWduZWRfX19ZRGQ4WFwiO1xudmFyIF83ID0gXCJ0aWNrZXRTdGF0dXNDb250YWluZXJfX19xajZmYlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJidXR0b25DYW5jZWxsZWRcIiwgXzIgYXMgXCJidXR0b25Db21wbGV0ZVwiLCBfMyBhcyBcImJ1dHRvbkluY29tcGxldGVcIiwgXzQgYXMgXCJidXR0b25QaWxsXCIsIF81IGFzIFwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkXCIsIF82IGFzIFwiYnV0dG9uVW5hc3NpZ25lZFwiLCBfNyBhcyBcInRpY2tldFN0YXR1c0NvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhY3RpdmVfX190THlXWlwiO1xudmFyIF8yID0gXCJ0YWJPcHRpb25fX19INEgxdVwiO1xudmFyIF8zID0gXCJ0YWJXcmFwcGVyX19fdTIxc0dcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYWN0aXZlXCIsIF8yIGFzIFwidGFiT3B0aW9uXCIsIF8zIGFzIFwidGFiV3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJ0aWNrZXRzVGl0bGVUZXh0X19fVERQbXBcIjtcbmV4cG9ydCB7IF8xIGFzIFwidGlja2V0c1RpdGxlVGV4dFwiIH1cbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAcmVkdXhqcy90b29sa2l0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBzZW50cnkvcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZm9ybWlrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaWR0b2tlbi12ZXJpZmllclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb21lbnQtdGltZXpvbmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicC1saW1pdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwcm9wLXR5cGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1xci1jb2RlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0L2pzeC1ydW50aW1lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInl1cFwiKTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBQZXJzaXN0R2F0ZSB9IGZyb20gXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyBTdHlsZWRFbmdpbmVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VJbml0U3RvcmUgfSBmcm9tIFwiLi9zdG9yZVwiO1xuaW1wb3J0IHsgUkVTRVRfU1RBVEUsIHNldFJlZHVjZXJTdGF0ZSB9IGZyb20gXCIuL2FjdGlvbnNcIjtcblxuaW1wb3J0IFdpZGdldFdyYXBwZXIgZnJvbSBcIi4vY29tcG9uZW50cy9XaWRnZXRXcmFwcGVyXCI7XG5cbmNvbnN0IE15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBsb2dpblVybCxcbiAgICBzdXBwb3J0RW1haWwsXG4gICAgc3VtbWl0LFxuICAgIGFwaUJhc2VVcmwsXG4gICAgdXNlcixcbiAgICBjbGllbnRJZCxcbiAgICB1cGRhdGVQcm9maWxlXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCB7IHN0b3JlLCBwZXJzaXN0b3IgfSA9IHVzZUluaXRTdG9yZSh7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICB1c2VyLFxuICAgIGFwaUJhc2VVcmwsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVCZWZvcmVMaWZ0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgY29uc3QgZmx1c2ggPSBwYXJhbXMuaGFzKFwiZmx1c2hTdGF0ZVwiKTtcbiAgICBpZiAoZmx1c2gpIHN0b3JlLmRpc3BhdGNoKHsgdHlwZTogUkVTRVRfU1RBVEUsIHBheWxvYWQ6IG51bGwgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaChzZXRSZWR1Y2VyU3RhdGUoc3VtbWl0LCB1c2VyKSk7XG4gIH0sIFtzdW1taXQsIHVzZXJdKTtcblxuICByZXR1cm4gKFxuICAgIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgICAgPFBlcnNpc3RHYXRlXG4gICAgICAgIG9uQmVmb3JlTGlmdD17aGFuZGxlQmVmb3JlTGlmdH1cbiAgICAgICAgbG9hZGluZz17bnVsbH1cbiAgICAgICAgcGVyc2lzdG9yPXtwZXJzaXN0b3J9XG4gICAgICA+XG4gICAgICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgICAgICA8V2lkZ2V0V3JhcHBlciAvPlxuICAgICAgICA8L1N0eWxlZEVuZ2luZVByb3ZpZGVyPlxuICAgICAgPC9QZXJzaXN0R2F0ZT5cbiAgICA8L1Byb3ZpZGVyPlxuICApO1xufTtcblxuTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQucHJvcFR5cGVzID0ge1xuICBsb2dpblVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VwcG9ydEVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGFwaUJhc2VVcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHVzZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gIGNsaWVudElkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1cGRhdGVQcm9maWxlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQ7XG4iXSwibmFtZXMiOlsiYXV0aEVycm9ySGFuZGxlciIsImdldFJlcXVlc3QiLCJkZWxldGVSZXF1ZXN0IiwiY3JlYXRlQWN0aW9uIiwic3RvcExvYWRpbmciLCJzdGFydExvYWRpbmciLCJwdXRSZXF1ZXN0IiwicExpbWl0IiwiZ2V0SWRUb2tlbiIsIm9iamVjdFRvUXVlcnlTdHJpbmciLCJJZFRva2VuVmVyaWZpZXIiLCJpMThuIiwiZ2V0QWNjZXNzVG9rZW5TYWZlbHkiLCJGSVJTVF9QQUdFIiwiREVGQVVMVF9JVEVNU19QRVJfUEFHRSIsIlBST01JU0VfQkFUQ0hfTElNSVQiLCJGSUZUWV9QRVJfUEFHRSIsIkVSUk9SX0NPREVTIiwiVEFCUyIsIlJFU0VUX1NUQVRFIiwiUkVTRVRfRklMVEVSIiwiUkVTRVRfQVBJX0VSUk9SIiwiU0VUX1NUQVRFIiwiU0VUX0FQSV9FUlJPUiIsIkNIQU5HRV9GSUxURVIiLCJDSEFOR0VfU09SVCIsIkdFVF9VU0VSX09SREVSUyIsIlJFRlVORF9PUkRFUiIsIlNFVF9BQ1RJVkVfT1JERVJfSUQiLCJGSUxURVJfVVNFUl9PUkRFUlMiLCJHRVRfTVlfQVNTSUdORURfVElDS0VUUyIsIlVQREFURV9USUNLRVQiLCJSRVNFVF9USUNLRVQiLCJSRUNFSVZFX1RJQ0tFVCIsIlJFTU9WRV9USUNLRVRfQVRURU5ERUUiLCJBU1NJR05fVElDS0VUIiwiUkVGVU5EX1RJQ0tFVCIsIlJFU0VORF9OT1RJRklDQVRJT04iLCJHRVRfVElDS0VUU19CWV9PUkRFUiIsIkdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SIiwiR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTIiwiR0VUX1RJQ0tFVF9ERVRBSUxTIiwiUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMiLCJUSUNLRVRfQVRURU5ERUVfS0VZUyIsImVtYWlsIiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJjb21wYW55IiwiZGlzY2xhaW1lckFjY2VwdGVkIiwiZXh0cmFRdWVzdGlvbnMiLCJVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEIiwiU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRSIsIlNUT1BfTE9BRElOR19JRFBfUFJPRklMRSIsIlVQREFURV9JRFBfUFJPRklMRSIsIlNFVF9VU0VSIiwiU0VUX1NVTU1JVCIsIkdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OUyIsIlJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTIiwiQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTIiwicmVzZXRUaWNrZXQiLCJkaXNwYXRjaCIsInJlc2V0U3RhdGUiLCJyZXNldEZpbHRlciIsInJlc2V0RXJyb3IiLCJzZXRSZWR1Y2VyU3RhdGUiLCJzdW1taXQiLCJ1c2VyIiwiRklMVEVSX1ZBUl9EQVRFIiwiRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFIiwiRklMVEVSX1ZBUl9USUNLRVRfVFlQRSIsIkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEIiwiRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMiLCJGSUxURVJfVkFSX1BST01PQ09ERSIsIkZJTFRFUl9WQVJfRlJFRV9QQUlEIiwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIiLCJjaGFuZ2VGaWx0ZXIiLCJmaWx0ZXIiLCJjaGFuZ2VTb3J0Iiwic29ydCIsInBhcnNlRmlsdGVyIiwiZmlsdGVyT2JqIiwiY3VycmVudFRhYiIsInB1c2giLCJjb25jYXQiLCJsb3dlciIsInVwcGVyIiwibGVuZ3RoIiwiZmlsdGVyTmFtZSIsIk9SREVSUyIsImpvaW4iLCJnZXRTb3J0RGlyZWN0aW9uIiwiZGlyZWN0aW9uIiwiZXJyb3JIYW5kbGVyTm90aWZ5IiwicGF5bG9hZCIsImNhbGxiYWNrIiwiY3VzdG9tQXV0aEVycm9ySGFuZGxlciIsImVyciIsInJlcyIsImN1c3RvbUZldGNoRXJyb3JIYW5kbGVyIiwicmVzcG9uc2UiLCJjb2RlIiwic3RhdHVzIiwibXNnIiwidCIsIk9iamVjdCIsImVudHJpZXMiLCJlcnJvcnMiLCJmb3JFYWNoIiwiX3JlZiIsImtleSIsInZhbHVlIiwiTnVtYmVyIiwiaXNOYU4iLCJzdGF0dXNUZXh0IiwidGl0bGUiLCJodG1sIiwiZ2V0VXNlck9yZGVycyIsIl9yZWYyIiwicGFnZSIsInBlclBhZ2UiLCJnZXRTdGF0ZSIsIl9yZWYzIiwiYXBpQmFzZVVybCIsIndpZGdldFN0YXRlIiwiYWNjZXNzVG9rZW4iLCJjYXRjaCIsIlByb21pc2UiLCJyZWplY3QiLCJwYXJhbXMiLCJhY2Nlc3NfdG9rZW4iLCJvcmRlciIsInJlbGF0aW9ucyIsInBlcl9wYWdlIiwia2V5cyIsImZpbHRlcnMiLCJuYW1lIiwiaWQiLCJ0aGVuIiwiZSIsInNldEFjdGl2ZU9yZGVySWQiLCJvcmRlcklkIiwic2V0VXNlciIsImdldFVzZXJUaWNrZXRzIiwiX3JlZjQiLCJfcmVmNSIsInVzZXJQcm9maWxlIiwiZmllbGRzIiwiZXhwYW5kIiwiVElDS0VUUyIsImdldFRpY2tldHNCeU9yZGVyIiwiX3JlZjYiLCJfcmVmNyIsInJlc2VuZE5vdGlmaWNhdGlvbiIsInRpY2tldCIsIl9yZWY4IiwibWVzc2FnZSIsIm9yZGVyX2lkIiwicmVmdW5kVGlja2V0IiwiX3JlZjkiLCJfcmVmMTAiLCJyZWZ1bmRCdWxrVGlja2V0cyIsIl9yZWYxMSIsInRpY2tldHMiLCJsaW1pdCIsImFsbFJlZnVuZFRpY2tldENhbGxzIiwibWFwIiwiYWxsIiwic3VjY2Vzc2Z1bGx5UmVxdWVzdGVkIiwiciIsIl9yJHJlc3BvbnNlIiwicmVmdW5kX3JlcXVlc3RzIiwidXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCIsInRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQiLCJnZXRFeHRyYVF1ZXN0aW9ucyIsImF0dGVuZGVlSWQiLCJfcmVmMTIiLCJlbmRwb2ludCIsImdldFRpY2tldCIsInRpY2tldElkIiwiX3JlZjEzIiwiZmluYWxseSIsIm5vcm1hbGl6ZVRpY2tldCIsImVudGl0eSIsIm5vcm1hbGl6ZWRFbnRpdHkiLCJfb2JqZWN0U3ByZWFkIiwiYXR0ZW5kZWVfY29tcGFueSIsImF0dGVuZGVlX2NvbXBhbnlfaWQiLCJyZWZyZXNoUHJvZmlsZSIsImRhdGEiLCJ0aWNrZXRPd25lciIsIl9yZWYxNCIsIl90aWNrZXRPd25lciRtYW5hZ2VyIiwidXBkYXRlUHJvZmlsZSIsImF0dGVuZGVlX2VtYWlsIiwiYXR0ZW5kZWVfZmlyc3RfbmFtZSIsImF0dGVuZGVlX2xhc3RfbmFtZSIsImhhc01hbmFnZXIiLCJtYW5hZ2VyIiwibWFuYWdlcl9pZCIsIml0c01lIiwicHJvZmlsZUNoYW5nZWQiLCJmaXJzdF9uYW1lIiwibGFzdF9uYW1lIiwibmV3UHJvZmlsZSIsInNhdmVUaWNrZXREZXRhaWxzIiwiYW5zd2VycyIsIl9yZWYxNSIsImlkVG9rZW4iLCJ2ZXJpZmllciIsImp3dCIsImRlY29kZSIsImNvbnNvbGUiLCJsb2ciLCJvd25lciIsImFzc2lnbkF0dGVuZGVlIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiX3JlZjE2IiwicmVhc3NpZ25UaWNrZXQiLCJfcmVmMTciLCJzYXZlRXh0cmFRdWVzdGlvbnMiLCJfcmVmMTgiLCJnZXRUaWNrZXRQREYiLCJfcmVmMTkiLCJxdWVyeVN0cmluZyIsImFwaVVybCIsImZldGNoIiwicmVzcG9uc2VUeXBlIiwiaGVhZGVycyIsIm9rIiwiYmxvYiIsInBkZiIsImxpbmsiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ1cmwiLCJ3aW5kb3ciLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJocmVmIiwiZG93bmxvYWQiLCJkaXNwYXRjaEV2ZW50IiwiTW91c2VFdmVudCIsIlJlYWN0IiwiUHJvcFR5cGVzIiwidXNlVHJhbnNsYXRpb24iLCJCb3giLCJ1c2VGb3JtaWsiLCJFeHRyYVF1ZXN0aW9uc0ZpZWxkcyIsIkZvcm1Gb290ZXIiLCJ1c2VTY3JvbGxUb0Vycm9yIiwiUmVnaXN0cmF0aW9uRGlzY2xhaW1lciIsImJ1aWxkVmFsaWRhdGlvblNjaGVtYSIsInBhcnNlQW5zd2VycyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJBc3NpZ25FUUZvcm0iLCJvblN1Ym1pdCIsIm9uQ2xvc2UiLCJmb3JtaWsiLCJpbml0aWFsVmFsdWVzIiwidmFsaWRhdGlvblNjaGVtYSIsInJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeSIsInZhbHVlcyIsInJlbGV2YW50QW5zd2VycyIsImVuYWJsZVJlaW5pdGlhbGl6ZSIsImhhbmRsZVN1Ym1pdCIsIm5vVmFsaWRhdGUiLCJjaGlsZHJlbiIsInJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQiLCJkaXNjbGFpbWVyIiwiaXNSZXF1aXJlZCIsInNhdmVMYWJlbCIsImNhbmNlbExhYmVsIiwiZGlzYWJsZWQiLCJpc1N1Ym1pdHRpbmciLCJwcm9wVHlwZXMiLCJvYmplY3QiLCJhcnJheSIsImZ1bmMiLCJDb250ZW50Q29weUljb24iLCJUb29sdGlwIiwiTUlMTElTRUNfVE9fU0VDIiwic3R5bGVzIiwiZGVmYXVsdFdpZHRoIiwiQ29weVRleHQiLCJ0ZXh0IiwidG9vbHRpcFRleHQiLCJoaWRlQ29weSIsInRydW5jYXRlZCIsInJldmVyc2VkIiwid2lkdGgiLCJ0b29sdGlwVGV4dFRvVXNlIiwidG9vbHRpcCIsInNldFRvb2x0aXAiLCJ1c2VTdGF0ZSIsImNsYXNzTmFtZXMiLCJoYW5kbGVDb3B5IiwibmF2aWdhdG9yIiwiY2xpcGJvYXJkIiwid3JpdGVUZXh0Iiwic2V0VGltZW91dCIsImNsYXNzTmFtZSIsIndyYXBwZXIiLCJzdHlsZSIsImNvcHlJY29uIiwib25DbGljayIsInN0cmluZyIsImJvb2wiLCJudW1iZXIiLCJjcmVhdGVDb250ZXh0IiwiZGVmYXVsdENvbnRleHRWYWx1ZSIsInNldE1lc3NhZ2UiLCJzZXRNZXNzYWdlQ2FsbGJhY2siLCJDdXN0b21EaWFsb2dDb250ZXh0IiwiRGlhbG9nIiwiRGlhbG9nQ29udGVudCIsIkRpYWxvZ0NvbnRlbnRUZXh0IiwiRGlhbG9nVGl0bGUiLCJDdXN0b21EaWFsb2ciLCJvcGVuIiwiYm9keSIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiX19odG1sIiwiVGhlbWVQcm92aWRlciIsImNyZWF0ZVRoZW1lIiwiZGFya0NvbG9yIiwicm9vdCIsImRvY3VtZW50RWxlbWVudCIsImdldENvbXB1dGVkU3R5bGUiLCJnZXRQcm9wZXJ0eVZhbHVlIiwidGhlbWUiLCJwYWxldHRlIiwicHJpbWFyeSIsIm1haW4iLCJjb21wb25lbnRzIiwiTXVpVGFiIiwic3R5bGVPdmVycmlkZXMiLCJmb250U2l6ZSIsImNvbG9yIiwiTXVpVGFicyIsImluZGljYXRvciIsImJhY2tncm91bmRDb2xvciIsIkN1c3RvbVRoZW1lIiwibm9kZSIsIkNoZWNrYm94IiwiRm9ybUNvbnRyb2wiLCJGb3JtQ29udHJvbExhYmVsIiwiRm9ybUdyb3VwIiwiRm9ybUhlbHBlclRleHQiLCJGb3JtTGFiZWwiLCJnZXRMYWJlbCIsInRvU2x1ZyIsIkNoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQiLCJfcXVlc3Rpb24kdmFsdWVzIiwicXVlc3Rpb24iLCJxdWVzdGlvbkNsYXNzTmFtZSIsImlzRGlzYWJsZWQiLCJvbkNoYW5nZSIsInNldEZpZWxkVmFsdWUiLCJlcnJvciIsImhlbHBlclRleHQiLCJyZXN0IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwicXVlc3Rpb25TbHVnIiwicXVlc3Rpb25MYWJlbCIsIm1hbmRhdG9yeSIsInF1ZXN0aW9uTWF4VmFsdWVzIiwibWF4X3NlbGVjdGVkX3ZhbHVlcyIsInF1ZXN0aW9uT3B0aW9ucyIsInZhbCIsImxhYmVsIiwidG9TdHJpbmciLCJoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UiLCJjaGVja2VkIiwiY3VycmVudEFucyIsIm1heFNlbGVjdGlvblJlYWNoZWQiLCJuZXdWYWx1ZSIsInYiLCJyZXF1aXJlZCIsImZ1bGxXaWR0aCIsIm9wIiwiY29udHJvbCIsImluY2x1ZGVzIiwiZXYiLCJ0YXJnZXQiLCJSYXdIVE1MIiwiQ2hlY2tib3hRdWVzdGlvbkZpZWxkIiwiSW5wdXRMYWJlbCIsIk1lbnVJdGVtIiwiU2VsZWN0IiwiRHJvcGRvd25RdWVzdGlvbkZpZWxkIiwibGFiZWxJZCIsIm1hcmdpbkJvdHRvbSIsIlJhZGlvIiwiUmFkaW9Hcm91cCIsIlJhZGlvTGlzdFF1ZXN0aW9uRmllbGQiLCJUZXh0RmllbGQiLCJUZXh0UXVlc3Rpb25GaWVsZCIsIlF1ZXN0aW9uVHlwZV9DaGVja2JveCIsIlF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QiLCJRdWVzdGlvblR5cGVfQ29tYm9Cb3giLCJRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94IiwiUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCIsImNoZWNrUnVsZSIsInJ1bGUiLCJhbnN3ZXJfdmFsdWVzIiwiQXJyYXkiLCJpc0FycmF5IiwiYW5zd2VyX3ZhbHVlc19vcGVyYXRvciIsImNoZWNrVmlzaWJpbGl0eSIsInJ1bGVSZXN1bHQiLCJ2aXNpYmlsaXR5IiwidmlzaWJpbGl0eV9jb25kaXRpb24iLCJxdWVzdGlvbklkIiwidGV4dExDIiwidG9Mb3dlckNhc2UiLCJyZXBsYWNlIiwicSIsIl9xJGxhYmVsIiwiaXNBbnN3ZXJlZCIsImFuc3dlciIsImNoZWNrSWZWYWx1ZU1hdGNoIiwiY29tcGFyZVZhbCIsImFuc3dlckFycmF5Iiwic29tZSIsImdldFR5cGVJbml0aWFsVmFsdWUiLCJ0eXBlIiwiZ2V0VHlwZVZhbHVlIiwiYW5zIiwic3BsaXQiLCJ0cmFuc2Zvcm1BbndlcnNGb3JtYXQiLCJkaXNjbGFpbWVyX2FjY2VwdGVkIiwiZXh0cmFfcXVlc3Rpb25zIiwiZm9ybWF0dGVkRVEiLCJxdWVzdGlvbl9pZCIsInBhcnNlSW50IiwicG9wIiwiUXVlc3Rpb25UeXBlX1RleHQiLCJRdWVzdGlvblR5cGVfVGV4dEFyZWEiLCJRdWVzdGlvblR5cGVfUmFkaW9CdXR0b24iLCJnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50IiwicXVlc3Rpb25UeXBlIiwiRnJhZ21lbnQiLCJyZWFkT25seSIsImFsbG93RWRpdCIsInJlbmRlclJ1bGUiLCJyZW5kZXJRdWVzdGlvbiIsInN1Yl9xdWVzdGlvbiIsIl9xJHN1Yl9xdWVzdGlvbl9ydWxlcyIsIlF1ZXN0aW9uRmllbGRDb21wb25lbnQiLCJmb3JtaWtQcm9wcyIsImhhbmRsZUNoYW5nZSIsIm9uQmx1ciIsImhhbmRsZUJsdXIiLCJ0b3VjaGVkIiwiQm9vbGVhbiIsInN1Yl9xdWVzdGlvbl9ydWxlcyIsInVzZVNlbGVjdG9yIiwic2hhbGxvd0VxdWFsIiwiQ2FyZEhlYWRlciIsIkljb25CdXR0b24iLCJDb2xsYXBzZSIsIkNhcmRDb250ZW50IiwiRXhwYW5kTW9yZUljb24iLCJBc3NpZ25lZEZpbHRlciIsIm9uRmlsdGVyIiwiZmlsdGVyVmFsdWVzIiwic3RhdGUiLCJpc0V4cGFuZGVkIiwic2V0SXNFeHBhbmRlZCIsImFzc2lnbmVkVmFsdWVzIiwiaGFuZGxlRmlsdGVyQ2hhbmdlIiwibmV3RmlsdGVyIiwidGl0bGVXcmFwcGVyIiwiYWN0aW9uIiwiZGlzYWJsZVJpcHBsZSIsInRyYW5zZm9ybSIsInRyYW5zaXRpb24iLCJpbiIsInRpbWVvdXQiLCJ1bm1vdW50T25FeGl0Iiwic3giLCJweSIsInBiIiwiYXNzaWduZWQiLCJ1c2VFZmZlY3QiLCJCYWRnZUZlYXR1cmVGaWx0ZXIiLCJiYWRnZV9mZWF0dXJlc190eXBlcyIsIm5ld0ZpbHRlcnMiLCJmIiwiYmYiLCJ1c2VSZWYiLCJTdGFjayIsIkZpbHRlckxpc3RJY29uIiwiQmFkZ2UiLCJCdXR0b24iLCJDYXJkIiwiRGl2aWRlciIsIlBhcGVyIiwiY29ubmVjdCIsIlRpY2tldFR5cGVGaWx0ZXIiLCJTdGF0dXNGaWx0ZXIiLCJGcmVlUGFpZEZpbHRlciIsIlByb21vQ29kZUZpbHRlciIsIkZpbHRlciIsIm9uUmVzZXQiLCJzaG93RmlsdGVyTGlzdCIsInNldFNob3dGaWx0ZXJMaXN0Iiwic2hvd0RhdGVwaWNrZXIiLCJzZXRTaG93RGF0ZXBpY2tlciIsImZpbHRlck51bUFjdGl2ZSIsInNldEZpbHRlck51bUFjdGl2ZSIsImZpbHRlclJlZiIsImhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSIsImV2ZW50IiwiY3VycmVudCIsImNvbnRhaW5zIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJNQVJHSU5fUklHSFRfV0lUSF9CQURHRSIsIkFERF9GSUxURVJfTlVNQkVSIiwiY2FsY3VsYXRlQWN0aXZlRmlsdGVycyIsImNvdW50IiwidHJpbSIsInRvZ2dsZSIsImhhbmRsZUZpbHRlclJlc2V0IiwiZmlsdGVyQ29udGFpbmVyIiwicmVmIiwiYWxpZ25JdGVtcyIsInB0IiwiYmFkZ2VDb250ZW50IiwibXIiLCJmaWx0ZXJJY29uIiwiZmlsdGVyTGFiZWwiLCJmaWx0ZXJMaXN0Q29udGFpbmVyIiwiY29udGFpbmVyIiwiZWxldmF0aW9uIiwiZmlsdGVyQ2hlY2tib3hDb250YWluZXIiLCJ2YXJpYW50IiwiY2xlYW5CdXR0b24iLCJtYXBTdGF0ZVRvUHJvcHMiLCJwcm9tb0NvZGUiLCJzZXRQcm9tb0NvZGUiLCJkZWJvdW5jZVRpbWVyIiwiREVCT1VOQ0VfVkFMVUUiLCJuZXdQcm9tb0NvZGUiLCJjbGVhclRpbWVvdXQiLCJwbGFjZWhvbGRlciIsInN0eWxlZCIsIlNlYXJjaEljb24iLCJDbG9zZUljb24iLCJJbnB1dEJhc2UiLCJTZWFyY2hDb250YWluZXIiLCJwb3NpdGlvbiIsIm1hcmdpblJpZ2h0IiwibWFyZ2luTGVmdCIsImRpc3BsYXkiLCJTZWFyY2hJY29uV3JhcHBlciIsImhlaWdodCIsImp1c3RpZnlDb250ZW50IiwiU3R5bGVkSW5wdXRCYXNlIiwiYm9yZGVyQm90dG9tIiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiLCJDbG9zZUljb25XcmFwcGVyIiwicGFkZGluZyIsInRvcCIsInJpZ2h0IiwiY3Vyc29yIiwiekluZGV4IiwiU2VhcmNoIiwib25TZWFyY2giLCJzaG93Q2xvc2UiLCJzZXRTaG93Q2xvc2UiLCJzZWFyY2hWYWx1ZSIsInNldFNlYXJjaFZhbHVlIiwib25LZXlEb3duIiwibmF0aXZlRXZlbnQiLCJyZXNldFNlYXJjaCIsImlucHV0UHJvcHMiLCJJbXBvcnRFeHBvcnRJY29uIiwiU29ydCIsIm9uU29ydCIsInNob3dTb3J0Iiwic2V0U2hvd1NvcnQiLCJzb3J0UmVmIiwiaGFuZGxlU29ydENsaWNrT3V0c2lkZSIsInNvcnRDb250YWluZXIiLCJzb3J0SWNvbiIsInNvcnRMYWJlbCIsInNvcnRMaXN0Q29udGFpbmVyIiwidGlja2V0X3R5cGVzIiwiR3JpZCIsIkZpbHRlcnMiLCJqdXN0aWZ5IiwiaXRlbSIsInhzIiwiZ2FwIiwiZmlsdGVyU29ydENvbnRhaW5lciIsImZvb3RlciIsImNhbmNlbEJ0biIsInNpemUiLCJzYXZlQnRuIiwiRXJyb3JJY29uIiwiRXJyb3JMYWJlbCIsImRhdGFUZXN0SWQiLCJlcnJvckxhYmVsIiwiQmFja2Ryb3AiLCJDaXJjdWxhclByb2dyZXNzIiwiTG9hZGVyIiwiZHJhd2VyIiwidXNlRGlzcGF0Y2giLCJJbmZpbml0ZVNjcm9sbCIsIk9yZGVyc0xpc3QiLCJPTkVfUEFHRV9ORVhUIiwiaGFzTW9yZTJGZXRjaCIsInNob3VsZEZldGNoRGF0YSIsIk15T3JkZXJzVGlja2V0cyIsIm1lbWJlck9yZGVycyIsIm9yZGVyc19jdXJyZW50X3BhZ2UiLCJvcmRlcnNfbGFzdF9wYWdlIiwib3JkZXJzX3Blcl9wYWdlIiwidGlja2V0X3Blcl9wYWdlIiwiZmV0Y2hEYXRhIiwiY3VycmVudF9wYWdlIiwib3ZlcmZsb3ciLCJtYXJnaW4iLCJkYXRhTGVuZ3RoIiwibmV4dCIsImhhc01vcmUiLCJzY3JvbGxUaHJlc2hvbGQiLCJzY3JvbGxhYmxlVGFyZ2V0Iiwibm9PcmRlcnNGb3VuZCIsIm5vT3JkZXJzSWNvbldyYXBwZXIiLCJjYWxjdWxhdGVPcmRlclRvdGFscyIsImZvcm1hdEN1cnJlbmN5IiwiX0ZyYWdtZW50IiwiT3JkZXJTdW1tYXJ5VGFibGUiLCJkaXNjb3VudFRvdGFsIiwicmVmdW5kVG90YWwiLCJ0YXhlc1RvdGFsIiwiYW1vdW50VG90YWwiLCJ0aWNrZXRTdW1tYXJ5IiwiaHVuZHJlZCIsIm9yZGVyU3VtbWFyeVRhYmxlIiwidGlja2V0VG90YWwiLCJxdHkiLCJ0aWNrZXRfdHlwZSIsImNvc3QiLCJhbGlnbiIsImN1cnJlbmN5IiwiY3JlYXRlZCIsImRpc2NvdW50X2Ftb3VudCIsInRheGVzX2Ftb3VudCIsInNoYXBlIiwidXNlTm93IiwidGlja2V0c1JlZnVuZGFibGUiLCJSZWZ1bmRFbWFpbFN1cHBvcnQiLCJzdWJtaXRSZXF1ZXN0Iiwib25SZWZ1bmRDbGljayIsIm9uUmVmdW5kRGV0YWlsQ2xpY2siLCJvbkVtYWlsU3VwcG9ydENsaWNrIiwibm93IiwiaXNJblJlZnVuZGFibGVQZXJpb2QiLCJyZWdpc3RyYXRpb25fYWxsb3dlZF9yZWZ1bmRfcmVxdWVzdF90aWxsX2RhdGUiLCJhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCIsImlzUmVmdW5kYWJsZSIsImhhc1JlZnVuZFJlcXVlc3RzIiwicm9sZSIsIm9yZGVyU3VtbWFyeUJ1dHRvbiIsInJlZnVuZERpc2FibGVkIiwiYXJyYXlPZiIsIk9yZGVyU3VtbWFyeSIsIm9yZGVyU3VtbWFyeVdyYXBwZXIiLCJweCIsIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm8iLCJtZW1iZXJUaWNrZXRzIiwiT3JkZXJMaXN0VGlja2V0cyIsIkFzc2lnblRvTWUiLCJ1c2VyVGlja2V0cyIsInVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UiLCJ1c2VyX3RpY2tldHNfbGFzdF9wYWdlIiwib3JkZXJUaWNrZXRDb250YWluZXIiLCJ0aWNrZXRMaXN0Q29udGFpbmVyIiwiaXNSZWZ1bmRpbmciLCJpc1NlbGVjdGVkVG9SZWZ1bmQiLCJzZWxlY3RUb1JlZnVuZCIsImlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCIsIm5vVGlja2V0c0ZvdW5kIiwiQXR0ZW5kZWVTdGF0dXMiLCJfdGlja2V0JG93bmVyIiwiX3RpY2tldCRvd25lcjIiLCJfdGlja2V0JG9yZGVyIiwiX3RpY2tldCRvcmRlcjIiLCJ0aWNrZXRPd25lckVtYWlsIiwiYXNzaWduZWRCeVRleHQiLCJvd25lcl9maXJzdF9uYW1lIiwib3duZXJfbGFzdF9uYW1lIiwiaXNfYWN0aXZlIiwiUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIiwiT3JkZXJMaXN0SXRlbSIsIl9vcmRlciRtZW1iZXJUaWNrZXRzIiwiX29yZGVyJG1lbWJlclRpY2tldHMyIiwib25QYWdpbmF0ZUNsaWNrIiwidGlja2V0c1RvUmVmdW5kIiwiaXRlbXNUb0Rpc3BsYXkiLCJzZXRJdGVtc1RvRGlzcGxheSIsInNsaWNlZFRpY2tldHMiLCJzbGljZSIsIm9uVmlld01vcmUiLCJ0aWNrZXRzX3RvdGFsIiwib25WaWV3TGVzcyIsImZpbmQiLCJ2aWV3TW9yZUJ1dHRvbiIsIlRpY2tldFN0YXR1cyIsImdldFN1bW1pdFJlYXNzaWduRGF0ZSIsIlRpY2tldERldGFpbCIsInVzZVRpY2tldERldGFpbHMiLCJUaWNrZXRSZWFzc2lnbiIsIlRpY2tldEFzc2lnbiIsIm1vZGFsVmlld3MiLCJkZXRhaWwiLCJyZWFzc2lnbiIsImFzc2lnbiIsIlRpY2tldENUQXMiLCJpc0luY29tcGxldGUiLCJpc1VuYXNzaWduZWQiLCJpc1JlYXNzaWduYWJsZSIsIm9uT3BlbkNsaWNrIiwiYXNzaWduVGlja2V0QnV0dG9uIiwidmlld0ZpbmlzaFRpY2tldEJ1dHRvbiIsInJlYXNzaWduQnV0dG9uIiwiX3RpY2tldCR0aWNrZXRfdHlwZSIsIl90aWNrZXQkYmFkZ2UiLCJfdGlja2V0JG93bmVyMyIsIl9pc0V4dGVybmFsQXNzaWduZWRUaWNrZXQiLCJjYW5SZWFzc2lnbiIsIm1vZGFsT3BlbiIsInNldE1vZGFsT3BlbiIsInJlYXNzaWduRGF0ZSIsImhhbmRsZUNsb3NlTW9kYWwiLCJoYW5kbGVPcGVuTW9kYWwiLCJ2aWV3Iiwib3JkZXJXcmFwcGVyIiwicmVmdW5kTW9kYWwiLCJkaXNhYmxlZFJlZnVuZCIsInNlbGVjdGVkIiwiY2hlY2tib3giLCJwbCIsInRpY2tldFRpY2tldFR5cGUiLCJiYWRnZUZlYXR1cmVXcmFwcGVyIiwicHIiLCJiYWRnZSIsImZlYXR1cmVzIiwiYmFkZ2VGZWF0dXJlIiwic3JjIiwiaW1hZ2UiLCJhbHQiLCJ0aWNrZXRObyIsImxnIiwibWluSGVpZ2h0IiwidGlja2V0QWN0aW9uQnV0dG9ucyIsIm93bmVySWQiLCJ0b3RhbF9yZWZ1bmRlZF9hbW91bnQiLCJUYWJzIiwiVGFiIiwiUmVmdW5kUmVxdWVzdHNNb2RhbCIsIlJlZnVuZERldGFpbHMiLCJUYWJQYW5lbCIsInByb3BzIiwiaW5kZXgiLCJoaWRkZW4iLCJPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSIsImlzTW9iaWxlIiwiZGV0YWlsc1JlcXVpcmVkIiwic2V0VmFsdWUiLCJfIiwic2V0VGlja2V0c1RvUmVmdW5kIiwic2V0U3VibWl0UmVxdWVzdCIsInJlZnVuZERldGFpbHNPcGVuIiwic2V0UmVmdW5kRGV0YWlsc09wZW4iLCJ1bnNlbGVjdFJlZnVuZFRpY2tldHMiLCJmaWx0ZXJTZWxlY3RlZCIsInNlbGVjdGVkVGlja2V0IiwiY2xvc2VTdWJtaXRSZXF1ZXN0IiwicmVzZXRBbGxSZWZ1bmRTdGF0dXNlcyIsIm1vcmVEZXRhaWxzIiwiYm9yZGVyQ29sb3IiLCJ0YWJCdXR0b25zIiwibWQiLCJvblJlZnVuZFN1Y2Nlc3NDbG9zZSIsIm9uQ2xvc2VTbGlkZXIiLCJ1c2VUaGVtZSIsInVzZU1lZGlhUXVlcnkiLCJnZXRGb3JtYXR0ZWREYXRlIiwiYnJlYWtwb2ludHMiLCJkb3duIiwiaXNNb2JpbGVWaWV3YWJsZSIsInNldE1vYmlsZVZpZXdhYmxlIiwidGlja2V0c19wYWdlX2N1cnJlbnQiLCJvcmRlclRpY2tldEluZm9Db250YWluZXIiLCJvcmRlclRpY2tldEluZm8iLCJibGFja0J1dHRvbiIsInJvd1NwYWNpbmciLCJjb2x1bW5TcGFjaW5nIiwic20iLCJkaXNwbGF5X25vbmUiLCJmbGV4RGlyZWN0aW9uIiwidXNlTWVtbyIsIlJpZ2h0RHJhd2VyIiwiUmVmdW5kUmVxdWVzdGVkVGlja2V0IiwiZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyIsInJlcXVlc3RlZFRpY2tldHMiLCJjbG9zZVNsaWRlciIsInJlZnVuZERldGFpbHMiLCJSZWZ1bmRTdGF0dXMiLCJHUklEXzYiLCJHUklEXzEyIiwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyIiwicmVmdW5kVGlja2V0QXR0ZW5kZWUiLCJnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvciIsInN0YXR1c0NvbG9yIiwiYnV0dG9uUGlsbCIsIlN0eWxlZEVuZ2luZVByb3ZpZGVyIiwiQ2hlY2tDaXJjbGVJY29uIiwiU1RFUF9PTkUiLCJTVEVQX1RIUkVFIiwiU1RFUF9UV08iLCJzdGVwIiwic2V0U3RlcCIsImVycm9yTXNnIiwic2V0RXJyb3JNc2ciLCJyZWZ1bmRTdWNjZXNzIiwic2V0UmVmdW5kU3VjY2VzcyIsImNvbmZpcm1SZWZ1bmQiLCJnb0JhY2tUb1JlZnVuZCIsInJlZnVuZFRpY2tldHMiLCJyZWZ1bmRTdGVwT25lIiwic3VidGl0bGUiLCJ0aWNrZXRMaXN0IiwiYWN0aW9uQnV0dG9ucyIsImNhbmNlbEJ1dHRvbiIsImNvbnRpbnVlQnV0dG9uIiwicmVmdW5kU3RlcFR3byIsInJlZnVuZEVycm9yTXNnIiwiQ1RBQnV0dG9uV3JhcHBlciIsInJlZnVuZFN0ZXBUaHJlZSIsInJlZnVuZFN1Y2Nlc3NmdWwiLCJzdWNjZXNzTXNnIiwic3VjY2Vzc01zZzIiLCJyZW5kZXJTdGVwcyIsImluamVjdEZpcnN0IiwiVHlwb2dyYXBoeSIsIkRyYXdlciIsIkNsb3NlIiwiYW5jaG9yIiwiTW9kYWxQcm9wcyIsImtlZXBNb3VudGVkIiwiaGVhZGVyIiwiY2xvc2VCdG4iLCJmbG9hdCIsImd1dHRlckJvdHRvbSIsIm9uZU9mVHlwZSIsImdldFN1bW1pdEZvcm1hdHRlZERhdGUiLCJTdW1taXRIZWFkZXIiLCJ3aWRnZXRIZWFkZXIiLCJzdW1taXRUaXRsZURhdGUiLCJ5dXAiLCJBc3NpZ25Gb3JtIiwibmV3X2F0dGVuZGVlX2VtYWlsIiwicGVyc29uYWxfbWVzc2FnZSIsIm11bHRpbGluZSIsIm1pblJvd3MiLCJ1c2VDb250ZXh0IiwiX3RpY2tldCR0eXBlIiwidGlja2V0QXNzaWduZWQiLCJzZXRUaWNrZXRBc3NpZ25lZCIsImN1cnJlbnRUaWNrZXQiLCJvbkFzc2lnblRvT3RoZXIiLCJvbkFzc2lnblRvTWUiLCJvbkNsb3NlRVFGb3JtIiwib25DbG9zZVNhdmVNZXNzYWdlIiwib25TYXZlRVEiLCJyZXNvbHZlIiwidGlja2V0QXNzaWduQ29udGFpbmVyIiwiYWxpZ25DZW50ZXIiLCJvd25lcl9lbWFpbCIsIm9yZGVyTm8iLCJ0aWNrZXRUeXBlIiwiYXNzaWduQnRuIiwiYXR0ZW5kZWVDb250YWluZXIiLCJhdHRlbmRlZUluZm9UaXRsZSIsImF0dGVuZGVlSW5mb05vdGUiLCJBdXRvY29tcGxldGUiLCJxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyIsIkNvbXBhbnlGaWVsZCIsInN1bW1pdElkIiwiaW5wdXRWYWx1ZSIsInNldElucHV0VmFsdWUiLCJvcHRpb25zIiwic2V0T3B0aW9ucyIsInNldEZpZWxkVG91Y2hlZCIsInJlc3VsdHMiLCJuZXdPcHRpb25zIiwiYXV0b0NvbXBsZXRlIiwiZnJlZVNvbG8iLCJpbmNsdWRlSW5wdXRJbkxpc3QiLCJmaWx0ZXJTZWxlY3RlZE9wdGlvbnMiLCJnZXRPcHRpb25MYWJlbCIsIm9wdGlvbiIsInRtcFZhbHVlIiwib25JbnB1dENoYW5nZSIsIm5ld0lucHV0VmFsdWUiLCJmaWx0ZXJPcHRpb25zIiwiZmlsdGVyZWQiLCJpc0V4aXN0aW5nIiwicmVuZGVySW5wdXQiLCJyZW5kZXJPcHRpb24iLCJvcHRpb25Qcm9wcyIsIlRpY2tldERlbGVnYXRpb25GaWVsZHMiLCJkZWxlZ2F0ZWRfZmlyc3RfbmFtZSIsImRlbGVnYXRlZF9sYXN0X25hbWUiLCJUaWNrZXRPd25lckZpZWxkcyIsIlRpY2tldEZvcm0iLCJjYW5FZGl0IiwidGlja2V0TWFuYWdlciIsImFsbG93c0RlbGVnYXRpb24iLCJhbGxvd3NfdG9fZGVsZWdhdGUiLCJyZWR1Y2UiLCJkZWxlZ2F0ZWRUbyIsImFkZGl0aW9uYWxEZXRhaWxzIiwiaW5mb05vdGUiLCJRUkNvZGUiLCJGaWxlRG93bmxvYWRPdXRsaW5lZCIsIkRvd25sb2FkSWNvbiIsIkVtYWlsT3V0bGluZWQiLCJFbWFpbEljb24iLCJ1c2VHZXRUaWNrZXQiLCJUV09fSVRFTSIsIl90aWNrZXQkb3JkZXIzIiwic2F2ZU1lc3NhZ2UiLCJzZXRTYXZlTWVzc2FnZSIsInNlbnRDb25maXJtYXRpb24iLCJzZXRTZW50Q29uZmlybWF0aW9uIiwiaXNVc2VyT3JkZXJPd25lciIsIm93bmVyX2lkIiwiaXNVc2VyVGlja2V0T3duZXIiLCJjYW5FZGl0VGlja2V0RGF0YSIsImFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnMiLCJpc0NvbXBsZXRlIiwib25TYXZlIiwiZGVzY3JpcHRpb24iLCJkb3dubG9hZFRpY2tldFBkZiIsIm9uU2VuZEVtYWlsIiwidGlja2V0RGV0YWlsQ29udGFpbmVyIiwicXJDb2RlIiwibWF4V2lkdGgiLCJxcl9jb2RlIiwidmlld0JveCIsInFyTm90ZSIsImlzX3ZpcnR1YWwiLCJhY3Rpb25CdXR0b25zQ29udGFpbmVyIiwiZG93bmxvYWRCdG4iLCJzZW5kQnRuIiwic2VudCIsIm9yZGVyTnVtYmVyIiwiUmVhc3NpZ25Gb3JtIiwidGlja2V0UmVhc3NpZ25lZCIsInNldFRpY2tldFJlYXNzaWduZWQiLCJvblJlYXNzaWduIiwiZ2V0TGFiZWxzIiwiaGVhZGVyTm90ZSIsInRpY2tldFJlYXNzaWduQ29udGFpbmVyIiwiQ29udGFpbmVyIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzIiwiaXNBY3RpdmUiLCJyZWZ1bmRSZXF1ZXN0cyIsInRpY2tldFN0YXR1c0NvbnRhaW5lciIsImJ1dHRvblJlZnVuZFJlcXVlc3RlZCIsImJ1dHRvbkluY29tcGxldGUiLCJidXR0b25VbmFzc2lnbmVkIiwiYnV0dG9uQ29tcGxldGUiLCJidXR0b25DYW5jZWxsZWQiLCJBc3NpZ25lZFRvTWUiLCJXaWRnZXRUYWJzIiwidGFiIiwic2V0VGFiIiwiaGFuZGxlVGFiQ2hhbmdlIiwibmV3VGFiIiwidGFiV3JhcHBlciIsIldpZGdldFdyYXBwZXIiLCJtZXNzYWdlQ2FsbGJhY2siLCJsb2FkaW5nIiwiYXBpRXJyb3IiLCJyZXNldEFwaUVycm9yIiwiZmlsdGVyVmFsdWUiLCJzb3J0VmFsdWUiLCJ0aWNrZXRzVGl0bGVUZXh0IiwiUHJvdmlkZXIiLCJydW4iLCJzbW9vdGhTY3JvbGxUbyIsInRhcmdldFNjcm9sbFRvcCIsImR1cmF0aW9uIiwic3RhcnRTY3JvbGxUb3AiLCJzY3JvbGxUb3AiLCJkaXN0YW5jZSIsInN0YXJ0VGltZSIsImFuaW1hdGlvblN0ZXAiLCJ0aW1lc3RhbXAiLCJlbGFwc2VkIiwicHJvZ3Jlc3MiLCJNYXRoIiwibWluIiwiZWFzZUluT3V0UXVhZCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImNvbnRhaW5lcklkIiwiaXNWYWxpZCIsImVycm9yQXJyYXkiLCJlcnJvckNvdW50IiwiZWxlbWVudHNTb3J0ZWQiLCJyZXN1bHQiLCJlbGVtZW50IiwicXVlcnlTZWxlY3RvciIsImVsUmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImEiLCJiIiwiZ2V0RWxlbWVudEJ5SWQiLCJjb250YWluZXJSZWN0IiwiZWxlbU9mZmVzdCIsImFuaW1hdGlvbkR1cmF0aW9uIiwiaXNUaWNrZXRSZWZ1bmRhYmxlIiwiU1RBVFVTX0NPTVBMRVRFIiwiU1RBVFVTX0lOQ09NUExFVEUiLCJTVEFUVVNfQ0FOQ0VMTEVEIiwiU1RBVFVTX1VOQVNTSUdORUQiLCJfdGlja2V0JHByb21vX2NvZGUiLCJfdGlja2V0JG93bmVyNCIsIl90aWNrZXQkdGlja2V0X3R5cGUyIiwiX3RpY2tldCRwcm9tb19jb2RlMiIsImdldFN0YXR1cyIsImFsbG93c0RlbGVnYXRlIiwicHJvbW9fY29kZSIsImFsbG93c190b19yZWFzc2lnbiIsImluaXRSZWFjdEkxOG5leHQiLCJMYW5ndWFnZURldGVjdG9yIiwiZW4iLCJlcyIsInVzZSIsImluaXQiLCJmYWxsYmFja0xuZyIsImRlYnVnIiwicmVzb3VyY2VzIiwidHJhbnNsYXRpb24iLCJpbnRlcnBvbGF0aW9uIiwiZXNjYXBlVmFsdWUiLCJMT0dPVVRfVVNFUiIsIlNUQVJUX0xPQURJTkciLCJTVE9QX0xPQURJTkciLCJSRVNFVF9MT0FESU5HIiwiaGFzTG9hZGVkQWxsRGF0YSIsIkRFRkFVTFRfRklMVEVSX1NUQVRFIiwiREVGQVVMVF9TVEFURSIsIndpZGdldExvYWRpbmciLCJjdXJyZW50X3RhYiIsImlzT3JkZXJMb2FkaW5nIiwib3JkZXJzX3RvdGFsIiwidGlja2V0X2N1cnJlbnRfcGFnZSIsInRpY2tldF9sYXN0X3BhZ2UiLCJ0aWNrZXRfdG90YWwiLCJ1c2VyX3RpY2tldHNfdG90YWwiLCJXaWRnZXRSZWR1Y2VyIiwidG90YWwiLCJsYXN0X3BhZ2UiLCJmb3JtZXJPcmRlciIsIm8iLCJfZGF0YSQiLCJ1cGRhdGVkT3JkZXIiLCJ0aWNrZXRzX3BhZ2VfbGFzdCIsIm1vIiwiX3RpY2tldHNSZWZ1bmRSZXF1ZXN0IiwidXBkYXRlZFRpY2tldHMiLCJ0cnIiLCJ0aWNrZXREYXRhIiwibmV3T3JkZXJzIiwibmV3VGlja2V0cyIsImNvbmZpZ3VyZVN0b3JlIiwicGVyc2lzdFN0b3JlIiwicGVyc2lzdFJlZHVjZXIiLCJGTFVTSCIsIlJFSFlEUkFURSIsIlBBVVNFIiwiUEVSU0lTVCIsIlBVUkdFIiwiUkVHSVNURVIiLCJzdG9yYWdlIiwiY29tYmluZVJlZHVjZXJzIiwiZ2V0U3RvcmUiLCJjbGllbnRJZCIsImxvZ2luVXJsIiwicmVkdWNlcnMiLCJzdG9yZSIsInJlZHVjZXIiLCJtaWRkbGV3YXJlIiwiZ2V0RGVmYXVsdE1pZGRsZXdhcmUiLCJ0aHVuayIsImV4dHJhQXJndW1lbnQiLCJpbW11dGFibGVDaGVjayIsInNlcmlhbGl6YWJsZUNoZWNrIiwiaWdub3JlZEFjdGlvbnMiLCJ1c2VJbml0U3RvcmUiLCJjb25maWciLCJwZXJzaXN0b3IiLCJpbml0TG9nT3V0IiwiZ2V0QWNjZXNzVG9rZW4iLCJTZW50cnkiLCJjYXB0dXJlRXhjZXB0aW9uIiwiTEFTVF9IT1VSX09GXzI0X0hPVVIiLCJMQVNUX01JTlVURV9PRl9IT1VSIiwiT05FX0RBWSIsIlNUQVRVU19QRU5ESU5HIiwiU1RBVFVTX0VSUk9SIiwiU1RBVFVTX1BST0NFU1NJTkciLCJTVEFUVVNfUkVGVU5EX1BFTkRJTkciLCJTVEFUVVNfUkVGVU5EX0FQUFJPVkVEIiwiU1RBVFVTX1JFRlVORF9SRUpFQ1RFRCIsIlNUQVRVU19SRUZVTkRfUEVORElOR19MQyIsIlNUQVRVU19SRUZVTkRfQVBQUk9WRURfTEMiLCJTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDIiwiSkVTVF9USU1FT1VUX0lOX01JTExJU0VDIiwiT05FX0lURU0iLCJGSVZFX0lURU0iLCJTSVhfSVRFTSIsIm1vbWVudCIsImxvY2FsZSIsImRlZmF1bHRPcHRpb25zIiwibWluaW11bUZyYWN0aW9uRGlnaXRzIiwibWF4aW11bUZyYWN0aW9uRGlnaXRzIiwiZm9ybWF0dGVyIiwiSW50bCIsIk51bWJlckZvcm1hdCIsImZvcm1hdCIsImRhdGV0aW1lIiwidGltZVpvbmUiLCJ0eiIsInVuaXgiLCJyZWZ1bmRlZF9hbW91bnQiLCJhbW91bnQiLCJwdXJjaGFzZVRpY2tldFRvdGFsIiwiY3VycmVuY3lPYmplY3QiLCJ0aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGUiLCJ0dCIsInRpY2tldF90eXBlX2lkIiwicHVyY2hhc2VUb3RhbCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImdldE9yZGVyVGlja2V0cyIsIl9vcmRlcnMkIiwib3JkZXJzIiwiZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzIiwidHMiLCJzZXRIb3VycyIsImRlZmF1bHRDdXJyZW50VGltZSIsInJvdW5kIiwiRGF0ZSIsImdldE5vdyIsInRpbWVyU3RhdGUiLCJub3dVdGMiLCJyZXF1ZXN0ZWRQYWdlIiwiY3VycmVudFBhZ2UiLCJsYXN0UGFnZSIsImlzU2FtZVBhZ2UiLCJpc0xhc3RQYWdlIiwiY2hlY2tTdW1taXRQYXN0IiwicmVhc3NpZ25fZGF0ZSIsInJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUiLCJlbmRfZGF0ZSIsImNoZWNrU3VtbWl0U3RhcnRlZCIsInN0YXJ0X2RhdGUiLCJnZXRTdW1taXREYXlzRGlmZiIsInN0YXJ0RGF5IiwidGltZV96b25lX2lkIiwiZW5kRGF5IiwiZGF5cyIsImRpZmYiLCJmb3JtYXRTdGFydERhdGUiLCJmb3JtYXRFbmREYXRlIiwieWVhciIsIm1vbnRoIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsImdldFN1bW1pdExvY2F0aW9uIiwiX3N1bW1pdCRsb2NhdGlvbnMiLCJsb2NhdGlvbiIsImxvY2F0aW9ucyIsImwiLCJjbGFzc19uYW1lIiwiaXNfbWFpbiIsImNpdHkiLCJjb3VudHJ5IiwidXNlU3VtbWl0RGV0YWlscyIsIl9zdW1taXQkdGltZV96b25lIiwiX3N1bW1pdCR0aW1lX3pvbmUyIiwiZm9ybWF0dGVkRGF0ZSIsImZvcm1hdHRlZFJlYXNzaWduRGF0ZSIsInRpbWVfem9uZSIsImRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUiLCJpc1Bhc3QiLCJpc1N0YXJ0ZWQiLCJzdGF0dXNEYXRhIiwiZ2V0VGlja2V0U3RhdHVzS2V5IiwiZ2V0VGlja2V0U3RhdHVzRGF0YSIsImlzU3VtbWl0UGFzdCIsImdldFRpY2tldFJvbGUiLCJmZWF0dXJlIiwiZ2V0VGlja2V0VHlwZSIsImZpbmFsX2Ftb3VudCIsInJyIiwiZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRUaWNrZXRzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzMiIsImFsbFRpY2tldHMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXMzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNCIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczUiLCJnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczYiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM3IiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzOCIsImdldFR5cGVWYWxpZGF0aW9uIiwic2NoZW1hIiwib25lT2YiLCJvZiIsImluY2x1ZGVEZWxlZ2F0aW9uIiwiaW5jbHVkZUF0dGVuZGVlSW5mbyIsImluY2x1ZGVEaXNjbGFpbWVyIiwib25seVJlbGV2YW50Iiwic3ViUXVlc3Rpb25TbHVnIiwic3ViQW5zd2VyIiwibWF0Y2giLCJkaXNjbGFpbWVyTWFuZGF0b3J5IiwibGF6eSIsInR5cGVFcnJvciIsIl9xJHN1Yl9xdWVzdGlvbl9ydWxlczIiLCJzdWJRdWVzdGlvbiIsIm51bGxhYmxlIiwid2hlbiIsImlzIiwicXVlc3Rpb25BbnMiLCJzY2giLCJQZXJzaXN0R2F0ZSIsIk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0Iiwic3VwcG9ydEVtYWlsIiwiaGFuZGxlQmVmb3JlTGlmdCIsIlVSTFNlYXJjaFBhcmFtcyIsInNlYXJjaCIsImZsdXNoIiwiaGFzIiwib25CZWZvcmVMaWZ0Il0sInNvdXJjZVJvb3QiOiIifQ==
|
|
9508
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QztBQUMzQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQzFURDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2lGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNMakY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNva0I7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdkJwa0I7QUFDQTtBQUNBO0FBQ0E7QUFDNkQ7Ozs7Ozs7Ozs7Ozs7OztBQ0o3RDtBQUNBO0FBQzZCOzs7Ozs7Ozs7Ozs7Ozs7O0FDRjdCO0FBQ0E7QUFDQTtBQUM2RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDSDdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDaU47Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNSak47QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ3l0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDOUJ6dEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUM0Zjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdkI1ZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQzJFOzs7Ozs7Ozs7Ozs7Ozs7O0FDTDNFO0FBQ0E7QUFDQTtBQUN3RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNIeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDdU47Ozs7Ozs7Ozs7Ozs7OztBQ1Z2TjtBQUNBO0FBQzBCOzs7Ozs7Ozs7Ozs7Ozs7O0FDRjFCO0FBQ0E7QUFDQTtBQUM0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNINUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDOFg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuQjlYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNzSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDTnRJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZ007Ozs7Ozs7Ozs7Ozs7Ozs7O0FDUmhNO0FBQ0E7QUFDQTtBQUNBO0FBQ2dFOzs7Ozs7Ozs7Ozs7Ozs7QUNKaEU7QUFDQTtBQUNtQzs7Ozs7Ozs7Ozs7QUNGbkM7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQ0FBO1VBQ0E7O1VBRUE7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7O1VBRUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7Ozs7O1dDdEJBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQSxpQ0FBaUMsV0FBVztXQUM1QztXQUNBOzs7OztXQ1BBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EseUNBQXlDLHdDQUF3QztXQUNqRjtXQUNBO1dBQ0E7Ozs7O1dDUEE7Ozs7O1dDQUE7V0FDQTtXQUNBO1dBQ0EsdURBQXVELGlCQUFpQjtXQUN4RTtXQUNBLGdEQUFnRCxhQUFhO1dBQzdEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUN5QztBQUNOO0FBQ0k7QUFDdUI7QUFDVDtBQUNkO0FBQ2tCO0FBRUY7QUFBQTtBQUV2RCxNQUFNcUIsdUJBQXVCLEdBQUluZixLQUFLLElBQUs7RUFDekMsTUFBTTtJQUNKOFYsUUFBUTtJQUNSc0osWUFBWTtJQUNaM3JDLE1BQU07SUFDTnlELFVBQVU7SUFDVnhELElBQUk7SUFDSm1pQyxRQUFRO0lBQ1JyNkI7RUFDRixDQUFDLEdBQUd3a0IsS0FBSztFQUVULE1BQU07SUFBRWdXLEtBQUs7SUFBRVc7RUFBVSxDQUFDLEdBQUdGLG9EQUFZLENBQUM7SUFDeENYLFFBQVE7SUFDUnNKLFlBQVk7SUFDWjNyQyxNQUFNO0lBQ05DLElBQUk7SUFDSndELFVBQVU7SUFDVjIrQixRQUFRO0lBQ1JyNkI7RUFDRixDQUFDLENBQUM7RUFFRixNQUFNNmpDLGdCQUFnQixHQUFHQSxDQUFBLEtBQU07SUFDN0IsTUFBTTduQyxNQUFNLEdBQUcsSUFBSThuQyxlQUFlLENBQUNsaEMsTUFBTSxDQUFDczlCLFFBQVEsQ0FBQzZELE1BQU0sQ0FBQztJQUMxRCxNQUFNQyxLQUFLLEdBQUdob0MsTUFBTSxDQUFDaW9DLEdBQUcsQ0FBQyxZQUFZLENBQUM7SUFDdEMsSUFBSUQsS0FBSyxFQUFFeEosS0FBSyxDQUFDNWlDLFFBQVEsQ0FBQztNQUFFa1gsSUFBSSxFQUFFM1osaURBQVc7TUFBRTBFLE9BQU8sRUFBRTtJQUFLLENBQUMsQ0FBQztFQUNqRSxDQUFDO0VBRUQ0WSxnREFBUyxDQUFDLE1BQU07SUFDZCtuQixLQUFLLENBQUM1aUMsUUFBUSxDQUFDSSx5REFBZSxDQUFDQyxNQUFNLEVBQUVDLElBQUksQ0FBQyxDQUFDO0VBQy9DLENBQUMsRUFBRSxDQUFDRCxNQUFNLEVBQUVDLElBQUksQ0FBQyxDQUFDO0VBRWxCLG9CQUNFNkwsc0RBQUEsQ0FBQ2t3QixpREFBUTtJQUFDdUcsS0FBSyxFQUFFQSxLQUFNO0lBQUExMUIsUUFBQSxlQUNyQmYsc0RBQUEsQ0FBQzIvQix3RUFBVztNQUNWUSxZQUFZLEVBQUVMLGdCQUFpQjtNQUMvQmxRLE9BQU8sRUFBRSxJQUFLO01BQ2R3SCxTQUFTLEVBQUVBLFNBQVU7TUFBQXIyQixRQUFBLGVBRXJCZixzREFBQSxDQUFDcWxCLCtEQUFvQjtRQUFDNEIsV0FBVztRQUFBbG1CLFFBQUEsZUFDL0JmLHNEQUFBLENBQUMwdkIsaUVBQWEsSUFBRTtNQUFDLENBQ0c7SUFBQyxDQUNaO0VBQUMsQ0FDTixDQUFDO0FBRWYsQ0FBQztBQUVEa1EsdUJBQXVCLENBQUNyK0IsU0FBUyxHQUFHO0VBQ2xDZzFCLFFBQVEsRUFBRWwzQiwwREFBZ0I7RUFDMUJ3Z0MsWUFBWSxFQUFFeGdDLDBEQUFnQjtFQUM5Qm5MLE1BQU0sRUFBRW1MLDBEQUFnQjtFQUN4QjFILFVBQVUsRUFBRTBILDBEQUFnQjtFQUM1QmxMLElBQUksRUFBRWtMLDBEQUFnQjtFQUN0QmkzQixRQUFRLEVBQUVqM0IsMERBQWdCO0VBQzFCcEQsYUFBYSxFQUFFb0Qsd0RBQWNxQztBQUMvQixDQUFDO0FBRUQsaUVBQWVrK0IsdUJBQXVCLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9hY3Rpb25zLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0Fzc2lnbkVRRm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Db3B5VGV4dC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21EaWFsb2cvQ29udGV4dC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21EaWFsb2cvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ3VzdG9tVGhlbWUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvQ2hlY2tib3hRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvRHJvcGRvd25RdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL1RleHRRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvQXNzaWduZWRGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9CYWRnZUZlYXR1cmVGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9GaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9GcmVlUGFpZEZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1Byb21vQ29kZUZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1NlYXJjaC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1NvcnQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9TdGF0dXNGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9UaWNrZXRUeXBlRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRm9ybUZvb3Rlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9MYWJlbHMvRXJyb3JMYWJlbC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Mb2FkZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTXlPcmRlcnNUaWNrZXRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9PcmRlclN1bW1hcnlUYWJsZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvUmVmdW5kRW1haWxTdXBwb3J0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L0Fzc2lnbmVkVG9NZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L0F0dGVuZGVlU3RhdHVzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJMaXN0SXRlbS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdFRpY2tldHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZERldGFpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvUmVmdW5kUmVxdWVzdGVkVGlja2V0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZFN0YXR1cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SaWdodERyYXdlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9TdW1taXRIZWFkZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvQXNzaWduRm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvQ29tcGFueUZpZWxkL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXREZWxlZ2F0aW9uRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldEZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0T3duZXJGaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0UmVhc3NpZ24vY29tcG9uZW50cy9SZWFzc2lnbkZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0UmVhc3NpZ24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFRhYnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvV2lkZ2V0V3JhcHBlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlR2V0VGlja2V0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VTY3JvbGxUb0Vycm9yLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VUaWNrZXREZXRhaWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9pMThuL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9yZWR1Y2VyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9zdG9yZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvYXV0aC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvc3VtbWl0VXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL3RpY2tldFV0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0NvcHlUZXh0L3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Gb3JtRm9vdGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9MYWJlbHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL015T3JkZXJzVGlja2V0cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmlnaHREcmF3ZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1N1bW1pdEhlYWRlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRPd25lckZpZWxkcy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRSZWFzc2lnbi9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRUYWJzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRXcmFwcGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ29udGVudENvcHlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0luZm9cIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9UYWJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1Rvb2x0aXBcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkByZWR1eGpzL3Rvb2xraXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAc2VudHJ5L3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiZm9ybWlrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaTE4bmV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaWR0b2tlbi12ZXJpZmllclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm1vbWVudC10aW1lem9uZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInAtbGltaXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJwcm9wLXR5cGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1pMThuZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXFyLWNvZGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1yZWR1eFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0L2pzeC1ydW50aW1lXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXhcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJ5dXBcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL215LW9yZGVycy10aWNrZXRzLXdpZGdldC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiLCBbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCJdID0gZmFjdG9yeSgpO1xufSkodGhpcywgKCkgPT4ge1xucmV0dXJuICIsImltcG9ydCB7XG4gIGF1dGhFcnJvckhhbmRsZXIsXG4gIGdldFJlcXVlc3QsXG4gIGRlbGV0ZVJlcXVlc3QsXG4gIGNyZWF0ZUFjdGlvbixcbiAgc3RvcExvYWRpbmcsXG4gIHN0YXJ0TG9hZGluZyxcbiAgcHV0UmVxdWVzdFxufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCI7XG5pbXBvcnQgcExpbWl0IGZyb20gXCJwLWxpbWl0XCI7XG5pbXBvcnQgeyBnZXRJZFRva2VuIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0IHsgb2JqZWN0VG9RdWVyeVN0cmluZyB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL21ldGhvZHNcIjtcbmltcG9ydCBJZFRva2VuVmVyaWZpZXIgZnJvbSBcImlkdG9rZW4tdmVyaWZpZXJcIjtcbmltcG9ydCBpMThuIGZyb20gXCJpMThuZXh0XCI7XG5pbXBvcnQgeyBnZXRBY2Nlc3NUb2tlblNhZmVseSB9IGZyb20gXCIuL3V0aWxzL2F1dGhcIjtcbmltcG9ydCB7XG4gIEZJUlNUX1BBR0UsXG4gIERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gIFBST01JU0VfQkFUQ0hfTElNSVQsXG4gIEZJRlRZX1BFUl9QQUdFLFxuICBFUlJPUl9DT0RFUyxcbiAgVEFCU1xufSBmcm9tIFwiLi91dGlscy9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IFJFU0VUX1NUQVRFID0gXCJSRVNFVF9TVEFURVwiO1xuZXhwb3J0IGNvbnN0IFJFU0VUX0ZJTFRFUiA9IFwiUkVTRVRfRklMVEVSXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfQVBJX0VSUk9SID0gXCJSRVNFVF9BUElfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBTRVRfU1RBVEUgPSBcIlNFVF9TVEFURVwiO1xuZXhwb3J0IGNvbnN0IFNFVF9BUElfRVJST1IgPSBcIlNFVF9BUElfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBDSEFOR0VfRklMVEVSID0gXCJDSEFOR0VfRklMVEVSXCI7XG5leHBvcnQgY29uc3QgQ0hBTkdFX1NPUlQgPSBcIkNIQU5HRV9TT1JUXCI7XG5cbi8vIE9SREVSUyBDT05TVFNcbmV4cG9ydCBjb25zdCBHRVRfVVNFUl9PUkRFUlMgPSBcIkdFVF9PUkRFUlNcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfT1JERVIgPSBcIlJFRlVORF9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9BQ1RJVkVfT1JERVJfSUQgPSBcIlNFVF9BQ1RJVkVfT1JERVJfSURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVVNFUl9PUkRFUlMgPSBcIkZJTFRFUl9VU0VSX09SREVSU1wiO1xuXG4vLyBUSUNLRVRTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9NWV9BU1NJR05FRF9USUNLRVRTID0gXCJHRVRfTVlfQVNTSUdORURfVElDS0VUU1wiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9USUNLRVQgPSBcIlVQREFURV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9USUNLRVQgPSBcIlJFU0VUX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfVElDS0VUID0gXCJSRUNFSVZFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFTU9WRV9USUNLRVRfQVRURU5ERUUgPSBcIlJFTU9WRV9USUNLRVRfQVRURU5ERUVcIjtcbmV4cG9ydCBjb25zdCBBU1NJR05fVElDS0VUID0gXCJBU1NJR05fVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVGVU5EX1RJQ0tFVCA9IFwiUkVGVU5EX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFU0VORF9OT1RJRklDQVRJT04gPSBcIlJFU0VORF9OT1RJRklDQVRJT05cIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUU19CWV9PUkRFUiA9IFwiR0VUX1RJQ0tFVFNfQllfT1JERVJcIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUiA9IFwiR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBHRVRfT1JERVJfVElDS0VUX0RFVEFJTFMgPSBcIkdFVF9PUkRFUl9USUNLRVRfREVUQUlMU1wiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRfREVUQUlMUyA9IFwiR0VUX1RJQ0tFVF9ERVRBSUxTXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMgPSBcIlJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TXCI7XG5leHBvcnQgY29uc3QgVElDS0VUX0FUVEVOREVFX0tFWVMgPSB7XG4gIGVtYWlsOiBcImF0dGVuZGVlX2VtYWlsXCIsXG4gIGZpcnN0TmFtZTogXCJhdHRlbmRlZV9maXJzdF9uYW1lXCIsXG4gIGxhc3ROYW1lOiBcImF0dGVuZGVlX2xhc3RfbmFtZVwiLFxuICBjb21wYW55OiBcImF0dGVuZGVlX2NvbXBhbnlcIixcbiAgZGlzY2xhaW1lckFjY2VwdGVkOiBcImRpc2NsYWltZXJfYWNjZXB0ZWRcIixcbiAgZXh0cmFRdWVzdGlvbnM6IFwiZXh0cmFfcXVlc3Rpb25zXCJcbn07XG5leHBvcnQgY29uc3QgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCA9XG4gIFwiVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRFwiO1xuXG4vLyBVU0VSIENPTlRTXG5leHBvcnQgY29uc3QgU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRSA9IFwiU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFNUT1BfTE9BRElOR19JRFBfUFJPRklMRSA9IFwiU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgVVBEQVRFX0lEUF9QUk9GSUxFID0gXCJVUERBVEVfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBTRVRfVVNFUiA9IFwiU0VUX1VTRVJcIjtcblxuLy8gU1VNTUlUIENPTlNUU1xuZXhwb3J0IGNvbnN0IFNFVF9TVU1NSVQgPSBcIlNFVF9TVU1NSVRcIjtcbmV4cG9ydCBjb25zdCBHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlMgPSBcIkdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OU1wiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTID0gXCJSRUNFSVZFX01BUktFVElOR19TRVRUSU5HU1wiO1xuZXhwb3J0IGNvbnN0IENMRUFSX01BUktFVElOR19TRVRUSU5HUyA9IFwiQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTXCI7XG5cbmV4cG9ydCBjb25zdCByZXNldFRpY2tldCA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfVElDS0VUKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0U3RhdGUgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX1NUQVRFKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0RmlsdGVyID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9GSUxURVIpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRFcnJvciA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfQVBJX0VSUk9SKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldFJlZHVjZXJTdGF0ZSA9IChzdW1taXQsIHVzZXIpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX1NUQVRFKSh7IHN1bW1pdCwgdXNlciB9KSk7XG59O1xuXG4vLyBGSUxURVIgLyBTT1JUIENPTlNUQU5UU1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfREFURSA9IFwiRklMVEVSX1ZBUl9EQVRFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFID0gXCJGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFID0gXCJGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQgPSBcIkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMgPSBcIkZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9QUk9NT0NPREUgPSBcIkZJTFRFUl9WQVJfUFJPTU9DT0RFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9GUkVFX1BBSUQgPSBcIkZJTFRFUl9WQVJfRlJFRV9QQUlEXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIgPSBcIkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXCI7XG5cbi8vIEZJTFRFUiAvIFNPUlQgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IGNoYW5nZUZpbHRlciA9IChmaWx0ZXIpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oQ0hBTkdFX0ZJTFRFUikoZmlsdGVyKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2hhbmdlU29ydCA9IChzb3J0KSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKENIQU5HRV9TT1JUKShzb3J0KSk7XG59O1xuXG4vLyBGSUxURVIvU09SVCBQQVJTRVxuY29uc3QgcGFyc2VGaWx0ZXIgPSAoZmlsdGVyT2JqLCBjdXJyZW50VGFiKSA9PiB7XG4gIGNvbnN0IGZpbHRlciA9IFtdO1xuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfREFURSkge1xuICAgIGZpbHRlci5wdXNoKGBjcmVhdGVkW10ke2ZpbHRlck9iai5sb3dlcn0mJiR7ZmlsdGVyT2JqLnVwcGVyfWApO1xuICB9XG4gIGlmIChcbiAgICBmaWx0ZXJPYmouRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFICYmXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRS5sZW5ndGggPiAwXG4gICkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgY3VycmVudFRhYiA9PT0gVEFCUy5PUkRFUlNcbiAgICAgICAgPyBcInRpY2tldHNfYmFkZ2VfZmVhdHVyZXNfaWRcIlxuICAgICAgICA6IFwiYmFkZ2VfZmVhdHVyZXNfaWRcIjtcbiAgICBmaWx0ZXIucHVzaChcbiAgICAgIGAke2ZpbHRlck5hbWV9PT0ke2ZpbHRlck9iai5GSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUuam9pbihcInx8XCIpfWBcbiAgICApO1xuICB9XG4gIGlmIChcbiAgICBmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfVFlQRSAmJlxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9UWVBFLmxlbmd0aCA+IDBcbiAgKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBjdXJyZW50VGFiID09PSBUQUJTLk9SREVSUyA/IFwidGlja2V0c190eXBlX2lkXCIgOiBcInRpY2tldF90eXBlX2lkXCI7XG4gICAgZmlsdGVyLnB1c2goXG4gICAgICBgJHtmaWx0ZXJOYW1lfT09JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfVFlQRS5qb2luKFwifHxcIil9YFxuICAgICk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgY3VycmVudFRhYiA9PT0gVEFCUy5PUkRFUlMgPyBcInRpY2tldHNfYXNzaWduZWRfdG9cIiA6IFwiYXNzaWduZWRfdG9cIjtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJOYW1lfT09JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUR9YCk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX09XTkVSX1NUQVRVUykge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgY3VycmVudFRhYiA9PT0gVEFCUy5PUkRFUlMgPyBcInRpY2tldHNfb3duZXJfc3RhdHVzXCIgOiBcIm93bmVyX3N0YXR1c1wiO1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck5hbWV9PT0ke2ZpbHRlck9iai5GSUxURVJfVkFSX09XTkVSX1NUQVRVU31gKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfRlJFRV9QQUlEKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9IGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTID8gXCJhbW91bnRcIiA6IFwiZmluYWxfYW1vdW50XCI7XG4gICAgZmlsdGVyLnB1c2goXG4gICAgICBgJHtmaWx0ZXJOYW1lfSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfRlJFRV9QQUlEID09PSBcIkZyZWVcIiA/IFwiPT0wXCIgOiBcIj4wXCJ9YFxuICAgICk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX1BST01PQ09ERSkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgY3VycmVudFRhYiA9PT0gVEFCUy5PUkRFUlMgPyBcInRpY2tldHNfcHJvbW9fY29kZVwiIDogXCJwcm9tb19jb2RlXCI7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyTmFtZX09QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfUFJPTU9DT0RFfWApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIpIHtcbiAgICBmaWx0ZXIucHVzaChgbnVtYmVyPUAke2ZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUn1gKTtcbiAgfVxuICByZXR1cm4gZmlsdGVyO1xufTtcblxuY29uc3QgZ2V0U29ydERpcmVjdGlvbiA9IChkaXJlY3Rpb24pID0+IChkaXJlY3Rpb24gPT09IFwiYXNjXCIgPyBcIitcIiA6IFwiLVwiKTtcblxuLy8gcGF5bG9hZDogeyBodHRwQ29kZSwgdGl0bGUsIGh0bWw6IGNvbnRlbnQsIHR5cGUgfVxuY29uc3QgZXJyb3JIYW5kbGVyTm90aWZ5ID0gKHBheWxvYWQsIGNhbGxiYWNrKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9BUElfRVJST1IpKHBheWxvYWQpKTtcbiAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpO1xufTtcblxuY29uc3QgY3VzdG9tQXV0aEVycm9ySGFuZGxlciA9IChlcnIsIHJlcykgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGF1dGhFcnJvckhhbmRsZXIoZXJyLCByZXMsIGVycm9ySGFuZGxlck5vdGlmeSkpO1xufTtcblxuY29uc3QgY3VzdG9tRmV0Y2hFcnJvckhhbmRsZXIgPSAocmVzcG9uc2UpID0+IChkaXNwYXRjaCkgPT4ge1xuICBjb25zdCBjb2RlID0gcmVzcG9uc2Uuc3RhdHVzO1xuICBsZXQgbXNnO1xuICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgc3dpdGNoIChjb2RlKSB7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjQwM1wiXTpcbiAgICAgIG1zZyA9IGkxOG4udChcImVycm9ycy51c2VyX25vdF9hdXRoelwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI0MDFcIl06XG4gICAgICBtc2cgPSBpMThuLnQoXCJlcnJvcnMuc2Vzc2lvbl9leHBpcmVkXCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjQxMlwiXTpcbiAgICAgIG1zZyA9IFwiXCI7XG4gICAgICBPYmplY3QuZW50cmllcyhyZXNwb25zZS5lcnJvcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKGtleSkpIHtcbiAgICAgICAgICBtc2cgPSBgJHttc2d9ICR7a2V5fTogYDtcbiAgICAgICAgfVxuXG4gICAgICAgIG1zZyA9IGAke21zZ30gJHt2YWx1ZX0gPGJyPmA7XG4gICAgICB9KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI1MDBcIl06XG4gICAgICBtc2cgPSBpMThuLnQoXCJlcnJvcnMuc2VydmVyX2Vycm9yXCIpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIG1zZyA9IHJlc3BvbnNlLnN0YXR1c1RleHQ7XG4gIH1cblxuICBkaXNwYXRjaChlcnJvckhhbmRsZXJOb3RpZnkoeyB0aXRsZTogaTE4bi50KFwiZXJyb3JzLmVycm9yXCIpLCBodG1sOiBtc2cgfSkpO1xufTtcblxuLy8gT1JERVJTIEFDVElPTlNcbmV4cG9ydCBjb25zdCBnZXRVc2VyT3JkZXJzID1cbiAgKHtcbiAgICBwYWdlID0gRklSU1RfUEFHRSxcbiAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICBmaWx0ZXIgPSB7fSxcbiAgICBzb3J0ID0ge31cbiAgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuXG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgb3JkZXI6IFwiLWlkXCIsXG4gICAgICBcImZpbHRlcltdXCI6IFtcInN0YXR1cz09UGFpZFwiXSxcbiAgICAgIHJlbGF0aW9uczogXCJub25lXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuXG4gICAgaWYgKE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdGVycyA9IHBhcnNlRmlsdGVyKGZpbHRlciwgVEFCUy5PUkRFUlMpO1xuICAgICAgcGFyYW1zW1wiZmlsdGVyW11cIl0gPSBbLi4ucGFyYW1zW1wiZmlsdGVyW11cIl0sIC4uLmZpbHRlcnNdO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXMoc29ydCkubGVuZ3RoID4gMCkge1xuICAgICAgcGFyYW1zLm9yZGVyID0gYCR7Z2V0U29ydERpcmVjdGlvbihzb3J0LmRpcmVjdGlvbil9JHtzb3J0Lm5hbWV9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1VTRVJfT1JERVJTKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvbWVgLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlcixcbiAgICAgIHsgZmlsdGVyLCBzb3J0IH1cbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3Qgc2V0QWN0aXZlT3JkZXJJZCA9IChvcmRlcklkKSA9PiBhc3luYyAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfQUNUSVZFX09SREVSX0lEKShvcmRlcklkKSk7XG5cbi8vIFVTRVIgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IHNldFVzZXIgPSAodXNlcikgPT4gKGRpc3BhdGNoKSA9PlxuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX1VTRVIpKHVzZXIpKTtcblxuLy8gVElDS0VUIEFDVElPTlNcblxuZXhwb3J0IGNvbnN0IGdldFVzZXJUaWNrZXRzID1cbiAgKHtcbiAgICBwYWdlID0gRklSU1RfUEFHRSxcbiAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICBmaWx0ZXIgPSB7fSxcbiAgICBzb3J0ID0ge31cbiAgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQsIHVzZXIgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuICAgIGNvbnN0IHsgdXNlclByb2ZpbGUgfSA9IHVzZXI7XG4gICAgaWYgKCFzdW1taXQpIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG4gICAgY29uc3QgZmllbGRzID0gW1xuICAgICAgXCJvcmRlci5pZFwiLFxuICAgICAgXCJvcmRlci5vd25lcl9maXJzdF9uYW1lXCIsXG4gICAgICBcIm9yZGVyLm93bmVyX2xhc3RfbmFtZVwiLFxuICAgICAgXCJvcmRlci5vd25lcl9lbWFpbFwiLFxuICAgICAgXCJvd25lci5pZFwiLFxuICAgICAgXCJvd25lci5lbWFpbFwiLFxuICAgICAgXCJvd25lci5maXJzdF9uYW1lXCIsXG4gICAgICBcIm93bmVyLmxhc3RfbmFtZVwiLFxuICAgICAgXCJvd25lci5zdGF0dXNcIlxuICAgIF07XG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBcImZpbHRlcltdXCI6IFtcInN0YXR1cz09UGFpZFwiLCBgb3JkZXJfb3duZXJfaWQ8PiR7dXNlclByb2ZpbGUuaWR9YF0sXG4gICAgICBleHBhbmQ6IFwib3JkZXIsb3duZXIsdGlja2V0X3R5cGVcIixcbiAgICAgIG9yZGVyOiBcIi1pZFwiLFxuICAgICAgZmllbGRzOiBmaWVsZHMuam9pbihcIixcIiksXG4gICAgICByZWxhdGlvbnM6IFwibm9uZVwiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcbiAgICBpZiAoT2JqZWN0LmtleXMoZmlsdGVyKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJzID0gcGFyc2VGaWx0ZXIoZmlsdGVyLCBUQUJTLlRJQ0tFVFMpO1xuICAgICAgcGFyYW1zW1wiZmlsdGVyW11cIl0gPSBbLi4ucGFyYW1zW1wiZmlsdGVyW11cIl0sIC4uLmZpbHRlcnNdO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXMoc29ydCkubGVuZ3RoID4gMCkge1xuICAgICAgcGFyYW1zLm9yZGVyID0gYCR7Z2V0U29ydERpcmVjdGlvbihzb3J0LmRpcmVjdGlvbil9JHtzb3J0Lm5hbWV9YDtcbiAgICB9XG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9NWV9BU1NJR05FRF9USUNLRVRTKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvYWxsL3RpY2tldHMvbWVgLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0c0J5T3JkZXIgPVxuICAoe1xuICAgIG9yZGVySWQsXG4gICAgcGFnZSA9IEZJUlNUX1BBR0UsXG4gICAgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgZmlsdGVyLFxuICAgIHNvcnRcbiAgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBcImZpbHRlcltdXCI6IFtdLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxyZWZ1bmRfcmVxdWVzdHMucmVmdW5kZWRfdGF4ZXMscmVmdW5kX3JlcXVlc3RzLnJlZnVuZGVkX3RheGVzLnRheCxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGVcIixcbiAgICAgIG9yZGVyOiBcIitpZFwiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcbiAgICBpZiAoT2JqZWN0LmtleXMoZmlsdGVyKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJzID0gcGFyc2VGaWx0ZXIoZmlsdGVyLCBUQUJTLlRJQ0tFVFMpO1xuICAgICAgcGFyYW1zW1wiZmlsdGVyW11cIl0gPSBbLi4ucGFyYW1zW1wiZmlsdGVyW11cIl0sIC4uLmZpbHRlcnNdO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXMoc29ydCkubGVuZ3RoID4gMCkge1xuICAgICAgcGFyYW1zLm9yZGVyID0gYCR7Z2V0U29ydERpcmVjdGlvbihzb3J0LmRpcmVjdGlvbil9JHtzb3J0Lm5hbWV9YDtcbiAgICB9XG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9USUNLRVRTX0JZX09SREVSKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzYCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlc2VuZE5vdGlmaWNhdGlvbiA9XG4gICh0aWNrZXQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGNvbnN0IHsgbWVzc2FnZSB9ID0gdGlja2V0O1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW5cbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFU0VORF9OT1RJRklDQVRJT04pLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L2F0dGVuZGVlL3JlaW52aXRlYCxcbiAgICAgIHsgbWVzc2FnZSB9LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVmdW5kVGlja2V0ID1cbiAgKHsgdGlja2V0IH0pID0+XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDogXCJyZWZ1bmRfcmVxdWVzdHMsdGlja2V0X3R5cGVcIixcbiAgICAgIGZpZWxkczogXCJyZWZ1bmRfcmVxdWVzdHMuc3RhdHVzXCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIGRlbGV0ZVJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFRlVORF9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L3JlZnVuZGAsXG4gICAgICB7fSxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVmdW5kQnVsa1RpY2tldHMgPVxuICAoeyB0aWNrZXRzIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCkgPT4ge1xuICAgIGNvbnN0IGxpbWl0ID0gcExpbWl0KFBST01JU0VfQkFUQ0hfTElNSVQpO1xuICAgIGNvbnN0IGFsbFJlZnVuZFRpY2tldENhbGxzID0gdGlja2V0cy5tYXAoKHRpY2tldCkgPT5cbiAgICAgIGxpbWl0KCgpID0+IGRpc3BhdGNoKHJlZnVuZFRpY2tldCh7IHRpY2tldCB9KSkpXG4gICAgKTtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoWy4uLmFsbFJlZnVuZFRpY2tldENhbGxzXSlcbiAgICAgIC50aGVuKChyZXMpID0+IHtcbiAgICAgICAgY29uc3Qgc3VjY2Vzc2Z1bGx5UmVxdWVzdGVkID0gcmVzXG4gICAgICAgICAgLmZpbHRlcigocikgPT4gci5yZXNwb25zZT8ucmVmdW5kX3JlcXVlc3RzPy5sZW5ndGgpXG4gICAgICAgICAgLm1hcCgocikgPT4gci5yZXNwb25zZSk7XG4gICAgICAgIHJldHVybiBzdWNjZXNzZnVsbHlSZXF1ZXN0ZWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiBlKTtcbiAgfTtcblxuLy8gdXBkYXRlIHRoZSB0aWNrZXRzIHRoYXQgaGF2ZSBiZWVuIHN1Y2Vzc2Z1bGx5IHJlZnVuZGVkXG5leHBvcnQgY29uc3QgdXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCA9XG4gICh0aWNrZXRzUmVmdW5kUmVxdWVzdGVkKSA9PiAoZGlzcGF0Y2gpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBjcmVhdGVBY3Rpb24oVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCkodGlja2V0c1JlZnVuZFJlcXVlc3RlZClcbiAgICApO1xuXG4vLyBTVU1NSVQgQUNUSU9OU1xuXG5leHBvcnQgY29uc3QgZ2V0RXh0cmFRdWVzdGlvbnMgPVxuICAoYXR0ZW5kZWVJZCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuXG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIHBhZ2U6IDEsXG4gICAgICBwZXJfcGFnZTogRklGVFlfUEVSX1BBR0UsXG4gICAgICBleHBhbmQ6IFwiKnN1Yl9xdWVzdGlvbl9ydWxlcywqc3ViX3F1ZXN0aW9uLCp2YWx1ZXNcIixcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBcImZpbHRlcltdXCI6IFwidGlja2V0c19leGNsdWRlX2luYWN0aXZlcz09dHJ1ZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L2F0dGVuZGVlcy8ke2F0dGVuZGVlSWR9L2FsbG93ZWQtZXh0cmEtcXVlc3Rpb25zYDtcblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyksXG4gICAgICBlbmRwb2ludCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLnRoZW4oKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXQgPVxuICAodGlja2V0SWQsIG9yZGVySWQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwib3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbix0aWNrZXRfdHlwZSxvcmRlclwiLFxuICAgICAgcmVsYXRpb25zOiBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlXCJcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfWA7XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIGNyZWF0ZUFjdGlvbihSRVNFVF9USUNLRVQpLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFQ0VJVkVfVElDS0VUKSxcbiAgICAgIGVuZHBvaW50LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkuZmluYWxseSgoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuY29uc3Qgbm9ybWFsaXplVGlja2V0ID0gKGVudGl0eSkgPT4ge1xuICBjb25zdCBub3JtYWxpemVkRW50aXR5ID0geyAuLi5lbnRpdHkgfTtcblxuICBpZiAoIWVudGl0eS5hdHRlbmRlZV9jb21wYW55LmlkKSB7XG4gICAgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55ID0gZW50aXR5LmF0dGVuZGVlX2NvbXBhbnk7XG4gIH0gZWxzZSB7XG4gICAgZGVsZXRlIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueTtcbiAgICBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnlfaWQgPSBlbnRpdHkuYXR0ZW5kZWVfY29tcGFueS5pZDtcbiAgfVxuXG4gIHJldHVybiBub3JtYWxpemVkRW50aXR5O1xufTtcblxuZXhwb3J0IGNvbnN0IHJlZnJlc2hQcm9maWxlID1cbiAgKGRhdGEsIGNvbXBhbnksIHRpY2tldE93bmVyKSA9PlxuICAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IHVwZGF0ZVByb2ZpbGUgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHVzZXIgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuICAgIGNvbnN0IHsgdXNlclByb2ZpbGUgfSA9IHVzZXI7XG5cbiAgICAvLyBlbWFpbCBzaG91bGQgbWF0Y2ggKCBvbmx5IHVwZGF0ZSBteSBwcm9maWxlIGlzIHRpY2tldCBiZWxvbmdzIHRvIG1lISlcbiAgICAvLyBhbmQgaWYgdGhlIHRpY2tldCBkb2Vzbid0IGhhdmUgYSBtYW5hZ2VyXG4gICAgLy8gQ2hlY2sgaWYgdGhlcmUncyBjaGFuZ2VzIGluIHRoZSB0aWNrZXQgZGF0YSB0byB1cGRhdGUgdGhlIHByb2ZpbGVcbiAgICBjb25zdCB7XG4gICAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgICBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgICBhdHRlbmRlZV9jb21wYW55XG4gICAgfSA9IGRhdGE7XG4gICAgY29uc3QgaGFzTWFuYWdlciA9IHRpY2tldE93bmVyPy5tYW5hZ2VyPy5pZCB8fCB0aWNrZXRPd25lcj8ubWFuYWdlcl9pZDtcbiAgICBjb25zdCBpdHNNZSA9IHVzZXJQcm9maWxlLmVtYWlsID09PSBhdHRlbmRlZV9lbWFpbDtcbiAgICBjb25zdCBwcm9maWxlQ2hhbmdlZCA9XG4gICAgICBhdHRlbmRlZV9jb21wYW55Lm5hbWUgIT09IGNvbXBhbnkgfHxcbiAgICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUgIT09IHVzZXJQcm9maWxlLmZpcnN0X25hbWUgfHxcbiAgICAgIGF0dGVuZGVlX2xhc3RfbmFtZSAhPT0gdXNlclByb2ZpbGUubGFzdF9uYW1lO1xuXG4gICAgaWYgKGl0c01lICYmICFoYXNNYW5hZ2VyICYmIHByb2ZpbGVDaGFuZ2VkKSB7XG4gICAgICBjb25zdCBuZXdQcm9maWxlID0ge1xuICAgICAgICBmaXJzdF9uYW1lOiBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgICAgICBsYXN0X25hbWU6IGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICAgICAgY29tcGFueTogYXR0ZW5kZWVfY29tcGFueS5uYW1lIHx8IGF0dGVuZGVlX2NvbXBhbnlcbiAgICAgIH07XG5cbiAgICAgIC8vIHRoaXMgaXMgYSBjYWxsYmFjayBtZXRob2QgdGhhdCB1cGRhdGVzIHVzZXJQcm9maWxlIGluIEFQSSBhbmQgZXZlbnQtc2l0ZVxuICAgICAgdXBkYXRlUHJvZmlsZShuZXdQcm9maWxlKTtcbiAgICB9XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzYXZlVGlja2V0RGV0YWlscyA9XG4gICh0aWNrZXQsIGFuc3dlcnMpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKFByb21pc2UucmVqZWN0KTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJyZWZ1bmRfcmVxdWVzdHMsb3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlXCJcbiAgICB9O1xuXG4gICAgY29uc3QgaWRUb2tlbiA9IGdldElkVG9rZW4oKTtcbiAgICBsZXQgY29tcGFueSA9IFwiXCI7XG4gICAgaWYgKGlkVG9rZW4pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHZlcmlmaWVyID0gbmV3IElkVG9rZW5WZXJpZmllcigpO1xuICAgICAgICBjb25zdCBqd3QgPSB2ZXJpZmllci5kZWNvZGUoaWRUb2tlbik7XG4gICAgICAgIGNvbXBhbnkgPSBqd3QucGF5bG9hZC5jb21wYW55O1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIsIGUpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBub3JtYWxpemVkRW50aXR5ID0gbm9ybWFsaXplVGlja2V0KGFuc3dlcnMpO1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFVQREFURV9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy9hbGwvdGlja2V0cy8ke3RpY2tldC5pZH1gLFxuICAgICAgbm9ybWFsaXplZEVudGl0eSxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHJlZnJlc2hQcm9maWxlKGFuc3dlcnMsIGNvbXBhbnksIHRpY2tldC5vd25lcikpO1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBhc3NpZ25BdHRlbmRlZSA9XG4gIChvcmRlcklkLCB0aWNrZXRJZCwgYXR0ZW5kZWVfZW1haWwsIG1lc3NhZ2UgPSBudWxsKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaChQcm9taXNlLnJlamVjdCk7XG5cbiAgICBjb25zdCBwYXlsb2FkID0geyBhdHRlbmRlZV9lbWFpbCB9O1xuICAgIGlmIChtZXNzYWdlKSBwYXlsb2FkLm1lc3NhZ2UgPSBtZXNzYWdlO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcIm93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihBU1NJR05fVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9L2F0dGVuZGVlYCxcbiAgICAgIHBheWxvYWQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVhc3NpZ25UaWNrZXQgPVxuICAob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsLCBtZXNzYWdlKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaChQcm9taXNlLnJlamVjdCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6IFwib3JkZXIsIG93bmVyLCBvd25lci5leHRyYV9xdWVzdGlvbnMsIG9yZGVyLnN1bW1pdFwiXG4gICAgfTtcblxuICAgIHJldHVybiBkZWxldGVSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRU1PVkVfVElDS0VUX0FUVEVOREVFKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9L2F0dGVuZGVlYCxcbiAgICAgIHt9LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkudGhlbigoKSA9PlxuICAgICAgZGlzcGF0Y2goYXNzaWduQXR0ZW5kZWUob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsLCBtZXNzYWdlKSlcbiAgICApO1xuICB9O1xuXG5leHBvcnQgY29uc3Qgc2F2ZUV4dHJhUXVlc3Rpb25zID1cbiAgKHRpY2tldCwgYW5zd2VycykgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oVVBEQVRFX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzL2FsbC90aWNrZXRzLyR7dGlja2V0LmlkfWAsXG4gICAgICBhbnN3ZXJzLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0UERGID1cbiAgKHRpY2tldCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuXG4gICAgfTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IG9iamVjdFRvUXVlcnlTdHJpbmcocGFyYW1zKTtcbiAgICBjb25zdCBhcGlVcmwgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vcGRmPyR7cXVlcnlTdHJpbmd9YDtcblxuICAgIHJldHVybiBmZXRjaChhcGlVcmwsIHtcbiAgICAgIHJlc3BvbnNlVHlwZTogXCJCbG9iXCIsXG4gICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vcGRmXCIgfVxuICAgIH0pXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZS5ibG9iKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAudGhlbigocGRmKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKHBkZik7XG4gICAgICAgIGxpbmsuaHJlZiA9IHVybDtcbiAgICAgICAgbGluay5kb3dubG9hZCA9IFwidGlja2V0LnBkZlwiO1xuICAgICAgICBsaW5rLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoXCJjbGlja1wiKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGN1c3RvbUZldGNoRXJyb3JIYW5kbGVyKTtcbiAgfTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgRXh0cmFRdWVzdGlvbnNGaWVsZHMgZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzXCI7XG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vRm9ybUZvb3RlclwiO1xuaW1wb3J0IHVzZVNjcm9sbFRvRXJyb3IgZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVNjcm9sbFRvRXJyb3JcIjtcbmltcG9ydCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyIGZyb20gXCIuLi9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXJcIjtcbmltcG9ydCB7IGJ1aWxkVmFsaWRhdGlvblNjaGVtYSwgcGFyc2VBbnN3ZXJzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmNvbnN0IEFzc2lnbkVRRm9ybSA9ICh7XG4gIHRpY2tldCxcbiAgc3VtbWl0LFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgb25TdWJtaXQsXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczogcGFyc2VBbnN3ZXJzKFxuICAgICAgdGlja2V0Lm93bmVyLFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICB7fSxcbiAgICAgIG51bGwsXG4gICAgICBmYWxzZSxcbiAgICAgIGZhbHNlLFxuICAgICAgdHJ1ZVxuICAgICksXG4gICAgdmFsaWRhdGlvblNjaGVtYTogYnVpbGRWYWxpZGF0aW9uU2NoZW1hKFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICBmYWxzZSxcbiAgICAgIGZhbHNlLFxuICAgICAgc3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeVxuICAgICksXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMpID0+IHtcbiAgICAgIGNvbnN0IHJlbGV2YW50QW5zd2VycyA9IHBhcnNlQW5zd2VycyhcbiAgICAgICAgdGlja2V0Lm93bmVyLFxuICAgICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgICAgdmFsdWVzLFxuICAgICAgICBudWxsLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgICByZXR1cm4gb25TdWJtaXQocmVsZXZhbnRBbnN3ZXJzKTtcbiAgICB9LFxuICAgIGVuYWJsZVJlaW5pdGlhbGl6ZTogdHJ1ZVxuICB9KTtcblxuICAvLyBTQ1JPTEwgVE8gRVJST1JcbiAgdXNlU2Nyb2xsVG9FcnJvcihmb3JtaWssIFwicmVhc3NpZ25EcmF3ZXJcIik7XG5cbiAgaWYgKGV4dHJhUXVlc3Rpb25zPy5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8Qm94PlxuICAgICAgICA8RXh0cmFRdWVzdGlvbnNGaWVsZHMgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfSBmb3JtaWs9e2Zvcm1pa30gLz5cbiAgICAgICAge3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50ICYmIChcbiAgICAgICAgICA8UmVnaXN0cmF0aW9uRGlzY2xhaW1lclxuICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgICBkaXNjbGFpbWVyPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudH1cbiAgICAgICAgICAgIGlzUmVxdWlyZWQ9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbl9lcS5zYXZlXCIpfVxuICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9hc3NpZ25fZXEuY2FuY2VsXCIpfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgIC8+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuQXNzaWduRVFGb3JtLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBleHRyYVF1ZXN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25FUUZvcm07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgQ29udGVudENvcHlJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCI7XG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBkZWZhdWx0V2lkdGggPSA5MDtcblxuY29uc3QgQ29weVRleHQgPSAoe1xuICB0ZXh0LFxuICB0b29sdGlwVGV4dCxcbiAgaGlkZUNvcHkgPSBmYWxzZSxcbiAgdHJ1bmNhdGVkID0gdHJ1ZSxcbiAgcmV2ZXJzZWQgPSBmYWxzZSxcbiAgd2lkdGggPSBkZWZhdWx0V2lkdGhcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB0b29sdGlwVGV4dFRvVXNlID0gdG9vbHRpcFRleHQgfHwgdChcImdlbmVyYWwuY29weV90b19jbGlwYm9hcmRcIik7XG4gIGNvbnN0IFt0b29sdGlwLCBzZXRUb29sdGlwXSA9IFJlYWN0LnVzZVN0YXRlKHRvb2x0aXBUZXh0VG9Vc2UpO1xuICBjb25zdCBjbGFzc05hbWVzID0gYCR7dHJ1bmNhdGVkICYmIHN0eWxlcy50cnVuY2F0ZWR9ICR7XG4gICAgcmV2ZXJzZWQgJiYgc3R5bGVzLnJldmVyc2VkXG4gIH1gO1xuXG4gIGNvbnN0IGhhbmRsZUNvcHkgPSAoKSA9PiB7XG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGV4dCk7XG4gICAgc2V0VG9vbHRpcCh0KFwiZ2VuZXJhbC5jb3BpZWRcIikpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc2V0VG9vbHRpcCh0b29sdGlwVGV4dFRvVXNlKTtcbiAgICB9LCBNSUxMSVNFQ19UT19TRUMpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17Y2xhc3NOYW1lc30gc3R5bGU9e3sgd2lkdGggfX0+XG4gICAgICAgIHt0ZXh0fVxuICAgICAgPC9zcGFuPlxuICAgICAgeyFoaWRlQ29weSAmJiAoXG4gICAgICAgIDxUb29sdGlwIHRpdGxlPXt0b29sdGlwfT5cbiAgICAgICAgICA8Q29udGVudENvcHlJY29uXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb3B5SWNvbn1cbiAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNvcHl9XG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cImNvcHktbnVtYmVyLWJ1dHRvblwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNvcHlUZXh0LnByb3BUeXBlcyA9IHtcbiAgdGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdG9vbHRpcFRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGhpZGVDb3B5OiBQcm9wVHlwZXMuYm9vbCxcbiAgdHJ1bmNhdGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgcmV2ZXJzZWQ6IFByb3BUeXBlcy5ib29sLFxuICB3aWR0aDogUHJvcFR5cGVzLm51bWJlclxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29weVRleHQ7XG4iLCJpbXBvcnQgeyBjcmVhdGVDb250ZXh0IH0gZnJvbSBcInJlYWN0XCI7XG5cbmNvbnN0IGRlZmF1bHRDb250ZXh0VmFsdWUgPSB7XG4gIHNldE1lc3NhZ2U6ICgpID0+IHt9LFxuICBzZXRNZXNzYWdlQ2FsbGJhY2s6ICgpID0+IHt9XG59O1xuXG5jb25zdCBDdXN0b21EaWFsb2dDb250ZXh0ID0gY3JlYXRlQ29udGV4dChkZWZhdWx0Q29udGV4dFZhbHVlKTtcblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tRGlhbG9nQ29udGV4dDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIERpYWxvZyxcbiAgRGlhbG9nQ29udGVudCxcbiAgRGlhbG9nQ29udGVudFRleHQsXG4gIERpYWxvZ1RpdGxlXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmNvbnN0IEN1c3RvbURpYWxvZyA9ICh7IG9wZW4sIG9uQ2xvc2UsIHRpdGxlLCBib2R5IH0pID0+IChcbiAgPERpYWxvZ1xuICAgIG9wZW49e29wZW59XG4gICAgb25DbG9zZT17b25DbG9zZX1cbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJhbGVydC1kaWFsb2ctdGl0bGVcIlxuICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJhbGVydC1kaWFsb2ctZGVzY3JpcHRpb25cIlxuICA+XG4gICAgPERpYWxvZ1RpdGxlIGlkPVwiYWxlcnQtZGlhbG9nLXRpdGxlXCI+e3RpdGxlfTwvRGlhbG9nVGl0bGU+XG4gICAgPERpYWxvZ0NvbnRlbnQ+XG4gICAgICA8RGlhbG9nQ29udGVudFRleHRcbiAgICAgICAgaWQ9XCJhbGVydC1kaWFsb2ctZGVzY3JpcHRpb25cIlxuICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17eyBfX2h0bWw6IGJvZHkgfX1cbiAgICAgIC8+XG4gICAgPC9EaWFsb2dDb250ZW50PlxuICA8L0RpYWxvZz5cbik7XG5cbkN1c3RvbURpYWxvZy5wcm9wVHlwZXMgPSB7XG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGJvZHk6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbURpYWxvZztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFRoZW1lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxubGV0IGRhcmtDb2xvciA9IFwiXCI7XG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAvLyBHZXQgdGhlIHJvb3QgZWxlbWVudFxuICBjb25zdCByb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4gIC8vIFJldHJpZXZlIHRoZSBjdXJyZW50IHZhbHVlIG9mIGEgQ1NTIHZhcmlhYmxlXG4gIGRhcmtDb2xvciA9IGdldENvbXB1dGVkU3R5bGUocm9vdCkuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICBcIi0tY29sb3JfYmFja2dyb3VuZF9kYXJrXCJcbiAgKTtcbn1cblxuY29uc3QgdGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHBhbGV0dGU6IHtcbiAgICBwcmltYXJ5OiB7XG4gICAgICBtYWluOiBkYXJrQ29sb3JcbiAgICB9XG4gIH0sXG4gIGNvbXBvbmVudHM6IHtcbiAgICBNdWlUYWI6IHtcbiAgICAgIHN0eWxlT3ZlcnJpZGVzOiB7XG4gICAgICAgIHJvb3Q6IHtcbiAgICAgICAgICBmb250U2l6ZTogXCIxNHB4XCIsXG4gICAgICAgICAgY29sb3I6IFwiIzAwMDAwMDk5XCIsXG4gICAgICAgICAgXCImLk11aS1zZWxlY3RlZFwiOiB7XG4gICAgICAgICAgICBjb2xvcjogXCIjMjE5NmYzXCJcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIE11aVRhYnM6IHtcbiAgICAgIHN0eWxlT3ZlcnJpZGVzOiB7XG4gICAgICAgIGluZGljYXRvcjoge1xuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMjE5NmYzXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG5cbmNvbnN0IEN1c3RvbVRoZW1lID0gKHsgY2hpbGRyZW4gfSkgPT4gKFxuICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PntjaGlsZHJlbn08L1RoZW1lUHJvdmlkZXI+XG4pO1xuXG5DdXN0b21UaGVtZS5wcm9wVHlwZXMgPSB7XG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDdXN0b21UaGVtZTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUdyb3VwLFxuICBGb3JtSGVscGVyVGV4dCxcbiAgRm9ybUxhYmVsXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHZhbHVlLFxuICBvbkNoYW5nZSxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcbiAgY29uc3QgcXVlc3Rpb25NYXhWYWx1ZXMgPSBxdWVzdGlvbi5tYXhfc2VsZWN0ZWRfdmFsdWVzO1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgY29uc3QgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlID0gKGNoZWNrZWQsIHZhbCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRBbnMgPSB2YWx1ZSB8fCBbXTtcbiAgICBjb25zdCBtYXhTZWxlY3Rpb25SZWFjaGVkID0gY3VycmVudEFucy5sZW5ndGggPT09IHF1ZXN0aW9uTWF4VmFsdWVzO1xuICAgIGxldCBuZXdWYWx1ZTtcblxuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBuZXdWYWx1ZSA9IG1heFNlbGVjdGlvblJlYWNoZWQgPyBjdXJyZW50QW5zIDogWy4uLmN1cnJlbnRBbnMsIHZhbF07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1ZhbHVlID0gY3VycmVudEFucy5maWx0ZXIoKHYpID0+IHYgIT09IHZhbCk7XG4gICAgfVxuXG4gICAgc2V0RmllbGRWYWx1ZShxdWVzdGlvblNsdWcsIG5ld1ZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbD57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPEZvcm1Hcm91cD5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXt2YWx1ZT8uaW5jbHVkZXMob3AudmFsdWUpfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhldikgPT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlKGV2LnRhcmdldC5jaGVja2VkLCBvcC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxhYmVsPXtvcC5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvRm9ybUdyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYXJyYXksXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICB2YWx1ZSxcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY2hlY2tlZD17ISF2YWx1ZX1cbiAgICAgICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DaGVja2JveFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB2YWx1ZTogUHJvcFR5cGVzLmJvb2wsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgSW5wdXRMYWJlbCwgTWVudUl0ZW0sIFNlbGVjdCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgRHJvcGRvd25RdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBjaGlsZHJlbixcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZFxuICAgIH0pKSB8fCBbXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPElucHV0TGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0lucHV0TGFiZWw+XG4gICAgICAgIDxTZWxlY3RcbiAgICAgICAgICBsYWJlbElkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH1cbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgaWQ9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBsYWJlbD17cXVlc3Rpb25MYWJlbH1cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkJvdHRvbTogMjAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPE1lbnVJdGVtIGtleT17b3AubGFiZWx9IHZhbHVlPXtvcC52YWx1ZX0+XG4gICAgICAgICAgICAgIHtvcC5sYWJlbH1cbiAgICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvU2VsZWN0PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuRHJvcGRvd25RdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dCxcbiAgRm9ybUxhYmVsLFxuICBSYWRpbyxcbiAgUmFkaW9Hcm91cFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxGb3JtTGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPFJhZGlvR3JvdXBcbiAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfVxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICBrZXk9e29wLmxhYmVsfVxuICAgICAgICAgICAgICB2YWx1ZT17b3AudmFsdWV9XG4gICAgICAgICAgICAgIGNvbnRyb2w9ezxSYWRpbyAvPn1cbiAgICAgICAgICAgICAgbGFiZWw9e29wLmxhYmVsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFRleHRRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUdyb3VwPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGxhYmVsPXtxdWVzdGlvbkxhYmVsfVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUdyb3VwPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuVGV4dFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRleHRRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Rcbn0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgY2hlY2tSdWxlID0gKHZhbHVlLCBydWxlKSA9PiB7XG4gIGNvbnN0IHZhbHVlcyA9IHJ1bGUuYW5zd2VyX3ZhbHVlcztcblxuICBpZiAoIXZhbHVlKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgaWYgKCF2YWx1ZS5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICBsZXQgcmVzID0gcnVsZS5hbnN3ZXJfdmFsdWVzX29wZXJhdG9yID09PSBcIkFuZFwiO1xuICAgIHZhbHVlcy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICBpZiAocnVsZS5hbnN3ZXJfdmFsdWVzX29wZXJhdG9yID09PSBcIkFuZFwiKSB7XG4gICAgICAgIHJlcyA9IHJlcyAmJiB2YWx1ZS5pbmNsdWRlcyh2KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE9yXG4gICAgICAgIHJlcyA9IHJlcyB8fCB2YWx1ZS5pbmNsdWRlcyh2KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG4gIHJldHVybiB2YWx1ZXMuaW5jbHVkZXModmFsdWU/LnRvU3RyaW5nKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrVmlzaWJpbGl0eSA9IChydWxlLCBydWxlUmVzdWx0LCBjaGlsZHJlbikgPT4ge1xuICBpZiAocnVsZS52aXNpYmlsaXR5ID09PSBcIlZpc2libGVcIikge1xuICAgIGlmIChydWxlLnZpc2liaWxpdHlfY29uZGl0aW9uID09PSBcIkVxdWFsXCIpIHtcbiAgICAgIGlmIChydWxlUmVzdWx0KSByZXR1cm4gY2hpbGRyZW47XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgLy8gTm9uIEVxdWFsXG4gICAgaWYgKCFydWxlUmVzdWx0KSB7XG4gICAgICByZXR1cm4gY2hpbGRyZW47XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIC8vIG5vdCB2aXNpYmxlXG4gIGlmIChydWxlLnZpc2liaWxpdHlfY29uZGl0aW9uID09PSBcIkVxdWFsXCIpIHtcbiAgICBpZiAoIXJ1bGVSZXN1bHQpIHJldHVybiBjaGlsZHJlbjtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAocnVsZVJlc3VsdCkgcmV0dXJuIGNoaWxkcmVuO1xuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCB0b1NsdWcgPSAodGV4dCwgcXVlc3Rpb25JZCkgPT4ge1xuICBjb25zdCB0ZXh0TEMgPSB0ZXh0LnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiBgJHt0ZXh0TEMucmVwbGFjZSgvW15hLXpBLVowLTldKy9nLCBcIl9cIil9XyR7cXVlc3Rpb25JZH1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExhYmVsID0gKHEpID0+XG4gIC8vIHJlcGxhY2UgbGluZSBicmVha3MgYW5kIHJlbW92ZSBvdXRlciA8cD5cbiAgcT8ubGFiZWw/LnJlcGxhY2UoL1xcbi9nLCBcIiBcIikucmVwbGFjZSgvPHA+KC4qKTxcXC9wPi9naSwgXCIkMVwiKTtcblxuZXhwb3J0IGNvbnN0IGlzQW5zd2VyZWQgPSAoYW5zd2VyKSA9PiB7XG4gIGlmICghYW5zd2VyKSByZXR1cm4gZmFsc2U7XG4gIC8vIGNoZWNrIHR5cGVcbiAgaWYgKEFycmF5LmlzQXJyYXkoYW5zd2VyKSkgcmV0dXJuIGFuc3dlci5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIGFuc3dlci5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJudW1iZXJcIikgcmV0dXJuIGFuc3dlciA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcImJvb2xlYW5cIikgcmV0dXJuIGFuc3dlcjtcbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrSWZWYWx1ZU1hdGNoID0gKGFuc3dlciwgY29tcGFyZVZhbCkgPT4ge1xuICBjb25zdCBhbnN3ZXJBcnJheSA9IEFycmF5LmlzQXJyYXkoYW5zd2VyKSA/IGFuc3dlciA6IFthbnN3ZXJdO1xuXG4gIHJldHVybiBhbnN3ZXJBcnJheS5zb21lKCh2KSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29tcGFyZVZhbCkpIHtcbiAgICAgIHJldHVybiBjb21wYXJlVmFsLmluY2x1ZGVzKHYpO1xuICAgIH1cbiAgICByZXR1cm4gdiA9PT0gY29tcGFyZVZhbDtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZUluaXRpYWxWYWx1ZSA9IChxKSA9PiB7XG4gIHN3aXRjaCAocS50eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgcmV0dXJuIFtdO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gXCJcIjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVWYWx1ZSA9IChhbnMsIHR5cGUpID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICByZXR1cm4gYW5zID09PSBcInRydWVcIjtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICByZXR1cm4gYW5zPy5zcGxpdChcIixcIikgfHwgW107XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgcmV0dXJuIGFucyB8fCBcIlwiO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHJldHVybiBhbnMgfHwgbnVsbDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGFucztcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCA9IChhbnN3ZXJzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9jb21wYW55LFxuICAgIGRpc2NsYWltZXJfYWNjZXB0ZWQsXG4gICAgLi4uZXh0cmFfcXVlc3Rpb25zXG4gIH0gPSBhbnN3ZXJzO1xuXG4gIGNvbnN0IGZvcm1hdHRlZEVRID0gT2JqZWN0LmVudHJpZXMoZXh0cmFfcXVlc3Rpb25zKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICBxdWVzdGlvbl9pZDogcGFyc2VJbnQoa2V5LnNwbGl0KFwiX1wiKS5wb3AoKSwgMTApLFxuICAgIGFuc3dlcjogdmFsdWUudG9TdHJpbmcoKVxuICB9KSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9jb21wYW55LFxuICAgIGRpc2NsYWltZXJfYWNjZXB0ZWQsXG4gICAgZXh0cmFfcXVlc3Rpb25zOiBmb3JtYXR0ZWRFUVxuICB9O1xufTtcbiIsImV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfVGV4dCA9IFwiVGV4dFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9UZXh0QXJlYSA9IFwiVGV4dEFyZWFcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ2hlY2tib3ggPSBcIkNoZWNrQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCA9IFwiUmFkaW9CdXR0b25MaXN0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NvbWJvQm94ID0gXCJDb21ib0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QgPSBcIkNoZWNrQm94TGlzdFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3ggPSBcIkNvdW50cnlDb21ib0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbiA9IFwiUmFkaW9CdXR0b25cIjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxuaW1wb3J0IHtcbiAgdG9TbHVnLFxuICBpc0Fuc3dlcmVkLFxuICBjaGVja1Zpc2liaWxpdHksXG4gIGNoZWNrUnVsZVxufSBmcm9tIFwiLi9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCxcbiAgUXVlc3Rpb25UeXBlX1RleHQsXG4gIFF1ZXN0aW9uVHlwZV9UZXh0QXJlYVxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCBUZXh0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL1RleHRRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgQ2hlY2tib3hRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvQ2hlY2tib3hRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL1JhZGlvTGlzdFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IERyb3Bkb3duUXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0Ryb3Bkb3duUXVlc3Rpb25GaWVsZFwiO1xuXG5jb25zdCBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50ID0gKHF1ZXN0aW9uVHlwZSkgPT4ge1xuICBzd2l0Y2ggKHF1ZXN0aW9uVHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1RleHRBcmVhOlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1RleHQ6IHtcbiAgICAgIHJldHVybiBUZXh0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6IHtcbiAgICAgIHJldHVybiBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDoge1xuICAgICAgcmV0dXJuIFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDoge1xuICAgICAgcmV0dXJuIENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDoge1xuICAgICAgcmV0dXJuIERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgcmV0dXJuIFJlYWN0LkZyYWdtZW50O1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgRXh0cmFRdWVzdGlvbnNGaWVsZHMgPSAoe1xuICBleHRyYVF1ZXN0aW9ucyxcbiAgY2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uc1wiLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiZXh0cmFRdWVzdGlvblwiLFxuICByZWFkT25seSA9IGZhbHNlLFxuICBhbGxvd0VkaXQgPSB0cnVlLFxuICBmb3JtaWtcbn0pID0+IHtcbiAgY29uc3QgcmVuZGVyUnVsZSA9IChydWxlLCBxdWVzdGlvblNsdWcpID0+XG4gICAgY2hlY2tWaXNpYmlsaXR5KFxuICAgICAgcnVsZSxcbiAgICAgIGNoZWNrUnVsZShmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10sIHJ1bGUpLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICByZW5kZXJRdWVzdGlvbihydWxlLnN1Yl9xdWVzdGlvbilcbiAgICApO1xuXG4gIGNvbnN0IHJlbmRlclF1ZXN0aW9uID0gKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICAvLyBkaXNhYmxlIGZpZWxkIGlmIGVkaXQgaXNuJ3QgYWxsb3dlZCBhbmQgdGhlIHF1ZXN0aW9ucyBpcyBhbnN3ZXJlZFxuICAgIGNvbnN0IGlzRGlzYWJsZWQgPVxuICAgICAgKCFhbGxvd0VkaXQgJiYgaXNBbnN3ZXJlZChmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10pKSB8fCByZWFkT25seTtcbiAgICBjb25zdCBRdWVzdGlvbkZpZWxkQ29tcG9uZW50ID0gZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudChxLnR5cGUpO1xuXG4gICAgY29uc3QgZm9ybWlrUHJvcHMgPSB7XG4gICAgICB2YWx1ZTogZm9ybWlrLnZhbHVlc1txdWVzdGlvblNsdWddLFxuICAgICAgb25DaGFuZ2U6IGZvcm1pay5oYW5kbGVDaGFuZ2UsXG4gICAgICBvbkJsdXI6IGZvcm1pay5oYW5kbGVCbHVyLFxuICAgICAgZXJyb3I6XG4gICAgICAgIGZvcm1pay50b3VjaGVkW3F1ZXN0aW9uU2x1Z10gJiYgQm9vbGVhbihmb3JtaWsuZXJyb3JzW3F1ZXN0aW9uU2x1Z10pLFxuICAgICAgaGVscGVyVGV4dDogZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBmb3JtaWsuZXJyb3JzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBzZXRGaWVsZFZhbHVlOiBmb3JtaWsuc2V0RmllbGRWYWx1ZVxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFF1ZXN0aW9uRmllbGRDb21wb25lbnRcbiAgICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICAgIHF1ZXN0aW9uPXtxfVxuICAgICAgICBxdWVzdGlvbkNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgICAgIGlzRGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgIHsuLi5mb3JtaWtQcm9wc31cbiAgICAgID5cbiAgICAgICAge3Euc3ViX3F1ZXN0aW9uX3J1bGVzPy5tYXAoKHJ1bGUpID0+IHJlbmRlclJ1bGUocnVsZSwgcXVlc3Rpb25TbHVnKSl9XG4gICAgICA8L1F1ZXN0aW9uRmllbGRDb21wb25lbnQ+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0+e2V4dHJhUXVlc3Rpb25zLm1hcChyZW5kZXJRdWVzdGlvbil9PC9kaXY+O1xufTtcblxuRXh0cmFRdWVzdGlvbnNGaWVsZHMucHJvcFR5cGVzID0ge1xuICBleHRyYVF1ZXN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGFsbG93RWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIHJlYWRPbmx5OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRXh0cmFRdWVzdGlvbnNGaWVsZHM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBSYWRpb0dyb3VwLFxuICBSYWRpb1xufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgQXNzaWduZWRGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQ6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzKTtcblxuICBjb25zdCBhc3NpZ25lZFZhbHVlcyA9IFtcbiAgICB7IHZhbHVlOiBcIk1lXCIsIGxhYmVsOiBcIk1lXCIgfSxcbiAgICB7IHZhbHVlOiBcIlNvbWVvbmVFbHNlXCIsIGxhYmVsOiBcIlNvbWVvbmUgRWxzZVwiIH0sXG4gICAgeyB2YWx1ZTogXCJOb2JvZHlcIiwgbGFiZWw6IFwiTm9ib2R5XCIgfVxuICBdO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldiwgdmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXIgPSB2YWx1ZTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORURdOiBuZXdGaWx0ZXJcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIkFzc2lnbmVkXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSYWRpb0dyb3VwIHZhbHVlPXtmaWx0ZXJWYWx1ZXN9IG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9PlxuICAgICAgICAgICAge2Fzc2lnbmVkVmFsdWVzLm1hcCgoYXNzaWduZWQpID0+IChcbiAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgIHN4PXt7IHB5OiAxIH19XG4gICAgICAgICAgICAgICAga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHthc3NpZ25lZC5sYWJlbH19YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgPFJhZGlvXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2Fzc2lnbmVkLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHsgY29sb3I6IFwiIzIxOTZGM1wiIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2Fzc2lnbmVkLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkFzc2lnbmVkRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25lZEZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENoZWNrYm94LFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBCYWRnZUZlYXR1cmVGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQ6IHsgYmFkZ2VfZmVhdHVyZXNfdHlwZXMgfSxcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcy5sZW5ndGgpO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9ICh2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSBmaWx0ZXJWYWx1ZXM/LmluY2x1ZGVzKHZhbHVlKVxuICAgICAgPyBmaWx0ZXJWYWx1ZXMuZmlsdGVyKChmKSA9PiBmICE9PSB2YWx1ZSlcbiAgICAgIDogWy4uLmZpbHRlclZhbHVlcywgdmFsdWVdO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVdOiBuZXdGaWx0ZXJzXG4gICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRJc0V4cGFuZGVkKCEhZmlsdGVyVmFsdWVzLmxlbmd0aCk7XG4gIH0sIFtmaWx0ZXJWYWx1ZXNdKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIkJhZGdlIEZlYXR1cmVcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge2JhZGdlX2ZlYXR1cmVzX3R5cGVzLm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgIDxCb3ggc3g9e3sgcHk6IDEgfX0ga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHtiZi5uYW1lfX1gfT5cbiAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gaGFuZGxlRmlsdGVyQ2hhbmdlKGJmLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ZmlsdGVyVmFsdWVzLmluY2x1ZGVzKGJmLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCIjMjE5NkYzXCJcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsYWJlbD17YmYubmFtZX1cbiAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuQmFkZ2VGZWF0dXJlRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBCYWRnZUZlYXR1cmVGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBGaWx0ZXJMaXN0SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCI7XG5pbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBCdXR0b24sXG4gIENhcmQsXG4gIENhcmRIZWFkZXIsXG4gIERpdmlkZXIsXG4gIFBhcGVyXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBjb25uZWN0IH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgQmFkZ2VGZWF0dXJlRmlsdGVyIGZyb20gXCIuL0JhZGdlRmVhdHVyZUZpbHRlclwiO1xuaW1wb3J0IHtcbiAgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFLFxuICBGSUxURVJfVkFSX0ZSRUVfUEFJRCxcbiAgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMsXG4gIEZJTFRFUl9WQVJfUFJPTU9DT0RFLFxuICBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCxcbiAgRklMVEVSX1ZBUl9USUNLRVRfVFlQRVxufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFRpY2tldFR5cGVGaWx0ZXIgZnJvbSBcIi4vVGlja2V0VHlwZUZpbHRlclwiO1xuaW1wb3J0IEFzc2lnbmVkRmlsdGVyIGZyb20gXCIuL0Fzc2lnbmVkRmlsdGVyXCI7XG5pbXBvcnQgU3RhdHVzRmlsdGVyIGZyb20gXCIuL1N0YXR1c0ZpbHRlclwiO1xuaW1wb3J0IEZyZWVQYWlkRmlsdGVyIGZyb20gXCIuL0ZyZWVQYWlkRmlsdGVyXCI7XG5pbXBvcnQgUHJvbW9Db2RlRmlsdGVyIGZyb20gXCIuL1Byb21vQ29kZUZpbHRlclwiO1xuXG5jb25zdCBGaWx0ZXIgPSAoeyBvbkZpbHRlciwgb25SZXNldCwgZmlsdGVyIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd0ZpbHRlckxpc3QsIHNldFNob3dGaWx0ZXJMaXN0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3Nob3dEYXRlcGlja2VyLCBzZXRTaG93RGF0ZXBpY2tlcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtmaWx0ZXJOdW1BY3RpdmUsIHNldEZpbHRlck51bUFjdGl2ZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgZmlsdGVyUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoZmlsdGVyUmVmLmN1cnJlbnQgJiYgIWZpbHRlclJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIGlmIChzaG93RmlsdGVyTGlzdCkge1xuICAgICAgICBzZXRTaG93RmlsdGVyTGlzdChmYWxzZSk7XG4gICAgICAgIHNldFNob3dEYXRlcGlja2VyKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgfTtcbiAgfSwgW3Nob3dGaWx0ZXJMaXN0XSk7XG5cbiAgY29uc3QgTUFSR0lOX1JJR0hUX1dJVEhfQkFER0UgPSAxO1xuICBjb25zdCBBRERfRklMVEVSX05VTUJFUiA9IDE7XG5cbiAgY29uc3QgY2FsY3VsYXRlQWN0aXZlRmlsdGVycyA9IChmaWx0ZXJzKSA9PiB7XG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICBPYmplY3QuZW50cmllcyhmaWx0ZXJzKS5mb3JFYWNoKChbLCB2YWx1ZV0pID0+IHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICBjb3VudCArPSB2YWx1ZS5sZW5ndGg7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZS50cmltKCkgIT09IFwiXCIpIHtcbiAgICAgICAgY291bnQgKz0gQUREX0ZJTFRFUl9OVU1CRVI7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIiAmJiB2YWx1ZSA+IDApIHtcbiAgICAgICAgY291bnQgKz0gQUREX0ZJTFRFUl9OVU1CRVI7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGNvdW50O1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0RmlsdGVyTnVtQWN0aXZlKGNhbGN1bGF0ZUFjdGl2ZUZpbHRlcnMoZmlsdGVyKSk7XG4gIH0sIFtmaWx0ZXJdKTtcblxuICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XG4gICAgc2V0U2hvd0ZpbHRlckxpc3QoIXNob3dGaWx0ZXJMaXN0KTtcbiAgICBzZXRTaG93RGF0ZXBpY2tlcighc2hvd0RhdGVwaWNrZXIpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlclJlc2V0ID0gKCkgPT4ge1xuICAgIHNldEZpbHRlck51bUFjdGl2ZSgwKTtcbiAgICBvblJlc2V0KCk7XG4gICAgdG9nZ2xlKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckNvbnRhaW5lcn0gcmVmPXtmaWx0ZXJSZWZ9PlxuICAgICAgPFN0YWNrXG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgICAgb25DbGljaz17dG9nZ2xlfVxuICAgICAgPlxuICAgICAgICA8QmFkZ2VcbiAgICAgICAgICBiYWRnZUNvbnRlbnQ9e2ZpbHRlck51bUFjdGl2ZX1cbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgIHN4PXt7IG1yOiBmaWx0ZXJOdW1BY3RpdmUgPiAwID8gTUFSR0lOX1JJR0hUX1dJVEhfQkFER0UgOiBcIlwiIH19XG4gICAgICAgID5cbiAgICAgICAgICA8RmlsdGVyTGlzdEljb24gZm9udFNpemU9XCJsYXJnZVwiIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckljb259IC8+XG4gICAgICAgIDwvQmFkZ2U+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckxhYmVsfT57dChcImZpbHRlci5maWx0ZXJcIil9PC9zcGFuPlxuICAgICAgPC9TdGFjaz5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuZmlsdGVyTGlzdENvbnRhaW5lcn0gJHtzdHlsZXMuY29udGFpbmVyfSAke1xuICAgICAgICAgIHNob3dGaWx0ZXJMaXN0ID8gc3R5bGVzLnNob3dGaWx0ZXJMaXN0IDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgID5cbiAgICAgICAgPFBhcGVyIGVsZXZhdGlvbj17OH0gY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyQ2hlY2tib3hDb250YWluZXJ9PlxuICAgICAgICAgIDxDYXJkIHZhcmlhbnQ9XCJvdXRsaW5lZFwiPlxuICAgICAgICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgICAgICAgdGl0bGU9XCJGaWx0ZXJzXCJcbiAgICAgICAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlUmlwcGxlXG4gICAgICAgICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVGaWx0ZXJSZXNldH1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsZWFuQnV0dG9ufVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIENsZWFuXG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8RGl2aWRlciAvPlxuICAgICAgICAgICAgPEJhZGdlRmVhdHVyZUZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8QXNzaWduZWRGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORURdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8U3RhdHVzRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFRpY2tldFR5cGVGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9USUNLRVRfVFlQRV19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxQcm9tb0NvZGVGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9QUk9NT0NPREVdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8RnJlZVBhaWRGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9GUkVFX1BBSURdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9DYXJkPlxuICAgICAgICA8L1BhcGVyPlxuICAgICAgPC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5GaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmNvbnN0IG1hcFN0YXRlVG9Qcm9wcyA9ICh7IHdpZGdldFN0YXRlIH0pID0+ICh7XG4gIHNvcnQ6IHdpZGdldFN0YXRlLnNvcnQsXG4gIGZpbHRlcjogd2lkZ2V0U3RhdGUuZmlsdGVyXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgY29ubmVjdChtYXBTdGF0ZVRvUHJvcHMsIHt9KShGaWx0ZXIpO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudCxcbiAgUmFkaW9Hcm91cCxcbiAgUmFkaW9cbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX0ZSRUVfUEFJRCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IEZyZWVQYWlkRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfRlJFRV9QQUlEOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG5cbiAgY29uc3QgYXNzaWduZWRWYWx1ZXMgPSBbXG4gICAgeyB2YWx1ZTogXCJGcmVlXCIsIGxhYmVsOiBcIkZyZWVcIiB9LFxuICAgIHsgdmFsdWU6IFwiUGFpZFwiLCBsYWJlbDogXCJQYWlkXCIgfVxuICBdO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldiwgdmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXIgPSB2YWx1ZTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9GUkVFX1BBSURdOiBuZXdGaWx0ZXJcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIkZyZWUgLyBQYWlkXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSYWRpb0dyb3VwIHZhbHVlPXtmaWx0ZXJWYWx1ZXN9IG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9PlxuICAgICAgICAgICAge2Fzc2lnbmVkVmFsdWVzLm1hcCgoYXNzaWduZWQpID0+IChcbiAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgIHN4PXt7IHB5OiAxIH19XG4gICAgICAgICAgICAgICAga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHthc3NpZ25lZC5sYWJlbH19YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgPFJhZGlvXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2Fzc2lnbmVkLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHsgY29sb3I6IFwiIzIxOTZGM1wiIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2Fzc2lnbmVkLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkZyZWVQYWlkRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGcmVlUGFpZEZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBUZXh0RmllbGRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX1BST01PQ09ERSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFByb21vQ29kZUZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX1BST01PQ09ERTogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuICBjb25zdCBbcHJvbW9Db2RlLCBzZXRQcm9tb0NvZGVdID0gdXNlU3RhdGUoZmlsdGVyVmFsdWVzIHx8IFwiXCIpO1xuXG4gIGNvbnN0IGRlYm91bmNlVGltZXIgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IERFQk9VTkNFX1ZBTFVFID0gNTAwO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0UHJvbW9Db2RlKGZpbHRlclZhbHVlcyB8fCBcIlwiKTtcbiAgICBzZXRJc0V4cGFuZGVkKCEhZmlsdGVyVmFsdWVzKTtcbiAgfSwgW2ZpbHRlclZhbHVlc10pO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldikgPT4ge1xuICAgIGNvbnN0IG5ld1Byb21vQ29kZSA9IGV2LnRhcmdldC52YWx1ZTtcbiAgICAvLyB1cGRhdGUgbG9jYWwgc3RhdGUgc28gdGhlIGlucHV0IHJlZmxlY3RzIGNoYW5nZXNcbiAgICBzZXRQcm9tb0NvZGUobmV3UHJvbW9Db2RlKTtcblxuICAgIC8vIHJlbW92ZSBjdXJyZW50IGRlYm91bmNlXG4gICAgaWYgKGRlYm91bmNlVGltZXIuY3VycmVudCkge1xuICAgICAgY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXIuY3VycmVudCk7XG4gICAgfVxuXG4gICAgLy8gZGVib3VuY2Ugc2V0IHRvIDUwMCBtc1xuICAgIGRlYm91bmNlVGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgb25GaWx0ZXIoe1xuICAgICAgICBbRklMVEVSX1ZBUl9QUk9NT0NPREVdOiBuZXdQcm9tb0NvZGVcbiAgICAgIH0pO1xuICAgIH0sIERFQk9VTkNFX1ZBTFVFKTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIHJlbW92ZSBkZWJvdW5jZSBvbiByZWxvYWRcbiAgICBpZiAoZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICBjbGVhclRpbWVvdXQoZGVib3VuY2VUaW1lci5jdXJyZW50KTtcbiAgICB9XG4gIH0sIFtdKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIlByb21vIENvZGVcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHB5OiAxXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHByb21vIGNvZGVcIlxuICAgICAgICAgICAgdmFsdWU9e3Byb21vQ29kZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9XG4gICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAvPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblByb21vQ29kZUZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUHJvbW9Db2RlRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBTZWFyY2hJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IElucHV0QmFzZSBmcm9tIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX09SREVSX05VTUJFUiB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFNlYXJjaENvbnRhaW5lciA9IHN0eWxlZChcImRpdlwiKSgoKSA9PiAoe1xuICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICBtYXJnaW5SaWdodDogXCIwXCIsXG4gIG1hcmdpbkxlZnQ6IFwiMFwiLFxuICB3aWR0aDogXCIxMDAlXCIsXG4gIGRpc3BsYXk6IFwiYmxvY2tcIlxufSkpO1xuY29uc3QgU2VhcmNoSWNvbldyYXBwZXIgPSBzdHlsZWQoXCJkaXZcIikoKCkgPT4gKHtcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiXG59KSk7XG5jb25zdCBTdHlsZWRJbnB1dEJhc2UgPSBzdHlsZWQoSW5wdXRCYXNlKSgoKSA9PiAoe1xuICBjb2xvcjogXCJpbmhlcml0XCIsXG4gIGJvcmRlckJvdHRvbTogXCIxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjQyKVwiLFxuICBwYWRkaW5nTGVmdDogXCIyNXB4XCIsXG4gIHBhZGRpbmdSaWdodDogXCIyNXB4XCIsXG4gIGZvbnRTaXplOiBcIjFlbVwiXG59KSk7XG5jb25zdCBDbG9zZUljb25XcmFwcGVyID0gc3R5bGVkKENsb3NlSWNvbikoKCkgPT4gKHtcbiAgcGFkZGluZzogXCIycHhcIixcbiAgZm9udFNpemU6IFwiMS41ZW1cIixcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgdG9wOiBcIjBcIixcbiAgcmlnaHQ6IFwiMFwiLFxuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCIsXG4gIGN1cnNvcjogXCJwb2ludGVyXCIsXG4gIHpJbmRleDogXCIxMDAwXCJcbn0pKTtcblxuY29uc3QgU2VhcmNoID0gKHsgb25TZWFyY2ggfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93Q2xvc2UsIHNldFNob3dDbG9zZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzZWFyY2hWYWx1ZSwgc2V0U2VhcmNoVmFsdWVdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IG9uS2V5RG93biA9IChldmVudCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGtleSxcbiAgICAgIG5hdGl2ZUV2ZW50OiB7XG4gICAgICAgIHRhcmdldDogeyB2YWx1ZSB9XG4gICAgICB9XG4gICAgfSA9IGV2ZW50O1xuICAgIGlmIChrZXkgPT09IFwiRW50ZXJcIikge1xuICAgICAgb25TZWFyY2goe1xuICAgICAgICBbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdOiB2YWx1ZVxuICAgICAgfSk7XG4gICAgICBzZXRTaG93Q2xvc2UodHJ1ZSk7XG4gICAgfVxuICB9O1xuICBjb25zdCByZXNldFNlYXJjaCA9ICgpID0+IHtcbiAgICBzZXRTZWFyY2hWYWx1ZShcIlwiKTtcbiAgICBvblNlYXJjaCh7XG4gICAgICBbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdOiBcIlwiXG4gICAgfSk7XG4gICAgc2V0U2hvd0Nsb3NlKHRydWUpO1xuICAgIHNldFNob3dDbG9zZShmYWxzZSk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxTZWFyY2hDb250YWluZXI+XG4gICAgICAgIHtzaG93Q2xvc2UgJiYgKFxuICAgICAgICAgIDxDbG9zZUljb25XcmFwcGVyIG9uQ2xpY2s9e3Jlc2V0U2VhcmNofT5cbiAgICAgICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgICAgICA8L0Nsb3NlSWNvbldyYXBwZXI+XG4gICAgICAgICl9XG4gICAgICAgIDxTZWFyY2hJY29uV3JhcHBlcj5cbiAgICAgICAgICA8U2VhcmNoSWNvbiAvPlxuICAgICAgICA8L1NlYXJjaEljb25XcmFwcGVyPlxuICAgICAgICA8U3R5bGVkSW5wdXRCYXNlXG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3QoXCJvcmRlcl9zZWFyY2gub3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgIGlucHV0UHJvcHM9e3sgXCJhcmlhLWxhYmVsXCI6IFwic2VhcmNoXCIgfX1cbiAgICAgICAgICB2YWx1ZT17c2VhcmNoVmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRTZWFyY2hWYWx1ZShlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgb25LZXlEb3duPXtvbktleURvd259XG4gICAgICAgIC8+XG4gICAgICA8L1NlYXJjaENvbnRhaW5lcj5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblNlYXJjaC5wcm9wVHlwZXMgPSB7XG4gIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2VhcmNoO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgUGFwZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEltcG9ydEV4cG9ydEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFNvcnQgPSAoeyBvblNvcnQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93U29ydCwgc2V0U2hvd1NvcnRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBzb3J0UmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKHNvcnRSZWYuY3VycmVudCAmJiAhc29ydFJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHNldFNob3dTb3J0KGZhbHNlKTtcbiAgICB9XG4gIH07XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZVNvcnRDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZVNvcnRDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd1NvcnRdKTtcblxuICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XG4gICAgc2V0U2hvd1NvcnQoIXNob3dTb3J0KTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnNvcnRDb250YWluZXJ9IG9uQ2xpY2s9e3RvZ2dsZX0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgcmVmPXtzb3J0UmVmfVxuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICA+XG4gICAgICAgIDxJbXBvcnRFeHBvcnRJY29uIGZvbnRTaXplPVwibGFyZ2VcIiBjbGFzc05hbWU9e3N0eWxlcy5zb3J0SWNvbn0gLz5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc29ydExhYmVsfT57dChcInNvcnQuc29ydFwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAge3Nob3dTb3J0ICYmIChcbiAgICAgICAgPFBhcGVyXG4gICAgICAgICAgZWxldmF0aW9uPXs4fVxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnNvcnRMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9YH1cbiAgICAgICAgPlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGRpc2FibGVSaXBwbGVcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Tb3J0KHsgZGlyZWN0aW9uOiBcImRlc2NcIiwgbmFtZTogXCJjcmVhdGVkXCIgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoXCJzb3J0Lm5ld19maXJzdFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBkaXNhYmxlUmlwcGxlXG4gICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uU29ydCh7IGRpcmVjdGlvbjogXCJhc2NcIiwgbmFtZTogXCJjcmVhdGVkXCIgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoXCJzb3J0Lm9sZF9maXJzdFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9QYXBlcj5cbiAgICAgICl9XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTb3J0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudCxcbiAgUmFkaW9Hcm91cCxcbiAgUmFkaW9cbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFN0YXR1c0ZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX09XTkVSX1NUQVRVUzogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuXG4gIGNvbnN0IGFzc2lnbmVkVmFsdWVzID0gW1xuICAgIHsgdmFsdWU6IFwiSW5jb21wbGV0ZVwiLCBsYWJlbDogXCJJbmNvbXBsZXRlXCIgfSxcbiAgICB7IHZhbHVlOiBcIkNvbXBsZXRlXCIsIGxhYmVsOiBcIkNvbXBsZXRlXCIgfVxuICBdO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldiwgdmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXIgPSB2YWx1ZTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9PV05FUl9TVEFUVVNdOiBuZXdGaWx0ZXJcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIlN0YXR1c1wiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8UmFkaW9Hcm91cCB2YWx1ZT17ZmlsdGVyVmFsdWVzfSBvbkNoYW5nZT17aGFuZGxlRmlsdGVyQ2hhbmdlfT5cbiAgICAgICAgICAgIHthc3NpZ25lZFZhbHVlcy5tYXAoKGFzc2lnbmVkKSA9PiAoXG4gICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICBzeD17eyBweTogMSB9fVxuICAgICAgICAgICAgICAgIGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YXNzaWduZWQubGFiZWx9fWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgIDxSYWRpb1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXthc3NpZ25lZC52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7IGNvbG9yOiBcIiMyMTk2RjNcIiB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXthc3NpZ25lZC5sYWJlbH1cbiAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvUmFkaW9Hcm91cD5cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5TdGF0dXNGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFN0YXR1c0ZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENoZWNrYm94LFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgVGlja2V0VHlwZUZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIHN1bW1pdDogeyB0aWNrZXRfdHlwZXMgfSxcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9USUNLRVRfVFlQRTogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAodmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXJzID0gZmlsdGVyVmFsdWVzPy5pbmNsdWRlcyh2YWx1ZSlcbiAgICAgID8gZmlsdGVyVmFsdWVzLmZpbHRlcigoZikgPT4gZiAhPT0gdmFsdWUpXG4gICAgICA6IFsuLi5maWx0ZXJWYWx1ZXMsIHZhbHVlXTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9USUNLRVRfVFlQRV06IG5ld0ZpbHRlcnNcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldElzRXhwYW5kZWQoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcbiAgfSwgW2ZpbHRlclZhbHVlc10pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiVGlja2V0IFR5cGVcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge3RpY2tldF90eXBlcy5tYXAoKGJmKSA9PiAoXG4gICAgICAgICAgICA8Qm94IHN4PXt7IHB5OiAxIH19IGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YmYubmFtZX19YH0+XG4gICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IGhhbmRsZUZpbHRlckNoYW5nZShiZi5pZCl9XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2ZpbHRlclZhbHVlcy5pbmNsdWRlcyhiZi5pZCl9XG4gICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwiIzIxOTZGM1wiXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2JmLm5hbWV9XG4gICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblRpY2tldFR5cGVGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFR5cGVGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBHcmlkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcIi4vRmlsdGVyXCI7XG5pbXBvcnQgU29ydCBmcm9tIFwiLi9Tb3J0XCI7XG5pbXBvcnQgU2VhcmNoIGZyb20gXCIuL1NlYXJjaFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBGaWx0ZXJzID0gKHsgb25GaWx0ZXIsIG9uU29ydCwgb25TZWFyY2gsIG9uUmVzZXQgfSkgPT4gKFxuICA8R3JpZCBjb250YWluZXIganVzdGlmeT1cImZsZXgtZW5kXCIgYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgIDxHcmlkXG4gICAgICBpdGVtXG4gICAgICB4cz17Nn1cbiAgICAgIGNvbnRhaW5lclxuICAgICAgcGFkZGluZz17MX1cbiAgICAgIGdhcD17Mn1cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlclNvcnRDb250YWluZXJ9XG4gICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICA+XG4gICAgICA8R3JpZCBpdGVtPlxuICAgICAgICA8RmlsdGVyIG9uRmlsdGVyPXtvbkZpbHRlcn0gb25SZXNldD17b25SZXNldH0gLz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgIDxTb3J0IG9uU29ydD17b25Tb3J0fSAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvR3JpZD5cbiAgICA8R3JpZCBpdGVtIHhzPXs2fSBjb250YWluZXIganVzdGlmeUNvbnRlbnQ9XCJmbGV4LWVuZFwiPlxuICAgICAgPFNlYXJjaCBvblNlYXJjaD17b25TZWFyY2h9IC8+XG4gICAgPC9HcmlkPlxuICA8L0dyaWQ+XG4pO1xuXG5GaWx0ZXJzLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jLFxuICBvblNvcnQ6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVzZXQ6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGaWx0ZXJzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEZvcm1Gb290ZXIgPSAoeyBzYXZlTGFiZWwsIGNhbmNlbExhYmVsLCBvbkNsb3NlLCBkaXNhYmxlZCB9KSA9PiAoXG4gIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuZm9vdGVyfT5cbiAgICA8QnV0dG9uXG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdG59XG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgID5cbiAgICAgIHtjYW5jZWxMYWJlbH1cbiAgICA8L0J1dHRvbj5cbiAgICA8QnV0dG9uXG4gICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnNhdmVCdG59XG4gICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgID5cbiAgICAgIHtzYXZlTGFiZWx9XG4gICAgPC9CdXR0b24+XG4gIDwvQm94PlxuKTtcblxuRm9ybUZvb3Rlci5wcm9wVHlwZXMgPSB7XG4gIHNhdmVMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgY2FuY2VsTGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZvcm1Gb290ZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgRXJyb3JJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIEVycm9yTGFiZWwoeyBtZXNzYWdlLCBjb2xvciwgY2xhc3NOYW1lcywgZGF0YVRlc3RJZCB9KSB7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmVycm9yTGFiZWx9ICR7Y2xhc3NOYW1lcyAmJiBjbGFzc05hbWVzfWB9XG4gICAgICBzdHlsZT17eyBjb2xvciB9fVxuICAgICAgZGF0YS10ZXN0aWQ9e2RhdGFUZXN0SWR9XG4gICAgPlxuICAgICAgPEVycm9ySWNvbiBzeD17eyBjb2xvciB9fSAvPlxuICAgICAge21lc3NhZ2V9XG4gICAgPC9zcGFuPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBFcnJvckxhYmVsO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQmFja2Ryb3AsIENpcmN1bGFyUHJvZ3Jlc3MgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuXG5jb25zdCBMb2FkZXIgPSAoeyBvcGVuIH0pID0+IChcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgPEJhY2tkcm9wIG9wZW49e29wZW59IHN4PXsodGhlbWUpID0+ICh7IHpJbmRleDogdGhlbWUuekluZGV4LmRyYXdlciArIDEgfSl9PlxuICAgIDxDaXJjdWxhclByb2dyZXNzIGNvbG9yPVwiaW5oZXJpdFwiIC8+XG4gIDwvQmFja2Ryb3A+XG4pO1xuXG5Mb2FkZXIucHJvcFR5cGVzID0ge1xuICBvcGVuOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgTG9hZGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgU2VhcmNoSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCBJbmZpbml0ZVNjcm9sbCBmcm9tIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiO1xuaW1wb3J0IE9yZGVyc0xpc3QgZnJvbSBcIi4uL09yZGVyc0xpc3RcIjtcbmltcG9ydCB7IGdldFRpY2tldHNCeU9yZGVyLCBnZXRVc2VyT3JkZXJzIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IE9ORV9QQUdFX05FWFQsIEZJUlNUX1BBR0UgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBoYXNNb3JlMkZldGNoLCBzaG91bGRGZXRjaERhdGEgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBNeU9yZGVyc1RpY2tldHMgPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7XG4gICAgc3VtbWl0LFxuICAgIG1lbWJlck9yZGVycyxcbiAgICBvcmRlcnNfY3VycmVudF9wYWdlLFxuICAgIG9yZGVyc19sYXN0X3BhZ2UsXG4gICAgb3JkZXJzX3Blcl9wYWdlLFxuICAgIHRpY2tldF9wZXJfcGFnZSxcbiAgICBmaWx0ZXIsXG4gICAgc29ydFxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBmZXRjaERhdGEgPSBhc3luYyAocGFnZSkgPT4ge1xuICAgIGlmIChzaG91bGRGZXRjaERhdGEocGFnZSwgb3JkZXJzX2N1cnJlbnRfcGFnZSwgb3JkZXJzX2xhc3RfcGFnZSkpXG4gICAgICBkaXNwYXRjaChcbiAgICAgICAgZ2V0VXNlck9yZGVycyh7XG4gICAgICAgICAgcGFnZSxcbiAgICAgICAgICBwZXJQYWdlOiBvcmRlcnNfcGVyX3BhZ2UsXG4gICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgIHNvcnRcbiAgICAgICAgfSlcbiAgICAgICkudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zdCB7IGRhdGEgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICAgIGRhdGEuZm9yRWFjaCgob3JkZXIpID0+IHtcbiAgICAgICAgICBkaXNwYXRjaChcbiAgICAgICAgICAgIGdldFRpY2tldHNCeU9yZGVyKHtcbiAgICAgICAgICAgICAgb3JkZXJJZDogb3JkZXIuaWQsXG4gICAgICAgICAgICAgIGN1cnJlbnRfcGFnZTogRklSU1RfUEFHRSxcbiAgICAgICAgICAgICAgcGVyUGFnZTogdGlja2V0X3Blcl9wYWdlLFxuICAgICAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICAgICAgIHNvcnRcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoRGF0YShGSVJTVF9QQUdFKTtcbiAgfSwgW2ZpbHRlciwgc29ydF0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgaWQ9XCJpbmZpbml0ZVdyYXBwZXJcIlxuICAgICAgc3R5bGU9e3sgaGVpZ2h0OiA1MDAsIG92ZXJmbG93OiBcImF1dG9cIiwgbWFyZ2luOiBcIjE1cHggMFwiIH19XG4gICAgPlxuICAgICAge1wiIFwifVxuICAgICAge21lbWJlck9yZGVycz8ubGVuZ3RoID8gKFxuICAgICAgICA8SW5maW5pdGVTY3JvbGxcbiAgICAgICAgICBkYXRhTGVuZ3RoPXttZW1iZXJPcmRlcnM/Lmxlbmd0aH1cbiAgICAgICAgICBuZXh0PXsoKSA9PiBmZXRjaERhdGEob3JkZXJzX2N1cnJlbnRfcGFnZSArIE9ORV9QQUdFX05FWFQpfVxuICAgICAgICAgIGhhc01vcmU9e2hhc01vcmUyRmV0Y2gob3JkZXJzX2N1cnJlbnRfcGFnZSwgb3JkZXJzX2xhc3RfcGFnZSl9XG4gICAgICAgICAgc2Nyb2xsVGhyZXNob2xkPXsxfVxuICAgICAgICAgIHNjcm9sbGFibGVUYXJnZXQ9XCJpbmZpbml0ZVdyYXBwZXJcIlxuICAgICAgICA+XG4gICAgICAgICAge21lbWJlck9yZGVycz8ubWFwKChvcmRlcikgPT4gKFxuICAgICAgICAgICAgPE9yZGVyc0xpc3RcbiAgICAgICAgICAgICAga2V5PXtvcmRlci5udW1iZXIgKyBvcmRlci5pZH1cbiAgICAgICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvSW5maW5pdGVTY3JvbGw+XG4gICAgICApIDogKFxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm5vT3JkZXJzRm91bmR9PlxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubm9PcmRlcnNJY29uV3JhcHBlcn0+XG4gICAgICAgICAgICA8U2VhcmNoSWNvbiBzeD17eyBmb250U2l6ZTogNDQsIGNvbG9yOiBcIiMwMDAwMDA4RlwiIH19IC8+XG4gICAgICAgICAgICA8Q2xvc2VJY29uXG4gICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgZm9udFNpemU6IDE4LFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiAwLFxuICAgICAgICAgICAgICAgIGNvbG9yOiBcIiMwMDAwMDA4RlwiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIHt0KFwib3JkZXJzLm5vX29yZGVyc1wiKX1cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTXlPcmRlcnNUaWNrZXRzO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBEaXZpZGVyIGZyb20gXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIjtcbmltcG9ydCB7IGNhbGN1bGF0ZU9yZGVyVG90YWxzLCBmb3JtYXRDdXJyZW5jeSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlclN1bW1hcnlUYWJsZSA9ICh7IG9yZGVyLCBzdW1taXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHsgZGlzY291bnRUb3RhbCwgcmVmdW5kVG90YWwsIHRheGVzVG90YWwsIGFtb3VudFRvdGFsLCB0aWNrZXRTdW1tYXJ5IH0gPVxuICAgIGNhbGN1bGF0ZU9yZGVyVG90YWxzKHsgb3JkZXIsIHN1bW1pdCB9KTtcbiAgY29uc3QgaHVuZHJlZCA9IDEwMDtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5VGFibGV9PlxuICAgICAge3RpY2tldFN1bW1hcnk/Lmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIHt0aWNrZXRTdW1tYXJ5Lm1hcCgodGlja2V0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0aWNrZXRUb3RhbCA9XG4gICAgICAgICAgICAgICh0aWNrZXQucXR5ICogKHRpY2tldC50aWNrZXRfdHlwZS5jb3N0ICogaHVuZHJlZCkpIC8gaHVuZHJlZDtcblxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgICAgICBjb250YWluZXJcbiAgICAgICAgICAgICAgICBrZXk9e2B0aXhvcmRlcl8ke3RpY2tldC50aWNrZXRfdHlwZS5jcmVhdGVkfWB9XG4gICAgICAgICAgICAgICAgc3g9e3sgcGI6IDEgfX1cbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLXN1bW1hcnktaXRlbWl6ZWRcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgeHt0aWNrZXQucXR5fSB7dGlja2V0LnRpY2tldF90eXBlLm5hbWV9XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgIHtmb3JtYXRDdXJyZW5jeSh0aWNrZXRUb3RhbCwgeyBjdXJyZW5jeTogb3JkZXIuY3VycmVuY3kgfSl9XG4gICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgICB7b3JkZXIuZGlzY291bnRfYW1vdW50ID4gMCAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5kaXNjb3VudHNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIC17ZGlzY291bnRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7b3JkZXIudGF4ZXNfYW1vdW50ID4gMCAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS50YXhlc1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAge3RheGVzVG90YWx9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAge29yZGVyLnN0YXR1cyA9PT0gXCJQYWlkXCIgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkuYW1vdW50X3BhaWRcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIC17YW1vdW50VG90YWx9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAge3JlZnVuZFRvdGFsID4gMCAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICB7cmVmdW5kVG90YWx9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAgPERpdmlkZXIgLz5cbiAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwdDogMSwgcGI6IDEgfX0+XG4gICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS50b3RhbFwiKX1cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAge29yZGVyLnN0YXR1cyA9PT0gXCJQYWlkXCIgPyBcIiQwLjAwXCIgOiBhbW91bnRUb3RhbH1cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9HcmlkPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuT3JkZXJTdW1tYXJ5VGFibGUucHJvcFR5cGVzID0ge1xuICBvcmRlcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBjdXJyZW5jeTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBkaXNjb3VudF9hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgdGF4ZXNfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHN0YXR1czogUHJvcFR5cGVzLnN0cmluZ1xuICB9KSxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlclN1bW1hcnlUYWJsZTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VOb3cgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IHRpY2tldHNSZWZ1bmRhYmxlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlZnVuZEVtYWlsU3VwcG9ydCA9ICh7XG4gIHN1bW1pdCxcbiAgdGlja2V0cyxcbiAgc3VibWl0UmVxdWVzdCxcbiAgb25SZWZ1bmRDbGljayxcbiAgb25SZWZ1bmREZXRhaWxDbGljayxcbiAgb25FbWFpbFN1cHBvcnRDbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuICBjb25zdCBpc0luUmVmdW5kYWJsZVBlcmlvZCA9XG4gICAgc3VtbWl0LnJlZ2lzdHJhdGlvbl9hbGxvd2VkX3JlZnVuZF9yZXF1ZXN0X3RpbGxfZGF0ZSA+IG5vdztcbiAgY29uc3QgYXRMZWFzdE9uZVJlZnVuZGFibGVUaWNrZXQgPSB0aWNrZXRzUmVmdW5kYWJsZSh0aWNrZXRzKTtcbiAgY29uc3QgaXNSZWZ1bmRhYmxlID0gISEoaXNJblJlZnVuZGFibGVQZXJpb2QgJiYgYXRMZWFzdE9uZVJlZnVuZGFibGVUaWNrZXQpO1xuICBjb25zdCBoYXNSZWZ1bmRSZXF1ZXN0cyA9IHRpY2tldHM/LnNvbWUoKHQpID0+IHQucmVmdW5kX3JlcXVlc3RzLmxlbmd0aCA+IDApO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7aXNSZWZ1bmRhYmxlICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgcmVxdWVzdCBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn0gXG4gICAgICAgICAgJHtzdWJtaXRSZXF1ZXN0ID8gc3R5bGVzLnJlZnVuZERpc2FibGVkIDogXCJcIn1gfVxuICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBvbkNsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIGRpc2FibGVkPXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlcXVlc3RfcmVmdW5kXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgICB7aGFzUmVmdW5kUmVxdWVzdHMgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCBkZXRhaWxzIGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBvbkNsaWNrPXtvblJlZnVuZERldGFpbENsaWNrfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZF9kZXRhaWxzXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJlbWFpbCBzdXBwb3J0IGJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIG9uQ2xpY2s9e29uRW1haWxTdXBwb3J0Q2xpY2t9XG4gICAgICA+XG4gICAgICAgIHt0KFwib3JkZXJfaW5mby5lbWFpbF9zdXBwb3J0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgPC8+XG4gICk7XG59O1xuXG5SZWZ1bmRFbWFpbFN1cHBvcnQucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdCksXG4gIG9uUmVmdW5kQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlZnVuZERldGFpbENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25FbWFpbFN1cHBvcnRDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIHN1Ym1pdFJlcXVlc3Q6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRFbWFpbFN1cHBvcnQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IE9yZGVyU3VtbWFyeVRhYmxlIGZyb20gXCIuL09yZGVyU3VtbWFyeVRhYmxlXCI7XG5pbXBvcnQgUmVmdW5kRW1haWxTdXBwb3J0IGZyb20gXCIuL1JlZnVuZEVtYWlsU3VwcG9ydFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlclN1bW1hcnkgPSAoe1xuICBvcmRlcixcbiAgc3VtbWl0LFxuICBvblJlZnVuZENsaWNrLFxuICBzdWJtaXRSZXF1ZXN0LFxuICBvblJlZnVuZERldGFpbENsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlXcmFwcGVyfVxuICAgICAgICBzeD17eyBwdDogNCwgcHg6IDQgfX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1zdW1tYXJ5LWNvbnRhaW5lclwiXG4gICAgICA+XG4gICAgICAgIDxoMz57dChcIm9yZGVyX3N1bW1hcnkub3JkZXJfc3VtbWFyeVwiKX08L2gzPlxuICAgICAgICA8R3JpZCBjb250YWluZXI+XG4gICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgIHhzPXsxMn1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm99XG4gICAgICAgICAgICBzeD17eyBwYjogMyB9fVxuICAgICAgICAgICAgaXRlbVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxPcmRlclN1bW1hcnlUYWJsZSBvcmRlcj17b3JkZXJ9IHN1bW1pdD17c3VtbWl0fSAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9Cb3g+XG4gICAgICA8Qm94IHhzPXsxMn0gc3g9e3sgcGI6IDMgfX0+XG4gICAgICAgIDxSZWZ1bmRFbWFpbFN1cHBvcnRcbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0c31cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgb25SZWZ1bmREZXRhaWxDbGljaz17b25SZWZ1bmREZXRhaWxDbGlja31cbiAgICAgICAgICBvbkVtYWlsU3VwcG9ydENsaWNrPXsoKSA9PiB7fX1cbiAgICAgICAgLz5cbiAgICAgIDwvQm94PlxuICAgIDwvPlxuICApO1xufTtcbk9yZGVyU3VtbWFyeS5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgbWVtYmVyVGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxuICB9KSxcbiAgb25SZWZ1bmRDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIHN1Ym1pdFJlcXVlc3Q6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlclN1bW1hcnk7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IEluZmluaXRlU2Nyb2xsIGZyb20gXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFNlYXJjaEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCI7XG5pbXBvcnQgQ2xvc2VJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCI7XG5pbXBvcnQgeyBnZXRVc2VyVGlja2V0cyB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgT3JkZXJMaXN0VGlja2V0cyBmcm9tIFwiLi9PcmRlckxpc3RUaWNrZXRzXCI7XG5pbXBvcnQge1xuICBPTkVfUEFHRV9ORVhULFxuICBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICBGSVJTVF9QQUdFXG59IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IGhhc01vcmUyRmV0Y2gsIHNob3VsZEZldGNoRGF0YSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuXG5jb25zdCBBc3NpZ25Ub01lID0gKCkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQsXG4gICAgdXNlclRpY2tldHMsXG4gICAgdXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSxcbiAgICB1c2VyX3RpY2tldHNfbGFzdF9wYWdlLFxuICAgIGZpbHRlcixcbiAgICBzb3J0XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cbiAgY29uc3QgZmV0Y2hEYXRhID0gYXN5bmMgKHBhZ2UpID0+IHtcbiAgICBpZiAoXG4gICAgICBzaG91bGRGZXRjaERhdGEocGFnZSwgdXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSwgdXNlcl90aWNrZXRzX2xhc3RfcGFnZSlcbiAgICApXG4gICAgICBkaXNwYXRjaChcbiAgICAgICAgZ2V0VXNlclRpY2tldHMoeyBwYWdlLCBwZXJQYWdlOiBERUZBVUxUX0lURU1TX1BFUl9QQUdFLCBmaWx0ZXIsIHNvcnQgfSlcbiAgICAgICk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmZXRjaERhdGEoRklSU1RfUEFHRSk7XG4gIH0sIFtmaWx0ZXIsIHNvcnRdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRDb250YWluZXJ9PlxuICAgICAgPGRpdlxuICAgICAgICBpZD1cImFzc2lnbmVkVG9NZVdyYXBwZXJcIlxuICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IDUwMCwgb3ZlcmZsb3c6IFwiYXV0b1wiLCBtYXJnaW46IFwiMTVweCAwXCIgfX1cbiAgICAgID5cbiAgICAgICAge3VzZXJUaWNrZXRzPy5sZW5ndGggPyAoXG4gICAgICAgICAgPEluZmluaXRlU2Nyb2xsXG4gICAgICAgICAgICBkYXRhTGVuZ3RoPXt1c2VyVGlja2V0cz8ubGVuZ3RofVxuICAgICAgICAgICAgbmV4dD17KCkgPT4gZmV0Y2hEYXRhKHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UgKyBPTkVfUEFHRV9ORVhUKX1cbiAgICAgICAgICAgIGhhc01vcmU9e2hhc01vcmUyRmV0Y2goXG4gICAgICAgICAgICAgIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UsXG4gICAgICAgICAgICAgIHVzZXJfdGlja2V0c19sYXN0X3BhZ2VcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICBzY3JvbGxUaHJlc2hvbGQ9ezF9XG4gICAgICAgICAgICBzY3JvbGxhYmxlVGFyZ2V0PVwiYXNzaWduZWRUb01lV3JhcHBlclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfT5cbiAgICAgICAgICAgICAge3VzZXJUaWNrZXRzLm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgICAgICAgPE9yZGVyTGlzdFRpY2tldHNcbiAgICAgICAgICAgICAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgICAgIGlzUmVmdW5kaW5nPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZD17W119XG4gICAgICAgICAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXRcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvSW5maW5pdGVTY3JvbGw+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5ub1RpY2tldHNGb3VuZH0+XG4gICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm5vT3JkZXJzSWNvbldyYXBwZXJ9PlxuICAgICAgICAgICAgICA8U2VhcmNoSWNvbiBzeD17eyBmb250U2l6ZTogNDQsIGNvbG9yOiBcIiMwMDAwMDA4RlwiIH19IC8+XG4gICAgICAgICAgICAgIDxDbG9zZUljb25cbiAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgZm9udFNpemU6IDE4LFxuICAgICAgICAgICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgICAgICAgIHJpZ2h0OiAwLFxuICAgICAgICAgICAgICAgICAgY29sb3I6IFwiIzAwMDAwMDhGXCJcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICB7dChcInRpY2tldHMubm9fdGlja2V0c1wiKX1cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduVG9NZTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgR3JpZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEF0dGVuZGVlU3RhdHVzID0gKHsgdGlja2V0LCBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIHJldHVybiB0aWNrZXQub3duZXI/LmVtYWlsID8gKFxuICAgIDxHcmlkIGNvbnRhaW5lcj5cbiAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9PlxuICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25lZF90b1wiKX06IDxiciAvPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRPd25lckVtYWlsfVxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJhdHRlbmRlZS1zdGF0dXMtYXNzaWduZWRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtcIiBcIn1cbiAgICAgICAgICAgIHt0aWNrZXQub3duZXI/LmVtYWlsfVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9Cb3g+XG4gICAgICA8L0dyaWQ+XG4gICAgICB7aXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0ICYmIChcbiAgICAgICAgPEdyaWQgaXRlbSBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25lZEJ5VGV4dH0+XG4gICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0+XG4gICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuYXNzaWduZWRfYnlcIil9OiA8YnIgLz5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICB7dGlja2V0Lm9yZGVyPy5vd25lcl9maXJzdF9uYW1lfSB7dGlja2V0Lm9yZGVyPy5vd25lcl9sYXN0X25hbWV9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgPC9HcmlkPlxuICApIDogKFxuICAgIHRpY2tldC5pc19hY3RpdmUgJiYgKFxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0T3duZXJFbWFpbH1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJhdHRlbmRlZS1zdGF0dXMtdW5hc3NpZ25lZFwiXG4gICAgICA+XG4gICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hdHRlbmRlZV9zdGF0dXNfdW5hc3NpZ25lZFwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICApXG4gICk7XG59O1xuXG5BdHRlbmRlZVN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgaXNfYWN0aXZlOiBQcm9wVHlwZXMuYm9vbFxuICB9KSxcbiAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQXR0ZW5kZWVTdGF0dXM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgT3JkZXJMaXN0VGlja2V0cyBmcm9tIFwiLi9PcmRlckxpc3RUaWNrZXRzXCI7XG5pbXBvcnQgeyBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE9yZGVyTGlzdEl0ZW0gPSAoe1xuICBzdW1taXQsXG4gIG9yZGVyLFxuICBvblBhZ2luYXRlQ2xpY2ssXG4gIHRpY2tldHNUb1JlZnVuZCxcbiAgc2VsZWN0VG9SZWZ1bmRcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbaXRlbXNUb0Rpc3BsYXksIHNldEl0ZW1zVG9EaXNwbGF5XSA9IHVzZVN0YXRlKFxuICAgIFBBR0lOQVRJT05fRElTUExBWV9DT1VOVFxuICApO1xuXG4gIGlmICghb3JkZXI/Lm1lbWJlclRpY2tldHM/Lmxlbmd0aCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHNsaWNlZFRpY2tldHMgPSBvcmRlcj8ubWVtYmVyVGlja2V0cz8uc2xpY2UoMCwgaXRlbXNUb0Rpc3BsYXkpO1xuXG4gIGNvbnN0IG9uVmlld01vcmUgPSAoKSA9PiB7XG4gICAgaWYgKG9yZGVyPy50aWNrZXRzX3RvdGFsID4gb3JkZXI/Lm1lbWJlclRpY2tldHMubGVuZ3RoKSB7XG4gICAgICBvblBhZ2luYXRlQ2xpY2soKTtcbiAgICB9XG4gICAgc2V0SXRlbXNUb0Rpc3BsYXkoaXRlbXNUb0Rpc3BsYXkgKyBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuICB9O1xuXG4gIGNvbnN0IG9uVmlld0xlc3MgPSAoKSA9PiBzZXRJdGVtc1RvRGlzcGxheShQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtzbGljZWRUaWNrZXRzPy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICA8T3JkZXJMaXN0VGlja2V0c1xuICAgICAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIGlzUmVmdW5kaW5nPXtmYWxzZX1cbiAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9eyEhdGlja2V0c1RvUmVmdW5kLmZpbmQoKHQpID0+IHQuaWQgPT09IHRpY2tldC5pZCl9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAvPlxuICAgICAgKSl9XG4gICAgICB7b3JkZXI/LnRpY2tldHNfdG90YWwgPiBpdGVtc1RvRGlzcGxheSA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IG1vcmUgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdNb3JlfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcnMtdGlja2V0cy52aWV3X21vcmVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKSA6IChcbiAgICAgICAgXCJcIlxuICAgICAgKX1cbiAgICAgIHtzbGljZWRUaWNrZXRzPy5sZW5ndGggPiBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQgJiZcbiAgICAgIHNsaWNlZFRpY2tldHM/Lmxlbmd0aCA9PT0gb3JkZXI/LnRpY2tldHNfdG90YWwgPyAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwidmlldyBsZXNzIGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudmlld01vcmVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17b25WaWV3TGVzc31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJzLXRpY2tldHMudmlld19sZXNzXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICkgOiAoXG4gICAgICAgIFwiXCJcbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59O1xuXG5PcmRlckxpc3RJdGVtLnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJMaXN0SXRlbTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IENoZWNrYm94IGZyb20gXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFRpY2tldFN0YXR1cyBmcm9tIFwiLi4vVGlja2V0U3RhdHVzXCI7XG5pbXBvcnQgeyBnZXRTdW1taXRSZWFzc2lnbkRhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuL0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgVGlja2V0RGV0YWlsIGZyb20gXCIuLi9UaWNrZXREZXRhaWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0IFRpY2tldFJlYXNzaWduIGZyb20gXCIuLi9UaWNrZXRSZWFzc2lnblwiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0IFRpY2tldEFzc2lnbiBmcm9tIFwiLi4vVGlja2V0QXNzaWduXCI7XG5pbXBvcnQgeyByZXNldFRpY2tldCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IG1vZGFsVmlld3MgPSB7XG4gIGRldGFpbDogXCJERVRBSUxcIixcbiAgcmVhc3NpZ246IFwiUkVBU1NJR05cIixcbiAgYXNzaWduOiBcIkFTU0lHTlwiXG59O1xuXG5jb25zdCBUaWNrZXRDVEFzID0gKHtcbiAgaXNJbmNvbXBsZXRlLFxuICBpc1VuYXNzaWduZWQsXG4gIGlzUmVhc3NpZ25hYmxlLFxuICBvbk9wZW5DbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgaWYgKGlzVW5hc3NpZ25lZCkge1xuICAgIHJldHVybiAoXG4gICAgICA8QnV0dG9uXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnblRpY2tldEJ1dHRvbn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gb25PcGVuQ2xpY2sobW9kYWxWaWV3cy5hc3NpZ24pfVxuICAgICAgPlxuICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuYXNzaWduX3RpY2tldFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTdGFja1xuICAgICAgc3g9e3tcbiAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiZW5kXCIsXG4gICAgICAgIHdpZHRoOiBcIjEwMCVcIlxuICAgICAgfX1cbiAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICA+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdGaW5pc2hUaWNrZXRCdXR0b259XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MuZGV0YWlsKX1cbiAgICAgID5cbiAgICAgICAge2lzSW5jb21wbGV0ZVxuICAgICAgICAgID8gdChcInRpY2tldF9zdGF0dXMuZmluaXNoX3RpY2tldFwiKVxuICAgICAgICAgIDogdChcInRpY2tldF9zdGF0dXMudmlld190aWNrZXRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICAgIHtpc1JlYXNzaWduYWJsZSAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVhc3NpZ24gdGlja2V0IGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVhc3NpZ25CdXR0b259XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gb25PcGVuQ2xpY2sobW9kYWxWaWV3cy5yZWFzc2lnbil9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMucmVhc3NpZ25fdGlja2V0XCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgPC9TdGFjaz5cbiAgKTtcbn07XG5cblRpY2tldENUQXMucHJvcFR5cGVzID0ge1xuICBpc0luY29tcGxldGU6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIGlzVW5hc3NpZ25lZDogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgaXNSZWFzc2lnbmFibGU6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIG9uT3BlbkNsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5jb25zdCBPcmRlckxpc3RUaWNrZXRzID0gKHtcbiAgdGlja2V0LFxuICBzdW1taXQsXG4gIGlzUmVmdW5kaW5nLFxuICBpc1NlbGVjdGVkVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kLFxuICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXRcbn0pID0+IHtcbiAgY29uc3QgX2lzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCA9ICEhaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0O1xuXG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcbiAgY29uc3QgeyBpc1JlZnVuZGFibGUsIGlzVW5hc3NpZ25lZCwgaXNJbmNvbXBsZXRlLCBjYW5SZWFzc2lnbiB9ID1cbiAgICB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG4gIGNvbnN0IFttb2RhbE9wZW4sIHNldE1vZGFsT3Blbl0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gIGNvbnN0IG9uUmVhc3NpZ25hYmxlUGVyaW9kID0gcmVhc3NpZ25EYXRlID4gbm93O1xuICBjb25zdCBpc1JlYXNzaWduYWJsZSA9XG4gICAgb25SZWFzc2lnbmFibGVQZXJpb2QgJiYgY2FuUmVhc3NpZ24gJiYgIV9pc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ7XG4gIGNvbnN0IGlzQXNzaWduYWJsZSA9XG4gICAgb25SZWFzc2lnbmFibGVQZXJpb2QgJiYgaXNVbmFzc2lnbmVkICYmICFfaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0O1xuXG4gIGNvbnN0IGhhbmRsZUNsb3NlTW9kYWwgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRUaWNrZXQoKSk7XG4gICAgc2V0TW9kYWxPcGVuKG51bGwpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU9wZW5Nb2RhbCA9ICh2aWV3KSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRUaWNrZXQoKSk7XG4gICAgc2V0TW9kYWxPcGVuKHZpZXcpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEdyaWRcbiAgICAgIGNvbnRhaW5lclxuICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlcldyYXBwZXJ9ICR7XG4gICAgICAgIGlzUmVmdW5kaW5nID8gc3R5bGVzLnJlZnVuZE1vZGFsIDogXCJcIlxuICAgICAgfSAke2lzUmVmdW5kaW5nICYmICFpc1JlZnVuZGFibGUgPyBzdHlsZXMuZGlzYWJsZWRSZWZ1bmQgOiBcIlwifSAke1xuICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQgPyBzdHlsZXMuc2VsZWN0ZWQgOiBcIlwiXG4gICAgICB9YH1cbiAgICA+XG4gICAgICB7aXNSZWZ1bmRpbmcgJiYgKFxuICAgICAgICA8R3JpZCB4cz17MX0gcGFkZGluZz17Mn0gY2xhc3NOYW1lPXtzdHlsZXMuY2hlY2tib3h9PlxuICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCB0aWNrZXQgY2hlY2tib3hcIlxuICAgICAgICAgICAgcm9sZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIGNoZWNrZWQ9e2lzU2VsZWN0ZWRUb1JlZnVuZH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2VsZWN0VG9SZWZ1bmQoZSwgdGlja2V0KX1cbiAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHtcbiAgICAgICAgICAgICAgICBmb250U2l6ZTogMThcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGRpc2FibGVkPXshaXNSZWZ1bmRhYmxlfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8R3JpZFxuICAgICAgICBjb250YWluZXJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1saXN0LXRpY2tldFwiXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgICB4cz17aXNSZWZ1bmRpbmcgPyAxMSA6IDEyfVxuICAgICAgPlxuICAgICAgICA8R3JpZFxuICAgICAgICAgIHhzPXs4fVxuICAgICAgICAgIHB5PXsyfVxuICAgICAgICAgIHBsPXs0fVxuICAgICAgICAgIGl0ZW1cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRUaWNrZXRUeXBlfVxuICAgICAgICAgIGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxTdGFja1xuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiZmxleC1zdGFydFwiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlV3JhcHBlcn0geHM9ezR9IHB5PXsyfSBwcj17NH0gaXRlbT5cbiAgICAgICAgICB7LyogVG8gYWRkIGJhZGdlIGZlYXR1cmVzICovfVxuICAgICAgICAgIHt0aWNrZXQuYmFkZ2U/LmZlYXR1cmVzLm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlfVxuICAgICAgICAgICAgICBzcmM9e2JmLmltYWdlfVxuICAgICAgICAgICAgICBhbHQ9e2JmLm5hbWV9XG4gICAgICAgICAgICAgIGtleT17YmYubmFtZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgeHM9ezEyfSBzeD17eyBweDogNCwgcGI6IDIgfX0gaXRlbT5cbiAgICAgICAgICA8QXR0ZW5kZWVTdGF0dXNcbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0PXtfaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0fVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0Tm99PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06e1wiIFwifVxuICAgICAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgICAgIHRleHQ9e3RpY2tldC5udW1iZXJ9XG4gICAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwidGlja2V0X3N0YXR1cy5jb3B5X3RpY2tldF9udW1iZXJcIil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCBjb250YWluZXI+XG4gICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgICAgIHhzPXsxMn1cbiAgICAgICAgICAgIGxnPXs2fVxuICAgICAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgICAgICBpdGVtXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFRpY2tldFN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgcHk9ezJ9IHByPXs0fSB4cz17MTJ9IGxnPXs2fSBjb250YWluZXIgaXRlbT5cbiAgICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICAgIGFsaWduPVwiY2VudGVyXCJcbiAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCIsXG4gICAgICAgICAgICAgICAgbWluSGVpZ2h0OiBcIjJlbVwiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldEFjdGlvbkJ1dHRvbnN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0aWNrZXQuaXNfYWN0aXZlICYmICFpc1JlZnVuZGluZyAmJiAoXG4gICAgICAgICAgICAgICAgPFRpY2tldENUQXNcbiAgICAgICAgICAgICAgICAgIGlzVW5hc3NpZ25lZD17aXNVbmFzc2lnbmVkfVxuICAgICAgICAgICAgICAgICAgaXNJbmNvbXBsZXRlPXtpc0luY29tcGxldGV9XG4gICAgICAgICAgICAgICAgICBpc1JlYXNzaWduYWJsZT17XG4gICAgICAgICAgICAgICAgICAgIGlzUmVhc3NpZ25hYmxlICYmIGNhblJlYXNzaWduICYmICFfaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBvbk9wZW5DbGljaz17aGFuZGxlT3Blbk1vZGFsfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxUaWNrZXREZXRhaWxcbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICB0aWNrZXRJZD17dGlja2V0Py5pZH1cbiAgICAgICAgICBvcmRlcklkPXt0aWNrZXQ/Lm9yZGVyX2lkIHx8IHRpY2tldD8ub3JkZXI/LmlkfVxuICAgICAgICAgIG93bmVySWQ9e3RpY2tldD8ub3duZXI/LmlkfVxuICAgICAgICAgIG9wZW49e21vZGFsT3BlbiA9PT0gbW9kYWxWaWV3cy5kZXRhaWx9XG4gICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgLz5cbiAgICAgICAge2lzUmVhc3NpZ25hYmxlICYmIChcbiAgICAgICAgICA8VGlja2V0UmVhc3NpZ25cbiAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgdGlja2V0SWQ9e3RpY2tldD8uaWR9XG4gICAgICAgICAgICBvcmRlcklkPXt0aWNrZXQ/Lm9yZGVyX2lkIHx8IHRpY2tldD8ub3JkZXI/LmlkfVxuICAgICAgICAgICAgb3duZXJJZD17dGlja2V0Py5vd25lcj8uaWR9XG4gICAgICAgICAgICBvcGVuPXttb2RhbE9wZW4gPT09IG1vZGFsVmlld3MucmVhc3NpZ259XG4gICAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZU1vZGFsfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHtpc0Fzc2lnbmFibGUgJiYgKFxuICAgICAgICAgIDxUaWNrZXRBc3NpZ25cbiAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgdGlja2V0SWQ9e3RpY2tldD8uaWR9XG4gICAgICAgICAgICBvcmRlcklkPXt0aWNrZXQ/Lm9yZGVyX2lkIHx8IHRpY2tldD8ub3JkZXI/LmlkfVxuICAgICAgICAgICAgb3duZXJJZD17dGlja2V0Py5vd25lcj8uaWR9XG4gICAgICAgICAgICBvcGVuPXttb2RhbE9wZW4gPT09IG1vZGFsVmlld3MuYXNzaWdufVxuICAgICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9HcmlkPlxuICAgIDwvR3JpZD5cbiAgKTtcbn07XG5cbk9yZGVyTGlzdFRpY2tldHMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgb3JkZXJfaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBpZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgIGVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgbnVtYmVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHRvdGFsX3JlZnVuZGVkX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICB0aWNrZXRfdHlwZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIG5hbWU6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBpc19hY3RpdmU6IFByb3BUeXBlcy5ib29sXG4gIH0pLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGlzUmVmdW5kaW5nOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNTZWxlY3RlZFRvUmVmdW5kOiBQcm9wVHlwZXMuYm9vbCxcbiAgc2VsZWN0VG9SZWZ1bmQ6IFByb3BUeXBlcy5mdW5jLFxuICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlckxpc3RUaWNrZXRzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFRhYnMgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVGFic1wiO1xuaW1wb3J0IFRhYiBmcm9tIFwiQG11aS9tYXRlcmlhbC9UYWJcIjtcbmltcG9ydCBPcmRlckxpc3RJdGVtIGZyb20gXCIuL09yZGVyTGlzdEl0ZW1cIjtcbmltcG9ydCBPcmRlclN1bW1hcnkgZnJvbSBcIi4uL09yZGVyU3VtbWFyeVwiO1xuaW1wb3J0IFJlZnVuZFJlcXVlc3RzTW9kYWwgZnJvbSBcIi4uL1JlZnVuZFJlcXVlc3RzXCI7XG5pbXBvcnQgRXJyb3JMYWJlbCBmcm9tIFwiLi4vTGFiZWxzL0Vycm9yTGFiZWxcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBSZWZ1bmREZXRhaWxzIGZyb20gXCIuLi9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmREZXRhaWxzXCI7XG5cbmNvbnN0IFRhYlBhbmVsID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIHZhbHVlLCBpbmRleCB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcm9sZT1cInRhYnBhbmVsXCJcbiAgICAgIGhpZGRlbj17dmFsdWUgIT09IGluZGV4fVxuICAgICAgaWQ9e2B0YWJwYW5lbC0ke2luZGV4fWB9XG4gICAgICBhcmlhLWxhYmVsbGVkYnk9e2B0YWItJHtpbmRleH1gfVxuICAgID5cbiAgICAgIHt2YWx1ZSA9PT0gaW5kZXggJiYgY2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5jb25zdCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSA9ICh7XG4gIGlzTW9iaWxlLFxuICBzdW1taXQsXG4gIG9yZGVyLFxuICBkZXRhaWxzUmVxdWlyZWQsXG4gIG9uUGFnaW5hdGVDbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoMCk7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChfLCBuZXdWYWx1ZSkgPT4ge1xuICAgIHNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgfTtcbiAgY29uc3QgW3RpY2tldHNUb1JlZnVuZCwgc2V0VGlja2V0c1RvUmVmdW5kXSA9IHVzZVN0YXRlKFtdKTtcbiAgY29uc3QgW3N1Ym1pdFJlcXVlc3QsIHNldFN1Ym1pdFJlcXVlc3RdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbcmVmdW5kRGV0YWlsc09wZW4sIHNldFJlZnVuZERldGFpbHNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBvblJlZnVuZENsaWNrID0gKCkgPT4ge1xuICAgIHNldFN1Ym1pdFJlcXVlc3QodHJ1ZSk7XG4gIH07XG4gIGNvbnN0IHVuc2VsZWN0UmVmdW5kVGlja2V0cyA9ICh0aWNrZXQpID0+IHtcbiAgICBjb25zdCBmaWx0ZXJTZWxlY3RlZCA9IHRpY2tldHNUb1JlZnVuZC5maWx0ZXIoKHQpID0+IHQuaWQgIT09IHRpY2tldC5pZCk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKGZpbHRlclNlbGVjdGVkKTtcbiAgfTtcbiAgY29uc3Qgc2VsZWN0VG9SZWZ1bmQgPSAoZSwgdGlja2V0KSA9PiB7XG4gICAgY29uc3QgeyBjaGVja2VkIH0gPSBlLnRhcmdldDtcbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRUaWNrZXQgPSBvcmRlcj8ubWVtYmVyVGlja2V0cz8uZmluZChcbiAgICAgICAgKHQpID0+IHQuaWQgPT09IHRpY2tldC5pZFxuICAgICAgKTtcbiAgICAgIHNldFRpY2tldHNUb1JlZnVuZChbLi4udGlja2V0c1RvUmVmdW5kLCBzZWxlY3RlZFRpY2tldF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHModGlja2V0KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY2xvc2VTdWJtaXRSZXF1ZXN0ID0gKCkgPT4ge1xuICAgIHNldFN1Ym1pdFJlcXVlc3QoZmFsc2UpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChbXSk7XG4gIH07XG5cbiAgY29uc3QgcmVzZXRBbGxSZWZ1bmRTdGF0dXNlcyA9ICgpID0+IHtcbiAgICBzZXRTdWJtaXRSZXF1ZXN0KGZhbHNlKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoW10pO1xuICB9O1xuXG4gIGNvbnN0IG1vcmVEZXRhaWxzID0gKCkgPT5cbiAgICBkZXRhaWxzUmVxdWlyZWQgJiYgKFxuICAgICAgPEVycm9yTGFiZWxcbiAgICAgICAgbWVzc2FnZT17dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2RldGFpbHNfcmVxdWlyZWRcIil9XG4gICAgICAgIGNvbG9yPVwiI2ZmOTgwMFwiXG4gICAgICAgIGRhdGFUZXN0SWQ9XCJtb3JlLWRldGFpbHMtbGFiZWxcIlxuICAgICAgLz5cbiAgICApO1xuXG4gIHJldHVybiBpc01vYmlsZSA/IChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJtb2JpbGUtb3JkZXJzLWxpc3QtY29udGFpbmVyXCJcbiAgICA+XG4gICAgICA8Qm94IHN4PXt7IGJvcmRlckNvbG9yOiBcImRpdmlkZXJcIiwgcGI6IDIgfX0+XG4gICAgICAgIDxUYWJzXG4gICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgYXJpYS1sYWJlbD1cIlRpY2tldHMgJiBTdW1tYXJ5XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMudGlja2V0c1wiKX0gY2xhc3NOYW1lPXtzdHlsZXMudGFiQnV0dG9uc30gLz5cbiAgICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLnN1bW1hcnlcIil9IGNsYXNzTmFtZT17c3R5bGVzLnRhYkJ1dHRvbnN9IC8+XG4gICAgICAgIDwvVGFicz5cbiAgICAgIDwvQm94PlxuICAgICAge21vcmVEZXRhaWxzKCl9XG4gICAgICA8VGFiUGFuZWwgdmFsdWU9e3ZhbHVlfSBpbmRleD17MH0+XG4gICAgICAgIDxPcmRlckxpc3RJdGVtXG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICAvPlxuICAgICAgPC9UYWJQYW5lbD5cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dmFsdWV9IGluZGV4PXsxfT5cbiAgICAgICAgPE9yZGVyU3VtbWFyeVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYlBhbmVsPlxuICAgIDwvQm94PlxuICApIDogKFxuICAgIDw+XG4gICAgICA8R3JpZCBpdGVtIG1kPXsxMn0+XG4gICAgICAgIHttb3JlRGV0YWlscygpfVxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWRcbiAgICAgICAgcGFkZGluZz17MX1cbiAgICAgICAgaXRlbVxuICAgICAgICBtZD17N31cbiAgICAgICAgb3JkZXI9e3sgbWQ6IDEgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJkZXNrdG9wLW9yZGVycy1saXN0LWNvbnRhaW5lclwiXG4gICAgICA+XG4gICAgICAgIDxPcmRlckxpc3RJdGVtXG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgcGFkZGluZz17MX0gaXRlbSBtZD17NX0gb3JkZXI9e3sgbWQ6IDEgfX0+XG4gICAgICAgIDxPcmRlclN1bW1hcnlcbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9eygpID0+IHNldFJlZnVuZERldGFpbHNPcGVuKHRydWUpfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPFJlZnVuZFJlcXVlc3RzTW9kYWxcbiAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHMgfHwgW119XG4gICAgICAgIG9wZW49e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlPXsoKSA9PiByZXNldEFsbFJlZnVuZFN0YXR1c2VzKCl9XG4gICAgICAgIG9uQ2xvc2VTbGlkZXI9eygpID0+IGNsb3NlU3VibWl0UmVxdWVzdCgpfVxuICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgIC8+XG4gICAgICA8UmVmdW5kRGV0YWlsc1xuICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0c31cbiAgICAgICAgY3VycmVuY3k9e29yZGVyLmN1cnJlbmN5fVxuICAgICAgICBvcGVuPXtyZWZ1bmREZXRhaWxzT3Blbn1cbiAgICAgICAgb25DbG9zZVNsaWRlcj17KCkgPT4gc2V0UmVmdW5kRGV0YWlsc09wZW4oZmFsc2UpfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk9yZGVyc0xpc3REZXNrdG9wTW9iaWxlLnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBtZW1iZXJUaWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pLFxuICBpc01vYmlsZTogUHJvcFR5cGVzLmJvb2wsXG4gIGRldGFpbHNSZXF1aXJlZDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uUGFnaW5hdGVDbGljazogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB1c2VNZWRpYVF1ZXJ5IGZyb20gXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIjtcbmltcG9ydCB7IGdldFRpY2tldHNCeU9yZGVyIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IGdldEZvcm1hdHRlZERhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IE9ORV9QQUdFX05FWFQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUgZnJvbSBcIi4vT3JkZXJzTGlzdERlc2t0b3BNb2JpbGVcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJzTGlzdCA9ICh7IHN1bW1pdCwgb3JkZXIgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgeyB0aWNrZXRfcGVyX3BhZ2UsIGZpbHRlciwgc29ydCB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSxcbiAgICBzaGFsbG93RXF1YWxcbiAgKTtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBpc01vYmlsZSA9IHVzZU1lZGlhUXVlcnkodGhlbWUuYnJlYWtwb2ludHMuZG93bihcImxnXCIpKTtcbiAgY29uc3QgW2lzTW9iaWxlVmlld2FibGUsIHNldE1vYmlsZVZpZXdhYmxlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgZGV0YWlsc1JlcXVpcmVkID0gb3JkZXIubWVtYmVyVGlja2V0cz8uZmluZChcbiAgICAodGlja2V0KSA9PiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCJcbiAgKTtcblxuICBjb25zdCBvblBhZ2luYXRlQ2xpY2sgPSAoKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICBvcmRlcklkOiBvcmRlci5pZCxcbiAgICAgICAgcGFnZTogb3JkZXIudGlja2V0c19wYWdlX2N1cnJlbnQgKyBPTkVfUEFHRV9ORVhULFxuICAgICAgICBwZXJQYWdlOiB0aWNrZXRfcGVyX3BhZ2UsXG4gICAgICAgIGZpbHRlcixcbiAgICAgICAgc29ydFxuICAgICAgfSlcbiAgICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICB4czogMixcbiAgICAgICAgICAgIG1kOiAxLFxuICAgICAgICAgICAgbGc6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldEluZm99XG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci10aWNrZXQtaW5mby1jb250YWluZXJcIlxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcnMucHVyY2hhc2VkXCIpfToge2dldEZvcm1hdHRlZERhdGUob3JkZXIuY3JlYXRlZCl9IHx7XCIgXCJ9XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX25vXCIpfTp7XCIgXCJ9XG4gICAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgICB0ZXh0PXtvcmRlci5udW1iZXJ9XG4gICAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICB7aXNNb2JpbGUgJiYgKFxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIHN4PXt7IHBhZGRpbmc6IDAgfX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmJsYWNrQnV0dG9ufVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0TW9iaWxlVmlld2FibGUoIWlzTW9iaWxlVmlld2FibGUpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpc01vYmlsZVZpZXdhYmxlXG4gICAgICAgICAgICAgID8gdChcInRpY2tldF9zdGF0dXMuaGlkZV90aWNrZXRzXCIpXG4gICAgICAgICAgICAgIDogdChcInRpY2tldF9zdGF0dXMudmlld190aWNrZXRzXCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICApfVxuICAgICAgPC9Cb3g+XG4gICAgICA8R3JpZFxuICAgICAgICBrZXk9e29yZGVyLmlkfVxuICAgICAgICBjb250YWluZXJcbiAgICAgICAgcm93U3BhY2luZz17MX1cbiAgICAgICAgY29sdW1uU3BhY2luZz17eyB4czogMSwgc206IDIsIG1kOiAzIH19XG4gICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLm9yZGVyVGlja2V0Q29udGFpbmVyfSAke1xuICAgICAgICAgIGlzTW9iaWxlICYmICFpc01vYmlsZVZpZXdhYmxlID8gc3R5bGVzLmRpc3BsYXlfbm9uZSA6IFwiXCJcbiAgICAgICAgfWB9XG4gICAgICAgIHN4PXt7XG4gICAgICAgICAgZmxleERpcmVjdGlvbjoge1xuICAgICAgICAgICAgbWQ6IFwicm93XCIsXG4gICAgICAgICAgICBsZzogXCJyb3dcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgeHM6IDIsXG4gICAgICAgICAgICBtZDogNCxcbiAgICAgICAgICAgIGxnOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8T3JkZXJzTGlzdERlc2t0b3BNb2JpbGVcbiAgICAgICAgICBpc01vYmlsZT17aXNNb2JpbGV9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIGRldGFpbHNSZXF1aXJlZD17ISFkZXRhaWxzUmVxdWlyZWR9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC8+XG4gICk7XG59O1xuXG5PcmRlcnNMaXN0LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJzTGlzdDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IFJlZnVuZFJlcXVlc3RlZFRpY2tldCBmcm9tIFwiLi9SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcIjtcbmltcG9ydCB7IGdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuY29uc3QgUmVmdW5kRGV0YWlscyA9ICh7IHRpY2tldHMsIGN1cnJlbmN5LCBvcGVuLCBvbkNsb3NlU2xpZGVyIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCByZXF1ZXN0ZWRUaWNrZXRzID0gdXNlTWVtbyhcbiAgICAoKSA9PiBnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzKHRpY2tldHMpLFxuICAgIFt0aWNrZXRzXVxuICApO1xuICBjb25zdCBjbG9zZVNsaWRlciA9ICgpID0+IHtcbiAgICBvbkNsb3NlU2xpZGVyKCk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPFJpZ2h0RHJhd2VyXG4gICAgICBpZD1cInJlZnVuZC1kZXRhaWxzXCJcbiAgICAgIG9wZW49e29wZW59XG4gICAgICBvbkNsb3NlPXtjbG9zZVNsaWRlcn1cbiAgICAgIHRpdGxlPXt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRfZGV0YWlsc1wiKX1cbiAgICA+XG4gICAgICA8Qm94XG4gICAgICAgIHN4PXt7IGRpc3BsYXk6IFwiZmxleFwiLCBmbGV4RGlyZWN0aW9uOiBcImNvbHVtblwiLCBhbGlnbkl0ZW1zOiBcImNlbnRlclwiIH19XG4gICAgICA+XG4gICAgICAgIHtyZXF1ZXN0ZWRUaWNrZXRzPy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgIDxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcbiAgICAgICAgICAgIGtleT17YHJlZnVuZF9yZXFfJHt0aWNrZXQ/LmlkfWB9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIGN1cnJlbmN5PXtjdXJyZW5jeX1cbiAgICAgICAgICAgIHJlZnVuZERldGFpbHNcbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvQm94PlxuICAgIDwvUmlnaHREcmF3ZXI+XG4gICk7XG59O1xuXG5SZWZ1bmREZXRhaWxzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KSxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2VTbGlkZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmREZXRhaWxzO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgSWNvbkJ1dHRvbiwgVG9vbHRpcCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB0b29sdGlwQ2xhc3NlcyB9IGZyb20gXCJAbXVpL21hdGVyaWFsL1Rvb2x0aXBcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IEluZm9JY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0luZm9cIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgQXR0ZW5kZWVTdGF0dXMgZnJvbSBcIi4uL09yZGVyc0xpc3QvQXR0ZW5kZWVTdGF0dXNcIjtcbmltcG9ydCBSZWZ1bmRTdGF0dXMgZnJvbSBcIi4vUmVmdW5kU3RhdHVzXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uL0NvcHlUZXh0XCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBUaWNrZXRTdGF0dXMgZnJvbSBcIi4uL1RpY2tldFN0YXR1c1wiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgZm9ybWF0Q3VycmVuY3kgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcblxuY29uc3QgUmVmdW5kUmVxdWVzdGVkVGlja2V0ID0gKHsgdGlja2V0LCBjdXJyZW5jeSwgcmVmdW5kRGV0YWlscyB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBHUklEXzggPSA4O1xuICBjb25zdCBHUklEXzEyID0gMTI7XG5cbiAgY29uc3QgUEFERElOR18yID0gMjtcblxuICBjb25zdCBhcHByb3ZlZFJlZnVuZHMgPSB0aWNrZXQucmVmdW5kX3JlcXVlc3RzLmZpbHRlcihcbiAgICAocmVmdW5kKSA9PiByZWZ1bmQuc3RhdHVzID09PSBcIkFwcHJvdmVkXCJcbiAgKTtcblxuICBjb25zdCByZWZ1bmRlZFRheGVzU3VtbWF0b3J5ID0ge307XG5cbiAgYXBwcm92ZWRSZWZ1bmRzLmZvckVhY2goKHJlZnVuZCkgPT4ge1xuICAgIHJlZnVuZC5yZWZ1bmRlZF90YXhlcy5mb3JFYWNoKChydCkgPT4ge1xuICAgICAgY29uc3QgdGF4SWQgPSBydC50YXguaWQ7XG4gICAgICBpZiAoIXJlZnVuZGVkVGF4ZXNTdW1tYXRvcnlbdGF4SWRdKSB7XG4gICAgICAgIHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnlbdGF4SWRdID0ge1xuICAgICAgICAgIG5hbWU6IHJ0LnRheC5uYW1lLFxuICAgICAgICAgIHRvdGFsUmVmdW5kZWRUYXhBbW91bnQ6IDBcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnlbdGF4SWRdLnRvdGFsUmVmdW5kZWRUYXhBbW91bnQgKz1cbiAgICAgICAgcnQucmVmdW5kZWRfYW1vdW50O1xuICAgIH0pO1xuICB9KTtcblxuICBjb25zdCBIdG1sVG9vbHRpcCA9IHN0eWxlZCgoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0pID0+IChcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICA8VG9vbHRpcCB7Li4ucHJvcHN9IGNsYXNzZXM9e3sgcG9wcGVyOiBjbGFzc05hbWUgfX0gLz5cbiAgKSkoKCkgPT4gKHtcbiAgICBbYCYgLiR7dG9vbHRpcENsYXNzZXMudG9vbHRpcH1gXToge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiNmNWY1ZjlcIixcbiAgICAgIGNvbG9yOiBcInJnYmEoMCwgMCwgMCwgMC44NylcIixcbiAgICAgIG1heFdpZHRoOiAyMjAsXG4gICAgICBmb250U2l6ZTogXCIxZW1cIixcbiAgICAgIGJvcmRlcjogXCIxcHggc29saWQgI2RhZGRlOVwiXG4gICAgfVxuICB9KSk7XG5cbiAgcmV0dXJuIChcbiAgICA8R3JpZFxuICAgICAgY29udGFpbmVyXG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5yZWZ1bmRUaWNrZXRCb3hDb250YWluZXJ9ICR7XG4gICAgICAgIHJlZnVuZERldGFpbHMgPyBzdHlsZXMucmVmdW5kRGV0YWlsIDogXCJcIlxuICAgICAgfSBgfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdGVkLXRpY2tldC1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxHcmlkXG4gICAgICAgIHhzPXtyZWZ1bmREZXRhaWxzID8gR1JJRF84IDogR1JJRF8xMn1cbiAgICAgICAgaXRlbVxuICAgICAgICBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiXG4gICAgICAgIHB0PXsyfVxuICAgICAgICBweD17NH1cbiAgICAgID5cbiAgICAgICAgPFN0YWNrXG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcInNwYWNlLWJldHdlZW5cIixcbiAgICAgICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCJcbiAgICAgICAgICB9fVxuICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgID5cbiAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICAgIDxHcmlkIGNsYXNzTmFtZT17c3R5bGVzLmJhZGdlRmVhdHVyZVdyYXBwZXJ9IHhzPXs0fSBpdGVtPlxuICAgICAgICAgICAge3RpY2tldC5iYWRnZT8uZmVhdHVyZXMubWFwKChiZikgPT4gKFxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlfVxuICAgICAgICAgICAgICAgIHNyYz17YmYuaW1hZ2V9XG4gICAgICAgICAgICAgICAgYWx0PXtiZi5uYW1lfVxuICAgICAgICAgICAgICAgIGtleT17YmYubmFtZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIHtyZWZ1bmREZXRhaWxzICYmIChcbiAgICAgICAgPEdyaWQgeHM9ezR9IHBhZGRpbmc9ezJ9IGl0ZW0+XG4gICAgICAgICAgPFJlZnVuZFN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxHcmlkIHhzPXsxMn0gaXRlbSBweD17NH0gcGI9e3JlZnVuZERldGFpbHMgPyBQQURESU5HXzIgOiAwfSBjb250YWluZXI+XG4gICAgICAgIDxHcmlkIHhzPXs4fSBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRUaWNrZXRBdHRlbmRlZX0+XG4gICAgICAgICAgPEF0dGVuZGVlU3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE5vfT5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy50aWNrZXRfbm9cIil9OiA8Q29weVRleHQgdGV4dD17dGlja2V0Lm51bWJlcn0gLz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAge3JlZnVuZERldGFpbHMgJiYgdGlja2V0LnRvdGFsX3JlZnVuZGVkX2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBwbD17NH0+XG4gICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3kodGlja2V0LnRvdGFsX3JlZnVuZGVkX2Ftb3VudCwgeyBjdXJyZW5jeSB9KX17XCIgXCJ9XG4gICAgICAgICAgICBSZWZ1bmRlZFxuICAgICAgICAgICAge2FwcHJvdmVkUmVmdW5kcy5zb21lKChyKSA9PiByLnJlZnVuZGVkX3RheGVzLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgICAgICAgPEh0bWxUb29sdGlwXG4gICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldC5yZWZ1bmRlZF9hbW91bnQsIHsgY3VycmVuY3kgfSl9e1wiIFwifVxuICAgICAgICAgICAgICAgICAgICAgIFRpY2tldCBBbW91bnRcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8Yj5UYXhlczwvYj5cbiAgICAgICAgICAgICAgICAgICAge09iamVjdC5rZXlzKHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnkpLm1hcCgodGF4SWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHRvdGFsUmVmdW5kZWRUYXhBbW91bnQsIG5hbWUgfSA9XG4gICAgICAgICAgICAgICAgICAgICAgICByZWZ1bmRlZFRheGVzU3VtbWF0b3J5W3RheElkXTtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPHAga2V5PXt0YXhJZH0+e2Ake25hbWV9IC0gJHtmb3JtYXRDdXJyZW5jeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxSZWZ1bmRlZFRheEFtb3VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjdXJyZW5jeSB9XG4gICAgICAgICAgICAgICAgICAgICAgICApfWB9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICA8SW5mb0ljb24gLz5cbiAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgIDwvSHRtbFRvb2x0aXA+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICB7bW9tZW50KFxuICAgICAgICAgICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzWzBdLmFjdGlvbl9kYXRlICogTUlMTElTRUNfVE9fU0VDXG4gICAgICAgICAgICApLmZvcm1hdChcIk1NTSBERCwgWVlZWVwiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICl9XG4gICAgICA8L0dyaWQ+XG4gICAgICB7IXJlZnVuZERldGFpbHMgJiYgKFxuICAgICAgICA8R3JpZCB4cz17MTJ9IHByPXs0fSBwYj17Mn0+XG4gICAgICAgICAgPEdyaWQgeHM9ezEyfSBpdGVtPlxuICAgICAgICAgICAgPFRpY2tldFN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgPC9HcmlkPlxuICApO1xufTtcblxuUmVmdW5kUmVxdWVzdGVkVGlja2V0LnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LFxuICByZWZ1bmREZXRhaWxzOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kUmVxdWVzdGVkVGlja2V0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IENoaXAgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWZ1bmRTdGF0dXMgPSAoeyB0aWNrZXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHN0YXR1c0NvbG9yID0gdXNlTWVtbyhcbiAgICAoKSA9PiBnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvcih0aWNrZXQpLFxuICAgIFt0aWNrZXRdXG4gICk7XG4gIHJldHVybiAoXG4gICAgPENoaXBcbiAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgcmVmdW5kIHN0YXR1cyBsYWJlbFwiXG4gICAgICBsYWJlbD17dChgdGlja2V0X3N0YXR1cy5yZWZ1bmRfcmVxdWVzdF8ke3N0YXR1c0NvbG9yfWApfVxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXNbc3RhdHVzQ29sb3JdfWB9XG4gICAgLz5cbiAgKTtcbn07XG5cblJlZnVuZFN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kU3RhdHVzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIFN0eWxlZEVuZ2luZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBDaGVja0NpcmNsZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcbmltcG9ydCBFcnJvckxhYmVsIGZyb20gXCIuLi9MYWJlbHMvRXJyb3JMYWJlbFwiO1xuaW1wb3J0IHsgcmVmdW5kQnVsa1RpY2tldHMsIHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgU1RFUF9PTkUsIFNURVBfVEhSRUUsIFNURVBfVFdPIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4uL09yZGVyc0xpc3QvT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IFJlZnVuZFJlcXVlc3RlZFRpY2tldCBmcm9tIFwiLi9SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcIjtcblxuY29uc3QgUmVmdW5kUmVxdWVzdHNNb2RhbCA9ICh7XG4gIHRpY2tldHMsXG4gIHN1bW1pdCxcbiAgb3BlbixcbiAgb25SZWZ1bmRTdWNjZXNzQ2xvc2UsXG4gIG9uQ2xvc2VTbGlkZXIsXG4gIHRpY2tldHNUb1JlZnVuZCxcbiAgc2VsZWN0VG9SZWZ1bmQsXG4gIHVuc2VsZWN0UmVmdW5kVGlja2V0c1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW3N0ZXAsIHNldFN0ZXBdID0gdXNlU3RhdGUoU1RFUF9PTkUpO1xuICBjb25zdCBbZXJyb3JNc2csIHNldEVycm9yTXNnXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbcmVmdW5kU3VjY2Vzcywgc2V0UmVmdW5kU3VjY2Vzc10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgY2xvc2VTbGlkZXIgPSAoKSA9PiB7XG4gICAgc2V0RXJyb3JNc2coXCJcIik7XG4gICAgb25DbG9zZVNsaWRlcigpO1xuICAgIHNldFN0ZXAoU1RFUF9PTkUpO1xuICAgIGlmIChyZWZ1bmRTdWNjZXNzKSB7XG4gICAgICBvblJlZnVuZFN1Y2Nlc3NDbG9zZSgpOyAvLyBpZiB0aGUgcmVmdW5kIGlzIGEgc3VjY2VzcywgdHJpZ2dlciBhbmQgcmUtcmV0cmlldmUgdGlja2V0cyBieSBvcmRlclxuICAgICAgc2V0UmVmdW5kU3VjY2VzcyhmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNvbmZpcm1SZWZ1bmQgPSAoKSA9PiB7XG4gICAgc2V0U3RlcChTVEVQX1RXTyk7XG4gIH07XG5cbiAgY29uc3QgZ29CYWNrVG9SZWZ1bmQgPSAoKSA9PiB7XG4gICAgc2V0U3RlcChTVEVQX09ORSk7XG4gIH07XG5cbiAgY29uc3QgcmVmdW5kVGlja2V0cyA9IGFzeW5jICgpID0+IHtcbiAgICBkaXNwYXRjaChyZWZ1bmRCdWxrVGlja2V0cyh7IHRpY2tldHM6IHRpY2tldHNUb1JlZnVuZCB9KSkudGhlbigocmVzKSA9PiB7XG4gICAgICBkaXNwYXRjaCh1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkKHJlcykpOyAvLyByZXR1cm5pbmcgd2hpY2ggdGlja2V0cyB3ZXJlIHN1Y2Nlc3NmdWxcbiAgICAgIGlmIChyZXM/Lmxlbmd0aCA9PT0gdGlja2V0c1RvUmVmdW5kLmxlbmd0aCkge1xuICAgICAgICBzZXRTdGVwKFNURVBfVEhSRUUpOyAvLyBzdWNjZXNzLCBhbGwgcmVmdW5kcyB3ZXJlIHJlcXVlc3RlZFxuICAgICAgICBzZXRSZWZ1bmRTdWNjZXNzKHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RXJyb3JNc2codChcImVycm9ycy5yZWZ1bmRfdW5zdWNjZXNzZnVsXCIpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBzZXRFcnJvck1zZyhcIlwiKTtcbiAgfTtcblxuICBjb25zdCByZWZ1bmRTdGVwT25lID0gKCkgPT4gKFxuICAgIDw+XG4gICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9PlxuICAgICAgICB7dChcImNvbmZpcm1fcG9wdXAucXVlc3Rpb25fdGV4dF9zZWxlY3RfcmVmdW5kXCIpfVxuICAgICAgPC9oMj5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdH0+XG4gICAgICAgIHt0aWNrZXRzLm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgPE9yZGVyTGlzdFRpY2tldHNcbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9e1xuICAgICAgICAgICAgICAhIXRpY2tldHNUb1JlZnVuZC5maW5kKCh0KSA9PiB0LmlkID09PSB0aWNrZXQuaWQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgICAgIGlzUmVmdW5kaW5nXG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWN0aW9uQnV0dG9uc30+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNhbmNlbC1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtjbG9zZVNsaWRlcn1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jYW5jZWxcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jb250aW51ZS1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e2NvbmZpcm1SZWZ1bmR9XG4gICAgICAgICAgZGlzYWJsZWQ9e3RpY2tldHNUb1JlZnVuZC5sZW5ndGggPT09IDB9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY29udGludWVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gICk7XG5cbiAgY29uc3QgcmVmdW5kU3RlcFR3byA9ICgpID0+IChcbiAgICA8Qm94IGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3Qtc3VjY2Vzc2Z1bFwiPlxuICAgICAgPGgzIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfT5cbiAgICAgICAge3QoXCJjb25maXJtX3BvcHVwLnF1ZXN0aW9uX3RleHRfY29uZmlybV9yZWZ1bmRcIil9XG4gICAgICA8L2gzPlxuICAgICAge2Vycm9yTXNnICYmIChcbiAgICAgICAgPEVycm9yTGFiZWxcbiAgICAgICAgICBjbGFzc05hbWVzPXtzdHlsZXMucmVmdW5kRXJyb3JNc2d9XG4gICAgICAgICAgY29sb3I9XCIjRkYwMDAwXCJcbiAgICAgICAgICBkYXRhVGVzdElkPVwiZmFpbGVkLXJlZnVuZC1tZXNzYWdlXCJcbiAgICAgICAgICBtZXNzYWdlPXtlcnJvck1zZ31cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3R9PlxuICAgICAgICB7dGlja2V0c1RvUmVmdW5kLm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgPFJlZnVuZFJlcXVlc3RlZFRpY2tldFxuICAgICAgICAgICAga2V5PXtgcmVmdW5kX3JlcV8ke3RpY2tldD8uaWR9YH1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9Cb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLkNUQUJ1dHRvbldyYXBwZXJ9PlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1yZXR1cm4tYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdXR0b259XG4gICAgICAgICAgb25DbGljaz17Z29CYWNrVG9SZWZ1bmR9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuYmFja1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNvbnRpbnVlLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29udGludWVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17cmVmdW5kVGlja2V0c31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jb250aW51ZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L0JveD5cbiAgICA8L0JveD5cbiAgKTtcblxuICBjb25zdCByZWZ1bmRTdGVwVGhyZWUgPSAoKSA9PiAoXG4gICAgPEJveFxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kU3VjY2Vzc2Z1bH1cbiAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3Qtc3VjY2Vzc2Z1bFwiXG4gICAgPlxuICAgICAgPENoZWNrQ2lyY2xlSWNvbiBzeD17eyBjb2xvcjogXCIjNGNhZjUwXCIgfX0gLz5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnN1Y2Nlc3NNc2d9PlxuICAgICAgICB7dChcInRpY2tldHMucmVmdW5kX3JlcXVlc3Rfc3VjY2Vzc18xXCIpfVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc3VjY2Vzc01zZzJ9PlxuICAgICAgICB7dChcInRpY2tldHMucmVmdW5kX3JlcXVlc3Rfc3VjY2Vzc18yXCIpfVxuICAgICAgPC9zcGFuPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWZpbmlzaC1idXR0b25cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29udGludWVCdXR0b259XG4gICAgICAgIG9uQ2xpY2s9e2Nsb3NlU2xpZGVyfVxuICAgICAgPlxuICAgICAgICB7dChcImdlbmVyYWwuZmluaXNoXCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgPC9Cb3g+XG4gICk7XG5cbiAgY29uc3QgcmVuZGVyU3RlcHMgPSAoKSA9PiB7XG4gICAgc3dpdGNoIChzdGVwKSB7XG4gICAgICBjYXNlIFNURVBfT05FOlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcE9uZSgpO1xuICAgICAgY2FzZSBTVEVQX1RXTzpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBUd28oKTtcbiAgICAgIGNhc2UgU1RFUF9USFJFRTpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBUaHJlZSgpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBPbmUoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiAoXG4gICAgPFN0eWxlZEVuZ2luZVByb3ZpZGVyIGluamVjdEZpcnN0PlxuICAgICAgPFJpZ2h0RHJhd2VyXG4gICAgICAgIGlkPVwicmVmdW5kLXJlcXVlc3RzXCJcbiAgICAgICAgb3Blbj17b3Blbn1cbiAgICAgICAgb25DbG9zZT17Y2xvc2VTbGlkZXJ9XG4gICAgICAgIHRpdGxlPXt0KFwib3JkZXJfc3VtbWFyeS5yZXF1ZXN0X3JlZnVuZFwiKX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1tb2RhbFwiXG4gICAgICA+XG4gICAgICAgIHtyZW5kZXJTdGVwcygpfVxuICAgICAgPC9SaWdodERyYXdlcj5cbiAgICA8L1N0eWxlZEVuZ2luZVByb3ZpZGVyPlxuICApO1xufTtcblxuUmVmdW5kUmVxdWVzdHNNb2RhbC5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdCksXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvblJlZnVuZFN1Y2Nlc3NDbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uQ2xvc2VTbGlkZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRSZXF1ZXN0c01vZGFsO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBJY29uQnV0dG9uLCBUeXBvZ3JhcGh5LCBEcmF3ZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgQ2xvc2UgYXMgQ2xvc2VJY29uIH0gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmlnaHREcmF3ZXIgPSAoeyBpZCwgdGl0bGUsIGNoaWxkcmVuLCBvcGVuLCBvbkNsb3NlLCBjbGFzc05hbWUgfSkgPT4gKFxuICA8RHJhd2VyXG4gICAgaWQ9e2lkfVxuICAgIG9wZW49e29wZW59XG4gICAgb25DbG9zZT17b25DbG9zZX1cbiAgICBhbmNob3I9XCJyaWdodFwiXG4gICAgTW9kYWxQcm9wcz17eyBrZWVwTW91bnRlZDogZmFsc2UgfX1cbiAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy53cmFwcGVyfSAke2NsYXNzTmFtZX1gfVxuICA+XG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJ9PlxuICAgICAgPEljb25CdXR0b25cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJjbG9zZS1kcmF3ZXJcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jbG9zZUJ0bn1cbiAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgc3g9e3sgZmxvYXQ6IFwicmlnaHRcIiB9fVxuICAgICAgICBmb250U2l6ZT1cImxhcmdlXCJcbiAgICAgID5cbiAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg1XCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlfT5cbiAgICAgICAge3RpdGxlfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICAgIHtjaGlsZHJlbn1cbiAgPC9EcmF3ZXI+XG4pO1xuXG5SaWdodERyYXdlci5wcm9wVHlwZXMgPSB7XG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHRpdGxlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubm9kZV0pLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSaWdodERyYXdlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHNoYWxsb3dFcXVhbCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmltcG9ydCB7IGdldFN1bW1pdEZvcm1hdHRlZERhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgU3VtbWl0SGVhZGVyID0gKCkgPT4ge1xuICBjb25zdCB7IHN1bW1pdCB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSxcbiAgICBzaGFsbG93RXF1YWxcbiAgKTtcbiAgcmV0dXJuIChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy53aWRnZXRIZWFkZXJ9XG4gICAgICBzeD17eyBwYWRkaW5nOiB7IHhzOiAyLCBtZDogMCwgbGc6IDAgfSB9fVxuICAgICAgZGF0YS10ZXN0aWQ9XCJteS1vcmRlcnMtdGlja2V0LWhlYWRlclwiXG4gICAgPlxuICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1bW1pdFRpdGxlRGF0ZX0+e3N1bW1pdD8ubmFtZX08L2gyPlxuICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1bW1pdFRpdGxlRGF0ZX0+XG4gICAgICAgIHtnZXRTdW1taXRGb3JtYXR0ZWREYXRlKHN1bW1pdCl9XG4gICAgICA8L2gyPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU3VtbWl0SGVhZGVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5cbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5cbmNvbnN0IEFzc2lnbkZvcm0gPSAoeyBvblN1Ym1pdCwgb25DbG9zZSwgc2F2ZUxhYmVsIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczoge1xuICAgICAgbmV3X2F0dGVuZGVlX2VtYWlsOiBcIlwiLFxuICAgICAgcGVyc29uYWxfbWVzc2FnZTogXCJcIlxuICAgIH0sXG4gICAgdmFsaWRhdGlvblNjaGVtYTogeXVwLm9iamVjdCh7XG4gICAgICBuZXdfYXR0ZW5kZWVfZW1haWw6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnN0cmluZ1wiKSlcbiAgICAgICAgLmVtYWlsKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLmZvcm1hdFwiKSlcbiAgICAgICAgLnJlcXVpcmVkKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnJlcXVpcmVkXCIpKSxcbiAgICAgIHBlcnNvbmFsX21lc3NhZ2U6IHl1cC5zdHJpbmcodChcInZhbGlkYXRpb24udGV4dC5zdHJpbmdcIikpXG4gICAgfSksXG4gICAgb25TdWJtaXRcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0gbm9WYWxpZGF0ZT5cbiAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG5hbWU9XCJuZXdfYXR0ZW5kZWVfZW1haWxcIlxuICAgICAgICBsYWJlbD17dChcInRpY2tldF9yZWFzc2lnbi5uZXdfYXR0ZW5kZWVfZW1haWxcIil9XG4gICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLm5ld19hdHRlbmRlZV9lbWFpbH1cbiAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgIGVycm9yPXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5uZXdfYXR0ZW5kZWVfZW1haWwgJiZcbiAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMubmV3X2F0dGVuZGVlX2VtYWlsKVxuICAgICAgICB9XG4gICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLm5ld19hdHRlbmRlZV9lbWFpbCAmJiBmb3JtaWsuZXJyb3JzLm5ld19hdHRlbmRlZV9lbWFpbFxuICAgICAgICB9XG4gICAgICAgIHJlcXVpcmVkXG4gICAgICAvPlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbmFtZT1cInBlcnNvbmFsX21lc3NhZ2VcIlxuICAgICAgICBsYWJlbD17dChcInRpY2tldF9yZWFzc2lnbi5wZXJzb25hbF9tZXNzYWdlXCIpfVxuICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5wZXJzb25hbF9tZXNzYWdlfVxuICAgICAgICBtdWx0aWxpbmVcbiAgICAgICAgbWluUm93cz17NH1cbiAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgIGVycm9yPXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5wZXJzb25hbF9tZXNzYWdlICYmXG4gICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLnBlcnNvbmFsX21lc3NhZ2UpXG4gICAgICAgIH1cbiAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQucGVyc29uYWxfbWVzc2FnZSAmJiBmb3JtaWsuZXJyb3JzLnBlcnNvbmFsX21lc3NhZ2VcbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgIHNhdmVMYWJlbD17c2F2ZUxhYmVsIHx8IHQoXCJ0aWNrZXRfcmVhc3NpZ24uc2F2ZVwiKX1cbiAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfcmVhc3NpZ24uY2FuY2VsXCIpfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgIC8+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuQXNzaWduRm9ybS5wcm9wVHlwZXMgPSB7XG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBzYXZlTGFiZWw6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnbkZvcm07XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgVHlwb2dyYXBoeSwgRGl2aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1xuICBhc3NpZ25BdHRlbmRlZSxcbiAgZ2V0RXh0cmFRdWVzdGlvbnMsXG4gIGdldFRpY2tldCxcbiAgc2F2ZUV4dHJhUXVlc3Rpb25zXG59IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgQXNzaWduRVFGb3JtIGZyb20gXCIuLi9Bc3NpZ25FUUZvcm1cIjtcbmltcG9ydCBBc3NpZ25Gb3JtIGZyb20gXCIuL2NvbXBvbmVudHMvQXNzaWduRm9ybVwiO1xuaW1wb3J0IHsgdHJhbnNmb3JtQW53ZXJzRm9ybWF0IH0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcbmltcG9ydCBDdXN0b21EaWFsb2dDb250ZXh0IGZyb20gXCIuLi9DdXN0b21EaWFsb2cvQ29udGV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXRBc3NpZ24gPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldElkLFxuICBvcmRlcklkLFxuICBvd25lcklkLFxuICBvcGVuLFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbdGlja2V0QXNzaWduZWQsIHNldFRpY2tldEFzc2lnbmVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgeyBzZXRNZXNzYWdlLCBzZXRNZXNzYWdlQ2FsbGJhY2sgfSA9IHVzZUNvbnRleHQoQ3VzdG9tRGlhbG9nQ29udGV4dCk7XG4gIGNvbnN0IHtcbiAgICBjdXJyZW50VGlja2V0OiB0aWNrZXQsXG4gICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aWNrZXRJZCAmJiBvcmRlcklkICYmIG9wZW4pIHtcbiAgICAgIGRpc3BhdGNoKGdldFRpY2tldCh0aWNrZXRJZCwgb3JkZXJJZCkpO1xuICAgIH1cbiAgfSwgW3RpY2tldElkLCBvcmRlcklkLCBvcGVuXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAob3duZXJJZCAmJiBvcGVuKSB7XG4gICAgICBkaXNwYXRjaChnZXRFeHRyYVF1ZXN0aW9ucyhvd25lcklkKSk7XG4gICAgfVxuICB9LCBbb3duZXJJZF0pO1xuXG4gIGNvbnN0IG9uQXNzaWduVG9PdGhlciA9ICh2YWwpID0+IHtcbiAgICBjb25zdCB7IG5ld19hdHRlbmRlZV9lbWFpbCwgcGVyc29uYWxfbWVzc2FnZSB9ID0gdmFsO1xuICAgIHJldHVybiBkaXNwYXRjaChcbiAgICAgIGFzc2lnbkF0dGVuZGVlKG9yZGVySWQsIHRpY2tldElkLCBuZXdfYXR0ZW5kZWVfZW1haWwsIHBlcnNvbmFsX21lc3NhZ2UpXG4gICAgKS50aGVuKCgpID0+IHtcbiAgICAgIHNldFRpY2tldEFzc2lnbmVkKHRydWUpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9uQXNzaWduVG9NZSA9ICgpID0+XG4gICAgZGlzcGF0Y2goYXNzaWduQXR0ZW5kZWUob3JkZXJJZCwgdGlja2V0SWQsIHVzZXJQcm9maWxlLmVtYWlsKSkudGhlbigoKSA9PiB7XG4gICAgICBzZXRUaWNrZXRBc3NpZ25lZCh0cnVlKTtcbiAgICB9KTtcblxuICBjb25zdCBvbkNsb3NlRVFGb3JtID0gKCkgPT4ge1xuICAgIHNldFRpY2tldEFzc2lnbmVkKGZhbHNlKTtcbiAgICBvbkNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZVNhdmVNZXNzYWdlID0gKCkgPT4ge1xuICAgIHNldFRpY2tldEFzc2lnbmVkKGZhbHNlKTtcbiAgICBzZXRUaW1lb3V0KG9uQ2xvc2UsIE1JTExJU0VDX1RPX1NFQyk7XG4gIH07XG5cbiAgY29uc3Qgb25TYXZlRVEgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgYW5zd2VycyA9IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCh2YWwpO1xuXG4gICAgcmV0dXJuIGRpc3BhdGNoKHNhdmVFeHRyYVF1ZXN0aW9ucyh0aWNrZXQsIGFuc3dlcnMpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXRNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9hc3NpZ24uc2F2aW5nX3N1Y2Nlc3NcIiksXG4gICAgICAgICAgYm9keTogdChcInRpY2tldF9hc3NpZ24uc2F2aW5nX3N1Y2Nlc3NfZGVzY3JpcHRpb25cIilcbiAgICAgICAgfSk7XG4gICAgICAgIHNldE1lc3NhZ2VDYWxsYmFjayhvbkNsb3NlU2F2ZU1lc3NhZ2UpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgc2V0TWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfYXNzaWduLnNhdmluZ19lcnJvclwiKSxcbiAgICAgICAgICBib2R5OiBlcnIudG9TdHJpbmcoKVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxSaWdodERyYXdlclxuICAgICAgaWQ9XCJyZWFzc2lnbkRyYXdlclwiXG4gICAgICB0aXRsZT17dChcInRpY2tldF9hc3NpZ24uYXNzaWduX3RpY2tldFwiKX1cbiAgICAgIG9wZW49e29wZW59XG4gICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0QXNzaWduQ29udGFpbmVyfVxuICAgID5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWxpZ25DZW50ZXJ9PlxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9PlxuICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5wdXJjaGFzZWRfYnlcIil9IHt0aWNrZXQ/Lm9yZGVyPy5vd25lcl9lbWFpbH1cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJOb30+XG4gICAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgICB0ZXh0PXt0aWNrZXQ/Lm9yZGVyPy5udW1iZXJ9XG4gICAgICAgICAgICByZXZlcnNlZFxuICAgICAgICAgICAgd2lkdGg9ezI1MH1cbiAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwib3JkZXJfc3VtbWFyeS5jb3B5X29yZGVyX251bWJlclwiKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8L0JveD5cbiAgICAgIHt0aWNrZXQgJiYgIXRpY2tldEFzc2lnbmVkICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFsaWduQ2VudGVyfT5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNFwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRUeXBlfT5cbiAgICAgICAgICAgICAge3RpY2tldD8udHlwZT8ubmFtZX1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduQnRufVxuICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgb25DbGljaz17b25Bc3NpZ25Ub01lfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uYXNzaWduX3RvX21lXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPERpdmlkZXIgdmFyaWFudD1cIm1pZGRsZVwiPiZuYnNwOyZuYnNwO29yJm5ic3A7Jm5ic3A7PC9EaXZpZGVyPlxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hbGlnbkNlbnRlcn0+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgICAgdmFyaWFudD1cImg0XCJcbiAgICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUluZm9UaXRsZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5hc3NpZ25fdG9fc29tZW9uZV9lbHNlXCIpfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUluZm9Ob3RlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmVudGVyX2VtYWlsX25vdGVcIil9XG4gICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgPEFzc2lnbkZvcm1cbiAgICAgICAgICAgICAgb25TdWJtaXQ9e29uQXNzaWduVG9PdGhlcn1cbiAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5zYXZlX2xhYmVsXCIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgICAge3RpY2tldCAmJiB0aWNrZXRBc3NpZ25lZCAmJiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWxpZ25DZW50ZXJ9PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgdmFyaWFudD1cImg0XCJcbiAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlSW5mb1RpdGxlfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uYXNzaWduX3RvX3NvbWVvbmVfZWxzZVwiKX1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUluZm9Ob3RlfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uZW50ZXJfZW1haWxfbm90ZVwiKX1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8QXNzaWduRm9ybVxuICAgICAgICAgICAgb25TdWJtaXQ9e29uQXNzaWduVG9PdGhlcn1cbiAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgICAgICBzYXZlTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnNhdmVfbGFiZWxcIil9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuICAgICAge3RpY2tldCAmJiB0aWNrZXRBc3NpZ25lZCAmJiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWxpZ25DZW50ZXJ9PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgdmFyaWFudD1cImg0XCJcbiAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlSW5mb1RpdGxlfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uYXNzaWduZWRfdG9cIil9XG4gICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgICB7dGlja2V0Py5vd25lcj8uZW1haWx9XG4gICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVJbmZvTm90ZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmNvbXBsZXRlX2luZm9cIil9XG4gICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPEFzc2lnbkVRRm9ybVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgIG9uU3VibWl0PXtvblNhdmVFUX1cbiAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2VFUUZvcm19XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuICAgIDwvUmlnaHREcmF3ZXI+XG4gICk7XG59O1xuXG5UaWNrZXRBc3NpZ24ucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHRpY2tldElkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvcmRlcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvd25lcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldEFzc2lnbjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRleHRGaWVsZCwgQXV0b2NvbXBsZXRlLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IENvbXBhbnlGaWVsZCA9ICh7IGZvcm1paywgc3VtbWl0SWQsIGlzUmVxdWlyZWQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtpbnB1dFZhbHVlLCBzZXRJbnB1dFZhbHVlXSA9IFJlYWN0LnVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbb3B0aW9ucywgc2V0T3B0aW9uc10gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gIGNvbnN0IHsgZXJyb3JzLCB2YWx1ZXMsIHRvdWNoZWQsIHNldEZpZWxkVG91Y2hlZCwgc2V0RmllbGRWYWx1ZSB9ID0gZm9ybWlrO1xuICBjb25zdCBuYW1lID0gVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueTtcbiAgY29uc3QgdmFsdWUgPSB2YWx1ZXNbbmFtZV07XG4gIGNvbnN0IGVycm9yID0gdG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSk7XG4gIGNvbnN0IGhlbHBlclRleHQgPSB0b3VjaGVkW25hbWVdICYmIGVycm9yc1tuYW1lXTtcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpbnB1dFZhbHVlID09PSBcIlwiKSB7XG4gICAgICBzZXRPcHRpb25zKHZhbHVlID8gW3ZhbHVlXSA6IFtdKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMoc3VtbWl0SWQsIGlucHV0VmFsdWUsIChyZXN1bHRzKSA9PiB7XG4gICAgICBsZXQgbmV3T3B0aW9ucyA9IFtdO1xuXG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgbmV3T3B0aW9ucyA9IFt2YWx1ZV07XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXN1bHRzKSB7XG4gICAgICAgIG5ld09wdGlvbnMgPSBbLi4ubmV3T3B0aW9ucywgLi4ucmVzdWx0c107XG4gICAgICB9XG5cbiAgICAgIHNldE9wdGlvbnMobmV3T3B0aW9ucyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSwgW3ZhbHVlLCBpbnB1dFZhbHVlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8QXV0b2NvbXBsZXRlXG4gICAgICBuYW1lPXtuYW1lfVxuICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgIGF1dG9Db21wbGV0ZVxuICAgICAgZnJlZVNvbG9cbiAgICAgIGluY2x1ZGVJbnB1dEluTGlzdFxuICAgICAgZmlsdGVyU2VsZWN0ZWRPcHRpb25zXG4gICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICBvbkJsdXI9eygpID0+IHNldEZpZWxkVG91Y2hlZChuYW1lLCB0cnVlLCB0cnVlKX1cbiAgICAgIGdldE9wdGlvbkxhYmVsPXsob3B0aW9uKSA9PiB7XG4gICAgICAgIC8vIFZhbHVlIHNlbGVjdGVkIHdpdGggZW50ZXIsIHJpZ2h0IGZyb20gdGhlIGlucHV0XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICAgICAgfVxuICAgICAgICAvLyBBZGQgXCJ4eHhcIiBvcHRpb24gY3JlYXRlZCBkeW5hbWljYWxseVxuICAgICAgICBpZiAob3B0aW9uLmlucHV0VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uLmlucHV0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVndWxhciBvcHRpb25cbiAgICAgICAgcmV0dXJuIG9wdGlvbi5uYW1lO1xuICAgICAgfX1cbiAgICAgIG9uQ2hhbmdlPXsoZXZlbnQsIG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRtcFZhbHVlID0gbmV3VmFsdWU/LmlucHV0VmFsdWUgfHwgbmV3VmFsdWU7XG4gICAgICAgIHNldE9wdGlvbnModG1wVmFsdWUgPyBbdG1wVmFsdWUsIC4uLm9wdGlvbnNdIDogb3B0aW9ucyk7XG4gICAgICAgIHNldEZpZWxkVmFsdWUobmFtZSwgdG1wVmFsdWUpO1xuICAgICAgfX1cbiAgICAgIG9uSW5wdXRDaGFuZ2U9eyhldmVudCwgbmV3SW5wdXRWYWx1ZSkgPT4ge1xuICAgICAgICBzZXRJbnB1dFZhbHVlKG5ld0lucHV0VmFsdWUpO1xuICAgICAgfX1cbiAgICAgIGZpbHRlck9wdGlvbnM9eyhvcHRpb25zLCBwYXJhbXMpID0+IHtcbiAgICAgICAgY29uc3QgeyBpbnB1dFZhbHVlIH0gPSBwYXJhbXM7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkID0gWy4uLm9wdGlvbnNdO1xuICAgICAgICAvLyBTdWdnZXN0IHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2YWx1ZVxuICAgICAgICBjb25zdCBpc0V4aXN0aW5nID0gb3B0aW9ucy5zb21lKFxuICAgICAgICAgIChvcHRpb24pID0+IGlucHV0VmFsdWUgPT09IG9wdGlvbi50aXRsZVxuICAgICAgICApO1xuICAgICAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gXCJcIiAmJiAhaXNFeGlzdGluZykge1xuICAgICAgICAgIGZpbHRlcmVkLnB1c2goe1xuICAgICAgICAgICAgaW5wdXRWYWx1ZSxcbiAgICAgICAgICAgIG5hbWU6IGBTZWxlY3QgXCIke2lucHV0VmFsdWV9XCJgXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICB9fVxuICAgICAgcmVuZGVySW5wdXQ9eyhwYXJhbXMpID0+IChcbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnBhcmFtc31cbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfY29tcGFueVwiKX1cbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtoZWxwZXJUZXh0fVxuICAgICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICByZW5kZXJPcHRpb249eyhwcm9wcywgb3B0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHsga2V5LCAuLi5vcHRpb25Qcm9wcyB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmdcbiAgICAgICAgICA8bGkga2V5PXtrZXl9IHsuLi5vcHRpb25Qcm9wc30+XG4gICAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTJcIiBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19PlxuICAgICAgICAgICAgICB7b3B0aW9uLm5hbWV9XG4gICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgKTtcbiAgICAgIH19XG4gICAgLz5cbiAgKTtcbn07XG5cbkNvbXBhbnlGaWVsZC5wcm9wVHlwZXMgPSB7XG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBzdW1taXRJZDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb21wYW55RmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgPSAoe1xuICBkaXNjbGFpbWVyLFxuICBmb3JtaWssXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgaXNSZXF1aXJlZCA9IHRydWVcbn0pID0+IHtcbiAgY29uc3QgbmFtZSA9IFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZDtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyIH0gPSBmb3JtaWs7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVzW25hbWVdO1xuICBjb25zdCBlcnJvciA9IHRvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pO1xuICBjb25zdCBoZWxwZXJUZXh0ID0gdG91Y2hlZFtuYW1lXSAmJiBlcnJvcnNbbmFtZV07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdmFsdWV9XG4gICAgICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57ZGlzY2xhaW1lcn08L1Jhd0hUTUw+fVxuICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e2Rpc2NsYWltZXJ9PC9SYXdIVE1MPn1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgLz5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5SZWdpc3RyYXRpb25EaXNjbGFpbWVyLnByb3BUeXBlcyA9IHtcbiAgZGlzY2xhaW1lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGlzUmVxdWlyZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcblxuY29uc3QgVGlja2V0RGVsZWdhdGlvbkZpZWxkcyA9ICh7IGZvcm1payB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBpZD1cImRlbGVnYXRlZF9maXJzdF9uYW1lXCJcbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmZpcnN0X25hbWVcIil9XG4gICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlZF9maXJzdF9uYW1lfVxuICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgZXJyb3I9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlZF9maXJzdF9uYW1lICYmXG4gICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlZF9maXJzdF9uYW1lKVxuICAgICAgICB9XG4gICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlZF9maXJzdF9uYW1lICYmXG4gICAgICAgICAgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZWRfZmlyc3RfbmFtZVxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgaWQ9XCJkZWxlZ2F0ZWRfbGFzdF9uYW1lXCJcbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmxhc3RfbmFtZVwiKX1cbiAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVkX2xhc3RfbmFtZX1cbiAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgIGVycm9yPXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZWRfbGFzdF9uYW1lICYmXG4gICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlZF9sYXN0X25hbWUpXG4gICAgICAgIH1cbiAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVkX2xhc3RfbmFtZSAmJlxuICAgICAgICAgIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVkX2xhc3RfbmFtZVxuICAgICAgICB9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuVGlja2V0RGVsZWdhdGlvbkZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXREZWxlZ2F0aW9uRmllbGRzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyBmcm9tIFwiLi4vLi4vLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHNcIjtcblxuaW1wb3J0IHtcbiAgZ2V0VHlwZVZhbHVlLFxuICB0b1NsdWdcbn0gZnJvbSBcIi4uLy4uLy4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcblxuaW1wb3J0IFRpY2tldERlbGVnYXRpb25GaWVsZHMgZnJvbSBcIi4uL1RpY2tldERlbGVnYXRpb25GaWVsZHNcIjtcbmltcG9ydCBUaWNrZXRPd25lckZpZWxkcyBmcm9tIFwiLi4vVGlja2V0T3duZXJGaWVsZHNcIjtcbmltcG9ydCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyIGZyb20gXCIuLi9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXJcIjtcbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5pbXBvcnQgdXNlU2Nyb2xsVG9FcnJvciBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlU2Nyb2xsVG9FcnJvclwiO1xuaW1wb3J0IHtcbiAgcGFyc2VBbnN3ZXJzLFxuICBidWlsZFZhbGlkYXRpb25TY2hlbWFcbn0gZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi4vLi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldEZvcm0gPSAoe1xuICB0aWNrZXQsXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBzdW1taXQsXG4gIGNhbkVkaXQsXG4gIG9uU3VibWl0LFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgdGlja2V0TWFuYWdlciA9IHRpY2tldD8ubWFuYWdlcjtcbiAgLyogRElTQUJMRSBERUxFR0FUSU9OIEZUTSAqL1xuICBjb25zdCBhbGxvd3NEZWxlZ2F0aW9uID0gdGlja2V0Py50aWNrZXRfdHlwZT8uYWxsb3dzX3RvX2RlbGVnYXRlICYmIGZhbHNlO1xuICBjb25zdCBhbnN3ZXJzID0gdGlja2V0Py5vd25lcj8uZXh0cmFfcXVlc3Rpb25zLnJlZHVjZSgocmVzLCBhbnMpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcoYW5zLnF1ZXN0aW9uLm5hbWUsIGFucy5xdWVzdGlvbi5pZCk7XG4gICAgcmVzW3F1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsdWUoYW5zLnZhbHVlLCBhbnMucXVlc3Rpb24udHlwZSk7XG4gICAgcmV0dXJuIHJlcztcbiAgfSwge30pO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczogcGFyc2VBbnN3ZXJzKFxuICAgICAgdGlja2V0Lm93bmVyLFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICBhbnN3ZXJzLFxuICAgICAgdGlja2V0TWFuYWdlcixcbiAgICAgIGFsbG93c0RlbGVnYXRpb24sXG4gICAgICB0cnVlLFxuICAgICAgdHJ1ZVxuICAgICksXG4gICAgdmFsaWRhdGlvblNjaGVtYTogYnVpbGRWYWxpZGF0aW9uU2NoZW1hKFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICB0cnVlLFxuICAgICAgYWxsb3dzRGVsZWdhdGlvbixcbiAgICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnlcbiAgICApLFxuICAgIG9uU3VibWl0OiAodmFsdWVzKSA9PiB7XG4gICAgICBjb25zdCByZWxldmFudEFuc3dlcnMgPSBwYXJzZUFuc3dlcnMoXG4gICAgICAgIHRpY2tldC5vd25lcixcbiAgICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgdGlja2V0TWFuYWdlcixcbiAgICAgICAgYWxsb3dzRGVsZWdhdGlvbixcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIG9uU3VibWl0KHJlbGV2YW50QW5zd2Vycyk7XG4gICAgfSxcbiAgICBlbmFibGVSZWluaXRpYWxpemU6IHRydWVcbiAgfSk7XG5cbiAgLy8gY29uc29sZS5sb2coXCJTVU1NSVQ6IFwiLCBzdW1taXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlRJQ0tFVDogXCIsIHRpY2tldCk7XG4gIC8vIGNvbnNvbGUubG9nKFwiUVVFU1RJVU9OczogXCIsIGV4dHJhUXVlc3Rpb25zKTtcbiAgLy8gY29uc29sZS5sb2coXCJBTlNXRVJTOiBcIiwgYW5zd2Vycyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiRVJST1JzOiBcIiwgZm9ybWlrLmVycm9ycyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVkFMVUVTOiBcIiwgZm9ybWlrLnZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiSU5JVElBTDogXCIsIGZvcm1pay5pbml0aWFsVmFsdWVzKTtcbiAgLy8gY29uc29sZS5sb2coXCJUT1VDSEVEOiBcIiwgZm9ybWlrLnRvdWNoZWQpO1xuXG4gIC8vIFNDUk9MTCBUTyBFUlJPUlxuICB1c2VTY3JvbGxUb0Vycm9yKGZvcm1paywgXCJkZXRhaWxzRHJhd2VyXCIpO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8VGlja2V0T3duZXJGaWVsZHNcbiAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgIG93bmVyPXt0aWNrZXQub3duZXJ9XG4gICAgICAgIHN1bW1pdElkPXtzdW1taXQuaWR9XG4gICAgICAgIGRpc2FibGVkPXshY2FuRWRpdH1cbiAgICAgIC8+XG5cbiAgICAgIHthbGxvd3NEZWxlZ2F0aW9uICYmIChcbiAgICAgICAgPEJveD5cbiAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgdmFyaWFudD1cInN1YnRpdGxlMlwiXG4gICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRlbGVnYXRlZFRvfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5kZWxlZ2F0ZWRfdG9cIil9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDxUaWNrZXREZWxlZ2F0aW9uRmllbGRzIGZvcm1paz17Zm9ybWlrfSAvPlxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG5cbiAgICAgIHtleHRyYVF1ZXN0aW9ucz8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPGg2IGNsYXNzTmFtZT17c3R5bGVzLmFkZGl0aW9uYWxEZXRhaWxzfT5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5hZGl0aW9uYWxfZGV0YWlsc1wiKX1cbiAgICAgICAgICA8L2g2PlxuICAgICAgICAgIDxFeHRyYVF1ZXN0aW9uc0ZpZWxkc1xuICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgYWxsb3dFZGl0PXtjYW5FZGl0fVxuICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICB7c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQgJiYgKFxuICAgICAgICA8UmVnaXN0cmF0aW9uRGlzY2xhaW1lclxuICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIGRpc2NsYWltZXI9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50fVxuICAgICAgICAgIGlzUmVxdWlyZWQ9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnl9XG4gICAgICAgICAgaXNEaXNhYmxlZD17IWNhbkVkaXR9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5zYXZlXCIpfVxuICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9kZXRhaWwuY2FuY2VsXCIpfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgIC8+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuVGlja2V0Rm9ybS5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgZXh0cmFRdWVzdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgY2FuRWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRGb3JtO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcbmltcG9ydCBDb21wYW55RmllbGQgZnJvbSBcIi4uL0NvbXBhbnlGaWVsZFwiO1xuXG5jb25zdCBUaWNrZXRPd25lckZpZWxkcyA9ICh7IGZvcm1paywgc3VtbWl0SWQsIGRpc2FibGVkIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGVycm9ycywgdmFsdWVzLCB0b3VjaGVkLCBoYW5kbGVDaGFuZ2UsIGhhbmRsZUJsdXIgfSA9IGZvcm1paztcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBuYW1lPXtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbH1cbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmVtYWlsXCIpfVxuICAgICAgICBkaXNhYmxlZFxuICAgICAgICB2YWx1ZT17dmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXX1cbiAgICAgIC8+XG4gICAgICB7W1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZSwgVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdLm1hcChcbiAgICAgICAgKG5hbWUpID0+IChcbiAgICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAgIGtleT17bmFtZX1cbiAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICBsYWJlbD17dChgdGlja2V0X2RldGFpbC4ke25hbWV9YCl9XG4gICAgICAgICAgICB2YWx1ZT17dmFsdWVzW25hbWVdfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgIGVycm9yPXt0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKX1cbiAgICAgICAgICAgIGhlbHBlclRleHQ9e2Zvcm1pay50b3VjaGVkW25hbWVdICYmIGZvcm1pay5lcnJvcnNbbmFtZV19XG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgIC8+XG4gICAgICAgIClcbiAgICAgICl9XG4gICAgICA8Q29tcGFueUZpZWxkIGZvcm1paz17Zm9ybWlrfSBzdW1taXRJZD17c3VtbWl0SWR9IGlzUmVxdWlyZWQgLz5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaW5mb05vdGV9Pnt0KFwidGlja2V0X2RldGFpbC5pbmZvX25vdGVcIil9PC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5UaWNrZXRPd25lckZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRPd25lckZpZWxkcztcbiIsImV4cG9ydCBjb25zdCBUSUNLRVRfQVRURU5ERUVfS0VZUyA9IHtcbiAgZW1haWw6IFwiYXR0ZW5kZWVfZW1haWxcIixcbiAgZmlyc3ROYW1lOiBcImF0dGVuZGVlX2ZpcnN0X25hbWVcIixcbiAgbGFzdE5hbWU6IFwiYXR0ZW5kZWVfbGFzdF9uYW1lXCIsXG4gIGNvbXBhbnk6IFwiYXR0ZW5kZWVfY29tcGFueVwiLFxuICBkaXNjbGFpbWVyQWNjZXB0ZWQ6IFwiZGlzY2xhaW1lcl9hY2NlcHRlZFwiXG59O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBRUkNvZGUgZnJvbSBcInJlYWN0LXFyLWNvZGVcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBEcmF3ZXIsIEljb25CdXR0b24sIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHtcbiAgQ2xvc2UgYXMgQ2xvc2VJY29uLFxuICBGaWxlRG93bmxvYWRPdXRsaW5lZCBhcyBEb3dubG9hZEljb24sXG4gIEVtYWlsT3V0bGluZWQgYXMgRW1haWxJY29uXG59IGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcbmltcG9ydCB1c2VHZXRUaWNrZXQgZnJvbSBcIi4uLy4uL2hvb2tzL3VzZUdldFRpY2tldFwiO1xuaW1wb3J0IHsgdHJhbnNmb3JtQW53ZXJzRm9ybWF0IH0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCBDdXN0b21EaWFsb2cgZnJvbSBcIi4uL0N1c3RvbURpYWxvZ1wiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDLCBUV09fSVRFTSB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBUaWNrZXRGb3JtIGZyb20gXCIuL2NvbXBvbmVudHMvVGlja2V0Rm9ybVwiO1xuaW1wb3J0IHtcbiAgZ2V0VGlja2V0UERGLFxuICBzYXZlVGlja2V0RGV0YWlscyxcbiAgcmVzZW5kTm90aWZpY2F0aW9uXG59IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0RGV0YWlsID0gKHtcbiAgc3VtbWl0LFxuICB0aWNrZXRJZCxcbiAgb3JkZXJJZCxcbiAgb3duZXJJZCxcbiAgb3BlbixcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3Qge1xuICAgIHVzZXI6IHsgdXNlclByb2ZpbGUgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSk7XG4gIGNvbnN0IHsgdGlja2V0LCBleHRyYVF1ZXN0aW9ucyB9ID0gdXNlR2V0VGlja2V0KFxuICAgIHRpY2tldElkLFxuICAgIG9yZGVySWQsXG4gICAgb3duZXJJZCxcbiAgICBvcGVuXG4gICk7XG4gIGNvbnN0IFtzYXZlTWVzc2FnZSwgc2V0U2F2ZU1lc3NhZ2VdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFtzZW50Q29uZmlybWF0aW9uLCBzZXRTZW50Q29uZmlybWF0aW9uXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgaXNVc2VyT3JkZXJPd25lciA9IHRpY2tldD8ub3JkZXI/Lm93bmVyX2lkID09PSB1c2VyUHJvZmlsZT8uaWQ7XG4gIGNvbnN0IGlzVXNlclRpY2tldE93bmVyID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJQcm9maWxlPy5lbWFpbDtcbiAgY29uc3QgY2FuRWRpdFRpY2tldERhdGEgPVxuICAgIChpc1VzZXJUaWNrZXRPd25lciB8fCBpc1VzZXJPcmRlck93bmVyKSAmJlxuICAgIHN1bW1pdC5hbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zO1xuICBjb25zdCB7IGlzQ29tcGxldGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcblxuICBjb25zdCBvblNhdmUgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgYW5zd2VycyA9IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCh2YWwpO1xuXG4gICAgcmV0dXJuIGRpc3BhdGNoKHNhdmVUaWNrZXREZXRhaWxzKHRpY2tldCwgYW5zd2VycykpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHNldFNhdmVNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9kZXRhaWwuc2F2aW5nX3N1Y2Nlc3NcIiksXG4gICAgICAgICAgZGVzY3JpcHRpb246IHQoXCJ0aWNrZXRfZGV0YWlsLnNhdmluZ19zdWNjZXNzX2Rlc2NyaXB0aW9uXCIpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgc2V0U2F2ZU1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfZXJyb3JcIiksXG4gICAgICAgICAgZGVzY3JpcHRpb246IGVyci50b1N0cmluZygpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9uQ2xvc2VTYXZlTWVzc2FnZSA9ICgpID0+IHtcbiAgICBzZXRTYXZlTWVzc2FnZShudWxsKTtcbiAgICBzZXRUaW1lb3V0KG9uQ2xvc2UsIE1JTExJU0VDX1RPX1NFQyk7XG4gIH07XG5cbiAgY29uc3QgZG93bmxvYWRUaWNrZXRQZGYgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2goZ2V0VGlja2V0UERGKHRpY2tldCkpO1xuICB9O1xuXG4gIGNvbnN0IG9uU2VuZEVtYWlsID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2VuZE5vdGlmaWNhdGlvbih0aWNrZXQpKS50aGVuKCgpID0+IHtcbiAgICAgIHNldFNlbnRDb25maXJtYXRpb24odHJ1ZSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0U2VudENvbmZpcm1hdGlvbihmYWxzZSk7XG4gICAgICB9LCBNSUxMSVNFQ19UT19TRUMgKiBUV09fSVRFTSk7XG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPERyYXdlclxuICAgICAgICBpZD1cImRldGFpbHNEcmF3ZXJcIlxuICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBhbmNob3I9XCJyaWdodFwiXG4gICAgICAgIE1vZGFsUHJvcHM9e3sga2VlcE1vdW50ZWQ6IGZhbHNlIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldERldGFpbENvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAge3RpY2tldCAmJiBleHRyYVF1ZXN0aW9ucyAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyfT5cbiAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jbG9zZUJ0bn1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICAgICAgICAgIHN4PXt7IGZsb2F0OiBcInJpZ2h0XCIgfX1cbiAgICAgICAgICAgICAgICBmb250U2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDRcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICAgICAgICAgIHt0aWNrZXQ/LnRpY2tldF90eXBlPy5uYW1lfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHkyXCJcbiAgICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5wdXJjaGFzZWRfYnlcIil9IHt0aWNrZXQ/Lm9yZGVyPy5vd25lcl9lbWFpbH1cbiAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuXG4gICAgICAgICAgICAgIHtpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5xckNvZGV9PlxuICAgICAgICAgICAgICAgICAgICA8UVJDb2RlXG4gICAgICAgICAgICAgICAgICAgICAgc2l6ZT17MjU2fVxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiYXV0b1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGg6IFwiMTAwJVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMTAwJVwiXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dGlja2V0LnFyX2NvZGV9XG4gICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNTYgMjU2XCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXtzdHlsZXMuc3RhdHVzfT57dChcInRpY2tldF9kZXRhaWwuc3RhdHVzXCIpfTwvcD5cbiAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MlwiXG4gICAgICAgICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5xck5vdGV9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5xcl9ub3RlXCIpfVxuICAgICAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgIHshc3VtbWl0Py5pc192aXJ0dWFsICYmIGlzQ29tcGxldGUgJiYgKFxuICAgICAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWN0aW9uQnV0dG9uc0NvbnRhaW5lcn0+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRvd25sb2FkQnRufVxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZG93bmxvYWRUaWNrZXRQZGZ9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxEb3dubG9hZEljb24gZm9udFNpemU9XCJsYXJnZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5kb3dubG9hZFwiKX1cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5zZW5kQnRufSAke1xuICAgICAgICAgICAgICAgICAgICAgIHNlbnRDb25maXJtYXRpb24gPyBzdHlsZXMuc2VudCA6IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uU2VuZEVtYWlsfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17c2VudENvbmZpcm1hdGlvbn1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEVtYWlsSWNvbiBmb250U2l6ZT1cImxhcmdlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAge3NlbnRDb25maXJtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICA/IHQoXCJ0aWNrZXRfZGV0YWlsLnNlbnRcIilcbiAgICAgICAgICAgICAgICAgICAgICA6IHQoXCJ0aWNrZXRfZGV0YWlsLnNlbmRcIil9XG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyTnVtYmVyfT5cbiAgICAgICAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgICAgICAgIHRleHQ9e3RpY2tldD8ub3JkZXI/Lm51bWJlcn1cbiAgICAgICAgICAgICAgICAgIHJldmVyc2VkXG4gICAgICAgICAgICAgICAgICB3aWR0aD17MTUwfVxuICAgICAgICAgICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJvcmRlcl9zdW1tYXJ5LmNvcHlfb3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlQ29udGFpbmVyfT5cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICB2YXJpYW50PVwiaDRcIlxuICAgICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlSW5mb1RpdGxlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmF0dGVuZGVlX2luZm9ybWF0aW9uXCIpfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgIHt0aWNrZXQgJiYgKFxuICAgICAgICAgICAgICAgIDxUaWNrZXRGb3JtXG4gICAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgICAgY2FuRWRpdD17Y2FuRWRpdFRpY2tldERhdGF9XG4gICAgICAgICAgICAgICAgICBvblN1Ym1pdD17b25TYXZlfVxuICAgICAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L0RyYXdlcj5cbiAgICAgIDxDdXN0b21EaWFsb2dcbiAgICAgICAgb3Blbj17ISFzYXZlTWVzc2FnZX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZVNhdmVNZXNzYWdlfVxuICAgICAgICB0aXRsZT17c2F2ZU1lc3NhZ2U/LnRpdGxlfVxuICAgICAgICBkZXNjcmlwdGlvbj17c2F2ZU1lc3NhZ2U/LmRlc2NyaXB0aW9ufVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblRpY2tldERldGFpbC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0RGV0YWlsO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5cbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5cbmNvbnN0IFJlYXNzaWduRm9ybSA9ICh7IG9uU3VibWl0LCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczoge1xuICAgICAgbmV3X2F0dGVuZGVlX2VtYWlsOiBcIlwiLFxuICAgICAgcGVyc29uYWxfbWVzc2FnZTogXCJcIlxuICAgIH0sXG4gICAgdmFsaWRhdGlvblNjaGVtYTogeXVwLm9iamVjdCh7XG4gICAgICBuZXdfYXR0ZW5kZWVfZW1haWw6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnN0cmluZ1wiKSlcbiAgICAgICAgLmVtYWlsKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLmZvcm1hdFwiKSlcbiAgICAgICAgLnJlcXVpcmVkKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnJlcXVpcmVkXCIpKSxcbiAgICAgIHBlcnNvbmFsX21lc3NhZ2U6IHl1cC5zdHJpbmcodChcInZhbGlkYXRpb24udGV4dC5zdHJpbmdcIikpXG4gICAgfSksXG4gICAgb25TdWJtaXRcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0gbm9WYWxpZGF0ZT5cbiAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG5hbWU9XCJuZXdfYXR0ZW5kZWVfZW1haWxcIlxuICAgICAgICBsYWJlbD17dChcInRpY2tldF9yZWFzc2lnbi5uZXdfYXR0ZW5kZWVfZW1haWxcIil9XG4gICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLm5ld19hdHRlbmRlZV9lbWFpbH1cbiAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgIGVycm9yPXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5uZXdfYXR0ZW5kZWVfZW1haWwgJiZcbiAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMubmV3X2F0dGVuZGVlX2VtYWlsKVxuICAgICAgICB9XG4gICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLm5ld19hdHRlbmRlZV9lbWFpbCAmJiBmb3JtaWsuZXJyb3JzLm5ld19hdHRlbmRlZV9lbWFpbFxuICAgICAgICB9XG4gICAgICAgIHJlcXVpcmVkXG4gICAgICAvPlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbmFtZT1cInBlcnNvbmFsX21lc3NhZ2VcIlxuICAgICAgICBsYWJlbD17dChcInRpY2tldF9yZWFzc2lnbi5wZXJzb25hbF9tZXNzYWdlXCIpfVxuICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5wZXJzb25hbF9tZXNzYWdlfVxuICAgICAgICBtdWx0aWxpbmVcbiAgICAgICAgbWluUm93cz17NH1cbiAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgIGVycm9yPXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5wZXJzb25hbF9tZXNzYWdlICYmXG4gICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLnBlcnNvbmFsX21lc3NhZ2UpXG4gICAgICAgIH1cbiAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQucGVyc29uYWxfbWVzc2FnZSAmJiBmb3JtaWsuZXJyb3JzLnBlcnNvbmFsX21lc3NhZ2VcbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9yZWFzc2lnbi5zYXZlXCIpfVxuICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9yZWFzc2lnbi5jYW5jZWxcIil9XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgIGRpc2FibGVkPXtmb3JtaWsuaXNTdWJtaXR0aW5nfVxuICAgICAgLz5cbiAgICA8L2Zvcm0+XG4gICk7XG59O1xuXG5SZWFzc2lnbkZvcm0ucHJvcFR5cGVzID0ge1xuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVhc3NpZ25Gb3JtO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHJlYXNzaWduVGlja2V0LCBzYXZlRXh0cmFRdWVzdGlvbnMgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFJlYXNzaWduRm9ybSBmcm9tIFwiLi9jb21wb25lbnRzL1JlYXNzaWduRm9ybVwiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuXG5pbXBvcnQgQXNzaWduRVFGb3JtIGZyb20gXCIuLi9Bc3NpZ25FUUZvcm1cIjtcbmltcG9ydCB7IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCB9IGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQgQ3VzdG9tRGlhbG9nIGZyb20gXCIuLi9DdXN0b21EaWFsb2dcIjtcbmltcG9ydCB1c2VHZXRUaWNrZXQgZnJvbSBcIi4uLy4uL2hvb2tzL3VzZUdldFRpY2tldFwiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXRSZWFzc2lnbiA9ICh7XG4gIHN1bW1pdCxcbiAgdGlja2V0SWQsXG4gIG9yZGVySWQsXG4gIG93bmVySWQsXG4gIG9wZW4sXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IFtzYXZlTWVzc2FnZSwgc2V0U2F2ZU1lc3NhZ2VdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFt0aWNrZXRSZWFzc2lnbmVkLCBzZXRUaWNrZXRSZWFzc2lnbmVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgeyB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH0gPSB1c2VHZXRUaWNrZXQoXG4gICAgdGlja2V0SWQsXG4gICAgb3JkZXJJZCxcbiAgICBvd25lcklkLFxuICAgIG9wZW5cbiAgKTtcblxuICBjb25zdCBvblJlYXNzaWduID0gKHZhbCkgPT4ge1xuICAgIGNvbnN0IHsgbmV3X2F0dGVuZGVlX2VtYWlsLCBwZXJzb25hbF9tZXNzYWdlIH0gPSB2YWw7XG4gICAgcmV0dXJuIGRpc3BhdGNoKFxuICAgICAgcmVhc3NpZ25UaWNrZXQob3JkZXJJZCwgdGlja2V0SWQsIG5ld19hdHRlbmRlZV9lbWFpbCwgcGVyc29uYWxfbWVzc2FnZSlcbiAgICApLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0VGlja2V0UmVhc3NpZ25lZCh0cnVlKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBvbkNsb3NlRVFGb3JtID0gKCkgPT4ge1xuICAgIHNldFRpY2tldFJlYXNzaWduZWQoZmFsc2UpO1xuICAgIG9uQ2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBvbkNsb3NlU2F2ZU1lc3NhZ2UgPSAoKSA9PiB7XG4gICAgc2V0U2F2ZU1lc3NhZ2UobnVsbCk7XG4gICAgc2V0VGlja2V0UmVhc3NpZ25lZChmYWxzZSk7XG4gICAgc2V0VGltZW91dChvbkNsb3NlLCBNSUxMSVNFQ19UT19TRUMpO1xuICB9O1xuXG4gIGNvbnN0IG9uU2F2ZUVRID0gKHZhbCkgPT4ge1xuICAgIGNvbnN0IGFuc3dlcnMgPSB0cmFuc2Zvcm1BbndlcnNGb3JtYXQodmFsKTtcblxuICAgIHJldHVybiBkaXNwYXRjaChzYXZlRXh0cmFRdWVzdGlvbnModGlja2V0LCBhbnN3ZXJzKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0U2F2ZU1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X3JlYXNzaWduLnNhdmluZ19zdWNjZXNzXCIpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB0KFwidGlja2V0X3JlYXNzaWduLnNhdmluZ19zdWNjZXNzX2Rlc2NyaXB0aW9uXCIpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgc2V0U2F2ZU1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X3JlYXNzaWduLnNhdmluZ19lcnJvclwiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZXJyLnRvU3RyaW5nKClcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgY29uc3QgZ2V0TGFiZWxzID0gKCkgPT4ge1xuICAgIGlmICh0aWNrZXRSZWFzc2lnbmVkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogdChcInRpY2tldF9yZWFzc2lnbi5yZWFzc2lnbl90aWNrZXRcIiksXG4gICAgICAgIHN1YnRpdGxlOiBgJHt0KFwidGlja2V0X3JlYXNzaWduLnJlYXNzaWduZWRfdG9cIil9ICR7XG4gICAgICAgICAgdGlja2V0Py5vd25lcj8uZW1haWxcbiAgICAgICAgfWAsXG4gICAgICAgIGhlYWRlck5vdGU6IHQoXCJ0aWNrZXRfcmVhc3NpZ24uY29tcGxldGVfaW5mb1wiKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfcmVhc3NpZ24ucmVhc3NpZ25fdGlja2V0XCIpLFxuICAgICAgc3VidGl0bGU6IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7dChcInRpY2tldF9yZWFzc2lnbi5hc3NpZ25lZF90b1wiKX1cbiAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICB7dGlja2V0Py5vd25lcj8uZW1haWx9XG4gICAgICAgIDwvPlxuICAgICAgKSxcbiAgICAgIGhlYWRlck5vdGU6IHQoXCJ0aWNrZXRfcmVhc3NpZ24uZW50ZXJfZW1haWxfbm90ZVwiKVxuICAgIH07XG4gIH07XG5cbiAgY29uc3QgeyB0aXRsZSwgc3VidGl0bGUsIGhlYWRlck5vdGUgfSA9IGdldExhYmVscygpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxSaWdodERyYXdlclxuICAgICAgICBpZD1cInJlYXNzaWduRHJhd2VyXCJcbiAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRSZWFzc2lnbkNvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAge3RpY2tldCAmJiBleHRyYVF1ZXN0aW9ucyAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxCb3g+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNFwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX0+XG4gICAgICAgICAgICAgICAge3N1YnRpdGxlfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJOb3RlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2hlYWRlck5vdGV9XG4gICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUNvbnRhaW5lcn0+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgICAgdmFyaWFudD1cImg0XCJcbiAgICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUluZm9UaXRsZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0aWNrZXQ/LnR5cGU/Lm5hbWV9XG4gICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAge3RpY2tldCAmJiAhdGlja2V0UmVhc3NpZ25lZCAmJiAoXG4gICAgICAgICAgICAgICAgPFJlYXNzaWduRm9ybVxuICAgICAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtvblJlYXNzaWdufVxuICAgICAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7dGlja2V0ICYmIHRpY2tldFJlYXNzaWduZWQgJiYgKFxuICAgICAgICAgICAgICAgIDxBc3NpZ25FUUZvcm1cbiAgICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgICBleHRyYVF1ZXN0aW9ucz17ZXh0cmFRdWVzdGlvbnN9XG4gICAgICAgICAgICAgICAgICBvblN1Ym1pdD17b25TYXZlRVF9XG4gICAgICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlRVFGb3JtfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvUmlnaHREcmF3ZXI+XG4gICAgICA8Q3VzdG9tRGlhbG9nXG4gICAgICAgIG9wZW49eyEhc2F2ZU1lc3NhZ2V9XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2VTYXZlTWVzc2FnZX1cbiAgICAgICAgdGl0bGU9e3NhdmVNZXNzYWdlPy50aXRsZX1cbiAgICAgICAgZGVzY3JpcHRpb249e3NhdmVNZXNzYWdlPy5kZXNjcmlwdGlvbn1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59O1xuXG5UaWNrZXRSZWFzc2lnbi5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0UmVhc3NpZ247XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBDb250YWluZXIsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXRTdGF0dXMgPSAoeyB0aWNrZXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGlzQWN0aXZlID0gdGlja2V0LmlzX2FjdGl2ZTtcbiAgY29uc3QgcmVmdW5kUmVxdWVzdHMgPSB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5maW5kKFxuICAgIChyKSA9PiByLnN0YXR1cyA9PT0gXCJSZXF1ZXN0ZWRcIlxuICApO1xuICBjb25zdCB7IGlzSW5jb21wbGV0ZSwgaXNVbmFzc2lnbmVkLCBpc0NvbXBsZXRlIH0gPSB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldFN0YXR1c0NvbnRhaW5lcn0+XG4gICAgICB7aXNBY3RpdmUgPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3JlZnVuZFJlcXVlc3RzICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIHJlZnVuZCByZXF1ZXN0ZWRcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25SZWZ1bmRSZXF1ZXN0ZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19yZWZ1bmRfcmVxdWVzdGVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNJbmNvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGluY29tcGxldGVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25JbmNvbXBsZXRlfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfaW5jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzVW5hc3NpZ25lZCAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyB1bmFzc2lnbmVkXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uVW5hc3NpZ25lZH1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX3VuYXNzaWduZWRcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGNvbXBsZXRlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ29tcGxldGV9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvPlxuICAgICAgKSA6IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGNhbmNlbGxlZFwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ2FuY2VsbGVkfWB9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2NhbmNlbGxlZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvQ29udGFpbmVyPlxuICApO1xufTtcblxuVGlja2V0U3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgc3RhdHVzOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgcmVmdW5kUmVxdWVzdHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFN0YXR1cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBEaXZpZGVyLFxuICBUYWJzLFxuICBUYWIsXG4gIHVzZVRoZW1lLFxuICB1c2VNZWRpYVF1ZXJ5XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBUQUJTIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IE15T3JkZXJzVGlja2V0cyBmcm9tIFwiLi4vTXlPcmRlcnNUaWNrZXRzXCI7XG5pbXBvcnQgQXNzaWduZWRUb01lIGZyb20gXCIuLi9PcmRlcnNMaXN0L0Fzc2lnbmVkVG9NZVwiO1xuXG5jb25zdCBXaWRnZXRUYWJzID0gKHsgdGl0bGUgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFt0YWIsIHNldFRhYl0gPSB1c2VTdGF0ZShUQUJTLk9SREVSUyk7XG5cbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBpc01vYmlsZSA9IHVzZU1lZGlhUXVlcnkodGhlbWUuYnJlYWtwb2ludHMuZG93bihcImxnXCIpKTtcblxuICBjb25zdCBoYW5kbGVUYWJDaGFuZ2UgPSAoXywgbmV3VGFiKSA9PiB7XG4gICAgc2V0VGFiKG5ld1RhYik7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRhYldyYXBwZXJ9PlxuICAgICAgPFRhYnNcbiAgICAgICAgdmFsdWU9e3RhYn1cbiAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRhYkNoYW5nZX1cbiAgICAgICAgdmFyaWFudD17aXNNb2JpbGUgPyBcImZ1bGxXaWR0aFwiIDogXCJzdGFuZGFyZFwifVxuICAgICAgPlxuICAgICAgICA8VGFiIGxhYmVsPXt0KFwib3JkZXJzLnRpdGxlXCIpfSB2YWx1ZT17VEFCUy5PUkRFUlN9IC8+XG4gICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMuYXNzaWduZWRfdG9fbWVcIil9IHZhbHVlPXtUQUJTLlRJQ0tFVFN9IC8+XG4gICAgICA8L1RhYnM+XG4gICAgICA8RGl2aWRlciAvPlxuICAgICAgPEJveCBzeD17eyBwdDogNiwgcGI6IDMgfX0+e3RpdGxlfTwvQm94PlxuICAgICAge3RhYiA9PT0gVEFCUy5PUkRFUlMgJiYgPE15T3JkZXJzVGlja2V0cyAvPn1cbiAgICAgIHt0YWIgPT09IFRBQlMuVElDS0VUUyAmJiA8QXNzaWduZWRUb01lIC8+fVxuICAgIDwvQm94PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgV2lkZ2V0VGFicztcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwsIGNvbm5lY3QgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1xuICByZXNldEZpbHRlcixcbiAgcmVzZXRFcnJvcixcbiAgY2hhbmdlU29ydCxcbiAgY2hhbmdlRmlsdGVyXG59IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgQ3VzdG9tVGhlbWUgZnJvbSBcIi4uL0N1c3RvbVRoZW1lXCI7XG5pbXBvcnQgTG9hZGVyIGZyb20gXCIuLi9Mb2FkZXJcIjtcbmltcG9ydCBDdXN0b21EaWFsb2dDb250ZXh0IGZyb20gXCIuLi9DdXN0b21EaWFsb2cvQ29udGV4dFwiO1xuaW1wb3J0IEN1c3RvbURpYWxvZyBmcm9tIFwiLi4vQ3VzdG9tRGlhbG9nXCI7XG5cbmltcG9ydCBGaWx0ZXJzIGZyb20gXCIuLi9GaWx0ZXJzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgV2lkZ2V0VGFicyBmcm9tIFwiLi4vV2lkZ2V0VGFic1wiO1xuaW1wb3J0IFN1bW1pdEhlYWRlciBmcm9tIFwiLi4vU3VtbWl0SGVhZGVyXCI7XG5cbmNvbnN0IFdpZGdldFdyYXBwZXIgPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbbWVzc2FnZSwgc2V0TWVzc2FnZV0gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW21lc3NhZ2VDYWxsYmFjaywgc2V0TWVzc2FnZUNhbGxiYWNrXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCB7XG4gICAgbG9hZGluZyxcbiAgICBhcGlFcnJvcixcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVI6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IG9uUmVzZXQgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRGaWx0ZXIoKSk7XG4gIH07XG5cbiAgY29uc3QgcmVzZXRBcGlFcnJvciA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChyZXNldEVycm9yKCkpO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGFwaUVycm9yKSB7XG4gICAgICBzZXRNZXNzYWdlKGFwaUVycm9yKTtcbiAgICAgIHNldE1lc3NhZ2VDYWxsYmFjayhyZXNldEFwaUVycm9yKTtcbiAgICB9XG4gIH0sIFthcGlFcnJvcl0pO1xuXG4gIGNvbnN0IG9uRmlsdGVyID0gKGZpbHRlclZhbHVlKSA9PiB7XG4gICAgZGlzcGF0Y2goY2hhbmdlRmlsdGVyKGZpbHRlclZhbHVlKSk7XG4gIH07XG5cbiAgY29uc3Qgb25Tb3J0ID0gKHNvcnRWYWx1ZSkgPT4ge1xuICAgIGRpc3BhdGNoKGNoYW5nZVNvcnQoc29ydFZhbHVlKSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Q3VzdG9tVGhlbWU+XG4gICAgICA8TG9hZGVyIG9wZW49e2xvYWRpbmd9IC8+XG4gICAgICA8Q3VzdG9tRGlhbG9nXG4gICAgICAgIG9wZW49eyEhbWVzc2FnZX1cbiAgICAgICAgb25DbG9zZT17KCkgPT4ge1xuICAgICAgICAgIHNldE1lc3NhZ2UobnVsbCk7XG4gICAgICAgICAgaWYgKG1lc3NhZ2VDYWxsYmFjaykgbWVzc2FnZUNhbGxiYWNrKCk7XG4gICAgICAgIH19XG4gICAgICAgIGJvZHk9e21lc3NhZ2U/LmJvZHl9XG4gICAgICAgIHRpdGxlPXttZXNzYWdlPy50aXRsZX1cbiAgICAgIC8+XG4gICAgICA8RmlsdGVyc1xuICAgICAgICBvbkZpbHRlcj17b25GaWx0ZXJ9XG4gICAgICAgIG9uU29ydD17b25Tb3J0fVxuICAgICAgICBvblNlYXJjaD17b25GaWx0ZXJ9XG4gICAgICAgIG9uUmVzZXQ9e29uUmVzZXR9XG4gICAgICAvPlxuICAgICAgPEJveCBzeD17eyBwYWRkaW5nOiB7IHhzOiAyLCBtZDogMCwgbGc6IDAgfSB9fT5cbiAgICAgICAgPGgzIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldHNUaXRsZVRleHR9PlxuICAgICAgICAgIHtmaWx0ZXJWYWx1ZXNcbiAgICAgICAgICAgID8gdChcImxhYmVscy5zZWFyY2hfcmVzdWx0c1wiLCB7IGZpbHRlcjogZmlsdGVyVmFsdWVzIH0pXG4gICAgICAgICAgICA6IHQoXCJsYWJlbHMudGlja2V0c1wiKX1cbiAgICAgICAgPC9oMz5cbiAgICAgIDwvQm94PlxuICAgICAgPEN1c3RvbURpYWxvZ0NvbnRleHQuUHJvdmlkZXIgdmFsdWU9eyhzZXRNZXNzYWdlLCBzZXRNZXNzYWdlQ2FsbGJhY2spfT5cbiAgICAgICAgPFdpZGdldFRhYnMgdGl0bGU9ezxTdW1taXRIZWFkZXIgLz59IC8+XG4gICAgICA8L0N1c3RvbURpYWxvZ0NvbnRleHQuUHJvdmlkZXI+XG4gICAgPC9DdXN0b21UaGVtZT5cbiAgKTtcbn07XG5cbmNvbnN0IG1hcFN0YXRlVG9Qcm9wcyA9ICh7IHdpZGdldFN0YXRlIH0pID0+ICh7XG4gIHNvcnQ6IHdpZGdldFN0YXRlLnNvcnQsXG4gIGZpbHRlcjogd2lkZ2V0U3RhdGUuZmlsdGVyXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgY29ubmVjdChtYXBTdGF0ZVRvUHJvcHMsIHt9KShXaWRnZXRXcmFwcGVyKTtcbiIsImltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBnZXRFeHRyYVF1ZXN0aW9ucywgZ2V0VGlja2V0IH0gZnJvbSBcIi4uL2FjdGlvbnNcIjtcblxuY29uc3QgdXNlR2V0VGlja2V0ID0gKHRpY2tldElkLCBvcmRlcklkLCBvd25lcklkLCBydW4pID0+IHtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRpY2tldElkICYmIG9yZGVySWQgJiYgb3duZXJJZCAmJiBydW4pIHtcbiAgICAgIGRpc3BhdGNoKGdldFRpY2tldCh0aWNrZXRJZCwgb3JkZXJJZCkpO1xuICAgICAgZGlzcGF0Y2goZ2V0RXh0cmFRdWVzdGlvbnMob3duZXJJZCkpO1xuICAgIH1cbiAgfSwgW3RpY2tldElkLCBvcmRlcklkLCBvd25lcklkLCBydW5dKTtcblxuICBjb25zdCB7IGV4dHJhUXVlc3Rpb25zLCBjdXJyZW50VGlja2V0OiB0aWNrZXQgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGVcbiAgKTtcblxuICByZXR1cm4geyB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCB1c2VHZXRUaWNrZXQ7XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcblxuLy8gU21vb3RoIHNjcm9sbGluZyBmdW5jdGlvbiB1c2luZyByZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbmZ1bmN0aW9uIHNtb290aFNjcm9sbFRvKGNvbnRhaW5lciwgdGFyZ2V0U2Nyb2xsVG9wLCBkdXJhdGlvbikge1xuICBjb25zdCBzdGFydFNjcm9sbFRvcCA9IGNvbnRhaW5lci5zY3JvbGxUb3A7XG4gIGNvbnN0IGRpc3RhbmNlID0gdGFyZ2V0U2Nyb2xsVG9wIC0gc3RhcnRTY3JvbGxUb3A7XG4gIGxldCBzdGFydFRpbWUgPSBudWxsO1xuXG4gIGZ1bmN0aW9uIGFuaW1hdGlvblN0ZXAodGltZXN0YW1wKSB7XG4gICAgaWYgKCFzdGFydFRpbWUpIHN0YXJ0VGltZSA9IHRpbWVzdGFtcDtcbiAgICBjb25zdCBlbGFwc2VkID0gdGltZXN0YW1wIC0gc3RhcnRUaW1lO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICBjb25zdCBwcm9ncmVzcyA9IE1hdGgubWluKGVsYXBzZWQgLyBkdXJhdGlvbiwgMSk7XG4gICAgY29uc3QgZWFzZUluT3V0UXVhZCA9XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgICAgcHJvZ3Jlc3MgPCAwLjUgPyAyICogcHJvZ3Jlc3MgKiogMiA6IDEgLSAoLTIgKiBwcm9ncmVzcyArIDIpICoqIDIgLyAyO1xuXG4gICAgY29udGFpbmVyLnNjcm9sbFRvcCA9IHN0YXJ0U2Nyb2xsVG9wICsgZGlzdGFuY2UgKiBlYXNlSW5PdXRRdWFkO1xuXG4gICAgaWYgKGVsYXBzZWQgPCBkdXJhdGlvbikge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvblN0ZXApO1xuICAgIH1cbiAgfVxuXG4gIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRpb25TdGVwKTtcbn1cblxuY29uc3QgdXNlU2Nyb2xsVG9FcnJvciA9IChmb3JtaWssIGNvbnRhaW5lcklkKSA9PiB7XG4gIGNvbnN0IHsgZXJyb3JzLCBpc1ZhbGlkLCBpc1N1Ym1pdHRpbmcgfSA9IGZvcm1paztcbiAgY29uc3QgZXJyb3JBcnJheSA9IE9iamVjdC5rZXlzKGVycm9ycyk7XG4gIGNvbnN0IGVycm9yQ291bnQgPSBlcnJvckFycmF5Lmxlbmd0aDtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1ZhbGlkIHx8IGVycm9yQ291bnQgPT09IDApIHJldHVybjtcblxuICAgIC8vIHNvcnQgZWxlbWVudHMgYnkgcG9zaXRpb25cbiAgICBjb25zdCBlbGVtZW50c1NvcnRlZCA9IGVycm9yQXJyYXlcbiAgICAgIC5yZWR1Y2UoKHJlc3VsdCwgZXJyb3IpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYGlucHV0W25hbWU9JyR7ZXJyb3J9J11gKTtcbiAgICAgICAgaWYgKCFlbGVtZW50KSByZXR1cm4gcmVzdWx0O1xuXG4gICAgICAgIGNvbnN0IGVsUmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHJlc3VsdC5wdXNoKHsgZWxlbWVudCwgZXJyb3IsIHRvcDogZWxSZWN0LnRvcCB9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSwgW10pXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS50b3AgLSBiLnRvcCk7XG5cbiAgICBpZiAoZWxlbWVudHNTb3J0ZWQubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudFxuICAgICAgLmdldEVsZW1lbnRCeUlkKGNvbnRhaW5lcklkKVxuICAgICAgLnF1ZXJ5U2VsZWN0b3IoXCIuTXVpRHJhd2VyLXBhcGVyXCIpO1xuICAgIGNvbnN0IHRhcmdldCA9IGVsZW1lbnRzU29ydGVkWzBdO1xuXG4gICAgaWYgKGNvbnRhaW5lcj8uY29udGFpbnModGFyZ2V0LmVsZW1lbnQpKSB7XG4gICAgICBjb25zdCBjb250YWluZXJSZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAvLyBDYWxjdWxhdGUgdGhlIG9mZnNldCBvZiB0aGUgdGFyZ2V0IGVsZW1lbnQgcmVsYXRpdmUgdG8gdGhlIGNvbnRhaW5lclxuICAgICAgY29uc3QgZWxlbU9mZmVzdCA9IDEwMDtcbiAgICAgIGNvbnN0IGFuaW1hdGlvbkR1cmF0aW9uID0gNTAwO1xuICAgICAgY29uc3Qgc2Nyb2xsVG9wID1cbiAgICAgICAgdGFyZ2V0LnRvcCAtIGNvbnRhaW5lclJlY3QudG9wICsgY29udGFpbmVyLnNjcm9sbFRvcCAtIGVsZW1PZmZlc3Q7XG5cbiAgICAgIC8vIFNjcm9sbCB0aGUgY29udGFpbmVyIHRvIHRoZSB0YXJnZXQgZWxlbWVudCdzIHBvc2l0aW9uXG4gICAgICBzbW9vdGhTY3JvbGxUbyhjb250YWluZXIsIHNjcm9sbFRvcCwgYW5pbWF0aW9uRHVyYXRpb24pOyAvLyA1MDBtcyBkdXJhdGlvblxuICAgIH1cbiAgfSwgW2lzU3VibWl0dGluZ10pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgdXNlU2Nyb2xsVG9FcnJvcjtcbiIsImltcG9ydCB7IGlzVGlja2V0UmVmdW5kYWJsZSB9IGZyb20gXCIuLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5leHBvcnQgY29uc3QgU1RBVFVTX0NPTVBMRVRFID0gXCJDb21wbGV0ZVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19JTkNPTVBMRVRFID0gXCJJbmNvbXBsZXRlXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiQ2FuY2VsbGVkXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlVuYXNzaWduZWRcIjtcblxuZXhwb3J0IGNvbnN0IHVzZVRpY2tldERldGFpbHMgPSAodGlja2V0KSA9PiB7XG4gIGNvbnN0IGdldFN0YXR1cyA9ICgpID0+IHtcbiAgICBpZiAoIXRpY2tldC5pc19hY3RpdmUpIHJldHVybiBTVEFUVVNfQ0FOQ0VMTEVEO1xuICAgIGlmICh0aWNrZXQub3duZXJfaWQgPT09IDApIHJldHVybiBTVEFUVVNfVU5BU1NJR05FRDtcbiAgICBpZiAoIXRpY2tldC5vd25lcj8uZmlyc3RfbmFtZSB8fCAhdGlja2V0Lm93bmVyPy5sYXN0X25hbWUpXG4gICAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG4gICAgcmV0dXJuIHRpY2tldC5vd25lci5zdGF0dXM7XG4gIH07XG5cbiAgaWYgKCF0aWNrZXQpIHJldHVybiB7fTtcblxuICBjb25zdCBzdGF0dXMgPSBnZXRTdGF0dXMoKTtcbiAgY29uc3QgaXNBY3RpdmUgPSB0aWNrZXQuaXNfYWN0aXZlICYmIHN0YXR1cyAhPT0gU1RBVFVTX0NBTkNFTExFRDtcbiAgY29uc3QgaXNSZWZ1bmRhYmxlID0gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCk7XG4gIGNvbnN0IGFsbG93c0RlbGVnYXRlID1cbiAgICAodGlja2V0Py50aWNrZXRfdHlwZT8uYWxsb3dzX3RvX2RlbGVnYXRlIHx8XG4gICAgICB0aWNrZXQ/LnByb21vX2NvZGU/LmFsbG93c190b19kZWxlZ2F0ZSkgJiZcbiAgICBzdGF0dXMgIT09IFNUQVRVU19VTkFTU0lHTkVEICYmXG4gICAgIXRpY2tldC5vd25lcj8ubWFuYWdlcj8uaWQgJiZcbiAgICAhdGlja2V0Lm93bmVyPy5tYW5hZ2VyX2lkO1xuICBjb25zdCBpc0NvbXBsZXRlID0gc3RhdHVzID09PSBTVEFUVVNfQ09NUExFVEU7XG4gIGNvbnN0IGlzVW5hc3NpZ25lZCA9IHN0YXR1cyA9PT0gU1RBVFVTX1VOQVNTSUdORUQ7XG4gIGNvbnN0IGlzSW5jb21wbGV0ZSA9IHN0YXR1cyA9PT0gU1RBVFVTX0lOQ09NUExFVEU7XG4gIGNvbnN0IGNhblJlYXNzaWduID1cbiAgICAhaXNVbmFzc2lnbmVkICYmXG4gICAgdGlja2V0LnRpY2tldF90eXBlPy5hbGxvd3NfdG9fcmVhc3NpZ24gJiZcbiAgICAoIXRpY2tldC5wcm9tb19jb2RlIHx8IHRpY2tldC5wcm9tb19jb2RlPy5hbGxvd3NfdG9fcmVhc3NpZ24pO1xuXG4gIHJldHVybiB7XG4gICAgc3RhdHVzLFxuICAgIGlzQ29tcGxldGUsXG4gICAgaXNVbmFzc2lnbmVkLFxuICAgIGlzSW5jb21wbGV0ZSxcbiAgICBpc0FjdGl2ZSxcbiAgICBpc1JlZnVuZGFibGUsXG4gICAgYWxsb3dzRGVsZWdhdGUsXG4gICAgY2FuUmVhc3NpZ25cbiAgfTtcbn07XG4iLCJpbXBvcnQgaTE4biBmcm9tIFwiaTE4bmV4dFwiO1xuaW1wb3J0IHsgaW5pdFJlYWN0STE4bmV4dCB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgTGFuZ3VhZ2VEZXRlY3RvciBmcm9tIFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIjtcbmltcG9ydCBlbiBmcm9tIFwiLi9sb2NhbGVzL2VuLmpzb25cIjtcbmltcG9ydCBlcyBmcm9tIFwiLi9sb2NhbGVzL2VzLmpzb25cIjtcblxuLy8gaW1wb3J0IEJhY2tlbmQgZnJvbSAnaTE4bmV4dC1odHRwLWJhY2tlbmQnO1xuLy8gZG9uJ3Qgd2FudCB0byB1c2UgdGhpcz9cbi8vIGhhdmUgYSBsb29rIGF0IHRoZSBRdWljayBzdGFydCBndWlkZVxuLy8gZm9yIHBhc3NpbmcgaW4gbG5nIGFuZCB0cmFuc2xhdGlvbnMgb24gaW5pdFxuXG5pMThuXG4gIC8vIGxvYWQgdHJhbnNsYXRpb24gdXNpbmcgaHR0cCAtPiBzZWUgL3B1YmxpYy9sb2NhbGVzIChpLmUuIGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L3JlYWN0LWkxOG5leHQvdHJlZS9tYXN0ZXIvZXhhbXBsZS9yZWFjdC9wdWJsaWMvbG9jYWxlcylcbiAgLy8gbGVhcm4gbW9yZTogaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvaTE4bmV4dC1odHRwLWJhY2tlbmRcbiAgLy8gd2FudCB5b3VyIHRyYW5zbGF0aW9ucyB0byBiZSBsb2FkZWQgZnJvbSBhIHByb2Zlc3Npb25hbCBDRE4/ID0+IGh0dHBzOi8vZ2l0aHViLmNvbS9sb2NpemUvcmVhY3QtdHV0b3JpYWwjc3RlcC0yLS0tdXNlLXRoZS1sb2NpemUtY2RuXG4gIC8vIC51c2UoQmFja2VuZClcbiAgLy8gZGV0ZWN0IHVzZXIgbGFuZ3VhZ2VcbiAgLy8gbGVhcm4gbW9yZTogaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlRGV0ZWN0b3JcbiAgLnVzZShMYW5ndWFnZURldGVjdG9yKVxuICAvLyBwYXNzIHRoZSBpMThuIGluc3RhbmNlIHRvIHJlYWN0LWkxOG5leHQuXG4gIC51c2UoaW5pdFJlYWN0STE4bmV4dClcbiAgLy8gaW5pdCBpMThuZXh0XG4gIC8vIGZvciBhbGwgb3B0aW9ucyByZWFkOiBodHRwczovL3d3dy5pMThuZXh0LmNvbS9vdmVydmlldy9jb25maWd1cmF0aW9uLW9wdGlvbnNcbiAgLmluaXQoe1xuICAgIGZhbGxiYWNrTG5nOiBcImVuXCIsXG4gICAgZGVidWc6IGZhbHNlLFxuICAgIHJlc291cmNlczoge1xuICAgICAgZW46IHsgdHJhbnNsYXRpb246IGVuIH0sXG4gICAgICBlczogeyB0cmFuc2xhdGlvbjogZXMgfVxuICAgIH0sXG4gICAgaW50ZXJwb2xhdGlvbjoge1xuICAgICAgZXNjYXBlVmFsdWU6IGZhbHNlIC8vIG5vdCBuZWVkZWQgZm9yIHJlYWN0IGFzIGl0IGVzY2FwZXMgYnkgZGVmYXVsdFxuICAgIH1cbiAgfSk7XG5cbmV4cG9ydCBkZWZhdWx0IGkxOG47XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IHsgTE9HT1VUX1VTRVIgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCI7XG5pbXBvcnQge1xuICBTVEFSVF9MT0FESU5HLFxuICBTVE9QX0xPQURJTkcsXG4gIFJFU0VUX0xPQURJTkdcbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiO1xuaW1wb3J0IHtcbiAgUkVTRVRfU1RBVEUsXG4gIFJFU0VUX0ZJTFRFUixcbiAgU0VUX1NUQVRFLFxuICBTRVRfVVNFUixcbiAgR0VUX1VTRVJfT1JERVJTLFxuICBHRVRfTVlfQVNTSUdORURfVElDS0VUUyxcbiAgR0VUX1RJQ0tFVFNfQllfT1JERVIsXG4gIFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQsXG4gIFJFQ0VJVkVfVElDS0VULFxuICBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyxcbiAgVVBEQVRFX1RJQ0tFVCxcbiAgQVNTSUdOX1RJQ0tFVCxcbiAgUkVTRVRfQVBJX0VSUk9SLFxuICBTRVRfQVBJX0VSUk9SLFxuICBSRVNFVF9USUNLRVQsXG4gIENIQU5HRV9GSUxURVIsXG4gIENIQU5HRV9TT1JULFxuICBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUsXG4gIEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSLFxuICBGSUxURVJfVkFSX0RBVEUsXG4gIEZJTFRFUl9WQVJfVElDS0VUX1RZUEUsXG4gIEZJTFRFUl9WQVJfRlJFRV9QQUlELFxuICBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyxcbiAgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQsXG4gIEZJTFRFUl9WQVJfUFJPTU9DT0RFXG59IGZyb20gXCIuL2FjdGlvbnNcIjtcbmltcG9ydCB7IEZJUlNUX1BBR0UsIFRBQlMgfSBmcm9tIFwiLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCB7IGhhc0xvYWRlZEFsbERhdGEgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBERUZBVUxUX0ZJTFRFUl9TVEFURSA9IHtcbiAgW0ZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRV06IFtdLFxuICBbRklMVEVSX1ZBUl9USUNLRVRfVFlQRV06IFtdLFxuICBbRklMVEVSX1ZBUl9GUkVFX1BBSURdOiBcIlwiLFxuICBbRklMVEVSX1ZBUl9PV05FUl9TVEFUVVNdOiBcIlwiLFxuICBbRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORURdOiBcIlwiLFxuICBbRklMVEVSX1ZBUl9QUk9NT0NPREVdOiBcIlwiLFxuICBbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdOiBcIlwiLFxuICBbRklMVEVSX1ZBUl9EQVRFXTogbnVsbFxufTtcblxuY29uc3QgREVGQVVMVF9TVEFURSA9IHtcbiAgc3VtbWl0OiBudWxsLFxuICB1c2VyOiB7fSxcbiAgd2lkZ2V0TG9hZGluZzogZmFsc2UsXG4gIG1lbWJlck9yZGVyczogW10sXG4gIHVzZXJUaWNrZXRzOiBbXSxcbiAgZXh0cmFRdWVzdGlvbnM6IFtdLFxuICBjdXJyZW50VGlja2V0OiBudWxsLFxuICBlcnJvcnM6IHt9LFxuICBsb2FkaW5nOiBmYWxzZSxcbiAgY3VycmVudF90YWI6IFRBQlMuT1JERVJTLFxuICBzb3J0OiB7fSxcbiAgZmlsdGVyOiBERUZBVUxUX0ZJTFRFUl9TVEFURSxcbiAgaXNPcmRlckxvYWRpbmc6IGZhbHNlLFxuICBvcmRlcnNfY3VycmVudF9wYWdlOiAwLFxuICBvcmRlcnNfbGFzdF9wYWdlOiAwLFxuICBvcmRlcnNfcGVyX3BhZ2U6IDUsXG4gIG9yZGVyc190b3RhbDogMCxcbiAgdGlja2V0X2N1cnJlbnRfcGFnZTogMCxcbiAgdGlja2V0X2xhc3RfcGFnZTogMCxcbiAgdGlja2V0X3Blcl9wYWdlOiA1LFxuICB0aWNrZXRfdG90YWw6IDAsXG4gIHVzZXJfdGlja2V0c190b3RhbDogMCxcbiAgdXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZTogMCxcbiAgdXNlcl90aWNrZXRzX2xhc3RfcGFnZTogMCxcbiAgYXBpRXJyb3I6IG51bGxcbn07XG5cbmNvbnN0IFdpZGdldFJlZHVjZXIgPSAoc3RhdGUgPSBERUZBVUxUX1NUQVRFLCB7IHR5cGUsIHBheWxvYWQgfSA9IHt9KSA9PiB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgTE9HT1VUX1VTRVI6XG4gICAgY2FzZSBSRVNFVF9TVEFURTpcbiAgICAgIHJldHVybiBERUZBVUxUX1NUQVRFO1xuICAgIGNhc2UgU1RBUlRfTE9BRElORzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBsb2FkaW5nOiB0cnVlIH07XG4gICAgY2FzZSBTVE9QX0xPQURJTkc6XG4gICAgY2FzZSBSRVNFVF9MT0FESU5HOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGxvYWRpbmc6IGZhbHNlIH07XG4gICAgY2FzZSBSRVNFVF9BUElfRVJST1I6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgYXBpRXJyb3I6IG51bGwgfTtcbiAgICBjYXNlIFJFU0VUX0ZJTFRFUjpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBmaWx0ZXI6IERFRkFVTFRfRklMVEVSX1NUQVRFLFxuICAgICAgICBzb3J0OiB7fSxcbiAgICAgICAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMSxcbiAgICAgICAgb3JkZXJzX2xhc3RfcGFnZTogMVxuICAgICAgfTtcbiAgICBjYXNlIFNFVF9TVEFURTpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCAuLi5wYXlsb2FkIH07XG4gICAgY2FzZSBTRVRfQVBJX0VSUk9SOiB7XG4gICAgICBjb25zdCB7IHRpdGxlLCBodG1sOiBib2R5IH0gPSBwYXlsb2FkO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGFwaUVycm9yOiB7IHRpdGxlLCBib2R5IH0gfTtcbiAgICB9XG4gICAgY2FzZSBTRVRfVVNFUjpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCB1c2VyOiBwYXlsb2FkIH07XG4gICAgY2FzZSBDSEFOR0VfRklMVEVSOiB7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgZmlsdGVyOiB7IC4uLnN0YXRlLmZpbHRlciwgLi4ucGF5bG9hZCB9IH07XG4gICAgfVxuICAgIGNhc2UgQ0hBTkdFX1NPUlQ6IHtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzb3J0OiB7IC4uLnBheWxvYWQgfSB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9VU0VSX09SREVSUzoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG5cbiAgICAgIGlmIChoYXNMb2FkZWRBbGxEYXRhKGN1cnJlbnRfcGFnZSwgbWVtYmVyT3JkZXJzLCB0b3RhbCkpIHJldHVybiBzdGF0ZTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczpcbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0UgPyBkYXRhIDogWy4uLm1lbWJlck9yZGVycywgLi4uZGF0YV0sXG4gICAgICAgIG9yZGVyc190b3RhbDogdG90YWwsXG4gICAgICAgIG9yZGVyc19jdXJyZW50X3BhZ2U6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgb3JkZXJzX2xhc3RfcGFnZTogbGFzdF9wYWdlXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9NWV9BU1NJR05FRF9USUNLRVRTOiB7XG4gICAgICBjb25zdCB7IHVzZXJUaWNrZXRzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSwgbGFzdF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuXG4gICAgICBpZiAoaGFzTG9hZGVkQWxsRGF0YShjdXJyZW50X3BhZ2UsIHVzZXJUaWNrZXRzLCB0b3RhbCkpIHJldHVybiBzdGF0ZTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHVzZXJUaWNrZXRzOlxuICAgICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRSA/IGRhdGEgOiBbLi4udXNlclRpY2tldHMsIC4uLmRhdGFdLFxuICAgICAgICB1c2VyX3RpY2tldHNfdG90YWw6IHRvdGFsLFxuICAgICAgICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlOiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIHVzZXJfdGlja2V0c19sYXN0X3BhZ2U6IGxhc3RfcGFnZVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfVElDS0VUU19CWV9PUkRFUjoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBmb3JtZXJPcmRlciA9IG1lbWJlck9yZGVycy5maW5kKChvKSA9PiBvLmlkID09PSBkYXRhWzBdPy5vcmRlcl9pZCk7XG5cbiAgICAgIGlmIChoYXNMb2FkZWRBbGxEYXRhKGN1cnJlbnRfcGFnZSwgZm9ybWVyT3JkZXI/Lm1lbWJlclRpY2tldHMsIHRvdGFsKSlcbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuXG4gICAgICBjb25zdCB1cGRhdGVkT3JkZXIgPSB7XG4gICAgICAgIC4uLmZvcm1lck9yZGVyLFxuICAgICAgICBtZW1iZXJUaWNrZXRzOlxuICAgICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRVxuICAgICAgICAgICAgPyBkYXRhXG4gICAgICAgICAgICA6IFsuLi5mb3JtZXJPcmRlci5tZW1iZXJUaWNrZXRzLCAuLi5kYXRhXSxcbiAgICAgICAgdGlja2V0c19wYWdlX2N1cnJlbnQ6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgdGlja2V0c19wYWdlX2xhc3Q6IGxhc3RfcGFnZSxcbiAgICAgICAgdGlja2V0c190b3RhbDogdG90YWxcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOiBtZW1iZXJPcmRlcnMubWFwKChtbykgPT5cbiAgICAgICAgICBtby5pZCA9PT0gdXBkYXRlZE9yZGVyLmlkID8gdXBkYXRlZE9yZGVyIDogbW9cbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEOiB7XG4gICAgICBjb25zdCB7IG1lbWJlck9yZGVycyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkID0gcGF5bG9hZDtcbiAgICAgIGNvbnN0IG9yZGVyID0gbWVtYmVyT3JkZXJzLmZpbmQoXG4gICAgICAgIChvKSA9PiBvLmlkID09PSB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkWzBdPy5vcmRlcl9pZFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRUaWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHMubWFwKFxuICAgICAgICAodGlja2V0KSA9PlxuICAgICAgICAgIHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQuZmluZCgodHJyKSA9PiB0cnIuaWQgPT09IHRpY2tldC5pZCkgfHwgdGlja2V0XG4gICAgICApO1xuICAgICAgY29uc3QgdXBkYXRlZE9yZGVyID0ge1xuICAgICAgICAuLi5vcmRlcixcbiAgICAgICAgbWVtYmVyVGlja2V0czogdXBkYXRlZFRpY2tldHNcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOiBtZW1iZXJPcmRlcnMubWFwKChtbykgPT5cbiAgICAgICAgICBtby5pZCA9PT0gdXBkYXRlZE9yZGVyLmlkID8gdXBkYXRlZE9yZGVyIDogbW9cbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBSRVNFVF9USUNLRVQ6IHtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBjdXJyZW50VGlja2V0OiBudWxsIH07XG4gICAgfVxuICAgIGNhc2UgUkVDRUlWRV9USUNLRVQ6IHtcbiAgICAgIGNvbnN0IHRpY2tldCA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgY3VycmVudFRpY2tldDogdGlja2V0IH07XG4gICAgfVxuICAgIGNhc2UgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlM6IHtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBleHRyYVF1ZXN0aW9uczogZGF0YSB9O1xuICAgIH1cbiAgICBjYXNlIFVQREFURV9USUNLRVQ6IHtcbiAgICAgIGNvbnN0IHRpY2tldERhdGEgPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgY29uc3QgbmV3T3JkZXJzID0gc3RhdGUubWVtYmVyT3JkZXJzLm1hcCgob3JkZXIpID0+IHtcbiAgICAgICAgY29uc3QgbmV3VGlja2V0cyA9IG9yZGVyLm1lbWJlclRpY2tldHMubWFwKCh0aWNrZXQpID0+IHtcbiAgICAgICAgICBpZiAodGlja2V0LmlkID09PSB0aWNrZXREYXRhLmlkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGlja2V0RGF0YTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRpY2tldDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHsgLi4ub3JkZXIsIG1lbWJlclRpY2tldHM6IG5ld1RpY2tldHMgfTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbWVtYmVyT3JkZXJzOiBuZXdPcmRlcnMgfTtcbiAgICB9XG4gICAgY2FzZSBBU1NJR05fVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXREYXRhID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IG5ld09yZGVycyA9IHN0YXRlLm1lbWJlck9yZGVycy5tYXAoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1RpY2tldHMgPSBvcmRlci5tZW1iZXJUaWNrZXRzLm1hcCgodGlja2V0KSA9PiB7XG4gICAgICAgICAgaWYgKHRpY2tldC5pZCA9PT0gdGlja2V0RGF0YS5pZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRpY2tldERhdGE7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aWNrZXQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB7IC4uLm9yZGVyLCBtZW1iZXJUaWNrZXRzOiBuZXdUaWNrZXRzIH07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGN1cnJlbnRUaWNrZXQ6IHRpY2tldERhdGEsIG1lbWJlck9yZGVyczogbmV3T3JkZXJzIH07XG4gICAgfVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFdpZGdldFJlZHVjZXI7XG4iLCJpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjb25maWd1cmVTdG9yZSB9IGZyb20gXCJAcmVkdXhqcy90b29sa2l0XCI7XG5pbXBvcnQge1xuICBwZXJzaXN0U3RvcmUsXG4gIHBlcnNpc3RSZWR1Y2VyLFxuICBGTFVTSCxcbiAgUkVIWURSQVRFLFxuICBQQVVTRSxcbiAgUEVSU0lTVCxcbiAgUFVSR0UsXG4gIFJFR0lTVEVSXG59IGZyb20gXCJyZWR1eC1wZXJzaXN0XCI7XG5pbXBvcnQgc3RvcmFnZSBmcm9tIFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiO1xuaW1wb3J0IHsgY29tYmluZVJlZHVjZXJzIH0gZnJvbSBcInJlZHV4XCI7XG5pbXBvcnQgV2lkZ2V0UmVkdWNlciBmcm9tIFwiLi9yZWR1Y2VyXCI7XG5cbmV4cG9ydCBjb25zdCBnZXRTdG9yZSA9ICh7XG4gIGNsaWVudElkLFxuICBsb2dpblVybCxcbiAgc3VtbWl0LFxuICBhcGlCYXNlVXJsLFxuICB1cGRhdGVQcm9maWxlXG59KSA9PiB7XG4gIC8vIHRvIGFkZCBvdGhlciByZWR1Y2VycyBsYXRlclxuICBjb25zdCByZWR1Y2VycyA9IGNvbWJpbmVSZWR1Y2Vycyh7XG4gICAgd2lkZ2V0U3RhdGU6IFdpZGdldFJlZHVjZXJcbiAgfSk7XG5cbiAgY29uc3Qgc3RvcmUgPSBjb25maWd1cmVTdG9yZSh7XG4gICAgcmVkdWNlcjogcGVyc2lzdFJlZHVjZXIoXG4gICAgICB7XG4gICAgICAgIGtleTogYHJvb3RfbXlfb3JkZXJzX3RpY2tldHNfJHtjbGllbnRJZH1gLFxuICAgICAgICBzdG9yYWdlXG4gICAgICB9LFxuICAgICAgcmVkdWNlcnNcbiAgICApLFxuICAgIG1pZGRsZXdhcmU6IChnZXREZWZhdWx0TWlkZGxld2FyZSkgPT5cbiAgICAgIGdldERlZmF1bHRNaWRkbGV3YXJlKHtcbiAgICAgICAgdGh1bms6IHtcbiAgICAgICAgICBleHRyYUFyZ3VtZW50OiB7XG4gICAgICAgICAgICBjbGllbnRJZCxcbiAgICAgICAgICAgIGFwaUJhc2VVcmwsXG4gICAgICAgICAgICBzdW1taXQsXG4gICAgICAgICAgICBsb2dpblVybCxcbiAgICAgICAgICAgIHVwZGF0ZVByb2ZpbGVcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGltbXV0YWJsZUNoZWNrOiBmYWxzZSxcbiAgICAgICAgc2VyaWFsaXphYmxlQ2hlY2s6IHtcbiAgICAgICAgICBpZ25vcmVkQWN0aW9uczogW0ZMVVNILCBSRUhZRFJBVEUsIFBBVVNFLCBQRVJTSVNULCBQVVJHRSwgUkVHSVNURVJdXG4gICAgICAgIH1cbiAgICAgIH0pXG4gIH0pO1xuXG4gIHJldHVybiBzdG9yZTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VJbml0U3RvcmUgPSAoY29uZmlnKSA9PiB7XG4gIGNvbnN0IHN0b3JlID0gdXNlTWVtbygoKSA9PiBnZXRTdG9yZShjb25maWcpLCBbXSk7XG4gIGNvbnN0IHBlcnNpc3RvciA9IHVzZU1lbW8oKCkgPT4gcGVyc2lzdFN0b3JlKHN0b3JlKSwgW3N0b3JlXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBzdG9yZSxcbiAgICBwZXJzaXN0b3JcbiAgfTtcbn07XG4iLCJpbXBvcnQge1xuICBpbml0TG9nT3V0LFxuICBnZXRBY2Nlc3NUb2tlblxufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCI7XG5pbXBvcnQgKiBhcyBTZW50cnkgZnJvbSBcIkBzZW50cnkvcmVhY3RcIjtcblxuZXhwb3J0IGNvbnN0IGdldEFjY2Vzc1Rva2VuU2FmZWx5ID0gYXN5bmMgKCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBnZXRBY2Nlc3NUb2tlbigpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5sb2coXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXQ6OmdldEFjY2Vzc1Rva2VuU2FmZWx5IGVycm9yOiBcIiwgZSk7XG4gICAgU2VudHJ5LmNhcHR1cmVFeGNlcHRpb24oZSk7XG4gICAgaW5pdExvZ091dCgpO1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICB9XG59O1xuIiwiZXhwb3J0IGNvbnN0IExBU1RfSE9VUl9PRl8yNF9IT1VSID0gMjM7XG5leHBvcnQgY29uc3QgTEFTVF9NSU5VVEVfT0ZfSE9VUiA9IDU5O1xuZXhwb3J0IGNvbnN0IE9ORV9QQUdFX05FWFQgPSAxO1xuZXhwb3J0IGNvbnN0IE1JTExJU0VDX1RPX1NFQyA9IDEwMDA7XG5leHBvcnQgY29uc3QgT05FX0RBWSA9IDE7XG5leHBvcnQgY29uc3QgREVGQVVMVF9JVEVNU19QRVJfUEFHRSA9IDU7XG5leHBvcnQgY29uc3QgRklSU1RfUEFHRSA9IDE7XG5leHBvcnQgY29uc3QgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UID0gNTtcbmV4cG9ydCBjb25zdCBTVEVQX09ORSA9IDE7XG5leHBvcnQgY29uc3QgU1RFUF9UV08gPSAyO1xuZXhwb3J0IGNvbnN0IFNURVBfVEhSRUUgPSAzO1xuXG5leHBvcnQgY29uc3QgU1RBVFVTX0NPTVBMRVRFID0gXCJTVEFUVVNfQ09NUExFVEVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfSU5DT01QTEVURSA9IFwiU1RBVFVTX0lOQ09NUExFVEVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUEVORElORyA9IFwiU1RBVFVTX1BFTkRJTkdcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfQ0FOQ0VMTEVEID0gXCJTVEFUVVNfQ0FOQ0VMTEVEXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0VSUk9SID0gXCJTVEFUVVNfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUFJPQ0VTU0lORyA9IFwiU1RBVFVTX1BST0NFU1NJTkdcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfVU5BU1NJR05FRCA9IFwiU1RBVFVTX1VOQVNTSUdORURcIjtcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUEVORElORyA9IFwiU1RBVFVTX1JFRlVORF9QRU5ESU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9BUFBST1ZFRCA9IFwiU1RBVFVTX1JFRlVORF9BUFBST1ZFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUkVKRUNURUQgPSBcIlNUQVRVU19SRUZVTkRfUkVKRUNURURcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMgPSBcIlJlcXVlc3RlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTEMgPSBcIkFwcHJvdmVkXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQyA9IFwiUmVqZWN0ZWRcIjtcblxuZXhwb3J0IGNvbnN0IEpFU1RfVElNRU9VVF9JTl9NSUxMSVNFQyA9IDEwMDAwO1xuXG5leHBvcnQgY29uc3QgT05FX0lURU0gPSAxO1xuZXhwb3J0IGNvbnN0IFRXT19JVEVNID0gMjtcbmV4cG9ydCBjb25zdCBGSVZFX0lURU0gPSA1O1xuZXhwb3J0IGNvbnN0IFNJWF9JVEVNID0gNjtcblxuZXhwb3J0IGNvbnN0IFBST01JU0VfQkFUQ0hfTElNSVQgPSAxMDtcbmV4cG9ydCBjb25zdCBGSUZUWV9QRVJfUEFHRSA9IDUwO1xuXG5leHBvcnQgY29uc3QgRVJST1JfQ09ERVMgPSB7XG4gIDQwMTogNDAxLFxuICA0MDM6IDQwMSxcbiAgNDEyOiA0MDEsXG4gIDUwMDogNTAwXG59O1xuXG5leHBvcnQgY29uc3QgVEFCUyA9IHtcbiAgT1JERVJTOiBcIk9SREVSU1wiLFxuICBUSUNLRVRTOiBcIlRJQ0tFVFNcIlxufTtcbiIsImltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7XG4gIExBU1RfSE9VUl9PRl8yNF9IT1VSLFxuICBMQVNUX01JTlVURV9PRl9IT1VSLFxuICBNSUxMSVNFQ19UT19TRUMsXG4gIEZJUlNUX1BBR0Vcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRDdXJyZW5jeSA9ICh2YWx1ZSwgeyBsb2NhbGUgPSBcImVuLVVTXCIsIC4uLm9wdGlvbnMgfSkgPT4ge1xuICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICBjdXJyZW5jeTogXCJVU0RcIixcbiAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyXG4gIH07XG5cbiAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwge1xuICAgIHN0eWxlOiBcImN1cnJlbmN5XCIsXG4gICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgLi4ub3B0aW9uc1xuICB9KTtcblxuICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rm9ybWF0dGVkRGF0ZSA9IChkYXRldGltZSwgdGltZVpvbmUpID0+IHtcbiAgaWYgKHRpbWVab25lKVxuICAgIHJldHVybiBtb21lbnRcbiAgICAgIC50eihkYXRldGltZSAqIE1JTExJU0VDX1RPX1NFQywgdGltZVpvbmUpXG4gICAgICAuZm9ybWF0KFwiTU1NTSBERCwgWVlZWVwiKTtcblxuICByZXR1cm4gbW9tZW50LnVuaXgoZGF0ZXRpbWUpLmZvcm1hdChcIk1NTU0gREQsIFlZWVlcIik7XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlT3JkZXJUb3RhbHMgPSAoeyBvcmRlciwgc3VtbWl0IH0pID0+IHtcbiAgaWYgKCFvcmRlciB8fCAhc3VtbWl0KSByZXR1cm4ge307XG4gIGNvbnN0IHRpY2tldHMgPSBvcmRlcj8ubWVtYmVyVGlja2V0cztcbiAgaWYgKCF0aWNrZXRzKSByZXR1cm4ge307XG5cbiAgY29uc3QgeyByZWZ1bmRlZF9hbW91bnQsIGRpc2NvdW50X2Ftb3VudCwgdGF4ZXNfYW1vdW50LCBhbW91bnQgfSA9IG9yZGVyO1xuICBjb25zdCB7IHRpY2tldF90eXBlcyB9ID0gc3VtbWl0O1xuXG4gIGNvbnN0IHRpY2tldFN1bW1hcnkgPSBbXTtcbiAgbGV0IHB1cmNoYXNlVGlja2V0VG90YWwgPSAwO1xuXG4gIGNvbnN0IGN1cnJlbmN5T2JqZWN0ID0geyBjdXJyZW5jeTogb3JkZXIuY3VycmVuY3kgfTtcblxuICBPYmplY3Qua2V5cyhvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGUpLm1hcCgodGlja2V0KSA9PiB7XG4gICAgY29uc3QgdGlja2V0VHlwZSA9IHRpY2tldF90eXBlcz8uZmluZCgodHQpID0+IHR0Lm5hbWUgPT09IHRpY2tldCk7XG4gICAgaWYgKCF0aWNrZXRUeXBlKSByZXR1cm4gbnVsbDtcbiAgICB0aWNrZXRTdW1tYXJ5LnB1c2goe1xuICAgICAgdGlja2V0X3R5cGVfaWQ6IHRpY2tldFR5cGUuaWQsXG4gICAgICB0aWNrZXRfdHlwZTogdGlja2V0VHlwZSxcbiAgICAgIG5hbWU6IHRpY2tldCxcbiAgICAgIHF0eTogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF1cbiAgICB9KTtcbiAgICBwdXJjaGFzZVRpY2tldFRvdGFsICs9XG4gICAgICB0aWNrZXRUeXBlLmNvc3QgKiBvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGVbdGlja2V0XTtcblxuICAgIHJldHVybiB0aWNrZXRTdW1tYXJ5O1xuICB9KTtcblxuICBjb25zdCBwdXJjaGFzZVRvdGFsID0gZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUaWNrZXRUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIGNvbnN0IGRpc2NvdW50VG90YWwgPSBmb3JtYXRDdXJyZW5jeShkaXNjb3VudF9hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgcmVmdW5kVG90YWwgPSBmb3JtYXRDdXJyZW5jeShyZWZ1bmRlZF9hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgdGF4ZXNUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHRheGVzX2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCBhbW91bnRUb3RhbCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvcmRlciwgXCJhbW91bnRcIilcbiAgICA/IGZvcm1hdEN1cnJlbmN5KGFtb3VudCwgY3VycmVuY3lPYmplY3QpXG4gICAgOiBmb3JtYXRDdXJyZW5jeShwdXJjaGFzZVRvdGFsLCBjdXJyZW5jeU9iamVjdCk7XG5cbiAgcmV0dXJuIHtcbiAgICBkaXNjb3VudFRvdGFsLFxuICAgIHJlZnVuZFRvdGFsLFxuICAgIHRheGVzVG90YWwsXG4gICAgYW1vdW50VG90YWwsXG4gICAgdGlja2V0U3VtbWFyeVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE9yZGVyVGlja2V0cyA9IChtZW1iZXJPcmRlcnMsIG9yZGVySWQpID0+IHtcbiAgY29uc3Qgb3JkZXJzID0gbWVtYmVyT3JkZXJzLmZpbHRlcigobykgPT4gby5pZCA9PT0gb3JkZXJJZCk7XG4gIHJldHVybiBvcmRlcnNbMF0/Lm1lbWJlclRpY2tldHM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzID0gKHRzKSA9PiB7XG4gIGNvbnN0IGxvd2VyID0gdHMuc2V0SG91cnMoMCwgMCwgMCwgMCkgLyBNSUxMSVNFQ19UT19TRUM7XG4gIGNvbnN0IHVwcGVyID1cbiAgICB0cy5zZXRIb3VycyhMQVNUX0hPVVJfT0ZfMjRfSE9VUiwgTEFTVF9NSU5VVEVfT0ZfSE9VUiwgMCwgMCkgL1xuICAgIE1JTExJU0VDX1RPX1NFQztcbiAgcmV0dXJuIHtcbiAgICBsb3dlcixcbiAgICB1cHBlclxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDdXJyZW50VGltZSA9ICgpID0+XG4gIE1hdGgucm91bmQoK25ldyBEYXRlKCkgLyBNSUxMSVNFQ19UT19TRUMpO1xuXG5leHBvcnQgY29uc3QgZ2V0Tm93ID0gKCkgPT4gKGRpc3BhdGNoLCBnZXRTdGF0ZSkgPT4ge1xuICBjb25zdCB7IHRpbWVyU3RhdGUgfSA9IGdldFN0YXRlKCk7XG4gIHJldHVybiB0aW1lclN0YXRlPy5ub3dVdGMgPT0gbnVsbCA/IGRlZmF1bHRDdXJyZW50VGltZSgpIDogdGltZXJTdGF0ZT8ubm93VXRjO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZU5vdyA9ICgpID0+IHtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIHJldHVybiBkaXNwYXRjaChnZXROb3coKSk7XG59O1xuXG4vKipcbiAqIEBwYXJhbSByZXF1ZXN0ZWRQYWdlXG4gKiBAcGFyYW0gY3VycmVudFBhZ2VcbiAqIEBwYXJhbSBsYXN0UGFnZVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBjb25zdCBzaG91bGRGZXRjaERhdGEgPSAocmVxdWVzdGVkUGFnZSwgY3VycmVudFBhZ2UsIGxhc3RQYWdlKSA9PiB7XG4gIGxldCByZXMgPSB0cnVlO1xuXG4gIGlmIChyZXF1ZXN0ZWRQYWdlIDw9IDApIHJlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IGlzU2FtZVBhZ2UgPSBjdXJyZW50UGFnZSA+IDAgJiYgcmVxdWVzdGVkUGFnZSA9PT0gY3VycmVudFBhZ2U7XG4gIGNvbnN0IGlzTGFzdFBhZ2UgPSBjdXJyZW50UGFnZSA+IDAgJiYgY3VycmVudFBhZ2UgPT09IGxhc3RQYWdlO1xuXG4gIGlmIChpc1NhbWVQYWdlIHx8IGlzTGFzdFBhZ2UpIHJlcyA9IGZhbHNlO1xuXG4gIGlmIChyZXF1ZXN0ZWRQYWdlID09PSBGSVJTVF9QQUdFKSByZXMgPSB0cnVlO1xuXG4gIGNvbnNvbGUubG9nKFxuICAgIGBteS1vcmRlcnMtdGlja2V0LXdpZGdldDo6dXRpbHM6OnNob3VsZEZldGNoRGF0YSByZXF1ZXN0ZWRQYWdlICR7cmVxdWVzdGVkUGFnZX0gY3VycmVudFBhZ2UgJHtjdXJyZW50UGFnZX0gbGFzdFBhZ2UgJHtsYXN0UGFnZX0gcmVzICR7cmVzfWBcbiAgKTtcblxuICByZXR1cm4gcmVzO1xufTtcblxuLyoqXG4gKiBAcGFyYW0gY3VycmVudFBhZ2VcbiAqIEBwYXJhbSBsYXN0UGFnZVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBjb25zdCBoYXNNb3JlMkZldGNoID0gKGN1cnJlbnRQYWdlLCBsYXN0UGFnZSkgPT4ge1xuICBjb25zdCByZXMgPSBjdXJyZW50UGFnZSA+IDAgJiYgY3VycmVudFBhZ2UgPCBsYXN0UGFnZTtcbiAgY29uc29sZS5sb2coXG4gICAgYG15LW9yZGVycy10aWNrZXQtd2lkZ2V0Ojp1dGlsczo6aGFzTW9yZTJGZXRjaCBjdXJyZW50UGFnZSAke2N1cnJlbnRQYWdlfSBsYXN0UGFnZSAke2xhc3RQYWdlfSByZXMgJHtyZXN9YFxuICApO1xuICByZXR1cm4gcmVzO1xufTtcblxuLyoqXG4gKiBAcGFyYW0gY3VycmVudFBhZ2VcbiAqIEBwYXJhbSBkYXRhXG4gKiBAcGFyYW0gdG90YWxcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgY29uc3QgaGFzTG9hZGVkQWxsRGF0YSA9IChjdXJyZW50UGFnZSwgZGF0YSwgdG90YWwpID0+IHtcbiAgbGV0IHJlcyA9IGZhbHNlO1xuICBjb25zdCBkYXRhTGVuZ3RoID0gQXJyYXkuaXNBcnJheShkYXRhKSA/IGRhdGEubGVuZ3RoIDogMDtcbiAgLy8gd2UgYWxyZWFkeSBsb2FkZWQgYWxsICBkYXRhICggZmlyc3QgcGFnZSBpcyBhbHdheXMgcmVsb2FkZWQgaXQgKVxuICBpZiAoY3VycmVudFBhZ2UgPiBGSVJTVF9QQUdFICYmIGRhdGFMZW5ndGggPiAwICYmIGRhdGFMZW5ndGggPT09IHRvdGFsKVxuICAgIHJlcyA9IHRydWU7XG4gIGNvbnNvbGUubG9nKFxuICAgIGBteS1vcmRlcnMtdGlja2V0LXdpZGdldDo6dXRpbHM6Omhhc0xvYWRlZEFsbERhdGEgY3VycmVudFBhZ2UgJHtjdXJyZW50UGFnZX0gZGF0YS5sZW5ndGggJHtkYXRhTGVuZ3RofSByZXMgJHtyZXN9YFxuICApO1xuICByZXR1cm4gcmVzO1xufTtcbiIsImltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDLCBPTkVfREFZIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyB1c2VOb3cgfSBmcm9tIFwiLlwiO1xuXG5leHBvcnQgY29uc3QgY2hlY2tTdW1taXRQYXN0ID0gKHN1bW1pdCwgbm93KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICBjb25zdCByZWFzc2lnbl9kYXRlID1cbiAgICBzdW1taXQ/LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgJiZcbiAgICBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSA8IHN1bW1pdC5lbmRfZGF0ZVxuICAgICAgPyBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZVxuICAgICAgOiBzdW1taXQuZW5kX2RhdGU7XG5cbiAgcmV0dXJuIG5vdyA+IHJlYXNzaWduX2RhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tTdW1taXRTdGFydGVkID0gKHN1bW1pdCwgbm93KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gc3VtbWl0LnN0YXJ0X2RhdGUgPCBub3c7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0RGF5c0RpZmYgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcbiAgY29uc3Qgc3RhcnREYXkgPSBtb21lbnQoc3VtbWl0LnN0YXJ0X2RhdGUgKiBNSUxMSVNFQ19UT19TRUMpLnR6KFxuICAgIHN1bW1pdC50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZW5kRGF5ID0gbW9tZW50KHN1bW1pdC5lbmRfZGF0ZSAqIE1JTExJU0VDX1RPX1NFQykudHooXG4gICAgc3VtbWl0LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBkYXlzID0gZW5kRGF5Py5kaWZmKHN0YXJ0RGF5LCBcImRheXNcIik7XG4gIHJldHVybiB7XG4gICAgc3RhcnREYXksXG4gICAgZW5kRGF5LFxuICAgIGRheXNcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRGb3JtYXR0ZWREYXRlID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHsgc3RhcnREYXksIGVuZERheSwgZGF5cyB9ID0gZ2V0U3VtbWl0RGF5c0RpZmYoc3VtbWl0KTtcbiAgaWYgKCFzdGFydERheSB8fCAhZW5kRGF5KSByZXR1cm4gbnVsbDtcbiAgbGV0IGZvcm1hdFN0YXJ0RGF0ZSA9IFwiTU1NTSBERCwgWVlZWVwiO1xuICBsZXQgZm9ybWF0RW5kRGF0ZSA9IFwiTU1NTSBERCwgWVlZWVwiO1xuICBpZiAoc3RhcnREYXkueWVhcigpID09PSBlbmREYXkueWVhcigpKSBmb3JtYXRTdGFydERhdGUgPSBcIk1NTU0gRERcIjtcbiAgaWYgKHN0YXJ0RGF5Lm1vbnRoKCkgPT09IGVuZERheS5tb250aCgpKSBmb3JtYXRFbmREYXRlID0gXCJERCwgWVlZWVwiO1xuXG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IHN0YXJ0RGF5LmZvcm1hdChmb3JtYXRTdGFydERhdGUpO1xuICBjb25zdCBlbmREYXRlID0gZW5kRGF5LmZvcm1hdChmb3JtYXRFbmREYXRlKTtcblxuICBpZiAoZGF5cyA+IE9ORV9EQVkpIHJldHVybiBgJHtzdGFydERhdGV9IC0gJHtlbmREYXRlfWA7XG5cbiAgcmV0dXJuIHN0YXJ0RGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRMb2NhdGlvbiA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IGxvY2F0aW9uID0gc3VtbWl0LmxvY2F0aW9ucz8uZmluZChcbiAgICAobCkgPT4gbC5jbGFzc19uYW1lID09PSBcIlN1bW1pdFZlbnVlXCIgJiYgbC5pc19tYWluID09PSB0cnVlXG4gICk7XG5cbiAgaWYgKCFsb2NhdGlvbikgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIGAke2xvY2F0aW9uLmNpdHl9LCAke2xvY2F0aW9uLmNvdW50cnl9YDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRSZWFzc2lnbkRhdGUgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgJiZcbiAgICBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSA8IHN1bW1pdC5lbmRfZGF0ZVxuICAgID8gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGVcbiAgICA6IHN1bW1pdC5lbmRfZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VTdW1taXREZXRhaWxzID0gKHsgc3VtbWl0IH0pID0+IHtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG5cbiAgaWYgKCFzdW1taXQpIHJldHVybiB7fTtcblxuICBjb25zdCBsb2NhdGlvbiA9IGdldFN1bW1pdExvY2F0aW9uKHN1bW1pdCk7XG4gIGNvbnN0IGZvcm1hdHRlZERhdGUgPSBnZXRTdW1taXRGb3JtYXR0ZWREYXRlKHN1bW1pdCk7XG4gIGNvbnN0IHJlYXNzaWduRGF0ZSA9IGdldFN1bW1pdFJlYXNzaWduRGF0ZShzdW1taXQpO1xuICBjb25zdCBmb3JtYXR0ZWRSZWFzc2lnbkRhdGUgPSBtb21lbnQudHooXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIHN1bW1pdC50aW1lX3pvbmU/LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBkYXlzVW50aWxSZWFzc2lnbkRlYWRsaW5lID0gZ2V0U3VtbWl0RGF5c0RpZmYoXG4gICAgbm93LFxuICAgIHJlYXNzaWduRGF0ZSxcbiAgICBzdW1taXQudGltZV96b25lPy5uYW1lXG4gICk7XG5cbiAgY29uc3QgaXNQYXN0ID0gY2hlY2tTdW1taXRQYXN0KHN1bW1pdCwgbm93KTtcbiAgY29uc3QgaXNTdGFydGVkID0gY2hlY2tTdW1taXRTdGFydGVkKHN1bW1pdCwgbm93KTtcbiAgY29uc3QgaXNSZWFzc2lnbmFibGUgPSByZWFzc2lnbkRhdGUgPiBub3c7XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBzdW1taXQ/Lm5hbWUsXG4gICAgbm93LFxuICAgIGxvY2F0aW9uLFxuICAgIGZvcm1hdHRlZERhdGUsXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIGZvcm1hdHRlZFJlYXNzaWduRGF0ZSxcbiAgICBkYXlzVW50aWxSZWFzc2lnbkRlYWRsaW5lLFxuICAgIGlzUGFzdCxcbiAgICBpc1N0YXJ0ZWQsXG4gICAgaXNSZWFzc2lnbmFibGVcbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyB5dXAgZnJvbSBcInl1cFwiO1xuaW1wb3J0IGkxOG4gZnJvbSBcIi4uL2kxOG5cIjtcbmltcG9ydCB7XG4gIFNUQVRVU19DQU5DRUxMRUQsXG4gIFNUQVRVU19DT01QTEVURSxcbiAgU1RBVFVTX0lOQ09NUExFVEUsXG4gIFNUQVRVU19VTkFTU0lHTkVELFxuICBTVEFUVVNfUkVGVU5EX1BFTkRJTkcsXG4gIFNUQVRVU19SRUZVTkRfQVBQUk9WRUQsXG4gIFNUQVRVU19SRUZVTkRfUkVKRUNURUQsXG4gIFNUQVRVU19SRUZVTkRfUEVORElOR19MQyxcbiAgU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQyxcbiAgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQ1xufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbnN0YW50c1wiO1xuaW1wb3J0IHtcbiAgY2hlY2tJZlZhbHVlTWF0Y2gsXG4gIGdldFR5cGVJbml0aWFsVmFsdWUsXG4gIHRvU2x1Z1xufSBmcm9tIFwiLi4vY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdFxufSBmcm9tIFwiLi4vY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IHN0YXR1c0RhdGEgPSB7XG4gIFtTVEFUVVNfVU5BU1NJR05FRF06IHtcbiAgICB0eXBlOiBTVEFUVVNfVU5BU1NJR05FRCxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLnVuYXNzaWduZWRcIilcbiAgfSxcbiAgW1NUQVRVU19JTkNPTVBMRVRFXToge1xuICAgIHR5cGU6IFNUQVRVU19JTkNPTVBMRVRFLFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuaW5jb21wbGV0ZVwiKVxuICB9LFxuICBbU1RBVFVTX0NPTVBMRVRFXToge1xuICAgIHR5cGU6IFNUQVRVU19DT01QTEVURSxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmNvbXBsZXRlXCIpXG4gIH0sXG4gIFtTVEFUVVNfQ0FOQ0VMTEVEXToge1xuICAgIHR5cGU6IFNUQVRVU19DQU5DRUxMRUQsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5jYW5jZWxsZWRcIilcbiAgfVxufTtcbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRTdGF0dXNLZXkgPSAodGlja2V0KSA9PiB7XG4gIGlmICghdGlja2V0LmlzX2FjdGl2ZSkgcmV0dXJuIFNUQVRVU19DQU5DRUxMRUQ7XG5cbiAgaWYgKHRpY2tldC5vd25lcl9pZCA9PT0gMCkgcmV0dXJuIFNUQVRVU19VTkFTU0lHTkVEO1xuXG4gIGlmICghdGlja2V0Lm93bmVyPy5maXJzdF9uYW1lIHx8ICF0aWNrZXQub3duZXI/Lmxhc3RfbmFtZSlcbiAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG5cbiAgaWYgKHRpY2tldC5vd25lciAmJiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCIpXG4gICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuXG4gIGlmICh0aWNrZXQub3duZXIgJiYgdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiQ29tcGxldGVcIilcbiAgICByZXR1cm4gU1RBVFVTX0NPTVBMRVRFO1xuXG4gIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRTdGF0dXNEYXRhID0gKHRpY2tldCwgaXNTdW1taXRQYXN0KSA9PlxuICBzdGF0dXNEYXRhW2dldFRpY2tldFN0YXR1c0tleSh0aWNrZXQsIGlzU3VtbWl0UGFzdCldO1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0Um9sZSA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKCF0aWNrZXQuYmFkZ2UpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHsgZmVhdHVyZXMgfSA9IHRpY2tldC5iYWRnZTtcblxuICBpZiAoZmVhdHVyZXMubGVuZ3RoID4gMClcbiAgICByZXR1cm4gZmVhdHVyZXMubWFwKChmZWF0dXJlKSA9PiBmZWF0dXJlLm5hbWUpLmpvaW4oXCIsIFwiKTtcblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRUeXBlID0gKHRpY2tldCwgc3VtbWl0KSA9PlxuICBzdW1taXQudGlja2V0X3R5cGVzLmZpbmQoKHR5cGUpID0+IHR5cGUuaWQgPT09IHRpY2tldC50aWNrZXRfdHlwZV9pZCk7XG5cbmV4cG9ydCBjb25zdCBpc1RpY2tldFJlZnVuZGFibGUgPSAodGlja2V0KSA9PlxuICB0aWNrZXQ/LmZpbmFsX2Ftb3VudCA+IDAgJiZcbiAgdGlja2V0Py5maW5hbF9hbW91bnQgPiB0aWNrZXQ/LnJlZnVuZGVkX2Ftb3VudCAmJlxuICAhdGlja2V0Py5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQ1xuICApO1xuXG5leHBvcnQgY29uc3QgdGlja2V0c1JlZnVuZGFibGUgPSAodGlja2V0cykgPT5cbiAgdGlja2V0cz8uZmlsdGVyKCh0aWNrZXQpID0+IGlzVGlja2V0UmVmdW5kYWJsZSh0aWNrZXQpKS5sZW5ndGggfHwgMDtcblxuZXhwb3J0IGNvbnN0IGdldFJlZnVuZGVkUmVxdWVzdGVkVGlja2V0cyA9ICh0aWNrZXRzKSA9PlxuICB0aWNrZXRzPy5maWx0ZXIoKHRpY2tldCkgPT5cbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMpXG4gICk7XG5leHBvcnQgY29uc3QgZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyA9ICh0aWNrZXRzKSA9PiB7XG4gIGNvbnN0IGFsbFRpY2tldHMgPSBbXTtcbiAgdGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IHtcbiAgICBpZiAoXG4gICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDXG4gICAgICApIHx8XG4gICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQ1xuICAgICAgKSB8fFxuICAgICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUkVKRUNURURfTENcbiAgICAgIClcbiAgICApIHtcbiAgICAgIGFsbFRpY2tldHMucHVzaCh0aWNrZXQpO1xuICAgIH1cbiAgICByZXR1cm4gdGlja2V0O1xuICB9KTtcbiAgcmV0dXJuIGFsbFRpY2tldHM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRTdGF0dXMgPSAodGlja2V0KSA9PiB7XG4gIGlmIChcbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMpXG4gIClcbiAgICByZXR1cm4gU1RBVFVTX1JFRlVORF9QRU5ESU5HO1xuICBpZiAoXG4gICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDXG4gICAgKVxuICApXG4gICAgcmV0dXJuIFNUQVRVU19SRUZVTkRfQVBQUk9WRUQ7XG4gIGlmIChcbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUkVKRUNURURfTENcbiAgICApXG4gIClcbiAgICByZXR1cm4gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRDtcbiAgcmV0dXJuIFNUQVRVU19SRUZVTkRfUEVORElORztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvciA9ICh0aWNrZXQpID0+IHtcbiAgY29uc3Qgc3RhdHVzID0gZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRTdGF0dXModGlja2V0KTtcbiAgbGV0IHN0YXR1c0NvbG9yID0gXCJcIjtcbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICBjYXNlIFNUQVRVU19SRUZVTkRfUEVORElORzpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJwZW5kaW5nXCI7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFNUQVRVU19SRUZVTkRfQVBQUk9WRUQ6XG4gICAgICBzdGF0dXNDb2xvciA9IFwiYXBwcm92ZWRcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRDpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJyZWplY3RlZFwiO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJwZW5kaW5nXCI7XG4gIH1cbiAgcmV0dXJuIHN0YXR1c0NvbG9yO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVWYWxpZGF0aW9uID0gKHR5cGUsIG5hbWUsIGlzUmVxdWlyZWQpID0+IHtcbiAgbGV0IHNjaGVtYTtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICBzY2hlbWEgPSB5dXAuYm9vbCgpLm9uZU9mKFt0cnVlXSwgaTE4bi50KFwidmFsaWRhdGlvbi5jaGVja2JveC5yZXF1aXJlZFwiKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICBzY2hlbWEgPSB5dXAuYXJyYXkoKS5vZih5dXAuc3RyaW5nKCkpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgaWYgKGlzUmVxdWlyZWQpIHtcbiAgICBzY2hlbWEgPSBzY2hlbWEucmVxdWlyZWQoYCR7bmFtZX0gaXMgcmVxdWlyZWRgKTtcbiAgfVxuXG4gIHJldHVybiBzY2hlbWE7XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VBbnN3ZXJzID0gKFxuICBvd25lcixcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGFuc3dlcnMsXG4gIG1hbmFnZXIsXG4gIGluY2x1ZGVEZWxlZ2F0aW9uLFxuICBpbmNsdWRlQXR0ZW5kZWVJbmZvLFxuICBpbmNsdWRlRGlzY2xhaW1lcixcbiAgb25seVJlbGV2YW50ID0gZmFsc2VcbikgPT4ge1xuICBjb25zdCBpbml0aWFsVmFsdWVzID0ge307XG5cbiAgaWYgKGluY2x1ZGVBdHRlbmRlZUluZm8pIHtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSB8fCBvd25lci5lbWFpbCB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gfHwgb3duZXIuZmlyc3RfbmFtZSB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdIHx8IG93bmVyLmxhc3RfbmFtZSB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSB8fCBvd25lci5jb21wYW55O1xuICB9XG5cbiAgaWYgKGluY2x1ZGVEaXNjbGFpbWVyKSB7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXSB8fFxuICAgICAgb3duZXIuZGlzY2xhaW1lcl9hY2NlcHRlZDtcbiAgfVxuXG4gIGlmIChpbmNsdWRlRGVsZWdhdGlvbikge1xuICAgIGluaXRpYWxWYWx1ZXMuZGVsZWdhdGVkX2ZpcnN0X25hbWUgPVxuICAgICAgYW5zd2Vycy5kZWxlZ2F0ZWRfZmlyc3RfbmFtZSB8fCBtYW5hZ2VyPy5maXJzdF9uYW1lIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlcy5kZWxlZ2F0ZWRfbGFzdF9uYW1lID1cbiAgICAgIGFuc3dlcnMuZGVsZWdhdGVkX2xhc3RfbmFtZSB8fCBtYW5hZ2VyPy5sYXN0X25hbWUgfHwgXCJcIjtcbiAgfVxuXG4gIGV4dHJhUXVlc3Rpb25zLmZvckVhY2goKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICBjb25zdCBhbnN3ZXIgPSBhbnN3ZXJzW3F1ZXN0aW9uU2x1Z107XG4gICAgaW5pdGlhbFZhbHVlc1txdWVzdGlvblNsdWddID0gYW5zd2VyIHx8IGdldFR5cGVJbml0aWFsVmFsdWUocSk7XG5cbiAgICBpZiAocS5zdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHEuc3ViX3F1ZXN0aW9uX3J1bGVzLmZvckVhY2goKHJ1bGUpID0+IHtcbiAgICAgICAgY29uc3Qgc3ViUXVlc3Rpb25TbHVnID0gdG9TbHVnKFxuICAgICAgICAgIHJ1bGUuc3ViX3F1ZXN0aW9uLm5hbWUsXG4gICAgICAgICAgcnVsZS5zdWJfcXVlc3Rpb24uaWRcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgc3ViQW5zd2VyID0gYW5zd2Vyc1tzdWJRdWVzdGlvblNsdWddO1xuICAgICAgICBjb25zdCBtYXRjaCA9IGNoZWNrSWZWYWx1ZU1hdGNoKGFuc3dlciwgcnVsZS5hbnN3ZXJfdmFsdWVzKTtcblxuICAgICAgICBpZiAoIW9ubHlSZWxldmFudCB8fCBtYXRjaCkge1xuICAgICAgICAgIGluaXRpYWxWYWx1ZXNbc3ViUXVlc3Rpb25TbHVnXSA9XG4gICAgICAgICAgICBzdWJBbnN3ZXIgfHwgZ2V0VHlwZUluaXRpYWxWYWx1ZShydWxlLnN1Yl9xdWVzdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGluaXRpYWxWYWx1ZXM7XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRWYWxpZGF0aW9uU2NoZW1hID0gKFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgaW5jbHVkZUF0dGVuZGVlSW5mbyxcbiAgYWxsb3dzRGVsZWdhdGlvbixcbiAgZGlzY2xhaW1lck1hbmRhdG9yeVxuKSA9PiB7XG4gIGNvbnN0IHNjaGVtYSA9IHt9O1xuXG4gIGlmIChpbmNsdWRlQXR0ZW5kZWVJbmZvKSB7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSA9IHl1cFxuICAgICAgLnN0cmluZyhpMThuLnQoXCJ2YWxpZGF0aW9uLmVtYWlsLnN0cmluZ1wiKSlcbiAgICAgIC5lbWFpbChpMThuLnQoXCJ2YWxpZGF0aW9uLmVtYWlsLmZvcm1hdFwiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmVtYWlsLnJlcXVpcmVkXCIpKTtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSA9IHl1cFxuICAgICAgLnN0cmluZyhpMThuLnQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5yZXF1aXJlZFwiKSk7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXSA9IHl1cFxuICAgICAgLnN0cmluZyhpMThuLnQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5sYXN0X25hbWUucmVxdWlyZWRcIikpO1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSA9IHl1cC5sYXp5KCh2YWx1ZSkgPT5cbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIlxuICAgICAgICA/IHl1cFxuICAgICAgICAgICAgLm9iamVjdCgpXG4gICAgICAgICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5jb21wYW55LnJlcXVpcmVkXCIpKVxuICAgICAgICAgICAgLnR5cGVFcnJvcihpMThuLnQoXCJ2YWxpZGF0aW9uLnJlcXVpcmVkX2ZpZWxkXCIpKVxuICAgICAgICA6IHl1cC5zdHJpbmcoKS5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmNvbXBhbnkucmVxdWlyZWRcIikpXG4gICAgKTtcbiAgfVxuXG4gIGlmIChkaXNjbGFpbWVyTWFuZGF0b3J5KSB7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gPSB5dXBcbiAgICAgIC5ib29sKClcbiAgICAgIC5vbmVPZihbdHJ1ZV0sIGkxOG4udChcInZhbGlkYXRpb24uY2hlY2tib3gucmVxdWlyZWRcIikpO1xuICB9XG5cbiAgaWYgKGFsbG93c0RlbGVnYXRpb24pIHtcbiAgICBzY2hlbWEuZGVsZWdhdGVkX2ZpcnN0X25hbWUgPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUucmVxdWlyZWRcIikpO1xuXG4gICAgc2NoZW1hLmRlbGVnYXRlZF9sYXN0X25hbWUgPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5sYXN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnJlcXVpcmVkXCIpKTtcbiAgfVxuXG4gIGV4dHJhUXVlc3Rpb25zLmZvckVhY2goKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICBzY2hlbWFbcXVlc3Rpb25TbHVnXSA9IGdldFR5cGVWYWxpZGF0aW9uKHEudHlwZSwgcS5uYW1lLCBxLm1hbmRhdG9yeSk7XG5cbiAgICBpZiAocS5zdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHEuc3ViX3F1ZXN0aW9uX3J1bGVzLmZvckVhY2goKHJ1bGUpID0+IHtcbiAgICAgICAgY29uc3Qgc3ViUXVlc3Rpb24gPSBydWxlLnN1Yl9xdWVzdGlvbjtcbiAgICAgICAgY29uc3Qgc3ViUXVlc3Rpb25TbHVnID0gdG9TbHVnKHN1YlF1ZXN0aW9uLm5hbWUsIHN1YlF1ZXN0aW9uLmlkKTtcbiAgICAgICAgc2NoZW1hW3N1YlF1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsaWRhdGlvbihcbiAgICAgICAgICBzdWJRdWVzdGlvbi50eXBlLFxuICAgICAgICAgIHN1YlF1ZXN0aW9uLm5hbWUsXG4gICAgICAgICAgZmFsc2VcbiAgICAgICAgKVxuICAgICAgICAgIC5udWxsYWJsZSgpXG4gICAgICAgICAgLndoZW4ocXVlc3Rpb25TbHVnLCB7XG4gICAgICAgICAgICBpczogKHF1ZXN0aW9uQW5zKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gY2hlY2tJZlZhbHVlTWF0Y2gocXVlc3Rpb25BbnMsIHJ1bGUuYW5zd2VyX3ZhbHVlcyk7XG4gICAgICAgICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGVuOiAoc2NoKSA9PiBzY2gucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9xdWVzdGlvblwiKSlcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHl1cC5vYmplY3Qoc2NoZW1hKTtcbn07XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiY29weUljb25fX19sSTNlUVwiO1xudmFyIF8yID0gXCJyZXZlcnNlZF9fX3pKem1EXCI7XG52YXIgXzMgPSBcInRydW5jYXRlZF9fX2pXU25VXCI7XG52YXIgXzQgPSBcIndyYXBwZXJfX19tVlBpUlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJjb3B5SWNvblwiLCBfMiBhcyBcInJldmVyc2VkXCIsIF8zIGFzIFwidHJ1bmNhdGVkXCIsIF80IGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJNdWlPdXRsaW5lZElucHV0LW5vdGNoZWRPdXRsaW5lX19fbXhFS1dcIjtcbnZhciBfMiA9IFwiTXVpUGlja2Vyc0NhbGVuZGFySGVhZGVyLWxhYmVsQ29udGFpbmVyX19fTzRzU3NcIjtcbnZhciBfMyA9IFwiY2FsZW5kYXJEaXNwbGF5X19fRjNudUtcIjtcbnZhciBfNCA9IFwiY2xlYW5CdXR0b25fX19xcUR2VVwiO1xudmFyIF81ID0gXCJjb250YWluZXJfX19RZVFZX1wiO1xudmFyIF82ID0gXCJkYXRlUGlja2VyQ29udGFpbmVyX19fWjQybXdcIjtcbnZhciBfNyA9IFwiZGF0ZXBpY2tlckNsb3NlX19fVFo3a0pcIjtcbnZhciBfOCA9IFwiZmlsdGVyQ2hlY2tib3hDb250YWluZXJfX19rVW5XOVwiO1xudmFyIF85ID0gXCJmaWx0ZXJDb250YWluZXJfX19ycnFwOVwiO1xudmFyIF9hID0gXCJmaWx0ZXJEYXRlTGFiZWxfX19KZ2Jjc1wiO1xudmFyIF9iID0gXCJmaWx0ZXJJY29uX19faWlPem9cIjtcbnZhciBfYyA9IFwiZmlsdGVyTGFiZWxfX19za1pQN1wiO1xudmFyIF9kID0gXCJmaWx0ZXJMaXN0Q29udGFpbmVyX19fSURybFNcIjtcbnZhciBfZSA9IFwiZmlsdGVyTnVtQWN0aXZlX19fa21FRUtcIjtcbnZhciBfZiA9IFwiZmlsdGVyU29ydENvbnRhaW5lcl9fX25oTkpzXCI7XG52YXIgXzEwID0gXCJsYWJlbF9fX0xBbWVfXCI7XG52YXIgXzExID0gXCJzaG93RmlsdGVyTGlzdF9fX0lXNHhHXCI7XG52YXIgXzEyID0gXCJzb3J0Q29udGFpbmVyX19fc2I1QmRcIjtcbnZhciBfMTMgPSBcInNvcnRJY29uX19fY19YWmlcIjtcbnZhciBfMTQgPSBcInNvcnRMYWJlbF9fX2RYaU15XCI7XG52YXIgXzE1ID0gXCJzb3J0TGlzdENvbnRhaW5lcl9fX1BwMlhnXCI7XG52YXIgXzE2ID0gXCJ0aXRsZVdyYXBwZXJfX19QNm1QdVwiO1xuZXhwb3J0IHsgXzEgYXMgXCJNdWlPdXRsaW5lZElucHV0LW5vdGNoZWRPdXRsaW5lXCIsIF8yIGFzIFwiTXVpUGlja2Vyc0NhbGVuZGFySGVhZGVyLWxhYmVsQ29udGFpbmVyXCIsIF8zIGFzIFwiY2FsZW5kYXJEaXNwbGF5XCIsIF80IGFzIFwiY2xlYW5CdXR0b25cIiwgXzUgYXMgXCJjb250YWluZXJcIiwgXzYgYXMgXCJkYXRlUGlja2VyQ29udGFpbmVyXCIsIF83IGFzIFwiZGF0ZXBpY2tlckNsb3NlXCIsIF84IGFzIFwiZmlsdGVyQ2hlY2tib3hDb250YWluZXJcIiwgXzkgYXMgXCJmaWx0ZXJDb250YWluZXJcIiwgX2EgYXMgXCJmaWx0ZXJEYXRlTGFiZWxcIiwgX2IgYXMgXCJmaWx0ZXJJY29uXCIsIF9jIGFzIFwiZmlsdGVyTGFiZWxcIiwgX2QgYXMgXCJmaWx0ZXJMaXN0Q29udGFpbmVyXCIsIF9lIGFzIFwiZmlsdGVyTnVtQWN0aXZlXCIsIF9mIGFzIFwiZmlsdGVyU29ydENvbnRhaW5lclwiLCBfMTAgYXMgXCJsYWJlbFwiLCBfMTEgYXMgXCJzaG93RmlsdGVyTGlzdFwiLCBfMTIgYXMgXCJzb3J0Q29udGFpbmVyXCIsIF8xMyBhcyBcInNvcnRJY29uXCIsIF8xNCBhcyBcInNvcnRMYWJlbFwiLCBfMTUgYXMgXCJzb3J0TGlzdENvbnRhaW5lclwiLCBfMTYgYXMgXCJ0aXRsZVdyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiY2FuY2VsQnRuX19fcURleGhcIjtcbnZhciBfMiA9IFwiZm9vdGVyX19fU043MHlcIjtcbnZhciBfMyA9IFwic2F2ZUJ0bl9fX25iVTZjXCI7XG5leHBvcnQgeyBfMSBhcyBcImNhbmNlbEJ0blwiLCBfMiBhcyBcImZvb3RlclwiLCBfMyBhcyBcInNhdmVCdG5cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiZXJyb3JMYWJlbF9fX25vY3lYXCI7XG5leHBvcnQgeyBfMSBhcyBcImVycm9yTGFiZWxcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwibm9PcmRlcnNGb3VuZF9fX0RSd2dvXCI7XG52YXIgXzIgPSBcIm5vT3JkZXJzSWNvbldyYXBwZXJfX190UFRtWVwiO1xuZXhwb3J0IHsgXzEgYXMgXCJub09yZGVyc0ZvdW5kXCIsIF8yIGFzIFwibm9PcmRlcnNJY29uV3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJvcmRlckRldGFpbHNNbW91bnRfX19yM2tSQVwiO1xudmFyIF8yID0gXCJvcmRlckRldGFpbHNUaWNrZXRzX19fbTRJaktcIjtcbnZhciBfMyA9IFwib3JkZXJTdW1tYXJ5QnV0dG9uX19fdXhqaHRcIjtcbnZhciBfNCA9IFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb19fX19SQlhFXCI7XG52YXIgXzUgPSBcIm9yZGVyU3VtbWFyeVRhYmxlX19fWURueFZcIjtcbnZhciBfNiA9IFwib3JkZXJTdW1tYXJ5V3JhcHBlcl9fX1J3SUVSXCI7XG52YXIgXzcgPSBcInJlZnVuZERpc2FibGVkX19fanZyazNcIjtcbmV4cG9ydCB7IF8xIGFzIFwib3JkZXJEZXRhaWxzTW1vdW50XCIsIF8yIGFzIFwib3JkZXJEZXRhaWxzVGlja2V0c1wiLCBfMyBhcyBcIm9yZGVyU3VtbWFyeUJ1dHRvblwiLCBfNCBhcyBcIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm9cIiwgXzUgYXMgXCJvcmRlclN1bW1hcnlUYWJsZVwiLCBfNiBhcyBcIm9yZGVyU3VtbWFyeVdyYXBwZXJcIiwgXzcgYXMgXCJyZWZ1bmREaXNhYmxlZFwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhc3NpZ25UaWNrZXRCdXR0b25fX196ekxzY1wiO1xudmFyIF8yID0gXCJhc3NpZ25Ub01lVGV4dF9fX1pQYWV4XCI7XG52YXIgXzMgPSBcImFzc2lnbmVkQnlUZXh0X19fYk5aN3pcIjtcbnZhciBfNCA9IFwiYXNzaWduZWRUb01lRGVzX19fR2pGa1ZcIjtcbnZhciBfNSA9IFwiYmFkZ2VGZWF0dXJlX19fQTJMTVZcIjtcbnZhciBfNiA9IFwiYmFkZ2VGZWF0dXJlV3JhcHBlcl9fX0lRTE5QXCI7XG52YXIgXzcgPSBcImJsYWNrQnV0dG9uX19fbDloajlcIjtcbnZhciBfOCA9IFwiY2hlY2tib3hfX19YWkpwYlwiO1xudmFyIF85ID0gXCJkaXNhYmxlZFJlZnVuZF9fX1NmZmw3XCI7XG52YXIgX2EgPSBcImRpc3BsYXlfbm9uZV9fX0NxcEwzXCI7XG52YXIgX2IgPSBcImxhYmVsX19felhEV3pcIjtcbnZhciBfYyA9IFwibm9PcmRlcnNJY29uV3JhcHBlcl9fX2VmeXJwXCI7XG52YXIgX2QgPSBcIm5vVGlja2V0c0ZvdW5kX19fakxvY29cIjtcbnZhciBfZSA9IFwib3JkZXJUaWNrZXRDb250YWluZXJfX19aSkx6a1wiO1xudmFyIF9mID0gXCJvcmRlclRpY2tldEluZm9fX19nZW1xQlwiO1xudmFyIF8xMCA9IFwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyX19fX3A2NlZcIjtcbnZhciBfMTEgPSBcIm9yZGVyV3JhcHBlcl9fX3lEQkFvXCI7XG52YXIgXzEyID0gXCJyZWFzc2lnbkJ1dHRvbl9fX1Jvak01XCI7XG52YXIgXzEzID0gXCJyZWZ1bmRCdXR0b25zX19fakRsNEhcIjtcbnZhciBfMTQgPSBcInJlZnVuZE1vZGFsX19fRXFnUEZcIjtcbnZhciBfMTUgPSBcInNlbGVjdGVkX19fSFdHTmNcIjtcbnZhciBfMTYgPSBcInRhYkJ1dHRvbnNfX194VHlKQVwiO1xudmFyIF8xNyA9IFwidGlja2V0QWN0aW9uQnV0dG9uc19fX3JwU01RXCI7XG52YXIgXzE4ID0gXCJ0aWNrZXRMaXN0Q29udGFpbmVyX19fY2ZtcnJcIjtcbnZhciBfMTkgPSBcInRpY2tldE5vX19fYTJpTTlcIjtcbnZhciBfMWEgPSBcInRpY2tldE93bmVyRW1haWxfX19adDRPRVwiO1xudmFyIF8xYiA9IFwidGlja2V0VGlja2V0VHlwZV9fX1pxX2YwXCI7XG52YXIgXzFjID0gXCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uX19fSEY2SW1cIjtcbnZhciBfMWQgPSBcInZpZXdNb3JlQnV0dG9uX19fS18xelRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYXNzaWduVGlja2V0QnV0dG9uXCIsIF8yIGFzIFwiYXNzaWduVG9NZVRleHRcIiwgXzMgYXMgXCJhc3NpZ25lZEJ5VGV4dFwiLCBfNCBhcyBcImFzc2lnbmVkVG9NZURlc1wiLCBfNSBhcyBcImJhZGdlRmVhdHVyZVwiLCBfNiBhcyBcImJhZGdlRmVhdHVyZVdyYXBwZXJcIiwgXzcgYXMgXCJibGFja0J1dHRvblwiLCBfOCBhcyBcImNoZWNrYm94XCIsIF85IGFzIFwiZGlzYWJsZWRSZWZ1bmRcIiwgX2EgYXMgXCJkaXNwbGF5X25vbmVcIiwgX2IgYXMgXCJsYWJlbFwiLCBfYyBhcyBcIm5vT3JkZXJzSWNvbldyYXBwZXJcIiwgX2QgYXMgXCJub1RpY2tldHNGb3VuZFwiLCBfZSBhcyBcIm9yZGVyVGlja2V0Q29udGFpbmVyXCIsIF9mIGFzIFwib3JkZXJUaWNrZXRJbmZvXCIsIF8xMCBhcyBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lclwiLCBfMTEgYXMgXCJvcmRlcldyYXBwZXJcIiwgXzEyIGFzIFwicmVhc3NpZ25CdXR0b25cIiwgXzEzIGFzIFwicmVmdW5kQnV0dG9uc1wiLCBfMTQgYXMgXCJyZWZ1bmRNb2RhbFwiLCBfMTUgYXMgXCJzZWxlY3RlZFwiLCBfMTYgYXMgXCJ0YWJCdXR0b25zXCIsIF8xNyBhcyBcInRpY2tldEFjdGlvbkJ1dHRvbnNcIiwgXzE4IGFzIFwidGlja2V0TGlzdENvbnRhaW5lclwiLCBfMTkgYXMgXCJ0aWNrZXROb1wiLCBfMWEgYXMgXCJ0aWNrZXRPd25lckVtYWlsXCIsIF8xYiBhcyBcInRpY2tldFRpY2tldFR5cGVcIiwgXzFjIGFzIFwidmlld0ZpbmlzaFRpY2tldEJ1dHRvblwiLCBfMWQgYXMgXCJ2aWV3TW9yZUJ1dHRvblwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJDVEFCdXR0b25XcmFwcGVyX19fS2dxNmdcIjtcbnZhciBfMiA9IFwiYWN0aW9uQnV0dG9uc19fX3U3bVBTXCI7XG52YXIgXzMgPSBcImFwcHJvdmVkX19fc3hFSldcIjtcbnZhciBfNCA9IFwiYmFkZ2VGZWF0dXJlX19fdExoRXBcIjtcbnZhciBfNSA9IFwiYmFkZ2VGZWF0dXJlV3JhcHBlcl9fX185R2JEXCI7XG52YXIgXzYgPSBcImJ1dHRvblBpbGxfX19MZXNhelwiO1xudmFyIF83ID0gXCJjYW5jZWxCdXR0b25fX195ZmhZYlwiO1xudmFyIF84ID0gXCJjb250aW51ZUJ1dHRvbl9fX055WDNzXCI7XG52YXIgXzkgPSBcImRlbGV0ZUljb25fX19GU3d5ZVwiO1xudmFyIF9hID0gXCJwZW5kaW5nX19fYUViV3dcIjtcbnZhciBfYiA9IFwicmVmdW5kRGV0YWlsX19fY1EyOFZcIjtcbnZhciBfYyA9IFwicmVmdW5kRXJyb3JNc2dfX19BYWh6clwiO1xudmFyIF9kID0gXCJyZWZ1bmRTdWNjZXNzZnVsX19fenJEUVlcIjtcbnZhciBfZSA9IFwicmVmdW5kVGV4dF9fX2FFbkw5XCI7XG52YXIgX2YgPSBcInJlZnVuZFRpY2tldEF0dGVuZGVlX19fUVhDak1cIjtcbnZhciBfMTAgPSBcInJlZnVuZFRpY2tldEJveENvbnRhaW5lcl9fX3lhNjEzXCI7XG52YXIgXzExID0gXCJyZWplY3RlZF9fX05KRTRaXCI7XG52YXIgXzEyID0gXCJzdWJ0aXRsZV9fX1B0RGUyXCI7XG52YXIgXzEzID0gXCJzdWNjZXNzTXNnX19fSHRNc2VcIjtcbnZhciBfMTQgPSBcInN1Y2Nlc3NNc2cyX19fUTZ6bmFcIjtcbnZhciBfMTUgPSBcInRpY2tldExpc3RfX19lRFFSM1wiO1xudmFyIF8xNiA9IFwidGlja2V0Tm9fX19fRUFENFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJDVEFCdXR0b25XcmFwcGVyXCIsIF8yIGFzIFwiYWN0aW9uQnV0dG9uc1wiLCBfMyBhcyBcImFwcHJvdmVkXCIsIF80IGFzIFwiYmFkZ2VGZWF0dXJlXCIsIF81IGFzIFwiYmFkZ2VGZWF0dXJlV3JhcHBlclwiLCBfNiBhcyBcImJ1dHRvblBpbGxcIiwgXzcgYXMgXCJjYW5jZWxCdXR0b25cIiwgXzggYXMgXCJjb250aW51ZUJ1dHRvblwiLCBfOSBhcyBcImRlbGV0ZUljb25cIiwgX2EgYXMgXCJwZW5kaW5nXCIsIF9iIGFzIFwicmVmdW5kRGV0YWlsXCIsIF9jIGFzIFwicmVmdW5kRXJyb3JNc2dcIiwgX2QgYXMgXCJyZWZ1bmRTdWNjZXNzZnVsXCIsIF9lIGFzIFwicmVmdW5kVGV4dFwiLCBfZiBhcyBcInJlZnVuZFRpY2tldEF0dGVuZGVlXCIsIF8xMCBhcyBcInJlZnVuZFRpY2tldEJveENvbnRhaW5lclwiLCBfMTEgYXMgXCJyZWplY3RlZFwiLCBfMTIgYXMgXCJzdWJ0aXRsZVwiLCBfMTMgYXMgXCJzdWNjZXNzTXNnXCIsIF8xNCBhcyBcInN1Y2Nlc3NNc2cyXCIsIF8xNSBhcyBcInRpY2tldExpc3RcIiwgXzE2IGFzIFwidGlja2V0Tm9cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiY2xvc2VCdG5fX195U1FDT1wiO1xudmFyIF8yID0gXCJoZWFkZXJfX19mQlhHOVwiO1xudmFyIF8zID0gXCJ0aXRsZV9fX3R5WmVRXCI7XG52YXIgXzQgPSBcIndyYXBwZXJfX19ST0pHc1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJjbG9zZUJ0blwiLCBfMiBhcyBcImhlYWRlclwiLCBfMyBhcyBcInRpdGxlXCIsIF80IGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJzdW1taXRUaXRsZURhdGVfX19YbnJwRlwiO1xudmFyIF8yID0gXCJ3aWRnZXRIZWFkZXJfX19nZ0x0TVwiO1xuZXhwb3J0IHsgXzEgYXMgXCJzdW1taXRUaXRsZURhdGVcIiwgXzIgYXMgXCJ3aWRnZXRIZWFkZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYWxpZ25DZW50ZXJfX19ONEV2T1wiO1xudmFyIF8yID0gXCJhc3NpZ25CdG5fX19GUUgzblwiO1xudmFyIF8zID0gXCJhdHRlbmRlZUNvbnRhaW5lcl9fX2QzUkdDXCI7XG52YXIgXzQgPSBcImF0dGVuZGVlSW5mb05vdGVfX19LZDF5NlwiO1xudmFyIF81ID0gXCJhdHRlbmRlZUluZm9UaXRsZV9fX1Q5VTV6XCI7XG52YXIgXzYgPSBcIm9yZGVyTm9fX195cVJyOFwiO1xudmFyIF83ID0gXCJzdWJ0aXRsZV9fX1N2UmxVXCI7XG52YXIgXzggPSBcInRpY2tldEFzc2lnbkNvbnRhaW5lcl9fX2RKNXZXXCI7XG52YXIgXzkgPSBcInRpY2tldFR5cGVfX19ZWHdPSlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhbGlnbkNlbnRlclwiLCBfMiBhcyBcImFzc2lnbkJ0blwiLCBfMyBhcyBcImF0dGVuZGVlQ29udGFpbmVyXCIsIF80IGFzIFwiYXR0ZW5kZWVJbmZvTm90ZVwiLCBfNSBhcyBcImF0dGVuZGVlSW5mb1RpdGxlXCIsIF82IGFzIFwib3JkZXJOb1wiLCBfNyBhcyBcInN1YnRpdGxlXCIsIF84IGFzIFwidGlja2V0QXNzaWduQ29udGFpbmVyXCIsIF85IGFzIFwidGlja2V0VHlwZVwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJ3cmFwcGVyX19fRXdPUnpcIjtcbmV4cG9ydCB7IF8xIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJpbmZvTm90ZV9fX2kxWFk5XCI7XG52YXIgXzIgPSBcIndyYXBwZXJfX19NQXVOU1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJpbmZvTm90ZVwiLCBfMiBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lcl9fX0F1dnJuXCI7XG52YXIgXzIgPSBcImFkZGl0aW9uYWxEZXRhaWxzX19fbVAxaUpcIjtcbnZhciBfMyA9IFwiYXR0ZW5kZWVDb250YWluZXJfX19RMFZVelwiO1xudmFyIF80ID0gXCJhdHRlbmRlZUluZm9UaXRsZV9fX0xtcm00XCI7XG52YXIgXzUgPSBcImNsb3NlQnRuX19fV05KbEVcIjtcbnZhciBfNiA9IFwiY29weUJ0bl9fX191dEE2XCI7XG52YXIgXzcgPSBcImRlbGVnYXRlZFRvX19fU0dWUUlcIjtcbnZhciBfOCA9IFwiZG93bmxvYWRCdG5fX19xalloelwiO1xudmFyIF85ID0gXCJoZWFkZXJfX19BdWduelwiO1xudmFyIF9hID0gXCJvcmRlck51bWJlcl9fX0w1UTVhXCI7XG52YXIgX2IgPSBcInFyQ29kZV9fX2Z3cVpxXCI7XG52YXIgX2MgPSBcInFyTm90ZV9fX0djN0tuXCI7XG52YXIgX2QgPSBcInNlbmRCdG5fX19rb1dNMlwiO1xudmFyIF9lID0gXCJzZW50X19fazZXS3hcIjtcbnZhciBfZiA9IFwic3RhdHVzX19fa3dDOHlcIjtcbnZhciBfMTAgPSBcInN1YnRpdGxlX19feV9OdU9cIjtcbnZhciBfMTEgPSBcInRpY2tldERldGFpbENvbnRhaW5lcl9fX2IyVExSXCI7XG52YXIgXzEyID0gXCJ0aXRsZV9fX3dRelVOXCI7XG5leHBvcnQgeyBfMSBhcyBcImFjdGlvbkJ1dHRvbnNDb250YWluZXJcIiwgXzIgYXMgXCJhZGRpdGlvbmFsRGV0YWlsc1wiLCBfMyBhcyBcImF0dGVuZGVlQ29udGFpbmVyXCIsIF80IGFzIFwiYXR0ZW5kZWVJbmZvVGl0bGVcIiwgXzUgYXMgXCJjbG9zZUJ0blwiLCBfNiBhcyBcImNvcHlCdG5cIiwgXzcgYXMgXCJkZWxlZ2F0ZWRUb1wiLCBfOCBhcyBcImRvd25sb2FkQnRuXCIsIF85IGFzIFwiaGVhZGVyXCIsIF9hIGFzIFwib3JkZXJOdW1iZXJcIiwgX2IgYXMgXCJxckNvZGVcIiwgX2MgYXMgXCJxck5vdGVcIiwgX2QgYXMgXCJzZW5kQnRuXCIsIF9lIGFzIFwic2VudFwiLCBfZiBhcyBcInN0YXR1c1wiLCBfMTAgYXMgXCJzdWJ0aXRsZVwiLCBfMTEgYXMgXCJ0aWNrZXREZXRhaWxDb250YWluZXJcIiwgXzEyIGFzIFwidGl0bGVcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYXR0ZW5kZWVDb250YWluZXJfX19jSFNNdFwiO1xudmFyIF8yID0gXCJhdHRlbmRlZUluZm9UaXRsZV9fX0pzUGxHXCI7XG52YXIgXzMgPSBcImhlYWRlck5vdGVfX19iMm1yQ1wiO1xudmFyIF80ID0gXCJzdWJ0aXRsZV9fX1lYNk9EXCI7XG52YXIgXzUgPSBcInRpY2tldFJlYXNzaWduQ29udGFpbmVyX19fcEc5YjRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYXR0ZW5kZWVDb250YWluZXJcIiwgXzIgYXMgXCJhdHRlbmRlZUluZm9UaXRsZVwiLCBfMyBhcyBcImhlYWRlck5vdGVcIiwgXzQgYXMgXCJzdWJ0aXRsZVwiLCBfNSBhcyBcInRpY2tldFJlYXNzaWduQ29udGFpbmVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImJ1dHRvbkNhbmNlbGxlZF9fX0VybERaXCI7XG52YXIgXzIgPSBcImJ1dHRvbkNvbXBsZXRlX19fbGxXa1pcIjtcbnZhciBfMyA9IFwiYnV0dG9uSW5jb21wbGV0ZV9fX1RvbEhnXCI7XG52YXIgXzQgPSBcImJ1dHRvblBpbGxfX196cTJ0Y1wiO1xudmFyIF81ID0gXCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWRfX19wV3QzMFwiO1xudmFyIF82ID0gXCJidXR0b25VbmFzc2lnbmVkX19fWURkOFhcIjtcbnZhciBfNyA9IFwidGlja2V0U3RhdHVzQ29udGFpbmVyX19fcWo2ZmJcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYnV0dG9uQ2FuY2VsbGVkXCIsIF8yIGFzIFwiYnV0dG9uQ29tcGxldGVcIiwgXzMgYXMgXCJidXR0b25JbmNvbXBsZXRlXCIsIF80IGFzIFwiYnV0dG9uUGlsbFwiLCBfNSBhcyBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZFwiLCBfNiBhcyBcImJ1dHRvblVuYXNzaWduZWRcIiwgXzcgYXMgXCJ0aWNrZXRTdGF0dXNDb250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYWN0aXZlX19fdEx5V1pcIjtcbnZhciBfMiA9IFwidGFiT3B0aW9uX19fSDRIMXVcIjtcbnZhciBfMyA9IFwidGFiV3JhcHBlcl9fX3UyMXNHXCI7XG5leHBvcnQgeyBfMSBhcyBcImFjdGl2ZVwiLCBfMiBhcyBcInRhYk9wdGlvblwiLCBfMyBhcyBcInRhYldyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwidGlja2V0c1RpdGxlVGV4dF9fX1REUG1wXCI7XG5leHBvcnQgeyBfMSBhcyBcInRpY2tldHNUaXRsZVRleHRcIiB9XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbmZvXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9DaGVja2JveFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9TdGFja1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1RhYlwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1RhYnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9Ub29sdGlwXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAcmVkdXhqcy90b29sa2l0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBzZW50cnkvcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZm9ybWlrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaWR0b2tlbi12ZXJpZmllclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb21lbnQtdGltZXpvbmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicC1saW1pdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwcm9wLXR5cGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1xci1jb2RlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0L2pzeC1ydW50aW1lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInl1cFwiKTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBQZXJzaXN0R2F0ZSB9IGZyb20gXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyBTdHlsZWRFbmdpbmVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VJbml0U3RvcmUgfSBmcm9tIFwiLi9zdG9yZVwiO1xuaW1wb3J0IHsgUkVTRVRfU1RBVEUsIHNldFJlZHVjZXJTdGF0ZSB9IGZyb20gXCIuL2FjdGlvbnNcIjtcblxuaW1wb3J0IFdpZGdldFdyYXBwZXIgZnJvbSBcIi4vY29tcG9uZW50cy9XaWRnZXRXcmFwcGVyXCI7XG5cbmNvbnN0IE15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBsb2dpblVybCxcbiAgICBzdXBwb3J0RW1haWwsXG4gICAgc3VtbWl0LFxuICAgIGFwaUJhc2VVcmwsXG4gICAgdXNlcixcbiAgICBjbGllbnRJZCxcbiAgICB1cGRhdGVQcm9maWxlXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCB7IHN0b3JlLCBwZXJzaXN0b3IgfSA9IHVzZUluaXRTdG9yZSh7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICB1c2VyLFxuICAgIGFwaUJhc2VVcmwsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVCZWZvcmVMaWZ0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgY29uc3QgZmx1c2ggPSBwYXJhbXMuaGFzKFwiZmx1c2hTdGF0ZVwiKTtcbiAgICBpZiAoZmx1c2gpIHN0b3JlLmRpc3BhdGNoKHsgdHlwZTogUkVTRVRfU1RBVEUsIHBheWxvYWQ6IG51bGwgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaChzZXRSZWR1Y2VyU3RhdGUoc3VtbWl0LCB1c2VyKSk7XG4gIH0sIFtzdW1taXQsIHVzZXJdKTtcblxuICByZXR1cm4gKFxuICAgIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgICAgPFBlcnNpc3RHYXRlXG4gICAgICAgIG9uQmVmb3JlTGlmdD17aGFuZGxlQmVmb3JlTGlmdH1cbiAgICAgICAgbG9hZGluZz17bnVsbH1cbiAgICAgICAgcGVyc2lzdG9yPXtwZXJzaXN0b3J9XG4gICAgICA+XG4gICAgICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgICAgICA8V2lkZ2V0V3JhcHBlciAvPlxuICAgICAgICA8L1N0eWxlZEVuZ2luZVByb3ZpZGVyPlxuICAgICAgPC9QZXJzaXN0R2F0ZT5cbiAgICA8L1Byb3ZpZGVyPlxuICApO1xufTtcblxuTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQucHJvcFR5cGVzID0ge1xuICBsb2dpblVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VwcG9ydEVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGFwaUJhc2VVcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHVzZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gIGNsaWVudElkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1cGRhdGVQcm9maWxlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQ7XG4iXSwibmFtZXMiOlsiYXV0aEVycm9ySGFuZGxlciIsImdldFJlcXVlc3QiLCJkZWxldGVSZXF1ZXN0IiwiY3JlYXRlQWN0aW9uIiwic3RvcExvYWRpbmciLCJzdGFydExvYWRpbmciLCJwdXRSZXF1ZXN0IiwicExpbWl0IiwiZ2V0SWRUb2tlbiIsIm9iamVjdFRvUXVlcnlTdHJpbmciLCJJZFRva2VuVmVyaWZpZXIiLCJpMThuIiwiZ2V0QWNjZXNzVG9rZW5TYWZlbHkiLCJGSVJTVF9QQUdFIiwiREVGQVVMVF9JVEVNU19QRVJfUEFHRSIsIlBST01JU0VfQkFUQ0hfTElNSVQiLCJGSUZUWV9QRVJfUEFHRSIsIkVSUk9SX0NPREVTIiwiVEFCUyIsIlJFU0VUX1NUQVRFIiwiUkVTRVRfRklMVEVSIiwiUkVTRVRfQVBJX0VSUk9SIiwiU0VUX1NUQVRFIiwiU0VUX0FQSV9FUlJPUiIsIkNIQU5HRV9GSUxURVIiLCJDSEFOR0VfU09SVCIsIkdFVF9VU0VSX09SREVSUyIsIlJFRlVORF9PUkRFUiIsIlNFVF9BQ1RJVkVfT1JERVJfSUQiLCJGSUxURVJfVVNFUl9PUkRFUlMiLCJHRVRfTVlfQVNTSUdORURfVElDS0VUUyIsIlVQREFURV9USUNLRVQiLCJSRVNFVF9USUNLRVQiLCJSRUNFSVZFX1RJQ0tFVCIsIlJFTU9WRV9USUNLRVRfQVRURU5ERUUiLCJBU1NJR05fVElDS0VUIiwiUkVGVU5EX1RJQ0tFVCIsIlJFU0VORF9OT1RJRklDQVRJT04iLCJHRVRfVElDS0VUU19CWV9PUkRFUiIsIkdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SIiwiR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTIiwiR0VUX1RJQ0tFVF9ERVRBSUxTIiwiUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMiLCJUSUNLRVRfQVRURU5ERUVfS0VZUyIsImVtYWlsIiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJjb21wYW55IiwiZGlzY2xhaW1lckFjY2VwdGVkIiwiZXh0cmFRdWVzdGlvbnMiLCJVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEIiwiU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRSIsIlNUT1BfTE9BRElOR19JRFBfUFJPRklMRSIsIlVQREFURV9JRFBfUFJPRklMRSIsIlNFVF9VU0VSIiwiU0VUX1NVTU1JVCIsIkdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OUyIsIlJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTIiwiQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTIiwicmVzZXRUaWNrZXQiLCJkaXNwYXRjaCIsInJlc2V0U3RhdGUiLCJyZXNldEZpbHRlciIsInJlc2V0RXJyb3IiLCJzZXRSZWR1Y2VyU3RhdGUiLCJzdW1taXQiLCJ1c2VyIiwiRklMVEVSX1ZBUl9EQVRFIiwiRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFIiwiRklMVEVSX1ZBUl9USUNLRVRfVFlQRSIsIkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEIiwiRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMiLCJGSUxURVJfVkFSX1BST01PQ09ERSIsIkZJTFRFUl9WQVJfRlJFRV9QQUlEIiwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIiLCJjaGFuZ2VGaWx0ZXIiLCJmaWx0ZXIiLCJjaGFuZ2VTb3J0Iiwic29ydCIsInBhcnNlRmlsdGVyIiwiZmlsdGVyT2JqIiwiY3VycmVudFRhYiIsInB1c2giLCJjb25jYXQiLCJsb3dlciIsInVwcGVyIiwibGVuZ3RoIiwiZmlsdGVyTmFtZSIsIk9SREVSUyIsImpvaW4iLCJnZXRTb3J0RGlyZWN0aW9uIiwiZGlyZWN0aW9uIiwiZXJyb3JIYW5kbGVyTm90aWZ5IiwicGF5bG9hZCIsImNhbGxiYWNrIiwiY3VzdG9tQXV0aEVycm9ySGFuZGxlciIsImVyciIsInJlcyIsImN1c3RvbUZldGNoRXJyb3JIYW5kbGVyIiwicmVzcG9uc2UiLCJjb2RlIiwic3RhdHVzIiwibXNnIiwidCIsIk9iamVjdCIsImVudHJpZXMiLCJlcnJvcnMiLCJmb3JFYWNoIiwiX3JlZiIsImtleSIsInZhbHVlIiwiTnVtYmVyIiwiaXNOYU4iLCJzdGF0dXNUZXh0IiwidGl0bGUiLCJodG1sIiwiZ2V0VXNlck9yZGVycyIsIl9yZWYyIiwicGFnZSIsInBlclBhZ2UiLCJnZXRTdGF0ZSIsIl9yZWYzIiwiYXBpQmFzZVVybCIsIndpZGdldFN0YXRlIiwiYWNjZXNzVG9rZW4iLCJjYXRjaCIsIlByb21pc2UiLCJyZWplY3QiLCJwYXJhbXMiLCJhY2Nlc3NfdG9rZW4iLCJvcmRlciIsInJlbGF0aW9ucyIsInBlcl9wYWdlIiwia2V5cyIsImZpbHRlcnMiLCJuYW1lIiwiaWQiLCJ0aGVuIiwiZSIsInNldEFjdGl2ZU9yZGVySWQiLCJvcmRlcklkIiwic2V0VXNlciIsImdldFVzZXJUaWNrZXRzIiwiX3JlZjQiLCJfcmVmNSIsInVzZXJQcm9maWxlIiwiZmllbGRzIiwiZXhwYW5kIiwiVElDS0VUUyIsImdldFRpY2tldHNCeU9yZGVyIiwiX3JlZjYiLCJfcmVmNyIsInJlc2VuZE5vdGlmaWNhdGlvbiIsInRpY2tldCIsIl9yZWY4IiwibWVzc2FnZSIsIm9yZGVyX2lkIiwicmVmdW5kVGlja2V0IiwiX3JlZjkiLCJfcmVmMTAiLCJyZWZ1bmRCdWxrVGlja2V0cyIsIl9yZWYxMSIsInRpY2tldHMiLCJsaW1pdCIsImFsbFJlZnVuZFRpY2tldENhbGxzIiwibWFwIiwiYWxsIiwic3VjY2Vzc2Z1bGx5UmVxdWVzdGVkIiwiciIsIl9yJHJlc3BvbnNlIiwicmVmdW5kX3JlcXVlc3RzIiwidXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCIsInRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQiLCJnZXRFeHRyYVF1ZXN0aW9ucyIsImF0dGVuZGVlSWQiLCJfcmVmMTIiLCJlbmRwb2ludCIsImdldFRpY2tldCIsInRpY2tldElkIiwiX3JlZjEzIiwiZmluYWxseSIsIm5vcm1hbGl6ZVRpY2tldCIsImVudGl0eSIsIm5vcm1hbGl6ZWRFbnRpdHkiLCJfb2JqZWN0U3ByZWFkIiwiYXR0ZW5kZWVfY29tcGFueSIsImF0dGVuZGVlX2NvbXBhbnlfaWQiLCJyZWZyZXNoUHJvZmlsZSIsImRhdGEiLCJ0aWNrZXRPd25lciIsIl9yZWYxNCIsIl90aWNrZXRPd25lciRtYW5hZ2VyIiwidXBkYXRlUHJvZmlsZSIsImF0dGVuZGVlX2VtYWlsIiwiYXR0ZW5kZWVfZmlyc3RfbmFtZSIsImF0dGVuZGVlX2xhc3RfbmFtZSIsImhhc01hbmFnZXIiLCJtYW5hZ2VyIiwibWFuYWdlcl9pZCIsIml0c01lIiwicHJvZmlsZUNoYW5nZWQiLCJmaXJzdF9uYW1lIiwibGFzdF9uYW1lIiwibmV3UHJvZmlsZSIsInNhdmVUaWNrZXREZXRhaWxzIiwiYW5zd2VycyIsIl9yZWYxNSIsImlkVG9rZW4iLCJ2ZXJpZmllciIsImp3dCIsImRlY29kZSIsImNvbnNvbGUiLCJsb2ciLCJvd25lciIsImFzc2lnbkF0dGVuZGVlIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiX3JlZjE2IiwicmVhc3NpZ25UaWNrZXQiLCJfcmVmMTciLCJzYXZlRXh0cmFRdWVzdGlvbnMiLCJfcmVmMTgiLCJnZXRUaWNrZXRQREYiLCJfcmVmMTkiLCJxdWVyeVN0cmluZyIsImFwaVVybCIsImZldGNoIiwicmVzcG9uc2VUeXBlIiwiaGVhZGVycyIsIm9rIiwiYmxvYiIsInBkZiIsImxpbmsiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ1cmwiLCJ3aW5kb3ciLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJocmVmIiwiZG93bmxvYWQiLCJkaXNwYXRjaEV2ZW50IiwiTW91c2VFdmVudCIsIlJlYWN0IiwiUHJvcFR5cGVzIiwidXNlVHJhbnNsYXRpb24iLCJCb3giLCJ1c2VGb3JtaWsiLCJFeHRyYVF1ZXN0aW9uc0ZpZWxkcyIsIkZvcm1Gb290ZXIiLCJ1c2VTY3JvbGxUb0Vycm9yIiwiUmVnaXN0cmF0aW9uRGlzY2xhaW1lciIsImJ1aWxkVmFsaWRhdGlvblNjaGVtYSIsInBhcnNlQW5zd2VycyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJBc3NpZ25FUUZvcm0iLCJvblN1Ym1pdCIsIm9uQ2xvc2UiLCJmb3JtaWsiLCJpbml0aWFsVmFsdWVzIiwidmFsaWRhdGlvblNjaGVtYSIsInJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeSIsInZhbHVlcyIsInJlbGV2YW50QW5zd2VycyIsImVuYWJsZVJlaW5pdGlhbGl6ZSIsImhhbmRsZVN1Ym1pdCIsIm5vVmFsaWRhdGUiLCJjaGlsZHJlbiIsInJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQiLCJkaXNjbGFpbWVyIiwiaXNSZXF1aXJlZCIsInNhdmVMYWJlbCIsImNhbmNlbExhYmVsIiwiZGlzYWJsZWQiLCJpc1N1Ym1pdHRpbmciLCJwcm9wVHlwZXMiLCJvYmplY3QiLCJhcnJheSIsImZ1bmMiLCJDb250ZW50Q29weUljb24iLCJUb29sdGlwIiwiTUlMTElTRUNfVE9fU0VDIiwic3R5bGVzIiwiZGVmYXVsdFdpZHRoIiwiQ29weVRleHQiLCJ0ZXh0IiwidG9vbHRpcFRleHQiLCJoaWRlQ29weSIsInRydW5jYXRlZCIsInJldmVyc2VkIiwid2lkdGgiLCJ0b29sdGlwVGV4dFRvVXNlIiwidG9vbHRpcCIsInNldFRvb2x0aXAiLCJ1c2VTdGF0ZSIsImNsYXNzTmFtZXMiLCJoYW5kbGVDb3B5IiwibmF2aWdhdG9yIiwiY2xpcGJvYXJkIiwid3JpdGVUZXh0Iiwic2V0VGltZW91dCIsImNsYXNzTmFtZSIsIndyYXBwZXIiLCJzdHlsZSIsImNvcHlJY29uIiwib25DbGljayIsInN0cmluZyIsImJvb2wiLCJudW1iZXIiLCJjcmVhdGVDb250ZXh0IiwiZGVmYXVsdENvbnRleHRWYWx1ZSIsInNldE1lc3NhZ2UiLCJzZXRNZXNzYWdlQ2FsbGJhY2siLCJDdXN0b21EaWFsb2dDb250ZXh0IiwiRGlhbG9nIiwiRGlhbG9nQ29udGVudCIsIkRpYWxvZ0NvbnRlbnRUZXh0IiwiRGlhbG9nVGl0bGUiLCJDdXN0b21EaWFsb2ciLCJvcGVuIiwiYm9keSIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiX19odG1sIiwiVGhlbWVQcm92aWRlciIsImNyZWF0ZVRoZW1lIiwiZGFya0NvbG9yIiwicm9vdCIsImRvY3VtZW50RWxlbWVudCIsImdldENvbXB1dGVkU3R5bGUiLCJnZXRQcm9wZXJ0eVZhbHVlIiwidGhlbWUiLCJwYWxldHRlIiwicHJpbWFyeSIsIm1haW4iLCJjb21wb25lbnRzIiwiTXVpVGFiIiwic3R5bGVPdmVycmlkZXMiLCJmb250U2l6ZSIsImNvbG9yIiwiTXVpVGFicyIsImluZGljYXRvciIsImJhY2tncm91bmRDb2xvciIsIkN1c3RvbVRoZW1lIiwibm9kZSIsIkNoZWNrYm94IiwiRm9ybUNvbnRyb2wiLCJGb3JtQ29udHJvbExhYmVsIiwiRm9ybUdyb3VwIiwiRm9ybUhlbHBlclRleHQiLCJGb3JtTGFiZWwiLCJnZXRMYWJlbCIsInRvU2x1ZyIsIkNoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQiLCJfcXVlc3Rpb24kdmFsdWVzIiwicXVlc3Rpb24iLCJxdWVzdGlvbkNsYXNzTmFtZSIsImlzRGlzYWJsZWQiLCJvbkNoYW5nZSIsInNldEZpZWxkVmFsdWUiLCJlcnJvciIsImhlbHBlclRleHQiLCJyZXN0IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwicXVlc3Rpb25TbHVnIiwicXVlc3Rpb25MYWJlbCIsIm1hbmRhdG9yeSIsInF1ZXN0aW9uTWF4VmFsdWVzIiwibWF4X3NlbGVjdGVkX3ZhbHVlcyIsInF1ZXN0aW9uT3B0aW9ucyIsInZhbCIsImxhYmVsIiwidG9TdHJpbmciLCJoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UiLCJjaGVja2VkIiwiY3VycmVudEFucyIsIm1heFNlbGVjdGlvblJlYWNoZWQiLCJuZXdWYWx1ZSIsInYiLCJyZXF1aXJlZCIsImZ1bGxXaWR0aCIsIm9wIiwiY29udHJvbCIsImluY2x1ZGVzIiwiZXYiLCJ0YXJnZXQiLCJSYXdIVE1MIiwiQ2hlY2tib3hRdWVzdGlvbkZpZWxkIiwiSW5wdXRMYWJlbCIsIk1lbnVJdGVtIiwiU2VsZWN0IiwiRHJvcGRvd25RdWVzdGlvbkZpZWxkIiwibGFiZWxJZCIsIm1hcmdpbkJvdHRvbSIsIlJhZGlvIiwiUmFkaW9Hcm91cCIsIlJhZGlvTGlzdFF1ZXN0aW9uRmllbGQiLCJUZXh0RmllbGQiLCJUZXh0UXVlc3Rpb25GaWVsZCIsIlF1ZXN0aW9uVHlwZV9DaGVja2JveCIsIlF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QiLCJRdWVzdGlvblR5cGVfQ29tYm9Cb3giLCJRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94IiwiUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCIsImNoZWNrUnVsZSIsInJ1bGUiLCJhbnN3ZXJfdmFsdWVzIiwiQXJyYXkiLCJpc0FycmF5IiwiYW5zd2VyX3ZhbHVlc19vcGVyYXRvciIsImNoZWNrVmlzaWJpbGl0eSIsInJ1bGVSZXN1bHQiLCJ2aXNpYmlsaXR5IiwidmlzaWJpbGl0eV9jb25kaXRpb24iLCJxdWVzdGlvbklkIiwidGV4dExDIiwidG9Mb3dlckNhc2UiLCJyZXBsYWNlIiwicSIsIl9xJGxhYmVsIiwiaXNBbnN3ZXJlZCIsImFuc3dlciIsImNoZWNrSWZWYWx1ZU1hdGNoIiwiY29tcGFyZVZhbCIsImFuc3dlckFycmF5Iiwic29tZSIsImdldFR5cGVJbml0aWFsVmFsdWUiLCJ0eXBlIiwiZ2V0VHlwZVZhbHVlIiwiYW5zIiwic3BsaXQiLCJ0cmFuc2Zvcm1BbndlcnNGb3JtYXQiLCJkaXNjbGFpbWVyX2FjY2VwdGVkIiwiZXh0cmFfcXVlc3Rpb25zIiwiZm9ybWF0dGVkRVEiLCJxdWVzdGlvbl9pZCIsInBhcnNlSW50IiwicG9wIiwiUXVlc3Rpb25UeXBlX1RleHQiLCJRdWVzdGlvblR5cGVfVGV4dEFyZWEiLCJRdWVzdGlvblR5cGVfUmFkaW9CdXR0b24iLCJnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50IiwicXVlc3Rpb25UeXBlIiwiRnJhZ21lbnQiLCJyZWFkT25seSIsImFsbG93RWRpdCIsInJlbmRlclJ1bGUiLCJyZW5kZXJRdWVzdGlvbiIsInN1Yl9xdWVzdGlvbiIsIl9xJHN1Yl9xdWVzdGlvbl9ydWxlcyIsIlF1ZXN0aW9uRmllbGRDb21wb25lbnQiLCJmb3JtaWtQcm9wcyIsImhhbmRsZUNoYW5nZSIsIm9uQmx1ciIsImhhbmRsZUJsdXIiLCJ0b3VjaGVkIiwiQm9vbGVhbiIsInN1Yl9xdWVzdGlvbl9ydWxlcyIsInVzZVNlbGVjdG9yIiwic2hhbGxvd0VxdWFsIiwiQ2FyZEhlYWRlciIsIkljb25CdXR0b24iLCJDb2xsYXBzZSIsIkNhcmRDb250ZW50IiwiRXhwYW5kTW9yZUljb24iLCJBc3NpZ25lZEZpbHRlciIsIm9uRmlsdGVyIiwiZmlsdGVyVmFsdWVzIiwic3RhdGUiLCJpc0V4cGFuZGVkIiwic2V0SXNFeHBhbmRlZCIsImFzc2lnbmVkVmFsdWVzIiwiaGFuZGxlRmlsdGVyQ2hhbmdlIiwibmV3RmlsdGVyIiwidGl0bGVXcmFwcGVyIiwiYWN0aW9uIiwiZGlzYWJsZVJpcHBsZSIsInRyYW5zZm9ybSIsInRyYW5zaXRpb24iLCJpbiIsInRpbWVvdXQiLCJ1bm1vdW50T25FeGl0Iiwic3giLCJweSIsInBiIiwiYXNzaWduZWQiLCJ1c2VFZmZlY3QiLCJCYWRnZUZlYXR1cmVGaWx0ZXIiLCJiYWRnZV9mZWF0dXJlc190eXBlcyIsIm5ld0ZpbHRlcnMiLCJmIiwiYmYiLCJ1c2VSZWYiLCJTdGFjayIsIkZpbHRlckxpc3RJY29uIiwiQmFkZ2UiLCJCdXR0b24iLCJDYXJkIiwiRGl2aWRlciIsIlBhcGVyIiwiY29ubmVjdCIsIlRpY2tldFR5cGVGaWx0ZXIiLCJTdGF0dXNGaWx0ZXIiLCJGcmVlUGFpZEZpbHRlciIsIlByb21vQ29kZUZpbHRlciIsIkZpbHRlciIsIm9uUmVzZXQiLCJzaG93RmlsdGVyTGlzdCIsInNldFNob3dGaWx0ZXJMaXN0Iiwic2hvd0RhdGVwaWNrZXIiLCJzZXRTaG93RGF0ZXBpY2tlciIsImZpbHRlck51bUFjdGl2ZSIsInNldEZpbHRlck51bUFjdGl2ZSIsImZpbHRlclJlZiIsImhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSIsImV2ZW50IiwiY3VycmVudCIsImNvbnRhaW5zIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJNQVJHSU5fUklHSFRfV0lUSF9CQURHRSIsIkFERF9GSUxURVJfTlVNQkVSIiwiY2FsY3VsYXRlQWN0aXZlRmlsdGVycyIsImNvdW50IiwidHJpbSIsInRvZ2dsZSIsImhhbmRsZUZpbHRlclJlc2V0IiwiZmlsdGVyQ29udGFpbmVyIiwicmVmIiwiYWxpZ25JdGVtcyIsInB0IiwiYmFkZ2VDb250ZW50IiwibXIiLCJmaWx0ZXJJY29uIiwiZmlsdGVyTGFiZWwiLCJmaWx0ZXJMaXN0Q29udGFpbmVyIiwiY29udGFpbmVyIiwiZWxldmF0aW9uIiwiZmlsdGVyQ2hlY2tib3hDb250YWluZXIiLCJ2YXJpYW50IiwiY2xlYW5CdXR0b24iLCJtYXBTdGF0ZVRvUHJvcHMiLCJwcm9tb0NvZGUiLCJzZXRQcm9tb0NvZGUiLCJkZWJvdW5jZVRpbWVyIiwiREVCT1VOQ0VfVkFMVUUiLCJuZXdQcm9tb0NvZGUiLCJjbGVhclRpbWVvdXQiLCJwbGFjZWhvbGRlciIsInN0eWxlZCIsIlNlYXJjaEljb24iLCJDbG9zZUljb24iLCJJbnB1dEJhc2UiLCJTZWFyY2hDb250YWluZXIiLCJwb3NpdGlvbiIsIm1hcmdpblJpZ2h0IiwibWFyZ2luTGVmdCIsImRpc3BsYXkiLCJTZWFyY2hJY29uV3JhcHBlciIsImhlaWdodCIsImp1c3RpZnlDb250ZW50IiwiU3R5bGVkSW5wdXRCYXNlIiwiYm9yZGVyQm90dG9tIiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiLCJDbG9zZUljb25XcmFwcGVyIiwicGFkZGluZyIsInRvcCIsInJpZ2h0IiwiY3Vyc29yIiwiekluZGV4IiwiU2VhcmNoIiwib25TZWFyY2giLCJzaG93Q2xvc2UiLCJzZXRTaG93Q2xvc2UiLCJzZWFyY2hWYWx1ZSIsInNldFNlYXJjaFZhbHVlIiwib25LZXlEb3duIiwibmF0aXZlRXZlbnQiLCJyZXNldFNlYXJjaCIsImlucHV0UHJvcHMiLCJJbXBvcnRFeHBvcnRJY29uIiwiU29ydCIsIm9uU29ydCIsInNob3dTb3J0Iiwic2V0U2hvd1NvcnQiLCJzb3J0UmVmIiwiaGFuZGxlU29ydENsaWNrT3V0c2lkZSIsInNvcnRDb250YWluZXIiLCJzb3J0SWNvbiIsInNvcnRMYWJlbCIsInNvcnRMaXN0Q29udGFpbmVyIiwidGlja2V0X3R5cGVzIiwiR3JpZCIsIkZpbHRlcnMiLCJqdXN0aWZ5IiwiaXRlbSIsInhzIiwiZ2FwIiwiZmlsdGVyU29ydENvbnRhaW5lciIsImZvb3RlciIsImNhbmNlbEJ0biIsInNpemUiLCJzYXZlQnRuIiwiRXJyb3JJY29uIiwiRXJyb3JMYWJlbCIsImRhdGFUZXN0SWQiLCJlcnJvckxhYmVsIiwiQmFja2Ryb3AiLCJDaXJjdWxhclByb2dyZXNzIiwiTG9hZGVyIiwiZHJhd2VyIiwidXNlRGlzcGF0Y2giLCJJbmZpbml0ZVNjcm9sbCIsIk9yZGVyc0xpc3QiLCJPTkVfUEFHRV9ORVhUIiwiaGFzTW9yZTJGZXRjaCIsInNob3VsZEZldGNoRGF0YSIsIk15T3JkZXJzVGlja2V0cyIsIm1lbWJlck9yZGVycyIsIm9yZGVyc19jdXJyZW50X3BhZ2UiLCJvcmRlcnNfbGFzdF9wYWdlIiwib3JkZXJzX3Blcl9wYWdlIiwidGlja2V0X3Blcl9wYWdlIiwiZmV0Y2hEYXRhIiwiY3VycmVudF9wYWdlIiwib3ZlcmZsb3ciLCJtYXJnaW4iLCJkYXRhTGVuZ3RoIiwibmV4dCIsImhhc01vcmUiLCJzY3JvbGxUaHJlc2hvbGQiLCJzY3JvbGxhYmxlVGFyZ2V0Iiwibm9PcmRlcnNGb3VuZCIsIm5vT3JkZXJzSWNvbldyYXBwZXIiLCJjYWxjdWxhdGVPcmRlclRvdGFscyIsImZvcm1hdEN1cnJlbmN5IiwiX0ZyYWdtZW50IiwiT3JkZXJTdW1tYXJ5VGFibGUiLCJkaXNjb3VudFRvdGFsIiwicmVmdW5kVG90YWwiLCJ0YXhlc1RvdGFsIiwiYW1vdW50VG90YWwiLCJ0aWNrZXRTdW1tYXJ5IiwiaHVuZHJlZCIsIm9yZGVyU3VtbWFyeVRhYmxlIiwidGlja2V0VG90YWwiLCJxdHkiLCJ0aWNrZXRfdHlwZSIsImNvc3QiLCJhbGlnbiIsImN1cnJlbmN5IiwiY3JlYXRlZCIsImRpc2NvdW50X2Ftb3VudCIsInRheGVzX2Ftb3VudCIsInNoYXBlIiwidXNlTm93IiwidGlja2V0c1JlZnVuZGFibGUiLCJSZWZ1bmRFbWFpbFN1cHBvcnQiLCJzdWJtaXRSZXF1ZXN0Iiwib25SZWZ1bmRDbGljayIsIm9uUmVmdW5kRGV0YWlsQ2xpY2siLCJvbkVtYWlsU3VwcG9ydENsaWNrIiwibm93IiwiaXNJblJlZnVuZGFibGVQZXJpb2QiLCJyZWdpc3RyYXRpb25fYWxsb3dlZF9yZWZ1bmRfcmVxdWVzdF90aWxsX2RhdGUiLCJhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCIsImlzUmVmdW5kYWJsZSIsImhhc1JlZnVuZFJlcXVlc3RzIiwicm9sZSIsIm9yZGVyU3VtbWFyeUJ1dHRvbiIsInJlZnVuZERpc2FibGVkIiwiYXJyYXlPZiIsIk9yZGVyU3VtbWFyeSIsIm9yZGVyU3VtbWFyeVdyYXBwZXIiLCJweCIsIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm8iLCJtZW1iZXJUaWNrZXRzIiwiT3JkZXJMaXN0VGlja2V0cyIsIkFzc2lnblRvTWUiLCJ1c2VyVGlja2V0cyIsInVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UiLCJ1c2VyX3RpY2tldHNfbGFzdF9wYWdlIiwib3JkZXJUaWNrZXRDb250YWluZXIiLCJ0aWNrZXRMaXN0Q29udGFpbmVyIiwiaXNSZWZ1bmRpbmciLCJpc1NlbGVjdGVkVG9SZWZ1bmQiLCJzZWxlY3RUb1JlZnVuZCIsImlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCIsIm5vVGlja2V0c0ZvdW5kIiwiQXR0ZW5kZWVTdGF0dXMiLCJfdGlja2V0JG93bmVyIiwiX3RpY2tldCRvd25lcjIiLCJfdGlja2V0JG9yZGVyIiwiX3RpY2tldCRvcmRlcjIiLCJ0aWNrZXRPd25lckVtYWlsIiwiYXNzaWduZWRCeVRleHQiLCJvd25lcl9maXJzdF9uYW1lIiwib3duZXJfbGFzdF9uYW1lIiwiaXNfYWN0aXZlIiwiUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIiwiT3JkZXJMaXN0SXRlbSIsIl9vcmRlciRtZW1iZXJUaWNrZXRzIiwiX29yZGVyJG1lbWJlclRpY2tldHMyIiwib25QYWdpbmF0ZUNsaWNrIiwidGlja2V0c1RvUmVmdW5kIiwiaXRlbXNUb0Rpc3BsYXkiLCJzZXRJdGVtc1RvRGlzcGxheSIsInNsaWNlZFRpY2tldHMiLCJzbGljZSIsIm9uVmlld01vcmUiLCJ0aWNrZXRzX3RvdGFsIiwib25WaWV3TGVzcyIsImZpbmQiLCJ2aWV3TW9yZUJ1dHRvbiIsIlRpY2tldFN0YXR1cyIsImdldFN1bW1pdFJlYXNzaWduRGF0ZSIsIlRpY2tldERldGFpbCIsInVzZVRpY2tldERldGFpbHMiLCJUaWNrZXRSZWFzc2lnbiIsIlRpY2tldEFzc2lnbiIsIm1vZGFsVmlld3MiLCJkZXRhaWwiLCJyZWFzc2lnbiIsImFzc2lnbiIsIlRpY2tldENUQXMiLCJpc0luY29tcGxldGUiLCJpc1VuYXNzaWduZWQiLCJpc1JlYXNzaWduYWJsZSIsIm9uT3BlbkNsaWNrIiwiYXNzaWduVGlja2V0QnV0dG9uIiwidmlld0ZpbmlzaFRpY2tldEJ1dHRvbiIsInJlYXNzaWduQnV0dG9uIiwiX3RpY2tldCR0aWNrZXRfdHlwZSIsIl90aWNrZXQkYmFkZ2UiLCJfdGlja2V0JG9yZGVyMyIsIl90aWNrZXQkb3duZXIzIiwiX2lzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCIsImNhblJlYXNzaWduIiwibW9kYWxPcGVuIiwic2V0TW9kYWxPcGVuIiwicmVhc3NpZ25EYXRlIiwib25SZWFzc2lnbmFibGVQZXJpb2QiLCJpc0Fzc2lnbmFibGUiLCJoYW5kbGVDbG9zZU1vZGFsIiwiaGFuZGxlT3Blbk1vZGFsIiwidmlldyIsIm9yZGVyV3JhcHBlciIsInJlZnVuZE1vZGFsIiwiZGlzYWJsZWRSZWZ1bmQiLCJzZWxlY3RlZCIsImNoZWNrYm94IiwicGwiLCJ0aWNrZXRUaWNrZXRUeXBlIiwiYmFkZ2VGZWF0dXJlV3JhcHBlciIsInByIiwiYmFkZ2UiLCJmZWF0dXJlcyIsImJhZGdlRmVhdHVyZSIsInNyYyIsImltYWdlIiwiYWx0IiwidGlja2V0Tm8iLCJsZyIsIm1pbkhlaWdodCIsInRpY2tldEFjdGlvbkJ1dHRvbnMiLCJvd25lcklkIiwidG90YWxfcmVmdW5kZWRfYW1vdW50IiwiVGFicyIsIlRhYiIsIlJlZnVuZFJlcXVlc3RzTW9kYWwiLCJSZWZ1bmREZXRhaWxzIiwiVGFiUGFuZWwiLCJwcm9wcyIsImluZGV4IiwiaGlkZGVuIiwiT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUiLCJpc01vYmlsZSIsImRldGFpbHNSZXF1aXJlZCIsInNldFZhbHVlIiwiXyIsInNldFRpY2tldHNUb1JlZnVuZCIsInNldFN1Ym1pdFJlcXVlc3QiLCJyZWZ1bmREZXRhaWxzT3BlbiIsInNldFJlZnVuZERldGFpbHNPcGVuIiwidW5zZWxlY3RSZWZ1bmRUaWNrZXRzIiwiZmlsdGVyU2VsZWN0ZWQiLCJzZWxlY3RlZFRpY2tldCIsImNsb3NlU3VibWl0UmVxdWVzdCIsInJlc2V0QWxsUmVmdW5kU3RhdHVzZXMiLCJtb3JlRGV0YWlscyIsImJvcmRlckNvbG9yIiwidGFiQnV0dG9ucyIsIm1kIiwib25SZWZ1bmRTdWNjZXNzQ2xvc2UiLCJvbkNsb3NlU2xpZGVyIiwidXNlVGhlbWUiLCJ1c2VNZWRpYVF1ZXJ5IiwiZ2V0Rm9ybWF0dGVkRGF0ZSIsImJyZWFrcG9pbnRzIiwiZG93biIsImlzTW9iaWxlVmlld2FibGUiLCJzZXRNb2JpbGVWaWV3YWJsZSIsInRpY2tldHNfcGFnZV9jdXJyZW50Iiwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyIiwib3JkZXJUaWNrZXRJbmZvIiwiYmxhY2tCdXR0b24iLCJyb3dTcGFjaW5nIiwiY29sdW1uU3BhY2luZyIsInNtIiwiZGlzcGxheV9ub25lIiwiZmxleERpcmVjdGlvbiIsInVzZU1lbW8iLCJSaWdodERyYXdlciIsIlJlZnVuZFJlcXVlc3RlZFRpY2tldCIsImdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHMiLCJyZXF1ZXN0ZWRUaWNrZXRzIiwiY2xvc2VTbGlkZXIiLCJyZWZ1bmREZXRhaWxzIiwidG9vbHRpcENsYXNzZXMiLCJJbmZvSWNvbiIsIm1vbWVudCIsIlJlZnVuZFN0YXR1cyIsIkdSSURfOCIsIkdSSURfMTIiLCJQQURESU5HXzIiLCJhcHByb3ZlZFJlZnVuZHMiLCJyZWZ1bmQiLCJyZWZ1bmRlZFRheGVzU3VtbWF0b3J5IiwicmVmdW5kZWRfdGF4ZXMiLCJydCIsInRheElkIiwidGF4IiwidG90YWxSZWZ1bmRlZFRheEFtb3VudCIsInJlZnVuZGVkX2Ftb3VudCIsIkh0bWxUb29sdGlwIiwiY2xhc3NlcyIsInBvcHBlciIsIm1heFdpZHRoIiwiYm9yZGVyIiwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyIiwicmVmdW5kRGV0YWlsIiwicmVmdW5kVGlja2V0QXR0ZW5kZWUiLCJhY3Rpb25fZGF0ZSIsImZvcm1hdCIsIkNoaXAiLCJnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvciIsInN0YXR1c0NvbG9yIiwiYnV0dG9uUGlsbCIsIlN0eWxlZEVuZ2luZVByb3ZpZGVyIiwiQ2hlY2tDaXJjbGVJY29uIiwiU1RFUF9PTkUiLCJTVEVQX1RIUkVFIiwiU1RFUF9UV08iLCJzdGVwIiwic2V0U3RlcCIsImVycm9yTXNnIiwic2V0RXJyb3JNc2ciLCJyZWZ1bmRTdWNjZXNzIiwic2V0UmVmdW5kU3VjY2VzcyIsImNvbmZpcm1SZWZ1bmQiLCJnb0JhY2tUb1JlZnVuZCIsInJlZnVuZFRpY2tldHMiLCJyZWZ1bmRTdGVwT25lIiwic3VidGl0bGUiLCJ0aWNrZXRMaXN0IiwiYWN0aW9uQnV0dG9ucyIsImNhbmNlbEJ1dHRvbiIsImNvbnRpbnVlQnV0dG9uIiwicmVmdW5kU3RlcFR3byIsInJlZnVuZEVycm9yTXNnIiwiQ1RBQnV0dG9uV3JhcHBlciIsInJlZnVuZFN0ZXBUaHJlZSIsInJlZnVuZFN1Y2Nlc3NmdWwiLCJzdWNjZXNzTXNnIiwic3VjY2Vzc01zZzIiLCJyZW5kZXJTdGVwcyIsImluamVjdEZpcnN0IiwiVHlwb2dyYXBoeSIsIkRyYXdlciIsIkNsb3NlIiwiYW5jaG9yIiwiTW9kYWxQcm9wcyIsImtlZXBNb3VudGVkIiwiaGVhZGVyIiwiY2xvc2VCdG4iLCJmbG9hdCIsImd1dHRlckJvdHRvbSIsIm9uZU9mVHlwZSIsImdldFN1bW1pdEZvcm1hdHRlZERhdGUiLCJTdW1taXRIZWFkZXIiLCJ3aWRnZXRIZWFkZXIiLCJzdW1taXRUaXRsZURhdGUiLCJ5dXAiLCJBc3NpZ25Gb3JtIiwibmV3X2F0dGVuZGVlX2VtYWlsIiwicGVyc29uYWxfbWVzc2FnZSIsIm11bHRpbGluZSIsIm1pblJvd3MiLCJ1c2VDb250ZXh0IiwiX3RpY2tldCR0eXBlIiwidGlja2V0QXNzaWduZWQiLCJzZXRUaWNrZXRBc3NpZ25lZCIsImN1cnJlbnRUaWNrZXQiLCJvbkFzc2lnblRvT3RoZXIiLCJvbkFzc2lnblRvTWUiLCJvbkNsb3NlRVFGb3JtIiwib25DbG9zZVNhdmVNZXNzYWdlIiwib25TYXZlRVEiLCJyZXNvbHZlIiwidGlja2V0QXNzaWduQ29udGFpbmVyIiwiYWxpZ25DZW50ZXIiLCJvd25lcl9lbWFpbCIsIm9yZGVyTm8iLCJ0aWNrZXRUeXBlIiwiYXNzaWduQnRuIiwiYXR0ZW5kZWVDb250YWluZXIiLCJhdHRlbmRlZUluZm9UaXRsZSIsImF0dGVuZGVlSW5mb05vdGUiLCJBdXRvY29tcGxldGUiLCJxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyIsIkNvbXBhbnlGaWVsZCIsInN1bW1pdElkIiwiaW5wdXRWYWx1ZSIsInNldElucHV0VmFsdWUiLCJvcHRpb25zIiwic2V0T3B0aW9ucyIsInNldEZpZWxkVG91Y2hlZCIsInJlc3VsdHMiLCJuZXdPcHRpb25zIiwiYXV0b0NvbXBsZXRlIiwiZnJlZVNvbG8iLCJpbmNsdWRlSW5wdXRJbkxpc3QiLCJmaWx0ZXJTZWxlY3RlZE9wdGlvbnMiLCJnZXRPcHRpb25MYWJlbCIsIm9wdGlvbiIsInRtcFZhbHVlIiwib25JbnB1dENoYW5nZSIsIm5ld0lucHV0VmFsdWUiLCJmaWx0ZXJPcHRpb25zIiwiZmlsdGVyZWQiLCJpc0V4aXN0aW5nIiwicmVuZGVySW5wdXQiLCJyZW5kZXJPcHRpb24iLCJvcHRpb25Qcm9wcyIsIlRpY2tldERlbGVnYXRpb25GaWVsZHMiLCJkZWxlZ2F0ZWRfZmlyc3RfbmFtZSIsImRlbGVnYXRlZF9sYXN0X25hbWUiLCJUaWNrZXRPd25lckZpZWxkcyIsIlRpY2tldEZvcm0iLCJjYW5FZGl0IiwidGlja2V0TWFuYWdlciIsImFsbG93c0RlbGVnYXRpb24iLCJhbGxvd3NfdG9fZGVsZWdhdGUiLCJyZWR1Y2UiLCJkZWxlZ2F0ZWRUbyIsImFkZGl0aW9uYWxEZXRhaWxzIiwiaW5mb05vdGUiLCJRUkNvZGUiLCJGaWxlRG93bmxvYWRPdXRsaW5lZCIsIkRvd25sb2FkSWNvbiIsIkVtYWlsT3V0bGluZWQiLCJFbWFpbEljb24iLCJ1c2VHZXRUaWNrZXQiLCJUV09fSVRFTSIsInNhdmVNZXNzYWdlIiwic2V0U2F2ZU1lc3NhZ2UiLCJzZW50Q29uZmlybWF0aW9uIiwic2V0U2VudENvbmZpcm1hdGlvbiIsImlzVXNlck9yZGVyT3duZXIiLCJvd25lcl9pZCIsImlzVXNlclRpY2tldE93bmVyIiwiY2FuRWRpdFRpY2tldERhdGEiLCJhbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zIiwiaXNDb21wbGV0ZSIsIm9uU2F2ZSIsImRlc2NyaXB0aW9uIiwiZG93bmxvYWRUaWNrZXRQZGYiLCJvblNlbmRFbWFpbCIsInRpY2tldERldGFpbENvbnRhaW5lciIsInFyQ29kZSIsInFyX2NvZGUiLCJ2aWV3Qm94IiwicXJOb3RlIiwiaXNfdmlydHVhbCIsImFjdGlvbkJ1dHRvbnNDb250YWluZXIiLCJkb3dubG9hZEJ0biIsInNlbmRCdG4iLCJzZW50Iiwib3JkZXJOdW1iZXIiLCJSZWFzc2lnbkZvcm0iLCJ0aWNrZXRSZWFzc2lnbmVkIiwic2V0VGlja2V0UmVhc3NpZ25lZCIsIm9uUmVhc3NpZ24iLCJnZXRMYWJlbHMiLCJoZWFkZXJOb3RlIiwidGlja2V0UmVhc3NpZ25Db250YWluZXIiLCJDb250YWluZXIiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXMiLCJpc0FjdGl2ZSIsInJlZnVuZFJlcXVlc3RzIiwidGlja2V0U3RhdHVzQ29udGFpbmVyIiwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkIiwiYnV0dG9uSW5jb21wbGV0ZSIsImJ1dHRvblVuYXNzaWduZWQiLCJidXR0b25Db21wbGV0ZSIsImJ1dHRvbkNhbmNlbGxlZCIsIkFzc2lnbmVkVG9NZSIsIldpZGdldFRhYnMiLCJ0YWIiLCJzZXRUYWIiLCJoYW5kbGVUYWJDaGFuZ2UiLCJuZXdUYWIiLCJ0YWJXcmFwcGVyIiwiV2lkZ2V0V3JhcHBlciIsIm1lc3NhZ2VDYWxsYmFjayIsImxvYWRpbmciLCJhcGlFcnJvciIsInJlc2V0QXBpRXJyb3IiLCJmaWx0ZXJWYWx1ZSIsInNvcnRWYWx1ZSIsInRpY2tldHNUaXRsZVRleHQiLCJQcm92aWRlciIsInJ1biIsInNtb290aFNjcm9sbFRvIiwidGFyZ2V0U2Nyb2xsVG9wIiwiZHVyYXRpb24iLCJzdGFydFNjcm9sbFRvcCIsInNjcm9sbFRvcCIsImRpc3RhbmNlIiwic3RhcnRUaW1lIiwiYW5pbWF0aW9uU3RlcCIsInRpbWVzdGFtcCIsImVsYXBzZWQiLCJwcm9ncmVzcyIsIk1hdGgiLCJtaW4iLCJlYXNlSW5PdXRRdWFkIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiY29udGFpbmVySWQiLCJpc1ZhbGlkIiwiZXJyb3JBcnJheSIsImVycm9yQ291bnQiLCJlbGVtZW50c1NvcnRlZCIsInJlc3VsdCIsImVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiZWxSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiYSIsImIiLCJnZXRFbGVtZW50QnlJZCIsImNvbnRhaW5lclJlY3QiLCJlbGVtT2ZmZXN0IiwiYW5pbWF0aW9uRHVyYXRpb24iLCJpc1RpY2tldFJlZnVuZGFibGUiLCJTVEFUVVNfQ09NUExFVEUiLCJTVEFUVVNfSU5DT01QTEVURSIsIlNUQVRVU19DQU5DRUxMRUQiLCJTVEFUVVNfVU5BU1NJR05FRCIsIl90aWNrZXQkcHJvbW9fY29kZSIsIl90aWNrZXQkb3duZXI0IiwiX3RpY2tldCR0aWNrZXRfdHlwZTIiLCJfdGlja2V0JHByb21vX2NvZGUyIiwiZ2V0U3RhdHVzIiwiYWxsb3dzRGVsZWdhdGUiLCJwcm9tb19jb2RlIiwiYWxsb3dzX3RvX3JlYXNzaWduIiwiaW5pdFJlYWN0STE4bmV4dCIsIkxhbmd1YWdlRGV0ZWN0b3IiLCJlbiIsImVzIiwidXNlIiwiaW5pdCIsImZhbGxiYWNrTG5nIiwiZGVidWciLCJyZXNvdXJjZXMiLCJ0cmFuc2xhdGlvbiIsImludGVycG9sYXRpb24iLCJlc2NhcGVWYWx1ZSIsIkxPR09VVF9VU0VSIiwiU1RBUlRfTE9BRElORyIsIlNUT1BfTE9BRElORyIsIlJFU0VUX0xPQURJTkciLCJoYXNMb2FkZWRBbGxEYXRhIiwiREVGQVVMVF9GSUxURVJfU1RBVEUiLCJERUZBVUxUX1NUQVRFIiwid2lkZ2V0TG9hZGluZyIsImN1cnJlbnRfdGFiIiwiaXNPcmRlckxvYWRpbmciLCJvcmRlcnNfdG90YWwiLCJ0aWNrZXRfY3VycmVudF9wYWdlIiwidGlja2V0X2xhc3RfcGFnZSIsInRpY2tldF90b3RhbCIsInVzZXJfdGlja2V0c190b3RhbCIsIldpZGdldFJlZHVjZXIiLCJ0b3RhbCIsImxhc3RfcGFnZSIsImZvcm1lck9yZGVyIiwibyIsIl9kYXRhJCIsInVwZGF0ZWRPcmRlciIsInRpY2tldHNfcGFnZV9sYXN0IiwibW8iLCJfdGlja2V0c1JlZnVuZFJlcXVlc3QiLCJ1cGRhdGVkVGlja2V0cyIsInRyciIsInRpY2tldERhdGEiLCJuZXdPcmRlcnMiLCJuZXdUaWNrZXRzIiwiY29uZmlndXJlU3RvcmUiLCJwZXJzaXN0U3RvcmUiLCJwZXJzaXN0UmVkdWNlciIsIkZMVVNIIiwiUkVIWURSQVRFIiwiUEFVU0UiLCJQRVJTSVNUIiwiUFVSR0UiLCJSRUdJU1RFUiIsInN0b3JhZ2UiLCJjb21iaW5lUmVkdWNlcnMiLCJnZXRTdG9yZSIsImNsaWVudElkIiwibG9naW5VcmwiLCJyZWR1Y2VycyIsInN0b3JlIiwicmVkdWNlciIsIm1pZGRsZXdhcmUiLCJnZXREZWZhdWx0TWlkZGxld2FyZSIsInRodW5rIiwiZXh0cmFBcmd1bWVudCIsImltbXV0YWJsZUNoZWNrIiwic2VyaWFsaXphYmxlQ2hlY2siLCJpZ25vcmVkQWN0aW9ucyIsInVzZUluaXRTdG9yZSIsImNvbmZpZyIsInBlcnNpc3RvciIsImluaXRMb2dPdXQiLCJnZXRBY2Nlc3NUb2tlbiIsIlNlbnRyeSIsImNhcHR1cmVFeGNlcHRpb24iLCJMQVNUX0hPVVJfT0ZfMjRfSE9VUiIsIkxBU1RfTUlOVVRFX09GX0hPVVIiLCJPTkVfREFZIiwiU1RBVFVTX1BFTkRJTkciLCJTVEFUVVNfRVJST1IiLCJTVEFUVVNfUFJPQ0VTU0lORyIsIlNUQVRVU19SRUZVTkRfUEVORElORyIsIlNUQVRVU19SRUZVTkRfQVBQUk9WRUQiLCJTVEFUVVNfUkVGVU5EX1JFSkVDVEVEIiwiU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDIiwiU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQyIsIlNUQVRVU19SRUZVTkRfUkVKRUNURURfTEMiLCJKRVNUX1RJTUVPVVRfSU5fTUlMTElTRUMiLCJPTkVfSVRFTSIsIkZJVkVfSVRFTSIsIlNJWF9JVEVNIiwibG9jYWxlIiwiZGVmYXVsdE9wdGlvbnMiLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiLCJmb3JtYXR0ZXIiLCJJbnRsIiwiTnVtYmVyRm9ybWF0IiwiZGF0ZXRpbWUiLCJ0aW1lWm9uZSIsInR6IiwidW5peCIsImFtb3VudCIsInB1cmNoYXNlVGlja2V0VG90YWwiLCJjdXJyZW5jeU9iamVjdCIsInRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZSIsInR0IiwidGlja2V0X3R5cGVfaWQiLCJwdXJjaGFzZVRvdGFsIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZ2V0T3JkZXJUaWNrZXRzIiwiX29yZGVycyQiLCJvcmRlcnMiLCJnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMiLCJ0cyIsInNldEhvdXJzIiwiZGVmYXVsdEN1cnJlbnRUaW1lIiwicm91bmQiLCJEYXRlIiwiZ2V0Tm93IiwidGltZXJTdGF0ZSIsIm5vd1V0YyIsInJlcXVlc3RlZFBhZ2UiLCJjdXJyZW50UGFnZSIsImxhc3RQYWdlIiwiaXNTYW1lUGFnZSIsImlzTGFzdFBhZ2UiLCJjaGVja1N1bW1pdFBhc3QiLCJyZWFzc2lnbl9kYXRlIiwicmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSIsImVuZF9kYXRlIiwiY2hlY2tTdW1taXRTdGFydGVkIiwic3RhcnRfZGF0ZSIsImdldFN1bW1pdERheXNEaWZmIiwic3RhcnREYXkiLCJ0aW1lX3pvbmVfaWQiLCJlbmREYXkiLCJkYXlzIiwiZGlmZiIsImZvcm1hdFN0YXJ0RGF0ZSIsImZvcm1hdEVuZERhdGUiLCJ5ZWFyIiwibW9udGgiLCJzdGFydERhdGUiLCJlbmREYXRlIiwiZ2V0U3VtbWl0TG9jYXRpb24iLCJfc3VtbWl0JGxvY2F0aW9ucyIsImxvY2F0aW9uIiwibG9jYXRpb25zIiwibCIsImNsYXNzX25hbWUiLCJpc19tYWluIiwiY2l0eSIsImNvdW50cnkiLCJ1c2VTdW1taXREZXRhaWxzIiwiX3N1bW1pdCR0aW1lX3pvbmUiLCJfc3VtbWl0JHRpbWVfem9uZTIiLCJmb3JtYXR0ZWREYXRlIiwiZm9ybWF0dGVkUmVhc3NpZ25EYXRlIiwidGltZV96b25lIiwiZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSIsImlzUGFzdCIsImlzU3RhcnRlZCIsInN0YXR1c0RhdGEiLCJnZXRUaWNrZXRTdGF0dXNLZXkiLCJnZXRUaWNrZXRTdGF0dXNEYXRhIiwiaXNTdW1taXRQYXN0IiwiZ2V0VGlja2V0Um9sZSIsImZlYXR1cmUiLCJnZXRUaWNrZXRUeXBlIiwiZmluYWxfYW1vdW50IiwicnIiLCJnZXRSZWZ1bmRlZFJlcXVlc3RlZFRpY2tldHMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXMyIiwiYWxsVGlja2V0cyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM0IiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNSIsImdldFJlZnVuZGVkUmVxdWVzdGVkU3RhdHVzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNiIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczciLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM4IiwiZ2V0VHlwZVZhbGlkYXRpb24iLCJzY2hlbWEiLCJvbmVPZiIsIm9mIiwiaW5jbHVkZURlbGVnYXRpb24iLCJpbmNsdWRlQXR0ZW5kZWVJbmZvIiwiaW5jbHVkZURpc2NsYWltZXIiLCJvbmx5UmVsZXZhbnQiLCJzdWJRdWVzdGlvblNsdWciLCJzdWJBbnN3ZXIiLCJtYXRjaCIsImRpc2NsYWltZXJNYW5kYXRvcnkiLCJsYXp5IiwidHlwZUVycm9yIiwiX3Ekc3ViX3F1ZXN0aW9uX3J1bGVzMiIsInN1YlF1ZXN0aW9uIiwibnVsbGFibGUiLCJ3aGVuIiwiaXMiLCJxdWVzdGlvbkFucyIsInNjaCIsIlBlcnNpc3RHYXRlIiwiTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQiLCJzdXBwb3J0RW1haWwiLCJoYW5kbGVCZWZvcmVMaWZ0IiwiVVJMU2VhcmNoUGFyYW1zIiwic2VhcmNoIiwiZmx1c2giLCJoYXMiLCJvbkJlZm9yZUxpZnQiXSwic291cmNlUm9vdCI6IiJ9
|