UNPKG

e5core-angular-ui

Version:

e5 Anywhere Angular UI

181 lines 16.7 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, ChangeDetectionStrategy, Input, ViewChild, Output, EventEmitter } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; import { E5ConfigurationService as e5Config } from 'e5core-angular-services'; import { E5coreUiSelectFromListMaterialComponent } from './component/e5core-ui-select-from-list-material.component'; import { UiStyleService } from '../../services/ui-style.service'; import { DataSourceQuery } from '../../datasource/data-source-query'; import { DocumentDataSourceService } from '../../datasource/document-data-source.service'; export class E5coreUiSelectFromListComponent { /** * @param {?} config * @param {?} style * @param {?} datasource */ constructor(config, style, datasource) { this.config = config; this.style = style; this.datasource = datasource; this.folderName = ""; this.fieldsToShow = null; //Refer to http://blog.softartisans.com/2009/12/08/list-of-internal-names-for-sharepoint-fields //Refer to http://blog.softartisans.com/2009/12/08/list-of-internal-names-for-sharepoint-fields this.includeSelect = true; this.query = null; this.pagesizes = [5, 10, 25, 50]; this.autoSearch = true; this.readonly = false; this.listItemViewEvent = new EventEmitter(); this.listItemSelectEvent = new EventEmitter(); this.searchEvent = new EventEmitter(); } /** * @return {?} */ ngOnInit() { if (typeof this.workItem$ == 'undefined') { console.error('e5core-ui-select-from-list [workItem$] must have a BehaviorSubject<WorkItemModel>'); return; } if (typeof this.workItem$ != 'undefined') { this.workItem$.subscribe(w => { this.updateData(); }); } if (this.libraryId == null) { this.error = 'e5core-ui-search-results [searchDefinitionId] must be specified'; console.error(this.error); return; } this.datasource.setLibrary(this.libraryId, this.folderName, this.includeSelect, this.fieldsToShow, this.searchText); /** @type {?} */ let options = this.datasource.defaultOptions(); this.datasource.setDefaultOptions(options); } /** * @return {?} */ ngAfterViewInit() { } /** * @return {?} */ refresh() { this.selectFromListMaterialComponent.refresh(); } /** * @param {?} event * @return {?} */ onListItemViewEvent(event) { this.listItemViewEvent.emit({ workId: null, type: "E5SharepointAttachment", attachmentId: null, fullUrl: event.element.fullUrl, name: event.element.fullUrl }); } /** * @param {?} event * @return {?} */ onListItemSelectEvent(event) { this.listItemSelectEvent.emit(event); } /** * @param {?} event * @return {?} */ onSearchEvent(event) { debugger; this.searchText = event; this.datasource.setLibrary(this.libraryId, this.folderName, this.includeSelect, this.fieldsToShow, this.searchText); } /** * @private * @return {?} */ updateData() { } } E5coreUiSelectFromListComponent.decorators = [ { type: Component, args: [{ selector: 'e5core-ui-select-from-list', template: ` <span *ngIf="workItem$" [ngSwitch]="style.current()"> <e5core-ui-select-from-list-material *ngSwitchCase='2' [datasource]='datasource' [pagesizes]="pagesizes" [query]='query' [autoSearch]='autoSearch' (listItemViewEvent)='onListItemViewEvent($event)' (listItemSelectEvent)='onListItemSelectEvent($event)' (searchEvent)='onSearchEvent($event)'></e5core-ui-select-from-list-material> </span> <div *ngIf="!(workItem$)" class="e5core-component-error">&lt;e5core-ui-select-from-list&gt; [workItem$] must have a BehaviorSubject&lt;WorkItemModel&gt;</div> `, changeDetection: ChangeDetectionStrategy.OnPush, //changeDetection: ChangeDetectionStrategy.OnPush providers: [ DocumentDataSourceService ] }] } ]; /** @nocollapse */ E5coreUiSelectFromListComponent.ctorParameters = () => [ { type: e5Config }, { type: UiStyleService }, { type: DocumentDataSourceService } ]; E5coreUiSelectFromListComponent.propDecorators = { workItem$: [{ type: Input }], libraryId: [{ type: Input }], folderName: [{ type: Input }], fieldsToShow: [{ type: Input }], includeSelect: [{ type: Input }], query: [{ type: Input }], pagesizes: [{ type: Input }], autoSearch: [{ type: Input }], readonly: [{ type: Input }], listItemViewEvent: [{ type: Output }], listItemSelectEvent: [{ type: Output }], searchEvent: [{ type: Output }], selectFromListMaterialComponent: [{ type: ViewChild, args: [E5coreUiSelectFromListMaterialComponent,] }] }; if (false) { /** @type {?} */ E5coreUiSelectFromListComponent.prototype.workItem$; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.libraryId; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.folderName; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.fieldsToShow; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.includeSelect; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.query; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.pagesizes; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.autoSearch; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.readonly; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.listItemViewEvent; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.listItemSelectEvent; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.searchEvent; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.workId; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.searchText; /** * @type {?} * @private */ E5coreUiSelectFromListComponent.prototype.selectFromListMaterialComponent; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.error; /** * @type {?} * @private */ E5coreUiSelectFromListComponent.prototype.config; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.style; /** @type {?} */ E5coreUiSelectFromListComponent.prototype.datasource; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZTVjb3JlLXVpLXNlbGVjdC1mcm9tLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vZTVjb3JlLWFuZ3VsYXItdWkvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9lNWNvcmUtdWktc2VsZWN0LWZyb20tbGlzdC9lNWNvcmUtdWktc2VsZWN0LWZyb20tbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBaUIsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxzQkFBc0IsSUFBSSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU3RSxPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUVwSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBa0IxRixNQUFNLE9BQU8sK0JBQStCOzs7Ozs7SUF1QjFDLFlBQW9CLE1BQWdCLEVBQVMsS0FBb0IsRUFBUyxVQUFxQztRQUEzRixXQUFNLEdBQU4sTUFBTSxDQUFVO1FBQVMsVUFBSyxHQUFMLEtBQUssQ0FBZTtRQUFTLGVBQVUsR0FBVixVQUFVLENBQTJCO1FBbkJ0RyxlQUFVLEdBQVksRUFBRSxDQUFDO1FBQ3pCLGlCQUFZLEdBQTRCLElBQUksQ0FBQyxDQUFJLCtGQUErRjs7UUFDaEosa0JBQWEsR0FBYSxJQUFJLENBQUM7UUFDL0IsVUFBSyxHQUFxQixJQUFJLENBQUM7UUFDL0IsY0FBUyxHQUFjLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdkMsZUFBVSxHQUFhLElBQUksQ0FBQztRQUM1QixhQUFRLEdBQWEsS0FBSyxDQUFDO1FBRTFCLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFzQixDQUFDO1FBQzNELHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDMUMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBU3dFLENBQUM7Ozs7SUFFbkgsUUFBUTtRQUNOLElBQUksT0FBTyxJQUFJLENBQUMsU0FBUyxJQUFJLFdBQVcsRUFBRTtZQUN4QyxPQUFPLENBQUMsS0FBSyxDQUFDLG1GQUFtRixDQUFDLENBQUM7WUFDbkcsT0FBUTtTQUNUO1FBRUQsSUFBSSxPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksV0FBVyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUN0QixDQUFDLENBQUMsRUFBRTtnQkFDRixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsQ0FBQyxDQUNGLENBQUE7U0FDRjtRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUU7WUFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxpRUFBaUUsQ0FBRTtZQUNoRixPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixPQUFRO1NBQ1Q7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzs7WUFDaEgsT0FBTyxHQUFxQixJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRTtRQUNoRSxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdDLENBQUM7Ozs7SUFFRCxlQUFlO0lBQ2YsQ0FBQzs7OztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsK0JBQStCLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakQsQ0FBQzs7Ozs7SUFFRCxtQkFBbUIsQ0FBQyxLQUFLO1FBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDO0lBQy9KLENBQUM7Ozs7O0lBRUQscUJBQXFCLENBQUMsS0FBSztRQUN6QixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7Ozs7O0lBRUQsYUFBYSxDQUFDLEtBQUs7UUFDakIsUUFBUSxDQUFDO1FBQ1QsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEgsQ0FBQzs7Ozs7SUFFTyxVQUFVO0lBQ2xCLENBQUM7OztZQXJGRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLDRCQUE0QjtnQkFDdEMsUUFBUSxFQUFFOzs7OztHQUtUO2dCQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOztnQkFFL0MsU0FBUyxFQUFFO29CQUNULHlCQUF5QjtpQkFDMUI7YUFDRjs7OztZQXhCa0MsUUFBUTtZQUlsQyxjQUFjO1lBR2QseUJBQXlCOzs7d0JBb0IvQixLQUFLO3dCQUNMLEtBQUs7eUJBQ0wsS0FBSzsyQkFDTCxLQUFLOzRCQUNMLEtBQUs7b0JBQ0wsS0FBSzt3QkFDTCxLQUFLO3lCQUNMLEtBQUs7dUJBQ0wsS0FBSztnQ0FFTCxNQUFNO2tDQUNOLE1BQU07MEJBQ1AsTUFBTTs4Q0FJTCxTQUFTLFNBQUMsdUNBQXVDOzs7O0lBaEJsRCxvREFBb0Q7O0lBQ3BELG9EQUE0Qjs7SUFDNUIscURBQWtDOztJQUNsQyx1REFBc0Q7O0lBQ3RELHdEQUF3Qzs7SUFDeEMsZ0RBQXdDOztJQUN4QyxvREFBZ0Q7O0lBQ2hELHFEQUFxQzs7SUFDckMsbURBQW9DOztJQUVwQyw0REFBcUU7O0lBQ3JFLDhEQUFtRDs7SUFDcEQsc0RBQTJDOztJQUMxQyxpREFBaUI7O0lBQ2pCLHFEQUFvQjs7Ozs7SUFFcEIsMEVBQ2lGOztJQUVsRixnREFBZTs7Ozs7SUFFRixpREFBd0I7O0lBQUUsZ0RBQTJCOztJQUFFLHFEQUE0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgSW5wdXQsIFZpZXdDaGlsZCwgQWZ0ZXJWaWV3SW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRTVDb25maWd1cmF0aW9uU2VydmljZSBhcyBlNUNvbmZpZyB9IGZyb20gJ2U1Y29yZS1hbmd1bGFyLXNlcnZpY2VzJztcbmltcG9ydCB7IFdvcmtJdGVtTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvd29yay1pdGVtJztcbmltcG9ydCB7IEU1Y29yZVVpU2VsZWN0RnJvbUxpc3RNYXRlcmlhbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50L2U1Y29yZS11aS1zZWxlY3QtZnJvbS1saXN0LW1hdGVyaWFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBLZXlWYWx1ZVBhaXIgfSBmcm9tICcuLi8uLi91dGlsL2tleS12YWx1ZS1wYWlyJztcbmltcG9ydCB7IFVpU3R5bGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdWktc3R5bGUuc2VydmljZSc7XG5pbXBvcnQgeyBEYXRhU291cmNlT3B0aW9ucyB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2UvZGF0YS1zb3VyY2Utb3B0aW9ucyc7XG5pbXBvcnQgeyBEYXRhU291cmNlUXVlcnkgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL2RhdGEtc291cmNlLXF1ZXJ5JztcbmltcG9ydCB7IERvY3VtZW50RGF0YVNvdXJjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL2RvY3VtZW50LWRhdGEtc291cmNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmllbGREZWZpbml0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmllbGQtZGVmaW5pdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBWaWV3ZXJEaXNwbGF5RXZlbnQgfSBmcm9tICcuLi8uLi9ldmVudHMvdmlld2VyLWRpc3BsYXktZXZlbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlNWNvcmUtdWktc2VsZWN0LWZyb20tbGlzdCcsXG4gIHRlbXBsYXRlOiBgXG4gIDxzcGFuICpuZ0lmPVwid29ya0l0ZW0kXCIgW25nU3dpdGNoXT1cInN0eWxlLmN1cnJlbnQoKVwiPlxuICAgIDxlNWNvcmUtdWktc2VsZWN0LWZyb20tbGlzdC1tYXRlcmlhbCAqbmdTd2l0Y2hDYXNlPScyJyBbZGF0YXNvdXJjZV09J2RhdGFzb3VyY2UnIFtwYWdlc2l6ZXNdPVwicGFnZXNpemVzXCIgIFtxdWVyeV09J3F1ZXJ5JyBbYXV0b1NlYXJjaF09J2F1dG9TZWFyY2gnIChsaXN0SXRlbVZpZXdFdmVudCk9J29uTGlzdEl0ZW1WaWV3RXZlbnQoJGV2ZW50KScgKGxpc3RJdGVtU2VsZWN0RXZlbnQpPSdvbkxpc3RJdGVtU2VsZWN0RXZlbnQoJGV2ZW50KScgKHNlYXJjaEV2ZW50KT0nb25TZWFyY2hFdmVudCgkZXZlbnQpJz48L2U1Y29yZS11aS1zZWxlY3QtZnJvbS1saXN0LW1hdGVyaWFsPlxuICA8L3NwYW4+XG4gIDxkaXYgKm5nSWY9XCIhKHdvcmtJdGVtJClcIiBjbGFzcz1cImU1Y29yZS1jb21wb25lbnQtZXJyb3JcIj4mbHQ7ZTVjb3JlLXVpLXNlbGVjdC1mcm9tLWxpc3QmZ3Q7IFt3b3JrSXRlbSRdIG11c3QgaGF2ZSBhIEJlaGF2aW9yU3ViamVjdCZsdDtXb3JrSXRlbU1vZGVsJmd0OzwvZGl2PlxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgLy9jaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxuICBwcm92aWRlcnM6IFtcbiAgICBEb2N1bWVudERhdGFTb3VyY2VTZXJ2aWNlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRTVjb3JlVWlTZWxlY3RGcm9tTGlzdENvbXBvbmVudCAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkluaXQge1xuXG4gIEBJbnB1dCgpIHdvcmtJdGVtJCA6IEJlaGF2aW9yU3ViamVjdDxXb3JrSXRlbU1vZGVsPjtcbiAgQElucHV0KCkgbGlicmFyeUlkIDogbnVtYmVyO1xuICBASW5wdXQoKSBmb2xkZXJOYW1lIDogc3RyaW5nID0gXCJcIjtcbiAgQElucHV0KCkgZmllbGRzVG9TaG93IDogRmllbGREZWZpbml0aW9uTW9kZWxbXSA9IG51bGw7ICAgIC8vUmVmZXIgdG8gaHR0cDovL2Jsb2cuc29mdGFydGlzYW5zLmNvbS8yMDA5LzEyLzA4L2xpc3Qtb2YtaW50ZXJuYWwtbmFtZXMtZm9yLXNoYXJlcG9pbnQtZmllbGRzXG4gIEBJbnB1dCgpIGluY2x1ZGVTZWxlY3QgOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgcXVlcnkgOiBEYXRhU291cmNlUXVlcnkgPSBudWxsO1xuICBASW5wdXQoKSBwYWdlc2l6ZXMgOiBudW1iZXJbXSA9IFs1LCAxMCwgMjUsIDUwXTtcbiAgQElucHV0KCkgYXV0b1NlYXJjaCA6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSByZWFkb25seSA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgXG4gIEBPdXRwdXQoKSBsaXN0SXRlbVZpZXdFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8Vmlld2VyRGlzcGxheUV2ZW50PigpO1xuICBAT3V0cHV0KCkgbGlzdEl0ZW1TZWxlY3RFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblx0QE91dHB1dCgpIHNlYXJjaEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICB3b3JrSWQgOiBzdHJpbmcgO1xuICBzZWFyY2hUZXh0IDogc3RyaW5nO1xuICBcbiAgQFZpZXdDaGlsZChFNWNvcmVVaVNlbGVjdEZyb21MaXN0TWF0ZXJpYWxDb21wb25lbnQpXG4gIHByaXZhdGUgc2VsZWN0RnJvbUxpc3RNYXRlcmlhbENvbXBvbmVudDogRTVjb3JlVWlTZWxlY3RGcm9tTGlzdE1hdGVyaWFsQ29tcG9uZW50O1xuXG5cdGVycm9yOiBzdHJpbmcgO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlnOiBlNUNvbmZpZywgcHVibGljIHN0eWxlOlVpU3R5bGVTZXJ2aWNlLCBwdWJsaWMgZGF0YXNvdXJjZTogRG9jdW1lbnREYXRhU291cmNlU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMud29ya0l0ZW0kID09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdlNWNvcmUtdWktc2VsZWN0LWZyb20tbGlzdCBbd29ya0l0ZW0kXSBtdXN0IGhhdmUgYSBCZWhhdmlvclN1YmplY3Q8V29ya0l0ZW1Nb2RlbD4nKTtcbiAgICAgIHJldHVybiA7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB0aGlzLndvcmtJdGVtJCAhPSAndW5kZWZpbmVkJykge1xuICAgICAgdGhpcy53b3JrSXRlbSQuc3Vic2NyaWJlKFxuICAgICAgICB3ID0+IHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZURhdGEoKTtcbiAgICAgICAgfVxuICAgICAgKVxuICAgIH1cblxuICAgIGlmICh0aGlzLmxpYnJhcnlJZCA9PSBudWxsKSB7XG4gICAgICB0aGlzLmVycm9yID0gJ2U1Y29yZS11aS1zZWFyY2gtcmVzdWx0cyBbc2VhcmNoRGVmaW5pdGlvbklkXSBtdXN0IGJlIHNwZWNpZmllZCcgO1xuICAgICAgY29uc29sZS5lcnJvcih0aGlzLmVycm9yKTtcbiAgICAgIHJldHVybiA7XG4gICAgfVxuICAgIHRoaXMuZGF0YXNvdXJjZS5zZXRMaWJyYXJ5KHRoaXMubGlicmFyeUlkLCB0aGlzLmZvbGRlck5hbWUsIHRoaXMuaW5jbHVkZVNlbGVjdCwgdGhpcy5maWVsZHNUb1Nob3csIHRoaXMuc2VhcmNoVGV4dCk7XG4gICAgbGV0IG9wdGlvbnM6RGF0YVNvdXJjZU9wdGlvbnMgPSB0aGlzLmRhdGFzb3VyY2UuZGVmYXVsdE9wdGlvbnMoKTtcbiAgICB0aGlzLmRhdGFzb3VyY2Uuc2V0RGVmYXVsdE9wdGlvbnMob3B0aW9ucyk7XG4gIH1cbiAgXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgfVxuXG4gIHJlZnJlc2goKSB7XG4gICAgdGhpcy5zZWxlY3RGcm9tTGlzdE1hdGVyaWFsQ29tcG9uZW50LnJlZnJlc2goKTtcbiAgfVxuICBcbiAgb25MaXN0SXRlbVZpZXdFdmVudChldmVudCkge1xuICAgIHRoaXMubGlzdEl0ZW1WaWV3RXZlbnQuZW1pdCh7d29ya0lkOiBudWxsLCB0eXBlOiBcIkU1U2hhcmVwb2ludEF0dGFjaG1lbnRcIiwgYXR0YWNobWVudElkOiBudWxsLCBmdWxsVXJsOiBldmVudC5lbGVtZW50LmZ1bGxVcmwsIG5hbWU6IGV2ZW50LmVsZW1lbnQuZnVsbFVybH0pO1xuICB9XG4gIFxuICBvbkxpc3RJdGVtU2VsZWN0RXZlbnQoZXZlbnQpIHtcbiAgICB0aGlzLmxpc3RJdGVtU2VsZWN0RXZlbnQuZW1pdChldmVudCk7XG4gIH1cblxuICBvblNlYXJjaEV2ZW50KGV2ZW50KSB7XG4gICAgZGVidWdnZXI7XG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gZXZlbnQ7XG4gICAgdGhpcy5kYXRhc291cmNlLnNldExpYnJhcnkodGhpcy5saWJyYXJ5SWQsIHRoaXMuZm9sZGVyTmFtZSwgdGhpcy5pbmNsdWRlU2VsZWN0LCB0aGlzLmZpZWxkc1RvU2hvdywgdGhpcy5zZWFyY2hUZXh0KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRGF0YSgpOnZvaWQge1xuICB9XG59Il19