nsc-react-component 2.14.6 → 2.14.8

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.
@@ -42,7 +42,8 @@ function SliderMenu(props) {
42
42
  }, [data, translateX, listWidth]);
43
43
  useEffect(() => {
44
44
  const totallist = document.getElementById("nsc-slidermenu-total-list");
45
- setListWidth(totallist.clientWidth);
45
+ console.log("totallist", totallist);
46
+ setListWidth(totallist ? totallist === null || totallist === void 0 ? void 0 : totallist.clientWidth : 0);
46
47
  }, [data]);
47
48
  const onIconClick = direaction => {
48
49
  let newTranslateX = translateX;
@@ -94,4 +95,4 @@ SliderMenu.LeftArrow = LeftArrow;
94
95
  SliderMenu.RightArrow = RightArrow;
95
96
  SliderMenu.Content = Content;
96
97
  export default SliderMenu;
97
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsImdldExlc3MiLCJzdHlsZXMiLCJMZWZ0QXJyb3ciLCJwcm9wcyIsImNyZWF0ZUVsZW1lbnQiLCJjaGlsZHJlbiIsIlJpZ2h0QXJyb3ciLCJDb250ZW50IiwiY2xhc3NOYW1lIiwiaWQiLCJzdHlsZSIsInRyYW5zZm9ybSIsImNvbmNhdCIsInRyYW5zbGF0ZVgiLCJTbGlkZXJNZW51IiwiZGF0YSIsInRyYW5zbGF0ZVN0ZXAiLCJpdGVtV2lkdGgiLCJsaXN0V2lkdGgiLCJzZXRMaXN0V2lkdGgiLCJzZXRUcmFuc2xhdGVYIiwibGVmdEljb25DbGljayIsInJpZ2h0SWNvbkNsaWNrIiwibGlzdEl0ZW1XaWR0aCIsImxlbmd0aCIsImxlZnRJY29uVmlzaWJsZSIsInJpZ2h0SWNvblZpc2libGUiLCJpc0xlZnRJY29uVmlzaWJsZSIsImlzUmlnaHRJY29uVmlzaWJsZSIsInRvdGFsbGlzdCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJjbGllbnRXaWR0aCIsIm9uSWNvbkNsaWNrIiwiZGlyZWFjdGlvbiIsIm5ld1RyYW5zbGF0ZVgiLCJ0cmFuc2xhdGVEaXN0YW5jZSIsIm9uU3RhdGVDaGFuZ2UiLCJsZWZ0Q2xpY2siLCJyaWdodENsaWNrIiwiQXJyYXkiLCJpc0FycmF5IiwibWFwIiwiaXRlbSIsInR5cGUiLCJuYW1lIiwib25DbGljayJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2Uvc2xpZGVybWVudS9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFwiLi9pbmRleC5sZXNzXCI7XHJcbmltcG9ydCB7IGdldExlc3MgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuY29uc3Qgc3R5bGVzID0gbnVsbDtcclxuaW50ZXJmYWNlIFNsaWRlclByb3BzIHtcclxuICBkYXRhOiBBcnJheTxPYmplY3Q+O1xyXG4gIGl0ZW1XaWR0aDogbnVtYmVyO1xyXG4gIHRyYW5zbGF0ZVN0ZXA6IG51bWJlcjtcclxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcclxuICBvblN0YXRlQ2hhbmdlPzogRnVuY3Rpb247XHJcbn1cclxuZnVuY3Rpb24gTGVmdEFycm93KHByb3BzOiBhbnkpIHtcclxuICByZXR1cm4gPGRpdj57cHJvcHMuY2hpbGRyZW59PC9kaXY+O1xyXG59XHJcblxyXG5mdW5jdGlvbiBSaWdodEFycm93KHByb3BzOiBhbnkpIHtcclxuICByZXR1cm4gPGRpdj57cHJvcHMuY2hpbGRyZW59PC9kaXY+O1xyXG59XHJcblxyXG5mdW5jdGlvbiBDb250ZW50KHByb3BzOiBhbnkpIHtcclxuICByZXR1cm4gKFxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1zbGlkZXJtZW51LXRhYi1uYXZcIil9XHJcbiAgICAgIGlkPVwibnNjLXNsaWRlcm1lbnUtdG90YWwtbGlzdFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1zbGlkZXJtZW51LW5hdi1saXN0XCIpfVxyXG4gICAgICAgIHN0eWxlPXt7IHRyYW5zZm9ybTogYHRyYW5zbGF0ZVgoJHtwcm9wcy50cmFuc2xhdGVYfXB4KWAgfX1cclxuICAgICAgPlxyXG4gICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59XHJcblxyXG5mdW5jdGlvbiBTbGlkZXJNZW51KHByb3BzOiBTbGlkZXJQcm9wcykge1xyXG4gIGNvbnN0IHsgY2hpbGRyZW4sIGRhdGEsIHRyYW5zbGF0ZVN0ZXAgPSAxMDAsIGl0ZW1XaWR0aCA9IDQwIH0gPSBwcm9wcztcclxuICBjb25zdCBbbGlzdFdpZHRoLCBzZXRMaXN0V2lkdGhdID0gdXNlU3RhdGUoMCk7XHJcbiAgY29uc3QgW3RyYW5zbGF0ZVgsIHNldFRyYW5zbGF0ZVhdID0gdXNlU3RhdGUoMCk7XHJcbiAgY29uc3QgW2xlZnRJY29uQ2xpY2ssIHJpZ2h0SWNvbkNsaWNrXSA9IHVzZU1lbW8oKCkgPT4ge1xyXG4gICAgY29uc3QgbGlzdEl0ZW1XaWR0aCA9IGRhdGEubGVuZ3RoICogaXRlbVdpZHRoO1xyXG4gICAgY29uc3QgbGVmdEljb25DbGljayA9IHRyYW5zbGF0ZVggPCAwO1xyXG4gICAgY29uc3QgcmlnaHRJY29uQ2xpY2sgPVxyXG4gICAgICB0cmFuc2xhdGVYID09IDBcclxuICAgICAgICA/IGxpc3RJdGVtV2lkdGggPiBsaXN0V2lkdGhcclxuICAgICAgICA6IGxpc3RJdGVtV2lkdGggKyB0cmFuc2xhdGVYID4gbGlzdFdpZHRoO1xyXG4gICAgcmV0dXJuIFtsZWZ0SWNvbkNsaWNrLCByaWdodEljb25DbGlja107XHJcbiAgfSwgW2RhdGEubGVuZ3RoLCB0cmFuc2xhdGVYLCBsaXN0V2lkdGhdKTtcclxuICBjb25zdCBbbGVmdEljb25WaXNpYmxlLCByaWdodEljb25WaXNpYmxlXSA9IHVzZU1lbW8oKCkgPT4ge1xyXG4gICAgY29uc3QgbGlzdEl0ZW1XaWR0aCA9IGRhdGEubGVuZ3RoICogaXRlbVdpZHRoO1xyXG4gICAgY29uc3QgaXNMZWZ0SWNvblZpc2libGUgPSBsaXN0SXRlbVdpZHRoID4gbGlzdFdpZHRoO1xyXG4gICAgY29uc3QgaXNSaWdodEljb25WaXNpYmxlID0gbGlzdEl0ZW1XaWR0aCA+IGxpc3RXaWR0aDtcclxuICAgIHJldHVybiBbaXNMZWZ0SWNvblZpc2libGUsIGlzUmlnaHRJY29uVmlzaWJsZV07XHJcbiAgfSwgW2RhdGEsIHRyYW5zbGF0ZVgsIGxpc3RXaWR0aF0pO1xyXG5cclxuICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgY29uc3QgdG90YWxsaXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXHJcbiAgICAgIFwibnNjLXNsaWRlcm1lbnUtdG90YWwtbGlzdFwiXHJcbiAgICApIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgc2V0TGlzdFdpZHRoKHRvdGFsbGlzdC5jbGllbnRXaWR0aCk7XHJcbiAgfSwgW2RhdGFdKTtcclxuXHJcbiAgY29uc3Qgb25JY29uQ2xpY2sgPSAoZGlyZWFjdGlvbjogc3RyaW5nKSA9PiB7XHJcbiAgICBsZXQgbmV3VHJhbnNsYXRlWDogbnVtYmVyID0gdHJhbnNsYXRlWDtcclxuICAgIGNvbnN0IHRyYW5zbGF0ZURpc3RhbmNlOiBudW1iZXIgPVxyXG4gICAgICB0cmFuc2xhdGVTdGVwICogKGRpcmVhY3Rpb24gPT09IFwibGVmdFwiID8gMSA6IC0xKTtcclxuICAgIC8vIOeCueWHu+eureWktFxyXG4gICAgaWYgKHRyYW5zbGF0ZURpc3RhbmNlID4gMCkge1xyXG4gICAgICBpZiAoIWxlZnRJY29uQ2xpY2spIHJldHVybjtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgbmV3VHJhbnNsYXRlWCArPSB0cmFuc2xhdGVEaXN0YW5jZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0cmFuc2xhdGVEaXN0YW5jZSA8IDApIHtcclxuICAgICAgaWYgKCFyaWdodEljb25DbGljaykgcmV0dXJuO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBuZXdUcmFuc2xhdGVYICs9IHRyYW5zbGF0ZURpc3RhbmNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBzZXRUcmFuc2xhdGVYKG5ld1RyYW5zbGF0ZVgpO1xyXG4gIH07XHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IHsgb25TdGF0ZUNoYW5nZSB9ID0gcHJvcHM7XHJcbiAgICBvblN0YXRlQ2hhbmdlICYmXHJcbiAgICAgIG9uU3RhdGVDaGFuZ2UoeyBsZWZ0Q2xpY2s6IGxlZnRJY29uQ2xpY2ssIHJpZ2h0Q2xpY2s6IHJpZ2h0SWNvbkNsaWNrIH0pO1xyXG4gIH0sIFtyaWdodEljb25DbGljaywgbGVmdEljb25DbGlja10pO1xyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXNsaWRlcm1lbnUtdG90YWwtbmF2XCIpfT5cclxuICAgICAge2NoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pICYmIGNoaWxkcmVuLmxlbmd0aCA+IDBcclxuICAgICAgICA/IGNoaWxkcmVuLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoaXRlbS50eXBlLm5hbWUgPT09IFwiTGVmdEFycm93XCIgJiYgbGVmdEljb25WaXNpYmxlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIG9uSWNvbkNsaWNrKFwibGVmdFwiKTtcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge2l0ZW19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZS5uYW1lID09PSBcIlJpZ2h0QXJyb3dcIiAmJiByaWdodEljb25WaXNpYmxlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIG9uSWNvbkNsaWNrKFwicmlnaHRcIik7XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHtpdGVtfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUubmFtZSA9PT0gXCJDb250ZW50XCIpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPENvbnRlbnQgdHJhbnNsYXRlWD17dHJhbnNsYXRlWH0+e2l0ZW0ucHJvcHMuY2hpbGRyZW59PC9Db250ZW50PlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgOiBjaGlsZHJlbn1cclxuICAgIDwvZGl2PlxyXG4gICk7XHJcbn1cclxuU2xpZGVyTWVudS5MZWZ0QXJyb3cgPSBMZWZ0QXJyb3c7XHJcblNsaWRlck1lbnUuUmlnaHRBcnJvdyA9IFJpZ2h0QXJyb3c7XHJcblNsaWRlck1lbnUuQ29udGVudCA9IENvbnRlbnQ7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBTbGlkZXJNZW51O1xyXG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLEtBQUssSUFBSUMsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQzNELE9BQU8sY0FBYztBQUNyQixTQUFTQyxPQUFPLFFBQVEsYUFBYTtBQUNyQyxNQUFNQyxNQUFNLEdBQUcsSUFBSTtBQVFuQixTQUFTQyxTQUFTQSxDQUFDQyxLQUFVLEVBQUU7RUFDN0Isb0JBQU9QLEtBQUEsQ0FBQVEsYUFBQSxjQUFNRCxLQUFLLENBQUNFLFFBQWMsQ0FBQztBQUNwQztBQUVBLFNBQVNDLFVBQVVBLENBQUNILEtBQVUsRUFBRTtFQUM5QixvQkFBT1AsS0FBQSxDQUFBUSxhQUFBLGNBQU1ELEtBQUssQ0FBQ0UsUUFBYyxDQUFDO0FBQ3BDO0FBRUEsU0FBU0UsT0FBT0EsQ0FBQ0osS0FBVSxFQUFFO0VBQzNCLG9CQUNFUCxLQUFBLENBQUFRLGFBQUE7SUFDRUksU0FBUyxFQUFFUixPQUFPLENBQUNDLE1BQU0sRUFBRSx3QkFBd0IsQ0FBRTtJQUNyRFEsRUFBRSxFQUFDO0VBQTJCLGdCQUU5QmIsS0FBQSxDQUFBUSxhQUFBO0lBQ0VJLFNBQVMsRUFBRVIs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
98
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsImdldExlc3MiLCJzdHlsZXMiLCJMZWZ0QXJyb3ciLCJwcm9wcyIsImNyZWF0ZUVsZW1lbnQiLCJjaGlsZHJlbiIsIlJpZ2h0QXJyb3ciLCJDb250ZW50IiwiY2xhc3NOYW1lIiwiaWQiLCJzdHlsZSIsInRyYW5zZm9ybSIsImNvbmNhdCIsInRyYW5zbGF0ZVgiLCJTbGlkZXJNZW51IiwiZGF0YSIsInRyYW5zbGF0ZVN0ZXAiLCJpdGVtV2lkdGgiLCJsaXN0V2lkdGgiLCJzZXRMaXN0V2lkdGgiLCJzZXRUcmFuc2xhdGVYIiwibGVmdEljb25DbGljayIsInJpZ2h0SWNvbkNsaWNrIiwibGlzdEl0ZW1XaWR0aCIsImxlbmd0aCIsImxlZnRJY29uVmlzaWJsZSIsInJpZ2h0SWNvblZpc2libGUiLCJpc0xlZnRJY29uVmlzaWJsZSIsImlzUmlnaHRJY29uVmlzaWJsZSIsInRvdGFsbGlzdCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJjb25zb2xlIiwibG9nIiwiY2xpZW50V2lkdGgiLCJvbkljb25DbGljayIsImRpcmVhY3Rpb24iLCJuZXdUcmFuc2xhdGVYIiwidHJhbnNsYXRlRGlzdGFuY2UiLCJvblN0YXRlQ2hhbmdlIiwibGVmdENsaWNrIiwicmlnaHRDbGljayIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsIml0ZW0iLCJ0eXBlIiwibmFtZSIsIm9uQ2xpY2siXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9iYXNlL3NsaWRlcm1lbnUvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubGVzc1wiO1xyXG5pbXBvcnQgeyBnZXRMZXNzIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmNvbnN0IHN0eWxlcyA9IG51bGw7XHJcbmludGVyZmFjZSBTbGlkZXJQcm9wcyB7XHJcbiAgZGF0YTogQXJyYXk8T2JqZWN0PjtcclxuICBpdGVtV2lkdGg6IG51bWJlcjtcclxuICB0cmFuc2xhdGVTdGVwOiBudW1iZXI7XHJcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XHJcbiAgb25TdGF0ZUNoYW5nZT86IEZ1bmN0aW9uO1xyXG59XHJcbmZ1bmN0aW9uIExlZnRBcnJvdyhwcm9wczogYW55KSB7XHJcbiAgcmV0dXJuIDxkaXY+e3Byb3BzLmNoaWxkcmVufTwvZGl2PjtcclxufVxyXG5cclxuZnVuY3Rpb24gUmlnaHRBcnJvdyhwcm9wczogYW55KSB7XHJcbiAgcmV0dXJuIDxkaXY+e3Byb3BzLmNoaWxkcmVufTwvZGl2PjtcclxufVxyXG5cclxuZnVuY3Rpb24gQ29udGVudChwcm9wczogYW55KSB7XHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXZcclxuICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2Mtc2xpZGVybWVudS10YWItbmF2XCIpfVxyXG4gICAgICBpZD1cIm5zYy1zbGlkZXJtZW51LXRvdGFsLWxpc3RcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2Mtc2xpZGVybWVudS1uYXYtbGlzdFwiKX1cclxuICAgICAgICBzdHlsZT17eyB0cmFuc2Zvcm06IGB0cmFuc2xhdGVYKCR7cHJvcHMudHJhbnNsYXRlWH1weClgIH19XHJcbiAgICAgID5cclxuICAgICAgICB7cHJvcHMuY2hpbGRyZW59XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufVxyXG5cclxuZnVuY3Rpb24gU2xpZGVyTWVudShwcm9wczogU2xpZGVyUHJvcHMpIHtcclxuICBjb25zdCB7IGNoaWxkcmVuLCBkYXRhLCB0cmFuc2xhdGVTdGVwID0gMTAwLCBpdGVtV2lkdGggPSA0MCB9ID0gcHJvcHM7XHJcbiAgY29uc3QgW2xpc3RXaWR0aCwgc2V0TGlzdFdpZHRoXSA9IHVzZVN0YXRlKDApO1xyXG4gIGNvbnN0IFt0cmFuc2xhdGVYLCBzZXRUcmFuc2xhdGVYXSA9IHVzZVN0YXRlKDApO1xyXG4gIGNvbnN0IFtsZWZ0SWNvbkNsaWNrLCByaWdodEljb25DbGlja10gPSB1c2VNZW1vKCgpID0+IHtcclxuICAgIGNvbnN0IGxpc3RJdGVtV2lkdGggPSBkYXRhLmxlbmd0aCAqIGl0ZW1XaWR0aDtcclxuICAgIGNvbnN0IGxlZnRJY29uQ2xpY2sgPSB0cmFuc2xhdGVYIDwgMDtcclxuICAgIGNvbnN0IHJpZ2h0SWNvbkNsaWNrID1cclxuICAgICAgdHJhbnNsYXRlWCA9PSAwXHJcbiAgICAgICAgPyBsaXN0SXRlbVdpZHRoID4gbGlzdFdpZHRoXHJcbiAgICAgICAgOiBsaXN0SXRlbVdpZHRoICsgdHJhbnNsYXRlWCA+IGxpc3RXaWR0aDtcclxuICAgIHJldHVybiBbbGVmdEljb25DbGljaywgcmlnaHRJY29uQ2xpY2tdO1xyXG4gIH0sIFtkYXRhLmxlbmd0aCwgdHJhbnNsYXRlWCwgbGlzdFdpZHRoXSk7XHJcbiAgY29uc3QgW2xlZnRJY29uVmlzaWJsZSwgcmlnaHRJY29uVmlzaWJsZV0gPSB1c2VNZW1vKCgpID0+IHtcclxuICAgIGNvbnN0IGxpc3RJdGVtV2lkdGggPSBkYXRhLmxlbmd0aCAqIGl0ZW1XaWR0aDtcclxuICAgIGNvbnN0IGlzTGVmdEljb25WaXNpYmxlID0gbGlzdEl0ZW1XaWR0aCA+IGxpc3RXaWR0aDtcclxuICAgIGNvbnN0IGlzUmlnaHRJY29uVmlzaWJsZSA9IGxpc3RJdGVtV2lkdGggPiBsaXN0V2lkdGg7XHJcbiAgICByZXR1cm4gW2lzTGVmdEljb25WaXNpYmxlLCBpc1JpZ2h0SWNvblZpc2libGVdO1xyXG4gIH0sIFtkYXRhLCB0cmFuc2xhdGVYLCBsaXN0V2lkdGhdKTtcclxuXHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IHRvdGFsbGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxyXG4gICAgICBcIm5zYy1zbGlkZXJtZW51LXRvdGFsLWxpc3RcIlxyXG4gICAgKSBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnNvbGUubG9nKFwidG90YWxsaXN0XCIsIHRvdGFsbGlzdCk7XHJcbiAgICBzZXRMaXN0V2lkdGgodG90YWxsaXN0ID8gdG90YWxsaXN0Py5jbGllbnRXaWR0aCA6IDApO1xyXG4gIH0sIFtkYXRhXSk7XHJcblxyXG4gIGNvbnN0IG9uSWNvbkNsaWNrID0gKGRpcmVhY3Rpb246IHN0cmluZykgPT4ge1xyXG4gICAgbGV0IG5ld1RyYW5zbGF0ZVg6IG51bWJlciA9IHRyYW5zbGF0ZVg7XHJcbiAgICBjb25zdCB0cmFuc2xhdGVEaXN0YW5jZTogbnVtYmVyID1cclxuICAgICAgdHJhbnNsYXRlU3RlcCAqIChkaXJlYWN0aW9uID09PSBcImxlZnRcIiA/IDEgOiAtMSk7XHJcbiAgICAvLyDngrnlh7vnrq3lpLRcclxuICAgIGlmICh0cmFuc2xhdGVEaXN0YW5jZSA+IDApIHtcclxuICAgICAgaWYgKCFsZWZ0SWNvbkNsaWNrKSByZXR1cm47XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIG5ld1RyYW5zbGF0ZVggKz0gdHJhbnNsYXRlRGlzdGFuY2U7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodHJhbnNsYXRlRGlzdGFuY2UgPCAwKSB7XHJcbiAgICAgIGlmICghcmlnaHRJY29uQ2xpY2spIHJldHVybjtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgbmV3VHJhbnNsYXRlWCArPSB0cmFuc2xhdGVEaXN0YW5jZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgc2V0VHJhbnNsYXRlWChuZXdUcmFuc2xhdGVYKTtcclxuICB9O1xyXG4gIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBjb25zdCB7IG9uU3RhdGVDaGFuZ2UgfSA9IHByb3BzO1xyXG4gICAgb25TdGF0ZUNoYW5nZSAmJlxyXG4gICAgICBvblN0YXRlQ2hhbmdlKHsgbGVmdENsaWNrOiBsZWZ0SWNvbkNsaWNrLCByaWdodENsaWNrOiByaWdodEljb25DbGljayB9KTtcclxuICB9LCBbcmlnaHRJY29uQ2xpY2ssIGxlZnRJY29uQ2xpY2tdKTtcclxuICByZXR1cm4gKFxyXG4gICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1zbGlkZXJtZW51LXRvdGFsLW5hdlwiKX0+XHJcbiAgICAgIHtjaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKSAmJiBjaGlsZHJlbi5sZW5ndGggPiAwXHJcbiAgICAgICAgPyBjaGlsZHJlbi5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgaWYgKGl0ZW0udHlwZS5uYW1lID09PSBcIkxlZnRBcnJvd1wiICYmIGxlZnRJY29uVmlzaWJsZSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBvbkljb25DbGljayhcImxlZnRcIik7XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHtpdGVtfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUubmFtZSA9PT0gXCJSaWdodEFycm93XCIgJiYgcmlnaHRJY29uVmlzaWJsZSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBvbkljb25DbGljayhcInJpZ2h0XCIpO1xyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7aXRlbX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlLm5hbWUgPT09IFwiQ29udGVudFwiKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxDb250ZW50IHRyYW5zbGF0ZVg9e3RyYW5zbGF0ZVh9PntpdGVtLnByb3BzLmNoaWxkcmVufTwvQ29udGVudD5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIDogY2hpbGRyZW59XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59XHJcblNsaWRlck1lbnUuTGVmdEFycm93ID0gTGVmdEFycm93O1xyXG5TbGlkZXJNZW51LlJpZ2h0QXJyb3cgPSBSaWdodEFycm93O1xyXG5TbGlkZXJNZW51LkNvbnRlbnQgPSBDb250ZW50O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgU2xpZGVyTWVudTtcclxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxLQUFLLElBQUlDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUMzRCxPQUFPLGNBQWM7QUFDckIsU0FBU0MsT0FBTyxRQUFRLGFBQWE7QUFDckMsTUFBTUMsTUFBTSxHQUFHLElBQUk7QUFRbkIsU0FBU0MsU0FBU0EsQ0FBQ0MsS0FBVSxFQUFFO0VBQzdCLG9CQUFPUCxLQUFBLENBQUFRLGFBQUEsY0FBTUQsS0FBSyxDQUFDRSxRQUFjLENBQUM7QUFDcEM7QUFFQSxTQUFTQyxVQUFVQSxDQUFDSCxLQUFVLEVBQUU7RUFDOUIsb0JBQU9QLEtBQUEsQ0FBQVEsYUFBQSxjQUFNRCxLQUFLLENBQUNFLFFBQWMsQ0FBQztBQUNwQztBQUVBLFNBQVNFLE9BQU9BLENBQUNKLEtBQVUsRUFBRTtFQUMzQixvQkFDRVAsS0FBQSxDQUFBUSxhQUFBO0lBQ0VJLFNBQVMsRUFBRVIsT0FBTyxDQUFDQyxNQUFNLEVB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QUFTLENBQUMsTUFBTTtJQUNkLE1BQU07TUFBRTBDO0lBQWMsQ0FBQyxHQUFHcEMsS0FBSztJQUMvQm9DLGFBQWEsSUFDWEEsYUFBYSxDQUFDO01BQUVDLFNBQVMsRUFBRW5CLGFBQWE7TUFBRW9CLFVBQVUsRUFBRW5CO0lBQWUsQ0FBQyxDQUFDO0VBQzNFLENBQUMsRUFBRSxDQUFDQSxjQUFjLEVBQUVELGFBQWEsQ0FBQyxDQUFDO0VBQ25DLG9CQUNFekIsS0FBQSxDQUFBUSxhQUFBO0lBQUtJLFNBQVMsRUFBRVIsT0FBTyxDQUFDQyxNQUFNLEVBQUUsMEJBQTBCO0VBQUUsR0FDekRJLFFBQVEsSUFBSXFDLEtBQUssQ0FBQ0MsT0FBTyxDQUFDdEMsUUFBUSxDQUFDLElBQUlBLFFBQVEsQ0FBQ21CLE1BQU0sR0FBRyxDQUFDLEdBQ3ZEbkIsUUFBUSxDQUFDdUMsR0FBRyxDQUFFQyxJQUFJLElBQUs7SUFDckIsSUFBSUEsSUFBSSxDQUFDQyxJQUFJLENBQUNDLElBQUksS0FBSyxXQUFXLElBQUl0QixlQUFlLEVBQUU7TUFDckQsb0JBQ0U3QixLQUFBLENBQUFRLGFBQUE7UUFDRTRDLE9BQU8sRUFBRUEsQ0FBQSxLQUFNO1VBQ2JiLFdBQVcsQ0FBQyxNQUFNLENBQUM7UUFDckI7TUFBRSxHQUVEVSxJQUNFLENBQUM7SUFFVixDQUFDLE1BQU0sSUFBSUEsSUFBSSxDQUFDQyxJQUFJLENBQUNDLElBQUksS0FBSyxZQUFZLElBQUlyQixnQkFBZ0IsRUFBRTtNQUM5RCxvQkFDRTlCLEtBQUEsQ0FBQVEsYUFBQTtRQUNFNEMsT0FBTyxFQUFFQSxDQUFBLEtBQU07VUFDYmIsV0FBVyxDQUFDLE9BQU8sQ0FBQztRQUN0QjtNQUFFLEdBRURVLElBQ0UsQ0FBQztJQUVWLENBQUMsTUFBTSxJQUFJQSxJQUFJLENBQUNDLElBQUksQ0FBQ0MsSUFBSSxLQUFLLFNBQVMsRUFBRTtNQUN2QyxvQkFDRW5ELEtBQUEsQ0FBQVEsYUFBQSxDQUFDRyxPQUFPO1FBQUNNLFVBQVUsRUFBRUE7TUFBVyxHQUFFZ0MsSUFBSSxDQUFDMUMsS0FBSyxDQUFDRSxRQUFrQixDQUFDO0lBRXBFO0VBQ0YsQ0FBQyxDQUFDLEdBQ0ZBLFFBQ0QsQ0FBQztBQUVWO0FBQ0FTLFVBQVUsQ0FBQ1osU0FBUyxHQUFHQSxTQUFTO0FBQ2hDWSxVQUFVLENBQUNSLFVBQVUsR0FBR0EsVUFBVTtBQUNsQ1EsVUFBVSxDQUFDUCxPQUFPLEdBQUdBLE9BQU87QUFFNUIsZUFBZU8sVUFBVSIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useEffect","useMemo","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","totallist","document","getElementById","clientWidth","onIconClick","direaction","newTranslateX","translateDistance","onStateChange","leftClick","rightClick","Array","isArray","map","item","type","name","onClick"],"sources":["../../../src/components/base/slidermenu/index.tsx"],"sourcesContent":["import React, { useEffect, useMemo, 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\nfunction LeftArrow(props: any) {\r\n return <div>{props.children}</div>;\r\n}\r\n\r\nfunction RightArrow(props: any) {\r\n return <div>{props.children}</div>;\r\n}\r\n\r\nfunction 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\r\n useEffect(() => {\r\n const totallist = document.getElementById(\r\n \"nsc-slidermenu-total-list\"\r\n ) as HTMLElement;\r\n setListWidth(totallist.clientWidth);\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) => {\r\n if (item.type.name === \"LeftArrow\" && leftIconVisible) {\r\n return (\r\n <div\r\n onClick={() => {\r\n onIconClick(\"left\");\r\n }}\r\n >\r\n {item}\r\n </div>\r\n );\r\n } else if (item.type.name === \"RightArrow\" && rightIconVisible) {\r\n return (\r\n <div\r\n onClick={() => {\r\n onIconClick(\"right\");\r\n }}\r\n >\r\n {item}\r\n </div>\r\n );\r\n } else if (item.type.name === \"Content\") {\r\n return (\r\n <Content translateX={translateX}>{item.props.children}</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":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","useEffect","useMemo","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","totallist","document","getElementById","console","log","clientWidth","onIconClick","direaction","newTranslateX","translateDistance","onStateChange","leftClick","rightClick","Array","isArray","map","item","type","name","onClick"],"sources":["../../../src/components/base/slidermenu/index.tsx"],"sourcesContent":["import React, { useEffect, useMemo, 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\nfunction LeftArrow(props: any) {\r\n return <div>{props.children}</div>;\r\n}\r\n\r\nfunction RightArrow(props: any) {\r\n return <div>{props.children}</div>;\r\n}\r\n\r\nfunction 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\r\n useEffect(() => {\r\n const totallist = document.getElementById(\r\n \"nsc-slidermenu-total-list\"\r\n ) as HTMLElement;\r\n console.log(\"totallist\", totallist);\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) => {\r\n if (item.type.name === \"LeftArrow\" && leftIconVisible) {\r\n return (\r\n <div\r\n onClick={() => {\r\n onIconClick(\"left\");\r\n }}\r\n >\r\n {item}\r\n </div>\r\n );\r\n } else if (item.type.name === \"RightArrow\" && rightIconVisible) {\r\n return (\r\n <div\r\n onClick={() => {\r\n onIconClick(\"right\");\r\n }}\r\n >\r\n {item}\r\n </div>\r\n );\r\n } else if (item.type.name === \"Content\") {\r\n return (\r\n <Content translateX={translateX}>{item.props.children}</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":"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","ignoreList":[]}
@@ -106,8 +106,8 @@ declare class NSCTable extends React.Component<INSCTableProps, any> {
106
106
  getSelectedRowKeys(): any;
107
107
  getSelectedRowDatas(): any;
108
108
  resetSelectedRowKeys(): void;
109
- setSelectedRowKeys(data: any): void;
110
- setSelectedRowDatas(data: any): void;
109
+ setSelectedRowKeys(data: Array<String | Number>): void;
110
+ setSelectedRowDatas(data: Array<Object>): void;
111
111
  rowSelectionOnSelect(record: any, selected: any): void;
112
112
  rowSelectionOnSelectAll(selected: any, selectedRows: any, changeRows: any): void;
113
113
  render(): React.JSX.Element;
@@ -956,4 +956,4 @@ _defineProperty(NSCTable, "defaultProps", {
956
956
  }
957
957
  });
958
958
  export default withZhLocale(NSCTable);
959
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBcHBzdG9yZU91dGxpbmVkIiwiQ2hlY2tPdXRsaW5lZCIsIkNvbHVtbkhlaWdodE91dGxpbmVkIiwiU2VhcmNoT3V0bGluZWQiLCJTb3J0QXNjZW5kaW5nT3V0bGluZWQiLCJTb3J0RGVzY2VuZGluZ091dGxpbmVkIiwiUmVkb091dGxpbmVkIiwiaXNFbXB0eU9iaiIsIlN0b3JlIiwiUGFnZVN0b3JlIiwidXRpbHMiLCJSZWFjdCIsIkRuZFByb3ZpZGVyIiwiQm9keVJvdyIsIkRuZENvbnRleHRUeXBlIiwiSUJvZHlSb3dQcm9wcyIsInRyZWVVdGlscyIsInN0eWxlcyIsIkJvZHlSb3dDb21wb25lbnQiLCJIVE1MNUJhY2tlbmQiLCJ3aXRoWmhMb2NhbGUiLCJSZXNpemFibGUiLCJnZXRMZXNzIiwiZ2V0Tm9kZSIsIk5vRGF0YSIsImdldFN0b3JhZ2UiLCJjb25maWciLCJSZXNpemVhYmxlVGl0bGUiLCJwcm9wcyIsIm9uUmVzaXplIiwid2lkdGgiLCJyZXN0UHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJjcmVhdGVFbGVtZW50IiwiaGVpZ2h0IiwiZHJhZ2dhYmxlT3B0cyIsImVuYWJsZVVzZXJTZWxlY3RIYWNrIiwiTlNDVGFibGUiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsIl9hdXRvVHlwZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsIm9uQmVmb3JlTG9hZCIsImxvYWQiLCJoZWFkZXIiLCJjZWxsIiwiaW5kZXgiLCJlIiwiX3JlZiIsInNpemUiLCJjb2xzIiwic3RhdGUiLCJuZXh0Q29sdW1ucyIsIl9vYmplY3RTcHJlYWQiLCJzZXRTdGF0ZSIsImV2IiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsIl90aGlzIiwiZXZlbnRUeXBlIiwicGF5bG9hZCIsInRhYmxlU2l6ZSIsImRyYWdJbmRleCIsImhvdmVySW5kZXgiLCJkcmFnIiwidGFyZ2V0IiwiZHJhZ05vZGUiLCJyZWNvcmQiLCJ0YXJnZXROb2RlIiwibW92ZUFycmF5IiwiaWRzIiwicGFyZW50Tm9kZSIsImdldENoaWxkTm9kZUlkcyIsInBhcmFtcyIsImlkIiwicGFyZW50SWQiLCJhdHRyaWJ1dGUiLCJtb3ZlUm93Iiwic3RvcmUiLCJyZWxvYWQiLCJtb2RhbCIsInR5cGUiLCJzdG9yZVByZWZpeCIsImF1dG9UeXBlIiwiY29udGVudCIsImRhdGFTb3VyY2UiLCJjb2x1bW5zIiwibG9hZGluZyIsInBhZ2luYXRpb24iLCJhY3RpdmVJbmRleCIsInNlYXJjaFRleHQiLCJmaWVsZE9wdGlvbiIsInNlYXJjaENvbG9yIiwic29ydHMiLCJmaWx0ZXJQYXJhbXMiLCJzb3J0VHlwZSIsInNvcnRlciIsInNvcnRJbmZvIiwiZGVmYXVsdFNvcnQiLCJjaGVja0NvbHVtbiIsImRlZmF1bHRDaGVjayIsInNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93RGF0YXMiLCJfcmVmMiIsImxpc3RlbmVycyIsImxpc3RlbmVyc1Byb3BzIiwicmVzdFN0b3JlIiwiX2V4Y2x1ZGVkMiIsInN0b3JlUHJvcHMiLCJtb2RlbCIsImNvbXBvbmVudCIsIm9wdGlvbnMiLCJjYWxsYmFjayIsImRhdGFDaGFuZ2VkIiwibW9kZWxEYXRhIiwicGFnaW5nIiwiZ2V0UGFnaW5hdGlvbiIsIm9uRXJyb3JMb2FkIiwiZXJyIiwicmVzcG9uc2UiLCJhdXRvTG9hZCIsIk9iamVjdCIsImFzc2lnbiIsImN1cnJlbnQiLCJjb21wb25lbnREaWRNb3VudCIsInJlc2l6ZUNvbHVtbiIsInNldERhdGEiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwibGlzdGVuTWVzc2FnZSIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNvbXBvbmVudERpZFVwZGF0ZSIsInByZXZQcm9wcyIsInByZVN0YXRlIiwicmVzZXRDb2x1bW4iLCJuZXdDb2xzIiwiY29sc3MiLCJtYXAiLCJjb2wiLCJ0ZW1wIiwib25IZWFkZXJDZWxsIiwiY29sdW1uIiwiaGFuZGxlUmVzaXplIiwicHVzaCIsImNsZWFyU2VsZWN0Q29sb3IiLCJnZXRQYWdpbmF0aW9uQnlTdG9yZSIsIm9uQ2hhbmdlIiwiZmlsdGVycyIsImV4dHJhIiwiYXV0b09uQ2hhbmdlIiwiYXV0b1NvcnQiLCJhdXRvUGFnaW5hdGlvbiIsImlzTXVsdGlwbGUiLCJBcnJheSIsImlzQXJyYXkiLCJoYW5kbGVQYWdpbmF0aW9uIiwicCIsImN1cnJlbnRLZXkiLCJwYWdlU2l6ZUtleSIsInBhZ2VTaXplIiwiYXNjUGFyYW1zIiwiZ2V0U29ydFBhcmFtIiwib25DaGFuZ2VGbiIsImdldFN0b3JlIiwiZ2V0TW9kZWwiLCJoYW5kbGVTZWFyY2giLCJ2YWwiLCJmaWx0ZXJDb2x1bW4iLCJjaGVja2VkVmFsdWUiLCJsZW5ndGgiLCJfbWVzc2FnZSIsIndhcm5pbmciLCJmaWx0ZXJDb2x1bW5zIiwibmV3Q29sIiwiaW5jbHVkZXMiLCJkYXRhSW5kZXgiLCJpbml0U2hvdyIsInNvcnRTdGF0ZSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsInNvcnRTZWFyY2giLCJvcmRlckl0ZW1zIiwiZmllbGQiLCJhc2MiLCJvcmRlciIsImZvckVhY2giLCJ2Iiwic3RyaW5naWZ5IiwiZ2V0Q29sdW1ucyIsInNvcnRGaWVsZHMiLCJkZWZhdWx0U2hvd0NvbHMiLCJmaWx0ZXIiLCJlbGxpcHNpcyIsInJlbmRlciIsInNob3dUaXRsZSIsInRleHQiLCJ0aXRsZSIsImNsYXNzTmFtZSIsImluZGV4T2YiLCJzb3J0T3JkZXIiLCJtdWx0aXBsZSIsIml0ZW0iLCJmaWx0ZXJQcm9wcyIsIm9iaiIsInNlYXJjaEtleSIsIkRpdiIsInBsYWNlaG9sZGVyIiwiY29uY2F0IiwicmVmIiwidGFibGVTZWFyY2hSZWYiLCJmaWx0ZXJEcm9wZG93biIsIl9yZWYzIiwic2V0U2VsZWN0ZWRLZXlzIiwic2VsZWN0ZWRLZXlzIiwiY29uZmlybSIsImNsZWFyRmlsdGVycyIsIl9TcGFjZSIsIl9CdXR0b24iLCJvbkNsaWNrIiwiX3RoaXMkdGFibGVTZWFyY2hSZWYkIiwibmV3RmlsdGVyUGFyYW1zIiwia2V5IiwiZ2V0VmFsdWUiLCJzb3J0UGFyYW0iLCJmaWx0ZXJJY29uIiwicmVuZGVyVG9vbEJhciIsImNvbExpc3RzIiwidG9vbGJhciIsInRhYmxlVG9vbCIsInN0b3JlUmVxdWVzdENvbmZpZyIsInRvb2xzIiwidG9vbHNDbGljayIsIm9uVG9vbENsaWNrIiwic2l6ZUl0ZW0iLCJzb3J0SXRlbSIsInNvcnRDb250ZW50IiwiRnJhZ21lbnQiLCJzdHlsZSIsImN1cnNvciIsImNvbG9yIiwic2l6ZUNvbnRlbnQiLCJfQ2hlY2tib3giLCJHcm91cCIsImJpbmQiLCJsYWJlbCIsInZhbHVlIiwiZGlzYWJsZWQiLCJmb250U2l6ZSIsIl9Qb3BvdmVyIiwicGxhY2VtZW50IiwidHJpZ2dlciIsIm92ZXJsYXlTdHlsZSIsIm1pbldpZHRoIiwibWF4V2lkdGgiLCJtYXJnaW5SaWdodCIsIm9uUmVmcmVzaCIsImdldFNlbGVjdGVkUm93S2V5cyIsImdldFNlbGVjdGVkUm93RGF0YXMiLCJyZXNldFNlbGVjdGVkUm93S2V5cyIsInNldFNlbGVjdGVkUm93S2V5cyIsInNldFNlbGVjdGVkUm93RGF0YXMiLCJyb3dTZWxlY3Rpb25PblNlbGVjdCIsInNlbGVjdGVkIiwicm93S2V5IiwibmV3U2VsZWN0ZWRSb3dLZXlzIiwibmV3U2VsZWN0ZWRSb3dEYXRhcyIsInNwbGljZSIsInJvd1NlbGVjdGlvbk9uU2VsZWN0QWxsIiwic2VsZWN0ZWRSb3dzIiwiY2hhbmdlUm93cyIsIm5ld2lkcyIsIm5ld2RhdGFzIiwiY2hhbmdlSWRzIiwiX3RoaXMkcHJvcHMkdG9vbGJhciIsIm9taXQiLCJjbGlja0NoYW5nZUNvbG9yIiwicG9zaXRpb24iLCJzaG93U2l6ZUNoYW5nZXIiLCJzaG93UXVpY2tKdW1wZXIiLCJzaG93VG90YWwiLCJ0b3RhbCIsIl9yZWY0IiwiZnJvbSIsInRvIiwib25Sb3dGbiIsIm9uUm93IiwiY3VzdG9tIiwib25DbGlja0ZuIiwiZXZlbnQiLCJyb3dDbGFzc05hbWUiLCJjbGlja1Jvd1N0eWxlIiwibmV3RGF0YVNvdXJjZSIsImdldFNlYXJjaE1lbnVEYXRhcyIsInRyZWVEYXRhcyIsImV4cGFuZGVkUm93S2V5cyIsIm9wZW5LZXlzIiwiZHJhZ2FibGUiLCJkcmFnYWJsZVByb3BzIiwiY29tcG9uZW50cyIsInJlc2l6ZVByb3BzIiwidG9vbEZsYWciLCJ0b29scHJvcHMiLCJzaG93Iiwic2hvd1Jvd1NlbGVjdGlvbiIsInJvd1NlbGVjdGlvbiIsIm9uU2VsZWN0Iiwib25TZWxlY3RBbGwiLCJjb2x1bW5XaWR0aCIsIkRlZmF1bHRUYWJsZSIsIl9UYWJsZSIsIl9leHRlbmRzIiwiY2hpbGRyZW5Db2x1bW5OYW1lIiwic2hlaXRlbSIsImxvY2FsZSIsImVtcHR5VGV4dCIsInNjcm9sbCIsIngiLCJiYWNrZW5kIiwiZHJhZ1VybCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvdGFibGUvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIEBEZXNjcmlwdHRpb246XHJcbiAqIEB2ZXJzaW9uOlxyXG4gKiBAQXV0aG9yOiByeHpodVxyXG4gKiBARGF0ZTogMjAyMS0wMy0yMyAwODo0NjoyMFxyXG4gKiBATGFzdEVkaXRvcnM6IHJ4emh1XHJcbiAqIEBMYXN0RWRpdFRpbWU6IDIwMjEtMDMtMjMgMTA6MzA6NDJcclxuICovXHJcbmltcG9ydCB7XHJcbiAgQXBwc3RvcmVPdXRsaW5lZCxcclxuICBDaGVja091dGxpbmVkLFxyXG4gIENvbHVtbkhlaWdodE91dGxpbmVkLFxyXG4gIFNlYXJjaE91dGxpbmVkLFxyXG4gIFNvcnRBc2NlbmRpbmdPdXRsaW5lZCxcclxuICBTb3J0RGVzY2VuZGluZ091dGxpbmVkLFxyXG4gIFJlZG9PdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIEJ1dHRvbixcclxuICBDaGVja2JveCxcclxuICBDaGVja2JveE9wdGlvblR5cGUsXHJcbiAgTWVudSxcclxuICBtZXNzYWdlLFxyXG4gIFBvcG92ZXIsXHJcbiAgU3BhY2UsXHJcbiAgVGFibGUsXHJcbiAgVGFibGVQcm9wcyxcclxuICBUb29sdGlwLFxyXG59IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCB7IENvbHVtblR5cGUsIFRhYmxlUGFnaW5hdGlvbkNvbmZpZyB9IGZyb20gXCJhbnRkL2xpYi90YWJsZVwiO1xyXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgRG5kUHJvdmlkZXIgfSBmcm9tIFwicmVhY3QtZG5kXCI7XHJcbmltcG9ydCBCb2R5Um93LCB7IERuZENvbnRleHRUeXBlLCBJQm9keVJvd1Byb3BzIH0gZnJvbSBcIi4uL2NvbW1vbi9Cb2R5Um93XCI7XHJcbmltcG9ydCB0cmVlVXRpbHMgZnJvbSBcIi4uLy4uL3RyZWVVdGlsc1wiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmNvbnN0IHsgQm9keVJvd0NvbXBvbmVudCwgSFRNTDVCYWNrZW5kIH0gPSBCb2R5Um93O1xyXG5pbXBvcnQgd2l0aFpoTG9jYWxlIGZyb20gXCIuLi9jb21tb24vd2l0aFpoTG9jYWxlXCI7XHJcbmltcG9ydCB7IFJlc2l6YWJsZSB9IGZyb20gXCJyZWFjdC1yZXNpemFibGVcIjtcclxuaW1wb3J0IFwiLi9yZXNpemUubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IHsgZ2V0TGVzcywgZ2V0Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgTm9EYXRhIGZyb20gXCIuLi8uLi9iYXNlL2NvbW1vbi9Ob0RhdGFcIjtcclxuaW1wb3J0IHsgZ2V0U3RvcmFnZSB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgY29uZmlnIGZyb20gXCIuLi8uLi9jb25maWdcIjtcclxuaW1wb3J0IEVsbGlwc2VDZWxsIGZyb20gXCIuLi9jb21tb24vRWxsaXBzZUNlbGxcIjtcclxuaW50ZXJmYWNlIElEcmFnUGFyYW1zIHtcclxuICBpZDogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIGlkczogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPjtcclxuICBwYXJlbnRJZDogc3RyaW5nIHwgbnVtYmVyO1xyXG59XHJcbi8vIGludGVyZmFjZSBTdG9yZVByb3BzIHt9XHJcblxyXG5leHBvcnQgdHlwZSBTdG9yZVR5cGUgPSBcIlBhZ2VTdG9yZVwiIHwgXCJUcmVlU3RvcmVcIiB8IFwiQmFzZVN0b3JlXCI7XHJcblxyXG5pbnRlcmZhY2UgTlNDVGFibGVQYWdpbmF0aW9uIGV4dGVuZHMgVGFibGVQYWdpbmF0aW9uQ29uZmlnIHtcclxuICB0b3RhbEtleT86IHN0cmluZztcclxuICBwYWdlU2l6ZUtleT86IHN0cmluZztcclxuICBjdXJyZW50S2V5Pzogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgVG9vbEJhclByb3BzIHtcclxuICBzaG93OiBib29sZWFuO1xyXG4gIHRvb2xzPzogQXJyYXk8c3RyaW5nPjtcclxuICBvblRvb2xDbGljaz86IHsgb25SZWZyZXNoPzogYW55OyBvblNvcnQ/OiBhbnkgfTtcclxufVxyXG5pbnRlcmZhY2UgTlNDVGFibGVQcm9wcyBleHRlbmRzIFRhYmxlUHJvcHM8YW55PiB7XHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIHNob3dUb3RhbD86IGJvb2xlYW47IC8vIOaYr+WQpuaYvuekuuaAu+adoeaVsOS/oeaBr++8jOm7mOiupHRydWVcclxuICBkcmFnYWJsZT86IGJvb2xlYW47IC8vIOaYr+WQpuWPr+aLluWKqCwg6buY6K6kZmFsc2VcclxuICBmaWx0ZXJDb2x1bW4/OiBib29sZWFuOyAvLyDmmK/lkKbmlK/mjIHov4fmu6TmmL7npLrooajmoLzliJcsIOm7mOiupHRydWVcclxuICBtb3ZlUm93PzogKHBhcmFtczogSURyYWdQYXJhbXMpID0+IHZvaWQ7IC8vIOaLluaLveWujOaIkOWQjueahOWbnuiwg1xyXG4gIGRyYWdVcmw/OiBzdHJpbmc7IC8vIOS/neWtmOaLluaLveaOkuW6j+eahOaOpeWPo1xyXG4gIHBhZ2luYXRpb24/OiBmYWxzZSB8IE5TQ1RhYmxlUGFnaW5hdGlvbjtcclxuICBhdXRvUGFnaW5hdGlvbj86IGJvb2xlYW47IC8vIOe7hOS7tuaYr+WQpuiHquWKqOWkhOeQhuWIhumhtVxyXG4gIGF1dG9Tb3J0PzogYm9vbGVhbjsgLy/nu4Tku7bmmK/lkKboh6rliqjlpITnkIbmjpLluo9cclxuICBhdXRvT25DaGFuZ2U/OiBib29sZWFuOyAvLyDnu4Tku7bmmK/lkKboh6rliqhvbkNoYW5nZSwgZmFsc2XliJnkuI3lgZrku7vkvZXlpITnkIblhajpg6jkuqTnu5nosIPnlKjmlrlcclxuICByZXNpemVDb2x1bW4/OiBib29sZWFuO1xyXG4gIHNvcnRGaWVsZHM/OiBBcnJheTxzdHJpbmc+OyAvL+mcgOimgeaOkuW6j+eahOWtl+autUluZGV4XHJcbiAgdG9vbGJhcj86IFRvb2xCYXJQcm9wcyB8IGJvb2xlYW47XHJcbiAgYXV0b1NpemU/OiBib29sZWFuO1xyXG4gIHNvcnRTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpua3u+WKoOaOkuW6j+afpeivoizpu5jorqR0cnVlXHJcbiAgLy8gdGFibGVTaXplPzogXCJzbWFsbFwiIHwgXCJtaWRkbGVcIiB8IFwiZGVmYXVsdFwiIHwgXCJhdXRvXCI7XHJcbiAgLy8gc2l6ZT86IFwic21hbGxcIiB8IFwibWlkZGxlXCIgfCBcImRlZmF1bHRcIiB8IFwiYXV0b1wiO1xyXG4gIHNob3dSb3dTZWxlY3Rpb24/OiBib29sZWFuO1xyXG4gIHJvd0tleT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgSU5TQ1RhYmxlUHJvcHMgPSB0eXBlb2YgTlNDVGFibGUuZGVmYXVsdFByb3BzICYgTlNDVGFibGVQcm9wcztcclxuZXhwb3J0IHsgRG5kQ29udGV4dFR5cGUsIElCb2R5Um93UHJvcHMgfTtcclxuXHJcbmNvbnN0IFJlc2l6ZWFibGVUaXRsZSA9IChwcm9wczogYW55KSA9PiB7XHJcbiAgY29uc3QgeyBvblJlc2l6ZSwgd2lkdGgsIC4uLnJlc3RQcm9wcyB9ID0gcHJvcHM7XHJcbiAgcmV0dXJuIChcclxuICAgIDxSZXNpemFibGVcclxuICAgICAgd2lkdGg9e3dpZHRoIHx8IDE1MH1cclxuICAgICAgaGVpZ2h0PXswfVxyXG4gICAgICBvblJlc2l6ZT17b25SZXNpemV9XHJcbiAgICAgIGRyYWdnYWJsZU9wdHM9e3sgZW5hYmxlVXNlclNlbGVjdEhhY2s6IGZhbHNlIH19XHJcbiAgICA+XHJcbiAgICAgIDx0aCB7Li4ucmVzdFByb3BzfSAvPlxyXG4gICAgPC9SZXNpemFibGU+XHJcbiAgKTtcclxufTtcclxuY2xhc3MgTlNDVGFibGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SU5TQ1RhYmxlUHJvcHMsIGFueT4ge1xyXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XHJcbiAgICBkcmFnYWJsZTogZmFsc2UsXHJcbiAgICBzaG93VG90YWw6IHRydWUsXHJcbiAgICBmaWx0ZXJDb2x1bW46IHRydWUsXHJcbiAgICBkcmFnVXJsOiBcIlwiLFxyXG4gICAgYXV0b1BhZ2luYXRpb246IHRydWUsXHJcbiAgICBhdXRvU29ydDogdHJ1ZSxcclxuICAgIGF1dG9PbkNoYW5nZTogdHJ1ZSxcclxuICAgIHJlc2l6ZUNvbHVtbjogdHJ1ZSxcclxuICAgIHRvb2xiYXI6IHtcclxuICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgb25Ub29sQ2xpY2s6IHt9IGFzIGFueSxcclxuICAgIH0gYXMgYW55LFxyXG4gIH07XHJcblxyXG4gIHN0b3JlID0ge30gYXMgU3RvcmVQcm9wcztcclxuICB0aEljb25SZWYgPSBSZWFjdC5jcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XHJcbiAgdGFibGVTZWFyY2hSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG5cclxuICBsaXN0ZW5lcnMgPSB7XHJcbiAgICBvbkJlZm9yZUxvYWQ6IG51bGwsXHJcbiAgICBsb2FkOiBudWxsLFxyXG4gIH07XHJcblxyXG4gIGNvbXBvbmVudHMgPSB7XHJcbiAgICBoZWFkZXI6IHtcclxuICAgICAgY2VsbDogUmVzaXplYWJsZVRpdGxlLFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgbGV0IG1vZGFsID0gcHJvcHMudHlwZSB8fCBcImF1dG9cIjtcclxuICAgIGxldCBzdG9yZVByZWZpeCA9IGdldFN0b3JhZ2UoXCJzdG9yZS1wcmUta2V5XCIpO1xyXG4gICAgbGV0IGF1dG9UeXBlID0gZ2V0U3RvcmFnZShcclxuICAgICAgc3RvcmVQcmVmaXggPyBzdG9yZVByZWZpeCArIFwidGFibGVTaXplXCIgOiBcInRhYmxlU2l6ZVwiXHJcbiAgICApO1xyXG4gICAgYXV0b1R5cGUgPSBhdXRvVHlwZT8uY29udGVudDtcclxuICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgIGRhdGFTb3VyY2U6IFtdLFxyXG4gICAgICBjb2x1bW5zOiBbXSxcclxuICAgICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICAgIHBhZ2luYXRpb246IHt9LFxyXG4gICAgICBhY3RpdmVJbmRleDogLTEsXHJcbiAgICAgIC8v5pCc57Si5paH5pysXHJcbiAgICAgIHNlYXJjaFRleHQ6IG51bGwsXHJcbiAgICAgIGZpZWxkT3B0aW9uOiBudWxsLFxyXG4gICAgICBzZWFyY2hDb2xvcjogbnVsbCxcclxuICAgICAgY29sczogW10sXHJcbiAgICAgIHNvcnRzOiBbXSxcclxuICAgICAgZmlsdGVyUGFyYW1zOiB7fSxcclxuICAgICAgdGFibGVTaXplOiB0aGlzLnByb3BzLnNpemUgfHwgYXV0b1R5cGUgfHwgXCJkZWZhdWx0XCIsXHJcbiAgICAgIHNvcnRUeXBlOiBcInNpbmdsZVwiLFxyXG4gICAgICBzb3J0ZXI6IFtdLCAvL+iusOW9leW9k+WJjeaOkuW6j+Wtl+autVxyXG4gICAgICBzb3J0SW5mbzoge30sXHJcbiAgICAgIGRlZmF1bHRTb3J0OiB0cnVlLFxyXG4gICAgICBjaGVja0NvbHVtbjogW10sXHJcbiAgICAgIGRlZmF1bHRDaGVjazogdHJ1ZSxcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICB9O1xyXG4gICAgaWYgKHByb3BzLnN0b3JlIGluc3RhbmNlb2YgU3RvcmUpIHtcclxuICAgICAgdGhpcy5zdG9yZSA9IHByb3BzLnN0b3JlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgeyBsaXN0ZW5lcnM6IGxpc3RlbmVyc1Byb3BzID0ge30sIC4uLnJlc3RTdG9yZSB9ID1cclxuICAgICAgICBwcm9wcy5zdG9yZSB8fCB7fTtcclxuICAgICAgY29uc3Qgc3RvcmVQcm9wcyA9IHtcclxuICAgICAgICBtb2RlbDogXCJtb2RlbFwiLFxyXG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgICBsaXN0ZW5lcnM6IHtcclxuICAgICAgICAgIG9uQmVmb3JlTG9hZDogKHN0b3JlLCBvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQcm9wcy5vbkJlZm9yZUxvYWQsIHRoaXMsIFtzdG9yZSwgb3B0aW9uc10pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGRhdGFDaGFuZ2VkOiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgcGFnaW5nID0gISh0aGlzLnByb3BzLnBhZ2luYXRpb24gPT09IGZhbHNlKTtcclxuICAgICAgICAgICAgaWYgKHBhZ2luZyAmJiAhdGhpcy5wcm9wcy5kYXRhU291cmNlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlOiBtb2RlbERhdGEsXHJcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiBzdG9yZS5nZXRQYWdpbmF0aW9uKCksXHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGFjdGl2ZUluZGV4OiAtMSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZGF0YVNvdXJjZTogbW9kZWxEYXRhLCBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMuZGF0YUNoYW5nZWQsIHRoaXMsIFtcclxuICAgICAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgICAgIG1vZGVsRGF0YSxcclxuICAgICAgICAgICAgICBzdG9yZSxcclxuICAgICAgICAgICAgICBwYWdpbmcsXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxvYWQ6IChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSA9PiB7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1Byb3BzLmxvYWQsIHRoaXMsIFtkYXRhLCBtb2RlbERhdGEsIHN0b3JlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb25FcnJvckxvYWQ6IChlcnIsIHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMub25FcnJvckxvYWQsIHRoaXMsIFtlcnIsIHJlc3BvbnNlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGF0YTogcmVzdFN0b3JlLmRhdGFcclxuICAgICAgICAgID8gcmVzdFN0b3JlLmRhdGFcclxuICAgICAgICAgIDogcHJvcHMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgPyBwcm9wcy5kYXRhU291cmNlXHJcbiAgICAgICAgICA6IG51bGwsXHJcbiAgICAgICAgLi4ucmVzdFN0b3JlLFxyXG4gICAgICAgIGF1dG9Mb2FkOiByZXN0U3RvcmUuYXV0b0xvYWQgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLnN0b3JlID0gbmV3IFBhZ2VTdG9yZShcclxuICAgICAgICBPYmplY3QuYXNzaWduKHt9LCBzdG9yZVByb3BzLCB7XHJcbiAgICAgICAgICBwYWdpbmF0aW9uOiB7IGN1cnJlbnQ6IDEsIC4uLnRoaXMucHJvcHMucGFnaW5hdGlvbiB9LFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVSZXNpemUgPVxyXG4gICAgKGluZGV4OiBhbnkpID0+XHJcbiAgICAoZTogYW55LCB7IHNpemUgfTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY29scyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgY29uc3QgbmV4dENvbHVtbnMgPSBbLi4uY29sc107XHJcbiAgICAgIG5leHRDb2x1bW5zW2luZGV4XSA9IHtcclxuICAgICAgICAuLi5uZXh0Q29sdW1uc1tpbmRleF0sXHJcbiAgICAgICAgd2lkdGg6IHNpemUud2lkdGgsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGNvbHM6IG5leHRDb2x1bW5zLFxyXG4gICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyByZXNpemVDb2x1bW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXJlc2l6ZUNvbHVtbikge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgY29sdW1uczogWy4uLnRoaXMucHJvcHMuY29sdW1uc10gfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgY29sczogWy4uLnRoaXMucHJvcHMuY29sdW1uc10gfSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBzdG9yZSA9IHRoaXMucHJvcHMuc3RvcmU7XHJcbiAgICBpZiAoc3RvcmUgJiYgc3RvcmUuZGF0YSkge1xyXG4gICAgICB0aGlzLnN0b3JlLnNldERhdGEoc3RvcmUuZGF0YSk7XHJcbiAgICB9XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5saXN0ZW5NZXNzYWdlKTtcclxuICB9XHJcbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5saXN0ZW5NZXNzYWdlKTtcclxuICB9XHJcbiAgbGlzdGVuTWVzc2FnZSA9IChldikgPT4ge1xyXG4gICAgY29uc3QgZGF0YSA9IHR5cGVvZiBldi5kYXRhID09PSBcInN0cmluZ1wiID8gSlNPTi5wYXJzZShldi5kYXRhKSA6IGV2LmRhdGE7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgaWYgKGRhdGEuZXZlbnRUeXBlID09IFwiY2hhbmdlVGFibGVTaXplXCIpIHtcclxuICAgICAgY29uc3QgeyBwYXlsb2FkIH0gPSBkYXRhO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgcGF5bG9hZC5zaXplID09IFwiZGVmYXVsdFwiIHx8XHJcbiAgICAgICAgcGF5bG9hZC5zaXplID09IFwic21hbGxcIiB8fFxyXG4gICAgICAgIHBheWxvYWQuc2l6ZSA9PSBcIm1pZGRsZVwiXHJcbiAgICAgICkge1xyXG4gICAgICAgIF90aGlzLnNldFN0YXRlKHsgdGFibGVTaXplOiBwYXlsb2FkLnNpemUgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMsIHByZVN0YXRlKSB7XHJcbiAgICBjb25zdCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghcmVzaXplQ29sdW1uKSB7XHJcbiAgICAgIGlmICh0aGlzLnByb3BzLmNvbHVtbnMgIT09IHByZXZQcm9wcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbHVtbnM6IHRoaXMucHJvcHMuY29sdW1ucyB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHByZVN0YXRlLmNvbHMgIT09IHRoaXMuc3RhdGUuY29scykge1xyXG4gICAgICAgIHRoaXMucmVzZXRDb2x1bW4oKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5wcm9wcy5jb2x1bW5zICE9PSBwcmV2UHJvcHMuY29sdW1ucykge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBjb2xzOiB0aGlzLnByb3BzLmNvbHVtbnMgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHByZXZQcm9wcy5zaXplICE9PSB0aGlzLnByb3BzLnNpemUpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgdGFibGVTaXplOiB0aGlzLnByb3BzLnNpemUgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0Q29sdW1uKCkge1xyXG4gICAgY29uc3QgeyBjb2xzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgbmV3Q29sczogYW55ID0gW107XHJcbiAgICBsZXQgY29sc3MgPSBjb2xzIHx8IFtdO1xyXG4gICAgY29sc3MubWFwKChjb2w6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBsZXQgdGVtcCA9IHtcclxuICAgICAgICAuLi5jb2wsXHJcbiAgICAgICAgb25IZWFkZXJDZWxsOiAoY29sdW1uOiB7IHdpZHRoOiBhbnkgfSkgPT4gKHtcclxuICAgICAgICAgIHdpZHRoOiBjb2x1bW4ud2lkdGgsXHJcbiAgICAgICAgICBvblJlc2l6ZTogdGhpcy5oYW5kbGVSZXNpemUoaW5kZXgpLFxyXG4gICAgICAgIH0pLFxyXG4gICAgICB9O1xyXG4gICAgICBuZXdDb2xzLnB1c2godGVtcCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBjb2x1bW5zOiBuZXdDb2xzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmuIXpmaTpgInkuK3popzoibJcclxuICAgKi9cclxuICBjbGVhclNlbGVjdENvbG9yKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGFjdGl2ZUluZGV4OiAtMSB9KTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGFnaW5hdGlvbkJ5U3RvcmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRQYWdpbmF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGF1dG9PbkNoYW5nZSA9IHRydWUsXHJcbiAgICAgIGF1dG9Tb3J0LFxyXG4gICAgICBhdXRvUGFnaW5hdGlvbixcclxuICAgICAgb25DaGFuZ2UsXHJcbiAgICAgIHN0b3JlLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGZpbHRlclBhcmFtcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IGlzTXVsdGlwbGUgPSBBcnJheS5pc0FycmF5KHNvcnRlcik7XHJcbiAgICBpZiAoYXV0b09uQ2hhbmdlID09PSBmYWxzZSB8fCAhc3RvcmUpIHtcclxuICAgICAgb25DaGFuZ2UgJiYgb25DaGFuZ2UocGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGhhbmRsZVBhZ2luYXRpb24gPSAoKSA9PiB7XHJcbiAgICAgIGxldCBwYXJhbXMgPSB7fSBhcyB7XHJcbiAgICAgICAgc2l6ZT86IHN0cmluZztcclxuICAgICAgICBwYWdlU2l6ZT86IHN0cmluZztcclxuICAgICAgICBhc2NzPzogc3RyaW5nO1xyXG4gICAgICAgIGRlc2NzPzogc3RyaW5nO1xyXG4gICAgICAgIFtwcm9wTmFtZTogc3RyaW5nXTogc3RyaW5nO1xyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBwYWdpbmcgPSB0aGlzLmdldFBhZ2luYXRpb25CeVN0b3JlKCkgfHwge307XHJcbiAgICAgIGlmICghaXNFbXB0eU9iaihwYWdpbmF0aW9uKSkge1xyXG4gICAgICAgIGNvbnN0IHAgPSB7XHJcbiAgICAgICAgICBbcGFnaW5nLmN1cnJlbnRLZXkgfHwgXCJjdXJyZW50XCJdOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICBbcGFnaW5nLnBhZ2VTaXplS2V5IHx8IFwic2l6ZVwiXTogcGFnaW5hdGlvbi5wYWdlU2l6ZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGFyYW1zLCBwKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgYXNjUGFyYW1zID0gdGhpcy5nZXRTb3J0UGFyYW0oc29ydGVyLCB0cnVlKTtcclxuICAgICAgaWYgKGlzTXVsdGlwbGUpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpc011bHRpcGxlICYmICFpc0VtcHR5T2JqKHNvcnRlcikpIHtcclxuICAgICAgICBzb3J0ZXIuY29sdW1uICYmXHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyOiBbc29ydGVyXSwgZGVmYXVsdFNvcnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzb3J0ZXI6IFtdIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHBhcmFtcyA9IHsgLi4uZmlsdGVyUGFyYW1zLCAuLi5wYXJhbXMsIC4uLmFzY1BhcmFtcyB9O1xyXG4gICAgICBhdXRvU29ydCAmJiB0aGlzLnN0b3JlLnJlbG9hZCh7IHBhcmFtcyB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgb25DaGFuZ2VGbiA9IHRoaXMucHJvcHMub25DaGFuZ2U7XHJcblxyXG4gICAgYXV0b1BhZ2luYXRpb24gJiYgaGFuZGxlUGFnaW5hdGlvbigpO1xyXG4gICAgLy8g55So5oi35Lyg5LqGb25DaGFuZ2Xkv53nlZnnlKjmiLfoh6rkuLvlpITnkIbooajmoLzlj5jljJbnmoTmnYPliptcclxuICAgIGlmIChvbkNoYW5nZUZuKSB7XHJcbiAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2hhbmdlRm4sIHRoaXMsIFtwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I635Y+W5pWw5o2u5qih5Z6L5a+56LGhXHJcbiAgICovXHJcbiAgZ2V0TW9kZWwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRNb2RlbCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I+c5Y2V5pCc57Si6L+H5ruk5pi+56S6XHJcbiAgICogQHBhcmFtIHtTdHJpbmd9IHZhbFxyXG4gICAqL1xyXG4gIGhhbmRsZVNlYXJjaCh2YWwsIGZpZWxkT3B0aW9uLCBzZWFyY2hDb2xvcikge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlYXJjaFRleHQ6IHZhbCxcclxuICAgICAgZmllbGRPcHRpb246IGZpZWxkT3B0aW9uLFxyXG4gICAgICBzZWFyY2hDb2xvcjogc2VhcmNoQ29sb3IsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaooeWdl+WIl+ihqOenu+WKqOaOkuW6j1xyXG4gICAqL1xyXG4gIG1vdmVSb3cgPSAoZHJhZ0luZGV4LCBob3ZlckluZGV4LCBkcmFnLCB0YXJnZXQpID0+IHtcclxuICAgIGNvbnN0IF90aGlzID0gdGhpcztcclxuICAgIGxldCBkcmFnTm9kZSA9IGRyYWcucmVjb3JkO1xyXG4gICAgbGV0IHRhcmdldE5vZGUgPSB0YXJnZXQucmVjb3JkO1xyXG4gICAgZHJhZ05vZGUubW92ZUFycmF5KGRyYWdOb2RlLCB0YXJnZXROb2RlKTtcclxuICAgIGxldCBpZHMgPSBkcmFnTm9kZS5wYXJlbnROb2RlLmdldENoaWxkTm9kZUlkcygpO1xyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgaWQ6IGRyYWdOb2RlLmlkLFxyXG4gICAgICBwYXJlbnRJZDogZHJhZ05vZGUuYXR0cmlidXRlLnBhcmVudElkLFxyXG4gICAgICBpZHM6IGlkcyxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMucHJvcHMubW92ZVJvdykge1xyXG4gICAgICB0aGlzLnByb3BzLm1vdmVSb3cocGFyYW1zKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc3RvcmUucmVsb2FkKCk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgZmlsdGVyQ29sdW1uKGNoZWNrZWRWYWx1ZSkge1xyXG4gICAgaWYgKGNoZWNrZWRWYWx1ZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICBtZXNzYWdlLndhcm5pbmcoXCLoh7PlsJHmmL7npLrkuIDliJfvvIFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZpbHRlckNvbHVtbnMgPSB0aGlzLnByb3BzLmNvbHVtbnMubWFwKChjb2w6IENvbHVtblR5cGU8e30+KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld0NvbCA9IHsgLi4uY29sIH0gYXMgQ29sdW1uVHlwZTx7fT4gJiB7IGluaXRTaG93OiBib29sZWFuIH07XHJcbiAgICAgIGlmIChjaGVja2VkVmFsdWUuaW5jbHVkZXMoY29sLmRhdGFJbmRleCkpIHtcclxuICAgICAgICBuZXdDb2wuaW5pdFNob3cgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld0NvbC5pbml0U2hvdyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBuZXdDb2w7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHsgcmVzaXplQ29sdW1uIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKCFyZXNpemVDb2x1bW4pIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgY29sdW1uczogZmlsdGVyQ29sdW1ucyxcclxuICAgICAgICBjaGVja0NvbHVtbjogY2hlY2tlZFZhbHVlLFxyXG4gICAgICAgIGRlZmF1bHRDaGVjazogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgY29sczogZmlsdGVyQ29sdW1ucyxcclxuICAgICAgICBjaGVja0NvbHVtbjogY2hlY2tlZFZhbHVlLFxyXG4gICAgICAgIGRlZmF1bHRDaGVjazogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRTb3J0UGFyYW0oc29ydGVyLCBzb3J0U3RhdGUgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgaXNNdWx0aXBsZSA9IEFycmF5LmlzQXJyYXkoc29ydGVyKTtcclxuICAgIGNvbnN0IHsgc29ydFNlYXJjaCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXNvcnRTZWFyY2gpIHtcclxuICAgICAgcmV0dXJuIHt9O1xyXG4gICAgfVxyXG4gICAgbGV0IHNvcnRJbmZvID0ge307XHJcbiAgICBsZXQgb3JkZXJJdGVtcyA9IFtdO1xyXG4gICAgaWYgKCFpc0VtcHR5T2JqKHNvcnRlcikgJiYgIWlzTXVsdGlwbGUgJiYgc29ydGVyLmNvbHVtbikge1xyXG4gICAgICBvcmRlckl0ZW1zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGNvbHVtbjogc29ydGVyLmNvbHVtbi5maWVsZCB8fCBzb3J0ZXIuY29sdW1uLmRhdGFJbmRleCxcclxuICAgICAgICAgIGFzYzogc29ydGVyLm9yZGVyID09IFwiYXNjZW5kXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgXTtcclxuICAgICAgaWYgKHNvcnRlci5jb2x1bW4pIHNvcnRJbmZvW3NvcnRlci5jb2x1bW4uZGF0YUluZGV4XSA9IHNvcnRlci5vcmRlcjtcclxuICAgIH0gZWxzZSBpZiAoaXNNdWx0aXBsZSkge1xyXG4gICAgICBzb3J0ZXIuZm9yRWFjaCgodikgPT4ge1xyXG4gICAgICAgIHNvcnRJbmZvW3YuY29sdW1uLmRhdGFJbmRleF0gPSB2Lm9yZGVyO1xyXG4gICAgICAgIGxldCBmaWVsZCA9IHYuY29sdW1uLmZpZWxkIHx8IHYuY29sdW1uLmRhdGFJbmRleDtcclxuICAgICAgICBvcmRlckl0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgY29sdW1uOiBmaWVsZCxcclxuICAgICAgICAgIGFzYzogdi5vcmRlciA9PSBcImFzY2VuZFwiLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChzb3J0U3RhdGUpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgc29ydEluZm86IHNvcnRJbmZvLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB7IG9yZGVySXRlbXM6IEpTT04uc3RyaW5naWZ5KG9yZGVySXRlbXMpIH07XHJcbiAgfVxyXG4gIGdldENvbHVtbnMoKSB7XHJcbiAgICBjb25zdCB7IGNvbHVtbnMsIHNvcnRUeXBlLCBzb3J0SW5mbyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgc29ydEZpZWxkcyA9IFtdIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZGVmYXVsdFNob3dDb2xzID0gY29sdW1ucy5maWx0ZXIoKGNvbHMpID0+IGNvbHMuaW5pdFNob3cgIT09IGZhbHNlKTtcclxuICAgIGNvbnN0IGNvbHMgPSBkZWZhdWx0U2hvd0NvbHMubWFwKChjb2wsIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChjb2wuZWxsaXBzaXMgJiYgIWNvbC5yZW5kZXIpIHtcclxuICAgICAgICBjb2wuZWxsaXBzaXMgPSB7XHJcbiAgICAgICAgICBzaG93VGl0bGU6IGZhbHNlLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29sLnJlbmRlciA9ICh0ZXh0KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IHRpdGxlPXt0ZXh0fSBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRleHRcIil9PlxyXG4gICAgICAgICAgICAgIHt0ZXh0fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHNvcnRGaWVsZHMuaW5kZXhPZihjb2wuZGF0YUluZGV4KSA+IC0xKSB7XHJcbiAgICAgICAgaWYgKHNvcnRUeXBlID09IFwic2luZ2xlXCIpIHtcclxuICAgICAgICAgIGNvbC5zb3J0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgY29sLnNvcnRPcmRlciA9IHNvcnRJbmZvW2NvbC5kYXRhSW5kZXhdXHJcbiAgICAgICAgICAgID8gc29ydEluZm9bY29sLmRhdGFJbmRleF1cclxuICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoc29ydFR5cGUgPT0gXCJtdWx0aXBsZVwiKSB7XHJcbiAgICAgICAgICBjb2wuc29ydGVyID0geyBtdWx0aXBsZTogaW5kZXggfTtcclxuICAgICAgICAgIGNvbC5zb3J0T3JkZXIgPSBzb3J0SW5mb1tjb2wuZGF0YUluZGV4XVxyXG4gICAgICAgICAgICA/IHNvcnRJbmZvW2NvbC5kYXRhSW5kZXhdXHJcbiAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGNvbDtcclxuICAgIH0pO1xyXG4gICAgY29scy5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmICghaXNFbXB0eU9iaihpdGVtLmZpbHRlclByb3BzKSkge1xyXG4gICAgICAgIGxldCBvYmogPSB7IC4uLml0ZW0gfTtcclxuICAgICAgICBjb25zdCB7IHR5cGUsIHByb3BzLCBzZWFyY2hLZXkgfSA9IGl0ZW0uZmlsdGVyUHJvcHM7XHJcbiAgICAgICAgbGV0IERpdiA9IG51bGw7XHJcbiAgICAgICAgbGV0IHRleHQgPSBpdGVtLnRpdGxlO1xyXG4gICAgICAgIERpdiA9IGdldE5vZGUodHlwZSwge1xyXG4gICAgICAgICAgcGxhY2Vob2xkZXI6IGDmkJzntKIke3RleHR9YCxcclxuICAgICAgICAgIC4uLnByb3BzLFxyXG4gICAgICAgICAgcmVmOiB0aGlzLnRhYmxlU2VhcmNoUmVmLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG9iaiA9IHtcclxuICAgICAgICAgIGZpbHRlckRyb3Bkb3duOiAoe1xyXG4gICAgICAgICAgICBzZXRTZWxlY3RlZEtleXMsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkS2V5cyxcclxuICAgICAgICAgICAgY29uZmlybSxcclxuICAgICAgICAgICAgY2xlYXJGaWx0ZXJzLFxyXG4gICAgICAgICAgfSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJzZWFyY2hcIil9PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInNwYWNlXCIpfT57RGl2fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPFNwYWNlPlxyXG4gICAgICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm0oKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1zIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld0ZpbHRlclBhcmFtcyA9IHsgLi4uZmlsdGVyUGFyYW1zIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQga2V5ID0gaXRlbS5maWVsZCB8fCBpdGVtLmRhdGFJbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgIG5ld0ZpbHRlclBhcmFtc1trZXldID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZVNlYXJjaFJlZi5jdXJyZW50Py5nZXRWYWx1ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtczogeyAuLi5uZXdGaWx0ZXJQYXJhbXMgfSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc29ydFBhcmFtID0gdGhpcy5nZXRTb3J0UGFyYW0odGhpcy5zdGF0ZS5zb3J0ZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5sb2FkKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IC4uLm5ld0ZpbHRlclBhcmFtcywgLi4uc29ydFBhcmFtIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJidXR0b25cIil9XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICDmn6Xor6JcclxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L1NwYWNlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGZpbHRlckljb246ICgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIDxTZWFyY2hPdXRsaW5lZCAvPjtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAuLi5vYmosXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb2xzW2luZGV4XSA9IG9iajtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gY29scztcclxuICB9XHJcbiAgcmVuZGVyVG9vbEJhcigpIHtcclxuICAgIGxldCB7IHRhYmxlU2l6ZSwgY29sdW1ucywgc29ydFR5cGUgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgeyBmaWx0ZXJDb2x1bW4sIGNvbHVtbnM6IGNvbExpc3RzLCB0b29sYmFyIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyB0YWJsZVRvb2wsIHN0b3JlUmVxdWVzdENvbmZpZyA9IHt9IH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0b29scyA9IFtcInJlZnJlc2hcIiwgXCJzaXplXCIsIFwic29ydFwiLCBcImNvbHVtblwiXTtcclxuICAgIGxldCB0b29sc0NsaWNrID0ge30gYXMgYW55O1xyXG4gICAgaWYgKHRvb2xiYXIgPT0gdHJ1ZSkge1xyXG4gICAgICB0b29scyA9IHRvb2xiYXIub25Ub29sQ2xpY2tcclxuICAgICAgICA/IHRvb2xiYXIub25Ub29sQ2xpY2tcclxuICAgICAgICA6IFtcInJlZnJlc2hcIiwgXCJzaXplXCIsIFwic29ydFwiLCBcImNvbHVtblwiXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRvb2xzID0gdG9vbGJhci50b29sc1xyXG4gICAgICAgID8gdG9vbGJhci50b29sc1xyXG4gICAgICAgIDogdGFibGVUb29sLnRvb2xzXHJcbiAgICAgICAgPyB0YWJsZVRvb2wudG9vbHNcclxuICAgICAgICA6IHRvb2xzO1xyXG4gICAgICB0b29sc0NsaWNrID0gdG9vbGJhci5vblRvb2xDbGljayA/IHRvb2xiYXIub25Ub29sQ2xpY2sgOiB7fTtcclxuICAgIH1cclxuICAgIGNvbnN0IHNpemVJdGVtID0gW1xyXG4gICAgICB7IHRpdGxlOiBcIuWuveadvlwiLCBrZXk6IFwiZGVmYXVsdFwiIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwi5Lit562JXCIsIGtleTogXCJtaWRkbGVcIiB9LFxyXG4gICAgICB7IHRpdGxlOiBcIue0p+WHkVwiLCBrZXk6IFwic21hbGxcIiB9LFxyXG4gICAgXTtcclxuICAgIGNvbnN0IHNvcnRJdGVtID0gW1xyXG4gICAgICB7IHRpdGxlOiBcIuWNleWtl+auteaOkuW6j1wiLCBrZXk6IFwic2luZ2xlXCIgfSxcclxuICAgICAgeyB0aXRsZTogXCLlpJrlrZfmrrXmjpLluo9cIiwga2V5OiBcIm11bHRpcGxlXCIgfSxcclxuICAgIF07XHJcbiAgICBjb25zdCBzb3J0Q29udGVudCA9IChcclxuICAgICAgPD5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvdGVudC10aXRsZVwiKX1cclxuICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgIGN1cnNvcjogdGhpcy5zdGF0ZS5kZWZhdWx0U29ydCA/IFwibm90LWFsbG93ZWRcIiA6IFwicG9pbnRlclwiLFxyXG4gICAgICAgICAgICBjb2xvcjogdGhpcy5zdGF0ZS5kZWZhdWx0U29ydCAmJiBcInJnYmEoMCwwLDAsLjQ1KVwiLFxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc3RhdGUuZGVmYXVsdFNvcnQpIHtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNvcnRlcjogW10sIHNvcnRJbmZvOiB7fSwgZGVmYXVsdFNvcnQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgLi4udGhpcy5zdGF0ZS5maWx0ZXJQYXJhbXMgfTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5yZWxvYWQoeyBwYXJhbXMgfSk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIOaBouWkjem7mOiupOaOkuW6j1xyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIHtzb3J0SXRlbS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAga2V5PXtpdGVtLmtleX1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgc29ydGVyOiBbXSxcclxuICAgICAgICAgICAgICAgICAgc29ydEluZm86IHt9LFxyXG4gICAgICAgICAgICAgICAgICBzb3J0VHlwZTogaXRlbS5rZXksXHJcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHRTb3J0OiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0geyAuLi50aGlzLnN0YXRlLmZpbHRlclBhcmFtcyB9O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5yZWxvYWQoeyBwYXJhbXMgfSk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHtzb3J0VHlwZSA9PSBpdGVtLmtleSA/IChcclxuICAgICAgICAgICAgICAgIDxhPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY29udGVudC10aWVtXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT5cclxuICAgICAgICAgICAgICAgICAgICAgIHtzb3J0VHlwZSA9PSBpdGVtLmtleSAmJiA8Q2hlY2tPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSl9XHJcbiAgICAgICAge3RoaXMuc3RhdGUuc29ydGVyLmxlbmd0aCA+IDAgJiYgKFxyXG4gICAgICAgICAgPD5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY290ZW50LXRpdGxlXCIpfVxyXG4gICAgICAgICAgICAgIHN0eWxlPXt7IGNvbG9yOiBcInJnYmEoMCwwLDAsLjQ1KVwiIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICDlvZPliY3mjpLluo9cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIHt0aGlzLnN0YXRlLnNvcnRlci5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LXRpZW1cIil9IGtleT17aW5kZXh9PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT5cclxuICAgICAgICAgICAgICAgICAgICB7aXRlbS5vcmRlciA9PSBcImFzY2VuZFwiID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgPFNvcnRBc2NlbmRpbmdPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICA8U29ydERlc2NlbmRpbmdPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS5jb2x1bW4udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgIDwvPlxyXG4gICAgICAgICl9XHJcbiAgICAgIDwvPlxyXG4gICAgKTtcclxuICAgIGNvbnN0IHNpemVDb250ZW50ID0gKFxyXG4gICAgICA8PlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb3RlbnQtdGl0bGVcIil9PuihqOagvOWvhuW6pjwvZGl2PlxyXG4gICAgICAgIHtzaXplSXRlbS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAga2V5PXtpdGVtLmtleX1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgdGFibGVTaXplOiBpdGVtLmtleSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7dGFibGVTaXplID09IGl0ZW0ua2V5ID8gKFxyXG4gICAgICAgICAgICAgICAgPGE+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IDIwIH19PlxyXG4gICAgICAgICAgICAgICAgICAgICAge3RhYmxlU2l6ZSA9PSBpdGVtLmtleSAmJiA8Q2hlY2tPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSl9XHJcbiAgICAgIDwvPlxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBkZWZhdWx0U2hvd0NvbHMgPSBjb2x1bW5zLmZpbHRlcigoY29scykgPT4gY29scy5pbml0U2hvdyAhPT0gZmFsc2UpO1xyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSAoXHJcbiAgICAgIDxDaGVja2JveC5Hcm91cFxyXG4gICAgICAgIG9uQ2hhbmdlPXt0aGlzLmZpbHRlckNvbHVtbi5iaW5kKHRoaXMpfVxyXG4gICAgICAgIG9wdGlvbnM9e2NvbExpc3RzLm1hcChcclxuICAgICAgICAgIChjb2w6IENvbHVtblR5cGU8e30+ICYgeyBmaWx0ZXJDb2x1bW46IGJvb2xlYW47IGRhdGFJbmRleDogYW55IH0pID0+IHtcclxuICAgICAgICAgICAgaWYgKCFjb2wuZGF0YUluZGV4KSB7XHJcbiAgICAgICAgICAgICAgY29sLmRhdGFJbmRleCA9IGNvbC50aXRsZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIGxhYmVsOiBjb2wudGl0bGUsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IGNvbC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IGNvbC5maWx0ZXJDb2x1bW4gPT09IGZhbHNlLFxyXG4gICAgICAgICAgICB9IGFzIENoZWNrYm94T3B0aW9uVHlwZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApfVxyXG4gICAgICAgIC8vIGRlZmF1bHRWYWx1ZT17ZGVmYXVsdFNob3dDb2xzLm1hcCgoY29sKSA9PiBjb2wuZGF0YUluZGV4KX1cclxuICAgICAgICB2YWx1ZT17XHJcbiAgICAgICAgICB0aGlzLnN0YXRlLmRlZmF1bHRDaGVja1xyXG4gICAgICAgICAgICA/IGRlZmF1bHRTaG93Q29scy5tYXAoKGNvbCkgPT4gY29sLmRhdGFJbmRleClcclxuICAgICAgICAgICAgOiB0aGlzLnN0YXRlLmNoZWNrQ29sdW1uXHJcbiAgICAgICAgfVxyXG4gICAgICA+PC9DaGVja2JveC5Hcm91cD5cclxuICAgICk7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidGFibGUtdG9vbC1iYXJcIil9PlxyXG4gICAgICAgIHt0b29scy5pbmRleE9mKFwiY29sdW1uXCIpID4gLTEgJiYgKFxyXG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBmb250U2l6ZTogMTQgfX0+XHJcbiAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgdGl0bGU9XCLpgInmi6nmmL7npLrnmoTliJdcIlxyXG4gICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tUmlnaHRcIlxyXG4gICAgICAgICAgICAgIHRyaWdnZXI9XCJjbGlja1wiXHJcbiAgICAgICAgICAgICAgb3ZlcmxheVN0eWxlPXt7IG1pbldpZHRoOiA0MTAsIG1heFdpZHRoOiA0NTAgfX1cclxuICAgICAgICAgICAgICAvLyBnZXRQb3B1cENvbnRhaW5lcj17KCkgPT4gdGhpcy50aEljb25SZWYuY3VycmVudH1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxBcHBzdG9yZU91dGxpbmVkIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiYXBwLXN0b3JlLWljb25cIil9IC8+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAge3Rvb2xzLmluZGV4T2YoXCJzb3J0XCIpID4gLTEgJiYgKFxyXG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBtYXJnaW5SaWdodDogOCwgZm9udFNpemU6IDE0IH19PlxyXG4gICAgICAgICAgICA8UG9wb3ZlciBwbGFjZW1lbnQ9XCJib3R0b21cIiBjb250ZW50PXtzb3J0Q29udGVudH0gdHJpZ2dlcj1cImNsaWNrXCI+XHJcbiAgICAgICAgICAgICAgPFNvcnRBc2NlbmRpbmdPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIHt0b29scy5pbmRleE9mKFwic2l6ZVwiKSA+IC0xICYmIChcclxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgbWFyZ2luUmlnaHQ6IDgsIGZvbnRTaXplOiAxNCB9fT5cclxuICAgICAgICAgICAgPFBvcG92ZXIgcGxhY2VtZW50PVwiYm90dG9tXCIgY29udGVudD17c2l6ZUNvbnRlbnR9IHRyaWdnZXI9XCJjbGlja1wiPlxyXG4gICAgICAgICAgICAgIDxDb2x1bW5IZWlnaHRPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIHt0b29scy5pbmRleE9mKFwicmVmcmVzaFwiKSA+IC0xICYmIChcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgc3R5bGU9e3sgbWFyZ2luUmlnaHQ6IDgsIGZvbnRTaXplOiAxNCwgY3Vyc29yOiBcInBvaW50ZXJcIiB9fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0geyAuLi50aGlzLnN0YXRlLmZpbHRlclBhcmFtcyB9O1xyXG4gICAgICAgICAgICAgIGlmICh0b29sc0NsaWNrLm9uUmVmcmVzaCkge1xyXG4gICAgICAgICAgICAgICAgdG9vbHNDbGljay5vblJlZnJlc2goKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5sb2FkKHsgcGFyYW1zIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPFJlZG9PdXRsaW5lZCAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5zZWxlY3RlZFJvd0tleXM7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93RGF0YXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5zZWxlY3RlZFJvd0RhdGFzO1xyXG4gIH1cclxuICByZXNldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IFtdLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBbXSxcclxuICAgIH0pO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0tleXMoZGF0YSkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogZGF0YSxcclxuICAgIH0pO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0RhdGFzKGRhdGEpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBkYXRhLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJvd1NlbGVjdGlvbk9uU2VsZWN0KHJlY29yZDogYW55LCBzZWxlY3RlZDogYW55KSB7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkUm93S2V5cywgc2VsZWN0ZWRSb3dEYXRhcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBuZXdTZWxlY3RlZFJvd0tleXMgPSBbLi4uc2VsZWN0ZWRSb3dLZXlzXTtcclxuICAgIGxldCBuZXdTZWxlY3RlZFJvd0RhdGFzID0gWy4uLnNlbGVjdGVkUm93RGF0YXNdO1xyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIG5ld1NlbGVjdGVkUm93S2V5cyA9IFsuLi5uZXdTZWxlY3RlZFJvd0tleXMsIHJlY29yZFtyb3dLZXldXTtcclxuICAgICAgbmV3U2VsZWN0ZWRSb3dEYXRhcyA9IFsuLi5uZXdTZWxlY3RlZFJvd0RhdGFzLCByZWNvcmRdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0gPT09IHJlY29yZFtyb3dLZXldKSB7XHJcbiAgICAgICAgICBuZXdTZWxlY3RlZFJvd0tleXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW1bcm93S2V5XSA9PT0gcmVjb3JkW3Jvd0tleV0pIHtcclxuICAgICAgICAgIG5ld1NlbGVjdGVkUm93RGF0YXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogbmV3U2VsZWN0ZWRSb3dLZXlzLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBuZXdTZWxlY3RlZFJvd0RhdGFzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJvd1NlbGVjdGlvbk9uU2VsZWN0QWxsKHNlbGVjdGVkOiBhbnksIHNlbGVjdGVkUm93czogYW55LCBjaGFuZ2VSb3dzOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgc2VsZWN0ZWRSb3dLZXlzLCBzZWxlY3RlZFJvd0RhdGFzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgbmV3aWRzOiBhbnkgPSBbXTtcclxuICAgIGxldCBuZXdkYXRhczogYW55ID0gW107XHJcbiAgICBpZiAoY2hhbmdlUm93cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBjaGFuZ2VJZHMgPSBjaGFuZ2VSb3dzLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtW3Jvd0tleV0pO1xyXG4gICAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAgICBuZXdpZHMgPSBbLi4uc2VsZWN0ZWRSb3dLZXlzLCAuLi5jaGFuZ2VJZHNdO1xyXG4gICAgICAgIG5ld2RhdGFzID0gWy4uLnNlbGVjdGVkUm93RGF0YXMsIC4uLmNoYW5nZVJvd3NdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNlbGVjdGVkUm93S2V5cy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNoYW5nZUlkcy5pbmRleE9mKGl0ZW0pID09IC0xKSB7XHJcbiAgICAgICAgICAgIG5ld2lkcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHNlbGVjdGVkUm93RGF0YXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChjaGFuZ2VJZHMuaW5kZXhPZihpdGVtW3Jvd0tleV0pID09IC0xKSB7XHJcbiAgICAgICAgICAgIG5ld2RhdGFzLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG5ld2lkcyA9IFsuLi5zZWxlY3RlZFJvd0tleXNdO1xyXG4gICAgICBuZXdkYXRhcyA9IFsuLi5zZWxlY3RlZFJvd0RhdGFzXTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IFsuLi5uZXdpZHNdLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBbLi4ubmV3ZGF0YXNdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJlbmRlcigpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXMsXHJcbiAgICAgIHtcclxuICAgICAgICBsb2FkaW5nLFxyXG4gICAgICAgIGRhdGFTb3VyY2UsXHJcbiAgICAgICAgcGFnaW5hdGlvbiA9IHt9LFxyXG4gICAgICAgIHNlYXJjaFRleHQsXHJcbiAgICAgICAgZmllbGRPcHRpb24sXHJcbiAgICAgICAgc2VhcmNoQ29sb3IsXHJcbiAgICAgICAgdGFibGVTaXplLFxyXG4gICAgICB9ID0gdGhpcy5zdGF0ZSxcclxuICAgICAgcHJvcHMgPSB1dGlscy5vbWl0KFxyXG4gICAgICAgIHRoaXMucHJvcHMsXHJcbiAgICAgICAgW1xyXG4gICAgICAgICAgXCJzdG9yZVwiLFxyXG4gICAgICAgICAgXCJvbkNoYW5nZVwiLFxyXG4gICAgICAgICAgXCJjb2x1bW5zXCIsXHJcbiAgICAgICAgICBcInJlc2V0Q29sdW1uXCIsXHJcbiAgICAgICAgICBcInRvb2xiYXJcIixcclxuICAgICAgICAgIFwic29ydEZpZWxkc1wiLFxyXG4gICAgICAgICAgXCJmaWx0ZXJDb2x1bW5cIixcclxuICAgICAgICAgIFwic29ydFNlYXJjaFwiLFxyXG4gICAgICAgICAgXCJzaG93Um93U2VsZWN0aW9uXCIsXHJcbiAgICAgICAgXSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICByb3dLZXk6IFwiaWRcIixcclxuICAgICAgICAgIGNsaWNrQ2hhbmdlQ29sb3I6IGZhbHNlLFxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIGlmIChwcm9wcy5wYWdpbmF0aW9uICE9PSBmYWxzZSkge1xyXG4gICAgICBwcm9wcy5wYWdpbmF0aW9uID0ge1xyXG4gICAgICAgIHBvc2l0aW9uOiBbXCJib3R0b21SaWdodFwiXSxcclxuICAgICAgICBzaG93U2l6ZUNoYW5nZXI6IHRydWUsXHJcbiAgICAgICAgc2hvd1F1aWNrSnVtcGVyOiB0cnVlLFxyXG4gICAgICAgIC4uLnByb3BzLnBhZ2luYXRpb24sXHJcbiAgICAgICAgLi4ucGFnaW5hdGlvbixcclxuICAgICAgfTtcclxuICAgICAgaWYgKHByb3BzLnNob3dUb3RhbCA9PSB0cnVlKSB7XHJcbiAgICAgICAgcHJvcHMucGFnaW5hdGlvbi5zaG93VG90YWwgPSBmdW5jdGlvbiAodG90YWwsIFtmcm9tLCB0b10pIHtcclxuICAgICAgICAgIC8vIHJldHVybiBcIuaYvuekuiBcIiArIGZyb20gKyBcIiAtIFwiICsgdG8gKyBcIuadoe+8jOWFsSBcIiArIHRvdGFsICsgXCIg5p2hXCI7XHJcbiAgICAgICAgICByZXR1cm4gXCLlhbEgXCIgKyB0b3RhbCArIFwiIOadoVwiO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHByb3BzLm9uQ2hhbmdlID0gZnVuY3Rpb24gKHBhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmEpIHtcclxuICAgICAgX3RoaXMub25DaGFuZ2UocGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSk7XHJcbiAgICB9O1xyXG4gICAgaWYgKHByb3BzLmNsaWNrQ2hhbmdlQ29sb3IpIHtcclxuICAgICAgY29uc3Qgb25Sb3dGbiA9IHByb3BzLm9uUm93O1xyXG4gICAgICBwcm9wcy5vblJvdyA9IGZ1bmN0aW9uIChyZWNvcmQsIGluZGV4KSB7XHJcbiAgICAgICAgdmFyIGN1c3RvbSA9IG9uUm93Rm4gPyBvblJvd0ZuKHJlY29yZCwgaW5kZXgpIDoge307XHJcbiAgICAgICAgY29uc3Qgb25DbGlja0ZuID0gY3VzdG9tLm9uQ2xpY2s7XHJcbiAgICAgICAgY3VzdG9tLm9uQ2xpY2sgPSAoZXZlbnQpID0+IHtcclxuICAgICAgICAgIF90aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgYWN0aXZlSW5kZXg6IGluZGV4LCAvL+iOt+WPlueCueWHu+ihjOeahOe0ouW8lVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB1dGlscy5jYWxsYmFjayhvbkNsaWNrRm4sIF90aGlzLCBbZXZlbnRdKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBjdXN0b207XHJcbiAgICAgIH07XHJcbiAgICAgIHByb3BzLnJvd0NsYXNzTmFtZSA9IGZ1bmN0aW9uIChyZWNvcmQsIGluZGV4KSB7XHJcbiAgICAgICAgcmV0dXJuIGluZGV4ID09PSBfdGhpcy5zdGF0ZS5hY3RpdmVJbmRleFxyXG4gICAgICAgICAgPyBgJHtzdHlsZXMuY2xpY2tSb3dTdHlsZX1gXHJcbiAgICAgICAgICA6IFwiXCI7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBsZXQgbmV3RGF0YVNvdXJjZSA9IFtdO1xyXG4gICAgaWYgKHNlYXJjaFRleHQpIHtcclxuICAgICAgY29uc3QgZGF0YSA9IHRyZWVVdGlscy5nZXRTZWFyY2hNZW51RGF0YXMoXHJcbiAgICAgICAgdGhpcyxcclxuICAgICAgICBzZWFyY2hUZXh0LFxyXG4gICAgICAgIGZpZWxkT3B0aW9uLFxyXG4gICAgICAgIHNlYXJjaENvbG9yXHJcbiAgICAgICk7XHJcbiAgICAgIG5ld0RhdGFTb3VyY2UgPSBkYXRhLnRyZWVEYXRhcztcclxuICAgICAgcHJvcHMuZXhwYW5kZWRSb3dLZXlzID0gZGF0YS5vcGVuS2V5cztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG5ld0RhdGFTb3VyY2UgPSBkYXRhU291cmNlO1xyXG4gICAgfVxyXG4gICAgcHJvcHMuc3RvcmUgPSBwcm9wcy5zdG9yZSB8fCB7fTtcclxuICAgIHByb3BzLnN0b3JlLmF1dG9Mb2FkID0gcHJvcHMuc3RvcmUuYXV0b0xvYWQgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlO1xyXG4gICAgY29uc3QgeyBkcmFnYWJsZSB9ID0gX3RoaXMucHJvcHM7XHJcbiAgICBjb25zdCBkcmFnYWJsZVByb3BzID1cclxuICAgICAgZHJhZ2FibGUgPT09IHRydWVcclxuICAgICAgICA/IHtcclxuICAgICAgICAgICAgY29tcG9uZW50czogQm9keVJvd0NvbXBvbmVudCxcclxuICAgICAgICAgICAgb25Sb3c6IChyZWNvcmQsIGluZGV4KSA9PiAoe1xyXG4gICAgICAgICAgICAgIGluZGV4LFxyXG4gICAgICAgICAgICAgIHJlY29yZCxcclxuICAgICAgICAgICAgICBtb3ZlUm93OiB0aGlzLm1vdmVSb3csXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDoge307XHJcbiAgICBsZXQgeyByZXNpemVDb2x1bW4gfSA9IHRoaXMucHJvcHM7XHJcblxyXG4gICAgY29uc3QgcmVzaXplUHJvcHMgPVxyXG4gICAgICByZXNpemVDb2x1bW4gPT09IHRydWUgPyB7IGNvbXBvbmVudHM6IHRoaXMuY29tcG9uZW50cyB9IDogbnVsbDtcclxuICAgIGNvbnN0IHsgdGFibGVUb29sIH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0b29sRmxhZyA9IHRydWU7XHJcbiAgICBsZXQgdG9vbHByb3BzID1cclxuICAgICAgdGhpcy5wcm9wcy50b29sYmFyID09PSBmYWxzZSB8fCB0aGlzLnByb3BzLnRvb2xiYXI/LnNob3cgPT09IGZhbHNlXHJcbiAgICAgICAgPyBmYWxzZVxyXG4gICAgICAgIDogdHJ1ZTtcclxuICAgIGlmICghdG9vbHByb3BzKSB7XHJcbiAgICAgIHRvb2xGbGFnID0gdG9vbHByb3BzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdG9vbEZsYWcgPSB0YWJsZVRvb2wuc2hvdyA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wcm9wcy5zaG93Um93U2VsZWN0aW9uKSB7XHJcbiAgICAgIGNvbnN0IHsgcm93U2VsZWN0aW9uID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgIHByb3BzID0ge1xyXG4gICAgICAgIC4uLnByb3BzLFxyXG4gICAgICAgIHJvd1NlbGVjdGlvbjoge1xyXG4gICAgICAgICAgc2VsZWN0ZWRSb3dLZXlzOiB0aGlzLnN0YXRlLnNlbGVjdGVkUm93S2V5cyxcclxuICAgICAgICAgIG9uU2VsZWN0OiB0aGlzLnJvd1NlbGVjdGlvbk9uU2VsZWN0LmJpbmQodGhpcyksXHJcbiAgICAgICAgICBvblNlbGVjdEFsbDogdGhpcy5yb3dTZWxlY3Rpb25PblNlbGVjdEFsbC5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgY29sdW1uV2lkdGg6IDQwLFxyXG4gICAgICAgICAgLi4ucm93U2VsZWN0aW9uLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBjb25zdCBEZWZhdWx0VGFibGUgPSAoXHJcbiAgICAgIDw+XHJcbiAgICAgICAge3Rvb2xGbGFnICYmIHRoaXMucmVuZGVyVG9vbEJhcigpfVxyXG4gICAgICAgIDxUYWJsZVxyXG4gICAgICAgICAgY2hpbGRyZW5Db2x1bW5OYW1lPVwiY2hpbGROb2Rlc1wiXHJcbiAgICAgICAgICBzaGVpdGVtXHJcbiAgICAgICAgICBkYXRhU291cmNlPXtuZXdEYXRhU291cmNlfVxyXG4gICAgICAgICAgY29sdW1ucz17dGhpcy5nZXRDb2x1bW5zKCl9XHJcbiAgICAgICAgICBsb2FkaW5nPXtsb2FkaW5nfVxyXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbXCJuc2MtdGFibGVcIl19XHJcbiAgICAgICAgICBsb2NhbGU9e3tcclxuICAgICAgICAgICAgZW1wdHlUZXh0OiA8Tm9EYXRhIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidGFibGUtbm9kYXRhXCIpfSAvPixcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBzY3JvbGw9e3sgeDogXCJtYXgtY29udGVudFwiIH19XHJcbiAgICAgICAgICB7Li4ucmVzaXplUHJvcHN9XHJcbiAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgICB7Li4uZHJhZ2FibGVQcm9wc31cclxuICAgICAgICAgIHNpemU9e3RhYmxlU2l6ZX1cclxuICAgICAgICAvPlxyXG4gICAgICA8Lz5cclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIGRyYWdhYmxlID09PSB0cnVlID8gKFxyXG4gICAgICA8RG5kUHJvdmlkZXIgYmFja2VuZD17SFRNTDVCYWNrZW5kfT57RGVmYXVsdFRhYmxlfTwvRG5kUHJvdmlkZXI+XHJcbiAgICApIDogKFxyXG4gICAgICBEZWZhdWx0VGFibGVcclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCB3aXRoWmhMb2NhbGUoTlNDVGFibGUpO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FDRUEsZ0JBQWdCLEVBQ2hCQyxh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Q0FBQztVQUNwRGdFLFdBQVcsRUFBRTtRQUFFLEdBQ1pILFlBQVk7TUFDaEIsRUFDRjtJQUNIO0lBQ0EsTUFBTUksWUFBWSxnQkFDaEI3UyxLQUFBLENBQUF1QixhQUFBLENBQUF2QixLQUFBLENBQUFxTyxRQUFBLFFBQ0dnRSxRQUFRLElBQUksSUFBSSxDQUFDM0UsYUFBYSxDQUFDLENBQUMsZUFDakMxTixLQUFBLENBQUF1QixhQUFBLENBQUF1UixNQUFBLEVBQUFDLFFBQUE7TUFDRUMsa0JBQWtCLEVBQUMsWUFBWTtNQUMvQkMsT0FBTztNQUNQcE8sVUFBVSxFQUFFK00sYUFBYztNQUMxQjlNLE9BQU8sRUFBRSxJQUFJLENBQUN1RyxVQUFVLENBQUMsQ0FBRTtNQUMzQnRHLE9BQU8sRUFBRUEsT0FBUTtNQUNqQitHLFNBQVMsRUFBRXhMLE1BQU0sQ0FBQyxXQUFXLENBQUU7TUFDL0I0UyxNQUFNLEVBQUU7UUFDTkMsU0FBUyxlQUFFblQsS0FBQSxDQUFBdUIsYUFBQSxDQUFDVixNQUFNO1VBQUNpTCxTQUFTLEVBQUVuTCxPQUFPLENBQUNMLE1BQU0sRUFBRSxjQUFjO1FBQUUsQ0FBRTtNQUNsRSxDQUFFO01BQ0Y4UyxNQUFNLEVBQUU7UUFBRUMsQ0FBQyxFQUFFO01BQWM7SUFBRSxHQUN6QmpCLFdBQVcsRUFDWG5SLEtBQUssRUFDTGlSLGFBQWE7TUFDakIxUCxJQUFJLEVBQUVhO0lBQVUsRUFDakIsQ0FDRCxDQUNIO0lBRUQsT0FBTzRPLFFBQVEsS0FBSyxJQUFJLGdCQUN0QmpTLEtBQUEsQ0FBQXVCLGFBQUEsQ0FBQ3RCLFdBQVc7TUFBQ3FULE9BQU8sRUFBRTlTO0lBQWEsR0FBRXFTLFlBQTBCLENBQUMsR0FFaEVBLFlBQ0Q7RUFDSDtBQUNGO0FBQUM5USxlQUFBLENBdDRCS0osUUFBUSxrQkFDVTtFQUNwQnNRLFFBQVEsRUFBRSxLQUFLO0VBQ2ZqQixTQUFTLEVBQUUsSUFBSTtFQUNmaEgsWUFBWSxFQUFFLElBQUk7RUFDbEJ1SixPQUFPLEVBQUUsRUFBRTtFQUNYdkssY0FBYyxFQUFFLElBQUk7RUFDcEJELFFBQVEsRUFBRSxJQUFJO0VBQ2RELFlBQVksRUFBRSxJQUFJO0VBQ2xCekIsWUFBWSxFQUFFLElBQUk7RUFDbEJ1RyxPQUFPLEVBQUU7SUFDUDJFLElBQUksRUFBRSxJQUFJO0lBQ1Z0RSxXQUFXLEVBQUUsQ0FBQztFQUNoQjtBQUNGLENBQUM7QUEwM0JILGVBQWV4TixZQUFZLENBQUNrQixRQUFRLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
959
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBcHBzdG9yZU91dGxpbmVkIiwiQ2hlY2tPdXRsaW5lZCIsIkNvbHVtbkhlaWdodE91dGxpbmVkIiwiU2VhcmNoT3V0bGluZWQiLCJTb3J0QXNjZW5kaW5nT3V0bGluZWQiLCJTb3J0RGVzY2VuZGluZ091dGxpbmVkIiwiUmVkb091dGxpbmVkIiwiaXNFbXB0eU9iaiIsIlN0b3JlIiwiUGFnZVN0b3JlIiwidXRpbHMiLCJSZWFjdCIsIkRuZFByb3ZpZGVyIiwiQm9keVJvdyIsIkRuZENvbnRleHRUeXBlIiwiSUJvZHlSb3dQcm9wcyIsInRyZWVVdGlscyIsInN0eWxlcyIsIkJvZHlSb3dDb21wb25lbnQiLCJIVE1MNUJhY2tlbmQiLCJ3aXRoWmhMb2NhbGUiLCJSZXNpemFibGUiLCJnZXRMZXNzIiwiZ2V0Tm9kZSIsIk5vRGF0YSIsImdldFN0b3JhZ2UiLCJjb25maWciLCJSZXNpemVhYmxlVGl0bGUiLCJwcm9wcyIsIm9uUmVzaXplIiwid2lkdGgiLCJyZXN0UHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJjcmVhdGVFbGVtZW50IiwiaGVpZ2h0IiwiZHJhZ2dhYmxlT3B0cyIsImVuYWJsZVVzZXJTZWxlY3RIYWNrIiwiTlNDVGFibGUiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsIl9hdXRvVHlwZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsIm9uQmVmb3JlTG9hZCIsImxvYWQiLCJoZWFkZXIiLCJjZWxsIiwiaW5kZXgiLCJlIiwiX3JlZiIsInNpemUiLCJjb2xzIiwic3RhdGUiLCJuZXh0Q29sdW1ucyIsIl9vYmplY3RTcHJlYWQiLCJzZXRTdGF0ZSIsImV2IiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsIl90aGlzIiwiZXZlbnRUeXBlIiwicGF5bG9hZCIsInRhYmxlU2l6ZSIsImRyYWdJbmRleCIsImhvdmVySW5kZXgiLCJkcmFnIiwidGFyZ2V0IiwiZHJhZ05vZGUiLCJyZWNvcmQiLCJ0YXJnZXROb2RlIiwibW92ZUFycmF5IiwiaWRzIiwicGFyZW50Tm9kZSIsImdldENoaWxkTm9kZUlkcyIsInBhcmFtcyIsImlkIiwicGFyZW50SWQiLCJhdHRyaWJ1dGUiLCJtb3ZlUm93Iiwic3RvcmUiLCJyZWxvYWQiLCJtb2RhbCIsInR5cGUiLCJzdG9yZVByZWZpeCIsImF1dG9UeXBlIiwiY29udGVudCIsImRhdGFTb3VyY2UiLCJjb2x1bW5zIiwibG9hZGluZyIsInBhZ2luYXRpb24iLCJhY3RpdmVJbmRleCIsInNlYXJjaFRleHQiLCJmaWVsZE9wdGlvbiIsInNlYXJjaENvbG9yIiwic29ydHMiLCJmaWx0ZXJQYXJhbXMiLCJzb3J0VHlwZSIsInNvcnRlciIsInNvcnRJbmZvIiwiZGVmYXVsdFNvcnQiLCJjaGVja0NvbHVtbiIsImRlZmF1bHRDaGVjayIsInNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93RGF0YXMiLCJfcmVmMiIsImxpc3RlbmVycyIsImxpc3RlbmVyc1Byb3BzIiwicmVzdFN0b3JlIiwiX2V4Y2x1ZGVkMiIsInN0b3JlUHJvcHMiLCJtb2RlbCIsImNvbXBvbmVudCIsIm9wdGlvbnMiLCJjYWxsYmFjayIsImRhdGFDaGFuZ2VkIiwibW9kZWxEYXRhIiwicGFnaW5nIiwiZ2V0UGFnaW5hdGlvbiIsIm9uRXJyb3JMb2FkIiwiZXJyIiwicmVzcG9uc2UiLCJhdXRvTG9hZCIsIk9iamVjdCIsImFzc2lnbiIsImN1cnJlbnQiLCJjb21wb25lbnREaWRNb3VudCIsInJlc2l6ZUNvbHVtbiIsInNldERhdGEiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwibGlzdGVuTWVzc2FnZSIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNvbXBvbmVudERpZFVwZGF0ZSIsInByZXZQcm9wcyIsInByZVN0YXRlIiwicmVzZXRDb2x1bW4iLCJuZXdDb2xzIiwiY29sc3MiLCJtYXAiLCJjb2wiLCJ0ZW1wIiwib25IZWFkZXJDZWxsIiwiY29sdW1uIiwiaGFuZGxlUmVzaXplIiwicHVzaCIsImNsZWFyU2VsZWN0Q29sb3IiLCJnZXRQYWdpbmF0aW9uQnlTdG9yZSIsIm9uQ2hhbmdlIiwiZmlsdGVycyIsImV4dHJhIiwiYXV0b09uQ2hhbmdlIiwiYXV0b1NvcnQiLCJhdXRvUGFnaW5hdGlvbiIsImlzTXVsdGlwbGUiLCJBcnJheSIsImlzQXJyYXkiLCJoYW5kbGVQYWdpbmF0aW9uIiwicCIsImN1cnJlbnRLZXkiLCJwYWdlU2l6ZUtleSIsInBhZ2VTaXplIiwiYXNjUGFyYW1zIiwiZ2V0U29ydFBhcmFtIiwib25DaGFuZ2VGbiIsImdldFN0b3JlIiwiZ2V0TW9kZWwiLCJoYW5kbGVTZWFyY2giLCJ2YWwiLCJmaWx0ZXJDb2x1bW4iLCJjaGVja2VkVmFsdWUiLCJsZW5ndGgiLCJfbWVzc2FnZSIsIndhcm5pbmciLCJmaWx0ZXJDb2x1bW5zIiwibmV3Q29sIiwiaW5jbHVkZXMiLCJkYXRhSW5kZXgiLCJpbml0U2hvdyIsInNvcnRTdGF0ZSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsInNvcnRTZWFyY2giLCJvcmRlckl0ZW1zIiwiZmllbGQiLCJhc2MiLCJvcmRlciIsImZvckVhY2giLCJ2Iiwic3RyaW5naWZ5IiwiZ2V0Q29sdW1ucyIsInNvcnRGaWVsZHMiLCJkZWZhdWx0U2hvd0NvbHMiLCJmaWx0ZXIiLCJlbGxpcHNpcyIsInJlbmRlciIsInNob3dUaXRsZSIsInRleHQiLCJ0aXRsZSIsImNsYXNzTmFtZSIsImluZGV4T2YiLCJzb3J0T3JkZXIiLCJtdWx0aXBsZSIsIml0ZW0iLCJmaWx0ZXJQcm9wcyIsIm9iaiIsInNlYXJjaEtleSIsIkRpdiIsInBsYWNlaG9sZGVyIiwiY29uY2F0IiwicmVmIiwidGFibGVTZWFyY2hSZWYiLCJmaWx0ZXJEcm9wZG93biIsIl9yZWYzIiwic2V0U2VsZWN0ZWRLZXlzIiwic2VsZWN0ZWRLZXlzIiwiY29uZmlybSIsImNsZWFyRmlsdGVycyIsIl9TcGFjZSIsIl9CdXR0b24iLCJvbkNsaWNrIiwiX3RoaXMkdGFibGVTZWFyY2hSZWYkIiwibmV3RmlsdGVyUGFyYW1zIiwia2V5IiwiZ2V0VmFsdWUiLCJzb3J0UGFyYW0iLCJmaWx0ZXJJY29uIiwicmVuZGVyVG9vbEJhciIsImNvbExpc3RzIiwidG9vbGJhciIsInRhYmxlVG9vbCIsInN0b3JlUmVxdWVzdENvbmZpZyIsInRvb2xzIiwidG9vbHNDbGljayIsIm9uVG9vbENsaWNrIiwic2l6ZUl0ZW0iLCJzb3J0SXRlbSIsInNvcnRDb250ZW50IiwiRnJhZ21lbnQiLCJzdHlsZSIsImN1cnNvciIsImNvbG9yIiwic2l6ZUNvbnRlbnQiLCJfQ2hlY2tib3giLCJHcm91cCIsImJpbmQiLCJsYWJlbCIsInZhbHVlIiwiZGlzYWJsZWQiLCJmb250U2l6ZSIsIl9Qb3BvdmVyIiwicGxhY2VtZW50IiwidHJpZ2dlciIsIm92ZXJsYXlTdHlsZSIsIm1pbldpZHRoIiwibWF4V2lkdGgiLCJtYXJnaW5SaWdodCIsIm9uUmVmcmVzaCIsImdldFNlbGVjdGVkUm93S2V5cyIsImdldFNlbGVjdGVkUm93RGF0YXMiLCJyZXNldFNlbGVjdGVkUm93S2V5cyIsInNldFNlbGVjdGVkUm93S2V5cyIsInNldFNlbGVjdGVkUm93RGF0YXMiLCJyb3dTZWxlY3Rpb25PblNlbGVjdCIsInNlbGVjdGVkIiwicm93S2V5IiwibmV3U2VsZWN0ZWRSb3dLZXlzIiwibmV3U2VsZWN0ZWRSb3dEYXRhcyIsInNwbGljZSIsInJvd1NlbGVjdGlvbk9uU2VsZWN0QWxsIiwic2VsZWN0ZWRSb3dzIiwiY2hhbmdlUm93cyIsIm5ld2lkcyIsIm5ld2RhdGFzIiwiY2hhbmdlSWRzIiwiX3RoaXMkcHJvcHMkdG9vbGJhciIsIm9taXQiLCJjbGlja0NoYW5nZUNvbG9yIiwicG9zaXRpb24iLCJzaG93U2l6ZUNoYW5nZXIiLCJzaG93UXVpY2tKdW1wZXIiLCJzaG93VG90YWwiLCJ0b3RhbCIsIl9yZWY0IiwiZnJvbSIsInRvIiwib25Sb3dGbiIsIm9uUm93IiwiY3VzdG9tIiwib25DbGlja0ZuIiwiZXZlbnQiLCJyb3dDbGFzc05hbWUiLCJjbGlja1Jvd1N0eWxlIiwibmV3RGF0YVNvdXJjZSIsImdldFNlYXJjaE1lbnVEYXRhcyIsInRyZWVEYXRhcyIsImV4cGFuZGVkUm93S2V5cyIsIm9wZW5LZXlzIiwiZHJhZ2FibGUiLCJkcmFnYWJsZVByb3BzIiwiY29tcG9uZW50cyIsInJlc2l6ZVByb3BzIiwidG9vbEZsYWciLCJ0b29scHJvcHMiLCJzaG93Iiwic2hvd1Jvd1NlbGVjdGlvbiIsInJvd1NlbGVjdGlvbiIsIm9uU2VsZWN0Iiwib25TZWxlY3RBbGwiLCJjb2x1bW5XaWR0aCIsIkRlZmF1bHRUYWJsZSIsIl9UYWJsZSIsIl9leHRlbmRzIiwiY2hpbGRyZW5Db2x1bW5OYW1lIiwic2hlaXRlbSIsImxvY2FsZSIsImVtcHR5VGV4dCIsInNjcm9sbCIsIngiLCJiYWNrZW5kIiwiZHJhZ1VybCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvdGFibGUvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIEBEZXNjcmlwdHRpb246XHJcbiAqIEB2ZXJzaW9uOlxyXG4gKiBAQXV0aG9yOiByeHpodVxyXG4gKiBARGF0ZTogMjAyMS0wMy0yMyAwODo0NjoyMFxyXG4gKiBATGFzdEVkaXRvcnM6IHJ4emh1XHJcbiAqIEBMYXN0RWRpdFRpbWU6IDIwMjEtMDMtMjMgMTA6MzA6NDJcclxuICovXHJcbmltcG9ydCB7XHJcbiAgQXBwc3RvcmVPdXRsaW5lZCxcclxuICBDaGVja091dGxpbmVkLFxyXG4gIENvbHVtbkhlaWdodE91dGxpbmVkLFxyXG4gIFNlYXJjaE91dGxpbmVkLFxyXG4gIFNvcnRBc2NlbmRpbmdPdXRsaW5lZCxcclxuICBTb3J0RGVzY2VuZGluZ091dGxpbmVkLFxyXG4gIFJlZG9PdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIEJ1dHRvbixcclxuICBDaGVja2JveCxcclxuICBDaGVja2JveE9wdGlvblR5cGUsXHJcbiAgTWVudSxcclxuICBtZXNzYWdlLFxyXG4gIFBvcG92ZXIsXHJcbiAgU3BhY2UsXHJcbiAgVGFibGUsXHJcbiAgVGFibGVQcm9wcyxcclxuICBUb29sdGlwLFxyXG59IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCB7IENvbHVtblR5cGUsIFRhYmxlUGFnaW5hdGlvbkNvbmZpZyB9IGZyb20gXCJhbnRkL2xpYi90YWJsZVwiO1xyXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgRG5kUHJvdmlkZXIgfSBmcm9tIFwicmVhY3QtZG5kXCI7XHJcbmltcG9ydCBCb2R5Um93LCB7IERuZENvbnRleHRUeXBlLCBJQm9keVJvd1Byb3BzIH0gZnJvbSBcIi4uL2NvbW1vbi9Cb2R5Um93XCI7XHJcbmltcG9ydCB0cmVlVXRpbHMgZnJvbSBcIi4uLy4uL3RyZWVVdGlsc1wiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmNvbnN0IHsgQm9keVJvd0NvbXBvbmVudCwgSFRNTDVCYWNrZW5kIH0gPSBCb2R5Um93O1xyXG5pbXBvcnQgd2l0aFpoTG9jYWxlIGZyb20gXCIuLi9jb21tb24vd2l0aFpoTG9jYWxlXCI7XHJcbmltcG9ydCB7IFJlc2l6YWJsZSB9IGZyb20gXCJyZWFjdC1yZXNpemFibGVcIjtcclxuaW1wb3J0IFwiLi9yZXNpemUubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IHsgZ2V0TGVzcywgZ2V0Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgTm9EYXRhIGZyb20gXCIuLi8uLi9iYXNlL2NvbW1vbi9Ob0RhdGFcIjtcclxuaW1wb3J0IHsgZ2V0U3RvcmFnZSB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgY29uZmlnIGZyb20gXCIuLi8uLi9jb25maWdcIjtcclxuaW1wb3J0IEVsbGlwc2VDZWxsIGZyb20gXCIuLi9jb21tb24vRWxsaXBzZUNlbGxcIjtcclxuaW50ZXJmYWNlIElEcmFnUGFyYW1zIHtcclxuICBpZDogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIGlkczogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPjtcclxuICBwYXJlbnRJZDogc3RyaW5nIHwgbnVtYmVyO1xyXG59XHJcbi8vIGludGVyZmFjZSBTdG9yZVByb3BzIHt9XHJcblxyXG5leHBvcnQgdHlwZSBTdG9yZVR5cGUgPSBcIlBhZ2VTdG9yZVwiIHwgXCJUcmVlU3RvcmVcIiB8IFwiQmFzZVN0b3JlXCI7XHJcblxyXG5pbnRlcmZhY2UgTlNDVGFibGVQYWdpbmF0aW9uIGV4dGVuZHMgVGFibGVQYWdpbmF0aW9uQ29uZmlnIHtcclxuICB0b3RhbEtleT86IHN0cmluZztcclxuICBwYWdlU2l6ZUtleT86IHN0cmluZztcclxuICBjdXJyZW50S2V5Pzogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgVG9vbEJhclByb3BzIHtcclxuICBzaG93OiBib29sZWFuO1xyXG4gIHRvb2xzPzogQXJyYXk8c3RyaW5nPjtcclxuICBvblRvb2xDbGljaz86IHsgb25SZWZyZXNoPzogYW55OyBvblNvcnQ/OiBhbnkgfTtcclxufVxyXG5pbnRlcmZhY2UgTlNDVGFibGVQcm9wcyBleHRlbmRzIFRhYmxlUHJvcHM8YW55PiB7XHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIHNob3dUb3RhbD86IGJvb2xlYW47IC8vIOaYr+WQpuaYvuekuuaAu+adoeaVsOS/oeaBr++8jOm7mOiupHRydWVcclxuICBkcmFnYWJsZT86IGJvb2xlYW47IC8vIOaYr+WQpuWPr+aLluWKqCwg6buY6K6kZmFsc2VcclxuICBmaWx0ZXJDb2x1bW4/OiBib29sZWFuOyAvLyDmmK/lkKbmlK/mjIHov4fmu6TmmL7npLrooajmoLzliJcsIOm7mOiupHRydWVcclxuICBtb3ZlUm93PzogKHBhcmFtczogSURyYWdQYXJhbXMpID0+IHZvaWQ7IC8vIOaLluaLveWujOaIkOWQjueahOWbnuiwg1xyXG4gIGRyYWdVcmw/OiBzdHJpbmc7IC8vIOS/neWtmOaLluaLveaOkuW6j+eahOaOpeWPo1xyXG4gIHBhZ2luYXRpb24/OiBmYWxzZSB8IE5TQ1RhYmxlUGFnaW5hdGlvbjtcclxuICBhdXRvUGFnaW5hdGlvbj86IGJvb2xlYW47IC8vIOe7hOS7tuaYr+WQpuiHquWKqOWkhOeQhuWIhumhtVxyXG4gIGF1dG9Tb3J0PzogYm9vbGVhbjsgLy/nu4Tku7bmmK/lkKboh6rliqjlpITnkIbmjpLluo9cclxuICBhdXRvT25DaGFuZ2U/OiBib29sZWFuOyAvLyDnu4Tku7bmmK/lkKboh6rliqhvbkNoYW5nZSwgZmFsc2XliJnkuI3lgZrku7vkvZXlpITnkIblhajpg6jkuqTnu5nosIPnlKjmlrlcclxuICByZXNpemVDb2x1bW4/OiBib29sZWFuO1xyXG4gIHNvcnRGaWVsZHM/OiBBcnJheTxzdHJpbmc+OyAvL+mcgOimgeaOkuW6j+eahOWtl+autUluZGV4XHJcbiAgdG9vbGJhcj86IFRvb2xCYXJQcm9wcyB8IGJvb2xlYW47XHJcbiAgYXV0b1NpemU/OiBib29sZWFuO1xyXG4gIHNvcnRTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpua3u+WKoOaOkuW6j+afpeivoizpu5jorqR0cnVlXHJcbiAgLy8gdGFibGVTaXplPzogXCJzbWFsbFwiIHwgXCJtaWRkbGVcIiB8IFwiZGVmYXVsdFwiIHwgXCJhdXRvXCI7XHJcbiAgLy8gc2l6ZT86IFwic21hbGxcIiB8IFwibWlkZGxlXCIgfCBcImRlZmF1bHRcIiB8IFwiYXV0b1wiO1xyXG4gIHNob3dSb3dTZWxlY3Rpb24/OiBib29sZWFuO1xyXG4gIHJvd0tleT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgSU5TQ1RhYmxlUHJvcHMgPSB0eXBlb2YgTlNDVGFibGUuZGVmYXVsdFByb3BzICYgTlNDVGFibGVQcm9wcztcclxuZXhwb3J0IHsgRG5kQ29udGV4dFR5cGUsIElCb2R5Um93UHJvcHMgfTtcclxuXHJcbmNvbnN0IFJlc2l6ZWFibGVUaXRsZSA9IChwcm9wczogYW55KSA9PiB7XHJcbiAgY29uc3QgeyBvblJlc2l6ZSwgd2lkdGgsIC4uLnJlc3RQcm9wcyB9ID0gcHJvcHM7XHJcbiAgcmV0dXJuIChcclxuICAgIDxSZXNpemFibGVcclxuICAgICAgd2lkdGg9e3dpZHRoIHx8IDE1MH1cclxuICAgICAgaGVpZ2h0PXswfVxyXG4gICAgICBvblJlc2l6ZT17b25SZXNpemV9XHJcbiAgICAgIGRyYWdnYWJsZU9wdHM9e3sgZW5hYmxlVXNlclNlbGVjdEhhY2s6IGZhbHNlIH19XHJcbiAgICA+XHJcbiAgICAgIDx0aCB7Li4ucmVzdFByb3BzfSAvPlxyXG4gICAgPC9SZXNpemFibGU+XHJcbiAgKTtcclxufTtcclxuY2xhc3MgTlNDVGFibGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SU5TQ1RhYmxlUHJvcHMsIGFueT4ge1xyXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XHJcbiAgICBkcmFnYWJsZTogZmFsc2UsXHJcbiAgICBzaG93VG90YWw6IHRydWUsXHJcbiAgICBmaWx0ZXJDb2x1bW46IHRydWUsXHJcbiAgICBkcmFnVXJsOiBcIlwiLFxyXG4gICAgYXV0b1BhZ2luYXRpb246IHRydWUsXHJcbiAgICBhdXRvU29ydDogdHJ1ZSxcclxuICAgIGF1dG9PbkNoYW5nZTogdHJ1ZSxcclxuICAgIHJlc2l6ZUNvbHVtbjogdHJ1ZSxcclxuICAgIHRvb2xiYXI6IHtcclxuICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgb25Ub29sQ2xpY2s6IHt9IGFzIGFueSxcclxuICAgIH0gYXMgYW55LFxyXG4gIH07XHJcblxyXG4gIHN0b3JlID0ge30gYXMgU3RvcmVQcm9wcztcclxuICB0aEljb25SZWYgPSBSZWFjdC5jcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XHJcbiAgdGFibGVTZWFyY2hSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG5cclxuICBsaXN0ZW5lcnMgPSB7XHJcbiAgICBvbkJlZm9yZUxvYWQ6IG51bGwsXHJcbiAgICBsb2FkOiBudWxsLFxyXG4gIH07XHJcblxyXG4gIGNvbXBvbmVudHMgPSB7XHJcbiAgICBoZWFkZXI6IHtcclxuICAgICAgY2VsbDogUmVzaXplYWJsZVRpdGxlLFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgbGV0IG1vZGFsID0gcHJvcHMudHlwZSB8fCBcImF1dG9cIjtcclxuICAgIGxldCBzdG9yZVByZWZpeCA9IGdldFN0b3JhZ2UoXCJzdG9yZS1wcmUta2V5XCIpO1xyXG4gICAgbGV0IGF1dG9UeXBlID0gZ2V0U3RvcmFnZShcclxuICAgICAgc3RvcmVQcmVmaXggPyBzdG9yZVByZWZpeCArIFwidGFibGVTaXplXCIgOiBcInRhYmxlU2l6ZVwiXHJcbiAgICApO1xyXG4gICAgYXV0b1R5cGUgPSBhdXRvVHlwZT8uY29udGVudDtcclxuICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgIGRhdGFTb3VyY2U6IFtdLFxyXG4gICAgICBjb2x1bW5zOiBbXSxcclxuICAgICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICAgIHBhZ2luYXRpb246IHt9LFxyXG4gICAgICBhY3RpdmVJbmRleDogLTEsXHJcbiAgICAgIC8v5pCc57Si5paH5pysXHJcbiAgICAgIHNlYXJjaFRleHQ6IG51bGwsXHJcbiAgICAgIGZpZWxkT3B0aW9uOiBudWxsLFxyXG4gICAgICBzZWFyY2hDb2xvcjogbnVsbCxcclxuICAgICAgY29sczogW10sXHJcbiAgICAgIHNvcnRzOiBbXSxcclxuICAgICAgZmlsdGVyUGFyYW1zOiB7fSxcclxuICAgICAgdGFibGVTaXplOiB0aGlzLnByb3BzLnNpemUgfHwgYXV0b1R5cGUgfHwgXCJkZWZhdWx0XCIsXHJcbiAgICAgIHNvcnRUeXBlOiBcInNpbmdsZVwiLFxyXG4gICAgICBzb3J0ZXI6IFtdLCAvL+iusOW9leW9k+WJjeaOkuW6j+Wtl+autVxyXG4gICAgICBzb3J0SW5mbzoge30sXHJcbiAgICAgIGRlZmF1bHRTb3J0OiB0cnVlLFxyXG4gICAgICBjaGVja0NvbHVtbjogW10sXHJcbiAgICAgIGRlZmF1bHRDaGVjazogdHJ1ZSxcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICB9O1xyXG4gICAgaWYgKHByb3BzLnN0b3JlIGluc3RhbmNlb2YgU3RvcmUpIHtcclxuICAgICAgdGhpcy5zdG9yZSA9IHByb3BzLnN0b3JlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgeyBsaXN0ZW5lcnM6IGxpc3RlbmVyc1Byb3BzID0ge30sIC4uLnJlc3RTdG9yZSB9ID1cclxuICAgICAgICBwcm9wcy5zdG9yZSB8fCB7fTtcclxuICAgICAgY29uc3Qgc3RvcmVQcm9wcyA9IHtcclxuICAgICAgICBtb2RlbDogXCJtb2RlbFwiLFxyXG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgICBsaXN0ZW5lcnM6IHtcclxuICAgICAgICAgIG9uQmVmb3JlTG9hZDogKHN0b3JlLCBvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQcm9wcy5vbkJlZm9yZUxvYWQsIHRoaXMsIFtzdG9yZSwgb3B0aW9uc10pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGRhdGFDaGFuZ2VkOiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgcGFnaW5nID0gISh0aGlzLnByb3BzLnBhZ2luYXRpb24gPT09IGZhbHNlKTtcclxuICAgICAgICAgICAgaWYgKHBhZ2luZyAmJiAhdGhpcy5wcm9wcy5kYXRhU291cmNlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlOiBtb2RlbERhdGEsXHJcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiBzdG9yZS5nZXRQYWdpbmF0aW9uKCksXHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGFjdGl2ZUluZGV4OiAtMSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZGF0YVNvdXJjZTogbW9kZWxEYXRhLCBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMuZGF0YUNoYW5nZWQsIHRoaXMsIFtcclxuICAgICAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgICAgIG1vZGVsRGF0YSxcclxuICAgICAgICAgICAgICBzdG9yZSxcclxuICAgICAgICAgICAgICBwYWdpbmcsXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxvYWQ6IChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSA9PiB7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1Byb3BzLmxvYWQsIHRoaXMsIFtkYXRhLCBtb2RlbERhdGEsIHN0b3JlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb25FcnJvckxvYWQ6IChlcnIsIHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMub25FcnJvckxvYWQsIHRoaXMsIFtlcnIsIHJlc3BvbnNlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGF0YTogcmVzdFN0b3JlLmRhdGFcclxuICAgICAgICAgID8gcmVzdFN0b3JlLmRhdGFcclxuICAgICAgICAgIDogcHJvcHMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgPyBwcm9wcy5kYXRhU291cmNlXHJcbiAgICAgICAgICA6IG51bGwsXHJcbiAgICAgICAgLi4ucmVzdFN0b3JlLFxyXG4gICAgICAgIGF1dG9Mb2FkOiByZXN0U3RvcmUuYXV0b0xvYWQgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLnN0b3JlID0gbmV3IFBhZ2VTdG9yZShcclxuICAgICAgICBPYmplY3QuYXNzaWduKHt9LCBzdG9yZVByb3BzLCB7XHJcbiAgICAgICAgICBwYWdpbmF0aW9uOiB7IGN1cnJlbnQ6IDEsIC4uLnRoaXMucHJvcHMucGFnaW5hdGlvbiB9LFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVSZXNpemUgPVxyXG4gICAgKGluZGV4OiBhbnkpID0+XHJcbiAgICAoZTogYW55LCB7IHNpemUgfTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY29scyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgY29uc3QgbmV4dENvbHVtbnMgPSBbLi4uY29sc107XHJcbiAgICAgIG5leHRDb2x1bW5zW2luZGV4XSA9IHtcclxuICAgICAgICAuLi5uZXh0Q29sdW1uc1tpbmRleF0sXHJcbiAgICAgICAgd2lkdGg6IHNpemUud2lkdGgsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGNvbHM6IG5leHRDb2x1bW5zLFxyXG4gICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyByZXNpemVDb2x1bW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXJlc2l6ZUNvbHVtbikge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgY29sdW1uczogWy4uLnRoaXMucHJvcHMuY29sdW1uc10gfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgY29sczogWy4uLnRoaXMucHJvcHMuY29sdW1uc10gfSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBzdG9yZSA9IHRoaXMucHJvcHMuc3RvcmU7XHJcbiAgICBpZiAoc3RvcmUgJiYgc3RvcmUuZGF0YSkge1xyXG4gICAgICB0aGlzLnN0b3JlLnNldERhdGEoc3RvcmUuZGF0YSk7XHJcbiAgICB9XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5saXN0ZW5NZXNzYWdlKTtcclxuICB9XHJcbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5saXN0ZW5NZXNzYWdlKTtcclxuICB9XHJcbiAgbGlzdGVuTWVzc2FnZSA9IChldikgPT4ge1xyXG4gICAgY29uc3QgZGF0YSA9IHR5cGVvZiBldi5kYXRhID09PSBcInN0cmluZ1wiID8gSlNPTi5wYXJzZShldi5kYXRhKSA6IGV2LmRhdGE7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgaWYgKGRhdGEuZXZlbnRUeXBlID09IFwiY2hhbmdlVGFibGVTaXplXCIpIHtcclxuICAgICAgY29uc3QgeyBwYXlsb2FkIH0gPSBkYXRhO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgcGF5bG9hZC5zaXplID09IFwiZGVmYXVsdFwiIHx8XHJcbiAgICAgICAgcGF5bG9hZC5zaXplID09IFwic21hbGxcIiB8fFxyXG4gICAgICAgIHBheWxvYWQuc2l6ZSA9PSBcIm1pZGRsZVwiXHJcbiAgICAgICkge1xyXG4gICAgICAgIF90aGlzLnNldFN0YXRlKHsgdGFibGVTaXplOiBwYXlsb2FkLnNpemUgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMsIHByZVN0YXRlKSB7XHJcbiAgICBjb25zdCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghcmVzaXplQ29sdW1uKSB7XHJcbiAgICAgIGlmICh0aGlzLnByb3BzLmNvbHVtbnMgIT09IHByZXZQcm9wcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbHVtbnM6IHRoaXMucHJvcHMuY29sdW1ucyB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHByZVN0YXRlLmNvbHMgIT09IHRoaXMuc3RhdGUuY29scykge1xyXG4gICAgICAgIHRoaXMucmVzZXRDb2x1bW4oKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5wcm9wcy5jb2x1bW5zICE9PSBwcmV2UHJvcHMuY29sdW1ucykge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBjb2xzOiB0aGlzLnByb3BzLmNvbHVtbnMgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHByZXZQcm9wcy5zaXplICE9PSB0aGlzLnByb3BzLnNpemUpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgdGFibGVTaXplOiB0aGlzLnByb3BzLnNpemUgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0Q29sdW1uKCkge1xyXG4gICAgY29uc3QgeyBjb2xzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgbmV3Q29sczogYW55ID0gW107XHJcbiAgICBsZXQgY29sc3MgPSBjb2xzIHx8IFtdO1xyXG4gICAgY29sc3MubWFwKChjb2w6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBsZXQgdGVtcCA9IHtcclxuICAgICAgICAuLi5jb2wsXHJcbiAgICAgICAgb25IZWFkZXJDZWxsOiAoY29sdW1uOiB7IHdpZHRoOiBhbnkgfSkgPT4gKHtcclxuICAgICAgICAgIHdpZHRoOiBjb2x1bW4ud2lkdGgsXHJcbiAgICAgICAgICBvblJlc2l6ZTogdGhpcy5oYW5kbGVSZXNpemUoaW5kZXgpLFxyXG4gICAgICAgIH0pLFxyXG4gICAgICB9O1xyXG4gICAgICBuZXdDb2xzLnB1c2godGVtcCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBjb2x1bW5zOiBuZXdDb2xzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmuIXpmaTpgInkuK3popzoibJcclxuICAgKi9cclxuICBjbGVhclNlbGVjdENvbG9yKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGFjdGl2ZUluZGV4OiAtMSB9KTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGFnaW5hdGlvbkJ5U3RvcmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRQYWdpbmF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGF1dG9PbkNoYW5nZSA9IHRydWUsXHJcbiAgICAgIGF1dG9Tb3J0LFxyXG4gICAgICBhdXRvUGFnaW5hdGlvbixcclxuICAgICAgb25DaGFuZ2UsXHJcbiAgICAgIHN0b3JlLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGZpbHRlclBhcmFtcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IGlzTXVsdGlwbGUgPSBBcnJheS5pc0FycmF5KHNvcnRlcik7XHJcbiAgICBpZiAoYXV0b09uQ2hhbmdlID09PSBmYWxzZSB8fCAhc3RvcmUpIHtcclxuICAgICAgb25DaGFuZ2UgJiYgb25DaGFuZ2UocGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGhhbmRsZVBhZ2luYXRpb24gPSAoKSA9PiB7XHJcbiAgICAgIGxldCBwYXJhbXMgPSB7fSBhcyB7XHJcbiAgICAgICAgc2l6ZT86IHN0cmluZztcclxuICAgICAgICBwYWdlU2l6ZT86IHN0cmluZztcclxuICAgICAgICBhc2NzPzogc3RyaW5nO1xyXG4gICAgICAgIGRlc2NzPzogc3RyaW5nO1xyXG4gICAgICAgIFtwcm9wTmFtZTogc3RyaW5nXTogc3RyaW5nO1xyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBwYWdpbmcgPSB0aGlzLmdldFBhZ2luYXRpb25CeVN0b3JlKCkgfHwge307XHJcbiAgICAgIGlmICghaXNFbXB0eU9iaihwYWdpbmF0aW9uKSkge1xyXG4gICAgICAgIGNvbnN0IHAgPSB7XHJcbiAgICAgICAgICBbcGFnaW5nLmN1cnJlbnRLZXkgfHwgXCJjdXJyZW50XCJdOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICBbcGFnaW5nLnBhZ2VTaXplS2V5IHx8IFwic2l6ZVwiXTogcGFnaW5hdGlvbi5wYWdlU2l6ZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGFyYW1zLCBwKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgYXNjUGFyYW1zID0gdGhpcy5nZXRTb3J0UGFyYW0oc29ydGVyLCB0cnVlKTtcclxuICAgICAgaWYgKGlzTXVsdGlwbGUpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpc011bHRpcGxlICYmICFpc0VtcHR5T2JqKHNvcnRlcikpIHtcclxuICAgICAgICBzb3J0ZXIuY29sdW1uICYmXHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyOiBbc29ydGVyXSwgZGVmYXVsdFNvcnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzb3J0ZXI6IFtdIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHBhcmFtcyA9IHsgLi4uZmlsdGVyUGFyYW1zLCAuLi5wYXJhbXMsIC4uLmFzY1BhcmFtcyB9O1xyXG4gICAgICBhdXRvU29ydCAmJiB0aGlzLnN0b3JlLnJlbG9hZCh7IHBhcmFtcyB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgb25DaGFuZ2VGbiA9IHRoaXMucHJvcHMub25DaGFuZ2U7XHJcblxyXG4gICAgYXV0b1BhZ2luYXRpb24gJiYgaGFuZGxlUGFnaW5hdGlvbigpO1xyXG4gICAgLy8g55So5oi35Lyg5LqGb25DaGFuZ2Xkv53nlZnnlKjmiLfoh6rkuLvlpITnkIbooajmoLzlj5jljJbnmoTmnYPliptcclxuICAgIGlmIChvbkNoYW5nZUZuKSB7XHJcbiAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2hhbmdlRm4sIHRoaXMsIFtwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I635Y+W5pWw5o2u5qih5Z6L5a+56LGhXHJcbiAgICovXHJcbiAgZ2V0TW9kZWwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRNb2RlbCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I+c5Y2V5pCc57Si6L+H5ruk5pi+56S6XHJcbiAgICogQHBhcmFtIHtTdHJpbmd9IHZhbFxyXG4gICAqL1xyXG4gIGhhbmRsZVNlYXJjaCh2YWwsIGZpZWxkT3B0aW9uLCBzZWFyY2hDb2xvcikge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlYXJjaFRleHQ6IHZhbCxcclxuICAgICAgZmllbGRPcHRpb246IGZpZWxkT3B0aW9uLFxyXG4gICAgICBzZWFyY2hDb2xvcjogc2VhcmNoQ29sb3IsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaooeWdl+WIl+ihqOenu+WKqOaOkuW6j1xyXG4gICAqL1xyXG4gIG1vdmVSb3cgPSAoZHJhZ0luZGV4LCBob3ZlckluZGV4LCBkcmFnLCB0YXJnZXQpID0+IHtcclxuICAgIGNvbnN0IF90aGlzID0gdGhpcztcclxuICAgIGxldCBkcmFnTm9kZSA9IGRyYWcucmVjb3JkO1xyXG4gICAgbGV0IHRhcmdldE5vZGUgPSB0YXJnZXQucmVjb3JkO1xyXG4gICAgZHJhZ05vZGUubW92ZUFycmF5KGRyYWdOb2RlLCB0YXJnZXROb2RlKTtcclxuICAgIGxldCBpZHMgPSBkcmFnTm9kZS5wYXJlbnROb2RlLmdldENoaWxkTm9kZUlkcygpO1xyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgaWQ6IGRyYWdOb2RlLmlkLFxyXG4gICAgICBwYXJlbnRJZDogZHJhZ05vZGUuYXR0cmlidXRlLnBhcmVudElkLFxyXG4gICAgICBpZHM6IGlkcyxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMucHJvcHMubW92ZVJvdykge1xyXG4gICAgICB0aGlzLnByb3BzLm1vdmVSb3cocGFyYW1zKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc3RvcmUucmVsb2FkKCk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgZmlsdGVyQ29sdW1uKGNoZWNrZWRWYWx1ZSkge1xyXG4gICAgaWYgKGNoZWNrZWRWYWx1ZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICBtZXNzYWdlLndhcm5pbmcoXCLoh7PlsJHmmL7npLrkuIDliJfvvIFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZpbHRlckNvbHVtbnMgPSB0aGlzLnByb3BzLmNvbHVtbnMubWFwKChjb2w6IENvbHVtblR5cGU8e30+KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld0NvbCA9IHsgLi4uY29sIH0gYXMgQ29sdW1uVHlwZTx7fT4gJiB7IGluaXRTaG93OiBib29sZWFuIH07XHJcbiAgICAgIGlmIChjaGVja2VkVmFsdWUuaW5jbHVkZXMoY29sLmRhdGFJbmRleCkpIHtcclxuICAgICAgICBuZXdDb2wuaW5pdFNob3cgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld0NvbC5pbml0U2hvdyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBuZXdDb2w7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHsgcmVzaXplQ29sdW1uIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKCFyZXNpemVDb2x1bW4pIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgY29sdW1uczogZmlsdGVyQ29sdW1ucyxcclxuICAgICAgICBjaGVja0NvbHVtbjogY2hlY2tlZFZhbHVlLFxyXG4gICAgICAgIGRlZmF1bHRDaGVjazogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgY29sczogZmlsdGVyQ29sdW1ucyxcclxuICAgICAgICBjaGVja0NvbHVtbjogY2hlY2tlZFZhbHVlLFxyXG4gICAgICAgIGRlZmF1bHRDaGVjazogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRTb3J0UGFyYW0oc29ydGVyLCBzb3J0U3RhdGUgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgaXNNdWx0aXBsZSA9IEFycmF5LmlzQXJyYXkoc29ydGVyKTtcclxuICAgIGNvbnN0IHsgc29ydFNlYXJjaCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXNvcnRTZWFyY2gpIHtcclxuICAgICAgcmV0dXJuIHt9O1xyXG4gICAgfVxyXG4gICAgbGV0IHNvcnRJbmZvID0ge307XHJcbiAgICBsZXQgb3JkZXJJdGVtcyA9IFtdO1xyXG4gICAgaWYgKCFpc0VtcHR5T2JqKHNvcnRlcikgJiYgIWlzTXVsdGlwbGUgJiYgc29ydGVyLmNvbHVtbikge1xyXG4gICAgICBvcmRlckl0ZW1zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGNvbHVtbjogc29ydGVyLmNvbHVtbi5maWVsZCB8fCBzb3J0ZXIuY29sdW1uLmRhdGFJbmRleCxcclxuICAgICAgICAgIGFzYzogc29ydGVyLm9yZGVyID09IFwiYXNjZW5kXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgXTtcclxuICAgICAgaWYgKHNvcnRlci5jb2x1bW4pIHNvcnRJbmZvW3NvcnRlci5jb2x1bW4uZGF0YUluZGV4XSA9IHNvcnRlci5vcmRlcjtcclxuICAgIH0gZWxzZSBpZiAoaXNNdWx0aXBsZSkge1xyXG4gICAgICBzb3J0ZXIuZm9yRWFjaCgodikgPT4ge1xyXG4gICAgICAgIHNvcnRJbmZvW3YuY29sdW1uLmRhdGFJbmRleF0gPSB2Lm9yZGVyO1xyXG4gICAgICAgIGxldCBmaWVsZCA9IHYuY29sdW1uLmZpZWxkIHx8IHYuY29sdW1uLmRhdGFJbmRleDtcclxuICAgICAgICBvcmRlckl0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgY29sdW1uOiBmaWVsZCxcclxuICAgICAgICAgIGFzYzogdi5vcmRlciA9PSBcImFzY2VuZFwiLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChzb3J0U3RhdGUpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgc29ydEluZm86IHNvcnRJbmZvLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB7IG9yZGVySXRlbXM6IEpTT04uc3RyaW5naWZ5KG9yZGVySXRlbXMpIH07XHJcbiAgfVxyXG4gIGdldENvbHVtbnMoKSB7XHJcbiAgICBjb25zdCB7IGNvbHVtbnMsIHNvcnRUeXBlLCBzb3J0SW5mbyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgc29ydEZpZWxkcyA9IFtdIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZGVmYXVsdFNob3dDb2xzID0gY29sdW1ucy5maWx0ZXIoKGNvbHMpID0+IGNvbHMuaW5pdFNob3cgIT09IGZhbHNlKTtcclxuICAgIGNvbnN0IGNvbHMgPSBkZWZhdWx0U2hvd0NvbHMubWFwKChjb2wsIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChjb2wuZWxsaXBzaXMgJiYgIWNvbC5yZW5kZXIpIHtcclxuICAgICAgICBjb2wuZWxsaXBzaXMgPSB7XHJcbiAgICAgICAgICBzaG93VGl0bGU6IGZhbHNlLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29sLnJlbmRlciA9ICh0ZXh0KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IHRpdGxlPXt0ZXh0fSBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRleHRcIil9PlxyXG4gICAgICAgICAgICAgIHt0ZXh0fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHNvcnRGaWVsZHMuaW5kZXhPZihjb2wuZGF0YUluZGV4KSA+IC0xKSB7XHJcbiAgICAgICAgaWYgKHNvcnRUeXBlID09IFwic2luZ2xlXCIpIHtcclxuICAgICAgICAgIGNvbC5zb3J0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgY29sLnNvcnRPcmRlciA9IHNvcnRJbmZvW2NvbC5kYXRhSW5kZXhdXHJcbiAgICAgICAgICAgID8gc29ydEluZm9bY29sLmRhdGFJbmRleF1cclxuICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoc29ydFR5cGUgPT0gXCJtdWx0aXBsZVwiKSB7XHJcbiAgICAgICAgICBjb2wuc29ydGVyID0geyBtdWx0aXBsZTogaW5kZXggfTtcclxuICAgICAgICAgIGNvbC5zb3J0T3JkZXIgPSBzb3J0SW5mb1tjb2wuZGF0YUluZGV4XVxyXG4gICAgICAgICAgICA/IHNvcnRJbmZvW2NvbC5kYXRhSW5kZXhdXHJcbiAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGNvbDtcclxuICAgIH0pO1xyXG4gICAgY29scy5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmICghaXNFbXB0eU9iaihpdGVtLmZpbHRlclByb3BzKSkge1xyXG4gICAgICAgIGxldCBvYmogPSB7IC4uLml0ZW0gfTtcclxuICAgICAgICBjb25zdCB7IHR5cGUsIHByb3BzLCBzZWFyY2hLZXkgfSA9IGl0ZW0uZmlsdGVyUHJvcHM7XHJcbiAgICAgICAgbGV0IERpdiA9IG51bGw7XHJcbiAgICAgICAgbGV0IHRleHQgPSBpdGVtLnRpdGxlO1xyXG4gICAgICAgIERpdiA9IGdldE5vZGUodHlwZSwge1xyXG4gICAgICAgICAgcGxhY2Vob2xkZXI6IGDmkJzntKIke3RleHR9YCxcclxuICAgICAgICAgIC4uLnByb3BzLFxyXG4gICAgICAgICAgcmVmOiB0aGlzLnRhYmxlU2VhcmNoUmVmLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG9iaiA9IHtcclxuICAgICAgICAgIGZpbHRlckRyb3Bkb3duOiAoe1xyXG4gICAgICAgICAgICBzZXRTZWxlY3RlZEtleXMsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkS2V5cyxcclxuICAgICAgICAgICAgY29uZmlybSxcclxuICAgICAgICAgICAgY2xlYXJGaWx0ZXJzLFxyXG4gICAgICAgICAgfSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJzZWFyY2hcIil9PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInNwYWNlXCIpfT57RGl2fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPFNwYWNlPlxyXG4gICAgICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm0oKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1zIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld0ZpbHRlclBhcmFtcyA9IHsgLi4uZmlsdGVyUGFyYW1zIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQga2V5ID0gaXRlbS5maWVsZCB8fCBpdGVtLmRhdGFJbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgIG5ld0ZpbHRlclBhcmFtc1trZXldID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZVNlYXJjaFJlZi5jdXJyZW50Py5nZXRWYWx1ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtczogeyAuLi5uZXdGaWx0ZXJQYXJhbXMgfSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc29ydFBhcmFtID0gdGhpcy5nZXRTb3J0UGFyYW0odGhpcy5zdGF0ZS5zb3J0ZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5sb2FkKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IC4uLm5ld0ZpbHRlclBhcmFtcywgLi4uc29ydFBhcmFtIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJidXR0b25cIil9XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICDmn6Xor6JcclxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L1NwYWNlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGZpbHRlckljb246ICgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIDxTZWFyY2hPdXRsaW5lZCAvPjtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAuLi5vYmosXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb2xzW2luZGV4XSA9IG9iajtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gY29scztcclxuICB9XHJcbiAgcmVuZGVyVG9vbEJhcigpIHtcclxuICAgIGxldCB7IHRhYmxlU2l6ZSwgY29sdW1ucywgc29ydFR5cGUgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgeyBmaWx0ZXJDb2x1bW4sIGNvbHVtbnM6IGNvbExpc3RzLCB0b29sYmFyIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyB0YWJsZVRvb2wsIHN0b3JlUmVxdWVzdENvbmZpZyA9IHt9IH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0b29scyA9IFtcInJlZnJlc2hcIiwgXCJzaXplXCIsIFwic29ydFwiLCBcImNvbHVtblwiXTtcclxuICAgIGxldCB0b29sc0NsaWNrID0ge30gYXMgYW55O1xyXG4gICAgaWYgKHRvb2xiYXIgPT0gdHJ1ZSkge1xyXG4gICAgICB0b29scyA9IHRvb2xiYXIub25Ub29sQ2xpY2tcclxuICAgICAgICA/IHRvb2xiYXIub25Ub29sQ2xpY2tcclxuICAgICAgICA6IFtcInJlZnJlc2hcIiwgXCJzaXplXCIsIFwic29ydFwiLCBcImNvbHVtblwiXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRvb2xzID0gdG9vbGJhci50b29sc1xyXG4gICAgICAgID8gdG9vbGJhci50b29sc1xyXG4gICAgICAgIDogdGFibGVUb29sLnRvb2xzXHJcbiAgICAgICAgPyB0YWJsZVRvb2wudG9vbHNcclxuICAgICAgICA6IHRvb2xzO1xyXG4gICAgICB0b29sc0NsaWNrID0gdG9vbGJhci5vblRvb2xDbGljayA/IHRvb2xiYXIub25Ub29sQ2xpY2sgOiB7fTtcclxuICAgIH1cclxuICAgIGNvbnN0IHNpemVJdGVtID0gW1xyXG4gICAgICB7IHRpdGxlOiBcIuWuveadvlwiLCBrZXk6IFwiZGVmYXVsdFwiIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwi5Lit562JXCIsIGtleTogXCJtaWRkbGVcIiB9LFxyXG4gICAgICB7IHRpdGxlOiBcIue0p+WHkVwiLCBrZXk6IFwic21hbGxcIiB9LFxyXG4gICAgXTtcclxuICAgIGNvbnN0IHNvcnRJdGVtID0gW1xyXG4gICAgICB7IHRpdGxlOiBcIuWNleWtl+auteaOkuW6j1wiLCBrZXk6IFwic2luZ2xlXCIgfSxcclxuICAgICAgeyB0aXRsZTogXCLlpJrlrZfmrrXmjpLluo9cIiwga2V5OiBcIm11bHRpcGxlXCIgfSxcclxuICAgIF07XHJcbiAgICBjb25zdCBzb3J0Q29udGVudCA9IChcclxuICAgICAgPD5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvdGVudC10aXRsZVwiKX1cclxuICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgIGN1cnNvcjogdGhpcy5zdGF0ZS5kZWZhdWx0U29ydCA/IFwibm90LWFsbG93ZWRcIiA6IFwicG9pbnRlclwiLFxyXG4gICAgICAgICAgICBjb2xvcjogdGhpcy5zdGF0ZS5kZWZhdWx0U29ydCAmJiBcInJnYmEoMCwwLDAsLjQ1KVwiLFxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc3RhdGUuZGVmYXVsdFNvcnQpIHtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNvcnRlcjogW10sIHNvcnRJbmZvOiB7fSwgZGVmYXVsdFNvcnQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgLi4udGhpcy5zdGF0ZS5maWx0ZXJQYXJhbXMgfTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5yZWxvYWQoeyBwYXJhbXMgfSk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIOaBouWkjem7mOiupOaOkuW6j1xyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIHtzb3J0SXRlbS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAga2V5PXtpdGVtLmtleX1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgc29ydGVyOiBbXSxcclxuICAgICAgICAgICAgICAgICAgc29ydEluZm86IHt9LFxyXG4gICAgICAgICAgICAgICAgICBzb3J0VHlwZTogaXRlbS5rZXksXHJcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHRTb3J0OiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0geyAuLi50aGlzLnN0YXRlLmZpbHRlclBhcmFtcyB9O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5yZWxvYWQoeyBwYXJhbXMgfSk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHtzb3J0VHlwZSA9PSBpdGVtLmtleSA/IChcclxuICAgICAgICAgICAgICAgIDxhPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY29udGVudC10aWVtXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT5cclxuICAgICAgICAgICAgICAgICAgICAgIHtzb3J0VHlwZSA9PSBpdGVtLmtleSAmJiA8Q2hlY2tPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSl9XHJcbiAgICAgICAge3RoaXMuc3RhdGUuc29ydGVyLmxlbmd0aCA+IDAgJiYgKFxyXG4gICAgICAgICAgPD5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY290ZW50LXRpdGxlXCIpfVxyXG4gICAgICAgICAgICAgIHN0eWxlPXt7IGNvbG9yOiBcInJnYmEoMCwwLDAsLjQ1KVwiIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICDlvZPliY3mjpLluo9cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIHt0aGlzLnN0YXRlLnNvcnRlci5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LXRpZW1cIil9IGtleT17aW5kZXh9PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT5cclxuICAgICAgICAgICAgICAgICAgICB7aXRlbS5vcmRlciA9PSBcImFzY2VuZFwiID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgPFNvcnRBc2NlbmRpbmdPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICA8U29ydERlc2NlbmRpbmdPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS5jb2x1bW4udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgIDwvPlxyXG4gICAgICAgICl9XHJcbiAgICAgIDwvPlxyXG4gICAgKTtcclxuICAgIGNvbnN0IHNpemVDb250ZW50ID0gKFxyXG4gICAgICA8PlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb3RlbnQtdGl0bGVcIil9PuihqOagvOWvhuW6pjwvZGl2PlxyXG4gICAgICAgIHtzaXplSXRlbS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAga2V5PXtpdGVtLmtleX1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgdGFibGVTaXplOiBpdGVtLmtleSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7dGFibGVTaXplID09IGl0ZW0ua2V5ID8gKFxyXG4gICAgICAgICAgICAgICAgPGE+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IDIwIH19PlxyXG4gICAgICAgICAgICAgICAgICAgICAge3RhYmxlU2l6ZSA9PSBpdGVtLmtleSAmJiA8Q2hlY2tPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSl9XHJcbiAgICAgIDwvPlxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBkZWZhdWx0U2hvd0NvbHMgPSBjb2x1bW5zLmZpbHRlcigoY29scykgPT4gY29scy5pbml0U2hvdyAhPT0gZmFsc2UpO1xyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSAoXHJcbiAgICAgIDxDaGVja2JveC5Hcm91cFxyXG4gICAgICAgIG9uQ2hhbmdlPXt0aGlzLmZpbHRlckNvbHVtbi5iaW5kKHRoaXMpfVxyXG4gICAgICAgIG9wdGlvbnM9e2NvbExpc3RzLm1hcChcclxuICAgICAgICAgIChjb2w6IENvbHVtblR5cGU8e30+ICYgeyBmaWx0ZXJDb2x1bW46IGJvb2xlYW47IGRhdGFJbmRleDogYW55IH0pID0+IHtcclxuICAgICAgICAgICAgaWYgKCFjb2wuZGF0YUluZGV4KSB7XHJcbiAgICAgICAgICAgICAgY29sLmRhdGFJbmRleCA9IGNvbC50aXRsZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIGxhYmVsOiBjb2wudGl0bGUsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IGNvbC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IGNvbC5maWx0ZXJDb2x1bW4gPT09IGZhbHNlLFxyXG4gICAgICAgICAgICB9IGFzIENoZWNrYm94T3B0aW9uVHlwZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApfVxyXG4gICAgICAgIC8vIGRlZmF1bHRWYWx1ZT17ZGVmYXVsdFNob3dDb2xzLm1hcCgoY29sKSA9PiBjb2wuZGF0YUluZGV4KX1cclxuICAgICAgICB2YWx1ZT17XHJcbiAgICAgICAgICB0aGlzLnN0YXRlLmRlZmF1bHRDaGVja1xyXG4gICAgICAgICAgICA/IGRlZmF1bHRTaG93Q29scy5tYXAoKGNvbCkgPT4gY29sLmRhdGFJbmRleClcclxuICAgICAgICAgICAgOiB0aGlzLnN0YXRlLmNoZWNrQ29sdW1uXHJcbiAgICAgICAgfVxyXG4gICAgICA+PC9DaGVja2JveC5Hcm91cD5cclxuICAgICk7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidGFibGUtdG9vbC1iYXJcIil9PlxyXG4gICAgICAgIHt0b29scy5pbmRleE9mKFwiY29sdW1uXCIpID4gLTEgJiYgKFxyXG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBmb250U2l6ZTogMTQgfX0+XHJcbiAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgdGl0bGU9XCLpgInmi6nmmL7npLrnmoTliJdcIlxyXG4gICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tUmlnaHRcIlxyXG4gICAgICAgICAgICAgIHRyaWdnZXI9XCJjbGlja1wiXHJcbiAgICAgICAgICAgICAgb3ZlcmxheVN0eWxlPXt7IG1pbldpZHRoOiA0MTAsIG1heFdpZHRoOiA0NTAgfX1cclxuICAgICAgICAgICAgICAvLyBnZXRQb3B1cENvbnRhaW5lcj17KCkgPT4gdGhpcy50aEljb25SZWYuY3VycmVudH1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxBcHBzdG9yZU91dGxpbmVkIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiYXBwLXN0b3JlLWljb25cIil9IC8+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAge3Rvb2xzLmluZGV4T2YoXCJzb3J0XCIpID4gLTEgJiYgKFxyXG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBtYXJnaW5SaWdodDogOCwgZm9udFNpemU6IDE0IH19PlxyXG4gICAgICAgICAgICA8UG9wb3ZlciBwbGFjZW1lbnQ9XCJib3R0b21cIiBjb250ZW50PXtzb3J0Q29udGVudH0gdHJpZ2dlcj1cImNsaWNrXCI+XHJcbiAgICAgICAgICAgICAgPFNvcnRBc2NlbmRpbmdPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIHt0b29scy5pbmRleE9mKFwic2l6ZVwiKSA+IC0xICYmIChcclxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgbWFyZ2luUmlnaHQ6IDgsIGZvbnRTaXplOiAxNCB9fT5cclxuICAgICAgICAgICAgPFBvcG92ZXIgcGxhY2VtZW50PVwiYm90dG9tXCIgY29udGVudD17c2l6ZUNvbnRlbnR9IHRyaWdnZXI9XCJjbGlja1wiPlxyXG4gICAgICAgICAgICAgIDxDb2x1bW5IZWlnaHRPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIHt0b29scy5pbmRleE9mKFwicmVmcmVzaFwiKSA+IC0xICYmIChcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgc3R5bGU9e3sgbWFyZ2luUmlnaHQ6IDgsIGZvbnRTaXplOiAxNCwgY3Vyc29yOiBcInBvaW50ZXJcIiB9fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0geyAuLi50aGlzLnN0YXRlLmZpbHRlclBhcmFtcyB9O1xyXG4gICAgICAgICAgICAgIGlmICh0b29sc0NsaWNrLm9uUmVmcmVzaCkge1xyXG4gICAgICAgICAgICAgICAgdG9vbHNDbGljay5vblJlZnJlc2goKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5sb2FkKHsgcGFyYW1zIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPFJlZG9PdXRsaW5lZCAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5zZWxlY3RlZFJvd0tleXM7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93RGF0YXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5zZWxlY3RlZFJvd0RhdGFzO1xyXG4gIH1cclxuICByZXNldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IFtdLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBbXSxcclxuICAgIH0pO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0tleXMoZGF0YTogQXJyYXk8U3RyaW5nIHwgTnVtYmVyPikge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogZGF0YSxcclxuICAgIH0pO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0RhdGFzKGRhdGE6IEFycmF5PE9iamVjdD4pIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBkYXRhLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJvd1NlbGVjdGlvbk9uU2VsZWN0KHJlY29yZDogYW55LCBzZWxlY3RlZDogYW55KSB7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkUm93S2V5cywgc2VsZWN0ZWRSb3dEYXRhcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBuZXdTZWxlY3RlZFJvd0tleXMgPSBbLi4uc2VsZWN0ZWRSb3dLZXlzXTtcclxuICAgIGxldCBuZXdTZWxlY3RlZFJvd0RhdGFzID0gWy4uLnNlbGVjdGVkUm93RGF0YXNdO1xyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIG5ld1NlbGVjdGVkUm93S2V5cyA9IFsuLi5uZXdTZWxlY3RlZFJvd0tleXMsIHJlY29yZFtyb3dLZXldXTtcclxuICAgICAgbmV3U2VsZWN0ZWRSb3dEYXRhcyA9IFsuLi5uZXdTZWxlY3RlZFJvd0RhdGFzLCByZWNvcmRdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0gPT09IHJlY29yZFtyb3dLZXldKSB7XHJcbiAgICAgICAgICBuZXdTZWxlY3RlZFJvd0tleXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW1bcm93S2V5XSA9PT0gcmVjb3JkW3Jvd0tleV0pIHtcclxuICAgICAgICAgIG5ld1NlbGVjdGVkUm93RGF0YXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogbmV3U2VsZWN0ZWRSb3dLZXlzLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBuZXdTZWxlY3RlZFJvd0RhdGFzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJvd1NlbGVjdGlvbk9uU2VsZWN0QWxsKHNlbGVjdGVkOiBhbnksIHNlbGVjdGVkUm93czogYW55LCBjaGFuZ2VSb3dzOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgc2VsZWN0ZWRSb3dLZXlzLCBzZWxlY3RlZFJvd0RhdGFzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgbmV3aWRzOiBhbnkgPSBbXTtcclxuICAgIGxldCBuZXdkYXRhczogYW55ID0gW107XHJcbiAgICBpZiAoY2hhbmdlUm93cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBjaGFuZ2VJZHMgPSBjaGFuZ2VSb3dzLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtW3Jvd0tleV0pO1xyXG4gICAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAgICBuZXdpZHMgPSBbLi4uc2VsZWN0ZWRSb3dLZXlzLCAuLi5jaGFuZ2VJZHNdO1xyXG4gICAgICAgIG5ld2RhdGFzID0gWy4uLnNlbGVjdGVkUm93RGF0YXMsIC4uLmNoYW5nZVJvd3NdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNlbGVjdGVkUm93S2V5cy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNoYW5nZUlkcy5pbmRleE9mKGl0ZW0pID09IC0xKSB7XHJcbiAgICAgICAgICAgIG5ld2lkcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHNlbGVjdGVkUm93RGF0YXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChjaGFuZ2VJZHMuaW5kZXhPZihpdGVtW3Jvd0tleV0pID09IC0xKSB7XHJcbiAgICAgICAgICAgIG5ld2RhdGFzLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG5ld2lkcyA9IFsuLi5zZWxlY3RlZFJvd0tleXNdO1xyXG4gICAgICBuZXdkYXRhcyA9IFsuLi5zZWxlY3RlZFJvd0RhdGFzXTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IFsuLi5uZXdpZHNdLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBbLi4ubmV3ZGF0YXNdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJlbmRlcigpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXMsXHJcbiAgICAgIHtcclxuICAgICAgICBsb2FkaW5nLFxyXG4gICAgICAgIGRhdGFTb3VyY2UsXHJcbiAgICAgICAgcGFnaW5hdGlvbiA9IHt9LFxyXG4gICAgICAgIHNlYXJjaFRleHQsXHJcbiAgICAgICAgZmllbGRPcHRpb24sXHJcbiAgICAgICAgc2VhcmNoQ29sb3IsXHJcbiAgICAgICAgdGFibGVTaXplLFxyXG4gICAgICB9ID0gdGhpcy5zdGF0ZSxcclxuICAgICAgcHJvcHMgPSB1dGlscy5vbWl0KFxyXG4gICAgICAgIHRoaXMucHJvcHMsXHJcbiAgICAgICAgW1xyXG4gICAgICAgICAgXCJzdG9yZVwiLFxyXG4gICAgICAgICAgXCJvbkNoYW5nZVwiLFxyXG4gICAgICAgICAgXCJjb2x1bW5zXCIsXHJcbiAgICAgICAgICBcInJlc2V0Q29sdW1uXCIsXHJcbiAgICAgICAgICBcInRvb2xiYXJcIixcclxuICAgICAgICAgIFwic29ydEZpZWxkc1wiLFxyXG4gICAgICAgICAgXCJmaWx0ZXJDb2x1bW5cIixcclxuICAgICAgICAgIFwic29ydFNlYXJjaFwiLFxyXG4gICAgICAgICAgXCJzaG93Um93U2VsZWN0aW9uXCIsXHJcbiAgICAgICAgXSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICByb3dLZXk6IFwiaWRcIixcclxuICAgICAgICAgIGNsaWNrQ2hhbmdlQ29sb3I6IGZhbHNlLFxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIGlmIChwcm9wcy5wYWdpbmF0aW9uICE9PSBmYWxzZSkge1xyXG4gICAgICBwcm9wcy5wYWdpbmF0aW9uID0ge1xyXG4gICAgICAgIHBvc2l0aW9uOiBbXCJib3R0b21SaWdodFwiXSxcclxuICAgICAgICBzaG93U2l6ZUNoYW5nZXI6IHRydWUsXHJcbiAgICAgICAgc2hvd1F1aWNrSnVtcGVyOiB0cnVlLFxyXG4gICAgICAgIC4uLnByb3BzLnBhZ2luYXRpb24sXHJcbiAgICAgICAgLi4ucGFnaW5hdGlvbixcclxuICAgICAgfTtcclxuICAgICAgaWYgKHByb3BzLnNob3dUb3RhbCA9PSB0cnVlKSB7XHJcbiAgICAgICAgcHJvcHMucGFnaW5hdGlvbi5zaG93VG90YWwgPSBmdW5jdGlvbiAodG90YWwsIFtmcm9tLCB0b10pIHtcclxuICAgICAgICAgIC8vIHJldHVybiBcIuaYvuekuiBcIiArIGZyb20gKyBcIiAtIFwiICsgdG8gKyBcIuadoe+8jOWFsSBcIiArIHRvdGFsICsgXCIg5p2hXCI7XHJcbiAgICAgICAgICByZXR1cm4gXCLlhbEgXCIgKyB0b3RhbCArIFwiIOadoVwiO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHByb3BzLm9uQ2hhbmdlID0gZnVuY3Rpb24gKHBhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmEpIHtcclxuICAgICAgX3RoaXMub25DaGFuZ2UocGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSk7XHJcbiAgICB9O1xyXG4gICAgaWYgKHByb3BzLmNsaWNrQ2hhbmdlQ29sb3IpIHtcclxuICAgICAgY29uc3Qgb25Sb3dGbiA9IHByb3BzLm9uUm93O1xyXG4gICAgICBwcm9wcy5vblJvdyA9IGZ1bmN0aW9uIChyZWNvcmQsIGluZGV4KSB7XHJcbiAgICAgICAgdmFyIGN1c3RvbSA9IG9uUm93Rm4gPyBvblJvd0ZuKHJlY29yZCwgaW5kZXgpIDoge307XHJcbiAgICAgICAgY29uc3Qgb25DbGlja0ZuID0gY3VzdG9tLm9uQ2xpY2s7XHJcbiAgICAgICAgY3VzdG9tLm9uQ2xpY2sgPSAoZXZlbnQpID0+IHtcclxuICAgICAgICAgIF90aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgYWN0aXZlSW5kZXg6IGluZGV4LCAvL+iOt+WPlueCueWHu+ihjOeahOe0ouW8lVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB1dGlscy5jYWxsYmFjayhvbkNsaWNrRm4sIF90aGlzLCBbZXZlbnRdKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBjdXN0b207XHJcbiAgICAgIH07XHJcbiAgICAgIHByb3BzLnJvd0NsYXNzTmFtZSA9IGZ1bmN0aW9uIChyZWNvcmQsIGluZGV4KSB7XHJcbiAgICAgICAgcmV0dXJuIGluZGV4ID09PSBfdGhpcy5zdGF0ZS5hY3RpdmVJbmRleFxyXG4gICAgICAgICAgPyBgJHtzdHlsZXMuY2xpY2tSb3dTdHlsZX1gXHJcbiAgICAgICAgICA6IFwiXCI7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBsZXQgbmV3RGF0YVNvdXJjZSA9IFtdO1xyXG4gICAgaWYgKHNlYXJjaFRleHQpIHtcclxuICAgICAgY29uc3QgZGF0YSA9IHRyZWVVdGlscy5nZXRTZWFyY2hNZW51RGF0YXMoXHJcbiAgICAgICAgdGhpcyxcclxuICAgICAgICBzZWFyY2hUZXh0LFxyXG4gICAgICAgIGZpZWxkT3B0aW9uLFxyXG4gICAgICAgIHNlYXJjaENvbG9yXHJcbiAgICAgICk7XHJcbiAgICAgIG5ld0RhdGFTb3VyY2UgPSBkYXRhLnRyZWVEYXRhcztcclxuICAgICAgcHJvcHMuZXhwYW5kZWRSb3dLZXlzID0gZGF0YS5vcGVuS2V5cztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG5ld0RhdGFTb3VyY2UgPSBkYXRhU291cmNlO1xyXG4gICAgfVxyXG4gICAgcHJvcHMuc3RvcmUgPSBwcm9wcy5zdG9yZSB8fCB7fTtcclxuICAgIHByb3BzLnN0b3JlLmF1dG9Mb2FkID0gcHJvcHMuc3RvcmUuYXV0b0xvYWQgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlO1xyXG4gICAgY29uc3QgeyBkcmFnYWJsZSB9ID0gX3RoaXMucHJvcHM7XHJcbiAgICBjb25zdCBkcmFnYWJsZVByb3BzID1cclxuICAgICAgZHJhZ2FibGUgPT09IHRydWVcclxuICAgICAgICA/IHtcclxuICAgICAgICAgICAgY29tcG9uZW50czogQm9keVJvd0NvbXBvbmVudCxcclxuICAgICAgICAgICAgb25Sb3c6IChyZWNvcmQsIGluZGV4KSA9PiAoe1xyXG4gICAgICAgICAgICAgIGluZGV4LFxyXG4gICAgICAgICAgICAgIHJlY29yZCxcclxuICAgICAgICAgICAgICBtb3ZlUm93OiB0aGlzLm1vdmVSb3csXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDoge307XHJcbiAgICBsZXQgeyByZXNpemVDb2x1bW4gfSA9IHRoaXMucHJvcHM7XHJcblxyXG4gICAgY29uc3QgcmVzaXplUHJvcHMgPVxyXG4gICAgICByZXNpemVDb2x1bW4gPT09IHRydWUgPyB7IGNvbXBvbmVudHM6IHRoaXMuY29tcG9uZW50cyB9IDogbnVsbDtcclxuICAgIGNvbnN0IHsgdGFibGVUb29sIH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0b29sRmxhZyA9IHRydWU7XHJcbiAgICBsZXQgdG9vbHByb3BzID1cclxuICAgICAgdGhpcy5wcm9wcy50b29sYmFyID09PSBmYWxzZSB8fCB0aGlzLnByb3BzLnRvb2xiYXI/LnNob3cgPT09IGZhbHNlXHJcbiAgICAgICAgPyBmYWxzZVxyXG4gICAgICAgIDogdHJ1ZTtcclxuICAgIGlmICghdG9vbHByb3BzKSB7XHJcbiAgICAgIHRvb2xGbGFnID0gdG9vbHByb3BzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdG9vbEZsYWcgPSB0YWJsZVRvb2wuc2hvdyA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wcm9wcy5zaG93Um93U2VsZWN0aW9uKSB7XHJcbiAgICAgIGNvbnN0IHsgcm93U2VsZWN0aW9uID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgIHByb3BzID0ge1xyXG4gICAgICAgIC4uLnByb3BzLFxyXG4gICAgICAgIHJvd1NlbGVjdGlvbjoge1xyXG4gICAgICAgICAgc2VsZWN0ZWRSb3dLZXlzOiB0aGlzLnN0YXRlLnNlbGVjdGVkUm93S2V5cyxcclxuICAgICAgICAgIG9uU2VsZWN0OiB0aGlzLnJvd1NlbGVjdGlvbk9uU2VsZWN0LmJpbmQodGhpcyksXHJcbiAgICAgICAgICBvblNlbGVjdEFsbDogdGhpcy5yb3dTZWxlY3Rpb25PblNlbGVjdEFsbC5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgY29sdW1uV2lkdGg6IDQwLFxyXG4gICAgICAgICAgLi4ucm93U2VsZWN0aW9uLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBjb25zdCBEZWZhdWx0VGFibGUgPSAoXHJcbiAgICAgIDw+XHJcbiAgICAgICAge3Rvb2xGbGFnICYmIHRoaXMucmVuZGVyVG9vbEJhcigpfVxyXG4gICAgICAgIDxUYWJsZVxyXG4gICAgICAgICAgY2hpbGRyZW5Db2x1bW5OYW1lPVwiY2hpbGROb2Rlc1wiXHJcbiAgICAgICAgICBzaGVpdGVtXHJcbiAgICAgICAgICBkYXRhU291cmNlPXtuZXdEYXRhU291cmNlfVxyXG4gICAgICAgICAgY29sdW1ucz17dGhpcy5nZXRDb2x1bW5zKCl9XHJcbiAgICAgICAgICBsb2FkaW5nPXtsb2FkaW5nfVxyXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbXCJuc2MtdGFibGVcIl19XHJcbiAgICAgICAgICBsb2NhbGU9e3tcclxuICAgICAgICAgICAgZW1wdHlUZXh0OiA8Tm9EYXRhIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidGFibGUtbm9kYXRhXCIpfSAvPixcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBzY3JvbGw9e3sgeDogXCJtYXgtY29udGVudFwiIH19XHJcbiAgICAgICAgICB7Li4ucmVzaXplUHJvcHN9XHJcbiAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgICB7Li4uZHJhZ2FibGVQcm9wc31cclxuICAgICAgICAgIHNpemU9e3RhYmxlU2l6ZX1cclxuICAgICAgICAvPlxyXG4gICAgICA8Lz5cclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIGRyYWdhYmxlID09PSB0cnVlID8gKFxyXG4gICAgICA8RG5kUHJvdmlkZXIgYmFja2VuZD17SFRNTDVCYWNrZW5kfT57RGVmYXVsdFRhYmxlfTwvRG5kUHJvdmlkZXI+XHJcbiAgICApIDogKFxyXG4gICAgICBEZWZhdWx0VGFibGVcclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCB3aXRoWmhMb2NhbGUoTlNDVGFibGUpO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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SUFBSSxDQUFDdkMsdUJBQXVCLENBQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDO1VBQ3BEZ0UsV0FBVyxFQUFFO1FBQUUsR0FDWkgsWUFBWTtNQUNoQixFQUNGO0lBQ0g7SUFDQSxNQUFNSSxZQUFZLGdCQUNoQjdTLEtBQUEsQ0FBQXVCLGFBQUEsQ0FBQXZCLEtBQUEsQ0FBQXFPLFFBQUEsUUFDR2dFLFFBQVEsSUFBSSxJQUFJLENBQUMzRSxhQUFhLENBQUMsQ0FBQyxlQUNqQzFOLEtBQUEsQ0FBQXVCLGFBQUEsQ0FBQXVSLE1BQUEsRUFBQUMsUUFBQTtNQUNFQyxrQkFBa0IsRUFBQyxZQUFZO01BQy9CQyxPQUFPO01BQ1BwTyxVQUFVLEVBQUUrTSxhQUFjO01BQzFCOU0sT0FBTyxFQUFFLElBQUksQ0FBQ3VHLFVBQVUsQ0FBQyxDQUFFO01BQzNCdEcsT0FBTyxFQUFFQSxPQUFRO01BQ2pCK0csU0FBUyxFQUFFeEwsTUFBTSxDQUFDLFdBQVcsQ0FBRTtNQUMvQjRTLE1BQU0sRUFBRTtRQUNOQyxTQUFTLGVBQUVuVCxLQUFBLENBQUF1QixhQUFBLENBQUNWLE1BQU07VUFBQ2lMLFNBQVMsRUFBRW5MLE9BQU8sQ0FBQ0wsTUFBTSxFQUFFLGNBQWM7UUFBRSxDQUFFO01BQ2xFLENBQUU7TUFDRjhTLE1BQU0sRUFBRTtRQUFFQyxDQUFDLEVBQUU7TUFBYztJQUFFLEdBQ3pCakIsV0FBVyxFQUNYblIsS0FBSyxFQUNMaVIsYUFBYTtNQUNqQjFQLElBQUksRUFBRWE7SUFBVSxFQUNqQixDQUNELENBQ0g7SUFFRCxPQUFPNE8sUUFBUSxLQUFLLElBQUksZ0JBQ3RCalMsS0FBQSxDQUFBdUIsYUFBQSxDQUFDdEIsV0FBVztNQUFDcVQsT0FBTyxFQUFFOVM7SUFBYSxHQUFFcVMsWUFBMEIsQ0FBQyxHQUVoRUEsWUFDRDtFQUNIO0FBQ0Y7QUFBQzlRLGVBQUEsQ0F0NEJLSixRQUFRLGtCQUNVO0VBQ3BCc1EsUUFBUSxFQUFFLEtBQUs7RUFDZmpCLFNBQVMsRUFBRSxJQUFJO0VBQ2ZoSCxZQUFZLEVBQUUsSUFBSTtFQUNsQnVKLE9BQU8sRUFBRSxFQUFFO0VBQ1h2SyxjQUFjLEVBQUUsSUFBSTtFQUNwQkQsUUFBUSxFQUFFLElBQUk7RUFDZEQsWUFBWSxFQUFFLElBQUk7RUFDbEJ6QixZQUFZLEVBQUUsSUFBSTtFQUNsQnVHLE9BQU8sRUFBRTtJQUNQMkUsSUFBSSxFQUFFLElBQUk7SUFDVnRFLFdBQVcsRUFBRSxDQUFDO0VBQ2hCO0FBQ0YsQ0FBQztBQTAzQkgsZUFBZXhOLFlBQVksQ0FBQ2tCLFFBQVEsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==