@agilemotion/oui-react-js 2.0.26 → 2.0.28
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/AuthImage.js +68 -0
- package/dist/RestService.js +7 -2
- package/dist/components/AlertBar.js +2 -2
- package/dist/components/Button.js +59 -7
- package/dist/components/DataGrid.js +42 -16
- package/dist/components/DocumentTemplateDesignerComponent.js +2 -2
- package/dist/components/FileThumb.js +48 -15
- package/dist/components/TabPanel.js +14 -3
- package/dist/components/WordDocumentViewer.js +2 -2
- package/dist/components/dashboard/components/blackDashboard/sidebar/FoldingTabSidebar.js +6 -2
- package/dist/components/form/BaseField.js +4 -2
- package/dist/components/form/Checkbox.js +3 -2
- package/dist/components/form/FieldSet.js +2 -2
- package/dist/components/form/Form.css +1 -1
- package/dist/components/form/Form.js +40 -38
- package/dist/components/form/GridField.js +6 -5
- package/dist/components/form/RadioGroup.js +5 -5
- package/dist/components/form/UploadField.js +40 -7
- package/dist/components/layout/Layout.js +9 -1
- package/dist/components/layout/View.css +2 -0
- package/dist/components/media/ChatViewer.js +103 -0
- package/dist/components/media/TrainingRoom.js +5 -5
- package/dist/components/media/VCRoomParticipant.js +11 -11
- package/dist/components/media/VCRoomWorkspace.js +19 -4
- package/dist/components/media/VideoPlayer.js +61 -7
- package/dist/components/media/chat/ChatRoom.js +37 -28
- package/dist/components/media/chat/PollContainer.js +85 -18
- package/dist/documentDownload.js +79 -0
- package/dist/js/ProcurementMeetings.js +11 -4
- package/dist/view/PortalDashboard.js +6 -5
- package/package.json +1 -1
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useDocumentObjectUrl = exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _documentDownload = require("./documentDownload");
|
|
9
|
+
const _excluded = ["repositoryId", "fallbackSrc"];
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
12
|
+
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
13
|
+
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
14
|
+
/**
|
|
15
|
+
* Resolve a docs-stored document to an object URL, fetched with header auth (no tokens in the URL).
|
|
16
|
+
* Returns null until it loads / when {@code repositoryId} is falsy. The object URL is revoked on
|
|
17
|
+
* unmount or when the id changes, so there is no leak.
|
|
18
|
+
*
|
|
19
|
+
* <p>Use this for background-image displays; use {@link AuthImage} for a plain {@code <img>}.
|
|
20
|
+
*/
|
|
21
|
+
const useDocumentObjectUrl = repositoryId => {
|
|
22
|
+
const [objectUrl, setObjectUrl] = _react.default.useState(null);
|
|
23
|
+
_react.default.useEffect(() => {
|
|
24
|
+
if (!repositoryId) {
|
|
25
|
+
setObjectUrl(null);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
let active = true;
|
|
29
|
+
let created = null;
|
|
30
|
+
(0, _documentDownload.fetchDocumentObjectUrl)(repositoryId).then(url => {
|
|
31
|
+
if (active) {
|
|
32
|
+
created = url;
|
|
33
|
+
setObjectUrl(url);
|
|
34
|
+
} else {
|
|
35
|
+
URL.revokeObjectURL(url);
|
|
36
|
+
}
|
|
37
|
+
}).catch(() => {});
|
|
38
|
+
return () => {
|
|
39
|
+
active = false;
|
|
40
|
+
if (created) {
|
|
41
|
+
URL.revokeObjectURL(created);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
}, [repositoryId]);
|
|
45
|
+
return objectUrl;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* {@code <img>} for a docs-stored image, fetched with header auth as an object URL — so the access
|
|
50
|
+
* token never appears in the URL/query string. Shows {@code fallbackSrc} (e.g. a not-yet-persisted
|
|
51
|
+
* base64 payload, or a placeholder) while loading or when there is no {@code repositoryId}. Any
|
|
52
|
+
* other props (alt, style, className, onClick, ...) pass through to the underlying image.
|
|
53
|
+
*/
|
|
54
|
+
exports.useDocumentObjectUrl = useDocumentObjectUrl;
|
|
55
|
+
const AuthImage = _ref => {
|
|
56
|
+
let {
|
|
57
|
+
repositoryId,
|
|
58
|
+
fallbackSrc
|
|
59
|
+
} = _ref,
|
|
60
|
+
imgProps = _objectWithoutProperties(_ref, _excluded);
|
|
61
|
+
const objectUrl = useDocumentObjectUrl(repositoryId);
|
|
62
|
+
const src = objectUrl || fallbackSrc || undefined;
|
|
63
|
+
return /*#__PURE__*/_react.default.createElement("img", _extends({
|
|
64
|
+
src: src
|
|
65
|
+
}, imgProps));
|
|
66
|
+
};
|
|
67
|
+
var _default = exports.default = AuthImage;
|
|
68
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9kb2N1bWVudERvd25sb2FkIiwiX2V4Y2x1ZGVkIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwibiIsImFyZ3VtZW50cyIsImxlbmd0aCIsInQiLCJyIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiYXBwbHkiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJvIiwiaSIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiaW5kZXhPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwidXNlRG9jdW1lbnRPYmplY3RVcmwiLCJyZXBvc2l0b3J5SWQiLCJvYmplY3RVcmwiLCJzZXRPYmplY3RVcmwiLCJSZWFjdCIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwiYWN0aXZlIiwiY3JlYXRlZCIsImZldGNoRG9jdW1lbnRPYmplY3RVcmwiLCJ0aGVuIiwidXJsIiwiVVJMIiwicmV2b2tlT2JqZWN0VVJMIiwiY2F0Y2giLCJleHBvcnRzIiwiQXV0aEltYWdlIiwiX3JlZiIsImZhbGxiYWNrU3JjIiwiaW1nUHJvcHMiLCJzcmMiLCJ1bmRlZmluZWQiLCJjcmVhdGVFbGVtZW50IiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi9zcmMvbGliL0F1dGhJbWFnZS5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7ZmV0Y2hEb2N1bWVudE9iamVjdFVybH0gZnJvbSAnLi9kb2N1bWVudERvd25sb2FkJztcblxuLyoqXG4gKiBSZXNvbHZlIGEgZG9jcy1zdG9yZWQgZG9jdW1lbnQgdG8gYW4gb2JqZWN0IFVSTCwgZmV0Y2hlZCB3aXRoIGhlYWRlciBhdXRoIChubyB0b2tlbnMgaW4gdGhlIFVSTCkuXG4gKiBSZXR1cm5zIG51bGwgdW50aWwgaXQgbG9hZHMgLyB3aGVuIHtAY29kZSByZXBvc2l0b3J5SWR9IGlzIGZhbHN5LiBUaGUgb2JqZWN0IFVSTCBpcyByZXZva2VkIG9uXG4gKiB1bm1vdW50IG9yIHdoZW4gdGhlIGlkIGNoYW5nZXMsIHNvIHRoZXJlIGlzIG5vIGxlYWsuXG4gKlxuICogPHA+VXNlIHRoaXMgZm9yIGJhY2tncm91bmQtaW1hZ2UgZGlzcGxheXM7IHVzZSB7QGxpbmsgQXV0aEltYWdlfSBmb3IgYSBwbGFpbiB7QGNvZGUgPGltZz59LlxuICovXG5leHBvcnQgY29uc3QgdXNlRG9jdW1lbnRPYmplY3RVcmwgPSAocmVwb3NpdG9yeUlkKSA9PiB7XG4gICAgY29uc3QgW29iamVjdFVybCwgc2V0T2JqZWN0VXJsXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFyZXBvc2l0b3J5SWQpIHtcbiAgICAgICAgICAgIHNldE9iamVjdFVybChudWxsKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgbGV0IGNyZWF0ZWQgPSBudWxsO1xuICAgICAgICBmZXRjaERvY3VtZW50T2JqZWN0VXJsKHJlcG9zaXRvcnlJZClcbiAgICAgICAgICAgIC50aGVuKCh1cmwpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQgPSB1cmw7XG4gICAgICAgICAgICAgICAgICAgIHNldE9iamVjdFVybCh1cmwpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IHt9KTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKGNyZWF0ZWQpIHtcbiAgICAgICAgICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKGNyZWF0ZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH0sIFtyZXBvc2l0b3J5SWRdKTtcblxuICAgIHJldHVybiBvYmplY3RVcmw7XG59O1xuXG4vKipcbiAqIHtAY29kZSA8aW1nPn0gZm9yIGEgZG9jcy1zdG9yZWQgaW1hZ2UsIGZldGNoZWQgd2l0aCBoZWFkZXIgYXV0aCBhcyBhbiBvYmplY3QgVVJMIOKAlCBzbyB0aGUgYWNjZXNzXG4gKiB0b2tlbiBuZXZlciBhcHBlYXJzIGluIHRoZSBVUkwvcXVlcnkgc3RyaW5nLiBTaG93cyB7QGNvZGUgZmFsbGJhY2tTcmN9IChlLmcuIGEgbm90LXlldC1wZXJzaXN0ZWRcbiAqIGJhc2U2NCBwYXlsb2FkLCBvciBhIHBsYWNlaG9sZGVyKSB3aGlsZSBsb2FkaW5nIG9yIHdoZW4gdGhlcmUgaXMgbm8ge0Bjb2RlIHJlcG9zaXRvcnlJZH0uIEFueVxuICogb3RoZXIgcHJvcHMgKGFsdCwgc3R5bGUsIGNsYXNzTmFtZSwgb25DbGljaywgLi4uKSBwYXNzIHRocm91Z2ggdG8gdGhlIHVuZGVybHlpbmcgaW1hZ2UuXG4gKi9cbmNvbnN0IEF1dGhJbWFnZSA9ICh7cmVwb3NpdG9yeUlkLCBmYWxsYmFja1NyYywgLi4uaW1nUHJvcHN9KSA9PiB7XG4gICAgY29uc3Qgb2JqZWN0VXJsID0gdXNlRG9jdW1lbnRPYmplY3RVcmwocmVwb3NpdG9yeUlkKTtcbiAgICBjb25zdCBzcmMgPSBvYmplY3RVcmwgfHwgZmFsbGJhY2tTcmMgfHwgdW5kZWZpbmVkO1xuICAgIHJldHVybiA8aW1nIHNyYz17c3JjfSB7Li4uaW1nUHJvcHN9Lz47XG59O1xuXG5leHBvcnQgZGVmYXVsdCBBdXRoSW1hZ2U7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FB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
|
package/dist/RestService.js
CHANGED
|
@@ -211,7 +211,12 @@ class RestService {
|
|
|
211
211
|
if (_Utils.default.isNull(parameter.type)) {
|
|
212
212
|
parameter.type = 'String';
|
|
213
213
|
}
|
|
214
|
-
|
|
214
|
+
|
|
215
|
+
// The validator lives on the view config (parameterConfig), NOT on the
|
|
216
|
+
// freshly-built outbound `parameter` object — reading parameter.validator
|
|
217
|
+
// here always saw undefined, so required/nullable RPC params were never
|
|
218
|
+
// enforced and the call fired with a null value.
|
|
219
|
+
if (!_Utils.default.isNull(parameterConfig.validator) && (parameterConfig.validator.nullable && !_Utils.default.evaluateBooleanExpression(parameterConfig.validator.nullable, parameter.name) || _Utils.default.evaluateBooleanExpression(parameterConfig.validator.required && _Utils.default.evaluateBooleanExpression(parameterConfig.validator.required, parameter.name))) && this.isParamValueNull(parameter.value)) {
|
|
215
220
|
reject({
|
|
216
221
|
errorType: 'INVALID_PARAMETER',
|
|
217
222
|
parameter
|
|
@@ -416,4 +421,4 @@ const invokeRest = request => {
|
|
|
416
421
|
return instance.invokeRest(request);
|
|
417
422
|
};
|
|
418
423
|
exports.invokeRest = invokeRest;
|
|
419
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfVXRpbHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdFByb21pc2VUcmFja2VyIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9FdmVudCIsIl9PYnNlcnZhYmxlIiwiX0V2ZW50VHlwZSIsIl9wcm9wVHlwZXMiLCJfUmVzdFV0aWxzIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwib3duS2V5cyIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsImxvY2F0aW9uIiwiZXhwb3J0cyIsIndpbmRvdyIsInByb3RvY29sIiwiaG9zdG5hbWUiLCJzdGF0dXMiLCJyZXNwb25zZSIsIm9rIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJqc29uIiwidGV4dCIsIlJlc3RTZXJ2aWNlIiwiaXNQYXJhbVZhbHVlTnVsbCIsInBhcmFtVmFsdWUiLCJVdGlscyIsImlzTnVsbCIsImhhc093blByb3BlcnR5IiwiaW52b2tlUmVzdCIsInJlcXVlc3QiLCJzZXJ2aWNlIiwidXJsIiwic3RhcnRzV2l0aCIsImNvbmNhdCIsImFwcGxpY2F0aW9uTWFuYWdlciIsImdldENvbnRleHRSb290IiwicmVxdWVzdEJvZHkiLCJoZWFkZXJzIiwicGFyYW1ldGVycyIsInF1ZXJ5U3RyaW5nIiwicGF0aFBhcmFtZXRlcnMiLCJyZXF1ZXN0Qm9keVBhcmFtRm91bmQiLCJwYXJhbWV0ZXIiLCJwYXJhbWV0ZXJWYWx1ZSIsInJlc29sdmVQYXJhbWV0ZXJWYWx1ZSIsImV2ZW50IiwiZGF0YSIsInZhbGlkYXRvciIsIm51bGxhYmxlIiwiZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbiIsIm5hbWUiLCJyZXF1aXJlZCIsImVycm9yVHlwZSIsImh0dHBQYXJhbWV0ZXJUeXBlIiwiaW5jbHVkZVBhcmFtZXRlclR5cGVzIiwidHlwZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJyZXNvbHZlZFZhbHVlIiwiZW5jb2RlIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiaW5zdGFuY2VUeXBlIiwiaW5kZXhPZiIsInJlcGxhY2UiLCJFcnJvciIsImNvbnRlbnRUeXBlIiwibWV0aG9kIiwidG9VcHBlckNhc2UiLCJmZXRjaFdpdGhDdXN0b21Db25maWciLCJ2aWV3SWQiLCJzZXJ2aWNlVHlwZSIsInNlY3VyZSIsImRvd25sb2FkIiwidGhlbiIsImNhdGNoIiwiYm9keSIsInRyYWNrIiwicGF0aCIsImdldFByb3BlcnR5Q2hhaW5QYXRoIiwicmV0dXJuVmFsdWVCaW5kaW5nIiwidmFsdWVPYmplY3QiLCJwcm9wZXJ0eSIsInByb2Nlc3NTdWNjZXNzZnVsUmVzcG9uc2VEYXRhIiwiY29tcG9uZW50Iiwic3VjY2Vzc01lc3NhZ2UiLCJpbnZva2VScGMiLCJycGNSZXF1ZXN0IiwiaWQiLCJzcGxpdCIsInNlcnZpY2VJZCIsInByb2NlZHVyZU5hbWUiLCJtb2R1bGUiLCJ0b0xvd2VyQ2FzZSIsInBhcmFtZXRlckNvbmZpZyIsImluZGV4IiwidmFsIiwiYWNjZXNzVG9rZW4iLCJzZXNzaW9uU3RvcmFnZSIsImdldEl0ZW0iLCJpZFRva2VuIiwiRm9ybURhdGEiLCJmZXRjaENvbmZpZyIsImNvbmZpZyIsImFjY2VwdCIsImdldEFwcGxpY2F0aW9uUHJpbWFyeUNvbG9yIiwiZ2V0QXBwbGljYXRpb25TZWNvbmRhcnlDb2xvciIsImZldGNoIiwiZXJyb3JEYXRhIiwibWVzc2FnZSIsInN0YXR1c1RleHQiLCJjb250ZW50RGlzcG9zaXRpb24iLCJnZXQiLCJmaWxlbmFtZSIsImluY2x1ZGVzIiwidHJpbSIsImJsb2IiLCJfcmVmIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiYSIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImhyZWYiLCJhcHBlbmRDaGlsZCIsImNsaWNrIiwicmVtb3ZlQ2hpbGQiLCJyZXZva2VPYmplY3RVUkwiLCJlcnJvciIsImNvbnNvbGUiLCJ0cmFja1Byb21pc2UiLCJleGVjdXRlRmV0Y2giLCJlbmNvZGVVUkkiLCJlbmRzV2l0aCIsImNsZWFyIiwibmF2aWdhdGUiLCJ0b1N0cmluZyIsInBhcnNlIiwiaWdub3JlZCIsImRhdGFUeXBlIiwiRXZlbnQiLCJldmVudE1hbmFnZXIiLCJmaXJlRXZlbnQiLCJFdmVudFR5cGUiLCJNRVNTQUdFX0FSUklWRUQiLCJtZXNzYWdlVHlwZSIsInBvcHVsYXRlVGVtcGxhdGUiLCJpbnN0YW5jZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9saWIvUmVzdFNlcnZpY2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0IFV0aWxzIGZyb20gJy4vVXRpbHMnO1xuaW1wb3J0IHt0cmFja1Byb21pc2V9IGZyb20gJ3JlYWN0LXByb21pc2UtdHJhY2tlcic7XG5pbXBvcnQgYXBwbGljYXRpb25NYW5hZ2VyIGZyb20gJy4vQXBwbGljYXRpb25NYW5hZ2VyJztcbmltcG9ydCBFdmVudCBmcm9tICcuL2V2ZW50L0V2ZW50JztcbmltcG9ydCBldmVudE1hbmFnZXIgZnJvbSAnLi9ldmVudC9PYnNlcnZhYmxlJztcbmltcG9ydCBFdmVudFR5cGUgZnJvbSAnLi9ldmVudC9FdmVudFR5cGUnO1xuaW1wb3J0IHtpbnN0YW5jZU9mfSBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtkb3dubG9hZCwgcG9zdERhdGEsIHNlbmRSZXF1ZXN0fSBmcm9tIFwiLi9SZXN0VXRpbHNcIjtcblxuZXhwb3J0IGNvbnN0IGxvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTtcbmNvbnN0IHN0YXR1cyA9IChyZXNwb25zZSkgPT4ge1xuICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3BvbnNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVzcG9uc2UpO1xuICAgIH1cbn07XG5cbmNvbnN0IGpzb24gPSAocmVzcG9uc2UpID0+IHtcbiAgICByZXR1cm4gcmVzcG9uc2UudGV4dCgpO1xufTtcblxuY2xhc3MgUmVzdFNlcnZpY2Uge1xuICAgIGlzUGFyYW1WYWx1ZU51bGwocGFyYW1WYWx1ZSkge1xuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHBhcmFtVmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXJhbVZhbHVlLmhhc093blByb3BlcnR5KCd2YWx1ZScpID8gVXRpbHMuaXNOdWxsKHBhcmFtVmFsdWUudmFsdWUpIDogZmFsc2U7XG4gICAgfVxuXG4gICAgaW52b2tlUmVzdChyZXF1ZXN0KSB7XG4gICAgICAgIGxldCBzZXJ2aWNlID0gcmVxdWVzdC5zZXJ2aWNlO1xuICAgICAgICBsZXQgdXJsID0gc2VydmljZS51cmwuc3RhcnRzV2l0aCgnaHR0cDovLycpIHx8IHNlcnZpY2UudXJsLnN0YXJ0c1dpdGgoJ2h0dHBzOi8vJykgP1xuICAgICAgICAgICAgc2VydmljZS51cmwgOiBsb2NhdGlvbiArIGAke2FwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpICsgc2VydmljZS51cmx9YDtcbiAgICAgICAgbGV0IHJlcXVlc3RCb2R5ID0gbnVsbDtcbiAgICAgICAgbGV0IGhlYWRlcnMgPSBzZXJ2aWNlLmhlYWRlcnM7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHNlcnZpY2UucGFyYW1ldGVycykpIHtcbiAgICAgICAgICAgICAgICBsZXQgcXVlcnlTdHJpbmcgPSAnJztcbiAgICAgICAgICAgICAgICBsZXQgcGF0aFBhcmFtZXRlcnMgPSAnJztcbiAgICAgICAgICAgICAgICBsZXQgcmVxdWVzdEJvZHlQYXJhbUZvdW5kID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBwYXJhbWV0ZXIgb2Ygc2VydmljZS5wYXJhbWV0ZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwYXJhbWV0ZXJWYWx1ZSA9IGFwcGxpY2F0aW9uTWFuYWdlci5yZXNvbHZlUGFyYW1ldGVyVmFsdWUocGFyYW1ldGVyLCByZXF1ZXN0LmV2ZW50ID8gcmVxdWVzdC5ldmVudC5kYXRhIDogbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHBhcmFtZXRlci52YWxpZGF0b3IpXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiAoKHBhcmFtZXRlci52YWxpZGF0b3IubnVsbGFibGUgJiYgIVV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24ocGFyYW1ldGVyLnZhbGlkYXRvci5udWxsYWJsZSwgcGFyYW1ldGVyLm5hbWUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJhbWV0ZXIudmFsaWRhdG9yLnJlcXVpcmVkICYmIFV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24ocGFyYW1ldGVyLnZhbGlkYXRvci5yZXF1aXJlZCwgcGFyYW1ldGVyLm5hbWUpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy5pc1BhcmFtVmFsdWVOdWxsKHBhcmFtZXRlclZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvclR5cGU6ICdJTlZBTElEX1BBUkFNRVRFUicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBsZXQgaHR0cFBhcmFtZXRlclR5cGUgPSBwYXJhbWV0ZXIuaHR0cFBhcmFtZXRlclR5cGU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwoaHR0cFBhcmFtZXRlclR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwUGFyYW1ldGVyVHlwZSA9ICdRVUVSWV9QQVJBTUVURVInO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGh0dHBQYXJhbWV0ZXJUeXBlID09PSAnUVVFUllfUEFSQU1FVEVSJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocGFyYW1ldGVyVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHF1ZXJ5U3RyaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlTdHJpbmcgKz0gJyYnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHNlcnZpY2UuaW5jbHVkZVBhcmFtZXRlclR5cGVzKSAmJiBzZXJ2aWNlLmluY2x1ZGVQYXJhbWV0ZXJUeXBlcyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeVN0cmluZyArPSBwYXJhbWV0ZXJWYWx1ZS50eXBlICsgJzonO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5U3RyaW5nICs9IHBhcmFtZXRlci5uYW1lICsgJz0nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5U3RyaW5nICs9ICh0eXBlb2YgcGFyYW1ldGVyVmFsdWUudmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBwYXJhbWV0ZXJWYWx1ZS52YWx1ZSA9PT0gJ251bWJlcicgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJWYWx1ZS52YWx1ZSA6IEpTT04uc3RyaW5naWZ5KHBhcmFtZXRlclZhbHVlLnZhbHVlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoaHR0cFBhcmFtZXRlclR5cGUgPT09ICdQQVRIX1ZBUklBQkxFJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocGFyYW1ldGVyVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc29sdmVkVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtZXRlci5lbmNvZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRWYWx1ZSA9IHR5cGVvZiBwYXJhbWV0ZXJWYWx1ZS52YWx1ZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHBhcmFtZXRlclZhbHVlLnZhbHVlKSkgOiBwYXJhbWV0ZXJWYWx1ZS5pbnN0YW5jZVR5cGUgPT09ICdUeXBlZFZhbHVlJyA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtZXRlclZhbHVlLnZhbHVlKSA6IGVuY29kZVVSSUNvbXBvbmVudChwYXJhbWV0ZXJWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRWYWx1ZSA9IHR5cGVvZiBwYXJhbWV0ZXJWYWx1ZS52YWx1ZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gSlNPTi5zdHJpbmdpZnkocGFyYW1ldGVyVmFsdWUudmFsdWUpIDogcGFyYW1ldGVyVmFsdWUuaW5zdGFuY2VUeXBlID09PSAnVHlwZWRWYWx1ZScgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlclZhbHVlLnZhbHVlIDogcGFyYW1ldGVyVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHBhcmFtZXRlciBoYXMgYSBuYW1lIGFuZCB0aGUgVVJMIGNvbnRhaW5zIHtuYW1lfSwgcmVwbGFjZSB0aGUgcGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwYXJhbWV0ZXIubmFtZSkgJiYgdXJsLmluZGV4T2YoJ3snICsgcGFyYW1ldGVyLm5hbWUgKyAnfScpID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gdXJsLnJlcGxhY2UoJ3snICsgcGFyYW1ldGVyLm5hbWUgKyAnfScsIHJlc29sdmVkVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJhY2t3YXJkIGNvbXBhdGliaWxpdHk6IGFwcGVuZCB0byBlbmQgb2YgVVJMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhQYXJhbWV0ZXJzICs9ICcvJyArIHJlc29sdmVkVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGh0dHBQYXJhbWV0ZXJUeXBlID09PSAnSEVBREVSJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocGFyYW1ldGVyVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFoZWFkZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnMgPSB7fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnNbcGFyYW1ldGVyLm5hbWVdID0gcGFyYW1ldGVyVmFsdWUudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoaHR0cFBhcmFtZXRlclR5cGUgPT09ICdSRVFVRVNUX0JPRFknKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVxdWVzdEJvZHlQYXJhbUZvdW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihcIk9ubHkgb25lIHJlcXVlc3QgYm9keSBpcyBwZXJtaXR0ZWRcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1hcmsgdGhlIHNsb3QgYXMgdGFrZW4gcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgbnVsbC4gQSBzZWNvbmQgUkVRVUVTVF9CT0RZIHBhcmFtIGlzIGEgY29uZmlnIGJ1Z1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWl0aGVyIHdheSwgYW5kIHdlIHdhbnQgaXQgdG8gc3VyZmFjZSBsb3VkbHkuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Qm9keVBhcmFtRm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzUGFyYW1WYWx1ZU51bGwocGFyYW1ldGVyVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEJvZHkgPSBwYXJhbWV0ZXJWYWx1ZS5pbnN0YW5jZVR5cGUgPT09ICdUeXBlZFZhbHVlJyA/IHBhcmFtZXRlclZhbHVlLnZhbHVlIDogcGFyYW1ldGVyVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAocGF0aFBhcmFtZXRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB1cmwgKz0gcGF0aFBhcmFtZXRlcnM7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHF1ZXJ5U3RyaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdXJsICs9ICc/JztcbiAgICAgICAgICAgICAgICAgICAgdXJsICs9IHF1ZXJ5U3RyaW5nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGNvbnRlbnRUeXBlID0gbnVsbDtcblxuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoaGVhZGVycykpIHtcbiAgICAgICAgICAgICAgICBjb250ZW50VHlwZSA9IGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBSZXNvbHZlIHRoZSBIVFRQIG1ldGhvZC4gSG9ub3Igc2VydmljZS5tZXRob2Qgd2hlbiBwcm92aWRlZCBzb1xuICAgICAgICAgICAgLy8gY2FsbGVycyBjYW4gaXNzdWUgREVMRVRFLCBQVVQsIFBBVENIIChub3QganVzdCBHRVQvUE9TVCkuXG4gICAgICAgICAgICAvLyBEZWZhdWx0OiBQT1NUIHdoZW4gYSBib2R5IHdhcyBib3VuZCwgR0VUIG90aGVyd2lzZSDigJQgcHJlc2VydmVzXG4gICAgICAgICAgICAvLyB0aGUgaGlzdG9yaWNhbCBiZWhhdmlvdXIgZm9yIGNhbGxlcnMgdGhhdCBvbWl0IHNlcnZpY2UubWV0aG9kLlxuICAgICAgICAgICAgY29uc3QgbWV0aG9kID0gc2VydmljZS5tZXRob2RcbiAgICAgICAgICAgICAgICA/IHNlcnZpY2UubWV0aG9kLnRvVXBwZXJDYXNlKClcbiAgICAgICAgICAgICAgICA6IChyZXF1ZXN0Qm9keSAhPT0gbnVsbCA/ICdQT1NUJyA6ICdHRVQnKTtcblxuICAgICAgICAgICAgaWYgKHJlcXVlc3RCb2R5ICE9PSBudWxsICYmIG1ldGhvZCA9PT0gJ0dFVCcpIHtcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdBIHJlcXVlc3QgYm9keSBwYXJhbWV0ZXIgY2Fubm90IGJlIHNwZWNpZmllZCBmb3IgYSBHRVQgcmVxdWVzdCcpKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIERvd25sb2FkIHBhdGggKFBERiAvIEV4Y2VsKSBpcyBHRVQtb25seSBhbmQgdXNlcyBhIHNlcGFyYXRlXG4gICAgICAgICAgICAvLyBmZXRjaCBzaGFwZSAoYmxvYiBoYW5kbGluZyk7IGJyYW5jaCBmaXJzdC5cbiAgICAgICAgICAgIGlmIChtZXRob2QgPT09ICdHRVQnICYmIChjb250ZW50VHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3BkZicgfHwgY29udGVudFR5cGUgPT09ICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hXaXRoQ3VzdG9tQ29uZmlnKHtcbiAgICAgICAgICAgICAgICAgICAgdmlld0lkOiByZXF1ZXN0LnZpZXdJZCxcbiAgICAgICAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlVHlwZTogcmVxdWVzdC5zZXJ2aWNlLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgIHNlY3VyZTogcmVxdWVzdC5zZWN1cmUsXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgICAgICAgICAgICAgIGRvd25sb2FkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzXG4gICAgICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9KS5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTaW5nbGUgZGlzcGF0Y2ggZm9yIEdFVCAvIFBPU1QgLyBQVVQgLyBQQVRDSCAvIERFTEVURSAvIGV0Yy5cbiAgICAgICAgICAgIC8vIEJvZHkgaXMgcGFzc2VkIHRocm91Z2g7IHRoZSBmZXRjaCBsYXllciBkcm9wcyBpdCBmb3IgdmVyYnMgdGhhdFxuICAgICAgICAgICAgLy8gZm9yYmlkIG9uZS4gREVMRVRFIHdpdGggYSBib2R5IGlzIHVuY29tbW9uIGJ1dCBwZXJtaXR0ZWQgYnlcbiAgICAgICAgICAgIC8vIEhUVFAg4oCUIHdlIGRvbid0IGJsb2NrIGl0IGhlcmUuXG4gICAgICAgICAgICAvLyBTZWN1cmUgYnkgZGVmYXVsdDogYXR0YWNoIHRoZSBzZXNzaW9uIHRva2VuIHdoZW5ldmVyIG9uZSBleGlzdHMuXG4gICAgICAgICAgICAvLyBObyBVUkwgc3BlY2lhbC1jYXNpbmcg4oCUIHByZS1hdXRoIHN1cmZhY2VzICh2aWV3L3NlY3VyaXR5LyogbG9naW4sXG4gICAgICAgICAgICAvLyByZWdpc3RlciwgcmVzZXQpIGNsZWFyIHNlc3Npb25TdG9yYWdlIG9uIG1vdW50LCBzbyBub3RoaW5nIGlzXG4gICAgICAgICAgICAvLyBhdHRhY2hlZCBvbiB0aG9zZSBzY3JlZW5zLiBgc2VjdXJlYCBoZXJlIG9ubHkgcHJldmVudHMgbGVha2luZyBhXG4gICAgICAgICAgICAvLyB0b2tlbiB0byBhIHBsYWluLWh0dHAgZW5kcG9pbnQ7IHRoZSBhdHRhY2htZW50IGl0c2VsZiBpc1xuICAgICAgICAgICAgLy8gcHJlc2VuY2UtYmFzZWQgaW4gZmV0Y2hXaXRoQ3VzdG9tQ29uZmlnLCBzbyBhIHN0YWxlL2VtcHR5IHRva2VuIGlzXG4gICAgICAgICAgICAvLyBuZXZlciBzZW50LlxuICAgICAgICAgICAgdGhpcy5mZXRjaFdpdGhDdXN0b21Db25maWcoe1xuICAgICAgICAgICAgICAgIHZpZXdJZDogcmVxdWVzdC52aWV3SWQsXG4gICAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgICAgIHNlcnZpY2VUeXBlOiByZXF1ZXN0LnNlcnZpY2UudHlwZSxcbiAgICAgICAgICAgICAgICBtZXRob2QsXG4gICAgICAgICAgICAgICAgc2VjdXJlOiAhc2VydmljZS51cmwuc3RhcnRzV2l0aCgnaHR0cDovLycpLFxuICAgICAgICAgICAgICAgIGJvZHk6IHJlcXVlc3RCb2R5LFxuICAgICAgICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgdHJhY2s6IHJlcXVlc3QudHJhY2sgIT09IGZhbHNlXG4gICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBwYXRoID0gVXRpbHMuZ2V0UHJvcGVydHlDaGFpblBhdGgocmVxdWVzdC5yZXR1cm5WYWx1ZUJpbmRpbmcpO1xuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHBhdGgudmFsdWVPYmplY3QpICYmICFVdGlscy5pc051bGwocGF0aC5wcm9wZXJ0eSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aC52YWx1ZU9iamVjdFtwYXRoLnByb3BlcnR5XSA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJlc29sdmUodGhpcy5wcm9jZXNzU3VjY2Vzc2Z1bFJlc3BvbnNlRGF0YShyZXF1ZXN0LmNvbXBvbmVudCwgcmVzcG9uc2UsIHJlcXVlc3Qudmlld0lkLCByZXF1ZXN0LnN1Y2Nlc3NNZXNzYWdlKSk7XG4gICAgICAgICAgICB9KS5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpbnZva2VScGMocmVxdWVzdCkge1xuICAgICAgICBsZXQgcnBjUmVxdWVzdCA9IHt9O1xuICAgICAgICBycGNSZXF1ZXN0LmlkID0gcmVxdWVzdC52aWV3SWQ7XG5cbiAgICAgICAgbGV0IHNwbGl0ID0gcmVxdWVzdC5zZXJ2aWNlLnNlcnZpY2VJZC5zcGxpdCgnLicpO1xuICAgICAgICBycGNSZXF1ZXN0LnNlcnZpY2UgPSBzcGxpdFsxXTtcbiAgICAgICAgcnBjUmVxdWVzdC5tZXRob2QgPSByZXF1ZXN0LnNlcnZpY2UucHJvY2VkdXJlTmFtZTtcblxuICAgICAgICBsZXQgbW9kdWxlID0gc3BsaXRbMF0udG9Mb3dlckNhc2UoKTtcblxuICAgICAgICBsZXQgaGVhZGVycyA9IHt9O1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocmVxdWVzdC5zZXJ2aWNlLnBhcmFtZXRlcnMpICYmIHJlcXVlc3Quc2VydmljZS5wYXJhbWV0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBycGNSZXF1ZXN0LnBhcmFtZXRlcnMgPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlcXVlc3Quc2VydmljZS5wYXJhbWV0ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwYXJhbWV0ZXJDb25maWcgPSByZXF1ZXN0LnNlcnZpY2UucGFyYW1ldGVyc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhcmFtZXRlciA9IHt9O1xuICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIubmFtZSA9IHBhcmFtZXRlckNvbmZpZy5uYW1lO1xuICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIuaW5kZXggPSBwYXJhbWV0ZXJDb25maWcuaW5kZXg7XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHZhbCA9IGFwcGxpY2F0aW9uTWFuYWdlci5yZXNvbHZlUGFyYW1ldGVyVmFsdWUocGFyYW1ldGVyQ29uZmlnLCByZXF1ZXN0LmV2ZW50ID8gcmVxdWVzdC5ldmVudC5kYXRhIDogbnVsbCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwodmFsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyLnZhbHVlID0gdmFsLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyLnR5cGUgPSB2YWwudHlwZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcGFyYW1ldGVyLnZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyLnZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwocGFyYW1ldGVyLnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIudHlwZSA9ICdTdHJpbmcnO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocGFyYW1ldGVyLnZhbGlkYXRvcilcbiAgICAgICAgICAgICAgICAgICAgICAgICYmICgocGFyYW1ldGVyLnZhbGlkYXRvci5udWxsYWJsZSAmJiAhVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJhbWV0ZXIudmFsaWRhdG9yLm51bGxhYmxlLCBwYXJhbWV0ZXIubmFtZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcmFtZXRlci52YWxpZGF0b3IucmVxdWlyZWQgJiYgVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJhbWV0ZXIudmFsaWRhdG9yLnJlcXVpcmVkLCBwYXJhbWV0ZXIubmFtZSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLmlzUGFyYW1WYWx1ZU51bGwocGFyYW1ldGVyLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvclR5cGU6ICdJTlZBTElEX1BBUkFNRVRFUicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1ldGVyQ29uZmlnLmh0dHBQYXJhbWV0ZXJUeXBlID09PSAnSEVBREVSJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocGFyYW1ldGVyLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaGVhZGVycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzID0ge31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzW3BhcmFtZXRlci5uYW1lXSA9IHBhcmFtZXRlci52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJwY1JlcXVlc3QucGFyYW1ldGVycy5wdXNoKHBhcmFtZXRlcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZmV0Y2hXaXRoQ3VzdG9tQ29uZmlnKHtcbiAgICAgICAgICAgICAgICB2aWV3SWQ6IHJlcXVlc3Qudmlld0lkLFxuICAgICAgICAgICAgICAgIHVybDogbG9jYXRpb24gKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKSArICcvJyArIG1vZHVsZSArICcvYXBpL3YxL3JwYy9pbnZva2UnLFxuICAgICAgICAgICAgICAgIHNlcnZpY2VUeXBlOiByZXF1ZXN0LnNlcnZpY2UudHlwZSxcbiAgICAgICAgICAgICAgICBzZWN1cmU6IHRydWUsXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICAgICAgYm9keTogcnBjUmVxdWVzdCxcbiAgICAgICAgICAgICAgICB0cmFjazogcmVxdWVzdC50cmFjayAhPT0gZmFsc2UsXG4gICAgICAgICAgICAgICAgY29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVxdWVzdC5yZXR1cm5WYWx1ZUJpbmRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXRoID0gVXRpbHMuZ2V0UHJvcGVydHlDaGFpblBhdGgocmVxdWVzdC5yZXR1cm5WYWx1ZUJpbmRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocGF0aC52YWx1ZU9iamVjdCkgJiYgIVV0aWxzLmlzTnVsbChwYXRoLnByb3BlcnR5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgudmFsdWVPYmplY3RbcGF0aC5wcm9wZXJ0eV0gPSByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUodGhpcy5wcm9jZXNzU3VjY2Vzc2Z1bFJlc3BvbnNlRGF0YShyZXF1ZXN0LmNvbXBvbmVudCwgcmVzcG9uc2UsIHJlcXVlc3Qudmlld0lkLCByZXF1ZXN0LnN1Y2Nlc3NNZXNzYWdlKSk7XG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBmZXRjaFdpdGhDdXN0b21Db25maWcocmVxdWVzdCkge1xuICAgICAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2FjY2Vzc1Rva2VuJyk7XG4gICAgICAgIGNvbnN0IGlkVG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdpZFRva2VuJyk7XG5cbiAgICAgICAgbGV0IGRhdGEgPSByZXF1ZXN0LmJvZHkgPyAocmVxdWVzdC5ib2R5IGluc3RhbmNlb2YgRm9ybURhdGEpID8gcmVxdWVzdC5ib2R5IDogSlNPTi5zdHJpbmdpZnkocmVxdWVzdC5ib2R5KSA6IG51bGw7XG4gICAgICAgIGxldCBmZXRjaENvbmZpZyA9IHJlcXVlc3QuY29uZmlnO1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGZldGNoQ29uZmlnKSkge1xuICAgICAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwocmVxdWVzdC5zZWN1cmUpIHx8IHJlcXVlc3Quc2VjdXJlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZldGNoQ29uZmlnID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBVdGlscy5pc051bGwocmVxdWVzdC5tZXRob2QpID8gJ0dFVCcgOiByZXF1ZXN0Lm1ldGhvZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5yZXF1ZXN0LmhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6IHJlcXVlc3QuY29udGVudFR5cGUgPyByZXF1ZXN0LmNvbnRlbnRUeXBlIDogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBkYXRhXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIC8vIFNlY3VyZSBieSBkZWZhdWx0LCBwcmVzZW5jZS1iYXNlZDogYXR0YWNoIGF1dGggT05MWSB3aGVuIGFcbiAgICAgICAgICAgICAgICAgICAgLy8gc2Vzc2lvbiBleGlzdHMuIFByZS1hdXRoIHNjcmVlbnMgKHZpZXcvc2VjdXJpdHkvKikgY2xlYXJcbiAgICAgICAgICAgICAgICAgICAgLy8gc2Vzc2lvblN0b3JhZ2Ugb24gbW91bnQsIHNvIG5vdGhpbmcgaXMgYXR0YWNoZWQgdGhlcmUg4oCUIGFuZFxuICAgICAgICAgICAgICAgICAgICAvLyB3ZSBuZXZlciBlbWl0ICdCZWFyZXIgbnVsbCcgb3IgYSBzdGFsZSB0b2tlbi5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGFjY2Vzc1Rva2VuKSBmZXRjaENvbmZpZy5oZWFkZXJzWydBdXRob3JpemF0aW9uJ10gPSAnQmVhcmVyICcgKyBhY2Nlc3NUb2tlbjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlkVG9rZW4pIGZldGNoQ29uZmlnLmhlYWRlcnNbJ2lkVG9rZW4nXSA9IGlkVG9rZW47XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2hDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IFV0aWxzLmlzTnVsbChyZXF1ZXN0Lm1ldGhvZCkgPyAnR0VUJyA6IHJlcXVlc3QubWV0aG9kLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnJlcXVlc3QuaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogcmVxdWVzdC5jb250ZW50VHlwZSA/IHJlcXVlc3QuY29udGVudFR5cGUgOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FjY2VwdCc6IHJlcXVlc3QuYWNjZXB0ID8gcmVxdWVzdC5hY2NlcHQgOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBkYXRhXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCdyZXN0JyA9PT0gcmVxdWVzdC5zZXJ2aWNlVHlwZSAmJiAhKHJlcXVlc3QuYm9keSBpbnN0YW5jZW9mIEZvcm1EYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBmZXRjaENvbmZpZy5oZWFkZXJzWydDb250ZW50LVR5cGUnXSA9IHJlcXVlc3QuY29udGVudFR5cGUgPyByZXF1ZXN0LmNvbnRlbnRUeXBlIDogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICgocmVxdWVzdC5ib2R5IGluc3RhbmNlb2YgRm9ybURhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBmZXRjaENvbmZpZy5oZWFkZXJzWydDb250ZW50LVR5cGUnXTtcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2hDb25maWcuaGVhZGVyc1snQWNjZXB0J10gPSByZXF1ZXN0LmFjY2VwdCA/IHJlcXVlc3QuYWNjZXB0IDogJ2FwcGxpY2F0aW9uL2pzb24nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlcXVlc3QuY29udGVudFR5cGUpIHtcbiAgICAgICAgICAgICAgICBmZXRjaENvbmZpZy5oZWFkZXJzWydDb250ZW50LVR5cGUnXSA9IHJlcXVlc3QuY29udGVudFR5cGU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCB1cmwgPSByZXF1ZXN0LnVybDtcbiAgICAgICAgICAgIGlmIChyZXF1ZXN0LmRvd25sb2FkKSB7XG4gICAgICAgICAgICAgICAgaWYgKHVybC5pbmRleE9mKCc/JykgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHVybCArPSAnPyc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdXJsICs9ICcmJztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvL3VybCArPSAnYWNjZXNzX3Rva2VuPScgKyBhY2Nlc3NUb2tlbjtcbiAgICAgICAgICAgICAgICAvL3VybCArPSAnJmlkVG9rZW49JyArIGlkVG9rZW47XG4gICAgICAgICAgICAgICAgdXJsICs9ICcmdGhlbWVQcmltYXJ5Q29sb3I9JyArIGVuY29kZVVSSUNvbXBvbmVudChhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0QXBwbGljYXRpb25QcmltYXJ5Q29sb3IoKSk7XG4gICAgICAgICAgICAgICAgdXJsICs9ICcmdGhlbWVTZWNvbmRhcnlDb2xvcj0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGFwcGxpY2F0aW9uTWFuYWdlci5nZXRBcHBsaWNhdGlvblNlY29uZGFyeUNvbG9yKCkpO1xuXG4gICAgICAgICAgICAgICAgZmV0Y2godXJsLCB7XG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucmVxdWVzdC5oZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyBhY2Nlc3NUb2tlbixcbiAgICAgICAgICAgICAgICAgICAgICAgICdpZFRva2VuJzogaWRUb2tlblxuXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKS50aGVuKGVycm9yRGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3IgJHtyZXNwb25zZS5zdGF0dXN9OiAke2Vycm9yRGF0YS5tZXNzYWdlIHx8IHJlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb250ZW50RGlzcG9zaXRpb24gPSByZXNwb25zZS5oZWFkZXJzLmdldChcIkNvbnRlbnQtRGlzcG9zaXRpb25cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmlsZW5hbWUgPSBcImRvd25sb2FkZWQtZmlsZVwiO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudERpc3Bvc2l0aW9uICYmIGNvbnRlbnREaXNwb3NpdGlvbi5pbmNsdWRlcyhcImZpbGVuYW1lPVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gY29udGVudERpc3Bvc2l0aW9uLnNwbGl0KFwiZmlsZW5hbWU9XCIpWzFdLnRyaW0oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnJlcGxhY2UoL1tcIiddL2csIFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuYmxvYigpLnRoZW4oYmxvYiA9PiAoe2Jsb2IsIGZpbGVuYW1lfSkpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAudGhlbigoe2Jsb2IsIGZpbGVuYW1lfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGEuaHJlZiA9IHVybDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGEuZG93bmxvYWQgPSBmaWxlbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhLmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZXJyb3IgPT4gY29uc29sZS5lcnJvcihcIkRvd25sb2FkIGZhaWxlZDpcIiwgZXJyb3IpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChyZXF1ZXN0LnRyYWNrKSB8fCByZXF1ZXN0LnRyYWNrID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyYWNrUHJvbWlzZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUZldGNoKHVybCwgZmV0Y2hDb25maWcsIHJlcXVlc3Qudmlld0lkLCByZXF1ZXN0LnN1Y2Nlc3NNZXNzYWdlKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUZldGNoKHVybCwgZmV0Y2hDb25maWcsIHJlcXVlc3Qudmlld0lkLCByZXF1ZXN0LnN1Y2Nlc3NNZXNzYWdlKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGV4ZWN1dGVGZXRjaCh1cmwsIGZldGNoQ29uZmlnLCB2aWV3SWQsIHN1Y2Nlc3NNZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBmZXRjaChlbmNvZGVVUkkodXJsKSwgZmV0Y2hDb25maWcpXG4gICAgICAgICAgICAgICAgLnRoZW4oc3RhdHVzKVxuICAgICAgICAgICAgICAgIC50aGVuKGpzb24pXG4gICAgICAgICAgICAgICAgLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0aGlzLnByb2Nlc3NTdWNjZXNzZnVsUmVzcG9uc2VEYXRhKG51bGwsIGRhdGEsIHZpZXdJZCwgc3VjY2Vzc01lc3NhZ2UpKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZS5zdGF0dXMgPT09IDQwMSAmJiAhdXJsLmVuZHNXaXRoKCcvbG9nb3V0JykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5jbGVhcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLm5hdmlnYXRlKCcvbG9naW4nKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBwcm9jZXNzU3VjY2Vzc2Z1bFJlc3BvbnNlRGF0YShjb21wb25lbnQsIGRhdGEsIHZpZXdJZCwgc3VjY2Vzc01lc3NhZ2UpIHtcbiAgICAgICAgbGV0IHJlc3BvbnNlO1xuXG4gICAgICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgfHwgVXRpbHMuaXNOdWxsKGRhdGEpIHx8IGRhdGEudG9TdHJpbmcoKVxuICAgICAgICAgICAgLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJlc3BvbnNlID0gZGF0YTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBKU09OLnBhcnNlKGRhdGEpO1xuICAgICAgICAgICAgfSBjYXRjaCAoaWdub3JlZCkge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gZGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5kYXRhVHlwZSA9PT0gJ21lc3NhZ2UnKSB7XG4gICAgICAgICAgICBsZXQgZXZlbnQgPSBuZXcgRXZlbnQoYXBwbGljYXRpb25NYW5hZ2VyLCB2aWV3SWQsIHJlc3BvbnNlKTtcbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLk1FU1NBR0VfQVJSSVZFRCwgZXZlbnQpO1xuXG4gICAgICAgICAgICBpZiAoY29tcG9uZW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQgPSBuZXcgRXZlbnQoY29tcG9uZW50LCB2aWV3SWQsIHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5NRVNTQUdFX0FSUklWRUQsIGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghVXRpbHMuaXNOdWxsKHN1Y2Nlc3NNZXNzYWdlKSkge1xuICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZVR5cGU6ICdTVUNDRVNTJyxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBhcHBsaWNhdGlvbk1hbmFnZXIucG9wdWxhdGVUZW1wbGF0ZShzdWNjZXNzTWVzc2FnZSwgcmVzcG9uc2UpXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBsZXQgZXZlbnQgPSBuZXcgRXZlbnQoYXBwbGljYXRpb25NYW5hZ2VyLCB2aWV3SWQsIG1lc3NhZ2UpO1xuICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuTUVTU0FHRV9BUlJJVkVELCBldmVudCk7XG5cbiAgICAgICAgICAgIGlmIChjb21wb25lbnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBldmVudCA9IG5ldyBFdmVudChjb21wb25lbnQsIHZpZXdJZCwgbWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuTUVTU0FHRV9BUlJJVkVELCBldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxufVxuXG5jb25zdCBpbnN0YW5jZSA9IG5ldyBSZXN0U2VydmljZSgpO1xuXG5leHBvcnQgY29uc3QgaW52b2tlUnBjID0gKHJlcXVlc3QpID0+IHtcbiAgICByZXR1cm4gaW5zdGFuY2UuaW52b2tlUnBjKHJlcXVlc3QpO1xufTtcblxuZXhwb3J0IGNvbnN0IGludm9rZVJlc3QgPSAocmVxdWVzdCkgPT4ge1xuICAgIHJldHVybiBpbnN0YW5jZS5pbnZva2VSZXN0KHJlcXVlc3QpO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUMsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0QsSUFBQUMsb0JBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLG1CQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxXQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxVQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxVQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFB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
|
|
424
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfVXRpbHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdFByb21pc2VUcmFja2VyIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9FdmVudCIsIl9PYnNlcnZhYmxlIiwiX0V2ZW50VHlwZSIsIl9wcm9wVHlwZXMiLCJfUmVzdFV0aWxzIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwib3duS2V5cyIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsImxvY2F0aW9uIiwiZXhwb3J0cyIsIndpbmRvdyIsInByb3RvY29sIiwiaG9zdG5hbWUiLCJzdGF0dXMiLCJyZXNwb25zZSIsIm9rIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJqc29uIiwidGV4dCIsIlJlc3RTZXJ2aWNlIiwiaXNQYXJhbVZhbHVlTnVsbCIsInBhcmFtVmFsdWUiLCJVdGlscyIsImlzTnVsbCIsImhhc093blByb3BlcnR5IiwiaW52b2tlUmVzdCIsInJlcXVlc3QiLCJzZXJ2aWNlIiwidXJsIiwic3RhcnRzV2l0aCIsImNvbmNhdCIsImFwcGxpY2F0aW9uTWFuYWdlciIsImdldENvbnRleHRSb290IiwicmVxdWVzdEJvZHkiLCJoZWFkZXJzIiwicGFyYW1ldGVycyIsInF1ZXJ5U3RyaW5nIiwicGF0aFBhcmFtZXRlcnMiLCJyZXF1ZXN0Qm9keVBhcmFtRm91bmQiLCJwYXJhbWV0ZXIiLCJwYXJhbWV0ZXJWYWx1ZSIsInJlc29sdmVQYXJhbWV0ZXJWYWx1ZSIsImV2ZW50IiwiZGF0YSIsInZhbGlkYXRvciIsIm51bGxhYmxlIiwiZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbiIsIm5hbWUiLCJyZXF1aXJlZCIsImVycm9yVHlwZSIsImh0dHBQYXJhbWV0ZXJUeXBlIiwiaW5jbHVkZVBhcmFtZXRlclR5cGVzIiwidHlwZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJyZXNvbHZlZFZhbHVlIiwiZW5jb2RlIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiaW5zdGFuY2VUeXBlIiwiaW5kZXhPZiIsInJlcGxhY2UiLCJFcnJvciIsImNvbnRlbnRUeXBlIiwibWV0aG9kIiwidG9VcHBlckNhc2UiLCJmZXRjaFdpdGhDdXN0b21Db25maWciLCJ2aWV3SWQiLCJzZXJ2aWNlVHlwZSIsInNlY3VyZSIsImRvd25sb2FkIiwidGhlbiIsImNhdGNoIiwiYm9keSIsInRyYWNrIiwicGF0aCIsImdldFByb3BlcnR5Q2hhaW5QYXRoIiwicmV0dXJuVmFsdWVCaW5kaW5nIiwidmFsdWVPYmplY3QiLCJwcm9wZXJ0eSIsInByb2Nlc3NTdWNjZXNzZnVsUmVzcG9uc2VEYXRhIiwiY29tcG9uZW50Iiwic3VjY2Vzc01lc3NhZ2UiLCJpbnZva2VScGMiLCJycGNSZXF1ZXN0IiwiaWQiLCJzcGxpdCIsInNlcnZpY2VJZCIsInByb2NlZHVyZU5hbWUiLCJtb2R1bGUiLCJ0b0xvd2VyQ2FzZSIsInBhcmFtZXRlckNvbmZpZyIsImluZGV4IiwidmFsIiwiYWNjZXNzVG9rZW4iLCJzZXNzaW9uU3RvcmFnZSIsImdldEl0ZW0iLCJpZFRva2VuIiwiRm9ybURhdGEiLCJmZXRjaENvbmZpZyIsImNvbmZpZyIsImFjY2VwdCIsImdldEFwcGxpY2F0aW9uUHJpbWFyeUNvbG9yIiwiZ2V0QXBwbGljYXRpb25TZWNvbmRhcnlDb2xvciIsImZldGNoIiwiZXJyb3JEYXRhIiwibWVzc2FnZSIsInN0YXR1c1RleHQiLCJjb250ZW50RGlzcG9zaXRpb24iLCJnZXQiLCJmaWxlbmFtZSIsImluY2x1ZGVzIiwidHJpbSIsImJsb2IiLCJfcmVmIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiYSIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImhyZWYiLCJhcHBlbmRDaGlsZCIsImNsaWNrIiwicmVtb3ZlQ2hpbGQiLCJyZXZva2VPYmplY3RVUkwiLCJlcnJvciIsImNvbnNvbGUiLCJ0cmFja1Byb21pc2UiLCJleGVjdXRlRmV0Y2giLCJlbmNvZGVVUkkiLCJlbmRzV2l0aCIsImNsZWFyIiwibmF2aWdhdGUiLCJ0b1N0cmluZyIsInBhcnNlIiwiaWdub3JlZCIsImRhdGFUeXBlIiwiRXZlbnQiLCJldmVudE1hbmFnZXIiLCJmaXJlRXZlbnQiLCJFdmVudFR5cGUiLCJNRVNTQUdFX0FSUklWRUQiLCJtZXNzYWdlVHlwZSIsInBvcHVsYXRlVGVtcGxhdGUiLCJpbnN0YW5jZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9saWIvUmVzdFNlcnZpY2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0IFV0aWxzIGZyb20gJy4vVXRpbHMnO1xuaW1wb3J0IHt0cmFja1Byb21pc2V9IGZyb20gJ3JlYWN0LXByb21pc2UtdHJhY2tlcic7XG5pbXBvcnQgYXBwbGljYXRpb25NYW5hZ2VyIGZyb20gJy4vQXBwbGljYXRpb25NYW5hZ2VyJztcbmltcG9ydCBFdmVudCBmcm9tICcuL2V2ZW50L0V2ZW50JztcbmltcG9ydCBldmVudE1hbmFnZXIgZnJvbSAnLi9ldmVudC9PYnNlcnZhYmxlJztcbmltcG9ydCBFdmVudFR5cGUgZnJvbSAnLi9ldmVudC9FdmVudFR5cGUnO1xuaW1wb3J0IHtpbnN0YW5jZU9mfSBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtkb3dubG9hZCwgcG9zdERhdGEsIHNlbmRSZXF1ZXN0fSBmcm9tIFwiLi9SZXN0VXRpbHNcIjtcblxuZXhwb3J0IGNvbnN0IGxvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTtcbmNvbnN0IHN0YXR1cyA9IChyZXNwb25zZSkgPT4ge1xuICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3BvbnNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVzcG9uc2UpO1xuICAgIH1cbn07XG5cbmNvbnN0IGpzb24gPSAocmVzcG9uc2UpID0+IHtcbiAgICByZXR1cm4gcmVzcG9uc2UudGV4dCgpO1xufTtcblxuY2xhc3MgUmVzdFNlcnZpY2Uge1xuICAgIGlzUGFyYW1WYWx1ZU51bGwocGFyYW1WYWx1ZSkge1xuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHBhcmFtVmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXJhbVZhbHVlLmhhc093blByb3BlcnR5KCd2YWx1ZScpID8gVXRpbHMuaXNOdWxsKHBhcmFtVmFsdWUudmFsdWUpIDogZmFsc2U7XG4gICAgfVxuXG4gICAgaW52b2tlUmVzdChyZXF1ZXN0KSB7XG4gICAgICAgIGxldCBzZXJ2aWNlID0gcmVxdWVzdC5zZXJ2aWNlO1xuICAgICAgICBsZXQgdXJsID0gc2VydmljZS51cmwuc3RhcnRzV2l0aCgnaHR0cDovLycpIHx8IHNlcnZpY2UudXJsLnN0YXJ0c1dpdGgoJ2h0dHBzOi8vJykgP1xuICAgICAgICAgICAgc2VydmljZS51cmwgOiBsb2NhdGlvbiArIGAke2FwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpICsgc2VydmljZS51cmx9YDtcbiAgICAgICAgbGV0IHJlcXVlc3RCb2R5ID0gbnVsbDtcbiAgICAgICAgbGV0IGhlYWRlcnMgPSBzZXJ2aWNlLmhlYWRlcnM7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHNlcnZpY2UucGFyYW1ldGVycykpIHtcbiAgICAgICAgICAgICAgICBsZXQgcXVlcnlTdHJpbmcgPSAnJztcbiAgICAgICAgICAgICAgICBsZXQgcGF0aFBhcmFtZXRlcnMgPSAnJztcbiAgICAgICAgICAgICAgICBsZXQgcmVxdWVzdEJvZHlQYXJhbUZvdW5kID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBwYXJhbWV0ZXIgb2Ygc2VydmljZS5wYXJhbWV0ZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwYXJhbWV0ZXJWYWx1ZSA9IGFwcGxpY2F0aW9uTWFuYWdlci5yZXNvbHZlUGFyYW1ldGVyVmFsdWUocGFyYW1ldGVyLCByZXF1ZXN0LmV2ZW50ID8gcmVxdWVzdC5ldmVudC5kYXRhIDogbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHBhcmFtZXRlci52YWxpZGF0b3IpXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiAoKHBhcmFtZXRlci52YWxpZGF0b3IubnVsbGFibGUgJiYgIVV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24ocGFyYW1ldGVyLnZhbGlkYXRvci5udWxsYWJsZSwgcGFyYW1ldGVyLm5hbWUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJhbWV0ZXIudmFsaWRhdG9yLnJlcXVpcmVkICYmIFV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24ocGFyYW1ldGVyLnZhbGlkYXRvci5yZXF1aXJlZCwgcGFyYW1ldGVyLm5hbWUpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy5pc1BhcmFtVmFsdWVOdWxsKHBhcmFtZXRlclZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvclR5cGU6ICdJTlZBTElEX1BBUkFNRVRFUicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBsZXQgaHR0cFBhcmFtZXRlclR5cGUgPSBwYXJhbWV0ZXIuaHR0cFBhcmFtZXRlclR5cGU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwoaHR0cFBhcmFtZXRlclR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwUGFyYW1ldGVyVHlwZSA9ICdRVUVSWV9QQVJBTUVURVInO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGh0dHBQYXJhbWV0ZXJUeXBlID09PSAnUVVFUllfUEFSQU1FVEVSJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocGFyYW1ldGVyVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHF1ZXJ5U3RyaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlTdHJpbmcgKz0gJyYnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHNlcnZpY2UuaW5jbHVkZVBhcmFtZXRlclR5cGVzKSAmJiBzZXJ2aWNlLmluY2x1ZGVQYXJhbWV0ZXJUeXBlcyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeVN0cmluZyArPSBwYXJhbWV0ZXJWYWx1ZS50eXBlICsgJzonO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5U3RyaW5nICs9IHBhcmFtZXRlci5uYW1lICsgJz0nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5U3RyaW5nICs9ICh0eXBlb2YgcGFyYW1ldGVyVmFsdWUudmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBwYXJhbWV0ZXJWYWx1ZS52YWx1ZSA9PT0gJ251bWJlcicgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJWYWx1ZS52YWx1ZSA6IEpTT04uc3RyaW5naWZ5KHBhcmFtZXRlclZhbHVlLnZhbHVlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoaHR0cFBhcmFtZXRlclR5cGUgPT09ICdQQVRIX1ZBUklBQkxFJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocGFyYW1ldGVyVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc29sdmVkVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtZXRlci5lbmNvZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRWYWx1ZSA9IHR5cGVvZiBwYXJhbWV0ZXJWYWx1ZS52YWx1ZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHBhcmFtZXRlclZhbHVlLnZhbHVlKSkgOiBwYXJhbWV0ZXJWYWx1ZS5pbnN0YW5jZVR5cGUgPT09ICdUeXBlZFZhbHVlJyA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtZXRlclZhbHVlLnZhbHVlKSA6IGVuY29kZVVSSUNvbXBvbmVudChwYXJhbWV0ZXJWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRWYWx1ZSA9IHR5cGVvZiBwYXJhbWV0ZXJWYWx1ZS52YWx1ZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gSlNPTi5zdHJpbmdpZnkocGFyYW1ldGVyVmFsdWUudmFsdWUpIDogcGFyYW1ldGVyVmFsdWUuaW5zdGFuY2VUeXBlID09PSAnVHlwZWRWYWx1ZScgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlclZhbHVlLnZhbHVlIDogcGFyYW1ldGVyVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHBhcmFtZXRlciBoYXMgYSBuYW1lIGFuZCB0aGUgVVJMIGNvbnRhaW5zIHtuYW1lfSwgcmVwbGFjZSB0aGUgcGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwYXJhbWV0ZXIubmFtZSkgJiYgdXJsLmluZGV4T2YoJ3snICsgcGFyYW1ldGVyLm5hbWUgKyAnfScpID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gdXJsLnJlcGxhY2UoJ3snICsgcGFyYW1ldGVyLm5hbWUgKyAnfScsIHJlc29sdmVkVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJhY2t3YXJkIGNvbXBhdGliaWxpdHk6IGFwcGVuZCB0byBlbmQgb2YgVVJMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhQYXJhbWV0ZXJzICs9ICcvJyArIHJlc29sdmVkVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGh0dHBQYXJhbWV0ZXJUeXBlID09PSAnSEVBREVSJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocGFyYW1ldGVyVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFoZWFkZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnMgPSB7fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnNbcGFyYW1ldGVyLm5hbWVdID0gcGFyYW1ldGVyVmFsdWUudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoaHR0cFBhcmFtZXRlclR5cGUgPT09ICdSRVFVRVNUX0JPRFknKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVxdWVzdEJvZHlQYXJhbUZvdW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihcIk9ubHkgb25lIHJlcXVlc3QgYm9keSBpcyBwZXJtaXR0ZWRcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1hcmsgdGhlIHNsb3QgYXMgdGFrZW4gcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgbnVsbC4gQSBzZWNvbmQgUkVRVUVTVF9CT0RZIHBhcmFtIGlzIGEgY29uZmlnIGJ1Z1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWl0aGVyIHdheSwgYW5kIHdlIHdhbnQgaXQgdG8gc3VyZmFjZSBsb3VkbHkuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Qm9keVBhcmFtRm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzUGFyYW1WYWx1ZU51bGwocGFyYW1ldGVyVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEJvZHkgPSBwYXJhbWV0ZXJWYWx1ZS5pbnN0YW5jZVR5cGUgPT09ICdUeXBlZFZhbHVlJyA/IHBhcmFtZXRlclZhbHVlLnZhbHVlIDogcGFyYW1ldGVyVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAocGF0aFBhcmFtZXRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB1cmwgKz0gcGF0aFBhcmFtZXRlcnM7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHF1ZXJ5U3RyaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdXJsICs9ICc/JztcbiAgICAgICAgICAgICAgICAgICAgdXJsICs9IHF1ZXJ5U3RyaW5nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGNvbnRlbnRUeXBlID0gbnVsbDtcblxuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoaGVhZGVycykpIHtcbiAgICAgICAgICAgICAgICBjb250ZW50VHlwZSA9IGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBSZXNvbHZlIHRoZSBIVFRQIG1ldGhvZC4gSG9ub3Igc2VydmljZS5tZXRob2Qgd2hlbiBwcm92aWRlZCBzb1xuICAgICAgICAgICAgLy8gY2FsbGVycyBjYW4gaXNzdWUgREVMRVRFLCBQVVQsIFBBVENIIChub3QganVzdCBHRVQvUE9TVCkuXG4gICAgICAgICAgICAvLyBEZWZhdWx0OiBQT1NUIHdoZW4gYSBib2R5IHdhcyBib3VuZCwgR0VUIG90aGVyd2lzZSDigJQgcHJlc2VydmVzXG4gICAgICAgICAgICAvLyB0aGUgaGlzdG9yaWNhbCBiZWhhdmlvdXIgZm9yIGNhbGxlcnMgdGhhdCBvbWl0IHNlcnZpY2UubWV0aG9kLlxuICAgICAgICAgICAgY29uc3QgbWV0aG9kID0gc2VydmljZS5tZXRob2RcbiAgICAgICAgICAgICAgICA/IHNlcnZpY2UubWV0aG9kLnRvVXBwZXJDYXNlKClcbiAgICAgICAgICAgICAgICA6IChyZXF1ZXN0Qm9keSAhPT0gbnVsbCA/ICdQT1NUJyA6ICdHRVQnKTtcblxuICAgICAgICAgICAgaWYgKHJlcXVlc3RCb2R5ICE9PSBudWxsICYmIG1ldGhvZCA9PT0gJ0dFVCcpIHtcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdBIHJlcXVlc3QgYm9keSBwYXJhbWV0ZXIgY2Fubm90IGJlIHNwZWNpZmllZCBmb3IgYSBHRVQgcmVxdWVzdCcpKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIERvd25sb2FkIHBhdGggKFBERiAvIEV4Y2VsKSBpcyBHRVQtb25seSBhbmQgdXNlcyBhIHNlcGFyYXRlXG4gICAgICAgICAgICAvLyBmZXRjaCBzaGFwZSAoYmxvYiBoYW5kbGluZyk7IGJyYW5jaCBmaXJzdC5cbiAgICAgICAgICAgIGlmIChtZXRob2QgPT09ICdHRVQnICYmIChjb250ZW50VHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3BkZicgfHwgY29udGVudFR5cGUgPT09ICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hXaXRoQ3VzdG9tQ29uZmlnKHtcbiAgICAgICAgICAgICAgICAgICAgdmlld0lkOiByZXF1ZXN0LnZpZXdJZCxcbiAgICAgICAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlVHlwZTogcmVxdWVzdC5zZXJ2aWNlLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgIHNlY3VyZTogcmVxdWVzdC5zZWN1cmUsXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgICAgICAgICAgICAgIGRvd25sb2FkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzXG4gICAgICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9KS5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTaW5nbGUgZGlzcGF0Y2ggZm9yIEdFVCAvIFBPU1QgLyBQVVQgLyBQQVRDSCAvIERFTEVURSAvIGV0Yy5cbiAgICAgICAgICAgIC8vIEJvZHkgaXMgcGFzc2VkIHRocm91Z2g7IHRoZSBmZXRjaCBsYXllciBkcm9wcyBpdCBmb3IgdmVyYnMgdGhhdFxuICAgICAgICAgICAgLy8gZm9yYmlkIG9uZS4gREVMRVRFIHdpdGggYSBib2R5IGlzIHVuY29tbW9uIGJ1dCBwZXJtaXR0ZWQgYnlcbiAgICAgICAgICAgIC8vIEhUVFAg4oCUIHdlIGRvbid0IGJsb2NrIGl0IGhlcmUuXG4gICAgICAgICAgICAvLyBTZWN1cmUgYnkgZGVmYXVsdDogYXR0YWNoIHRoZSBzZXNzaW9uIHRva2VuIHdoZW5ldmVyIG9uZSBleGlzdHMuXG4gICAgICAgICAgICAvLyBObyBVUkwgc3BlY2lhbC1jYXNpbmcg4oCUIHByZS1hdXRoIHN1cmZhY2VzICh2aWV3L3NlY3VyaXR5LyogbG9naW4sXG4gICAgICAgICAgICAvLyByZWdpc3RlciwgcmVzZXQpIGNsZWFyIHNlc3Npb25TdG9yYWdlIG9uIG1vdW50LCBzbyBub3RoaW5nIGlzXG4gICAgICAgICAgICAvLyBhdHRhY2hlZCBvbiB0aG9zZSBzY3JlZW5zLiBgc2VjdXJlYCBoZXJlIG9ubHkgcHJldmVudHMgbGVha2luZyBhXG4gICAgICAgICAgICAvLyB0b2tlbiB0byBhIHBsYWluLWh0dHAgZW5kcG9pbnQ7IHRoZSBhdHRhY2htZW50IGl0c2VsZiBpc1xuICAgICAgICAgICAgLy8gcHJlc2VuY2UtYmFzZWQgaW4gZmV0Y2hXaXRoQ3VzdG9tQ29uZmlnLCBzbyBhIHN0YWxlL2VtcHR5IHRva2VuIGlzXG4gICAgICAgICAgICAvLyBuZXZlciBzZW50LlxuICAgICAgICAgICAgdGhpcy5mZXRjaFdpdGhDdXN0b21Db25maWcoe1xuICAgICAgICAgICAgICAgIHZpZXdJZDogcmVxdWVzdC52aWV3SWQsXG4gICAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgICAgIHNlcnZpY2VUeXBlOiByZXF1ZXN0LnNlcnZpY2UudHlwZSxcbiAgICAgICAgICAgICAgICBtZXRob2QsXG4gICAgICAgICAgICAgICAgc2VjdXJlOiAhc2VydmljZS51cmwuc3RhcnRzV2l0aCgnaHR0cDovLycpLFxuICAgICAgICAgICAgICAgIGJvZHk6IHJlcXVlc3RCb2R5LFxuICAgICAgICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgdHJhY2s6IHJlcXVlc3QudHJhY2sgIT09IGZhbHNlXG4gICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBwYXRoID0gVXRpbHMuZ2V0UHJvcGVydHlDaGFpblBhdGgocmVxdWVzdC5yZXR1cm5WYWx1ZUJpbmRpbmcpO1xuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHBhdGgudmFsdWVPYmplY3QpICYmICFVdGlscy5pc051bGwocGF0aC5wcm9wZXJ0eSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aC52YWx1ZU9iamVjdFtwYXRoLnByb3BlcnR5XSA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJlc29sdmUodGhpcy5wcm9jZXNzU3VjY2Vzc2Z1bFJlc3BvbnNlRGF0YShyZXF1ZXN0LmNvbXBvbmVudCwgcmVzcG9uc2UsIHJlcXVlc3Qudmlld0lkLCByZXF1ZXN0LnN1Y2Nlc3NNZXNzYWdlKSk7XG4gICAgICAgICAgICB9KS5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpbnZva2VScGMocmVxdWVzdCkge1xuICAgICAgICBsZXQgcnBjUmVxdWVzdCA9IHt9O1xuICAgICAgICBycGNSZXF1ZXN0LmlkID0gcmVxdWVzdC52aWV3SWQ7XG5cbiAgICAgICAgbGV0IHNwbGl0ID0gcmVxdWVzdC5zZXJ2aWNlLnNlcnZpY2VJZC5zcGxpdCgnLicpO1xuICAgICAgICBycGNSZXF1ZXN0LnNlcnZpY2UgPSBzcGxpdFsxXTtcbiAgICAgICAgcnBjUmVxdWVzdC5tZXRob2QgPSByZXF1ZXN0LnNlcnZpY2UucHJvY2VkdXJlTmFtZTtcblxuICAgICAgICBsZXQgbW9kdWxlID0gc3BsaXRbMF0udG9Mb3dlckNhc2UoKTtcblxuICAgICAgICBsZXQgaGVhZGVycyA9IHt9O1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocmVxdWVzdC5zZXJ2aWNlLnBhcmFtZXRlcnMpICYmIHJlcXVlc3Quc2VydmljZS5wYXJhbWV0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBycGNSZXF1ZXN0LnBhcmFtZXRlcnMgPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlcXVlc3Quc2VydmljZS5wYXJhbWV0ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwYXJhbWV0ZXJDb25maWcgPSByZXF1ZXN0LnNlcnZpY2UucGFyYW1ldGVyc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhcmFtZXRlciA9IHt9O1xuICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIubmFtZSA9IHBhcmFtZXRlckNvbmZpZy5uYW1lO1xuICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIuaW5kZXggPSBwYXJhbWV0ZXJDb25maWcuaW5kZXg7XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHZhbCA9IGFwcGxpY2F0aW9uTWFuYWdlci5yZXNvbHZlUGFyYW1ldGVyVmFsdWUocGFyYW1ldGVyQ29uZmlnLCByZXF1ZXN0LmV2ZW50ID8gcmVxdWVzdC5ldmVudC5kYXRhIDogbnVsbCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwodmFsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyLnZhbHVlID0gdmFsLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyLnR5cGUgPSB2YWwudHlwZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcGFyYW1ldGVyLnZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyLnZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwocGFyYW1ldGVyLnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIudHlwZSA9ICdTdHJpbmcnO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHZhbGlkYXRvciBsaXZlcyBvbiB0aGUgdmlldyBjb25maWcgKHBhcmFtZXRlckNvbmZpZyksIE5PVCBvbiB0aGVcbiAgICAgICAgICAgICAgICAgICAgLy8gZnJlc2hseS1idWlsdCBvdXRib3VuZCBgcGFyYW1ldGVyYCBvYmplY3Qg4oCUIHJlYWRpbmcgcGFyYW1ldGVyLnZhbGlkYXRvclxuICAgICAgICAgICAgICAgICAgICAvLyBoZXJlIGFsd2F5cyBzYXcgdW5kZWZpbmVkLCBzbyByZXF1aXJlZC9udWxsYWJsZSBSUEMgcGFyYW1zIHdlcmUgbmV2ZXJcbiAgICAgICAgICAgICAgICAgICAgLy8gZW5mb3JjZWQgYW5kIHRoZSBjYWxsIGZpcmVkIHdpdGggYSBudWxsIHZhbHVlLlxuICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwYXJhbWV0ZXJDb25maWcudmFsaWRhdG9yKVxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgKChwYXJhbWV0ZXJDb25maWcudmFsaWRhdG9yLm51bGxhYmxlICYmICFVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcmFtZXRlckNvbmZpZy52YWxpZGF0b3IubnVsbGFibGUsIHBhcmFtZXRlci5uYW1lKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKFV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24ocGFyYW1ldGVyQ29uZmlnLnZhbGlkYXRvci5yZXF1aXJlZCAmJiBVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcmFtZXRlckNvbmZpZy52YWxpZGF0b3IucmVxdWlyZWQsIHBhcmFtZXRlci5uYW1lKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIHRoaXMuaXNQYXJhbVZhbHVlTnVsbChwYXJhbWV0ZXIudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3Qoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yVHlwZTogJ0lOVkFMSURfUEFSQU1FVEVSJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJDb25maWcuaHR0cFBhcmFtZXRlclR5cGUgPT09ICdIRUFERVInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwYXJhbWV0ZXIudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFoZWFkZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnMgPSB7fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnNbcGFyYW1ldGVyLm5hbWVdID0gcGFyYW1ldGVyLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcnBjUmVxdWVzdC5wYXJhbWV0ZXJzLnB1c2gocGFyYW1ldGVyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5mZXRjaFdpdGhDdXN0b21Db25maWcoe1xuICAgICAgICAgICAgICAgIHZpZXdJZDogcmVxdWVzdC52aWV3SWQsXG4gICAgICAgICAgICAgICAgdXJsOiBsb2NhdGlvbiArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpICsgJy8nICsgbW9kdWxlICsgJy9hcGkvdjEvcnBjL2ludm9rZScsXG4gICAgICAgICAgICAgICAgc2VydmljZVR5cGU6IHJlcXVlc3Quc2VydmljZS50eXBlLFxuICAgICAgICAgICAgICAgIHNlY3VyZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgICAgICBib2R5OiBycGNSZXF1ZXN0LFxuICAgICAgICAgICAgICAgIHRyYWNrOiByZXF1ZXN0LnRyYWNrICE9PSBmYWxzZSxcbiAgICAgICAgICAgICAgICBjb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgICAgIGhlYWRlcnNcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXF1ZXN0LnJldHVyblZhbHVlQmluZGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBhdGggPSBVdGlscy5nZXRQcm9wZXJ0eUNoYWluUGF0aChyZXF1ZXN0LnJldHVyblZhbHVlQmluZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwYXRoLnZhbHVlT2JqZWN0KSAmJiAhVXRpbHMuaXNOdWxsKHBhdGgucHJvcGVydHkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC52YWx1ZU9iamVjdFtwYXRoLnByb3BlcnR5XSA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0aGlzLnByb2Nlc3NTdWNjZXNzZnVsUmVzcG9uc2VEYXRhKHJlcXVlc3QuY29tcG9uZW50LCByZXNwb25zZSwgcmVxdWVzdC52aWV3SWQsIHJlcXVlc3Quc3VjY2Vzc01lc3NhZ2UpKTtcbiAgICAgICAgICAgICAgICB9KS5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIGZldGNoV2l0aEN1c3RvbUNvbmZpZyhyZXF1ZXN0KSB7XG4gICAgICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnYWNjZXNzVG9rZW4nKTtcbiAgICAgICAgY29uc3QgaWRUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2lkVG9rZW4nKTtcblxuICAgICAgICBsZXQgZGF0YSA9IHJlcXVlc3QuYm9keSA/IChyZXF1ZXN0LmJvZHkgaW5zdGFuY2VvZiBGb3JtRGF0YSkgPyByZXF1ZXN0LmJvZHkgOiBKU09OLnN0cmluZ2lmeShyZXF1ZXN0LmJvZHkpIDogbnVsbDtcbiAgICAgICAgbGV0IGZldGNoQ29uZmlnID0gcmVxdWVzdC5jb25maWc7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwoZmV0Y2hDb25maWcpKSB7XG4gICAgICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChyZXF1ZXN0LnNlY3VyZSkgfHwgcmVxdWVzdC5zZWN1cmUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2hDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IFV0aWxzLmlzTnVsbChyZXF1ZXN0Lm1ldGhvZCkgPyAnR0VUJyA6IHJlcXVlc3QubWV0aG9kLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnJlcXVlc3QuaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogcmVxdWVzdC5jb250ZW50VHlwZSA/IHJlcXVlc3QuY29udGVudFR5cGUgOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGRhdGFcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgLy8gU2VjdXJlIGJ5IGRlZmF1bHQsIHByZXNlbmNlLWJhc2VkOiBhdHRhY2ggYXV0aCBPTkxZIHdoZW4gYVxuICAgICAgICAgICAgICAgICAgICAvLyBzZXNzaW9uIGV4aXN0cy4gUHJlLWF1dGggc2NyZWVucyAodmlldy9zZWN1cml0eS8qKSBjbGVhclxuICAgICAgICAgICAgICAgICAgICAvLyBzZXNzaW9uU3RvcmFnZSBvbiBtb3VudCwgc28gbm90aGluZyBpcyBhdHRhY2hlZCB0aGVyZSDigJQgYW5kXG4gICAgICAgICAgICAgICAgICAgIC8vIHdlIG5ldmVyIGVtaXQgJ0JlYXJlciBudWxsJyBvciBhIHN0YWxlIHRva2VuLlxuICAgICAgICAgICAgICAgICAgICBpZiAoYWNjZXNzVG9rZW4pIGZldGNoQ29uZmlnLmhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXSA9ICdCZWFyZXIgJyArIGFjY2Vzc1Rva2VuO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaWRUb2tlbikgZmV0Y2hDb25maWcuaGVhZGVyc1snaWRUb2tlbiddID0gaWRUb2tlbjtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmZXRjaENvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogVXRpbHMuaXNOdWxsKHJlcXVlc3QubWV0aG9kKSA/ICdHRVQnIDogcmVxdWVzdC5tZXRob2QsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucmVxdWVzdC5oZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiByZXF1ZXN0LmNvbnRlbnRUeXBlID8gcmVxdWVzdC5jb250ZW50VHlwZSA6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWNjZXB0JzogcmVxdWVzdC5hY2NlcHQgPyByZXF1ZXN0LmFjY2VwdCA6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGRhdGFcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoJ3Jlc3QnID09PSByZXF1ZXN0LnNlcnZpY2VUeXBlICYmICEocmVxdWVzdC5ib2R5IGluc3RhbmNlb2YgRm9ybURhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZldGNoQ29uZmlnLmhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gcmVxdWVzdC5jb250ZW50VHlwZSA/IHJlcXVlc3QuY29udGVudFR5cGUgOiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKChyZXF1ZXN0LmJvZHkgaW5zdGFuY2VvZiBGb3JtRGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGZldGNoQ29uZmlnLmhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddO1xuICAgICAgICAgICAgICAgICAgICBmZXRjaENvbmZpZy5oZWFkZXJzWydBY2NlcHQnXSA9IHJlcXVlc3QuYWNjZXB0ID8gcmVxdWVzdC5hY2NlcHQgOiAnYXBwbGljYXRpb24vanNvbic7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVxdWVzdC5jb250ZW50VHlwZSkge1xuICAgICAgICAgICAgICAgIGZldGNoQ29uZmlnLmhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gcmVxdWVzdC5jb250ZW50VHlwZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHVybCA9IHJlcXVlc3QudXJsO1xuICAgICAgICAgICAgaWYgKHJlcXVlc3QuZG93bmxvYWQpIHtcbiAgICAgICAgICAgICAgICBpZiAodXJsLmluZGV4T2YoJz8nKSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdXJsICs9ICc/JztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB1cmwgKz0gJyYnO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vdXJsICs9ICdhY2Nlc3NfdG9rZW49JyArIGFjY2Vzc1Rva2VuO1xuICAgICAgICAgICAgICAgIC8vdXJsICs9ICcmaWRUb2tlbj0nICsgaWRUb2tlbjtcbiAgICAgICAgICAgICAgICB1cmwgKz0gJyZ0aGVtZVByaW1hcnlDb2xvcj0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGFwcGxpY2F0aW9uTWFuYWdlci5nZXRBcHBsaWNhdGlvblByaW1hcnlDb2xvcigpKTtcbiAgICAgICAgICAgICAgICB1cmwgKz0gJyZ0aGVtZVNlY29uZGFyeUNvbG9yPScgKyBlbmNvZGVVUklDb21wb25lbnQoYXBwbGljYXRpb25NYW5hZ2VyLmdldEFwcGxpY2F0aW9uU2Vjb25kYXJ5Q29sb3IoKSk7XG5cbiAgICAgICAgICAgICAgICBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5yZXF1ZXN0LmhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIGFjY2Vzc1Rva2VuLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2lkVG9rZW4nOiBpZFRva2VuXG5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuanNvbigpLnRoZW4oZXJyb3JEYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciAke3Jlc3BvbnNlLnN0YXR1c306ICR7ZXJyb3JEYXRhLm1lc3NhZ2UgfHwgcmVzcG9uc2Uuc3RhdHVzVGV4dH1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRlbnREaXNwb3NpdGlvbiA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KFwiQ29udGVudC1EaXNwb3NpdGlvblwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWxlbmFtZSA9IFwiZG93bmxvYWRlZC1maWxlXCI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZW50RGlzcG9zaXRpb24gJiYgY29udGVudERpc3Bvc2l0aW9uLmluY2x1ZGVzKFwiZmlsZW5hbWU9XCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBjb250ZW50RGlzcG9zaXRpb24uc3BsaXQoXCJmaWxlbmFtZT1cIilbMV0udHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWUucmVwbGFjZSgvW1wiJ10vZywgXCJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5ibG9iKCkudGhlbihibG9iID0+ICh7YmxvYiwgZmlsZW5hbWV9KSk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKCh7YmxvYiwgZmlsZW5hbWV9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYS5ocmVmID0gdXJsO1xuICAgICAgICAgICAgICAgICAgICAgICAgYS5kb3dubG9hZCA9IGZpbGVuYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGEuY2xpY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlcnJvciA9PiBjb25zb2xlLmVycm9yKFwiRG93bmxvYWQgZmFpbGVkOlwiLCBlcnJvcikpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHJlcXVlc3QudHJhY2spIHx8IHJlcXVlc3QudHJhY2sgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tQcm9taXNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leGVjdXRlRmV0Y2godXJsLCBmZXRjaENvbmZpZywgcmVxdWVzdC52aWV3SWQsIHJlcXVlc3Quc3VjY2Vzc01lc3NhZ2UpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5leGVjdXRlRmV0Y2godXJsLCBmZXRjaENvbmZpZywgcmVxdWVzdC52aWV3SWQsIHJlcXVlc3Quc3VjY2Vzc01lc3NhZ2UpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgZXhlY3V0ZUZldGNoKHVybCwgZmV0Y2hDb25maWcsIHZpZXdJZCwgc3VjY2Vzc01lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGZldGNoKGVuY29kZVVSSSh1cmwpLCBmZXRjaENvbmZpZylcbiAgICAgICAgICAgICAgICAudGhlbihzdGF0dXMpXG4gICAgICAgICAgICAgICAgLnRoZW4oanNvbilcbiAgICAgICAgICAgICAgICAudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRoaXMucHJvY2Vzc1N1Y2Nlc3NmdWxSZXNwb25zZURhdGEobnVsbCwgZGF0YSwgdmlld0lkLCBzdWNjZXNzTWVzc2FnZSkpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlLnN0YXR1cyA9PT0gNDAxICYmICF1cmwuZW5kc1dpdGgoJy9sb2dvdXQnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIubmF2aWdhdGUoJy9sb2dpbicpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIHByb2Nlc3NTdWNjZXNzZnVsUmVzcG9uc2VEYXRhKGNvbXBvbmVudCwgZGF0YSwgdmlld0lkLCBzdWNjZXNzTWVzc2FnZSkge1xuICAgICAgICBsZXQgcmVzcG9uc2U7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyB8fCBVdGlscy5pc051bGwoZGF0YSkgfHwgZGF0YS50b1N0cmluZygpXG4gICAgICAgICAgICAudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmVzcG9uc2UgPSBkYXRhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXNwb25zZSA9IEpTT04ucGFyc2UoZGF0YSk7XG4gICAgICAgICAgICB9IGNhdGNoIChpZ25vcmVkKSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBkYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmRhdGFUeXBlID09PSAnbWVzc2FnZScpIHtcbiAgICAgICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChhcHBsaWNhdGlvbk1hbmFnZXIsIHZpZXdJZCwgcmVzcG9uc2UpO1xuICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuTUVTU0FHRV9BUlJJVkVELCBldmVudCk7XG5cbiAgICAgICAgICAgIGlmIChjb21wb25lbnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBldmVudCA9IG5ldyBFdmVudChjb21wb25lbnQsIHZpZXdJZCwgcmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLk1FU1NBR0VfQVJSSVZFRCwgZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFVdGlscy5pc051bGwoc3VjY2Vzc01lc3NhZ2UpKSB7XG4gICAgICAgICAgICBsZXQgbWVzc2FnZSA9IHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlVHlwZTogJ1NVQ0NFU1MnLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGFwcGxpY2F0aW9uTWFuYWdlci5wb3B1bGF0ZVRlbXBsYXRlKHN1Y2Nlc3NNZXNzYWdlLCByZXNwb25zZSlcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChhcHBsaWNhdGlvbk1hbmFnZXIsIHZpZXdJZCwgbWVzc2FnZSk7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5NRVNTQUdFX0FSUklWRUQsIGV2ZW50KTtcblxuICAgICAgICAgICAgaWYgKGNvbXBvbmVudCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGV2ZW50ID0gbmV3IEV2ZW50KGNvbXBvbmVudCwgdmlld0lkLCBtZXNzYWdlKTtcbiAgICAgICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5NRVNTQUdFX0FSUklWRUQsIGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG59XG5cbmNvbnN0IGluc3RhbmNlID0gbmV3IFJlc3RTZXJ2aWNlKCk7XG5cbmV4cG9ydCBjb25zdCBpbnZva2VScGMgPSAocmVxdWVzdCkgPT4ge1xuICAgIHJldHVybiBpbnN0YW5jZS5pbnZva2VScGMocmVxdWVzdCk7XG59O1xuXG5leHBvcnQgY29uc3QgaW52b2tlUmVzdCA9IChyZXF1ZXN0KSA9PiB7XG4gICAgcmV0dXJuIGluc3RhbmNlLmludm9rZVJlc3QocmVxdWVzdCk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQyxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDRCxJQUFBQyxvQkFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsbUJBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLFdBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLFVBQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFNLFVBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFVBQUEsR0FBQVAsT0FBQTtBQUE0RCxTQUFBRCx1QkFBQVMsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUFBLFNBQUFHLFFBQUFILENBQUEsRUFBQUksQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBUCxDQUFBLE9BQUFNLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFSLENBQUEsR0FBQUksQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVgsQ0FBQSxFQUFBSSxDQUFBLEVBQUFRLFVBQUEsT0FBQVAsQ0FBQSxDQUFBUSxJQUFBLENBQUFDLEtBQUEsQ0FBQVQsQ0FBQSxFQUFBSSxDQUFBLFlBQUFKLENBQUE7QUFBQSxTQUFBVSxjQUFBZixDQUFBLGFBQUFJLENBQUEsTUFBQUEsQ0FBQSxHQUFBWSxTQUFBLENBQUFDLE1BQUEsRUFBQWIsQ0FBQSxVQUFBQyxD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
|
|
@@ -24,7 +24,7 @@ const AlertBar = /*#__PURE__*/_react.default.memo(props => {
|
|
|
24
24
|
let defaultAction = {
|
|
25
25
|
actionType: 'script',
|
|
26
26
|
script: {
|
|
27
|
-
lines: ["if('".concat(props.viewId, "' === $event.viewId) {"), " @#{".concat(props.config.id, "}.message = $event.data.message"), " @#{".concat(props.config.id, "}.variant = $event.data.messageType === 'ERROR' ? 'danger' : $event.data.messageType === 'WARN' ? 'warning' : $event.data.messageType === 'SUCCESS' ? 'success' : 'info'"), "}"]
|
|
27
|
+
lines: ["if('".concat(props.viewId, "' === $event.viewId && !isNull(@#{").concat(props.config.id, "})) {"), " @#{".concat(props.config.id, "}.message = $event.data.message"), " @#{".concat(props.config.id, "}.variant = $event.data.messageType === 'ERROR' ? 'danger' : $event.data.messageType === 'WARN' ? 'warning' : $event.data.messageType === 'SUCCESS' ? 'success' : 'info'"), "}"]
|
|
28
28
|
}
|
|
29
29
|
};
|
|
30
30
|
if (_Utils.default.isNull(eventHandlingConfig.subscriptions)) {
|
|
@@ -146,4 +146,4 @@ const AlertBar = /*#__PURE__*/_react.default.memo(props => {
|
|
|
146
146
|
}, message))) : null;
|
|
147
147
|
});
|
|
148
148
|
var _default = exports.default = AlertBar;
|
|
149
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9VdGlscyIsIl9BbGVydCIsIl9FdmVudFR5cGUiLCJfT2JzZXJ2YWJsZSIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkFsZXJ0QmFyIiwiUmVhY3QiLCJtZW1vIiwicHJvcHMiLCJfcHJvcHMkY29uZmlnIiwibWVzc2FnZSIsInNldE1lc3NhZ2UiLCJ1c2VTdGF0ZSIsImNvbmZpZyIsInZhcmlhbnQiLCJzZXRWYXJpYW50IiwidmlzaWJsZSIsInNldFZpc2libGUiLCJwbGFjZW1lbnQiLCJhdHRyaWJ1dGVzIiwidXNlRWZmZWN0IiwiaGFuZGxlIiwiYXBpIiwicGFyc2VkQ29uZmlnIiwiVXRpbHMiLCJwYXJzZUNvbmZpZyIsInZpZXdJZCIsImV2ZW50SGFuZGxpbmdDb25maWciLCJpc051bGwiLCJkZWZhdWx0QWN0aW9uIiwiYWN0aW9uVHlwZSIsInNjcmlwdCIsImxpbmVzIiwiY29uY2F0IiwiaWQiLCJzdWJzY3JpcHRpb25zIiwicHVibGlzaGVyIiwiZXZlbnRUeXBlIiwiRXZlbnRUeXBlIiwiTUVTU0FHRV9BUlJJVkVEIiwiYWN0aW9ucyIsInN1YnNjcmlwdGlvbiIsImxlbmd0aCIsImV2ZW50TWFuYWdlciIsImFkZFN1YnNjcmlwdGlvbnMiLCJjbGVhckNvbXBvbmVudEV2ZW50TGlzdGVuZXJzIiwiZnJhbWUiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsInRpbWVvdXQiLCJ0aW1lciIsInNldFRpbWVvdXQiLCJjbG9zZUFsZXJ0IiwiY2xlYXJUaW1lb3V0IiwiZ2V0Q2hpbGRyZW4iLCJvdmVybGF5U3R5bGUiLCJwb3NpdGlvbiIsInRvcCIsImxlZnQiLCJ0cmFuc2Zvcm0iLCJ3aWR0aCIsIm1heFdpZHRoIiwiekluZGV4IiwicG9pbnRlckV2ZW50cyIsInN0cmljdFN0eWxlIiwicGFkZGluZyIsImhlaWdodCIsImNvbnRhaW5lclN0eWxlIiwibWVzc2FnZVN0eWxlIiwiY29sb3IiLCJ3aGl0ZVNwYWNlIiwid29yZEJyZWFrIiwibWFyZ2luIiwib3ZlcmZsb3ciLCJ0ZXh0T3ZlcmZsb3ciLCJjcmVhdGVFbGVtZW50Iiwic3R5bGUiLCJtZXJnZVN0eWxlcyIsImNsYXNzTmFtZSIsIm9uQ2xvc2UiLCJkaXNtaXNzaWJsZSIsImJveFNoYWRvdyIsInRpdGxlIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL0FsZXJ0QmFyLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyLvu79pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFV0aWxzIGZyb20gJy4uL1V0aWxzJztcbmltcG9ydCBBbGVydCBmcm9tICdyZWFjdC1ib290c3RyYXAvQWxlcnQnO1xuaW1wb3J0IEV2ZW50VHlwZSBmcm9tICcuLi9ldmVudC9FdmVudFR5cGUnO1xuaW1wb3J0IGV2ZW50TWFuYWdlciBmcm9tICcuLi9ldmVudC9PYnNlcnZhYmxlJztcbmltcG9ydCAnLi9BbGVydEJhci5jc3MnO1xuXG5jb25zdCBBbGVydEJhciA9IFJlYWN0Lm1lbW8oKHByb3BzKSA9PiB7XG5cbiAgICBjb25zdCBbbWVzc2FnZSwgc2V0TWVzc2FnZV0gPSBSZWFjdC51c2VTdGF0ZShwcm9wcy5jb25maWcubWVzc2FnZSk7XG4gICAgY29uc3QgW3ZhcmlhbnQsIHNldFZhcmlhbnRdID0gUmVhY3QudXNlU3RhdGUocHJvcHMuY29uZmlnLnZhcmlhbnQgfHwgJ2luZm8nKTtcbiAgICBjb25zdCBbdmlzaWJsZSwgc2V0VmlzaWJsZV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG5cbiAgICBjb25zdCBwbGFjZW1lbnQgPSBwcm9wcy5jb25maWc/LmF0dHJpYnV0ZXM/LnBsYWNlbWVudCB8fCBcIm92ZXJsYXlcIjtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHByb3BzLmhhbmRsZS5hcGkgPSBhcGkoKTtcblxuICAgICAgICBsZXQgcGFyc2VkQ29uZmlnID0gVXRpbHMucGFyc2VDb25maWcocHJvcHMuY29uZmlnLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICBsZXQgZXZlbnRIYW5kbGluZ0NvbmZpZyA9IFV0aWxzLmlzTnVsbChwYXJzZWRDb25maWcuZXZlbnRIYW5kbGluZ0NvbmZpZykgPyB7fSA6IHBhcnNlZENvbmZpZy5ldmVudEhhbmRsaW5nQ29uZmlnO1xuXG4gICAgICAgIGxldCBkZWZhdWx0QWN0aW9uID0ge1xuICAgICAgICAgICAgYWN0aW9uVHlwZTogJ3NjcmlwdCcsXG4gICAgICAgICAgICBzY3JpcHQ6IHtcbiAgICAgICAgICAgICAgICBsaW5lczogW1xuICAgICAgICAgICAgICAgICAgICBgaWYoJyR7cHJvcHMudmlld0lkfScgPT09ICRldmVudC52aWV3SWQpIHtgLFxuICAgICAgICAgICAgICAgICAgICBgICAgQCN7JHtwcm9wcy5jb25maWcuaWR9fS5tZXNzYWdlID0gJGV2ZW50LmRhdGEubWVzc2FnZWAsXG4gICAgICAgICAgICAgICAgICAgIGAgICBAI3ske3Byb3BzLmNvbmZpZy5pZH19LnZhcmlhbnQgPSAkZXZlbnQuZGF0YS5tZXNzYWdlVHlwZSA9PT0gJ0VSUk9SJyA/ICdkYW5nZXInIDogJGV2ZW50LmRhdGEubWVzc2FnZVR5cGUgPT09ICdXQVJOJyA/ICd3YXJuaW5nJyA6ICRldmVudC5kYXRhLm1lc3NhZ2VUeXBlID09PSAnU1VDQ0VTUycgPyAnc3VjY2VzcycgOiAnaW5mbydgLFxuICAgICAgICAgICAgICAgICAgICBgfWBcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChldmVudEhhbmRsaW5nQ29uZmlnLnN1YnNjcmlwdGlvbnMpKSB7XG4gICAgICAgICAgICBldmVudEhhbmRsaW5nQ29uZmlnLnN1YnNjcmlwdGlvbnMgPSBbe1xuICAgICAgICAgICAgICAgIHB1Ymxpc2hlcjogJ2FwcGxpY2F0aW9uTWFuYWdlcicsXG4gICAgICAgICAgICAgICAgZXZlbnRUeXBlOiBFdmVudFR5cGUuTUVTU0FHRV9BUlJJVkVELFxuICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtkZWZhdWx0QWN0aW9uXVxuICAgICAgICAgICAgfV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHN1YnNjcmlwdGlvbiBvZiBldmVudEhhbmRsaW5nQ29uZmlnLnN1YnNjcmlwdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHN1YnNjcmlwdGlvbi5hY3Rpb25zKSB8fCBzdWJzY3JpcHRpb24uYWN0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uLmFjdGlvbnMgPSBbZGVmYXVsdEFjdGlvbl07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnRNYW5hZ2VyLmFkZFN1YnNjcmlwdGlvbnMoZXZlbnRIYW5kbGluZ0NvbmZpZywgcHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQpO1xuXG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIuY2xlYXJDb21wb25lbnRFdmVudExpc3RlbmVycyhwcm9wcy5oYW5kbGUpO1xuICAgICAgICB9O1xuXG4gICAgfSwgW10pO1xuXG4gICAgLypcbiAgICAgICBTaG93IGFuaW1hdGlvbiB3aGVuIG1lc3NhZ2UgYXJyaXZlc1xuICAgICAgIChoaWRkZW4gZmlyc3QsIHRoZW4gdmlzaWJsZSBuZXh0IGZyYW1lKVxuICAgICovXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHNldFZpc2libGUoZmFsc2UpO1xuXG4gICAgICAgICAgICBjb25zdCBmcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0VmlzaWJsZSh0cnVlKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4gY2FuY2VsQW5pbWF0aW9uRnJhbWUoZnJhbWUpO1xuICAgICAgICB9XG4gICAgfSwgW21lc3NhZ2VdKTtcblxuICAgIC8qXG4gICAgICAgQXV0byBjbG9zZSBub24tZXJyb3IgbWVzc2FnZXNcbiAgICAqL1xuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG5cbiAgICAgICAgaWYgKCFtZXNzYWdlKSByZXR1cm47XG4gICAgICAgIGlmICh2YXJpYW50ID09PSBcImRhbmdlclwiKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgdGltZW91dCA9IHZhcmlhbnQgPT09IFwid2FybmluZ1wiID8gNjAwMCA6IDMwMDA7XG5cbiAgICAgICAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNsb3NlQWxlcnQoKTtcbiAgICAgICAgfSwgdGltZW91dCk7XG5cbiAgICAgICAgcmV0dXJuICgpID0+IGNsZWFyVGltZW91dCh0aW1lcik7XG5cbiAgICB9LCBbbWVzc2FnZSwgdmFyaWFudF0pO1xuXG4gICAgY29uc3QgY2xvc2VBbGVydCA9ICgpID0+IHtcbiAgICAgICAgc2V0VmlzaWJsZShmYWxzZSk7XG5cbiAgICAgICAgLy8gYWxsb3cgZmFkZS1vdXQgYW5pbWF0aW9uIHRvIGNvbXBsZXRlXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgc2V0TWVzc2FnZShudWxsKTtcbiAgICAgICAgfSwgMjUwKTtcbiAgICB9O1xuXG4gICAgY29uc3QgYXBpID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5jb25maWcuaWQ7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IG1lc3NhZ2UobWVzc2FnZSkge1xuICAgICAgICAgICAgICAgIHNldE1lc3NhZ2UobWVzc2FnZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IHZhcmlhbnQodmFyaWFudCkge1xuICAgICAgICAgICAgICAgIHNldFZhcmlhbnQodmFyaWFudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0Q2hpbGRyZW46ICgpID0+IFtdXG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIGNvbnN0IG92ZXJsYXlTdHlsZSA9IHtcbiAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgdG9wOiBcImNhbGModmFyKC0tdmlldy1oZWFkZXItaCkgKyAyNHB4KVwiLFxuICAgICAgICBsZWZ0OiBcIjUwJVwiLFxuICAgICAgICB0cmFuc2Zvcm06IFwidHJhbnNsYXRlWCgtNTAlKVwiLFxuICAgICAgICB3aWR0aDogXCJjYWxjKDEwMCUgLSAxMjhweClcIixcbiAgICAgICAgbWF4V2lkdGg6IFwiNjBkdndcIixcbiAgICAgICAgekluZGV4OiAxMDUwLFxuICAgICAgICBwb2ludGVyRXZlbnRzOiBcIm5vbmVcIlxuICAgIH07XG5cbiAgICBjb25zdCBzdHJpY3RTdHlsZSA9IHtcbiAgICAgICAgcGFkZGluZzogXCIwIDMycHhcIixcbiAgICAgICAgaGVpZ2h0OiBcImF1dG9cIlxuICAgIH07XG5cbiAgICBjb25zdCBjb250YWluZXJTdHlsZSA9IHBsYWNlbWVudCA9PT0gXCJzdHJpY3RcIlxuICAgICAgICA/IHN0cmljdFN0eWxlXG4gICAgICAgIDogb3ZlcmxheVN0eWxlO1xuXG4gICAgLy8gU3RyaWN0IHBsYWNlbWVudCBzaXRzIGlubGluZSB3aXRoIHN1cnJvdW5kaW5nIGNvbnRlbnQgKGUuZy4gaW5zaWRlIGFcbiAgICAvLyBzdGVwcGVyLXRpdGxlLWJhciBsYXlvdXQgYWJvdmUgYSBjYXJkKSBhbmQgbXVzdCBncm93IHRvIGZpdCBhIGxvbmdcbiAgICAvLyBtZXNzYWdlIOKAlCBvdGhlcndpc2UgdXNlcnMgc2VlIFwiV2UncmUgdW5hYmxlIHRvIHZlcmlmeSB5b3VyIENTRC4uLlwiXG4gICAgLy8gdHJ1bmNhdGVkIGF0IHRoZSBmaXJzdCBlbGxpcHNpcy4gT3ZlcmxheSBwbGFjZW1lbnQgZmxvYXRzIGFuZCBzdGF5c1xuICAgIC8vIHNpbmdsZS1saW5lIHNvIGl0IGRvZXNuJ3QgcHVzaCBwYWdlIGxheW91dCBhcm91bmQuXG4gICAgY29uc3QgbWVzc2FnZVN0eWxlID0gcGxhY2VtZW50ID09PSBcInN0cmljdFwiXG4gICAgICAgID8ge1xuICAgICAgICAgICAgY29sb3I6ICdyZ2JhKDI1NSwyNTUsMjU1LDAuOSknLFxuICAgICAgICAgICAgd2hpdGVTcGFjZTogJ25vcm1hbCcsXG4gICAgICAgICAgICB3b3JkQnJlYWs6ICdicmVhay13b3JkJyxcbiAgICAgICAgICAgIG1hcmdpbjogMFxuICAgICAgICB9XG4gICAgICAgIDoge1xuICAgICAgICAgICAgY29sb3I6ICdyZ2JhKDI1NSwyNTUsMjU1LDAuOSknLFxuICAgICAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgICAgICAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLFxuICAgICAgICAgICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgICAgICAgICBtYXhXaWR0aDogJ2NhbGMoMTAwJSAtIDMycHgpJyxcbiAgICAgICAgICAgIG1hcmdpbjogMFxuICAgICAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgIVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcpID9cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e1V0aWxzLm1lcmdlU3R5bGVzKGNvbnRhaW5lclN0eWxlLCBwcm9wcy5jb25maWcpfT5cblxuICAgICAgICAgICAgICAgIHttZXNzYWdlICYmIChcbiAgICAgICAgICAgICAgICAgICAgPEFsZXJ0XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BhbGVydC1mYWRlICR7dmlzaWJsZSA/IFwiYWxlcnQtc2hvd1wiIDogXCJhbGVydC1oaWRlXCJ9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9e3ZhcmlhbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlPXtjbG9zZUFsZXJ0fVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzbWlzc2libGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm94U2hhZG93OiAnMCA2cHggMTZweCByZ2JhKDAsMCwwLDAuMTgpJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17bWVzc2FnZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17bWVzc2FnZVN0eWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttZXNzYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8L0FsZXJ0PlxuICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgOiBudWxsXG4gICAgKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBBbGVydEJhcjsiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFDLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNELElBQUFDLE1BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLE1BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElB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
|
|
149
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9VdGlscyIsIl9BbGVydCIsIl9FdmVudFR5cGUiLCJfT2JzZXJ2YWJsZSIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkFsZXJ0QmFyIiwiUmVhY3QiLCJtZW1vIiwicHJvcHMiLCJfcHJvcHMkY29uZmlnIiwibWVzc2FnZSIsInNldE1lc3NhZ2UiLCJ1c2VTdGF0ZSIsImNvbmZpZyIsInZhcmlhbnQiLCJzZXRWYXJpYW50IiwidmlzaWJsZSIsInNldFZpc2libGUiLCJwbGFjZW1lbnQiLCJhdHRyaWJ1dGVzIiwidXNlRWZmZWN0IiwiaGFuZGxlIiwiYXBpIiwicGFyc2VkQ29uZmlnIiwiVXRpbHMiLCJwYXJzZUNvbmZpZyIsInZpZXdJZCIsImV2ZW50SGFuZGxpbmdDb25maWciLCJpc051bGwiLCJkZWZhdWx0QWN0aW9uIiwiYWN0aW9uVHlwZSIsInNjcmlwdCIsImxpbmVzIiwiY29uY2F0IiwiaWQiLCJzdWJzY3JpcHRpb25zIiwicHVibGlzaGVyIiwiZXZlbnRUeXBlIiwiRXZlbnRUeXBlIiwiTUVTU0FHRV9BUlJJVkVEIiwiYWN0aW9ucyIsInN1YnNjcmlwdGlvbiIsImxlbmd0aCIsImV2ZW50TWFuYWdlciIsImFkZFN1YnNjcmlwdGlvbnMiLCJjbGVhckNvbXBvbmVudEV2ZW50TGlzdGVuZXJzIiwiZnJhbWUiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsInRpbWVvdXQiLCJ0aW1lciIsInNldFRpbWVvdXQiLCJjbG9zZUFsZXJ0IiwiY2xlYXJUaW1lb3V0IiwiZ2V0Q2hpbGRyZW4iLCJvdmVybGF5U3R5bGUiLCJwb3NpdGlvbiIsInRvcCIsImxlZnQiLCJ0cmFuc2Zvcm0iLCJ3aWR0aCIsIm1heFdpZHRoIiwiekluZGV4IiwicG9pbnRlckV2ZW50cyIsInN0cmljdFN0eWxlIiwicGFkZGluZyIsImhlaWdodCIsImNvbnRhaW5lclN0eWxlIiwibWVzc2FnZVN0eWxlIiwiY29sb3IiLCJ3aGl0ZVNwYWNlIiwid29yZEJyZWFrIiwibWFyZ2luIiwib3ZlcmZsb3ciLCJ0ZXh0T3ZlcmZsb3ciLCJjcmVhdGVFbGVtZW50Iiwic3R5bGUiLCJtZXJnZVN0eWxlcyIsImNsYXNzTmFtZSIsIm9uQ2xvc2UiLCJkaXNtaXNzaWJsZSIsImJveFNoYWRvdyIsInRpdGxlIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL0FsZXJ0QmFyLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyLvu79pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFV0aWxzIGZyb20gJy4uL1V0aWxzJztcbmltcG9ydCBBbGVydCBmcm9tICdyZWFjdC1ib290c3RyYXAvQWxlcnQnO1xuaW1wb3J0IEV2ZW50VHlwZSBmcm9tICcuLi9ldmVudC9FdmVudFR5cGUnO1xuaW1wb3J0IGV2ZW50TWFuYWdlciBmcm9tICcuLi9ldmVudC9PYnNlcnZhYmxlJztcbmltcG9ydCAnLi9BbGVydEJhci5jc3MnO1xuXG5jb25zdCBBbGVydEJhciA9IFJlYWN0Lm1lbW8oKHByb3BzKSA9PiB7XG5cbiAgICBjb25zdCBbbWVzc2FnZSwgc2V0TWVzc2FnZV0gPSBSZWFjdC51c2VTdGF0ZShwcm9wcy5jb25maWcubWVzc2FnZSk7XG4gICAgY29uc3QgW3ZhcmlhbnQsIHNldFZhcmlhbnRdID0gUmVhY3QudXNlU3RhdGUocHJvcHMuY29uZmlnLnZhcmlhbnQgfHwgJ2luZm8nKTtcbiAgICBjb25zdCBbdmlzaWJsZSwgc2V0VmlzaWJsZV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG5cbiAgICBjb25zdCBwbGFjZW1lbnQgPSBwcm9wcy5jb25maWc/LmF0dHJpYnV0ZXM/LnBsYWNlbWVudCB8fCBcIm92ZXJsYXlcIjtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHByb3BzLmhhbmRsZS5hcGkgPSBhcGkoKTtcblxuICAgICAgICBsZXQgcGFyc2VkQ29uZmlnID0gVXRpbHMucGFyc2VDb25maWcocHJvcHMuY29uZmlnLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICBsZXQgZXZlbnRIYW5kbGluZ0NvbmZpZyA9IFV0aWxzLmlzTnVsbChwYXJzZWRDb25maWcuZXZlbnRIYW5kbGluZ0NvbmZpZykgPyB7fSA6IHBhcnNlZENvbmZpZy5ldmVudEhhbmRsaW5nQ29uZmlnO1xuXG4gICAgICAgIGxldCBkZWZhdWx0QWN0aW9uID0ge1xuICAgICAgICAgICAgYWN0aW9uVHlwZTogJ3NjcmlwdCcsXG4gICAgICAgICAgICBzY3JpcHQ6IHtcbiAgICAgICAgICAgICAgICBsaW5lczogW1xuICAgICAgICAgICAgICAgICAgICBgaWYoJyR7cHJvcHMudmlld0lkfScgPT09ICRldmVudC52aWV3SWQgJiYgIWlzTnVsbChAI3ske3Byb3BzLmNvbmZpZy5pZH19KSkge2AsXG4gICAgICAgICAgICAgICAgICAgIGAgICBAI3ske3Byb3BzLmNvbmZpZy5pZH19Lm1lc3NhZ2UgPSAkZXZlbnQuZGF0YS5tZXNzYWdlYCxcbiAgICAgICAgICAgICAgICAgICAgYCAgIEAjeyR7cHJvcHMuY29uZmlnLmlkfX0udmFyaWFudCA9ICRldmVudC5kYXRhLm1lc3NhZ2VUeXBlID09PSAnRVJST1InID8gJ2RhbmdlcicgOiAkZXZlbnQuZGF0YS5tZXNzYWdlVHlwZSA9PT0gJ1dBUk4nID8gJ3dhcm5pbmcnIDogJGV2ZW50LmRhdGEubWVzc2FnZVR5cGUgPT09ICdTVUNDRVNTJyA/ICdzdWNjZXNzJyA6ICdpbmZvJ2AsXG4gICAgICAgICAgICAgICAgICAgIGB9YFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGV2ZW50SGFuZGxpbmdDb25maWcuc3Vic2NyaXB0aW9ucykpIHtcbiAgICAgICAgICAgIGV2ZW50SGFuZGxpbmdDb25maWcuc3Vic2NyaXB0aW9ucyA9IFt7XG4gICAgICAgICAgICAgICAgcHVibGlzaGVyOiAnYXBwbGljYXRpb25NYW5hZ2VyJyxcbiAgICAgICAgICAgICAgICBldmVudFR5cGU6IEV2ZW50VHlwZS5NRVNTQUdFX0FSUklWRUQsXG4gICAgICAgICAgICAgICAgYWN0aW9uczogW2RlZmF1bHRBY3Rpb25dXG4gICAgICAgICAgICB9XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc3Vic2NyaXB0aW9uIG9mIGV2ZW50SGFuZGxpbmdDb25maWcuc3Vic2NyaXB0aW9ucykge1xuICAgICAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwoc3Vic2NyaXB0aW9uLmFjdGlvbnMpIHx8IHN1YnNjcmlwdGlvbi5hY3Rpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb24uYWN0aW9ucyA9IFtkZWZhdWx0QWN0aW9uXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBldmVudE1hbmFnZXIuYWRkU3Vic2NyaXB0aW9ucyhldmVudEhhbmRsaW5nQ29uZmlnLCBwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCk7XG5cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5jbGVhckNvbXBvbmVudEV2ZW50TGlzdGVuZXJzKHByb3BzLmhhbmRsZSk7XG4gICAgICAgIH07XG5cbiAgICB9LCBbXSk7XG5cbiAgICAvKlxuICAgICAgIFNob3cgYW5pbWF0aW9uIHdoZW4gbWVzc2FnZSBhcnJpdmVzXG4gICAgICAgKGhpZGRlbiBmaXJzdCwgdGhlbiB2aXNpYmxlIG5leHQgZnJhbWUpXG4gICAgKi9cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZSkge1xuICAgICAgICAgICAgc2V0VmlzaWJsZShmYWxzZSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRWaXNpYmxlKHRydWUpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiAoKSA9PiBjYW5jZWxBbmltYXRpb25GcmFtZShmcmFtZSk7XG4gICAgICAgIH1cbiAgICB9LCBbbWVzc2FnZV0pO1xuXG4gICAgLypcbiAgICAgICBBdXRvIGNsb3NlIG5vbi1lcnJvciBtZXNzYWdlc1xuICAgICovXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcblxuICAgICAgICBpZiAoIW1lc3NhZ2UpIHJldHVybjtcbiAgICAgICAgaWYgKHZhcmlhbnQgPT09IFwiZGFuZ2VyXCIpIHJldHVybjtcblxuICAgICAgICBjb25zdCB0aW1lb3V0ID0gdmFyaWFudCA9PT0gXCJ3YXJuaW5nXCIgPyA2MDAwIDogMzAwMDtcblxuICAgICAgICBjb25zdCB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY2xvc2VBbGVydCgpO1xuICAgICAgICB9LCB0aW1lb3V0KTtcblxuICAgICAgICByZXR1cm4gKCkgPT4gY2xlYXJUaW1lb3V0KHRpbWVyKTtcblxuICAgIH0sIFttZXNzYWdlLCB2YXJpYW50XSk7XG5cbiAgICBjb25zdCBjbG9zZUFsZXJ0ID0gKCkgPT4ge1xuICAgICAgICBzZXRWaXNpYmxlKGZhbHNlKTtcblxuICAgICAgICAvLyBhbGxvdyBmYWRlLW91dCBhbmltYXRpb24gdG8gY29tcGxldGVcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBzZXRNZXNzYWdlKG51bGwpO1xuICAgICAgICB9LCAyNTApO1xuICAgIH07XG5cbiAgICBjb25zdCBhcGkgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBnZXQgaWQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLmNvbmZpZy5pZDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQgbWVzc2FnZShtZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgc2V0TWVzc2FnZShtZXNzYWdlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQgdmFyaWFudCh2YXJpYW50KSB7XG4gICAgICAgICAgICAgICAgc2V0VmFyaWFudCh2YXJpYW50KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRDaGlsZHJlbjogKCkgPT4gW11cbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb3ZlcmxheVN0eWxlID0ge1xuICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICB0b3A6IFwiY2FsYyh2YXIoLS12aWV3LWhlYWRlci1oKSArIDI0cHgpXCIsXG4gICAgICAgIGxlZnQ6IFwiNTAlXCIsXG4gICAgICAgIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGVYKC01MCUpXCIsXG4gICAgICAgIHdpZHRoOiBcImNhbGMoMTAwJSAtIDEyOHB4KVwiLFxuICAgICAgICBtYXhXaWR0aDogXCI2MGR2d1wiLFxuICAgICAgICB6SW5kZXg6IDEwNTAsXG4gICAgICAgIHBvaW50ZXJFdmVudHM6IFwibm9uZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IHN0cmljdFN0eWxlID0ge1xuICAgICAgICBwYWRkaW5nOiBcIjAgMzJweFwiLFxuICAgICAgICBoZWlnaHQ6IFwiYXV0b1wiXG4gICAgfTtcblxuICAgIGNvbnN0IGNvbnRhaW5lclN0eWxlID0gcGxhY2VtZW50ID09PSBcInN0cmljdFwiXG4gICAgICAgID8gc3RyaWN0U3R5bGVcbiAgICAgICAgOiBvdmVybGF5U3R5bGU7XG5cbiAgICAvLyBTdHJpY3QgcGxhY2VtZW50IHNpdHMgaW5saW5lIHdpdGggc3Vycm91bmRpbmcgY29udGVudCAoZS5nLiBpbnNpZGUgYVxuICAgIC8vIHN0ZXBwZXItdGl0bGUtYmFyIGxheW91dCBhYm92ZSBhIGNhcmQpIGFuZCBtdXN0IGdyb3cgdG8gZml0IGEgbG9uZ1xuICAgIC8vIG1lc3NhZ2Ug4oCUIG90aGVyd2lzZSB1c2VycyBzZWUgXCJXZSdyZSB1bmFibGUgdG8gdmVyaWZ5IHlvdXIgQ1NELi4uXCJcbiAgICAvLyB0cnVuY2F0ZWQgYXQgdGhlIGZpcnN0IGVsbGlwc2lzLiBPdmVybGF5IHBsYWNlbWVudCBmbG9hdHMgYW5kIHN0YXlzXG4gICAgLy8gc2luZ2xlLWxpbmUgc28gaXQgZG9lc24ndCBwdXNoIHBhZ2UgbGF5b3V0IGFyb3VuZC5cbiAgICBjb25zdCBtZXNzYWdlU3R5bGUgPSBwbGFjZW1lbnQgPT09IFwic3RyaWN0XCJcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBjb2xvcjogJ3JnYmEoMjU1LDI1NSwyNTUsMC45KScsXG4gICAgICAgICAgICB3aGl0ZVNwYWNlOiAnbm9ybWFsJyxcbiAgICAgICAgICAgIHdvcmRCcmVhazogJ2JyZWFrLXdvcmQnLFxuICAgICAgICAgICAgbWFyZ2luOiAwXG4gICAgICAgIH1cbiAgICAgICAgOiB7XG4gICAgICAgICAgICBjb2xvcjogJ3JnYmEoMjU1LDI1NSwyNTUsMC45KScsXG4gICAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgICAgICB0ZXh0T3ZlcmZsb3c6ICdlbGxpcHNpcycsXG4gICAgICAgICAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICAgICAgICAgIG1heFdpZHRoOiAnY2FsYygxMDAlIC0gMzJweCknLFxuICAgICAgICAgICAgbWFyZ2luOiAwXG4gICAgICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgICAhVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZykgP1xuICAgICAgICAgICAgPGRpdiBzdHlsZT17VXRpbHMubWVyZ2VTdHlsZXMoY29udGFpbmVyU3R5bGUsIHByb3BzLmNvbmZpZyl9PlxuXG4gICAgICAgICAgICAgICAge21lc3NhZ2UgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8QWxlcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YGFsZXJ0LWZhZGUgJHt2aXNpYmxlID8gXCJhbGVydC1zaG93XCIgOiBcImFsZXJ0LWhpZGVcIn1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD17dmFyaWFudH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xvc2U9e2Nsb3NlQWxlcnR9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNtaXNzaWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJFdmVudHM6ICdhdXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3hTaGFkb3c6ICcwIDZweCAxNnB4IHJnYmEoMCwwLDAsMC4xOCknXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXttZXNzYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXttZXNzYWdlU3R5bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge21lc3NhZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvQWxlcnQ+XG4gICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA6IG51bGxcbiAgICApO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IEFsZXJ0QmFyOyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUMsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0QsSUFBQUMsTUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUs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
|