@netgrif/components-core 6.2.1 → 6.2.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/commons/schema.d.ts +1 -0
- package/esm2020/assets/i18n/de.json +9 -8
- package/esm2020/assets/i18n/en.json +2 -1
- package/esm2020/assets/i18n/sk.json +2 -1
- package/esm2020/commons/schema.mjs +1 -1
- package/esm2020/lib/authorization/permission/access.service.mjs +2 -2
- package/esm2020/lib/authorization/role/role-guard.service.mjs +36 -11
- package/esm2020/lib/data-fields/file-field/abstract-file-field.component.mjs +6 -3
- package/esm2020/lib/data-fields/file-list-field/abstract-file-list-field.component.mjs +5 -2
- package/esm2020/lib/data-fields/number-field/currency-number-field/abstract-currency-number-field.component.mjs +3 -2
- package/esm2020/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.mjs +7 -4
- package/esm2020/lib/resources/engine-endpoint/task-resource.service.mjs +3 -3
- package/esm2020/lib/search/models/category/case/case-dataset.mjs +7 -4
- package/esm2020/lib/search/search-operand-input-component/abstract-search-operand-input.component.mjs +3 -3
- package/esm2020/lib/side-menu/content-components/new-case/abstract-new-case.component.mjs +22 -11
- package/esm2020/lib/task-content/field-component-resolver/abstract-field-component-resolver.component.mjs +2 -3
- package/fesm2015/netgrif-components-core.mjs +96 -47
- package/fesm2015/netgrif-components-core.mjs.map +1 -1
- package/fesm2020/netgrif-components-core.mjs +96 -47
- package/fesm2020/netgrif-components-core.mjs.map +1 -1
- package/lib/authorization/role/role-guard.service.d.ts +2 -1
- package/lib/data-fields/number-field/currency-number-field/abstract-currency-number-field.component.d.ts +1 -0
- package/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.d.ts +1 -1
- package/lib/resources/engine-endpoint/task-resource.service.d.ts +2 -1
- package/lib/search/search-operand-input-component/abstract-search-operand-input.component.d.ts +1 -1
- package/package.json +1 -1
- package/src/assets/i18n/de.json +9 -8
- package/src/assets/i18n/en.json +2 -1
- package/src/assets/i18n/sk.json +2 -1
|
@@ -263,9 +263,9 @@ export class TaskResourceService extends AbstractResourceService {
|
|
|
263
263
|
* Delete file from the task
|
|
264
264
|
* DELETE
|
|
265
265
|
*/
|
|
266
|
-
deleteFile(taskId, fieldId, name) {
|
|
266
|
+
deleteFile(taskId, fieldId, name, param) {
|
|
267
267
|
const url = !!name ? 'task/' + taskId + '/file/' + fieldId + '/' + name : 'task/' + taskId + '/file/' + fieldId;
|
|
268
|
-
return this._resourceProvider.delete$(url, this.SERVER_URL).pipe(map(r => this.changeType(r, undefined)));
|
|
268
|
+
return this._resourceProvider.delete$(url, this.SERVER_URL, param).pipe(map(r => this.changeType(r, undefined)));
|
|
269
269
|
}
|
|
270
270
|
/**
|
|
271
271
|
* Download task file preview for field value
|
|
@@ -294,4 +294,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
294
294
|
providedIn: 'root'
|
|
295
295
|
}]
|
|
296
296
|
}], ctorParameters: function () { return [{ type: i1.ResourceProvider }, { type: i2.ConfigurationService }, { type: i3.FieldConverterService }, { type: i4.LoggerService }]; } });
|
|
297
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1yZXNvdXJjZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9yZXNvdXJjZXMvZW5naW5lLWVuZHBvaW50L3Rhc2stcmVzb3VyY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBMkIsZ0JBQWdCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUl4RixPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBSzNDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFLbkQsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sZ0RBQWdELENBQUM7Ozs7OztBQVF2RixNQUFNLE9BQU8sbUJBQW9CLFNBQVEsdUJBQXVCO0lBRTVELFlBQVksUUFBMEIsRUFDMUIsYUFBbUMsRUFDekIsZUFBc0MsRUFDdEMsT0FBc0I7UUFDeEMsS0FBSyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFGckIsb0JBQWUsR0FBZixlQUFlLENBQXVCO1FBQ3RDLFlBQU8sR0FBUCxPQUFPLENBQWU7SUFFNUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsV0FBbUI7UUFDNUIsSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxJQUFJLEVBQUU7WUFDdEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1NBQzlEO1FBQ0QsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcs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QyxVQUFVLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQzFDLENBQUM7SUFDTixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsK0NBQStDO0lBQ3hDLG1CQUFtQixDQUFDLE1BQWMsRUFBRSxPQUFlO1FBQ3RELE1BQU0sR0FBRyxHQUFHLE9BQU8sR0FBRyxNQUFNLEdBQUcsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO1FBQzFELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FDN0QsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ1IsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO2dCQUNoQixLQUFLLGFBQWEsQ0FBQyxnQkFBZ0I7b0JBQy9CLE9BQU8sZ0JBQWdCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMvQyxLQUFLLGFBQWEsQ0FBQyxRQUFRO29CQUN2QixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ3RCO29CQUNJLE9BQU8sU0FBUyxDQUFDO2FBQ3hCO1FBQ0wsQ0FBQyxDQUFDLEVBQ0YsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUMzQixDQUFDO0lBQ04sQ0FBQzs7aUhBelRRLG1CQUFtQjtxSEFBbkIsbUJBQW1CLGNBRmhCLE1BQU07NEZBRVQsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uZmlndXJhdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1BhcmFtcywgUHJvdmlkZXJQcm9ncmVzcywgUmVzb3VyY2VQcm92aWRlcn0gZnJvbSAnLi4vcmVzb3VyY2UtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtDb3VudH0gZnJvbSAnLi4vaW50ZXJmYWNlL2NvdW50JztcbmltcG9ydCB7RXZlbnRPdXRjb21lTWVzc2FnZVJlc291cmNlLCBNZXNzYWdlUmVzb3VyY2V9IGZyb20gJy4uL2ludGVyZmFjZS9tZXNzYWdlLXJlc291cmNlJztcbmltcG9ydCB7ZmlsdGVyLCBtYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7VGFza1JlZmVyZW5jZX0gZnJvbSAnLi4vaW50ZXJmYWNlL3Rhc2stcmVmZXJlbmNlJztcbmltcG9ydCB7VGFza30gZnJvbSAnLi4vaW50ZXJmYWNlL3Rhc2snO1xuaW1wb3J0IHtDb3VudFNlcnZpY2V9IGZyb20gJy4uL2Fic3RyYWN0LWVuZHBvaW50L2NvdW50LXNlcnZpY2UnO1xuaW1wb3J0IHtGaWx0ZXJ9IGZyb20gJy4uLy4uL2ZpbHRlci9tb2RlbHMvZmlsdGVyJztcbmltcG9ydCB7RmlsdGVyVHlwZX0gZnJvbSAnLi4vLi4vZmlsdGVyL21vZGVscy9maWx0ZXItdHlwZSc7XG5pbXBvcnQge0h0dHBFdmVudFR5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7UGFnZX0gZnJvbSAnLi4vaW50ZXJmYWNlL3BhZ2UnO1xuaW1wb3J0IHtGaWVsZENvbnZlcnRlclNlcnZpY2V9IGZyb20gJy4uLy4uL3Rhc2stY29udGVudC9zZXJ2aWNlcy9maWVsZC1jb252ZXJ0ZXIuc2VydmljZSc7XG5pbXBvcnQge1Rhc2tTZXREYXRhUmVxdWVzdEJvZHl9IGZyb20gJy4uL2ludGVyZmFjZS90YXNrLXNldC1kYXRhLXJlcXVlc3QtYm9keSc7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uLy4uL2xvZ2dlci9zZXJ2aWNlcy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge0Fic3RyYWN0UmVzb3VyY2VTZXJ2aWNlfSBmcm9tICcuLi9hYnN0cmFjdC1lbmRwb2ludC9hYnN0cmFjdC1yZXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7RGF0YUdyb3VwfSBmcm9tICcuLi9pbnRlcmZhY2UvZGF0YS1ncm91cHMnO1xuaW1wb3J0IHtEYXRhRmllbGR9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL21vZGVscy9hYnN0cmFjdC1kYXRhLWZpZWxkJztcbmltcG9ydCB7R2V0RGF0YUdyb3Vwc0V2ZW50T3V0Y29tZX0gZnJvbSAnLi4vLi4vZXZlbnQvbW9kZWwvZXZlbnQtb3V0Y29tZXMvZGF0YS1vdXRjb21lcy9nZXQtZGF0YS1ncm91cHMtZXZlbnQtb3V0Y29tZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVGFza1Jlc291cmNlU2VydmljZSBleHRlbmRzIEFic3RyYWN0UmVzb3VyY2VTZXJ2aWNlIGltcGxlbWVudHMgQ291bnRTZXJ2aWNlIHtcblxuICAgIGNvbnN0cnVjdG9yKHByb3ZpZGVyOiBSZXNvdXJjZVByb3ZpZGVyLFxuICAgICAgICAgICAgICAgIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfZmllbGRDb252ZXJ0ZXI6IEZpZWxkQ29udmVydGVyU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2xvZ2dlcjogTG9nZ2VyU2VydmljZSkge1xuICAgICAgICBzdXBlcigndGFzaycsIHByb3ZpZGVyLCBjb25maWdTZXJ2aWNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgQ291bnQgdGFza3MgYnkgcHJvdmlkZWQgY3JpdGVyaWFcbiAgICAgKiAgUE9TVFxuICAgICAqICB7e2Jhc2VVcmx9fS9hcGkvdGFzay9jb3VudFxuICAgICAqL1xuICAgIHB1YmxpYyBjb3VudChmaWx0ZXJQYXJhbTogRmlsdGVyKTogT2JzZXJ2YWJsZTxDb3VudD4ge1xuICAgICAgICBpZiAoZmlsdGVyUGFyYW0udHlwZSAhPT0gRmlsdGVyVHlwZS5UQVNLKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Byb3ZpZGVkIGZpbHRlciBkb2VzblxcJ3QgaGF2ZSB0eXBlIFRBU0snKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VQcm92aWRlci5wb3N0JCgndGFzay9jb3VudCcsIHRoaXMuU0VSVkVSX1VSTCwgZmlsdGVyUGFyYW0uZ2V0UmVxdWVzdEJvZHkoKSwgZmlsdGVyUGFyYW0uZ2V0UmVxdWVzdFBhcmFtcygpKVxuICAgICAgICAgICAgLnBpcGUobWFwKHIgPT4gdGhpcy5jaGFuZ2VUeXBlKHIsIHVuZGVmaW5lZCkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgYWxsIHRhc2tzXG4gICAgICogR0VUXG4gICAgICoge3tiYXNlVXJsfX0vYXBpL3Rhc2tcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0QWxsVGFzaygpOiBPYnNlcnZhYmxlPEFycmF5PFRhc2s+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLmdldCQoJ3Rhc2snLCB0aGlzLlNFUlZFUl9VUkwpXG4gICAgICAgICAgICAucGlwZShtYXAociA9PiB0aGlzLmNoYW5nZVR5cGUociwgJ3Rhc2tzJykpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBc3NpZ24gdGFza1xuICAgICAqIEdFVFxuICAgICAqL1xuICAgIC8vIHt7YmFzZVVybH19L2FwaS90YXNrL2Fzc2lnbi86aWRcbiAgICBwdWJsaWMgYXNzaWduVGFzayh0YXNrSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8RXZlbnRPdXRjb21lTWVzc2FnZVJlc291cmNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLmdldCQoJ3Rhc2svYXNzaWduLycgKyB0YXNrSWQsIHRoaXMuU0VSVkVSX1VSTClcbiAgICAgICAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuY2hhbmdlVHlwZShyLCB1bmRlZmluZWQpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FuY2VsIHRhc2tcbiAgICAgKiBHRVRcbiAgICAgKi9cbiAgICAvLyB7e2Jhc2VVcmx9fS9hcGkvdGFzay9jYW5jZWwvOmlkXG4gICAgcHVibGljIGNhbmNlbFRhc2sodGFza0lkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEV2ZW50T3V0Y29tZU1lc3NhZ2VSZXNvdXJjZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VQcm92aWRlci5nZXQkKCd0YXNrL2NhbmNlbC8nICsgdGFza0lkLCB0aGlzLlNFUlZFUl9VUkwpXG4gICAgICAgICAgICAucGlwZShtYXAociA9PiB0aGlzLmNoYW5nZVR5cGUociwgdW5kZWZpbmVkKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlbGVnYXRlIHRhc2tcbiAgICAgKiBQT1NUXG4gICAgICovXG4gICAgLy8ge3tiYXNlVXJsfX0vYXBpL3Rhc2svZGVsZWdhdGUvOmlkXG4gICAgcHVibGljIGRlbGVnYXRlVGFzayh0YXNrSWQ6IHN0cmluZywgYm9keTogb2JqZWN0KTogT2JzZXJ2YWJsZTxFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIucG9zdCQoJ3Rhc2svZGVsZWdhdGUvJyArIHRhc2tJZCwgdGhpcy5TRVJWRVJfVVJMLCBib2R5LCB1bmRlZmluZWQsIHsnQ29udGVudC1UeXBlJzogJ3RleHQvcGxhaW4nfSlcbiAgICAgICAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuY2hhbmdlVHlwZShyLCB1bmRlZmluZWQpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluaXNoIHRhc2tcbiAgICAgKiBHRVRcbiAgICAgKi9cbiAgICAvLyB7e2Jhc2VVcmx9fS9hcGkvdGFzay9maW5pc2gvOmlkXG4gICAgcHVibGljIGZpbmlzaFRhc2sodGFza0lkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEV2ZW50T3V0Y29tZU1lc3NhZ2VSZXNvdXJjZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VQcm92aWRlci5nZXQkKCd0YXNrL2ZpbmlzaC8nICsgdGFza0lkLCB0aGlzLlNFUlZFUl9VUkwpXG4gICAgICAgICAgICAucGlwZShtYXAociA9PiB0aGlzLmNoYW5nZVR5cGUociwgdW5kZWZpbmVkKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlYXJjaGVzIHRhc2tzIHRyb3VnaCB0aGUgRWxhc3RpYyBlbmRwb2ludC5cbiAgICAgKiBQT1NUXG4gICAgICogQHBhcmFtIGZpbHRlclBhcmFtIGZpbHRlciB1c2VkIHRvIHNlYXJjaCB0aGUgdGFza3MuIE11c3QgYmUgb2YgdHlwZSBgVEFTS2AuXG4gICAgICogQHBhcmFtIHBhcmFtcyBBZGRpdGlvbmFsIHBhcmFtZXRlcnNcbiAgICAgKi9cbiAgICAvLyB7e2Jhc2VVcmx9fS9hcGkvdGFzay9zZWFyY2hfZXNcbiAgICBwdWJsaWMgc2VhcmNoVGFzayhmaWx0ZXJQYXJhbTogRmlsdGVyLCBwYXJhbXM/OiBQYXJhbXMpOiBPYnNlcnZhYmxlPFBhZ2U8VGFzaz4+IHtcbiAgICAgICAgaWYgKGZpbHRlclBhcmFtLnR5cGUgIT09IEZpbHRlclR5cGUuVEFTSykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm92aWRlZCBmaWx0ZXIgZG9lc25cXCd0IGhhdmUgdHlwZSBUQVNLJyk7XG4gICAgICAgIH1cbiAgICAgICAgcGFyYW1zID0gUmVzb3VyY2VQcm92aWRlci5jb21iaW5lUGFyYW1zKGZpbHRlclBhcmFtLmdldFJlcXVlc3RQYXJhbXMoKSwgcGFyYW1zKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIucG9zdCQoJ3Rhc2svc2VhcmNoX2VzJywgdGhpcy5TRVJWRVJfVVJMLCBmaWx0ZXJQYXJhbS5nZXRSZXF1ZXN0Qm9keSgpLCBwYXJhbXMpXG4gICAgICAgICAgICAucGlwZShtYXAociA9PiB0aGlzLmdldFJlc291cmNlUGFnZTxUYXNrPihyLCAndGFza3MnKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlYXJjaGVzIHRhc2tzIHRyb3VnaCB0aGUgTW9uZ28gZW5kcG9pbnQuXG4gICAgICogUE9TVFxuICAgICAqIEBwYXJhbSBmaWx0ZXJQYXJhbSBmaWx0ZXIgdXNlZCB0byBzZWFyY2ggdGhlIHRhc2tzLiBNdXN0IGJlIG9mIHR5cGUgYFRBU0tgLlxuICAgICAqIE5vdGUgdGhhdCB0aGUgYHF1ZXJ5YCBhdHRyaWJ1dGUgb2YgdGhlIGZpbHRlciBjYW5ub3QgYmUgdXNlZCB3aXRoIHRoaXMgZW5kcG9pbnQuXG4gICAgICogQXR0ZW1wdGluZyB0byB1c2UgaXQgd2lsbCBkaXNwbGF5IGEgd2FybmluZyBhbmQgcmVtb3ZlIHRoZSBhdHRyaWJ1dGUgZnJvbSB0aGUgcmVxdWVzdC5cbiAgICAgKiBAcGFyYW0gcGFyYW1zIEFkZGl0aW9uYWwgcmVxdWVzdCBwYXJhbWV0ZXJzXG4gICAgICovXG4gICAgLy8ge3tiYXNlVXJsfX0vYXBpL3Rhc2svc2VhcmNoXG4gICAgcHVibGljIGdldFRhc2tzKGZpbHRlclBhcmFtOiBGaWx0ZXIsIHBhcmFtcz86IFBhcmFtcyk6IE9ic2VydmFibGU8UGFnZTxUYXNrPj4ge1xuICAgICAgICBpZiAoZmlsdGVyUGFyYW0udHlwZSAhPT0gRmlsdGVyVHlwZS5UQVNLKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Byb3ZpZGVkIGZpbHRlciBkb2VzblxcJ3QgaGF2ZSB0eXBlIFRBU0snKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWx0ZXJQYXJhbS5ib2R5Q29udGFpbnNRdWVyeSgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFRhc2tzIGVuZHBvaW50IGNhbm5vdCBiZSBxdWVyaWVkIHdpdGggZmlsdGVycyB0aGF0IGNvbnRhaW4gdGhlIFxcJ3F1ZXJ5XFwnIGF0dHJpYnV0ZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgcGFyYW1zID0gUmVzb3VyY2VQcm92aWRlci5jb21iaW5lUGFyYW1zKGZpbHRlclBhcmFtLmdldFJlcXVlc3RQYXJhbXMoKSwgcGFyYW1zKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIucG9zdCQoJ3Rhc2svc2VhcmNoJywgdGhpcy5TRVJWRVJfVVJMLCBmaWx0ZXJQYXJhbS5nZXRSZXF1ZXN0Qm9keSgpLCBwYXJhbXMpXG4gICAgICAgICAgICAucGlwZShtYXAociA9PiB0aGlzLmdldFJlc291cmNlUGFnZTxUYXNrPihyLCAndGFza3MnKSkpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tIENBU0UgLS0tLS0tLS0tLVxuICAgIC8qKlxuICAgICAqIEdldCBhbGwgdGFza3MgYnkgY2FzZXNcbiAgICAgKiBQT1NUXG4gICAgICovXG4gICAgLy8ge3tiYXNlVXJsfX0vYXBpL3Rhc2svY2FzZVxuICAgIHB1YmxpYyBnZXRBbGxUYXNrc0J5Q2FzZXMoYm9keTogb2JqZWN0KTogT2JzZXJ2YWJsZTxBcnJheTxUYXNrPj4geyAvLyBUT0RPOiA/P1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VQcm92aWRlci5wb3N0JCgndGFzay9jYXNlJywgdGhpcy5TRVJWRVJfVVJMLCBib2R5KVxuICAgICAgICAgICAgLnBpcGUobWFwKHIgPT4gdGhpcy5jaGFuZ2VUeXBlKHIsICd0YXNrcycpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRhc2tzIG9mIHRoZSBjYXNlXG4gICAgICogR0VUXG4gICAgICovXG4gICAgLy8ge3tiYXNlVXJsfX0vYXBpL3Rhc2svY2FzZS86aWRcbiAgICBwdWJsaWMgZ2V0QWxsVGFza3NCeUNhc2UoY2FzZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEFycmF5PFRhc2tSZWZlcmVuY2U+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLmdldCQoJ3Rhc2svY2FzZS8nICsgY2FzZUlkLCB0aGlzLlNFUlZFUl9VUkwpXG4gICAgICAgICAgICAucGlwZShtYXAociA9PiB0aGlzLmNoYW5nZVR5cGUociwgdW5kZWZpbmVkKSkpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tIE1ZIFRhc2sgLS0tLS0tLS0tLVxuICAgIC8qKlxuICAgICAqIEdldCBhbGwgdGFza3MgYXNzaWduZWQgdG8gbG9nZ2VkIHVzZXJcbiAgICAgKiBHRVRcbiAgICAgKi9cbiAgICAvLyB7e2Jhc2VVcmx9fS9hcGkvdGFzay9teVxuICAgIHB1YmxpYyBnZXRBbGxNeVRhc2tzKCk6IE9ic2VydmFibGU8QXJyYXk8VGFzaz4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIuZ2V0JCgndGFzay9teScsIHRoaXMuU0VSVkVSX1VSTClcbiAgICAgICAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuY2hhbmdlVHlwZShyLCB1bmRlZmluZWQpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGFsbCBmaW5pc2hlZCB0YXNrcyBieSBsb2dnZWQgdXNlclxuICAgICAqIEdFVFxuICAgICAqL1xuICAgIC8vIHt7YmFzZVVybH19L2FwaS90YXNrL215L2ZpbmlzaGVkXG4gICAgcHVibGljIGdldEFsbEZpbmlzaGVkVGFzaygpOiBPYnNlcnZhYmxlPEFycmF5PFRhc2s+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLmdldCQoJ3Rhc2svbXkvZmluaXNoZWQnLCB0aGlzLlNFUlZFUl9VUkwpXG4gICAgICAgICAgICAucGlwZShtYXAociA9PiB0aGlzLmNoYW5nZVR5cGUociwgdW5kZWZpbmVkKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhbGwgdGFzayBkYXRhXG4gICAgICpcbiAgICAgKiBHRVRcbiAgICAgKlxuICAgICAqIElmIHlvdSBkb24ndCB3YW50IHRvIHBhcnNlIHRoZSByZXNwb25zZSB5b3Vyc2VsZiB1c2UgW2dldERhdGFde0BsaW5rIFRhc2tSZXNvdXJjZVNlcnZpY2UjZ2V0RGF0YX0gaW5zdGVhZC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHRoZSByYXcgYmFja2VuZCByZXNwb25zZSB3aXRob3V0IGFueSBhZGRpdGlvbmFsIHByb2Nlc3NpbmdcbiAgICAgKi9cbiAgICAvLyB7e2Jhc2VVcmx9fS9hcGkvdGFzay86aWQvZGF0YVxuICAgIHB1YmxpYyByYXdHZXREYXRhKHRhc2tJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIuZ2V0JCgndGFzay8nICsgdGFza0lkICsgJy9kYXRhJywgdGhpcy5TRVJWRVJfVVJMKVxuICAgICAgICAgICAgLnBpcGUobWFwKHIgPT4gdGhpcy5jaGFuZ2VUeXBlKHIsIHVuZGVmaW5lZCkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgR2V0IGFsbCB0YXNrIGRhdGFcbiAgICAgKlxuICAgICAqICBHRVRcbiAgICAgKlxuICAgICAqICBJZiB5b3Ugd2FudCB0byBwcm9jZXNzIHRoZSByYXcgYmFja2VuZCByZXNwb25zZSB1c2UgW3Jhd0dldERhdGFde0BsaW5rIFRhc2tSZXNvdXJjZVNlcnZpY2UjcmF3R2V0RGF0YX0gaW5zdGVhZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0YXNrSWQgSUQgb2YgdGhlIHRhc2sgd2hvJ3MgZGF0YSBzaG91bGQgYmUgcmV0cmlldmVkIGZyb20gdGhlIHNlcnZlclxuICAgICAqIEByZXR1cm5zIHByb2Nlc3NlZCBkYXRhIGdyb3VwcyBvZiB0aGUgZ2l2ZW4gdGFzay4gSWYgdGhlIHRhc2sgaGFzIG5vIGRhdGEgYW4gZW1wdHkgYXJyYXkgd2lsbCBiZSByZXR1cm5lZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0RGF0YSh0YXNrSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8QXJyYXk8RGF0YUdyb3VwPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yYXdHZXREYXRhKHRhc2tJZCkucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzcG9uc2VPdXRjb21lOiBFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2UpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2VPdXRjb21lLmVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihyZXNwb25zZU91dGNvbWUuZXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGFHcm91cHNBcnJheSA9IHRoaXMuY2hhbmdlVHlwZSgocmVzcG9uc2VPdXRjb21lLm91dGNvbWUgYXMgR2V0RGF0YUdyb3Vwc0V2ZW50T3V0Y29tZSkuZGF0YSwgJ2RhdGFHcm91cHMnKTtcbiAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YUdyb3Vwc0FycmF5KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgICAgICAgICAgICAgIGRhdGFHcm91cHNBcnJheS5mb3JFYWNoKGRhdGFHcm91cFJlc291cmNlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YUZpZWxkczogQXJyYXk8RGF0YUZpZWxkPGFueT4+ID0gW107XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGF0YUdyb3VwUmVzb3VyY2UuZmllbGRzLl9lbWJlZGRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBjb250aW51ZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhkYXRhR3JvdXBSZXNvdXJjZS5maWVsZHMuX2VtYmVkZGVkKS5mb3JFYWNoKGxvY2FsaXplZEZpZWxkcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZHMucHVzaCguLi5kYXRhR3JvdXBSZXNvdXJjZS5maWVsZHMuX2VtYmVkZGVkW2xvY2FsaXplZEZpZWxkc10pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgZmllbGRzLnNvcnQoKGEsIGIpID0+IGEub3JkZXIgLSBiLm9yZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgZGF0YUZpZWxkcy5wdXNoKC4uLmZpZWxkcy5tYXAoZGF0YUZpZWxkUmVzb3VyY2UgPT4gdGhpcy5fZmllbGRDb252ZXJ0ZXIudG9DbGFzcyhkYXRhRmllbGRSZXNvdXJjZSkpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YUdyb3VwT2JqZWN0OiBEYXRhR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZHM6IGRhdGFGaWVsZHMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJldGNoOiBkYXRhR3JvdXBSZXNvdXJjZS5zdHJldGNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGRhdGFHcm91cFJlc291cmNlLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0OiBkYXRhR3JvdXBSZXNvdXJjZS5sYXlvdXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBhbGlnbm1lbnQ6IGRhdGFHcm91cFJlc291cmNlLmFsaWdubWVudCxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFHcm91cFJlc291cmNlLnBhcmVudFRhc2tJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhR3JvdXBPYmplY3QucGFyZW50VGFza0lkID0gZGF0YUdyb3VwUmVzb3VyY2UucGFyZW50VGFza0lkO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUdyb3VwT2JqZWN0LnBhcmVudFRyYW5zaXRpb25JZCA9IGRhdGFHcm91cFJlc291cmNlLnBhcmVudFRyYW5zaXRpb25JZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFHcm91cE9iamVjdC5wYXJlbnRUYXNrUmVmSWQgPSBkYXRhR3JvdXBSZXNvdXJjZS5wYXJlbnRUYXNrUmVmSWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhR3JvdXBPYmplY3QubmVzdGluZ0xldmVsID0gZGF0YUdyb3VwUmVzb3VyY2UubmVzdGluZ0xldmVsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhR3JvdXBSZXNvdXJjZS5wYXJlbnRDYXNlSWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUdyb3VwT2JqZWN0WydwYXJlbnRDYXNlSWQnXSA9IGRhdGFHcm91cFJlc291cmNlLnBhcmVudENhc2VJZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChkYXRhR3JvdXBPYmplY3QpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCB0YXNrIGRhdGFcbiAgICAgKiBQT1NUXG4gICAgICovXG4gICAgLy8ge3tiYXNlVXJsfX0vYXBpL3Rhc2svOmlkL2RhdGFcbiAgICBwdWJsaWMgc2V0RGF0YSh0YXNrSWQ6IHN0cmluZywgYm9keTogVGFza1NldERhdGFSZXF1ZXN0Qm9keSk6IE9ic2VydmFibGU8RXZlbnRPdXRjb21lTWVzc2FnZVJlc291cmNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLnBvc3QkKCd0YXNrLycgKyB0YXNrSWQgKyAnL2RhdGEnLCB0aGlzLlNFUlZFUl9VUkwsIGJvZHkpXG4gICAgICAgICAgICAucGlwZShtYXAociA9PiB0aGlzLmNoYW5nZVR5cGUociwgdW5kZWZpbmVkKSkpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0gRklMRSAtLS0tLS0tLS0tLS1cbiAgICAvKipcbiAgICAgKiBEb3dubG9hZCB0YXNrIGZpbGUgZmllbGQgdmFsdWVcbiAgICAgKiBHRVRcbiAgICAgKi9cbiAgICAvLyB7e2Jhc2VVcmx9fS9hcGkvdGFzay86aWQvZmlsZS86ZmllbGQgICAgICAgICAtIGZvciBmaWxlIGZpZWxkXG4gICAgLy8ge3tiYXNlVXJsfX0vYXBpL3Rhc2svOmlkL2ZpbGUvOmZpZWxkLzpuYW1lICAgLSBmb3IgZmlsZSBsaXN0IGZpZWxkXG4gICAgcHVibGljIGRvd25sb2FkRmlsZSh0YXNrSWQ6IHN0cmluZywgZmllbGRJZDogc3RyaW5nLCBuYW1lPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxQcm92aWRlclByb2dyZXNzIHwgQmxvYj4ge1xuICAgICAgICBjb25zdCB1cmwgPSAhIW5hbWUgPyAndGFzay8nICsgdGFza0lkICsgJy9maWxlLycgKyBmaWVsZElkICsgJy8nICsgbmFtZSA6ICd0YXNrLycgKyB0YXNrSWQgKyAnL2ZpbGUvJyArIGZpZWxkSWQ7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLmdldEJsb2IkKHVybCwgdGhpcy5TRVJWRVJfVVJMKS5waXBlKFxuICAgICAgICAgICAgbWFwKGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLkRvd25sb2FkUHJvZ3Jlc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VQcm92aWRlci5nZXRQcm9ncmVzcyhldmVudCk7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5SZXNwb25zZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBldmVudC5ib2R5O1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGZpbHRlcih2YWx1ZSA9PiAhIXZhbHVlKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBmaWxlIGludG8gdGhlIHRhc2tcbiAgICAgKiBQT1NUXG4gICAgICovXG4gICAgLy8ge3tiYXNlVXJsfX0vYXBpL3Rhc2svOmlkL2ZpbGUvOmZpZWxkICAgICAtIGZvciBmaWxlIGZpZWxkXG4gICAgLy8ge3tiYXNlVXJsfX0vYXBpL3Rhc2svOmlkL2ZpbGVzLzpmaWVsZCAgICAtIGZvciBmaWxlIGxpc3QgZmllbGRcbiAgICBwdWJsaWMgdXBsb2FkRmlsZSh0YXNrSWQ6IHN0cmluZywgZmllbGRJZDogc3RyaW5nLCBib2R5OiBvYmplY3QsIG11bHRpcGxlRmlsZXM6IGJvb2xlYW4pOlxuICAgICAgICBPYnNlcnZhYmxlPFByb3ZpZGVyUHJvZ3Jlc3MgfCBFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2U+IHtcbiAgICAgICAgY29uc3QgdXJsID0gIW11bHRpcGxlRmlsZXMgPyAndGFzay8nICsgdGFza0lkICsgJy9maWxlLycgKyBmaWVsZElkIDogJ3Rhc2svJyArIHRhc2tJZCArICcvZmlsZXMvJyArIGZpZWxkSWQ7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLnBvc3RXaXRoRXZlbnQkPEV2ZW50T3V0Y29tZU1lc3NhZ2VSZXNvdXJjZT4odXJsLCB0aGlzLlNFUlZFUl9VUkwsIGJvZHkpLnBpcGUoXG4gICAgICAgICAgICBtYXAoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VQcm92aWRlci5nZXRQcm9ncmVzcyhldmVudCk7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5SZXNwb25zZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBldmVudC5ib2R5O1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGZpbHRlcih2YWx1ZSA9PiAhIXZhbHVlKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlbGV0ZSBmaWxlIGZyb20gdGhlIHRhc2tcbiAgICAgKiBERUxFVEVcbiAgICAgKi9cbiAgICBwdWJsaWMgZGVsZXRlRmlsZSh0YXNrSWQ6IHN0cmluZywgZmllbGRJZDogc3RyaW5nLCBuYW1lPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxNZXNzYWdlUmVzb3VyY2U+IHtcbiAgICAgICAgY29uc3QgdXJsID0gISFuYW1lID8gJ3Rhc2svJyArIHRhc2tJZCArICcvZmlsZS8nICsgZmllbGRJZCArICcvJyArIG5hbWUgOiAndGFzay8nICsgdGFza0lkICsgJy9maWxlLycgKyBmaWVsZElkO1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VQcm92aWRlci5kZWxldGUkKHVybCwgdGhpcy5TRVJWRVJfVVJMKS5waXBlKFxuICAgICAgICAgICAgbWFwKHIgPT4gdGhpcy5jaGFuZ2VUeXBlKHIsIHVuZGVmaW5lZCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRG93bmxvYWQgdGFzayBmaWxlIHByZXZpZXcgZm9yIGZpZWxkIHZhbHVlXG4gICAgICogR0VUXG4gICAgICovXG4gICAgLy8ge3tiYXNlVXJsfX0vYXBpL3Rhc2svOmlkL2ZpbGVfcHJldmlldy86ZmllbGRcbiAgICBwdWJsaWMgZG93bmxvYWRGaWxlUHJldmlldyh0YXNrSWQ6IHN0cmluZywgZmllbGRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxQcm92aWRlclByb2dyZXNzIHwgQmxvYj4ge1xuICAgICAgICBjb25zdCB1cmwgPSAndGFzay8nICsgdGFza0lkICsgJy9maWxlX3ByZXZpZXcvJyArIGZpZWxkSWQ7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLmdldEJsb2IkKHVybCwgdGhpcy5TRVJWRVJfVVJMKS5waXBlKFxuICAgICAgICAgICAgbWFwKGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLkRvd25sb2FkUHJvZ3Jlc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VQcm92aWRlci5nZXRQcm9ncmVzcyhldmVudCk7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5SZXNwb25zZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBldmVudC5ib2R5O1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGZpbHRlcih2YWx1ZSA9PiAhIXZhbHVlKVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
|
|
297
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1yZXNvdXJjZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9yZXNvdXJjZXMvZW5naW5lLWVuZHBvaW50L3Rhc2stcmVzb3VyY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBMkIsZ0JBQWdCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUl4RixPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBSzNDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFLakUsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sZ0RBQWdELENBQUM7Ozs7OztBQVF2RixNQUFNLE9BQU8sbUJBQW9CLFNBQVEsdUJBQXVCO0lBRTVELFlBQVksUUFBMEIsRUFDMUIsYUFBbUMsRUFDekIsZUFBc0MsRUFDdEMsT0FBc0I7UUFDeEMsS0FBSyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFGckIsb0JBQWUsR0FBZixlQUFlLENBQXVCO1FBQ3RDLFlBQU8sR0FBUCxPQUFPLENBQWU7SUFFNUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsV0FBbUI7UUFDNUIsSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxJQUFJLEVBQUU7WUFDdEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1NBQzlEO1FBQ0QsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcs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QUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQzFDLENBQUM7SUFDTixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsK0NBQStDO0lBQ3hDLG1CQUFtQixDQUFDLE1BQWMsRUFBRSxPQUFlO1FBQ3RELE1BQU0sR0FBRyxHQUFHLE9BQU8sR0FBRyxNQUFNLEdBQUcsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO1FBQzFELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FDN0QsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ1IsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO2dCQUNoQixLQUFLLGFBQWEsQ0FBQyxnQkFBZ0I7b0JBQy9CLE9BQU8sZ0JBQWdCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMvQyxLQUFLLGFBQWEsQ0FBQyxRQUFRO29CQUN2QixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ3RCO29CQUNJLE9BQU8sU0FBUyxDQUFDO2FBQ3hCO1FBQ0wsQ0FBQyxDQUFDLEVBQ0YsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUMzQixDQUFDO0lBQ04sQ0FBQzs7aUhBelRRLG1CQUFtQjtxSEFBbkIsbUJBQW1CLGNBRmhCLE1BQU07NEZBRVQsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uZmlndXJhdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1BhcmFtcywgUHJvdmlkZXJQcm9ncmVzcywgUmVzb3VyY2VQcm92aWRlcn0gZnJvbSAnLi4vcmVzb3VyY2UtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtDb3VudH0gZnJvbSAnLi4vaW50ZXJmYWNlL2NvdW50JztcbmltcG9ydCB7RXZlbnRPdXRjb21lTWVzc2FnZVJlc291cmNlLCBNZXNzYWdlUmVzb3VyY2V9IGZyb20gJy4uL2ludGVyZmFjZS9tZXNzYWdlLXJlc291cmNlJztcbmltcG9ydCB7ZmlsdGVyLCBtYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7VGFza1JlZmVyZW5jZX0gZnJvbSAnLi4vaW50ZXJmYWNlL3Rhc2stcmVmZXJlbmNlJztcbmltcG9ydCB7VGFza30gZnJvbSAnLi4vaW50ZXJmYWNlL3Rhc2snO1xuaW1wb3J0IHtDb3VudFNlcnZpY2V9IGZyb20gJy4uL2Fic3RyYWN0LWVuZHBvaW50L2NvdW50LXNlcnZpY2UnO1xuaW1wb3J0IHtGaWx0ZXJ9IGZyb20gJy4uLy4uL2ZpbHRlci9tb2RlbHMvZmlsdGVyJztcbmltcG9ydCB7RmlsdGVyVHlwZX0gZnJvbSAnLi4vLi4vZmlsdGVyL21vZGVscy9maWx0ZXItdHlwZSc7XG5pbXBvcnQgeyBIdHRwRXZlbnRUeXBlLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtQYWdlfSBmcm9tICcuLi9pbnRlcmZhY2UvcGFnZSc7XG5pbXBvcnQge0ZpZWxkQ29udmVydGVyU2VydmljZX0gZnJvbSAnLi4vLi4vdGFzay1jb250ZW50L3NlcnZpY2VzL2ZpZWxkLWNvbnZlcnRlci5zZXJ2aWNlJztcbmltcG9ydCB7VGFza1NldERhdGFSZXF1ZXN0Qm9keX0gZnJvbSAnLi4vaW50ZXJmYWNlL3Rhc2stc2V0LWRhdGEtcmVxdWVzdC1ib2R5JztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7QWJzdHJhY3RSZXNvdXJjZVNlcnZpY2V9IGZyb20gJy4uL2Fic3RyYWN0LWVuZHBvaW50L2Fic3RyYWN0LXJlc291cmNlLnNlcnZpY2UnO1xuaW1wb3J0IHtEYXRhR3JvdXB9IGZyb20gJy4uL2ludGVyZmFjZS9kYXRhLWdyb3Vwcyc7XG5pbXBvcnQge0RhdGFGaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvbW9kZWxzL2Fic3RyYWN0LWRhdGEtZmllbGQnO1xuaW1wb3J0IHtHZXREYXRhR3JvdXBzRXZlbnRPdXRjb21lfSBmcm9tICcuLi8uLi9ldmVudC9tb2RlbC9ldmVudC1vdXRjb21lcy9kYXRhLW91dGNvbWVzL2dldC1kYXRhLWdyb3Vwcy1ldmVudC1vdXRjb21lJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBUYXNrUmVzb3VyY2VTZXJ2aWNlIGV4dGVuZHMgQWJzdHJhY3RSZXNvdXJjZVNlcnZpY2UgaW1wbGVtZW50cyBDb3VudFNlcnZpY2Uge1xuXG4gICAgY29uc3RydWN0b3IocHJvdmlkZXI6IFJlc291cmNlUHJvdmlkZXIsXG4gICAgICAgICAgICAgICAgY29uZmlnU2VydmljZTogQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9maWVsZENvbnZlcnRlcjogRmllbGRDb252ZXJ0ZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCd0YXNrJywgcHJvdmlkZXIsIGNvbmZpZ1NlcnZpY2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBDb3VudCB0YXNrcyBieSBwcm92aWRlZCBjcml0ZXJpYVxuICAgICAqICBQT1NUXG4gICAgICogIHt7YmFzZVVybH19L2FwaS90YXNrL2NvdW50XG4gICAgICovXG4gICAgcHVibGljIGNvdW50KGZpbHRlclBhcmFtOiBGaWx0ZXIpOiBPYnNlcnZhYmxlPENvdW50PiB7XG4gICAgICAgIGlmIChmaWx0ZXJQYXJhbS50eXBlICE9PSBGaWx0ZXJUeXBlLlRBU0spIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUHJvdmlkZWQgZmlsdGVyIGRvZXNuXFwndCBoYXZlIHR5cGUgVEFTSycpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLnBvc3QkKCd0YXNrL2NvdW50JywgdGhpcy5TRVJWRVJfVVJMLCBmaWx0ZXJQYXJhbS5nZXRSZXF1ZXN0Qm9keSgpLCBmaWx0ZXJQYXJhbS5nZXRSZXF1ZXN0UGFyYW1zKCkpXG4gICAgICAgICAgICAucGlwZShtYXAociA9PiB0aGlzLmNoYW5nZVR5cGUociwgdW5kZWZpbmVkKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhbGwgdGFza3NcbiAgICAgKiBHRVRcbiAgICAgKiB7e2Jhc2VVcmx9fS9hcGkvdGFza1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRBbGxUYXNrKCk6IE9ic2VydmFibGU8QXJyYXk8VGFzaz4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIuZ2V0JCgndGFzaycsIHRoaXMuU0VSVkVSX1VSTClcbiAgICAgICAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuY2hhbmdlVHlwZShyLCAndGFza3MnKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFzc2lnbiB0YXNrXG4gICAgICogR0VUXG4gICAgICovXG4gICAgLy8ge3tiYXNlVXJsfX0vYXBpL3Rhc2svYXNzaWduLzppZFxuICAgIHB1YmxpYyBhc3NpZ25UYXNrKHRhc2tJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIuZ2V0JCgndGFzay9hc3NpZ24vJyArIHRhc2tJZCwgdGhpcy5TRVJWRVJfVVJMKVxuICAgICAgICAgICAgLnBpcGUobWFwKHIgPT4gdGhpcy5jaGFuZ2VUeXBlKHIsIHVuZGVmaW5lZCkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYW5jZWwgdGFza1xuICAgICAqIEdFVFxuICAgICAqL1xuICAgIC8vIHt7YmFzZVVybH19L2FwaS90YXNrL2NhbmNlbC86aWRcbiAgICBwdWJsaWMgY2FuY2VsVGFzayh0YXNrSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8RXZlbnRPdXRjb21lTWVzc2FnZVJlc291cmNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLmdldCQoJ3Rhc2svY2FuY2VsLycgKyB0YXNrSWQsIHRoaXMuU0VSVkVSX1VSTClcbiAgICAgICAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuY2hhbmdlVHlwZShyLCB1bmRlZmluZWQpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVsZWdhdGUgdGFza1xuICAgICAqIFBPU1RcbiAgICAgKi9cbiAgICAvLyB7e2Jhc2VVcmx9fS9hcGkvdGFzay9kZWxlZ2F0ZS86aWRcbiAgICBwdWJsaWMgZGVsZWdhdGVUYXNrKHRhc2tJZDogc3RyaW5nLCBib2R5OiBvYmplY3QpOiBPYnNlcnZhYmxlPEV2ZW50T3V0Y29tZU1lc3NhZ2VSZXNvdXJjZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VQcm92aWRlci5wb3N0JCgndGFzay9kZWxlZ2F0ZS8nICsgdGFza0lkLCB0aGlzLlNFUlZFUl9VUkwsIGJvZHksIHVuZGVmaW5lZCwgeydDb250ZW50LVR5cGUnOiAndGV4dC9wbGFpbid9KVxuICAgICAgICAgICAgLnBpcGUobWFwKHIgPT4gdGhpcy5jaGFuZ2VUeXBlKHIsIHVuZGVmaW5lZCkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaW5pc2ggdGFza1xuICAgICAqIEdFVFxuICAgICAqL1xuICAgIC8vIHt7YmFzZVVybH19L2FwaS90YXNrL2ZpbmlzaC86aWRcbiAgICBwdWJsaWMgZmluaXNoVGFzayh0YXNrSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8RXZlbnRPdXRjb21lTWVzc2FnZVJlc291cmNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLmdldCQoJ3Rhc2svZmluaXNoLycgKyB0YXNrSWQsIHRoaXMuU0VSVkVSX1VSTClcbiAgICAgICAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuY2hhbmdlVHlwZShyLCB1bmRlZmluZWQpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VhcmNoZXMgdGFza3MgdHJvdWdoIHRoZSBFbGFzdGljIGVuZHBvaW50LlxuICAgICAqIFBPU1RcbiAgICAgKiBAcGFyYW0gZmlsdGVyUGFyYW0gZmlsdGVyIHVzZWQgdG8gc2VhcmNoIHRoZSB0YXNrcy4gTXVzdCBiZSBvZiB0eXBlIGBUQVNLYC5cbiAgICAgKiBAcGFyYW0gcGFyYW1zIEFkZGl0aW9uYWwgcGFyYW1ldGVyc1xuICAgICAqL1xuICAgIC8vIHt7YmFzZVVybH19L2FwaS90YXNrL3NlYXJjaF9lc1xuICAgIHB1YmxpYyBzZWFyY2hUYXNrKGZpbHRlclBhcmFtOiBGaWx0ZXIsIHBhcmFtcz86IFBhcmFtcyk6IE9ic2VydmFibGU8UGFnZTxUYXNrPj4ge1xuICAgICAgICBpZiAoZmlsdGVyUGFyYW0udHlwZSAhPT0gRmlsdGVyVHlwZS5UQVNLKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Byb3ZpZGVkIGZpbHRlciBkb2VzblxcJ3QgaGF2ZSB0eXBlIFRBU0snKTtcbiAgICAgICAgfVxuICAgICAgICBwYXJhbXMgPSBSZXNvdXJjZVByb3ZpZGVyLmNvbWJpbmVQYXJhbXMoZmlsdGVyUGFyYW0uZ2V0UmVxdWVzdFBhcmFtcygpLCBwYXJhbXMpO1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VQcm92aWRlci5wb3N0JCgndGFzay9zZWFyY2hfZXMnLCB0aGlzLlNFUlZFUl9VUkwsIGZpbHRlclBhcmFtLmdldFJlcXVlc3RCb2R5KCksIHBhcmFtcylcbiAgICAgICAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuZ2V0UmVzb3VyY2VQYWdlPFRhc2s+KHIsICd0YXNrcycpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VhcmNoZXMgdGFza3MgdHJvdWdoIHRoZSBNb25nbyBlbmRwb2ludC5cbiAgICAgKiBQT1NUXG4gICAgICogQHBhcmFtIGZpbHRlclBhcmFtIGZpbHRlciB1c2VkIHRvIHNlYXJjaCB0aGUgdGFza3MuIE11c3QgYmUgb2YgdHlwZSBgVEFTS2AuXG4gICAgICogTm90ZSB0aGF0IHRoZSBgcXVlcnlgIGF0dHJpYnV0ZSBvZiB0aGUgZmlsdGVyIGNhbm5vdCBiZSB1c2VkIHdpdGggdGhpcyBlbmRwb2ludC5cbiAgICAgKiBBdHRlbXB0aW5nIHRvIHVzZSBpdCB3aWxsIGRpc3BsYXkgYSB3YXJuaW5nIGFuZCByZW1vdmUgdGhlIGF0dHJpYnV0ZSBmcm9tIHRoZSByZXF1ZXN0LlxuICAgICAqIEBwYXJhbSBwYXJhbXMgQWRkaXRpb25hbCByZXF1ZXN0IHBhcmFtZXRlcnNcbiAgICAgKi9cbiAgICAvLyB7e2Jhc2VVcmx9fS9hcGkvdGFzay9zZWFyY2hcbiAgICBwdWJsaWMgZ2V0VGFza3MoZmlsdGVyUGFyYW06IEZpbHRlciwgcGFyYW1zPzogUGFyYW1zKTogT2JzZXJ2YWJsZTxQYWdlPFRhc2s+PiB7XG4gICAgICAgIGlmIChmaWx0ZXJQYXJhbS50eXBlICE9PSBGaWx0ZXJUeXBlLlRBU0spIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUHJvdmlkZWQgZmlsdGVyIGRvZXNuXFwndCBoYXZlIHR5cGUgVEFTSycpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpbHRlclBhcmFtLmJvZHlDb250YWluc1F1ZXJ5KCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZ2V0VGFza3MgZW5kcG9pbnQgY2Fubm90IGJlIHF1ZXJpZWQgd2l0aCBmaWx0ZXJzIHRoYXQgY29udGFpbiB0aGUgXFwncXVlcnlcXCcgYXR0cmlidXRlJyk7XG4gICAgICAgIH1cblxuICAgICAgICBwYXJhbXMgPSBSZXNvdXJjZVByb3ZpZGVyLmNvbWJpbmVQYXJhbXMoZmlsdGVyUGFyYW0uZ2V0UmVxdWVzdFBhcmFtcygpLCBwYXJhbXMpO1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VQcm92aWRlci5wb3N0JCgndGFzay9zZWFyY2gnLCB0aGlzLlNFUlZFUl9VUkwsIGZpbHRlclBhcmFtLmdldFJlcXVlc3RCb2R5KCksIHBhcmFtcylcbiAgICAgICAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuZ2V0UmVzb3VyY2VQYWdlPFRhc2s+KHIsICd0YXNrcycpKSk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0gQ0FTRSAtLS0tLS0tLS0tXG4gICAgLyoqXG4gICAgICogR2V0IGFsbCB0YXNrcyBieSBjYXNlc1xuICAgICAqIFBPU1RcbiAgICAgKi9cbiAgICAvLyB7e2Jhc2VVcmx9fS9hcGkvdGFzay9jYXNlXG4gICAgcHVibGljIGdldEFsbFRhc2tzQnlDYXNlcyhib2R5OiBvYmplY3QpOiBPYnNlcnZhYmxlPEFycmF5PFRhc2s+PiB7IC8vIFRPRE86ID8/XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLnBvc3QkKCd0YXNrL2Nhc2UnLCB0aGlzLlNFUlZFUl9VUkwsIGJvZHkpXG4gICAgICAgICAgICAucGlwZShtYXAociA9PiB0aGlzLmNoYW5nZVR5cGUociwgJ3Rhc2tzJykpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGFza3Mgb2YgdGhlIGNhc2VcbiAgICAgKiBHRVRcbiAgICAgKi9cbiAgICAvLyB7e2Jhc2VVcmx9fS9hcGkvdGFzay9jYXNlLzppZFxuICAgIHB1YmxpYyBnZXRBbGxUYXNrc0J5Q2FzZShjYXNlSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8QXJyYXk8VGFza1JlZmVyZW5jZT4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIuZ2V0JCgndGFzay9jYXNlLycgKyBjYXNlSWQsIHRoaXMuU0VSVkVSX1VSTClcbiAgICAgICAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuY2hhbmdlVHlwZShyLCB1bmRlZmluZWQpKSk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0gTVkgVGFzayAtLS0tLS0tLS0tXG4gICAgLyoqXG4gICAgICogR2V0IGFsbCB0YXNrcyBhc3NpZ25lZCB0byBsb2dnZWQgdXNlclxuICAgICAqIEdFVFxuICAgICAqL1xuICAgIC8vIHt7YmFzZVVybH19L2FwaS90YXNrL215XG4gICAgcHVibGljIGdldEFsbE15VGFza3MoKTogT2JzZXJ2YWJsZTxBcnJheTxUYXNrPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VQcm92aWRlci5nZXQkKCd0YXNrL215JywgdGhpcy5TRVJWRVJfVVJMKVxuICAgICAgICAgICAgLnBpcGUobWFwKHIgPT4gdGhpcy5jaGFuZ2VUeXBlKHIsIHVuZGVmaW5lZCkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgYWxsIGZpbmlzaGVkIHRhc2tzIGJ5IGxvZ2dlZCB1c2VyXG4gICAgICogR0VUXG4gICAgICovXG4gICAgLy8ge3tiYXNlVXJsfX0vYXBpL3Rhc2svbXkvZmluaXNoZWRcbiAgICBwdWJsaWMgZ2V0QWxsRmluaXNoZWRUYXNrKCk6IE9ic2VydmFibGU8QXJyYXk8VGFzaz4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIuZ2V0JCgndGFzay9teS9maW5pc2hlZCcsIHRoaXMuU0VSVkVSX1VSTClcbiAgICAgICAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuY2hhbmdlVHlwZShyLCB1bmRlZmluZWQpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGFsbCB0YXNrIGRhdGFcbiAgICAgKlxuICAgICAqIEdFVFxuICAgICAqXG4gICAgICogSWYgeW91IGRvbid0IHdhbnQgdG8gcGFyc2UgdGhlIHJlc3BvbnNlIHlvdXJzZWxmIHVzZSBbZ2V0RGF0YV17QGxpbmsgVGFza1Jlc291cmNlU2VydmljZSNnZXREYXRhfSBpbnN0ZWFkLlxuICAgICAqXG4gICAgICogQHJldHVybnMgdGhlIHJhdyBiYWNrZW5kIHJlc3BvbnNlIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgcHJvY2Vzc2luZ1xuICAgICAqL1xuICAgIC8vIHt7YmFzZVVybH19L2FwaS90YXNrLzppZC9kYXRhXG4gICAgcHVibGljIHJhd0dldERhdGEodGFza0lkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEV2ZW50T3V0Y29tZU1lc3NhZ2VSZXNvdXJjZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VQcm92aWRlci5nZXQkKCd0YXNrLycgKyB0YXNrSWQgKyAnL2RhdGEnLCB0aGlzLlNFUlZFUl9VUkwpXG4gICAgICAgICAgICAucGlwZShtYXAociA9PiB0aGlzLmNoYW5nZVR5cGUociwgdW5kZWZpbmVkKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBHZXQgYWxsIHRhc2sgZGF0YVxuICAgICAqXG4gICAgICogIEdFVFxuICAgICAqXG4gICAgICogIElmIHlvdSB3YW50IHRvIHByb2Nlc3MgdGhlIHJhdyBiYWNrZW5kIHJlc3BvbnNlIHVzZSBbcmF3R2V0RGF0YV17QGxpbmsgVGFza1Jlc291cmNlU2VydmljZSNyYXdHZXREYXRhfSBpbnN0ZWFkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHRhc2tJZCBJRCBvZiB0aGUgdGFzayB3aG8ncyBkYXRhIHNob3VsZCBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgc2VydmVyXG4gICAgICogQHJldHVybnMgcHJvY2Vzc2VkIGRhdGEgZ3JvdXBzIG9mIHRoZSBnaXZlbiB0YXNrLiBJZiB0aGUgdGFzayBoYXMgbm8gZGF0YSBhbiBlbXB0eSBhcnJheSB3aWxsIGJlIHJldHVybmVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXREYXRhKHRhc2tJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxBcnJheTxEYXRhR3JvdXA+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJhd0dldERhdGEodGFza0lkKS5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXNwb25zZU91dGNvbWU6IEV2ZW50T3V0Y29tZU1lc3NhZ2VSZXNvdXJjZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZU91dGNvbWUuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHJlc3BvbnNlT3V0Y29tZS5lcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YUdyb3Vwc0FycmF5ID0gdGhpcy5jaGFuZ2VUeXBlKChyZXNwb25zZU91dGNvbWUub3V0Y29tZSBhcyBHZXREYXRhR3JvdXBzRXZlbnRPdXRjb21lKS5kYXRhLCAnZGF0YUdyb3VwcycpO1xuICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRhR3JvdXBzQXJyYXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgICAgICAgICAgICAgZGF0YUdyb3Vwc0FycmF5LmZvckVhY2goZGF0YUdyb3VwUmVzb3VyY2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhRmllbGRzOiBBcnJheTxEYXRhRmllbGQ8YW55Pj4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRhR3JvdXBSZXNvdXJjZS5maWVsZHMuX2VtYmVkZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47IC8vIGNvbnRpbnVlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGRzID0gW107XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGRhdGFHcm91cFJlc291cmNlLmZpZWxkcy5fZW1iZWRkZWQpLmZvckVhY2gobG9jYWxpemVkRmllbGRzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkcy5wdXNoKC4uLmRhdGFHcm91cFJlc291cmNlLmZpZWxkcy5fZW1iZWRkZWRbbG9jYWxpemVkRmllbGRzXSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBmaWVsZHMuc29ydCgoYSwgYikgPT4gYS5vcmRlciAtIGIub3JkZXIpO1xuICAgICAgICAgICAgICAgICAgICBkYXRhRmllbGRzLnB1c2goLi4uZmllbGRzLm1hcChkYXRhRmllbGRSZXNvdXJjZSA9PiB0aGlzLl9maWVsZENvbnZlcnRlci50b0NsYXNzKGRhdGFGaWVsZFJlc291cmNlKSkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhR3JvdXBPYmplY3Q6IERhdGFHcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkczogZGF0YUZpZWxkcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmV0Y2g6IGRhdGFHcm91cFJlc291cmNlLnN0cmV0Y2gsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogZGF0YUdyb3VwUmVzb3VyY2UudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQ6IGRhdGFHcm91cFJlc291cmNlLmxheW91dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogZGF0YUdyb3VwUmVzb3VyY2UuYWxpZ25tZW50LFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YUdyb3VwUmVzb3VyY2UucGFyZW50VGFza0lkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFHcm91cE9iamVjdC5wYXJlbnRUYXNrSWQgPSBkYXRhR3JvdXBSZXNvdXJjZS5wYXJlbnRUYXNrSWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhR3JvdXBPYmplY3QucGFyZW50VHJhbnNpdGlvbklkID0gZGF0YUdyb3VwUmVzb3VyY2UucGFyZW50VHJhbnNpdGlvbklkO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUdyb3VwT2JqZWN0LnBhcmVudFRhc2tSZWZJZCA9IGRhdGFHcm91cFJlc291cmNlLnBhcmVudFRhc2tSZWZJZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFHcm91cE9iamVjdC5uZXN0aW5nTGV2ZWwgPSBkYXRhR3JvdXBSZXNvdXJjZS5uZXN0aW5nTGV2ZWw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFHcm91cFJlc291cmNlLnBhcmVudENhc2VJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhR3JvdXBPYmplY3RbJ3BhcmVudENhc2VJZCddID0gZGF0YUdyb3VwUmVzb3VyY2UucGFyZW50Q2FzZUlkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGRhdGFHcm91cE9iamVjdCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IHRhc2sgZGF0YVxuICAgICAqIFBPU1RcbiAgICAgKi9cbiAgICAvLyB7e2Jhc2VVcmx9fS9hcGkvdGFzay86aWQvZGF0YVxuICAgIHB1YmxpYyBzZXREYXRhKHRhc2tJZDogc3RyaW5nLCBib2R5OiBUYXNrU2V0RGF0YVJlcXVlc3RCb2R5KTogT2JzZXJ2YWJsZTxFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIucG9zdCQoJ3Rhc2svJyArIHRhc2tJZCArICcvZGF0YScsIHRoaXMuU0VSVkVSX1VSTCwgYm9keSlcbiAgICAgICAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuY2hhbmdlVHlwZShyLCB1bmRlZmluZWQpKSk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLSBGSUxFIC0tLS0tLS0tLS0tLVxuICAgIC8qKlxuICAgICAqIERvd25sb2FkIHRhc2sgZmlsZSBmaWVsZCB2YWx1ZVxuICAgICAqIEdFVFxuICAgICAqL1xuICAgIC8vIHt7YmFzZVVybH19L2FwaS90YXNrLzppZC9maWxlLzpmaWVsZCAgICAgICAgIC0gZm9yIGZpbGUgZmllbGRcbiAgICAvLyB7e2Jhc2VVcmx9fS9hcGkvdGFzay86aWQvZmlsZS86ZmllbGQvOm5hbWUgICAtIGZvciBmaWxlIGxpc3QgZmllbGRcbiAgICBwdWJsaWMgZG93bmxvYWRGaWxlKHRhc2tJZDogc3RyaW5nLCBmaWVsZElkOiBzdHJpbmcsIG5hbWU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFByb3ZpZGVyUHJvZ3Jlc3MgfCBCbG9iPiB7XG4gICAgICAgIGNvbnN0IHVybCA9ICEhbmFtZSA/ICd0YXNrLycgKyB0YXNrSWQgKyAnL2ZpbGUvJyArIGZpZWxkSWQgKyAnLycgKyBuYW1lIDogJ3Rhc2svJyArIHRhc2tJZCArICcvZmlsZS8nICsgZmllbGRJZDtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIuZ2V0QmxvYiQodXJsLCB0aGlzLlNFUlZFUl9VUkwpLnBpcGUoXG4gICAgICAgICAgICBtYXAoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuRG93bmxvYWRQcm9ncmVzczpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXNvdXJjZVByb3ZpZGVyLmdldFByb2dyZXNzKGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50LmJvZHk7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgZmlsdGVyKHZhbHVlID0+ICEhdmFsdWUpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIGZpbGUgaW50byB0aGUgdGFza1xuICAgICAqIFBPU1RcbiAgICAgKi9cbiAgICAvLyB7e2Jhc2VVcmx9fS9hcGkvdGFzay86aWQvZmlsZS86ZmllbGQgICAgIC0gZm9yIGZpbGUgZmllbGRcbiAgICAvLyB7e2Jhc2VVcmx9fS9hcGkvdGFzay86aWQvZmlsZXMvOmZpZWxkICAgIC0gZm9yIGZpbGUgbGlzdCBmaWVsZFxuICAgIHB1YmxpYyB1cGxvYWRGaWxlKHRhc2tJZDogc3RyaW5nLCBmaWVsZElkOiBzdHJpbmcsIGJvZHk6IG9iamVjdCwgbXVsdGlwbGVGaWxlczogYm9vbGVhbik6XG4gICAgICAgIE9ic2VydmFibGU8UHJvdmlkZXJQcm9ncmVzcyB8IEV2ZW50T3V0Y29tZU1lc3NhZ2VSZXNvdXJjZT4ge1xuICAgICAgICBjb25zdCB1cmwgPSAhbXVsdGlwbGVGaWxlcyA/ICd0YXNrLycgKyB0YXNrSWQgKyAnL2ZpbGUvJyArIGZpZWxkSWQgOiAndGFzay8nICsgdGFza0lkICsgJy9maWxlcy8nICsgZmllbGRJZDtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIucG9zdFdpdGhFdmVudCQ8RXZlbnRPdXRjb21lTWVzc2FnZVJlc291cmNlPih1cmwsIHRoaXMuU0VSVkVSX1VSTCwgYm9keSkucGlwZShcbiAgICAgICAgICAgIG1hcChldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChldmVudC50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzczpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXNvdXJjZVByb3ZpZGVyLmdldFByb2dyZXNzKGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50LmJvZHk7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgZmlsdGVyKHZhbHVlID0+ICEhdmFsdWUpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVsZXRlIGZpbGUgZnJvbSB0aGUgdGFza1xuICAgICAqIERFTEVURVxuICAgICAqL1xuICAgIHB1YmxpYyBkZWxldGVGaWxlKHRhc2tJZDogc3RyaW5nLCBmaWVsZElkOiBzdHJpbmcsIG5hbWU/OiBzdHJpbmcsIHBhcmFtPzogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8TWVzc2FnZVJlc291cmNlPiB7XG4gICAgICAgIGNvbnN0IHVybCA9ICEhbmFtZSA/ICd0YXNrLycgKyB0YXNrSWQgKyAnL2ZpbGUvJyArIGZpZWxkSWQgKyAnLycgKyBuYW1lIDogJ3Rhc2svJyArIHRhc2tJZCArICcvZmlsZS8nICsgZmllbGRJZDtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIuZGVsZXRlJCh1cmwsIHRoaXMuU0VSVkVSX1VSTCwgcGFyYW0pLnBpcGUoXG4gICAgICAgICAgICBtYXAociA9PiB0aGlzLmNoYW5nZVR5cGUociwgdW5kZWZpbmVkKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEb3dubG9hZCB0YXNrIGZpbGUgcHJldmlldyBmb3IgZmllbGQgdmFsdWVcbiAgICAgKiBHRVRcbiAgICAgKi9cbiAgICAvLyB7e2Jhc2VVcmx9fS9hcGkvdGFzay86aWQvZmlsZV9wcmV2aWV3LzpmaWVsZFxuICAgIHB1YmxpYyBkb3dubG9hZEZpbGVQcmV2aWV3KHRhc2tJZDogc3RyaW5nLCBmaWVsZElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFByb3ZpZGVyUHJvZ3Jlc3MgfCBCbG9iPiB7XG4gICAgICAgIGNvbnN0IHVybCA9ICd0YXNrLycgKyB0YXNrSWQgKyAnL2ZpbGVfcHJldmlldy8nICsgZmllbGRJZDtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIuZ2V0QmxvYiQodXJsLCB0aGlzLlNFUlZFUl9VUkwpLnBpcGUoXG4gICAgICAgICAgICBtYXAoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuRG93bmxvYWRQcm9ncmVzczpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXNvdXJjZVByb3ZpZGVyLmdldFByb2dyZXNzKGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50LmJvZHk7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgZmlsdGVyKHZhbHVlID0+ICEhdmFsdWUpXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
|
|
@@ -197,14 +197,17 @@ export class CaseDataset extends Category {
|
|
|
197
197
|
return resolver.getIndex(datafield.fieldId, SearchIndex.BOOLEAN);
|
|
198
198
|
case 'file':
|
|
199
199
|
case 'fileList':
|
|
200
|
-
return resolver.getIndex(datafield.fieldId, SearchIndex.FILE_NAME, this.isSelectedOperator(Equals) || this.isSelectedOperator(NotEquals) || this.isSelectedOperator(Substring)
|
|
200
|
+
return resolver.getIndex(datafield.fieldId, SearchIndex.FILE_NAME, this.isSelectedOperator(Equals) || this.isSelectedOperator(NotEquals) || this.isSelectedOperator(Substring)
|
|
201
|
+
|| this.isSelectedOperator(IsNull));
|
|
201
202
|
case 'user':
|
|
202
203
|
case 'userList':
|
|
203
204
|
return resolver.getIndex(datafield.fieldId, SearchIndex.USER_ID);
|
|
204
205
|
case 'i18n':
|
|
205
|
-
return resolver.getIndex(datafield.fieldId, SearchIndex.TEXT, this.isSelectedOperator(Equals) || this.isSelectedOperator(NotEquals) || this.isSelectedOperator(Substring)
|
|
206
|
+
return resolver.getIndex(datafield.fieldId, SearchIndex.TEXT, this.isSelectedOperator(Equals) || this.isSelectedOperator(NotEquals) || this.isSelectedOperator(Substring)
|
|
207
|
+
|| this.isSelectedOperator(IsNull));
|
|
206
208
|
default:
|
|
207
|
-
return resolver.getIndex(datafield.fieldId, SearchIndex.FULLTEXT, this.isSelectedOperator(Equals) || this.isSelectedOperator(NotEquals) || this.isSelectedOperator(Substring)
|
|
209
|
+
return resolver.getIndex(datafield.fieldId, SearchIndex.FULLTEXT, this.isSelectedOperator(Equals) || this.isSelectedOperator(NotEquals) || this.isSelectedOperator(Substring)
|
|
210
|
+
|| this.isSelectedOperator(IsNull));
|
|
208
211
|
}
|
|
209
212
|
}
|
|
210
213
|
get inputPlaceholder() {
|
|
@@ -393,4 +396,4 @@ CaseDataset._i18n = 'search.category.case.dataset';
|
|
|
393
396
|
CaseDataset.DISABLED_TYPES = ['button', 'taskRef', 'caseRef', 'filter'];
|
|
394
397
|
CaseDataset.DATAFIELD_METADATA = 'datafield';
|
|
395
398
|
CaseDataset.AUTOCOMPLETE_ICON = 'account_circle';
|
|
396
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1kYXRhc2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9zZWFyY2gvbW9kZWxzL2NhdGVnb3J5L2Nhc2UvY2FzZS1kYXRhc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFFLGFBQWEsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDcEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixD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QyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO0lBQy9GLENBQUM7O0FBbGF1QixpQkFBSyxHQUFHLDhCQUE4QixDQUFDO0FBQzlDLDBCQUFjLEdBQUcsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNuRCw4QkFBa0IsR0FBRyxXQUFXLENBQUM7QUFDbkMsNkJBQWlCLEdBQUcsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcGVyYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9vcGVyYXRvci1zZXJ2aWNlL29wZXJhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2xvZ2dlci9zZXJ2aWNlcy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBPcGVyYXRvciB9IGZyb20gJy4uLy4uL29wZXJhdG9yL29wZXJhdG9yJztcbmltcG9ydCB7IFF1ZXJ5IH0gZnJvbSAnLi4vLi4vcXVlcnkvcXVlcnknO1xuaW1wb3J0IHsgT3B0aW9uYWxEZXBlbmRlbmNpZXMgfSBmcm9tICcuLi8uLi8uLi9jYXRlZ29yeS1mYWN0b3J5L29wdGlvbmFsLWRlcGVuZGVuY2llcyc7XG5pbXBvcnQgeyBTZWFyY2hJbnB1dFR5cGUgfSBmcm9tICcuLi9zZWFyY2gtaW5wdXQtdHlwZSc7XG5pbXBvcnQgeyBEYXRhZmllbGRNYXBLZXkgfSBmcm9tICcuLi8uLi9kYXRhZmllbGQtbWFwLWtleSc7XG5pbXBvcnQgeyBTZWFyY2hBdXRvY29tcGxldGVPcHRpb24gfSBmcm9tICcuLi9zZWFyY2gtYXV0b2NvbXBsZXRlLW9wdGlvbic7XG5pbXBvcnQgeyBCb29sZWFuT3BlcmF0b3IgfSBmcm9tICcuLi8uLi9ib29sZWFuLW9wZXJhdG9yJztcbmltcG9ydCB7IENhc2VQcm9jZXNzIH0gZnJvbSAnLi9jYXNlLXByb2Nlc3MnO1xuaW1wb3J0IHsgRXF1YWxzRGF0ZSB9IGZyb20gJy4uLy4uL29wZXJhdG9yL2VxdWFscy1kYXRlJztcbmltcG9ydCB7IFN1YnN0cmluZyB9IGZyb20gJy4uLy4uL29wZXJhdG9yL3N1YnN0cmluZyc7XG5pbXBvcnQgeyBFcXVhbHNEYXRlVGltZSB9IGZyb20gJy4uLy4uL29wZXJhdG9yL2VxdWFscy1kYXRlLXRpbWUnO1xuaW1wb3J0IHsgRXF1YWxzIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvZXF1YWxzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgb2YsIFJlcGxheVN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2F0ZWdvcnkgfSBmcm9tICcuLi9jYXRlZ29yeSc7XG5pbXBvcnQgeyBOb3RFcXVhbHMgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9ub3QtZXF1YWxzJztcbmltcG9ydCB7IE1vcmVUaGFuIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbW9yZS10aGFuJztcbmltcG9ydCB7IExlc3NUaGFuIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbGVzcy10aGFuJztcbmltcG9ydCB7IEluUmFuZ2UgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9pbi1yYW5nZSc7XG5pbXBvcnQgeyBJc051bGwgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9pcy1udWxsJztcbmltcG9ydCB7IExpa2UgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9saWtlJztcbmltcG9ydCB7IE5vdEVxdWFsc0RhdGUgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9ub3QtZXF1YWxzLWRhdGUnO1xuaW1wb3J0IHsgTW9yZVRoYW5EYXRlIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbW9yZS10aGFuLWRhdGUnO1xuaW1wb3J0IHsgTGVzc1RoYW5EYXRlIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbGVzcy10aGFuLWRhdGUnO1xuaW1wb3J0IHsgSW5SYW5nZURhdGUgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9pbi1yYW5nZS1kYXRlJztcbmltcG9ydCB7IE1vcmVUaGFuRGF0ZVRpbWUgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9tb3JlLXRoYW4tZGF0ZS10aW1lJztcbmltcG9ydCB7IExlc3NUaGFuRGF0ZVRpbWUgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9sZXNzLXRoYW4tZGF0ZS10aW1lJztcbmltcG9ydCB7IEluUmFuZ2VEYXRlVGltZSB9IGZyb20gJy4uLy4uL29wZXJhdG9yL2luLXJhbmdlLWRhdGUtdGltZSc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVPcHRpb25zIH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlLW9wdGlvbnMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbklucHV0IH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi1pbnB1dCc7XG5pbXBvcnQgeyBTZWFyY2hJbmRleCB9IGZyb20gJy4uLy4uL3NlYXJjaC1pbmRleCc7XG5pbXBvcnQgeyBDYXRlZ29yaWVzIH0gZnJvbSAnLi4vY2F0ZWdvcmllcyc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCBtb21lbnQsIHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IENhdGVnb3J5TWV0YWRhdGFDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vcGVyc2lzdGFuY2UvZ2VuZXJhdG9yLW1ldGFkYXRhJztcbmltcG9ydCB7IE1vcmVUaGFuRXF1YWwgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9tb3JlLXRoYW4tZXF1YWwnO1xuaW1wb3J0IHsgTGVzc1RoYW5FcXVhbCB9IGZyb20gJy4uLy4uL29wZXJhdG9yL2xlc3MtdGhhbi1lcXVhbCc7XG5pbXBvcnQgeyBNb3JlVGhhbkVxdWFsRGF0ZSB9IGZyb20gJy4uLy4uL29wZXJhdG9yL21vcmUtdGhhbi1lcXVhbC1kYXRlJztcbmltcG9ydCB7IExlc3NUaGFuRXF1YWxEYXRlIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbGVzcy10aGFuLWVxdWFsLWRhdGUnO1xuaW1wb3J0IHsgTW9yZVRoYW5FcXVhbERhdGVUaW1lIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbW9yZS10aGFuLWVxdWFsLWRhdGUtdGltZSc7XG5pbXBvcnQgeyBMZXNzVGhhbkVxdWFsRGF0ZVRpbWUgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9sZXNzLXRoYW4tZXF1YWwtZGF0ZS10aW1lJztcbmltcG9ydCB7IEZpbHRlclRleHRTZWdtZW50IH0gZnJvbSAnLi4vLi4vcGVyc2lzdGFuY2UvZmlsdGVyLXRleHQtc2VnbWVudCc7XG5pbXBvcnQgeyBVc2VyQXV0b2NvbXBsZXRlIH0gZnJvbSAnLi4vdXNlci1hdXRvY29tcGxldGUnO1xuXG5pbnRlcmZhY2UgRGF0YWZpZWxkIHtcbiAgICBuZXRJZGVudGlmaWVyOiBzdHJpbmc7XG4gICAgZmllbGRJZDogc3RyaW5nO1xuICAgIGZpZWxkVHlwZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQ2FzZURhdGFzZXQgZXh0ZW5kcyBDYXRlZ29yeTxEYXRhZmllbGQ+IGltcGxlbWVudHMgQXV0b2NvbXBsZXRlT3B0aW9ucyB7XG5cbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaTE4biA9ICdzZWFyY2guY2F0ZWdvcnkuY2FzZS5kYXRhc2V0JztcbiAgICBwcm90ZWN0ZWQgc3RhdGljIERJU0FCTEVEX1RZUEVTID0gWydidXR0b24nLCAndGFza1JlZicsICdjYXNlUmVmJywgJ2ZpbHRlciddO1xuICAgIHByb3RlY3RlZCBzdGF0aWMgcmVhZG9ubHkgREFUQUZJRUxEX01FVEFEQVRBID0gJ2RhdGFmaWVsZCc7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVVUT0NPTVBMRVRFX0lDT04gPSAnYWNjb3VudF9jaXJjbGUnO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9EQVRBRklFTERfSU5QVVQ6IENvbmZpZ3VyYXRpb25JbnB1dDtcblxuICAgIHByb3RlY3RlZCBfcHJvY2Vzc0NhdGVnb3J5OiBDYXNlUHJvY2VzcztcblxuICAgIHByb3RlY3RlZCBfY29uZmlndXJhdGlvbklucHV0cyQ6IEJlaGF2aW9yU3ViamVjdDxBcnJheTxDb25maWd1cmF0aW9uSW5wdXQ+PjtcblxuICAgIHByb3RlY3RlZCBfZGF0YWZpZWxkT3B0aW9uczogTWFwPHN0cmluZywgQXJyYXk8RGF0YWZpZWxkPj47XG5cbiAgICBwcml2YXRlIF9kYXRhZmllbGRPcHRpb25zSW5pdGlhbGl6ZWQkOiBSZXBsYXlTdWJqZWN0PHZvaWQ+O1xuICAgIHByaXZhdGUgX2FsbG93ZWROZXRzU3ViOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBfdXNlckF1dG9jb21wbGV0ZTogVXNlckF1dG9jb21wbGV0ZTtcblxuICAgIHB1YmxpYyBzdGF0aWMgRmllbGRUeXBlVG9JbnB1dFR5cGUoZmllbGRUeXBlOiBzdHJpbmcpOiBTZWFyY2hJbnB1dFR5cGUge1xuICAgICAgICBzd2l0Y2ggKGZpZWxkVHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFNlYXJjaElucHV0VHlwZS5EQVRFO1xuICAgICAgICAgICAgY2FzZSAnZGF0ZVRpbWUnOlxuICAgICAgICAgICAgICAgIHJldHVybiBTZWFyY2hJbnB1dFR5cGUuREFURV9USU1FO1xuICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gU2VhcmNoSW5wdXRUeXBlLk5VTUJFUjtcbiAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgICAgICAgIHJldHVybiBTZWFyY2hJbnB1dFR5cGUuQk9PTEVBTjtcbiAgICAgICAgICAgIGNhc2UgJ3VzZXInOlxuICAgICAgICAgICAgICAgIHJldHVybiBTZWFyY2hJbnB1dFR5cGUuQVVUT0NPTVBMRVRFO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gU2VhcmNoSW5wdXRUeXBlLlRFWFQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihvcGVyYXRvcnM6IE9wZXJhdG9yU2VydmljZSwgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLCBwcm90ZWN0ZWQgX29wdGlvbmFsRGVwZW5kZW5jaWVzOiBPcHRpb25hbERlcGVuZGVuY2llcykge1xuICAgICAgICBzdXBlcih1bmRlZmluZWQsXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICBgJHtDYXNlRGF0YXNldC5faTE4bn0ubmFtZWAsXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICBsb2dnZXIsXG4gICAgICAgICAgICBvcGVyYXRvcnMpO1xuXG4gICAgICAgIHRoaXMuX3Byb2Nlc3NDYXRlZ29yeSA9IHRoaXMuX29wdGlvbmFsRGVwZW5kZW5jaWVzLmNhdGVnb3J5RmFjdG9yeS5nZXQoQ2FzZVByb2Nlc3MpIGFzIENhc2VQcm9jZXNzO1xuICAgICAgICB0aGlzLl9wcm9jZXNzQ2F0ZWdvcnkuc2VsZWN0RGVmYXVsdE9wZXJhdG9yKCk7XG5cbiAgICAgICAgdGhpcy5fZGF0YWZpZWxkT3B0aW9ucyA9IG5ldyBNYXA8c3RyaW5nLCBBcnJheTxEYXRhZmllbGQ+PigpO1xuICAgICAgICB0aGlzLl91c2VyQXV0b2NvbXBsZXRlID0gbmV3IFVzZXJBdXRvY29tcGxldGUodGhpcy5fb3B0aW9uYWxEZXBlbmRlbmNpZXMpO1xuICAgICAgICB0aGlzLmNyZWF0ZURhdGFmaWVsZE9wdGlvbnMoKTtcblxuICAgICAgICB0aGlzLl9EQVRBRklFTERfSU5QVVQgPSBuZXcgQ29uZmlndXJhdGlvbklucHV0KFxuICAgICAgICAgICAgU2VhcmNoSW5wdXRUeXBlLkFVVE9DT01QTEVURSxcbiAgICAgICAgICAgICdzZWFyY2guY2F0ZWdvcnkuY2FzZS5kYXRhc2V0LnBsYWNlaG9sZGVyLmZpZWxkJyxcbiAgICAgICAgICAgIHRydWUsXG4gICAgICAgICAgICB0aGlzLl9kYXRhZmllbGRPcHRpb25zLFxuICAgICAgICAgICAgKG1hcEtleXMsIG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hcEtleXMubWFwKHNlcmlhbGl6ZWRNYXBLZXkgPT4gRGF0YWZpZWxkTWFwS2V5LnBhcnNlKHNlcmlhbGl6ZWRNYXBLZXkpKVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKG1hcEtleSA9PiBtYXBLZXkudGl0bGUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKG5ld1ZhbHVlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fY29uZmlndXJhdGlvbklucHV0cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PENvbmZpZ3VyYXRpb25JbnB1dD4+KFt0aGlzLl9EQVRBRklFTERfSU5QVVRdKTtcblxuICAgICAgICB0aGlzLl9EQVRBRklFTERfSU5QVVQudmFsdWVDaGFuZ2VzJCgpLnN1YnNjcmliZShuZXdWYWx1ZSA9PiB7XG4gICAgICAgICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgbmV3VmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY29uZmlndXJhdGlvbklucHV0cyQubmV4dChbdGhpcy5fREFUQUZJRUxEX0lOUFVUXSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2NvbmZpZ3VyYXRpb25JbnB1dHMkLmdldFZhbHVlKCkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY29uZmlndXJhdGlvbklucHV0cyQubmV4dChbdGhpcy5fREFUQUZJRUxEX0lOUFVULCB0aGlzLl9PUEVSQVRPUl9JTlBVVF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JGb3JtQ29udHJvbC5zZXRWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBkZXN0cm95KCkge1xuICAgICAgICBzdXBlci5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuX2NvbmZpZ3VyYXRpb25JbnB1dHMkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX2RhdGFmaWVsZE9wdGlvbnNJbml0aWFsaXplZCQuY29tcGxldGUoKTtcbiAgICAgICAgaWYgKHRoaXMuX2FsbG93ZWROZXRzU3ViICYmICF0aGlzLl9hbGxvd2VkTmV0c1N1Yi5jbG9zZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2FsbG93ZWROZXRzU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcHJvY2Vzc0NhdGVnb3J5LmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBnZXQgY29uZmlndXJhdGlvbklucHV0cyQoKTogT2JzZXJ2YWJsZTxBcnJheTxDb25maWd1cmF0aW9uSW5wdXQ+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb25maWd1cmF0aW9uSW5wdXRzJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlucHV0VHlwZSgpOiBTZWFyY2hJbnB1dFR5cGUge1xuICAgICAgICBpZiAoIXRoaXMuaGFzU2VsZWN0ZWREYXRhZmllbGRzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0lucHV0IHR5cGUgb2YgYXJndW1lbnRzIGNhbm5vdCBiZSBkZXRlcm1pbmVkIGJlZm9yZSBzZWxlY3RpbmcgYSBkYXRhIGZpZWxkIGR1cmluZyB0aGUgY29uZmlndXJhdGlvbi4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gQ2FzZURhdGFzZXQuRmllbGRUeXBlVG9JbnB1dFR5cGUodGhpcy5fc2VsZWN0ZWREYXRhZmllbGRzWzBdLmZpZWxkVHlwZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGFsbG93ZWQgb3BlcmF0b3JzIGFyZSBkZXBlbmRhbnQgb24gdGhlIHNlbGVjdGVkIGRhdGEgZmllbGQuXG4gICAgICpcbiAgICAgKiBCZXdhcmUgdGhhdCBpZiB5b3Ugd2FudCB0byBjaGFuZ2UgdGhlIG9yZGVyIG9mIHRoZSBhbGxvd2VkIG9wZXJhdG9ycywgdGhlbiB5b3UgbXVzdCBhbHNvIHVwZGF0ZSB0aGVcbiAgICAgKiBbc2VsZWN0RGVmYXVsdE9wZXJhdG9yKClde0BsaW5rIENhdGVnb3J5I3NlbGVjdERlZmF1bHRPcGVyYXRvcn0gbWV0aG9kLCBzbyB0aGF0IGRlZmF1bHQgb3BlcmF0b3IgZm9yIGVhY2ggZGF0YSBmaWVsZCB0eXBlIG1hdGNoZXNcbiAgICAgKiB0aGUgZGVmYXVsdCBvcGVyYXRvciBvZiB0aGUge0BsaW5rIENhc2VTaW1wbGVEYXRhc2V0fSBzZWFyY2ggY2F0ZWdvcnkuIE90aGVyd2lzZSB0aGUgdHJhbnNpdGlvbiBvZiBoZWFkZXIgc2VhcmNoIGludG8gdGhlIHNlYXJjaCBHVUlcbiAgICAgKiB3b24ndCB3b3JrIHByb3Blcmx5LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgYWxsb3dlZE9wZXJhdG9ycygpOiBBcnJheTxPcGVyYXRvcjxhbnk+PiB7XG4gICAgICAgIGlmICghdGhpcy5oYXNTZWxlY3RlZERhdGFmaWVsZHMpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKHRoaXMuX3NlbGVjdGVkRGF0YWZpZWxkc1swXS5maWVsZFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKEVxdWFscyksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihOb3RFcXVhbHMpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTW9yZVRoYW4pLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTW9yZVRoYW5FcXVhbCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihMZXNzVGhhbiksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihMZXNzVGhhbkVxdWFsKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKEluUmFuZ2UpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoSXNOdWxsKVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoRXF1YWxzKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKE5vdEVxdWFscylcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgY2FzZSAndXNlcic6XG4gICAgICAgICAgICBjYXNlICd1c2VyTGlzdCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKEVxdWFscyksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihOb3RFcXVhbHMpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoSXNOdWxsKVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoRXF1YWxzRGF0ZSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihOb3RFcXVhbHNEYXRlKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKE1vcmVUaGFuRGF0ZSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihNb3JlVGhhbkVxdWFsRGF0ZSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihMZXNzVGhhbkRhdGUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTGVzc1RoYW5FcXVhbERhdGUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoSW5SYW5nZURhdGUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoSXNOdWxsKVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICBjYXNlICdkYXRlVGltZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKEVxdWFsc0RhdGVUaW1lKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKE1vcmVUaGFuRGF0ZVRpbWUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTW9yZVRoYW5FcXVhbERhdGVUaW1lKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKExlc3NUaGFuRGF0ZVRpbWUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTGVzc1RoYW5FcXVhbERhdGVUaW1lKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKEluUmFuZ2VEYXRlVGltZSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihJc051bGwpXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKFN1YnN0cmluZyksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihFcXVhbHMpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTm90RXF1YWxzKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKElzTnVsbCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihMaWtlKVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBgQ2FzZURhdGFzZXRgIGNhdGVnb3J5IGlzIG5vdCBkaXNwbGF5ZWQgaW4gYm9sZCBmb3IgYmV0dGVyIHJlYWRhYmlsaXR5XG4gICAgICovXG4gICAgZ2V0IGRpc3BsYXlCb2xkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNTZWxlY3RlZERhdGFmaWVsZHMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9EQVRBRklFTERfSU5QVVQuaXNPcHRpb25TZWxlY3RlZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IF9zZWxlY3RlZERhdGFmaWVsZHMoKTogQXJyYXk8RGF0YWZpZWxkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhZmllbGRPcHRpb25zLmdldCh0aGlzLl9EQVRBRklFTERfSU5QVVQuZm9ybUNvbnRyb2wudmFsdWUudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZXNldCgpIHtcbiAgICAgICAgc3VwZXIucmVzZXQoKTtcbiAgICAgICAgdGhpcy5fREFUQUZJRUxEX0lOUFVULmNsZWFyKCk7XG4gICAgfVxuXG4gICAgZHVwbGljYXRlKCk6IENhc2VEYXRhc2V0IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYXNlRGF0YXNldCh0aGlzLl9vcGVyYXRvclNlcnZpY2UsIHRoaXMuX2xvZywgdGhpcy5fb3B0aW9uYWxEZXBlbmRlbmNpZXMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgZWxhc3RpY0tleXdvcmRzKCk6IEFycmF5PHN0cmluZz4ge1xuICAgICAgICBpZiAoIXRoaXMuaGFzU2VsZWN0ZWREYXRhZmllbGRzKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWREYXRhZmllbGRzLm1hcChkYXRhZmllbGQgPT4gdGhpcy5yZXNvbHZlRWxhc3RpY0tleXdvcmQoZGF0YWZpZWxkKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzb2x2ZUVsYXN0aWNLZXl3b3JkKGRhdGFmaWVsZDogRGF0YWZpZWxkKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZXIgPSB0aGlzLl9vcHRpb25hbERlcGVuZGVuY2llcy5zZWFyY2hJbmRleFJlc29sdmVyO1xuICAgICAgICBzd2l0Y2ggKGRhdGFmaWVsZC5maWVsZFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVyLmdldEluZGV4KGRhdGFmaWVsZC5maWVsZElkLCBTZWFyY2hJbmRleC5OVU1CRVIpO1xuICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICBjYXNlICdkYXRlVGltZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVyLmdldEluZGV4KGRhdGFmaWVsZC5maWVsZElkLCBTZWFyY2hJbmRleC5USU1FU1RBTVApO1xuICAgICAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVyLmdldEluZGV4KGRhdGFmaWVsZC5maWVsZElkLCBTZWFyY2hJbmRleC5CT09MRUFOKTtcbiAgICAgICAgICAgIGNhc2UgJ2ZpbGUnOlxuICAgICAgICAgICAgY2FzZSAnZmlsZUxpc3QnOlxuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlci5nZXRJbmRleChkYXRhZmllbGQuZmllbGRJZCwgU2VhcmNoSW5kZXguRklMRV9OQU1FLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU2VsZWN0ZWRPcGVyYXRvcihFcXVhbHMpIHx8IHRoaXMuaXNTZWxlY3RlZE9wZXJhdG9yKE5vdEVxdWFscykgfHwgdGhpcy5pc1NlbGVjdGVkT3BlcmF0b3IoU3Vic3RyaW5nKSk7XG4gICAgICAgICAgICBjYXNlICd1c2VyJzpcbiAgICAgICAgICAgIGNhc2UgJ3VzZXJMaXN0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZXIuZ2V0SW5kZXgoZGF0YWZpZWxkLmZpZWxkSWQsIFNlYXJjaEluZGV4LlVTRVJfSUQpO1xuICAgICAgICAgICAgY2FzZSAnaTE4bic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVyLmdldEluZGV4KGRhdGFmaWVsZC5maWVsZElkLCBTZWFyY2hJbmRleC5URVhULCB0aGlzLmlzU2VsZWN0ZWRPcGVyYXRvcihFcXVhbHMpIHx8IHRoaXMuaXNTZWxlY3RlZE9wZXJhdG9yKE5vdEVxdWFscykgfHwgdGhpcy5pc1NlbGVjdGVkT3BlcmF0b3IoU3Vic3RyaW5nKSlcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVyLmdldEluZGV4KGRhdGFmaWVsZC5maWVsZElkLCBTZWFyY2hJbmRleC5GVUxMVEVYVCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1NlbGVjdGVkT3BlcmF0b3IoRXF1YWxzKSB8fCB0aGlzLmlzU2VsZWN0ZWRPcGVyYXRvcihOb3RFcXVhbHMpIHx8IHRoaXMuaXNTZWxlY3RlZE9wZXJhdG9yKFN1YnN0cmluZykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGlucHV0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLmhhc1NlbGVjdGVkRGF0YWZpZWxkcykge1xuICAgICAgICAgICAgcmV0dXJuIGAke0Nhc2VEYXRhc2V0Ll9pMThufS5wbGFjZWhvbGRlci5maWVsZGA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAke0Nhc2VEYXRhc2V0Ll9pMThufS5wbGFjZWhvbGRlci52YWx1ZWA7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBkYXRhZmllbGRPcHRpb25zSW5pdGlhbGl6ZWQkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YWZpZWxkT3B0aW9uc0luaXRpYWxpemVkJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2VuZXJhdGVRdWVyeSh1c2VySW5wdXQ6IEFycmF5PHVua25vd24+KTogUXVlcnkge1xuICAgICAgICBsZXQgcXVlcnlHZW5lcmF0aW9uU3RyYXRlZ3k7XG4gICAgICAgIGlmICh0aGlzLmlzU2VsZWN0ZWRPcGVyYXRvcihJc051bGwpKSB7XG4gICAgICAgICAgICBxdWVyeUdlbmVyYXRpb25TdHJhdGVneSA9IChkLCBfKSA9PiB0aGlzLmlzTnVsbE9wZXJhdG9yUXVlcnlHZW5lcmF0aW9uU3RyYXRlZ3koZCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pbnB1dFR5cGUgPT09IFNlYXJjaElucHV0VHlwZS5BVVRPQ09NUExFVEUpIHtcbiAgICAgICAgICAgIHF1ZXJ5R2VuZXJhdGlvblN0cmF0ZWd5ID0gKGQsIHVpKSA9PiB0aGlzLnN0YW5kYXJkUXVlcnlHZW5lcmF0aW9uU3RyYXRlZ3koZCwgdWlbMF0sIGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHF1ZXJ5R2VuZXJhdGlvblN0cmF0ZWd5ID0gKGQsIHVpKSA9PiB0aGlzLnN0YW5kYXJkUXVlcnlHZW5lcmF0aW9uU3RyYXRlZ3koZCwgdWkpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcXVlcmllcyA9IHRoaXMuX3NlbGVjdGVkRGF0YWZpZWxkcy5tYXAoZGF0YWZpZWxkID0+IHF1ZXJ5R2VuZXJhdGlvblN0cmF0ZWd5KGRhdGFmaWVsZCwgdXNlcklucHV0KSk7XG4gICAgICAgIHJldHVybiBRdWVyeS5jb21iaW5lUXVlcmllcyhxdWVyaWVzLCBCb29sZWFuT3BlcmF0b3IuT1IpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzdGFuZGFyZFF1ZXJ5R2VuZXJhdGlvblN0cmF0ZWd5KGRhdGFmaWVsZDogRGF0YWZpZWxkLCB1c2VySW5wdXQ6IEFycmF5PHVua25vd24+LCBlc2NhcGVJbnB1dCA9IHRydWUpOiBRdWVyeSB7XG4gICAgICAgIGNvbnN0IHZhbHVlUXVlcnkgPSB0aGlzLnNlbGVjdGVkT3BlcmF0b3IuY3JlYXRlUXVlcnkodGhpcy5lbGFzdGljS2V5d29yZHMsIHVzZXJJbnB1dCwgZXNjYXBlSW5wdXQpO1xuICAgICAgICBjb25zdCBuZXRRdWVyeSA9IHRoaXMuZ2VuZXJhdGVOZXRDb25zdHJhaW50KGRhdGFmaWVsZCk7XG4gICAgICAgIHJldHVybiBRdWVyeS5jb21iaW5lUXVlcmllcyhbdmFsdWVRdWVyeSwgbmV0UXVlcnldLCBCb29sZWFuT3BlcmF0b3IuQU5EKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaXNOdWxsT3BlcmF0b3JRdWVyeUdlbmVyYXRpb25TdHJhdGVneShkYXRhZmllbGQ6IERhdGFmaWVsZCk6IFF1ZXJ5IHtcbiAgICAgICAgY29uc3QgY29uc3RyYWludCA9IHRoaXMuZ2VuZXJhdGVOZXRDb25zdHJhaW50KGRhdGFmaWVsZCk7XG4gICAgICAgIHJldHVybiAodGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKElzTnVsbCkgYXMgSXNOdWxsKS5jcmVhdGVRdWVyeVdpdGhDb25zdHJhaW50KHRoaXMuZWxhc3RpY0tleXdvcmRzLCBjb25zdHJhaW50KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2VuZXJhdGVOZXRDb25zdHJhaW50KGRhdGFmaWVsZDogRGF0YWZpZWxkKTogUXVlcnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvY2Vzc0NhdGVnb3J5LmdlbmVyYXRlUHJlZGljYXRlKFtbZGF0YWZpZWxkLm5ldElkZW50aWZpZXJdXSkucXVlcnk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZURhdGFmaWVsZE9wdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2RhdGFmaWVsZE9wdGlvbnNJbml0aWFsaXplZCQgPSBuZXcgUmVwbGF5U3ViamVjdDx2b2lkPigxKTtcbiAgICAgICAgdGhpcy5fYWxsb3dlZE5ldHNTdWIgPSB0aGlzLl9vcHRpb25hbERlcGVuZGVuY2llcy5hbGxvd2VkTmV0c1NlcnZpY2UuYWxsb3dlZE5ldHMkLnN1YnNjcmliZShhbGxvd2VkTmV0cyA9PiB7XG4gICAgICAgICAgICBhbGxvd2VkTmV0cy5mb3JFYWNoKHBldHJpTmV0ID0+IHtcbiAgICAgICAgICAgICAgICBwZXRyaU5ldC5pbW1lZGlhdGVEYXRhXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoaW1tZWRpYXRlRGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW1tZWRpYXRlRGF0YS50aXRsZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgaW1tZWRpYXRlRGF0YS50aXRsZS50cmltKCkubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICFDYXNlRGF0YXNldC5ESVNBQkxFRF9UWVBFUy5pbmNsdWRlcyhpbW1lZGlhdGVEYXRhLnR5cGUpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaChpbW1lZGlhdGVEYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0eXBlID0gaW1tZWRpYXRlRGF0YS50eXBlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3Igc2VhcmNoIHB1cnBvc2VzLCBlbnVtZXJhdGlvbiBhbmQgbXVsdGljaG9pY2UgbWFwcyBhcmUgZXF1aXZhbGVudCB0byB0aGVpciBzaW1wbGVyIGNvdW50ZXJwYXJ0c1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdlbnVtZXJhdGlvbl9tYXAnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICdlbnVtZXJhdGlvbic7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdtdWx0aWNob2ljZV9tYXAnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICdtdWx0aWNob2ljZSc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkVG9EYXRhZmllbGRPcHRpb25zTWFwKERhdGFmaWVsZE1hcEtleS5zZXJpYWxpemVkRm9ybShpbW1lZGlhdGVEYXRhLnR5cGUsIGltbWVkaWF0ZURhdGEudGl0bGUpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0SWRlbnRpZmllcjogcGV0cmlOZXQuaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZElkOiBpbW1lZGlhdGVEYXRhLnN0cmluZ0lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkVHlwZTogaW1tZWRpYXRlRGF0YS50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9kYXRhZmllbGRPcHRpb25zSW5pdGlhbGl6ZWQkLm5leHQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZmlsdGVyT3B0aW9ucyh1c2VySW5wdXQ6IE9ic2VydmFibGU8c3RyaW5nIHwgU2VhcmNoQXV0b2NvbXBsZXRlT3B0aW9uPEFycmF5PHN0cmluZz4+Pik6XG4gICAgICAgIE9ic2VydmFibGU8QXJyYXk8U2VhcmNoQXV0b2NvbXBsZXRlT3B0aW9uPEFycmF5PHN0cmluZz4+Pj4ge1xuXG4gICAgICAgIGlmICghdGhpcy5oYXNTZWxlY3RlZERhdGFmaWVsZHMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGNhdGVnb3J5IG11c3QgYmUgZnVsbHkgY29uZmlndXJlZCBiZWZvcmUgYXR0ZW1wdGluZyB0byBnZXQgYXV0b2NvbXBsZXRlIG9wdGlvbnMhJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaW5wdXRUeXBlICE9PSBTZWFyY2hJbnB1dFR5cGUuQVVUT0NPTVBMRVRFKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBmaWx0ZXIgb3B0aW9ucyBvZiBub24tYXV0b2NvbXBsZXRlIG9wZXJhbmRzJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fdXNlckF1dG9jb21wbGV0ZS5maWx0ZXJPcHRpb25zKHVzZXJJbnB1dCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbGVjdERhdGFmaWVsZHMoZGF0YWZpZWxkTWFwS2V5OiBzdHJpbmcsIHNlbGVjdERlZmF1bHRPcGVyYXRvciA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9kYXRhZmllbGRPcHRpb25zLmhhcyhkYXRhZmllbGRNYXBLZXkpKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2cud2FybihgVGhlIHByb3ZpZGVkICdkYXRhZmllbGRNYXBLZXknICgke2RhdGFmaWVsZE1hcEtleX0pIGRvZXMgbm90IGV4aXN0LmApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX0RBVEFGSUVMRF9JTlBVVC5mb3JtQ29udHJvbC5zZXRWYWx1ZShEYXRhZmllbGRNYXBLZXkucGFyc2UoZGF0YWZpZWxkTWFwS2V5KSk7XG4gICAgICAgIGlmIChzZWxlY3REZWZhdWx0T3BlcmF0b3IpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RGVmYXVsdE9wZXJhdG9yKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGEgbmV3IGVudHJ5IG9yIHB1c2hlcyB2YWx1ZSBpbnRvIGFuIGV4aXN0aW5nIGVudHJ5LlxuICAgICAqIFdoZW4gYSBuZXcgZW50cnkgaXMgY3JlYXRlZCwgaXQgaXMgY3JlYXRlZCBhcyBhbiBBcnJheSBvZiBvbmUgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ga2V5IHdoZXJlIGluIHRoZSBtYXAgc2hvdWxkIHRoZSB2YWx1ZSBiZSBhZGRlZFxuICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgdGhhdCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIG1hcFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhZGRUb0RhdGFmaWVsZE9wdGlvbnNNYXAoa2V5OiBzdHJpbmcsIHZhbHVlOiBEYXRhZmllbGQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2RhdGFmaWVsZE9wdGlvbnMuaGFzKGtleSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFmaWVsZE9wdGlvbnMuZ2V0KGtleSkucHVzaCh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhZmllbGRPcHRpb25zLnNldChrZXksIFt2YWx1ZV0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGlzT3BlcmFuZFZhbHVlU2VsZWN0ZWQobmV3VmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuaXNPcGVyYXRvclNlbGVjdGVkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaW5wdXRUeXBlOiBTZWFyY2hJbnB1dFR5cGU7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpbnB1dFR5cGUgPSB0aGlzLmlucHV0VHlwZTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoIChpbnB1dFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoSW5wdXRUeXBlLk5VTUJFUjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdHlwZW9mIG5ld1ZhbHVlID09PSAnbnVtYmVyJztcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoSW5wdXRUeXBlLkJPT0xFQU46XG4gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ2Jvb2xlYW4nO1xuICAgICAgICAgICAgY2FzZSBTZWFyY2hJbnB1dFR5cGUuQVVUT0NPTVBMRVRFOlxuICAgICAgICAgICAgICAgIHJldHVybiAhKCFuZXdWYWx1ZSB8fCB0eXBlb2YgbmV3VmFsdWUgPT09ICdzdHJpbmcnKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICEhbmV3VmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyBhIHRyYW5zZm9ybWF0aW9uIG9mIHRoZSBgRm9ybUNvbnRyb2xgIHZhbHVlIGJlZm9yZSBwYXNzaW5nIGl0IGludG8gdGhlIHNlbGVjdGVkIGBPcGVyYXRvcmAgZm9yIHF1ZXJ5IGdlbmVyYXRpb24uXG4gICAgICogSXQgaXMgbW9zdGx5IHVzZWZ1bCBvbmx5IGZvciBBdXRvY29tcGxldGVDYXRlZ29yaWVzLCB3aGVyZSB0aGUgc2VsZWN0ZWQgdmFsdWUgb2YgdGhlIEZvcm1Db250cm9sIGlzIGFuIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgRm9ybUNvbnRyb2xWYWx1ZVxuICAgICAqIEByZXR1cm5zIElmIHRoZSBzZWxlY3RlZCBkYXRhIGZpZWxkIGhhcyBpbnB1dCB0eXBlIGBBVVRPQ09NUExFVEVgIHRoZW4gcmV0dXJucyB0aGUge0BsaW5rIFNlYXJjaEF1dG9jb21wbGV0ZU9wdGlvbn0gYHZhbHVlYFxuICAgICAqIGF0dHJpYnV0ZS4gT3RoZXJ3aXNlIHBlcmZvcm1zIGFuIGlkZW50aXR5IG9wZXJhdGlvbi5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgdHJhbnNmb3JtQ2F0ZWdvcnlWYWx1ZSh2YWx1ZTogYW55KTogYW55IHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRUeXBlID09PSBTZWFyY2hJbnB1dFR5cGUuQVVUT0NPTVBMRVRFKSB7XG4gICAgICAgICAgICByZXR1cm4gKHZhbHVlIGFzIFNlYXJjaEF1dG9jb21wbGV0ZU9wdGlvbjxBcnJheTxudW1iZXI+PikudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHNlcmlhbGl6ZUNsYXNzKCk6IENhdGVnb3JpZXMgfCBzdHJpbmcge1xuICAgICAgICByZXR1cm4gQ2F0ZWdvcmllcy5DQVNFX0RBVEFTRVQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNlcmlhbGl6ZU9wZXJhbmRWYWx1ZSh2YWx1ZUZvcm1Db250cm9sOiBGb3JtQ29udHJvbCk6IHVua25vd24ge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuaW5wdXRUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaElucHV0VHlwZS5BVVRPQ09NUExFVEU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXJBdXRvY29tcGxldGUuc2VyaWFsaXplT3BlcmFuZFZhbHVlKHZhbHVlRm9ybUNvbnRyb2wpO1xuICAgICAgICAgICAgY2FzZSBTZWFyY2hJbnB1dFR5cGUuREFURTpcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoSW5wdXRUeXBlLkRBVEVfVElNRTpcbiAgICAgICAgICAgICAgICByZXR1cm4gKHZhbHVlRm9ybUNvbnRyb2wudmFsdWUgYXMgTW9tZW50KS52YWx1ZU9mKCk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBzdXBlci5zZXJpYWxpemVPcGVyYW5kVmFsdWUodmFsdWVGb3JtQ29udHJvbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlTWV0YWRhdGFDb25maWd1cmF0aW9uKCk6IENhdGVnb3J5TWV0YWRhdGFDb25maWd1cmF0aW9uIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gc3VwZXIuY3JlYXRlTWV0YWRhdGFDb25maWd1cmF0aW9uKCk7XG4gICAgICAgIGNvbmZpZ1tDYXNlRGF0YXNldC5EQVRBRklFTERfTUVUQURBVEFdID0gKHRoaXMuX0RBVEFGSUVMRF9JTlBVVC5mb3JtQ29udHJvbC52YWx1ZSBhcyBEYXRhZmllbGRNYXBLZXkpLnRvU2VyaWFsaXplZEZvcm0oKTtcbiAgICAgICAgcmV0dXJuIGNvbmZpZztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbG9hZENvbmZpZ3VyYXRpb25Gcm9tTWV0YWRhdGEoY29uZmlndXJhdGlvbjogQ2F0ZWdvcnlNZXRhZGF0YUNvbmZpZ3VyYXRpb24pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0JCA9IG5ldyBSZXBsYXlTdWJqZWN0PHZvaWQ+KDEpO1xuICAgICAgICB0aGlzLmRhdGFmaWVsZE9wdGlvbnNJbml0aWFsaXplZCQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlcmlhbGl6ZWRNYXBLZXkgPSBjb25maWd1cmF0aW9uW0Nhc2VEYXRhc2V0LkRBVEFGSUVMRF9NRVRBREFUQV0gYXMgc3RyaW5nO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3REYXRhZmllbGRzKHNlcmlhbGl6ZWRNYXBLZXksIGZhbHNlKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5oYXNTZWxlY3RlZERhdGFmaWVsZHMpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNlYXJjaGVkIGRhdGEgZmllbGRzIGNhbm5vdCBiZSByZXN0b3JlZCBmcm9tIHRoZSBwcm92aWRlZCBjb25maWd1cmF0aW9uICgke3NlcmlhbGl6ZWRNYXBLZXlcbiAgICAgICAgICAgICAgICB9KS4gTWFrZSBzdXJlLCB0aGF0IHRoZSBjb3JyZWN0IGFsbG93ZWQgbmV0cyBhcmUgcHJvdmlkZWQgaW4gdGhpcyB2aWV3LmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3VwZXIubG9hZENvbmZpZ3VyYXRpb25Gcm9tTWV0YWRhdGEoY29uZmlndXJhdGlvbikuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXN1bHQkLm5leHQoKTtcbiAgICAgICAgICAgICAgICByZXN1bHQkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBkZXNlcmlhbGl6ZU9wZXJhbmRWYWx1ZSh2YWx1ZTogdW5rbm93bik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5pbnB1dFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoSW5wdXRUeXBlLkFVVE9DT01QTEVURTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdXNlckF1dG9jb21wbGV0ZS5kZXNlcmlhbGl6ZU9wZXJhbmRWYWx1ZSh2YWx1ZSBhcyBTZWFyY2hBdXRvY29tcGxldGVPcHRpb248QXJyYXk8c3RyaW5nPj4pO1xuICAgICAgICAgICAgY2FzZSBTZWFyY2hJbnB1dFR5cGUuREFURTpcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoSW5wdXRUeXBlLkRBVEVfVElNRTpcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YobW9tZW50KHZhbHVlIGFzIHN0cmluZykpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuZGVzZXJpYWxpemVPcGVyYW5kVmFsdWUodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZUNvbmZpZ3VyYXRpb25GaWx0ZXJUZXh0U2VnbWVudHMoKTogQXJyYXk8RmlsdGVyVGV4dFNlZ21lbnQ+IHtcbiAgICAgICAgcmV0dXJuIFt7c2VnbWVudDogdGhpcy5fY29uZmlndXJhdGlvbklucHV0cyQudmFsdWVbMF0uZm9ybUNvbnRyb2wudmFsdWUudGV4dCwgYm9sZDogdHJ1ZX1dO1xuICAgIH1cbn1cbiJdfQ==
|
|
399
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1kYXRhc2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9zZWFyY2gvbW9kZWxzL2NhdGVnb3J5L2Nhc2UvY2FzZS1kYXRhc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFFLGFBQWEsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDcEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixD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QUM7U0FDbkQ7SUFDTCxDQUFDO0lBRVMscUNBQXFDO1FBQzNDLE9BQU8sQ0FBQyxFQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO0lBQy9GLENBQUM7O0FBcmF1QixpQkFBSyxHQUFHLDhCQUE4QixDQUFDO0FBQzlDLDBCQUFjLEdBQUcsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNuRCw4QkFBa0IsR0FBRyxXQUFXLENBQUM7QUFDbkMsNkJBQWlCLEdBQUcsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcGVyYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9vcGVyYXRvci1zZXJ2aWNlL29wZXJhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2xvZ2dlci9zZXJ2aWNlcy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBPcGVyYXRvciB9IGZyb20gJy4uLy4uL29wZXJhdG9yL29wZXJhdG9yJztcbmltcG9ydCB7IFF1ZXJ5IH0gZnJvbSAnLi4vLi4vcXVlcnkvcXVlcnknO1xuaW1wb3J0IHsgT3B0aW9uYWxEZXBlbmRlbmNpZXMgfSBmcm9tICcuLi8uLi8uLi9jYXRlZ29yeS1mYWN0b3J5L29wdGlvbmFsLWRlcGVuZGVuY2llcyc7XG5pbXBvcnQgeyBTZWFyY2hJbnB1dFR5cGUgfSBmcm9tICcuLi9zZWFyY2gtaW5wdXQtdHlwZSc7XG5pbXBvcnQgeyBEYXRhZmllbGRNYXBLZXkgfSBmcm9tICcuLi8uLi9kYXRhZmllbGQtbWFwLWtleSc7XG5pbXBvcnQgeyBTZWFyY2hBdXRvY29tcGxldGVPcHRpb24gfSBmcm9tICcuLi9zZWFyY2gtYXV0b2NvbXBsZXRlLW9wdGlvbic7XG5pbXBvcnQgeyBCb29sZWFuT3BlcmF0b3IgfSBmcm9tICcuLi8uLi9ib29sZWFuLW9wZXJhdG9yJztcbmltcG9ydCB7IENhc2VQcm9jZXNzIH0gZnJvbSAnLi9jYXNlLXByb2Nlc3MnO1xuaW1wb3J0IHsgRXF1YWxzRGF0ZSB9IGZyb20gJy4uLy4uL29wZXJhdG9yL2VxdWFscy1kYXRlJztcbmltcG9ydCB7IFN1YnN0cmluZyB9IGZyb20gJy4uLy4uL29wZXJhdG9yL3N1YnN0cmluZyc7XG5pbXBvcnQgeyBFcXVhbHNEYXRlVGltZSB9IGZyb20gJy4uLy4uL29wZXJhdG9yL2VxdWFscy1kYXRlLXRpbWUnO1xuaW1wb3J0IHsgRXF1YWxzIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvZXF1YWxzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgb2YsIFJlcGxheVN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2F0ZWdvcnkgfSBmcm9tICcuLi9jYXRlZ29yeSc7XG5pbXBvcnQgeyBOb3RFcXVhbHMgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9ub3QtZXF1YWxzJztcbmltcG9ydCB7IE1vcmVUaGFuIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbW9yZS10aGFuJztcbmltcG9ydCB7IExlc3NUaGFuIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbGVzcy10aGFuJztcbmltcG9ydCB7IEluUmFuZ2UgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9pbi1yYW5nZSc7XG5pbXBvcnQgeyBJc051bGwgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9pcy1udWxsJztcbmltcG9ydCB7IExpa2UgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9saWtlJztcbmltcG9ydCB7IE5vdEVxdWFsc0RhdGUgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9ub3QtZXF1YWxzLWRhdGUnO1xuaW1wb3J0IHsgTW9yZVRoYW5EYXRlIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbW9yZS10aGFuLWRhdGUnO1xuaW1wb3J0IHsgTGVzc1RoYW5EYXRlIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbGVzcy10aGFuLWRhdGUnO1xuaW1wb3J0IHsgSW5SYW5nZURhdGUgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9pbi1yYW5nZS1kYXRlJztcbmltcG9ydCB7IE1vcmVUaGFuRGF0ZVRpbWUgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9tb3JlLXRoYW4tZGF0ZS10aW1lJztcbmltcG9ydCB7IExlc3NUaGFuRGF0ZVRpbWUgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9sZXNzLXRoYW4tZGF0ZS10aW1lJztcbmltcG9ydCB7IEluUmFuZ2VEYXRlVGltZSB9IGZyb20gJy4uLy4uL29wZXJhdG9yL2luLXJhbmdlLWRhdGUtdGltZSc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVPcHRpb25zIH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlLW9wdGlvbnMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbklucHV0IH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi1pbnB1dCc7XG5pbXBvcnQgeyBTZWFyY2hJbmRleCB9IGZyb20gJy4uLy4uL3NlYXJjaC1pbmRleCc7XG5pbXBvcnQgeyBDYXRlZ29yaWVzIH0gZnJvbSAnLi4vY2F0ZWdvcmllcyc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCBtb21lbnQsIHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IENhdGVnb3J5TWV0YWRhdGFDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vcGVyc2lzdGFuY2UvZ2VuZXJhdG9yLW1ldGFkYXRhJztcbmltcG9ydCB7IE1vcmVUaGFuRXF1YWwgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9tb3JlLXRoYW4tZXF1YWwnO1xuaW1wb3J0IHsgTGVzc1RoYW5FcXVhbCB9IGZyb20gJy4uLy4uL29wZXJhdG9yL2xlc3MtdGhhbi1lcXVhbCc7XG5pbXBvcnQgeyBNb3JlVGhhbkVxdWFsRGF0ZSB9IGZyb20gJy4uLy4uL29wZXJhdG9yL21vcmUtdGhhbi1lcXVhbC1kYXRlJztcbmltcG9ydCB7IExlc3NUaGFuRXF1YWxEYXRlIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbGVzcy10aGFuLWVxdWFsLWRhdGUnO1xuaW1wb3J0IHsgTW9yZVRoYW5FcXVhbERhdGVUaW1lIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbW9yZS10aGFuLWVxdWFsLWRhdGUtdGltZSc7XG5pbXBvcnQgeyBMZXNzVGhhbkVxdWFsRGF0ZVRpbWUgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9sZXNzLXRoYW4tZXF1YWwtZGF0ZS10aW1lJztcbmltcG9ydCB7IEZpbHRlclRleHRTZWdtZW50IH0gZnJvbSAnLi4vLi4vcGVyc2lzdGFuY2UvZmlsdGVyLXRleHQtc2VnbWVudCc7XG5pbXBvcnQgeyBVc2VyQXV0b2NvbXBsZXRlIH0gZnJvbSAnLi4vdXNlci1hdXRvY29tcGxldGUnO1xuXG5pbnRlcmZhY2UgRGF0YWZpZWxkIHtcbiAgICBuZXRJZGVudGlmaWVyOiBzdHJpbmc7XG4gICAgZmllbGRJZDogc3RyaW5nO1xuICAgIGZpZWxkVHlwZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQ2FzZURhdGFzZXQgZXh0ZW5kcyBDYXRlZ29yeTxEYXRhZmllbGQ+IGltcGxlbWVudHMgQXV0b2NvbXBsZXRlT3B0aW9ucyB7XG5cbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaTE4biA9ICdzZWFyY2guY2F0ZWdvcnkuY2FzZS5kYXRhc2V0JztcbiAgICBwcm90ZWN0ZWQgc3RhdGljIERJU0FCTEVEX1RZUEVTID0gWydidXR0b24nLCAndGFza1JlZicsICdjYXNlUmVmJywgJ2ZpbHRlciddO1xuICAgIHByb3RlY3RlZCBzdGF0aWMgcmVhZG9ubHkgREFUQUZJRUxEX01FVEFEQVRBID0gJ2RhdGFmaWVsZCc7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVVUT0NPTVBMRVRFX0lDT04gPSAnYWNjb3VudF9jaXJjbGUnO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9EQVRBRklFTERfSU5QVVQ6IENvbmZpZ3VyYXRpb25JbnB1dDtcblxuICAgIHByb3RlY3RlZCBfcHJvY2Vzc0NhdGVnb3J5OiBDYXNlUHJvY2VzcztcblxuICAgIHByb3RlY3RlZCBfY29uZmlndXJhdGlvbklucHV0cyQ6IEJlaGF2aW9yU3ViamVjdDxBcnJheTxDb25maWd1cmF0aW9uSW5wdXQ+PjtcblxuICAgIHByb3RlY3RlZCBfZGF0YWZpZWxkT3B0aW9uczogTWFwPHN0cmluZywgQXJyYXk8RGF0YWZpZWxkPj47XG5cbiAgICBwcml2YXRlIF9kYXRhZmllbGRPcHRpb25zSW5pdGlhbGl6ZWQkOiBSZXBsYXlTdWJqZWN0PHZvaWQ+O1xuICAgIHByaXZhdGUgX2FsbG93ZWROZXRzU3ViOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBfdXNlckF1dG9jb21wbGV0ZTogVXNlckF1dG9jb21wbGV0ZTtcblxuICAgIHB1YmxpYyBzdGF0aWMgRmllbGRUeXBlVG9JbnB1dFR5cGUoZmllbGRUeXBlOiBzdHJpbmcpOiBTZWFyY2hJbnB1dFR5cGUge1xuICAgICAgICBzd2l0Y2ggKGZpZWxkVHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFNlYXJjaElucHV0VHlwZS5EQVRFO1xuICAgICAgICAgICAgY2FzZSAnZGF0ZVRpbWUnOlxuICAgICAgICAgICAgICAgIHJldHVybiBTZWFyY2hJbnB1dFR5cGUuREFURV9USU1FO1xuICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gU2VhcmNoSW5wdXRUeXBlLk5VTUJFUjtcbiAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgICAgICAgIHJldHVybiBTZWFyY2hJbnB1dFR5cGUuQk9PTEVBTjtcbiAgICAgICAgICAgIGNhc2UgJ3VzZXInOlxuICAgICAgICAgICAgICAgIHJldHVybiBTZWFyY2hJbnB1dFR5cGUuQVVUT0NPTVBMRVRFO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gU2VhcmNoSW5wdXRUeXBlLlRFWFQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihvcGVyYXRvcnM6IE9wZXJhdG9yU2VydmljZSwgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLCBwcm90ZWN0ZWQgX29wdGlvbmFsRGVwZW5kZW5jaWVzOiBPcHRpb25hbERlcGVuZGVuY2llcykge1xuICAgICAgICBzdXBlcih1bmRlZmluZWQsXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICBgJHtDYXNlRGF0YXNldC5faTE4bn0ubmFtZWAsXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICBsb2dnZXIsXG4gICAgICAgICAgICBvcGVyYXRvcnMpO1xuXG4gICAgICAgIHRoaXMuX3Byb2Nlc3NDYXRlZ29yeSA9IHRoaXMuX29wdGlvbmFsRGVwZW5kZW5jaWVzLmNhdGVnb3J5RmFjdG9yeS5nZXQoQ2FzZVByb2Nlc3MpIGFzIENhc2VQcm9jZXNzO1xuICAgICAgICB0aGlzLl9wcm9jZXNzQ2F0ZWdvcnkuc2VsZWN0RGVmYXVsdE9wZXJhdG9yKCk7XG5cbiAgICAgICAgdGhpcy5fZGF0YWZpZWxkT3B0aW9ucyA9IG5ldyBNYXA8c3RyaW5nLCBBcnJheTxEYXRhZmllbGQ+PigpO1xuICAgICAgICB0aGlzLl91c2VyQXV0b2NvbXBsZXRlID0gbmV3IFVzZXJBdXRvY29tcGxldGUodGhpcy5fb3B0aW9uYWxEZXBlbmRlbmNpZXMpO1xuICAgICAgICB0aGlzLmNyZWF0ZURhdGFmaWVsZE9wdGlvbnMoKTtcblxuICAgICAgICB0aGlzLl9EQVRBRklFTERfSU5QVVQgPSBuZXcgQ29uZmlndXJhdGlvbklucHV0KFxuICAgICAgICAgICAgU2VhcmNoSW5wdXRUeXBlLkFVVE9DT01QTEVURSxcbiAgICAgICAgICAgICdzZWFyY2guY2F0ZWdvcnkuY2FzZS5kYXRhc2V0LnBsYWNlaG9sZGVyLmZpZWxkJyxcbiAgICAgICAgICAgIHRydWUsXG4gICAgICAgICAgICB0aGlzLl9kYXRhZmllbGRPcHRpb25zLFxuICAgICAgICAgICAgKG1hcEtleXMsIG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hcEtleXMubWFwKHNlcmlhbGl6ZWRNYXBLZXkgPT4gRGF0YWZpZWxkTWFwS2V5LnBhcnNlKHNlcmlhbGl6ZWRNYXBLZXkpKVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKG1hcEtleSA9PiBtYXBLZXkudGl0bGUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKG5ld1ZhbHVlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fY29uZmlndXJhdGlvbklucHV0cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PENvbmZpZ3VyYXRpb25JbnB1dD4+KFt0aGlzLl9EQVRBRklFTERfSU5QVVRdKTtcblxuICAgICAgICB0aGlzLl9EQVRBRklFTERfSU5QVVQudmFsdWVDaGFuZ2VzJCgpLnN1YnNjcmliZShuZXdWYWx1ZSA9PiB7XG4gICAgICAgICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgbmV3VmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY29uZmlndXJhdGlvbklucHV0cyQubmV4dChbdGhpcy5fREFUQUZJRUxEX0lOUFVUXSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2NvbmZpZ3VyYXRpb25JbnB1dHMkLmdldFZhbHVlKCkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY29uZmlndXJhdGlvbklucHV0cyQubmV4dChbdGhpcy5fREFUQUZJRUxEX0lOUFVULCB0aGlzLl9PUEVSQVRPUl9JTlBVVF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JGb3JtQ29udHJvbC5zZXRWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBkZXN0cm95KCkge1xuICAgICAgICBzdXBlci5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuX2NvbmZpZ3VyYXRpb25JbnB1dHMkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX2RhdGFmaWVsZE9wdGlvbnNJbml0aWFsaXplZCQuY29tcGxldGUoKTtcbiAgICAgICAgaWYgKHRoaXMuX2FsbG93ZWROZXRzU3ViICYmICF0aGlzLl9hbGxvd2VkTmV0c1N1Yi5jbG9zZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2FsbG93ZWROZXRzU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcHJvY2Vzc0NhdGVnb3J5LmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBnZXQgY29uZmlndXJhdGlvbklucHV0cyQoKTogT2JzZXJ2YWJsZTxBcnJheTxDb25maWd1cmF0aW9uSW5wdXQ+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb25maWd1cmF0aW9uSW5wdXRzJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlucHV0VHlwZSgpOiBTZWFyY2hJbnB1dFR5cGUge1xuICAgICAgICBpZiAoIXRoaXMuaGFzU2VsZWN0ZWREYXRhZmllbGRzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0lucHV0IHR5cGUgb2YgYXJndW1lbnRzIGNhbm5vdCBiZSBkZXRlcm1pbmVkIGJlZm9yZSBzZWxlY3RpbmcgYSBkYXRhIGZpZWxkIGR1cmluZyB0aGUgY29uZmlndXJhdGlvbi4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gQ2FzZURhdGFzZXQuRmllbGRUeXBlVG9JbnB1dFR5cGUodGhpcy5fc2VsZWN0ZWREYXRhZmllbGRzWzBdLmZpZWxkVHlwZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGFsbG93ZWQgb3BlcmF0b3JzIGFyZSBkZXBlbmRhbnQgb24gdGhlIHNlbGVjdGVkIGRhdGEgZmllbGQuXG4gICAgICpcbiAgICAgKiBCZXdhcmUgdGhhdCBpZiB5b3Ugd2FudCB0byBjaGFuZ2UgdGhlIG9yZGVyIG9mIHRoZSBhbGxvd2VkIG9wZXJhdG9ycywgdGhlbiB5b3UgbXVzdCBhbHNvIHVwZGF0ZSB0aGVcbiAgICAgKiBbc2VsZWN0RGVmYXVsdE9wZXJhdG9yKClde0BsaW5rIENhdGVnb3J5I3NlbGVjdERlZmF1bHRPcGVyYXRvcn0gbWV0aG9kLCBzbyB0aGF0IGRlZmF1bHQgb3BlcmF0b3IgZm9yIGVhY2ggZGF0YSBmaWVsZCB0eXBlIG1hdGNoZXNcbiAgICAgKiB0aGUgZGVmYXVsdCBvcGVyYXRvciBvZiB0aGUge0BsaW5rIENhc2VTaW1wbGVEYXRhc2V0fSBzZWFyY2ggY2F0ZWdvcnkuIE90aGVyd2lzZSB0aGUgdHJhbnNpdGlvbiBvZiBoZWFkZXIgc2VhcmNoIGludG8gdGhlIHNlYXJjaCBHVUlcbiAgICAgKiB3b24ndCB3b3JrIHByb3Blcmx5LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgYWxsb3dlZE9wZXJhdG9ycygpOiBBcnJheTxPcGVyYXRvcjxhbnk+PiB7XG4gICAgICAgIGlmICghdGhpcy5oYXNTZWxlY3RlZERhdGFmaWVsZHMpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKHRoaXMuX3NlbGVjdGVkRGF0YWZpZWxkc1swXS5maWVsZFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKEVxdWFscyksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihOb3RFcXVhbHMpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTW9yZVRoYW4pLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTW9yZVRoYW5FcXVhbCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihMZXNzVGhhbiksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihMZXNzVGhhbkVxdWFsKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKEluUmFuZ2UpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoSXNOdWxsKVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoRXF1YWxzKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKE5vdEVxdWFscylcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgY2FzZSAndXNlcic6XG4gICAgICAgICAgICBjYXNlICd1c2VyTGlzdCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKEVxdWFscyksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihOb3RFcXVhbHMpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoSXNOdWxsKVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoRXF1YWxzRGF0ZSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihOb3RFcXVhbHNEYXRlKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKE1vcmVUaGFuRGF0ZSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihNb3JlVGhhbkVxdWFsRGF0ZSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihMZXNzVGhhbkRhdGUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTGVzc1RoYW5FcXVhbERhdGUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoSW5SYW5nZURhdGUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoSXNOdWxsKVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICBjYXNlICdkYXRlVGltZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKEVxdWFsc0RhdGVUaW1lKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKE1vcmVUaGFuRGF0ZVRpbWUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTW9yZVRoYW5FcXVhbERhdGVUaW1lKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKExlc3NUaGFuRGF0ZVRpbWUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTGVzc1RoYW5FcXVhbERhdGVUaW1lKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKEluUmFuZ2VEYXRlVGltZSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihJc051bGwpXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKFN1YnN0cmluZyksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihFcXVhbHMpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTm90RXF1YWxzKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKElzTnVsbCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihMaWtlKVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBgQ2FzZURhdGFzZXRgIGNhdGVnb3J5IGlzIG5vdCBkaXNwbGF5ZWQgaW4gYm9sZCBmb3IgYmV0dGVyIHJlYWRhYmlsaXR5XG4gICAgICovXG4gICAgZ2V0IGRpc3BsYXlCb2xkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNTZWxlY3RlZERhdGFmaWVsZHMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9EQVRBRklFTERfSU5QVVQuaXNPcHRpb25TZWxlY3RlZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IF9zZWxlY3RlZERhdGFmaWVsZHMoKTogQXJyYXk8RGF0YWZpZWxkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhZmllbGRPcHRpb25zLmdldCh0aGlzLl9EQVRBRklFTERfSU5QVVQuZm9ybUNvbnRyb2wudmFsdWUudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZXNldCgpIHtcbiAgICAgICAgc3VwZXIucmVzZXQoKTtcbiAgICAgICAgdGhpcy5fREFUQUZJRUxEX0lOUFVULmNsZWFyKCk7XG4gICAgfVxuXG4gICAgZHVwbGljYXRlKCk6IENhc2VEYXRhc2V0IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYXNlRGF0YXNldCh0aGlzLl9vcGVyYXRvclNlcnZpY2UsIHRoaXMuX2xvZywgdGhpcy5fb3B0aW9uYWxEZXBlbmRlbmNpZXMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgZWxhc3RpY0tleXdvcmRzKCk6IEFycmF5PHN0cmluZz4ge1xuICAgICAgICBpZiAoIXRoaXMuaGFzU2VsZWN0ZWREYXRhZmllbGRzKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWREYXRhZmllbGRzLm1hcChkYXRhZmllbGQgPT4gdGhpcy5yZXNvbHZlRWxhc3RpY0tleXdvcmQoZGF0YWZpZWxkKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzb2x2ZUVsYXN0aWNLZXl3b3JkKGRhdGFmaWVsZDogRGF0YWZpZWxkKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZXIgPSB0aGlzLl9vcHRpb25hbERlcGVuZGVuY2llcy5zZWFyY2hJbmRleFJlc29sdmVyO1xuICAgICAgICBzd2l0Y2ggKGRhdGFmaWVsZC5maWVsZFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVyLmdldEluZGV4KGRhdGFmaWVsZC5maWVsZElkLCBTZWFyY2hJbmRleC5OVU1CRVIpO1xuICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICBjYXNlICdkYXRlVGltZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVyLmdldEluZGV4KGRhdGFmaWVsZC5maWVsZElkLCBTZWFyY2hJbmRleC5USU1FU1RBTVApO1xuICAgICAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVyLmdldEluZGV4KGRhdGFmaWVsZC5maWVsZElkLCBTZWFyY2hJbmRleC5CT09MRUFOKTtcbiAgICAgICAgICAgIGNhc2UgJ2ZpbGUnOlxuICAgICAgICAgICAgY2FzZSAnZmlsZUxpc3QnOlxuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlci5nZXRJbmRleChkYXRhZmllbGQuZmllbGRJZCwgU2VhcmNoSW5kZXguRklMRV9OQU1FLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU2VsZWN0ZWRPcGVyYXRvcihFcXVhbHMpIHx8IHRoaXMuaXNTZWxlY3RlZE9wZXJhdG9yKE5vdEVxdWFscykgfHwgdGhpcy5pc1NlbGVjdGVkT3BlcmF0b3IoU3Vic3RyaW5nKVxuICAgICAgICAgICAgICAgICAgICB8fCB0aGlzLmlzU2VsZWN0ZWRPcGVyYXRvcihJc051bGwpKTtcbiAgICAgICAgICAgIGNhc2UgJ3VzZXInOlxuICAgICAgICAgICAgY2FzZSAndXNlckxpc3QnOlxuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlci5nZXRJbmRleChkYXRhZmllbGQuZmllbGRJZCwgU2VhcmNoSW5kZXguVVNFUl9JRCk7XG4gICAgICAgICAgICBjYXNlICdpMThuJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZXIuZ2V0SW5kZXgoZGF0YWZpZWxkLmZpZWxkSWQsIFNlYXJjaEluZGV4LlRFWFQsIHRoaXMuaXNTZWxlY3RlZE9wZXJhdG9yKEVxdWFscykgfHwgdGhpcy5pc1NlbGVjdGVkT3BlcmF0b3IoTm90RXF1YWxzKSB8fCB0aGlzLmlzU2VsZWN0ZWRPcGVyYXRvcihTdWJzdHJpbmcpXG4gICAgICAgICAgICAgICAgICAgIHx8IHRoaXMuaXNTZWxlY3RlZE9wZXJhdG9yKElzTnVsbCkpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZXIuZ2V0SW5kZXgoZGF0YWZpZWxkLmZpZWxkSWQsIFNlYXJjaEluZGV4LkZVTExURVhULFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU2VsZWN0ZWRPcGVyYXRvcihFcXVhbHMpIHx8IHRoaXMuaXNTZWxlY3RlZE9wZXJhdG9yKE5vdEVxdWFscykgfHwgdGhpcy5pc1NlbGVjdGVkT3BlcmF0b3IoU3Vic3RyaW5nKVxuICAgICAgICAgICAgICAgICAgICB8fCB0aGlzLmlzU2VsZWN0ZWRPcGVyYXRvcihJc051bGwpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBpbnB1dFBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICghdGhpcy5oYXNTZWxlY3RlZERhdGFmaWVsZHMpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtDYXNlRGF0YXNldC5faTE4bn0ucGxhY2Vob2xkZXIuZmllbGRgO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHtDYXNlRGF0YXNldC5faTE4bn0ucGxhY2Vob2xkZXIudmFsdWVgO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgZGF0YWZpZWxkT3B0aW9uc0luaXRpYWxpemVkJCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFmaWVsZE9wdGlvbnNJbml0aWFsaXplZCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdlbmVyYXRlUXVlcnkodXNlcklucHV0OiBBcnJheTx1bmtub3duPik6IFF1ZXJ5IHtcbiAgICAgICAgbGV0IHF1ZXJ5R2VuZXJhdGlvblN0cmF0ZWd5O1xuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkT3BlcmF0b3IoSXNOdWxsKSkge1xuICAgICAgICAgICAgcXVlcnlHZW5lcmF0aW9uU3RyYXRlZ3kgPSAoZCwgXykgPT4gdGhpcy5pc051bGxPcGVyYXRvclF1ZXJ5R2VuZXJhdGlvblN0cmF0ZWd5KGQpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaW5wdXRUeXBlID09PSBTZWFyY2hJbnB1dFR5cGUuQVVUT0NPTVBMRVRFKSB7XG4gICAgICAgICAgICBxdWVyeUdlbmVyYXRpb25TdHJhdGVneSA9IChkLCB1aSkgPT4gdGhpcy5zdGFuZGFyZFF1ZXJ5R2VuZXJhdGlvblN0cmF0ZWd5KGQsIHVpWzBdLCBmYWxzZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBxdWVyeUdlbmVyYXRpb25TdHJhdGVneSA9IChkLCB1aSkgPT4gdGhpcy5zdGFuZGFyZFF1ZXJ5R2VuZXJhdGlvblN0cmF0ZWd5KGQsIHVpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHF1ZXJpZXMgPSB0aGlzLl9zZWxlY3RlZERhdGFmaWVsZHMubWFwKGRhdGFmaWVsZCA9PiBxdWVyeUdlbmVyYXRpb25TdHJhdGVneShkYXRhZmllbGQsIHVzZXJJbnB1dCkpO1xuICAgICAgICByZXR1cm4gUXVlcnkuY29tYmluZVF1ZXJpZXMocXVlcmllcywgQm9vbGVhbk9wZXJhdG9yLk9SKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc3RhbmRhcmRRdWVyeUdlbmVyYXRpb25TdHJhdGVneShkYXRhZmllbGQ6IERhdGFmaWVsZCwgdXNlcklucHV0OiBBcnJheTx1bmtub3duPiwgZXNjYXBlSW5wdXQgPSB0cnVlKTogUXVlcnkge1xuICAgICAgICBjb25zdCB2YWx1ZVF1ZXJ5ID0gdGhpcy5zZWxlY3RlZE9wZXJhdG9yLmNyZWF0ZVF1ZXJ5KHRoaXMuZWxhc3RpY0tleXdvcmRzLCB1c2VySW5wdXQsIGVzY2FwZUlucHV0KTtcbiAgICAgICAgY29uc3QgbmV0UXVlcnkgPSB0aGlzLmdlbmVyYXRlTmV0Q29uc3RyYWludChkYXRhZmllbGQpO1xuICAgICAgICByZXR1cm4gUXVlcnkuY29tYmluZVF1ZXJpZXMoW3ZhbHVlUXVlcnksIG5ldFF1ZXJ5XSwgQm9vbGVhbk9wZXJhdG9yLkFORCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGlzTnVsbE9wZXJhdG9yUXVlcnlHZW5lcmF0aW9uU3RyYXRlZ3koZGF0YWZpZWxkOiBEYXRhZmllbGQpOiBRdWVyeSB7XG4gICAgICAgIGNvbnN0IGNvbnN0cmFpbnQgPSB0aGlzLmdlbmVyYXRlTmV0Q29uc3RyYWludChkYXRhZmllbGQpO1xuICAgICAgICByZXR1cm4gKHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihJc051bGwpIGFzIElzTnVsbCkuY3JlYXRlUXVlcnlXaXRoQ29uc3RyYWludCh0aGlzLmVsYXN0aWNLZXl3b3JkcywgY29uc3RyYWludCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdlbmVyYXRlTmV0Q29uc3RyYWludChkYXRhZmllbGQ6IERhdGFmaWVsZCk6IFF1ZXJ5IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2Nlc3NDYXRlZ29yeS5nZW5lcmF0ZVByZWRpY2F0ZShbW2RhdGFmaWVsZC5uZXRJZGVudGlmaWVyXV0pLnF1ZXJ5O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVEYXRhZmllbGRPcHRpb25zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kYXRhZmllbGRPcHRpb25zSW5pdGlhbGl6ZWQkID0gbmV3IFJlcGxheVN1YmplY3Q8dm9pZD4oMSk7XG4gICAgICAgIHRoaXMuX2FsbG93ZWROZXRzU3ViID0gdGhpcy5fb3B0aW9uYWxEZXBlbmRlbmNpZXMuYWxsb3dlZE5ldHNTZXJ2aWNlLmFsbG93ZWROZXRzJC5zdWJzY3JpYmUoYWxsb3dlZE5ldHMgPT4ge1xuICAgICAgICAgICAgYWxsb3dlZE5ldHMuZm9yRWFjaChwZXRyaU5ldCA9PiB7XG4gICAgICAgICAgICAgICAgcGV0cmlOZXQuaW1tZWRpYXRlRGF0YVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGltbWVkaWF0ZURhdGEgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGltbWVkaWF0ZURhdGEudGl0bGUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIGltbWVkaWF0ZURhdGEudGl0bGUudHJpbSgpLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhQ2FzZURhdGFzZXQuRElTQUJMRURfVFlQRVMuaW5jbHVkZXMoaW1tZWRpYXRlRGF0YS50eXBlKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goaW1tZWRpYXRlRGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdHlwZSA9IGltbWVkaWF0ZURhdGEudHlwZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHNlYXJjaCBwdXJwb3NlcywgZW51bWVyYXRpb24gYW5kIG11bHRpY2hvaWNlIG1hcHMgYXJlIGVxdWl2YWxlbnQgdG8gdGhlaXIgc2ltcGxlciBjb3VudGVycGFydHNcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAnZW51bWVyYXRpb25fbWFwJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSAnZW51bWVyYXRpb24nO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnbXVsdGljaG9pY2VfbWFwJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSAnbXVsdGljaG9pY2UnO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFRvRGF0YWZpZWxkT3B0aW9uc01hcChEYXRhZmllbGRNYXBLZXkuc2VyaWFsaXplZEZvcm0oaW1tZWRpYXRlRGF0YS50eXBlLCBpbW1lZGlhdGVEYXRhLnRpdGxlKSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldElkZW50aWZpZXI6IHBldHJpTmV0LmlkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRJZDogaW1tZWRpYXRlRGF0YS5zdHJpbmdJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZFR5cGU6IGltbWVkaWF0ZURhdGEudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5fZGF0YWZpZWxkT3B0aW9uc0luaXRpYWxpemVkJC5uZXh0KCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGZpbHRlck9wdGlvbnModXNlcklucHV0OiBPYnNlcnZhYmxlPHN0cmluZyB8IFNlYXJjaEF1dG9jb21wbGV0ZU9wdGlvbjxBcnJheTxzdHJpbmc+Pj4pOlxuICAgICAgICBPYnNlcnZhYmxlPEFycmF5PFNlYXJjaEF1dG9jb21wbGV0ZU9wdGlvbjxBcnJheTxzdHJpbmc+Pj4+IHtcblxuICAgICAgICBpZiAoIXRoaXMuaGFzU2VsZWN0ZWREYXRhZmllbGRzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBjYXRlZ29yeSBtdXN0IGJlIGZ1bGx5IGNvbmZpZ3VyZWQgYmVmb3JlIGF0dGVtcHRpbmcgdG8gZ2V0IGF1dG9jb21wbGV0ZSBvcHRpb25zIScpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlucHV0VHlwZSAhPT0gU2VhcmNoSW5wdXRUeXBlLkFVVE9DT01QTEVURSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZmlsdGVyIG9wdGlvbnMgb2Ygbm9uLWF1dG9jb21wbGV0ZSBvcGVyYW5kcycpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXJBdXRvY29tcGxldGUuZmlsdGVyT3B0aW9ucyh1c2VySW5wdXQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWxlY3REYXRhZmllbGRzKGRhdGFmaWVsZE1hcEtleTogc3RyaW5nLCBzZWxlY3REZWZhdWx0T3BlcmF0b3IgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fZGF0YWZpZWxkT3B0aW9ucy5oYXMoZGF0YWZpZWxkTWFwS2V5KSkge1xuICAgICAgICAgICAgdGhpcy5fbG9nLndhcm4oYFRoZSBwcm92aWRlZCAnZGF0YWZpZWxkTWFwS2V5JyAoJHtkYXRhZmllbGRNYXBLZXl9KSBkb2VzIG5vdCBleGlzdC5gKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9EQVRBRklFTERfSU5QVVQuZm9ybUNvbnRyb2wuc2V0VmFsdWUoRGF0YWZpZWxkTWFwS2V5LnBhcnNlKGRhdGFmaWVsZE1hcEtleSkpO1xuICAgICAgICBpZiAoc2VsZWN0RGVmYXVsdE9wZXJhdG9yKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdERlZmF1bHRPcGVyYXRvcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhIG5ldyBlbnRyeSBvciBwdXNoZXMgdmFsdWUgaW50byBhbiBleGlzdGluZyBlbnRyeS5cbiAgICAgKiBXaGVuIGEgbmV3IGVudHJ5IGlzIGNyZWF0ZWQsIGl0IGlzIGNyZWF0ZWQgYXMgYW4gQXJyYXkgb2Ygb25lIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIGtleSB3aGVyZSBpbiB0aGUgbWFwIHNob3VsZCB0aGUgdmFsdWUgYmUgYWRkZWRcbiAgICAgKiBAcGFyYW0gdmFsdWUgdGhlIHZhbHVlIHRoYXQgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBtYXBcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWRkVG9EYXRhZmllbGRPcHRpb25zTWFwKGtleTogc3RyaW5nLCB2YWx1ZTogRGF0YWZpZWxkKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9kYXRhZmllbGRPcHRpb25zLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhZmllbGRPcHRpb25zLmdldChrZXkpLnB1c2godmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZGF0YWZpZWxkT3B0aW9ucy5zZXQoa2V5LCBbdmFsdWVdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBpc09wZXJhbmRWYWx1ZVNlbGVjdGVkKG5ld1ZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzT3BlcmF0b3JTZWxlY3RlZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGlucHV0VHlwZTogU2VhcmNoSW5wdXRUeXBlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaW5wdXRUeXBlID0gdGhpcy5pbnB1dFR5cGU7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAoaW5wdXRUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaElucHV0VHlwZS5OVU1CRVI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ251bWJlcic7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaElucHV0VHlwZS5CT09MRUFOOlxuICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgbmV3VmFsdWUgPT09ICdib29sZWFuJztcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoSW5wdXRUeXBlLkFVVE9DT01QTEVURTpcbiAgICAgICAgICAgICAgICByZXR1cm4gISghbmV3VmFsdWUgfHwgdHlwZW9mIG5ld1ZhbHVlID09PSAnc3RyaW5nJyk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiAhIW5ld1ZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgYSB0cmFuc2Zvcm1hdGlvbiBvZiB0aGUgYEZvcm1Db250cm9sYCB2YWx1ZSBiZWZvcmUgcGFzc2luZyBpdCBpbnRvIHRoZSBzZWxlY3RlZCBgT3BlcmF0b3JgIGZvciBxdWVyeSBnZW5lcmF0aW9uLlxuICAgICAqIEl0IGlzIG1vc3RseSB1c2VmdWwgb25seSBmb3IgQXV0b2NvbXBsZXRlQ2F0ZWdvcmllcywgd2hlcmUgdGhlIHNlbGVjdGVkIHZhbHVlIG9mIHRoZSBGb3JtQ29udHJvbCBpcyBhbiBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWUgdGhlIEZvcm1Db250cm9sVmFsdWVcbiAgICAgKiBAcmV0dXJucyBJZiB0aGUgc2VsZWN0ZWQgZGF0YSBmaWVsZCBoYXMgaW5wdXQgdHlwZSBgQVVUT0NPTVBMRVRFYCB0aGVuIHJldHVybnMgdGhlIHtAbGluayBTZWFyY2hBdXRvY29tcGxldGVPcHRpb259IGB2YWx1ZWBcbiAgICAgKiBhdHRyaWJ1dGUuIE90aGVyd2lzZSBwZXJmb3JtcyBhbiBpZGVudGl0eSBvcGVyYXRpb24uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHRyYW5zZm9ybUNhdGVnb3J5VmFsdWUodmFsdWU6IGFueSk6IGFueSB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0VHlwZSA9PT0gU2VhcmNoSW5wdXRUeXBlLkFVVE9DT01QTEVURSkge1xuICAgICAgICAgICAgcmV0dXJuICh2YWx1ZSBhcyBTZWFyY2hBdXRvY29tcGxldGVPcHRpb248QXJyYXk8bnVtYmVyPj4pLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBzZXJpYWxpemVDbGFzcygpOiBDYXRlZ29yaWVzIHwgc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIENhdGVnb3JpZXMuQ0FTRV9EQVRBU0VUO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXJpYWxpemVPcGVyYW5kVmFsdWUodmFsdWVGb3JtQ29udHJvbDogRm9ybUNvbnRyb2wpOiB1bmtub3duIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLmlucHV0VHlwZSkge1xuICAgICAgICAgICAgY2FzZSBTZWFyY2hJbnB1dFR5cGUuQVVUT0NPTVBMRVRFOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl91c2VyQXV0b2NvbXBsZXRlLnNlcmlhbGl6ZU9wZXJhbmRWYWx1ZSh2YWx1ZUZvcm1Db250cm9sKTtcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoSW5wdXRUeXBlLkRBVEU6XG4gICAgICAgICAgICBjYXNlIFNlYXJjaElucHV0VHlwZS5EQVRFX1RJTUU6XG4gICAgICAgICAgICAgICAgcmV0dXJuICh2YWx1ZUZvcm1Db250cm9sLnZhbHVlIGFzIE1vbWVudCkudmFsdWVPZigpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuc2VyaWFsaXplT3BlcmFuZFZhbHVlKHZhbHVlRm9ybUNvbnRyb2wpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZU1ldGFkYXRhQ29uZmlndXJhdGlvbigpOiBDYXRlZ29yeU1ldGFkYXRhQ29uZmlndXJhdGlvbiB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHN1cGVyLmNyZWF0ZU1ldGFkYXRhQ29uZmlndXJhdGlvbigpO1xuICAgICAgICBjb25maWdbQ2FzZURhdGFzZXQuREFUQUZJRUxEX01FVEFEQVRBXSA9ICh0aGlzLl9EQVRBRklFTERfSU5QVVQuZm9ybUNvbnRyb2wudmFsdWUgYXMgRGF0YWZpZWxkTWFwS2V5KS50b1NlcmlhbGl6ZWRGb3JtKCk7XG4gICAgICAgIHJldHVybiBjb25maWc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGxvYWRDb25maWd1cmF0aW9uRnJvbU1ldGFkYXRhKGNvbmZpZ3VyYXRpb246IENhdGVnb3J5TWV0YWRhdGFDb25maWd1cmF0aW9uKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCQgPSBuZXcgUmVwbGF5U3ViamVjdDx2b2lkPigxKTtcbiAgICAgICAgdGhpcy5kYXRhZmllbGRPcHRpb25zSW5pdGlhbGl6ZWQkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZXJpYWxpemVkTWFwS2V5ID0gY29uZmlndXJhdGlvbltDYXNlRGF0YXNldC5EQVRBRklFTERfTUVUQURBVEFdIGFzIHN0cmluZztcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RGF0YWZpZWxkcyhzZXJpYWxpemVkTWFwS2V5LCBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaGFzU2VsZWN0ZWREYXRhZmllbGRzKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTZWFyY2hlZCBkYXRhIGZpZWxkcyBjYW5ub3QgYmUgcmVzdG9yZWQgZnJvbSB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbiAoJHtzZXJpYWxpemVkTWFwS2V5XG4gICAgICAgICAgICAgICAgfSkuIE1ha2Ugc3VyZSwgdGhhdCB0aGUgY29ycmVjdCBhbGxvd2VkIG5ldHMgYXJlIHByb3ZpZGVkIGluIHRoaXMgdmlldy5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN1cGVyLmxvYWRDb25maWd1cmF0aW9uRnJvbU1ldGFkYXRhKGNvbmZpZ3VyYXRpb24pLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzdWx0JC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgcmVzdWx0JC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0JC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZGVzZXJpYWxpemVPcGVyYW5kVmFsdWUodmFsdWU6IHVua25vd24pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuaW5wdXRUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaElucHV0VHlwZS5BVVRPQ09NUExFVEU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXJBdXRvY29tcGxldGUuZGVzZXJpYWxpemVPcGVyYW5kVmFsdWUodmFsdWUgYXMgU2VhcmNoQXV0b2NvbXBsZXRlT3B0aW9uPEFycmF5PHN0cmluZz4+KTtcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoSW5wdXRUeXBlLkRBVEU6XG4gICAgICAgICAgICBjYXNlIFNlYXJjaElucHV0VHlwZS5EQVRFX1RJTUU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKG1vbWVudCh2YWx1ZSBhcyBzdHJpbmcpKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmRlc2VyaWFsaXplT3BlcmFuZFZhbHVlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVDb25maWd1cmF0aW9uRmlsdGVyVGV4dFNlZ21lbnRzKCk6IEFycmF5PEZpbHRlclRleHRTZWdtZW50PiB7XG4gICAgICAgIHJldHVybiBbe3NlZ21lbnQ6IHRoaXMuX2NvbmZpZ3VyYXRpb25JbnB1dHMkLnZhbHVlWzBdLmZvcm1Db250cm9sLnZhbHVlLnRleHQsIGJvbGQ6IHRydWV9XTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -37,7 +37,7 @@ export class AbstractSearchOperandInputComponent {
|
|
|
37
37
|
}
|
|
38
38
|
return this._filteredOptions$;
|
|
39
39
|
}
|
|
40
|
-
|
|
40
|
+
isInputFilled() {
|
|
41
41
|
if (!this._inputConfirmed) {
|
|
42
42
|
return false;
|
|
43
43
|
}
|
|
@@ -50,7 +50,7 @@ export class AbstractSearchOperandInputComponent {
|
|
|
50
50
|
return;
|
|
51
51
|
}
|
|
52
52
|
this._initialExpansion = false;
|
|
53
|
-
if (!this.isInputFilled) {
|
|
53
|
+
if (!this.isInputFilled()) {
|
|
54
54
|
setTimeout(() => {
|
|
55
55
|
input.nativeElement.focus();
|
|
56
56
|
});
|
|
@@ -109,4 +109,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
109
109
|
type: ViewChild,
|
|
110
110
|
args: ['operandInput']
|
|
111
111
|
}] } });
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3Qtc2VhcmNoLW9wZXJhbmQtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9zZWFyY2gvc2VhcmNoLW9wZXJhbmQtaW5wdXQtY29tcG9uZW50L2Fic3RyYWN0LXNlYXJjaC1vcGVyYW5kLWlucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLEtBQUssRUFBcUIsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUdyRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7O0FBTTVDLE1BQU0sT0FBZ0IsbUNBQW1DO0lBSnpEO1FBTUk7Ozs7V0FJRztRQUNNLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFTZixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQU0xQixzQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFFMUIsb0JBQWUsR0FBRyxDQUFDLFNBQTRDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztLQXVGL0c7SUFyRkcsUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxlQUFlLENBQUMsWUFBWSxFQUFFO1lBQ2pELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDMUUsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDWixJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQztnQkFDOUQsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFD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bUNBQW1DO29CQUM3QyxRQUFRLEVBQUUsRUFBRTtpQkFDZjs4QkFRWSxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFJRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBZ0RLLGFBQWE7c0JBRHZCLFNBQVM7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1Db250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1NlYXJjaElucHV0VHlwZX0gZnJvbSAnLi4vbW9kZWxzL2NhdGVnb3J5L3NlYXJjaC1pbnB1dC10eXBlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7U2VhcmNoQXV0b2NvbXBsZXRlT3B0aW9ufSBmcm9tICcuLi9tb2RlbHMvY2F0ZWdvcnkvc2VhcmNoLWF1dG9jb21wbGV0ZS1vcHRpb24nO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduY2MtYWJzdHJhY3Qtc2VhcmNoLW9wZXJhbmQtaW5wdXQnLFxuICAgIHRlbXBsYXRlOiAnJ1xufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFNlYXJjaE9wZXJhbmRJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGNvbnRlbnRzIGRpc3BsYXllZCBpbiB0aGlzIGNvbXBvbmVudCBjYW4gYmUgZWRpdGVkIGJ5IHRoZSB1c2VyIG9yIG5vdC5cbiAgICAgKlxuICAgICAqIERlZmF1bHRzIHRvIGB0cnVlYFxuICAgICAqL1xuICAgIEBJbnB1dCgpIGVkaXRhYmxlID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBpbnB1dEZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcbiAgICBASW5wdXQoKSBpbnB1dFR5cGU6IFNlYXJjaElucHV0VHlwZTtcbiAgICBASW5wdXQoKSBmaXJzdDogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBPbmx5IGlmIHRoZSBpbnB1dCBpcyBvZiB0eXBlIFtBVVRPQ09NUExFVEV7QGxpbmsgU2VhcmNoSW5wdXRUeXBlI0FVVE9DT01QTEVURX1cbiAgICAgKi9cbiAgICBASW5wdXQoKSBmaWx0ZXJPcHRpb25zRnVuY3Rpb246ICh1c2VySW5wdXQ6IE9ic2VydmFibGU8c3RyaW5nPikgPT4gT2JzZXJ2YWJsZTxBcnJheTxTZWFyY2hBdXRvY29tcGxldGVPcHRpb248dW5rbm93bj4+PjtcblxuICAgIHByb3RlY3RlZCBfaW5wdXRDb25maXJtZWQgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgX2ZpbHRlcmVkT3B0aW9ucyQ6IE9ic2VydmFibGU8QXJyYXk8U2VhcmNoQXV0b2NvbXBsZXRlT3B0aW9uPHVua25vd24+Pj47XG5cbiAgICBwcml2YXRlIF9hdXRvY29tcGxldGVDaGFuZ2U6IFN1YnNjcmlwdGlvbjtcblxuICAgIHByaXZhdGUgX2luaXRpYWxFeHBhbnNpb24gPSB0cnVlO1xuXG4gICAgcHVibGljIHJlbmRlclNlbGVjdGlvbiA9IChzZWxlY3Rpb246IFNlYXJjaEF1dG9jb21wbGV0ZU9wdGlvbjx1bmtub3duPikgPT4gdGhpcy5fcmVuZGVyU2VsZWN0aW9uKHNlbGVjdGlvbik7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRUeXBlID09PSBTZWFyY2hJbnB1dFR5cGUuQVVUT0NPTVBMRVRFKSB7XG4gICAgICAgICAgICB0aGlzLl9hdXRvY29tcGxldGVDaGFuZ2UgPSB0aGlzLmlucHV0Rm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWwgPT4ge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbnB1dENvbmZpcm1lZCA9ICEhdmFsICYmICh0eXBlb2YgdmFsICE9PSAnc3RyaW5nJyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzSW5wdXRWYWx1ZVNldCgpKSB7XG4gICAgICAgICAgICB0aGlzLl9pbnB1dENvbmZpcm1lZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2F1dG9jb21wbGV0ZUNoYW5nZSAmJiAhdGhpcy5fYXV0b2NvbXBsZXRlQ2hhbmdlLmNsb3NlZCkge1xuICAgICAgICAgICAgdGhpcy5fYXV0b2NvbXBsZXRlQ2hhbmdlLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZpbHRlcmVkT3B0aW9ucyQoKTogT2JzZXJ2YWJsZTxBcnJheTxTZWFyY2hBdXRvY29tcGxldGVPcHRpb248dW5rbm93bj4+PiB7XG4gICAgICAgIGlmICghdGhpcy5fZmlsdGVyZWRPcHRpb25zJCkge1xuICAgICAgICAgICAgdGhpcy5fZmlsdGVyZWRPcHRpb25zJCA9IHRoaXMuZmlsdGVyT3B0aW9uc0Z1bmN0aW9uKHRoaXMuaW5wdXRGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoNjAwKSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9maWx0ZXJlZE9wdGlvbnMkO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0lucHV0RmlsbGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuX2lucHV0Q29uZmlybWVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5pc0lucHV0VmFsdWVTZXQoKTtcbiAgICB9XG5cbiAgICBAVmlld0NoaWxkKCdvcGVyYW5kSW5wdXQnKVxuICAgIHB1YmxpYyBzZXQgY2F0ZWdvcnlJbnB1dChpbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pikge1xuICAgICAgICBpZiAoaW5wdXQpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5maXJzdCAmJiB0aGlzLl9pbml0aWFsRXhwYW5zaW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5faW5pdGlhbEV4cGFuc2lvbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2luaXRpYWxFeHBhbnNpb24gPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzSW5wdXRGaWxsZWQoKSkge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY29uZmlybUlucHV0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbnB1dENvbmZpcm1lZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIGVkaXRJbnB1dCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmVkaXRhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9pbnB1dENvbmZpcm1lZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEF1dG9jb21wbGV0ZSBgZGlzcGxheVdpdGhgIGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHNlbGVjdGlvbiB0aGUgc2VsZWN0ZWQgb3B0aW9uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9yZW5kZXJTZWxlY3Rpb24oc2VsZWN0aW9uOiBTZWFyY2hBdXRvY29tcGxldGVPcHRpb248dW5rbm93bj4pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gc2VsZWN0aW9uID8gc2VsZWN0aW9uLnRleHQgOiAnJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaXNJbnB1dFZhbHVlU2V0KCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5pbnB1dFR5cGUgPT09IFNlYXJjaElucHV0VHlwZS5BVVRPQ09NUExFVEUpIHtcbiAgICAgICAgICAgIHJldHVybiAhIXRoaXMuaW5wdXRGb3JtQ29udHJvbC52YWx1ZVxuICAgICAgICAgICAgICAgICYmICh0eXBlb2YgdGhpcy5pbnB1dEZvcm1Db250cm9sLnZhbHVlICE9PSAnc3RyaW5nJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaW5wdXRUeXBlID09PSBTZWFyY2hJbnB1dFR5cGUuVEVYVCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRGb3JtQ29udHJvbC52YWx1ZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgJiYgdGhpcy5pbnB1dEZvcm1Db250cm9sLnZhbHVlICE9PSBudWxsXG4gICAgICAgICAgICAgICAgJiYgdGhpcy5pbnB1dEZvcm1Db250cm9sLnZhbHVlLmxlbmd0aCA+IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRGb3JtQ29udHJvbC52YWx1ZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAmJiB0aGlzLmlucHV0Rm9ybUNvbnRyb2wudmFsdWUgIT09IG51bGw7XG4gICAgfVxufVxuIl19
|