@sunbird-cb/tree-hierarchy 0.0.9-cbrelease-4.8.26 → 0.0.11-cbrelease-4.8.26

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.
@@ -82,7 +82,30 @@ export class ConnectorService {
82
82
  container.style.right = '0';
83
83
  container.style.width = '100%';
84
84
  container.style.height = '100%';
85
- container.style.pointerEvents = 'none';
85
+ const resizeObserver = new ResizeObserver(entries => {
86
+ for (const entry of entries) {
87
+ if (entry.target === treeViewComponent) {
88
+ container.style.width = `${entry.contentRect.width}px`;
89
+ if (this.connectorMap) {
90
+ Object.values(this.connectorMap).forEach((connector) => {
91
+ if (connector && connector.lines) {
92
+ connector.lines.forEach((item) => {
93
+ if (item.line && typeof item.line.position === 'function') {
94
+ item.line.position();
95
+ }
96
+ });
97
+ }
98
+ });
99
+ }
100
+ }
101
+ }
102
+ });
103
+ resizeObserver.observe(treeViewComponent);
104
+ treeViewComponent.addEventListener('scroll', () => {
105
+ overflowWrapper.style.width = `${treeViewComponent.scrollWidth}px`;
106
+ overflowWrapper.style.height = `${treeViewComponent.scrollHeight}px`;
107
+ this.repositionAllLines();
108
+ });
86
109
  overflowWrapper.appendChild(container);
87
110
  treeViewComponent.appendChild(overflowWrapper);
88
111
  }
@@ -260,4 +283,4 @@ export class ConnectorService {
260
283
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConnectorService, decorators: [{
261
284
  type: Injectable
262
285
  }], ctorParameters: function () { return []; } });
263
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdHJlZS1oaWVyYXJjaHkvc3JjL2xpYi9zZXJ2aWNlcy9jb25uZWN0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQzs7QUFrQnpCLE1BQU0sT0FBTyxnQkFBZ0I7SUFLM0I7UUFKQSxpQkFBWSxHQUF5QixFQUFFLENBQUM7UUFFeEMsc0JBQWlCLEdBQUcsb0JBQW9CLENBQUM7SUFHekMsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFXLEVBQUUsTUFBVyxFQUFFLFVBQWUsYUFBYSxFQUFFLG9CQUF5QixTQUFTLEVBQUUsb0JBQXlCLFNBQVM7UUFDdEksTUFBTSxRQUFRLEdBQVEsRUFBQyxHQUFHLGFBQWEsRUFBRSxHQUFHLE9BQU8sRUFBQyxDQUFDO1FBQ3JELFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUE7UUFDekIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3pCLElBQUksYUFBYSxHQUFtQixFQUFFLENBQUM7WUFDdkMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUN6QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzVELGFBQWEsQ0FBQyxJQUFJLENBQUM7b0JBQ2pCLE1BQU0sRUFBRSxPQUFPO29CQUNmLElBQUksRUFBRSxRQUFRO2lCQUNmLENBQUMsQ0FBQztnQkFFSCxJQUFHLGlCQUFpQixFQUFFO29CQUNw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QkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZWZhdWx0Q29uZmlnIH0gZnJvbSAnLi4vY29uc3RhbnRzL2FwcC1jb25zdGFudCc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5cbmludGVyZmFjZSBDb25uZWN0ZWREb3Qge1xuICB0YXJnZXQ6IGFueTtcbiAgbGluZTogYW55O1xufVxuXG5pbnRlcmZhY2UgRDNMaW5lIHtcbiAgc291cmNlOiBhbnk7XG4gIHRhcmdldDogYW55O1xuICBwYXRoOiBhbnk7XG4gIHN2ZzogYW55O1xuICBwb3NpdGlvbjogKCkgPT4gdm9pZDtcbiAgc2hvdzogKGFuaW1hdGlvbj86IHN0cmluZykgPT4gdm9pZDtcbiAgcmVtb3ZlOiAoKSA9PiB2b2lkO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29ubmVjdG9yU2VydmljZSB7XG4gIGNvbm5lY3Rvck1hcDoge1trZXk6IHN0cmluZ106IGFueX0gPSB7fTtcbiAgZWxtV3JhcHBlcjogYW55O1xuICBjb250YWluZXJTZWxlY3RvciA9ICcjdHJlZVZpZXdDb250YWluZXInOyAvLyBZb3UgbWlnaHQgbmVlZCB0byBhZGp1c3QgdGhpcyBzZWxlY3RvclxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICB9XG5cbiAgX2RyYXdMaW5lKHNvdXJjZTogYW55LCB0YXJnZXQ6IGFueSwgb3B0aW9uczogYW55ID0gZGVmYXVsdENvbmZpZywgc291cmNlQ29udGFpbmVySWQ6IGFueSA9IHVuZGVmaW5lZCwgdGFyZ2V0Q29udGFpbmVySWQ6IGFueSA9IHVuZGVmaW5lZCk6IGFueSB7XG4gICAgY29uc3QgX29wdGlvbnMgPSA8YW55PnsuLi5kZWZhdWx0Q29uZmlnLCAuLi5vcHRpb25zfTtcbiAgICBfb3B0aW9uc1snZGFzaGVkJ10gPSB0cnVlXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSkge1xuICAgICAgbGV0IGNvbm5lY3RlZERvdHM6IENvbm5lY3RlZERvdFtdID0gW107XG4gICAgICB0YXJnZXQuZm9yRWFjaCgoX3RhcmdldCkgPT4ge1xuICAgICAgICBjb25zdCB0ZW1wTGluZSA9IHRoaXMucmVuZGVyTGluZShzb3VyY2UsIF90YXJnZXQsIF9vcHRpb25zKTtcbiAgICAgICAgY29ubmVjdGVkRG90cy5wdXNoKHtcbiAgICAgICAgICB0YXJnZXQ6IF90YXJnZXQsXG4gICAgICAgICAgbGluZTogdGVtcExpbmVcbiAgICAgICAgfSk7XG4gICAgICAgIFxuICAgICAgICBpZihzb3VyY2VDb250YWluZXJJZCkge1xuICAgICAgICAgIGNvbnN0IHNvdXJjZUNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc291cmNlQ29udGFpbmVySWQpO1xuICAgICAgICAgIGlmIChzb3VyY2VDb250YWluZXIpIHtcbiAgICAgICAgICAgIHNvdXJjZUNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoKSA9PiB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGVtcExpbmUgJiYgdGVtcExpbmUucG9zaXRpb24oKTtcbiAgICAgICAgICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgICAgICAgICAgLy8gRXJyb3IgaGFuZGxpbmdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAodGFyZ2V0Q29udGFpbmVySWQpIHtcbiAgICAgICAgICBjb25zdCB0YXJnZXRDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRhcmdldENvbnRhaW5lcklkKTtcbiAgICAgICAgICBpZiAodGFyZ2V0Q29udGFpbmVyKSB7XG4gICAgICAgICAgICB0YXJnZXRDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKCkgPT4ge1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHRlbXBMaW5lICYmIHRlbXBMaW5lLnBvc2l0aW9uKCk7XG4gICAgICAgICAgICAgIH0gY2F0Y2goZSkge1xuICAgICAgICAgICAgICAgIC8vIEVycm9yIGhhbmRsaW5nXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gY29ubmVjdGVkRG90cztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucmVuZGVyTGluZShzb3VyY2UsIHRhcmdldCwgX29wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyTGluZShzb3VyY2U6IGFueSwgdGFyZ2V0OiBhbnksIG9wdGlvbnM6IGFueSk6IEQzTGluZSB7XG4gICAgLy8gRmluZCBvciBjcmVhdGUgdGhlIGNvbnRhaW5lciBlbGVtZW50XG4gICAgY29uc3QgdHJlZVZpZXdDb21wb25lbnQ6IGFueSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5jb250YWluZXJTZWxlY3Rvcik7XG4gICAgaWYgKCF0cmVlVmlld0NvbXBvbmVudCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc291cmNlOiBudWxsLFxuICAgICAgICB0YXJnZXQ6IG51bGwsXG4gICAgICAgIHBhdGg6IG51bGwsXG4gICAgICAgIHN2ZzogbnVsbCxcbiAgICAgICAgcG9zaXRpb246ICgpID0+IHt9LFxuICAgICAgICBzaG93OiAoKSA9PiB7fSxcbiAgICAgICAgcmVtb3ZlOiAoKSA9PiB7fVxuICAgICAgfTtcbiAgICB9XG4gICAgXG4gICAgLy8gQ3JlYXRlIG9yIGdldCBjb250YWluZXIgZm9yIHRoZSBTVkdcbiAgICBsZXQgY29udGFpbmVyOiBhbnkgPSB0cmVlVmlld0NvbXBvbmVudC5xdWVyeVNlbGVjdG9yKCcjbGVhZGVyLWxpbmUtY29udGFpbmVyJyk7XG4gICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgIC8vIENyZWF0ZSBhIHdyYXBwZXIgY29udGFpbmVyIHRvIGNvbnRyb2wgdGhlIG92ZXJmbG93IGF0IHRoZSB0b3BcbiAgICAgIGxldCBvdmVyZmxvd1dyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIG92ZXJmbG93V3JhcHBlci5pZCA9ICdsZWFkZXItbGluZS1vdmVyZmxvdy13cmFwcGVyJztcbiAgICAgIG92ZXJmbG93V3JhcHBlci5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICBvdmVyZmxvd1dyYXBwZXIuc3R5bGUudG9wID0gJzgwcHgnOyAvLyBTYW1lIHRvcCBwb3NpdGlvblxuICAgICAgb3ZlcmZsb3dXcmFwcGVyLnN0eWxlLmJvdHRvbSA9ICcwJztcbiAgICAgIG92ZXJmbG93V3JhcHBlci5zdHlsZS5sZWZ0ID0gJzAnO1xuICAgICAgb3ZlcmZsb3dXcmFwcGVyLnN0eWxlLnJpZ2h0ID0gJzAnO1xuICAgICAgb3ZlcmZsb3dXcmFwcGVyLnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7IC8vIEhpZGUgYW55dGhpbmcgYWJvdmUgdGhpcyBjb250YWluZXJcbiAgICAgIG92ZXJmbG93V3JhcHBlci5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnOyAvLyBBbGxvdyBjbGlja3MgdG8gcGFzcyB0aHJvdWdoXG4gICAgICBcbiAgICAgIC8vIE9yaWdpbmFsIGNvbnRhaW5lciByZW1haW5zIHRoZSBzYW1lIGJ1dCBwb3NpdGlvbmVkIGF0IHRvcDowIHdpdGhpbiB0aGUgd3JhcHBlclxuICAgICAgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBjb250YWluZXIuaWQgPSAnbGVhZGVyLWxpbmUtY29udGFpbmVyJztcbiAgICAgIGNvbnRhaW5lci5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICBjb250YWluZXIuc3R5bGUudG9wID0gJzAnOyAvLyBDaGFuZ2VkIHRvIDAgYXMgaXQncyBub3cgcmVsYXRpdmUgdG8gd3JhcHBlclxuICAgICAgY29udGFpbmVyLnN0eWxlLmJvdHRvbSA9ICcwJztcbiAgICAgIGNvbnRhaW5lci5zdHlsZS5sZWZ0ID0gJzAnO1xuICAgICAgY29udGFpbmVyLnN0eWxlLnJpZ2h0ID0gJzAnO1xuICAgICAgY29udGFpbmVyLnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgICAgY29udGFpbmVyLnN0eWxlLmhlaWdodCA9ICcxMDAlJztcbiAgICAgIGNvbnRhaW5lci5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnOyAvLyBBbGxvdyBjbGlja3MgdG8gcGFzcyB0aHJvdWdoXG4gICAgICBvdmVyZmxvd1dyYXBwZXIuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcbiAgICAgIHRyZWVWaWV3Q29tcG9uZW50LmFwcGVuZENoaWxkKG92ZXJmbG93V3JhcHBlcik7XG4gICAgfVxuICAgIFxuICAgIC8vIFN0b3JlIGNvbnRhaW5lciByZWZlcmVuY2UgZm9yIGFjY2VzcyBpbiBvdGhlciBtZXRob2RzXG4gICAgdGhpcy5lbG1XcmFwcGVyID0gY29udGFpbmVyO1xuICAgIFxuICAgIC8vIEdldCB0aGUgc291cmNlIGFuZCB0YXJnZXQgZWxlbWVudHNcbiAgICBsZXQgc291cmNlRWxlbWVudCA9IHNvdXJjZTtcbiAgICBsZXQgdGFyZ2V0RWxlbWVudDogYW55O1xuICAgIFxuICAgIGlmICh0YXJnZXQudGFyZ2V0VHlwZSA9PT0gJ2lkJykge1xuICAgICAgdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldC50YXJnZXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0YXJnZXRFbGVtZW50ID0gdGFyZ2V0LnRhcmdldDtcbiAgICB9XG4gICAgXG4gICAgLy8gRW5zdXJlIGJvdGggZWxlbWVudHMgZXhpc3RcbiAgICBpZiAoIXNvdXJjZUVsZW1lbnQgfHwgIXRhcmdldEVsZW1lbnQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogbnVsbCxcbiAgICAgICAgdGFyZ2V0OiBudWxsLFxuICAgICAgICBwYXRoOiBudWxsLFxuICAgICAgICBzdmc6IG51bGwsXG4gICAgICAgIHBvc2l0aW9uOiAoKSA9PiB7fSxcbiAgICAgICAgc2hvdzogKCkgPT4ge30sXG4gICAgICAgIHJlbW92ZTogKCkgPT4ge31cbiAgICAgIH07XG4gICAgfVxuICAgIFxuICAgIC8vIENyZWF0ZSBhIHVuaXF1ZSBJRCBmb3IgdGhlIFNWR1xuICAgIGNvbnN0IHN2Z0lkID0gJ2QzLWxpbmUtJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KTtcbiAgICBcbiAgICAvLyBDcmVhdGUgU1ZHIGVsZW1lbnRcbiAgICBjb25zdCBzdmcgPSBkMy5zZWxlY3QoY29udGFpbmVyKVxuICAgICAgLmFwcGVuZCgnc3ZnJylcbiAgICAgIC5hdHRyKCdpZCcsIHN2Z0lkKVxuICAgICAgLmF0dHIoJ2NsYXNzJywgJ2xlYWRlci1saW5lJylcbiAgICAgIC5zdHlsZSgncG9zaXRpb24nLCAnYWJzb2x1dGUnKVxuICAgICAgLnN0eWxlKCd0b3AnLCAnMCcpXG4gICAgICAuc3R5bGUoJ2xlZnQnLCAnMCcpXG4gICAgICAuc3R5bGUoJ3dpZHRoJywgJzEwMCUnKVxuICAgICAgLnN0eWxlKCdoZWlnaHQnLCAnMTAwJScpXG4gICAgICAuc3R5bGUoJ3BvaW50ZXItZXZlbnRzJywgJ25vbmUnKVxuICAgICAgLnN0eWxlKCdvdmVyZmxvdycsICd2aXNpYmxlJyk7XG4gICAgXG4gICAgLy8gQ2FsY3VsYXRlIHBvc2l0aW9uc1xuICAgIGNvbnN0IHNvdXJjZVJlY3QgPSBzb3VyY2VFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHRhcmdldFJlY3QgPSB0YXJnZXRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgXG4gICAgLy8gRGV0ZXJtaW5lIGVkZ2UgY29ubmVjdGlvbiBwb2ludHMgLSBhbHdheXMgcmlnaHQgdG8gbGVmdFxuICAgIGxldCBzb3VyY2VYLCBzb3VyY2VZLCB0YXJnZXRYLCB0YXJnZXRZO1xuXG4gICAgLy8gU291cmNlIC0gYWx3YXlzIGNvbm5lY3QgZnJvbSB0aGUgcmlnaHQgZWRnZVxuICAgIHNvdXJjZVggPSBzb3VyY2VSZWN0LnJpZ2h0IC0gY29udGFpbmVyUmVjdC5sZWZ0O1xuICAgIHNvdXJjZVkgPSBzb3VyY2VSZWN0LnRvcCArIChzb3VyY2VSZWN0LmhlaWdodCAvIDIpIC0gY29udGFpbmVyUmVjdC50b3A7XG5cbiAgICAvLyBUYXJnZXQgLSBhbHdheXMgY29ubmVjdCB0byB0aGUgbGVmdCBlZGdlXG4gICAgdGFyZ2V0WCA9IHRhcmdldFJlY3QubGVmdCAtIGNvbnRhaW5lclJlY3QubGVmdDtcbiAgICB0YXJnZXRZID0gdGFyZ2V0UmVjdC50b3AgKyAodGFyZ2V0UmVjdC5oZWlnaHQgLyAyKSAtIGNvbnRhaW5lclJlY3QudG9wO1xuICAgIFxuICAgIC8vIENyZWF0ZSBsaW5lIHdpdGggaW5pdGlhbCBvcGFjaXR5IDEgKHZpc2libGUgaW1tZWRpYXRlbHkpXG4gICAgLy8gSW5zdGVhZCBvZiBhIHN0cmFpZ2h0IGxpbmUsIGNyZWF0ZSBhIGdyaWQgbGluZSB3aXRoIHJpZ2h0IGFuZ2xlc1xuICAgIGNvbnN0IHBhdGg6IGFueSA9IHN2Zy5hcHBlbmQoJ3BhdGgnKVxuICAgICAgLmF0dHIoJ2QnLCBjcmVhdGVHcmlkUGF0aChzb3VyY2VYLCBzb3VyY2VZLCB0YXJnZXRYLCB0YXJnZXRZKSlcbiAgICAgIC5zdHlsZSgnc3Ryb2tlJywgJyMwMDAnKSAvLyBEYXJrZXIgY29sb3IgZm9yIGJldHRlciB2aXNpYmlsaXR5XG4gICAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsIG9wdGlvbnMuc2l6ZSB8fCAyKVxuICAgICAgLnN0eWxlKCdmaWxsJywgJ25vbmUnKVxuICAgICAgLnN0eWxlKCdvcGFjaXR5JywgMSkgLy8gU3RhcnQgdmlzaWJsZVxuICAgICAgLnN0eWxlKCdzdHJva2UtbGluZWpvaW4nLCAncm91bmQnKSAvLyBSb3VuZCBjb3JuZXJzIGZvciBhIHNtb290aGVyIGxvb2tcbiAgICAgIC5zdHlsZSgnc3Ryb2tlLWRhc2hhcnJheScsIG9wdGlvbnMuZGFzaGVkID8gJzUsNScgOiAnbm9uZScpOyAvLyBBZGQgZGFzaGVkIHN0eWxlIGlmIHNwZWNpZmllZFxuICAgIFxuICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgYSBncmlkIHBhdGhcbiAgICBmdW5jdGlvbiBjcmVhdGVHcmlkUGF0aCh4MTogbnVtYmVyLCB5MTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyKSB7XG4gICAgICAvLyBDYWxjdWxhdGUgdGhlIG1pZHBvaW50IG9uIHRoZSB4LWF4aXNcbiAgICAgIGNvbnN0IG1pZFggPSB4MSArICh4MiAtIHgxKSAvIDI7XG4gICAgICBcbiAgICAgIC8vIENyZWF0ZSBhIHBhdGggd2l0aCAzIHNlZ21lbnRzIChob3Jpem9udGFsLCB2ZXJ0aWNhbCwgaG9yaXpvbnRhbClcbiAgICAgIHJldHVybiBgTSAke3gxfSAke3kxfSBMICR7bWlkWH0gJHt5MX0gTCAke21pZFh9ICR7eTJ9IEwgJHt4Mn0gJHt5Mn1gO1xuICAgIH1cbiAgXG4gICAgLy8gRGVmaW5lIG1hcmtlcnMgKGRpc2sgYXQgc3RhcnQgYW5kIGFycm93IGF0IGVuZClcbiAgICBjb25zdCBkZWZzID0gc3ZnLmFwcGVuZCgnZGVmcycpO1xuICAgIFxuICAgIC8vIEFkZCBzdGFydCBtYXJrZXIgKGRpc2svY2lyY2xlKVxuICAgIGlmIChvcHRpb25zLnN0YXJ0UGx1ZyA9PT0gJ2Rpc2MnIHx8IG9wdGlvbnMuc3RhcnRQbHVnICE9PSBmYWxzZSkge1xuICAgICAgZGVmcy5hcHBlbmQoJ21hcmtlcicpXG4gICAgICAgIC5hdHRyKCdpZCcsIGBzdGFydC1jaXJjbGUtJHtzdmdJZH1gKVxuICAgICAgICAuYXR0cigndmlld0JveCcsICcwIDAgMTAgMTAnKVxuICAgICAgICAuYXR0cigncmVmWCcsIDUpXG4gICAgICAgIC5hdHRyKCdyZWZZJywgNSlcbiAgICAgICAgLmF0dHIoJ21hcmtlcldpZHRoJywgOClcbiAgICAgICAgLmF0dHIoJ21hcmtlckhlaWdodCcsIDgpXG4gICAgICAgIC5hdHRyKCdvcmllbnQnLCAnYXV0bycpXG4gICAgICAgIC5hcHBlbmQoJ2NpcmNsZScpXG4gICAgICAgIC5hdHRyKCdjeCcsIDUpXG4gICAgICAgIC5hdHRyKCdjeScsIDUpXG4gICAgICAgIC5hdHRyKCdyJywgNC41KVxuICAgICAgICAuc3R5bGUoJ2ZpbGwnLCBvcHRpb25zLmNvbG9yIHx8ICcjMzMzJyk7XG4gICAgICBcbiAgICAgIHBhdGguYXR0cignbWFya2VyLXN0YXJ0JywgYHVybCgjc3RhcnQtY2lyY2xlLSR7c3ZnSWR9KWApO1xuICAgIH1cbiAgICBcbiAgICAvLyBBZGQgZW5kIG1hcmtlciAoYXJyb3cpXG4gICAgaWYgKG9wdGlvbnMuZW5kUGx1ZyA9PT0gJ2Fycm93JyB8fCBvcHRpb25zLmVuZFBsdWcgIT09IGZhbHNlKSB7XG4gICAgICBkZWZzLmFwcGVuZCgnbWFya2VyJylcbiAgICAgICAgLmF0dHIoJ2lkJywgYGFycm93aGVhZC0ke3N2Z0lkfWApXG4gICAgICAgIC5hdHRyKCd2aWV3Qm94JywgJzAgMCAxMCAxMCcpXG4gICAgICAgIC5hdHRyKCdyZWZYJywgOCkgIFxuICAgICAgICAuYXR0cigncmVmWScsIDUpXG4gICAgICAgIC5hdHRyKCdtYXJrZXJXaWR0aCcsIDkpXG4gICAgICAgIC5hdHRyKCdtYXJrZXJIZWlnaHQnLCA5KVxuICAgICAgICAuYXR0cignb3JpZW50JywgJ2F1dG8nKVxuICAgICAgICAuYXBwZW5kKCdwYXRoJylcbiAgICAgICAgLmF0dHIoJ2QnLCAnTSAwIDAgTCAxMCA1IEwgMCAxMCB6JylcbiAgICAgICAgLnN0eWxlKCdmaWxsJywgb3B0aW9ucy5jb2xvciB8fCAnIzMzMycpO1xuICAgICAgXG4gICAgICBwYXRoLmF0dHIoJ21hcmtlci1lbmQnLCBgdXJsKCNhcnJvd2hlYWQtJHtzdmdJZH0pYCk7XG4gICAgfVxuICAgIFxuICAgIC8vIENyZWF0ZSB0aGUgRDNMaW5lIG9iamVjdCB3aXRoIEFQSSBzaW1pbGFyIHRvIExlYWRlckxpbmVcbiAgICBjb25zdCBkM0xpbmU6IEQzTGluZSA9IHtcbiAgICAgIHNvdXJjZTogc291cmNlRWxlbWVudCxcbiAgICAgIHRhcmdldDogdGFyZ2V0RWxlbWVudCxcbiAgICAgIHBhdGg6IHBhdGgsXG4gICAgICBzdmc6IHN2ZyxcbiAgICAgIFxuICAgICAgLy8gUG9zaXRpb24gbWV0aG9kIHRvIHVwZGF0ZSBsaW5lIGNvb3JkaW5hdGVzXG4gICAgICBwb3NpdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIC8vIEdldCB1cGRhdGVkIHBvc2l0aW9uc1xuICAgICAgICBjb25zdCB1cGRhdGVkU291cmNlUmVjdCA9IHNvdXJjZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRUYXJnZXRSZWN0ID0gdGFyZ2V0RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgdXBkYXRlZENvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIFxuICAgICAgICAvLyBTb3VyY2UgLSBhbHdheXMgY29ubmVjdCBmcm9tIHRoZSByaWdodCBlZGdlXG4gICAgICAgIGNvbnN0IHVwZGF0ZWRTb3VyY2VYID0gdXBkYXRlZFNvdXJjZVJlY3QucmlnaHQgLSB1cGRhdGVkQ29udGFpbmVyUmVjdC5sZWZ0O1xuICAgICAgICBjb25zdCB1cGRhdGVkU291cmNlWSA9IHVwZGF0ZWRTb3VyY2VSZWN0LnRvcCArICh1cGRhdGVkU291cmNlUmVjdC5oZWlnaHQgLyAyKSAtIHVwZGF0ZWRDb250YWluZXJSZWN0LnRvcDtcbiAgICAgICAgXG4gICAgICAgIC8vIFRhcmdldCAtIGFsd2F5cyBjb25uZWN0IHRvIHRoZSBsZWZ0IGVkZ2VcbiAgICAgICAgY29uc3QgdXBkYXRlZFRhcmdldFggPSB1cGRhdGVkVGFyZ2V0UmVjdC5sZWZ0IC0gdXBkYXRlZENvbnRhaW5lclJlY3QubGVmdDtcbiAgICAgICAgY29uc3QgdXBkYXRlZFRhcmdldFkgPSB1cGRhdGVkVGFyZ2V0UmVjdC50b3AgKyAodXBkYXRlZFRhcmdldFJlY3QuaGVpZ2h0IC8gMikgLSB1cGRhdGVkQ29udGFpbmVyUmVjdC50b3A7XG4gICAgICAgIFxuICAgICAgICAvLyBVcGRhdGUgcGF0aCB3aXRoIGdyaWQgcGF0aFxuICAgICAgICBjb25zdCBtaWRYID0gdXBkYXRlZFNvdXJjZVggKyAodXBkYXRlZFRhcmdldFggLSB1cGRhdGVkU291cmNlWCkgLyAyO1xuICAgICAgICBwYXRoLmF0dHIoJ2QnLCBgTSAke3VwZGF0ZWRTb3VyY2VYfSAke3VwZGF0ZWRTb3VyY2VZfSBMICR7bWlkWH0gJHt1cGRhdGVkU291cmNlWX0gTCAke21pZFh9ICR7dXBkYXRlZFRhcmdldFl9IEwgJHt1cGRhdGVkVGFyZ2V0WH0gJHt1cGRhdGVkVGFyZ2V0WX1gKVxuICAgICAgICAgICAgLnN0eWxlKCdzdHJva2UtZGFzaGFycmF5Jywgb3B0aW9ucy5kYXNoZWQgPyAnNSw1JyA6ICdub25lJylcbiAgICAgICAgICAgIC8vIEVuc3VyZSBtYXJrZXJzIGFyZSBwcmVzZXJ2ZWQgZHVyaW5nIHJlcG9zaXRpb25pbmdcbiAgICAgICAgICAgIC5hdHRyKCdtYXJrZXItc3RhcnQnLCBvcHRpb25zLnN0YXJ0UGx1ZyAhPT0gZmFsc2UgPyBgdXJsKCNzdGFydC1jaXJjbGUtJHtzdmdJZH0pYCA6IG51bGwpXG4gICAgICAgICAgICAuYXR0cignbWFya2VyLWVuZCcsIG9wdGlvbnMuZW5kUGx1ZyAhPT0gZmFsc2UgPyBgdXJsKCNhcnJvd2hlYWQtJHtzdmdJZH0pYCA6IG51bGwpO1xuICAgICAgfSxcbiAgICAgIFxuICAgICAgLy8gU2hvdyBtZXRob2Qgd2l0aCBhbmltYXRpb24gb3B0aW9uXG4gICAgICBzaG93OiBmdW5jdGlvbihhbmltYXRpb24gPSAnJykge1xuICAgICAgICBpZiAoYW5pbWF0aW9uID09PSAnZHJhdycpIHtcbiAgICAgICAgICAvLyBFbnN1cmUgdGhlIHBhdGggaGFzIGEgbm9kZSBiZWZvcmUgY2FsY3VsYXRpbmcgdG90YWwgbGVuZ3RoXG4gICAgICAgICAgY29uc3QgcGF0aE5vZGUgPSBwYXRoLm5vZGUoKTtcbiAgICAgICAgICBpZiAoIXBhdGhOb2RlKSByZXR1cm47XG4gICAgICAgICAgXG4gICAgICAgICAgY29uc3QgdG90YWxMZW5ndGggPSBwYXRoTm9kZS5nZXRUb3RhbExlbmd0aCgpO1xuICAgICAgICAgIFxuICAgICAgICAgIHBhdGguc3R5bGUoJ29wYWNpdHknLCAxKVxuICAgICAgICAgICAgLmF0dHIoJ3N0cm9rZS1kYXNoYXJyYXknLCB0b3RhbExlbmd0aClcbiAgICAgICAgICAgIC5hdHRyKCdzdHJva2UtZGFzaG9mZnNldCcsIHRvdGFsTGVuZ3RoKVxuICAgICAgICAgICAgLnRyYW5zaXRpb24oKVxuICAgICAgICAgICAgLmR1cmF0aW9uKG9wdGlvbnMuYW5pbU9wdGlvbnM/LmR1cmF0aW9uIHx8IDIwMDApXG4gICAgICAgICAgICAuZWFzZShkMy5lYXNlTGluZWFyKVxuICAgICAgICAgICAgLmF0dHIoJ3N0cm9rZS1kYXNob2Zmc2V0JywgMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGF0aC5zdHlsZSgnb3BhY2l0eScsIDEpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXG4gICAgICAvLyBSZW1vdmUgbWV0aG9kXG4gICAgICByZW1vdmU6IGZ1bmN0aW9uKCkge1xuICAgICAgICBzdmcucmVtb3ZlKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBcbiAgICAvLyBJbW1lZGlhdGVseSBjYWxsIHNob3cgdG8gbWFrZSB0aGUgbGluZSB2aXNpYmxlXG4gICAgZDNMaW5lLnNob3cob3B0aW9ucy5hbmltYXRpb24pO1xuICAgIFxuICAgIHJldHVybiBkM0xpbmU7XG4gIH1cblxuICB1cGRhdGVDb25uZWN0b3JzTWFwKG1hcDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5jb25uZWN0b3JNYXAgPSBtYXA7XG4gIH1cblxuICBwb3NpdGlvbihsaW5lOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIWxpbmUgfHwgIWxpbmUucG9zaXRpb24pIHJldHVybjtcbiAgICBcbiAgICB0aGlzLmVsbVdyYXBwZXIuc3R5bGUudHJhbnNmb3JtID0gJ25vbmUnO1xuICAgIHZhciByZWN0V3JhcHBlciA9IHRoaXMuZWxtV3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAvLyBNb3ZlIHRvIHRoZSBvcmlnaW4gb2YgY29vcmRpbmF0ZXMgYXMgdGhlIGRvY3VtZW50XG4gICAgdGhpcy5lbG1XcmFwcGVyLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGUoJyArXG4gICAgICAoKHJlY3RXcmFwcGVyLmxlZnQgKyB3aW5kb3cucGFnZVhPZmZzZXQpICogLTEpICsgJ3B4LCAnICtcbiAgICAgICgocmVjdFdyYXBwZXIudG9wICsgd2luZG93LnBhZ2VZT2Zmc2V0KSAqIC0xKSArICdweCknO1xuICAgIFxuICAgIGxpbmUucG9zaXRpb24oKTtcbiAgfVxuXG4gIHJlbW92ZUFsbExpbmVzKCk6IHZvaWQge1xuICAgIGlmKHRoaXMuY29ubmVjdG9yTWFwKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmNvbm5lY3Rvck1hcCkge1xuICAgICAgICAvLyBSZW1vdmUgYWxsIG4tMSBsaW5lcyBhbmQga2VlcCBvbmx5IGN1cnJlbnQgc2VsZWN0aW9uLCBhbHNvIGNsZWFyIG4rMSBsaW5lc1xuICAgICAgICBpZih0aGlzLmNvbm5lY3Rvck1hcFtrZXldICYmIHRoaXMuY29ubmVjdG9yTWFwW2tleV0ubGluZXMgJiYgdGhpcy5jb25uZWN0b3JNYXBba2V5XS5saW5lcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgbGluZXMgPSB0aGlzLmNvbm5lY3Rvck1hcFtrZXldLmxpbmVzO1xuICAgICAgICAgIGxpbmVzLmZvckVhY2goYXN5bmMgKGVsZW1lbnQ6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBhd2FpdCBlbGVtZW50LmxpbmUgJiYgZWxlbWVudC5saW5lLnJlbW92ZSgpO1xuICAgICAgICAgICAgICBsaW5lcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuY29ubmVjdG9yTWFwW2tleV0ubGluZXMgPSBsaW5lcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyB0byByZXNldCBjb25uZWN0b3IgbWFwIGFmdGVyIGNsZWFyaW5nIGFsbCB0aGUgbGluZXNcbiAgICB0aGlzLnVwZGF0ZUNvbm5lY3RvcnNNYXAoe30pO1xuICB9XG5cbiAgcmVwb3NpdGlvbkFsbExpbmVzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbm5lY3Rvck1hcCkge1xuICAgICAgT2JqZWN0LnZhbHVlcyh0aGlzLmNvbm5lY3Rvck1hcCkuZm9yRWFjaCgoY29ubmVjdG9yOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGNvbm5lY3RvciAmJiBjb25uZWN0b3IubGluZXMpIHtcbiAgICAgICAgICBjb25uZWN0b3IubGluZXMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5saW5lICYmIHR5cGVvZiBpdGVtLmxpbmUucG9zaXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgaXRlbS5saW5lLnBvc2l0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufSJdfQ==
286
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdHJlZS1oaWVyYXJjaHkvc3JjL2xpYi9zZXJ2aWNlcy9jb25uZWN0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQzs7QUFrQnpCLE1BQU0sT0FBTyxnQkFBZ0I7SUFLM0I7UUFKQSxpQkFBWSxHQUF5QixFQUFFLENBQUM7UUFFeEMsc0JBQWlCLEdBQUcsb0JBQW9CLENBQUM7SUFHekMsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFXLEVBQUUsTUFBVyxFQUFFLFVBQWUsYUFBYSxFQUFFLG9CQUF5QixTQUFTLEVBQUUsb0JBQXlCLFNBQVM7UUFDdEksTUFBTSxRQUFRLEdBQVEsRUFBQyxHQUFHLGFBQWEsRUFBRSxHQUFHLE9BQU8sRUFBQyxDQUFDO1FBQ3JELFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUE7UUFDekIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3pCLElBQUksYUFBYSxHQUFtQixFQUFFLENBQUM7WUFDdkMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUN6QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzVELGFBQWEsQ0FBQyxJQUFJLENBQUM7b0JBQ2pCLE1BQU0sRUFBRSxPQUFPO29CQUNmLElBQUksRUFBRSxRQUFRO2lCQUNmLENBQUMsQ0FBQztnQkFFSCxJQUFHLGlCQUFpQixFQUFFO29CQUNw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OlsiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRlZmF1bHRDb25maWcgfSBmcm9tICcuLi9jb25zdGFudHMvYXBwLWNvbnN0YW50JztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcblxuaW50ZXJmYWNlIENvbm5lY3RlZERvdCB7XG4gIHRhcmdldDogYW55O1xuICBsaW5lOiBhbnk7XG59XG5cbmludGVyZmFjZSBEM0xpbmUge1xuICBzb3VyY2U6IGFueTtcbiAgdGFyZ2V0OiBhbnk7XG4gIHBhdGg6IGFueTtcbiAgc3ZnOiBhbnk7XG4gIHBvc2l0aW9uOiAoKSA9PiB2b2lkO1xuICBzaG93OiAoYW5pbWF0aW9uPzogc3RyaW5nKSA9PiB2b2lkO1xuICByZW1vdmU6ICgpID0+IHZvaWQ7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb25uZWN0b3JTZXJ2aWNlIHtcbiAgY29ubmVjdG9yTWFwOiB7W2tleTogc3RyaW5nXTogYW55fSA9IHt9O1xuICBlbG1XcmFwcGVyOiBhbnk7XG4gIGNvbnRhaW5lclNlbGVjdG9yID0gJyN0cmVlVmlld0NvbnRhaW5lcic7IC8vIFlvdSBtaWdodCBuZWVkIHRvIGFkanVzdCB0aGlzIHNlbGVjdG9yXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gIH1cblxuICBfZHJhd0xpbmUoc291cmNlOiBhbnksIHRhcmdldDogYW55LCBvcHRpb25zOiBhbnkgPSBkZWZhdWx0Q29uZmlnLCBzb3VyY2VDb250YWluZXJJZDogYW55ID0gdW5kZWZpbmVkLCB0YXJnZXRDb250YWluZXJJZDogYW55ID0gdW5kZWZpbmVkKTogYW55IHtcbiAgICBjb25zdCBfb3B0aW9ucyA9IDxhbnk+ey4uLmRlZmF1bHRDb25maWcsIC4uLm9wdGlvbnN9O1xuICAgIF9vcHRpb25zWydkYXNoZWQnXSA9IHRydWVcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0YXJnZXQpKSB7XG4gICAgICBsZXQgY29ubmVjdGVkRG90czogQ29ubmVjdGVkRG90W10gPSBbXTtcbiAgICAgIHRhcmdldC5mb3JFYWNoKChfdGFyZ2V0KSA9PiB7XG4gICAgICAgIGNvbnN0IHRlbXBMaW5lID0gdGhpcy5yZW5kZXJMaW5lKHNvdXJjZSwgX3RhcmdldCwgX29wdGlvbnMpO1xuICAgICAgICBjb25uZWN0ZWREb3RzLnB1c2goe1xuICAgICAgICAgIHRhcmdldDogX3RhcmdldCxcbiAgICAgICAgICBsaW5lOiB0ZW1wTGluZVxuICAgICAgICB9KTtcbiAgICAgICAgXG4gICAgICAgIGlmKHNvdXJjZUNvbnRhaW5lcklkKSB7XG4gICAgICAgICAgY29uc3Qgc291cmNlQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihzb3VyY2VDb250YWluZXJJZCk7XG4gICAgICAgICAgaWYgKHNvdXJjZUNvbnRhaW5lcikge1xuICAgICAgICAgICAgc291cmNlQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsICgpID0+IHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB0ZW1wTGluZSAmJiB0ZW1wTGluZS5wb3NpdGlvbigpO1xuICAgICAgICAgICAgICB9IGNhdGNoKGUpIHtcbiAgICAgICAgICAgICAgICAvLyBFcnJvciBoYW5kbGluZ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGlmICh0YXJnZXRDb250YWluZXJJZCkge1xuICAgICAgICAgIGNvbnN0IHRhcmdldENvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGFyZ2V0Q29udGFpbmVySWQpO1xuICAgICAgICAgIGlmICh0YXJnZXRDb250YWluZXIpIHtcbiAgICAgICAgICAgIHRhcmdldENvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoKSA9PiB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGVtcExpbmUgJiYgdGVtcExpbmUucG9zaXRpb24oKTtcbiAgICAgICAgICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgICAgICAgICAgLy8gRXJyb3IgaGFuZGxpbmdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBjb25uZWN0ZWREb3RzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5yZW5kZXJMaW5lKHNvdXJjZSwgdGFyZ2V0LCBfb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJMaW5lKHNvdXJjZTogYW55LCB0YXJnZXQ6IGFueSwgb3B0aW9uczogYW55KTogRDNMaW5lIHtcbiAgICAvLyBGaW5kIG9yIGNyZWF0ZSB0aGUgY29udGFpbmVyIGVsZW1lbnRcbiAgICBjb25zdCB0cmVlVmlld0NvbXBvbmVudDogYW55ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLmNvbnRhaW5lclNlbGVjdG9yKTtcbiAgICBpZiAoIXRyZWVWaWV3Q29tcG9uZW50KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzb3VyY2U6IG51bGwsXG4gICAgICAgIHRhcmdldDogbnVsbCxcbiAgICAgICAgcGF0aDogbnVsbCxcbiAgICAgICAgc3ZnOiBudWxsLFxuICAgICAgICBwb3NpdGlvbjogKCkgPT4ge30sXG4gICAgICAgIHNob3c6ICgpID0+IHt9LFxuICAgICAgICByZW1vdmU6ICgpID0+IHt9XG4gICAgICB9O1xuICAgIH1cbiAgICBcbiAgICAvLyBDcmVhdGUgb3IgZ2V0IGNvbnRhaW5lciBmb3IgdGhlIFNWR1xuICAgIGxldCBjb250YWluZXI6IGFueSA9IHRyZWVWaWV3Q29tcG9uZW50LnF1ZXJ5U2VsZWN0b3IoJyNsZWFkZXItbGluZS1jb250YWluZXInKTtcbiAgICBpZiAoIWNvbnRhaW5lcikge1xuICAgICAgLy8gQ3JlYXRlIGEgd3JhcHBlciBjb250YWluZXIgdG8gY29udHJvbCB0aGUgb3ZlcmZsb3cgYXQgdGhlIHRvcFxuICAgICAgbGV0IG92ZXJmbG93V3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgb3ZlcmZsb3dXcmFwcGVyLmlkID0gJ2xlYWRlci1saW5lLW92ZXJmbG93LXdyYXBwZXInO1xuICAgICAgb3ZlcmZsb3dXcmFwcGVyLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgIG92ZXJmbG93V3JhcHBlci5zdHlsZS50b3AgPSAnODBweCc7IC8vIFNhbWUgdG9wIHBvc2l0aW9uXG4gICAgICBvdmVyZmxvd1dyYXBwZXIuc3R5bGUuYm90dG9tID0gJzAnO1xuICAgICAgb3ZlcmZsb3dXcmFwcGVyLnN0eWxlLmxlZnQgPSAnMCc7XG4gICAgICBvdmVyZmxvd1dyYXBwZXIuc3R5bGUucmlnaHQgPSAnMCc7XG4gICAgICBvdmVyZmxvd1dyYXBwZXIuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJzsgLy8gSGlkZSBhbnl0aGluZyBhYm92ZSB0aGlzIGNvbnRhaW5lclxuICAgICAgb3ZlcmZsb3dXcmFwcGVyLnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7IC8vIEFsbG93IGNsaWNrcyB0byBwYXNzIHRocm91Z2hcbiAgICAgIFxuICAgICAgLy8gT3JpZ2luYWwgY29udGFpbmVyIHJlbWFpbnMgdGhlIHNhbWUgYnV0IHBvc2l0aW9uZWQgYXQgdG9wOjAgd2l0aGluIHRoZSB3cmFwcGVyXG4gICAgICBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIGNvbnRhaW5lci5pZCA9ICdsZWFkZXItbGluZS1jb250YWluZXInO1xuICAgICAgY29udGFpbmVyLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgIGNvbnRhaW5lci5zdHlsZS50b3AgPSAnMCc7IC8vIENoYW5nZWQgdG8gMCBhcyBpdCdzIG5vdyByZWxhdGl2ZSB0byB3cmFwcGVyXG4gICAgICBjb250YWluZXIuc3R5bGUuYm90dG9tID0gJzAnO1xuICAgICAgY29udGFpbmVyLnN0eWxlLmxlZnQgPSAnMCc7XG4gICAgICBjb250YWluZXIuc3R5bGUucmlnaHQgPSAnMCc7XG4gICAgICBjb250YWluZXIuc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgICBjb250YWluZXIuc3R5bGUuaGVpZ2h0ID0gJzEwMCUnO1xuICAgICAgXG4gICAgICAvLyBBZGQgcmVzaXplIG9ic2VydmVyIHRvIGR5bmFtaWNhbGx5IGFkanVzdCBjb250YWluZXIgd2lkdGhcbiAgICAgIGNvbnN0IHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGVudHJpZXMgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgICAgICBpZiAoZW50cnkudGFyZ2V0ID09PSB0cmVlVmlld0NvbXBvbmVudCkge1xuICAgICAgICAgICAgY29udGFpbmVyLnN0eWxlLndpZHRoID0gYCR7ZW50cnkuY29udGVudFJlY3Qud2lkdGh9cHhgO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBSZXBvc2l0aW9uIGFsbCBsaW5lcyB3aGVuIGNvbnRhaW5lciByZXNpemVzXG4gICAgICAgICAgICBpZiAodGhpcy5jb25uZWN0b3JNYXApIHtcbiAgICAgICAgICAgICAgT2JqZWN0LnZhbHVlcyh0aGlzLmNvbm5lY3Rvck1hcCkuZm9yRWFjaCgoY29ubmVjdG9yOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY29ubmVjdG9yICYmIGNvbm5lY3Rvci5saW5lcykge1xuICAgICAgICAgICAgICAgICAgY29ubmVjdG9yLmxpbmVzLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5saW5lICYmIHR5cGVvZiBpdGVtLmxpbmUucG9zaXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICBpdGVtLmxpbmUucG9zaXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgXG4gICAgICAvLyBTdGFydCBvYnNlcnZpbmcgdGhlIHRyZWVWaWV3Q29tcG9uZW50XG4gICAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKHRyZWVWaWV3Q29tcG9uZW50KTtcbiAgICAgIFxuICAgICAgLy8gQWxzbyBsaXN0ZW4gZm9yIHNjcm9sbCBldmVudHMgdG8gcmVwb3NpdGlvbiBsaW5lc1xuICAgICAgdHJlZVZpZXdDb21wb25lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKCkgPT4ge1xuICAgICAgICAvLyBVcGRhdGUgY29udGFpbmVyIGRpbWVuc2lvbnMgYmFzZWQgb24gdmlzaWJsZSBhcmVhXG4gICAgICAgIG92ZXJmbG93V3JhcHBlci5zdHlsZS53aWR0aCA9IGAke3RyZWVWaWV3Q29tcG9uZW50LnNjcm9sbFdpZHRofXB4YDtcbiAgICAgICAgb3ZlcmZsb3dXcmFwcGVyLnN0eWxlLmhlaWdodCA9IGAke3RyZWVWaWV3Q29tcG9uZW50LnNjcm9sbEhlaWdodH1weGA7XG4gICAgICAgIFxuICAgICAgICAvLyBSZXBvc2l0aW9uIGFsbCBhY3RpdmUgbGluZXNcbiAgICAgICAgdGhpcy5yZXBvc2l0aW9uQWxsTGluZXMoKTtcbiAgICAgIH0pO1xuICAgICAgXG4gICAgICBvdmVyZmxvd1dyYXBwZXIuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcbiAgICAgIHRyZWVWaWV3Q29tcG9uZW50LmFwcGVuZENoaWxkKG92ZXJmbG93V3JhcHBlcik7XG4gICAgfVxuICAgIFxuICAgIC8vIFN0b3JlIGNvbnRhaW5lciByZWZlcmVuY2UgZm9yIGFjY2VzcyBpbiBvdGhlciBtZXRob2RzXG4gICAgdGhpcy5lbG1XcmFwcGVyID0gY29udGFpbmVyO1xuICAgIFxuICAgIC8vIEdldCB0aGUgc291cmNlIGFuZCB0YXJnZXQgZWxlbWVudHNcbiAgICBsZXQgc291cmNlRWxlbWVudCA9IHNvdXJjZTtcbiAgICBsZXQgdGFyZ2V0RWxlbWVudDogYW55O1xuICAgIFxuICAgIGlmICh0YXJnZXQudGFyZ2V0VHlwZSA9PT0gJ2lkJykge1xuICAgICAgdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldC50YXJnZXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0YXJnZXRFbGVtZW50ID0gdGFyZ2V0LnRhcmdldDtcbiAgICB9XG4gICAgXG4gICAgLy8gRW5zdXJlIGJvdGggZWxlbWVudHMgZXhpc3RcbiAgICBpZiAoIXNvdXJjZUVsZW1lbnQgfHwgIXRhcmdldEVsZW1lbnQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogbnVsbCxcbiAgICAgICAgdGFyZ2V0OiBudWxsLFxuICAgICAgICBwYXRoOiBudWxsLFxuICAgICAgICBzdmc6IG51bGwsXG4gICAgICAgIHBvc2l0aW9uOiAoKSA9PiB7fSxcbiAgICAgICAgc2hvdzogKCkgPT4ge30sXG4gICAgICAgIHJlbW92ZTogKCkgPT4ge31cbiAgICAgIH07XG4gICAgfVxuICAgIFxuICAgIC8vIENyZWF0ZSBhIHVuaXF1ZSBJRCBmb3IgdGhlIFNWR1xuICAgIGNvbnN0IHN2Z0lkID0gJ2QzLWxpbmUtJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KTtcbiAgICBcbiAgICAvLyBDcmVhdGUgU1ZHIGVsZW1lbnRcbiAgICBjb25zdCBzdmcgPSBkMy5zZWxlY3QoY29udGFpbmVyKVxuICAgICAgLmFwcGVuZCgnc3ZnJylcbiAgICAgIC5hdHRyKCdpZCcsIHN2Z0lkKVxuICAgICAgLmF0dHIoJ2NsYXNzJywgJ2xlYWRlci1saW5lJylcbiAgICAgIC5zdHlsZSgncG9zaXRpb24nLCAnYWJzb2x1dGUnKVxuICAgICAgLnN0eWxlKCd0b3AnLCAnMCcpXG4gICAgICAuc3R5bGUoJ2xlZnQnLCAnMCcpXG4gICAgICAuc3R5bGUoJ3dpZHRoJywgJzEwMCUnKVxuICAgICAgLnN0eWxlKCdoZWlnaHQnLCAnMTAwJScpXG4gICAgICAuc3R5bGUoJ3BvaW50ZXItZXZlbnRzJywgJ25vbmUnKVxuICAgICAgLnN0eWxlKCdvdmVyZmxvdycsICd2aXNpYmxlJyk7XG4gICAgXG4gICAgLy8gQ2FsY3VsYXRlIHBvc2l0aW9uc1xuICAgIGNvbnN0IHNvdXJjZVJlY3QgPSBzb3VyY2VFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHRhcmdldFJlY3QgPSB0YXJnZXRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgXG4gICAgLy8gRGV0ZXJtaW5lIGVkZ2UgY29ubmVjdGlvbiBwb2ludHMgLSBhbHdheXMgcmlnaHQgdG8gbGVmdFxuICAgIGxldCBzb3VyY2VYLCBzb3VyY2VZLCB0YXJnZXRYLCB0YXJnZXRZO1xuXG4gICAgLy8gU291cmNlIC0gYWx3YXlzIGNvbm5lY3QgZnJvbSB0aGUgcmlnaHQgZWRnZVxuICAgIHNvdXJjZVggPSBzb3VyY2VSZWN0LnJpZ2h0IC0gY29udGFpbmVyUmVjdC5sZWZ0O1xuICAgIHNvdXJjZVkgPSBzb3VyY2VSZWN0LnRvcCArIChzb3VyY2VSZWN0LmhlaWdodCAvIDIpIC0gY29udGFpbmVyUmVjdC50b3A7XG5cbiAgICAvLyBUYXJnZXQgLSBhbHdheXMgY29ubmVjdCB0byB0aGUgbGVmdCBlZGdlXG4gICAgdGFyZ2V0WCA9IHRhcmdldFJlY3QubGVmdCAtIGNvbnRhaW5lclJlY3QubGVmdDtcbiAgICB0YXJnZXRZID0gdGFyZ2V0UmVjdC50b3AgKyAodGFyZ2V0UmVjdC5oZWlnaHQgLyAyKSAtIGNvbnRhaW5lclJlY3QudG9wO1xuICAgIFxuICAgIC8vIENyZWF0ZSBsaW5lIHdpdGggaW5pdGlhbCBvcGFjaXR5IDEgKHZpc2libGUgaW1tZWRpYXRlbHkpXG4gICAgLy8gSW5zdGVhZCBvZiBhIHN0cmFpZ2h0IGxpbmUsIGNyZWF0ZSBhIGdyaWQgbGluZSB3aXRoIHJpZ2h0IGFuZ2xlc1xuICAgIGNvbnN0IHBhdGg6IGFueSA9IHN2Zy5hcHBlbmQoJ3BhdGgnKVxuICAgICAgLmF0dHIoJ2QnLCBjcmVhdGVHcmlkUGF0aChzb3VyY2VYLCBzb3VyY2VZLCB0YXJnZXRYLCB0YXJnZXRZKSlcbiAgICAgIC5zdHlsZSgnc3Ryb2tlJywgJyMwMDAnKSAvLyBEYXJrZXIgY29sb3IgZm9yIGJldHRlciB2aXNpYmlsaXR5XG4gICAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsIG9wdGlvbnMuc2l6ZSB8fCAyKVxuICAgICAgLnN0eWxlKCdmaWxsJywgJ25vbmUnKVxuICAgICAgLnN0eWxlKCdvcGFjaXR5JywgMSkgLy8gU3RhcnQgdmlzaWJsZVxuICAgICAgLnN0eWxlKCdzdHJva2UtbGluZWpvaW4nLCAncm91bmQnKSAvLyBSb3VuZCBjb3JuZXJzIGZvciBhIHNtb290aGVyIGxvb2tcbiAgICAgIC5zdHlsZSgnc3Ryb2tlLWRhc2hhcnJheScsIG9wdGlvbnMuZGFzaGVkID8gJzUsNScgOiAnbm9uZScpOyAvLyBBZGQgZGFzaGVkIHN0eWxlIGlmIHNwZWNpZmllZFxuICAgIFxuICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgYSBncmlkIHBhdGhcbiAgICBmdW5jdGlvbiBjcmVhdGVHcmlkUGF0aCh4MTogbnVtYmVyLCB5MTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyKSB7XG4gICAgICAvLyBDYWxjdWxhdGUgdGhlIG1pZHBvaW50IG9uIHRoZSB4LWF4aXNcbiAgICAgIGNvbnN0IG1pZFggPSB4MSArICh4MiAtIHgxKSAvIDI7XG4gICAgICBcbiAgICAgIC8vIENyZWF0ZSBhIHBhdGggd2l0aCAzIHNlZ21lbnRzIChob3Jpem9udGFsLCB2ZXJ0aWNhbCwgaG9yaXpvbnRhbClcbiAgICAgIHJldHVybiBgTSAke3gxfSAke3kxfSBMICR7bWlkWH0gJHt5MX0gTCAke21pZFh9ICR7eTJ9IEwgJHt4Mn0gJHt5Mn1gO1xuICAgIH1cbiAgXG4gICAgLy8gRGVmaW5lIG1hcmtlcnMgKGRpc2sgYXQgc3RhcnQgYW5kIGFycm93IGF0IGVuZClcbiAgICBjb25zdCBkZWZzID0gc3ZnLmFwcGVuZCgnZGVmcycpO1xuICAgIFxuICAgIC8vIEFkZCBzdGFydCBtYXJrZXIgKGRpc2svY2lyY2xlKVxuICAgIGlmIChvcHRpb25zLnN0YXJ0UGx1ZyA9PT0gJ2Rpc2MnIHx8IG9wdGlvbnMuc3RhcnRQbHVnICE9PSBmYWxzZSkge1xuICAgICAgZGVmcy5hcHBlbmQoJ21hcmtlcicpXG4gICAgICAgIC5hdHRyKCdpZCcsIGBzdGFydC1jaXJjbGUtJHtzdmdJZH1gKVxuICAgICAgICAuYXR0cigndmlld0JveCcsICcwIDAgMTAgMTAnKVxuICAgICAgICAuYXR0cigncmVmWCcsIDUpXG4gICAgICAgIC5hdHRyKCdyZWZZJywgNSlcbiAgICAgICAgLmF0dHIoJ21hcmtlcldpZHRoJywgOClcbiAgICAgICAgLmF0dHIoJ21hcmtlckhlaWdodCcsIDgpXG4gICAgICAgIC5hdHRyKCdvcmllbnQnLCAnYXV0bycpXG4gICAgICAgIC5hcHBlbmQoJ2NpcmNsZScpXG4gICAgICAgIC5hdHRyKCdjeCcsIDUpXG4gICAgICAgIC5hdHRyKCdjeScsIDUpXG4gICAgICAgIC5hdHRyKCdyJywgNC41KVxuICAgICAgICAuc3R5bGUoJ2ZpbGwnLCBvcHRpb25zLmNvbG9yIHx8ICcjMzMzJyk7XG4gICAgICBcbiAgICAgIHBhdGguYXR0cignbWFya2VyLXN0YXJ0JywgYHVybCgjc3RhcnQtY2lyY2xlLSR7c3ZnSWR9KWApO1xuICAgIH1cbiAgICBcbiAgICAvLyBBZGQgZW5kIG1hcmtlciAoYXJyb3cpXG4gICAgaWYgKG9wdGlvbnMuZW5kUGx1ZyA9PT0gJ2Fycm93JyB8fCBvcHRpb25zLmVuZFBsdWcgIT09IGZhbHNlKSB7XG4gICAgICBkZWZzLmFwcGVuZCgnbWFya2VyJylcbiAgICAgICAgLmF0dHIoJ2lkJywgYGFycm93aGVhZC0ke3N2Z0lkfWApXG4gICAgICAgIC5hdHRyKCd2aWV3Qm94JywgJzAgMCAxMCAxMCcpXG4gICAgICAgIC5hdHRyKCdyZWZYJywgOCkgIFxuICAgICAgICAuYXR0cigncmVmWScsIDUpXG4gICAgICAgIC5hdHRyKCdtYXJrZXJXaWR0aCcsIDkpXG4gICAgICAgIC5hdHRyKCdtYXJrZXJIZWlnaHQnLCA5KVxuICAgICAgICAuYXR0cignb3JpZW50JywgJ2F1dG8nKVxuICAgICAgICAuYXBwZW5kKCdwYXRoJylcbiAgICAgICAgLmF0dHIoJ2QnLCAnTSAwIDAgTCAxMCA1IEwgMCAxMCB6JylcbiAgICAgICAgLnN0eWxlKCdmaWxsJywgb3B0aW9ucy5jb2xvciB8fCAnIzMzMycpO1xuICAgICAgXG4gICAgICBwYXRoLmF0dHIoJ21hcmtlci1lbmQnLCBgdXJsKCNhcnJvd2hlYWQtJHtzdmdJZH0pYCk7XG4gICAgfVxuICAgIFxuICAgIC8vIENyZWF0ZSB0aGUgRDNMaW5lIG9iamVjdCB3aXRoIEFQSSBzaW1pbGFyIHRvIExlYWRlckxpbmVcbiAgICBjb25zdCBkM0xpbmU6IEQzTGluZSA9IHtcbiAgICAgIHNvdXJjZTogc291cmNlRWxlbWVudCxcbiAgICAgIHRhcmdldDogdGFyZ2V0RWxlbWVudCxcbiAgICAgIHBhdGg6IHBhdGgsXG4gICAgICBzdmc6IHN2ZyxcbiAgICAgIFxuICAgICAgLy8gUG9zaXRpb24gbWV0aG9kIHRvIHVwZGF0ZSBsaW5lIGNvb3JkaW5hdGVzXG4gICAgICBwb3NpdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIC8vIEdldCB1cGRhdGVkIHBvc2l0aW9uc1xuICAgICAgICBjb25zdCB1cGRhdGVkU291cmNlUmVjdCA9IHNvdXJjZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRUYXJnZXRSZWN0ID0gdGFyZ2V0RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgdXBkYXRlZENvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIFxuICAgICAgICAvLyBTb3VyY2UgLSBhbHdheXMgY29ubmVjdCBmcm9tIHRoZSByaWdodCBlZGdlXG4gICAgICAgIGNvbnN0IHVwZGF0ZWRTb3VyY2VYID0gdXBkYXRlZFNvdXJjZVJlY3QucmlnaHQgLSB1cGRhdGVkQ29udGFpbmVyUmVjdC5sZWZ0O1xuICAgICAgICBjb25zdCB1cGRhdGVkU291cmNlWSA9IHVwZGF0ZWRTb3VyY2VSZWN0LnRvcCArICh1cGRhdGVkU291cmNlUmVjdC5oZWlnaHQgLyAyKSAtIHVwZGF0ZWRDb250YWluZXJSZWN0LnRvcDtcbiAgICAgICAgXG4gICAgICAgIC8vIFRhcmdldCAtIGFsd2F5cyBjb25uZWN0IHRvIHRoZSBsZWZ0IGVkZ2VcbiAgICAgICAgY29uc3QgdXBkYXRlZFRhcmdldFggPSB1cGRhdGVkVGFyZ2V0UmVjdC5sZWZ0IC0gdXBkYXRlZENvbnRhaW5lclJlY3QubGVmdDtcbiAgICAgICAgY29uc3QgdXBkYXRlZFRhcmdldFkgPSB1cGRhdGVkVGFyZ2V0UmVjdC50b3AgKyAodXBkYXRlZFRhcmdldFJlY3QuaGVpZ2h0IC8gMikgLSB1cGRhdGVkQ29udGFpbmVyUmVjdC50b3A7XG4gICAgICAgIFxuICAgICAgICAvLyBVcGRhdGUgcGF0aCB3aXRoIGdyaWQgcGF0aFxuICAgICAgICBjb25zdCBtaWRYID0gdXBkYXRlZFNvdXJjZVggKyAodXBkYXRlZFRhcmdldFggLSB1cGRhdGVkU291cmNlWCkgLyAyO1xuICAgICAgICBwYXRoLmF0dHIoJ2QnLCBgTSAke3VwZGF0ZWRTb3VyY2VYfSAke3VwZGF0ZWRTb3VyY2VZfSBMICR7bWlkWH0gJHt1cGRhdGVkU291cmNlWX0gTCAke21pZFh9ICR7dXBkYXRlZFRhcmdldFl9IEwgJHt1cGRhdGVkVGFyZ2V0WH0gJHt1cGRhdGVkVGFyZ2V0WX1gKVxuICAgICAgICAgICAgLnN0eWxlKCdzdHJva2UtZGFzaGFycmF5Jywgb3B0aW9ucy5kYXNoZWQgPyAnNSw1JyA6ICdub25lJylcbiAgICAgICAgICAgIC8vIEVuc3VyZSBtYXJrZXJzIGFyZSBwcmVzZXJ2ZWQgZHVyaW5nIHJlcG9zaXRpb25pbmdcbiAgICAgICAgICAgIC5hdHRyKCdtYXJrZXItc3RhcnQnLCBvcHRpb25zLnN0YXJ0UGx1ZyAhPT0gZmFsc2UgPyBgdXJsKCNzdGFydC1jaXJjbGUtJHtzdmdJZH0pYCA6IG51bGwpXG4gICAgICAgICAgICAuYXR0cignbWFya2VyLWVuZCcsIG9wdGlvbnMuZW5kUGx1ZyAhPT0gZmFsc2UgPyBgdXJsKCNhcnJvd2hlYWQtJHtzdmdJZH0pYCA6IG51bGwpO1xuICAgICAgfSxcbiAgICAgIFxuICAgICAgLy8gU2hvdyBtZXRob2Qgd2l0aCBhbmltYXRpb24gb3B0aW9uXG4gICAgICBzaG93OiBmdW5jdGlvbihhbmltYXRpb24gPSAnJykge1xuICAgICAgICBpZiAoYW5pbWF0aW9uID09PSAnZHJhdycpIHtcbiAgICAgICAgICAvLyBFbnN1cmUgdGhlIHBhdGggaGFzIGEgbm9kZSBiZWZvcmUgY2FsY3VsYXRpbmcgdG90YWwgbGVuZ3RoXG4gICAgICAgICAgY29uc3QgcGF0aE5vZGUgPSBwYXRoLm5vZGUoKTtcbiAgICAgICAgICBpZiAoIXBhdGhOb2RlKSByZXR1cm47XG4gICAgICAgICAgXG4gICAgICAgICAgY29uc3QgdG90YWxMZW5ndGggPSBwYXRoTm9kZS5nZXRUb3RhbExlbmd0aCgpO1xuICAgICAgICAgIFxuICAgICAgICAgIHBhdGguc3R5bGUoJ29wYWNpdHknLCAxKVxuICAgICAgICAgICAgLmF0dHIoJ3N0cm9rZS1kYXNoYXJyYXknLCB0b3RhbExlbmd0aClcbiAgICAgICAgICAgIC5hdHRyKCdzdHJva2UtZGFzaG9mZnNldCcsIHRvdGFsTGVuZ3RoKVxuICAgICAgICAgICAgLnRyYW5zaXRpb24oKVxuICAgICAgICAgICAgLmR1cmF0aW9uKG9wdGlvbnMuYW5pbU9wdGlvbnM/LmR1cmF0aW9uIHx8IDIwMDApXG4gICAgICAgICAgICAuZWFzZShkMy5lYXNlTGluZWFyKVxuICAgICAgICAgICAgLmF0dHIoJ3N0cm9rZS1kYXNob2Zmc2V0JywgMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGF0aC5zdHlsZSgnb3BhY2l0eScsIDEpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXG4gICAgICAvLyBSZW1vdmUgbWV0aG9kXG4gICAgICByZW1vdmU6IGZ1bmN0aW9uKCkge1xuICAgICAgICBzdmcucmVtb3ZlKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBcbiAgICAvLyBJbW1lZGlhdGVseSBjYWxsIHNob3cgdG8gbWFrZSB0aGUgbGluZSB2aXNpYmxlXG4gICAgZDNMaW5lLnNob3cob3B0aW9ucy5hbmltYXRpb24pO1xuICAgIFxuICAgIHJldHVybiBkM0xpbmU7XG4gIH1cblxuICB1cGRhdGVDb25uZWN0b3JzTWFwKG1hcDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5jb25uZWN0b3JNYXAgPSBtYXA7XG4gIH1cblxuICBwb3NpdGlvbihsaW5lOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIWxpbmUgfHwgIWxpbmUucG9zaXRpb24pIHJldHVybjtcbiAgICBcbiAgICB0aGlzLmVsbVdyYXBwZXIuc3R5bGUudHJhbnNmb3JtID0gJ25vbmUnO1xuICAgIHZhciByZWN0V3JhcHBlciA9IHRoaXMuZWxtV3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAvLyBNb3ZlIHRvIHRoZSBvcmlnaW4gb2YgY29vcmRpbmF0ZXMgYXMgdGhlIGRvY3VtZW50XG4gICAgdGhpcy5lbG1XcmFwcGVyLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGUoJyArXG4gICAgICAoKHJlY3RXcmFwcGVyLmxlZnQgKyB3aW5kb3cucGFnZVhPZmZzZXQpICogLTEpICsgJ3B4LCAnICtcbiAgICAgICgocmVjdFdyYXBwZXIudG9wICsgd2luZG93LnBhZ2VZT2Zmc2V0KSAqIC0xKSArICdweCknO1xuICAgIFxuICAgIGxpbmUucG9zaXRpb24oKTtcbiAgfVxuXG4gIHJlbW92ZUFsbExpbmVzKCk6IHZvaWQge1xuICAgIGlmKHRoaXMuY29ubmVjdG9yTWFwKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmNvbm5lY3Rvck1hcCkge1xuICAgICAgICAvLyBSZW1vdmUgYWxsIG4tMSBsaW5lcyBhbmQga2VlcCBvbmx5IGN1cnJlbnQgc2VsZWN0aW9uLCBhbHNvIGNsZWFyIG4rMSBsaW5lc1xuICAgICAgICBpZih0aGlzLmNvbm5lY3Rvck1hcFtrZXldICYmIHRoaXMuY29ubmVjdG9yTWFwW2tleV0ubGluZXMgJiYgdGhpcy5jb25uZWN0b3JNYXBba2V5XS5saW5lcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgbGluZXMgPSB0aGlzLmNvbm5lY3Rvck1hcFtrZXldLmxpbmVzO1xuICAgICAgICAgIGxpbmVzLmZvckVhY2goYXN5bmMgKGVsZW1lbnQ6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBhd2FpdCBlbGVtZW50LmxpbmUgJiYgZWxlbWVudC5saW5lLnJlbW92ZSgpO1xuICAgICAgICAgICAgICBsaW5lcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuY29ubmVjdG9yTWFwW2tleV0ubGluZXMgPSBsaW5lcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyB0byByZXNldCBjb25uZWN0b3IgbWFwIGFmdGVyIGNsZWFyaW5nIGFsbCB0aGUgbGluZXNcbiAgICB0aGlzLnVwZGF0ZUNvbm5lY3RvcnNNYXAoe30pO1xuICB9XG5cbiAgcmVwb3NpdGlvbkFsbExpbmVzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbm5lY3Rvck1hcCkge1xuICAgICAgT2JqZWN0LnZhbHVlcyh0aGlzLmNvbm5lY3Rvck1hcCkuZm9yRWFjaCgoY29ubmVjdG9yOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGNvbm5lY3RvciAmJiBjb25uZWN0b3IubGluZXMpIHtcbiAgICAgICAgICBjb25uZWN0b3IubGluZXMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5saW5lICYmIHR5cGVvZiBpdGVtLmxpbmUucG9zaXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgaXRlbS5saW5lLnBvc2l0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufSJdfQ==
@@ -1,12 +1,22 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { BehaviorSubject, of } from 'rxjs';
3
- import { catchError, map, tap } from 'rxjs/operators';
3
+ import { catchError, map, switchMap, tap } from 'rxjs/operators';
4
4
  import { FRAMEWORK } from '../constants/data';
5
5
  import { v4 as uuidv4 } from 'uuid';
6
6
  import _ from 'lodash';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@angular/common/http";
9
9
  import * as i2 from "./local-connection.service";
10
+ const API_ENDPOINT = {
11
+ ORG_V1_SEARCH: '/apis/proxies/v8/org/v1/search',
12
+ CREATE_TERMS: `/apis/proxies/v8/action/framework/v3/term/create`,
13
+ UPDATE_TERMS: `/apis/proxies/v8/framework/v1/term/update/`,
14
+ UPDATE_ASSOCIATION: `/apis/proxies/v8/framework/v1/term/update/`,
15
+ PUBLISH_FRAMEWORK: `/apis/proxies/v8/framework/v1/publish/`,
16
+ RETIRE_TREM: `/apis/proxies/v8/framework/v1/term/retire`,
17
+ UPDATE_CATEGORY: `/apis/proxies/v8/framework/v1/category/update/`,
18
+ USERS_SEARCH: `apis/proxies/v8/user/v1/search`
19
+ };
10
20
  export class FrameworkService {
11
21
  constructor(http, localConfig) {
12
22
  this.http = http;
@@ -32,7 +42,15 @@ export class FrameworkService {
32
42
  else {
33
43
  url = url + this.environment.frameworkName;
34
44
  }
35
- return this.http.get(`${url}`, { withCredentials: true }).pipe(tap((response) => {
45
+ return this.http.get(`${url}`, { withCredentials: true }).pipe(switchMap((frameworkResponse) => {
46
+ const originalFrameworkResponse = frameworkResponse;
47
+ return this.getSelectedStateOrg(_orgData).pipe(switchMap((orgListData) => {
48
+ this.additionalData = orgListData?.result?.response?.content || [];
49
+ return this.getUserPerOrg().pipe(map(() => {
50
+ return originalFrameworkResponse;
51
+ }));
52
+ }));
53
+ }), tap(async (response) => {
36
54
  this.resetAll();
37
55
  this.formateData(response);
38
56
  this.completeResponse = response.result.framework;
@@ -181,6 +199,8 @@ export class FrameworkService {
181
199
  config: this.getConfig(a.code),
182
200
  children: (a.terms || []).map((c) => {
183
201
  const associations = c.associations || [];
202
+ const tempCount = this.getUserCount(c);
203
+ Object.assign(c, { userCount: tempCount });
184
204
  if (associations.length > 0) {
185
205
  Object.assign(c, { children: associations });
186
206
  }
@@ -376,6 +396,99 @@ export class FrameworkService {
376
396
  });
377
397
  }
378
398
  }
399
+ getSelectedStateOrg(_orgData) {
400
+ const requestBody = {
401
+ request: {
402
+ filters: {
403
+ status: 1,
404
+ ministryOrStateType: (_orgData) ?
405
+ _orgData.sbOrgType : '',
406
+ ministryOrStateId: (_orgData) ?
407
+ _orgData.identifier : ''
408
+ },
409
+ sort_by: {
410
+ createdDate: "desc"
411
+ },
412
+ limit: 100,
413
+ offset: 0,
414
+ fields: [
415
+ 'identifier',
416
+ 'orgName',
417
+ 'description',
418
+ 'parentOrgName',
419
+ 'ministryOrStateId',
420
+ 'ministryOrStateType',
421
+ 'ministryOrStateName',
422
+ 'sbOrgSubType'
423
+ ]
424
+ }
425
+ };
426
+ return this.http.post(`${API_ENDPOINT.ORG_V1_SEARCH}`, requestBody).pipe(catchError(error => {
427
+ console.error('Error fetching Org data:', error);
428
+ return of({});
429
+ }));
430
+ }
431
+ getUserPerOrg(_orgData) {
432
+ const orgIds = this.additionalData.map((org) => org.identifier);
433
+ const requestBody = {
434
+ request: {
435
+ filters: {
436
+ rootOrgId: orgIds
437
+ },
438
+ fields: [
439
+ 'identifier',
440
+ 'rootOrgId'
441
+ ],
442
+ limit: 1,
443
+ facets: [
444
+ "rootOrgId"
445
+ ],
446
+ sort_by: {
447
+ "createdDate": "desc"
448
+ }
449
+ }
450
+ };
451
+ const orgIdCounts = [];
452
+ if (this.additionalData && this.additionalData.length > 0) {
453
+ this.additionalData.forEach((org) => {
454
+ if (org.identifier) {
455
+ orgIdCounts.push({
456
+ id: org.identifier,
457
+ count: 0
458
+ });
459
+ }
460
+ });
461
+ }
462
+ return this.http.post(`${API_ENDPOINT.USERS_SEARCH}`, requestBody).pipe(map((res) => {
463
+ if (res && res.result && res.result.response && res.result.response.count) {
464
+ const facetsValue = res.result.response.facets || [];
465
+ if (facetsValue && facetsValue.length > 0) {
466
+ const orgFacet = facetsValue.find((facet) => facet.name === 'rootOrgId');
467
+ if (orgFacet && orgFacet.values) {
468
+ orgFacet.values.forEach((value) => {
469
+ const orgIndex = orgIdCounts.findIndex(org => org.id === value.name);
470
+ if (orgIndex !== -1) {
471
+ orgIdCounts[orgIndex].count = value.count || 0;
472
+ }
473
+ });
474
+ }
475
+ }
476
+ }
477
+ this.userCountData = orgIdCounts;
478
+ }), catchError(error => {
479
+ console.error('Error fetching user count data:', error);
480
+ return of({});
481
+ }));
482
+ }
483
+ getUserCount(term) {
484
+ if (term && term.additionalProperties && term.additionalProperties.orgId) {
485
+ if (this.userCountData && this.userCountData.length > 0) {
486
+ const userCount = this.userCountData.filter((user) => user.id === term.additionalProperties.orgId)[0]?.count;
487
+ return userCount || 0;
488
+ }
489
+ }
490
+ return 0;
491
+ }
379
492
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FrameworkService, deps: [{ token: i1.HttpClient }, { token: i2.LocalConnectionService }], target: i0.ɵɵFactoryTarget.Injectable }); }
380
493
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FrameworkService, providedIn: 'root' }); }
381
494
  }
@@ -385,4 +498,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
385
498
  providedIn: 'root'
386
499
  }]
387
500
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.LocalConnectionService }]; } });
388
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWV3b3JrLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdHJlZS1oaWVyYXJjaHkvc3JjL2xpYi9zZXJ2aWNlcy9mcmFtZXdvcmsuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUc5QyxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUlwQyxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7Ozs7QUFZdkIsTUFBTSxPQUFPLGdCQUFnQjtJQW1CM0IsWUFDVSxJQUFnQixFQUNqQixXQUFtQztRQURsQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2pCLGdCQUFXLEdBQVgsV0FBVyxDQUF3QjtRQXBCNUMsbUJBQWMsR0FBa0QsSUFBSSxlQUFlLENBQStCLEVBQUUsQ0FBQyxDQUFDO1FBQ3RILGtCQUFhLEdBQTZCLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQzlFLHFCQUFnQixHQUNkLElBQUksZUFBZSxDQUF1RSxJQUFJLENBQUMsQ0FBQztRQUNsRyxnQkFBVyxHQUF5QixJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsQ0FBQztRQUNuRSwwQkFBcUIsR0FBeUIsSUFBSSxlQUFlLENBQU0sSUFBSSxDQUFDLENBQUM7UUFDN0UsU0FBSSxHQUFHLElBQUksR0FBRyxFQUFtQyxDQUFDO1FBQ2xELGtCQUFhLEdBQUcsSUFBSSxHQUFHLEVBQWUsQ0FBQztRQUN2QywrQkFBMEIsR0FBeUMsSUFBSSxlQUFlLENBQXNCLElBQUksQ0FBQyxDQUFDO1FBS2xILGdCQUFXLEdBQUcsaUJBQWlCLENBQUM7UUFFaEMsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsQ0FBQztJQU03QyxDQUFDO0lBRUosZ0JBQWdCLENBQUMsUUFBYTtRQUM1QixZQUFZLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEtBQUssUUFBUSxFQUFFO1lBR2hELElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLFdBQVcscUJBQXFCLENBQUE7WUFDbkQsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osR0FBRyxHQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsdUJBQXVCLENBQUM7YUFDL0M7aUJBQU07Z0JBQ0wsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQzthQUM1QztZQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDNUQsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1lBQ3BELENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNqQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM3QixNQUFNLDRCQUE0QixHQUFHLEdBQUcsQ0FBQztZQUMzQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ1A7YUFBTTtZQUNMLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzVCLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQztJQUVELFNBQVMsQ0FBQyxXQUFtQixFQUFFLFVBQWtCLEVBQUUsV0FBZ0I7UUFDakUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLHVDQUF1QyxXQUFXLGFBQWEsVUFBVSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUN0SSxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxVQUFVLENBQUMsV0FBbUIsRUFBRSxVQUFrQixFQUFFLFdBQWdCO1FBQ2xFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyx1Q0FBdUMsV0FBVyxhQUFhLFVBQVUsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3RJLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxRQUFnQixFQUFFLFdBQWdCO1FBQ25ELElBQUksWUFBb0IsQ0FBQztRQUN6QixJQUFJLFFBQVEsS0FBSyxPQUFPLEVBQUU7WUFDeEIsWUFBWSxHQUFHLGlCQUFpQixDQUFDO1NBQ2xDO2FBQU07WUFDTCxZQUFZLEdBQUcsb0JBQW9CLENBQUM7U0FDckM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxZQUFZLGNBQWMsRUFBRSxXQUFXLENBQUM7YUFDbkYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsVUFBVSxDQUFDLFdBQW1CLEVBQUUsVUFBa0IsRUFBRSxnQkFBd0I7UUFDMUUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLDZCQUE2QixnQkFBZ0IsY0FBYyxXQUFXLGFBQWEsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUMvSSxDQUFDO0lBRUQsa0JBQWtCLENBQUMsV0FBbUIsRUFBRSxVQUFrQixFQUFFLFdBQWdCO1FBQzFFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyx1Q0FBdUMsV0FBVyxhQUFhLFVBQVUsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3RJLENBQUM7SUFFRCxVQUFVLENBQUMsV0FBbUIsRUFBRSxVQUFrQixFQUFFLGdCQUF3QixFQUFFLFdBQWdCO1FBQzVGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyw2QkFBNkIsZ0JBQWdCLGNBQWMsV0FBVyxhQUFhLFVBQVUsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzNKLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcseUJBQXlCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0csQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLE1BQU0sRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxHQUFRO1FBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxlQUFlLENBQUMsZUFBdUI7UUFDckMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBd0IsRUFBRSxFQUFFO1lBQ3BGLE9BQU8sQ0FBQyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUMzRCxPQUFPLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN2RyxDQUFDO0lBRUQsbUJBQW1CLENBQUMsZUFBdUI7UUFDekMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBd0IsRUFBRSxFQUFFO1lBQ3BGLE9BQU8sQ0FBQyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMzRixDQUFDO0lBRUQsYUFBYSxDQUFDLGVBQXVCO1FBQ25DLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDakUsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzdELENBQUM7SUFFRCxVQUFVLENBQUMsS0FBa0M7UUFDM0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxZQUFZLENBQUMsT0FBZTtRQUMxQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBd0IsRUFBRSxFQUFFO1lBQ3BHLE9BQU8sQ0FBQyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBWSxFQUFFLElBQVM7UUFFekMsSUFBSSxHQUFHLEdBQVUsRUFBRSxDQUFDO1FBRXBCLEtBQUssSUFBSSxLQUFLLElBQUksS0FBSyxFQUFFO1lBQ3ZCLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFFekIsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUN4QjtTQUNGO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsSUFBSSxPQUFPLENBQUMsR0FBUTtRQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNsQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pFLENBQUM7SUFFRCwyQkFBMkIsQ0FBQyxHQUFRO1FBQ2xDLElBQUksR0FBRyxFQUFFO1lBQ1AsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN0QztJQUNILENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxVQUFrQjtRQUN0QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMzQyxPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEtBQUssVUFBVSxDQUFDO1FBQ3RELENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVULE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMxQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsdUJBQXVCLENBQUMsVUFBa0I7UUFDeEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDM0MsT0FBTyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLFVBQVUsQ0FBQztRQUNsRCxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFVCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQscUJBQXFCLENBQUMsUUFBZ0I7UUFDcEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDM0MsT0FBTyxDQUFDLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQztRQUNqQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFVCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQWE7UUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDbEQsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFNLEVBQUUsSUFBWSxFQUFFLEVBQUU7WUFDdEUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRTtnQkFDcEIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO2dCQUNaLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVTtnQkFDeEIsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO2dCQUNkLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtnQkFDWixRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVE7Z0JBQ3BCLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBaUM7Z0JBQzNDLFdBQVcsRUFBRSxDQUFDLENBQUMsV0FBVztnQkFDMUIsWUFBWSxFQUFFLENBQUMsQ0FBQyxZQUFZO2dCQUM1QixRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVE7Z0JBQ3BCLFlBQVksRUFBRSxDQUFDLENBQUMsWUFBWTtnQkFDNUIsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDOUIsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTtvQkFDdkMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7b0JBQzFDLElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7d0JBQzNCLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7cUJBQzlDO29CQUNELE9BQU8sQ0FBQyxDQUFDO2dCQUNYLENBQUMsQ0FBQzthQUNILENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxhQUFhLEdBQTRCLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNwQixhQUFhLENBQUMsSUFBSSxDQUFDO2dCQUNqQixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUk7Z0JBQ1osVUFBVSxFQUFFLENBQUMsQ0FBQyxVQUFVO2dCQUN4QixLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7Z0JBQ2QsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO2dCQUNaLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBaUM7Z0JBQzNDLFdBQVcsRUFBRSxDQUFDLENBQUMsV0FBVztnQkFDMUIsWUFBWSxFQUFFLENBQUMsQ0FBQyxZQUFZO2FBQ0osQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELGFBQWE7UUFDWCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM5RSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUNuQztJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsTUFBVztRQUNuQixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztJQUMzQixDQUFDO0lBRUQsU0FBUyxDQUFDLElBQVk7UUFDcEIsSUFBSSxjQUFtQixDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7Z0JBQ3RDLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFO29CQUMxQyxjQUFjLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLENBQUM7aUJBQ3pFO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUNELElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDbkIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtTQUNqQztRQUNELE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsTUFBTSxhQUFhLEdBQVUsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtnQkFDbkMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ3JCLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRTt3QkFDZCxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUN2QjtnQkFDSCxDQUFDLENBQUMsQ0FBQzthQUNKO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRUQsd0JBQXdCLENBQUMsSUFBWTtRQUNuQyxJQUFJLGlCQUFpQixHQUFVLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUM5QixJQUFJLEVBQUUsQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUFFO2dCQUN4QixpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDNUI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8saUJBQWlCLENBQUM7SUFDM0IsQ0FBQztJQUVELGdCQUFnQixDQUFDLFdBQWdCLEVBQUUsUUFBZ0I7UUFDakQsSUFBSSxZQUFvQixDQUFDO1FBQ3pCLElBQUksUUFBUSxLQUFLLE9BQU8sRUFBRTtZQUN4QixZQUFZLEdBQUcsaUJBQWlCLENBQUM7U0FDbEM7YUFBTTtZQUNMLFlBQVksR0FBRyxvQkFBb0IsQ0FBQztTQUNyQztRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLFlBQVksU0FBUyxFQUFFLFdBQVcsQ0FBQzthQUM5RSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxlQUFlLENBQUMsSUFBUyxFQUFFLE1BQVcsRUFBRSxpQkFBd0IsRUFBRSxVQUFrQjtRQUNsRixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO1lBQ2pELElBQUksVUFBVSxLQUFLLFFBQVEsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTtvQkFDckMsSUFBSSxPQUFPLENBQUMsVUFBVSxLQUFLLE1BQU0sQ0FBQyxVQUFVLEVBQUU7d0JBQzVDLE1BQU0sZUFBZSxHQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUssRUFBRSxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUN6SSxNQUFNLFlBQVksR0FBUSxDQUFDLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFLLEVBQUUsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQzt3QkFDbEksT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLGVBQWUsQ0FBQzt3QkFDMUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLFlBQVksQ0FBQztxQkFDcEM7b0JBQ0QsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO3dCQUNwQixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLENBQUM7cUJBQ3RFO2dCQUNILENBQUMsQ0FBQyxDQUFDO2FBQ0o7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTtvQkFDckMsSUFBSSxPQUFPLENBQUMsVUFBVSxLQUFLLE1BQU0sQ0FBQyxVQUFVLEVBQUU7d0JBQzVDLElBQUksY0FBYyxHQUFVLEVBQUUsQ0FBQzt3QkFDL0IsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTs0QkFDMUQsY0FBYyxHQUFJLENBQUMsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQzt5QkFDckY7NkJBQU07NEJBQ0wsY0FBYyxHQUFHLGlCQUFpQixDQUFDO3lCQUNwQzt3QkFDRCxPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsT0FBTyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsWUFBWSxFQUFFLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQzt3QkFDMUgsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLE9BQU8sSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7cUJBQy9HO29CQUNELElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTt3QkFDcEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsQ0FBQyxDQUFDO3FCQUN0RTtnQkFDSCxDQUFDLENBQUMsQ0FBQzthQUNKO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsVUFBa0IsRUFBRSxVQUFlLEVBQUUsaUJBQXdCLEVBQUUsVUFBbUI7UUFDcEcsSUFBSSxRQUFRLEdBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUMsSUFBSSxVQUFVLEtBQUssUUFBUSxFQUFFO1lBQzNCLE1BQU0sZUFBZSxHQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUssRUFBRSxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzFJLE1BQU0sWUFBWSxHQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUssRUFBRSxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ25JLFFBQVEsQ0FBQyxjQUFjLENBQUMsR0FBRyxlQUFlLENBQUM7WUFDM0MsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLFlBQVksQ0FBQztZQUVwQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQWlCLEVBQUUsRUFBRTtnQkFDL0MsSUFBSSxRQUFRLEdBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO29CQUM3RCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLENBQUM7aUJBQzNFO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsSUFBSSxjQUFjLEdBQVUsRUFBRSxDQUFDO1lBQy9CLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7Z0JBQzdELGNBQWMsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLGlCQUFpQixFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7YUFDckY7aUJBQU07Z0JBQ0wsY0FBYyxHQUFHLGlCQUFpQixDQUFDO2FBQ3BDO1lBQ0QsUUFBUSxDQUFDLGNBQWMsQ0FBQyxHQUFHLFFBQVEsSUFBSSxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLFlBQVksRUFBRSxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7WUFDOUgsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLFFBQVEsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7WUFFbEgsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFpQixFQUFFLEVBQUU7Z0JBQy9DLElBQUksUUFBUSxHQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDekQsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtvQkFDN0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQztpQkFDakY7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLFdBQW1CO1FBQ2xDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEtBQUssUUFBUSxFQUFFO1lBQ2hELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxzQkFBc0IsV0FBVyxFQUFFLEVBQUUsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQzNHLEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxDQUM1RCxDQUFDO1NBQ0g7YUFBTTtZQUNMLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2Y7SUFDSCxDQUFDO0lBRUQsc0NBQXNDLENBQUMsSUFBWSxFQUFFLFdBQW1CO1FBQ3RFLElBQUksY0FBbUIsQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN6QyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO2dCQUN0QyxJQUFJLFdBQVcsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFO29CQUNyQyxjQUFjLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLENBQUM7aUJBQ3pFO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUNELE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxXQUFtQjtRQUN4QyxJQUFJLGNBQW1CLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtnQkFDdEMsSUFBSSxXQUFXLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRTtvQkFDckMsY0FBYyxHQUFHLE1BQU0sQ0FBQztpQkFDekI7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO1FBQ0QsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVELDBCQUEwQixDQUFDLFdBQW1CLEVBQUUsVUFBZTtRQUM3RCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQWlCLEVBQUUsRUFBRTtZQUMvQyxJQUFJLFFBQVEsR0FBUSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekQsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtnQkFDN0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQzthQUNoRDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQVMsRUFBRSxNQUFXO1FBQ3hDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDakQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTtnQkFDckMsSUFBSSxPQUFPLENBQUMsVUFBVSxLQUFLLE1BQU0sQ0FBQyxVQUFVLEVBQUU7b0JBQzVDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQy9DLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO2lCQUNsRTtnQkFDRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUU7b0JBQ3BCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7aUJBQzNDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7K0dBemFVLGdCQUFnQjttSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7NEZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRlJBTUVXT1JLIH0gZnJvbSAnLi4vY29uc3RhbnRzL2RhdGEnO1xuaW1wb3J0IHsgTlNGcmFtZXdvcmsgfSBmcm9tICcuLi9tb2RlbHMvZnJhbWV3b3JrLm1vZGVsJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IElDb25uZWN0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2Nvbm5lY3Rpb24ubW9kZWwnO1xuaW1wb3J0IHsgTG9jYWxDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4vbG9jYWwtY29ubmVjdGlvbi5zZXJ2aWNlJztcbi8qIHRzbGludDpkaXNhYmxlICovXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuLyogdHNsaW50OmVuYWJsZSAqL1xuXG5pbnRlcmZhY2UgTm90aWZpZXJUeXBlIHtcbiAgdHlwZTogJ3NlbGVjdCcgfCAnaW5zZXJ0JyB8ICd1cGRhdGUnIHwgJ2RlbGV0ZSc7XG4gIGFjdGlvbjogc3RyaW5nO1xuICBkYXRhOiBhbnk7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEZyYW1ld29ya1NlcnZpY2Uge1xuICBjYXRlZ29yaWVzSGFzaDogQmVoYXZpb3JTdWJqZWN0PE5TRnJhbWV3b3JrLklDYXRlZ29yeVtdIHwgW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxOU0ZyYW1ld29yay5JQ2F0ZWdvcnlbXSB8IFtdPihbXSk7XG4gIGlzRGF0YVVwZGF0ZWQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBjdXJyZW50U2VsZWN0aW9uOiBCZWhhdmlvclN1YmplY3Q8eyB0eXBlOiBzdHJpbmcsIGRhdGE6IGFueSwgY2FyZFJlZj86IGFueSwgaXNVcGRhdGU/OmJvb2xlYW4gfSB8IG51bGw+ID0gXG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDx7IHR5cGU6IHN0cmluZywgZGF0YTogYW55LCBjYXJkUmVmPzogYW55LCBpc1VwZGF0ZT86Ym9vbGVhbiB9IHwgbnVsbD4obnVsbCk7XG4gIHRlcm1TdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgYWZ0ZXJBZGRPckVkaXRTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgbGlzdCA9IG5ldyBNYXA8c3RyaW5nLCBOU0ZyYW1ld29yay5JQ29sdW1uVmlldz4oKTtcbiAgc2VsZWN0aW9uTGlzdCA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gIGluc2VydFVwZGF0ZURlbGV0ZU5vdGlmaWVyOiBCZWhhdmlvclN1YmplY3Q8Tm90aWZpZXJUeXBlIHwgbnVsbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE5vdGlmaWVyVHlwZSB8IG51bGw+KG51bGwpO1xuICBlbnZpcm9ubWVudDogYW55O1xuICBsaWJDb25maWchOiBJQ29ubmVjdGlvbjtcbiAgZnJhbWV3b3JrSWQhOiBzdHJpbmc7XG4gIHJvb3RDb25maWc6IGFueTtcbiAgcHJveGllc1BhdGggPSAnYXBpcy9wcm94aWVzL3Y4JztcbiAgY2FyZENsa0RhdGE6IGFueTtcbiAgQ3VycmVudENhcmRDbGsgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG4gIGNvbXBsZXRlUmVzcG9uc2U6IGFueTtcbiAgXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwdWJsaWMgbG9jYWxDb25maWc6IExvY2FsQ29ubmVjdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIGdldEZyYW1ld29ya0luZm8oX29yZ0RhdGE/OmFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3Rlcm1zJyk7XG4gICAgaWYgKHRoaXMubG9jYWxDb25maWcuY29ubmVjdGlvblR5cGUgPT09ICdvbmxpbmUnKSB7XG4gICAgICAvL2ZyYW1ld29yay92MS9yZWFkLzAxMzU4OTEyMjkzODM5NjY3MjQxX29yZ19oaWVyYXJjaHlcbiAgICAgIC8vZnJhbWV3b3JrL3YxL3JlYWQvJHt0aGlzLmVudmlyb25tZW50LmZyYW1ld29ya05hbWV9XG4gICAgICBsZXQgdXJsID0gYC8ke3RoaXMucHJveGllc1BhdGh9L2ZyYW1ld29yay92MS9yZWFkL2BcbiAgICAgIGlmIChfb3JnRGF0YSkge1xuICAgICAgICB1cmwgID0gdXJsICsgX29yZ0RhdGEub3JnSGllcmFyY2h5RnJhbWV3b3JrSWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1cmwgPSB1cmwgKyB0aGlzLmVudmlyb25tZW50LmZyYW1ld29ya05hbWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt1cmx9YCwgeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSkucGlwZShcbiAgICAgICAgdGFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5yZXNldEFsbCgpO1xuICAgICAgICAgIHRoaXMuZm9ybWF0ZURhdGEocmVzcG9uc2UpO1xuICAgICAgICAgIHRoaXMuY29tcGxldGVSZXNwb25zZSA9IHJlc3BvbnNlLnJlc3VsdC5mcmFtZXdvcms7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICB0aGlzLnJlc2V0QWxsKCk7XG4gICAgICAgICAgdGhpcy5saXN0LmNsZWFyKCk7XG4gICAgICAgICAgdGhpcy5jYXRlZ29yaWVzSGFzaC5uZXh0KFtdKTtcbiAgICAgICAgICB0aHJvdyAnRXJyb3IgaW4gc291cmNlLiBEZXRhaWxzOiAnICsgZXJyO1xuICAgICAgICB9KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVzZXRBbGwoKTtcbiAgICAgIHRoaXMuZm9ybWF0ZURhdGEoRlJBTUVXT1JLKTtcbiAgICAgIHJldHVybiBvZihGUkFNRVdPUkspO1xuICAgIH1cbiAgfVxuXG4gIHJlYWRUZXJtcyhmcmFtZXdvcmtJZDogc3RyaW5nLCBjYXRlZ29yeUlkOiBzdHJpbmcsIHJlcXVlc3RCb2R5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgLyR7dGhpcy5wcm94aWVzUGF0aH0vZnJhbWV3b3JrL3YxL3Rlcm0vc2VhcmNoP2ZyYW1ld29yaz0ke2ZyYW1ld29ya0lkfSZjYXRlZ29yeT0ke2NhdGVnb3J5SWR9YCwgcmVxdWVzdEJvZHkpLnBpcGUoXG4gICAgICBtYXAoKHJlczogYW55KSA9PiByZXMucmVzdWx0KSk7XG4gIH1cblxuICBjcmVhdGVUZXJtKGZyYW1ld29ya0lkOiBzdHJpbmcsIGNhdGVnb3J5SWQ6IHN0cmluZywgcmVxdWVzdEJvZHk6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAvJHt0aGlzLnByb3hpZXNQYXRofS9mcmFtZXdvcmsvdjEvdGVybS9jcmVhdGU/ZnJhbWV3b3JrPSR7ZnJhbWV3b3JrSWR9JmNhdGVnb3J5PSR7Y2F0ZWdvcnlJZH1gLCByZXF1ZXN0Qm9keSk7XG4gIH1cbiBcbiAgY3JlYXRlVGVybXNXcmFwcGVyKGNhdGVnb3J5OiBzdHJpbmcsIHJlcXVlc3RCb2R5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBjYXRlZ29yeUl0ZW06IHN0cmluZztcbiAgICBpZiAoY2F0ZWdvcnkgPT09ICd0aGVtZScpIHtcbiAgICAgIGNhdGVnb3J5SXRlbSA9ICdjb21wZXRlbmN5VGhlbWUnO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXRlZ29yeUl0ZW0gPSAnY29tcGV0ZW5jeVN1YlRoZW1lJztcbiAgICB9XG4gICBcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYC8ke3RoaXMucHJveGllc1BhdGh9LyR7Y2F0ZWdvcnlJdGVtfS9jcmVhdGUvdGVybWAsIHJlcXVlc3RCb2R5KVxuICAgICAgLnBpcGUobWFwKHJlcyA9PiBfLmdldChyZXMsICdyZXN1bHQnKSkpO1xuICB9XG5cbiAgcmV0aXJlVGVybShmcmFtZXdvcmtJZDogc3RyaW5nLCBjYXRlZ29yeUlkOiBzdHJpbmcsIGNhdGVnb3J5VGVybUNvZGU6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoYC8ke3RoaXMucHJveGllc1BhdGh9L2ZyYW1ld29yay92MS90ZXJtL3JldGlyZS8ke2NhdGVnb3J5VGVybUNvZGV9P2ZyYW1ld29yaz0ke2ZyYW1ld29ya0lkfSZjYXRlZ29yeT0ke2NhdGVnb3J5SWR9YCk7XG4gIH1cblxuICByZXRpcmVNdWx0aXBsZVRlcm0oZnJhbWV3b3JrSWQ6IHN0cmluZywgY2F0ZWdvcnlJZDogc3RyaW5nLCByZXF1ZXN0Qm9keTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYC8ke3RoaXMucHJveGllc1BhdGh9L2ZyYW1ld29yay92MS90ZXJtL3JldGlyZT9mcmFtZXdvcms9JHtmcmFtZXdvcmtJZH0mY2F0ZWdvcnk9JHtjYXRlZ29yeUlkfWAsIHJlcXVlc3RCb2R5KTtcbiAgfVxuXG4gIHVwZGF0ZVRlcm0oZnJhbWV3b3JrSWQ6IHN0cmluZywgY2F0ZWdvcnlJZDogc3RyaW5nLCBjYXRlZ29yeVRlcm1Db2RlOiBzdHJpbmcsIHJlcXVlc3RCb2R5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2goYC8ke3RoaXMucHJveGllc1BhdGh9L2ZyYW1ld29yay92MS90ZXJtL3VwZGF0ZS8ke2NhdGVnb3J5VGVybUNvZGV9P2ZyYW1ld29yaz0ke2ZyYW1ld29ya0lkfSZjYXRlZ29yeT0ke2NhdGVnb3J5SWR9YCwgcmVxdWVzdEJvZHkpO1xuICB9XG5cbiAgcHVibGlzaEZyYW1ld29yaygpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgLyR7dGhpcy5wcm94aWVzUGF0aH0vZnJhbWV3b3JrL3YxL3B1Ymxpc2gvJHt0aGlzLmVudmlyb25tZW50LmZyYW1ld29ya05hbWV9YCwge30pO1xuICB9XG5cbiAgZ2V0VXVpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB1dWlkdjQoKTtcbiAgfVxuXG4gIHVwZGF0ZUVudmlyb25tZW50KGVudjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IGVudjtcbiAgfVxuXG4gIGdldEVudmlyb21lbnQoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5lbnZpcm9ubWVudDtcbiAgfVxuXG4gIGdldEZyYW1ld29ya0lkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWV3b3JrSWQ7XG4gIH1cblxuICBnZXROZXh0Q2F0ZWdvcnkoY3VycmVudENhdGVnb3J5OiBzdHJpbmcpOiBOU0ZyYW1ld29yay5JQ2F0ZWdvcnkgfCBudWxsIHtcbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLmNhdGVnb3JpZXNIYXNoLnZhbHVlLmZpbmRJbmRleCgoYTogTlNGcmFtZXdvcmsuSUNhdGVnb3J5KSA9PiB7XG4gICAgICByZXR1cm4gYS5jb2RlID09PSBjdXJyZW50Q2F0ZWdvcnk7XG4gICAgfSk7XG4gICAgbGV0IGNhdGVnb3J5TGVuZ3RoID0gdGhpcy5jYXRlZ29yaWVzSGFzaC5nZXRWYWx1ZSgpLmxlbmd0aDtcbiAgICByZXR1cm4gKGN1cnJlbnRJbmRleCArIDEpIDwgY2F0ZWdvcnlMZW5ndGggPyB0aGlzLmNhdGVnb3JpZXNIYXNoLmdldFZhbHVlKClbY3VycmVudEluZGV4ICsgMV0gOiBudWxsO1xuICB9XG5cbiAgZ2V0UHJldmlvdXNDYXRlZ29yeShjdXJyZW50Q2F0ZWdvcnk6IHN0cmluZyk6IE5TRnJhbWV3b3JrLklDYXRlZ29yeSB8IG51bGwge1xuICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuY2F0ZWdvcmllc0hhc2gudmFsdWUuZmluZEluZGV4KChhOiBOU0ZyYW1ld29yay5JQ2F0ZWdvcnkpID0+IHtcbiAgICAgIHJldHVybiBhLmNvZGUgPT09IGN1cnJlbnRDYXRlZ29yeTtcbiAgICB9KTtcbiAgICByZXR1cm4gKGN1cnJlbnRJbmRleCAtIDEpID49IDAgPyB0aGlzLmNhdGVnb3JpZXNIYXNoLmdldFZhbHVlKClbY3VycmVudEluZGV4IC0gMV0gOiBudWxsO1xuICB9XG5cbiAgZ2V0UGFyZW50VGVybShjdXJyZW50Q2F0ZWdvcnk6IHN0cmluZyk6IGFueSB7XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5nZXRQcmV2aW91c0NhdGVnb3J5KGN1cnJlbnRDYXRlZ29yeSkgfHwgbnVsbDtcbiAgICByZXR1cm4gcGFyZW50ID8gdGhpcy5zZWxlY3Rpb25MaXN0LmdldChwYXJlbnQuY29kZSkgOiBudWxsO1xuICB9XG5cbiAgY2hpbGRDbGljayhldmVudDogeyB0eXBlOiBzdHJpbmcsIGRhdGE6IGFueSB9KTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50U2VsZWN0aW9uLm5leHQoZXZlbnQpO1xuICB9XG5cbiAgcmVzZXRBbGwoKTogdm9pZCB7XG4gICAgdGhpcy5jYXRlZ29yaWVzSGFzaC5uZXh0KFtdKTtcbiAgICB0aGlzLmN1cnJlbnRTZWxlY3Rpb24ubmV4dChudWxsKTtcbiAgICB0aGlzLnNlbGVjdGlvbkxpc3QuY2xlYXIoKTtcbiAgICB0aGlzLmxpc3QuY2xlYXIoKTtcbiAgfVxuXG4gIGlzTGFzdENvbHVtbihjb2xDb2RlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jYXRlZ29yaWVzSGFzaC52YWx1ZSAmJiAodGhpcy5jYXRlZ29yaWVzSGFzaC52YWx1ZS5maW5kSW5kZXgoKGE6IE5TRnJhbWV3b3JrLklDYXRlZ29yeSkgPT4ge1xuICAgICAgcmV0dXJuIGEuY29kZSA9PT0gY29sQ29kZTtcbiAgICB9KSkgPT09ICh0aGlzLmNhdGVnb3JpZXNIYXNoLnZhbHVlLmxlbmd0aCAtIDEpO1xuICB9XG5cbiAgcmVtb3ZlSXRlbUZyb21BcnJheShhcnJheTogYW55W10sIGl0ZW06IGFueSk6IGFueVtdIHtcbiAgICAvKiBhc3NpZ24gYSBlbXB0eSBhcnJheSAqL1xuICAgIHZhciB0bXA6IGFueVtdID0gW107XG4gICAgLyogbG9vcCBvdmVyIGFsbCBhcnJheSBpdGVtcyAqL1xuICAgIGZvciAodmFyIGluZGV4IGluIGFycmF5KSB7XG4gICAgICBpZiAoYXJyYXlbaW5kZXhdICE9PSBpdGVtKSB7XG4gICAgICAgIC8qIHB1c2ggdG8gdGVtcG9yYXJ5IGFycmF5IGlmIG5vdCBsaWtlIGl0ZW0gKi9cbiAgICAgICAgdG1wLnB1c2goYXJyYXlbaW5kZXhdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLyogcmV0dXJuIHRoZSB0ZW1wb3JhcnkgYXJyYXkgKi9cbiAgICByZXR1cm4gdG1wO1xuICB9XG5cbiAgc2V0IHNldFRlcm0ocmVzOiBhbnkpIHtcbiAgICB0aGlzLnRlcm1TdWJqZWN0Lm5leHQocmVzKTtcbiAgICBsZXQgb2xkVGVybXMgPSB0aGlzLmdldFRlcm0gfHwgW107XG4gICAgb2xkVGVybXMucHVzaChyZXMpO1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0ZXJtcycsIEpTT04uc3RyaW5naWZ5KG9sZFRlcm1zKSk7XG4gIH1cblxuICBnZXQgZ2V0VGVybSgpOiBhbnlbXSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3Rlcm1zJykgfHwgJ1tdJykgfHwgW107XG4gIH1cblxuICB1cGRhdGVBZnRlckFkZE9yRWRpdFN1YmplY3QocmVzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAocmVzKSB7XG4gICAgICB0aGlzLmFmdGVyQWRkT3JFZGl0U3ViamVjdC5uZXh0KHJlcyk7XG4gICAgfSBcbiAgfVxuXG4gIGdldExvY2FsVGVybXNCeVBhcmVudChwYXJlbnRDb2RlOiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgY29uc3QgZmlsdGVyZWREYXRhID0gdGhpcy5nZXRUZXJtLmZpbHRlcih4ID0+IHtcbiAgICAgIHJldHVybiB4LnBhcmVudCAmJiB4LnBhcmVudC5jYXRlZ29yeSA9PT0gcGFyZW50Q29kZTtcbiAgICB9KSB8fCBbXTtcblxuICAgIHJldHVybiBmaWx0ZXJlZERhdGEubWFwKHggPT4ge1xuICAgICAgcmV0dXJuIHgudGVybTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldExvY2FsVGVybXNCeUNhdGVnb3J5KHBhcmVudENvZGU6IHN0cmluZyk6IGFueVtdIHtcbiAgICBjb25zdCBmaWx0ZXJlZERhdGEgPSB0aGlzLmdldFRlcm0uZmlsdGVyKHggPT4ge1xuICAgICAgcmV0dXJuIHgudGVybSAmJiB4LnRlcm0uY2F0ZWdvcnkgPT09IHBhcmVudENvZGU7XG4gICAgfSkgfHwgW107XG5cbiAgICByZXR1cm4gZmlsdGVyZWREYXRhO1xuICB9XG5cbiAgZ2V0TG9jYWxUZXJtc0NhdGVnb3J5KGNhdGVnb3J5OiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgY29uc3QgZmlsdGVyZWREYXRhID0gdGhpcy5nZXRUZXJtLmZpbHRlcih4ID0+IHtcbiAgICAgIHJldHVybiB4LmNhdGVnb3J5ID09PSBjYXRlZ29yeTtcbiAgICB9KSB8fCBbXTtcblxuICAgIHJldHVybiBmaWx0ZXJlZERhdGE7XG4gIH1cblxuICBmb3JtYXRlRGF0YShyZXNwb25zZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5mcmFtZXdvcmtJZCA9IHJlc3BvbnNlLnJlc3VsdC5mcmFtZXdvcmsuY29kZTtcbiAgICAocmVzcG9uc2UucmVzdWx0LmZyYW1ld29yay5jYXRlZ29yaWVzKS5mb3JFYWNoKChhOiBhbnksIF9pZHg6IG51bWJlcikgPT4ge1xuICAgICAgdGhpcy5saXN0LnNldChhLmNvZGUsIHtcbiAgICAgICAgY29kZTogYS5jb2RlLFxuICAgICAgICBpZGVudGlmaWVyOiBhLmlkZW50aWZpZXIsXG4gICAgICAgIGluZGV4OiBhLmluZGV4LFxuICAgICAgICBuYW1lOiBhLm5hbWUsXG4gICAgICAgIHNlbGVjdGVkOiBhLnNlbGVjdGVkLFxuICAgICAgICBzdGF0dXM6IGEuc3RhdHVzIGFzIE5TRnJhbWV3b3JrLlROb2RlU3RhdHVzLFxuICAgICAgICBkZXNjcmlwdGlvbjogYS5kZXNjcmlwdGlvbixcbiAgICAgICAgdHJhbnNsYXRpb25zOiBhLnRyYW5zbGF0aW9ucyxcbiAgICAgICAgY2F0ZWdvcnk6IGEuY2F0ZWdvcnksXG4gICAgICAgIGFzc29jaWF0aW9uczogYS5hc3NvY2lhdGlvbnMsXG4gICAgICAgIGNvbmZpZzogdGhpcy5nZXRDb25maWcoYS5jb2RlKSxcbiAgICAgICAgY2hpbGRyZW46IChhLnRlcm1zIHx8IFtdKS5tYXAoKGM6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGFzc29jaWF0aW9ucyA9IGMuYXNzb2NpYXRpb25zIHx8IFtdO1xuICAgICAgICAgIGlmIChhc3NvY2lhdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihjLCB7IGNoaWxkcmVuOiBhc3NvY2lhdGlvbnMgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBjO1xuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgXG4gICAgY29uc3QgYWxsQ2F0ZWdvcmllczogTlNGcmFtZXdvcmsuSUNhdGVnb3J5W10gPSBbXTtcbiAgICB0aGlzLmxpc3QuZm9yRWFjaChhID0+IHtcbiAgICAgIGFsbENhdGVnb3JpZXMucHVzaCh7XG4gICAgICAgIGNvZGU6IGEuY29kZSxcbiAgICAgICAgaWRlbnRpZmllcjogYS5pZGVudGlmaWVyLFxuICAgICAgICBpbmRleDogYS5pbmRleCxcbiAgICAgICAgbmFtZTogYS5uYW1lLFxuICAgICAgICBzdGF0dXM6IGEuc3RhdHVzIGFzIE5TRnJhbWV3b3JrLlROb2RlU3RhdHVzLFxuICAgICAgICBkZXNjcmlwdGlvbjogYS5kZXNjcmlwdGlvbixcbiAgICAgICAgdHJhbnNsYXRpb25zOiBhLnRyYW5zbGF0aW9ucyxcbiAgICAgIH0gYXMgTlNGcmFtZXdvcmsuSUNhdGVnb3J5KTtcbiAgICB9KTtcbiAgICB0aGlzLmNhdGVnb3JpZXNIYXNoLm5leHQoYWxsQ2F0ZWdvcmllcyk7XG4gIH1cblxuICByZW1vdmVPbGRMaW5lKCk6IHZvaWQge1xuICAgIGNvbnN0IGVsZXMgPSBBcnJheS5mcm9tKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xlYWRlci1saW5lJykgfHwgW10pO1xuICAgIGlmIChlbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGVsZXMuZm9yRWFjaChlbGUgPT4gZWxlLnJlbW92ZSgpKTtcbiAgICB9XG4gIH1cblxuICBzZXRDb25maWcoY29uZmlnOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnJvb3RDb25maWcgPSBjb25maWc7XG4gIH1cblxuICBnZXRDb25maWcoY29kZTogc3RyaW5nKTogYW55IHtcbiAgICBsZXQgY2F0ZWdvcnlDb25maWc6IGFueTtcbiAgICBpZiAodGhpcy5yb290Q29uZmlnICYmIHRoaXMucm9vdENvbmZpZ1swXSkge1xuICAgICAgdGhpcy5yb290Q29uZmlnLmZvckVhY2goKGNvbmZpZzogYW55KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmZyYW1ld29ya0lkID09IGNvbmZpZy5mcmFtZXdvcmtJZCkge1xuICAgICAgICAgIGNhdGVnb3J5Q29uZmlnID0gY29uZmlnLmNvbmZpZy5maW5kKChvYmo6IGFueSkgPT4gb2JqLmNhdGVnb3J5ID09IGNvZGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKCFjYXRlZ29yeUNvbmZpZykge1xuICAgICAgcmV0dXJuIHRoaXMucm9vdENvbmZpZy5jb25maWdbMF1cbiAgICB9XG4gICAgcmV0dXJuIGNhdGVnb3J5Q29uZmlnO1xuICB9XG5cbiAgZ2V0QWxsU2VsZWN0ZWRUZXJtcygpOiBhbnlbXSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRUZXJtczogYW55W10gPSBbXTtcbiAgICB0aGlzLmxpc3QuZm9yRWFjaChsID0+IHtcbiAgICAgIGlmIChsLmNoaWxkcmVuICYmIGwuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIGwuY2hpbGRyZW4uZm9yRWFjaChjID0+IHtcbiAgICAgICAgICBpZiAoYy5zZWxlY3RlZCkge1xuICAgICAgICAgICAgc2VsZWN0ZWRUZXJtcy5wdXNoKGMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHNlbGVjdGVkVGVybXM7XG4gIH1cblxuICBnZXRQcmV2aW91c1NlbGVjdGVkVGVybXMoY29kZTogc3RyaW5nKTogYW55W10ge1xuICAgIGxldCBwcmV2U2VsZWN0ZWRUZXJtczogYW55W10gPSBbXTtcbiAgICB0aGlzLnNlbGVjdGlvbkxpc3QuZm9yRWFjaChzbCA9PiB7XG4gICAgICBpZiAoc2wuY2F0ZWdvcnkgIT09IGNvZGUpIHtcbiAgICAgICAgcHJldlNlbGVjdGVkVGVybXMucHVzaChzbCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHByZXZTZWxlY3RlZFRlcm1zO1xuICB9XG5cbiAgZ2V0S2NtU2VhcmNoTGlzdChyZXF1ZXN0Qm9keTogYW55LCBjYXRlZ29yeTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgY2F0ZWdvcnlJdGVtOiBzdHJpbmc7XG4gICAgaWYgKGNhdGVnb3J5ID09PSAndGhlbWUnKSB7XG4gICAgICBjYXRlZ29yeUl0ZW0gPSAnY29tcGV0ZW5jeVRoZW1lJztcbiAgICB9IGVsc2Uge1xuICAgICAgY2F0ZWdvcnlJdGVtID0gJ2NvbXBldGVuY3lTdWJUaGVtZSc7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgLyR7dGhpcy5wcm94aWVzUGF0aH0vJHtjYXRlZ29yeUl0ZW19L3NlYXJjaGAsIHJlcXVlc3RCb2R5KVxuICAgICAgLnBpcGUobWFwKHJlcyA9PiBfLmdldChyZXMsICdyZXN1bHQucmVzdWx0JykpKTtcbiAgfVxuXG4gIHVwZGF0ZUxvY2FsTGlzdChpdGVtOiBhbnksIHBhcmVudDogYW55LCBzZWxlY3RlZFRlcm1BcnJheTogYW55W10sIHVwZGF0ZVR5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChpdGVtICYmIGl0ZW0uY2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIGlmICh1cGRhdGVUeXBlID09PSAnZGVsZXRlJykge1xuICAgICAgICBpdGVtLmNoaWxkcmVuLmZvckVhY2goKGl0bURhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChpdG1EYXRhLmlkZW50aWZpZXIgPT09IHBhcmVudC5pZGVudGlmaWVyKSB7XG4gICAgICAgICAgICBjb25zdCBhc3NvY2lhdGlvbkxpc3Q6IGFueSA9IF8uZGlmZmVyZW5jZVdpdGgoaXRtRGF0YS5hc3NvY2lhdGlvbnMsIHNlbGVjdGVkVGVybUFycmF5LCAoYTphbnksIGI6IGFueSkgPT4gYS5pZGVudGlmaWVyID09PSBiLmlkZW50aWZpZXIpO1xuICAgICAgICAgICAgY29uc3QgY2hpbGRyZW5MaXN0OiBhbnkgPSBfLmRpZmZlcmVuY2VXaXRoKGl0bURhdGEuY2hpbGRyZW4sIHNlbGVjdGVkVGVybUFycmF5LCAoYTphbnksIGI6IGFueSkgPT4gYS5pZGVudGlmaWVyID09PSBiLmlkZW50aWZpZXIpO1xuICAgICAgICAgICAgaXRtRGF0YVsnYXNzb2NpYXRpb25zJ10gPSBhc3NvY2lhdGlvbkxpc3Q7XG4gICAgICAgICAgICBpdG1EYXRhWydjaGlsZHJlbiddID0gY2hpbGRyZW5MaXN0O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXRtRGF0YS5jaGlsZHJlbikge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMb2NhbExpc3QoaXRtRGF0YSwgcGFyZW50LCBzZWxlY3RlZFRlcm1BcnJheSwgdXBkYXRlVHlwZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGl0ZW0uY2hpbGRyZW4uZm9yRWFjaCgoaXRtRGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKGl0bURhdGEuaWRlbnRpZmllciA9PT0gcGFyZW50LmlkZW50aWZpZXIpIHtcbiAgICAgICAgICAgIGxldCBkaWZmZXJlbmNlRGF0YTogYW55W10gPSBbXTtcbiAgICAgICAgICAgIGlmIChpdG1EYXRhICYmIGl0bURhdGEuY2hpbGRyZW4gJiYgaXRtRGF0YS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgZGlmZmVyZW5jZURhdGEgID0gXy5kaWZmZXJlbmNlQnkoc2VsZWN0ZWRUZXJtQXJyYXksIGl0bURhdGEuY2hpbGRyZW4sICdpZGVudGlmaWVyJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBkaWZmZXJlbmNlRGF0YSA9IHNlbGVjdGVkVGVybUFycmF5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXRtRGF0YVsnYXNzb2NpYXRpb25zJ10gPSBpdG1EYXRhICYmIGl0bURhdGEuYXNzb2NpYXRpb25zID8gWy4uLml0bURhdGEuYXNzb2NpYXRpb25zLCAuLi5kaWZmZXJlbmNlRGF0YV0gOiBkaWZmZXJlbmNlRGF0YTtcbiAgICAgICAgICAgIGl0bURhdGFbJ2NoaWxkcmVuJ10gPSBpdG1EYXRhICYmIGl0bURhdGEuY2hpbGRyZW4gPyBbLi4uaXRtRGF0YS5jaGlsZHJlbiwgLi4uZGlmZmVyZW5jZURhdGFdIDogZGlmZmVyZW5jZURhdGE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpdG1EYXRhLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUxvY2FsTGlzdChpdG1EYXRhLCBwYXJlbnQsIHNlbGVjdGVkVGVybUFycmF5LCB1cGRhdGVUeXBlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUZyYW1ld29ya0xpc3QoY29sdW1uQ29kZTogc3RyaW5nLCBwYXJlbnREYXRhOiBhbnksIHNlbGVjdGVkVGVybUFycmF5OiBhbnlbXSwgdXBkYXRlVHlwZT86IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCBsaXN0RGF0YTogYW55ID0gdGhpcy5saXN0LmdldChjb2x1bW5Db2RlKTtcbiAgICBpZiAodXBkYXRlVHlwZSA9PT0gJ2RlbGV0ZScpIHtcbiAgICAgIGNvbnN0IGFzc29jaWF0aW9uTGlzdDogYW55ID0gXy5kaWZmZXJlbmNlV2l0aChsaXN0RGF0YS5hc3NvY2lhdGlvbnMsIHNlbGVjdGVkVGVybUFycmF5LCAoYTphbnksIGI6IGFueSkgPT4gYS5pZGVudGlmaWVyID09PSBiLmlkZW50aWZpZXIpO1xuICAgICAgY29uc3QgY2hpbGRyZW5MaXN0OiBhbnkgPSBfLmRpZmZlcmVuY2VXaXRoKGxpc3REYXRhLmNoaWxkcmVuLCBzZWxlY3RlZFRlcm1BcnJheSwgKGE6YW55LCBiOiBhbnkpID0+IGEuaWRlbnRpZmllciA9PT0gYi5pZGVudGlmaWVyKTtcbiAgICAgIGxpc3REYXRhWydhc3NvY2lhdGlvbnMnXSA9IGFzc29jaWF0aW9uTGlzdDtcbiAgICAgIGxpc3REYXRhWydjaGlsZHJlbiddID0gY2hpbGRyZW5MaXN0O1xuXG4gICAgICB0aGlzLnNlbGVjdGlvbkxpc3QuZm9yRWFjaCgoc2VsZWN0ZWREYXRhOiBhbnkpID0+IHtcbiAgICAgICAgbGV0IGxpc3REYXRhOiBhbnkgPSB0aGlzLmxpc3QuZ2V0KHNlbGVjdGVkRGF0YS5jYXRlZ29yeSk7XG4gICAgICAgIGlmIChsaXN0RGF0YSAmJiBsaXN0RGF0YS5jaGlsZHJlbiAmJiBsaXN0RGF0YS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUxvY2FsTGlzdChsaXN0RGF0YSwgcGFyZW50RGF0YSwgc2VsZWN0ZWRUZXJtQXJyYXksIHVwZGF0ZVR5cGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGRpZmZlcmVuY2VEYXRhOiBhbnlbXSA9IFtdO1xuICAgICAgaWYgKGxpc3REYXRhICYmIGxpc3REYXRhLmNoaWxkcmVuICYmIGxpc3REYXRhLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICBkaWZmZXJlbmNlRGF0YSA9IF8uZGlmZmVyZW5jZUJ5KHNlbGVjdGVkVGVybUFycmF5LCBsaXN0RGF0YS5jaGlsZHJlbiwgJ2lkZW50aWZpZXInKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRpZmZlcmVuY2VEYXRhID0gc2VsZWN0ZWRUZXJtQXJyYXk7XG4gICAgICB9XG4gICAgICBsaXN0RGF0YVsnYXNzb2NpYXRpb25zJ10gPSBsaXN0RGF0YSAmJiBsaXN0RGF0YS5hc3NvY2lhdGlvbnMgPyBbLi4ubGlzdERhdGEuYXNzb2NpYXRpb25zLCAuLi5kaWZmZXJlbmNlRGF0YV0gOiBkaWZmZXJlbmNlRGF0YTtcbiAgICAgIGxpc3REYXRhWydjaGlsZHJlbiddID0gbGlzdERhdGEgJiYgbGlzdERhdGEuY2hpbGRyZW4gPyBbLi4ubGlzdERhdGEuY2hpbGRyZW4sIC4uLmRpZmZlcmVuY2VEYXRhXSA6IGRpZmZlcmVuY2VEYXRhO1xuXG4gICAgICB0aGlzLnNlbGVjdGlvbkxpc3QuZm9yRWFjaCgoc2VsZWN0ZWREYXRhOiBhbnkpID0+IHtcbiAgICAgICAgbGV0IGxpc3REYXRhOiBhbnkgPSB0aGlzLmxpc3QuZ2V0KHNlbGVjdGVkRGF0YS5jYXRlZ29yeSk7XG4gICAgICAgIGlmIChsaXN0RGF0YSAmJiBsaXN0RGF0YS5jaGlsZHJlbiAmJiBsaXN0RGF0YS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUxvY2FsTGlzdChsaXN0RGF0YSwgcGFyZW50RGF0YSwgc2VsZWN0ZWRUZXJtQXJyYXksIHVwZGF0ZVR5cGUgfHwgJycpO1xuICAgICAgICB9XG4gICAgICB9KTsgXG4gICAgfVxuICB9XG5cbiAgZ2V0RnJhbWV3b3JrUmVhZChmcmFtZVdvcmtJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAodGhpcy5sb2NhbENvbmZpZy5jb25uZWN0aW9uVHlwZSA9PT0gJ29ubGluZScpIHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAvJHt0aGlzLnByb3hpZXNQYXRofS9mcmFtZXdvcmsvdjEvcmVhZC8ke2ZyYW1lV29ya0lkfWAsIHsgd2l0aENyZWRlbnRpYWxzOiB0cnVlIH0pLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4gXy5nZXQocmVzcG9uc2UsICdyZXN1bHQuZnJhbWV3b3JrJykpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb2Yoe30pO1xuICAgIH1cbiAgfVxuXG4gIGdldENvbmZpZ09mQ2F0ZWdvcnlDb25maWdCeUZyYW1lV29ya0lkKGNvZGU6IHN0cmluZywgZnJhbWV3b3JrSWQ6IHN0cmluZyk6IGFueSB7XG4gICAgbGV0IGNhdGVnb3J5Q29uZmlnOiBhbnk7XG4gICAgaWYgKHRoaXMucm9vdENvbmZpZyAmJiB0aGlzLnJvb3RDb25maWdbMF0pIHtcbiAgICAgIHRoaXMucm9vdENvbmZpZy5mb3JFYWNoKChjb25maWc6IGFueSkgPT4ge1xuICAgICAgICBpZiAoZnJhbWV3b3JrSWQgPT0gY29uZmlnLmZyYW1ld29ya0lkKSB7XG4gICAgICAgICAgY2F0ZWdvcnlDb25maWcgPSBjb25maWcuY29uZmlnLmZpbmQoKG9iajogYW55KSA9PiBvYmouY2F0ZWdvcnkgPT0gY29kZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY2F0ZWdvcnlDb25maWc7XG4gIH1cblxuICBnZXRDb25maWdCeUZyYW1lV29ya0lkKGZyYW1ld29ya0lkOiBzdHJpbmcpOiBhbnkge1xuICAgIGxldCBjYXRlZ29yeUNvbmZpZzogYW55O1xuICAgIGlmICh0aGlzLnJvb3RDb25maWcgJiYgdGhpcy5yb290Q29uZmlnWzBdKSB7XG4gICAgICB0aGlzLnJvb3RDb25maWcuZm9yRWFjaCgoY29uZmlnOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGZyYW1ld29ya0lkID09IGNvbmZpZy5mcmFtZXdvcmtJZCkge1xuICAgICAgICAgIGNhdGVnb3J5Q29uZmlnID0gY29uZmlnO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGNhdGVnb3J5Q29uZmlnO1xuICB9XG5cbiAgdXBkYXRlRnVsbFRlcm1EYXRhTG9jYWxNYXAoX2NvbHVtbkNvZGU6IHN0cmluZywgcGFyZW50RGF0YTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3Rpb25MaXN0LmZvckVhY2goKHNlbGVjdGVkRGF0YTogYW55KSA9PiB7XG4gICAgICBsZXQgbGlzdERhdGE6IGFueSA9IHRoaXMubGlzdC5nZXQoc2VsZWN0ZWREYXRhLmNhdGVnb3J5KTtcbiAgICAgIGlmIChsaXN0RGF0YSAmJiBsaXN0RGF0YS5jaGlsZHJlbiAmJiBsaXN0RGF0YS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy51cGRhdGVMb2NhbExpc3RUZXJtKGxpc3REYXRhLCBwYXJlbnREYXRhKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZUxvY2FsTGlzdFRlcm0oaXRlbTogYW55LCBwYXJlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmIChpdGVtICYmIGl0ZW0uY2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIGl0ZW0uY2hpbGRyZW4uZm9yRWFjaCgoaXRtRGF0YTogYW55KSA9PiB7XG4gICAgICAgIGlmIChpdG1EYXRhLmlkZW50aWZpZXIgPT09IHBhcmVudC5pZGVudGlmaWVyKSB7XG4gICAgICAgICAgaXRtRGF0YVsnZGVzY3JpcHRpb24nXSA9IHBhcmVudFsnZGVzY3JpcHRpb24nXTtcbiAgICAgICAgICBpdG1EYXRhWydhZGRpdGlvbmFsUHJvcGVydGllcyddID0gcGFyZW50WydhZGRpdGlvbmFsUHJvcGVydGllcyddO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpdG1EYXRhLmNoaWxkcmVuKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVMb2NhbExpc3RUZXJtKGl0bURhdGEsIHBhcmVudCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufSJdfQ==
501
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWV3b3JrLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdHJlZS1oaWVyYXJjaHkvc3JjL2xpYi9zZXJ2aWNlcy9mcmFtZXdvcmsuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHOUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJcEMsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDOzs7O0FBSXZCLE1BQU0sWUFBWSxHQUFHO0lBQ25CLGFBQWEsRUFBRSxnQ0FBZ0M7SUFDL0MsWUFBWSxFQUFFLGtEQUFrRDtJQUNoRSxZQUFZLEVBQUUsNENBQTRDO0lBQzFELGtCQUFrQixFQUFFLDRDQUE0QztJQUNoRSxpQkFBaUIsRUFBRSx3Q0FBd0M7SUFDM0QsV0FBVyxFQUFFLDJDQUEyQztJQUN4RCxlQUFlLEVBQUUsZ0RBQWdEO0lBQ2pFLFlBQVksRUFBRSxnQ0FBZ0M7Q0FDL0MsQ0FBQTtBQVdELE1BQU0sT0FBTyxnQkFBZ0I7SUFxQjNCLFlBQ1UsSUFBZ0IsRUFDakIsV0FBbUM7UUFEbEMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNqQixnQkFBVyxHQUFYLFdBQVcsQ0FBd0I7UUF0QjVDLG1CQUFjLEdBQWtELElBQUksZUFBZSxDQUErQixFQUFFLENBQUMsQ0FBQztRQUN0SCxrQkFBYSxHQUE2QixJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUM5RSxxQkFBZ0IsR0FDZCxJQUFJLGVBQWUsQ0FBdUUsSUFBSSxDQUFDLENBQUM7UUFDbEcsZ0JBQVcsR0FBeUIsSUFBSSxlQUFlLENBQU0sSUFBSSxDQUFDLENBQUM7UUFDbkUsMEJBQXFCLEdBQXlCLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxDQUFDO1FBQzdFLFNBQUksR0FBRyxJQUFJLEdBQUcsRUFBbUMsQ0FBQztRQUNsRCxrQkFBYSxHQUFHLElBQUksR0FBRyxFQUFlLENBQUM7UUFDdkMsK0JBQTBCLEdBQXlDLElBQUksZUFBZSxDQUFzQixJQUFJLENBQUMsQ0FBQztRQUtsSCxnQkFBVyxHQUFHLGlCQUFpQixDQUFDO1FBRWhDLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQU0sSUFBSSxDQUFDLENBQUM7SUFTN0MsQ0FBQztJQUVKLGdCQUFnQixDQUFDLFFBQWE7UUFDNUIsWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxLQUFLLFFBQVEsRUFBRTtZQUNoRCxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxXQUFXLHFCQUFxQixDQUFBO1lBQ25ELElBQUksUUFBUSxFQUFFO2dCQUNaLEdBQUcsR0FBRyxHQUFHLEdBQUcsUUFBUSxDQUFDLHVCQUF1QixDQUFDO2FBQzlDO2lCQUFNO2dCQUNMLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7YUFDNUM7WUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQzVELFNBQVMsQ0FBQyxDQUFDLGlCQUFzQixFQUFFLEVBQUU7Z0JBQ25DLE1BQU0seUJBQXlCLEdBQUcsaUJBQWlCLENBQUM7Z0JBQ3BELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FDNUMsU0FBUyxDQUFDLENBQUMsV0FBZ0IsRUFBRSxFQUFFO29CQUM3QixJQUFJLENBQUMsY0FBYyxHQUFHLFdBQVcsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUM7b0JBQ25FLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FDOUIsR0FBRyxDQUFDLEdBQUcsRUFBRTt3QkFDUCxPQUFPLHlCQUF5QixDQUFBO29CQUNsQyxDQUFDLENBQUMsQ0FDSCxDQUFDO2dCQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7WUFDSixDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsS0FBSyxFQUFFLFFBQWEsRUFBRSxFQUFFO2dCQUMxQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztZQUNwRCxDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDN0IsTUFBTSw0QkFBNEIsR0FBRyxHQUFHLENBQUM7WUFDM0MsQ0FBQyxDQUFDLENBQ0gsQ0FBQztTQUNIO2FBQU07WUFDTCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM1QixPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUN0QjtJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsV0FBbUIsRUFBRSxVQUFrQixFQUFFLFdBQWdCO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyx1Q0FBdUMsV0FBVyxhQUFhLFVBQVUsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDdEksR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsVUFBVSxDQUFDLFdBQW1CLEVBQUUsVUFBa0IsRUFBRSxXQUFnQjtRQUNsRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsdUNBQXVDLFdBQVcsYUFBYSxVQUFVLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN0SSxDQUFDO0lBRUQsa0JBQWtCLENBQUMsUUFBZ0IsRUFBRSxXQUFnQjtRQUNuRCxJQUFJLFlBQW9CLENBQUM7UUFDekIsSUFBSSxRQUFRLEtBQUssT0FBTyxFQUFFO1lBQ3hCLFlBQVksR0FBRyxpQkFBaUIsQ0FBQztTQUNsQzthQUFNO1lBQ0wsWUFBWSxHQUFHLG9CQUFvQixDQUFDO1NBQ3JDO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksWUFBWSxjQUFjLEVBQUUsV0FBVyxDQUFDO2FBQ25GLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELFVBQVUsQ0FBQyxXQUFtQixFQUFFLFVBQWtCLEVBQUUsZ0JBQXdCO1FBQzFFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyw2QkFBNkIsZ0JBQWdCLGNBQWMsV0FBVyxhQUFhLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDL0ksQ0FBQztJQUVELGtCQUFrQixDQUFDLFdBQW1CLEVBQUUsVUFBa0IsRUFBRSxXQUFnQjtRQUMxRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsdUNBQXVDLFdBQVcsYUFBYSxVQUFVLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN0SSxDQUFDO0lBRUQsVUFBVSxDQUFDLFdBQW1CLEVBQUUsVUFBa0IsRUFBRSxnQkFBd0IsRUFBRSxXQUFnQjtRQUM1RixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsNkJBQTZCLGdCQUFnQixjQUFjLFdBQVcsYUFBYSxVQUFVLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMzSixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLHlCQUF5QixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNHLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsR0FBUTtRQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztJQUN6QixDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsZUFBZSxDQUFDLGVBQXVCO1FBQ3JDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQXdCLEVBQUUsRUFBRTtZQUNwRixPQUFPLENBQUMsQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDM0QsT0FBTyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdkcsQ0FBQztJQUVELG1CQUFtQixDQUFDLGVBQXVCO1FBQ3pDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQXdCLEVBQUUsRUFBRTtZQUNwRixPQUFPLENBQUMsQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDM0YsQ0FBQztJQUVELGFBQWEsQ0FBQyxlQUF1QjtRQUNuQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLElBQUksSUFBSSxDQUFDO1FBQ2pFLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM3RCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWtDO1FBQzNDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQWU7UUFDMUIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQXdCLEVBQUUsRUFBRTtZQUNwRyxPQUFPLENBQUMsQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQVksRUFBRSxJQUFTO1FBRXpDLElBQUksR0FBRyxHQUFVLEVBQUUsQ0FBQztRQUVwQixLQUFLLElBQUksS0FBSyxJQUFJLEtBQUssRUFBRTtZQUN2QixJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUU7Z0JBRXpCLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDeEI7U0FDRjtRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLEdBQVE7UUFDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDbEMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQixZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqRSxDQUFDO0lBRUQsMkJBQTJCLENBQUMsR0FBUTtRQUNsQyxJQUFJLEdBQUcsRUFBRTtZQUNQLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDdEM7SUFDSCxDQUFDO0lBRUQscUJBQXFCLENBQUMsVUFBa0I7UUFDdEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDM0MsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxLQUFLLFVBQVUsQ0FBQztRQUN0RCxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFVCxPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDMUIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHVCQUF1QixDQUFDLFVBQWtCO1FBQ3hDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzNDLE9BQU8sQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxVQUFVLENBQUM7UUFDbEQsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRVQsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVELHFCQUFxQixDQUFDLFFBQWdCO1FBQ3BDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzNDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUM7UUFDakMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRVQsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFhO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQ2xELENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBTSxFQUFFLElBQVksRUFBRSxFQUFFO1lBQ3RFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3BCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtnQkFDWixVQUFVLEVBQUUsQ0FBQyxDQUFDLFVBQVU7Z0JBQ3hCLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztnQkFDZCxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUk7Z0JBQ1osUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRO2dCQUNwQixNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQWlDO2dCQUMzQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFdBQVc7Z0JBQzFCLFlBQVksRUFBRSxDQUFDLENBQUMsWUFBWTtnQkFDNUIsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRO2dCQUNwQixZQUFZLEVBQUUsQ0FBQyxDQUFDLFlBQVk7Z0JBQzVCLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQzlCLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7b0JBQ3ZDLE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO29CQUMxQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFBO29CQUN0QyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFBO29CQUMxQyxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO3dCQUMzQixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO3FCQUM5QztvQkFDRCxPQUFPLENBQUMsQ0FBQztnQkFDWCxDQUFDLENBQUM7YUFDSCxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sYUFBYSxHQUE0QixFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDcEIsYUFBYSxDQUFDLElBQUksQ0FBQztnQkFDakIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO2dCQUNaLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVTtnQkFDeEIsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO2dCQUNkLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtnQkFDWixNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQWlDO2dCQUMzQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFdBQVc7Z0JBQzFCLFlBQVksRUFBRSxDQUFDLENBQUMsWUFBWTthQUNKLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxhQUFhO1FBQ1gsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDOUUsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDbkM7SUFDSCxDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQVc7UUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7SUFDM0IsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFZO1FBQ3BCLElBQUksY0FBbUIsQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN6QyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO2dCQUN0QyxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRTtvQkFDMUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxDQUFDO2lCQUN6RTtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ25CLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUE7U0FDakM7UUFDRCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLE1BQU0sYUFBYSxHQUFVLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNwQixJQUFJLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7Z0JBQ25DLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUNyQixJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUU7d0JBQ2QsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDdkI7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDSjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVELHdCQUF3QixDQUFDLElBQVk7UUFDbkMsSUFBSSxpQkFBaUIsR0FBVSxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDOUIsSUFBSSxFQUFFLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRTtnQkFDeEIsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQzVCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLGlCQUFpQixDQUFDO0lBQzNCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxXQUFnQixFQUFFLFFBQWdCO1FBQ2pELElBQUksWUFBb0IsQ0FBQztRQUN6QixJQUFJLFFBQVEsS0FBSyxPQUFPLEVBQUU7WUFDeEIsWUFBWSxHQUFHLGlCQUFpQixDQUFDO1NBQ2xDO2FBQU07WUFDTCxZQUFZLEdBQUcsb0JBQW9CLENBQUM7U0FDckM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxZQUFZLFNBQVMsRUFBRSxXQUFXLENBQUM7YUFDOUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsZUFBZSxDQUFDLElBQVMsRUFBRSxNQUFXLEVBQUUsaUJBQXdCLEVBQUUsVUFBa0I7UUFDbEYsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUNqRCxJQUFJLFVBQVUsS0FBSyxRQUFRLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUU7b0JBQ3JDLElBQUksT0FBTyxDQUFDLFVBQVUsS0FBSyxNQUFNLENBQUMsVUFBVSxFQUFFO3dCQUM1QyxNQUFNLGVBQWUsR0FBUSxDQUFDLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFLLEVBQUUsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQzt3QkFDekksTUFBTSxZQUFZLEdBQVEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBSyxFQUFFLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7d0JBQ2xJLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxlQUFlLENBQUM7d0JBQzFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxZQUFZLENBQUM7cUJBQ3BDO29CQUNELElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTt3QkFDcEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsQ0FBQyxDQUFDO3FCQUN0RTtnQkFDSCxDQUFDLENBQUMsQ0FBQzthQUNKO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUU7b0JBQ3JDLElBQUksT0FBTyxDQUFDLFVBQVUsS0FBSyxNQUFNLENBQUMsVUFBVSxFQUFFO3dCQUM1QyxJQUFJLGNBQWMsR0FBVSxFQUFFLENBQUM7d0JBQy9CLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7NEJBQzFELGNBQWMsR0FBSSxDQUFDLENBQUMsWUFBWSxDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7eUJBQ3JGOzZCQUFNOzRCQUNMLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQzt5QkFDcEM7d0JBQ0QsT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLE9BQU8sSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLFlBQVksRUFBRSxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7d0JBQzFILE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO3FCQUMvRztvQkFDRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUU7d0JBQ3BCLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxVQUFVLENBQUMsQ0FBQztxQkFDdEU7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDSjtTQUNGO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLFVBQWtCLEVBQUUsVUFBZSxFQUFFLGlCQUF3QixFQUFFLFVBQW1CO1FBQ3BHLElBQUksUUFBUSxHQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLElBQUksVUFBVSxLQUFLLFFBQVEsRUFBRTtZQUMzQixNQUFNLGVBQWUsR0FBUSxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFLLEVBQUUsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMxSSxNQUFNLFlBQVksR0FBUSxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFLLEVBQUUsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNuSSxRQUFRLENBQUMsY0FBYyxDQUFDLEdBQUcsZUFBZSxDQUFDO1lBQzNDLFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxZQUFZLENBQUM7WUFFcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFpQixFQUFFLEVBQUU7Z0JBQy9DLElBQUksUUFBUSxHQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDekQsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtvQkFDN0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsQ0FBQyxDQUFDO2lCQUMzRTtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLElBQUksY0FBYyxHQUFVLEVBQUUsQ0FBQztZQUMvQixJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUM3RCxjQUFjLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxRQUFRLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO2FBQ3JGO2lCQUFNO2dCQUNMLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQzthQUNwQztZQUNELFFBQVEsQ0FBQyxjQUFjLENBQUMsR0FBRyxRQUFRLElBQUksUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxZQUFZLEVBQUUsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO1lBQzlILFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO1lBRWxILElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBaUIsRUFBRSxFQUFFO2dCQUMvQyxJQUFJLFFBQVEsR0FBUSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3pELElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7b0JBQzdELElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDLENBQUM7aUJBQ2pGO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxXQUFtQjtRQUNsQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxLQUFLLFFBQVEsRUFBRTtZQUNoRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsc0JBQXNCLFdBQVcsRUFBRSxFQUFFLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUMzRyxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGtCQUFrQixDQUFDLENBQUMsQ0FDNUQsQ0FBQztTQUNIO2FBQU07WUFDTCxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNmO0lBQ0gsQ0FBQztJQUVELHNDQUFzQyxDQUFDLElBQVksRUFBRSxXQUFtQjtRQUN0RSxJQUFJLGNBQW1CLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtnQkFDdEMsSUFBSSxXQUFXLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRTtvQkFDckMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxDQUFDO2lCQUN6RTtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRUQsc0JBQXNCLENBQUMsV0FBbUI7UUFDeEMsSUFBSSxjQUFtQixDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7Z0JBQ3RDLElBQUksV0FBVyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUU7b0JBQ3JDLGNBQWMsR0FBRyxNQUFNLENBQUM7aUJBQ3pCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUNELE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxXQUFtQixFQUFFLFVBQWU7UUFDN0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFpQixFQUFFLEVBQUU7WUFDL0MsSUFBSSxRQUFRLEdBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pELElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7Z0JBQzdELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7YUFDaEQ7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxJQUFTLEVBQUUsTUFBVztRQUN4QyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO1lBQ2pELElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUU7Z0JBQ3JDLElBQUksT0FBTyxDQUFDLFVBQVUsS0FBSyxNQUFNLENBQUMsVUFBVSxFQUFFO29CQUM1QyxPQUFPLENBQUMsYUFBYSxDQUFDLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUMvQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztpQkFDbEU7Z0JBQ0QsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO29CQUNwQixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2lCQUMzQztZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRU8sbUJBQW1CLENBQUMsUUFBYztRQUN4QyxNQUFNLFdBQVcsR0FBRztZQUNoQixPQUFPLEVBQUU7Z0JBQ1AsT0FBTyxFQUFFO29CQUNQLE1BQU0sRUFBRSxDQUFDO29CQUNULG1CQUFtQixFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzt3QkFDL0IsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDekIsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO3dCQUM3QixRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFO2lCQUMzQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsV0FBVyxFQUFFLE1BQU07aUJBQ3BCO2dCQUNELEtBQUssRUFBRSxHQUFHO2dCQUNWLE1BQU0sRUFBRSxDQUFDO2dCQUNULE1BQU0sRUFBRTtvQkFDTixZQUFZO29CQUNaLFNBQVM7b0JBQ1QsYUFBYTtvQkFDYixlQUFlO29CQUNmLG1CQUFtQjtvQkFDbkIscUJBQXFCO29CQUNyQixxQkFBcUI7b0JBQ3JCLGNBQWM7aUJBQ2Y7YUFDRjtTQUNGLENBQUE7UUFDSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDLGFBQWEsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDdEUsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFakQsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTyxhQUFhLENBQUMsUUFBYztRQUNsQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sV0FBVyxHQUFHO1lBQ2xCLE9BQU8sRUFBRTtnQkFDUCxPQUFPLEVBQUU7b0JBQ0wsU0FBUyxFQUFFLE1BQU07aUJBQ3BCO2dCQUNELE1BQU0sRUFBRTtvQkFDSixZQUFZO29CQUNaLFdBQVc7aUJBQ1o7Z0JBQ0gsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsTUFBTSxFQUFFO29CQUNKLFdBQVc7aUJBQ2Q7Z0JBQ0QsT0FBTyxFQUFFO29CQUNMLGFBQWEsRUFBRSxNQUFNO2lCQUN4QjthQUNGO1NBQ0YsQ0FBQTtRQUNELE1BQU0sV0FBVyxHQUFvQyxFQUFFLENBQUM7UUFDeEQsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN6RCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUN2QyxJQUFJLEdBQUcsQ0FBQyxVQUFVLEVBQUU7b0JBQ2xCLFdBQVcsQ0FBQyxJQUFJLENBQUM7d0JBQ2YsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVO3dCQUNsQixLQUFLLEVBQUUsQ0FBQztxQkFDVCxDQUFDLENBQUM7aUJBQ0o7WUFDSCxDQUFDLENBQUMsQ0FBQTtTQUNIO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxZQUFZLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQ3JFLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ2YsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUM7Z0JBQzFFLE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7Z0JBQ25ELElBQUksV0FBVyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUN6QyxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxDQUFDO29CQUM5RSxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFO3dCQUMvQixRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFOzRCQUNyQyxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7NEJBQ3JFLElBQUksUUFBUSxLQUFLLENBQUMsQ0FBQyxFQUFFO2dDQUNuQixXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDOzZCQUNoRDt3QkFDSCxDQUFDLENBQUMsQ0FBQztxQkFDSjtpQkFDRjthQUNGO1lBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxXQUFXLENBQUM7UUFDbkMsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUNBQWlDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDeEQsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBUztRQUNwQixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsb0JBQW9CLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRTtZQUN4RSxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUN2RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO2dCQUNqSCxPQUFPLFNBQVMsSUFBSSxDQUFDLENBQUM7YUFDdkI7U0FDRjtRQUNELE9BQU8sQ0FBQyxDQUFBO0lBQ1YsQ0FBQzsrR0FoaUJVLGdCQUFnQjttSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7NEZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGUkFNRVdPUksgfSBmcm9tICcuLi9jb25zdGFudHMvZGF0YSc7XG5pbXBvcnQgeyBOU0ZyYW1ld29yayB9IGZyb20gJy4uL21vZGVscy9mcmFtZXdvcmsubW9kZWwnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgSUNvbm5lY3Rpb24gfSBmcm9tICcuLi9tb2RlbHMvY29ubmVjdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBMb2NhbENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9sb2NhbC1jb25uZWN0aW9uLnNlcnZpY2UnO1xuLyogdHNsaW50OmRpc2FibGUgKi9cbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG4vLyBpbXBvcnQgeyBUcmVlSGllcmFyY2h5U2VydmljZSB9IGZyb20gJy4uL3RyZWUtaGllcmFyY2h5LnNlcnZpY2UnO1xuLyogdHNsaW50OmVuYWJsZSAqL1xuXG5jb25zdCBBUElfRU5EUE9JTlQgPSB7XG4gIE9SR19WMV9TRUFSQ0g6ICcvYXBpcy9wcm94aWVzL3Y4L29yZy92MS9zZWFyY2gnLFxuICBDUkVBVEVfVEVSTVM6IGAvYXBpcy9wcm94aWVzL3Y4L2FjdGlvbi9mcmFtZXdvcmsvdjMvdGVybS9jcmVhdGVgLFxuICBVUERBVEVfVEVSTVM6IGAvYXBpcy9wcm94aWVzL3Y4L2ZyYW1ld29yay92MS90ZXJtL3VwZGF0ZS9gLFxuICBVUERBVEVfQVNTT0NJQVRJT046IGAvYXBpcy9wcm94aWVzL3Y4L2ZyYW1ld29yay92MS90ZXJtL3VwZGF0ZS9gLFxuICBQVUJMSVNIX0ZSQU1FV09SSzogYC9hcGlzL3Byb3hpZXMvdjgvZnJhbWV3b3JrL3YxL3B1Ymxpc2gvYCxcbiAgUkVUSVJFX1RSRU06IGAvYXBpcy9wcm94aWVzL3Y4L2ZyYW1ld29yay92MS90ZXJtL3JldGlyZWAsXG4gIFVQREFURV9DQVRFR09SWTogYC9hcGlzL3Byb3hpZXMvdjgvZnJhbWV3b3JrL3YxL2NhdGVnb3J5L3VwZGF0ZS9gLFxuICBVU0VSU19TRUFSQ0g6IGBhcGlzL3Byb3hpZXMvdjgvdXNlci92MS9zZWFyY2hgXG59XG5cbmludGVyZmFjZSBOb3RpZmllclR5cGUge1xuICB0eXBlOiAnc2VsZWN0JyB8ICdpbnNlcnQnIHwgJ3VwZGF0ZScgfCAnZGVsZXRlJztcbiAgYWN0aW9uOiBzdHJpbmc7XG4gIGRhdGE6IGFueTtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRnJhbWV3b3JrU2VydmljZSB7XG4gIGNhdGVnb3JpZXNIYXNoOiBCZWhhdmlvclN1YmplY3Q8TlNGcmFtZXdvcmsuSUNhdGVnb3J5W10gfCBbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE5TRnJhbWV3b3JrLklDYXRlZ29yeVtdIHwgW10+KFtdKTtcbiAgaXNEYXRhVXBkYXRlZDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIGN1cnJlbnRTZWxlY3Rpb246IEJlaGF2aW9yU3ViamVjdDx7IHR5cGU6IHN0cmluZywgZGF0YTogYW55LCBjYXJkUmVmPzogYW55LCBpc1VwZGF0ZT86Ym9vbGVhbiB9IHwgbnVsbD4gPSBcbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgdHlwZTogc3RyaW5nLCBkYXRhOiBhbnksIGNhcmRSZWY/OiBhbnksIGlzVXBkYXRlPzpib29sZWFuIH0gfCBudWxsPihudWxsKTtcbiAgdGVybVN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuICBhZnRlckFkZE9yRWRpdFN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuICBsaXN0ID0gbmV3IE1hcDxzdHJpbmcsIE5TRnJhbWV3b3JrLklDb2x1bW5WaWV3PigpO1xuICBzZWxlY3Rpb25MaXN0ID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgaW5zZXJ0VXBkYXRlRGVsZXRlTm90aWZpZXI6IEJlaGF2aW9yU3ViamVjdDxOb3RpZmllclR5cGUgfCBudWxsPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Tm90aWZpZXJUeXBlIHwgbnVsbD4obnVsbCk7XG4gIGVudmlyb25tZW50OiBhbnk7XG4gIGxpYkNvbmZpZyE6IElDb25uZWN0aW9uO1xuICBmcmFtZXdvcmtJZCE6IHN0cmluZztcbiAgcm9vdENvbmZpZzogYW55O1xuICBwcm94aWVzUGF0aCA9ICdhcGlzL3Byb3hpZXMvdjgnO1xuICBjYXJkQ2xrRGF0YTogYW55O1xuICBDdXJyZW50Q2FyZENsayA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgY29tcGxldGVSZXNwb25zZTogYW55O1xuICBhZGRpdGlvbmFsRGF0YTogYW55OyAvLyBBZGQgYSBwcm9wZXJ0eSB0byBzdG9yZSBhZGRpdGlvbmFsIGRhdGFcbiAgdXNlckNvdW50RGF0YTogYW55OyAvLyBBZGQgYSBwcm9wZXJ0eSB0byBzdG9yZSB1c2VyIGNvdW50IGRhdGFcbiAgXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwdWJsaWMgbG9jYWxDb25maWc6IExvY2FsQ29ubmVjdGlvblNlcnZpY2UsXG4gICAgLy8gcHJpdmF0ZSB0cmVlSGllcmFyY2h5U3ZjOiBUcmVlSGllcmFyY2h5U2VydmljZVxuICApIHt9XG5cbiAgZ2V0RnJhbWV3b3JrSW5mbyhfb3JnRGF0YT86YW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgndGVybXMnKTtcbiAgICBpZiAodGhpcy5sb2NhbENvbmZpZy5jb25uZWN0aW9uVHlwZSA9PT0gJ29ubGluZScpIHtcbiAgICAgIGxldCB1cmwgPSBgLyR7dGhpcy5wcm94aWVzUGF0aH0vZnJhbWV3b3JrL3YxL3JlYWQvYFxuICAgICAgaWYgKF9vcmdEYXRhKSB7XG4gICAgICAgIHVybCA9IHVybCArIF9vcmdEYXRhLm9yZ0hpZXJhcmNoeUZyYW1ld29ya0lkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdXJsID0gdXJsICsgdGhpcy5lbnZpcm9ubWVudC5mcmFtZXdvcmtOYW1lO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dXJsfWAsIHsgd2l0aENyZWRlbnRpYWxzOiB0cnVlIH0pLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoZnJhbWV3b3JrUmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRnJhbWV3b3JrUmVzcG9uc2UgPSBmcmFtZXdvcmtSZXNwb25zZTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTZWxlY3RlZFN0YXRlT3JnKF9vcmdEYXRhKS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKChvcmdMaXN0RGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbERhdGEgPSBvcmdMaXN0RGF0YT8ucmVzdWx0Py5yZXNwb25zZT8uY29udGVudCB8fCBbXTtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VXNlclBlck9yZygpLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbEZyYW1ld29ya1Jlc3BvbnNlXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRhcChhc3luYyAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMucmVzZXRBbGwoKTtcbiAgICAgICAgICB0aGlzLmZvcm1hdGVEYXRhKHJlc3BvbnNlKTtcbiAgICAgICAgICB0aGlzLmNvbXBsZXRlUmVzcG9uc2UgPSByZXNwb25zZS5yZXN1bHQuZnJhbWV3b3JrO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZXNldEFsbCgpO1xuICAgICAgICAgIHRoaXMubGlzdC5jbGVhcigpO1xuICAgICAgICAgIHRoaXMuY2F0ZWdvcmllc0hhc2gubmV4dChbXSk7XG4gICAgICAgICAgdGhyb3cgJ0Vycm9yIGluIHNvdXJjZS4gRGV0YWlsczogJyArIGVycjtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVzZXRBbGwoKTtcbiAgICAgIHRoaXMuZm9ybWF0ZURhdGEoRlJBTUVXT1JLKTtcbiAgICAgIHJldHVybiBvZihGUkFNRVdPUkspO1xuICAgIH1cbiAgfVxuXG4gIHJlYWRUZXJtcyhmcmFtZXdvcmtJZDogc3RyaW5nLCBjYXRlZ29yeUlkOiBzdHJpbmcsIHJlcXVlc3RCb2R5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgLyR7dGhpcy5wcm94aWVzUGF0aH0vZnJhbWV3b3JrL3YxL3Rlcm0vc2VhcmNoP2ZyYW1ld29yaz0ke2ZyYW1ld29ya0lkfSZjYXRlZ29yeT0ke2NhdGVnb3J5SWR9YCwgcmVxdWVzdEJvZHkpLnBpcGUoXG4gICAgICBtYXAoKHJlczogYW55KSA9PiByZXMucmVzdWx0KSk7XG4gIH1cblxuICBjcmVhdGVUZXJtKGZyYW1ld29ya0lkOiBzdHJpbmcsIGNhdGVnb3J5SWQ6IHN0cmluZywgcmVxdWVzdEJvZHk6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAvJHt0aGlzLnByb3hpZXNQYXRofS9mcmFtZXdvcmsvdjEvdGVybS9jcmVhdGU/ZnJhbWV3b3JrPSR7ZnJhbWV3b3JrSWR9JmNhdGVnb3J5PSR7Y2F0ZWdvcnlJZH1gLCByZXF1ZXN0Qm9keSk7XG4gIH1cbiBcbiAgY3JlYXRlVGVybXNXcmFwcGVyKGNhdGVnb3J5OiBzdHJpbmcsIHJlcXVlc3RCb2R5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBjYXRlZ29yeUl0ZW06IHN0cmluZztcbiAgICBpZiAoY2F0ZWdvcnkgPT09ICd0aGVtZScpIHtcbiAgICAgIGNhdGVnb3J5SXRlbSA9ICdjb21wZXRlbmN5VGhlbWUnO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXRlZ29yeUl0ZW0gPSAnY29tcGV0ZW5jeVN1YlRoZW1lJztcbiAgICB9XG4gICBcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYC8ke3RoaXMucHJveGllc1BhdGh9LyR7Y2F0ZWdvcnlJdGVtfS9jcmVhdGUvdGVybWAsIHJlcXVlc3RCb2R5KVxuICAgICAgLnBpcGUobWFwKHJlcyA9PiBfLmdldChyZXMsICdyZXN1bHQnKSkpO1xuICB9XG5cbiAgcmV0aXJlVGVybShmcmFtZXdvcmtJZDogc3RyaW5nLCBjYXRlZ29yeUlkOiBzdHJpbmcsIGNhdGVnb3J5VGVybUNvZGU6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoYC8ke3RoaXMucHJveGllc1BhdGh9L2ZyYW1ld29yay92MS90ZXJtL3JldGlyZS8ke2NhdGVnb3J5VGVybUNvZGV9P2ZyYW1ld29yaz0ke2ZyYW1ld29ya0lkfSZjYXRlZ29yeT0ke2NhdGVnb3J5SWR9YCk7XG4gIH1cblxuICByZXRpcmVNdWx0aXBsZVRlcm0oZnJhbWV3b3JrSWQ6IHN0cmluZywgY2F0ZWdvcnlJZDogc3RyaW5nLCByZXF1ZXN0Qm9keTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYC8ke3RoaXMucHJveGllc1BhdGh9L2ZyYW1ld29yay92MS90ZXJtL3JldGlyZT9mcmFtZXdvcms9JHtmcmFtZXdvcmtJZH0mY2F0ZWdvcnk9JHtjYXRlZ29yeUlkfWAsIHJlcXVlc3RCb2R5KTtcbiAgfVxuXG4gIHVwZGF0ZVRlcm0oZnJhbWV3b3JrSWQ6IHN0cmluZywgY2F0ZWdvcnlJZDogc3RyaW5nLCBjYXRlZ29yeVRlcm1Db2RlOiBzdHJpbmcsIHJlcXVlc3RCb2R5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2goYC8ke3RoaXMucHJveGllc1BhdGh9L2ZyYW1ld29yay92MS90ZXJtL3VwZGF0ZS8ke2NhdGVnb3J5VGVybUNvZGV9P2ZyYW1ld29yaz0ke2ZyYW1ld29ya0lkfSZjYXRlZ29yeT0ke2NhdGVnb3J5SWR9YCwgcmVxdWVzdEJvZHkpO1xuICB9XG5cbiAgcHVibGlzaEZyYW1ld29yaygpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgLyR7dGhpcy5wcm94aWVzUGF0aH0vZnJhbWV3b3JrL3YxL3B1Ymxpc2gvJHt0aGlzLmVudmlyb25tZW50LmZyYW1ld29ya05hbWV9YCwge30pO1xuICB9XG5cbiAgZ2V0VXVpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB1dWlkdjQoKTtcbiAgfVxuXG4gIHVwZGF0ZUVudmlyb25tZW50KGVudjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IGVudjtcbiAgfVxuXG4gIGdldEVudmlyb21lbnQoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5lbnZpcm9ubWVudDtcbiAgfVxuXG4gIGdldEZyYW1ld29ya0lkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWV3b3JrSWQ7XG4gIH1cblxuICBnZXROZXh0Q2F0ZWdvcnkoY3VycmVudENhdGVnb3J5OiBzdHJpbmcpOiBOU0ZyYW1ld29yay5JQ2F0ZWdvcnkgfCBudWxsIHtcbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLmNhdGVnb3JpZXNIYXNoLnZhbHVlLmZpbmRJbmRleCgoYTogTlNGcmFtZXdvcmsuSUNhdGVnb3J5KSA9PiB7XG4gICAgICByZXR1cm4gYS5jb2RlID09PSBjdXJyZW50Q2F0ZWdvcnk7XG4gICAgfSk7XG4gICAgbGV0IGNhdGVnb3J5TGVuZ3RoID0gdGhpcy5jYXRlZ29yaWVzSGFzaC5nZXRWYWx1ZSgpLmxlbmd0aDtcbiAgICByZXR1cm4gKGN1cnJlbnRJbmRleCArIDEpIDwgY2F0ZWdvcnlMZW5ndGggPyB0aGlzLmNhdGVnb3JpZXNIYXNoLmdldFZhbHVlKClbY3VycmVudEluZGV4ICsgMV0gOiBudWxsO1xuICB9XG5cbiAgZ2V0UHJldmlvdXNDYXRlZ29yeShjdXJyZW50Q2F0ZWdvcnk6IHN0cmluZyk6IE5TRnJhbWV3b3JrLklDYXRlZ29yeSB8IG51bGwge1xuICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuY2F0ZWdvcmllc0hhc2gudmFsdWUuZmluZEluZGV4KChhOiBOU0ZyYW1ld29yay5JQ2F0ZWdvcnkpID0+IHtcbiAgICAgIHJldHVybiBhLmNvZGUgPT09IGN1cnJlbnRDYXRlZ29yeTtcbiAgICB9KTtcbiAgICByZXR1cm4gKGN1cnJlbnRJbmRleCAtIDEpID49IDAgPyB0aGlzLmNhdGVnb3JpZXNIYXNoLmdldFZhbHVlKClbY3VycmVudEluZGV4IC0gMV0gOiBudWxsO1xuICB9XG5cbiAgZ2V0UGFyZW50VGVybShjdXJyZW50Q2F0ZWdvcnk6IHN0cmluZyk6IGFueSB7XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5nZXRQcmV2aW91c0NhdGVnb3J5KGN1cnJlbnRDYXRlZ29yeSkgfHwgbnVsbDtcbiAgICByZXR1cm4gcGFyZW50ID8gdGhpcy5zZWxlY3Rpb25MaXN0LmdldChwYXJlbnQuY29kZSkgOiBudWxsO1xuICB9XG5cbiAgY2hpbGRDbGljayhldmVudDogeyB0eXBlOiBzdHJpbmcsIGRhdGE6IGFueSB9KTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50U2VsZWN0aW9uLm5leHQoZXZlbnQpO1xuICB9XG5cbiAgcmVzZXRBbGwoKTogdm9pZCB7XG4gICAgdGhpcy5jYXRlZ29yaWVzSGFzaC5uZXh0KFtdKTtcbiAgICB0aGlzLmN1cnJlbnRTZWxlY3Rpb24ubmV4dChudWxsKTtcbiAgICB0aGlzLnNlbGVjdGlvbkxpc3QuY2xlYXIoKTtcbiAgICB0aGlzLmxpc3QuY2xlYXIoKTtcbiAgfVxuXG4gIGlzTGFzdENvbHVtbihjb2xDb2RlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jYXRlZ29yaWVzSGFzaC52YWx1ZSAmJiAodGhpcy5jYXRlZ29yaWVzSGFzaC52YWx1ZS5maW5kSW5kZXgoKGE6IE5TRnJhbWV3b3JrLklDYXRlZ29yeSkgPT4ge1xuICAgICAgcmV0dXJuIGEuY29kZSA9PT0gY29sQ29kZTtcbiAgICB9KSkgPT09ICh0aGlzLmNhdGVnb3JpZXNIYXNoLnZhbHVlLmxlbmd0aCAtIDEpO1xuICB9XG5cbiAgcmVtb3ZlSXRlbUZyb21BcnJheShhcnJheTogYW55W10sIGl0ZW06IGFueSk6IGFueVtdIHtcbiAgICAvKiBhc3NpZ24gYSBlbXB0eSBhcnJheSAqL1xuICAgIHZhciB0bXA6IGFueVtdID0gW107XG4gICAgLyogbG9vcCBvdmVyIGFsbCBhcnJheSBpdGVtcyAqL1xuICAgIGZvciAodmFyIGluZGV4IGluIGFycmF5KSB7XG4gICAgICBpZiAoYXJyYXlbaW5kZXhdICE9PSBpdGVtKSB7XG4gICAgICAgIC8qIHB1c2ggdG8gdGVtcG9yYXJ5IGFycmF5IGlmIG5vdCBsaWtlIGl0ZW0gKi9cbiAgICAgICAgdG1wLnB1c2goYXJyYXlbaW5kZXhdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLyogcmV0dXJuIHRoZSB0ZW1wb3JhcnkgYXJyYXkgKi9cbiAgICByZXR1cm4gdG1wO1xuICB9XG5cbiAgc2V0IHNldFRlcm0ocmVzOiBhbnkpIHtcbiAgICB0aGlzLnRlcm1TdWJqZWN0Lm5leHQocmVzKTtcbiAgICBsZXQgb2xkVGVybXMgPSB0aGlzLmdldFRlcm0gfHwgW107XG4gICAgb2xkVGVybXMucHVzaChyZXMpO1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0ZXJtcycsIEpTT04uc3RyaW5naWZ5KG9sZFRlcm1zKSk7XG4gIH1cblxuICBnZXQgZ2V0VGVybSgpOiBhbnlbXSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3Rlcm1zJykgfHwgJ1tdJykgfHwgW107XG4gIH1cblxuICB1cGRhdGVBZnRlckFkZE9yRWRpdFN1YmplY3QocmVzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAocmVzKSB7XG4gICAgICB0aGlzLmFmdGVyQWRkT3JFZGl0U3ViamVjdC5uZXh0KHJlcyk7XG4gICAgfSBcbiAgfVxuXG4gIGdldExvY2FsVGVybXNCeVBhcmVudChwYXJlbnRDb2RlOiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgY29uc3QgZmlsdGVyZWREYXRhID0gdGhpcy5nZXRUZXJtLmZpbHRlcih4ID0+IHtcbiAgICAgIHJldHVybiB4LnBhcmVudCAmJiB4LnBhcmVudC5jYXRlZ29yeSA9PT0gcGFyZW50Q29kZTtcbiAgICB9KSB8fCBbXTtcblxuICAgIHJldHVybiBmaWx0ZXJlZERhdGEubWFwKHggPT4ge1xuICAgICAgcmV0dXJuIHgudGVybTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldExvY2FsVGVybXNCeUNhdGVnb3J5KHBhcmVudENvZGU6IHN0cmluZyk6IGFueVtdIHtcbiAgICBjb25zdCBmaWx0ZXJlZERhdGEgPSB0aGlzLmdldFRlcm0uZmlsdGVyKHggPT4ge1xuICAgICAgcmV0dXJuIHgudGVybSAmJiB4LnRlcm0uY2F0ZWdvcnkgPT09IHBhcmVudENvZGU7XG4gICAgfSkgfHwgW107XG5cbiAgICByZXR1cm4gZmlsdGVyZWREYXRhO1xuICB9XG5cbiAgZ2V0TG9jYWxUZXJtc0NhdGVnb3J5KGNhdGVnb3J5OiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgY29uc3QgZmlsdGVyZWREYXRhID0gdGhpcy5nZXRUZXJtLmZpbHRlcih4ID0+IHtcbiAgICAgIHJldHVybiB4LmNhdGVnb3J5ID09PSBjYXRlZ29yeTtcbiAgICB9KSB8fCBbXTtcblxuICAgIHJldHVybiBmaWx0ZXJlZERhdGE7XG4gIH1cblxuICBmb3JtYXRlRGF0YShyZXNwb25zZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5mcmFtZXdvcmtJZCA9IHJlc3BvbnNlLnJlc3VsdC5mcmFtZXdvcmsuY29kZTtcbiAgICAocmVzcG9uc2UucmVzdWx0LmZyYW1ld29yay5jYXRlZ29yaWVzKS5mb3JFYWNoKChhOiBhbnksIF9pZHg6IG51bWJlcikgPT4ge1xuICAgICAgdGhpcy5saXN0LnNldChhLmNvZGUsIHtcbiAgICAgICAgY29kZTogYS5jb2RlLFxuICAgICAgICBpZGVudGlmaWVyOiBhLmlkZW50aWZpZXIsXG4gICAgICAgIGluZGV4OiBhLmluZGV4LFxuICAgICAgICBuYW1lOiBhLm5hbWUsXG4gICAgICAgIHNlbGVjdGVkOiBhLnNlbGVjdGVkLFxuICAgICAgICBzdGF0dXM6IGEuc3RhdHVzIGFzIE5TRnJhbWV3b3JrLlROb2RlU3RhdHVzLFxuICAgICAgICBkZXNjcmlwdGlvbjogYS5kZXNjcmlwdGlvbixcbiAgICAgICAgdHJhbnNsYXRpb25zOiBhLnRyYW5zbGF0aW9ucyxcbiAgICAgICAgY2F0ZWdvcnk6IGEuY2F0ZWdvcnksXG4gICAgICAgIGFzc29jaWF0aW9uczogYS5hc3NvY2lhdGlvbnMsXG4gICAgICAgIGNvbmZpZzogdGhpcy5nZXRDb25maWcoYS5jb2RlKSxcbiAgICAgICAgY2hpbGRyZW46IChhLnRlcm1zIHx8IFtdKS5tYXAoKGM6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGFzc29jaWF0aW9ucyA9IGMuYXNzb2NpYXRpb25zIHx8IFtdO1xuICAgICAgICAgIGNvbnN0IHRlbXBDb3VudCA9IHRoaXMuZ2V0VXNlckNvdW50KGMpXG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihjLCB7IHVzZXJDb3VudDogdGVtcENvdW50IH0pXG4gICAgICAgICAgaWYgKGFzc29jaWF0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGMsIHsgY2hpbGRyZW46IGFzc29jaWF0aW9ucyB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGM7XG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBcbiAgICBjb25zdCBhbGxDYXRlZ29yaWVzOiBOU0ZyYW1ld29yay5JQ2F0ZWdvcnlbXSA9IFtdO1xuICAgIHRoaXMubGlzdC5mb3JFYWNoKGEgPT4ge1xuICAgICAgYWxsQ2F0ZWdvcmllcy5wdXNoKHtcbiAgICAgICAgY29kZTogYS5jb2RlLFxuICAgICAgICBpZGVudGlmaWVyOiBhLmlkZW50aWZpZXIsXG4gICAgICAgIGluZGV4OiBhLmluZGV4LFxuICAgICAgICBuYW1lOiBhLm5hbWUsXG4gICAgICAgIHN0YXR1czogYS5zdGF0dXMgYXMgTlNGcmFtZXdvcmsuVE5vZGVTdGF0dXMsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBhLmRlc2NyaXB0aW9uLFxuICAgICAgICB0cmFuc2xhdGlvbnM6IGEudHJhbnNsYXRpb25zLFxuICAgICAgfSBhcyBOU0ZyYW1ld29yay5JQ2F0ZWdvcnkpO1xuICAgIH0pO1xuICAgIHRoaXMuY2F0ZWdvcmllc0hhc2gubmV4dChhbGxDYXRlZ29yaWVzKTtcbiAgfVxuXG4gIHJlbW92ZU9sZExpbmUoKTogdm9pZCB7XG4gICAgY29uc3QgZWxlcyA9IEFycmF5LmZyb20oZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGVhZGVyLWxpbmUnKSB8fCBbXSk7XG4gICAgaWYgKGVsZXMubGVuZ3RoID4gMCkge1xuICAgICAgZWxlcy5mb3JFYWNoKGVsZSA9PiBlbGUucmVtb3ZlKCkpO1xuICAgIH1cbiAgfVxuXG4gIHNldENvbmZpZyhjb25maWc6IGFueSk6IHZvaWQge1xuICAgIHRoaXMucm9vdENvbmZpZyA9IGNvbmZpZztcbiAgfVxuXG4gIGdldENvbmZpZyhjb2RlOiBzdHJpbmcpOiBhbnkge1xuICAgIGxldCBjYXRlZ29yeUNvbmZpZzogYW55O1xuICAgIGlmICh0aGlzLnJvb3RDb25maWcgJiYgdGhpcy5yb290Q29uZmlnWzBdKSB7XG4gICAgICB0aGlzLnJvb3RDb25maWcuZm9yRWFjaCgoY29uZmlnOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZnJhbWV3b3JrSWQgPT0gY29uZmlnLmZyYW1ld29ya0lkKSB7XG4gICAgICAgICAgY2F0ZWdvcnlDb25maWcgPSBjb25maWcuY29uZmlnLmZpbmQoKG9iajogYW55KSA9PiBvYmouY2F0ZWdvcnkgPT0gY29kZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoIWNhdGVnb3J5Q29uZmlnKSB7XG4gICAgICByZXR1cm4gdGhpcy5yb290Q29uZmlnLmNvbmZpZ1swXVxuICAgIH1cbiAgICByZXR1cm4gY2F0ZWdvcnlDb25maWc7XG4gIH1cblxuICBnZXRBbGxTZWxlY3RlZFRlcm1zKCk6IGFueVtdIHtcbiAgICBjb25zdCBzZWxlY3RlZFRlcm1zOiBhbnlbXSA9IFtdO1xuICAgIHRoaXMubGlzdC5mb3JFYWNoKGwgPT4ge1xuICAgICAgaWYgKGwuY2hpbGRyZW4gJiYgbC5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgbC5jaGlsZHJlbi5mb3JFYWNoKGMgPT4ge1xuICAgICAgICAgIGlmIChjLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICBzZWxlY3RlZFRlcm1zLnB1c2goYyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gc2VsZWN0ZWRUZXJtcztcbiAgfVxuXG4gIGdldFByZXZpb3VzU2VsZWN0ZWRUZXJtcyhjb2RlOiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgbGV0IHByZXZTZWxlY3RlZFRlcm1zOiBhbnlbXSA9IFtdO1xuICAgIHRoaXMuc2VsZWN0aW9uTGlzdC5mb3JFYWNoKHNsID0+IHtcbiAgICAgIGlmIChzbC5jYXRlZ29yeSAhPT0gY29kZSkge1xuICAgICAgICBwcmV2U2VsZWN0ZWRUZXJtcy5wdXNoKHNsKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcHJldlNlbGVjdGVkVGVybXM7XG4gIH1cblxuICBnZXRLY21TZWFyY2hMaXN0KHJlcXVlc3RCb2R5OiBhbnksIGNhdGVnb3J5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBjYXRlZ29yeUl0ZW06IHN0cmluZztcbiAgICBpZiAoY2F0ZWdvcnkgPT09ICd0aGVtZScpIHtcbiAgICAgIGNhdGVnb3J5SXRlbSA9ICdjb21wZXRlbmN5VGhlbWUnO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXRlZ29yeUl0ZW0gPSAnY29tcGV0ZW5jeVN1YlRoZW1lJztcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAvJHt0aGlzLnByb3hpZXNQYXRofS8ke2NhdGVnb3J5SXRlbX0vc2VhcmNoYCwgcmVxdWVzdEJvZHkpXG4gICAgICAucGlwZShtYXAocmVzID0+IF8uZ2V0KHJlcywgJ3Jlc3VsdC5yZXN1bHQnKSkpO1xuICB9XG5cbiAgdXBkYXRlTG9jYWxMaXN0KGl0ZW06IGFueSwgcGFyZW50OiBhbnksIHNlbGVjdGVkVGVybUFycmF5OiBhbnlbXSwgdXBkYXRlVHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGl0ZW0gJiYgaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgaWYgKHVwZGF0ZVR5cGUgPT09ICdkZWxldGUnKSB7XG4gICAgICAgIGl0ZW0uY2hpbGRyZW4uZm9yRWFjaCgoaXRtRGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKGl0bURhdGEuaWRlbnRpZmllciA9PT0gcGFyZW50LmlkZW50aWZpZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGFzc29jaWF0aW9uTGlzdDogYW55ID0gXy5kaWZmZXJlbmNlV2l0aChpdG1EYXRhLmFzc29jaWF0aW9ucywgc2VsZWN0ZWRUZXJtQXJyYXksIChhOmFueSwgYjogYW55KSA9PiBhLmlkZW50aWZpZXIgPT09IGIuaWRlbnRpZmllcik7XG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbkxpc3Q6IGFueSA9IF8uZGlmZmVyZW5jZVdpdGgoaXRtRGF0YS5jaGlsZHJlbiwgc2VsZWN0ZWRUZXJtQXJyYXksIChhOmFueSwgYjogYW55KSA9PiBhLmlkZW50aWZpZXIgPT09IGIuaWRlbnRpZmllcik7XG4gICAgICAgICAgICBpdG1EYXRhWydhc3NvY2lhdGlvbnMnXSA9IGFzc29jaWF0aW9uTGlzdDtcbiAgICAgICAgICAgIGl0bURhdGFbJ2NoaWxkcmVuJ10gPSBjaGlsZHJlbkxpc3Q7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpdG1EYXRhLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUxvY2FsTGlzdChpdG1EYXRhLCBwYXJlbnQsIHNlbGVjdGVkVGVybUFycmF5LCB1cGRhdGVUeXBlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaXRlbS5jaGlsZHJlbi5mb3JFYWNoKChpdG1EYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoaXRtRGF0YS5pZGVudGlmaWVyID09PSBwYXJlbnQuaWRlbnRpZmllcikge1xuICAgICAgICAgICAgbGV0IGRpZmZlcmVuY2VEYXRhOiBhbnlbXSA9IFtdO1xuICAgICAgICAgICAgaWYgKGl0bURhdGEgJiYgaXRtRGF0YS5jaGlsZHJlbiAmJiBpdG1EYXRhLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgICBkaWZmZXJlbmNlRGF0YSAgPSBfLmRpZmZlcmVuY2VCeShzZWxlY3RlZFRlcm1BcnJheSwgaXRtRGF0YS5jaGlsZHJlbiwgJ2lkZW50aWZpZXInKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGRpZmZlcmVuY2VEYXRhID0gc2VsZWN0ZWRUZXJtQXJyYXk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpdG1EYXRhWydhc3NvY2lhdGlvbnMnXSA9IGl0bURhdGEgJiYgaXRtRGF0YS5hc3NvY2lhdGlvbnMgPyBbLi4uaXRtRGF0YS5hc3NvY2lhdGlvbnMsIC4uLmRpZmZlcmVuY2VEYXRhXSA6IGRpZmZlcmVuY2VEYXRhO1xuICAgICAgICAgICAgaXRtRGF0YVsnY2hpbGRyZW4nXSA9IGl0bURhdGEgJiYgaXRtRGF0YS5jaGlsZHJlbiA/IFsuLi5pdG1EYXRhLmNoaWxkcmVuLCAuLi5kaWZmZXJlbmNlRGF0YV0gOiBkaWZmZXJlbmNlRGF0YTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGl0bURhdGEuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTG9jYWxMaXN0KGl0bURhdGEsIHBhcmVudCwgc2VsZWN0ZWRUZXJtQXJyYXksIHVwZGF0ZVR5cGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlRnJhbWV3b3JrTGlzdChjb2x1bW5Db2RlOiBzdHJpbmcsIHBhcmVudERhdGE6IGFueSwgc2VsZWN0ZWRUZXJtQXJyYXk6IGFueVtdLCB1cGRhdGVUeXBlPzogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IGxpc3REYXRhOiBhbnkgPSB0aGlzLmxpc3QuZ2V0KGNvbHVtbkNvZGUpO1xuICAgIGlmICh1cGRhdGVUeXBlID09PSAnZGVsZXRlJykge1xuICAgICAgY29uc3QgYXNzb2NpYXRpb25MaXN0OiBhbnkgPSBfLmRpZmZlcmVuY2VXaXRoKGxpc3REYXRhLmFzc29jaWF0aW9ucywgc2VsZWN0ZWRUZXJtQXJyYXksIChhOmFueSwgYjogYW55KSA9PiBhLmlkZW50aWZpZXIgPT09IGIuaWRlbnRpZmllcik7XG4gICAgICBjb25zdCBjaGlsZHJlbkxpc3Q6IGFueSA9IF8uZGlmZmVyZW5jZVdpdGgobGlzdERhdGEuY2hpbGRyZW4sIHNlbGVjdGVkVGVybUFycmF5LCAoYTphbnksIGI6IGFueSkgPT4gYS5pZGVudGlmaWVyID09PSBiLmlkZW50aWZpZXIpO1xuICAgICAgbGlzdERhdGFbJ2Fzc29jaWF0aW9ucyddID0gYXNzb2NpYXRpb25MaXN0O1xuICAgICAgbGlzdERhdGFbJ2NoaWxkcmVuJ10gPSBjaGlsZHJlbkxpc3Q7XG5cbiAgICAgIHRoaXMuc2VsZWN0aW9uTGlzdC5mb3JFYWNoKChzZWxlY3RlZERhdGE6IGFueSkgPT4ge1xuICAgICAgICBsZXQgbGlzdERhdGE6IGFueSA9IHRoaXMubGlzdC5nZXQoc2VsZWN0ZWREYXRhLmNhdGVnb3J5KTtcbiAgICAgICAgaWYgKGxpc3REYXRhICYmIGxpc3REYXRhLmNoaWxkcmVuICYmIGxpc3REYXRhLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMudXBkYXRlTG9jYWxMaXN0KGxpc3REYXRhLCBwYXJlbnREYXRhLCBzZWxlY3RlZFRlcm1BcnJheSwgdXBkYXRlVHlwZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZGlmZmVyZW5jZURhdGE6IGFueVtdID0gW107XG4gICAgICBpZiAobGlzdERhdGEgJiYgbGlzdERhdGEuY2hpbGRyZW4gJiYgbGlzdERhdGEuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIGRpZmZlcmVuY2VEYXRhID0gXy5kaWZmZXJlbmNlQnkoc2VsZWN0ZWRUZXJtQXJyYXksIGxpc3REYXRhLmNoaWxkcmVuLCAnaWRlbnRpZmllcicpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlmZmVyZW5jZURhdGEgPSBzZWxlY3RlZFRlcm1BcnJheTtcbiAgICAgIH1cbiAgICAgIGxpc3REYXRhWydhc3NvY2lhdGlvbnMnXSA9IGxpc3REYXRhICYmIGxpc3REYXRhLmFzc29jaWF0aW9ucyA/IFsuLi5saXN0RGF0YS5hc3NvY2lhdGlvbnMsIC4uLmRpZmZlcmVuY2VEYXRhXSA6IGRpZmZlcmVuY2VEYXRhO1xuICAgICAgbGlzdERhdGFbJ2NoaWxkcmVuJ10gPSBsaXN0RGF0YSAmJiBsaXN0RGF0YS5jaGlsZHJlbiA/IFsuLi5saXN0RGF0YS5jaGlsZHJlbiwgLi4uZGlmZmVyZW5jZURhdGFdIDogZGlmZmVyZW5jZURhdGE7XG5cbiAgICAgIHRoaXMuc2VsZWN0aW9uTGlzdC5mb3JFYWNoKChzZWxlY3RlZERhdGE6IGFueSkgPT4ge1xuICAgICAgICBsZXQgbGlzdERhdGE6IGFueSA9IHRoaXMubGlzdC5nZXQoc2VsZWN0ZWREYXRhLmNhdGVnb3J5KTtcbiAgICAgICAgaWYgKGxpc3REYXRhICYmIGxpc3REYXRhLmNoaWxkcmVuICYmIGxpc3REYXRhLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMudXBkYXRlTG9jYWxMaXN0KGxpc3REYXRhLCBwYXJlbnREYXRhLCBzZWxlY3RlZFRlcm1BcnJheSwgdXBkYXRlVHlwZSB8fCAnJyk7XG4gICAgICAgIH1cbiAgICAgIH0pOyBcbiAgICB9XG4gIH1cblxuICBnZXRGcmFtZXdvcmtSZWFkKGZyYW1lV29ya0lkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICh0aGlzLmxvY2FsQ29uZmlnLmNvbm5lY3Rpb25UeXBlID09PSAnb25saW5lJykge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYC8ke3RoaXMucHJveGllc1BhdGh9L2ZyYW1ld29yay92MS9yZWFkLyR7ZnJhbWVXb3JrSWR9YCwgeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSkucGlwZShcbiAgICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiBfLmdldChyZXNwb25zZSwgJ3Jlc3VsdC5mcmFtZXdvcmsnKSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvZih7fSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q29uZmlnT2ZDYXRlZ29yeUNvbmZpZ0J5RnJhbWVXb3JrSWQoY29kZTogc3RyaW5nLCBmcmFtZXdvcmtJZDogc3RyaW5nKTogYW55IHtcbiAgICBsZXQgY2F0ZWdvcnlDb25maWc6IGFueTtcbiAgICBpZiAodGhpcy5yb290Q29uZmlnICYmIHRoaXMucm9vdENvbmZpZ1swXSkge1xuICAgICAgdGhpcy5yb290Q29uZmlnLmZvckVhY2goKGNvbmZpZzogYW55KSA9PiB7XG4gICAgICAgIGlmIChmcmFtZXdvcmtJZCA9PSBjb25maWcuZnJhbWV3b3JrSWQpIHtcbiAgICAgICAgICBjYXRlZ29yeUNvbmZpZyA9IGNvbmZpZy5jb25maWcuZmluZCgob2JqOiBhbnkpID0+IG9iai5jYXRlZ29yeSA9PSBjb2RlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBjYXRlZ29yeUNvbmZpZztcbiAgfVxuXG4gIGdldENvbmZpZ0J5RnJhbWVXb3JrSWQoZnJhbWV3b3JrSWQ6IHN0cmluZyk6IGFueSB7XG4gICAgbGV0IGNhdGVnb3J5Q29uZmlnOiBhbnk7XG4gICAgaWYgKHRoaXMucm9vdENvbmZpZyAmJiB0aGlzLnJvb3RDb25maWdbMF0pIHtcbiAgICAgIHRoaXMucm9vdENvbmZpZy5mb3JFYWNoKChjb25maWc6IGFueSkgPT4ge1xuICAgICAgICBpZiAoZnJhbWV3b3JrSWQgPT0gY29uZmlnLmZyYW1ld29ya0lkKSB7XG4gICAgICAgICAgY2F0ZWdvcnlDb25maWcgPSBjb25maWc7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY2F0ZWdvcnlDb25maWc7XG4gIH1cblxuICB1cGRhdGVGdWxsVGVybURhdGFMb2NhbE1hcChfY29sdW1uQ29kZTogc3RyaW5nLCBwYXJlbnREYXRhOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGlvbkxpc3QuZm9yRWFjaCgoc2VsZWN0ZWREYXRhOiBhbnkpID0+IHtcbiAgICAgIGxldCBsaXN0RGF0YTogYW55ID0gdGhpcy5saXN0LmdldChzZWxlY3RlZERhdGEuY2F0ZWdvcnkpO1xuICAgICAgaWYgKGxpc3REYXRhICYmIGxpc3REYXRhLmNoaWxkcmVuICYmIGxpc3REYXRhLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICB0aGlzLnVwZGF0ZUxvY2FsTGlzdFRlcm0obGlzdERhdGEsIHBhcmVudERhdGEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlTG9jYWxMaXN0VGVybShpdGVtOiBhbnksIHBhcmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKGl0ZW0gJiYgaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgaXRlbS5jaGlsZHJlbi5mb3JFYWNoKChpdG1EYXRhOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGl0bURhdGEuaWRlbnRpZmllciA9PT0gcGFyZW50LmlkZW50aWZpZXIpIHtcbiAgICAgICAgICBpdG1EYXRhWydkZXNjcmlwdGlvbiddID0gcGFyZW50WydkZXNjcmlwdGlvbiddO1xuICAgICAgICAgIGl0bURhdGFbJ2FkZGl0aW9uYWxQcm9wZXJ0aWVzJ10gPSBwYXJlbnRbJ2FkZGl0aW9uYWxQcm9wZXJ0aWVzJ107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGl0bURhdGEuY2hpbGRyZW4pIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUxvY2FsTGlzdFRlcm0oaXRtRGF0YSwgcGFyZW50KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRTZWxlY3RlZFN0YXRlT3JnKF9vcmdEYXRhPzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCByZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgcmVxdWVzdDoge1xuICAgICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICAgIHN0YXR1czogMSxcbiAgICAgICAgICAgIG1pbmlzdHJ5T3JTdGF0ZVR5cGU6IChfb3JnRGF0YSkgP1xuICAgICAgICAgICAgICBfb3JnRGF0YS5zYk9yZ1R5cGUgOiAnJyxcbiAgICAgICAgICAgIG1pbmlzdHJ5T3JTdGF0ZUlkOiAoX29yZ0RhdGEpID8gXG4gICAgICAgICAgICAgIF9vcmdEYXRhLmlkZW50aWZpZXIgOiAnJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc29ydF9ieToge1xuICAgICAgICAgICAgY3JlYXRlZERhdGU6IFwiZGVzY1wiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBsaW1pdDogMTAwLFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgICdpZGVudGlmaWVyJyxcbiAgICAgICAgICAgICdvcmdOYW1lJyxcbiAgICAgICAgICAgICdkZXNjcmlwdGlvbicsXG4gICAgICAgICAgICAncGFyZW50T3JnTmFtZScsXG4gICAgICAgICAgICAnbWluaXN0cnlPclN0YXRlSWQnLFxuICAgICAgICAgICAgJ21pbmlzdHJ5T3JTdGF0ZVR5cGUnLFxuICAgICAgICAgICAgJ21pbmlzdHJ5T3JTdGF0ZU5hbWUnLCBcbiAgICAgICAgICAgICdzYk9yZ1N1YlR5cGUnXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICB9ICAgIFxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHtBUElfRU5EUE9JTlQuT1JHX1YxX1NFQVJDSH1gLCByZXF1ZXN0Qm9keSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBPcmcgZGF0YTonLCBlcnJvcik7XG4gICAgICAgIC8vIFJldHVybiBlbXB0eSBkYXRhIHRvIGNvbnRpbnVlIHRoZSBjaGFpbiBldmVuIGlmIHRoaXMgQVBJIGZhaWxzXG4gICAgICAgIHJldHVybiBvZih7fSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldFVzZXJQZXJPcmcoX29yZ0RhdGE/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IG9yZ0lkcyA9IHRoaXMuYWRkaXRpb25hbERhdGEubWFwKChvcmc6IGFueSkgPT4gb3JnLmlkZW50aWZpZXIpO1xuICAgIGNvbnN0IHJlcXVlc3RCb2R5ID0ge1xuICAgICAgcmVxdWVzdDoge1xuICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgICByb290T3JnSWQ6IG9yZ0lkc1xuICAgICAgICB9LFxuICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgICdpZGVudGlmaWVyJyxcbiAgICAgICAgICAgICdyb290T3JnSWQnXG4gICAgICAgICAgXSxcbiAgICAgICAgbGltaXQ6IDEsXG4gICAgICAgIGZhY2V0czogW1xuICAgICAgICAgICAgXCJyb290T3JnSWRcIlxuICAgICAgICBdLFxuICAgICAgICBzb3J0X2J5OiB7XG4gICAgICAgICAgICBcImNyZWF0ZWREYXRlXCI6IFwiZGVzY1wiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3Qgb3JnSWRDb3VudHM6IHsgaWQ6IHN0cmluZywgY291bnQ6IG51bWJlciB9W10gPSBbXTtcbiAgICBpZiAodGhpcy5hZGRpdGlvbmFsRGF0YSAmJiB0aGlzLmFkZGl0aW9uYWxEYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuYWRkaXRpb25hbERhdGEuZm9yRWFjaCgob3JnOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKG9yZy5pZGVudGlmaWVyKSB7XG4gICAgICAgICAgb3JnSWRDb3VudHMucHVzaCh7XG4gICAgICAgICAgICBpZDogb3JnLmlkZW50aWZpZXIsXG4gICAgICAgICAgICBjb3VudDogMCBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke0FQSV9FTkRQT0lOVC5VU0VSU19TRUFSQ0h9YCwgcmVxdWVzdEJvZHkpLnBpcGUoXG4gICAgICBtYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXMgJiYgcmVzLnJlc3VsdCAmJiByZXMucmVzdWx0LnJlc3BvbnNlICYmIHJlcy5yZXN1bHQucmVzcG9uc2UuY291bnQpe1xuICAgICAgICBjb25zdCBmYWNldHNWYWx1ZSA9IHJlcy5yZXN1bHQucmVzcG9uc2UuZmFjZXRzIHx8IFtdOyAgXG4gICAgICAgICAgaWYgKGZhY2V0c1ZhbHVlICYmIGZhY2V0c1ZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IG9yZ0ZhY2V0ID0gZmFjZXRzVmFsdWUuZmluZCgoZmFjZXQ6IGFueSkgPT4gZmFjZXQubmFtZSA9PT0gJ3Jvb3RPcmdJZCcpO1xuICAgICAgICAgICAgaWYgKG9yZ0ZhY2V0ICYmIG9yZ0ZhY2V0LnZhbHVlcykge1xuICAgICAgICAgICAgICBvcmdGYWNldC52YWx1ZXMuZm9yRWFjaCgodmFsdWU6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yZ0luZGV4ID0gb3JnSWRDb3VudHMuZmluZEluZGV4KG9yZyA9PiBvcmcuaWQgPT09IHZhbHVlLm5hbWUpO1xuICAgICAgICAgICAgICAgIGlmIChvcmdJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgIG9yZ0lkQ291bnRzW29yZ0luZGV4XS5jb3VudCA9IHZhbHVlLmNvdW50IHx8IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51c2VyQ291bnREYXRhID0gb3JnSWRDb3VudHM7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyB1c2VyIGNvdW50IGRhdGE6JywgZXJyb3IpO1xuICAgICAgICByZXR1cm4gb2Yoe30pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZ2V0VXNlckNvdW50KHRlcm06IGFueSk6IG51bWJlciB7XG4gICAgaWYgKHRlcm0gJiYgdGVybS5hZGRpdGlvbmFsUHJvcGVydGllcyAmJiB0ZXJtLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLm9yZ0lkKSB7XG4gICAgICBpZiAodGhpcy51c2VyQ291bnREYXRhICYmIHRoaXMudXNlckNvdW50RGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHVzZXJDb3VudCA9IHRoaXMudXNlckNvdW50RGF0YS5maWx0ZXIoKHVzZXI6YW55KSA9PiB1c2VyLmlkID09PSB0ZXJtLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLm9yZ0lkKVswXT8uY291bnQ7XG4gICAgICAgIHJldHVybiB1c2VyQ291bnQgfHwgMDtcbiAgICAgIH1cbiAgICB9IFxuICAgIHJldHVybiAwXG4gIH1cbn0iXX0=
@@ -9,7 +9,8 @@ const API_ENDPOINT = {
9
9
  UPDATE_ASSOCIATION: `/apis/proxies/v8/framework/v1/term/update/`,
10
10
  PUBLISH_FRAMEWORK: `/apis/proxies/v8/framework/v1/publish/`,
11
11
  RETIRE_TREM: `/apis/proxies/v8/framework/v1/term/retire`,
12
- UPDATE_CATEGORY: `/apis/proxies/v8/framework/v1/category/update/`
12
+ UPDATE_CATEGORY: `/apis/proxies/v8/framework/v1/category/update/`,
13
+ USERS_SEARCH: `apis/proxies/v8/user/v1/search`
13
14
  };
14
15
  export class TreeHierarchyService {
15
16
  constructor(http) {
@@ -41,6 +42,9 @@ export class TreeHierarchyService {
41
42
  updateCategory(requestBody, frameworkObj) {
42
43
  return this.http.patch(`${API_ENDPOINT.UPDATE_CATEGORY}${frameworkObj.category}?framework=${frameworkObj.id}`, requestBody);
43
44
  }
45
+ getUsersSearch(requestBody) {
46
+ return this.http.post(`${API_ENDPOINT.USERS_SEARCH}`, requestBody);
47
+ }
44
48
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreeHierarchyService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
45
49
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreeHierarchyService, providedIn: 'root' }); }
46
50
  }
@@ -50,4 +54,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
50
54
  providedIn: 'root'
51
55
  }]
52
56
  }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1oaWVyYXJjaHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90cmVlLWhpZXJhcmNoeS9zcmMvbGliL3RyZWUtaGllcmFyY2h5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7QUFFbkQsTUFBTSxZQUFZLEdBQUc7SUFDbkIsYUFBYSxFQUFFLGdDQUFnQztJQUMvQyxZQUFZLEVBQUUsa0RBQWtEO0lBQ2hFLFlBQVksRUFBRSw0Q0FBNEM7SUFDMUQsa0JBQWtCLEVBQUUsNENBQTRDO0lBQ2hFLGlCQUFpQixFQUFFLHdDQUF3QztJQUMzRCxXQUFXLEVBQUUsMkNBQTJDO0lBQ3hELGVBQWUsRUFBRSxnREFBZ0Q7Q0FDbEUsQ0FBQTtBQUlELE1BQU0sT0FBTyxvQkFBb0I7SUFLL0IsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUg1QixrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQzVELGlCQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVSLENBQUM7SUFFMUMsWUFBWSxDQUFDLFdBQWdCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUMsYUFBYSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELFVBQVUsQ0FBQyxXQUFnQixFQUFFLFlBQWdCO1FBQzNDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUMsWUFBWSxjQUFjLFlBQVksQ0FBQyxFQUFFLGFBQWEsWUFBWSxDQUFDLFFBQVEsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3BJLENBQUM7SUFFRCxVQUFVLENBQUMsV0FBZ0IsRUFBRSxZQUFnQixFQUFFLE1BQVU7UUFDdkQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLFlBQVksQ0FBQyxZQUFZLElBQUksTUFBTSxjQUFjLFlBQVksQ0FBQyxFQUFFLGFBQWEsWUFBWSxDQUFDLFFBQVEsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQy9JLENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxXQUFnQixFQUFFLFlBQWdCLEVBQUUsTUFBVTtRQUN2RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsWUFBWSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sY0FBYyxZQUFZLENBQUMsRUFBRSxhQUFhLFlBQVksQ0FBQyxRQUFRLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNwSixDQUFDO0lBRUQsaUJBQWlCLENBQUMsWUFBZ0I7UUFDaEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxpQkFBaUIsR0FBRyxZQUFZLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVELGNBQWMsQ0FBQyxTQUFrQjtRQUMvQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUNwQyxDQUFDO0lBRUQsVUFBVSxDQUFDLFdBQWdCLEVBQUUsWUFBZ0I7UUFDM0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxXQUFXLGNBQWMsWUFBWSxDQUFDLEVBQUUsYUFBYSxZQUFZLENBQUMsUUFBUSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDbkksQ0FBQztJQUVELGNBQWMsQ0FBQyxXQUFnQixFQUFFLFlBQWdCO1FBQy9DLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxZQUFZLENBQUMsZUFBZSxHQUFHLFlBQVksQ0FBQyxRQUFRLGNBQWMsWUFBWSxDQUFDLEVBQUUsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzlILENBQUM7K0dBckNVLG9CQUFvQjttSEFBcEIsb0JBQW9CLGNBRm5CLE1BQU07OzRGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmNvbnN0IEFQSV9FTkRQT0lOVCA9IHtcbiAgT1JHX1YxX1NFQVJDSDogJy9hcGlzL3Byb3hpZXMvdjgvb3JnL3YxL3NlYXJjaCcsXG4gIENSRUFURV9URVJNUzogYC9hcGlzL3Byb3hpZXMvdjgvYWN0aW9uL2ZyYW1ld29yay92My90ZXJtL2NyZWF0ZWAsXG4gIFVQREFURV9URVJNUzogYC9hcGlzL3Byb3hpZXMvdjgvZnJhbWV3b3JrL3YxL3Rlcm0vdXBkYXRlL2AsXG4gIFVQREFURV9BU1NPQ0lBVElPTjogYC9hcGlzL3Byb3hpZXMvdjgvZnJhbWV3b3JrL3YxL3Rlcm0vdXBkYXRlL2AsXG4gIFBVQkxJU0hfRlJBTUVXT1JLOiBgL2FwaXMvcHJveGllcy92OC9mcmFtZXdvcmsvdjEvcHVibGlzaC9gLFxuICBSRVRJUkVfVFJFTTogYC9hcGlzL3Byb3hpZXMvdjgvZnJhbWV3b3JrL3YxL3Rlcm0vcmV0aXJlYCxcbiAgVVBEQVRFX0NBVEVHT1JZOiBgL2FwaXMvcHJveGllcy92OC9mcmFtZXdvcmsvdjEvY2F0ZWdvcnkvdXBkYXRlL2Bcbn1cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFRyZWVIaWVyYXJjaHlTZXJ2aWNlIHtcblxuICBwcml2YXRlIGxvYWRlclN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgbG9hZGVyU3RhdGUkID0gdGhpcy5sb2FkZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwpIHsgfVxuXG4gIG9yZ1NlcmFjaEFwaShyZXF1ZXN0Qm9keTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7QVBJX0VORFBPSU5ULk9SR19WMV9TRUFSQ0h9YCwgcmVxdWVzdEJvZHkpO1xuICB9XG5cbiAgY3JlYXRlVGVybShyZXF1ZXN0Qm9keTogYW55LCBmcmFtZXdvcmtPYmo6YW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7QVBJX0VORFBPSU5ULkNSRUFURV9URVJNU30/ZnJhbWV3b3JrPSR7ZnJhbWV3b3JrT2JqLmlkfSZjYXRlZ29yeT0ke2ZyYW1ld29ya09iai5jYXRlZ29yeX1gLCByZXF1ZXN0Qm9keSk7XG4gIH1cblxuICB1cGRhdGVUZXJtKHJlcXVlc3RCb2R5OiBhbnksIGZyYW1ld29ya09iajphbnksIGNvZGVJZDphbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2goYCR7QVBJX0VORFBPSU5ULlVQREFURV9URVJNU30vJHtjb2RlSWR9P2ZyYW1ld29yaz0ke2ZyYW1ld29ya09iai5pZH0mY2F0ZWdvcnk9JHtmcmFtZXdvcmtPYmouY2F0ZWdvcnl9YCwgcmVxdWVzdEJvZHkpO1xuICB9XG5cbiAgdXBkYXRlRnJhbWV3b3JrQXNzb2NpYXRpb24ocmVxdWVzdEJvZHk6IGFueSwgZnJhbWV3b3JrT2JqOmFueSwgY29kZUlkOmFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaChgJHtBUElfRU5EUE9JTlQuVVBEQVRFX0FTU09DSUFUSU9OfSR7Y29kZUlkfT9mcmFtZXdvcms9JHtmcmFtZXdvcmtPYmouaWR9JmNhdGVnb3J5PSR7ZnJhbWV3b3JrT2JqLmNhdGVnb3J5fWAsIHJlcXVlc3RCb2R5KTtcbiAgfVxuXG4gIHB1Ymxpc2hGcmVhbWV3b3JrKGZyYW1ld29ya09iajphbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHtBUElfRU5EUE9JTlQuUFVCTElTSF9GUkFNRVdPUkt9JHtmcmFtZXdvcmtPYmouaWR9YCwge30pO1xuICB9XG5cbiAgc2V0TG9hZGVyU3RhdGUoaXNMb2FkaW5nOiBib29sZWFuKSB7XG4gICAgdGhpcy5sb2FkZXJTdWJqZWN0Lm5leHQoaXNMb2FkaW5nKVxuICB9XG5cbiAgcmV0aXJlVGVybShyZXF1ZXN0Qm9keTogYW55LCBmcmFtZXdvcmtPYmo6YW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7QVBJX0VORFBPSU5ULlJFVElSRV9UUkVNfT9mcmFtZXdvcms9JHtmcmFtZXdvcmtPYmouaWR9JmNhdGVnb3J5PSR7ZnJhbWV3b3JrT2JqLmNhdGVnb3J5fWAsIHJlcXVlc3RCb2R5KTtcbiAgfVxuXG4gIHVwZGF0ZUNhdGVnb3J5KHJlcXVlc3RCb2R5OiBhbnksIGZyYW1ld29ya09iajphbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2goYCR7QVBJX0VORFBPSU5ULlVQREFURV9DQVRFR09SWX0ke2ZyYW1ld29ya09iai5jYXRlZ29yeX0/ZnJhbWV3b3JrPSR7ZnJhbWV3b3JrT2JqLmlkfWAsIHJlcXVlc3RCb2R5KTtcbiAgfVxuICBcbn1cbiJdfQ==
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1oaWVyYXJjaHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90cmVlLWhpZXJhcmNoeS9zcmMvbGliL3RyZWUtaGllcmFyY2h5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7QUFFbkQsTUFBTSxZQUFZLEdBQUc7SUFDbkIsYUFBYSxFQUFFLGdDQUFnQztJQUMvQyxZQUFZLEVBQUUsa0RBQWtEO0lBQ2hFLFlBQVksRUFBRSw0Q0FBNEM7SUFDMUQsa0JBQWtCLEVBQUUsNENBQTRDO0lBQ2hFLGlCQUFpQixFQUFFLHdDQUF3QztJQUMzRCxXQUFXLEVBQUUsMkNBQTJDO0lBQ3hELGVBQWUsRUFBRSxnREFBZ0Q7SUFDakUsWUFBWSxFQUFFLGdDQUFnQztDQUMvQyxDQUFBO0FBSUQsTUFBTSxPQUFPLG9CQUFvQjtJQUsvQixZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBSDVCLGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDNUQsaUJBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRVIsQ0FBQztJQUUxQyxZQUFZLENBQUMsV0FBZ0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxhQUFhLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsVUFBVSxDQUFDLFdBQWdCLEVBQUUsWUFBZ0I7UUFDM0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxZQUFZLGNBQWMsWUFBWSxDQUFDLEVBQUUsYUFBYSxZQUFZLENBQUMsUUFBUSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDcEksQ0FBQztJQUVELFVBQVUsQ0FBQyxXQUFnQixFQUFFLFlBQWdCLEVBQUUsTUFBVTtRQUN2RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsWUFBWSxDQUFDLFlBQVksSUFBSSxNQUFNLGNBQWMsWUFBWSxDQUFDLEVBQUUsYUFBYSxZQUFZLENBQUMsUUFBUSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDL0ksQ0FBQztJQUVELDBCQUEwQixDQUFDLFdBQWdCLEVBQUUsWUFBZ0IsRUFBRSxNQUFVO1FBQ3ZFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxZQUFZLENBQUMsa0JBQWtCLEdBQUcsTUFBTSxjQUFjLFlBQVksQ0FBQyxFQUFFLGFBQWEsWUFBWSxDQUFDLFFBQVEsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3BKLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxZQUFnQjtRQUNoQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDLGlCQUFpQixHQUFHLFlBQVksQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsY0FBYyxDQUFDLFNBQWtCO1FBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3BDLENBQUM7SUFFRCxVQUFVLENBQUMsV0FBZ0IsRUFBRSxZQUFnQjtRQUMzQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDLFdBQVcsY0FBYyxZQUFZLENBQUMsRUFBRSxhQUFhLFlBQVksQ0FBQyxRQUFRLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNuSSxDQUFDO0lBRUQsY0FBYyxDQUFDLFdBQWdCLEVBQUUsWUFBZ0I7UUFDL0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLFlBQVksQ0FBQyxlQUFlLEdBQUcsWUFBWSxDQUFDLFFBQVEsY0FBYyxZQUFZLENBQUMsRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDOUgsQ0FBQztJQUVELGNBQWMsQ0FBQyxXQUFnQjtRQUM3QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDLFlBQVksRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7K0dBekNVLG9CQUFvQjttSEFBcEIsb0JBQW9CLGNBRm5CLE1BQU07OzRGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmNvbnN0IEFQSV9FTkRQT0lOVCA9IHtcbiAgT1JHX1YxX1NFQVJDSDogJy9hcGlzL3Byb3hpZXMvdjgvb3JnL3YxL3NlYXJjaCcsXG4gIENSRUFURV9URVJNUzogYC9hcGlzL3Byb3hpZXMvdjgvYWN0aW9uL2ZyYW1ld29yay92My90ZXJtL2NyZWF0ZWAsXG4gIFVQREFURV9URVJNUzogYC9hcGlzL3Byb3hpZXMvdjgvZnJhbWV3b3JrL3YxL3Rlcm0vdXBkYXRlL2AsXG4gIFVQREFURV9BU1NPQ0lBVElPTjogYC9hcGlzL3Byb3hpZXMvdjgvZnJhbWV3b3JrL3YxL3Rlcm0vdXBkYXRlL2AsXG4gIFBVQkxJU0hfRlJBTUVXT1JLOiBgL2FwaXMvcHJveGllcy92OC9mcmFtZXdvcmsvdjEvcHVibGlzaC9gLFxuICBSRVRJUkVfVFJFTTogYC9hcGlzL3Byb3hpZXMvdjgvZnJhbWV3b3JrL3YxL3Rlcm0vcmV0aXJlYCxcbiAgVVBEQVRFX0NBVEVHT1JZOiBgL2FwaXMvcHJveGllcy92OC9mcmFtZXdvcmsvdjEvY2F0ZWdvcnkvdXBkYXRlL2AsXG4gIFVTRVJTX1NFQVJDSDogYGFwaXMvcHJveGllcy92OC91c2VyL3YxL3NlYXJjaGBcbn1cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFRyZWVIaWVyYXJjaHlTZXJ2aWNlIHtcblxuICBwcml2YXRlIGxvYWRlclN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgbG9hZGVyU3RhdGUkID0gdGhpcy5sb2FkZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwpIHsgfVxuXG4gIG9yZ1NlcmFjaEFwaShyZXF1ZXN0Qm9keTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7QVBJX0VORFBPSU5ULk9SR19WMV9TRUFSQ0h9YCwgcmVxdWVzdEJvZHkpO1xuICB9XG5cbiAgY3JlYXRlVGVybShyZXF1ZXN0Qm9keTogYW55LCBmcmFtZXdvcmtPYmo6YW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7QVBJX0VORFBPSU5ULkNSRUFURV9URVJNU30/ZnJhbWV3b3JrPSR7ZnJhbWV3b3JrT2JqLmlkfSZjYXRlZ29yeT0ke2ZyYW1ld29ya09iai5jYXRlZ29yeX1gLCByZXF1ZXN0Qm9keSk7XG4gIH1cblxuICB1cGRhdGVUZXJtKHJlcXVlc3RCb2R5OiBhbnksIGZyYW1ld29ya09iajphbnksIGNvZGVJZDphbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2goYCR7QVBJX0VORFBPSU5ULlVQREFURV9URVJNU30vJHtjb2RlSWR9P2ZyYW1ld29yaz0ke2ZyYW1ld29ya09iai5pZH0mY2F0ZWdvcnk9JHtmcmFtZXdvcmtPYmouY2F0ZWdvcnl9YCwgcmVxdWVzdEJvZHkpO1xuICB9XG5cbiAgdXBkYXRlRnJhbWV3b3JrQXNzb2NpYXRpb24ocmVxdWVzdEJvZHk6IGFueSwgZnJhbWV3b3JrT2JqOmFueSwgY29kZUlkOmFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaChgJHtBUElfRU5EUE9JTlQuVVBEQVRFX0FTU09DSUFUSU9OfSR7Y29kZUlkfT9mcmFtZXdvcms9JHtmcmFtZXdvcmtPYmouaWR9JmNhdGVnb3J5PSR7ZnJhbWV3b3JrT2JqLmNhdGVnb3J5fWAsIHJlcXVlc3RCb2R5KTtcbiAgfVxuXG4gIHB1Ymxpc2hGcmVhbWV3b3JrKGZyYW1ld29ya09iajphbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHtBUElfRU5EUE9JTlQuUFVCTElTSF9GUkFNRVdPUkt9JHtmcmFtZXdvcmtPYmouaWR9YCwge30pO1xuICB9XG5cbiAgc2V0TG9hZGVyU3RhdGUoaXNMb2FkaW5nOiBib29sZWFuKSB7XG4gICAgdGhpcy5sb2FkZXJTdWJqZWN0Lm5leHQoaXNMb2FkaW5nKVxuICB9XG5cbiAgcmV0aXJlVGVybShyZXF1ZXN0Qm9keTogYW55LCBmcmFtZXdvcmtPYmo6YW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7QVBJX0VORFBPSU5ULlJFVElSRV9UUkVNfT9mcmFtZXdvcms9JHtmcmFtZXdvcmtPYmouaWR9JmNhdGVnb3J5PSR7ZnJhbWV3b3JrT2JqLmNhdGVnb3J5fWAsIHJlcXVlc3RCb2R5KTtcbiAgfVxuXG4gIHVwZGF0ZUNhdGVnb3J5KHJlcXVlc3RCb2R5OiBhbnksIGZyYW1ld29ya09iajphbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2goYCR7QVBJX0VORFBPSU5ULlVQREFURV9DQVRFR09SWX0ke2ZyYW1ld29ya09iai5jYXRlZ29yeX0/ZnJhbWV3b3JrPSR7ZnJhbWV3b3JrT2JqLmlkfWAsIHJlcXVlc3RCb2R5KTtcbiAgfVxuXG4gIGdldFVzZXJzU2VhcmNoKHJlcXVlc3RCb2R5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHtBUElfRU5EUE9JTlQuVVNFUlNfU0VBUkNIfWAsIHJlcXVlc3RCb2R5KTtcbiAgfVxuICBcbn1cbiJdfQ==