easy-file-system 1.5.6 → 1.5.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/example.js +2476 -1320
- package/lib/button/name.js +35 -1
- package/lib/constants.js +13 -4
- package/lib/div/item/entry/directoryName.js +19 -10
- package/lib/div/item/entry/fileName.js +17 -9
- package/lib/div/item/entry.js +8 -1
- package/lib/eventTypes.js +7 -2
- package/lib/example/view/button/editSelected.js +157 -0
- package/lib/example/view/explorer/first.js +158 -0
- package/lib/example/view/explorer/second.js +160 -0
- package/lib/example/view/rubbishBin.js +111 -0
- package/lib/example/view.js +71 -45
- package/lib/explorer.js +3 -78
- package/lib/index.js +7 -3
- package/lib/input/name.js +300 -0
- package/lib/item/entry/drag/directoryName.js +8 -6
- package/lib/item/entry/drag/fileName.js +10 -8
- package/lib/item/entry/drag.js +57 -15
- package/lib/keyCodes.js +22 -0
- package/lib/list/entries.js +16 -2
- package/lib/mixins/event.js +99 -0
- package/lib/styles.js +1 -5
- package/package.json +1 -1
- package/src/button/name.js +34 -0
- package/src/constants.js +1 -0
- package/src/div/item/entry/directoryName.js +23 -16
- package/src/div/item/entry/fileName.js +20 -14
- package/src/div/item/entry.js +7 -0
- package/src/eventTypes.js +3 -1
- package/src/example/view/button/editSelected.js +23 -0
- package/src/example/view/explorer/first.js +18 -0
- package/src/example/view/explorer/second.js +18 -0
- package/src/example/view/rubbishBin.js +9 -0
- package/src/example/view.js +53 -41
- package/src/explorer.js +2 -83
- package/src/index.js +1 -0
- package/src/input/name.js +90 -0
- package/src/item/entry/drag/directoryName.js +5 -4
- package/src/item/entry/drag/fileName.js +10 -6
- package/src/item/entry/drag.js +77 -23
- package/src/keyCodes.js +4 -0
- package/src/list/entries.js +16 -0
- package/src/mixins/event.js +140 -0
- package/src/styles.js +0 -1
package/lib/list/entries.js
CHANGED
|
@@ -380,6 +380,19 @@ var EntriesList = /*#__PURE__*/ function(Element) {
|
|
|
380
380
|
});
|
|
381
381
|
}
|
|
382
382
|
},
|
|
383
|
+
{
|
|
384
|
+
key: "editSelectedPath",
|
|
385
|
+
value: function editSelectedPath() {
|
|
386
|
+
var dragEntryItems = this.retrieveDragEntryItems();
|
|
387
|
+
dragEntryItems.some(function(dragEntryItem) {
|
|
388
|
+
var selected = dragEntryItem.isSelected();
|
|
389
|
+
if (selected) {
|
|
390
|
+
dragEntryItem.edit();
|
|
391
|
+
return true;
|
|
392
|
+
}
|
|
393
|
+
});
|
|
394
|
+
}
|
|
395
|
+
},
|
|
383
396
|
{
|
|
384
397
|
key: "addDirectoryPath",
|
|
385
398
|
value: function addDirectoryPath(directoryPath) {
|
|
@@ -751,7 +764,7 @@ var EntriesList = /*#__PURE__*/ function(Element) {
|
|
|
751
764
|
{
|
|
752
765
|
key: "parentContext",
|
|
753
766
|
value: function parentContext() {
|
|
754
|
-
var expandEntriesList = this.expand.bind(this), collapseEntriesList = this.collapse.bind(this), isEntriesListCollapsed = this.isCollapsed.bind(this), isEmpty = this.isEmpty.bind(this), addMarker = this.addMarker.bind(this), selectPath = this.selectPath.bind(this), addFilePath = this.addFilePath.bind(this), removeMarker = this.removeMarker.bind(this), removeFilePath = this.removeFilePath.bind(this), removeAllPaths = this.removeAllPaths.bind(this), deselectAllPaths = this.deselectAllPaths.bind(this), addDirectoryPath = this.addDirectoryPath.bind(this), removeDirectoryPath = this.removeDirectoryPath.bind(this), forEachDragEntryItem = this.forEachDragEntryItem.bind(this), retrieveDragEntryItems = this.retrieveDragEntryItems.bind(this), retrieveMarkerEntryItem = this.retrieveMarkerEntryItem.bind(this);
|
|
767
|
+
var expandEntriesList = this.expand.bind(this), collapseEntriesList = this.collapse.bind(this), isEntriesListCollapsed = this.isCollapsed.bind(this), isEmpty = this.isEmpty.bind(this), addMarker = this.addMarker.bind(this), selectPath = this.selectPath.bind(this), addFilePath = this.addFilePath.bind(this), removeMarker = this.removeMarker.bind(this), removeFilePath = this.removeFilePath.bind(this), removeAllPaths = this.removeAllPaths.bind(this), deselectAllPaths = this.deselectAllPaths.bind(this), addDirectoryPath = this.addDirectoryPath.bind(this), editSelectedPath = this.editSelectedPath.bind(this), removeDirectoryPath = this.removeDirectoryPath.bind(this), forEachDragEntryItem = this.forEachDragEntryItem.bind(this), retrieveDragEntryItems = this.retrieveDragEntryItems.bind(this), retrieveMarkerEntryItem = this.retrieveMarkerEntryItem.bind(this);
|
|
755
768
|
return {
|
|
756
769
|
expandEntriesList: expandEntriesList,
|
|
757
770
|
collapseEntriesList: collapseEntriesList,
|
|
@@ -765,6 +778,7 @@ var EntriesList = /*#__PURE__*/ function(Element) {
|
|
|
765
778
|
removeAllPaths: removeAllPaths,
|
|
766
779
|
deselectAllPaths: deselectAllPaths,
|
|
767
780
|
addDirectoryPath: addDirectoryPath,
|
|
781
|
+
editSelectedPath: editSelectedPath,
|
|
768
782
|
removeDirectoryPath: removeDirectoryPath,
|
|
769
783
|
forEachDragEntryItem: forEachDragEntryItem,
|
|
770
784
|
retrieveDragEntryItems: retrieveDragEntryItems,
|
|
@@ -785,4 +799,4 @@ _defineProperty(EntriesList, "defaultProperties", {
|
|
|
785
799
|
});
|
|
786
800
|
var _default = (0, _easyWithStyle.default)(EntriesList)(_templateObject(), _styles.entriesListPaddingLeft);
|
|
787
801
|
|
|
788
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saXN0L2VudHJpZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB3aXRoU3R5bGUgZnJvbSBcImVhc3ktd2l0aC1zdHlsZVwiOyAgLy8vXG5cbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwiZWFzeVwiO1xuaW1wb3J0IHsgcGF0aFV0aWxpdGllcywgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCB7IGVudHJpZXNMaXN0UGFkZGluZ0xlZnQgfSBmcm9tIFwiLi4vc3R5bGVzXCI7XG5pbXBvcnQgeyBGSUxFX05BTUVfRFJBR19FTlRSWV9UWVBFLCBESVJFQ1RPUllfTkFNRV9EUkFHX0VOVFJZX1RZUEUgfSBmcm9tIFwiLi4vZW50cnlUeXBlc1wiO1xuXG5jb25zdCB7IGZpbHRlciB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IHRvcG1vc3REaXJlY3RvcnlOYW1lRnJvbVBhdGgsIHBhdGhXaXRob3V0VG9wbW9zdERpcmVjdG9yeU5hbWVGcm9tUGF0aCB9ID0gcGF0aFV0aWxpdGllcztcblxuY29uc3QgbWFya2VyRW50cnlJdGVtID0gbnVsbDtcblxuT2JqZWN0LmFzc2lnbihnbG9iYWxUaGlzLCB7XG4gIG1hcmtlckVudHJ5SXRlbVxufSk7XG5cbmNsYXNzIEVudHJpZXNMaXN0IGV4dGVuZHMgRWxlbWVudCB7XG4gIGlzVG9wbW9zdCgpIHtcbiAgICBjb25zdCB7IHRvcG1vc3QgfSA9IHRoaXMucHJvcGVydGllcztcblxuICAgIHJldHVybiB0b3Btb3N0O1xuICB9XG5cbiAgZ2V0RXhwbG9yZXIoKSB7XG5cdFx0Y29uc3QgeyBleHBsb3JlciB9ID0gdGhpcy5wcm9wZXJ0aWVzO1xuXG5cdFx0cmV0dXJuIGV4cGxvcmVyO1xuXHR9XG5cblx0Z2V0RW50cnlJdGVtcygpIHtcblx0XHRjb25zdCBjaGlsZEVudHJ5SXRlbUVsZW1lbnRzID0gdGhpcy5nZXRDaGlsZEVsZW1lbnRzKFwibGkuZW50cnlcIiksXG5cdFx0XHRcdFx0ZW50cnlJdGVtcyA9IGNoaWxkRW50cnlJdGVtRWxlbWVudHM7ICAvLy9cblxuXHRcdHJldHVybiBlbnRyeUl0ZW1zO1xuXHR9XG5cblx0Z2V0RW50cnlJdGVtc0xlbmd0aCgpIHtcbiAgICBjb25zdCBlbnRyeUl0ZW1zID0gdGhpcy5nZXRFbnRyeUl0ZW1zKCksXG4gICAgICAgICAgZW50cnlJdGVtc0xlbmd0aCA9IGVudHJ5SXRlbXMubGVuZ3RoO1xuXG4gICAgcmV0dXJuIGVudHJ5SXRlbXNMZW5ndGg7XG4gIH1cblxuICBpc0NvbGxhcHNlZCgpIHtcbiAgICBjb25zdCBjb2xsYXBzZWQgPSB0aGlzLmhhc0NsYXNzKFwiY29sbGFwc2VkXCIpO1xuXG4gICAgcmV0dXJuIGNvbGxhcHNlZDtcbiAgfVxuXG4gIGlzRW1wdHkoKSB7XG4gICAgY29uc3QgZW50cnlJdGVtcyA9IHRoaXMuZ2V0RW50cnlJdGVtcygpLFxuICAgICAgICAgIGVudHJ5SXRlbXNMZW5ndGggPSBlbnRyeUl0ZW1zLmxlbmd0aCxcbiAgICAgICAgICBlbXB0eSA9IChlbnRyeUl0ZW1zTGVuZ3RoID09PSAwKTtcblxuICAgIHJldHVybiBlbXB0eTtcbiAgfVxuXG4gIGFkZE1hcmtlcihtYXJrZXJFbnRyeUl0ZW1QYXRoLCBkcmFnRW50cnlJdGVtVHlwZSkge1xuICAgIGNvbnN0IHRvcG1vc3REaXJlY3RvcnlOYW1lID0gdG9wbW9zdERpcmVjdG9yeU5hbWVGcm9tUGF0aChtYXJrZXJFbnRyeUl0ZW1QYXRoKTtcblxuICAgIGlmICh0b3Btb3N0RGlyZWN0b3J5TmFtZSA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgbWFya2VyRW50cnlJdGVtTmFtZSA9IG1hcmtlckVudHJ5SXRlbVBhdGg7ICAvLy9cblxuICAgICAgdGhpcy5hZGRNYXJrZXJFbnRyeUl0ZW0obWFya2VyRW50cnlJdGVtTmFtZSwgZHJhZ0VudHJ5SXRlbVR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0b3Btb3N0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0gPSB0aGlzLmZpbmREaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSh0b3Btb3N0RGlyZWN0b3J5TmFtZSksXG4gICAgICAgICAgICBtYXJrZXJFbnRyeUl0ZW1QYXRoV2l0aG91dFRvcG1vc3REaXJlY3RvcnlOYW1lID0gcGF0aFdpdGhvdXRUb3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoKG1hcmtlckVudHJ5SXRlbVBhdGgpO1xuXG4gICAgICBtYXJrZXJFbnRyeUl0ZW1QYXRoID0gbWFya2VyRW50cnlJdGVtUGF0aFdpdGhvdXRUb3Btb3N0RGlyZWN0b3J5TmFtZTsgLy8vXG5cbiAgICAgIHRvcG1vc3REaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbS5hZGRNYXJrZXIobWFya2VyRW50cnlJdGVtUGF0aCwgZHJhZ0VudHJ5SXRlbVR5cGUpO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZU1hcmtlcigpIHtcbiAgICB0aGlzLnJlbW92ZU1hcmtlckVudHJ5SXRlbSgpO1xuICB9XG5cbiAgc2VsZWN0UGF0aChwYXRoKSB7XG4gICAgY29uc3QgdG9wbW9zdERpcmVjdG9yeU5hbWUgPSB0b3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoKHBhdGgpO1xuXG4gICAgaWYgKHRvcG1vc3REaXJlY3RvcnlOYW1lID09PSBudWxsKSB7XG4gICAgICBjb25zdCBuYW1lID0gcGF0aCwgIC8vL1xuICAgICAgICAgICAgZHJhZ0VudHJ5SXRlbSA9IHRoaXMuZmluZERyYWdFbnRyeUl0ZW0obmFtZSk7XG5cbiAgICAgIGlmIChkcmFnRW50cnlJdGVtICE9PSBudWxsKSB7XG4gICAgICAgIGRyYWdFbnRyeUl0ZW0uc2VsZWN0KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCB0b3Btb3N0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0gPSB0aGlzLmZpbmREaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSh0b3Btb3N0RGlyZWN0b3J5TmFtZSk7XG5cbiAgICAgIGlmICh0b3Btb3N0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0gIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGhXaXRob3V0VG9wbW9zdERpcmVjdG9yeU5hbWUgPSBwYXRoV2l0aG91dFRvcG1vc3REaXJlY3RvcnlOYW1lRnJvbVBhdGgocGF0aCk7XG5cbiAgICAgICAgcGF0aCA9IGZpbGVQYXRoV2l0aG91dFRvcG1vc3REaXJlY3RvcnlOYW1lOyAvLy9cblxuICAgICAgICB0b3Btb3N0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0uZXhwYW5kKCk7XG5cbiAgICAgICAgdG9wbW9zdERpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtLnNlbGVjdFBhdGgocGF0aCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYWRkRmlsZVBhdGgoZmlsZVBhdGgpIHtcblx0XHRsZXQgZmlsZU5hbWVEcmFnRW50cnlJdGVtO1xuXG4gICAgY29uc3QgdG9wbW9zdERpcmVjdG9yeU5hbWUgPSB0b3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoKGZpbGVQYXRoKTtcblxuICAgIGlmICh0b3Btb3N0RGlyZWN0b3J5TmFtZSA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgZmlsZU5hbWUgPSBmaWxlUGF0aDsgIC8vL1xuXG4gICAgICBmaWxlTmFtZURyYWdFbnRyeUl0ZW0gPSB0aGlzLmZpbmRGaWxlTmFtZURyYWdFbnRyeUl0ZW0oZmlsZU5hbWUpO1xuXG4gICAgICBpZiAoZmlsZU5hbWVEcmFnRW50cnlJdGVtID09PSBudWxsKSB7XG4gICAgICAgIGZpbGVOYW1lRHJhZ0VudHJ5SXRlbSA9IHRoaXMuY3JlYXRlRmlsZU5hbWVEcmFnRW50cnlJdGVtKGZpbGVOYW1lKTtcblxuICAgICAgICB0aGlzLmFkZEVudHJ5SXRlbShmaWxlTmFtZURyYWdFbnRyeUl0ZW0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgdG9wbW9zdERpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtID0gdGhpcy5maW5kRGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0odG9wbW9zdERpcmVjdG9yeU5hbWUpO1xuXG4gICAgICBpZiAodG9wbW9zdERpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtID09PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGNvbGxhcHNlZCA9IHRydWU7XG5cbiAgICAgICAgdG9wbW9zdERpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtID0gdGhpcy5jcmVhdGVEaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSh0b3Btb3N0RGlyZWN0b3J5TmFtZSwgY29sbGFwc2VkKTtcblxuICAgICAgICB0aGlzLmFkZEVudHJ5SXRlbSh0b3Btb3N0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmaWxlUGF0aFdpdGhvdXRUb3Btb3N0RGlyZWN0b3J5TmFtZSA9IHBhdGhXaXRob3V0VG9wbW9zdERpcmVjdG9yeU5hbWVGcm9tUGF0aChmaWxlUGF0aCk7XG5cbiAgICAgIGZpbGVQYXRoID0gZmlsZVBhdGhXaXRob3V0VG9wbW9zdERpcmVjdG9yeU5hbWU7IC8vL1xuXG4gICAgICBmaWxlTmFtZURyYWdFbnRyeUl0ZW0gPSB0b3Btb3N0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0uYWRkRmlsZVBhdGgoZmlsZVBhdGgpO1xuICAgIH1cblxuXHRcdHJldHVybiBmaWxlTmFtZURyYWdFbnRyeUl0ZW07XG5cdH1cblxuICByZW1vdmVGaWxlUGF0aChmaWxlUGF0aCwgcmVtb3ZlRW1wdHlQYXJlbnREaXJlY3RvcmllcyA9IGZhbHNlKSB7XG4gICAgY29uc3QgdG9wbW9zdERpcmVjdG9yeU5hbWUgPSB0b3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoKGZpbGVQYXRoKTtcblxuICAgIGlmICh0b3Btb3N0RGlyZWN0b3J5TmFtZSA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgZmlsZU5hbWUgPSBmaWxlUGF0aCwgIC8vL1xuICAgICAgICAgICAgZmlsZU5hbWVEcmFnRW50cnlJdGVtID0gdGhpcy5maW5kRmlsZU5hbWVEcmFnRW50cnlJdGVtKGZpbGVOYW1lKTtcblxuICAgICAgaWYgKGZpbGVOYW1lRHJhZ0VudHJ5SXRlbSAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLnJlbW92ZUVudHJ5SXRlbShmaWxlTmFtZURyYWdFbnRyeUl0ZW0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0b3Btb3N0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0gPSB0aGlzLmZpbmREaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSh0b3Btb3N0RGlyZWN0b3J5TmFtZSk7XG5cbiAgICAgIGlmICh0b3Btb3N0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0gIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGhXaXRob3V0VG9wbW9zdERpcmVjdG9yeU5hbWUgPSBwYXRoV2l0aG91dFRvcG1vc3REaXJlY3RvcnlOYW1lRnJvbVBhdGgoZmlsZVBhdGgpO1xuXG4gICAgICAgIGZpbGVQYXRoID0gZmlsZVBhdGhXaXRob3V0VG9wbW9zdERpcmVjdG9yeU5hbWU7IC8vL1xuXG4gICAgICAgIHRvcG1vc3REaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbS5yZW1vdmVGaWxlUGF0aChmaWxlUGF0aCwgcmVtb3ZlRW1wdHlQYXJlbnREaXJlY3Rvcmllcyk7XG5cbiAgICAgICAgaWYgKHJlbW92ZUVtcHR5UGFyZW50RGlyZWN0b3JpZXMpIHtcbiAgICAgICAgICBjb25zdCB0b3Btb3N0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW1FbXB0eSA9IHRvcG1vc3REaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbS5pc0VtcHR5KCk7XG5cbiAgICAgICAgICBpZiAodG9wbW9zdERpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtRW1wdHkpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlRW50cnlJdGVtKHRvcG1vc3REaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlQWxsUGF0aHMoKSB7XG4gICAgdGhpcy5yZW1vdmVFbnRyeUl0ZW1zKCk7XG4gIH1cblxuICBkZXNlbGVjdEFsbFBhdGhzKCkge1xuICAgIGNvbnN0IGRyYWdFbnRyeUl0ZW1zID0gdGhpcy5yZXRyaWV2ZURyYWdFbnRyeUl0ZW1zKCk7XG5cbiAgICBkcmFnRW50cnlJdGVtcy5mb3JFYWNoKChkcmFnRW50cnlJdGVtKSA9PiB7XG4gICAgICBkcmFnRW50cnlJdGVtLmRlc2VsZWN0KCk7XG4gICAgfSk7XG4gIH1cblxuICBhZGREaXJlY3RvcnlQYXRoKGRpcmVjdG9yeVBhdGgsIGNvbGxhcHNlZCA9IHRydWUpIHtcbiAgICBsZXQgZGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW07XG5cbiAgICBjb25zdCB0b3Btb3N0RGlyZWN0b3J5TmFtZSA9IHRvcG1vc3REaXJlY3RvcnlOYW1lRnJvbVBhdGgoZGlyZWN0b3J5UGF0aCk7XG5cbiAgICBpZiAodG9wbW9zdERpcmVjdG9yeU5hbWUgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGRpcmVjdG9yeU5hbWUgPSBkaXJlY3RvcnlQYXRoOyAgLy8vXG5cbiAgICAgIGRpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtID0gdGhpcy5maW5kRGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0oZGlyZWN0b3J5TmFtZSk7XG5cbiAgICAgIGlmIChkaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSA9PT0gbnVsbCkge1xuICAgICAgICBkaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSA9IHRoaXMuY3JlYXRlRGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0oZGlyZWN0b3J5TmFtZSwgY29sbGFwc2VkKTtcblxuICAgICAgICB0aGlzLmFkZEVudHJ5SXRlbShkaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb2xsYXBzZWQgP1xuICAgICAgICAgIGRpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtLmNvbGxhcHNlKCkgOlxuICAgICAgICAgICAgZGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0uZXhwYW5kKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCB0b3Btb3N0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0gPSB0aGlzLmZpbmREaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSh0b3Btb3N0RGlyZWN0b3J5TmFtZSk7XG5cbiAgICAgIGlmICh0b3Btb3N0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0gPT09IG51bGwpIHtcbiAgICAgICAgdG9wbW9zdERpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtID0gdGhpcy5jcmVhdGVEaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSh0b3Btb3N0RGlyZWN0b3J5TmFtZSwgY29sbGFwc2VkKTtcblxuICAgICAgICB0aGlzLmFkZEVudHJ5SXRlbSh0b3Btb3N0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkaXJlY3RvcnlQYXRoV2l0aG91dFRvcG1vc3REaXJlY3RvcnlOYW1lID0gcGF0aFdpdGhvdXRUb3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoKGRpcmVjdG9yeVBhdGgpO1xuXG4gICAgICBkaXJlY3RvcnlQYXRoID0gZGlyZWN0b3J5UGF0aFdpdGhvdXRUb3Btb3N0RGlyZWN0b3J5TmFtZTsgLy8vXG5cbiAgICAgIGRpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtID0gdG9wbW9zdERpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtLmFkZERpcmVjdG9yeVBhdGgoZGlyZWN0b3J5UGF0aCwgY29sbGFwc2VkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW07XG4gIH1cblxuICByZW1vdmVEaXJlY3RvcnlQYXRoKGRpcmVjdG9yeVBhdGgsIHJlbW92ZUVtcHR5UGFyZW50RGlyZWN0b3JpZXMgPSBmYWxzZSkge1xuICAgIGNvbnN0IHRvcG1vc3REaXJlY3RvcnlOYW1lID0gdG9wbW9zdERpcmVjdG9yeU5hbWVGcm9tUGF0aChkaXJlY3RvcnlQYXRoKTtcblxuICAgIGlmICh0b3Btb3N0RGlyZWN0b3J5TmFtZSA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgZGlyZWN0b3J5TmFtZSA9IGRpcmVjdG9yeVBhdGgsICAvLy9cbiAgICAgICAgICAgIGRpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtID0gdGhpcy5maW5kRGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0oZGlyZWN0b3J5TmFtZSk7XG5cbiAgICAgIGlmIChkaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLnJlbW92ZUVudHJ5SXRlbShkaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRvcG1vc3REaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSA9IHRoaXMuZmluZERpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtKHRvcG1vc3REaXJlY3RvcnlOYW1lKTtcblxuICAgICAgaWYgKHRvcG1vc3REaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBkaXJlY3RvcnlQYXRoV2l0aG91dFRvcG1vc3REaXJlY3RvcnlOYW1lID0gcGF0aFdpdGhvdXRUb3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoKGRpcmVjdG9yeVBhdGgpO1xuXG4gICAgICAgIGRpcmVjdG9yeVBhdGggPSBkaXJlY3RvcnlQYXRoV2l0aG91dFRvcG1vc3REaXJlY3RvcnlOYW1lOyAvLy9cblxuICAgICAgICB0b3Btb3N0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0ucmVtb3ZlRGlyZWN0b3J5UGF0aChkaXJlY3RvcnlQYXRoLCByZW1vdmVFbXB0eVBhcmVudERpcmVjdG9yaWVzKTtcblxuICAgICAgICBpZiAocmVtb3ZlRW1wdHlQYXJlbnREaXJlY3Rvcmllcykge1xuICAgICAgICAgIGNvbnN0IHRvcG1vc3REaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbUVtcHR5ID0gdG9wbW9zdERpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtLmlzRW1wdHkoKTtcblxuICAgICAgICAgIGlmICh0b3Btb3N0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW1FbXB0eSkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVFbnRyeUl0ZW0odG9wbW9zdERpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhZGRFbnRyeUl0ZW0oZW50cnlJdGVtKSB7XG4gICAgY29uc3QgZXhwbG9yZXIgPSB0aGlzLmdldEV4cGxvcmVyKCksXG4gICAgICAgICAgbmV4dEVudHJ5SXRlbSA9IGVudHJ5SXRlbSwgIC8vL1xuICAgICAgICAgIHByZXZpb3VzRW50cnlJdGVtID0gdGhpcy5maW5kRW50cnlJdGVtKChlbnRyeUl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRFbnRyeUJlZm9yZUVudHJ5SXRlbSA9IG5leHRFbnRyeUl0ZW0uaXNCZWZvcmUoZW50cnlJdGVtKTtcblxuICAgICAgICAgICAgaWYgKG5leHRFbnRyeUJlZm9yZUVudHJ5SXRlbSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIGlmIChwcmV2aW91c0VudHJ5SXRlbSA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5hcHBlbmQoZW50cnlJdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZW50cnlJdGVtLmluc2VydEJlZm9yZShwcmV2aW91c0VudHJ5SXRlbSk7XG4gICAgfVxuXG4gICAgY29uc3QgZXhwbG9yZXJNb3VudGVkID0gZXhwbG9yZXIuaXNNb3VudGVkKCk7XG5cbiAgICBpZiAoZXhwbG9yZXJNb3VudGVkKSB7XG4gICAgICBjb25zdCBlbnRyeUl0ZW1EZXNjZW5kYW50RWxlbWVudHMgPSBlbnRyeUl0ZW0uZ2V0RGVzY2VuZGFudEVsZW1lbnRzKCksXG4gICAgICAgICAgICBlbnRyeUl0ZW1FbGVtZW50cyA9IFtcbiAgICAgICAgICAgICAgZW50cnlJdGVtLFxuICAgICAgICAgICAgICAuLi5lbnRyeUl0ZW1EZXNjZW5kYW50RWxlbWVudHNcbiAgICAgICAgICAgIF07XG5cbiAgICAgIGVudHJ5SXRlbUVsZW1lbnRzLnJldmVyc2UoKTtcblxuICAgICAgZW50cnlJdGVtRWxlbWVudHMuZm9yRWFjaCgoZW50cnlJdGVtRWxlbWVudCkgPT4gKGVudHJ5SXRlbUVsZW1lbnQuZGlkTW91bnQgJiYgZW50cnlJdGVtRWxlbWVudC5kaWRNb3VudCgpKSk7ICAvLy9cbiAgICB9XG4gIH1cblxuICByZW1vdmVFbnRyeUl0ZW0oZW50cnlJdGVtKSB7XG4gICAgY29uc3QgZXhwbG9yZXIgPSB0aGlzLmdldEV4cGxvcmVyKCksXG4gICAgICAgICAgZXhwbG9yZXJNb3VudGVkID0gZXhwbG9yZXIuaXNNb3VudGVkKCk7XG5cbiAgICBpZiAoZXhwbG9yZXJNb3VudGVkKSB7XG4gICAgICBjb25zdCBlbnRyeUl0ZW1EZXNjZW5kYW50RWxlbWVudHMgPSBlbnRyeUl0ZW0uZ2V0RGVzY2VuZGFudEVsZW1lbnRzKCksXG4gICAgICAgICAgICBlbnRyeUl0ZW1FbGVtZW50cyA9IFtcbiAgICAgICAgICAgICAgZW50cnlJdGVtLFxuICAgICAgICAgICAgICAuLi5lbnRyeUl0ZW1EZXNjZW5kYW50RWxlbWVudHNcbiAgICAgICAgICAgIF07XG5cbiAgICAgIGVudHJ5SXRlbUVsZW1lbnRzLmZvckVhY2goKGVudHJ5SXRlbUVsZW1lbnQpID0+IChlbnRyeUl0ZW1FbGVtZW50LndpbGxVbm1vdW50ICYmIGVudHJ5SXRlbUVsZW1lbnQud2lsbFVubW91bnQoKSkpOyAgLy8vXG4gICAgfVxuXG4gICAgZW50cnlJdGVtLnJlbW92ZSgpO1xuICB9XG5cbiAgcmVtb3ZlRW50cnlJdGVtcygpIHtcbiAgICBjb25zdCBlbnRyeUl0ZW1zID0gdGhpcy5nZXRFbnRyeUl0ZW1zKCk7XG5cbiAgICBlbnRyeUl0ZW1zLmZvckVhY2goKGVudHJ5SXRlbSkgPT4gdGhpcy5yZW1vdmVFbnRyeUl0ZW0oZW50cnlJdGVtKSk7XG4gIH1cblxuICBhZGRNYXJrZXJFbnRyeUl0ZW0obWFya2VyRW50cnlJdGVtTmFtZSwgZHJhZ0VudHJ5SXRlbVR5cGUpIHtcbiAgICBsZXQgbWFya2VyRW50cnlJdGVtO1xuXG4gICAgY29uc3QgbmFtZSA9IG1hcmtlckVudHJ5SXRlbU5hbWUsIC8vL1xuICAgICAgICAgIHR5cGUgPSBkcmFnRW50cnlJdGVtVHlwZTsgIC8vL1xuXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIEZJTEVfTkFNRV9EUkFHX0VOVFJZX1RZUEUgOiB7XG4gICAgICAgIGNvbnN0IGV4cGxvcmVyID0gdGhpcy5nZXRFeHBsb3JlcigpLFxuICAgICAgICAgICAgICBGaWxlTmFtZU1hcmtlckVudHJ5SXRlbSA9IGV4cGxvcmVyLmdldEZpbGVOYW1lTWFya2VyRW50cnlJdGVtKCksXG4gICAgICAgICAgICAgIGZpbGVOYW1lTWFya2VyRW50cnlJdGVtID1cblxuICAgICAgICAgICAgICAgIDxGaWxlTmFtZU1hcmtlckVudHJ5SXRlbSBuYW1lPXtuYW1lfSBleHBsb3Jlcj17ZXhwbG9yZXJ9IC8+XG5cbiAgICAgICAgICAgICAgO1xuXG4gICAgICAgIG1hcmtlckVudHJ5SXRlbSA9IGZpbGVOYW1lTWFya2VyRW50cnlJdGVtOyAgLy8vXG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgRElSRUNUT1JZX05BTUVfRFJBR19FTlRSWV9UWVBFIDoge1xuICAgICAgICBjb25zdCBleHBsb3JlciA9IHRoaXMuZ2V0RXhwbG9yZXIoKSxcbiAgICAgICAgICAgICAgRGlyZWN0b3J5TmFtZU1hcmtlckVudHJ5SXRlbSA9IGV4cGxvcmVyLmdldERpcmVjdG9yeU5hbWVNYXJrZXJFbnRyeUl0ZW0oKSxcbiAgICAgICAgICAgICAgZGlyZWN0b3J5TmFtZU1hcmtlckVudHJ5SXRlbSA9XG5cbiAgICAgICAgICAgICAgICA8RGlyZWN0b3J5TmFtZU1hcmtlckVudHJ5SXRlbSBuYW1lPXtuYW1lfSBleHBsb3Jlcj17ZXhwbG9yZXJ9IC8+XG5cbiAgICAgICAgICAgICAgO1xuXG4gICAgICAgIG1hcmtlckVudHJ5SXRlbSA9IGRpcmVjdG9yeU5hbWVNYXJrZXJFbnRyeUl0ZW07IC8vL1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGVudHJ5SXRlbSA9IG1hcmtlckVudHJ5SXRlbTsgLy8vXG5cbiAgICB0aGlzLmFkZEVudHJ5SXRlbShlbnRyeUl0ZW0pO1xuXG4gICAgT2JqZWN0LmFzc2lnbihnbG9iYWxUaGlzLCB7XG4gICAgICBtYXJrZXJFbnRyeUl0ZW1cbiAgICB9KTtcbiAgfVxuXG4gIHJlbW92ZU1hcmtlckVudHJ5SXRlbSgpIHtcbiAgICBsZXQgbWFya2VyRW50cnlJdGVtID0gdGhpcy5yZXRyaWV2ZU1hcmtlckVudHJ5SXRlbSgpO1xuXG4gICAgbWFya2VyRW50cnlJdGVtLnJlbW92ZSgpO1xuXG4gICAgbWFya2VyRW50cnlJdGVtID0gbnVsbDtcblxuICAgIE9iamVjdC5hc3NpZ24oZ2xvYmFsVGhpcywge1xuICAgICAgbWFya2VyRW50cnlJdGVtXG4gICAgfSk7XG4gIH1cblxuICBjcmVhdGVGaWxlTmFtZURyYWdFbnRyeUl0ZW0oZmlsZU5hbWUpIHtcblx0XHRjb25zdCBuYW1lID0gZmlsZU5hbWUsXHQvLy9cblx0XHRcdFx0XHRleHBsb3JlciA9IHRoaXMuZ2V0RXhwbG9yZXIoKSxcblx0XHRcdFx0XHRGaWxlTmFtZURyYWdFbnRyeUl0ZW0gPSBleHBsb3Jlci5nZXRGaWxlTmFtZURyYWdFbnRyeUl0ZW0oKSxcblx0XHRcdFx0XHRmaWxlTmFtZURyYWdFbnRyeUl0ZW0gPVxuXG5cdFx0XHRcdFx0XHQ8RmlsZU5hbWVEcmFnRW50cnlJdGVtIG5hbWU9e25hbWV9IGV4cGxvcmVyPXtleHBsb3Jlcn0gLz5cblxuXHRcdFx0XHRcdDtcblxuXHRcdHJldHVybiBmaWxlTmFtZURyYWdFbnRyeUl0ZW07XG5cdH1cblxuXHRjcmVhdGVEaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbShkaXJlY3RvcnlOYW1lLCBjb2xsYXBzZWQpIHtcblx0XHRjb25zdCBuYW1lID0gZGlyZWN0b3J5TmFtZSxcdC8vL1xuXHRcdFx0XHRcdGV4cGxvcmVyID0gdGhpcy5nZXRFeHBsb3JlcigpLFxuXHRcdFx0XHRcdERpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtID0gZXhwbG9yZXIuZ2V0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0oKSxcblx0XHRcdFx0XHRkaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSA9XG5cblx0XHRcdFx0XHRcdDxEaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSBuYW1lPXtuYW1lfSBjb2xsYXBzZWQ9e2NvbGxhcHNlZH0gZXhwbG9yZXI9e2V4cGxvcmVyfSAvPlxuXG5cdFx0XHRcdFx0O1xuXG5cdFx0cmV0dXJuIGRpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtO1xuXHR9XG5cblx0aXNGaWxlTmFtZURyYWdFbnRyeUl0ZW1QcmVzZW50KGZpbGVOYW1lKSB7XG5cdFx0Y29uc3QgZmlsZU5hbWVEcmFnRW50cnlJdGVtID0gdGhpcy5maW5kRmlsZU5hbWVEcmFnRW50cnlJdGVtKGZpbGVOYW1lKSxcblx0XHRcdFx0XHRmaWxlTmFtZURyYWdFbnRyeUl0ZW1QcmVzZW50ID0gKGZpbGVOYW1lRHJhZ0VudHJ5SXRlbSAhPT0gbnVsbCk7XG5cblx0XHRyZXR1cm4gZmlsZU5hbWVEcmFnRW50cnlJdGVtUHJlc2VudDtcblx0fVxuXG5cdGlzRGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW1QcmVzZW50KGRpcmVjdG9yeU5hbWUpIHtcblx0XHRjb25zdCBkaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSA9IHRoaXMuZmluZERpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtKGRpcmVjdG9yeU5hbWUpLFxuXHRcdFx0XHRcdGRpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtUHJlc2VudCA9IChkaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSAhPT0gbnVsbCk7XG5cblx0XHRyZXR1cm4gZGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW1QcmVzZW50O1xuXHR9XG5cbiAgZm9yRWFjaEVudHJ5SXRlbUJ5VHlwZXMoY2FsbGJhY2ssIC4uLnR5cGVzKSB7XG4gICAgY29uc3QgZW50cnlJdGVtcyA9IHRoaXMuZ2V0RW50cnlJdGVtcygpO1xuXG4gICAgZW50cnlJdGVtcy5mb3JFYWNoKChlbnRyeUl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IGVudHJ5SXRlbVR5cGUgPSBlbnRyeUl0ZW0uZ2V0VHlwZSgpLFxuICAgICAgICAgIHR5cGVzSW5jbHVkZXNFbnRyeUl0ZW1UeXBlID0gdHlwZXMuaW5jbHVkZXMoZW50cnlJdGVtVHlwZSk7XG5cbiAgICAgIGlmICh0eXBlc0luY2x1ZGVzRW50cnlJdGVtVHlwZSkge1xuICAgICAgICBjYWxsYmFjayhlbnRyeUl0ZW0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZm9yRWFjaERyYWdFbnRyeUl0ZW0oY2FsbGJhY2spIHsgdGhpcy5mb3JFYWNoRW50cnlJdGVtQnlUeXBlcyhjYWxsYmFjaywgRklMRV9OQU1FX0RSQUdfRU5UUllfVFlQRSwgRElSRUNUT1JZX05BTUVfRFJBR19FTlRSWV9UWVBFKTsgfVxuXG4gIGZvckVhY2hGaWxlTmFtZURyYWdFbnRyeUl0ZW0oY2FsbGJhY2spIHsgdGhpcy5mb3JFYWNoRW50cnlJdGVtQnlUeXBlcyhjYWxsYmFjaywgRklMRV9OQU1FX0RSQUdfRU5UUllfVFlQRSk7IH1cblxuICBmb3JFYWNoRGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0oY2FsbGJhY2spIHsgdGhpcy5mb3JFYWNoRW50cnlJdGVtQnlUeXBlcyhjYWxsYmFjaywgRElSRUNUT1JZX05BTUVfRFJBR19FTlRSWV9UWVBFKTsgfVxuXG4gIHNvbWVFbnRyeUl0ZW1CeVR5cGVzKGNhbGxiYWNrLCAuLi50eXBlcykge1xuICAgIGNvbnN0IGVudHJ5SXRlbXMgPSB0aGlzLmdldEVudHJ5SXRlbXMoKTtcblxuICAgIHJldHVybiBlbnRyeUl0ZW1zLnNvbWUoKGVudHJ5SXRlbSkgPT4ge1xuICAgICAgY29uc3QgZW50cnlJdGVtVHlwZSA9IGVudHJ5SXRlbS5nZXRUeXBlKCksXG4gICAgICAgICAgdHlwZXNJbmNsdWRlc0VudHJ5SXRlbVR5cGUgPSB0eXBlcy5pbmNsdWRlcyhlbnRyeUl0ZW1UeXBlKTtcblxuICAgICAgaWYgKHR5cGVzSW5jbHVkZXNFbnRyeUl0ZW1UeXBlKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGNhbGxiYWNrKGVudHJ5SXRlbSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZpbmRFbnRyeUl0ZW0oY2FsbGJhY2spIHtcbiAgICBjb25zdCBlbnRyeUl0ZW1zID0gdGhpcy5nZXRFbnRyeUl0ZW1zKCksXG4gICAgICAgICAgZW50cnlJdGVtID0gZW50cnlJdGVtcy5maW5kKGNhbGxiYWNrKSB8fCBudWxsOyAvLy9cblxuICAgIHJldHVybiBlbnRyeUl0ZW07XG4gIH1cblxuICBmaW5kRW50cnlJdGVtQnlUeXBlcyhjYWxsYmFjaywgLi4udHlwZXMpIHtcbiAgICBjb25zdCBlbnRyeUl0ZW1zID0gdGhpcy5nZXRFbnRyeUl0ZW1zKCksXG4gICAgICAgICAgZW50cnlJdGVtID0gZW50cnlJdGVtcy5maW5kKChlbnRyeUl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVudHJ5SXRlbVR5cGUgPSBlbnRyeUl0ZW0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICAgIHR5cGVzSW5jbHVkZXNFbnRyeUl0ZW1UeXBlID0gdHlwZXMuaW5jbHVkZXMoZW50cnlJdGVtVHlwZSk7XG5cbiAgICAgICAgICAgIGlmICh0eXBlc0luY2x1ZGVzRW50cnlJdGVtVHlwZSkge1xuICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBjYWxsYmFjayhlbnRyeUl0ZW0pO1xuXG4gICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7IC8vLztcblxuICAgIHJldHVybiBlbnRyeUl0ZW07XG4gIH1cblxuICBmaW5kRW50cnlJdGVtc0J5VHlwZXMoLi4udHlwZXMpIHtcbiAgICBjb25zdCBlbnRyeUl0ZW1zID0gdGhpcy5nZXRFbnRyeUl0ZW1zKCk7XG5cbiAgICBmaWx0ZXIoZW50cnlJdGVtcywgKGVudHJ5SXRlbSkgPT4ge1xuICAgICAgY29uc3QgZW50cnlJdGVtVHlwZSA9IGVudHJ5SXRlbS5nZXRUeXBlKCksXG4gICAgICAgICAgICB0eXBlc0luY2x1ZGVzRW50cnlJdGVtVHlwZSA9IHR5cGVzLmluY2x1ZGVzKGVudHJ5SXRlbVR5cGUpO1xuXG4gICAgICBpZiAodHlwZXNJbmNsdWRlc0VudHJ5SXRlbVR5cGUpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW50cnlJdGVtcztcbiAgfVxuXG4gIGZpbmRFbnRyeUl0ZW1CeU5hbWVBbmRUeXBlcyhuYW1lLCAuLi50eXBlcykge1xuICAgIGNvbnN0IGVudHJ5SXRlbSA9IHRoaXMuZmluZEVudHJ5SXRlbUJ5VHlwZXMoKGVudHJ5SXRlbSkgPT4ge1xuICAgICAgY29uc3QgZW50cnlJdGVtTmFtZSA9IGVudHJ5SXRlbS5nZXROYW1lKCk7XG5cbiAgICAgIGlmIChlbnRyeUl0ZW1OYW1lID09PSBuYW1lKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0sIC4uLnR5cGVzKSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIGVudHJ5SXRlbTtcbiAgfVxuXG4gIGZpbmREcmFnRW50cnlJdGVtKG5hbWUpIHtcbiAgICBjb25zdCBlbnRyeUl0ZW0gPSB0aGlzLmZpbmRFbnRyeUl0ZW1CeU5hbWVBbmRUeXBlcyhuYW1lLCBGSUxFX05BTUVfRFJBR19FTlRSWV9UWVBFLCBESVJFQ1RPUllfTkFNRV9EUkFHX0VOVFJZX1RZUEUpLFxuICAgICAgICAgIGRyYWdFbnRyeUl0ZW0gPSBlbnRyeUl0ZW07ICAvLy9cblxuICAgIHJldHVybiBkcmFnRW50cnlJdGVtO1xuICB9XG5cbiAgZmluZERyYWdFbnRyeUl0ZW1zKCkge1xuICAgIGNvbnN0IGVudHJ5SXRlbXMgPSB0aGlzLmZpbmRFbnRyeUl0ZW1zQnlUeXBlcyhGSUxFX05BTUVfRFJBR19FTlRSWV9UWVBFLCBESVJFQ1RPUllfTkFNRV9EUkFHX0VOVFJZX1RZUEUpLFxuICAgICAgICAgIGRyYWdFbnRyeUl0ZW1zID0gZW50cnlJdGVtczsgIC8vL1xuXG4gICAgcmV0dXJuIGRyYWdFbnRyeUl0ZW1zO1xuICB9XG5cbiAgZmluZEZpbGVOYW1lRHJhZ0VudHJ5SXRlbShmaWxlTmFtZSkge1xuICAgIGNvbnN0IG5hbWUgPSBmaWxlTmFtZSwgIC8vL1xuICAgICAgICAgIGVudHJ5SXRlbSA9IHRoaXMuZmluZEVudHJ5SXRlbUJ5TmFtZUFuZFR5cGVzKG5hbWUsIEZJTEVfTkFNRV9EUkFHX0VOVFJZX1RZUEUpLFxuICAgICAgICAgIGZpbGVOYW1lRHJhZ0VudHJ5SXRlbSA9IGVudHJ5SXRlbTsgIC8vL1xuXG4gICAgcmV0dXJuIGZpbGVOYW1lRHJhZ0VudHJ5SXRlbTtcbiAgfVxuXG4gIGZpbmREaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbShkaXJlY3RvcnlOYW1lKSB7XG4gICAgY29uc3QgZW50cnlJdGVtID0gdGhpcy5maW5kRW50cnlJdGVtQnlOYW1lQW5kVHlwZXMoZGlyZWN0b3J5TmFtZSwgRElSRUNUT1JZX05BTUVfRFJBR19FTlRSWV9UWVBFKSxcbiAgICAgICAgICBkaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSA9IGVudHJ5SXRlbTsgLy8vXG5cbiAgICByZXR1cm4gZGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW07XG4gIH1cblxuICByZXRyaWV2ZU1hcmtlckVudHJ5SXRlbSgpIHtcbiAgICBjb25zdCB7IG1hcmtlckVudHJ5SXRlbSB9ID0gZ2xvYmFsVGhpcztcblxuICAgIHJldHVybiBtYXJrZXJFbnRyeUl0ZW07XG4gIH1cblxuICByZXRyaWV2ZURyYWdFbnRyeUl0ZW1zKGRyYWdFbnRyeUl0ZW1zID0gW10pIHtcbiAgICB0aGlzLmZvckVhY2hEaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSgoZGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IGRyYWdFbnRyeUl0ZW0gPSBkaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbTsgLy8vXG5cbiAgICAgIGRpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtLnJldHJpZXZlRHJhZ0VudHJ5SXRlbXMoZHJhZ0VudHJ5SXRlbXMpO1xuXG4gICAgICBkcmFnRW50cnlJdGVtcy5wdXNoKGRyYWdFbnRyeUl0ZW0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5mb3JFYWNoRmlsZU5hbWVEcmFnRW50cnlJdGVtKChmaWxlTmFtZURyYWdFbnRyeUl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IGRyYWdFbnRyeUl0ZW0gPSBmaWxlTmFtZURyYWdFbnRyeUl0ZW07ICAvLy9cblxuICAgICAgZHJhZ0VudHJ5SXRlbXMucHVzaChkcmFnRW50cnlJdGVtKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBkcmFnRW50cnlJdGVtcztcbiAgfVxuXG4gIGNvbGxhcHNlKCkge1xuXHQgIHRoaXMuYWRkQ2xhc3MoXCJjb2xsYXBzZWRcIik7XG4gIH1cblxuXHRleHBhbmQoKSB7XG5cdCAgdGhpcy5yZW1vdmVDbGFzcyhcImNvbGxhcHNlZFwiKTtcbiAgfVxuXG4gIGRpZE1vdW50KCkge1xuICAgIGNvbnN0IHRvcG1vc3QgPSB0aGlzLmlzVG9wbW9zdCgpO1xuXG4gICAgaWYgKHRvcG1vc3QpIHtcbiAgICAgIHRoaXMuYWRkQ2xhc3MoXCJ0b3Btb3N0XCIpO1xuICAgIH1cbiAgfVxuXG4gIHdpbGxVbm1vdW50KCkge1xuICAgIC8vL1xuICB9XG5cbiAgcGFyZW50Q29udGV4dCgpIHtcblx0XHRjb25zdCBleHBhbmRFbnRyaWVzTGlzdCA9IHRoaXMuZXhwYW5kLmJpbmQodGhpcyksICAvLy9cbiAgICAgICAgICBjb2xsYXBzZUVudHJpZXNMaXN0ID0gdGhpcy5jb2xsYXBzZS5iaW5kKHRoaXMpLCAgLy8vXG4gICAgICAgICAgaXNFbnRyaWVzTGlzdENvbGxhcHNlZCA9IHRoaXMuaXNDb2xsYXBzZWQuYmluZCh0aGlzKSwgLy8vXG4gICAgICAgICAgaXNFbXB0eSA9IHRoaXMuaXNFbXB0eS5iaW5kKHRoaXMpLFxuICAgICAgICAgIGFkZE1hcmtlciA9IHRoaXMuYWRkTWFya2VyLmJpbmQodGhpcyksXG4gICAgICAgICAgc2VsZWN0UGF0aCA9IHRoaXMuc2VsZWN0UGF0aC5iaW5kKHRoaXMpLFxuICAgICAgICAgIGFkZEZpbGVQYXRoID0gdGhpcy5hZGRGaWxlUGF0aC5iaW5kKHRoaXMpLFxuICAgICAgICAgIHJlbW92ZU1hcmtlciA9IHRoaXMucmVtb3ZlTWFya2VyLmJpbmQodGhpcyksXG4gICAgICAgICAgcmVtb3ZlRmlsZVBhdGggPSB0aGlzLnJlbW92ZUZpbGVQYXRoLmJpbmQodGhpcyksXG4gICAgICAgICAgcmVtb3ZlQWxsUGF0aHMgPSB0aGlzLnJlbW92ZUFsbFBhdGhzLmJpbmQodGhpcyksXG4gICAgICAgICAgZGVzZWxlY3RBbGxQYXRocyA9IHRoaXMuZGVzZWxlY3RBbGxQYXRocy5iaW5kKHRoaXMpLFxuICAgICAgICAgIGFkZERpcmVjdG9yeVBhdGggPSB0aGlzLmFkZERpcmVjdG9yeVBhdGguYmluZCh0aGlzKSxcbiAgICAgICAgICByZW1vdmVEaXJlY3RvcnlQYXRoID0gdGhpcy5yZW1vdmVEaXJlY3RvcnlQYXRoLmJpbmQodGhpcyksXG4gICAgICAgICAgZm9yRWFjaERyYWdFbnRyeUl0ZW0gPSB0aGlzLmZvckVhY2hEcmFnRW50cnlJdGVtLmJpbmQodGhpcyksXG4gICAgICAgICAgcmV0cmlldmVEcmFnRW50cnlJdGVtcyA9IHRoaXMucmV0cmlldmVEcmFnRW50cnlJdGVtcy5iaW5kKHRoaXMpLFxuICAgICAgICAgIHJldHJpZXZlTWFya2VyRW50cnlJdGVtID0gdGhpcy5yZXRyaWV2ZU1hcmtlckVudHJ5SXRlbS5iaW5kKHRoaXMpO1xuXG5cdFx0cmV0dXJuICh7XG4gICAgICBleHBhbmRFbnRyaWVzTGlzdCxcbiAgICAgIGNvbGxhcHNlRW50cmllc0xpc3QsXG4gICAgICBpc0VudHJpZXNMaXN0Q29sbGFwc2VkLFxuICAgICAgaXNFbXB0eSxcbiAgICAgIGFkZE1hcmtlcixcbiAgICAgIHNlbGVjdFBhdGgsXG5cdFx0XHRhZGRGaWxlUGF0aCxcbiAgICAgIHJlbW92ZU1hcmtlcixcbiAgICAgIHJlbW92ZUZpbGVQYXRoLFxuICAgICAgcmVtb3ZlQWxsUGF0aHMsXG4gICAgICBkZXNlbGVjdEFsbFBhdGhzLFxuICAgICAgYWRkRGlyZWN0b3J5UGF0aCxcbiAgICAgIHJlbW92ZURpcmVjdG9yeVBhdGgsXG4gICAgICBmb3JFYWNoRHJhZ0VudHJ5SXRlbSxcbiAgICAgIHJldHJpZXZlRHJhZ0VudHJ5SXRlbXMsXG4gICAgICByZXRyaWV2ZU1hcmtlckVudHJ5SXRlbVxuXHRcdH0pO1xuXHR9XG5cblx0c3RhdGljIHRhZ05hbWUgPSBcInVsXCI7XG5cbiAgc3RhdGljIGlnbm9yZWRQcm9wZXJ0aWVzID0gW1xuICAgIFwidG9wbW9zdFwiLFxuICAgIFwiZXhwbG9yZXJcIlxuICBdO1xuXG4gIHN0YXRpYyBkZWZhdWx0UHJvcGVydGllcyA9IHtcbiAgICBjbGFzc05hbWU6IFwiZW50cmllc1wiXG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhTdHlsZShFbnRyaWVzTGlzdClgXG5cbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgcGFkZGluZy1sZWZ0OiAke2VudHJpZXNMaXN0UGFkZGluZ0xlZnR9O1xuICBcbiAgLnRvcG1vc3Qge1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgfVxuICBcbiAgLmNvbGxhcHNlZCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAgICAgXG5gO1xuIl0sIm5hbWVzIjpbImZpbHRlciIsImFycmF5VXRpbGl0aWVzIiwidG9wbW9zdERpcmVjdG9yeU5hbWVGcm9tUGF0aCIsInBhdGhVdGlsaXRpZXMiLCJwYXRoV2l0aG91dFRvcG1vc3REaXJlY3RvcnlOYW1lRnJvbVBhdGgiLCJtYXJrZXJFbnRyeUl0ZW0iLCJPYmplY3QiLCJhc3NpZ24iLCJnbG9iYWxUaGlzIiwiRW50cmllc0xpc3QiLCJpc1RvcG1vc3QiLCJ0b3Btb3N0IiwicHJvcGVydGllcyIsImdldEV4cGxvcmVyIiwiZXhwbG9yZXIiLCJnZXRFbnRyeUl0ZW1zIiwiY2hpbGRFbnRyeUl0ZW1FbGVtZW50cyIsImdldENoaWxkRWxlbWVudHMiLCJlbnRyeUl0ZW1zIiwiZ2V0RW50cnlJdGVtc0xlbmd0aCIsImVudHJ5SXRlbXNMZW5ndGgiLCJsZW5ndGgiLCJpc0NvbGxhcHNlZCIsImNvbGxhcHNlZCIsImhhc0NsYXNzIiwiaXNFbXB0eSIsImVtcHR5IiwiYWRkTWFya2VyIiwibWFya2VyRW50cnlJdGVtUGF0aCIsImRyYWdFbnRyeUl0ZW1UeXBlIiwidG9wbW9zdERpcmVjdG9yeU5hbWUiLCJtYXJrZXJFbnRyeUl0ZW1OYW1lIiwiYWRkTWFya2VyRW50cnlJdGVtIiwidG9wbW9zdERpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtIiwiZmluZERpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtIiwibWFya2VyRW50cnlJdGVtUGF0aFdpdGhvdXRUb3Btb3N0RGlyZWN0b3J5TmFtZSIsInJlbW92ZU1hcmtlciIsInJlbW92ZU1hcmtlckVudHJ5SXRlbSIsInNlbGVjdFBhdGgiLCJwYXRoIiwibmFtZSIsImRyYWdFbnRyeUl0ZW0iLCJmaW5kRHJhZ0VudHJ5SXRlbSIsInNlbGVjdCIsImZpbGVQYXRoV2l0aG91dFRvcG1vc3REaXJlY3RvcnlOYW1lIiwiZXhwYW5kIiwiYWRkRmlsZVBhdGgiLCJmaWxlUGF0aCIsImZpbGVOYW1lRHJhZ0VudHJ5SXRlbSIsImZpbGVOYW1lIiwiZmluZEZpbGVOYW1lRHJhZ0VudHJ5SXRlbSIsImNyZWF0ZUZpbGVOYW1lRHJhZ0VudHJ5SXRlbSIsImFkZEVudHJ5SXRlbSIsImNyZWF0ZURpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtIiwicmVtb3ZlRmlsZVBhdGgiLCJyZW1vdmVFbXB0eVBhcmVudERpcmVjdG9yaWVzIiwicmVtb3ZlRW50cnlJdGVtIiwidG9wbW9zdERpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtRW1wdHkiLCJyZW1vdmVBbGxQYXRocyIsInJlbW92ZUVudHJ5SXRlbXMiLCJkZXNlbGVjdEFsbFBhdGhzIiwiZHJhZ0VudHJ5SXRlbXMiLCJyZXRyaWV2ZURyYWdFbnRyeUl0ZW1zIiwiZm9yRWFjaCIsImRlc2VsZWN0IiwiYWRkRGlyZWN0b3J5UGF0aCIsImRpcmVjdG9yeVBhdGgiLCJkaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSIsImRpcmVjdG9yeU5hbWUiLCJjb2xsYXBzZSIsImRpcmVjdG9yeVBhdGhXaXRob3V0VG9wbW9zdERpcmVjdG9yeU5hbWUiLCJyZW1vdmVEaXJlY3RvcnlQYXRoIiwiZW50cnlJdGVtIiwibmV4dEVudHJ5SXRlbSIsInByZXZpb3VzRW50cnlJdGVtIiwiZmluZEVudHJ5SXRlbSIsIm5leHRFbnRyeUJlZm9yZUVudHJ5SXRlbSIsImlzQmVmb3JlIiwiYXBwZW5kIiwiaW5zZXJ0QmVmb3JlIiwiZXhwbG9yZXJNb3VudGVkIiwiaXNNb3VudGVkIiwiZW50cnlJdGVtRGVzY2VuZGFudEVsZW1lbnRzIiwiZ2V0RGVzY2VuZGFudEVsZW1lbnRzIiwiZW50cnlJdGVtRWxlbWVudHMiLCJyZXZlcnNlIiwiZW50cnlJdGVtRWxlbWVudCIsImRpZE1vdW50Iiwid2lsbFVubW91bnQiLCJyZW1vdmUiLCJ0eXBlIiwiRklMRV9OQU1FX0RSQUdfRU5UUllfVFlQRSIsIkZpbGVOYW1lTWFya2VyRW50cnlJdGVtIiwiZ2V0RmlsZU5hbWVNYXJrZXJFbnRyeUl0ZW0iLCJmaWxlTmFtZU1hcmtlckVudHJ5SXRlbSIsIkRJUkVDVE9SWV9OQU1FX0RSQUdfRU5UUllfVFlQRSIsIkRpcmVjdG9yeU5hbWVNYXJrZXJFbnRyeUl0ZW0iLCJnZXREaXJlY3RvcnlOYW1lTWFya2VyRW50cnlJdGVtIiwiZGlyZWN0b3J5TmFtZU1hcmtlckVudHJ5SXRlbSIsInJldHJpZXZlTWFya2VyRW50cnlJdGVtIiwiRmlsZU5hbWVEcmFnRW50cnlJdGVtIiwiZ2V0RmlsZU5hbWVEcmFnRW50cnlJdGVtIiwiRGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0iLCJnZXREaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSIsImlzRmlsZU5hbWVEcmFnRW50cnlJdGVtUHJlc2VudCIsImZpbGVOYW1lRHJhZ0VudHJ5SXRlbVByZXNlbnQiLCJpc0RpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtUHJlc2VudCIsImRpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtUHJlc2VudCIsImZvckVhY2hFbnRyeUl0ZW1CeVR5cGVzIiwiY2FsbGJhY2siLCJ0eXBlcyIsImVudHJ5SXRlbVR5cGUiLCJnZXRUeXBlIiwidHlwZXNJbmNsdWRlc0VudHJ5SXRlbVR5cGUiLCJpbmNsdWRlcyIsImZvckVhY2hEcmFnRW50cnlJdGVtIiwiZm9yRWFjaEZpbGVOYW1lRHJhZ0VudHJ5SXRlbSIsImZvckVhY2hEaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSIsInNvbWVFbnRyeUl0ZW1CeVR5cGVzIiwic29tZSIsInJlc3VsdCIsImZpbmQiLCJmaW5kRW50cnlJdGVtQnlUeXBlcyIsImZpbmRFbnRyeUl0ZW1zQnlUeXBlcyIsImZpbmRFbnRyeUl0ZW1CeU5hbWVBbmRUeXBlcyIsImVudHJ5SXRlbU5hbWUiLCJnZXROYW1lIiwiZmluZERyYWdFbnRyeUl0ZW1zIiwicHVzaCIsImFkZENsYXNzIiwicmVtb3ZlQ2xhc3MiLCJwYXJlbnRDb250ZXh0IiwiZXhwYW5kRW50cmllc0xpc3QiLCJiaW5kIiwiY29sbGFwc2VFbnRyaWVzTGlzdCIsImlzRW50cmllc0xpc3RDb2xsYXBzZWQiLCJFbGVtZW50IiwidGFnTmFtZSIsImlnbm9yZWRQcm9wZXJ0aWVzIiwiZGVmYXVsdFByb3BlcnRpZXMiLCJjbGFzc05hbWUiLCJ3aXRoU3R5bGUiLCJlbnRyaWVzTGlzdFBhZGRpbmdMZWZ0Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkF1bUJBOzs7ZUFBQTs7O2tFQXJtQnNCO29CQUVFO3lCQUNzQjtzQkFFUDswQkFDbUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTFFLElBQU0sQUFBRUEsU0FBV0MseUJBQWMsQ0FBekJELFFBQ0FFLCtCQUEwRUMsd0JBQWEsQ0FBdkZELDhCQUE4QkUsMENBQTRDRCx3QkFBYSxDQUF6REM7QUFFdEMsSUFBTUMsa0JBQWtCLElBQUk7QUFFNUJDLE9BQU9DLE1BQU0sQ0FBQ0MsWUFBWTtJQUN4QkgsaUJBQUFBO0FBQ0Y7QUFFQSxJQUFBLEFBQU1JLDRCQW9sQkgsQUFwbEJIO2NBQU1BOzhCQUFBQTthQUFBQTs4QkFBQUE7OztpQkFBQUE7O1lBQ0pDLEtBQUFBO21CQUFBQSxTQUFBQSxZQUFZO2dCQUNWLElBQU0sQUFBRUMsVUFBWSxJQUFJLENBQUNDLFVBQVUsQ0FBM0JEO2dCQUVSLE9BQU9BO1lBQ1Q7OztZQUVBRSxLQUFBQTttQkFBQUEsU0FBQUEsY0FBYztnQkFDZCxJQUFNLEFBQUVDLFdBQWEsSUFBSSxDQUFDRixVQUFVLENBQTVCRTtnQkFFUixPQUFPQTtZQUNSOzs7WUFFQUMsS0FBQUE7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
|
|
802
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saXN0L2VudHJpZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB3aXRoU3R5bGUgZnJvbSBcImVhc3ktd2l0aC1zdHlsZVwiOyAgLy8vXG5cbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwiZWFzeVwiO1xuaW1wb3J0IHsgcGF0aFV0aWxpdGllcywgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCB7IGVudHJpZXNMaXN0UGFkZGluZ0xlZnQgfSBmcm9tIFwiLi4vc3R5bGVzXCI7XG5pbXBvcnQgeyBGSUxFX05BTUVfRFJBR19FTlRSWV9UWVBFLCBESVJFQ1RPUllfTkFNRV9EUkFHX0VOVFJZX1RZUEUgfSBmcm9tIFwiLi4vZW50cnlUeXBlc1wiO1xuXG5jb25zdCB7IGZpbHRlciB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IHRvcG1vc3REaXJlY3RvcnlOYW1lRnJvbVBhdGgsIHBhdGhXaXRob3V0VG9wbW9zdERpcmVjdG9yeU5hbWVGcm9tUGF0aCB9ID0gcGF0aFV0aWxpdGllcztcblxuY29uc3QgbWFya2VyRW50cnlJdGVtID0gbnVsbDtcblxuT2JqZWN0LmFzc2lnbihnbG9iYWxUaGlzLCB7XG4gIG1hcmtlckVudHJ5SXRlbVxufSk7XG5cbmNsYXNzIEVudHJpZXNMaXN0IGV4dGVuZHMgRWxlbWVudCB7XG4gIGlzVG9wbW9zdCgpIHtcbiAgICBjb25zdCB7IHRvcG1vc3QgfSA9IHRoaXMucHJvcGVydGllcztcblxuICAgIHJldHVybiB0b3Btb3N0O1xuICB9XG5cbiAgZ2V0RXhwbG9yZXIoKSB7XG5cdFx0Y29uc3QgeyBleHBsb3JlciB9ID0gdGhpcy5wcm9wZXJ0aWVzO1xuXG5cdFx0cmV0dXJuIGV4cGxvcmVyO1xuXHR9XG5cblx0Z2V0RW50cnlJdGVtcygpIHtcblx0XHRjb25zdCBjaGlsZEVudHJ5SXRlbUVsZW1lbnRzID0gdGhpcy5nZXRDaGlsZEVsZW1lbnRzKFwibGkuZW50cnlcIiksXG5cdFx0XHRcdFx0ZW50cnlJdGVtcyA9IGNoaWxkRW50cnlJdGVtRWxlbWVudHM7ICAvLy9cblxuXHRcdHJldHVybiBlbnRyeUl0ZW1zO1xuXHR9XG5cblx0Z2V0RW50cnlJdGVtc0xlbmd0aCgpIHtcbiAgICBjb25zdCBlbnRyeUl0ZW1zID0gdGhpcy5nZXRFbnRyeUl0ZW1zKCksXG4gICAgICAgICAgZW50cnlJdGVtc0xlbmd0aCA9IGVudHJ5SXRlbXMubGVuZ3RoO1xuXG4gICAgcmV0dXJuIGVudHJ5SXRlbXNMZW5ndGg7XG4gIH1cblxuICBpc0NvbGxhcHNlZCgpIHtcbiAgICBjb25zdCBjb2xsYXBzZWQgPSB0aGlzLmhhc0NsYXNzKFwiY29sbGFwc2VkXCIpO1xuXG4gICAgcmV0dXJuIGNvbGxhcHNlZDtcbiAgfVxuXG4gIGlzRW1wdHkoKSB7XG4gICAgY29uc3QgZW50cnlJdGVtcyA9IHRoaXMuZ2V0RW50cnlJdGVtcygpLFxuICAgICAgICAgIGVudHJ5SXRlbXNMZW5ndGggPSBlbnRyeUl0ZW1zLmxlbmd0aCxcbiAgICAgICAgICBlbXB0eSA9IChlbnRyeUl0ZW1zTGVuZ3RoID09PSAwKTtcblxuICAgIHJldHVybiBlbXB0eTtcbiAgfVxuXG4gIGFkZE1hcmtlcihtYXJrZXJFbnRyeUl0ZW1QYXRoLCBkcmFnRW50cnlJdGVtVHlwZSkge1xuICAgIGNvbnN0IHRvcG1vc3REaXJlY3RvcnlOYW1lID0gdG9wbW9zdERpcmVjdG9yeU5hbWVGcm9tUGF0aChtYXJrZXJFbnRyeUl0ZW1QYXRoKTtcblxuICAgIGlmICh0b3Btb3N0RGlyZWN0b3J5TmFtZSA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgbWFya2VyRW50cnlJdGVtTmFtZSA9IG1hcmtlckVudHJ5SXRlbVBhdGg7ICAvLy9cblxuICAgICAgdGhpcy5hZGRNYXJrZXJFbnRyeUl0ZW0obWFya2VyRW50cnlJdGVtTmFtZSwgZHJhZ0VudHJ5SXRlbVR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0b3Btb3N0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0gPSB0aGlzLmZpbmREaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSh0b3Btb3N0RGlyZWN0b3J5TmFtZSksXG4gICAgICAgICAgICBtYXJrZXJFbnRyeUl0ZW1QYXRoV2l0aG91dFRvcG1vc3REaXJlY3RvcnlOYW1lID0gcGF0aFdpdGhvdXRUb3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoKG1hcmtlckVudHJ5SXRlbVBhdGgpO1xuXG4gICAgICBtYXJrZXJFbnRyeUl0ZW1QYXRoID0gbWFya2VyRW50cnlJdGVtUGF0aFdpdGhvdXRUb3Btb3N0RGlyZWN0b3J5TmFtZTsgLy8vXG5cbiAgICAgIHRvcG1vc3REaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbS5hZGRNYXJrZXIobWFya2VyRW50cnlJdGVtUGF0aCwgZHJhZ0VudHJ5SXRlbVR5cGUpO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZU1hcmtlcigpIHtcbiAgICB0aGlzLnJlbW92ZU1hcmtlckVudHJ5SXRlbSgpO1xuICB9XG5cbiAgc2VsZWN0UGF0aChwYXRoKSB7XG4gICAgY29uc3QgdG9wbW9zdERpcmVjdG9yeU5hbWUgPSB0b3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoKHBhdGgpO1xuXG4gICAgaWYgKHRvcG1vc3REaXJlY3RvcnlOYW1lID09PSBudWxsKSB7XG4gICAgICBjb25zdCBuYW1lID0gcGF0aCwgIC8vL1xuICAgICAgICAgICAgZHJhZ0VudHJ5SXRlbSA9IHRoaXMuZmluZERyYWdFbnRyeUl0ZW0obmFtZSk7XG5cbiAgICAgIGlmIChkcmFnRW50cnlJdGVtICE9PSBudWxsKSB7XG4gICAgICAgIGRyYWdFbnRyeUl0ZW0uc2VsZWN0KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCB0b3Btb3N0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0gPSB0aGlzLmZpbmREaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSh0b3Btb3N0RGlyZWN0b3J5TmFtZSk7XG5cbiAgICAgIGlmICh0b3Btb3N0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0gIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGhXaXRob3V0VG9wbW9zdERpcmVjdG9yeU5hbWUgPSBwYXRoV2l0aG91dFRvcG1vc3REaXJlY3RvcnlOYW1lRnJvbVBhdGgocGF0aCk7XG5cbiAgICAgICAgcGF0aCA9IGZpbGVQYXRoV2l0aG91dFRvcG1vc3REaXJlY3RvcnlOYW1lOyAvLy9cblxuICAgICAgICB0b3Btb3N0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0uZXhwYW5kKCk7XG5cbiAgICAgICAgdG9wbW9zdERpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtLnNlbGVjdFBhdGgocGF0aCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYWRkRmlsZVBhdGgoZmlsZVBhdGgpIHtcblx0XHRsZXQgZmlsZU5hbWVEcmFnRW50cnlJdGVtO1xuXG4gICAgY29uc3QgdG9wbW9zdERpcmVjdG9yeU5hbWUgPSB0b3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoKGZpbGVQYXRoKTtcblxuICAgIGlmICh0b3Btb3N0RGlyZWN0b3J5TmFtZSA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgZmlsZU5hbWUgPSBmaWxlUGF0aDsgIC8vL1xuXG4gICAgICBmaWxlTmFtZURyYWdFbnRyeUl0ZW0gPSB0aGlzLmZpbmRGaWxlTmFtZURyYWdFbnRyeUl0ZW0oZmlsZU5hbWUpO1xuXG4gICAgICBpZiAoZmlsZU5hbWVEcmFnRW50cnlJdGVtID09PSBudWxsKSB7XG4gICAgICAgIGZpbGVOYW1lRHJhZ0VudHJ5SXRlbSA9IHRoaXMuY3JlYXRlRmlsZU5hbWVEcmFnRW50cnlJdGVtKGZpbGVOYW1lKTtcblxuICAgICAgICB0aGlzLmFkZEVudHJ5SXRlbShmaWxlTmFtZURyYWdFbnRyeUl0ZW0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgdG9wbW9zdERpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtID0gdGhpcy5maW5kRGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0odG9wbW9zdERpcmVjdG9yeU5hbWUpO1xuXG4gICAgICBpZiAodG9wbW9zdERpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtID09PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGNvbGxhcHNlZCA9IHRydWU7XG5cbiAgICAgICAgdG9wbW9zdERpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtID0gdGhpcy5jcmVhdGVEaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSh0b3Btb3N0RGlyZWN0b3J5TmFtZSwgY29sbGFwc2VkKTtcblxuICAgICAgICB0aGlzLmFkZEVudHJ5SXRlbSh0b3Btb3N0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmaWxlUGF0aFdpdGhvdXRUb3Btb3N0RGlyZWN0b3J5TmFtZSA9IHBhdGhXaXRob3V0VG9wbW9zdERpcmVjdG9yeU5hbWVGcm9tUGF0aChmaWxlUGF0aCk7XG5cbiAgICAgIGZpbGVQYXRoID0gZmlsZVBhdGhXaXRob3V0VG9wbW9zdERpcmVjdG9yeU5hbWU7IC8vL1xuXG4gICAgICBmaWxlTmFtZURyYWdFbnRyeUl0ZW0gPSB0b3Btb3N0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0uYWRkRmlsZVBhdGgoZmlsZVBhdGgpO1xuICAgIH1cblxuXHRcdHJldHVybiBmaWxlTmFtZURyYWdFbnRyeUl0ZW07XG5cdH1cblxuICByZW1vdmVGaWxlUGF0aChmaWxlUGF0aCwgcmVtb3ZlRW1wdHlQYXJlbnREaXJlY3RvcmllcyA9IGZhbHNlKSB7XG4gICAgY29uc3QgdG9wbW9zdERpcmVjdG9yeU5hbWUgPSB0b3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoKGZpbGVQYXRoKTtcblxuICAgIGlmICh0b3Btb3N0RGlyZWN0b3J5TmFtZSA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgZmlsZU5hbWUgPSBmaWxlUGF0aCwgIC8vL1xuICAgICAgICAgICAgZmlsZU5hbWVEcmFnRW50cnlJdGVtID0gdGhpcy5maW5kRmlsZU5hbWVEcmFnRW50cnlJdGVtKGZpbGVOYW1lKTtcblxuICAgICAgaWYgKGZpbGVOYW1lRHJhZ0VudHJ5SXRlbSAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLnJlbW92ZUVudHJ5SXRlbShmaWxlTmFtZURyYWdFbnRyeUl0ZW0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0b3Btb3N0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0gPSB0aGlzLmZpbmREaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSh0b3Btb3N0RGlyZWN0b3J5TmFtZSk7XG5cbiAgICAgIGlmICh0b3Btb3N0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0gIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGhXaXRob3V0VG9wbW9zdERpcmVjdG9yeU5hbWUgPSBwYXRoV2l0aG91dFRvcG1vc3REaXJlY3RvcnlOYW1lRnJvbVBhdGgoZmlsZVBhdGgpO1xuXG4gICAgICAgIGZpbGVQYXRoID0gZmlsZVBhdGhXaXRob3V0VG9wbW9zdERpcmVjdG9yeU5hbWU7IC8vL1xuXG4gICAgICAgIHRvcG1vc3REaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbS5yZW1vdmVGaWxlUGF0aChmaWxlUGF0aCwgcmVtb3ZlRW1wdHlQYXJlbnREaXJlY3Rvcmllcyk7XG5cbiAgICAgICAgaWYgKHJlbW92ZUVtcHR5UGFyZW50RGlyZWN0b3JpZXMpIHtcbiAgICAgICAgICBjb25zdCB0b3Btb3N0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW1FbXB0eSA9IHRvcG1vc3REaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbS5pc0VtcHR5KCk7XG5cbiAgICAgICAgICBpZiAodG9wbW9zdERpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtRW1wdHkpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlRW50cnlJdGVtKHRvcG1vc3REaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlQWxsUGF0aHMoKSB7XG4gICAgdGhpcy5yZW1vdmVFbnRyeUl0ZW1zKCk7XG4gIH1cblxuICBkZXNlbGVjdEFsbFBhdGhzKCkge1xuICAgIGNvbnN0IGRyYWdFbnRyeUl0ZW1zID0gdGhpcy5yZXRyaWV2ZURyYWdFbnRyeUl0ZW1zKCk7XG5cbiAgICBkcmFnRW50cnlJdGVtcy5mb3JFYWNoKChkcmFnRW50cnlJdGVtKSA9PiB7XG4gICAgICBkcmFnRW50cnlJdGVtLmRlc2VsZWN0KCk7XG4gICAgfSk7XG4gIH1cblxuICBlZGl0U2VsZWN0ZWRQYXRoKCkge1xuICAgIGNvbnN0IGRyYWdFbnRyeUl0ZW1zID0gdGhpcy5yZXRyaWV2ZURyYWdFbnRyeUl0ZW1zKCk7XG5cbiAgICBkcmFnRW50cnlJdGVtcy5zb21lKChkcmFnRW50cnlJdGVtKSA9PiB7XG4gICAgICBjb25zdCBzZWxlY3RlZCA9IGRyYWdFbnRyeUl0ZW0uaXNTZWxlY3RlZCgpO1xuXG4gICAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgZHJhZ0VudHJ5SXRlbS5lZGl0KCk7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhZGREaXJlY3RvcnlQYXRoKGRpcmVjdG9yeVBhdGgsIGNvbGxhcHNlZCA9IHRydWUpIHtcbiAgICBsZXQgZGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW07XG5cbiAgICBjb25zdCB0b3Btb3N0RGlyZWN0b3J5TmFtZSA9IHRvcG1vc3REaXJlY3RvcnlOYW1lRnJvbVBhdGgoZGlyZWN0b3J5UGF0aCk7XG5cbiAgICBpZiAodG9wbW9zdERpcmVjdG9yeU5hbWUgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGRpcmVjdG9yeU5hbWUgPSBkaXJlY3RvcnlQYXRoOyAgLy8vXG5cbiAgICAgIGRpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtID0gdGhpcy5maW5kRGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0oZGlyZWN0b3J5TmFtZSk7XG5cbiAgICAgIGlmIChkaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSA9PT0gbnVsbCkge1xuICAgICAgICBkaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSA9IHRoaXMuY3JlYXRlRGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0oZGlyZWN0b3J5TmFtZSwgY29sbGFwc2VkKTtcblxuICAgICAgICB0aGlzLmFkZEVudHJ5SXRlbShkaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb2xsYXBzZWQgP1xuICAgICAgICAgIGRpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtLmNvbGxhcHNlKCkgOlxuICAgICAgICAgICAgZGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0uZXhwYW5kKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCB0b3Btb3N0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0gPSB0aGlzLmZpbmREaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSh0b3Btb3N0RGlyZWN0b3J5TmFtZSk7XG5cbiAgICAgIGlmICh0b3Btb3N0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0gPT09IG51bGwpIHtcbiAgICAgICAgdG9wbW9zdERpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtID0gdGhpcy5jcmVhdGVEaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSh0b3Btb3N0RGlyZWN0b3J5TmFtZSwgY29sbGFwc2VkKTtcblxuICAgICAgICB0aGlzLmFkZEVudHJ5SXRlbSh0b3Btb3N0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkaXJlY3RvcnlQYXRoV2l0aG91dFRvcG1vc3REaXJlY3RvcnlOYW1lID0gcGF0aFdpdGhvdXRUb3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoKGRpcmVjdG9yeVBhdGgpO1xuXG4gICAgICBkaXJlY3RvcnlQYXRoID0gZGlyZWN0b3J5UGF0aFdpdGhvdXRUb3Btb3N0RGlyZWN0b3J5TmFtZTsgLy8vXG5cbiAgICAgIGRpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtID0gdG9wbW9zdERpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtLmFkZERpcmVjdG9yeVBhdGgoZGlyZWN0b3J5UGF0aCwgY29sbGFwc2VkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW07XG4gIH1cblxuICByZW1vdmVEaXJlY3RvcnlQYXRoKGRpcmVjdG9yeVBhdGgsIHJlbW92ZUVtcHR5UGFyZW50RGlyZWN0b3JpZXMgPSBmYWxzZSkge1xuICAgIGNvbnN0IHRvcG1vc3REaXJlY3RvcnlOYW1lID0gdG9wbW9zdERpcmVjdG9yeU5hbWVGcm9tUGF0aChkaXJlY3RvcnlQYXRoKTtcblxuICAgIGlmICh0b3Btb3N0RGlyZWN0b3J5TmFtZSA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgZGlyZWN0b3J5TmFtZSA9IGRpcmVjdG9yeVBhdGgsICAvLy9cbiAgICAgICAgICAgIGRpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtID0gdGhpcy5maW5kRGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0oZGlyZWN0b3J5TmFtZSk7XG5cbiAgICAgIGlmIChkaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLnJlbW92ZUVudHJ5SXRlbShkaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRvcG1vc3REaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSA9IHRoaXMuZmluZERpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtKHRvcG1vc3REaXJlY3RvcnlOYW1lKTtcblxuICAgICAgaWYgKHRvcG1vc3REaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBkaXJlY3RvcnlQYXRoV2l0aG91dFRvcG1vc3REaXJlY3RvcnlOYW1lID0gcGF0aFdpdGhvdXRUb3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoKGRpcmVjdG9yeVBhdGgpO1xuXG4gICAgICAgIGRpcmVjdG9yeVBhdGggPSBkaXJlY3RvcnlQYXRoV2l0aG91dFRvcG1vc3REaXJlY3RvcnlOYW1lOyAvLy9cblxuICAgICAgICB0b3Btb3N0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0ucmVtb3ZlRGlyZWN0b3J5UGF0aChkaXJlY3RvcnlQYXRoLCByZW1vdmVFbXB0eVBhcmVudERpcmVjdG9yaWVzKTtcblxuICAgICAgICBpZiAocmVtb3ZlRW1wdHlQYXJlbnREaXJlY3Rvcmllcykge1xuICAgICAgICAgIGNvbnN0IHRvcG1vc3REaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbUVtcHR5ID0gdG9wbW9zdERpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtLmlzRW1wdHkoKTtcblxuICAgICAgICAgIGlmICh0b3Btb3N0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW1FbXB0eSkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVFbnRyeUl0ZW0odG9wbW9zdERpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhZGRFbnRyeUl0ZW0oZW50cnlJdGVtKSB7XG4gICAgY29uc3QgZXhwbG9yZXIgPSB0aGlzLmdldEV4cGxvcmVyKCksXG4gICAgICAgICAgbmV4dEVudHJ5SXRlbSA9IGVudHJ5SXRlbSwgIC8vL1xuICAgICAgICAgIHByZXZpb3VzRW50cnlJdGVtID0gdGhpcy5maW5kRW50cnlJdGVtKChlbnRyeUl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRFbnRyeUJlZm9yZUVudHJ5SXRlbSA9IG5leHRFbnRyeUl0ZW0uaXNCZWZvcmUoZW50cnlJdGVtKTtcblxuICAgICAgICAgICAgaWYgKG5leHRFbnRyeUJlZm9yZUVudHJ5SXRlbSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIGlmIChwcmV2aW91c0VudHJ5SXRlbSA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5hcHBlbmQoZW50cnlJdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZW50cnlJdGVtLmluc2VydEJlZm9yZShwcmV2aW91c0VudHJ5SXRlbSk7XG4gICAgfVxuXG4gICAgY29uc3QgZXhwbG9yZXJNb3VudGVkID0gZXhwbG9yZXIuaXNNb3VudGVkKCk7XG5cbiAgICBpZiAoZXhwbG9yZXJNb3VudGVkKSB7XG4gICAgICBjb25zdCBlbnRyeUl0ZW1EZXNjZW5kYW50RWxlbWVudHMgPSBlbnRyeUl0ZW0uZ2V0RGVzY2VuZGFudEVsZW1lbnRzKCksXG4gICAgICAgICAgICBlbnRyeUl0ZW1FbGVtZW50cyA9IFtcbiAgICAgICAgICAgICAgZW50cnlJdGVtLFxuICAgICAgICAgICAgICAuLi5lbnRyeUl0ZW1EZXNjZW5kYW50RWxlbWVudHNcbiAgICAgICAgICAgIF07XG5cbiAgICAgIGVudHJ5SXRlbUVsZW1lbnRzLnJldmVyc2UoKTtcblxuICAgICAgZW50cnlJdGVtRWxlbWVudHMuZm9yRWFjaCgoZW50cnlJdGVtRWxlbWVudCkgPT4gKGVudHJ5SXRlbUVsZW1lbnQuZGlkTW91bnQgJiYgZW50cnlJdGVtRWxlbWVudC5kaWRNb3VudCgpKSk7ICAvLy9cbiAgICB9XG4gIH1cblxuICByZW1vdmVFbnRyeUl0ZW0oZW50cnlJdGVtKSB7XG4gICAgY29uc3QgZXhwbG9yZXIgPSB0aGlzLmdldEV4cGxvcmVyKCksXG4gICAgICAgICAgZXhwbG9yZXJNb3VudGVkID0gZXhwbG9yZXIuaXNNb3VudGVkKCk7XG5cbiAgICBpZiAoZXhwbG9yZXJNb3VudGVkKSB7XG4gICAgICBjb25zdCBlbnRyeUl0ZW1EZXNjZW5kYW50RWxlbWVudHMgPSBlbnRyeUl0ZW0uZ2V0RGVzY2VuZGFudEVsZW1lbnRzKCksXG4gICAgICAgICAgICBlbnRyeUl0ZW1FbGVtZW50cyA9IFtcbiAgICAgICAgICAgICAgZW50cnlJdGVtLFxuICAgICAgICAgICAgICAuLi5lbnRyeUl0ZW1EZXNjZW5kYW50RWxlbWVudHNcbiAgICAgICAgICAgIF07XG5cbiAgICAgIGVudHJ5SXRlbUVsZW1lbnRzLmZvckVhY2goKGVudHJ5SXRlbUVsZW1lbnQpID0+IChlbnRyeUl0ZW1FbGVtZW50LndpbGxVbm1vdW50ICYmIGVudHJ5SXRlbUVsZW1lbnQud2lsbFVubW91bnQoKSkpOyAgLy8vXG4gICAgfVxuXG4gICAgZW50cnlJdGVtLnJlbW92ZSgpO1xuICB9XG5cbiAgcmVtb3ZlRW50cnlJdGVtcygpIHtcbiAgICBjb25zdCBlbnRyeUl0ZW1zID0gdGhpcy5nZXRFbnRyeUl0ZW1zKCk7XG5cbiAgICBlbnRyeUl0ZW1zLmZvckVhY2goKGVudHJ5SXRlbSkgPT4gdGhpcy5yZW1vdmVFbnRyeUl0ZW0oZW50cnlJdGVtKSk7XG4gIH1cblxuICBhZGRNYXJrZXJFbnRyeUl0ZW0obWFya2VyRW50cnlJdGVtTmFtZSwgZHJhZ0VudHJ5SXRlbVR5cGUpIHtcbiAgICBsZXQgbWFya2VyRW50cnlJdGVtO1xuXG4gICAgY29uc3QgbmFtZSA9IG1hcmtlckVudHJ5SXRlbU5hbWUsIC8vL1xuICAgICAgICAgIHR5cGUgPSBkcmFnRW50cnlJdGVtVHlwZTsgIC8vL1xuXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIEZJTEVfTkFNRV9EUkFHX0VOVFJZX1RZUEUgOiB7XG4gICAgICAgIGNvbnN0IGV4cGxvcmVyID0gdGhpcy5nZXRFeHBsb3JlcigpLFxuICAgICAgICAgICAgICBGaWxlTmFtZU1hcmtlckVudHJ5SXRlbSA9IGV4cGxvcmVyLmdldEZpbGVOYW1lTWFya2VyRW50cnlJdGVtKCksXG4gICAgICAgICAgICAgIGZpbGVOYW1lTWFya2VyRW50cnlJdGVtID1cblxuICAgICAgICAgICAgICAgIDxGaWxlTmFtZU1hcmtlckVudHJ5SXRlbSBuYW1lPXtuYW1lfSBleHBsb3Jlcj17ZXhwbG9yZXJ9IC8+XG5cbiAgICAgICAgICAgICAgO1xuXG4gICAgICAgIG1hcmtlckVudHJ5SXRlbSA9IGZpbGVOYW1lTWFya2VyRW50cnlJdGVtOyAgLy8vXG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgRElSRUNUT1JZX05BTUVfRFJBR19FTlRSWV9UWVBFIDoge1xuICAgICAgICBjb25zdCBleHBsb3JlciA9IHRoaXMuZ2V0RXhwbG9yZXIoKSxcbiAgICAgICAgICAgICAgRGlyZWN0b3J5TmFtZU1hcmtlckVudHJ5SXRlbSA9IGV4cGxvcmVyLmdldERpcmVjdG9yeU5hbWVNYXJrZXJFbnRyeUl0ZW0oKSxcbiAgICAgICAgICAgICAgZGlyZWN0b3J5TmFtZU1hcmtlckVudHJ5SXRlbSA9XG5cbiAgICAgICAgICAgICAgICA8RGlyZWN0b3J5TmFtZU1hcmtlckVudHJ5SXRlbSBuYW1lPXtuYW1lfSBleHBsb3Jlcj17ZXhwbG9yZXJ9IC8+XG5cbiAgICAgICAgICAgICAgO1xuXG4gICAgICAgIG1hcmtlckVudHJ5SXRlbSA9IGRpcmVjdG9yeU5hbWVNYXJrZXJFbnRyeUl0ZW07IC8vL1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGVudHJ5SXRlbSA9IG1hcmtlckVudHJ5SXRlbTsgLy8vXG5cbiAgICB0aGlzLmFkZEVudHJ5SXRlbShlbnRyeUl0ZW0pO1xuXG4gICAgT2JqZWN0LmFzc2lnbihnbG9iYWxUaGlzLCB7XG4gICAgICBtYXJrZXJFbnRyeUl0ZW1cbiAgICB9KTtcbiAgfVxuXG4gIHJlbW92ZU1hcmtlckVudHJ5SXRlbSgpIHtcbiAgICBsZXQgbWFya2VyRW50cnlJdGVtID0gdGhpcy5yZXRyaWV2ZU1hcmtlckVudHJ5SXRlbSgpO1xuXG4gICAgbWFya2VyRW50cnlJdGVtLnJlbW92ZSgpO1xuXG4gICAgbWFya2VyRW50cnlJdGVtID0gbnVsbDtcblxuICAgIE9iamVjdC5hc3NpZ24oZ2xvYmFsVGhpcywge1xuICAgICAgbWFya2VyRW50cnlJdGVtXG4gICAgfSk7XG4gIH1cblxuICBjcmVhdGVGaWxlTmFtZURyYWdFbnRyeUl0ZW0oZmlsZU5hbWUpIHtcblx0XHRjb25zdCBuYW1lID0gZmlsZU5hbWUsXHQvLy9cblx0XHRcdFx0XHRleHBsb3JlciA9IHRoaXMuZ2V0RXhwbG9yZXIoKSxcblx0XHRcdFx0XHRGaWxlTmFtZURyYWdFbnRyeUl0ZW0gPSBleHBsb3Jlci5nZXRGaWxlTmFtZURyYWdFbnRyeUl0ZW0oKSxcblx0XHRcdFx0XHRmaWxlTmFtZURyYWdFbnRyeUl0ZW0gPVxuXG5cdFx0XHRcdFx0XHQ8RmlsZU5hbWVEcmFnRW50cnlJdGVtIG5hbWU9e25hbWV9IGV4cGxvcmVyPXtleHBsb3Jlcn0gLz5cblxuXHRcdFx0XHRcdDtcblxuXHRcdHJldHVybiBmaWxlTmFtZURyYWdFbnRyeUl0ZW07XG5cdH1cblxuXHRjcmVhdGVEaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbShkaXJlY3RvcnlOYW1lLCBjb2xsYXBzZWQpIHtcblx0XHRjb25zdCBuYW1lID0gZGlyZWN0b3J5TmFtZSxcdC8vL1xuXHRcdFx0XHRcdGV4cGxvcmVyID0gdGhpcy5nZXRFeHBsb3JlcigpLFxuXHRcdFx0XHRcdERpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtID0gZXhwbG9yZXIuZ2V0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0oKSxcblx0XHRcdFx0XHRkaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSA9XG5cblx0XHRcdFx0XHRcdDxEaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSBuYW1lPXtuYW1lfSBjb2xsYXBzZWQ9e2NvbGxhcHNlZH0gZXhwbG9yZXI9e2V4cGxvcmVyfSAvPlxuXG5cdFx0XHRcdFx0O1xuXG5cdFx0cmV0dXJuIGRpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtO1xuXHR9XG5cblx0aXNGaWxlTmFtZURyYWdFbnRyeUl0ZW1QcmVzZW50KGZpbGVOYW1lKSB7XG5cdFx0Y29uc3QgZmlsZU5hbWVEcmFnRW50cnlJdGVtID0gdGhpcy5maW5kRmlsZU5hbWVEcmFnRW50cnlJdGVtKGZpbGVOYW1lKSxcblx0XHRcdFx0XHRmaWxlTmFtZURyYWdFbnRyeUl0ZW1QcmVzZW50ID0gKGZpbGVOYW1lRHJhZ0VudHJ5SXRlbSAhPT0gbnVsbCk7XG5cblx0XHRyZXR1cm4gZmlsZU5hbWVEcmFnRW50cnlJdGVtUHJlc2VudDtcblx0fVxuXG5cdGlzRGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW1QcmVzZW50KGRpcmVjdG9yeU5hbWUpIHtcblx0XHRjb25zdCBkaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSA9IHRoaXMuZmluZERpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtKGRpcmVjdG9yeU5hbWUpLFxuXHRcdFx0XHRcdGRpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtUHJlc2VudCA9IChkaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSAhPT0gbnVsbCk7XG5cblx0XHRyZXR1cm4gZGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW1QcmVzZW50O1xuXHR9XG5cbiAgZm9yRWFjaEVudHJ5SXRlbUJ5VHlwZXMoY2FsbGJhY2ssIC4uLnR5cGVzKSB7XG4gICAgY29uc3QgZW50cnlJdGVtcyA9IHRoaXMuZ2V0RW50cnlJdGVtcygpO1xuXG4gICAgZW50cnlJdGVtcy5mb3JFYWNoKChlbnRyeUl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IGVudHJ5SXRlbVR5cGUgPSBlbnRyeUl0ZW0uZ2V0VHlwZSgpLFxuICAgICAgICAgIHR5cGVzSW5jbHVkZXNFbnRyeUl0ZW1UeXBlID0gdHlwZXMuaW5jbHVkZXMoZW50cnlJdGVtVHlwZSk7XG5cbiAgICAgIGlmICh0eXBlc0luY2x1ZGVzRW50cnlJdGVtVHlwZSkge1xuICAgICAgICBjYWxsYmFjayhlbnRyeUl0ZW0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZm9yRWFjaERyYWdFbnRyeUl0ZW0oY2FsbGJhY2spIHsgdGhpcy5mb3JFYWNoRW50cnlJdGVtQnlUeXBlcyhjYWxsYmFjaywgRklMRV9OQU1FX0RSQUdfRU5UUllfVFlQRSwgRElSRUNUT1JZX05BTUVfRFJBR19FTlRSWV9UWVBFKTsgfVxuXG4gIGZvckVhY2hGaWxlTmFtZURyYWdFbnRyeUl0ZW0oY2FsbGJhY2spIHsgdGhpcy5mb3JFYWNoRW50cnlJdGVtQnlUeXBlcyhjYWxsYmFjaywgRklMRV9OQU1FX0RSQUdfRU5UUllfVFlQRSk7IH1cblxuICBmb3JFYWNoRGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0oY2FsbGJhY2spIHsgdGhpcy5mb3JFYWNoRW50cnlJdGVtQnlUeXBlcyhjYWxsYmFjaywgRElSRUNUT1JZX05BTUVfRFJBR19FTlRSWV9UWVBFKTsgfVxuXG4gIHNvbWVFbnRyeUl0ZW1CeVR5cGVzKGNhbGxiYWNrLCAuLi50eXBlcykge1xuICAgIGNvbnN0IGVudHJ5SXRlbXMgPSB0aGlzLmdldEVudHJ5SXRlbXMoKTtcblxuICAgIHJldHVybiBlbnRyeUl0ZW1zLnNvbWUoKGVudHJ5SXRlbSkgPT4ge1xuICAgICAgY29uc3QgZW50cnlJdGVtVHlwZSA9IGVudHJ5SXRlbS5nZXRUeXBlKCksXG4gICAgICAgICAgdHlwZXNJbmNsdWRlc0VudHJ5SXRlbVR5cGUgPSB0eXBlcy5pbmNsdWRlcyhlbnRyeUl0ZW1UeXBlKTtcblxuICAgICAgaWYgKHR5cGVzSW5jbHVkZXNFbnRyeUl0ZW1UeXBlKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGNhbGxiYWNrKGVudHJ5SXRlbSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZpbmRFbnRyeUl0ZW0oY2FsbGJhY2spIHtcbiAgICBjb25zdCBlbnRyeUl0ZW1zID0gdGhpcy5nZXRFbnRyeUl0ZW1zKCksXG4gICAgICAgICAgZW50cnlJdGVtID0gZW50cnlJdGVtcy5maW5kKGNhbGxiYWNrKSB8fCBudWxsOyAvLy9cblxuICAgIHJldHVybiBlbnRyeUl0ZW07XG4gIH1cblxuICBmaW5kRW50cnlJdGVtQnlUeXBlcyhjYWxsYmFjaywgLi4udHlwZXMpIHtcbiAgICBjb25zdCBlbnRyeUl0ZW1zID0gdGhpcy5nZXRFbnRyeUl0ZW1zKCksXG4gICAgICAgICAgZW50cnlJdGVtID0gZW50cnlJdGVtcy5maW5kKChlbnRyeUl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVudHJ5SXRlbVR5cGUgPSBlbnRyeUl0ZW0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICAgIHR5cGVzSW5jbHVkZXNFbnRyeUl0ZW1UeXBlID0gdHlwZXMuaW5jbHVkZXMoZW50cnlJdGVtVHlwZSk7XG5cbiAgICAgICAgICAgIGlmICh0eXBlc0luY2x1ZGVzRW50cnlJdGVtVHlwZSkge1xuICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBjYWxsYmFjayhlbnRyeUl0ZW0pO1xuXG4gICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7IC8vLztcblxuICAgIHJldHVybiBlbnRyeUl0ZW07XG4gIH1cblxuICBmaW5kRW50cnlJdGVtc0J5VHlwZXMoLi4udHlwZXMpIHtcbiAgICBjb25zdCBlbnRyeUl0ZW1zID0gdGhpcy5nZXRFbnRyeUl0ZW1zKCk7XG5cbiAgICBmaWx0ZXIoZW50cnlJdGVtcywgKGVudHJ5SXRlbSkgPT4ge1xuICAgICAgY29uc3QgZW50cnlJdGVtVHlwZSA9IGVudHJ5SXRlbS5nZXRUeXBlKCksXG4gICAgICAgICAgICB0eXBlc0luY2x1ZGVzRW50cnlJdGVtVHlwZSA9IHR5cGVzLmluY2x1ZGVzKGVudHJ5SXRlbVR5cGUpO1xuXG4gICAgICBpZiAodHlwZXNJbmNsdWRlc0VudHJ5SXRlbVR5cGUpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW50cnlJdGVtcztcbiAgfVxuXG4gIGZpbmRFbnRyeUl0ZW1CeU5hbWVBbmRUeXBlcyhuYW1lLCAuLi50eXBlcykge1xuICAgIGNvbnN0IGVudHJ5SXRlbSA9IHRoaXMuZmluZEVudHJ5SXRlbUJ5VHlwZXMoKGVudHJ5SXRlbSkgPT4ge1xuICAgICAgY29uc3QgZW50cnlJdGVtTmFtZSA9IGVudHJ5SXRlbS5nZXROYW1lKCk7XG5cbiAgICAgIGlmIChlbnRyeUl0ZW1OYW1lID09PSBuYW1lKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0sIC4uLnR5cGVzKSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIGVudHJ5SXRlbTtcbiAgfVxuXG4gIGZpbmREcmFnRW50cnlJdGVtKG5hbWUpIHtcbiAgICBjb25zdCBlbnRyeUl0ZW0gPSB0aGlzLmZpbmRFbnRyeUl0ZW1CeU5hbWVBbmRUeXBlcyhuYW1lLCBGSUxFX05BTUVfRFJBR19FTlRSWV9UWVBFLCBESVJFQ1RPUllfTkFNRV9EUkFHX0VOVFJZX1RZUEUpLFxuICAgICAgICAgIGRyYWdFbnRyeUl0ZW0gPSBlbnRyeUl0ZW07ICAvLy9cblxuICAgIHJldHVybiBkcmFnRW50cnlJdGVtO1xuICB9XG5cbiAgZmluZERyYWdFbnRyeUl0ZW1zKCkge1xuICAgIGNvbnN0IGVudHJ5SXRlbXMgPSB0aGlzLmZpbmRFbnRyeUl0ZW1zQnlUeXBlcyhGSUxFX05BTUVfRFJBR19FTlRSWV9UWVBFLCBESVJFQ1RPUllfTkFNRV9EUkFHX0VOVFJZX1RZUEUpLFxuICAgICAgICAgIGRyYWdFbnRyeUl0ZW1zID0gZW50cnlJdGVtczsgIC8vL1xuXG4gICAgcmV0dXJuIGRyYWdFbnRyeUl0ZW1zO1xuICB9XG5cbiAgZmluZEZpbGVOYW1lRHJhZ0VudHJ5SXRlbShmaWxlTmFtZSkge1xuICAgIGNvbnN0IG5hbWUgPSBmaWxlTmFtZSwgIC8vL1xuICAgICAgICAgIGVudHJ5SXRlbSA9IHRoaXMuZmluZEVudHJ5SXRlbUJ5TmFtZUFuZFR5cGVzKG5hbWUsIEZJTEVfTkFNRV9EUkFHX0VOVFJZX1RZUEUpLFxuICAgICAgICAgIGZpbGVOYW1lRHJhZ0VudHJ5SXRlbSA9IGVudHJ5SXRlbTsgIC8vL1xuXG4gICAgcmV0dXJuIGZpbGVOYW1lRHJhZ0VudHJ5SXRlbTtcbiAgfVxuXG4gIGZpbmREaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbShkaXJlY3RvcnlOYW1lKSB7XG4gICAgY29uc3QgZW50cnlJdGVtID0gdGhpcy5maW5kRW50cnlJdGVtQnlOYW1lQW5kVHlwZXMoZGlyZWN0b3J5TmFtZSwgRElSRUNUT1JZX05BTUVfRFJBR19FTlRSWV9UWVBFKSxcbiAgICAgICAgICBkaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSA9IGVudHJ5SXRlbTsgLy8vXG5cbiAgICByZXR1cm4gZGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW07XG4gIH1cblxuICByZXRyaWV2ZU1hcmtlckVudHJ5SXRlbSgpIHtcbiAgICBjb25zdCB7IG1hcmtlckVudHJ5SXRlbSB9ID0gZ2xvYmFsVGhpcztcblxuICAgIHJldHVybiBtYXJrZXJFbnRyeUl0ZW07XG4gIH1cblxuICByZXRyaWV2ZURyYWdFbnRyeUl0ZW1zKGRyYWdFbnRyeUl0ZW1zID0gW10pIHtcbiAgICB0aGlzLmZvckVhY2hEaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSgoZGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IGRyYWdFbnRyeUl0ZW0gPSBkaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbTsgLy8vXG5cbiAgICAgIGRpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtLnJldHJpZXZlRHJhZ0VudHJ5SXRlbXMoZHJhZ0VudHJ5SXRlbXMpO1xuXG4gICAgICBkcmFnRW50cnlJdGVtcy5wdXNoKGRyYWdFbnRyeUl0ZW0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5mb3JFYWNoRmlsZU5hbWVEcmFnRW50cnlJdGVtKChmaWxlTmFtZURyYWdFbnRyeUl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IGRyYWdFbnRyeUl0ZW0gPSBmaWxlTmFtZURyYWdFbnRyeUl0ZW07ICAvLy9cblxuICAgICAgZHJhZ0VudHJ5SXRlbXMucHVzaChkcmFnRW50cnlJdGVtKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBkcmFnRW50cnlJdGVtcztcbiAgfVxuXG4gIGNvbGxhcHNlKCkge1xuXHQgIHRoaXMuYWRkQ2xhc3MoXCJjb2xsYXBzZWRcIik7XG4gIH1cblxuXHRleHBhbmQoKSB7XG5cdCAgdGhpcy5yZW1vdmVDbGFzcyhcImNvbGxhcHNlZFwiKTtcbiAgfVxuXG4gIGRpZE1vdW50KCkge1xuICAgIGNvbnN0IHRvcG1vc3QgPSB0aGlzLmlzVG9wbW9zdCgpO1xuXG4gICAgaWYgKHRvcG1vc3QpIHtcbiAgICAgIHRoaXMuYWRkQ2xhc3MoXCJ0b3Btb3N0XCIpO1xuICAgIH1cbiAgfVxuXG4gIHdpbGxVbm1vdW50KCkge1xuICAgIC8vL1xuICB9XG5cbiAgcGFyZW50Q29udGV4dCgpIHtcblx0XHRjb25zdCBleHBhbmRFbnRyaWVzTGlzdCA9IHRoaXMuZXhwYW5kLmJpbmQodGhpcyksICAvLy9cbiAgICAgICAgICBjb2xsYXBzZUVudHJpZXNMaXN0ID0gdGhpcy5jb2xsYXBzZS5iaW5kKHRoaXMpLCAgLy8vXG4gICAgICAgICAgaXNFbnRyaWVzTGlzdENvbGxhcHNlZCA9IHRoaXMuaXNDb2xsYXBzZWQuYmluZCh0aGlzKSwgLy8vXG4gICAgICAgICAgaXNFbXB0eSA9IHRoaXMuaXNFbXB0eS5iaW5kKHRoaXMpLFxuICAgICAgICAgIGFkZE1hcmtlciA9IHRoaXMuYWRkTWFya2VyLmJpbmQodGhpcyksXG4gICAgICAgICAgc2VsZWN0UGF0aCA9IHRoaXMuc2VsZWN0UGF0aC5iaW5kKHRoaXMpLFxuICAgICAgICAgIGFkZEZpbGVQYXRoID0gdGhpcy5hZGRGaWxlUGF0aC5iaW5kKHRoaXMpLFxuICAgICAgICAgIHJlbW92ZU1hcmtlciA9IHRoaXMucmVtb3ZlTWFya2VyLmJpbmQodGhpcyksXG4gICAgICAgICAgcmVtb3ZlRmlsZVBhdGggPSB0aGlzLnJlbW92ZUZpbGVQYXRoLmJpbmQodGhpcyksXG4gICAgICAgICAgcmVtb3ZlQWxsUGF0aHMgPSB0aGlzLnJlbW92ZUFsbFBhdGhzLmJpbmQodGhpcyksXG4gICAgICAgICAgZGVzZWxlY3RBbGxQYXRocyA9IHRoaXMuZGVzZWxlY3RBbGxQYXRocy5iaW5kKHRoaXMpLFxuICAgICAgICAgIGFkZERpcmVjdG9yeVBhdGggPSB0aGlzLmFkZERpcmVjdG9yeVBhdGguYmluZCh0aGlzKSxcbiAgICAgICAgICBlZGl0U2VsZWN0ZWRQYXRoID0gdGhpcy5lZGl0U2VsZWN0ZWRQYXRoLmJpbmQodGhpcyksXG4gICAgICAgICAgcmVtb3ZlRGlyZWN0b3J5UGF0aCA9IHRoaXMucmVtb3ZlRGlyZWN0b3J5UGF0aC5iaW5kKHRoaXMpLFxuICAgICAgICAgIGZvckVhY2hEcmFnRW50cnlJdGVtID0gdGhpcy5mb3JFYWNoRHJhZ0VudHJ5SXRlbS5iaW5kKHRoaXMpLFxuICAgICAgICAgIHJldHJpZXZlRHJhZ0VudHJ5SXRlbXMgPSB0aGlzLnJldHJpZXZlRHJhZ0VudHJ5SXRlbXMuYmluZCh0aGlzKSxcbiAgICAgICAgICByZXRyaWV2ZU1hcmtlckVudHJ5SXRlbSA9IHRoaXMucmV0cmlldmVNYXJrZXJFbnRyeUl0ZW0uYmluZCh0aGlzKTtcblxuXHRcdHJldHVybiAoe1xuICAgICAgZXhwYW5kRW50cmllc0xpc3QsXG4gICAgICBjb2xsYXBzZUVudHJpZXNMaXN0LFxuICAgICAgaXNFbnRyaWVzTGlzdENvbGxhcHNlZCxcbiAgICAgIGlzRW1wdHksXG4gICAgICBhZGRNYXJrZXIsXG4gICAgICBzZWxlY3RQYXRoLFxuXHRcdFx0YWRkRmlsZVBhdGgsXG4gICAgICByZW1vdmVNYXJrZXIsXG4gICAgICByZW1vdmVGaWxlUGF0aCxcbiAgICAgIHJlbW92ZUFsbFBhdGhzLFxuICAgICAgZGVzZWxlY3RBbGxQYXRocyxcbiAgICAgIGFkZERpcmVjdG9yeVBhdGgsXG4gICAgICBlZGl0U2VsZWN0ZWRQYXRoLFxuICAgICAgcmVtb3ZlRGlyZWN0b3J5UGF0aCxcbiAgICAgIGZvckVhY2hEcmFnRW50cnlJdGVtLFxuICAgICAgcmV0cmlldmVEcmFnRW50cnlJdGVtcyxcbiAgICAgIHJldHJpZXZlTWFya2VyRW50cnlJdGVtXG5cdFx0fSk7XG5cdH1cblxuXHRzdGF0aWMgdGFnTmFtZSA9IFwidWxcIjtcblxuICBzdGF0aWMgaWdub3JlZFByb3BlcnRpZXMgPSBbXG4gICAgXCJ0b3Btb3N0XCIsXG4gICAgXCJleHBsb3JlclwiXG4gIF07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wZXJ0aWVzID0ge1xuICAgIGNsYXNzTmFtZTogXCJlbnRyaWVzXCJcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgd2l0aFN0eWxlKEVudHJpZXNMaXN0KWBcblxuICBsaXN0LXN0eWxlOiBub25lO1xuICBwYWRkaW5nLWxlZnQ6ICR7ZW50cmllc0xpc3RQYWRkaW5nTGVmdH07XG4gIFxuICAudG9wbW9zdCB7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICB9XG4gIFxuICAuY29sbGFwc2VkIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gICAgICBcbmA7XG4iXSwibmFtZXMiOlsiZmlsdGVyIiwiYXJyYXlVdGlsaXRpZXMiLCJ0b3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoIiwicGF0aFV0aWxpdGllcyIsInBhdGhXaXRob3V0VG9wbW9zdERpcmVjdG9yeU5hbWVGcm9tUGF0aCIsIm1hcmtlckVudHJ5SXRlbSIsIk9iamVjdCIsImFzc2lnbiIsImdsb2JhbFRoaXMiLCJFbnRyaWVzTGlzdCIsImlzVG9wbW9zdCIsInRvcG1vc3QiLCJwcm9wZXJ0aWVzIiwiZ2V0RXhwbG9yZXIiLCJleHBsb3JlciIsImdldEVudHJ5SXRlbXMiLCJjaGlsZEVudHJ5SXRlbUVsZW1lbnRzIiwiZ2V0Q2hpbGRFbGVtZW50cyIsImVudHJ5SXRlbXMiLCJnZXRFbnRyeUl0ZW1zTGVuZ3RoIiwiZW50cnlJdGVtc0xlbmd0aCIsImxlbmd0aCIsImlzQ29sbGFwc2VkIiwiY29sbGFwc2VkIiwiaGFzQ2xhc3MiLCJpc0VtcHR5IiwiZW1wdHkiLCJhZGRNYXJrZXIiLCJtYXJrZXJFbnRyeUl0ZW1QYXRoIiwiZHJhZ0VudHJ5SXRlbVR5cGUiLCJ0b3Btb3N0RGlyZWN0b3J5TmFtZSIsIm1hcmtlckVudHJ5SXRlbU5hbWUiLCJhZGRNYXJrZXJFbnRyeUl0ZW0iLCJ0b3Btb3N0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0iLCJmaW5kRGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0iLCJtYXJrZXJFbnRyeUl0ZW1QYXRoV2l0aG91dFRvcG1vc3REaXJlY3RvcnlOYW1lIiwicmVtb3ZlTWFya2VyIiwicmVtb3ZlTWFya2VyRW50cnlJdGVtIiwic2VsZWN0UGF0aCIsInBhdGgiLCJuYW1lIiwiZHJhZ0VudHJ5SXRlbSIsImZpbmREcmFnRW50cnlJdGVtIiwic2VsZWN0IiwiZmlsZVBhdGhXaXRob3V0VG9wbW9zdERpcmVjdG9yeU5hbWUiLCJleHBhbmQiLCJhZGRGaWxlUGF0aCIsImZpbGVQYXRoIiwiZmlsZU5hbWVEcmFnRW50cnlJdGVtIiwiZmlsZU5hbWUiLCJmaW5kRmlsZU5hbWVEcmFnRW50cnlJdGVtIiwiY3JlYXRlRmlsZU5hbWVEcmFnRW50cnlJdGVtIiwiYWRkRW50cnlJdGVtIiwiY3JlYXRlRGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW0iLCJyZW1vdmVGaWxlUGF0aCIsInJlbW92ZUVtcHR5UGFyZW50RGlyZWN0b3JpZXMiLCJyZW1vdmVFbnRyeUl0ZW0iLCJ0b3Btb3N0RGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW1FbXB0eSIsInJlbW92ZUFsbFBhdGhzIiwicmVtb3ZlRW50cnlJdGVtcyIsImRlc2VsZWN0QWxsUGF0aHMiLCJkcmFnRW50cnlJdGVtcyIsInJldHJpZXZlRHJhZ0VudHJ5SXRlbXMiLCJmb3JFYWNoIiwiZGVzZWxlY3QiLCJlZGl0U2VsZWN0ZWRQYXRoIiwic29tZSIsInNlbGVjdGVkIiwiaXNTZWxlY3RlZCIsImVkaXQiLCJhZGREaXJlY3RvcnlQYXRoIiwiZGlyZWN0b3J5UGF0aCIsImRpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtIiwiZGlyZWN0b3J5TmFtZSIsImNvbGxhcHNlIiwiZGlyZWN0b3J5UGF0aFdpdGhvdXRUb3Btb3N0RGlyZWN0b3J5TmFtZSIsInJlbW92ZURpcmVjdG9yeVBhdGgiLCJlbnRyeUl0ZW0iLCJuZXh0RW50cnlJdGVtIiwicHJldmlvdXNFbnRyeUl0ZW0iLCJmaW5kRW50cnlJdGVtIiwibmV4dEVudHJ5QmVmb3JlRW50cnlJdGVtIiwiaXNCZWZvcmUiLCJhcHBlbmQiLCJpbnNlcnRCZWZvcmUiLCJleHBsb3Jlck1vdW50ZWQiLCJpc01vdW50ZWQiLCJlbnRyeUl0ZW1EZXNjZW5kYW50RWxlbWVudHMiLCJnZXREZXNjZW5kYW50RWxlbWVudHMiLCJlbnRyeUl0ZW1FbGVtZW50cyIsInJldmVyc2UiLCJlbnRyeUl0ZW1FbGVtZW50IiwiZGlkTW91bnQiLCJ3aWxsVW5tb3VudCIsInJlbW92ZSIsInR5cGUiLCJGSUxFX05BTUVfRFJBR19FTlRSWV9UWVBFIiwiRmlsZU5hbWVNYXJrZXJFbnRyeUl0ZW0iLCJnZXRGaWxlTmFtZU1hcmtlckVudHJ5SXRlbSIsImZpbGVOYW1lTWFya2VyRW50cnlJdGVtIiwiRElSRUNUT1JZX05BTUVfRFJBR19FTlRSWV9UWVBFIiwiRGlyZWN0b3J5TmFtZU1hcmtlckVudHJ5SXRlbSIsImdldERpcmVjdG9yeU5hbWVNYXJrZXJFbnRyeUl0ZW0iLCJkaXJlY3RvcnlOYW1lTWFya2VyRW50cnlJdGVtIiwicmV0cmlldmVNYXJrZXJFbnRyeUl0ZW0iLCJGaWxlTmFtZURyYWdFbnRyeUl0ZW0iLCJnZXRGaWxlTmFtZURyYWdFbnRyeUl0ZW0iLCJEaXJlY3RvcnlOYW1lRHJhZ0VudHJ5SXRlbSIsImdldERpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtIiwiaXNGaWxlTmFtZURyYWdFbnRyeUl0ZW1QcmVzZW50IiwiZmlsZU5hbWVEcmFnRW50cnlJdGVtUHJlc2VudCIsImlzRGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW1QcmVzZW50IiwiZGlyZWN0b3J5TmFtZURyYWdFbnRyeUl0ZW1QcmVzZW50IiwiZm9yRWFjaEVudHJ5SXRlbUJ5VHlwZXMiLCJjYWxsYmFjayIsInR5cGVzIiwiZW50cnlJdGVtVHlwZSIsImdldFR5cGUiLCJ0eXBlc0luY2x1ZGVzRW50cnlJdGVtVHlwZSIsImluY2x1ZGVzIiwiZm9yRWFjaERyYWdFbnRyeUl0ZW0iLCJmb3JFYWNoRmlsZU5hbWVEcmFnRW50cnlJdGVtIiwiZm9yRWFjaERpcmVjdG9yeU5hbWVEcmFnRW50cnlJdGVtIiwic29tZUVudHJ5SXRlbUJ5VHlwZXMiLCJyZXN1bHQiLCJmaW5kIiwiZmluZEVudHJ5SXRlbUJ5VHlwZXMiLCJmaW5kRW50cnlJdGVtc0J5VHlwZXMiLCJmaW5kRW50cnlJdGVtQnlOYW1lQW5kVHlwZXMiLCJlbnRyeUl0ZW1OYW1lIiwiZ2V0TmFtZSIsImZpbmREcmFnRW50cnlJdGVtcyIsInB1c2giLCJhZGRDbGFzcyIsInJlbW92ZUNsYXNzIiwicGFyZW50Q29udGV4dCIsImV4cGFuZEVudHJpZXNMaXN0IiwiYmluZCIsImNvbGxhcHNlRW50cmllc0xpc3QiLCJpc0VudHJpZXNMaXN0Q29sbGFwc2VkIiwiRWxlbWVudCIsInRhZ05hbWUiLCJpZ25vcmVkUHJvcGVydGllcyIsImRlZmF1bHRQcm9wZXJ0aWVzIiwiY2xhc3NOYW1lIiwid2l0aFN0eWxlIiwiZW50cmllc0xpc3RQYWRkaW5nTGVmdCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBdW5CQTs7O2VBQUE7OztrRUFybkJzQjtvQkFFRTt5QkFDc0I7c0JBRVA7MEJBQ21DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUUxRSxJQUFNLEFBQUVBLFNBQVdDLHlCQUFjLENBQXpCRCxRQUNBRSwrQkFBMEVDLHdCQUFhLENBQXZGRCw4QkFBOEJFLDBDQUE0Q0Qsd0JBQWEsQ0FBekRDO0FBRXRDLElBQU1DLGtCQUFrQixJQUFJO0FBRTVCQyxPQUFPQyxNQUFNLENBQUNDLFlBQVk7SUFDeEJILGlCQUFBQTtBQUNGO0FBRUEsSUFBQSxBQUFNSSw0QkFvbUJILEFBcG1CSDtjQUFNQTs4QkFBQUE7YUFBQUE7OEJBQUFBOzs7aUJBQUFBOztZQUNKQyxLQUFBQTttQkFBQUEsU0FBQUEsWUFBWTtnQkFDVixJQUFNLEFBQUVDLFVBQVksSUFBSSxDQUFDQyxVQUFVLENBQTNCRDtnQkFFUixPQUFPQTtZQUNUOzs7WUFFQUUsS0FBQUE7bUJBQUFBLFNBQUFBLGNBQWM7Z0JBQ2QsSUFBTSxBQUFFQyxXQUFhLElBQUksQ0FBQ0YsVUFBVSxDQUE1QkU7Z0JBRVIsT0FBT0E7WUFDUjs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSxnQkFBZ0I7Z0JBQ2YsSUFBTUMseUJBQXlCLElBQUksQ0FBQ0MsZ0JBQWdCLENBQUMsYUFDbERDLGFBQWFGLHdCQUF5QixHQUFHO2dCQUU1QyxPQUFPRTtZQUNSOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBLHNCQUFzQjtnQkFDbkIsSUFBTUQsYUFBYSxJQUFJLENBQUNILGFBQWEsSUFDL0JLLG1CQUFtQkYsV0FBV0csTUFBTTtnQkFFMUMsT0FBT0Q7WUFDVDs7O1lBRUFFLEtBQUFBO21CQUFBQSxTQUFBQSxjQUFjO2dCQUNaLElBQU1DLFlBQVksSUFBSSxDQUFDQyxRQUFRLENBQUM7Z0JBRWhDLE9BQU9EO1lBQ1Q7OztZQUVBRSxLQUFBQTttQkFBQUEsU0FBQUEsVUFBVTtnQkFDUixJQUFNUCxhQUFhLElBQUksQ0FBQ0gsYUFBYSxJQUMvQkssbUJBQW1CRixXQUFXRyxNQUFNLEVBQ3BDSyxRQUFTTixxQkFBcUI7Z0JBRXBDLE9BQU9NO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsVUFBVUMsbUJBQW1CLEVBQUVDLGlCQUFpQixFQUFFO2dCQUNoRCxJQUFNQyx1QkFBdUI1Qiw2QkFBNkIwQjtnQkFFMUQsSUFBSUUseUJBQXlCLElBQUksRUFBRTtvQkFDakMsSUFBTUMsc0JBQXNCSCxxQkFBc0IsR0FBRztvQkFFckQsSUFBSSxDQUFDSSxrQkFBa0IsQ0FBQ0QscUJBQXFCRjtnQkFDL0MsT0FBTztvQkFDTCxJQUFNSSxvQ0FBb0MsSUFBSSxDQUFDQyw4QkFBOEIsQ0FBQ0osdUJBQ3hFSyxpREFBaUQvQix3Q0FBd0N3QjtvQkFFL0ZBLHNCQUFzQk8sZ0RBQWdELEdBQUc7b0JBRXpFRixrQ0FBa0NOLFNBQVMsQ0FBQ0MscUJBQXFCQztnQkFDbkUsQ0FBQztZQUNIOzs7WUFFQU8sS0FBQUE7bUJBQUFBLFNBQUFBLGVBQWU7Z0JBQ2IsSUFBSSxDQUFDQyxxQkFBcUI7WUFDNUI7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsV0FBV0MsSUFBSSxFQUFFO2dCQUNmLElBQU1ULHVCQUF1QjVCLDZCQUE2QnFDO2dCQUUxRCxJQUFJVCx5QkFBeUIsSUFBSSxFQUFFO29CQUNqQyxJQUFNVSxPQUFPRCxNQUNQRSxnQkFBZ0IsSUFBSSxDQUFDQyxpQkFBaUIsQ0FBQ0Y7b0JBRTdDLElBQUlDLGtCQUFrQixJQUFJLEVBQUU7d0JBQzFCQSxjQUFjRSxNQUFNO29CQUN0QixDQUFDO2dCQUNILE9BQU87b0JBQ0wsSUFBSVYsb0NBQW9DLElBQUksQ0FBQ0MsOEJBQThCLENBQUNKO29CQUU1RSxJQUFJRyxzQ0FBc0MsSUFBSSxFQUFFO3dCQUM5QyxJQUFNVyxzQ0FBc0N4Qyx3Q0FBd0NtQzt3QkFFcEZBLE9BQU9LLHFDQUFxQyxHQUFHO3dCQUUvQ1gsa0NBQWtDWSxNQUFNO3dCQUV4Q1osa0NBQWtDSyxVQUFVLENBQUNDO29CQUMvQyxDQUFDO2dCQUNILENBQUM7WUFDSDs7O1lBRUFPLEtBQUFBO21CQUFBQSxTQUFBQSxZQUFZQyxRQUFRLEVBQUU7Z0JBQ3RCLElBQUlDO2dCQUVGLElBQU1sQix1QkFBdUI1Qiw2QkFBNkI2QztnQkFFMUQsSUFBSWpCLHlCQUF5QixJQUFJLEVBQUU7b0JBQ2pDLElBQU1tQixXQUFXRixVQUFXLEdBQUc7b0JBRS9CQyx3QkFBd0IsSUFBSSxDQUFDRSx5QkFBeUIsQ0FBQ0Q7b0JBRXZELElBQUlELDBCQUEwQixJQUFJLEVBQUU7d0JBQ2xDQSx3QkFBd0IsSUFBSSxDQUFDRywyQkFBMkIsQ0FBQ0Y7d0JBRXpELElBQUksQ0FBQ0csWUFBWSxDQUFDSjtvQkFDcEIsQ0FBQztnQkFDSCxPQUFPO29CQUNMLElBQUlmLG9DQUFvQyxJQUFJLENBQUNDLDhCQUE4QixDQUFDSjtvQkFFNUUsSUFBSUcsc0NBQXNDLElBQUksRUFBRTt3QkFDOUMsSUFBTVYsWUFBWSxJQUFJO3dCQUV0QlUsb0NBQW9DLElBQUksQ0FBQ29CLGdDQUFnQyxDQUFDdkIsc0JBQXNCUDt3QkFFaEcsSUFBSSxDQUFDNkIsWUFBWSxDQUFDbkI7b0JBQ3BCLENBQUM7b0JBRUQsSUFBTVcsc0NBQXNDeEMsd0NBQXdDMkM7b0JBRXBGQSxXQUFXSCxxQ0FBcUMsR0FBRztvQkFFbkRJLHdCQUF3QmYsa0NBQWtDYSxXQUFXLENBQUNDO2dCQUN4RSxDQUFDO2dCQUVILE9BQU9DO1lBQ1I7OztZQUVDTSxLQUFBQTttQkFBQUEsU0FBQUEsZUFBZVAsUUFBUSxFQUF3QztvQkFBdENRLCtCQUFBQSxpRUFBK0IsS0FBSztnQkFDM0QsSUFBTXpCLHVCQUF1QjVCLDZCQUE2QjZDO2dCQUUxRCxJQUFJakIseUJBQXlCLElBQUksRUFBRTtvQkFDakMsSUFBTW1CLFdBQVdGLFVBQ1hDLHdCQUF3QixJQUFJLENBQUNFLHlCQUF5QixDQUFDRDtvQkFFN0QsSUFBSUQsMEJBQTBCLElBQUksRUFBRTt3QkFDbEMsSUFBSSxDQUFDUSxlQUFlLENBQUNSO29CQUN2QixDQUFDO2dCQUNILE9BQU87b0JBQ0wsSUFBTWYsb0NBQW9DLElBQUksQ0FBQ0MsOEJBQThCLENBQUNKO29CQUU5RSxJQUFJRyxzQ0FBc0MsSUFBSSxFQUFFO3dCQUM5QyxJQUFNVyxzQ0FBc0N4Qyx3Q0FBd0MyQzt3QkFFcEZBLFdBQVdILHFDQUFxQyxHQUFHO3dCQUVuRFgsa0NBQWtDcUIsY0FBYyxDQUFDUCxVQUFVUTt3QkFFM0QsSUFBSUEsOEJBQThCOzRCQUNoQyxJQUFNRSx5Q0FBeUN4QixrQ0FBa0NSLE9BQU87NEJBRXhGLElBQUlnQyx3Q0FBd0M7Z0NBQzFDLElBQUksQ0FBQ0QsZUFBZSxDQUFDdkI7NEJBQ3ZCLENBQUM7d0JBQ0gsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7WUFDSDs7O1lBRUF5QixLQUFBQTttQkFBQUEsU0FBQUEsaUJBQWlCO2dCQUNmLElBQUksQ0FBQ0MsZ0JBQWdCO1lBQ3ZCOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBLG1CQUFtQjtnQkFDakIsSUFBTUMsaUJBQWlCLElBQUksQ0FBQ0Msc0JBQXNCO2dCQUVsREQsZUFBZUUsT0FBTyxDQUFDLFNBQUN0QixlQUFrQjtvQkFDeENBLGNBQWN1QixRQUFRO2dCQUN4QjtZQUNGOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBLG1CQUFtQjtnQkFDakIsSUFBTUosaUJBQWlCLElBQUksQ0FBQ0Msc0JBQXNCO2dCQUVsREQsZUFBZUssSUFBSSxDQUFDLFNBQUN6QixlQUFrQjtvQkFDckMsSUFBTTBCLFdBQVcxQixjQUFjMkIsVUFBVTtvQkFFekMsSUFBSUQsVUFBVTt3QkFDWjFCLGNBQWM0QixJQUFJO3dCQUVsQixPQUFPLElBQUk7b0JBQ2IsQ0FBQztnQkFDSDtZQUNGOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBLGlCQUFpQkMsYUFBYSxFQUFvQjtvQkFBbEJoRCxZQUFBQSxpRUFBWSxJQUFJO2dCQUM5QyxJQUFJaUQ7Z0JBRUosSUFBTTFDLHVCQUF1QjVCLDZCQUE2QnFFO2dCQUUxRCxJQUFJekMseUJBQXlCLElBQUksRUFBRTtvQkFDakMsSUFBTTJDLGdCQUFnQkYsZUFBZ0IsR0FBRztvQkFFekNDLDZCQUE2QixJQUFJLENBQUN0Qyw4QkFBOEIsQ0FBQ3VDO29CQUVqRSxJQUFJRCwrQkFBK0IsSUFBSSxFQUFFO3dCQUN2Q0EsNkJBQTZCLElBQUksQ0FBQ25CLGdDQUFnQyxDQUFDb0IsZUFBZWxEO3dCQUVsRixJQUFJLENBQUM2QixZQUFZLENBQUNvQjtvQkFDcEIsT0FBTzt3QkFDTGpELFlBQ0VpRCwyQkFBMkJFLFFBQVEsS0FDakNGLDJCQUEyQjNCLE1BQU0sRUFBRTtvQkFDekMsQ0FBQztnQkFDSCxPQUFPO29CQUNMLElBQUlaLG9DQUFvQyxJQUFJLENBQUNDLDhCQUE4QixDQUFDSjtvQkFFNUUsSUFBSUcsc0NBQXNDLElBQUksRUFBRTt3QkFDOUNBLG9DQUFvQyxJQUFJLENBQUNvQixnQ0FBZ0MsQ0FBQ3ZCLHNCQUFzQlA7d0JBRWhHLElBQUksQ0FBQzZCLFlBQVksQ0FBQ25CO29CQUNwQixDQUFDO29CQUVELElBQU0wQywyQ0FBMkN2RSx3Q0FBd0NtRTtvQkFFekZBLGdCQUFnQkksMENBQTBDLEdBQUc7b0JBRTdESCw2QkFBNkJ2QyxrQ0FBa0NxQyxnQkFBZ0IsQ0FBQ0MsZUFBZWhEO2dCQUNqRyxDQUFDO2dCQUVELE9BQU9pRDtZQUNUOzs7WUFFQUksS0FBQUE7bUJBQUFBLFNBQUFBLG9CQUFvQkwsYUFBYSxFQUF3QztvQkFBdENoQiwrQkFBQUEsaUVBQStCLEtBQUs7Z0JBQ3JFLElBQU16Qix1QkFBdUI1Qiw2QkFBNkJxRTtnQkFFMUQsSUFBSXpDLHlCQUF5QixJQUFJLEVBQUU7b0JBQ2pDLElBQU0yQyxnQkFBZ0JGLGVBQ2hCQyw2QkFBNkIsSUFBSSxDQUFDdEMsOEJBQThCLENBQUN1QztvQkFFdkUsSUFBSUQsK0JBQStCLElBQUksRUFBRTt3QkFDdkMsSUFBSSxDQUFDaEIsZUFBZSxDQUFDZ0I7b0JBQ3ZCLENBQUM7Z0JBQ0gsT0FBTztvQkFDTCxJQUFNdkMsb0NBQW9DLElBQUksQ0FBQ0MsOEJBQThCLENBQUNKO29CQUU5RSxJQUFJRyxzQ0FBc0MsSUFBSSxFQUFFO3dCQUM5QyxJQUFNMEMsMkNBQTJDdkUsd0NBQXdDbUU7d0JBRXpGQSxnQkFBZ0JJLDBDQUEwQyxHQUFHO3dCQUU3RDFDLGtDQUFrQzJDLG1CQUFtQixDQUFDTCxlQUFlaEI7d0JBRXJFLElBQUlBLDhCQUE4Qjs0QkFDaEMsSUFBTUUseUNBQXlDeEIsa0NBQWtDUixPQUFPOzRCQUV4RixJQUFJZ0Msd0NBQXdDO2dDQUMxQyxJQUFJLENBQUNELGVBQWUsQ0FBQ3ZCOzRCQUN2QixDQUFDO3dCQUNILENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO1lBQ0g7OztZQUVBbUIsS0FBQUE7bUJBQUFBLFNBQUFBLGFBQWF5QixTQUFTLEVBQUU7Z0JBQ3RCLElBQU0vRCxXQUFXLElBQUksQ0FBQ0QsV0FBVyxJQUMzQmlFLGdCQUFnQkQsV0FDaEJFLG9CQUFvQixJQUFJLENBQUNDLGFBQWEsQ0FBQyxTQUFDSCxXQUFjO29CQUNwRCxJQUFNSSwyQkFBMkJILGNBQWNJLFFBQVEsQ0FBQ0w7b0JBRXhELElBQUlJLDBCQUEwQjt3QkFDNUIsT0FBTyxJQUFJO29CQUNiLENBQUM7Z0JBQ0g7Z0JBRU4sSUFBSUYsc0JBQXNCLElBQUksRUFBRTtvQkFDOUIsSUFBSSxDQUFDSSxNQUFNLENBQUNOO2dCQUNkLE9BQU87b0JBQ0xBLFVBQVVPLFlBQVksQ0FBQ0w7Z0JBQ3pCLENBQUM7Z0JBRUQsSUFBTU0sa0JBQWtCdkUsU0FBU3dFLFNBQVM7Z0JBRTFDLElBQUlELGlCQUFpQjtvQkFDbkIsSUFBTUUsOEJBQThCVixVQUFVVyxxQkFBcUIsSUFDN0RDLG9CQUFvQjt3QkFDbEJaO3FCQUVELENBSG1CLE9BRWxCLG1CQUFHVTtvQkFHWEUsa0JBQWtCQyxPQUFPO29CQUV6QkQsa0JBQWtCMUIsT0FBTyxDQUFDLFNBQUM0QjsrQkFBc0JBLGlCQUFpQkMsUUFBUSxJQUFJRCxpQkFBaUJDLFFBQVE7d0JBQU8sR0FBRztnQkFDbkgsQ0FBQztZQUNIOzs7WUFFQXBDLEtBQUFBO21CQUFBQSxTQUFBQSxnQkFBZ0JxQixTQUFTLEVBQUU7Z0JBQ3pCLElBQU0vRCxXQUFXLElBQUksQ0FBQ0QsV0FBVyxJQUMzQndFLGtCQUFrQnZFLFNBQVN3RSxTQUFTO2dCQUUxQyxJQUFJRCxpQkFBaUI7b0JBQ25CLElBQU1FLDhCQUE4QlYsVUFBVVcscUJBQXFCLElBQzdEQyxvQkFBb0I7d0JBQ2xCWjtxQkFFRCxDQUhtQixPQUVsQixtQkFBR1U7b0JBR1hFLGtCQUFrQjFCLE9BQU8sQ0FBQyxTQUFDNEI7K0JBQXNCQSxpQkFBaUJFLFdBQVcsSUFBSUYsaUJBQWlCRSxXQUFXO3dCQUFPLEdBQUc7Z0JBQ3pILENBQUM7Z0JBRURoQixVQUFVaUIsTUFBTTtZQUNsQjs7O1lBRUFuQyxLQUFBQTttQkFBQUEsU0FBQUEsbUJBQW1COztnQkFDakIsSUFBTXpDLGFBQWEsSUFBSSxDQUFDSCxhQUFhO2dCQUVyQ0csV0FBVzZDLE9BQU8sQ0FBQyxTQUFDYzsyQkFBYyxNQUFLckIsZUFBZSxDQUFDcUI7O1lBQ3pEOzs7WUFFQTdDLEtBQUFBO21CQUFBQSxTQUFBQSxtQkFBbUJELG1CQUFtQixFQUFFRixpQkFBaUIsRUFBRTtnQkFDekQsSUFBSXhCO2dCQUVKLElBQU1tQyxPQUFPVCxxQkFDUGdFLE9BQU9sRSxtQkFBb0IsR0FBRztnQkFFcEMsT0FBUWtFO29CQUNOLEtBQUtDLHFDQUF5Qjt3QkFBRzs0QkFDL0IsSUFBTWxGLFdBQVcsSUFBSSxDQUFDRCxXQUFXLElBQzNCb0YsMEJBQTBCbkYsU0FBU29GLDBCQUEwQixJQUM3REMsd0NBRUUsb0JBQUNGO2dDQUF3QnpELE1BQU1BO2dDQUFNMUIsVUFBVUE7OzRCQUl2RFQsa0JBQWtCOEYseUJBQTBCLEdBQUc7NEJBRS9DLEtBQU07d0JBQ1I7b0JBRUEsS0FBS0MsMENBQThCO3dCQUFHOzRCQUNwQyxJQUFNdEYsWUFBVyxJQUFJLENBQUNELFdBQVcsSUFDM0J3RiwrQkFBK0J2RixVQUFTd0YsK0JBQStCLElBQ3ZFQyw2Q0FFRSxvQkFBQ0Y7Z0NBQTZCN0QsTUFBTUE7Z0NBQU0xQixVQUFVQTs7NEJBSTVEVCxrQkFBa0JrRyw4QkFBOEIsR0FBRzs0QkFFbkQsS0FBTTt3QkFDUjtnQkFDRjtnQkFFQSxJQUFNMUIsWUFBWXhFLGlCQUFpQixHQUFHO2dCQUV0QyxJQUFJLENBQUMrQyxZQUFZLENBQUN5QjtnQkFFbEJ2RSxPQUFPQyxNQUFNLENBQUNDLFlBQVk7b0JBQ3hCSCxpQkFBQUE7Z0JBQ0Y7WUFDRjs7O1lBRUFnQyxLQUFBQTttQkFBQUEsU0FBQUEsd0JBQXdCO2dCQUN0QixJQUFJaEMsa0JBQWtCLElBQUksQ0FBQ21HLHVCQUF1QjtnQkFFbERuRyxnQkFBZ0J5RixNQUFNO2dCQUV0QnpGLGtCQUFrQixJQUFJO2dCQUV0QkMsT0FBT0MsTUFBTSxDQUFDQyxZQUFZO29CQUN4QkgsaUJBQUFBO2dCQUNGO1lBQ0Y7OztZQUVBOEMsS0FBQUE7bUJBQUFBLFNBQUFBLDRCQUE0QkYsUUFBUSxFQUFFO2dCQUN0QyxJQUFNVCxPQUFPUyxVQUNWbkMsV0FBVyxJQUFJLENBQUNELFdBQVcsSUFDM0I0Rix3QkFBd0IzRixTQUFTNEYsd0JBQXdCLElBQ3pEMUQsc0NBRUMsb0JBQUN5RDtvQkFBc0JqRSxNQUFNQTtvQkFBTTFCLFVBQVVBOztnQkFJakQsT0FBT2tDO1lBQ1I7OztZQUVBSyxLQUFBQTttQkFBQUEsU0FBQUEsaUNBQWlDb0IsYUFBYSxFQUFFbEQsU0FBUyxFQUFFO2dCQUMxRCxJQUFNaUIsT0FBT2lDLGVBQ1YzRCxXQUFXLElBQUksQ0FBQ0QsV0FBVyxJQUMzQjhGLDZCQUE2QjdGLFNBQVM4Riw2QkFBNkIsSUFDbkVwQywyQ0FFQyxvQkFBQ21DO29CQUEyQm5FLE1BQU1BO29CQUFNakIsV0FBV0E7b0JBQVdULFVBQVVBOztnQkFJNUUsT0FBTzBEO1lBQ1I7OztZQUVBcUMsS0FBQUE7bUJBQUFBLFNBQUFBLCtCQUErQjVELFFBQVEsRUFBRTtnQkFDeEMsSUFBTUQsd0JBQXdCLElBQUksQ0FBQ0UseUJBQXlCLENBQUNELFdBQzFENkQsK0JBQWdDOUQsMEJBQTBCLElBQUk7Z0JBRWpFLE9BQU84RDtZQUNSOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBLG9DQUFvQ3RDLGFBQWEsRUFBRTtnQkFDbEQsSUFBTUQsNkJBQTZCLElBQUksQ0FBQ3RDLDhCQUE4QixDQUFDdUMsZ0JBQ3BFdUMsb0NBQXFDeEMsK0JBQStCLElBQUk7Z0JBRTNFLE9BQU93QztZQUNSOzs7WUFFQ0MsS0FBQUE7bUJBQUFBLFNBQUFBLHdCQUF3QkMsUUFBUSxFQUFZO2dCQUFWLElBQUEsSUFBQSxPQUFBLFVBQUEsUUFBQSxBQUFHQyxRQUFILFVBQUEsT0FBQSxJQUFBLE9BQUEsS0FBUSxHQUFSLE9BQUEsR0FBQSxPQUFBLE1BQUEsT0FBQTtvQkFBR0EsTUFBSCxPQUFBLEtBQUEsU0FBQSxDQUFBLEtBQVE7Z0JBQUQ7Z0JBQ3ZDLElBQU1qRyxhQUFhLElBQUksQ0FBQ0gsYUFBYTtnQkFFckNHLFdBQVc2QyxPQUFPLENBQUMsU0FBQ2MsV0FBYztvQkFDaEMsSUFBTXVDLGdCQUFnQnZDLFVBQVV3QyxPQUFPLElBQ25DQyw2QkFBNkJILE1BQU1JLFFBQVEsQ0FBQ0g7b0JBRWhELElBQUlFLDRCQUE0Qjt3QkFDOUJKLFNBQVNyQztvQkFDWCxDQUFDO2dCQUNIO1lBQ0Y7OztZQUVBMkMsS0FBQUE7bUJBQUFBLFNBQUFBLHFCQUFxQk4sUUFBUSxFQUFFO2dCQUFFLElBQUksQ0FBQ0QsdUJBQXVCLENBQUNDLFVBQVVsQixxQ0FBeUIsRUFBRUksMENBQThCO1lBQUc7OztZQUVwSXFCLEtBQUFBO21CQUFBQSxTQUFBQSw2QkFBNkJQLFFBQVEsRUFBRTtnQkFBRSxJQUFJLENBQUNELHVCQUF1QixDQUFDQyxVQUFVbEIscUNBQXlCO1lBQUc7OztZQUU1RzBCLEtBQUFBO21CQUFBQSxTQUFBQSxrQ0FBa0NSLFFBQVEsRUFBRTtnQkFBRSxJQUFJLENBQUNELHVCQUF1QixDQUFDQyxVQUFVZCwwQ0FBOEI7WUFBRzs7O1lBRXRIdUIsS0FBQUE7bUJBQUFBLFNBQUFBLHFCQUFxQlQsUUFBUSxFQUFZO2dCQUFWLElBQUEsSUFBQSxPQUFBLFVBQUEsUUFBQSxBQUFHQyxRQUFILFVBQUEsT0FBQSxJQUFBLE9BQUEsS0FBUSxHQUFSLE9BQUEsR0FBQSxPQUFBLE1BQUEsT0FBQTtvQkFBR0EsTUFBSCxPQUFBLEtBQUEsU0FBQSxDQUFBLEtBQVE7Z0JBQUQ7Z0JBQ3BDLElBQU1qRyxhQUFhLElBQUksQ0FBQ0gsYUFBYTtnQkFFckMsT0FBT0csV0FBV2dELElBQUksQ0FBQyxTQUFDVyxXQUFjO29CQUNwQyxJQUFNdUMsZ0JBQWdCdkMsVUFBVXdDLE9BQU8sSUFDbkNDLDZCQUE2QkgsTUFBTUksUUFBUSxDQUFDSDtvQkFFaEQsSUFBSUUsNEJBQTRCO3dCQUM5QixJQUFNTSxTQUFTVixTQUFTckM7d0JBRXhCLE9BQU8rQztvQkFDVCxDQUFDO2dCQUNIO1lBQ0Y7OztZQUVBNUMsS0FBQUE7bUJBQUFBLFNBQUFBLGNBQWNrQyxRQUFRLEVBQUU7Z0JBQ3RCLElBQU1oRyxhQUFhLElBQUksQ0FBQ0gsYUFBYSxJQUMvQjhELFlBQVkzRCxXQUFXMkcsSUFBSSxDQUFDWCxhQUFhLElBQUksRUFBRSxHQUFHO2dCQUV4RCxPQUFPckM7WUFDVDs7O1lBRUFpRCxLQUFBQTttQkFBQUEsU0FBQUEscUJBQXFCWixRQUFRLEVBQVk7Z0JBQVYsSUFBQSxJQUFBLE9BQUEsVUFBQSxRQUFBLEFBQUdDLFFBQUgsVUFBQSxPQUFBLElBQUEsT0FBQSxLQUFRLEdBQVIsT0FBQSxHQUFBLE9BQUEsTUFBQSxPQUFBO29CQUFHQSxNQUFILE9BQUEsS0FBQSxTQUFBLENBQUEsS0FBUTtnQkFBRDtnQkFDcEMsSUFBTWpHLGFBQWEsSUFBSSxDQUFDSCxhQUFhLElBQy9COEQsWUFBWTNELFdBQVcyRyxJQUFJLENBQUMsU0FBQ2hELFdBQWM7b0JBQ3pDLElBQU11QyxnQkFBZ0J2QyxVQUFVd0MsT0FBTyxJQUNuQ0MsNkJBQTZCSCxNQUFNSSxRQUFRLENBQUNIO29CQUVoRCxJQUFJRSw0QkFBNEI7d0JBQzlCLElBQU1NLFNBQVNWLFNBQVNyQzt3QkFFeEIsSUFBSStDLFFBQVE7NEJBQ1YsT0FBTyxJQUFJO3dCQUNiLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxNQUFNLElBQUksRUFBRSxJQUFJO2dCQUV0QixPQUFPL0M7WUFDVDs7O1lBRUFrRCxLQUFBQTttQkFBQUEsU0FBQUEsd0JBQWdDO2dCQUFWLElBQUEsSUFBQSxPQUFBLFVBQUEsUUFBQSxBQUFHWixRQUFILFVBQUEsT0FBQSxPQUFBLEdBQUEsT0FBQSxNQUFBLE9BQUE7b0JBQUdBLE1BQUgsUUFBQSxTQUFBLENBQUEsS0FBUTtnQkFBRDtnQkFDM0IsSUFBTWpHLGFBQWEsSUFBSSxDQUFDSCxhQUFhO2dCQUVyQ2YsT0FBT2tCLFlBQVksU0FBQzJELFdBQWM7b0JBQ2hDLElBQU11QyxnQkFBZ0J2QyxVQUFVd0MsT0FBTyxJQUNqQ0MsNkJBQTZCSCxNQUFNSSxRQUFRLENBQUNIO29CQUVsRCxJQUFJRSw0QkFBNEI7d0JBQzlCLE9BQU8sSUFBSTtvQkFDYixDQUFDO2dCQUNIO2dCQUVBLE9BQU9wRztZQUNUOzs7WUFFQThHLEtBQUFBO21CQUFBQSxTQUFBQSw0QkFBNEJ4RixJQUFJLEVBQVk7Z0JBQVYsSUFBQSxJQUFBLE9BQUEsVUFBQSxRQUFBLEFBQUcyRSxRQUFILFVBQUEsT0FBQSxJQUFBLE9BQUEsS0FBUSxHQUFSLE9BQUEsR0FBQSxPQUFBLE1BQUEsT0FBQTtvQkFBR0EsTUFBSCxPQUFBLEtBQUEsU0FBQSxDQUFBLEtBQVE7Z0JBQUQ7Z0JBQ3ZDLElBQU10QyxZQUFZLElBQUksQ0FBQ2lELG9CQUFvQixDQUF6QixNQUFBLElBQUksRUFBSjtvQkFBMEIsU0FBQ2pELFdBQWM7d0JBQ3pELElBQU1vRCxnQkFBZ0JwRCxVQUFVcUQsT0FBTzt3QkFFdkMsSUFBSUQsa0JBQWtCekYsTUFBTTs0QkFDMUIsT0FBTyxJQUFJO3dCQUNiLENBQUM7b0JBQ0g7aUJBQVksQ0FOTSxPQU1mLG1CQUFHMkUsWUFBVSxJQUFJO2dCQUVwQixPQUFPdEM7WUFDVDs7O1lBRUFuQyxLQUFBQTttQkFBQUEsU0FBQUEsa0JBQWtCRixJQUFJLEVBQUU7Z0JBQ3RCLElBQU1xQyxZQUFZLElBQUksQ0FBQ21ELDJCQUEyQixDQUFDeEYsTUFBTXdELHFDQUF5QixFQUFFSSwwQ0FBOEIsR0FDNUczRCxnQkFBZ0JvQyxXQUFZLEdBQUc7Z0JBRXJDLE9BQU9wQztZQUNUOzs7WUFFQTBGLEtBQUFBO21CQUFBQSxTQUFBQSxxQkFBcUI7Z0JBQ25CLElBQU1qSCxhQUFhLElBQUksQ0FBQzZHLHFCQUFxQixDQUFDL0IscUNBQXlCLEVBQUVJLDBDQUE4QixHQUNqR3ZDLGlCQUFpQjNDLFlBQWEsR0FBRztnQkFFdkMsT0FBTzJDO1lBQ1Q7OztZQUVBWCxLQUFBQTttQkFBQUEsU0FBQUEsMEJBQTBCRCxRQUFRLEVBQUU7Z0JBQ2xDLElBQU1ULE9BQU9TLFVBQ1A0QixZQUFZLElBQUksQ0FBQ21ELDJCQUEyQixDQUFDeEYsTUFBTXdELHFDQUF5QixHQUM1RWhELHdCQUF3QjZCLFdBQVksR0FBRztnQkFFN0MsT0FBTzdCO1lBQ1Q7OztZQUVBZCxLQUFBQTttQkFBQUEsU0FBQUEsK0JBQStCdUMsYUFBYSxFQUFFO2dCQUM1QyxJQUFNSSxZQUFZLElBQUksQ0FBQ21ELDJCQUEyQixDQUFDdkQsZUFBZTJCLDBDQUE4QixHQUMxRjVCLDZCQUE2QkssV0FBVyxHQUFHO2dCQUVqRCxPQUFPTDtZQUNUOzs7WUFFQWdDLEtBQUFBO21CQUFBQSxTQUFBQSwwQkFBMEI7Z0JBQ3hCLElBQU0sQUFBRW5HLGtCQUFvQkcsV0FBcEJIO2dCQUVSLE9BQU9BO1lBQ1Q7OztZQUVBeUQsS0FBQUE7bUJBQUFBLFNBQUFBLHlCQUE0QztvQkFBckJELGlCQUFBQSxpRUFBaUIsRUFBRTtnQkFDeEMsSUFBSSxDQUFDNkQsaUNBQWlDLENBQUMsU0FBQ2xELDRCQUErQjtvQkFDckUsSUFBTS9CLGdCQUFnQitCLDRCQUE0QixHQUFHO29CQUVyREEsMkJBQTJCVixzQkFBc0IsQ0FBQ0Q7b0JBRWxEQSxlQUFldUUsSUFBSSxDQUFDM0Y7Z0JBQ3RCO2dCQUVBLElBQUksQ0FBQ2dGLDRCQUE0QixDQUFDLFNBQUN6RSx1QkFBMEI7b0JBQzNELElBQU1QLGdCQUFnQk8sdUJBQXdCLEdBQUc7b0JBRWpEYSxlQUFldUUsSUFBSSxDQUFDM0Y7Z0JBQ3RCO2dCQUVBLE9BQU9vQjtZQUNUOzs7WUFFQWEsS0FBQUE7bUJBQUFBLFNBQUFBLFdBQVc7Z0JBQ1YsSUFBSSxDQUFDMkQsUUFBUSxDQUFDO1lBQ2Y7OztZQUVEeEYsS0FBQUE7bUJBQUFBLFNBQUFBLFNBQVM7Z0JBQ1AsSUFBSSxDQUFDeUYsV0FBVyxDQUFDO1lBQ2xCOzs7WUFFQTFDLEtBQUFBO21CQUFBQSxTQUFBQSxXQUFXO2dCQUNULElBQU1qRixVQUFVLElBQUksQ0FBQ0QsU0FBUztnQkFFOUIsSUFBSUMsU0FBUztvQkFDWCxJQUFJLENBQUMwSCxRQUFRLENBQUM7Z0JBQ2hCLENBQUM7WUFDSDs7O1lBRUF4QyxLQUFBQTttQkFBQUEsU0FBQUEsY0FBYztZQUNaLEdBQUc7WUFDTDs7O1lBRUEwQyxLQUFBQTttQkFBQUEsU0FBQUEsZ0JBQWdCO2dCQUNoQixJQUFNQyxvQkFBb0IsSUFBSSxDQUFDM0YsTUFBTSxDQUFDNEYsSUFBSSxDQUFDLElBQUksR0FDdkNDLHNCQUFzQixJQUFJLENBQUNoRSxRQUFRLENBQUMrRCxJQUFJLENBQUMsSUFBSSxHQUM3Q0UseUJBQXlCLElBQUksQ0FBQ3JILFdBQVcsQ0FBQ21ILElBQUksQ0FBQyxJQUFJLEdBQ25EaEgsVUFBVSxJQUFJLENBQUNBLE9BQU8sQ0FBQ2dILElBQUksQ0FBQyxJQUFJLEdBQ2hDOUcsWUFBWSxJQUFJLENBQUNBLFNBQVMsQ0FBQzhHLElBQUksQ0FBQyxJQUFJLEdBQ3BDbkcsYUFBYSxJQUFJLENBQUNBLFVBQVUsQ0FBQ21HLElBQUksQ0FBQyxJQUFJLEdBQ3RDM0YsY0FBYyxJQUFJLENBQUNBLFdBQVcsQ0FBQzJGLElBQUksQ0FBQyxJQUFJLEdBQ3hDckcsZUFBZSxJQUFJLENBQUNBLFlBQVksQ0FBQ3FHLElBQUksQ0FBQyxJQUFJLEdBQzFDbkYsaUJBQWlCLElBQUksQ0FBQ0EsY0FBYyxDQUFDbUYsSUFBSSxDQUFDLElBQUksR0FDOUMvRSxpQkFBaUIsSUFBSSxDQUFDQSxjQUFjLENBQUMrRSxJQUFJLENBQUMsSUFBSSxHQUM5QzdFLG1CQUFtQixJQUFJLENBQUNBLGdCQUFnQixDQUFDNkUsSUFBSSxDQUFDLElBQUksR0FDbERuRSxtQkFBbUIsSUFBSSxDQUFDQSxnQkFBZ0IsQ0FBQ21FLElBQUksQ0FBQyxJQUFJLEdBQ2xEeEUsbUJBQW1CLElBQUksQ0FBQ0EsZ0JBQWdCLENBQUN3RSxJQUFJLENBQUMsSUFBSSxHQUNsRDdELHNCQUFzQixJQUFJLENBQUNBLG1CQUFtQixDQUFDNkQsSUFBSSxDQUFDLElBQUksR0FDeERqQix1QkFBdUIsSUFBSSxDQUFDQSxvQkFBb0IsQ0FBQ2lCLElBQUksQ0FBQyxJQUFJLEdBQzFEM0UseUJBQXlCLElBQUksQ0FBQ0Esc0JBQXNCLENBQUMyRSxJQUFJLENBQUMsSUFBSSxHQUM5RGpDLDBCQUEwQixJQUFJLENBQUNBLHVCQUF1QixDQUFDaUMsSUFBSSxDQUFDLElBQUk7Z0JBRXhFLE9BQVE7b0JBQ0pELG1CQUFBQTtvQkFDQUUscUJBQUFBO29CQUNBQyx3QkFBQUE7b0JBQ0FsSCxTQUFBQTtvQkFDQUUsV0FBQUE7b0JBQ0FXLFlBQUFBO29CQUNIUSxhQUFBQTtvQkFDR1YsY0FBQUE7b0JBQ0FrQixnQkFBQUE7b0JBQ0FJLGdCQUFBQTtvQkFDQUUsa0JBQUFBO29CQUNBVSxrQkFBQUE7b0JBQ0FMLGtCQUFBQTtvQkFDQVcscUJBQUFBO29CQUNBNEMsc0JBQUFBO29CQUNBMUQsd0JBQUFBO29CQUNBMEMseUJBQUFBO2dCQUNKO1lBQ0Q7OztXQXRsQksvRjttQkFBb0JtSSxhQUFPO0FBd2xCaEMsZ0JBeGxCS25JLGFBd2xCRW9JLFdBQVU7QUFFaEIsZ0JBMWxCSXBJLGFBMGxCR3FJLHFCQUFvQjtJQUN6QjtJQUNBO0NBQ0Q7QUFFRCxnQkEvbEJJckksYUErbEJHc0kscUJBQW9CO0lBQ3pCQyxXQUFXO0FBQ2I7SUFHRixXQUFlQyxJQUFBQSxzQkFBUyxFQUFDeEksZ0NBR1B5SSw4QkFBc0IifQ==
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return _default;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _necessary = require("necessary");
|
|
12
|
+
var _eventTypes = require("../eventTypes");
|
|
13
|
+
var forEach = _necessary.asynchronousUtilities.forEach;
|
|
14
|
+
function onMove(moveHandler, element) {
|
|
15
|
+
var eventType = _eventTypes.MOVE_EVENT_TYPE, handler = moveHandler; ///
|
|
16
|
+
this.addEventListener(eventType, handler, element);
|
|
17
|
+
}
|
|
18
|
+
function offMove(moveHandler, element) {
|
|
19
|
+
var eventType = _eventTypes.MOVE_EVENT_TYPE, handler = moveHandler; ///
|
|
20
|
+
this.removeEventListener(eventType, handler, element);
|
|
21
|
+
}
|
|
22
|
+
function onOpen(openHandler, element) {
|
|
23
|
+
var eventType = _eventTypes.OPEN_EVENT_TYPE, handler = openHandler; ///
|
|
24
|
+
this.addEventListener(eventType, handler, element);
|
|
25
|
+
}
|
|
26
|
+
function offOpen(openHandler, element) {
|
|
27
|
+
var eventType = _eventTypes.OPEN_EVENT_TYPE, handler = openHandler; ///
|
|
28
|
+
this.removeEventListener(eventType, handler, element);
|
|
29
|
+
}
|
|
30
|
+
function onSelect(selectHandler, element) {
|
|
31
|
+
var eventType = _eventTypes.SELECT_EVENT_TYPE, handler = selectHandler; ///
|
|
32
|
+
this.addEventListener(eventType, handler, element);
|
|
33
|
+
}
|
|
34
|
+
function offSelect(selectHandler, element) {
|
|
35
|
+
var eventType = _eventTypes.SELECT_EVENT_TYPE, handler = selectHandler; ///
|
|
36
|
+
this.removeEventListener(eventType, handler, element);
|
|
37
|
+
}
|
|
38
|
+
function onPathChange(pathChangeHandler, element) {
|
|
39
|
+
var eventType = _eventTypes.PATH_CHANGE_EVENT_TYPE, handler = pathChangeHandler; ///
|
|
40
|
+
this.addEventListener(eventType, handler, element);
|
|
41
|
+
}
|
|
42
|
+
function offPathChange(pathChangeHandler, element) {
|
|
43
|
+
var eventType = _eventTypes.PATH_CHANGE_EVENT_TYPE, handler = pathChangeHandler; ///
|
|
44
|
+
this.removeEventListener(eventType, handler, element);
|
|
45
|
+
}
|
|
46
|
+
function callOpenHandlers(filePath) {
|
|
47
|
+
var _this = this;
|
|
48
|
+
var eventType = _eventTypes.OPEN_EVENT_TYPE, eventListeners = this.findEventListeners(eventType);
|
|
49
|
+
eventListeners.forEach(function(eventListener) {
|
|
50
|
+
var handler = eventListener.handler, element = eventListener.element, openHandler = handler; ///
|
|
51
|
+
openHandler.call(element, filePath, _this); ///
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
function callSelectHandlers(path, selected) {
|
|
55
|
+
var _this = this;
|
|
56
|
+
var eventType = _eventTypes.SELECT_EVENT_TYPE, eventListeners = this.findEventListeners(eventType);
|
|
57
|
+
eventListeners.forEach(function(eventListener) {
|
|
58
|
+
var handler = eventListener.handler, element = eventListener.element, selectHandler = handler; ///
|
|
59
|
+
selectHandler.call(element, path, selected, _this); ///
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
function callMoveHandlersAsync(pathMaps, done) {
|
|
63
|
+
var eventType = _eventTypes.MOVE_EVENT_TYPE, eventListeners = this.findEventListeners(eventType);
|
|
64
|
+
forEach(eventListeners, function(eventListener, next) {
|
|
65
|
+
var handler = eventListener.handler, element = eventListener.element, moveHandler = handler, _$done = next; ///
|
|
66
|
+
moveHandler.call(element, pathMaps, _$done);
|
|
67
|
+
}, done);
|
|
68
|
+
}
|
|
69
|
+
function callPathChangeHandlersAsync(path, callback) {
|
|
70
|
+
var notSuccess = false;
|
|
71
|
+
var done = function() {
|
|
72
|
+
var success = !notSuccess;
|
|
73
|
+
callback(success);
|
|
74
|
+
}, eventType = _eventTypes.PATH_CHANGE_EVENT_TYPE, eventListeners = this.findEventListeners(eventType);
|
|
75
|
+
forEach(eventListeners, function(eventListener, next) {
|
|
76
|
+
var handler = eventListener.handler, element = eventListener.element, pathChangeHandler = handler; ///
|
|
77
|
+
pathChangeHandler.call(element, path, function(success) {
|
|
78
|
+
notSuccess = !success;
|
|
79
|
+
next();
|
|
80
|
+
});
|
|
81
|
+
}, done);
|
|
82
|
+
}
|
|
83
|
+
var eventMixins = {
|
|
84
|
+
onMove: onMove,
|
|
85
|
+
offMove: offMove,
|
|
86
|
+
onOpen: onOpen,
|
|
87
|
+
offOpen: offOpen,
|
|
88
|
+
onSelect: onSelect,
|
|
89
|
+
offSelect: offSelect,
|
|
90
|
+
onPathChange: onPathChange,
|
|
91
|
+
offPathChange: offPathChange,
|
|
92
|
+
callOpenHandlers: callOpenHandlers,
|
|
93
|
+
callSelectHandlers: callSelectHandlers,
|
|
94
|
+
callMoveHandlersAsync: callMoveHandlersAsync,
|
|
95
|
+
callPathChangeHandlersAsync: callPathChangeHandlersAsync
|
|
96
|
+
};
|
|
97
|
+
var _default = eventMixins;
|
|
98
|
+
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taXhpbnMvZXZlbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFzeW5jaHJvbm91c1V0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgTU9WRV9FVkVOVF9UWVBFLCBPUEVOX0VWRU5UX1RZUEUsIFBBVEhfQ0hBTkdFX0VWRU5UX1RZUEUsIFNFTEVDVF9FVkVOVF9UWVBFIH0gZnJvbSBcIi4uL2V2ZW50VHlwZXNcIjtcblxuY29uc3QgeyBmb3JFYWNoIH0gPSBhc3luY2hyb25vdXNVdGlsaXRpZXM7XG5cbmZ1bmN0aW9uIG9uTW92ZShtb3ZlSGFuZGxlciwgZWxlbWVudCkge1xuICBjb25zdCBldmVudFR5cGUgPSBNT1ZFX0VWRU5UX1RZUEUsXG4gICAgICAgIGhhbmRsZXIgPSBtb3ZlSGFuZGxlcjsgIC8vL1xuXG4gIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBvZmZNb3ZlKG1vdmVIYW5kbGVyLCBlbGVtZW50KSB7XG4gIGNvbnN0IGV2ZW50VHlwZSA9IE1PVkVfRVZFTlRfVFlQRSxcbiAgICAgICAgaGFuZGxlciA9IG1vdmVIYW5kbGVyOyAgLy8vXG5cbiAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIG9uT3BlbihvcGVuSGFuZGxlciwgZWxlbWVudCkge1xuICBjb25zdCBldmVudFR5cGUgPSBPUEVOX0VWRU5UX1RZUEUsXG4gICAgICAgIGhhbmRsZXIgPSBvcGVuSGFuZGxlcjsgIC8vL1xuXG4gIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBvZmZPcGVuKG9wZW5IYW5kbGVyLCBlbGVtZW50KSB7XG4gIGNvbnN0IGV2ZW50VHlwZSA9IE9QRU5fRVZFTlRfVFlQRSxcbiAgICAgICAgaGFuZGxlciA9IG9wZW5IYW5kbGVyOyAgLy8vXG5cbiAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIG9uU2VsZWN0KHNlbGVjdEhhbmRsZXIsIGVsZW1lbnQpIHtcbiAgY29uc3QgZXZlbnRUeXBlID0gU0VMRUNUX0VWRU5UX1RZUEUsXG4gICAgICAgIGhhbmRsZXIgPSBzZWxlY3RIYW5kbGVyOyAgLy8vXG5cbiAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIG9mZlNlbGVjdChzZWxlY3RIYW5kbGVyLCBlbGVtZW50KSB7XG4gIGNvbnN0IGV2ZW50VHlwZSA9IFNFTEVDVF9FVkVOVF9UWVBFLFxuICAgICAgICBoYW5kbGVyID0gc2VsZWN0SGFuZGxlcjsgIC8vL1xuXG4gIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBvblBhdGhDaGFuZ2UocGF0aENoYW5nZUhhbmRsZXIsIGVsZW1lbnQpIHtcbiAgY29uc3QgZXZlbnRUeXBlID0gUEFUSF9DSEFOR0VfRVZFTlRfVFlQRSxcbiAgICAgICAgaGFuZGxlciA9IHBhdGhDaGFuZ2VIYW5kbGVyOyAgLy8vXG5cbiAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIG9mZlBhdGhDaGFuZ2UocGF0aENoYW5nZUhhbmRsZXIsIGVsZW1lbnQpIHtcbiAgY29uc3QgZXZlbnRUeXBlID0gUEFUSF9DSEFOR0VfRVZFTlRfVFlQRSxcbiAgICAgICAgaGFuZGxlciA9IHBhdGhDaGFuZ2VIYW5kbGVyOyAgLy8vXG5cbiAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIGNhbGxPcGVuSGFuZGxlcnMoZmlsZVBhdGgpIHtcbiAgY29uc3QgZXZlbnRUeXBlID0gT1BFTl9FVkVOVF9UWVBFLFxuICAgICAgICBldmVudExpc3RlbmVycyA9IHRoaXMuZmluZEV2ZW50TGlzdGVuZXJzKGV2ZW50VHlwZSk7XG5cbiAgZXZlbnRMaXN0ZW5lcnMuZm9yRWFjaCgoZXZlbnRMaXN0ZW5lcikgPT4ge1xuICAgIGNvbnN0IHsgaGFuZGxlciwgZWxlbWVudCB9ID0gZXZlbnRMaXN0ZW5lcixcbiAgICAgICAgb3BlbkhhbmRsZXIgPSBoYW5kbGVyOyAgLy8vXG5cbiAgICBvcGVuSGFuZGxlci5jYWxsKGVsZW1lbnQsIGZpbGVQYXRoLCB0aGlzKTsgIC8vL1xuICB9KTtcbn1cblxuZnVuY3Rpb24gY2FsbFNlbGVjdEhhbmRsZXJzKHBhdGgsIHNlbGVjdGVkKSB7XG4gIGNvbnN0IGV2ZW50VHlwZSA9IFNFTEVDVF9FVkVOVF9UWVBFLFxuICAgICAgICBldmVudExpc3RlbmVycyA9IHRoaXMuZmluZEV2ZW50TGlzdGVuZXJzKGV2ZW50VHlwZSk7XG5cbiAgZXZlbnRMaXN0ZW5lcnMuZm9yRWFjaCgoZXZlbnRMaXN0ZW5lcikgPT4ge1xuICAgIGNvbnN0IHsgaGFuZGxlciwgZWxlbWVudCB9ID0gZXZlbnRMaXN0ZW5lcixcbiAgICAgICAgc2VsZWN0SGFuZGxlciA9IGhhbmRsZXI7ICAvLy9cblxuICAgIHNlbGVjdEhhbmRsZXIuY2FsbChlbGVtZW50LCBwYXRoLCBzZWxlY3RlZCwgdGhpcyk7ICAvLy9cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGNhbGxNb3ZlSGFuZGxlcnNBc3luYyhwYXRoTWFwcywgZG9uZSkge1xuICBjb25zdCBldmVudFR5cGUgPSBNT1ZFX0VWRU5UX1RZUEUsXG4gICAgICAgIGV2ZW50TGlzdGVuZXJzID0gdGhpcy5maW5kRXZlbnRMaXN0ZW5lcnMoZXZlbnRUeXBlKTtcblxuICBmb3JFYWNoKGV2ZW50TGlzdGVuZXJzLCAoZXZlbnRMaXN0ZW5lciwgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHsgaGFuZGxlciwgZWxlbWVudCB9ID0gZXZlbnRMaXN0ZW5lcixcbiAgICAgICAgbW92ZUhhbmRsZXIgPSBoYW5kbGVyLCAgLy8vXG4gICAgICAgIGRvbmUgPSBuZXh0OyAgLy8vXG5cbiAgICBtb3ZlSGFuZGxlci5jYWxsKGVsZW1lbnQsIHBhdGhNYXBzLCBkb25lKTtcbiAgfSwgZG9uZSk7XG59XG5cbmZ1bmN0aW9uIGNhbGxQYXRoQ2hhbmdlSGFuZGxlcnNBc3luYyhwYXRoLCBjYWxsYmFjaykge1xuICBsZXQgbm90U3VjY2VzcyA9IGZhbHNlO1xuXG4gIGNvbnN0IGRvbmUgPSAoKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3VjY2VzcyA9ICFub3RTdWNjZXNzO1xuXG4gICAgICAgICAgY2FsbGJhY2soc3VjY2Vzcyk7XG4gICAgICAgIH0sXG4gICAgICAgIGV2ZW50VHlwZSA9IFBBVEhfQ0hBTkdFX0VWRU5UX1RZUEUsXG4gICAgICAgIGV2ZW50TGlzdGVuZXJzID0gdGhpcy5maW5kRXZlbnRMaXN0ZW5lcnMoZXZlbnRUeXBlKTtcblxuICBmb3JFYWNoKGV2ZW50TGlzdGVuZXJzLCAoZXZlbnRMaXN0ZW5lciwgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHsgaGFuZGxlciwgZWxlbWVudCB9ID0gZXZlbnRMaXN0ZW5lcixcbiAgICAgICAgICBwYXRoQ2hhbmdlSGFuZGxlciA9IGhhbmRsZXI7ICAvLy9cblxuICAgIHBhdGhDaGFuZ2VIYW5kbGVyLmNhbGwoZWxlbWVudCwgcGF0aCwgKHN1Y2Nlc3MpID0+IHtcbiAgICAgIG5vdFN1Y2Nlc3MgPSAhc3VjY2VzcztcblxuICAgICAgbmV4dCgpO1xuICAgIH0pO1xuICB9LCBkb25lKTtcbn1cblxuY29uc3QgZXZlbnRNaXhpbnMgPSB7XG4gIG9uTW92ZSxcbiAgb2ZmTW92ZSxcbiAgb25PcGVuLFxuICBvZmZPcGVuLFxuICBvblNlbGVjdCxcbiAgb2ZmU2VsZWN0LFxuICBvblBhdGhDaGFuZ2UsXG4gIG9mZlBhdGhDaGFuZ2UsXG4gIGNhbGxPcGVuSGFuZGxlcnMsXG4gIGNhbGxTZWxlY3RIYW5kbGVycyxcbiAgY2FsbE1vdmVIYW5kbGVyc0FzeW5jLFxuICBjYWxsUGF0aENoYW5nZUhhbmRsZXJzQXN5bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGV2ZW50TWl4aW5zO1xuIl0sIm5hbWVzIjpbImZvckVhY2giLCJhc3luY2hyb25vdXNVdGlsaXRpZXMiLCJvbk1vdmUiLCJtb3ZlSGFuZGxlciIsImVsZW1lbnQiLCJldmVudFR5cGUiLCJNT1ZFX0VWRU5UX1RZUEUiLCJoYW5kbGVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsIm9mZk1vdmUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwib25PcGVuIiwib3BlbkhhbmRsZXIiLCJPUEVOX0VWRU5UX1RZUEUiLCJvZmZPcGVuIiwib25TZWxlY3QiLCJzZWxlY3RIYW5kbGVyIiwiU0VMRUNUX0VWRU5UX1RZUEUiLCJvZmZTZWxlY3QiLCJvblBhdGhDaGFuZ2UiLCJwYXRoQ2hhbmdlSGFuZGxlciIsIlBBVEhfQ0hBTkdFX0VWRU5UX1RZUEUiLCJvZmZQYXRoQ2hhbmdlIiwiY2FsbE9wZW5IYW5kbGVycyIsImZpbGVQYXRoIiwiZXZlbnRMaXN0ZW5lcnMiLCJmaW5kRXZlbnRMaXN0ZW5lcnMiLCJldmVudExpc3RlbmVyIiwiY2FsbCIsImNhbGxTZWxlY3RIYW5kbGVycyIsInBhdGgiLCJzZWxlY3RlZCIsImNhbGxNb3ZlSGFuZGxlcnNBc3luYyIsInBhdGhNYXBzIiwiZG9uZSIsIm5leHQiLCJjYWxsUGF0aENoYW5nZUhhbmRsZXJzQXN5bmMiLCJjYWxsYmFjayIsIm5vdFN1Y2Nlc3MiLCJzdWNjZXNzIiwiZXZlbnRNaXhpbnMiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQTJJQTs7O2VBQUE7Ozt5QkF6SXNDOzBCQUVzRDtBQUU1RixJQUFNLEFBQUVBLFVBQVlDLGdDQUFxQixDQUFqQ0Q7QUFFUixTQUFTRSxPQUFPQyxXQUFXLEVBQUVDLE9BQU8sRUFBRTtJQUNwQyxJ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
|
package/lib/styles.js
CHANGED
|
@@ -30,9 +30,6 @@ _export(exports, {
|
|
|
30
30
|
toggleSVGPaddingRight: function() {
|
|
31
31
|
return toggleSVGPaddingRight;
|
|
32
32
|
},
|
|
33
|
-
dragEntryItemFontSize: function() {
|
|
34
|
-
return dragEntryItemFontSize;
|
|
35
|
-
},
|
|
36
33
|
entryItemDivMinHeight: function() {
|
|
37
34
|
return entryItemDivMinHeight;
|
|
38
35
|
},
|
|
@@ -62,7 +59,6 @@ var fileNameSVGHeight = "2rem";
|
|
|
62
59
|
var rubbishBinSVGHeight = "4rem";
|
|
63
60
|
var markerSVGMarginLeft = "3rem";
|
|
64
61
|
var toggleSVGPaddingRight = "1rem";
|
|
65
|
-
var dragEntryItemFontSize = "1.2rem";
|
|
66
62
|
var entryItemDivMinHeight = "2rem";
|
|
67
63
|
var entriesListPaddingLeft = "2rem";
|
|
68
64
|
var entryItemDivPaddingTop = "1.25rem";
|
|
@@ -71,4 +67,4 @@ var fileNameSVGPaddingLeft = "3rem";
|
|
|
71
67
|
var fileNameSVGPaddingRight = "1rem";
|
|
72
68
|
var directoryNameSVGPaddingRight = "1rem";
|
|
73
69
|
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zdHlsZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBtYXJrZXJTVkdIZWlnaHQgPSBcIjJyZW1cIjtcbmV4cG9ydCBjb25zdCBleHBsb3JlclBhZGRpbmcgPSBcIjJyZW1cIjtcbmV4cG9ydCBjb25zdCB0b2dnbGVTVkdIZWlnaHQgPSBcIjJyZW1cIjtcbmV4cG9ydCBjb25zdCBmaWxlTmFtZVNWR0hlaWdodCA9IFwiMnJlbVwiO1xuZXhwb3J0IGNvbnN0IHJ1YmJpc2hCaW5TVkdIZWlnaHQgPSBcIjRyZW1cIjtcbmV4cG9ydCBjb25zdCBtYXJrZXJTVkdNYXJnaW5MZWZ0ID0gXCIzcmVtXCI7XG5leHBvcnQgY29uc3QgdG9nZ2xlU1ZHUGFkZGluZ1JpZ2h0ID0gXCIxcmVtXCI7XG5leHBvcnQgY29uc3QgZW50cnlJdGVtRGl2TWluSGVpZ2h0ID0gXCIycmVtXCI7XG5leHBvcnQgY29uc3QgZW50cmllc0xpc3RQYWRkaW5nTGVmdCA9IFwiMnJlbVwiO1xuZXhwb3J0IGNvbnN0IGVudHJ5SXRlbURpdlBhZGRpbmdUb3AgPSBcIjEuMjVyZW1cIjtcbmV4cG9ydCBjb25zdCBkaXJlY3RvcnlOYW1lU1ZHSGVpZ2h0ID0gXCIycmVtXCI7XG5leHBvcnQgY29uc3QgZmlsZU5hbWVTVkdQYWRkaW5nTGVmdCA9IFwiM3JlbVwiO1xuZXhwb3J0IGNvbnN0IGZpbGVOYW1lU1ZHUGFkZGluZ1JpZ2h0ID0gXCIxcmVtXCI7XG5leHBvcnQgY29uc3QgZGlyZWN0b3J5TmFtZVNWR1BhZGRpbmdSaWdodCA9IFwiMXJlbVwiO1xuIl0sIm5hbWVzIjpbIm1hcmtlclNWR0hlaWdodCIsImV4cGxvcmVyUGFkZGluZyIsInRvZ2dsZVNWR0hlaWdodCIsImZpbGVOYW1lU1ZHSGVpZ2h0IiwicnViYmlzaEJpblNWR0hlaWdodCIsIm1hcmtlclNWR01hcmdpbkxlZnQiLCJ0b2dnbGVTVkdQYWRkaW5nUmlnaHQiLCJlbnRyeUl0ZW1EaXZNaW5IZWlnaHQiLCJlbnRyaWVzTGlzdFBhZGRpbmdMZWZ0IiwiZW50cnlJdGVtRGl2UGFkZGluZ1RvcCIsImRpcmVjdG9yeU5hbWVTVkdIZWlnaHQiLCJmaWxlTmFtZVNWR1BhZGRpbmdMZWZ0IiwiZmlsZU5hbWVTVkdQYWRkaW5nUmlnaHQiLCJkaXJlY3RvcnlOYW1lU1ZHUGFkZGluZ1JpZ2h0Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFFYUEsZUFBZTtlQUFmQTs7SUFDQUMsZUFBZTtlQUFmQTs7SUFDQUMsZUFBZTtlQUFmQTs7SUFDQUMsaUJBQWlCO2VBQWpCQTs7SUFDQUMsbUJBQW1CO2VBQW5CQTs7SUFDQUMsbUJBQW1CO2VBQW5CQTs7SUFDQUMscUJBQXFCO2VBQXJCQTs7SUFDQUMscUJBQXFCO2VBQXJCQTs7SUFDQUMsc0JBQXNCO2VBQXRCQTs7SUFDQUMsc0JBQXNCO2VBQXRCQTs7SUFDQUMsc0JBQXNCO2VBQXRCQTs7SUFDQUMsc0JBQXNCO2VBQXRCQTs7SUFDQUMsdUJBQXVCO2VBQXZCQTs7SUFDQUMsNEJBQTRCO2VBQTVCQTs7O0FBYk4sSUFBTWIsa0JBQWtCO0FBQ3hCLElBQU1DLGtCQUFrQjtBQUN4QixJQUFNQyxrQkFBa0I7QUFDeEIsSUFBTUMsb0JBQW9CO0FBQzFCLElBQU1DLHNCQUFzQjtBQUM1QixJQUFNQyxzQkFBc0I7QUFDNUIsSUFBTUMsd0JBQXdCO0FBQzlCLElBQU1DLHdCQUF3QjtBQUM5QixJQUFNQyx5QkFBeUI7QUFDL0IsSUFBTUMseUJBQXlCO0FBQy9CLElBQU1DLHlCQUF5QjtBQUMvQixJQUFNQyx5QkFBeUI7QUFDL0IsSUFBTUMsMEJBQTBCO0FBQ2hDLElBQU1DLCtCQUErQiJ9
|
package/package.json
CHANGED
package/src/button/name.js
CHANGED
|
@@ -3,8 +3,28 @@
|
|
|
3
3
|
import withStyle from "easy-with-style"; ///
|
|
4
4
|
|
|
5
5
|
import { Button } from "easy";
|
|
6
|
+
import { INLINE_BLOCK } from "../constants";
|
|
6
7
|
|
|
7
8
|
class NameButton extends Button {
|
|
9
|
+
getName() {
|
|
10
|
+
const html = this.html(),
|
|
11
|
+
name = html; ///
|
|
12
|
+
|
|
13
|
+
return name;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
setName(name) {
|
|
17
|
+
const html = name; ///
|
|
18
|
+
|
|
19
|
+
this.html(html);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
show() {
|
|
23
|
+
const display = INLINE_BLOCK;
|
|
24
|
+
|
|
25
|
+
this.display(display);
|
|
26
|
+
}
|
|
27
|
+
|
|
8
28
|
didMount() {
|
|
9
29
|
const { onDoubleClick = null } = this.properties,
|
|
10
30
|
doubleClickHandler = onDoubleClick; ///
|
|
@@ -19,6 +39,20 @@ class NameButton extends Button {
|
|
|
19
39
|
this.offDoubleClick(doubleClickHandler, this);
|
|
20
40
|
}
|
|
21
41
|
|
|
42
|
+
parentContext() {
|
|
43
|
+
const showNameButton = this.show.bind(this), ///
|
|
44
|
+
hideNameButton = this.hide.bind(this), ///
|
|
45
|
+
getNameButtonName = this.getName.bind(this), ///
|
|
46
|
+
setNameButtonName = this.setName.bind(this); ///
|
|
47
|
+
|
|
48
|
+
return ({
|
|
49
|
+
showNameButton,
|
|
50
|
+
hideNameButton,
|
|
51
|
+
getNameButtonName,
|
|
52
|
+
setNameButtonName
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
|
|
22
56
|
static ignoredProperties = [
|
|
23
57
|
"onDoubleClick"
|
|
24
58
|
];
|
package/src/constants.js
CHANGED
|
@@ -6,8 +6,8 @@ import BackgroundDiv from "../../../div/background";
|
|
|
6
6
|
|
|
7
7
|
export default class DirectoryNameEntryItemDiv extends EntryItemDiv {
|
|
8
8
|
toggleButtonMouseDownHandler = (event, element) => {
|
|
9
|
-
const
|
|
10
|
-
directoryNameDragEntryItem =
|
|
9
|
+
const dragEntryItem = this.getDragEntryItem(),
|
|
10
|
+
directoryNameDragEntryItem = dragEntryItem; ///
|
|
11
11
|
|
|
12
12
|
directoryNameDragEntryItem.toggle();
|
|
13
13
|
|
|
@@ -15,41 +15,48 @@ export default class DirectoryNameEntryItemDiv extends EntryItemDiv {
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
nameButtonDoubleClickHandler = (event, element) => {
|
|
18
|
-
const
|
|
19
|
-
directoryNameDragEntryItem =
|
|
18
|
+
const dragEntryItem = this.getDragEntryItem(),
|
|
19
|
+
directoryNameDragEntryItem = dragEntryItem; ///
|
|
20
20
|
|
|
21
21
|
directoryNameDragEntryItem.toggle();
|
|
22
22
|
|
|
23
23
|
event.stopPropagation();
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
svgButtonClickHandler = (event, element) => {
|
|
27
|
-
const explorer = this.getExplorer(),
|
|
28
|
-
parentElement = this.getParentElement(),
|
|
29
|
-
dragEntryItem = parentElement; ///
|
|
30
|
-
|
|
31
|
-
explorer.selectDragEntryItem(dragEntryItem);
|
|
32
|
-
|
|
33
|
-
event.stopPropagation();
|
|
34
|
-
}
|
|
35
|
-
|
|
36
26
|
childElements() {
|
|
37
|
-
const { name, NameButton, ToggleButton, DirectoryNameSVG } = this.properties
|
|
27
|
+
const { name, NameInput, NameButton, ToggleButton, DirectoryNameSVG, onNameChange, onNameCancel, onSVGButtonClick } = this.properties,
|
|
28
|
+
changeHandler = onNameChange, ///
|
|
29
|
+
cancelHandler = onNameCancel, ///
|
|
30
|
+
svgButtonClickHandler = onSVGButtonClick; ///
|
|
38
31
|
|
|
39
32
|
return ([
|
|
40
33
|
|
|
41
34
|
<ToggleButton onMouseDown={this.toggleButtonMouseDownHandler} />,
|
|
42
|
-
<SVGButton onClick={
|
|
35
|
+
<SVGButton onClick={svgButtonClickHandler} >
|
|
43
36
|
<DirectoryNameSVG/>
|
|
44
37
|
</SVGButton>,
|
|
45
38
|
<NameButton onDoubleClick={this.nameButtonDoubleClickHandler} >
|
|
46
39
|
{name}
|
|
47
40
|
</NameButton>,
|
|
41
|
+
<NameInput onChange={changeHandler} onCancel={cancelHandler} >
|
|
42
|
+
{name}
|
|
43
|
+
</NameInput>,
|
|
48
44
|
<BackgroundDiv/>
|
|
49
45
|
|
|
50
46
|
]);
|
|
51
47
|
}
|
|
52
48
|
|
|
49
|
+
static ignoredProperties = [
|
|
50
|
+
"name",
|
|
51
|
+
"NameInput",
|
|
52
|
+
"NameButton",
|
|
53
|
+
"ToggleButton",
|
|
54
|
+
"DirectoryNameSVG",
|
|
55
|
+
"onNameChange",
|
|
56
|
+
"onNameCancel",
|
|
57
|
+
"onSVGButtonClick"
|
|
58
|
+
];
|
|
59
|
+
|
|
53
60
|
static defaultProperties = {
|
|
54
61
|
className: "directory-name"
|
|
55
62
|
};
|
|
@@ -7,40 +7,46 @@ import BackgroundDiv from "../../../div/background";
|
|
|
7
7
|
export default class FileNameEntryItemDiv extends EntryItemDiv {
|
|
8
8
|
nameButtonDoubleClickHandler = (event, element) => {
|
|
9
9
|
const explorer = this.getExplorer(),
|
|
10
|
-
|
|
11
|
-
fileNameDragEntryItem =
|
|
10
|
+
dragEntryItem = this.getDragEntryItem(),
|
|
11
|
+
fileNameDragEntryItem = dragEntryItem; ///
|
|
12
12
|
|
|
13
13
|
explorer.openFileNameDragEntryItem(fileNameDragEntryItem);
|
|
14
14
|
|
|
15
15
|
event.stopPropagation();
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
svgButtonClickHandler = (event, element) => {
|
|
19
|
-
const explorer = this.getExplorer(),
|
|
20
|
-
parentElement = this.getParentElement(),
|
|
21
|
-
dragEntryItem = parentElement; ///
|
|
22
|
-
|
|
23
|
-
explorer.selectDragEntryItem(dragEntryItem);
|
|
24
|
-
|
|
25
|
-
event.stopPropagation();
|
|
26
|
-
}
|
|
27
|
-
|
|
28
18
|
childElements() {
|
|
29
|
-
const { name, NameButton, FileNameSVG } = this.properties
|
|
19
|
+
const { name, NameInput, NameButton, FileNameSVG, onNameChange, onNameCancel, onSVGButtonClick } = this.properties,
|
|
20
|
+
changeHandler = onNameChange, ///
|
|
21
|
+
cancelHandler = onNameCancel, ///
|
|
22
|
+
svgButtonClickHandler = onSVGButtonClick; ///
|
|
30
23
|
|
|
31
24
|
return ([
|
|
32
25
|
|
|
33
|
-
<SVGButton onClick={
|
|
26
|
+
<SVGButton onClick={svgButtonClickHandler} >
|
|
34
27
|
<FileNameSVG/>
|
|
35
28
|
</SVGButton>,
|
|
36
29
|
<NameButton onDoubleClick={this.nameButtonDoubleClickHandler} >
|
|
37
30
|
{name}
|
|
38
31
|
</NameButton>,
|
|
32
|
+
<NameInput onChange={changeHandler} onCancel={cancelHandler} >
|
|
33
|
+
{name}
|
|
34
|
+
</NameInput>,
|
|
39
35
|
<BackgroundDiv/>
|
|
40
36
|
|
|
41
37
|
]);
|
|
42
38
|
}
|
|
43
39
|
|
|
40
|
+
static ignoredProperties = [
|
|
41
|
+
"name",
|
|
42
|
+
"NameInput",
|
|
43
|
+
"NameButton",
|
|
44
|
+
"FileNameSVG",
|
|
45
|
+
"onNameChange",
|
|
46
|
+
"onNameCancel",
|
|
47
|
+
"onSVGButtonClick"
|
|
48
|
+
];
|
|
49
|
+
|
|
44
50
|
static defaultProperties = {
|
|
45
51
|
className: "file-name"
|
|
46
52
|
};
|
package/src/div/item/entry.js
CHANGED
|
@@ -13,6 +13,13 @@ class EntryItemDiv extends Element {
|
|
|
13
13
|
return explorer;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
+
getDragEntryItem() {
|
|
17
|
+
const parentElement = this.getParentElement(),
|
|
18
|
+
dragEntryItem = parentElement; ///
|
|
19
|
+
|
|
20
|
+
return dragEntryItem; ///
|
|
21
|
+
}
|
|
22
|
+
|
|
16
23
|
static tagName = "div";
|
|
17
24
|
|
|
18
25
|
static ignoredProperties = [
|
package/src/eventTypes.js
CHANGED
|
@@ -4,10 +4,12 @@ export const OPEN_EVENT_TYPE = "open";
|
|
|
4
4
|
export const MOVE_EVENT_TYPE = "move";
|
|
5
5
|
export const REMOVE_EVENT_TYPE = "remove";
|
|
6
6
|
export const SELECT_EVENT_TYPE = "select";
|
|
7
|
+
export const PATH_CHANGE_EVENT_TYPE = "pathchange";
|
|
7
8
|
|
|
8
9
|
export default {
|
|
9
10
|
OPEN_EVENT_TYPE,
|
|
10
11
|
MOVE_EVENT_TYPE,
|
|
11
12
|
REMOVE_EVENT_TYPE,
|
|
12
|
-
SELECT_EVENT_TYPE
|
|
13
|
+
SELECT_EVENT_TYPE,
|
|
14
|
+
PATH_CHANGE_EVENT_TYPE
|
|
13
15
|
};
|