nsc-react-component 3.2.7 → 3.2.9
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.
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import React, { useEffect, useMemo, useState } from "react";
|
|
2
|
-
import
|
|
1
|
+
import React, { useEffect, useMemo, useRef, useState } from "react";
|
|
2
|
+
import "./index.less";
|
|
3
3
|
import { getLess } from "../../utils";
|
|
4
|
-
|
|
4
|
+
const styles = null;
|
|
5
|
+
const LeftArrow = props => {
|
|
5
6
|
return /*#__PURE__*/React.createElement("div", null, props.children);
|
|
6
|
-
}
|
|
7
|
-
|
|
7
|
+
};
|
|
8
|
+
const RightArrow = props => {
|
|
8
9
|
return /*#__PURE__*/React.createElement("div", null, props.children);
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
console.log("props.translateX", props.translateX);
|
|
10
|
+
};
|
|
11
|
+
const Content = props => {
|
|
12
12
|
return /*#__PURE__*/React.createElement("div", {
|
|
13
13
|
className: getLess(styles, "nsc-slidermenu-tab-nav"),
|
|
14
14
|
id: "nsc-slidermenu-total-list"
|
|
@@ -18,7 +18,7 @@ function Content(props) {
|
|
|
18
18
|
transform: "translateX(".concat(props.translateX, "px)")
|
|
19
19
|
}
|
|
20
20
|
}, props.children));
|
|
21
|
-
}
|
|
21
|
+
};
|
|
22
22
|
function SliderMenu(props) {
|
|
23
23
|
const {
|
|
24
24
|
children,
|
|
@@ -40,12 +40,10 @@ function SliderMenu(props) {
|
|
|
40
40
|
const isRightIconVisible = listItemWidth > listWidth;
|
|
41
41
|
return [isLeftIconVisible, isRightIconVisible];
|
|
42
42
|
}, [data, translateX, listWidth]);
|
|
43
|
-
|
|
44
|
-
console.log("rightIconVisible", rightIconVisible);
|
|
43
|
+
const ref = useRef(null);
|
|
45
44
|
useEffect(() => {
|
|
46
45
|
const totallist = document.getElementById("nsc-slidermenu-total-list");
|
|
47
|
-
|
|
48
|
-
setListWidth(totallist.clientWidth);
|
|
46
|
+
setListWidth(totallist ? totallist === null || totallist === void 0 ? void 0 : totallist.clientWidth : 0);
|
|
49
47
|
}, [data]);
|
|
50
48
|
const onIconClick = direaction => {
|
|
51
49
|
let newTranslateX = translateX;
|
|
@@ -73,22 +71,26 @@ function SliderMenu(props) {
|
|
|
73
71
|
}, [rightIconClick, leftIconClick]);
|
|
74
72
|
return /*#__PURE__*/React.createElement("div", {
|
|
75
73
|
className: getLess(styles, "nsc-slidermenu-total-nav")
|
|
76
|
-
}, children && Array.isArray(children) && children.length > 0 ? children.map(item => {
|
|
77
|
-
if (item.type
|
|
74
|
+
}, children && Array.isArray(children) && children.length > 0 ? children.map((item, index) => {
|
|
75
|
+
if (item.type === LeftArrow && leftIconVisible) {
|
|
78
76
|
return /*#__PURE__*/React.createElement("div", {
|
|
79
77
|
onClick: () => {
|
|
80
78
|
onIconClick("left");
|
|
81
|
-
}
|
|
79
|
+
},
|
|
80
|
+
key: index
|
|
82
81
|
}, item);
|
|
83
|
-
} else if (item.type
|
|
82
|
+
} else if (item.type === RightArrow && rightIconVisible) {
|
|
84
83
|
return /*#__PURE__*/React.createElement("div", {
|
|
85
84
|
onClick: () => {
|
|
86
85
|
onIconClick("right");
|
|
87
|
-
}
|
|
86
|
+
},
|
|
87
|
+
key: index
|
|
88
88
|
}, item);
|
|
89
|
-
} else if (item.type
|
|
89
|
+
} else if (item.type === Content) {
|
|
90
90
|
return /*#__PURE__*/React.createElement(Content, {
|
|
91
|
-
translateX: translateX
|
|
91
|
+
translateX: translateX,
|
|
92
|
+
data: data,
|
|
93
|
+
key: index
|
|
92
94
|
}, item.props.children);
|
|
93
95
|
}
|
|
94
96
|
}) : children);
|
|
@@ -97,4 +99,4 @@ SliderMenu.LeftArrow = LeftArrow;
|
|
|
97
99
|
SliderMenu.RightArrow = RightArrow;
|
|
98
100
|
SliderMenu.Content = Content;
|
|
99
101
|
export default SliderMenu;
|
|
100
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInN0eWxlcyIsImdldExlc3MiLCJMZWZ0QXJyb3ciLCJwcm9wcyIsImNyZWF0ZUVsZW1lbnQiLCJjaGlsZHJlbiIsIlJpZ2h0QXJyb3ciLCJDb250ZW50IiwiY29uc29sZSIsImxvZyIsInRyYW5zbGF0ZVgiLCJjbGFzc05hbWUiLCJpZCIsInN0eWxlIiwidHJhbnNmb3JtIiwiY29uY2F0IiwiU2xpZGVyTWVudSIsImRhdGEiLCJ0cmFuc2xhdGVTdGVwIiwiaXRlbVdpZHRoIiwibGlzdFdpZHRoIiwic2V0TGlzdFdpZHRoIiwic2V0VHJhbnNsYXRlWCIsImxlZnRJY29uQ2xpY2siLCJyaWdodEljb25DbGljayIsImxpc3RJdGVtV2lkdGgiLCJsZW5ndGgiLCJsZWZ0SWNvblZpc2libGUiLCJyaWdodEljb25WaXNpYmxlIiwiaXNMZWZ0SWNvblZpc2libGUiLCJpc1JpZ2h0SWNvblZpc2libGUiLCJ0b3RhbGxpc3QiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiY2xpZW50V2lkdGgiLCJvbkljb25DbGljayIsImRpcmVhY3Rpb24iLCJuZXdUcmFuc2xhdGVYIiwidHJhbnNsYXRlRGlzdGFuY2UiLCJvblN0YXRlQ2hhbmdlIiwibGVmdENsaWNrIiwicmlnaHRDbGljayIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsIml0ZW0iLCJ0eXBlIiwibmFtZSIsIm9uQ2xpY2siXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9iYXNlL3NsaWRlcm1lbnUvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vaW5kZXgubGVzc1wiO1xyXG5pbXBvcnQgeyBnZXRMZXNzIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcblxyXG5pbnRlcmZhY2UgU2xpZGVyUHJvcHMge1xyXG4gIGRhdGE6IEFycmF5PE9iamVjdD47XHJcbiAgaXRlbVdpZHRoOiBudW1iZXI7XHJcbiAgdHJhbnNsYXRlU3RlcDogbnVtYmVyO1xyXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xyXG4gIG9uU3RhdGVDaGFuZ2U/OiBGdW5jdGlvbjtcclxufVxyXG5mdW5jdGlvbiBMZWZ0QXJyb3cocHJvcHM6IGFueSkge1xyXG4gIHJldHVybiA8ZGl2Pntwcm9wcy5jaGlsZHJlbn08L2Rpdj47XHJcbn1cclxuXHJcbmZ1bmN0aW9uIFJpZ2h0QXJyb3cocHJvcHM6IGFueSkge1xyXG4gIHJldHVybiA8ZGl2Pntwcm9wcy5jaGlsZHJlbn08L2Rpdj47XHJcbn1cclxuXHJcbmZ1bmN0aW9uIENvbnRlbnQocHJvcHM6IGFueSkge1xyXG4gIGNvbnNvbGUubG9nKFwicHJvcHMudHJhbnNsYXRlWFwiLCBwcm9wcy50cmFuc2xhdGVYKTtcclxuICByZXR1cm4gKFxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1zbGlkZXJtZW51LXRhYi1uYXZcIil9XHJcbiAgICAgIGlkPVwibnNjLXNsaWRlcm1lbnUtdG90YWwtbGlzdFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1zbGlkZXJtZW51LW5hdi1saXN0XCIpfVxyXG4gICAgICAgIHN0eWxlPXt7IHRyYW5zZm9ybTogYHRyYW5zbGF0ZVgoJHtwcm9wcy50cmFuc2xhdGVYfXB4KWAgfX1cclxuICAgICAgPlxyXG4gICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59XHJcblxyXG5mdW5jdGlvbiBTbGlkZXJNZW51KHByb3BzOiBTbGlkZXJQcm9wcykge1xyXG4gIGNvbnN0IHsgY2hpbGRyZW4sIGRhdGEsIHRyYW5zbGF0ZVN0ZXAgPSAxMDAsIGl0ZW1XaWR0aCA9IDQwIH0gPSBwcm9wcztcclxuICBjb25zdCBbbGlzdFdpZHRoLCBzZXRMaXN0V2lkdGhdID0gdXNlU3RhdGUoMCk7XHJcbiAgY29uc3QgW3RyYW5zbGF0ZVgsIHNldFRyYW5zbGF0ZVhdID0gdXNlU3RhdGUoMCk7XHJcbiAgY29uc3QgW2xlZnRJY29uQ2xpY2ssIHJpZ2h0SWNvbkNsaWNrXSA9IHVzZU1lbW8oKCkgPT4ge1xyXG4gICAgY29uc3QgbGlzdEl0ZW1XaWR0aCA9IGRhdGEubGVuZ3RoICogaXRlbVdpZHRoO1xyXG4gICAgY29uc3QgbGVmdEljb25DbGljayA9IHRyYW5zbGF0ZVggPCAwO1xyXG4gICAgY29uc3QgcmlnaHRJY29uQ2xpY2sgPVxyXG4gICAgICB0cmFuc2xhdGVYID09IDBcclxuICAgICAgICA/IGxpc3RJdGVtV2lkdGggPiBsaXN0V2lkdGhcclxuICAgICAgICA6IGxpc3RJdGVtV2lkdGggKyB0cmFuc2xhdGVYID4gbGlzdFdpZHRoO1xyXG4gICAgcmV0dXJuIFtsZWZ0SWNvbkNsaWNrLCByaWdodEljb25DbGlja107XHJcbiAgfSwgW2RhdGEubGVuZ3RoLCB0cmFuc2xhdGVYLCBsaXN0V2lkdGhdKTtcclxuICBjb25zdCBbbGVmdEljb25WaXNpYmxlLCByaWdodEljb25WaXNpYmxlXSA9IHVzZU1lbW8oKCkgPT4ge1xyXG4gICAgY29uc3QgbGlzdEl0ZW1XaWR0aCA9IGRhdGEubGVuZ3RoICogaXRlbVdpZHRoO1xyXG4gICAgY29uc3QgaXNMZWZ0SWNvblZpc2libGUgPSBsaXN0SXRlbVdpZHRoID4gbGlzdFdpZHRoO1xyXG4gICAgY29uc3QgaXNSaWdodEljb25WaXNpYmxlID0gbGlzdEl0ZW1XaWR0aCA+IGxpc3RXaWR0aDtcclxuICAgIHJldHVybiBbaXNMZWZ0SWNvblZpc2libGUsIGlzUmlnaHRJY29uVmlzaWJsZV07XHJcbiAgfSwgW2RhdGEsIHRyYW5zbGF0ZVgsIGxpc3RXaWR0aF0pO1xyXG5cclxuICBjb25zb2xlLmxvZyhcImxlZnRJY29uVmlzaWJsZVwiLCBsZWZ0SWNvblZpc2libGUpO1xyXG5cclxuICBjb25zb2xlLmxvZyhcInJpZ2h0SWNvblZpc2libGVcIiwgcmlnaHRJY29uVmlzaWJsZSk7XHJcblxyXG4gIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBjb25zdCB0b3RhbGxpc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcclxuICAgICAgXCJuc2Mtc2xpZGVybWVudS10b3RhbC1saXN0XCJcclxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zb2xlLmxvZyhcInRvdGFsbGlzdC5jbGllbnRXaWR0aFwiLCB0b3RhbGxpc3QuY2xpZW50V2lkdGgpO1xyXG4gICAgc2V0TGlzdFdpZHRoKHRvdGFsbGlzdC5jbGllbnRXaWR0aCk7XHJcbiAgfSwgW2RhdGFdKTtcclxuXHJcbiAgY29uc3Qgb25JY29uQ2xpY2sgPSAoZGlyZWFjdGlvbjogc3RyaW5nKSA9PiB7XHJcbiAgICBsZXQgbmV3VHJhbnNsYXRlWDogbnVtYmVyID0gdHJhbnNsYXRlWDtcclxuICAgIGNvbnN0IHRyYW5zbGF0ZURpc3RhbmNlOiBudW1iZXIgPVxyXG4gICAgICB0cmFuc2xhdGVTdGVwICogKGRpcmVhY3Rpb24gPT09IFwibGVmdFwiID8gMSA6IC0xKTtcclxuICAgIC8vIOeCueWHu+eureWktFxyXG4gICAgaWYgKHRyYW5zbGF0ZURpc3RhbmNlID4gMCkge1xyXG4gICAgICBpZiAoIWxlZnRJY29uQ2xpY2spIHJldHVybjtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgbmV3VHJhbnNsYXRlWCArPSB0cmFuc2xhdGVEaXN0YW5jZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0cmFuc2xhdGVEaXN0YW5jZSA8IDApIHtcclxuICAgICAgaWYgKCFyaWdodEljb25DbGljaykgcmV0dXJuO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBuZXdUcmFuc2xhdGVYICs9IHRyYW5zbGF0ZURpc3RhbmNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBzZXRUcmFuc2xhdGVYKG5ld1RyYW5zbGF0ZVgpO1xyXG4gIH07XHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IHsgb25TdGF0ZUNoYW5nZSB9ID0gcHJvcHM7XHJcbiAgICBvblN0YXRlQ2hhbmdlICYmXHJcbiAgICAgIG9uU3RhdGVDaGFuZ2UoeyBsZWZ0Q2xpY2s6IGxlZnRJY29uQ2xpY2ssIHJpZ2h0Q2xpY2s6IHJpZ2h0SWNvbkNsaWNrIH0pO1xyXG4gIH0sIFtyaWdodEljb25DbGljaywgbGVmdEljb25DbGlja10pO1xyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXNsaWRlcm1lbnUtdG90YWwtbmF2XCIpfT5cclxuICAgICAge2NoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pICYmIGNoaWxkcmVuLmxlbmd0aCA+IDBcclxuICAgICAgICA/IGNoaWxkcmVuLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoaXRlbS50eXBlLm5hbWUgPT09IFwiTGVmdEFycm93XCIgJiYgbGVmdEljb25WaXNpYmxlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIG9uSWNvbkNsaWNrKFwibGVmdFwiKTtcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge2l0ZW19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZS5uYW1lID09PSBcIlJpZ2h0QXJyb3dcIiAmJiByaWdodEljb25WaXNpYmxlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIG9uSWNvbkNsaWNrKFwicmlnaHRcIik7XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHtpdGVtfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUubmFtZSA9PT0gXCJDb250ZW50XCIpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPENvbnRlbnQgdHJhbnNsYXRlWD17dHJhbnNsYXRlWH0+e2l0ZW0ucHJvcHMuY2hpbGRyZW59PC9Db250ZW50PlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgOiBjaGlsZHJlbn1cclxuICAgIDwvZGl2PlxyXG4gICk7XHJcbn1cclxuU2xpZGVyTWVudS5MZWZ0QXJyb3cgPSBMZWZ0QXJyb3c7XHJcblNsaWRlck1lbnUuUmlnaHRBcnJvdyA9IFJpZ2h0QXJyb3c7XHJcblNsaWRlck1lbnUuQ29udGVudCA9IENvbnRlbnQ7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBTbGlkZXJNZW51O1xyXG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLEtBQUssSUFBSUMsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQzNELE9BQU9DLE1BQU0sTUFBTSxjQUFjO0FBQ2pDLFNBQVNDLE9BQU8sUUFBUSxhQUFhO0FBU3JDLFNBQVNDLFNBQVNBLENBQUNDLEtBQVUsRUFBRTtFQUM3QixvQkFBT1AsS0FBQSxDQUFBUSxhQUFBLGNBQU1ELEtBQUssQ0FBQ0UsUUFBYyxDQUFDO0FBQ3BDO0FBRUEsU0FBU0MsVUFBVUEsQ0FBQ0gsS0FBVSxF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
|
|
102
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImdldExlc3MiLCJzdHlsZXMiLCJMZWZ0QXJyb3ciLCJwcm9wcyIsImNyZWF0ZUVsZW1lbnQiLCJjaGlsZHJlbiIsIlJpZ2h0QXJyb3ciLCJDb250ZW50IiwiY2xhc3NOYW1lIiwiaWQiLCJzdHlsZSIsInRyYW5zZm9ybSIsImNvbmNhdCIsInRyYW5zbGF0ZVgiLCJTbGlkZXJNZW51IiwiZGF0YSIsInRyYW5zbGF0ZVN0ZXAiLCJpdGVtV2lkdGgiLCJsaXN0V2lkdGgiLCJzZXRMaXN0V2lkdGgiLCJzZXRUcmFuc2xhdGVYIiwibGVmdEljb25DbGljayIsInJpZ2h0SWNvbkNsaWNrIiwibGlzdEl0ZW1XaWR0aCIsImxlbmd0aCIsImxlZnRJY29uVmlzaWJsZSIsInJpZ2h0SWNvblZpc2libGUiLCJpc0xlZnRJY29uVmlzaWJsZSIsImlzUmlnaHRJY29uVmlzaWJsZSIsInJlZiIsInRvdGFsbGlzdCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJjbGllbnRXaWR0aCIsIm9uSWNvbkNsaWNrIiwiZGlyZWFjdGlvbiIsIm5ld1RyYW5zbGF0ZVgiLCJ0cmFuc2xhdGVEaXN0YW5jZSIsIm9uU3RhdGVDaGFuZ2UiLCJsZWZ0Q2xpY2siLCJyaWdodENsaWNrIiwiQXJyYXkiLCJpc0FycmF5IiwibWFwIiwiaXRlbSIsImluZGV4IiwidHlwZSIsIm9uQ2xpY2siLCJrZXkiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9iYXNlL3NsaWRlcm1lbnUvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFwiLi9pbmRleC5sZXNzXCI7XHJcbmltcG9ydCB7IGdldExlc3MgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuY29uc3Qgc3R5bGVzID0gbnVsbDtcclxuaW50ZXJmYWNlIFNsaWRlclByb3BzIHtcclxuICBkYXRhOiBBcnJheTxPYmplY3Q+O1xyXG4gIGl0ZW1XaWR0aDogbnVtYmVyO1xyXG4gIHRyYW5zbGF0ZVN0ZXA6IG51bWJlcjtcclxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcclxuICBvblN0YXRlQ2hhbmdlPzogRnVuY3Rpb247XHJcbn1cclxuXHJcbmNvbnN0IExlZnRBcnJvdyA9IChwcm9wczogYW55KSA9PiB7XHJcbiAgcmV0dXJuIDxkaXY+e3Byb3BzLmNoaWxkcmVufTwvZGl2PjtcclxufTtcclxuXHJcbmNvbnN0IFJpZ2h0QXJyb3cgPSAocHJvcHM6IGFueSkgPT4ge1xyXG4gIHJldHVybiA8ZGl2Pntwcm9wcy5jaGlsZHJlbn08L2Rpdj47XHJcbn07XHJcblxyXG5jb25zdCBDb250ZW50ID0gKHByb3BzOiBhbnkpID0+IHtcclxuICByZXR1cm4gKFxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1zbGlkZXJtZW51LXRhYi1uYXZcIil9XHJcbiAgICAgIGlkPVwibnNjLXNsaWRlcm1lbnUtdG90YWwtbGlzdFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1zbGlkZXJtZW51LW5hdi1saXN0XCIpfVxyXG4gICAgICAgIHN0eWxlPXt7IHRyYW5zZm9ybTogYHRyYW5zbGF0ZVgoJHtwcm9wcy50cmFuc2xhdGVYfXB4KWAgfX1cclxuICAgICAgPlxyXG4gICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59O1xyXG5cclxuZnVuY3Rpb24gU2xpZGVyTWVudShwcm9wczogU2xpZGVyUHJvcHMpIHtcclxuICBjb25zdCB7IGNoaWxkcmVuLCBkYXRhLCB0cmFuc2xhdGVTdGVwID0gMTAwLCBpdGVtV2lkdGggPSA0MCB9ID0gcHJvcHM7XHJcbiAgY29uc3QgW2xpc3RXaWR0aCwgc2V0TGlzdFdpZHRoXSA9IHVzZVN0YXRlKDApO1xyXG4gIGNvbnN0IFt0cmFuc2xhdGVYLCBzZXRUcmFuc2xhdGVYXSA9IHVzZVN0YXRlKDApO1xyXG4gIGNvbnN0IFtsZWZ0SWNvbkNsaWNrLCByaWdodEljb25DbGlja10gPSB1c2VNZW1vKCgpID0+IHtcclxuICAgIGNvbnN0IGxpc3RJdGVtV2lkdGggPSBkYXRhLmxlbmd0aCAqIGl0ZW1XaWR0aDtcclxuICAgIGNvbnN0IGxlZnRJY29uQ2xpY2sgPSB0cmFuc2xhdGVYIDwgMDtcclxuICAgIGNvbnN0IHJpZ2h0SWNvbkNsaWNrID1cclxuICAgICAgdHJhbnNsYXRlWCA9PSAwXHJcbiAgICAgICAgPyBsaXN0SXRlbVdpZHRoID4gbGlzdFdpZHRoXHJcbiAgICAgICAgOiBsaXN0SXRlbVdpZHRoICsgdHJhbnNsYXRlWCA+IGxpc3RXaWR0aDtcclxuICAgIHJldHVybiBbbGVmdEljb25DbGljaywgcmlnaHRJY29uQ2xpY2tdO1xyXG4gIH0sIFtkYXRhLmxlbmd0aCwgdHJhbnNsYXRlWCwgbGlzdFdpZHRoXSk7XHJcbiAgY29uc3QgW2xlZnRJY29uVmlzaWJsZSwgcmlnaHRJY29uVmlzaWJsZV0gPSB1c2VNZW1vKCgpID0+IHtcclxuICAgIGNvbnN0IGxpc3RJdGVtV2lkdGggPSBkYXRhLmxlbmd0aCAqIGl0ZW1XaWR0aDtcclxuICAgIGNvbnN0IGlzTGVmdEljb25WaXNpYmxlID0gbGlzdEl0ZW1XaWR0aCA+IGxpc3RXaWR0aDtcclxuICAgIGNvbnN0IGlzUmlnaHRJY29uVmlzaWJsZSA9IGxpc3RJdGVtV2lkdGggPiBsaXN0V2lkdGg7XHJcbiAgICByZXR1cm4gW2lzTGVmdEljb25WaXNpYmxlLCBpc1JpZ2h0SWNvblZpc2libGVdO1xyXG4gIH0sIFtkYXRhLCB0cmFuc2xhdGVYLCBsaXN0V2lkdGhdKTtcclxuICBjb25zdCByZWYgPSB1c2VSZWYobnVsbCk7XHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IHRvdGFsbGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxyXG4gICAgICBcIm5zYy1zbGlkZXJtZW51LXRvdGFsLWxpc3RcIlxyXG4gICAgKSBhcyBIVE1MRWxlbWVudDtcclxuICAgIHNldExpc3RXaWR0aCh0b3RhbGxpc3QgPyB0b3RhbGxpc3Q/LmNsaWVudFdpZHRoIDogMCk7XHJcbiAgfSwgW2RhdGFdKTtcclxuXHJcbiAgY29uc3Qgb25JY29uQ2xpY2sgPSAoZGlyZWFjdGlvbjogc3RyaW5nKSA9PiB7XHJcbiAgICBsZXQgbmV3VHJhbnNsYXRlWDogbnVtYmVyID0gdHJhbnNsYXRlWDtcclxuICAgIGNvbnN0IHRyYW5zbGF0ZURpc3RhbmNlOiBudW1iZXIgPVxyXG4gICAgICB0cmFuc2xhdGVTdGVwICogKGRpcmVhY3Rpb24gPT09IFwibGVmdFwiID8gMSA6IC0xKTtcclxuICAgIC8vIOeCueWHu+eureWktFxyXG4gICAgaWYgKHRyYW5zbGF0ZURpc3RhbmNlID4gMCkge1xyXG4gICAgICBpZiAoIWxlZnRJY29uQ2xpY2spIHJldHVybjtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgbmV3VHJhbnNsYXRlWCArPSB0cmFuc2xhdGVEaXN0YW5jZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0cmFuc2xhdGVEaXN0YW5jZSA8IDApIHtcclxuICAgICAgaWYgKCFyaWdodEljb25DbGljaykgcmV0dXJuO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBuZXdUcmFuc2xhdGVYICs9IHRyYW5zbGF0ZURpc3RhbmNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBzZXRUcmFuc2xhdGVYKG5ld1RyYW5zbGF0ZVgpO1xyXG4gIH07XHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IHsgb25TdGF0ZUNoYW5nZSB9ID0gcHJvcHM7XHJcbiAgICBvblN0YXRlQ2hhbmdlICYmXHJcbiAgICAgIG9uU3RhdGVDaGFuZ2UoeyBsZWZ0Q2xpY2s6IGxlZnRJY29uQ2xpY2ssIHJpZ2h0Q2xpY2s6IHJpZ2h0SWNvbkNsaWNrIH0pO1xyXG4gIH0sIFtyaWdodEljb25DbGljaywgbGVmdEljb25DbGlja10pO1xyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXNsaWRlcm1lbnUtdG90YWwtbmF2XCIpfT5cclxuICAgICAge2NoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pICYmIGNoaWxkcmVuLmxlbmd0aCA+IDBcclxuICAgICAgICA/IGNoaWxkcmVuLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gTGVmdEFycm93ICYmIGxlZnRJY29uVmlzaWJsZSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBvbkljb25DbGljayhcImxlZnRcIik7XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHtpdGVtfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT09IFJpZ2h0QXJyb3cgJiYgcmlnaHRJY29uVmlzaWJsZSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBvbkljb25DbGljayhcInJpZ2h0XCIpO1xyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7aXRlbX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09PSBDb250ZW50KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxDb250ZW50IHRyYW5zbGF0ZVg9e3RyYW5zbGF0ZVh9IGRhdGE9e2RhdGF9IGtleT17aW5kZXh9PlxyXG4gICAgICAgICAgICAgICAgICB7aXRlbS5wcm9wcy5jaGlsZHJlbn1cclxuICAgICAgICAgICAgICAgIDwvQ29udGVudD5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIDogY2hpbGRyZW59XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59XHJcblNsaWRlck1lbnUuTGVmdEFycm93ID0gTGVmdEFycm93O1xyXG5TbGlkZXJNZW51LlJpZ2h0QXJyb3cgPSBSaWdodEFycm93O1xyXG5TbGlkZXJNZW51LkNvbnRlbnQgPSBDb250ZW50O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgU2xpZGVyTWVudTtcclxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxLQUFLLElBQUlDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQ25FLE9BQU8sY0FBYztBQUNyQixTQUFTQyxPQUFPLFFBQVEsYUFBYTtBQUNyQyxNQUFNQyxNQUFNLEdBQUcsSUFBSTtBQVNuQixNQUFNQyxTQUFTLEdBQUlDLEtBQVUsSUFBSztFQUNoQyxvQkFBT1IsS0FBQSxDQUFBUyxhQUFBLGNBQU1ELEtBQUssQ0FBQ0UsUUFBYyxDQUFDO0FBQ3BDLENBQUM7QUFFRCxNQUFNQyxVQUFVLEdBQUlILEtBQVUsSUFBSztFQUNqQyxvQkFBT1IsS0FBQSxDQUFB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","useEffect","useMemo","
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","useEffect","useMemo","useRef","useState","getLess","styles","LeftArrow","props","createElement","children","RightArrow","Content","className","id","style","transform","concat","translateX","SliderMenu","data","translateStep","itemWidth","listWidth","setListWidth","setTranslateX","leftIconClick","rightIconClick","listItemWidth","length","leftIconVisible","rightIconVisible","isLeftIconVisible","isRightIconVisible","ref","totallist","document","getElementById","clientWidth","onIconClick","direaction","newTranslateX","translateDistance","onStateChange","leftClick","rightClick","Array","isArray","map","item","index","type","onClick","key"],"sources":["../../../src/components/base/slidermenu/index.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from \"react\";\r\nimport \"./index.less\";\r\nimport { getLess } from \"../../utils\";\r\nconst styles = null;\r\ninterface SliderProps {\r\n data: Array<Object>;\r\n itemWidth: number;\r\n translateStep: number;\r\n children?: React.ReactNode;\r\n onStateChange?: Function;\r\n}\r\n\r\nconst LeftArrow = (props: any) => {\r\n return <div>{props.children}</div>;\r\n};\r\n\r\nconst RightArrow = (props: any) => {\r\n return <div>{props.children}</div>;\r\n};\r\n\r\nconst Content = (props: any) => {\r\n return (\r\n <div\r\n className={getLess(styles, \"nsc-slidermenu-tab-nav\")}\r\n id=\"nsc-slidermenu-total-list\"\r\n >\r\n <div\r\n className={getLess(styles, \"nsc-slidermenu-nav-list\")}\r\n style={{ transform: `translateX(${props.translateX}px)` }}\r\n >\r\n {props.children}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nfunction SliderMenu(props: SliderProps) {\r\n const { children, data, translateStep = 100, itemWidth = 40 } = props;\r\n const [listWidth, setListWidth] = useState(0);\r\n const [translateX, setTranslateX] = useState(0);\r\n const [leftIconClick, rightIconClick] = useMemo(() => {\r\n const listItemWidth = data.length * itemWidth;\r\n const leftIconClick = translateX < 0;\r\n const rightIconClick =\r\n translateX == 0\r\n ? listItemWidth > listWidth\r\n : listItemWidth + translateX > listWidth;\r\n return [leftIconClick, rightIconClick];\r\n }, [data.length, translateX, listWidth]);\r\n const [leftIconVisible, rightIconVisible] = useMemo(() => {\r\n const listItemWidth = data.length * itemWidth;\r\n const isLeftIconVisible = listItemWidth > listWidth;\r\n const isRightIconVisible = listItemWidth > listWidth;\r\n return [isLeftIconVisible, isRightIconVisible];\r\n }, [data, translateX, listWidth]);\r\n const ref = useRef(null);\r\n useEffect(() => {\r\n const totallist = document.getElementById(\r\n \"nsc-slidermenu-total-list\"\r\n ) as HTMLElement;\r\n setListWidth(totallist ? totallist?.clientWidth : 0);\r\n }, [data]);\r\n\r\n const onIconClick = (direaction: string) => {\r\n let newTranslateX: number = translateX;\r\n const translateDistance: number =\r\n translateStep * (direaction === \"left\" ? 1 : -1);\r\n // 点击箭头\r\n if (translateDistance > 0) {\r\n if (!leftIconClick) return;\r\n else {\r\n newTranslateX += translateDistance;\r\n }\r\n } else if (translateDistance < 0) {\r\n if (!rightIconClick) return;\r\n else {\r\n newTranslateX += translateDistance;\r\n }\r\n }\r\n setTranslateX(newTranslateX);\r\n };\r\n useEffect(() => {\r\n const { onStateChange } = props;\r\n onStateChange &&\r\n onStateChange({ leftClick: leftIconClick, rightClick: rightIconClick });\r\n }, [rightIconClick, leftIconClick]);\r\n return (\r\n <div className={getLess(styles, \"nsc-slidermenu-total-nav\")}>\r\n {children && Array.isArray(children) && children.length > 0\r\n ? children.map((item, index) => {\r\n if (item.type === LeftArrow && leftIconVisible) {\r\n return (\r\n <div\r\n onClick={() => {\r\n onIconClick(\"left\");\r\n }}\r\n key={index}\r\n >\r\n {item}\r\n </div>\r\n );\r\n } else if (item.type === RightArrow && rightIconVisible) {\r\n return (\r\n <div\r\n onClick={() => {\r\n onIconClick(\"right\");\r\n }}\r\n key={index}\r\n >\r\n {item}\r\n </div>\r\n );\r\n } else if (item.type === Content) {\r\n return (\r\n <Content translateX={translateX} data={data} key={index}>\r\n {item.props.children}\r\n </Content>\r\n );\r\n }\r\n })\r\n : children}\r\n </div>\r\n );\r\n}\r\nSliderMenu.LeftArrow = LeftArrow;\r\nSliderMenu.RightArrow = RightArrow;\r\nSliderMenu.Content = Content;\r\n\r\nexport default SliderMenu;\r\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AACnE,OAAO,cAAc;AACrB,SAASC,OAAO,QAAQ,aAAa;AACrC,MAAMC,MAAM,GAAG,IAAI;AASnB,MAAMC,SAAS,GAAIC,KAAU,IAAK;EAChC,oBAAOR,KAAA,CAAAS,aAAA,cAAMD,KAAK,CAACE,QAAc,CAAC;AACpC,CAAC;AAED,MAAMC,UAAU,GAAIH,KAAU,IAAK;EACjC,oBAAOR,KAAA,CAAAS,aAAA,cAAMD,KAAK,CAACE,QAAc,CAAC;AACpC,CAAC;AAED,MAAME,OAAO,GAAIJ,KAAU,IAAK;EAC9B,oBACER,KAAA,CAAAS,aAAA;IACEI,SAAS,EAAER,OAAO,CAACC,MAAM,EAAE,wBAAwB,CAAE;IACrDQ,EAAE,EAAC;EAA2B,gBAE9Bd,KAAA,CAAAS,aAAA;IACEI,SAAS,EAAER,OAAO,CAACC,MAAM,EAAE,yBAAyB,CAAE;IACtDS,KAAK,EAAE;MAAEC,SAAS,gBAAAC,MAAA,CAAgBT,KAAK,CAACU,UAAU;IAAM;EAAE,GAEzDV,KAAK,CAACE,QACJ,CACF,CAAC;AAEV,CAAC;AAED,SAASS,UAAUA,CAACX,KAAkB,EAAE;EACtC,MAAM;IAAEE,QAAQ;IAAEU,IAAI;IAAEC,aAAa,GAAG,GAAG;IAAEC,SAAS,GAAG;EAAG,CAAC,GAAGd,KAAK;EACrE,MAAM,CAACe,SAAS,EAAEC,YAAY,CAAC,GAAGpB,QAAQ,CAAC,CAAC,CAAC;EAC7C,MAAM,CAACc,UAAU,EAAEO,aAAa,CAAC,GAAGrB,QAAQ,CAAC,CAAC,CAAC;EAC/C,MAAM,CAACsB,aAAa,EAAEC,cAAc,CAAC,GAAGzB,OAAO,CAAC,MAAM;IACpD,MAAM0B,aAAa,GAAGR,IAAI,CAACS,MAAM,GAAGP,SAAS;IAC7C,MAAMI,aAAa,GAAGR,UAAU,GAAG,CAAC;IACpC,MAAMS,cAAc,GAClBT,UAAU,IAAI,CAAC,GACXU,aAAa,GAAGL,SAAS,GACzBK,aAAa,GAAGV,UAAU,GAAGK,SAAS;IAC5C,OAAO,CAACG,aAAa,EAAEC,cAAc,CAAC;EACxC,CAAC,EAAE,CAACP,IAAI,CAACS,MAAM,EAAEX,UAAU,EAAEK,SAAS,CAAC,CAAC;EACxC,MAAM,CAACO,eAAe,EAAEC,gBAAgB,CAAC,GAAG7B,OAAO,CAAC,MAAM;IACxD,MAAM0B,aAAa,GAAGR,IAAI,CAACS,MAAM,GAAGP,SAAS;IAC7C,MAAMU,iBAAiB,GAAGJ,aAAa,GAAGL,SAAS;IACnD,MAAMU,kBAAkB,GAAGL,aAAa,GAAGL,SAAS;IACpD,OAAO,CAACS,iBAAiB,EAAEC,kBAAkB,CAAC;EAChD,CAAC,EAAE,CAACb,IAAI,EAAEF,UAAU,EAAEK,SAAS,CAAC,CAAC;EACjC,MAAMW,GAAG,GAAG/B,MAAM,CAAC,IAAI,CAAC;EACxBF,SAAS,CAAC,MAAM;IACd,MAAMkC,SAAS,GAAGC,QAAQ,CAACC,cAAc,CACvC,2BACF,CAAgB;IAChBb,YAAY,CAACW,SAAS,GAAGA,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEG,WAAW,GAAG,CAAC,CAAC;EACtD,CAAC,EAAE,CAAClB,IAAI,CAAC,CAAC;EAEV,MAAMmB,WAAW,GAAIC,UAAkB,IAAK;IAC1C,IAAIC,aAAqB,GAAGvB,UAAU;IACtC,MAAMwB,iBAAyB,GAC7BrB,aAAa,IAAImB,UAAU,KAAK,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAClD;IACA,IAAIE,iBAAiB,GAAG,CAAC,EAAE;MACzB,IAAI,CAAChB,aAAa,EAAE,OAAO,KACtB;QACHe,aAAa,IAAIC,iBAAiB;MACpC;IACF,CAAC,MAAM,IAAIA,iBAAiB,GAAG,CAAC,EAAE;MAChC,IAAI,CAACf,cAAc,EAAE,OAAO,KACvB;QACHc,aAAa,IAAIC,iBAAiB;MACpC;IACF;IACAjB,aAAa,CAACgB,aAAa,CAAC;EAC9B,CAAC;EACDxC,SAAS,CAAC,MAAM;IACd,MAAM;MAAE0C;IAAc,CAAC,GAAGnC,KAAK;IAC/BmC,aAAa,IACXA,aAAa,CAAC;MAAEC,SAAS,EAAElB,aAAa;MAAEmB,UAAU,EAAElB;IAAe,CAAC,CAAC;EAC3E,CAAC,EAAE,CAACA,cAAc,EAAED,aAAa,CAAC,CAAC;EACnC,oBACE1B,KAAA,CAAAS,aAAA;IAAKI,SAAS,EAAER,OAAO,CAACC,MAAM,EAAE,0BAA0B;EAAE,GACzDI,QAAQ,IAAIoC,KAAK,CAACC,OAAO,CAACrC,QAAQ,CAAC,IAAIA,QAAQ,CAACmB,MAAM,GAAG,CAAC,GACvDnB,QAAQ,CAACsC,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,KAAK;IAC5B,IAAID,IAAI,CAACE,IAAI,KAAK5C,SAAS,IAAIuB,eAAe,EAAE;MAC9C,oBACE9B,KAAA,CAAAS,aAAA;QACE2C,OAAO,EAAEA,CAAA,KAAM;UACbb,WAAW,CAAC,MAAM,CAAC;QACrB,CAAE;QACFc,GAAG,EAAEH;MAAM,GAEVD,IACE,CAAC;IAEV,CAAC,MAAM,IAAIA,IAAI,CAACE,IAAI,KAAKxC,UAAU,IAAIoB,gBAAgB,EAAE;MACvD,oBACE/B,KAAA,CAAAS,aAAA;QACE2C,OAAO,EAAEA,CAAA,KAAM;UACbb,WAAW,CAAC,OAAO,CAAC;QACtB,CAAE;QACFc,GAAG,EAAEH;MAAM,GAEVD,IACE,CAAC;IAEV,CAAC,MAAM,IAAIA,IAAI,CAACE,IAAI,KAAKvC,OAAO,EAAE;MAChC,oBACEZ,KAAA,CAAAS,aAAA,CAACG,OAAO;QAACM,UAAU,EAAEA,UAAW;QAACE,IAAI,EAAEA,IAAK;QAACiC,GAAG,EAAEH;MAAM,GACrDD,IAAI,CAACzC,KAAK,CAACE,QACL,CAAC;IAEd;EACF,CAAC,CAAC,GACFA,QACD,CAAC;AAEV;AACAS,UAAU,CAACZ,SAAS,GAAGA,SAAS;AAChCY,UAAU,CAACR,UAAU,GAAGA,UAAU;AAClCQ,UAAU,CAACP,OAAO,GAAGA,OAAO;AAE5B,eAAeO,UAAU"}
|
|
@@ -726,21 +726,21 @@ class BasePage extends PureComponent {
|
|
|
726
726
|
}
|
|
727
727
|
this.showForm(record.attribute || record, "detail");
|
|
728
728
|
},
|
|
729
|
-
icon: /*#__PURE__*/React.createElement(EyeOutlined, null),
|
|
729
|
+
icon: showIcon ? /*#__PURE__*/React.createElement(EyeOutlined, null) : null,
|
|
730
730
|
type: "link"
|
|
731
731
|
}, "\u67E5\u770B"));
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
}
|
|
732
|
+
}
|
|
733
|
+
if (buttons.indexOf("editor") > -1) {
|
|
734
|
+
columnButtons.push( /*#__PURE__*/React.createElement(Button, {
|
|
735
|
+
onClick: record => {
|
|
736
|
+
if (onShowForm) {
|
|
737
|
+
onShowForm(record.attribute || record, "editor");
|
|
738
|
+
return;
|
|
739
|
+
}
|
|
740
|
+
this.showForm(record.attribute || record, "editor");
|
|
741
|
+
},
|
|
742
|
+
icon: showIcon ? /*#__PURE__*/React.createElement(EditOutlined, null) : null
|
|
743
|
+
}, "\u7F16\u8F91"));
|
|
744
744
|
}
|
|
745
745
|
if (buttons.indexOf("add") > -1) {
|
|
746
746
|
selfButtons.push( /*#__PURE__*/React.createElement(Button, {
|
|
@@ -973,4 +973,4 @@ class BasePage extends PureComponent {
|
|
|
973
973
|
}
|
|
974
974
|
}
|
|
975
975
|
export default BasePage;
|
|
976
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsInV0aWxzIiwiRG93bk91dGxpbmVkIiwiRXllT3V0bGluZWQiLCJFZGl0T3V0bGluZWQiLCJSaWdodE91dGxpbmVkIiwiUGx1c091dGxpbmVkIiwiRWxsaXBzaXNPdXRsaW5lZCIsIkRlbGV0ZU91dGxpbmVkIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiSGVhZGVyU2VhcmNoIiwic3R5bGVzIiwiQmFzZVBhZ2UiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX3R5cGUiLCJfc2l6ZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsImNoZWNrZWRUcmVlS2V5cyIsIm5hbWUiLCJ1c2VyVHlwZSIsImFjY291bnQiLCJzdGF0ZSIsInZhbHVlIiwiZGVwdElkIiwib25TZWFyY2giLCJzZWxlY3RlZCIsInJlcyIsImtleSIsImtleXMiLCJsZW5ndGgiLCJzdG9yZVByZWZpeCIsInR5cGUiLCJjb250ZW50Iiwic2l6ZSIsInNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93RGF0YXMiLCJ0cmVlU2VsZWN0ZWRLZXkiLCJleHBhbmQiLCJmb3JtVHlwZSIsInRhYmxlU2l6ZSIsInRyZWVTZWFyY2hQcmFtcyIsInBvcG9wZW5zIiwibW9yZU9wZW4iLCJlbGVtZW50SGVpZ2h0IiwiY29tcG9uZW50RGlkTW91bnQiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQiLCJpbml0RGF0YSIsInBhZ2VSZWYiLCJjdXJyZW50IiwiY2xpZW50SGVpZ2h0Iiwic2V0U3RhdGUiLCJjb21wb25lbnREaWRVcGRhdGUiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQyIiwic2V0U2VhcmNoUGFyYW1zIiwicGFyYW1zIiwiY2FsbEJhY2siLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUiLCJzZWFyY2hSZWYiLCJkb1N1Ym1pdCIsImRhdGEiLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUiLCJsYWJlbCIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsImVkaXRvclJlZiIsInNob3dGb3JtIiwiX3RoaXMkZWRpdG9yUmVmIiwiZWRpdG9yZmxhZyIsIm5ld1ZhbHVlIiwiX29iamVjdFNwcmVhZCIsInNob3ciLCJoaWRlRm9ybSIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTIiLCJzZXRMb2FkaW5nIiwibG9hZGluZyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTMiLCJzZXRFZGl0Rm9ybVZhbHVlcyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTQiLCJzZXRGaWVsZHNWYWx1ZSIsImdldEVkaXRGb3JtVmFsdWVzIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlNSIsImdldEZpZWxkc1ZhbHVlIiwib25EZWxldGUiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4iLCJkZWxldGVVcmwiLCJkZWxldGVQYXJhbXMiLCJkZWxldGVQb3NpdGlvbiIsIl90aGlzIiwidGFibGVSZWYiLCJnZXRTZWxlY3RlZFJvd0tleXMiLCJ3YXJuaW5nIiwiY29uZmlybSIsIm9uT2siLCJFcnJvciIsImRlZmF1bHRQYXJhbXMiLCJtZXRob2QiLCJhdXRvUHJlZml4IiwiaWRzIiwiam9pbiIsImlkIiwicmVxdWVzdFBhcmFtcyIsInRoZW4iLCJjb2RlIiwiX3RoaXMkc2VhcmNoUmVmIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMiIsInN1Y2Nlc3MiLCJnZXRTZWFyY2hWYWx1ZXMiLCJvbkNhbGxCYWNrcyIsIm9uRGVsZXRlQ2FsbEJhY2siLCJ0YWJsZUxvYWQiLCJlcnJvciIsImNhdGNoIiwiY29uc29sZSIsImxvZyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjIiLCJyZXF1ZXN0Q29uZmlnIiwic3RvcmUiLCJsb2FkIiwib25TZWFyY2hDYWxsQmFjayIsImNhbGxiYWNrIiwidGFibGVSZWxvYWQiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4zIiwiYXV0b0xvYWQiLCJyZWxvYWQiLCJfcmVzJGRhdGEiLCJyZWNvcmRzIiwiY3VycmVudFBhZ2UiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW40IiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNSIsImdldFNlbGVjdGVkUm93RGF0YXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW42Iiwic2V0U2VsZWN0ZWRSb3dLZXlzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNyIsInNldFNlbGVjdGVkUm93RGF0YXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW44IiwicmVzZXRTZWxlY3RlZFJvd0tleXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW45IiwiX3RoaXMkc2VhcmNoUmVmMiIsImZyb21WYWx1ZSIsImdldENoaWxkcmVuRGF0YSIsInRhYmxlUHJvcHMiLCJyb3dLZXkiLCJyZXNLZXkiLCJjaGlsZE5vZGVzIiwiY2hpbGRyZW4iLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJyZW5kZXJUb29sQnV0dG9ucyIsInRvb2xidXR0b25zIiwidG9vbGJhckZsYWciLCJmbGFnIiwic2hvd1NlYXJjaCIsIl9pdGVtJHByb3BzIiwicGFnZVR5cGUiLCJvbkNsaWNrIiwiaWNvbiIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJfZXh0ZW5kcyIsInN0eWxlIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0IiwidGl0bGUiLCJwbGFjZW1lbnQiLCJvcGVuIiwib25PcGVuQ2hhbmdlIiwicmVuZGVyQ2xvdW1uQnV0dG9uIiwiY29sdW1uQnV0dG9ucyIsInJlY29yZCIsImFjdGlvblByb3BzIiwiYmFzZUFjdGlvbkNvbHVtbiIsIm5ld0J1dHRvbnMiLCJzaG93SWNvbiIsIl9pdGVtJHByb3BzMiIsInJlY29yZFNob3ciLCJfZXhjbHVkZWQyIiwiZXZhbCIsInB1c2giLCJudW1iZXIiLCJidXR0b25OdW1iZXIiLCJfaXRlbSRwcm9wczMiLCJfZXhjbHVkZWQzIiwiTnVtYmVyIiwiX2l0ZW0kcHJvcHM0IiwiX2V4Y2x1ZGVkNCIsInRyaWdnZXIiLCJ0cmVlU2VsZWN0Iiwic2VsZWN0ZWRLZXlzIiwib2JqIiwiX3RoaXMkc2VhcmNoUmVmMyIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzMiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM0Iiwia2V5d29yZCIsInNlYXJjaEtleSIsInNlYXJjaEZpZWxkIiwicGFyYW50U2VsZWN0IiwidHJlZVByb3BzIiwic2VsZWN0ZWROb2RlcyIsImRhdGFyZWYiLCJhdHRyaWJ1dGUiLCJpc0xlYWYiLCJvblRyZWVTZWxlY3QiLCJ0cmVlU2VsZWN0Q2FsbEJhY2siLCJyZXNldFNlYXJjaCIsIl90aGlzJHNlYXJjaFJlZiRjdXJyZTIiLCJyZXNldEZpZWxkcyIsImdldFRleHQiLCJ0ZXh0IiwiX3Byb3BzJGRhdGEiLCJuZXdUZXh0IiwiaSIsInNldFRhYmxlRGF0YSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjEwIiwic2V0RGF0YSIsInNldFRyZWVEYXRhIiwiX3RoaXMkdHJlZVJlZiRjdXJyZW50IiwidHJlZVJlZiIsInJlbmRlciIsIl90YWJsZVByb3BzJHRvb2xiYXIiLCJfdGFibGVQcm9wcyR0b29sYmFyMiIsImNvbHVtbnMiLCJzdWJtaXRVcmwiLCJmb3JtUHJvcHMiLCJzaG93TGVmdCIsInN1Ym1pdFBhcmFtcyIsInNob3dUb29sQnV0dG9uIiwiYnV0dG9ucyIsImVkaXRvckZvcm0iLCJvblNob3dGb3JtIiwiZm9ybUNoYW5nZVZhbGlkIiwidG9vbEJ1dHRvblBvc2l0aW9uIiwiZmlsdGVyQ29sdW1uIiwiYWN0aW9uQ29sdW1uIiwic2hvd1Jvd1NlbGVjdGlvbiIsImNvbHVtbk9yZGVyIiwiZXhwYW5kYWJsZSIsInRhYmxlVGl0bGUiLCJvdGhlcnRhYmxlUGFyYW1zIiwiX2V4Y2x1ZGVkNSIsInRyZWVTdG9yZSIsInRyZWVTZWFyY2giLCJ0aXRsZUFsaWFzIiwidHJlZVRpdGxlIiwib3RoZXJ0cmVlUGFyYW1zIiwiX2V4Y2x1ZGVkNiIsInRhYmxlUGFyYW1zIiwidGFibGVDb2x1bW4iLCJzZWFyY2hGb3JtcyIsImVkaXRvckZvcm1zIiwiZGVmYXVsdFZhbHVlIiwiX3RlbXAkc2VhcmNoIiwiX3RlbXAkcHJvcHMiLCJfdGVtcCRwcm9wczIiLCJfdGVtcFByb3AkZGF0YSIsIl90ZW1wIiwidGVtcCIsIndpZHRoIiwic2VhcmNoIiwiX3RlbXAkc2VhcmNoMiIsIl90ZW1wJHNlYXJjaDMiLCJfdGVtcCRzZWFyY2g0IiwiZmllbGQiLCJkYXRhSW5kZXgiLCJsYWJlbENvbCIsIndyYXBwZXJDb2wiLCJydWxlcyIsInNlYXJjaFJ1bGVzIiwiZWRpdG9yIiwic3BhbiIsImRpY3ROYW1lIiwiX3RlbXAkcHJvcHMzIiwiY29sdW1uU2VhcmNoIiwiZmlsdGVyUHJvcHMiLCJ0ZW1wUHJvcCIsImVsbGlwc2lzIiwic2hvd1RpdGxlIiwiY29sdW1uU2hvdyIsInNlbGZCdXR0b25zIiwiaW5kZXhPZiIsImJpbmQiLCJkYW5nZXIiLCJBcnJheSIsImlzQXJyYXkiLCJjaGlsZCIsIl9jaGlsZCRwcm9wcyIsIl9jaGlsZCRwcm9wczIiLCJfY2hpbGQkcHJvcHMzIiwiX2l0ZW0kcHJvcHM1IiwiX2l0ZW0kcHJvcHM2IiwiX2l0ZW0kcHJvcHM3IiwiYWxpZ24iLCJ0ZXh0QWxpZ24iLCJmaXhlZCIsInJlYWNvcmQiLCJGcmFnbWVudCIsInNlYXJjaEZsYWciLCJ0YWJsZVRvb2wiLCJ0b29sRmxhZyIsInRvb2xiYXIiLCJ0b29scyIsInBhZ2VIZWlnaHQiLCJ0YWJsZUhlYWRlckhlaWdodCIsImhlYWRlckhlaWdodCIsInRvb2xIZWlnaHQiLCJwYWRkaW5nSGVpZ2h0IiwidGFibGVDb250ZW50SGVpZ2h0IiwidGFibGVIZWlnaHQiLCJ0YWJsZVNyb2xsSGVpZ2h0IiwicGFnaW5hdGlvbiIsInNjcm9sbCIsIngiLCJ5IiwicmVmIiwicGFnZVRpdGxlIiwiZGlzcGxheSIsImNoZWNrYWJsZSIsInNlYXJjaGFibGUiLCJvblNlbGVjdCIsIm9uUmVzZXQiLCJzZWFyY2hGb3JtUHJvcHMiLCJoZWlnaHQiLCJleHBhbmRJY29uIiwiX3JlZiIsIl9yZWNvcmQkY2hpbGROb2RlcyIsIl9yZWNvcmQkY2hpbGROb2RlczIiLCJleHBhbmRlZCIsIm9uRXhwYW5kIiwiZSIsIm9uQ2hhbmdlIiwib25Ub29sQ2xpY2siLCJvblJlZnJlc2giLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM1IiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNiIsIm9uU3VtYml0Q2FsbEJhY2siLCJvblN1Ym1pdCIsIm9uSGlkZUZvcm0iLCJvbkZvcm1DaGFuZ2UiLCJjaGFuZ2VWYWxpZCIsIm90aGVyUHJvcHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wYWdlL0Jhc2VQYWdlL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBUYWJsZSBmcm9tIFwiLi4vLi4vYmFzZS90YWJsZVwiO1xyXG5pbXBvcnQgVHJlZSBmcm9tIFwiLi4vLi4vYmFzZS90cmVlXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBNb2RhbCBmcm9tIFwiLi4vLi4vYmFzZS9tb2RhbFwiO1xyXG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwiLi4vLi4vYmFzZS9wb3BvdmVyXCI7XHJcbmltcG9ydCBtZXNzYWdlIGZyb20gXCIuLi8uLi9iYXNlL21lc3NhZ2VcIjtcclxuaW1wb3J0IEVkaXRvckZvcm0gZnJvbSBcIi4vRm9ybVwiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFBhZ2VTdG9yZSwgU3RvcmVQcm9wcyB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICBEb3duT3V0bGluZWQsXHJcbiAgRXllT3V0bGluZWQsXHJcbiAgRWRpdE91dGxpbmVkLFxyXG4gIFJpZ2h0T3V0bGluZWQsXHJcbiAgUGx1c091dGxpbmVkLFxyXG4gIEVsbGlwc2lzT3V0bGluZWQsXHJcbiAgRGVsZXRlT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IHJlcXVlc3QgZnJvbSBcIm5zYy1yZXF1ZXN0XCI7XHJcbmltcG9ydCBvbWl0IGZyb20gXCJvbWl0LmpzXCI7XHJcbmltcG9ydCBjb25maWcgZnJvbSBcIi4uLy4uL2NvbmZpZ1wiO1xyXG5pbXBvcnQgeyBnZXRTdG9yYWdlLCBweDJ2dyB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgeyBJRm9ybVByb3BzIH0gZnJvbSBcIi4uLy4uL2Jhc2UvZm9ybS9Gb3JtXCI7XHJcbmltcG9ydCBIZWFkZXJTZWFyY2ggZnJvbSBcIi4uL0hlYWRlclNlYXJjaFwiO1xyXG5pbXBvcnQgeyBQYWdpbmF0aW9uUHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgeyBudW1iZXIgfSBmcm9tIFwiZWNoYXJ0c1wiO1xyXG5pbnRlcmZhY2UgVGFibGVQcm9wcyB7XHJcbiAgYWN0aW9uQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmk43kvZzliJdcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgZmlsdGVyQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrov4fmu6TmjInpkq5cclxuICBzaG93Um93U2VsZWN0aW9uPzogYm9vbGVhbjsgLy/mmK/lkKbooajmoLzli77pgInliJdcclxuICBwYWdpbmF0aW9uPzogYm9vbGVhbiB8IFBhZ2luYXRpb25Qcm9wczsgLy/mmK/lkKbmmL7npLrliIbpobVcclxuICBjb2x1bW5PcmRlcj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S66KGo5qC85bqP5YiXXHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmNvbnN0IHN0eWxlcyA9IG51bGw7XHJcbmludGVyZmFjZSBUcmVlUHJvcHMge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBzaG93U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmkJzntKLmoYZcclxuICBzZWFyY2hLZXk/OiBzdHJpbmc7IC8v5pCc57SidmFsdWXlr7nlupTnmoRrZXlcclxuICBzZWFyY2hGaWVsZD86IHN0cmluZzsgLy/mn6Xor6Llr7nlupTnmoRrZXlcclxuICB0aXRsZUFsaWFzPzogc3RyaW5nOyAvL+agkXRpdGxl5a+55bqU55qEa2V5LOm7mOiupHRpdGxlXHJcbiAgbm9kZVBvcnBzPzogb2JqZWN0O1xyXG4gIHBhcmFudFNlbGVjdD86IGJvb2xlYW47XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmludGVyZmFjZSBGb3JtUHJvcHMgZXh0ZW5kcyBJRm9ybVByb3BzIHt9XHJcbmludGVyZmFjZSBOU0NCYXNlQmFnZVByb3BzIHtcclxuICBzaG93U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrlpLTpg6jmkJzntKLmoI9cclxuICB0YWJsZVByb3BzPzogVGFibGVQcm9wczsgLy/ooajmoLzlj4LmlbBcclxuICB0cmVlUHJvcHM/OiBUcmVlUHJvcHM7IC8v5bem5L6n5qCR5Y+C5pWwXHJcbiAgc3VibWl0UGFyYW1zPzogT2JqZWN0OyAvL+a3u+WKoOWPguaVsO+8jOm7mOiupG1vdGhvZDpwb3N077yMIOWPguaVsOmAmui/h2RhdGHkvKDpgJJcclxuICBzdWJtaXRVcmw/OiBzdHJpbmc7XHJcbiAgb25TdWJtaXQ/OiAodmFsdWU/OiBhbnksIGxhYmVsPzogYW55KSA9PiB2b2lkO1xyXG4gIGNvbHVtbnM6IEFycmF5PE9iamVjdD47XHJcbiAgc2hvd0xlZnQ/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuW3puS+p+ebruW9leagkVxyXG4gIHNob3dUb29sQnV0dG9uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmjInpkq7moI9cclxuICBlZGl0b3JGb3JtPzogYm9vbGVhbjsgLy/mmK/lkKbpnIDopoHooajljZXlip/og70gLCDkuLpmYWxzZSDnvJbovpHvvIzmn6XnnIvvvIzmlrDlop7lip/og73lnYfkuI3lj6/nlKhcclxuICBkZWxldGVVcmw/OiBzdHJpbmc7IC8v5Yig6ZmkdXJsXHJcbiAgb25EZWxldGU/OiAoc2VsZWN0ZWRLZXlzPzogQXJyYXk8c3RyaW5nPikgPT4gdm9pZDsgLy/liKDpmaTlj4LmlbDvvIzpu5jorqRtb3Rob2Q6cG9zdO+8jCDlj4LmlbDpgJrov4dpZHPmi7zmjqXkvKDpgJLnu5nlkI7lj7BcclxuICBkZWxldGVQb3NpdGlvbj86IFwidG9vbGJhclwiIHwgXCJyb3dcIjtcclxuICBkZWxldGVQYXJhbXM/OiBPYmplY3Q7XHJcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XHJcbiAgb25TZWFyY2g/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgb25SZXNldD86ICgpID0+IHZvaWQ7XHJcbiAgaW5pdERhdGE/OiBhbnk7IC8v5Yid5aeL5YyW5Zue6LCD5Ye95pWw77yM5ZyoY29tcG9uZW50RGlkTW91bnTkuK3osIPnlKhcclxuICBidXR0b25zPzogQXJyYXk8c3RyaW5nPjsgLy/mjInpkq7pm4blkIggIFsnYWRkJywnZGVsZXRlJywnc2VhcmNoJywnZWRpdG9yJ11cclxuICBvblNob3dGb3JtPzogKHZhbHVlPzogYW55LCBlZGl0b3JGbGFnPzogc3RyaW5nKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uSGlkZUZvcm0/OiAoKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uRm9ybUNoYW5nZT86IChjaGFuZ2VkVmFsdWVzPzogYW55LCBhbGxWYWx1ZXM/OiBhbnkpID0+IHZvaWQ7IC8v6KGo5Y2Vb25DaGFuZ2Xlm57osINcclxuICBmb3JtVHlwZT86IFwibW9kYWxcIiB8IFwiZHJhd2VyXCI7XHJcbiAgZm9ybUNoYW5nZVZhbGlkPzogYm9vbGVhbjsgLy/ooajljZXmoKHpqoxcclxuICBjbGFzc05hbWU/OiBhbnk7XHJcbiAgdG9vbEJ1dHRvblBvc2l0aW9uPzogXCJyaWdodFwiIHwgXCJidXR0b21cIjtcclxuICBwYWdlVGl0bGU/OiBzdHJpbmcgfCBSZWFjdE5vZGU7XHJcbiAgZm9ybVByb3BzPzogRm9ybVByb3BzO1xyXG4gIGFjdGlvblByb3BzPzoge1xyXG4gICAgdGV4dEFsaWduPzogc3RyaW5nO1xyXG4gICAgc2hvd0ljb24/OiBib29sZWFuO1xyXG4gICAgd2lkdGg/OiBudW1iZXI7XHJcbiAgICBidXR0b25OdW1iZXI/OiBudW1iZXIgfCBcImFsbFwiO1xyXG4gIH07XHJcbiAgc2VhcmNoRm9ybVByb3BzPzogeyB3cmFwcGVyQ29sPzogYW55OyBsYWJlbENvbD86IGFueSB9O1xyXG4gIG9uVHJlZVNlbGVjdD86ICh2YWx1ZT86IGFueSwgZWRpdG9yRmxhZz86IHN0cmluZykgPT4gdm9pZDsgLy/miZPlvIDooajljZXlm57osINcclxuICBvbkNhbGxCYWNrcz86IHtcclxuICAgIHRyZWVTZWxlY3RDYWxsQmFjaz86IGFueTtcclxuICAgIG9uU2VhcmNoQ2FsbEJhY2s/OiBhbnk7XHJcbiAgICBvblN1bWJpdENhbGxCYWNrPzogYW55O1xyXG4gICAgb25EZWxldGVDYWxsQmFjaz86IGFueTtcclxuICB9O1xyXG4gIHBhZ2VUeXBlPzogXCJub3JtYWxcIiB8IFwidGFic3BhZ2VcIjtcclxufVxyXG5cclxuY2xhc3MgQmFzZVBhZ2UgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PE5TQ0Jhc2VCYWdlUHJvcHMsIGFueT4ge1xyXG4gIHRhYmxlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICB0cmVlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBzZWFyY2hSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIGVkaXRvclJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgcGFnZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICBjb25zdHJ1Y3Rvcihwcm9wczogYW55KSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBsZXQgeyBzdG9yZVByZWZpeCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdHlwZSA9IGdldFN0b3JhZ2UoXHJcbiAgICAgIHN0b3JlUHJlZml4ID8gc3RvcmVQcmVmaXggKyBcIi1cIiArIFwiZm9ybVR5cGVcIiA6IFwiZm9ybVR5cGVcIlxyXG4gICAgKTtcclxuICAgIHR5cGUgPSB0eXBlPy5jb250ZW50O1xyXG4gICAgbGV0IHNpemUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCItXCIgKyBcInRhYmxlU2l6ZVwiIDogXCJ0YWJsZVNpemVcIlxyXG4gICAgKTtcclxuICAgIHNpemUgPSBzaXplPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgdHlwZTogXCJhZGRcIixcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICAgIHRyZWVTZWxlY3RlZEtleTogXCJcIixcclxuICAgICAgZXhwYW5kOiBmYWxzZSxcclxuICAgICAgZm9ybVR5cGU6IHR5cGUgfHwgXCJtb2RhbFwiLFxyXG4gICAgICB0YWJsZVNpemU6IHNpemUgfHwgXCJkZWZhdWx0XCIsXHJcbiAgICAgIHRyZWVTZWFyY2hQcmFtczoge30sXHJcbiAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgICAgbW9yZU9wZW46IGZhbHNlLFxyXG4gICAgICBlbGVtZW50SGVpZ2h0OiAwLFxyXG4gICAgfTtcclxuICB9XHJcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IGluaXREYXRhIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZWxlbWVudEhlaWdodCA9IHRoaXMucGFnZVJlZi5jdXJyZW50Py5jbGllbnRIZWlnaHQ7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZWxlbWVudEhlaWdodCxcclxuICAgIH0pO1xyXG4gICAgaW5pdERhdGEgJiYgaW5pdERhdGEoKTtcclxuICB9XHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xyXG4gICAgY29uc3QgZWxlbWVudEhlaWdodCA9IHRoaXMucGFnZVJlZi5jdXJyZW50Py5jbGllbnRIZWlnaHQ7XHJcbiAgICBpZiAoZWxlbWVudEhlaWdodCA+IHRoaXMuc3RhdGUuZWxlbWVudEhlaWdodCkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBlbGVtZW50SGVpZ2h0LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgc2V0U2VhcmNoUGFyYW1zKHBhcmFtcywgY2FsbEJhY2spIHtcclxuICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnNldFNlYXJjaFBhcmFtcyhwYXJhbXMpO1xyXG4gICAgY2FsbEJhY2sgJiYgY2FsbEJhY2socGFyYW1zKTtcclxuICB9XHJcbiAgZG9TdWJtaXQoZGF0YSwgbGFiZWwgPSBcIue8lui+kVwiKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5kb1N1Ym1pdChkYXRhLCBsYWJlbCk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdCA9IChjaGVja2VkVHJlZUtleXM6IGFueSkgPT4ge1xyXG4gICAgY29uc3QgeyBuYW1lLCB1c2VyVHlwZSwgYWNjb3VudCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHZhbHVlID0geyBuYW1lLCB1c2VyVHlwZSwgYWNjb3VudCwgZGVwdElkOiBjaGVja2VkVHJlZUtleXNbMF0gfTtcclxuICAgIGlmICh0aGlzLnByb3BzLm9uU2VhcmNoKSB7XHJcbiAgICAgIHRoaXMucHJvcHMub25TZWFyY2godmFsdWUpO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy50YWJsZUxvYWQodmFsdWUpO1xyXG4gIH07XHJcblxyXG4gIC8v5pi+56S66KGo5Y2VXHJcbiAgc2hvd0Zvcm0odmFsdWU/OiBhbnksIGVkaXRvcmZsYWcgPSBcImFkZFwiKSB7XHJcbiAgICBsZXQgbmV3VmFsdWUgPSB2YWx1ZSA/IHsgLi4udmFsdWUgfSA6IG51bGw7XHJcbiAgICB0aGlzLmVkaXRvclJlZj8uY3VycmVudD8uc2hvdyhuZXdWYWx1ZSwgZWRpdG9yZmxhZyk7XHJcbiAgfVxyXG5cclxuICAvL+WFs+mXreihqOWNlVxyXG4gIGhpZGVGb3JtKCkge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICB9XHJcblxyXG4gIHNldExvYWRpbmcobG9hZGluZzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uc2V0TG9hZGluZyhsb2FkaW5nKTtcclxuICB9XHJcblxyXG4gIHNldEVkaXRGb3JtVmFsdWVzKHZhbHVlKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5zZXRGaWVsZHNWYWx1ZSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0Rm9ybVZhbHVlcygpIHtcclxuICAgIHJldHVybiB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5nZXRGaWVsZHNWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy/mibnph4/liKDpmaRcclxuICBvbkRlbGV0ZShkYXRhPzogYW55KSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGRlbGV0ZVVybCxcclxuICAgICAgb25EZWxldGUsXHJcbiAgICAgIGRlbGV0ZVBhcmFtcyxcclxuICAgICAgZGVsZXRlUG9zaXRpb24gPSBcInRvb2xiYXJcIixcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGNvbnN0IHNlbGVjdGVkUm93S2V5cyA9IHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgICBpZiAoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIpIHtcclxuICAgICAgaWYgKHNlbGVjdGVkUm93S2V5cy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgIG1lc3NhZ2Uud2FybmluZyhcIuivt+mAieaLqeimgeWIoOmZpOeahOaVsOaNru+8gVwiKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIE1vZGFsLmNvbmZpcm0oe1xyXG4gICAgICBjb250ZW50OiBcIuaYr+WQpuehruiupOWIoOmZpOaJgOmAiemhue+8n1wiLFxyXG4gICAgICAvLyBjZW50ZXJlZDp0cnVlLFxyXG4gICAgICBvbk9rOiAoKSA9PiB7XHJcbiAgICAgICAgaWYgKG9uRGVsZXRlKSB7XHJcbiAgICAgICAgICBvbkRlbGV0ZSAmJlxyXG4gICAgICAgICAgICBvbkRlbGV0ZShkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cyA6IGRhdGEpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWRlbGV0ZVVybCkge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidXJs5LiN6IO95Li656m677yBXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBkZWZhdWx0UGFyYW1zID0ge1xyXG4gICAgICAgICAgbWV0aG9kOiBcInBvc3RcIixcclxuICAgICAgICAgIGF1dG9QcmVmaXg6IHRydWUsXHJcbiAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgaWRzOiBkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cy5qb2luKCkgOiBkYXRhLmlkLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGxldCByZXF1ZXN0UGFyYW1zID0ge30gYXMgYW55O1xyXG4gICAgICAgIGlmIChkZWZhdWx0UGFyYW1zKSB7XHJcbiAgICAgICAgICByZXF1ZXN0UGFyYW1zID0geyAuLi5kZWxldGVQYXJhbXMgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVxdWVzdFBhcmFtcyA9IHsgLi4uZGVmYXVsdFBhcmFtcyB9O1xyXG4gICAgICAgIHJlcXVlc3QoZGVsZXRlVXJsLCB7XHJcbiAgICAgICAgICAuLi5yZXF1ZXN0UGFyYW1zLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgY29uc3QgeyBjb2RlIH0gPSByZXM7XHJcbiAgICAgICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLnN1Y2Nlc3MoXCLliKDpmaTmiJDlip/vvIFcIik7XHJcbiAgICAgICAgICAgICAgbGV0IHZhbHVlID0gX3RoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25EZWxldGVDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRGVsZXRlQ2FsbEJhY2soKTtcclxuICAgICAgICAgICAgICBfdGhpcy50YWJsZUxvYWQodmFsdWUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoXCLliKDpmaTlpLHotKXvvIFcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yOiBhbnkpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlcnJvcik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICB0YWJsZUxvYWQocGFyYW1zOiBhbnksIHJlcXVlc3RDb25maWcgPSB7fSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZS5sb2FkKHtcclxuICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgcGFyYW1zOiBwYXJhbXMsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy/mn6Xor6JcclxuICBvblNlYXJjaChwYXJhbXMpIHtcclxuICAgIGNvbnN0IHsgb25TZWFyY2gsIG9uQ2FsbEJhY2tzIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKG9uU2VhcmNoKSB7XHJcbiAgICAgIG9uU2VhcmNoKHsgLi4ucGFyYW1zLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy50YWJsZUxvYWQoeyAuLi5wYXJhbXMsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH0pO1xyXG4gICAgb25DYWxsQmFja3M/Lm9uU2VhcmNoQ2FsbEJhY2sgJiZcclxuICAgICAgdXRpbHMuY2FsbGJhY2sob25DYWxsQmFja3M/Lm9uU2VhcmNoQ2FsbEJhY2ssIHRoaXMsIFtwYXJhbXNdKTtcclxuICB9XHJcbiAgLy/ooajmoLzph43mlrDliqDovb1cclxuICB0YWJsZVJlbG9hZChwYXJhbXMgPSB7fSwgYXV0b0xvYWQgPSB0cnVlKSB7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5yZWxvYWQoe1xyXG4gICAgICBjYWxsYmFjazogKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGF1dG9Mb2FkICYmXHJcbiAgICAgICAgICByZXM/LmRhdGE/LnJlY29yZHM/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICB0aGlzLnN0YXRlLmN1cnJlbnRQYWdlICE9PSAxXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5yZWxvYWQoe1xyXG4gICAgICAgICAgICBwYXJhbXM6IHsgY3VycmVudDogMSwgLi4ucGFyYW1zIH0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93RGF0YXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0RhdGFzKCk7XHJcbiAgfVxyXG4gIHNldFNlbGVjdGVkUm93S2V5cyhkYXRhOiBBcnJheTxTdHJpbmcgfCBOdW1iZXI+KSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zZXRTZWxlY3RlZFJvd0tleXMoZGF0YSk7XHJcbiAgfVxyXG4gIHNldFNlbGVjdGVkUm93RGF0YXMoZGF0YTogQXJyYXk8T2JqZWN0Pikge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uc2V0U2VsZWN0ZWRSb3dEYXRhcyhkYXRhKTtcclxuICB9XHJcbiAgcmVzZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5yZXNldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VhcmNoVmFsdWVzKCkge1xyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgcmV0dXJuIHsgLi4uZnJvbVZhbHVlLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hpbGRyZW5EYXRhKGRhdGEsIGtleXMgPSBbXSkge1xyXG4gICAgY29uc3QgeyB0YWJsZVByb3BzIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgcmVzS2V5ID0gW107XHJcbiAgICBpZiAoZGF0YS5jaGlsZE5vZGVzKSB7XHJcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gZGF0YS5jaGlsZE5vZGVzO1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0uY2hpbGROb2Rlcykge1xyXG4gICAgICAgICAgdGhpcy5nZXRDaGlsZHJlbkRhdGEoaXRlbS5jaGlsZE5vZGVzLCBrZXlzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVzS2V5ID0gWy4uLmtleXMsIGl0ZW1bcm93S2V5XV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlc0tleSA9IFsuLi5rZXlzLCBkYXRhW3Jvd0tleV1dO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc0tleTtcclxuICB9XHJcblxyXG4gIHJlbmRlclRvb2xCdXR0b25zKHRvb2xidXR0b25zOiBhbnksIHRvb2xiYXJGbGFnKSB7XHJcbiAgICBjb25zdCBmbGFnID0gdG9vbGJ1dHRvbnMubGVuZ3RoID4gNTtcclxuICAgIC8vIHRvb2xidXR0b25zID0gWy4uLnRvb2xidXR0b25zXS5yZXZlcnNlKCk7XHJcbiAgICBjb25zdCB7IHNob3dTZWFyY2ggPSB0cnVlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgY29udGVudCA9IHRvb2xidXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCBpY29uLCBzaG93LCAuLi5wYXJhbXMgfSA9IGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChpbmRleCA+IDMpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgIG1vcmVPcGVuOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdG9vbC1idXR0b25zXCIpKX1cclxuICAgICAgICBzdHlsZT17eyBtYXJnaW5MZWZ0OiAwIH19XHJcbiAgICAgID5cclxuICAgICAgICB7dG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA8IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpblJpZ2h0OiAxMixcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge2l0ZW19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgICAgICAgICAgdGl0bGU9e251bGx9XHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgIG9wZW49e3RoaXMuc3RhdGUubW9yZU9wZW59XHJcbiAgICAgICAgICAgICAgICAgIG9uT3BlbkNoYW5nZT17KG9wZW4pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob3Blbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVPcGVuOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3JlT3BlbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIC8vIG9wZW49e3RydWV9XHJcbiAgICAgICAgICAgICAgICAgIC8vIG92ZXJsYXlDbGFzc05hbWU9e3N0eWxlc1sncG9wLWJveCddfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHR5cGU9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAg5pu05aSaIDxEb3duT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6IGluZGV4ID09IHRvb2xidXR0b25zLmxlbmd0aCAtIDEgPyAwIDogMTIsXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHtpdGVtfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG4gIHJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zOiBhbnksIHJlY29yZDogYW55KSB7XHJcbiAgICBjb25zdCB7IGFjdGlvblByb3BzIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBiYXNlQWN0aW9uQ29sdW1uIH0gPSBjb25maWcoKTtcclxuICAgIGNvbnN0IG5ld0J1dHRvbnMgPSBbXTtcclxuICAgIGxldCBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBpZiAoYWN0aW9uUHJvcHM/LnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGVsc2UgaWYgKGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgY29sdW1uQnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgaWNvbiwgcmVjb3JkU2hvdywgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChyZWNvcmRTaG93KSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiByZWNvcmRTaG93ID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgIGlmIChldmFsKHJlY29yZFNob3cpKSB7XHJcbiAgICAgICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiByZWNvcmRTaG93ID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgY29uc3Qgc2hvdyA9IHJlY29yZFNob3cocmVjb3JkKTtcclxuICAgICAgICAgIHNob3cgJiYgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgbGV0IG51bWJlciA9IGFjdGlvblByb3BzPy5idXR0b25OdW1iZXJcclxuICAgICAgPyBhY3Rpb25Qcm9wcz8uYnV0dG9uTnVtYmVyXHJcbiAgICAgIDogYmFzZUFjdGlvbkNvbHVtbj8uYnV0dG9uTnVtYmVyXHJcbiAgICAgID8gYmFzZUFjdGlvbkNvbHVtbj8uYnV0dG9uTnVtYmVyXHJcbiAgICAgIDogMztcclxuICAgIGxldCBmbGFnID0gZmFsc2U7XHJcbiAgICBpZiAobnVtYmVyID09IFwiYWxsXCIpIHtcclxuICAgICAgZmxhZyA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZmxhZyA9IG5ld0J1dHRvbnMubGVuZ3RoID4gbnVtYmVyO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSBuZXdCdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCByZWNvcmRTaG93LCBpY29uLCBzaG93LCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGluZGV4ID4gTnVtYmVyKG51bWJlcikgLSAxKSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSxcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudC1pdGVtXCIpXHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBsZXQgZGF0YSA9IHsgLi4udGhpcy5zdGF0ZS5wb3BvcGVucyB9O1xyXG4gICAgICAgICAgICAgIGRhdGFbcmVjb3JkLmlkXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgcG9wb3BlbnM6IGRhdGEsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBuZXdCdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCByZWNvcmRTaG93LCBpY29uLCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICBpZiAoaW5kZXggPCBudW1iZXIpIHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLCB7XHJcbiAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvci1maXJzdFwiKV06IGluZGV4ID09PSAwLFxyXG4gICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICBpY29uPXtpY29ufVxyXG4gICAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgICAgdHlwZT17XCJsaW5rXCJ9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gbnVtYmVyKSB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgdGl0bGU9e251bGx9XHJcbiAgICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgICAgICB0cmlnZ2VyPXtbXCJjbGlja1wiXX1cclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgIG9wZW49e3RoaXMuc3RhdGUucG9wb3BlbnNbcmVjb3JkLmlkXSB8fCBmYWxzZX1cclxuICAgICAgICAgICAgICBvbk9wZW5DaGFuZ2U9eyhvcGVuKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAob3Blbikge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IHsgLi4udGhpcy5zdGF0ZS5wb3BvcGVucyB9O1xyXG4gICAgICAgICAgICAgICAgICBkYXRhW3JlY29yZC5pZF0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICBwb3BvcGVuczogZGF0YSxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICBwb3BvcGVuczoge30sXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgLy8gb3ZlcmxheUNsYXNzTmFtZT17c3R5bGVzWydwb3AnXX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxhIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKX0+XHJcbiAgICAgICAgICAgICAgICA8RWxsaXBzaXNPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvci1maXJzdFwiKV06IGluZGV4ID09PSAwLFxyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICB0eXBlPVwibGlua1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuICAvL+agkeeCueWHu+S6i+S7tlxyXG4gIHRyZWVTZWxlY3Qoc2VsZWN0ZWRLZXlzOiBhbnksIG9iajogYW55KSB7XHJcbiAgICBsZXQga2V5d29yZCA9IFwiXCI7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHNlYXJjaEtleSA9IFwia2V5XCIsXHJcbiAgICAgIHNlYXJjaEZpZWxkID0gXCJcIixcclxuICAgICAgcGFyYW50U2VsZWN0ID0gdHJ1ZSxcclxuICAgIH0gPSB0aGlzLnByb3BzLnRyZWVQcm9wcztcclxuICAgIGNvbnN0IHsgdHJlZVNlbGVjdGVkS2V5IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZCwgc2VsZWN0ZWROb2RlcyB9ID0gb2JqO1xyXG5cclxuICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICBrZXl3b3JkID0gc2VsZWN0ZWROb2Rlc1swXS5kYXRhcmVmLmF0dHJpYnV0ZVtzZWFyY2hLZXldO1xyXG4gICAgICBpZiAocGFyYW50U2VsZWN0KSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgIHRyZWVTZWFyY2hQcmFtczogeyBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkTm9kZXNbMF0uaXNMZWFmIHx8ICFzZWxlY3RlZE5vZGVzWzBdLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRLZXlzWzBdICE9PSB0cmVlU2VsZWN0ZWRLZXkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBzZWxlY3RlZEtleXNbMF0sXHJcbiAgICAgICAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7IFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IGtleXdvcmQsXHJcbiAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7fSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vblRyZWVTZWxlY3QpIHtcclxuICAgICAgdGhpcy5wcm9wcy5vblRyZWVTZWxlY3Qoc2VsZWN0ZWRLZXlzLCBvYmopO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCkgfHwge307XHJcbiAgICBzZWFyY2hGaWVsZCAmJiB0aGlzLnRhYmxlTG9hZCh7IC4uLmZyb21WYWx1ZSwgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9KTtcclxuICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjayAmJlxyXG4gICAgICB1dGlscy5jYWxsYmFjayh0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50cmVlU2VsZWN0Q2FsbEJhY2ssIHRoaXMsIFtcclxuICAgICAgICBzZWxlY3RlZEtleXMsXHJcbiAgICAgICAgb2JqLFxyXG4gICAgICBdKTtcclxuICB9XHJcbiAgcmVzZXRTZWFyY2goKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gIH1cclxuICBnZXRUZXh0KHByb3BzLCB0ZXh0KSB7XHJcbiAgICBsZXQgbmV3VGV4dCA9IHRleHQ7XHJcbiAgICBpZiAocHJvcHM/LmRhdGEgJiYgcHJvcHM/LmRhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGRhdGEgPSBwcm9wcy5kYXRhO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGE/Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGRhdGFbaV0udmFsdWUgPT0gdGV4dCkge1xyXG4gICAgICAgICAgbmV3VGV4dCA9IGRhdGFbaV0ubGFiZWw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3VGV4dDtcclxuICB9XHJcbiAgc2V0VGFibGVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnNldERhdGEoZGF0YSk7XHJcbiAgfVxyXG4gIHNldFRyZWVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudHJlZVJlZi5jdXJyZW50Py5zdG9yZT8uc2V0RGF0YShkYXRhKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRLZXkgPSAoc2VsZWN0ZWQpID0+IHtcclxuICAgIGxldCByZXMgPSBbXTtcclxuICAgIGZvciAobGV0IGtleSBpbiBzZWxlY3RlZCkge1xyXG4gICAgICBjb25zdCBrZXlzID0gc2VsZWN0ZWRba2V5XTtcclxuICAgICAgaWYgKGtleXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHJlcyA9IFsuLi5yZXMsIC4uLmtleXNdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH07XHJcblxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgY29sdW1ucyA9IFtdLFxyXG4gICAgICBzaG93U2VhcmNoID0gdHJ1ZSxcclxuICAgICAgY2hpbGRyZW4sXHJcbiAgICAgIHN1Ym1pdFVybCA9IFwiXCIsXHJcbiAgICAgIHRhYmxlUHJvcHMgPSB7fSxcclxuICAgICAgdHJlZVByb3BzID0ge30sXHJcbiAgICAgIGZvcm1Qcm9wcyA9IHt9LFxyXG4gICAgICBzaG93TGVmdCA9IGZhbHNlLFxyXG4gICAgICBzdWJtaXRQYXJhbXMgPSB7fSxcclxuICAgICAgc2hvd1Rvb2xCdXR0b24gPSB0cnVlLFxyXG4gICAgICBidXR0b25zID0gW10sXHJcbiAgICAgIGVkaXRvckZvcm0gPSB0cnVlLFxyXG4gICAgICBvblNob3dGb3JtLFxyXG4gICAgICBmb3JtQ2hhbmdlVmFsaWQgPSB0cnVlLFxyXG4gICAgICBjbGFzc05hbWUsXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9IFwiYnV0dG9tXCIsXHJcbiAgICAgIGFjdGlvblByb3BzLFxyXG4gICAgICBkZWxldGVQb3NpdGlvbiA9IFwidG9vbGJhclwiLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlLFxyXG4gICAgICBmaWx0ZXJDb2x1bW4gPSB0cnVlLFxyXG4gICAgICBhY3Rpb25Db2x1bW4gPSB0cnVlLFxyXG4gICAgICBzaG93Um93U2VsZWN0aW9uID0gdHJ1ZSxcclxuICAgICAgY29sdW1uT3JkZXIgPSB0cnVlLFxyXG4gICAgICBleHBhbmRhYmxlID0ge30sXHJcbiAgICAgIHBhcmFudFNlbGVjdCA9IHRydWUsXHJcbiAgICAgIHRpdGxlOiB0YWJsZVRpdGxlLFxyXG4gICAgICAuLi5vdGhlcnRhYmxlUGFyYW1zXHJcbiAgICB9ID0gdGFibGVQcm9wcztcclxuICAgIGNvbnN0IHtcclxuICAgICAgc3RvcmU6IHRyZWVTdG9yZSA9IHt9LFxyXG4gICAgICBzaG93U2VhcmNoOiB0cmVlU2VhcmNoID0gdHJ1ZSxcclxuICAgICAgdGl0bGVBbGlhcyA9IFwidGl0bGVcIixcclxuICAgICAgdGl0bGU6IHRyZWVUaXRsZSxcclxuICAgICAgLi4ub3RoZXJ0cmVlUGFyYW1zXHJcbiAgICB9ID0gdHJlZVByb3BzO1xyXG4gICAgbGV0IHRhYmxlUGFyYW1zID0geyBmaWx0ZXJDb2x1bW4sIHN0b3JlLCAuLi5vdGhlcnRhYmxlUGFyYW1zIH0gYXMgYW55O1xyXG4gICAgbGV0IHRhYmxlQ29sdW1uOiBhbnlbXSA9IFtdO1xyXG4gICAgY29uc3Qgc2VhcmNoRm9ybXM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgZWRpdG9yRm9ybXM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgZGVmYXVsdFZhbHVlOiBhbnkgPSB7fTtcclxuICAgIGNvbnN0IGNvbHVtbkJ1dHRvbnM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgeyBlbGVtZW50SGVpZ2h0IH0gPSB0aGlzLnN0YXRlO1xyXG5cclxuICAgIGNvbHVtbnMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgbGV0IHRlbXAgPSB7IHdpZHRoOiAxMDAsIC4uLml0ZW0gfTtcclxuICAgICAgaWYgKHRlbXAuc2VhcmNoID09PSB0cnVlIHx8IHRlbXAuc2VhcmNoPy5zaG93ID09PSB0cnVlKSB7XHJcbiAgICAgICAgc2VhcmNoRm9ybXMucHVzaCh7XHJcbiAgICAgICAgICBuYW1lOiB0ZW1wLmZpZWxkIHx8IHRlbXAuZGF0YUluZGV4LFxyXG4gICAgICAgICAgbGFiZWw6IHRlbXAuc2VhcmNoPy5sYWJlbCB8fCB0ZW1wLnRpdGxlLFxyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgICBsYWJlbENvbDogdGVtcC5zZWFyY2g/LmxhYmVsQ29sLFxyXG4gICAgICAgICAgd3JhcHBlckNvbDogdGVtcC5zZWFyY2g/LndyYXBwZXJDb2wsXHJcbiAgICAgICAgICBydWxlczogdGVtcC5zZWFyY2hSdWxlcyA/IHRlbXAuc2VhcmNoUnVsZXMgOiBbXSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZGVsZXRlIHRlbXAuc2VhcmNoO1xyXG4gICAgICB0ZW1wLmVkaXRvciAhPT0gZmFsc2UgJiZcclxuICAgICAgICBlZGl0b3JGb3Jtcy5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICBsYWJlbDogdGVtcC50aXRsZSxcclxuICAgICAgICAgIHJ1bGVzOiB0ZW1wLnJ1bGVzID8gdGVtcC5ydWxlcyA6IFtdLFxyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgc3BhbjogdGVtcC5zcGFuLFxyXG4gICAgICAgICAgZGljdE5hbWU6IHRlbXAuZGljdE5hbWUsXHJcbiAgICAgICAgICBwcm9wczogeyAuLi50ZW1wLnByb3BzIH0sXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgICB0ZW1wLnByb3BzPy5kZWZhdWx0VmFsdWUgIT09IG51bGxcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXg7XHJcbiAgICAgICAgZGVmYXVsdFZhbHVlW25hbWVdID0gdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnJ1bGVzO1xyXG4gICAgICBkZWxldGUgdGVtcC5zcGFuO1xyXG4gICAgICBpZiAodGVtcC5jb2x1bW5TZWFyY2gpIHtcclxuICAgICAgICB0ZW1wLmZpbHRlclByb3BzID0ge1xyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC50eXBlO1xyXG4gICAgICBsZXQgdGVtcFByb3AgPSB7IC4uLnRlbXAucHJvcHMgfTtcclxuXHJcbiAgICAgIGlmICh0ZW1wUHJvcD8uZGF0YSAmJiB0ZW1wUHJvcD8uZGF0YT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRlbXAgPSB7XHJcbiAgICAgICAgICBlbGxpcHNpczogeyBzaG93VGl0bGU6IGZhbHNlIH0sXHJcbiAgICAgICAgICByZW5kZXI6ICh0ZXh0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VGV4dCh0ZW1wUHJvcCwgdGV4dCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4udGVtcCxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnByb3BzO1xyXG5cclxuICAgICAgLy8gdGVtcC5lbGxpcHNpcyA9IHRydWU7XHJcbiAgICAgIGlmICh0ZW1wPy5jb2x1bW5TaG93ICE9PSBmYWxzZSkgdGFibGVDb2x1bW4ucHVzaCh0ZW1wKTtcclxuICAgIH0pO1xyXG4gICAgY29uc3Qgc2VsZkJ1dHRvbnM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgeyBiYXNlQWN0aW9uQ29sdW1uIH0gPSBjb25maWcoKTtcclxuICAgIGxldCBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBpZiAoYWN0aW9uUHJvcHM/LnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGVsc2UgaWYgKGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG5cclxuICAgIGlmIChidXR0b25zLmluZGV4T2YoXCJzZWFyY2hcIikgPiAtMSkge1xyXG4gICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgb25DbGljaz17KHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgb25TaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgXCJkZXRhaWxcIik7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIFwiZGV0YWlsXCIpO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIGljb249ezxFeWVPdXRsaW5lZCAvPn1cclxuICAgICAgICAgIHR5cGU9XCJsaW5rXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICDmn6XnnItcclxuICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgKTtcclxuXHJcbiAgICAgIGlmIChidXR0b25zLmluZGV4T2YoXCJlZGl0b3JcIikgPiAtMSkge1xyXG4gICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgb25DbGljaz17KHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICAgIG9uU2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIFwiZWRpdG9yXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBcImVkaXRvclwiKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgaWNvbj17PEVkaXRPdXRsaW5lZCAvPn1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg57yW6L6RXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoYnV0dG9ucy5pbmRleE9mKFwiYWRkXCIpID4gLTEpIHtcclxuICAgICAgc2VsZkJ1dHRvbnMucHVzaChcclxuICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgeyBvblNob3dGb3JtIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgICAgICBpZiAob25TaG93Rm9ybSkge1xyXG4gICAgICAgICAgICAgIG9uU2hvd0Zvcm0obnVsbCwgXCJhZGRcIik7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0oKTtcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBpY29uPXs8UGx1c091dGxpbmVkIC8+fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIOa3u+WKoFxyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgaWYgKGJ1dHRvbnMuaW5kZXhPZihcImRlbGV0ZVwiKSA+IC0xKSB7XHJcbiAgICAgIGlmIChkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIikge1xyXG4gICAgICAgIHNlbGZCdXR0b25zLnB1c2goXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIC8vIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICBvbkNsaWNrPXt0aGlzLm9uRGVsZXRlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgIGljb249ezxEZWxldGVPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgZGFuZ2VyXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOWIoOmZpFxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIGlmIChkZWxldGVQb3NpdGlvbiA9PSBcInJvd1wiKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAvLyB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgb25DbGljaz17KHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vbkRlbGV0ZShyZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBpY29uPXs8RGVsZXRlT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgIGRhbmdlclxyXG4gICAgICAgICAgICB0eXBlPVwibGlua1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOWIoOmZpFxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpIHtcclxuICAgICAgICAgIGl0ZW0ubWFwKChjaGlsZCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIikge1xyXG4gICAgICAgICAgICAgIHNlbGZCdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgIGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIiB8fFxyXG4gICAgICAgICAgICAgIGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIlxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIikge1xyXG4gICAgICAgICAgICBzZWxmQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICAgaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIgfHxcclxuICAgICAgICAgICAgaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY29sdW1uQnV0dG9uXCJcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgY29uc3QgeyBwcm9wcyB9OiBhbnkgPSBjaGlsZHJlbjtcclxuICAgICAgaWYgKHByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIikge1xyXG4gICAgICAgIHNlbGZCdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9IGVsc2UgaWYgKHByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgYWN0aW9uQ29sdW1uICYmXHJcbiAgICAgIHRhYmxlQ29sdW1uLnB1c2goe1xyXG4gICAgICAgIHRpdGxlOiBcIuaTjeS9nFwiLFxyXG4gICAgICAgIGRhdGFJbmRleDogXCJhY3Rpb25cIixcclxuICAgICAgICBhbGlnbjogYWN0aW9uUHJvcHM/LnRleHRBbGlnblxyXG4gICAgICAgICAgPyBhY3Rpb25Qcm9wcz8udGV4dEFsaWduXHJcbiAgICAgICAgICA6IGJhc2VBY3Rpb25Db2x1bW4udGV4dEFsaWduXHJcbiAgICAgICAgICA/IGJhc2VBY3Rpb25Db2x1bW4udGV4dEFsaWduXHJcbiAgICAgICAgICA6IFwibGVmdFwiLFxyXG4gICAgICAgIHdpZHRoOiBhY3Rpb25Qcm9wcz8ud2lkdGhcclxuICAgICAgICAgID8gYWN0aW9uUHJvcHM/LndpZHRoXHJcbiAgICAgICAgICA6IGJhc2VBY3Rpb25Db2x1bW4ud2lkdGhcclxuICAgICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbi53aWR0aFxyXG4gICAgICAgICAgOiAyMDAsXHJcbiAgICAgICAgZml4ZWQ6IFwicmlnaHRcIixcclxuICAgICAgICByZW5kZXI6ICh0ZXh0OiBhbnksIHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWFjdGlvblwiKX0+XHJcbiAgICAgICAgICAgICAge3RoaXMucmVuZGVyQ2xvdW1uQnV0dG9uKGNvbHVtbkJ1dHRvbnMsIHJlY29yZCl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuXHJcbiAgICBpZiAoY29sdW1uT3JkZXIpXHJcbiAgICAgIHRhYmxlQ29sdW1uID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRpdGxlOiBcIuW6j+WPt1wiLFxyXG4gICAgICAgICAgd2lkdGg6IDgwLFxyXG4gICAgICAgICAgYWxpZ246IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICByZW5kZXI6ICh0ZXh0LCByZWFjb3JkLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gPD57aW5kZXggKyAxfTwvPjtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50YWJsZUNvbHVtbixcclxuICAgICAgXTtcclxuICAgIGxldCBzZWFyY2hGbGFnID0gc2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwO1xyXG4gICAgbGV0IHsgdGFibGVUb29sIH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0b29sRmxhZyA9XHJcbiAgICAgIHNob3dUb29sQnV0dG9uICYmXHJcbiAgICAgIHNlbGZCdXR0b25zLmxlbmd0aCA+IDAgJiZcclxuICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uID09IFwiYnV0dG9tXCI7XHJcbiAgICBsZXQgdG9vbGJhckZsYWcgPSAhKFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXIgPT0gZmFsc2UgfHxcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyPy5zaG93ID09IGZhbHNlIHx8XHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhcj8udG9vbHM/Lmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgIHRhYmxlVG9vbD8uc2hvdyA9PSBmYWxzZVxyXG4gICAgKTtcclxuXHJcbiAgICBsZXQgcGFnZUhlaWdodCA9IHRoaXMucHJvcHMucGFnZVR5cGUgPT0gXCJ0YWJzcGFnZVwiID8gNjMgOiAwO1xyXG4gICAgbGV0IHRhYmxlSGVhZGVySGVpZ2h0ID0gNTU7XHJcblxyXG4gICAgbGV0IGhlYWRlckhlaWdodCA9IHNob3dTZWFyY2ggJiYgc2VhcmNoRm9ybXMubGVuZ3RoID4gMCA/IDEwNCA6IDA7XHJcbiAgICBsZXQgdG9vbEhlaWdodCA9IHRhYmxlVGl0bGUgfHwgdG9vbEZsYWcgPyA0OCA6IDA7XHJcbiAgICBsZXQgcGFkZGluZ0hlaWdodCA9IDI1O1xyXG4gICAgbGV0IHRhYmxlQ29udGVudEhlaWdodCA9XHJcbiAgICAgIGVsZW1lbnRIZWlnaHQgLSBoZWFkZXJIZWlnaHQgLSB0b29sSGVpZ2h0IC0gcGFkZGluZ0hlaWdodCAtIHBhZ2VIZWlnaHQ7XHJcbiAgICBsZXQgdGFibGVIZWlnaHQgPSB0YWJsZUNvbnRlbnRIZWlnaHQgLSAzMiAtIDMyO1xyXG4gICAgbGV0IHRhYmxlU3JvbGxIZWlnaHQgPSB0YWJsZUNvbnRlbnRIZWlnaHQgLSB0YWJsZUhlYWRlckhlaWdodCAtIDMyIC0gMzI7XHJcbiAgICBpZiAodGFibGVQcm9wcy5wYWdpbmF0aW9uICE9PSBmYWxzZSkge1xyXG4gICAgICBjb25zdCBzY3JvbGwgPSB0YWJsZVBhcmFtcy5zY3JvbGw7XHJcbiAgICAgIHRhYmxlUGFyYW1zID0ge1xyXG4gICAgICAgIC4uLnRhYmxlUGFyYW1zLFxyXG4gICAgICAgIHNjcm9sbDogeyB4OiBcIm1heC1jb250ZW50XCIsIHk6IHRhYmxlU3JvbGxIZWlnaHQsIC4uLnNjcm9sbCB9LFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZVwiKSwgY2xhc3NOYW1lKX1cclxuICAgICAgICByZWY9e3RoaXMucGFnZVJlZn1cclxuICAgICAgPlxyXG4gICAgICAgIHt0aGlzLnByb3BzLnBhZ2VUaXRsZSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10aXRsZVwiKSl9PlxyXG4gICAgICAgICAgICB7dGhpcy5wcm9wcy5wYWdlVGl0bGV9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1wYW5lXCIpKX1cclxuICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6IFwiZmxleFwiIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3Nob3dMZWZ0ICYmIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1sZWZ0XCIpfT5cclxuICAgICAgICAgICAgICB7dHJlZVRpdGxlICYmIChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0cmVlLXRpdGxlXCIpfT57dHJlZVRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwidHJlZS1jb250ZW50XCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJ0cmVlLWNvbnRlbnQtbm90aXRsZVwiKV06ICF0cmVlVGl0bGUsXHJcbiAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8VHJlZVxyXG4gICAgICAgICAgICAgICAgICBzdG9yZT17eyAuLi50cmVlU3RvcmUgfX1cclxuICAgICAgICAgICAgICAgICAgc2hvd0ljb249e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgICBjaGVja2FibGU9e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlPXt0cmVlU2VhcmNofVxyXG4gICAgICAgICAgICAgICAgICBvblNlbGVjdD17dGhpcy50cmVlU2VsZWN0LmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkS2V5cz17W3RoaXMuc3RhdGUudHJlZVNlbGVjdGVkS2V5XX1cclxuICAgICAgICAgICAgICAgICAgdGl0bGVBbGlhcz17dGl0bGVBbGlhc31cclxuICAgICAgICAgICAgICAgICAgey4uLm90aGVydHJlZVBhcmFtc31cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXJpZ2h0XCIpLCB7XHJcbiAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1uby1sZWZ0LXJpZ2h0XCIpXTogIXNob3dMZWZ0LFxyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dTZWFyY2ggJiYgc2VhcmNoRm9ybXMubGVuZ3RoID4gMCAmJiAoXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1oZWFkZXJzZWFyY2hcIil9PlxyXG4gICAgICAgICAgICAgICAgPEhlYWRlclNlYXJjaFxyXG4gICAgICAgICAgICAgICAgICBzZWFyY2hGb3Jtcz17c2VhcmNoRm9ybXN9XHJcbiAgICAgICAgICAgICAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbj17dG9vbEJ1dHRvblBvc2l0aW9ufVxyXG4gICAgICAgICAgICAgICAgICBvblNlYXJjaD17dGhpcy5vblNlYXJjaC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgICBvblJlc2V0PXt0aGlzLnByb3BzLm9uUmVzZXR9XHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy5zZWFyY2hSZWZ9XHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1Qcm9wcz17dGhpcy5wcm9wcy5zZWFyY2hGb3JtUHJvcHN9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnRcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudC1nYXBcIildOiAhc2VhcmNoRmxhZyxcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHsodGFibGVUaXRsZSB8fCB0b29sRmxhZykgJiYgKFxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGUtdGl0bGVcIiksIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRpdGxlLXdpZHRoXCIpXTogIXRvb2xiYXJGbGFnLFxyXG4gICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdj57dGFibGVUaXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAge3Rvb2xGbGFnICYmIHRoaXMucmVuZGVyVG9vbEJ1dHRvbnMoc2VsZkJ1dHRvbnMsIHRvb2xiYXJGbGFnKX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcblxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGVcIiksXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRvcFwiKV06ICF0b29sYmFyRmxhZyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGUtdG9wMlwiKV06XHJcbiAgICAgICAgICAgICAgICAgICAgICB0b29sYmFyRmxhZyAmJiAhdG9vbEZsYWcsXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IHRhYmxlQ29udGVudEhlaWdodCB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxUYWJsZVxyXG4gICAgICAgICAgICAgICAgICByZWY9e3RoaXMudGFibGVSZWZ9XHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbnM9e3RhYmxlQ29sdW1ufVxyXG4gICAgICAgICAgICAgICAgICBleHBhbmRhYmxlPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kSWNvbjogKHsgZXhwYW5kZWQsIG9uRXhwYW5kLCByZWNvcmQgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7ZXhwYW5kZWQgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2hpbGROb2RlcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzPy5sZW5ndGggPiAwID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPERvd25PdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gb25FeHBhbmQocmVjb3JkLCBlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJleHBhbmQtaWNvblwiKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHJlY29yZC5jaGlsZE5vZGVzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2hpbGROb2Rlcz8ubGVuZ3RoID4gMCA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWdodE91dGxpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBvbkV4cGFuZChyZWNvcmQsIGUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImV4cGFuZC1pY29uXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgLi4uZXhwYW5kYWJsZSxcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgY29sdW1uT3JkZXI9e3RydWV9XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsocGFnaW5hdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgY3VycmVudFBhZ2UgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQYWdlICE9PSBwYWdpbmF0aW9uLmN1cnJlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UGFnZTogcGFnaW5hdGlvbi5jdXJyZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICB0b29sYmFyPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgb25Ub29sQ2xpY2s6IHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9uUmVmcmVzaDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlTG9hZChwYXJhbXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLnRhYmxlUHJvcHMudG9vbGJhcixcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgc2hvd1Jvd1NlbGVjdGlvbj17c2hvd1Jvd1NlbGVjdGlvbn1cclxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgaGVpZ2h0OiB0YWJsZUhlaWdodCB9fVxyXG4gICAgICAgICAgICAgICAgICB7Li4udGFibGVQYXJhbXN9XHJcbiAgICAgICAgICAgICAgICAgIC8vIHBhZ2luYXRpb249e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIHsvKiA8ZGl2PjwvZGl2PiAqL31cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIHtlZGl0b3JGb3JtICYmIChcclxuICAgICAgICAgICAgPEVkaXRvckZvcm1cclxuICAgICAgICAgICAgICByZWY9e3RoaXMuZWRpdG9yUmVmfVxyXG4gICAgICAgICAgICAgIGNhbGxCYWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblN1bWJpdENhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uU3VtYml0Q2FsbEJhY2soKTtcclxuICAgICAgICAgICAgICAgIHRoaXMudGFibGVSZWxvYWQoKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGZvcm1Qcm9wcz17ZWRpdG9yRm9ybXN9XHJcbiAgICAgICAgICAgICAgc3VibWl0VXJsPXtzdWJtaXRVcmx9XHJcbiAgICAgICAgICAgICAgc3VibWl0UGFyYW1zPXtzdWJtaXRQYXJhbXN9XHJcbiAgICAgICAgICAgICAgb25TdWJtaXQ9e3RoaXMucHJvcHMub25TdWJtaXR9XHJcbiAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtkZWZhdWx0VmFsdWV9XHJcbiAgICAgICAgICAgICAgb25IaWRlRm9ybT17dGhpcy5wcm9wcy5vbkhpZGVGb3JtfVxyXG4gICAgICAgICAgICAgIG9uRm9ybUNoYW5nZT17dGhpcy5wcm9wcy5vbkZvcm1DaGFuZ2V9XHJcbiAgICAgICAgICAgICAgZm9ybVR5cGU9e3RoaXMucHJvcHMuZm9ybVR5cGUgfHwgXCJhdXRvXCJ9XHJcbiAgICAgICAgICAgICAgY2hhbmdlVmFsaWQ9e2Zvcm1DaGFuZ2VWYWxpZH1cclxuICAgICAgICAgICAgICBvdGhlclByb3BzPXt7IC4uLmZvcm1Qcm9wcyB9fVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBCYXNlUGFnZTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU9BLEtBQUssSUFBSUMsYUFBYSxRQUFtQixPQUFPO0FBQ3ZELE9BQU9DLEtBQUssTUFBTSxrQkFBa0I7QUFDcEMsT0FBT0MsSUFBSSxNQUFNLGlCQUFpQjtBQUNsQyxPQUFPQyxNQUFNLE1BQU0sbUJBQW1CO0FBQ3RDLE9BQU9DLEtBQUssTUFBTSxrQkFBa0I7QUFDcEMsT0FBT0MsT0FBTyxNQUFNLG9CQUFvQjtBQUN4QyxPQUFPQyxPQUFPLE1BQU0sb0JBQW9CO0FBQ3hDLE9BQU9DLFVBQVUsTUFBTSxRQUFRO0FBQy9CLE9BQU9DLEdBQUcsTUFBTSxZQUFZO0FBQzVCLE9BQU8scUJBQXFCO0FBRTVCLFNBQVNDLEtBQUssUUFBUSx1QkFBdUI7QUFDN0MsU0FDRUMsWUFBWSxFQUNaQyxXQUFXLEVBQ1hDLFlBQVksRUFDWkMsYUFBYSxFQUNiQyxZQUFZLEVBQ1pDLGdCQUFnQixFQUNoQkMsY0FBYyxRQUNULG1CQUFtQjtBQUMxQixTQUFTQyxPQUFPLFFBQWlCLGFBQWE7QUFDOUMsT0FBT0MsT0FBTyxNQUFNLGFBQWE7QUFFakMsT0FBT0MsTUFBTSxNQUFNLGNBQWM7QUFDakMsU0FBU0MsVUFBVSxRQUFlLG1CQUFtQjtBQUVyRCxPQUFPQyxZQUFZLE1BQU0saUJBQWlCO0FBWTFDLE1BQU1DLE1BQU0sR0FBRyxJQUFJO0FBMERuQixNQUFNQyxRQUFRLFNBQVN2QixhQUFhLENBQXdCO0VBTzFEd0IsV0FBV0EsQ0FBQ0MsS0FBVSxFQUFFO0lBQUEsSUFBQUMsS0FBQSxFQUFBQyxLQUFBO0lBQ3RCLEtBQUssQ0FBQ0YsS0FBSyxDQUFDO0lBQUNHLGVBQUEsZ0NBUEo3QixLQUFLLENBQUM4QixTQUFTLENBQU0sQ0FBQztJQUFBRCxlQUFBLCtCQUN2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
|
|
976
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsInV0aWxzIiwiRG93bk91dGxpbmVkIiwiRXllT3V0bGluZWQiLCJFZGl0T3V0bGluZWQiLCJSaWdodE91dGxpbmVkIiwiUGx1c091dGxpbmVkIiwiRWxsaXBzaXNPdXRsaW5lZCIsIkRlbGV0ZU91dGxpbmVkIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiSGVhZGVyU2VhcmNoIiwic3R5bGVzIiwiQmFzZVBhZ2UiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX3R5cGUiLCJfc2l6ZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsImNoZWNrZWRUcmVlS2V5cyIsIm5hbWUiLCJ1c2VyVHlwZSIsImFjY291bnQiLCJzdGF0ZSIsInZhbHVlIiwiZGVwdElkIiwib25TZWFyY2giLCJzZWxlY3RlZCIsInJlcyIsImtleSIsImtleXMiLCJsZW5ndGgiLCJzdG9yZVByZWZpeCIsInR5cGUiLCJjb250ZW50Iiwic2l6ZSIsInNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93RGF0YXMiLCJ0cmVlU2VsZWN0ZWRLZXkiLCJleHBhbmQiLCJmb3JtVHlwZSIsInRhYmxlU2l6ZSIsInRyZWVTZWFyY2hQcmFtcyIsInBvcG9wZW5zIiwibW9yZU9wZW4iLCJlbGVtZW50SGVpZ2h0IiwiY29tcG9uZW50RGlkTW91bnQiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQiLCJpbml0RGF0YSIsInBhZ2VSZWYiLCJjdXJyZW50IiwiY2xpZW50SGVpZ2h0Iiwic2V0U3RhdGUiLCJjb21wb25lbnREaWRVcGRhdGUiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQyIiwic2V0U2VhcmNoUGFyYW1zIiwicGFyYW1zIiwiY2FsbEJhY2siLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUiLCJzZWFyY2hSZWYiLCJkb1N1Ym1pdCIsImRhdGEiLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUiLCJsYWJlbCIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsImVkaXRvclJlZiIsInNob3dGb3JtIiwiX3RoaXMkZWRpdG9yUmVmIiwiZWRpdG9yZmxhZyIsIm5ld1ZhbHVlIiwiX29iamVjdFNwcmVhZCIsInNob3ciLCJoaWRlRm9ybSIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTIiLCJzZXRMb2FkaW5nIiwibG9hZGluZyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTMiLCJzZXRFZGl0Rm9ybVZhbHVlcyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTQiLCJzZXRGaWVsZHNWYWx1ZSIsImdldEVkaXRGb3JtVmFsdWVzIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlNSIsImdldEZpZWxkc1ZhbHVlIiwib25EZWxldGUiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4iLCJkZWxldGVVcmwiLCJkZWxldGVQYXJhbXMiLCJkZWxldGVQb3NpdGlvbiIsIl90aGlzIiwidGFibGVSZWYiLCJnZXRTZWxlY3RlZFJvd0tleXMiLCJ3YXJuaW5nIiwiY29uZmlybSIsIm9uT2siLCJFcnJvciIsImRlZmF1bHRQYXJhbXMiLCJtZXRob2QiLCJhdXRvUHJlZml4IiwiaWRzIiwiam9pbiIsImlkIiwicmVxdWVzdFBhcmFtcyIsInRoZW4iLCJjb2RlIiwiX3RoaXMkc2VhcmNoUmVmIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMiIsInN1Y2Nlc3MiLCJnZXRTZWFyY2hWYWx1ZXMiLCJvbkNhbGxCYWNrcyIsIm9uRGVsZXRlQ2FsbEJhY2siLCJ0YWJsZUxvYWQiLCJlcnJvciIsImNhdGNoIiwiY29uc29sZSIsImxvZyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjIiLCJyZXF1ZXN0Q29uZmlnIiwic3RvcmUiLCJsb2FkIiwib25TZWFyY2hDYWxsQmFjayIsImNhbGxiYWNrIiwidGFibGVSZWxvYWQiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4zIiwiYXV0b0xvYWQiLCJyZWxvYWQiLCJfcmVzJGRhdGEiLCJyZWNvcmRzIiwiY3VycmVudFBhZ2UiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW40IiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNSIsImdldFNlbGVjdGVkUm93RGF0YXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW42Iiwic2V0U2VsZWN0ZWRSb3dLZXlzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNyIsInNldFNlbGVjdGVkUm93RGF0YXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW44IiwicmVzZXRTZWxlY3RlZFJvd0tleXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW45IiwiX3RoaXMkc2VhcmNoUmVmMiIsImZyb21WYWx1ZSIsImdldENoaWxkcmVuRGF0YSIsInRhYmxlUHJvcHMiLCJyb3dLZXkiLCJyZXNLZXkiLCJjaGlsZE5vZGVzIiwiY2hpbGRyZW4iLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJyZW5kZXJUb29sQnV0dG9ucyIsInRvb2xidXR0b25zIiwidG9vbGJhckZsYWciLCJmbGFnIiwic2hvd1NlYXJjaCIsIl9pdGVtJHByb3BzIiwicGFnZVR5cGUiLCJvbkNsaWNrIiwiaWNvbiIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJfZXh0ZW5kcyIsInN0eWxlIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0IiwidGl0bGUiLCJwbGFjZW1lbnQiLCJvcGVuIiwib25PcGVuQ2hhbmdlIiwicmVuZGVyQ2xvdW1uQnV0dG9uIiwiY29sdW1uQnV0dG9ucyIsInJlY29yZCIsImFjdGlvblByb3BzIiwiYmFzZUFjdGlvbkNvbHVtbiIsIm5ld0J1dHRvbnMiLCJzaG93SWNvbiIsIl9pdGVtJHByb3BzMiIsInJlY29yZFNob3ciLCJfZXhjbHVkZWQyIiwiZXZhbCIsInB1c2giLCJudW1iZXIiLCJidXR0b25OdW1iZXIiLCJfaXRlbSRwcm9wczMiLCJfZXhjbHVkZWQzIiwiTnVtYmVyIiwiX2l0ZW0kcHJvcHM0IiwiX2V4Y2x1ZGVkNCIsInRyaWdnZXIiLCJ0cmVlU2VsZWN0Iiwic2VsZWN0ZWRLZXlzIiwib2JqIiwiX3RoaXMkc2VhcmNoUmVmMyIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzMiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM0Iiwia2V5d29yZCIsInNlYXJjaEtleSIsInNlYXJjaEZpZWxkIiwicGFyYW50U2VsZWN0IiwidHJlZVByb3BzIiwic2VsZWN0ZWROb2RlcyIsImRhdGFyZWYiLCJhdHRyaWJ1dGUiLCJpc0xlYWYiLCJvblRyZWVTZWxlY3QiLCJ0cmVlU2VsZWN0Q2FsbEJhY2siLCJyZXNldFNlYXJjaCIsIl90aGlzJHNlYXJjaFJlZiRjdXJyZTIiLCJyZXNldEZpZWxkcyIsImdldFRleHQiLCJ0ZXh0IiwiX3Byb3BzJGRhdGEiLCJuZXdUZXh0IiwiaSIsInNldFRhYmxlRGF0YSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjEwIiwic2V0RGF0YSIsInNldFRyZWVEYXRhIiwiX3RoaXMkdHJlZVJlZiRjdXJyZW50IiwidHJlZVJlZiIsInJlbmRlciIsIl90YWJsZVByb3BzJHRvb2xiYXIiLCJfdGFibGVQcm9wcyR0b29sYmFyMiIsImNvbHVtbnMiLCJzdWJtaXRVcmwiLCJmb3JtUHJvcHMiLCJzaG93TGVmdCIsInN1Ym1pdFBhcmFtcyIsInNob3dUb29sQnV0dG9uIiwiYnV0dG9ucyIsImVkaXRvckZvcm0iLCJvblNob3dGb3JtIiwiZm9ybUNoYW5nZVZhbGlkIiwidG9vbEJ1dHRvblBvc2l0aW9uIiwiZmlsdGVyQ29sdW1uIiwiYWN0aW9uQ29sdW1uIiwic2hvd1Jvd1NlbGVjdGlvbiIsImNvbHVtbk9yZGVyIiwiZXhwYW5kYWJsZSIsInRhYmxlVGl0bGUiLCJvdGhlcnRhYmxlUGFyYW1zIiwiX2V4Y2x1ZGVkNSIsInRyZWVTdG9yZSIsInRyZWVTZWFyY2giLCJ0aXRsZUFsaWFzIiwidHJlZVRpdGxlIiwib3RoZXJ0cmVlUGFyYW1zIiwiX2V4Y2x1ZGVkNiIsInRhYmxlUGFyYW1zIiwidGFibGVDb2x1bW4iLCJzZWFyY2hGb3JtcyIsImVkaXRvckZvcm1zIiwiZGVmYXVsdFZhbHVlIiwiX3RlbXAkc2VhcmNoIiwiX3RlbXAkcHJvcHMiLCJfdGVtcCRwcm9wczIiLCJfdGVtcFByb3AkZGF0YSIsIl90ZW1wIiwidGVtcCIsIndpZHRoIiwic2VhcmNoIiwiX3RlbXAkc2VhcmNoMiIsIl90ZW1wJHNlYXJjaDMiLCJfdGVtcCRzZWFyY2g0IiwiZmllbGQiLCJkYXRhSW5kZXgiLCJsYWJlbENvbCIsIndyYXBwZXJDb2wiLCJydWxlcyIsInNlYXJjaFJ1bGVzIiwiZWRpdG9yIiwic3BhbiIsImRpY3ROYW1lIiwiX3RlbXAkcHJvcHMzIiwiY29sdW1uU2VhcmNoIiwiZmlsdGVyUHJvcHMiLCJ0ZW1wUHJvcCIsImVsbGlwc2lzIiwic2hvd1RpdGxlIiwiY29sdW1uU2hvdyIsInNlbGZCdXR0b25zIiwiaW5kZXhPZiIsImJpbmQiLCJkYW5nZXIiLCJBcnJheSIsImlzQXJyYXkiLCJjaGlsZCIsIl9jaGlsZCRwcm9wcyIsIl9jaGlsZCRwcm9wczIiLCJfY2hpbGQkcHJvcHMzIiwiX2l0ZW0kcHJvcHM1IiwiX2l0ZW0kcHJvcHM2IiwiX2l0ZW0kcHJvcHM3IiwiYWxpZ24iLCJ0ZXh0QWxpZ24iLCJmaXhlZCIsInJlYWNvcmQiLCJGcmFnbWVudCIsInNlYXJjaEZsYWciLCJ0YWJsZVRvb2wiLCJ0b29sRmxhZyIsInRvb2xiYXIiLCJ0b29scyIsInBhZ2VIZWlnaHQiLCJ0YWJsZUhlYWRlckhlaWdodCIsImhlYWRlckhlaWdodCIsInRvb2xIZWlnaHQiLCJwYWRkaW5nSGVpZ2h0IiwidGFibGVDb250ZW50SGVpZ2h0IiwidGFibGVIZWlnaHQiLCJ0YWJsZVNyb2xsSGVpZ2h0IiwicGFnaW5hdGlvbiIsInNjcm9sbCIsIngiLCJ5IiwicmVmIiwicGFnZVRpdGxlIiwiZGlzcGxheSIsImNoZWNrYWJsZSIsInNlYXJjaGFibGUiLCJvblNlbGVjdCIsIm9uUmVzZXQiLCJzZWFyY2hGb3JtUHJvcHMiLCJoZWlnaHQiLCJleHBhbmRJY29uIiwiX3JlZiIsIl9yZWNvcmQkY2hpbGROb2RlcyIsIl9yZWNvcmQkY2hpbGROb2RlczIiLCJleHBhbmRlZCIsIm9uRXhwYW5kIiwiZSIsIm9uQ2hhbmdlIiwib25Ub29sQ2xpY2siLCJvblJlZnJlc2giLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM1IiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNiIsIm9uU3VtYml0Q2FsbEJhY2siLCJvblN1Ym1pdCIsIm9uSGlkZUZvcm0iLCJvbkZvcm1DaGFuZ2UiLCJjaGFuZ2VWYWxpZCIsIm90aGVyUHJvcHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wYWdlL0Jhc2VQYWdlL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBUYWJsZSBmcm9tIFwiLi4vLi4vYmFzZS90YWJsZVwiO1xyXG5pbXBvcnQgVHJlZSBmcm9tIFwiLi4vLi4vYmFzZS90cmVlXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBNb2RhbCBmcm9tIFwiLi4vLi4vYmFzZS9tb2RhbFwiO1xyXG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwiLi4vLi4vYmFzZS9wb3BvdmVyXCI7XHJcbmltcG9ydCBtZXNzYWdlIGZyb20gXCIuLi8uLi9iYXNlL21lc3NhZ2VcIjtcclxuaW1wb3J0IEVkaXRvckZvcm0gZnJvbSBcIi4vRm9ybVwiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFBhZ2VTdG9yZSwgU3RvcmVQcm9wcyB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICBEb3duT3V0bGluZWQsXHJcbiAgRXllT3V0bGluZWQsXHJcbiAgRWRpdE91dGxpbmVkLFxyXG4gIFJpZ2h0T3V0bGluZWQsXHJcbiAgUGx1c091dGxpbmVkLFxyXG4gIEVsbGlwc2lzT3V0bGluZWQsXHJcbiAgRGVsZXRlT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IHJlcXVlc3QgZnJvbSBcIm5zYy1yZXF1ZXN0XCI7XHJcbmltcG9ydCBvbWl0IGZyb20gXCJvbWl0LmpzXCI7XHJcbmltcG9ydCBjb25maWcgZnJvbSBcIi4uLy4uL2NvbmZpZ1wiO1xyXG5pbXBvcnQgeyBnZXRTdG9yYWdlLCBweDJ2dyB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgeyBJRm9ybVByb3BzIH0gZnJvbSBcIi4uLy4uL2Jhc2UvZm9ybS9Gb3JtXCI7XHJcbmltcG9ydCBIZWFkZXJTZWFyY2ggZnJvbSBcIi4uL0hlYWRlclNlYXJjaFwiO1xyXG5pbXBvcnQgeyBQYWdpbmF0aW9uUHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgeyBudW1iZXIgfSBmcm9tIFwiZWNoYXJ0c1wiO1xyXG5pbnRlcmZhY2UgVGFibGVQcm9wcyB7XHJcbiAgYWN0aW9uQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmk43kvZzliJdcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgZmlsdGVyQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrov4fmu6TmjInpkq5cclxuICBzaG93Um93U2VsZWN0aW9uPzogYm9vbGVhbjsgLy/mmK/lkKbooajmoLzli77pgInliJdcclxuICBwYWdpbmF0aW9uPzogYm9vbGVhbiB8IFBhZ2luYXRpb25Qcm9wczsgLy/mmK/lkKbmmL7npLrliIbpobVcclxuICBjb2x1bW5PcmRlcj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S66KGo5qC85bqP5YiXXHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmNvbnN0IHN0eWxlcyA9IG51bGw7XHJcbmludGVyZmFjZSBUcmVlUHJvcHMge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBzaG93U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmkJzntKLmoYZcclxuICBzZWFyY2hLZXk/OiBzdHJpbmc7IC8v5pCc57SidmFsdWXlr7nlupTnmoRrZXlcclxuICBzZWFyY2hGaWVsZD86IHN0cmluZzsgLy/mn6Xor6Llr7nlupTnmoRrZXlcclxuICB0aXRsZUFsaWFzPzogc3RyaW5nOyAvL+agkXRpdGxl5a+55bqU55qEa2V5LOm7mOiupHRpdGxlXHJcbiAgbm9kZVBvcnBzPzogb2JqZWN0O1xyXG4gIHBhcmFudFNlbGVjdD86IGJvb2xlYW47XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmludGVyZmFjZSBGb3JtUHJvcHMgZXh0ZW5kcyBJRm9ybVByb3BzIHt9XHJcbmludGVyZmFjZSBOU0NCYXNlQmFnZVByb3BzIHtcclxuICBzaG93U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrlpLTpg6jmkJzntKLmoI9cclxuICB0YWJsZVByb3BzPzogVGFibGVQcm9wczsgLy/ooajmoLzlj4LmlbBcclxuICB0cmVlUHJvcHM/OiBUcmVlUHJvcHM7IC8v5bem5L6n5qCR5Y+C5pWwXHJcbiAgc3VibWl0UGFyYW1zPzogT2JqZWN0OyAvL+a3u+WKoOWPguaVsO+8jOm7mOiupG1vdGhvZDpwb3N077yMIOWPguaVsOmAmui/h2RhdGHkvKDpgJJcclxuICBzdWJtaXRVcmw/OiBzdHJpbmc7XHJcbiAgb25TdWJtaXQ/OiAodmFsdWU/OiBhbnksIGxhYmVsPzogYW55KSA9PiB2b2lkO1xyXG4gIGNvbHVtbnM6IEFycmF5PE9iamVjdD47XHJcbiAgc2hvd0xlZnQ/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuW3puS+p+ebruW9leagkVxyXG4gIHNob3dUb29sQnV0dG9uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmjInpkq7moI9cclxuICBlZGl0b3JGb3JtPzogYm9vbGVhbjsgLy/mmK/lkKbpnIDopoHooajljZXlip/og70gLCDkuLpmYWxzZSDnvJbovpHvvIzmn6XnnIvvvIzmlrDlop7lip/og73lnYfkuI3lj6/nlKhcclxuICBkZWxldGVVcmw/OiBzdHJpbmc7IC8v5Yig6ZmkdXJsXHJcbiAgb25EZWxldGU/OiAoc2VsZWN0ZWRLZXlzPzogQXJyYXk8c3RyaW5nPikgPT4gdm9pZDsgLy/liKDpmaTlj4LmlbDvvIzpu5jorqRtb3Rob2Q6cG9zdO+8jCDlj4LmlbDpgJrov4dpZHPmi7zmjqXkvKDpgJLnu5nlkI7lj7BcclxuICBkZWxldGVQb3NpdGlvbj86IFwidG9vbGJhclwiIHwgXCJyb3dcIjtcclxuICBkZWxldGVQYXJhbXM/OiBPYmplY3Q7XHJcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XHJcbiAgb25TZWFyY2g/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgb25SZXNldD86ICgpID0+IHZvaWQ7XHJcbiAgaW5pdERhdGE/OiBhbnk7IC8v5Yid5aeL5YyW5Zue6LCD5Ye95pWw77yM5ZyoY29tcG9uZW50RGlkTW91bnTkuK3osIPnlKhcclxuICBidXR0b25zPzogQXJyYXk8c3RyaW5nPjsgLy/mjInpkq7pm4blkIggIFsnYWRkJywnZGVsZXRlJywnc2VhcmNoJywnZWRpdG9yJ11cclxuICBvblNob3dGb3JtPzogKHZhbHVlPzogYW55LCBlZGl0b3JGbGFnPzogc3RyaW5nKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uSGlkZUZvcm0/OiAoKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uRm9ybUNoYW5nZT86IChjaGFuZ2VkVmFsdWVzPzogYW55LCBhbGxWYWx1ZXM/OiBhbnkpID0+IHZvaWQ7IC8v6KGo5Y2Vb25DaGFuZ2Xlm57osINcclxuICBmb3JtVHlwZT86IFwibW9kYWxcIiB8IFwiZHJhd2VyXCI7XHJcbiAgZm9ybUNoYW5nZVZhbGlkPzogYm9vbGVhbjsgLy/ooajljZXmoKHpqoxcclxuICBjbGFzc05hbWU/OiBhbnk7XHJcbiAgdG9vbEJ1dHRvblBvc2l0aW9uPzogXCJyaWdodFwiIHwgXCJidXR0b21cIjtcclxuICBwYWdlVGl0bGU/OiBzdHJpbmcgfCBSZWFjdE5vZGU7XHJcbiAgZm9ybVByb3BzPzogRm9ybVByb3BzO1xyXG4gIGFjdGlvblByb3BzPzoge1xyXG4gICAgdGV4dEFsaWduPzogc3RyaW5nO1xyXG4gICAgc2hvd0ljb24/OiBib29sZWFuO1xyXG4gICAgd2lkdGg/OiBudW1iZXI7XHJcbiAgICBidXR0b25OdW1iZXI/OiBudW1iZXIgfCBcImFsbFwiO1xyXG4gIH07XHJcbiAgc2VhcmNoRm9ybVByb3BzPzogeyB3cmFwcGVyQ29sPzogYW55OyBsYWJlbENvbD86IGFueSB9O1xyXG4gIG9uVHJlZVNlbGVjdD86ICh2YWx1ZT86IGFueSwgZWRpdG9yRmxhZz86IHN0cmluZykgPT4gdm9pZDsgLy/miZPlvIDooajljZXlm57osINcclxuICBvbkNhbGxCYWNrcz86IHtcclxuICAgIHRyZWVTZWxlY3RDYWxsQmFjaz86IGFueTtcclxuICAgIG9uU2VhcmNoQ2FsbEJhY2s/OiBhbnk7XHJcbiAgICBvblN1bWJpdENhbGxCYWNrPzogYW55O1xyXG4gICAgb25EZWxldGVDYWxsQmFjaz86IGFueTtcclxuICB9O1xyXG4gIHBhZ2VUeXBlPzogXCJub3JtYWxcIiB8IFwidGFic3BhZ2VcIjtcclxufVxyXG5cclxuY2xhc3MgQmFzZVBhZ2UgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PE5TQ0Jhc2VCYWdlUHJvcHMsIGFueT4ge1xyXG4gIHRhYmxlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICB0cmVlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBzZWFyY2hSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIGVkaXRvclJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgcGFnZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICBjb25zdHJ1Y3Rvcihwcm9wczogYW55KSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBsZXQgeyBzdG9yZVByZWZpeCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdHlwZSA9IGdldFN0b3JhZ2UoXHJcbiAgICAgIHN0b3JlUHJlZml4ID8gc3RvcmVQcmVmaXggKyBcIi1cIiArIFwiZm9ybVR5cGVcIiA6IFwiZm9ybVR5cGVcIlxyXG4gICAgKTtcclxuICAgIHR5cGUgPSB0eXBlPy5jb250ZW50O1xyXG4gICAgbGV0IHNpemUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCItXCIgKyBcInRhYmxlU2l6ZVwiIDogXCJ0YWJsZVNpemVcIlxyXG4gICAgKTtcclxuICAgIHNpemUgPSBzaXplPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgdHlwZTogXCJhZGRcIixcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICAgIHRyZWVTZWxlY3RlZEtleTogXCJcIixcclxuICAgICAgZXhwYW5kOiBmYWxzZSxcclxuICAgICAgZm9ybVR5cGU6IHR5cGUgfHwgXCJtb2RhbFwiLFxyXG4gICAgICB0YWJsZVNpemU6IHNpemUgfHwgXCJkZWZhdWx0XCIsXHJcbiAgICAgIHRyZWVTZWFyY2hQcmFtczoge30sXHJcbiAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgICAgbW9yZU9wZW46IGZhbHNlLFxyXG4gICAgICBlbGVtZW50SGVpZ2h0OiAwLFxyXG4gICAgfTtcclxuICB9XHJcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IGluaXREYXRhIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZWxlbWVudEhlaWdodCA9IHRoaXMucGFnZVJlZi5jdXJyZW50Py5jbGllbnRIZWlnaHQ7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZWxlbWVudEhlaWdodCxcclxuICAgIH0pO1xyXG4gICAgaW5pdERhdGEgJiYgaW5pdERhdGEoKTtcclxuICB9XHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xyXG4gICAgY29uc3QgZWxlbWVudEhlaWdodCA9IHRoaXMucGFnZVJlZi5jdXJyZW50Py5jbGllbnRIZWlnaHQ7XHJcbiAgICBpZiAoZWxlbWVudEhlaWdodCA+IHRoaXMuc3RhdGUuZWxlbWVudEhlaWdodCkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBlbGVtZW50SGVpZ2h0LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgc2V0U2VhcmNoUGFyYW1zKHBhcmFtcywgY2FsbEJhY2spIHtcclxuICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnNldFNlYXJjaFBhcmFtcyhwYXJhbXMpO1xyXG4gICAgY2FsbEJhY2sgJiYgY2FsbEJhY2socGFyYW1zKTtcclxuICB9XHJcbiAgZG9TdWJtaXQoZGF0YSwgbGFiZWwgPSBcIue8lui+kVwiKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5kb1N1Ym1pdChkYXRhLCBsYWJlbCk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdCA9IChjaGVja2VkVHJlZUtleXM6IGFueSkgPT4ge1xyXG4gICAgY29uc3QgeyBuYW1lLCB1c2VyVHlwZSwgYWNjb3VudCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHZhbHVlID0geyBuYW1lLCB1c2VyVHlwZSwgYWNjb3VudCwgZGVwdElkOiBjaGVja2VkVHJlZUtleXNbMF0gfTtcclxuICAgIGlmICh0aGlzLnByb3BzLm9uU2VhcmNoKSB7XHJcbiAgICAgIHRoaXMucHJvcHMub25TZWFyY2godmFsdWUpO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy50YWJsZUxvYWQodmFsdWUpO1xyXG4gIH07XHJcblxyXG4gIC8v5pi+56S66KGo5Y2VXHJcbiAgc2hvd0Zvcm0odmFsdWU/OiBhbnksIGVkaXRvcmZsYWcgPSBcImFkZFwiKSB7XHJcbiAgICBsZXQgbmV3VmFsdWUgPSB2YWx1ZSA/IHsgLi4udmFsdWUgfSA6IG51bGw7XHJcbiAgICB0aGlzLmVkaXRvclJlZj8uY3VycmVudD8uc2hvdyhuZXdWYWx1ZSwgZWRpdG9yZmxhZyk7XHJcbiAgfVxyXG5cclxuICAvL+WFs+mXreihqOWNlVxyXG4gIGhpZGVGb3JtKCkge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICB9XHJcblxyXG4gIHNldExvYWRpbmcobG9hZGluZzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uc2V0TG9hZGluZyhsb2FkaW5nKTtcclxuICB9XHJcblxyXG4gIHNldEVkaXRGb3JtVmFsdWVzKHZhbHVlKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5zZXRGaWVsZHNWYWx1ZSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0Rm9ybVZhbHVlcygpIHtcclxuICAgIHJldHVybiB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5nZXRGaWVsZHNWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy/mibnph4/liKDpmaRcclxuICBvbkRlbGV0ZShkYXRhPzogYW55KSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGRlbGV0ZVVybCxcclxuICAgICAgb25EZWxldGUsXHJcbiAgICAgIGRlbGV0ZVBhcmFtcyxcclxuICAgICAgZGVsZXRlUG9zaXRpb24gPSBcInRvb2xiYXJcIixcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGNvbnN0IHNlbGVjdGVkUm93S2V5cyA9IHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgICBpZiAoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIpIHtcclxuICAgICAgaWYgKHNlbGVjdGVkUm93S2V5cy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgIG1lc3NhZ2Uud2FybmluZyhcIuivt+mAieaLqeimgeWIoOmZpOeahOaVsOaNru+8gVwiKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIE1vZGFsLmNvbmZpcm0oe1xyXG4gICAgICBjb250ZW50OiBcIuaYr+WQpuehruiupOWIoOmZpOaJgOmAiemhue+8n1wiLFxyXG4gICAgICAvLyBjZW50ZXJlZDp0cnVlLFxyXG4gICAgICBvbk9rOiAoKSA9PiB7XHJcbiAgICAgICAgaWYgKG9uRGVsZXRlKSB7XHJcbiAgICAgICAgICBvbkRlbGV0ZSAmJlxyXG4gICAgICAgICAgICBvbkRlbGV0ZShkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cyA6IGRhdGEpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWRlbGV0ZVVybCkge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidXJs5LiN6IO95Li656m677yBXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBkZWZhdWx0UGFyYW1zID0ge1xyXG4gICAgICAgICAgbWV0aG9kOiBcInBvc3RcIixcclxuICAgICAgICAgIGF1dG9QcmVmaXg6IHRydWUsXHJcbiAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgaWRzOiBkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cy5qb2luKCkgOiBkYXRhLmlkLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGxldCByZXF1ZXN0UGFyYW1zID0ge30gYXMgYW55O1xyXG4gICAgICAgIGlmIChkZWZhdWx0UGFyYW1zKSB7XHJcbiAgICAgICAgICByZXF1ZXN0UGFyYW1zID0geyAuLi5kZWxldGVQYXJhbXMgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVxdWVzdFBhcmFtcyA9IHsgLi4uZGVmYXVsdFBhcmFtcyB9O1xyXG4gICAgICAgIHJlcXVlc3QoZGVsZXRlVXJsLCB7XHJcbiAgICAgICAgICAuLi5yZXF1ZXN0UGFyYW1zLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgY29uc3QgeyBjb2RlIH0gPSByZXM7XHJcbiAgICAgICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLnN1Y2Nlc3MoXCLliKDpmaTmiJDlip/vvIFcIik7XHJcbiAgICAgICAgICAgICAgbGV0IHZhbHVlID0gX3RoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25EZWxldGVDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRGVsZXRlQ2FsbEJhY2soKTtcclxuICAgICAgICAgICAgICBfdGhpcy50YWJsZUxvYWQodmFsdWUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoXCLliKDpmaTlpLHotKXvvIFcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yOiBhbnkpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlcnJvcik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICB0YWJsZUxvYWQocGFyYW1zOiBhbnksIHJlcXVlc3RDb25maWcgPSB7fSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZS5sb2FkKHtcclxuICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgcGFyYW1zOiBwYXJhbXMsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy/mn6Xor6JcclxuICBvblNlYXJjaChwYXJhbXMpIHtcclxuICAgIGNvbnN0IHsgb25TZWFyY2gsIG9uQ2FsbEJhY2tzIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKG9uU2VhcmNoKSB7XHJcbiAgICAgIG9uU2VhcmNoKHsgLi4ucGFyYW1zLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy50YWJsZUxvYWQoeyAuLi5wYXJhbXMsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH0pO1xyXG4gICAgb25DYWxsQmFja3M/Lm9uU2VhcmNoQ2FsbEJhY2sgJiZcclxuICAgICAgdXRpbHMuY2FsbGJhY2sob25DYWxsQmFja3M/Lm9uU2VhcmNoQ2FsbEJhY2ssIHRoaXMsIFtwYXJhbXNdKTtcclxuICB9XHJcbiAgLy/ooajmoLzph43mlrDliqDovb1cclxuICB0YWJsZVJlbG9hZChwYXJhbXMgPSB7fSwgYXV0b0xvYWQgPSB0cnVlKSB7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5yZWxvYWQoe1xyXG4gICAgICBjYWxsYmFjazogKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGF1dG9Mb2FkICYmXHJcbiAgICAgICAgICByZXM/LmRhdGE/LnJlY29yZHM/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICB0aGlzLnN0YXRlLmN1cnJlbnRQYWdlICE9PSAxXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5yZWxvYWQoe1xyXG4gICAgICAgICAgICBwYXJhbXM6IHsgY3VycmVudDogMSwgLi4ucGFyYW1zIH0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93RGF0YXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0RhdGFzKCk7XHJcbiAgfVxyXG4gIHNldFNlbGVjdGVkUm93S2V5cyhkYXRhOiBBcnJheTxTdHJpbmcgfCBOdW1iZXI+KSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zZXRTZWxlY3RlZFJvd0tleXMoZGF0YSk7XHJcbiAgfVxyXG4gIHNldFNlbGVjdGVkUm93RGF0YXMoZGF0YTogQXJyYXk8T2JqZWN0Pikge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uc2V0U2VsZWN0ZWRSb3dEYXRhcyhkYXRhKTtcclxuICB9XHJcbiAgcmVzZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5yZXNldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VhcmNoVmFsdWVzKCkge1xyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgcmV0dXJuIHsgLi4uZnJvbVZhbHVlLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hpbGRyZW5EYXRhKGRhdGEsIGtleXMgPSBbXSkge1xyXG4gICAgY29uc3QgeyB0YWJsZVByb3BzIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgcmVzS2V5ID0gW107XHJcbiAgICBpZiAoZGF0YS5jaGlsZE5vZGVzKSB7XHJcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gZGF0YS5jaGlsZE5vZGVzO1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0uY2hpbGROb2Rlcykge1xyXG4gICAgICAgICAgdGhpcy5nZXRDaGlsZHJlbkRhdGEoaXRlbS5jaGlsZE5vZGVzLCBrZXlzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVzS2V5ID0gWy4uLmtleXMsIGl0ZW1bcm93S2V5XV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlc0tleSA9IFsuLi5rZXlzLCBkYXRhW3Jvd0tleV1dO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc0tleTtcclxuICB9XHJcblxyXG4gIHJlbmRlclRvb2xCdXR0b25zKHRvb2xidXR0b25zOiBhbnksIHRvb2xiYXJGbGFnKSB7XHJcbiAgICBjb25zdCBmbGFnID0gdG9vbGJ1dHRvbnMubGVuZ3RoID4gNTtcclxuICAgIC8vIHRvb2xidXR0b25zID0gWy4uLnRvb2xidXR0b25zXS5yZXZlcnNlKCk7XHJcbiAgICBjb25zdCB7IHNob3dTZWFyY2ggPSB0cnVlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgY29udGVudCA9IHRvb2xidXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCBpY29uLCBzaG93LCAuLi5wYXJhbXMgfSA9IGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChpbmRleCA+IDMpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgIG1vcmVPcGVuOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdG9vbC1idXR0b25zXCIpKX1cclxuICAgICAgICBzdHlsZT17eyBtYXJnaW5MZWZ0OiAwIH19XHJcbiAgICAgID5cclxuICAgICAgICB7dG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA8IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpblJpZ2h0OiAxMixcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge2l0ZW19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgICAgICAgICAgdGl0bGU9e251bGx9XHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgIG9wZW49e3RoaXMuc3RhdGUubW9yZU9wZW59XHJcbiAgICAgICAgICAgICAgICAgIG9uT3BlbkNoYW5nZT17KG9wZW4pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob3Blbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVPcGVuOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3JlT3BlbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIC8vIG9wZW49e3RydWV9XHJcbiAgICAgICAgICAgICAgICAgIC8vIG92ZXJsYXlDbGFzc05hbWU9e3N0eWxlc1sncG9wLWJveCddfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHR5cGU9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAg5pu05aSaIDxEb3duT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6IGluZGV4ID09IHRvb2xidXR0b25zLmxlbmd0aCAtIDEgPyAwIDogMTIsXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHtpdGVtfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG4gIHJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zOiBhbnksIHJlY29yZDogYW55KSB7XHJcbiAgICBjb25zdCB7IGFjdGlvblByb3BzIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBiYXNlQWN0aW9uQ29sdW1uIH0gPSBjb25maWcoKTtcclxuICAgIGNvbnN0IG5ld0J1dHRvbnMgPSBbXTtcclxuICAgIGxldCBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBpZiAoYWN0aW9uUHJvcHM/LnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGVsc2UgaWYgKGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgY29sdW1uQnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgaWNvbiwgcmVjb3JkU2hvdywgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChyZWNvcmRTaG93KSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiByZWNvcmRTaG93ID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgIGlmIChldmFsKHJlY29yZFNob3cpKSB7XHJcbiAgICAgICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiByZWNvcmRTaG93ID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgY29uc3Qgc2hvdyA9IHJlY29yZFNob3cocmVjb3JkKTtcclxuICAgICAgICAgIHNob3cgJiYgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgbGV0IG51bWJlciA9IGFjdGlvblByb3BzPy5idXR0b25OdW1iZXJcclxuICAgICAgPyBhY3Rpb25Qcm9wcz8uYnV0dG9uTnVtYmVyXHJcbiAgICAgIDogYmFzZUFjdGlvbkNvbHVtbj8uYnV0dG9uTnVtYmVyXHJcbiAgICAgID8gYmFzZUFjdGlvbkNvbHVtbj8uYnV0dG9uTnVtYmVyXHJcbiAgICAgIDogMztcclxuICAgIGxldCBmbGFnID0gZmFsc2U7XHJcbiAgICBpZiAobnVtYmVyID09IFwiYWxsXCIpIHtcclxuICAgICAgZmxhZyA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZmxhZyA9IG5ld0J1dHRvbnMubGVuZ3RoID4gbnVtYmVyO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSBuZXdCdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCByZWNvcmRTaG93LCBpY29uLCBzaG93LCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGluZGV4ID4gTnVtYmVyKG51bWJlcikgLSAxKSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSxcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudC1pdGVtXCIpXHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBsZXQgZGF0YSA9IHsgLi4udGhpcy5zdGF0ZS5wb3BvcGVucyB9O1xyXG4gICAgICAgICAgICAgIGRhdGFbcmVjb3JkLmlkXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgcG9wb3BlbnM6IGRhdGEsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBuZXdCdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCByZWNvcmRTaG93LCBpY29uLCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICBpZiAoaW5kZXggPCBudW1iZXIpIHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLCB7XHJcbiAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvci1maXJzdFwiKV06IGluZGV4ID09PSAwLFxyXG4gICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICBpY29uPXtpY29ufVxyXG4gICAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgICAgdHlwZT17XCJsaW5rXCJ9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gbnVtYmVyKSB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgdGl0bGU9e251bGx9XHJcbiAgICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgICAgICB0cmlnZ2VyPXtbXCJjbGlja1wiXX1cclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgIG9wZW49e3RoaXMuc3RhdGUucG9wb3BlbnNbcmVjb3JkLmlkXSB8fCBmYWxzZX1cclxuICAgICAgICAgICAgICBvbk9wZW5DaGFuZ2U9eyhvcGVuKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAob3Blbikge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IHsgLi4udGhpcy5zdGF0ZS5wb3BvcGVucyB9O1xyXG4gICAgICAgICAgICAgICAgICBkYXRhW3JlY29yZC5pZF0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICBwb3BvcGVuczogZGF0YSxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICBwb3BvcGVuczoge30sXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgLy8gb3ZlcmxheUNsYXNzTmFtZT17c3R5bGVzWydwb3AnXX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxhIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKX0+XHJcbiAgICAgICAgICAgICAgICA8RWxsaXBzaXNPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvci1maXJzdFwiKV06IGluZGV4ID09PSAwLFxyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICB0eXBlPVwibGlua1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuICAvL+agkeeCueWHu+S6i+S7tlxyXG4gIHRyZWVTZWxlY3Qoc2VsZWN0ZWRLZXlzOiBhbnksIG9iajogYW55KSB7XHJcbiAgICBsZXQga2V5d29yZCA9IFwiXCI7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHNlYXJjaEtleSA9IFwia2V5XCIsXHJcbiAgICAgIHNlYXJjaEZpZWxkID0gXCJcIixcclxuICAgICAgcGFyYW50U2VsZWN0ID0gdHJ1ZSxcclxuICAgIH0gPSB0aGlzLnByb3BzLnRyZWVQcm9wcztcclxuICAgIGNvbnN0IHsgdHJlZVNlbGVjdGVkS2V5IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZCwgc2VsZWN0ZWROb2RlcyB9ID0gb2JqO1xyXG5cclxuICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICBrZXl3b3JkID0gc2VsZWN0ZWROb2Rlc1swXS5kYXRhcmVmLmF0dHJpYnV0ZVtzZWFyY2hLZXldO1xyXG4gICAgICBpZiAocGFyYW50U2VsZWN0KSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgIHRyZWVTZWFyY2hQcmFtczogeyBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkTm9kZXNbMF0uaXNMZWFmIHx8ICFzZWxlY3RlZE5vZGVzWzBdLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRLZXlzWzBdICE9PSB0cmVlU2VsZWN0ZWRLZXkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBzZWxlY3RlZEtleXNbMF0sXHJcbiAgICAgICAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7IFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IGtleXdvcmQsXHJcbiAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7fSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vblRyZWVTZWxlY3QpIHtcclxuICAgICAgdGhpcy5wcm9wcy5vblRyZWVTZWxlY3Qoc2VsZWN0ZWRLZXlzLCBvYmopO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCkgfHwge307XHJcbiAgICBzZWFyY2hGaWVsZCAmJiB0aGlzLnRhYmxlTG9hZCh7IC4uLmZyb21WYWx1ZSwgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9KTtcclxuICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjayAmJlxyXG4gICAgICB1dGlscy5jYWxsYmFjayh0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50cmVlU2VsZWN0Q2FsbEJhY2ssIHRoaXMsIFtcclxuICAgICAgICBzZWxlY3RlZEtleXMsXHJcbiAgICAgICAgb2JqLFxyXG4gICAgICBdKTtcclxuICB9XHJcbiAgcmVzZXRTZWFyY2goKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gIH1cclxuICBnZXRUZXh0KHByb3BzLCB0ZXh0KSB7XHJcbiAgICBsZXQgbmV3VGV4dCA9IHRleHQ7XHJcbiAgICBpZiAocHJvcHM/LmRhdGEgJiYgcHJvcHM/LmRhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGRhdGEgPSBwcm9wcy5kYXRhO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGE/Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGRhdGFbaV0udmFsdWUgPT0gdGV4dCkge1xyXG4gICAgICAgICAgbmV3VGV4dCA9IGRhdGFbaV0ubGFiZWw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3VGV4dDtcclxuICB9XHJcbiAgc2V0VGFibGVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnNldERhdGEoZGF0YSk7XHJcbiAgfVxyXG4gIHNldFRyZWVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudHJlZVJlZi5jdXJyZW50Py5zdG9yZT8uc2V0RGF0YShkYXRhKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRLZXkgPSAoc2VsZWN0ZWQpID0+IHtcclxuICAgIGxldCByZXMgPSBbXTtcclxuICAgIGZvciAobGV0IGtleSBpbiBzZWxlY3RlZCkge1xyXG4gICAgICBjb25zdCBrZXlzID0gc2VsZWN0ZWRba2V5XTtcclxuICAgICAgaWYgKGtleXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHJlcyA9IFsuLi5yZXMsIC4uLmtleXNdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH07XHJcblxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgY29sdW1ucyA9IFtdLFxyXG4gICAgICBzaG93U2VhcmNoID0gdHJ1ZSxcclxuICAgICAgY2hpbGRyZW4sXHJcbiAgICAgIHN1Ym1pdFVybCA9IFwiXCIsXHJcbiAgICAgIHRhYmxlUHJvcHMgPSB7fSxcclxuICAgICAgdHJlZVByb3BzID0ge30sXHJcbiAgICAgIGZvcm1Qcm9wcyA9IHt9LFxyXG4gICAgICBzaG93TGVmdCA9IGZhbHNlLFxyXG4gICAgICBzdWJtaXRQYXJhbXMgPSB7fSxcclxuICAgICAgc2hvd1Rvb2xCdXR0b24gPSB0cnVlLFxyXG4gICAgICBidXR0b25zID0gW10sXHJcbiAgICAgIGVkaXRvckZvcm0gPSB0cnVlLFxyXG4gICAgICBvblNob3dGb3JtLFxyXG4gICAgICBmb3JtQ2hhbmdlVmFsaWQgPSB0cnVlLFxyXG4gICAgICBjbGFzc05hbWUsXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9IFwiYnV0dG9tXCIsXHJcbiAgICAgIGFjdGlvblByb3BzLFxyXG4gICAgICBkZWxldGVQb3NpdGlvbiA9IFwidG9vbGJhclwiLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlLFxyXG4gICAgICBmaWx0ZXJDb2x1bW4gPSB0cnVlLFxyXG4gICAgICBhY3Rpb25Db2x1bW4gPSB0cnVlLFxyXG4gICAgICBzaG93Um93U2VsZWN0aW9uID0gdHJ1ZSxcclxuICAgICAgY29sdW1uT3JkZXIgPSB0cnVlLFxyXG4gICAgICBleHBhbmRhYmxlID0ge30sXHJcbiAgICAgIHBhcmFudFNlbGVjdCA9IHRydWUsXHJcbiAgICAgIHRpdGxlOiB0YWJsZVRpdGxlLFxyXG4gICAgICAuLi5vdGhlcnRhYmxlUGFyYW1zXHJcbiAgICB9ID0gdGFibGVQcm9wcztcclxuICAgIGNvbnN0IHtcclxuICAgICAgc3RvcmU6IHRyZWVTdG9yZSA9IHt9LFxyXG4gICAgICBzaG93U2VhcmNoOiB0cmVlU2VhcmNoID0gdHJ1ZSxcclxuICAgICAgdGl0bGVBbGlhcyA9IFwidGl0bGVcIixcclxuICAgICAgdGl0bGU6IHRyZWVUaXRsZSxcclxuICAgICAgLi4ub3RoZXJ0cmVlUGFyYW1zXHJcbiAgICB9ID0gdHJlZVByb3BzO1xyXG4gICAgbGV0IHRhYmxlUGFyYW1zID0geyBmaWx0ZXJDb2x1bW4sIHN0b3JlLCAuLi5vdGhlcnRhYmxlUGFyYW1zIH0gYXMgYW55O1xyXG4gICAgbGV0IHRhYmxlQ29sdW1uOiBhbnlbXSA9IFtdO1xyXG4gICAgY29uc3Qgc2VhcmNoRm9ybXM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgZWRpdG9yRm9ybXM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgZGVmYXVsdFZhbHVlOiBhbnkgPSB7fTtcclxuICAgIGNvbnN0IGNvbHVtbkJ1dHRvbnM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgeyBlbGVtZW50SGVpZ2h0IH0gPSB0aGlzLnN0YXRlO1xyXG5cclxuICAgIGNvbHVtbnMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgbGV0IHRlbXAgPSB7IHdpZHRoOiAxMDAsIC4uLml0ZW0gfTtcclxuICAgICAgaWYgKHRlbXAuc2VhcmNoID09PSB0cnVlIHx8IHRlbXAuc2VhcmNoPy5zaG93ID09PSB0cnVlKSB7XHJcbiAgICAgICAgc2VhcmNoRm9ybXMucHVzaCh7XHJcbiAgICAgICAgICBuYW1lOiB0ZW1wLmZpZWxkIHx8IHRlbXAuZGF0YUluZGV4LFxyXG4gICAgICAgICAgbGFiZWw6IHRlbXAuc2VhcmNoPy5sYWJlbCB8fCB0ZW1wLnRpdGxlLFxyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgICBsYWJlbENvbDogdGVtcC5zZWFyY2g/LmxhYmVsQ29sLFxyXG4gICAgICAgICAgd3JhcHBlckNvbDogdGVtcC5zZWFyY2g/LndyYXBwZXJDb2wsXHJcbiAgICAgICAgICBydWxlczogdGVtcC5zZWFyY2hSdWxlcyA/IHRlbXAuc2VhcmNoUnVsZXMgOiBbXSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZGVsZXRlIHRlbXAuc2VhcmNoO1xyXG4gICAgICB0ZW1wLmVkaXRvciAhPT0gZmFsc2UgJiZcclxuICAgICAgICBlZGl0b3JGb3Jtcy5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICBsYWJlbDogdGVtcC50aXRsZSxcclxuICAgICAgICAgIHJ1bGVzOiB0ZW1wLnJ1bGVzID8gdGVtcC5ydWxlcyA6IFtdLFxyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgc3BhbjogdGVtcC5zcGFuLFxyXG4gICAgICAgICAgZGljdE5hbWU6IHRlbXAuZGljdE5hbWUsXHJcbiAgICAgICAgICBwcm9wczogeyAuLi50ZW1wLnByb3BzIH0sXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgICB0ZW1wLnByb3BzPy5kZWZhdWx0VmFsdWUgIT09IG51bGxcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXg7XHJcbiAgICAgICAgZGVmYXVsdFZhbHVlW25hbWVdID0gdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnJ1bGVzO1xyXG4gICAgICBkZWxldGUgdGVtcC5zcGFuO1xyXG4gICAgICBpZiAodGVtcC5jb2x1bW5TZWFyY2gpIHtcclxuICAgICAgICB0ZW1wLmZpbHRlclByb3BzID0ge1xyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC50eXBlO1xyXG4gICAgICBsZXQgdGVtcFByb3AgPSB7IC4uLnRlbXAucHJvcHMgfTtcclxuXHJcbiAgICAgIGlmICh0ZW1wUHJvcD8uZGF0YSAmJiB0ZW1wUHJvcD8uZGF0YT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRlbXAgPSB7XHJcbiAgICAgICAgICBlbGxpcHNpczogeyBzaG93VGl0bGU6IGZhbHNlIH0sXHJcbiAgICAgICAgICByZW5kZXI6ICh0ZXh0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VGV4dCh0ZW1wUHJvcCwgdGV4dCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4udGVtcCxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnByb3BzO1xyXG5cclxuICAgICAgLy8gdGVtcC5lbGxpcHNpcyA9IHRydWU7XHJcbiAgICAgIGlmICh0ZW1wPy5jb2x1bW5TaG93ICE9PSBmYWxzZSkgdGFibGVDb2x1bW4ucHVzaCh0ZW1wKTtcclxuICAgIH0pO1xyXG4gICAgY29uc3Qgc2VsZkJ1dHRvbnM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgeyBiYXNlQWN0aW9uQ29sdW1uIH0gPSBjb25maWcoKTtcclxuICAgIGxldCBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBpZiAoYWN0aW9uUHJvcHM/LnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGVsc2UgaWYgKGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgaWYgKGJ1dHRvbnMuaW5kZXhPZihcInNlYXJjaFwiKSA+IC0xKSB7XHJcbiAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChcclxuICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICBvblNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBcImRldGFpbFwiKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgXCJkZXRhaWxcIik7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgaWNvbj17c2hvd0ljb24gPyA8RXllT3V0bGluZWQgLz4gOiBudWxsfVxyXG4gICAgICAgICAgdHlwZT1cImxpbmtcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIOafpeeci1xyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgaWYgKGJ1dHRvbnMuaW5kZXhPZihcImVkaXRvclwiKSA+IC0xKSB7XHJcbiAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChcclxuICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICBvblNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBcImVkaXRvclwiKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgXCJlZGl0b3JcIik7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgaWNvbj17c2hvd0ljb24gPyA8RWRpdE91dGxpbmVkIC8+IDogbnVsbH1cclxuICAgICAgICA+XHJcbiAgICAgICAgICDnvJbovpFcclxuICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmIChidXR0b25zLmluZGV4T2YoXCJhZGRcIikgPiAtMSkge1xyXG4gICAgICBzZWxmQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgIDxCdXR0b25cclxuICAgICAgICAgIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB7IG9uU2hvd0Zvcm0gfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgb25TaG93Rm9ybShudWxsLCBcImFkZFwiKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zaG93Rm9ybSgpO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIGljb249ezxQbHVzT3V0bGluZWQgLz59XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAg5re75YqgXHJcbiAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAoYnV0dG9ucy5pbmRleE9mKFwiZGVsZXRlXCIpID4gLTEpIHtcclxuICAgICAgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiKSB7XHJcbiAgICAgICAgc2VsZkJ1dHRvbnMucHVzaChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgLy8gdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub25EZWxldGUuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgaWNvbj17PERlbGV0ZU91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICBkYW5nZXJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5Yig6ZmkXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwicm93XCIpIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIC8vIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLm9uRGVsZXRlKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIGljb249ezxEZWxldGVPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgZGFuZ2VyXHJcbiAgICAgICAgICAgIHR5cGU9XCJsaW5rXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5Yig6ZmkXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkge1xyXG4gICAgICAgICAgaXRlbS5tYXAoKGNoaWxkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgICAgc2VsZkJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiIHx8XHJcbiAgICAgICAgICAgICAgY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgIHNlbGZCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICBpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIiB8fFxyXG4gICAgICAgICAgICBpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIlxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICBjb25zdCB7IHByb3BzIH06IGFueSA9IGNoaWxkcmVuO1xyXG4gICAgICBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgc2VsZkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH0gZWxzZSBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBhY3Rpb25Db2x1bW4gJiZcclxuICAgICAgdGFibGVDb2x1bW4ucHVzaCh7XHJcbiAgICAgICAgdGl0bGU6IFwi5pON5L2cXCIsXHJcbiAgICAgICAgZGF0YUluZGV4OiBcImFjdGlvblwiLFxyXG4gICAgICAgIGFsaWduOiBhY3Rpb25Qcm9wcz8udGV4dEFsaWduXHJcbiAgICAgICAgICA/IGFjdGlvblByb3BzPy50ZXh0QWxpZ25cclxuICAgICAgICAgIDogYmFzZUFjdGlvbkNvbHVtbi50ZXh0QWxpZ25cclxuICAgICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbi50ZXh0QWxpZ25cclxuICAgICAgICAgIDogXCJsZWZ0XCIsXHJcbiAgICAgICAgd2lkdGg6IGFjdGlvblByb3BzPy53aWR0aFxyXG4gICAgICAgICAgPyBhY3Rpb25Qcm9wcz8ud2lkdGhcclxuICAgICAgICAgIDogYmFzZUFjdGlvbkNvbHVtbi53aWR0aFxyXG4gICAgICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uLndpZHRoXHJcbiAgICAgICAgICA6IDIwMCxcclxuICAgICAgICBmaXhlZDogXCJyaWdodFwiLFxyXG4gICAgICAgIHJlbmRlcjogKHRleHQ6IGFueSwgcmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtYWN0aW9uXCIpfT5cclxuICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJDbG91bW5CdXR0b24oY29sdW1uQnV0dG9ucywgcmVjb3JkKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIGlmIChjb2x1bW5PcmRlcilcclxuICAgICAgdGFibGVDb2x1bW4gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGl0bGU6IFwi5bqP5Y+3XCIsXHJcbiAgICAgICAgICB3aWR0aDogODAsXHJcbiAgICAgICAgICBhbGlnbjogXCJjZW50ZXJcIixcclxuICAgICAgICAgIHJlbmRlcjogKHRleHQsIHJlYWNvcmQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiA8PntpbmRleCArIDF9PC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnRhYmxlQ29sdW1uLFxyXG4gICAgICBdO1xyXG4gICAgbGV0IHNlYXJjaEZsYWcgPSBzaG93U2VhcmNoICYmIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDA7XHJcbiAgICBsZXQgeyB0YWJsZVRvb2wgfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHRvb2xGbGFnID1cclxuICAgICAgc2hvd1Rvb2xCdXR0b24gJiZcclxuICAgICAgc2VsZkJ1dHRvbnMubGVuZ3RoID4gMCAmJlxyXG4gICAgICB0b29sQnV0dG9uUG9zaXRpb24gPT0gXCJidXR0b21cIjtcclxuICAgIGxldCB0b29sYmFyRmxhZyA9ICEoXHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhciA9PSBmYWxzZSB8fFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXI/LnNob3cgPT0gZmFsc2UgfHxcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyPy50b29scz8ubGVuZ3RoID09IDAgfHxcclxuICAgICAgdGFibGVUb29sPy5zaG93ID09IGZhbHNlXHJcbiAgICApO1xyXG5cclxuICAgIGxldCBwYWdlSGVpZ2h0ID0gdGhpcy5wcm9wcy5wYWdlVHlwZSA9PSBcInRhYnNwYWdlXCIgPyA2MyA6IDA7XHJcbiAgICBsZXQgdGFibGVIZWFkZXJIZWlnaHQgPSA1NTtcclxuXHJcbiAgICBsZXQgaGVhZGVySGVpZ2h0ID0gc2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwID8gMTA0IDogMDtcclxuICAgIGxldCB0b29sSGVpZ2h0ID0gdGFibGVUaXRsZSB8fCB0b29sRmxhZyA/IDQ4IDogMDtcclxuICAgIGxldCBwYWRkaW5nSGVpZ2h0ID0gMjU7XHJcbiAgICBsZXQgdGFibGVDb250ZW50SGVpZ2h0ID1cclxuICAgICAgZWxlbWVudEhlaWdodCAtIGhlYWRlckhlaWdodCAtIHRvb2xIZWlnaHQgLSBwYWRkaW5nSGVpZ2h0IC0gcGFnZUhlaWdodDtcclxuICAgIGxldCB0YWJsZUhlaWdodCA9IHRhYmxlQ29udGVudEhlaWdodCAtIDMyIC0gMzI7XHJcbiAgICBsZXQgdGFibGVTcm9sbEhlaWdodCA9IHRhYmxlQ29udGVudEhlaWdodCAtIHRhYmxlSGVhZGVySGVpZ2h0IC0gMzIgLSAzMjtcclxuICAgIGlmICh0YWJsZVByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlKSB7XHJcbiAgICAgIGNvbnN0IHNjcm9sbCA9IHRhYmxlUGFyYW1zLnNjcm9sbDtcclxuICAgICAgdGFibGVQYXJhbXMgPSB7XHJcbiAgICAgICAgLi4udGFibGVQYXJhbXMsXHJcbiAgICAgICAgc2Nyb2xsOiB7IHg6IFwibWF4LWNvbnRlbnRcIiwgeTogdGFibGVTcm9sbEhlaWdodCwgLi4uc2Nyb2xsIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlXCIpLCBjbGFzc05hbWUpfVxyXG4gICAgICAgIHJlZj17dGhpcy5wYWdlUmVmfVxyXG4gICAgICA+XHJcbiAgICAgICAge3RoaXMucHJvcHMucGFnZVRpdGxlICYmIChcclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRpdGxlXCIpKX0+XHJcbiAgICAgICAgICAgIHt0aGlzLnByb3BzLnBhZ2VUaXRsZX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXBhbmVcIikpfVxyXG4gICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogXCJmbGV4XCIgfX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7c2hvd0xlZnQgJiYgKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWxlZnRcIil9PlxyXG4gICAgICAgICAgICAgIHt0cmVlVGl0bGUgJiYgKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRyZWUtdGl0bGVcIil9Pnt0cmVlVGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJ0cmVlLWNvbnRlbnRcIiksIHtcclxuICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcInRyZWUtY29udGVudC1ub3RpdGxlXCIpXTogIXRyZWVUaXRsZSxcclxuICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxUcmVlXHJcbiAgICAgICAgICAgICAgICAgIHN0b3JlPXt7IC4uLnRyZWVTdG9yZSB9fVxyXG4gICAgICAgICAgICAgICAgICBzaG93SWNvbj17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgIGNoZWNrYWJsZT17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGU9e3RyZWVTZWFyY2h9XHJcbiAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXt0aGlzLnRyZWVTZWxlY3QuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRLZXlzPXtbdGhpcy5zdGF0ZS50cmVlU2VsZWN0ZWRLZXldfVxyXG4gICAgICAgICAgICAgICAgICB0aXRsZUFsaWFzPXt0aXRsZUFsaWFzfVxyXG4gICAgICAgICAgICAgICAgICB7Li4ub3RoZXJ0cmVlUGFyYW1zfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtcmlnaHRcIiksIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLW5vLWxlZnQtcmlnaHRcIildOiAhc2hvd0xlZnQsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwICYmIChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWhlYWRlcnNlYXJjaFwiKX0+XHJcbiAgICAgICAgICAgICAgICA8SGVhZGVyU2VhcmNoXHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1zPXtzZWFyY2hGb3Jtc31cclxuICAgICAgICAgICAgICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uPXt0b29sQnV0dG9uUG9zaXRpb259XHJcbiAgICAgICAgICAgICAgICAgIG9uU2VhcmNoPXt0aGlzLm9uU2VhcmNoLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICAgIG9uUmVzZXQ9e3RoaXMucHJvcHMub25SZXNldH1cclxuICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLnNlYXJjaFJlZn1cclxuICAgICAgICAgICAgICAgICAgc2VhcmNoRm9ybVByb3BzPXt0aGlzLnByb3BzLnNlYXJjaEZvcm1Qcm9wc31cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudFwiKSwge1xyXG4gICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWdhcFwiKV06ICFzZWFyY2hGbGFnLFxyXG4gICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgeyh0YWJsZVRpdGxlIHx8IHRvb2xGbGFnKSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZS10aXRsZVwiKSwge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGl0bGUtd2lkdGhcIildOiAhdG9vbGJhckZsYWcsXHJcbiAgICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2Pnt0YWJsZVRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICB7dG9vbEZsYWcgJiYgdGhpcy5yZW5kZXJUb29sQnV0dG9ucyhzZWxmQnV0dG9ucywgdG9vbGJhckZsYWcpfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuXHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZVwiKSxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGUtdG9wXCIpXTogIXRvb2xiYXJGbGFnLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZS10b3AyXCIpXTpcclxuICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXJGbGFnICYmICF0b29sRmxhZyxcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IGhlaWdodDogdGFibGVDb250ZW50SGVpZ2h0IH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPFRhYmxlXHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy50YWJsZVJlZn1cclxuICAgICAgICAgICAgICAgICAgY29sdW1ucz17dGFibGVDb2x1bW59XHJcbiAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU9e3tcclxuICAgICAgICAgICAgICAgICAgICBleHBhbmRJY29uOiAoeyBleHBhbmRlZCwgb25FeHBhbmQsIHJlY29yZCB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtleHBhbmRlZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXM/Lmxlbmd0aCA+IDAgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RG93bk91dGxpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBvbkV4cGFuZChyZWNvcmQsIGUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImV4cGFuZC1pY29uXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApIDogcmVjb3JkLmNoaWxkTm9kZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzPy5sZW5ndGggPiAwID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpZ2h0T3V0bGluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IG9uRXhwYW5kKHJlY29yZCwgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZXhwYW5kLWljb25cIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAuLi5leHBhbmRhYmxlLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICBjb2x1bW5PcmRlcj17dHJ1ZX1cclxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhwYWdpbmF0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBjdXJyZW50UGFnZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFBhZ2UgIT09IHBhZ2luYXRpb24uY3VycmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHRvb2xiYXI9e3tcclxuICAgICAgICAgICAgICAgICAgICBvblRvb2xDbGljazoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb25SZWZyZXNoOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVMb2FkKHBhcmFtcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgLi4udGFibGVQcm9wcy50b29sYmFyLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICBzaG93Um93U2VsZWN0aW9uPXtzaG93Um93U2VsZWN0aW9ufVxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IHRhYmxlSGVpZ2h0IH19XHJcbiAgICAgICAgICAgICAgICAgIHsuLi50YWJsZVBhcmFtc31cclxuICAgICAgICAgICAgICAgICAgLy8gcGFnaW5hdGlvbj17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgey8qIDxkaXY+PC9kaXY+ICovfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAge2VkaXRvckZvcm0gJiYgKFxyXG4gICAgICAgICAgICA8RWRpdG9yRm9ybVxyXG4gICAgICAgICAgICAgIHJlZj17dGhpcy5lZGl0b3JSZWZ9XHJcbiAgICAgICAgICAgICAgY2FsbEJhY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uU3VtYml0Q2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TdW1iaXRDYWxsQmFjaygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVJlbG9hZCgpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgZm9ybVByb3BzPXtlZGl0b3JGb3Jtc31cclxuICAgICAgICAgICAgICBzdWJtaXRVcmw9e3N1Ym1pdFVybH1cclxuICAgICAgICAgICAgICBzdWJtaXRQYXJhbXM9e3N1Ym1pdFBhcmFtc31cclxuICAgICAgICAgICAgICBvblN1Ym1pdD17dGhpcy5wcm9wcy5vblN1Ym1pdH1cclxuICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e2RlZmF1bHRWYWx1ZX1cclxuICAgICAgICAgICAgICBvbkhpZGVGb3JtPXt0aGlzLnByb3BzLm9uSGlkZUZvcm19XHJcbiAgICAgICAgICAgICAgb25Gb3JtQ2hhbmdlPXt0aGlzLnByb3BzLm9uRm9ybUNoYW5nZX1cclxuICAgICAgICAgICAgICBmb3JtVHlwZT17dGhpcy5wcm9wcy5mb3JtVHlwZSB8fCBcImF1dG9cIn1cclxuICAgICAgICAgICAgICBjaGFuZ2VWYWxpZD17Zm9ybUNoYW5nZVZhbGlkfVxyXG4gICAgICAgICAgICAgIG90aGVyUHJvcHM9e3sgLi4uZm9ybVByb3BzIH19XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IEJhc2VQYWdlO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBT0EsS0FBSyxJQUFJQyxhQUFhLFFBQW1CLE9BQU87QUFDdkQsT0FBT0MsS0FBSyxNQUFNLGtCQUFrQjtBQUNwQyxPQUFPQyxJQUFJLE1BQU0saUJBQWlCO0FBQ2xDLE9BQU9DLE1BQU0sTUFBTSxtQkFBbUI7QUFDdEMsT0FBT0MsS0FBSyxNQUFNLGtCQUFrQjtBQUNwQyxPQUFPQyxPQUFPLE1BQU0sb0JBQW9CO0FBQ3hDLE9BQU9DLE9BQU8sTUFBTSxvQkFBb0I7QUFDeEMsT0FBT0MsVUFBVSxNQUFNLFFBQVE7QUFDL0IsT0FBT0MsR0FBRyxNQUFNLFlBQVk7QUFDNUIsT0FBTyxxQkFBcUI7QUFFNUIsU0FBU0MsS0FBSyxRQUFRLHVCQUF1QjtBQUM3QyxTQUNFQyxZQUFZLEVBQ1pDLFdBQVcsRUFDWEMsWUFBWSxFQUNaQyxhQUFhLEVBQ2JDLFlBQVksRUFDWkMsZ0JBQWdCLEVBQ2hCQyxjQUFjLFFBQ1QsbUJBQW1CO0FBQzFCLFNBQVNDLE9BQU8sUUFBaUIsYUFBYTtBQUM5QyxPQUFPQyxPQUFPLE1BQU0sYUFBYTtBQUVqQyxPQUFPQyxNQUFNLE1BQU0sY0FBYztBQUNqQyxTQUFTQyxVQUFVLFFBQWUsbUJBQW1CO0FBRXJELE9BQU9DLFlBQVksTUFBTSxpQkFBaUI7QUFZMUMsTUFBTUMsTUFBTSxHQUFHLElBQUk7QUEwRG5CLE1BQU1DLFFBQVEsU0FBU3ZCLGFBQWEsQ0FBd0I7RUFPMUR3QixXQUFXQSxDQUFDQyxLQUFVLEVBQUU7SUFBQSxJQUFBQyxLQUFBLEVBQUFDLEtBQUE7SUFDdEIsS0FBSyxDQUFDRixLQUFLLENBQUM7SUFBQ0csZUFBQSxnQ0FQSjdCLEtBQUssQ0FBQzhCLFNBQVMsQ0FBTSxDQUFDO0lBQUFELGVBQUEsK0JBQ3ZCN0Is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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","PureComponent","Table","Tree","Button","Modal","Popover","message","EditorForm","cls","utils","DownOutlined","EyeOutlined","EditOutlined","RightOutlined","PlusOutlined","EllipsisOutlined","DeleteOutlined","getLess","request","config","getStorage","HeaderSearch","styles","BasePage","constructor","props","_type","_size","_defineProperty","createRef","checkedTreeKeys","name","userType","account","state","value","deptId","onSearch","selected","res","key","keys","length","storePrefix","type","content","size","selectedRowKeys","selectedRowDatas","treeSelectedKey","expand","formType","tableSize","treeSearchPrams","popopens","moreOpen","elementHeight","componentDidMount","_this$pageRef$current","initData","pageRef","current","clientHeight","setState","componentDidUpdate","_this$pageRef$current2","setSearchParams","params","callBack","_this$searchRef$curre","searchRef","doSubmit","data","_this$editorRef$curre","label","arguments","undefined","editorRef","showForm","_this$editorRef","editorflag","newValue","_objectSpread","show","hideForm","_this$editorRef$curre2","setLoading","loading","_this$editorRef$curre3","setEditFormValues","_this$editorRef$curre4","setFieldsValue","getEditFormValues","_this$editorRef$curre5","getFieldsValue","onDelete","_this$tableRef$curren","deleteUrl","deleteParams","deletePosition","_this","tableRef","getSelectedRowKeys","warning","confirm","onOk","Error","defaultParams","method","autoPrefix","ids","join","id","requestParams","then","code","_this$searchRef","_this$props$onCallBac","_this$props$onCallBac2","success","getSearchValues","onCallBacks","onDeleteCallBack","tableLoad","error","catch","console","log","_this$tableRef$curren2","requestConfig","store","load","onSearchCallBack","callback","tableReload","_this$tableRef$curren3","autoLoad","reload","_res$data","records","currentPage","_this$tableRef$curren4","_this$tableRef$curren5","getSelectedRowDatas","_this$tableRef$curren6","setSelectedRowKeys","_this$tableRef$curren7","setSelectedRowDatas","_this$tableRef$curren8","resetSelectedRowKeys","_this$tableRef$curren9","_this$searchRef2","fromValue","getChildrenData","tableProps","rowKey","resKey","childNodes","children","map","item","index","renderToolButtons","toolbuttons","toolbarFlag","flag","showSearch","_item$props","pageType","onClick","icon","_objectWithoutProperties","_excluded","createElement","className","_extends","style","marginLeft","marginRight","title","placement","open","onOpenChange","renderCloumnButton","columnButtons","record","actionProps","baseActionColumn","newButtons","showIcon","_item$props2","recordShow","_excluded2","eval","push","number","buttonNumber","_item$props3","_excluded3","Number","_item$props4","_excluded4","trigger","treeSelect","selectedKeys","obj","_this$searchRef3","_this$props$onCallBac3","_this$props$onCallBac4","keyword","searchKey","searchField","parantSelect","treeProps","selectedNodes","dataref","attribute","isLeaf","onTreeSelect","treeSelectCallBack","resetSearch","_this$searchRef$curre2","resetFields","getText","text","_props$data","newText","i","setTableData","_this$tableRef$curren10","setData","setTreeData","_this$treeRef$current","treeRef","render","_tableProps$toolbar","_tableProps$toolbar2","columns","submitUrl","formProps","showLeft","submitParams","showToolButton","buttons","editorForm","onShowForm","formChangeValid","toolButtonPosition","filterColumn","actionColumn","showRowSelection","columnOrder","expandable","tableTitle","othertableParams","_excluded5","treeStore","treeSearch","titleAlias","treeTitle","othertreeParams","_excluded6","tableParams","tableColumn","searchForms","editorForms","defaultValue","_temp$search","_temp$props","_temp$props2","_tempProp$data","_temp","temp","width","search","_temp$search2","_temp$search3","_temp$search4","field","dataIndex","labelCol","wrapperCol","rules","searchRules","editor","span","dictName","_temp$props3","columnSearch","filterProps","tempProp","ellipsis","showTitle","columnShow","selfButtons","indexOf","bind","danger","Array","isArray","child","_child$props","_child$props2","_child$props3","_item$props5","_item$props6","_item$props7","align","textAlign","fixed","reacord","Fragment","searchFlag","tableTool","toolFlag","toolbar","tools","pageHeight","tableHeaderHeight","headerHeight","toolHeight","paddingHeight","tableContentHeight","tableHeight","tableSrollHeight","pagination","scroll","x","y","ref","pageTitle","display","checkable","searchable","onSelect","onReset","searchFormProps","height","expandIcon","_ref","_record$childNodes","_record$childNodes2","expanded","onExpand","e","onChange","onToolClick","onRefresh","_this$props$onCallBac5","_this$props$onCallBac6","onSumbitCallBack","onSubmit","onHideForm","onFormChange","changeValid","otherProps"],"sources":["../../../src/components/page/BasePage/index.tsx"],"sourcesContent":["import React, { PureComponent, ReactNode } from \"react\";\r\nimport Table from \"../../base/table\";\r\nimport Tree from \"../../base/tree\";\r\nimport Button from \"../../base/button\";\r\nimport Modal from \"../../base/modal\";\r\nimport Popover from \"../../base/popover\";\r\nimport message from \"../../base/message\";\r\nimport EditorForm from \"./Form\";\r\nimport cls from \"classnames\";\r\nimport \"./index.module.less\";\r\nimport Store, { PageStore, StoreProps } from \"@bj-nsc/msn\";\r\nimport { utils } from \"@bj-nsc/msn/lib/utils\";\r\nimport {\r\n DownOutlined,\r\n EyeOutlined,\r\n EditOutlined,\r\n RightOutlined,\r\n PlusOutlined,\r\n EllipsisOutlined,\r\n DeleteOutlined,\r\n} from \"@ant-design/icons\";\r\nimport { getLess, getNode } from \"../../utils\";\r\nimport request from \"nsc-request\";\r\nimport omit from \"omit.js\";\r\nimport config from \"../../config\";\r\nimport { getStorage, px2vw } from \"@bj-nsc/functions\";\r\nimport { IFormProps } from \"../../base/form/Form\";\r\nimport HeaderSearch from \"../HeaderSearch\";\r\nimport { PaginationProps } from \"antd\";\r\nimport { number } from \"echarts\";\r\ninterface TableProps {\r\n actionColumn?: boolean; //是否显示操作列\r\n store?: StoreProps;\r\n filterColumn?: boolean; //是否显示过滤按钮\r\n showRowSelection?: boolean; //是否表格勾选列\r\n pagination?: boolean | PaginationProps; //是否显示分页\r\n columnOrder?: boolean; //是否显示表格序列\r\n [propsName: string]: any;\r\n}\r\nconst styles = null;\r\ninterface TreeProps {\r\n store?: StoreProps;\r\n showSearch?: boolean; //是否显示搜索框\r\n searchKey?: string; //搜索value对应的key\r\n searchField?: string; //查询对应的key\r\n titleAlias?: string; //树title对应的key,默认title\r\n nodePorps?: object;\r\n parantSelect?: boolean;\r\n [propsName: string]: any;\r\n}\r\ninterface FormProps extends IFormProps {}\r\ninterface NSCBaseBageProps {\r\n showSearch?: boolean; //是否显示头部搜索栏\r\n tableProps?: TableProps; //表格参数\r\n treeProps?: TreeProps; //左侧树参数\r\n submitParams?: Object; //添加参数,默认mothod:post, 参数通过data传递\r\n submitUrl?: string;\r\n onSubmit?: (value?: any, label?: any) => void;\r\n columns: Array<Object>;\r\n showLeft?: boolean; //是否显示左侧目录树\r\n showToolButton?: boolean; //是否显示按钮栏\r\n editorForm?: boolean; //是否需要表单功能 , 为false 编辑,查看,新增功能均不可用\r\n deleteUrl?: string; //删除url\r\n onDelete?: (selectedKeys?: Array<string>) => void; //删除参数,默认mothod:post, 参数通过ids拼接传递给后台\r\n deletePosition?: \"toolbar\" | \"row\";\r\n deleteParams?: Object;\r\n children?: React.ReactNode;\r\n onSearch?: (value?: any) => void;\r\n onReset?: () => void;\r\n initData?: any; //初始化回调函数,在componentDidMount中调用\r\n buttons?: Array<string>; //按钮集合 ['add','delete','search','editor']\r\n onShowForm?: (value?: any, editorFlag?: string) => void; //打开表单回调\r\n onHideForm?: () => void; //打开表单回调\r\n onFormChange?: (changedValues?: any, allValues?: any) => void; //表单onChange回调\r\n formType?: \"modal\" | \"drawer\";\r\n formChangeValid?: boolean; //表单校验\r\n className?: any;\r\n toolButtonPosition?: \"right\" | \"buttom\";\r\n pageTitle?: string | ReactNode;\r\n formProps?: FormProps;\r\n actionProps?: {\r\n textAlign?: string;\r\n showIcon?: boolean;\r\n width?: number;\r\n buttonNumber?: number | \"all\";\r\n };\r\n searchFormProps?: { wrapperCol?: any; labelCol?: any };\r\n onTreeSelect?: (value?: any, editorFlag?: string) => void; //打开表单回调\r\n onCallBacks?: {\r\n treeSelectCallBack?: any;\r\n onSearchCallBack?: any;\r\n onSumbitCallBack?: any;\r\n onDeleteCallBack?: any;\r\n };\r\n pageType?: \"normal\" | \"tabspage\";\r\n}\r\n\r\nclass BasePage extends PureComponent<NSCBaseBageProps, any> {\r\n tableRef = React.createRef<any>();\r\n treeRef = React.createRef<any>();\r\n searchRef = React.createRef<any>();\r\n editorRef = React.createRef<any>();\r\n pageRef = React.createRef<any>();\r\n dateFormat = {} as any;\r\n constructor(props: any) {\r\n super(props);\r\n let { storePrefix } = config();\r\n let type = getStorage(\r\n storePrefix ? storePrefix + \"-\" + \"formType\" : \"formType\"\r\n );\r\n type = type?.content;\r\n let size = getStorage(\r\n storePrefix ? storePrefix + \"-\" + \"tableSize\" : \"tableSize\"\r\n );\r\n size = size?.content;\r\n this.state = {\r\n type: \"add\",\r\n selectedRowKeys: [],\r\n selectedRowDatas: [],\r\n treeSelectedKey: \"\",\r\n expand: false,\r\n formType: type || \"modal\",\r\n tableSize: size || \"default\",\r\n treeSearchPrams: {},\r\n popopens: {},\r\n moreOpen: false,\r\n elementHeight: 0,\r\n };\r\n }\r\n componentDidMount() {\r\n const { initData } = this.props;\r\n const elementHeight = this.pageRef.current?.clientHeight;\r\n this.setState({\r\n elementHeight,\r\n });\r\n initData && initData();\r\n }\r\n componentDidUpdate() {\r\n const elementHeight = this.pageRef.current?.clientHeight;\r\n if (elementHeight > this.state.elementHeight) {\r\n this.setState({\r\n elementHeight,\r\n });\r\n }\r\n }\r\n setSearchParams(params, callBack) {\r\n this.searchRef.current?.setSearchParams(params);\r\n callBack && callBack(params);\r\n }\r\n doSubmit(data, label = \"编辑\") {\r\n this.editorRef.current?.doSubmit(data, label);\r\n }\r\n\r\n onSelect = (checkedTreeKeys: any) => {\r\n const { name, userType, account } = this.state;\r\n const value = { name, userType, account, deptId: checkedTreeKeys[0] };\r\n if (this.props.onSearch) {\r\n this.props.onSearch(value);\r\n }\r\n // this.tableLoad(value);\r\n };\r\n\r\n //显示表单\r\n showForm(value?: any, editorflag = \"add\") {\r\n let newValue = value ? { ...value } : null;\r\n this.editorRef?.current?.show(newValue, editorflag);\r\n }\r\n\r\n //关闭表单\r\n hideForm() {\r\n this.editorRef.current?.hideForm();\r\n }\r\n\r\n setLoading(loading: boolean) {\r\n this.editorRef.current?.setLoading(loading);\r\n }\r\n\r\n setEditFormValues(value) {\r\n this.editorRef.current?.setFieldsValue(value);\r\n }\r\n\r\n getEditFormValues() {\r\n return this.editorRef.current?.getFieldsValue();\r\n }\r\n\r\n //批量删除\r\n onDelete(data?: any) {\r\n const {\r\n deleteUrl,\r\n onDelete,\r\n deleteParams,\r\n deletePosition = \"toolbar\",\r\n } = this.props;\r\n let _this = this;\r\n const selectedRowKeys = this.tableRef.current?.getSelectedRowKeys();\r\n if (deletePosition == \"toolbar\") {\r\n if (selectedRowKeys.length == 0) {\r\n message.warning(\"请选择要删除的数据!\");\r\n return;\r\n }\r\n }\r\n Modal.confirm({\r\n content: \"是否确认删除所选项?\",\r\n // centered:true,\r\n onOk: () => {\r\n if (onDelete) {\r\n onDelete &&\r\n onDelete(deletePosition == \"toolbar\" ? selectedRowKeys : data);\r\n return;\r\n }\r\n if (!deleteUrl) {\r\n throw new Error(\"url不能为空!\");\r\n }\r\n const defaultParams = {\r\n method: \"post\",\r\n autoPrefix: true,\r\n params: {\r\n ids: deletePosition == \"toolbar\" ? selectedRowKeys.join() : data.id,\r\n },\r\n };\r\n let requestParams = {} as any;\r\n if (defaultParams) {\r\n requestParams = { ...deleteParams };\r\n }\r\n requestParams = { ...defaultParams };\r\n request(deleteUrl, {\r\n ...requestParams,\r\n })\r\n .then(function (res: any) {\r\n const { code } = res;\r\n if (code === 200) {\r\n message.success(\"删除成功!\");\r\n let value = _this.searchRef?.current?.getSearchValues();\r\n _this.props.onCallBacks?.onDeleteCallBack &&\r\n _this.props.onCallBacks?.onDeleteCallBack();\r\n _this.tableLoad(value);\r\n } else {\r\n message.error(\"删除失败!\");\r\n }\r\n })\r\n .catch(function (error: any) {\r\n console.log(\"error\", error);\r\n });\r\n },\r\n });\r\n }\r\n tableLoad(params: any, requestConfig = {}) {\r\n this.tableRef.current?.store.load({\r\n ...requestConfig,\r\n params: params,\r\n });\r\n }\r\n //查询\r\n onSearch(params) {\r\n const { onSearch, onCallBacks } = this.props;\r\n if (onSearch) {\r\n onSearch({ ...params, ...this.state.treeSearchPrams });\r\n return;\r\n }\r\n this.tableLoad({ ...params, ...this.state.treeSearchPrams });\r\n onCallBacks?.onSearchCallBack &&\r\n utils.callback(onCallBacks?.onSearchCallBack, this, [params]);\r\n }\r\n //表格重新加载\r\n tableReload(params = {}, autoLoad = true) {\r\n this.tableRef.current?.store?.reload({\r\n callback: (res) => {\r\n if (\r\n autoLoad &&\r\n res?.data?.records?.length == 0 &&\r\n this.state.currentPage !== 1\r\n ) {\r\n this.tableRef.current?.store?.reload({\r\n params: { current: 1, ...params },\r\n });\r\n }\r\n },\r\n });\r\n }\r\n getSelectedRowKeys() {\r\n return this.tableRef.current?.getSelectedRowKeys();\r\n }\r\n getSelectedRowDatas() {\r\n return this.tableRef.current?.getSelectedRowDatas();\r\n }\r\n setSelectedRowKeys(data: Array<String | Number>) {\r\n return this.tableRef.current?.setSelectedRowKeys(data);\r\n }\r\n setSelectedRowDatas(data: Array<Object>) {\r\n return this.tableRef.current?.setSelectedRowDatas(data);\r\n }\r\n resetSelectedRowKeys() {\r\n return this.tableRef.current?.resetSelectedRowKeys();\r\n }\r\n\r\n getSearchValues() {\r\n const fromValue = this.searchRef?.current?.getSearchValues();\r\n return { ...fromValue, ...this.state.treeSearchPrams };\r\n }\r\n\r\n getChildrenData(data, keys = []) {\r\n const { tableProps } = this.props;\r\n const { rowKey = \"id\" } = tableProps;\r\n let resKey = [];\r\n if (data.childNodes) {\r\n const children = data.childNodes;\r\n children.map((item, index) => {\r\n if (item.childNodes) {\r\n this.getChildrenData(item.childNodes, keys);\r\n } else {\r\n resKey = [...keys, item[rowKey]];\r\n }\r\n });\r\n } else {\r\n resKey = [...keys, data[rowKey]];\r\n }\r\n return resKey;\r\n }\r\n\r\n renderToolButtons(toolbuttons: any, toolbarFlag) {\r\n const flag = toolbuttons.length > 5;\r\n // toolbuttons = [...toolbuttons].reverse();\r\n const { showSearch = true } = this.props;\r\n const content = toolbuttons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, icon, show, ...params } = item.props;\r\n if (index > 3) {\r\n return (\r\n <div\r\n className={cls(\r\n getLess(styles, \"nsc-basepage-editor\"),\r\n getLess(styles, \"nsc-basepage-content-item\")\r\n )}\r\n >\r\n <Button\r\n key={index}\r\n onClick={() => {\r\n this.setState({\r\n moreOpen: false,\r\n });\r\n onClick && onClick();\r\n }}\r\n {...params}\r\n type={\"link\"}\r\n >\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n </div>\r\n );\r\n }\r\n });\r\n\r\n return (\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-tool-buttons\"))}\r\n style={{ marginLeft: 0 }}\r\n >\r\n {toolbuttons.map((item: any, index: any) => {\r\n if (flag) {\r\n if (index < 4) {\r\n return (\r\n <div\r\n key={index}\r\n style={{\r\n marginRight: 12,\r\n }}\r\n >\r\n {item}\r\n </div>\r\n );\r\n } else if (index == 4) {\r\n return (\r\n <Popover\r\n content={content}\r\n title={null}\r\n placement=\"bottom\"\r\n key={index}\r\n open={this.state.moreOpen}\r\n onOpenChange={(open) => {\r\n if (open) {\r\n this.setState({\r\n moreOpen: true,\r\n });\r\n } else {\r\n this.setState({\r\n moreOpen: false,\r\n });\r\n }\r\n }}\r\n // open={true}\r\n // overlayClassName={styles['pop-box']}\r\n >\r\n <Button type=\"primary\">\r\n 更多 <DownOutlined />\r\n </Button>\r\n </Popover>\r\n );\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return (\r\n <div\r\n key={index}\r\n style={{\r\n marginRight: index == toolbuttons.length - 1 ? 0 : 12,\r\n }}\r\n >\r\n {item}\r\n </div>\r\n );\r\n }\r\n })}\r\n </div>\r\n );\r\n }\r\n renderCloumnButton(columnButtons: any, record: any) {\r\n const { actionProps } = this.props;\r\n const { baseActionColumn } = config();\r\n const newButtons = [];\r\n let showIcon = true;\r\n if (actionProps?.showIcon === false) showIcon = false;\r\n else if (baseActionColumn.showIcon === false) showIcon = false;\r\n columnButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, icon, recordShow, ...params } =\r\n item.props;\r\n if (recordShow) {\r\n if (typeof recordShow == \"string\") {\r\n if (eval(recordShow)) {\r\n newButtons.push(item);\r\n }\r\n } else if (typeof recordShow == \"function\") {\r\n const show = recordShow(record);\r\n show && newButtons.push(item);\r\n }\r\n } else {\r\n newButtons.push(item);\r\n }\r\n });\r\n let number = actionProps?.buttonNumber\r\n ? actionProps?.buttonNumber\r\n : baseActionColumn?.buttonNumber\r\n ? baseActionColumn?.buttonNumber\r\n : 3;\r\n let flag = false;\r\n if (number == \"all\") {\r\n flag = false;\r\n } else {\r\n flag = newButtons.length > number;\r\n }\r\n\r\n const content = newButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, recordShow, icon, show, ...params } =\r\n item.props;\r\n if (index > Number(number) - 1) {\r\n return (\r\n <Button\r\n className={cls(\r\n getLess(styles, \"nsc-basepage-editor\"),\r\n getLess(styles, \"nsc-basepage-content-item\")\r\n )}\r\n key={index}\r\n onClick={() => {\r\n let data = { ...this.state.popopens };\r\n data[record.id] = false;\r\n this.setState({\r\n popopens: data,\r\n });\r\n onClick && onClick(record);\r\n }}\r\n {...params}\r\n type={\"link\"}\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n );\r\n }\r\n });\r\n return newButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, recordShow, icon, ...params } =\r\n item.props;\r\n if (flag) {\r\n if (index < number) {\r\n return (\r\n <Button\r\n className={cls(getLess(styles, \"nsc-basepage-editor\"), {\r\n [getLess(styles, \"nsc-basepage-editor-first\")]: index === 0,\r\n })}\r\n key={index}\r\n onClick={() => {\r\n onClick && onClick(record);\r\n }}\r\n icon={icon}\r\n {...params}\r\n type={\"link\"}\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n );\r\n } else if (index == number) {\r\n return (\r\n <Popover\r\n placement=\"bottom\"\r\n title={null}\r\n content={content}\r\n trigger={[\"click\"]}\r\n key={index}\r\n open={this.state.popopens[record.id] || false}\r\n onOpenChange={(open) => {\r\n if (open) {\r\n let data = { ...this.state.popopens };\r\n data[record.id] = true;\r\n this.setState({\r\n popopens: data,\r\n });\r\n } else {\r\n this.setState({\r\n popopens: {},\r\n });\r\n }\r\n }}\r\n // overlayClassName={styles['pop']}\r\n >\r\n <a className={getLess(styles, \"nsc-basepage-editor\")}>\r\n <EllipsisOutlined />\r\n </a>\r\n </Popover>\r\n );\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return (\r\n <Button\r\n className={cls(getLess(styles, \"nsc-basepage-editor\"), {\r\n [getLess(styles, \"nsc-basepage-editor-first\")]: index === 0,\r\n })}\r\n key={index}\r\n onClick={() => {\r\n onClick && onClick(record);\r\n }}\r\n {...params}\r\n type=\"link\"\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n );\r\n }\r\n });\r\n // }\r\n }\r\n //树点击事件\r\n treeSelect(selectedKeys: any, obj: any) {\r\n let keyword = \"\";\r\n const {\r\n searchKey = \"key\",\r\n searchField = \"\",\r\n parantSelect = true,\r\n } = this.props.treeProps;\r\n const { treeSelectedKey } = this.state;\r\n const { selected, selectedNodes } = obj;\r\n\r\n if (selected) {\r\n keyword = selectedNodes[0].dataref.attribute[searchKey];\r\n if (parantSelect) {\r\n this.setState({\r\n treeSelectedKey: selectedKeys[0],\r\n treeSearchPrams: { [searchField]: keyword },\r\n });\r\n } else {\r\n if (selectedNodes[0].isLeaf || !selectedNodes[0].children) {\r\n if (selectedKeys[0] !== treeSelectedKey) {\r\n this.setState({\r\n treeSelectedKey: selectedKeys[0],\r\n treeSearchPrams: { [searchField]: keyword },\r\n });\r\n }\r\n }\r\n }\r\n } else {\r\n this.setState({\r\n treeSelectedKey: keyword,\r\n treeSearchPrams: {},\r\n });\r\n }\r\n if (this.props.onTreeSelect) {\r\n this.props.onTreeSelect(selectedKeys, obj);\r\n return;\r\n }\r\n const fromValue = this.searchRef?.current?.getSearchValues() || {};\r\n searchField && this.tableLoad({ ...fromValue, [searchField]: keyword });\r\n this.props.onCallBacks?.treeSelectCallBack &&\r\n utils.callback(this.props.onCallBacks?.treeSelectCallBack, this, [\r\n selectedKeys,\r\n obj,\r\n ]);\r\n }\r\n resetSearch() {\r\n this.searchRef.current?.resetFields();\r\n }\r\n getText(props, text) {\r\n let newText = text;\r\n if (props?.data && props?.data?.length > 0) {\r\n let data = props.data;\r\n for (let i = 0; i < data?.length; i++) {\r\n if (data[i].value == text) {\r\n newText = data[i].label;\r\n }\r\n }\r\n }\r\n return newText;\r\n }\r\n setTableData(data) {\r\n this.tableRef.current?.store?.setData(data);\r\n }\r\n setTreeData(data) {\r\n this.treeRef.current?.store?.setData(data);\r\n }\r\n getSelectedKey = (selected) => {\r\n let res = [];\r\n for (let key in selected) {\r\n const keys = selected[key];\r\n if (keys.length > 0) {\r\n res = [...res, ...keys];\r\n }\r\n }\r\n return res;\r\n };\r\n\r\n render() {\r\n const {\r\n columns = [],\r\n showSearch = true,\r\n children,\r\n submitUrl = \"\",\r\n tableProps = {},\r\n treeProps = {},\r\n formProps = {},\r\n showLeft = false,\r\n submitParams = {},\r\n showToolButton = true,\r\n buttons = [],\r\n editorForm = true,\r\n onShowForm,\r\n formChangeValid = true,\r\n className,\r\n toolButtonPosition = \"buttom\",\r\n actionProps,\r\n deletePosition = \"toolbar\",\r\n } = this.props;\r\n const {\r\n store,\r\n filterColumn = true,\r\n actionColumn = true,\r\n showRowSelection = true,\r\n columnOrder = true,\r\n expandable = {},\r\n parantSelect = true,\r\n title: tableTitle,\r\n ...othertableParams\r\n } = tableProps;\r\n const {\r\n store: treeStore = {},\r\n showSearch: treeSearch = true,\r\n titleAlias = \"title\",\r\n title: treeTitle,\r\n ...othertreeParams\r\n } = treeProps;\r\n let tableParams = { filterColumn, store, ...othertableParams } as any;\r\n let tableColumn: any[] = [];\r\n const searchForms: any = [];\r\n const editorForms: any = [];\r\n const defaultValue: any = {};\r\n const columnButtons: any = [];\r\n const { elementHeight } = this.state;\r\n\r\n columns.map((item: any) => {\r\n let temp = { width: 100, ...item };\r\n if (temp.search === true || temp.search?.show === true) {\r\n searchForms.push({\r\n name: temp.field || temp.dataIndex,\r\n label: temp.search?.label || temp.title,\r\n type: temp.type,\r\n props: temp.props,\r\n labelCol: temp.search?.labelCol,\r\n wrapperCol: temp.search?.wrapperCol,\r\n rules: temp.searchRules ? temp.searchRules : [],\r\n });\r\n }\r\n\r\n delete temp.search;\r\n temp.editor !== false &&\r\n editorForms.push({\r\n name: temp.field || temp.dataIndex,\r\n label: temp.title,\r\n rules: temp.rules ? temp.rules : [],\r\n type: temp.type,\r\n span: temp.span,\r\n dictName: temp.dictName,\r\n props: { ...temp.props },\r\n });\r\n\r\n if (\r\n temp.props?.defaultValue !== undefined &&\r\n temp.props?.defaultValue !== null\r\n ) {\r\n const name = temp.field || temp.dataIndex;\r\n defaultValue[name] = temp.props?.defaultValue;\r\n }\r\n delete temp.rules;\r\n delete temp.span;\r\n if (temp.columnSearch) {\r\n temp.filterProps = {\r\n type: temp.type,\r\n props: temp.props,\r\n };\r\n }\r\n delete temp.type;\r\n let tempProp = { ...temp.props };\r\n\r\n if (tempProp?.data && tempProp?.data?.length > 0) {\r\n temp = {\r\n ellipsis: { showTitle: false },\r\n render: (text: any) => {\r\n return this.getText(tempProp, text);\r\n },\r\n ...temp,\r\n };\r\n }\r\n delete temp.props;\r\n\r\n // temp.ellipsis = true;\r\n if (temp?.columnShow !== false) tableColumn.push(temp);\r\n });\r\n const selfButtons: any = [];\r\n const { baseActionColumn } = config();\r\n let showIcon = true;\r\n if (actionProps?.showIcon === false) showIcon = false;\r\n else if (baseActionColumn.showIcon === false) showIcon = false;\r\n\r\n if (buttons.indexOf(\"search\") > -1) {\r\n columnButtons.push(\r\n <Button\r\n onClick={(record: any) => {\r\n if (onShowForm) {\r\n onShowForm(record.attribute || record, \"detail\");\r\n return;\r\n }\r\n this.showForm(record.attribute || record, \"detail\");\r\n }}\r\n icon={<EyeOutlined />}\r\n type=\"link\"\r\n >\r\n 查看\r\n </Button>\r\n );\r\n\r\n if (buttons.indexOf(\"editor\") > -1) {\r\n columnButtons.push(\r\n <Button\r\n onClick={(record: any) => {\r\n if (onShowForm) {\r\n onShowForm(record.attribute || record, \"editor\");\r\n return;\r\n }\r\n this.showForm(record.attribute || record, \"editor\");\r\n }}\r\n icon={<EditOutlined />}\r\n >\r\n 编辑\r\n </Button>\r\n );\r\n }\r\n }\r\n if (buttons.indexOf(\"add\") > -1) {\r\n selfButtons.push(\r\n <Button\r\n type={\"primary\"}\r\n onClick={() => {\r\n const { onShowForm } = this.props;\r\n if (onShowForm) {\r\n onShowForm(null, \"add\");\r\n return;\r\n }\r\n this.showForm();\r\n }}\r\n icon={<PlusOutlined />}\r\n >\r\n 添加\r\n </Button>\r\n );\r\n }\r\n if (buttons.indexOf(\"delete\") > -1) {\r\n if (deletePosition == \"toolbar\") {\r\n selfButtons.push(\r\n <Button\r\n // type={\"primary\"}\r\n onClick={this.onDelete.bind(this)}\r\n icon={<DeleteOutlined />}\r\n danger\r\n >\r\n 删除\r\n </Button>\r\n );\r\n } else if (deletePosition == \"row\") {\r\n columnButtons.push(\r\n <Button\r\n // type={\"primary\"}\r\n onClick={(record: any) => {\r\n this.onDelete(record);\r\n }}\r\n icon={<DeleteOutlined />}\r\n danger\r\n type=\"link\"\r\n >\r\n 删除\r\n </Button>\r\n );\r\n }\r\n }\r\n if (Array.isArray(children)) {\r\n children.map((item: any) => {\r\n if (Array.isArray(item)) {\r\n item.map((child) => {\r\n if (child?.props?.pageType == \"toolButton\") {\r\n selfButtons.push(child);\r\n } else if (\r\n child?.props?.pageType == \"cloumnButton\" ||\r\n child?.props?.pageType == \"columnButton\"\r\n ) {\r\n columnButtons.push(child);\r\n }\r\n });\r\n } else {\r\n if (item?.props?.pageType == \"toolButton\") {\r\n selfButtons.push(item);\r\n } else if (\r\n item?.props?.pageType == \"cloumnButton\" ||\r\n item?.props?.pageType == \"columnButton\"\r\n ) {\r\n columnButtons.push(item);\r\n }\r\n }\r\n });\r\n } else if (children) {\r\n const { props }: any = children;\r\n if (props?.pageType == \"toolButton\") {\r\n selfButtons.push(children);\r\n } else if (props?.pageType == \"cloumnButton\") {\r\n columnButtons.push(children);\r\n }\r\n }\r\n actionColumn &&\r\n tableColumn.push({\r\n title: \"操作\",\r\n dataIndex: \"action\",\r\n align: actionProps?.textAlign\r\n ? actionProps?.textAlign\r\n : baseActionColumn.textAlign\r\n ? baseActionColumn.textAlign\r\n : \"left\",\r\n width: actionProps?.width\r\n ? actionProps?.width\r\n : baseActionColumn.width\r\n ? baseActionColumn.width\r\n : 200,\r\n fixed: \"right\",\r\n render: (text: any, record: any) => {\r\n return (\r\n <div className={getLess(styles, \"nsc-basepage-action\")}>\r\n {this.renderCloumnButton(columnButtons, record)}\r\n </div>\r\n );\r\n },\r\n });\r\n\r\n if (columnOrder)\r\n tableColumn = [\r\n {\r\n title: \"序号\",\r\n width: 80,\r\n align: \"center\",\r\n render: (text, reacord, index) => {\r\n return <>{index + 1}</>;\r\n },\r\n },\r\n ...tableColumn,\r\n ];\r\n let searchFlag = showSearch && searchForms.length > 0;\r\n let { tableTool } = config();\r\n let toolFlag =\r\n showToolButton &&\r\n selfButtons.length > 0 &&\r\n toolButtonPosition == \"buttom\";\r\n let toolbarFlag = !(\r\n tableProps.toolbar == false ||\r\n tableProps.toolbar?.show == false ||\r\n tableProps.toolbar?.tools?.length == 0 ||\r\n tableTool?.show == false\r\n );\r\n\r\n let pageHeight = this.props.pageType == \"tabspage\" ? 63 : 0;\r\n let tableHeaderHeight = 55;\r\n\r\n let headerHeight = showSearch && searchForms.length > 0 ? 104 : 0;\r\n let toolHeight = tableTitle || toolFlag ? 48 : 0;\r\n let paddingHeight = 25;\r\n let tableContentHeight =\r\n elementHeight - headerHeight - toolHeight - paddingHeight - pageHeight;\r\n let tableHeight = tableContentHeight - 32 - 32;\r\n let tableSrollHeight = tableContentHeight - tableHeaderHeight - 32 - 32;\r\n if (tableProps.pagination !== false) {\r\n const scroll = tableParams.scroll;\r\n tableParams = {\r\n ...tableParams,\r\n scroll: { x: \"max-content\", y: tableSrollHeight, ...scroll },\r\n };\r\n }\r\n return (\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage\"), className)}\r\n ref={this.pageRef}\r\n >\r\n {this.props.pageTitle && (\r\n <div className={cls(getLess(styles, \"nsc-basepage-title\"))}>\r\n {this.props.pageTitle}\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-pane\"))}\r\n style={{ display: \"flex\" }}\r\n >\r\n {showLeft && (\r\n <div className={getLess(styles, \"nsc-basepage-left\")}>\r\n {treeTitle && (\r\n <div className={getLess(styles, \"tree-title\")}>{treeTitle}</div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"tree-content\"), {\r\n [getLess(styles, \"tree-content-notitle\")]: !treeTitle,\r\n })}\r\n >\r\n <Tree\r\n store={{ ...treeStore }}\r\n showIcon={false}\r\n checkable={false}\r\n searchable={treeSearch}\r\n onSelect={this.treeSelect.bind(this)}\r\n selectedKeys={[this.state.treeSelectedKey]}\r\n titleAlias={titleAlias}\r\n {...othertreeParams}\r\n />\r\n </div>\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-right\"), {\r\n [getLess(styles, \"nsc-basepage-no-left-right\")]: !showLeft,\r\n })}\r\n >\r\n {showSearch && searchForms.length > 0 && (\r\n <div className={getLess(styles, \"nsc-basepage-headersearch\")}>\r\n <HeaderSearch\r\n searchForms={searchForms}\r\n toolButtonPosition={toolButtonPosition}\r\n onSearch={this.onSearch.bind(this)}\r\n onReset={this.props.onReset}\r\n ref={this.searchRef}\r\n searchFormProps={this.props.searchFormProps}\r\n />\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-content\"), {\r\n [getLess(styles, \"nsc-basepage-content-gap\")]: !searchFlag,\r\n })}\r\n >\r\n {(tableTitle || toolFlag) && (\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-table-title\"), {\r\n [getLess(styles, \"nsc-basepage-title-width\")]: !toolbarFlag,\r\n })}\r\n >\r\n <div>{tableTitle}</div>\r\n {toolFlag && this.renderToolButtons(selfButtons, toolbarFlag)}\r\n </div>\r\n )}\r\n\r\n <div\r\n className={cls(\r\n getLess(styles, \"nsc-basepage-table\"),\r\n {\r\n [getLess(styles, \"nsc-basepage-table-top\")]: !toolbarFlag,\r\n },\r\n {\r\n [getLess(styles, \"nsc-basepage-table-top2\")]:\r\n toolbarFlag && !toolFlag,\r\n }\r\n )}\r\n style={{ height: tableContentHeight }}\r\n >\r\n <Table\r\n ref={this.tableRef}\r\n columns={tableColumn}\r\n expandable={{\r\n expandIcon: ({ expanded, onExpand, record }) => {\r\n return (\r\n <>\r\n {expanded &&\r\n record.childNodes &&\r\n record.childNodes?.length > 0 ? (\r\n <DownOutlined\r\n onClick={(e) => onExpand(record, e)}\r\n className={getLess(styles, \"expand-icon\")}\r\n />\r\n ) : record.childNodes &&\r\n record.childNodes?.length > 0 ? (\r\n <RightOutlined\r\n onClick={(e) => onExpand(record, e)}\r\n className={getLess(styles, \"expand-icon\")}\r\n />\r\n ) : null}\r\n </>\r\n );\r\n },\r\n ...expandable,\r\n }}\r\n columnOrder={true}\r\n onChange={(pagination) => {\r\n const { currentPage } = this.state;\r\n if (currentPage !== pagination.current) {\r\n this.setState({\r\n currentPage: pagination.current,\r\n });\r\n }\r\n }}\r\n toolbar={{\r\n onToolClick: {\r\n onRefresh: () => {\r\n const params = this.getSearchValues();\r\n this.tableLoad(params);\r\n },\r\n },\r\n ...tableProps.toolbar,\r\n }}\r\n showRowSelection={showRowSelection}\r\n style={{ height: tableHeight }}\r\n {...tableParams}\r\n // pagination={false}\r\n />\r\n {/* <div></div> */}\r\n </div>\r\n </div>\r\n </div>\r\n {editorForm && (\r\n <EditorForm\r\n ref={this.editorRef}\r\n callBack={() => {\r\n this.props.onCallBacks?.onSumbitCallBack &&\r\n this.props.onCallBacks?.onSumbitCallBack();\r\n this.tableReload();\r\n }}\r\n formProps={editorForms}\r\n submitUrl={submitUrl}\r\n submitParams={submitParams}\r\n onSubmit={this.props.onSubmit}\r\n defaultValue={defaultValue}\r\n onHideForm={this.props.onHideForm}\r\n onFormChange={this.props.onFormChange}\r\n formType={this.props.formType || \"auto\"}\r\n changeValid={formChangeValid}\r\n otherProps={{ ...formProps }}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\nexport default BasePage;\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","PureComponent","Table","Tree","Button","Modal","Popover","message","EditorForm","cls","utils","DownOutlined","EyeOutlined","EditOutlined","RightOutlined","PlusOutlined","EllipsisOutlined","DeleteOutlined","getLess","request","config","getStorage","HeaderSearch","styles","BasePage","constructor","props","_type","_size","_defineProperty","createRef","checkedTreeKeys","name","userType","account","state","value","deptId","onSearch","selected","res","key","keys","length","storePrefix","type","content","size","selectedRowKeys","selectedRowDatas","treeSelectedKey","expand","formType","tableSize","treeSearchPrams","popopens","moreOpen","elementHeight","componentDidMount","_this$pageRef$current","initData","pageRef","current","clientHeight","setState","componentDidUpdate","_this$pageRef$current2","setSearchParams","params","callBack","_this$searchRef$curre","searchRef","doSubmit","data","_this$editorRef$curre","label","arguments","undefined","editorRef","showForm","_this$editorRef","editorflag","newValue","_objectSpread","show","hideForm","_this$editorRef$curre2","setLoading","loading","_this$editorRef$curre3","setEditFormValues","_this$editorRef$curre4","setFieldsValue","getEditFormValues","_this$editorRef$curre5","getFieldsValue","onDelete","_this$tableRef$curren","deleteUrl","deleteParams","deletePosition","_this","tableRef","getSelectedRowKeys","warning","confirm","onOk","Error","defaultParams","method","autoPrefix","ids","join","id","requestParams","then","code","_this$searchRef","_this$props$onCallBac","_this$props$onCallBac2","success","getSearchValues","onCallBacks","onDeleteCallBack","tableLoad","error","catch","console","log","_this$tableRef$curren2","requestConfig","store","load","onSearchCallBack","callback","tableReload","_this$tableRef$curren3","autoLoad","reload","_res$data","records","currentPage","_this$tableRef$curren4","_this$tableRef$curren5","getSelectedRowDatas","_this$tableRef$curren6","setSelectedRowKeys","_this$tableRef$curren7","setSelectedRowDatas","_this$tableRef$curren8","resetSelectedRowKeys","_this$tableRef$curren9","_this$searchRef2","fromValue","getChildrenData","tableProps","rowKey","resKey","childNodes","children","map","item","index","renderToolButtons","toolbuttons","toolbarFlag","flag","showSearch","_item$props","pageType","onClick","icon","_objectWithoutProperties","_excluded","createElement","className","_extends","style","marginLeft","marginRight","title","placement","open","onOpenChange","renderCloumnButton","columnButtons","record","actionProps","baseActionColumn","newButtons","showIcon","_item$props2","recordShow","_excluded2","eval","push","number","buttonNumber","_item$props3","_excluded3","Number","_item$props4","_excluded4","trigger","treeSelect","selectedKeys","obj","_this$searchRef3","_this$props$onCallBac3","_this$props$onCallBac4","keyword","searchKey","searchField","parantSelect","treeProps","selectedNodes","dataref","attribute","isLeaf","onTreeSelect","treeSelectCallBack","resetSearch","_this$searchRef$curre2","resetFields","getText","text","_props$data","newText","i","setTableData","_this$tableRef$curren10","setData","setTreeData","_this$treeRef$current","treeRef","render","_tableProps$toolbar","_tableProps$toolbar2","columns","submitUrl","formProps","showLeft","submitParams","showToolButton","buttons","editorForm","onShowForm","formChangeValid","toolButtonPosition","filterColumn","actionColumn","showRowSelection","columnOrder","expandable","tableTitle","othertableParams","_excluded5","treeStore","treeSearch","titleAlias","treeTitle","othertreeParams","_excluded6","tableParams","tableColumn","searchForms","editorForms","defaultValue","_temp$search","_temp$props","_temp$props2","_tempProp$data","_temp","temp","width","search","_temp$search2","_temp$search3","_temp$search4","field","dataIndex","labelCol","wrapperCol","rules","searchRules","editor","span","dictName","_temp$props3","columnSearch","filterProps","tempProp","ellipsis","showTitle","columnShow","selfButtons","indexOf","bind","danger","Array","isArray","child","_child$props","_child$props2","_child$props3","_item$props5","_item$props6","_item$props7","align","textAlign","fixed","reacord","Fragment","searchFlag","tableTool","toolFlag","toolbar","tools","pageHeight","tableHeaderHeight","headerHeight","toolHeight","paddingHeight","tableContentHeight","tableHeight","tableSrollHeight","pagination","scroll","x","y","ref","pageTitle","display","checkable","searchable","onSelect","onReset","searchFormProps","height","expandIcon","_ref","_record$childNodes","_record$childNodes2","expanded","onExpand","e","onChange","onToolClick","onRefresh","_this$props$onCallBac5","_this$props$onCallBac6","onSumbitCallBack","onSubmit","onHideForm","onFormChange","changeValid","otherProps"],"sources":["../../../src/components/page/BasePage/index.tsx"],"sourcesContent":["import React, { PureComponent, ReactNode } from \"react\";\r\nimport Table from \"../../base/table\";\r\nimport Tree from \"../../base/tree\";\r\nimport Button from \"../../base/button\";\r\nimport Modal from \"../../base/modal\";\r\nimport Popover from \"../../base/popover\";\r\nimport message from \"../../base/message\";\r\nimport EditorForm from \"./Form\";\r\nimport cls from \"classnames\";\r\nimport \"./index.module.less\";\r\nimport Store, { PageStore, StoreProps } from \"@bj-nsc/msn\";\r\nimport { utils } from \"@bj-nsc/msn/lib/utils\";\r\nimport {\r\n DownOutlined,\r\n EyeOutlined,\r\n EditOutlined,\r\n RightOutlined,\r\n PlusOutlined,\r\n EllipsisOutlined,\r\n DeleteOutlined,\r\n} from \"@ant-design/icons\";\r\nimport { getLess, getNode } from \"../../utils\";\r\nimport request from \"nsc-request\";\r\nimport omit from \"omit.js\";\r\nimport config from \"../../config\";\r\nimport { getStorage, px2vw } from \"@bj-nsc/functions\";\r\nimport { IFormProps } from \"../../base/form/Form\";\r\nimport HeaderSearch from \"../HeaderSearch\";\r\nimport { PaginationProps } from \"antd\";\r\nimport { number } from \"echarts\";\r\ninterface TableProps {\r\n actionColumn?: boolean; //是否显示操作列\r\n store?: StoreProps;\r\n filterColumn?: boolean; //是否显示过滤按钮\r\n showRowSelection?: boolean; //是否表格勾选列\r\n pagination?: boolean | PaginationProps; //是否显示分页\r\n columnOrder?: boolean; //是否显示表格序列\r\n [propsName: string]: any;\r\n}\r\nconst styles = null;\r\ninterface TreeProps {\r\n store?: StoreProps;\r\n showSearch?: boolean; //是否显示搜索框\r\n searchKey?: string; //搜索value对应的key\r\n searchField?: string; //查询对应的key\r\n titleAlias?: string; //树title对应的key,默认title\r\n nodePorps?: object;\r\n parantSelect?: boolean;\r\n [propsName: string]: any;\r\n}\r\ninterface FormProps extends IFormProps {}\r\ninterface NSCBaseBageProps {\r\n showSearch?: boolean; //是否显示头部搜索栏\r\n tableProps?: TableProps; //表格参数\r\n treeProps?: TreeProps; //左侧树参数\r\n submitParams?: Object; //添加参数,默认mothod:post, 参数通过data传递\r\n submitUrl?: string;\r\n onSubmit?: (value?: any, label?: any) => void;\r\n columns: Array<Object>;\r\n showLeft?: boolean; //是否显示左侧目录树\r\n showToolButton?: boolean; //是否显示按钮栏\r\n editorForm?: boolean; //是否需要表单功能 , 为false 编辑,查看,新增功能均不可用\r\n deleteUrl?: string; //删除url\r\n onDelete?: (selectedKeys?: Array<string>) => void; //删除参数,默认mothod:post, 参数通过ids拼接传递给后台\r\n deletePosition?: \"toolbar\" | \"row\";\r\n deleteParams?: Object;\r\n children?: React.ReactNode;\r\n onSearch?: (value?: any) => void;\r\n onReset?: () => void;\r\n initData?: any; //初始化回调函数,在componentDidMount中调用\r\n buttons?: Array<string>; //按钮集合 ['add','delete','search','editor']\r\n onShowForm?: (value?: any, editorFlag?: string) => void; //打开表单回调\r\n onHideForm?: () => void; //打开表单回调\r\n onFormChange?: (changedValues?: any, allValues?: any) => void; //表单onChange回调\r\n formType?: \"modal\" | \"drawer\";\r\n formChangeValid?: boolean; //表单校验\r\n className?: any;\r\n toolButtonPosition?: \"right\" | \"buttom\";\r\n pageTitle?: string | ReactNode;\r\n formProps?: FormProps;\r\n actionProps?: {\r\n textAlign?: string;\r\n showIcon?: boolean;\r\n width?: number;\r\n buttonNumber?: number | \"all\";\r\n };\r\n searchFormProps?: { wrapperCol?: any; labelCol?: any };\r\n onTreeSelect?: (value?: any, editorFlag?: string) => void; //打开表单回调\r\n onCallBacks?: {\r\n treeSelectCallBack?: any;\r\n onSearchCallBack?: any;\r\n onSumbitCallBack?: any;\r\n onDeleteCallBack?: any;\r\n };\r\n pageType?: \"normal\" | \"tabspage\";\r\n}\r\n\r\nclass BasePage extends PureComponent<NSCBaseBageProps, any> {\r\n tableRef = React.createRef<any>();\r\n treeRef = React.createRef<any>();\r\n searchRef = React.createRef<any>();\r\n editorRef = React.createRef<any>();\r\n pageRef = React.createRef<any>();\r\n dateFormat = {} as any;\r\n constructor(props: any) {\r\n super(props);\r\n let { storePrefix } = config();\r\n let type = getStorage(\r\n storePrefix ? storePrefix + \"-\" + \"formType\" : \"formType\"\r\n );\r\n type = type?.content;\r\n let size = getStorage(\r\n storePrefix ? storePrefix + \"-\" + \"tableSize\" : \"tableSize\"\r\n );\r\n size = size?.content;\r\n this.state = {\r\n type: \"add\",\r\n selectedRowKeys: [],\r\n selectedRowDatas: [],\r\n treeSelectedKey: \"\",\r\n expand: false,\r\n formType: type || \"modal\",\r\n tableSize: size || \"default\",\r\n treeSearchPrams: {},\r\n popopens: {},\r\n moreOpen: false,\r\n elementHeight: 0,\r\n };\r\n }\r\n componentDidMount() {\r\n const { initData } = this.props;\r\n const elementHeight = this.pageRef.current?.clientHeight;\r\n this.setState({\r\n elementHeight,\r\n });\r\n initData && initData();\r\n }\r\n componentDidUpdate() {\r\n const elementHeight = this.pageRef.current?.clientHeight;\r\n if (elementHeight > this.state.elementHeight) {\r\n this.setState({\r\n elementHeight,\r\n });\r\n }\r\n }\r\n setSearchParams(params, callBack) {\r\n this.searchRef.current?.setSearchParams(params);\r\n callBack && callBack(params);\r\n }\r\n doSubmit(data, label = \"编辑\") {\r\n this.editorRef.current?.doSubmit(data, label);\r\n }\r\n\r\n onSelect = (checkedTreeKeys: any) => {\r\n const { name, userType, account } = this.state;\r\n const value = { name, userType, account, deptId: checkedTreeKeys[0] };\r\n if (this.props.onSearch) {\r\n this.props.onSearch(value);\r\n }\r\n // this.tableLoad(value);\r\n };\r\n\r\n //显示表单\r\n showForm(value?: any, editorflag = \"add\") {\r\n let newValue = value ? { ...value } : null;\r\n this.editorRef?.current?.show(newValue, editorflag);\r\n }\r\n\r\n //关闭表单\r\n hideForm() {\r\n this.editorRef.current?.hideForm();\r\n }\r\n\r\n setLoading(loading: boolean) {\r\n this.editorRef.current?.setLoading(loading);\r\n }\r\n\r\n setEditFormValues(value) {\r\n this.editorRef.current?.setFieldsValue(value);\r\n }\r\n\r\n getEditFormValues() {\r\n return this.editorRef.current?.getFieldsValue();\r\n }\r\n\r\n //批量删除\r\n onDelete(data?: any) {\r\n const {\r\n deleteUrl,\r\n onDelete,\r\n deleteParams,\r\n deletePosition = \"toolbar\",\r\n } = this.props;\r\n let _this = this;\r\n const selectedRowKeys = this.tableRef.current?.getSelectedRowKeys();\r\n if (deletePosition == \"toolbar\") {\r\n if (selectedRowKeys.length == 0) {\r\n message.warning(\"请选择要删除的数据!\");\r\n return;\r\n }\r\n }\r\n Modal.confirm({\r\n content: \"是否确认删除所选项?\",\r\n // centered:true,\r\n onOk: () => {\r\n if (onDelete) {\r\n onDelete &&\r\n onDelete(deletePosition == \"toolbar\" ? selectedRowKeys : data);\r\n return;\r\n }\r\n if (!deleteUrl) {\r\n throw new Error(\"url不能为空!\");\r\n }\r\n const defaultParams = {\r\n method: \"post\",\r\n autoPrefix: true,\r\n params: {\r\n ids: deletePosition == \"toolbar\" ? selectedRowKeys.join() : data.id,\r\n },\r\n };\r\n let requestParams = {} as any;\r\n if (defaultParams) {\r\n requestParams = { ...deleteParams };\r\n }\r\n requestParams = { ...defaultParams };\r\n request(deleteUrl, {\r\n ...requestParams,\r\n })\r\n .then(function (res: any) {\r\n const { code } = res;\r\n if (code === 200) {\r\n message.success(\"删除成功!\");\r\n let value = _this.searchRef?.current?.getSearchValues();\r\n _this.props.onCallBacks?.onDeleteCallBack &&\r\n _this.props.onCallBacks?.onDeleteCallBack();\r\n _this.tableLoad(value);\r\n } else {\r\n message.error(\"删除失败!\");\r\n }\r\n })\r\n .catch(function (error: any) {\r\n console.log(\"error\", error);\r\n });\r\n },\r\n });\r\n }\r\n tableLoad(params: any, requestConfig = {}) {\r\n this.tableRef.current?.store.load({\r\n ...requestConfig,\r\n params: params,\r\n });\r\n }\r\n //查询\r\n onSearch(params) {\r\n const { onSearch, onCallBacks } = this.props;\r\n if (onSearch) {\r\n onSearch({ ...params, ...this.state.treeSearchPrams });\r\n return;\r\n }\r\n this.tableLoad({ ...params, ...this.state.treeSearchPrams });\r\n onCallBacks?.onSearchCallBack &&\r\n utils.callback(onCallBacks?.onSearchCallBack, this, [params]);\r\n }\r\n //表格重新加载\r\n tableReload(params = {}, autoLoad = true) {\r\n this.tableRef.current?.store?.reload({\r\n callback: (res) => {\r\n if (\r\n autoLoad &&\r\n res?.data?.records?.length == 0 &&\r\n this.state.currentPage !== 1\r\n ) {\r\n this.tableRef.current?.store?.reload({\r\n params: { current: 1, ...params },\r\n });\r\n }\r\n },\r\n });\r\n }\r\n getSelectedRowKeys() {\r\n return this.tableRef.current?.getSelectedRowKeys();\r\n }\r\n getSelectedRowDatas() {\r\n return this.tableRef.current?.getSelectedRowDatas();\r\n }\r\n setSelectedRowKeys(data: Array<String | Number>) {\r\n return this.tableRef.current?.setSelectedRowKeys(data);\r\n }\r\n setSelectedRowDatas(data: Array<Object>) {\r\n return this.tableRef.current?.setSelectedRowDatas(data);\r\n }\r\n resetSelectedRowKeys() {\r\n return this.tableRef.current?.resetSelectedRowKeys();\r\n }\r\n\r\n getSearchValues() {\r\n const fromValue = this.searchRef?.current?.getSearchValues();\r\n return { ...fromValue, ...this.state.treeSearchPrams };\r\n }\r\n\r\n getChildrenData(data, keys = []) {\r\n const { tableProps } = this.props;\r\n const { rowKey = \"id\" } = tableProps;\r\n let resKey = [];\r\n if (data.childNodes) {\r\n const children = data.childNodes;\r\n children.map((item, index) => {\r\n if (item.childNodes) {\r\n this.getChildrenData(item.childNodes, keys);\r\n } else {\r\n resKey = [...keys, item[rowKey]];\r\n }\r\n });\r\n } else {\r\n resKey = [...keys, data[rowKey]];\r\n }\r\n return resKey;\r\n }\r\n\r\n renderToolButtons(toolbuttons: any, toolbarFlag) {\r\n const flag = toolbuttons.length > 5;\r\n // toolbuttons = [...toolbuttons].reverse();\r\n const { showSearch = true } = this.props;\r\n const content = toolbuttons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, icon, show, ...params } = item.props;\r\n if (index > 3) {\r\n return (\r\n <div\r\n className={cls(\r\n getLess(styles, \"nsc-basepage-editor\"),\r\n getLess(styles, \"nsc-basepage-content-item\")\r\n )}\r\n >\r\n <Button\r\n key={index}\r\n onClick={() => {\r\n this.setState({\r\n moreOpen: false,\r\n });\r\n onClick && onClick();\r\n }}\r\n {...params}\r\n type={\"link\"}\r\n >\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n </div>\r\n );\r\n }\r\n });\r\n\r\n return (\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-tool-buttons\"))}\r\n style={{ marginLeft: 0 }}\r\n >\r\n {toolbuttons.map((item: any, index: any) => {\r\n if (flag) {\r\n if (index < 4) {\r\n return (\r\n <div\r\n key={index}\r\n style={{\r\n marginRight: 12,\r\n }}\r\n >\r\n {item}\r\n </div>\r\n );\r\n } else if (index == 4) {\r\n return (\r\n <Popover\r\n content={content}\r\n title={null}\r\n placement=\"bottom\"\r\n key={index}\r\n open={this.state.moreOpen}\r\n onOpenChange={(open) => {\r\n if (open) {\r\n this.setState({\r\n moreOpen: true,\r\n });\r\n } else {\r\n this.setState({\r\n moreOpen: false,\r\n });\r\n }\r\n }}\r\n // open={true}\r\n // overlayClassName={styles['pop-box']}\r\n >\r\n <Button type=\"primary\">\r\n 更多 <DownOutlined />\r\n </Button>\r\n </Popover>\r\n );\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return (\r\n <div\r\n key={index}\r\n style={{\r\n marginRight: index == toolbuttons.length - 1 ? 0 : 12,\r\n }}\r\n >\r\n {item}\r\n </div>\r\n );\r\n }\r\n })}\r\n </div>\r\n );\r\n }\r\n renderCloumnButton(columnButtons: any, record: any) {\r\n const { actionProps } = this.props;\r\n const { baseActionColumn } = config();\r\n const newButtons = [];\r\n let showIcon = true;\r\n if (actionProps?.showIcon === false) showIcon = false;\r\n else if (baseActionColumn.showIcon === false) showIcon = false;\r\n columnButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, icon, recordShow, ...params } =\r\n item.props;\r\n if (recordShow) {\r\n if (typeof recordShow == \"string\") {\r\n if (eval(recordShow)) {\r\n newButtons.push(item);\r\n }\r\n } else if (typeof recordShow == \"function\") {\r\n const show = recordShow(record);\r\n show && newButtons.push(item);\r\n }\r\n } else {\r\n newButtons.push(item);\r\n }\r\n });\r\n let number = actionProps?.buttonNumber\r\n ? actionProps?.buttonNumber\r\n : baseActionColumn?.buttonNumber\r\n ? baseActionColumn?.buttonNumber\r\n : 3;\r\n let flag = false;\r\n if (number == \"all\") {\r\n flag = false;\r\n } else {\r\n flag = newButtons.length > number;\r\n }\r\n\r\n const content = newButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, recordShow, icon, show, ...params } =\r\n item.props;\r\n if (index > Number(number) - 1) {\r\n return (\r\n <Button\r\n className={cls(\r\n getLess(styles, \"nsc-basepage-editor\"),\r\n getLess(styles, \"nsc-basepage-content-item\")\r\n )}\r\n key={index}\r\n onClick={() => {\r\n let data = { ...this.state.popopens };\r\n data[record.id] = false;\r\n this.setState({\r\n popopens: data,\r\n });\r\n onClick && onClick(record);\r\n }}\r\n {...params}\r\n type={\"link\"}\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n );\r\n }\r\n });\r\n return newButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, recordShow, icon, ...params } =\r\n item.props;\r\n if (flag) {\r\n if (index < number) {\r\n return (\r\n <Button\r\n className={cls(getLess(styles, \"nsc-basepage-editor\"), {\r\n [getLess(styles, \"nsc-basepage-editor-first\")]: index === 0,\r\n })}\r\n key={index}\r\n onClick={() => {\r\n onClick && onClick(record);\r\n }}\r\n icon={icon}\r\n {...params}\r\n type={\"link\"}\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n );\r\n } else if (index == number) {\r\n return (\r\n <Popover\r\n placement=\"bottom\"\r\n title={null}\r\n content={content}\r\n trigger={[\"click\"]}\r\n key={index}\r\n open={this.state.popopens[record.id] || false}\r\n onOpenChange={(open) => {\r\n if (open) {\r\n let data = { ...this.state.popopens };\r\n data[record.id] = true;\r\n this.setState({\r\n popopens: data,\r\n });\r\n } else {\r\n this.setState({\r\n popopens: {},\r\n });\r\n }\r\n }}\r\n // overlayClassName={styles['pop']}\r\n >\r\n <a className={getLess(styles, \"nsc-basepage-editor\")}>\r\n <EllipsisOutlined />\r\n </a>\r\n </Popover>\r\n );\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return (\r\n <Button\r\n className={cls(getLess(styles, \"nsc-basepage-editor\"), {\r\n [getLess(styles, \"nsc-basepage-editor-first\")]: index === 0,\r\n })}\r\n key={index}\r\n onClick={() => {\r\n onClick && onClick(record);\r\n }}\r\n {...params}\r\n type=\"link\"\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n );\r\n }\r\n });\r\n // }\r\n }\r\n //树点击事件\r\n treeSelect(selectedKeys: any, obj: any) {\r\n let keyword = \"\";\r\n const {\r\n searchKey = \"key\",\r\n searchField = \"\",\r\n parantSelect = true,\r\n } = this.props.treeProps;\r\n const { treeSelectedKey } = this.state;\r\n const { selected, selectedNodes } = obj;\r\n\r\n if (selected) {\r\n keyword = selectedNodes[0].dataref.attribute[searchKey];\r\n if (parantSelect) {\r\n this.setState({\r\n treeSelectedKey: selectedKeys[0],\r\n treeSearchPrams: { [searchField]: keyword },\r\n });\r\n } else {\r\n if (selectedNodes[0].isLeaf || !selectedNodes[0].children) {\r\n if (selectedKeys[0] !== treeSelectedKey) {\r\n this.setState({\r\n treeSelectedKey: selectedKeys[0],\r\n treeSearchPrams: { [searchField]: keyword },\r\n });\r\n }\r\n }\r\n }\r\n } else {\r\n this.setState({\r\n treeSelectedKey: keyword,\r\n treeSearchPrams: {},\r\n });\r\n }\r\n if (this.props.onTreeSelect) {\r\n this.props.onTreeSelect(selectedKeys, obj);\r\n return;\r\n }\r\n const fromValue = this.searchRef?.current?.getSearchValues() || {};\r\n searchField && this.tableLoad({ ...fromValue, [searchField]: keyword });\r\n this.props.onCallBacks?.treeSelectCallBack &&\r\n utils.callback(this.props.onCallBacks?.treeSelectCallBack, this, [\r\n selectedKeys,\r\n obj,\r\n ]);\r\n }\r\n resetSearch() {\r\n this.searchRef.current?.resetFields();\r\n }\r\n getText(props, text) {\r\n let newText = text;\r\n if (props?.data && props?.data?.length > 0) {\r\n let data = props.data;\r\n for (let i = 0; i < data?.length; i++) {\r\n if (data[i].value == text) {\r\n newText = data[i].label;\r\n }\r\n }\r\n }\r\n return newText;\r\n }\r\n setTableData(data) {\r\n this.tableRef.current?.store?.setData(data);\r\n }\r\n setTreeData(data) {\r\n this.treeRef.current?.store?.setData(data);\r\n }\r\n getSelectedKey = (selected) => {\r\n let res = [];\r\n for (let key in selected) {\r\n const keys = selected[key];\r\n if (keys.length > 0) {\r\n res = [...res, ...keys];\r\n }\r\n }\r\n return res;\r\n };\r\n\r\n render() {\r\n const {\r\n columns = [],\r\n showSearch = true,\r\n children,\r\n submitUrl = \"\",\r\n tableProps = {},\r\n treeProps = {},\r\n formProps = {},\r\n showLeft = false,\r\n submitParams = {},\r\n showToolButton = true,\r\n buttons = [],\r\n editorForm = true,\r\n onShowForm,\r\n formChangeValid = true,\r\n className,\r\n toolButtonPosition = \"buttom\",\r\n actionProps,\r\n deletePosition = \"toolbar\",\r\n } = this.props;\r\n const {\r\n store,\r\n filterColumn = true,\r\n actionColumn = true,\r\n showRowSelection = true,\r\n columnOrder = true,\r\n expandable = {},\r\n parantSelect = true,\r\n title: tableTitle,\r\n ...othertableParams\r\n } = tableProps;\r\n const {\r\n store: treeStore = {},\r\n showSearch: treeSearch = true,\r\n titleAlias = \"title\",\r\n title: treeTitle,\r\n ...othertreeParams\r\n } = treeProps;\r\n let tableParams = { filterColumn, store, ...othertableParams } as any;\r\n let tableColumn: any[] = [];\r\n const searchForms: any = [];\r\n const editorForms: any = [];\r\n const defaultValue: any = {};\r\n const columnButtons: any = [];\r\n const { elementHeight } = this.state;\r\n\r\n columns.map((item: any) => {\r\n let temp = { width: 100, ...item };\r\n if (temp.search === true || temp.search?.show === true) {\r\n searchForms.push({\r\n name: temp.field || temp.dataIndex,\r\n label: temp.search?.label || temp.title,\r\n type: temp.type,\r\n props: temp.props,\r\n labelCol: temp.search?.labelCol,\r\n wrapperCol: temp.search?.wrapperCol,\r\n rules: temp.searchRules ? temp.searchRules : [],\r\n });\r\n }\r\n\r\n delete temp.search;\r\n temp.editor !== false &&\r\n editorForms.push({\r\n name: temp.field || temp.dataIndex,\r\n label: temp.title,\r\n rules: temp.rules ? temp.rules : [],\r\n type: temp.type,\r\n span: temp.span,\r\n dictName: temp.dictName,\r\n props: { ...temp.props },\r\n });\r\n\r\n if (\r\n temp.props?.defaultValue !== undefined &&\r\n temp.props?.defaultValue !== null\r\n ) {\r\n const name = temp.field || temp.dataIndex;\r\n defaultValue[name] = temp.props?.defaultValue;\r\n }\r\n delete temp.rules;\r\n delete temp.span;\r\n if (temp.columnSearch) {\r\n temp.filterProps = {\r\n type: temp.type,\r\n props: temp.props,\r\n };\r\n }\r\n delete temp.type;\r\n let tempProp = { ...temp.props };\r\n\r\n if (tempProp?.data && tempProp?.data?.length > 0) {\r\n temp = {\r\n ellipsis: { showTitle: false },\r\n render: (text: any) => {\r\n return this.getText(tempProp, text);\r\n },\r\n ...temp,\r\n };\r\n }\r\n delete temp.props;\r\n\r\n // temp.ellipsis = true;\r\n if (temp?.columnShow !== false) tableColumn.push(temp);\r\n });\r\n const selfButtons: any = [];\r\n const { baseActionColumn } = config();\r\n let showIcon = true;\r\n if (actionProps?.showIcon === false) showIcon = false;\r\n else if (baseActionColumn.showIcon === false) showIcon = false;\r\n if (buttons.indexOf(\"search\") > -1) {\r\n columnButtons.push(\r\n <Button\r\n onClick={(record: any) => {\r\n if (onShowForm) {\r\n onShowForm(record.attribute || record, \"detail\");\r\n return;\r\n }\r\n this.showForm(record.attribute || record, \"detail\");\r\n }}\r\n icon={showIcon ? <EyeOutlined /> : null}\r\n type=\"link\"\r\n >\r\n 查看\r\n </Button>\r\n );\r\n }\r\n if (buttons.indexOf(\"editor\") > -1) {\r\n columnButtons.push(\r\n <Button\r\n onClick={(record: any) => {\r\n if (onShowForm) {\r\n onShowForm(record.attribute || record, \"editor\");\r\n return;\r\n }\r\n this.showForm(record.attribute || record, \"editor\");\r\n }}\r\n icon={showIcon ? <EditOutlined /> : null}\r\n >\r\n 编辑\r\n </Button>\r\n );\r\n }\r\n if (buttons.indexOf(\"add\") > -1) {\r\n selfButtons.push(\r\n <Button\r\n type={\"primary\"}\r\n onClick={() => {\r\n const { onShowForm } = this.props;\r\n if (onShowForm) {\r\n onShowForm(null, \"add\");\r\n return;\r\n }\r\n this.showForm();\r\n }}\r\n icon={<PlusOutlined />}\r\n >\r\n 添加\r\n </Button>\r\n );\r\n }\r\n if (buttons.indexOf(\"delete\") > -1) {\r\n if (deletePosition == \"toolbar\") {\r\n selfButtons.push(\r\n <Button\r\n // type={\"primary\"}\r\n onClick={this.onDelete.bind(this)}\r\n icon={<DeleteOutlined />}\r\n danger\r\n >\r\n 删除\r\n </Button>\r\n );\r\n } else if (deletePosition == \"row\") {\r\n columnButtons.push(\r\n <Button\r\n // type={\"primary\"}\r\n onClick={(record: any) => {\r\n this.onDelete(record);\r\n }}\r\n icon={<DeleteOutlined />}\r\n danger\r\n type=\"link\"\r\n >\r\n 删除\r\n </Button>\r\n );\r\n }\r\n }\r\n if (Array.isArray(children)) {\r\n children.map((item: any) => {\r\n if (Array.isArray(item)) {\r\n item.map((child) => {\r\n if (child?.props?.pageType == \"toolButton\") {\r\n selfButtons.push(child);\r\n } else if (\r\n child?.props?.pageType == \"cloumnButton\" ||\r\n child?.props?.pageType == \"columnButton\"\r\n ) {\r\n columnButtons.push(child);\r\n }\r\n });\r\n } else {\r\n if (item?.props?.pageType == \"toolButton\") {\r\n selfButtons.push(item);\r\n } else if (\r\n item?.props?.pageType == \"cloumnButton\" ||\r\n item?.props?.pageType == \"columnButton\"\r\n ) {\r\n columnButtons.push(item);\r\n }\r\n }\r\n });\r\n } else if (children) {\r\n const { props }: any = children;\r\n if (props?.pageType == \"toolButton\") {\r\n selfButtons.push(children);\r\n } else if (props?.pageType == \"cloumnButton\") {\r\n columnButtons.push(children);\r\n }\r\n }\r\n actionColumn &&\r\n tableColumn.push({\r\n title: \"操作\",\r\n dataIndex: \"action\",\r\n align: actionProps?.textAlign\r\n ? actionProps?.textAlign\r\n : baseActionColumn.textAlign\r\n ? baseActionColumn.textAlign\r\n : \"left\",\r\n width: actionProps?.width\r\n ? actionProps?.width\r\n : baseActionColumn.width\r\n ? baseActionColumn.width\r\n : 200,\r\n fixed: \"right\",\r\n render: (text: any, record: any) => {\r\n return (\r\n <div className={getLess(styles, \"nsc-basepage-action\")}>\r\n {this.renderCloumnButton(columnButtons, record)}\r\n </div>\r\n );\r\n },\r\n });\r\n\r\n if (columnOrder)\r\n tableColumn = [\r\n {\r\n title: \"序号\",\r\n width: 80,\r\n align: \"center\",\r\n render: (text, reacord, index) => {\r\n return <>{index + 1}</>;\r\n },\r\n },\r\n ...tableColumn,\r\n ];\r\n let searchFlag = showSearch && searchForms.length > 0;\r\n let { tableTool } = config();\r\n let toolFlag =\r\n showToolButton &&\r\n selfButtons.length > 0 &&\r\n toolButtonPosition == \"buttom\";\r\n let toolbarFlag = !(\r\n tableProps.toolbar == false ||\r\n tableProps.toolbar?.show == false ||\r\n tableProps.toolbar?.tools?.length == 0 ||\r\n tableTool?.show == false\r\n );\r\n\r\n let pageHeight = this.props.pageType == \"tabspage\" ? 63 : 0;\r\n let tableHeaderHeight = 55;\r\n\r\n let headerHeight = showSearch && searchForms.length > 0 ? 104 : 0;\r\n let toolHeight = tableTitle || toolFlag ? 48 : 0;\r\n let paddingHeight = 25;\r\n let tableContentHeight =\r\n elementHeight - headerHeight - toolHeight - paddingHeight - pageHeight;\r\n let tableHeight = tableContentHeight - 32 - 32;\r\n let tableSrollHeight = tableContentHeight - tableHeaderHeight - 32 - 32;\r\n if (tableProps.pagination !== false) {\r\n const scroll = tableParams.scroll;\r\n tableParams = {\r\n ...tableParams,\r\n scroll: { x: \"max-content\", y: tableSrollHeight, ...scroll },\r\n };\r\n }\r\n return (\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage\"), className)}\r\n ref={this.pageRef}\r\n >\r\n {this.props.pageTitle && (\r\n <div className={cls(getLess(styles, \"nsc-basepage-title\"))}>\r\n {this.props.pageTitle}\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-pane\"))}\r\n style={{ display: \"flex\" }}\r\n >\r\n {showLeft && (\r\n <div className={getLess(styles, \"nsc-basepage-left\")}>\r\n {treeTitle && (\r\n <div className={getLess(styles, \"tree-title\")}>{treeTitle}</div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"tree-content\"), {\r\n [getLess(styles, \"tree-content-notitle\")]: !treeTitle,\r\n })}\r\n >\r\n <Tree\r\n store={{ ...treeStore }}\r\n showIcon={false}\r\n checkable={false}\r\n searchable={treeSearch}\r\n onSelect={this.treeSelect.bind(this)}\r\n selectedKeys={[this.state.treeSelectedKey]}\r\n titleAlias={titleAlias}\r\n {...othertreeParams}\r\n />\r\n </div>\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-right\"), {\r\n [getLess(styles, \"nsc-basepage-no-left-right\")]: !showLeft,\r\n })}\r\n >\r\n {showSearch && searchForms.length > 0 && (\r\n <div className={getLess(styles, \"nsc-basepage-headersearch\")}>\r\n <HeaderSearch\r\n searchForms={searchForms}\r\n toolButtonPosition={toolButtonPosition}\r\n onSearch={this.onSearch.bind(this)}\r\n onReset={this.props.onReset}\r\n ref={this.searchRef}\r\n searchFormProps={this.props.searchFormProps}\r\n />\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-content\"), {\r\n [getLess(styles, \"nsc-basepage-content-gap\")]: !searchFlag,\r\n })}\r\n >\r\n {(tableTitle || toolFlag) && (\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-table-title\"), {\r\n [getLess(styles, \"nsc-basepage-title-width\")]: !toolbarFlag,\r\n })}\r\n >\r\n <div>{tableTitle}</div>\r\n {toolFlag && this.renderToolButtons(selfButtons, toolbarFlag)}\r\n </div>\r\n )}\r\n\r\n <div\r\n className={cls(\r\n getLess(styles, \"nsc-basepage-table\"),\r\n {\r\n [getLess(styles, \"nsc-basepage-table-top\")]: !toolbarFlag,\r\n },\r\n {\r\n [getLess(styles, \"nsc-basepage-table-top2\")]:\r\n toolbarFlag && !toolFlag,\r\n }\r\n )}\r\n style={{ height: tableContentHeight }}\r\n >\r\n <Table\r\n ref={this.tableRef}\r\n columns={tableColumn}\r\n expandable={{\r\n expandIcon: ({ expanded, onExpand, record }) => {\r\n return (\r\n <>\r\n {expanded &&\r\n record.childNodes &&\r\n record.childNodes?.length > 0 ? (\r\n <DownOutlined\r\n onClick={(e) => onExpand(record, e)}\r\n className={getLess(styles, \"expand-icon\")}\r\n />\r\n ) : record.childNodes &&\r\n record.childNodes?.length > 0 ? (\r\n <RightOutlined\r\n onClick={(e) => onExpand(record, e)}\r\n className={getLess(styles, \"expand-icon\")}\r\n />\r\n ) : null}\r\n </>\r\n );\r\n },\r\n ...expandable,\r\n }}\r\n columnOrder={true}\r\n onChange={(pagination) => {\r\n const { currentPage } = this.state;\r\n if (currentPage !== pagination.current) {\r\n this.setState({\r\n currentPage: pagination.current,\r\n });\r\n }\r\n }}\r\n toolbar={{\r\n onToolClick: {\r\n onRefresh: () => {\r\n const params = this.getSearchValues();\r\n this.tableLoad(params);\r\n },\r\n },\r\n ...tableProps.toolbar,\r\n }}\r\n showRowSelection={showRowSelection}\r\n style={{ height: tableHeight }}\r\n {...tableParams}\r\n // pagination={false}\r\n />\r\n {/* <div></div> */}\r\n </div>\r\n </div>\r\n </div>\r\n {editorForm && (\r\n <EditorForm\r\n ref={this.editorRef}\r\n callBack={() => {\r\n this.props.onCallBacks?.onSumbitCallBack &&\r\n this.props.onCallBacks?.onSumbitCallBack();\r\n this.tableReload();\r\n }}\r\n formProps={editorForms}\r\n submitUrl={submitUrl}\r\n submitParams={submitParams}\r\n onSubmit={this.props.onSubmit}\r\n defaultValue={defaultValue}\r\n onHideForm={this.props.onHideForm}\r\n onFormChange={this.props.onFormChange}\r\n formType={this.props.formType || \"auto\"}\r\n changeValid={formChangeValid}\r\n otherProps={{ ...formProps }}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\nexport default BasePage;\r\n"],"mappings":"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"}
|