angular-slickgrid 3.3.1 → 3.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/angular-slickgrid.umd.js +1 -1
- package/bundles/angular-slickgrid.umd.js.map +1 -1
- package/esm2015/app/modules/angular-slickgrid/extensions/rowDetailViewExtension.js +2 -2
- package/fesm2015/angular-slickgrid.js +1 -1
- package/fesm2015/angular-slickgrid.js.map +1 -1
- package/package.json +8 -8
|
@@ -6,7 +6,7 @@ import { addToArrayWhenNotExists, castObservableToPromise, RxJsFacade, SharedSer
|
|
|
6
6
|
import { EventPubSubService } from '@slickgrid-universal/event-pub-sub';
|
|
7
7
|
import { Observable } from 'rxjs';
|
|
8
8
|
import * as DOMPurify_ from 'dompurify';
|
|
9
|
-
const DOMPurify = DOMPurify_; // patch to fix rollup to work
|
|
9
|
+
const DOMPurify = DOMPurify_['default'] || DOMPurify_; // patch to fix rollup to work
|
|
10
10
|
import { AngularUtilService } from '../services/angularUtil.service';
|
|
11
11
|
import { unsubscribeAllObservables } from '../services/utilities';
|
|
12
12
|
const ROW_DETAIL_CONTAINER_PREFIX = 'container_';
|
|
@@ -339,4 +339,4 @@ RowDetailViewExtension.ctorParameters = () => [
|
|
|
339
339
|
{ type: SharedService },
|
|
340
340
|
{ type: RxJsFacade }
|
|
341
341
|
];
|
|
342
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93RGV0YWlsVmlld0V4dGVuc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9hbmd1bGFyLXNsaWNrZ3JpZC9leHRlbnNpb25zL3Jvd0RldGFpbFZpZXdFeHRlbnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sdUNBQXVDLENBQUM7QUFDL0MsT0FBTywyQ0FBMkMsQ0FBQztBQUVuRCxPQUFPLEVBQUUsY0FBYyxFQUFnQixVQUFVLEVBQTBCLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsdUJBQXVCLEVBR3ZCLFVBQVUsRUFDVixhQUFhLEdBS2QsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsVUFBVSxFQUF5QixNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEtBQUssVUFBVSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsQ0FBQyw4QkFBOEI7QUFHNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFLbEUsTUFBTSwyQkFBMkIsR0FBRyxZQUFZLENBQUM7QUFDakQsTUFBTSx3QkFBd0IsR0FBRyxtQkFBbUIsQ0FBQztBQVNyRCxNQUFNLE9BQU8sc0JBQXNCO0lBV2pDLFlBQ21CLGtCQUFzQyxFQUN0QyxNQUFzQixFQUN0QixrQkFBc0MsRUFDdEMsYUFBNEIsRUFDckMsSUFBaUI7UUFKUix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3RCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsa0JBQWEsR0FBYixhQUFhLENBQWU7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TnpCLGFBQWE7WUFEYixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdzbGlja2dyaWQvcGx1Z2lucy9zbGljay5yb3dkZXRhaWx2aWV3JztcclxuaW1wb3J0ICdzbGlja2dyaWQvcGx1Z2lucy9zbGljay5yb3dzZWxlY3Rpb25tb2RlbCc7XHJcblxyXG5pbXBvcnQgeyBBcHBsaWNhdGlvblJlZiwgQ29tcG9uZW50UmVmLCBJbmplY3RhYmxlLCBUeXBlLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgYWRkVG9BcnJheVdoZW5Ob3RFeGlzdHMsXHJcbiAgY2FzdE9ic2VydmFibGVUb1Byb21pc2UsXHJcbiAgQ29sdW1uLFxyXG4gIFJvd0RldGFpbFZpZXdFeHRlbnNpb24gYXMgVW5pdmVyc2FsUm93RGV0YWlsVmlld0V4dGVuc2lvbixcclxuICBSeEpzRmFjYWRlLFxyXG4gIFNoYXJlZFNlcnZpY2UsXHJcbiAgU2xpY2tFdmVudEhhbmRsZXIsXHJcbiAgU2xpY2tHcmlkLFxyXG4gIFNsaWNrTmFtZXNwYWNlLFxyXG4gIFNsaWNrUm93RGV0YWlsVmlldyxcclxufSBmcm9tICdAc2xpY2tncmlkLXVuaXZlcnNhbC9jb21tb24nO1xyXG5pbXBvcnQgeyBFdmVudFB1YlN1YlNlcnZpY2UgfSBmcm9tICdAc2xpY2tncmlkLXVuaXZlcnNhbC9ldmVudC1wdWItc3ViJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCAqIGFzIERPTVB1cmlmeV8gZnJvbSAnZG9tcHVyaWZ5JztcclxuY29uc3QgRE9NUHVyaWZ5ID0gRE9NUHVyaWZ5XzsgLy8gcGF0Y2ggdG8gZml4IHJvbGx1cCB0byB3b3JrXHJcblxyXG5pbXBvcnQgeyBHcmlkT3B0aW9uLCBSb3dEZXRhaWxWaWV3IH0gZnJvbSAnLi4vbW9kZWxzL2luZGV4JztcclxuaW1wb3J0IHsgQW5ndWxhclV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYW5ndWxhclV0aWwuc2VydmljZSc7XHJcbmltcG9ydCB7IHVuc3Vic2NyaWJlQWxsT2JzZXJ2YWJsZXMgfSBmcm9tICcuLi9zZXJ2aWNlcy91dGlsaXRpZXMnO1xyXG5cclxuLy8gdXNpbmcgZXh0ZXJuYWwgbm9uLXR5cGVkIGpzIGxpYnJhcmllc1xyXG5kZWNsYXJlIGNvbnN0IFNsaWNrOiBTbGlja05hbWVzcGFjZTtcclxuXHJcbmNvbnN0IFJPV19ERVRBSUxfQ09OVEFJTkVSX1BSRUZJWCA9ICdjb250YWluZXJfJztcclxuY29uc3QgUFJFTE9BRF9DT05UQUlORVJfUFJFRklYID0gJ2NvbnRhaW5lcl9sb2FkaW5nJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlZFZpZXcge1xyXG4gIGlkOiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgZGF0YUNvbnRleHQ6IGFueTtcclxuICBjb21wb25lbnRSZWY/OiBDb21wb25lbnRSZWY8YW55PjtcclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUm93RGV0YWlsVmlld0V4dGVuc2lvbiBpbXBsZW1lbnRzIFVuaXZlcnNhbFJvd0RldGFpbFZpZXdFeHRlbnNpb24ge1xyXG4gIHJvd0RldGFpbENvbnRhaW5lciE6IFZpZXdDb250YWluZXJSZWY7XHJcbiAgcHJpdmF0ZSBfYWRkb246IGFueTtcclxuICBwcml2YXRlIF9hZGRvbk9wdGlvbnMhOiBSb3dEZXRhaWxWaWV3IHwgbnVsbDtcclxuICBwcml2YXRlIF9ldmVudEhhbmRsZXI6IFNsaWNrRXZlbnRIYW5kbGVyO1xyXG4gIHByaXZhdGUgX3ByZWxvYWRDb21wb25lbnQ6IFR5cGU8b2JqZWN0PiB8IHVuZGVmaW5lZDtcclxuICBwcml2YXRlIF92aWV3czogQ3JlYXRlZFZpZXdbXSA9IFtdO1xyXG4gIHByaXZhdGUgX3ZpZXdDb21wb25lbnQhOiBUeXBlPG9iamVjdD47XHJcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBwcml2YXRlIF91c2VyUHJvY2Vzc0ZuITogKGl0ZW06IGFueSkgPT4gUHJvbWlzZTxhbnk+IHwgT2JzZXJ2YWJsZTxhbnk+IHwgU3ViamVjdDxhbnk+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYW5ndWxhclV0aWxTZXJ2aWNlOiBBbmd1bGFyVXRpbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFwcFJlZjogQXBwbGljYXRpb25SZWYsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGV2ZW50UHViU3ViU2VydmljZTogRXZlbnRQdWJTdWJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzaGFyZWRTZXJ2aWNlOiBTaGFyZWRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByeGpzPzogUnhKc0ZhY2FkZSxcclxuICApIHtcclxuICAgIHRoaXMuX2V2ZW50SGFuZGxlciA9IG5ldyBTbGljay5FdmVudEhhbmRsZXIoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IGRhdGFzZXRJZFByb3BOYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5ncmlkT3B0aW9ucy5kYXRhc2V0SWRQcm9wZXJ0eU5hbWUgfHwgJ2lkJztcclxuICB9XHJcblxyXG4gIGdldCBldmVudEhhbmRsZXIoKTogU2xpY2tFdmVudEhhbmRsZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50SGFuZGxlcjtcclxuICB9XHJcblxyXG4gIGdldCBncmlkT3B0aW9ucygpOiBHcmlkT3B0aW9uIHtcclxuICAgIHJldHVybiAodGhpcy5zaGFyZWRTZXJ2aWNlPy5ncmlkT3B0aW9ucyA/PyB7fSkgYXMgR3JpZE9wdGlvbjtcclxuICB9XHJcblxyXG4gIGdldCByb3dEZXRhaWxWaWV3T3B0aW9ucygpOiBSb3dEZXRhaWxWaWV3IHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLmdyaWRPcHRpb25zLnJvd0RldGFpbFZpZXc7XHJcbiAgfVxyXG5cclxuICBhZGRSeEpzUmVzb3VyY2UocnhqczogUnhKc0ZhY2FkZSkge1xyXG4gICAgdGhpcy5yeGpzID0gcnhqcztcclxuICB9XHJcblxyXG4gIC8qKiBEaXNwb3NlIG9mIHRoZSBSb3dEZXRhaWxWaWV3IEV4dGVuc2lvbiAqL1xyXG4gIGRpc3Bvc2UoKSB7XHJcbiAgICAvLyB1bnN1YnNjcmliZSBhbGwgU2xpY2tHcmlkIGV2ZW50c1xyXG4gICAgdGhpcy5fZXZlbnRIYW5kbGVyLnVuc3Vic2NyaWJlQWxsKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuX2FkZG9uICYmIHRoaXMuX2FkZG9uLmRlc3Ryb3kpIHtcclxuICAgICAgdGhpcy5fYWRkb24uZGVzdHJveSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fYWRkb25PcHRpb25zID0gbnVsbDtcclxuXHJcbiAgICAvLyBhbHNvIHVuc3Vic2NyaWJlIGFsbCBSeEpTIHN1YnNjcmlwdGlvbnNcclxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMgPSB1bnN1YnNjcmliZUFsbE9ic2VydmFibGVzKHRoaXMuX3N1YnNjcmlwdGlvbnMpO1xyXG4gICAgdGhpcy5kaXNwb3NlQWxsVmlld0NvbXBvbmVudHMoKTtcclxuICB9XHJcblxyXG4gIC8qKiBEaXNwb3NlIG9mIGFsbCB0aGUgb3BlbmVkIFJvdyBEZXRhaWwgUGFuZWxzIEFuZ3VsYXIgVmlldyBDb21wb25lbnRzICovXHJcbiAgZGlzcG9zZUFsbFZpZXdDb21wb25lbnRzKCkge1xyXG4gICAgdGhpcy5fdmlld3MuZm9yRWFjaCgoY29tcFJlZikgPT4gdGhpcy5kaXNwb3NlVmlld0NvbXBvbmVudChjb21wUmVmKSk7XHJcbiAgICB0aGlzLl92aWV3cyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIHRoZSBwbHVnaW4gYmVmb3JlIHRoZSBHcmlkIGNyZWF0aW9uLCBlbHNlIGl0IHdpbGwgYmVoYXZlIG9kZGx5LlxyXG4gICAqIE1vc3RseSBiZWNhdXNlIHRoZSBjb2x1bW4gZGVmaW5pdGlvbnMgbWlnaHQgY2hhbmdlIGFmdGVyIHRoZSBncmlkIGNyZWF0aW9uXHJcbiAgICovXHJcbiAgY3JlYXRlKGNvbHVtbkRlZmluaXRpb25zOiBDb2x1bW5bXSwgZ3JpZE9wdGlvbnM6IEdyaWRPcHRpb24pOiBTbGlja1Jvd0RldGFpbFZpZXcgfCBudWxsIHtcclxuICAgIGlmIChjb2x1bW5EZWZpbml0aW9ucyAmJiBncmlkT3B0aW9ucykge1xyXG4gICAgICBpZiAoIWdyaWRPcHRpb25zLnJvd0RldGFpbFZpZXcpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBSb3cgRGV0YWlsIFZpZXcgcmVxdWlyZXMgb3B0aW9ucyB0byBiZSBwYXNzZWQgdmlhIHRoZSBcInJvd0RldGFpbFZpZXdcIiBwcm9wZXJ0eSBvZiB0aGUgR3JpZCBPcHRpb25zJyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChncmlkT3B0aW9ucz8ucm93RGV0YWlsVmlldykge1xyXG4gICAgICAgIGlmICghdGhpcy5fYWRkb24pIHtcclxuICAgICAgICAgIGlmICh0eXBlb2YgZ3JpZE9wdGlvbnMucm93RGV0YWlsVmlldy5wcm9jZXNzID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8ga2VlcCB0aGUgdXNlciBcInByb2Nlc3NcIiBtZXRob2QgYW5kIHJlcGxhY2UgaXQgd2l0aCBvdXIgb3duIGV4ZWN1dGlvbiBtZXRob2RcclxuICAgICAgICAgICAgLy8gd2UgZG8gdGhpcyBiZWNhdXNlIHdoZW4gd2UgZ2V0IHRoZSBpdGVtIGRldGFpbCwgd2UgbmVlZCB0byBjYWxsIFwib25Bc3luY1Jlc3BvbnNlLm5vdGlmeVwiIGZvciB0aGUgcGx1Z2luIHRvIHdvcmtcclxuICAgICAgICAgICAgdGhpcy5fdXNlclByb2Nlc3NGbiA9IGdyaWRPcHRpb25zLnJvd0RldGFpbFZpZXcucHJvY2VzcyBhcyAoaXRlbTogYW55KSA9PiBPYnNlcnZhYmxlPGFueT47ICAgICAgICAgICAgICAgIC8vIGtlZXAgdXNlcidzIHByb2Nlc3MgbWV0aG9kXHJcbiAgICAgICAgICAgIGdyaWRPcHRpb25zLnJvd0RldGFpbFZpZXcucHJvY2VzcyA9IChpdGVtKSA9PiB0aGlzLm9uUHJvY2Vzc2luZyhpdGVtKTsgIC8vIHJlcGxhY2UgcHJvY2VzcyBtZXRob2QgJiBydW4gb3VyIGludGVybmFsIG9uZVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgbmVlZCB0byBwcm92aWRlIGEgXCJwcm9jZXNzXCIgZnVuY3Rpb24gZm9yIHRoZSBSb3cgRGV0YWlsIEV4dGVuc2lvbiB0byB3b3JrIHByb3Blcmx5Jyk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gbG9hZCB0aGUgUHJlbG9hZCAmIFJvd0RldGFpbCBUZW1wbGF0ZXMgKGNvdWxkIGJlIHN0cmFpZ2h0IEhUTUwgb3IgQW5ndWxhciBWaWV3L1ZpZXdNb2RlbClcclxuICAgICAgICAgIC8vIHdoZW4gdGhvc2UgYXJlIEFuZ3VsYXIgVmlldy9WaWV3TW9kZWwsIHdlIG5lZWQgdG8gY3JlYXRlIFZpZXcgQ29tcG9uZW50ICYgcHJvdmlkZSB0aGUgaHRtbCBjb250YWluZXJzIHRvIHRoZSBQbHVnaW4gKHByZVRlbXBsYXRlL3Bvc3RUZW1wbGF0ZSBtZXRob2RzKVxyXG4gICAgICAgICAgaWYgKCFncmlkT3B0aW9ucy5yb3dEZXRhaWxWaWV3LnByZVRlbXBsYXRlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3ByZWxvYWRDb21wb25lbnQgPSBncmlkT3B0aW9ucz8ucm93RGV0YWlsVmlldz8ucHJlbG9hZENvbXBvbmVudDtcclxuICAgICAgICAgICAgZ3JpZE9wdGlvbnMucm93RGV0YWlsVmlldy5wcmVUZW1wbGF0ZSA9ICgpID0+IERPTVB1cmlmeS5zYW5pdGl6ZShgPGRpdiBjbGFzcz1cIiR7UFJFTE9BRF9DT05UQUlORVJfUFJFRklYfVwiPjwvZGl2PmApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKCFncmlkT3B0aW9ucy5yb3dEZXRhaWxWaWV3LnBvc3RUZW1wbGF0ZSkge1xyXG4gICAgICAgICAgICB0aGlzLl92aWV3Q29tcG9uZW50ID0gZ3JpZE9wdGlvbnM/LnJvd0RldGFpbFZpZXc/LnZpZXdDb21wb25lbnQ7XHJcbiAgICAgICAgICAgIGdyaWRPcHRpb25zLnJvd0RldGFpbFZpZXcucG9zdFRlbXBsYXRlID0gKGl0ZW1EZXRhaWw6IGFueSkgPT4gRE9NUHVyaWZ5LnNhbml0aXplKGA8ZGl2IGNsYXNzPVwiJHtST1dfREVUQUlMX0NPTlRBSU5FUl9QUkVGSVh9JHtpdGVtRGV0YWlsW3RoaXMuZGF0YXNldElkUHJvcE5hbWVdfVwiPjwvZGl2PmApO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIGZpbmFsbHkgcmVnaXN0ZXIgdGhlIFJvdyBEZXRhaWwgVmlldyBQbHVnaW5cclxuICAgICAgICAgIHRoaXMuX2FkZG9uT3B0aW9ucyA9IGdyaWRPcHRpb25zLnJvd0RldGFpbFZpZXc7XHJcbiAgICAgICAgICB0aGlzLl9hZGRvbiA9IG5ldyBTbGljay5QbHVnaW5zLlJvd0RldGFpbFZpZXcodGhpcy5fYWRkb25PcHRpb25zKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaWNvbkNvbHVtbjogQ29sdW1uID0gdGhpcy5fYWRkb24uZ2V0Q29sdW1uRGVmaW5pdGlvbigpO1xyXG4gICAgICAgIGlmICh0eXBlb2YgaWNvbkNvbHVtbiA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgIGljb25Db2x1bW4uZXhjbHVkZUZyb21FeHBvcnQgPSB0cnVlO1xyXG4gICAgICAgICAgaWNvbkNvbHVtbi5leGNsdWRlRnJvbUNvbHVtblBpY2tlciA9IHRydWU7XHJcbiAgICAgICAgICBpY29uQ29sdW1uLmV4Y2x1ZGVGcm9tR3JpZE1lbnUgPSB0cnVlO1xyXG4gICAgICAgICAgaWNvbkNvbHVtbi5leGNsdWRlRnJvbVF1ZXJ5ID0gdHJ1ZTtcclxuICAgICAgICAgIGljb25Db2x1bW4uZXhjbHVkZUZyb21IZWFkZXJNZW51ID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAvLyBjb2x1bW4gaW5kZXggcG9zaXRpb24gaW4gdGhlIGdyaWRcclxuICAgICAgICAgIGNvbnN0IGNvbHVtblBvc2l0aW9uID0gZ3JpZE9wdGlvbnMgJiYgZ3JpZE9wdGlvbnMucm93RGV0YWlsVmlldyAmJiBncmlkT3B0aW9ucy5yb3dEZXRhaWxWaWV3LmNvbHVtbkluZGV4UG9zaXRpb24gfHwgMDtcclxuICAgICAgICAgIGlmIChjb2x1bW5Qb3NpdGlvbiA+IDApIHtcclxuICAgICAgICAgICAgY29sdW1uRGVmaW5pdGlvbnMuc3BsaWNlKGNvbHVtblBvc2l0aW9uLCAwLCBpY29uQ29sdW1uKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbHVtbkRlZmluaXRpb25zLnVuc2hpZnQoaWNvbkNvbHVtbik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0aGlzLl9hZGRvbjtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqIEdldCB0aGUgaW5zdGFuY2Ugb2YgdGhlIFNsaWNrR3JpZCBhZGRvbiAoY29udHJvbCBvciBwbHVnaW4pLiAqL1xyXG4gIGdldEFkZG9uSW5zdGFuY2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRkb247XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlcihyb3dTZWxlY3Rpb25QbHVnaW4/OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnNoYXJlZFNlcnZpY2U/LnNsaWNrR3JpZCAmJiB0aGlzLnNoYXJlZFNlcnZpY2UuZ3JpZE9wdGlvbnMpIHtcclxuICAgICAgLy8gdGhlIHBsdWdpbiBoYXMgdG8gYmUgY3JlYXRlZCBCRUZPUkUgdGhlIGdyaWQgKGVsc2UgaXQgYmVoYXZlcyBvZGRseSksIGJ1dCB3ZSBjYW4gb25seSB3YXRjaCBncmlkIGV2ZW50cyBBRlRFUiB0aGUgZ3JpZCBpcyBjcmVhdGVkXHJcbiAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5zbGlja0dyaWQucmVnaXN0ZXJQbHVnaW4odGhpcy5fYWRkb24pO1xyXG5cclxuICAgICAgLy8gdGhpcyBhbHNvIHJlcXVpcmVzIHRoZSBSb3cgU2VsZWN0aW9uIE1vZGVsIHRvIGJlIHJlZ2lzdGVyZWQgYXMgd2VsbFxyXG4gICAgICBpZiAoIXJvd1NlbGVjdGlvblBsdWdpbiB8fCAhdGhpcy5zaGFyZWRTZXJ2aWNlLnNsaWNrR3JpZC5nZXRTZWxlY3Rpb25Nb2RlbCgpKSB7XHJcbiAgICAgICAgcm93U2VsZWN0aW9uUGx1Z2luID0gbmV3IFNsaWNrLlJvd1NlbGVjdGlvbk1vZGVsKHRoaXMuc2hhcmVkU2VydmljZS5ncmlkT3B0aW9ucy5yb3dTZWxlY3Rpb25PcHRpb25zIHx8IHsgc2VsZWN0QWN0aXZlUm93OiB0cnVlIH0pO1xyXG4gICAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5zbGlja0dyaWQuc2V0U2VsZWN0aW9uTW9kZWwocm93U2VsZWN0aW9uUGx1Z2luKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gaG9vayBhbGwgZXZlbnRzXHJcbiAgICAgIGlmICh0aGlzLnNoYXJlZFNlcnZpY2Uuc2xpY2tHcmlkICYmIHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMpIHtcclxuICAgICAgICBpZiAodGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucy5vbkV4dGVuc2lvblJlZ2lzdGVyZWQpIHtcclxuICAgICAgICAgIHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMub25FeHRlbnNpb25SZWdpc3RlcmVkKHRoaXMuX2FkZG9uKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fZXZlbnRIYW5kbGVyLnN1YnNjcmliZSh0aGlzLl9hZGRvbi5vbkFzeW5jUmVzcG9uc2UsIChlOiBhbnksIGFyZ3M6IHsgaXRlbTogYW55OyBkZXRhaWxWaWV3OiBSb3dEZXRhaWxWaWV3IH0pID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zICYmIHR5cGVvZiB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uQXN5bmNSZXNwb25zZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uQXN5bmNSZXNwb25zZShlLCBhcmdzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLl9ldmVudEhhbmRsZXIuc3Vic2NyaWJlKHRoaXMuX2FkZG9uLm9uQXN5bmNFbmRVcGRhdGUsIChlOiBhbnksIGFyZ3M6IHsgZ3JpZDogU2xpY2tHcmlkOyBpdGVtOiBhbnk7IH0pID0+IHtcclxuICAgICAgICAgIC8vIHRyaWdnZXJzIGFmdGVyIGJhY2tlbmQgY2FsbGVkIFwib25Bc3luY1Jlc3BvbnNlLm5vdGlmeSgpXCJcclxuICAgICAgICAgIHRoaXMucmVuZGVyVmlld01vZGVsKGFyZ3MgJiYgYXJncy5pdGVtKTtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucyAmJiB0eXBlb2YgdGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucy5vbkFzeW5jRW5kVXBkYXRlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMub25Bc3luY0VuZFVwZGF0ZShlLCBhcmdzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLl9ldmVudEhhbmRsZXIuc3Vic2NyaWJlKHRoaXMuX2FkZG9uLm9uQWZ0ZXJSb3dEZXRhaWxUb2dnbGUsIChlOiBhbnksIGFyZ3M6IHsgZ3JpZDogU2xpY2tHcmlkOyBpdGVtOiBhbnk7IGV4cGFuZGVkUm93czogbnVtYmVyW107IH0pID0+IHtcclxuICAgICAgICAgIC8vIGRpc3BsYXkgcHJlbG9hZCB0ZW1wbGF0ZSAmIHJlLXJlbmRlciBhbGwgdGhlIG90aGVyIERldGFpbCBWaWV3cyBhZnRlciB0b2dnbGluZ1xyXG4gICAgICAgICAgLy8gdGhlIHByZWxvYWQgVmlldyB3aWxsIGV2ZW50dWFsbHkgZ28gYXdheSBvbmNlIHRoZSBkYXRhIGdldHMgbG9hZGVkIGFmdGVyIHRoZSBcIm9uQXN5bmNFbmRVcGRhdGVcIiBldmVudFxyXG4gICAgICAgICAgdGhpcy5yZW5kZXJQcmVsb2FkVmlldygpO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJBbGxWaWV3Q29tcG9uZW50cygpO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zICYmIHR5cGVvZiB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uQWZ0ZXJSb3dEZXRhaWxUb2dnbGUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgdGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucy5vbkFmdGVyUm93RGV0YWlsVG9nZ2xlKGUsIGFyZ3MpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX2V2ZW50SGFuZGxlci5zdWJzY3JpYmUodGhpcy5fYWRkb24ub25CZWZvcmVSb3dEZXRhaWxUb2dnbGUsIChlOiBhbnksIGFyZ3M6IHsgZ3JpZDogU2xpY2tHcmlkOyBpdGVtOiBhbnk7IH0pID0+IHtcclxuICAgICAgICAgIC8vIGJlZm9yZSB0b2dnbGluZyByb3cgZGV0YWlsLCB3ZSBuZWVkIHRvIGNyZWF0ZSBWaWV3IENvbXBvbmVudCBpZiBpdCBkb2Vzbid0IGV4aXN0XHJcbiAgICAgICAgICB0aGlzLm9uQmVmb3JlUm93RGV0YWlsVG9nZ2xlKGUsIGFyZ3MpO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zICYmIHR5cGVvZiB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uQmVmb3JlUm93RGV0YWlsVG9nZ2xlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMub25CZWZvcmVSb3dEZXRhaWxUb2dnbGUoZSwgYXJncyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5fZXZlbnRIYW5kbGVyLnN1YnNjcmliZSh0aGlzLl9hZGRvbi5vblJvd0JhY2tUb1ZpZXdwb3J0UmFuZ2UsIChlOiBhbnksIGFyZ3M6IHsgZ3JpZDogU2xpY2tHcmlkOyBpdGVtOiBhbnk7IHJvd0lkOiBudW1iZXI7IHJvd0luZGV4OiBudW1iZXI7IGV4cGFuZGVkUm93czogYW55W107IHJvd0lkc091dE9mVmlld3BvcnQ6IG51bWJlcltdOyB9KSA9PiB7XHJcbiAgICAgICAgICAvLyB3aGVuIHJvdyBpcyBiYWNrIHRvIHZpZXdwb3J0IHJhbmdlLCB3ZSB3aWxsIHJlLXJlbmRlciB0aGUgVmlldyBDb21wb25lbnQocylcclxuICAgICAgICAgIHRoaXMub25Sb3dCYWNrVG9WaWV3cG9ydFJhbmdlKGUsIGFyZ3MpO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zICYmIHR5cGVvZiB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uUm93QmFja1RvVmlld3BvcnRSYW5nZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uUm93QmFja1RvVmlld3BvcnRSYW5nZShlLCBhcmdzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLl9ldmVudEhhbmRsZXIuc3Vic2NyaWJlKHRoaXMuX2FkZG9uLm9uUm93T3V0T2ZWaWV3cG9ydFJhbmdlLCAoZTogYW55LCBhcmdzOiB7IGdyaWQ6IFNsaWNrR3JpZDsgaXRlbTogYW55OyByb3dJZDogbnVtYmVyOyByb3dJbmRleDogbnVtYmVyOyBleHBhbmRlZFJvd3M6IGFueVtdOyByb3dJZHNPdXRPZlZpZXdwb3J0OiBudW1iZXJbXTsgfSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMgJiYgdHlwZW9mIHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMub25Sb3dPdXRPZlZpZXdwb3J0UmFuZ2UgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgdGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucy5vblJvd091dE9mVmlld3BvcnRSYW5nZShlLCBhcmdzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gLS1cclxuICAgICAgICAvLyBob29rIHNvbWUgZXZlbnRzIG5lZWRlZCBieSB0aGUgUGx1Z2luIGl0c2VsZlxyXG5cclxuICAgICAgICAvLyB3ZSBuZWVkIHRvIHJlZHJhdyB0aGUgb3BlbiBkZXRhaWwgdmlld3MgaWYgd2UgY2hhbmdlIGNvbHVtbiBwb3NpdGlvbiAoY29sdW1uIHJlb3JkZXIpXHJcbiAgICAgICAgdGhpcy5fZXZlbnRIYW5kbGVyLnN1YnNjcmliZSh0aGlzLnNoYXJlZFNlcnZpY2Uuc2xpY2tHcmlkLm9uQ29sdW1uc1Jlb3JkZXJlZCwgdGhpcy5yZWRyYXdBbGxWaWV3Q29tcG9uZW50cy5iaW5kKHRoaXMpKTtcclxuXHJcbiAgICAgICAgLy8gb24gcm93IHNlbGVjdGlvbiBjaGFuZ2VkLCB3ZSBhbHNvIG5lZWQgdG8gcmVkcmF3XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMuZW5hYmxlUm93U2VsZWN0aW9uIHx8IHRoaXMuZ3JpZE9wdGlvbnMuZW5hYmxlQ2hlY2tib3hTZWxlY3Rvcikge1xyXG4gICAgICAgICAgdGhpcy5fZXZlbnRIYW5kbGVyLnN1YnNjcmliZSh0aGlzLnNoYXJlZFNlcnZpY2Uuc2xpY2tHcmlkLm9uU2VsZWN0ZWRSb3dzQ2hhbmdlZCwgdGhpcy5yZWRyYXdBbGxWaWV3Q29tcG9uZW50cy5iaW5kKHRoaXMpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIG9uIHNvcnQsIGFsbCByb3cgZGV0YWlsIGFyZSBjb2xsYXBzZWQgc28gd2UgY2FuIGRpc3Bvc2Ugb2YgYWxsIHRoZSBWaWV3cyBhcyB3ZWxsXHJcbiAgICAgICAgdGhpcy5fZXZlbnRIYW5kbGVyLnN1YnNjcmliZSh0aGlzLnNoYXJlZFNlcnZpY2Uuc2xpY2tHcmlkLm9uU29ydCwgdGhpcy5kaXNwb3NlQWxsVmlld0NvbXBvbmVudHMuYmluZCh0aGlzKSk7XHJcblxyXG4gICAgICAgIC8vIG9uIGZpbHRlciBjaGFuZ2VkLCB3ZSBuZWVkIHRvIHJlLXJlbmRlciBhbGwgVmlld3NcclxuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICB0aGlzLmV2ZW50UHViU3ViU2VydmljZS5zdWJzY3JpYmUoJ29uRmlsdGVyQ2hhbmdlZCcsIHRoaXMucmVkcmF3QWxsVmlld0NvbXBvbmVudHMuYmluZCh0aGlzKSlcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0aGlzLl9hZGRvbjtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqIFJlZHJhdyAocmUtcmVuZGVyKSBhbGwgdGhlIGV4cGFuZGVkIHJvdyBkZXRhaWwgVmlldyBDb21wb25lbnRzICovXHJcbiAgcmVkcmF3QWxsVmlld0NvbXBvbmVudHMoKSB7XHJcbiAgICB0aGlzLl92aWV3cy5mb3JFYWNoKChjb21wUmVmKSA9PiB7XHJcbiAgICAgIHRoaXMucmVkcmF3Vmlld0NvbXBvbmVudChjb21wUmVmKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIFJlbmRlciBhbGwgdGhlIGV4cGFuZGVkIHJvdyBkZXRhaWwgVmlldyBDb21wb25lbnRzICovXHJcbiAgcmVuZGVyQWxsVmlld0NvbXBvbmVudHMoKSB7XHJcbiAgICB0aGlzLl92aWV3cy5mb3JFYWNoKCh2aWV3KSA9PiB7XHJcbiAgICAgIGlmICh2aWV3ICYmIHZpZXcuZGF0YUNvbnRleHQpIHtcclxuICAgICAgICB0aGlzLnJlbmRlclZpZXdNb2RlbCh2aWV3LmRhdGFDb250ZXh0KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKiogUmVkcmF3IHRoZSBuZWNlc3NhcnkgVmlldyBDb21wb25lbnQgKi9cclxuICByZWRyYXdWaWV3Q29tcG9uZW50KGNyZWF0ZWRWaWV3OiBDcmVhdGVkVmlldykge1xyXG4gICAgY29uc3QgY29udGFpbmVyRWxlbWVudHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGAke1JPV19ERVRBSUxfQ09OVEFJTkVSX1BSRUZJWH0ke2NyZWF0ZWRWaWV3LmlkfWApO1xyXG4gICAgaWYgKGNvbnRhaW5lckVsZW1lbnRzICYmIGNvbnRhaW5lckVsZW1lbnRzLmxlbmd0aCA+PSAwKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyVmlld01vZGVsKGNyZWF0ZWRWaWV3LmRhdGFDb250ZXh0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBSZW5kZXIgKG9yIHJlLXJlbmRlcikgdGhlIFZpZXcgQ29tcG9uZW50IChSb3cgRGV0YWlsKSAqL1xyXG4gIHJlbmRlclByZWxvYWRWaWV3KCkge1xyXG4gICAgY29uc3QgY29udGFpbmVyRWxlbWVudHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGAke1BSRUxPQURfQ09OVEFJTkVSX1BSRUZJWH1gKTtcclxuICAgIGlmIChjb250YWluZXJFbGVtZW50cyAmJiBjb250YWluZXJFbGVtZW50cy5sZW5ndGggPj0gMCkge1xyXG4gICAgICB0aGlzLmFuZ3VsYXJVdGlsU2VydmljZS5jcmVhdGVBbmd1bGFyQ29tcG9uZW50QXBwZW5kVG9Eb20odGhpcy5fcHJlbG9hZENvbXBvbmVudCwgY29udGFpbmVyRWxlbWVudHNbY29udGFpbmVyRWxlbWVudHMubGVuZ3RoIC0gMV0sIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIFJlbmRlciAob3IgcmUtcmVuZGVyKSB0aGUgVmlldyBDb21wb25lbnQgKFJvdyBEZXRhaWwpICovXHJcbiAgcmVuZGVyVmlld01vZGVsKGl0ZW06IGFueSk6IENyZWF0ZWRWaWV3IHwgdW5kZWZpbmVkIHtcclxuICAgIGNvbnN0IGNvbnRhaW5lckVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShgJHtST1dfREVUQUlMX0NPTlRBSU5FUl9QUkVGSVh9JHtpdGVtW3RoaXMuZGF0YXNldElkUHJvcE5hbWVdfWApO1xyXG4gICAgaWYgKGNvbnRhaW5lckVsZW1lbnRzICYmIGNvbnRhaW5lckVsZW1lbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgY29tcG9uZW50T3V0cHV0ID0gdGhpcy5hbmd1bGFyVXRpbFNlcnZpY2UuY3JlYXRlQW5ndWxhckNvbXBvbmVudEFwcGVuZFRvRG9tKHRoaXMuX3ZpZXdDb21wb25lbnQsIGNvbnRhaW5lckVsZW1lbnRzW2NvbnRhaW5lckVsZW1lbnRzLmxlbmd0aCAtIDFdLCB0cnVlKTtcclxuICAgICAgaWYgKGNvbXBvbmVudE91dHB1dCAmJiBjb21wb25lbnRPdXRwdXQuY29tcG9uZW50UmVmICYmIGNvbXBvbmVudE91dHB1dC5jb21wb25lbnRSZWYuaW5zdGFuY2UpIHtcclxuICAgICAgICAvLyBwYXNzIGEgZmV3IHByb3BlcnRpZXMgdG8gdGhlIFJvdyBEZXRhaWwgdGVtcGxhdGUgY29tcG9uZW50XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbihjb21wb25lbnRPdXRwdXQuY29tcG9uZW50UmVmLmluc3RhbmNlLCB7XHJcbiAgICAgICAgICBtb2RlbDogaXRlbSxcclxuICAgICAgICAgIGFkZG9uOiB0aGlzLl9hZGRvbixcclxuICAgICAgICAgIGdyaWQ6IHRoaXMuc2hhcmVkU2VydmljZS5zbGlja0dyaWQsXHJcbiAgICAgICAgICBkYXRhVmlldzogdGhpcy5zaGFyZWRTZXJ2aWNlLmRhdGFWaWV3LFxyXG4gICAgICAgICAgcGFyZW50OiB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zICYmIHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMucGFyZW50LFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zdCB2aWV3T2JqID0gdGhpcy5fdmlld3MuZmluZChvYmogPT4gb2JqLmlkID09PSBpdGVtW3RoaXMuZGF0YXNldElkUHJvcE5hbWVdKTtcclxuICAgICAgICBpZiAodmlld09iaikge1xyXG4gICAgICAgICAgdmlld09iai5jb21wb25lbnRSZWYgPSBjb21wb25lbnRPdXRwdXQuY29tcG9uZW50UmVmO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdmlld09iajtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIC8vIC0tXHJcbiAgLy8gcHJpdmF0ZSBmdW5jdGlvbnNcclxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiAgcHJpdmF0ZSBkaXNwb3NlVmlld0NvbXBvbmVudChleHBhbmRlZFZpZXc6IENyZWF0ZWRWaWV3KSB7XHJcbiAgICBjb25zdCBjb21wUmVmID0gZXhwYW5kZWRWaWV3Py5jb21wb25lbnRSZWY7XHJcbiAgICBpZiAoY29tcFJlZikge1xyXG4gICAgICB0aGlzLmFwcFJlZi5kZXRhY2hWaWV3KGNvbXBSZWYuaG9zdFZpZXcpO1xyXG4gICAgICBpZiAoY29tcFJlZj8uZGVzdHJveSkge1xyXG4gICAgICAgIGNvbXBSZWYuZGVzdHJveSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBleHBhbmRlZFZpZXc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIG5vdGlmeSB0aGUgb25Bc3luY1Jlc3BvbnNlIHdpdGggdGhlIFwiYXJncy5pdGVtXCIgKHJlcXVpcmVkIHByb3BlcnR5KVxyXG4gICAqIHRoZSBwbHVnaW4gd2lsbCB0aGVuIHVzZSBpdGVtIHRvIHBvcHVsYXRlIHRoZSByb3cgZGV0YWlsIHBhbmVsIHdpdGggdGhlIFwicG9zdFRlbXBsYXRlXCJcclxuICAgKiBAcGFyYW0gaXRlbVxyXG4gICAqL1xyXG4gIHByaXZhdGUgbm90aWZ5VGVtcGxhdGUoaXRlbTogYW55KSB7XHJcbiAgICBpZiAodGhpcy5fYWRkb24pIHtcclxuICAgICAgdGhpcy5fYWRkb24ub25Bc3luY1Jlc3BvbnNlLm5vdGlmeSh7IGl0ZW0gfSwgdW5kZWZpbmVkLCB0aGlzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uIFByb2Nlc3NpbmcsIHdlIHdpbGwgbm90aWZ5IHRoZSBwbHVnaW4gd2l0aCB0aGUgbmV3IGl0ZW0gZGV0YWlsIG9uY2UgYmFja2VuZCBzZXJ2ZXIgY2FsbCBjb21wbGV0ZXNcclxuICAgKiBAcGFyYW0gaXRlbVxyXG4gICAqL1xyXG4gIHByaXZhdGUgYXN5bmMgb25Qcm9jZXNzaW5nKGl0ZW06IGFueSkge1xyXG4gICAgaWYgKGl0ZW0gJiYgdHlwZW9mIHRoaXMuX3VzZXJQcm9jZXNzRm4gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgbGV0IGF3YWl0ZWRJdGVtRGV0YWlsOiBhbnk7XHJcbiAgICAgIGNvbnN0IHVzZXJQcm9jZXNzRm4gPSB0aGlzLl91c2VyUHJvY2Vzc0ZuKGl0ZW0pO1xyXG5cclxuICAgICAgLy8gd2FpdCBmb3IgdGhlIFwidXNlclByb2Nlc3NGblwiLCBvbmNlIHJlc29sdmVkIHdlIHdpbGwgc2F2ZSBpdCBpbnRvIHRoZSBcImNvbGxlY3Rpb25cIlxyXG4gICAgICBjb25zdCByZXNwb25zZTogYW55IHwgYW55W10gPSBhd2FpdCB1c2VyUHJvY2Vzc0ZuO1xyXG5cclxuICAgICAgaWYgKHJlc3BvbnNlLmhhc093blByb3BlcnR5KHRoaXMuZGF0YXNldElkUHJvcE5hbWUpKSB7XHJcbiAgICAgICAgYXdhaXRlZEl0ZW1EZXRhaWwgPSByZXNwb25zZTsgLy8gZnJvbSBQcm9taXNlXHJcbiAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UgaW5zdGFuY2VvZiBPYnNlcnZhYmxlIHx8IHJlc3BvbnNlIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgIGF3YWl0ZWRJdGVtRGV0YWlsID0gYXdhaXQgY2FzdE9ic2VydmFibGVUb1Byb21pc2UodGhpcy5yeGpzIGFzIFJ4SnNGYWNhZGUsIHJlc3BvbnNlKTsgLy8gZnJvbSBBbmd1bGFyLWh0dHAtY2xpZW50XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghYXdhaXRlZEl0ZW1EZXRhaWwgfHwgIWF3YWl0ZWRJdGVtRGV0YWlsLmhhc093blByb3BlcnR5KHRoaXMuZGF0YXNldElkUHJvcE5hbWUpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBbQW5ndWxhci1TbGlja2dyaWRdIGNvdWxkIG5vdCBwcm9jZXNzIHRoZSBSb3cgRGV0YWlsLCB5b3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB5b3VyIFwicHJvY2Vzc1wiIGNhbGxiYWNrXHJcbiAgICAgICAgICAoYSBQcm9taXNlIG9yIGFuIEh0dHBDbGllbnQgY2FsbCByZXR1cm5pbmcgYW4gT2JzZXJ2YWJsZSkgcmV0dXJucyBhbiBpdGVtIG9iamVjdCB0aGF0IGhhcyBhbiBcIiR7dGhpcy5kYXRhc2V0SWRQcm9wTmFtZX1cIiBwcm9wZXJ0eWApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBub3RpZnkgdGhlIHBsdWdpbiB3aXRoIHRoZSBuZXcgaXRlbSBkZXRhaWxzXHJcbiAgICAgIHRoaXMubm90aWZ5VGVtcGxhdGUoYXdhaXRlZEl0ZW1EZXRhaWwgfHwge30pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSnVzdCBiZWZvcmUgdGhlIHJvdyBnZXQgZXhwYW5kZWQgb3IgY29sbGFwc2VkIHdlIHdpbGwgZG8gdGhlIGZvbGxvd2luZ1xyXG4gICAqIEZpcnN0IGRldGVybWluZSBpZiB0aGUgcm93IGlzIGV4cGFuZGluZyBvciBjb2xsYXBzaW5nLFxyXG4gICAqIGlmIGl0J3MgZXhwYW5kaW5nIHdlIHdpbGwgYWRkIGl0IHRvIG91ciBWaWV3IENvbXBvbmVudHMgcmVmZXJlbmNlIGFycmF5IGlmIHdlIGRvbid0IGFscmVhZHkgaGF2ZSBpdFxyXG4gICAqIG9yIGlmIGl0J3MgY29sbGFwc2luZyB3ZSB3aWxsIHJlbW92ZSBpdCBmcm9tIG91ciBWaWV3IENvbXBvbmVudHMgcmVmZXJlbmNlIGFycmF5XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvbkJlZm9yZVJvd0RldGFpbFRvZ2dsZShlOiBFdmVudCwgYXJnczogeyBncmlkOiBTbGlja0dyaWQ7IGl0ZW06IGFueTsgfSkge1xyXG4gICAgLy8gZXhwYW5kaW5nXHJcbiAgICBpZiAoYXJncyAmJiBhcmdzLml0ZW0gJiYgYXJncy5pdGVtLl9fY29sbGFwc2VkKSB7XHJcbiAgICAgIC8vIGV4cGFuZGluZyByb3cgZGV0YWlsXHJcbiAgICAgIGNvbnN0IHZpZXdJbmZvOiBDcmVhdGVkVmlldyA9IHtcclxuICAgICAgICBpZDogYXJncy5pdGVtW3RoaXMuZGF0YXNldElkUHJvcE5hbWVdLFxyXG4gICAgICAgIGRhdGFDb250ZXh0OiBhcmdzLml0ZW1cclxuICAgICAgfTtcclxuICAgICAgY29uc3QgaWRQcm9wTmFtZSA9IHRoaXMuZ3JpZE9wdGlvbnMuZGF0YXNldElkUHJvcGVydHlOYW1lIHx8ICdpZCc7XHJcbiAgICAgIGFkZFRvQXJyYXlXaGVuTm90RXhpc3RzKHRoaXMuX3ZpZXdzLCB2aWV3SW5mbywgaWRQcm9wTmFtZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBjb2xsYXBzaW5nLCBzbyBkaXNwb3NlIG9mIHRoZSBWaWV3L0NvbXBvbmVudFxyXG4gICAgICBjb25zdCBmb3VuZFZpZXdJbmRleCA9IHRoaXMuX3ZpZXdzLmZpbmRJbmRleCgodmlldzogQ3JlYXRlZFZpZXcpID0+IHZpZXcuaWQgPT09IGFyZ3MuaXRlbVt0aGlzLmRhdGFzZXRJZFByb3BOYW1lXSk7XHJcbiAgICAgIGlmIChmb3VuZFZpZXdJbmRleCA+PSAwICYmIHRoaXMuX3ZpZXdzLmhhc093blByb3BlcnR5KGZvdW5kVmlld0luZGV4KSkge1xyXG4gICAgICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLl92aWV3c1tmb3VuZFZpZXdJbmRleF0uY29tcG9uZW50UmVmO1xyXG4gICAgICAgIGlmIChjb21wUmVmKSB7XHJcbiAgICAgICAgICB0aGlzLmFwcFJlZi5kZXRhY2hWaWV3KGNvbXBSZWYuaG9zdFZpZXcpO1xyXG4gICAgICAgICAgY29tcFJlZi5kZXN0cm95KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3ZpZXdzLnNwbGljZShmb3VuZFZpZXdJbmRleCwgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBXaGVuIFJvdyBjb21lcyBiYWNrIHRvIFZpZXdwb3J0IFJhbmdlLCB3ZSBuZWVkIHRvIHJlZHJhdyB0aGUgVmlldyAqL1xyXG4gIHByaXZhdGUgb25Sb3dCYWNrVG9WaWV3cG9ydFJhbmdlKGU6IEV2ZW50LCBhcmdzOiB7IGdyaWQ6IFNsaWNrR3JpZDsgaXRlbTogYW55OyByb3dJZDogbnVtYmVyOyByb3dJbmRleDogbnVtYmVyOyBleHBhbmRlZFJvd3M6IGFueVtdOyByb3dJZHNPdXRPZlZpZXdwb3J0OiBudW1iZXJbXTsgfSkge1xyXG4gICAgaWYgKGFyZ3MgJiYgYXJncy5pdGVtKSB7XHJcbiAgICAgIHRoaXMuX3ZpZXdzLmZvckVhY2goKHZpZXcpID0+IHtcclxuICAgICAgICBpZiAodmlldy5pZCA9PT0gYXJncy5pdGVtW3RoaXMuZGF0YXNldElkUHJvcE5hbWVdKSB7XHJcbiAgICAgICAgICB0aGlzLnJlZHJhd1ZpZXdDb21wb25lbnQodmlldyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
342
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93RGV0YWlsVmlld0V4dGVuc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9hbmd1bGFyLXNsaWNrZ3JpZC9leHRlbnNpb25zL3Jvd0RldGFpbFZpZXdFeHRlbnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sdUNBQXVDLENBQUM7QUFDL0MsT0FBTywyQ0FBMkMsQ0FBQztBQUVuRCxPQUFPLEVBQUUsY0FBYyxFQUFnQixVQUFVLEVBQTBCLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsdUJBQXVCLEVBR3ZCLFVBQVUsRUFDVixhQUFhLEdBS2QsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsVUFBVSxFQUF5QixNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEtBQUssVUFBVSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxNQUFNLFNBQVMsR0FBSSxVQUFrQixDQUFDLFNBQVMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLDhCQUE4QjtBQUc5RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUtsRSxNQUFNLDJCQUEyQixHQUFHLFlBQVksQ0FBQztBQUNqRCxNQUFNLHdCQUF3QixHQUFHLG1CQUFtQixDQUFDO0FBU3JELE1BQU0sT0FBTyxzQkFBc0I7SUFXakMsWUFDbUIsa0JBQXNDLEVBQ3RDLE1BQXNCLEVBQ3RCLGtCQUFzQyxFQUN0QyxhQUE0QixFQUNyQyxJQUFpQjtRQUpSLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtR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WUFuQmxCLGNBQWM7WUFhZCxrQkFBa0I7WUFOekIsYUFBYTtZQURiLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3NsaWNrZ3JpZC9wbHVnaW5zL3NsaWNrLnJvd2RldGFpbHZpZXcnO1xyXG5pbXBvcnQgJ3NsaWNrZ3JpZC9wbHVnaW5zL3NsaWNrLnJvd3NlbGVjdGlvbm1vZGVsJztcclxuXHJcbmltcG9ydCB7IEFwcGxpY2F0aW9uUmVmLCBDb21wb25lbnRSZWYsIEluamVjdGFibGUsIFR5cGUsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBhZGRUb0FycmF5V2hlbk5vdEV4aXN0cyxcclxuICBjYXN0T2JzZXJ2YWJsZVRvUHJvbWlzZSxcclxuICBDb2x1bW4sXHJcbiAgUm93RGV0YWlsVmlld0V4dGVuc2lvbiBhcyBVbml2ZXJzYWxSb3dEZXRhaWxWaWV3RXh0ZW5zaW9uLFxyXG4gIFJ4SnNGYWNhZGUsXHJcbiAgU2hhcmVkU2VydmljZSxcclxuICBTbGlja0V2ZW50SGFuZGxlcixcclxuICBTbGlja0dyaWQsXHJcbiAgU2xpY2tOYW1lc3BhY2UsXHJcbiAgU2xpY2tSb3dEZXRhaWxWaWV3LFxyXG59IGZyb20gJ0BzbGlja2dyaWQtdW5pdmVyc2FsL2NvbW1vbic7XHJcbmltcG9ydCB7IEV2ZW50UHViU3ViU2VydmljZSB9IGZyb20gJ0BzbGlja2dyaWQtdW5pdmVyc2FsL2V2ZW50LXB1Yi1zdWInO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0ICogYXMgRE9NUHVyaWZ5XyBmcm9tICdkb21wdXJpZnknO1xyXG5jb25zdCBET01QdXJpZnkgPSAoRE9NUHVyaWZ5XyBhcyBhbnkpWydkZWZhdWx0J10gfHwgRE9NUHVyaWZ5XzsgLy8gcGF0Y2ggdG8gZml4IHJvbGx1cCB0byB3b3JrXHJcblxyXG5pbXBvcnQgeyBHcmlkT3B0aW9uLCBSb3dEZXRhaWxWaWV3IH0gZnJvbSAnLi4vbW9kZWxzL2luZGV4JztcclxuaW1wb3J0IHsgQW5ndWxhclV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYW5ndWxhclV0aWwuc2VydmljZSc7XHJcbmltcG9ydCB7IHVuc3Vic2NyaWJlQWxsT2JzZXJ2YWJsZXMgfSBmcm9tICcuLi9zZXJ2aWNlcy91dGlsaXRpZXMnO1xyXG5cclxuLy8gdXNpbmcgZXh0ZXJuYWwgbm9uLXR5cGVkIGpzIGxpYnJhcmllc1xyXG5kZWNsYXJlIGNvbnN0IFNsaWNrOiBTbGlja05hbWVzcGFjZTtcclxuXHJcbmNvbnN0IFJPV19ERVRBSUxfQ09OVEFJTkVSX1BSRUZJWCA9ICdjb250YWluZXJfJztcclxuY29uc3QgUFJFTE9BRF9DT05UQUlORVJfUFJFRklYID0gJ2NvbnRhaW5lcl9sb2FkaW5nJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlZFZpZXcge1xyXG4gIGlkOiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgZGF0YUNvbnRleHQ6IGFueTtcclxuICBjb21wb25lbnRSZWY/OiBDb21wb25lbnRSZWY8YW55PjtcclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUm93RGV0YWlsVmlld0V4dGVuc2lvbiBpbXBsZW1lbnRzIFVuaXZlcnNhbFJvd0RldGFpbFZpZXdFeHRlbnNpb24ge1xyXG4gIHJvd0RldGFpbENvbnRhaW5lciE6IFZpZXdDb250YWluZXJSZWY7XHJcbiAgcHJpdmF0ZSBfYWRkb246IGFueTtcclxuICBwcml2YXRlIF9hZGRvbk9wdGlvbnMhOiBSb3dEZXRhaWxWaWV3IHwgbnVsbDtcclxuICBwcml2YXRlIF9ldmVudEhhbmRsZXI6IFNsaWNrRXZlbnRIYW5kbGVyO1xyXG4gIHByaXZhdGUgX3ByZWxvYWRDb21wb25lbnQ6IFR5cGU8b2JqZWN0PiB8IHVuZGVmaW5lZDtcclxuICBwcml2YXRlIF92aWV3czogQ3JlYXRlZFZpZXdbXSA9IFtdO1xyXG4gIHByaXZhdGUgX3ZpZXdDb21wb25lbnQhOiBUeXBlPG9iamVjdD47XHJcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBwcml2YXRlIF91c2VyUHJvY2Vzc0ZuITogKGl0ZW06IGFueSkgPT4gUHJvbWlzZTxhbnk+IHwgT2JzZXJ2YWJsZTxhbnk+IHwgU3ViamVjdDxhbnk+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYW5ndWxhclV0aWxTZXJ2aWNlOiBBbmd1bGFyVXRpbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFwcFJlZjogQXBwbGljYXRpb25SZWYsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGV2ZW50UHViU3ViU2VydmljZTogRXZlbnRQdWJTdWJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzaGFyZWRTZXJ2aWNlOiBTaGFyZWRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByeGpzPzogUnhKc0ZhY2FkZSxcclxuICApIHtcclxuICAgIHRoaXMuX2V2ZW50SGFuZGxlciA9IG5ldyBTbGljay5FdmVudEhhbmRsZXIoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IGRhdGFzZXRJZFByb3BOYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5ncmlkT3B0aW9ucy5kYXRhc2V0SWRQcm9wZXJ0eU5hbWUgfHwgJ2lkJztcclxuICB9XHJcblxyXG4gIGdldCBldmVudEhhbmRsZXIoKTogU2xpY2tFdmVudEhhbmRsZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50SGFuZGxlcjtcclxuICB9XHJcblxyXG4gIGdldCBncmlkT3B0aW9ucygpOiBHcmlkT3B0aW9uIHtcclxuICAgIHJldHVybiAodGhpcy5zaGFyZWRTZXJ2aWNlPy5ncmlkT3B0aW9ucyA/PyB7fSkgYXMgR3JpZE9wdGlvbjtcclxuICB9XHJcblxyXG4gIGdldCByb3dEZXRhaWxWaWV3T3B0aW9ucygpOiBSb3dEZXRhaWxWaWV3IHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLmdyaWRPcHRpb25zLnJvd0RldGFpbFZpZXc7XHJcbiAgfVxyXG5cclxuICBhZGRSeEpzUmVzb3VyY2UocnhqczogUnhKc0ZhY2FkZSkge1xyXG4gICAgdGhpcy5yeGpzID0gcnhqcztcclxuICB9XHJcblxyXG4gIC8qKiBEaXNwb3NlIG9mIHRoZSBSb3dEZXRhaWxWaWV3IEV4dGVuc2lvbiAqL1xyXG4gIGRpc3Bvc2UoKSB7XHJcbiAgICAvLyB1bnN1YnNjcmliZSBhbGwgU2xpY2tHcmlkIGV2ZW50c1xyXG4gICAgdGhpcy5fZXZlbnRIYW5kbGVyLnVuc3Vic2NyaWJlQWxsKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuX2FkZG9uICYmIHRoaXMuX2FkZG9uLmRlc3Ryb3kpIHtcclxuICAgICAgdGhpcy5fYWRkb24uZGVzdHJveSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fYWRkb25PcHRpb25zID0gbnVsbDtcclxuXHJcbiAgICAvLyBhbHNvIHVuc3Vic2NyaWJlIGFsbCBSeEpTIHN1YnNjcmlwdGlvbnNcclxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMgPSB1bnN1YnNjcmliZUFsbE9ic2VydmFibGVzKHRoaXMuX3N1YnNjcmlwdGlvbnMpO1xyXG4gICAgdGhpcy5kaXNwb3NlQWxsVmlld0NvbXBvbmVudHMoKTtcclxuICB9XHJcblxyXG4gIC8qKiBEaXNwb3NlIG9mIGFsbCB0aGUgb3BlbmVkIFJvdyBEZXRhaWwgUGFuZWxzIEFuZ3VsYXIgVmlldyBDb21wb25lbnRzICovXHJcbiAgZGlzcG9zZUFsbFZpZXdDb21wb25lbnRzKCkge1xyXG4gICAgdGhpcy5fdmlld3MuZm9yRWFjaCgoY29tcFJlZikgPT4gdGhpcy5kaXNwb3NlVmlld0NvbXBvbmVudChjb21wUmVmKSk7XHJcbiAgICB0aGlzLl92aWV3cyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIHRoZSBwbHVnaW4gYmVmb3JlIHRoZSBHcmlkIGNyZWF0aW9uLCBlbHNlIGl0IHdpbGwgYmVoYXZlIG9kZGx5LlxyXG4gICAqIE1vc3RseSBiZWNhdXNlIHRoZSBjb2x1bW4gZGVmaW5pdGlvbnMgbWlnaHQgY2hhbmdlIGFmdGVyIHRoZSBncmlkIGNyZWF0aW9uXHJcbiAgICovXHJcbiAgY3JlYXRlKGNvbHVtbkRlZmluaXRpb25zOiBDb2x1bW5bXSwgZ3JpZE9wdGlvbnM6IEdyaWRPcHRpb24pOiBTbGlja1Jvd0RldGFpbFZpZXcgfCBudWxsIHtcclxuICAgIGlmIChjb2x1bW5EZWZpbml0aW9ucyAmJiBncmlkT3B0aW9ucykge1xyXG4gICAgICBpZiAoIWdyaWRPcHRpb25zLnJvd0RldGFpbFZpZXcpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBSb3cgRGV0YWlsIFZpZXcgcmVxdWlyZXMgb3B0aW9ucyB0byBiZSBwYXNzZWQgdmlhIHRoZSBcInJvd0RldGFpbFZpZXdcIiBwcm9wZXJ0eSBvZiB0aGUgR3JpZCBPcHRpb25zJyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChncmlkT3B0aW9ucz8ucm93RGV0YWlsVmlldykge1xyXG4gICAgICAgIGlmICghdGhpcy5fYWRkb24pIHtcclxuICAgICAgICAgIGlmICh0eXBlb2YgZ3JpZE9wdGlvbnMucm93RGV0YWlsVmlldy5wcm9jZXNzID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8ga2VlcCB0aGUgdXNlciBcInByb2Nlc3NcIiBtZXRob2QgYW5kIHJlcGxhY2UgaXQgd2l0aCBvdXIgb3duIGV4ZWN1dGlvbiBtZXRob2RcclxuICAgICAgICAgICAgLy8gd2UgZG8gdGhpcyBiZWNhdXNlIHdoZW4gd2UgZ2V0IHRoZSBpdGVtIGRldGFpbCwgd2UgbmVlZCB0byBjYWxsIFwib25Bc3luY1Jlc3BvbnNlLm5vdGlmeVwiIGZvciB0aGUgcGx1Z2luIHRvIHdvcmtcclxuICAgICAgICAgICAgdGhpcy5fdXNlclByb2Nlc3NGbiA9IGdyaWRPcHRpb25zLnJvd0RldGFpbFZpZXcucHJvY2VzcyBhcyAoaXRlbTogYW55KSA9PiBPYnNlcnZhYmxlPGFueT47ICAgICAgICAgICAgICAgIC8vIGtlZXAgdXNlcidzIHByb2Nlc3MgbWV0aG9kXHJcbiAgICAgICAgICAgIGdyaWRPcHRpb25zLnJvd0RldGFpbFZpZXcucHJvY2VzcyA9IChpdGVtKSA9PiB0aGlzLm9uUHJvY2Vzc2luZyhpdGVtKTsgIC8vIHJlcGxhY2UgcHJvY2VzcyBtZXRob2QgJiBydW4gb3VyIGludGVybmFsIG9uZVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgbmVlZCB0byBwcm92aWRlIGEgXCJwcm9jZXNzXCIgZnVuY3Rpb24gZm9yIHRoZSBSb3cgRGV0YWlsIEV4dGVuc2lvbiB0byB3b3JrIHByb3Blcmx5Jyk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gbG9hZCB0aGUgUHJlbG9hZCAmIFJvd0RldGFpbCBUZW1wbGF0ZXMgKGNvdWxkIGJlIHN0cmFpZ2h0IEhUTUwgb3IgQW5ndWxhciBWaWV3L1ZpZXdNb2RlbClcclxuICAgICAgICAgIC8vIHdoZW4gdGhvc2UgYXJlIEFuZ3VsYXIgVmlldy9WaWV3TW9kZWwsIHdlIG5lZWQgdG8gY3JlYXRlIFZpZXcgQ29tcG9uZW50ICYgcHJvdmlkZSB0aGUgaHRtbCBjb250YWluZXJzIHRvIHRoZSBQbHVnaW4gKHByZVRlbXBsYXRlL3Bvc3RUZW1wbGF0ZSBtZXRob2RzKVxyXG4gICAgICAgICAgaWYgKCFncmlkT3B0aW9ucy5yb3dEZXRhaWxWaWV3LnByZVRlbXBsYXRlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3ByZWxvYWRDb21wb25lbnQgPSBncmlkT3B0aW9ucz8ucm93RGV0YWlsVmlldz8ucHJlbG9hZENvbXBvbmVudDtcclxuICAgICAgICAgICAgZ3JpZE9wdGlvbnMucm93RGV0YWlsVmlldy5wcmVUZW1wbGF0ZSA9ICgpID0+IERPTVB1cmlmeS5zYW5pdGl6ZShgPGRpdiBjbGFzcz1cIiR7UFJFTE9BRF9DT05UQUlORVJfUFJFRklYfVwiPjwvZGl2PmApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKCFncmlkT3B0aW9ucy5yb3dEZXRhaWxWaWV3LnBvc3RUZW1wbGF0ZSkge1xyXG4gICAgICAgICAgICB0aGlzLl92aWV3Q29tcG9uZW50ID0gZ3JpZE9wdGlvbnM/LnJvd0RldGFpbFZpZXc/LnZpZXdDb21wb25lbnQ7XHJcbiAgICAgICAgICAgIGdyaWRPcHRpb25zLnJvd0RldGFpbFZpZXcucG9zdFRlbXBsYXRlID0gKGl0ZW1EZXRhaWw6IGFueSkgPT4gRE9NUHVyaWZ5LnNhbml0aXplKGA8ZGl2IGNsYXNzPVwiJHtST1dfREVUQUlMX0NPTlRBSU5FUl9QUkVGSVh9JHtpdGVtRGV0YWlsW3RoaXMuZGF0YXNldElkUHJvcE5hbWVdfVwiPjwvZGl2PmApO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIGZpbmFsbHkgcmVnaXN0ZXIgdGhlIFJvdyBEZXRhaWwgVmlldyBQbHVnaW5cclxuICAgICAgICAgIHRoaXMuX2FkZG9uT3B0aW9ucyA9IGdyaWRPcHRpb25zLnJvd0RldGFpbFZpZXc7XHJcbiAgICAgICAgICB0aGlzLl9hZGRvbiA9IG5ldyBTbGljay5QbHVnaW5zLlJvd0RldGFpbFZpZXcodGhpcy5fYWRkb25PcHRpb25zKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaWNvbkNvbHVtbjogQ29sdW1uID0gdGhpcy5fYWRkb24uZ2V0Q29sdW1uRGVmaW5pdGlvbigpO1xyXG4gICAgICAgIGlmICh0eXBlb2YgaWNvbkNvbHVtbiA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgIGljb25Db2x1bW4uZXhjbHVkZUZyb21FeHBvcnQgPSB0cnVlO1xyXG4gICAgICAgICAgaWNvbkNvbHVtbi5leGNsdWRlRnJvbUNvbHVtblBpY2tlciA9IHRydWU7XHJcbiAgICAgICAgICBpY29uQ29sdW1uLmV4Y2x1ZGVGcm9tR3JpZE1lbnUgPSB0cnVlO1xyXG4gICAgICAgICAgaWNvbkNvbHVtbi5leGNsdWRlRnJvbVF1ZXJ5ID0gdHJ1ZTtcclxuICAgICAgICAgIGljb25Db2x1bW4uZXhjbHVkZUZyb21IZWFkZXJNZW51ID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAvLyBjb2x1bW4gaW5kZXggcG9zaXRpb24gaW4gdGhlIGdyaWRcclxuICAgICAgICAgIGNvbnN0IGNvbHVtblBvc2l0aW9uID0gZ3JpZE9wdGlvbnMgJiYgZ3JpZE9wdGlvbnMucm93RGV0YWlsVmlldyAmJiBncmlkT3B0aW9ucy5yb3dEZXRhaWxWaWV3LmNvbHVtbkluZGV4UG9zaXRpb24gfHwgMDtcclxuICAgICAgICAgIGlmIChjb2x1bW5Qb3NpdGlvbiA+IDApIHtcclxuICAgICAgICAgICAgY29sdW1uRGVmaW5pdGlvbnMuc3BsaWNlKGNvbHVtblBvc2l0aW9uLCAwLCBpY29uQ29sdW1uKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbHVtbkRlZmluaXRpb25zLnVuc2hpZnQoaWNvbkNvbHVtbik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0aGlzLl9hZGRvbjtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqIEdldCB0aGUgaW5zdGFuY2Ugb2YgdGhlIFNsaWNrR3JpZCBhZGRvbiAoY29udHJvbCBvciBwbHVnaW4pLiAqL1xyXG4gIGdldEFkZG9uSW5zdGFuY2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRkb247XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlcihyb3dTZWxlY3Rpb25QbHVnaW4/OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnNoYXJlZFNlcnZpY2U/LnNsaWNrR3JpZCAmJiB0aGlzLnNoYXJlZFNlcnZpY2UuZ3JpZE9wdGlvbnMpIHtcclxuICAgICAgLy8gdGhlIHBsdWdpbiBoYXMgdG8gYmUgY3JlYXRlZCBCRUZPUkUgdGhlIGdyaWQgKGVsc2UgaXQgYmVoYXZlcyBvZGRseSksIGJ1dCB3ZSBjYW4gb25seSB3YXRjaCBncmlkIGV2ZW50cyBBRlRFUiB0aGUgZ3JpZCBpcyBjcmVhdGVkXHJcbiAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5zbGlja0dyaWQucmVnaXN0ZXJQbHVnaW4odGhpcy5fYWRkb24pO1xyXG5cclxuICAgICAgLy8gdGhpcyBhbHNvIHJlcXVpcmVzIHRoZSBSb3cgU2VsZWN0aW9uIE1vZGVsIHRvIGJlIHJlZ2lzdGVyZWQgYXMgd2VsbFxyXG4gICAgICBpZiAoIXJvd1NlbGVjdGlvblBsdWdpbiB8fCAhdGhpcy5zaGFyZWRTZXJ2aWNlLnNsaWNrR3JpZC5nZXRTZWxlY3Rpb25Nb2RlbCgpKSB7XHJcbiAgICAgICAgcm93U2VsZWN0aW9uUGx1Z2luID0gbmV3IFNsaWNrLlJvd1NlbGVjdGlvbk1vZGVsKHRoaXMuc2hhcmVkU2VydmljZS5ncmlkT3B0aW9ucy5yb3dTZWxlY3Rpb25PcHRpb25zIHx8IHsgc2VsZWN0QWN0aXZlUm93OiB0cnVlIH0pO1xyXG4gICAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5zbGlja0dyaWQuc2V0U2VsZWN0aW9uTW9kZWwocm93U2VsZWN0aW9uUGx1Z2luKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gaG9vayBhbGwgZXZlbnRzXHJcbiAgICAgIGlmICh0aGlzLnNoYXJlZFNlcnZpY2Uuc2xpY2tHcmlkICYmIHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMpIHtcclxuICAgICAgICBpZiAodGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucy5vbkV4dGVuc2lvblJlZ2lzdGVyZWQpIHtcclxuICAgICAgICAgIHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMub25FeHRlbnNpb25SZWdpc3RlcmVkKHRoaXMuX2FkZG9uKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fZXZlbnRIYW5kbGVyLnN1YnNjcmliZSh0aGlzLl9hZGRvbi5vbkFzeW5jUmVzcG9uc2UsIChlOiBhbnksIGFyZ3M6IHsgaXRlbTogYW55OyBkZXRhaWxWaWV3OiBSb3dEZXRhaWxWaWV3IH0pID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zICYmIHR5cGVvZiB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uQXN5bmNSZXNwb25zZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uQXN5bmNSZXNwb25zZShlLCBhcmdzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLl9ldmVudEhhbmRsZXIuc3Vic2NyaWJlKHRoaXMuX2FkZG9uLm9uQXN5bmNFbmRVcGRhdGUsIChlOiBhbnksIGFyZ3M6IHsgZ3JpZDogU2xpY2tHcmlkOyBpdGVtOiBhbnk7IH0pID0+IHtcclxuICAgICAgICAgIC8vIHRyaWdnZXJzIGFmdGVyIGJhY2tlbmQgY2FsbGVkIFwib25Bc3luY1Jlc3BvbnNlLm5vdGlmeSgpXCJcclxuICAgICAgICAgIHRoaXMucmVuZGVyVmlld01vZGVsKGFyZ3MgJiYgYXJncy5pdGVtKTtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucyAmJiB0eXBlb2YgdGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucy5vbkFzeW5jRW5kVXBkYXRlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMub25Bc3luY0VuZFVwZGF0ZShlLCBhcmdzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLl9ldmVudEhhbmRsZXIuc3Vic2NyaWJlKHRoaXMuX2FkZG9uLm9uQWZ0ZXJSb3dEZXRhaWxUb2dnbGUsIChlOiBhbnksIGFyZ3M6IHsgZ3JpZDogU2xpY2tHcmlkOyBpdGVtOiBhbnk7IGV4cGFuZGVkUm93czogbnVtYmVyW107IH0pID0+IHtcclxuICAgICAgICAgIC8vIGRpc3BsYXkgcHJlbG9hZCB0ZW1wbGF0ZSAmIHJlLXJlbmRlciBhbGwgdGhlIG90aGVyIERldGFpbCBWaWV3cyBhZnRlciB0b2dnbGluZ1xyXG4gICAgICAgICAgLy8gdGhlIHByZWxvYWQgVmlldyB3aWxsIGV2ZW50dWFsbHkgZ28gYXdheSBvbmNlIHRoZSBkYXRhIGdldHMgbG9hZGVkIGFmdGVyIHRoZSBcIm9uQXN5bmNFbmRVcGRhdGVcIiBldmVudFxyXG4gICAgICAgICAgdGhpcy5yZW5kZXJQcmVsb2FkVmlldygpO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJBbGxWaWV3Q29tcG9uZW50cygpO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zICYmIHR5cGVvZiB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uQWZ0ZXJSb3dEZXRhaWxUb2dnbGUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgdGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucy5vbkFmdGVyUm93RGV0YWlsVG9nZ2xlKGUsIGFyZ3MpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX2V2ZW50SGFuZGxlci5zdWJzY3JpYmUodGhpcy5fYWRkb24ub25CZWZvcmVSb3dEZXRhaWxUb2dnbGUsIChlOiBhbnksIGFyZ3M6IHsgZ3JpZDogU2xpY2tHcmlkOyBpdGVtOiBhbnk7IH0pID0+IHtcclxuICAgICAgICAgIC8vIGJlZm9yZSB0b2dnbGluZyByb3cgZGV0YWlsLCB3ZSBuZWVkIHRvIGNyZWF0ZSBWaWV3IENvbXBvbmVudCBpZiBpdCBkb2Vzbid0IGV4aXN0XHJcbiAgICAgICAgICB0aGlzLm9uQmVmb3JlUm93RGV0YWlsVG9nZ2xlKGUsIGFyZ3MpO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zICYmIHR5cGVvZiB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uQmVmb3JlUm93RGV0YWlsVG9nZ2xlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMub25CZWZvcmVSb3dEZXRhaWxUb2dnbGUoZSwgYXJncyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5fZXZlbnRIYW5kbGVyLnN1YnNjcmliZSh0aGlzLl9hZGRvbi5vblJvd0JhY2tUb1ZpZXdwb3J0UmFuZ2UsIChlOiBhbnksIGFyZ3M6IHsgZ3JpZDogU2xpY2tHcmlkOyBpdGVtOiBhbnk7IHJvd0lkOiBudW1iZXI7IHJvd0luZGV4OiBudW1iZXI7IGV4cGFuZGVkUm93czogYW55W107IHJvd0lkc091dE9mVmlld3BvcnQ6IG51bWJlcltdOyB9KSA9PiB7XHJcbiAgICAgICAgICAvLyB3aGVuIHJvdyBpcyBiYWNrIHRvIHZpZXdwb3J0IHJhbmdlLCB3ZSB3aWxsIHJlLXJlbmRlciB0aGUgVmlldyBDb21wb25lbnQocylcclxuICAgICAgICAgIHRoaXMub25Sb3dCYWNrVG9WaWV3cG9ydFJhbmdlKGUsIGFyZ3MpO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zICYmIHR5cGVvZiB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uUm93QmFja1RvVmlld3BvcnRSYW5nZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uUm93QmFja1RvVmlld3BvcnRSYW5nZShlLCBhcmdzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLl9ldmVudEhhbmRsZXIuc3Vic2NyaWJlKHRoaXMuX2FkZG9uLm9uUm93T3V0T2ZWaWV3cG9ydFJhbmdlLCAoZTogYW55LCBhcmdzOiB7IGdyaWQ6IFNsaWNrR3JpZDsgaXRlbTogYW55OyByb3dJZDogbnVtYmVyOyByb3dJbmRleDogbnVtYmVyOyBleHBhbmRlZFJvd3M6IGFueVtdOyByb3dJZHNPdXRPZlZpZXdwb3J0OiBudW1iZXJbXTsgfSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMgJiYgdHlwZW9mIHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMub25Sb3dPdXRPZlZpZXdwb3J0UmFuZ2UgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgdGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucy5vblJvd091dE9mVmlld3BvcnRSYW5nZShlLCBhcmdzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gLS1cclxuICAgICAgICAvLyBob29rIHNvbWUgZXZlbnRzIG5lZWRlZCBieSB0aGUgUGx1Z2luIGl0c2VsZlxyXG5cclxuICAgICAgICAvLyB3ZSBuZWVkIHRvIHJlZHJhdyB0aGUgb3BlbiBkZXRhaWwgdmlld3MgaWYgd2UgY2hhbmdlIGNvbHVtbiBwb3NpdGlvbiAoY29sdW1uIHJlb3JkZXIpXHJcbiAgICAgICAgdGhpcy5fZXZlbnRIYW5kbGVyLnN1YnNjcmliZSh0aGlzLnNoYXJlZFNlcnZpY2Uuc2xpY2tHcmlkLm9uQ29sdW1uc1Jlb3JkZXJlZCwgdGhpcy5yZWRyYXdBbGxWaWV3Q29tcG9uZW50cy5iaW5kKHRoaXMpKTtcclxuXHJcbiAgICAgICAgLy8gb24gcm93IHNlbGVjdGlvbiBjaGFuZ2VkLCB3ZSBhbHNvIG5lZWQgdG8gcmVkcmF3XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMuZW5hYmxlUm93U2VsZWN0aW9uIHx8IHRoaXMuZ3JpZE9wdGlvbnMuZW5hYmxlQ2hlY2tib3hTZWxlY3Rvcikge1xyXG4gICAgICAgICAgdGhpcy5fZXZlbnRIYW5kbGVyLnN1YnNjcmliZSh0aGlzLnNoYXJlZFNlcnZpY2Uuc2xpY2tHcmlkLm9uU2VsZWN0ZWRSb3dzQ2hhbmdlZCwgdGhpcy5yZWRyYXdBbGxWaWV3Q29tcG9uZW50cy5iaW5kKHRoaXMpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIG9uIHNvcnQsIGFsbCByb3cgZGV0YWlsIGFyZSBjb2xsYXBzZWQgc28gd2UgY2FuIGRpc3Bvc2Ugb2YgYWxsIHRoZSBWaWV3cyBhcyB3ZWxsXHJcbiAgICAgICAgdGhpcy5fZXZlbnRIYW5kbGVyLnN1YnNjcmliZSh0aGlzLnNoYXJlZFNlcnZpY2Uuc2xpY2tHcmlkLm9uU29ydCwgdGhpcy5kaXNwb3NlQWxsVmlld0NvbXBvbmVudHMuYmluZCh0aGlzKSk7XHJcblxyXG4gICAgICAgIC8vIG9uIGZpbHRlciBjaGFuZ2VkLCB3ZSBuZWVkIHRvIHJlLXJlbmRlciBhbGwgVmlld3NcclxuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICB0aGlzLmV2ZW50UHViU3ViU2VydmljZS5zdWJzY3JpYmUoJ29uRmlsdGVyQ2hhbmdlZCcsIHRoaXMucmVkcmF3QWxsVmlld0NvbXBvbmVudHMuYmluZCh0aGlzKSlcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0aGlzLl9hZGRvbjtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqIFJlZHJhdyAocmUtcmVuZGVyKSBhbGwgdGhlIGV4cGFuZGVkIHJvdyBkZXRhaWwgVmlldyBDb21wb25lbnRzICovXHJcbiAgcmVkcmF3QWxsVmlld0NvbXBvbmVudHMoKSB7XHJcbiAgICB0aGlzLl92aWV3cy5mb3JFYWNoKChjb21wUmVmKSA9PiB7XHJcbiAgICAgIHRoaXMucmVkcmF3Vmlld0NvbXBvbmVudChjb21wUmVmKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIFJlbmRlciBhbGwgdGhlIGV4cGFuZGVkIHJvdyBkZXRhaWwgVmlldyBDb21wb25lbnRzICovXHJcbiAgcmVuZGVyQWxsVmlld0NvbXBvbmVudHMoKSB7XHJcbiAgICB0aGlzLl92aWV3cy5mb3JFYWNoKCh2aWV3KSA9PiB7XHJcbiAgICAgIGlmICh2aWV3ICYmIHZpZXcuZGF0YUNvbnRleHQpIHtcclxuICAgICAgICB0aGlzLnJlbmRlclZpZXdNb2RlbCh2aWV3LmRhdGFDb250ZXh0KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKiogUmVkcmF3IHRoZSBuZWNlc3NhcnkgVmlldyBDb21wb25lbnQgKi9cclxuICByZWRyYXdWaWV3Q29tcG9uZW50KGNyZWF0ZWRWaWV3OiBDcmVhdGVkVmlldykge1xyXG4gICAgY29uc3QgY29udGFpbmVyRWxlbWVudHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGAke1JPV19ERVRBSUxfQ09OVEFJTkVSX1BSRUZJWH0ke2NyZWF0ZWRWaWV3LmlkfWApO1xyXG4gICAgaWYgKGNvbnRhaW5lckVsZW1lbnRzICYmIGNvbnRhaW5lckVsZW1lbnRzLmxlbmd0aCA+PSAwKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyVmlld01vZGVsKGNyZWF0ZWRWaWV3LmRhdGFDb250ZXh0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBSZW5kZXIgKG9yIHJlLXJlbmRlcikgdGhlIFZpZXcgQ29tcG9uZW50IChSb3cgRGV0YWlsKSAqL1xyXG4gIHJlbmRlclByZWxvYWRWaWV3KCkge1xyXG4gICAgY29uc3QgY29udGFpbmVyRWxlbWVudHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGAke1BSRUxPQURfQ09OVEFJTkVSX1BSRUZJWH1gKTtcclxuICAgIGlmIChjb250YWluZXJFbGVtZW50cyAmJiBjb250YWluZXJFbGVtZW50cy5sZW5ndGggPj0gMCkge1xyXG4gICAgICB0aGlzLmFuZ3VsYXJVdGlsU2VydmljZS5jcmVhdGVBbmd1bGFyQ29tcG9uZW50QXBwZW5kVG9Eb20odGhpcy5fcHJlbG9hZENvbXBvbmVudCwgY29udGFpbmVyRWxlbWVudHNbY29udGFpbmVyRWxlbWVudHMubGVuZ3RoIC0gMV0sIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIFJlbmRlciAob3IgcmUtcmVuZGVyKSB0aGUgVmlldyBDb21wb25lbnQgKFJvdyBEZXRhaWwpICovXHJcbiAgcmVuZGVyVmlld01vZGVsKGl0ZW06IGFueSk6IENyZWF0ZWRWaWV3IHwgdW5kZWZpbmVkIHtcclxuICAgIGNvbnN0IGNvbnRhaW5lckVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShgJHtST1dfREVUQUlMX0NPTlRBSU5FUl9QUkVGSVh9JHtpdGVtW3RoaXMuZGF0YXNldElkUHJvcE5hbWVdfWApO1xyXG4gICAgaWYgKGNvbnRhaW5lckVsZW1lbnRzICYmIGNvbnRhaW5lckVsZW1lbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgY29tcG9uZW50T3V0cHV0ID0gdGhpcy5hbmd1bGFyVXRpbFNlcnZpY2UuY3JlYXRlQW5ndWxhckNvbXBvbmVudEFwcGVuZFRvRG9tKHRoaXMuX3ZpZXdDb21wb25lbnQsIGNvbnRhaW5lckVsZW1lbnRzW2NvbnRhaW5lckVsZW1lbnRzLmxlbmd0aCAtIDFdLCB0cnVlKTtcclxuICAgICAgaWYgKGNvbXBvbmVudE91dHB1dCAmJiBjb21wb25lbnRPdXRwdXQuY29tcG9uZW50UmVmICYmIGNvbXBvbmVudE91dHB1dC5jb21wb25lbnRSZWYuaW5zdGFuY2UpIHtcclxuICAgICAgICAvLyBwYXNzIGEgZmV3IHByb3BlcnRpZXMgdG8gdGhlIFJvdyBEZXRhaWwgdGVtcGxhdGUgY29tcG9uZW50XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbihjb21wb25lbnRPdXRwdXQuY29tcG9uZW50UmVmLmluc3RhbmNlLCB7XHJcbiAgICAgICAgICBtb2RlbDogaXRlbSxcclxuICAgICAgICAgIGFkZG9uOiB0aGlzLl9hZGRvbixcclxuICAgICAgICAgIGdyaWQ6IHRoaXMuc2hhcmVkU2VydmljZS5zbGlja0dyaWQsXHJcbiAgICAgICAgICBkYXRhVmlldzogdGhpcy5zaGFyZWRTZXJ2aWNlLmRhdGFWaWV3LFxyXG4gICAgICAgICAgcGFyZW50OiB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zICYmIHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMucGFyZW50LFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zdCB2aWV3T2JqID0gdGhpcy5fdmlld3MuZmluZChvYmogPT4gb2JqLmlkID09PSBpdGVtW3RoaXMuZGF0YXNldElkUHJvcE5hbWVdKTtcclxuICAgICAgICBpZiAodmlld09iaikge1xyXG4gICAgICAgICAgdmlld09iai5jb21wb25lbnRSZWYgPSBjb21wb25lbnRPdXRwdXQuY29tcG9uZW50UmVmO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdmlld09iajtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIC8vIC0tXHJcbiAgLy8gcHJpdmF0ZSBmdW5jdGlvbnNcclxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiAgcHJpdmF0ZSBkaXNwb3NlVmlld0NvbXBvbmVudChleHBhbmRlZFZpZXc6IENyZWF0ZWRWaWV3KSB7XHJcbiAgICBjb25zdCBjb21wUmVmID0gZXhwYW5kZWRWaWV3Py5jb21wb25lbnRSZWY7XHJcbiAgICBpZiAoY29tcFJlZikge1xyXG4gICAgICB0aGlzLmFwcFJlZi5kZXRhY2hWaWV3KGNvbXBSZWYuaG9zdFZpZXcpO1xyXG4gICAgICBpZiAoY29tcFJlZj8uZGVzdHJveSkge1xyXG4gICAgICAgIGNvbXBSZWYuZGVzdHJveSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBleHBhbmRlZFZpZXc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIG5vdGlmeSB0aGUgb25Bc3luY1Jlc3BvbnNlIHdpdGggdGhlIFwiYXJncy5pdGVtXCIgKHJlcXVpcmVkIHByb3BlcnR5KVxyXG4gICAqIHRoZSBwbHVnaW4gd2lsbCB0aGVuIHVzZSBpdGVtIHRvIHBvcHVsYXRlIHRoZSByb3cgZGV0YWlsIHBhbmVsIHdpdGggdGhlIFwicG9zdFRlbXBsYXRlXCJcclxuICAgKiBAcGFyYW0gaXRlbVxyXG4gICAqL1xyXG4gIHByaXZhdGUgbm90aWZ5VGVtcGxhdGUoaXRlbTogYW55KSB7XHJcbiAgICBpZiAodGhpcy5fYWRkb24pIHtcclxuICAgICAgdGhpcy5fYWRkb24ub25Bc3luY1Jlc3BvbnNlLm5vdGlmeSh7IGl0ZW0gfSwgdW5kZWZpbmVkLCB0aGlzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uIFByb2Nlc3NpbmcsIHdlIHdpbGwgbm90aWZ5IHRoZSBwbHVnaW4gd2l0aCB0aGUgbmV3IGl0ZW0gZGV0YWlsIG9uY2UgYmFja2VuZCBzZXJ2ZXIgY2FsbCBjb21wbGV0ZXNcclxuICAgKiBAcGFyYW0gaXRlbVxyXG4gICAqL1xyXG4gIHByaXZhdGUgYXN5bmMgb25Qcm9jZXNzaW5nKGl0ZW06IGFueSkge1xyXG4gICAgaWYgKGl0ZW0gJiYgdHlwZW9mIHRoaXMuX3VzZXJQcm9jZXNzRm4gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgbGV0IGF3YWl0ZWRJdGVtRGV0YWlsOiBhbnk7XHJcbiAgICAgIGNvbnN0IHVzZXJQcm9jZXNzRm4gPSB0aGlzLl91c2VyUHJvY2Vzc0ZuKGl0ZW0pO1xyXG5cclxuICAgICAgLy8gd2FpdCBmb3IgdGhlIFwidXNlclByb2Nlc3NGblwiLCBvbmNlIHJlc29sdmVkIHdlIHdpbGwgc2F2ZSBpdCBpbnRvIHRoZSBcImNvbGxlY3Rpb25cIlxyXG4gICAgICBjb25zdCByZXNwb25zZTogYW55IHwgYW55W10gPSBhd2FpdCB1c2VyUHJvY2Vzc0ZuO1xyXG5cclxuICAgICAgaWYgKHJlc3BvbnNlLmhhc093blByb3BlcnR5KHRoaXMuZGF0YXNldElkUHJvcE5hbWUpKSB7XHJcbiAgICAgICAgYXdhaXRlZEl0ZW1EZXRhaWwgPSByZXNwb25zZTsgLy8gZnJvbSBQcm9taXNlXHJcbiAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UgaW5zdGFuY2VvZiBPYnNlcnZhYmxlIHx8IHJlc3BvbnNlIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgIGF3YWl0ZWRJdGVtRGV0YWlsID0gYXdhaXQgY2FzdE9ic2VydmFibGVUb1Byb21pc2UodGhpcy5yeGpzIGFzIFJ4SnNGYWNhZGUsIHJlc3BvbnNlKTsgLy8gZnJvbSBBbmd1bGFyLWh0dHAtY2xpZW50XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghYXdhaXRlZEl0ZW1EZXRhaWwgfHwgIWF3YWl0ZWRJdGVtRGV0YWlsLmhhc093blByb3BlcnR5KHRoaXMuZGF0YXNldElkUHJvcE5hbWUpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBbQW5ndWxhci1TbGlja2dyaWRdIGNvdWxkIG5vdCBwcm9jZXNzIHRoZSBSb3cgRGV0YWlsLCB5b3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB5b3VyIFwicHJvY2Vzc1wiIGNhbGxiYWNrXHJcbiAgICAgICAgICAoYSBQcm9taXNlIG9yIGFuIEh0dHBDbGllbnQgY2FsbCByZXR1cm5pbmcgYW4gT2JzZXJ2YWJsZSkgcmV0dXJucyBhbiBpdGVtIG9iamVjdCB0aGF0IGhhcyBhbiBcIiR7dGhpcy5kYXRhc2V0SWRQcm9wTmFtZX1cIiBwcm9wZXJ0eWApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBub3RpZnkgdGhlIHBsdWdpbiB3aXRoIHRoZSBuZXcgaXRlbSBkZXRhaWxzXHJcbiAgICAgIHRoaXMubm90aWZ5VGVtcGxhdGUoYXdhaXRlZEl0ZW1EZXRhaWwgfHwge30pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSnVzdCBiZWZvcmUgdGhlIHJvdyBnZXQgZXhwYW5kZWQgb3IgY29sbGFwc2VkIHdlIHdpbGwgZG8gdGhlIGZvbGxvd2luZ1xyXG4gICAqIEZpcnN0IGRldGVybWluZSBpZiB0aGUgcm93IGlzIGV4cGFuZGluZyBvciBjb2xsYXBzaW5nLFxyXG4gICAqIGlmIGl0J3MgZXhwYW5kaW5nIHdlIHdpbGwgYWRkIGl0IHRvIG91ciBWaWV3IENvbXBvbmVudHMgcmVmZXJlbmNlIGFycmF5IGlmIHdlIGRvbid0IGFscmVhZHkgaGF2ZSBpdFxyXG4gICAqIG9yIGlmIGl0J3MgY29sbGFwc2luZyB3ZSB3aWxsIHJlbW92ZSBpdCBmcm9tIG91ciBWaWV3IENvbXBvbmVudHMgcmVmZXJlbmNlIGFycmF5XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvbkJlZm9yZVJvd0RldGFpbFRvZ2dsZShlOiBFdmVudCwgYXJnczogeyBncmlkOiBTbGlja0dyaWQ7IGl0ZW06IGFueTsgfSkge1xyXG4gICAgLy8gZXhwYW5kaW5nXHJcbiAgICBpZiAoYXJncyAmJiBhcmdzLml0ZW0gJiYgYXJncy5pdGVtLl9fY29sbGFwc2VkKSB7XHJcbiAgICAgIC8vIGV4cGFuZGluZyByb3cgZGV0YWlsXHJcbiAgICAgIGNvbnN0IHZpZXdJbmZvOiBDcmVhdGVkVmlldyA9IHtcclxuICAgICAgICBpZDogYXJncy5pdGVtW3RoaXMuZGF0YXNldElkUHJvcE5hbWVdLFxyXG4gICAgICAgIGRhdGFDb250ZXh0OiBhcmdzLml0ZW1cclxuICAgICAgfTtcclxuICAgICAgY29uc3QgaWRQcm9wTmFtZSA9IHRoaXMuZ3JpZE9wdGlvbnMuZGF0YXNldElkUHJvcGVydHlOYW1lIHx8ICdpZCc7XHJcbiAgICAgIGFkZFRvQXJyYXlXaGVuTm90RXhpc3RzKHRoaXMuX3ZpZXdzLCB2aWV3SW5mbywgaWRQcm9wTmFtZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBjb2xsYXBzaW5nLCBzbyBkaXNwb3NlIG9mIHRoZSBWaWV3L0NvbXBvbmVudFxyXG4gICAgICBjb25zdCBmb3VuZFZpZXdJbmRleCA9IHRoaXMuX3ZpZXdzLmZpbmRJbmRleCgodmlldzogQ3JlYXRlZFZpZXcpID0+IHZpZXcuaWQgPT09IGFyZ3MuaXRlbVt0aGlzLmRhdGFzZXRJZFByb3BOYW1lXSk7XHJcbiAgICAgIGlmIChmb3VuZFZpZXdJbmRleCA+PSAwICYmIHRoaXMuX3ZpZXdzLmhhc093blByb3BlcnR5KGZvdW5kVmlld0luZGV4KSkge1xyXG4gICAgICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLl92aWV3c1tmb3VuZFZpZXdJbmRleF0uY29tcG9uZW50UmVmO1xyXG4gICAgICAgIGlmIChjb21wUmVmKSB7XHJcbiAgICAgICAgICB0aGlzLmFwcFJlZi5kZXRhY2hWaWV3KGNvbXBSZWYuaG9zdFZpZXcpO1xyXG4gICAgICAgICAgY29tcFJlZi5kZXN0cm95KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3ZpZXdzLnNwbGljZShmb3VuZFZpZXdJbmRleCwgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBXaGVuIFJvdyBjb21lcyBiYWNrIHRvIFZpZXdwb3J0IFJhbmdlLCB3ZSBuZWVkIHRvIHJlZHJhdyB0aGUgVmlldyAqL1xyXG4gIHByaXZhdGUgb25Sb3dCYWNrVG9WaWV3cG9ydFJhbmdlKGU6IEV2ZW50LCBhcmdzOiB7IGdyaWQ6IFNsaWNrR3JpZDsgaXRlbTogYW55OyByb3dJZDogbnVtYmVyOyByb3dJbmRleDogbnVtYmVyOyBleHBhbmRlZFJvd3M6IGFueVtdOyByb3dJZHNPdXRPZlZpZXdwb3J0OiBudW1iZXJbXTsgfSkge1xyXG4gICAgaWYgKGFyZ3MgJiYgYXJncy5pdGVtKSB7XHJcbiAgICAgIHRoaXMuX3ZpZXdzLmZvckVhY2goKHZpZXcpID0+IHtcclxuICAgICAgICBpZiAodmlldy5pZCA9PT0gYXJncy5pdGVtW3RoaXMuZGF0YXNldElkUHJvcE5hbWVdKSB7XHJcbiAgICAgICAgICB0aGlzLnJlZHJhd1ZpZXdDb21wb25lbnQodmlldyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
@@ -256,7 +256,7 @@ function unsubscribeAllObservables(subscriptions) {
|
|
|
256
256
|
return subscriptions;
|
|
257
257
|
}
|
|
258
258
|
|
|
259
|
-
const DOMPurify = DOMPurify_; // patch to fix rollup to work
|
|
259
|
+
const DOMPurify = DOMPurify_['default'] || DOMPurify_; // patch to fix rollup to work
|
|
260
260
|
const ROW_DETAIL_CONTAINER_PREFIX = 'container_';
|
|
261
261
|
const PRELOAD_CONTAINER_PREFIX = 'container_loading';
|
|
262
262
|
class RowDetailViewExtension {
|