tnx-shared 5.3.259 → 5.3.260
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/tnx-shared.umd.js +22 -12
- package/bundles/tnx-shared.umd.js.map +1 -1
- package/bundles/tnx-shared.umd.min.js +1 -1
- package/bundles/tnx-shared.umd.min.js.map +1 -1
- package/classes/base/data-form-base.d.ts +0 -1
- package/classes/base/data-form-base.d.ts.map +1 -1
- package/classes/form-schema.d.ts +2 -1
- package/classes/form-schema.d.ts.map +1 -1
- package/components/common-search-form/common-search-form.component.d.ts.map +1 -1
- package/esm2015/classes/base/data-form-base.js +1 -10
- package/esm2015/classes/base/list-component-base.js +2 -2
- package/esm2015/classes/form-schema.js +2 -1
- package/esm2015/components/common-search-form/common-search-form.component.js +14 -1
- package/esm2015/components/crud/crud-list/crud-list.component.js +2 -2
- package/esm2015/pipes/tn-date.pipe.js +7 -2
- package/esm2015/services/common.service.js +2 -2
- package/fesm2015/tnx-shared.js +23 -13
- package/fesm2015/tnx-shared.js.map +1 -1
- package/package.json +2 -2
- package/pipes/tn-date.pipe.d.ts.map +1 -1
- package/tnx-shared.metadata.json +1 -1
|
@@ -34,6 +34,9 @@ export class CommonSearchFormComponent extends DataFormBase {
|
|
|
34
34
|
this._index = 1;
|
|
35
35
|
}
|
|
36
36
|
ngOnInit() {
|
|
37
|
+
if (!this.parentSetting.useCommonFullTextSearch) {
|
|
38
|
+
this.parentSetting.disableLazyLoadCommonSearch = true;
|
|
39
|
+
}
|
|
37
40
|
this.mdWidth = this.parentSetting.mdWidthCommonSearch;
|
|
38
41
|
this.setting.baseService = this.parentSetting.baseService;
|
|
39
42
|
this.isCustomGenerateSearch = this.parentSetting.commonSchemas.length > 0;
|
|
@@ -155,6 +158,16 @@ export class CommonSearchFormComponent extends DataFormBase {
|
|
|
155
158
|
this.lstDatetimeControl.push(column.field);
|
|
156
159
|
this._index++;
|
|
157
160
|
break;
|
|
161
|
+
case DataType.timespan:
|
|
162
|
+
addColumn.showIcon = true;
|
|
163
|
+
addColumn.timeOnly = true;
|
|
164
|
+
addColumn.defaultValue = undefined;
|
|
165
|
+
addColumn.onChanged = (evt) => {
|
|
166
|
+
this.handleSearch();
|
|
167
|
+
};
|
|
168
|
+
result.push(new DateTimeControlSchema(addColumn));
|
|
169
|
+
this._index++;
|
|
170
|
+
break;
|
|
158
171
|
case DataType.int:
|
|
159
172
|
case DataType.intWithoutMask:
|
|
160
173
|
case DataType.decimal:
|
|
@@ -331,4 +344,4 @@ CommonSearchFormComponent.propDecorators = {
|
|
|
331
344
|
onClickSearch: [{ type: Output }],
|
|
332
345
|
onAfterToggleMenuSearch: [{ type: Output }]
|
|
333
346
|
};
|
|
334
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXNlYXJjaC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2NvbW1vbi1zZWFyY2gtZm9ybS9jb21tb24tc2VhcmNoLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSwwQkFBMEIsRUFBRSxxQkFBcUIsRUFBNkIsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDblAsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQU92RSxNQUFNLE9BQU8seUJBQTBCLFNBQVEsWUFBWTtJQXlCdkQsWUFDYyxTQUFtQixFQUNuQixjQUE2QjtRQUV2QyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFIUCxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBekJsQyxtQkFBYyxHQUFRLEVBQUUsQ0FBQztRQUN6QixxQkFBZ0IsR0FBRyw0QkFBNEIsQ0FBQztRQUMvQyxrQkFBYSxHQUFHLElBQUksWUFBWSxF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Q0FBQztJQUM1QyxDQUFDO0lBRUssdUJBQXVCOztZQUN6QixNQUFNLFFBQVEsR0FBb0IsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNsSCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDNUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUNqQyxDQUFDO0tBQUE7SUFHSyxpQkFBaUIsQ0FBQyxTQUFvQjs7WUFDeEMsK0VBQStFO1FBRW5GLENBQUM7S0FBQTtJQUVLLGdCQUFnQixDQUFDLElBQUk7O1lBQ3ZCLHFDQUFxQztRQUN6QyxDQUFDO0tBQUE7SUFFRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLEVBQUU7WUFDN0MsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLGtDQUFrQyxDQUFDLENBQUM7U0FDckc7SUFDTCxDQUFDOzs7WUFyVkosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxvQkFBb0I7Z0JBQzlCLDI2REFBa0Q7Z0JBRWxELFNBQVMsRUFBRSxDQUFDLHVCQUF1QixDQUFDOzthQUN2Qzs7O1lBWjZDLFFBQVE7WUFLN0MsYUFBYTs7O21DQVNqQixTQUFTLFNBQUMsc0JBQXNCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFOzZCQUN0RCxLQUFLOytCQUNMLEtBQUs7NEJBQ0wsTUFBTTtzQ0FDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcHAtY29udGV4dC9jb21wb25lbnQtY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGFGb3JtQmFzZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvYmFzZS9kYXRhLWZvcm0tYmFzZSc7XG5pbXBvcnQgeyBDb250cm9sVHlwZSwgQ3VzdG9tQ29udHJvbFNjaGVtYSwgRGF0YVR5cGUsIERhdGVUaW1lQ29udHJvbFNjaGVtYSwgRGF0ZVRpbWVSYW5nZUNvbnRyb2xTY2hlbWEsIERyb3Bkb3duQ29udHJvbFNjaGVtYSwgRXZlbnREYXRhLCBGb3JtU2NoZW1hQmFzZSwgTnVtYmVyUmFuZ2VDb250cm9sU2NoZW1hLCBPcGVyYXRvciwgVGV4dENvbnRyb2xTY2hlbWEgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcbmltcG9ydCB7IEZpbHRlciB9IGZyb20gJy4uLy4uL21vZGVscy9ncmlkLWluZm8nO1xuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbW1vbi5zZXJ2aWNlJztcbmltcG9ydCB7IE1hc3RlckRhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWFzdGVyLWRhdGEuc2VydmljZSc7XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2NvbW1vbi1zZWFyY2gtZm9ybScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbW1vbi1zZWFyY2gtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY29tbW9uLXNlYXJjaC1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbQ29tcG9uZW50Q29udGV4dFNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBDb21tb25TZWFyY2hGb3JtQ29tcG9uZW50IGV4dGVuZHMgRGF0YUZvcm1CYXNlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBAVmlld0NoaWxkKCdjb21tb25TZWFyY2hUZW1wbGF0ZScsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBjb21tb25TZWFyY2hUZW1wbGF0ZTogRWxlbWVudFJlZjtcbiAgICBASW5wdXQoKSB0ZW1wbGF0ZUZpbHRlcjogYW55ID0gW107XG4gICAgQElucHV0KCkgc2VhcmNoQm94VG9vbHRpcCA9ICdUw6xtIGtp4bq/bSB0aGVvIGPDoWMgdHLGsOG7nW5nOiAnO1xuICAgIEBPdXRwdXQoKSBvbkNsaWNrU2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIG9uQWZ0ZXJUb2dnbGVNZW51U2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBtZFdpZHRoID0gMztcbiAgICBsc3REcm9wZG93bkNvbnRyb2wgPSBbXTtcbiAgICBsc3REYXRldGltZUNvbnRyb2wgPSBbXTtcbiAgICBsc3ROdW1iZXJSYW5nZUNvbnRyb2wgPSBbXTtcbiAgICBsc3RUZXh0Q29udHJvbCA9IFtdO1xuICAgIGxzdEJvb2xDb250cm9sID0gW107XG4gICAgbHN0Q29udHJvbE5vdEluID0gW107XG4gICAgbHN0Q29udHJvbEFkZFRvR3JpZEluZm8gPSBbXTtcbiAgICBsc3RDb250cm9sTGF6eUxvYWQgPSBbXTtcbiAgICBkZWZhdWx0VmFsdWVzID0ge307XG4gICAgaXNBZGREZWZhdWx0VmFsdWVzID0gZmFsc2U7XG4gICAgbWFwQ29udHJvbEJpbmRpbmdGaWx0ZXIgPSBuZXcgTWFwKCk7XG4gICAga2V5d29yZHMgPSAnJztcbiAgICBpc09wZW5GdWxsID0gZmFsc2U7XG4gICAgaXNDdXN0b21HZW5lcmF0ZVNlYXJjaCA9IGZhbHNlO1xuICAgIGlzRGlzYWJsZU9wZW5GdWxsID0gZmFsc2U7XG4gICAgX2luZGV4ID0gMTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJvdGVjdGVkIF9jb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLFxuICAgICkge1xuICAgICAgICBzdXBlcihfaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLm1kV2lkdGggPSB0aGlzLnBhcmVudFNldHRpbmcubWRXaWR0aENvbW1vblNlYXJjaDtcbiAgICAgICAgdGhpcy5zZXR0aW5nLmJhc2VTZXJ2aWNlID0gdGhpcy5wYXJlbnRTZXR0aW5nLmJhc2VTZXJ2aWNlO1xuICAgICAgICB0aGlzLmlzQ3VzdG9tR2VuZXJhdGVTZWFyY2ggPSB0aGlzLnBhcmVudFNldHRpbmcuY29tbW9uU2NoZW1hcy5sZW5ndGggPiAwO1xuICAgICAgICBjb25zdCBjb2x1bW5GaWx0ZXJzID0gdGhpcy5wYXJlbnRTZXR0aW5nLmNvbHMuZmlsdGVyKHAgPT4gcC5hbGxvd0ZpbHRlciAmJiAhcC5maWVsZC5zdGFydHNXaXRoKCdzdHInKSkuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgaWYgKGEub3JkZXIgPCBiLm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGEub3JkZXIgPiBiLm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0aGlzLnBhcmVudFNldHRpbmcudXNlQ29tbW9uRnVsbFRleHRTZWFyY2gpIHtcbiAgICAgICAgICAgIGNvbnN0IGxzdFRleHRTZWFyY2hDb250cm9sID0gY29sdW1uRmlsdGVycy5maWx0ZXIocCA9PiBwLmZ1bGxUZXh0U2VhcmNoKTtcbiAgICAgICAgICAgIHRoaXMubHN0VGV4dENvbnRyb2wgPSBsc3RUZXh0U2VhcmNoQ29udHJvbC5tYXAocCA9PiBwLmZpZWxkKTtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQm94VG9vbHRpcCArPSBgJHsobHN0VGV4dFNlYXJjaENvbnRyb2wubWFwKHggPT4geC5sYWJlbCkpLmpvaW4oJywgJyl9YDtcbiAgICAgICAgICAgIHRoaXMuX2luZGV4ID0gMjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc0N1c3RvbUdlbmVyYXRlU2VhcmNoKSB7XG4gICAgICAgICAgICB0aGlzLmdldEZvcm1TY2hlbWFDdXN0b20oKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5zY2hlbWEgPSB0aGlzLmdlbkZvcm1TY2hlbWEoY29sdW1uRmlsdGVycyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0Rpc2FibGVPcGVuRnVsbCA9ICh0aGlzLnNldHRpbmcuc2NoZW1hLmxlbmd0aCA8PSBNYXRoLnJvdW5kKDEyIC8gKHRoaXMucGFyZW50U2V0dGluZy5tZFdpZHRoQ29tbW9uU2VhcmNoKSkpICYmICF0aGlzLl9jb21tb25TZXJ2aWNlLmlzTW9iaWxlKCk7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuZGVmYXVsdFZhbHVlcykubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVNlYXJjaCgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldEZvcm1TY2hlbWFDdXN0b20oKSB7XG4gICAgICAgIGNvbnN0IHRvdGFsQ29udHJvbFBlclJvdyA9IDEyIC8gdGhpcy5tZFdpZHRoO1xuICAgICAgICB0aGlzLnBhcmVudFNldHRpbmcuY29tbW9uU2NoZW1hcy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgICAgICBjb2x1bW4uc2hvd0xhYmVsID0gZmFsc2U7XG4gICAgICAgICAgICBjb2x1bW4ubWRXaWR0aCA9IHRoaXMubWRXaWR0aDtcbiAgICAgICAgICAgIGNvbHVtblsncGxhY2Vob2xkZXInXSA9IGNvbHVtbi5sYWJlbDtcbiAgICAgICAgICAgIGlmICghKGNvbHVtbiBpbnN0YW5jZW9mIFRleHRDb250cm9sU2NoZW1hKSB8fCBjb2x1bW4gaW5zdGFuY2VvZiBOdW1iZXJSYW5nZUNvbnRyb2xTY2hlbWEgfHwgY29sdW1uIGluc3RhbmNlb2YgRHJvcGRvd25Db250cm9sU2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uLm9uQWZ0ZXJDaGFuZ2VkID0gKGV2dDogRXZlbnREYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU2VhcmNoKG51bGwsIGV2dC5jb250cm9sLmZpZWxkKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNvbHVtbiBpbnN0YW5jZW9mIE51bWJlclJhbmdlQ29udHJvbFNjaGVtYSkge1xuICAgICAgICAgICAgICAgIHRoaXMubHN0TnVtYmVyUmFuZ2VDb250cm9sLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2x1bW4uaGFzT3duUHJvcGVydHkoJ2RlZmF1bHRWYWx1ZScpICYmIChjb2x1bW4gaW5zdGFuY2VvZiBEcm9wZG93bkNvbnRyb2xTY2hlbWEgfHwgY29sdW1uIGluc3RhbmNlb2YgRGF0ZVRpbWVDb250cm9sU2NoZW1hKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdFZhbHVlc1tjb2x1bW4uZmllbGRdID0gY29sdW1uLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2x1bW4uYWRkVG9HcmlkSW5mbykge1xuICAgICAgICAgICAgICAgIHRoaXMubHN0Q29udHJvbEFkZFRvR3JpZEluZm8ucHVzaChjb2x1bW4uZmllbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29sdW1uLmlzTGF6eUxvYWQgPSAhdGhpcy5wYXJlbnRTZXR0aW5nLmRpc2FibGVMYXp5TG9hZENvbW1vblNlYXJjaCAmJiB0aGlzLl9pbmRleCA+IHRvdGFsQ29udHJvbFBlclJvd1xuICAgICAgICAgICAgICAgICYmIGNvbHVtbiBpbnN0YW5jZW9mIERyb3Bkb3duQ29udHJvbFNjaGVtYSAmJiAhIWNvbHVtbi5iYXNlU2VydmljZSAmJiAhKGNvbHVtbi5iYXNlU2VydmljZSBpbnN0YW5jZW9mIE1hc3RlckRhdGFTZXJ2aWNlKTtcbiAgICAgICAgICAgIGlmIChjb2x1bW4uaXNMYXp5TG9hZCkge1xuICAgICAgICAgICAgICAgIHRoaXMubHN0Q29udHJvbExhenlMb2FkLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2luZGV4Kys7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldHRpbmcuc2NoZW1hID0gdGhpcy5hZGRTZWFyY2hCb3godGhpcy5wYXJlbnRTZXR0aW5nLmNvbW1vblNjaGVtYXMuc29ydCgocHJldiwgbmV4dCkgPT4gcHJldi5vcmRlciAtIG5leHQub3JkZXIpKTtcbiAgICB9XG5cblxuICAgIGdlbkZvcm1TY2hlbWEoY29sdW1uczogYW55KSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogYW55ID0gW107XG4gICAgICAgIGNvbnN0IHRvdGFsQ29udHJvbFBlclJvdyA9IDEyIC8gdGhpcy5tZFdpZHRoO1xuICAgICAgICBjb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcbiAgICAgICAgICAgIGlmICghY29sdW1uLmlzSW5UYWJsZSB8fCAhY29sdW1uLmluY2x1ZGVTZWxlY3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxzdENvbnRyb2xOb3RJbi5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpc0Jvb2wgPSBjb2x1bW4uZGF0YVR5cGUgPT0gRGF0YVR5cGUuYm9vbGVhbjtcbiAgICAgICAgICAgIGlmIChjb2x1bW4uY29udHJvbFR5cGUgPT0gQ29udHJvbFR5cGUuZHJvcGRvd24gfHwgaXNCb29sIHx8IGNvbHVtbiBpbnN0YW5jZW9mIERyb3Bkb3duQ29udHJvbFNjaGVtYSkge1xuICAgICAgICAgICAgICAgIHRoaXMubHN0RHJvcGRvd25Db250cm9sLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICBsZXQgZGF0YVNvdXJjZSA9IGNvbHVtbi5kYXRhU291cmNlO1xuICAgICAgICAgICAgICAgIGlmIChpc0Jvb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sc3RCb29sQ29udHJvbC5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UgPSBbeyBpZDogdHJ1ZSwgdGVuOiAnQ8OzJyB9LCB7IGlkOiBmYWxzZSwgdGVuOiAnS2jDtG5nJyB9XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNvbHVtbi5iaW5kaW5nRmlsdGVycyAmJiBjb2x1bW4uYmluZGluZ0ZpbHRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW4uYmluZGluZ0ZpbHRlcnMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFwQ29udHJvbEJpbmRpbmdGaWx0ZXIuc2V0KGl0ZW0uZmllbGQsIGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uLmJhc2VTZXJ2aWNlIHx8IChkYXRhU291cmNlICYmIGRhdGFTb3VyY2UubGVuZ3RoID4gMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNMYXp5TG9hZCA9ICF0aGlzLnBhcmVudFNldHRpbmcuZGlzYWJsZUxhenlMb2FkQ29tbW9uU2VhcmNoICYmIHRoaXMuX2luZGV4ID4gdG90YWxDb250cm9sUGVyUm93XG4gICAgICAgICAgICAgICAgICAgICAgICAmJiAhIWNvbHVtbi5iYXNlU2VydmljZSAmJiAhKGNvbHVtbi5iYXNlU2VydmljZSBpbnN0YW5jZW9mIE1hc3RlckRhdGFTZXJ2aWNlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTGF6eUxvYWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubHN0Q29udHJvbExhenlMb2FkLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXcgRHJvcGRvd25Db250cm9sU2NoZW1hKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmNvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBjb2x1bW4ucGxhY2Vob2xkZXIgPz8gYENo4buNbiAke2NvbHVtbi5sYWJlbH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6ICFjb2x1bW4uc2luZ2xlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZTogZGF0YVNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1kV2lkdGg6IHRoaXMubWRXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTGF6eUxvYWQ6IGlzTGF6eUxvYWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93TGFiZWw6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VkOiAoZXZ0OiBFdmVudERhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29sdW1uLmRhdGFUeXBlID09IERhdGFUeXBlLmJvb2xlYW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LnBhcmVudE1vZGVsW2NvbHVtbi5maWVsZF0gPSBjb2x1bW4uc2luZ2xlID8gZXZ0LnZhbHVlLmlkID8/IGV2dC52YWx1ZSA6IGV2dC52YWx1ZS5tYXAocCA9PiBwLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmluZGluZ0ZpbHRlclZhbCA9IHRoaXMubWFwQ29udHJvbEJpbmRpbmdGaWx0ZXIuZ2V0KGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJpbmRpbmdGaWx0ZXJWYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFldnQudmFsdWUgfHwgZXZ0LnZhbHVlLmxlbmd0aCA8IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2xzW2JpbmRpbmdGaWx0ZXJWYWxdLl9jb21wb25lbnQuZmlsdGVyRnJvbVBhcmVudHMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2xzW2JpbmRpbmdGaWx0ZXJWYWxdLl9jb21wb25lbnQuX2dldERhdGFTb3VyY2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCFjb2x1bW4uaW5jbHVkZVNlbGVjdCB8fCAhY29sdW1uLmlzSW5UYWJsZSkgJiYgIWNvbHVtbi5mb3JjZUxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRkQ29sdW1uOiBhbnkgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGNvbHVtbi5wbGFjZWhvbGRlciA/PyBgQ2jhu41uICR7Y29sdW1uLmxhYmVsfWAsXG4gICAgICAgICAgICAgICAgICAgIHNob3dMYWJlbDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogW3VuZGVmaW5lZCwgdW5kZWZpbmVkXSxcbiAgICAgICAgICAgICAgICAgICAgbWRXaWR0aDogdGhpcy5tZFdpZHRoLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgc3dpdGNoIChjb2x1bW4uZGF0YVR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5kYXRlOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIERhdGFUeXBlLmRhdGV0aW1lOlxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLnNob3dJY29uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5vbkNoYW5nZWQgPSAoZXZ0OiBFdmVudERhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldnQucGFyZW50TW9kZWxbY29sdW1uLmZpZWxkXSA9IGV2dC5zb3VyY2VFdmVudC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNlYXJjaChldnQucGFyZW50TW9kZWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5zaG93VGltZSA9IGNvbHVtbi5kYXRhVHlwZSA9PSBEYXRhVHlwZS5kYXRldGltZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyBEYXRlVGltZVJhbmdlQ29udHJvbFNjaGVtYShhZGRDb2x1bW4pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubHN0RGF0ZXRpbWVDb250cm9sLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICBjYXNlIERhdGFUeXBlLmludDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5pbnRXaXRob3V0TWFzazpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5kZWNpbWFsOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIERhdGFUeXBlLmN1cnJlbmN5OlxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLm1hc2tUeXBlID0gY29sdW1uLmRhdGFUeXBlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLm1heCA9IDk5OTk5OTk5OTk5O1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLm9uQ2hhbmdlZCA9IChldnQ6IEV2ZW50RGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3IE51bWJlclJhbmdlQ29udHJvbFNjaGVtYShhZGRDb2x1bW4pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubHN0TnVtYmVyUmFuZ2VDb250cm9sLnB1c2goYWRkQ29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkU2VhcmNoQm94KHJlc3VsdC5zb3J0KChwcmV2LCBuZXh0KSA9PiBwcmV2Lm9yZGVyIC0gbmV4dC5vcmRlcikpO1xuICAgIH1cblxuICAgIGFkZFNlYXJjaEJveChjb2x1bW5zKSB7XG4gICAgICAgIGlmICghdGhpcy5wYXJlbnRTZXR0aW5nLnVzZUNvbW1vbkZ1bGxUZXh0U2VhcmNoKSB7XG4gICAgICAgICAgICByZXR1cm4gPEZvcm1TY2hlbWFCYXNlW10+Y29sdW1ucztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZWFyY2hCb3ggPSBuZXcgQ3VzdG9tQ29udHJvbFNjaGVtYSh7XG4gICAgICAgICAgICBmaWVsZDogJ2tleXdvcmQnLFxuICAgICAgICAgICAgbGFiZWw6ICdU4burIGtow7NhJyxcbiAgICAgICAgICAgIGZ1bGxMYWJlbDogJ1Thu6sga2jDs2EnLFxuICAgICAgICAgICAgc2hvd0xhYmVsOiBmYWxzZSxcbiAgICAgICAgICAgIG1kV2lkdGg6IHRoaXMubWRXaWR0aCxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gTnVtYmVyKDEyIC8gdGhpcy5tZFdpZHRoKSAtIDE7XG4gICAgICAgIGlmICh0aGlzLl9jb21tb25TZXJ2aWNlLmlzTW9iaWxlKCkpIHtcbiAgICAgICAgICAgIGNvbHVtbnMuc3BsaWNlKDAsIDAsIHNlYXJjaEJveCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY29sdW1ucy5sZW5ndGggPCBpbmRleCkge1xuICAgICAgICAgICAgY29sdW1ucy5wdXNoKHNlYXJjaEJveCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb2x1bW5zLnNwbGljZShpbmRleCwgMCwgc2VhcmNoQm94KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gPEZvcm1TY2hlbWFCYXNlW10+Y29sdW1ucztcbiAgICB9XG5cbiAgICBoYW5kbGVTZWFyY2goZGF0YT86IGFueSwgZmllbGQ/OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZmlsdGVyRnVsbFRleHRTZWFyY2ggPSBbXTtcbiAgICAgICAgaWYgKHRoaXMua2V5d29yZHMgJiYgdGhpcy5sc3RUZXh0Q29udHJvbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBsc3RGaWx0ZXJUZXh0ID0gW107XG4gICAgICAgICAgICB0aGlzLmxzdFRleHRDb250cm9sLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgbHN0RmlsdGVyVGV4dC5wdXNoKHRoaXMubmV3RmlsdGVyKGl0ZW0sIE9wZXJhdG9yLmNvbnRhaW4sIHRoaXMua2V5d29yZHMpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZmlsdGVyRnVsbFRleHRTZWFyY2gucHVzaChuZXcgRmlsdGVyKHsgbG9naWM6ICdvcicsIGZpbHRlcnM6IGxzdEZpbHRlclRleHQgfSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZGF0YSkge1xuICAgICAgICAgICAgZGF0YSA9IHRoaXMubW9kZWwuZGF0YTtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc0FkZERlZmF1bHRWYWx1ZXMgJiYgT2JqZWN0LmtleXModGhpcy5kZWZhdWx0VmFsdWVzKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBkYXRhID0gT2JqZWN0LmFzc2lnbihkYXRhLCB0aGlzLmRlZmF1bHRWYWx1ZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNBZGREZWZhdWx0VmFsdWVzID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGxzdEZpbHRlcnMgPSB0aGlzLl9jcnVkU2VydmljZS5nZXRGaWx0ZXJGcm9tVGVtcGxhdGUodGhpcy50ZW1wbGF0ZUZpbHRlciwgZGF0YSk7XG4gICAgICAgICAgICBjb25zdCBsc3RGaWx0ZXJBZGRDdXN0b20gPSBsc3RGaWx0ZXJzLmZpbHRlcihwID0+IHRoaXMubHN0Q29udHJvbEFkZFRvR3JpZEluZm8uaW5jbHVkZXMocC5maWVsZCkpO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNDdXN0b21HZW5lcmF0ZVNlYXJjaCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJzOiBhbnkgPSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpbHRlckZ1bGxUZXh0U2VhcmNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4ubHN0RmlsdGVyQWRkQ3VzdG9tXSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YUZvcm06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkczogdGhpcy5rZXl3b3Jkc1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBpZiAoZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgcnMuZmllbGRBY3Rpb24gPSBmaWVsZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNsaWNrU2VhcmNoLmVtaXQocnMpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmxzdERyb3Bkb3duQ29udHJvbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmxzdERyb3Bkb3duQ29udHJvbC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGlmICghZGF0YS5oYXNPd25Qcm9wZXJ0eShpdGVtKSB8fCAoIWRhdGFbaXRlbV0gfHwgZGF0YVtpdGVtXS5sZW5ndGggPCAxKSkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlRmllbGQgPSB0aGlzLnBhcmVudFNldHRpbmcuY29scy5maW5kKHAgPT4gcC5maWVsZCA9PT0gaXRlbSk/LnZhbHVlRmllbGQgfHwgJ2lkJztcbiAgICAgICAgICAgICAgICBpZiAoZGF0YVtpdGVtXS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVtpdGVtXSA9IGRhdGFbaXRlbV0ubWFwKHAgPT4gcFt2YWx1ZUZpZWxkXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkYXRhW2l0ZW1dID0gZGF0YVtpdGVtXVt2YWx1ZUZpZWxkXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmxzdEJvb2xDb250cm9sLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMubHN0Qm9vbENvbnRyb2wuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWRhdGEuaGFzT3duUHJvcGVydHkoaXRlbSkgfHwgIUFycmF5LmlzQXJyYXkoZGF0YVtpdGVtXSkpIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IGRhdGFbaXRlbV0uaW5kZXhPZih1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFbaXRlbV1baW5kZXhdID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGxzdEZpbHRlcnMgPSB0aGlzLl9jcnVkU2VydmljZS5nZXRGaWx0ZXJGcm9tVGVtcGxhdGUodGhpcy50ZW1wbGF0ZUZpbHRlciwgZGF0YSk7XG4gICAgICAgIGxzdEZpbHRlcnMgPSBbLi4ubHN0RmlsdGVycywgLi4uZmlsdGVyRnVsbFRleHRTZWFyY2hdO1xuICAgICAgICBjb25zdCByZXN1bHQ6IGFueSA9IHtcbiAgICAgICAgICAgIGZpbHRlcnM6IGxzdEZpbHRlcnMuZmlsdGVyKHAgPT4gIXRoaXMubHN0Q29udHJvbE5vdEluLmluY2x1ZGVzKHAuZmllbGQpKSxcbiAgICAgICAgICAgIGRhdGFGb3JtOiB7XG4gICAgICAgICAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgICAgICAgICBrZXl3b3JkczogdGhpcy5rZXl3b3Jkc1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBpZiAoZmllbGQpIHtcbiAgICAgICAgICAgIHJlc3VsdC5maWVsZEFjdGlvbiA9IGZpZWxkO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25DbGlja1NlYXJjaC5lbWl0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgY2xlYXJGaWx0ZXIoKSB7XG4gICAgICAgIGZvciAoY29uc3QgcCBpbiB0aGlzLmZvcm1Db250cm9scykge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuZm9ybUNvbnRyb2xzW3BdO1xuICAgICAgICAgICAgbGV0IHJlc2V0VmFsdWU6IGFueTtcbiAgICAgICAgICAgIGlmICh0aGlzLmxzdERyb3Bkb3duQ29udHJvbC5pbmNsdWRlcyhpdGVtLmZpZWxkKSAmJiBpdGVtLm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgcmVzZXRWYWx1ZSA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5sc3REYXRldGltZUNvbnRyb2wuaW5jbHVkZXMoaXRlbS5maWVsZCkgfHwgdGhpcy5sc3ROdW1iZXJSYW5nZUNvbnRyb2wuaW5jbHVkZXMoaXRlbS5maWVsZCkpIHtcbiAgICAgICAgICAgICAgICByZXNldFZhbHVlID0gW3VuZGVmaW5lZCwgdW5kZWZpbmVkXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX3NldE1vZGVsVmFsdWUoaXRlbS5maWVsZCwgcmVzZXRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgQXJyYXkuZnJvbShkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dC1jYWxlbmRhcicpKS5mb3JFYWNoKGVsID0+IGVsWyd2YWx1ZSddID0gJycpO1xuICAgICAgICB0aGlzLmtleXdvcmRzID0gbnVsbDtcbiAgICAgICAgdGhpcy5oYW5kbGVTZWFyY2goKTtcbiAgICB9XG5cbiAgICB0b2dnbGVNZW51U2VhcmNoKCkge1xuICAgICAgICB0aGlzLmlzT3BlbkZ1bGwgPSAhdGhpcy5pc09wZW5GdWxsO1xuICAgICAgICBpZiAodGhpcy5sc3RDb250cm9sTGF6eUxvYWQubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnRyaWdnZXJMYXp5TG9hZERyb3Bkb3duKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbkFmdGVyVG9nZ2xlTWVudVNlYXJjaC5lbWl0KHRydWUpO1xuICAgIH1cblxuICAgIGFzeW5jIHRyaWdnZXJMYXp5TG9hZERyb3Bkb3duKCkge1xuICAgICAgICBjb25zdCBwcm9taXNlczogUHJvbWlzZTx2b2lkPltdID0gW107XG4gICAgICAgIHRoaXMubHN0Q29udHJvbExhenlMb2FkLmZvckVhY2goY29udHJvbCA9PiBwcm9taXNlcy5wdXNoKHRoaXMuZm9ybUNvbnRyb2xzW2NvbnRyb2xdLl9jb21wb25lbnQuX2dldERhdGFTb3VyY2UoKSkpO1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgICAgIHRoaXMubHN0Q29udHJvbExhenlMb2FkID0gW107XG4gICAgfVxuXG5cbiAgICBhc3luYyBvbkZvcm1Jbml0aWFsaXplZChmb3JtRXZlbnQ6IEV2ZW50RGF0YSkge1xuICAgICAgICAvLyB0aeG7gW4geOG7rSBsw70gZOG7ryBsaeG7h3UgKHbDrSBk4bulIHThu5VuZyBo4bujcCBkYXRhc291cmNlKSwgdHLGsOG7m2Mga2hpIGfhu41pIGFwaSBnZXQgZGV0YWlsXG5cbiAgICB9XG5cbiAgICBhc3luYyBtb2RpZnlEZXRhaWxEYXRhKGRhdGEpIHtcbiAgICAgICAgLy8geOG7rSBsw70gZOG7ryBsaeG7h3UgbOG6pXkgdOG7qyBnZXQgZGV0YWlsIHbhu4FcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5wYXJlbnRTZXR0aW5nLnVzZUNvbW1vbkZ1bGxUZXh0U2VhcmNoKSB7XG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlYXJjaFRlbXBsYXRlLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdzdHlsZScsICdoZWlnaHQ6MTAwJTttYXJnaW4tYm90dG9tOiAtOXB4OycpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
347
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXNlYXJjaC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2NvbW1vbi1zZWFyY2gtZm9ybS9jb21tb24tc2VhcmNoLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSwwQkFBMEIsRUFBRSxxQkFBcUIsRUFBNkIsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDblAsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQU92RSxNQUFNLE9BQU8seUJBQTBCLFNBQVEsWUFBWTtJQXlCdkQsWUFDYyxTQUFtQixFQUNuQixjQUE2QjtRQUV2QyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFIUCxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBekJsQyxtQkFBYyxHQUFRLEVBQUUsQ0FBQztRQUN6QixxQkFBZ0IsR0FBRyw0QkFBNEIsQ0FBQztRQUMvQyxrQkFBYSxHQUFHLElBQUksWUFBWSxF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QkFBdUIsRUFBRTtZQUM3QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsa0NBQWtDLENBQUMsQ0FBQztTQUNyRztJQUNMLENBQUM7OztZQWxXSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsMjZEQUFrRDtnQkFFbEQsU0FBUyxFQUFFLENBQUMsdUJBQXVCLENBQUM7O2FBQ3ZDOzs7WUFaNkMsUUFBUTtZQUs3QyxhQUFhOzs7bUNBU2pCLFNBQVMsU0FBQyxzQkFBc0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7NkJBQ3RELEtBQUs7K0JBQ0wsS0FBSzs0QkFDTCxNQUFNO3NDQUNOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YUZvcm1CYXNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9iYXNlL2RhdGEtZm9ybS1iYXNlJztcbmltcG9ydCB7IENvbnRyb2xUeXBlLCBDdXN0b21Db250cm9sU2NoZW1hLCBEYXRhVHlwZSwgRGF0ZVRpbWVDb250cm9sU2NoZW1hLCBEYXRlVGltZVJhbmdlQ29udHJvbFNjaGVtYSwgRHJvcGRvd25Db250cm9sU2NoZW1hLCBFdmVudERhdGEsIEZvcm1TY2hlbWFCYXNlLCBOdW1iZXJSYW5nZUNvbnRyb2xTY2hlbWEsIE9wZXJhdG9yLCBUZXh0Q29udHJvbFNjaGVtYSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xuaW1wb3J0IHsgRmlsdGVyIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtaW5mbyc7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29tbW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWFzdGVyRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYXN0ZXItZGF0YS5zZXJ2aWNlJztcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY29tbW9uLXNlYXJjaC1mb3JtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29tbW9uLXNlYXJjaC1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb21tb24tc2VhcmNoLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtDb21wb25lbnRDb250ZXh0U2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIENvbW1vblNlYXJjaEZvcm1Db21wb25lbnQgZXh0ZW5kcyBEYXRhRm9ybUJhc2UgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBWaWV3Q2hpbGQoJ2NvbW1vblNlYXJjaFRlbXBsYXRlJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGNvbW1vblNlYXJjaFRlbXBsYXRlOiBFbGVtZW50UmVmO1xuICAgIEBJbnB1dCgpIHRlbXBsYXRlRmlsdGVyOiBhbnkgPSBbXTtcbiAgICBASW5wdXQoKSBzZWFyY2hCb3hUb29sdGlwID0gJ1TDrG0ga2nhur9tIHRoZW8gY8OhYyB0csaw4budbmc6ICc7XG4gICAgQE91dHB1dCgpIG9uQ2xpY2tTZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgb25BZnRlclRvZ2dsZU1lbnVTZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIG1kV2lkdGggPSAzO1xuICAgIGxzdERyb3Bkb3duQ29udHJvbCA9IFtdO1xuICAgIGxzdERhdGV0aW1lQ29udHJvbCA9IFtdO1xuICAgIGxzdE51bWJlclJhbmdlQ29udHJvbCA9IFtdO1xuICAgIGxzdFRleHRDb250cm9sID0gW107XG4gICAgbHN0Qm9vbENvbnRyb2wgPSBbXTtcbiAgICBsc3RDb250cm9sTm90SW4gPSBbXTtcbiAgICBsc3RDb250cm9sQWRkVG9HcmlkSW5mbyA9IFtdO1xuICAgIGxzdENvbnRyb2xMYXp5TG9hZCA9IFtdO1xuICAgIGRlZmF1bHRWYWx1ZXMgPSB7fTtcbiAgICBpc0FkZERlZmF1bHRWYWx1ZXMgPSBmYWxzZTtcbiAgICBtYXBDb250cm9sQmluZGluZ0ZpbHRlciA9IG5ldyBNYXAoKTtcbiAgICBrZXl3b3JkcyA9ICcnO1xuICAgIGlzT3BlbkZ1bGwgPSBmYWxzZTtcbiAgICBpc0N1c3RvbUdlbmVyYXRlU2VhcmNoID0gZmFsc2U7XG4gICAgaXNEaXNhYmxlT3BlbkZ1bGwgPSBmYWxzZTtcbiAgICBfaW5kZXggPSAxO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcm90ZWN0ZWQgX2NvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKF9pbmplY3Rvcik7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5wYXJlbnRTZXR0aW5nLnVzZUNvbW1vbkZ1bGxUZXh0U2VhcmNoKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudFNldHRpbmcuZGlzYWJsZUxhenlMb2FkQ29tbW9uU2VhcmNoID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1kV2lkdGggPSB0aGlzLnBhcmVudFNldHRpbmcubWRXaWR0aENvbW1vblNlYXJjaDtcbiAgICAgICAgdGhpcy5zZXR0aW5nLmJhc2VTZXJ2aWNlID0gdGhpcy5wYXJlbnRTZXR0aW5nLmJhc2VTZXJ2aWNlO1xuICAgICAgICB0aGlzLmlzQ3VzdG9tR2VuZXJhdGVTZWFyY2ggPSB0aGlzLnBhcmVudFNldHRpbmcuY29tbW9uU2NoZW1hcy5sZW5ndGggPiAwO1xuICAgICAgICBjb25zdCBjb2x1bW5GaWx0ZXJzID0gdGhpcy5wYXJlbnRTZXR0aW5nLmNvbHMuZmlsdGVyKHAgPT4gcC5hbGxvd0ZpbHRlciAmJiAhcC5maWVsZC5zdGFydHNXaXRoKCdzdHInKSkuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgaWYgKGEub3JkZXIgPCBiLm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGEub3JkZXIgPiBiLm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0aGlzLnBhcmVudFNldHRpbmcudXNlQ29tbW9uRnVsbFRleHRTZWFyY2gpIHtcbiAgICAgICAgICAgIGNvbnN0IGxzdFRleHRTZWFyY2hDb250cm9sID0gY29sdW1uRmlsdGVycy5maWx0ZXIocCA9PiBwLmZ1bGxUZXh0U2VhcmNoKTtcbiAgICAgICAgICAgIHRoaXMubHN0VGV4dENvbnRyb2wgPSBsc3RUZXh0U2VhcmNoQ29udHJvbC5tYXAocCA9PiBwLmZpZWxkKTtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQm94VG9vbHRpcCArPSBgJHsobHN0VGV4dFNlYXJjaENvbnRyb2wubWFwKHggPT4geC5sYWJlbCkpLmpvaW4oJywgJyl9YDtcbiAgICAgICAgICAgIHRoaXMuX2luZGV4ID0gMjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc0N1c3RvbUdlbmVyYXRlU2VhcmNoKSB7XG4gICAgICAgICAgICB0aGlzLmdldEZvcm1TY2hlbWFDdXN0b20oKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5zY2hlbWEgPSB0aGlzLmdlbkZvcm1TY2hlbWEoY29sdW1uRmlsdGVycyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0Rpc2FibGVPcGVuRnVsbCA9ICh0aGlzLnNldHRpbmcuc2NoZW1hLmxlbmd0aCA8PSBNYXRoLnJvdW5kKDEyIC8gKHRoaXMucGFyZW50U2V0dGluZy5tZFdpZHRoQ29tbW9uU2VhcmNoKSkpICYmICF0aGlzLl9jb21tb25TZXJ2aWNlLmlzTW9iaWxlKCk7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuZGVmYXVsdFZhbHVlcykubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVNlYXJjaCgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldEZvcm1TY2hlbWFDdXN0b20oKSB7XG4gICAgICAgIGNvbnN0IHRvdGFsQ29udHJvbFBlclJvdyA9IDEyIC8gdGhpcy5tZFdpZHRoO1xuICAgICAgICB0aGlzLnBhcmVudFNldHRpbmcuY29tbW9uU2NoZW1hcy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgICAgICBjb2x1bW4uc2hvd0xhYmVsID0gZmFsc2U7XG4gICAgICAgICAgICBjb2x1bW4ubWRXaWR0aCA9IHRoaXMubWRXaWR0aDtcbiAgICAgICAgICAgIGNvbHVtblsncGxhY2Vob2xkZXInXSA9IGNvbHVtbi5sYWJlbDtcbiAgICAgICAgICAgIGlmICghKGNvbHVtbiBpbnN0YW5jZW9mIFRleHRDb250cm9sU2NoZW1hKSB8fCBjb2x1bW4gaW5zdGFuY2VvZiBOdW1iZXJSYW5nZUNvbnRyb2xTY2hlbWEgfHwgY29sdW1uIGluc3RhbmNlb2YgRHJvcGRvd25Db250cm9sU2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uLm9uQWZ0ZXJDaGFuZ2VkID0gKGV2dDogRXZlbnREYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU2VhcmNoKG51bGwsIGV2dC5jb250cm9sLmZpZWxkKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNvbHVtbiBpbnN0YW5jZW9mIE51bWJlclJhbmdlQ29udHJvbFNjaGVtYSkge1xuICAgICAgICAgICAgICAgIHRoaXMubHN0TnVtYmVyUmFuZ2VDb250cm9sLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2x1bW4uaGFzT3duUHJvcGVydHkoJ2RlZmF1bHRWYWx1ZScpICYmIChjb2x1bW4gaW5zdGFuY2VvZiBEcm9wZG93bkNvbnRyb2xTY2hlbWEgfHwgY29sdW1uIGluc3RhbmNlb2YgRGF0ZVRpbWVDb250cm9sU2NoZW1hKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdFZhbHVlc1tjb2x1bW4uZmllbGRdID0gY29sdW1uLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2x1bW4uYWRkVG9HcmlkSW5mbykge1xuICAgICAgICAgICAgICAgIHRoaXMubHN0Q29udHJvbEFkZFRvR3JpZEluZm8ucHVzaChjb2x1bW4uZmllbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29sdW1uLmlzTGF6eUxvYWQgPSAhdGhpcy5wYXJlbnRTZXR0aW5nLmRpc2FibGVMYXp5TG9hZENvbW1vblNlYXJjaCAmJiB0aGlzLl9pbmRleCA+IHRvdGFsQ29udHJvbFBlclJvd1xuICAgICAgICAgICAgICAgICYmIGNvbHVtbiBpbnN0YW5jZW9mIERyb3Bkb3duQ29udHJvbFNjaGVtYSAmJiAhIWNvbHVtbi5iYXNlU2VydmljZSAmJiAhKGNvbHVtbi5iYXNlU2VydmljZSBpbnN0YW5jZW9mIE1hc3RlckRhdGFTZXJ2aWNlKTtcbiAgICAgICAgICAgIGlmIChjb2x1bW4uaXNMYXp5TG9hZCkge1xuICAgICAgICAgICAgICAgIHRoaXMubHN0Q29udHJvbExhenlMb2FkLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2luZGV4Kys7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldHRpbmcuc2NoZW1hID0gdGhpcy5hZGRTZWFyY2hCb3godGhpcy5wYXJlbnRTZXR0aW5nLmNvbW1vblNjaGVtYXMuc29ydCgocHJldiwgbmV4dCkgPT4gcHJldi5vcmRlciAtIG5leHQub3JkZXIpKTtcbiAgICB9XG5cblxuICAgIGdlbkZvcm1TY2hlbWEoY29sdW1uczogYW55KSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogYW55ID0gW107XG4gICAgICAgIGNvbnN0IHRvdGFsQ29udHJvbFBlclJvdyA9IDEyIC8gdGhpcy5tZFdpZHRoO1xuICAgICAgICBjb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcbiAgICAgICAgICAgIGlmICghY29sdW1uLmlzSW5UYWJsZSB8fCAhY29sdW1uLmluY2x1ZGVTZWxlY3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxzdENvbnRyb2xOb3RJbi5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpc0Jvb2wgPSBjb2x1bW4uZGF0YVR5cGUgPT0gRGF0YVR5cGUuYm9vbGVhbjtcbiAgICAgICAgICAgIGlmIChjb2x1bW4uY29udHJvbFR5cGUgPT0gQ29udHJvbFR5cGUuZHJvcGRvd24gfHwgaXNCb29sIHx8IGNvbHVtbiBpbnN0YW5jZW9mIERyb3Bkb3duQ29udHJvbFNjaGVtYSkge1xuICAgICAgICAgICAgICAgIHRoaXMubHN0RHJvcGRvd25Db250cm9sLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICBsZXQgZGF0YVNvdXJjZSA9IGNvbHVtbi5kYXRhU291cmNlO1xuICAgICAgICAgICAgICAgIGlmIChpc0Jvb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sc3RCb29sQ29udHJvbC5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UgPSBbeyBpZDogdHJ1ZSwgdGVuOiAnQ8OzJyB9LCB7IGlkOiBmYWxzZSwgdGVuOiAnS2jDtG5nJyB9XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNvbHVtbi5iaW5kaW5nRmlsdGVycyAmJiBjb2x1bW4uYmluZGluZ0ZpbHRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW4uYmluZGluZ0ZpbHRlcnMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFwQ29udHJvbEJpbmRpbmdGaWx0ZXIuc2V0KGl0ZW0uZmllbGQsIGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uLmJhc2VTZXJ2aWNlIHx8IChkYXRhU291cmNlICYmIGRhdGFTb3VyY2UubGVuZ3RoID4gMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNMYXp5TG9hZCA9ICF0aGlzLnBhcmVudFNldHRpbmcuZGlzYWJsZUxhenlMb2FkQ29tbW9uU2VhcmNoICYmIHRoaXMuX2luZGV4ID4gdG90YWxDb250cm9sUGVyUm93XG4gICAgICAgICAgICAgICAgICAgICAgICAmJiAhIWNvbHVtbi5iYXNlU2VydmljZSAmJiAhKGNvbHVtbi5iYXNlU2VydmljZSBpbnN0YW5jZW9mIE1hc3RlckRhdGFTZXJ2aWNlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTGF6eUxvYWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubHN0Q29udHJvbExhenlMb2FkLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXcgRHJvcGRvd25Db250cm9sU2NoZW1hKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmNvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBjb2x1bW4ucGxhY2Vob2xkZXIgPz8gYENo4buNbiAke2NvbHVtbi5sYWJlbH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6ICFjb2x1bW4uc2luZ2xlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZTogZGF0YVNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1kV2lkdGg6IHRoaXMubWRXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTGF6eUxvYWQ6IGlzTGF6eUxvYWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93TGFiZWw6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VkOiAoZXZ0OiBFdmVudERhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29sdW1uLmRhdGFUeXBlID09IERhdGFUeXBlLmJvb2xlYW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LnBhcmVudE1vZGVsW2NvbHVtbi5maWVsZF0gPSBjb2x1bW4uc2luZ2xlID8gZXZ0LnZhbHVlLmlkID8/IGV2dC52YWx1ZSA6IGV2dC52YWx1ZS5tYXAocCA9PiBwLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmluZGluZ0ZpbHRlclZhbCA9IHRoaXMubWFwQ29udHJvbEJpbmRpbmdGaWx0ZXIuZ2V0KGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJpbmRpbmdGaWx0ZXJWYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFldnQudmFsdWUgfHwgZXZ0LnZhbHVlLmxlbmd0aCA8IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2xzW2JpbmRpbmdGaWx0ZXJWYWxdLl9jb21wb25lbnQuZmlsdGVyRnJvbVBhcmVudHMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2xzW2JpbmRpbmdGaWx0ZXJWYWxdLl9jb21wb25lbnQuX2dldERhdGFTb3VyY2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCFjb2x1bW4uaW5jbHVkZVNlbGVjdCB8fCAhY29sdW1uLmlzSW5UYWJsZSkgJiYgIWNvbHVtbi5mb3JjZUxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRkQ29sdW1uOiBhbnkgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGNvbHVtbi5wbGFjZWhvbGRlciA/PyBgQ2jhu41uICR7Y29sdW1uLmxhYmVsfWAsXG4gICAgICAgICAgICAgICAgICAgIHNob3dMYWJlbDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogW3VuZGVmaW5lZCwgdW5kZWZpbmVkXSxcbiAgICAgICAgICAgICAgICAgICAgbWRXaWR0aDogdGhpcy5tZFdpZHRoLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgc3dpdGNoIChjb2x1bW4uZGF0YVR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5kYXRlOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIERhdGFUeXBlLmRhdGV0aW1lOlxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLnNob3dJY29uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5vbkNoYW5nZWQgPSAoZXZ0OiBFdmVudERhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldnQucGFyZW50TW9kZWxbY29sdW1uLmZpZWxkXSA9IGV2dC5zb3VyY2VFdmVudC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNlYXJjaChldnQucGFyZW50TW9kZWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5zaG93VGltZSA9IGNvbHVtbi5kYXRhVHlwZSA9PSBEYXRhVHlwZS5kYXRldGltZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyBEYXRlVGltZVJhbmdlQ29udHJvbFNjaGVtYShhZGRDb2x1bW4pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubHN0RGF0ZXRpbWVDb250cm9sLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICBjYXNlIERhdGFUeXBlLnRpbWVzcGFuOlxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLnNob3dJY29uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi50aW1lT25seSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4uZGVmYXVsdFZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLm9uQ2hhbmdlZCA9IChldnQ6IEV2ZW50RGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3IERhdGVUaW1lQ29udHJvbFNjaGVtYShhZGRDb2x1bW4pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5pbnQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuaW50V2l0aG91dE1hc2s6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuZGVjaW1hbDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5jdXJyZW5jeTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5tYXNrVHlwZSA9IGNvbHVtbi5kYXRhVHlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5tYXggPSA5OTk5OTk5OTk5OTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5vbkNoYW5nZWQgPSAoZXZ0OiBFdmVudERhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyBOdW1iZXJSYW5nZUNvbnRyb2xTY2hlbWEoYWRkQ29sdW1uKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxzdE51bWJlclJhbmdlQ29udHJvbC5wdXNoKGFkZENvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbmRleCsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZFNlYXJjaEJveChyZXN1bHQuc29ydCgocHJldiwgbmV4dCkgPT4gcHJldi5vcmRlciAtIG5leHQub3JkZXIpKTtcbiAgICB9XG5cbiAgICBhZGRTZWFyY2hCb3goY29sdW1ucykge1xuICAgICAgICBpZiAoIXRoaXMucGFyZW50U2V0dGluZy51c2VDb21tb25GdWxsVGV4dFNlYXJjaCkge1xuICAgICAgICAgICAgcmV0dXJuIDxGb3JtU2NoZW1hQmFzZVtdPmNvbHVtbnM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2VhcmNoQm94ID0gbmV3IEN1c3RvbUNvbnRyb2xTY2hlbWEoe1xuICAgICAgICAgICAgZmllbGQ6ICdrZXl3b3JkJyxcbiAgICAgICAgICAgIGxhYmVsOiAnVOG7qyBraMOzYScsXG4gICAgICAgICAgICBmdWxsTGFiZWw6ICdU4burIGtow7NhJyxcbiAgICAgICAgICAgIHNob3dMYWJlbDogZmFsc2UsXG4gICAgICAgICAgICBtZFdpZHRoOiB0aGlzLm1kV2lkdGgsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBpbmRleCA9IE51bWJlcigxMiAvIHRoaXMubWRXaWR0aCkgLSAxO1xuICAgICAgICBpZiAodGhpcy5fY29tbW9uU2VydmljZS5pc01vYmlsZSgpKSB7XG4gICAgICAgICAgICBjb2x1bW5zLnNwbGljZSgwLCAwLCBzZWFyY2hCb3gpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNvbHVtbnMubGVuZ3RoIDwgaW5kZXgpIHtcbiAgICAgICAgICAgIGNvbHVtbnMucHVzaChzZWFyY2hCb3gpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29sdW1ucy5zcGxpY2UoaW5kZXgsIDAsIHNlYXJjaEJveCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDxGb3JtU2NoZW1hQmFzZVtdPmNvbHVtbnM7XG4gICAgfVxuXG4gICAgaGFuZGxlU2VhcmNoKGRhdGE/OiBhbnksIGZpZWxkPzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGZpbHRlckZ1bGxUZXh0U2VhcmNoID0gW107XG4gICAgICAgIGlmICh0aGlzLmtleXdvcmRzICYmIHRoaXMubHN0VGV4dENvbnRyb2wubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgbHN0RmlsdGVyVGV4dCA9IFtdO1xuICAgICAgICAgICAgdGhpcy5sc3RUZXh0Q29udHJvbC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGxzdEZpbHRlclRleHQucHVzaCh0aGlzLm5ld0ZpbHRlcihpdGVtLCBPcGVyYXRvci5jb250YWluLCB0aGlzLmtleXdvcmRzKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZpbHRlckZ1bGxUZXh0U2VhcmNoLnB1c2gobmV3IEZpbHRlcih7IGxvZ2ljOiAnb3InLCBmaWx0ZXJzOiBsc3RGaWx0ZXJUZXh0IH0pKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgICAgIGRhdGEgPSB0aGlzLm1vZGVsLmRhdGE7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNBZGREZWZhdWx0VmFsdWVzICYmIE9iamVjdC5rZXlzKHRoaXMuZGVmYXVsdFZhbHVlcykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZGF0YSA9IE9iamVjdC5hc3NpZ24oZGF0YSwgdGhpcy5kZWZhdWx0VmFsdWVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzQWRkRGVmYXVsdFZhbHVlcyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBsc3RGaWx0ZXJzID0gdGhpcy5fY3J1ZFNlcnZpY2UuZ2V0RmlsdGVyRnJvbVRlbXBsYXRlKHRoaXMudGVtcGxhdGVGaWx0ZXIsIGRhdGEpO1xuICAgICAgICAgICAgY29uc3QgbHN0RmlsdGVyQWRkQ3VzdG9tID0gbHN0RmlsdGVycy5maWx0ZXIocCA9PiB0aGlzLmxzdENvbnRyb2xBZGRUb0dyaWRJbmZvLmluY2x1ZGVzKHAuZmllbGQpKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzQ3VzdG9tR2VuZXJhdGVTZWFyY2gpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByczogYW55ID0ge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5maWx0ZXJGdWxsVGV4dFNlYXJjaCxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmxzdEZpbHRlckFkZEN1c3RvbV0sXG4gICAgICAgICAgICAgICAgICAgIGRhdGFGb3JtOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZHM6IHRoaXMua2V5d29yZHNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJzLmZpZWxkQWN0aW9uID0gZmllbGQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMub25DbGlja1NlYXJjaC5lbWl0KHJzKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5sc3REcm9wZG93bkNvbnRyb2wubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5sc3REcm9wZG93bkNvbnRyb2wuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWRhdGEuaGFzT3duUHJvcGVydHkoaXRlbSkgfHwgKCFkYXRhW2l0ZW1dIHx8IGRhdGFbaXRlbV0ubGVuZ3RoIDwgMSkpIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZUZpZWxkID0gdGhpcy5wYXJlbnRTZXR0aW5nLmNvbHMuZmluZChwID0+IHAuZmllbGQgPT09IGl0ZW0pPy52YWx1ZUZpZWxkIHx8ICdpZCc7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGFbaXRlbV0ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFbaXRlbV0gPSBkYXRhW2l0ZW1dLm1hcChwID0+IHBbdmFsdWVGaWVsZF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVtpdGVtXSA9IGRhdGFbaXRlbV1bdmFsdWVGaWVsZF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5sc3RCb29sQ29udHJvbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmxzdEJvb2xDb250cm9sLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFkYXRhLmhhc093blByb3BlcnR5KGl0ZW0pIHx8ICFBcnJheS5pc0FycmF5KGRhdGFbaXRlbV0pKSByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBkYXRhW2l0ZW1dLmluZGV4T2YodW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhW2l0ZW1dW2luZGV4XSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGxldCBsc3RGaWx0ZXJzID0gdGhpcy5fY3J1ZFNlcnZpY2UuZ2V0RmlsdGVyRnJvbVRlbXBsYXRlKHRoaXMudGVtcGxhdGVGaWx0ZXIsIGRhdGEpO1xuICAgICAgICBsc3RGaWx0ZXJzID0gWy4uLmxzdEZpbHRlcnMsIC4uLmZpbHRlckZ1bGxUZXh0U2VhcmNoXTtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBhbnkgPSB7XG4gICAgICAgICAgICBmaWx0ZXJzOiBsc3RGaWx0ZXJzLmZpbHRlcihwID0+ICF0aGlzLmxzdENvbnRyb2xOb3RJbi5pbmNsdWRlcyhwLmZpZWxkKSksXG4gICAgICAgICAgICBkYXRhRm9ybToge1xuICAgICAgICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgICAgICAga2V5d29yZHM6IHRoaXMua2V5d29yZHNcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgICByZXN1bHQuZmllbGRBY3Rpb24gPSBmaWVsZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uQ2xpY2tTZWFyY2guZW1pdChyZXN1bHQpO1xuICAgIH1cblxuICAgIGNsZWFyRmlsdGVyKCkge1xuICAgICAgICBmb3IgKGNvbnN0IHAgaW4gdGhpcy5mb3JtQ29udHJvbHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmZvcm1Db250cm9sc1twXTtcbiAgICAgICAgICAgIGxldCByZXNldFZhbHVlOiBhbnk7XG4gICAgICAgICAgICBpZiAodGhpcy5sc3REcm9wZG93bkNvbnRyb2wuaW5jbHVkZXMoaXRlbS5maWVsZCkgJiYgaXRlbS5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIHJlc2V0VmFsdWUgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubHN0RGF0ZXRpbWVDb250cm9sLmluY2x1ZGVzKGl0ZW0uZmllbGQpIHx8IHRoaXMubHN0TnVtYmVyUmFuZ2VDb250cm9sLmluY2x1ZGVzKGl0ZW0uZmllbGQpKSB7XG4gICAgICAgICAgICAgICAgcmVzZXRWYWx1ZSA9IFt1bmRlZmluZWQsIHVuZGVmaW5lZF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9zZXRNb2RlbFZhbHVlKGl0ZW0uZmllbGQsIHJlc2V0VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIEFycmF5LmZyb20oZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQtY2FsZW5kYXInKSkuZm9yRWFjaChlbCA9PiBlbFsndmFsdWUnXSA9ICcnKTtcbiAgICAgICAgdGhpcy5rZXl3b3JkcyA9IG51bGw7XG4gICAgICAgIHRoaXMuaGFuZGxlU2VhcmNoKCk7XG4gICAgfVxuXG4gICAgdG9nZ2xlTWVudVNlYXJjaCgpIHtcbiAgICAgICAgdGhpcy5pc09wZW5GdWxsID0gIXRoaXMuaXNPcGVuRnVsbDtcbiAgICAgICAgaWYgKHRoaXMubHN0Q29udHJvbExhenlMb2FkLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy50cmlnZ2VyTGF6eUxvYWREcm9wZG93bigpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25BZnRlclRvZ2dsZU1lbnVTZWFyY2guZW1pdCh0cnVlKTtcbiAgICB9XG5cbiAgICBhc3luYyB0cmlnZ2VyTGF6eUxvYWREcm9wZG93bigpIHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXM6IFByb21pc2U8dm9pZD5bXSA9IFtdO1xuICAgICAgICB0aGlzLmxzdENvbnRyb2xMYXp5TG9hZC5mb3JFYWNoKGNvbnRyb2wgPT4gcHJvbWlzZXMucHVzaCh0aGlzLmZvcm1Db250cm9sc1tjb250cm9sXS5fY29tcG9uZW50Ll9nZXREYXRhU291cmNlKCkpKTtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgICAgICB0aGlzLmxzdENvbnRyb2xMYXp5TG9hZCA9IFtdO1xuICAgIH1cblxuXG4gICAgYXN5bmMgb25Gb3JtSW5pdGlhbGl6ZWQoZm9ybUV2ZW50OiBFdmVudERhdGEpIHtcbiAgICAgICAgLy8gdGnhu4FuIHjhu60gbMO9IGThu68gbGnhu4d1ICh2w60gZOG7pSB04buVbmcgaOG7o3AgZGF0YXNvdXJjZSksIHRyxrDhu5tjIGtoaSBn4buNaSBhcGkgZ2V0IGRldGFpbFxuXG4gICAgfVxuXG4gICAgYXN5bmMgbW9kaWZ5RGV0YWlsRGF0YShkYXRhKSB7XG4gICAgICAgIC8vIHjhu60gbMO9IGThu68gbGnhu4d1IGzhuqV5IHThu6sgZ2V0IGRldGFpbCB24buBXG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAoIXRoaXMucGFyZW50U2V0dGluZy51c2VDb21tb25GdWxsVGV4dFNlYXJjaCkge1xuICAgICAgICAgICAgdGhpcy5jb21tb25TZWFyY2hUZW1wbGF0ZS5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnaGVpZ2h0OjEwMCU7bWFyZ2luLWJvdHRvbTogLTlweDsnKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|